From e85bacff7b676a7789bea6501e694cac299b21be Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Viel Date: Thu, 26 Dec 2013 19:44:23 +0100 Subject: [PATCH 001/189] Avoid obtaining several identical dimensions between two LSH sub-vectors by choosing orthogonal sub-vectors. --- modules/flann/include/opencv2/flann/lsh_table.h | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/modules/flann/include/opencv2/flann/lsh_table.h b/modules/flann/include/opencv2/flann/lsh_table.h index b0f3223851..6b8d614f23 100644 --- a/modules/flann/include/opencv2/flann/lsh_table.h +++ b/modules/flann/include/opencv2/flann/lsh_table.h @@ -348,13 +348,21 @@ inline LshTable::LshTable(unsigned int feature_size, unsigned int mask_ = std::vector((size_t)ceil((float)(feature_size * sizeof(char)) / (float)sizeof(size_t)), 0); // A bit brutal but fast to code - std::vector indices(feature_size * CHAR_BIT); - for (size_t i = 0; i < feature_size * CHAR_BIT; ++i) indices[i] = i; - std::random_shuffle(indices.begin(), indices.end()); + static std::vector indices(feature_size * CHAR_BIT); + + //Ensure the Nth bit will be selected only once among the different LshTables + //to avoid having two different tables with signatures sharing many dimensions/many bits + if( (indices.size() == feature_size * CHAR_BIT) || (indices.size() < key_size_) ) + { + indices.resize( feature_size * CHAR_BIT ); + for (size_t i = 0; i < feature_size * CHAR_BIT; ++i) indices[i] = i; + std::random_shuffle(indices.begin(), indices.end()); + } // Generate a random set of order of subsignature_size_ bits for (unsigned int i = 0; i < key_size_; ++i) { - size_t index = indices[i]; + size_t index = indices[0]; + indices.erase( indices.begin() ); // Set that bit in the mask size_t divisor = CHAR_BIT * sizeof(size_t); From 8e93c19de311a76704028b0195abfe04cfad900d Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Viel Date: Thu, 26 Dec 2013 23:04:54 +0100 Subject: [PATCH 002/189] Fix a heap issue with static on Windows --- .../flann/include/opencv2/flann/lsh_table.h | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/modules/flann/include/opencv2/flann/lsh_table.h b/modules/flann/include/opencv2/flann/lsh_table.h index 6b8d614f23..18fb139c91 100644 --- a/modules/flann/include/opencv2/flann/lsh_table.h +++ b/modules/flann/include/opencv2/flann/lsh_table.h @@ -348,21 +348,27 @@ inline LshTable::LshTable(unsigned int feature_size, unsigned int mask_ = std::vector((size_t)ceil((float)(feature_size * sizeof(char)) / (float)sizeof(size_t)), 0); // A bit brutal but fast to code - static std::vector indices(feature_size * CHAR_BIT); + static std::vector* indices = NULL; //Ensure the Nth bit will be selected only once among the different LshTables //to avoid having two different tables with signatures sharing many dimensions/many bits - if( (indices.size() == feature_size * CHAR_BIT) || (indices.size() < key_size_) ) + if( indices == NULL ) { - indices.resize( feature_size * CHAR_BIT ); - for (size_t i = 0; i < feature_size * CHAR_BIT; ++i) indices[i] = i; - std::random_shuffle(indices.begin(), indices.end()); + indices = new std::vector( feature_size * CHAR_BIT ); + } + else if( indices->size() < key_size_ ) + { + indices->resize( feature_size * CHAR_BIT ); + for (size_t i = 0; i < feature_size * CHAR_BIT; ++i) { + (*indices)[i] = i; + } + std::random_shuffle(indices->begin(), indices->end()); } // Generate a random set of order of subsignature_size_ bits for (unsigned int i = 0; i < key_size_; ++i) { - size_t index = indices[0]; - indices.erase( indices.begin() ); + size_t index = (*indices)[0]; + indices->erase( indices->begin() ); // Set that bit in the mask size_t divisor = CHAR_BIT * sizeof(size_t); From 9c7e0bfd33cb65a57b06d1bf9a81e663fda01d22 Mon Sep 17 00:00:00 2001 From: Ilya Krylov Date: Fri, 25 Apr 2014 14:49:36 +0400 Subject: [PATCH 003/189] Added fisheye camera model --- .../include/opencv2/calib3d/calib3d.hpp | 127 ++ modules/calib3d/src/fisheye.cpp | 1217 +++++++++++++++++ modules/calib3d/test/test_fisheye.cpp | 423 ++++++ 3 files changed, 1767 insertions(+) create mode 100644 modules/calib3d/src/fisheye.cpp create mode 100644 modules/calib3d/test/test_fisheye.cpp diff --git a/modules/calib3d/include/opencv2/calib3d/calib3d.hpp b/modules/calib3d/include/opencv2/calib3d/calib3d.hpp index f213a114f4..2675ad402a 100644 --- a/modules/calib3d/include/opencv2/calib3d/calib3d.hpp +++ b/modules/calib3d/include/opencv2/calib3d/calib3d.hpp @@ -45,6 +45,7 @@ #include "opencv2/core/core.hpp" #include "opencv2/features2d/features2d.hpp" +#include "opencv2/core/affine.hpp" #ifdef __cplusplus extern "C" { @@ -744,6 +745,132 @@ CV_EXPORTS_W int estimateAffine3D(InputArray src, InputArray dst, OutputArray out, OutputArray inliers, double ransacThreshold=3, double confidence=0.99); + +class Fisheye +{ +public: + + //Definitions: + // Let P be a point in 3D of coordinates X in the world reference frame (stored in the matrix X) + // The coordinate vector of P in the camera reference frame is: Xc = R*X + T + // where R is the rotation matrix corresponding to the rotation vector om: R = rodrigues(om); + // call x, y and z the 3 coordinates of Xc: x = Xc(1); y = Xc(2); z = Xc(3); + // The pinehole projection coordinates of P is [a;b] where a=x/z and b=y/z. + // call r^2 = a^2 + b^2, + // call theta = atan(r), + // + // Fisheye distortion -> theta_d = theta * (1 + k(1)*theta^2 + k(2)*theta^4 + k(3)*theta^6 + k(4)*theta^8) + // + // The distorted point coordinates are: xd = [xx;yy] where: + // + // xx = (theta_d / r) * x + // yy = (theta_d / r) * y + // + // Finally, convertion into pixel coordinates: The final pixel coordinates vector xp=[xxp;yyp] where: + // + // xxp = f(1)*(xx + alpha*yy) + c(1) + // yyp = f(2)*yy + c(2) + + enum{ + CALIB_USE_INTRINSIC_GUESS = 1, + CALIB_RECOMPUTE_EXTRINSIC = 2, + CALIB_CHECK_COND = 4, + CALIB_FIX_SKEW = 8, + CALIB_FIX_K1 = 16, + CALIB_FIX_K2 = 32, + CALIB_FIX_K3 = 64, + CALIB_FIX_K4 = 128 + }; + + //! projects 3D points using fisheye model + static void projectPoints(InputArray objectPoints, OutputArray imagePoints, const Affine3d& affine, + InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()); + + //! projects points using fisheye model + static void projectPoints(InputArray objectPoints, OutputArray imagePoints, InputArray rvec, InputArray tvec, + InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()); + + //! distorts 2D points using fisheye model + static void distortPoints(InputArray undistorted, OutputArray distorted, InputArray K, InputArray D, double alpha = 0); + + //! undistorts 2D points using fisheye model + static void undistortPoints(InputArray distorted, OutputArray undistorted, + InputArray K, InputArray D, InputArray R = noArray(), InputArray P = noArray()); + + //! computing undistortion and rectification maps for image transform by cv::remap() + //! If D is empty zero distortion is used, if R or P is empty identity matrixes are used + static void initUndistortRectifyMap(InputArray K, InputArray D, InputArray R, InputArray P, + const cv::Size& size, int m1type, OutputArray map1, OutputArray map2); + + //! undistorts image, optinally chanes resolution and camera matrix. If Knew zero identity matrix is used + static void undistortImage(InputArray distorted, OutputArray undistorted, + InputArray K, InputArray D, InputArray Knew = cv::noArray(), const Size& new_size = Size()); + + //! estimates new camera matrix for undistortion or rectification + static void estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R, + OutputArray P, double balance = 0.0, const Size& new_size = Size(), double fov_scale = 1.0); + + //! stereo rectification for fisheye camera model + static void stereoRectify( InputArray K1, InputArray D1, InputArray K2, InputArray D2, const cv::Size& imageSize, + InputArray rotaion, InputArray tvec, OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, + int flags = cv::CALIB_ZERO_DISPARITY, double alpha = -1, const Size& newImageSize = Size(), Rect* roi1 = 0, Rect* roi2 = 0 ); + + //! performs camera calibaration + static double calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size, + InputOutputArray K, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags = 0, + TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)); + + //! stereo rectification estimation + static void stereoRectify(InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size &imageSize, InputArray R, InputArray tvec, + OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, int flags, const Size &newImageSize = Size(), + double balance = 0.0, double fov_scale = 1.0); +}; + + + +namespace internal { + +struct IntrinsicParams +{ + Vec2d f; + Vec2d c; + Vec4d k; + double alpha; + std::vector isEstimate; + + IntrinsicParams(); + IntrinsicParams(Vec2d f, Vec2d c, Vec4d k, double alpha = 0); + IntrinsicParams operator+(const Mat& a); + IntrinsicParams& operator =(const Mat& a); + void Init(const cv::Vec2d& f, const cv::Vec2d& c, const cv::Vec4d& k = Vec4d(0,0,0,0), const double& alpha = 0); +}; + +void projectPoints(cv::InputArray objectPoints, cv::OutputArray imagePoints, + cv::InputArray _rvec,cv::InputArray _tvec, + const IntrinsicParams& param, cv::OutputArray jacobian); + +void ComputeExtrinsicRefine(const Mat& imagePoints, const Mat& objectPoints, Mat& rvec, + Mat& tvec, Mat& J, const int MaxIter, + const IntrinsicParams& param, const double thresh_cond); +Mat ComputeHomography(Mat m, Mat M); + +Mat NormalizePixels(const Mat& imagePoints, const IntrinsicParams& param); + +void InitExtrinsics(const Mat& _imagePoints, const Mat& _objectPoints, const IntrinsicParams& param, Mat& omckk, Mat& Tckk); + +void CalibrateExtrinsics(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, + const IntrinsicParams& param, const int check_cond, + const double thresh_cond, InputOutputArray omc, InputOutputArray Tc); + +void ComputeJacobians(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, + const IntrinsicParams& param, InputArray omc, InputArray Tc, + const int& check_cond, const double& thresh_cond, Mat& JJ2_inv, Mat& ex3); + +void EstimateUncertainties(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, + const IntrinsicParams& params, InputArray omc, InputArray Tc, + IntrinsicParams& errors, Vec2d& std_err, double thresh_cond, int check_cond, double& rms); + +} } #endif diff --git a/modules/calib3d/src/fisheye.cpp b/modules/calib3d/src/fisheye.cpp new file mode 100644 index 0000000000..0dcc5e70fd --- /dev/null +++ b/modules/calib3d/src/fisheye.cpp @@ -0,0 +1,1217 @@ +#include "opencv2/opencv.hpp" +#include "opencv2/core/affine.hpp" +#include "opencv2/core/affine.hpp" + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// cv::Fisheye::projectPoints + +namespace cv { namespace +{ + struct JacobianRow + { + Vec2d df, dc; + Vec4d dk; + Vec3d dom, dT; + double dalpha; + }; +}} + +void cv::Fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints, const Affine3d& affine, + InputArray K, InputArray D, double alpha, OutputArray jacobian) +{ + projectPoints(objectPoints, imagePoints, affine.rvec(), affine.translation(), K, D, alpha, jacobian); +} + +void cv::Fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints, InputArray _rvec, + InputArray _tvec, InputArray _K, InputArray _D, double alpha, OutputArray jacobian) +{ + // will support only 3-channel data now for points + CV_Assert(objectPoints.type() == CV_32FC3 || objectPoints.type() == CV_64FC3); + imagePoints.create(objectPoints.size(), CV_MAKETYPE(objectPoints.depth(), 2)); + size_t n = objectPoints.total(); + + CV_Assert(_rvec.total() * _rvec.channels() == 3 && (_rvec.depth() == CV_32F || _rvec.depth() == CV_64F)); + CV_Assert(_tvec.total() * _tvec.channels() == 3 && (_tvec.depth() == CV_32F || _tvec.depth() == CV_64F)); + CV_Assert(_tvec.getMat().isContinuous() && _rvec.getMat().isContinuous()); + + Vec3d om = _rvec.depth() == CV_32F ? (Vec3d)*_rvec.getMat().ptr() : *_rvec.getMat().ptr(); + Vec3d T = _tvec.depth() == CV_32F ? (Vec3d)*_tvec.getMat().ptr() : *_tvec.getMat().ptr(); + + CV_Assert(_K.size() == Size(3,3) && (_K.type() == CV_32F || _K.type() == CV_64F) && _D.type() == _K.type() && _D.total() == 4); + + cv::Vec2d f, c; + if (_K.depth() == CV_32F) + { + Matx33f K = _K.getMat(); + f = Vec2f(K(0, 0), K(1, 1)); + c = Vec2f(K(0, 2), K(1, 2)); + } + else + { + Matx33d K = _K.getMat(); + f = Vec2d(K(0, 0), K(1, 1)); + c = Vec2d(K(0, 2), K(1, 2)); + } + + Vec4d k = _D.depth() == CV_32F ? (Vec4d)*_D.getMat().ptr(): *_D.getMat().ptr(); + + JacobianRow *Jn = 0; + if (jacobian.needed()) + { + int nvars = 2 + 2 + 1 + 4 + 3 + 3; // f, c, alpha, k, om, T, + jacobian.create(2*(int)n, nvars, CV_64F); + Jn = jacobian.getMat().ptr(0); + } + + Matx33d R; + Matx dRdom; + Rodrigues(om, R, dRdom); + Affine3d aff(om, T); + + const Vec3f* Xf = objectPoints.getMat().ptr(); + const Vec3d* Xd = objectPoints.getMat().ptr(); + Vec2f *xpf = imagePoints.getMat().ptr(); + Vec2d *xpd = imagePoints.getMat().ptr(); + + for(size_t i = 0; i < n; ++i) + { + Vec3d Xi = objectPoints.depth() == CV_32F ? (Vec3d)Xf[i] : Xd[i]; + Vec3d Y = aff*Xi; + + Vec2d x(Y[0]/Y[2], Y[1]/Y[2]); + + double r2 = x.dot(x); + double r = std::sqrt(r2); + + // Angle of the incoming ray: + double theta = atan(r); + + double theta2 = theta*theta, theta3 = theta2*theta, theta4 = theta2*theta2, theta5 = theta4*theta, + theta6 = theta3*theta3, theta7 = theta6*theta, theta8 = theta4*theta4, theta9 = theta8*theta; + + double theta_d = theta + k[0]*theta3 + k[1]*theta5 + k[2]*theta7 + k[3]*theta9; + + double inv_r = r > 1e-8 ? 1.0/r : 1; + double cdist = r > 1e-8 ? theta_d * inv_r : 1; + + Vec2d xd1 = x * cdist; + Vec2d xd3(xd1[0] + alpha*xd1[1], xd1[1]); + Vec2d final_point(xd3[0] * f[0] + c[0], xd3[1] * f[1] + c[1]); + + if (objectPoints.depth() == CV_32F) + xpf[i] = final_point; + else + xpd[i] = final_point; + + if (jacobian.needed()) + { + //Vec3d Xi = pdepth == CV_32F ? (Vec3d)Xf[i] : Xd[i]; + //Vec3d Y = aff*Xi; + double dYdR[] = { Xi[0], Xi[1], Xi[2], 0, 0, 0, 0, 0, 0, + 0, 0, 0, Xi[0], Xi[1], Xi[2], 0, 0, 0, + 0, 0, 0, 0, 0, 0, Xi[0], Xi[1], Xi[2] }; + + Matx33d dYdom_data = Matx(dYdR) * dRdom.t(); + const Vec3d *dYdom = (Vec3d*)dYdom_data.val; + + Matx33d dYdT_data = Matx33d::eye(); + const Vec3d *dYdT = (Vec3d*)dYdT_data.val; + + //Vec2d x(Y[0]/Y[2], Y[1]/Y[2]); + Vec3d dxdom[2]; + dxdom[0] = (1.0/Y[2]) * dYdom[0] - x[0]/Y[2] * dYdom[2]; + dxdom[1] = (1.0/Y[2]) * dYdom[1] - x[1]/Y[2] * dYdom[2]; + + Vec3d dxdT[2]; + dxdT[0] = (1.0/Y[2]) * dYdT[0] - x[0]/Y[2] * dYdT[2]; + dxdT[1] = (1.0/Y[2]) * dYdT[1] - x[1]/Y[2] * dYdT[2]; + + //double r2 = x.dot(x); + Vec3d dr2dom = 2 * x[0] * dxdom[0] + 2 * x[1] * dxdom[1]; + Vec3d dr2dT = 2 * x[0] * dxdT[0] + 2 * x[1] * dxdT[1]; + + //double r = std::sqrt(r2); + double drdr2 = r > 1e-8 ? 1.0/(2*r) : 1; + Vec3d drdom = drdr2 * dr2dom; + Vec3d drdT = drdr2 * dr2dT; + + // Angle of the incoming ray: + //double theta = atan(r); + double dthetadr = 1.0/(1+r2); + Vec3d dthetadom = dthetadr * drdom; + Vec3d dthetadT = dthetadr * drdT; + + //double theta_d = theta + k[0]*theta3 + k[1]*theta5 + k[2]*theta7 + k[3]*theta9; + double dtheta_ddtheta = 1 + 3*k[0]*theta2 + 5*k[1]*theta4 + 7*k[2]*theta6 + 9*k[3]*theta8; + Vec3d dtheta_ddom = dtheta_ddtheta * dthetadom; + Vec3d dtheta_ddT = dtheta_ddtheta * dthetadT; + Vec4d dtheta_ddk = Vec4d(theta3, theta5, theta7, theta9); + + //double inv_r = r > 1e-8 ? 1.0/r : 1; + //double cdist = r > 1e-8 ? theta_d / r : 1; + Vec3d dcdistdom = inv_r * (dtheta_ddom - cdist*drdom); + Vec3d dcdistdT = inv_r * (dtheta_ddT - cdist*drdT); + Vec4d dcdistdk = inv_r * dtheta_ddk; + + //Vec2d xd1 = x * cdist; + Vec4d dxd1dk[2]; + Vec3d dxd1dom[2], dxd1dT[2]; + dxd1dom[0] = x[0] * dcdistdom + cdist * dxdom[0]; + dxd1dom[1] = x[1] * dcdistdom + cdist * dxdom[1]; + dxd1dT[0] = x[0] * dcdistdT + cdist * dxdT[0]; + dxd1dT[1] = x[1] * dcdistdT + cdist * dxdT[1]; + dxd1dk[0] = x[0] * dcdistdk; + dxd1dk[1] = x[1] * dcdistdk; + + //Vec2d xd3(xd1[0] + alpha*xd1[1], xd1[1]); + Vec4d dxd3dk[2]; + Vec3d dxd3dom[2], dxd3dT[2]; + dxd3dom[0] = dxd1dom[0] + alpha * dxd1dom[1]; + dxd3dom[1] = dxd1dom[1]; + dxd3dT[0] = dxd1dT[0] + alpha * dxd1dT[1]; + dxd3dT[1] = dxd1dT[1]; + dxd3dk[0] = dxd1dk[0] + alpha * dxd1dk[1]; + dxd3dk[1] = dxd1dk[1]; + + Vec2d dxd3dalpha(xd1[1], 0); + + //final jacobian + Jn[0].dom = f[0] * dxd3dom[0]; + Jn[1].dom = f[1] * dxd3dom[1]; + + Jn[0].dT = f[0] * dxd3dT[0]; + Jn[1].dT = f[1] * dxd3dT[1]; + + Jn[0].dk = f[0] * dxd3dk[0]; + Jn[1].dk = f[1] * dxd3dk[1]; + + Jn[0].dalpha = f[0] * dxd3dalpha[0]; + Jn[1].dalpha = 0; //f[1] * dxd3dalpha[1]; + + Jn[0].df = Vec2d(xd3[0], 0); + Jn[1].df = Vec2d(0, xd3[1]); + + Jn[0].dc = Vec2d(1, 0); + Jn[1].dc = Vec2d(0, 1); + + //step to jacobian rows for next point + Jn += 2; + } + } +} + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// cv::Fisheye::distortPoints + +void cv::Fisheye::distortPoints(InputArray undistorted, OutputArray distorted, InputArray K, InputArray D, double alpha) +{ + // will support only 2-channel data now for points + CV_Assert(undistorted.type() == CV_32FC2 || undistorted.type() == CV_64FC2); + distorted.create(undistorted.size(), undistorted.type()); + size_t n = undistorted.total(); + + CV_Assert(K.size() == Size(3,3) && (K.type() == CV_32F || K.type() == CV_64F) && D.total() == 4); + + cv::Vec2d f, c; + if (K.depth() == CV_32F) + { + Matx33f camMat = K.getMat(); + f = Vec2f(camMat(0, 0), camMat(1, 1)); + c = Vec2f(camMat(0, 2), camMat(1, 2)); + } + else + { + Matx33d camMat = K.getMat(); + f = Vec2d(camMat(0, 0), camMat(1, 1)); + c = Vec2d(camMat(0 ,2), camMat(1, 2)); + } + + Vec4d k = D.depth() == CV_32F ? (Vec4d)*D.getMat().ptr(): *D.getMat().ptr(); + + const Vec2f* Xf = undistorted.getMat().ptr(); + const Vec2d* Xd = undistorted.getMat().ptr(); + Vec2f *xpf = distorted.getMat().ptr(); + Vec2d *xpd = distorted.getMat().ptr(); + + for(size_t i = 0; i < n; ++i) + { + Vec2d x = undistorted.depth() == CV_32F ? (Vec2d)Xf[i] : Xd[i]; + + double r2 = x.dot(x); + double r = std::sqrt(r2); + + // Angle of the incoming ray: + double theta = atan(r); + + double theta2 = theta*theta, theta3 = theta2*theta, theta4 = theta2*theta2, theta5 = theta4*theta, + theta6 = theta3*theta3, theta7 = theta6*theta, theta8 = theta4*theta4, theta9 = theta8*theta; + + double theta_d = theta + k[0]*theta3 + k[1]*theta5 + k[2]*theta7 + k[3]*theta9; + + double inv_r = r > 1e-8 ? 1.0/r : 1; + double cdist = r > 1e-8 ? theta_d * inv_r : 1; + + Vec2d xd1 = x * cdist; + Vec2d xd3(xd1[0] + alpha*xd1[1], xd1[1]); + Vec2d final_point(xd3[0] * f[0] + c[0], xd3[1] * f[1] + c[1]); + + if (undistorted.depth() == CV_32F) + xpf[i] = final_point; + else + xpd[i] = final_point; + } +} + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// cv::Fisheye::undistortPoints + +void cv::Fisheye::undistortPoints( InputArray distorted, OutputArray undistorted, InputArray _K, InputArray _D, InputArray _R, InputArray _P) +{ + // will support only 2-channel data now for points + CV_Assert(distorted.type() == CV_32FC2 || distorted.type() == CV_64FC2); + undistorted.create(distorted.size(), distorted.type()); + + CV_Assert(_P.empty() || _P.size() == Size(3, 3) || _P.size() == Size(4, 3)); + CV_Assert(_R.empty() || _R.size() == Size(3, 3) || _R.total() * _R.channels() == 3); + CV_Assert(_D.total() == 4 && _K.size() == Size(3, 3) && (_K.depth() == CV_32F || _K.depth() == CV_64F)); + + cv::Vec2d f, c; + if (_K.depth() == CV_32F) + { + Matx33f camMat = _K.getMat(); + f = Vec2f(camMat(0, 0), camMat(1, 1)); + c = Vec2f(camMat(0, 2), camMat(1, 2)); + } + else + { + Matx33d camMat = _K.getMat(); + f = Vec2d(camMat(0, 0), camMat(1, 1)); + c = Vec2d(camMat(0, 2), camMat(1, 2)); + } + + Vec4d k = _D.depth() == CV_32F ? (Vec4d)*_D.getMat().ptr(): *_D.getMat().ptr(); + + cv::Matx33d RR = cv::Matx33d::eye(); + if (!_R.empty() && _R.total() * _R.channels() == 3) + { + cv::Vec3d rvec; + _R.getMat().convertTo(rvec, CV_64F); + RR = cv::Affine3d(rvec).rotation(); + } + else if (!_R.empty() && _R.size() == Size(3, 3)) + _R.getMat().convertTo(RR, CV_64F); + + if(!_P.empty()) + { + cv::Matx33d P; + _P.getMat().colRange(0, 3).convertTo(P, CV_64F); + RR = P * RR; + } + + // start undistorting + const cv::Vec2f* srcf = distorted.getMat().ptr(); + const cv::Vec2d* srcd = distorted.getMat().ptr(); + cv::Vec2f* dstf = undistorted.getMat().ptr(); + cv::Vec2d* dstd = undistorted.getMat().ptr(); + + size_t n = distorted.total(); + int sdepth = distorted.depth(); + + for(size_t i = 0; i < n; i++ ) + { + Vec2d pi = sdepth == CV_32F ? (Vec2d)srcf[i] : srcd[i]; // image point + Vec2d pw((pi[0] - c[0])/f[0], (pi[1] - c[1])/f[1]); // world point + + double scale = 1.0; + + double theta_d = sqrt(pw[0]*pw[0] + pw[1]*pw[1]); + if (theta_d > 1e-8) + { + // compensate distortion iteratively + double theta = theta_d; + for(int j = 0; j < 10; j++ ) + { + double theta2 = theta*theta, theta4 = theta2*theta2, theta6 = theta4*theta2, theta8 = theta6*theta2; + theta = theta_d / (1 + k[0] * theta2 + k[1] * theta4 + k[2] * theta6 + k[3] * theta8); + } + + scale = std::tan(theta) / theta_d; + } + + Vec2d pu = pw * scale; //undistorted point + + // reproject + Vec3d pr = RR * Vec3d(pu[0], pu[1], 1.0); // rotated point optionally multiplied by new camera matrix + Vec2d fi(pr[0]/pr[2], pr[1]/pr[2]); // final + + if( sdepth == CV_32F ) + dstf[i] = fi; + else + dstd[i] = fi; + } +} + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// cv::Fisheye::undistortPoints + +void cv::Fisheye::initUndistortRectifyMap( InputArray _K, InputArray _D, InputArray _R, InputArray _P, + const cv::Size& size, int m1type, OutputArray map1, OutputArray map2 ) +{ + CV_Assert( m1type == CV_16SC2 || m1type == CV_32F || m1type <=0 ); + map1.create( size, m1type <= 0 ? CV_16SC2 : m1type ); + map2.create( size, map1.type() == CV_16SC2 ? CV_16UC1 : CV_32F ); + + CV_Assert((_K.depth() == CV_32F || _K.depth() == CV_64F) && (_D.depth() == CV_32F || _D.depth() == CV_64F)); + CV_Assert((_P.depth() == CV_32F || _P.depth() == CV_64F) && (_R.depth() == CV_32F || _R.depth() == CV_64F)); + CV_Assert(_K.size() == Size(3, 3) && (_D.empty() || _D.total() == 4)); + CV_Assert(_R.empty() || _R.size() == Size(3, 3) || _R.total() * _R.channels() == 3); + CV_Assert(_P.empty() || _P.size() == Size(3, 3) || _P.size() == Size(4, 3)); + + cv::Vec2d f, c; + if (_K.depth() == CV_32F) + { + Matx33f camMat = _K.getMat(); + f = Vec2f(camMat(0, 0), camMat(1, 1)); + c = Vec2f(camMat(0, 2), camMat(1, 2)); + } + else + { + Matx33d camMat = _K.getMat(); + f = Vec2d(camMat(0, 0), camMat(1, 1)); + c = Vec2d(camMat(0, 2), camMat(1, 2)); + } + + Vec4d k = Vec4d::all(0); + if (!_D.empty()) + k = _D.depth() == CV_32F ? (Vec4d)*_D.getMat().ptr(): *_D.getMat().ptr(); + + cv::Matx33d R = cv::Matx33d::eye(); + if (!_R.empty() && _R.total() * _R.channels() == 3) + { + cv::Vec3d rvec; + _R.getMat().convertTo(rvec, CV_64F); + R = Affine3d(rvec).rotation(); + } + else if (!_R.empty() && _R.size() == Size(3, 3)) + _R.getMat().convertTo(R, CV_64F); + + cv::Matx33d P = cv::Matx33d::eye(); + if (!_P.empty()) + _P.getMat().colRange(0, 3).convertTo(P, CV_64F); + + cv::Matx33d iR = (P * R).inv(cv::DECOMP_SVD); + + for( int i = 0; i < size.height; ++i) + { + float* m1f = map1.getMat().ptr(i); + float* m2f = map2.getMat().ptr(i); + short* m1 = (short*)m1f; + ushort* m2 = (ushort*)m2f; + + double _x = i*iR(0, 1) + iR(0, 2), + _y = i*iR(1, 1) + iR(1, 2), + _w = i*iR(2, 1) + iR(2, 2); + + for( int j = 0; j < size.width; ++j) + { + double x = _x/_w, y = _y/_w; + + double r = sqrt(x*x + y*y); + double theta = atan(r); + + double theta2 = theta*theta, theta4 = theta2*theta2, theta6 = theta4*theta2, theta8 = theta4*theta4; + double theta_d = theta * (1 + k[0]*theta2 + k[1]*theta4 + k[2]*theta6 + k[3]*theta8); + + double scale = (r == 0) ? 1.0 : theta_d / r; + double u = f[0]*x*scale + c[0]; + double v = f[1]*y*scale + c[1]; + + if( m1type == CV_16SC2 ) + { + int iu = cv::saturate_cast(u*cv::INTER_TAB_SIZE); + int iv = cv::saturate_cast(v*cv::INTER_TAB_SIZE); + m1[j*2+0] = (short)(iu >> cv::INTER_BITS); + m1[j*2+1] = (short)(iv >> cv::INTER_BITS); + m2[j] = (ushort)((iv & (cv::INTER_TAB_SIZE-1))*cv::INTER_TAB_SIZE + (iu & (cv::INTER_TAB_SIZE-1))); + } + else if( m1type == CV_32FC1 ) + { + m1f[j] = (float)u; + m2f[j] = (float)v; + } + + _x += iR(0, 0); + _y += iR(1, 0); + _w += iR(2, 0); + } + } +} + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// cv::Fisheye::undistortImage + +void cv::Fisheye::undistortImage(InputArray distorted, OutputArray undistorted, + InputArray K, InputArray D, InputArray Knew, const Size& new_size) +{ + Size size = new_size.area() != 0 ? new_size : distorted.size(); + + cv::Mat map1, map2; + initUndistortRectifyMap(K, D, cv::Matx33d::eye(), Knew, size, CV_16SC2, map1, map2 ); + cv::remap(distorted, undistorted, map1, map2, INTER_LINEAR, BORDER_CONSTANT); +} + + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// cv::Fisheye::estimateNewCameraMatrixForUndistortRectify + +void cv::Fisheye::estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R, + OutputArray P, double balance, const Size& new_size, double fov_scale) +{ + CV_Assert( K.size() == Size(3, 3) && (K.depth() == CV_32F || K.depth() == CV_64F)); + CV_Assert((D.empty() || D.total() == 4) && (D.depth() == CV_32F || D.depth() == CV_64F || D.empty())); + + int w = image_size.width, h = image_size.height; + balance = std::min(std::max(balance, 0.0), 1.0); + + cv::Mat points(1, 4, CV_64FC2); + Vec2d* pptr = points.ptr(); + pptr[0] = Vec2d(w/2, 0); + pptr[1] = Vec2d(w, h/2); + pptr[2] = Vec2d(w/2, h); + pptr[3] = Vec2d(0, h/2); + +#if 0 + const int N = 10; + cv::Mat points(1, N * 4, CV_64FC2); + Vec2d* pptr = points.ptr(); + for(int i = 0, k = 0; i < 10; ++i) + { + pptr[k++] = Vec2d(w/2, 0) - Vec2d(w/8, 0) + Vec2d(w/4/N*i, 0); + pptr[k++] = Vec2d(w/2, h-1) - Vec2d(w/8, h-1) + Vec2d(w/4/N*i, h-1); + + pptr[k++] = Vec2d(0, h/2) - Vec2d(0, h/8) + Vec2d(0, h/4/N*i); + pptr[k++] = Vec2d(w-1, h/2) - Vec2d(w-1, h/8) + Vec2d(w-1, h/4/N*i); + } +#endif + + undistortPoints(points, points, K, D, R); + cv::Scalar center_mass = mean(points); + cv::Vec2d cn(center_mass.val); + + double aspect_ratio = (K.depth() == CV_32F) ? K.getMat().at(0,0)/K.getMat().at (1,1) + : K.getMat().at(0,0)/K.getMat().at(1,1); + + // convert to identity ratio + cn[0] *= aspect_ratio; + for(size_t i = 0; i < points.total(); ++i) + pptr[i][1] *= aspect_ratio; + + double minx = DBL_MAX, miny = DBL_MAX, maxx = -DBL_MAX, maxy = -DBL_MAX; + for(size_t i = 0; i < points.total(); ++i) + { + miny = std::min(miny, pptr[i][1]); + maxy = std::max(maxy, pptr[i][1]); + minx = std::min(minx, pptr[i][0]); + maxx = std::max(maxx, pptr[i][0]); + } + +#if 0 + double minx = -DBL_MAX, miny = -DBL_MAX, maxx = DBL_MAX, maxy = DBL_MAX; + for(size_t i = 0; i < points.total(); ++i) + { + if (i % 4 == 0) miny = std::max(miny, pptr[i][1]); + if (i % 4 == 1) maxy = std::min(maxy, pptr[i][1]); + if (i % 4 == 2) minx = std::max(minx, pptr[i][0]); + if (i % 4 == 3) maxx = std::min(maxx, pptr[i][0]); + } +#endif + + double f1 = w * 0.5/(cn[0] - minx); + double f2 = w * 0.5/(maxx - cn[0]); + double f3 = h * 0.5 * aspect_ratio/(cn[1] - miny); + double f4 = h * 0.5 * aspect_ratio/(maxy - cn[1]); + + double fmin = std::min(f1, std::min(f2, std::min(f3, f4))); + double fmax = std::max(f1, std::max(f2, std::max(f3, f4))); + + double f = balance * fmin + (1.0 - balance) * fmax; + f *= fov_scale > 0 ? 1.0/fov_scale : 1.0; + + cv::Vec2d new_f(f, f), new_c = -cn * f + Vec2d(w, h * aspect_ratio) * 0.5; + + // restore aspect ratio + new_f[1] /= aspect_ratio; + new_c[1] /= aspect_ratio; + + if (new_size.area() > 0) + { + double rx = new_size.width /(double)image_size.width; + double ry = new_size.height/(double)image_size.height; + + new_f[0] *= rx; new_f[1] *= ry; + new_c[0] *= rx; new_c[1] *= ry; + } + + Mat(Matx33d(new_f[0], 0, new_c[0], + 0, new_f[1], new_c[1], + 0, 0, 1)).convertTo(P, P.empty() ? K.type() : P.type()); +} + + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// cv::Fisheye::stereoRectify + +void cv::Fisheye::stereoRectify( InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size& imageSize, + InputArray _R, InputArray _tvec, OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, + OutputArray Q, int flags, const Size& newImageSize, double balance, double fov_scale) +{ + CV_Assert((_R.size() == Size(3, 3) || _R.total() * _R.channels() == 3) && (_R.depth() == CV_32F || _R.depth() == CV_64F)); + CV_Assert(_tvec.total() * _tvec.channels() == 3 && (_tvec.depth() == CV_32F || _tvec.depth() == CV_64F)); + + + cv::Mat aaa = _tvec.getMat().reshape(3, 1); + + Vec3d rvec; // Rodrigues vector + if (_R.size() == Size(3, 3)) + { + cv::Matx33d rmat; + _R.getMat().convertTo(rmat, CV_64F); + rvec = Affine3d(rmat).rvec(); + } + else if (_R.total() * _R.channels() == 3) + _R.getMat().convertTo(rvec, CV_64F); + + Vec3d tvec; + _tvec.getMat().convertTo(tvec, CV_64F); + + // rectification algorithm + rvec *= -0.5; // get average rotation + + Matx33d r_r; + Rodrigues(rvec, r_r); // rotate cameras to same orientation by averaging + + Vec3d t = r_r * tvec; + Vec3d uu(t[0] > 0 ? 1 : -1, 0, 0); + + // calculate global Z rotation + Vec3d ww = t.cross(uu); + double nw = norm(ww); + if (nw > 0.0) + ww *= acos(fabs(t[0])/cv::norm(t))/nw; + + Matx33d wr; + Rodrigues(ww, wr); + + // apply to both views + Matx33d ri1 = wr * r_r.t(); + Mat(ri1, false).convertTo(R1, R1.empty() ? CV_64F : R1.type()); + Matx33d ri2 = wr * r_r; + Mat(ri2, false).convertTo(R2, R2.empty() ? CV_64F : R2.type()); + Vec3d tnew = ri2 * tvec; + + // calculate projection/camera matrices. these contain the relevant rectified image internal params (fx, fy=fx, cx, cy) + Matx33d newK1, newK2; + estimateNewCameraMatrixForUndistortRectify(K1, D1, imageSize, R1, newK1, balance, newImageSize, fov_scale); + estimateNewCameraMatrixForUndistortRectify(K2, D2, imageSize, R2, newK2, balance, newImageSize, fov_scale); + + double fc_new = std::min(newK1(1,1), newK2(1,1)); + Point2d cc_new[2] = { Vec2d(newK1(0, 2), newK1(1, 2)), Vec2d(newK2(0, 2), newK2(1, 2)) }; + + // Vertical focal length must be the same for both images to keep the epipolar constraint use fy for fx also. + // For simplicity, set the principal points for both cameras to be the average + // of the two principal points (either one of or both x- and y- coordinates) + if( flags & cv::CALIB_ZERO_DISPARITY ) + cc_new[0] = cc_new[1] = (cc_new[0] + cc_new[1]) * 0.5; + else + cc_new[0].y = cc_new[1].y = (cc_new[0].y + cc_new[1].y)*0.5; + + Mat(Matx34d(fc_new, 0, cc_new[0].x, 0, + 0, fc_new, cc_new[0].y, 0, + 0, 0, 1, 0), false).convertTo(P1, P1.empty() ? CV_64F : P1.type()); + + Mat(Matx34d(fc_new, 0, cc_new[1].x, tnew[0]*fc_new, // baseline * focal length;, + 0, fc_new, cc_new[1].y, 0, + 0, 0, 1, 0), false).convertTo(P2, P2.empty() ? CV_64F : P2.type()); + + if (Q.needed()) + Mat(Matx44d(1, 0, 0, -cc_new[0].x, + 0, 1, 0, -cc_new[0].y, + 0, 0, 0, fc_new, + 0, 0, -1./tnew[0], (cc_new[0].x - cc_new[1].x)/tnew[0]), false).convertTo(Q, Q.empty() ? CV_64F : Q.depth()); +} + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// cv::Fisheye::calibrate + +double cv::Fisheye::calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size, + InputOutputArray K, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, + int flags , cv::TermCriteria criteria) +{ + CV_Assert(!objectPoints.empty() && !imagePoints.empty() && objectPoints.total() == imagePoints.total()); + CV_Assert(objectPoints.type() == CV_32FC3 || objectPoints.type() == CV_64FC3); + CV_Assert(imagePoints.type() == CV_32FC2 || imagePoints.type() == CV_64FC2); + CV_Assert((!K.empty() && K.size() == Size(3,3)) || K.empty()); + CV_Assert((!D.empty() && D.total() == 4) || D.empty()); + CV_Assert((!rvecs.empty() && rvecs.channels() == 3) || rvecs.empty()); + CV_Assert((!tvecs.empty() && tvecs.channels() == 3) || tvecs.empty()); + + CV_Assert(((flags & CALIB_USE_INTRINSIC_GUESS) && !K.empty() && !D.empty()) || !(flags & CALIB_USE_INTRINSIC_GUESS)); + + using namespace cv::internal; + //-------------------------------Initialization + IntrinsicParams finalParam; + IntrinsicParams currentParam; + IntrinsicParams errors; + + finalParam.isEstimate[0] = 1; + finalParam.isEstimate[1] = 1; + finalParam.isEstimate[2] = 1; + finalParam.isEstimate[3] = 1; + finalParam.isEstimate[4] = flags & CALIB_FIX_SKEW ? 0 : 1; + finalParam.isEstimate[5] = flags & CALIB_FIX_K1 ? 0 : 1; + finalParam.isEstimate[6] = flags & CALIB_FIX_K2 ? 0 : 1; + finalParam.isEstimate[7] = flags & CALIB_FIX_K3 ? 0 : 1; + finalParam.isEstimate[8] = flags & CALIB_FIX_K4 ? 0 : 1; + + const int recompute_extrinsic = flags & CALIB_RECOMPUTE_EXTRINSIC ? 1: 0; + const int check_cond = flags & CALIB_CHECK_COND ? 1 : 0; + + const double alpha_smooth = 0.4; + const double thresh_cond = 1e6; + double change = 1; + Vec2d err_std; + + Matx33d _K; + Vec4d _D; + if (flags & CALIB_USE_INTRINSIC_GUESS) + { + K.getMat().convertTo(_K, CV_64FC1); + D.getMat().convertTo(_D, CV_64FC1); + finalParam.Init(Vec2d(_K(0,0), _K(1, 1)), + Vec2d(_K(0,2), _K(1, 2)), + Vec4d(flags & CALIB_FIX_K1 ? 0 : _D[0], + flags & CALIB_FIX_K2 ? 0 : _D[1], + flags & CALIB_FIX_K3 ? 0 : _D[2], + flags & CALIB_FIX_K4 ? 0 : _D[3]), + _K(0, 1) / _K(0, 0)); + } + else + { + finalParam.Init(Vec2d(max(image_size.width, image_size.height) / CV_PI, max(image_size.width, image_size.height) / CV_PI), + Vec2d(image_size.width / 2.0 - 0.5, image_size.height / 2.0 - 0.5)); + } + + errors.isEstimate = finalParam.isEstimate; + + std::vector omc(objectPoints.total()), Tc(objectPoints.total()); + + CalibrateExtrinsics(objectPoints, imagePoints, finalParam, check_cond, thresh_cond, omc, Tc); + + + //-------------------------------Optimization + for(int iter = 0; ; ++iter) + { + if ((criteria.type == 1 && iter >= criteria.maxCount) || + (criteria.type == 2 && change <= criteria.epsilon) || + (criteria.type == 3 && (change <= criteria.epsilon || iter >= criteria.maxCount))) + break; + + double alpha_smooth2 = 1 - std::pow(1 - alpha_smooth, iter + 1.0); + + Mat JJ2_inv, ex3; + ComputeJacobians(objectPoints, imagePoints, finalParam, omc, Tc, check_cond,thresh_cond, JJ2_inv, ex3); + + Mat G = alpha_smooth2 * JJ2_inv * ex3; + + currentParam = finalParam + G; + + change = norm(Vec4d(currentParam.f[0], currentParam.f[1], currentParam.c[0], currentParam.c[1]) - + Vec4d(finalParam.f[0], finalParam.f[1], finalParam.c[0], finalParam.c[1])) + / norm(Vec4d(currentParam.f[0], currentParam.f[1], currentParam.c[0], currentParam.c[1])); + + finalParam = currentParam; + + if (recompute_extrinsic) + { + CalibrateExtrinsics(objectPoints, imagePoints, finalParam, check_cond, + thresh_cond, omc, Tc); + } + } + + //-------------------------------Validation + double rms; + EstimateUncertainties(objectPoints, imagePoints, finalParam, omc, Tc, errors, err_std, thresh_cond, + check_cond, rms); + + //------------------------------- + _K = Matx33d(finalParam.f[0], finalParam.f[0] * finalParam.alpha, finalParam.c[0], + 0, finalParam.f[1], finalParam.c[1], + 0, 0, 1); + + if (K.needed()) cv::Mat(_K).convertTo(K, K.empty() ? CV_64FC1 : K.type()); + if (D.needed()) cv::Mat(finalParam.k).convertTo(D, D.empty() ? CV_64FC1 : D.type()); + if (rvecs.needed()) cv::Mat(omc).convertTo(rvecs, rvecs.empty() ? CV_64FC3 : rvecs.type()); + if (tvecs.needed()) cv::Mat(Tc).convertTo(tvecs, tvecs.empty() ? CV_64FC3 : tvecs.type()); + + return rms; +} + +namespace cv{ namespace { +void subMatrix(const Mat& src, Mat& dst, const vector& cols, const vector& rows) +{ + CV_Assert(src.type() == CV_64FC1); + + int nonzeros_cols = cv::countNonZero(cols); + Mat tmp(src.rows, nonzeros_cols, CV_64FC1); + + for (size_t i = 0, j = 0; i < cols.size(); i++) + { + if (cols[i]) + { + src.col(i).copyTo(tmp.col(j++)); + } + } + + int nonzeros_rows = cv::countNonZero(rows); + Mat tmp1(nonzeros_rows, nonzeros_cols, CV_64FC1); + for (size_t i = 0, j = 0; i < rows.size(); i++) + { + if (rows[i]) + { + tmp.row(i).copyTo(tmp1.row(j++)); + } + } + + dst = tmp1.clone(); +} + +}} + +cv::internal::IntrinsicParams::IntrinsicParams(): + f(Vec2d::all(0)), c(Vec2d::all(0)), k(Vec4d::all(0)), alpha(0), isEstimate(9,0) +{ +} + +cv::internal::IntrinsicParams::IntrinsicParams(Vec2d _f, Vec2d _c, Vec4d _k, double _alpha): + f(_f), c(_c), k(_k), alpha(_alpha), isEstimate(9,0) +{ +} + +cv::internal::IntrinsicParams cv::internal::IntrinsicParams::operator+(const Mat& a) +{ + CV_Assert(a.type() == CV_64FC1); + IntrinsicParams tmp; + const double* ptr = a.ptr(); + + int j = 0; + tmp.f[0] = this->f[0] + (isEstimate[0] ? ptr[j++] : 0); + tmp.f[1] = this->f[1] + (isEstimate[1] ? ptr[j++] : 0); + tmp.c[0] = this->c[0] + (isEstimate[2] ? ptr[j++] : 0); + tmp.alpha = this->alpha + (isEstimate[4] ? ptr[j++] : 0); + tmp.c[1] = this->c[1] + (isEstimate[3] ? ptr[j++] : 0); + tmp.k[0] = this->k[0] + (isEstimate[5] ? ptr[j++] : 0); + tmp.k[1] = this->k[1] + (isEstimate[6] ? ptr[j++] : 0); + tmp.k[2] = this->k[2] + (isEstimate[7] ? ptr[j++] : 0); + tmp.k[3] = this->k[3] + (isEstimate[8] ? ptr[j++] : 0); + + tmp.isEstimate = isEstimate; + return tmp; +} + +cv::internal::IntrinsicParams& cv::internal::IntrinsicParams::operator =(const Mat& a) +{ + CV_Assert(a.type() == CV_64FC1); + const double* ptr = a.ptr(); + + int j = 0; + + this->f[0] = isEstimate[0] ? ptr[j++] : 0; + this->f[1] = isEstimate[1] ? ptr[j++] : 0; + this->c[0] = isEstimate[2] ? ptr[j++] : 0; + this->c[1] = isEstimate[3] ? ptr[j++] : 0; + this->alpha = isEstimate[4] ? ptr[j++] : 0; + this->k[0] = isEstimate[5] ? ptr[j++] : 0; + this->k[1] = isEstimate[6] ? ptr[j++] : 0; + this->k[2] = isEstimate[7] ? ptr[j++] : 0; + this->k[3] = isEstimate[8] ? ptr[j++] : 0; + + return *this; +} + +void cv::internal::IntrinsicParams::Init(const cv::Vec2d& _f, const cv::Vec2d& _c, const cv::Vec4d& _k, const double& _alpha) +{ + this->c = _c; + this->f = _f; + this->k = _k; + this->alpha = _alpha; +} + +void cv::internal::projectPoints(cv::InputArray objectPoints, cv::OutputArray imagePoints, + cv::InputArray _rvec,cv::InputArray _tvec, + const IntrinsicParams& param, cv::OutputArray jacobian) +{ + CV_Assert(!objectPoints.empty() && objectPoints.type() == CV_64FC3); + Matx33d K(param.f[0], param.f[0] * param.alpha, param.c[0], + 0, param.f[1], param.c[1], + 0, 0, 1); + Fisheye::projectPoints(objectPoints, imagePoints, _rvec, _tvec, K, param.k, param.alpha, jacobian); +} + +void cv::internal::ComputeExtrinsicRefine(const Mat& imagePoints, const Mat& objectPoints, Mat& rvec, + Mat& tvec, Mat& J, const int MaxIter, + const IntrinsicParams& param, const double thresh_cond) +{ + CV_Assert(!objectPoints.empty() && objectPoints.type() == CV_64FC3); + CV_Assert(!imagePoints.empty() && imagePoints.type() == CV_64FC2); + Vec6d extrinsics(rvec.at(0), rvec.at(1), rvec.at(2), + tvec.at(0), tvec.at(1), tvec.at(2)); + double change = 1; + int iter = 0; + + while (change > 1e-10 && iter < MaxIter) + { + std::vector x; + Mat jacobians; + projectPoints(objectPoints, x, rvec, tvec, param, jacobians); + + Mat ex = imagePoints - Mat(x).t(); + ex = ex.reshape(1, 2); + + J = jacobians.colRange(8, 14).clone(); + + SVD svd(J, SVD::NO_UV); + double condJJ = svd.w.at(0)/svd.w.at(5); + + if (condJJ > thresh_cond) + change = 0; + else + { + Vec6d param_innov; + solve(J, ex.reshape(1, (int)ex.total()), param_innov, DECOMP_SVD + DECOMP_NORMAL); + + Vec6d param_up = extrinsics + param_innov; + change = norm(param_innov)/norm(param_up); + extrinsics = param_up; + iter = iter + 1; + + rvec = Mat(Vec3d(extrinsics.val)); + tvec = Mat(Vec3d(extrinsics.val+3)); + } + } +} + +cv::Mat cv::internal::ComputeHomography(Mat m, Mat M) +{ + int Np = m.cols; + + if (m.rows < 3) + { + vconcat(m, Mat::ones(1, Np, CV_64FC1), m); + } + if (M.rows < 3) + { + vconcat(M, Mat::ones(1, Np, CV_64FC1), M); + } + + divide(m, Mat::ones(3, 1, CV_64FC1) * m.row(2), m); + divide(M, Mat::ones(3, 1, CV_64FC1) * M.row(2), M); + + Mat ax = m.row(0).clone(); + Mat ay = m.row(1).clone(); + + double mxx = mean(ax)[0]; + double myy = mean(ay)[0]; + + ax = ax - mxx; + ay = ay - myy; + + double scxx = mean(abs(ax))[0]; + double scyy = mean(abs(ay))[0]; + + Mat Hnorm (Matx33d( 1/scxx, 0.0, -mxx/scxx, + 0.0, 1/scyy, -myy/scyy, + 0.0, 0.0, 1.0 )); + + Mat inv_Hnorm (Matx33d( scxx, 0, mxx, + 0, scyy, myy, + 0, 0, 1 )); + Mat mn = Hnorm * m; + + Mat L = Mat::zeros(2*Np, 9, CV_64FC1); + + for (int i = 0; i < Np; ++i) + { + for (int j = 0; j < 3; j++) + { + L.at(2 * i, j) = M.at(j, i); + L.at(2 * i + 1, j + 3) = M.at(j, i); + L.at(2 * i, j + 6) = -mn.at(0,i) * M.at(j, i); + L.at(2 * i + 1, j + 6) = -mn.at(1,i) * M.at(j, i); + } + } + + if (Np > 4) L = L.t() * L; + SVD svd(L); + Mat hh = svd.vt.row(8) / svd.vt.row(8).at(8); + Mat Hrem = hh.reshape(1, 3); + Mat H = inv_Hnorm * Hrem; + + if (Np > 4) + { + Mat hhv = H.reshape(1, 9)(Rect(0, 0, 1, 8)).clone(); + for (int iter = 0; iter < 10; iter++) + { + Mat mrep = H * M; + Mat J = Mat::zeros(2 * Np, 8, CV_64FC1); + Mat MMM; + divide(M, Mat::ones(3, 1, CV_64FC1) * mrep(Rect(0, 2, mrep.cols, 1)), MMM); + divide(mrep, Mat::ones(3, 1, CV_64FC1) * mrep(Rect(0, 2, mrep.cols, 1)), mrep); + Mat m_err = m(Rect(0,0, m.cols, 2)) - mrep(Rect(0,0, mrep.cols, 2)); + m_err = Mat(m_err.t()).reshape(1, m_err.cols * m_err.rows); + Mat MMM2, MMM3; + multiply(Mat::ones(3, 1, CV_64FC1) * mrep(Rect(0, 0, mrep.cols, 1)), MMM, MMM2); + multiply(Mat::ones(3, 1, CV_64FC1) * mrep(Rect(0, 1, mrep.cols, 1)), MMM, MMM3); + + for (int i = 0; i < Np; ++i) + { + for (int j = 0; j < 3; ++j) + { + J.at(2 * i, j) = -MMM.at(j, i); + J.at(2 * i + 1, j + 3) = -MMM.at(j, i); + } + + for (int j = 0; j < 2; ++j) + { + J.at(2 * i, j + 6) = MMM2.at(j, i); + J.at(2 * i + 1, j + 6) = MMM3.at(j, i); + } + } + divide(M, Mat::ones(3, 1, CV_64FC1) * mrep(Rect(0,2,mrep.cols,1)), MMM); + Mat hh_innov = (J.t() * J).inv() * (J.t()) * m_err; + Mat hhv_up = hhv - hh_innov; + Mat tmp; + vconcat(hhv_up, Mat::ones(1,1,CV_64FC1), tmp); + Mat H_up = tmp.reshape(1,3); + hhv = hhv_up; + H = H_up; + } + } + return H; +} + +cv::Mat cv::internal::NormalizePixels(const Mat& imagePoints, const IntrinsicParams& param) +{ + CV_Assert(!imagePoints.empty() && imagePoints.type() == CV_64FC2); + + Mat distorted((int)imagePoints.total(), 1, CV_64FC2), undistorted; + const Vec2d* ptr = imagePoints.ptr(0); + Vec2d* ptr_d = distorted.ptr(0); + for (size_t i = 0; i < imagePoints.total(); ++i) + { + ptr_d[i] = (ptr[i] - param.c).mul(Vec2d(1.0 / param.f[0], 1.0 / param.f[1])); + ptr_d[i][0] = ptr_d[i][0] - param.alpha * ptr_d[i][1]; + } + cv::Fisheye::undistortPoints(distorted, undistorted, Matx33d::eye(), param.k); + return undistorted; +} + +void cv::internal::InitExtrinsics(const Mat& _imagePoints, const Mat& _objectPoints, const IntrinsicParams& param, Mat& omckk, Mat& Tckk) +{ + + CV_Assert(!_objectPoints.empty() && _objectPoints.type() == CV_64FC3); + CV_Assert(!_imagePoints.empty() && _imagePoints.type() == CV_64FC2); + + Mat imagePointsNormalized = NormalizePixels(_imagePoints.t(), param).reshape(1).t(); + Mat objectPoints = Mat(_objectPoints.t()).reshape(1).t(); + Mat objectPointsMean, covObjectPoints; + Mat Rckk; + int Np = imagePointsNormalized.cols; + calcCovarMatrix(objectPoints, covObjectPoints, objectPointsMean, CV_COVAR_NORMAL | CV_COVAR_COLS); + SVD svd(covObjectPoints); + Mat R(svd.vt); + if (norm(R(Rect(2, 0, 1, 2))) < 1e-6) + R = Mat::eye(3,3, CV_64FC1); + if (determinant(R) < 0) + R = -R; + Mat T = -R * objectPointsMean; + Mat X_new = R * objectPoints + T * Mat::ones(1, Np, CV_64FC1); + Mat H = ComputeHomography(imagePointsNormalized, X_new(Rect(0,0,X_new.cols,2))); + double sc = .5 * (norm(H.col(0)) + norm(H.col(1))); + H = H / sc; + Mat u1 = H.col(0).clone(); + u1 = u1 / norm(u1); + Mat u2 = H.col(1).clone() - u1.dot(H.col(1).clone()) * u1; + u2 = u2 / norm(u2); + Mat u3 = u1.cross(u2); + Mat RRR; + hconcat(u1, u2, RRR); + hconcat(RRR, u3, RRR); + Rodrigues(RRR, omckk); + Rodrigues(omckk, Rckk); + Tckk = H.col(2).clone(); + Tckk = Tckk + Rckk * T; + Rckk = Rckk * R; + Rodrigues(Rckk, omckk); +} + +void cv::internal::CalibrateExtrinsics(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, + const IntrinsicParams& param, const int check_cond, + const double thresh_cond, InputOutputArray omc, InputOutputArray Tc) +{ + CV_Assert(!objectPoints.empty() && (objectPoints.type() == CV_32FC3 || objectPoints.type() == CV_64FC3)); + CV_Assert(!imagePoints.empty() && (imagePoints.type() == CV_32FC2 || imagePoints.type() == CV_64FC2)); + CV_Assert(omc.type() == CV_64FC3 || Tc.type() == CV_64FC3); + + if (omc.empty()) omc.create(1, (int)objectPoints.total(), CV_64FC3); + if (Tc.empty()) Tc.create(1, (int)objectPoints.total(), CV_64FC3); + + const int maxIter = 20; + + for(int image_idx = 0; image_idx < (int)imagePoints.total(); ++image_idx) + { + Mat omckk, Tckk, JJ_kk; + Mat image, object; + + objectPoints.getMat(image_idx).convertTo(object, CV_64FC3); + imagePoints.getMat (image_idx).convertTo(image, CV_64FC2); + + InitExtrinsics(image, object, param, omckk, Tckk); + + ComputeExtrinsicRefine(image, object, omckk, Tckk, JJ_kk, maxIter, param, thresh_cond); + if (check_cond) + { + SVD svd(JJ_kk, SVD::NO_UV); + if (svd.w.at(0) / svd.w.at((int)svd.w.total() - 1) > thresh_cond) + { + CV_Assert(!"cond > thresh_cond"); + } + } + omckk.reshape(3,1).copyTo(omc.getMat().col(image_idx)); + Tckk.reshape(3,1).copyTo(Tc.getMat().col(image_idx)); + } +} + + +void cv::internal::ComputeJacobians(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, + const IntrinsicParams& param, InputArray omc, InputArray Tc, + const int& check_cond, const double& thresh_cond, Mat& JJ2_inv, Mat& ex3) +{ + CV_Assert(!objectPoints.empty() && (objectPoints.type() == CV_32FC3 || objectPoints.type() == CV_64FC3)); + CV_Assert(!imagePoints.empty() && (imagePoints.type() == CV_32FC2 || imagePoints.type() == CV_64FC2)); + + CV_Assert(!omc.empty() && omc.type() == CV_64FC3); + CV_Assert(!Tc.empty() && Tc.type() == CV_64FC3); + + int n = (int)objectPoints.total(); + + Mat JJ3 = Mat::zeros(9 + 6 * n, 9 + 6 * n, CV_64FC1); + ex3 = Mat::zeros(9 + 6 * n, 1, CV_64FC1 ); + + for (int image_idx = 0; image_idx < n; ++image_idx) + { + Mat image, object; + objectPoints.getMat(image_idx).convertTo(object, CV_64FC3); + imagePoints.getMat (image_idx).convertTo(image, CV_64FC2); + + Mat om(omc.getMat().col(image_idx)), T(Tc.getMat().col(image_idx)); + + std::vector x; + Mat jacobians; + projectPoints(object, x, om, T, param, jacobians); + Mat exkk = image.t() - Mat(x); + + Mat A(jacobians.rows, 9, CV_64FC1); + jacobians.colRange(0, 4).copyTo(A.colRange(0, 4)); + jacobians.col(14).copyTo(A.col(4)); + jacobians.colRange(4, 8).copyTo(A.colRange(5, 9)); + + A = A.t(); + + Mat B = jacobians.colRange(8, 14).clone(); + B = B.t(); + + JJ3(Rect(0, 0, 9, 9)) = JJ3(Rect(0, 0, 9, 9)) + A * A.t(); + JJ3(Rect(9 + 6 * image_idx, 9 + 6 * image_idx, 6, 6)) = B * B.t(); + + Mat AB = A * B.t(); + AB.copyTo(JJ3(Rect(9 + 6 * image_idx, 0, 6, 9))); + + JJ3(Rect(0, 9 + 6 * image_idx, 9, 6)) = AB.t(); + ex3(Rect(0,0,1,9)) = ex3(Rect(0,0,1,9)) + A * exkk.reshape(1, 2 * exkk.rows); + + ex3(Rect(0, 9 + 6 * image_idx, 1, 6)) = B * exkk.reshape(1, 2 * exkk.rows); + + if (check_cond) + { + Mat JJ_kk = B.t(); + SVD svd(JJ_kk, SVD::NO_UV); + double cond = svd.w.at(0) / svd.w.at(svd.w.rows - 1); + if (cond > thresh_cond) + { + CV_Assert(!"cond > thresh_cond"); + } + } + } + + vector idxs(param.isEstimate); + idxs.insert(idxs.end(), 6 * n, 1); + + subMatrix(JJ3, JJ3, idxs, idxs); + subMatrix(ex3, ex3, std::vector(1, 1), idxs); + JJ2_inv = JJ3.inv(); +} + +void cv::internal::EstimateUncertainties(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, + const IntrinsicParams& params, InputArray omc, InputArray Tc, + IntrinsicParams& errors, Vec2d& std_err, double thresh_cond, int check_cond, double& rms) +{ + CV_Assert(!objectPoints.empty() && (objectPoints.type() == CV_32FC3 || objectPoints.type() == CV_64FC3)); + CV_Assert(!imagePoints.empty() && (imagePoints.type() == CV_32FC2 || imagePoints.type() == CV_64FC2)); + + CV_Assert(!omc.empty() && omc.type() == CV_64FC3); + CV_Assert(!Tc.empty() && Tc.type() == CV_64FC3); + + Mat ex((int)(objectPoints.getMat(0).total() * objectPoints.total()), 1, CV_64FC2); + + for (size_t image_idx = 0; image_idx < objectPoints.total(); ++image_idx) + { + Mat image, object; + objectPoints.getMat(image_idx).convertTo(object, CV_64FC3); + imagePoints.getMat (image_idx).convertTo(image, CV_64FC2); + + Mat om(omc.getMat().col(image_idx)), T(Tc.getMat().col(image_idx)); + + std::vector x; + projectPoints(object, x, om, T, params, noArray()); + Mat ex_ = image.t() - Mat(x); + ex_.copyTo(ex.rowRange(ex_.rows * image_idx, ex_.rows * (image_idx + 1))); + } + + meanStdDev(ex, noArray(), std_err); + std_err *= sqrt(ex.total()/(ex.total() - 1.0)); + + Mat sigma_x; + meanStdDev(ex.reshape(1, 1), noArray(), sigma_x); + sigma_x *= sqrt(2 * ex.total()/(2 * ex.total() - 1.0)); + + Mat _JJ2_inv, ex3; + ComputeJacobians(objectPoints, imagePoints, params, omc, Tc, check_cond, thresh_cond, _JJ2_inv, ex3); + + Mat_& JJ2_inv = (Mat_&)_JJ2_inv; + + sqrt(JJ2_inv, JJ2_inv); + + double s = sigma_x.at(0); + Mat r = 3 * s * JJ2_inv.diag(); + errors = r; + + rms = 0; + const Vec2d* ptr_ex = ex.ptr(); + for (size_t i = 0; i < ex.total(); i++) + { + rms += ptr_ex[i][0] * ptr_ex[i][0] + ptr_ex[i][1] * ptr_ex[i][1]; + } + + rms /= ex.total(); + rms = sqrt(rms); +} diff --git a/modules/calib3d/test/test_fisheye.cpp b/modules/calib3d/test/test_fisheye.cpp new file mode 100644 index 0000000000..3989e1bc2f --- /dev/null +++ b/modules/calib3d/test/test_fisheye.cpp @@ -0,0 +1,423 @@ +#include "test_precomp.hpp" + +#include +#include +#include +#include +#include + +#include +#include +#include + +#define DEF_PARAM_TEST(name, ...) typedef ::perf::TestBaseWithParam< std::tr1::tuple< __VA_ARGS__ > > name +#define PARAM_TEST_CASE(name, ...) struct name : testing::TestWithParam< std::tr1::tuple< __VA_ARGS__ > > + + +namespace FishEye +{ + const static cv::Size imageSize(1280, 800); + + const static cv::Matx33d K(558.478087865323, 0, 620.458515360843, + 0, 560.506767351568, 381.939424848348, + 0, 0, 1); + + const static cv::Vec4d D(-0.0014613319981768, -0.00329861110580401, 0.00605760088590183, -0.00374209380722371); + + const static cv::Matx33d R ( 9.9756700084424932e-01, 6.9698277640183867e-02, 1.4929569991321144e-03, + -6.9711825162322980e-02, 9.9748249845531767e-01, 1.2997180766418455e-02, + -5.8331736398316541e-04,-1.3069635393884985e-02, 9.9991441852366736e-01); + + const static cv::Vec3d T(-9.9217369356044638e-02, 3.1741831972356663e-03, 1.8551007952921010e-04); +} + +namespace{ +std::string combine(const std::string& _item1, const std::string& _item2) +{ + std::string item1 = _item1, item2 = _item2; + std::replace(item1.begin(), item1.end(), '\\', '/'); + std::replace(item2.begin(), item2.end(), '\\', '/'); + + if (item1.empty()) + return item2; + + if (item2.empty()) + return item1; + + char last = item1[item1.size()-1]; + return item1 + (last != '/' ? "/" : "") + item2; +} + +std::string combine_format(const std::string& item1, const std::string& item2, ...) +{ + std::string fmt = combine(item1, item2); + char buffer[1 << 16]; + va_list args; + va_start( args, item2 ); + vsprintf( buffer, fmt.c_str(), args ); + va_end( args ); + return std::string(buffer); +} + +void readPoins(std::vector >& objectPoints, + std::vector >& imagePoints, + const std::string& path, const int n_images, const int n_points) +{ + objectPoints.resize(n_images); + imagePoints.resize(n_images); + + std::vector image(n_points); + std::vector object(n_points); + + std::ifstream ipStream; + std::ifstream opStream; + + for (int image_idx = 0; image_idx < n_images; image_idx++) + { + std::stringstream ss; + ss << image_idx; + std::string idxStr = ss.str(); + + ipStream.open(combine(path, std::string(std::string("x_") + idxStr + std::string(".csv"))).c_str(), std::ifstream::in); + opStream.open(combine(path, std::string(std::string("X_") + idxStr + std::string(".csv"))).c_str(), std::ifstream::in); + CV_Assert(ipStream.is_open() && opStream.is_open()); + + for (int point_idx = 0; point_idx < n_points; point_idx++) + { + double x, y, z; + char delim; + ipStream >> x >> delim >> y; + image[point_idx] = cv::Point2d(x, y); + opStream >> x >> delim >> y >> delim >> z; + object[point_idx] = cv::Point3d(x, y, z); + } + ipStream.close(); + opStream.close(); + + imagePoints[image_idx] = image; + objectPoints[image_idx] = object; + } +} + +void readExtrinsics(const std::string& file, cv::OutputArray _R, cv::OutputArray _T, cv::OutputArray _R1, cv::OutputArray _R2, + cv::OutputArray _P1, cv::OutputArray _P2, cv::OutputArray _Q) +{ + cv::FileStorage fs(file, cv::FileStorage::READ); + CV_Assert(fs.isOpened()); + + cv::Mat R, T, R1, R2, P1, P2, Q; + fs["R"] >> R; fs["T"] >> T; fs["R1"] >> R1; fs["R2"] >> R2; fs["P1"] >> P1; fs["P2"] >> P2; fs["Q"] >> Q; + if (_R.needed()) R.copyTo(_R); if(_T.needed()) T.copyTo(_T); if (_R1.needed()) R1.copyTo(_R1); if (_R2.needed()) R2.copyTo(_R2); + if(_P1.needed()) P1.copyTo(_P1); if(_P2.needed()) P2.copyTo(_P2); if(_Q.needed()) Q.copyTo(_Q); +} + +cv::Mat mergeRectification(const cv::Mat& l, const cv::Mat& r, double scale) +{ + CV_Assert(l.type() == r.type() && l.size() == r.size()); + cv::Mat merged(l.rows, l.cols * 2, l.type()); + cv::Mat lpart = merged.colRange(0, l.cols); + cv::Mat rpart = merged.colRange(l.cols, merged.cols); + l.copyTo(lpart); + r.copyTo(rpart); + + for(int i = 0; i < l.rows; i+=20) + cv::line(merged, cv::Point(0, i), cv::Point(merged.cols, i), CV_RGB(0, 255, 0)); + + return merged; +} + +} + + + +/// Change this parameter via CMake: cmake -DDATASETS_REPOSITORY_FOLDER= +//const static std::string datasets_repository_path = "DATASETS_REPOSITORY_FOLDER"; +const static std::string datasets_repository_path = "/home/krylov/data"; + +TEST(FisheyeTest, projectPoints) +{ + double cols = FishEye::imageSize.width, + rows = FishEye::imageSize.height; + + const int N = 20; + cv::Mat distorted0(1, N*N, CV_64FC2), undist1, undist2, distorted1, distorted2; + undist2.create(distorted0.size(), CV_MAKETYPE(distorted0.depth(), 3)); + cv::Vec2d* pts = distorted0.ptr(); + + cv::Vec2d c(FishEye::K(0, 2), FishEye::K(1, 2)); + for(int y = 0, k = 0; y < N; ++y) + for(int x = 0; x < N; ++x) + { + cv::Vec2d point(x*cols/(N-1.f), y*rows/(N-1.f)); + pts[k++] = (point - c) * 0.85 + c; + } + + cv::Fisheye::undistortPoints(distorted0, undist1, FishEye::K, FishEye::D); + + cv::Vec2d* u1 = undist1.ptr(); + cv::Vec3d* u2 = undist2.ptr(); + for(int i = 0; i < (int)distorted0.total(); ++i) + u2[i] = cv::Vec3d(u1[i][0], u1[i][1], 1.0); + + cv::Fisheye::distortPoints(undist1, distorted1, FishEye::K, FishEye::D); + cv::Fisheye::projectPoints(undist2, distorted2, cv::Vec3d::all(0), cv::Vec3d::all(0), FishEye::K, FishEye::D); + + EXPECT_MAT_NEAR(distorted0, distorted1, 1e-5); + EXPECT_MAT_NEAR(distorted0, distorted2, 1e-5); +} + +TEST(FisheyeTest, undistortImage) +{ + cv::Matx33d K = FishEye::K; + cv::Mat D = cv::Mat(FishEye::D); + std::string file = combine(datasets_repository_path, "image000001.png"); + + cv::Matx33d newK = K; + cv::Mat distorted = cv::imread(file), undistorted; + + { + newK(0, 0) = 100; + newK(1, 1) = 100; + cv::Fisheye::undistortImage(distorted, undistorted, K, D, newK); + cv::Mat correct = cv::imread(combine(datasets_repository_path, "test_undistortImage/new_f_100.png")); + if (correct.empty()) + CV_Assert(cv::imwrite(combine(datasets_repository_path, "test_undistortImage/new_f_100.png"), undistorted)); + else + EXPECT_MAT_NEAR(correct, undistorted, 1e-15); + } + { + double balance = 1.0; + cv::Fisheye::estimateNewCameraMatrixForUndistortRectify(K, D, distorted.size(), cv::noArray(), newK, balance); + cv::Fisheye::undistortImage(distorted, undistorted, K, D, newK); + cv::Mat correct = cv::imread(combine(datasets_repository_path, "test_undistortImage/balance_1.0.png")); + if (correct.empty()) + CV_Assert(cv::imwrite(combine(datasets_repository_path, "test_undistortImage/balance_1.0.png"), undistorted)); + else + EXPECT_MAT_NEAR(correct, undistorted, 1e-15); + } + + { + double balance = 0.0; + cv::Fisheye::estimateNewCameraMatrixForUndistortRectify(K, D, distorted.size(), cv::noArray(), newK, balance); + cv::Fisheye::undistortImage(distorted, undistorted, K, D, newK); + cv::Mat correct = cv::imread(combine(datasets_repository_path, "test_undistortImage/balance_0.0.png")); + if (correct.empty()) + CV_Assert(cv::imwrite(combine(datasets_repository_path, "test_undistortImage/balance_0.0.png"), undistorted)); + else + EXPECT_MAT_NEAR(correct, undistorted, 1e-15); + } + + cv::waitKey(); +} + +TEST(FisheyeTest, jacobians) +{ + int n = 10; + cv::Mat X(1, n, CV_32FC4); + cv::Mat om(3, 1, CV_64F), T(3, 1, CV_64F); + cv::Mat f(2, 1, CV_64F), c(2, 1, CV_64F); + cv::Mat k(4, 1, CV_64F); + double alpha; + + cv::RNG& r = cv::theRNG(); + + r.fill(X, cv::RNG::NORMAL, 0, 1); + X = cv::abs(X) * 10; + + r.fill(om, cv::RNG::NORMAL, 0, 1); + om = cv::abs(om); + + r.fill(T, cv::RNG::NORMAL, 0, 1); + T = cv::abs(T); T.at(2) = 4; T *= 10; + + r.fill(f, cv::RNG::NORMAL, 0, 1); + f = cv::abs(f) * 1000; + + r.fill(c, cv::RNG::NORMAL, 0, 1); + c = cv::abs(c) * 1000; + + r.fill(k, cv::RNG::NORMAL, 0, 1); + k*= 0.5; + + alpha = 0.01*r.gaussian(1); + + + CV_Assert(!"/////////"); +} + +TEST(FisheyeTest, Calibration) +{ + const int n_images = 34; + const int n_points = 48; + + cv::Size imageSize = cv::Size(1280, 800); + std::vector > imagePoints; + std::vector > objectPoints; + + readPoins(objectPoints, imagePoints, combine(datasets_repository_path, "calib-3_stereo_from_JY/left"), n_images, n_points); + + int flag = 0; + flag |= cv::Fisheye::CALIB_RECOMPUTE_EXTRINSIC; + flag |= cv::Fisheye::CALIB_CHECK_COND; + flag |= cv::Fisheye::CALIB_FIX_SKEW; + + cv::Matx33d K; + cv::Vec4d D; + + cv::Fisheye::calibrate(objectPoints, imagePoints, imageSize, K, D, + cv::noArray(), cv::noArray(), flag, cv::TermCriteria(3, 20, 1e-6)); + + EXPECT_MAT_NEAR(K, FishEye::K, 1e-11); + EXPECT_MAT_NEAR(D, FishEye::D, 1e-12); +} + +TEST(FisheyeTest, Homography) +{ + const int n_images = 1; + const int n_points = 48; + + cv::Size imageSize = cv::Size(1280, 800); + std::vector > imagePoints; + std::vector > objectPoints; + + readPoins(objectPoints, imagePoints, combine(datasets_repository_path, "calib-3_stereo_from_JY/left"), n_images, n_points); + cv::internal::IntrinsicParams param; + param.Init(cv::Vec2d(cv::max(imageSize.width, imageSize.height) / CV_PI, cv::max(imageSize.width, imageSize.height) / CV_PI), + cv::Vec2d(imageSize.width / 2.0 - 0.5, imageSize.height / 2.0 - 0.5)); + + cv::Mat _imagePoints (imagePoints[0]); + cv::Mat _objectPoints(objectPoints[0]); + + cv::Mat imagePointsNormalized = NormalizePixels(_imagePoints, param).reshape(1).t(); + _objectPoints = _objectPoints.reshape(1).t(); + cv::Mat objectPointsMean, covObjectPoints; + + int Np = imagePointsNormalized.cols; + cv::calcCovarMatrix(_objectPoints, covObjectPoints, objectPointsMean, CV_COVAR_NORMAL | CV_COVAR_COLS); + cv::SVD svd(covObjectPoints); + cv::Mat R(svd.vt); + + if (cv::norm(R(cv::Rect(2, 0, 1, 2))) < 1e-6) + R = cv::Mat::eye(3,3, CV_64FC1); + if (cv::determinant(R) < 0) + R = -R; + + cv::Mat T = -R * objectPointsMean; + cv::Mat X_new = R * _objectPoints + T * cv::Mat::ones(1, Np, CV_64FC1); + cv::Mat H = cv::internal::ComputeHomography(imagePointsNormalized, X_new.rowRange(0, 2)); + + cv::Mat M = cv::Mat::ones(3, X_new.cols, CV_64FC1); + X_new.rowRange(0, 2).copyTo(M.rowRange(0, 2)); + cv::Mat mrep = H * M; + + cv::divide(mrep, cv::Mat::ones(3,1, CV_64FC1) * mrep.row(2).clone(), mrep); + + cv::Mat merr = (mrep.rowRange(0, 2) - imagePointsNormalized).t(); + + cv::Vec2d std_err; + cv::meanStdDev(merr.reshape(2), cv::noArray(), std_err); + std_err *= sqrt((double)merr.reshape(2).total() / (merr.reshape(2).total() - 1)); + + cv::Vec2d correct_std_err(0.00516740156010384, 0.00644205331553901); + EXPECT_MAT_NEAR(std_err, correct_std_err, 1e-16); +} + +TEST(TestFisheye, EtimateUncertainties) +{ + const int n_images = 34; + const int n_points = 48; + + cv::Size imageSize = cv::Size(1280, 800); + std::vector > imagePoints; + std::vector > objectPoints; + + readPoins(objectPoints, imagePoints, combine(datasets_repository_path, "calib-3_stereo_from_JY/left"), n_images, n_points); + + int flag = 0; + flag |= cv::Fisheye::CALIB_RECOMPUTE_EXTRINSIC; + flag |= cv::Fisheye::CALIB_CHECK_COND; + flag |= cv::Fisheye::CALIB_FIX_SKEW; + + cv::Matx33d K; + cv::Vec4d D; + std::vector rvec; + std::vector tvec; + + cv::Fisheye::calibrate(objectPoints, imagePoints, imageSize, K, D, + cv::noArray(), cv::noArray(), flag, cv::TermCriteria(3, 20, 1e-6)); + + cv::internal::IntrinsicParams param, errors; + cv::Vec2d err_std; + double thresh_cond = 1e6; + int check_cond = 1; + param.Init(cv::Vec2d(K(0,0), K(1,1)), cv::Vec2d(K(0,2), K(1, 2)), D); + param.isEstimate = std::vector(9, 1); + param.isEstimate[4] = 0; + + errors.isEstimate = param.isEstimate; + + double rms; + + cv::internal::EstimateUncertainties(objectPoints, imagePoints, param, rvec, tvec, + errors, err_std, thresh_cond, check_cond, rms); + + EXPECT_MAT_NEAR(errors.f, cv::Vec2d(1.29837104202046, 1.31565641071524), 1e-14); + EXPECT_MAT_NEAR(errors.c, cv::Vec2d(0.890439368129246, 0.816096854937896), 1e-15); + EXPECT_MAT_NEAR(errors.k, cv::Vec4d(0.00516248605191506, 0.0168181467500934, 0.0213118690274604, 0.00916010877545648), 1e-15); + EXPECT_MAT_NEAR(err_std, cv::Vec2d(0.187475975266883, 0.185678953263995), 1e-15); + CV_Assert(abs(rms - 0.263782587133546) < 1e-15); + CV_Assert(errors.alpha == 0); + } + +TEST(FisheyeTest, rectify) +{ + const std::string folder =combine(datasets_repository_path, "calib-3_stereo_from_JY"); + + cv::Size calibration_size = FishEye::imageSize, requested_size = calibration_size; + cv::Matx33d K1 = FishEye::K, K2 = K1; + cv::Mat D1 = cv::Mat(FishEye::D), D2 = D1; + + cv::Vec3d T = FishEye::T; + cv::Matx33d R = FishEye::R; + + double balance = 0.0, fov_scale = 1.1; + cv::Mat R1, R2, P1, P2, Q; + cv::Fisheye::stereoRectify(K1, D1, K2, D2, calibration_size, R, T, R1, R2, P1, P2, Q, + cv::CALIB_ZERO_DISPARITY, requested_size, balance, fov_scale); + + cv::Mat lmapx, lmapy, rmapx, rmapy; + //rewrite for fisheye + cv::Fisheye::initUndistortRectifyMap(K1, D1, R1, P1, requested_size, CV_32F, lmapx, lmapy); + cv::Fisheye::initUndistortRectifyMap(K2, D2, R2, P2, requested_size, CV_32F, rmapx, rmapy); + + cv::Mat l, r, lundist, rundist; + cv::VideoCapture lcap(combine(folder, "left/stereo_pair_%03d.jpg")), + rcap(combine(folder, "right/stereo_pair_%03d.jpg")); + + for(int i = 0;; ++i) + { + lcap >> l; rcap >> r; + if (l.empty() || r.empty()) + break; + + int ndisp = 128; + cv::rectangle(l, cv::Rect(255, 0, 829, l.rows-1), CV_RGB(255, 0, 0)); + cv::rectangle(r, cv::Rect(255, 0, 829, l.rows-1), CV_RGB(255, 0, 0)); + cv::rectangle(r, cv::Rect(255-ndisp, 0, 829+ndisp ,l.rows-1), CV_RGB(255, 0, 0)); + cv::remap(l, lundist, lmapx, lmapy, cv::INTER_LINEAR); + cv::remap(r, rundist, rmapx, rmapy, cv::INTER_LINEAR); + + cv::Mat rectification = mergeRectification(lundist, rundist, 0.75); + + cv::Mat correct = cv::imread(combine_format(folder, "test_rectify/rectification_AB_%03d.png", i)); + if (correct.empty()) + cv::imwrite(combine_format(folder, "test_rectify/rectification_AB_%03d.png", i), rectification); + else + EXPECT_MAT_NEAR(correct, rectification, 1e-15); + } +} + + + + + From 35e1b322cbc9640fc60ab03b6fc5783782c6ca1b Mon Sep 17 00:00:00 2001 From: Ilya Krylov Date: Fri, 25 Apr 2014 18:36:48 +0400 Subject: [PATCH 004/189] Added test for jacobians --- modules/calib3d/test/test_fisheye.cpp | 91 ++++++++++++++++++++------- 1 file changed, 70 insertions(+), 21 deletions(-) diff --git a/modules/calib3d/test/test_fisheye.cpp b/modules/calib3d/test/test_fisheye.cpp index 3989e1bc2f..b2f47987cb 100644 --- a/modules/calib3d/test/test_fisheye.cpp +++ b/modules/calib3d/test/test_fisheye.cpp @@ -1,18 +1,13 @@ #include "test_precomp.hpp" - -#include -#include -#include -#include -#include - +#include #include -#include -#include #define DEF_PARAM_TEST(name, ...) typedef ::perf::TestBaseWithParam< std::tr1::tuple< __VA_ARGS__ > > name #define PARAM_TEST_CASE(name, ...) struct name : testing::TestWithParam< std::tr1::tuple< __VA_ARGS__ > > +/// Change this parameter via CMake: cmake -DDATASETS_REPOSITORY_FOLDER= +//const static std::string datasets_repository_path = "DATASETS_REPOSITORY_FOLDER"; +const static std::string datasets_repository_path = "/home/krylov/data"; namespace FishEye { @@ -111,7 +106,7 @@ void readExtrinsics(const std::string& file, cv::OutputArray _R, cv::OutputArray if(_P1.needed()) P1.copyTo(_P1); if(_P2.needed()) P2.copyTo(_P2); if(_Q.needed()) Q.copyTo(_Q); } -cv::Mat mergeRectification(const cv::Mat& l, const cv::Mat& r, double scale) +cv::Mat mergeRectification(const cv::Mat& l, const cv::Mat& r) { CV_Assert(l.type() == r.type() && l.size() == r.size()); cv::Mat merged(l.rows, l.cols * 2, l.type()); @@ -128,12 +123,6 @@ cv::Mat mergeRectification(const cv::Mat& l, const cv::Mat& r, double scale) } - - -/// Change this parameter via CMake: cmake -DDATASETS_REPOSITORY_FOLDER= -//const static std::string datasets_repository_path = "DATASETS_REPOSITORY_FOLDER"; -const static std::string datasets_repository_path = "/home/krylov/data"; - TEST(FisheyeTest, projectPoints) { double cols = FishEye::imageSize.width, @@ -213,7 +202,7 @@ TEST(FisheyeTest, undistortImage) TEST(FisheyeTest, jacobians) { int n = 10; - cv::Mat X(1, n, CV_32FC4); + cv::Mat X(1, n, CV_64FC3); cv::Mat om(3, 1, CV_64F), T(3, 1, CV_64F); cv::Mat f(2, 1, CV_64F), c(2, 1, CV_64F); cv::Mat k(4, 1, CV_64F); @@ -221,7 +210,7 @@ TEST(FisheyeTest, jacobians) cv::RNG& r = cv::theRNG(); - r.fill(X, cv::RNG::NORMAL, 0, 1); + r.fill(X, cv::RNG::NORMAL, 2, 1); X = cv::abs(X) * 10; r.fill(om, cv::RNG::NORMAL, 0, 1); @@ -241,8 +230,68 @@ TEST(FisheyeTest, jacobians) alpha = 0.01*r.gaussian(1); - - CV_Assert(!"/////////"); + cv::Mat x1, x2, xpred; + cv::Matx33d K(f.at(0), alpha * f.at(0), c.at(0), + 0, f.at(1), c.at(1), + 0, 0, 1); + + cv::Mat jacobians; + cv::Fisheye::projectPoints(X, x1, om, T, K, k, alpha, jacobians); + + //test on T: + cv::Mat dT(3, 1, CV_64FC1); + r.fill(dT, cv::RNG::NORMAL, 0, 1); + dT *= 1e-9*cv::norm(T); + cv::Mat T2 = T + dT; + cv::Fisheye::projectPoints(X, x2, om, T2, K, k, alpha, cv::noArray()); + xpred = x1 + cv::Mat(jacobians.colRange(11,14) * dT).reshape(2, 1); + CV_Assert (cv::norm(x2 - xpred) < 1e-12); + + //test on om: + cv::Mat dom(3, 1, CV_64FC1); + r.fill(dom, cv::RNG::NORMAL, 0, 1); + dom *= 1e-9*cv::norm(om); + cv::Mat om2 = om + dom; + cv::Fisheye::projectPoints(X, x2, om2, T, K, k, alpha, cv::noArray()); + xpred = x1 + cv::Mat(jacobians.colRange(8,11) * dom).reshape(2, 1); + CV_Assert (cv::norm(x2 - xpred) < 1e-12); + + //test on f: + cv::Mat df(2, 1, CV_64FC1); + r.fill(df, cv::RNG::NORMAL, 0, 1); + df *= 1e-9*cv::norm(f); + cv::Matx33d K2 = K + cv::Matx33d(df.at(0), df.at(0) * alpha, 0, 0, df.at(1), 0, 0, 0, 0); + cv::Fisheye::projectPoints(X, x2, om, T, K2, k, alpha, cv::noArray()); + xpred = x1 + cv::Mat(jacobians.colRange(0,2) * df).reshape(2, 1); + CV_Assert (cv::norm(x2 - xpred) < 1e-12); + + //test on c: + cv::Mat dc(2, 1, CV_64FC1); + r.fill(dc, cv::RNG::NORMAL, 0, 1); + dc *= 1e-9*cv::norm(c); + K2 = K + cv::Matx33d(0, 0, dc.at(0), 0, 0, dc.at(1), 0, 0, 0); + cv::Fisheye::projectPoints(X, x2, om, T, K2, k, alpha, cv::noArray()); + xpred = x1 + cv::Mat(jacobians.colRange(2,4) * dc).reshape(2, 1); + CV_Assert (cv::norm(x2 - xpred) < 1e-12); + + //test on k: + cv::Mat dk(4, 1, CV_64FC1); + r.fill(dk, cv::RNG::NORMAL, 0, 1); + dk *= 1e-9*cv::norm(k); + cv::Mat k2 = k + dk; + cv::Fisheye::projectPoints(X, x2, om, T, K, k2, alpha, cv::noArray()); + xpred = x1 + cv::Mat(jacobians.colRange(4,8) * dk).reshape(2, 1); + CV_Assert (cv::norm(x2 - xpred) < 1e-12); + + //test on alpha: + cv::Mat dalpha(1, 1, CV_64FC1); + r.fill(dalpha, cv::RNG::NORMAL, 0, 1); + dalpha *= 1e-9*cv::norm(f); + double alpha2 = alpha + dalpha.at(0); + K2 = K + cv::Matx33d(0, f.at(0) * dalpha.at(0), 0, 0, 0, 0, 0, 0, 0); + cv::Fisheye::projectPoints(X, x2, om, T, K, k, alpha2, cv::noArray()); + xpred = x1 + cv::Mat(jacobians.col(14) * dalpha).reshape(2, 1); + CV_Assert (cv::norm(x2 - xpred) < 1e-12); } TEST(FisheyeTest, Calibration) @@ -407,7 +456,7 @@ TEST(FisheyeTest, rectify) cv::remap(l, lundist, lmapx, lmapy, cv::INTER_LINEAR); cv::remap(r, rundist, rmapx, rmapy, cv::INTER_LINEAR); - cv::Mat rectification = mergeRectification(lundist, rundist, 0.75); + cv::Mat rectification = mergeRectification(lundist, rundist); cv::Mat correct = cv::imread(combine_format(folder, "test_rectify/rectification_AB_%03d.png", i)); if (correct.empty()) From e6420bde73f57cdbf1024d0b39049f22df3d9414 Mon Sep 17 00:00:00 2001 From: Samson Yilma Date: Sat, 26 Apr 2014 20:13:27 -0400 Subject: [PATCH 005/189] Added function decomposeHomographyMat. New files added are homography_decomp.cpp and test_homography_decomp.cpp. Modified files calib3d.hpp and camera_calibration_and_3d_reconstruction.rst. --- ...mera_calibration_and_3d_reconstruction.rst | 23 + modules/calib3d/include/opencv2/calib3d.hpp | 5 + modules/calib3d/src/homography_decomp.cpp | 480 ++++++++++++++++++ .../calib3d/test/test_homography_decomp.cpp | 138 +++++ 4 files changed, 646 insertions(+) create mode 100644 modules/calib3d/src/homography_decomp.cpp create mode 100644 modules/calib3d/test/test_homography_decomp.cpp diff --git a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst index 36af8362ff..0170904a6d 100644 --- a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst +++ b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst @@ -758,6 +758,27 @@ They are :math:`[R_2, -t]`. By decomposing ``E``, you can only get the direction of the translation, so the function returns unit ``t``. +decomposeHomographyMat +-------------------------- +Decompose a homography matrix to rotation(s), translation(s) and plane normal(s). + +.. ocv:function:: int decomposeHomographyMat( InputArray H, InputArray K, OutputArrayOfArrays rotations, OutputArrayOfArrays translations, OutputArrayOfArrays normals) + + :param H: The input homography matrix. + + :param K: The input intrinsic camera calibration matrix. + + :param rotations: Array of rotation matrices. + + :param translations: Array of translation matrices. + + :param normals: Array of plane normal matrices. + +This function extracts relative camera motion between two views observing a planar object from the homography ``H`` induced by the plane. +The intrinsic camera matrix ``K`` must also be provided. The function may return up to four mathematical solution sets. At least two of the +solutions may further be invalidated if point correspondences are available by applying positive depth constraint (all points must be in front of the camera). +The decomposition method is described in detail in [Malis]_. + recoverPose --------------- @@ -1512,3 +1533,5 @@ The function reconstructs 3-dimensional points (in homogeneous coordinates) by u .. [Slabaugh] Slabaugh, G.G. Computing Euler angles from a rotation matrix. http://www.soi.city.ac.uk/~sbbh653/publications/euler.pdf (verified: 2013-04-15) .. [Zhang2000] Z. Zhang. A Flexible New Technique for Camera Calibration. IEEE Transactions on Pattern Analysis and Machine Intelligence, 22(11):1330-1334, 2000. + +.. [Malis] Malis, E. and Vargas, M. Deeper understanding of the homography decomposition for vision-based control, Research Report 6303, INRIA (2007) diff --git a/modules/calib3d/include/opencv2/calib3d.hpp b/modules/calib3d/include/opencv2/calib3d.hpp index 8b9b69c3aa..fd6ef8ceed 100644 --- a/modules/calib3d/include/opencv2/calib3d.hpp +++ b/modules/calib3d/include/opencv2/calib3d.hpp @@ -314,6 +314,11 @@ CV_EXPORTS_W int estimateAffine3D(InputArray src, InputArray dst, double ransacThreshold = 3, double confidence = 0.99); +CV_EXPORTS_W int decomposeHomographyMat(InputArray _H, + InputArray _K, + OutputArrayOfArrays _rotations, + OutputArrayOfArrays _translations, + OutputArrayOfArrays _normals); class CV_EXPORTS_W StereoMatcher : public Algorithm { diff --git a/modules/calib3d/src/homography_decomp.cpp b/modules/calib3d/src/homography_decomp.cpp new file mode 100644 index 0000000000..8323453cda --- /dev/null +++ b/modules/calib3d/src/homography_decomp.cpp @@ -0,0 +1,480 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// + // + // This is a homography decomposition implementation contributed to OpenCV + // by Samson Yilma. It implements the homography decomposition algorithm + // descriped in the research report: + // Malis, E and Vargas, M, "Deeper understanding of the homography decomposition + // for vision-based control", Research Report 6303, INRIA (2007) + // + // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. + // + // By downloading, copying, installing or using the software you agree to this license. + // If you do not agree to this license, do not download, install, + // copy or use the software. + // + // + // License Agreement + // For Open Source Computer Vision Library + // + // Copyright (C) 2014, Samson Yilma¸ (samson_yilma@yahoo.com), all rights reserved. + // + // Third party copyrights are property of their respective owners. + // + // Redistribution and use in source and binary forms, with or without modification, + // are permitted provided that the following conditions are met: + // + // * Redistribution's of source code must retain the above copyright notice, + // this list of conditions and the following disclaimer. + // + // * Redistribution's in binary form must reproduce the above copyright notice, + // this list of conditions and the following disclaimer in the documentation + // and/or other materials provided with the distribution. + // + // * The name of the copyright holders may not be used to endorse or promote products + // derived from this software without specific prior written permission. + // + // This software is provided by the copyright holders and contributors "as is" and + // any express or implied warranties, including, but not limited to, the implied + // warranties of merchantability and fitness for a particular purpose are disclaimed. + // In no event shall the Intel Corporation or contributors be liable for any direct, + // indirect, incidental, special, exemplary, or consequential damages + // (including, but not limited to, procurement of substitute goods or services; + // loss of use, data, or profits; or business interruption) however caused + // and on any theory of liability, whether in contract, strict liability, + // or tort (including negligence or otherwise) arising in any way out of + // the use of this software, even if advised of the possibility of such damage. + // + //M*/ + +#include "precomp.hpp" + +namespace cv +{ + +namespace HomographyDecomposition +{ + +//struct to hold solutions of homography decomposition +typedef struct _CameraMotion { + cv::Matx33d R; //!< rotation matrix + cv::Vec3d n; //!< normal of the plane the camera is looking at + cv::Vec3d t; //!< translation vector +} CameraMotion; + +inline int signd(const double x) +{ + return ( x >= 0 ? 1 : -1 ); +} + +class HomographyDecomp { + +public: + HomographyDecomp() {} + virtual ~HomographyDecomp() {} + virtual void decomposeHomography(const cv::Matx33d& H, const cv::Matx33d& K, + std::vector& camMotions); + bool isRotationValid(const cv::Matx33d& R, const double epsilon=0.01); + +protected: + bool passesSameSideOfPlaneConstraint(CameraMotion& motion); + virtual void decompose(std::vector& camMotions) = 0; + const cv::Matx33d& getHnorm() const { + return _Hnorm; + } + +private: + cv::Matx33d normalize(const cv::Matx33d& H, const cv::Matx33d& K); + void removeScale(); + cv::Matx33d _Hnorm; +}; + +class HomographyDecompZhang : public HomographyDecomp { + +public: + HomographyDecompZhang():HomographyDecomp() {} + virtual ~HomographyDecompZhang() {} + +private: + virtual void decompose(std::vector& camMotions); + bool findMotionFrom_tstar_n(const cv::Vec3d& tstar, const cv::Vec3d& n, CameraMotion& motion); +}; + +class HomographyDecompInria : public HomographyDecomp { + +public: + HomographyDecompInria():HomographyDecomp() {} + virtual ~HomographyDecompInria() {} + +private: + virtual void decompose(std::vector& camMotions); + double oppositeOfMinor(const cv::Matx33d& M, const int row, const int col); + void findRmatFrom_tstar_n(const cv::Vec3d& tstar, const cv::Vec3d& n, const double v, cv::Matx33d& R); +}; + +// normalizes homography with intrinsic camera parameters +Matx33d HomographyDecomp::normalize(const Matx33d& H, const Matx33d& K) +{ + return K.inv() * H * K; +} + +void HomographyDecomp::removeScale() +{ + Mat W; + SVD::compute(_Hnorm, W); + _Hnorm = _Hnorm * (1.0/W.at(1)); +} + +/*! This checks that the input is a pure rotation matrix 'm'. + * The conditions for this are: R' * R = I and det(R) = 1 (proper rotation matrix) + */ +bool HomographyDecomp::isRotationValid(const Matx33d& R, const double epsilon) +{ + Matx33d RtR = R.t() * R; + Matx33d I(1,0,0, 0,1,0, 0,0,1); + if (norm(RtR, I, NORM_INF) > epsilon) + return false; + return (fabs(determinant(R) - 1.0) < epsilon); +} + +bool HomographyDecomp::passesSameSideOfPlaneConstraint(CameraMotion& motion) +{ + typedef Matx Matx11d; + Matx31d t = Matx31d(motion.t); + Matx31d n = Matx31d(motion.n); + Matx11d proj = n.t() * motion.R.t() * t; + if ( (1 + proj(0, 0) ) <= 0 ) + return false; + return true; +} + +//!main routine to decompose homography +void HomographyDecomp::decomposeHomography(const Matx33d& H, const cv::Matx33d& K, + std::vector& camMotions) +{ + //normalize homography matrix with intrinsic camera matrix + _Hnorm = normalize(H, K); + //remove scale of the normalized homography + removeScale(); + //apply decomposition + decompose(camMotions); +} + +/* function computes R&t from tstar, and plane normal(n) using + R = H * inv(I + tstar*transpose(n) ); + t = R * tstar; + returns true if computed R&t is a valid solution + */ +bool HomographyDecompZhang::findMotionFrom_tstar_n(const cv::Vec3d& tstar, const cv::Vec3d& n, CameraMotion& motion) +{ + Matx31d tstar_m = Mat(tstar); + Matx31d n_m = Mat(n); + Matx33d temp = tstar_m * n_m.t(); + temp(0, 0) += 1.0; + temp(1, 1) += 1.0; + temp(2, 2) += 1.0; + motion.R = getHnorm() * temp.inv(); + motion.t = motion.R * tstar; + motion.n = n; + return passesSameSideOfPlaneConstraint(motion); +} + +void HomographyDecompZhang::decompose(std::vector& camMotions) +{ + Mat W, U, Vt; + SVD::compute(getHnorm(), W, U, Vt); + double lambda1=W.at(0); + double lambda3=W.at(2); + double lambda1m3 = (lambda1-lambda3); + double lambda1m3_2 = lambda1m3*lambda1m3; + double lambda1t3 = lambda1*lambda3; + + double t1 = 1.0/(2.0*lambda1t3); + double t2 = sqrtf(1.0+4.0*lambda1t3/lambda1m3_2); + double t12 = t1*t2; + + double e1 = -t1 + t12; //t1*(-1.0f + t2 ); + double e3 = -t1 - t12; //t1*(-1.0f - t2); + double e1_2 = e1*e1; + double e3_2 = e3*e3; + + double nv1p = sqrtf(e1_2*lambda1m3_2 + 2*e1*(lambda1t3-1) + 1.0); + double nv3p = sqrtf(e3_2*lambda1m3_2 + 2*e3*(lambda1t3-1) + 1.0); + double v1p[3], v3p[3]; + + v1p[0]=Vt.at(0)*nv1p, v1p[1]=Vt.at(1)*nv1p, v1p[2]=Vt.at(2)*nv1p; + v3p[0]=Vt.at(6)*nv3p, v3p[1]=Vt.at(7)*nv3p, v3p[2]=Vt.at(8)*nv3p; + + /*The eight solutions are + (A): tstar = +- (v1p - v3p)/(e1 -e3), n = +- (e1*v3p - e3*v1p)/(e1-e3) + (B): tstar = +- (v1p + v3p)/(e1 -e3), n = +- (e1*v3p + e3*v1p)/(e1-e3) + */ + double v1pmv3p[3], v1ppv3p[3]; + double e1v3me3v1[3], e1v3pe3v1[3]; + double inv_e1me3 = 1.0/(e1-e3); + + for(int kk=0;kk<3;++kk){ + v1pmv3p[kk] = v1p[kk]-v3p[kk]; + v1ppv3p[kk] = v1p[kk]+v3p[kk]; + } + + for(int kk=0; kk<3; ++kk){ + double e1v3 = e1*v3p[kk]; + double e3v1=e3*v1p[kk]; + e1v3me3v1[kk] = e1v3-e3v1; + e1v3pe3v1[kk] = e1v3+e3v1; + } + + Vec3d tstar_p, tstar_n; + Vec3d n_p, n_n; + + ///Solution group A + for(int kk=0; kk<3; ++kk) { + tstar_p[kk] = v1pmv3p[kk]*inv_e1me3; + tstar_n[kk] = -tstar_p[kk]; + n_p[kk] = e1v3me3v1[kk]*inv_e1me3; + n_n[kk] = -n_p[kk]; + } + + CameraMotion cmotion; + //(A) Four different combinations for solution A + // (i) (+, +) + if (findMotionFrom_tstar_n(tstar_p, n_p, cmotion)) + camMotions.push_back(cmotion); + + // (ii) (+, -) + if (findMotionFrom_tstar_n(tstar_p, n_n, cmotion)) + camMotions.push_back(cmotion); + + // (iii) (-, +) + if (findMotionFrom_tstar_n(tstar_n, n_p, cmotion)) + camMotions.push_back(cmotion); + + // (iv) (-, -) + if (findMotionFrom_tstar_n(tstar_n, n_n, cmotion)) + camMotions.push_back(cmotion); + ////////////////////////////////////////////////////////////////// + ///Solution group B + for(int kk=0;kk<3;++kk){ + tstar_p[kk] = v1ppv3p[kk]*inv_e1me3; + tstar_n[kk] = -tstar_p[kk]; + n_p[kk] = e1v3pe3v1[kk]*inv_e1me3; + n_n[kk] = -n_p[kk]; + } + + //(B) Four different combinations for solution B + // (i) (+, +) + if (findMotionFrom_tstar_n(tstar_p, n_p, cmotion)) + camMotions.push_back(cmotion); + + // (ii) (+, -) + if (findMotionFrom_tstar_n(tstar_p, n_n, cmotion)) + camMotions.push_back(cmotion); + + // (iii) (-, +) + if (findMotionFrom_tstar_n(tstar_n, n_p, cmotion)) + camMotions.push_back(cmotion); + + // (iv) (-, -) + if (findMotionFrom_tstar_n(tstar_n, n_n, cmotion)) + camMotions.push_back(cmotion); +} + +double HomographyDecompInria::oppositeOfMinor(const Matx33d& M, const int row, const int col) +{ + int x1 = col == 0 ? 1 : 0; + int x2 = col == 2 ? 1 : 2; + int y1 = row == 0 ? 1 : 0; + int y2 = row == 2 ? 1 : 2; + + return (M(y1, x2) * M(y2, x1) - M(y1, x1) * M(y2, x2)); +} + +//computes R = H( I - (2/v)*te_star*ne_t ) +void HomographyDecompInria::findRmatFrom_tstar_n(const cv::Vec3d& tstar, const cv::Vec3d& n, const double v, cv::Matx33d& R) +{ + Matx31d tstar_m = Matx31d(tstar); + Matx31d n_m = Matx31d(n); + Matx33d I(1.0, 0.0, 0.0, + 0.0, 1.0, 0.0, + 0.0, 0.0, 1.0); + + R = getHnorm() * (I - (2/v) * tstar_m * n_m.t() ); +} + +void HomographyDecompInria::decompose(std::vector& camMotions) +{ + const double epsilon = 0.001; + Matx33d S; + + //S = H'H - I + S = getHnorm().t() * getHnorm(); + S(0, 0) -= 1.0; + S(1, 1) -= 1.0; + S(2, 2) -= 1.0; + + //check if H is rotation matrix + if( norm(S, NORM_INF) < epsilon) { + CameraMotion motion; + motion.R = Matx33d(getHnorm()); + motion.t = Vec3d(0, 0, 0); + motion.n = Vec3d(0, 0, 0); + camMotions.push_back(motion); + return; + } + + //! Compute nvectors + Vec3d npa, npb; + + double M00 = oppositeOfMinor(S, 0, 0); + double M11 = oppositeOfMinor(S, 1, 1); + double M22 = oppositeOfMinor(S, 2, 2); + + double rtM00 = sqrt(M00); + double rtM11 = sqrt(M11); + double rtM22 = sqrt(M22); + + double M01 = oppositeOfMinor(S, 0, 1); + double M12 = oppositeOfMinor(S, 1, 2); + double M02 = oppositeOfMinor(S, 0, 2); + + int e12 = signd(M12); + int e02 = signd(M02); + int e01 = signd(M01); + + double nS00 = abs(S(0, 0)); + double nS11 = abs(S(1, 1)); + double nS22 = abs(S(2, 2)); + + //find max( |Sii| ), i=0, 1, 2 + int indx = 0; + if(nS00 < nS11){ + indx = 1; + if( nS11 < nS22 ) + indx = 2; + } + else { + if(nS00 < nS22 ) + indx = 2; + } + + switch (indx) { + case 0: + npa[0] = S(0, 0), npb[0] = S(0, 0); + npa[1] = S(0, 1) + rtM22, npb[1] = S(0, 1) - rtM22; + npa[2] = S(0, 2) + e12 * rtM11, npb[2] = S(0, 2) - e12 * rtM11; + break; + case 1: + npa[0] = S(0, 1) + rtM22, npb[0] = S(0, 1) - rtM22; + npa[1] = S(1, 1), npb[1] = S(1, 1); + npa[2] = S(1, 2) - e02 * rtM00, npb[2] = S(1, 2) + e02 * rtM00; + break; + case 2: + npa[0] = S(0, 2) + e01 * rtM11, npb[0] = S(0, 2) - e01 * rtM11; + npa[1] = S(1, 2) + rtM00, npb[1] = S(1, 2) - rtM00; + npa[2] = S(2, 2), npb[2] = S(2, 2); + break; + default: + break; + } + + double traceS = S(0, 0) + S(1, 1) + S(2, 2); + double v = 2.0 * sqrtf(1 + traceS - M00 - M11 - M22); + + double ESii = signd(S(indx, indx)) ; + double r_2 = 2 + traceS + v; + double nt_2 = 2 + traceS - v; + + double r = sqrt(r_2); + double n_t = sqrt(nt_2); + + Vec3d na = npa / norm(npa); + Vec3d nb = npb / norm(npb); + + double half_nt = 0.5 * n_t; + double esii_t_r = ESii * r; + + Vec3d ta_star = half_nt * (esii_t_r * nb - n_t * na); + Vec3d tb_star = half_nt * (esii_t_r * na - n_t * nb); + + camMotions.resize(4); + + Matx33d Ra, Rb; + Vec3d ta, tb; + + //Ra, ta, na + findRmatFrom_tstar_n(ta_star, na, v, Ra); + ta = Ra * ta_star; + + camMotions[0].R = Ra; + camMotions[0].t = ta; + camMotions[0].n = na; + + //Ra, -ta, -na + camMotions[1].R = Ra; + camMotions[1].t = -ta; + camMotions[1].n = -na; + + //Rb, tb, nb + findRmatFrom_tstar_n(tb_star, nb, v, Rb); + tb = Rb * tb_star; + + camMotions[2].R = Rb; + camMotions[2].t = tb; + camMotions[2].n = nb; + + //Rb, -tb, -nb + camMotions[3].R = Rb; + camMotions[3].t = -tb; + camMotions[3].n = -nb; +} + +} //namespace HomographyDecomposition + +int decomposeHomographyMat(InputArray _H, + InputArray _K, + OutputArrayOfArrays _rotations, + OutputArrayOfArrays _translations, + OutputArrayOfArrays _normals) +{ + using namespace std; + using namespace HomographyDecomposition; + + Mat H = _H.getMat().reshape(1, 3); + CV_Assert(H.cols == 3 && H.rows == 3); + + Mat K = _K.getMat().reshape(1, 3); + CV_Assert(K.cols == 3 && K.rows == 3); + + auto_ptr hdecomp(new HomographyDecompInria); + + vector motions; + hdecomp->decomposeHomography(H, K, motions); + + int nsols = static_cast(motions.size()); + int depth = CV_64F; //double precision matrices used in CameraMotion struct + + if (_rotations.needed()) { + _rotations.create(nsols, 1, depth); + for (int k = 0; k < nsols; ++k ) { + _rotations.getMatRef(k) = Mat(motions[k].R); + } + } + + if (_translations.needed()) { + _translations.create(nsols, 1, depth); + for (int k = 0; k < nsols; ++k ) { + _translations.getMatRef(k) = Mat(motions[k].t); + } + } + + if (_normals.needed()) { + _normals.create(nsols, 1, depth); + for (int k = 0; k < nsols; ++k ) { + _normals.getMatRef(k) = Mat(motions[k].n); + } + } + + return nsols; +} + +} //namespace cv diff --git a/modules/calib3d/test/test_homography_decomp.cpp b/modules/calib3d/test/test_homography_decomp.cpp new file mode 100644 index 0000000000..dbe62c0c83 --- /dev/null +++ b/modules/calib3d/test/test_homography_decomp.cpp @@ -0,0 +1,138 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// + // + // This is a test file for the function decomposeHomography contributed to OpenCV + // by Samson Yilma. + // + // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. + // + // By downloading, copying, installing or using the software you agree to this license. + // If you do not agree to this license, do not download, install, + // copy or use the software. + // + // + // License Agreement + // For Open Source Computer Vision Library + // + // Copyright (C) 2014, Samson Yilma¸ (samson_yilma@yahoo.com), all rights reserved. + // + // Third party copyrights are property of their respective owners. + // + // Redistribution and use in source and binary forms, with or without modification, + // are permitted provided that the following conditions are met: + // + // * Redistribution's of source code must retain the above copyright notice, + // this list of conditions and the following disclaimer. + // + // * Redistribution's in binary form must reproduce the above copyright notice, + // this list of conditions and the following disclaimer in the documentation + // and/or other materials provided with the distribution. + // + // * The name of the copyright holders may not be used to endorse or promote products + // derived from this software without specific prior written permission. + // + // This software is provided by the copyright holders and contributors "as is" and + // any express or implied warranties, including, but not limited to, the implied + // warranties of merchantability and fitness for a particular purpose are disclaimed. + // In no event shall the Intel Corporation or contributors be liable for any direct, + // indirect, incidental, special, exemplary, or consequential damages + // (including, but not limited to, procurement of substitute goods or services; + // loss of use, data, or profits; or business interruption) however caused + // and on any theory of liability, whether in contract, strict liability, + // or tort (including negligence or otherwise) arising in any way out of + // the use of this software, even if advised of the possibility of such damage. + // + //M*/ + +#include "test_precomp.hpp" +#include "opencv2/calib3d.hpp" +#include + +using namespace cv; +using namespace std; + +class CV_HomographyDecompTest: public cvtest::BaseTest { + +public: + CV_HomographyDecompTest() + { + buildTestDataSet(); + } + +protected: + void run(int) + { + vector rotations; + vector translations; + vector normals; + + decomposeHomographyMat(_H, _K, rotations, translations, normals); + + //there should be at least 1 solution + ASSERT_GT(rotations.size(), 0); + ASSERT_GT(translations.size(), 0); + ASSERT_GT(normals.size(), 0); + + ASSERT_EQ(rotations.size(), normals.size()); + ASSERT_EQ(translations.size(), normals.size()); + + ASSERT_TRUE(containsValidMotion(rotations, translations, normals)); + + decomposeHomographyMat(_H, _K, rotations, noArray(), noArray()); + ASSERT_GT(rotations.size(), 0); + } + +private: + + void buildTestDataSet() + { + _K = Matx33d(640, 0.0, 320, + 0, 640, 240, + 0, 0, 1); + + _H = Matx33d(2.649157564634028, 4.583875997496426, 70.694447785121326, + -1.072756858861583, 3.533262150437228, 1513.656999614321649, + 0.001303887589576, 0.003042206876298, 1.000000000000000 + ); + + //expected solution for the given homography and intrinsic matrices + _R = Matx33d(0.43307983549125, 0.545749113549648, -0.717356090899523, + -0.85630229674426, 0.497582023798831, -0.138414255706431, + 0.281404038139784, 0.67421809131173, 0.682818960388909); + + _t = Vec3d(1.826751712278038, 1.264718492450820, 0.195080809998819); + _n = Vec3d(0.244875830334816, 0.480857890778889, 0.841909446789566); + } + + bool containsValidMotion(std::vector& rotations, + std::vector& translations, + std::vector& normals + ) + { + double max_error = 1.0e-3; + + vector::iterator riter = rotations.begin(); + vector::iterator titer = translations.begin(); + vector::iterator niter = normals.begin(); + + for (; + riter != rotations.end() && titer != translations.end() && niter != normals.end(); + ++riter, ++titer, ++niter) { + + double rdist = norm(*riter, _R, NORM_INF); + double tdist = norm(*titer, _t, NORM_INF); + double ndist = norm(*niter, _n, NORM_INF); + + if ( rdist < max_error + && tdist < max_error + && ndist < max_error ) + return true; + } + + return false; + } + + Matx33d _R, _K, _H; + Vec3d _t, _n; +}; + +TEST(Calib3d_DecomposeHomography, regression) { CV_HomographyDecompTest test; test.safe_run(); } From de55126b69affe81c25a368a4c111cf3f56ce4a6 Mon Sep 17 00:00:00 2001 From: Samson Yilma Date: Sun, 27 Apr 2014 13:02:36 -0400 Subject: [PATCH 006/189] Fixed warnings and parameter name mismatches, added #include needed in some platforms. --- modules/calib3d/include/opencv2/calib3d.hpp | 10 +++++----- modules/calib3d/src/homography_decomp.cpp | 9 +++++---- modules/calib3d/test/test_homography_decomp.cpp | 8 ++++---- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/modules/calib3d/include/opencv2/calib3d.hpp b/modules/calib3d/include/opencv2/calib3d.hpp index fd6ef8ceed..b18c00f8d2 100644 --- a/modules/calib3d/include/opencv2/calib3d.hpp +++ b/modules/calib3d/include/opencv2/calib3d.hpp @@ -314,11 +314,11 @@ CV_EXPORTS_W int estimateAffine3D(InputArray src, InputArray dst, double ransacThreshold = 3, double confidence = 0.99); -CV_EXPORTS_W int decomposeHomographyMat(InputArray _H, - InputArray _K, - OutputArrayOfArrays _rotations, - OutputArrayOfArrays _translations, - OutputArrayOfArrays _normals); +CV_EXPORTS_W int decomposeHomographyMat(InputArray H, + InputArray K, + OutputArrayOfArrays rotations, + OutputArrayOfArrays translations, + OutputArrayOfArrays normals); class CV_EXPORTS_W StereoMatcher : public Algorithm { diff --git a/modules/calib3d/src/homography_decomp.cpp b/modules/calib3d/src/homography_decomp.cpp index 8323453cda..7a5c31b43c 100644 --- a/modules/calib3d/src/homography_decomp.cpp +++ b/modules/calib3d/src/homography_decomp.cpp @@ -47,6 +47,7 @@ //M*/ #include "precomp.hpp" +#include namespace cv { @@ -189,7 +190,7 @@ void HomographyDecompZhang::decompose(std::vector& camMotions) double lambda1t3 = lambda1*lambda3; double t1 = 1.0/(2.0*lambda1t3); - double t2 = sqrtf(1.0+4.0*lambda1t3/lambda1m3_2); + double t2 = sqrt(1.0+4.0*lambda1t3/lambda1m3_2); double t12 = t1*t2; double e1 = -t1 + t12; //t1*(-1.0f + t2 ); @@ -197,8 +198,8 @@ void HomographyDecompZhang::decompose(std::vector& camMotions) double e1_2 = e1*e1; double e3_2 = e3*e3; - double nv1p = sqrtf(e1_2*lambda1m3_2 + 2*e1*(lambda1t3-1) + 1.0); - double nv3p = sqrtf(e3_2*lambda1m3_2 + 2*e3*(lambda1t3-1) + 1.0); + double nv1p = sqrt(e1_2*lambda1m3_2 + 2*e1*(lambda1t3-1) + 1.0); + double nv3p = sqrt(e3_2*lambda1m3_2 + 2*e3*(lambda1t3-1) + 1.0); double v1p[3], v3p[3]; v1p[0]=Vt.at(0)*nv1p, v1p[1]=Vt.at(1)*nv1p, v1p[2]=Vt.at(2)*nv1p; @@ -378,7 +379,7 @@ void HomographyDecompInria::decompose(std::vector& camMotions) } double traceS = S(0, 0) + S(1, 1) + S(2, 2); - double v = 2.0 * sqrtf(1 + traceS - M00 - M11 - M22); + double v = 2.0 * sqrt(1 + traceS - M00 - M11 - M22); double ESii = signd(S(indx, indx)) ; double r_2 = 2 + traceS + v; diff --git a/modules/calib3d/test/test_homography_decomp.cpp b/modules/calib3d/test/test_homography_decomp.cpp index dbe62c0c83..7e1c8ea503 100644 --- a/modules/calib3d/test/test_homography_decomp.cpp +++ b/modules/calib3d/test/test_homography_decomp.cpp @@ -68,9 +68,9 @@ protected: decomposeHomographyMat(_H, _K, rotations, translations, normals); //there should be at least 1 solution - ASSERT_GT(rotations.size(), 0); - ASSERT_GT(translations.size(), 0); - ASSERT_GT(normals.size(), 0); + ASSERT_GT(static_cast(rotations.size()), 0); + ASSERT_GT(static_cast(translations.size()), 0); + ASSERT_GT(static_cast(normals.size()), 0); ASSERT_EQ(rotations.size(), normals.size()); ASSERT_EQ(translations.size(), normals.size()); @@ -78,7 +78,7 @@ protected: ASSERT_TRUE(containsValidMotion(rotations, translations, normals)); decomposeHomographyMat(_H, _K, rotations, noArray(), noArray()); - ASSERT_GT(rotations.size(), 0); + ASSERT_GT(static_cast(rotations.size()), 0); } private: From 05ee15f10881265f1e930cc65a83951844f7828a Mon Sep 17 00:00:00 2001 From: Ilya Krylov Date: Mon, 28 Apr 2014 12:01:27 +0400 Subject: [PATCH 007/189] Added FisheyeTest --- modules/calib3d/test/test_fisheye.cpp | 329 ++++++++++++++------------ 1 file changed, 173 insertions(+), 156 deletions(-) diff --git a/modules/calib3d/test/test_fisheye.cpp b/modules/calib3d/test/test_fisheye.cpp index b2f47987cb..e7d4b311c7 100644 --- a/modules/calib3d/test/test_fisheye.cpp +++ b/modules/calib3d/test/test_fisheye.cpp @@ -2,138 +2,49 @@ #include #include -#define DEF_PARAM_TEST(name, ...) typedef ::perf::TestBaseWithParam< std::tr1::tuple< __VA_ARGS__ > > name -#define PARAM_TEST_CASE(name, ...) struct name : testing::TestWithParam< std::tr1::tuple< __VA_ARGS__ > > - -/// Change this parameter via CMake: cmake -DDATASETS_REPOSITORY_FOLDER= -//const static std::string datasets_repository_path = "DATASETS_REPOSITORY_FOLDER"; -const static std::string datasets_repository_path = "/home/krylov/data"; - -namespace FishEye -{ - const static cv::Size imageSize(1280, 800); - - const static cv::Matx33d K(558.478087865323, 0, 620.458515360843, - 0, 560.506767351568, 381.939424848348, - 0, 0, 1); - - const static cv::Vec4d D(-0.0014613319981768, -0.00329861110580401, 0.00605760088590183, -0.00374209380722371); - - const static cv::Matx33d R ( 9.9756700084424932e-01, 6.9698277640183867e-02, 1.4929569991321144e-03, - -6.9711825162322980e-02, 9.9748249845531767e-01, 1.2997180766418455e-02, - -5.8331736398316541e-04,-1.3069635393884985e-02, 9.9991441852366736e-01); - - const static cv::Vec3d T(-9.9217369356044638e-02, 3.1741831972356663e-03, 1.8551007952921010e-04); -} - -namespace{ -std::string combine(const std::string& _item1, const std::string& _item2) -{ - std::string item1 = _item1, item2 = _item2; - std::replace(item1.begin(), item1.end(), '\\', '/'); - std::replace(item2.begin(), item2.end(), '\\', '/'); - - if (item1.empty()) - return item2; - - if (item2.empty()) - return item1; - - char last = item1[item1.size()-1]; - return item1 + (last != '/' ? "/" : "") + item2; -} - -std::string combine_format(const std::string& item1, const std::string& item2, ...) -{ - std::string fmt = combine(item1, item2); - char buffer[1 << 16]; - va_list args; - va_start( args, item2 ); - vsprintf( buffer, fmt.c_str(), args ); - va_end( args ); - return std::string(buffer); -} - -void readPoins(std::vector >& objectPoints, - std::vector >& imagePoints, - const std::string& path, const int n_images, const int n_points) -{ - objectPoints.resize(n_images); - imagePoints.resize(n_images); - - std::vector image(n_points); - std::vector object(n_points); - - std::ifstream ipStream; - std::ifstream opStream; - - for (int image_idx = 0; image_idx < n_images; image_idx++) - { - std::stringstream ss; - ss << image_idx; - std::string idxStr = ss.str(); - - ipStream.open(combine(path, std::string(std::string("x_") + idxStr + std::string(".csv"))).c_str(), std::ifstream::in); - opStream.open(combine(path, std::string(std::string("X_") + idxStr + std::string(".csv"))).c_str(), std::ifstream::in); - CV_Assert(ipStream.is_open() && opStream.is_open()); - - for (int point_idx = 0; point_idx < n_points; point_idx++) - { - double x, y, z; - char delim; - ipStream >> x >> delim >> y; - image[point_idx] = cv::Point2d(x, y); - opStream >> x >> delim >> y >> delim >> z; - object[point_idx] = cv::Point3d(x, y, z); - } - ipStream.close(); - opStream.close(); - - imagePoints[image_idx] = image; - objectPoints[image_idx] = object; +class FisheyeTest : public ::testing::Test { + +protected: + const static cv::Size imageSize; + const static cv::Matx33d K; + const static cv::Vec4d D; + const static cv::Matx33d R; + const static cv::Vec3d T; + std::string datasets_repository_path; + + virtual void SetUp() { + datasets_repository_path = combine(cvtest::TS::ptr()->get_data_path(), "cameracalibration/fisheye"); } -} -void readExtrinsics(const std::string& file, cv::OutputArray _R, cv::OutputArray _T, cv::OutputArray _R1, cv::OutputArray _R2, - cv::OutputArray _P1, cv::OutputArray _P2, cv::OutputArray _Q) -{ - cv::FileStorage fs(file, cv::FileStorage::READ); - CV_Assert(fs.isOpened()); +protected: + std::string combine(const std::string& _item1, const std::string& _item2); - cv::Mat R, T, R1, R2, P1, P2, Q; - fs["R"] >> R; fs["T"] >> T; fs["R1"] >> R1; fs["R2"] >> R2; fs["P1"] >> P1; fs["P2"] >> P2; fs["Q"] >> Q; - if (_R.needed()) R.copyTo(_R); if(_T.needed()) T.copyTo(_T); if (_R1.needed()) R1.copyTo(_R1); if (_R2.needed()) R2.copyTo(_R2); - if(_P1.needed()) P1.copyTo(_P1); if(_P2.needed()) P2.copyTo(_P2); if(_Q.needed()) Q.copyTo(_Q); -} + std::string combine_format(const std::string& item1, const std::string& item2, ...); -cv::Mat mergeRectification(const cv::Mat& l, const cv::Mat& r) -{ - CV_Assert(l.type() == r.type() && l.size() == r.size()); - cv::Mat merged(l.rows, l.cols * 2, l.type()); - cv::Mat lpart = merged.colRange(0, l.cols); - cv::Mat rpart = merged.colRange(l.cols, merged.cols); - l.copyTo(lpart); - r.copyTo(rpart); + void readPoins(std::vector >& objectPoints, + std::vector >& imagePoints, + const std::string& path, const int n_images, const int n_points); - for(int i = 0; i < l.rows; i+=20) - cv::line(merged, cv::Point(0, i), cv::Point(merged.cols, i), CV_RGB(0, 255, 0)); + void readExtrinsics(const std::string& file, cv::OutputArray _R, cv::OutputArray _T, cv::OutputArray _R1, cv::OutputArray _R2, + cv::OutputArray _P1, cv::OutputArray _P2, cv::OutputArray _Q); - return merged; -} + cv::Mat mergeRectification(const cv::Mat& l, const cv::Mat& r); +}; -} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// TESTS:: -TEST(FisheyeTest, projectPoints) +TEST_F(FisheyeTest, projectPoints) { - double cols = FishEye::imageSize.width, - rows = FishEye::imageSize.height; + double cols = this->imageSize.width, + rows = this->imageSize.height; const int N = 20; cv::Mat distorted0(1, N*N, CV_64FC2), undist1, undist2, distorted1, distorted2; undist2.create(distorted0.size(), CV_MAKETYPE(distorted0.depth(), 3)); cv::Vec2d* pts = distorted0.ptr(); - cv::Vec2d c(FishEye::K(0, 2), FishEye::K(1, 2)); + cv::Vec2d c(this->K(0, 2), this->K(1, 2)); for(int y = 0, k = 0; y < N; ++y) for(int x = 0; x < N; ++x) { @@ -141,29 +52,27 @@ TEST(FisheyeTest, projectPoints) pts[k++] = (point - c) * 0.85 + c; } - cv::Fisheye::undistortPoints(distorted0, undist1, FishEye::K, FishEye::D); + cv::Fisheye::undistortPoints(distorted0, undist1, this->K, this->D); cv::Vec2d* u1 = undist1.ptr(); cv::Vec3d* u2 = undist2.ptr(); for(int i = 0; i < (int)distorted0.total(); ++i) u2[i] = cv::Vec3d(u1[i][0], u1[i][1], 1.0); - cv::Fisheye::distortPoints(undist1, distorted1, FishEye::K, FishEye::D); - cv::Fisheye::projectPoints(undist2, distorted2, cv::Vec3d::all(0), cv::Vec3d::all(0), FishEye::K, FishEye::D); + cv::Fisheye::distortPoints(undist1, distorted1, this->K, this->D); + cv::Fisheye::projectPoints(undist2, distorted2, cv::Vec3d::all(0), cv::Vec3d::all(0), this->K, this->D); - EXPECT_MAT_NEAR(distorted0, distorted1, 1e-5); - EXPECT_MAT_NEAR(distorted0, distorted2, 1e-5); + EXPECT_MAT_NEAR(distorted0, distorted1, 1e-10); + EXPECT_MAT_NEAR(distorted0, distorted2, 1e-10); } -TEST(FisheyeTest, undistortImage) +TEST_F(FisheyeTest, undistortImage) { - cv::Matx33d K = FishEye::K; - cv::Mat D = cv::Mat(FishEye::D); + cv::Matx33d K = this->K; + cv::Mat D = cv::Mat(this->D); std::string file = combine(datasets_repository_path, "image000001.png"); - cv::Matx33d newK = K; cv::Mat distorted = cv::imread(file), undistorted; - { newK(0, 0) = 100; newK(1, 1) = 100; @@ -172,7 +81,7 @@ TEST(FisheyeTest, undistortImage) if (correct.empty()) CV_Assert(cv::imwrite(combine(datasets_repository_path, "test_undistortImage/new_f_100.png"), undistorted)); else - EXPECT_MAT_NEAR(correct, undistorted, 1e-15); + EXPECT_MAT_NEAR(correct, undistorted, 1e-10); } { double balance = 1.0; @@ -182,7 +91,7 @@ TEST(FisheyeTest, undistortImage) if (correct.empty()) CV_Assert(cv::imwrite(combine(datasets_repository_path, "test_undistortImage/balance_1.0.png"), undistorted)); else - EXPECT_MAT_NEAR(correct, undistorted, 1e-15); + EXPECT_MAT_NEAR(correct, undistorted, 1e-10); } { @@ -193,13 +102,13 @@ TEST(FisheyeTest, undistortImage) if (correct.empty()) CV_Assert(cv::imwrite(combine(datasets_repository_path, "test_undistortImage/balance_0.0.png"), undistorted)); else - EXPECT_MAT_NEAR(correct, undistorted, 1e-15); + EXPECT_MAT_NEAR(correct, undistorted, 1e-10); } cv::waitKey(); } -TEST(FisheyeTest, jacobians) +TEST_F(FisheyeTest, jacobians) { int n = 10; cv::Mat X(1, n, CV_64FC3); @@ -245,7 +154,7 @@ TEST(FisheyeTest, jacobians) cv::Mat T2 = T + dT; cv::Fisheye::projectPoints(X, x2, om, T2, K, k, alpha, cv::noArray()); xpred = x1 + cv::Mat(jacobians.colRange(11,14) * dT).reshape(2, 1); - CV_Assert (cv::norm(x2 - xpred) < 1e-12); + CV_Assert (cv::norm(x2 - xpred) < 1e-10); //test on om: cv::Mat dom(3, 1, CV_64FC1); @@ -254,7 +163,7 @@ TEST(FisheyeTest, jacobians) cv::Mat om2 = om + dom; cv::Fisheye::projectPoints(X, x2, om2, T, K, k, alpha, cv::noArray()); xpred = x1 + cv::Mat(jacobians.colRange(8,11) * dom).reshape(2, 1); - CV_Assert (cv::norm(x2 - xpred) < 1e-12); + CV_Assert (cv::norm(x2 - xpred) < 1e-10); //test on f: cv::Mat df(2, 1, CV_64FC1); @@ -263,7 +172,7 @@ TEST(FisheyeTest, jacobians) cv::Matx33d K2 = K + cv::Matx33d(df.at(0), df.at(0) * alpha, 0, 0, df.at(1), 0, 0, 0, 0); cv::Fisheye::projectPoints(X, x2, om, T, K2, k, alpha, cv::noArray()); xpred = x1 + cv::Mat(jacobians.colRange(0,2) * df).reshape(2, 1); - CV_Assert (cv::norm(x2 - xpred) < 1e-12); + CV_Assert (cv::norm(x2 - xpred) < 1e-10); //test on c: cv::Mat dc(2, 1, CV_64FC1); @@ -272,7 +181,7 @@ TEST(FisheyeTest, jacobians) K2 = K + cv::Matx33d(0, 0, dc.at(0), 0, 0, dc.at(1), 0, 0, 0); cv::Fisheye::projectPoints(X, x2, om, T, K2, k, alpha, cv::noArray()); xpred = x1 + cv::Mat(jacobians.colRange(2,4) * dc).reshape(2, 1); - CV_Assert (cv::norm(x2 - xpred) < 1e-12); + CV_Assert (cv::norm(x2 - xpred) < 1e-10); //test on k: cv::Mat dk(4, 1, CV_64FC1); @@ -281,7 +190,7 @@ TEST(FisheyeTest, jacobians) cv::Mat k2 = k + dk; cv::Fisheye::projectPoints(X, x2, om, T, K, k2, alpha, cv::noArray()); xpred = x1 + cv::Mat(jacobians.colRange(4,8) * dk).reshape(2, 1); - CV_Assert (cv::norm(x2 - xpred) < 1e-12); + CV_Assert (cv::norm(x2 - xpred) < 1e-10); //test on alpha: cv::Mat dalpha(1, 1, CV_64FC1); @@ -291,10 +200,10 @@ TEST(FisheyeTest, jacobians) K2 = K + cv::Matx33d(0, f.at(0) * dalpha.at(0), 0, 0, 0, 0, 0, 0, 0); cv::Fisheye::projectPoints(X, x2, om, T, K, k, alpha2, cv::noArray()); xpred = x1 + cv::Mat(jacobians.col(14) * dalpha).reshape(2, 1); - CV_Assert (cv::norm(x2 - xpred) < 1e-12); + CV_Assert (cv::norm(x2 - xpred) < 1e-10); } -TEST(FisheyeTest, Calibration) +TEST_F(FisheyeTest, Calibration) { const int n_images = 34; const int n_points = 48; @@ -316,11 +225,11 @@ TEST(FisheyeTest, Calibration) cv::Fisheye::calibrate(objectPoints, imagePoints, imageSize, K, D, cv::noArray(), cv::noArray(), flag, cv::TermCriteria(3, 20, 1e-6)); - EXPECT_MAT_NEAR(K, FishEye::K, 1e-11); - EXPECT_MAT_NEAR(D, FishEye::D, 1e-12); + EXPECT_MAT_NEAR(K, this->K, 1e-10); + EXPECT_MAT_NEAR(D, this->D, 1e-10); } -TEST(FisheyeTest, Homography) +TEST_F(FisheyeTest, Homography) { const int n_images = 1; const int n_points = 48; @@ -368,10 +277,10 @@ TEST(FisheyeTest, Homography) std_err *= sqrt((double)merr.reshape(2).total() / (merr.reshape(2).total() - 1)); cv::Vec2d correct_std_err(0.00516740156010384, 0.00644205331553901); - EXPECT_MAT_NEAR(std_err, correct_std_err, 1e-16); + EXPECT_MAT_NEAR(std_err, correct_std_err, 1e-12); } -TEST(TestFisheye, EtimateUncertainties) +TEST_F(FisheyeTest, EtimateUncertainties) { const int n_images = 34; const int n_points = 48; @@ -393,7 +302,7 @@ TEST(TestFisheye, EtimateUncertainties) std::vector tvec; cv::Fisheye::calibrate(objectPoints, imagePoints, imageSize, K, D, - cv::noArray(), cv::noArray(), flag, cv::TermCriteria(3, 20, 1e-6)); + rvec, tvec, flag, cv::TermCriteria(3, 20, 1e-6)); cv::internal::IntrinsicParams param, errors; cv::Vec2d err_std; @@ -410,24 +319,24 @@ TEST(TestFisheye, EtimateUncertainties) cv::internal::EstimateUncertainties(objectPoints, imagePoints, param, rvec, tvec, errors, err_std, thresh_cond, check_cond, rms); - EXPECT_MAT_NEAR(errors.f, cv::Vec2d(1.29837104202046, 1.31565641071524), 1e-14); - EXPECT_MAT_NEAR(errors.c, cv::Vec2d(0.890439368129246, 0.816096854937896), 1e-15); - EXPECT_MAT_NEAR(errors.k, cv::Vec4d(0.00516248605191506, 0.0168181467500934, 0.0213118690274604, 0.00916010877545648), 1e-15); - EXPECT_MAT_NEAR(err_std, cv::Vec2d(0.187475975266883, 0.185678953263995), 1e-15); - CV_Assert(abs(rms - 0.263782587133546) < 1e-15); + EXPECT_MAT_NEAR(errors.f, cv::Vec2d(1.29837104202046, 1.31565641071524), 1e-10); + EXPECT_MAT_NEAR(errors.c, cv::Vec2d(0.890439368129246, 0.816096854937896), 1e-10); + EXPECT_MAT_NEAR(errors.k, cv::Vec4d(0.00516248605191506, 0.0168181467500934, 0.0213118690274604, 0.00916010877545648), 1e-10); + EXPECT_MAT_NEAR(err_std, cv::Vec2d(0.187475975266883, 0.185678953263995), 1e-10); + CV_Assert(abs(rms - 0.263782587133546) < 1e-10); CV_Assert(errors.alpha == 0); } -TEST(FisheyeTest, rectify) +TEST_F(FisheyeTest, rectify) { const std::string folder =combine(datasets_repository_path, "calib-3_stereo_from_JY"); - cv::Size calibration_size = FishEye::imageSize, requested_size = calibration_size; - cv::Matx33d K1 = FishEye::K, K2 = K1; - cv::Mat D1 = cv::Mat(FishEye::D), D2 = D1; + cv::Size calibration_size = this->imageSize, requested_size = calibration_size; + cv::Matx33d K1 = this->K, K2 = K1; + cv::Mat D1 = cv::Mat(this->D), D2 = D1; - cv::Vec3d T = FishEye::T; - cv::Matx33d R = FishEye::R; + cv::Vec3d T = this->T; + cv::Matx33d R = this->R; double balance = 0.0, fov_scale = 1.1; cv::Mat R1, R2, P1, P2, Q; @@ -462,11 +371,119 @@ TEST(FisheyeTest, rectify) if (correct.empty()) cv::imwrite(combine_format(folder, "test_rectify/rectification_AB_%03d.png", i), rectification); else - EXPECT_MAT_NEAR(correct, rectification, 1e-15); + EXPECT_MAT_NEAR(correct, rectification, 1e-10); } } +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// FisheyeTest:: + +const cv::Size FisheyeTest::imageSize(1280, 800); + +const cv::Matx33d FisheyeTest::K(558.478087865323, 0, 620.458515360843, + 0, 560.506767351568, 381.939424848348, + 0, 0, 1); + +const cv::Vec4d FisheyeTest::D(-0.0014613319981768, -0.00329861110580401, 0.00605760088590183, -0.00374209380722371); + +const cv::Matx33d FisheyeTest::R ( 9.9756700084424932e-01, 6.9698277640183867e-02, 1.4929569991321144e-03, + -6.9711825162322980e-02, 9.9748249845531767e-01, 1.2997180766418455e-02, + -5.8331736398316541e-04,-1.3069635393884985e-02, 9.9991441852366736e-01); + +const cv::Vec3d FisheyeTest::T(-9.9217369356044638e-02, 3.1741831972356663e-03, 1.8551007952921010e-04); + + +std::string FisheyeTest::combine(const std::string& _item1, const std::string& _item2) +{ + std::string item1 = _item1, item2 = _item2; + std::replace(item1.begin(), item1.end(), '\\', '/'); + std::replace(item2.begin(), item2.end(), '\\', '/'); + + if (item1.empty()) + return item2; + if (item2.empty()) + return item1; + char last = item1[item1.size()-1]; + return item1 + (last != '/' ? "/" : "") + item2; +} +std::string FisheyeTest::combine_format(const std::string& item1, const std::string& item2, ...) +{ + std::string fmt = combine(item1, item2); + char buffer[1 << 16]; + va_list args; + va_start( args, item2 ); + vsprintf( buffer, fmt.c_str(), args ); + va_end( args ); + return std::string(buffer); +} + +void FisheyeTest::readPoins(std::vector >& objectPoints, + std::vector >& imagePoints, + const std::string& path, const int n_images, const int n_points) +{ + objectPoints.resize(n_images); + imagePoints.resize(n_images); + + std::vector image(n_points); + std::vector object(n_points); + + std::ifstream ipStream; + std::ifstream opStream; + + for (int image_idx = 0; image_idx < n_images; image_idx++) + { + std::stringstream ss; + ss << image_idx; + std::string idxStr = ss.str(); + + ipStream.open(combine(path, std::string(std::string("x_") + idxStr + std::string(".csv"))).c_str(), std::ifstream::in); + opStream.open(combine(path, std::string(std::string("X_") + idxStr + std::string(".csv"))).c_str(), std::ifstream::in); + CV_Assert(ipStream.is_open() && opStream.is_open()); + + for (int point_idx = 0; point_idx < n_points; point_idx++) + { + double x, y, z; + char delim; + ipStream >> x >> delim >> y; + image[point_idx] = cv::Point2d(x, y); + opStream >> x >> delim >> y >> delim >> z; + object[point_idx] = cv::Point3d(x, y, z); + } + ipStream.close(); + opStream.close(); + + imagePoints[image_idx] = image; + objectPoints[image_idx] = object; + } +} + +void FisheyeTest::readExtrinsics(const std::string& file, cv::OutputArray _R, cv::OutputArray _T, cv::OutputArray _R1, cv::OutputArray _R2, + cv::OutputArray _P1, cv::OutputArray _P2, cv::OutputArray _Q) +{ + cv::FileStorage fs(file, cv::FileStorage::READ); + CV_Assert(fs.isOpened()); + + cv::Mat R, T, R1, R2, P1, P2, Q; + fs["R"] >> R; fs["T"] >> T; fs["R1"] >> R1; fs["R2"] >> R2; fs["P1"] >> P1; fs["P2"] >> P2; fs["Q"] >> Q; + if (_R.needed()) R.copyTo(_R); if(_T.needed()) T.copyTo(_T); if (_R1.needed()) R1.copyTo(_R1); if (_R2.needed()) R2.copyTo(_R2); + if(_P1.needed()) P1.copyTo(_P1); if(_P2.needed()) P2.copyTo(_P2); if(_Q.needed()) Q.copyTo(_Q); +} + +cv::Mat FisheyeTest::mergeRectification(const cv::Mat& l, const cv::Mat& r) +{ + CV_Assert(l.type() == r.type() && l.size() == r.size()); + cv::Mat merged(l.rows, l.cols * 2, l.type()); + cv::Mat lpart = merged.colRange(0, l.cols); + cv::Mat rpart = merged.colRange(l.cols, merged.cols); + l.copyTo(lpart); + r.copyTo(rpart); + + for(int i = 0; i < l.rows; i+=20) + cv::line(merged, cv::Point(0, i), cv::Point(merged.cols, i), CV_RGB(0, 255, 0)); + + return merged; +} From f0f741b796a8c1eaa9217e51d354a31e40b9107a Mon Sep 17 00:00:00 2001 From: Ilya Krylov Date: Mon, 28 Apr 2014 15:27:30 +0400 Subject: [PATCH 008/189] Added documentation --- ...mera_calibration_and_3d_reconstruction.rst | 309 ++++++++++++++++++ .../include/opencv2/calib3d/calib3d.hpp | 2 +- 2 files changed, 310 insertions(+), 1 deletion(-) diff --git a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst index 37159b016b..3d19b72895 100644 --- a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst +++ b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst @@ -1487,6 +1487,315 @@ The function reconstructs 3-dimensional points (in homogeneous coordinates) by u :ocv:func:`reprojectImageTo3D` +Fisheye +---------- + +.. ocv:class:: Fisheye + +The methods in this class use a so-called fisheye camera model. :: + + class Fisheye + { + public: + + //! projects 3D points using fisheye model + static void projectPoints(InputArray objectPoints, OutputArray imagePoints, const Affine3d& affine, + InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()); + + //! projects points using fisheye model + static void projectPoints(InputArray objectPoints, OutputArray imagePoints, InputArray rvec, InputArray tvec, + InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()); + + //! distorts 2D points using fisheye model + static void distortPoints(InputArray undistorted, OutputArray distorted, InputArray K, InputArray D, double alpha = 0); + + //! undistorts 2D points using fisheye model + static void undistortPoints(InputArray distorted, OutputArray undistorted, + InputArray K, InputArray D, InputArray R = noArray(), InputArray P = noArray()); + + //! computing undistortion and rectification maps for image transform by cv::remap() + //! If D is empty zero distortion is used, if R or P is empty identity matrixes are used + static void initUndistortRectifyMap(InputArray K, InputArray D, InputArray R, InputArray P, + const cv::Size& size, int m1type, OutputArray map1, OutputArray map2); + + //! undistorts image, optionally changes resolution and camera matrix. If Knew zero identity matrix is used + static void undistortImage(InputArray distorted, OutputArray undistorted, + InputArray K, InputArray D, InputArray Knew = cv::noArray(), const Size& new_size = Size()); + + //! estimates new camera matrix for undistortion or rectification + static void estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R, + OutputArray P, double balance = 0.0, const Size& new_size = Size(), double fov_scale = 1.0); + + //! stereo rectification for fisheye camera model + static void stereoRectify( InputArray K1, InputArray D1, InputArray K2, InputArray D2, const cv::Size& imageSize, + InputArray rotaion, InputArray tvec, OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, + int flags = cv::CALIB_ZERO_DISPARITY, double alpha = -1, const Size& newImageSize = Size(), Rect* roi1 = 0, Rect* roi2 = 0 ); + + //! performs camera calibaration + static double calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size, + InputOutputArray K, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags = 0, + TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)); + + //! stereo rectification estimation + static void stereoRectify(InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size &imageSize, InputArray R, InputArray tvec, + OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, int flags, const Size &newImageSize = Size(), + double balance = 0.0, double fov_scale = 1.0); + + ... + }; + + +Definitions: +Let P be a point in 3D of coordinates X in the world reference frame (stored in the matrix X) +The coordinate vector of P in the camera reference frame is: + +.. class:: center +.. math:: + + Xc = R X + T + +where R is the rotation matrix corresponding to the rotation vector om: R = rodrigues(om); +call x, y and z the 3 coordinates of Xc: + +.. class:: center +.. math:: + x = Xc_1 \\ + y = Xc_2 \\ + z = Xc_3 + +The pinehole projection coordinates of P is [a; b] where + +.. class:: center +.. math:: + + a = x / z \ and \ b = y / z \\ + r^2 = a^2 + b^2 \\ + \theta = atan(r) + +Fisheye distortion: + +.. class:: center +.. math:: + + \theta_d = \theta (1 + k_1 \theta^2 + k_2 \theta^4 + k_3 \theta^6 + k_4 \theta^8) + +The distorted point coordinates are [x'; y'] where + +.. class:: center +.. math:: + + x' = (\theta_d / r) x \\ + y' = (\theta_d / r) y + +Finally, convertion into pixel coordinates: The final pixel coordinates vector [u; v] where: + +.. class:: center +.. math:: + + u = f_x (x' + \alpha y') + c_x \\ + v = f_y yy + c_y + +Fisheye::projectPoints +--------------------------- +Projects points using fisheye model + +.. ocv:function:: void Fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints, const Affine3d& affine, InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()) + +.. ocv:function:: void Fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints, InputArray rvec, InputArray tvec, + InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()) + + :param objectPoints: Array of object points, 1xN/Nx1 3-channel (or ``vector`` ), where N is the number of points in the view. + + :param rvec: Rotation vector. See :ocv:func:`Rodrigues` for details. + + :param tvec: Translation vector. + + :param K: Camera matrix :math:`K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}` . + + :param D: Input vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)`. + + :param alpha: The skew coefficient. + + :param imagePoints: Output array of image points, 2xN/Nx2 1-channel or 1xN/Nx1 2-channel, or ``vector`` . + + :param jacobian: Optional output 2Nx15 jacobian matrix of derivatives of image points with respect to components of the focal lengths, coordinates of the principal point, distortion coefficients, rotation vector, translation vector, and the skew. In the old interface different components of the jacobian are returned via different output parameters. + +The function computes projections of 3D +points to the image plane given intrinsic and extrinsic camera +parameters. Optionally, the function computes Jacobians - matrices +of partial derivatives of image points coordinates (as functions of all the +input parameters) with respect to the particular parameters, intrinsic and/or +extrinsic. + +Fisheye::distortPoints +------------------------- +Distorts 2D points using fisheye model. + +.. ocv:function:: void Fisheye::distortPoints(InputArray undistorted, OutputArray distorted, InputArray K, InputArray D, double alpha = 0) + + :param undistorted: Array of object points, 1xN/Nx1 2-channel (or ``vector`` ), where N is the number of points in the view. + + :param K: Camera matrix :math:`K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}`. + + :param D: Input vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)`. + + :param alpha: The skew coefficient. + + :param distorted: Output array of image points, 1xN/Nx1 2-channel, or ``vector`` . + +Fisheye::undistortPoints +----------------------------- +Undistorts 2D points using fisheye model + +.. ocv:function:: void Fisheye::undistortPoints(InputArray distorted, OutputArray undistorted, + InputArray K, InputArray D, InputArray R = noArray(), InputArray P = noArray()) + + :param distorted: Array of object points, 1xN/Nx1 2-channel (or ``vector`` ), where N is the number of points in the view. + + :param K: Camera matrix :math:`K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}`. + + :param D: Input vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)`. + + :param R: Rectification transformation in the object space: 3x3 1-channel, or vector: 3x1/1x3 1-channel or 1x1 3-channel + + :param P: New camera matrix (3x3) or new projection matrix (3x4) + + :param undistorted: Output array of image points, 1xN/Nx1 2-channel, or ``vector`` . + + +Fisheye::initUndistortRectifyMap +------------------------------------- +Computes undistortion and rectification maps for image transform by cv::remap(). If D is empty zero distortion is used, if R or P is empty identity matrixes are used. + +.. ocv:function:: void Fisheye::initUndistortRectifyMap(InputArray K, InputArray D, InputArray R, InputArray P, + const cv::Size& size, int m1type, OutputArray map1, OutputArray map2) + + :param K: Camera matrix :math:`K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}`. + + :param D: Input vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)`. + + :param R: Rectification transformation in the object space: 3x3 1-channel, or vector: 3x1/1x3 1-channel or 1x1 3-channel + + :param P: New camera matrix (3x3) or new projection matrix (3x4) + + :param size: Undistorted image size. + + :param m1type: Type of the first output map that can be CV_32FC1 or CV_16SC2 . See convertMaps() for details. + + :param map1: The first output map. + + :param map2: The second output map. + + +Fisheye::estimateNewCameraMatrixForUndistortRectify +---------------------------------------------------------- +Estimates new camera matrix for undistortion or rectification. + +.. ocv:function:: void Fisheye::estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R, + OutputArray P, double balance = 0.0, const Size& new_size = Size(), double fov_scale = 1.0); + + :param K: Camera matrix :math:`K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}`. + + :param D: Input vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)`. + + :param R: Rectification transformation in the object space: 3x3 1-channel, or vector: 3x1/1x3 1-channel or 1x1 3-channel + + :param P: New camera matrix (3x3) or new projection matrix (3x4) + + :param new_size: New size + + :param balance: Balance. + + :param fov_scale: Field of View scale. + +Fisheye::stereoRectify +------------------------------ +Stereo rectification for fisheye camera model + +.. ocv:function:: void Fisheye::stereoRectify( InputArray K1, InputArray D1, InputArray K2, InputArray D2, const cv::Size& imageSize, + InputArray rotaion, InputArray tvec, OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, + int flags = cv::CALIB_ZERO_DISPARITY, double alpha = -1, const Size& newImageSize = Size(), Rect* roi1 = 0, Rect* roi2 = 0 ) + +.. ocv:function:: void Fisheye::stereoRectify(InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size &imageSize, InputArray R, InputArray tvec, + OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, int flags, const Size &newImageSize = Size(), + double balance = 0.0, double fov_scale = 1.0) + + :param K1: First camera matrix. + + :param K2: Second camera matrix. + + :param D1: First camera distortion parameters. + + :param D2: Second camera distortion parameters. + + :param imageSize: Size of the image used for stereo calibration. + + :param rotation: Rotation matrix between the coordinate systems of the first and the second cameras. + + :param tvec: Translation vector between coordinate systems of the cameras. + + :param R1: Output 3x3 rectification transform (rotation matrix) for the first camera. + + :param R2: Output 3x3 rectification transform (rotation matrix) for the second camera. + + :param P1: Output 3x4 projection matrix in the new (rectified) coordinate systems for the first camera. + + :param P2: Output 3x4 projection matrix in the new (rectified) coordinate systems for the second camera. + + :param Q: Output :math:`4 \times 4` disparity-to-depth mapping matrix (see :ocv:func:`reprojectImageTo3D` ). + + :param flags: Operation flags that may be zero or ``CV_CALIB_ZERO_DISPARITY`` . If the flag is set, the function makes the principal points of each camera have the same pixel coordinates in the rectified views. And if the flag is not set, the function may still shift the images in the horizontal or vertical direction (depending on the orientation of epipolar lines) to maximize the useful image area. + + :param alpha: Free scaling parameter. If it is -1 or absent, the function performs the default scaling. Otherwise, the parameter should be between 0 and 1. ``alpha=0`` means that the rectified images are zoomed and shifted so that only valid pixels are visible (no black areas after rectification). ``alpha=1`` means that the rectified image is decimated and shifted so that all the pixels from the original images from the cameras are retained in the rectified images (no source image pixels are lost). Obviously, any intermediate value yields an intermediate result between those two extreme cases. + + :param newImageSize: New image resolution after rectification. The same size should be passed to :ocv:func:`initUndistortRectifyMap` (see the ``stereo_calib.cpp`` sample in OpenCV samples directory). When (0,0) is passed (default), it is set to the original ``imageSize`` . Setting it to larger value can help you preserve details in the original image, especially when there is a big radial distortion. + + :param roi1: Optional output rectangles inside the rectified images where all the pixels are valid. If ``alpha=0`` , the ROIs cover the whole images. Otherwise, they are likely to be smaller (see the picture below). + + :param roi2: Optional output rectangles inside the rectified images where all the pixels are valid. If ``alpha=0`` , the ROIs cover the whole images. Otherwise, they are likely to be smaller (see the picture below). + + :param balance: Balance. + + :param fov_scale: Field of View scale. + + + +Fisheye::calibrate +---------------------------- +Performs camera calibaration + +.. ocv:function:: double Fisheye::calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size, + InputOutputArray K, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags = 0, + TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)) + + :param objectPoints: vector of vectors of calibration pattern points in the calibration pattern coordinate space. The outer vector contains as many elements as the number of the pattern views. If the same calibration pattern is shown in each view and it is fully visible, all the vectors will be the same. Although, it is possible to use partially occluded patterns, or even different patterns in different views. Then, the vectors will be different. The points are 3D, but since they are in a pattern coordinate system, then, if the rig is planar, it may make sense to put the model to a XY coordinate plane so that Z-coordinate of each input object point is 0. + + :param imagePoints: vector of vectors of the projections of calibration pattern points. ``imagePoints.size()`` and ``objectPoints.size()`` and ``imagePoints[i].size()`` must be equal to ``objectPoints[i].size()`` for each ``i``. + + :param image_size: Size of the image used only to initialize the intrinsic camera matrix. + + :param K: Output 3x3 floating-point camera matrix :math:`A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}` . If ``Fisheye::CALIB_USE_INTRINSIC_GUESS``/ is specified, some or all of ``fx, fy, cx, cy`` must be initialized before calling the function. + + :param D: Output vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)`. + + :param rvecs: Output vector of rotation vectors (see :ocv:func:`Rodrigues` ) estimated for each pattern view. That is, each k-th rotation vector together with the corresponding k-th translation vector (see the next output parameter description) brings the calibration pattern from the model coordinate space (in which object points are specified) to the world coordinate space, that is, a real position of the calibration pattern in the k-th pattern view (k=0.. *M* -1). + + :param tvecs: Output vector of translation vectors estimated for each pattern view. + + :param flags: Different flags that may be zero or a combination of the following values: + + * **Fisheye::CALIB_USE_INTRINSIC_GUESS** ``cameraMatrix`` contains valid initial values of ``fx, fy, cx, cy`` that are optimized further. Otherwise, ``(cx, cy)`` is initially set to the image center ( ``imageSize`` is used), and focal distances are computed in a least-squares fashion. + + * **Fisheye::CALIB_RECOMPUTE_EXTRINSIC** Extrinsic will be recomputed after each iteration of intrinsic optimization. + + * **Fisheye::CALIB_CHECK_COND** The functions will check validity of condition number. + + * **Fisheye::CALIB_FIX_SKEW** Skew coefficient (alpha) is set to zero and stay zero. + + * **Fisheye::CALIB_FIX_K1..4** Selected distortion coefficients are set to zeros and stay zero. + + :param criteria: Termination criteria for the iterative optimization algorithm. + .. [BT98] Birchfield, S. and Tomasi, C. A pixel dissimilarity measure that is insensitive to image sampling. IEEE Transactions on Pattern Analysis and Machine Intelligence. 1998. diff --git a/modules/calib3d/include/opencv2/calib3d/calib3d.hpp b/modules/calib3d/include/opencv2/calib3d/calib3d.hpp index 2675ad402a..816ed76f70 100644 --- a/modules/calib3d/include/opencv2/calib3d/calib3d.hpp +++ b/modules/calib3d/include/opencv2/calib3d/calib3d.hpp @@ -802,7 +802,7 @@ public: static void initUndistortRectifyMap(InputArray K, InputArray D, InputArray R, InputArray P, const cv::Size& size, int m1type, OutputArray map1, OutputArray map2); - //! undistorts image, optinally chanes resolution and camera matrix. If Knew zero identity matrix is used + //! undistorts image, optionally changes resolution and camera matrix. If Knew zero identity matrix is used static void undistortImage(InputArray distorted, OutputArray undistorted, InputArray K, InputArray D, InputArray Knew = cv::noArray(), const Size& new_size = Size()); From e6aa8ce93264401b2c0ad68ced33bf024849435d Mon Sep 17 00:00:00 2001 From: Ilya Krylov Date: Tue, 29 Apr 2014 10:24:39 +0400 Subject: [PATCH 009/189] Corrected notes --- ...mera_calibration_and_3d_reconstruction.rst | 6 -- .../include/opencv2/calib3d/calib3d.hpp | 68 ------------------ modules/calib3d/src/fisheye.cpp | 7 +- modules/calib3d/src/fisheye.hpp | 48 +++++++++++++ modules/calib3d/test/test_fisheye.cpp | 69 ++++++------------- 5 files changed, 74 insertions(+), 124 deletions(-) create mode 100644 modules/calib3d/src/fisheye.hpp diff --git a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst index 3d19b72895..710672cf52 100644 --- a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst +++ b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst @@ -1702,12 +1702,6 @@ Estimates new camera matrix for undistortion or rectification. :param P: New camera matrix (3x3) or new projection matrix (3x4) - :param new_size: New size - - :param balance: Balance. - - :param fov_scale: Field of View scale. - Fisheye::stereoRectify ------------------------------ Stereo rectification for fisheye camera model diff --git a/modules/calib3d/include/opencv2/calib3d/calib3d.hpp b/modules/calib3d/include/opencv2/calib3d/calib3d.hpp index 816ed76f70..8caebd363c 100644 --- a/modules/calib3d/include/opencv2/calib3d/calib3d.hpp +++ b/modules/calib3d/include/opencv2/calib3d/calib3d.hpp @@ -745,32 +745,10 @@ CV_EXPORTS_W int estimateAffine3D(InputArray src, InputArray dst, OutputArray out, OutputArray inliers, double ransacThreshold=3, double confidence=0.99); - class Fisheye { public: - //Definitions: - // Let P be a point in 3D of coordinates X in the world reference frame (stored in the matrix X) - // The coordinate vector of P in the camera reference frame is: Xc = R*X + T - // where R is the rotation matrix corresponding to the rotation vector om: R = rodrigues(om); - // call x, y and z the 3 coordinates of Xc: x = Xc(1); y = Xc(2); z = Xc(3); - // The pinehole projection coordinates of P is [a;b] where a=x/z and b=y/z. - // call r^2 = a^2 + b^2, - // call theta = atan(r), - // - // Fisheye distortion -> theta_d = theta * (1 + k(1)*theta^2 + k(2)*theta^4 + k(3)*theta^6 + k(4)*theta^8) - // - // The distorted point coordinates are: xd = [xx;yy] where: - // - // xx = (theta_d / r) * x - // yy = (theta_d / r) * y - // - // Finally, convertion into pixel coordinates: The final pixel coordinates vector xp=[xxp;yyp] where: - // - // xxp = f(1)*(xx + alpha*yy) + c(1) - // yyp = f(2)*yy + c(2) - enum{ CALIB_USE_INTRINSIC_GUESS = 1, CALIB_RECOMPUTE_EXTRINSIC = 2, @@ -826,53 +804,7 @@ public: double balance = 0.0, double fov_scale = 1.0); }; - - -namespace internal { - -struct IntrinsicParams -{ - Vec2d f; - Vec2d c; - Vec4d k; - double alpha; - std::vector isEstimate; - - IntrinsicParams(); - IntrinsicParams(Vec2d f, Vec2d c, Vec4d k, double alpha = 0); - IntrinsicParams operator+(const Mat& a); - IntrinsicParams& operator =(const Mat& a); - void Init(const cv::Vec2d& f, const cv::Vec2d& c, const cv::Vec4d& k = Vec4d(0,0,0,0), const double& alpha = 0); -}; - -void projectPoints(cv::InputArray objectPoints, cv::OutputArray imagePoints, - cv::InputArray _rvec,cv::InputArray _tvec, - const IntrinsicParams& param, cv::OutputArray jacobian); - -void ComputeExtrinsicRefine(const Mat& imagePoints, const Mat& objectPoints, Mat& rvec, - Mat& tvec, Mat& J, const int MaxIter, - const IntrinsicParams& param, const double thresh_cond); -Mat ComputeHomography(Mat m, Mat M); - -Mat NormalizePixels(const Mat& imagePoints, const IntrinsicParams& param); - -void InitExtrinsics(const Mat& _imagePoints, const Mat& _objectPoints, const IntrinsicParams& param, Mat& omckk, Mat& Tckk); - -void CalibrateExtrinsics(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, - const IntrinsicParams& param, const int check_cond, - const double thresh_cond, InputOutputArray omc, InputOutputArray Tc); - -void ComputeJacobians(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, - const IntrinsicParams& param, InputArray omc, InputArray Tc, - const int& check_cond, const double& thresh_cond, Mat& JJ2_inv, Mat& ex3); - -void EstimateUncertainties(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, - const IntrinsicParams& params, InputArray omc, InputArray Tc, - IntrinsicParams& errors, Vec2d& std_err, double thresh_cond, int check_cond, double& rms); - -} } #endif - #endif diff --git a/modules/calib3d/src/fisheye.cpp b/modules/calib3d/src/fisheye.cpp index 0dcc5e70fd..a9172c9b26 100644 --- a/modules/calib3d/src/fisheye.cpp +++ b/modules/calib3d/src/fisheye.cpp @@ -1,9 +1,7 @@ #include "opencv2/opencv.hpp" #include "opencv2/core/affine.hpp" #include "opencv2/core/affine.hpp" - -////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/// cv::Fisheye::projectPoints +#include "fisheye.hpp" namespace cv { namespace { @@ -16,6 +14,9 @@ namespace cv { namespace }; }} +////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// cv::Fisheye::projectPoints + void cv::Fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints, const Affine3d& affine, InputArray K, InputArray D, double alpha, OutputArray jacobian) { diff --git a/modules/calib3d/src/fisheye.hpp b/modules/calib3d/src/fisheye.hpp new file mode 100644 index 0000000000..e000e635a0 --- /dev/null +++ b/modules/calib3d/src/fisheye.hpp @@ -0,0 +1,48 @@ +#ifndef FISHEYE_INTERNAL_H +#define FISHEYE_INTERNAL_H + +namespace cv { namespace internal { + +struct IntrinsicParams +{ + Vec2d f; + Vec2d c; + Vec4d k; + double alpha; + std::vector isEstimate; + + IntrinsicParams(); + IntrinsicParams(Vec2d f, Vec2d c, Vec4d k, double alpha = 0); + IntrinsicParams operator+(const Mat& a); + IntrinsicParams& operator =(const Mat& a); + void Init(const cv::Vec2d& f, const cv::Vec2d& c, const cv::Vec4d& k = Vec4d(0,0,0,0), const double& alpha = 0); +}; + +void projectPoints(cv::InputArray objectPoints, cv::OutputArray imagePoints, + cv::InputArray _rvec,cv::InputArray _tvec, + const IntrinsicParams& param, cv::OutputArray jacobian); + +void ComputeExtrinsicRefine(const Mat& imagePoints, const Mat& objectPoints, Mat& rvec, + Mat& tvec, Mat& J, const int MaxIter, + const IntrinsicParams& param, const double thresh_cond); +Mat ComputeHomography(Mat m, Mat M); + +Mat NormalizePixels(const Mat& imagePoints, const IntrinsicParams& param); + +void InitExtrinsics(const Mat& _imagePoints, const Mat& _objectPoints, const IntrinsicParams& param, Mat& omckk, Mat& Tckk); + +void CalibrateExtrinsics(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, + const IntrinsicParams& param, const int check_cond, + const double thresh_cond, InputOutputArray omc, InputOutputArray Tc); + +void ComputeJacobians(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, + const IntrinsicParams& param, InputArray omc, InputArray Tc, + const int& check_cond, const double& thresh_cond, Mat& JJ2_inv, Mat& ex3); + +void EstimateUncertainties(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, + const IntrinsicParams& params, InputArray omc, InputArray Tc, + IntrinsicParams& errors, Vec2d& std_err, double thresh_cond, int check_cond, double& rms); + +}} + +#endif diff --git a/modules/calib3d/test/test_fisheye.cpp b/modules/calib3d/test/test_fisheye.cpp index e7d4b311c7..41bbfea59d 100644 --- a/modules/calib3d/test/test_fisheye.cpp +++ b/modules/calib3d/test/test_fisheye.cpp @@ -1,6 +1,7 @@ #include "test_precomp.hpp" -#include +#include #include +#include "../src/fisheye.hpp" class FisheyeTest : public ::testing::Test { @@ -21,9 +22,9 @@ protected: std::string combine_format(const std::string& item1, const std::string& item2, ...); - void readPoins(std::vector >& objectPoints, + void readPoints(std::vector >& objectPoints, std::vector >& imagePoints, - const std::string& path, const int n_images, const int n_points); + const std::string& path, const int n_images); void readExtrinsics(const std::string& file, cv::OutputArray _R, cv::OutputArray _T, cv::OutputArray _R1, cv::OutputArray _R2, cv::OutputArray _P1, cv::OutputArray _P2, cv::OutputArray _Q); @@ -104,8 +105,6 @@ TEST_F(FisheyeTest, undistortImage) else EXPECT_MAT_NEAR(correct, undistorted, 1e-10); } - - cv::waitKey(); } TEST_F(FisheyeTest, jacobians) @@ -206,13 +205,11 @@ TEST_F(FisheyeTest, jacobians) TEST_F(FisheyeTest, Calibration) { const int n_images = 34; - const int n_points = 48; - cv::Size imageSize = cv::Size(1280, 800); std::vector > imagePoints; std::vector > objectPoints; - readPoins(objectPoints, imagePoints, combine(datasets_repository_path, "calib-3_stereo_from_JY/left"), n_images, n_points); + readPoints(objectPoints, imagePoints, combine(datasets_repository_path, "calib-3_stereo_from_JY/left"), n_images); int flag = 0; flag |= cv::Fisheye::CALIB_RECOMPUTE_EXTRINSIC; @@ -232,13 +229,11 @@ TEST_F(FisheyeTest, Calibration) TEST_F(FisheyeTest, Homography) { const int n_images = 1; - const int n_points = 48; - cv::Size imageSize = cv::Size(1280, 800); std::vector > imagePoints; std::vector > objectPoints; - readPoins(objectPoints, imagePoints, combine(datasets_repository_path, "calib-3_stereo_from_JY/left"), n_images, n_points); + readPoints(objectPoints, imagePoints, combine(datasets_repository_path, "calib-3_stereo_from_JY/left"), n_images); cv::internal::IntrinsicParams param; param.Init(cv::Vec2d(cv::max(imageSize.width, imageSize.height) / CV_PI, cv::max(imageSize.width, imageSize.height) / CV_PI), cv::Vec2d(imageSize.width / 2.0 - 0.5, imageSize.height / 2.0 - 0.5)); @@ -283,13 +278,11 @@ TEST_F(FisheyeTest, Homography) TEST_F(FisheyeTest, EtimateUncertainties) { const int n_images = 34; - const int n_points = 48; - cv::Size imageSize = cv::Size(1280, 800); std::vector > imagePoints; std::vector > objectPoints; - readPoins(objectPoints, imagePoints, combine(datasets_repository_path, "calib-3_stereo_from_JY/left"), n_images, n_points); + readPoints(objectPoints, imagePoints, combine(datasets_repository_path, "calib-3_stereo_from_JY/left"), n_images); int flag = 0; flag |= cv::Fisheye::CALIB_RECOMPUTE_EXTRINSIC; @@ -325,7 +318,7 @@ TEST_F(FisheyeTest, EtimateUncertainties) EXPECT_MAT_NEAR(err_std, cv::Vec2d(0.187475975266883, 0.185678953263995), 1e-10); CV_Assert(abs(rms - 0.263782587133546) < 1e-10); CV_Assert(errors.alpha == 0); - } +} TEST_F(FisheyeTest, rectify) { @@ -375,7 +368,6 @@ TEST_F(FisheyeTest, rectify) } } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// FisheyeTest:: @@ -393,7 +385,6 @@ const cv::Matx33d FisheyeTest::R ( 9.9756700084424932e-01, 6.9698277640183867e-0 const cv::Vec3d FisheyeTest::T(-9.9217369356044638e-02, 3.1741831972356663e-03, 1.8551007952921010e-04); - std::string FisheyeTest::combine(const std::string& _item1, const std::string& _item2) { std::string item1 = _item1, item2 = _item2; @@ -421,44 +412,28 @@ std::string FisheyeTest::combine_format(const std::string& item1, const std::str return std::string(buffer); } -void FisheyeTest::readPoins(std::vector >& objectPoints, +void FisheyeTest::readPoints(std::vector >& objectPoints, std::vector >& imagePoints, - const std::string& path, const int n_images, const int n_points) + const std::string& path, const int n_images) { objectPoints.resize(n_images); imagePoints.resize(n_images); - std::vector image(n_points); - std::vector object(n_points); - - std::ifstream ipStream; - std::ifstream opStream; - - for (int image_idx = 0; image_idx < n_images; image_idx++) + cv::FileStorage fs1(combine(path, "objectPoints.xml"), cv::FileStorage::READ); + CV_Assert(fs1.isOpened()); + for (size_t i = 0; i < objectPoints.size(); ++i) { - std::stringstream ss; - ss << image_idx; - std::string idxStr = ss.str(); - - ipStream.open(combine(path, std::string(std::string("x_") + idxStr + std::string(".csv"))).c_str(), std::ifstream::in); - opStream.open(combine(path, std::string(std::string("X_") + idxStr + std::string(".csv"))).c_str(), std::ifstream::in); - CV_Assert(ipStream.is_open() && opStream.is_open()); - - for (int point_idx = 0; point_idx < n_points; point_idx++) - { - double x, y, z; - char delim; - ipStream >> x >> delim >> y; - image[point_idx] = cv::Point2d(x, y); - opStream >> x >> delim >> y >> delim >> z; - object[point_idx] = cv::Point3d(x, y, z); - } - ipStream.close(); - opStream.close(); + fs1[cv::format("image_%d", i)] >> objectPoints[i]; + } + fs1.release(); - imagePoints[image_idx] = image; - objectPoints[image_idx] = object; + cv::FileStorage fs2(combine(path, "imagePoints.xml"), cv::FileStorage::READ); + CV_Assert(fs2.isOpened()); + for (size_t i = 0; i < imagePoints.size(); ++i) + { + fs2[cv::format("image_%d", i)] >> imagePoints[i]; } + fs2.release(); } void FisheyeTest::readExtrinsics(const std::string& file, cv::OutputArray _R, cv::OutputArray _T, cv::OutputArray _R1, cv::OutputArray _R2, From c2341fd4464265374ff86829f3e1c8aad0254b50 Mon Sep 17 00:00:00 2001 From: Ilya Krylov Date: Mon, 5 May 2014 14:21:24 +0400 Subject: [PATCH 010/189] Added stereoCalibrate for Fisheye camera model --- .../include/opencv2/calib3d/calib3d.hpp | 10 +- modules/calib3d/src/fisheye.cpp | 413 ++++++++++++++++++ modules/calib3d/src/fisheye.hpp | 12 + 3 files changed, 434 insertions(+), 1 deletion(-) diff --git a/modules/calib3d/include/opencv2/calib3d/calib3d.hpp b/modules/calib3d/include/opencv2/calib3d/calib3d.hpp index 8caebd363c..b495fbe2d0 100644 --- a/modules/calib3d/include/opencv2/calib3d/calib3d.hpp +++ b/modules/calib3d/include/opencv2/calib3d/calib3d.hpp @@ -757,7 +757,8 @@ public: CALIB_FIX_K1 = 16, CALIB_FIX_K2 = 32, CALIB_FIX_K3 = 64, - CALIB_FIX_K4 = 128 + CALIB_FIX_K4 = 128, + CALIB_FIX_INTRINSIC = 256 }; //! projects 3D points using fisheye model @@ -802,6 +803,13 @@ public: static void stereoRectify(InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size &imageSize, InputArray R, InputArray tvec, OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, int flags, const Size &newImageSize = Size(), double balance = 0.0, double fov_scale = 1.0); + + //! performs stereo calibaration + static double stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, + InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, + InputOutputArrayOfArrays rvecs1, InputOutputArrayOfArrays tvecs1, + InputOutputArrayOfArrays rvecs2, InputOutputArrayOfArrays tvecs2, + TermCriteria criteria = TermCriteria(3, 100, 1e-10)); }; } diff --git a/modules/calib3d/src/fisheye.cpp b/modules/calib3d/src/fisheye.cpp index a9172c9b26..19b30428e9 100644 --- a/modules/calib3d/src/fisheye.cpp +++ b/modules/calib3d/src/fisheye.cpp @@ -2,6 +2,7 @@ #include "opencv2/core/affine.hpp" #include "opencv2/core/affine.hpp" #include "fisheye.hpp" +#include "iomanip" namespace cv { namespace { @@ -12,6 +13,8 @@ namespace cv { namespace Vec3d dom, dT; double dalpha; }; + + void subMatrix(const Mat& src, Mat& dst, const vector& cols, const vector& rows); }} ////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -757,6 +760,297 @@ double cv::Fisheye::calibrate(InputArrayOfArrays objectPoints, InputArrayOfArray return rms; } +////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// cv::Fisheye::stereoCalibrate + +double cv::Fisheye::stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, + InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, + InputOutputArray rvecs1, InputOutputArrayOfArrays tvecs1, + InputOutputArrayOfArrays rvecs2, InputOutputArrayOfArrays tvecs2, + TermCriteria criteria) +{ + CV_Assert(!objectPoints.empty() && !imagePoints1.empty() && !imagePoints2.empty()); + CV_Assert(objectPoints.total() == imagePoints1.total() || imagePoints1.total() == imagePoints2.total()); + CV_Assert(objectPoints.type() == CV_32FC3 || objectPoints.type() == CV_64FC3); + CV_Assert(imagePoints1.type() == CV_32FC2 || imagePoints1.type() == CV_64FC2); + CV_Assert(imagePoints2.type() == CV_32FC2 || imagePoints2.type() == CV_64FC2); + + CV_Assert((!K1.empty() && K1.size() == Size(3,3)) || K1.empty()); + CV_Assert((!D1.empty() && D1.total() == 4) || D1.empty()); + CV_Assert((!K2.empty() && K1.size() == Size(3,3)) || K2.empty()); + CV_Assert((!D2.empty() && D1.total() == 4) || D2.empty()); + + CV_Assert((!rvecs1.empty() && rvecs1.channels() == 3) || rvecs1.empty()); + CV_Assert((!tvecs1.empty() && tvecs1.channels() == 3) || tvecs1.empty()); + CV_Assert((!rvecs2.empty() && rvecs2.channels() == 3) || rvecs2.empty()); + CV_Assert((!tvecs2.empty() && tvecs2.channels() == 3) || tvecs2.empty()); + + //-------------------------------Initialization + + const int threshold = 50; + + size_t n_points = objectPoints.getMat(0).total(); + size_t n_images = objectPoints.total(); + + double change = 1; + + cv::internal::IntrinsicParams intrinsicLeft; + cv::internal::IntrinsicParams intrinsicRight; + + cv::internal::IntrinsicParams intrinsicLeft_errors; + cv::internal::IntrinsicParams intrinsicRight_errors; + + Matx33d _K; + Vec4d _D; + + K1.getMat().convertTo(_K, CV_64FC1); + D1.getMat().convertTo(_D, CV_64FC1); + intrinsicLeft.Init(Vec2d(_K(0,0), _K(1, 1)), Vec2d(_K(0,2), _K(1, 2)), + Vec4d(_D[0], _D[1], _D[2], _D[3]), _K(0, 1) / _K(0, 0)); + + K2.getMat().convertTo(_K, CV_64FC1); + D2.getMat().convertTo(_D, CV_64FC1); + intrinsicRight.Init(Vec2d(_K(0,0), _K(1, 1)), Vec2d(_K(0,2), _K(1, 2)), + Vec4d(_D[0], _D[1], _D[2], _D[3]), _K(0, 1) / _K(0, 0)); + + intrinsicLeft.isEstimate[0] = 1; + intrinsicLeft.isEstimate[1] = 1; + intrinsicLeft.isEstimate[2] = 1; + intrinsicLeft.isEstimate[3] = 1; + intrinsicLeft.isEstimate[4] = 0; + intrinsicLeft.isEstimate[5] = 1; + intrinsicLeft.isEstimate[6] = 1; + intrinsicLeft.isEstimate[7] = 1; + intrinsicLeft.isEstimate[8] = 1; + + intrinsicRight.isEstimate[0] = 1; + intrinsicRight.isEstimate[1] = 1; + intrinsicRight.isEstimate[2] = 1; + intrinsicRight.isEstimate[3] = 1; + intrinsicRight.isEstimate[4] = 0; + intrinsicRight.isEstimate[5] = 1; + intrinsicRight.isEstimate[6] = 1; + intrinsicRight.isEstimate[7] = 1; + intrinsicRight.isEstimate[8] = 1; + + intrinsicLeft_errors.isEstimate = intrinsicLeft.isEstimate; + intrinsicRight_errors.isEstimate = intrinsicRight.isEstimate; + + std::vector selectedParams; + std::vector tmp(6 * (n_images + 1), 1); + selectedParams.insert(selectedParams.end(), intrinsicLeft.isEstimate.begin(), intrinsicLeft.isEstimate.end()); + selectedParams.insert(selectedParams.end(), intrinsicRight.isEstimate.begin(), intrinsicRight.isEstimate.end()); + selectedParams.insert(selectedParams.end(), tmp.begin(), tmp.end()); + + //Init values for rotation and translation between two views + cv::Mat om_list(1, n_images, CV_64FC3), T_list(1, n_images, CV_64FC3); + cv::Mat om_ref, R_ref, T_ref, R1, R2; + for (size_t image_idx = 0; image_idx < n_images; ++image_idx) + { + cv::Rodrigues(rvecs1.getMat(image_idx), R1); + cv::Rodrigues(rvecs2.getMat(image_idx), R2); + R_ref = R2 * R1.t(); + T_ref = tvecs2.getMat(image_idx).reshape(1, 3) - R_ref * tvecs1.getMat(image_idx).reshape(1, 3); + cv::Rodrigues(R_ref, om_ref); + om_ref.reshape(3, 1).copyTo(om_list.col(image_idx)); + T_ref.reshape(3, 1).copyTo(T_list.col(image_idx)); + } + cv::Vec3d omcur = internal::median3d(om_list); + cv::Vec3d Tcur = internal::median3d(T_list); + + cv::Mat J = cv::Mat::zeros(4 * n_points * n_images, 18 + 6 * (n_images + 1), CV_64FC1), + e = cv::Mat::zeros(4 * n_points * n_images, 1, CV_64FC1), Jkk, ekk; + cv::Mat J2_inv; + for(int iter = 0; ; ++iter) + { + if ((criteria.type == 1 && iter >= criteria.maxCount) || + (criteria.type == 2 && change <= criteria.epsilon) || + (criteria.type == 3 && (change <= criteria.epsilon || iter >= criteria.maxCount))) + break; + + J.create(4 * n_points * n_images, 18 + 6 * (n_images + 1), CV_64FC1); + e.create(4 * n_points * n_images, 1, CV_64FC1); + Jkk.create(4 * n_points, 18 + 6 * (n_images + 1), CV_64FC1); + ekk.create(4 * n_points, 1, CV_64FC1); + + cv::Mat omr, Tr, domrdomckk, domrdTckk, domrdom, domrdT, dTrdomckk, dTrdTckk, dTrdom, dTrdT; + + for (size_t image_idx = 0; image_idx < n_images; ++image_idx) + { + Jkk = cv::Mat::zeros(4 * n_points, 18 + 6 * (n_images + 1), CV_64FC1); + + cv::Mat object = objectPoints.getMat(image_idx).clone(); + cv::Mat imageLeft = imagePoints1.getMat(image_idx).clone(); + cv::Mat imageRight = imagePoints2.getMat(image_idx).clone(); + cv::Mat jacobians, projected; + + //left camera jacobian + cv::Mat rvec = rvecs1.getMat(image_idx).clone(); + cv::Mat tvec = tvecs1.getMat(image_idx).clone(); + cv::internal::projectPoints(object, projected, rvec, tvec, intrinsicLeft, jacobians); + cv::Mat(cv::Mat((imageLeft - projected).t()).reshape(1, 1).t()).copyTo(ekk.rowRange(0, 2 * n_points)); + jacobians.colRange(8, 11).copyTo(Jkk.colRange(24 + image_idx * 6, 27 + image_idx * 6).rowRange(0, 2 * n_points)); + jacobians.colRange(11, 14).copyTo(Jkk.colRange(27 + image_idx * 6, 30 + image_idx * 6).rowRange(0, 2 * n_points)); + jacobians.colRange(0, 2).copyTo(Jkk.colRange(0, 2).rowRange(0, 2 * n_points)); + jacobians.colRange(2, 4).copyTo(Jkk.colRange(2, 4).rowRange(0, 2 * n_points)); + jacobians.colRange(4, 8).copyTo(Jkk.colRange(5, 9).rowRange(0, 2 * n_points)); + jacobians.col(14).copyTo(Jkk.col(4).rowRange(0, 2 * n_points)); + + //right camera jacobian + internal::compose_motion(rvec, tvec, omcur, Tcur, omr, Tr, domrdomckk, domrdTckk, domrdom, domrdT, dTrdomckk, dTrdTckk, dTrdom, dTrdT); + rvec = rvecs2.getMat(image_idx).clone(); + tvec = tvecs2.getMat(image_idx).clone(); + + cv::internal::projectPoints(object, projected, omr, Tr, intrinsicRight, jacobians); + cv::Mat(cv::Mat((imageRight - projected).t()).reshape(1, 1).t()).copyTo(ekk.rowRange(2 * n_points, 4 * n_points)); + cv::Mat dxrdom = jacobians.colRange(8, 11) * domrdom + jacobians.colRange(11, 14) * dTrdom; + cv::Mat dxrdT = jacobians.colRange(8, 11) * domrdT + jacobians.colRange(11, 14)* dTrdT; + cv::Mat dxrdomckk = jacobians.colRange(8, 11) * domrdomckk + jacobians.colRange(11, 14) * dTrdomckk; + cv::Mat dxrdTckk = jacobians.colRange(8, 11) * domrdTckk + jacobians.colRange(11, 14) * dTrdTckk; + + dxrdom.copyTo(Jkk.colRange(18, 21).rowRange(2 * n_points, 4 * n_points)); + dxrdT.copyTo(Jkk.colRange(21, 24).rowRange(2 * n_points, 4 * n_points)); + dxrdomckk.copyTo(Jkk.colRange(24 + image_idx * 6, 27 + image_idx * 6).rowRange(2 * n_points, 4 * n_points)); + dxrdTckk.copyTo(Jkk.colRange(27 + image_idx * 6, 30 + image_idx * 6).rowRange(2 * n_points, 4 * n_points)); + jacobians.colRange(0, 2).copyTo(Jkk.colRange(9 + 0, 9 + 2).rowRange(2 * n_points, 4 * n_points)); + jacobians.colRange(2, 4).copyTo(Jkk.colRange(9 + 2, 9 + 4).rowRange(2 * n_points, 4 * n_points)); + jacobians.colRange(4, 8).copyTo(Jkk.colRange(9 + 5, 9 + 9).rowRange(2 * n_points, 4 * n_points)); + jacobians.col(14).copyTo(Jkk.col(9 + 4).rowRange(2 * n_points, 4 * n_points)); + + //check goodness of sterepair + double abs_max = 0; + for (size_t i = 0; i < 4 * n_points; i++) + { + if (fabs(ekk.at(i)) > abs_max) + { + abs_max = fabs(ekk.at(i)); + } + } + if (abs_max < threshold) + { + Jkk.copyTo(J.rowRange(image_idx * 4 * n_points, (image_idx + 1) * 4 * n_points)); + ekk.copyTo(e.rowRange(image_idx * 4 * n_points, (image_idx + 1) * 4 * n_points)); + } + else + { + CV_Assert(!"Bad stereo pair"); + } + } + + cv::Vec6d oldTom(Tcur[0], Tcur[1], Tcur[2], omcur[0], omcur[1], omcur[2]); + + //update all parameters + cv::subMatrix(J, J, selectedParams, std::vector(J.rows, 1)); + cv::Mat J2 = J.t() * J; + J2_inv = J2.inv(); + int a = cv::countNonZero(intrinsicLeft.isEstimate); + int b = cv::countNonZero(intrinsicRight.isEstimate); + cv::Mat deltas = J2_inv * J.t() * e; + intrinsicLeft = intrinsicLeft + deltas.rowRange(0, a); + intrinsicRight = intrinsicRight + deltas.rowRange(a, a + b); + omcur = omcur + cv::Vec3d(deltas.rowRange(a + b, a + b + 3)); + Tcur = Tcur + cv::Vec3d(deltas.rowRange(a + b + 3, a + b + 6)); + for (size_t image_idx = 0; image_idx < n_images; ++image_idx) + { + rvecs1.getMat(image_idx) = rvecs1.getMat(image_idx) + deltas.rowRange(a + b + 6 + image_idx * 6, a + b + 9 + image_idx * 6).reshape(3); + tvecs1.getMat(image_idx) = tvecs1.getMat(image_idx) + deltas.rowRange(a + b + 9 + image_idx * 6, a + b + 12 + image_idx * 6).reshape(3); + } + + cv::Vec6d newTom(Tcur[0], Tcur[1], Tcur[2], omcur[0], omcur[1], omcur[2]); + change = cv::norm(newTom - oldTom) / cv::norm(newTom); + } + + //estimate uncertainties + cv::Mat sigma_x; + cv::meanStdDev(e, cv::noArray(), sigma_x); + sigma_x *= sqrt((double)e.total() / (e.total() - 1)); + cv::sqrt(J2_inv, J2_inv); + cv::Mat errors = 3 * J2_inv.diag() * sigma_x; + int a1 = cv::countNonZero(intrinsicLeft_errors.isEstimate); + int b1 = cv::countNonZero(intrinsicRight_errors.isEstimate); + intrinsicLeft_errors = errors.rowRange(0, a1); + intrinsicRight_errors = errors.rowRange(a1, a1 + b1); + cv::Vec3d om_error = cv::Vec3d(errors.rowRange(a1 + b1, a1 + b1 + 3)); + cv::Vec3d T_error = cv::Vec3d(errors.rowRange(a1 + b1 + 3, a1 + b1 + 6)); + + std::cout << std::setprecision(15) << "left f = " << intrinsicLeft.f << std::endl; + std::cout << std::setprecision(15) << "left c = " << intrinsicLeft.c << std::endl; + std::cout << std::setprecision(15) << "left alpha = " << intrinsicLeft.alpha << std::endl; + std::cout << std::setprecision(15) << "left k = " << intrinsicLeft.k << std::endl; + + std::cout << std::setprecision(15) << "right f = " << intrinsicRight.f << std::endl; + std::cout << std::setprecision(15) << "right c = " << intrinsicRight.c << std::endl; + std::cout << std::setprecision(15) << "right alpha = " << intrinsicRight.alpha << std::endl; + std::cout << std::setprecision(15) << "right k = " << intrinsicRight.k << std::endl; + + std::cout << omcur << std::endl; + std::cout << Tcur << std::endl; + std::cout << "====================================================================================" << std::endl; + std::cout.flush(); + + std::cout << std::setprecision(15) << "left f = " << intrinsicLeft_errors.f << std::endl; + std::cout << std::setprecision(15) << "left c = " << intrinsicLeft_errors.c << std::endl; + std::cout << std::setprecision(15) << "left alpha = " << intrinsicLeft_errors.alpha << std::endl; + std::cout << std::setprecision(15) << "left k = " << intrinsicLeft_errors.k << std::endl; + + std::cout << std::setprecision(15) << "right f = " << intrinsicRight_errors.f << std::endl; + std::cout << std::setprecision(15) << "right c = " << intrinsicRight_errors.c << std::endl; + std::cout << std::setprecision(15) << "right alpha = " << intrinsicRight_errors.alpha << std::endl; + std::cout << std::setprecision(15) << "right k = " << intrinsicRight_errors.k << std::endl; + + std::cout << om_error << std::endl; + std::cout << T_error << std::endl; + std::cout << "====================================================================================" << std::endl; + std::cout.flush(); + + CV_Assert(cv::norm(intrinsicLeft.f - cv::Vec2d(561.195925927249, 562.849402029712)) < 1e-12); + CV_Assert(cv::norm(intrinsicLeft.c - cv::Vec2d(621.282400272412, 380.555455380889)) < 1e-12); + CV_Assert(intrinsicLeft.alpha == 0); + CV_Assert(cv::norm(intrinsicLeft.k - cv::Vec4d(-7.44253716539556e-05, -0.00702662033932424, 0.00737569823650885, -0.00342230256441771)) < 1e-12); + CV_Assert(cv::norm(intrinsicRight.f - cv::Vec2d(560.395452535348, 561.90171021422)) < 1e-12); + CV_Assert(cv::norm(intrinsicRight.c - cv::Vec2d(678.971652040359, 380.401340535339)) < 1e-12); + CV_Assert(intrinsicRight.alpha == 0); + CV_Assert(cv::norm(intrinsicRight.k - cv::Vec4d(-0.0130785435677431, 0.0284434505383497, -0.0360333869900506, 0.0144724062347222)) < 1e-12); + CV_Assert(cv::norm(omcur - cv::Vec3d(-0.00605728469659871, 0.006287139337868821, -0.06960627514977027)) < 1e-12); + CV_Assert(cv::norm(Tcur - cv::Vec3d(-0.09940272472412097, 0.002708121392654134, 0.001293302924726987)) < 1e-12); + + CV_Assert(cv::norm(intrinsicLeft_errors.f - cv::Vec2d(0.71024293066476, 0.717596249442966)) < 1e-12); + CV_Assert(cv::norm(intrinsicLeft_errors.c - cv::Vec2d(0.782164491020839, 0.538718002947604)) < 1e-12); + CV_Assert(intrinsicLeft_errors.alpha == 0); + CV_Assert(cv::norm(intrinsicLeft_errors.k - cv::Vec4d(0.00525819017878291, 0.0179451746982225, 0.0236417266063274, 0.0104757238170252)) < 1e-12); + CV_Assert(cv::norm(intrinsicRight_errors.f - cv::Vec2d(0.748707568264116, 0.745355483082726)) < 1e-12); + CV_Assert(cv::norm(intrinsicRight_errors.c - cv::Vec2d(0.788236834082615, 0.538854504490304)) < 1e-12); + CV_Assert(intrinsicRight_errors.alpha == 0); + CV_Assert(cv::norm(intrinsicRight_errors.k - cv::Vec4d(0.00534743998208779, 0.0175804116710864, 0.0226549382734192, 0.00979255348533809)) < 1e-12); + CV_Assert(cv::norm(om_error - cv::Vec3d(0.0005903298904975326, 0.001048251127879415, 0.0001775640833531587)) < 1e-12); + CV_Assert(cv::norm(T_error - cv::Vec3d(6.691282702437657e-05, 5.566841336891827e-05, 0.0001954901454589594)) < 1e-12); + + + Matx33d _K1 = Matx33d(intrinsicLeft.f[0], intrinsicLeft.f[0] * intrinsicLeft.alpha, intrinsicLeft.c[0], + 0, intrinsicLeft.f[1], intrinsicLeft.c[1], + 0, 0, 1); + + Matx33d _K2 = Matx33d(intrinsicRight.f[0], intrinsicRight.f[0] * intrinsicRight.alpha, intrinsicRight.c[0], + 0, intrinsicRight.f[1], intrinsicRight.c[1], + 0, 0, 1); + + Mat _R; + Rodrigues(omcur, _R); + +// if (K1.needed()) cv::Mat(_K1).convertTo(K2, K1.empty() ? CV_64FC1 : K1.type()); +// if (K2.needed()) cv::Mat(_K2).convertTo(K2, K2.empty() ? CV_64FC1 : K2.type()); +// if (D1.needed()) cv::Mat(intrinsicLeft.k).convertTo(D1, D1.empty() ? CV_64FC1 : D1.type()); +// if (D2.needed()) cv::Mat(intrinsicRight.k).convertTo(D2, D2.empty() ? CV_64FC1 : D2.type()); +// if (R.needed()) _R.convertTo(R, R.empty() ? CV_64FC1 : R.type()); +// if (T.needed()) Tcur.convertTo(R, R.empty() ? CV_64FC1 : R.type()); + +// if (rvecs1.needed()) cv::Mat(omc).convertTo(rvecs, rvecs.empty() ? CV_64FC3 : rvecs.type()); +// if (tvecs.needed()) cv::Mat(Tc).convertTo(tvecs, tvecs.empty() ? CV_64FC3 : tvecs.type()); + + + return 0; +} + namespace cv{ namespace { void subMatrix(const Mat& src, Mat& dst, const vector& cols, const vector& rows) { @@ -1216,3 +1510,122 @@ void cv::internal::EstimateUncertainties(InputArrayOfArrays objectPoints, InputA rms /= ex.total(); rms = sqrt(rms); } + +void cv::internal::dAB(InputArray A, InputArray B, OutputArray dABdA, OutputArray dABdB) +{ + CV_Assert(A.getMat().cols == B.getMat().rows); + CV_Assert(A.type() == CV_64FC1 && B.type() == CV_64FC1); + + size_t p = A.getMat().rows; + size_t n = A.getMat().cols; + size_t q = B.getMat().cols; + + dABdA.create(p * q, p * n, CV_64FC1); + dABdB.create(p * q, q * n, CV_64FC1); + + dABdA.getMat() = Mat::zeros(p * q, p * n, CV_64FC1); + dABdB.getMat() = Mat::zeros(p * q, q * n, CV_64FC1); + + for (size_t i = 0; i < q; ++i) + { + for (size_t j = 0; j < p; ++j) + { + size_t ij = j + i * p; + for (size_t k = 0; k < n; ++k) + { + size_t kj = j + k * p; + dABdA.getMat().at(ij, kj) = B.getMat().at(k, i); + } + } + } + + for (size_t i = 0; i < q; ++i) + { + A.getMat().copyTo(dABdB.getMat().rowRange(i * p, i * p + p).colRange(i * n, i * n + n)); + } +} + +void cv::internal::JRodriguesMatlab(const Mat& src, Mat& dst) +{ + Mat tmp(src.cols, src.rows, src.type()); + if (src.rows == 9) + { + Mat(src.row(0).t()).copyTo(tmp.col(0)); + Mat(src.row(1).t()).copyTo(tmp.col(3)); + Mat(src.row(2).t()).copyTo(tmp.col(6)); + Mat(src.row(3).t()).copyTo(tmp.col(1)); + Mat(src.row(4).t()).copyTo(tmp.col(4)); + Mat(src.row(5).t()).copyTo(tmp.col(7)); + Mat(src.row(6).t()).copyTo(tmp.col(2)); + Mat(src.row(7).t()).copyTo(tmp.col(5)); + Mat(src.row(8).t()).copyTo(tmp.col(8)); + } + else + { + Mat(src.col(0).t()).copyTo(tmp.row(0)); + Mat(src.col(1).t()).copyTo(tmp.row(3)); + Mat(src.col(2).t()).copyTo(tmp.row(6)); + Mat(src.col(3).t()).copyTo(tmp.row(1)); + Mat(src.col(4).t()).copyTo(tmp.row(4)); + Mat(src.col(5).t()).copyTo(tmp.row(7)); + Mat(src.col(6).t()).copyTo(tmp.row(2)); + Mat(src.col(7).t()).copyTo(tmp.row(5)); + Mat(src.col(8).t()).copyTo(tmp.row(8)); + } + dst = tmp.clone(); +} + +void cv::internal::compose_motion(InputArray _om1, InputArray _T1, InputArray _om2, InputArray _T2, + Mat& om3, Mat& T3, Mat& dom3dom1, Mat& dom3dT1, Mat& dom3dom2, + Mat& dom3dT2, Mat& dT3dom1, Mat& dT3dT1, Mat& dT3dom2, Mat& dT3dT2) +{ + Mat om1 = _om1.getMat(); + Mat om2 = _om2.getMat(); + Mat T1 = _T1.getMat().reshape(1, 3); + Mat T2 = _T2.getMat().reshape(1, 3); + + //% Rotations: + Mat R1, R2, R3, dR1dom1(9, 3, CV_64FC1), dR2dom2; + Rodrigues(om1, R1, dR1dom1); + Rodrigues(om2, R2, dR2dom2); + JRodriguesMatlab(dR1dom1, dR1dom1); + JRodriguesMatlab(dR2dom2, dR2dom2); + R3 = R2 * R1; + Mat dR3dR2, dR3dR1; + dAB(R2, R1, dR3dR2, dR3dR1); + Mat dom3dR3; + Rodrigues(R3, om3, dom3dR3); + JRodriguesMatlab(dom3dR3, dom3dR3); + dom3dom1 = dom3dR3 * dR3dR1 * dR1dom1; + dom3dom2 = dom3dR3 * dR3dR2 * dR2dom2; + dom3dT1 = Mat::zeros(3, 3, CV_64FC1); + dom3dT2 = Mat::zeros(3, 3, CV_64FC1); + + //% Translations: + Mat T3t = R2 * T1; + Mat dT3tdR2, dT3tdT1; + dAB(R2, T1, dT3tdR2, dT3tdT1); + Mat dT3tdom2 = dT3tdR2 * dR2dom2; + T3 = T3t + T2; + dT3dT1 = dT3tdT1; + dT3dT2 = Mat::eye(3, 3, CV_64FC1); + dT3dom2 = dT3tdom2; + dT3dom1 = Mat::zeros(3, 3, CV_64FC1); +} + +double cv::internal::median(const Mat& row) +{ + CV_Assert(row.type() == CV_64FC1); + CV_Assert(!row.empty() && row.rows == 1); + Mat tmp = row.clone(); + sort(tmp, tmp, 0); + if (tmp.total() % 2) return tmp.at(tmp.total() / 2); + else return 0.5 *(tmp.at(tmp.total() / 2) + tmp.at(tmp.total() / 2 - 1)); +} + +cv::Vec3d cv::internal::median3d(InputArray m) +{ + CV_Assert(m.depth() == CV_64F && m.getMat().rows == 1); + Mat M = Mat(m.getMat().t()).reshape(1).t(); + return Vec3d(median(M.row(0)), median(M.row(1)), median(M.row(2))); +} diff --git a/modules/calib3d/src/fisheye.hpp b/modules/calib3d/src/fisheye.hpp index e000e635a0..fa4bfdb388 100644 --- a/modules/calib3d/src/fisheye.hpp +++ b/modules/calib3d/src/fisheye.hpp @@ -43,6 +43,18 @@ void EstimateUncertainties(InputArrayOfArrays objectPoints, InputArrayOfArrays i const IntrinsicParams& params, InputArray omc, InputArray Tc, IntrinsicParams& errors, Vec2d& std_err, double thresh_cond, int check_cond, double& rms); +void dAB(cv::InputArray A, InputArray B, OutputArray dABdA, OutputArray dABdB); + +void JRodriguesMatlab(const Mat& src, Mat& dst); + +void compose_motion(InputArray _om1, InputArray _T1, InputArray _om2, InputArray _T2, + Mat& om3, Mat& T3, Mat& dom3dom1, Mat& dom3dT1, Mat& dom3dom2, + Mat& dom3dT2, Mat& dT3dom1, Mat& dT3dT1, Mat& dT3dom2, Mat& dT3dT2); + +double median(const Mat& row); + +Vec3d median3d(InputArray m); + }} #endif From 50b291995a71c7176dad21a39b7151cf81644700 Mon Sep 17 00:00:00 2001 From: Ilya Krylov Date: Mon, 5 May 2014 17:23:03 +0400 Subject: [PATCH 011/189] Added tests for stereoCalibrate --- .../include/opencv2/calib3d/calib3d.hpp | 6 +- modules/calib3d/src/fisheye.cpp | 206 ++++++--------- modules/calib3d/test/test_fisheye.cpp | 235 ++++++++++++++++++ 3 files changed, 317 insertions(+), 130 deletions(-) diff --git a/modules/calib3d/include/opencv2/calib3d/calib3d.hpp b/modules/calib3d/include/opencv2/calib3d/calib3d.hpp index b495fbe2d0..b6d85a0959 100644 --- a/modules/calib3d/include/opencv2/calib3d/calib3d.hpp +++ b/modules/calib3d/include/opencv2/calib3d/calib3d.hpp @@ -806,10 +806,10 @@ public: //! performs stereo calibaration static double stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, - InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, - InputOutputArrayOfArrays rvecs1, InputOutputArrayOfArrays tvecs1, - InputOutputArrayOfArrays rvecs2, InputOutputArrayOfArrays tvecs2, + InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, Size imageSize, + OutputArray R, OutputArray T, int flags, TermCriteria criteria = TermCriteria(3, 100, 1e-10)); + }; } diff --git a/modules/calib3d/src/fisheye.cpp b/modules/calib3d/src/fisheye.cpp index 19b30428e9..50dd045281 100644 --- a/modules/calib3d/src/fisheye.cpp +++ b/modules/calib3d/src/fisheye.cpp @@ -764,10 +764,8 @@ double cv::Fisheye::calibrate(InputArrayOfArrays objectPoints, InputArrayOfArray /// cv::Fisheye::stereoCalibrate double cv::Fisheye::stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, - InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, - InputOutputArray rvecs1, InputOutputArrayOfArrays tvecs1, - InputOutputArrayOfArrays rvecs2, InputOutputArrayOfArrays tvecs2, - TermCriteria criteria) + InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, Size imageSize, + OutputArray R, OutputArray T, int flags, TermCriteria criteria) { CV_Assert(!objectPoints.empty() && !imagePoints1.empty() && !imagePoints2.empty()); CV_Assert(objectPoints.total() == imagePoints1.total() || imagePoints1.total() == imagePoints2.total()); @@ -780,14 +778,13 @@ double cv::Fisheye::stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayO CV_Assert((!K2.empty() && K1.size() == Size(3,3)) || K2.empty()); CV_Assert((!D2.empty() && D1.total() == 4) || D2.empty()); - CV_Assert((!rvecs1.empty() && rvecs1.channels() == 3) || rvecs1.empty()); - CV_Assert((!tvecs1.empty() && tvecs1.channels() == 3) || tvecs1.empty()); - CV_Assert((!rvecs2.empty() && rvecs2.channels() == 3) || rvecs2.empty()); - CV_Assert((!tvecs2.empty() && tvecs2.channels() == 3) || tvecs2.empty()); + CV_Assert(((flags & CALIB_FIX_INTRINSIC) && !K1.empty() && !K2.empty() && !D1.empty() && !D2.empty()) || !(flags & CALIB_FIX_INTRINSIC)); //-------------------------------Initialization const int threshold = 50; + const double thresh_cond = 1e6; + const int check_cond = 1; size_t n_points = objectPoints.getMat(0).total(); size_t n_images = objectPoints.total(); @@ -800,38 +797,52 @@ double cv::Fisheye::stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayO cv::internal::IntrinsicParams intrinsicLeft_errors; cv::internal::IntrinsicParams intrinsicRight_errors; - Matx33d _K; - Vec4d _D; + Matx33d _K1, _K2; + Vec4d _D1, _D2; + if (!K1.empty()) K1.getMat().convertTo(_K1, CV_64FC1); + if (!D1.empty()) D1.getMat().convertTo(_D1, CV_64FC1); + if (!K2.empty()) K2.getMat().convertTo(_K2, CV_64FC1); + if (!D2.empty()) D2.getMat().convertTo(_D2, CV_64FC1); - K1.getMat().convertTo(_K, CV_64FC1); - D1.getMat().convertTo(_D, CV_64FC1); - intrinsicLeft.Init(Vec2d(_K(0,0), _K(1, 1)), Vec2d(_K(0,2), _K(1, 2)), - Vec4d(_D[0], _D[1], _D[2], _D[3]), _K(0, 1) / _K(0, 0)); - - K2.getMat().convertTo(_K, CV_64FC1); - D2.getMat().convertTo(_D, CV_64FC1); - intrinsicRight.Init(Vec2d(_K(0,0), _K(1, 1)), Vec2d(_K(0,2), _K(1, 2)), - Vec4d(_D[0], _D[1], _D[2], _D[3]), _K(0, 1) / _K(0, 0)); - - intrinsicLeft.isEstimate[0] = 1; - intrinsicLeft.isEstimate[1] = 1; - intrinsicLeft.isEstimate[2] = 1; - intrinsicLeft.isEstimate[3] = 1; - intrinsicLeft.isEstimate[4] = 0; - intrinsicLeft.isEstimate[5] = 1; - intrinsicLeft.isEstimate[6] = 1; - intrinsicLeft.isEstimate[7] = 1; - intrinsicLeft.isEstimate[8] = 1; - - intrinsicRight.isEstimate[0] = 1; - intrinsicRight.isEstimate[1] = 1; - intrinsicRight.isEstimate[2] = 1; - intrinsicRight.isEstimate[3] = 1; - intrinsicRight.isEstimate[4] = 0; - intrinsicRight.isEstimate[5] = 1; - intrinsicRight.isEstimate[6] = 1; - intrinsicRight.isEstimate[7] = 1; - intrinsicRight.isEstimate[8] = 1; + std::vector rvecs1(n_images), tvecs1(n_images), rvecs2(n_images), tvecs2(n_images); + + if (!(flags & CALIB_FIX_INTRINSIC)) + { + calibrate(objectPoints, imagePoints1, imageSize, _K1, _D1, rvecs1, tvecs1, flags, TermCriteria(3, 20, 1e-6)); + calibrate(objectPoints, imagePoints2, imageSize, _K2, _D2, rvecs2, tvecs2, flags, TermCriteria(3, 20, 1e-6)); + } + + intrinsicLeft.Init(Vec2d(_K1(0,0), _K1(1, 1)), Vec2d(_K1(0,2), _K1(1, 2)), + Vec4d(_D1[0], _D1[1], _D1[2], _D1[3]), _K1(0, 1) / _K1(0, 0)); + + intrinsicRight.Init(Vec2d(_K2(0,0), _K2(1, 1)), Vec2d(_K2(0,2), _K2(1, 2)), + Vec4d(_D2[0], _D2[1], _D2[2], _D2[3]), _K2(0, 1) / _K2(0, 0)); + + if ((flags & CALIB_FIX_INTRINSIC)) + { + internal::CalibrateExtrinsics(objectPoints, imagePoints1, intrinsicLeft, check_cond, thresh_cond, rvecs1, tvecs1); + internal::CalibrateExtrinsics(objectPoints, imagePoints2, intrinsicRight, check_cond, thresh_cond, rvecs2, tvecs2); + } + + intrinsicLeft.isEstimate[0] = flags & CALIB_FIX_INTRINSIC ? 0 : 1; + intrinsicLeft.isEstimate[1] = flags & CALIB_FIX_INTRINSIC ? 0 : 1; + intrinsicLeft.isEstimate[2] = flags & CALIB_FIX_INTRINSIC ? 0 : 1; + intrinsicLeft.isEstimate[3] = flags & CALIB_FIX_INTRINSIC ? 0 : 1; + intrinsicLeft.isEstimate[4] = flags & (CALIB_FIX_SKEW | CALIB_FIX_INTRINSIC) ? 0 : 1; + intrinsicLeft.isEstimate[5] = flags & (CALIB_FIX_K1 | CALIB_FIX_INTRINSIC) ? 0 : 1; + intrinsicLeft.isEstimate[6] = flags & (CALIB_FIX_K2 | CALIB_FIX_INTRINSIC) ? 0 : 1; + intrinsicLeft.isEstimate[7] = flags & (CALIB_FIX_K3 | CALIB_FIX_INTRINSIC) ? 0 : 1; + intrinsicLeft.isEstimate[8] = flags & (CALIB_FIX_K4 | CALIB_FIX_INTRINSIC) ? 0 : 1; + + intrinsicRight.isEstimate[0] = flags & CALIB_FIX_INTRINSIC ? 0 : 1; + intrinsicRight.isEstimate[1] = flags & CALIB_FIX_INTRINSIC ? 0 : 1; + intrinsicRight.isEstimate[2] = flags & CALIB_FIX_INTRINSIC ? 0 : 1; + intrinsicRight.isEstimate[3] = flags & CALIB_FIX_INTRINSIC ? 0 : 1; + intrinsicRight.isEstimate[4] = flags & (CALIB_FIX_SKEW | CALIB_FIX_INTRINSIC) ? 0 : 1; + intrinsicRight.isEstimate[5] = flags & (CALIB_FIX_K1 | CALIB_FIX_INTRINSIC) ? 0 : 1; + intrinsicRight.isEstimate[6] = flags & (CALIB_FIX_K2 | CALIB_FIX_INTRINSIC) ? 0 : 1; + intrinsicRight.isEstimate[7] = flags & (CALIB_FIX_K3 | CALIB_FIX_INTRINSIC) ? 0 : 1; + intrinsicRight.isEstimate[8] = flags & (CALIB_FIX_K4 | CALIB_FIX_INTRINSIC) ? 0 : 1; intrinsicLeft_errors.isEstimate = intrinsicLeft.isEstimate; intrinsicRight_errors.isEstimate = intrinsicRight.isEstimate; @@ -847,10 +858,10 @@ double cv::Fisheye::stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayO cv::Mat om_ref, R_ref, T_ref, R1, R2; for (size_t image_idx = 0; image_idx < n_images; ++image_idx) { - cv::Rodrigues(rvecs1.getMat(image_idx), R1); - cv::Rodrigues(rvecs2.getMat(image_idx), R2); + cv::Rodrigues(rvecs1[image_idx], R1); + cv::Rodrigues(rvecs2[image_idx], R2); R_ref = R2 * R1.t(); - T_ref = tvecs2.getMat(image_idx).reshape(1, 3) - R_ref * tvecs1.getMat(image_idx).reshape(1, 3); + T_ref = cv::Mat(tvecs2[image_idx]) - R_ref * cv::Mat(tvecs1[image_idx]); cv::Rodrigues(R_ref, om_ref); om_ref.reshape(3, 1).copyTo(om_list.col(image_idx)); T_ref.reshape(3, 1).copyTo(T_list.col(image_idx)); @@ -861,6 +872,7 @@ double cv::Fisheye::stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayO cv::Mat J = cv::Mat::zeros(4 * n_points * n_images, 18 + 6 * (n_images + 1), CV_64FC1), e = cv::Mat::zeros(4 * n_points * n_images, 1, CV_64FC1), Jkk, ekk; cv::Mat J2_inv; + for(int iter = 0; ; ++iter) { if ((criteria.type == 1 && iter >= criteria.maxCount) || @@ -885,8 +897,8 @@ double cv::Fisheye::stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayO cv::Mat jacobians, projected; //left camera jacobian - cv::Mat rvec = rvecs1.getMat(image_idx).clone(); - cv::Mat tvec = tvecs1.getMat(image_idx).clone(); + cv::Mat rvec = cv::Mat(rvecs1[image_idx]); + cv::Mat tvec = cv::Mat(tvecs1[image_idx]); cv::internal::projectPoints(object, projected, rvec, tvec, intrinsicLeft, jacobians); cv::Mat(cv::Mat((imageLeft - projected).t()).reshape(1, 1).t()).copyTo(ekk.rowRange(0, 2 * n_points)); jacobians.colRange(8, 11).copyTo(Jkk.colRange(24 + image_idx * 6, 27 + image_idx * 6).rowRange(0, 2 * n_points)); @@ -898,8 +910,8 @@ double cv::Fisheye::stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayO //right camera jacobian internal::compose_motion(rvec, tvec, omcur, Tcur, omr, Tr, domrdomckk, domrdTckk, domrdom, domrdT, dTrdomckk, dTrdTckk, dTrdom, dTrdT); - rvec = rvecs2.getMat(image_idx).clone(); - tvec = tvecs2.getMat(image_idx).clone(); + rvec = cv::Mat(rvecs2[image_idx]); + tvec = cv::Mat(tvecs2[image_idx]); cv::internal::projectPoints(object, projected, omr, Tr, intrinsicRight, jacobians); cv::Mat(cv::Mat((imageRight - projected).t()).reshape(1, 1).t()).copyTo(ekk.rowRange(2 * n_points, 4 * n_points)); @@ -952,103 +964,43 @@ double cv::Fisheye::stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayO Tcur = Tcur + cv::Vec3d(deltas.rowRange(a + b + 3, a + b + 6)); for (size_t image_idx = 0; image_idx < n_images; ++image_idx) { - rvecs1.getMat(image_idx) = rvecs1.getMat(image_idx) + deltas.rowRange(a + b + 6 + image_idx * 6, a + b + 9 + image_idx * 6).reshape(3); - tvecs1.getMat(image_idx) = tvecs1.getMat(image_idx) + deltas.rowRange(a + b + 9 + image_idx * 6, a + b + 12 + image_idx * 6).reshape(3); + rvecs1[image_idx] = cv::Mat(cv::Mat(rvecs1[image_idx]) + deltas.rowRange(a + b + 6 + image_idx * 6, a + b + 9 + image_idx * 6)); + tvecs1[image_idx] = cv::Mat(cv::Mat(tvecs1[image_idx]) + deltas.rowRange(a + b + 9 + image_idx * 6, a + b + 12 + image_idx * 6)); } cv::Vec6d newTom(Tcur[0], Tcur[1], Tcur[2], omcur[0], omcur[1], omcur[2]); change = cv::norm(newTom - oldTom) / cv::norm(newTom); } - //estimate uncertainties - cv::Mat sigma_x; - cv::meanStdDev(e, cv::noArray(), sigma_x); - sigma_x *= sqrt((double)e.total() / (e.total() - 1)); - cv::sqrt(J2_inv, J2_inv); - cv::Mat errors = 3 * J2_inv.diag() * sigma_x; - int a1 = cv::countNonZero(intrinsicLeft_errors.isEstimate); - int b1 = cv::countNonZero(intrinsicRight_errors.isEstimate); - intrinsicLeft_errors = errors.rowRange(0, a1); - intrinsicRight_errors = errors.rowRange(a1, a1 + b1); - cv::Vec3d om_error = cv::Vec3d(errors.rowRange(a1 + b1, a1 + b1 + 3)); - cv::Vec3d T_error = cv::Vec3d(errors.rowRange(a1 + b1 + 3, a1 + b1 + 6)); - - std::cout << std::setprecision(15) << "left f = " << intrinsicLeft.f << std::endl; - std::cout << std::setprecision(15) << "left c = " << intrinsicLeft.c << std::endl; - std::cout << std::setprecision(15) << "left alpha = " << intrinsicLeft.alpha << std::endl; - std::cout << std::setprecision(15) << "left k = " << intrinsicLeft.k << std::endl; - - std::cout << std::setprecision(15) << "right f = " << intrinsicRight.f << std::endl; - std::cout << std::setprecision(15) << "right c = " << intrinsicRight.c << std::endl; - std::cout << std::setprecision(15) << "right alpha = " << intrinsicRight.alpha << std::endl; - std::cout << std::setprecision(15) << "right k = " << intrinsicRight.k << std::endl; - - std::cout << omcur << std::endl; - std::cout << Tcur << std::endl; - std::cout << "====================================================================================" << std::endl; - std::cout.flush(); - - std::cout << std::setprecision(15) << "left f = " << intrinsicLeft_errors.f << std::endl; - std::cout << std::setprecision(15) << "left c = " << intrinsicLeft_errors.c << std::endl; - std::cout << std::setprecision(15) << "left alpha = " << intrinsicLeft_errors.alpha << std::endl; - std::cout << std::setprecision(15) << "left k = " << intrinsicLeft_errors.k << std::endl; - - std::cout << std::setprecision(15) << "right f = " << intrinsicRight_errors.f << std::endl; - std::cout << std::setprecision(15) << "right c = " << intrinsicRight_errors.c << std::endl; - std::cout << std::setprecision(15) << "right alpha = " << intrinsicRight_errors.alpha << std::endl; - std::cout << std::setprecision(15) << "right k = " << intrinsicRight_errors.k << std::endl; - - std::cout << om_error << std::endl; - std::cout << T_error << std::endl; - std::cout << "====================================================================================" << std::endl; - std::cout.flush(); - - CV_Assert(cv::norm(intrinsicLeft.f - cv::Vec2d(561.195925927249, 562.849402029712)) < 1e-12); - CV_Assert(cv::norm(intrinsicLeft.c - cv::Vec2d(621.282400272412, 380.555455380889)) < 1e-12); - CV_Assert(intrinsicLeft.alpha == 0); - CV_Assert(cv::norm(intrinsicLeft.k - cv::Vec4d(-7.44253716539556e-05, -0.00702662033932424, 0.00737569823650885, -0.00342230256441771)) < 1e-12); - CV_Assert(cv::norm(intrinsicRight.f - cv::Vec2d(560.395452535348, 561.90171021422)) < 1e-12); - CV_Assert(cv::norm(intrinsicRight.c - cv::Vec2d(678.971652040359, 380.401340535339)) < 1e-12); - CV_Assert(intrinsicRight.alpha == 0); - CV_Assert(cv::norm(intrinsicRight.k - cv::Vec4d(-0.0130785435677431, 0.0284434505383497, -0.0360333869900506, 0.0144724062347222)) < 1e-12); - CV_Assert(cv::norm(omcur - cv::Vec3d(-0.00605728469659871, 0.006287139337868821, -0.06960627514977027)) < 1e-12); - CV_Assert(cv::norm(Tcur - cv::Vec3d(-0.09940272472412097, 0.002708121392654134, 0.001293302924726987)) < 1e-12); - - CV_Assert(cv::norm(intrinsicLeft_errors.f - cv::Vec2d(0.71024293066476, 0.717596249442966)) < 1e-12); - CV_Assert(cv::norm(intrinsicLeft_errors.c - cv::Vec2d(0.782164491020839, 0.538718002947604)) < 1e-12); - CV_Assert(intrinsicLeft_errors.alpha == 0); - CV_Assert(cv::norm(intrinsicLeft_errors.k - cv::Vec4d(0.00525819017878291, 0.0179451746982225, 0.0236417266063274, 0.0104757238170252)) < 1e-12); - CV_Assert(cv::norm(intrinsicRight_errors.f - cv::Vec2d(0.748707568264116, 0.745355483082726)) < 1e-12); - CV_Assert(cv::norm(intrinsicRight_errors.c - cv::Vec2d(0.788236834082615, 0.538854504490304)) < 1e-12); - CV_Assert(intrinsicRight_errors.alpha == 0); - CV_Assert(cv::norm(intrinsicRight_errors.k - cv::Vec4d(0.00534743998208779, 0.0175804116710864, 0.0226549382734192, 0.00979255348533809)) < 1e-12); - CV_Assert(cv::norm(om_error - cv::Vec3d(0.0005903298904975326, 0.001048251127879415, 0.0001775640833531587)) < 1e-12); - CV_Assert(cv::norm(T_error - cv::Vec3d(6.691282702437657e-05, 5.566841336891827e-05, 0.0001954901454589594)) < 1e-12); - - - Matx33d _K1 = Matx33d(intrinsicLeft.f[0], intrinsicLeft.f[0] * intrinsicLeft.alpha, intrinsicLeft.c[0], + double rms = 0; + const Vec2d* ptr_e = e.ptr(); + for (size_t i = 0; i < e.total() / 2; i++) + { + rms += ptr_e[i][0] * ptr_e[i][0] + ptr_e[i][1] * ptr_e[i][1]; + } + + rms /= (e.total() / 2); + rms = sqrt(rms); + + _K1 = Matx33d(intrinsicLeft.f[0], intrinsicLeft.f[0] * intrinsicLeft.alpha, intrinsicLeft.c[0], 0, intrinsicLeft.f[1], intrinsicLeft.c[1], 0, 0, 1); - Matx33d _K2 = Matx33d(intrinsicRight.f[0], intrinsicRight.f[0] * intrinsicRight.alpha, intrinsicRight.c[0], + _K2 = Matx33d(intrinsicRight.f[0], intrinsicRight.f[0] * intrinsicRight.alpha, intrinsicRight.c[0], 0, intrinsicRight.f[1], intrinsicRight.c[1], 0, 0, 1); Mat _R; Rodrigues(omcur, _R); -// if (K1.needed()) cv::Mat(_K1).convertTo(K2, K1.empty() ? CV_64FC1 : K1.type()); -// if (K2.needed()) cv::Mat(_K2).convertTo(K2, K2.empty() ? CV_64FC1 : K2.type()); -// if (D1.needed()) cv::Mat(intrinsicLeft.k).convertTo(D1, D1.empty() ? CV_64FC1 : D1.type()); -// if (D2.needed()) cv::Mat(intrinsicRight.k).convertTo(D2, D2.empty() ? CV_64FC1 : D2.type()); -// if (R.needed()) _R.convertTo(R, R.empty() ? CV_64FC1 : R.type()); -// if (T.needed()) Tcur.convertTo(R, R.empty() ? CV_64FC1 : R.type()); - -// if (rvecs1.needed()) cv::Mat(omc).convertTo(rvecs, rvecs.empty() ? CV_64FC3 : rvecs.type()); -// if (tvecs.needed()) cv::Mat(Tc).convertTo(tvecs, tvecs.empty() ? CV_64FC3 : tvecs.type()); + if (K1.needed()) cv::Mat(_K1).convertTo(K1, K1.empty() ? CV_64FC1 : K1.type()); + if (K2.needed()) cv::Mat(_K2).convertTo(K2, K2.empty() ? CV_64FC1 : K2.type()); + if (D1.needed()) cv::Mat(intrinsicLeft.k).convertTo(D1, D1.empty() ? CV_64FC1 : D1.type()); + if (D2.needed()) cv::Mat(intrinsicRight.k).convertTo(D2, D2.empty() ? CV_64FC1 : D2.type()); + if (R.needed()) _R.convertTo(R, R.empty() ? CV_64FC1 : R.type()); + if (T.needed()) cv::Mat(Tcur).convertTo(T, T.empty() ? CV_64FC1 : T.type()); - - return 0; + return rms; } namespace cv{ namespace { diff --git a/modules/calib3d/test/test_fisheye.cpp b/modules/calib3d/test/test_fisheye.cpp index 41bbfea59d..0caaf7f45f 100644 --- a/modules/calib3d/test/test_fisheye.cpp +++ b/modules/calib3d/test/test_fisheye.cpp @@ -368,6 +368,241 @@ TEST_F(FisheyeTest, rectify) } } +TEST_F(FisheyeTest, stereoCalibrate) +{ + const int n_images = 34; + + const std::string folder =combine(datasets_repository_path, "calib-3_stereo_from_JY"); + + std::vector > leftPoints(n_images); + std::vector > rightPoints(n_images); + std::vector > objectPoints(n_images); + + cv::FileStorage fs_left(combine(folder, "left.xml"), cv::FileStorage::READ); + CV_Assert(fs_left.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_left[cv::format("image_%d", i )] >> leftPoints[i]; + fs_left.release(); + + cv::FileStorage fs_right(combine(folder, "right.xml"), cv::FileStorage::READ); + CV_Assert(fs_right.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_right[cv::format("image_%d", i )] >> rightPoints[i]; + fs_right.release(); + + cv::FileStorage fs_object(combine(folder, "object.xml"), cv::FileStorage::READ); + CV_Assert(fs_object.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_object[cv::format("image_%d", i )] >> objectPoints[i]; + fs_object.release(); + + std::ofstream fs; + + for (size_t i = 0; i < leftPoints.size(); i++) + { + std::string ss = combine(folder, "left"); + ss = combine_format(ss, "%d", i); + fs.open(ss.c_str()); + CV_Assert(fs.is_open()); + for (size_t j = 0; j < leftPoints[i].size(); j++) + { + double x = leftPoints[i][j].x; + double y = leftPoints[i][j].y; + fs << std::setprecision(15) << x << "; " << y; + fs << std::endl; + } + fs.close(); + } + + for (size_t i = 0; i < rightPoints.size(); i++) + { + std::string ss = combine(folder, "right"); + ss = combine_format(ss, "%d", i); + fs.open(ss.c_str()); + CV_Assert(fs.is_open()); + for (size_t j = 0; j < rightPoints[i].size(); j++) + { + double x = rightPoints[i][j].x; + double y = rightPoints[i][j].y; + fs << std::setprecision(15) << x << "; " << y; + fs << std::endl; + } + fs.close(); + } + + for (size_t i = 0; i < objectPoints.size(); i++) + { + std::string ss = combine(folder, "object"); + ss = combine_format(ss, "%d", i); + fs.open(ss.c_str()); + CV_Assert(fs.is_open()); + for (size_t j = 0; j < objectPoints[i].size(); j++) + { + double x = objectPoints[i][j].x; + double y = objectPoints[i][j].y; + double z = objectPoints[i][j].z; + fs << std::setprecision(15) << x << "; " << y; + fs << std::setprecision(15) << "; " << z; + fs << std::endl; + } + fs.close(); + } + + cv::Matx33d K1, K2, R; + cv::Vec3d T; + cv::Vec4d D1, D2; + + int flag = 0; + flag |= cv::Fisheye::CALIB_RECOMPUTE_EXTRINSIC; + flag |= cv::Fisheye::CALIB_CHECK_COND; + flag |= cv::Fisheye::CALIB_FIX_SKEW; + // flag |= cv::Fisheye::CALIB_FIX_INTRINSIC; + + cv::Fisheye::stereoCalibrate(objectPoints, leftPoints, rightPoints, + K1, D1, K2, D2, imageSize, R, T, flag, + cv::TermCriteria(3, 12, 0)); + + cv::Matx33d R_correct( 0.9975587205950972, 0.06953016383322372, 0.006492709911733523, + -0.06956823121068059, 0.9975601387249519, 0.005833595226966235, + -0.006071257768382089, -0.006271040135405457, 0.9999619062167968); + cv::Vec3d T_correct(-0.099402724724121, 0.00270812139265413, 0.00129330292472699); + cv::Matx33d K1_correct (561.195925927249, 0, 621.282400272412, + 0, 562.849402029712, 380.555455380889, + 0, 0, 1); + + cv::Matx33d K2_correct (560.395452535348, 0, 678.971652040359, + 0, 561.90171021422, 380.401340535339, + 0, 0, 1); + + cv::Vec4d D1_correct (-7.44253716539556e-05, -0.00702662033932424, 0.00737569823650885, -0.00342230256441771); + cv::Vec4d D2_correct (-0.0130785435677431, 0.0284434505383497, -0.0360333869900506, 0.0144724062347222); + + EXPECT_MAT_NEAR(R, R_correct, 1e-10); + EXPECT_MAT_NEAR(T, T_correct, 1e-10); + + EXPECT_MAT_NEAR(K1, K1_correct, 1e-10); + EXPECT_MAT_NEAR(K2, K2_correct, 1e-10); + + EXPECT_MAT_NEAR(D1, D1_correct, 1e-10); + EXPECT_MAT_NEAR(D2, D2_correct, 1e-10); + +} + +TEST_F(FisheyeTest, stereoCalibrateFixIntrinsic) +{ + const int n_images = 34; + + const std::string folder =combine(datasets_repository_path, "calib-3_stereo_from_JY"); + + std::vector > leftPoints(n_images); + std::vector > rightPoints(n_images); + std::vector > objectPoints(n_images); + + cv::FileStorage fs_left(combine(folder, "left.xml"), cv::FileStorage::READ); + CV_Assert(fs_left.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_left[cv::format("image_%d", i )] >> leftPoints[i]; + fs_left.release(); + + cv::FileStorage fs_right(combine(folder, "right.xml"), cv::FileStorage::READ); + CV_Assert(fs_right.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_right[cv::format("image_%d", i )] >> rightPoints[i]; + fs_right.release(); + + cv::FileStorage fs_object(combine(folder, "object.xml"), cv::FileStorage::READ); + CV_Assert(fs_object.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_object[cv::format("image_%d", i )] >> objectPoints[i]; + fs_object.release(); + + + std::ofstream fs; + + for (size_t i = 0; i < leftPoints.size(); i++) + { + std::string ss = combine(folder, "left"); + ss = combine_format(ss, "%d", i); + fs.open(ss.c_str()); + CV_Assert(fs.is_open()); + for (size_t j = 0; j < leftPoints[i].size(); j++) + { + double x = leftPoints[i][j].x; + double y = leftPoints[i][j].y; + fs << std::setprecision(15) << x << "; " << y; + fs << std::endl; + } + fs.close(); + } + + for (size_t i = 0; i < rightPoints.size(); i++) + { + std::string ss = combine(folder, "right"); + ss = combine_format(ss, "%d", i); + fs.open(ss.c_str()); + CV_Assert(fs.is_open()); + for (size_t j = 0; j < rightPoints[i].size(); j++) + { + double x = rightPoints[i][j].x; + double y = rightPoints[i][j].y; + fs << std::setprecision(15) << x << "; " << y; + fs << std::endl; + } + fs.close(); + } + + for (size_t i = 0; i < objectPoints.size(); i++) + { + std::string ss = combine(folder, "object"); + ss = combine_format(ss, "%d", i); + fs.open(ss.c_str()); + CV_Assert(fs.is_open()); + for (size_t j = 0; j < objectPoints[i].size(); j++) + { + double x = objectPoints[i][j].x; + double y = objectPoints[i][j].y; + double z = objectPoints[i][j].z; + fs << std::setprecision(15) << x << "; " << y; + fs << std::setprecision(15) << "; " << z; + fs << std::endl; + } + fs.close(); + } + + cv::Matx33d R; + cv::Vec3d T; + + int flag = 0; + flag |= cv::Fisheye::CALIB_RECOMPUTE_EXTRINSIC; + flag |= cv::Fisheye::CALIB_CHECK_COND; + flag |= cv::Fisheye::CALIB_FIX_SKEW; + flag |= cv::Fisheye::CALIB_FIX_INTRINSIC; + + cv::Matx33d K1 (561.195925927249, 0, 621.282400272412, + 0, 562.849402029712, 380.555455380889, + 0, 0, 1); + + cv::Matx33d K2 (560.395452535348, 0, 678.971652040359, + 0, 561.90171021422, 380.401340535339, + 0, 0, 1); + + cv::Vec4d D1 (-7.44253716539556e-05, -0.00702662033932424, 0.00737569823650885, -0.00342230256441771); + cv::Vec4d D2 (-0.0130785435677431, 0.0284434505383497, -0.0360333869900506, 0.0144724062347222); + + cv::Fisheye::stereoCalibrate(objectPoints, leftPoints, rightPoints, + K1, D1, K2, D2, imageSize, R, T, flag, + cv::TermCriteria(3, 12, 0)); + + cv::Matx33d R_correct( 0.9975587205950972, 0.06953016383322372, 0.006492709911733523, + -0.06956823121068059, 0.9975601387249519, 0.005833595226966235, + -0.006071257768382089, -0.006271040135405457, 0.9999619062167968); + cv::Vec3d T_correct(-0.099402724724121, 0.00270812139265413, 0.00129330292472699); + + + EXPECT_MAT_NEAR(R, R_correct, 1e-10); + EXPECT_MAT_NEAR(T, T_correct, 1e-10); +} + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// FisheyeTest:: From ef01044b2f87af12b3ca1a708638dfa79e9e08ec Mon Sep 17 00:00:00 2001 From: Ilya Krylov Date: Tue, 6 May 2014 11:09:22 +0400 Subject: [PATCH 012/189] Added documentation for Fisheye::stereoCalibrate --- ...mera_calibration_and_3d_reconstruction.rst | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst index 710672cf52..e020b21e34 100644 --- a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst +++ b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst @@ -1791,6 +1791,48 @@ Performs camera calibaration :param criteria: Termination criteria for the iterative optimization algorithm. +Fisheye::stereoCalibrate +---------------------------- +Performs stereo calibration calibaration + +.. ocv:function:: double stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, Size imageSize, OutputArray R, OutputArray T, int flags = CALIB_FIX_INTRINSIC, TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)) + + :param objectPoints: Vector of vectors of the calibration pattern points. + + :param imagePoints1: Vector of vectors of the projections of the calibration pattern points, observed by the first camera. + + :param imagePoints2: Vector of vectors of the projections of the calibration pattern points, observed by the second camera. + + :param K1: Input/output first camera matrix: :math:`\vecthreethree{f_x^{(j)}}{0}{c_x^{(j)}}{0}{f_y^{(j)}}{c_y^{(j)}}{0}{0}{1}` , :math:`j = 0,\, 1` . If any of ``Fisheye::CALIB_USE_INTRINSIC_GUESS`` , ``Fisheye::CV_CALIB_FIX_INTRINSIC`` are specified, some or all of the matrix components must be initialized. + + :param D1: Input/output vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)` of 4 elements. + + :param K2: Input/output second camera matrix. The parameter is similar to ``K1`` . + + :param D2: Input/output lens distortion coefficients for the second camera. The parameter is similar to ``D1`` . + + :param imageSize: Size of the image used only to initialize intrinsic camera matrix. + + :param R: Output rotation matrix between the 1st and the 2nd camera coordinate systems. + + :param T: Output translation vector between the coordinate systems of the cameras. + + :param flags: Different flags that may be zero or a combination of the following values: + + * **Fisheye::CV_CALIB_FIX_INTRINSIC** Fix ``K1, K2?`` and ``D1, D2?`` so that only ``R, T`` matrices are estimated. + + * **Fisheye::CALIB_USE_INTRINSIC_GUESS** ``K1, K2`` contains valid initial values of ``fx, fy, cx, cy`` that are optimized further. Otherwise, ``(cx, cy)`` is initially set to the image center (``imageSize`` is used), and focal distances are computed in a least-squares fashion. + + * **Fisheye::CALIB_RECOMPUTE_EXTRINSIC** Extrinsic will be recomputed after each iteration of intrinsic optimization. + + * **Fisheye::CALIB_CHECK_COND** The functions will check validity of condition number. + + * **Fisheye::CALIB_FIX_SKEW** Skew coefficient (alpha) is set to zero and stay zero. + + * **Fisheye::CALIB_FIX_K1..4** Selected distortion coefficients are set to zeros and stay zero. + + :param criteria: Termination criteria for the iterative optimization algorithm. + .. [BT98] Birchfield, S. and Tomasi, C. A pixel dissimilarity measure that is insensitive to image sampling. IEEE Transactions on Pattern Analysis and Machine Intelligence. 1998. .. [BouguetMCT] J.Y.Bouguet. MATLAB calibration tool. http://www.vision.caltech.edu/bouguetj/calib_doc/ From 1f94b7dfc95684d93908ec3c8c0332685c8c2269 Mon Sep 17 00:00:00 2001 From: Ilya Krylov Date: Tue, 6 May 2014 11:17:10 +0400 Subject: [PATCH 013/189] minor --- modules/calib3d/include/opencv2/calib3d/calib3d.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/calib3d/include/opencv2/calib3d/calib3d.hpp b/modules/calib3d/include/opencv2/calib3d/calib3d.hpp index b6d85a0959..7b7f92efc8 100644 --- a/modules/calib3d/include/opencv2/calib3d/calib3d.hpp +++ b/modules/calib3d/include/opencv2/calib3d/calib3d.hpp @@ -807,8 +807,8 @@ public: //! performs stereo calibaration static double stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, Size imageSize, - OutputArray R, OutputArray T, int flags, - TermCriteria criteria = TermCriteria(3, 100, 1e-10)); + OutputArray R, OutputArray T, int flags = CALIB_FIX_INTRINSIC, + TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)); }; From 36afd4ef55fd291d0948da41324d124aa2d3eb4a Mon Sep 17 00:00:00 2001 From: Konstantin Matskevich Date: Tue, 6 May 2014 16:30:03 +0400 Subject: [PATCH 014/189] added additionalInfo in faceRecognition --- .../include/opencv2/contrib/contrib.hpp | 8 + modules/contrib/src/facerec.cpp | 186 +++++++++++++++++- samples/cpp/facerec_demo.cpp | 16 +- 3 files changed, 204 insertions(+), 6 deletions(-) diff --git a/modules/contrib/include/opencv2/contrib/contrib.hpp b/modules/contrib/include/opencv2/contrib/contrib.hpp index 7d881c359a..18c6eeb4b6 100644 --- a/modules/contrib/include/opencv2/contrib/contrib.hpp +++ b/modules/contrib/include/opencv2/contrib/contrib.hpp @@ -948,6 +948,14 @@ namespace cv // Deserializes this object from a given cv::FileStorage. virtual void load(const FileStorage& fs) = 0; + // Sets additions information as pairs label - info. + virtual void setLabelsInfo(const std::map& additionalInfo) = 0; + + // Gets string information by label + virtual string getLabelInfo(const int label) = 0; + + // Gets labels by string + virtual vector getLabelsByString(const string str) = 0; }; CV_EXPORTS_W Ptr createEigenFaceRecognizer(int num_components = 0, double threshold = DBL_MAX); diff --git a/modules/contrib/src/facerec.cpp b/modules/contrib/src/facerec.cpp index a3d695ad16..20bd411075 100644 --- a/modules/contrib/src/facerec.cpp +++ b/modules/contrib/src/facerec.cpp @@ -18,6 +18,43 @@ #include "precomp.hpp" #include +struct LabelInfo +{ + LabelInfo():label(-1), value("") {} + LabelInfo(int _label, std::string _value): label(_label), value(_value) {} + std::string value; + int label; + void write(cv::FileStorage& fs) const + { + fs << "{" << "label" << label << "value" << value << "}"; + } + void read(const cv::FileNode& node) + { + label = (int)node["label"]; + value = (std::string)node["value"]; + } + friend std::ostream& operator<<(std::ostream& out, const LabelInfo& info); +}; + +static void write(cv::FileStorage& fs, const std::string&, const LabelInfo& x) +{ + x.write(fs); +} + +static void read(const cv::FileNode& node, LabelInfo& x, const LabelInfo& default_value = LabelInfo()) +{ + if(node.empty()) + x = default_value; + else + x.read(node); +} + +std::ostream& operator<<(std::ostream& out, const LabelInfo& info) +{ + out << "{ label = " << info.label << ", " << "value = " << info.value << "}"; + return out; +} + namespace cv { @@ -98,7 +135,6 @@ inline vector<_Tp> remove_dups(const vector<_Tp>& src) { return elems; } - // Turk, M., and Pentland, A. "Eigenfaces for recognition.". Journal of // Cognitive Neuroscience 3 (1991), 71–86. class Eigenfaces : public FaceRecognizer @@ -111,6 +147,7 @@ private: Mat _eigenvectors; Mat _eigenvalues; Mat _mean; + std::map _labelsInfo; public: using FaceRecognizer::save; @@ -147,6 +184,15 @@ public: // See FaceRecognizer::save. void save(FileStorage& fs) const; + // Sets additions information as pairs label - info. + void setLabelsInfo(const std::map& labelsInfo); + + // Gets additional information by label + string getLabelInfo(const int label); + + // Gets labels by string + std::vector getLabelsByString(const string str); + AlgorithmInfo* info() const; }; @@ -164,6 +210,7 @@ private: Mat _mean; vector _projections; Mat _labels; + std::map _labelsInfo; public: using FaceRecognizer::save; @@ -202,6 +249,15 @@ public: // See FaceRecognizer::save. void save(FileStorage& fs) const; + // Sets additions information as pairs label - info. + void setLabelsInfo(const std::map& labelsInfo); + + // Gets additional information by label + string getLabelInfo(const int label); + + // Gets labels by string + std::vector getLabelsByString(const string str); + AlgorithmInfo* info() const; }; @@ -222,6 +278,7 @@ private: vector _histograms; Mat _labels; + std::map _labelsInfo; // Computes a LBPH model with images in src and // corresponding labels in labels, possibly preserving @@ -287,6 +344,15 @@ public: // See FaceRecognizer::save. void save(FileStorage& fs) const; + // Sets additions information as pairs label - info. + void setLabelsInfo(const std::map& labelsInfo); + + // Gets additional information by label + string getLabelInfo(const int label); + + // Gets labels by string + std::vector getLabelsByString(const string str); + // Getter functions. int neighbors() const { return _neighbors; } int radius() const { return _radius; } @@ -423,6 +489,17 @@ void Eigenfaces::load(const FileStorage& fs) { // read sequences readFileNodeList(fs["projections"], _projections); fs["labels"] >> _labels; + const FileNode& fn = fs["info"]; + if (fn.type() == FileNode::SEQ) + { + _labelsInfo.clear(); + for (FileNodeIterator it = fn.begin(); it != fn.end();) + { + LabelInfo item; + it >> item; + _labelsInfo.insert(std::make_pair(item.label, item.value)); + } + } } void Eigenfaces::save(FileStorage& fs) const { @@ -434,6 +511,34 @@ void Eigenfaces::save(FileStorage& fs) const { // write sequences writeFileNodeList(fs, "projections", _projections); fs << "labels" << _labels; + fs << "info" << "["; + for (std::map::const_iterator it = _labelsInfo.begin(); it != _labelsInfo.end(); it++) + fs << LabelInfo(it->first, it->second); + fs << "]"; +} + +void Eigenfaces::setLabelsInfo(const std::map& labelsInfo) +{ + _labelsInfo = labelsInfo; +} + +string Eigenfaces::getLabelInfo(const int label) +{ + if(_labelsInfo.count(label) > 0) + return _labelsInfo[label]; + return ""; +} + +vector Eigenfaces::getLabelsByString(const string str) +{ + vector labels; + for(std::map::const_iterator it = _labelsInfo.begin(); it != _labelsInfo.end(); it++) + { + size_t found = (it->second).find(str); + if(found != string::npos) + labels.push_back(it->first); + } + return labels; } //------------------------------------------------------------------------------ @@ -544,6 +649,17 @@ void Fisherfaces::load(const FileStorage& fs) { // read sequences readFileNodeList(fs["projections"], _projections); fs["labels"] >> _labels; + const FileNode& fn = fs["info"]; + if (fn.type() == FileNode::SEQ) + { + _labelsInfo.clear(); + for (FileNodeIterator it = fn.begin(); it != fn.end();) + { + LabelInfo item; + it >> item; + _labelsInfo.insert(std::make_pair(item.label, item.value)); + } + } } // See FaceRecognizer::save. @@ -556,6 +672,34 @@ void Fisherfaces::save(FileStorage& fs) const { // write sequences writeFileNodeList(fs, "projections", _projections); fs << "labels" << _labels; + fs << "info" << "["; + for (std::map::const_iterator it = _labelsInfo.begin(); it != _labelsInfo.end(); it++) + fs << LabelInfo(it->first, it->second); + fs << "]"; +} + +void Fisherfaces::setLabelsInfo(const std::map& labelsInfo) +{ + _labelsInfo = labelsInfo; +} + +string Fisherfaces::getLabelInfo(const int label) +{ + if(_labelsInfo.count(label) > 0) + return _labelsInfo[label]; + return ""; +} + +vector Fisherfaces::getLabelsByString(const string str) +{ + vector labels; + for(std::map::const_iterator it = _labelsInfo.begin(); it != _labelsInfo.end(); it++) + { + size_t found = (it->second).find(str); + if(found != string::npos) + labels.push_back(it->first); + } + return labels; } //------------------------------------------------------------------------------ @@ -743,6 +887,17 @@ void LBPH::load(const FileStorage& fs) { //read matrices readFileNodeList(fs["histograms"], _histograms); fs["labels"] >> _labels; + const FileNode& fn = fs["info"]; + if (fn.type() == FileNode::SEQ) + { + _labelsInfo.clear(); + for (FileNodeIterator it = fn.begin(); it != fn.end();) + { + LabelInfo item; + it >> item; + _labelsInfo.insert(std::make_pair(item.label, item.value)); + } + } } // See FaceRecognizer::save. @@ -754,6 +909,34 @@ void LBPH::save(FileStorage& fs) const { // write matrices writeFileNodeList(fs, "histograms", _histograms); fs << "labels" << _labels; + fs << "info" << "["; + for (std::map::const_iterator it = _labelsInfo.begin(); it != _labelsInfo.end(); it++) + fs << LabelInfo(it->first, it->second); + fs << "]"; +} + +void LBPH::setLabelsInfo(const std::map& labelsInfo) +{ + _labelsInfo = labelsInfo; +} + +string LBPH::getLabelInfo(const int label) +{ + if(_labelsInfo.count(label) > 0) + return _labelsInfo[label]; + return ""; +} + +vector LBPH::getLabelsByString(const string str) +{ + vector labels; + for(std::map::const_iterator it = _labelsInfo.begin(); it != _labelsInfo.end(); it++) + { + size_t found = (it->second).find(str); + if(found != string::npos) + labels.push_back(it->first); + } + return labels; } void LBPH::train(InputArrayOfArrays _in_src, InputArray _in_labels) { @@ -849,7 +1032,6 @@ int LBPH::predict(InputArray _src) const { return label; } - Ptr createEigenFaceRecognizer(int num_components, double threshold) { return new Eigenfaces(num_components, threshold); diff --git a/samples/cpp/facerec_demo.cpp b/samples/cpp/facerec_demo.cpp index 6402082e82..dfc15aa81e 100644 --- a/samples/cpp/facerec_demo.cpp +++ b/samples/cpp/facerec_demo.cpp @@ -39,20 +39,23 @@ static Mat toGrayscale(InputArray _src) { return dst; } -static void read_csv(const string& filename, vector& images, vector& labels, char separator = ';') { +static void read_csv(const string& filename, vector& images, vector& labels, std::map& labelsInfo, char separator = ';') { std::ifstream file(filename.c_str(), ifstream::in); if (!file) { string error_message = "No valid input file was given, please check the given filename."; CV_Error(CV_StsBadArg, error_message); } - string line, path, classlabel; + string line, path, classlabel, info; while (getline(file, line)) { stringstream liness(line); getline(liness, path, separator); - getline(liness, classlabel); + getline(liness, classlabel, separator); + getline(liness, info, separator); if(!path.empty() && !classlabel.empty()) { images.push_back(imread(path, 0)); labels.push_back(atoi(classlabel.c_str())); + if(!info.empty()) + labelsInfo.insert(std::make_pair(labels.back(), info)); } } } @@ -69,15 +72,17 @@ int main(int argc, const char *argv[]) { // These vectors hold the images and corresponding labels. vector images; vector labels; + std::map labelsInfo; // Read in the data. This can fail if no valid // input filename is given. try { - read_csv(fn_csv, images, labels); + read_csv(fn_csv, images, labels, labelsInfo); } catch (cv::Exception& e) { cerr << "Error opening file \"" << fn_csv << "\". Reason: " << e.msg << endl; // nothing more we can do exit(1); } + // Quit if there are not enough images for this demo. if(images.size() <= 1) { string error_message = "This demo needs at least 2 images to work. Please add more images to your data set!"; @@ -111,6 +116,7 @@ int main(int argc, const char *argv[]) { // cv::createEigenFaceRecognizer(10, 123.0); // Ptr model = createEigenFaceRecognizer(); + model->setLabelsInfo(labelsInfo); model->train(images, labels); // The following line predicts the label of a given // test image: @@ -124,6 +130,8 @@ int main(int argc, const char *argv[]) { // string result_message = format("Predicted class = %d / Actual class = %d.", predictedLabel, testLabel); cout << result_message << endl; + if( (predictedLabel == testLabel) && (model->getLabelInfo(predictedLabel) != "") ) + cout << format("%d-th label's info: %s", predictedLabel, model->getLabelInfo(predictedLabel).c_str()) << endl; // Sometimes you'll need to get/set internal model data, // which isn't exposed by the public cv::FaceRecognizer. // Since each cv::FaceRecognizer is derived from a From 349ff631a5d30e979608581adaf75abf7450643b Mon Sep 17 00:00:00 2001 From: Ilya Krylov Date: Wed, 7 May 2014 20:53:07 +0400 Subject: [PATCH 015/189] Added sample of work of Fisheye::undistortImage and its description to documentation. Removed readPoints and readExtrinsic (useless) --- ...mera_calibration_and_3d_reconstruction.rst | 32 +++ .../calib3d/doc/pics/fisheye_undistorted.jpg | Bin 0 -> 86109 bytes modules/calib3d/test/test_fisheye.cpp | 226 +++++------------- 3 files changed, 88 insertions(+), 170 deletions(-) create mode 100644 modules/calib3d/doc/pics/fisheye_undistorted.jpg diff --git a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst index e020b21e34..20a731f958 100644 --- a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst +++ b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst @@ -1686,6 +1686,38 @@ Computes undistortion and rectification maps for image transform by cv::remap(). :param map2: The second output map. +Fisheye::undistortImage +------------- +Transforms an image to compensate for fisheye lens distortion. + +.. ocv:function:: void Fisheye::undistortImage(InputArray distorted, OutputArray undistorted, + InputArray K, InputArray D, InputArray Knew = cv::noArray(), const Size& new_size = Size()) + + :param distorted: image with fisheye lens distortion. + + :param K: Camera matrix :math:`K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}`. + + :param D: Input vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)`. + + :param Knew: Camera matrix of the distorted image. By default, it is the same as ``cameraMatrix`` but you may additionally scale and shift the result by using a different matrix. + + :param undistorted: Output image with compensated fisheye lens distortion. + +The function transforms an image to compensate radial and tangential lens distortion. + +The function is simply a combination of +:ocv:func:`Fisheye::initUndistortRectifyMap` (with unity ``R`` ) and +:ocv:func:`remap` (with bilinear interpolation). See the former function for details of the transformation being performed. + +See below the results of undistortImage. + * a\) result of :ocv:func:`undistort` of perspective camera model (all possible coefficients (k_1, k_2, k_3, k_4, k_5, k_6) of distortion were optimized under calibration) + * b\) result of :ocv:func:`Fisheye::undistrortImage` of fisheye camera model (all possible coefficients (k_1, k_2, k_3, k_4) of fisheye distortion were optimized under calibration) + * c\) original image was captured with fisheye lens + +Pictures a) and b) almost the same. But if we consider points of image located far from the center of image, we can notice that on image a) these points are distorted. + +.. image:: pics/fisheye_undistorted.jpg + Fisheye::estimateNewCameraMatrixForUndistortRectify ---------------------------------------------------------- diff --git a/modules/calib3d/doc/pics/fisheye_undistorted.jpg b/modules/calib3d/doc/pics/fisheye_undistorted.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bfdc9afd5cbd297c10bc43a969a84d0bd3a5091d GIT binary patch literal 86109 zcmbTdcRbr){6891lq#k6iWa35RaIL)t=dJ6icwTmjZn2$NJ~+BQxvUPyGCqchbn3l zG>BO%F++x%et*Bm?>-*)uY2#w`~7(2k(~89=XGA=`Ffp;*^4E>bzMyzO#l@Y72qZ1 z1Gtz6r~@uhQT==VccG@C{#R%(U#6y^qot$!_gEL0c003ZNBMMIhG zzX|{ELUoDyG7T+dN(@&i72ww?)2F7sM42qj<;#@X!Ib|2msx07Z^}HPy(cVTEO1d4|$6aBy;Q^N8FQ6}uz;K<=Tuf})c86Aeu*Z5>?`)8}Sj za|=uR*A8zSot#~~ynTHA`~w2RK88m`eu|1tPDxEm&-k2~m0wU;R9y1Cw5+zS9^TN{ z)ZEhD)7#gN92opLJ~25pJu^FpT3*4duB~ruZvDj_93CB?oZ`>U|ItMSp#EQE{U6Hy zA9S%$=(#LoaU1C81H42qQsIw(!x_?m<>aTu%D1;Ae8 z^a8+N0_(AYngb6_Lxe8?%SOQ$03>8|%8R6-JT%Df{MW4Fh>BoAG`|4k7vV%N01Pqv zWMxBJRL@E?@W3=g1h#Ah``08inw5m0vId2bf!6-)A zLwps5%4Rklccuu}`U*Z>wS4ctR2j&c#whGA`TA9R5!j(-6;>zTxgP~qQ%Bk{`od>Q9h6i;b6U)uTV)my<@)ltNoK?5KHBrY+y^}&DKj9KV2-iu9W(F@Vo{W(lz0Hs zJ!^g?ZW^*XGBgptQU0jHM)L~6XP#{(pKCWXUZNrzU4TOG zVx%BIQ+)fk&4YU1Kp%36;O54fra%FzK92pQ=#=KK-m(_rFS~wu6oK= z7+K%DMYSW8rq9)-#7W{@Pxa{1d|bsQ>AB;)6P+d}`F@+J;`$9J5} zw+3WYRG`!UBAZD0FYA2Gp&Bc}W=8$jkJezq{APtuY_j7cXp~4sl*)f@qJXlkAzAig-obhNddJt_Y*d^Zi z{w`a+D0#B=0+3f;)vmIB0pL+DTLhj3wOjxY!{i5}5*|e7;=2sxwe%pk6k%}@hW=N_ zdFpM~1t6idnm|Njv|kMrnx2KUZ+YG0^9ia&%Wfyb9_^&w5E5fWFxc3qG-H_6dKNkS( z)7d>tOKWXiPh78?F0m3nhSf5{J5&z4`%r(^RCv`6sbkN0T%p>)yB=$2sdHe;gNBdx zRU!^d$-=N@!+&zvx#Xl3UynGX{K8Dg{MYq6skj?AVffvESp`e=LrH@o+tN)0b{5Ei*eru;UjVwZC^{p4 z0=E1kMC!%`K;(bMI7Lv#II4o!YvA2hq*ioK z6`byKHulwV%~@AD=o3<|0F&pRG5uDl1}%#Vz_oCk7dblb-vp{DlmaP(a)SQ%pt=7B zow-`(@AvGto7Xqke^t2P5b^Q$3Z~7`nC-L${$*u4 ze!GTXdjX*BfEwfE`wa27<#+A9R$#0UvPcu$0ux~kHp;>+n-uEmmL`4vkf%$A3UY^n zPBlXC7l5vk3&2549%^G-o}498-Nj2;G0(icFl*%KkewNaC}^hgX%Z%P62HRVl3jA_3E`G^WrZXOlO6%4X56)L zB%AAwfdaq8-@Lhu6M+t#^(yNNt2&A69u4g;)M&R+W@9YkZ7o`6{)leiT#pHEYRAfL z^|hzW!3-Kyn?bzM4jWr-t2-J2D^?eR91yc+{0tJFC*?_DKjS5Kt0VHLDvp#DWEdh0 z<^#bGl@-Fd2ueIWW8FX9vm6tM)TBi33jni47devapmX4g#1@E_c)M%TA{8<6huiO-w8q!M`On82}c@Jv`zBdYE=kHa|xsJ!pPE8)?FI(Q!#=u`dW*!Bj# zuGgccV{#Ak>ENHbT$On-wK$SgZ2gL0RmbG1Tj2gG5VLLeqt=!!S#*AIC*d0$fl}_V zd=a-g?DHK&l8K}~bOlRRgiOtVuU-IHNw=>YCJL-P-ZDvye1@XOl>}Esb09y5^)9uB9@98=CcP>9E394G$eR==;pZLw!=0c!QicRu&$J;j4 zhWB^Ps#BoL%Y@8jR(aCV9H`Ru2aaG&__Q8%Q1v-i1?Ou_zaT0C*7@Pw$n4lj{rxY* zONW#WwOZ-vAS-Y72(;uDUI*eYTO}-c*uJpZOhR%2?6m%CV}SF2^nfwD>yAB6o}(Wc zINRt!)Vz51Q-EO7Xak^kbV&ZnG_r94aHv8*BBc>!i>=VrGO@}+F>QMKs- z?ITQdAd-Bk8fEobe{RqmdLO$H9<37iCeH5A&UPTqJQpp)EsCp(-72f$6C1^rDqJSH zV4g7KQeA!-HUKhuYTghl{j(sJs@1zvbMdbaWCUnw8HA<CFApr!|sM4;Pdxp*jRBiVRWk z9_2QFQET379v1ckyyZO>#mTkuLq%_?NiOD%36~=Om1--R%*n!|H*$A0^-RtZNL8Sv zTvT2UMYlt&z%sO=R6*c@KZ4lB{zzY(KCkA_cj}DbV^M-m2=W{jcT^q@dE&NoY)MQe zwIPYU^`!CAqjFJ8x$+dj=t92H`=T=ZQ!~mL1b%*`SsAyi>nflhtFx!^1e$wK%;}&B8`WEyK4x^}FXHsZ1Yj zVpB(eY>~lzaUf%sk0~}|lG5vf@5b51V0?nrH;FJ^f2F;4t|@r+MBO(2%NL`>q1(fd zwfGn05i?_Wb2`qq6+U4wAV%*Rx!dp zH|9Z9qte{ap~8`hQOqw91HM$tCnou;`?9kk{5C{cyrCm-Uas}}=KUwa+WsVv<#EEt z3qXTy1k}FL+BuhFd`~*h;Mu;tCv&vxE*L!V9-gZOU!SYW-qC=DS7g0E-V;h%iyFRqbrhk9$Jhb6?j zXo?r}zAC2BHsGl&IqEguXuFlG&jrtX;)E~9-CWJ+Wl=AjN5~BN_*?4GwdvkRL=h!+ zgWT>*m}AR3ca)xg68f*Oj0JBmSKHI2ySIbfP8F=wO-A_66Dyz@UWBX8=f2+@m}*ue zPFq@8wWFMB=KG(^G-V2p(EVzUQrxmh!d?KDB`B;+bC2k@^_t+Ow}{ zT;?0gm|Q-Hk=ypm5=O-%+(T-tP@~RliG9lHX;UvsT?KE_ExcgW;lmB<`z?pTUUgeI zwlvutWH+E$^K9>Ua3h;aPdp8R$%@@mIPw3(vv-C1T)OCC*9CKhiz|Gh zZ+0icg`{A`ciuY2kDzqkIK+#Yw#6eEqG@$RCjc{P^W<3@wn?Acp@Y(U1=ku!DM;8U z;0tCuI@3UA;a0Y)y5r$jsbKMIbT8mI%?$pv?6btdzxN*PT{$k-@Xf=O#k90sx^3tR z)2$A8mEmC*`Br=x7#V11;7@XyaNeX#f!g3DAuE+i&;6e_QqNb0IE0|lSc4!KtA+K# z{9GJf*bZb#`qT`!`abYBZ3Dy}a%0{<&oGTg#H}+vZFjA?uvEJn&Ms$v_8;jh$gy2- z*#My;JKxgJwcIe1*7inJ5ttK#gLOTka9iFp|7?S{+^e8JFTa${U|_q{SSAX51pZVK z>SX;)u}i|{M3&Bw-EjUlx=f+qj>f^$gW`nfI0`mZx@y9^G-;q(XDd78_{Qf+_=E@1 zLz|XHo5}FOObpTKSZqs;5zkM7gN%QBEAqZpid)f=r4AJuu@xXZLUu?@c8C!nxHpxA z|1_2nv@U)qsq6xDaYE6od2=*l|MLA!H4CbjAy^@Iu6{2}2Q{vUVo`88x2)%_k?Qm_ z9Y1NeCe=)t2eKr-d(^dS)078akIeVq#HXm^{ff6*hSz5DV7})u3wrl!eueT6aL_^% zN6K^<7hbQo#rp7!_iE;s?6St_SX=18%UgGgrcg8bhEq+_4~N8754)z2D*QU&k7c?t z-#3(GV(MRR^=)%EigGt;bbx&^uc~*qR}6QnQI}Rmeb>fZzt)KoewqG6QpcuzPgiW?-RBG{8g+U%<{iz!1?Q?%y z@-DVPapcm8Fs)FLr!8NIs6H-oC8Dxgr`f(G!>!(tZ1ET&Ebo{y3~9i-WAjh@En}Veo~pB;a+a7Q z4_s!PKMyg+%h*m*Y{ zNV(gacM7Jz15~%Gar#3#fpo6+qOThTmtlgGmPWjg+tGOOF3A#iv> z2okK+`wf20WHd$5A>0y13?48#jX$N}DlNBDyyBxJ zUFY8h(<3dH9`6-^ z;igV^x(`x_@qZ_=vla&iQifAj*k&9o4D@C+>H@&Bla6`uaWj5n&*sm*YvArv%w|C4 zHuJ16s>jBo6rZ)VT4$QRuIz6g!PRpK?48^Yz_1`D8hyUSax1~JAF0^A+Xc#bJ@4=9 ze>_hzxMEk=gfO4h5$Wq~(m-93X2|3Zd2{)g-ME0}?GrOjAd|D2cAu4@Rpow2PSPrw zpOgz#^(g`FTs5pm>%5k7la{+wH&=tp3-5 zNN9bD0l4i`-}?1u?}}!sZMRonYb|B7xh6D}`_Q;M(p>=53p8}BY+9lvqTaf?6{P=NUb;wS(umW6=5|C^P~9 zl`D~I5wNT{Ff3J6Gu7jRy=8y$H2Z_*7nCr`#`)l!2ibhf&I)kUf%>?&V1Z(QBp zkACqQH;>Az+uk>z$9tWbOa`)WH3q9Xo2f8lRvxGZdFkGw{cN2i)>$NUE7zWaQIenqv5sgZrHVN!f(aoV{xk2B!;`BXnJBoB5#AnYq+W3QRc%e^nQM(Oug+B>a|I z=+1!Pk=*rCZm6KvhlKvDF`V%ZD$wWj>vv=kyoDRw{qRW$TiPH=q(-BkFcUZ>GJYxbB~AY?q`9zL9) zXSqcNPVRdTtIbUMf!9a&BH%X7jz!}28Q^zT zc62`vKVvkBeyc#}6u}Ucr-5BtJ)aK4?rV$@?Yvk_$|P5l=eu`gg!){2Twfo?%5!%u z(9;6vU|OH>CC~9OE1J&UdGrw-$rk2&Z5^+kYSR-&UhJLkj#^^x9ff>P^D|5`35%<5 zD@5%q?v3l7H=JngC^onW2xkx4C~uqetvnAHnPOLBEA4ltfGIL{v7&bj(^Zn<6pHS6 z=bh|KE`zvty;}oRda>jrw~`-p3NN`Y04ho|aRG7LV4}lHD}oQ-_-tA_e!E?Fc~3;> z>s_x8J4(!U7R?s`C$i6u13utc&*RinJzE<@)R{DoW8#SHf|-McCA+97JBqXZ#-Wie z*-?u>Mb^I39S`YBacLC)#{4T-!o3U4{AOzJnYci3`Jx&SDnJ0HmkVq$H|n1M^cK>v zvC0!Nt_u{3!7_L0xWBz+c$Zasly3%wt_AJL`e4-gaxFC#Zsstd`{6JL+c`B%-#NVI zfIH*ef_C);EEGmnsY3VF3e`g^B1rdAtkR5aX`#`|2@m`0SyFcrLXx|5Ih~|7%6$A zfA40TpM9=))0;z(AIBkS;$S5U{^>!UZnq=; zaG-0~pC$eDyduf7mVNmWm4sC~R>cFLy9R4%)ml}p-@X5UIgb8Ukpg`9yu#7o zypQxj%gfF?*i}k7+I8`4cOm zIY@*hoIRDQbN0PssrBq>$xk&+uU+67JNs##vx~LldIq(^liP@!AQx%;UE5uG?8FK> zT7}c2+#lQ>7#RUqJlaCkwt?s+*P5UGeG8=^=oQQb3}^fOd038%1^8CZ&__%#bQhmW(`y1`!2#tR#TTx`g**2%v6F7o=t9WaxI&5y^OMb8(FYdws}!5s66v}M9Ck|7zZ{!xIzDjA4OAFA~ypiG} z{&U~Kcc)dNfn?>lpF!jaxB!TCP+-nK*%ttP)|sWXkLGosE&vnv0tw)KQ6i78AFN9n z0ZBNe1Ry7#!0{&eDDFzhPTo463xN2zjHmNWJ+~+I^^holjh9Un_Hr* zg{A3|Zo`kBkQ>4W{m>u&n9AThf;f4IQ$T)tmqS^-{s*7*Bb!A&73ZzV)zn2TryWyL zB88PmT1aEzB#VIeFB1*!t0w54+iQ{{RWv+Swu9UmNL5!qHK!}5DhnPnX<_qR2v#Sa zr0hyHUVoSAafSbKHF!sqg1{Xpf6LLwKdfu=hu_P8I1C9%TYtk94Mn-eXBjnY`~+Tw zz0#Y#`$`GE_=S^!E|dL>#z@dInkcaVl_tpHVVdD8^AFq8{v)kT?1^Fl%;T-!UyE=2 z{8%$8x)&WSsk=wEsGO98|9Z{n%2X&2%li!&0qM%|MYmLV2RZe+RY&YVRh{w`l0^pS z`LsDbjsRw94T&PpWy>)2>R-=uk8OJhaEbYtQl{m%>nNf4`-tG0Jx>q=DqbZQa<$oI zq;c;&?X8bQuvos@?(V5j^le|e9X6gq@2KM(=eMiy#6B+4q+dn$En&M%`)4|@KphLd z+m`2PA2X(NpZYPo2!oV0)q>l*b9>KE%6-$f-CUE3efz(03fEvJbM^JY+>N)UV}*u+ zQBiyj9$OPd`h4cM^4NUt8bLdz994=u?=E9yM-?dX<{CB?Pv=3ViGAbz*D$4a?G`GI zYpR^NscTOs-@CmS``#RpZ<404W%y*^sFYRZP_r=3D5s;T*Vp?j_#iroW zQbMJ6&D&Cro3**6!}qT|w%XIQe$6k@!*HZ4AulI7aKl2m^Q(_NKB8=7Zmk+o(l z6tlR_Hb+f`VmaiK$AGLW$&z{$S^h2hQAEO1r~0XLSV5uBP99dn5M|5{ImwtJ^Fhs8 zvin*bdtX);Ec%BoSL;_5@qBrd8N*+POrr*E3&m1p$mMST8RNVv8X$lqutGH_)nxn$ z2IDWsa%`id9Ax*R+4v2g=8Yq?9?Uz3L ziO-t%xvx`AD6=^V9J{~a_%s&FpRbfvd+FYSiEqxaa>)=yM;5aqF90_1$)U%b394K9 zDul_kJFN<&JD$;`Xr+kU#>6zi>yX|K5R{=2=bNI`-qNrpw0B$`Ae3-gmRng=Nou|G zV#W-3ee36DrbOO*3ie?m%Vn@Ub)j z5;B^IM|a8V3NA4DEeA645KSnH7)tJy#e42q4L=-Y_f~`BOdTc`00t|&_)bMv13HIUw&s~aTcR6Y%&jb5}H3KUF%p+ z-8RTMvjUs>`nCiEQ+8y?yYkfY2PJ89s8E-BVFG&jw0o*1TEsj|`<+aD+EL@qK0$GK zMb+#wL0QrB{^M~XBc4~PF_?4jb6pZq?p&U5CuBIigL!NP(fYwOobhY5iA|qwy3P2v zG#=gCc{}q2Wh>}I?2Z&xtl5WaU~At7vz$ZadZ-ffAt805URB0jcp>C(pl^9r)mQld zaesafTh*Ap=GMAm8MjPSalJ^(!IX`e&8PN`jx>|qMz7H|4Zb_16)Ru#ma)s|edlqx ziV%l>wdW(_FrIG?G^EP>k`y1QfZIAk3Eao?gVi!FzaY9s(5(4Ep7fJ2ecqxr<=NFQ zVxtq$KU)&a#^kKkpVed-CU>tH>!cG^Zr_S&6#vU)`r&uA4RN|5$I;`;$dHfk-#`qJ zyF(*1e_qwsQrW>7DJq4FUs(i63Az zGLfKk)$N8l)+;6>2gG03=4Bhz=Blo)goh&|j`exX4>7?H{yv&20H+j%6190>)0-?tw^&q(h(W$1`>Z zX!{aVsSx;mvhRA z4U&6*kF8zJ+h5EaP{Yu6yu!B=Orgf4Z#uSo&?mTz=vVHatz3BO$LFQ1X8i*6@M0Cm zJ5pva1C;7oakHyqO?zGYdu7en4ViEL`}yvtZt{KR%f50RZfwk!_!#mv%w*p_@kYqV zq#Ly^POZe19Tw>k;Z7}~Y%_Eg4X)(5Qjw`_EHWB_X|CAmzVC$4C z$HBtrRTY*@?bnP&9nW1E<2{b5yWOKH5(Rt#Kv}Jf`B$rnLo7Aw+s*`l(fs_T0`t3L zB0_)H5#MZC{B6)k0q)6qD>&M@(o(Nvq@+OW{sULgZ8>7ic8kwUB=k{0!HYYDHWy&FPgVYMYtX^<_lzRvsgMBhXTKDWqp|W$^$PvJv8Ta=I%Aa zY5&@*N@{wnscTidxWrfKnlMwO%sgHMKJ&885dcxiKGBe?J4P{^$C!qwQ-vC{XGnd)M@_>K~>6voF7MYuk|p3uJ#X zKdkFvhbqxn8?B2s#5{~JY?a*0^~PtTgZulC7~8r$tR6b@0>IJ1L>`(}W5zd@%%NNa zcv5y+9@MzV{LwwR>~Jf!U)$`{8s|Fbb{A2F#Ch8~$~9$sTjx{^4yr}4Z2c~%oC{a; zjOX3QOxIaJ3TEpb8=Wh3om5=?tY2Rd*K>!st$3>GCFqKo7%zaen#jJM)Y|thjr!bw zmT^>AdMCEk<$YYrTG^=$(CuA}f5Cmdo2WA7tY$VzFL5N--Cyqj`({$dEXAlHXNMMx zMGr3}##lcM(BiS`x%Xd9eO17j`pGoui+3fg%Q7w^wo;(TpW)A67JF9;WTt|l!>d|_ zqA7tg4$3OO59z0*bTL66d3nm~mi6wj>{f4u_2&Y~GZTf3?OHei_}SJ4faV4%owLt| zztz32>Yy+oy`%gN@^*WgwTTK*ljjaWTSE41vAzDG$*vIB%GWz-TYuWUPBQU|pdJ{v z^^>v0>=7o3!5qfdVdpas?ZUi8ed=agyw($BnADCnq;&R8*pH6C|6B!saV}-WT>!RA z1hjPdDBfq>tuK|T;WdP9N)p(YV%XAW5d6ml;H}XGAT$i^->?5pz*h>cdeO;M@`(be)_&2=sF+PN+(GMeRr<-82h9^&>QCx6| z?ckbjYG`-I6qX#F%<`U9O!HFw`#{qboWYj>lc_ytgRJNu{pa-#7etAX)+^3S>RDhlGj8d*6u_T+g#d-<9WR(H=adCR@4xcdgD9L!&T1!ev??Q=UP{X>$4gS)u+=H<@SyB zI~pNa17!Y_`-)^AaYnM7=8RrbqmUc1sv||S3Z{0=_TxRiT~YpUleh-Q`+lNv@2148 zCwsR|L=C&s3-~CpiD@~pr(!3?`Fjdm#`y<#VvLMD44h7-=qe4}N`^gWF_vV+HDR@lK-4IrVQr{=%+222J9F-bfP0CFJcajCi$ijF-!eR{1((|N$P6ZgmoGxP zK()j_Y7=cBhZVj3U5K?fuX1Z+W29^p(}~07oP62Ney>UJ8eJa(uK+%Y#EszV??8E% zoD9H9nz2%jKya&bL~wVds5eCohWxeKI#}>bYV{MAeq<0m;~C2Bo0RxyB)AVIW6OB~ zfFNRE^-pSH-EKIc{#@aR7kluQsW%+&1F!nnF_0M~&P7R~@I1UW!VVGU*F2crrKB0K z*Whu7WI9otJ(c=x;aJA0VE;8a?GQ#}w>|lR%h=H&h)c&quNC_TJ(~nuQ8rSu+U+iO zzUw~45iwtl-DABA85Cmjmpg((DGAjy&Ujz7+psQ$kh>O_4}~X=K2)kB#ivcQyeVMd z``#X0rJ`A%Q;6dK7~8+d;}-z-^<>2k5wsJ>aH1qp*_k%|yXxhnui51D#H=#{GFJ@; z>eJUo`Y5w=x49ENlGH10X2xl|CGFqelHZ0x7T$&=}K3pU5K1r9rTivEOR z6z%Bkd}xD1U$_E~hfp1(S}544+?nGA;Bq-OvKNFGk^e{*!M9=%5pwRdP}wQh9qa0= z8o?^^TcEV-52yDIz9+rq)=Ohx5EOn5F7iJmGb!VxzqJ;BST_9BA(Z%9qP-ISk(q)p z1!N*Iz~$!^4-(x9K#yO2?)|&86qeTuKKv&^%}ErKvF)v z@yhs__h7|1JxiEy%!6-i?1I<*eA!8ic=gUex}JF>=E!<}=Knr2UO8G+4pI0cTH5Yck32vFT7~4#7#pe|t$3~lwM*1GD+s1jR zfu=rDQ8!4a*Le@`oY5xh{=PEzu0FQoWyw*Am1Xj)!35*HZ63<;*3#RG#U{!#>-edyMQ;yOynw9nEp4ejC(W_zBnm`h8FnKZMWq zNa#3rvlFU;NbnESYUN4&;+}7W9|9YhwbMTJN6T9w`%LGlQb_85xveRw+q0D8Uo6vFF$7o6kC3z z>bXc`ACEj78rUs}NP9CG$m@52{N_Bb$woEo75M7KqP4!ygSfSym-^^83kYZvBdbB5 zmF?nOY&iTHp-Jd6?WynqD(xXR_?klbG1Qt7w zX~cS1X1eImFDQ_ozY;r~z-8d|4~XJjKJ9GvP3g~7#Fj)nj6JiAC}HzzB-FefK!;`#cPPj6C}cL| z)|i^KKWw=%Tt%m1vmwhM)g3-LAzj!&Fr5*V(U9t=34QXRAr}O*%^U{ic^@<{9Ps}d z9+FWV+_xyzwPostpMbu(&k@KB*C?m+8@|qC2@TjjCEuQ`sCYg3R!VR}G<4)jQWDea z%xB3Klh?|;a^d?jk9ZQA&$5U;6chbj$n{`KMok80juI?RD0OR7b-c;{czxv^=!Uy( z$=Hl*>G#5x`9q2nhYTcT;FSBZL}|R$iaYCQcvw%1#-CDAKDSW1)C<6-9B~Tzl=Ph} zMtrmI=Po`5lW;w=eYZ zcRz_+7~=a1n`c%bv*Z1+m=h4b8CN<+yn{veqjv7I)CTEu_=W+GC#%!xhzzwSo~iZV z8kNQ%0n3)x9*wRW$w3>_2qtn>iOTJ` zgijqeDmr+l;4&2=@i~6MjN`%iday+uiQYH&U$zvmOld&e9XW?vY4$1&rx#L@zMy`z>JXLf1h5A^ciIV}Pl7FTVCBQ04^7{p%%UJp7%~kH_4$mgb<)>*5Sx>Y7|yIcVCC8ktqHeplTuQyZ87E+ zbK^#gTElS>$V7SdSe{axEtx5B!Yv7d744RMyz}K_3yz~Uy))>upbkCd!csovBGA&N z>SbgZk$rN?9}@g#EPDoGp#a3=s(*4ME!NF*E6RmUZPh5}xj~;%SU42qM7dKm-Zbu0 zea)X^+TgO1Kn!29;02(n(Z*|If#s-rCIK(1S{>fzM-U<^;7)Ru^BA|tf;h8qcUbw~ zhk^R-?Ni5R){R~|w*=q#Z`I>M>s97*asoS-nJ&+i?5iQ7$TPOo=o4SkcWBU3 z3U|CT6U5If{cPW@t^OLmdn~WN?T?Wm2H)Bl*V4m_`S}X6hD{79a%?#WqLYov2Kpx_3LqM`Z$wbp7eV*s?s_U zqae+swF|&+i2KPTmNN#il#o{w9GeI5*)^E|FQfOa&-(P&#wjVu)ut#`#e7LF?ZkRz zb63H-Zk#qxT85V!QqowQ)PUiddVeiHK77wi zaOy_nGJis2pP}RPIAUX}p{BSt+|zqlD;GmYs!@_`*eiQ%wMf>AwdHP=)M`-F!dg-0 zuVk51`@xER!B$Y=emJZ_v>P2SpxlH-h7kjn(KjH|>6Jl}RXH9TyWti_Ule$G8MhNF z3>B*mt?LfI-T3emi#F&-d;!hLpM+0=9I8=tJpwA@F>PdEE9;B@sy_s{bQWTPj-P4? zd;(J>9{(Ht=iuJ`%g$CJEY{O?6GewmuZuk@)yVb;9!?u zNyxU^Wjbt`)MK*nD)~W;D!j$ZZKEM@=w=s@7L-F1nCWMbVU(BXbv}~{h2SaZIekcy z(pB%X4@0$BiG>s!f&yu(GFEMc#{R59-@(7k`Iun8p?$E+^=y$Xh$*z?-m#+alLinC zVyV=&rrY`VA8XWn=IhHfDQ{$sfRi(8oYCGE4^+*Z3XLmbA6*6?9TU8uR}8uFX4rtB zMhPEw;st=bfVd=rcf$-7Ur&wuazJ;f1CwTd4~lRR%_b^!JUv6;K|Bd|YJa9=i)WCq zwWlG+2T~7x9iM*6Rbe#sM*@GAgqRhCz;6PD&M#9A!{eI-E#eL2$=6t)yLp|`N? zIfYI%J2g^=2`%>|igTRC!&1=SYQdA+D)P$`FlOg>&go+8x2O!zD{Ao8GDBcweP!5( z*p!87gUqt3q;i|gk<*57?I%V}DWjrrle*?+-1AXXRSg@%T*Q?TuT6_q5{*B5ja0#e zudf!(gXWT&+lh_F{~cI^WEEe>0#u52R7nAqTp0U9?|hji)BL*(BjP9~v$tFH^bCr? z>55)?@2y><3UhW9Z3ESo=z?2L1)V1qh8+F|ZjOBdT$5iN%*Lu;r$2*5-?`~O%iLQ^ zl*p!BmBVRnFOP&db9`ZQ;VGyUuDE~mIiLpVHP9EZ(Swe)jE^bJl=87~-@k3wL0=^G zA-LaP?Q@^lD@D<-XNpNjuj2Ac8XE&a^IYZM*RqAZlt~HDOs)x|$0qM+`Dte(S z3fl&5eT9v7jzO}=$Q4_PqNOIXG#;urVnA2@!9wq>O-v(D6!g@GyHS4W+H+Fw1;F_N z5Q%`_f_UPodt+80?#%k^?Z?CIg=1EQ$+Qm716ZDXxhY)rA0`)a)}GfspcladhSJQ2pOqsbovCucK^bugDTJsq9IzWt}2>NcL^!gOELhC{)O9Y?Iw2 z%Va6Lu^Yy|&R8$A^t<2RKl6{dFLUpGzt4HjbDs0Odr&h*z*Xg6qQt(V^CM`zZ+kl} z9%Z)fVkr@WCDtyOg9lYd!BdHMMm{uwJr5oW=Skyf?U+MBE1Z-V=K&ZNwWH zXdlbofpecIsf>1hi*({&O=lv5`9W_;;9H z^!@yOR1i^_!p?9MM-uuv>X&@M3b4>ZCsumN`Q_M+bH|+%Sb{#i+w(p==?+uzVCqgya}4gv7{Vj^H9%9NT#A4bOtAg4-wy$^-bb zNw&|kP<&9DOy|N6rORw3?mSUwxzX@kfx(Px5upfvEf*^8mPF{tV^u%@wOez_PoS(- z|KUN8PPh?u|6%D3y&n41wwO^2@r`g9HHUn5?Fn*VHR%-xecSZiRayjwWoK9Yi=Nrz z4oTE71|*E}AK`UQtze~{MFOcqU->BpU1DB*i#R^s+R#C7=*tMA$K4evmU>@89MYe5 ztZl|DT0`k1s3@IYCGH*>0+z%Cd5S26HT3+KCf|&{d*~!DGQbf;F|>KX-B@r;YmV4K zDk7PX&X8ERAj&Khf`{`4=H&eMH!FX}<{LTFRElAA5#va^0Iqc-1P`(uT=b4?F&LIM z89N}x5Xiw}*rqMr?F4FuzBe|HOuGiAFP(Vo4b~Zk-}veMSy=jjvwz@nvQLovugXA( zCj37TCB7DZHwB?^;yQ6>^ec-BT$P`PA16;<5&TEDBoFFxJV0Os|4*Y1S`5_wqhnAH z3^2N-g@?aw8ZV*tp)R|To}F2Hq)^^TRd0u@2KLb|odJeOA+|A(#zlyClJSZ9zCXqf zDq!0Ci20)C^NsaEp2FrGzibU8I`*$9c*8F$Cf-mL$b`18i}F1XMgSt)8g1yD=J&{_ z7#55ZTQvOqEL$W30!Vi>!^Q@RT*it0Iu0vu=K^=EnvZk!X#35lo~m6znOp9p>!D86 zR48v?S^um=^MZ%khC^=Xh-bu;u+H%CQ;Y9f0=g4sPDk`g^>>4NW=1R;SK;X0_LtOr zm}A~M;fpt89Z3=~J|1ot*WX-jZANg2ITKMUj}2T!{4LBAal6v5O_RRF(TYP22o)R) z2lfP8oT3LK&k9@dyp~%&DJ28LigA$##QxEBK@#TC49QBcx5E4}T_Ev|HVod_)yBO- zyDN=I##!t$X-VsIQHq@3ZU5!JrWVK3()gqvdabc$Hq$0G7?1lx>x1!o!JNFNINImb ztK?S$EzF`%2p}f|QK0`3h{1a+#)3=`s){B6E`uf{*!(I!-9h8!nXfLDPra?Lm8V?b zjYAR+ci?Oo{8Y}Z$&?lolKs&VQcz7hx@vWlQ9K=Uz$7H;eg}ine3SQ`U#`({F^qe_ zWW?E^;_lP>q@7`3a&5=87#-oRXOQlSqQ5g|kxY~x5F;kgMv)*{i2qe*T-FU6f0 z)BQ|-nV1~s%f^W<=$G9U8%E_f8@TcXNZr0FazzzFb)z|=h3xh_>;D84&)ULgs(Z3G z{ByOT1=SL5ptLjM4h@$_?3+g?<|LK)Ed?52e`yGq&H+ht_Va7?3{{h&Tw(`$pO4CC z3Nml2C9gj8~{rwq^5sgHj;coj6B?}+$aU}ta*KXW+ zizk~VF+-M3CS2JNVrl7dSF<1x-{3GLzwty4QwjIc24{f7plR(!N|)34QD;R@>6+qir4beyKg6P zgorSs3TL+z@#V%7)iu@C{fauWP(ypYYZ7v~px_3D4)XWAt*b|4L~l38#EJC)4VLY0 zs5f{LaFhXXx2X>9SZt9N-tPnmS}d$mI9HDhLC#b9Sz~iuz0*`@-6!wnwYwGvk%VS* zTt$KF>*Z+Z8eJHJCOij2e9AUit^Q&me*CiMi8VURUnkz;$Y=8Nv(f;YK3}A2Q+joE z<4chQ!8cO12W0dHtS<9c4?-B2+F?j2-Br<$?)$avM);$U`>S?)FxzJ(>i3VOurMj* z2cJi`ajmzssP6r8cT?z7v@Iyv7q<;3cTeM5bx;qH4*r>mUWEf8uZ4f{YM*&;ug6wJ zLpwjHQEN@mC1;EoebiLFtz1%OCov>S;yNt-JsCY)&r51oDq?YGI!_-ChvHg;gqPgg zpDst#I=U);*W9brDO7l90xk!xBHmTil1sck5gM$FpTFBUa9v|L;?n5K{zu3BqM6M~ z(`};>R;2XJHU3MA&s=TGi-mP{gYO#OZY`Qk1<2tM-|8Z&)RAh9MOsa^*!l`HR6h6W zTN`jws)uTn2B!PLw>>QM8XTHlj`(Y*(OAkE@aIFg)4m4!93cU}5TE2ND%%5e2JOh% zes{S$YAI!6IjgEDt*7$a)$DW=B>eYrg@3Y)?;VdiBouiC!AEhVHbK<_^RWCD9VkJ! z{lMC%sfVm>DX(8dfW}M+SKI%@G&wS8{0H*UU|a{;hbeh%fAoIGseF`38eiJ8@fT0? z=Tul~5CZPUdaFT*{n{`+rGAPFfN~^4@W*kXuEm5cJI>)sB}>kKbbSvv9n%?_70iUU zq)?APD<;j(pFGR+mwvE^UBFQ|=LTquFyiVHfU6)-Zn~Q$LyWEt&K_^_bMPpfg)4qc z>rL*x)zn>@BGkp`@+rZ-1+y4K;UOITN18hrmZRLjfASf0<-h+&L3q!WukrYaG+}@% zFpk_UEYdcHzVWBKuym#`B;dASmQ#9PGoz zCPFbJ$+g~Q_+&S>b131^G&KUZ1!Q@lv7mx zdQ+W+&)mk9?jElT_AnCQi~=JzofpXP(0894 zB;;O=1;vW<$i$c5mUe#Jo?S!u*Ib?;7Y3)ywSnD|$gqPSAasfN3fy|aE8CV;)*JYb zu81)cMPX_~5!opG)Nkc3b5a1NWTsj*u+HPc-PaoTQY~$0;xMK)q>IsnKszV~!%X6= zfCXZjG3m}%lBiaQt<>;-r%6Z1tCTq#9WU6anihY?-ei@Yiu%4)*LCurWDlbew2evj z7^PNXoJmzihb{!SpATjPW^1xx==~(!0-&(e_2Q&};wNcCnAgz4I~YyFj+L-G^~((Il}TI1)8En+;1`}BvOAIuDF!2ZrE(NW!G#O3<(#btMN~9u%B|4dEe>`Q3KIS8 z)imbeVO4c^(t|Gk(H5Q&LB0>ZHsu&VxrK^F&s@@@t*s8%F58|jIR!!W1wyDh zoB=V0kR+PScvO?R-#Ui#68vVA0b1Bv`P zNz?am6@{%m-5xK!qzIs|Qja*&Q0~re|D3+ui>uHBLTj{An^UFeQ7UlNfviV4NAe0+ zVlDGpOuS{S_&$M}`^qyK4xB4Z{6}}Da_#f0p=-@t{YYr^)l-uXX1hXBp4gS`7AM`B z!f2IsTpSg|%aKT!do&65-yt%xX{^V6o;7C7mtNFI{1avu4>|m+JqMdiZz{4mU@%Z^I++w_8z%S^fB&==qC6Q65 zwuXj=oQ#TBDRVRpD}^AJpu9O7G5vem{lLL`8Ll}%EUj$Oz_ z>8DSQ8VnlE=Kb!(y?z`-Db?e@a9-JI7gUVtU;6{=nYu3dvD{wVbe)^An z;0V?#;6I9TNa+R-`}D-b!x2O2&r;X7MlqgxY94XVu(D&F$PTgaww(~!K-hK) z`P%#j?MxGGb}Z@3S~+4!wnj@d*)aa+DQ;*faFywEnOQY9uHdsD>=W|JdSanlYImU2 z1l}BR3!1(I`yv0!4?vQb_O2UKPznnl9n^6#>8fRas}Q~DQ;kQ(2Dv=fG~84zmO+g( zi;{9ZieLwgZh{QXQ}}$Rkq!e>^cpQ%uZ(DP*<_sVSlg`NNc5DfMQ9CdHhC~48@Nql z`2nJ&8aC|02viIWIl1P3z|)xv;cueLf-|@Dm><9WQjl@=eZ!k#m3R*GuUy z{rcda)7YUeD?3&iJtvR2zD)VtgYNdKIiRiU>$wM`jH8Uh<%wg&9qz9~7^{7HM<-acBF+~S&s>=5hmR8N9<01*LBv3cw z`&`sHAHBM0)- zi4bVzwHQ2osd7Hqq|4=@!tFn<7qy`7Ze9#8gXFh0Nl1Na9PH%)C-8%}VjI^H?3!#) zuOZQr#%`^%n`NnY!~&XX0XleCCnm|NU?dRP-gb**JGNAzSo>^Undh1%Z-$eTnW$K* zo@6Uh_qa*xJBnX?xdJ`)aM9Fq!Sbxi+D`=)QOVqvv0aTRh30__m2R*c9j?%p^Ym%9 zuW6kGl!&{ui)Cc(z$1v-=C3;lj#?($9Y3o1+?f57TbB9SLD~%PG<2BkS1?9~wXl() zpa=!* z#wh;N)@fz4oBG}F?_YO^^mlfJjk9TBsXnOHzkURIrkh=lO6Lv;-$r)D`@TUJfE=&} zK2HfG)i${p19#gM?%WTH)F;2(&{%48<;?rWMBb-eJoG`)z%X5ti0aIXtJfpsac-P0 zA0L_Lms@HoHu-%(m_ltazt3HFiZj2aa7M)W3#uLe2`NK@4<~Pl5;JL>&RgIN_OI^{ z3Bn`dcG;|ig8AZ0^23wkeaGP8>^hs%EmL0$4dj6TlfsG8g!2RR>vo{7?)*hkc^(_` z`9Hb@wK}8aKVEpM{&gE+bG?cw5Y1r=tPcBn(hO=s%DyK}P2J4Qc4GgQ{1i)P(F*}P z0K%^GXvkJ30SQ`zF!}wXV+q_`gvDM%C&@DC;$AH`TLAy_5eo zv>u{u%HBANo{$>f=6#SNVTCYK<$XQsX9g3TVTp+U05%%yH1&(R{l*lAA~MI32zb?R zYA>2XcBaKZ`su3OG#(BpEfna^cR~2B+){WMqfK0Y0qDte>`z*emB;6CU-&>6>u&zh zC;_1~Lz%vim*2?^~^C0e;MS zM%ApZRWR1;vRu981@YfInQFkQp4?u9Q+VJA=FbfnTqaEV zP*TtYmu%JMIK)B;2X7`GF%IWK;y*xd5(nBLZ)p-9qCffJ(G|OjvAe#T*4w(V&J9<} z)B5;KV$F`WwWgSoyy5Jj55OxULcM@S#l%InxLjCUgw4uDbVL)FA@ZxKRr?_QJmQ+DfQolF0q5Q-oK=Q+2b3>YS zt9x0Gc=oHEASVaWG+c&y_Wx8YkzQ>|$X}M=?90HAp^?Nd`5cjBAHJ-nWLW_zJ{ z8&aMQ)Uw}{yUQ`*sdNmXT&5>PhTZ~yn)P|jRVd$ABTINj_(fH+$Ah_>!k$-UNOyJT>neeb_ zF3{KNcc88@|G4{c97DgPlDQ23kPD#J_px~#EuutP4>m4TYaxew%JhcRM$-rGzH98! zPsLum*VdLM>42S$2<1?1pa*PTS3qZnc##DL zifsZp3`SphqFtWO9l7T`c29frE{QV8KvIuY5<(=_+(A6+Bb=Gyf>qpK>< zhIIa?SLIp^P=j>s#-CaowH{R$1X_(B228u^JR;jve_dY@>f3kt5m;HS;pHgic>PZ0 zK&KZVh55-jgx)M`4h+6|H(~+gxOPDSp?ikWgGl(GB!$!HNV9dkg~QvY%*Go1OFN+H zL2Wn(rkZFn?9FqHit-9_gFFWHDH)A#@BZo(bo;=7-Z*;T9mR$@vL`pcQ*W9%_d zQgS~BEx^LI2^a7E+o~(R&?=?TK^{||RYRCvGODK@8fm&9oim0`^wN4X3?EfIdc>b{ z4`xMF9zBQ=ec?*}$vH!4WyZqCvy8dViT9|l&Xr3)AH9AjVYIsSOvCr{X;lp4<(h0C zzWD7LV7^Bgl09@ zAKGw%&E~e3D7knHa3#qfp@1Ti<>$coMfpUfm)_BF9`@dhpjVXsubY7E4KrLib7jo# zYA0JV;sWrf04VCtAP9Awu0R7yi9xYGW<4TGWS|0jVXw%v;p?`X>>qdM-xDs zs7>zT|1k2$!@JFp{_jwwaOxnTvm##%tM$*cQKd|Z1f4~0GnR8dwQ!dPk zK8N9*+GZfQ;fCa?%taMIgM5?nfb{quo$LV{>-^lq`GYZ!`9AuMWgUW<)aPmsG1h4l zVhq8V!fCMRhk191WC3^<8RA-Q5OLaVjn%}ziTU%bAI$mfA1%(wlD5Ij8Bi}PT6;xL zEDa6=K6Ra961}E2twzzT_S;DWrNh3N-&mYawUX63i}AJ7>*rR!3f*Fm?xx$etlagX zUrz=^F>ePFVE959;};R$twT#C2?6Bl+>~qk`bGrin@gqy27FWaxjgXm7l;ebUy3+s z?+#zc(LSJ0;_LJ$9DJtvkx{%IVea3ow6Bl7GRg)}v`dVwcjk$PhAwO;9*aT}w|CSR z=l^Jhk2b?!C;_ie(tBKHDY*2D6rS2soZA+egGK$Q3QjgL(>dpU`6u zHvRFf<;MEjx4*@6?>U}fwQ{A_jnmpd(O>VY_;{vza?L=Y5C{?e(Fvn`059;Zwkd!ZVV+miu4f?9ppfvtroeK!n0Z5y}_hUzCmPX}wylmyJKUw zPBa_<1A4m%ShDhmdIDw@K&CN}wh*Rz72S%PWB#PF(9jscxbGq8QgrOu>FE%0W|bE; z;1vraJ~NuqSyWGb5JK{SSBLkQ2qz1*WiSj?5OhFHRUGW{A1!{Tz*cRnsKGIUi_g{Z z`8$S2b&Gxs@d-Q*!$MO<^tIgutlde>KQrxak}^I{dBzmzpsZTQz^kl=x$Z4R2aPN7 z{p4GUqlHi$N$@T>M`ccn-XfA6NOe_p8uL@#y$G`u97~R($suD9u)!9sv*B`)B~}~8 z>AVwzk5VIGyV(}+A#MN%jdd1;Tku=ZN_CzEmCufC)8*7}&%i}-XC0)`v1K!D5M+DJ zIo|0mIFFgOW-2S>p`>J+ScdV*iQj3xM{!r#lvV&eL&P?B;Kw(7ycZbut`*ESRX~5U zy`>2w+go6Cp(3SzK`jA`C2A_IV;OVG6p=&$2vO?9gvOLe_M{-FnJ~9`_E5DU(Eqqe z{;h9=tmEL<+K9OuQ3>y_CR!oo|E7G1zQ47UnkA`3R=A|2PbmO1{d)v+xt%oNLAr3A zm^qFU7H&y{U^#-0@Oj=~H|6+`StXi&zZna!%k1=uyK)=&gw4H00_O@&oQvI+Z(}2A zebD*e7F;YLODX@IJ6tW^HINwFtScdee>V1DOk<&U_w2a+asb-|a- zQ!V8MAR!w6Ew&ULjT8H9DCb*q7goqZgavFGZj$HNSqi$jWpO)O`UCPcr<`?#|A>9SKmbY+Df>!m++&j_i*i?hOW zrYDiwrd*=ayp{5c^IL~OBsSd~N1e3Ss!Yo4)bqYD1}NWLC=-UvoeVoFdfUex^Qh5l z-u36_4{=6|j}FY&?Z#<0Ms_O9mFpYp&23Bh&whbu#?3R|Fb>(WA3K1327LuGw?M#n zQPgHG{sFs9;{-hf`;Tr6p4zk=Tiu$%l=tBnwE zdgGKR1GM2>2Cs{u4@N!O`owDr{-6b4{5KFx73I*+RlaWag7l!zH%Kw41ot{)z@gXC zDC6smaPy@{W3D``Gq}~JtzcOjS_}r?XHpBQ#VNsr&WxhGQJCSQ{!1RhPB>1q*`?W@C zi^JJAP)Ht8iI~VP+KM8pXu_i9pJKc1Br(>kat>D>c{pgU*gRryH;H136v6kixlNfE zTQ~%ZZn%u)RB`6Lc!szG6fGo2b9Z}P0X}ui34;PBx8M(Vo+IbGttj+BBH4@L1mv%< zx-TLVcNRYFwhNcZ*2%y&KWLd8prp}5o)pW)iyj0$d9=`d$7tEfAg7cGsf1iTv2b9t z`)Qi7b##68=`5IYQ~_ziE+BR36J7&`@1KLKJ1EXOJp9qSBG-iNjKsN( zvMyITi(JvfCWL|;CDNnCqE!7&AZ9TjM)B=$`Ado4{}jVUe7~~;c-(s4))?{W^bshy zSYV^Kl8Pe!1&8DNTg4l?*XL>HrFG{M16)+Vhiswsm3!20pH?T7I!IY0VJVjhc(1Km zqH-4vO5#Ql;M@ZXtlYa6x|OJFwdf3&7tV<+-rBs;??u|vawbp_ZQ{swJESXH?A_tx z#oXp19g!7TZWYBs_;ZgTK{kL3QH5;xhF$}+>v@oHB#=Cs+IlD^VK2UQ!djaaoWWFs zz^7u)q1bkj5Ib~QT3YQy@6*OI0xV8g97ywZCh@#e8o2xzo26uX-@Ti%WbY0VZ@``W zU+^giIwnaeC%#sf7;h~Hiz;e~1iSjNW&7_1eNSp9EH>d30nr6@7bGuwrAHQ;{=Hjw z?d+`n{OJ|*(NqfroX8Y@T6TpgD^Nq~`lsxyk>4@>$k}dHnVIVpL;WhSO$eqchI?>G zE#*pNPJ&+#BfXgSbLqW1%Quhd&IGD%z@(@d;QHDNJx40q{zQO9We5Diu+0LeMwc{8 zB}%6ht7miydv03=8QhJY=1@rdeM$4G9x5diL>d>4KqDdLGpGYNbD+5-NFm2owz5Ch z7@v8BWOH@yAQO3f=NVG2~gs2guFO4ual)-b~ttpMK~1uY~)Ksf;FjQh6Xf z3AKt`)S+Hfi6VqSKvR>wJ&*zR zY|!}=atcE(rw{850d*AE5yKjWT_vj_+vyS9w1N4{it=0!7UzXG+Qf*5OIA@)ooUn4 znp~Z)_;|ZhJRN^88{iWn$J>@bg5pC_kv>uc#)NT!05V3~8U>;ENo>)(pF(-myS z4I^?_hZU`#oz-JO3B1S=zIUr7bZmb$8Tl$X9?sF9M@*p@kmhP?!hjW=+(XfI{wgDi zf9pJrIfQ6J<1(UfvUOQ_OJ+I}1l+wYPm}%|kovd^zW*WcNy`TVw6L-qY+lR79QEL8_JBZ?Lw0)$lC0|+FSWUh3yK*S3cBu_E zJ3gcwY~D9_nHUS^6Hdag%U4N=0@ZEvxNd7=@JWh-5>ep zuA*mtdFN@Lo{rmBZmcc8Gh!A+Ud9er75+Ef+lzcV>~@-VH6B-0k)WpigSQfT4N)sT6pH93B~yn{0>^!@jr zGcUBC4UZz6qY)#)=Zk@K;x7+>Z{g^sz4GD?sgZQY_<-lPkXFa^90nW@oV{YYnH^-@ z?=Bj(m$Aj#aWo7mk##~0x)@Za#a=--zi$0JC<8;6htfdIU}feaA5W*b!h-DK^$!&t zA`1_DD32J-h1?%oD=C41`rOm>VReh6cxvVjO?*um>T4w5`-Uq3GVlfUGY^nf-bzAT z2^?PWs#R(eT=rjuS<%XrJS+@wzLOpVr%OHP%i0~#pAIJ$OOh0B4E}LUSs>hWU*?dz zjj5m0Qh^Ckz&6~rA9a&+)p%j^Zqe5z0zoWY_W+i|{98RXZco9jplm?X*16O6+*;FN zzl20`-}?mi-z$w-7Oz1Q5Teg3fe!m3gIcwcp2tjDt{1d)lK0~>A$Dyaz+mFkQqyR( zHK^PNf`4%87;}0E@5ffif7U!eoe2`IcJ5!D%N2kgTE6UAC6yRAlyMiPhccyDbD2RP zw5C*51*u_?M&|wTa_tG)=dtUKbjKz3Ii~x+k1EWgV^)eNJoyCDSc~O?QM9=Q{qLbg zwVl#ZzBiqkVcwV4e^a#5g8#R6}M=C_B9srnZ_lrY$ zU9yumt!(o?A)!%EH5D=oQy zSl%f0$8*qDB}5#0l9N@~BO~EVp_e=B2iw}+PMX?~I7;)`6Vwv?)w2B!R{i z%0-flqWBRKJ*8iGI~KVSZ&^-M%*d(_8#MQs{VH|v*L(k5*qu0S+LmV7czgDb_~?$$ zis99iO(M)`p|g8k~=UQ>h9MZww1ZFxoXq5;zs&m%8`4e2|+uBRi1&X;TZg^ zQG%Uhg9V8pHuU^LvGw_MPiIV)4!MLE1esyDAA$5V)&k;kZa2xOE6nGK9f~`xK+6Tj zkiPssh513XSV!31vEt?SO^ZJh<~qx$Z8XuO11vegtD~)W5}*uVBdjPn)ICHZ+^2Z6 zMymwb*=oNJj=VWMOK%yiKlzb*K_?jSS!AGaDIdK9GNnNkDaDpl*z$&j*LSmU#DP+g zaTD$UM)Te_b^e%6WE7Owg79b- ztb&q1zg73(aa85sH;9s+-%@5Vxn#WC(LNHNea7>BCG>D^ojNmSdkVl3Y}E#N;WAA_l9T z?}`_6-nP3mmQP=4G_j1`g!hMj`OBGl%amh~<>(6&=_kJpYk$%7Dd-V;(yP!P;-JoP z2=4C21>{+G=&iAbYI5nN?kqDW{@ibD>PIdz{t0pJzyJ~f*xgum?NitjX1tT%^#a@LAU>zlt(951*IEM%NTlSxItyllrw03MxzHUP)le zUqZcA<4|*fvXYM935dz0iK7z?fw}|&?W9QPKPrbw^fwM3NC- z7x*eDI-d8I%`Z&ffo;D{rJ0fHlQH-eBX--$dFD`=!B+uqP^E6QwpGHL{MscKQ6ivE>n8zp!k^mgDcArpg|p>Up~SNC#fb1hP;#X{b{*F0&smhDeZ$U2~wTO%I~ zX0NxLA%=8e*v0oK8Ve})%}JHB9fsLU2mwyqfgv&e$OF(?7+`a4ss|;Nfsn^FqaOAx z=vfVY;Rf`Bp$qmBJ=vm=-q+ogSXOZnPU@rpFa0kvr z(Q``%sWBz7WFt6gH;Zi@{ta1;iK7^UFCdYcRQak+&9(mKT8%rFe9`5NT#oK*nHb%jk6c&4ox}2|dE6c$8cxvk~E!f4ItBrP!o*n{k$VGn)=?J4LJ z#%mcRlRHk+Pz*_j!Zl4OimQJ|(J69Sn>jz?`_WaAMOYDdi#gOtCFpOF6= zC?A{GsdFrn*@OWLqjBG!w@3U1jNbG~8yzZ8!dKxh;|al`$X5cGvBs@nGwoputpWF} zC$2S*{Iwexs)XD_bbx0y+O>8zGHx?l_ZeRtu3K|wzcR5txw&{l#p3s75@FLSS2)&V zDX_P4>$P6b;*Uh7utz~zMn;3Oia#H*7ynB6>Yg57_(%Ev20^pt z0afFPaI_Ki0GggsY#=sr{Q+7*p)zn_xc>OLv(sds?KC=ST9mc?l5`=lyH3tS{kvDz zMbYdMlnajk!`(hn_0Y4W&=-I?*Vl~U(AA;~wexejUiR2+_5~`e3(0(_)x0O6^|o^L zDc_|_H~-OXtP)Yn*0le1Xxh~wqQf&x?m798AeP>X_IaOV|ISL-}dn7RAh<19uKKl7ltC^BQ%XesF9u3vYN z6GHUyotve@l0qaa{uZd#H0tZNDd<7p?QlcQtkCel*>A)G9GL`e?a~Z6{+|QDoZfdo z(C48}9jp&y?t+1$Z{!~xZw!e{>o$N>MU+lC(bO0w{tQ73MDmrh20MSGP#J;8$ajnHRYXo(VoY`DB# zRH#~B`OtD+qa>;LFwwKG!#tYsw54w3i*cIl%;woMJI})51K3V*2(li__AVS}1{4uk zlaIgEw%%bUjJ!H?KJYkJT?agHZhv45E&IT%K~loHFS8+(YLjM=mDZ1FMYh8!Y>Ua$ z(+l$v6j7obcow2iTXKbs8~Wh#V_hY+ag$)Z%%M$;Q_=0h{JGMq}AtmYA=OYv@ zaQV~%kE8J1#Xi7-DgX#?H)`dqhcXj2c|kwHD_&fC%l4sf-G5zdSOq z(s)!q)2iC@6Kh51PoU>pWhj(0l{K1z0CyY=$nsnHq$_J8aCBg+iPX)Uj3*FkE=JGH z2c8G+aZia9Y95)v-NfT1**O6vkcRW90K0$s)H6mO&1=Au6MvU@!aV2P@oa!9!#%aU zE%60%*OSLt1OsKsL5+$T=ff9pBz@YSQ1DrwKLuSzF!)bu2R|=(+_fF9q!ZQfR7X)u zEZ!&INHW=yZ?c)CPPUu|5U=Pfh2|I*)Up{Hkk)G6)$&<;8tTmK_2r15s0c%758 z-B4w83i;v6VtoKcJlmX?Qe;`GtN|Bjc#YT6jZvwFb4N??R~9*KocQJF#IB@ zo3|4RFofuVFXi3D8x(gASGf_;cm2gbx=>tF;4bZw)B8t50DM7FAZYqdS!K28$PLbW z;LyN5KP2%DL;Lr!&@;qc>^O-HNS~c?;i=@2e7PYJ18x8I0r_)t4{9wDzv6nQEI{32 z4cP$$q?1tK(`BH3p|BI12@G#3SHLsg)GaF>xCc2nvUWa=kKnbc&vlZa``mr$=6hXr zL5uaGaLfx>1o$<5aNdU^O_VK&9kv+0mJ4DC`uDdHbuK??{^}6?tb4b|^4h6WN%>vD z^EGv;3$+LL+;Qq>!0odFtdp+tkZ&&-C1mrdY0O4iN@8w*;G(jv^V?QNo$YXNcXwnW zmUuCBmK`wBmEHQW_r?bpUcSGqgUw^Xc(THdxTzo8ga8M^@eybk5#&)o&GPWrwl-F- zvTlsN5jqi|)9?-3z;jM;>5X(6Ntwd4xlouy`UdE92RFi-j?XfyOz#JHQT&^d0oly0 zal{>3&n+PO*M&4o0C{tCZOZfph9coxv6gaAL_-z%(xgf?ZEmGB*VMsIi+O_k7MdYI`I?h`uc3; z<%gu)ME2TGcVD-vs$2McS-%myadXc;MX;Y*NsYm{K0~_YP0s6(IMk8T3i1o>Wq3{La%P1{OUZ5YuU;Mg@MgQ^ADyo+m*=#8_TgJ^$#Zxq zlGUkaYO2k)S1B2HFWWSL9W~iz2LGItcmNv7kM~}XGxxvcI}jzodByHgbyD-?C7NWR zm+Pr`Wkz13Dg5K}v{X!@tBd!II&%Dqy#La$ZA*&CT)_>M?jS0wulDDs%~xl)o{;WD zu^t%J3kRp-3A<@ijTiOm@`fUPD=S0dV=Jfox|M~#PSfw<5q|NDvcdrluY3Q?!_+w( z6f6~fW4`@$2>o(YcJY1s6-jgHROt>3{wtF8U|ulv^62-5q}lI#)_tGU>mdQ)1eDr= zq3Dye$2oe-YAG8U(l7#Bl&2qtN$Ie)j{mcFnyB>^f0WRj_genT>4iG%O!4`*iW|Qz z4lFSoZ4j>oDia=8d%oNF<}WHLwAn7sD}-U9%7A6mF6Dat5aO0W>9n<`>rqYU@AMPx z-MuXv1p1`n^_^ayP56s$Q=1|q?jN5m=DhKe!J#>IHyYY$rZfNOs!vUa1&=5j8Wo#x zCjXFDqpifk|MeJ#^GQz_m2v)SxM$!-}p08#W4%c_u(3<6h)c52^K#v}f}JkPk`HYBa0sDrz+ zMo&IIaQHsm6X0`0U5C@nb^!ln*hAc3-ej+q#*8B2XdLrXa6O`9YxgGP?D~Iy|0BxF z{pbZ9vTygGAbMR;mM2+036a`1-uhMw z3JO=_5h6{AY`=2F$LkNs7qT>ddUbKet$fdUXQ7%Hsd2h`4HE#vzXt_s48PzLZ0+od z_IELt%cl+p$^>E=6Y|LRRk)?qXbe6JBG{r=)Dr?C9}C@)=ds@#o5sYVd!EN?I=`t= zL2z>X+=hRdlQK2v3`N`28%mC{_oI{@l?~d(dRhx zr$cUG^MZgdTFS;AbCUuN12S-|zh4ejC1RfBkyG8We?2%U@W#-h>~silKt+^rsm9jV zmig!DxzOzw&Pp?7Kub7y_~wU>EJ2V&O78lzhyt!ZM!Byz!PwSd2oSw1OT{ee<{9$+9C{n}*=)hF$StBWqe-ysx+UZHKB z%|{g*R#F#(MD8mjFo~E=eYwudB)tY<4AjvjzB(%l(HXA$X!<(CJY~9=a+xW#rEOF4 z1IW$|D zB4oA?c<&=!X5a#F)gs%BZo^NZYi+cdog>uf!KeO>{&^GlM{uAr{bv{(eoOLe!`M9J zVIAj5Mb**hA)5dg?Yd#-D6m#v5Bf!hcQ5VUT538Aggr{#fgJw{97u-YSHPhGu=|Jk zb@!oNyj(@4VqUE7H!vwA*p3>5pP~JP)6=+WzDE*2 z{WO=DUry2^L*CbqFu#3x^+3_FBU2_qaTIyn7_dPCiOMc73BZLca(4Ik^D7 za^QhKMO|NEgugVhRtnZjO=ZQ1dift+779DO;XGw!q~+1rg#eK4i2wCg7?UX+F}9=Z zKJsr56JZu6c@4QsfshHe*uo zka?Z!8yinq(i<2GMhchS6La_<+mH67Z;4pJYD$BV)--=6!5=Kpm8rrZ&L zyrWOe!T98npAX{3?7d`gOGt`YC5r5{|1O5}|Bw$DdVir+RcWS2V7)P@EUt+9t=D}=l5x0S2@%ZjmOa@Yp){w z6E8?=9wti)7fX|lJDMWIs!O@#2SLYJGZSmwUT<(jUUmUfquY3L{9^ar8~FXt(Fuyiqv0h6AD!ZPpHni@M+(E-_2YkR=s<)d!KhLMgt!FwQ0Uh6Phwm$Lc_4G)? z5h{gt1<{+UPHZbI+7LEO%JFlS&sOg%^k|!x3)|e3)=AkW+o5yM42Zu#=cGTE(b7fD)6YVfq zH+m>ss4cDOa*a?QU+?PaxO|+thEU`FWj{U@AyzxD%YWA;uI^P2Hg=h{jP4w=*Y;`0 z{#+|qoe4JnCTW=RYYu3GUzp=F3&=lPBN~Q->r+<2EH)45lL3~#+(6bOdx61Xm=Qr&m%7|L1s5nHs=4RaeKy_^RHF7m`A`Wh=ffq;3o)B(E9JSXxhzFO9(PadgY-AKf}5YS1z5_(87s6b1%1 zq+yvy52;^ZTQAZ7=!TiddptAoST`Wllcezo+EteZ+8?UuMQxgO?CYbzj9Mw)*tT4l zDO~prIdV|i41n8!Wj?Rf%J!XX?6HQC;0c5pJP`LNIXKI?U44B0SzS3?k7kwP^s{`a z5gYv8cK?x6oIwWj3=Iu{tm^r@z!nsSn1U*fi8OGyW*hzDB3#+6R;R7^yHE$FKiT} zvKxlrwmQgH1F=8hye;Ac_`5mIaj?3b?`UeR%&&0g?@F82^kUL4|C%0sG`H}Cu1LJg z&5j&&4u|GsMzQ;wsf@YeE}t}_H*B3 zB&NMeEOgd|TAEjkH}0WU8IGn&J`^1)s_puw7NrYAGA~#|u4m6QNkV%|VN7Iw9F6&y zbazoX$v2Frqm7y96ho~pww}}x>ke5r`IG+Svca|0720+fZUF^|V}G(SxpUabcgQlB zw4^#`TPKF|C_AcnhaOn{AzoVPc(MGl+s#Fh0t~kP6|uAQkgjvG1ux2aHkv|9JY!xF)|p zYz#zNR6=SfAWDjK&Ll*bf^w(tA^7YDNOP6Z%NTQor(;HR3dl4M%P zG3>!+34)m4Ncr~fh8vjH-3SRCzjIYa<#kc7!OZsJ zX+YAl`^Mgr^Z8-dissWxLcpzXcqw#CTs9-OV9t?Ggh?c({vU+P6fDP_zta&rR|C2J zqj`?7@_ws9Vu4TNPN$nV8CXEoJAf!&l%&WOgL>3#y0=ZZyHK3h#r{_FA~7+_71%o_ zxD@1$90pG$_R?5%C=y2=BU`*$bSEGAxsH)@z~eeennPSgw65d(J}B9cPMM${(q$k9 zWRCBNt&zJP)0X(uLPyEzSEsJextbQ6&hZ$%wOuNvds&=2wLWD$7V}5K!!Cq*dgk7u zgrsYZxz3(YJp47h61A}p-RL3T^)G7q6p*PQO>FAiP{|mh`9q*v94L3E!=p48L?E)o z2WpSm6yR=yUU2@-w*e>fnb--~KDS_iYRzE?mo4r-S-7sXO8HBei#{Cx+u-*2ZGtuK zEk$GLrWWEkPEqHVL^5IX_|Brke@G1q54gY&pKT;=k&X(XBi^< zS4Q_xbpC-ShmL+2oaLE11FJ4Y4-ZaqFCTw_$|rAb1Q-`H$=llv4`vS7@JdOS=~-LQ{k7DC9jD?&i;Gu6qBlW|4R?)f3o+- zP)Drgmwx-$9>h$m#XAMW9j&_0c<&YK3ZG}wa!LuGA5@ck%aY}0ld(|8Y>BFDW}j6) zia2!2)rht&HQCm-ENxQkI@DSIDj!#I*u;#?uaevA z&$|l0m*hDRRsqTh+ZIt9hy7=#L$z1|`2^Ww=u^4~3FGaI^SZhjU*1t$$MH+$3Wgpb zWJZmEr>o+-7cjR5g!iLkF9fwr{|PWtO=^FTwy#nUh!lS-Mbo$RIYJI{3POK5?M9W4 zL(%yZw^wa6OC*l-iht8U+;JzokauBt0a}mwk4`}0ifRI_e3x^Y zNCf0z#q80x3{9JWgMt`siKcgu?+6)iIja9J%FR{5(}d2X;*aPcAB}Z@H#M1+)E_WY ze>PnQZm9@WpyN%<*-8{^BZpjFShO0E-0Q}NA1j>{d4oz(EQbo+=r$3MgMTRsO4!^( zkGqjBcL8YP4nT(*Ej!BZmu+{d#+yyV>Q~lW!@P;lp@g{^jC&^EKT2e^$-^R;s2NRy z6qS3l7J||{`C^n$am5#oE()_N(qeOSi#Et}UyZvA-OGSCD++i++kYTk7dXz}AqWEr zhzO|=kb&AT915os>^inmy}z&p;Jo|Xx`tlZl1%YW(A@$WU{;96j3LTaxV;wSAdGrG zU7wn^eo#vun!blT2zW%}JhBk&3tZ0S?I~Ar`>vEu^U`CjpY6VKdsnB0TQKj<@hD93 zNp#Sn!f-I>5C$(w>c9&?(bN0&5}vAmG+Jf$OHw@=K8ZSRAhqGF-o^xE8;0G1=|-wS ziqlJmyksUZTA#JZg>g0g4=9J`nOi`TYz`qcGV#jVcI)$DhVS_l*+-k9Mw z*K&PfexCXF^`*xw*aCm<0}WC&QDF2HlojYq#dn_(jk}+23ng5=g(*fpKyZ_S@VHZ! z??G?i?$Cn4$%%>kt_;+j%&Ls%v(vlzqxK7+BLO)$P5q9137e{Kg`eAZi>OPA$Ipu9 z>D!f{UB*qyK5^?Rwu?x2c=Ai%e89GUU>c2_#~{IYN<_}93i2Q)Dg6E-SD;#Zp5X39 zbj3t0Nw{X8lLG4MmRmFqC~!k@3cg3E@c8k_eBE$nQhMf0RZTn5c0%F}pjj6_9xB~H zeDVi_6B>kmk7|lAj#XiOSgvwkKuf|0`j`i~V&k?jNK&?4Q2cpzD42VmdKotB6p=xU zz<$0&k=RunF-a9U)o=YI4D>mm94;%>U@SaM zf8=}mB|&B>X-?gX(VU`h6@g+IybxE~42GT6=DEWf;CK|Hzx@O2mmMN0Qr@eNT2v`z zojO)aRyWWqT>v%Brmtg1R33wR=rkKOn>OOG5Ephhvdc)D9)1hKE9?G7s6il`3is0L z+@9Mu<*j+sKYb{4R*jyA^JdRquhj3$RPh%zU4e};K2krvxK`fO+a05?rTN_KRr!xj zxlm~6&Cd{e$BCJc5?n7$`PUP2pvg&CV<4^3aVh;U{t6~<-NFbZakGfcZrMB4r|-VH zGkp6QqmVlzWV}lHFa%XP;fXN%C6N(}_mhl7n5rD}&W`xpR`_TSRZTAr({L)f=XEbH zsHnqbu&>6~tXdIjF__j4clvN}MD}|T_VBu3MBKW?)aI8_AuEY9R=d^tdq23yqM7oB z);cvBT#7u$OO9gKrDB9#b0F_cwJm>B606hQH6IqfW)JpCrF4SxJjvg6Vek&-<29qo z58Z!)BB@H)ef^tr{phI@#YI{G7a*;iMz-kN4Y{g|dJ=TKu97Bn>rTG092IC!J@gbG z7>%}6@p#-|9Z#8~jZ9^+3q$$`vLC&4!pD*1ZUJCT z0P!1la05iIwFd0C?}+vvv2E^e>+lQFF-NX}pY2}wd5|)H8342)i}RU6R6xXq&Jcv- zeCAW+QYNbSftCGsiBm*8?`-<&DCZFydoGWc-pclIh*RWJz6#x+`Gb=0SEr9W zK!uVs(@^e#-3NjVZ>XSINtW?9nKma@m3S9POvjZ?pRWEC;3_(0R+xD*@TBgl@=EI8 zB*gv^CkQer)Z7aTU7I)6t?A-^Ou!RhWg zJE#%;5S*)*JLA5Q`fNN}OG71;(};ecV2Z_l_V1#xof_Xd0cQ_Z8kU0AU(G7ib=Mwy zd=9xdcGP?v_l1hQaL&riAyWe+kh4g)aog@x>8*GM&&7z@b*`yUVxh>%xEbWvHA^A&T@vC1$tBzwS#d!@D z*7=cB%EeiaUw`~|AM$#kNgAxOb&9bjKQ&Pv&YJxtts`{<@qA_bwsVXG^3PrNB{)3l z2MTUM0d2NWB1K;n+XdWm97Os9&%DPv*Vmk%>Ael;yq96WYL|+$mhV+*@_y1EB<*!5 zWdBE}(s8fs#qsZ*KkR+zz)9f?6Ue7fz<_CWAv*_4j6`nfs_WUyo%&^X{dC^mUHI>* z*=M_OgPkvc=1R&~HdK+?yV^7ae)QKW z0LZ3NeF7KnjmR~x|3MMa(K2U5ofolr5Bhs8FE-4-FzvkQ5zQt6rc%Gw5dmJlNhE|H zF6(DV{*0!Iq}W1_1^fpZe;oI(b7t!LC~io)-+K`ZY)~382luHdG;tXD7KyK&3&Ixc z=V6<*evJ68FuZDdokjM(XY7{MH!FHWm`34Z*4YiDP6q+_Sbo@%Sdn>;BAB>M_Tj&l zBOQaS2?-6(ceS6X;ksp~otah?7XE2SzKw;x1n=Ce#;c*GtJh8iUnO_>yf3ov)k0)>1S@W%7|jvDyiK5 zVl+l(FfvVVw1Hx5Q1d6G_a3L|=kp(5C<)0L5`u5?wDu8LT@3F z-xM;wAr&;wk{F4n7KEL_y9jNt`w$;mlh>eUmpI-jUlUI5YgjmYDYp0_(2N2~9974uNbQ=vPto#6@A?)Bk zI=-f}r21Cwr}CPj!_wZn_36bTFRp_&Gv(S+{iuW0(R2rfV1=6;X%|e!Q}=r7UepSp4R@!;)@YU8}{EKi-jZGk%Q{0a&o{(U+{5Vd; z75~=V4pVkJYFv@yu0~ErS;vD4?IGn_TjxuxF8dMYiqpKADck(0S z3AjxOV(;NW1Zio(jc2ah4J(tKbW!~Xs8{lU1V=Uu66XFv(Trueu8UOg6hgZXWnHOq z!HWI68x$+tQB(S}bOK>~+R%4ZaxWewRS2x5u%UlGkBV2Ot7v&fVRf4_*&J_EMk_6w2m$1Va#Yg8|jXZ6pK zQ|PY2iwNAfVpw?0B5vx`BjGG-(z_|pUTw1TI)3s$d8u6Fxh9SY{e>t2BTFI^oMCvl ztG#aER}OuxWLW@SPyFa@@6=g{ueQKC zb5&0;)y>{_keZwW9X*Qw6lRkiFK_~WJ#$rS2@Cbvy6Q$v5~Zx;f0AgI*Z0s9s8C!P zH1yvf6P>^P0;&VbGPRzeKr~39AHZ%eM-E>j1b-PmN4~|exeh!|)@|12;gjrm`0Ghz znWg|qwI?B~B>4hZlW%S&SdV*eb2m;NwM8}M%{P6RA8_g@JG+-IW-`X7%xrHbvV_@A zRM^Ip*>5Bg8Cp^N!2*krizJ!$K!#9?!VgQwsixwBN#Jl3R&i4@PGXyGlV^h!G2>8m z!{MByZxzAf8^0vSkEiV4PBzHUm{1E|cnnGGu)QZL9cvNntCzIC0=xJE@z9Z)71!|g z)6{2*C5Wz(R8+&2Eryuvv1~(wS+$2XUm;n}%*WUiQW1@fi3HD*la9kfdDmTjt7UV= zS1(wnf#rwpYV-AbE&G*;YcHICQ7{y3@UAXmtqaWEFG{^Cl8HcYuYq>nY=Yrf_7|G? zd(1IsAP}R07OVmR5eTDWh6D+V7ho_%HPN}4h<2ad!U)b2=oukt}<6vZ(y)i$brl+4|X`H5{oMX>U{0(5o? zyOX&0=QUY<8R`K(Z6Ez)s3J=05av^knN+}HNx*Xg^f1di(UrUV2on#45q!o5grJkBf0r}$F_ww)e*h$xx(H=`$ z$f{tq+?gcJZlI!l*>tp@BuG2&rMoj}p?De&PuX(E^?a0BTdU+wA$ zA{qTd$*@kuU!6Wr)Uh({NsQ2V7fy8N`k2)~wAZaPxBYKeLwj;12?q!oS1J5(#$X?U zcKg|9?V8tyaS!U;RR^7?6Ev4qkUIj1j-yF5a1UsNoI>I~z6_vMeBw$p(X?XLY`^Dppf@LfLD7X?gf&7))mUWY7DApE=#AR36-ciELrY7~(s71PF zLP%pYea*++u(c9{1EXGZb;1D$X*?yry*`SZDhGY9 z7;mFw`2h0{6IQj7yvLkf@y;Df4k8AZ%wmy35@(3>qx&qfv6@GQnjUNWhb55`?_DL^ z+Y&W_yi}z~-IMd2c9Azc&$dST*bXq?6PgOl@FJdS{bXset)0;4I){pTKnenmWQ1S7 z1dZ8tZYg<9_`qxJ$E!|zncKI+sUC_i;CF4b$q$3CmtuqILnLJ_Y0HZAmuiFs!ewoe z9$Uy4b{L3hUirF$FhO2MRoNsR+qYXz%BybMHFmaF zhg|Ui;d3s7BZu~HEJEkz+4pZAgS*=K4GtPO1p)>Hgn;!EH5Xi27};_I!5()M?gSy- zbfaA@TIc!y7ru&{_$O|4mls1az#MsOKq}+9z&ZC4KDpf?C|9RnoHbcmVSeT`R%YkU z*W+5qYXuTRiGL=N!-?DUuv%+jhh|?>lQ=CU8QYN(S1W?*Yy$N~XokNZFw8^6sYCIo zh=a10q8>-=RCcuyHLq7o?OF7x=nLVtn{gILE=?Mw4}milGUF#`3hBIG^28n+#kqkq zrt(ITQL8k3=VlRTzpejAm(2gww0H0@d4#X1o|>k~H$bdj#Jy{{&c1C>UD)Cx^!V#N zt4r+jZ{qN}-vK2$;=LWmMC;*>(!Huu2iTul^f%-Sw=?&D_|FBQV&Sg{ZlOt?TGeTW zA1Vf`XO`}C@hSH`<$6xHO7CM-92Grs;4uRK_aVeDK^eV}-Mwhq1vCwK09sBf{E< zO!5Xd(rb&Ij;6M7K~Ub?69Gajp894Zd*otQylq)^O?`YEqZ`M^ggv@cDxM&-!AY=f z?%>lWIp9U(RnEhnSIdCmKiwMa5C5RnI@7T4W)%Yx1|zmMQBIEWpg0eHW9^Zk=`@M@ zgdyl4Ps4-RsQDMVAm=2}!QA*D0l}?n`!0bDBO7x8Co?q z{UJ$r*M>W; zx7Aejr+{`SYZ*uJxbJe5Yx}cQ9ARZYUic$|XL}76>-->Z#@O7fpJuG7bZ?FW^zYJ@ z`k2O5$Cj#YoH^~){Wh+(VJ<`~$m^rYHQYAWCA2dYBhRBQMYg4w4fj6{u(>fhaX#=& zU3{m8vLm5B?Ty=&Jn5S^Z?!BGIKQ;2{9;ugBfTW<`xf*?bS=e21xo6ex32noo$m}TH0>F%+w~nkPmGjwp{3y~+ zWguDakz22s6lz8P3EJ{6KjT%t|`SyW=8dt68YB_m~Wgp zp%)Lv<4#=rjNshm=j~ieesu~eW59|i0@jUypQ$uWQ6we0Mr!`rB_U|mjd$5KSx|+& z(0Svdt5@BW_)2G<8tXbCmhIi_d^ZKR(t=J6S9;fv~Zozm;^zLKSlD$sWtY{24 zX@@L%)+%d$HMufM?xUS8AnULLB1vUf)rTODaxLN>bn=tk&jQcv1{S11&wq3-^oZe= zOH`+$FhX9mD@CQq{4bYW1NXRGPDef3?2i^pHssMQ^eXy5n*>Zn$$E%i85fD^rPfme zp$fyNP*?FTx0DYwR9*}s1O06l>oaFdj2B}bN4NuJH(2YzF{p`j&pca&amHNR8TI`1ySDn;q#SXZ#)Kiz zjz`+K`(Nzh#mP*;ZE<(ugWH{}(V90JjHd2pXsjOt7%DV^!ZzXq39CLdv}p4+!H-~jhN9#1kG$Gie z!T*3-9<)0${E@~A7AiV#ke{g-v>Q6w?+ubnBMeM(`I^6dg2uQ zpA20FXqa#KwtH?0SSss}hG%@O4QyKhtMc%5@Yy12+&qeDZ5pwDJNM2Hs6cH=>yY8F z)X&WJtjx~uwH++zpkPUjo{@XchBAnUhWF;LRa` z1{W8!V=!zg2%U1#<~nyd%M0hw>vkaZZlZq{Nm_%u+8sf@5!inAb5rkv(&E7zvI1eH zt<+zvB~>$qj*%_Fjy3g~!0A`{&^_LDsaQJ4mY*M!_6MA&G|yLmF4+pcS1pfMXF6i1 zF~={&ZLm)$9#8x7nU8O{+~RjVF=g~0UFQ0_zX8xzpaX@|JBsN6?DZVoP}}0>F{RoW zv(e$&M_J;O$=toCXSpwdCMsa~z<@|TeD7R<2QVW*Sj6EB&)@M$~2y-p{WXM5) z{oYdNXnLSW^iIzv8odtjaH2;@%{WTJ_>WCDWhi`Q)5zyBo(9N(g`$L`+jK>-IIQ;* zC16aO;9qp|A@5-L;;ZA)b&ofO)ryiSY^vA=&=c#(1pk;eLE~tWT8hzbmHnW9>%_y%v=pzE~MTuU)wc+%@;ZitAo4*Kskp*-uoePcu3p} zQyx~u&j;_d$E`mfWsRkHmbWcHZNI*FVXLBUn@W8Ho}DE^v?2+|9ei1WAlPP6Z5a4M zm*pK2CyVVBWCCxRfi_H&>PneU)42Si1y|stNIXs90Bz`f?1mJXB^cm!q0%#?@ftSR%g}ki=G%d7bdil5h3p-mMP7M`Y~NSqTbI-X(9pz)!lg~ zf%WecIpY1bKSgkOi!=Lt+CTsVB!=^V@W2o6@B0=kK^Tk7hzrWsch{c(PVcZmt~^Xd zl{fja=R6CB5ft(|pb@Hv;gzR%of~fF4d(sIw)fQIyG-*T+5hXHM;(L_F9wupa{T7# z)Sj$B-9Rr2SMQ)Di4Y2x?Lj;-t!$3+Xk3c(gLT!p+fHxR6K`p+z!Ih0jv`kH+q}UV zqm&biRJS%I4teaHz^MI*>lL%U2O^PoB3{c;6vq889C(x7E^0*R5wxRy=)L}c03ciu2%eE$$obXa4xPgfK;FNCN%-?7s(R&40--Hv7d5bq@GoGUcMtfnUObEwzYZiO*l0%;|IYVU@Q%QJgFKnf=fJ zlzy+V_j&H$uD1pm##_7v#KsAvgxit(I_4Fq6R)_e-_$mK@`TcH)!;agEnbM5>knH; zXdLNE>g-pVOCeFRG-JZ)3zgX@i7lVTDReD=;EB2GBc@$2k zMcDghhXyCVlcg6r6X z-3_0!h6{|3{;1yQh86==mW%hxrz`()3OO)NIFcEXO$H(0h_&2@vc^FTBysXdKLX&S zQ;2t_xT@i$kQiI7to1r6iwFI|HrF#wwLGiN74Ju$+mn>=Gvw zL$hl$)@ji8;uds8&e36ERWA`eR-5~AF@d?sPCHf{v>hyP_Bq^aTR=1Tzg%;Xaf#f3 zO0?EMZ6wCk%@=a@xMoVL1;3!fFm8}b9n?1gO>~+jOBRg{xu*HGKfFw0G6%uB`Zp!a zs<+V9-q%;OecAdek;w(#+w?d?e+Poj34(3H^R)vO^>VHIlEqSqV#=QyORjYqphaHn z=`6N%B}q~N2kEWre{@T%xGD@a2)yOBPmW~!192!Z(gr;KpAS6Z4yKy^c~H3iLe9th z`>nv)|NC1;2RA>9ZRE_${zvyH2PltBVU)Vmp5tlUM_GIQf(@5VX|0$4qsv_m{501=IsXj{lYDh4>}X9pB2RUT9i-izWOr?^Qnb)=I3t( zu*V_iQ8=b1@nG%IVAF+=GmG$XA0<}#L=A#HRYM7p&Ly2Lydbwo`S@%}+)Lu?<&532=$V_V)f7P?J0-`4quKj{pjb zZkpnNj!SVPbcJPouCNgtvH0u5kd0;S3^~xk9F8Fpi<<=u)V>0};>{4EU6U+rcupRB z81QlSuV;s|2WqB0IG?y#$*`j9^jIc^)3`vSEq+LyaZQN#Pi8z`HLrZ2#|90IB8BPjmo4KvjbIhBv#M6g#8DGP&?M1LHS z_I{>X*|C=IICZcZkT;2@m!0`(oRb%Jy>?A$Y(hkXNlmU-wVS}!Igb2{2YSqjuusvn zNv}7Z1$q?>kJaI*_v?~uzmEmD>c*m>!vav(&>pZkd;V5ql`)`*l_v^lLA-XE@*YqBZjoY zK}gBManE0sH^FKSb3>H2pG6u#x6$KG=Cv`wgR&{rf94nS#+&~2c6L@DzrqooutRh& zPbe^lsIIyyuREMy*}V%FvRpN_m_e=H7(`4?35P4Dl<(1f9kz6QF@%zbIGspdVyd~6 z+3Qx`+q~lI@0zmEsMHJ;&pUAM`}6LT>=$QmJ-BTWcc+$dko@qq=}&(d+Sx3!p8tec zA^~Guc6wJjC&0xK=maRS_oC!Y4GrzrAr!u8qC9Dr#)$ql(RY;`$MhF_Y_w8{PFoTB z2dh95LmDw+&|<_>M2jD9HRaskfj1FY3k#FkViu^L*S(F0AY}cH=Bg_?f2Qc}nB347 z;TLrB>qHT}*joiILCBDnIn}XAWh3$1j_9LWXpYtMKY(G1`1oU#vB`oGO7x=$aC=>j z_hx^`QTW=oC*Mhgdb0qsk5(W?Q25h`dB(A@jW|{kpVs__l#@aqd&k#PN5(;#n@F25 zNG_aU3VjoC@a}&v?9TA>h+m`L^_Pn$UTeCkj(%|0=naRHIFTwIR_BF1hk|h)@wHHk z<1WAqvxZKIb$O_p&PkM2mw!RfdIxnwMKYiZ?>{j=OBUMw$_qw+QD7?L+E^1e2@F|Y zByflBk)^y0LTL<@!$R;Roi-olZKKDN*SZXC>LI^SZ<_>3Z#!6u@>WwjGvQmsB`A4N zel$P97W&Hp$?vhnFxUnz+(z*;R4d`3Klkp(Yv@&s!AP<9D5IN`%gNZ#Yl#f2;(v7} z*3EYMRbVYh1`uC(k*_f49)ix$S?GbYvsWG2u=+iFJ_~FO9)Rdn^^3;Le}a~Cf4EBO zIBD$z$vP^|0DmOl5>=p#(h3m%lTI9{_IhdaB0P^a(^W!~;zWOqVO z=sD_Mnpi?;3F2Qv!;F>16n^c|3+8odf>z?&2paENe_sv>+Hw5$)K1F78>c{f>VlO` zEx-ZTW~}B{ff1k7BKx7mu928v3KMD^a}y!rFHOc{qkY`i|HdDwhQ|a*CARKeTkS9i ziIp=OHyxfvNp>^E)!kmRzFA>iYr05#u`9P{3y$^B{b1ObNGIyMzbPyRv-UaR24%uj ztpM5b48-i=-319t5yW_vY%Z?-Eu6(-{mli|8;kL=#U`6RyO(=Dm#vhj2qp>+Tc0P# zt8Y-D)Ys7YTtU&%CiS&r(^&Pp9z_l|!k{~9T05oLqoSh4Lq`XLyho4J2mL@T4It$M zA<@$E>lL4_3#vT39RK!ds452>+$In?o~naRr5(5q@AG|lgRKbTMda7l?ml6GQqDf5 z`Se{^Fx<}1l8!z$2{GR+hW(nbxw8`aLQt(P3euPy%OLi~_+m)zY?ewJi~Vp7xo^Gr zDse$h^T}d{m$hvEFryL7Xvk=xl3KS(zUwg}tbkg8O))-gSU|M0b@}vR8-;Tf;Y!C{qvA*PqIy4Iu z-iKbq{3+>&u5bKDceCen>402+w}Kh0i{zKfxI0Rf7}mU4xx9L={b zyyr1VS_0gVV|vaj)uc)xOAXEA&9v8-s{+_pS$*d&QIj-9{o5dubM!>xX4{X*^6Xnk zE;`dE0k)ic8=ikX+;#i~B(~9{E3Q$3XrhaK0?U+1BGQio+S+M$nP#N4Vsi=)A%Shy zxqacH#C+|K#9CZ{AB!?Y$$k&*O--RZMG+oszsL3wuZ%lI705@FopX?`KCR~=&&`-5 z!s7g9ck6xtY4W<3gxGih$78>`6wz9*VWfG(?a!(`S?-1eF<1IwZT_BB_ zgd(`F#AuEX)$moJWwslsc4NCGK|SIiE)2bFkm&$>!~%%dUwf(30DG3DHA^3!a-M_q z(-!_6Nq8v5+N442Q&o!7ywYO7$j$|zhKF?-1r8T?bLt)#Dvu@}J#u+Y2l&nT6}1VC z?|qZH7H!_n55U{e)%wFe`nS`Zys%S_e@V!EpH_6|Ana>pukDr2&q6tJ=fHZ@}6Z=6uB|7=Px{^5f!d* zfTEm>TgUL6rkUJ}XrQW4`=qY=6W1l(N1e^F-=cXN-x?jsrI?+Oy7J-T8F2#`3>0!k zsdwe%7_BwB?phCS%Hm-p00C6U#H!1Q{(S$+Vt@ZrEdIPbKv`lJYPe%M>W>1L(`S6M z_k_ybJP!Iyq(o{S|ISGFh}1LT2(3Q__3Tox8D=bT8S&Lw?_*yva3_9U@yk`2qF3IM zf??fAicX7zX--6Ld`I6|N>v2BG!8l^_;3P3-~lP_IA5`UZfoRL$uso%QwkNBIGtel`RY(SZwT_Iznaqab67fsChc-;QJRre;apT_}%(A;sKVclw zaFeJ-Fa@9vx08EcF`dZ$_!O;fwkDo^4Eadn7y?vtB!iLjn{t*TqLwjGlPbM@5u-NY zeBmSP&Q9{_^Gb>#vQrpa==>X0WjELhzuKr!*;`qHQwS_?m zMyq?sZwniPzc-yjiuAoItrstyNLDxHR&Ui3)zT;`4|Q1|%spFjw_Q=&U^JWV8D!aF zO~aL`Ay2X&hsn_1je%2v4}{TcuGC7*`Y@<6 z07{L;mDv$0sfocHf4%>esHsid0<=SR0%ib`^Az*vWAT4<&(49->Z^fl1tGO*sNVcb zA6B3WCN=ea`?(=m%p`A4kBK8GJ;@_}qkGwvrgFrdKfgbPB0hJTpT7|60M;$7?gu&{ z`XJ{5D8I1Z*dz{eNU53}h+i~0B6rGCPo9Gj597Anb)Dvav?DA&&8p&ElFCaJkwc9E zL^_BOuV@kgf)pbwJJ<;5`dayCJ<(s!u;4j!KvCjZ-#Hi(!MK;++m+SeV7_ql_^!E1 zaI9n8oM_ME(XYp&O-||$Ppnq{_V=2Ph*38)CCjyD2saHf|5+RU35}iFL!U(g;Y)ea zz?c*Qvi>*#bIqyvBU@m|0cS8yM=#w+v|RuGoMWHn{I4ucraZC z99V_AsvEuMK;0jD=+CWdLhB~DeemHL>>cT2twW8)1k^sUlN5n`f*KHA(EH^)n8st_ zJw=AarJ_eYk(68_oWjqyV1CHTj6e9`(A9gGTxMWOFt*tFkB%FBN>7BUf1H0=17SHl zPnj$A=}Sm-SkcH6xHrPBzdi*?Fh^cOw*G@NPZOPkTB5Y8%SNz(C;bQE>a^@6!5s6@ zr83efLS4K)Y9`3b8^yTbC%M=sfW8bxUI{?|f|IVt<{$n$T{~*!5;d=+ zunVUb7EvXdU)0M8%barCDgK;b>I6?w@2B1dQ(FAkMdm~g{B}4(pbXM_h#j$t-)A~! zn&3Z8W8O7zk;wGj&a$Z4ALQ?iO|-$i@^TYMQiKtFS6yRd{BV2h|bj)VGMm?#t-S} zI1gkZf|@D!(k%~W?!@xmTdAGTO6;JXC7(Z3ldZhQ|BbX1bfFfpfQ{4GsO$1cRx zHMxCSp^-jg=T8+>pE%TRnU3C(IQF47(jYP&sEKl*@K3?0>fdck&M-W@De`bFE~HoD z=ylSu#2B>hI#5;-%q{wUbH+JY`gQl!R{M|I78wBRDQ?l7`!2ExXMPMtonL3X$L2FlSSM{>txMw*(UT2I&{lb{d=X-8JkcH=;q89fhYbP zF^ns%elI2Tc9XX&Li^xXdRQO#`}4ifIsG;wx;f;IXgEF=%S5r)(5!5P1&YJPcCI)c zzfbP))TNh8;`uXzsfgAvJ}6z!kdW3rsG3P?`Q_Lz+d$+xx}kbz+iW&vlCO$)VLrHh zrNojI4o9{?FwSt2J!&d+M0d30z~8S^)O-Eoz)puOFa#CLn^PWa4A#Z;xqlNsocAtL zO#M-HGkbjZViNax2{C#e{!mssL;j(kQ>E007IV=azXDDRR>C@7#W;%XB$8$SaBRZ? zovTF_>9~q<1fl|JZO5bK0jYB-JR?3&2K%o@+j>AYrTK{H%xvR^D*x^yE8DdPF$OQv z--970FeNG6by@Ku%4?tieE^fY-$-G-(x49YxHx* ziK~vu={-XpkIv#&MeBld_9PBVL_MEVk;NmKP^!t zd&@`ARbd~1MKK+isP8Q|!9lyzJA(B1xH=NPW3mj{KR~8H)3C>;62z>r z9mC%)D1mpQ;OdX8di#}1u~)O46n(I`CPzNr7*anKAaiJO_~;4bQvuCqWezk9Lgy*B z#~z0#;|E#SqK5Q7Nb?|GFp=Ds(liraa`#5=Jx{(DZEOzF_ear~8j0w3EB5o#4u!Zj zd)tft6rHP0$>0)3f19pR^IRLu7hvxLE4QQMXXQKWZCwgD6e_%`tY>Y7UFW~CEXH(V zdGK{W*Eb?VNG^79c60R@)0*xUO@|{nKsjSJfVU<%_1Rk7^sKkX ztf_K_C-PY8@u?Zx(1p`Svv-?h%h|>vQVLICemRcS18G-iqEw7N-(B$Ff#nO1V1yQ6 z=cm{Zjb~gwmlMygb>H5kFW1th?(t$wD>W>jY^$cpyFbmGp9V#U{k$)UOhgC;KP0|r zQUHoY#ShGL#u^@b__y!(X9R&6rTGpg6V&JULw-(*dJA$?9e63{3%V`;L9IND{}qS| zHWEo*0wl!JTpjD=OPpJd2;Y-7O&OI`Fa)UH01l6{VjH@IL4Ao*?459Y7uj&x=(rIH zO;yPHYZ1-WXtR9(J=>pBI;1Ks9>M!63hx$i%$E9vG0$QA03UKvtB887AP0*2viluJ`{SLKI|sj?>F#a5tK4Gkh2<`{glb+;5=L< zynAYWED;g$<5c-I!#0Y7i4)JGeMPk@Cs{4RI&wh<3ypm>+IqmGc#isbwDs2DUhC|o z(`wY+$zcZ1W!_w|rK1(4T`@Ug4bm7j*Q9e6{Uo@HqR{6KQd*8-#Hs=H?P;PxFF}_7%IY5&*S_*|@ju8!K_a}3_JdSRhn+v)W0F<5nh|Oo7P_IrP za~C|m=x9=~c+}rq3%#W?(y!Ztx4G+ZZQw*X$oG29zjNq|9YTH@Zwd<$#LrP^?h_cG z{NLGk#_b5t86N(~v4GCl3~rlsSF4OfxFn}m8?7KnoCWytW5NA+yj1AWHH#s)^S2iq zzxsL?L)8%)q`~BoV!`+7bSUE1P~Jn@m&s;Tt?b;~JIQZpZhY;Ne6TPiIX@R^SL&%E z7ajgf(k~_FxO93$H~vwwrAy=p^;Gmv4tC*u#gLo^#49mn?-zHUnM!FzbDz~!d`Ck8 zg2^jv_#HnVa!hVdC+xTOT%KJ5N`UHxp(57BD6e08L06l>qN?Fb|5QC1d z*})lq#!Dqr4_=l2T){hrn981E{Ykn7Y5u~C{9X3CC|hvQJtll9!KbtOaFG47QV_Af zWP6WfSNi5Tg)8srL=Lp$EtCy#3XoEv?Vx4gQt}sXE2eY-=%XK16!P)5(6t@+f-}&v-M;k29gEYkkS$>x zad@ZOXJbFhHa0-!469|r7`m1P8gq!K=QWzZ*ylF3y$)77yP?8SA_N&uFX>YQnf3_F+wZ}Z7Al(>09GO>UjKNGMRc{u| zYs!O|N7*00xba!Ul2&%{Bde7%!Kdt3Be;WSF+fGI#D+~@f-_Tk_RU!c0~d`~6(M>K z4%a`cFV-tA^LTOzwqtCNV;HkK!b^`5yDK-QPsf5ZAkRd2(!CWTfAuYfh$9C?La*K^ z84~{pZ}YWxZvZ^=ZW-Jh(V)EbGLW_=xeckYjb?`TCzK~SzAPKqESU6RUEpS!L2*Lu zrZ0LWw?1{JovwIzpQ^K+w6;?0vui0=o#92y>5Thz*fy&?oK&cd+PW$j+av2@GIeth zTIyu}K=fy{y|C1{vDM&p-F#Y~ZNs1DlqYIjC-{;Fx6vO!b`ALDa_VF52HB12^k_O6vifPuK+&L(n*Nv$c z3oD-_vprJ&P<5&+>Yw)I=Ods4b&y}HD{9Tza+NzY3qu6IZ}uJxe}v9dDe~8yw!KRG zd%eQVKJhDW+d}zI#!G+(zNouv9~?J!pw#!7K#9l>Y$Cj|pI@GD=t0m_rmpm@CA1WL zrnx%1Y4Bd+6i>+oDpI#ctCXFn<|cctj})qU`I0 zq&&59kB$ek;;n-d^#FMafN6RmaM+L<=}>Vpt!mM!?5J1lmfI|0crn~O>^z0h%eu)q zTsR_I>9xybW5g2SHLA6$o^(*i-ocP=>n{7c5LWTx;tPF|AFTP>d08J{Nvszf=Sz=y zT8`>phIZtd27-#MSWx*LMT zKv)}QYZVZyY=8^=iXJ|{_`-{{R!h!+bPxuA{GrP6K`f8vW6j1rrk9N8|4?nZkr~TD z)P=^n6LEMxIL>ekZi%$R%xJNYOy|tFHNzeKRgP$%P|Jn=$|u|3!cFXRx-Av>Y^^il zz_N^U;L5+V6L^**s9qWADD6LLWVf zT{5bm75t&pMz9X(&$Ok#5&1@X?$h{L&gTn}s^U?Pw0_g+?}VeY3&gp8Fl`4TQxC)! z-b}ZRb4O-HsB&S){+8czH4%e%Ov z(9B7`eA=Dv9JB`$i;bY1f-u1E5c8Yfw080a6_`Jr5oX{{>P6h6N9bGVazG;xvM~Hp zSO_&xQkgAhUs^zUxpcRM9#00;H{;X6Irrbn{w<+sQWbhH^Ma$cp*+pcUa3)1>FAfX zF4s>Ac^ruX+%b*=Z$R{ti_Vxio9DOIaNkfBpO`k6C6(&^jn*k@wr<}m>sJT>x3NZ! z9pIM2;+}tcx+bdZ85FSZjf~|*%m{1a%mo+PK!T>brQ)|?r$|2%HmNuTRB96Du3=U5qW|3#0FetCt< zMB2u4o>nUA+L!9Q+bwk#ZQSS%J5dfL>F2CcdZoiM$QY@it@W7bE!Nj=5@vh%#qK(C zCs(fNe=i-Mw3zocbk+X3(b(FB&{(~#NKG7u-K(+=BHi~>tKTkN(WZ2U#_I~Iv{xzC z0S3$pAH6`LCg;4wJLY;WESt;dP)&`f6%Lb4;oO3UMw`rv+~s;*d7@jeF6H?3uLQLE zfJ2!n;|XHI&}!?epMkE97NS+3?k`Okt%d|*USnD9FlR~=Ykh{6)P|!6Eo%eKSvAs6 zQ>42s8I+CGZAH5J0vF?NL6vG;a-X)dR$lSwE#feB3wUF{gdJl)==r_m^&!dw^_7+B zFqAY*EI79I3Tajps|sDxuikzxt=9aGjx5+E?{fT#nEoJmtnFECIMadrtUl#zZMa+} zTTVr8GB1PhuSMughR!sGaAC(0g^}1qmBKd8=liL~VoDQaGI$p18zg4p z^}J)Or|QD)HuuF{y_1C%{`{(EoIUkz)~20n-6l{T#Go6Hp1POgDhOrh4_60r(ncg= z@xSz}2O!CkIo~neG_BL<<_P5IoEe1VWrS|>T|6KOF22DWsQHNeBAd2A4h2gXkB*_; zF_V*-nI-Mq>!CM=*R^S=c@jvPJYhRE``y^}K6V-uvio}r; zkfZODGurA=qaE8leGUoJ9|L}rQQ@M_k>`+Uggpr&>EKle&8X#IqD`yy7m>|Wf^oy;0F*;_Y)Pi?at>VYfeOa%X*Z`)Ad#fbZE z_zAr{pi%pE3Hl3#yp5nCn|#~>Xnp#H4c4YbPd(&q1jJ{XJusxc6qhWsf;KzbpQFQT0R~BjP$_Pz0hq1)sf7Jn#vW4d3Z&$65SSQdxb*63N)h{eWAu#_R_$3lAq$0a%`O))&f}N>~lM)!lsCb7;LhRHNy|B}WCj32jhM<6HEOUYq1Xi)%A29vg%7A)Nqsug+cw80J;r zyfse8znreUv;JXf6AUMrO7>xKkH7=U^>fl`dkaDo_qM;3%BvkuuxTF2_o9>Y_57wt+-4!p96KeeDn%Gy& zX$b(nmp)4`Y-I?7zwHiZE3C}iWu97oEQAipspQB0TH8baK+L>{-!S8&&?wCqJVKT? z`Mz$hcs5=MC@EJVM?Dm;;e?zLdH%YN&3?I{-gi**)e?E1dKX;?ok_&tRi`7Ssep4m z_B8RJS=KxvbGeGXztf#t9`<7U{2P5MKj^r&1WZIf8BM zbDwJh|8$Kv?b`!P{ds%z+C31Wj2tfCD`ejWul->*ye8pt&GS#e^Q!WXph6vG#7-B- zT!_}X3I{m~Hh^dW3p&M0Jeb+X12@85do52DTV0RR%4e-TA-B}_CEC24fbWO|PM((W zeKJD`brAV02c#>=SVI?6g}JD}xM(rmG;Gq{DU|fRShQ7=8>-z{1!bW0)JYKxdM}$_ zBHSEt=f1PjuZXybUfEJ3O5sH4QZ8R*{e3&|4;7Z}W&vaK1KC_Tf0e`N+lT>#6wu#ulxR zfEp2p$P-$MicpQ!(yh}rCU;uO<1@$S0v5*8=C)Zr3~zVHL}6qjGOxE9S8X%;bdL1F zUPdsKZ3+op*?LgdLDk}2(L%Op)HIIAPFAWlM%w%6#TL4@)Nz<;TzV^I*;f|ABdHV~ z1vb7_X70)`f4;zzrE)9n-^Q zAf2S6Cxe~`#ja_4Pjb}_5sL7hVesAP>@)5Eg6yIqumOl)5O(kIHY{o z_G;50Aef%Tc`Q~hXJ2Y7sFqnj&dx!?{Iu=CZC>dQN;v{Zms&GRoZ}O!} zIa4KqKrWj(=OO8h?u8PsZ#7QyJtl;NFCrH|w`GpYaD{B~v{9r5vl15``$zSvNW~sQ zQg6IjhbC#Co6XIr#?-DEUU%p!TTJ4ODD(RY7-b&uoxJF=fbnuC@2I?TUh6xb42?d> zfRO(SJ1=xMmM9#L#FWBs5S5y24$Y*r;*ON5(>2ELLjw)p4E2J|36v)3?7^Dj}?=5|*KgK-Z_=%$8b#OLD6c{Ng2{pa*jq{S;YsN2uHsidj zxYU9@6fDBbk(rz}uB!K_&d3c9OygBh3?d(a=~SCe!^pX>pl~aZJL|?R#>KsD*qA3I zG2w4`(9Cz&lCKUP2*j}+#MYHxc~1Rcul zyn;GMC2-sMtPC{xbwUyLjaSCFW3T$HthvB@*qw|DgQj17FLUd;pzH(qgGOy8Vuw4W z=eI=S>;&VD4t3Yv#)Lg5P@zp;QNnBWT9s!L_bXEBtXlQ?=;P*tF%Zq8eD+dI*eB;W_U1~t&tLTek^T#986W7yz&uuxz< z<7@KhMc6~ndwt|qe2hu)zAHHqh}Tesz6;t$kNIq)#`N|DiSEbGCYHCob{zWzto<(PIb+?Ftq#4D>X4oM#s$`A1d2SwVW{NA znN9sf@crv6OZ8UZj(;pXZUXln)&!x>i;$|nda-1@zq9{3q)_mxPZBpVrUM}=tKFn! z|146w#MURGt&7!L5`Eq2mysn-d(?E+>Ek@qf{2(MPfnz<6?6UTw1LT{muq0>4Gmha zGK{yo@|L^&VcWc*s(Wn}VLoS{$^x~8dXa-dP2=w&8T=j)4e;qLQx^zr@Ajq{j9cJU zk)IFt7jJ%2`x#}l+=&8pq~E2^=5gtshODvFeGW1!hs{A_pKJ$NClyIW+3LG$BVeg`May>6S5%POqaW~ql zQPnB#=26U3BSjv1iPlq`;Y6+5QtTAylVA*m&+cgN*KML+0T!2-z-$9t_~hJMb=yunf1?8bWCU2 z9&XbPig~Jj`**X6{Kb1LrIoKZl)3cn-k`o3Uv@kw%Td(h+%}$Y zd}=?B=(J=yVRcb9IY|(Q_<+|;2X6A4W9PX9?L<8nWe9KTa&UgOxryWNWwxGGeXDrv zZ%3(ct<#%6GB~%Emr+`@#E`S9R7!E1#B3Pqj6`TpV@B5WqTr0C^|fc#mv&y5ft8j*Q+e#7nqm{}Cx!1G zk*ctdF!VAdKR{rwsk%

7CN~ep6b>ljRVSM=a1$3KOGs+OR$>SwIl^88@IJ8&JaR z(f)bJF{3&!RtqWrnmYcdXlWbGKrJvGsy26fgsMoQkEn<9{2>2IHY+~e&S;_PoX}{< zQn*pkW6|`}iBK^^lajONeqtHx+>!KS2pgA5*o92zMI0^OXEpd(KS$ zbky#eMy;|;r4UA`8erewhJtInP10WjFF6+z$=(*8nAML%eeg5FD{1%bPF^ys9Z>l`e0Ge($o8En56AwT+?x)u z{wUZ_2tL3j-X|aS%+|#1Ae_qn<298}0riI;y1k)+DS;rD?y(&k zpzaBFwP<7*NMtu7D`!kR-&;(RPXQyZM!=!!->fs}Rwq`LV@T811^Tw{zdxu_P}%;Z($7ijufNAe=*Kwc-{DLEbpqn9H|FFFH(%l7ek1Z*$Bms!-k7(h0P`Ff zbQBWiPVcjY+X`_ii_pat7H$?gJnYlv=8U^pGE~jFXaAK^ObXXx9J*@7c2^C-E@LV3 zk!@KM=M+Gp#oO`skpyv*3i{8zC7F1kHw%k<9d4%|o~gO!VQ>nh(Oz!?8SN^Z$ovcM zJU$e<&FKYbAN3OTB8!+f&q9NrKe(6gA|)89Y~S5W`!yjypUwqRVWO8C(|bmT`o=d% zXq}a|m@x2MRik`H=4$vP!((+`)@SZ`LHiWs~6fxeS@8%}Il8sNl9Ryj! zGXvh)Ol~@BeE-&C{umZ?*q>WWKGMS;uD}%ZiVE}f4yY;gz{2)f5)Q8K-i9~O?~U^t z#9^Ffwv@YN74L1Czjv~~oqjAh1?&S(hf1)2>;n~l?E^JR`*7k5@42mrEAdvm$6OJu z0~XR&^%R2zBY;H)QPxPkM~WtixLct8ln;oNN{ADQCD}|{>*E6UezZLfMHG^1gAp|p z1(xfm%TVs7V(!A3nn{pL_=X z(C;Bpiy$`#=oFW0bN9?2Dkd$(GVhyhl8%zO&|BMbbTmu3{8jBzf9rT~&${RtEyzc> zR)mx4V#S%(A05aCm=EGWa%QJidhghnhJDOFUm@WJZPI=< z8|l4${+hVan9Q7Ku_Daiwo5p$#F7C<8t6#^cKu+jNJ7ovfMq@R4P=;v^aYI>73^YTs`jabRGYq4C^H!x~$i8uS*mW5v2`!wEKq>`Ru zzcoqhn=9!#i z03!s)9KZ5vRr?stB@pu{j5GYWriF>wFc|8G%Fl`lTbUiJ zxqwYUu_jDWTZ;(mYf2X$@^SM7=Ov3}sN_kE5zu^xJPsfw$+_}HNEgr}wA){X7Uflsne=bvO?bQEOrQ+4(^H@tl7;ZPxpV!~Lj*Sp*zgk{GgNEcQ2 z;rK5wLEKQh$NdE~*XDV}eup&#Mdp5lRvvUD)NM9@TizK~Gmar8}_KRN9=dBGD%IXjzu??Kaq(wgv zC|GBuHR`e_qmU;#aFcrrZeWaJ?mkxL>=JGtJ9+>=hO=-?$XN@w5wb3~h-1XfV%!8T zsv>&QoB^+q@9+Ai|9J1lBF%Z$c|Fa2Qj3&l_tt%-uOBid?CvhcAc#*+ebc{c^Dbgy zer|z9-l1ABd64rXR)g9@rPzTlnbGpGszW--M_2rXX%>S(HK964Q@8A*y0OR$$CKL} z6NB-729}Ye9gY4A)!w23RM`~7fY^psF-6t-g_^4&@5bG$N)-7|I(1u`M6jmA@T4ewECcdADnR+fx$MZ-)>C zj7S#|lwb_tBFPnhsM_78iQd|zi++Eox+(}tJ41h{4u$KC7-JUQo~NEyQg&EC{336C z6hkw(e(R~Tg{?)!8q0{MtF%}63ij+DenHS+tdXPHxR*M`=F75~eRE>w)f(zYOriV! z9COx-|4`u;z-^vBx?IPP_@}v>eV`I|Cv+wTvn%BHgtUjDJSu=^CWy=* zFHn?^o#=h%5O{Vd>Fb*9u{Mzka>!ANINrcCW+V60h<;QM{1=<1>e1LvBU!|Cxa1b&Dte)oMO^(EA(pe;!k?%W5nMhM6 zClRaqhYAz%hpKt7(`l?4_uU%BZi6`>0Kl`&z5z7%@6ajya37Ez?j~rN5%>ZGJ_c$d z*dWT$F!WFunY&nvJHTu++TtqwoG7P2i!q8Hg7(XZ79l7O8-M6hI)Wh4NP-ZiA_yE5 z8roSQz5Bpeqa{Hsu*l`koj{--5><5b9 zgl#-nYpkMoO#-HYBk?^kxSoLgJ0)b26uEfxkH+EYa?kkOwWv;YSNi^L>Gsi&rx`GF01moZH;gXU`fLcd1ZCYS|rnWP0D4TpnD1!0u)l*jNk z5HNcaC>XQLP`oPy3;{{p`Og^qRs4U~7AsWobw7J=mR7@wXy}^$0buNS*kuGx0JuP1 zc?`k3!q(417p7Z4aj|aDd;ih5>acO{W!6HO{7;=n!#zP1hBxE@eXyaJFbw{4A^@SY zLEYc!eQL;dTPx(>Zw>nEnzd}`?8a7;efIK;)LZ;o!HO)cUmAk~c@8J|w=ZoNQI>k2 zp6g005L5nk)w`$ec_|N>WB3TU(;^K$RLEbzf#3%vc*7jg?-iK(cQADbff>3ES(y_d z-OK{BT#aKlYv2EH^r?KzHf9gxZJj2D3hp!hp~?jk`*~xq%+OhW^azxa4JF;Q`ul}C zv@mXiF~@U8kM<>L5Kt(R@}*;H!~lRN|GNWDM96=S%9~nd@9fr2LU>2>a2JBWEVa%- zo@PVf1Vz9sR7uM8$Kd*U{%_A;>hc%wKJ2Hps2u@L{anfSlWtZr{YZIJ24hZGS+rn2Z6ZJfJ4m5cW5a&pdcH%7zQDp)Y5Z$%6OywUF_|}`Y<$-O8 zm&0I9-jI8zFkToO1~U^eN3qERXPgVHOPej?pSOTlkg_U;X&6fKsQD_Gu&o#ZB+Iko zbf9sdxjG<@_NoD>eS2__(rrYc$7jDS9YxD449s)!2CC$DI;^1}-gMKvV+t zC|D(mt#&X1&+&%}ZEh%b-o!mtLvn0v`ftR7A{X|qkFoMIw4{OmYE**TfO)S=$)Y_* zX{Q}7Mr3}#LNddtvVoY*aVb32K6ex;eBg&c9&#Kz(r$qv)!TynhN?@6@Lu!tI&GnT^3z(6 z87abPAj@1B-dE}>4}My)supmL(Y0Mw3YYq^JcuE@g-26PA@-L4fBm6zEfJM~YY47! zvQ1wCW9SFW3W*(2l=YH**iHy}$DG_|S`IWCNUkMuVde*7-W89aFl>P9cYN@F(fSc)f(WSBtR$D06AyKCMP47W4-i1dNIt=9#pRl(2p&|{MGRwxmm!h5u_-BLPZ<) zgykY(DX_{i2@WO`X&CqQ_`aV)=;q~^wkc|wV!?}k_pRHYdwqX1FNWw+uzdf$zv};X zqDtyR(;#NRg)N9UjBVI3o}KLmK& zMFCl63J^QcUmoCWF&j~Yd9m$V6PJR>f@^4^HTFyZxb}sdryg%a7=%w?$AU3j#xwSEKv>7b+(Ce2%R$kyzEMuYS)GK z?#Dcb_A41g0i4c(n;dxj1auC_JHetj#L-DW<)`^bw%>18M{O{E_4F5LDS|yhG=9Nj z$R}PSwqhva7r)6mOCB(# zd!~?o9)=i!0f%&%Zrjq%4EImtGf96x)cmgx@tJ<$uHKXT&$ChTZJkqA2&{(Xj~0J$ zfM|>wF}tUVz}jgO`w=*Gq7mh-2lSvF++{`d^&ReobUp~WFX3gkKe!DvN{xvBJly+# z{JH1tDUt*c6#pWg>?k)ps5%q!?hn;6wI$dE6ag^t#t3{ebpF(ffBycu79>iZ_n5hBCGhsx*hN`_MfxEr!`>cZ=qW&#c8w;1))4V zi1qQgVni7@rqCyo!`%Tr2*T>T6`6$AJy+VSbCd1ti1#QeVQ z8xTQ-ojp2Y_hw@uBN>U;tk)e?Nr}@e#|fjLFho_e{(x}>QAs$?@+aA9t*3{dGPGyi>+T~1X#J>OrxVIo1V@>_*o zCQ(o;Gso`qe6KR|9{q#RCzaW^W^{7w?$G_dB5|FApYLRZ8b?K>7Jq$a)}fo-iMn{_ zbf^C9jOd7aW(&FU9ZwpgROVDtuD;?Rrgxaz*|LhS2za`v zq}&aKpXxXE=*{){sC@c)uS#mp69#%_&=d2M$6CyG?7_@Bf8SG4X4YeVcvzcjlNHi^ zhCxAqdMMnw_O+KOZs~*k>ln$fRD1SjkNMjLuU_4(|BxIID$wfebEMzl61o^uEY*aw zx43mn|Jnjyv3mK@dfCXY46H;yN!}M^h4h2{?)v@A*pA&X|18l;B~)$n)wBFlzjm(; z-#<3`#NSfe0XCIehm=vPk^P` zLpY)9_Qk*tNDNjnIN%2$+kZCYKb!ME@$&@fl;6|<_*eRb>g*Y2UGN)K=@SNR*DhrsEezr4D`Fqm9=>qfm&q33Jul46}-}tc3G*XGHW!Jvw z^}b0vjQon+?6K_f?aK4?!{MLs0o3I^r{FqCWPLK@fCxz@g=ly#h4zJ*sk*C}3fFwp z@Anp-p3*#*1{Q0$9}QUb?g{$ldx&D~Z**Up+bsTcpL7mwO@MCb;9#66I)%GIshPlW3@^mqjHUf3C!<5}X(AQzG}uY_W38ClGfu0`{21{Z&N19fL_{(IDw z%&gZ5x54&s%|b&H!tW?K2WrVR{oWWWG1p*NRBoG4=5cA2icG7K++5XM%jNw#rk-W7 z***B>TeMA6gEs5J8Jm8jaH3i1nE6N5E&J3g?~l2`xKOXx`V(t&g7Oc)CBE5r4$tlX zoH(@ed9@Q(oGzS0iNwtOLLN$>BO&_|qlgtY^!O_2K2RmD10iupQ5rEa4D`zkD~wbA z5LAqYKke=R^b7j-jf*lfxGelx?T=Ha+|ok%FQ=+_r@g&vYsVg`oSMiy>wHT#=@$)u z3SC0+9!(VYWH(c$V7ZU(z+0>C>#udiETZ&(jWE|g7|nH9Po7H-8W{ZWeQ4BE^Swea zPrML+{h`rs{plZDBL<;@PWxjaN%O}T{$1v%2Wq?M43MCYc+K|cy8ac_h6(oJ0z;wK)jAC}${n8*H6@UR<5P|M@dy(rE75L*yY%9 z%E^=j@)$W9aEKx7Nuscv{Z^>?wOWEz3YB$HDeqXXwzIRR6sXjK3`P|*Hi(R>YDW$~ zz@vlxpbG(Se_a3RC@oD@4KHibyW7;Toi$Iw030BypYwKd@o$Pv9W$V4LUr;aOSNew z;)_|UK<#RYLCmNn_pnIl!PaT;DKLJNBEzm53%j8iZ8|1q7fB_I4FH>vB~ykFw!ppY zMR#qULRWiRTxb#Mcsd)F zkzxw>?6AV*j!y?(iCG~XVt~o6x;J`j)G_X8aeWf z(<5hGVkd6Osk1dSu(f*4J8{0GOc-^5s>v^Xna6b2ra(EMd1~EWNAdjfz(ux#MWy$V z`uwZ@4U75jY*68$l-xQwu;RRaSB{l!zbEtJhu=A6#v+DlYkIZWpc}Ufe(g)60r4IK zacj>87Bv&M-piJKzPsIS=>qRl(ay%Qe^OAiDjajaE|Fe=KK$}igKu_tOv-ufr%%6m z?<=+l%qjEfV<7G|$kmBZ+Sorwc^x;%mdDr?1Y;iVtWQ(Mvh?B7XeLos>|S21jH;VP z#e?eB-m6|I3dTDRgI)&_SXf$8!(VyBOpsy zDRL2u0j7%+=Y^cc{LZU-!{iCI$heUkSj{-~9lRQd9`Q9JOxvwBG+Cg5$%F6@PLHzN43u7NGeY z5FGk@bP1p6XzbjxF9m4oo-KKiTdJdyxynrJcUe)pm?^l>wu#Vq+3CVL7eMR>Y+F*m zVPkCZ5o2py+Bu;y9KOu?b_#G!mEbJD_p4OFoFrm})Y_<#b+$AZM^ z{Q_dJ6ApFCMk-+{TaIc`g4|txdPhfz^Y<278|o~R z=g!GqVQq1p6}^-8eJ@^_;vZGZelceqgH~Duo&yLHN9>Hq=(Khz!Kr1XK;CGU!`-;M zbVN(CKGK`MiD`BE6S~?RioAM}_{zyXjcBhOxoDOuRN!DKsxm@Z4HgCwW@f-Ag$Hxq z&z0b+Q-Nwe3Lks)bSJKLv`>9z<()NK=tZFF8?yb#KKOd0)(D4g(7J?M+WPKBbSUJ6 z6Pm+Q^y5jU)mzLfN?%KBB@l|gcD|F;h$zRt9sr_dv4D~d+AAnlhq=i5~^hio?7=TEAK^##k8H`TYN)=Eac z>gpO<6NU+x8NM*6wbRupFY8tlmi>V5qeaF-o0ft<5#Ed{dLyB8bMftplPw5SfO|e+ zB=W+VfWNy))5l#Di>-@tzRJ51yWiJL^JPRE40rdagJ9j(Ad@ZSeEuAk$Yi;7{0o>xhg{T`0h*zlpO|qimPYeAYe^E{> zr_1-=JHxD_sbj~i^B9&`!2UiZKQ`mlxHguB>!$Mn|0&+kH}2UvcIp=oC>z`r3bq@^ zIrU__N*Qsxd-FC9#jox_PHPl_b+|bz^m%RAN^cpMHH&f@`9ulU z=WiL~gMtFK-yha_pO4Kd(|*MzJ22W_kNKbl@z22tTy)K80?;h0oIKf`#%tH(BD($zC- zMHhP_D$;oVi%48Xw7PIpfl-OW*v&VnA11>jPCk6LAu&DGORpZpL&S$~x_6rlYan&1 zp6=RHS%1B85paUL9<&%a6XqV#s3FV)^LC;6S5%UHD*pEP@qK`(26Fp(5DjLz1ZPo^ zuSudf1xDOLm$^_~-=_P^$^ob6KU}=t&V<%tSl5f9a`#P#su$ou`OheMd9kWoK z8K?J(jQFu%k4N`9k0UIeFgi!kzNFuqP>3)R5yquKUs}EwK*rzN3Z@uek)Fs7gmS|= zu^UqOeeL(qQtj{>?(fgcRzZ%Qz0Ph(ckS2gWF5LK_9E+>kqZXU2;VEs(?lWY1_<~V zabUNJr?dZr7 zQr;|aoC>_}#>j>2ZToldwW!wPIHK7siZ1Rq3+YW$(?+4`c$)W>3mjOHo@OD=H!STJ zRa)wfme!Sg#S3<{1pS{T9D=kN)5pLCrs+AQd5Wj6KnOlOi=agk)pj}Qehptv%Q9Uu2^ful?x6JaHKRULpHB1}D)k4LzV>crY`Wh@z$U@avR5 zF%W#?QitDaF_UWP?ap0I=EN)PvM(%!6dJ_$#IFy1-;9ec4ec2B;0a&Z4q}B;dy95o zp{suS@=hDh47=V*7;i=tgT$HiUdK(3(+%*GGe6b7&B~3a2}sn0P|wHldX4Oz*uHa5 zLUw(hPp@B*!B2+Re#}F9+FxVlg!gTYQb>ML*YA#|Hb+?78%7`{`&Okw7&+c5^v0Sw zcVuCl5SClaeu~6wJbP0!ie8)2&Y&7sHYF#yWK37haf0 z;h}TpVZdB)1HTnP67kwuHs>qSTzl};JL*(Z%QfngY7^p)atO`EIj9$acUze0pCQ@3aw*57EOrMTqD7t29z>=^@=vQEctG9|6p^(2lR|K-r>%~| zHFN$@{cKB#Qq`HxL4S?y64{*@-a9--P?{8($+Z~kNmxT2Pg!`UxbnJVBT}-%SyBDM zKESt3D7wH+WHi1RRjk@dcCDWhDD(AKRZWWGEWEgSt(hl(y&g_2vF2Nrx^X>ywb~oa z`$nQu*wDLRf&>0)8KDvUnBFwthlkXpyn#3Fj(T~~N6jC@CQKy{$}h(+?q}z`X9`l5 zInuL@y}Qb9zOl#1W@(=r(e`~#{cR?=)t$ZgtJ--UM649ra?6v1j(x! zF7ywwDv+-Jw{CJo7>9d1vzuNL`jze9Wv3-MydmcLTc3K#uK%NAlO?5JrL7c>^QUlbKebw7 z%dDIzFA}G+UHUoJD|wwfbhX+AWpQaJPdUngP8A~cOL|fDbe0I8CvkRdHek9&7L=B z86Sm4ELHq=5Z+UGFweterE0~ga=xC*od-{~sYYeg0}h||_?Y%c*gm`$Eq`sy{~(;? z>FbBAvsQ;Bw1`9uS&L9}nc>DQK4(KjP3SS>3*r1z4#D|Ltt__=)qVS0nl zwSbr~u0>$TP8&Hd!N}~@y2(~3B>wY))6dGvD!(l^E$qVo>g_$Fnrhd5ZxjU-6{Sjz z3JQvV^iEKuiGYaok_Q3lAktfcAiW6)NRg=Y8d~TOI?|-KP($w|)IiGfPM@{cKKq<; z-jC~yLGXhEW|+C>Re#t23bo7Tw&xe7AjkL{10QV+ksAwXMZ~r~u!fFvytKKI$|Y zI+9pA*Bh9Dg@FU1jE)DI3~S{@IU@kpKv!s{epwSAzr=2`Pl5MquSpvi3~@ZFy)#_O zLwCKAR?N?6ot9@wk3szb7o)|g3fMH|)U)8KfBAEX?%Nnku0VInO$e|rN(CiJy!k-h z&ji1T;e4%q+h1=K6V;AZiSo1Y5-2Ijj-I62(-BHxK6_AuzWGc0%Ngy*v;{WQ;<`{o zCbwwoBACKkw)JE;o^v8c4n44RqZ2mPK}Q&_JwGn=j9g`jKOZF+65$nIohs7o{;b6b z0pKBC#9G7R=}s0v*zN$<6C2_$hl58fr`%509xmlYZpier^g#+NjuF`?8*ThUST`IU zcd~$2&cP2ZxrDoj3FvnDY9iO-ZE>6EfLS3Q`o`BYGsUjG(b+*2RKKL85gYVItYZ(~ z>ZvffwSAnr`eIOD6w8YVBeJg()QC@oo3no4A+5;=f9*{iPxXD=OAhj)p8AM4n3%ti z*a^Zq5AHNP!3mV6~!YY%z`exFJSz&RgNU8xl3e({@E0!_*OmEgaqn#CLZ>ux_dyn$O%w!PxGW zdQ;vXV}b~wX=rgA4LAj38nQs-upvC1Hx0JSBZ`(&?2#rSWSszZ2Kw_bf z@w)jh^t-$CK{ITxMc=1P1V-qn7ANl*!Zmat758fdOzjoE`-2HKfZPIv$Ut`@8enHResShdTT#4q13>nrMx$pDjYPm~D)jnQ|{Uo$1@f3v( zoV(CUzi|zGbR`+(BB%7-(7Wf9D{Mux%1h;@dO zWm2*W;CABB!JS-}8thgpM%M`{iC&Km1M>O~XZkXCD_0%gb8>k8C@T8#A?sL_e8mW` zR&HZ3CrG$)O(68%6y8e>_jqE#Y3SX^&jcEe`_T-p7u0z^pY_%zd1i<_ZoCecL>naM zqCHi%@(vMem6)(N4|vGDToEbvxtOz^{Qk6*32?H8W{2Ot~< zl+w|>>ZEd*4c&ErrQs1-w?dO$RHgo7_wCx>Gf|eAT0Ixg+Vd(Z8*P;bcebp|kY_+( zNDYuMt-`?PZ7(#9lY?Q*6hxQzsh^*wTwpj&Ir+*OMp~r8Z3DVkXep-Cz4$jFXHQvY z{pb!i-*^n%_D=Y{Hi5CM3tcthp%=-2uOh<`o7Bu!nIn6&y%xQyscr=C=p3kvn7LCx zeTnP)ut-4R47ei+018-?PAF?hp%JIBY3w&sTs z#JZ+9s)lW)WMilLBk8Pit&F13yt(!j&A6^qPL(W<8_Fsw*VWj?ruoLGhLsrys6|#r zZGR^J90S4z@$1jh*K`X|9tF|lIPl^x*njmQj9{C0|9|@s`4m8b?mzva#8dz4DnQP! z$ibG7#cBT{h-T23?}?MoN}E)h2is-Yw}-D!QU)m3;JkA_lrn3qUH1}r3WJ* zS8echm|tSvNR1daP*t~^eE-#whi?XdQC?JV%+!8%Vf{AZA}JTV_-+0Q?zGd)VVSP0 z)fQ)lJ z`8d_(16L*oA*@6VV7BXFN{E~d)})n7E^&v=zglQnz)b~d(%@avcoOd@ut!US_Q|eU z9qo^?jC?iy7+Aq%;`F;T3}YPO(|Qz0;}TB|$hbKpKY8~j*za$Ow-3c2cz#HmJa}op3mj%n z-%ReB6z2rDolJ=E}gk`j2JzS7|ImB`L_Tbh zl4LZ|X<3^^t5)cGf>O4z^bt3GUtD%jj%pq6sw$D;MAw1f?$6@gV>ye zj29Ch=BfJ?nH$^b>#Q_&u57!|(|LWMAa1V}0h0ggEpgK`n3Ql25S72^kfZ<8+>Ob^ z&2!|a1}xvml;_6qz_rnas@MF1y|~>+ig%(74hNQnxV9lTOMf=wsEUg5LA&E-rQ#aX zF4iAZc^Zqm!7*HFbeoh*l0+uT6L0*h3Yeq61y)v_*{eMd0@&Y|;6>)2DkT1OFd9sz z)gVYihd{JMRcu$E4h~uX>_Vs3PH!&=;0hWtHbSDm(l05=c42OPGyVJtqjf>f0Ml@3MfbfyC_g?(!kM~z^rg_8KHgmq&j~g$RrtbIv#+)(k_X?SQRee`8(sQbvw?l z$L7=Qy!*%z*B_5J0DRozZH+PoBfKzhzU}a=1Telq3kUin76a47y^9`@NGdjUs1a@Y zw93j1;eQ{gD9MraL;q3`%>&dEGC!=<9LO#&Lfdzr)ROXr8aZ)$-75GW zMGo~wTEE4qSvqW_V_FtchKRiF^sdBBqL1j9*PBX*vQPn(kGj5_DAeTY( z;*el4JyCvXfQi^-*>3zvCMS2T#pmvOj0vc13f*4IqYt&E+wccQkuSF`lbJy6k6}~g zfUE8Tus0`cTpNnoy&;P3inogrwlieqZwkB2$rlx|Bdpes@~y0*FAE^wFhqa;?#U$C zwh(>}>4Jo2f^eP@ys6pvbgkewRnk4T25!I419jA)Ro~L=nmDK1*QG1EotNZIl}>}h z3Q4khuTzgp<~(NxtLeSM7fIKxovt=6UYH#_7WD-IT^+1z&5k*$YI5gpfp=)zl*SS$ zY{$bvU$3w61=trJX>-6t>^FS?<8mN~;14mf@W{0L@Q|fC2LVabG>3p^PualfG{|qn zpPYsiJ4G4SFj_Rc+-G-5$Yx4yf+%?mDvOotxtAAq?DL~WutB56#N8>*{a(|H4<}ze z<^>mcYi57HNYfZQC@Nn^^T!so7Dk*F?&cpds|~uwzlp?@8+DfnbmVcpj(DibudQ

<{kr4`igHEDRrBAhO;9Mj|S4?c}ZoArg-`!4DD+`G?mT{4ZYT z^W^R>1*4AgfBXfbSdc^tu=f1?Qq5Qmuml`z;@4GGwd5Zb*4p2;u%}^HbktF{HP4CC zNhUsei1HCy)-{2#jHF&YOHuS2JLWDKkObL`QtWx>SK&{8qrPbrHcw?4i!CJ0H8JO0 zAONKgsscd|(X2H}$4FF2!A4$?c5{?gm^G~mYNh1PA zI>?tOI3nSgNMPnqRROPNw-5LOH1M~g%|0U^ruJC>sn7(C0PtJ;0GG)*+}QOGImyp(h8#B+mNEvNPDXM$0mlk}yTYb5j$fWVnsZN6fb{l81O784bs3qS&Fp6iYST339J84~Ry5xl(Mhrp;;z z)_dQnHrH&wzrIK(;ln-0k2o)TR@Mcj$8Q6U_98wWv-`j$#QX*>^ar3us6d+#K&cU> z+WBoF%i$V=ZP3k?i^s>B(l5k1y0ZG_4SpIzeRH1jPCz&C!w6u5IUjTea!Y~Tn;nA+ zbrw$-x}oF;E7}rrH2=Co8v?O4&#gXwjE2>M8_>pOsN0*BG9<>a>&}GDhd8wc<*7y)J)bzQc9hcsb)DZ^SO@^==?oTm*1U+b!C1ljS!9-F1 z()*vV9b|oQzuZOb?@ZY>)O8x2)o`@Jt?}J*c$MMc4SBEU?dOvR8OcRX78jTA>-epq zia@vUDH_TW6wmVs?g-~Re_<4!sEY~i061PnFd(DPJG_zQbv3-?&#QG$_;;0 zUp+dW!h1c!iY`bRB%sPqxvKY-y;x%0VoJ!k#=hXrI$ldOR#l-Hc}~43gqIjxRt?{~ zn{JK+wF6RoyzT_k(@~*u%W&S6<6ZJaz_nRbrMoLFp`z+zFl4@?m@5K+Jo7;xFFE*4 zQs6m^OasU9l9?rm3^o|@`XMhC+c1ltfHtjalIGogNSPM01n`9QjWjv z3U3EZmDJaa?(B_|&zC{_VvfKDkzDE{#_)bAeehGrWgriOqTV^FF30T~fK*zpD z@Lo()BzNI5wj^#!_vG`K0u6Zvbe(7i%QqY3f|n{Y9i_0)akFbg&&<*rX2!o*-{M;< z?j`D7G`XkE4moC%^8;wLBB0u2QACP_?uSO37w&%u1%dzD74l5)- zs$ZOt+}-!(FoVNJ3_Hy=b^+_v28v0`Bi;hmU}J$zYa&x~-ZATAE~C%tutl`_cY+^E z*L+)llJr?!EXOnSvMe#T0tvxO@wZj<-y3OW$49O%?2#(p1T7p+RT$L5T1}cS(xItO z*m0&3*fVrZ2$R2hUZBWKNige|04KD?#|0*xLJR6@HXei3a*$*uB2w^h)bclE zJrP|(csVd;*&BXx53jrA8Fxx%#95&os{6mCNDRa`RI}a2@5Aknv9}DqfK$P(W>CJ> zf|B%o0FXTfXAnFO_QF>6_AL+g*z!`VHSnY2PgDPD-$u@?3^((6(F}h=K7&|_;5^zGe{ORJV|7w1AJ}yfB9N&aY6tj9E`OB z6Vtl?2OBF4aKC?A#sAS4s6`&QLQWY&;!|lc9YuR-gMYDddH5h1Mi%|YMd&k z$nv0OB>gW*bHqgQ*ox#x$_v&eCV4fJ6r^sw9@n^6n ztGI=aWQAmKX#G{jSVR3Tfpmq}MOBtFIbObqxZ*~6jJ$?vgB|ziQIt9WlnWZ&i_2RH!1y;U53n0IhN7)^o znehDlV7QV%T>>q#1Iq4@KSNDQjcx#}Bil}9$4SIx5ua5xjP8pQifZrGS5=$Xz5Cql z{8RbNxs63rN%r6^U9yc1Kd>Shba^F_ahGVUlQ+5g~Yy%>I*;G z3(eIqw<-67>yihcv;eSgMv%qRwHM}4hc!y(*&T4WdzV;&;<7Bt1gVi!q?!aPcrZkxa2$Y zk8p#L$15J!EE>n(C0sa)^K8XmJs%`r-yI!snK9`wU{@qa1`GbWq6h;p=LKdv=f!vt*$puAGPd^t2#N0I zmSeVPXV&KX>AT%d2UQ($Ee0C{8M71Ls?x(Ss*%MeK}Fa7+GI4BzV-Q7URpfgk1+wYt!(gMMLA-8%OqY?XZ510I80eW;c z)+1pWb#X-X>?-k5ni5BLm}d6D51B}E9BQ$M>jLmu0|~;VEqqh%qqD@Pm@^M419F;i z#VmpxiCF78+0B%D^c*g!!V{l)BzC#|UWhwftX`lTysP49Cg*Y` zZ%TY11xVbuB1z}8QZxhCDWFJBg;~VKfUrYAGq~O5wp??-1mgQl0P-+n?s>CjR{(Kp zzRAL>6)}jwOG1{gxVRn5QoP=Z3%J$%ZmOkd59K;wN#u`ppo87kfLb$1hXo-u4TsB$s+667sQTNiN zVCIbd_@b_{)XW;QfcI4_!70`#@(wi^Zl^bup&sTO@xqR&cWh5z_^p*GyCpWdM& zI{bpt!CEDuEdD&9B4Q+^4i^5N^f&c_R{&t&_7?bw!-AY__S6Qmor8sgleKeW`1k00 zlt&zIO4zLO74ot+_iE7oAAij>9%#><5)UCMV64aSC$=zPBXEa4uHww|{C7&ha|!4E z0;%xDmA`gUfBT$!f%4ec19E@=)yoqzCJixPKOTSr6^hnL<46RNo{U>o4p%QhKizB1 z25wTt`6OWkWlP8)({Jy$UE5g|nu@aatFhQ5 zm1T8hd8OB#dGo|anopLg9rSGOp)RkB&cb*opQNq+5_ru28W5&&9qX&X-U~ga)&wYWryiaR71Dfm0F_HNkV5zG^p33Bg(Et@(ru8|( z6p_F1`3=7wXIvcVM&ls)iWyEG`heV-NilXQea`(?$%^#GuOHe62t`sE@k$}l3J_=Y z!f?{`g@`8T3cG=iw3$?lN%QsDw{*g%){0uiMQTrSCi+@8H-`d zgKA^zTpcrC|E4&}fz}YcaTi8W0ARv3$L)VI&pNiMn;GJ`%6(?Arn(bB5X0w@uTJY_(s46b$(yNb^dShOGVm7rBr1C)&$e95aQvlD814QM+<#@Ba z`*ztDqQr_yShQ*qUo?gd*42e9hDgdiHE>Vh>$^$yL5(S6d_1c(bl7~a0Ukeb0NwDr zfH#<5z`B_I(nfc8LFN^1q=4|8c4@ddAelHOJnapHwXxdf{rKHr-Az_Tz(^mVlz-l# zHBQwKACD`YpJ^l0j)~a}(I3#}j2W8s$GLeAUu~q?pZNNPMEi%O7@x-1bc9uC${^_SG;JtP8 zuWA1Y7i!>CM*}5=`1U2i;&xVAS3Acrtf4x|p%YM&T$phH3YGLM-Sxn1-zOFsdH6^7 zeY(!V&BJYG5LzaZb-h-kAn7YNU%cVR$~zLGBURxb#FBmi)q!a6nZcn25WmoVBxvHR zz0}D9_QsCaCkcXWBZIc`iVttX@&?QWmJu^HOQ?>+d)o_)&37DVrDj%Vw@+1o+Fs!P z%=z1@Ap_N;Q(RxS!nI(`1S$)k*D=pNymK5NvDRjhZ~v;b&N?EC`$h|}M+HiU=O)uQ z0A+l|3?}Sj8Rh!GvN?Nn39_Po`9gJ=7bTf84euN9&TseGVsC=Bhma9RvZqDn%H**F zLDc^_hzV>1qVWDAl}PYwPYWPCk?vD>j$SAbgIir4v^)s=)4!F)-8(m2=m4hu{h7XZ z6E!RxT=RRW^ZM_Z5>_UMz&F5)GmsD{DCr$eHKx&J$;f+wvo2WsBamg5;+F}>=X|_N zX(P@BtI8iL5A(=Z*$E29uvS6T+XmDv=%4``qMa}^=h-#cAz5ZFKYMyoT&c>n_O*GS zqJHta?qU2q>LJmFpoB*)%}st=LNVjv9TjDLFxxF%Qwq1i8y$2l2Kxp?CQBeSBMN}< zyk4D6QoN}G)gccGXehs(MAvY00SdL^#MN(B%EJ|Eptw>P8=~@u@weT~+!v2NR$11_ z8Ei@t*_Uw!1n@F-tp8n}Fz1?|?S;?iG*2phoZ!q6%PrOR8BfqJz*O_YN zsp#Q&)kZ7Z;Pi&FfCqcoJU8q+9<0mH699d$i_i*7BLXQ&aN}`02~561!r+;0oPZ8b%1@HMj#ACB%4 zv(28l+??yRI)hui;~RArj{emxy~97=VggUyNhB7d7zRtzMhBoaiy`|WZ0~YTxw*zF zza5ap=3bJIRgo5){SzxR-Z{GQFZ1$S3dg8`0kgi?R%OQ5fBX|LxA4bR#kO+BZETaT zg#k#C@jpnCUK}|-jnw=Pk^~}aTK@4}o{)1Dz;}IZi{$$=nfD)k(JivCo#bTy8L|ZW zn186^?EKB1Q#;wvEN$b5kp0)XW8xszR-(O~iQ`7wcP*qCys3s7AHw$eR7@x=)hdsG zDJ`lH1@6)WLFkKfR;+hOEY3N=$O^3e&z#fyfC&yjo&7 z{bH~Zf;@}3mJhW)8;jHVRcbH!dTb=GBb6jRrJW9Zdj4?}e^f()M(uckIi?_Q{LjBc z+y^vXHk`w9x^IEM92?SV2~f5Z3f~Y48-M~&OY2}J-GPFnzrZBeGgx;>=&|`T+1B@^)MQn0 z!mX3&8~lf~WD%USm(=(?7(V%x0AKB%PWlDH*K1@|oZkkPWzEpFmR z(4L9vZ;k6eDnAP!<=N|`erQPYj8*4Zh98a;RbBXDmaY+;aRX+2Ey^MPonAm}o0cT= z$~uvZB;AL#GC=Ra+5o#5Wa0lPqj`N~$7X~b+$K~g~f1V9z-T$bLP(E-?l#b|=nNjnIdZRUQ^}BXjp*7EXj>?0<$)VR0 zkBCpPV+u0Z2X#MwQ??dwo-)%v+~|A!@)K-%oS3&T-Sg8N`6-MZEo<_EqKos&Yw$(> z^CWyK4%G&_EQZt%+>af71W{agcqA0e_X~GXh===8_}jlAn0Tb$KfA z0WdU~9baV9Fd-&8%D-R=v72OQEYswyzx;|z@-^kJyh~P|g=m??A-vG@=7aBBP)CD0 zXe*m!Bys@_Z>b?OW64N_I%fZtp*@SLc9l;^mGG>}fmn1F%@0be@{6d~U>g|z4y=_f zc!?HHFIbLae;pq7yFhZf*vrqPJ*FM4>I$*(W^ZK!wGS}QsA9=+z`paBJdcbvPYRqa z##t#|wkguTp}Pb|8<1%avCEj<&WTj)x>h4@Estx}1>9sl{3!poE}DO*qB^ zD^?q~pfUeqo)^c6nr?`Ww_~O~aZ=z~KK+Zh0`q;=;XC;o#OTx=s&H@ngu*R% zD@8vTUbou688=clO?=Ap{-vLfO~U+mRnvkek9t$wCXV>(ygRT;Q%hPRYR1;tE%V2c z0U1dIuG-pyssgk^fwK^X4;8C*h|<0~)19N7{7awGZy5*9fhodnHH#V&uaiDj2{CP* zCZBw^gWjyF6%zX)DODD|Xm#K=U2=I8-_}v`;txha;`!xeVZu?&3+w(EmBGilhC%fT+1o0H5&x z03QK{=m0PBaUyzAM-h4TLp5`{vVfA#;Hh2Js^h3yYc5})l=$1(b?)-Qqm3C*m>B)B zn0tXlff71Z4yrtSBo`UWDp!}(=Ga^kk?q*4C)XE%N|4fQQ4R$q=Bl;Z*E-PJKE8j3V zfx-fDC##wNGf%v)N4|S{D*G;*<6%%=ofbBjTKakhtU2JxyGGN^X=mi$6r!ebXVwT^ z?QRJ;cHnOc~+h%u`N}=nr-p}%s9HCdKB)C^dRc`)J^ zDp*r5>?ETys6y&_1 zs^0fkhV&_?MAzC}&`u3>>x3plJHU)7OEo(=*nRUuxoJUnSzAGN>3*!x^ctYH7BBCE zmg1c`C*45XIWT)?HUO9SFa~}b7kQ3on=@%C_YPLYa(8CiO%83vxcG@@yzf5o`XVAC z7fK(J>Ur_Qd(p^Ul}QWzh|C7kF4~|46jZbngb-D2rbbVzSjw0eZ$wVzRqm1D+|fkdF9Q)U&NAemuhW z!j;ga%n7GKdTgFHV`N|^B}ffAG*1(e3<>i}i){@$H~(ShePute0)SV#9e&Fx5$ODF zu~UCjXyT1<%;KDewk%rIOZm#sLw_oKG>WO277y;&>RrHo-taU|w5-&)C`;E;&NOcb zp?`ln+HZ`|GsP+99|CwK+KFQ@ExFq`FT`KdGT$4fJLIq7Zc#PvH2>Qs$QJWiCi{mW z;;S_)B`a0)VRbXZ4OaG{B1%Xy82bSfoOy~70>BgI(&Yz<#b%rI>cHxSkJdV8X!vgw z&rE0iClRMu^4Zns(wSs)unby2{**-=*u!+!Ep{8924r)zIP4lM3WU`vF~2T2AE2v0 zeB31as-~(^Nxpxf=>TG7ODjRI&rA7T9M2*Y>+#SEgnKgfl{A_@!F@0g0NmV55%?@{ zJ21IM*B0|kBjTE5THVO%yD!z3`(G=H_z_10^b$Eo<+_zg;muF*HCJ+oeE3w?hWMIx zmRfK`9McR?Jf-=Yg76YQVR51z+$>b3zwB|)o`)DaJGe{YKYvXyNnTA~c<|9RexmX; zq&KeRPjJ*)52{Lu>yMtnGN-AuV<(%aGV_?HHM{_>U2y7MSqxm_eSg~*|Y5yuG;8LG{cgAy@= zx2DYZq|cQ0Yk1?%cOGRmXCbQ60Wg!~=f4gf6+ zOgl?l0v6yf0P>Ra72SpY`jd_VR*Ps`;oOv)gN`kQ9hQWChc%M||7jMBXEKt>G`#aa zk#^PzDzsH`U%t)BdzVPV71zX%T^J$Wc_t~Z$Mz9I2y2&2zn=Le8~KBd#IrPVJa{pg z3pk*k01~PXYrpTg3T`3!@HXQ&yx>uR#G#4ogx5%FL$m^82ujTus@Sc6bLq&_tG+J<4+{|N>4H#0p zV_UCH02Os?`>Xq<`5;+57+bTb9RplQqe)2S@SC7A}OuF~3^e8Vkt&_#3IB~XWY3^Llwb!p;@?f@fRNj({)I0EeTP}{WVIuXS8P)h6*ZlA$9b(q~70dou*FNFL-38)W zhXuB$qMpqSpa?M5V1FjA1Hyu=m1A-(sH%4fD=9fD^7GC(6V4XCSIKw$R$5+-a-{iU zW1_%O>HbL+KAr`LsiMwLkdCI)vva8FC=aV13OK@e@vXLu>*joYohb|VhO1seMqP6I znu2oX{O+5rPGYmwtY<#s;<)>LM`jo+_@EZU4UhTh6yMoy|Y&8_V85@e+LU=5V6f~Epg}K zQ@I5)?RA2T12FckK#y1L;9?pU=Y;8Ek;fg9`sjcL?e_wL+}B1fy)p`tqoJXQU$fzK zI2c*86PxLAD&~6j)ZOED2IlSJ_(!l9X1K<|nYW0n$gJFl8^-cAJ-h@wIlj z{8(*?yLcrrB`l&;j6gyj0+adW1RlK5i5%Cx8tjva$L?@?(@r0WZ(hEW`X>oLEA~P% ze1boGX7{U^HML~gWj07}-lX0f&`oejWt&l2hu{SUgHRYSU>-hr*RP4sxnlepIGyiN zKjN-6Tmhf%+3{mdUe_^jGjMZGQylS*ZbL>8-H0$@q640K*@gNyrBK9??0}d}r3URI zcxyN~1SYO<7kg5Pd6>-UrZH9(^~I?|)z1;jWYK!t<95lt@%~4QKb_(q&MF~vVl$6N z{h4uNsOt)k@Gc#%O?C?Za=W6Ys?^!yTmJ{Q;tc`yF>ud;Uh)GUJi;T8O z_gPK{C$OE1?n;ZdLdUr-*8K0B-yC~<9MX6vZoZG_Mt&o%&$2{nkNRL= z?nRd8+^5V!h5bCF2>aK?P-Sk}r$7kA3qOoDm;=)S-8FzL=kAVRIcY+CBC@kD{yHzM zs+2lcwZFflVNOnLXjjM~#W=}G?$}||cvIf5P_RDwJ+e@b?N!FcR zOABvvB+U!M(>a^|@G^eDZzj|M1=1i_yZGLU%V8ZdX&wF9)G8kSrM}VSE3Tg%hMK8? zlO+VRflc?C_`&Ij!ox@b{YiFl0e6Xl_qSp6XRGmagmC0O{r2nP7ZKGo%dhg|1&6-7 zQw|02q26oFe7oF9)K?NwSa4p)7Rx(yR%#*zKs&95qQb8R?!{qP7j0sF6uxd7RhSW{ z6;R&{>S}NEz|IS#FJ*VuHQGV^%6X-EGS+d3ZaTaaP`MN5Dq!=!jRoF*>fz(_ozJM= zzz^jd9=rwT29pr10R;bWA_<7E?$nMR^@Te(x|Kd3+C2GD@z<}`q_DsE&!zx$)&s+E8^s5?qxo+>8{ zysVD;oyfZv8F>Pe(6-PhiLSZR^KS075Ls3;`mfRSRjy;R7oQU(G{rKm^5t;`-Ti}@ z32*(Q{e=XyzxZ;66(6e|&=O z0x&=KuPHi8=&DTQb3zqG)vCSIA2l;ALXqa5N*iFxy%utZ^X-`)i#VOXc|+AHVqI5Y z2fm%ZwBM7BC@lPCtZ<-8NZbE=Gq*Wg5Lef1^!SyqrCTRFzWP4Q6 zcX+`zg9eZ-{?*MA^6xW_g1o1$tAyZlJ>G>kEDmpA8o*6x7PJLIQ#o$S(hbR>EjFi} zw`$ojm6PR1;+yr%<;k=_piZX)8RXr$52ORvaN0XAOJ66hSd9^d-0l#})48!(4XPUp zzftyohB9VYS^!%^O(S4T9{sF>;@I}!McqNthS8P zuvbgO_nB1u&U3s9OB$_L-iK#B?pVB_R#l%S6hKz?F9B{lKVUcD-Ua|oXCs}kB%ste zIb30fwsO7}O-gNI^b!YzwRM4ID&0V)V%;Qh*v@q&ZK1R(8F(~0R2T3d(BhyS3Oe(`Kc^_o#){eSG-n(^`qUC4g&p-|xpcL_X z%oxCD0AaH~s%}+qNu+QX5cntq(T^hN->~aH;THhA{x^X0e~8ol$3fRWFzvr!SH`&+ z+Y7#Q+Zz8;y#wMhAOy=Ppv?M_@*rJ{aAa?uWt%6nmJa+ul)?HXd!A`UFG_+{vJWct zrRB!fiUyr691(N-I!dl(5@C(RW|-#nhz zV)MfHi!F7Nt8IiRNw08c`V4I&@KXrTYN42yif|Ip-W2RJ81!A=rIG%Zuj;+B z>kN|4M%tP!ICFJt!kZ2K5Aro=M`RSiJK4x`MCk5kCzpEdw9T^2U+M}W^`i`3X(`?E z4r)QGj*SA}1(s%&IR}WM3tPn*A<8k4c}iVN4sg9J-xHZ;g#PSr!NH!LfTuPEPGN~V zRQ4WY!V7Tw)wdItNTgj({M|_L$9p?WZ*F8Kww#aE+e8&3(?Nikobj9q=*;O_FYa%O z1;wQ*;gb)pYZ^-Vgb#mH_@FY_691?M-yZnoY&}tWjhNW*T znz2tbSoelq&nJfRq-B*&yUh1He{70uQ8K*_P~|T1XCMIE0b9VAn;A4*?S7h>-@o%;nwOc@GLaNC1JpSb7+dapfo$voS^%V>fcvNArRb5T`X_GC z={dD^Rh`XqXS#H2Sj)O6H$K>)z!#{Ein;B8OO#Z6vR-?MSv1Ve=U5x1P*pOWz_A5C z>!ufQ1*>l#_({a=x#{fl`7Dl=&s|ONeIcFWc}aLSX$kvRJ_58Nx#!C1y! z%Ul)ijU|(1i*`Sl&)2egTtMqXzw8_ z{9A6ip6f&N0QdI}zn-t&i0|vY`;6|<$bB@mmM}25B$1x^CB4s6+gN&=DKDN5U0;}gHZLg2j23{FAY-h!CmKhk)_w_lL6fxdM*u9 zQ@KyT^Z0z?iK=tt*eWu9(Be36ciq8sV7vCvb+byBC&lMDujI3K|65dB_3v}@pZxa%@#2~L4$wuQSg6zD1#r|0tc >& objectPoints, - std::vector >& imagePoints, - const std::string& path, const int n_images); - - void readExtrinsics(const std::string& file, cv::OutputArray _R, cv::OutputArray _T, cv::OutputArray _R1, cv::OutputArray _R2, - cv::OutputArray _P1, cv::OutputArray _P2, cv::OutputArray _Q); - cv::Mat mergeRectification(const cv::Mat& l, const cv::Mat& r); }; @@ -71,16 +63,16 @@ TEST_F(FisheyeTest, undistortImage) { cv::Matx33d K = this->K; cv::Mat D = cv::Mat(this->D); - std::string file = combine(datasets_repository_path, "image000001.png"); + std::string file = combine(datasets_repository_path, "/calib-3_stereo_from_JY/left/stereo_pair_014.jpg"); cv::Matx33d newK = K; cv::Mat distorted = cv::imread(file), undistorted; { newK(0, 0) = 100; newK(1, 1) = 100; cv::Fisheye::undistortImage(distorted, undistorted, K, D, newK); - cv::Mat correct = cv::imread(combine(datasets_repository_path, "test_undistortImage/new_f_100.png")); + cv::Mat correct = cv::imread(combine(datasets_repository_path, "new_f_100.png")); if (correct.empty()) - CV_Assert(cv::imwrite(combine(datasets_repository_path, "test_undistortImage/new_f_100.png"), undistorted)); + CV_Assert(cv::imwrite(combine(datasets_repository_path, "new_f_100.png"), undistorted)); else EXPECT_MAT_NEAR(correct, undistorted, 1e-10); } @@ -88,9 +80,9 @@ TEST_F(FisheyeTest, undistortImage) double balance = 1.0; cv::Fisheye::estimateNewCameraMatrixForUndistortRectify(K, D, distorted.size(), cv::noArray(), newK, balance); cv::Fisheye::undistortImage(distorted, undistorted, K, D, newK); - cv::Mat correct = cv::imread(combine(datasets_repository_path, "test_undistortImage/balance_1.0.png")); + cv::Mat correct = cv::imread(combine(datasets_repository_path, "balance_1.0.png")); if (correct.empty()) - CV_Assert(cv::imwrite(combine(datasets_repository_path, "test_undistortImage/balance_1.0.png"), undistorted)); + CV_Assert(cv::imwrite(combine(datasets_repository_path, "balance_1.0.png"), undistorted)); else EXPECT_MAT_NEAR(correct, undistorted, 1e-10); } @@ -99,9 +91,9 @@ TEST_F(FisheyeTest, undistortImage) double balance = 0.0; cv::Fisheye::estimateNewCameraMatrixForUndistortRectify(K, D, distorted.size(), cv::noArray(), newK, balance); cv::Fisheye::undistortImage(distorted, undistorted, K, D, newK); - cv::Mat correct = cv::imread(combine(datasets_repository_path, "test_undistortImage/balance_0.0.png")); + cv::Mat correct = cv::imread(combine(datasets_repository_path, "balance_0.0.png")); if (correct.empty()) - CV_Assert(cv::imwrite(combine(datasets_repository_path, "test_undistortImage/balance_0.0.png"), undistorted)); + CV_Assert(cv::imwrite(combine(datasets_repository_path, "balance_0.0.png"), undistorted)); else EXPECT_MAT_NEAR(correct, undistorted, 1e-10); } @@ -206,10 +198,21 @@ TEST_F(FisheyeTest, Calibration) { const int n_images = 34; - std::vector > imagePoints; - std::vector > objectPoints; + std::vector > imagePoints(n_images); + std::vector > objectPoints(n_images); - readPoints(objectPoints, imagePoints, combine(datasets_repository_path, "calib-3_stereo_from_JY/left"), n_images); + const std::string folder =combine(datasets_repository_path, "calib-3_stereo_from_JY"); + cv::FileStorage fs_left(combine(folder, "left.xml"), cv::FileStorage::READ); + CV_Assert(fs_left.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_left[cv::format("image_%d", i )] >> imagePoints[i]; + fs_left.release(); + + cv::FileStorage fs_object(combine(folder, "object.xml"), cv::FileStorage::READ); + CV_Assert(fs_object.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_object[cv::format("image_%d", i )] >> objectPoints[i]; + fs_object.release(); int flag = 0; flag |= cv::Fisheye::CALIB_RECOMPUTE_EXTRINSIC; @@ -230,10 +233,22 @@ TEST_F(FisheyeTest, Homography) { const int n_images = 1; - std::vector > imagePoints; - std::vector > objectPoints; + std::vector > imagePoints(n_images); + std::vector > objectPoints(n_images); + + const std::string folder =combine(datasets_repository_path, "calib-3_stereo_from_JY"); + cv::FileStorage fs_left(combine(folder, "left.xml"), cv::FileStorage::READ); + CV_Assert(fs_left.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_left[cv::format("image_%d", i )] >> imagePoints[i]; + fs_left.release(); + + cv::FileStorage fs_object(combine(folder, "object.xml"), cv::FileStorage::READ); + CV_Assert(fs_object.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_object[cv::format("image_%d", i )] >> objectPoints[i]; + fs_object.release(); - readPoints(objectPoints, imagePoints, combine(datasets_repository_path, "calib-3_stereo_from_JY/left"), n_images); cv::internal::IntrinsicParams param; param.Init(cv::Vec2d(cv::max(imageSize.width, imageSize.height) / CV_PI, cv::max(imageSize.width, imageSize.height) / CV_PI), cv::Vec2d(imageSize.width / 2.0 - 0.5, imageSize.height / 2.0 - 0.5)); @@ -279,10 +294,21 @@ TEST_F(FisheyeTest, EtimateUncertainties) { const int n_images = 34; - std::vector > imagePoints; - std::vector > objectPoints; + std::vector > imagePoints(n_images); + std::vector > objectPoints(n_images); + + const std::string folder =combine(datasets_repository_path, "calib-3_stereo_from_JY"); + cv::FileStorage fs_left(combine(folder, "left.xml"), cv::FileStorage::READ); + CV_Assert(fs_left.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_left[cv::format("image_%d", i )] >> imagePoints[i]; + fs_left.release(); - readPoints(objectPoints, imagePoints, combine(datasets_repository_path, "calib-3_stereo_from_JY/left"), n_images); + cv::FileStorage fs_object(combine(folder, "object.xml"), cv::FileStorage::READ); + CV_Assert(fs_object.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_object[cv::format("image_%d", i )] >> objectPoints[i]; + fs_object.release(); int flag = 0; flag |= cv::Fisheye::CALIB_RECOMPUTE_EXTRINSIC; @@ -360,12 +386,13 @@ TEST_F(FisheyeTest, rectify) cv::Mat rectification = mergeRectification(lundist, rundist); - cv::Mat correct = cv::imread(combine_format(folder, "test_rectify/rectification_AB_%03d.png", i)); + cv::Mat correct = cv::imread(combine_format(datasets_repository_path, "rectification_AB_%03d.png", i)); + if (correct.empty()) - cv::imwrite(combine_format(folder, "test_rectify/rectification_AB_%03d.png", i), rectification); - else - EXPECT_MAT_NEAR(correct, rectification, 1e-10); - } + cv::imwrite(combine_format(datasets_repository_path, "rectification_AB_%03d.png", i), rectification); + else + EXPECT_MAT_NEAR(correct, rectification, 1e-10); + } } TEST_F(FisheyeTest, stereoCalibrate) @@ -396,58 +423,6 @@ TEST_F(FisheyeTest, stereoCalibrate) fs_object[cv::format("image_%d", i )] >> objectPoints[i]; fs_object.release(); - std::ofstream fs; - - for (size_t i = 0; i < leftPoints.size(); i++) - { - std::string ss = combine(folder, "left"); - ss = combine_format(ss, "%d", i); - fs.open(ss.c_str()); - CV_Assert(fs.is_open()); - for (size_t j = 0; j < leftPoints[i].size(); j++) - { - double x = leftPoints[i][j].x; - double y = leftPoints[i][j].y; - fs << std::setprecision(15) << x << "; " << y; - fs << std::endl; - } - fs.close(); - } - - for (size_t i = 0; i < rightPoints.size(); i++) - { - std::string ss = combine(folder, "right"); - ss = combine_format(ss, "%d", i); - fs.open(ss.c_str()); - CV_Assert(fs.is_open()); - for (size_t j = 0; j < rightPoints[i].size(); j++) - { - double x = rightPoints[i][j].x; - double y = rightPoints[i][j].y; - fs << std::setprecision(15) << x << "; " << y; - fs << std::endl; - } - fs.close(); - } - - for (size_t i = 0; i < objectPoints.size(); i++) - { - std::string ss = combine(folder, "object"); - ss = combine_format(ss, "%d", i); - fs.open(ss.c_str()); - CV_Assert(fs.is_open()); - for (size_t j = 0; j < objectPoints[i].size(); j++) - { - double x = objectPoints[i][j].x; - double y = objectPoints[i][j].y; - double z = objectPoints[i][j].z; - fs << std::setprecision(15) << x << "; " << y; - fs << std::setprecision(15) << "; " << z; - fs << std::endl; - } - fs.close(); - } - cv::Matx33d K1, K2, R; cv::Vec3d T; cv::Vec4d D1, D2; @@ -516,59 +491,6 @@ TEST_F(FisheyeTest, stereoCalibrateFixIntrinsic) fs_object[cv::format("image_%d", i )] >> objectPoints[i]; fs_object.release(); - - std::ofstream fs; - - for (size_t i = 0; i < leftPoints.size(); i++) - { - std::string ss = combine(folder, "left"); - ss = combine_format(ss, "%d", i); - fs.open(ss.c_str()); - CV_Assert(fs.is_open()); - for (size_t j = 0; j < leftPoints[i].size(); j++) - { - double x = leftPoints[i][j].x; - double y = leftPoints[i][j].y; - fs << std::setprecision(15) << x << "; " << y; - fs << std::endl; - } - fs.close(); - } - - for (size_t i = 0; i < rightPoints.size(); i++) - { - std::string ss = combine(folder, "right"); - ss = combine_format(ss, "%d", i); - fs.open(ss.c_str()); - CV_Assert(fs.is_open()); - for (size_t j = 0; j < rightPoints[i].size(); j++) - { - double x = rightPoints[i][j].x; - double y = rightPoints[i][j].y; - fs << std::setprecision(15) << x << "; " << y; - fs << std::endl; - } - fs.close(); - } - - for (size_t i = 0; i < objectPoints.size(); i++) - { - std::string ss = combine(folder, "object"); - ss = combine_format(ss, "%d", i); - fs.open(ss.c_str()); - CV_Assert(fs.is_open()); - for (size_t j = 0; j < objectPoints[i].size(); j++) - { - double x = objectPoints[i][j].x; - double y = objectPoints[i][j].y; - double z = objectPoints[i][j].z; - fs << std::setprecision(15) << x << "; " << y; - fs << std::setprecision(15) << "; " << z; - fs << std::endl; - } - fs.close(); - } - cv::Matx33d R; cv::Vec3d T; @@ -647,42 +569,6 @@ std::string FisheyeTest::combine_format(const std::string& item1, const std::str return std::string(buffer); } -void FisheyeTest::readPoints(std::vector >& objectPoints, - std::vector >& imagePoints, - const std::string& path, const int n_images) -{ - objectPoints.resize(n_images); - imagePoints.resize(n_images); - - cv::FileStorage fs1(combine(path, "objectPoints.xml"), cv::FileStorage::READ); - CV_Assert(fs1.isOpened()); - for (size_t i = 0; i < objectPoints.size(); ++i) - { - fs1[cv::format("image_%d", i)] >> objectPoints[i]; - } - fs1.release(); - - cv::FileStorage fs2(combine(path, "imagePoints.xml"), cv::FileStorage::READ); - CV_Assert(fs2.isOpened()); - for (size_t i = 0; i < imagePoints.size(); ++i) - { - fs2[cv::format("image_%d", i)] >> imagePoints[i]; - } - fs2.release(); -} - -void FisheyeTest::readExtrinsics(const std::string& file, cv::OutputArray _R, cv::OutputArray _T, cv::OutputArray _R1, cv::OutputArray _R2, - cv::OutputArray _P1, cv::OutputArray _P2, cv::OutputArray _Q) -{ - cv::FileStorage fs(file, cv::FileStorage::READ); - CV_Assert(fs.isOpened()); - - cv::Mat R, T, R1, R2, P1, P2, Q; - fs["R"] >> R; fs["T"] >> T; fs["R1"] >> R1; fs["R2"] >> R2; fs["P1"] >> P1; fs["P2"] >> P2; fs["Q"] >> Q; - if (_R.needed()) R.copyTo(_R); if(_T.needed()) T.copyTo(_T); if (_R1.needed()) R1.copyTo(_R1); if (_R2.needed()) R2.copyTo(_R2); - if(_P1.needed()) P1.copyTo(_P1); if(_P2.needed()) P2.copyTo(_P2); if(_Q.needed()) Q.copyTo(_Q); -} - cv::Mat FisheyeTest::mergeRectification(const cv::Mat& l, const cv::Mat& r) { CV_Assert(l.type() == r.type() && l.size() == r.size()); From aa76ef9a98d64e45f441eb914541f78d66912b9f Mon Sep 17 00:00:00 2001 From: Konstantin Matskevich Date: Wed, 7 May 2014 17:19:22 +0400 Subject: [PATCH 016/189] fixes --- .../include/opencv2/contrib/contrib.hpp | 4 +- modules/contrib/src/facerec.cpp | 46 +++++++++---------- samples/cpp/facerec_demo.cpp | 2 +- 3 files changed, 25 insertions(+), 27 deletions(-) diff --git a/modules/contrib/include/opencv2/contrib/contrib.hpp b/modules/contrib/include/opencv2/contrib/contrib.hpp index 18c6eeb4b6..b3b4f330db 100644 --- a/modules/contrib/include/opencv2/contrib/contrib.hpp +++ b/modules/contrib/include/opencv2/contrib/contrib.hpp @@ -952,10 +952,10 @@ namespace cv virtual void setLabelsInfo(const std::map& additionalInfo) = 0; // Gets string information by label - virtual string getLabelInfo(const int label) = 0; + virtual string getLabelInfo(int label) const = 0; // Gets labels by string - virtual vector getLabelsByString(const string str) = 0; + virtual vector getLabelsByString(const string& str) = 0; }; CV_EXPORTS_W Ptr createEigenFaceRecognizer(int num_components = 0, double threshold = DBL_MAX); diff --git a/modules/contrib/src/facerec.cpp b/modules/contrib/src/facerec.cpp index 20bd411075..9c310e0316 100644 --- a/modules/contrib/src/facerec.cpp +++ b/modules/contrib/src/facerec.cpp @@ -21,9 +21,9 @@ struct LabelInfo { LabelInfo():label(-1), value("") {} - LabelInfo(int _label, std::string _value): label(_label), value(_value) {} - std::string value; + LabelInfo(int _label, const std::string &_value): label(_label), value(_value) {} int label; + std::string value; void write(cv::FileStorage& fs) const { fs << "{" << "label" << label << "value" << value << "}"; @@ -33,7 +33,11 @@ struct LabelInfo label = (int)node["label"]; value = (std::string)node["value"]; } - friend std::ostream& operator<<(std::ostream& out, const LabelInfo& info); + std::ostream& operator<<(std::ostream& out) + { + out << "{ label = " << label << ", " << "value = " << value << "}"; + return out; + } }; static void write(cv::FileStorage& fs, const std::string&, const LabelInfo& x) @@ -49,12 +53,6 @@ static void read(const cv::FileNode& node, LabelInfo& x, const LabelInfo& defaul x.read(node); } -std::ostream& operator<<(std::ostream& out, const LabelInfo& info) -{ - out << "{ label = " << info.label << ", " << "value = " << info.value << "}"; - return out; -} - namespace cv { @@ -188,10 +186,10 @@ public: void setLabelsInfo(const std::map& labelsInfo); // Gets additional information by label - string getLabelInfo(const int label); + string getLabelInfo(int label) const; // Gets labels by string - std::vector getLabelsByString(const string str); + std::vector getLabelsByString(const string& str); AlgorithmInfo* info() const; }; @@ -253,10 +251,10 @@ public: void setLabelsInfo(const std::map& labelsInfo); // Gets additional information by label - string getLabelInfo(const int label); + string getLabelInfo(int label) const; // Gets labels by string - std::vector getLabelsByString(const string str); + std::vector getLabelsByString(const string& str); AlgorithmInfo* info() const; }; @@ -348,10 +346,10 @@ public: void setLabelsInfo(const std::map& labelsInfo); // Gets additional information by label - string getLabelInfo(const int label); + string getLabelInfo(int label) const; // Gets labels by string - std::vector getLabelsByString(const string str); + std::vector getLabelsByString(const string& str); // Getter functions. int neighbors() const { return _neighbors; } @@ -522,14 +520,14 @@ void Eigenfaces::setLabelsInfo(const std::map& labelsInfo) _labelsInfo = labelsInfo; } -string Eigenfaces::getLabelInfo(const int label) +string Eigenfaces::getLabelInfo(int label) const { if(_labelsInfo.count(label) > 0) - return _labelsInfo[label]; + return _labelsInfo.at(label); return ""; } -vector Eigenfaces::getLabelsByString(const string str) +vector Eigenfaces::getLabelsByString(const string& str) { vector labels; for(std::map::const_iterator it = _labelsInfo.begin(); it != _labelsInfo.end(); it++) @@ -683,14 +681,14 @@ void Fisherfaces::setLabelsInfo(const std::map& labelsInfo) _labelsInfo = labelsInfo; } -string Fisherfaces::getLabelInfo(const int label) +string Fisherfaces::getLabelInfo(int label) const { if(_labelsInfo.count(label) > 0) - return _labelsInfo[label]; + return _labelsInfo.at(label); return ""; } -vector Fisherfaces::getLabelsByString(const string str) +vector Fisherfaces::getLabelsByString(const string& str) { vector labels; for(std::map::const_iterator it = _labelsInfo.begin(); it != _labelsInfo.end(); it++) @@ -920,14 +918,14 @@ void LBPH::setLabelsInfo(const std::map& labelsInfo) _labelsInfo = labelsInfo; } -string LBPH::getLabelInfo(const int label) +string LBPH::getLabelInfo(int label) const { if(_labelsInfo.count(label) > 0) - return _labelsInfo[label]; + return _labelsInfo.at(label); return ""; } -vector LBPH::getLabelsByString(const string str) +vector LBPH::getLabelsByString(const string& str) { vector labels; for(std::map::const_iterator it = _labelsInfo.begin(); it != _labelsInfo.end(); it++) diff --git a/samples/cpp/facerec_demo.cpp b/samples/cpp/facerec_demo.cpp index dfc15aa81e..ef480c6df7 100644 --- a/samples/cpp/facerec_demo.cpp +++ b/samples/cpp/facerec_demo.cpp @@ -130,7 +130,7 @@ int main(int argc, const char *argv[]) { // string result_message = format("Predicted class = %d / Actual class = %d.", predictedLabel, testLabel); cout << result_message << endl; - if( (predictedLabel == testLabel) && (model->getLabelInfo(predictedLabel) != "") ) + if( (predictedLabel == testLabel) && !model->getLabelInfo(predictedLabel).empty() ) cout << format("%d-th label's info: %s", predictedLabel, model->getLabelInfo(predictedLabel).c_str()) << endl; // Sometimes you'll need to get/set internal model data, // which isn't exposed by the public cv::FaceRecognizer. From d67c9aabff3d16e6e7b1c966b5983ad513dcb5e7 Mon Sep 17 00:00:00 2001 From: Konstantin Matskevich Date: Thu, 8 May 2014 16:43:03 +0400 Subject: [PATCH 017/189] docs --- modules/contrib/doc/facerec/facerec_api.rst | 38 ++++++++++++++++++ .../include/opencv2/contrib/contrib.hpp | 4 +- modules/contrib/src/facerec.cpp | 39 +++++++++---------- 3 files changed, 58 insertions(+), 23 deletions(-) diff --git a/modules/contrib/doc/facerec/facerec_api.rst b/modules/contrib/doc/facerec/facerec_api.rst index 2aa3dcfa00..8de4359c52 100644 --- a/modules/contrib/doc/facerec/facerec_api.rst +++ b/modules/contrib/doc/facerec/facerec_api.rst @@ -46,6 +46,15 @@ a unified access to all face recongition algorithms in OpenCV. :: // Deserializes this object from a given cv::FileStorage. virtual void load(const FileStorage& fs) = 0; + + // Sets additional information as pairs label - info. + virtual void setLabelsInfo(const std::map& labelsInfo) = 0; + + // Gets string information by label + virtual string getLabelInfo(int label) const = 0; + + // Gets labels by string + virtual vector getLabelsByString(const string& str) = 0; }; @@ -70,6 +79,8 @@ Moreover every :ocv:class:`FaceRecognizer` supports the: * **Loading/Saving** the model state from/to a given XML or YAML. +* **Setting/Getting labels info**, that is storaged as a string. + .. note:: When using the FaceRecognizer interface in combination with Python, please stick to Python 2. Some underlying scripts like create_csv will not work in other versions, like Python 3. Setting the Thresholds @@ -293,6 +304,30 @@ to enable loading the model state. ``FaceRecognizer::load(FileStorage& fs)`` in turn gets called by ``FaceRecognizer::load(const string& filename)``, to ease saving a model. +FaceRecognizer::setLabelsInfo +----------------------------- + +Sets string information about labels into the model. +.. ocv:function:: void FaceRecognizer::setLabelsInfo(const std::map& labelsInfo) = 0 + +Information about the label loads as a pair label-its info. + +FaceRecognizer::getLabelInfo +---------------------------- + +Gets string information by label. +.. ocv:function:: string FaceRecognizer::getLabelInfo(int label) const = 0 + +If there is no such label in the model or there is no information about the label it will return an empty string. + +FaceRecognizer::getLabelsByString +--------------------------------- +Gets vector of labels by string. + +.. ocv:function:: vector FaceRecognizer::getLabelsByString(const string& str) = 0 + +If the string contained in a string information for a label, this label will be pushed into the vector. + createEigenFaceRecognizer ------------------------- @@ -319,6 +354,7 @@ Model internal data: * ``mean`` The sample mean calculated from the training data. * ``projections`` The projections of the training data. * ``labels`` The threshold applied in the prediction. If the distance to the nearest neighbor is larger than the threshold, this method returns -1. +* ``labelsInfo`` The string information about the labels. createFisherFaceRecognizer -------------------------- @@ -346,6 +382,7 @@ Model internal data: * ``mean`` The sample mean calculated from the training data. * ``projections`` The projections of the training data. * ``labels`` The labels corresponding to the projections. +* ``labelsInfo`` The string information about the labels. createLBPHFaceRecognizer @@ -375,3 +412,4 @@ Model internal data: * ``threshold`` see :ocv:func:`createLBPHFaceRecognizer`. * ``histograms`` Local Binary Patterns Histograms calculated from the given training data (empty if none was given). * ``labels`` Labels corresponding to the calculated Local Binary Patterns Histograms. +* ``labelsInfo`` The string information about the labels. diff --git a/modules/contrib/include/opencv2/contrib/contrib.hpp b/modules/contrib/include/opencv2/contrib/contrib.hpp index b3b4f330db..e6e11d816a 100644 --- a/modules/contrib/include/opencv2/contrib/contrib.hpp +++ b/modules/contrib/include/opencv2/contrib/contrib.hpp @@ -948,8 +948,8 @@ namespace cv // Deserializes this object from a given cv::FileStorage. virtual void load(const FileStorage& fs) = 0; - // Sets additions information as pairs label - info. - virtual void setLabelsInfo(const std::map& additionalInfo) = 0; + // Sets additional information as pairs label - info. + virtual void setLabelsInfo(const std::map& labelsInfo) = 0; // Gets string information by label virtual string getLabelInfo(int label) const = 0; diff --git a/modules/contrib/src/facerec.cpp b/modules/contrib/src/facerec.cpp index 9c310e0316..ef32b5273a 100644 --- a/modules/contrib/src/facerec.cpp +++ b/modules/contrib/src/facerec.cpp @@ -182,10 +182,10 @@ public: // See FaceRecognizer::save. void save(FileStorage& fs) const; - // Sets additions information as pairs label - info. + // Sets additional information as pairs label - info. void setLabelsInfo(const std::map& labelsInfo); - // Gets additional information by label + // Gets string information by label string getLabelInfo(int label) const; // Gets labels by string @@ -247,10 +247,10 @@ public: // See FaceRecognizer::save. void save(FileStorage& fs) const; - // Sets additions information as pairs label - info. + // Sets additional information as pairs label - info. void setLabelsInfo(const std::map& labelsInfo); - // Gets additional information by label + // Gets string information by label string getLabelInfo(int label) const; // Gets labels by string @@ -342,10 +342,10 @@ public: // See FaceRecognizer::save. void save(FileStorage& fs) const; - // Sets additions information as pairs label - info. + // Sets additional information as pairs label - info. void setLabelsInfo(const std::map& labelsInfo); - // Gets additional information by label + // Gets string information by label string getLabelInfo(int label) const; // Gets labels by string @@ -487,7 +487,7 @@ void Eigenfaces::load(const FileStorage& fs) { // read sequences readFileNodeList(fs["projections"], _projections); fs["labels"] >> _labels; - const FileNode& fn = fs["info"]; + const FileNode& fn = fs["labelsInfo"]; if (fn.type() == FileNode::SEQ) { _labelsInfo.clear(); @@ -509,7 +509,7 @@ void Eigenfaces::save(FileStorage& fs) const { // write sequences writeFileNodeList(fs, "projections", _projections); fs << "labels" << _labels; - fs << "info" << "["; + fs << "labelsInfo" << "["; for (std::map::const_iterator it = _labelsInfo.begin(); it != _labelsInfo.end(); it++) fs << LabelInfo(it->first, it->second); fs << "]"; @@ -522,9 +522,8 @@ void Eigenfaces::setLabelsInfo(const std::map& labelsInfo) string Eigenfaces::getLabelInfo(int label) const { - if(_labelsInfo.count(label) > 0) - return _labelsInfo.at(label); - return ""; + std::map::const_iterator iter(_labelsInfo.find(label)); + return iter != _labelsInfo.end() ? iter->second : ""; } vector Eigenfaces::getLabelsByString(const string& str) @@ -647,7 +646,7 @@ void Fisherfaces::load(const FileStorage& fs) { // read sequences readFileNodeList(fs["projections"], _projections); fs["labels"] >> _labels; - const FileNode& fn = fs["info"]; + const FileNode& fn = fs["labelsInfo"]; if (fn.type() == FileNode::SEQ) { _labelsInfo.clear(); @@ -670,7 +669,7 @@ void Fisherfaces::save(FileStorage& fs) const { // write sequences writeFileNodeList(fs, "projections", _projections); fs << "labels" << _labels; - fs << "info" << "["; + fs << "labelsInfo" << "["; for (std::map::const_iterator it = _labelsInfo.begin(); it != _labelsInfo.end(); it++) fs << LabelInfo(it->first, it->second); fs << "]"; @@ -683,9 +682,8 @@ void Fisherfaces::setLabelsInfo(const std::map& labelsInfo) string Fisherfaces::getLabelInfo(int label) const { - if(_labelsInfo.count(label) > 0) - return _labelsInfo.at(label); - return ""; + std::map::const_iterator iter(_labelsInfo.find(label)); + return iter != _labelsInfo.end() ? iter->second : ""; } vector Fisherfaces::getLabelsByString(const string& str) @@ -885,7 +883,7 @@ void LBPH::load(const FileStorage& fs) { //read matrices readFileNodeList(fs["histograms"], _histograms); fs["labels"] >> _labels; - const FileNode& fn = fs["info"]; + const FileNode& fn = fs["labelsInfo"]; if (fn.type() == FileNode::SEQ) { _labelsInfo.clear(); @@ -907,7 +905,7 @@ void LBPH::save(FileStorage& fs) const { // write matrices writeFileNodeList(fs, "histograms", _histograms); fs << "labels" << _labels; - fs << "info" << "["; + fs << "labelsInfo" << "["; for (std::map::const_iterator it = _labelsInfo.begin(); it != _labelsInfo.end(); it++) fs << LabelInfo(it->first, it->second); fs << "]"; @@ -920,9 +918,8 @@ void LBPH::setLabelsInfo(const std::map& labelsInfo) string LBPH::getLabelInfo(int label) const { - if(_labelsInfo.count(label) > 0) - return _labelsInfo.at(label); - return ""; + std::map::const_iterator iter(_labelsInfo.find(label)); + return iter != _labelsInfo.end() ? iter->second : ""; } vector LBPH::getLabelsByString(const string& str) From e4a9c0f184024330ab33eb7997874921d9fe0195 Mon Sep 17 00:00:00 2001 From: Ilya Krylov Date: Mon, 12 May 2014 15:37:47 +0400 Subject: [PATCH 018/189] Fixed review comments --- ...mera_calibration_and_3d_reconstruction.rst | 23 ++++++++----------- .../include/opencv2/calib3d/calib3d.hpp | 5 ---- 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst index 20a731f958..2f1bc69819 100644 --- a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst +++ b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst @@ -1518,7 +1518,7 @@ The methods in this class use a so-called fisheye camera model. :: static void initUndistortRectifyMap(InputArray K, InputArray D, InputArray R, InputArray P, const cv::Size& size, int m1type, OutputArray map1, OutputArray map2); - //! undistorts image, optionally changes resolution and camera matrix. If Knew zero identity matrix is used + //! undistorts image, optionally changes resolution and camera matrix. static void undistortImage(InputArray distorted, OutputArray undistorted, InputArray K, InputArray D, InputArray Knew = cv::noArray(), const Size& new_size = Size()); @@ -1526,11 +1526,6 @@ The methods in this class use a so-called fisheye camera model. :: static void estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R, OutputArray P, double balance = 0.0, const Size& new_size = Size(), double fov_scale = 1.0); - //! stereo rectification for fisheye camera model - static void stereoRectify( InputArray K1, InputArray D1, InputArray K2, InputArray D2, const cv::Size& imageSize, - InputArray rotaion, InputArray tvec, OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, - int flags = cv::CALIB_ZERO_DISPARITY, double alpha = -1, const Size& newImageSize = Size(), Rect* roi1 = 0, Rect* roi2 = 0 ); - //! performs camera calibaration static double calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size, InputOutputArray K, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags = 0, @@ -1699,7 +1694,7 @@ Transforms an image to compensate for fisheye lens distortion. :param D: Input vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)`. - :param Knew: Camera matrix of the distorted image. By default, it is the same as ``cameraMatrix`` but you may additionally scale and shift the result by using a different matrix. + :param Knew: Camera matrix of the distorted image. By default, it is the identity matrix but you may additionally scale and shift the result by using a different matrix. :param undistorted: Output image with compensated fisheye lens distortion. @@ -1734,14 +1729,14 @@ Estimates new camera matrix for undistortion or rectification. :param P: New camera matrix (3x3) or new projection matrix (3x4) + :param balance: Sets the new focal length in range between the min focal length and the max focal length. Balance is in range of [0, 1]. + + :param fov_scale: Divisor for new focal length. + Fisheye::stereoRectify ------------------------------ Stereo rectification for fisheye camera model -.. ocv:function:: void Fisheye::stereoRectify( InputArray K1, InputArray D1, InputArray K2, InputArray D2, const cv::Size& imageSize, - InputArray rotaion, InputArray tvec, OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, - int flags = cv::CALIB_ZERO_DISPARITY, double alpha = -1, const Size& newImageSize = Size(), Rect* roi1 = 0, Rect* roi2 = 0 ) - .. ocv:function:: void Fisheye::stereoRectify(InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size &imageSize, InputArray R, InputArray tvec, OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, int flags, const Size &newImageSize = Size(), double balance = 0.0, double fov_scale = 1.0) @@ -1780,9 +1775,9 @@ Stereo rectification for fisheye camera model :param roi2: Optional output rectangles inside the rectified images where all the pixels are valid. If ``alpha=0`` , the ROIs cover the whole images. Otherwise, they are likely to be smaller (see the picture below). - :param balance: Balance. + :param balance: Sets the new focal length in range between the min focal length and the max focal length. Balance is in range of [0, 1]. - :param fov_scale: Field of View scale. + :param fov_scale: Divisor for new focal length. @@ -1794,7 +1789,7 @@ Performs camera calibaration InputOutputArray K, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags = 0, TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)) - :param objectPoints: vector of vectors of calibration pattern points in the calibration pattern coordinate space. The outer vector contains as many elements as the number of the pattern views. If the same calibration pattern is shown in each view and it is fully visible, all the vectors will be the same. Although, it is possible to use partially occluded patterns, or even different patterns in different views. Then, the vectors will be different. The points are 3D, but since they are in a pattern coordinate system, then, if the rig is planar, it may make sense to put the model to a XY coordinate plane so that Z-coordinate of each input object point is 0. + :param objectPoints: vector of vectors of calibration pattern points in the calibration pattern coordinate space. :param imagePoints: vector of vectors of the projections of calibration pattern points. ``imagePoints.size()`` and ``objectPoints.size()`` and ``imagePoints[i].size()`` must be equal to ``objectPoints[i].size()`` for each ``i``. diff --git a/modules/calib3d/include/opencv2/calib3d/calib3d.hpp b/modules/calib3d/include/opencv2/calib3d/calib3d.hpp index 7b7f92efc8..67cf56890f 100644 --- a/modules/calib3d/include/opencv2/calib3d/calib3d.hpp +++ b/modules/calib3d/include/opencv2/calib3d/calib3d.hpp @@ -789,11 +789,6 @@ public: static void estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R, OutputArray P, double balance = 0.0, const Size& new_size = Size(), double fov_scale = 1.0); - //! stereo rectification for fisheye camera model - static void stereoRectify( InputArray K1, InputArray D1, InputArray K2, InputArray D2, const cv::Size& imageSize, - InputArray rotaion, InputArray tvec, OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, - int flags = cv::CALIB_ZERO_DISPARITY, double alpha = -1, const Size& newImageSize = Size(), Rect* roi1 = 0, Rect* roi2 = 0 ); - //! performs camera calibaration static double calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size, InputOutputArray K, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags = 0, From c30fef1f9ded38817e8280a27c8a67db4e2bea0d Mon Sep 17 00:00:00 2001 From: Ilya Krylov Date: Tue, 13 May 2014 13:34:46 +0400 Subject: [PATCH 019/189] Fixed build issues --- ...mera_calibration_and_3d_reconstruction.rst | 80 ++++++++----------- .../include/opencv2/calib3d/calib3d.hpp | 2 +- modules/calib3d/src/fisheye.cpp | 78 ++++++++---------- modules/calib3d/src/fisheye.hpp | 9 ++- modules/calib3d/test/test_fisheye.cpp | 1 - 5 files changed, 73 insertions(+), 97 deletions(-) diff --git a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst index 2f1bc69819..5f64125eba 100644 --- a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst +++ b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst @@ -1536,13 +1536,17 @@ The methods in this class use a so-called fisheye camera model. :: OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, int flags, const Size &newImageSize = Size(), double balance = 0.0, double fov_scale = 1.0); - ... + //! performs stereo calibration + static double stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, + InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, Size imageSize, + OutputArray R, OutputArray T, int flags = CALIB_FIX_INTRINSIC, + TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)); }; Definitions: Let P be a point in 3D of coordinates X in the world reference frame (stored in the matrix X) -The coordinate vector of P in the camera reference frame is: +The coordinate vector of P in the camera reference frame is: .. class:: center .. math:: @@ -1556,13 +1560,13 @@ call x, y and z the 3 coordinates of Xc: .. math:: x = Xc_1 \\ y = Xc_2 \\ - z = Xc_3 + z = Xc_3 -The pinehole projection coordinates of P is [a; b] where +The pinehole projection coordinates of P is [a; b] where .. class:: center .. math:: - + a = x / z \ and \ b = y / z \\ r^2 = a^2 + b^2 \\ \theta = atan(r) @@ -1570,22 +1574,22 @@ The pinehole projection coordinates of P is [a; b] where Fisheye distortion: .. class:: center -.. math:: - +.. math:: + \theta_d = \theta (1 + k_1 \theta^2 + k_2 \theta^4 + k_3 \theta^6 + k_4 \theta^8) The distorted point coordinates are [x'; y'] where -.. class:: center -.. math:: - +..class:: center +.. math:: + x' = (\theta_d / r) x \\ y' = (\theta_d / r) y Finally, convertion into pixel coordinates: The final pixel coordinates vector [u; v] where: .. class:: center -.. math:: +.. math:: u = f_x (x' + \alpha y') + c_x \\ v = f_y yy + c_y @@ -1596,38 +1600,32 @@ Projects points using fisheye model .. ocv:function:: void Fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints, const Affine3d& affine, InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()) -.. ocv:function:: void Fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints, InputArray rvec, InputArray tvec, - InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()) +.. ocv:function:: void Fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints, InputArray rvec, InputArray tvec, InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()) :param objectPoints: Array of object points, 1xN/Nx1 3-channel (or ``vector`` ), where N is the number of points in the view. - :param rvec: Rotation vector. See :ocv:func:`Rodrigues` for details. + :param rvec: Rotation vector. See :ocv:func:`Rodrigues` for details. :param tvec: Translation vector. - :param K: Camera matrix :math:`K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}` . + :param K: Camera matrix :math:`K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}`. :param D: Input vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)`. :param alpha: The skew coefficient. - :param imagePoints: Output array of image points, 2xN/Nx2 1-channel or 1xN/Nx1 2-channel, or ``vector`` . + :param imagePoints: Output array of image points, 2xN/Nx2 1-channel or 1xN/Nx1 2-channel, or ``vector``. :param jacobian: Optional output 2Nx15 jacobian matrix of derivatives of image points with respect to components of the focal lengths, coordinates of the principal point, distortion coefficients, rotation vector, translation vector, and the skew. In the old interface different components of the jacobian are returned via different output parameters. -The function computes projections of 3D -points to the image plane given intrinsic and extrinsic camera -parameters. Optionally, the function computes Jacobians - matrices -of partial derivatives of image points coordinates (as functions of all the -input parameters) with respect to the particular parameters, intrinsic and/or -extrinsic. +The function computes projections of 3D points to the image plane given intrinsic and extrinsic camera parameters. Optionally, the function computes Jacobians - matrices of partial derivatives of image points coordinates (as functions of all the input parameters) with respect to the particular parameters, intrinsic and/or extrinsic. Fisheye::distortPoints ------------------------- Distorts 2D points using fisheye model. .. ocv:function:: void Fisheye::distortPoints(InputArray undistorted, OutputArray distorted, InputArray K, InputArray D, double alpha = 0) - + :param undistorted: Array of object points, 1xN/Nx1 2-channel (or ``vector`` ), where N is the number of points in the view. :param K: Camera matrix :math:`K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}`. @@ -1642,8 +1640,7 @@ Fisheye::undistortPoints ----------------------------- Undistorts 2D points using fisheye model -.. ocv:function:: void Fisheye::undistortPoints(InputArray distorted, OutputArray undistorted, - InputArray K, InputArray D, InputArray R = noArray(), InputArray P = noArray()) +.. ocv:function:: void Fisheye::undistortPoints(InputArray distorted, OutputArray undistorted, InputArray K, InputArray D, InputArray R = noArray(), InputArray P = noArray()) :param distorted: Array of object points, 1xN/Nx1 2-channel (or ``vector`` ), where N is the number of points in the view. @@ -1651,25 +1648,24 @@ Undistorts 2D points using fisheye model :param D: Input vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)`. - :param R: Rectification transformation in the object space: 3x3 1-channel, or vector: 3x1/1x3 1-channel or 1x1 3-channel + :param R: Rectification transformation in the object space: 3x3 1-channel, or vector: 3x1/1x3 1-channel or 1x1 3-channel :param P: New camera matrix (3x3) or new projection matrix (3x4) - :param undistorted: Output array of image points, 1xN/Nx1 2-channel, or ``vector`` . + :param undistorted: Output array of image points, 1xN/Nx1 2-channel, or ``vector`` . Fisheye::initUndistortRectifyMap ------------------------------------- Computes undistortion and rectification maps for image transform by cv::remap(). If D is empty zero distortion is used, if R or P is empty identity matrixes are used. -.. ocv:function:: void Fisheye::initUndistortRectifyMap(InputArray K, InputArray D, InputArray R, InputArray P, - const cv::Size& size, int m1type, OutputArray map1, OutputArray map2) +.. ocv:function:: void Fisheye::initUndistortRectifyMap(InputArray K, InputArray D, InputArray R, InputArray P, const cv::Size& size, int m1type, OutputArray map1, OutputArray map2) :param K: Camera matrix :math:`K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}`. :param D: Input vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)`. - :param R: Rectification transformation in the object space: 3x3 1-channel, or vector: 3x1/1x3 1-channel or 1x1 3-channel + :param R: Rectification transformation in the object space: 3x3 1-channel, or vector: 3x1/1x3 1-channel or 1x1 3-channel :param P: New camera matrix (3x3) or new projection matrix (3x4) @@ -1682,11 +1678,10 @@ Computes undistortion and rectification maps for image transform by cv::remap(). :param map2: The second output map. Fisheye::undistortImage -------------- +----------------------- Transforms an image to compensate for fisheye lens distortion. -.. ocv:function:: void Fisheye::undistortImage(InputArray distorted, OutputArray undistorted, - InputArray K, InputArray D, InputArray Knew = cv::noArray(), const Size& new_size = Size()) +.. ocv:function:: void Fisheye::undistortImage(InputArray distorted, OutputArray undistorted, InputArray K, InputArray D, InputArray Knew = cv::noArray(), const Size& new_size = Size()) :param distorted: image with fisheye lens distortion. @@ -1706,7 +1701,7 @@ The function is simply a combination of See below the results of undistortImage. * a\) result of :ocv:func:`undistort` of perspective camera model (all possible coefficients (k_1, k_2, k_3, k_4, k_5, k_6) of distortion were optimized under calibration) - * b\) result of :ocv:func:`Fisheye::undistrortImage` of fisheye camera model (all possible coefficients (k_1, k_2, k_3, k_4) of fisheye distortion were optimized under calibration) + * b\) result of :ocv:func:`Fisheye::undistortImage` of fisheye camera model (all possible coefficients (k_1, k_2, k_3, k_4) of fisheye distortion were optimized under calibration) * c\) original image was captured with fisheye lens Pictures a) and b) almost the same. But if we consider points of image located far from the center of image, we can notice that on image a) these points are distorted. @@ -1718,14 +1713,13 @@ Fisheye::estimateNewCameraMatrixForUndistortRectify ---------------------------------------------------------- Estimates new camera matrix for undistortion or rectification. -.. ocv:function:: void Fisheye::estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R, - OutputArray P, double balance = 0.0, const Size& new_size = Size(), double fov_scale = 1.0); +.. ocv:function:: void Fisheye::estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R, OutputArray P, double balance = 0.0, const Size& new_size = Size(), double fov_scale = 1.0) :param K: Camera matrix :math:`K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}`. :param D: Input vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)`. - :param R: Rectification transformation in the object space: 3x3 1-channel, or vector: 3x1/1x3 1-channel or 1x1 3-channel + :param R: Rectification transformation in the object space: 3x3 1-channel, or vector: 3x1/1x3 1-channel or 1x1 3-channel :param P: New camera matrix (3x3) or new projection matrix (3x4) @@ -1737,9 +1731,7 @@ Fisheye::stereoRectify ------------------------------ Stereo rectification for fisheye camera model -.. ocv:function:: void Fisheye::stereoRectify(InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size &imageSize, InputArray R, InputArray tvec, - OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, int flags, const Size &newImageSize = Size(), - double balance = 0.0, double fov_scale = 1.0) +.. ocv:function:: void Fisheye::stereoRectify(InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size &imageSize, InputArray R, InputArray tvec, OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, int flags, const Size &newImageSize = Size(), double balance = 0.0, double fov_scale = 1.0) :param K1: First camera matrix. @@ -1785,9 +1777,7 @@ Fisheye::calibrate ---------------------------- Performs camera calibaration -.. ocv:function:: double Fisheye::calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size, - InputOutputArray K, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags = 0, - TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)) +.. ocv:function:: double Fisheye::calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size, InputOutputArray K, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags = 0, TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)) :param objectPoints: vector of vectors of calibration pattern points in the calibration pattern coordinate space. @@ -1820,9 +1810,9 @@ Performs camera calibaration Fisheye::stereoCalibrate ---------------------------- -Performs stereo calibration calibaration +Performs stereo calibration -.. ocv:function:: double stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, Size imageSize, OutputArray R, OutputArray T, int flags = CALIB_FIX_INTRINSIC, TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)) +.. ocv:function:: double Fisheye::stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, Size imageSize, OutputArray R, OutputArray T, int flags = CALIB_FIX_INTRINSIC, TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)) :param objectPoints: Vector of vectors of the calibration pattern points. diff --git a/modules/calib3d/include/opencv2/calib3d/calib3d.hpp b/modules/calib3d/include/opencv2/calib3d/calib3d.hpp index 67cf56890f..0b048fe8a5 100644 --- a/modules/calib3d/include/opencv2/calib3d/calib3d.hpp +++ b/modules/calib3d/include/opencv2/calib3d/calib3d.hpp @@ -745,7 +745,7 @@ CV_EXPORTS_W int estimateAffine3D(InputArray src, InputArray dst, OutputArray out, OutputArray inliers, double ransacThreshold=3, double confidence=0.99); -class Fisheye +class CV_EXPORTS Fisheye { public: diff --git a/modules/calib3d/src/fisheye.cpp b/modules/calib3d/src/fisheye.cpp index 50dd045281..da7a8394f0 100644 --- a/modules/calib3d/src/fisheye.cpp +++ b/modules/calib3d/src/fisheye.cpp @@ -1,8 +1,4 @@ -#include "opencv2/opencv.hpp" -#include "opencv2/core/affine.hpp" -#include "opencv2/core/affine.hpp" #include "fisheye.hpp" -#include "iomanip" namespace cv { namespace { @@ -46,6 +42,7 @@ void cv::Fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints cv::Vec2d f, c; if (_K.depth() == CV_32F) { + Matx33f K = _K.getMat(); f = Vec2f(K(0, 0), K(1, 1)); c = Vec2f(K(0, 2), K(1, 2)); @@ -786,8 +783,8 @@ double cv::Fisheye::stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayO const double thresh_cond = 1e6; const int check_cond = 1; - size_t n_points = objectPoints.getMat(0).total(); - size_t n_images = objectPoints.total(); + int n_points = (int)objectPoints.getMat(0).total(); + int n_images = (int)objectPoints.total(); double change = 1; @@ -856,7 +853,7 @@ double cv::Fisheye::stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayO //Init values for rotation and translation between two views cv::Mat om_list(1, n_images, CV_64FC3), T_list(1, n_images, CV_64FC3); cv::Mat om_ref, R_ref, T_ref, R1, R2; - for (size_t image_idx = 0; image_idx < n_images; ++image_idx) + for (int image_idx = 0; image_idx < n_images; ++image_idx) { cv::Rodrigues(rvecs1[image_idx], R1); cv::Rodrigues(rvecs2[image_idx], R2); @@ -887,7 +884,7 @@ double cv::Fisheye::stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayO cv::Mat omr, Tr, domrdomckk, domrdTckk, domrdom, domrdT, dTrdomckk, dTrdTckk, dTrdom, dTrdT; - for (size_t image_idx = 0; image_idx < n_images; ++image_idx) + for (int image_idx = 0; image_idx < n_images; ++image_idx) { Jkk = cv::Mat::zeros(4 * n_points, 18 + 6 * (n_images + 1), CV_64FC1); @@ -931,22 +928,18 @@ double cv::Fisheye::stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayO //check goodness of sterepair double abs_max = 0; - for (size_t i = 0; i < 4 * n_points; i++) + for (int i = 0; i < 4 * n_points; i++) { if (fabs(ekk.at(i)) > abs_max) { abs_max = fabs(ekk.at(i)); } } - if (abs_max < threshold) - { - Jkk.copyTo(J.rowRange(image_idx * 4 * n_points, (image_idx + 1) * 4 * n_points)); - ekk.copyTo(e.rowRange(image_idx * 4 * n_points, (image_idx + 1) * 4 * n_points)); - } - else - { - CV_Assert(!"Bad stereo pair"); - } + + CV_Assert(abs_max < threshold); // bad stereo pair + + Jkk.copyTo(J.rowRange(image_idx * 4 * n_points, (image_idx + 1) * 4 * n_points)); + ekk.copyTo(e.rowRange(image_idx * 4 * n_points, (image_idx + 1) * 4 * n_points)); } cv::Vec6d oldTom(Tcur[0], Tcur[1], Tcur[2], omcur[0], omcur[1], omcur[2]); @@ -962,7 +955,7 @@ double cv::Fisheye::stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayO intrinsicRight = intrinsicRight + deltas.rowRange(a, a + b); omcur = omcur + cv::Vec3d(deltas.rowRange(a + b, a + b + 3)); Tcur = Tcur + cv::Vec3d(deltas.rowRange(a + b + 3, a + b + 6)); - for (size_t image_idx = 0; image_idx < n_images; ++image_idx) + for (int image_idx = 0; image_idx < n_images; ++image_idx) { rvecs1[image_idx] = cv::Mat(cv::Mat(rvecs1[image_idx]) + deltas.rowRange(a + b + 6 + image_idx * 6, a + b + 9 + image_idx * 6)); tvecs1[image_idx] = cv::Mat(cv::Mat(tvecs1[image_idx]) + deltas.rowRange(a + b + 9 + image_idx * 6, a + b + 12 + image_idx * 6)); @@ -979,7 +972,7 @@ double cv::Fisheye::stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayO rms += ptr_e[i][0] * ptr_e[i][0] + ptr_e[i][1] * ptr_e[i][1]; } - rms /= (e.total() / 2); + rms /= ((double)e.total() / 2.0); rms = sqrt(rms); _K1 = Matx33d(intrinsicLeft.f[0], intrinsicLeft.f[0] * intrinsicLeft.alpha, intrinsicLeft.c[0], @@ -1011,7 +1004,7 @@ void subMatrix(const Mat& src, Mat& dst, const vector& cols, const vector& cols, const vector(0) / svd.w.at((int)svd.w.total() - 1) > thresh_cond) - { - CV_Assert(!"cond > thresh_cond"); - } + CV_Assert(svd.w.at(0) / svd.w.at((int)svd.w.total() - 1) < thresh_cond); } omckk.reshape(3,1).copyTo(omc.getMat().col(image_idx)); Tckk.reshape(3,1).copyTo(Tc.getMat().col(image_idx)); @@ -1392,11 +1382,7 @@ void cv::internal::ComputeJacobians(InputArrayOfArrays objectPoints, InputArrayO { Mat JJ_kk = B.t(); SVD svd(JJ_kk, SVD::NO_UV); - double cond = svd.w.at(0) / svd.w.at(svd.w.rows - 1); - if (cond > thresh_cond) - { - CV_Assert(!"cond > thresh_cond"); - } + CV_Assert(svd.w.at(0) / svd.w.at(svd.w.rows - 1) < thresh_cond); } } @@ -1420,7 +1406,7 @@ void cv::internal::EstimateUncertainties(InputArrayOfArrays objectPoints, InputA Mat ex((int)(objectPoints.getMat(0).total() * objectPoints.total()), 1, CV_64FC2); - for (size_t image_idx = 0; image_idx < objectPoints.total(); ++image_idx) + for (int image_idx = 0; image_idx < (int)objectPoints.total(); ++image_idx) { Mat image, object; objectPoints.getMat(image_idx).convertTo(object, CV_64FC3); @@ -1435,11 +1421,11 @@ void cv::internal::EstimateUncertainties(InputArrayOfArrays objectPoints, InputA } meanStdDev(ex, noArray(), std_err); - std_err *= sqrt(ex.total()/(ex.total() - 1.0)); + std_err *= sqrt((double)ex.total()/((double)ex.total() - 1.0)); Mat sigma_x; meanStdDev(ex.reshape(1, 1), noArray(), sigma_x); - sigma_x *= sqrt(2 * ex.total()/(2 * ex.total() - 1.0)); + sigma_x *= sqrt(2.0 * (double)ex.total()/(2.0 * (double)ex.total() - 1.0)); Mat _JJ2_inv, ex3; ComputeJacobians(objectPoints, imagePoints, params, omc, Tc, check_cond, thresh_cond, _JJ2_inv, ex3); @@ -1459,7 +1445,7 @@ void cv::internal::EstimateUncertainties(InputArrayOfArrays objectPoints, InputA rms += ptr_ex[i][0] * ptr_ex[i][0] + ptr_ex[i][1] * ptr_ex[i][1]; } - rms /= ex.total(); + rms /= (double)ex.total(); rms = sqrt(rms); } @@ -1468,9 +1454,9 @@ void cv::internal::dAB(InputArray A, InputArray B, OutputArray dABdA, OutputArra CV_Assert(A.getMat().cols == B.getMat().rows); CV_Assert(A.type() == CV_64FC1 && B.type() == CV_64FC1); - size_t p = A.getMat().rows; - size_t n = A.getMat().cols; - size_t q = B.getMat().cols; + int p = A.getMat().rows; + int n = A.getMat().cols; + int q = B.getMat().cols; dABdA.create(p * q, p * n, CV_64FC1); dABdB.create(p * q, q * n, CV_64FC1); @@ -1478,20 +1464,20 @@ void cv::internal::dAB(InputArray A, InputArray B, OutputArray dABdA, OutputArra dABdA.getMat() = Mat::zeros(p * q, p * n, CV_64FC1); dABdB.getMat() = Mat::zeros(p * q, q * n, CV_64FC1); - for (size_t i = 0; i < q; ++i) + for (int i = 0; i < q; ++i) { - for (size_t j = 0; j < p; ++j) + for (int j = 0; j < p; ++j) { - size_t ij = j + i * p; - for (size_t k = 0; k < n; ++k) + int ij = j + i * p; + for (int k = 0; k < n; ++k) { - size_t kj = j + k * p; + int kj = j + k * p; dABdA.getMat().at(ij, kj) = B.getMat().at(k, i); } } } - for (size_t i = 0; i < q; ++i) + for (int i = 0; i < q; ++i) { A.getMat().copyTo(dABdB.getMat().rowRange(i * p, i * p + p).colRange(i * n, i * n + n)); } @@ -1571,8 +1557,8 @@ double cv::internal::median(const Mat& row) CV_Assert(!row.empty() && row.rows == 1); Mat tmp = row.clone(); sort(tmp, tmp, 0); - if (tmp.total() % 2) return tmp.at(tmp.total() / 2); - else return 0.5 *(tmp.at(tmp.total() / 2) + tmp.at(tmp.total() / 2 - 1)); + if ((int)tmp.total() % 2) return tmp.at((int)tmp.total() / 2); + else return 0.5 *(tmp.at((int)tmp.total() / 2) + tmp.at((int)tmp.total() / 2 - 1)); } cv::Vec3d cv::internal::median3d(InputArray m) diff --git a/modules/calib3d/src/fisheye.hpp b/modules/calib3d/src/fisheye.hpp index fa4bfdb388..82c9f34598 100644 --- a/modules/calib3d/src/fisheye.hpp +++ b/modules/calib3d/src/fisheye.hpp @@ -1,9 +1,10 @@ #ifndef FISHEYE_INTERNAL_H #define FISHEYE_INTERNAL_H +#include "precomp.hpp" namespace cv { namespace internal { -struct IntrinsicParams +struct CV_EXPORTS IntrinsicParams { Vec2d f; Vec2d c; @@ -25,9 +26,9 @@ void projectPoints(cv::InputArray objectPoints, cv::OutputArray imagePoints, void ComputeExtrinsicRefine(const Mat& imagePoints, const Mat& objectPoints, Mat& rvec, Mat& tvec, Mat& J, const int MaxIter, const IntrinsicParams& param, const double thresh_cond); -Mat ComputeHomography(Mat m, Mat M); +CV_EXPORTS Mat ComputeHomography(Mat m, Mat M); -Mat NormalizePixels(const Mat& imagePoints, const IntrinsicParams& param); +CV_EXPORTS Mat NormalizePixels(const Mat& imagePoints, const IntrinsicParams& param); void InitExtrinsics(const Mat& _imagePoints, const Mat& _objectPoints, const IntrinsicParams& param, Mat& omckk, Mat& Tckk); @@ -39,7 +40,7 @@ void ComputeJacobians(InputArrayOfArrays objectPoints, InputArrayOfArrays imageP const IntrinsicParams& param, InputArray omc, InputArray Tc, const int& check_cond, const double& thresh_cond, Mat& JJ2_inv, Mat& ex3); -void EstimateUncertainties(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, +CV_EXPORTS void EstimateUncertainties(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const IntrinsicParams& params, InputArray omc, InputArray Tc, IntrinsicParams& errors, Vec2d& std_err, double thresh_cond, int check_cond, double& rms); diff --git a/modules/calib3d/test/test_fisheye.cpp b/modules/calib3d/test/test_fisheye.cpp index dfdba98fcf..7457a94127 100644 --- a/modules/calib3d/test/test_fisheye.cpp +++ b/modules/calib3d/test/test_fisheye.cpp @@ -1,5 +1,4 @@ #include "test_precomp.hpp" -#include #include #include "../src/fisheye.hpp" From fa292c3d8d8c57836e9d7d279a70ff126320259e Mon Sep 17 00:00:00 2001 From: Kazuki Matsuda Date: Mon, 6 Jan 2014 01:42:45 +0900 Subject: [PATCH 020/189] Implimentation "cv::Mat::forEach" I propose forEach method for cv::Mat and cv::Mat_. This is solution for the overhead of MatIterator_<_Tp>. I runs a test that micro opecode runs all over the pixel of cv::Mat_>. And this implementation 40% faster than the simple pointer, 80% faster than iterator. With OpenMP, 70% faster than simple pointer, 95% faster than iterator (Core i7 920). Above all, code is more readable. My test code is here. https://gist.github.com/kazuki-ma/8285876 Thanks. --- modules/core/doc/basic_structures.rst | 63 ++++++++++++ modules/core/include/opencv2/core/mat.hpp | 11 +++ modules/core/include/opencv2/core/mat.inl.hpp | 20 ++++ modules/core/include/opencv2/core/utility.hpp | 96 +++++++++++++++++++ modules/core/test/test_mat.cpp | 49 ++++++++++ 5 files changed, 239 insertions(+) diff --git a/modules/core/doc/basic_structures.rst b/modules/core/doc/basic_structures.rst index 459a6a9c98..80f75f1f45 100644 --- a/modules/core/doc/basic_structures.rst +++ b/modules/core/doc/basic_structures.rst @@ -2326,6 +2326,69 @@ Returns the matrix iterator and sets it to the after-last matrix element. The methods return the matrix read-only or read-write iterators, set to the point following the last matrix element. + +Mat::forEach +------------ +Invoke with arguments functor, and runs the functor over all matrix element. + +.. ocv:function:: template void Mat::forEach(Functor operation) + +.. ocv:function:: template void Mat::forEach(Functor operation) const + +The methos runs operation in parallel. Operation is passed by arguments. Operation have to be a function pointer, a function object or a lambda(C++11). + +All of below operation is equal. Put 0xFF to first channel of all matrix elements. :: + + Mat image(1920, 1080, CV_8UC3); + typedef cv::Point3_ Pixel; + + // first. raw pointer access. + for (int r = 0; r < image.rows; ++r) { + Pixel* ptr = image.ptr(0, r); + const Pixel* ptr_end = ptr + image.cols; + for (; ptr != ptr_end; ++ptr) { + ptr->x = 255; + } + } + + + // Using MatIterator. (Simple but there are a Iterator's overhead) + for (Pixel &p : cv::Mat_(image)) { + p.x = 255; + } + + + // Parallel execution with function object. + struct Operator { + void operator ()(Pixel &pixel, const int * position) { + pixel.x = 255; + } + }; + image.forEach(Operator()); + + + // Parallel execution using C++11 lambda. + image.forEach([](Pixel &p, const int * position) -> void { + p.x = 255; + }); + +position parameter is index of current pixel. :: + + // Creating 3D matrix (255 x 255 x 255) typed uint8_t, + // and initialize all elements by the value which equals elements position. + // i.e. pixels (x,y,z) = (1,2,3) is (b,g,r) = (1,2,3). + + int sizes[] = { 255, 255, 255 }; + typedef cv::Point3_ Pixel; + + Mat_ image = Mat::zeros(3, sizes, CV_8UC3); + + image.forEachWithPosition([&](Pixel& pixel, const int position[]) -> void{ + pixel.x = position[0]; + pixel.y = position[1]; + pixel.z = position[2]; + }); + Mat\_ ----- .. ocv:class:: Mat_ diff --git a/modules/core/include/opencv2/core/mat.hpp b/modules/core/include/opencv2/core/mat.hpp index d921f75651..4da7d158c0 100644 --- a/modules/core/include/opencv2/core/mat.hpp +++ b/modules/core/include/opencv2/core/mat.hpp @@ -897,6 +897,11 @@ public: template MatConstIterator_<_Tp> begin() const; template MatConstIterator_<_Tp> end() const; + //! template methods for for operation over all matrix elements. + // the operations take care of skipping gaps in the end of rows (if any) + template void forEach(const Functor& operation); + template void forEach(const Functor& operation) const; + enum { MAGIC_VAL = 0x42FF0000, AUTO_STEP = 0, CONTINUOUS_FLAG = CV_MAT_CONT_FLAG, SUBMATRIX_FLAG = CV_SUBMAT_FLAG }; enum { MAGIC_MASK = 0xFFFF0000, TYPE_MASK = 0x00000FFF, DEPTH_MASK = 7 }; @@ -931,6 +936,7 @@ public: MatStep step; protected: + template void forEach_impl(const Functor& operation); }; @@ -1040,6 +1046,11 @@ public: const_iterator begin() const; const_iterator end() const; + //! template methods for for operation over all matrix elements. + // the operations take care of skipping gaps in the end of rows (if any) + template void forEach(const Functor& operation); + template void forEach(const Functor& operation) const; + //! equivalent to Mat::create(_rows, _cols, DataType<_Tp>::type) void create(int _rows, int _cols); //! equivalent to Mat::create(_size, DataType<_Tp>::type) diff --git a/modules/core/include/opencv2/core/mat.inl.hpp b/modules/core/include/opencv2/core/mat.inl.hpp index d463eec671..be9ad02d5e 100644 --- a/modules/core/include/opencv2/core/mat.inl.hpp +++ b/modules/core/include/opencv2/core/mat.inl.hpp @@ -999,6 +999,17 @@ MatIterator_<_Tp> Mat::end() return it; } +template inline +void Mat::forEach(const Functor& operation) { + this->forEach_impl<_Tp>(operation); +}; + +template inline +void Mat::forEach(const Functor& operation) const { + // call as not const + (const_cast(this))->forEach(operation); +}; + template inline Mat::operator std::vector<_Tp>() const { @@ -1584,6 +1595,15 @@ MatIterator_<_Tp> Mat_<_Tp>::end() return Mat::end<_Tp>(); } +template template inline +void Mat_<_Tp>::forEach(const Functor& operation) { + Mat::forEach<_Tp, Functor>(operation); +} + +template template inline +void Mat_<_Tp>::forEach(const Functor& operation) const { + Mat::forEach<_Tp, Functor>(operation); +} ///////////////////////////// SparseMat ///////////////////////////// diff --git a/modules/core/include/opencv2/core/utility.hpp b/modules/core/include/opencv2/core/utility.hpp index 3e844ccf4f..b0552c6474 100644 --- a/modules/core/include/opencv2/core/utility.hpp +++ b/modules/core/include/opencv2/core/utility.hpp @@ -274,6 +274,102 @@ public: CV_EXPORTS void parallel_for_(const Range& range, const ParallelLoopBody& body, double nstripes=-1.); +/////////////////////////////// forEach method of cv::Mat //////////////////////////// +template inline +void Mat::forEach_impl(const Functor& operation) { + if (false) { + operation(*reinterpret_cast<_Tp*>(0), reinterpret_cast(NULL)); + // If your compiler fail in this line. + // Please check that your functor signature is + // (_Tp&, const int*) <- multidimential + // or (_Tp&, void*) <- in case of you don't need current idx. + } + + CV_Assert(this->total() / this->size[this->dims - 1] <= INT_MAX); + const int LINES = static_cast(this->total() / this->size[this->dims - 1]); + + class PixelOperationWrapper :public ParallelLoopBody + { + public: + PixelOperationWrapper(Mat_<_Tp>* const frame, const Functor& _operation) + : mat(frame), op(_operation) {}; + virtual ~PixelOperationWrapper(){}; + // ! Overloaded virtual operator + // convert range call to row call. + virtual void operator()(const Range &range) const { + const int DIMS = mat->dims; + const int COLS = mat->size[DIMS - 1]; + if (DIMS <= 2) { + for (int row = range.start; row < range.end; ++row) { + this->rowCall2(row, COLS); + } + } else { + std::vector idx(COLS); /// idx is modified in this->rowCall + idx[DIMS - 2] = range.start - 1; + + for (int line_num = range.start; line_num < range.end; ++line_num) { + idx[DIMS - 2]++; + for (int i = DIMS - 2; i >= 0; --i) { + if (idx[i] >= mat->size[i]) { + idx[i - 1] += idx[i] / mat->size[i]; + idx[i] %= mat->size[i]; + continue; // carry-over; + } + else { + break; + } + } + this->rowCall(&idx[0], COLS, DIMS); + } + } + }; + private: + Mat_<_Tp>* const mat; + const Functor op; + // ! Call operator for each elements in this row. + inline void rowCall(int* const idx, const int COLS, const int DIMS) const { + int &col = idx[DIMS - 1]; + col = 0; + _Tp* pixel = &(mat->template at<_Tp>(idx)); + + while (col < COLS) { + op(*pixel, const_cast(idx)); + pixel++; col++; + } + col = 0; + } + // ! Call operator for each elements in this row. 2d mat special version. + inline void rowCall2(const int row, const int COLS) const { + union Index{ + int body[2]; + operator const int*() const { + return reinterpret_cast(this); + } + int& operator[](const int i) { + return body[i]; + } + } idx = {{row, 0}}; + // Special union is needed to avoid + // "error: array subscript is above array bounds [-Werror=array-bounds]" + // when call the functor `op` such that access idx[3]. + + _Tp* pixel = &(mat->template at<_Tp>(idx)); + const _Tp* const pixel_end = pixel + COLS; + while(pixel < pixel_end) { + op(*pixel++, static_cast(idx)); + idx[1]++; + } + }; + PixelOperationWrapper& operator=(const PixelOperationWrapper &) { + CV_Assert(false); + // We can not remove this implementation because Visual Studio warning C4822. + return *this; + }; + }; + + parallel_for_(cv::Range(0, LINES), PixelOperationWrapper(reinterpret_cast*>(this), operation)); +}; + /////////////////////////// Synchronization Primitives /////////////////////////////// class CV_EXPORTS Mutex diff --git a/modules/core/test/test_mat.cpp b/modules/core/test/test_mat.cpp index ac27bd7b53..18a93cd2b1 100644 --- a/modules/core/test/test_mat.cpp +++ b/modules/core/test/test_mat.cpp @@ -649,6 +649,16 @@ static void setValue(SparseMat& M, const int* idx, double value, RNG& rng) CV_Error(CV_StsUnsupportedFormat, ""); } +template +struct InitializerFunctor{ + /// Initializer for cv::Mat::forEach test + void operator()(Pixel & pixel, const int * idx) const { + pixel.x = idx[0]; + pixel.y = idx[1]; + pixel.z = idx[2]; + } +}; + void Core_ArrayOpTest::run( int /* start_from */) { int errcount = 0; @@ -686,6 +696,45 @@ void Core_ArrayOpTest::run( int /* start_from */) errcount++; } } + // test cv::Mat::forEach + { + const int dims[3] = { 101, 107, 7 }; + typedef cv::Point3i Pixel; + + cv::Mat a = cv::Mat::zeros(3, dims, CV_32SC3); + InitializerFunctor initializer; + + a.forEach(initializer); + + uint64 total = 0; + bool error_reported = false; + for (int i0 = 0; i0 < dims[0]; ++i0) { + for (int i1 = 0; i1 < dims[1]; ++i1) { + for (int i2 = 0; i2 < dims[2]; ++i2) { + Pixel& pixel = a.at(i0, i1, i2); + if (pixel.x != i0 || pixel.y != i1 || pixel.z != i2) { + if (!error_reported) { + ts->printf(cvtest::TS::LOG, "forEach is not correct.\n" + "First error detected at (%d, %d, %d).\n", pixel.x, pixel.y, pixel.z); + error_reported = true; + } + errcount++; + } + total += pixel.x; + total += pixel.y; + total += pixel.z; + } + } + } + uint64 total2 = 0; + for (size_t i = 0; i < sizeof(dims) / sizeof(dims[0]); ++i) { + total2 += ((dims[i] - 1) * dims[i] / 2) * dims[0] * dims[1] * dims[2] / dims[i]; + } + if (total != total2) { + ts->printf(cvtest::TS::LOG, "forEach is not correct because total is invalid.\n"); + errcount++; + } + } RNG rng; const int MAX_DIM = 5, MAX_DIM_SZ = 10; From a46f119fdf1f0dc05608e2e6d8a120325650c13c Mon Sep 17 00:00:00 2001 From: Konstantin Matskevich Date: Mon, 19 May 2014 09:54:15 +0400 Subject: [PATCH 021/189] docs fixes --- modules/contrib/doc/facerec/facerec_api.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/contrib/doc/facerec/facerec_api.rst b/modules/contrib/doc/facerec/facerec_api.rst index 8de4359c52..4c91bb7cb9 100644 --- a/modules/contrib/doc/facerec/facerec_api.rst +++ b/modules/contrib/doc/facerec/facerec_api.rst @@ -310,7 +310,7 @@ FaceRecognizer::setLabelsInfo Sets string information about labels into the model. .. ocv:function:: void FaceRecognizer::setLabelsInfo(const std::map& labelsInfo) = 0 -Information about the label loads as a pair label-its info. +Information about the label loads as a pair "label id - string info". FaceRecognizer::getLabelInfo ---------------------------- @@ -318,7 +318,7 @@ FaceRecognizer::getLabelInfo Gets string information by label. .. ocv:function:: string FaceRecognizer::getLabelInfo(int label) const = 0 -If there is no such label in the model or there is no information about the label it will return an empty string. +If an unknown label id is provided or there is no label information assosiated with the specified label id the method returns an empty string. FaceRecognizer::getLabelsByString --------------------------------- @@ -326,7 +326,7 @@ Gets vector of labels by string. .. ocv:function:: vector FaceRecognizer::getLabelsByString(const string& str) = 0 -If the string contained in a string information for a label, this label will be pushed into the vector. +The function searches for the labels containing the specified substring in the associated string info. createEigenFaceRecognizer ------------------------- From 651b13f72a786ee26fe6c12ee6a305fc0f6b7d71 Mon Sep 17 00:00:00 2001 From: Ilya Krylov Date: Mon, 19 May 2014 17:55:32 +0400 Subject: [PATCH 022/189] Refactored class Fisheye to namespace fisheye --- .../include/opencv2/calib3d/calib3d.hpp | 26 ++--- modules/calib3d/src/fisheye.cpp | 46 ++++---- modules/calib3d/test/test_fisheye.cpp | 110 +++++++++--------- 3 files changed, 90 insertions(+), 92 deletions(-) diff --git a/modules/calib3d/include/opencv2/calib3d/calib3d.hpp b/modules/calib3d/include/opencv2/calib3d/calib3d.hpp index 0b048fe8a5..5e9cde8ec0 100644 --- a/modules/calib3d/include/opencv2/calib3d/calib3d.hpp +++ b/modules/calib3d/include/opencv2/calib3d/calib3d.hpp @@ -745,10 +745,8 @@ CV_EXPORTS_W int estimateAffine3D(InputArray src, InputArray dst, OutputArray out, OutputArray inliers, double ransacThreshold=3, double confidence=0.99); -class CV_EXPORTS Fisheye +namespace fisheye { -public: - enum{ CALIB_USE_INTRINSIC_GUESS = 1, CALIB_RECOMPUTE_EXTRINSIC = 2, @@ -762,50 +760,50 @@ public: }; //! projects 3D points using fisheye model - static void projectPoints(InputArray objectPoints, OutputArray imagePoints, const Affine3d& affine, + CV_EXPORTS void projectPoints(InputArray objectPoints, OutputArray imagePoints, const Affine3d& affine, InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()); //! projects points using fisheye model - static void projectPoints(InputArray objectPoints, OutputArray imagePoints, InputArray rvec, InputArray tvec, + CV_EXPORTS void projectPoints(InputArray objectPoints, OutputArray imagePoints, InputArray rvec, InputArray tvec, InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()); //! distorts 2D points using fisheye model - static void distortPoints(InputArray undistorted, OutputArray distorted, InputArray K, InputArray D, double alpha = 0); + CV_EXPORTS void distortPoints(InputArray undistorted, OutputArray distorted, InputArray K, InputArray D, double alpha = 0); //! undistorts 2D points using fisheye model - static void undistortPoints(InputArray distorted, OutputArray undistorted, + CV_EXPORTS void undistortPoints(InputArray distorted, OutputArray undistorted, InputArray K, InputArray D, InputArray R = noArray(), InputArray P = noArray()); //! computing undistortion and rectification maps for image transform by cv::remap() //! If D is empty zero distortion is used, if R or P is empty identity matrixes are used - static void initUndistortRectifyMap(InputArray K, InputArray D, InputArray R, InputArray P, + CV_EXPORTS void initUndistortRectifyMap(InputArray K, InputArray D, InputArray R, InputArray P, const cv::Size& size, int m1type, OutputArray map1, OutputArray map2); //! undistorts image, optionally changes resolution and camera matrix. If Knew zero identity matrix is used - static void undistortImage(InputArray distorted, OutputArray undistorted, + CV_EXPORTS void undistortImage(InputArray distorted, OutputArray undistorted, InputArray K, InputArray D, InputArray Knew = cv::noArray(), const Size& new_size = Size()); //! estimates new camera matrix for undistortion or rectification - static void estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R, + CV_EXPORTS void estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R, OutputArray P, double balance = 0.0, const Size& new_size = Size(), double fov_scale = 1.0); //! performs camera calibaration - static double calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size, + CV_EXPORTS double calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size, InputOutputArray K, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags = 0, TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)); //! stereo rectification estimation - static void stereoRectify(InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size &imageSize, InputArray R, InputArray tvec, + CV_EXPORTS void stereoRectify(InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size &imageSize, InputArray R, InputArray tvec, OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, int flags, const Size &newImageSize = Size(), double balance = 0.0, double fov_scale = 1.0); //! performs stereo calibaration - static double stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, + CV_EXPORTS double stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, Size imageSize, OutputArray R, OutputArray T, int flags = CALIB_FIX_INTRINSIC, TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)); -}; +} } diff --git a/modules/calib3d/src/fisheye.cpp b/modules/calib3d/src/fisheye.cpp index da7a8394f0..34d11d1fa8 100644 --- a/modules/calib3d/src/fisheye.cpp +++ b/modules/calib3d/src/fisheye.cpp @@ -14,15 +14,15 @@ namespace cv { namespace }} ////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/// cv::Fisheye::projectPoints +/// cv::fisheye::projectPoints -void cv::Fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints, const Affine3d& affine, +void cv::fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints, const Affine3d& affine, InputArray K, InputArray D, double alpha, OutputArray jacobian) { projectPoints(objectPoints, imagePoints, affine.rvec(), affine.translation(), K, D, alpha, jacobian); } -void cv::Fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints, InputArray _rvec, +void cv::fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints, InputArray _rvec, InputArray _tvec, InputArray _K, InputArray _D, double alpha, OutputArray jacobian) { // will support only 3-channel data now for points @@ -202,9 +202,9 @@ void cv::Fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints } ////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/// cv::Fisheye::distortPoints +/// cv::fisheye::distortPoints -void cv::Fisheye::distortPoints(InputArray undistorted, OutputArray distorted, InputArray K, InputArray D, double alpha) +void cv::fisheye::distortPoints(InputArray undistorted, OutputArray distorted, InputArray K, InputArray D, double alpha) { // will support only 2-channel data now for points CV_Assert(undistorted.type() == CV_32FC2 || undistorted.type() == CV_64FC2); @@ -264,9 +264,9 @@ void cv::Fisheye::distortPoints(InputArray undistorted, OutputArray distorted, I } ////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/// cv::Fisheye::undistortPoints +/// cv::fisheye::undistortPoints -void cv::Fisheye::undistortPoints( InputArray distorted, OutputArray undistorted, InputArray _K, InputArray _D, InputArray _R, InputArray _P) +void cv::fisheye::undistortPoints( InputArray distorted, OutputArray undistorted, InputArray _K, InputArray _D, InputArray _R, InputArray _P) { // will support only 2-channel data now for points CV_Assert(distorted.type() == CV_32FC2 || distorted.type() == CV_64FC2); @@ -353,9 +353,9 @@ void cv::Fisheye::undistortPoints( InputArray distorted, OutputArray undistorted } ////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/// cv::Fisheye::undistortPoints +/// cv::fisheye::undistortPoints -void cv::Fisheye::initUndistortRectifyMap( InputArray _K, InputArray _D, InputArray _R, InputArray _P, +void cv::fisheye::initUndistortRectifyMap( InputArray _K, InputArray _D, InputArray _R, InputArray _P, const cv::Size& size, int m1type, OutputArray map1, OutputArray map2 ) { CV_Assert( m1type == CV_16SC2 || m1type == CV_32F || m1type <=0 ); @@ -449,23 +449,23 @@ void cv::Fisheye::initUndistortRectifyMap( InputArray _K, InputArray _D, InputAr } ////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/// cv::Fisheye::undistortImage +/// cv::fisheye::undistortImage -void cv::Fisheye::undistortImage(InputArray distorted, OutputArray undistorted, +void cv::fisheye::undistortImage(InputArray distorted, OutputArray undistorted, InputArray K, InputArray D, InputArray Knew, const Size& new_size) { Size size = new_size.area() != 0 ? new_size : distorted.size(); cv::Mat map1, map2; - initUndistortRectifyMap(K, D, cv::Matx33d::eye(), Knew, size, CV_16SC2, map1, map2 ); + fisheye::initUndistortRectifyMap(K, D, cv::Matx33d::eye(), Knew, size, CV_16SC2, map1, map2 ); cv::remap(distorted, undistorted, map1, map2, INTER_LINEAR, BORDER_CONSTANT); } ////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/// cv::Fisheye::estimateNewCameraMatrixForUndistortRectify +/// cv::fisheye::estimateNewCameraMatrixForUndistortRectify -void cv::Fisheye::estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R, +void cv::fisheye::estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R, OutputArray P, double balance, const Size& new_size, double fov_scale) { CV_Assert( K.size() == Size(3, 3) && (K.depth() == CV_32F || K.depth() == CV_64F)); @@ -495,7 +495,7 @@ void cv::Fisheye::estimateNewCameraMatrixForUndistortRectify(InputArray K, Input } #endif - undistortPoints(points, points, K, D, R); + fisheye::undistortPoints(points, points, K, D, R); cv::Scalar center_mass = mean(points); cv::Vec2d cn(center_mass.val); @@ -560,9 +560,9 @@ void cv::Fisheye::estimateNewCameraMatrixForUndistortRectify(InputArray K, Input ////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/// cv::Fisheye::stereoRectify +/// cv::fisheye::stereoRectify -void cv::Fisheye::stereoRectify( InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size& imageSize, +void cv::fisheye::stereoRectify( InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size& imageSize, InputArray _R, InputArray _tvec, OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, int flags, const Size& newImageSize, double balance, double fov_scale) { @@ -642,9 +642,9 @@ void cv::Fisheye::stereoRectify( InputArray K1, InputArray D1, InputArray K2, In } ////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/// cv::Fisheye::calibrate +/// cv::fisheye::calibrate -double cv::Fisheye::calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size, +double cv::fisheye::calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size, InputOutputArray K, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags , cv::TermCriteria criteria) { @@ -758,9 +758,9 @@ double cv::Fisheye::calibrate(InputArrayOfArrays objectPoints, InputArrayOfArray } ////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/// cv::Fisheye::stereoCalibrate +/// cv::fisheye::stereoCalibrate -double cv::Fisheye::stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, +double cv::fisheye::stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, Size imageSize, OutputArray R, OutputArray T, int flags, TermCriteria criteria) { @@ -1094,7 +1094,7 @@ void cv::internal::projectPoints(cv::InputArray objectPoints, cv::OutputArray im Matx33d K(param.f[0], param.f[0] * param.alpha, param.c[0], 0, param.f[1], param.c[1], 0, 0, 1); - Fisheye::projectPoints(objectPoints, imagePoints, _rvec, _tvec, K, param.k, param.alpha, jacobian); + fisheye::projectPoints(objectPoints, imagePoints, _rvec, _tvec, K, param.k, param.alpha, jacobian); } void cv::internal::ComputeExtrinsicRefine(const Mat& imagePoints, const Mat& objectPoints, Mat& rvec, @@ -1251,7 +1251,7 @@ cv::Mat cv::internal::NormalizePixels(const Mat& imagePoints, const IntrinsicPar ptr_d[i] = (ptr[i] - param.c).mul(Vec2d(1.0 / param.f[0], 1.0 / param.f[1])); ptr_d[i][0] = ptr_d[i][0] - param.alpha * ptr_d[i][1]; } - cv::Fisheye::undistortPoints(distorted, undistorted, Matx33d::eye(), param.k); + cv::fisheye::undistortPoints(distorted, undistorted, Matx33d::eye(), param.k); return undistorted; } diff --git a/modules/calib3d/test/test_fisheye.cpp b/modules/calib3d/test/test_fisheye.cpp index 7457a94127..ed53ec415e 100644 --- a/modules/calib3d/test/test_fisheye.cpp +++ b/modules/calib3d/test/test_fisheye.cpp @@ -2,7 +2,7 @@ #include #include "../src/fisheye.hpp" -class FisheyeTest : public ::testing::Test { +class fisheyeTest : public ::testing::Test { protected: const static cv::Size imageSize; @@ -26,7 +26,7 @@ protected: //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// TESTS:: -TEST_F(FisheyeTest, projectPoints) +TEST_F(fisheyeTest, projectPoints) { double cols = this->imageSize.width, rows = this->imageSize.height; @@ -44,21 +44,21 @@ TEST_F(FisheyeTest, projectPoints) pts[k++] = (point - c) * 0.85 + c; } - cv::Fisheye::undistortPoints(distorted0, undist1, this->K, this->D); + cv::fisheye::undistortPoints(distorted0, undist1, this->K, this->D); cv::Vec2d* u1 = undist1.ptr(); cv::Vec3d* u2 = undist2.ptr(); for(int i = 0; i < (int)distorted0.total(); ++i) u2[i] = cv::Vec3d(u1[i][0], u1[i][1], 1.0); - cv::Fisheye::distortPoints(undist1, distorted1, this->K, this->D); - cv::Fisheye::projectPoints(undist2, distorted2, cv::Vec3d::all(0), cv::Vec3d::all(0), this->K, this->D); + cv::fisheye::distortPoints(undist1, distorted1, this->K, this->D); + cv::fisheye::projectPoints(undist2, distorted2, cv::Vec3d::all(0), cv::Vec3d::all(0), this->K, this->D); EXPECT_MAT_NEAR(distorted0, distorted1, 1e-10); EXPECT_MAT_NEAR(distorted0, distorted2, 1e-10); } -TEST_F(FisheyeTest, undistortImage) +TEST_F(fisheyeTest, undistortImage) { cv::Matx33d K = this->K; cv::Mat D = cv::Mat(this->D); @@ -68,7 +68,7 @@ TEST_F(FisheyeTest, undistortImage) { newK(0, 0) = 100; newK(1, 1) = 100; - cv::Fisheye::undistortImage(distorted, undistorted, K, D, newK); + cv::fisheye::undistortImage(distorted, undistorted, K, D, newK); cv::Mat correct = cv::imread(combine(datasets_repository_path, "new_f_100.png")); if (correct.empty()) CV_Assert(cv::imwrite(combine(datasets_repository_path, "new_f_100.png"), undistorted)); @@ -77,8 +77,8 @@ TEST_F(FisheyeTest, undistortImage) } { double balance = 1.0; - cv::Fisheye::estimateNewCameraMatrixForUndistortRectify(K, D, distorted.size(), cv::noArray(), newK, balance); - cv::Fisheye::undistortImage(distorted, undistorted, K, D, newK); + cv::fisheye::estimateNewCameraMatrixForUndistortRectify(K, D, distorted.size(), cv::noArray(), newK, balance); + cv::fisheye::undistortImage(distorted, undistorted, K, D, newK); cv::Mat correct = cv::imread(combine(datasets_repository_path, "balance_1.0.png")); if (correct.empty()) CV_Assert(cv::imwrite(combine(datasets_repository_path, "balance_1.0.png"), undistorted)); @@ -88,8 +88,8 @@ TEST_F(FisheyeTest, undistortImage) { double balance = 0.0; - cv::Fisheye::estimateNewCameraMatrixForUndistortRectify(K, D, distorted.size(), cv::noArray(), newK, balance); - cv::Fisheye::undistortImage(distorted, undistorted, K, D, newK); + cv::fisheye::estimateNewCameraMatrixForUndistortRectify(K, D, distorted.size(), cv::noArray(), newK, balance); + cv::fisheye::undistortImage(distorted, undistorted, K, D, newK); cv::Mat correct = cv::imread(combine(datasets_repository_path, "balance_0.0.png")); if (correct.empty()) CV_Assert(cv::imwrite(combine(datasets_repository_path, "balance_0.0.png"), undistorted)); @@ -98,7 +98,7 @@ TEST_F(FisheyeTest, undistortImage) } } -TEST_F(FisheyeTest, jacobians) +TEST_F(fisheyeTest, jacobians) { int n = 10; cv::Mat X(1, n, CV_64FC3); @@ -135,14 +135,14 @@ TEST_F(FisheyeTest, jacobians) 0, 0, 1); cv::Mat jacobians; - cv::Fisheye::projectPoints(X, x1, om, T, K, k, alpha, jacobians); + cv::fisheye::projectPoints(X, x1, om, T, K, k, alpha, jacobians); //test on T: cv::Mat dT(3, 1, CV_64FC1); r.fill(dT, cv::RNG::NORMAL, 0, 1); dT *= 1e-9*cv::norm(T); cv::Mat T2 = T + dT; - cv::Fisheye::projectPoints(X, x2, om, T2, K, k, alpha, cv::noArray()); + cv::fisheye::projectPoints(X, x2, om, T2, K, k, alpha, cv::noArray()); xpred = x1 + cv::Mat(jacobians.colRange(11,14) * dT).reshape(2, 1); CV_Assert (cv::norm(x2 - xpred) < 1e-10); @@ -151,7 +151,7 @@ TEST_F(FisheyeTest, jacobians) r.fill(dom, cv::RNG::NORMAL, 0, 1); dom *= 1e-9*cv::norm(om); cv::Mat om2 = om + dom; - cv::Fisheye::projectPoints(X, x2, om2, T, K, k, alpha, cv::noArray()); + cv::fisheye::projectPoints(X, x2, om2, T, K, k, alpha, cv::noArray()); xpred = x1 + cv::Mat(jacobians.colRange(8,11) * dom).reshape(2, 1); CV_Assert (cv::norm(x2 - xpred) < 1e-10); @@ -160,7 +160,7 @@ TEST_F(FisheyeTest, jacobians) r.fill(df, cv::RNG::NORMAL, 0, 1); df *= 1e-9*cv::norm(f); cv::Matx33d K2 = K + cv::Matx33d(df.at(0), df.at(0) * alpha, 0, 0, df.at(1), 0, 0, 0, 0); - cv::Fisheye::projectPoints(X, x2, om, T, K2, k, alpha, cv::noArray()); + cv::fisheye::projectPoints(X, x2, om, T, K2, k, alpha, cv::noArray()); xpred = x1 + cv::Mat(jacobians.colRange(0,2) * df).reshape(2, 1); CV_Assert (cv::norm(x2 - xpred) < 1e-10); @@ -169,7 +169,7 @@ TEST_F(FisheyeTest, jacobians) r.fill(dc, cv::RNG::NORMAL, 0, 1); dc *= 1e-9*cv::norm(c); K2 = K + cv::Matx33d(0, 0, dc.at(0), 0, 0, dc.at(1), 0, 0, 0); - cv::Fisheye::projectPoints(X, x2, om, T, K2, k, alpha, cv::noArray()); + cv::fisheye::projectPoints(X, x2, om, T, K2, k, alpha, cv::noArray()); xpred = x1 + cv::Mat(jacobians.colRange(2,4) * dc).reshape(2, 1); CV_Assert (cv::norm(x2 - xpred) < 1e-10); @@ -178,7 +178,7 @@ TEST_F(FisheyeTest, jacobians) r.fill(dk, cv::RNG::NORMAL, 0, 1); dk *= 1e-9*cv::norm(k); cv::Mat k2 = k + dk; - cv::Fisheye::projectPoints(X, x2, om, T, K, k2, alpha, cv::noArray()); + cv::fisheye::projectPoints(X, x2, om, T, K, k2, alpha, cv::noArray()); xpred = x1 + cv::Mat(jacobians.colRange(4,8) * dk).reshape(2, 1); CV_Assert (cv::norm(x2 - xpred) < 1e-10); @@ -188,12 +188,12 @@ TEST_F(FisheyeTest, jacobians) dalpha *= 1e-9*cv::norm(f); double alpha2 = alpha + dalpha.at(0); K2 = K + cv::Matx33d(0, f.at(0) * dalpha.at(0), 0, 0, 0, 0, 0, 0, 0); - cv::Fisheye::projectPoints(X, x2, om, T, K, k, alpha2, cv::noArray()); + cv::fisheye::projectPoints(X, x2, om, T, K, k, alpha2, cv::noArray()); xpred = x1 + cv::Mat(jacobians.col(14) * dalpha).reshape(2, 1); CV_Assert (cv::norm(x2 - xpred) < 1e-10); } -TEST_F(FisheyeTest, Calibration) +TEST_F(fisheyeTest, Calibration) { const int n_images = 34; @@ -214,21 +214,21 @@ TEST_F(FisheyeTest, Calibration) fs_object.release(); int flag = 0; - flag |= cv::Fisheye::CALIB_RECOMPUTE_EXTRINSIC; - flag |= cv::Fisheye::CALIB_CHECK_COND; - flag |= cv::Fisheye::CALIB_FIX_SKEW; + flag |= cv::fisheye::CALIB_RECOMPUTE_EXTRINSIC; + flag |= cv::fisheye::CALIB_CHECK_COND; + flag |= cv::fisheye::CALIB_FIX_SKEW; cv::Matx33d K; cv::Vec4d D; - cv::Fisheye::calibrate(objectPoints, imagePoints, imageSize, K, D, + cv::fisheye::calibrate(objectPoints, imagePoints, imageSize, K, D, cv::noArray(), cv::noArray(), flag, cv::TermCriteria(3, 20, 1e-6)); EXPECT_MAT_NEAR(K, this->K, 1e-10); EXPECT_MAT_NEAR(D, this->D, 1e-10); } -TEST_F(FisheyeTest, Homography) +TEST_F(fisheyeTest, Homography) { const int n_images = 1; @@ -289,7 +289,7 @@ TEST_F(FisheyeTest, Homography) EXPECT_MAT_NEAR(std_err, correct_std_err, 1e-12); } -TEST_F(FisheyeTest, EtimateUncertainties) +TEST_F(fisheyeTest, EtimateUncertainties) { const int n_images = 34; @@ -310,16 +310,16 @@ TEST_F(FisheyeTest, EtimateUncertainties) fs_object.release(); int flag = 0; - flag |= cv::Fisheye::CALIB_RECOMPUTE_EXTRINSIC; - flag |= cv::Fisheye::CALIB_CHECK_COND; - flag |= cv::Fisheye::CALIB_FIX_SKEW; + flag |= cv::fisheye::CALIB_RECOMPUTE_EXTRINSIC; + flag |= cv::fisheye::CALIB_CHECK_COND; + flag |= cv::fisheye::CALIB_FIX_SKEW; cv::Matx33d K; cv::Vec4d D; std::vector rvec; std::vector tvec; - cv::Fisheye::calibrate(objectPoints, imagePoints, imageSize, K, D, + cv::fisheye::calibrate(objectPoints, imagePoints, imageSize, K, D, rvec, tvec, flag, cv::TermCriteria(3, 20, 1e-6)); cv::internal::IntrinsicParams param, errors; @@ -345,7 +345,7 @@ TEST_F(FisheyeTest, EtimateUncertainties) CV_Assert(errors.alpha == 0); } -TEST_F(FisheyeTest, rectify) +TEST_F(fisheyeTest, rectify) { const std::string folder =combine(datasets_repository_path, "calib-3_stereo_from_JY"); @@ -358,13 +358,13 @@ TEST_F(FisheyeTest, rectify) double balance = 0.0, fov_scale = 1.1; cv::Mat R1, R2, P1, P2, Q; - cv::Fisheye::stereoRectify(K1, D1, K2, D2, calibration_size, R, T, R1, R2, P1, P2, Q, + cv::fisheye::stereoRectify(K1, D1, K2, D2, calibration_size, R, T, R1, R2, P1, P2, Q, cv::CALIB_ZERO_DISPARITY, requested_size, balance, fov_scale); cv::Mat lmapx, lmapy, rmapx, rmapy; //rewrite for fisheye - cv::Fisheye::initUndistortRectifyMap(K1, D1, R1, P1, requested_size, CV_32F, lmapx, lmapy); - cv::Fisheye::initUndistortRectifyMap(K2, D2, R2, P2, requested_size, CV_32F, rmapx, rmapy); + cv::fisheye::initUndistortRectifyMap(K1, D1, R1, P1, requested_size, CV_32F, lmapx, lmapy); + cv::fisheye::initUndistortRectifyMap(K2, D2, R2, P2, requested_size, CV_32F, rmapx, rmapy); cv::Mat l, r, lundist, rundist; cv::VideoCapture lcap(combine(folder, "left/stereo_pair_%03d.jpg")), @@ -394,7 +394,7 @@ TEST_F(FisheyeTest, rectify) } } -TEST_F(FisheyeTest, stereoCalibrate) +TEST_F(fisheyeTest, stereoCalibrate) { const int n_images = 34; @@ -427,12 +427,12 @@ TEST_F(FisheyeTest, stereoCalibrate) cv::Vec4d D1, D2; int flag = 0; - flag |= cv::Fisheye::CALIB_RECOMPUTE_EXTRINSIC; - flag |= cv::Fisheye::CALIB_CHECK_COND; - flag |= cv::Fisheye::CALIB_FIX_SKEW; - // flag |= cv::Fisheye::CALIB_FIX_INTRINSIC; + flag |= cv::fisheye::CALIB_RECOMPUTE_EXTRINSIC; + flag |= cv::fisheye::CALIB_CHECK_COND; + flag |= cv::fisheye::CALIB_FIX_SKEW; + // flag |= cv::fisheye::CALIB_FIX_INTRINSIC; - cv::Fisheye::stereoCalibrate(objectPoints, leftPoints, rightPoints, + cv::fisheye::stereoCalibrate(objectPoints, leftPoints, rightPoints, K1, D1, K2, D2, imageSize, R, T, flag, cv::TermCriteria(3, 12, 0)); @@ -462,7 +462,7 @@ TEST_F(FisheyeTest, stereoCalibrate) } -TEST_F(FisheyeTest, stereoCalibrateFixIntrinsic) +TEST_F(fisheyeTest, stereoCalibrateFixIntrinsic) { const int n_images = 34; @@ -494,10 +494,10 @@ TEST_F(FisheyeTest, stereoCalibrateFixIntrinsic) cv::Vec3d T; int flag = 0; - flag |= cv::Fisheye::CALIB_RECOMPUTE_EXTRINSIC; - flag |= cv::Fisheye::CALIB_CHECK_COND; - flag |= cv::Fisheye::CALIB_FIX_SKEW; - flag |= cv::Fisheye::CALIB_FIX_INTRINSIC; + flag |= cv::fisheye::CALIB_RECOMPUTE_EXTRINSIC; + flag |= cv::fisheye::CALIB_CHECK_COND; + flag |= cv::fisheye::CALIB_FIX_SKEW; + flag |= cv::fisheye::CALIB_FIX_INTRINSIC; cv::Matx33d K1 (561.195925927249, 0, 621.282400272412, 0, 562.849402029712, 380.555455380889, @@ -510,7 +510,7 @@ TEST_F(FisheyeTest, stereoCalibrateFixIntrinsic) cv::Vec4d D1 (-7.44253716539556e-05, -0.00702662033932424, 0.00737569823650885, -0.00342230256441771); cv::Vec4d D2 (-0.0130785435677431, 0.0284434505383497, -0.0360333869900506, 0.0144724062347222); - cv::Fisheye::stereoCalibrate(objectPoints, leftPoints, rightPoints, + cv::fisheye::stereoCalibrate(objectPoints, leftPoints, rightPoints, K1, D1, K2, D2, imageSize, R, T, flag, cv::TermCriteria(3, 12, 0)); @@ -525,23 +525,23 @@ TEST_F(FisheyeTest, stereoCalibrateFixIntrinsic) } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/// FisheyeTest:: +/// fisheyeTest:: -const cv::Size FisheyeTest::imageSize(1280, 800); +const cv::Size fisheyeTest::imageSize(1280, 800); -const cv::Matx33d FisheyeTest::K(558.478087865323, 0, 620.458515360843, +const cv::Matx33d fisheyeTest::K(558.478087865323, 0, 620.458515360843, 0, 560.506767351568, 381.939424848348, 0, 0, 1); -const cv::Vec4d FisheyeTest::D(-0.0014613319981768, -0.00329861110580401, 0.00605760088590183, -0.00374209380722371); +const cv::Vec4d fisheyeTest::D(-0.0014613319981768, -0.00329861110580401, 0.00605760088590183, -0.00374209380722371); -const cv::Matx33d FisheyeTest::R ( 9.9756700084424932e-01, 6.9698277640183867e-02, 1.4929569991321144e-03, +const cv::Matx33d fisheyeTest::R ( 9.9756700084424932e-01, 6.9698277640183867e-02, 1.4929569991321144e-03, -6.9711825162322980e-02, 9.9748249845531767e-01, 1.2997180766418455e-02, -5.8331736398316541e-04,-1.3069635393884985e-02, 9.9991441852366736e-01); -const cv::Vec3d FisheyeTest::T(-9.9217369356044638e-02, 3.1741831972356663e-03, 1.8551007952921010e-04); +const cv::Vec3d fisheyeTest::T(-9.9217369356044638e-02, 3.1741831972356663e-03, 1.8551007952921010e-04); -std::string FisheyeTest::combine(const std::string& _item1, const std::string& _item2) +std::string fisheyeTest::combine(const std::string& _item1, const std::string& _item2) { std::string item1 = _item1, item2 = _item2; std::replace(item1.begin(), item1.end(), '\\', '/'); @@ -557,7 +557,7 @@ std::string FisheyeTest::combine(const std::string& _item1, const std::string& _ return item1 + (last != '/' ? "/" : "") + item2; } -std::string FisheyeTest::combine_format(const std::string& item1, const std::string& item2, ...) +std::string fisheyeTest::combine_format(const std::string& item1, const std::string& item2, ...) { std::string fmt = combine(item1, item2); char buffer[1 << 16]; @@ -568,7 +568,7 @@ std::string FisheyeTest::combine_format(const std::string& item1, const std::str return std::string(buffer); } -cv::Mat FisheyeTest::mergeRectification(const cv::Mat& l, const cv::Mat& r) +cv::Mat fisheyeTest::mergeRectification(const cv::Mat& l, const cv::Mat& r) { CV_Assert(l.type() == r.type() && l.size() == r.size()); cv::Mat merged(l.rows, l.cols * 2, l.type()); From 0d2fab86b4240202ead7cc6e746b8b8203755d50 Mon Sep 17 00:00:00 2001 From: Ilya Krylov Date: Mon, 19 May 2014 18:16:00 +0400 Subject: [PATCH 023/189] Changed documentation for namespace fisheye --- ...mera_calibration_and_3d_reconstruction.rst | 98 +++++++++---------- 1 file changed, 47 insertions(+), 51 deletions(-) diff --git a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst index 5f64125eba..ae6aa27f83 100644 --- a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst +++ b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst @@ -1487,57 +1487,53 @@ The function reconstructs 3-dimensional points (in homogeneous coordinates) by u :ocv:func:`reprojectImageTo3D` -Fisheye +fisheye ---------- -.. ocv:class:: Fisheye +The methods in this namespace use a so-called fisheye camera model. :: -The methods in this class use a so-called fisheye camera model. :: - - class Fisheye + namespace fisheye { - public: - //! projects 3D points using fisheye model - static void projectPoints(InputArray objectPoints, OutputArray imagePoints, const Affine3d& affine, + void projectPoints(InputArray objectPoints, OutputArray imagePoints, const Affine3d& affine, InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()); //! projects points using fisheye model - static void projectPoints(InputArray objectPoints, OutputArray imagePoints, InputArray rvec, InputArray tvec, + void projectPoints(InputArray objectPoints, OutputArray imagePoints, InputArray rvec, InputArray tvec, InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()); //! distorts 2D points using fisheye model - static void distortPoints(InputArray undistorted, OutputArray distorted, InputArray K, InputArray D, double alpha = 0); + void distortPoints(InputArray undistorted, OutputArray distorted, InputArray K, InputArray D, double alpha = 0); //! undistorts 2D points using fisheye model - static void undistortPoints(InputArray distorted, OutputArray undistorted, + void undistortPoints(InputArray distorted, OutputArray undistorted, InputArray K, InputArray D, InputArray R = noArray(), InputArray P = noArray()); //! computing undistortion and rectification maps for image transform by cv::remap() //! If D is empty zero distortion is used, if R or P is empty identity matrixes are used - static void initUndistortRectifyMap(InputArray K, InputArray D, InputArray R, InputArray P, + void initUndistortRectifyMap(InputArray K, InputArray D, InputArray R, InputArray P, const cv::Size& size, int m1type, OutputArray map1, OutputArray map2); //! undistorts image, optionally changes resolution and camera matrix. - static void undistortImage(InputArray distorted, OutputArray undistorted, + void undistortImage(InputArray distorted, OutputArray undistorted, InputArray K, InputArray D, InputArray Knew = cv::noArray(), const Size& new_size = Size()); //! estimates new camera matrix for undistortion or rectification - static void estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R, + void estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R, OutputArray P, double balance = 0.0, const Size& new_size = Size(), double fov_scale = 1.0); //! performs camera calibaration - static double calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size, + double calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size, InputOutputArray K, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags = 0, TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)); //! stereo rectification estimation - static void stereoRectify(InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size &imageSize, InputArray R, InputArray tvec, + void stereoRectify(InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size &imageSize, InputArray R, InputArray tvec, OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, int flags, const Size &newImageSize = Size(), double balance = 0.0, double fov_scale = 1.0); //! performs stereo calibration - static double stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, + double stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, Size imageSize, OutputArray R, OutputArray T, int flags = CALIB_FIX_INTRINSIC, TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)); @@ -1594,13 +1590,13 @@ Finally, convertion into pixel coordinates: The final pixel coordinates vector [ u = f_x (x' + \alpha y') + c_x \\ v = f_y yy + c_y -Fisheye::projectPoints +fisheye::projectPoints --------------------------- Projects points using fisheye model -.. ocv:function:: void Fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints, const Affine3d& affine, InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()) +.. ocv:function:: void fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints, const Affine3d& affine, InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()) -.. ocv:function:: void Fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints, InputArray rvec, InputArray tvec, InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()) +.. ocv:function:: void fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints, InputArray rvec, InputArray tvec, InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()) :param objectPoints: Array of object points, 1xN/Nx1 3-channel (or ``vector`` ), where N is the number of points in the view. @@ -1620,11 +1616,11 @@ Projects points using fisheye model The function computes projections of 3D points to the image plane given intrinsic and extrinsic camera parameters. Optionally, the function computes Jacobians - matrices of partial derivatives of image points coordinates (as functions of all the input parameters) with respect to the particular parameters, intrinsic and/or extrinsic. -Fisheye::distortPoints +fisheye::distortPoints ------------------------- Distorts 2D points using fisheye model. -.. ocv:function:: void Fisheye::distortPoints(InputArray undistorted, OutputArray distorted, InputArray K, InputArray D, double alpha = 0) +.. ocv:function:: void fisheye::distortPoints(InputArray undistorted, OutputArray distorted, InputArray K, InputArray D, double alpha = 0) :param undistorted: Array of object points, 1xN/Nx1 2-channel (or ``vector`` ), where N is the number of points in the view. @@ -1636,11 +1632,11 @@ Distorts 2D points using fisheye model. :param distorted: Output array of image points, 1xN/Nx1 2-channel, or ``vector`` . -Fisheye::undistortPoints +fisheye::undistortPoints ----------------------------- Undistorts 2D points using fisheye model -.. ocv:function:: void Fisheye::undistortPoints(InputArray distorted, OutputArray undistorted, InputArray K, InputArray D, InputArray R = noArray(), InputArray P = noArray()) +.. ocv:function:: void fisheye::undistortPoints(InputArray distorted, OutputArray undistorted, InputArray K, InputArray D, InputArray R = noArray(), InputArray P = noArray()) :param distorted: Array of object points, 1xN/Nx1 2-channel (or ``vector`` ), where N is the number of points in the view. @@ -1655,11 +1651,11 @@ Undistorts 2D points using fisheye model :param undistorted: Output array of image points, 1xN/Nx1 2-channel, or ``vector`` . -Fisheye::initUndistortRectifyMap +fisheye::initUndistortRectifyMap ------------------------------------- Computes undistortion and rectification maps for image transform by cv::remap(). If D is empty zero distortion is used, if R or P is empty identity matrixes are used. -.. ocv:function:: void Fisheye::initUndistortRectifyMap(InputArray K, InputArray D, InputArray R, InputArray P, const cv::Size& size, int m1type, OutputArray map1, OutputArray map2) +.. ocv:function:: void fisheye::initUndistortRectifyMap(InputArray K, InputArray D, InputArray R, InputArray P, const cv::Size& size, int m1type, OutputArray map1, OutputArray map2) :param K: Camera matrix :math:`K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}`. @@ -1677,11 +1673,11 @@ Computes undistortion and rectification maps for image transform by cv::remap(). :param map2: The second output map. -Fisheye::undistortImage +fisheye::undistortImage ----------------------- Transforms an image to compensate for fisheye lens distortion. -.. ocv:function:: void Fisheye::undistortImage(InputArray distorted, OutputArray undistorted, InputArray K, InputArray D, InputArray Knew = cv::noArray(), const Size& new_size = Size()) +.. ocv:function:: void fisheye::undistortImage(InputArray distorted, OutputArray undistorted, InputArray K, InputArray D, InputArray Knew = cv::noArray(), const Size& new_size = Size()) :param distorted: image with fisheye lens distortion. @@ -1696,12 +1692,12 @@ Transforms an image to compensate for fisheye lens distortion. The function transforms an image to compensate radial and tangential lens distortion. The function is simply a combination of -:ocv:func:`Fisheye::initUndistortRectifyMap` (with unity ``R`` ) and +:ocv:func:`fisheye::initUndistortRectifyMap` (with unity ``R`` ) and :ocv:func:`remap` (with bilinear interpolation). See the former function for details of the transformation being performed. See below the results of undistortImage. * a\) result of :ocv:func:`undistort` of perspective camera model (all possible coefficients (k_1, k_2, k_3, k_4, k_5, k_6) of distortion were optimized under calibration) - * b\) result of :ocv:func:`Fisheye::undistortImage` of fisheye camera model (all possible coefficients (k_1, k_2, k_3, k_4) of fisheye distortion were optimized under calibration) + * b\) result of :ocv:func:`fisheye::undistortImage` of fisheye camera model (all possible coefficients (k_1, k_2, k_3, k_4) of fisheye distortion were optimized under calibration) * c\) original image was captured with fisheye lens Pictures a) and b) almost the same. But if we consider points of image located far from the center of image, we can notice that on image a) these points are distorted. @@ -1709,11 +1705,11 @@ Pictures a) and b) almost the same. But if we consider points of image located f .. image:: pics/fisheye_undistorted.jpg -Fisheye::estimateNewCameraMatrixForUndistortRectify +fisheye::estimateNewCameraMatrixForUndistortRectify ---------------------------------------------------------- Estimates new camera matrix for undistortion or rectification. -.. ocv:function:: void Fisheye::estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R, OutputArray P, double balance = 0.0, const Size& new_size = Size(), double fov_scale = 1.0) +.. ocv:function:: void fisheye::estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R, OutputArray P, double balance = 0.0, const Size& new_size = Size(), double fov_scale = 1.0) :param K: Camera matrix :math:`K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}`. @@ -1727,11 +1723,11 @@ Estimates new camera matrix for undistortion or rectification. :param fov_scale: Divisor for new focal length. -Fisheye::stereoRectify +fisheye::stereoRectify ------------------------------ Stereo rectification for fisheye camera model -.. ocv:function:: void Fisheye::stereoRectify(InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size &imageSize, InputArray R, InputArray tvec, OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, int flags, const Size &newImageSize = Size(), double balance = 0.0, double fov_scale = 1.0) +.. ocv:function:: void fisheye::stereoRectify(InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size &imageSize, InputArray R, InputArray tvec, OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, int flags, const Size &newImageSize = Size(), double balance = 0.0, double fov_scale = 1.0) :param K1: First camera matrix. @@ -1773,11 +1769,11 @@ Stereo rectification for fisheye camera model -Fisheye::calibrate +fisheye::calibrate ---------------------------- Performs camera calibaration -.. ocv:function:: double Fisheye::calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size, InputOutputArray K, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags = 0, TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)) +.. ocv:function:: double fisheye::calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size, InputOutputArray K, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags = 0, TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)) :param objectPoints: vector of vectors of calibration pattern points in the calibration pattern coordinate space. @@ -1785,7 +1781,7 @@ Performs camera calibaration :param image_size: Size of the image used only to initialize the intrinsic camera matrix. - :param K: Output 3x3 floating-point camera matrix :math:`A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}` . If ``Fisheye::CALIB_USE_INTRINSIC_GUESS``/ is specified, some or all of ``fx, fy, cx, cy`` must be initialized before calling the function. + :param K: Output 3x3 floating-point camera matrix :math:`A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}` . If ``fisheye::CALIB_USE_INTRINSIC_GUESS``/ is specified, some or all of ``fx, fy, cx, cy`` must be initialized before calling the function. :param D: Output vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)`. @@ -1795,24 +1791,24 @@ Performs camera calibaration :param flags: Different flags that may be zero or a combination of the following values: - * **Fisheye::CALIB_USE_INTRINSIC_GUESS** ``cameraMatrix`` contains valid initial values of ``fx, fy, cx, cy`` that are optimized further. Otherwise, ``(cx, cy)`` is initially set to the image center ( ``imageSize`` is used), and focal distances are computed in a least-squares fashion. + * **fisheye::CALIB_USE_INTRINSIC_GUESS** ``cameraMatrix`` contains valid initial values of ``fx, fy, cx, cy`` that are optimized further. Otherwise, ``(cx, cy)`` is initially set to the image center ( ``imageSize`` is used), and focal distances are computed in a least-squares fashion. - * **Fisheye::CALIB_RECOMPUTE_EXTRINSIC** Extrinsic will be recomputed after each iteration of intrinsic optimization. + * **fisheye::CALIB_RECOMPUTE_EXTRINSIC** Extrinsic will be recomputed after each iteration of intrinsic optimization. - * **Fisheye::CALIB_CHECK_COND** The functions will check validity of condition number. + * **fisheye::CALIB_CHECK_COND** The functions will check validity of condition number. - * **Fisheye::CALIB_FIX_SKEW** Skew coefficient (alpha) is set to zero and stay zero. + * **fisheye::CALIB_FIX_SKEW** Skew coefficient (alpha) is set to zero and stay zero. - * **Fisheye::CALIB_FIX_K1..4** Selected distortion coefficients are set to zeros and stay zero. + * **fisheye::CALIB_FIX_K1..4** Selected distortion coefficients are set to zeros and stay zero. :param criteria: Termination criteria for the iterative optimization algorithm. -Fisheye::stereoCalibrate +fisheye::stereoCalibrate ---------------------------- Performs stereo calibration -.. ocv:function:: double Fisheye::stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, Size imageSize, OutputArray R, OutputArray T, int flags = CALIB_FIX_INTRINSIC, TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)) +.. ocv:function:: double fisheye::stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, Size imageSize, OutputArray R, OutputArray T, int flags = CALIB_FIX_INTRINSIC, TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)) :param objectPoints: Vector of vectors of the calibration pattern points. @@ -1820,7 +1816,7 @@ Performs stereo calibration :param imagePoints2: Vector of vectors of the projections of the calibration pattern points, observed by the second camera. - :param K1: Input/output first camera matrix: :math:`\vecthreethree{f_x^{(j)}}{0}{c_x^{(j)}}{0}{f_y^{(j)}}{c_y^{(j)}}{0}{0}{1}` , :math:`j = 0,\, 1` . If any of ``Fisheye::CALIB_USE_INTRINSIC_GUESS`` , ``Fisheye::CV_CALIB_FIX_INTRINSIC`` are specified, some or all of the matrix components must be initialized. + :param K1: Input/output first camera matrix: :math:`\vecthreethree{f_x^{(j)}}{0}{c_x^{(j)}}{0}{f_y^{(j)}}{c_y^{(j)}}{0}{0}{1}` , :math:`j = 0,\, 1` . If any of ``fisheye::CALIB_USE_INTRINSIC_GUESS`` , ``fisheye::CV_CALIB_FIX_INTRINSIC`` are specified, some or all of the matrix components must be initialized. :param D1: Input/output vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)` of 4 elements. @@ -1836,17 +1832,17 @@ Performs stereo calibration :param flags: Different flags that may be zero or a combination of the following values: - * **Fisheye::CV_CALIB_FIX_INTRINSIC** Fix ``K1, K2?`` and ``D1, D2?`` so that only ``R, T`` matrices are estimated. + * **fisheye::CV_CALIB_FIX_INTRINSIC** Fix ``K1, K2?`` and ``D1, D2?`` so that only ``R, T`` matrices are estimated. - * **Fisheye::CALIB_USE_INTRINSIC_GUESS** ``K1, K2`` contains valid initial values of ``fx, fy, cx, cy`` that are optimized further. Otherwise, ``(cx, cy)`` is initially set to the image center (``imageSize`` is used), and focal distances are computed in a least-squares fashion. + * **fisheye::CALIB_USE_INTRINSIC_GUESS** ``K1, K2`` contains valid initial values of ``fx, fy, cx, cy`` that are optimized further. Otherwise, ``(cx, cy)`` is initially set to the image center (``imageSize`` is used), and focal distances are computed in a least-squares fashion. - * **Fisheye::CALIB_RECOMPUTE_EXTRINSIC** Extrinsic will be recomputed after each iteration of intrinsic optimization. + * **fisheye::CALIB_RECOMPUTE_EXTRINSIC** Extrinsic will be recomputed after each iteration of intrinsic optimization. - * **Fisheye::CALIB_CHECK_COND** The functions will check validity of condition number. + * **fisheye::CALIB_CHECK_COND** The functions will check validity of condition number. - * **Fisheye::CALIB_FIX_SKEW** Skew coefficient (alpha) is set to zero and stay zero. + * **fisheye::CALIB_FIX_SKEW** Skew coefficient (alpha) is set to zero and stay zero. - * **Fisheye::CALIB_FIX_K1..4** Selected distortion coefficients are set to zeros and stay zero. + * **fisheye::CALIB_FIX_K1..4** Selected distortion coefficients are set to zeros and stay zero. :param criteria: Termination criteria for the iterative optimization algorithm. From 3678020c28fad07517e2c5123764291dff3eaee2 Mon Sep 17 00:00:00 2001 From: Ilya Krylov Date: Tue, 20 May 2014 12:37:37 +0400 Subject: [PATCH 024/189] Added license to source files --- modules/calib3d/src/fisheye.cpp | 43 +++++++++++++++++++++++++++ modules/calib3d/test/test_fisheye.cpp | 42 ++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) diff --git a/modules/calib3d/src/fisheye.cpp b/modules/calib3d/src/fisheye.cpp index 34d11d1fa8..66cf589564 100644 --- a/modules/calib3d/src/fisheye.cpp +++ b/modules/calib3d/src/fisheye.cpp @@ -1,3 +1,46 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#include "precomp.hpp" #include "fisheye.hpp" namespace cv { namespace diff --git a/modules/calib3d/test/test_fisheye.cpp b/modules/calib3d/test/test_fisheye.cpp index ed53ec415e..2749a1a6e3 100644 --- a/modules/calib3d/test/test_fisheye.cpp +++ b/modules/calib3d/test/test_fisheye.cpp @@ -1,3 +1,45 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + #include "test_precomp.hpp" #include #include "../src/fisheye.hpp" From 511ed4388ec233b471c9a4300f508640d2e7fdd9 Mon Sep 17 00:00:00 2001 From: Alexander Karsakov Date: Mon, 19 May 2014 18:15:04 +0400 Subject: [PATCH 025/189] Disabled BORDER_CONSTANT for pyramid functions. --- modules/imgproc/doc/filtering.rst | 28 ++++++++++++++++++---------- modules/imgproc/src/pyramids.cpp | 6 ++++++ 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/modules/imgproc/doc/filtering.rst b/modules/imgproc/doc/filtering.rst index efab258d4a..130b8e01a3 100755 --- a/modules/imgproc/doc/filtering.rst +++ b/modules/imgproc/doc/filtering.rst @@ -558,6 +558,8 @@ Constructs the Gaussian pyramid for an image. :param maxlevel: 0-based index of the last (the smallest) pyramid layer. It must be non-negative. + :param borderType: Pixel extrapolation method (BORDER_CONSTANT don't supported). See :ocv:func:`borderInterpolate` for details. + The function constructs a vector of images and builds the Gaussian pyramid by recursively applying :ocv:func:`pyrDown` to the previously built pyramid layers, starting from ``dst[0]==src`` . @@ -1343,12 +1345,16 @@ Blurs an image and downsamples it. :param dst: output image; it has the specified size and the same type as ``src``. - :param dstsize: size of the output image; by default, it is computed as ``Size((src.cols+1)/2, (src.rows+1)/2)``, but in any case, the following conditions should be satisfied: + :param dstsize: size of the output image. - .. math:: + :param borderType: Pixel extrapolation method (BORDER_CONSTANT don't supported). See :ocv:func:`borderInterpolate` for details. + +By default, size of the output image is computed as ``Size((src.cols+1)/2, (src.rows+1)/2)``, but in any case, the following conditions should be satisfied: - \begin{array}{l} - | \texttt{dstsize.width} *2-src.cols| \leq 2 \\ | \texttt{dstsize.height} *2-src.rows| \leq 2 \end{array} +.. math:: + + \begin{array}{l} + | \texttt{dstsize.width} *2-src.cols| \leq 2 \\ | \texttt{dstsize.height} *2-src.rows| \leq 2 \end{array} The function performs the downsampling step of the Gaussian pyramid construction. First, it convolves the source image with the kernel: @@ -1358,8 +1364,6 @@ The function performs the downsampling step of the Gaussian pyramid construction Then, it downsamples the image by rejecting even rows and columns. - - pyrUp ----- Upsamples an image and then blurs it. @@ -1376,12 +1380,16 @@ Upsamples an image and then blurs it. :param dst: output image. It has the specified size and the same type as ``src`` . - :param dstsize: size of the output image; by default, it is computed as ``Size(src.cols*2, (src.rows*2)``, but in any case, the following conditions should be satisfied: + :param dstsize: size of the output image. - .. math:: + :param borderType: Pixel extrapolation method (only BORDER_DEFAULT supported). See :ocv:func:`borderInterpolate` for details. + +By default, size of the output image is computed as ``Size(src.cols*2, (src.rows*2)``, but in any case, the following conditions should be satisfied: + +.. math:: - \begin{array}{l} - | \texttt{dstsize.width} -src.cols*2| \leq ( \texttt{dstsize.width} \mod 2) \\ | \texttt{dstsize.height} -src.rows*2| \leq ( \texttt{dstsize.height} \mod 2) \end{array} + \begin{array}{l} + | \texttt{dstsize.width} -src.cols*2| \leq ( \texttt{dstsize.width} \mod 2) \\ | \texttt{dstsize.height} -src.rows*2| \leq ( \texttt{dstsize.height} \mod 2) \end{array} The function performs the upsampling step of the Gaussian pyramid construction, though it can actually be used to construct the Laplacian pyramid. First, it upsamples the source image by injecting even zero rows and columns and then convolves the result with the same kernel as in :ocv:func:`pyrDown` multiplied by 4. diff --git a/modules/imgproc/src/pyramids.cpp b/modules/imgproc/src/pyramids.cpp index 01e510e7de..4000167497 100644 --- a/modules/imgproc/src/pyramids.cpp +++ b/modules/imgproc/src/pyramids.cpp @@ -403,6 +403,8 @@ typedef void (*PyrFunc)(const Mat&, Mat&, int); void cv::pyrDown( InputArray _src, OutputArray _dst, const Size& _dsz, int borderType ) { + CV_Assert(borderType != BORDER_CONSTANT); + Mat src = _src.getMat(); Size dsz = _dsz == Size() ? Size((src.cols + 1)/2, (src.rows + 1)/2) : _dsz; _dst.create( dsz, src.type() ); @@ -433,6 +435,8 @@ void cv::pyrDown( InputArray _src, OutputArray _dst, const Size& _dsz, int borde void cv::pyrUp( InputArray _src, OutputArray _dst, const Size& _dsz, int borderType ) { + CV_Assert(borderType == BORDER_DEFAULT); + Mat src = _src.getMat(); Size dsz = _dsz == Size() ? Size(src.cols*2, src.rows*2) : _dsz; _dst.create( dsz, src.type() ); @@ -463,6 +467,8 @@ void cv::pyrUp( InputArray _src, OutputArray _dst, const Size& _dsz, int borderT void cv::buildPyramid( InputArray _src, OutputArrayOfArrays _dst, int maxlevel, int borderType ) { + CV_Assert(borderType != BORDER_CONSTANT); + Mat src = _src.getMat(); _dst.create( maxlevel + 1, 1, 0 ); _dst.getMatRef(0) = src; From e63d7de87c3565555e4a73220a465ed39488160d Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Viel Date: Tue, 20 May 2014 22:52:11 +0200 Subject: [PATCH 026/189] Allows to choose orthogonal sub-vectors for LSH without using a static table among LshTable instances --- .../flann/include/opencv2/flann/lsh_index.h | 14 ++++++++- .../flann/include/opencv2/flann/lsh_table.h | 30 +++++-------------- 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/modules/flann/include/opencv2/flann/lsh_index.h b/modules/flann/include/opencv2/flann/lsh_index.h index 4d4670ea50..2530a0143a 100644 --- a/modules/flann/include/opencv2/flann/lsh_index.h +++ b/modules/flann/include/opencv2/flann/lsh_index.h @@ -109,10 +109,22 @@ public: */ void buildIndex() { + std::vector indices(feature_size_ * CHAR_BIT); + tables_.resize(table_number_); for (unsigned int i = 0; i < table_number_; ++i) { + + //re-initialize the random indices table that the LshTable will use to pick its sub-dimensions + if( (indices.size() == feature_size_ * CHAR_BIT) || (indices.size() < key_size_) ) + { + indices.resize( feature_size_ * CHAR_BIT ); + for (size_t i = 0; i < feature_size_ * CHAR_BIT; ++i) + indices[i] = i; + std::random_shuffle(indices.begin(), indices.end()); + } + lsh::LshTable& table = tables_[i]; - table = lsh::LshTable(feature_size_, key_size_); + table = lsh::LshTable(feature_size_, key_size_, indices); // Add the features to the table table.add(dataset_); diff --git a/modules/flann/include/opencv2/flann/lsh_table.h b/modules/flann/include/opencv2/flann/lsh_table.h index 18fb139c91..f6e68dc767 100644 --- a/modules/flann/include/opencv2/flann/lsh_table.h +++ b/modules/flann/include/opencv2/flann/lsh_table.h @@ -153,7 +153,7 @@ public: * @param feature_size is the size of the feature (considered as a ElementType[]) * @param key_size is the number of bits that are turned on in the feature */ - LshTable(unsigned int /*feature_size*/, unsigned int /*key_size*/) + LshTable(unsigned int /*feature_size*/, unsigned int /*key_size*/, std::vector & /*indices*/) { std::cerr << "LSH is not implemented for that type" << std::endl; assert(0); @@ -341,34 +341,20 @@ private: // Specialization for unsigned char template<> -inline LshTable::LshTable(unsigned int feature_size, unsigned int subsignature_size) +inline LshTable::LshTable( unsigned int feature_size, + unsigned int subsignature_size, + std::vector & indices ) { initialize(subsignature_size); // Allocate the mask mask_ = std::vector((size_t)ceil((float)(feature_size * sizeof(char)) / (float)sizeof(size_t)), 0); - // A bit brutal but fast to code - static std::vector* indices = NULL; - - //Ensure the Nth bit will be selected only once among the different LshTables - //to avoid having two different tables with signatures sharing many dimensions/many bits - if( indices == NULL ) - { - indices = new std::vector( feature_size * CHAR_BIT ); - } - else if( indices->size() < key_size_ ) - { - indices->resize( feature_size * CHAR_BIT ); - for (size_t i = 0; i < feature_size * CHAR_BIT; ++i) { - (*indices)[i] = i; - } - std::random_shuffle(indices->begin(), indices->end()); - } - // Generate a random set of order of subsignature_size_ bits for (unsigned int i = 0; i < key_size_; ++i) { - size_t index = (*indices)[0]; - indices->erase( indices->begin() ); + //Ensure the Nth bit will be selected only once among the different LshTables + //to avoid having two different tables with signatures sharing many dimensions/many bits + size_t index = indices[0]; + indices.erase( indices.begin() ); // Set that bit in the mask size_t divisor = CHAR_BIT * sizeof(size_t); From 8d4a76925c47703ebc13d593787dacc4b69568cc Mon Sep 17 00:00:00 2001 From: Konstantin Matskevich Date: Tue, 20 May 2014 18:03:20 +0400 Subject: [PATCH 027/189] fixed binary compatibility --- modules/contrib/doc/facerec/facerec_api.rst | 15 +- .../include/opencv2/contrib/contrib.hpp | 6 +- modules/contrib/src/facerec.cpp | 169 +++++++----------- samples/cpp/facerec_demo.cpp | 1 + 4 files changed, 76 insertions(+), 115 deletions(-) diff --git a/modules/contrib/doc/facerec/facerec_api.rst b/modules/contrib/doc/facerec/facerec_api.rst index 4c91bb7cb9..edb6edb1d5 100644 --- a/modules/contrib/doc/facerec/facerec_api.rst +++ b/modules/contrib/doc/facerec/facerec_api.rst @@ -48,13 +48,13 @@ a unified access to all face recongition algorithms in OpenCV. :: virtual void load(const FileStorage& fs) = 0; // Sets additional information as pairs label - info. - virtual void setLabelsInfo(const std::map& labelsInfo) = 0; + void setLabelsInfo(const std::map& labelsInfo); // Gets string information by label - virtual string getLabelInfo(int label) const = 0; + string getLabelInfo(const int &label); // Gets labels by string - virtual vector getLabelsByString(const string& str) = 0; + vector getLabelsByString(const string& str); }; @@ -308,7 +308,7 @@ FaceRecognizer::setLabelsInfo ----------------------------- Sets string information about labels into the model. -.. ocv:function:: void FaceRecognizer::setLabelsInfo(const std::map& labelsInfo) = 0 +.. ocv:function:: void FaceRecognizer::setLabelsInfo(const std::map& labelsInfo) Information about the label loads as a pair "label id - string info". @@ -316,7 +316,7 @@ FaceRecognizer::getLabelInfo ---------------------------- Gets string information by label. -.. ocv:function:: string FaceRecognizer::getLabelInfo(int label) const = 0 +.. ocv:function:: string FaceRecognizer::getLabelInfo(const int &label) If an unknown label id is provided or there is no label information assosiated with the specified label id the method returns an empty string. @@ -324,7 +324,7 @@ FaceRecognizer::getLabelsByString --------------------------------- Gets vector of labels by string. -.. ocv:function:: vector FaceRecognizer::getLabelsByString(const string& str) = 0 +.. ocv:function:: vector FaceRecognizer::getLabelsByString(const string& str) The function searches for the labels containing the specified substring in the associated string info. @@ -354,7 +354,6 @@ Model internal data: * ``mean`` The sample mean calculated from the training data. * ``projections`` The projections of the training data. * ``labels`` The threshold applied in the prediction. If the distance to the nearest neighbor is larger than the threshold, this method returns -1. -* ``labelsInfo`` The string information about the labels. createFisherFaceRecognizer -------------------------- @@ -382,7 +381,6 @@ Model internal data: * ``mean`` The sample mean calculated from the training data. * ``projections`` The projections of the training data. * ``labels`` The labels corresponding to the projections. -* ``labelsInfo`` The string information about the labels. createLBPHFaceRecognizer @@ -412,4 +410,3 @@ Model internal data: * ``threshold`` see :ocv:func:`createLBPHFaceRecognizer`. * ``histograms`` Local Binary Patterns Histograms calculated from the given training data (empty if none was given). * ``labels`` Labels corresponding to the calculated Local Binary Patterns Histograms. -* ``labelsInfo`` The string information about the labels. diff --git a/modules/contrib/include/opencv2/contrib/contrib.hpp b/modules/contrib/include/opencv2/contrib/contrib.hpp index e6e11d816a..5684ee2422 100644 --- a/modules/contrib/include/opencv2/contrib/contrib.hpp +++ b/modules/contrib/include/opencv2/contrib/contrib.hpp @@ -949,13 +949,13 @@ namespace cv virtual void load(const FileStorage& fs) = 0; // Sets additional information as pairs label - info. - virtual void setLabelsInfo(const std::map& labelsInfo) = 0; + void setLabelsInfo(const std::map& labelsInfo); // Gets string information by label - virtual string getLabelInfo(int label) const = 0; + string getLabelInfo(const int &label); // Gets labels by string - virtual vector getLabelsByString(const string& str) = 0; + vector getLabelsByString(const string& str); }; CV_EXPORTS_W Ptr createEigenFaceRecognizer(int num_components = 0, double threshold = DBL_MAX); diff --git a/modules/contrib/src/facerec.cpp b/modules/contrib/src/facerec.cpp index ef32b5273a..170f636687 100644 --- a/modules/contrib/src/facerec.cpp +++ b/modules/contrib/src/facerec.cpp @@ -133,9 +133,51 @@ inline vector<_Tp> remove_dups(const vector<_Tp>& src) { return elems; } +// This class was introduced to avoid an addition of new virtual functions in FaceRecognizer class. +// It is safe for a binary compatibility. +class FaceRecognizerBase : public FaceRecognizer +{ +protected: + // Stored pairs "label id - string info" + std::map _labelsInfo; + +public: + // Sets additional information as pairs label - info. + virtual void setLabelsInfo(const std::map& labelsInfo); + + // Gets string information by label + virtual string getLabelInfo(int label) const; + + // Gets labels by string + virtual vector getLabelsByString(const string& str); +}; + +void FaceRecognizerBase::setLabelsInfo(const std::map& labelsInfo) +{ + _labelsInfo = labelsInfo; +} + +string FaceRecognizerBase::getLabelInfo(int label) const +{ + std::map::const_iterator iter(_labelsInfo.find(label)); + return iter != _labelsInfo.end() ? iter->second : ""; +} + +vector FaceRecognizerBase::getLabelsByString(const string& str) +{ + vector labels; + for(std::map::const_iterator it = _labelsInfo.begin(); it != _labelsInfo.end(); it++) + { + size_t found = (it->second).find(str); + if(found != string::npos) + labels.push_back(it->first); + } + return labels; +} + // Turk, M., and Pentland, A. "Eigenfaces for recognition.". Journal of // Cognitive Neuroscience 3 (1991), 71–86. -class Eigenfaces : public FaceRecognizer +class Eigenfaces : public FaceRecognizerBase { private: int _num_components; @@ -145,7 +187,6 @@ private: Mat _eigenvectors; Mat _eigenvalues; Mat _mean; - std::map _labelsInfo; public: using FaceRecognizer::save; @@ -182,15 +223,6 @@ public: // See FaceRecognizer::save. void save(FileStorage& fs) const; - // Sets additional information as pairs label - info. - void setLabelsInfo(const std::map& labelsInfo); - - // Gets string information by label - string getLabelInfo(int label) const; - - // Gets labels by string - std::vector getLabelsByString(const string& str); - AlgorithmInfo* info() const; }; @@ -198,7 +230,7 @@ public: // faces: Recognition using class specific linear projection.". IEEE // Transactions on Pattern Analysis and Machine Intelligence 19, 7 (1997), // 711–720. -class Fisherfaces: public FaceRecognizer +class Fisherfaces: public FaceRecognizerBase { private: int _num_components; @@ -208,7 +240,6 @@ private: Mat _mean; vector _projections; Mat _labels; - std::map _labelsInfo; public: using FaceRecognizer::save; @@ -247,15 +278,6 @@ public: // See FaceRecognizer::save. void save(FileStorage& fs) const; - // Sets additional information as pairs label - info. - void setLabelsInfo(const std::map& labelsInfo); - - // Gets string information by label - string getLabelInfo(int label) const; - - // Gets labels by string - std::vector getLabelsByString(const string& str); - AlgorithmInfo* info() const; }; @@ -265,7 +287,7 @@ public: // patterns: Application to face recognition." IEEE Transactions on Pattern // Analysis and Machine Intelligence, 28(12):2037-2041. // -class LBPH : public FaceRecognizer +class LBPH : public FaceRecognizerBase { private: int _grid_x; @@ -276,14 +298,12 @@ private: vector _histograms; Mat _labels; - std::map _labelsInfo; // Computes a LBPH model with images in src and // corresponding labels in labels, possibly preserving // old model data. void train(InputArrayOfArrays src, InputArray labels, bool preserveData); - public: using FaceRecognizer::save; using FaceRecognizer::load; @@ -342,15 +362,6 @@ public: // See FaceRecognizer::save. void save(FileStorage& fs) const; - // Sets additional information as pairs label - info. - void setLabelsInfo(const std::map& labelsInfo); - - // Gets string information by label - string getLabelInfo(int label) const; - - // Gets labels by string - std::vector getLabelsByString(const string& str); - // Getter functions. int neighbors() const { return _neighbors; } int radius() const { return _radius; } @@ -391,6 +402,27 @@ void FaceRecognizer::load(const string& filename) { fs.release(); } +void FaceRecognizer::setLabelsInfo(const std::map& labelsInfo) +{ + FaceRecognizerBase* base = dynamic_cast(this); + CV_Assert(base != 0); + base->setLabelsInfo(labelsInfo); +} + +string FaceRecognizer::getLabelInfo(const int &label) +{ + FaceRecognizerBase* base = dynamic_cast(this); + CV_Assert(base != 0); + return base->getLabelInfo(label); +} + +vector FaceRecognizer::getLabelsByString(const string& str) +{ + FaceRecognizerBase* base = dynamic_cast(this); + CV_Assert(base != 0); + return base->getLabelsByString(str); +} + //------------------------------------------------------------------------------ // Eigenfaces //------------------------------------------------------------------------------ @@ -515,29 +547,6 @@ void Eigenfaces::save(FileStorage& fs) const { fs << "]"; } -void Eigenfaces::setLabelsInfo(const std::map& labelsInfo) -{ - _labelsInfo = labelsInfo; -} - -string Eigenfaces::getLabelInfo(int label) const -{ - std::map::const_iterator iter(_labelsInfo.find(label)); - return iter != _labelsInfo.end() ? iter->second : ""; -} - -vector Eigenfaces::getLabelsByString(const string& str) -{ - vector labels; - for(std::map::const_iterator it = _labelsInfo.begin(); it != _labelsInfo.end(); it++) - { - size_t found = (it->second).find(str); - if(found != string::npos) - labels.push_back(it->first); - } - return labels; -} - //------------------------------------------------------------------------------ // Fisherfaces //------------------------------------------------------------------------------ @@ -675,29 +684,6 @@ void Fisherfaces::save(FileStorage& fs) const { fs << "]"; } -void Fisherfaces::setLabelsInfo(const std::map& labelsInfo) -{ - _labelsInfo = labelsInfo; -} - -string Fisherfaces::getLabelInfo(int label) const -{ - std::map::const_iterator iter(_labelsInfo.find(label)); - return iter != _labelsInfo.end() ? iter->second : ""; -} - -vector Fisherfaces::getLabelsByString(const string& str) -{ - vector labels; - for(std::map::const_iterator it = _labelsInfo.begin(); it != _labelsInfo.end(); it++) - { - size_t found = (it->second).find(str); - if(found != string::npos) - labels.push_back(it->first); - } - return labels; -} - //------------------------------------------------------------------------------ // LBPH //------------------------------------------------------------------------------ @@ -911,29 +897,6 @@ void LBPH::save(FileStorage& fs) const { fs << "]"; } -void LBPH::setLabelsInfo(const std::map& labelsInfo) -{ - _labelsInfo = labelsInfo; -} - -string LBPH::getLabelInfo(int label) const -{ - std::map::const_iterator iter(_labelsInfo.find(label)); - return iter != _labelsInfo.end() ? iter->second : ""; -} - -vector LBPH::getLabelsByString(const string& str) -{ - vector labels; - for(std::map::const_iterator it = _labelsInfo.begin(); it != _labelsInfo.end(); it++) - { - size_t found = (it->second).find(str); - if(found != string::npos) - labels.push_back(it->first); - } - return labels; -} - void LBPH::train(InputArrayOfArrays _in_src, InputArray _in_labels) { this->train(_in_src, _in_labels, false); } diff --git a/samples/cpp/facerec_demo.cpp b/samples/cpp/facerec_demo.cpp index ef480c6df7..b92308e898 100644 --- a/samples/cpp/facerec_demo.cpp +++ b/samples/cpp/facerec_demo.cpp @@ -118,6 +118,7 @@ int main(int argc, const char *argv[]) { Ptr model = createEigenFaceRecognizer(); model->setLabelsInfo(labelsInfo); model->train(images, labels); + // The following line predicts the label of a given // test image: int predictedLabel = model->predict(testSample); From 2f8b5731dabb3162ca62a0e1901bb13f0ed83e4c Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Viel Date: Wed, 21 May 2014 12:27:38 +0200 Subject: [PATCH 028/189] Fix local variable shadowing --- modules/flann/include/opencv2/flann/lsh_index.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/flann/include/opencv2/flann/lsh_index.h b/modules/flann/include/opencv2/flann/lsh_index.h index 2530a0143a..23988d436a 100644 --- a/modules/flann/include/opencv2/flann/lsh_index.h +++ b/modules/flann/include/opencv2/flann/lsh_index.h @@ -118,8 +118,8 @@ public: if( (indices.size() == feature_size_ * CHAR_BIT) || (indices.size() < key_size_) ) { indices.resize( feature_size_ * CHAR_BIT ); - for (size_t i = 0; i < feature_size_ * CHAR_BIT; ++i) - indices[i] = i; + for (size_t j = 0; j < feature_size_ * CHAR_BIT; ++j) + indices[j] = j; std::random_shuffle(indices.begin(), indices.end()); } From ec99f96c6253240b10335ebcdc4018950df1bc20 Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Viel Date: Wed, 21 May 2014 13:16:12 +0200 Subject: [PATCH 029/189] Add the ensureSimpleDistance() method to ensure the user the returned distance is not ^2 (the default for L2 for instance) --- modules/flann/include/opencv2/flann/dist.h | 60 ++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/modules/flann/include/opencv2/flann/dist.h b/modules/flann/include/opencv2/flann/dist.h index 2afceb8893..88f9abc305 100644 --- a/modules/flann/include/opencv2/flann/dist.h +++ b/modules/flann/include/opencv2/flann/dist.h @@ -872,6 +872,66 @@ typename Distance::ResultType ensureSquareDistance( typename Distance::ResultTyp return dummy( dist ); } + +/* + * ...and a template to ensure the user that he will process the normal distance, + * and not squared distance, without loosing processing time calling sqrt(ensureSquareDistance) + * that will result in doing actually sqrt(dist*dist) for L1 distance for instance. + */ +template +struct simpleDistance +{ + typedef typename Distance::ResultType ResultType; + ResultType operator()( ResultType dist ) { return dist; } +}; + + +template +struct simpleDistance, ElementType> +{ + typedef typename L2_Simple::ResultType ResultType; + ResultType operator()( ResultType dist ) { return sqrt(dist); } +}; + +template +struct simpleDistance, ElementType> +{ + typedef typename L2::ResultType ResultType; + ResultType operator()( ResultType dist ) { return sqrt(dist); } +}; + + +template +struct simpleDistance, ElementType> +{ + typedef typename MinkowskiDistance::ResultType ResultType; + ResultType operator()( ResultType dist ) { return sqrt(dist); } +}; + +template +struct simpleDistance, ElementType> +{ + typedef typename HellingerDistance::ResultType ResultType; + ResultType operator()( ResultType dist ) { return sqrt(dist); } +}; + +template +struct simpleDistance, ElementType> +{ + typedef typename ChiSquareDistance::ResultType ResultType; + ResultType operator()( ResultType dist ) { return sqrt(dist); } +}; + + +template +typename Distance::ResultType ensureSimpleDistance( typename Distance::ResultType dist ) +{ + typedef typename Distance::ElementType ElementType; + + simpleDistance dummy; + return dummy( dist ); +} + } #endif //OPENCV_FLANN_DIST_H_ From 59c8edfd987a93f77cf862f14ab25b2d384132d7 Mon Sep 17 00:00:00 2001 From: Konstantin Matskevich Date: Wed, 28 May 2014 15:28:54 +0400 Subject: [PATCH 030/189] facerec2 --- modules/contrib/doc/facerec/facerec_api.rst | 2 +- .../include/opencv2/contrib/contrib.hpp | 20 ++++++++++ modules/contrib/src/facerec.cpp | 37 +++++-------------- 3 files changed, 30 insertions(+), 29 deletions(-) diff --git a/modules/contrib/doc/facerec/facerec_api.rst b/modules/contrib/doc/facerec/facerec_api.rst index edb6edb1d5..3da37bdd17 100644 --- a/modules/contrib/doc/facerec/facerec_api.rst +++ b/modules/contrib/doc/facerec/facerec_api.rst @@ -79,7 +79,7 @@ Moreover every :ocv:class:`FaceRecognizer` supports the: * **Loading/Saving** the model state from/to a given XML or YAML. -* **Setting/Getting labels info**, that is storaged as a string. +* **Setting/Getting labels info**, that is storaged as a string. String labels info is useful for keeping names of the recognized people. .. note:: When using the FaceRecognizer interface in combination with Python, please stick to Python 2. Some underlying scripts like create_csv will not work in other versions, like Python 3. diff --git a/modules/contrib/include/opencv2/contrib/contrib.hpp b/modules/contrib/include/opencv2/contrib/contrib.hpp index 5684ee2422..f74d9ca49f 100644 --- a/modules/contrib/include/opencv2/contrib/contrib.hpp +++ b/modules/contrib/include/opencv2/contrib/contrib.hpp @@ -958,6 +958,26 @@ namespace cv vector getLabelsByString(const string& str); }; + // The FaceRecognizerBase class is introduced to keep the FaceRecognizer binary backward compatibility in 2.4 + // In master setLabelInfo/getLabelInfo/getLabelsByString should be virtual and _labelsInfo should be moved to FaceRecognizer + // that allows to avoid FaceRecognizer2 in master + class FaceRecognizer2 : public FaceRecognizer + { + protected: + // Stored pairs "label id - string info" + std::map _labelsInfo; + + public: + // Sets additional information as pairs label - info. + virtual void setLabelsInfo(const std::map& labelsInfo); + + // Gets string information by label + virtual string getLabelInfo(int label) const; + + // Gets labels by string + virtual vector getLabelsByString(const string& str); + }; + CV_EXPORTS_W Ptr createEigenFaceRecognizer(int num_components = 0, double threshold = DBL_MAX); CV_EXPORTS_W Ptr createFisherFaceRecognizer(int num_components = 0, double threshold = DBL_MAX); CV_EXPORTS_W Ptr createLBPHFaceRecognizer(int radius=1, int neighbors=8, diff --git a/modules/contrib/src/facerec.cpp b/modules/contrib/src/facerec.cpp index 170f636687..f24e3ff4c4 100644 --- a/modules/contrib/src/facerec.cpp +++ b/modules/contrib/src/facerec.cpp @@ -133,37 +133,18 @@ inline vector<_Tp> remove_dups(const vector<_Tp>& src) { return elems; } -// This class was introduced to avoid an addition of new virtual functions in FaceRecognizer class. -// It is safe for a binary compatibility. -class FaceRecognizerBase : public FaceRecognizer -{ -protected: - // Stored pairs "label id - string info" - std::map _labelsInfo; - -public: - // Sets additional information as pairs label - info. - virtual void setLabelsInfo(const std::map& labelsInfo); - - // Gets string information by label - virtual string getLabelInfo(int label) const; - - // Gets labels by string - virtual vector getLabelsByString(const string& str); -}; - -void FaceRecognizerBase::setLabelsInfo(const std::map& labelsInfo) +void FaceRecognizer2::setLabelsInfo(const std::map& labelsInfo) { _labelsInfo = labelsInfo; } -string FaceRecognizerBase::getLabelInfo(int label) const +string FaceRecognizer2::getLabelInfo(int label) const { std::map::const_iterator iter(_labelsInfo.find(label)); return iter != _labelsInfo.end() ? iter->second : ""; } -vector FaceRecognizerBase::getLabelsByString(const string& str) +vector FaceRecognizer2::getLabelsByString(const string& str) { vector labels; for(std::map::const_iterator it = _labelsInfo.begin(); it != _labelsInfo.end(); it++) @@ -177,7 +158,7 @@ vector FaceRecognizerBase::getLabelsByString(const string& str) // Turk, M., and Pentland, A. "Eigenfaces for recognition.". Journal of // Cognitive Neuroscience 3 (1991), 71–86. -class Eigenfaces : public FaceRecognizerBase +class Eigenfaces : public FaceRecognizer2 { private: int _num_components; @@ -230,7 +211,7 @@ public: // faces: Recognition using class specific linear projection.". IEEE // Transactions on Pattern Analysis and Machine Intelligence 19, 7 (1997), // 711–720. -class Fisherfaces: public FaceRecognizerBase +class Fisherfaces: public FaceRecognizer2 { private: int _num_components; @@ -287,7 +268,7 @@ public: // patterns: Application to face recognition." IEEE Transactions on Pattern // Analysis and Machine Intelligence, 28(12):2037-2041. // -class LBPH : public FaceRecognizerBase +class LBPH : public FaceRecognizer2 { private: int _grid_x; @@ -404,21 +385,21 @@ void FaceRecognizer::load(const string& filename) { void FaceRecognizer::setLabelsInfo(const std::map& labelsInfo) { - FaceRecognizerBase* base = dynamic_cast(this); + FaceRecognizer2* base = dynamic_cast(this); CV_Assert(base != 0); base->setLabelsInfo(labelsInfo); } string FaceRecognizer::getLabelInfo(const int &label) { - FaceRecognizerBase* base = dynamic_cast(this); + FaceRecognizer2* base = dynamic_cast(this); CV_Assert(base != 0); return base->getLabelInfo(label); } vector FaceRecognizer::getLabelsByString(const string& str) { - FaceRecognizerBase* base = dynamic_cast(this); + FaceRecognizer2* base = dynamic_cast(this); CV_Assert(base != 0); return base->getLabelsByString(str); } From fc610979bb6597d9c8f986e32ed20cbde909f7b6 Mon Sep 17 00:00:00 2001 From: berak Date: Sat, 7 Jun 2014 16:34:53 +0200 Subject: [PATCH 031/189] export BOW to script wrappers --- .../include/opencv2/features2d/features2d.hpp | 37 ++++++++++--------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/modules/features2d/include/opencv2/features2d/features2d.hpp b/modules/features2d/include/opencv2/features2d/features2d.hpp index 7536128c71..7c04a22ea4 100644 --- a/modules/features2d/include/opencv2/features2d/features2d.hpp +++ b/modules/features2d/include/opencv2/features2d/features2d.hpp @@ -1528,17 +1528,17 @@ CV_EXPORTS void evaluateGenericDescriptorMatcher( const Mat& img1, const Mat& im /* * Abstract base class for training of a 'bag of visual words' vocabulary from a set of descriptors */ -class CV_EXPORTS BOWTrainer +class CV_EXPORTS_W BOWTrainer { public: BOWTrainer(); virtual ~BOWTrainer(); - void add( const Mat& descriptors ); - const vector& getDescriptors() const; - int descripotorsCount() const; + CV_WRAP void add( const Mat& descriptors ); + CV_WRAP const vector& getDescriptors() const; + CV_WRAP int descripotorsCount() const; - virtual void clear(); + CV_WRAP virtual void clear(); /* * Train visual words vocabulary, that is cluster training descriptors and @@ -1547,8 +1547,8 @@ public: * * descriptors Training descriptors computed on images keypoints. */ - virtual Mat cluster() const = 0; - virtual Mat cluster( const Mat& descriptors ) const = 0; + CV_WRAP virtual Mat cluster() const = 0; + CV_WRAP virtual Mat cluster( const Mat& descriptors ) const = 0; protected: vector descriptors; @@ -1558,16 +1558,16 @@ protected: /* * This is BOWTrainer using cv::kmeans to get vocabulary. */ -class CV_EXPORTS BOWKMeansTrainer : public BOWTrainer +class CV_EXPORTS_W BOWKMeansTrainer : public BOWTrainer { public: - BOWKMeansTrainer( int clusterCount, const TermCriteria& termcrit=TermCriteria(), + CV_WRAP BOWKMeansTrainer( int clusterCount, const TermCriteria& termcrit=TermCriteria(), int attempts=3, int flags=KMEANS_PP_CENTERS ); virtual ~BOWKMeansTrainer(); // Returns trained vocabulary (i.e. cluster centers). - virtual Mat cluster() const; - virtual Mat cluster( const Mat& descriptors ) const; + CV_WRAP virtual Mat cluster() const; + CV_WRAP virtual Mat cluster( const Mat& descriptors ) const; protected: @@ -1580,21 +1580,24 @@ protected: /* * Class to compute image descriptor using bag of visual words. */ -class CV_EXPORTS BOWImgDescriptorExtractor +class CV_EXPORTS_W BOWImgDescriptorExtractor { public: - BOWImgDescriptorExtractor( const Ptr& dextractor, + CV_WRAP BOWImgDescriptorExtractor( const Ptr& dextractor, const Ptr& dmatcher ); virtual ~BOWImgDescriptorExtractor(); - void setVocabulary( const Mat& vocabulary ); - const Mat& getVocabulary() const; + CV_WRAP void setVocabulary( const Mat& vocabulary ); + CV_WRAP const Mat& getVocabulary() const; void compute( const Mat& image, vector& keypoints, Mat& imgDescriptor, vector >* pointIdxsOfClusters=0, Mat* descriptors=0 ); // compute() is not constant because DescriptorMatcher::match is not constant - int descriptorSize() const; - int descriptorType() const; + CV_WRAP_AS(compute) void compute2( const Mat& image, vector& keypoints, Mat& imgDescriptor ) + { compute(image,keypoints,imgDescriptor); } + + CV_WRAP int descriptorSize() const; + CV_WRAP int descriptorType() const; protected: Mat vocabulary; From 02b32d86d342083dbc4327300a94f0bf7cb5b48f Mon Sep 17 00:00:00 2001 From: Andrey Pavlenko Date: Mon, 9 Jun 2014 13:26:45 +0400 Subject: [PATCH 032/189] moving FaceRecognizer2 from public header to .cpp --- .../include/opencv2/contrib/contrib.hpp | 20 --- modules/contrib/src/facerec.cpp | 117 ++++++++++-------- 2 files changed, 67 insertions(+), 70 deletions(-) diff --git a/modules/contrib/include/opencv2/contrib/contrib.hpp b/modules/contrib/include/opencv2/contrib/contrib.hpp index f74d9ca49f..5684ee2422 100644 --- a/modules/contrib/include/opencv2/contrib/contrib.hpp +++ b/modules/contrib/include/opencv2/contrib/contrib.hpp @@ -958,26 +958,6 @@ namespace cv vector getLabelsByString(const string& str); }; - // The FaceRecognizerBase class is introduced to keep the FaceRecognizer binary backward compatibility in 2.4 - // In master setLabelInfo/getLabelInfo/getLabelsByString should be virtual and _labelsInfo should be moved to FaceRecognizer - // that allows to avoid FaceRecognizer2 in master - class FaceRecognizer2 : public FaceRecognizer - { - protected: - // Stored pairs "label id - string info" - std::map _labelsInfo; - - public: - // Sets additional information as pairs label - info. - virtual void setLabelsInfo(const std::map& labelsInfo); - - // Gets string information by label - virtual string getLabelInfo(int label) const; - - // Gets labels by string - virtual vector getLabelsByString(const string& str); - }; - CV_EXPORTS_W Ptr createEigenFaceRecognizer(int num_components = 0, double threshold = DBL_MAX); CV_EXPORTS_W Ptr createFisherFaceRecognizer(int num_components = 0, double threshold = DBL_MAX); CV_EXPORTS_W Ptr createLBPHFaceRecognizer(int radius=1, int neighbors=8, diff --git a/modules/contrib/src/facerec.cpp b/modules/contrib/src/facerec.cpp index f24e3ff4c4..3f8aafbdae 100644 --- a/modules/contrib/src/facerec.cpp +++ b/modules/contrib/src/facerec.cpp @@ -18,41 +18,6 @@ #include "precomp.hpp" #include -struct LabelInfo -{ - LabelInfo():label(-1), value("") {} - LabelInfo(int _label, const std::string &_value): label(_label), value(_value) {} - int label; - std::string value; - void write(cv::FileStorage& fs) const - { - fs << "{" << "label" << label << "value" << value << "}"; - } - void read(const cv::FileNode& node) - { - label = (int)node["label"]; - value = (std::string)node["value"]; - } - std::ostream& operator<<(std::ostream& out) - { - out << "{ label = " << label << ", " << "value = " << value << "}"; - return out; - } -}; - -static void write(cv::FileStorage& fs, const std::string&, const LabelInfo& x) -{ - x.write(fs); -} - -static void read(const cv::FileNode& node, LabelInfo& x, const LabelInfo& default_value = LabelInfo()) -{ - if(node.empty()) - x = default_value; - else - x.read(node); -} - namespace cv { @@ -133,29 +98,81 @@ inline vector<_Tp> remove_dups(const vector<_Tp>& src) { return elems; } -void FaceRecognizer2::setLabelsInfo(const std::map& labelsInfo) +// The FaceRecognizer2 class is introduced to keep the FaceRecognizer binary backward compatibility in 2.4 +// In master setLabelInfo/getLabelInfo/getLabelsByString should be virtual and _labelsInfo should be moved +// to FaceRecognizer, that allows to avoid FaceRecognizer2 in master +class FaceRecognizer2 : public FaceRecognizer { - _labelsInfo = labelsInfo; -} +protected: + // Stored pairs "label id - string info" + std::map _labelsInfo; -string FaceRecognizer2::getLabelInfo(int label) const -{ - std::map::const_iterator iter(_labelsInfo.find(label)); - return iter != _labelsInfo.end() ? iter->second : ""; -} +public: + // Sets additional information as pairs label - info. + virtual void setLabelsInfo(const std::map& labelsInfo) + { + _labelsInfo = labelsInfo; + } -vector FaceRecognizer2::getLabelsByString(const string& str) + // Gets string information by label + virtual string getLabelInfo(int label) const + { + std::map::const_iterator iter(_labelsInfo.find(label)); + return iter != _labelsInfo.end() ? iter->second : ""; + } + + // Gets labels by string + virtual vector getLabelsByString(const string& str) + { + vector labels; + for(std::map::const_iterator it = _labelsInfo.begin(); it != _labelsInfo.end(); it++) + { + size_t found = (it->second).find(str); + if(found != string::npos) + labels.push_back(it->first); + } + return labels; + } + +}; + +// Utility structure to load/save face label info (a pair of int and string) via FileStorage +struct LabelInfo { - vector labels; - for(std::map::const_iterator it = _labelsInfo.begin(); it != _labelsInfo.end(); it++) + LabelInfo():label(-1), value("") {} + LabelInfo(int _label, const std::string &_value): label(_label), value(_value) {} + int label; + std::string value; + void write(cv::FileStorage& fs) const { - size_t found = (it->second).find(str); - if(found != string::npos) - labels.push_back(it->first); + fs << "{" << "label" << label << "value" << value << "}"; } - return labels; + void read(const cv::FileNode& node) + { + label = (int)node["label"]; + value = (std::string)node["value"]; + } + std::ostream& operator<<(std::ostream& out) + { + out << "{ label = " << label << ", " << "value = " << value << "}"; + return out; + } +}; + +static void write(cv::FileStorage& fs, const std::string&, const LabelInfo& x) +{ + x.write(fs); +} + +static void read(const cv::FileNode& node, LabelInfo& x, const LabelInfo& default_value = LabelInfo()) +{ + if(node.empty()) + x = default_value; + else + x.read(node); } + // Turk, M., and Pentland, A. "Eigenfaces for recognition.". Journal of // Cognitive Neuroscience 3 (1991), 71–86. class Eigenfaces : public FaceRecognizer2 From 4d0848b3e879789b523a98fe16ef134556641ca0 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Tue, 10 Jun 2014 18:12:38 +0400 Subject: [PATCH 033/189] fix -Wmaybe-uninitialized warning (initialize pointers to NULL) --- modules/python/src2/gen.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/python/src2/gen.py b/modules/python/src2/gen.py index 40879e569f..d43a8023f2 100755 --- a/modules/python/src2/gen.py +++ b/modules/python/src2/gen.py @@ -153,6 +153,8 @@ def gen(name, args, ty, flags): ctype = remap.get(a.ty, a.ty) if a.init: init = " = %s" % a.init + elif ctype[-1] == '*': + init = ' = NULL' else: init = '' yield " %s %s%s;" % (ctype, a.nm, init) From 3500c940d47c0fa6c9d4c281824d20ecb8385a5c Mon Sep 17 00:00:00 2001 From: berak Date: Wed, 11 Jun 2014 11:50:22 +0200 Subject: [PATCH 034/189] add Bag of Words to python wrapper --- modules/features2d/include/opencv2/features2d/features2d.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/features2d/include/opencv2/features2d/features2d.hpp b/modules/features2d/include/opencv2/features2d/features2d.hpp index 7c04a22ea4..02e65315e2 100644 --- a/modules/features2d/include/opencv2/features2d/features2d.hpp +++ b/modules/features2d/include/opencv2/features2d/features2d.hpp @@ -1593,7 +1593,7 @@ public: vector >* pointIdxsOfClusters=0, Mat* descriptors=0 ); // compute() is not constant because DescriptorMatcher::match is not constant - CV_WRAP_AS(compute) void compute2( const Mat& image, vector& keypoints, Mat& imgDescriptor ) + CV_WRAP_AS(compute) void compute2( const Mat& image, vector& keypoints, CV_OUT Mat& imgDescriptor ) { compute(image,keypoints,imgDescriptor); } CV_WRAP int descriptorSize() const; From b6e25a9fc7b6fe511be1cd6f47ca2b45bbb51658 Mon Sep 17 00:00:00 2001 From: Neo Alienson Date: Mon, 16 Jun 2014 18:48:10 +0800 Subject: [PATCH 035/189] Fix typos --- .../introduction/android_binary_package/android_dev_intro.rst | 2 +- modules/highgui/src/cap_libv4l.cpp | 4 ++-- .../src/org/opencv/samples/puzzle15/Puzzle15Activity.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/tutorials/introduction/android_binary_package/android_dev_intro.rst b/doc/tutorials/introduction/android_binary_package/android_dev_intro.rst index 9545bee286..8c470925ff 100644 --- a/doc/tutorials/introduction/android_binary_package/android_dev_intro.rst +++ b/doc/tutorials/introduction/android_binary_package/android_dev_intro.rst @@ -5,7 +5,7 @@ Introduction into Android Development ************************************* -This guide was designed to help you in learning Android development basics and seting up your +This guide was designed to help you in learning Android development basics and setting up your working environment quickly. It was written with Windows 7 in mind, though it would work with Linux (Ubuntu), Mac OS X and any other OS supported by Android SDK. diff --git a/modules/highgui/src/cap_libv4l.cpp b/modules/highgui/src/cap_libv4l.cpp index e7aa5b5dfe..a05c4b2123 100644 --- a/modules/highgui/src/cap_libv4l.cpp +++ b/modules/highgui/src/cap_libv4l.cpp @@ -158,12 +158,12 @@ the symptoms were damaged image and 'Corrupt JPEG data: premature end of data se 11th patch: Apr 13, 2010, Filipe Almeida filipe.almeida@ist.utl.pt - Tries to setup all properties first through v4l2_ioctl call. -- Allows seting up all Video4Linux properties through cvSetCaptureProperty instead of only CV_CAP_PROP_BRIGHTNESS, CV_CAP_PROP_CONTRAST, CV_CAP_PROP_SATURATION, CV_CAP_PROP_HUE, CV_CAP_PROP_GAIN and CV_CAP_PROP_EXPOSURE. +- Allows setting up all Video4Linux properties through cvSetCaptureProperty instead of only CV_CAP_PROP_BRIGHTNESS, CV_CAP_PROP_CONTRAST, CV_CAP_PROP_SATURATION, CV_CAP_PROP_HUE, CV_CAP_PROP_GAIN and CV_CAP_PROP_EXPOSURE. 12th patch: Apr 16, 2010, Filipe Almeida filipe.almeida@ist.utl.pt - CvCaptureCAM_V4L structure cleanup (no longer needs _{min,max,} variables) - Introduction of v4l2_ctrl_range - minimum and maximum allowed values for v4l controls -- Allows seting up all Video4Linux properties through cvSetCaptureProperty using input values between 0.0 and 1.0 +- Allows setting up all Video4Linux properties through cvSetCaptureProperty using input values between 0.0 and 1.0 - Gets v4l properties first through v4l2_ioctl call (ignores capture->is_v4l2_device) - cvGetCaptureProperty adjusted to support the changes - Returns device properties to initial values after device closes diff --git a/samples/android/15-puzzle/src/org/opencv/samples/puzzle15/Puzzle15Activity.java b/samples/android/15-puzzle/src/org/opencv/samples/puzzle15/Puzzle15Activity.java index ebd34fc7e2..e82f0f9236 100644 --- a/samples/android/15-puzzle/src/org/opencv/samples/puzzle15/Puzzle15Activity.java +++ b/samples/android/15-puzzle/src/org/opencv/samples/puzzle15/Puzzle15Activity.java @@ -56,7 +56,7 @@ public class Puzzle15Activity extends Activity implements CvCameraViewListener, super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - Log.d(TAG, "Creating and seting view"); + Log.d(TAG, "Creating and setting view"); mOpenCvCameraView = (CameraBridgeViewBase) new JavaCameraView(this, -1); setContentView(mOpenCvCameraView); mOpenCvCameraView.setCvCameraViewListener(this); From 660d7cd3aeb06c4eba5d498ab3b2ec069ae5326c Mon Sep 17 00:00:00 2001 From: Daniel Angelov Date: Mon, 16 Jun 2014 13:05:17 +0100 Subject: [PATCH 036/189] Updated findHomography docs branch 2.4 Updated the documents to give warning to the users of `findHomography` that the function may return an empty matrix in some cases. The user must take care of checking that. --- .../calib3d/doc/camera_calibration_and_3d_reconstruction.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst index 8afc5ce39b..d616dfdea2 100644 --- a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst +++ b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst @@ -746,7 +746,7 @@ is minimized. If the parameter ``method`` is set to the default value 0, the fun uses all the point pairs to compute an initial homography estimate with a simple least-squares scheme. However, if not all of the point pairs ( -:math:`srcPoints_i`,:math:`dstPoints_i` ) fit the rigid perspective transformation (that is, there +:math:`srcPoints_i`, :math:`dstPoints_i` ) fit the rigid perspective transformation (that is, there are some outliers), this initial estimate will be poor. In this case, you can use one of the two robust methods. Both methods, ``RANSAC`` and ``LMeDS`` , try many different random subsets of the corresponding point pairs (of four pairs each), estimate @@ -769,7 +769,7 @@ if there are no outliers and the noise is rather small, use the default method ( The function is used to find initial intrinsic and extrinsic matrices. Homography matrix is determined up to a scale. Thus, it is normalized so that -:math:`h_{33}=1` . +:math:`h_{33}=1`. Note that whenever an H matrix cannot be estimated, an empty one will be returned. .. seealso:: From d9daa0cbaa203f76ed2260d9ef8f0ea783ff8a44 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Thu, 19 Jun 2014 15:18:52 +0400 Subject: [PATCH 037/189] ocl: added runtime flags for debugging --- modules/core/include/opencv2/core/ocl.hpp | 3 ++ modules/core/src/arithm.cpp | 6 +-- modules/core/src/ocl.cpp | 48 ++++++++++++++++++++++- modules/core/src/stat.cpp | 12 +++--- 4 files changed, 59 insertions(+), 10 deletions(-) diff --git a/modules/core/include/opencv2/core/ocl.hpp b/modules/core/include/opencv2/core/ocl.hpp index 99fa83a98d..5ab0d49b92 100644 --- a/modules/core/include/opencv2/core/ocl.hpp +++ b/modules/core/include/opencv2/core/ocl.hpp @@ -636,6 +636,9 @@ protected: CV_EXPORTS MatAllocator* getOpenCLAllocator(); +CV_EXPORTS_W bool isPerformanceCheckBypassed(); +#define OCL_PERFORMANCE_CHECK(condition) (cv::ocl::isPerformanceCheckBypassed() || (condition)) + }} #endif diff --git a/modules/core/src/arithm.cpp b/modules/core/src/arithm.cpp index 7ca8b4b48d..b1e69b7563 100644 --- a/modules/core/src/arithm.cpp +++ b/modules/core/src/arithm.cpp @@ -1501,7 +1501,7 @@ static void arithm_op(InputArray _src1, InputArray _src2, OutputArray _dst, Size sz1 = dims1 <= 2 ? psrc1->size() : Size(); Size sz2 = dims2 <= 2 ? psrc2->size() : Size(); #ifdef HAVE_OPENCL - bool use_opencl = _dst.isUMat() && dims1 <= 2 && dims2 <= 2; + bool use_opencl = OCL_PERFORMANCE_CHECK(_dst.isUMat()) && dims1 <= 2 && dims2 <= 2; #endif bool src1Scalar = checkScalar(*psrc1, type2, kind1, kind2); bool src2Scalar = checkScalar(*psrc2, type1, kind2, kind1); @@ -2876,7 +2876,7 @@ void cv::compare(InputArray _src1, InputArray _src2, OutputArray _dst, int op) haveScalar = true; } - CV_OCL_RUN(_src1.dims() <= 2 && _src2.dims() <= 2 && _dst.isUMat(), + CV_OCL_RUN(_src1.dims() <= 2 && _src2.dims() <= 2 && OCL_PERFORMANCE_CHECK(_dst.isUMat()), ocl_compare(_src1, _src2, _dst, op, haveScalar)) int kind1 = _src1.kind(), kind2 = _src2.kind(); @@ -3206,7 +3206,7 @@ void cv::inRange(InputArray _src, InputArray _lowerb, InputArray _upperb, OutputArray _dst) { CV_OCL_RUN(_src.dims() <= 2 && _lowerb.dims() <= 2 && - _upperb.dims() <= 2 && _dst.isUMat(), + _upperb.dims() <= 2 && OCL_PERFORMANCE_CHECK(_dst.isUMat()), ocl_inRange(_src, _lowerb, _upperb, _dst)) int skind = _src.kind(), lkind = _lowerb.kind(), ukind = _upperb.kind(); diff --git a/modules/core/src/ocl.cpp b/modules/core/src/ocl.cpp index 24ca6ee4d3..38f9107121 100644 --- a/modules/core/src/ocl.cpp +++ b/modules/core/src/ocl.cpp @@ -57,6 +57,28 @@ # endif #endif + +// TODO Move to some common place +static bool getBoolParameter(const char* name, bool defaultValue) +{ + const char* envValue = getenv(name); + if (envValue == NULL) + { + return defaultValue; + } + cv::String value = envValue; + if (value == "1" || value == "True" || value == "true" || value == "TRUE") + { + return true; + } + if (value == "0" || value == "False" || value == "false" || value == "FALSE") + { + return false; + } + CV_ErrorNoReturn(cv::Error::StsBadArg, cv::format("Invalid value for %s parameter: %s", name, value.c_str())); +} + + // TODO Move to some common place static size_t getConfigurationParameterForSize(const char* name, size_t defaultValue) { @@ -1302,10 +1324,22 @@ OCL_FUNC(cl_int, clReleaseEvent, (cl_event event), (event)) #endif +static bool isRaiseError() +{ + static bool initialized = false; + static bool value = false; + if (!initialized) + { + value = getBoolParameter("OPENCV_OPENCL_RAISE_ERROR", false); + initialized = true; + } + return value; +} + #ifdef _DEBUG #define CV_OclDbgAssert CV_DbgAssert #else -#define CV_OclDbgAssert(expr) (void)(expr) +#define CV_OclDbgAssert(expr) do { if (isRaiseError()) { CV_Assert(expr); } else { (void)(expr); } } while ((void)0, 0) #endif namespace cv { namespace ocl { @@ -4695,4 +4729,16 @@ void* Image2D::ptr() const return p ? p->handle : 0; } +bool isPerformanceCheckBypassed() +{ + static bool initialized = false; + static bool value = false; + if (!initialized) + { + value = getBoolParameter("OPENCV_OPENCL_PERF_CHECK_BYPASS", false); + initialized = true; + } + return value; +} + }} diff --git a/modules/core/src/stat.cpp b/modules/core/src/stat.cpp index 79da3c623f..4ae5ffbf79 100644 --- a/modules/core/src/stat.cpp +++ b/modules/core/src/stat.cpp @@ -566,7 +566,7 @@ cv::Scalar cv::sum( InputArray _src ) { #ifdef HAVE_OPENCL Scalar _res; - CV_OCL_RUN_(_src.isUMat() && _src.dims() <= 2, + CV_OCL_RUN_(OCL_PERFORMANCE_CHECK(_src.isUMat()) && _src.dims() <= 2, ocl_sum(_src, _res, OCL_OP_SUM), _res) #endif @@ -717,7 +717,7 @@ int cv::countNonZero( InputArray _src ) #ifdef HAVE_OPENCL int res = -1; - CV_OCL_RUN_(_src.isUMat() && _src.dims() <= 2, + CV_OCL_RUN_(OCL_PERFORMANCE_CHECK(_src.isUMat()) && _src.dims() <= 2, ocl_countNonZero(_src, res), res) #endif @@ -1017,7 +1017,7 @@ static bool ocl_meanStdDev( InputArray _src, OutputArray _mean, OutputArray _sdv void cv::meanStdDev( InputArray _src, OutputArray _mean, OutputArray _sdv, InputArray _mask ) { - CV_OCL_RUN(_src.isUMat() && _src.dims() <= 2, + CV_OCL_RUN(OCL_PERFORMANCE_CHECK(_src.isUMat()) && _src.dims() <= 2, ocl_meanStdDev(_src, _mean, _sdv, _mask)) Mat src = _src.getMat(), mask = _mask.getMat(); @@ -1558,7 +1558,7 @@ void cv::minMaxIdx(InputArray _src, double* minVal, CV_Assert( (cn == 1 && (_mask.empty() || _mask.type() == CV_8U)) || (cn > 1 && _mask.empty() && !minIdx && !maxIdx) ); - CV_OCL_RUN(_src.isUMat() && _src.dims() <= 2 && (_mask.empty() || _src.size() == _mask.size()), + CV_OCL_RUN(OCL_PERFORMANCE_CHECK(_src.isUMat()) && _src.dims() <= 2 && (_mask.empty() || _src.size() == _mask.size()), ocl_minMaxIdx(_src, minVal, maxVal, minIdx, maxIdx, _mask)) Mat src = _src.getMat(), mask = _mask.getMat(); @@ -2218,7 +2218,7 @@ double cv::norm( InputArray _src, int normType, InputArray _mask ) #ifdef HAVE_OPENCL double _result = 0; - CV_OCL_RUN_(_src.isUMat() && _src.dims() <= 2, + CV_OCL_RUN_(OCL_PERFORMANCE_CHECK(_src.isUMat()) && _src.dims() <= 2, ocl_norm(_src, normType, _mask, _result), _result) #endif @@ -2578,7 +2578,7 @@ double cv::norm( InputArray _src1, InputArray _src2, int normType, InputArray _m #ifdef HAVE_OPENCL double _result = 0; - CV_OCL_RUN_(_src1.isUMat(), + CV_OCL_RUN_(OCL_PERFORMANCE_CHECK(_src1.isUMat()), ocl_norm(_src1, _src2, normType, _mask, _result), _result) #endif From 05e0b3b7e6bf24f1f245ad9a54f1ce71c8784ff7 Mon Sep 17 00:00:00 2001 From: Marc Rollins Date: Thu, 19 Jun 2014 14:14:10 -0700 Subject: [PATCH 038/189] Fixing build error when using post-increment operator. --- modules/core/include/opencv2/core/mat.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/core/include/opencv2/core/mat.hpp b/modules/core/include/opencv2/core/mat.hpp index 45c25900c3..8a3167a032 100644 --- a/modules/core/include/opencv2/core/mat.hpp +++ b/modules/core/include/opencv2/core/mat.hpp @@ -2564,7 +2564,7 @@ SparseMatConstIterator_<_Tp>::operator ++() template inline SparseMatConstIterator_<_Tp> SparseMatConstIterator_<_Tp>::operator ++(int) { - SparseMatConstIterator it = *this; + SparseMatConstIterator_<_Tp> it = *this; SparseMatConstIterator::operator ++(); return it; } @@ -2608,7 +2608,7 @@ SparseMatIterator_<_Tp>::operator ++() template inline SparseMatIterator_<_Tp> SparseMatIterator_<_Tp>::operator ++(int) { - SparseMatIterator it = *this; + SparseMatIterator_<_Tp> it = *this; SparseMatConstIterator::operator ++(); return it; } From 84bb77e9140e6d566a689566548fc01c6b5d8e55 Mon Sep 17 00:00:00 2001 From: Ilya Krylov Date: Mon, 23 Jun 2014 17:06:40 +0400 Subject: [PATCH 039/189] Fixed android and windows x64 build issues --- modules/calib3d/src/fisheye.cpp | 74 +++++++++++++-------------- modules/calib3d/test/test_fisheye.cpp | 2 +- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/modules/calib3d/src/fisheye.cpp b/modules/calib3d/src/fisheye.cpp index 66cf589564..77a0e84288 100644 --- a/modules/calib3d/src/fisheye.cpp +++ b/modules/calib3d/src/fisheye.cpp @@ -309,47 +309,47 @@ void cv::fisheye::distortPoints(InputArray undistorted, OutputArray distorted, I ////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// cv::fisheye::undistortPoints -void cv::fisheye::undistortPoints( InputArray distorted, OutputArray undistorted, InputArray _K, InputArray _D, InputArray _R, InputArray _P) +void cv::fisheye::undistortPoints( InputArray distorted, OutputArray undistorted, InputArray K, InputArray D, InputArray R, InputArray P) { // will support only 2-channel data now for points CV_Assert(distorted.type() == CV_32FC2 || distorted.type() == CV_64FC2); undistorted.create(distorted.size(), distorted.type()); - CV_Assert(_P.empty() || _P.size() == Size(3, 3) || _P.size() == Size(4, 3)); - CV_Assert(_R.empty() || _R.size() == Size(3, 3) || _R.total() * _R.channels() == 3); - CV_Assert(_D.total() == 4 && _K.size() == Size(3, 3) && (_K.depth() == CV_32F || _K.depth() == CV_64F)); + CV_Assert(P.empty() || P.size() == Size(3, 3) || P.size() == Size(4, 3)); + CV_Assert(R.empty() || R.size() == Size(3, 3) || R.total() * R.channels() == 3); + CV_Assert(D.total() == 4 && K.size() == Size(3, 3) && (K.depth() == CV_32F || K.depth() == CV_64F)); cv::Vec2d f, c; - if (_K.depth() == CV_32F) + if (K.depth() == CV_32F) { - Matx33f camMat = _K.getMat(); + Matx33f camMat = K.getMat(); f = Vec2f(camMat(0, 0), camMat(1, 1)); c = Vec2f(camMat(0, 2), camMat(1, 2)); } else { - Matx33d camMat = _K.getMat(); + Matx33d camMat = K.getMat(); f = Vec2d(camMat(0, 0), camMat(1, 1)); c = Vec2d(camMat(0, 2), camMat(1, 2)); } - Vec4d k = _D.depth() == CV_32F ? (Vec4d)*_D.getMat().ptr(): *_D.getMat().ptr(); + Vec4d k = D.depth() == CV_32F ? (Vec4d)*D.getMat().ptr(): *D.getMat().ptr(); cv::Matx33d RR = cv::Matx33d::eye(); - if (!_R.empty() && _R.total() * _R.channels() == 3) + if (!R.empty() && R.total() * R.channels() == 3) { cv::Vec3d rvec; - _R.getMat().convertTo(rvec, CV_64F); + R.getMat().convertTo(rvec, CV_64F); RR = cv::Affine3d(rvec).rotation(); } - else if (!_R.empty() && _R.size() == Size(3, 3)) - _R.getMat().convertTo(RR, CV_64F); + else if (!R.empty() && R.size() == Size(3, 3)) + R.getMat().convertTo(RR, CV_64F); - if(!_P.empty()) + if(!P.empty()) { - cv::Matx33d P; - _P.getMat().colRange(0, 3).convertTo(P, CV_64F); - RR = P * RR; + cv::Matx33d PP; + P.getMat().colRange(0, 3).convertTo(PP, CV_64F); + RR = PP * RR; } // start undistorting @@ -398,52 +398,52 @@ void cv::fisheye::undistortPoints( InputArray distorted, OutputArray undistorted ////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// cv::fisheye::undistortPoints -void cv::fisheye::initUndistortRectifyMap( InputArray _K, InputArray _D, InputArray _R, InputArray _P, +void cv::fisheye::initUndistortRectifyMap( InputArray K, InputArray D, InputArray R, InputArray P, const cv::Size& size, int m1type, OutputArray map1, OutputArray map2 ) { CV_Assert( m1type == CV_16SC2 || m1type == CV_32F || m1type <=0 ); map1.create( size, m1type <= 0 ? CV_16SC2 : m1type ); map2.create( size, map1.type() == CV_16SC2 ? CV_16UC1 : CV_32F ); - CV_Assert((_K.depth() == CV_32F || _K.depth() == CV_64F) && (_D.depth() == CV_32F || _D.depth() == CV_64F)); - CV_Assert((_P.depth() == CV_32F || _P.depth() == CV_64F) && (_R.depth() == CV_32F || _R.depth() == CV_64F)); - CV_Assert(_K.size() == Size(3, 3) && (_D.empty() || _D.total() == 4)); - CV_Assert(_R.empty() || _R.size() == Size(3, 3) || _R.total() * _R.channels() == 3); - CV_Assert(_P.empty() || _P.size() == Size(3, 3) || _P.size() == Size(4, 3)); + CV_Assert((K.depth() == CV_32F || K.depth() == CV_64F) && (D.depth() == CV_32F || D.depth() == CV_64F)); + CV_Assert((P.depth() == CV_32F || P.depth() == CV_64F) && (R.depth() == CV_32F || R.depth() == CV_64F)); + CV_Assert(K.size() == Size(3, 3) && (D.empty() || D.total() == 4)); + CV_Assert(R.empty() || R.size() == Size(3, 3) || R.total() * R.channels() == 3); + CV_Assert(P.empty() || P.size() == Size(3, 3) || P.size() == Size(4, 3)); cv::Vec2d f, c; - if (_K.depth() == CV_32F) + if (K.depth() == CV_32F) { - Matx33f camMat = _K.getMat(); + Matx33f camMat = K.getMat(); f = Vec2f(camMat(0, 0), camMat(1, 1)); c = Vec2f(camMat(0, 2), camMat(1, 2)); } else { - Matx33d camMat = _K.getMat(); + Matx33d camMat = K.getMat(); f = Vec2d(camMat(0, 0), camMat(1, 1)); c = Vec2d(camMat(0, 2), camMat(1, 2)); } Vec4d k = Vec4d::all(0); - if (!_D.empty()) - k = _D.depth() == CV_32F ? (Vec4d)*_D.getMat().ptr(): *_D.getMat().ptr(); + if (!D.empty()) + k = D.depth() == CV_32F ? (Vec4d)*D.getMat().ptr(): *D.getMat().ptr(); - cv::Matx33d R = cv::Matx33d::eye(); - if (!_R.empty() && _R.total() * _R.channels() == 3) + cv::Matx33d RR = cv::Matx33d::eye(); + if (!R.empty() && R.total() * R.channels() == 3) { cv::Vec3d rvec; - _R.getMat().convertTo(rvec, CV_64F); - R = Affine3d(rvec).rotation(); + R.getMat().convertTo(rvec, CV_64F); + RR = Affine3d(rvec).rotation(); } - else if (!_R.empty() && _R.size() == Size(3, 3)) - _R.getMat().convertTo(R, CV_64F); + else if (!R.empty() && R.size() == Size(3, 3)) + R.getMat().convertTo(RR, CV_64F); - cv::Matx33d P = cv::Matx33d::eye(); - if (!_P.empty()) - _P.getMat().colRange(0, 3).convertTo(P, CV_64F); + cv::Matx33d PP = cv::Matx33d::eye(); + if (!P.empty()) + P.getMat().colRange(0, 3).convertTo(PP, CV_64F); - cv::Matx33d iR = (P * R).inv(cv::DECOMP_SVD); + cv::Matx33d iR = (PP * RR).inv(cv::DECOMP_SVD); for( int i = 0; i < size.height; ++i) { diff --git a/modules/calib3d/test/test_fisheye.cpp b/modules/calib3d/test/test_fisheye.cpp index 2749a1a6e3..774364df79 100644 --- a/modules/calib3d/test/test_fisheye.cpp +++ b/modules/calib3d/test/test_fisheye.cpp @@ -149,7 +149,7 @@ TEST_F(fisheyeTest, jacobians) cv::Mat k(4, 1, CV_64F); double alpha; - cv::RNG& r = cv::theRNG(); + cv::RNG r; r.fill(X, cv::RNG::NORMAL, 2, 1); X = cv::abs(X) * 10; From 98421e5970819c652a940fd28937c205ca27dba7 Mon Sep 17 00:00:00 2001 From: Nisarg Thakkar Date: Mon, 23 Jun 2014 20:15:23 +0530 Subject: [PATCH 040/189] Fix for Bug#3757: All dimension values are 0 after release is called --- modules/core/include/opencv2/core/mat.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/core/include/opencv2/core/mat.hpp b/modules/core/include/opencv2/core/mat.hpp index 45c25900c3..90e7de099a 100644 --- a/modules/core/include/opencv2/core/mat.hpp +++ b/modules/core/include/opencv2/core/mat.hpp @@ -366,7 +366,8 @@ inline void Mat::release() if( refcount && CV_XADD(refcount, -1) == 1 ) deallocate(); data = datastart = dataend = datalimit = 0; - size.p[0] = 0; + for(int i = 0; i < dims; i++) + size.p[i] = 0; refcount = 0; } From f45da9866a94dbf52f5fb955bea67fce913ca515 Mon Sep 17 00:00:00 2001 From: Jasper Date: Tue, 24 Jun 2014 11:52:56 +0100 Subject: [PATCH 041/189] Fix for VTK6.2 issue. --- modules/viz/src/vtk/vtkCocoaInteractorFix.mm | 235 +++++++++++++------ 1 file changed, 167 insertions(+), 68 deletions(-) diff --git a/modules/viz/src/vtk/vtkCocoaInteractorFix.mm b/modules/viz/src/vtk/vtkCocoaInteractorFix.mm index dad41b073e..481baf96ba 100644 --- a/modules/viz/src/vtk/vtkCocoaInteractorFix.mm +++ b/modules/viz/src/vtk/vtkCocoaInteractorFix.mm @@ -1,48 +1,54 @@ /*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2013, OpenCV Foundation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -// Authors: -// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com -// -// This workaround code was taken from PCL library(www.pointclouds.org) -// -//M*/ + // + // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. + // + // By downloading, copying, installing or using the software you agree to this license. + // If you do not agree to this license, do not download, install, + // copy or use the software. + // + // + // License Agreement + // For Open Source Computer Vision Library + // + // Copyright (C) 2013, OpenCV Foundation, all rights reserved. + // Third party copyrights are property of their respective owners. + // + // Redistribution and use in source and binary forms, with or without modification, + // are permitted provided that the following conditions are met: + // + // * Redistribution's of source code must retain the above copyright notice, + // this list of conditions and the following disclaimer. + // + // * Redistribution's in binary form must reproduce the above copyright notice, + // this list of conditions and the following disclaimer in the documentation + // and/or other materials provided with the distribution. + // + // * The name of the copyright holders may not be used to endorse or promote products + // derived from this software without specific prior written permission. + // + // This software is provided by the copyright holders and contributors "as is" and + // any express or implied warranties, including, but not limited to, the implied + // warranties of merchantability and fitness for a particular purpose are disclaimed. + // In no event shall the Intel Corporation or contributors be liable for any direct, + // indirect, incidental, special, exemplary, or consequential damages + // (including, but not limited to, procurement of substitute goods or services; + // loss of use, data, or profits; or business interruption) however caused + // and on any theory of liability, whether in contract, strict liability, + // or tort (including negligence or otherwise) arising in any way out of + // the use of this software, even if advised of the possibility of such damage. + // + // Authors: + // * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com + // + // This workaround code was taken from PCL library(www.pointclouds.org) + // + // Modified by Jasper Shemilt to work with VTK 6.2 + // The fix was needed because GetCocoaServer has been moved from + // vtkCocoaRenderWindowInteractor to vtkCocoaRenderWindow in VTK 6.2. + // This alteration to VTK happened almost a year ago according to the gitHub + // commit a3e9fc9. + // + //M*/ #import #include @@ -118,14 +124,14 @@ [application stop:application]; NSEvent *event = [NSEvent otherEventWithType:NSApplicationDefined - location:NSMakePoint(0.0,0.0) - modifierFlags:0 - timestamp:0 - windowNumber:-1 - context:nil - subtype:0 - data1:0 - data2:0]; + location:NSMakePoint(0.0,0.0) + modifierFlags:0 + timestamp:0 + windowNumber:-1 + context:nil + subtype:0 + data1:0 + data2:0]; [application postEvent:event atStart:YES]; } @@ -154,30 +160,121 @@ //---------------------------------------------------------------------------- +#if VTK_MAJOR_VERSION >= 6 && VTK_MINOR_VERSION >=2 + namespace cv { namespace viz + { + class vtkCocoaRenderWindowInteractorFix : public vtkCocoaRenderWindowInteractor + { + public: + static vtkCocoaRenderWindowInteractorFix *New (); + vtkTypeMacro (vtkCocoaRenderWindowInteractorFix, vtkCocoaRenderWindowInteractor) + + virtual void Start (); + virtual void TerminateApp (); + + protected: + vtkCocoaRenderWindowInteractorFix () {} + ~vtkCocoaRenderWindowInteractorFix () {} + + private: + vtkCocoaRenderWindowInteractorFix (const vtkCocoaRenderWindowInteractorFix&); // Not implemented. + void operator = (const vtkCocoaRenderWindowInteractorFix&); // Not implemented. + }; + + vtkStandardNewMacro (vtkCocoaRenderWindowInteractorFix) + + vtkSmartPointer vtkCocoaRenderWindowInteractorNew(); + + class vtkCocoaRenderWindowFix : public vtkCocoaRenderWindow + { + public: + static vtkCocoaRenderWindowFix *New (); + vtkTypeMacro ( vtkCocoaRenderWindowFix, vtkCocoaRenderWindow) + + virtual vtkCocoaServerFix * GetCocoaServer (); + virtual void SetCocoaServer (void* ); + + protected: + vtkCocoaRenderWindowFix () {} + ~vtkCocoaRenderWindowFix () {} + + private: + vtkCocoaRenderWindowFix (const vtkCocoaRenderWindowInteractorFix&); // Not implemented. + void operator = (const vtkCocoaRenderWindowFix&); // Not implemented. + }; + + vtkStandardNewMacro (vtkCocoaRenderWindowFix) + + vtkSmartPointer vtkCocoaRenderWindowNew(); + }} + +vtkCocoaServerFix * cv::viz::vtkCocoaRenderWindowFix::GetCocoaServer () +{ + return reinterpret_cast (this->GetCocoaServer ()); +} + +void cv::viz::vtkCocoaRenderWindowFix::SetCocoaServer (void* server) { - class vtkCocoaRenderWindowInteractorFix : public vtkCocoaRenderWindowInteractor + this->SetCocoaServer (server); +} + +void cv::viz::vtkCocoaRenderWindowInteractorFix::Start () +{ + vtkCocoaRenderWindowFix* renWin = vtkCocoaRenderWindowFix::SafeDownCast(this->GetRenderWindow ()); + if (renWin != NULL) { - public: - static vtkCocoaRenderWindowInteractorFix *New (); - vtkTypeMacro (vtkCocoaRenderWindowInteractorFix, vtkCocoaRenderWindowInteractor) + vtkCocoaServerFix *server = reinterpret_cast (renWin->GetCocoaServer ()); + if (!renWin->GetCocoaServer ()) + { + server = [vtkCocoaServerFix cocoaServerWithRenderWindow:renWin]; + renWin->SetCocoaServer (reinterpret_cast (server)); + } + + [server start]; + } +} + +void cv::viz::vtkCocoaRenderWindowInteractorFix::TerminateApp () +{ + vtkCocoaRenderWindowFix *renWin = vtkCocoaRenderWindowFix::SafeDownCast (this->RenderWindow); + if (renWin) + { + vtkCocoaServerFix *server = reinterpret_cast (renWin->GetCocoaServer ()); + [server stop]; + } +} + +vtkSmartPointer cv::viz::vtkCocoaRenderWindowInteractorNew() +{ + return vtkSmartPointer::New(); +} + +#else +namespace cv { namespace viz + { + class vtkCocoaRenderWindowInteractorFix : public vtkCocoaRenderWindowInteractor + { + public: + static vtkCocoaRenderWindowInteractorFix *New (); + vtkTypeMacro (vtkCocoaRenderWindowInteractorFix, vtkCocoaRenderWindowInteractor) - virtual void Start (); - virtual void TerminateApp (); + virtual void Start (); + virtual void TerminateApp (); - protected: - vtkCocoaRenderWindowInteractorFix () {} - ~vtkCocoaRenderWindowInteractorFix () {} + protected: + vtkCocoaRenderWindowInteractorFix () {} + ~vtkCocoaRenderWindowInteractorFix () {} - private: - vtkCocoaRenderWindowInteractorFix (const vtkCocoaRenderWindowInteractorFix&); // Not implemented. - void operator = (const vtkCocoaRenderWindowInteractorFix&); // Not implemented. - }; + private: + vtkCocoaRenderWindowInteractorFix (const vtkCocoaRenderWindowInteractorFix&); // Not implemented. + void operator = (const vtkCocoaRenderWindowInteractorFix&); // Not implemented. + }; - vtkStandardNewMacro (vtkCocoaRenderWindowInteractorFix) + vtkStandardNewMacro (vtkCocoaRenderWindowInteractorFix) - vtkSmartPointer vtkCocoaRenderWindowInteractorNew(); -}} + vtkSmartPointer vtkCocoaRenderWindowInteractorNew(); + }} void cv::viz::vtkCocoaRenderWindowInteractorFix::Start () { @@ -209,3 +306,5 @@ vtkSmartPointer cv::viz::vtkCocoaRenderWindowInteract { return vtkSmartPointer::New(); } + +#endif From cac1218eef7ebbd07951e961d547234d5c910bd2 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Sun, 29 Jun 2014 16:45:24 -0400 Subject: [PATCH 042/189] Build both Python 2 and Python 3 bindings If both Python 2 and Python 3 are found, then build bindings for both of them during the build process. Currently, one version of Python is detected automatically, and building for the other requires changes the CMake config. The largest chunk of this change generalizes OpenCVDetectPython.cmake to find both a Python 2 and Python 3 version of Python. Secondly, the opencv_python module is split into two modules, opencv_python2 and opencv_python3. Both are built from the same source. but for different versions of Python. --- CMakeLists.txt | 32 ++- cmake/OpenCVDetectPython.cmake | 293 ++++++++++++++++------- cmake/OpenCVMinDepVersions.cmake | 3 +- doc/CMakeLists.txt | 4 +- modules/java/CMakeLists.txt | 8 +- modules/java/android_test/CMakeLists.txt | 4 +- modules/matlab/CMakeLists.txt | 12 +- modules/python/CMakeLists.txt | 132 +--------- modules/python/common.cmake | 128 ++++++++++ modules/python/python2/CMakeLists.txt | 26 ++ modules/python/python3/CMakeLists.txt | 26 ++ 11 files changed, 440 insertions(+), 228 deletions(-) create mode 100644 modules/python/common.cmake create mode 100644 modules/python/python2/CMakeLists.txt create mode 100644 modules/python/python3/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 5abf449804..b9ff7bec16 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -991,18 +991,34 @@ endif() # ========================== python ========================== status("") -status(" Python:") -status(" Interpreter:" PYTHONINTERP_FOUND THEN "${PYTHON_EXECUTABLE} (ver ${PYTHON_VERSION_STRING})" ELSE NO) -if(BUILD_opencv_python) - if(PYTHONLIBS_VERSION_STRING) - status(" Libraries:" HAVE_opencv_python THEN "${PYTHON_LIBRARIES} (ver ${PYTHONLIBS_VERSION_STRING})" ELSE NO) +status(" Python 2:") +status(" Interpreter:" PYTHON2INTERP_FOUND THEN "${PYTHON2_EXECUTABLE} (ver ${PYTHON2_VERSION_STRING})" ELSE NO) +if(BUILD_opencv_python2) + if(PYTHON2LIBS_VERSION_STRING) + status(" Libraries:" HAVE_opencv_python2 THEN "${PYTHON2_LIBRARIES} (ver ${PYTHON2LIBS_VERSION_STRING})" ELSE NO) else() - status(" Libraries:" HAVE_opencv_python THEN "${PYTHON_LIBRARIES}" ELSE NO) + status(" Libraries:" HAVE_opencv_python2 THEN "${PYTHON2_LIBRARIES}" ELSE NO) endif() - status(" numpy:" PYTHON_NUMPY_INCLUDE_DIRS THEN "${PYTHON_NUMPY_INCLUDE_DIRS} (ver ${PYTHON_NUMPY_VERSION})" ELSE "NO (Python wrappers can not be generated)") - status(" packages path:" PYTHON_EXECUTABLE THEN "${PYTHON_PACKAGES_PATH}" ELSE "-") + status(" numpy:" PYTHON2_NUMPY_INCLUDE_DIRS THEN "${PYTHON2_NUMPY_INCLUDE_DIRS} (ver ${PYTHON2_NUMPY_VERSION})" ELSE "NO (Python wrappers can not be generated)") + status(" packages path:" PYTHON2_EXECUTABLE THEN "${PYTHON2_PACKAGES_PATH}" ELSE "-") endif() +status("") +status(" Python 3:") +status(" Interpreter:" PYTHON3INTERP_FOUND THEN "${PYTHON3_EXECUTABLE} (ver ${PYTHON3_VERSION_STRING})" ELSE NO) +if(BUILD_opencv_python3) + if(PYTHON3LIBS_VERSION_STRING) + status(" Libraries:" HAVE_opencv_python3 THEN "${PYTHON3_LIBRARIES} (ver ${PYTHON3LIBS_VERSION_STRING})" ELSE NO) + else() + status(" Libraries:" HAVE_opencv_python3 THEN "${PYTHON3_LIBRARIES}" ELSE NO) + endif() + status(" numpy:" PYTHON3_NUMPY_INCLUDE_DIRS THEN "${PYTHON3_NUMPY_INCLUDE_DIRS} (ver ${PYTHON3_NUMPY_VERSION})" ELSE "NO (Python3 wrappers can not be generated)") + status(" packages path:" PYTHON3_EXECUTABLE THEN "${PYTHON3_PACKAGES_PATH}" ELSE "-") +endif() + +status("") +status(" Python (for build):" PYTHON_DEFAULT_AVAILABLE THEN "${PYTHON_DEFAULT_EXECUTABLE}" ELSE NO) + # ========================== java ========================== status("") status(" Java:") diff --git a/cmake/OpenCVDetectPython.cmake b/cmake/OpenCVDetectPython.cmake index 95a26dbf32..4b71052685 100644 --- a/cmake/OpenCVDetectPython.cmake +++ b/cmake/OpenCVDetectPython.cmake @@ -1,101 +1,234 @@ -if(WIN32 AND NOT PYTHON_EXECUTABLE) - # search for executable with the same bitness as resulting binaries - # standard FindPythonInterp always prefers executable from system path - # this is really important because we are using the interpreter for numpy search and for choosing the install location - foreach(_CURRENT_VERSION ${Python_ADDITIONAL_VERSIONS} 2.7 "${MIN_VER_PYTHON}") - find_host_program(PYTHON_EXECUTABLE - NAMES python${_CURRENT_VERSION} python - PATHS - [HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Python\\\\PythonCore\\\\${_CURRENT_VERSION}\\\\InstallPath] - [HKEY_CURRENT_USER\\\\SOFTWARE\\\\Python\\\\PythonCore\\\\${_CURRENT_VERSION}\\\\InstallPath] - NO_SYSTEM_ENVIRONMENT_PATH - ) - endforeach() -endif() -find_host_package(PythonInterp 2.7) -if(NOT PYTHONINTERP_FOUND) -find_host_package(PythonInterp "${MIN_VER_PYTHON}") -endif() +# Find specified Python version +# Arguments: +# preferred_version (value): Version to check for first +# min_version (value): Minimum supported version +# library_env (value): Name of Python library ENV variable to check +# include_dir_env (value): Name of Python include directory ENV variable to check +# found (variable): Set if interpreter found +# executable (variable): Output of executable found +# version_string (variable): Output of found version +# version_major (variable): Output of found major version +# version_minor (variable): Output of found minor version +# libs_found (variable): Set if libs found +# libs_version_string (variable): Output of found libs version +# libraries (variable): Output of found Python libraries +# library (variable): Output of found Python library +# debug_libraries (variable): Output of found Python debug libraries +# debug_library (variable): Output of found Python debug library +# include_path (variable): Output of found Python include path +# include_dir (variable): Output of found Python include dir +# include_dir2 (variable): Output of found Python include dir2 +# packages_path (variable): Output of found Python packages path +# numpy_include_dirs (variable): Output of found Python Numpy include dirs +# numpy_version (variable): Output of found Python Numpy version +function(find_python preferred_version min_version library_env include_dir_env + found executable version_string version_major version_minor + libs_found libs_version_string libraries library debug_libraries + debug_library include_path include_dir include_dir2 packages_path + numpy_include_dirs numpy_version) + if(WIN32 AND NOT ${executable}) + # search for executable with the same bitness as resulting binaries + # standard FindPythonInterp always prefers executable from system path + # this is really important because we are using the interpreter for numpy search and for choosing the install location + foreach(_CURRENT_VERSION ${Python_ADDITIONAL_VERSIONS} "${preferred_version}" "${min_version}") + find_host_program(executable + NAMES python${_CURRENT_VERSION} python + PATHS + [HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Python\\\\PythonCore\\\\${_CURRENT_VERSION}\\\\InstallPath] + [HKEY_CURRENT_USER\\\\SOFTWARE\\\\Python\\\\PythonCore\\\\${_CURRENT_VERSION}\\\\InstallPath] + NO_SYSTEM_ENVIRONMENT_PATH + ) + endforeach() + endif() -unset(HAVE_SPHINX CACHE) + find_host_package(PythonInterp "${preferred_version}") + if(NOT PYTHONINTERP_FOUND) + find_host_package(PythonInterp "${min_version}") + endif() -if(PYTHONINTERP_FOUND) - set(PYTHON_VERSION_MAJOR_MINOR "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}") + if(PYTHONINTERP_FOUND) + # Copy outputs + set(_found ${PYTHONINTERP_FOUND}) + set(_executable ${PYTHON_EXECUTABLE}) + set(_version_string ${PYTHON_VERSION_STRING}) + set(_version_major ${PYTHON_VERSION_MAJOR}) + set(_version_minor ${PYTHON_VERSION_MINOR}) + set(_version_patch ${PYTHON_VERSION_PATCH}) - if(NOT ANDROID AND NOT IOS) - ocv_check_environment_variables(PYTHON_LIBRARY PYTHON_INCLUDE_DIR) - # not using PYTHON_VERSION_STRING here, because it might not conform to the CMake version format - find_host_package(PythonLibs "${PYTHON_VERSION_MAJOR_MINOR}.${PYTHON_VERSION_PATCH}" EXACT) + # Clear find_host_package side effects + unset(PYTHONINTERP_FOUND) + unset(PYTHON_EXECUTABLE CACHE) + unset(PYTHON_VERSION_STRING) + unset(PYTHON_VERSION_MAJOR) + unset(PYTHON_VERSION_MINOR) + unset(PYTHON_VERSION_PATCH) endif() - if(NOT ANDROID AND NOT IOS) - if(CMAKE_HOST_UNIX) - execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import *; print(get_python_lib())" - RESULT_VARIABLE PYTHON_CVPY_PROCESS - OUTPUT_VARIABLE PYTHON_STD_PACKAGES_PATH - OUTPUT_STRIP_TRAILING_WHITESPACE) - if("${PYTHON_STD_PACKAGES_PATH}" MATCHES "site-packages") - set(_PYTHON_PACKAGES_PATH "python${PYTHON_VERSION_MAJOR_MINOR}/site-packages") - else() #debian based assumed, install to the dist-packages. - set(_PYTHON_PACKAGES_PATH "python${PYTHON_VERSION_MAJOR_MINOR}/dist-packages") + if(_found) + set(_version_major_minor "${_version_major}.${_version_minor}") + + if(NOT ANDROID AND NOT IOS) + ocv_check_environment_variables(${library_env} ${include_dir_env}) + if(${library}) + set(PYTHON_LIBRARY "${${library_env}}") endif() - if(EXISTS "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/${PYTHON_PACKAGES_PATH}") - set(_PYTHON_PACKAGES_PATH "lib${LIB_SUFFIX}/${_PYTHON_PACKAGES_PATH}") - else() - set(_PYTHON_PACKAGES_PATH "lib/${_PYTHON_PACKAGES_PATH}") + if(${include_dir}) + set(PYTHON_INCLUDE_DIR "${${include_dir_env}}") endif() - elseif(CMAKE_HOST_WIN32) - get_filename_component(PYTHON_PATH "${PYTHON_EXECUTABLE}" PATH) - file(TO_CMAKE_PATH "${PYTHON_PATH}" PYTHON_PATH) - if(NOT EXISTS "${PYTHON_PATH}/Lib/site-packages") - unset(PYTHON_PATH) - get_filename_component(PYTHON_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${PYTHON_VERSION_MAJOR_MINOR}\\InstallPath]" ABSOLUTE) - if(NOT PYTHON_PATH) - get_filename_component(PYTHON_PATH "[HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${PYTHON_VERSION_MAJOR_MINOR}\\InstallPath]" ABSOLUTE) - endif() - file(TO_CMAKE_PATH "${PYTHON_PATH}" PYTHON_PATH) + + # not using _version_string here, because it might not conform to the CMake version format + find_host_package(PythonLibs "${_version_major_minor}.${_version_patch}" EXACT) + + if(PYTHONLIBS_FOUND) + # Copy outputs + set(_libs_found ${PYTHONLIBS_FOUND}) + set(_libraries ${PYTHON_LIBRARIES}) + set(_include_path ${PYTHON_INCLUDE_PATH}) + set(_include_dirs ${PYTHON_INCLUDE_DIRS}) + set(_debug_libraries ${PYTHON_DEBUG_LIBRARIES}) + set(_libs_version_string ${PYTHONLIBS_VERSION_STRING}) + set(_debug_library ${PYTHON_DEBUG_LIBRARY}) + set(_library ${PYTHON_LIBRARY}) + set(_library_debug ${PYTHON_LIBRARY_DEBUG}) + set(_library_release ${PYTHON_LIBRARY_RELEASE}) + set(_include_dir ${PYTHON_INCLUDE_DIR}) + set(_include_dir2 ${PYTHON_INCLUDE_DIR2}) + + # Clear find_host_package side effects + unset(PYTHONLIBS_FOUND) + unset(PYTHON_LIBRARIES) + unset(PYTHON_INCLUDE_PATH) + unset(PYTHON_INCLUDE_DIRS) + unset(PYTHON_DEBUG_LIBRARIES) + unset(PYTHONLIBS_VERSION_STRING) + unset(PYTHON_DEBUG_LIBRARY CACHE) + unset(PYTHON_LIBRARY) + unset(PYTHON_LIBRARY_DEBUG) + unset(PYTHON_LIBRARY_RELEASE) + unset(PYTHON_LIBRARY CACHE) + unset(PYTHON_LIBRARY_DEBUG CACHE) + unset(PYTHON_LIBRARY_RELEASE CACHE) + unset(PYTHON_INCLUDE_DIR CACHE) + unset(PYTHON_INCLUDE_DIR2 CACHE) endif() - set(_PYTHON_PACKAGES_PATH "${PYTHON_PATH}/Lib/site-packages") endif() - SET(PYTHON_PACKAGES_PATH "${_PYTHON_PACKAGES_PATH}" CACHE PATH "Where to install the python packages.") - - if(NOT PYTHON_NUMPY_INCLUDE_DIRS) - if(CMAKE_CROSSCOMPILING) - message(STATUS "Cannot probe for Python/Numpy support (because we are cross-compiling OpenCV)") - message(STATUS "If you want to enable Python/Numpy support, set the following variables:") - message(STATUS " PYTHON_INCLUDE_PATH") - message(STATUS " PYTHON_LIBRARIES") - message(STATUS " PYTHON_NUMPY_INCLUDE_DIRS") - else() - # Attempt to discover the NumPy include directory. If this succeeds, then build python API with NumPy - execute_process(COMMAND "${PYTHON_EXECUTABLE}" -c "import os; os.environ['DISTUTILS_USE_SDK']='1'; import numpy.distutils; print(os.pathsep.join(numpy.distutils.misc_util.get_numpy_include_dirs()))" - RESULT_VARIABLE PYTHON_NUMPY_PROCESS - OUTPUT_VARIABLE PYTHON_NUMPY_INCLUDE_DIRS + + if(NOT ANDROID AND NOT IOS) + if(CMAKE_HOST_UNIX) + execute_process(COMMAND ${_executable} -c "from distutils.sysconfig import *; print(get_python_lib())" + RESULT_VARIABLE _cvpy_process + OUTPUT_VARIABLE _std_packages_path OUTPUT_STRIP_TRAILING_WHITESPACE) + if("${_std_packages_path}" MATCHES "site-packages") + set(_packages_path "python${_version_major_minor}/site-packages") + else() #debian based assumed, install to the dist-packages. + set(_packages_path "python${_version_major_minor}/dist-packages") + endif() + if(EXISTS "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/${${packages_path}}") + set(_packages_path "lib${LIB_SUFFIX}/${_packages_path}") + else() + set(_packages_path "lib/${_packages_path}") + endif() + elseif(CMAKE_HOST_WIN32) + get_filename_component(_path "${_executable}" PATH) + file(TO_CMAKE_PATH "${_path}" _path) + if(NOT EXISTS "${_path}/Lib/site-packages") + unset(_path) + get_filename_component(_path "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_version_major_minor}\\InstallPath]" ABSOLUTE) + if(NOT _path) + get_filename_component(_path "[HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_version_major_minor}\\InstallPath]" ABSOLUTE) + endif() + file(TO_CMAKE_PATH "${_path}" _path) + endif() + set(_packages_path "${_path}/Lib/site-packages") + unset(_path) + endif() + + set(_numpy_include_dirs ${${numpy_include_dirs}}) + + if(NOT _numpy_include_dirs) + if(CMAKE_CROSSCOMPILING) + message(STATUS "Cannot probe for Python/Numpy support (because we are cross-compiling OpenCV)") + message(STATUS "If you want to enable Python/Numpy support, set the following variables:") + message(STATUS " PYTHON2_INCLUDE_PATH") + message(STATUS " PYTHON2_LIBRARIES") + message(STATUS " PYTHON2_NUMPY_INCLUDE_DIRS") + message(STATUS " PYTHON3_INCLUDE_PATH") + message(STATUS " PYTHON3_LIBRARIES") + message(STATUS " PYTHON3_NUMPY_INCLUDE_DIRS") + else() + # Attempt to discover the NumPy include directory. If this succeeds, then build python API with NumPy + execute_process(COMMAND "${_executable}" -c "import os; os.environ['DISTUTILS_USE_SDK']='1'; import numpy.distutils; print(os.pathsep.join(numpy.distutils.misc_util.get_numpy_include_dirs()))" + RESULT_VARIABLE _numpy_process + OUTPUT_VARIABLE _numpy_include_dirs + OUTPUT_STRIP_TRAILING_WHITESPACE) - if(NOT PYTHON_NUMPY_PROCESS EQUAL 0) - unset(PYTHON_NUMPY_INCLUDE_DIRS) + if(NOT _numpy_process EQUAL 0) + unset(_numpy_include_dirs) + endif() endif() endif() - endif() - if(PYTHON_NUMPY_INCLUDE_DIRS) - file(TO_CMAKE_PATH "${PYTHON_NUMPY_INCLUDE_DIRS}" _PYTHON_NUMPY_INCLUDE_DIRS) - set(PYTHON_NUMPY_INCLUDE_DIRS ${_PYTHON_NUMPY_INCLUDE_DIRS} CACHE PATH "Path to numpy headers") - if(CMAKE_CROSSCOMPILING) - if(NOT PYTHON_NUMPY_VERSION) - set(PYTHON_NUMPY_VERSION "undefined - cannot be probed because of the cross-compilation") + if(_numpy_include_dirs) + file(TO_CMAKE_PATH "${_numpy_include_dirs}" _numpy_include_dirs) + if(CMAKE_CROSSCOMPILING) + if(NOT _numpy_version) + set(_numpy_version "undefined - cannot be probed because of the cross-compilation") + endif() + else() + execute_process(COMMAND "${_executable}" -c "import numpy; print(numpy.version.version)" + RESULT_VARIABLE _numpy_process + OUTPUT_VARIABLE _numpy_version + OUTPUT_STRIP_TRAILING_WHITESPACE) endif() - else() - execute_process(COMMAND "${PYTHON_EXECUTABLE}" -c "import numpy; print(numpy.version.version)" - RESULT_VARIABLE PYTHON_NUMPY_PROCESS - OUTPUT_VARIABLE PYTHON_NUMPY_VERSION - OUTPUT_STRIP_TRAILING_WHITESPACE) endif() - endif() - endif(NOT ANDROID AND NOT IOS) + endif(NOT ANDROID AND NOT IOS) + endif() + + # Export return values + set(${found} "${_found}" PARENT_SCOPE) + set(${executable} "${_executable}" CACHE FILEPATH "Path to Python interpretor") + set(${version_string} "${_version_string}" PARENT_SCOPE) + set(${version_major} "${_version_major}" PARENT_SCOPE) + set(${version_minor} "${_version_minor}" PARENT_SCOPE) + set(${libs_found} "${_libs_found}" PARENT_SCOPE) + set(${libs_version_string} "${_libs_version_string}" PARENT_SCOPE) + set(${libraries} "${_libraries}" PARENT_SCOPE) + set(${library} "${_library}" CACHE FILEPATH "Path to Python library") + set(${debug_libraries} "${_debug_libraries}" PARENT_SCOPE) + set(${debug_library} "${_debug_library}" CACHE FILEPATH "Path to Python debug") + set(${include_path} "${_include_path}" PARENT_SCOPE) + set(${include_dir} "${_include_dir}" CACHE PATH "Python include dir") + set(${include_dir2} "${_include_dir2}" CACHE PATH "Python include dir 2") + set(${packages_path} "${_packages_path}" CACHE PATH "Where to install the python packages.") + set(${numpy_include_dirs} ${_numpy_include_dirs} CACHE PATH "Path to numpy headers") + set(${numpy_version} "${_numpy_version}" PARENT_SCOPE) +endfunction(find_python) + +find_python(2.7 "${MIN_VER_PYTHON2}" PYTHON2_LIBRARY PYTHON2_INCLUDE_DIR + PYTHON2INTERP_FOUND PYTHON2_EXECUTABLE PYTHON2_VERSION_STRING + PYTHON2_VERSION_MAJOR PYTHON2_VERSION_MINOR PYTHON2LIBS_FOUND + PYTHON2LIBS_VERSION_STRING PYTHON2_LIBRARIES PYTHON2_LIBRARY + PYTHON2_DEBUG_LIBRARIES PYTHON2_LIBRARY_DEBUG PYTHON2_INCLUDE_PATH + PYTHON2_INCLUDE_DIR PYTHON2_INCLUDE_DIR2 PYTHON2_PACKAGES_PATH + PYTHON2_NUMPY_INCLUDE_DIRS PYTHON2_NUMPY_VERSION) + +find_python(3.4 "${MIN_VER_PYTHON3}" PYTHON3_LIBRARY PYTHON3_INCLUDE_DIR + PYTHON3INTERP_FOUND PYTHON3_EXECUTABLE PYTHON3_VERSION_STRING + PYTHON3_VERSION_MAJOR PYTHON3_VERSION_MINOR PYTHON3LIBS_FOUND + PYTHON3LIBS_VERSION_STRING PYTHON3_LIBRARIES PYTHON3_LIBRARY + PYTHON3_DEBUG_LIBRARIES PYTHON3_LIBRARY_DEBUG PYTHON3_INCLUDE_PATH + PYTHON3_INCLUDE_DIR PYTHON3_INCLUDE_DIR2 PYTHON3_PACKAGES_PATH + PYTHON3_NUMPY_INCLUDE_DIRS PYTHON3_NUMPY_VERSION) + +# Use Python 2 as default Python interpreter +if(PYTHON2LIBS_FOUND) + set(PYTHON_DEFAULT_AVAILABLE "TRUE") + set(PYTHON_DEFAULT_EXECUTABLE "${PYTHON2_EXECUTABLE}") endif() +unset(HAVE_SPHINX CACHE) + if(BUILD_DOCS) find_host_program(SPHINX_BUILD sphinx-build) find_host_program(PLANTUML plantuml) diff --git a/cmake/OpenCVMinDepVersions.cmake b/cmake/OpenCVMinDepVersions.cmake index 9dae725481..e8591e26e2 100644 --- a/cmake/OpenCVMinDepVersions.cmake +++ b/cmake/OpenCVMinDepVersions.cmake @@ -1,5 +1,6 @@ set(MIN_VER_CMAKE 2.8.7) set(MIN_VER_CUDA 4.2) -set(MIN_VER_PYTHON 2.6) +set(MIN_VER_PYTHON2 2.6) +set(MIN_VER_PYTHON3 3.2) set(MIN_VER_ZLIB 1.2.3) set(MIN_VER_GTK 2.18.0) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 1c284539ee..7c641cc260 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -105,8 +105,8 @@ if(BUILD_DOCS AND HAVE_SPHINX) COMMAND ${SPHINX_BUILD} ${BUILD_PLANTUML} -b latex -c "${CMAKE_CURRENT_SOURCE_DIR}" "${DOC_FAKE_ROOT}" . COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/pics ${CMAKE_CURRENT_BINARY_DIR}/doc/opencv1/pics COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/mymath.sty ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/patch_refman_latex.py" opencv2refman.tex - COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/patch_refman_latex.py" opencv2manager.tex + COMMAND ${PYTHON_DEFAULT_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/patch_refman_latex.py" opencv2refman.tex + COMMAND ${PYTHON_DEFAULT_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/patch_refman_latex.py" opencv2manager.tex COMMAND ${CMAKE_COMMAND} -E echo "Generating opencv2refman.pdf" COMMAND ${PDFLATEX_COMPILER} -interaction=batchmode opencv2refman.tex COMMAND ${PDFLATEX_COMPILER} -interaction=batchmode opencv2refman.tex diff --git a/modules/java/CMakeLists.txt b/modules/java/CMakeLists.txt index 1948e21141..4db3847bd2 100644 --- a/modules/java/CMakeLists.txt +++ b/modules/java/CMakeLists.txt @@ -1,7 +1,7 @@ # ---------------------------------------------------------------------------- # CMake file for java support # ---------------------------------------------------------------------------- -if(IOS OR NOT PYTHON_EXECUTABLE OR NOT ANT_EXECUTABLE OR NOT (JNI_FOUND OR (ANDROID AND ANDROID_NATIVE_API_LEVEL GREATER 7))) +if(IOS OR NOT PYTHON_DEFAULT_AVAILABLE OR NOT ANT_EXECUTABLE OR NOT (JNI_FOUND OR (ANDROID AND ANDROID_NATIVE_API_LEVEL GREATER 7))) ocv_module_disable(java) endif() @@ -100,7 +100,7 @@ foreach(module ${OPENCV_JAVA_MODULES}) # first run of gen_java.py (to get list of generated files) file(REMOVE_RECURSE "${CMAKE_CURRENT_BINARY_DIR}/gen_java_out/") file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/gen_java_out") - execute_process(COMMAND ${PYTHON_EXECUTABLE} "${scripts_gen_java}" "${scripts_hdr_parser}" ${module} ${opencv_public_headers_${module}} + execute_process(COMMAND ${PYTHON_DEFAULT_EXECUTABLE} "${scripts_gen_java}" "${scripts_hdr_parser}" ${module} ${opencv_public_headers_${module}} WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/gen_java_out" OUTPUT_QUIET ERROR_QUIET) unset(generated_java_sources_${module}) @@ -124,7 +124,7 @@ set(step1_depends "${scripts_gen_java}" "${scripts_hdr_parser}" ${opencv_public_ foreach(module ${OPENCV_JAVA_MODULES}) # second run of gen_java.py (at build time) add_custom_command(OUTPUT ${generated_java_sources_${module}} "${CMAKE_CURRENT_BINARY_DIR}/${module}.cpp" - COMMAND ${PYTHON_EXECUTABLE} "${scripts_gen_java}" "${scripts_hdr_parser}" ${module} ${opencv_public_headers_${module}} + COMMAND ${PYTHON_DEFAULT_EXECUTABLE} "${scripts_gen_java}" "${scripts_hdr_parser}" ${module} ${opencv_public_headers_${module}} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} DEPENDS "${scripts_gen_java}" "${scripts_hdr_parser}" ${opencv_public_headers_${module}} ) @@ -134,7 +134,7 @@ endforeach() set(step2_depends ${step1_depends} ${scripts_gen_javadoc} ${scripts_rst_parser} ${javadoc_rst_sources} ${generated_java_sources} ${handwrittren_java_sources}) string(REPLACE ";" "," OPENCV_JAVA_MODULES_STR "${OPENCV_JAVA_MODULES}") add_custom_command(OUTPUT ${documented_java_files} - COMMAND ${PYTHON_EXECUTABLE} "${scripts_gen_javadoc}" --modules ${OPENCV_JAVA_MODULES_STR} "${CMAKE_CURRENT_SOURCE_DIR}/generator/src/java" "${CMAKE_CURRENT_BINARY_DIR}" 2> "${CMAKE_CURRENT_BINARY_DIR}/get_javadoc_errors.log" + COMMAND ${PYTHON_DEFUALT_EXECUTABLE} "${scripts_gen_javadoc}" --modules ${OPENCV_JAVA_MODULES_STR} "${CMAKE_CURRENT_SOURCE_DIR}/generator/src/java" "${CMAKE_CURRENT_BINARY_DIR}" 2> "${CMAKE_CURRENT_BINARY_DIR}/get_javadoc_errors.log" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} DEPENDS ${step2_depends} VERBATIM diff --git a/modules/java/android_test/CMakeLists.txt b/modules/java/android_test/CMakeLists.txt index 41f69e6ca7..a920508899 100644 --- a/modules/java/android_test/CMakeLists.txt +++ b/modules/java/android_test/CMakeLists.txt @@ -59,9 +59,9 @@ add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E add_dependencies(opencv_tests ${PROJECT_NAME}) -if(PYTHON_EXECUTABLE) +if(PYTHON_DEFAULT_AVAILABLE) set(CHECK_TEST_COVERAGE "${OPENCV_MODULE_opencv_java_LOCATION}/check-tests.py") add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD - COMMAND ${PYTHON_EXECUTABLE} ${CHECK_TEST_COVERAGE} "${CMAKE_CURRENT_SOURCE_DIR}/src" "${OpenCV_BINARY_DIR}/src" > "${CMAKE_CURRENT_BINARY_DIR}/tests_coverage.log" + COMMAND ${PYTHON_DEFAULT_EXECUTABLE} ${CHECK_TEST_COVERAGE} "${CMAKE_CURRENT_SOURCE_DIR}/src" "${OpenCV_BINARY_DIR}/src" > "${CMAKE_CURRENT_BINARY_DIR}/tests_coverage.log" ) endif() diff --git a/modules/matlab/CMakeLists.txt b/modules/matlab/CMakeLists.txt index a4c1c3b164..095db36499 100644 --- a/modules/matlab/CMakeLists.txt +++ b/modules/matlab/CMakeLists.txt @@ -51,7 +51,7 @@ endmacro() if (IOS OR ANDROID OR NOT MATLAB_FOUND) ocv_module_disable(matlab) return() -elseif (NOT PYTHONLIBS_FOUND) +elseif (NOT PYTHON_DEFAULT_AVAILABLE) message(WARNING "A required dependency of the matlab module (PythonLibs) was not found. Disabling Matlab bindings...") ocv_module_disable(matlab) return() @@ -152,7 +152,7 @@ if (NOT MEX_WORKS) # attempt to generate a gateway for a function message(STATUS "Trying to generate Matlab code") execute_process( - COMMAND ${PYTHON_EXECUTABLE} + COMMAND ${PYTHON_DEFAULT_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generator/gen_matlab.py --jinja2 ${JINJA2_PATH} --hdrparser ${HDR_PARSER_PATH} @@ -212,7 +212,7 @@ file(REMOVE ${GENERATE_PROXY} ${COMPILE_PROXY}) # call the python executable to generate the Matlab gateways add_custom_command( OUTPUT ${GENERATE_PROXY} - COMMAND ${PYTHON_EXECUTABLE} + COMMAND ${PYTHON_DEFAULT_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generator/gen_matlab.py --jinja2 ${JINJA2_PATH} --hdrparser ${HDR_PARSER_PATH} @@ -221,7 +221,7 @@ add_custom_command( --modules ${opencv_modules} --extra ${opencv_extra_hdrs} --outdir ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${PYTHON_EXECUTABLE} + COMMAND ${PYTHON_DEFAULT_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generator/build_info.py --jinja2 ${JINJA2_PATH} --os ${CMAKE_SYSTEM} @@ -235,7 +235,7 @@ add_custom_command( --modules ${opencv_modules} --configuration $ --outdir ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${PYTHON_EXECUTABLE} + COMMAND ${PYTHON_DEFAULT_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generator/cvmex.py --jinja2 ${JINJA2_PATH} --opts="${MEX_OPTS}" @@ -298,7 +298,7 @@ string(REPLACE " " "\\ " MEX_CXXFLAGS ${MEX_CXXFLAGS}) string(REPLACE ";" "\\ " MEX_INCLUDE_DIRS "${MEX_INCLUDE_DIRS}") install(CODE "execute_process( - COMMAND ${PYTHON_EXECUTABLE} + COMMAND ${PYTHON_DEFAULT_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generator/cvmex.py --jinja2 ${JINJA2_PATH} --opts=${MEX_OPTS} diff --git a/modules/python/CMakeLists.txt b/modules/python/CMakeLists.txt index a50e372cc9..205562dadd 100644 --- a/modules/python/CMakeLists.txt +++ b/modules/python/CMakeLists.txt @@ -3,132 +3,14 @@ # ---------------------------------------------------------------------------- if(WIN32 AND CMAKE_BUILD_TYPE STREQUAL "Debug") - ocv_module_disable(python) + ocv_module_disable(python2) + ocv_module_disable(python3) endif() -if(ANDROID OR IOS OR NOT PYTHONLIBS_FOUND OR NOT PYTHON_NUMPY_INCLUDE_DIRS) - ocv_module_disable(python) +if(ANDROID OR IOS) + ocv_module_disable(python2) + ocv_module_disable(python3) endif() -set(the_description "The python bindings") -ocv_add_module(python BINDINGS opencv_core opencv_flann opencv_imgproc opencv_video opencv_ml opencv_features2d opencv_highgui opencv_calib3d opencv_photo opencv_objdetect OPTIONAL opencv_nonfree) - -ocv_module_include_directories( - "${PYTHON_INCLUDE_PATH}" - ${PYTHON_NUMPY_INCLUDE_DIRS} - "${CMAKE_CURRENT_SOURCE_DIR}/src2" - ) - -set(opencv_hdrs - "${OPENCV_MODULE_opencv_core_LOCATION}/include/opencv2/core.hpp" - "${OPENCV_MODULE_opencv_core_LOCATION}/include/opencv2/core/base.hpp" - "${OPENCV_MODULE_opencv_core_LOCATION}/include/opencv2/core/types.hpp" - "${OPENCV_MODULE_opencv_core_LOCATION}/include/opencv2/core/persistence.hpp" - "${OPENCV_MODULE_opencv_core_LOCATION}/include/opencv2/core/utility.hpp" - "${OPENCV_MODULE_opencv_core_LOCATION}/include/opencv2/core/ocl.hpp" - "${OPENCV_MODULE_opencv_flann_LOCATION}/include/opencv2/flann/miniflann.hpp" - "${OPENCV_MODULE_opencv_imgproc_LOCATION}/include/opencv2/imgproc.hpp" - "${OPENCV_MODULE_opencv_video_LOCATION}/include/opencv2/video/background_segm.hpp" - "${OPENCV_MODULE_opencv_video_LOCATION}/include/opencv2/video/tracking.hpp" - "${OPENCV_MODULE_opencv_photo_LOCATION}/include/opencv2/photo.hpp" - "${OPENCV_MODULE_opencv_highgui_LOCATION}/include/opencv2/highgui.hpp" - "${OPENCV_MODULE_opencv_ml_LOCATION}/include/opencv2/ml.hpp" - "${OPENCV_MODULE_opencv_features2d_LOCATION}/include/opencv2/features2d.hpp" - "${OPENCV_MODULE_opencv_calib3d_LOCATION}/include/opencv2/calib3d.hpp" - "${OPENCV_MODULE_opencv_objdetect_LOCATION}/include/opencv2/objdetect.hpp" - ) - -if(HAVE_opencv_nonfree) - list(APPEND opencv_hdrs "${OPENCV_MODULE_opencv_nonfree_LOCATION}/include/opencv2/nonfree/features2d.hpp" - "${OPENCV_MODULE_opencv_nonfree_LOCATION}/include/opencv2/nonfree.hpp") -endif() - -set(cv2_generated_hdrs - "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_include.h" - "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_funcs.h" - "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_func_tab.h" - "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_types.h" - "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_type_reg.h" - "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_const_reg.h") - -add_custom_command( - OUTPUT ${cv2_generated_hdrs} - COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/src2/gen2.py" ${CMAKE_CURRENT_BINARY_DIR} ${opencv_hdrs} - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src2/gen2.py - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src2/hdr_parser.py - DEPENDS ${opencv_hdrs}) - -add_library(${the_module} SHARED src2/cv2.cpp ${cv2_generated_hdrs}) -set_target_properties(${the_module} PROPERTIES COMPILE_DEFINITIONS OPENCV_NOSTL) - -if(PYTHON_DEBUG_LIBRARIES AND NOT PYTHON_LIBRARIES MATCHES "optimized.*debug") - target_link_libraries(${the_module} debug ${PYTHON_DEBUG_LIBRARIES} optimized ${PYTHON_LIBRARIES}) -else() - target_link_libraries(${the_module} ${PYTHON_LIBRARIES}) -endif() -target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS}) - -execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('SO'))" - RESULT_VARIABLE PYTHON_CVPY_PROCESS - OUTPUT_VARIABLE CVPY_SUFFIX - OUTPUT_STRIP_TRAILING_WHITESPACE) - -set_target_properties(${the_module} PROPERTIES - PREFIX "" - OUTPUT_NAME cv2 - SUFFIX ${CVPY_SUFFIX}) - -if(ENABLE_SOLUTION_FOLDERS) - set_target_properties(${the_module} PROPERTIES FOLDER "bindings") -endif() - -if(MSVC) - add_definitions(-DCVAPI_EXPORTS) -endif() - -if(CMAKE_COMPILER_IS_GNUCXX AND NOT ENABLE_NOISY_WARNINGS) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-function") -endif() - -if(MSVC AND NOT ENABLE_NOISY_WARNINGS) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4100") #unreferenced formal parameter - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4127") #conditional expression is constant - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4505") #unreferenced local function has been removed - string(REPLACE "/W4" "/W3" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") -endif() - -if(MSVC AND NOT BUILD_SHARED_LIBS) - set_target_properties(${the_module} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:atlthunk.lib /NODEFAULTLIB:atlsd.lib /DEBUG") -endif() - -if(MSVC AND NOT PYTHON_DEBUG_LIBRARIES) - set(PYTHON_INSTALL_CONFIGURATIONS CONFIGURATIONS Release) -else() - set(PYTHON_INSTALL_CONFIGURATIONS "") -endif() - -if(WIN32) - set(PYTHON_INSTALL_ARCHIVE "") -else() - set(PYTHON_INSTALL_ARCHIVE ARCHIVE DESTINATION ${PYTHON_PACKAGES_PATH} COMPONENT python) -endif() - -if(NOT INSTALL_CREATE_DISTRIB) - install(TARGETS ${the_module} - ${PYTHON_INSTALL_CONFIGURATIONS} - RUNTIME DESTINATION ${PYTHON_PACKAGES_PATH} COMPONENT python - LIBRARY DESTINATION ${PYTHON_PACKAGES_PATH} COMPONENT python - ${PYTHON_INSTALL_ARCHIVE} - ) -else() - if(DEFINED PYTHON_VERSION_MAJOR) - set(__ver "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}") - else() - set(__ver "unknown") - endif() - install(TARGETS ${the_module} - CONFIGURATIONS Release - RUNTIME DESTINATION python/${__ver}/${OpenCV_ARCH} COMPONENT python - LIBRARY DESTINATION python/${__ver}/${OpenCV_ARCH} COMPONENT python - ) -endif() +add_subdirectory(python2) +add_subdirectory(python3) diff --git a/modules/python/common.cmake b/modules/python/common.cmake new file mode 100644 index 0000000000..edac17f20e --- /dev/null +++ b/modules/python/common.cmake @@ -0,0 +1,128 @@ +# This file is included from a subdirectory +set(PYTHON_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../") + +ocv_module_include_directories( + "${PYTHON_INCLUDE_PATH}" + ${PYTHON_NUMPY_INCLUDE_DIRS} + "${PYTHON_SOURCE_DIR}/src2" + ) + +set(opencv_hdrs + "${OPENCV_MODULE_opencv_core_LOCATION}/include/opencv2/core.hpp" + "${OPENCV_MODULE_opencv_core_LOCATION}/include/opencv2/core/base.hpp" + "${OPENCV_MODULE_opencv_core_LOCATION}/include/opencv2/core/types.hpp" + "${OPENCV_MODULE_opencv_core_LOCATION}/include/opencv2/core/persistence.hpp" + "${OPENCV_MODULE_opencv_core_LOCATION}/include/opencv2/core/utility.hpp" + "${OPENCV_MODULE_opencv_core_LOCATION}/include/opencv2/core/ocl.hpp" + "${OPENCV_MODULE_opencv_flann_LOCATION}/include/opencv2/flann/miniflann.hpp" + "${OPENCV_MODULE_opencv_imgproc_LOCATION}/include/opencv2/imgproc.hpp" + "${OPENCV_MODULE_opencv_video_LOCATION}/include/opencv2/video/background_segm.hpp" + "${OPENCV_MODULE_opencv_video_LOCATION}/include/opencv2/video/tracking.hpp" + "${OPENCV_MODULE_opencv_photo_LOCATION}/include/opencv2/photo.hpp" + "${OPENCV_MODULE_opencv_highgui_LOCATION}/include/opencv2/highgui.hpp" + "${OPENCV_MODULE_opencv_ml_LOCATION}/include/opencv2/ml.hpp" + "${OPENCV_MODULE_opencv_features2d_LOCATION}/include/opencv2/features2d.hpp" + "${OPENCV_MODULE_opencv_calib3d_LOCATION}/include/opencv2/calib3d.hpp" + "${OPENCV_MODULE_opencv_objdetect_LOCATION}/include/opencv2/objdetect.hpp" + ) + +if(HAVE_opencv_nonfree) + list(APPEND opencv_hdrs "${OPENCV_MODULE_opencv_nonfree_LOCATION}/include/opencv2/nonfree/features2d.hpp" + "${OPENCV_MODULE_opencv_nonfree_LOCATION}/include/opencv2/nonfree.hpp") +endif() + +set(cv2_generated_hdrs + "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_include.h" + "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_funcs.h" + "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_func_tab.h" + "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_types.h" + "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_type_reg.h" + "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_const_reg.h") + +add_custom_command( + OUTPUT ${cv2_generated_hdrs} + COMMAND ${PYTHON_EXECUTABLE} "${PYTHON_SOURCE_DIR}/src2/gen2.py" ${CMAKE_CURRENT_BINARY_DIR} ${opencv_hdrs} + DEPENDS ${PYTHON_SOURCE_DIR}/src2/gen2.py + DEPENDS ${PYTHON_SOURCE_DIR}/src2/hdr_parser.py + DEPENDS ${opencv_hdrs}) + +add_library(${the_module} SHARED ${PYTHON_SOURCE_DIR}/src2/cv2.cpp ${cv2_generated_hdrs}) +set_target_properties(${the_module} PROPERTIES COMPILE_DEFINITIONS OPENCV_NOSTL) + +if(PYTHON_DEBUG_LIBRARIES AND NOT PYTHON_LIBRARIES MATCHES "optimized.*debug") + target_link_libraries(${the_module} debug ${PYTHON_DEBUG_LIBRARIES} optimized ${PYTHON_LIBRARIES}) +else() + target_link_libraries(${the_module} ${PYTHON_LIBRARIES}) +endif() +target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS}) + +execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('SO'))" + RESULT_VARIABLE PYTHON_CVPY_PROCESS + OUTPUT_VARIABLE CVPY_SUFFIX + OUTPUT_STRIP_TRAILING_WHITESPACE) + +set_target_properties(${the_module} PROPERTIES + PREFIX "" + OUTPUT_NAME cv2 + SUFFIX ${CVPY_SUFFIX}) + +if(ENABLE_SOLUTION_FOLDERS) + set_target_properties(${the_module} PROPERTIES FOLDER "bindings") +endif() + +if(MSVC) + add_definitions(-DCVAPI_EXPORTS) +endif() + +if(CMAKE_COMPILER_IS_GNUCXX AND NOT ENABLE_NOISY_WARNINGS) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-function") +endif() + +if(MSVC AND NOT ENABLE_NOISY_WARNINGS) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4100") #unreferenced formal parameter + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4127") #conditional expression is constant + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4505") #unreferenced local function has been removed + string(REPLACE "/W4" "/W3" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") +endif() + +if(MSVC AND NOT BUILD_SHARED_LIBS) + set_target_properties(${the_module} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:atlthunk.lib /NODEFAULTLIB:atlsd.lib /DEBUG") +endif() + +if(MSVC AND NOT PYTHON_DEBUG_LIBRARIES) + set(PYTHON_INSTALL_CONFIGURATIONS CONFIGURATIONS Release) +else() + set(PYTHON_INSTALL_CONFIGURATIONS "") +endif() + +if(WIN32) + set(PYTHON_INSTALL_ARCHIVE "") +else() + set(PYTHON_INSTALL_ARCHIVE ARCHIVE DESTINATION ${PYTHON_PACKAGES_PATH} COMPONENT python) +endif() + +if(NOT INSTALL_CREATE_DISTRIB) + install(TARGETS ${the_module} + ${PYTHON_INSTALL_CONFIGURATIONS} + RUNTIME DESTINATION ${PYTHON_PACKAGES_PATH} COMPONENT python + LIBRARY DESTINATION ${PYTHON_PACKAGES_PATH} COMPONENT python + ${PYTHON_INSTALL_ARCHIVE} + ) +else() + if(DEFINED PYTHON_VERSION_MAJOR) + set(__ver "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}") + else() + set(__ver "unknown") + endif() + install(TARGETS ${the_module} + CONFIGURATIONS Release + RUNTIME DESTINATION python/${__ver}/${OpenCV_ARCH} COMPONENT python + LIBRARY DESTINATION python/${__ver}/${OpenCV_ARCH} COMPONENT python + ) +endif() + +unset(PYTHON_SRC_DIR) +unset(PYTHON_CVPY_PROCESS) +unset(CVPY_SUFFIX) +unset(PYTHON_INSTALL_CONFIGURATIONS) +unset(PYTHON_INSTALL_ARCHIVE) diff --git a/modules/python/python2/CMakeLists.txt b/modules/python/python2/CMakeLists.txt new file mode 100644 index 0000000000..8756316007 --- /dev/null +++ b/modules/python/python2/CMakeLists.txt @@ -0,0 +1,26 @@ +if(NOT PYTHON2LIBS_FOUND OR NOT PYTHON2_NUMPY_INCLUDE_DIRS) + ocv_module_disable(python2) +endif() + +set(the_description "The python2 bindings") +ocv_add_module(python2 BINDINGS opencv_core opencv_flann opencv_imgproc opencv_video opencv_ml opencv_features2d opencv_highgui opencv_calib3d opencv_photo opencv_objdetect OPTIONAL opencv_nonfree) + +set(PYTHON_INCLUDE_PATH ${PYTHON2_INCLUDE_PATH}) +set(PYTHON_NUMPY_INCLUDE_PATH ${PYTHON2_NUMPY_INCLUDE_PATH}) +set(PYTHON_EXECUTABLE ${PYTHON2_EXECUTABLE}) +set(PYTHON_DEBUG_LIBRARIES ${PYTHON2_DEBUG_LIBRARIES}) +set(PYTHON_LIBRARIES ${PYTHON2_LIBRARIES}) +set(PYTHON_PACKAGES_PATH ${PYTHON2_PACKAGES_PATH}) +set(PYTHON_VERSION_MAJOR ${PYTHON2_VERSION_MAJOR}) +set(PYTHON_VERSION_MINOR ${PYTHON2_VERSION_MINOR}) + +include(../common.cmake) + +unset(PYTHON_INCLUDE_PATH) +unset(PYTHON_NUMPY_INCLUDE_PATH) +unset(PYTHON_EXECUTABLE) +unset(PYTHON_DEBUG_LIBRARIES) +unset(PYTHON_LIBRARIES) +unset(PYTHON_PACKAGES_PATH) +unset(PYTHON_VERSION_MAJOR) +unset(PYTHON_VERSION_MINOR) diff --git a/modules/python/python3/CMakeLists.txt b/modules/python/python3/CMakeLists.txt new file mode 100644 index 0000000000..b380bacc11 --- /dev/null +++ b/modules/python/python3/CMakeLists.txt @@ -0,0 +1,26 @@ +if(NOT PYTHON3LIBS_FOUND OR NOT PYTHON3_NUMPY_INCLUDE_DIRS) + ocv_module_disable(python3) +endif() + +set(the_description "The python3 bindings") +ocv_add_module(python3 BINDINGS opencv_core opencv_flann opencv_imgproc opencv_video opencv_ml opencv_features2d opencv_highgui opencv_calib3d opencv_photo opencv_objdetect OPTIONAL opencv_nonfree) + +set(PYTHON_INCLUDE_PATH ${PYTHON3_INCLUDE_PATH}) +set(PYTHON_NUMPY_INCLUDE_PATH ${PYTHON3_NUMPY_INCLUDE_PATH}) +set(PYTHON_EXECUTABLE ${PYTHON3_EXECUTABLE}) +set(PYTHON_DEBUG_LIBRARIES ${PYTHON3_DEBUG_LIBRARIES}) +set(PYTHON_LIBRARIES ${PYTHON3_LIBRARIES}) +set(PYTHON_PACKAGES_PATH ${PYTHON3_PACKAGES_PATH}) +set(PYTHON_VERSION_MAJOR ${PYTHON3_VERSION_MAJOR}) +set(PYTHON_VERSION_MINOR ${PYTHON3_VERSION_MINOR}) + +include(../common.cmake) + +unset(PYTHON_INCLUDE_PATH) +unset(PYTHON_NUMPY_INCLUDE_PATH) +unset(PYTHON_EXECUTABLE) +unset(PYTHON_DEBUG_LIBRARIES) +unset(PYTHON_LIBRARIES) +unset(PYTHON_PACKAGES_PATH) +unset(PYTHON_VERSION_MAJOR) +unset(PYTHON_VERSION_MINOR) From 3a8af7d691e28ad4052a68fb2c490d3532fa4735 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Mon, 30 Jun 2014 16:03:07 +0400 Subject: [PATCH 043/189] fix python tests --- modules/python/test/test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/python/test/test.py b/modules/python/test/test.py index 10f32260b4..212fdbcd99 100755 --- a/modules/python/test/test.py +++ b/modules/python/test/test.py @@ -73,7 +73,7 @@ class OpenCVTests(unittest.TestCase): def get_sample(self, filename, iscolor = cv.CV_LOAD_IMAGE_COLOR): if not filename in self.image_cache: - filedata = urllib.urlopen("https://raw.github.com/Itseez/opencv/master/" + filename).read() + filedata = urllib.urlopen("https://raw.github.com/Itseez/opencv/2.4/" + filename).read() imagefiledata = cv.CreateMatHeader(1, len(filedata), cv.CV_8UC1) cv.SetData(imagefiledata, filedata, len(filedata)) self.image_cache[filename] = cv.DecodeImageM(imagefiledata, iscolor) From 5c8cd76893b6035748ae406c6409d5a52cf8bcf9 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Mon, 30 Jun 2014 16:03:20 +0400 Subject: [PATCH 044/189] fix bug with invalid signature size (should not be less than signatureLength()) --- modules/highgui/src/loadsave.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/highgui/src/loadsave.cpp b/modules/highgui/src/loadsave.cpp index 6658b1335e..81c708acdd 100644 --- a/modules/highgui/src/loadsave.cpp +++ b/modules/highgui/src/loadsave.cpp @@ -137,9 +137,9 @@ static ImageDecoder findDecoder( const Mat& buf ) maxlen = std::max(maxlen, len); } + string signature(maxlen, ' '); size_t bufSize = buf.rows*buf.cols*buf.elemSize(); maxlen = std::min(maxlen, bufSize); - string signature(maxlen, ' '); memcpy( &signature[0], buf.data, maxlen ); for( i = 0; i < codecs.decoders.size(); i++ ) From ebb0255e195e28033ca734783b38fc26e4f93218 Mon Sep 17 00:00:00 2001 From: Roman Donchenko Date: Mon, 30 Jun 2014 16:12:04 +0400 Subject: [PATCH 045/189] Remove a couple of useless casts in core headers This helps users who compile their code with -Wuseless-cast. --- modules/core/include/opencv2/core/core_c.h | 2 +- modules/core/include/opencv2/core/types_c.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/core/include/opencv2/core/core_c.h b/modules/core/include/opencv2/core/core_c.h index 38abfc409b..3613cf5337 100644 --- a/modules/core/include/opencv2/core/core_c.h +++ b/modules/core/include/opencv2/core/core_c.h @@ -1107,7 +1107,7 @@ CV_INLINE CvSetElem* cvSetNew( CvSet* set_header ) set_header->active_count++; } else - cvSetAdd( set_header, NULL, (CvSetElem**)&elem ); + cvSetAdd( set_header, NULL, &elem ); return elem; } diff --git a/modules/core/include/opencv2/core/types_c.h b/modules/core/include/opencv2/core/types_c.h index 99ac0d2575..989b799fdf 100644 --- a/modules/core/include/opencv2/core/types_c.h +++ b/modules/core/include/opencv2/core/types_c.h @@ -790,7 +790,7 @@ CV_INLINE void cvmSet( CvMat* mat, int row, int col, double value ) else { assert( type == CV_64FC1 ); - ((double*)(void*)(mat->data.ptr + (size_t)mat->step*row))[col] = (double)value; + ((double*)(void*)(mat->data.ptr + (size_t)mat->step*row))[col] = value; } } From 95550c25828891a5de6ff7c2ac295f20cdc7e915 Mon Sep 17 00:00:00 2001 From: Mike Maraya Date: Mon, 30 Jun 2014 22:17:52 -0400 Subject: [PATCH 046/189] test.py: Check if camera_calibration.tar.gz file exists before downloading it, opencv bug #3782 --- modules/python/test/test.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/python/test/test.py b/modules/python/test/test.py index 10f32260b4..c9e7c6d695 100755 --- a/modules/python/test/test.py +++ b/modules/python/test/test.py @@ -1646,7 +1646,8 @@ class AreaTests(OpenCVTests): cv.SetData(imagefiledata, filedata, len(filedata)) return cv.DecodeImageM(imagefiledata) - urllib.urlretrieve("http://docs.opencv.org/data/camera_calibration.tar.gz", "camera_calibration.tar.gz") + if (not os.path.isfile("camera_calibration.tar.gz")): + urllib.urlretrieve("http://docs.opencv.org/data/camera_calibration.tar.gz", "camera_calibration.tar.gz") tf = tarfile.open("camera_calibration.tar.gz") num_x_ints = 8 From 070be56e148c6caf85ffaab415040fc194cfcbff Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Tue, 1 Jul 2014 14:31:25 +0400 Subject: [PATCH 047/189] fixed warnings --- modules/highgui/src/cap_qtkit.mm | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/modules/highgui/src/cap_qtkit.mm b/modules/highgui/src/cap_qtkit.mm index 6b915977fe..580e8a0406 100644 --- a/modules/highgui/src/cap_qtkit.mm +++ b/modules/highgui/src/cap_qtkit.mm @@ -450,13 +450,12 @@ double CvCaptureCAM::getProperty(int property_id){ QTFormatDescription* format = [[connections objectAtIndex:0] formatDescription]; NSSize s1 = [[format attributeForKey:QTFormatDescriptionVideoCleanApertureDisplaySizeAttribute] sizeValue]; - int width=s1.width, height=s1.height; switch (property_id) { case CV_CAP_PROP_FRAME_WIDTH: - retval = width; + retval = s1.width; break; case CV_CAP_PROP_FRAME_HEIGHT: - retval = height; + retval = s1.height; break; default: retval = 0; @@ -1013,22 +1012,22 @@ bool CvVideoWriter_QT::writeFrame(const IplImage* image) { cvCvtColor(image, argbimage, CV_BGR2BGRA); - unsigned char* imagedata = (unsigned char*)argbimage->imageData; + unsigned char* imagedata_ = (unsigned char*)argbimage->imageData; //BGRA --> ARGB for (int j = 0; j < argbimage->height; j++) { int rowstart = argbimage->widthStep * j; for (int i = rowstart; i < rowstart+argbimage->widthStep; i+=4) { - unsigned char temp = imagedata[i]; - imagedata[i] = 255; - imagedata[i+3] = temp; - temp = imagedata[i+2]; - imagedata[i+2] = imagedata[i+1]; - imagedata[i+1] = temp; + unsigned char temp = imagedata_[i]; + imagedata_[i] = 255; + imagedata_[i+3] = temp; + temp = imagedata_[i+2]; + imagedata_[i+2] = imagedata_[i+1]; + imagedata_[i+1] = temp; } } - NSBitmapImageRep* imageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:&imagedata + NSBitmapImageRep* imageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:&imagedata_ pixelsWide:movieSize.width pixelsHigh:movieSize.height bitsPerSample:8 From 14548227cacd6482b834cc5a7f55c7b48ba5f0fb Mon Sep 17 00:00:00 2001 From: Marvin Smith Date: Tue, 1 Jul 2014 16:29:11 -0700 Subject: [PATCH 048/189] Adding support for GDAL raster images. --- CMakeLists.txt | 7 + cmake/OpenCVFindLibsGrfmt.cmake | 12 + cmake/templates/cvconfig.h.in | 3 + .../highgui/raster-gdal/images/flood-zone.jpg | Bin 0 -> 113554 bytes .../highgui/raster-gdal/images/heat-map.jpg | Bin 0 -> 54538 bytes .../highgui/raster-gdal/images/output.jpg | Bin 0 -> 122995 bytes .../highgui/raster-gdal/raster_io_gdal.rst | 113 ++++ .../images/gdal-io.jpg | Bin 0 -> 74907 bytes .../table_of_content_highgui.rst | 21 + modules/highgui/CMakeLists.txt | 5 + modules/highgui/include/opencv2/highgui.hpp | 3 +- modules/highgui/src/grfmt_gdal.cpp | 560 ++++++++++++++++++ modules/highgui/src/grfmt_gdal.hpp | 160 +++++ modules/highgui/src/grfmts.hpp | 1 + modules/highgui/src/loadsave.cpp | 88 ++- .../HighGUI/GDAL_IO/gdal-image.cpp | 229 +++++++ 16 files changed, 1196 insertions(+), 6 deletions(-) create mode 100644 doc/tutorials/highgui/raster-gdal/images/flood-zone.jpg create mode 100644 doc/tutorials/highgui/raster-gdal/images/heat-map.jpg create mode 100644 doc/tutorials/highgui/raster-gdal/images/output.jpg create mode 100644 doc/tutorials/highgui/raster-gdal/raster_io_gdal.rst create mode 100644 doc/tutorials/highgui/table_of_content_highgui/images/gdal-io.jpg create mode 100644 modules/highgui/src/grfmt_gdal.cpp create mode 100644 modules/highgui/src/grfmt_gdal.hpp create mode 100644 samples/cpp/tutorial_code/HighGUI/GDAL_IO/gdal-image.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 5abf449804..6eb38a3706 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -159,6 +159,7 @@ OCV_OPTION(WITH_OPENCLAMDBLAS "Include AMD OpenCL BLAS library support" ON OCV_OPTION(WITH_DIRECTX "Include DirectX support" ON IF WIN32 ) OCV_OPTION(WITH_INTELPERC "Include Intel Perceptual Computing support" OFF IF WIN32 ) OCV_OPTION(WITH_IPP_A "Include Intel IPP_A support" OFF IF (MSVC OR X86 OR X86_64) ) +OCV_OPTION(WITH_GDAL "Include GDAL Support" OFF IF (NOT ANDROID AND NOT IOS) ) # OpenCV build components # =================================================== @@ -808,6 +809,12 @@ else() status(" OpenEXR:" "NO") endif() +if( WITH_GDAL ) + status(" GDAL:" GDAL_FOUND THEN "${GDAL_LIBRARY}") +else() + status(" GDAL:" "NO") +endif() + # ========================== VIDEO IO ========================== status("") status(" Video I/O:") diff --git a/cmake/OpenCVFindLibsGrfmt.cmake b/cmake/OpenCVFindLibsGrfmt.cmake index d8ddcfeb71..a45157f6ea 100644 --- a/cmake/OpenCVFindLibsGrfmt.cmake +++ b/cmake/OpenCVFindLibsGrfmt.cmake @@ -198,3 +198,15 @@ if(WITH_OPENEXR) set(HAVE_OPENEXR YES) endif() + +# --- GDAL (optional) --- +if(WITH_GDAL) + find_package(GDAL) + + if(NOT GDAL_FOUND) + ocv_clear_vars(GDAL_LIBRARY GDAL_INCLUDE_DIR) + set(HAVE_GDAL NO) + else() + set(HAVE_GDAL YES) + endif() +endif() diff --git a/cmake/templates/cvconfig.h.in b/cmake/templates/cvconfig.h.in index f81049495a..081fca5fe8 100644 --- a/cmake/templates/cvconfig.h.in +++ b/cmake/templates/cvconfig.h.in @@ -76,6 +76,9 @@ /* ffmpeg in Gentoo */ #cmakedefine HAVE_GENTOO_FFMPEG +/* Geospatial Data Abstraction Library */ +#cmakedefine HAVE_GDAL + /* GStreamer multimedia framework */ #cmakedefine HAVE_GSTREAMER diff --git a/doc/tutorials/highgui/raster-gdal/images/flood-zone.jpg b/doc/tutorials/highgui/raster-gdal/images/flood-zone.jpg new file mode 100644 index 0000000000000000000000000000000000000000..63b0544072d1b89b00f7b0efbda66084eecd6c7f GIT binary patch literal 113554 zcmeFZbx>U2);8GCxVu}>;O>$D!QGt%r*U@(4uQr43D&r~yE_DTm&V-*mVEr~d%yRc znX0LpnSbZ5KBsG)z1Ci5KTp@$z4l&R{dei_7640LT22}O0|NlSyuAQ_w*l5tULZ>V zKu(ScfCK;lfB+mA;6J8+ot!YR0IWBi>+J+Z!2PRD;!XcYG^`!nJT2_(s5sa-1=u(M zumIR>(s7x)aKn|kR7j0eCR3LLvY8_rB4kaf^3u}<9kBfzdkFutjkFA-YIrRrI zDiJRsFMB6@3pW!gFMB%&S0OJ^>VE|ndei@DW~Zk5my4UND7CJVDwU+8iv<-A8xI=? z>l<(nF6y@!F6Nd(>Yt?l9pUXtl=|O8_4M>)^W=ip-J;$nUCV0HC& za5M2@b#SHm-w{4pxSF|uoZLW;4pjd{G%k382AqZ|6$<&e+>Lj24~^$mbQ7mSCXeelCs3@qY=omOy=or`-sHj*3SlGCD`1tr}n1n|I{*$F9_JmWI0CMk2_m&K9#>F84ib$-O%J~M^d&8~ zsY@_23IQPzF$o<#!+S<19$r3v0YM?jPg2q{vU2honp)aAx_bI%<`$M#)*u^KH+K(D zFK?fa(6I1`$Zt`JN#B!Ge*8>L%gxI#C@d;2DXp!mZ)j|4ZfWi9>mL{#8Xg&)nVp+o zSX^3O+1`Qf?(H8O9vxp@-`w8aKm2}t`Ue*b0Qg_9-roNU+5ZI>_8Tr(I5;32;y<`x zU_Jid?Jj0>(xF@oHgRhiIXf z_)n=@34?yY*|9%q?~k%B3!ByPS8Il0Q*;EG2vKK`lwvt_7RifI;~O!FM9j!b1}%pS zEy6`@ti}Q{mFuN2bek#>d9|r`#UC)ZR1jy=48fJ#i=|NsTIqXIYyHpyju5oU@Ok<=KG-fi|{h zeD-{YJq#&lHM%_NEK%YBFju1RA2?T~Pmk4Jl&?N>Ac;)9Lx_CTolCE`uKGUqV zP>&fEn%H^H1Zs^{8ma)i_#}o|;!><(0L_?LAfm=brmNLYSK?u4ptTd~uKT380$yTq z&od;va;!Ls$s|g|u0^aX)|OBACqEh4q5>^5i=c7-&431EDybO;5;`ZKtHUW$oge4m ztY*&;(-mV!7r%T%cC}L0P}vvrlX#fE)|yQtmMfcV_o1lF+j(SAfeq$X5b;Cd2a>7a zIgTF6Ecpsg>*;vsgbNwAkQNyyje4|<`y!^qW`-k;@^^CGA~U65Vg<9=J|&o6ooM9R z12n#W35jiBDz-TJ*e^BtQMSZ`37ils%9wNScBa<87XuKIk+Pd(eP`AUE#QpR&up?r zf6}bRbw-2)=ds5&(713gQRl{EYBam|lpy$|MRDNGj_vLQ(ucJO4(P?yych%|D}FH} zx3PHnQ%{g;sqi&@ox(i606CBk{8h%y;6E>C4C2n<>Y(d;qXHA}cX(#Dn+WC)4^ zOOFj5ohWNVDKp_KzDa&LJ65Rx#sjT3Vbi}dtwupr;vy7SMtcmA$i;!k z5H!jAMa6*wc>-p*3^cj%;ngQbql@UM`$S#(BhA$1dsuTxFu!txh?Pxjmwq?`+X0+C zLV4tJ`223HU=9~DTTzqHm#FRP#AcWd3}nRX$pa~u0Je_y^};34$bI@k^3NjGpVE6Z z6G*SJxh;Fr+2*1sJ5@F9!m7Cd?CZR9Q0(Ts7K? z)lA4kl|ENWJz=sdK=+3-X=+a#jE}SpTweD$y1T%TH1k^OK(eH{1Gw9gbOi1OA9wm3 z;Fx-VM)TH8J=hx#S~-1pR~R3T-Qsazefaj^p{ZyLg3b$Co?AqfP(z82<$(Cw^t)Gm z*D>wx0F!r3BDh%my#BSM|)y%ri0uSiLR0oTtECZutZmGY}(*ZR0t zOrN?s2Sgi>o>-eX{7|hp1s$WJN}(v1qo_QhHJcr*JiuKE))~W`#;!z5jB8=J!v{4j z`jBB->;X3%svk*O4lE=lr$XB51xxu80eUFA*uPO?WX&e=t5-A*SW-)8mcDE;PR`Wq zT34EeuVDzyMWz2hC`_4={R;?1-FgY!umBdA=&@3QO1 zq8(92+J4J^VDI3p|Gm4XJe#p~Tc9&c$-f;{LlRiTKmobMOVxSi$$5uF6RT1|X_ges zxrpyWg#^r_NG*ZJ(V9aaRrM|K>YX|Q95&@ajorhq%zAhLS2dVa<;j`gO3RLPnMuJ9 zu^?i}y|d$PGGu`kY#Q`5B>85z*aBI&js zlSy@HA60d;`%2W11Z~zG#_HH|AFBcxJjJCI?xP7G&!SqS1WGU3J5|AKi){pxm5Rj+ zb9b@1%K|+O2O`XtBUN$F8klZ00pN4zT^^DYn49b%5n57;^>H1+i(D3;>kQ;$jb=m_j2vc}Gh&%F+h>8bSNGbw%Wb|OkhCb*H#DB0 zRfs$XOE4IuHY_s}8^cOzk!976iL3kfxiOtGE-bB0=?Nn+r{67lTK&2d$n1 zo;a$tw{Il`mB+hRCWVp|ZPtf4B7g>UWt~-N= zI1S{h;e4S{IUwH~AGer+XeS6S)Eh2n$i|0yAPJo1koWQzpzjjgM{5=PrX<^sp(O>q z9LM7iv?;L};u8&1B)@MW)pEWuC;Q{hC9MEXc%41dhVzY6j^Ndy9>B&Hk7*wI5XL=* z2#A#-F58fnGwa^cbm`^Co$xQYK^dT=O&C(X4W`1&Fu&3MB|yeEn~^aq(vDl7Rv?T! zs^tW8G^sde5h-ZwHMG#cGfr`!H^+KfLCtNb+=Gqh{^6j*op3>n;LQafRvI<4!F>Q6){{4__u+lf`p(YUoOV$1?W0mXDFk^RLUB8sI zs(WElD#e-C#(-%FXQHPjja%SV83Dh<{q@F-Z;*)3EkkElKYIv&CstjYdUXrQU;=e8o2gQH#Pp90ZT`NvC|oZe zS+{jX|27$`=R~xhH%E}Q+o~KlN?e0(^QdW@8`*SN1rI@D(Z$QVDuhaQ+=#@^vdgcR z%D>eMw77Sx%ZC_(g*BtGMQxV@7+>h>yt8yJ%Xq5gZpN(h&MBV1_O?UhD%RiWzO&Ak zT4mdjV}%4HpKV{o_rGto^?&J5;i?c+`@vdIjHU}0B)?E_tplE$4ptV{D$qhrGS1cE zP|R%<5Kj>-TSy}x80$}vHrD$|D=XASDXuR>sz2mIvA%v3 zs?2TTNZSf_DKFs=p^nXd!rU{Qw-GR6i%=4>(eBc)_G9O}=UOu|4o`X4YU``DF&*?! zD@RO)<-~ngzIbUFBTN-%_{Z=R+QdI=*edTzC2yNN^%e>*=wZ%vhv2i04r5lhLy5*@Tqh6IdgW_=~4ov_d11{ z1u*FXvTpl+xn^SHE;FnKj!g%wzFX(Ik#FD;x%~q&*8*_Mhh;Gk&TVK^&d+6SIhJ1Z(IoAkB(SbWTY z)RJHOyg(W_kL=nLthGefMLe*WofVo*NvfKp!`6NApY{DOOxxmvD#Y2IEY1DPR2q=w zw;B60O_^18=~W#e{KSqR;1=K6sAU2HQS5e9@)L!6e7kdyY&E0c%180*EFZ|G1L768 z$L*8G0+(xeZ=AjvqawI=uTu&&(cfmhEQtDU2@y8a8{;rOp}A&~rkGOSqK3uOY(D_8 zI=7Dp3rC!o&71ZXHY18VF+lBUPJBTL>WtKmgTbxtu=LR`ONzX?48bs%WBFtj2+S_w zLz?{H1$hP81F+AAiFX@VdtKy{8e|w|$`cB=<4^>iZh0AgeiZ9))%uZvHVe`6M9GMA zJdq2Fu5O-Cp?EBRwHlnL9t}${%o=czOmBj;)aXq+-vA7v%j{?y@Af2z(9L~o!`^z$2z^nsJbP|lF(S0UyrMZBZl zD4F@ov9SdmC1sF;!Ft=qL0ZW&#S|XpXtwX$;;dvh$cQlPgD?Ssf41xF~7#d?t z>N~1;*{|dQ8!9_Q+HWI0q4WKKcpRS{B^>>MUdtH9spIR_V0lMrJK+t%(Z!)Nj?8t4 z;vjO^o#XaN(RQP`*ab^?nQ-J4Z1R(7m>e!%h=z{x(m>E zj+NwY&pPC0XxucI{$1=)LkV-pfykm`$%+DH-+R@<&D!JGN~8mp5XvXyN+KNO9;(|) zefEuv*3C#aRD|#PO^h4mC~Hb9|vllbTkrA zrHd-P7;paq2u}FARw(?7t<8gllXoRKNkcGp(a1suiJsrt*Esmi@*?8p6Ki(b zjm#_%_7|I%C1aor0PXeEO0)4cnT-h~YV+j)-WKv{XA zM7_)AA;E6A%l1XNZFaolwDtC0f3}JD)Uks6jhC_*E$>=Wm}k>=!iZIE8W0^%EZqf4 z*yPB_H^Urn+ssp}d)qiQke*NC)Kry3xF01*%^ayn%>ju-Pg}QDpfr04#)ac$U7;3Y zviSB`E+o;G5<5R~`u0g*wix*Nu@;bKlZu2a{)x!s@`@JDN|nx1@^@+dT6Mg45Mqkq{bd)H#Ad?}w@{9hbCe0m*bP z9vlXv<($-+gM4NUvg*E^l*vxURF`p)2jQEVnP7Qh*esU36yhGiJHZ1;ZXt1u$fu5@ z_Z1E26g_G&o38xQ^W~1Ftu+k|=~!_hqJ0+Wf;d)>aX!nlm0K}llVx%RlinDc9L7th zdKeoYyhJs3pRY7UI6>awqMhOJx3*(?Gewi7bNm84IH0su)%duL~v$i6*gIU2! z@rnrHLD3W4E)YK5+=SX*Qk)qlN1h0-vTI04yp7&jsClv=MQ%=-M1P9uc%YzYDbYe6 z-ZhiCiB_0wQB>kcG>#m7L9A-Fd7=$m58fZnA$`D9V{3r(RP3GkdNNt{$n8OcCA_e- z(ELwL``%a|RqN=&Z5NMX%wvBWj%!?qAvD`2C@wK4V&kaZXEwKu)9;jY$|n}2J5_`B zs~ukuN?$>hFjw1p23uFyvN0Nc!ztR8sqbPE;URxeJkG&7n1ZMT=De71rk>1ptmU?_p7R%hmp6%%CA<=1=`Gq_8fsZ`mL1 z_mmvlO#GNz!imIjB8A?3-r;Vuv$FyGZ`hozL6gLT)>U!+PJ^E#i;sCNpD9=k^U$>& ze9G=cIx(YGIwqn^Kvzcu42nO!@AiVnUR5en0Yrsy7S8Yw zkt}H|AiU~uJ`eR4vM zrlx(wG?W51csMHCvVGa~SV1c1aJE1xe?=sEu#>dw@^spJL1WcGUgi7ZyH9bmw1LXZ zg!+!$J=(4b;kEO5R34~I_#bj9Cpwf3oQn+z_*Sgjsn8P)CcUZose=2>Xc(@_DS<~4 zviDs%P(2P(;YBCb_vJ&TZbta2qsuH zOgU|%OoMqR5ZptWbhNwZS%0I${TZI5wW=;R8cggVOcg2lPZnN6W?ORYvZ_a7?F^^e zbvX~KloMleA?X_Y&NTQ{X~O-~+RA~zA(iiz&1aH5oeaLO(h9`yg2lNUS0e4_lE7y} z0*@`XC&oS7>W%yhGe(lah~Gmw6&hUD^#cE}Bq9db*3a`CZq4?BQm$n7#jYpgf59BU zxeH9{{}vL_N}UO5Q}VGr^rIv5U@W3t^raBop(HS}<@^xF>bAsM5RSxlks97z%eb;? z@PVTbhZ_R#{FIVJ7t@#H?h*kXziZjSJwSp#5LULv;?ZPpoy#9=P8)fx@ScX2V9VER zrMBFUu;`?fwSC2XPWy%$lW&I4N_UeikFp(evC4SOKU}R}*HDV651UOs&h4r5PefPP zFSE!9R_*U8kfQW3s+**{GLM8rC?LuBThR;I;>Eeyr&&r2uhgI3Um>=OB6OF&5|sCSk|*ZRbof8hKOXM%Ou-jf;``@jcuB5`xr1m1pOhm=!%z zRjNhHR_q;bsO3WLj~)~7Y9IPC;xXr=>rC~_JLu~8hdwc>{dsc(e9Sa5+zwL`8!)Do_s)CG3w|Ka6h#%rbbYO z3et$>;cN7!?KMDZcpjv3V|Vc7SZfkxEy;ykh`pb5qEA{0N+DdG!So%F2|=e%;yek$|uIMm~@#p)lU@ug! z?M-G5P{v8T6RT1xlKapSHZwf$@b^7pN)KD-M-B8x9APQhEaP*K>!G5^lcGL4S(q01 z3`VP!dlPQk6rc{|J9MHWenS40u$+3&zW{}wa^Y;q!i{&p?6L<6yp-oY$6`JGwK3S< z*@`j0(&0R3D2*T>7SSh8tFvo9*{royJAuXvyu=`^9Ps5U$@KJgbJ{Q{YlXZ0{XTo$ z0Ne0=D~`ZZh@QrvMt`N3sM@%41=GeYpU9&A6h|!&YUJmfIMS)FZJU(4n%Wx}p`Z1P zKK75{ePiZ3b?BK;aadb)giC3BN6bb#i9R}-UFkpQ{XuObs}f!8&-D?w%&v5#{;?Tw zO172IGo(`Ci|0IlHkw{TF__j?vmGE(Z{0vDIue&KcTOZi_O?}b`!y6h4(>(hia*+t z)XMA6q}|YB(Q$u(mSn$D&hKvogAeNA``04TzUiK%xkm{XxBIRB+SmPlLbE(-Hf-f* zlM`3fs+Letf)^8pVTQRC{+Uj{0=7J!q1~#^+gc@tX)UA(W7o7eo`|a$E5hr8a4Xv@K}vd>v^|0Q|g&XDKN< zAM1Iku^j1n_8omK?hfKe4i>x8`hr)VW z75;z&F*dhL%_{b2mHx*b8N53HFs-4CS*pZ{B|aYqnTTjM_hw4VVcj^V2G_s3?6cojbZiT&C z8AZs8W{m`%3zxspP7a3I$)W(+L&>(GOvmNp*{WDQ3B6*Y+&-}r(7F3a-AJOXw`A8{ z-Di%{hOV*9Y;89G2V5Oz&(Yd`aH#r~!wMI-vi3U{1X)1<1`{%U{H|-9yjH4)z{wiB ziMS3!)T`co!Z(;T7&5K6Gc+t%i#SL5?3?@$Yl)UgfdM{xSo?^W-ZbLoCL9s(A@POG zmV87f78&A6{itzNX(u5xjN6Mwx;6)QTBs9ZLK+Mzsj%33ASV>kV7Wp=M0f4{XYokW zw2L21+(ZuzECmec`v%cmg#ivgD3cQkyi#`3e4K`grZ%7p?iQc7T)a?y4d6ZLtcXrDkBx^k zcu^()!)5zp59=bilunB593k_cLz)7!!$@5{LV`?DaVizEz{3TwUv3h2xAWeTB3n>yZd>P@a-w2nrS~ zt4!O^$v524mqbAtuD?E~;Y^_VVaB;43#2-ry7VfJX&8sBo=I#w(98P$UY|RMA>w@Z z-EUbH#_Z@KsoMVB?zCOS?u2|`zCF&JydG>sht_t#=i?x_dq8|)>~`E~{%~XUxh^VZ z2W%v)=oQntxn+oWy?ae}LnTOjgG-AiC@g#U6-9Sjfn1xBHBlNYkG-OiLADi6-ZH_| zbWc%Ke59e^TVU|G%D@9Q(R15B`JnJ773DpxToVmAB))2q{9NG{)W=Hz{ zRjsXdj#uDpL6|rFm!kBr%=xl`4P?kmaPm^;(?x-`{`&Y_HLAVOKF_nnm}A=*l?N5O zsWAe5)^;)+RrEKTK;ZfBQ0#R|@)f@ptt zDT|qKtoO(vGY&f2h3*f_A{Q&&tgrE6TO$JStr?gm`aZEu-lEVRGB*1&*|p_v+F+-S zNm|bfwdG?%e*Iu+{7}#hR!GvJkn2EzRb0PxITPRNOTy)2CHo1Av(hpv!EhOWIF2LM z@)}2KvTjY76IO;(zps<+m$=iTUmA)=bVN~ecbMQ^=Rp}F5v}Al1#fVP*fg%mGjs_u zukY{9pi;jgv1t1a{Q!PaRLD#e-iyb!S^7FA6>7pHf#s4|--SxH`7Nb)Vq)9DUjJHg z-wca1Tp0R9^6Qc!+Q(1Dn>RzX@h6o+ft=avTFjgS(Me1<#@eDOxx2!mjHPZu_*6xc zCz&}kYobC=_P(`T=RM*Wux}9sK$9pIaaVb)tHnS(s{d8--bt5eqTEVdJGMfUcjhU< zz|d%^qkq#T1(PS0k8NM`BEtvmwk)NIu(hD0VUF{)bVb&0l9Nj-4iM<;f;6OGSL`)< zI`~7iH(owU4Ne4}%nk7HYIEJ0yJCp5D#>!@w9LVVkt#S?C641gd1Ns+v3Gi zOLAxLY~gGVqK9wtI0p%F>{(!lC&}Xul%~V(^89n5>bjgiM{{9XyhvMyC&@9%d>4%x zV=_Bsa(~d8!KE8p7_^NsRyZ1kj=4>C3Szy~ysd~%K7?6(Go8+jA8>4)3*rQC|JWD7 zKAMi@RyWeu?<-_k#Ay#Oz+{u6IT!*a915c}xh>RML)@%)MlG;L?o$z9p8LSCT>~?< zVfs-@P4>d65-#>PprT*v_9(M@QxgSNUJSloE8C{B0Hi}M%|tmw{Alk=T@_nvcYDiy z;l>|k10mmV1y;dekNtwnyMps9Kl}RB`IT$Lbkyr_f~z43lf?TqyeFc3Puo_$mfV5b zI`0&EheWU9i{^C7Ldwo;#phB|8ef%Hv@!~a`FE!aazPwNe?D}Dm{x?O8`SFl1(Xdx z&RG?+uAUfV;iD&=5F~+W4LBnQsIaR6)s{prwL@plYd;{ zoSg;lm)PiQu4JU8dd2f-*My13%fTme z&pj}N=)BEqt_6p!5lMyZNgFb_qFotSg9tj{-7PEx%nENWFl=d>&tHJiuTr%zYu`b| zC(}uP__f(qTF3DB0x;n-O9#9>eA=xRb1ve}-e0ZN;>S?V6Oc@ii2-ku{$kTidSP=4 z{b=nstEp~rAIBRrJ}j=WsWFiehFt#fYlLLCyseGqBf*n?ckXXez;yH)vI*^ zRRu@CZparsqqh8Wd$Pta7i1dL;iI`HlKB}2o-=minnVL%uWZf{GB7P0H#nU3VFFQp zWszrZo-GZ&fxC7q@HYcRSC}(|c;VgbU8;swJ;SrmF$Z6Nk9pj_h)+DXn%lcW7 zl6(liHF+Ui|DKBhTRuo(O0M3*}m!9%SjKAL?_Xn4;>u#oedPP*4aPy8`o z?SQ?_QKM%j8?6~-%0ZwqXKYu650T<_0f}y^uPlG-#)pG1S)%Zh%7!By&ounH7EN_Y z+SN@EFLkaP0||aPEC9IBr{q>th~y-I?6=p_(SlDX$=9XM^*@QHuQZ=O3c@UTOpayT z7_tZ7ifZ%_R@2QIjj)dK{~*k$Y`Yd>Jc<_$XgGYUpQq%yamt~6dq-(W+*`93sP1); zfw^bg$ySgHRoPInTBm5B&;On_w>DpZDZ=kctFYIW{GKxwri$Z=yJA1jUHCn1r>7eL z^P0KSqiJqGc^Wl=U>7whSfyx62fN}ZhP7dW2>p2YE0*o`IhBoCk+Q=`hd<``9l5E#O$Z0ltwWfdqV*-H+J?*u1ghZ$vl8{GJKcNVu$_$+A; zz$z6c$wA9mVv6@VXR_alS#1m&RFOwVMKE^Zp6p;rIu~S->xSZ!j3iG2oVdKl8DXVS z#0)*NYs%WHVC1^#Gp><(fWiC>#1yF$N&vlY{Whe6W^d(u8$JwV zQFW$9||(ikxV<3&9B``@SGXt zScB{$Sq2W0{WPUkWX4oHhSd)?#|W-BZ3_$M?7m1lz}ePP-WpYLALP`@gHV6O81*_v z2Pz-v6s=2VH?AMA0fZJ3*WYQu5Mjz6+^&YMz}DD70gMB-eZ|tDh%#^cKulL>`q`F| z8O@_5e;O z*zM+C`U@6eGA^0&38vRDZ$WuKG0z1==FaY;1wxe20wH1FgMO>qvktUaYQC=Y#bX+# zF+Le0)75Qk3{y8v03lrdU9Xzj811H~b|oWanJt%h>1&hzz5zAWZM{Pzk1n4=(F@4E zPX;$)Aj!dQF(^v*yvXMTxcNn|Y)f(u=Gs)4956w%#9~7;^$o1@zPt)@b}wU^b!)`= zFh5t7iOz{muE9RfS|>kA_V54L+JcnAn$n1aFHmSXTRR2NU=*?Ab}l}%dJnu9+}Et+ zesi#^ziUs(h{lFFdDnIT$yzVIJt>&G^F1UPhg(bmaX9HB2Oofl-hRYE zQseNgP|m~~J|n;+3?j}FR7bhTDG`qm z@-+h9g*nj$tkDUT_K0xYc}~BmJJvVOEHFSaW@LDl^|Y&m+4TiuR&|;!+!`6Y72`r( zp3vQIhy8xe>Gu(4eFMi?PQ6QI>D}?xZ zrSLX2$NdrW;N#+)uRei1^5*O~Qt;Ijl~sPJfeH1e-(8U)#%Gwt#^>_U=y_2qD zFL7$zXLma2o&S1{w4VGhTJnOf6>CHR)vO}WOCOtzjN!)>-`9wxiGF#NgpwK0cC zX6NK+Zg)V(fnb`yvjYti-S(|Om;$<4GZ3e%=PKn1a3+2XS0OL+AzH?k-$BqsGWupo zOwK)fU3^C0R2?<5fhw^O7f%oJfL4(@PaYVMP}R+ugGu!?lt31G4Ay^)dKA!H7pa~W z$3z$!D-V37Ita=i_4N!(cjy@CMmN)$*ZY$`DVrvK;ZC}~n#y<;c(EzflXJ!y$8#B{ zA zkXrL(q}p{}SJ`JS)YZ~*8CBW!aUFZ7wPAm|%)T(_HC4rO_JH?m)U!mmMRL$Ju7Ykd zqF>1D^9Isx?GHqle~x)HSZ%jAwir5sxBJJbUErxR_OY6sdKd38~VE2V7=Rk(2O3 z=FLEklE|6xhW_i%+DVe27R}pR5nO#&RzahLX(WA-`db;gavM(_eGP_G)^@0kBWrLK zMEqd(X;Jtd`P?Dp*x+aoFEo~>-YP3y^x65uz~|Rl@tCufquouxcufj_4A&?U9NHhj zvo-fhv%xG3Ke@c$^6&C(<2N_z2F1pOFcS$y;{AFu^D@Z3>hG0FHI38mci8!GZU5fM z6x1r|sP|#^oH|bl%+h+h}60rtOq!SL3YwA)2FaQlo>*yVViy0&2;j%uX$ z$W_bdiN=XOXFoht!8olv%2`))(n;AXL?X8#{GoR!8<*Bt!9Y6374)1#zpqXT6N{;; zLK)&a~Dq_jC_*5-=w263HG3qpgn3N>~7pj}}tp)YCeO_lQz81+= zepsQGA{KhHC&m3HAM*F_-rjR}SF>dT%^B$P;h!$Tt* z*&F2FjVFr5M09%L){rS*LN;j(7oHUo8Ve`YLSe)-mILzfAVc2^~OUoVCffp`XSmP!R?G>c2b zg%n%TXDe?1LaH6rTA@L}82K_>(kuhm)sRi8vD`epi#2KlG1>E7tf00f7(QVMhr=gi zQslN$%3{v=sM5T-0VNUH5?5N1evQohDVX_FpYVzBUI*kHSpidUVxElhht1Y*wXrMM zG`-|#k$}KceF%=dkzj>ZU0PaNZo<1q^f7PQ$fzPNr|-+*Os$85_EFOdF6lrgYu#HN zzJHtv>jG40tT$pIGF9y!1wzoUHf(eerr<(%*RZ))XUUxt%Rw8Z<#@CRVMNVbKB(H^ z{w(}EqOWx^+714S+jzC~=!bJxqVArSu0wBZI}Wq0=@(F1ZNMK`-w4ajXTHe0)Mopm;qm2^q8$&v8(#=%<9+rB7<21PP~EwP^mLH@JI-~f z7Gs879HUUI#vB!f86FZ3Dx)cwKT`VskL)ue0hTz2XhOkZJoR@s5 zbGyT0TFtM+4VpS3rL~0Q;U)Jl)j!LFMb_%a`Q^AChL)ved?pDVoH%|&V&Y}x87%0F4@rL)XSXt{!^=udOd&xO2H}L zH*Y=EkJK%Se4@`Ophe?}xS6DP1%`N603Flazhhy0o!kI#v!}VFoJlc%6dyrAV<~8| z&{?uMc?ov7o0E+~oS!|k_UMl@(xF@~e*tVCfeZ{uzvsSOy!*%$QK`hWv*&?31!*bX zaT!aLB__Hpgc}&OkQw_kRi;WNKrGfBRf1dY5_7-^`ABwG(!M@g$&Y&!`yHKh#plO& zc9f2{UAT=J_IVxEv=7@3s+cK_&%zNC#PxM;Bueur z`E%~dQtr!1sY*spnTU{R9fdKxDCP?g$QKb=tWimPWbI!lV4%D?RGinC80!mv-3p5@)TIzWoqMy1V4f+XjKO~T8w>?PX z+0%SDjYaSmR?}PPiwW7InSFU*7A7zo$KpXZsbVhdL%@GF727?U`G z4DF`5Qb6ROfWC|M$pFM*J;S=(Sx&!#bS7i5X!%hUPwK`{@-%pQMt{%4ZA>SKHYVYkErs zdcZ+*CK1q(mBQL4f*&B>^;sqEm{RljQnakrC}E7$i>Nj-TZ9--*d7?Uiozxggo8D( z#MPYBSX_bMAX9rsX$IZbDd_jzz2;XL?eG<%&(F$^eEaaJtjUC?m9oPDF5+-Htz5of@)7 zD>N_wX^e+THaP?shOCC4T%Gf7lOHT|h5-@p4yzWGh`5Gi6{siflO_~PlJB*+ zX%Ky<(oFXEq}aMTnVsp#^2lreAmlOF-ryAJpx_I$bzWQlBA0AviS?o;6%&69KbDcGl=|mU)nn}(YELoE@t-e=(%*>c za-DP&`3{Q6rO^eJr5EPYifJ1@`*Qiw**n^jSF{e-)oUnWSSXbu{~<6wXt4bpl)rg2 z)$YQ>k7o7`D=u`s5^AYsULCA@fXo?g&$n?@MuDD@$#cg zCptUPuK&jBh@ROWb)&#y-UP{_Cf^NeE5m9gd(sSex9~1RSI8ni5icgqo2!Mh%2M!A z_QltuQg|?hYvXqe%Sdy3qj)F(%}y^ERui6qHe;8}skdTW;>^Z>jZwZL$*lu!>Nb;#EP}Sk+qvU5W?Pu1nRk!}$#~Gt>~%%qD0h^$ID6?U1`_Oz}pSm6b(s z4_KfD~7#IMf&)CD8fv@rYb zMiJIDbFPau6`xU7^_Q2HkU2NBD1clso84;A^IkV;lq! zTctTxJP?oP>9X1}1W1(>Y`ozqX5MKc&n0pr^j$pya3c zwE7bo&kl(D064ip4Ci(AX7!fs<zLxAo~+7VS~Z(IL0Tl~OsN zC)L)o7V^E66HTm)mi2tzD$Kj9q1ib7UyWDVnIw7C&n2>rlX>Yih`{{sF^GZ~FrLpBfh4h*nu_Ts!1+rQxcZX34cof)> zhX{(){p^PNSlbTM4Fku9m$ z9Q402^o*)6IhbLGK8pzD7Z|IDuMvP@#$Z2A-c?52`_8+|`T^-0GaW&6o_RF0JYwJ4d4p@gF0>a)g$t|+c69||;>ykuf$u3E z@g+2STkoM&&6Uu;r(Xf6SN`Xz&L~DpD8Q4C5-wXfgKRtzNw9_ddMoP3hIA!Rv^UNj(g)-eSqd$E(VhpK6XE6yZt= zYArC@TMQRPqW4$V^j~p}?vu%yX2tW3+K6zp9p4XYn!o*1Qch*`=LHeY%ii(37^&Q- zJ1BOxDhUX17%7Z7tW$7zWTYPIcG?y*V32BehtXy4d7ZVtKxsw5rcszCkf)07jdU#0J z!@u4;sXe!|IV;7~_;y`SAa!7ZGEUHQw>%1F+%FZSBnu~QeQF1`BazfsxYdt7_uPUZ z^8=2(>p?S&;Pl7;0IH&b5(f+Pt8vD;UBQX&G18TdVnEr97Auq2E;Gl{t1)H=e(Zsa zgId#D?^YmhVd^U?Y%83C2uFfcgjQl`*A+qCt_pb4$=WE+Na+Lv9N z!xVb}-UvB9l(0s|KzC&1Q#FVqc}C~kwRdbBl4vMoO!5JoG0smu)vsn8u)xXAIOr=g zO=K(bx!sO~{PSB@5J@9$3coi(dXK`IEoyF9uuF5eaO45EidAO&v4$SL)K4N?M5xV^ zp4A1so?`&VAaV;FR)S^Nt=e_V0Dy7H>sG9^$GMb68U}3b81?T^S>Bm$qJcL*@f20b z{JN7%d*gdsD`~B4q?K>x+>X*hV{34vhR+{(k-+|S6P3Ol%^?e`vu{zlTR7iJvgLYR zPQ7G3HYxNS&*9wFMI|Ct2LyD$6@{nWAcO|ov8MsfKyT}w^|1)vRg{7W$idAJf`aoU z%b2jPfis?Zobme6PJ+=u#`OgD10ssM6LZvMjXu$PVGGACwaJ-;upQtD0)VWe_=5s5 zoN_Co({%XZvcA(&2`+9BMJahll*d1OkVzvXex|TATXnsH#9uTH{HThO)Tb)Ln9?xI8#`ufLsKnFM zG+DHN4Z_!g9k&vu$iwfK1&H9D1~PN>syC|e>cdaC0in5(resluW^4uk`hDNdtoVZR zZAwYvhTZKg{Dp|b&IuUH626%PepOgcCa-;CbY=TI)}!Q+RFGA%lh0i32lB50uV;Q! zno;Gtj^?(H;pi3%r55o>EN0t);FU}Q0QBIW%CN4y>upZnV>>s_5-_T80S5(!f6o=A zro)Nnv=B)|cjan1n%@_48tz7}HMHb;>a%KV_^hDigbq5W#Um3j7iyQ_X9 z^5!@MXp#w8;ZFMk^yoSsX~p}xZaB2zcImKDDyS=?x;kUI}qe)0)3=k_Y z$RMBSDhXcZKP=rV0=EfnQzY<4JNlEy(wcGAE~AaMjqFdRSuuq^*9D{?I4Y&^%5jd} zdiVUQdn*`P@Xu~1X?&m`%8M!-atLntJ#*+PmCQ1tqwkK`?_V>`DjRC&pz1w4XBBGG z%(+EqE^e*iS8&4IknRb{91IWVR}}eeZM_E+`FU-7cRAaODZk+-7`QP{aS6@2Kys?* z++*+bt(iPO{{Ry9DfT$7Cyms_G=vuecHrSb=rTbW=sHwuB=+}qt#HAb-d(8MF(F25 zfXBJP6}NYyLT;th9if(J)qpGpGOS5o#IXn3t}*13ea}M&KVvs8kDPCu=PKFm4?m4qy0?PtY1h%)Bg$ij<#V5x3^#&Ls5m(EsO2!ehSOYH zNeV$LDG)9&-ew5SGxu2gRF=@0tn|p5)>~1T5;vXp?ZoiuH!>FTcEqHVR${38xFa}HeLlIaV_AJh{^@ngn{?CL?13(102W0U+&18X z6qB^`_px0y$}o&A!`qv3STrm9vf!xOoc??caw@)`VII4t3vEX7>d--LvM8+_;rie* z;D!VR>OY3ANy%9l(2}JtcctH-^v*WXtiQ9hZ??Q!Z_E>2N1S8@^4XU?GlBH289Yg6 z;W(l4)9n#5Cginj58V)Vu;)I%g*G1qpX{4ETaUJlQRQ)Y7Ea5EN^*d4j!x`>>rYJ% z*56gOjNC1StQ@Ywmk}w!&h!KTaw?%=x;nnVKdw`uROYu z8HN~R+N_;(&#vLmxU2Sekla9IFnRK$q4MR<;2A&)S0m8#Ttt2_wfh7S-e1~S#bApF zTYNjH1Od2=^T+8|Z2UnUzx}Z#gjaXBkz1J+WtfJOZU`U%I~-utM%>qOz0VqXMe7#ac*L>nl=#`8+&d$K;ZPj&*fb#cSc*O0xYn?(GsM%<&NIGcIq*Xl-D#ByB;lC z6T-V?Z$Z|UO z`qxjP>P=^h+!N-md|;TeLGP4ffj$NgrSn|Xenl%WN?+;5g{ZyhT((H;z-Z6Rk?4mM6xgMQb@|}k^Hbf*<;T< z@G;o)Ra;q-;I+-ow6@Vk-dYXEY@6JmBp-4=BUSIOwJ7YY=DAqXCYXs9KmuUx>OklK zKljya=91L*BMVwnX(N;PlXE|Zbono>kJ;tD0ymmDSyf~tpOls8M;zCpcpBa9G_-9$ zOa8~XxwKiOf?4-+SLVt3;-pBm?M1G5OP)__X%c*70WM z+%y3JBsU`+a!1Mqd4C2W)#+;^=IY7I6ZMI^t0aw`D^=Al_4(3iZSCX`kg_=a*i~i7 z2#McJ>ZUCyoHEf-@NTLL4V zc*puQYzA2JK|N}r0I27j_4KZS*Gbg8Pjw_#R&w4nNL-`|ks6O-(y$$ZnIkI2*C32^ ztA&!~PX7ScQ!ZO-S+=*yz#R1kqMG2vB7_(jiJUmIp{jqP?qtmdvmz^bgZ39%oJu(fIUY(^_9)cOMRwNNNFX` zHj&P2W;j_;WDjsU3dz%U31!0&#ktQJ6|E)8#Ds&p9f8Rd!4k@)RDd>|WQ_4ujo<_g zqp#jP)fu&4F%Qm2>JhZ$AyIh=o;y4Dp z;?CrN(lI$b0Vj{8Z(Cmkw{V9HMhWRbX`OZ4zGN{OW#DD_>QAL-%cv|00&d4a#(%A3 z+-f8uvNMynaR6evF9_Jjr)lrv9dR7mBW<&`W6i|8kO1@;Kao8J5}zWtCCuz-Igi0w zI_j6fCe|)gn>$1NBm3+-0sQNS^7UK&DrUUCnsWC(dt;z;_n41io+{3(s9bCMoY&fs z25Gno4i#6jsPrGLTHLFnv=OlfaBQg0Zk%?fPBzusKI<77Z1^2;77KL6V84Am~K0@!>0m;Gscr}Hk>9H-%%+a`JhC*G7Yyksr+I=`8 zw6AUo8w{QO+#8EqSyg0cmDC53aCt0@agR)M&sx~J zifgN_FzK;e++rn5fbK|FA9+Sd&j8SzSH6|)VW~x>D_>$;SSAp}z()uXERr;?5w|bi z!1c(^DYrBIrgvr$h$N5aXty2BxE`1};GTP8oEAjVe$!_v4YNrErbP!Sox=)nbB;Rq ztm_M9vVu9Jks3vsMe<8wia7hZ`hoe^QB;h6`xsg(PFSn65_|9^~VWnf9hE7b|6JadMKF-~l}LJ3_~k zkWclj^|XfKGh$I3sbr1iW3(bM!jL-gfu8+q7bj0-V<*WS6^%$#$1ICyDDsvOI>`|M zWeUU{y}PYtTxxe$P+c*K@8soVpZKtH4$=7a{<9;4;_ z>Mc{mc6wVITf=c2m+8LBXCnlmQ2FVM79+hAtIE0MD<$Mq>qar>sVgLF>ak0Cdd(fJ zt*xxFqojdCWpkW@J&j8grKY^ws60YhBb#lw-I5f7I0vQ&9`%6**}jj%`jNFkrMMnr zvD`PQZlE3k!1b+*nKbyd{afsl2yNtlGBa$zC_FG7KDDG~r7Lg$01PNq=9BaNP|p%W zblNm)Y{gkvIk}b)tk^v{!6O(QD}MI!ZBh)fMS~8|j`=czIVu3gYcErZ=Tp;~CKKJn zV{shd7?leHmh?Es9MtdQ^0&st($Hw{{UWvokK@`XYChOS9dqJk$~?dsgLQDM4*Qo1gky{a2lFDOE3}dv;^R(D@6+`;Ti9&; zXP|33&YgW}p)21s*FQexoT{!e1~P}``ewPfd`YY7T0WI0_V%HtJ%#6!s6lOR8r(!9 z++vJ<;9W={k;rbm*L!{8VX9tU+aI&rN~ms3HjDCXbld2>lNV1@p4G!8y_#ybHxf-P zq(fsE*#K8K*f$NtWFg1Uj(Sy84S|XkL2xb_A3owup*~XB0FHWfu78O+ z$!c`tr7S)l>eQvonoauH(u(rZ)9lccTiIsbr-m;pADbEPjD8iMbr}{}FA~Yx-4n?P zGmMU-q0gu3T;-m#=0&H+GbHoFBEOoWEJjEtKBtbAp{i>3mlhN4j^U$-d9un^3ON`j zA5;A4DaI=DK1wxIRofx9j{5FfDeT+Hxd09Ex6h778`qw>t5%n~wa&I}@6R$ z{3ARQ$7+R^>+Oaaz>iRN+@+kZ;72$=mTL4?cK25C#9|3CLOjB7cPQi&&m8st0B5B+ zUTrox$<#_RdlKF1OKGL5+sPEti4~O!?qGy`!25zfT9;7Ntl-oZ?$*+DPqZwnB+IuX zU@*zgUU{f=i~D;WVUlUuNY>n>l0=|+3s|OKER6LR1w80FjSehFUS(82A2E*tH!}{@Uhc^41tv&MKcOwmxo2 z@7|=;S?@*6w)VnUCJW`mBY9>qjz}Xp=s2!}!&)ItJczDATiCMXrtFMk87Cgqv>TVb z7rw%eJmtQJCx0Be!bd!pu+Ji?D;a&HVeBT^MXj zqgh5zMQ6SL0Ikm=HD%4qCiMB7wv}MN5Ij7PUbIkZL0ia}4DEbm525_J*Olo101q{P z66)7BaY8Lku|H{==0Z}qV-AI-nWS+G`NrI11Le=k{=nz|0M%D7?5y>j zCs8q5XIq#eJjQbx6(7dg;{%+W5^-N=Lmli~qfb~pyqWC#7*(@p0pZP0Q1B;$wHpsI z&fXW0tk(*FZwELo=aZ4p4_fhi*xveWLiPw4+6EqE%AX<6Op$9c zh;&G%W=|}Yg#ah!L)F-hH#YzijOUIY;&;UjHp@(t!Cnuxg5O7v z=jhPHCst9X8@IdYg^5w+QQ0HSbo4B=-Dj%(6uw8;0_{@r-`8i(?T$OOdqX zRMWSXLMs-@zz3dd+;(w1sIut3KmY+(o}QHql0xTfc_fTwxyh&*OE&z3QZie;VchC0 zE=I>cDd1IW6*ekazW@g0m; z&5yN+#CIR`&;f;S%Y*c#B~zIMzMqYB258n#a@7!y1KLI}ipAcmtDN zuZFZad_$>)G6=0;Q7rR6+>Jo)e>zR5tFuThZ4uUZFX3gciIoKLv#ODtFdSn%^U}EA z9Ze+uET2rglG-t3Og7M2%3dg=?xf&hjt1|hGsRf(M~&u<;+IOA=T5M-Vz%oRRj28h z9P!t%$GPi)=IwNeERw3Lv-61sLWZARNnW?imk94dpy zPPGNLu`T7xVZ)~5kZH8pktDE!6 z*zO;xf{(Rw=88+#*Rj?|rs>x@lRw%dk*^UJNFrbqs{p-v9=Od(WvHTCU#?m6<+Ch` z6sb~F9z6~+J7TkLbm?^{jjhGLC5c)nHhsdm`FCT!N4^DJ&@7V5{@v%didP~?8rZnm zD=^%5XQ>-sh+Cw`D9*K$6>j<=-*E%P8BDqtl`E&MKSux=j>l{!o%j zKeMcbp+;s;P%t|61DdLCPU*_&9*z?aiNwBGJN9W?V_je{YLkbzX(VV-t#Y|jxH2(g z&~t`x{7t;foe+ z;0^&eAh6G4lZ@3l=hbApFx^_%MH>SdXvq#&cT>k5G6yxJqWP~B+33$I#U`Z~>*|i1 zRJXVqq~bf7WwDLpXrnQlkQGToo-jym)JLgUE8JgBu{l=~xts+7ii{u31Jbzkn)ZEe z+}>(8F-0W#7HJ?rN4C@RaDSIhYAq3sh339*Z>80(?vY*q#fOj;{#@gR!8rV=RQkz% z=UT{TX-k&mm>#)bB=RT&*Fr#y}Y%a zS)zrLCs1G+I~Ml^RRPQ#`3`+gW0C%OW!j3^xD{*`gF%mp%2^>RAG&omW!x zO5R(YO|OXOOKW>()gJI$qQ>y~DY1?^tb(rKl)qZuRTI63SN zFfe=6z9!VJ+WoDh^Mj(Ihqr)j3Q0dR5OK-RJ*zguP1p3e^;_w$QfpU{9xHIm{*DpJ z7~98iIU^ud-9`($yP&sM(KBr7FvOhw(oRl!&u_}N>12;_#tLe8R!gV(e8>|})HIzx zPm1408lBGb1dic~0dg*H8n@lQ(8=yE#rFL;F>PTcL%nvyoP-C9vsyf@uim*%FlG^2qNuap!^pV>| z6^zh3pa5hN4pi-9xScIxKox#yQHcq=4eh{O{$8}UGDmfPZz;1l zMQC{bw|{%Zta@sEuuy-me^D_M@cg<#A%9<^c+sg`CL1`+j zyBm=sMxgRT4tC&s8s{wjD(O;3c$PZ1+aZcjw+$S`g(uhBj(;`9lXq-#qcM=Kv_ewmT^2 z6%wx(HLjNF+|!+1a_VMyKFY_$dJMXbu^q%(yw5B*4`ZyW!;h^uZWI0ueDtvXnFx^bJ0qW;%S?RJkZ z+rlt)6m;7E0INMS#o9H6mZNWVrfV9kvBx}u>N~cCTF9qADFIg*EO1FZDq*Ter&}zu z7~5<4YD)&*q+=X)>yLWmJTGG&o#6u(rLRk6e#^A9)8y?Qh~$MopH8)#<5d3Iwz0Cc zk5SZtkyzcs1ca{9!y}am$j=~}{R;%}xR3UARW~2d?pUc!#X>hnUGZPU@2+X4+UoW6 ztsP>-aaxXMmj?>NfE0Bjrxo-5qZW^2q_jvSzSgB+&2+D}7+0>3Z3F|jfxz!x8RE%w%TEwF(0K0Y zD-i7!r*npMeUiIn61(l>js9GNf_TMoxAxLoNI^Tn?kl6byID6K{AY~u`Bp{D$mix@ zKhTYTOe(B$7^3+}wR95vK~_(A^a)tW?b2IGt?p82jIqPflsGKKMtXycQ(sN- z8($4sVzg*;i7mcpcXkg4?$)&riBUgD1DW zaykcxuPpQ%)zvPgS!6^LG99vck-UI2WCAw=8~o(kxP@c4Huq0+b1TA|WzU&_xypbK z1LX&fep(W=80NDY2a{BmC$XLG?JklxX4+!g_qQqP*-`=Iaw|gO?(amf zo=GB_2T0wZgs4SurI-u>f(ni~_odcgy72|w=9Ic<)5qCG%vaG$%m8KuLk{hM+p|`) zw4S4!dKCkmK{6VK$%cba`%`7vk&lJ!kfGZ|W%p7EHAx~WMT@8hnoojWYLliDA z;hQBqznXlko1-M2hdukCHIa4T$wlm%eD`AVIT>!#P_}=WTkaT#9AGG5aDMlEb8lMH z?X+7PxvceB(@-iVYumDA^5jwrGXtL4?MX$qcM_#iHjE=v?(;EqEhA3TJTYWruu*2$ zVdC=S+TLo)+qYvJ65tZ9lZA9A2ETE@SGLE>wr4ut-Sg)z9G4~ ziqa7ys@vg^0T$*gN|Dn(^)a}D+E%qfEs_hlBEb31=LOg(9Ffj2J0He{WbdF(@`og& zCim=H(mvIywv};lZ1KPzK=6@)EI~I7hbJ8N?kS?h^^2*N&rV%7#uyBrzPZCozad!Q z5C|am%~VZz!xol)*ECT@Izra7DM2J|-ddRQ0Ubtp^{t&(N1sX6?JWhgFaX3&adR_B zj(2qOkpU(TIl*M znb_$`E~RaC1)4_e1MD)$KnTO`;OD+M_7y+&x+a}teDfo;sTmO!+*czF$4vA3Rh<(+ zlSaCqQPW~k6ey--p5PXdTO=>aG3nFNvaGHqw$Ou#B8CLIk~CL~b0I_7x^@`Pdg;Bl zJdQ;tWbdv20N@ha+0860sVhq27^RI>wzBPQpmh3U>MFLl(q3p?5rQ$_HEz$uGEJ$q%#yX(`Qb@o9$w{DEWdPTou|D|qH7iox@5#cE^m#*GTKWZ zcU)~F0guc4cs});YQ~X-@66WUhf;3{UzWJDaDL3G7-F)FZ&m=vnaTOL5^EOsPSf>` zM^d%BX(CTDH;tf^C4u>JPB`FWpU$+rAsnlw*hbG9JZ|wk20hZLR&@>ch-`z@k4lE) zNo$MMvXw`dHH?sXj0i8VkDHuz%Y8G)O1pC{jO9OLH)m($Q`MR~OH(z3Q%G$iSzUvx zoU0ys{JH6mYO$zzfwY}^&Ipz63&t8(irs*X8M0q@A-bMO{u-&J+-cqwjvXsa(;<;{ zv^H7u{`88avd5oR$JV)BPsdUnOHH~qH(_k#pGdi7v}wGlV}C3r;qqXSpIjfU4Otjb zsO0|uc(3y|ucy6(Qq=AI=_R)lBRGN*A1((mMT*Dmk$RrL> zHtnZA_yFU$tnROCp3-hGZNW6YUPah%E;Q!2lQxeYRlop)lp8@{208T}m1fIYSoEAo z3~TnM3ek=DXF1@UU~+i$sBWG%xSz?LBHtKgiY5-A9(NpqcYMvqYRcC%+nF>u2A8Nj zv$`wqyI1CE3Ma68v2pla57<&^rF3QhuTci8JJY}}uI zydO^W**((Fb14@>-c(a7uG7fIRAioc9Y3M2Ii}QgJgiL^(Uf5C%&mV?KM+0qS{=l& zY9Vi;{o=RX$R{{B=nmoEilyP^k5s&9CY5BB#{JVt^0wS{IO=oL*w)-?m(t%uD_l(* zFxqzcYRQflup|(F$fjRu)^=8Q^1YlYk1v%j+=8De>)+G#sZf0U@!0d-7b&WcdU=NH zT?Wrkcox#q;UDF9jpRq*5LXYJcKYY>^Q#{oLm!BBO)vft%_9A80^BX!(X?wJ#@5Vb zIp@CaYr53@Tc&v>Q(3mQ5fBV&o0twsZl~A$;<>1Fy-D?(9YRe?>s7alc)HVMvy2la zeod^QNa_v=?@JL)MJ`qAq3KSGioD_OdTjfm`S9(%rKPWkbpHT{wvk@M>nq%u<3(@@ z1SmORIrOOfQJ`w`YZiAVT@u62AqvNJBa)q404T{BZuLs*$9lBdgs)|w&1Dvsb0w?8 ze!*iWXk(lLMlw0hIU=z&uM%6yez8g7O#{Q`%2P7S=9zXouQAku zwCuk_vkQW+2*#~G*Z!=!ofnEml>oMiEgx6Zn6K|l5Dm!SgYq%J?OD2BgW#Es*wSiu0yu&H0C&vJK8sgvtb9x!!s<^IUe2p}f<*fG1(mZAak|NHjE(u-B*c={yp0!`RoNX_Mw@=jY-5Dh1%VqK`LVOqCJtoa= zZS2(~Tig(#tzunYrq89n<|({rad+R0ny zUEE@({ulX~78f^~R==w)?u~l{=&Illg(vItuGVe<>z;Y(T&Icr7Cd`Dnq-a}#3hB& zuM9mK>BW04ui^Mkn+@CC=K4|`YLK}7!()T!ROEs>9&5!sP4UA*@V)ogCetrlRd~dc z%WY{V*@;o}zVb1Q9;2p3eU=XyIo5v8Hk(`Dv86QIN-IKm%-W8PKAmqO>hWnYI?j?m zl4oTE>@UTwV){*`LZ-H@RUNaH=!VeJkl1*305Igr8T??h^55iT6ht z3esb!Z*P(oF^@6Mc>oc|)YsHtryf?~_3Dm1N^Z)=G@4Ym zi8S!U?HpL#al+@OO=Vr$N~`9wY*yeLab4}sqbJ!`-V|71UQ!79eNUT{^2vCQ7G{{Ul89xw(7H9{a{wT~=8QI!U+YceghsEDq7*8qXW2c<(} z2#q$JxA;_*&}?(>OrAKv6dk;J(=IZ+AF6VE`Jpzu(2LO6|=CJ-Fw?+8A$4a#&%=as5GaS>%D)-I0i1pD!Kp+Ou0pkHM2%X))O>^Gx##36vH&B~XVa9fsaL z1!&vbT;AE=d7fp@*_$FVHj<`4;UoQ^$DdmKMoRLMPUq{CnpC4XB){PHB(>2eFxT6j!8(;X8lg}CC4tVt)>Sbuzv}mex z$@0tYHkL?@tY#?UX(NI-mhqG2;E~RMivWy&_3LEoR=yZ1ysN0mWlHSR0pt*LDLM(e%Jx)e>=*RqO zDJ|xM!eySs-`z_iSu3#tVdOHfQP15yGCS4Y*RjpZ<3#((Ip5w$tO) zC%1{d(8g$OqrpUI@sH0W4}Yz4k?8jeBsU*v)UP41T*SyQkMe-QfxtWxah&s7#XIV9 zVk)S{>FTYwU+TcqX;yZ(8m^;zX>&iD971{2B%8JtQ-Cs5hVC(+r9orkt6A^tAhWe9 z_mPK=Xo+K$1Tow>1OPH}I*&@{d{3+RXJ50@YzC2gsNBSnq?b0kBQY4;DzfL0IR60a z)Ed8!W$@OQsp=Xvg!)dWWURLD8x5v16NLmGxB%llI2B&THfdp<6^s!>A`63c zK1(s+Wb^&j`@9Y-8i_$DFC*5#Rd}Z=vyO`E@c#fKW$se%P1h}TE1OuNyp3cx5RoFr z+jcVTT#(ox^zBXY6iX+DZhp-7QEB##Z+8{kkdqVz2oos>o<`-!2k#m~1&yAsaBiJ# zV2&B>M1}V)!OzJ1Li9Yg27L`$fWP)smhLX3(!8dCMu-oZ888b5P;t9FcNnTqqul6} zTwgR*mV~0-%6q0`d-jW?3ji+W<}r}KFZX)@J@MYJcy;Xn)gv>>EGZ`T3Y>oN264L> zIa9~3YY#=5J%3KOyV9*AlTW+EQ(j8=MPk^&QZfi2XP*B6TIn=lP+#R{e=aNSqyBr?1Ez~crOE&0kZdqcINZxbhjsF0`!yeq= zj%xa7Qdvi7s6{!uE}~%^pbV3OdgL4r=lNV!&N<6Xtls|snUCS?88pkQh%7E+!%X1Z zMfaC-t6@i9y`J5weNF>?CA1PKo?o>p$t2sOX#*)zy@m-O)S7&;jY94VbeGDx*)#FA zm4RS!jN|xu_NrbXvz9wsyNNXk+0~LyIaFm`7(U!%?%-tOpGvQUnMKu;P3kvNj@nB* zCW_9|+Tz;k3#Gj`9FiMh0AObWsLw-Ky2a*$s_7c%hh)F9g7)_L<-Cemo=`l)fjXw) zv@lc3^P1=_r*UC({iA7Va}&z)u`)3kF@mkP2L#}E>x$&OZ>w8aUaX#On{0JREuC(r z4HNHT>Lba{cFaLRIbhnAi&l@Q#i!|3cfl?!A;qztU)=!aH{%5HmQ=t#pc6^r zm^E!1Qt-vrnWtN7mKvSM*=CI+^9`!(Aim;A1Le=BUs}MIUDbcG^sAQEB)Ykl<~ZiH zTTl`=AoAHH{JTL7$3ew(ULMwOmf7LEcKbm^6A_b!IRvhA*?(HXe$GzaPg0YwO>^?z zHrwztb!+`W^gUJtx%(vcD#;A*8FjkCsYXx_%g#aR_iH!9a%;L|LgwPfP}P?91&!?z z)W)!}

(=4>-XmoL5KSSGa2pRvX)&D(YArMcy!|0}_l>cjxr1Zyf6SJ->~o*5TLU zwURqnRid|$pDd#i%9@K} zOAJQ#&89-q85xi}qNpH^q~kpZIj-c%Y`@u)lop0){FRmCz?IJha(E}F=4skguWO`B zD79e02#cMPlL zMKO;V9Xfi0)7G*{DRQ@`bLT12bFQdr*K~9KDb)N?t=QgMOKqorYS~Ee+Q0}zx*5pY zejK!u!>q6vGK9=nR$uRdj4{>w~kgRl(86WZpc4(ow>zr zYZ}g>;++P4A6L-y`#mvsA1%@6GJpds4WMr1VBj2Lywl+ahjg!ol6a3&{{V!aQ`K*S z8+m7(c_6Mg1S;EzZn!>%y}LuX*EJ0)&Gabr`PGwZ&wYQjTO<3Zgz@-uUB1qxPkCv6 zh`h#~MTz!Udasf;we+`r&nMLWEzfcNp4ShoiyOIC3x%=K<=q=(0&-WJagYJyv8$RF ziuDT!ZuHBDE}r7<;!&sS`jwQhqaeuu?o|YVj>GY;lf(WY)b$-Y>AYE}+4yQ}d&w-= zTLog}7>&TcEu3ek;aJ`*@ddE6T}oNCj}mxcE)v}u-sUx%%^;nkFaX`chSBsY4=)on{i>`>#Y{}?~uY@bQs6V#gvsKbC3x3 zt^E>hZ%n#vKJjm7)2$Vymew7zM=V2(Mq6nN8@4|@*JWwX4=F)>J6(C59@eBM$kv_B z5#XD7^!2sT>>|@HEi$iWqsl?Sz}h(aHV@-pJb2&1H)ST)BeJ-+3hb9wa}2Z$4l+Gg z{6&2?tm;ZMnQu(Dntq`ad4}|bIgj{D3=rQ!Gh9`y8inlIifcEP7q_=EIaw@VXq4a# zd5XmH!>%|#g?$E3UQ`#fg{`KBvZAF1{0x>+ z$*5_`{*FdwfOUnr&((9@yx~wQoSsPZ=xg*kbB$OjBg)n;%;3CC44UtkCgTz39;eo< z+Cr)@5E8vBL&SE8Ci&9_bOVfb&lQ*Up(fJ1Km(tzr8l9WTJ90JhT(@JoL5iaj|$pd zTU=|p=52gAV0TF;MxFacoz8RohkBpFJ`(=`gudYUk_$~f(0R8vZTDkA%X90D)^Coy zaSw^FE%fa*4X=ju{H>e-W6WW}m4~V49^T~EGHy?ie9a>sRnISxL&ZKMy788{Z>~Us z2-nK9v|qVz5dIK7eNTK2z*QXibE)06Na_wV_|s!vjoTeDl4#rZ%aCvY2Y`JmRIIFw zn{C~cS}p8DADcXr-ldI63x&w&OO?A zaeVs%_VFJnmwS~zbb4a2JTVM+m(j%|Z5=`M{A&KAbkZA$(pC|M#s@|j#U?eejWxlQ z!>~B$GC2PLIHpN+y+Yt191;iXP?R-k-r5%;pKM?p@OZ(Zs;+k9Jar<9 zRx0P&lWOgME{%5uv%L3_XJYLblfQzPEpPW3rb`ww0u|XxYL3 z0(a$4_tXw?_m8!HAtj@;)t|3ROGzsw-TwezBb84bJ=M!2136ia&SqlFAZrLFN9LV1&%=_@cr2gHk@?s z4l(Ik8Z2<%q);q!K+s0Ota6W-s{nEMfI9lsW35>xwQXqjldX-^awM|OyW@ze?o#cO zjN=^FPcD~i;B%DZ;;8_(KuN#szpud)>e`02VFkvj>bH7sk7y^~Ve%YCH=0pYRLL7f`<=UpW$DTs9=!VEyKf2jt4E(hx`yp`OCn1J!r9w7 zSw>2vfTH7+z~J@+j+Mape?Yvo(ku*S<59MP-V1r|Vt4W-3PJ=R{HKhMZgP07q01JT z>5?=qz!3p z_M1?o#;$j5n+N7hdy;T-oReO!@gu=jUNF@3o9mdT(InH2%!=^dyTv4fU@I~Vj2xVC z*wb`h2I&&n%WZ3_S>5X929gVSzj&dPe8AxRxX

S}Wg1eC=E%Ny$lU`kyZNd%!l) zc#SoQ^zBnpfsX5#S%L|6u{U9I#-Zf$!dMz$W%a?)G*bo`mI;wbDj9WurV{Esp_#F1JO=+T0CA%k#t z9Al?A?_C$zHC<;>iFA>F3y4H_pyDMmae^{3ILGH+W2Woc{rpaeXs1V*iL&S-4a$*# zd0v2H0|kBS(e(XB{WUh!pq}xkm4Zg2=7GTke8cYN8+rP3Q%X*w(H-^I)uW`7?bOTg z#*2NX_&Zh7Z6a&7v6f>vED_L>Ng40XPdVvb6|S8<)t;L)vW2(0$P>o7IdFbndh$AY z)qe)vYkE$%;*^xdCB~s3xOKQtixRLLf-)PQ=4&lHZ5{5VbEDhe>GRy^ERx8U(g7+4 zlW}Z&5;*s*)uUsIYIWr#mHOY*>}RukFSG5A<`_blJn1uq8N!d32O0OOF~vJ*vB_&a zyi?oBwr9G?cwMLA(Mbk(zxruIW^hdSlwvC8~wIc*Dj>&MG_{~PBK^w@;T#zML})iA*bp( zftvCQ<#s{-i3Z=cCzf!h%LL_HXc_mc=I>d zR(X^pa<0;WunuvNp0yu_HO*DEom)=wcy;qGA-iueFc>2N&lmu4(-k$kh46$yH2dhB zqbfXS5va=$K_qj7>Dr4}FZ8+e_%5v0L{)JUT+FS!zIb9e&&!_usFad8Csv(0RXNi8 z%{zv+)U5^M%LI2K2_&^KCeBcoRl)8+2cDH%#U2dMC9{I%;?x_R#tVC)5M}iRFxl(g ztc^cbx3hr7G$^}{*ftVD*g!nwlfb8Vdr6;Mwz-CLbrh3ErqCaiB5aU)fx$d<%|vFt z89?x;V&zSK?KsQx{=Cj>!e0-x&j<}yQ`6*;KHqh^F?T3<%k?swQh9+V6N<5fQpl8(k*CT)8txLlGF0-_U!n%dH z)iqgl8xg5q#{wtr)R=%d`FO|~{w^!g+r{1j(tI;}W2Ea3sCaOBYZjHIT1#-Kpbs-? zR3meA#&KR>@E3NhNbUx$7SUkqsxTivs27f~xpZ(_Frql}WqG~+Gl$6VLPVlXju)oO0iPR)0| zt**y4Y6{80+5TqEqkf(ux`s#bCb_21ZrRywKb5o(;APkkr{2%KZms#%ENyLd8}GGG zY^0l@rWciR4%Wdr$QVAp)#HB-zC2p^@5g$+fvosO<{diP2J&XU#8R)$7lu6>o`Su~ z%fKdo4Xh5}yQl8_)&-bjfKPrutzzg_q}!_wntA^KUCkpp)g$jMuWpAEulR>cw$?30 zuBi69Wy`mhYPSF)Kkh!nREO;G7{F-T1Y~=VPd)R^UAfhw(zQG5jXu^ZV>1RS z4$!TP62rECQ(NI`R-)|RxcV5{CENz5$ zC*};eR*#ae7Q1}a$T8^e4e!ZH$jr}Up-aU(|6A<(n6m3{Q0fBog3}C^tSNFu*k$m5;pL? zIM3r)ysxc13*y6u!^jR}AoRsJu2pLnQch3E$6*|8fS)kn@((p)$4_}Y z(g;Nho-vxRY{PkMBR+0+$fS1_b~|0LF$@&o=iGJTsEZgPGK>O}NZ@9onhnn{{IkFf zx7YBkCQmXjpbg;j#WLnHA>3CgI-JlWEJRA5kg>);3a2~)q>u#0dQ{TtUuJU1H)AXG zs*imv&yn)51aNyAVlL>?v{I5Va0tK^ZCKA9!gii|^HnsYBJMCjIXiRdTCZecnnwNw zB&pBmKp6(#V_~=;;Lt7Gwo3gvR=~3RN*7_YWUwvVRMznx%$k#$0I zOu2;{Bq-&Zu6fV3Xjy5Na9r8RrC$qzE%S7nLo~7}I~Wd}0tX&|(~K>;GO1NXdzBje zm)+ccqojXl*+NV!0vnj*F^AnNec_xA$0I!YehzEcZW*GuiYq~DF7=Aq5^&7huygN% zPdrrjhG{iTHYs6tj_x-QE98bN^A;p?kP{f`%~#Xyg57H`6Ff;Yrs807;IZ1L8R#%G z{{ZW)IW_IFS58@Dp>6<(Vp5@)J9*fd&JS&`1eb* zTUq1OwOE;LBD$3Aog)gxgAj3#L)xk9z6p&ycdhF(TgPX4e=&|#6J&0U5MUjns2R_$ zc&Rn@p2FKg)GuwOw7<2V?CmwgOg>owRS4M|Ng+o}bfYvft!?fgU5;)X z9PT@VFdU8tbJB+6B(JEw>N0bLteUgedq2w78LztAN2J~9*G6fs7&9X%k7y&D9OHLB z{{TwW@YS5!_la+GJNOFf5^3osn0yb@+}LXPBgR(KCfR z*_5d{ARPXpmsDFTJN+@PZZ$b>Zv)%N_YLzE5$?hj0FACk2DNgNdmOQ+PG0Jj+P>TO zIjFR&i%2zVX{SV)C2a9C~894Qs@99wgGXTtgf;GRFkYiwMX+Av?O{ zf^*xDIj8tDL5oqfk5rG#ir59iKG_-FOXafNH-Zj5MO3tfVvyNi>TPRiBQ~L+R4(3I zU=?r)%LQLc4bSQ%rY^vkc+sKwYB+jxmE*uk}duOYI(ePqf@yLloA|Cbn(T#=tPa z8$lq(I`%E!6;|U(PY~Z*#|D!Hn@a;srHGA6;07QJ^T9axr>{ev@X}3b{#tka2z*&% zdv|vO-rgv7w|O_(*@BU$-#eL!#(2lM{A(gR7&N%+t1~sYW)cuZ~2wK zFKX;G{{Xkgr$o0`@!2E8C7Nae<-D)ml_&1}!7>lO;auLht7vWJp6TvZ;?}JB=zRt{`ZEG0G(KKp>NnI_>H@ zbBxzTV{L6Fv30umTj^p?v|B83g?QywZ1cz<^~a@TTKG;Y(Q6!b@m<_W6q31lizJFj z!94IlWyU*$Ssoucj(~17t5_nmv53sd>?>Mx^{14#>e6v9#;uk z``@8GnziCwPpmc4OJ^bS*2dG#Qkc$4@s9lT#Y?VuBmNVOLrL*In{9NG**5qUB}hw= z*LWuYA3@veN#M_mniSfZO-}h@o?CUcxrQlLSl&QcRB%3AfJo<@kZYpU^}9oO7fX`r z(jtrHqA^t5Ip{q{1bsa#I-bs=OPfzE&p#iCg@1PIPR0*~JX_+ePsdu0m8x6ErX`KL z9iSQf#wrK_zERNo*8P*}dbx_%Pr8;l@Zs&8`DH$1wBsBCIqU0J=aTWSVbpFu%Vb|- zsFV!g^f~n8^{Ak>z0`G=yG!qs+XLs=MS`w6DLjl2PCk_s)Tuj3xog+4=Ryveal3ai zd~@L0CD5$i?mssD-Q$vFoyOyUMo-g<De z12_PZO?n=r*7nlFb964Hiao6?GyK8TurdHX0SEI)8q=V2#+x%`Q(Xwg3;Zhj-h~YJX!87}fMwcSg(Ey?0Fl?FeH7`>5r>Sc`;W`|)g3B6);zU6 z*&LsZe`f6~yp^%P-r^U#l7A3oIcGR z}P@5OgN z6ntu$cZZ(-!%i=_hM4RJ?AafDk8f({H2(k=>UxKSZ0FRT8`LR_IF|};Ul~tt>G)Tj zLaM>ky)|~a^w*<2skqas+*{kWhn{?S_>1AshMo-3?X0wDE&NOK8*>~=tfcVLA8ccT z)Z@_C&KhTkwe4d}c#JY7tdbdg#~hgtS1i~Z*Vwk+81S~aWvg9ys@}}%g4K<^_0r_V z&5?vBraNQOzFtoT>X)uoNkfGsWD@!OtMxpNs>I=wbnh+h`}uY{-A;H$PA4;I72c4y zQeA3`bu^gU6ePaVJzD^NS*;r_VNJTUtRn;E=dE1v4}#^=tpmw7?=nAh*jC5WIjq>U z^`6{EB9s8|N#?z}m*&@V2PWR7%;UpQtyovU)t$g@U~J4ZA`GUN_P>F-#{HncQ@SJcMUG<&@# zQMt6a9$n45v~IqP4h?5&5P4R_D~5K@8Lr31*RpFeCZ_1o+yJoMjAJYZ%Krd}7(U{; zF&GXVmv%=|XpQ+*!bx4&YPR<1pfF4h=iaWYTca*pBoDlMjPrq3W4BwFx5vsg zP*}}PHaow%ryy~WfGDkGw=gMHIX!cZXrM_SMO*4?Hle1+HPYO|_eKWtNXmm75<`xd zDhFTXP1H53M9^#m@JDL0$vQpkjCTVOLI!h;6_Yss0A$uBo}@KB5=)qM8E>^qR#^(i zYqA9el$JQj`@8$`if@f{R`B)A@PKa3)Qc=p%XU~H+n$9;JReTNzY}#Fp`rS{95ppt zmTS}GThM%4b>dwhJU13=Wg@+)S(6h=L10M8&IU-&u&c9Z)^>MxFj(9*w#Z&71m)K) zj4wS8-6Uh{PwPvZ*o;!qP zQlofrk?p~3S0t*tq?z$~o@-YRjpW1GN6Txz`s!qOe@p)Wgnv*kExql{p>oD}<}sNR zf-$uE9`)4dIwkG({i@pBS?TdezrDMQj?r+KXG=Ntn?DYG5kkIO?y$oO8uJYHGGSqbhWxcmltPxzffLtn{n93XhoMW#&DqTNXNN4*gxzsg1C@E{D zSOOJRCkO#xNEjUZ8ql`Zh)NGpOz%2%IisKq^ut5uwKj{bc= z%+9jBztlWTbW86)PPQu2%RC%0F_MEV+z@+p$g3LOm1(6IZSAh^r+e#jwXQB?a&`lN zP;fFq0G~rqYu2~AK8K=fme5BmH*-C+q(Qev3KtKzoQ=u{Y-YL*4_CCiw6=TgX5!f< zO{*9u<|Le`!i;AFj%wUh^)vR<+|OS`vF1n zbN<$N9W%{zdTyZ=wy&rgZA#kE%Wjj#@hFiz-c+FjC#E`9UxeV&waqHnO=~2x9m_S- zwh=;|q$>3X?(jhGS$_^~zu^khFRotbTP(k7hs$IS`o6#TgybroMu(q{1oiEeH~8OxSsTd7!u zUN8?_;}{jsc#B%Q)Gd5U`nI)eB+@Fag~hBaim|9}WCI}J?dROrZ{ZDU-%jw>lX*Uv zH89aEa$XV@Wj?qW$FDV{TyEUD8CH|SQEff^wARep(LUK_9rPDB@S{pra`?z61A+Lh zSGm&dwG9%&{`gP!=p|NU^2m(=U>t@6&~`nA8ji1VWvIxJS;1_xK#XIH=1guF#~nvp zQ>VN}(>6({vw5M%m5eC)NnSCNoDa^q<36X%Q^Y@O&cDdclfq9oigjet;I=j~c`<#S z{oD6UId(t+$RL~p?b4C0MwO_@@J|Jj8{sfQp;jOa$KSy zi4YZL8wdxkM(^iZz8chIv|Gz72&A`#E@PEqoyiClzUX1pU<~K6rt4lGd+jzoZWj?; zq|bElDq$8ugOYc1o;j{axm1&J*YrG!Rplz~Sa~(fTA#vNa-!SBWw`PfCC27(2srta zCqAOJJQr`G!QuHlyDMa~Yoe-S*viUC0zw}Q2R%8)DyNA2H*>6A+FWV+y}%pL-tUwT z-IY0B7n6}$+6IW89@TXTXkyhMH! z-3TB;ol23=9y&MaQ&?PG-(6pSW>_p6nM)bv+mY8=@bHhEAzM(c- z%Yr6sD`RmiNF#;gini60d)(@iQG#rbTGCD23ubI^YX9D7$W;v3oYFZ7Ga zE-qt2aWb#WcVr`DIU}5L&pj#s01!SM-`n`NNx!l2Ro)C300jZ%6zzNe1|=c zY}K72Xl^cJp6oX0zEcyhkVVfRb|XFeS5+#Lp*3}T{$8a`%bL>G=60>2PvXA~KCP=r z4f&52a45iljz;1RNp9qH&*y#ZZBs+D`&3e0U0ZFHC3Yc$jt3z0=LgrlP2%a})9!TC zg5?Fp!Do+8;}fEcum^yoV}qY+g6GS+k)xfYwk6}1BEKmpFiJAxu^(P*Y)&S%NT@jJ zeHWLJ73V8xhU=5drP*BGc`bPqP?t9FC@#cv$NBACCY!73J}S6fOG>zwOKXT!U+9-k zR!C#c1d2NlbM^JkY{OT{k$=N)iH-VY$>wRkv+lBroJy%$5ps^e0k_Hu69qJ4A2ns140t<1hu zH*iWWAih|)kn4@Sk3&#@!oj)l?X*4{*0mTL#Pca=CGsR#W(V#rae#5uR-N~Y^p6kC zrrPSa5NX#}Y<5P>0z2oR;A8Qto;&c$_@3HSHqpx!oROr3$cj|l1FXM_N zbGIs2ohPqV`TWgkQub-`%TLGA`IPisEwq`g^(%=~M|?!L7MWIyc~A}r13f$c0EJJc z=}|Oti-=&3)+EGnE*I?T2-~m#FnAq0U}KJITOAhTRJStufY_(*;XpTT$0dm!Ng#oa z{{UV%2tFfTc$V`}w_Q5!#@fzPYv*0SVmBT08#$!=8k2 zimX+hg^wI)nzpB+&;6C=jidy>IV<>Av4_TDa8q;~mn3wxzfr>u z=Kbktw6XJMoA3+9GC!DYB8flgq@y*+_^(C2@RqFFUH<@;_LTw8mf2DW;}!O7my$09L9K>-p+QgRHGO| z@jRdH-a`f2q>jg~YUQodwcWMA`{3+~W)3{{T>xZCXRO&5eqcAH;{T_ULi-sux#xK1s|NAH^D`a6c+p#F6R`6BcD|ho(WQ zk;Ng8B}ib!0neoaxmZGk?}+@3$prGJ=~6@#U=Dd5t3h@1si_ zg-{+Xzv}@0bXcS%k|9=Iptd?=r3P(;swm6#&rY=kw2U&PPDdFXI`*q}mH^?L?mTrp zJ?WYhVz_3IqYcgv1oTr{w#A@On}Y^DI%1)M(O!0u)DycnJmBW9O#(=ElG*eFAD{XB zC<0B&vEZB)=sVF(xP%Dtot?0wnkXkz=dF^qNMw){V;y@rh{SlmHtY#6VXupNw?WRBkcneA1y zJ4hwaFK!@MY_F_dcw|rmc`^aGU&@W!)S%I9K~ zd~W%9{w3o$s#<*7hMTB7noQ`k%^8eG3YiH3$r#6`NHw<>jen+ih8;&#V=R|OL}4ia zOSwV8KG+o>6f}OPQ^(ex8Bv6-6{Go)O#)oSbuFl|+iw75wy|9DxpBLbjzAgr=|W%s z0K!upw6`QmvM6(I!GCs0$ZUFKVrd2dE(V~F6WfKA{X%Ei0c>N7~LVbB?JZ z_Ng|nq1-B5=?;kw)`!bt?q6^Lcsb_)AFn)CmxDC-@mGiLH4FJB@a^Thyna>Y#M-#~ z-5c`Y@${_E8A*Sk+oq+gxt&|(;$6jYg2SFU$;Z&utp`p1(bI2bX)xP2!ZVfw*MJEW zBy zHTBi+Aec>KYi}OO1WMqHf%mhIPg;qkO?CH0d*C<-9@mpd@V26L7{%bRnnq@}{{UASsbWD)@Y_HHdsT~JZKBL?gqA|` z=&J;`#DxO#4gmRE40GPIw7UzPar{GRVxnoT=kt^gl#o?Jmlcr1>kz?&VVK2siPo`&2e582N^Cj+o~?E0p+m;@v-9)}o*LI_BcuE7>hBV!U=>3j$TJ zceuz=X4zPHYev+yJ!;*pw4Fx#7H?}Tsv|oKZDd>wlgHMz zwJ#r7Sw`|)PqeT@6tPCcF5*E2hq+vH-nh>c{5H^a*|hf4t>V&e?B!dNc8V0Th68Tz zQ=b0-(yxsk<5JTm&|M>*=4CLmM%)G58Dz-lM<0lyF`Qe9OTL{*g;_%BS$Z8T{wdU~ z-N1zsSB^IlDF22R`H)-O5%< zTE5+mi%*vGTJ|{q0E~Vp@i&2Cv$~&1x72iO54Am$x=3(-_tVr5$BODaE8_O?wx6a? zWp5^yZeS7)w3~ak@g23I zTb65f2?oGaN3>y1Ju!oi!nvbXSbRd7)-wCgKDBvKsTP&gj^JvSS}n!hrM2X%Zs&6n z0+`#-9A}#7G`%}exs2-N<+z48SS`G+2$j1wagkXX#hta<$k#JO#aC>^WGFu0?Q_s| zrSRF8Nty}fisS5RNLcrrmF{uh+d!)q8VK(?AmwQ+bmyV>V_B`XKYR}lpDY-kf)YZYl z?oQ`5s%UAgEv=5A9@RrG8b$@7VEF||#sSA(K_7^yd~@L0ygzeos@Pvms#~mHO~fxL zC2`Tvlf#4gjDy;?e#Z}pQKY|`TU)nWM#q(Q^dq70bSEl7+wgW_PON#EBH5i@he=gxz;s_ zOjd3{@~vZ4+6X0gDd!}0uTh@%DdV@&%&Ouj7B&EK=m1c7>zrdWx7Y7>k;f7Ri;}9C z!hz7APo-q&vBf`&nk&m!GOe=uR@2hSvA9JH&ur(dmkmy9RWY$mm9%k|2!kQ7c^X0gfWlXGSgc1oOk(^f( z@!C|h@aC5qlDqB;edC-eU=g3GuM)o1#;VYXa6FjAYH~@y&nMrS_2qz;Dzqy{;CJTl z#Ri{x#7Uk>Q`X1-@lF~p?X{F6B2>bZwAB}mB#E%{S0K$8Gk}asVwT*a&MlMy! z<$>*ykIJ~1=T*RqJa;CoEJ9W4pq{xnuX2V4jR|wXYE0_NO3jt+?Ul*-jyqzstgS;_ zM5qfeU`VFJ2n+xN1F2ft(i9^X1cQP(73moyMW{g|T}Lj%ki~ea(;)j?(3e(lM6Vj2 zS0D~YZk45T6q5az1>DR@B=)F2$hNwOc;ZO>(8bJSZsU>3$68~to=6RneqqVaYO@ve zg_V>Nq+sB2R;5^%A;4pf-KwuYb#cc-j@3we3v&cgD0RS*c_SPj^O|j}vJlJ^0n`#Z z)GF@;y}<99(LiO1ihREK>r%}Yq%cRcXE@{hin6J=1poj$=BvdU1{vJke-W#(l?nmD z=caqmRfibkkYq0L+@7CWDfkPW{{S%l>d{MJvGlr#uPvptHx~Br#IsDHK`g^LWI4t% z0Oy{yM%?Mr>)OAYc?0PoEac~c5Afu6tn;L4ULOTCdyAQbk*Zu9xd|crfO31DwZdEY=51S0 zg6B`TWwDJ~OO4jDD(wLCyyKkXp!Mxt<&LZNdzF$!MOU{3nT8J|=LCBi^DQdvrtG&q zM=`=;X-n#L>T;JEB0F7hyZTR^y)iD;B~TZ;Z)zEVGIB%Ni0DVJn;gfq|Yg z>t22%5iB!`Qqlfr%HpwgFmi<`O7Ul+&1rvOZEbaTDS%yoM0xpu&N=k!Nj9Hv7xt8M zOx}IGiU@J?6e=5cw+HmAR(eg&t$SpW0W{45x=TBj;dbO7t!GDT7l^g55>2RSl4%#o z4t%?etamFOKxF5k1myiaE8lapV{_`$ZW=9r;CX0ZX=75jhU(^clHS!ODF>DVeWE|_ z9(eTpDmm8kRI#1}k&ND9PqYoCy5xL^*nx`a^?gFt*2G4vvAik@jtYh9KMtam>@Du* zjlakdi7sgb!Tkl{F034d@HH#OL^2bx1RLB=> z(kIGE3b?=?;<5ZuX%4Yz`;WCu6_N4eVE_&~mE;b+>sM96QjJBbKHnYOVVqzN{=F-*jYg_DHFN4}ygo97XyK%rTCeycWYD0|btlmVr7@0e zNv@LVQ!<#{gE-`#j9ZR`Tvj3lb8zrmptY+sejEPTSEk7!!UITE)H2#D~;gu#&AdDLq~gd+Ca9EKhmM{ z!7H=^hjs})`D(@2b!|m&h?dG<-bVXpSu(DT#z7yK*0J>4kzu3@t9`da zJ133P4w)P{JoLv-{{UJn;Jce{uVP|lc$hRx%$EzESRcRuFG$62;Mu99MQM#-aIyO!zmtyx$S1o-rDF{Xy@!eF>AMpL64l0qy4f;Ql$F8=`JcBv|;$GFq( ztW1qzYbDjOT+E6A_R0)`NCS{M)*hp(+ryofsKtUv&Z9HdjCm6+gtn=FG z76s&C90)k~KAz^h?^V+0xz-K!y`*1illQA>AQ_QVpPL=u9N_+a=}Y%bY~$Pff@wz9 zF?4Gwr6X6?gjUT7Cf>>?B@p!UAN$OE4%x+YXIi+`v;!c8e$j0%8X$gUi?cVU)O4km z-VJL^Ylu9wx?&HM>5-K@jCSwGV^;0uip4y;6f^3VB=2V!*asZ@4^H)^TC$hC*Sl_p ze9}!ev@s>Wmg+GKUUEe1=7OAHgUQGF^{u@o?CKT~+*`=aB&tK)ln#SwIb3HW@xkEK zYk3EU?jnz4n~Q;;wG|jY?5OR{a`)Qh--dNPLh?}@8g>2}Xq1p)Z@L`*Ba`ZV>nTmz z%HZX@>~yyaXf8JtiwxdWv2Vy6ec*cF{XfF1-RpiHvWm-1ym>A3__Abt7BW9d@P~sT`q4@9z~?dm-#Sezl2lr|IHZ?$4OErMAZm!>A+$Q|s7%RFajw>s{;( z$}6DjSp<4Z#UN{t(r$`b5D9hyN~y;jde<|pYRoljc~at8-^@U5ih={OL>+z15wk=wOd@P40f;c3$MRkxMzgkV}+&ftY@&GItwhQJU-n8 zb6U5JbZhSnTHW7Bq_dqic`}wG7K{h?2*DZWBzp7590sxCJJJ200^3`up7-qc zQY44Vks@$+sW`*q_)j=Kgjd_;^QVb!bi18XtIrhH$kO=3;GJK^+I6IszDCVH86}+_ zK$sX)$FF|%^Tctk&_e<}mcESmg$AhlUYmIw4|%5o@J#YLgfbQRRfkOcr1C$dd3KxO zJ!eruk$6dO+F)XgNhE`59md97o_pt|d)QdijT_5roONlrO}iYF7Xb;_ci?b#^{a5% z+&hMGjDga-J1>PXXzvU@AlG#758g@({g&=S<|+gCvCjv$tx)mAr^DLl)9eZxQ5143 z4vrZC&U*FDbwX-#Q<}kU(HnPgWk4)anpv*3m*V@p91!#_29LhIYp! zDCj-1YZ}Sk@e%fgBa*$1Y>@9Ft1=^P$r-KrbrfBZT4;+!V&ohZW9i7M_cBDXqN=+- z(m);ZK&|$QJHHLA`@U;ygA)ynV2d!$xoE))b&p}XJ#~iL>eg_8wkN*H&Uc#|KBS#<|p?k0y#Yq!+H;oi{ zk~Jsi&tcycHO0T#RZ2#tHsfm3B#t2>h;j)Bb~ycNMu_Bu7v0HI%D1SgB1h^D06bt+ z&lX}BBXXQ%9OP0K*%$*Of=SHCc>e$j(X`ZB z+fUUjuHc9*_1rTcR{}Ld@~FUGLu~^dq*WEXipgz1v#jkVj?M`(ZRhgiK+P6+XE|)B z=eNu|*W&VSTeI})RG}HS$$eG6?(gm~JP~C)b^!8 zJ8dOq(lcufy~N>+Ei<5S(eguX^u{^woYoDy2(CWEb2Ze)5VFS&nxKPYDmM}ll0nL_ zsikS88y!KJ^;Hw zM88s|S5FZo?IrN`IByZ^v8RP};3ByilDY!TCgBpSfUqifIN%(5R{n{oNvXr4YSK)L zadQmTPjEqOjiCJ5Jn*>Uq}4Q2;tQ*_yN}A*bLTy@m{6gH27YdbJu}=>iMRg%gmOD& zvA1}1+o+{NPwy3spDsOze_E(1DY;)uZLa9+r%t3Q-u~^Zmzp5gtnF4Nwu0eicaLgF z%19#zt>QrZRpsU>%? z8~_6FeMzgDWOlX>s#yd#SMfMoc`f(_LCFO4=tns3N>`kky_VjBsZGkGwup$wf)r(xY&URqy^p*4mz*8^?5Qt)U#TEqg&@rjzpFgmR6Wa5(dC^Etbzc^ISsQ&1bJ% z*hQzKT_FrwHV2FXGEZK<)!bTmi$|A6wU+It6OHKke5fi|Z382+=dWr?FoJQWt^WW3 z(v~KrRmoO*EmveosJdzpYtbc~7V05aO!j3R6#AY&5mdZUHKd*lM_&-zM|i6osIHqr zw;Q(~W%un_dTsn~s-W0piC~o;E1WXO3VI>nWnrG>DRWi0~-)t z2Vlel#tP-OZ=jPe#p+9oDB6~_&Nag%{i>UwO` zU0lTWOD*NxiE@i@`#iss9*3?vV~kZ_59pE4X9|cKP`2U(P;wN3gae#$#aF%84Y!FD zG&dpV#3>wu<&Bp-=dKAj2wmD6r|lY#k) z$M|Whc!OL1)Bga3qRL2`H<&iXF~rz!mO=R%yDq1yUP|DsHpCsRzC$1bA3<02>sza@ z3yb3JnzNAeM4*V7Jj^*AdZywzq~Mg|qkC((C_Z@d?6`q^}_v|rErrKgro062Z{RGkCI;EU8 zM{E`iCVcQe*1ta~{{SDQMW$K{Eq+}#JFvF0<+cJbyS~%>AoMkU+fi$npwn((F#hvv z`FJgk`0PeTb5}L(A57F_w-9fQ?3Z|+A+=owc-uq;r>*&eQ-bwiTUDJ7*u&sB9h={ritku!Nw~_|e2u-GpEqNFP|`K~j}qMK zQqN;Ihppi+1)`QmX+}#nPXrDC&m7cO+LG&#+1x{9P1VGLAtY^s0cAfqBd1JcRx}qE z7P?az?k*olhGFI`G4GKwcq~7<4|h5(Zjv$<=VW^$^)s(x1w3Rvx^UGRg14|aZ*X?Z_oZ1%AF+VFMCbOJ|fV(YpL8M zS_F|vq%#?&x4L2F`MjuL4>{Xejqqp2w=x-JyuY?3xQ+{@SittfkINMm&y6)J<8=j} ziEVr_1)b4JZzn*?S7-%so=)uJ@%5rl7}(piQQdr58jDE(06Bu!Ar~H@jy{;LuyrvI z_imTTo`fSBi=S3-KM=eDap8Sd*4I_I6I{%mV@WK-3Nz3aY@Tz{q_VNo?`|SRMwa1X z8%yv?jz7q)ZE{@)S+V;?&aXYn<=!hsvi zILOWpKN_qx=qDH`-oST1oprM_vhY>E+w{K?SZxMrZ9MoxAH4Cl><_~~m2mrRZW&}& zRaSQU!}ZCl_B#FMlXjQ3r^}T-=|3=Hc>G7TWj3Sa%KO`%KnQw$KhNh_MlLdxx-#U` zOUSYk;xNtTF5%ajsP_U(f((Z%{3})NFXooqh=DmcQ0MP|lSvh~l^ACG#B}Rg5?)zZ z_*QM+;-q_NuA^Kr?U1!yQduEqTnu}3s7&%hI_5*L{p_Bjx#EGM>|R_=w7VR7cKj+G zMQ2dUZ~N1Yz$xb)Dy_xzFfkE>B*5c$YP%i7jX7CH3y`_>6w2sTv1ue3e5n}+o^wTP z!)P8MxNt}3MFKr8c`fy4wqLcxAZrlNtn!sZhY~uoACv){4Y=wnN5gg+S<$WZkNA{{ z9c6oTV8%&91ue9xIsX7wrzfYV%{CtlTU+S*Wv$!1w^r}=d^~Cpqb3JowB$xX?YFH@ zq`rj)p`*blO}I_4V{lgC_MG75y|@+ldXBu#+MlgXe&;Mx)3WSlX`0lxy7<%5 z%*SW|!z_6Pb}2haJd#QLg?2DXgAtj4fW!z@$qBH4K*wBixcd568v1UQKGmvPw9;Z( zT(XOAL%-p(;Mzv+wS~$S~BWE0EujPz;*J+~os?+-_(&GBUBDwiFB)tRqdyZ+H2cn4Q#o`%KL`a$G2X*QE_Q&c?8!s z_6caQTD7#MH`~2;BL+C?M$QTKKDEk6GTr!{E$nU*{zi6!+_LRw0k?26Iocbqy>*%d zH(IUyun42IjzHYp$`KfYw5TIFJf12c9%(;lVyRV)MzImJy$f1p=+_!M^Qfv!qY=s! zBX`2{oR91Etb5}322maCkWR$zxhksdg>RRpIU@s(^^s$&-Y?s1A-Y(;&mpmv7LO$z zSn^06G7b;5H^eu$78a1KDz`srj$Of!4X%V>WPUwqT}m9%U-0KN>s}9;ZF`f!6KnZj zwmep=WS51q9!TUbw8Y?&bH}H8dH~W0e$N{+BLZ8yXTPmhw@IGQ%z`g5q+WIt&rff9 z=rpZD$(jh#L{NbU`L>ljtAaqzat~g{w}caXvg$ZSH7yxw*Zu*VC%!XYyc%GKb`IoX zs~A1;*Pcd4tyI0#nsN3sa3i>tGD5Lu0OOD|k}=-4B-9oLo+Y?Rn?;kw6c|IL}_9p}8jceK!e5k-kp8W<{iN*=vRtm z{{VDVZyIUWI!>dcv$9JXuq|+}pEGd^P<=Nk9RC0fY`GyyH;#u~KZKIl9qpP37+m>> zXBQhY4c2WY9@{XkX z`ubFDWY^6!sUt}e5YA)!j4}sbuVe38s!)P%Hu-L4Pj{+pv7*NfuDrIIsY7hWRTDhG zjDH4usph0qSJE$S?*7EnPj4h7+J}BfAy_fbw|>U5WscU`_TFgXbhnmtiQ9~Yayh~D zIISNPT3ACgR@Rpiz2I@?0>PAycs`%!J!_I&>gp+IbJdkt-<3p!&OXJaS;uD-TB1i9 zJ>bsZszKw^k@*UJvPy3*t-PsWzlFTtG#$Qb9*nKuzDNH6TA}ergfFDf1;&YdtE}5P z$qNy^E*qgwZV45ceW&W4E4hnEmLhJhP?@ALlN?B+3_)SbbBuN58kxIZHg|UZt|&sJ z7w<0iw_~Wkwz|`-BfPheUR!dr#7K7X{{XzF+nxAoeB^Hs36xRT%Ocf~UVW*y~}@-yED9OI#`rH7ld zTQg@C^hn%_d729wy;dKzq-tV~0_CG8g=Zal;A81ndb?d%+FVQJMJtz8feYiwB=T|m zSRT3SjMN%tqU<#LQ)xHbE!f9BjzN+ym$M$Z9rMsvL8eF2-PWL-ViU|}fxg9b%;B@~03equY zT03?#ryfL+(U^tQm$8TQrrbu zy0xLqh7aM10NhE(QavjRO}?A$arvR8Htr>Rc|KHl$8b+lGB_T!i;J3XsxgXf+o7nM zMf9-Ec?7K@8AB{{WRw2W1;-tKPfDe8;+2b9Ykg8iu(Xhbc!xurbDVL3j+`3ZGU+-T zcY4~$Vzsy%kQd5EJpk#PlgDh=A$K;3dtq~b6{p)S=ar>n7U@i>jPCVPG0<`d=~~l@ zlWt1r>WWq%yba+ka9UY6pQXC3%6Y6BNS{1oJr}tCwSMQt`Z`))TI+DfCaW+r;_7cJ z?JMJuq(zR)IjZ)tK08qBOiQmt(2?ogwew$BReta6!wvyk& z%q=aoI0latX%r!T^6thVS3Hr~RP^cXRc^JtX?0CC*G-F5(c@Pz&KXjBe2l3)^1Zm{ zC%s`_bsDu;>nFR`#MNpmmPhU~)&l zAeTfR&7)NC$SV=BeH?VK)r#pgSL>^h!tp1z(}hN(jvC@9^i{I#*kNk!Ih z>te0c5a@mcu(!H48h)jSCU5Nsa|YtacbW$z_RdFcl}g*iD={|qo+;35{Iy90I!1{s z%OhlsxnkMIKA$ydYu+ThZ9_n78<~Zz%Fq7*9(Kz-jUYj>kz1(&n;9dmZHujP?WB!| zizYyz{`Kr_OAK+Jn2-p_&umxFPns{@-Twexk7|-hS#&W|R@AQIYgO?di5(h3yDU5~ zkf`Sz9l7KVE5dJKxLGe!Z#XjFN~i4$woLK&hhl5!8}~3=AGA+@YFU+n-gv=K91)P- zSFSPEyl-2zE2`=~L`b&ndAcDT!MH)e-H8t@IULt^1-B-V#f?^qW_5;^<3D^r2r>5&#}c&T}lO< z6;fY!B#iUh`P0%g!PcvW~kdt%E>h^4Yl}GtbbP!Zuz^ zTg}cTPQ(Tkxh10BU2ZNL0~ya#Px}mN+gdWiJ$i~(13yfKUBP3$hb-9Z`c~*Uuz@3t za^=4&f*4Ju!Nf$Nj|ra5{!Lp*ZYQ;kbFeQZv5I%GX%^wMGK0C4pYDN0KGH*IpDtQX znZ|gcvT~L5H04LJ>And%To;#jH<#Ce99?E)EE+_?8;K+3``mNdnW}hiP1E(3o9sdv zo#eX`NhP1TIAIo|80o>ekZ%1M!2@Jc_Y&F%Ywmf;n@>f#52He+>3E}Gik3XUaW3_ z$Ve@JvEG2hJ3O$NJ3R=chF{a?;`K)iq}eCc6IsUx{DCX=$Wh!F6%0tw2Q-o(XoG;sN{C{}MQ zsT>^jIOp)Jy`q$DC!z5+_Zq9C>-U;gdKJRh+0S%~92XKgDf2Og+QfF_q5Ue>i5Su$ z33Vb5-nzW30~}y&IV0;;wE1Gxo@+a+*&r#2V?Z+-b;tXsIsB_KWs>Ggri2$r+9?2G zk%mAR07n>PlYv&N!O2*+R-KfWLssnDNjwpWuBgjxv2sI^$9=Fp^l8_iYod&Kqiw2jhy}o><~{nlCb2b#NK8w}5ej`H#%jkexQ$ zWl^0f*Oy}*^aao~()OTzodGQv&&=Df#GkJHRj5mCLp4Ek+TU%Xe*4HznQr<*WUQP=T z4?oL4h^xA#{hh3=)7@TPLlcPJH(~=eMn*V22^B7lJ&5~Ymfc}O?-KmKb3B2cqYi7( zjpb6&vEP1qStP7;!*-9a>NCPsZN%H{{L)AxXx^lZ@txnDKKJbU&5SX}YV98V-~u+6 z7(8?8Ju5jhyMwD*OB{k2WOk0`4ds*qMi>L0dgmRnSM_UX;7F}3Z<-saWM+eGSyLu5 z+fF?JtBY~>Ww1i&H7$^k=@&OTa_TJ%QCmtk`LfB>W3M=?Hql&J-`ZHmJZzWt?IdzU z&6dS#U3u#{4J>IdbWfubtrD<`!x1XkXcVw z-=CKs&b>FpE2Qd{{{U~ewlZDaTNoPJM=YZq$nAriW7joNgH!$9{(C<|NJ27guZedn zMWo4Ra+c;;Wrk@QWtLSWZy^2U1Yq(qGhAa^%W2|RY;3M>w3z(Xn)=4&T3DHSmV!=z zpQz(J4wbXvo4dPh8T5;l^L&C3UavAq7+iEe#p}<#bg=3I<4;>N51F)*8OGNPKZ$wB z$j*QLblo`Aw!1x!h$zlB*v!3KYlCc-v;P30MV8;NFjhYOY0u(G{>p7Gp*FWM?ZWKJ z$fu)$#~nEBnr)}{U8VHXCfK1^yvg^RfhSM8J9Gec{A#2co}aF3S5P#PSWRyan5jMk zAjWg^b?6Q&(v=A)xk5L+wd`~_a$UoASCQ9Tl4Wb??R5)Hzh<`Ck(0=G&rm=kJ+btw zx}Ljtb8!)w4W;drB*_}ScJApa3}CMu{X0~)aK)@P(;C}qYK4?bkR@I=x_vq0{iB-5 zn%OPqxN|Ivt%pfjC693fKXqIFdE-2GIrgto58Yhbqp@8@Uvrm>QNFmlh9LX3lp)&S zatg4>41b6aat{aBy>!}UuJ+gRL}GX@!C6{B32of)M;siS5uTrvI)1v*_^w&+Ber`B z+@!Lq{K~_C0UZE1>B!=?wYxZPq_pzxm-|&?^DS;;a8;9z4`K-FJMcwy)_3JjHo99F zQ?#3DmvlWs{vA%_$}HZ>^Cf0rNkT9bmGnNC;<3zs+UlAtaa)L?+*(y0Un<$!IqTCu zjZ;q)2<%o1hK|@7JhnLwLuUjg2PEgH=~}VMmodY(#v4zwfSZ(@bI`FpTPN%MtCFIe zb!x@)r>fk9q#9PC1eW2*E3jLtj324??0xF}?d`m2B%6aUClRyfVaM@%^H;59((SE8 z?K!x*$puIJvr*LG)+P3iHI%w*SrWz8GS;gkMUBbty99fE1}iAuZ&Eoqwd!8bdj?lkz0D^tu^hf<=hM8>|P^or9k5Z4nP3o zr%Fq0GF#i<{ta*=#ejtBoX|r2srETsYa;_p9 zT#k9iQV(3$5#X4b?^AdsTd8D{K&=uCmkdVi`{SX=uAAbFKMl0KVehp4Qfq6sZT|pb z(p!F8p(A$@@;M)L@^!+V%&7Kx3m8n|RJ!;EFwb1+x1Uk^PeQct|0!tt%=VuS|1^{Jx;MWbU zYV&EDo7vB$=?^FXD2l{75qZ^A8>T<;9u%y)vt(BY0 z_W%wnx}7M}+BP{VRCPWkWY2vbLa_*|)8^|{FFZgN7K$YR4u@@9k_e3cSVb5Z-Nj8k zrM$41gt4jbx3BZ7lkR5|CL4+6v}sj*v^*AWpXZt_w9Amr{$Y(yFu?L^(v`TCBMY(! z`A`OOed|g&Hyjl>9CW~}jgm9dPgVnbvJ>h}IB5__$1dOwq&HgA@>Q~S;CkkeqA3gp zew9TPV6%!80yV(w4Ne=&VhVaC;~i4u@l2H5;53RNii`L zW+9aE+aFpb3=T_i(*#o)6#UpE{xrEuyAs`*q+p=+=xC>|(sPavZb$k2D5)s*>rFpX zL~EwIVCfMN2g3O%8HkAElaNPWQ%uvmC3C6GVJ4#KaPbR^N86LV%PV83BpO0QyviM4r-FiH&^trc0#=8zwdzNj!`OWo~|K zSK}Ot`yZpMOXTKLNxs|v09PcnyK4(wJ)>rtEh2BSh^{0ge9`>59X8_~Gx}C)>(?PJ zW1iw@ZYDsnTeKl!lWc<{ECUQ=o_c^ybvHm+TF-ZJ<;MyL?t}$_JCLdtz!}Nl;GgGQ z_Nn6i3rdFW*8b`DPb7e%!@fxg3`Pj;&O7jXRY@hYv4uLk+HyAg+Wvp3!RxE67t&(T znJu1j@mwT!!^&JSF2^GPj0|Ur^A8Jr4ZG5>(tTy@lF=o5pCUFTh%3Tp zkCbJP2dEX>c+SGlShUcAGZzv(b3mjG(G=i%a@gv6ccO}tQeDMfG^*C7>Ae;9^g4L# zEv={1ZfyqWq~Bz>20&wQ0d1_no||~buf1qoYZlYqAa{Y)m<@{_6_K;aBw*(!j`n|CI-TnQdOm2cn0a9HE8<#oyjAyl7 zT1sB@bUp(+$)|Nvk4^m5%XgMm@LJm5ye}Lwg^WiLIBaK*JrDEurMJ^wDFY&~gobd0 z=XM*ud-Ixt@!`G%DKXn4xKudoc<2vMO=v(4mv0uL{{ZP0esG3WE?9iy3P|cX{RML> zbmdXIY3O_!qe@k!XnOwuU5O)t*5!PgsbPtp62z_v$Oi!R^dFsFyC&}1#qA@P?S~Rf zkwiSQFhL{p9Exq~tTRHZ6}7x_BAlQscAj?UkC=MnwP(Jjx(%EUJ^S0d21w&k_ez3! z9^_++*PTIYvD?iGcT#G@{{XY^WYwWE?+qoP5k$?uaT)o5=bxLW9V+&{WpZ?xHz1Xv zfXt9DSr~Lv@5X7C`qibyrG@MhvD`{Dg-F8@(0}#oT3b7pbNlN^Bb8NE-OD)62+Cs| z{cCtQ$`6;R(@n-uY9nN(V87+Nek!a5?0U%AMk?Ra}UYNExAx^NA@zY_^ILL@sEUUBh&Q> zEcFZ3e@!nd^jEk%Xap4QgZ$s|SwX&A9ljO20sYJ?ss1L6ISoX5+) zAVfnS^+g+oB=OR2n1%4x4c#A`8>+4VK`&lF~hb&kI9Ar08Is6S(KW9sloR+C+{{Rki(rOcoYDU)B zz2mP0+cv5-`zv?03n~88v4rkN9AaqtbI8d4qm%5?MRv%y3q8O5vv|QSQynqtGw)mS zeVtqTHrhRx5;-&7E0Y@%N!uQI=sI-z)on)6^yGVsFh0e%Y^>iiz;nqM?dm9smAP-H zW2w_z*NIxrSZ%GHCjIS#|Io{ zv{c*L>LT*q=k1zsk7LMy;BnV(eN9l+?i*W|0ah3yIE@$(a%^fc7+~l<{0yUPUe|M!M&{)XI^2;j% zmr@h+I*zJABoWkOnx`Fv;o!24E#@Z5J~EJ{A&K4rnK7@2-(q2N)iJ|eb3`nQxPgqw9Z+=Dtz(Wi%QX~{?e~1qg=%q zEa65G4s(N#{<)~{JV&PuGVn~=g{9K6#~rLO;gFnRhw5@_hP$C$*oW0Dbx9(>S&)e? zBHI`WIf;-Q?CLTz`c%Ff)8+9+*V}F(i%!%eh<~Famqq6!l1C#wvC^=Mgrn_d?u(6< z#@~ik%w0g*nU&x(;wedwmc+@0FX`&d>p*#Wy`4!A~zVho-zm{9FeBu>a5%+_CcNpUyz3X?w(n)J+b$uJW*Vef6 ztz-i-MthR*+8W=$>1v89GIp+pJSd z8ps2LkO?v6gV!h5{{XM}*Mmp9eM<97wYl?j*&KjIS%@Q)2kXK5dQi}5P)#THd$pX` zQu+50mOMG&jC4NSS6AWfcSP{rmBf>_H5hP$+~7AqbT4C{T6E&+rm1SbAopRSIe!sp zcK#o0ODU}uHD*#Ek-kFff~>8ahU?R)&!H90U+5Z{zSHk);)7BXPn)4V!385Eo)4mv z(00vV@piL$tcKLC?(Hq-keKZ4u1PBA_@f(6LEHRYk76s9_;KM${u|nh=*|AEqU!e^ zaMN$3UpCDMCO|nQ(;;~6=xfqfrB9oiU(Bu7G3x#f@O*RKT-;40(diEARtL@{al!J* z;Q^Zy`$)()Gc)=3ZAf?9)3Y>rl&j&rdg?5@(?C<@a zCO0=CLP#uSof8AofZo2f>za3mto$!+W2WhrqSneJ*s4x*z|QWO=Q;jV$vA)pk^nr!yn~dh7T7~NybX&Jz6WDL(Y@HTD+Dr+|OflmhmG<@|Z|f zQOQ2QdevLaCHy}$34E;@%%$RI`>qB#2k{m4KBeMaDo+MY9;2#RTYaX$#v+pdLHL1>5AyWV=C8gnl`hsok~!G(Ut@& zDatxH9EDzSNGucsvH+d97$@+o3lFqgghF3>@Ce}7OJ#Q~j~WrYoN{sc*Q>eCnq=@< zBrr3C`G;)ON}Jn~p^x{uHD>1IhVtXU9nLT*k=lWh&y4>7cyUg~f#sA3kQb*8KD><7 zQZDBKa53D9xbVb^2>FJ3um1q9p_wB&Adp2n0aiqH8Qs&+^`UnTNj*8^{3=$5fs@zP zlgnjp03#jFDOd*V^HhD|&nKpT9Mo)lqw=BSf!I~3!6%TT@TXiR06RtpRy|EIlu)xV z0dbFP{{T8F;e&QhLHbcs%2D(s=Z%)(cua-Wp;pi;O)TrSK{t>dv1P<3_m0rjI5XS{zlc- zfi<~%can1V$jDGIJL6%67#xllx7Mg!E{|^pnXSzvdTgv#OL-j&w7ZuKNGBWv>^L3j zJvJ25WwgDxg63QMdvCNEBm)Z?wiqbujFX@KwQAew$!FyY+lKokt895C%PI`<@@JAx zF~_|Uhcdl~3A%5VQ-5~<0M>?9nRy4=;(Kk-?^!0g-c?M=8{_w9oFANUeMhZyaok(q z+G-0Hp5iHNTqE5`NrqP4u!2v&UuwcsT~_($j^t{V)=rkiW_ zbjC8f*f1#HH(Y?jKH{=qg7V;Nw$c`w31Uwrb{Qp#Fb~}7RB|~LYC9{bFCcqq?bO;e z$|Sd09$-@F4BIT}IYhxvXAqG|H=Rmk@+sF^Fa0as~kF=zZ$K z`4-lzJW@(lHdlEW%PXSecTbd%I`P}JW!~D{>sM$kwP*%y-^skPO^O{kG4uC{89$vx z;d|%tKZdO#iCQ^cA2C+uK&pc|CojPnJ&DIk0p3c!xFkg(l#3;@?3gwGILy?h_uNyX|LtAzRVFw8*pbWk}^twK+bc?t=%4Y zwYzh1_I8R(bXjC$ASojpf-%oQ$sXKPc1a|YKib&EY_Vh*_`wap$mbt39(^m8bmWtZ z(KF+*m`TuY4_YZ-@FUVRNo_PRw~um>sY%)QfUHgiNL**}$>zH|NJgh-l0?u(VU1*2 zn2_uggPsQ*8t3k2Tj(y4r*yP7-dKMxIb|6HdVq6V8fE>mcy2!~IB!DyqURj)2**6& zZs}cgZGKhT@;Af6F=`3vZ^(|vM2k|qfWtYS<_m{rC>h)-0G1ud*dDEC~vaIlK* z+VCu+AHaXvJu|`M*A(9hTzOYl_b^<2o^X-7N+aADV2ogTaZj3Yc|4D7Mc%1(BX5;J z7#qG)2;-0k=Us7nB)_D0Lzk5?_j=3*)>OBX{VqAcEMpr&?e#r+{*|%dZ6iq5G|Sko z;uE&gnUM4yI(|Q;aaVUEN)I&Bghf78-Mq{Dz*vkG$6sH1zo8r5Ii4tGSB73+Y5Twf z#(nep8qPIm?c8L&){N=Yo38nl;%I4lqj+Oce+|j2$tH$h%eA`X`DC7A&p#;aPfncx zs#e|`xwqGK81#ukSQ32OcTgjmUN-F{aD7chsocY23aAheP+|?)2Qp(PZFkYL@F6b$JE@j9_Qhv2{I6 z#T-cwn-!DD#tp}CjBqiY-TsvMpD5J1V{7V5HO;1WvoMRw*dwNxg z-V2BGp?5PD1!OqdSHC?E^c8Z((&9}euIv!73|DlBS))JRUvFG={VIyw4K~VTwtePN zvRijdlfu6D)^5}gHnmCFD;|Jc?XveLPJD&IStiu!3;aqEeh`2 zM)50Xnw`{;87+3fa}o0v;mYI7W+R6OCms6M)Vgw8=x|=YnKaVn8RX?k@CG~Jde(lq zbE4nq7d9%ats8%MFP+9Sk;unvSGR_!qLQB7JdWB*>)tiIDJu9@>T8SX-tyQXS>+^QXWBmxZ|I%6@JQHM_65=8+$t&Xx;@_n6onyK5jt4+Ii3StI?GUziBOta z7@&Ff$lQalHUSvw0*w0B?Z1JqVz`~tQMkVIRQ;McHpZDz!vF^y_U=7u@f7IPgl#)N zyybC}+G*J6H2pnwdyAXBN=aY=F%7mb7@mZZKOs`-7Lr3aZ?vo2BdLzoHXF9*hF0e} zJdx@3to=sz=JM*@F0Psz&{Z}`z;HMq4u{-h(z<9oKM#cT%el21$tAs(Z#pJ^qbKDF z=sl0FD~dksHGhG;UW&zUhgV`IarFRvn7h(efHY?($z@8KssvH8^> zi{{JiYk8!?t*jXQo1+sbh1at%?pLVq+MlF&t$(s)wu;m2mtl-^9tyhu0M9|}M`O~t zo4wbr0;v(_ktk^Ip2OF`ReAonfbJDgne+@K9nwq3iMvb{`->kUgoxO%S z52vkgR~`?w@OG=M_}f9yC$ooG%3fK+IX3J_&z$gq_e*fadIO%7=+csuq~h)UY)oRB z=9#&u*=ezB>wR%#k7X*fw$`!bEw63?#^f!Hl5NP~jo==*uO|4v@p=yj%PppXe>B>m zfI|$9Dy!6R zwaJW~I<-BOH@Dmrrzoq-Mr&MJIzN_K8s-pX5SIappHbXT~I_=8x~ZM7$!1cD)J6Gs}LCAuD;d)l2ntF*Gl!CV4&6O8ek4&5+E zYV)}iCgaU>vYY02HgvfmyN=}!@L6yPO`~oyM^B}AM~L(db5ij}r7ST|sA(J6E4|Q& zBMwR+Ey%{&_OAG*rs ztxp+Rx_?)N?a;zBmHpxi?}9h++(fnyadQq7$kITlGu(aerD1rF!xx?vwYa~GB$hE^ zDba={iNkGXDEUh(0d6J2=APiy@q`R?FS13j>h3NT2)JpNTeEjrUvTlh61s~p~J z7d~>5a=?cKFFC;@qpd}@{{ZA^I#E&B`O`|fiuQNf`^ua-2dA;EIpc;ECm2)y z)&*7gt>E$S^Te`UXnQR*%Zp@^MT!6vI^}YCC#K#_dCj+s^&9t&62EA0PtDMfewFli zTxA?(KWRzdzmq)KPBD{;cd_X!GOr=9DeA?PmB8FOkyw^iH_ZTd#?k=*9+h?kcwGxR zsPrd_>$zyUw$CGHAP%?(wN8+PZc5+`@+uXcMPR{{k4*7STd5j8+2}w#QE(+?QIfkr z_4TGO1wiUgQ;gF2fPe~P@TYkw04$j~;EZON6{8$7vt)ygMHMQ;`^Ug5&tF<8mU?H0 zwOuXr+k}c+jY=1eTXvE}!)2Et&OpX6dH1ZFOGbtpHnfgOVNxBMIJT(cEP9*{4r)Cn z^X&K65^8IEVJ4!EVhJYXhynKzPE>l9?Sont7d|6@4lTd-;>{Dp`G~_BGHx6l$e`mH z2S3)o3bU2FqxHISjvJj>d(Y%;YPzkJ&7@k5yjK#%1inBy-MSWd%Oi9LEEsdZ&swLd z>yRXu7rs!l^4g_EYn!$O7kqkr%^WH~!C*o8uyNlU zbgkjyDD0%SxW2Q8S1oAK!j}+$gUfCUHa_qKjPBl8jOO9rsBMs^*uV)3#m10 zJxQZ+EHR=4WL03K6&M4C&U4zKv6gF@WroJV{?T^=6kD&HTc0qiY!Ar5Wy#O2Tx+Y@ zgyL)4K&IQsI&3OOB%j_Bj=TYaan$v#A1qb(Jj%6QILcR6TKSpQ9uc;()a|crbxleu zm7S!LG4d*I=ztS~0LNcipHtGUTJktA0#By32M|kDg{);9=Z6GQ*#t9w$GgUPGJ#3j)8REB*cPw#%fs%I~ zc>oiW)2(#Yx@MiDTD{a?W439Oy2o$x?<&Cd>Gwg&>zd5Dvbfdttitd;oylw_c8fK(p!lwyyd!h1Wdb#E}&qJI}@K; z+S5hd?S-s&Gb>x4HC!T)5HjbJ&U3)eCYf<-bE;fh+g%WrD!b&0M=HwucLGS@ilgEG z0JTMYe$nN$G0v$QM1@t*@<|@No_>|*;vpYt7P_AoomZtg^x&-ImbUHDcKeQ=%S?`R zh+F-q&UKNP07)u3HzVBirSLia$+5V%VHTw_$WhUVK&0?`pKxn-(^j>UQ~_>{zmSX} zwSfb=sm|}1kC=4zu5NoKxz_b5E!=IIKtlO@NcnMs1_0yIsY8}gnn#|}rzp+~Z4HU_ z8MIAG;h{(jhSJ#*9iD%XPb2=qNx zRGQ5$({GabV0MFpk)LntSvOa(X!_mUnru?7t-&PQjN(;pM*#Lf3BMgd;<{DjuFi$G zH2&_!#jcfct7-_Pql?ZejP64+5z`|b4n{rdKN6*#zNr#f&R$P9ZN!Q`O~-;k{&k_I zyxu5=$|w!Sn(%I0tENzjv5-DrbDsPVeJcprTiY(96I}*S@AgRvA!S4-C!c)&wQ-wr zQMQKZ?PY&6S5wpG(Bf!hcw)78P^5HjzcU}bgre88kTK*x+T4nRMpYgUx$ zOUW8a5`ywVYViv_DrqcVWtGHuxr8=+r^Zg-Z&CEFG7C7ZH9LD_DZ6Ldis*-_?~hKr zoOI4BTTZsU)P=xgbc#Y=QWrj0&mB6RJv-K;Y4BOv{{U&&!cC&DmvWKu#@r?~D& zuDB&hS^LP*^Cj-;W9rscH`Z^X-@?|@x!HwMW0-Z^r1Wq*iont?E<7i6G<{Y!o!(V2 zUq#D0@$$?5*aUOXNZ8M&c&>`}O-fj8 zE+B!L$|nfnPy#SGIqmhVof&Oo*L0QDZd%OTm4W1LGdkzwC#TKN*1axU_`E%)%(rd| zMhbZ@M%mXLK6+x9ziV*N2^_1HCn3g99lG;ZZk9_6VW~}OB$?Ybc2a%S&qs0B1G3gyTUoWl zk!uo3CC%t9CEA^`M#nfHj+i5X_+qw<!GpXO*clk)J43kyHY|6WAEUc zVD=g7Q}~(S&~?}Q9m^SycyF^qSvwsQpW9WKP*-tK| zeKK6eu*)70C?765oPJ#Wd)19X7;J5Rz`M_s2IPd{%U}Y)cL|Zla%zT(TTs&O=9z>H zkUWghV7f3nV~~AUc6$&7cKa(snQTH&mh9~`{{Rl1SWHnz*`r^ak;JTepdWo3d;lA$~^*nRxelhspABOxPXQo;;y#6AUS`V>7 z&RidsK%f;$j@8u4!od^^1HH;8U7FQqbT7ny6z=+FFmgViHEjs1x^#~^cE_&hhW zy-M43{{S$QxfdchKMwpZlg0M~PDT4|(lM7*)=ayS-1YL;pP9R79qZ^{3H&+m)|;bf z%LbG7Ynv1x?_k15&o8)r?c5%EV~Xr-{vFzQ4@R}MvbRBGq!JLF+rQg6=RI@lSBy({ z2uOkjC+0!a8pjilonLki(J+;hyF*ia(}YG`pyiZsqx|;&0QFXV?}o1~^>v=!L-rlw zHuEG%fs-4CcQDB~JPvDm!%u5(-KbwFxH)cm_V=iD80{_{(JrE>K`(Ztwp9>#6kr01LL8BzIqGjan8~D{*j1ao3-h zfyv^wl7-%;)_1ZrCNfw|5+=8b&&g)qs&{V$e5XB#C-ScW{h%dlU2jRYwx0gZ2aWz~ zSqj8Q8R&S&2dD9$O81RxUY;8}{{XekZDkBnq<(A>nN|0J#{?128TPLo_|2ra zHl=RSrNjU%@GB63Ix*z&j43BQJ!_`}9$Jxwb_+6Ebv0y+lo z?_XY{$*goZd7A23w9~v>@W>{+;ftvuMqwwDyl-LXQ=^Z554C%@!_9Y8@fL?|b*@^+ z9-(qfvaDGI78p{%_r^0^c7x+fMAKq|_AxZEkPya$0dN5RM!KyBQ?&9Wy0W>Htdiu% za^vMW&&$w(&#iuYj?FPqQ;uVYwVsoTx_yoa=2aw9T$gtExWv7SioE6~0*>Kd<(wHQ>oJ(aV(iWM+b$N_-%;1T%O z52k1rx?nFHftFAel|aeC&r@GZlHoqBhv#XjP2H#Xeg?LTrs_wp`5ujHsM}k}A~SDR z$Id!_f6}U6N=?J448yU`YbqoXLA0Z&UaA|9@vE>Yg_V$w3MHdy%ThxPJnC^bh zKA&v_ii{PSL||hi<$&z#jAuC~6@}s5dr*o?eLW{K>1{lK#N0{&JBOIvK+5#@74xmn z?IGhBWRu9XwzPRzId3c|Wf?k44{zi>w;Uj<#V2(*Dv7j7PrJpZB_0sZeqQ(og$H- zExJh6Jhmmc$RPpA?B2D~C9a)gX&gy$cWW34c9TRyi5YljIV6$uW7|H}3scwjt}4n} zd3N<5ed2ur&rrR$x4hAoRgoZjSd@9?Fb3w_0qc>D+r8_0FA_Dchha-uq(5hQZJ~w~ zY|4nu?Vf!P1J=2%Ps7$%+P&e1+Sw(!`JO~T&iL#UFJglyJxJn%s?Xs$n#T4Jk+ZCV z<}}GM$Oae;a7hfjah1=0A2V0x(HymCLZl+2th;^(QK@)^ZZ!*Mv9pz}UP-M?S0J&F zn3!_i-hojgwVaK&vXc_)#)wviZPXvhQ*Mo2ZvSa_=9TYWtsw^MO4 zT3ojG1I$-+Sx($%jsCo3R_(^7Wr#y8aiiOb;Q#@ab#yuU?a%A)T(hevM$MlAnAgQ+ zv|&Q5RrS}p{SCb~2&^qOrP5l@8W9(l7n&4?E0rW355KKLZc@(Vq^M9%u8kfDFVm-| zIr`Eo-Nil4w05p7mQCUJV6kOa$iO|z52&k(w!>M7nH|c^9!Oa>f(ZGL=by(tt2$}V zRF9jd`^R{fAkk#Dd2VDXki27N<|Pm?#~Bz?^z3RYO-|m*TXpj;7tBPHb-D}y4nFr^ z(ya+Y-pg$uU4abh(jDOxbr~G@99F)Cp|!-<7EwtYD-KbKP0T}l*!p0D_}649%3ka& zcE+5NbH|kacm%snWij`vm6k>EBCO<*SFQ&whO^X1~afS%yth#TtI4Y*I&()m64Oe5U{aJ-VS)hqkq>-nQQDjLDaC@KAk7~Q4U6qE=-a+N6;zySx zl7W6~{W(8{SFvQUw{(xqxVClxM(P1VGoDGuZuPlfG?{c8y*_(CHXEhb+a)MK!3XGh zJu9Xh&GV*Q73}V1cz49}X#W84lqR1zWw&@vCQ?RaKoE@bGD!UEQtMJ(K0Pi-XSSZs z82qb*Z;-O>$tOL2ZaDt&HJv_<=IU1xESa{K%V$X$2_*poEx{u=#(gQ?Fw$Z1H-;`W z$Sq8A%Br4c7~7tC2fsDZLYtHQ<7-}>u5C}7mGc~Jy``R)pv|XRS?1nprxA_AF)WfZ zfC%FXSmV?hyP;p{w-$*$$+VcGiJ|*i7G<0OLXSb5kMqrGcpt&iS-NT0GC^x@sLGNB zAxSyGAp8FS`psbY^hx1A4=$Z(i8Z=Su(V`tlW9ElC$Kz$Ur$DrD)W{RHu;^-sMCz^ z7qdG37sPjWeho0&+x?uP`7m5VlB zb-=-IQR$v*DP_);c|mBqZ*IelD^Ba-=#6{p0c>N6`tC%xY+IRSJCCr(PI$(B!L3+y zQKo7hMxNLYZWesq=Y=z#X3~XG$L!`)59Hw!@ag2eF!mIo= z@lK6&0!bY;7@OR43zl16hQrd2`cSKBA2>5A&&dwW|aW-71&mS*Tjt$8l7<9M{+ z5w4eOB+m=DxQZDf-jIL?E&bIz{XMIn4@PaZ1$2i`-O&^2-XgcqF5%L38}GDO%Qp0d zlmJKvEJr{%&N^3XJ?yJ~FD=#y3#P~?L6v3d0rVsP0M%Y~ZK!E}D%I{a9YaMCN|Ur> z${!<;I4jQ?IrgsV6ur)vpih`lgWfR=VJuP`HSjOKXd{KXhar z1D{chfPVKq#cw~GscIKD_l&OQL`=lljbkTk4}X=9; zv3sIq@||T#N`>IjvJBzJpC&&;`U4D8h_cI z;(3XY;BYV)a!5Smr|XVt=)zH*+Q0l0cgrZ*klkC{>o;OsV5ToNRYoKo#zrmQpuxfR z80l87^xJI*QM%LG>MM)e`wjaclodgMnJL@mVS~`~R3dwg67S5ikAX#;DdYBiw(hlOk!*H@0I5&!8BuQ(Fs#(~`p8*)6QoAyF_J1Jre`Jv!;` zH7litG*?7OLy$5`yq!GToU-`=zrDxa?m6_St6p`IjjUxR)UR^A zpNS@0REF$G&_Km^axw_P_9vh6YSg+U`n}DxdTrEzM#6aI_U^5mXZlrZTf``cusAL0>GbKkHi|gJa$c`CFI(Dq*t&NnP+5NxmD;%9D)f4>T9w*kbe5V zP3_q1mEor`=lVvkWu|yjSCc~U^_8X6mws)=n=G+Ps;mxW+6me>e7!TzwMn4d#jki? z{{TVMtSzlj+m=gs_ire23ocijVR`&JS5@Fo6X|z;G`ZC;E$!^CX4Aw@k!}jgvSeX# zj;+*Ztzz5jGtJ{WyIZN6Zz?xiN#}=T@<2&DbAgZv9Ci0K)hSs@(Y37ZWqx&b?tI(g zuMNi=L#J3k!f2h0^OeCkW4At;>IFk z!+B>KmW}wqV1Dq%dU|)P?OWlNg>=@lcxP3EP=e_0QjS{+2;3PDD%d=B>(6TTY2%|f zsZBJF7e%>ytnoPX`-?5DZ7Z?<;~(oS!0$_ z657l$Htcrw9C{DNyz2E9HzRiTKAhKWDv+%Xc zEqL`bc!u5|$+mI$H+(4G{0y+LgCBei}+ zqsohdaYxl(4t_9?9q3ZpHQMQ3GSk3xyM+WI`pjc^bR0Rx?5OpxNASL-bK=VjXMjwR zTxr+V*6DW;-5wYe^((k;{{R~C4}|_1ZwteBI@vY%if>kEQr^yOlIiQP6%E)oT%7O- z73`WN)R$fe(WHXyt|Doz7?C4+g(rw9M{cJMd*}Qzs}*aXQ@BAj=_+!p5y? ztwk%Pwcl;-b=Ef5FeTJUB=N^Mju=u24(>8Q!RSxxilr()o}f!I+#i*X-z>?{pTKk4 zt9`QaJB2pxC4$>kDIBt{ODG4pd6*@o3nI*jrUBcQ3SJVmK$C&+8Zbd!yUpk(KqV~{J= zRpU<4<<*|ww@}hcRz)_YKC0ej#ly^FC6vh7+DCqSW1Q8i%O=uV*6nZYq=sLbR!I|h z8%8icI-_70O4gvUg;8VVk1Q!i&tcede@c8XH2R$PR}*7TLb0SMyoVvTcIt&oqX+hk22&ulb#VOh%r@W*4l+NbU$nQ2QIV3?Hn_T&28!NU z9}x`la&S5vRVeMe>uo;TX{NSSo?|4DE(<9KX~_1#{0(Yoo@a+0ZeufCZHzA2WKwgC z`ks0Uh)Vwe5m0hY(pnP5r$uMt32iPT9)H>MCAd4bzfp|jbUmtDjjv-QQV1-7xK(YV zCvXd#jxoU;RSj?LcRI8hi(RCW&l`E$8BvsgG0659=hRhO%hMEh0w@K;JdsM<-#fWb zz+=!Zee+vUk3Hkxxve(aak90^TgcKpS*2aw-A>kv9^%kLxn(331gIGUCqC7Z{wvbu z@vXj>dpK*HG_eqd6vsH=w3^G?WF{jk~in^Bo?OTc9=_Kj1ne^cYNEn z^&aE%Cb8FA)bBh)HkYVrc5|V9(J{*wjPeP{U=Gt#=>c!AH3hNL7Ug{4uW1uV6;)0M z>+=s@qn?!pvhrzOFq~W|OQzi3P5qk_yni&)qyGRF!TIru=5$N_Ts`Aj&y;yp z?ixnU@q>@bx;sH(VP*Z7ajLU5==(z~5$|u9fZLC3U~+wHo~n|Ucc=UkU6ZxWY5ZYt zp=xtn9WHpTZU7G~QZOtRr|}PdpN(Dct-h7T!L3{9YH+TPonq_ z!+MsXsmH6_W$kAXqZxvEicwEa{c47tXW`!n_`-PftCnvuFvEE`iy)9O?g!~zZmu8L zzDT}wx?aL*btl&}nKUsCi|R78NZZ1OSrBvF01u~ASTfq(9a?LPRkD(6oryE;@|>XR zI-W?+d}pXN(s;rfUlGS`6|SIdS+^-R@RC$;L0&&Po5Klf;N3dv38cNfyOZXIX(Azj z1JL9An(^UY(Q)u_V%*v+ToP4pY~5&RJwnP?ko&aHKezb#~#hH zBMvfpag5aWJ}0w#cJr*{x!m1hMISeOl70UGTHzqn?n69}bs&uxu@Q}>PfZ;< zTpIY6^H}kvou;!mg5oI}7^Q(TGDE-6~RjF*x$PG58AZ2V6n2?!5PevsWJrw{D5}rS(Zi3owfb6FC4s&F#*eeum_;- zeRIxhPfOC{xzZq>;wdB$+%inip-^MmPDo#Tes!UsTM0MI=QI4EVCUsdZ~*lBS2~nq z7LqTSbwwyF4ySA9N(*_MlH(hR_4XYrpIM~RFJrf8O2mg_$e@fjY>%aO)7_MBF4@#d z#73t)C;9DAURuFnr}-S*Ni!UwIeA~!vQFEWJ3fby>a*SGo-nwDhHdY1@Vl-?;qzd6 z91=g^9`y#P;yaH5YFb6^qOwP8c`A#0xs-WI_`pUZ?v@0APkQcrY2g;tv}vq$6q3g1 zD0rp=B^&r%PjT4(HRYOLh^{o9BUbRYh^^w5*UB)xwaWR6lhM;71y4|YeGWx?_*WY6 zc1g)}>iq?1Eo6Frt>P$kaTM`Ft1p&NxX;WEGN&KpSCL=-%eH#^PGNBg%p>ClBF4*1V*wY?3Nv#t1s>PS3Y zc_c>IdD7Zjq+k`=s~Erpowz?vX;O7?j!HA-USf)U4wCCd(6pZoJeO14SX#gZs{NK} zV~KLxQ-xpw`@Q;CpA8~Qj}}@bzngPus_620BI4nsjNGA88wBG7F&~F|tuuJ?|Pw;&PI@q1dDY^5Y-@ z&+nq|%`4|_HRkUSiWpf{DmWL;$Tfy;D;YOpWMQr~7Y_zyCs<_J*jQqnMq!WSeD~QlMM!pW! zE`U#`xk;6gc3y4KysqtwxHdQ;slJ3V_!7e z#TJ_siDz>p(PJ;hPuDf{SS9VDQZiPHdv-9J=R|0qK}&( zZf5m8zJuPetYVzGX#qU&z+*o3HH*wwd}KNf{^qU!0BFZ;wl_@w0C*2d^`TBQ;mZYN zj(IlS*wv90z$9lJ?KGz6GVn4FPHJf$&P=pxjQ%EtLpuP9KwiuaYS7Tw2#}U$`Iq0V zDKZAkZg4oxI#tQ7yvPY71bZI7l~BS@1&j-;_5bRbk1C_vmc z_4KQ8O0LHvo`eyKECZvAfCm}t&w7(Pi5{J?OY&fh?)2?UWMwA~dUM~N)D}w8`DuZW zPdpsrifm9xIVXTR06EPSNGyDNscE+w?z0Sf8a%CWFOrccCm%2cx*Vt(Is9wrZ8yT2 zXT#4CTj`o*$}Po_gle}jNZ`A&sYD!MxL{9AWPR?`z8!olyYL@|b$h$Gmre01S?qzY z!4U;!!tBRalLP_D80WaI>p{>HT)wc>@7~HSUs2Q-RJ=$h9%LIMzQ}q?vcw0fg(R?N}h_vb2 z;gS;^k~YPVEW4tUAmwnN6V|Kv3&B?UCGGB~aNlT`&6;@|&H)@DW#iL=$1Re2j0(E< z(&)Y+{>)wPE3BsBnOH>hyNm5ua03PHXz*nDEdffWFs|?gyd%a6~zKVQ7W^L#F z%QSak41nP`I+2oF1UB3N21l6cn{*t>#RVun!&bSeuJ$ILUq0~sG$ zv8s5+JNpd^3x5g!0AsbRGN`t=Q2um;kC-_*I3t6}<+D&cy0obc`rJ%Bs8VxpX5o@C z)SbtS^%)+O%H?P7GvAFLX%0$})7R9YJ=^M6@%^(&l5aVcq@BV>BP)WW09cR;6NA#d z62{usOVnnDWV#bfV`WJSfCmJ0?UFh4t}DaZ6w`gMwbj!HwA+c?OC&*&m@rJ>4!q;r zy>8uEMXk#P&Cr5rS(V%EGkGlP6AA)@+$lNsHN{@DNhGe{bK*Fk8|+kYbmOj%$s>PN z)8KnM{{XU!i+fpaM6weiz8}my;2t?V@M}X-ipNHrLf>bKX(msa85o`Ww`2@sp!Mlo z^`*6@qoQ3wp`>EnK3O4xa@$VjZKpl{Y>!&%H4Rc-Nfu2`1i93Y%LBxr1bkyWbc(O3_V9i$6nQT`Z;dz zQds`aZkx8MtPIRlb~!l7$E9XZX0k2Z;_SbfEEg*g83P0<1oq$x+H{T?=ERM(N^%n* z1L@N}F;i_)X2~aXQoGZmxx2M_P!MM^vcjHUB@S1wTxZ(0?d2MOh)u&Iv;lm$hsw;L z02xjX_mtLs)JhWA{K!1@bTR^R-Tq_kip+}Z?7k%uz!BvR@-$v*o!=@He)ztNePbTh57_3W5VlyO}-dRs1dSjkFtDn=gYrRVD&&_@4@-SCoT#UE{{Uuc4Sfy7Dt^s2e8(jbQO?`|I2g_`PnPCAds1a4 z+jW!(M8JkXHy&}o&7pO&VEC98fu650vmm#1eXq`|CsD{*z*SK$>H<UmpQTH0Oep~~DM z#;+WO@=4o|=qf)C_$uPf@3mQ$c9V#HXvk2b7+}Y?2TI!UUxux0d{WkSc7hv8U`@#r zZT|LsdXPUV?IrOgrN@B8bI!2bO>R_10VFr4O4hx8N>Yqp#J+kO%SFp0&#j)~T~^QR zT8w0@_-N-{xIhl=qz=3T&32lGmnFld@bkV%GBa{B>HZZB$A|Q-GRoHF1g2vmZjr+A zp18oR3A{sV0A1c@Gt@8TUPT&iE8a1u4omYKRgJOmz2)(qG`x(W4=Z;e@_GZuOmm*q z&rhZ#mlyL#<-}G~`==n}7AK5-YrkuKD*o=9xx=VN;0cu@vl_qjzf!d#dQ+d~4%fTj9)*jcVHB%FbtT_DC+nB!sAJ zw$(nPjN-fB26(wA@a2@E0gLFCNF`_DF_JKS#w(otqBKL|NOZ|8(Jvkgh@_Dd1mnv& zJ$*nF{{R6*wq6vqv%i&NC|wz32Zh~{?mqFWuk5N}Avmi_`kOSlQ##wJW7BQqNY^gk zc(+$${(leWz2NOS-bv-WzLBK4i9k~z!hzi8yy`3Ih5fvfvb1rLxX4M~JqNyPPg2$H z?;}fSM9|vq1OSH_JPeJ>FR+sjS|wCf&gI_-3$bL+0zz|-P@|mJb*(^duUOgLrk~;n zqb{+DIF>MeWOe>H$;Z(0Df)i1AH*#st+fkVSl-@I70sNmhG=C{2+#gHLGB1O+wI(; zX)CAqn>ohGOQGf3=fm$db9ZwZ%{=oo?(@YSWIM+2PSe)}R+ZnE4z;FV=-PZ1jBcTc z*3S+?@{FY56V*vL9V^iF3mbhF8Lw_)52wZp&u}7XHYfy>g;VLtt;??n*lF5Y>b52( z-ibLW7nVvm9Q%{SYdmA*T+90GL^*yWuKS$+o2;yM)6Fx%8$%;2oCYzsr>=P%Rjo4i zEkfO;Mj>Sw0hex0PeEL~*B2TW#q()*JGP0d*tGCl$jDJ-Pb?CHXds-ndFM5|CZQeu zpNNI5W+|*-m|;jeSx_)##{?B1kF9b_f^A#vThJ!tmEOqmRMDc*^=}l~-rKCUx3@-Q zcF9r>8Av|GYp$Qg&{^o|cVXpyx+_;8INTVjlB#`q0=noY@Z??w(e;b}01et}SMNM< zH1~GLglF0hnYRGsjt(=L=JYAyi%Zn*UrM#pv}t8$wMW`Ys^mF608lpL@#oXnl;cu2 zoL{=_zWo`=?D-wj)t-Ox6~4jnlET*T?bkKUKwnD=FAB^{zu>u1UOjKV&45YY&L{4k zKT6T~jqx7uS@G4x4~XrpViwA&$y|WWJ&xmpkM7oL{hDire=(meyUbt#V_x1Gn}jvp z>P1J*BVNYYqm2IblxID2O2S5zow-BM_cZ%ff=AdNapMH=YhKdZEEoeI1EIxs^f6@^ z3xirLe-S@X2Zo;bGOsWEzK4Lm<#b+H` z?1iIjqZQq|radWKE^V1ac;$wDdY^i1w~8(iNGu0Y+Ol6&M299*EQNoIoP8yCV(M6cs&H^SeNQ~q zzZYnl=ZqfO^G&+3oiyq8>N-mm4zYJEe~YW(hj21$Qav)?UhwkAs6{kUynH}p5z7kW z3RP5*jsf8R0QJ8ur%g*)8{%rzg`*S9yczpQ_=mz;_+J=7c`b>Rm1ne#eD!8vF(*yH zHcojw*Rl9l#X4V&wCHskpeDN9@R4rI8x+dmZd2H8V~{!=b+0h-UWa?)TgyKN+382b z5?n>Kbsr<{ZWvJbW0q5lw|~yMF93LM9}nEx*lG5~Zp5*!rEf9)&>8uIHVGrGJRNArjc_u1V;W$+LI^6W#6HohYuHJOlH*(s@uo$l&Zd(i)Hl7JPiOA!cW|^Yt z)9ElcJ~a_*AJ8%XY*7oMDF@~q7#Sg?^Gp3>ghQ6%6+ z5ag{x! zugco=SG|jO(XN2<+FHpRjc{`#B5micap}%M_pJAp+&#o|M{yz+`ct*9x5Xxumb-2t zoFFnu2xMLPLJ8}~Tzl2O5^6UZ^mns~K%VX~8%8n`J)cq`o_zDe z3`-PWWF0xl#(U(C%A%}fu9fxk^E0VWl1)=jUq3Rex>m0ik8rcV@I@7~w4b}gY*s-0 z58>lAw{C9c*6$W^D?nZ*SvUxwkfeL@_*A!c+H@j&IW4sY)F-xdGRrXlgOQwM^X=_a z?=>P|WLVi=D3kZzV9o|HkFOuCH5CaiW@{KIHO(!*s|?ld-b*KpPG*f}1|Y-k;m6=P z&pGC_H7za({7GjmqeCM@vDlfE=Wrto2OwmAm6@#F{j*J$<7NyvsGL0l3G3=W^+ zTe?&dTwKX4H&DkT!jc9^%LXB`22Vrt8tG|NX?h(lDzoM3zuaJJpW0CAHu6j)HkS81 z?35Jy+Z5wGjl_RCx2AY@DJ)^sn@fKJ(2xNQkaBpYd_>ZQi=ln8 z-g#u6IU`|-S(vFf#y+OA{3oMo);Ho^S^|*CJZh`S1z&;*_1*1WykP3#xuor<&*XO{ z?((wV!&nzW@j#YsWM4oxDUxl<7v((s$BvcjP2&v`HObVVY-jGa?s@dhaDF1w?4rHV zg@iWibN0Qj7B>b4HyB}_Mo8kdB-9~G8+%o=NUkB2w2lxex!unLCmnImrEo@%Bt6+( z`R-*(m$HSExs|H;lEYc?O5Iyrtnoz=RuRTdIXDN8eAQEU_xf5#6}{B)Che^pWT52p zoO*vc=X^J;wa<@&i*Xc3&9+s^!-em_?~z`i;n?2l&h-S5fY%aoM`8ibA6m~7Mx`l5 zRC?G>E=_YB#-*uTOJ{7N2US2M-q;)Y1RvB^E$@vG+eW6}ej90JYyplt;PUd@Om1mRcg+f=F(rOR4Uf1K{;t6Yh)UX zH0H&VjN;!=K6Fzc^P`Bu00lOJ4+s5$Ti0o)T|Ln)Ja$E+ zlX}PV2F3{e0phdawSv;t>0$&blEk;B)&Tys*$TB{?{l-BNvC~Iife5x^s71k*E?Q3 zh^^*G#Yo89272P5z0)lt)h!a=&Uj}p5uJW?8B>9tnaJr?*Thzhrdit?Z!zPD2-r*a z8z7QE&$VsqvR?U7%`A4vw)4i|EQP*qcIV~k&1kU`mE@Xc@T<+NT4MY^(e0$y?(J`F zqL8Fn!!HEqIUd+K{Bhc&@h69@=fAjzN`@h88wLSXl>~vG*ELH209(~`ol@H6B7oeq zG9+yf;0?*a1as7%!mHhC9wgEwNEPC>mi%v-m@JqWAQ8y)uSP0WY}S`HokeFRbJyB^ z&CSN21kzj0VF2EXvA2Q0WIu{;hF&EOAa` zDD9si20Hx5=ub7%=y6`&=;vK~WVMP_RV%t!cL9OMGs!s}YnKO@P^A{; zuYE1^H1^tD^6wO0&v~op8nv9iY1J(qC7MfVRBefz2SOK&V4e?b*H7Z>zwAjYyl1Ay z%L3vZO*WCf+%X%7^^B6h{{VEJ)!JWZ`gG9h7PfY1kzBwRD+mJthDY7wsTry|Ziw1Z zyU}$hmE)2!-bo>ph8ZKKFja{BE2?<9HB@TK0w9%;!u@<@E>&-oe`#na|NF*uO zYpEF@fi(`9wQX&5DSDgGayt(k4numsO8s>AQ+&#P#7|U+9 zIA}?3ztXuY!`Zt<>AEt6^l>Zee-Hlv;Ue)ai>jO3 zOI6b?qEd{{W?V`%fl`;~R^KwG_UwMv3BX8b!k4vH%_S39 z^_$+5WrIc4s5{uOh8XuqlY1ZvK{gx|4R*Ezv5Pn>$D-aF`sr9cxp292Znf}!kmZ56Ses_a$PI%fJ9(X+G z-l%+Qo5}cReWTdCNpxjEu_zAQ;DNX3JuBFR>B@0RH*M-1t;dygJ~{Ah&5X@)CGlBq zCT@Jg^D`6cU5i@TG-u0FBt1PVm$lMtH5pQCSl$WZC(RB0?DP89U#IC4$1*eJR3T#% zt_dB8K9%)rR(Y)q(`^O3yLN)-_=wGo zB-C$d92W9O@+?6CEJ?=Nth$`a0`DH5UTQsZ>89}3pzO($8v(ks2J|>BTVGlA832$n z0##Xg1XL30OC_Tt{LO#?CnpujBf_6nGa5jE!{lsU z3VCF083RAV(~Q<9hWs%eku=xV7i%_=aW%?X#Wm}1S8QzsN!q1I#!na+Cy}2-)Fz0? z>eDBh1g?Z-h{DEj*~=00KWt|`Yw<^3q+7Q`^vYRo7Ifn|EAubJ;=Ubtk6t#uAhFRj zxFeDho@A>g$C2B1c?TzeyyRz--nINC;mvM;5o)@n_N8qd-Sh$?gr$a3RM$&fxv6UwuV-x9rHnUsHZmlOsUR_#nR1{8{vnL?>S|TI zwY#1hCo$OCNpR83xZV`8EtMF_>(kKH%{jl}EY*|)EQM{Fb+?`(=#Co#MIm@OAY+5i zIL&ohCCkkixRNGqQ_YTKX$XHI)k2VS)Np?~mfW`LdHB4-mR{6t?^|U50L*2N+F`f0 zw6tB~x&$L@HJJZ{Ti^PkeW`MFz)R%hmOoToW|Gu4#- z+PaLE0ac@aEn=L`#AZTB1wYvbjwX$Zw!xyH~Hv4PV$BA*7OaW925Gj9X!TXFu7r9&T|uOrhUr@3kG z^n`}hCAgU+^IOUUsZIgt4;`vKH%gX$D#*=uDT>}k1IQatuw%g<*sY-FIx&*o+L24z zKYGuZtw^q>)~{g^TE}XODz+w?BHOYzFv#}lOW`NIkHd=gjpei#3i7OfCn9I2EtJAi~^9OFGX{P9(^-8$LywT0k?(MzLB#FBQLat3q9Ox9k`t9Nep z^Da1Pr_7!HWuFM&$Kn~p)69@O8B;TYMtj}u)<}dFrWwJOC&1n4p!VebGh5bI7IyY_Q0dOib>#-Q zAY=oO3C23(y;S=fLo{12r4yo-B~?Hhz#tD}#ZuFB*bZ*->6KF21L6ql1i%OgBtvUc?uu8K+XTcNcy<13kd zH`M&gE9oJ+f=7FVWw&`zq*cspc=Y?n@T=i1VDP4=CC$T6dn@4zF4Bp-5PS8<2D3H2 z9NuWZxU`-!*3Rp4pd65(W78NND({Fj8|!ZlT}EyolFI7C&sRLLBOCcWh_9igRuy8Y z$8`GshkR;AZpJ0Gt@Vx7we*3IMR1wO$R&0!1d`2<$r?%LHrIuI?1VD>xyb-=-lWnlr@2Im;_aiw!HuSnGOPTc;DARw zijzkd6KOWufhC=u5@S3c-Vu&{gVW*BZ(!8!mTX(ex;a629WX{Q&!_2LRwhz%P?r6E zpbpSHPWQ@qWxa5wVILBI*EaNey;b!HscHw%C_^IT!xYTEz!^a9N z%ctgUtLElNvYd0f!eXGOZTirII?xzN8m%8o+ehI)P?rfo-0GoH0r!b&ej$4MpC#jN5ra2f<;3!IeaCxgdvRc`Hm z)o-f95W$#;mucI{^gXJ3iP%_7>2R^kQI9RRBXRCJ)@7~a_WE6uT&gwH^9L$HVS;$b z@5OUDMmN7>f~80;A8lC8HUp$ZZiySb!rh{Gm!A0R>&L%p?KKHh%Nsrr7Teu*tdYBwjQo547 zP3Toslcz2EnYvep+r#l2#ERgLD3>Ld8*%B{r?M$L0I@($zi8IO%269e1D(WoCm&4L zL*i*Cu(g}Zls*o?;d8ilWA32cWfFlP0pd8BC|vmBE1xKJlB^^%S4w`7<)#Nw^GQ}Br@9WxcONe5+ffcO~aAc z)_>W&`^)Be+GB2;mPYDSbfODpie@o9liRBjq$dhk9P&@DII35d9!yg&pE9z>vB<21 z7eSsl>J3|}?Rg_dQ{B9gcF#h$)I32am>Uz?u@4-Kq?I`bAdbylMTM4;aq#L{m?G+} z5h&!H#lMHI9M?6cYc^VJT2=eV_ZG#3ah;f5vV5z%o&d`8?OB?ii{sE>YXpPOX&mBK zI8_L}lmG z{#qK=)%86=F5qobNipS%TZow*jsVD12ZC@rbBg-RI*egt({{f4qtQ}U)SA;yv9s}o z%1xy+@(zc%`*##3~j_PNV={@%vZ z;l=Y?+cb8scmSjPJEpl!=tNK+2%t5>H;3sXiNcn%3`1(sa0Dm+k)mWih%mcn&}y9QVz5 zx&3@i91DgXEw=S*qUz5-GL=ZtkF!qg>u$t9w1u>{9}?_*yp~NdC2%+)1g;7Fe@ep9 z^>n$3osg_?kiKBX7bgQXq5Dm|nwO6BokH6`Vit>O=7;;lJFyt+f&LW-!i`T&n@jNp zsz%aXt)})e0k9}_#~!)Q=Uvdu9uooel)2JM$$lYU5$s_qkyqHZ*fJIv;PG6C#GCbl zONz=V04%|!LFwA8YabBwqhX3rml`-viRT?)&Xm_Y%t6pC>sy@#$YfLbtc2 z8oaGtUe9!Hs&m0hxlS-yvMZs{?IVNw7_L$o!%U>)dkVER!zazVf#`agqV9C^U#+xg zgzjQLKJ-^1bErun+(|FM7@~l=^`5_>TU|pP=n~&X4oG=dg?0+WgTTt=c*h`eF;ZK7 zhT{6gZf!=H6iTu0xm=5aVLvGVo-lx(IUrWO{jSNZ;uFDg6~iY|_2#PC zUuf6y3ppHWb6PA=6AG|VmT;#z=ayh`#&9d~Hx#7L)xE#Cmao&#@F3FdEOkpKw6l!C zX&&qdVLNcRZZnMMIN;U$YfG4CQ)_Io#ILy>QFoj+(sui%e-rOa(Y0&2E~AMO+RoZJ zrG`6VMqF(r4#UaMx2L^b&?dfy%~tL?WWQCq7fktyVs>D`7q|nF+;L7)gjLzWimg)* zN_8Er9c?<9Opf*~Hrm=-G-a0FTT{8RV{OVoCnG!_K8K2)&24RN=9z&~$5)r(bFI_tHf$ ziZdLe=Q#%e5Ib-&pL*kj=H)Bvr*p@Q>dI|3d#?RQwS>1eOAJ>fP_uCzzF9I)%g?tt zt*cQCI!2*u6j*tuNiD_6`=pG5#ABT2+ofc-fi!3BGU|8t5dtG%8w4=~oN_yN`c>#} z;DQ^1vc23Ac>(^_w2)Vv^uXYBt!b;fHTas)NnK4_)!b}LY5;R^(9DOan{OHUfEnZy zjyb_r>_Q%4@CefC|4m+M}n!If?=5H~+&RZME^Vj7Es^hOX99EU>{INXH zEOJ20GE5RyDuKMU!5zWpzqzg8snoqXpAVB`m$In|Q>wk+Chl&3!Y^}ZpT6>K6v^dA zBw>jdoQ!>OS>6`8g*1IuRk_EUPE_AwrmJ}lwc%vaQhBU3U8H%j4l%c!f=8`W zx6n1K{XW*#C;L^XvN0BBNVa^SZc$Gc3^=5tK0j*ahHm(0`oP z_k*qj2m9)4POAR^ zk8{;=cfH5j!*io)(0#Vz2YAvsFtLSlxdax$#{(Xn4NZOG*_*|4TfEV&(!(1DKmcS8 zOu?a=8@*}9I}jIk6usK zxhp7Ac8spw^y;?gb4|t-Tq5qtzu_X5=SRD@e=+UV6U)SW00<{1@~W2CHYsbT#Fowd zpp&$*&wzI+ByAk})pH!M*tZUr&l4*ZA1H7~1B2L9dg94xX0fy*4kU{LNckK5Mf$w}LJ3ObeM9Yz2lv%MsU}E0fgkX1DS&YKqBilB~oC@J@cCBDamy zNu=u#GZ&WOp;()CN0^w&J@eGoHT}NG(&p-HTB(_&3O8<6JTKsS*L2mDk@fU&)MBjH zGVSJRO>ZUT<-D`U6AvXO4p%;*VM$B>Z`ePj{jEh+N zMzLjS5GspeAVrM>{5}v%k{T@$N;`p@C%Fw$0RF_Uqp@<;F?I zT)U^IO;3@ZxjFL3cct{yhT_IsDAN6}TIwZTuC10C9Ap8`eQHB{Ew#Xz85T0plN&E$ zy!zC$_9*3#VRL&v!m-Ai5JpZ$NXhNM70*lBtHP&U zPd<~c7U|aOsuz0B(2qE(J4y-0RQ2!IBOo)tmUdNPfT zs>$Jmh^|)FWQ~=MP6LdO$l|tc^xYQHOUS3YiZqSgp)$WGxcoV+TNf6Z9+2X ze3Q@8vVI|6rQW-vwZE4fcebph+;YcgI2iBAIj%aDy`3dHU8KJ|A1N$X)v)fTFEx_i z*2bors@vPaBVO9gc^{Tzwvm41Cp?qw!2E?#@gABrA0FvCx;zm{g^iLp-6WUg1P$MG z^lwU%!^?-l%VcCO5(f+!vLycLIPN=Dm%fhf&fW%wDJ6{o^Ftly9k}a}>(e#r;4yV! zB|SAu@jc8gEy_2(_AL0SP<%`*%g+q50W2|HOTGN9!FOXPq1-zE02OdvJC&o;$yi$u;pXawi$A;O)GC<^e`qkSj z?OM(o%T#$G-f@e|o!}0+9dpl6YMt%;s?68%+LT}2rRv7BXPksqDt>Mc7_VlXI90@6 zqq_C6oULsU&+7g$@mGSpJ7=#&X`{tsbf3NZ9j4Hk18(3+&NI*d09w5E@8cJWBAz)C zTSz>ih|D&TuF>c)JyHfhKS}Y2g3`-Xz4F5+miGQuS$G&E^amI<^0&l4gBq8B z=e;>u^ktl-w1DNdXOF|uj6F;}btq0LPA~6W%xgy5Jq|y_zAx4MYpBIOp>l2{jW)-? z01V{xty#q8 z?Ftb6+OkI+QrP6IF72VchG?zX6%j|x^I`GH#cJK%e`_glJfgjRP`R#yOz@go_;*mf zxs7*~K3HWRDB}zbbFw+c*zh>#HRk2`+8Cuecz1P8+WpzhMyx7xMh^DSspMMD8D)0Q zra7v*mY#+sTXqgX$t}VBD(sORy>a+dGC=M|e*s>x(qdZLPdvp$ZtTB!AjzeB}pZb;}XU8UTq)-z1Tt95LPVoue7fOJw~kLc-o# zOU-)UIZ5x8?AHNW63?}O`LW0(f!3UqoNm$c8P*+F!@f=9XJq#~%ZsS(G_58@wokUp z6r0ttf-{bKVLP}N2cGH;aQ^ElCr`>0)dFYKBotc{3Ko< zHK58u7a2hu>u!a*vETx6fu30O&qLC# zojP!n*!mhgIZ6uruKxfecX}?fq1{YmiV?UCq|IXQf^*3L6Wnq~TvjiN=eLhnvIERZ zXsF0!m$E|eyWB{TBr2fiVGMro$^rQ1viwV~`Rk@# z+Ac#x0!1`iwiCSV8OC~kwS{!y3*YB&k@FeuUhq_9IB6X%<>dAj*8Ij#kmaEyYyj>6 zW4HeRTDB}l+ac5;+Z_*g<>|%%~GR0`p1Jfgc z*MZN!w>RU8;@aif0w^k=gf-U+^^muqn8 zuwUFobsEQfS7(~i?kdG`yKXa(Nj%qQtJ>;mVWjF-n{JW|Ou-_-z*hh;Z<{?a+PI&I z8V&vb0FFcHmd5G{Sz24AU~qB$y7;U`ARgTwVNBkfHxa07y>iDWkjVhGg z&GNka^>XL zq0KugZ8M#|x;DBIk|3!qw1L?V&4Hi(y)#b@b!91#y4*(u#e%T_kVf1NG1S#ze+{ke z#ii32zTLzRjH3aay!Ow%b6zL$MedI7Bb2Si#)L~FbOK5~LIR4U6v`F4j3_~1( zI-KV}Uux#O3F9HFthVu5wWaiF``8Wv3GeiNK$BOHta zj(sc9PBVqpr`1X|X;tKE)_wbwZahDK2D5K@rldrmd>GtjB66c~?hhaj#-)8;;?G&s zCuKp};{*g0IIp$n_c?-%pyjH5iDh6E9#`=^Viy> zvbdf*PclgvoJA_```ly!!99VkBIA9vS2?QTV%6f8PM!SC7Fg_Vr$)J*Y?5_gc5>-~ z_krj?#-Y^KIIW|P=SJSea8xeM+ze;XjMYZeCORgdUeOAX5k_J`+rZ-;_^huV!#W$tmyMJ_gC>nY`H_rW97*w9>@Ox)#+UI^{Yv(+uS=WZT2!1WF&$?2Ll=Z z06$88jxMxc7T;RQBDBGv;aIUKL2cN_2S5I*;irqKIYr56+4Hf-*RRN@@TYI`A8mgY zr5}iG3%aa7B+T4$Mo9L+6|r;R9XYj&i)+(!e%f-vmf|agjnXFSN#lT2epSqPdTBA3qag}V3z=K`yjV;-{S$L4mEvnt=kr6Z@SgA<~;1V;CG1t9Z9q1<2+rQ?+ z4H(XsG^2N~ZtTI(wE6WXk_3sf49yt|3$}<@crfNa7MEixQ$)hZ8#ujjQi%g?+t0~ai(6}T)`8h*7GWceo|e#hs*Wi zo*uunii&T~?=-{JRin!tA5((yb*ws7{fyE`*)oB+7TNR0`$jYBM?Tf3eJ-7U;l`SH zkVPBqnPfqO$8pDA2=+DDc)Lu8RQPA-ED^QJ#T%pJI4Z-wJ&kdCrMmcY!>w}ruBS0> zbig~p@&Nbwv0qI>bgM{P=x!O(Nu;iHl(+r3EWdVRai0wM3H=$1a^5XDpzHS7y&q#vAmn&}dStHj|CimG{5O=T!;w zL)uG2ztns|IED$4*xN=#B714`Z09&53&&i7eX6g--wR(|{4Kq+M-pA!JaRx?ytwn8 zerCWQpL*B$b>RqgzX03VT-+A4xRl)Njqn#IAQO(Dn)EG8PmbQ&3w#-3i9(VO-XL{3 z9RC1~eBEmB!&Om+t}Xr>3)#irUC)5^KLu)b`jT4QUTN@LZd3>DA%Q2R3WHtVh2c#b z!B@In=C!P!?L-Dc1*k6@eAowZ0~`*WY5xEi8rx3s_4UN*BcJt^f#?pNUwRz3O z)Y^ofXqc9jj_mdo>?vX^R#Dm%QK@Tb`kijAu07lW)g=D_M~vZ0vH6E= z);wsWkU2k2l~N=7zP)+PSV=ai+mHozVX%}iadhzU$=kdiglyAW2 z@TVhfkCT@5rYUT6_7&7>Ovs^jjDRX39&z&Ip5~lXk!yw$axJ1r(M#YH0$ldK& zF^?12Xk${>qPUt_(P6fR))HTFfA!MFG6`h^lo{)sSL1bQ*|!t)T)!Ia8dc@5cd9ov zU2^Kf#jgdRGA8w&XeB{}Pm#A0K8J%_7S9#$i9A7TdA{OnIik3V6FyQb%B_*pCpqeV zUOu(Vn{7JiN3G3vZBtOUFi98LTLH{veqJ-42e-;=rnA%Zk>WYzMw;gGYjzKD9Een* zK*^QPPhvC4#d1TLJ$s(rSwod5cIdl4=KZz)p%%M&r`&267jfE67)d0UFaey55tG{- z@mRhR)ugrY0f|b@6k4Z})60<3sV$sij4vzCJPw=+*uHxO)io_pT_vpdZje2zvIz+| z#uvZc!Ot~`WvS^JPNw#Dm}|9`7Heg9ZLQ{DFwb&Xv)lBlvQ1r_s+=bo-WP3lE!o;z zTWWgb8gPi+zN%Sel!ipI|()>dxFhvXbxt2?4T21`q5>#?Yz{OnC?;)0Cjw?ZCL!T|?k87Whfwwv5sOd$b zFy~t&kJhLD>lHqWfw_V zU8ZzeR4?W=R^~2+x%$r)zc~{dlb*s@%`3X*Rl*>PYA$OJsD*x|U9TGB#uX0M%Ry zgx@Q+sQ7>NcNI!8mp3$(^wVQ)?IzQrL~H#;WGr_GP$cvhSW(F*Oze!%SKhM3WjX-Ap1AJYJ6HeaNOHK>9Qsg63Xi8 z4+Mt5;G9+7bmY=We9u09*AF)iTN4X?DoF&lu%+vHZTps&e&RsGV>}W1W~QCxzShm% zjfdLi7Mo#=I1xId4gtqe{xwYMM@Et7=lwOg7uSFLc;BY6r7`9>uqV{>u=>-=BNlTZHu zP1NUx+6FBWCN@QbfshHu<5X4&mNH|vxP{r)Q!I)wRO}p)qG=M} zYbMhk-L24(jP>j7U9=xH?vFx@ob;B&652_mrl}BTMiHZd2gneT*(dqtux~H3sb0wh zM*jfp%#!iAZ5a8!VeOs`ORCtB6U~DvUI`LGInR_4A#Qa<+n7D}*ZxGRhi0Os&Pl;Y{tKg5K155_vO3 zLY|!n0N|YdH9Er__Ey&>TXdgdt8RRgwTA(7?rMg&b3LuZG36f;GbuoLY<+p-2DXH~ zi&I9?{mgl~6{V5ovV~@vJ9mvCaHyxTDn~gak6McL#MY{zmP?3ZnFv+{43b7hG2b<7 z`&Q{=OPEM$1Se;g7zb|bHwUoKdXmmol47!fG?PkWDV?E!RUng$R~=}n$+h;pjykZ6 z^uG2mAha5uj3Stqfnfnba7dE_X;MZ{eDl__uPiO~w-(c{ld40MS&lI<gVxXvg9Q6|SBi)3ps6KeV9@zj_rpInDzDI#$Yyl2+gFF@+i3 zN}IFw-1B`8NRLPHU4mR&h(g68l#*7=+k+g2>Tp09&VB2qhS@bw4Z^p4s*8DN~$N7PoZ zP40_z10SJ{MzOE#-j-`!J$jhBrjjJrE-zVR6QV@y74on14oL5SLHd1a zmXkUgn}~w50W6Usl2bWcfsQ+m=~r)c2ybp~uON3@bYxS6J5=W&vveIRAZnLwug!ZD zEgXw4?&D?vE*Aif-!^mC`BpP(F6+73Ml!1oS#*hZ-oobVL7#N%8pUkxu(XU^6=F#1 z#(ECe#cgW$km}YJv(Ijf!DG3ORUDs`4gUa*aFTfWw8fqn?4)TJOhY^+ly2pLAaXc3 z9XYPAN!6h7CpHtt>mJqf7?wjB&&oZNjC*b8rE<3ljVHHL#?LS~h{jdieb2wKM(;%v zYEjJv(%D)*Qn1BS!Jn`}9ME1)pQZNOAc`MhPoG@?7r`8iuxsy(Nn}$fH+YnOfFdtFBQ-ugWSA=D#Oz_~J_2v~!= zMNTEQfjQ@C8}GQVdm@9l{$-U4sXT& z9(zqBT^DI0j%9HyYl9vXu6^;iAAW1hb*)-sv7QFFj!=<1s%K#%A2+8=SJC?I-L=M% za}B`}v58|b$Bb9aOU0R%PfJp#xcPjz3c9> z+}b!=Z`wuO9nKMqIZ?~_E5xrJi)#h7{LnOZ@ixdMNWg56!;nenKRUJI9b)SE?i$3> zDvnd_W%JLs0CdRwtFO}hDdC$->$SO#Sag|_Hg{0OR(P8Wm23h*2X+oVwCg=2MWR9& ztoIQBj>!-$Ai+5&*ZgZYjl-$)sBh8vol2s&!hF;5!h3B`#q1(JNscJiR4Ouu8OD2@ zde@)WDmZAje9PF5)xYroeV@kuAZeV&KG=4vux31Ut6LVlw)JX zsP87t7Jvc~PvKUvwF2ZR9O9TGX=C}Y7p?%Q;kFw<+JC~gAr+O}uM9RTl1qO3<83{RmwGgl#msXXR|jnIbZ2e(SM8f0|bX_QAC1@Z!s zpW;50R)jI-dBJYZe{t7K*n%+IXwkwT==j120LpT8#JB^yH7UP z?BIlE;JUCRhRG@b01=*RGUr~K7;MqI0H`M4vFbAjJD#djVk z)3vtMZ=C9XXt&}xtl(JMU@|v_L&+YXlhf;1ej@PhuWw-uwwb8Mt8J1WvmuT>MuKjzG!draD)eDv9v zHa;J;xSr-YC7x(YJVPu45w!1(fFlI97#^RUOKldPX(g@QybNvaW&tJ0COyi`>cf-C z2uINR()epd^1Mf?`Eth4e`%)h(c)DMKp=o{0nJ*|d_K0?exkPiL5?j`G8Alq#sE1v z$IN|u)*jI%Yio9SwX=*g8&aEoTU)t2i)^=+w~p`|mbmi~9B%VjvJX*?-1O_-v~9-ajdF+^85JaB@N89V%*1nn}d@JjWGJ5mqXfPsjckmG9E>`bh2?;uyZ;c~K9P zE^&f7{#B)CEKIfrMZ0@nGiyD;0h9$hx^t85SU+IDOR3#po_ldHjg(4@j=N7lYhKGw z@(lB|j&3~o)IhR^P`JZ!*Et-T#xC>o{{Vt`)Z24yEq~yPaK}*b9im%ZGub(1PcX8n z+N?k$uLNSWF66kdHZu`zG;%Bb+_N(PIXUgYteIX*FA-WZ#3P0&x3Na^6apK+KEGdj z*VR9>2(!D6e>O4$5wmWZ?TMzQ_>)NcgvjqB_X=>{OrvIgm&(z!j0ZJZ8_xtTVVs3n3KM)*p+CPoMj(0ITZ!2V*d>kB-WvLs}zhUPY6 z&4uK5Bew>#V*>8gR@oXzmNjf57dt`VA6#^+S2wQ&w~|XSFTNu)M;`8QamQ{yoq7>+ zadB@$)Lh)Wt>{qHn89?BtRu;a7RujsYZrgWD8ox_at5mZ@iS;%jZ?vZ??8?azKd1o7=%KE0vGq4;`5(xr)D zV8%efNXFh9AZNBQ&syzI+|cQ#P3tAG=Q{jWmzGh<<(82j9%398a1TIu>MEoYn~ySE zAtX`U!S$6CGO>nNB67k= zWw&R*$T?y7;F|N-H@DS!{)Z1UrHh2+(WmlTk2g0fqnm_pHbzx>0P4gsUWDVIt;^Wf z;xylDn}c(-d5?{ulyS$eCqK@ztTSt+J4bH-l0=pwCUQX9*$vcn^rznHQe0U&t{h1$ zM|@ZWkN^jc$DWnl3Enqvq4zPIYspH3()*6x($qrU$D=6Uts!>@>DIhqUhip;5H^HXpNdE}AUS26J3 z8@n$Z!K6v42bw1?iz?s{bG#`BjC{wx1o2+aVR3$8l6&<XDeOBx6DaC zf15jj&j;y`*0gkcZ8qD&^Xay+eVz%t#w-2TVo5md*EPiJch}dJH>OBZ0W1Kc#5Rz? zkGv1moY!$T*{!sl9{SjXissoo&ZjIf&+Gb9r#@PZ#UG5)s-uXgq4WFBS6tK0mxgt_ zbhwh{SG1IbbIKB~Lj5`8ioLCQP>mMuC*1(@q-D=uFmcz^Q!Lcn3-oWAG8C(ml0i}p zRJNMeSol|`TdR+^TNH?>VZDrRv!?`chU2Y$g&K-&Hu|fdK}MpSTRK(oZjYqHHMB~8 z%`WDZ0`+6T$US%iy>Yf$H~c0(E|Xl-Y?66w(L&nXFdK@V81u*@wnx^eTIh4#-3XF< zPdSPCM4-3j$*#}AjdS3gQs~Z#pJ;`VB-{6!108)0YZ|`Go0C>)7UcFhW>_z-r?hvA zNo$DbDQ@zF*f(u$xd)>+Z`QPYDdk3%`fSK&o-$L+A24MDf$z;{c=N!^;$2?Ods!OZ zSk_R;&A)d19l)OX1EvK@q+gF5)VI^45H9#yyiC||lZfs7N$ z;O4y-R`E2?qupH38@;lrcEXGn11GI{hlli3@QjyJX|~d!yOYgyp5QW`y)c;_bJw?8 z>ZIc=EU8IaUuFJi&z1A@Gu8EWTe&QZPz{n>;lmIVoz0Fp`LJ>L3c&GhsdZzd$W+^h zQkKgT%vI!KcA!o%_pmv|Yxr{KRMmB8^td$$w5EXpj^s9fTo8Q=b+hQ3Si3 zZgMfS4u2ZXL%)+i7S`71 zPf-o*D4AiF>6DG!(Oz5hN0WJ42aPGLAu9{{VR4bz(Uj z)r~L3Ruf3qCqj}tX1P~^AhX!2e7(8qI5_^b`4g3u+4NAQDzz0j^)$8pYW5v67&OF>H$1e{{V;{8%=uOLey-~%Jx^~T?SCbncQ0hfbBSe0YB2P2Fg zRF9z*!ldHd+uZtkm}u0a^>rI4yI;FAt^{*xS>fdR=Sb{-fdzA4t5>NNfE* z=4j-+xtJ9I?F;TP$>TiLyT1==-WHa^D0QgyOQ>O1y1y2r7bZn6imb;tLVjbOmECo2 zW_-G%KWOROTbH8$0ECu*328GVwsw-OtU;ii%Q{FDf)7lOT%O-bXNT-{LkmT#-`HJ1 zk-K?9FsjaTwCAW8X6xzgQ%k4#h93dhSiyMSYKb6gp&u@M-OAWF+tctoRV_Qi^4(lP z_RUJ{O#+3G%E0eK$4=k->)WXwMUbrW0;nD*aV~&;TVt-R4=;$ zRgZjN5C=@vZxH>LQ%G+u0fpkTcJlBT?IRnp)lVd2ka60f)a-1$M;4>@Zz9@QwCJXh zSQIm|f=91BWAdrmO`Wle_A!jxwZ7ucn_(7%;(cb?CKH*}Zl#f6VpDO(+~&narU2xH>lD_woNdd!3oI#5)W*g@m+QHl?1}} zXwqpGNJOMcxCO$fz#QaYucm8)vr$szTHpR0{L??BC5VjU)h7JzJ5!L|MB;n2o@-cy zg&}NUjzV(1I{yHTTGSOS>@MfJwU6yl10-@ZrJEf<^v@iBN~f*!J+;JfMdeLyiz;sU zhf&D&#!ur`^=KnaFEB*}i*s(7jIruhuU-iB`c(4SKBt)#?zwfcA+@smL^4S=oNuyk zm(P*6Fej)apYxizW2B|EwxMzs-YFxJH{Bo2xbDU?(0(+MO94x1BfV93K+;=zTbT%6 zK_mS0OKEW%Y5K+sh}qQTbF*+zes9XOr3j~Pwl$)Xmb=@?>$Ul`+nZfq?9;_G7phT2c~u!4mi$gRu6tW^Kij4u5AGlUD}?9L@TMv%;hwFZFSEcd6G)E3lysqQkevu zcLKZ;2S9P}Te`zE^4i-K+*0~v%1817<0Izl?~G!bc{RO-#0_t!+N_3X#$h{1CAcg$ z`}OxVXY3OFnWd8HW@xVwqy{7MzCip&4Rgj4S5kVndz@+#k2GGc_aEWeV6^crk1y{O zEYIdj>P|3(ILYLFJ*tkqe)pP$0wtQm8h`;k;-xwN@d7I4oU)8{O$!DZ|T?0S7F zxYc3SR7WHR-I6&rqe@$G%>vKpo8hny^zPpyqqv}({w(633e19edSz^Y8j&?#4l*FMzE0A zDo8Fv0yyh|&*e_C)~zY8aiNo^_UKU2`ORRF*$?J-ZKTPvKT3 zPAMk3h|Tt$M*c4`6&QxtK-#=?Beg?oYWig42_u>&kIHn21Pps|>4Iu_(9L@*vY4fk z&`lf2gD!ELxWR%@SzTa`@VkZ?-+a<2wcBiRacx>6aZnU^mlX|b8wMIzK zueN!tbER2nnqU`F7@#bw2#`og4cCvlF^|aCZLX!lTeZ%@5#_g$Tc+&9!Lj*@^Z1Y2 zUgF(>3$d4S9t&(XBp`9we`1h zw}|ymv)D&-AP;I^=9V_$0OKb;fW>#ZCxpfKhiqi~YlzHykb-zpI(z>Bp0(wk7SU5q zg8u+do;fYxz29>7cT+1g87By;I0`uYO?I9Wu<;Mrt{{lRC5?;*aJL14b^hv*KVECc zn&qnJG}>q7_?SZtoYzfrC)llMmlm@n(YeZEDCCST1~=_v_-_3whL@-5`Zl-X31_is z?-oez?aM}9FvQ^GUv>90(4{p8rpn)m?H(arGV)y#{s)qIptusp zwLn$M?JN4`tN6O)jYm(FVp7NVLwl6~u>(0BFi5U<;sxrrgJZtZc~ zQ?Q@*R1$O7wQu;#!}g7Dr^ghs+`({|Y|XiwIKfgqeMNm2ExBcVHPHGOqq=u9VbCVC z@j^jz@Ruk_`#bJXHl7Lp0Dz3vJi4u>o2dzeOMMDn$Yj{Z?z~`f2W+o;Y$ zyhD|QER4i%#(f4l`&QUW>VoBz6qfq$@*BLBuVd$r5_n5dxU`P+-`!kHSLPQa?gJ+y zuLGW*_2=uWEwE*U0-WHMucQ1|H2xveuAb38(9uNkw~+}Oeo_G4yyW)jUp0SW-rij; zq*lfj>+^!S!1X^$_UYG7o1IN9`5sj7P1@wqOkPsOR0iabG5OVl65L9zqX>f~i0fIl zp^yb}k=zdTu?sAT!P*GndkXEn_SnaLNugz6G4mce^r<8-G08Xsw_1WVRbUST9jWLT z$%O=y+Z}3~QCDQWH7wh0EH;cD;0n~Yj0Vo!R%*ua&6dhzv8my_lYd{7aZNj`qN39^ zh5_ma<4tE}VowX|IjDCMqd6Z_$*T~d8Q$C;f~v&`lH?QmkwsW#MqF*c_0Kd?5!BiE zuR`%8nzj9&gu_r+B)uyp;?qkTf<9d5l6&{(9jY6hLs_0{NXC(Pb`>!zOsEl#?%dHPx-wnQNxr+gs1}lCXw5)et7x2U1w@2OW8-^cc0<`9HQ+*3JPUtZI)t zxLhBYlfW6m@!OwXe;=sQi@Eh!I8LQ#s&7@P*28zK>pmC1(1czcIzjkIA z?g{!FR63@Mdvj$kn#eA#u9MA`ilWFuva_!{ao>+_lsf8@*}b{CwT+I!=5Gg;W(9%* z45x)ZEnc8>{^_W46>+ zN?B%;8GOjW)Djfq1m|z(n$NcImFAyf?tDRVZXPyLZdY=*Y>~hOmFhdzot=QV(yu1e zH3IR+aSOpMwn*X?-NGy;v!n zFkcf}S~zhcvts*l)8D1vypFZEnZtV z<5?qhXN^F1!Q^E19l7-tq2cMQ?e3wQDv&j(Ke|;CI2;uOgP)jnsyduVngywbFEZ*2 zr}Ll)6tZNGl;hlFel;BWJ=U18Txr2gx0fJf84^YoLx6yAbAT{Cy=!Z<(`O~2DBGIP zYhSl=zJ`~&)!l@4I!qHR)*?o^jvbDNb~!jX`@M+GX-_}eq?#EMHv->!$qxSjmDFJF z2kxE^Pf9Ly4LiMEK;;*LWovSbjKmoE zB$flW3)9!@T$N}_q^_CaW>^SgnyU%&%WZbh==88}KeDGFqE89j@|6SS;C3V)zpoWS zE9?1Vg2Uu!<%!TK+Cy#54*(D_qOp8F=rpY+((-t&=2mTmS)@V%;Ep1{(XSg^#`&TrnPelc;pP}*?>?K?q_EPEBqu7^83nh)SOLuVtBr(L> z1{H|U1YjQhbK0(6D_g~WtYt74I4JvaOhbZ4Ub(6U!pdzj(WQahTkm)!E)cgTfCK?%-AJar=C5bbncA9&VwNe9z`B7|NO8tU z!9R}`YS&AfR~mv_PSL>yoKKJmEWjL`_Rl^0RClr<(5&udwvI7!q7{-(ery~m{Euq3 zZZ#O}pb_l*G}elbzDyAq9RMdharv5aij1!(eXNK}k=|bQwXrqT+O$q!iapC3EQIh- zgSg}J>s574K|JfrGdr{S$iyKhBs%0CJu1D%lc*a}dY8zd<7Pd;wP zS=`?x+51G6-gJegJ4@~9fIFXBhUX}^Yk!e^)h7;Sti1acwQ!c#yP$?xtrkR5U5hLH zzz_lS$gJ&4O=}xvjrTIebPi+tpl6oGc|E`jodeJ3#zMt2jomi($^tu^qtXM&)+d#8L3}v5kz}YGY zJd=}y&mV8gGcP-`bBrI>p|WkMcOwbrXi`OT(jSy(oxYq7p5~U` z>ug?QoU&XasB_6yUNiV&tCQXLowP2^M^|sSr*nOE58R1iCv7)vqV_* z>G|ZIDJ0u(aYZ)uyDHn>-CgPy$#Vi)TwB^~NfC(!dSK_aGgd9&Ni3dZxLF+&<^?)0 zBOLt&Of>sQZY}4P{NP$-F{1Ay1nlG2ky7Z^mo8e-ZRdGzErKW!5J*$ob~_%ms!eVG z00h=CadsoMwP++*C6VEQWGXid4B!xRjw_DV?PiZn@d;6ga+1d&CmGw={#`4q)NSvy zeg6P%f>eLB2}EvJ?v>*_pF{c9ZQZ0-dIW$*ViyvXP)1JP+;{Y;ojn@zf031Xe96Uh zPx3Zw?-`bBS)FAP2$@;rEW>dfIrcw=bCw!(_cxQ3k)9bQmMzxHwbX&Q4CI{i{&}rC zS!1`df#bJ6ca#x^aCQO);n?!E2iV>yt~{tCk|oQJlLWEPUgwO~l&8ze+dZ7O5l);X z8m()v>wCx~(=Op`8=Hs%I=cmZq;gmv@b6hGWewspTS|^C71{M}bhpYRQ) zLj+96X;B&GPF03G{dhl(a5vf{_8NhUPn+!bDh#1PEUGq~0iHkyw-wObYKKvYqklRU zj0P_vfE$jy`U>5bMAYW6msE~>RkMXW)_AT9O7VfXlA%v;dg-erDJgXRu6+F0w6v+; z-PcXb8yz<1RuNrYi62se+0scA7|VRQ1P=cIGJ%S>q3Rm7rk#0i(S@Abh>kId208ca zKTfr$Wn!}gd8TFzxn6f?BiG**T5I?`A2gbTN`m54WDKc>&ON*1y-UH=uQcgzwY!}j z!leHIe%7yk?6apuq#J9vwQE(mG8Sc0NlfT79yC(s!o0gETe03)^lD;UAcqR1(llwYpXHXJG+C-p| z*d$|}rx-csw_5F^hQz1!SjO93v!aAuXsRwYR@CgZj}&Qk-U+hPZ&E8~)7@dXR&-EF z7zzP7ImrH1wX67*?6h4y29|AY;*ui_uHY!+f!BadTJS}to38vVn(FS#*5>fTDQA); zW@Z^-*RNywRN9S}l_!TSS)hR~n+cWL2m}yvI_H61>Q3B~TC1MKQ?<`M)HEw}h$f&Q zg4XG{lHG!wsRxoc<30WA;`lSe`fZJu(DYjy zEjLq&`e8dswVW0Nfsx0jHO%;7B+#|(ZRS%IvudW|CMP3f#UK968;@%4ooUXM`Jegg zV)Zl<%Iek`=a)!pcy?@&>y%TzL409SgPuo?P(mCH@J>^7{ALblMfJqg}R3s`NO z5MokQM2DKYuXrO(@m7-2UBeI;F#zfm0=XIB^#|NmZMB_@mzMIS(#q=PmNmx(ml)6C zoO;)wA}dCuB9D+CTA9vJX{kG$R#M#g%|B#)7CDY}%f^GI)lrZ>y+2CvkBr_1gW-RQ zEp(VJTISMgf3%6^QNNZew~zOKTKg}>dd201?X(s!2@%6Hxhuvv$0T}+@_&jy2`&CA z-rLMxUX`W%F7Xwu;5u>$Wif@2&kK-GQ;drAuLAzhC&IQGVOxmjys}mQ07>$YJ1{xU z?!A5Mx7F;mEk941X1#Zk5M&CZWRdg-n)9=KOze0NmOgz)3Nh! zkGwN~q(d9(aa^s=;2!y4Wrc<~UYG<|J8L9x!is?HJc7gKKjB|W`2N7_9uCxo`3%xQ zlxA{H?0w;1EZRJdsI0`3#!p)M44O~s?jOp^R8_@_D!VLtkp5-V26`0doFfjS4UdTnq-vA8^QN6Z3y>J#e50Iaiu2M|PUqQ5b4|xpuSIjINUij3KJp~Gd0irjo;bqcK5Paj zp&WDcs?uEOQ?x>9Ed{Wb&nD(j=si^9kU{=+n3tLq@Z5O|A-DS*Fi`vB0bG2bfzL1R z$JV8_)ifOoOu9=bQcGuZxdoU3nC)Yqmm>t8{NlEAx=GmKjVWFHS8vmO4#P*h{@t{_ zw6=l?C&sgcX4H7Y314K7U^=qWLVvH z#s|%lkGwJT>-bh?kea;voI5?rll!?k7TmytAnA|+rd)r*NpU1_i(3n5mv98jAaMB{ z6Q8&+F_F_gwVR%o>F93bPMeaGNpAHz`TGoL82vsqY(2mmxF^%oHLpG1i}5`iC1_$3sm-cyOKY$E zIh(0n$Kk&W7j*_mwICKq6saJ;JGtZT^uZjO+P}NIo)Hb$X)YI1P;S!%e8e}GjxaXk z@v2&kI(5~Ku=ma*jc>)vB&;IXLmn{1{Ghi{TG~a{pM9r1?QfCxf#*D>l0`mPU=!4Q zpcCj%YQk4ZwCrh{#uc!0jMn{aw#Cy3{?D?NyoY$NHWru?0QrIG?t9lkW*<_H>e*mv z5=)5WQnGxc?ZD#$)AgzmU5OfHSVSTd`)OU^bZ8t# zxkH8u0MAaR@~I)Rwx0g(MY=K=<|u(d4*P&Rxb(^9sw69?UdiSxt!&QmM-J{)k06np zcI(!yxhAf>jc(%8k{cJ>+fB6lEvaMyqXtI{$>8U(;+?5nDtKznDdLOFlEq_nI96u> z51X$wb_gOmd@KfTmO_ggU~n5b=iAiOcQV@RJ{(ON?!}~*M#;HE9&p(yZUu{lCsu1^`Q?+04uEmbYR$z-ZF3h0@>_rN zv6h#&I&{*BA&Mx3h@wCk?f~Z}jxq&l&8%46pE5bOZMaq-DB4IPjO3b#%W?gQJi<0r zn%@w(T$6#5*S0G&!+so!eJ@gHx>(U2CP?F)25+0b2q5ry_Z5ScN>hv=uAks@I+bB4 zQ>3pJujq9xs@p8B9CqMKBQnV*{4O!j@#*PMK(KCkfQ&X2svX5nK2d}88K+!N4w-Tq zL?j!fDqjjQvj>1V`ukC*xzqmAe4Xr&l?bOSIUo={eqd|4PR+&nqta8m<$DZ+P>e<+ zkyRu&Ooxo^ZoDz+Rwufj%ZlBJXx&m>p;Qn!J$mF)Hg9h(0wu(~B?xenA&Zb7XwzwnbTmry#ACDEs z-h5lv4xwo;lLU&Tp_dz!#29;a;C@xH;=MtB+ixtdB3dMl(ITi+C4dC6z$bx`&w9$# zH7M5B;=}AQNpmACmiGi>l0b5C$;VuKiu#-m8kFN1R;Km-zu<)2rmqKPxBJcACs%!E zO4MHPw0~xGW}07_80U-}=eXRVwwr8zXE>F({C}-;5NJu}Y1X#-tk)uG7HRGF zgpEk~NaK<+Iud#cpH{v%TI}$0v7st9w%@yqbDo(s%ZbbB%1uz&ufVlI?DsV+F4o*a zvdoIUOp)MyPjl*V`BallC57(Dfu1G{z0{nV>%1f3L8x2XeWel@Hy^Sn0Ag)Nj9fgi^_ZGtM~gULVyOT&r&6EE{pP`t&^i0R9onm@J-IRbh3>Ropib z$sA*?R+1-*1`)J{n}fF*AD`B{Zy7;pVPb~S)$Vq&W-?{?uRgif??2%oy@{fKCFNDZ z7Q!ezk?EY*W*;Z1QZ86~Xu7+8M?G8%q?fW+ecLZIR(8tLPbwoZ!mG)h#{dD-tvglt z)uwny;kkoRww}eWx7mqG?g-AMLCDV|AkuiryyRPZNX(3_xtnSEPw@SF)$Kn;u-0@n z(!4`yWqqZr&pdF?5q1t#072cr815^x141<5r-IX9h_vLmHul^I z;}|5=)>`EALH1Z<4G)%6B?_ri+b8Q@Yv)pOiqYTXXsq`&J|$aQS^ogSFLMpNahKEx zk)u!v2Hs=NJ;fKqYI<8NV=BxJN2VJ;(xtw!zSOj6Zti7wYGUi-OPYSxl(d_{=KW2zG`txplf|hyL}#g3JHv4%D2%Ne5D(UDO1jK zz#hL!k^B!W?8W82vxUzDy0eq?>56@>p=Eb<0$bk9-c)QZJhxdCIR5U%=x}>?tvIY2 zTay*7jn&=2i_Y@MD5P`;CmneiqSA!9dY0t29c84&sM*M$+7AugyJOCPD(?z-U|T2G zy<}=Om*)Ofj`DGANn?l4bDp)fblaUhZQ#GQdviZ04}ugB56q{6GC8VKNp2&!wvIzA zmh;PnB<}Lb%92UR`kIwFE11eDnN~&MjXc%Nz>p;^xUkPoy(-IIpg@IkRkt6lRxWeO zWP{zPF_|3T@zmB6laskB*05Y%xs&C0R2<+FgY~M*d;9e#B2zfMU~WG@^DRkk7IN8s|i$+tl9Zk za0W5Q6Mc(Wzl>p-Zsc750KkoXen{;ZuS0_ox-?=^nIVQfy3?X(lOt)t=|opa z1VExR$Ga{)DkanxjmXI+dE7ByTJ$)&n(#q{!2o_VR2I^Se~UC$dX#iJkB4+u@fM}x zDD|zadcJvyWnwl)@jGLjxjtFP*MV02A1#%R?OH4Q%|gdfx@o0WRXd~(xGdS+Mij0I zINh8I;e0{y@51Y*n`yiZx0cTtfTKvGXe1Iw)#L7te!jH?A04fHEf}`2_<3bzrCsJx zE6&QkVZaAFPX`^nEAjKQ^v@4?k3&xs-f4PkMKaq3o63Q_(uZsQ?TUNh&Tk0j4*S6dUdGa@kZ-=g9edu&bW-m zwxebSLv!nn*zHuj0j}J5hgNI5%UNx20|?LBjwEGdkb;9G5tRczfYybMt*+jqK?aTJT50mE=g7QiB%0PD{#uhHWgbFKJB&6s_pM8PF5+bYZf|CqC1znH`#=Da0QA7D zU$jE^a6+@lEt1vIBit3)H;!EAj&a_!Z1pV`=gozl-U(xvM=Y&#mp>`UVh`Q_02<-1 zPgO6}_--JGN}PknL>`llb>*XYTU+6 zbHcZ&Y&_PI8+Mu|aLmpz&U3~`IO|s;y_$VS>_rHUf3gQ2S^(?`!BV*%m7!|0T-$l8 z43P!qI9LG06O}v;G1oOUB&tcJ)iZp@ANAW)gK9SXdz7Vu>FkKNv7QTw4ZhSvf(J~V zdSrUl%Q1Hb+gT%HFP5c?py%evIX&`6;Y)XaJ^kFz16%?jKn=r&JHrxx{aNo?dL)+3 zsybfGTG$~W0$}_i*YNr*n zx5(f+M-ohA0GzYn4h|33y>wcBsioTL_fp%p+N~vt0+mn#NHd-f)~Z;{mUCRZvl}qQ zP6By?MB9Ur*l}Hso043t@0C5Zx-so1DQ$2rB#6qlELGV!Y@Qc6IH@AFo&;5lvPgy4 zAdfsT$m%`+09u}TZSOCxSrkcZWJZnry{b;o3Bd23`ShrDTO)NPyG1J`m|l|N-CYi=pieK#{AjV*4HYlLYN%V^n9VCQoVPvg_2XinD3mb!6(m)hv8(_pq( z`*V-~099(~SJu`ONY@r#W?6@t*(CuTFnBzk{pWT@ct`wwn%^9YpZW62yq=cE&OnC$}HtSn=tWUusp3U^bwXE=Zwk;&{TurlZS5q7A3cpNe9YsSfytn$K@vofol`8&Y0Pe~ZwlRzkb4xCpG?rrO z-Y{9!WH^_qsTm|=+Nsz>4ZXe0mdO#hi+ajSWwJrfQU1?*(wd5oyw%@N>vLG$SvIvV zUFx1)ywX6d#gZ~nq#%s39@#XdE#oF916Nm>a`QAEi5G|VcqIKcE=my$n_TS zC5lBG-)StllGqhf8xBV#j@e$lx^q__U$a96>@F?mfs8?|WLIdza5=%j;~$T;Xc*wv zbUUkf)G9~`WXJCgPBHoa0F6g;;mf7cr-nIV6O*zqBP3%y20ind@2Q)`#++ci)%ky! z$t+A%{iP_jrMWMJJWXwJ;tA|ww2=+8Z6(#j%6?`YFi82jj{gA4w>&+eN8)WkUUyWQ zZOj{JI6St0I`fYN-d)&R>%#hYBe}b{7Pi3dFSGz#EPG{$1Cz&E^e+pW-wtaDsa;#O z#lMnDLYd?R10&`1=f7I?CCOSUr5B@0$E`x5tsiK%W~{R6`Yx+2ovr@>7KM2v{{Rrk zz{$o1MSFEU%+GNw@;v@yWzd7qWBF5L)(?n$Lp9_P7}jXc>vkni%D4wO=c)ZFt?r+y z$s@EjZkFoXi({xD4u|Pn4lee39a6QlCY~HExC+GFO^0&CZCqsW-#m`|)!W@B387SA z=)~^x19OUw(irs_tppaoYP*d>23(DVa9oVw9<{S4gs$u?Ww?1&gke~rIlw-jl_@@3 zBuiI0EqBAWc3vL2mciX6+S_E5?;(dy54ZBJN5OZ{Uuz3*t?E}6kn%+GO|?!JIpgW= zUdwfC$>Gb3nH^do3ou4PN{sgB`d2BZdGrJhn_l~5qb z&klL#pun!)YDmzP z5hy2e=eZp8HS`oQFmR13ac<9dZLe|ET+nGFd*H`|BG7y-ZzL#FX$XTlR%d4bDGur7HVs{{1nsq4D3-gs&Vt}O1>DcD-aa8zw9MhW%CJL46J z;jLd!HrIAndWEICn?_irX#$e_jsPH>@IdL!Ca>`uLbvetm!w{5&_k)(-U!;>SJ>ok zV85kwM-Mn%C3`#l;;AdNCxd)9FNban)^o{npkdZhGC0R?YUp0~P_?%JJdq@7b_k?9 z@K~`OxaXm-n|w|CQOTofSK3~SrZbCq8ZWd?z!qgV$nT7UTAmgCsG@B$R@QX;sjq`& z7Tr^3FgPq*lbrL9PAjsu2NhEFrDosWb9+m>T=%rN)FfqPwQbC}{p6g0et`b~I$P-V z>&aGjh9{GS3Zn-Y9dYemTXXwq-4zRG;OLVa2A1pqexN7ythfEHyhnc&fI(@eNTY(h zoO9|c2xYjLyC~b{S3Fj%^?hdBUD7nUFW%fm9C+LeL;;iQTZ+(6)A`VVE>EwM__6oZ*sfGOsxL*UJy_FT}So87J2+zHTtBjQ*82 zf#a=4+f(yyuWl|Oaj^N4vBpR_{VFTvRj5#vNPEpI*>y9kh~gy{Zt5S}7U>1U+{n_#kG)Zg9H?&KdiSq=@ft;{ zXj5D;5;v2%Bw|U&`8DN_r>vwo!E@IKuj5*9);2i$RVpYrwCvZNk2Z!g>ydKh(=K5C0*cxm}kVxYlGf%bC{E)aIf$F3DYe7OP0iG-EPNa&^TbQFDfCqXi=w*<6 zqbJp|MFX+MYPRxe`Ybp1zYp&2FV)sL+YHGhMEuezP&U7&K^*alyYXk@9fqyp3$G1c z*lKz$(*%y<-swSds-=-pkmDrnJvklv3MjA1V)e1s-J^5IJ_`IJ7U z-5pViN>=V&@RgpsbE(B8)veBy7^*=M{`<{s_;xtKUzNcfhzFY7mtNE*)b6acO;^K~ zcDCQTMzank2wQ1+M)ny15=R`-MPXJcrq5ReQgE$JMefj^8H-V#=Tx>gc9&Xcl|{Y8 z66Iyce3e4PW( zHva&J^$YmozVT+EqG?Gy_7`@gZRMQq^2#AsO~;&q+p+4^gAReC!=_Io-N_)0m1nb( z^C07fasbF&ZaEZDSRBMcWnGAHNC2;Xq)|m&x#iU25{Zzi5X&hAk2wfWTpkTie9q303uNLpLL``-**VS!rf>&(D6E{HEN#@{ zl%>eE++8e970eBH1;3T$I+&nfqaggJ@y~xsO#o<(zN@6xFyPz z?zr#k(x9JMip<`}H08e2w_}J(fWZ1=xXlz-1gkh!P>Qm-;?=J3*r!ICR!`5rskLu? zZ*!)=E&Rz1yl)H57{dJI;9zsmin#DSw36LL6C+K6$o~L%9Ah~2>zw-0MSTN;QM%}T zO(dq1eF`sjC1@kHOvNel44vb^`Lc2c2iMx9M2;~W7YzxG$z@HuK_`xbsm?mlMRP~q z__eb}4m!$DTRRJXr5gux0Y;Y|Uf9!-*Ek-&#j9Z}*=54RXT9ifcBOntRy8V1Coj z@0EUGfylwLZ5RMY5 z8CGYN&n@!uNk0Do&Zugd)}H!B)E{XK&koQ4CnS6RG*Mhl>vKq)Rr||MvSm9Xi zNedw$rC@1ZFu&4ZhShJHJ6GCUB%uI~2tK4^^`eUOaQ^i+m^F2&rn=fQm5APNZM=7Qs!H$!zMR*ae&UMM@7!n@5}qqMS2uqp(dA8DMc-hn!Y3a zAlLPe7TsTIQb(;xs7Pn>qmvRy$L}(!JqhSL3=Wm&n#YIrj|p6heOFJo(=G`kWyEDS zW6<eAVHF-1FsKA$ddKMJ`W01w8xFO2$rrEBqxuO_xLT#;{b z1*~~pqW~NX_fz>%MRLxgjO>?2ZP6J1An-o9s`%SmYfT>hlkZxA5{tNX-;hRO`vqQ8H;_6MJ#1`(SnpWH>XZ5>UVH{%SCjSl5Iw5Zpg|( zJX@gB@XuRA2v*64gehTXrjDKE@g<6)LY$-r8uRc zI8ouvTUd}mZDBkpg8^laVb8woR^^Ao4-iFf9L*FYHa4qD7dbc|trS<#)~`BqQAeEj zEclN@*StRyrR|)k$iF;MzU&No4{F4*xK~)3RtT@iM_d>BXRQ=hW(`JET+&JTXf+6> oqBbM9Nif`ie}o#HV^fiZAB_}OP=^^~L4;69_2!Bwskk5i*>^9fhyVZp literal 0 HcmV?d00001 diff --git a/doc/tutorials/highgui/raster-gdal/images/heat-map.jpg b/doc/tutorials/highgui/raster-gdal/images/heat-map.jpg new file mode 100644 index 0000000000000000000000000000000000000000..56547a3127b5817e8fdc900ca1beeb6735090aa4 GIT binary patch literal 54538 zcmeFZWmp?w*De~Yv=k}sQrz9OKnYf$SONrhg1b|pKnd;;tSv4H#ogT3on@WV2 zm!9sg194?XGaD{L@8TdB?|7PI-e+>Lr1ZU;+7`Ayo#%F&P0P+AdRMfxIV?%$O zFrH#yprd18VPZacij9Sh{T%E0a~xcP7dW{1xX+)zAbEjLNJLCbjEzT1MnXhJKtxRR z*9i*R<2vXV&oD5a5#c z`jkPgyq#EU{De`!-0kBtED};OatbD97FITPK_OugQ897(*9t&IC1n+D9bFJuPv5}8 z(#qP#)(-0K;pye=z6Jm3>aV!!> z!8NASztH}H>|X=+@&5?fe**h2T=M{IG?d4khlUT30Ze{_aU9`ow|#@L0{%Z1w55mV zdNGt&q@eLj)lm4v@-`1W+mll=KnB2v2!wa=2avZcUGG}NxR*@w(;``b`I$8>TdyC- zDd)8YUh1@ty<35e)p%9R1b?5|si=}Fp(A2%{ni>NL-_dd{=b#Wn7N$}kTk=oQ1|rqj<{cG z5eZRFyizBs7@5%K3#2e&vLgkf3feieC!`bazp`H8S6~}%SnDeD5_3ISM22{ z2BDgH5e4FZ09ZET@Ro?O7y^E~d76*&+@ii;OhiO?Vi1b!8X@A~NQ6VSe#C(YXrR+6 zvqsQiqm1eT*+NTT$8Q(AlBqt-Wr^kxC4M;Snz11{9Z~ou4*As77v1}J+0IT(_jraC zX+P_3-orbA%Yxue9j(@uJVXO6+nvFczx}HH0^|4dt=cs5v@MDEVr}H8O}7&*W2fLx z4owQ*3?WdGLvJiJk;KS>AstJAqR@G7R15JQ$@!1bZ?@oX%X_qH=VD&bAuw22P+IJC8Hs<7C+Uc6d{uk$u2cD9jAEsW zh8`0Bc5!~FtxfI^fFL18(@3Nvn`YT3a#`Pg9+s()E3HrkE4+2<1pveW9INLJe*h#! zDn4ZT+z9BbN271H#)mWyEW_YPZeJv1ou+a<%|l9y2k(cG!HU6B zFO>itNT5e2*$VT!DDerIYS5ia6xLK)&v;o`&EJHEz19C}ZWSU0%LoCuheKNJAa`C%BQh^b7=u@T@33>#)=NXDyUnFZpY|xs0e3$IT z+jKHSs$0&d2H7S{A_^#w13P0iFG4<{{Loa+S(XD;u^`&A=Ymx z)lh3Dvb>x!6~QA^^K5JaLzTGKQH;oT-4~YeegKZ96P^wnaQB14)Y`>8h2GM`%6IXo z`op+Ia9#lW$xi2$)BMPaPR%KEzM%$T69xrcPA$v6iCD}i@0I9ioY;UwZkaQ<;&#;i zS>jCBfaIZq^dG>t#Z%Q7fY0OUS9$y7p@4|5$UE+kioI}8xfk`jtBF+KnA}_0)!Jc+DK=B)9yf5jI%w|@|_?k9)5EMJMpW{qkf^)tviT3zR}w*eUswm zvbmM>AD4U?GFnk0T2V_4cK+TVNi-sz+2r^iMrw}Y4sd4H{hx|YzLt&APo?ln182O< z6o|ALS-*XFg~0`x5KPbX)~=a67*lq4TNj;*MX@;Y1CLXr1m|9vojg1%y-<^Z)PG7V zGkL4P%=>E11?b{)Y)oPUpJ-DdGOkRo0N1YjT~RgU^Qq*IM<2TmG)|W`kKs(`F*~fTb5CH3nW7 z_C)JTY_^=e)snuyb){2JzX%%a`l&Q1?V>uR(ek%wpg_mW%|l!fw4wHc!{O!kgYo&s z67mt0eus^OIK#yU&Qsx9M1P*`44#!#W_;}r(>h&U(=H3f5547w#&vL*;>Y3sb$Eh7 zr@$z272n7P4toz8{!a~qUo;jYoBMM2NlPgkYlns-N4vPQEG!Zcs6Y*&aUaNPNNY%dhBLAsVQ4(;M3xlK*Eg@oQs#HT+<==# z{A!<0V{1cfBhQX=pOT4{ZJv8?StD=xTPWmxXWeM>nUN>gF1#jt9f#3GZ;`Y*-7UAB zTwRvkhmPhc(t6@|H=H@l*UqjW3c5X^6FuQy@}B01|Cx=O2D%N|FJ!1K_yGEyUY=~U zpKSh#M#1&I=5CyzYUZ`*CZVyX_*m}zTdksiS)!RVt)yzrctcstDF+O{xUs# z18QWs7Z3J!$Nf+_r0~s)Pn)izI}rH0&e7+0))NTNC8)q~D*LL{_u0dj(0p7%s^_ z)q5!haSKk_4ckvJ@uc!#3D!Nq(JmQwq*b-gnHX7N*p@C43QwXkIcA&R*N_rAlZ32; zJHsV$d_tLhOHH;2m4NGao2Kuw?8C~+?jWmy9NoWN4fcjWc)Y1?31-%krhc=ZeF|2E z8^6lG^QT-;wR>h0Et-}km$r&hn-B?}wlq|hYkoS>qf@PZteP#Bx>;SMHuaUVbI`*# zh_zeI-CigopKaZTiCRm6{ncT6VYx{F+&)cU3vM?TuJ9x|yYSQhI-dHUs5eX3N34NK;c3m}|(4OjE9F%-O|zay2liUsEZZataw*JI{B*p=%ctySFXN z;;eq2$-io7@a9B42W4zE@^l7v_fYnC5zj=+OY*|$5=RU@9>Ac9GcD9b(k<)4LSi8;hkg94)M zGX5Vip;L|bS&}a;?1YB0=LvFI4RhT-4gp3mso-mEHa^%$Pcz+GHldR;uR#SzKZN?7 zIyjSE=E4`o}W z$_-QgH=&4bk))TQIxyi^;SoZi zyEI%7m%joi&qk|h;QEA~Op?>qjG(f?P2;#VeebwPjEM(1n-rkh7~SUqE$`fli|Hsa zg5uB3E9Gu{6!+JWv11Cin5d7^EohlG*ZYj$vzEG1h?y7UsGeTLL2CzUj7k*oqj5f^ zT=V=5tJXNA78Z@$Y_qa{T6ftaK1&mXah2q6@CUGR{7@apK&C4@55Ftw4hs1+dRnKV znezm0G|F9uYr5Az0&YB)cAp4BzlzY88*Bd3`*vdE21FYbLcUU(f23JCB=@EJ<>QP+V`f(Xer3BJZKD)ck)k3euj2d@bERwd8TEPm{e^=188F zd|lD!PS@+43f}Y?GIHp}=Trcf+~L(n8A@Z~Q3!g8cOpuylvi<6cfr=vBCqq*-8h0_ z*G{navWV`qoDdiL4;}5Qlx#+Z(-l+H+m=rCMNR?zFS6WYRC4THDRLz6(r1NA>|9dt z38!G8rAOY{DdJlRyckuL%Cl6z5l>C$9xq%{d;XuNi7H+^Emn1zpvli%;MM%)><;3J zbba$M@ac`!s)(_gjpDma<#TssS43n0BHn*HDXq4qVDOki+xXMc)6&AMZL!qI1F3Qy z(zm|cC}MZ}=9E8{#OUx4f~BSI#l?-&^F7HaE@bBNkvHpQ%JjI}UrLp>6b*B*@lGGD>u`>GGi@In(dLg1*95~GicTEu&a z^&xciLw3IX!LBQ|t(YSqq%A+VLZe0#~C+eowbNftz2$cUAIsR+E2;i*Wl41>ZmWl$Y z;x;d(#EP>Wf9!0Rt}*bqvGE$hAGEh>wSVmxHDhzhuf=@wl(>ypKnV7`yE3RUT$hUQ ziLsC)^NB)dHEOFun0WSL@W0f9rL-BeE7#5;m&s5=T0f&F0 z^jJ;s|552lom`naTCnn(r8>>4$*MfgfF!>2jQ)N37py0KD0-M%?!m(vXic2F8bYH( z6Dq$|A=G?`rN{5;j0~Em#*3fNJ^c&+0IZBh>ycbrwVX#fnXO$?9N;y1pF#DhswDxf z$)kfRRUancxsHQHWLc}hrJa+qQ5QV#U7?`Yjy*w8^@YI5J}8Hs*c9$v``h{YZuF&9 zU4Y=Ufm%1>a%E~{=2EeO>!a&OQK6JP=w2-b6P+(2$=oj?n!U7k`wXnC_&n>n@B+cd zlYc%Bly_#G&-vOu?3?OS&4s-SD$yp&lYqufrBJ$Xk zVPQ3@qQFQ2nq-F-D~O@LKTJ!L9baE7*J- z@ks@N)%U91nhHM6=c*DnQ_LG(M5*0owky1WmfbWaS#PlZBZ&^@`-cy3OM?=|{CO7= z-F7;6BZ2O$V0b}bZm%yI<9p9rvXqeqBulVDe(}N+8kiABIO02}~ zjK;*=b4D;fui-R`(J}&jV@Vo)zyL)frZ+HFLQx~A?hD=uTIkE%V zVmj)#)O(3JwF|g`7vimKh(5Y_4QMUXIDVuzvDU<)GwM0KmZ=egYy`8~^lsFNqNLLz z`BcnK8&_J}(6A7^z0liId;;<9ZbVXOMgjKp~ z{kWDKkgVpul$7sbd0@}f-T~j=2K2e%O_Y})XM-sA#a{=xK~%k+==u8vT{8WD^bwVf2>aNEO;kZ}_>~C`KUlY7aC5cx>>tvu&17M6P zX5{2%-x|<;rZov~ZlaRCzqeU0a+}_N3U}ezlG?2qp!m1o&~>6ddcvXm2()(r@EI*~ zMq$i4F(W9+*uUp9ny!6@dS%FwbElW3S^>?p%AVpUP?~W+b80jSXhiw`d|dDimJ0(l>^Ii8k@|WNEd!6>PO^*=0dpp(wN@znEMg zOi7OAQ>SlxaXYeF#Q3X-@I9LwUxqoHqS=1&_IAZwVP89X8a0C=mVj?pU&%HWD88Nh zx}T^^Ovs67*o?)>^?fy?b=s!s&E%z#;w^o<%~`-*omykLe$@Jp^(w;ZFSoJ@&T*}= zb+>cf9&g*%%Xzg6DDw}hU)KZ01)vi0@0BEPb-YQo6wzP>c|P+qyGz{PAWUzu$^+-5 zGdaE_GbIySwWC{7c@p=2&IxbV(d?32nRQEuOb%mvXP)9J=*GPzG%{?@oDiUL?r@JQ zYMeoMiCo^p$)N)YT{etT_N=}L^rtl_0X8{Kox7$gtuuI@a;3e2l7Bjs2?0mnC>wGR z#;Ekqxth71^y!tI@X7f2O{Xi%_{YB!Kexifv<}Fw&K6;;vfX8Pwi&r0I;`C|6aO>~ zkI`dO*Y}7@;VdE2Z&s?19IKH}lwnDnziESMT3$g02*d$}2GZh0z4DFLIP zY^0*gUL-#r!iChp<3?esq7ctX+I%F);hsZLc{*5w9POfvpqd*riWTCQs(;H4r|#a0 z)OtMxa8Y~%rk4~FMqhZ9^*668T-h1ouU2B6pK%E0rx6 zp{Gir!g8Xfz^6j%t;8*)loA$2yI%I_n(q*yQpH~ZjIG8RvalP}^|_a*UbLyjmF*-5 za>ZADennIizublCqVOY(6?vY>`V9v7SL9Z3 zI0Yq2jjK%uor>^nANr^7>%~h0M8R1c*IK;?{OK@qUze^7cik`bn!L-e`U@5p-+$VG zck>f^)v+M$bz;O3>iW!%%SwE0`})86zJ5w>7qWL70E|HM23ZF_vMRx&cPoX-(1bMr z{yLaiqrk1)x%zp|3L>;>-YjPkpJ1ZHN$OdPwm$xh?1hBe(cM>?K8r>BjV?Fqy& zt~X!d0`vJofgDy`oG!z5wupvH@fAEMPodsX!tu+wjLj_Z>1(H)THDSH!KiAVJ^Rr^ zy1F`F5>l%l`En=>@9iO-UfbKZ0)k-!l#{Lu8Mm{Z;z$rkx(oxZTSVcZ!@ZpHZq}ko z8(#6AxVY^UR*uI&Tsn%B&!L*W!W1$Px^4hvmde$Ys3ws_9uv-Kcz;`eLDsbn>_0#m zcI6XGMOE-_;cQA#A17a97pYC|4)vk0gV1K6EVnE$BtCp)6D&=y-E-He<*k^Hw4t_d zILQrFL#00&Y5x(>E4l+amuMxZ5>H7ay(h=*MR!vY6>81hJIpcWYQuKSLmM)*DxZZN zkMK7cIWSu2>klr+WHyj%A~1z>#txA^Taxa2?sBSx^9`!86~NLbC~sW?_t|~QO)}o5 zM@Jsnt~(!i?XA72tZJ)Y_R*X~o5=S3D*2RRJfcsjFR2c-!I!STuLnvR8QsiLBuCJE zlO;b`I6OQEX8G+$6*axp9l@#ng~ci8l~Q5I;BrM*c>JAP6WH+7(j(u2p|DU-Z+SO^ zhpnmXke0{(T|0Shcy~iYW|ry3??Ar!8v0n+Ncel14N#6##?0i0ix)ABI?nzS-xp73 zkY-MY%PhCZJawt3-4?(NDd>IG7nERQkF|m8W&4lKNL1Gmwpl;j=o0?sDSEJG6?K>EmF}U0dd=h)J_wLLGPB!FL+HSo zJdetnB*QwpCdPV6;H@jkP1(9C=7ORGhXs!<;54zr*+amGtTE_3XF3ah617 za-?!8*LtlFh;NH3zU6YOLq;!ZIV>ik&EKH7)WEoT@YhYK#cTN_DGskmR64A4Ltwbq z>pf(FEu))#Rc%95&3gr3Px{FUzIL4*aEjdYeO=ZZn96g#2=bZ>Q+?W5bB5ES#5S+F zPSwXM&I}k7c{r{(lkM)*Tz&=eiU-@vPiGLO2zmqY!s#RQCt1ofMIdh)8I99ux;)CF z?_~3(<4TPdBzaJCOYs>oCA?pV-(uamL5R*ObX-j&gT`qHBQ&PCJX5#UcV3W{x3Tl9 zzoWQ+9_)@GPjrIVm1=&snoZcH$EF@%HX{?aA*l61*`y{rJ%mW}6~@0Hw02~lT-|(2 zA$jMPZ9+~Dmyt4Tv|%$97=2<6=OzQ=ihGxP-Bk%BR$}w&(3&ZIHy}G^eG>A%CDC~F zBLMw&riezTn8oV`Hz^Im?jo>UiJYrNCG*_QgKuT=lOnYE`c^kHevu)x#MpXwnx$7R;038bjP@-g*8X)y47mm*YM}S(w);_JgD- zsvH8On2Sg=EP3;Tj0NiaX5v2O9>i*WHE6oe6!Mb&V$6liCr?TrHsQ1=X9PoWIkKxy zQsxSxO{z(Lw3pYG?L$a^xf{JEp$x4tb+5-XfnKly-$ucuCpmIVo&z;Ya6sMDC0;+) zi(Zu$5=XBCFro}14~cb!r9VK8BBQ2**o3n6bL*k6y6A~_M&dg!EV+lsLZ z?#oR_TNahmM_(f`UMD3fetFVNFxTR@8enGHU|cm+A&~ywx`!_^p?B9rxig7sZ>nQJ zeb~0aq$tYjn>Ez~k%+(`Z-Z=e#D;Uxu!EuE11#>6^^2uz}R{g_{+$o1nn3 zC}aEB+E_(wGBJ;Su|tDj4Iwo-j#5LM2CV#+j22Wj1rtpaSDeT1!NFKh>?Vgl#7#66aodq-PUl-Z+acb9 zhgJ*LmTm)MFrB(3UF^p%pMTsS-l-wQmo2O4K=}ylOjD$bOb9lH#c&cd$G}IJn0MP% zlY}9vb94#)^Jwp%^)}ln7OThY$RI@Y5@n@|bji(^T9UkhAx?2{lSJGlDf{>;VzD1* znQU66yFdtK19qG}i8)6dflDN#Cf!mfHJ;SIS!Tp}mIR3UQ@=CcSs%b}W*D)kC9RBp zvt4JkQ-0y&%Ys2#&sphP{+<`;%VDf`Dt<0I>uGz(=IJUn!}7{;BU-YEMfCdntK0ml zD#d9@;tl_OM-{!z@k>ZST@AY!frKfW#X&PB!hHq*PH4>}td^99u_o>hV2wFyetn6l z0UIq|U4P}|X@@d~S%BvhvDpnSut=7Dto%da;__8Xw zjzYO9@bT>ASM5MLAKj#Wp3=F zMr`))zT)5W3e8*fQ3-?nBR|`ow89?{foV5gXRy0kUBdF<&KHWyh1O}5W$3OTPbqdT z_Mu_Ifx|j%LU>2z$3XQROFB!OIVTL$T@~)$n9q3zQ3`UJzq1`xLCNtZhC`pb^%=Oo z&^EbGRF&RI2zALG8GT8S@l=x3cDNIeFyw1+46h9)jCF_qT#Hno_|lKXE6|Ue_s|B% zOJ%fjMs5VWrVx8}G1#b+to(I>z{9j{(}tS;A>>=PI~CaBpflFoEa~1pk1v#r{pp1u zC*%q7E1Hi;LGwKKvAjgB0!Zdw)6nf9#qzHoa+>D4GHeRuCV6_32i-}fZ`nA@Bhf&w ziZ(Q1)AQn4RkqrZ_urzjR_I@Rnf!>aT`IXlbj)4pF0RsMR<41WffW$v-p#3LfxuP% z?B?Q2?DYalBpW&Xx$n7QHT8f(AtjEMiQUXi+WUc4L3OGZ;v40^icf?g@Rm~H({5My zk;LoWMt(#f`3?>5r1`{U=$Y&@)^l7xRAol29NP!8GL4prL(k929EC%l3tRvj@N4aD`wVBDOdCNI0SBz9iFg>#R| zSK6w*XMEQr$J`k6nH;W*y2x)Wqnj)pVwFlLk9O$^Zb6{mWbXb$w5&_J(oXc{wCdS* zWfLjUciU(h0SWC#(x_3R-EANIfbnTl#Gb67O zRPaCdVNRq}L>kQz7E!ovr&n+bkUvI}@a|6_csgrjuDU?e1=kepXX_f>_d}Ng>XNMb z%wQsUNz35H)z?YtB7dqzCYtVZlDZ%qoZKY zN{}*U3%k(xY8=3UMzpVl@)Q1bAQ3oSJZqd`SgVLb?AY=4CTUhPi7ImA1i{7pOWx(l zA3)-a;{|jN@d9&}Sm^65FSc@D>3qYO&X%Z7^)Cs^VewvrTe_zA>W)@~9m+ku)Ob%? zg02Qv%LuQIyUw6qemHxI__uVCikW*M<*bq}b7fwWmx6Ibgy*39(wEHp5 z;;HxqqZ@CjNOjy~8`ZgbgWH9o?G>CB!r?DhP)82^CW`1JPpt2g^ITb~*=c9)@$S+0 zC2c_rSGfCa^B3Rw1@t9?*4^@SEBIgC*bpBF(O#7m+qW>ps8KjpbU0g8$Lo467U#b2 z%u?=lGnP4NO3B78plBXiSuo(N80xQ+-i&|qh3nx+oQC7jEwYz9thXVxKDSuNbH7sB zowsw1Pfz`g@JZ|1*oiosQf}F-#;DxCkRZXUrNF5dT`w6XYj4}G$qg+W#TzymCfZwk z2)9eEY-0ife|BQ->Utcq<4E$q3ek<$5JT8mbiR$-{D|RojuOzK?v` zhhY{{<{Pj8TX_p&i7rK1<%txjjy7p+t#DqpOa=BLNgWx!WYZKO4c#$EPe_T~=IbRw ztF!uZ(%XW0ggi0$^vQQPF5KGr5^>h`w2#YRjoR~bq)XX~A5UsFSM!EUmw|A$^H*b4 z;zZ3p7*<6YL!2QfoeiCEqI7SWwPDsQS`4+TB>uH8W#zt(g;C+teUm~{7u}OOHqGvV zGw0^Rb5Se7EuVO(fkI23xXKW{+3%XN<(nyRIuSb%^;;x>-KdQIvT%OvfH8ZfSw)D6 z7|Rn{lT#tErCiTczu+Tp9P#!$gam~-gtu61F{jzSiUGdagyCn=nmkr&E-ZKZnS4Z% z966yQx!%e*YODA>23|nPrhmWV$>#og2+o^UT$W&<)uRC|9V5Ua-kyY)TcNdYmkhc2 zlpwRFjg{O4jAHGJIQt^h&yJUOMw4n?w-U}`I*NV1(K(vCz)Xgo$BXsgI3{uEZF^;H zo1XNk2#?8~*p?om_4Kl8f7#7DC4X+tjMXTY(4$~jKM~Z;h~E?Bjb_Wz42kdA78EGN zkUM&cDU|+eu4`;j75n{bH(-ZonLskwaDi6f@}2oa5lL&`bnu(zWWDK*&;8f1TKe26 z4-&-?k=nTaxY~f_A0;&u6)SCwI<_OO>fvf!ZMpVVF2&R9{{Y{y=ZAL&{^zlqazc3 z8TDyx*@o_g43^QADkKz#E2n;pY5k{(NID-`U;7PwH@9`N>y2r{$1U_wVZMQ2U3K>n>I_4NNOr;69);PiFck-!JymW4-sI|Y7mrsjgL zA)Mk)JcJh-xyiP>JJE2BBS?bso{yN~EE9=ksxcb}ZT&bgrwBAkH0 zP6K*_HKK79Y^&=QT_@rt0DsJHC?tr`?@+jYdd>TZ;oY3rD)P})KgOu_#J)j8|TrlLS%g|B- ze^7nxGVv{RWG!^GpxJl&S7qToJ|j5cy0E|n1$E<$SZi6o)QQB0agLv=#6naiN{yT3 zez6&05;V{BeJRjG5kc0&2P@K16@fOLvW z1U)!}Jisq9bjlTb?5@a&>MlwRk$jp#uCR@kmrxh=@A|zdab!w*FTh{PZf5N$&W$yS zfe>)h9{_UrZhyZHf`?VtYwUal-QW2d<+VXcUtPsH9r#jo)rGAlyobFk{3yRXbg^Tb ze>1qYmG}nBldrCB&92dKEh9-(tmT8uXD&_~+el~T<*>^Ey4Db57A!rRL6&VK zFVf9FOHF@*yQMQIrZOnV(1zNlthDQ7>FHZf*4k0xcaR{(bZpD(=EJnbD;bT@KLDd= z;>q}5<6K|b`)eY~HEM<7LqdLVHWI{Y9eAb!ks%5cKH{V(X_Wo9s zjLw+dm|K2Mm=`*H1^L4};UN*ob7;soB@JOkummiZ6BLvNX29 zPNtmV)-A$1C1#sBAa3abg~_?Jch;PF#TgOj7R32&T?qYisv7%mi5aPBT0X!0r)Kgw zaoPx^)Z_)6&_PdPXZf$9SJS8u<7$$)V)4k<8)?dwwn`v#D$kRDdx>8Yi1s;PTjagw z(^ZIWsvi%NcRlt-OW+`lm5P+Y8sA9VI&)Asof$j4;ziXW_M+`0OO%uXPPM3r0(+V&56y!Vl`be=%O#Y4x3GtuzVBd73) z0I>SY397kvYDOqMt$7%2o55BO9p!I9_1rrbyKRm(SbzSlzyV`K3c3_hbrV>jQc>k3 z?FH};oc~!$!X`k88=Nm;KBhlkg^)ZbFO!?wJv5@p#!TUJoB5XxBFS?!Iq-X)4<$^8MJfhAC#1nJdU$~-LcEf7T*Z##GGX=aX;k)q zaZ4L>+J9mjBc7j{%2PYTRcD?$8i^?nZ_c;dw=s<+<#bPo8-pjUlF`j>$8~Fe1?lWc z^!z&XT)aPIQ(@N{o7ecPX^K+NrvwN*eIT}y40QZOZX>*4t@!ji`IBwTBI5oCE082E zwCPt{#s|X^wt5~59Yp`oDZd$)~LVIbP@OZG!61JP4cC9ya zOL6j(Osp3L8fy@$Be3^lG8!;-()WxJmJn4> ztdl;s$J!P@FoPA=qERPdJnwMYX%cXMWboN6)>)4w83)!0ghSh@J^U-Y{m9zP%}6`NP(6xoRTIt zxjYlQE7_<^L6cM?Gj};PKD=(cs4ZFng1q9!sbGFK#FRU(+qo)t^@m@7SoxIbrYKE3 z?`V}oY#m`@xZ%+^9T5y|Wkv{4#rq`~BMJ@fYdY3Zsv3I+8gI}d@pg>0y`7~#l~EPS z0@)fd(Qhg48A5hce0;}YD&8}<)sI*2Eo3%d5fs++`%sUDt-K-LyAC~F2M}2+Kl#A` zG;6{lWNit%nO;rIL;^%_X2;ApbO%lc8o?0h24AXbyIVcC4CVuDuY4!EkIyiX3VN-T z_LM0hpBcT0^`h;64QPefvd4OBXzwujG)jkdNi)}nVnlxHBeHO}VXhV2iFjLe9_xln z868@GFQD=;UY-^kl4b}PQU`Q<8mJ}u1;$1NT}xyHXJkX~MnAKB=#g;qXea!Q0xUxW_=a3G@glLy!U|q4?ndZPi9JZPI_E%I!bXjH?EUKJ`>pW>K1_i>k%x-_^F8h3Ns+)n9FYE2#d&q*wv|SrPANs+JFylCiohCXp=Eex|G7yI0e+CYt__DSt(dJ z9iPX78DhR7{{Rjab=ftG#MLJj5Qp`n;^SJHEiKlI&)Ah*a#4AGijz-d^EehD#|tkp zYBSEHaNJJ=^d}gmxLf8*7UmR5WX7#r$SXK#6;FGz5l|O0&l2BdD{B&HkR=-O9p_B7 zi|8VcAbWdWj+gq1NKF{in@+rEJyiWQ9)3|3?S*+`xFgc96yFdUWcdZAU>?eoRf5H(#OfsXpI?#L;|ilnGTB9?p_Xl54w zts*hg5*b6EXON0C2xw@WJ9sy%aM6CdeU7@iFwML5&4@V*d2?_JAo1K ziW)%9-1up%Ww`V;olJd@}*w9((iP!KpZB&-`z67waM_orJur%t`_W7WmHPUrU1Mk zfA|@F-Dq{t@04vK0Sa~mY0!T0rHpvD8T%T$xaW&RO$9%j7n%x0fd58NF6~l_h8c`3 zEt+kbko35kO%*P*nCP?eU#|44qnIJtd}zvD`lEfaJ3`kz^ikNx^a>5>@1*{z`*^l8YspgFUwwH&Z(J9NaEojcX`sB7_ljY-$d1w@!V?gbh7E_ zie9=4BXK?3^t+j@A-`M%R8mjAb8kt0ikBTD;3%kOW&o3Ixgd zrR+CJUs!Xbu_H&-{QRhC23QC;GAW)*K$H>VgLL?`ufDjbKbER(#iFAvH$3jXJ#Rip zgwnTo(cHD|-oCb&#!I9$_Uj*I^#gmLlH@%7WrGDsO|(Hc+fTK3g$uh5`C59lmYcAR z>gVA|WS0J{C1TnYHa{&`@5$wG2+~W%TR!Zg(#c|+gm3HR*4ElFiY>qOENkj7_&8Xs z72%z!w0B&al5&UE+r^%g5QsknbCJ|-Jy6~F1K^H-EcIkAu5JpKiSGj$9?tu1x7?7y zh@JZd59e}5w&IrvAkQ{DvxqFVcpcZ=P^iw0nwz`4-vT>c`>K3g(<2ZqbaVi5F*&|J zGuHclf70a!#gPCSQEw)U5I7svp%Gtu*{7OS>T=r*iVEl4Z|(f}Wvi9>1X1iCZ-SS? zP?l$Rh1H>&X=sG`HhFHbplI>w#(Aml=3-D%?P_*arkP~?iuKND4_{OP`JH`lcm3mo zS>1w}4G%01o^XkpHm7Rx)UQRBn)4+}ZuY02OR_@qk`lcAN=kP%?Y+31>7zQCg&FS< z`&w*mCHTC(1{1_AVek^Qxi3M#BG(^N=0=7e0WC2PS3<*>woE<|PORPT7ef2mMv8WX zqXGxvPxQ+(uukVT35e0)h6IxU@a%mAbm?nNyCAT-Q{(7G#jbl66Yc@oq`i z_{HmJ8Eow)J_~z)>h`)%%2h~y4QhK?DnUm|R!b?_pU{~!lw|G4KitT-6Ps`4c0IB` z;II}dvO4S7gU>6^4?du@9}t!tK7XNapr2F9%7D|qIW6n;eMskf5A-NAU(Fv`lj%0> z@H00vjM0L2!zeUi4T2+#sjtanlxpwAE? zd=AB_7{(rXvQ9dIv~3{Cds1s7ITO$5+MjF@iDG1&{uQ!II=Q64VQu(<2B3?+18WqV z+mHmum`MM!8}C#Qt+sDmF&ZZ3*yrjUr4mr3il_7boIpvtR#=coEb0EXv9?+6>-fP`@^`j8>dLCR5@^{4P`&t}TX?UAc;}9{GxNo6s&? zsowz|%$u7sBhxJbe9z@Z3~$O{VFY*NrB z##YNe#MyA(cm3_{Zag$;sB*5dWHh3T+*pm8@-lhBWtl9PBw3_WawaAx4#rq+W?9WI za%mX4QR$|X^~xKHY~^n#Vi)*9IMXam=X}fE+?s?iYOxtzH4$bfaE3gvOql6%Zp8mc zj=0SP(5k$ygPrQV#Hl)@g9W#x@Egw=&Ku?Plo~3y=>#2=lT+fk#^fm!b_zfdTxqWg zy+m1VupTTv?ErIfq#S~p<(id%TpR_HMPs|CazB9p(H=fMk{K4cX(ubjCO5pMB}K7r zJB0!$Di1#!*NNhrjP2rO<8SjSvw)PyfPvtIivsc;@sUS6^$j=X%o40s5k9= zcS zVT)7S;pigGG<2?Yr=wJ``4B~Q<8hAPMzgx-lGTH-9C4WOnfDoJFFOBe{F-c=?WXZ# zHT{l8^vd&?u(E8!@2_eI`$%-qQK-Vc=%RgiZ$HHupy-OzLl#Va4BNjTsRGu+i34YG zwpA0_rI!<}d@~(#@DIP18t*qSH;a=uGb#MMy)-$&3+rpAi^P9bR??(-;@oLWpRV1g zWM!naDj30_B8SNkjR`#&CBJ()ElFvbqO~X+kbBo}pUf(@dD^z#YB~5A`=$zEaO<~3 zUQt=AhPM}RxGOe@3e3O^-({<)+;q16cTcWLABvN}XZoESHh4=&p8X(PM$AJNen37u zuH(PP!xGmq_QH8$W-^$>K2t)YJY3zfb77z?k*hwUvG&G}*SB!S52nvQ9sl`Aw{yq&X=?v8$v6J zJfp)_K8;HCvyNOjHP7m)DxDl~lP>0%ZM2^oWYM^(WG;B$MMB$^4cEAipBh@{`X^Hr zA<}74meUKn=M-v2M=ai@pR6OH52&o=Q9^T-nGgOkon)vjJ^5zI{+`5|Mt8Hr7h>1U zGrbZx8#dcQJPGy;f>8wI0+~N{goMgI@f9meyxs9a87)|YCv?$}*NuZ9NuI(V zItsaxi<90k?iYL5GqHKywU}2{Z^8)GMcmvq)m-cSrY*QHx8dpAOyo5yd-A-nfpjWXAB@wAEXYoOO^vCO5X=!!bv8+|fh z`nH?j<{OGOqTk{YRDGJEm}**bEAFx5Z~SZF1|*X6j7!yqlGksVO(z&+ZNjGGhwZMr ztk%&g^KrRX_vm#gw2L3xbn0oFh~SxAtb#q03pw)V4rJ1R$xB(0mH0c^4K4KSn%>@* zhQ$c^sfeu1tTwO@$Nhonq-$X? zgTPNWd3%t~!SWvEHrgHHT|b$yLl5e0>XGAGu9ukTemcg~C+j{z(-nhELt#5{%I(zO zIekVTE| zXr7U85|}b}?OQMf9TtTy`y#M{sh zVi-U4{8SmYZXsqBL$``@47RXh5F;ybk>ng8i^OUmgV(Xcs!1k|s+cvkK*>EA*z-`~N^A20_q^SPhvzMg&s_U50pW-fydb5xsnK@T2b4tt%``2>n;rb-nf-vu2- z%4YsLtIR2rR z*vu(nq@fYs|9n9C5kyPEw-sTL$ZGrdmGfBIeJXt44F^2SADD@VA)gy7jm}iII`mM_ zFbAmL?6gPQ8>p4Dkqx$djVTGb3orX?%ob?Sa*aw0Nbzy7nlo{adL@F(wB0fZ#3JRnQxET~nvapuzT$ns0ke%ouP1AEQ zM+MFW-u;KtJL$Qn-!zjJg$%Bv>&FO=`5RcvzKo~%x6+7iIO`i&-FXM*ecv801vGhDudXZ>JlPfwaUmIgN>Hg5h#+M3+ppehe*(|rY73tlrZAeFz z?VrnV9XJB{YHNbs@OyJAyfaA8ri>c4?~1~EoX599TmH7sxoo&Fy^FH9^5ulQ#8i+5 zuTTFYtio7Pw&vSSjDcG1@jP{;xI8c$+yRIaxJ5W*MsjmF8YR71u3lT#wNTOjmPenQ5l4nm6OQ zs26oK-IibVi;-$?5AGJpiLaA>Qg?+iRe2ZkR+M{TFPfjkV>H#nF>9kHrN4}CL7upf z0~?P+MOLtlt%Z6$VgZZ?NZwJy`Lflmgc(6_RHmdmH96@fw+fc^!*D5G!EOMXPcQ9b zdkoJ*!$-l~wDnR2GFWRn45ZX&KSD#@&RNf!`F(R^aczBGz3g z=q}~Y85+L~e%SRTw~xsY%k=2A--hgYRp3VB)@ag?l7K4j=nY?0CGT zx%U{Kd`D~2{cjx8El*#p8j_ld6Q=Raa(^CPEWmLql*7eUQ zAhoKG=R$DCYPV00d1LDZM|I}zmlXXFr=$QwjdoHUVcn*_F0$_NKfbESQjoX+3{7s0 z8NVG>@FNA9zOe*k^$u_hKp?ry*iQSn0`t)j##)OL%4 z1EThKvYb(rj{bQOQBy&2eG#SmQ@aKyw`uUka7r7(Xinc76fw2NXj$$og6YqXwyir} zuM3@zRYX8~x>L5NX&kXYTSq6bkxYmJUFa*d6l*3&r|WV?xf%W6=T?)wv%Nmn%1`Y= z`!btCgRIn23{f19*=)*QdyN2|5TyP2y&lTAK8xx65THL}FIFugYUKs+nGjvz7oG!1 z7mh)j8U;Hhbo38M4`@vs#hAJ~LKGqsnO-KyjTEi=1K)ex`A5wn7fvcjR}x!|&&nQV z)pQ?=M66dni)0(m+ErDD1D!~#m{l*qIe+Z78^JmjOk32oE(-ZeJZovd^O}~9kB$Sx z$Z@uvO5G@s%$f)@E;`^tnU;Zq`Sd{j**4J}$5{NZ4(=C=^_#Mklu{%%=30CDCqMq{ zG7GMTs?D>%@xc>G_B~w8p+eFs2s_}kZlT94g6aKs_kiE92N8yBhe2OvI=#Tkv-iwW zx<+wnEnbT>mz>uozboUqf%2HmOyY@8YM5r&dDNPI%y3KDKLM8S_&@5l09(_rgN0Ft z>9bEE>Mn98Er+lp5p@>I&$x)`m^6u?xPu@=^DVImUNPLwmin`QxqKdTb^#!LiAn-{ zGI_W4r|(;7 zXtHqmldk7Zg{&tY9*9l+>kclyowx;P9UQtniT+=IrlR}6i9od1v9PPkUD^lc@Mt~4saWV2f!jQBFdf6T+iqOy zyU5>5N|&6_W+|t>>dCCi0q@Aaq)F0f*sM$h+Aiv~>!v(<{&i1)tKZ~GYUX{z1&NLn83g7>$^b5NusX~xsCXF$dh?xABZdYHKXvGYjv zsD(GvjY}FNyywZ4|63BNtH}T=!z2{@`0fRg&6N*l8B(eLIaoP;* z(qx~sq}15V>^$@%BE=s~6Vk72-ESyT2EqT3R>j!i^^2r5#BU&)QF!?uG>QAoV{Ha} zqVClvW`R+Y)~Y=odmKqKG@t3|BDy-Pn0TYBAkBK8H6}(1)sC5$99T)*t3=B3abX)j zmw%}2Es)Q#JVG3s6UQolc;@$VVkKs$XBl>gcHAJ7HfqqcX7qpsBkBB&E}?u4-wy1e5p{LtdzG^4<6W`HuEv zrPJ9gLv|gP&dNJYBJZa~MZ+&JxgqL=BV8xYO!4o-fx@Sk-kCuSA~qHH1(TM_6vj}7 z%b^vA`37LNoEC1svG>pv;fbJF{fdGM@GHBJsmn5H$i=gWeZOY4s7o#hl}F`looiS@ zU^ii^T_RqpB~O91G}ms#pBu+3lXJ!?k3fh)q~trO_Ss6cs_Z=XojFOL>kw~+&wkY~ zS-aWlAq`nfZLjbG$_Q-BN(3Zt*_{DKPpdaeO1+QPe;OY;nrvno)7*0PYI?Xt0EpdK z=f$mk96opCg}ac&>U<`76BKt3k>dCec>iw^_74RxoF~vkpL2zb^oaLSh;$Rhwue2cXV_Jy#rB*VEKG%LRy^}>(&fsU_SQkG-X>hKxNih(0U845+TjA2+&>Ndi z4C@@P6)AthAUN_W_uQFf4;Wa%MM3$bgh}yYoRx;25zz&!0FM-+w>Nn3Mg`@_6t*u2%#vhF93>z z1g23k+Ng=D9y~QIaDaEJT+(LsPNKn|VYNH;fs;|U9lELak;9-rK^fObx-W61mG5#; zFpQa~L{ear!Y`z?1GwE+(r^~i&|8pSg@kFzAqM1ehJJ09%J=S8Wb#du0jZmS@bdpq z=)JwU-aDxc7m@JH0qlr_bpQ#g@UhpI5>id}MQzkbaLVh7XO{?R0b?mfL)ojsAiV|q za3Y!EXeK@gF^i)Nc9K5nF|*@vJ&)eV;uHNmVgAxeKP!n27sQ|IV> z-$qWwXHz*;UQPDRI$yRj;W<28QLDgHu!xkIez^q~B_6qHQ<*BXF*!M`8na7kU}d){ zS4aUa)Ay}fnK;HyU5VxDDar?j_2gPQ-iyK*!rGJ|)Vz*wAZxXy>`8e&D!EC#r5)EJ zT>c|9XWgO%x_H;|^A~9i=|9qr>x^dR68PN8-P*fXjC*=6-*R|AzUNMN|bi}n0L8c1u3p}U+mS6M` zW3yC_GTG!+DC1NXUT2WK6Dmw=k5lpIxI>bT>VpOXOj(*yA;lwPas+L1IbqPnGCxTrDa+yyzM8<8NA*D zWV-~EN`g!RQW{SO?jY*D8VgjiwdA6d!f`@YU71)}VQ>H`x8Y#0B@{QYi zq!4e<9||B=pGz>eg7Ij36NL>fg}TDP5b$A6%A(cSLM?ewR_#eyP&a~nXC;Hubv*{!-~V<_^4Xg|?TGFw z!o&UE$VszAk_!P&1c%$-blRzem*CjlEvZB*oJTiXzA+)DZin-4Q2-=kQJz4A(V&NS zNh&tVJRdc)SN+A+$rBv?C|)cuAPx5aLAIm*4c9b|K+ybv1j#TZM@z+8lBnZoW(qAo+ zjf&@!b6t6XNAVIu8&8L07NNtG&x_G6_aR=Oa1*UQAua)&ydhyKJZr`D)0~|5VCGu)*5u@s;z7K@{$t=2F(KVe#OQwh^+)Oz zf1woRWyZ|T&l8FRxr+t>U&0BF>^oXyXy@mIcM%jRk#wtk%|zT27g> zuqH01a^s3+qSyLtmCX?|%IM6m=8=+HRdZ>lcMD@t7(7n565IO|z8j=dH8!E(4SW;5_T%D~}W5g>RR<%QH2}l!$%^nn%5)qxgN~j*F*J+$8NRFd@1JCCs%NLi*34G_rkuv!@`aSq7gQC}d-&CbH zWrR1=Jxq$wh7ltcf}1n2PbqPll%tmP)RqUjHHz4JKDbG`D_9&rC-uze@LzHTrUp9F z5z^>R2iilzH`OB!_*Ox3o!;bBiV!0&QiMqxh^L>BfGZm0?P7HaopefCKOQ{s)nMsN zBAm^dud$w^rsz}lIv7{ey}50PREx^))`IgatGh zbNp-cf2s*=ehHn8inkY_<5f%uo)PtUYn#@|(Z7fo49-dowthjU^zF=a8HIBZ9sf_B zVXYIV~F2+5|{67@^ME|6_M#685;u?Jea`FfNp``so6L0jauEAxB%*D1* z+8UTF8_e15pvfqAt%<~i(qQtq$|OvNDtklZGsCMDRjI7Y@X);ghMG&dbOo=uf>h0j z`b1K8Mr9gHkg=hH*czy|1NpV7JAq>e5WY*}6>4a?LcIgaf{Tj6XA` z`8?DXx-JHlXGppZ{gc27V8w!*jDoAL=go^Ux{m0j)+y&u)%ywbcgmvQf*?QBKdy$B zDZQa5=~HGshz`Gb)SNI%{H!F2f)lS~X~WCtXAM-8kIo6{$FUsFJpGWE|B<1rPNm#4 z9%S$*=DH7yX{+P}URHQ0sn&3bfz9u>kLpo@cU+skR{M#7U&!OrV8zsz$(_lQEP*tg zg`r_eCPv;JvpP{1)RcmXmJE* zZhjh1sCW-%DgxaLv8V<1K4$HV|0Z$Hr@Wqpwz9BfDcX1SW6&d=^5u+wZUG-%E5KWF zB@QloW#9fosXgjfy=}`j8AF(23+8d|+2&M}J3_rqZmHkGW+*s+flXWE`H@X0H?mFk zposEjgsZa@)0l=@jl(Gij6gS|QGT+a)$&UY-r#J^Jovo9q##n(hNuS{^<=ijxn+7a zi_$4+tJ+j0qgT+`uhh%fXLhe>M_Y3tvS521zR?-Iz z+tj{5e+!6mb2c%_7q~7+x3EuSC~H?lN-rgo{n(o=JD3%hbNcQAw!{O)%kdZrn1v6L z{NgFKA4uY_@V5wViqo}=euc6={ZZkAZxybJu`_f@o4dO9WINDBJ9%Qrve-U0vw4fh zs=J7D0!fm2^Ua<*#r`OWHk9Igu{F41nyrmP*jwvR8;XH0u!8!t$Lvh}@D)HtyT0D@ zO)S&>PdC)8B#*C6@hieLZB?`+N53}fwAlEEmq`Bt*ai1)pf;XXCslUnwd)7JGk`OE$Pk_tRn zRnfzbMXA=7<$yO1zu$#OnI?n`5|3}`>#Gepj_-VmElv4^?ug-irGnA})FrzQQ*A?} zIQC0p(9U-9ZOXjUah;yDTO4VGi}~jL6-u9E6$j|+CBW-sM`fHm9L!4X>0~9zSubI8 zTYq-_kF^%|IXP_6q=4Eyt`%QsV`biW6xQI$LzRTsYq=0_-j#2;+sMn-FqOv{&*{^J zTlm1tG)ayiW}!S7DX?>c39}^q%~*1HTypABLqjvO4K}F_MLrVSns?hpH%#qFi|y*p z?TuEZ2UEt63>R?X3I8F33FcvoGKzD$SP1fd!r^VB4xnGL37f%|f$cHnjB;u?9(+b_5G*(jM<0cOn&!j$GVqfL~5lTV0}) zWR$1!CTP4UemQI=o(~}G6h5Z(Ig>u;+>UN{%ZB3;2f-eKz9NV#+?}?H6mTBzK_g}c z&r5zf-AU}y1=~bp8;b?f5Wn1}3g=0gAuYNF<~&C}4&YpZTC=EyZ-EnlgJ3tSyd{}Z z@z;;_N39UmpB%!PXLR32+yI0PCmdY|`g_n&ra#TbeP*jd;KVtQW9qjM)OL-UurKLG z6^u3V*r}BDcp4oz-GV8m^GguwnUaRCvL8RRj&t7FAA#u~TfO1Q?!S1*l269diK+it z522Ge9n9v`r%JPXPZhP%JV@nPN|C6aJ!A{LGvy+vcz5okekS=Ky?H@ zVL_X+v==CgvuYMf#n*k`RrMX^Kz(uFRlR3K**UJ3L%L_NIr7NSUe-1`puaWn$IOqe zt=Z-%9oox5u))FsoaUOIOp2lCPX+g=l&eqjlxf7~KM4DP^V%nYzjqdOtY8JKpUJA# zFr2*{99V#$5~p6erHs~RJjdor>buM>BLbDPOO+TkaDDQ_u4j=P%Tpmk^gGiZ(U~&3 zx17fvh2}icET8=zj{ZZzcATwL!4jXgUIE=(Sv|>3JYhalM}p7Mo^$N!?S?3FA>xe` z()<*lj5&XPL`S7#3u}1(P+{O3Hjyv_{OG5Lxp+C+=KHjCs#Sr)-A-utw&sCGlqdc0+f@|q^O9v*2nL8KH=EW?~TnKwV1dJlkr&c0~3p|8m?wmM|{|5BR@o!MMS_(99aK# zzXa8)mx2GIorl-T;wmCInwe7<&AG2uouzqAHC#zk@V;EFSoV)G!#)OrCWDkX$Y_KI zH1m?Hc+vgS3rPD%V%9*GQEz$lOkv;;a%lnq20d27~ZaB)7{fr z)c5OnMeN!8Y9}u~!F~6uy9)4x;+?+?P(_0zdx>0Dt+{&amn`f< z-G%m$UP1PDzfXVP?}QIkmJZgm5Z`H*8LYIk%ovpf%QbPw9U(ssLkp_l<7d&8Xsa=V z(nhP@yo2WaL)&LQvs1<9gF>MuIKH#=cp4bGFD8Z4R_}DF5?YR}^%=ex5@h(NLH<&g zFJDHr1iw#YZr>Ku3C~;Yt;FCQ^@=Hc;wV*S&ucB}2` z??#UsE??KYm8YBGr>4@aFE<#1#u5*r?P>~8g!k#q7sciaDQe!2{uyieRg1!K9?$4$+)dp$sGkvmT&);o zKJRu*7>1$r;}$%*Mjz!PA#z8Tf_Aiu$zzAUgBKEAwyX=H*R@dLlG?>QoE=Jmk{n6K zQ9BUOPl-t_pHlYt^R(J1=Z-jSE)9~lT#a)6uj&v!SfHH32J#-Hmzvf#IR0A@4{3HX z;shzf7N(H1Qk%POF7z^0#PVy!@))mosaau?tXG-iG1(2^oEt&q-{Ju*gX67lPOvQm zey8gb4bf6K>3i%cHTb(kATc=R{-eQi3J-6P{hi6o`WVAeLV1Qt1-|)_ugR4QjMXD*rkq*TDV)%(tghQ9kh#`1sDk94K zciI4917~JYL0Tf*Y$F7fDsT20S-O~)ETQ5*od8XC|HuozB`Ej!7_I(hV2#==X1H!a zcszytsz}r*av?VUZ)wX}SM=tPyd`7e# zmAP7`QRVC={ffa- z=Sp&%?x>La30p{|0u;AT7g&j>je`h!)L))2j zc-|rYGV!EPym=iz`hoku-&-;Ij}VH0d>f;W{`fCvPv%D5%=+Hn$&atRG^-5qiT4Gb zKoi2&TX=8xUtF*n^(g}3l*_}fs4u_c+0KlAuuAzz`MRy)tQ*U^DBP_6eN`mMr*I6I zlabDkzBY8NJL*GAYjZ7;dc!_ON>njf35~yX?7xP~C7f-)^ z=lh+4P8pLs-p{fT{ptAzjPxKIMdx_zRcVtEDO>T!*I)C@8h+91pG!rxA1{h)5MKIU z&kyPe0OOu$5gvkTVZvPNI(3nD(u9rHJ$+ExAoo|)?1SWZsgOm;rmxhy@wcS{ zvZcP^_P5fE3nQ+rMv}sY;>SiTf+dYLhmY5y0e!?3k$oL+W}ZG4511Esb-2d8O&M}v zw*yA!uP7OhV8`+-aHiWah2z)|un{RO&KF@);31w5T_j{pBO zLiDcSVLINe*q}P@#i$w4{ExKPbTunp^G$+8rvnvq{z(WHE=*xy_qy=4{W zfo9w@AANNc>_zPs_0-5D(U?1+ThH_z`eC-Uk;6&%pm}iF$|XIi0e)o5>QR>TIOYRZ zB9&14DuYT)5oh*>5<=>Gw}cER|NP5pY@v>eJ0IHJ|%kNpL?k@NtEJUH|$BjGKL9 zGtOk*!#KR{EbTr0fp%$#yqI&MikdP*Yo{qet?6<{3%vLdOU?75V=oE~1507EBkL#M zH_7h;CAK>(N$)tWODyV^*EcKl`s3J8EZfb0M{Ouw>ZdEVGC%8q7rStA*+EQ`gajY^ zY=2SSjp51f#T{=<)u$P3E-NK{v#fjQ&p9yx@iwgw&PNVo}waIVQ0*T#In99`VWq{E0HG>!M! zp3UP=3(T5HDdd8Moce*3>E7L!#4U(_CXB4gkwPu>E8~2Wt%>QKeRv#UTl`kfoA)Uy zSdLz_c?hZ6)vw||6BY2bDV75Rpm`{dbJ1#`x9tvwvg_(6`y_QF*qXk1G^v=^Wr}?Z z{x(E11jrQ4#|U*zAC;D3O^y}mDfQcZhX|v5g8cTUJnye9ysI^uas6~-%}ONat}oM6 zXM2x=XP9)l(=2?+qy_EQFC|(l^TYcHNS*9brksPYoJ>&ml)i|;;ZzYsM_(R!bIm{8 zpHnD1YYSOAzJxLSPmG`L);u=s98{--t$T&OnDe?B`aATsTbqU9d=;+pv-uWCebQ!q z`)#NF9=fT{POMf{jZNn2=s`oiDC3h+>v`oo93y^#7B_zw4C9qOig%g1E)96=&$#T# zd#La>KSB@dKCUS4<*O$%%r1$ip`VQ0j9jr)oVpq!=c&)y34VQf`Cdij{&nkGNH&@q z6|pr0!rA|zd9FYv&a%vmS_wR%xCcCRfY6e6(j`x$HnC+ac5wm9zrQY>?T^3wPns8;{|l+jh`^+1pAx7w=jOG|&Pc?nd0uc+_agXis zKADNd3|cOMay(^+YxjUFyVpHEQ_45Lo<{Pp)8{GEZf+}qcL*1cin~yas_Av}DO>q; z8SP=BH|Vx}=gw%}yY(dpEre8d(|@UJBQb3B`M=2Cim4gmy`VtxFZ7}2gx!?^uik)G zrdds+6K&J*cTbXi93KJJ4}h@rGI<=tO;&P4>w}f2!0!@`9v{r%(RP}ahb*V^<@q(e zaw1NH0WN;BqSPeR+`JwsQkES=%bIlK#qU;o0;3h0EK!GENU2qJ?J_*4X1d~ZPDxJ3 zEI~1gXf-lRHRGDv+oNKx-w5@I&n2(+z@5W7;mf8)>_@--SHs3x_f$!K|CFh_z9l-w zr8{|agdgobdh6eNd$DpBP(ZZO;PGS_D^8n%4Tnp_W zJ~yni@hF+sS8(BF>G{Pd6(udpj4?fz=xMp>UhlDqWb1JkHFF0yGNP8AeA_{VQF6uf zx4ZN%mbbV~0XYHs8KzA`mE%s_9L-WzHp+`qd8Pw#Bmv>^N>;J z{y&2gO^f^Tu|D`lRcANW%;Q+zo#d_oyS{XmAw?3EJXC?Ym298t)TI2xxBkCUJ1W1b zo8nBaDWp^6*5i2fpdr8LOq=a1+?A$1;eSkJPZBe)9+P_xNM1gkPw3fLyPWp3Q@@{s z-Eur~`EQFUIdN_1yH}Y6XYcHXKMw*cCW1i&*Q54h>C!gcecwRqHiCeef=(ok$#l|$ zfeIms`=2N5X{jokHx-;tq8##5*t=zW?L65Lb$p;n z8b*<3$MPuIuCtDm#nsP9h;Sv^Ffr+27J{J3kNJmonVf4?J421|B#`Agrdjpwa)yg6 zIpkE(tU0Cl#hJh6!!+5~w(L$*Vn{tJ@G+y>9hgg*ML%p~4|7qMuR6_?FO5;=4O<21 ztL{rJk&gF4bK(FcEA@q*g8Sg_uSS%;A%0R&{pK%R%Uwh$6t~J++U!^X< z!!FLK4i$j&-8eZY4N?b7JgxLWntm2^veDER)vb}9Z036=^So-+EVN;g^08V%>6D)f zpZB_-A~WGWz!W%>yjZjxS)7M#8qif5n4 z7M#|;%IB{)(`+&(NyHD*+|mm9mf;MwshighSy?UBlfE2OK%I-ItK+x$3nJT;on?k; zm^kJT@uS!F9=zU^-upAH_{speP_gSpOD8m!;{U#y<3L=-hkf)H*`ZPu7uRWm>>@qw0F))8}?a`c-(Tzty z%}j11i0mr@{sjY5;JVLSIC77Jq8c_gY6N&@JDL@oJg|N@&yuu|WZsw*q?}I;GHvwr zflQh4D;jN1{_rnP@nFA3w?!0$5GtG6n#l#0qPBsr_$EHFZ@VDnee zg1$3*8$0jr!kE7ziDnj$ZNl{Qh1Q0!e%2yY4mY`O*wHseQk&(sNZnh5n z$an>#tiKHXmHo47(KAc#TE|@BpP(eo=eCGJ`8e45X#mp$wV}xur+%MzSG8@ts952e zRUe$?plboFd%S9qmEk>?n=kv)RC@0dZX)M+$i|5?-wPo!mUo;9sJcarc2RNG}}>{E??aiz-yyz9vjmMG|mzkwOrL*R1lJl?dq4}NQ)D< zHO0uD?1;qax7}eukdaOJ#xc5`1b+l5SzT_$+uH4cie84VZ|B-v+WvsI z{GUp(ufRGES7hUUGq&v(uEExl2fL?+?ET-x20pt2S`F=iwaJZDB$=3fe zD*|{~{lB1dy37ewN=$Yz&O;YHQp-($Eq+bKD4Ol$A9emcmI={#pOI)s>F~MwWTTdx zyrfA-2H7@Dg@0}JB#^7Hvn*%lBC3uNNu5l&h493x_F(Q!HjP(tG05(XA)_KRVt&7M z?8pI1`nB>W;{o!~sMK-Qh#CE@kCe3n!F z3R_GTppD4=59O^ahM1Yge<-N`p&V)67y?5!4HBfOW2k%t_AV+jJh8`qlDDU9W*_=* zRuh`ta@TqKwnGO{pY_--E7jvU7sdfQCEPAKS(A#1!kp(p1{5*TJFul57yCD+P&ok; zITYgt&^p&LE{NT+L|L$pduk%{%91$0Fpgce^i*(W?zMLER{<~y#%D7Y0wnFglm8sL5A~| z=6tra<<(G`y)=hrp}k+3ya{NC#C;2)+Brqt0%nceJz*k;B_Wx&c#7^<<}Wa%6+X%^{1exA@c&O11Tb2Aac%wFj%n#Z=m zl7R_p!te$ft2jHI`CjsjJ^F*INwEp*%5aTap{UQ;sLSYvW=ej?@0_1Ln_F{KmnvNL3 zMOoMKV-%Gru!QT+NihpXDbPd?ju0D0y|5n~#6#oN6%l#{b3lfz1D(a>tkHyMDeeh? zwMtT&d#Dv!`tB`q1S@rxhTK0X)WMWiE+}TU0Vgy*qTI)Al-E>z)W$Ai?#qayE>}NP zjf?S}in8DoD?*R>m!Y52sCq-^qtYO1^&WrTBF?C^&*4~*N)=zsWlT!F^=Ofl4cU8) z*U4nxTbxfcny{af#O(``ZkqVV5hkbO=F*w`1+(QlJds`%e`Vrj0Tb4wAEcmI>y09Z zSJl{2`TSQrrW&*9QWJEo3UZaYEKPyS=1a^NBv)er?S)!aL_rIQSo*aekr@t3zVogI;C)o&*|&$q2tH>UqB851bkNl;cX z^Janv?gTAsQ;Y--bc!3Yo!`7I7gqS@WgHh-vZdh8S*WJDz5U>f!E+jJ2Ekc6F#LSp z;I(@ma04Yc5ls)vL;bwH_8p_7(u2n3Vbc*(<8dX7eUbeL$aeMS`+hZ4hxblT#*vz9 z*mu+TvB;5X!vI^IyTI~D(^Y$Gvh7omQVD;(f{*Oe7TZYeJFaZ`p6a=4BO>j?G&85s)5{oI><<$B$ON54Id^Btb*@k!?3V4R)uDh(_a$ z0dg&@^h6u0DHXRk>#3hZ9?Gdt{ZY(n%qEKo=?OL^pACG2;>4;CE}0R6Owtw2eZQ$%f?4)KPbkjpQg*&a7agbAJa z&_+`iPP9#o>0m{EPtY@P^!fh8h@;n)vGjc}!kVuBG;Ja%eRsPfH203liSB0^FvxkZ zhjn>N^t#fC>II_w2)d+Pi}InULAAjXzhI*Z_Q&rfv31k}({Xmz*)1-)iH0QJC&BjA zaU|}`=1}bUH%o`QDl>mJm)j1PL+OeHws-R_DC-vpzjQyU=z1nq|0*WwfO=mcbzg%M z>%Xq?>8d-a)o!)Fb$?afMZgq|_+jZ7Fz>LVS#N}ofOYf4j5=(->Nv49fbx+h;QUo(7j7dj`9h9vPvEbbuHFC@DlwoMTAj2k zyADZU-5Z=JT&y)M|Fm}7a)abQamN{5EtMW7+ZK2LPs^iKS$jUr;$+QW(v@q)|E_xD z%3}hu2>0X>zed?hi+a@0_FRzfzww~veZwqIG1w7<;geaND67tY8 zGPd_bK$Iftz!nVm0KtQD9?T&y2H}otxvA7t8LPEObo?Yw1U?z|c@TVTc3y8O`G>!~ zH)*h2{o@zKZA&Vo@FCb^u^g@qTxIE8lqbBG_z>OBl`vTY1FnYM?x+JkjiCG~iuZBn z48*)H$#0@@h^ygRiWpB@ofN?L*Y^Mr!6)DEgfn}aO*U%4dAz)=+m+!Wz4pME?^%fSAKDenrI+>=VTY*xqa}bMF$F`p!A?qzO&*o=t8;GaW?iTV_ufZ)xQGlN z$s^LJSosgM;bPH1B4KHew@p22xaUuhsv-GT>YrXtdBIxBD5yE5x18M0@q!u~3BReM zJFXIvkbbx_q5*EFkf|KEq@T?Kr_kSvrudHEOn@AjsaqHrRFj1v=$!Vi^Un=C9X4># z{p5EH@?mJN+21aEyV1hnEozzaaX*QWfkl`a&RHWRTN8)ROlLT&QEo^TCpS>`CnPH? zRz8NWy>ONc^lt|@G#p)d#uCtyrITz#Y9QsWY11t zIf_1BC6*myW$zE(0JmpK?@*B(#b`kzm*Mi$vsRCT6bW@;^ZL0_(Eu>XdzwjaZT0}f zdeeSokaoX0_M$5-mcD>B*sZS3nUn#6bt;^rwZm~3PYHI2`B7vt_8ja%YyO`O zbS?5XC{%5zKEowWEj5?VvHf;#DJxNGu9!g_@Uo-y4m z73runDqg5kWb*7eS!tE<-Uq)EN9IP*H}6&bC=yMnWm%Kvem^Nc zIySLh3D{W^;a|Gtg3N0NsaqZKK~Y_9 zmGMe`9_O#gRH*KhZ{?N?Z0eCewTf zYO~8xlL9>8pa1$_)!aV>qTo`2uAs4E_Nbiin4L zde83L%NNbgWcTEDjL=HbEMHq1%@2j)lVG*w2S|}M(MNArv*oq+)ooQ;*Z%R@C_dS` zOVjCOLOJu`0QXYflA}1t&d{j8c&4QSnXL%_BFJYc;0~iwKAW|?ge!ibG=aTO1>~b; z{n4>9Gw{@Qc#>B)H_@q2@n}?f`Gs==mUHSBN_cBvqD*uG98@V!8gl4?5#ZQP^gNaz z-F{x+t}n#o*Jg9n>zu*3P<78ft?CqxVEU|UvGBr2gJZSthqQyHFw`jkfexlBzgURP zXr;Z&L(HoFDjOExN+C# zpgrnSVCGc%fOaaln=@56!a}AP(f_+Skk?WJbZT2mB>YdVtXi3dJoeQ!Lg)p8$Q)+0 zTIe%cUD;1LESJW5HT^KBW?7-5WN1IHAt#myMu|r%Y4c-4EQmPUEDU!Ur?j}s?!0yx4OYo%Q+OqTWh2E zSO~LHRQZugGUVT~-{!P?_s;*r)>{R|(Qwh)Bv?q0K!R(61qO$~B|va@hu|=Sy9d|7 zeSjeeE(1XZhv4oS90rHr7W6&y)nBLTT>KYZec9FBRl9rdz1Dh6%-TuL2J9Zxs^R?P zlH~h-$WkT03llV9n;(EY&0KohR$y*v7R_q8!Ai?pzz3(rlFywHw{RJk&wDRZWv>od z)_Tn2)5Baf%=kjQSti8Oc@?J`joJBD`myHGQYV;_Rx7vMfrbhSHrRKLC z0B^al#StGGH3sSCjQcd_4^sQbsLUfYP(*i$_x8L8jpx~4vv7-%Le#?k$o#Uyn-->Y z*T6uo#<~WR3;9Jlf=<7A=8ym*$F24^53+yQ+@H_*J}LB*r>nXMA5UzVc-SpKNLZmD zmZERG26H8&r3w{@y1%|O6=x#4XOS_kUJEXVT-ch9$6Jn_HvzDb*(bnYs@xnR|Gg45 z#JSwG;w}O{BT|!?_4>wNOauwvZRcAUDK)frlkMzu3i)#9I!UoFfl92$=_%|hUm0i?qO>Zv_ zA%Xmyq;}%8^&QjjDvvaS3^Cbp`7qJx4br9?O)l=g;OP$9!=;RZ?<(R2o;M?5Zb*UG zq#)OjQ-g+QVC%VD9B|^5u_2z2Xm$o*HmU9xw$t(NYQxpp01?;1fB2`$)8q+1GnfQR z)RMQen9%n`x#_5OJKk_ruwFn|`?=F9uNLGQI^^ceKRpQfD-u(EPu0CNN#=~ZeiKJa zpn?bgQ$Od_l`xo`VK2NX=MGsI`sO^hQ8x<{*&-?C0)6&P0hLz<_>&Lq7C>~CX%#7akY%oHkHD?19zLgEw+84`e%oD?Ip^r=Aau^$lptHZbzx79I-k)EC zw(JFl0G|#ViT*LmYO!Xq5ji(=hSg3b0Yv zM$ATSXYr}Ry&?Y&R!me_oXc<{CZg=JWKuPc7d=Zwbs3w2vJ5Ak;cbt3x`XuZ0OUy= zBHOQziavx;1I}{rk$RGp45VfcH@V6erxFbL9K_$fCPr!baDwG0SzqyVnV6~ zDMC}pr2_NV>;-BNlha(AK6eyc+Vx}CJCR>H)I)vBs;qCKQ+AmWWN_hK7`jW#(k$!g z7bhCA{(){?wP@E;D^&#KRYAx@1}tt?rN;O}ALkXR$7FQJqa!C(&;oE>sBXEv!SQ37DI3aH3i|+lDE<*J@c%t%Ap@$ z`hjtGQ%niu$8Kq!;Lk1R>4sx^o{_NW>eYjd{+FCUOs-IsxG0A>3)c5vtT6QgbWb$^I~eQNq-+Dq{4@D`AO*4u(AxGTkn0 zWKipNVhHc9Kc@ERxV;dPJv%9COLkblokm?+3Ek9gra$G2uIxixll!xZcQ60~Av{Fk z#T3YRKh{v=7$XrLA8*72lC?~)S?Y%;pBn%E)J>7(Sh*8vnkWVVO!UbWN53nqyn}%i zBoF3ms`*HXvX8T}4KBK6w}|77d0cNvN_07Kgk2$}fMs_>F-b}19CVti2X?8c+`8m^ zmBIz?KwqZ(PqC6i#@im1?xJ<0tOJcqdc&%yVv9G60~zZnbAwVc z5o|^@KbzOzDAbd6==cNHH} z94!l4i9TahC%2RLT<@bmBZs1DKO~WPSeNoG$y<%B>Ivsh8@w>U=;>8F??!RsrjCm2 zaXoUzcY~(6i!#k~C*EVpEOxZ5!$)G3cFO<;JX^~|9+}7@@urSQUy3S-hJWGTK-n5M z{Pfy0Eb>?a%?LSH#TIgOe-G~U>J&vMHWX&o8}a+etfUMw>Hnz{wfe-6AdhU*?AfG^ zH=N%$F)qr29W$Cc`}7coMD|Oh`#r(ncs-CLd9p(>mivT)mX9^LsY^{RO-orccGI!* z6FUAzHLEc_=I1fmYu7O z=1*yuv+r{n+-7UNK}!VEgEr=Kam8Uh2;V`hW$$8!s9b!jdCyN{PW5#Cm6RTmZKx*5 zc^dvh%g-euI4~WN=%&oWJ!-jflk;`utDV@EY-(k3>-sEe3%xt)g(|n${GgW@P2qOz zbRqD(k9~@Z>L`E=s8)K`Dw(!;n3~0$W$ndv&qUx<$cR+uh`rg$>rLExDDcl=YjV0bR;O7 zA4NMs4<`|DwM~FRWv)_lu+%1n7x9A5NxZwID4|D6^rAH7T1c0o&P)B9>o5|cr?>Sj zs&VbL4@~btr!ec~&f9V)p*!ExV6{!-YQtrM=%Tpd^2tm-Gi__l-2D+$5mWs1vjzA6 zRU{MqtQ3`?UWIrQxLB^{XF7p~{~0pL0=z~$UHCmE^7LnN|3kCrE)l}`4^7y!V)z0B z!b>9JGqk-B6+O!RJYNxE^l9j3k@sd_y=1To!RzqIH(fxPjn|6a9WgEgPRclwBXjIR z{Wc(KJ8!7-#OpRyev~-0Xev(H=`r7cJ zAD8;0TZgBMrE6++fA&$?oFAH-YLZO_dq-W+F!0(ZOzRu?x4VC@p~LJOYA_(SMXE(% zZ*vpocC}0Qnl}~Uieriu9l>X(jQYVrh$35}N_}eZ%UxfKO!i#cX$0R$ep*H)bkf77 z`Pi~>MzLCx2dv&N<#c>%-0N+{#fs-NQ0AKv;*|o<%a@cYbU+S+DMfdpUc&hcfAz}+ zXgL%xCb(g@%lH??FmRAr&b)WJCh+5KlaJq0PT&o8KQ`Vi-V949ycz?KMzWRC(;!e| zgk7{%u>Sspz}p?cKYLE5gcR&;nw8miBNq~{GyirW8C+bK!}K_ny(YQQtnlY_;*3oA zzMR~l+a3anPYhvfn>NdTR?Y^q9b|8@J_bo91YQ~`E+X45A3zu5Y8*nb{Us;C+$I@` z<#J`qY|)>;AwT;XULB|?=->aXrdF&c#`G^*xB||-Am>}?L>9&+YrgV^r3o1v2I3d< zR~JaHIQjF9*dc+DL+{SIfPjURPEg!(7`Gk(*j_%{xf9 zd%?)PPY?4#@<8i4$L5O(YF87RWH?FV>N~4ju|V*LD-mm1o-Zj9%)V4}fviXXr5Ph_ zkis6>0C0D{U@%qGZU!Ej7FeKbQ?wqB7IWKYOD#M9Lwa`S?% z7a5*Cm3>s$R!(uH%s)ZGP&qBiP!6A5sjxZbGQmms+t80x-|D~hH$UlpZjOPV&}W4J zp*!NB{i-<&WC*68CWIjoOqelQjc;T$x#`H4Qxs~$e*%e1Cwo|%qgV-qX{O3rCb_BK zR6Pt1LreJ6odMYljqxkjHlGzLSINY(cP1DV0gGxnD?5LoH`B7dKRqC~f>n{jT8w{A zP{=X+tqYls(>3`Zb!=m8T{wy;$c+lG>M)TNk>-+^-P~u~NT?jgTumRl(cUN)Cks!pbh?I1^tdb!m6^c5!z8J!LqwLzJNv;q zoUtl2C8cX7f!QAZK+A0-S#P!pm{CG_f^T(U5Q~rMdS3@|Z|WFE2Ch>9SAr5IJuN)o zKQzyZ{g(ab{^acx=WEF&(KPxFHPt-usUWDlTU8LMFjSo|vZ=QkkeG^OO{a{<%H)(* z+BoesQR<^W{?jt$0ecB2y~3Q02>@3fLwndejeRo$zSAhElu`*@bKayxzA%gDgeaA52kY_PQh?INs^T~!)=nB1t_wcC z+CG470oa4Q#MHv3G1SvDVy=S2+1;!0WE*Jl4;F6A7cbhEjxBpciO;8Rx}ZJ1F0_Qp z6Q1v4JaI;za_k?5UrCsCx8LfVvo};=wvSb=c@`eD@NZiMi7pH;nS~)lM2;miGFAdJ zkCV3v^Y84i>5BmeY9#jE{Fm&bN@V2nNIEpJ;C;X!X-kz&Q{xK%L5x`ou{30 zwq0I^C!H{HVSj(wKF|qbj-TJ4QKMO9-HWaiy;*)}-o)!<_9FPVFtS75hsqfpM?~p- zI~=Hp>0t{ZfGU|LR*(L>l*l8V4^Ww;J40X|54VORUV`4khQ9$RIX&Hu5q+CpbTaRPc=5VRBm*}8>!>6&@reB z_S38om)}ot7$6m8Bp$9>%lr?GCpT*Nv)2|w>fJ2(ZHgq*-yq_ErMp2%b3?NdI|}8LRH3Bm?P_ zzM;Q}Mmf9PfbI8pyDe_$tL(Sedxf678T62Q-N{_IY2wSUjbNjBXVCSvb)qZK>*8#uO~y&Z-@LubIRU59Pt0`= zk%bt~7uoRLnI7=gZ@Jx2H&u1`=yNl;f#UmqrM>M*RJ--|mm+(%$ zfc8y8zOP=>;~0)>rXt`a?k&EWLcI!XjvTAIR67m#=~q?a>l>L7C$=3;{{G4Ao8tDD z(TDB>CBSCT66#5n`_h33uoofAvMdHa?2P}HLxD1MFK$xF+!-ALVllQwQxRhXYg@Ol)?VY$JR!MRn zRIr15HlQF4fT`mPK7#uJ2j3vNE=M%vvsON&PdF6vJM_$6t|154)lk4;lVV%>&M?s$ z$3Rrx)QwLS*sdF8bF3E+_`lxkhwa={onl&`?UGMJ|IIFCfC5$Gqbi!Zt0By@j`rWb zxaSAr#~x7*dIErUm>K;&AX_XpDokBr2u>Pff=-X6HCZ-T?$-ZVyuN^rwF&v7Ys|nW zL3rkiY)e|WEd7ez1NWF=f>@!>53I+p+KSbmrg>#*#8?ij0$I1l95Eson_~H?b#gFt zN^wb9`*AdlJ^w8BDeq}=@49-CMDjJX%7Xb1-;VQq51FAa@~G=ESa=&^I1OJ>F&;>v zuF!v`t5u5QWzp*3%=WqlPE7>!Uw~?&FQF&DMIFXLS2})9IViu?`H&}9BwGvtt+)#- zwbYW4y&;QhlQ*@*>l4g0d(qSvF%0Og*L`{&GhaK<$3E})dG)zJnHZ@|WWnTDNk=&S zOTbjXP~tS29=N^niqldVBsDfzUybU*=p%Vs!|U;a5Y?2`zs}iA*kL`EN(GP0ZJ2HXcT{F6e))tVIs)1E-eEN>=y!~UM2Q)d_^s!6Ejhw+sM{7)tJ(fTW7`zBkndkF zA?`7iyb*bbMt6EUJcx4|7W+ic)V1T2D|$AY3A}YPx)+ZkR#4?pzG|n}Z#>5=vwq2v zc`DP&C}*jfv9Nn!oERCP3^kBP{i$2ph+7Yc)R?44!mTU$LZ{WZir-kv_XRlFXUugj zXHlH8Y(|G1QXIbFKdT+OMO@fzY$EOK1I`-wQ+ z(?$9%z!1Fjs-6kEUAsAF4_Wb4KukG`GvRj}58yT)I;St>CmMavTg-hI3?>n?n3s2x zin{KCi^*AEqcW+@dGx)6s{9^gFBmP!9cUJ-{2r^k#3}j81Pq3uQ~3GnvJSX}Y6+*W zU#W|y>n=@&EFr6wKlUVDM@GeC^Pi06VQn4X#^4B2*0Gb#Aq5pS<#%Gj+M%{3_AYhmLYdtnr;n9d1$ ztMQiubJP&1 zb;4bhDvK!&MskfDHJKOun6uXh2XB&WkC$Je3U`F1I?AaE$5iCv+BAPVXhx0*x?T1g zWtt}r;HXap5vDC|D!ofu9D=8k-0U_{Q);EEcV-O=i?oz;^R>tNDL-2D(n&;xw}P=~;!66elc6@l*>Gp~Q_O~YTu zH;HK+WCCWdDi>w9#+Xu(pMcIBBzGLcBvu1d{&S0tO@ee!fb-_5vWU`64Z{JrCq0Fo zn@=&>3$i{?oEy$yF(0|;3&Zl>KSMs;liGM>7`qLO(YM5k`T|~6P){cS`H&-(!$~yp zdIp_mWxJ7-iK<7^=+v=E6B@;u2PX~U0K$3|G`VijpGyB`@Sm*A3xCfl z11-gKhr9AWcAK`WTA6JKwSo(FBTy~Lh9zIh;OKIK`*j&x9)?T~wP5iO>mY%ch#pPm z_sr2_2PglsZXCRPn&lX`*PM!U-ESsEJ6BAzmu&jtfU+kmsS+AJK-n=D&hqyoR zTtnK+bOn9kK>M0>^h@b(o#I2@blGroQp;E`Hrd1CUhLAZwuF;;A;J#X4X2HBV~s|J zC?{B&w9`UkO(*1SqmYBhYB*JEN)+{FRI zlQK-kvip|~`^Oy8!DKIalaq6GnIVtDje`p}TSWcM$?n10e)zj3A;U?2ujd+@#$QRK zyPKaA*WM2!NE>(lII;kEN2C&X7n&+`8#NCa648n zOp!cPvF?`MqK7^ySp10X>2DL;A1T>Q;Ls!2R{|WtSvQ@`0|uKr1Agr-wNpy{4%Ctl z^);cep%qje5KrHm?u%fE&FNX%hBDp=f$a%S-@fJXr|oVF7(u6+z}=H&QI&}OYmeim zr1iU5lwWv30@XE%0sH_*ln1yjCNg~C?+}#C#Hf_3E(Uzepl@9_< zNKAak+^*1zUPz;lpYyF8+j-yiaO=1LVdwq4&S38PDDyaKx9`-7s!9+APQ0NjpeHvG z1S&3U5Xq#It5y5ke93Lhg#oIOtw2v_8SKKUKySm$>V5?m<7bpx^3!R}u_F75>06uQ z)|5^vxLOAzk(D0aTA3xy`0y6ueq_QO^Lpb&m~xJ?!Uy(X)la)0^^N-eApa&TPtmxd zgzm)ihW)S5AP~<=<~kHpI9XRqnJWPQpQ|ykBV*@!@sTt78mrdEk! zQn1C&$BKT0^UKH2^MAki^`&hr_ilp-yx$EqrpT?26HIrEd@2i22K4_7O^6qtK-`+e zT$0^$mqex!GqWg}I!o}9BITkz-{fQb?!^*zv6qlOt?>Fw)#=4g2z2+6oswF^7(k2`+UbHyP7eY! zwIrx97HK(ij+SE6pI1*@qHe&JyJsdP9+~qL@6>#_&!bqlL4<;8W##wzJSRl!g)p~gd#g4u?m95GC)?9*h8^=aQky=Ug1aD-Zo{l zg=;EoZp6o&p>gJfJgL0(Wnn^_p7+L>#4rMSq3@+QaO+01F9&+$jSi}o(vNN`!I+LU zIliZri*R#^ACEM6Zw+d80tuu=36(+}C?1Qs#6Eh{%_(rP9J{c)G$1CHzh zYLt&YZqM0N%f68!rj&KVZy5{8BJ^?JjSE)&2?bD^v_>hUP$q*?mAB)MyU1t|s4ibl ztAEVp3Z!+D&XxjthLs4EvfYq6I{qGI#ip~!cBGFIse`6!&-MR2`p~G)K)y2UW^|-u zp4Hyj=Ub;B;cdBbB*;3Z=^cOd+?EiDg-5cEEVXRpF%BNNfL*gA(!w}!SOY;iUm3c@ z0ML`Y@0mQRvT;WJN%2j@ur4Jodhe^UCC##w-VpW5A^Kc20>3m*RgHZ~z7Mmw?ned} z07K=JFUwY1UBm@!KY0QH{Kyl5EkR&CN8b4BcxKP$RoOq1y6{4@x8S%L&%4Ua2BRdr z*2v!648f}M?oCc}1xq1Waw>~93|1pR{K0zhi{V;&X1(rrf#n?s>tlp?{9Q zf?+Og1_u<4Eylv_Ig(s2qVLSeSp#K!pXReY3kHjkA8RsLA!=*YlA(JaGfw8I4X2Lx z#uv8So;GJnc1(Po?6uII(pBu+7o7RNY!p_{Zmh{v@R}h(#pR`O<53bDM%U%li~rP@?dI!dpOA*9UBkrD|ykHVlc2l4ZlnaGH`MUB>$1 ztFq?B*X$s-g#^U4ektE z$~7}75ESYzj=jAD`3fAT{E%~@L&RQ2;vMTWA2W@cTr-a9Gj(oOw8 zG<@FJxL!Yhv(Kq=89q@f=%w%&wa=_vKf0t;U(q3dlNM#`-rp{)_pWcELb?1;LT^k* zHzbFSlI7=Y)$1P^w>_3+7h_P%C9 zCQlI=Q~BV^T=PA&h!d+#*e{1We3s)6->nmfNwasskRg8EQx+sm_`aLl=u7hVtytsf z8A@n-CoQ!99GJ3VKgPlwAi)!|E=c@Kjs}rh_AgY7$C*{0!NrdY-Tnz=lgUwn51hUs zir2Hc65O`}`%Y`WXgS-WFET_l8aoXz%(eTCPfvcHbUDrNTuq%Md_1gl=hIy?j~V^8 zj-G(nRpk(-zbsFqew~nZ-RR6K1xSf&6x=J)ZOOeml##s2ueVD06#u3{2|aeW^AHt{ zQ=fb{i4FtPkMq}d_>z~wuX*1&h(3L4ig2QYxVeFJBkM9n^*DB2T2qj+WOr%^j}DsF z5Qkm@gb5Bq2bLR{c+{(xiT@c`QgYx`w+x({Uk7|2>R-{*A-Ss;c3aRTZvJ6&3?I*U zn?eUbWKzp1rW=h25%=5O&qB2s8MN38?$896cum;u+bdlvBdvPM026EXdTwRp75SEt z1CwxUz#{xH{@sTl1YHv3g#py@-mH^B8GTi9eC9weX*-q;R(fSW&KsL%GQ%MQcs<>a zmaFU8asmg~UB+&}Ev@9L_rX<5m>7)R-zvQJ#l9)-5%fHqNK9`&#(OJplVv7lCPfb-M-=;h=D0asS_N|gHg+0dq@qY&Hru^)Hv&8bg_w7L+H)4ifjr0-W>M@r2 zco-XJCTxDkF4Z{<1ZQyXmRR{L7E=^|e6v{b=Z76?&uoF(cN~Z?PO&@vZ=^QxMzzS8%@Z_l>i>K4?o5-WepfR*5`*iI z;C=eTPj5Zt#}VyoqF7evnu&UWRHm89zoOG=1++1tDu>B<@Apu?LTlE*SAG0Y`-<)R`)^t*qwxdq-6w7t=qSm2L|03rrg*Gojhla=rep<@o!(L&xB!fz%VKpt~Q*m+-pq3!o{X9|0Nr%be zhVF>(r`a3BVG~uQ5yGlo+H@r9Utv9V^|)jGkma3o2$5fG7`CBBHXl*IG@(uOQNT~ z(MCoYBFZeD{wcU0=U4}V=hln$RroD|Vd+q@VH@@QUz)|8hC3{6ov$fbY4Qp<-JyPZ zGPZB^`IGN;SRCW9y3aL>CK+We)*fOu$8;Qu`7a=B5OJr6mKP>a0eaw`ks%9u$Yli< z`8Dy9T}$+=W6xXZA4@A=ZI_qYU-P!?i03o(nM&xvj+~``Ae>|zme{{8E7i{zk_u8+ z%d=g@8#4Alb;0BDh{=`%O`K! zVB1Yl&GIh=&RtjFtje2*ViPO-aNFd*y6il317{w+Eh$vvuM#duJo(|DowO#lbLDhC zKn1$P#Cj75b~@bVHVG?1*qZtHA(!?)-KBl=&>f4+z{UP%=C_@jw$8nw8E-Gd0$2FU zse?Ae)KGacZ`&pIFwfqRv{_pMxq>T!8G|F~v6`)I`~|&r`Bf+(v3eh~dC0a5`8{&T~~kkOhdBh1zFlAx)SvFU9}55m_e z>YV#g$jxKo?dm|8F|`bwVU~FQ(jF>lirnHavXUQB@W%-=S4 zqzSXe8L-z+QKdwQbBX;wG#^H^q@ZWNkl1_NM!qsger=JihKA|!Gv!S>0{m0-ZxB9= zgb1#iYv_L)$dReW8+#Vj1D7+L*90sB;zZ=-Q`}wO4K%;FOCu7r;59vU#7}W_{A>DB zla3zZgm%UybgJ7%ax2bqrkdmB)UoI(Ru1e5=G`UU6Tho;bg?(3YSq6Mv!E8frLkZL z-cHmo6?e?GxHQ(Q1+7301rAz;?9A!IiYU^iK_(_Guy5yK-Sf#tJ*5XXC!@4hqv0KW zXcvJ(eZKsF!$AM8Ow#8Uvl(4@SGQcwabIcMhOjz}VdU()K1G@-A3hEHg$gh1Q!zq( zAXKGet6j^1j(c~s5;^9kG=(->)|^cVv3SI{%%T6&^ZSP!9h-&_6(Q0-MVA&yZWX(l z2FV`o2Z)tt0&H0ZnF(Pf;{TyVa4>c0^qFsJ63BxVGQTB1kl?$9F9oXjaxIpt<`l{7 zVFnMvS?C1I3DEiFw!xb&o|d*Y{_NgjMvBwsQ-9~z(D21Cw=gHl%GQBH`_Fu}GkmQ+ z92jG)9AqK63mVq`_(k^Az099B2oJ>(cO2HCeUlZeP2qpnQck?PH9&)M0l3b*&4ppUMa#A7ma{a~Fx*yt*QV_X97r>{YD`r2bg^3NIuQ_2cm6;nzV z8_?mOUqgK&d9`h5S&-H88$ZfZYL7qW@!z2Hm|mk(>BNP;KvvLZJ?O#lAd7@Tg_g;x z=CSq%MnCYx4uZeV)>w+(mZ-+!bkRnL9Aa};9%b?y#z|7rseFf2`RkgXcsPN$Ny8&G zzgxJ#-Ues)hfcKxuZo_TM7O=FOh1LN2`9NiH!Jr@D<=Q34f_lOi^vr&MjZXT7#*3A zZ(jI~Vg&N@d*g#XO%)!^x4co&q--T^>~I+^IOXm?RRw%p?Cz{Qy0oY*O;IQaBa}+> zWmGf-R{LK!lO^@!tzxQ}`%tK=NP39Q(c!nv#1I+vP?1EkXi*knpXw?wRgK%N@}D*$ zLBsCk%VUfXOD}H7Y>NlxPjOp~L)Jt6G|FG@`i+*;5ke|uB#sVU(z&lQ*3}GnA_77F zWMnWm8OJ3VY=Wd$H&tFsVo*U(4M48PGxevw=+4`6IOaI4s$n|1Yx}Xe>iObR75#_L z_aO!+j{WL8EzG|=eohn3$;DuhW0)~l%*+ns#M&)9>r^Mz#UYgE6)?Tj zCy)U*810p41hI@q&Y%nC><>Aa39_nxNK3|3`YM<>f_Oxilt0I`(PB8YfUy5XWgSwX zWaa17?8S@KWG(w8QORdyhM4M<-tXF1Za=VuuZVMc|3hP~;ps(|S9?pt>V(hL1z5_%*?>p*Ma@OYHeZ z;@vkVHD0Eo2vm`_vw7g)4;GwootT}4iJr5yL|iJky0ao4&uW(<#Wfx2TqF#yB!01W z*R#y}DTrk{KAYM?FYoaQ7W>w2F0TJW3l97kkv^QC<-b61p0C?6Ey`_kZ@ryCO0-%i ztFJ~!Gq-L`tjp*cW}Kf;1$S)Y^>p@nKjITK;+Vb~lWR`U$PD-SgE=e4HZs<|f zkJ0JT&AHM34m&u>yEiGB{FkXpX2|E79Q2TSHC5eolNg=<&eOU6e+)+JH)5^*Wpr+p zhkuw+#?lE`_nyYD#te@Ojt})ItL)nGF|DEmity5-rElT%kvK5>xCFAKzd^;NO6Sb- z83M9K@s&jiZ^j9Tk(@%Q|={f3oMk87SWv|$3rO^KLCUsJ6?ACK40x30rPdyLU;rxIB**VZy znry|38`@;fZm6XNC_J*7P}D#x*E%PWuYSniGCnK6-x%f@dlJ}cx`K|49EH7CE^;b9 z39^_1ejMi$R5Hw6+ewbv{NOmBx?Od{|0fc<)m7Gl@1{&!XYe9sl2jBe#p?%5ksXOJ z;KwaSkBNC>!#R?Pm}~TbEP_W2J@o~C2cMQGlxV1X>wTTE!)y{c>x6uT6Euq7@Wax?n{gL|U|MMCY0Ex4?ib zgVWcGgZMA48onvE62x4!Hm8tPg$?e3f=g1(QgueS>#b(X#DtfnCsDa>J3k9OO7q$vZ4WXPuS)^F&NL*Rq@o{&np=?DV zRa(`x>j_j3QS(!e2;J5~d?t(afNNMS{2=~;o&~$=%HT^_6#U^s4E{>joMHzF(hjoO zebL;H?XC@s_pu+XDUY#XW>h1iX)a##i3GMLEYVn9esOMAL;q3buGJ=B*w(j@^{4-3 zLMODlNLBx#T5I?GF184(boipZ9WVS`iAQNys&vzxZ0Ihr1Y!P))?FMQXZ!_f6O8WD zgWs!t(c&wrhkK}~t9%zbcZk%ynQo7E@L1&7#&-I~x-iS9L8bHyA6u}q)WcEIf_~w^ zP|te}bpPfq9H`g2$1}*$0<+M( z=@BHiiX2{8Thp~U50aasDip0~vYSg8j=*CikI^rKC?WUc(7uXuBJZXKzlpc8j>F$Nx@AW&kDpx05?!w|jCLv6?O*d0Dq z28JvEkoOFjkQi8#2>2wL5R`6WNz^=`xSXSGKuP6311++B&r43TlEIkO^ z>i=p997FW#eZa(r&X@4+LJG||m8_=j+TE5~Zs0nR(Z6?6&y($;NF=5!xserqkJy>~ zR&4d=M9dOrtf+)%1iuiaug%hG+*tik(#c{w2YN@a}KPp0m0Pv+G=CW7C9#C)oT+ zKryrUjbM}#!Kn<#YM?*0K-@FGoNFc6eaW|Y*A6=L=KIABmWV3v!djba0qjCIXV`|P zSx85a;lfpI?qjT&>N(v&5|b-A)njV{w`u-H;+rF-O(CauQZ2Jk$8`(4%xAIfqqh4{ zz%|IjB|sn|-dK3v%k*;Ypyq7c^O9mBZ?&TC-DYC%Vh}Cx-(uSeCK-2RKh8D%e7Tv= z(n4>`*ltOcG~2CKx=>^Hr%v>e$=AK-j%_4M+f&PE?=e@fZ_h7-gvQi1opBmt+MXIe zt`84rujW1j+Z{MeD741FYg7j&C5hw1KI=tT9Zeuw8NkcSIqz3X7+OibJcLbm=rMJEMQH+YnC6xt*G7m{FlvtPG2d@NQ!|L2eNDk%JCt2S*uS6SHF2o+3Tu*X7s89rdLDpbkh0T8-205U^z8q-F{nzmep zQ2I{6X;D6ndhmltNT56WENg>Z7L!zG__$x{fa1;FGofiuah~FTXnk(>8d;AA7XIqp zFJ?o%-4lxf*6c$ILMmajgw`S@1$y2~LqW_X3R}DsUaL~8UJs+3m_D_fkwJ{JdnQaL z&u^O4gSK+{-F(Y`lRCC>Zi-2$&ISk}s!tYkMiVv^>78(Jc>?9DG%vNA1BGX0Dq4D- ztzxQ){k~ICeS;wmNhPrRCc@_T{>J(G#nJ$XvN)T9jf75cBqFr(L_69kni|#xS{ZU~ zQ>IMszZpU|*XW6(GKk)4YAoKII&1BTES>^=nLDygEnZzRzPU)~5j@atuQ+O#*wl^R zG{ft$t1r|bQ}5>R?hc7K4~3ME;&p?8RL9Q4ZUB{2m&t6epUAF%Wp4ZaSt&2Z&lgkRa2mjzZkOJS&nVl%P8p{5qNH~ww2t_R+b5}! z>*BwVrDt^3(~q-J{jTV5a%IwRzHL$sy+wwmQNnMp_S{=+Hq+Op!z^Qfioz#v(Z7@> z#~bCXGVN-nHU9*}!?x7$jxxNJN=ugJoKjxJTrAtO{dN040TTx7`EWCV_}7p4r9ya{ zS5eSjOb7k;Yw4|P#c=4J8f|LD#F1_DqmPwY2^s!X^46nxbsa+L?UW;2O45}b0b)rX zt$Ys-VljBBPFR<91x%_6a)gGGJO@$)B^yA}5SupexpjE7YYX)~6Jb5-FbERdj8oPI#`HNY|#+?|i9aiC1YkKu15F z6jzm<;V4$ZRjpDf$}!RQ9vX606mOw=dmzuAfFD|VSOxj_>~Y9Dv5F|K$G*E+Q%N)E z`Bm8^mb-hQ&nraYa>Hp862J`h=Di_G&u<)@63Q6k)QTvt8;NLAjT$xM6r}HVy4uCj zZMKS%@J&GPiYTv*rtXfGR(8p#nXqW0yAdL8;+WEKXri@93i5JlNYrefiva=QL4L(o18R;OHlQMZL<} zkA|N6Rax1TLx34M$*hb08tYHnv>C$_fQy}@-ij+J(u-HIZZuSu_btaXO@asq>rsoz?yeR%QJFUcE(SvL z-ij$wij=iGX*W`&VBUNfrfo?TWqON-mtE`!O8$gGKmI|&Ny3!W6koDhuQvYx$o$(8m|`lq!gA5clp+n` zn@gV&S!xe=bXk16g#{TvI4Td*iofG8i~5(u-9PO1D<+jBK<=}KV#45cEO-E7iYt7- z3ri6~rZ&3fsY+IhcG+7)kLz`*MbLz;8E$c!CW#)Q9h{o2>q4A;nipN+(>#Ic&3cZT z<1H@2%KrdLgTnS2ddVB`ut%-zJI%!<-585|G((QD;9{W$z?X4Q& z-bRuLf|)@8jmI4It_J?&OaB0bemnguP?pbDn<85qb=ZrBz`^$%(M5fxO9xjer76k2 zS+%aWSJ~fvkDSe#jxM87TE%`x8F6`as?8eQTuE^G+NMV*8SPy-(XRY4;rqGoV^=Qz zTENG09E@)IiYTvpIK)d2Ukihzl7&aAw`R8Ox#3gylWf74UbrH}K;L9Gfl4$iRPSDo z{`b9oPoemF_VeMUou@~2E~L81U$|jazKMxIRT0PE*Ji5BWa9(R|L6k+eY3<*fS8w328>frBPpw$nDvMhP zqg8FYSUyUy`V3J;eq`}gb8H=KMlthB5mx!L>-~j14l12G3elU@dLzZZXl-v>vGIqL zmr`3=V-a~XFfHH12NQxVt+fxNGBtV1Wc{ED*GVy9SpexCVE3cb5?I@w@N+ z-gjo!nzd%;-?`Q2^s2L~cAfn^XRY4VRp;;g-*o`4vb>T!00992KzR88{%!#5<@_9M z0RSZ>Rsb3R0008;5rF@g{&n&oAOdh-bl#WK;Um(&#-v~Le?-UL&CA!u*_oD`lSi17 z8-NHv%z5=Mk9NeDIRDnof&bNJ2l+(i6&C-U`%FTt#&%&LHhm)HN z0G9A`x3F@u@uIb~v2$>R(4DpYq@#7PhR_)ZsBx>g%h=dEC+iCEJ~ zh|_}oMEzXcU2ME8X#HHAU7@0W5W0T_7k$zH8Rnv+{g;cE6NJuCO_Nr}&C`aKpOc@H zo8twz4=>$I3{PuYQEgfIe@A$^g3$eYslL9xoW6XVZk~2rJR%|@T->}|yu2JQ9vo1A zS1$`c4p%7s|BfJQ1GVyWaQAX>bEW+!qJ^cKw-VNYuPWvDE z4+H;U;6Dufhk^ev@E->L|Hr`pWN|EfsBTXjD&=Y zj*5zchKY`eiGhxRfrX8ai-nDcje&tnjEhG=NJK=0i9KAL!iyeT3hm8N4M+${N%L0|ogOE2gF&B+qy0()@d*U3# zXXzRC3Z0mQl#HB#k%^gwm0v(mNLWNvMpjNgDa@ z>*pU3{vjgraMs{MG71goXbCBu2Ao zIZf!ZwyHJRb}Kyb6rSU2aMhOy9&9ri1<#x*JpqL&149uV^n{5yivf1yI*7y)-H`z8 z^t5VJ8bO5}oq@s-q_^G$(FDUdIZUxSwL)}ja1^C2s+JMv^{NfHKk!JKwYDqo%ogJD zphL+I<*gB$+oAQL{|l&=i|`m-<3!jJp@mKNdN0knkX(OOStF6x{3v zyv@St%MOXNx)Lnf(Ki*z(dVMZH}3h@|!8H~em%|W5vE2b*5O{7Du1#g`b&ZifMP>Bfmw2)9Bh80qT zpzu1(3HpEZdRMJ8MhHVW4o%)?8E^0Ke6OA+ps(THqRGa~Zv#DpW!+XRSlBpUi#$0M z`pp`4Gm`GXSwG+UKZKZGGv;Yxq(ySK{P9@LUsRWT)7LOLfHq*244VO(xG?yfkPQgL zd@?O2C+ZyaFD|{@O2Eb50Z?9VQ$ByZs>BF1TP7Ntn=Ln6Bpuj__0CTTmE<-Dj0q1E zhbZ4rKI$HznXXf2AO$L}+oqXXDvV7}4`k}vW$032i%ysEw%_Jh(k0KsS>JHzK|`m0 z?kN2nK3L343R<`;02WwlEAHlT8pdL?M0{JVKXw5!79b5{?nTGHU+XKdRO~p?B6`|K zIP~=`MF~jOVkCSf{PPD?0v1Gpf{J%XS{16oC+hNBOD#DQ_rp_$Kq^g(+FA)}9*WI*axo5 z^|u85Oohf#z!b`?tGVb;2toi)o{$yRU-V&${Sw{dGfBpAge?6Md$Yv~2ZQXw>$fFa zT4P%2>gK01X3~Lsq_>oM zp#2@8=E{u#UkT+G71fWJ_l&xe(n=_>)-1q z%_huo8GFJ6{={Y01)=$y7M)2&^fomJg1`i8($sx=k%cs6I78U%~MN% z5TH=UERigViHRPdUBWIROkYzVB)g8w9e780{ni~CZ|s9xvMGcqEZ$O_ zx&rIDiWV%=paS+ySQ<`t97~_pqjrr!bkf8raP$nR02UH6f*15R zc_}04Q;@vNZ3Ne`6&w*c#T_RkjZ<_~4AcsO(25yT%lm*drh3z_mk>V*ei#otm zv+l+6L5qQ|tXWPh63-A*PGpFIU*~2~>crNb1O1U!KKr}WJqV9cgJmLRX#@0YrK}PF z*sJmrTXB82!V$-Xf1}dE&vKDBN!XHtMi3j7Y+oY#_2LfYMMp91s{i_Q6txL3QN#XS z<5ndSEE>E`Fk%$REqbLIt(dwnXGJ!Q2wLf&+_s`_-h+HUkR9noCg%>x@g*BEks$+@ zJk=Vx4@n_W(l|Cz*pY%Lr#OgbSBVmY^youy0-PK!hCGWM#>h^je@H&GJnE&5BZHr% z6CJ))-#W-#(tLr{2PLVpti#fX0@!IRg93FYazS=Y&KFXJLoBw3UjwrqgNY`^EfMujULjS)_Q^ALazTSw7LNw|{Bd}A_tRXMgVJ9rI! zZBF@T&9DXV+uKrHo96zlsmXAPa_X1q%3g}5*4A*t*z25v{t~moCTp*9;)&19QV&_z zOoeikoEtt>?!tQ#af%(%watl25b2xiUY;*ciQ6HuJXtjQ;$c~MDHDS4=6`=r%?Z1D z)kgYm9q|6_yS+4_Y{hcw_D`R3eUKrAn7lfwHmY&Da{Y&`oTChTSxI!*cY>o;I6|CY zh!DX;pdKJUVHrEyLq7+3O#YzbkhN602WMlf2x^e?pd5m5+fSsJnOua1$#<`t7~YoU zeU#XX#)~2kfE?(nx{Yb5?mf=r5}5GDUd_b@1UYH{VoRK+oRzL)p+W;Aq8iuPi7$L% z_h^HQ2o#v-*&$auw)%!YbC^4kHH|c8m3r2hMs)Krt3?N{XTkkOh<5)12rX+aTuVz2 z@yKl2O(t*^oaZmvL(DEa zGAFQC!@lNJ*gt7{47VeO|$5w|cbTL(^|79VJBm+!m} z7pN?>|6;tG?_y>13ckD1<3N4~y1S;nnO!sXQ|aWTP+AWra;$x-JO143K;WxKzxys= z8%Mc$q5LDq7+4mB`J9qpd{DQ>hepRqlIj|rKNGe7p0TO@jsHfRiOdwkgx7;trClJ# z08x4l#(b%zdhp|ox!9{}E@v+%e`)%PKwm+k^v^t2M@hj6d5;S?36-}h7|4IF`<{az z_7IjxADeXUar!C^&8l((UF@Ll8Qveh0iHF{%OD!yub#npy6P!DUktd}F(*5-w&mliCm)gPvM zJk&neQ5ahNEE$^;Xt-cocliqlXHV9fa+Pn&8)*5h$`ToShn-(65Ow}@bEZGi9E(kt z#%+S^Vn<~#2JEik=J;sP{e!tN(jdAM|1UrxYtzY+mv?Ptj5?kA&y^W}K6=^yek{G% zSMmtkz2@Qqo7RjwnwU2z6}GmsPt>Znqu{}c&sJ_#Yr&2eit1#at7diT!$eRg3wt{k zvb<^62QA|5H>3)kwD)$l1o+=x9Oz5OwMay08}P_6e0vaa#yc@M_F^mV4->ZJRTKNP z9_v2IvlY5_WGqhYWOx?7Vob4~^SKEXVTsc2`q}JYk!ZBI>~JDmaMtKXH=7aWevelI z!O6MXOddb@Kv)TNf5-G&@T* z7&i1vN4vqVF@dj%7BAU6+xLBjPv*NhUl#j#f_4L(^e`UH2(r)}-}T^|vf0csr+{|V znxpsR7q1clmz>i*!_AbqqSjWVkG53>+A5!~Q_zfP#QpNS{{rSk!xw|97N5Bh2o@DV zaX;ctOs5we@eQ-6XO3v_>lfb6*%3GhE{bJ|G}eDsBBd;~=~qnzm0FTFf`Z#Hx{{krMJ`^l!4mcQ541L*C0yH(~`G44hb)9*ki^=31YzV6r3d~!m z895C*6~F3M3hj8c?HD>}VOxKTV=?F%tc)R{SV8|t2Nt{-p9c?KxT zy$_5UFU67o4{~p!6=w+Hd`tY~bb|@(YG)tWmyO7F1_nDz!$QQ*v(=jzcKDz4EZ*2sA@#(3C+^Qt0P0% zBn?l%acr#Erc7uiqYKR?MnKPQf7eX*{CTFy^mI|avy-|3@?#m8^lSBdnG~7x#t*Hd z)lx$36e^pCPjWyIykMqW|Ihk>OO89sT*6r>_T&=mGys<+wI7rK@Lk7|Qn73$XMRN+ zdnO_lFUfLph-*eK@$}gMX z(YN}&@d~g^VYY-$m{=M}8m~}ogzSb!c{L@gf$rVx_{Cp9*cs4q0$i=EVBc-q%hiR!kGUL}gKSQeh+U{xrbq`KQG}}V);BdJ} ziX0UM(R;-Z1Q~4TlmKu!J6E1>4zV>D-H&doC*Xa4iK#jV|8GU3MSqE?kO4WW!L92m zS;kk(>JYX)22{e#L%m@Y5q6#{>a^kyqbk<$W$lH~*Lq9+CFS<}Z_t}XN|ZM|gu zR?}X?FpFNnEConE9t zV6wP0!n{CuI!HipHx!$IT0@t+avbWYJo>BMx2W;?6;goyS?uxVx6E!5;#v@~@1h4g z$$gPoTa?7z+>RMeZy-{p>bZO^y1&-){HFro>6iXr!IxCtzpCxv50V&O|^iSfff3$2E|b6;irAcJniBOJY_Rp+X* zHe;Rn-Tz%hxqHpNFVMB>mAIum-)h^6{-pK20;UZ*g_%Qlm!JC4NrgsQ=BAW2i@BSb+6zmJpw1aW+Sk0VKI2 z=>X0@$047`=>qHq;jKtRZ~X^WsWi0nT@{^U33NAR^!xQ^fia-A+C*5s^*&bNWIi&1 zEDCqe`ntQPXqcQoJl(_BCXn*h6D)+6Rh~;*T^VSbzAkn~;>WpVJj1aS`8d01!G3@) zHjMa<+Y$$9oi}_xsN9>$3?iUl&E)M`9Hr*`7&kq+V5C@+%3vk=#{N#AXA ztO>Hiq&h=AZ6Ym|A7z-xZYvGYZ_i}nNq{k~;6Qt|AgQk6!kZ!l6~uDh-$z6i1SlAAlKz*!;KdoqV-!KNS+c@~?pNO3PFfU5tfg4KTD9KvR~5m=(Sp)cLW z_52MGBj%0Jb|SCQv+CPD4*)b)+okHf;~2-O%hsS3okNz;$>wV$etSBb(XDjBQ9r`SCzze?za${3C#V_;@cje%s3 z@!m*+D}r>j=ExlC_*|1C4Gt{5Kq-(o+s(m~)KbrKm)NR-^tIJ^&B&z@)U3j#H} zU@w~{_JP`;3mHPbNC_%dRZ82B6RcX~1vw3JR2W9J(=Ju@M{G(7OS#Qgt`yK_3HF8U zJx~~GN#!5$Tjsgr)}BS#J9lpUVEcn2ejjwfOLz1KyT zDn9pssUedS-)Up6uY2tk8vZuY3hQQqp*Zm)>c0J2XcU36%=JbY3(tM@`)9W6!6LQ+ z6L1TpPE+VqmwV^qd9;^-EkR3X|6x5j@$2*i7ghx;{gjuAt`Q-Zscl_hE9XG85Rb4h zO{FpP*3Xxi6-VnxO0FmCoG0$P*z^JYx+^`EG;Ait&WqCkozz8mTW{W0??E~hB1Dc7 zbHF*?5Bcs-#IKFdtHdfi@XR_2GvY*}kVfb%_xTH86y0_weAHvUh8ozh*phl|F8%9Y`$fj-0LH$DNp1tOr>TNwm;yD)7}pV&;x9c zfRdoGmPMgUzmO%jVzF5xT^CG|IOag^ILh@5m-6r3INE}h2OE6sBo(#pqRJ;~{INYP z`vH%$rAgz-Wj(LxKmKmNE@DSk5|iH=-)m4`$dE%#T$0#QkHApYpwP8)g6g9+xC+a; z2lYWsc$OcuLKB-|WujIu|458{CWNpeEPv$HKb61*QITqvHQd=0_mQb|x;2k@8IF}G z4K~~-BX&Ll$sVmP^BQo$?9JfK=%YA)Im6zG*z85{5KheE%4}$v!^Hk9lj2wI@?O^g z+EI`3#OBa(_)KqCo}_HFE_|;rpy}feV!6Eenpf8GF=_2lx<1>P>A;37;H&`n^f`&wMb5l(2ahB`=thaWj;B$ zk*P`dvD@7h71PcqXf4I@ARuk|1UnNsX=~><7|3)rNLq{uS;^$PoxW9n{&dlXgJx>x zoOEhE#j(6$_roBL^oEuaI@RDsERNFPk6v+icQEy9%4>l^|GLv9|Lc)?UF929IAPP* zcL`>HniUA+@cArYvjFZs5&GhQ!ZOoUDM#^@sxcN<+(G_9fF*bC2m9!pMikG0=oZbL z_XkU8UCPH7@l<}ce*xV(QhSD`#*4#WnND(L$3l1&wSD51`)4vo&Z*i@5}XD6(vY8z z2dpFp$Zyi=o+lfe7ae%a)>-h3m*1#RcuDXeLlXjTHf!F~I3QxVX-;{w$+b-Fp(n|S zu8V^tHBckbe}9*=ljd5ytZI4_qD~o~nLFwiVg7rgKax|+X!L7|itC1y1RJ7f(8o0Y zsz)qV9IAI5=d-Cz7{uic{;zcxl`fmGMh-$M{sI!K);bymhbzPr7R?I3r$zfvaCG)0 z4(~J?K9cXeR$7l5-0kuaXx`4M^1ey}K9pwvirI$-B28aePM(4gSxnOgLH z;*NvhZ8_D{c9asfM=FT>@LnI#^xcYCo{Aj?Dr^l%%lOixa8VfUXQwiiSI4s?<@?@F zFG^o=$%-&&jk`OHZ{B;vGXS1+OM(rz9IPvs_moifKFu!iBNWejT{msfBnLYj(!{9n zXZRw_UI?3j2Y8s6Q@z3Qn^LZK5j=$m?zqep*71_j!=&!=m?%EO7D(ygY_LipEi+dK zva8Af$^>nkfF?T(G8Dq(dCTui%J)p05baHYk1AG_Y2yAimmQEhyXzzK?v3E^A5{0g zMSlTKN0Xf8e)&90eJDZ!%#Z+>#*XQE*QoJ#+#B%NhFe$PkJfO*IglBbN>qEV!;+P< z0yr>mu66OS73uMtgQ#m+6TXsTN2gQlaA;@*nD;Go?g>19@Sc9=%=MJ(sW4i}cL}7v z2C~ax__RfO-7nBqC{=uK&|_>{4&`XaB3)|L4xrrT^hDUcL>me4TF+_G@2mHpy7xNu zZiThOsZvg=`AhbiK2*TXD_0#Wq?maoS^fQJMNTo^^ zRHTb^(iW@wj6lsHbL=-{1ey|W)X-5jq7+v`(oTWJ|P7&UVe>#cUN zgN;9Sl1D~t;k;TgUU6W5{F&@-)hxlvyl0OE&!=y4Gp=}ibi4~NHST>>qZlALu3P-n zxF;dnGL#r^N`14~z41qMurgzSrGb}C@WC_o18#Q-mH&aEqw|ByuJ(BS3FlI`kLcI0 z_}`y+>be```;L-CVSWdC?M#~(CTg~uo9AhH&7t@zI#jPrKeFmk4=ZDqT)Z6YB-Pqd;)!;SW5d)#cv-SXo+$$jZsMTz_PBaj=x zBs*CaG@1@Zyw9Ix+os=TGGCY8*2(8)`>-MA2oF*XzQywU1qZdASJjooC^G5QyU`st zrAiY9r4Q=UCi&5>Z)+~J)~#f=!a^BSyuC}_%u|RgXQro0egl`O*dgJg(yvw8D{UBY zJqa(SX1e%$I9fSuwR+T|V=Dn;W9@RPRQ}+`3NAYjM+*H9Nb1SfEnB||6Wg~r*h+rp!hcEx!lbom{{)nNI4EKCyKlV z>Yu4ON&~IR6~p3gDmH0i%iX@YSM>B2s_Su;bUVs>oPivb-Ud~ zW{$1x#EE@l-eQ=*Ir!eysG8}0M2^Fw+)PSCR@GED_F%f=5}S2W|C&gD4bhsR!`Q}t zgId5Yy})tVuJE|)0!?s{ALT9TY_khNw`fzmw=cK6wFBtSc7=Nh&OLTlt@}<~W%(0~ ziGGL)v6 zR@VFCPxZh%8y6j^-%Q(N!}C7}ez!s;ei9qG|Jyfc?rLin^g$S?h?< zWc}Bs@>I{xSFnYfmsVe8l7EpYv#Tgn+q9=31a07%Jp4q#L(ka<1Y@~Ws!!_4UJi#T z<l<7~3(ieY6EkdLDEMmCLWHE6XEN>E1&Pgv(AcrQ3GRke|In+v(fGIh-IQh;tN~n%C06@lZ zuvo6d%FJm%M#CBCq1Mp+IunWKtdC74d3s7#ho@s`D}}lxuUw9`jE|VP;Lo~$UM0U) zx!Z;s#h8goOiR%)+xt`Tw%RaWe}JI6DCVPn>;5Al37&~bK^;7JE~#S0Q%hmB4@KS+ z8T#`)US{Jj0ISY;Y0TTx;P^0!>n!&Hc1N@J@Yw?{9iN#sr$V?WQ*d{Cr$6Ve@w;T2 zJ}5)!8%E>WcgzoXYb8u@rwM%xE7FYvh2z*uSs}V5jVYtE{FJx$=6DpZ)F-7Q2VHWK zG=P+|vH3lsMNyEGEbiQ>-t_2AKI#ReT$~=2ogdsvOmEzLC2~k@T`epUc*5j3E&4Ojp567d6!yTg z4!jC@+%5ML>JBLEg_W20I@ZjCBF53E1^)tc2UP6?Vw*+A#MmlQg9y48|IBP(aD4gX zMjvaMztHB~0U@Qm+fL33)SnjTwm+-1h^A;k?kUuRGoVRzZhV6{q3LLSg^Xl;PNa!_ zGUEDR^(~qWqf$Zp2Yc#yM~gmvsqH?B;$St`1=B}?5$P_Z3-ziwM^19XWBR@xOC?Pc zK;yVap9H0WM)m!X$#lDHjghQ@daWDBX#pK~?;MjIs*mt>MYj3F&gvbV)1V@$?KZRc zhl`B;QszDm$ikMTli-8S_)gV35~tGpyl!onQ9;@$a51m+Q>{$Hz%6ZX)|?AP^@mwS zt{s(6oP_;$#oHuGAl$M<)|iDojj`uS*Lzc5 zfe{zU9h^+fk)($GbPCMf39q!JkQ&`lH-p%U&cFXQI?`Y-z-W_8?HMRTA)zf7B6a(G zw{@hyQMfRr&WZJ=RK3#`%m6KUqqgaAOnw00amgN(gZSx#5fX$Cz6Ru-Y|@Yz&N~XK zd6XKhNHY-hn0Ba3*DSXH$_Y9(k38ooxLR( z6Q)inrCg;8R|wmjQ-?nX_F3Ng{C1f-LGH8@fhcEPLPSan%~-^YvNdmYOluj>BN_|W z{{kAjSrzt%ojEnlM11rxyX3W@V{9Rc>(Sm-@vgUv4ebXUzs5Lv2mNA1S$tM?-~Dvw zrcvvwGCs)o6HzitJ$%e-w)AN$nxpBZ=`9Q*m}eooJJY&1QJ<@zsuqCw4j9fo^HIBCoswqnOR2r6YkE$vf0-l7sF<$~Qf=d3fG~@g z2`xVQ9);xI&&HMGM^Qfk+mB;r)b{wVMwUa6fyhdxKx$8S)JpXdg5B{GSN0R{VASFA zgD;6I!*(tV$6B4vh5CkHd{a$8kz4V_4bVrfnByB4^4^A@xXW>hV>=@R*=0jY2qZ`W z)$~l^{Q?Rd=finNZbkP&TM37a$>s$PuNAArT`~=cMg{la9!jN#_Ci9FL#fOeA(ou; zW&AZF5^VVLK3O-Eu~%z29xDneR4CzvQWh7i&&zU@#$J8HT5N1k>~&(f?LFkrr>L>i z0drCpHpezI9ClN-^>(2fiAdU<%aPr_&j%8rRj;b8O{Oq&(_9Sfui9;_wKyT~jZk;A z4n3p1mYU~=uE-f*?NlubEA+kE#+TlD9IuzXVmwXUpEQ>t$~2R6@f`0u65KJRUCN>< zf_^RZc+YVk2;Fp1Fq~tz!IegE`ZS2TzYN<3!5L z`-)Y$7!njXbN@~aT6_=H!8_34pBtASbKCnADCN;@gQ1W^Q&STeJ9=EsN_;zSG!&oYdSFsG?Zs@dXok$Dh}V5_G=(1?h|LXqB77~k zqaPXzf1326V}0cN^(4cP{Wa?P-rCF-gM~@O$Eih|3-SQsmP$+zg|9_;8&fXo$84I3 z8*!Xig!F>76+v9#O|R#_dNhd_QyqSd;=j94TUu<4zEh2({J@`>x{Zr1MR}3674LZU z<|7UM30S1e(dRuVqH+K3yxWc3gpYsxENFq&BD#tXUMSC(L9V4#1U(?*xAnW~o)azl zUaFRNFvlm$wH>Iko}dOlPYtE zHuU7k{EyRxP6wR(r=i!0%Wk08>a3=T=l~EGfprMN^EKc?DDBj zbI@k~c!A<)Yrp#_Ht$M=e!OpqIw$Le?diA8(LNVD_4<~!CYWH7i6P2^C4lmHY*jmu zIvcI(=f;6cARyxxNaH^lJID<(6>jntxR2YWmR4dQ)A0dC)vePd5YE}6 z=c)sSUnEVh@YA+E3sJcJ7=K9IS9%J(p*(6r28y(@l2QY-nu<5x82q|@%p755@ucMp zv5W8CXWOpEm$sQctBOK>H`)_qILFAeq1ab`=s}_nN|F>%(=GC3D<(dH()E**fvh6* z$e8xos2|76f1q&t6KyLC&QKnF2EN^!Oe{F-W0}MM7)dx^W~E(Fw%!EVhVNws0m^zV z&I~_aGvO!Y_>?DnLrA{2tV0-e>{4lf*t3x19eW;+#A5TU&FdCzG-BeG@wx}jkXq}% z&Akd8l~dbA8N{l`-VK*kx9JDRX2F7up}$Bkd*anu1>6ll2(h025_|k@GR<$=Muj|* zrShaXpDv|Kg$HwY@WMj}ZgQ7lsIH1*GMe9lcI*p%3NNpHh$ihJ z!5~f&{#V>0$B?pLoc$2VqqeC7NeUh@B+4x8AMl&x5=Sil;{vaB7f880lLZ;z3YI@x zbGps5EQEe&cym31oT1NKcG-ikKz7Wg%+_p(S&gyU($lOfP0H<>`8gKPAg?)w_7!>} zj7&`|de5lXw2#D{+Oi3NKA}=TYhe^z34L_wv5~~q$U%3{0T7P7q%Nu{HTr81Ty1?mdwF1UR4B)Fm*2bT%rQ?pX zAYGYDmNS~*uu5H3`6DeCIZl;3>JJg_=QogbXsmj}2En{{oOEi7Ir@DQPcjc9q&7`_ zttmqvrX<#c)%^OSmFaJLbDB(3Gv&=w9rt8GE|(9fyK)j-XOaMx!-79JM1`e?P5L;< z^^N8(Nrq8`^&vdJ*^lU55#FC8)DDi=FE2q>ZgV-Z>qm;0+S3!QR_Sqeex{Mct%+vA zehR(III}5eWNfLQT%RU4U{Vt-75dCoHTK1WOqHr~^f(kQA|`n+vCcy&)l6)HNi zn?Gz?^~pociMIGAL_F=>BlUeI@FnSOyFxTu!EmnFqUpHC+I)u$hLX@(r)2LIm_hva z`>iU7-%iHv$MVC24W}bFJn>|bM0``(io)>{=Qb|V4&j$%AkI-O|2~XLL7VU1XN7#B zrOjzK$swT@U7N4#njS7PrrZd|Tuf<7EjrSuZ)|JB)VH9#lK;JcqUiR89VPIk(j7xq zUukQ1WKer=(v$JNoPBB-($0c!veG9p8S4@oCi(+(J=S3RPVv4CyA8c#(Pj8Az|Q%H zZCwll;oe7fNllOVl3ue}FBhEdk;3lEqnfoP!$HtD^EYNdPXtUUvN75d2#)gZFLC^t zmtAL*>qKS6bAf*OqB8jbis;Miz+E;3VQml3U^AkA52tg(Tj~vTqfCu*5A&k-Imzv( z54~LXSetEFkKA-J;^Q%#ax6uK+KG7vs|P*m&!kkv6#hu#Kf@mMwtDvq|IjI)}Flp-n(cfUvn&6oGh7xzy3GmEpE{mQM$$Qc5DaOMFf01qS- zwYbV@PCY$vGn=%+$F~(y+5Xbqtx*OFlAd_0i_jwaovo%@Fn#jI!Le_JXO?!_vD8UH z_qsrgx-J!D8W7Foc+)GB!K*5L@6n{M?W1-Y_d%uhWediG&ksK8cxLMJ?}PTupnKxB7K`r^>If(Q+L+uVv~cn*Cxq@e3yhm9wWcExzR*~ zwmf#*i_k&MZp#cP|C4-LzZLA*Mejp!H(Fu(dSDA#iYByj`1g?;<|{Y4#0EC93bKf0 z)-r3uG)zo)Nds5mCr8s{4mOT>p$o34h83%>BpI4T{-p{KqjSi_z$;8)x6}1?%<}-t zmWX@*lEbPmqCcbEz$x0qtHkK}w6V2JyTbjXhoT0#M@9vYk|NIhUI!aSGjgbd!DpSMVzLq!&MzXY zQ=dgtm0+X)DxqIMZ4HxLrlbMbVWB8|<=AdM~#2evnZ=q0JI{1(fvJS)Ha&ZjLQ ztCDzmp$9AXB0HN?Zy!J8)}I7CvpDxm_MMQrcUu+%S`!w2 zcQvn3-dFW21b({yL#~9iWqUa{%B%?Sbwv&}JrM>LQ(CtD#4%ZNG{@u1q~mCm2?(Vm z;Zcq7%z5c*9@A3>Ezkbg$sw}b>TC^=_^(h4!%a;i)#SW4Q|32JHA{!hS zqx9OXA67#?qKNseXn9F226gq|SD=IoGl3rOjtm!5{;an1XZ~T+_Xmel^0)w() zqVURN2*sgKF$I7Xz`N5K8!sou;BdOt}uGL2V?=FcgS4V5E0{Bk@|8u|{Hi<2r>eB z(vYKE8wZim&xC#Up<+((m6;E1IJS>;b7oya&=p=V02 zIu2r{3*Rz^x^>%9pH*Z8ju?+ymi0cn7?IrUk@iZpDaEMPp^Ps>PJX60lG59CJeU%X z%8SrE=SMdYH}M!BqF@C2ZO$W_sve(KR0_4fhCzQ}; zI3N?L4-OH6qwN)w<>-GK&$lQlJM^RoG|FrC3#%C6`c=W*g2|VJ!Q45D62z8V|IyH? zl*{#uzaFm{zP>7XI6>4;1`1k-!UJX>5AHNJ`8>q)y-Q4%zr>HGYH;A5xP7Ku->yNW z2M0klX0OHK_|)1mD8!6<1V??;@K}%WLfD~j5BPmQk>HQb&u(Slt4)a>DyEKLs_U3w z-aWO61}eram6n!>iLGd(A71k$oW)-LOupV7h;4<-=)r58{;9a~s*jzTW^NEk>HS ze*xNPdq{R!b3?0Q=P2JV*g9qUaDv^M>a-M|wCU|);Zdf97!-3v}0 z_epMFeq#Y6^g(A^<8c=qQ_Fqd7ooxhj0$YHUcb-U-pXO3QQib|RNv?K!kK2-&+0RU zPZ|ORHFy^{WN2e?e}{rj7oUQV1LfdRRY&5avMQCL-73vZ_Dut1g*Kh2wCg})XsKh2 zQk%V{{ST(vWT_u;x(eh1ShD<2HkUU$a~C7;<_i5@+RnWhF~$oryL?GzV`$+s@fK!W z-7Bt69MYRhTEV=dr}C@cgnQKDTbgKmVSk_}<|$S7LY@w-1)}W4i{4q|@w9zEOq7_& zM%UWAmOsD$k6Kh-(J(tq~3KXVgvjaL8x`%D&6@cWTsT zgUmS@1a1W*ABq#SDSD&nfo!nSmPNx?lqg-PdflfKBC7>Gc6{vj92YSoH&qO{$Pm(v zuqDB`Qb#vMPxIFTmM-FkF0b2onidKz%eh>-$!N3^A7*?&R^P25N_5DQgX=c}`2@)N z6wMG%52K0Lj0wSqCL0=UeIfIJ-#rgYI6&P((i&h$7m9EUQbjvWyI~Bp&fmrrc29ew>uaXIBwSYTC;r6HQ;9KrTkuHve@h?g{e_& z9EO4vw#{Z&+~CjwtO1-drd2o`pfBBzBCL~7xLb`$i*1%K)Z(SY@403N224M&Bc@=A zHc{G5tu{#Z_vC4#A#r^-37d|IYftjT77d*78iJwel1XqP@Rxc4=@Gew_cC(0(uUfQ zx^f^g*3a}$Y~|<0Q4KLHWG-&2OX{J%>XQIXu8C0UhLHmw9mhE~H&Rv&_Fg}|8;QNi z%EP;a<(^d0K%S{wCSHVi$j1vBXP5-=zzp||Lkg7u*U>YJIAe2KjD21mzFUm_e0MBC zXvdiO*Et63#bRpXbA{RHD3$b;=u5jQhx6t8_(79$y~d`bgK)A9BV5!^t%`)nNg9;Y z{+sEWA_9zc6R#)GTFK+0oQ9+D!i|JC3MseBF%gmz1hxWF{8lfvNJu~A>V#zj|vIwl&sby%WM*+a>{17ifKiOucWIgjFly@J-->6u>ZCVLCrzn* zRaRs0G3ozCMi)!NZkGzSaR-o%2?%`@FnO?So^-L`EgWPB>oY8&N80wHzFD#tRoQ=x zti^41Fur*zdezXx$P=Rbu0;fbV_fKzvwR@*&CJ15!M;iBc~^p4C2fp8bt$?3jpOK~ znxo%k*NltUvQPSkiokf~MjJ0kG-ybQML~>C+b4gk+#5*0+UoR%fMM>DD!Xggrbxw= z^K}x6g7kK7G6-8x(3cup&C%gD+2oL5vE9AGH&t#sWt+hYFM%`*?+StO^gFUeRh>hL zO2vZV>JoVNqTOSNRZmTF00~M{Z=nh!S(#wG0vt;V2ebk zSj{YyFn3jIOM*xLPY_#md$Z7@*`MV`pV=+dHhe<)(UU3)d*nGLxi`LZ?V8)9d3%y6>Jbrcb<% z)Tmr;NcUPph%{0@o(Y{Rty|?BP3t?u5ytCr2=Bibo$t1kY6OCJZ>cy}IwDC`i1oV9 z5m*&Lq5CL2+ADXmll44e4KieSnUNjsfZQ zvh#c9DX?0#qq|W|n(MmE52uo?SVc)B=)Q`z-IPEJC}7CUK|?&bsIYReG(9hUIAj~^ zcXTY#vJ%-*EcsZBaR%vb>oildi3PFE=PsfJ9dJVVjJrlPtyLvwdMRhEhy5mx2LX7z z+zj(n&K9B3n+!$VXDh=eXvk!>PoUj^nxJXM0!GGZ)0Q>3M<(t}j2udZuoZ%h9T09n z{_MiJXms`(j;vO>>o3bgDlEJWLw)B}X_AfD4^?z|jmw?H@-ryRiunyHebElE_H{HdN8*DW>8Nlu$2foEBwiRNLsSLJeoFv`vM81vJb zPR-ik8NohQ&WW_kfd`x~E(O(#t9eNpqB1TH-~i-p&&)kNscmf{ywr8eNo>vX`Ay|b zb-ANgi|m_BqYkX30Ks>@@{BR*+ZF8kw}vluON}~xF77FH z8&zG`PC~IjTN%#>B~Rs5{D0vagQ~##e9&E?Xl0V-Mg8nWA9es<6@F39bIvhR^?D9cAcAlG~niw>D~ z`W=nd#dt|u#CHQ}E68-q?c5LXXOJtC__yJirtm(u8ML+6E_O>WMzISd8&sBX#Ew8y z>7VDN`zH9WUXS3)+h|&5pK)_x7R%<;E}aosGqk7*OJz!)qZCDSH-7ew?j8#GKMuL# z3!`@w`fi^!;jy`j;Fg=s*^oA43&0%r$gf85&bt?aylH);T*V#bjhwq6-W0JI`AHmY zVbJlr;XzKCZ>rh$UOkvc3vqLM$+^AJ21Ql4o>CSzsw3-N?QoL)Wc`vRK zCu`e_e=c_b5IMle7-7XIt#mS#IMZI~=epIujJ`DZ&UiJF_F65Av6Yp)yK7|U2XWw& z$2^icQ!cGEzW_-Vli|B*^-W6cLW$Nh_KTCy?f&F>@6_{Nk)=Z>p*6OVcuPeb&c-t3 zKp=deFGlu0pN(`LB-cDC@T%4Ity9X1{o@g+P#Spv=!iQH$Wr7`_nRj7M{WujiHHib}Fjy}>tSYOq zVtmcR>00w!?o)-_%jzp8Tr7lO=*u7*PESvkh|UNEU=A~mwK8q_Ko~x~%>%J4 z1NVb)<2?;KTbRQXVF%B+e8g}DD1jTy2R%=2l-*tgdB*1;s_xpn|!m;jQ;~gtz!Uj-mi zv2l&n`Wu>^^jd5ZX!?0p3^v}}1CKEO0M9i(p1+rKS<2)_6mWfpYY$GkPb6n666b3i zfKSt|YhD#H6=fi)Mr zcP5#oGGAKQE#xbwTU=YC-!w1tv0wuLs<{LZ7&de3-loy*ENt~l%gJV%dE~M-QvAi# zg^)HIb`L5rag1k*_1fxmb+Kz$&~CgL;Okj+b7)1?Nj^9KEG?F+)6&pe>=}4a71^>A=nt9Il|)yBaUlF#y4{7S2~TfF+HWUwqnh#9z`ZU zmE5xPk-13e{okcy$$C6lbEaMr_EPD-NB5zulmT(Zk^YphybZ+AtVV~uUlfD%Z^MvxLoIdPuD zZfj>jbdvJ!$~{8qBbMLoa!m%<%#MUc2@E+H#z^Uk!du-hSle}Jb$4uR!MS*EWy@Ts z94PsAoM7?BcMMf0)fu~N%?%gG{?ZX%-pt61CWh^o91Jh;F3@==2h>uVA6nnl zY$d+duWvOiO|A6!r%B!I5S4P#2*@kg*l|b`AD38JBDI$YoL#oE-D~B=@9& z>{YkYp>0D+jhI`(a)vu`aTXL!3EQ<_<^_Q}fW~k;*GH*oj}^_WtZ8!hI)pb0pv-oH ztGyT_`rSpnRA2A zT>czT^cr_}M;GGX5NVc{x?hN{H22qUt}P>iBd0PfmhmIJHtg0pQa(>%so zt_NzLN`GDET3YM3_jXa**@(mzlCfDa zoQFUNWg}=g9kWfX0XC9M;H+*m_tLeKsm*MIRW_4fL1JQ=rcvz8-or%YBz0uj081}5IP+%dco z4>+$z@V2EUjj2s*sz~?ujU-Vk!hr}mD5neeRFJsI;OCmh@h69_VASq)T{gj<;#+2x z=Go;{7jdT3xrcWdTpkI*=A)Hf<_?TGxzf8g^!q(iRZEHC38uTx^0XG}JjD&y<~cdt zkHGp;$6+*g!rE4r;t3^mh26?Rp%-}%j^qW$Z0EITY1j9f!%ujcic4~`r>B_ z5HfyIjmMz`;-4ZIt}h;WZZ6ir{MUgMqE{OTByom6BXiG8b*pCkEeNcMc`#qhr+y<0R>LL-g-mE%|1B{G}pK4d=7V3F- z?H6@<;J*#atJtBpxYdeVO?7Q6qO6UU!oJdQ!wbp5{6%`F!R;t%ei@EEFG7>UH@bz2 z+|O-sbG?aW`P*^#E5{hD-x6tF8~Bsqy9*1|-)A5#8^beY%Cl`CbRcnz`ukK*uOYg% z(<~#3eQQmH?M0{0<+7GsWUwVpz@+-)-jcd^6Sn77pz7Mq=Z$XGYl}-+9?uZU*bs=) zLGp}u`G@P$w4&9QUGb%zo#v%2$O$Yi@x$dQb?6cK$jEQcisSW5j}v{5O^RrA?LKh+ zQpFbMC|yeA@&Oqmjyc6>MWyQP4wi0po4FvjoGS}-Se7Sk%fVcc^YO_zs`Es>Q@PRj z!^7>PUD#@Rbds3eIY(m59eL<`<2-+|eQU?QE?P&d!*#D}HrIO8<|U5W-qeyJWjmQj zPG*E2QTPP0oj)x$X2P7f@5{XJ_7Ua_#$A(;ipy0g1dj3IE? zJ@JFoXZ1d`INe#9-6wP8tyUYG?LjUz813B0^TT6r{{SA)o-w$88RMSb=cQHFFK%@! zmzw54^0zou3aUL7M*w>Y?EG=zX*@5iO=w(858i@h97uZ1JWM{f1rO4X| z?myZ+tIVm)-JZu4Ny<&9v4nK_O{|w8aTH_%Nyc;O>s7Il*9SGxS!mj?i!S7b!pd9L ziZbOOPnI+tPoNdfyM;0#Qdx7A^sZLB5oVRkHrC{p0A%$BqnhEOl|n8#ce>*aKP3Et0SwaR(uoKS4_6?2=?T;_UTz#m6lQ2 zM^15y%+$lS3S`L*B%p=C8Rxxi#|cFl9l8#K+OhQQf>}zj3|o?Wj@7R%+Qfvf%sq)F zl4V$uL@K9^jn^5)SNmoN0Y_fB%}|?F^HqlO$EZ|8{OSpBLO#aeb_4urh0d1B?NE|R zsBHDeO6TX)p8o*Ej$0<&DUWLR_NkKSg$h-G>M+;>u^v%vaU`JzcV~`h74$mmDPw}{ zF6CfBBcIUMO=+tnE0~j#I+1`4dBv^K!${YpB9y-H;J|Q-R$B! zY^@mKuI20$dIQ|?!94-3;TJb#8?!~Wcnd^LR{d68ZsiHFvpnqo0By&h^z}IOBZFhB z>N-WizSM3mLtP7k6~0w=A2X5c2Ts*vSJdu&L8?!GsxUVbe7G43syZr;cpv?Krmb!X zqqGQ0<%1FieuIy~w3NQgb{mz|mc`J9Eg@pw(lOdhu5w0y6OQ%2rq1@vcB=VH)1C+7 zYm%_Jh8WlP+lWvfc;h3l^Q*ATgo7QxRAZ2%zvJocS?oe*du?))LK%Qwz#r+Kr4^5- zJ36RkEWmNN<06W(&vNk=iL1@w)zj@3#sg=0JVxTo2PeNZ?H4I~$=K`cyiV<=+Ff1S zHN?z``^%}}Rv_*OaT>8BkTLJpub&b}aiG}GWujZ^UVW>HgwT~y{*A%o!CUG5=D?HQ^KfUZvO!6*GYS*t)ab+e?ADLk&Lk+Efjm# z%!eg7C!ds_r}C-P*=$R2^6AzZVYiYyRE|rl7(BDL${acav}EoI#EhPztfz-GiycZN zvb8}ejwX@|Xo+%MoQ>PK$z(l8^sZXRR7=}056^98_ZEWUIAplEjE7Lp&=>4E$Xwv{ z_O1P1-unAi@cg3-~r#56#h1BF*O=m7dq`-7K}wP|g8o-Kv?eQwYd{UBrgu_>Q*+vX2DUM@H1Gt4xKH9f=zcUQCvxNa>mJ|G0El1r(*8U z18`oP{Ntu6lWvBFso}@dEzDMrsoj^ekwjN#%u*TK42Z;y$_6?PowHW;3;iR*=EhsI z9hJ4+qRTAVauHZ?%sUdzjyh-Bs?DTNZKLVeI;%~x)60pjItJ@%+xyF65T>k+4B^USBH`fu{YY(wW7k8UgNenTB1abGdBRKUnYTFTM*0vB^ zTdj?QJ*)-*BUSlCppHOci1UNc{bH4x6x}AP-9FbEN+O z!b{?av^%u7w4Pbhm+{L67PR<{t`#AJiZKV~Hh zZVis+L6tQ=i0=lqbgL|m^XY`9;PNS0@>Nu~LxOSN2ckA9@%MP^ zP+sXLNAUz&jmjpIad}}JMbXwsOp&`QZybdua3Bu9g)Nvi-o}moggiuVZ|yIx^$W=V z0DUCZTgyov8Ch_07XkR&+;d)8edB)!_|L>19`Tis)U@>Q+Dxx+c`uh8!~Cju2|kUE zopai~Tx+*_UY+7e>@RNh10uAMszA%+x~}eDU|eJjsP+2SKPQ5;-CA*beW5+o?2M$# zdpasGA9n#WfC~~12VQAd8wZ-A{3oPu2sy8d-^5zJpK)z?*4mYwq(IsTRx=@r5sl%QQAj!HPtv^-{{X`SRld|9 z3vX>NmTx}IW~a+4V%fK%;GZO9dYspj-D)(B|Jxbs+d9U)ws6vCcE07Lz_}3@!%i(ms5AmFmJP$FN42g(l zje~*nARlz@8%Xr_HR;D>`b^fb#~c?6cGm4Kp#ECMJfP=jVe??;2Z8U>nq66Oa#1hZ z>RM)u))sQV_N3STdh}^znnK=S9^pVdcCED4V_9Uqi%*g4Qa`h-6R-qeV~m{RjD1IX z;&k0|FR^H1b~m>+Q%5Pg@;`WEClY+%5Zi&t3Ts2e9x&6NO1_RLuUz?(e zsd#$&;KQlQbqrVV$f~B&Akrea`F1g3o>&flr4|IYMaZGC)h3$L$(&pxNX8=Vxk@+Q zUPeY)dw1rz?RP}fueFa5+}~-o_K_?qZAv&K$F+#^&f)X-=sJ!`qByl1jX~_S6C@hD zIe4FUlqAZ4c|PE02e9nr zR81#HQEc$sI^4%6ml_9Q2~VAUh+&+6I)+QVE*)rU)>>87vrBfD33WVM4i{*2EtA3d zhqgsGN!Dz%oo%C@`_6_d6CK3%u?`(%U86ZWf%&=Gde=p$YT91AV|5j_op-A5jK-3P znNSwPa?OnM)PQk7)6&NqtN7v#M$=N7Yd%n1(IRR#;JKL#mIZlISl}K`N3~VbGS^K{HoLvnJVCbZZDz_zqfe6FHUXE0 zBO#aDKH%|Ly1thM)0iTWlZfSs{Kh_0GM|`mK>4xhz%_w?aWh`(+GET#9^_>9lFat)gjn^JxzhlOOOoXj>}%|zS(Vi`8e<#E6%+D8= zc0(8pPUJip2^?>J04D(Fjt}Cu#eFWzNSDCA3AMJi(2#_=x>O9;3=d*`$KL9DS1gyi zu89?haY;pJzZ1%=FQImG##b0DdwNy5o)=JAcNOGgr&`3Zh{UA34W}S<>r+ntTkKL; z6M!?3pK9fmoK6(Wg7r4-01kR_k=CM`SRX4Ma#xbw&U(}irI<;Oibh$-emSfwok5Mx z6^=o`8R#pX$3kR&Ez<6^Tlt5S(Og2?W`yyyjt)h0(s+hei((c~daqCa09|@7inYl6 zO=T9LCf~M*gjYEK0G5CZE1!IDexCK^F+>H!f;Olp85D;6iD9{sT#>&V=MF|{>~8V_ zyE~5|c{ISGf|9>Bc?vpJ=wdN88ynZC$4UWtmjfGU333>bo;j@Bw)4p2b~f%BXV-uM~ftoX0Tv&SSd zXqOjSUYlyRttM9QhaAIlYz=ncfF40|Ka zPEJdo@TC^aZakwQVhG?42hxDK+1hIfeT5N7Qyotk_oAplb&{6Rl0vWDkFOrsqOBUE z)a-czPI`9%#qs12_8|5wp2Q<2_c4k0MD&j@WzK>rE1m_-sy1MPQHDk>2b)WD~DzC zFx!V!C|Dl7y=wf*()J@C6ts;_ThzCaXIL#A}wvx>hamjBfg*P&>%W=TL18^X7^{g###kw}36}Fpb_5mQ4SDp)W1=M*&lu^I{ zkT?VqMmed!;WD4Y>EUOHI_ZyMl1R4jG=?GtxL3shRxVn~G z1$z%M6_B$7428*TE*r~i@<%6{!|?ZqHBSt91-vt>Uuf473yAL*$&iVfM4e<2vm63` zP%;Nkr5-8qj-job46@s4+%oZ7$|Oq`rr~9&{DR8c6%5;B-Q2Bd=GVJWRa!e zx{yWtw~hk_H-!fyYhaOqlb$-7-O{xC?+sg8==YaicB354y77Q2Qb>00Uz3Fl!-Cz9 zUX_uh>6-kjqDMRsi8UBw)FSeiWMxE%lJ5j$INpao#{(6w;cE>?Sg_TJzL>1fbu>0| zY>->a5#JnceU>

4F~O=z<7&p0 zosPd@;)`i-B8cgVLfeoxM#flha(FzlXBgm~3C&sYj<b7scrW>FYPtnKofPUE%Y z!Q0Dc2ey5A#?!QK6KE0Y`mNrkF6Ew5xj^0X3WBBil;uujR&7$_6B01;Fj= zSM6=Drqy(d+xSh4%4bWt^zv0yx&~j7vOZEi@#)*3r)wIEXgWGQ{mkrMWkCci6`iCX zE8#~Vp0$svCZVTzV^Gy+vbpl(mefb*07S66gpidvAo9oCXs4%BEqShu?L%7{dMLcs zW4^t)j6|`dY+SiUQ-uc%bGOs*t&IUCmq5~f(Q?l#*`$0Y$?}9&0Q5Ovagm-yR?;ji zbmkF}3QiEbM8+7N3jzoY$j%N2VNpjsntkl1L}IYrN)gxq0B7?T1C68R2kH1zS~Bd} z73QC%*?5v^aU7Gqjz`*?5tfXJ6pg%-@}K;B*1X(&GJ{jqZw>OnEHNl}VUKi@w;qb! z$?5dUQB~K@)teZHQTU8dfOx{x%A%e-vPIk5= z*a_i>2iyVaNPLN_GIMLJ&vByM#>;P~Pi(TWm2w2%#EukvpmX1`=Qztj{?&>|ji;2i zaHYyZ>O8VTZIf`$SE}%F$UN0A3~DU;6|7m*wn2SyVR9~*#UxR)Gb1q=EuGPmf`0cs z2(2r-COBi8iD?1XV!1yn9eZZ2>E7*aasx{LjK?^4qvg5KWF zIAkUXVwH$02J9b~IXML59WZJOZ5ra|M6$htC%(Rl2$RWD-cvj!hV?lIAY_jIxTVuT z-b8kmdd7t&rm~BDPG^=GQDm5=RJWD>*I=OY*qX5%n&z@Du7#b7d0tjcqR8jV6Dqz5 z0DQh)?ng`>^tuho>X-JCCXQi9(X7N*(-jQCQbl36B>bU>k!U zeSVdWL|z)#t>?LgZVJyOoELXkc+>{UtjnG^BX!0z>5*M7k*3S5F}J#&>PfK^LIk@M z5=de4<3Bce`twm~dM1~v4RQl$nx-U-6u%sxXz)NTcpH?Q=hxbSG*Gy|(zM&{B-_Ot zJFZN!#RRM6l^~KZypXIH00Mcfts3)FzqP%)HZluDW|`uS)a)Z2M&@3pIUkRDz$9mm2;=$D&3D*2c~R=Rp}z2+h3D6!(;&aoH0xJq#m>U38l3b5=L4l|cnvjA z7kGAfEbk!Eq_nz}`JPAGHt%BiQ@CY*Y;)SUS^g?`M^Dl9{{RnM>sIl@trl@U-396PRVVv$SXLJyU;{UN^ z4rYwshE^IsjXW_nwc;y#%TE+s%Qda+`ckA~MoAqEM9DLhHzjRR8DwT)v)x6~qn+Wvi95`aYczO2DcYlNEJ~kI+O!u|k4v-?Tr@?NK^pF0 z`_+a3sHRiq-)iljB!V|@-_@(rlz;-*`U8yV-;4;S{ARbBY)2&0}31HXkwEI0h zueD@nSz7)Wqy=_>Rgud1eDlaBgHWv(bCy+V&8tU4y!gZ7w%4?|EpIPn(lkYb5XELP z)6KN)Rv80mJdkiYbg!JXD70G*72rjd`&^Zk-tAv(5HDSdI2_9z1Cuzs6bQd!Sbm^P;alsv{HqjP8Euf%2XyOaW9B0Jd;( zRHeLmS7u778rVr%##JKxMZN}$O;-;Fh?Yh4YW3ixL8UcR@A6+d`qaK_P} zU)H*x6l)f0jp2;~Pcu(}{{YjjdVR7`e&{{XPhV01=ni7>Hmh^ti%nxm)6JEw#35Gh z@Lho-LcnDaPbJu%+=0&-809Tyg)}!!$r_$8yc}cmuB&?`Zmiw@@7-IJ{6T&syqO)9 z_OHpeqTp95bqMzISR8GZ?=?BK z2g|uCKI-%X=qm1ys*OK+BX)7Y=xYil&0n#%Tbb1wK^h*c*}$e3J3T&FujFYE;zEPv zQgA)}YAHdtxnPVVR^YSt6q+UNy{kzWks^&#lg?kR0LSvF7g2*y5~N7MzlE50{Ae}k zNolI8vpTtqx#fpn!ive3GZT5v-dhd^IqS)ynqyAKze(e5a_U=nrLdmb^(TZ)9jV%^ zyZ&}4Gt?eNPJ32}H|0i2_T8Nm&Jap*f%=DDdsrrqfC z&3}7j&8qowC(L9KHM0~OMgiL7bJUd{mCtyl{{Y3FGQPGN5te7Tvxa#k<@~7z;@>F; z0D_zW++c36Zrx2>Y?C&;FxrNtX>SI*sNUEr+-|veCs(*;X!#feAeJmJc;h`QQ%BKf z@NTK6-W0kzK)jCmOv)I`mD`dw{nlAiIO*@rRPeuqF6{g-sxGm8BuzHYv`q^Hm(7Yv z6f@*x1C?$u{Y{IDC~WPGo%ENJUCU=1Ex`W(NHMHnmQ?_N7v<+1oujujT&`P6_B3p7 zJUtDhmXX@&b`iDoP&`Nr%7ZN%Hq(O20c<7HSFMof<7hO|j|GPvk6u6EKjx zfZzr^6O+Lw@~ONpZDFQb>NjaDPa!J)Y>JRf6LPU!a?VB=^Upk2No8%K>#;|rYEKXL zO~jGvjpiUZWoJcYQh$W15OMrnDaS%rF<#qQj#>PuY+B_Hk-Gjla#ksDkttF!jqEa1 z;db&nS3cG^6YI@yK96-Kp{HKM3*1Vp@f=#GiQiGtA<`n!L)rbZ-&41^au63*P{X?rzrt_> zbJrDbS94pg#y5*Ji#y#P!%;~**0&#Mx{Bi1P7pd0!XP&d!*dnnbAoVduF^DpBTc&S z^`tP!nyeCrXxU3Oz+on0W+wzNJm;$-p0$Ojd^ebCw;E;5;@yXpZ(-G~B*chM?%DzU z+yo35gZJ@{Ik)0163@dLZlQ5uuHC_^qDM1o8i8qqQmYc~;~3>sj+HjM1@5yCSkUxc z7r}NvXVcZJKHes`OLp?y+zH)?U^^1Z7+~Zm$gMpaR9feB%C4vnLPu1p~47Ujj2xJ?~d$?=?(*U1t1zFI1EdCzVr_}VzNTH56 zRp(i*!?dc|!r?~V!=?|)J!=-i>RT-cVrXKuj`m1mj!SLN5saK|Z1)Pd2AZ~_)%7jf zSxs>qs*cmRf*Imi-I77E$O>`ak$^pGH^fhItawjZH(E8tq>^dx61=*JRX-%E8A_7@T> z$eT{(z+>|BoOJu#(ibl?v1`Fvk-DExlW*7u+0tUOAyDDR?_(G_4Y-!BdsfgizZ2@( z<%RK{2;JbCDJ zjz}YrdsFA|_`1D{!dR8#mda~w>^YYOPEJSzqj8=y#T$*?D;e6QwYHsQ_MJKzS*#Im zpAxH_$02eDKOk%s#{#F;d{){IiR`T4w3_LP12oWDw#dtVZnPIAMcn_h*TV&_+bSl4Yu%&%?sh@^D4go%%t8mTBa&oS}9>E5%B zzkQ-bVW-O!n#IMn&y_6Mcb8`MCy!l?(;W{=-_o^PST!cp6=a#OwC0dQ{;$hu+-*|b z3B;%0f@;^p-xN=yS!=_@x_Ugi+;t zySb8Cboni}B!h+w3}bFv100RVBhYl|NZuzFULGRlCW|+Z8p{XFP{>sM;z3`$e+*`) zzGQpLkpW^iIveqpS;{>cPEcdmCpF1!`Iq}hHfpieNpF{c;ax^!9-Fz$iVPG z2aSvPb5f97TilyNp7U5MY^xo#+GNos!rYMZNY4;V<#^lkpK*{m#X|t`PMPr!Sh2aZ zhSN*4TX>UDw?pN~T@Dy;>Q%Oez~C|Vu7ARs^@gS4Yn^UK^BOqHk#!-CWu7NuGC#eQ z#?o=XuBn{0_4rLuZ6*kAW{=4^W!R-aW+WVy>Gh$eX%@Pozl_GO2Zb*#?RDdAsz9qE zmL&$=+^O65Ll;w!Ng2o$OTf1lejvV+PrqnyuQrk-yPtYLm$Wf1S1QMzJ*%a(cy;F1 zEav-V>_$}~gnmj)n{cW}%eal0&#)b;O-IAJO_imS{{Usekj*)_nWEepKa{X7(B~iw z=eVVPNt|xT+Sf_&b)KzpYPwy8#BG(HZ!&Qy+87nYnd`3 zI{7BvEmB!zF{#}D04l~afLQ%%q(2e$y;6ILto$u;VGfOZHH5Z$+~FhL<*N|DD`Tj^ z-Hu4&viwJ^Tijkm4~%>@;PumIdzhz%O~8gpP=+eaBB;n_7%Nd^wj7kExn!0TS~e~WcU4z=J<82MKh8ybHSU92|A zfDU}MoPxfGWBbOp3)Z#}V*RAefKUCPVOP77x|R^N?u zT>|@2)UB_qU1hkpHZb2qG_obU z8hr`pPK|6H(8lszK_2)Wm*yjI&l`!z{OS*b-Yf8*hdvme4ER^Y zv1@vsjR>|~PDG3%t2?>}UFU(h@y%%z)6p48#!Bt7#gx~U9wpU&+o0+;w-KUA<+8@f zah3b(5!el*Ae@7eIIdg8UIjl9XIYG~$9#uyyj3`1#zXPjf$Q46XI=1(w3-w*15uOv zQc>qFziT#L-a?XZDBi--n(%DYVwBE-sc=@(s(NC(AB*3641Bx?~P(<@=k# zaeF+zQd{|w7xLo=Y65eC>^fJ|_i17AL&2@B_` zr`o*vXl9Z*o5H6?xJ+XlgPxT_B{JG4JgCZwxva{z)}kUed9Q{8u&69y2%%3SvG%OW z=p<9`O~;PFP}_Lt1bb5+GYr2d!jZcf?@E%Q^PX@yB7qhRWtDIVkRBCBCcRG1IKC8U z5nau({9mb|YiM0}3pmbmBadF74_uF2W_U+Vu<%}vJY}y&E*m9ujX0b&%)n$Z^ik@5 zy?{JUsjgn@nx*EcsK{>b?n!rl;Rmn-vVp)A(G~31GvBBAo2ye->Q&TdM!k13JhGBx zl1WbHb|)m0&PncS&9{fV^-Fh=8$4_sEBpDcH-1<`1ZK?N~}K7{tDbw4OwOjVhc zPSKv&;+QiPQ)%brtM(;T^7#mOE$L9K22+$fvU*njmEp#b47W^Ufd*e3{&hs9b1{J> zl0Uni4muvxw)a;E56*BpgY~JMRvE*@`xG|R+%u7!WL0~hBv*LbAPnQ76q#p5WgwE+ zNXoqc$RL_4Hp1j3x|CNA-+Qn=lvLeP(85jp3=M}YS;Ong#c;b&+l1o8wkeG@fcZs7hyn%@%I;jngjFB(@rq zkzqhx%1O>J_za+971PDyTMrj%Ivh7%O}j;Jbp#rPw*LSuNOn6e;f&{QdSqbw*CnXv z8h6C623TKMTnJ8+tN#FKHlcEgq_D~IWnH|k?4L?s4PT|qyet}(&WC>j{h}ssEP01- zn6eBG71)q|o$9Z4YX`H5y>okU>RLyMbZPBQ zpKiALB#zpS^_2se!wB6^Iob{~0O~W|x|=98`Q+7SxO<0ruU}}kV6n{!Co8n^l7V|? za5&>Nk)!Fe>iSlcn%%{{w2g4`U0c~9R*ENtjkxcY=KvqluyoH4TtH#GH=4$$Z()~$ zLc1cy)!YiOT%0lE1oKY)M|Q1aBx&|GHn%#)seNaEedj<0<Ne0w*B^u13107bC4(sdgIWVLAI!ue-rcK-mp6+!xO znr~B%rAWo{sac&bhi@WnKIO)rd49IBvhNd#k}IZgk$j~6({P#?%nROeJp}FV3H5rmJGXhWb_PvZoCZF$v0mZd_iw}cXt)d<&BhcB-b!o+z@0X z$vcJ=bMtf8@j0)i^#vX()pRRZ^vf6_c+J$Bh1TYI8z62!-T6uRcpOq@^ro$5bkX0Y zp`>`84Oa5eE%hiCPd?a*)&?<@Xv(7S;c!oGI@3HyZ5_{p?^fCGqth*3*81A|cu9ub zrq!7WaZKB!X?`KOlJZD&`)IAMY@T#~HE$ar#Nky>95Y~NsRyNKSpBW^ zLu~QiO{9pL*hS?gCfy$l%2XV0B;&sv_M-PXEU$D}j>kos_1U#!dw%dTkL?Sgz94Yn zQ|0-2zyp((12wJTdF)lS)oJ9G6q#N2pl|i4xdU+JvCvk=TKTjHqF>?aw{yu+U(R*I!$CuWj`Ei7jPDlHSZH3k#J50!TR$k{IHh z#b;}>Judd&OlG$by`p`(B)9u{Fvwyo6}E!Bu*-iJIpeiiv(sd?)b&X&wD@F#KinIY zj4+Uo;>p1*ySd{B9A>1u5_pbD*{p9SF+((v++CGGBpKSk4xHeCR|g*AwV==@vW~}8 zg5ch>D%>PfjAXFfc_fSgF~&ai7a@DgLkGh;T-sgb-M*i98mnANP24!#fz=xc#(wu~ zb->-V#v$}8W%egfROIxTON4R3l%%}G%RkmQ@kf8m0aa^B`^?N%T)pVasw3k$d z)*WH#?%*HA`U;s@BI&<)k{B-^OVX@$F%{mO30OS&5JXk{xfG}a0A<1v zp4iJ)e~aw3uMO+|48PGddp%oE)n!{tn9>6)Sgygj_Yzfh>^vSi_pGb`02FGr_IfqT zYjWJrJ<3Bpq;{#cDGwW)<~YVPoDSSpw}pIPeLQo;eI%(PMuFK-xkot-x9?-_`*o^G zN$5pNoQ)=ptzvCne+}z47PltCZ9N(*d!qrH?RW}eC;>Zp$Ui7QC1Q9&)5M-1w|kqb z9Zy|dN&y_UQQCxCc?cy+GZhD%a!9Vz;oZ&5)>^H-{I3Pf*3u8QI18``K3QcQ@Wkh~ z53O?F5Ar`%n}WRuQw63Z-6uLNMWGm<&UuD?@*$&W?UQY5jK zNR6kREKXM9QVeD`Il*npfD?{dx3qaAv(auP`x{>7Q@ZNn=W5A}uo>T+VBlwtPaM@P z9>MQCIjJtOX*Qh(opLoZ4eT;V6f=2>%YX^PAvg!9KaOeH>UBy=YndXZrF(hdd;5c_ zYBOKQDzJhjLk`74#0=vt^6okHQ|ntkCHP~g_?N-)Y8qo$*@w1SqPrKewCcp}R>zhy zMn`_tQ^ZhQ>NnBcT5A?}*N693yDe97CvauKZdW)RM<9ylH2(k=K?jAcZM;VemuYm- zuayPCg+j8i+w$NZSEr#Jaa7&RWj;o(jx)ucH28z69YV`f)AS$heKq8U&KQ-VTgcR@ zEWk^RryU3bspxCfd@JI;CAIxOU9ig8@GPl3ym@TVs67vv^9+4R7_XT8 zf8f@W;(Kep4$oEoT7M|;^+wBxK?eO zTLr-ff%65<4Qcp;#$F@whlj2-J#WH#KAEGEhik_*>6JnkR{h%HhEyrWa87H2_!Z!7 z7vYomuUB6e>l(hIvOScSHxae3?)-sc$hlb_T?hVGFdvY|bd&E{!+r-daee9rvTf5Z!MdM!q zMLNLAV{sf8D>e_xBS_HW?wsx%W}VvHl?5i%zpuEj;m;2Ek5SZw`mTZCj~Uz~h(?|* zn=XWn#a*41NEyK(jxk-2!cT&_eueQ5#Lab~4-Z^wH%9%mn|3d6Dw0a9OcW;6-c;ZW zXQnZk{3GzvUk>l_O@~@#g?ZehB)Mq41kWOBop$U#1am3UPI!~ z3H)x3_e0SJpW%z|4Qf*co-~b_tiT!No00P5faE&0~LZvscC7OW6ak7 z0L24z{8uBdZk6UC0B%Xk3~)R5uO_4%UZ$ds2%EW26!}h*6F<2MW&l(rhB``7+B*Udz0T4o8$ig9!27-%Uw52 zPqKJpPRdw720Ydr8JvH3_6MLO^(ME3Qe5)b(IpklBR|F7DZKH7VxO@tgPcd zCA=W;pbq^qd!Jw{IJcK@q_)9~WFEAUuN#5P)k{KHd)E}q4U(~MNQ*#`1FpM6GepcrdcN*Bnn&qWsb_W~*$E7ju zcc4%Lj+qq+aH>-uT+>OE;6aNKQ-2Kkg8IpZ`{U`av&{3xlo(>}bo*56jS@a~~+ zYjHgKge(;zF_M=BkiO8sZTYu#+)uVKP4OHb@SFHr+9{gi(G&?T(mTSEmPt0T`8mes z?|?=scJTwpIJDC=Wx2bK{j~dgyHJstqUUPilx=K~4?GIh`%Tx1Z}oMHO`Autn9pWn zc>@(;8Fg}3Kl0KtIXrI0F^c*Jq0u$&$t}+{hsPHh)R%Vp2AOrNYF5&ST^=?eGH|4f z=V|Aj--T*wdRK_8G+kEfR}#x4T=3Bt<)7Y`I{+ydxbt6N8SlDDv*lA~aU&Eu80o zyfI|D1oOo01a{M`(^y2L#UUpEvg47^9Pj}88rRUZ8&B-*LrQC%Hrm$0-b<)VVdXaj zF)E5iInRHg=CyQJ(^l*3vdrkWN@PazdhG&5EUJ0V2-+Et{L)W6E7$q&p=GFCErnkDizq!^m0({h(*enp72F^2#V75AQ zlirapuI9J~MSV3CyOx(@&pHy0_9U~d_!Gw3E!Tzb?XQQIbtF>3aJDv%M2HK8k#;ZlHjWRV;QPKT(k zx}2)3C4YB;=o*5+u8<^<7;_}xGcx!X56D4!0%69r(G&@ zgKkY5J}GTCS<*Dydx>n!tEt6uB((D)XjPvwGO&IQS%6=1q#V~wwi>>_t=pXvEn3o4 zw=wD-W*|u=`A8^RoN?$d3H3GOS`Uc)Uw$UG7HR(g2<_u7!+DUb0r1Fng>F}jjCL!Y zb6&loUur{En^s$!*1DONI94(ZyD10nE&>up!;_Q8T5Da6qfuDH@TZ404GZDMyP()w zzNz*Hyz|xM5y+o-GG`b$A&B*^!%wiEQquH$x#dv>_X6T11cs4wv*yluP%wDN>CIR0 zRmX@lj}mys2bL)>bvIkGmyj%JZjPaHrAZEQx%!jEVlTvabq!Bb&>+9lZf^WK@J}>0 z@@<(_rVd;Ta#VnE-#=Qm_8%*9XMHuSwlZ4zP+dU?4Q=Pi(Ny3s1Dt2E?O9R5eRJX1 z4xe{v9sR8SO!Ddg?It-&`tguCce9MZ8J$G|Nu=e54RngX+jrnyKF4dN z+xg}(3(a*f8-U834!jU^$A0yh;@u-u@%EExqU$z#PNNi8VMGZjGe_mHB342M;H(#; zbRgrkHqT3Ijc-*eW|vm0cFzgus9QvJ1d#5W6>_|^}R7>mOD8Rm5mi*3{bWP4&`iPu2zzL4K1zuod%Pu zXW_DPW2i2l}Y1*MQ3S#FHG5_O?yn1*hl6mn(E%|gwYieY;dElK*0l{2a2|a zNIU@vk44nNye}V}3xgC$cl_99UP7LD&lO1yucRF!$?PDNoh6FZwJV`4b2IK@ueY3m z5hEEL2c<2^BrWL2v@7_ZEeM;jqfY=eS9F`D1%}(5F8pPVJp4!f#1PdDo!!%>& zZ_wfr)}Lt`(pC>;g&0Cb%CS z-h4gyw{vCSr0|c6X4GJTE-hDBypj=TZmu%w8bSh)HsM!2hC420YjrKfKYyXpc;4Gl z@xH61wyWVU3+Z-^b@rLBlJJR=N z<1HUSzVQx)r)zLWzBvT;bCLiODCR8WedXk-;fK9dm9CCt-!(@Rj zi^Y*IgS9&nPMLMA$g2#%fs`f2O8|1GI6q!EABMAde@4`;VDJ}==Cr(y=l9xawIwwh zBy5HNj$dv^m^mPf=NYf6JV&5e-S}qa&qva9`x|hcRBX`4vlzw{V}L8qybJKs4-QyC z4br{+?Yc8Ir4^bZLm4}aQSeLpao07IQb$L%jH1+@rlzUlO((@y_QvPNo+i>S0oWmi zSxtr&TNb-*od_vLuJ+EoUNYu7yH_af2PD|gC2?k7y5l{hM zzbIzg!P+t_Yr?h@>kF%Ez8u!I9a_Td$0dcG!u_Dzy0dwscPvvR{G{Yy_#F68ScY3*_ORV4kXy55p*bL_BZGt7dsoqZJF>cmP-(ocCV4S(_YgSQEUfq_ zKpc_}2M4BWhVj;oACC09V=F`w#y6E_b}A-(l2M7_GB`Z(fN@yWrOz96F`Odq;(Vnt zlww@7p84-j)3hlr<@3Uovn`n=!77K}1CG4^0QKu~<3;|^@f5buN3rC5M+9xWC?}vJ zt}|Vpvn98IG}rL%o~ve&g?c~k%+7X+%)bg3`ih7RZdt~tQX`(ytkN}PICP*CjuD`@0O@3%Ww~F30 zjbl`{O{#%&kFGP+^H|g9@=Xwh-*lW9$UQ1*OPT4hQcO)NVqqCG?kggZ+kJ;IZ zjogusN~YJ+%=sTHjEt|L>r6$>8drtM7&}yq4)t(9o`ny}a(U}iw3Yt=OhqF(`Ey$D zWMZAzXJ9*(kLq#s?Mylu4Q>>W{2cY5TQd=kSJ-kZTv>gk434`&V#9Y*KMI=OAqpL^ zhU_;`O^jb5l}hp-sP`0B%(3qaxjx{)$n8ZS*!s6h@ibQ&Hm9dtY2xEiGsQiuA{;46 zm*r#k0NnooC~R@h2NY`F3%v03uxja|Eu=1yJKNb^@7(@w;68>u%6&&%0y74JZ}sWs zf3sa$+0AIi3#pxa%aarB{oVj%3SBT6dLBB}{{V-&z2s@G!*`{*N#JN9jpQ;kN{O=w z%nmmfFW2~b*U)r3(o04@eIHG|)PBQv;)T;K<5=SsHukZDg;B$8T%0lbnpE(whqVid zgfU9jaa{+9C@NW6Ffk_!&g_xTrh3&o%?9TF;tQm?k3nyGJ5Bs$K23c{K?326?7ZHaHyt2yk)e570`&TDuI@{5rZepK9xDEUk_G zy#D}ZNy(MIVyl$|e58?+k=q`j@2bIelG|Rz4w%+AB2~AvwsKX=DJt8$frjTjKBly_ zBPHIkq{TdPych6Fuq33N+dg8V4w{ORe)$A~OrMtrc?YL{d)G0eE~9qZe9$b~ zeXaJOBKfW3eX3z7Ndq`L*KrNN-@&fGSDEy!V^+7fbEpNhg^Hu98RJHD*iS~r20fa& zty@vlXVX=5+1lD@CYik7E!aurO3q_E1s}Wm}5?G*gP%_zI#QLst$*yYV z<51G|ldNg_t+tnMWboZalEb`QvH(g382iI;6W^Ghc7Mdt!}KX z?ya6gc(-Kbm1fxA40zrRT08#$?IEXV_K>)R1b8K~1d7<DUeJftQ)x0bIk04!6D~pGY3kCDyEh960j1&?w`Q&5rrk15Nt)RXY@qM&k6Ex@+ z(((;cS&L?$9-})Ixr#MM-IJZCIlv=0BD1_l@bVb`Bz<<;b}8ZrZ>?`` zV6d~gwv5K@cQA08Ea*}HH>Vw3$O>Gy4uQaQpJL}>p2cekwBo2}^QP`lOcuWy6eJhQWgWmt@uO`%GK zBRJ2!JG$^S3V|%8B$8K8G&7Rpk1!QI zcq@#0MQLo%NNlw|W?LISAlYW#G%m(A#^sSzx6QRqK*k%V6kkhNT)l2?Sl>Z5uYS?# z_xhA?Z4BOA$Ss3x+@5LPMn(#Aj-wc?{cl^iu}i^wrP^rl!lL~n7v-8m8QcP@uF`%{ z!Q-WB>Uzw69n^G7nSDfvIewZ^2EbRZ^a<9$0*zP+{=x9XC$q_P*V(~GPz0lfK)#FZSbKi=u- zgAR*pqD6J2T&2{hZ*u`wvAQwT9J;FM`aDwoqSQwctdPuw zgAO+WrvQPEyZH)ncox?9TSpD8z3t?-)5#&0<&0CSZ2-491w$`E*YdAA@aCha{5-k2 z@bp%(+G!~z+@^4b;g`&0Wsh@}`8Kn1M;me8w6>QLzP38OJ!jPtYu$J4NiB?wZPQNE zjNroDhIKf{D%dBA#qmGGaq(ML@aK-aJEq<(=9M!^Ztzb9nYd+ae)&##;~aL+OxCA? ze`x;z2;FK>$E|BITWU8Jt7Ug*4Z=>cO_Hjo0}HrhkDI;?bQ-R+r$MSi9)UgPmuo5@ ziYQ#HYRYq*42&>1Amb#02*IT6Lzga(bBXXj#IK0@=f#a*!@eW8w$S0zEZn$A%+bo_ zK?&3uiek8jb=Sn(@xW# z;G`eEP0SaZF~Av88@qJ$!Kya)y56bcCe&ip*~I#I-EpK_V8=4@i2HoQf*tTcAIhP7 zuTq>;qiCxXJ|uVs>AXK-6v$-MXY=Bc=3B{rW(65Twt8*eI34Soz3^v^EPMdkUY>jn zVfI)sZZFHtB$5RLZ8$(PjAe=UuH#vX#b&X)yj@D_(IkPcE$^60uN;lAoNnAc_~#sB z>t0Lo$Ki_V-XhSZ@UO$Y7FdjgT^rlQE#){Fk(7ggyL$7>a4ST*pysklN1XgR@rQ@> z`&k>tJ|(a|KfTmHb7$e@X`o|;!#c#c7(5-lmp=9EejxZ?roV*m{8W#oYepMGb|jJ= z?Qp+*fhOUFJ%?^9PJIKynpcT@I-0+N^t{`Zi%Qn5VOW+aFf$XN=gN@#eAOPYda`Z4K1sab}9K2}_JRjGO_--UMek;Pvz0 z1bjU3*17R_#9Bv)d^xFjS5&=@XMH}wVN7xdOy?u8=TdyuNZwM5g`3-{ z^fjDXgdR@)Rd4N)_OvoIN+VuC`IG>0-#vk@Gvf}W<6nmUFw(B<=hJRHGk0#n^4B0u z00WuVoPaaOOyu|L&FY^Et^5<<3oR!~@m=1ZtjB(=jPbG-W6_E!h?r2ZY$n6v1yg)l)O`_e|t#|Iri{CTN0>#KhbTYqTp zXk%AX@+l@#*aLS5XzBFFwK&60W;&H$HzajOt9bhRPtoonxq{~!k|1>;0)+F8+3o3G zcXi>NW5sK7FE4ICv+vNX>t`flX2|5{2e+qT#c|#r_?It;9^*^ZmeSK#TZOf^V>&uq z7AI*!NISY^Pqq#SuJ==$#XbmqJ66%{(^9p!Qg5`yKpx=<88EhZWjP=o8;~)@XE*MY4=GZVGEpra%1NJkQY7jGt}qNK0W+Pk3sNT>RJYjF65R~d8G2e7A1im zb15A`?Z!DLy>Ys4kNiuicn-jLfi1O3e3Ko8qB2HrrRt1HAx9Y)JupvBDwDG06r7%` zsfF?9;(vwy9C!;ugHO7m28pfjAmNzh*)KW=Y=B=T+(WASP^Hy8gELlIBc-v4B#443k-LY3p%pBasRKM<%?Q%3R*^ zv4=a8yDy}%ETTaqZj%C}z8I-J2+u?BU6+OY7M?BEqtll9J13quF-b29Sw=u7ws3i_ zIvq9}Yc&fPmC3_7^y({e&`2bWB6mrnA%<5OBysLL)(E(?o~Aylquyycjm4$Xn67Q) zXrw|qFgPIoHJzwi`BvCh4DFsXU6+n8q}OImRn?O33kBc{jm`!ZU-%M^eaF3WLNFLe z${Rh&q!QmljgrQ8cg%k?9AwjN^tq-dYOy)TJXdD$MSGC!>X zu}8zc9RcH#;FOhHI~ZdhpK9nugh(Wi630C5`@j8qUFz7AkCTnK_x}Lv)X}!ploAhL znDig#HB5Ffmriiwb8bcC5-cShIST=4td+v}HFrm<%- z%_MNxi0x1pT*!8f+#qs!z{N%JJHzL~7k9CdE}+-ar0}HLgC8vI$pvw>vyqNF3iq#l z5!#xy%U&D!g{gR>Kn)$N zQbgRuU=6@vleFLtymhI(IQMccq|jPg+rb>`G!LmLAymW(Sl4bc9W#zQRJXF~n*EH4 zf2i5&7Sl}~kIO6thk+-Z7jcM;;|`uZl3HkABsw;TmbAA6V3o{4fzAgG573_CxW5qC zzlU`TWw`rw?Y+$D65d=&1PdlWJrr*M9;A#F7^SgKMs?a}ieEsE((czz(yj{Gsx;TI zvlAx_#n596NF;a99qX9B)y}DHHlwQC!1t0ni3XICpo$fn<#Cd5aP7bxZO?vLc@Wn% zeNRoiyt0nU-&R=Qy}^+-I_Cf!XK5f{9{8@~PSuk_ve4}1y0X?9(((61v8+L@%D7{< zs>#CS41y0%avv{JQ%$>=8vg)?5#rTvV6fJ%Y+l+ZmgiL3s<;^Q5N99)K>!2O=~qM- zR#*Q3+7Vh>+`rj=*ow`(+y_zfV6RXcr*1i=(Y!$=rPNl7d8_L>8UpvN_J1#GJ76lQ zf0zP3_g)QeS$LKW2H$nPluv0a46qrPhRPDeG+}oSkf_c(eiUk7GHS*SpQ-BF*Nx=x z-l+FFC5uAR$#r4?cWB#S%eH<}9Gs3%6>neAth9NpZ1n5f`@5}9)s{BDy_!;5HEbb8 z!h^j^g4yIBp?8SjzR~E^?4&0-_Q;~#daD#qi<=iYNFd!wX#c_XznAH-2{lU;KtGI8OO>H`}17?0D*1v zPZViZ={B7Ab0bR}x3b7~D#qIYR0rihG-m(-*0a78>5K6DQ@^`6g2h~3Tlp-3{HWS( z>5;f}Qb0NB`Bdz+DptE@zN>dHiaZ*Yy2@P1tw$}b&GeE+1-xt-NZ{Zp&rUjked?Zx zrk@k|*HF2F;jZN^BO+c(#UfHi%f>;#7$07>%y_HBH#)VSi(6RnEsT@N5N$H*#@&@; ziBN)OUzj%B1E0pd1HxV+v+(zUbbV4yB0X+4w~i?_50w((kIEdV1dN;>o$E;Q+4CEKS={S3S6Y>%8QFAYDZDXcA9toOP~;GQT0^Hnsd!&X)pcLAon{##mRQ<6 zLl#+9PzYW=T#gT=W#8+!Ha;M~v^rg_huW-CV;paoitqcXMh@Y)pUhOZ7t3>^7^T*V zH1W!!+^F*SQ?P&rST@w^N8YT;wxp8yCRg#6ur!-XIW*YCw0~sOq;Mi&OGxMdVS=r| zJ;!X+QNncHN_j1=t!$xPP)>`p3W{P3SbJ~afDcns-dw?Nqut(pmhV%!d97tzjQpY| zC^qGr4fkKKI5_Q4X*#4@ZI#s0M;_aocrLA^WmQEy^NgN;={Pk)=tU=pA(HMdH&>Td zD|mtnt9WvrTb50uBWP^4K5iJ0J65H{*Zv=Np3}oOm&F8x3Eni7vZVZ@cNyn^F`DJ1 zzVkdCe)_(v1X7z%@gt~pbz3dZX z{nrRLWS$QdKCj@(^<5HA6GUN(?PilwHgU&@(&zkT-l<%3nTqB^oqFhF1nl7k77dJG1~y<_OU7#T2>ZN~-mSGJ zOry+|%6<*IyYUsasSTEyZD4I(ZReWeZ{9m>RtE|Q#vE`@d}6C;)|!RCiFF+g%Tj{D z&8ikQsgmAaF|}CnfafF}@G9{M%+!vNoX_or!`11sImd?%Pw%z5~iWK1n0aMB1qUCIw=tJT^3X8afhxW#=b*#w- z*0+XFmf2O0%)&8~kaLc3e+s>$>Dpbthd#-oYAdNvX&R-??c9tUN~Z;84bIS@@Im^6 z&2#=g)jU_=PYT~^8U~n}#-zW!c_X@b=VQ)DRYSM|pOm*hTEkl(7004!PiNxC({J^7 z1;o~JXa;MDWWW+OJmN-J=aJrybd``Ow-q+g>0TP}`PXfAZ8G-QO{K{*$#9o#y^A+H zSJ-EUC&S^Pq%z_b4{Ey^z5o?;KgWmSm;#k+i=IL$Vy+giRRWXJof{qb- z4&x)YHIJ|BQ+Rbu`ka?DV3b>wj|{+)BW!0l=NK6|Jq1wstMHEc*Ty<#v8VX+RM9Q< z1(qwT8Nf0`7LqiCIFpb$82ND6KDp;LW5%&bqTcAA*}9BE;$JnFLt;F;$dwDYL&nGXatS!+ z2a3tmETh(S2K#NqmK)v+t7nXCk)vD}h^QGP5$lnkLqhClJy$nEZyR4;_{R~%-$S9!4SIiz{wXzP8X^lm}zRR2%@OC3p-v@mx=byf(Vl zrLFj$-%GXAykK4JW|rRVrH)~RC4zuRz59wE8lsquV1Y??$Qhd?ebkkn!_U=;f{{V#~@RHwa zcei_!R0%caoLwZh6BS&9+5saYsmUPv;;SDF+-gko>K3rYX0fnKNN|s6fPjWI0~?PV z3~j&zAY^tLCW|MD?Uwn5bl6y>s*jmpZVvuBrT(ERS~IX;GB;q$*K(f6+kkOYF0QV;o^AO4DAqjSdwWvO zBuzp{T$V=YN$MJ^#~g+{vJl~lXWVw_L08nQAVNz-en;nNBOv`MSd~D)8;{eiUtKTE zkvzmw%r=<;AgJ~Cr^};D9Gg%Ek8ctIf)QHEF^3Fr^E;ab+kpirBYw|36}b>LJs_F=9X zM^!DqI6U*~{(Y+Ku%wN&md|jbzq#-DPz1S9n|qFfy%gD@B0ivdC>f%dSo&YWQC;eu z7)iAF0Jpoe^4i|k*edO0{{U9!rZ6$aDuuMRI-DZ@MO&FJEd0peYk-e&KIR1@=Le0e zf<_Kc1E)dY&3ft|3~sQzv#_-aL4lzRQKR6K$i_3zTxOuqwAeLY3+fLCk)&$6T=#bG z8WkeiPnp3Sbvx0HJ!{{!v^pa0VCkApx20)%H2b5PNi?aIqqw(J%+XG&(q*%TD#T=V z2Ngq4yoPC~wbpe3w({8hlHyR{naYx+HhUeu-!*J_cUXN_;n#(4HFz58O+ll#y^i8H z-w|lavpNC5ECCn;9M-12KBo_eG>NTlY#!d$(g_v|Wa4M})={}eRaTH}Ix4l5s0Zm+S2EJpsrQn}OL zM%!s-B#%zg14si$`_Z_DJ8lx6|Rgy40-YRhr)+9xd^xAnxRHG7q7x zi_aEm;^i-d<)yW6J28Ic*|vM{dul$O4mQ(EAbYiCXc4JnDW~Onn7>_NwJ9x z+lON8xyj&xH8+Mb14pE1Of7r zGsz$hhPJeQKFeg0>KeR|BgDxR(ZmaH1m!>+j9~lMjYgg!(53MNTF;5jxp!+i-08NE zLFG&!S%CnB``dsYsLd8p)vKFxX=kD8`t%n5AhAs>>M+{s277mh?CNC8BL-kVJsSWY z#;<6eAZ-u8`nqZs-`Yb@x^`x=P_aajzT&Q%xNWP*?N>DMW8sOWzj>@<)URY#5m_ji zl>jAvP(D^0m>i7z)eR#~yYV9UrprrIn)3eTZcs2Wu~MqC7eG|xjPvxZAH41;*=Tk; zr-`JFPYC&%cAuw3a`H`WcNCkK9!m|faG(YbPX{?l`dsM>9 z2`6#+w-JxtV?Nb^aq#f#7MFT`)ze3AuqI-bKD+Vbm1 zc&@bL3r@C({$h;cH_rfNkJmMZuT!$|jgY?&G+*s@hIpaH@ zbEO$0Xzih2Eo}ovrwpKiz@5X7Pflv&KV#H%NOdhf&Eb0;N65L6r6tu;eUFqNsco(a z=d}du_l~@h-u)woU({^n(Dt*;w&UdiNKu{%!2>6s$F(y@@m7m*rfD}<5Z&s!eTA>t zBsK+_IS$~7A;u1HpaObsKU%9F#mjiFue6x;D{D0}OBykRvV}aD$xHx#P($a9=Z-2( z4_TJeP`fc{^Iusd%SkioR;-GM$ha9eJqYMVdG$0UaYd^$Ct98l3hRbDT`KZ8wMeIm zDQ|8TNNt)q5rggkvTY&GaB>54#cIXkT}xNiZnU^&({Ca~VJWnL+(yK*Wk;Am<0GH1 zYL-E%>NmQ5>)Fi-x4QBJPcku(%ehD0CjT~^$ z+DnltTL4jGS8tg~$vNjECmi&u*LoL*#kG`5kfb-4z+A%RnQkI@*!;kZ0tr{(jz-+` zPtc3sa}!L{J|B30Sn&sl><*LR&2Ljz(jQHhNRk}HU1O3oz&U)UBdEu{blTU(9S=>0 z?*97WqXIaZ3yXVs7)Bo|!I*rb3{xEQn)9z2{1@%JDe@N>kPjpV{x9K_^CV={(WcMgRIr*-rqsllxS+C|z;os_;k z)vachI3f#qJP^#RiIS)WcNN@l#CrR1YcEo_wec>M4y&hY^XdAG*Ggu*GL`e&2QfO8 zK3P^DbdG}^>uTS@cHRThw4{da>h<*I+o@clGfHt7{on*$TcsqDJOUL9)J5uc=yMj4DGbb>#Y*QS@6nj zI+N)VO%&{)^5@Yp*dDmg9eoSor^E<8CTRL4{+ne!i6!Nx=lgsrCv{VgmjfQ)jB!wE zFxY%Z@JIGa*%#AhQe4RiiPjwa&@yp=2q5$7IT^1t@THESsrZr|Dmf*!z0+UGunML% zRYlvJX9NHN$6Op%QkNsssfBu~F^XvQIlN7A;T=-<>2iH8Nuu6 zpK9uKy&GD-W$^+$mr%uQ=$1Ek17*XIF#iB>kO38m;(Kd1)9#;Gy0(?$xALxJ2tt-4 z18R<~lfsTk=zSyje{FH4K9_xe4a&t9^ol7bVDQm|km(0RxUjgA)I;WndsYMmoxvY4BRFC(IXK57tkZrPYF-Vs)HOK#MB3Ck zjOfrK8X?mZAp`G-Je%EC@;%Cu9>?*t+(Y|=v!*&SU+lmrzQ*L#AHfJv`hT6!owACJc zItd639MgvKBw2E$92LU03C<2iGCJ00#SZ}LJ|5R0@dlNsPp|2*+pJfXUTF@X5=5|^ z;7X)tC+`A5>s#O0$>U3St~HB^tS=`_MpTI+noQ@*kOA_H05~9UMn@Gtg1kAT_$$Ph z7Z*1I*3(u&47P4ekR+VvXvP$_dUwaYHi%F0I3Em|n^t{B2erG=^@u#-KGs$;?NwPL z;DseV`Yw@)H}#r=U`Cf$BLJAn%QxdK@1ql$aSTr)zd6f%Y6ZO1(1jBo*_qNy%z?hVSb<=E-; zjS3$NX_o#Oe-B*-x3u%DEWXw)o9v(uHdu&1H0!%N2n1)oK&}(VbLv`rwy%AE9;@NR zX=Br`?S~U>>*jHQ;{>qdpka}~?jOJtX?ATL)}eawq~`izJb!Gs(jG)1{{VTrF659l z0(ekp_@jFieiltW?&ik-08YPAblQ4o=?s|8Os+(vtB?Uwyz`PVST^L&>nd@ydK{*m z;$0`f{uZ~m*RGn{-L{4O$!2CHo1iB=bK0sO+CRZo&lwMWbYfkoVSuPU#4```^sZ0# zhL$M&HKd}AqG`;87AGN71FzTo=DvJMAa^_k8T!{QBM~}M<%#9GjXNJv-G0=XHW%!A zJ>0k;;%%cp`0=kM_@VI!{uVBxlO?CwEhA1Kk;|2R#Fhu3;DPv83moV$A_pV6t1AeV zaCWYK_Dyk15mKVFA<41}Yjtepxau+1wCwG(aS%XRg91l$O@<-7D8U1%TH4YRW0@43 zfO$Vk$Vi7#ftu+g+Hx3=m#1p2Du1O-7Ug#sk)u<}!Xk)RSNLI-_fs>lG4g2mwfRTU>I#rogHOO!n`i|9C3UrCnH?k%k?p-Y>B!2HZI43W0{5s|frbCFs0nudu#h_(42 zQ?r*tk?pP)^4OE-$s+7xcI0E^Ko5UjDx{tv)io$m-X9J_B%%)??(U~BiBsiQU;>lL z8ODDa^TgC4(EKr|rkSMg7Vb3v03ZV?kszCH+TW41W1XHwF%jW+Ed&@XjM<=GrpGU^iV#KWk_Cp?zP zAawSw0v{Jkt;=tDWqCA~&_vVEB5Cs|MP1)M@;ZjWzypAJ;=Omndc~^!j`r>=U8cbt z$#hj%yDJHm)bz$jIL9GP(Ptu|38~;P$M&XHc>64}moc4LHiSwlJ`W zMIa982_*`?4&q7=UcA?oX>v)a%`6wsH0f|sSQbe(rLjYm3$$_2WaIFtm7uQK5^j~E zwmz!2x7A>>w78z6o8 zCo9#4KiMAjCYhi=h%fY$a@#p|?#YAktN9tPqw&}8?nep_pQ7VDo7r`0qW zbPaABQt>6)keBIixNnD^0nRh-wXN-Iow18)*yKDts`#Jncb7MgW3%4hWoS@HF5v+D z#ZEDkk4{1Ltm}L2XIO#2N4cG4D%V03cVWALRQ=uv8*9D1MA5X!=1F2%EWda#1FUEW zaD6e?r%trdfT@epJd=8pWN~ zn;wgNe7_LhTCbZ6+=xspa-fK_)a6b{`gX1-UN7OTV?e&MnPQLaf)gEu#D+_cGpe(0 zU^kUea52wL^`Ya94&}9-3&l5Z1dn77c{DNM%K(I^MF&6X$rRGNxR&1LO+BvKWRuU4K`h9?3@PM~Y*)^@kHc>dY927x zG`k%h-rDUTwYYJ6b0m^R2?s0Y5?N#@-lSxXYpbxhz3{A){{UslWoBo-d9EV0K(Qey z9tPJ?aez7>UX?IwF5bl2T;5z-HN?3ptcpVIA%0Qjl^Oo;y+`6Zcw12Ljpm=L z!#T9Slt{Z25e$ImYhwhGi@`lP9Ew&~x;nY9bj@8J-%;@ffihX?v6pFNcf6i-!zU}S z09%X^j(Fo0m2aio_@hKy%egHrG~Gr&mL*@_b@_oDVCO&g$g295oq4HvqW<4YxYXuJ zQHX+P+_98Z2jwlsHjbS}K7p|OL%8s_gSDM7*jhz@p-wD}Hx75*1_8q(554lX?_ZSk zs@QMdcd;gcbFI&;_=3|>mP<)yjp5U-Z6fm8O@+ca9l+kbJxyrqo({ddg5yhtCzk5& z(dUljJ3!uQF((-&;5y>rvCBSzv}ww80$rs~t*&!vb_puM(+TQ`p8OeMs&-zyTJe59O#fjplH@Yy8`)a97mE)PcGe#5Z5Wg{Q&pJCeI`-%m}C*%$8(tFfG0|oFAs`z;cqFH+0t7$Ts)Vt=jN4Ibss8#qyjVBp{Cx(e7E=6 z?60Lih^=krw$y&lJQE2amLM2796B)Wq!Z|R9@WSAgGIMZQ~NW+AMq!EGd86?qNtB^ zZY5KX^`)4S!=OF$SY8d(b*r1}i1d9#f5JI%H^}lXCW)IRk$Q9J-MaF6^j5c47k5jf zS~!Y0j@R0ahQ>Zn-8=NpJk&MVIh)ewIdNlkpnalE8&9~u(@6gSNw^N=*moWy)30N`{D#}Z8zFRIbADnH*YuYa^Y_v@+q?v?v$T$P3 zJ%IHmpcUhq=7%NUiVm-7rrN%>as|q1laQ@4N01x?fM(ir$mjsiLsG{Sr_)ldfomJX z{k`G@hSBXW{8z*03_i$+UR@WM(>=LDym{#7>@p8m&!i~Ml9)sybb=*z$ zNNugOW5THxuL;$iClcGuJYZZ1)wdvRxEyhlfu7>Lr(5ySlgAKG4cz*RPc&;Ksvu>F zf%!@XQb_=|RPaF~1Fd#mFwiwyr?vtH!#Z3GtUSE#70@!N0jO7*N zirxt(wqiuAz+kF_mIP-5j)yqrrQX&ywe?6(40yit!=4+xx$zc{FxIpn(!+gcG5an4 zK`C(2XXbUu;jxV4k&5PgK{&tBUgFwiY3AGJNslNl_844aoM30u13rP;W%q}?M}Oi+ z(EML@e{<#wSzp4{_UzCM)rZ^S20)5;q$3^OCIK4^H6v!1<4 z?_55{an+!dB^7pOLuNr-3MWfT?JFrpxx)W9Iq=_U|RdV}y3*3`k13?w%h5pmK z=d`&ou>+#8$gXw7EpfSbXLjCCU@7iXLxd-v+>X6ZZ(5}+EV7@vsCt6mDDPURpD*4n zy#Vb{T*nlQV{!uUa4B3x1&thqC3c<(9Pv`d!W-9)Ci4&zhX)*b;-$E^`ywew)W*jf zP*Y_{mPPVI0zuu|2hxU8BY1NAzHNu0^{FC9>yx)UW2H**ZirxvuNfTi-jR;jhB)Ao zYDxnymN?5XJQGD#RhD;dk*N0Kief&O@MftlzoutMTOBzJ^Ght3vH-C*@WCV5xNXB^ zbLu{vWZoi6-wj%7w(!9;{{U{9+FMz8a?DdsV3=k6fKsUDTkX}X)+*=ssw{1G73 zudVLmSY`qxg^tA^D8mLTw*;JS9@UfmrER2J*o`Yn)9)hFZP>B2x)CHwOj!@X%jH2h z=tBUzR!fTy^886;nZdA4b>oNHyS^&X)0^wX~iR@Wm97qZVQhRocTXo|xj2)tO4# zGb>Pq8h;I1w057{G0iFkwVhl^5Jpm^LBfmy#~J+VlJGx(wat4TRi(+21b0Z)328CV z5IO_v{HxynAlP_oO;x+mEp1rKb76ZKw@|F%X8qzSj)!WK>&|;-x3vvn6xl^#ZFPMW z%#97oTiYqRRaHAA4oEGu1Ox-#o$a8VDAjtNP2-OeL#KQ^&@pRx`s@!Hd9zB*6hS23 z%3~*zFcq+RFC94UJQc6pc$ZG_cE3H{ygH5DrOuo7_6)(7Viw%3oy3L5pd-B|ui?St z4MSD7)a)4t+lAv;PU{JUT}U2aEDjrY0Cmq=u&Zeof@83QNz?w#pz0QLL{?4m!tF2% zj)Vm~oSsHTYC4pn)YoG>#rjo-iK8}|Wq2=MSRAF}MDlL^*#R2_0mj^N39fqH?RAYd zJBXu6t}N|V>SbpO_M3J9Y}yZF$2reD)z1*v*)NW7w7a`@(zTn5WSwKu?PQHglIkRt zPXR!Wj04v-t)tu6=(k$lj?l@gYH>^DSkI^YyQ2UcKFkh`y+%HrY2N#m*DS6d4!lLE z>Q<84+*;a;3uqBxxiP$H!>X_>*vkbu7{}deY+CiT_O*Q#{pv?=I!y$T+Q#lAB~HVD zF~ITSqnJjkcF1*;^L2w%s07tL;2Qn$m(}d1R$7;*n)-W={JISW?9j?b7p{IDh-E`|)1Y0pY3Rnda$MX*@uyDnK zcEKa1VEjYWH0zIsh_HCp$}LtThUx(%OAm191uAiR#u0sG}@K7+U-{0 zMPqdow)dn+mlJ@jfyYF_1a8R$A8}LaNd6nrFLVtW?#|;x)vT_ATf3`CV=F5aUIq#l zZMf*56P_w=dQt3kGk<3+_C6<{L;FqC%+Nsg@@|6SITT_{G26VAL!L$l2b!zmPY!BY zyqcAZ>2bcLsY?~wrPTgklzgC>BnBTaQV$(^0D3dR+C(y0T3fD}KA~>5BGxpGL5?;U z5u&z0!r*aK?|gRgc+qz0ced>_3mumy5k(>fU`uu6?p{0NHCiF3H>xh^{{RoXai=Yq zO-n=4;e%u`GQ%y@h!Z$0S(AZ|xb&`5;C{X0j~7eg1@Wz%zHP0=*PG;%1+yK)%a{Sv zIFlos_3vF}#rKMJE2)dVpJ0S+A@e_$FnRtSG1rq(cwa}lw(vySqKVhU^EcWqU?}1j zi_gQABaAeA$N-+b#To=%)4Bq5)Y7$GJ)({+LQ9zv*;JVoPn3?JNG2ti6@}!&}@%YaGykt`}sRLCXeYb{udDj8`|PX>s3phhEd6oncw@(RZiZ zzIMkVz5)7v@-jzoE4I~ioi|$1qyEypvC?CfFbIvJ$RUfyMo+2fj+E>!XV7l3XQt~~ z=AC<|wy7qgZs_7gU8+FF-nax3xFh?d)OtkMIzNbYLH28VnJ2hu1UC)LEWuc);PITE zJ$r*t43IXELFd|?H;G%s7n-fDrjqTb z-p3G%c8JFCZCo}FUNA^Kf$vFb%9MFk@2R=szZBj1_I8UlnrN^yzIPadCSx zl)Q>nUWG~OazGf|tPUGE>S~scptR|1BeWV$sR?(FP~OeHLU75@76o>UXO6u^Hnh-D zR)O@`*o^{abr8sgjRJ7n^%qlgA20XvmI;DgtHq4nvf;$I7B+VqwZ z+Oylqrw!|MZZ;&b4B&LYIqUUcat$p|X!N;n#{M0)(QG2rw5z1D)Xpv02l|_&8U4}6 zah!wHbCcGp_(t~AP>$E_Fu|v_tnCp%N|_|ieg6PodarF|FujK6^bvJuY#kP6A}8mT zR3n1f>x_;w#Zd7iEHz78<+e*6%S7u{+x3%}+=1k@3a;xp{S^ zUU)vj)ugo3<1ZA=H&%VjO12198NkbS!OL~MQa=+|>AHocmFDUfvWR1r88(|z=yNMD z$m3`Pk6!t#%Uw$5O$Fqdd#SXDZbC^M5e9p6o*CC5?F53vbR71r-vap2gqI?HE*W(f z8y-t|wnqJSmCkaf9WqW&<3iI!TW!Tk#&)$m#-FM*x?96Fl+lTN%SHJayO2R693I^B z^{#hQ)a_CQx=ZN(({jQ5=-8tcKgEv2f-&e0b6wT%hb;8sscN>it#akAtjldi-GDKH z#s^{7wR8F&iw={j&n4D|g>Nn9?YZsvWz zhbGh2;GXU)xMAJ8VHi*|oB@N5oF2xK+epz8_8n7Ixo~aNy`{E(LI+mJA9(Z}jx$=1 zdG;6!rKGnuwtzFFSlplykCgCFxAm@nU$ZQ-Y7yy@wv{BCUL*6oYIrOY9E|qQbBb?7 z5l&9*^WPcxzxzW_IAp?K35+is10YlCM?I>q#oHU(iyb>m($+=NZl(!vZd_rT_)u;?F!m?4 zdS8R|dvAiC5luczed6*4ceHonC*U-#h0YjdfX{4ujJ0n=PkQ#~j(1AC)NRY?-X@L< zc_o@3?7eHx3FOMeua?{lk@Ii>3<%&JE2#1O*Lpm*7W!SH>spPa%Cy>OQRUsnFjU0D z{amB4>A?rF7VPvd4tS?Zf@^|xyH*3tfVN%V_!zM{;NzU+92&#WUHlc|iFEs`=QtsO9qJmhu``D>b=ZT&9v$)4sdlU3+2L&^-KU=3?1qob1fXCD zJcaLA?eH_lSB_?rP}Ctii4ehb5fpn2t}~v1R97B3)pZxWg2%}Fv~1}?OgByB$MBz7M5CdGqD*N z_RecVPVp7)k$WBerXiLimEDF7o-ln!BoSFBQ1WDO?Scl?3VMA2rE=b>7J^(yxxB%i z{M9$O4?Y@J%Ja2q3yb+>fQZLAzzk2#{uGg07^2+S-Hh>4Np&SH!j=!%o|Plo&2bO` zx^)7eRGLUxkmDWk(0kM#e2`3qoq{*s$>7xu7n940%9dk;+qdCRY707sTYughZUAy| zRcF0|0z_lXn>Y>HuBFU_O;!tnXu4I-gJ+g>W%~RE`c#ahm0hk)Zjvy4{4A zE`nQ_k!=$pMp%hgc*-ci18*Y(9eL|C+k(1VUlyJ_C~hN&US8)i2_pU565lW$X&j6m zKTWPNufFu^-f&`N+zb@~*Mt5_SJoGs{S8d^+iTYgn9-Duz>M?1z zw(-jwSl$vz-mA3n(~dGQd9Ets!`cjX+Qppf6|SlY8)P9FcPM3HmOLJCK;w_cnX=F{ z>pg8OwTb1m(GviC#J#X1C*g2U77AwikADNpq;_ zkjFNef}x7a4&`z%N64cj=Yv+{(5>|i8s_&-(Cze9x3M<29$fnj$_hv&WkK^W^8QlC zBPZ6lU+m_W$3y!&Q-e~vmHxqO_Yg37ls4e2wSX>E5K95yr#0z55t8dz)ue_kIy+dV z-Ur(56(VN`VVT>Mg&TtNWs*+Z_ z6z1)2#jQTh9~KB=O+l^ngwtZw%bdpel+o1KjLAa40pc?9P>b6qEfHLVq%)nbra zn|~{2>54Lv3dn@xE_Wg2xx)iTTNt-{ zZz~)9LF(*!9!@I@R`AZBs2L}5bgSg7NbsadHc)amaK}D_sN$PMoWj(xa{ZDZBkS!n~bvWWkqEm z;C!Pb;}{&&t0kbR(@<7O>|yZTkM=UnX>DcZM}Dpfjl$~P91ksqa8#$tK_0%;N)4AuRc|NV-{a3@DA6x6WUJKheneBs3 zlO73k@&mPj1OPp~>(FD4+V0;@TZvR%&u1DuCQzWU7<{Py_a>`yl=&T*XW@N}9trU0 z_FdJ@&D8N+5+2x+9N|Xbaq{w`zpYEIMQ;|lW2o3gKACqEjMohE?-vTl%6ARl-XQ1N zvAz;`Z&9?dO*dA+xwf})61;#isVo$pdHF*9IjY|gZM6>$_>0358+c~7jn!WEDZWWe zj3a2k$5FUASW9yIR8gnmE8Jt@8uuez>ak(Rg1;^4dWhH=7v(hujw*F$W~{&UqD9 zYZ$fRCDd{Y>v({7c$E2WrvUSua&v%v>Dxn=omtBK#cdAXPO|YVI&X-6&TRm?jb?j= zD5x7TmH>^1ZaBwoyi^}=(<1P$rDLdnWXW-LXFaTkN?B(ciV&=%j1CArc;wX|5iXYw zrKW=im1%#dLv1G3Rgo4}2+RfvIAS=@dOUgIZ34o0Y_#jUtBpc8UpXcsWON|>m?MVh zMml%ng3|79cAr84e{%XqhcxRwI@9}R-64VXXdIa_84Oi=6$GdZeJafQUG4qt-ks)8 zr|Xt83zn5;F|EW*c#$LnpaHU{2ajADPa6C;)CYuZwI2v-qAwBHNV8hyOtD@t%9uM4 z4oK&|Nyluz5cqps_=$aK;mf;rx79D=CgyK1bXJiC#Dz-?GyebxUZWtM1ytm(XroGe z(X^S~+*oQpAJXI0?5@tar)0->44Ya(4u1Si{>~4|NyzV>x;jnFnyr`EAQBA~nMrpT zkzYS@Joh|v{{ZW(9XT!S^mzO|3XM9}-XAXE6owZOAP9CTJxC*VIm!2~!qOQ30J9@7 zx7ebQF%#`8qfJi z?UvFQ?zH{;q=aqk$F6_9=r|S8X-p(Z=DAhXE++;E;3wu(8RI>G{PG5A+WV5-mYbZd zhMPWqeZ^5X}0>4V#jwWZSe61dEPBxM{bJL|}&3`tO){@vlE?(%N5Wymamp!*<91ebhoUHaU zf|Ajl8$p4_l@VhPzaZIH_21EAvr(z0)Ebq^D1?e<|0_8_-F$YCOR zI2(g!89D3ptgSZ4UigA-M^3$#+Ec{LB;m#|69g^WNd5C6FmE)bb0~zFgb)$W$$9Fl0Z1(o)9`kab zU^a1&bHS+fyzf!P$AyGCb-;r{@HOH~$@b1a%T3wEAst4S1q<#2lpoP*SR^{X0p zkF+gMMATx|ti$V4vA8LJH^w4k}z}dL@;Xi>Wd$wWM4k%F}(| ze6hPKamiAlS~eLt$mDYEdTk%!UazO?I=#KVq2ZlnSw+J)o&B8dJB~q#^NroJgT*zm zT(^3bw4VXXVX13(Iz{^1>5q6MO*Fl;vSYwWadRIH7_;U5UMXc$Unw^c= zo?o_FB0-6s5Oak_>$K$Ha(14z&{)F%rllR)cQXBg;w$|(S<-HNvnwG#Bd#%!2Gi@D;~?Xl@k?B3l0B?8VCr_de$jFxz)Wsb zV}X})!-5BF%blMB z*T+z_x&>rUBs7-H0AV1(``I6KV|P=?`LyN*U1b>yi9>RbRVEfVF-s;bJ!jtFdI{pNjDzKd>(j4(qpf(B zy=}8s)s3~fMQr!%(MFd>TNqMp4VT|J;K(X(<^GuMtXYXI4ZqTbgS zl{w>(YjR6Pyt^&D9iy&ulTS7=sUf3c0qgkEU{KQ{S8!dou;rWA(zi#=V{Wma`^CPv zs3L^gT#~Sp8IKE|aB9?WT-;j5x!M$DwlUA8D;AZ@a9SBhB@2IbSEUs#tlwgY?K`AD z#fdPGR`r&hqg- z&jqX93;T%5866_YMv^2X937kSgOb&W7me?3^c$;711vf=lXOarLf^}`lFl4EM0f25cwgAOZ@gIn!zqX%Eis|oS z@+JMua1@JbjAfIZ`C<+M{7p0xvbEmkUZdjcn{7d1MzWplr;aIrmAvVY#u)5Upd1Gn z$sLbM($t0JrNyiU{%6u&>ODzdmJrgrwZAwd;B8>vFC2~yX4-hmOIxicSf5Ic>g3t1 zhT*QAq5EHxgBe8}0N`YE#cfM*_HP$iYBOmQOB^X2^V!U=lbA4=OKB< zF+kRc!O`Q>v`tFGQMmCUU0rF~lvC_j9y?Wtva8{;c^vH-$2`|TtoY4*F&xYNnns%0 zzO-BS42qIS51KLeL1rJt#y+)?;vF&_TSL_@wHd{5bi(3*OknE55Y&)C`1IfwyQY=zy4QB2jx(OtVA-If60hS&KIpwlI#~(_} z@Lri~;q<-m{q6cO)FZak(p!ZJlEo9Wk(FRhSl|QGu5db4*|n<;B`s_;TZ=pS;DKeC z7AYNJD8X>qJdiMRpW&-+{)T+FTJCiEKZkDO(KK7T>vV<-#&}T4KbBFvw`^c8P~m!g zJt}Vr+l>xS^!X6t>Uf^wP_s7Ba~a-2Wf%?Zk}-_d292wa5KXCRdWO0Ep4R!68+h&0 z$dQO39p~=9UUQx+E(jnzDJIEk(Ye## ze`a6mT3w{KcC%f<9G2{*S#qqoQZfNQGJ}r!&uTm^;8xP_qZTqNUnG2^aQf~iioFm;bDZ>k5{tvSB&}y*Zq_!t*`saFS^UkiIXK2f181%Qq&iNE z;%^gpUdH}5w0qc1+;T+|L}GPP=)1WLGCxyV8g{9w+kb3nR=O#?g_G^RUER->h~)zj ze1M5FwZ<|%DY}NId80w5SzqYT#*^O+kt`899K8tJBw{k!c&X)Lft zBv18f!+NeyvjLyhn%s#cZ+RTPi8AP3Ch;ZoGeR`DZ+z=Uk@tjC8ktn>;4b3)f_j?N zypvAxev4`?EyVV3Ft`mLD)J+4%8+`7AI`b?d^LFwinPbmLPMq9hl5eFX*WcJDpFNb zk)9byUZ9Uk(AD6!iYq-cO4iofSDIFm&11LBO(@Gru$0a=h6e|XntKs$XUs8d3Tdye zO=lc>WcZWqH$ma(zRznhV_Z*oUp%Dt1sx=x3#+8g_u2a@+uv->>OR}Nk{ z%C>iq2*FZF8*!3JM?b~g89ts;e|hFeb54Zodi@m$FFalOhj!qX9qx&|9q767Ox zu6aE?)B84i4<6d-dQIM;;iy*O?zLSa=_H!fqZnf?l)zz24E&&vmv&Tg4^`luQtrn> zo5Gr#iqZ5?5)L30XDV=lo4&Yk7aB+uPsE9+?jLp_Vw2)+rA|yRJFULy!oox1KVd(#>pj z6c)GWi6-AD?Up_VoTDI+Fachpy<5_bk#BPM8&Vr}ht0V24+30_e1o9$9OI8##z|~^ zTjERDrdFe?F+vajm zYI=>;#(qQxfo#4umlGq?*b2AF^^o=S)^-CZGQ2XUK`aSS7lOLe>vbDLFWW# zr+Ten;s#F{%{}y1(rMS=q_Zgbk%8l$z;V-&#cyktX{gI(NB}aeZlAs zM_<5pfBY(EF>VY+C+Q;#kyp6t%Q*-RxDUUW%gmS zaBq|XcrH%`y7BMtR+mN&YjwE`CBBoW!zHkC88!=LQG?%-2W)VC&TB&Q_TD6w_Xl83 zB6bb1j?Iqse%5U++SFVdlW}#p?or2qM3U=IG~~ zfI&UD>@#okVzdCvyS|8R`ktM4FgZOd&c`c z)uZ`xTS&Mv1JHxm`ijikZB83syiH+ZTkCnH2<-P3j~Q5$;DT@u7#)2M2=7{c7rnL7 zZI%auHMW13?IbfaU<2~7>(3ZJpGuDVT5VYUy1}06;n>A@Yqx2RGr(ma9mAl({{RZ3 zeLH+Rdo57dE~}*$Yn${}VKg!4{c0~El}<}2w>ISQ@(SO9^7c?PWBWHJ?$_XK`-V7SIV}8;0=ZdVt3O zl^DtG&1XlZMX&0Ms%w|lvS_fZuMBZ*0_hm}iX5J-G7d+fJm_#fZAcEzNO&*02rmNqocQoydA5?@ePsUtWSht*V}Go8z&I#WUx20A7MfJIcZX2b zgl&C$Aqg6>Q0k8wj{5J!5!#5ZCs}1> zo+Qrl2p^7fU2nw8Plj41v~P6XVc?f&G3ojv`Ppo3Br{+~$Tt+goe@ z0AX!>#<0N+%)rJcI9Wb$$^a|(u)@6eTi2!1b!jYS&^$KsC>vVePg&C#;D<6ce-dkt zgT*?YyQWy_*SAt#TWQO-2;?LrSv_&k5_|Rct!qtEG-X-iO`H}0a!00r4%Ni!dslMh zUEkd`Ce`xts4F(YJpzG>maVaj=H>A-CVS|H0br`V2JR2# zRPQ`Rwib#N0D9xCTzhDY<}WQk9U7*%v$mEmE6hc1{`c|7Kf9ASav)u2}9Rg5Q>1b=j6IX?BElJ7Vv^5fHr$(p5df>@&k-!zBU zEsA*2?c9)E)q9m}6Ix;b!H7(+W14T4szU%t{$Hh0MQAMJi2#XyQ_~}*SX`^%Av|$~ z&T3E#H_D`Au&Giu-ru35er=?ma%iz?LR+($ST0HHw9!vpxed1f^MWx&BCdM1j*YK*A8#6iBf|mml47VW z)n#MkHZz^UmzL~KcrQ1i$JFP~D2@q2&H6ms?wn z8GJh=R&R2z1>m=~Umy`9d9o18*DIW7CqA{4uK1(=5u&y~+t0eEJOkWRbDWO@ly}g{%!3j63D@Wx*thrX`0-OcF^&Kn3ye<1bYC28o zO|8dg4VudLK1euXHjE}tK2;%@((cwn!op$#f zcqXPRTO(>IHu+K2Y91NVt)bIzv}B9@Bu%Bqc4Siozb^2O>cz04BY-;Ro(*R=iEVW) zZaZ1t&RbWJOT`oeVdRAt;nU0#Ae(W= z$a950U^ zd{5zhCKS=NxvgY^#_=JEt?gXwEsj?J5>8YOwEGVU+g&MGErq?8mm>~KZz&?4cb*6g z-F?W%HD6r3O=&H|Dp}cE%PXt_RJQezj(7(gHtyq}%b~EA=fgG;_<~!bsOeGMCAI7i zBQhU2gpG=Y;|%Ia1E8wq>Ozcptd^v62U~)MFA9Um#WSXh0&utyuq-|}b>Cs4$He)TjX&{9J z72M-#?Z&~u&0t)3h7SX1*6nkx-B?L!CC$CCRXaps+YF=ChR>HhPrWO%WfZs2*@wfI z_g*NnxRzJ7x}Q#DhTOT7I|XdG$siCL8%W1W*zxX}bbLK=DTD3O>Gq8zHb}%9h689u z80*mE*A+J7z70&xpB{`o@-yl zmLtxdJ9KDV+ruii-DD0VLR93FlB2(`wRuLnt7`IiTUEA|qO`lQfh}~n%puLmMr0_? zer)7!>&AQ6L3e8xh@-U9n_arNy+|XD;tTT1ODT<*BLKVrU!Wa*sEe>kT^nm9oW2gT zxRouS@dd5yEhK4?Cf(Z@{M_J-u>j*AN{{2`g(CQm;2UUkonn1E#8$C`Ydx&8MlGgr zs@P;1A(XoJ>MO0Y@U^sBP4NmV^wN5df53WzYqyEpo3w$T=k#*U0D@j*YyqFoj(svd-wo$qT8~GrAg>v37_*vq+ z4+TSU;K=M|TUaG|EN62IN~o6O-BC$BOuhLxC!)EbuI4GRDP`&0vt zc?E##Gm(+akp^&lLa9Aso*@mq0QTb6AK(lHd$yGe7X zMLQUzkh?dR31V0r43W@hjGWPZrA44C-dM(?OIXZPOO4anobmx2?d0Tk&!OWa-K_R5 zaf^4hz09F^rCaEY4bsW|jc^Q#BY>HK+%}ZQ`n+I#)lSC#>%(%#qTiH_WFCAs;Ye%P zR2+xT-Ia5mN6Y~HG*nCYZuyKyL?}9th+%3wAJ}thxg4a)uTZNk5 z*+0>*qL>Lo1OBneAA>JLo-xKPX`UsA&Sbh1-fC0D^RfNn$eVyyL!K~m-1Ie_d!Wl_ zZuWPu$8~xYBv~Fp5_6Ha8%922I3u~i1RCh=ZQ|B+OE`6{I$aA_L@NkI%#o0DyMcf} z86%+to_YrSg3ROfPXINRrKsL$!h3x_Mn{@S-C8@T2|JxY`=n&&zZg9#oH}jN%WGhf znG6rUHbPLK!8l|5ARot?-j~FhjYEXo62ulh?gpvD4;} zRV^*d;RZ~8X2U7$3wAvEaZM$AvzBmN{L$QQlc3m(m6Ax~d#GbOoD2kv^$Ky*x2dRg z4-{#GNxt*nRJFTF1SxH87*~v(VTY(ZoyWFETFlk7%c$)?w=8u#i#<%+pF7XLGOI6*VhCn1Z87U*m|D7TIQ@Jiu=r$ zSd+-tEM?strqvg0m(MTW9wQ-(4y1v%0-dmU1G1?@6b>4r3E;z(cRjWNfu+Ao72 zikZimTIDOFoAADdno$>53X{2iE>N$;Dte5LgmIkIkZ6~3YB$ z?t1+xO|Fk`b1(LDHI(;~n~RuPj(4AwjC46YG4EYxhx|jK_-4Z9TbBbRMgxoxB>DxVg>fxVj;ujP5@v^ioDw&=4`&{{W12o84n}r+n9)_agHmH_;2A!J{0Ny0NO~pjQ`xtO9-UMIbMCj zjsYZR+qHaa;V%eykM@S~wa&4sNjKO$%-vo9LPou!kKY_)w^Lm8Dsuaf_?e65ld>*+ zHuy_(@n$VU#CDgl=+}^3;bF6YC_NkG`IIRc80WWMmEY-KvoO=d;_~gJc5JtqaU4Vr z;{ZwiO?yV0;ma=zL1U(ARzl9k1=^8y>@rEuJd#Q8)~er+vR=fk6qhe9{{WF6XgTCy z4st)qs#thh^VOPiIXzkCej@lOr|9|;UdKM6doN{9a%JZ}&BB&WB*khWf zeWSmI=C(~iOlxopL%D|60|4{wk@?rxny-rVgW!vZ^<8Gd%k4G|5sqn9WE-O(h8;=# z2hzSi_=VzIZyx9xEw#P8kX~9(Ge67wu&;tbp8SK@cCI>0P~PIK-CTftxX1&!E5%0@s({6x8SZ*j*s)nK4(D8S!nOzHnubsv_`t`w zALCb~jxXGc+xP66%D=hB2MIbulm6)QpxGt;g~q}a;9 zjAI@6{{R{QX+biM4_tJ{MMT6xepEh#jCJ&@QG#*67~`cn;9)~;0Cy*@C>cph5Yoq=--R^&68C15ZekM6B$52!h6l?SEze#^&J>Ob2C{A; zw7$5FuJyZ#g~p!tPL^^6lgmjJfLyO5VQ|^$o;_=u(sf;4-@#ra(j~kJb7il~92$i7 z=5MrG5=wvvBw>Ka#xYcUC}p2hI;>Nr+_2p<%XrXyj*d?vn>p=&%NV~NjwP0-X|-L2;dr~C3{%sv>VH3lG*Jc@)|^v>isTRBWsA_l&JEK z4%3ES52*F7%EM5LTeQ>`9U^G0E;Q%zp6+J-#N;uJfym<-#y2a znC!RD62T(0krJT>++%X0l6^h1TfPm|EcLs#({8kjyNU`ny3gsdv0tAhm6?m9ME?LVAmk&AlYzg#HH!>doyqZ4jlp-d zmfcnqSQ+Mq72SfPmO;w=!;j@!gHP02?$PXStRia`x<#K*ET&ziMcUg~XXV?BjBq)v zO&`Sr`%=SE!(3}`Wj(#iDmt5@Lbi5+g#aS}s!vSk6fo*>#?naion2E))giyVNakyi zH=Qbl8^aNtoNZzU9S5y#Uzz3C??Y+&PJyORD7iY_#9nlgfPjpa3$;!_?sK=AZj0gl zKmHNf??1EkJx1zs8b>d+dZ;Q%e)$W5&JVR}NpWv=pxaM%4xOjl{gDt&sZJ2MO{$@R z2MiyPkAAfDOH>bQ8T#_+_qv?gbkj>bS4b~X>cm2Yq}a+y;jpTR4&nUz!xg2iuAOMM zcXR!k+17a+$nz|araa&dRS5)+$MCH!Q%k(@RnSX65L&cSS-Qb{rbFeRk~R6F&T}SE zl1>M4SY8Rym&KkBu(pNgj_K{0qg$(!98iq>-Eon-uqOnHTdSIA^ogMcl^%<($!Bl< zmv3(jv0J^x!+D=GfZlNELD~Vy&%XzbAL2HWy7lI_e_^hynshQFvq$E%o0tQb)frHc zgZH~vd!uO+ruD}1a1ka{m95%ld?npm98s0~I|k4v|=R4Wc+ z2t=o9f;qt6$2jOQ#%ZSaGi^Nw_*=r`NAO~=+DZwF%rgbwl)D4n?eMFoeB| z=K8|@Q{Fb+AX?c_H%bH!;acDj{@tg+0hr0#)tjIsg8LCHNS-%x2<LS`<$`Nw-{x#5_tB0(Q~38IjMICSYwFF-2VXxA_1Qcj zcdJ}W;QN^cww-+H8f5nx zESipprbV}QguToLM}(*+F_Xa@^Niykl^b1AbnPDE+SsJcBwH>mWK5Vq8@I+zcSdk> zcs%jxQ>MkM+T-<|CL7@{o2lE!eJt6EHH?sAZ$3o*bUT!#*f~59%{D znoDb&d#hq3Te%8g$0L#Q$fqO@{1ML;sQNr9pxIx@(p*U}WRgiR(YkSr5OM z*QU{R9}nDV`&fBwG7D|{K$c(oW78_y1@JjYQ zNymP1Q+z@3-Ik#CR(fiq-Q7Qww`TwVIohYWz$e@BuQWQv{e^;Q7jjEHPURrIauiLK z&yykOU#<=^M?HGz*h#8uWMUg@8w*%o1Xx(Ju_O@v1`gi2&r|qXS2L5dxk_z7N3zP; zhWi*2c~ShnWSIFfI%6FD8GY+p!2UjYw80JZUuL}XAIvdw1~L@ms8UB?>CJOG_l9q^ zyP@`ZOg8e*wr2o_Dh|*_IUo#^j1$1)t!zQy8^LjO@oHCEk(pcUam-dI!BBRv7$6ah zW4Qe3OGH9k$4#QxwznT+HSNhA>I_qIIwh%#Fvg+8cx$n_P+XWhPYXoq-(nQ$F_S0A4=1e3MR-wvSEZz2~Eg)q1&I&uRJg}t%)GTV#8;9BUezXv;^5jumdR!IE5PL^;8FZ1R2VkCEttL1HhByaH2xU)vP6!>ep7ZGdjJp&4X-#NE?cSgS!BZq!Z8z+|m3nU|6+fSfq|N-Yw+&((UDr zGB5(<^X;Cs=TrDH+rgTyyW_tO_-=bB^`cVt(i?_*cRhUPhx?_tV!bzKrcEh3J0a7G zm%SrH=%usP&J@KF8Ex&^#mdnGs zg!Af+Zm_{Dj9A;-FwV(xaLm0B;2aaUkOu89+9%^>=8vN3_STWhXQ^tCq>^dV$|YMP z6JcB-A1Nec4*1FG&&wKSlc{*N{^QCmG^CksCy~38$t3k8*9BVKuaX)0H9Jp)p^@eYzqdR6|Hr`X2M z$L;aFjk&r7RXmIj{;{sQ6q-rNYD6kM`kQwaj;v!c#Mf~TH_DPitU>i0oM$*c{<_b5 z+gp3NjD>{Jo(y^5@xg3y{{Yqos`yhv)#TM~JV&i+mb#p`7U^#f*x)dts5$6)&p7-l zOPfh$nrL6)L-wzTbXPIm*&<=dt zo54D@2`F(vW=${LCrt8NV zYhP&^gWo`>4A$OI1LY)O_s$8$WKE~RtJ>-|_imA`!Ilf3v>|i3zW5+u=L~;3w}+=@ zk)w^0Rz76XZsEPTlMm(&C&>6D3C0OfX%ezhBgAP(o$Qu&+!Qy%7@c(Ne5Gy?idy>PHx&sUe<&;SUh$llW@j39mJnT`p`L<%=xFMBF4Kfs7HiJqBx) z(=AP#*u90clferl((Q-K3IdjLa83g4W7D9knl_;DUtY_vTk0Bp&ZP{d5+xEOO1n>z zh{2V5mfm?ANF6!X(+E~lQCm=GhE;$$*m!1x2_>aVPwwG6WlS3Vg#U-`G zR`)Z80UUr8ag`(FIUa?EO>=U1dfHjEtE;K+oa{+1ZS=XFE#o|IU_r}(zz(=OdRIa` zWge1jZ?!uJd`CC-dAGNU;vf_E5)!QBCk{8b>G;)exwY@2Go|rG!dh50yxK}#M{@<` z#kGV)BZ6ZDmkrAT$FE*aJ5~Px5crvVH>+wka9HZn+uFu=T+1ma#n3EbKaoix+yV(W zRrbYF(xveJw`XH&9>NKvnsV0hAy&6n`NBB>6Ot4T{{S!}y>IKDDxTsSd+k=sQSlPW zmh)TK*xC7EBVtenVsOKDFita^_NYyY?{a-d%#Xu&No8rJ!GC*l8YyOlK!yfgyOc?| zi~!AypO_Qh6?)ghy6%r>XMHxiVXaSZBv&@J=@O$L2WefSXdf(uIFNj3>FfVzdW2&<&@2Vq7P_Ib zx`k$)Mb@b5V~%G&XdAPQuA@pG9`N>+_V|sK zoNl9Oql(b^i7Ujx)MY^1yI^dQj5+EnI{Lut-YHjtZ9TO&x^peCKYB7o#!MV3B=Os= zH0&!kvCI5O(ELGdJQs_0v1zwAPi9^{LR&?N0NG{ zs#;6pF$&+wVwO=&9kqq5Vo4Sz$Z}o4ETjbW>ztl3#zUn{d}Xg(=~oemFJx9?+1 zOccQR0p~eU`ixYhZ#QM4*y=7kLVPviE5IX#X8Rblm|EfBiy(Y}Z3MCEI`!#_O*g{r zK7nU>;hjm=b@|@oc@f0Bj#a_?#kmA^BCZV-WvzX5HUoj() zzddpv89jll+v)WG01j(+cbZkT$M$ZZS>&)+Bu=s&%0d&6+=0e9_orfZdYvwjVA&$(U0t~QtB?wpOMJo{5TM;4cFu92tSpD@blbu3Hr2O|zf20QcDKU~wa z$u4|*9+efM-so**x;y*%qgWTna59U=PDsc&1QEs$BcIbPt@PE^Et^n|bXnz1HINW4 zp^2M*&`JI*uNlZ((z|ZOa%t|J7l|~9ye|ZiTwOzLrb#SnrOpuYa?afojPd~LMMI*# zopn5SGh0D%ZD!|lyo8wJDsjLEYndz=WVxC=J)fEK7tc;lP(Qu-(Wsi! zLgW7cXnZZw?5!uAH7i@BWJsi9CW=lD?C0)hucm7gOuM(W*Yzn`P{cZ zD&v*Uq3=$&y@$k_mC|^TWRgqO2rk(Qc?5I{4@Lfc`qX|ThSS1NY}VR>+-cT9m8E6# zp4Eukhh-svZ(iS#sbfj42{lMRva~s+(^+BDF740SZMPg-$&8Ss4inUN>OCu(v$u-V zQna=+8|QGUvO=W%#0;?gPJOeAy`d!9q!$>9NUfzNNx&KMhH?iTNF4O;c&!OEfv2MC z+EN$O5qyiQc>#8h0A-MaoOC3Q!`bb*GEJ)@rn6(G>K2co>QS3piGOraRG8--cOxEF zLH*&+^yf57yRQe{e`0FUJ;S`JZLi{8(mMYDc4Lkt3yhwPk6tU&JT-4)qS-+#j4t%G z4K{8Gkg*_^Whb75^go6x7gE!7`}^HNt=3r<=RQjV`^4NnQ_gYfGu!enR_=wTEu?4I z#?fk$TNai*s9C`qqaVC{XV9GW^vz$??>t8yrDHr+t#hL85HW%UN)X?@oLjB!8Zy|$l2g-JGzf<_35vCJU^#MZ)e>cDr52-uG^7;hQZ}=&-ukC zuE7<`aXQu9I>wk|y^j|#7Lp67z(y+8W(n+(_(_ zGVUjOf_Oa-{{XJ6UtTVhBe|XdE$p8?mYmr;2We#g0Azm(p0%D}w32p@SZOAj{BD}@ zTV%1Z=s_NYboBg1Y~g6@xei*JeiG9(OPxt=rYJ;mpPK-0+SyV)7dbigJ!*dwm^2-H zn=7`AMy(qIATgC;f`lJK&$VJ(v{n|eX|t?m?%qPN+}pU@HhM7b2^u4y{{Y`OBj32iO{**#eX+1z?zZFRNKPEKFkcNVt-mJ zzmC5ZPlD$fSo|?;nPI6KAAaeVXIM z(<58`irWMk2i%cVe9Bnhj-v*=N5Y>CFMLtrN$0+p%dTD)d+kL!S_8q3GsrL4w{Ae^ zCb?=(Q&w&gFE(Lw$7{8MS?I&%G_%uau;mGjz$p>U&qxJ`MO| z;e9tl(1bcF+TH2#k@GNhk@L)(fccAH9(fqR#dey1!;4Rcx*esJg{mcjoyB7(JNo?O zo^pB5W9?ck3f;nEh$^ETmEd6hJcC^{XhtgiPFj^Uy@oHDJmNUYhEdFlG7){fPoS); z-wa*c>q2W;0@w!;pE`KqR+k&TV&~>39l7i8T`h*3*2l|0rY7sTx%?`=sTG{$*lJeO z+{U*tUc_LSMC$Q|0Fpue_iEZrtx;6$-JYn*hf-r>dwyIIZ;gT zL*^^_i;cVyf(XWatHwSz={H^@@OFi&TQVixx-3@~(YXi{A3id83P2>2)7V!oBj2X^ zcLx^~c?E`(s#q+t!K>b&nRYX!!vf3coaU(|jku5O*A}MjGnMn#aYLR;zg7G?_pB{P z#CKM=u|s2WUeuC|SMFmt$S2f~YUs4*61ER)VwsRk(Rx-<1xtCE06BCQTXInt3wvHsA(#Vt1~b5qPBZk zd^!M4`&UkRmmRgJmZ-#iNJzA5TnA@TIEHSDmxyfQrL z9BGd&m;gZk0B7an>T8$NGz;x9cgG^SOMuF%GsitoO5m+EIb9gdsY>YdYh6a#2l9O4 z>OdREO#N!5ihBN{Kcy zoR6QkJPHybzrlg+R8c&aD{XK$K2?S?eR|PUb!$m(Edh%nMIelJ^`eBubJlfu8&nwt6Mo^ED~0hH;v$8-#7r09082?Ja?{B!k#15A-GK%DW2m(7gK)WmlF(Eze?*@0Hk!l(ZE+39&ALeyke0_kd*;p#2pubx@P~>oJ|x>~ zgHY73Yq zL2_8-f!s&7bHQAeo`%WlPpbIO!#ZZIs6lCSphi~a8)Io}ZUxIA3Z>t8&H)4tgl;(N zk#Uo1}PQ z4)3#_sTz*PFbU3bz~h>Gc#8ADk_|Uev`Au=mP3CUpSdb23<1W>{Ogh2Q`>T7Cbc)y z;v8C)^bzQ~Z06A?xYNWMfMRA14&`S(QNwiPY3RIopmiT&A1iOV_y51(Zu1*D=}Ml353wl1h=xa6vf*@J>lkN7kro zo+N!oPnz2P7~Xw9?KZImZ{EAbA{_Ido5}=&NB5}m4OZu6rCBDAr%5l{pt8M&7kgm^ zx119W$gGD4gSCA)Aa=z?rox(7md@fW%W)L2HLN78mjen;3m!Si?T}9#)Fy3S9bZwk zhfi;@nHoi#%tbP^h>jQl4;!~<-=-_0v(oK<;UrmPy5550e3p{N(Wu^yy&N7+L0l3? z-Oo-aTNS?LjU&SEr(R#*-Ny=APZ|aDB{D$@xY*l907JFCaf9tpCyDgUCho-&=K2$H zZxqH`1X95eFaXKdrg;G5k`4w9YACfDrQL^i=YrD=NhiKlAT zlHKV#oHr8ex`C0yg1@^w^*P8LPCcuW)AS1+I@j#>+AJw|5tcMf%%Rn{AeDe8aUibM z#~B3l#c39z?`xUP7k6&Mbqg6a?}>U>h;5YwvuP;=vIgefY)7>~#xsE?SEfLzF7*V4 z>9$!@Xx{5iWtF zt%zH#TGm!X`#XTIZd9-&WaDmCdhm1aU2dOk;fZ`JspvO$k^7NdJ{;m`O- zB-7f??@Y9aTU7nr#MLsL=J=UG2SR{9|1wk<&uFb=F1xe(9N8?Jxb6Q?U4IYgik8YOM7HuY- zb1lqfGbsJS%OQ{ffsLwI^FnsAv&K1dts{+Cs^203a#sGm+`+MRZ;U z@O-*^#iZU#Z)0ucI;6rfBFV@Z&IjHj1NAk}d_ta23wT;RKEgGU$j(u`vxJbVoMiGq z;1Scc4@5Y7($(l~Y5pd@wD@Q&Y;Atc6mSb@FYWSGa7N(DPs&eCz>$;Ix~)6GI;V(q zxV1}}AitXKGxmd!S|R)^69d#>XQ$US=HCtVNIY3BuAI$1t*xTvlW_pC`=D+0ZhoS) z<-EG^?z?)LF0(a;tsFa_K8TX~oZEIw1>XtubRgU`ZbhltF zyxABrC-^|^lh6~6q!22U`W@7MB3lg(MvO~hk!lMg?^w@r=c7Ie9D4gyiLPqewT0fD zZ>J00RtVjg+m)3kj~!DyVYmY$^Tk#8UE=LV@(ISZrVS; zg%3O)fR2L{+B1W?CeplFY2oYm^i4-m7gk{$w1&YY_*2?~CmpO^L#${TcrgHV;jNqXIvLPrY66*NF9f8e1DZcuT3>#7&*8&E%iCG7gI59#~)z{qDVMp>&f_ z)GqZa_gP7iBQiq&0J~U;3d@1lh9{7ERpha<*ZeVir(e86IiT3>FCRJ`tVew1RD;(% z(HU9Y4(Y2hT{}mbS*Fx3noGN!`I1P)=0XprU^@zfUcHX?_TJVA<7WW0qmi&+kO#lD zbG`=DbyQQMUfwK{1B-jPi%G_^WQbW__I{FOKmz!#xfWrNfu^Z zzG{KAkUepXj=zOz4NmIrH-_rc;!CEFYOE0LKt^zRAQPX%tz}$l5?@RGnf6DxyPTO` z)s!&Y4=xWobKkG0Q&`^2=vHdXt$Sy6tlX^j;CU+~sE$ZG%eidx&=oj7pn7Jn%c9z7 zy4<={myyqVs@UL&rBacu(H?eo`H#@^=xZ|F?sO}mE}tuYd{5Q&>xr0JPOyl~kG-WT=;V(<@*X>9wJ9dGOLIPC^pU{$Tf=&;w{xU; zlJ`xX<5!Z#C6ePNIRIH@P)0Zzk6u|p0@6^8;xe>);%unSp1e-h^9Fpj_Cb2 zah!T)s^5!^A{)!ZnpRXDK(p0t?d6s`n8dqgpANYIfN|fNyQJvaW%cFSTp4fSTX`SL60$lvHbScm z9Ah2LMA}HIahElWC^cjd7egM<0VwW6931cn_UT;yv*T?)!rmsmHl7i=)pZNTNm-4? z=*bJwRiCg2w@_RD4%OFu zJ@I~%d*fTJR`MHL8_Bfgf=Ho$8AFx!7@Sz#Tw64E zGFxuk7bE~emIDB1zpZC$G%X~q+df?JXNDt$TIseBzncp)T-+22P91{h8~{$@2e_*C z))x$_vgGvnx*Ga>Ti5(I;JsGb4-o11DW_^EP~TZbyP}r^mKe(ox#`apldSwI@a~}Y zmmU+f2EwyqBhC|9QQgAvPR~2kJoA(~8q0P$MJQ+0mn-Z;UE4k~jkMcFC z_Sw)XGqMr)iR)gG@hjoRo#5#0^$QJUWr}%(3uijwVB{0Ws2C?WAB}mP>I9I2``q(| z=DhhrRNa_83-L)Csbm1C>xwR;f>m9y{`0@3XPBK;cJu5idt{V8KrN2MR(B~DmK6}~ z!76(^kGvfc}?x1<-8&je`A1MU2(QX+nvekas_ps8lLyXFxW?Lyd?T|qiJTB(S>N!%u^QPGFNyF z&T*4oVeq5E{{ZleLwRs?^MB%d$fto|wV14$dTmlS1C`yA^B%x~UYz%`-gp~FXs;gO z4c(lcUzq#McQAw~%sJu7_T%xYvFO52mgUWRTh}1*lvh3;GwG7+mNBRAB?;tR6)KW! z>ueDz4cFS)q%E2A1v&5ut5vod5 zI^*vk`Ip!8X>$%*ZY16c)AehYp4RK^Rwp9_Dd1-yR$b49Zg2KA z#-*pp_UQ|GD>KMmOddcB!78WIIPX}VGt+eM40y`=>JKYXxRX`0XkeB#MYf4b!cO7I z5;GDyX9qaNZuoZU4Qt1GqgcZ&wXUD2TLSZ3=VUS#7z>gc=a6&QVDZVUr3B1nLNj`| zsj1HhP7S)GigZ5e=1`c5_M_IczA({H>h*an_}IipY`8CZiqU+LJs^W_g}6 zKtC}Atf0!{0KI-((80(s+Y2!~6c*^uy+-mYRoiRN$zhS8o>npxSFHc|JKb|7abj`g9erN@Wnv(&9M9WHx0kC|~acQN_v z8IL1iCzIE=Kb>Xha(}`(<0y2CQyf}m&F~~UT`n1lj04aBT#R?ddFx9RsXj2d)Nd~g zejkQaw~Eye01Vr* zF)Ku3k&*JC4DCe+1N*|ayfHo3gdWP~2fNf33vVoW*AZ^zK_r8aPE>M#txfxvs&=sZ z9VXXK@wE1Ogi)>P+3k|mA9;#nwU=)4c*CjScdPoCw!hKd%0{u%ir&H*V^QWSB$4mP zz{23?9-|%Wneh#_qkrO?O=kB}hWcBWm|X}SD5Y0LQn)GyWCJJZ+OM_6tWoNIO`6N+ zyjKKEDJ9Dl-;8plc8;79YL%MvDYl#JOJS$lX#P6U^$kYyc7od3c0H^`qnsVc8PE*l zEDkyfA@NR;{{RW)u8nsw7p$#u5sexM$53($a&w+AYW0o%g_gKxvxpS>GCF#U)?bcvoikU~A=I@EJ*B&{V4_EDn{Ywf!5jixj&eHmrk`^;E9jBY&*FP~ zKeXJvz>`l&5h8nZFP6y|$R4BHoYoN6^;`b{6V0P)nns&)p~FN-EXFbm0&*Az+C6&J zjV3hIZ#6Wt(xSUxJZ8~Mii(PM;E?|SFu~-Usn1HSt~2Q#H;++kceR={-Xh*zB~ThZ zSoP`sX*Y7C1#2Bwg}gm;E~}}*rRnzCeAaCUl)E&0)rR4M2PAvcmpV+^W!2onONvL2 zEj`R~t~Y=Od=v8HwQ_zR)HS~{?d;~vZ8AN}Nc;T3$sCc-xERHB)?-f7bn&EIYR<;_ zKG4Z+7nn#qHsj7Q#TPSb+q0IJ$542CRhs4WyQpt2Hml1U;ILkUx9RxR?+C@Dd{OZe ztag%H-$MzNZY7Yb6(j@7x6-<petb6Z|B7Tzbgv4+c6`w|q8NG+ntPEe^+ zjGunI;;(pSYaavY*EaLq-rwHJ14AsZv2dUsqpmZPn$aa|+{xWN4mRotrMlHE zCh+>f@dLxDZ85ivgUjUrUO9GdJ6sct9Dr+jTkR^>Rn(s6Mvav15yl`5<$wTS20CPl z^N;vT?{%LW*jVfHq!$rP_OQ)tnJ|~yyb;%T%gO9(W?Q?9j~7p++Um1Pq6KxDNI;V( zBN#os{i-fe(%txw-01K{VP)nOM}IaYCS9PPkPh8X`RkXbyPF#=M%ovSXU<+QcRqiB z4?&!gefyf%(sZcq^m}`YxTKgxbs|pCs~|D*K_Pv@n$hs}sM^yBnZZR;GH?(Bj1Nzx zH6EeNlCwoCdjqOknWfyqUQ0N}?DsyyrE|$Vnl1EJ<^r%G^4>)RZEW$ldSeya&3I9a zR<5E~D;l;&6a4n5FD-4XG~)+14?7Z5IeA~!wObsm-*d*bY43bL<4Nt=K(^E}@Jk}( zZveL6VpNg;007Nb)qGKR;2l#&z0}fJ?JuPtWxSae$wnO!$oqxCAxYyS9eVl)jyxRN z-ibb&sU(_x-oYeOuO=t{85EAAu^yQfTMa_VuFIR5}3^sg4wKV<6<5Nh*H z2Cb-Ru;j@0U4URjiPAY z7?yjByPYb|75geJq>>~mOO#KQIvj!cSDsCwOLOA;WwcrEZFNl^R)AhzyF}M2K@4)k z0D?im99J1H$30)e_UWSETSu&FRu?x0;#VzHE=cCV?c#9B(4TBD`$7s95W!+s=Kw2uzKbuEOp zwoeQ(Ni5IhkQt=%)S)ftNcR=!-wI*-4}~65!&ZmDF9Os^KoYs-Db}FNj zkGlG4W33#jM1vXKOku`x7caC@V6qv8guYvMEE=rrAZbsLKl zFrHbI2_z321u9ShxDdU7#(UQ>tLr*%horPH+`^V=CzCuz;AAsnX!(y^o|SIfR)b!d zZS4ibQ^xA=z*d9@0I?+h0FHC-T6;UIn0sqzaXM5md|>!DsA`d0IlZ*FX_Y1ed1#Ip zV~`0}I3D%qz8CRV{2=v6P}i2T5NcE>gC{v`31li_az_@@5=PiP^XeAr%V zcFKLFf~X{RVa7+be60$_r$s8++)FfHdGfg@-~RyBUS=*%GmN738q;H-_?_ch-yZmq z)@Jh{vD4Gbvqe$PK-|yQpXe(B!YRw{kayv+jGCUs=Gq=M4uD`2>-4K%+ELp96R%#X z4-f}e zP>^CqEW{Qctts9cDA@zPI#tQ-L&LbP(m5H(s)ih#7RdJ@KemCek;1c3oNPV5#S zbyWq9NIgNXp>*F0>0b|gNe+{xTm1 z;eBS}>Lt@WPPRK>Yw+GsR&A-X8Oz9Wp+-mprxo1jS_UxT5*OA9| z1dw@gVQs)vA@YcX_8wn2&THRKN8HL0?pgSCr)kH<7qH)4NA{StDdCpkS!F_o7Ai10 z{oG@|2YT1=#+9mReiNTbi$|SqXNujDMqw0k2nr zR^n*hd#P~X2UyD{(06geo?Dy@jAT}A-lZppJXIc*=E)`0kjidaWn%;iVq%$fB}s6| zpmryB9170;&EmOZV@t$ZBY2BUdppGzvq>JJA}m;hc6DfhC9p&63I;QprQuJAdY6T? zE1eqSOTUu-3Fd;@ZzMVt3`%1z3FBzMBdtrUd_aQhPw@N}-U4j_tst5x?Qa6Q+)P`C z^BCmemmuJtTQyAG>+fr0sioD|muqbe&)Ia>4-_C{ao$GF!2G`_W$RV8#7XOGlyzNN z<6G30O-DkS<)_-x&op8&7SI_skDQec6EFne7H@j&+-bTeiS8|a$9?vz@ovHf5X5?+ zLO{UAKp^MWHOlB(Ezq&nt{Uq0K=wXXE?I78f;LGUN+VV{01?jvk_qOhUFmT6#_G=d zRD#y_>StGDsoZ^y=ZHu0fQnm!5tuh)o+@ryOz!+aqsMci>)&CtywmJw)FPVYq`OJ{ zsaE6f1w;38+@9cOw)J$EvL4`Yi0s~ z%m^U9K_>)oPY1nIi?z{e$?8^wMfSzhua;A&!!z$jEDNhH6tf-}6~+fq&!MLHmcmaD z$7!eNH&6?i?xMH4jfa`CHzjbgXN|ZdjCRSZO=W4JrJPr8*S8lB4Z*r_3ZWCCgwIgK zo`bMFRxY!uT{ny6j!h|{`&HyGr@YF`ZZ62(SnwFe&_@4UrQWvq!Xas~IC0l;rcq%c+19f$ljM`?rkwVsg*$#6x%+osg zaqJ%`QbO$+?a2V}G0MMjEm@bTL;aqxi-o(7?Ap8**G^B%&6+$z^Z3Fwc$xys~DLb7BD>5t1FkR{zOURH2+WbQzTSerM zUNgB5Cz6ek&~&c9O=Z%2X16YlEvSv5gymh)LaMU1I45$~GkBAjG`5x&w}r2uo;i8T zHgUl}?Cs?A=~T3D6WM9LIS^aIjdIO3!G&f#fI(nmI*_Ml#6z$+%ffrbPes6T~ePo-a8==XOmYYg}CO3K^7lXPm4v1Kii zI1S(V)}7ypn&lwAZ8|+XG=eX+B%!zOUO4pR9FIX*T4t?xt>0NK#G9bFmRQyDUn4Rm zN#Gy2NbiCLHj>d32{`J_T{6e}CsVn ztZc30Z#A&N2IuFTu+B#Z=~#OO?Zl6#UO{zveqYLtR4RiVdgO8jcJ?{-s)exr}Mzfs*N9p5n|XjR7pL*mR|9qLtQ%l4-tl z+P0Suhx|nh`!2k*1@dhx00+zwxKZnZr1i@tq z1$cMEmb!MK1({pdl>^)|rr=-i5rONP=_c_#oCurz!ZU(G^!Mvk&{BHnd4;4GUI^DU zo2jkSRI_*>jcr7OaF{V1DH!NSJG)mk7MLw=HS4%y5Fa(4%AAHRnIu0hGmru4^yyx( z*1ARY)YmdYCCszPa2yamn9e%a3wfr)eenkW07RC?6AY$Ftr(CJJ*yci!yWe=VD_V} z*tc3DeGVVA_*Mxnui%GJjy7bs5HSZC+n<|^jAzrD%2?*puF~oZG`k~X86<+{LKml9 zp_p;lk4p4U4C@vi5b#{qGF!dFB-2Fy0A~S$?q(;SKu_Ubb!WZ{1$QK3Nt_(=!DUuc z^yf8A-RcP?q9?hXbng@Bnxy(Q@?A!)nB%i3UjULa52YDt`b*wjL3*v(#i*wii}egA5Jjha8Z8WBFEU>9lV+$C52>b{A5n zmv1a_ug=7SxN{>O{{Yw8x(^0vw(oH*<@2-L#G`4H0H9-%4@&cRZ{`|>ywkdv;vf>| zJIA2+>Dsk*O=9ZyHMNAz4YuKcsz}K=8R^$OJ?hcS&Wptwg#IDDfuah!Y%F%T1ACr? z`!D5QU*qoq+W4vjcnT(=XxpKjLY7Wy^JpscrQos7l*Y=yGuKR zrmSH#y#hnNdk0j&xwq~{25`JE`Iig`Jja5rZhjd3n$uR6S!C9UgHP4u48CkYWfD?; zUo`WKfw&H&*MF|s{kHgJ=6+D50L>2|i6y^1Lfj4StW$jVp%NXcCE#xY)zs#!sxThFLn zMZZmneA}CZw~|vDfW)x~q<{d)BmvharEXn#Cri^b;jGv!CFG4~X%ZEUnPkDvdh?O~ zML9v;B4IUdWR81E*CUF;X|EpACWb*l$NLNcrfS4IcejD1CRcV04r z!$pejz(6$^tl#93cL!xcRa>DyFc_|~JD&_g;B5z2zwqUjxu{Qd4Xa6c0UsmFw|@Pl zayJi@_34`Cd^Ye$qw2H1jcKLmlFaRA42Zcz1o?%A08j=n0V9sJs-3;Yj$dSzrG3vj z_?*K__%El~-w>Mixu}cTU`6QUhjWbZsy46IyhaZ)&6FhadCYUQhCduuuf*Spm%8`F z8;Il{Rkf@l)e%5uPvUW$o_7)sKe{U*8(D4|P3-w?#zq({Yv%DXQ>o~5w|8@1%Gshu z{qri0e)k!tI>^&*+mt;C>S^|`42}_4lh~1iTK2ZteaZ~D?OfZD)T11dz~6HmaynL( zxszsDKqsBYG=kag<-k%SLy`!^S!haz0agb~yUg47D;NqLv&UK{VBM-Hev{XMt5N{f8qe#e;D z6gzir&Nk31n~xxi86`EYA!pS9k#V@B_3uL70-V3R#XyOMQ^d++j8<~qfy-TjW_Mu?1NdLKOQHu@21qPG$?GN<9ApAddedDZ-(K+Ok5h(N(pZQP8CE%9 zOl?h}Nf_Zs!St`Br$tY5lM_;Lv}3n($FyJC3&h?M)?}B(DSGyvY=B%@s1k;D!C61P z19Ckwde^3SN5+~z#62S4QPojyuKd@xXsy{T+0+#QOp4rXU5rBo=y@5gbH#c!=ZSR- zKL=W9?czBuQ((UlWup)BsC});Qbt(d^sLVUcw#>fc%m&oO|%VmmuViWYjYp&6mP=^ zEVFSNHkYr|Sg-*}mg)Y_J#J%r0|Bsz@6L6ww;O^1WHv0y>R zBd>UL4-V+Jx>OcdS5rG!#$uF7aF*y5i?#5l65J5yQ2;_5?BB}W5*pq&ssJujNnxOwt(wj!mhIkYOM$s^i_YQHXB{zB^vhW^{{Z+!VAQOw9NaX| z4D;KYiRO;)y!)ZvRM|2Fc|#H@}4?;xzA43 z=w2Fa7fkTYj;;jI-P+sF91-2PSgjUDQq7!Xk$?w2y*a7sQZ$=IgTiy%*<1NC$2nQ9 zB~%IXE?APd{{W_hf;c%nFr!ZUS~rLF zIP@J$H+qhtZs&Q+8*km6#OENBgep{#&q0dkd@iuBM(g)wK9* zpq(SPk5aa~V(bz=2HaBx;Y&u@86SHfgM-NDnp>f_W@Y$~;g7@(A5YeG zF?|iDnH*?d);DP$0;G9^abBFa0P}(PN#aM<>}Bx4)3)71e-sF1p4drjhF{${V}RTo ze7Wa$HM8SJyzyFV8i2YH-RhRVXLvUl7tdE&XtUk}`Bvgk5Fc|N0Q zYZBY9_GavZxX8guo}iJ>1miq*9oa1;{nDd&Z^Y1eOIn9hw3^x*JudC$m`AqSV;rJI z+P}g|@5iqd)9CG~&ElO~&KGZJ9@bR2AyOneqYekJ%Z@f9Kt!*3^JFPA40Ph+|etd z_lPefpTkb#>RW}jyM)`Tslu4$LykUClDNp=)y;3imZ|YeNxQTAF&0KAU}j9QktAFY z2J8mMIL2{U{w&phwe$^I_hp^7p71u?SY_Jiz%bmP0y*29{S9_H6|CC5%-2@;_R-wW zZEpT#2+}JUM1|l z8V|axWD+N!+B1%x)uXTYds@}Bi<=*|+Ub{4J3}0iE0=+X%&b^B&OjZz)P6b84~6_N zF0Ah-xSknc+P-OKY`6t>k)BD%s3xoUJ44m<`{$cjwJ8Lb5Qx;FA)|g66M^#ra(K=U zdPOyDQHSs{$5inD0FNfP)x1MKt!ApxEcbD=Y5`J9F7BN%iuw+39e94#Lrbba00;Q9 z(?8=}FNo|cV!hEP`WDUj#@q^dBCR|nj00WuTwVSJ(D@?)#vUzf(qpX7?X(Q8-(AO`k{9Dr? zvw%wolXGB@!3G9$aKv%>{x!J{l-iGmts|7}`yISQ7d&NHaxi@m*UtK%!3nin?MqXi zR+88}uA<6Vn6UZC$T`M4_Tq-xS{(HokHUMef<7VK_|_>+hLX_2i0qR*h~ZgAN{y_3 zZh!q$%~!?`qWFQQxG}5TuJJS~9}KE67jf^$KhC&Mgq|F+(X1!%&CTW9Ydf{U)I6^) zIL-jZOLLqN$E|nPI(C(+rQN2j{+SC$l^F-h!!P!4J6Et&WpUPg#apX(>ro1gIQ_%R*$Mofu0a%X<=F0o*iPd&x8+er|*h#4XuBM_mERJK%_ z$$uJXw-)+ksfsI`h+|J7l2s-a+!(O~EzVZDUlv_o7$LZt8+2PsxS3TYEO$0layIlK zxun7`sxJIF(jb#xzO=u$ic=hWfGffIx`FA}pL}+t@ehY=<-fRxNrEJ{jrZXc?F50G z{vxtx*7c1aR)XL`Y;M{a5;-6TfJz(?K+jTXw^#lq(j|)8IiR$gQ2FO}Rg;Vy5I&&( z6h&DPR%=$yYg5wh?=LJNo$V*nApPnC8~KWI6^gJR9ti3?8tm^=?Am3e>PSp7?QpA} zfQA|RW40^GCDwK8i`ikfpUr69$u`jg#(rbdp*-_lC6wBY*M-^cCLeA4Jd;L5pSudA zjum+5Gxa`{qa@oo;aygCk3*sHE~9lOy=x`vTg5TjaJl2;d;s54E5wrHQ}9>BuN2(r zal;%kPM|%~7eel;(rxGp@Bq)fdd2>a;hkROMsx+1@mdKcx_O>e0kCn&!0Xf6vUGn4 zcz;FlPuXO*vz{bIz&3#3V~lW1bKkvanmTV}?0L6}wJEQ){{RhZ7B@?Es@cm7lgVv5 z4Un@al^7|(A2a-?u=-bH;~VABTF=K?VlrDt`<+%C5$4+lDqN3PiQEtO3lBkEhOMS) z^TDXvS=y>Wa{{Y0a0O7I{%&!{1oPO{O&?4;G?!Wqr3y4p8D)jax;SH!Gtll=$KgbD zZ6Q>A@l4u}R)@qM8@|(Dn+;CVOKDm$^K5h~O6QE>k0c(I4wp4q^!FZfld&EYGZOTrgTb#pe4aQ5*&&Hn)Ct%rb?>-QZ;xnElKrGaMh8W~2( z7-w{35F#hMgND` z*8~H==m$#ktuhJxA>!-VZgqv#wEqA$CxOTfGJu;{5CG$L(mxu_D@x~MY18E@Me%b* z_-EkRJUOrFF=}>J_i{v{{R2kjNMLri1E?ar@8TDWKj9kqS$V5iXzixjNpRm}ipf;N z9A&``z}l+k1cBFg(!CmOG8?O_ue8Nwe`N9#=1pz5rwTq_FcbVI<|LD!rDptlxe@#* z)bw3GXoc&|3P%iUz4?|l3KJR5)jyZDWl~K=%czuYxq2hwj|N;=%5EgTD?IZzK55G{ z6YKfcU~Md(EJTd5wlR!gS21a%>H3_>J)~_6v6JTHSWN(HqY$Ow5Tjc-eJJ4M};k;U9Q2qk=~+7ps|5(uEVX8%#h0>E<|Ox z1--L@_|@x)V4CJAZNYe7KRS*xgIdN7*>@$YYH9d=z_;?`bG^?(dsda)3aJ`}I6bq{ zlj9fJJQ?GyGfl9xNNne@M`(i_hu&1ae-3_?fj#V-@+55k0DCp8;ORa|ZWlC-pPc7{ z1~5scHJor;$t;oxf&yD{z!h0_Ilu$V&u`c1QERs?H-_J}K5Nb=y5y!*wZTnn`y-Cze|$2ryeab_MQFH0?)CgZpyX=9c0s zS>b5oiX!lRm19lUUa|h1$=f-AQt`ky;^elgc|T}M{3x4qRZzRuRO zu`zigCmT)%;gf@&0X=Jf!?t=np*%rlrCL}=Dl*EJS0J>gydGPgxb8aCI$hqI;?EIV z+gs@|`7pS|7n5yyn1J!R{H!}U+k?WI+nHMZPE@5SC(zW^d`)2`ovgaMZe))tsvie(_3wgvVy3y(EU#|i)1)xy`h53o70MJcEM@Y=&;>l;5JpE2j%x0Y zaK1X!%%SFxC4{$MX1R#SkUE{KIsNe7b03E9 zrP8nMEyc3KaLF5OawkM=tEpTOym7Sj#ai)fx~G8j_%3Xcd!1(XRi5JYLWdUSLbFDv zs+02Ifyd!lmc~6|*8c!dx`OH%R^nDmndClXA%?>FaG5(; z2@*@ImTlyw6oRM@MmZTh&1T%CyV$iIbQ|!$TyKdc;%!2Btmd>5BF^Z{td36zBn_Rr z0l?{=wLXWZSlH>l9=^T%ES_vaG<%mKIhitvkN^zW zz}GX~>atljnwENWwwJlNhU69V3%J6m!P}BgPB#kbbW8hNO*2J{Nm*X>Sw`1Sw*&7Y zmgHcNyyqvSQn%6OTa|_{5nX+v0V6qrC{;j_cYvp7LN@0Wf#IJD>J!VQ>Wy_M)8&m} zmd-1ujq;%6Vh|Shc%zNThSqzj9686!w2YJYv)=?& z?KQLp(3aj$4coS-a~z8_u8PHo1Y~E}4^Fhz`UaQOi^lq^OJREPUE0Xaa~mWNDl?*n ziHl(NA362nwAF0k@SdwR)xo*Fng0NHwQx~40zF6Y=O@;=9}+`w`ahd#rryN_nrzoG z-9fO2A~oRUK--LPGn4xCn%1v>2ZW?kG!3WT>B8hO`J@|4ZwXI^+TA%@@>#4Gu~z z*6|V}iDdJb#Uv?$l90)j&mau;HH)F^7uQ#pa80PBD{rWIO*E>(XUs}KI3R{3bs+Zi zt<5d2BhjocMo5xq5urbS5)qD1Om7vRrucI94;br_PY>B-klS4-l3)o0I-ithuHUUR z^didFEVR+3q>$>cub&u_86GJd;AE-5>A?-oI|_U{MVwLFY61vIX-Sen8iLADV~{i4 z1MOCB^vk_s;(M5yIMpVR|RFf zk;2cHN)LR3N%A%?jQyj?g{H$PLtycy+g(NI?r;F+Q|&k z#cwVmD>4!=7-V%B=xUT(P4q@htES0sn(I>V_54=R&$3%sWr<`Y?~HK75Ki6+9S42~ zcWPEq>KYe`EFp}TrweYrU(1srAO-XzaOd8WQPgfA@Wt%kZi?RH%W|QLp$Z+axl!|H z1B`msCBD0Vp?Eh&ms9f2wW-~t%@Z$}0<(+)FbTrrw^LG?l;nyY9^j##z-7C6s~#gUb(H@#i{8x5UuQLFFrj@1=tdS^nMt?Fbssf&Rkb7C+ zo6C~XeD9f*^Sof>b|;TxUB8K^xYO+}N=%{AwwKxt<>d7G0bXNgb*RX~;i3`|s>?Bw zc<@|2W0gHHGI;i*;Z|D_2*wYVD7mF-wuyOe@Wm*dY@=soknNCfKpm8SboM-Qd)3)B z&+Ts#yS1o_ds&63l~|qYwtkbo-ZGwbB_8`oa+g-^ zhbNkn!v*yV7kmd*6ma;mUt(G(1XNmM@+TGmdM7v)6RZA4u@dt0mjrY2su^ z9bzhlCI&PPGs2HCdF{5j-xB;_v+x;@M_oQ!$?p#JoQ<)>q?PPXBNTNiF6zgm>bF)} z&w#Hr3rjeyZ!P6iQ5gbBA8s?B$Mmle(KU_!C$|37j(HXq}xTyO*YQc#}~0rt6th^zD>Nkf0ZW_D@0YD_L2x@3~)ff1Ey=| zzuLE1ywk7jbp0~hP=`*4wC$-}k%`OT1yVZWY306dPriPeTbsBq-sb-5QzgZ*w`9Au zRAf>dJ}SxGEDY(_{-a0Wma?tSW|Nz{Xm$304k zJH+^&!umZmL)%TdDMlJHaLRpu`t|gO#H|fAFNfX>@iZ#XNo%8838Yhno-x00ARq4$ z&t6ZpRrs6WoeNU%_N?$*$LHEw8{27E6=1l}IP3R_=hmk2E~#&E`#AVk+GbUiw3~%O z*!i|hssQ)-hrM&*@T#3|Nou6Jkr{I%6XH#cj-Bwn@Y~xwcEv5Gk(Ep0PBFQ&oD!$l zbH#EV7`RxXh9b=SHx(G@aBI8NY}dtJ3)CzGlU&!Bd{EJYJ1d{wv)k)PJNJsVJ4 zjT2wDw~eIPYO=8;akatCa^e>@A);P~a=>||fW{4SKN4@nzL^b_ZZgC)s6R@t7sOZ= z$ilENmu>?S!8ooe`|VnV#IrVAanEu(^sW~46rP$DBIT>0(k#*(Pd6?6AolmHA?8{T z88)2c=e=LK)eAW>t7V$)JcwFDP> z#3QPaQgpV9jLuP1dQWCaY#NTS#I^noH7HU4G!5tcp$-5sZPH zoO;(qt7*;-n{3y17l^Ygl3To@F$q82?!XZ3$>fvxRMPby4r(^A>C?;oyFHS_Yr4^7 z*qfe3P#k^lo!D{T0=|IjRz*DzPtrU`r%z?4K_#VtNlQm-Zev0fk&X)}4o>1b^zT~s zI$iC&kv5;FM{N?y@+_faEY!5gFk z7cqk$EOOqT-S?!^wT)WCL3F!{X*HO|>{qWg=mZZT+^C!u0AP+XIO#*sBWCYm+Gd}s ze`4HRM=@o4Uouoi+Y3a}Vc6hv7~6&bbO)|$TEyR8t=+wa%G>!CX*~E$s-uSo9CEo( zeQMzEp6`a>ICYyN*$!{XTAre9&XjeE_Ic99Jz{XAwb6ifhqNcB+rL0!5*)76E zi!`hlhF9D-9_{my&-XdTYjeV$8^52zn!bys>oY@gkw8*-RLojMd<7tK0V=p+PEKk` zw652X`%M=1^F_C|its~f(l{Syu>w>XCuq)pgl^9#o}3!$^qVVtZwl&KWN|mzZ!Thz z)B8b=BVq|wc1#V~X7mH)>s+X%I_*JCF`|^fkbEjQCemxQlSIK@yn= z7ciu2yE$ABn_JYoLu)!x8EJp5zsnd)jWM@WDi%^NLZ{mANZx(A^GUoa2lprwL zrj5VN1cGuif$dPkW3B1h)}i)D8(99&)#i6dR414uh`HKw06377#yi%M$EaCD zG-_VnYg^SxA~!LHXoyY%j#&QiXBgw5;;D&@9w67&-P-8A{i7z}`Bjk-Pjl#TlkMm# zI-TiSEU^ZebD~)_+^=-vAqB{Z5W|6h4+I{SuN-#b-CgXXwRrbN9(NqEHp~li!5hdOz|XByF)h0Ij>_8dNTpk; z-B#WoHrP?7rE5@KVwNO6WNObJA2OT(AM+Jf(_6RG zJU?}7ZIP%)sZHcvHMY>Wm5I!R6$ItDJxRs}X|0CuahkRMovwIEG~M{qyRYrObLqUpMYrju=PX>mKO2XyZv6psu*RqPKO^Vm^x z8`R{ruN`0MX?bJzNhOZvR*mKtZ6^FKPX&1Uqyd~(=A~tJx^2WU+uUB+>JTaywniK& zM@QYr<`J8LpyVhQxSY#!E<=?XIJo&d(Zdg|dEbPd!-Y*i`=j4z+Kzcs2_-@3XG`Bu2 z)F0wa;>+bjD6@rC*9@+UG@OB-M$K8&^${kGs@sv5iq>3Y9!jZU-~F1=)a~qT{8^<* z95J+4Iz_?UuxD}o(NZzj877b=eG0d-1n~#jrPWlxtgK*SpiD{vPE>UTi2N#RE6XiE z!S4;>RLV;a$d8E`ivUjCft=^@u2aSSA=G>@mlt|I*c#*P=-;}@8As>{82f|u^{ror z(q8zx!z*ujs9eW#^Ge1wMGGTtEtVu?eF5gFO8Nw$$nSGr^TiLTXqT3ZvrB0aw`kZ# z0uUrZdCw#GbB^_u_FXE-=)%)YSoL(fl4!1$BrYRmV8Ksgk~8bgWtX^1R1rrkdShC# zmC`TWq=?~yf-}w+k^b*mZ;CChG|P5LVP;8gQYfTQpqSl&Vz}vm=bUmt&q{YD%E_@W ztTg>X;!QqH*AqxyYld`RDP!XVC?pO+$JF{&OGs?|NvCQznz@tg(X?VOE)%toIS5em z{6LaH7~5RuhuY@r!gu#^23ze$BPW1mHWY zj0*sxsolH3TAj`~Po7NaEId2sJjM+^*`&3&^9i_-Olr;Z1G&#~PpxsDC%bqa)tgR; z$hHo}S%?s-{ciFfm zcAohh9Pxo&e~J7rr)c^_8q|8$rvzS6jv<8F(wn%9Mnt1hMX+4pX1U?Z}S9IhA~DDB9} zsJ?^RO3T#et#$kB4RTxS?M8X*3@jvuv=E5Y zTNf`Fc20~y;3p@M#S5{Uzc#AKzjHU*e#0DhrZ}c+s0@T=GT3Zqp~~Yp#cNsLKl~(d zEV3+#EtS8PBskgwfJzLGymqXOLf2b{$~mp?q_zom@o$D0i45b1Oqrd`KxG;G;BR&`_l0FE#pg>{;~iQzpr?a=Cayf#XcTpM?uU>%X4a07x$<*|`m zevf+Ae-AuNM^}7JGQ9r&+w1(Ymxn;F8<%*9|~Ps`EjlGp3$?qjm&l<0H7YZ zB;<6b=3xq)iL<=XynCmnoo_A8mFBCMgmBISm~DtSEX0fz2l*3MHMnBc{v&95syr}U zDu`S~6p_m_6;t=V=_6}nrU3faAE3V9hnjwr={$)hpENSDm*jHFRat=QR~ZN1y0z67 z>}l{zYXfXgH_m4!Mk;U=0CC7}rzCPa)u^`a&gj&SE{9d($qM+bY-N(}8RTC!7%yk@ zWb%m$8w8x~Vn<%%*1YTD9Fne~rs$AdMK70ZGd;vxnt68;S+FzHpkAET--}L*s_TbQ z&@+8;W%kP(7KG*<7$iXWhJPi8( z0QKu?ZFMoP2Bx`9T@S;0h3aY&>hoKhSmQ`pqJl*RGQ)@5r;eO`de#Ssbw3CAEv$6i zOH55d?nq?&Boio-(HcU(IFF2OWm10{y{2AkR@S$+uso0}xEpV-JjKQV$iX?}oP+6E z`kte3NjLD=xR2#cK_gj%eA|L4WjJoRQH)}=icR~%cG%~2e;s(c!5$OSd`AwSpxSBo z@heO$Y_=?AkZs%x9D$MuIpgVGZ+r2l#c3)$b6HyXYqbr%j7hY550~8jb@o?u5KRQP=*^o-HmXlXf)+Erp(Zb%$@1JmnX zb|Mqx=7Y7m5j46z4i{bVHm%~@^_u?e?&Ls1761XBxC0f^cnd|AX|>2BAju|~IoeNM ztGI#r8sy`*OIx@Vj~lwzfAEs;XO69)ci5M4%?5pUM!x=YlO&6{<8RHl44eQ7#yeNhJvTe<@2S!0o+yR&E9vH3#in2R33bA> zUnyO|6aq4MwGBweadNX2bi{HJ4&Ylj0G?_u4fuaii^n&q zJ>9$MXH$k~B6S#NSr^Rx*aIYnEx7hvdQ;}pE~1ykR@U95){xw&vzqSAtdn66nHK$_a>G1l zCmHR>6{BctWoKfyH`3l%EzQKMqqtx(Bzu5gOaa_;lg%gO5Sx~=Rv^>$2EWp#wh>Q$ z_O>@o9Hj$F^Q4Q1+B5yp$36bFFNeIXcTN`Oc`PM1A*C_??&UU4apo}oEH-nVquUj; zqiOaR_7Jb1B+?t1uH;!H4*Oar%BUp#xIjVA1Y;RBcfl4~Cbg(t*lBk}Fk7T^bvMZj zat+M66VVrL5 zaa4+QUCqlY?JH1B7Bi(j$+&6-!9-J-RSBtRJk(n#LQ7z_;4G{3i$Ga~Qu)udqsumV0e1CTm}@vxFxj0jYaO8K9}6nwcNvWr(dyew2|BfaqTmZKDwF<;%qX&tT1 zb6mZ}$Oy^hC(MVQ1EAm@20d|4hfSRLn^g1J9u;dxwz@L;f=7vo40zyij1GdZwM|P| zxYpsdx7RdifQ-i^)>>Q44(+>u7{PCqPVV0P*H>$8b70p~TC&e~{hb><>9_kcO7Y0X zNj8y=JkEOhR>_{t?yP3XX43t%mIP{CD()HNZpJg|S$f}!d@bPEH8^gsZ?t*L?;MlbJ1Wg7ZNavo;Nbx1 z20pda+TTT}+{tx)cv)q(wV4z~3zZ~=$Ru!j@t&1QuHf``>|)(&@acM1n{?u4XA!{C zEI=#nQJmwTI8t|ichHtZr0|c5Tf-J2-rV^|`%2>5%TgRGd884+AdYzI zI#p{A2HFn}q_&FwAp0DxvPc;eTaq*Kfyo)hMtWzO=B_UUe`?cZwT*neSIv|KbdaXN z+ttP}Gr6(U;QlO+iCpx54fwxOy1B>OWKAf^G%?3&shHFZg6KxzNjt^!SlY8J?)mFmT&g#%LLDrWMGUi$JH1d=c&dk zs?#+~eH%r$lIbjEdwaPp+FvzQl}wySqa1^Pdiqgx_7YO+dCs_+Oge?cH&CiyvIxz? zPrRcP#^AoAt_^oO)xNC;oug`YFAd6DS+CioHu(y&0HiVB>4VVr;=HfoK8>m0d`G*R zO;7DhX&N~V*PMrMZ&B&#-n(f$K`dG%5G>OoM_|h&BPACAW7`0!=hCxJnY1os<;xP! zi!@DFM!t$K?I~s{ZybnY2?;2y%dm9>{M-ZF^f{`&4AJD)v}>(JZZ#$Zw0I^(B;#+(yPR+hJ+wBpmYba3g$|i(pjxZI)6aE1(ll*xDF|aMLE1?fzysIv zs-7m&wCL~PyagTvd zZjuGVltUoT9^jsSwb1x>;k9iV?Ji8B{wsTxbdEqd7{&$%;p<#=mbGoA_?KJJ^{HCg z9es$ho;1u%*($hfU=#1$Ru_tVXRLTa`sE|MWWMsA0vS*i+)meFw++V_KU!;DPdztI zNxwtWpf>u)h9RE(#6&RL%qGta!O9lM9Jf95-mczS>DKnTd?MOOwrb&3BbkgCat=z7 z-1D4q&rU0n_*wBOyhZk_NGw-Q)Zv70wo(=Mh6Fem;YlR>eQUG3mP>stm|P3#Qtkv7 zZ6H{{V7s>gfL8~CPIH6Ohq2cdn&(D7rQrQiFA!SZXz|;-q*9`kU_7QORC$E;2a(s( zsykijUN7+l`O_~iVM2|vBFNG<@V~oJm2Mc2NY5VCwd1Rw?CVQ7?XDz_1fJqIOL-(* zkDF!+b-}^>Jt@{cD7-qhnHD5_X)R!t+#<6DBqI$hIr~InL;KH^ouKXP z06l$2){<6YQf|qcmsauE+{&$}UBzPs!p^L*{L)4Olf6jk!Tc*T#u~+rjSZc(!(1ft z$juVNv=1ylLZ`3FdHiwOsom=nTzD&0mU{$CVH^@iB#uT@ZTW}41bSDQe0NFo&2z%B zS^b?;?Xug4n6!+D_#uZR@s>R*oUBt?9-)2X4-H>Q)4Uo7z zwmCV$sr)0XL$COQU4{)TM>I^k-ensbJMoS=2cDzT(!8v}ae3mq9ZGi)vD3+nTrT7% z%u}^?j-%f^0qMrKf#ACEhs6zNOOoz6Zp_xfLbzslj8ZXuxW?_?`QwpA^#vcewW3~G zc#BT>i)2#b2%v8w?OH$-ou!)}AS;X?T=lM>SNK=q`L&63{b_FX5uposEuP-=K_qZW zIA$b_jnS_j)xvx&zPOK3__ZDSnB|UNw8$6*#$u4Refs_wuU7bxVR>`o%lI_wyS+X2 zEeg&>yR_O}8X4V=H!$kFeF>%ZQ0XPi?v8)JwzvA!R~D%b!EbXdxe%~^1GSSaF~BEFCYPvlk;G4 z-nWjenNCVDO_UNybvvzAT?b6Hn(E#t_9fJK$Zf+T4}p!Nuc_j>y%OV4@ZPg4T?;6$ z8hItT)8mi~2W%r?6SU=tA48riC&4=Ir4&}$>SciCb-K)JS* z{gzI4k;fjnJRbF1;@5>Q?tT(#c0y%)x#fmfOtJ)s5W^#L5CG}a^P1K8XW&<#*qhlSty}UUx#R`Qir|%FtuswZoS2xU@dK``sS3fzm zj|S=%7v4?P_MLAeWCFtNTyxI_Gn($a7o>P!!&f?9tElVp$*ICim@O2vOxfe+Wf&WJ zj!h@+2N93Q`inU%&Q+sRD1EE6eqO`;YtE3f#*TjQ;q_!cmW=ku3dx?xP z8Drc^ZaFy56zI`Q5HMTmRN`z!%T<(oDaJq*&h=yxnAO;Ndg7W@M3@7QaZg6rhdE}) zT57W%*&R9WNNACjLXZYA=~3+H0`=}`*vkx`!mL}utaH=xrh>$4W{!DWj8RuzFui!9 zs4RM(ixf{TuVb#qgl)<(f-6Sa3wN`#iSs&Yx@GmQruL`I^B2xdw+Ol6<1Fkj1~=q= z+T%4HAH_D_ACp(sQs(C7MTPD~gXo|2?*Kh-#-zmo=*H>ku=obDj zoz`jZZ{FGW-NkT(G=5r181nkJ0Z8ah0PUKcnI893qk`vCPZnP3m)f=VrxuxW8IDVf zz3KBag#~vU@Kj{rXL%3NHX(E*0upyQ0I=NTiBjB{E3 z0f=iCdaa#|scke*J+lumCKc5VL!ijc);w@dMOeJ?#+{^i!ejP3dwJG;%Jy(P;!K>Y zWkC6fz`-5y+nc@~zqh#5ZSA4chMo(^Vz{0rigq4bfwMUqw-UULGB~B=WhZ$QA-S^f zOt*S!NA~3VNNa|+wZV;4DfvJ+A9o>%_BgI;En&hva~QOMKrFd_KAyv71*g~05qA&$6OCgj}BXF7g~OcKZz|o ztBBOgX{fAGv~Wi#btB~i02NFV$j@ALb`sJ|+tYQQ6KVb(n$}$gc8pobzHq!)#AFe) z`AP=^IPK1T4P4gzJAZd^;rrR(7Ll-??rlB-Wb(dGl`=h;^&RSliQ-QaS@?ygc{H1N z=C@=vvQFnGYJj`4Mo3aX&wN$eD}6`%9pJsx?QM0HS$vy|QVL*gEAkPR2WbRk{o&Iz zY+GFMXn%!#Pj_hz-k)P>EyNcMyqkz#H3x3iEOCyQ>T$uSycKDCr+DOVwtGu^m?l+_ z!-m~}t>uQuW$17|wL04JRJ@<&T zD@|iwj&Cj8*uykovDC`j9ZCu7eZoYqeXSdCLj)7}XZ(=wAJR}sq)b^)1OfKKCp zc_$;SQrzoaMad)3r$xNh?5*{wOm2S7HR{guF#v)WCk@mOP1w(_mEFzet*s4DL(r`C z3&zt5TiT?9?D9t(iJzMTBnCP5$gXzpT2Bey*8i{ZtxxU!T_7O1+EH(-svNsBmsBV4lNj^ninE3k>bHm7qX*osN)Vmr(N7@^zc z=1sU=$0T9$0Qb#b(x6>qR=Bpcj%=;GEJQZwgp9CLjB)kr$33f)OFQV}0zE$R)^RL% zKWw;!ZDn%{1<76kVE+JIA4>Fn8%S*^Peza z^arod8rks%jAgaIc^M~*RE~9&-o8G}@mwHHjh-?c$S0qdzAH9c%`$yY#4uVWE$(d* z46e&L45X$>Er#Q-AdgC0hn0(V)|ws0r*W*el`IRWBp+sE{m3OF<8!gr+Ew_7>L`$)+sVp`dS?<&ZqSSwMdBe52Q| zYFob#H;DART``hNoN5B%HzGATD!XzC3P~l80REI|z7EwNO>0=;fv5RKn9 z-r##StowP&M};So@;(dUhX?93s{!c z;9E~_VqE2L2g|q)xE%rQifjlkG@B`0dker%pFdv~Pw)K=wJFm-E)?{vEsp61@(I0ci#98nNJS0R@K=Q$@N zR(FXfTfH_LXjUtW+e=%dF9D3GUBrM?=N~QzKTKCq{{RVH+*XUJTa}U0+016r1Xhg% zn2?aipzeSA)lW&1d37a{e=+W^?hG#Q=Ed@MR;c4xz zU8T1WBScz6cZzZYqoE)Z+~kv-{uR$$Sz373ShTH7zMtaTFk*`NKnZvN$=dxg-Pf&k zGT5wo4BDNX$qbgbklM1Gkq9bd%AWXaWB&lx(YJzhUlaIt7Sy7V8TMIEegI9;`K$9x;0$>EsaSk=sZhmNtdvV$+64V!@AG5rP5FJ#k)x z_IS1b00X3Q+(~UDv0Ki;#$=6?Adb9a0|z&uP!wRJU=wk$E)e&-srl#&4F|f z{{X9UPv1O`a4G%*)h6-9-MmewM{jd-E-fcet>xNCm|#i9R2=c>PaIQrdX$r zwlUo4w$|+_l6Y>G<~`E|X54T_eZl7kJol_yzwJ*B>vmVxw&MB)vv}6fA#er{4aXQf zJ6F?sW!^ad8|r^R~%O$q17GvW}z%&#ytoYcs;PktV6BTd$bv zF6W9hC8OL~HvjDwEQ~-j-oFkXuijF9lJ+0zE1X4Qdfd|k@#a2 zo)_^xtMNnN{jRKKyR_2|=-W*aBSeN7KvgGbIQetaJW)Lzk-a~8b2M`HR;pLyCF}-x zOD~Xu;R#`ja>Vo3CCMJ3iuO%UM!t^oM;e^bwawB6itEcN$q*R;jQqU^1CDEs)ij&k zBTDha*B1>ao+X~zW?j$a2oo7U#exVNb^^8axOE%Z>^{+S$ppb+4jf7eDY&@=oOB}x ztt6e5%3HI^G|Me-;kSy`?JSRoG~XaH+K7tBEQ-Q5SpyTCc{l`h4cj%mSV5;;_@38E zhV~1atB^FbghcQxyZ-1sLYxd_53OzZrr%Q3Z8ZqIK4R42^02o?Rfs@Jws<2gjDwDU zO6G2K_HPr|X|d0z$#5=UmR7xnFWo6ZxG=j6gNHc5JOjok+d|^`o|+xLr|}8x{22Nq z%V83jREC=EQTp!tr1j6?#cJBwL#bHD9OHaKBoTrXV;JNfyz%*0llY)Vb>Vxt5CCPf z+O4}IC>kE-#YuDdW;-k9CdQP>Aj!VgV@oM+6+>jAN}? zw9!mD6e>zhaTo5~qzYP9!NDij7#vnkE%iD*tUs4i46+^o>Os_qvc!86S z-GHl24i^pA+K81$W5;1gq%t^LcOdiAHEtMo=Pi>$#^^&H2hy#^nd6dbkwYSgu^<8u zsiLpL7FP!wyU|pD_xqb02GnimvA2fySz&9NZC1wZ;b_4pdE8qCy|I!$mCo7e`o@dn zHZp4>;@0xrC7ETNl0z25%BVP3U8m+z&OLdld~>YoUK8*xpAFNh-fH)xhS-q`4q(9ZED zoehVNbO>WNA8C>og60<}S>z8QD=9pAgkTa!txGMUX?`NoWm%(ptIZflOVIH0|^K`>?9$~Q6KVC^H0{PROXmcE)C&x<@G{{RUO#1__VFVe{-gvb|YVZ5MV zMn(Y#I5_Rsy=3e91lniCO=9B8S!QUhQsOtBH7f41#kt4K*}(+h;GCX=72h8hpAK5s zX|@(#ZMEHs&1#mp5tbkqQ<8E^5r7vXBQ?)z+Lw!bKd9Pjm->aOTfUnvr2|@|MoU%O z{;owR7y{ct+)o?2;)@_rvTMxQ);v*lq-$5``V&iYJg5!TmADb^3JWWp!z2(rGC9fb ze?jp+yQp43CACXX*8>LZGj0zcZi+Iz2FEzy)Ltb20ED*V#SaCxp9ZO?xQb{Xo=@E- z;mAylr_&=KReLK2h`HlF*NVwYU)?o&86)3 zI%TTeq;b3+RoRi%j!(>}8$79AbHOC~*PO#=;{N~;TtyzVZEx))QwnL(%`>pfjILKM zFh>VD0Arl=uR-x{m#xjI-^(ti_M2A%G_r(5(`;<{ff2fnz3UIez8luX+940NZx{t%yAs;$p@}Z zG8AJ2n(h1}pL1(k-D>wUkkVX{A=qMIzF5W(mHDxr-%6+A?Fz!%#g}qNc_cFy zlHbX2H#;s&u4UQ=70W-*6R=c2J7fC0b^Gt=DhOtI1A zi%-{Nuv=lLS@@1mv?7wj1e8@L?_d_se_nG-R0~drQ>a?$PkUu`cJ|+Ed%)=h%wf#z zA>{nX1noCuQH^`)-uGauy=WAqj#a*?~ zsOmpZ)ss`zuVK8CP>MBE9G_&hOrTBbm~8S%^c;i7Lt5HB<+aM_cSc=JtUl6UmRtEg zc!!kR`g6E|c^qJY+PNmT)}YlVm|0$3T1R-+(nga-5zi%GkPZjVdiNb`rqeXEjNM$^ z+_0H72mK zt{HamjyhLQc`UjVnoY#XX?JUOk}IL#BQ%Q|lbzWolza?lHONmKnqS0yEd{ZH&d%*z zNR8*lA|baO{Q8XZo=C~Xb^5>jBgatFbvtY1dE&Zfy0_(1%V?!sp19<%_;FgvC1!#* z)g1f5rrjIF6D6J9&6VOb4uyQC42&2qcAY8_-0SgN*k8eEacMvC2ZkL72Lqf`Aw3<;PZ6M&A2n{|xV)OgNh~+Rf0ZD1ECFNk<&cc2 z;AhsX-lRJDn(F5J7RjbX8Me1kD0NT)U`u?XDhC6x>BVkp7E9s1QqtDe+BjjB38FTv zLm9Ua&SY`Zf=JF!-sX_#+H6{rBiJNDEj~a~dGcm~Tpzr7&matcdZ(7=HffjqH?2jY zSV+=&+Ix$uZ#s62IEQfB!9mDCF@SoC)$w#U(_CD|48B~AsM|?1O8XS6DuNl;pzF`Q zVKg?H-jNE}M{{v$3{kjCWG+IfJ5`kR#_qh<)~l)=JnIr%%t;2;TZWDuzzh?de-0FO z<29n}YqK$RTX?kXLfH`#=H44eP|%MwE*!QuW1YYbPqkjvwHWVptB}FO@!g|E`?(o* zx@=-kKy!hQ!@W$5_QpGiXGBY(EG3>$hYEOBUi<<13Why+M|%4nTZY+c26MGp+ydKs zuLtquRQieAp@$EK-pa@(ZjIdk0Bo{cu~d+=sa3{0WP_9I=qs#;N>33bwD(dAHPhxv zB-#jMP@7u?iRxE5Uv8CUC5k;dYfEUMmKO6otEQ3v0Dp+sl6M>qbCJdf>sixWExm%> zY9V2sc%YQ5XcR_#*%gC}cCdW`zkSFw#-CYxrs)i34nFw~M$J<&kZZftMb<#C22bo9q_*1Fwd z(KQQub3KTAmb_5DW1p9Ds67bd89D98TIGBvsFC3r+S<<6E0>Dm7fY!R@HxS3;EePG zio34r^4<7wqN$WgCAn##`Aaqz2LqfQc^pui8hQ&7?C{fgcG$)(F6Wrf98xPhGe+3} zkUC^1Us~t2n5=I6MS7OfxVTthnYIBEnN@;0+As+rvFp;ebjv1}Qh}|_nygxt!d=Rt zvSoO|<2`zgzul{n=~l0(>3&`0aXk8aGlhu@vnzb6NgX&RjQ$k1)N55^#x6b&{8*CS zUn2Ttve;P!z%bZ(>UrR1xi5seW%a+s8%-8nTnp=IjFBw)1;;zoHw0jAJm-Q&JCAd* zy4SS$zqGYhM^~AkXngYdOmG+;nIF=;PU+Um_J`5$Y}PA#mA~^s?;8LpNzQvN$UY$J8lC=~ug7_(!)G1Mqcj%~r+>j1=C-U`c z*Mco8!dlIo@g=sQr9$%tV$9Aqu|A~oc=j~j*Rklu>ea_#StV1UhzKl=61_#~`$)*4mJVtc6ajLGvM0dvQ%JrBKR{6+YB zzAV+OrnHri#X4`xfr*;@#x7jZCaIVM_p5<0Jh0SC@EeK>q-QEZxtf*}5(Cf@fLo^1T}z z2=YGue)p$1t<bmTDJ-(|BhvY^KS92jCm&eQX`Mcwxu9DZ`v|4M* z`q#v*GDnetD~RI&=RMxDQ%h3$8`ZPne~g-clkr(p918I^X(hP~?8T2Jyev#PDnB!t z+8U7C5fF2<=b*(;<(3~e9@Qe_Vk;5TH1>=Exc%OvHO%!T5iDiE002Gecwj`w8TI0r zoPm$hti=}N+d6d5v21?{k;(QSH#}6nF8GV6j}5i8wXoDCkj7Hp z-ZP&qf=G5S{xQySGuNkWHGd2EXGgixA4?9FQ$i$;P-l1vmt#ic<0JvQ0CTwY1k_*f zo9UL(o2SqwirQO*dqlOdF`}O+Daj;YVE$a!yQ|RNcfR5A1I5?zY4-7GQ_pP*+>o%s zf=F3annD2?`@IRyaDA(H#yTCgt!v@^M#?sj+3GBk#t@;3Fx&E1f&d2@?hb3A@NAY6 z_#ar-E;RJ9y|urJ*fpC*0ZCDC&Poz6P6)v6E1bX8q|tmW1dDkDlbgl2yYsTFL!vh9 zW2Qmp(DkLUGLO33*_tz=H;B9$YjWZ^ESonh&W2Cj1!YjAeA#S$E$agLyQggxFe((2NfsAK%{{X;xmx(kT8vg)CW&Y5xxt=L6Zf;bf zbG34Fk+AcTo^e*SjT2PxZ`ihLQ0iB(+oMmYOK*}-nx0}RyB*&tKQYfEwrSeqiq(lys#9)$7VO2aMZ{i7Iku|+*OuDm*Ct(5s8Z)pV z2yk}~mE^|&a6Kw*OHJ{7KMb_HOHD=9votSukqkLAZ${(|yr?6Sjs`0qLGZ=h?cJ=J zzOks8?SiE1aQX9>mB7w6^}s*vQtCaWvDSEt!TN@)dp+xFw|1dzp|}xSN?nVppzTqC7}3%?#A!L8iATW zv7om$^N7?4@TJ+<_s;{=*EQjbUkTY>v=-K$bga%549BH zw=}N*05hTZkED1;=f!hgU&am8@vMsk50t<}Ae9)&z+;cEBduJuztMDkNZD9ft$>1b zmhizEBTcxkmK^7hHmeMD1d7k`o7w9gUZJMDLo8Zkj*)B(<0w=)QZktbARL4FR9el3 znd1f3#fsY5Ngj_Bl9vV}b0AhD*XF{3+MTu3(kk0-L;Z;lguHXF+QlNyZx$=*6UcF5qWjB;#?<7|$ctt@xk97P^h*xqlRQj#}7U6uO6Oa!8S=Ax9y= z1qOJ|PfoR@B^4PawbH@M&97qiu3uNQoL}lGae1X%Ey%aCxF0JjmJzThI6HXc_veby z*CVvi^!vNJs|Zt2v{idqWW0AO8w3EnuHlRUp5vuMuge?*OuAcpK^)q2QO^X^d2U#e zr*J&yZsIf7JXGE$g40dXciG$7-bsCL1AUv!&R=Q6V7JJ_xZ@mFTN=UNQ#QiF9Yrqg z=hCb;!*%j5p)-jbGXl;SlgKB5j-QoudM}49taJ@$P+M&_8DhJ)b0wo00ox+y=D@)? zIS1F?ppsh+HXCQR*5ZnJRb-mW?A~;U%NPMm4D-8=4i0MmlYMJ>;eQbr#O-Y}F6WDR ziCt7~-`sGZfN9xWo1M3bwLKS9xA7^`?(OfM(JhFA2{sVxC_Z0ryaqaubJMM6U0++i zk#%eKdzfRh)zP6r8Dv=aP+7<$lE(u*#d)ucEn>XC)*s52*G>B>JfPbWk)q@0I2mqp z+yPy#o8pVPyc4Wj2YZVMXGu31)tP*^LKFf4{uSVQ(PpgF;TxcJTT*E?Mbgi zrRXx)Tt*>!BCwHgVc(=nh=p{(S-11#qPBZ0!3ke55Fc}%!+XvdR{70?cT=<(w zo?j~FR#_~}t^2bYfSk=ym4Cu2_rLZkmr_MHa7I< z^5E}vtAPfes$5*fb0g|a2a^mZYO4Ak#~>VldJeSq)QXNVT&HE=ohh}e!wTJAY4TdA z9$XimTDpVAL|}UK=x{4f#@Z}?9=3C1V$;5ao4sO3k#4mKh`-2Oj?b zN-x|?XRhYdx?S$Sb7dvF`63z2u0Yx%4+!3Qz|L|9*RQNocvj9x7Dl;-@<=Sh6uFdc z4w7zAfq6a11o57fCcXB*4o7hW5K6Z%ZjCsNU3NIb0tpPQ^7j0>s=sG8DGc!}FkM|m zeH5`u!)V$Zj0}1K*Vl|x;LTfr_z8P7Zpah!8mmnw~N zZ6?vh)IVfsq|_8h4Z#wj85kS_PI25;zJubePFZf^SKk>HWn`6G``{8ixgNbMDjC|= z{#$wOF77uqCwk26|Rqq;g(Qb9Vc!H3>BFbpzZ&r_cEY z4hT6Ur+g8U+Pc35PX)3{mu|b|SnlBS&R8pqoMdo*Zb0e4rl+SVEm^j6zY;8O{6pan zuv)5K?{p>xkyA0L`G;%{J-E$c_&&<-z}hZ>Z$FnP8kDLQ-d*^OocyEQ6Izf6t@W#0 z5fq53F5tv(<)e+vPy>t(pne2bj%w0L{{Ra2#SaheF08yrw=3pG6{Fp=1mo&|0BUt+ za!H>+PvCaaZXLXvs3WS z815{jANUuiV~Qj1G?8;^D(0QVwUx9UVoLBsJ^B=t)IRqy?Hj;3Z@Jgrrk?WBE2#A6 z)1$e(vqxpSiB8ZmSLJTm9S5aU)-_8z>up0$P3?DO65Yu#gt|e4!QhXWbpx$qYdVgF z;oEH8rOoZ#@~yG*V`h=ZP&quE$Jad8{HimvIXR^1-?>pDvGES1_ZCL(Xk~}bEN_{k zcMJm}sRcpf2N>^;_08)33$f6(sP!9rSZ(9GiI~0GGtOTh-z~rgZg4O`>x%6BQ*SEx zVrH|lw>LK9_h)X!MId~|M_zN>ao)M@AH)a5Iux+IqDe3Xt%+c=O@X*Yk_bS@pd=q| zb6cney@$Ym3Fg+k3871I zs($EO2Z2mxQxdlz44iN=&{u~79sq{C)+uF4EX3vMtsitc7 z_tNU3NTf@6B(~YL8~4o{Fd5*0!#s0=&lH{=ipRqqGVx>=Hg9t|nk%~x+?R6Q`)?- zsJMy-{{UX7zGlKZf*NnG!QU0iwMTY|v*`~J+Ub{bXj+Z2npthG{?Q)90T(F9%hNsc zReWc5$*F0xq!GyDbYW$Xs^ysgB#xLQS2OVr;y?I9;?y*WAzO>t;JgzERRV2{At=X= zg-JQ&j)uA~82EbDYke{(ZZ0mMxQOq}`nD}OngYaS9v_{bfy2VY9#br`I4eM;o% z(i{B_?V~P+;LH+2?4=Z*azRe@scWcsS3&WfVzY)@ImnLPEaXK7O@*tS zEJ{CjZ?;Bk1B~SGG5S>~B(H0Z?Zu{{eCY5ydF*V4B7e*Gyeo?W28Qgj32Nm*#<%Ps=<$am$z&!3# zl6rHR^D)$v99&LR+HGFt=w{z8;ui#DkhuKn$CS4chhMmW<*`}TyORO=9-g(W6A2Iw zgB%XRyp--HPYW*?`H1dnNjJ=LSYUL|H3WM>0lw}#QilrT(4O^1WxHUdxE%U=)}_2a zK6U}erDjGLN)B)b9csika%AA;e!0o2EgHaVJYjt)jUiIoxEbx0#41L2 zzfr)=I}|Zy<2}7i6=;OnfHCi!8Yr+Hg=yl=1H{v6x{a=dD83f+Ulni(nn>hQK3xE@W+1+Q!1o7$jgxbt8a7bI$-|V~#k@dv`W% z=yW!>UL^4sf;E2)EGrH5_4S;8zaf?<&oVoGP`BhU&{b_~!rGRlq~1p}ELV1y(3z!? zmNbxsWRcegXB)op;9|&KZ~t44sE00CK-d)v?l2<3rTv z)%9@ELvw8{wAN*bMMMjZnHkt|*OOQ>_+w4ewEXH?jPg22{{SW4ps0+Yju&@hxaVmE zf(NZXQY9Y8dGQBMw$?PQ9`g2Em~1WPck`{A%QJ>0wge}qB>Mcnjd`qEbb5ZP75#>z zHN(d;u?={vM0=q@MPrv?KdQGy26Kl&ak zA~<{-rcG_B+i9?{ol;2MrInHPs5w_v=aM_{MmXY|vedga?_*2H8byOequlCvwXlKZ zf_s4Li6&BicEv$ZFozpOQqjCkqv`ja9l5YgJ+H2vqKrcXnLD2YEjeP5pQR>c$gc6hE+n_*CRM8?U9UvN3}(Nr(S7-)@?3D@iG-xxVh4-l`ZYQ zV9Ohv=Yz;Qdvj99%F_)pcyF%s*(B1Uf*Ip@U84X=A?_6QBjy7na7gKj)bO3wn+Bt6 zb`l8f9?4txNQ*RpWeS4Bk{B-_p4FGGMV|@TO=}6cySBfO&2A$JzCSR4RF(DGO6MI- zGV8;7hJa(b(NR9g@yxO#0wuQy%*rDGV3UL$zl8eJzf$+u#j&*1d{+8=8b^op`?GPT zi-UO`sfI|HFa#f!f#d)&*R4?0XMI-oduy9zI*Vz|aTV+$P!d3gcHsOg9fuou&N1m- zz4wIl?L$n`u3Jzx`o^6Dm9x2kMHJRZRlUKlntvKc-xHSJT09Ho+6TiG?f_t_Lg& z0zRF6XS?vFosH&^EVJHRKA*lYA%q2zBPQ%K6Oi~S4l~EDb5+XQvL#8lE0#1ex|W@$ z8TEVHHiFg|neEF3mAdU9jo8UvbJQL<6{~o%Xu5u;k*uwz%JP#SoFU%OWCB$4zz6Ba zT-H4LCV_RKXvX5!=18>A@>^V)7B-lNaj{gkNf-yFIUS94nneEqY|w5+%0MJtNJ%Q) zW;JZYFbDvQ6(gQG%{w&pEk1`Uuj}_3GEb+=V>H89v=ODrloi8mT!E9uM|=*op=se% z@f6zGvAcLJtn_#;go(Q^DycFtCm(x|dBz77dt1DY9|UQdoRP<8CE_i-b4(lNI5>^D z{{Uo?K*99yQd+-LZ^Tws+FrRC({!e^(^B@}Hp3*@2z=(!Wf^28Xk z0#pnrUA=M7b5#6KZKh}%W~HUWZDAG3lHJzoIRI!?rYuSB2*wZL^rg8HO4eiiJL3I1 z8~Yn+bsI}451BLD*vq&gvbI}x;#G!vcEF|3Akr>%CW$qamRFYMDK2&vxOm+O5&|=o z1#kyB9fwM>;eQEe@#9D5qKcYk$puj!W8aLldt z<$<0#4%`^s0d1-WUI*5Ktd^x+4(`)Xw3|=7hW=Y$A~#6w(4+i}`EIHidCAWl9y3zQ zKB04EHLZq;cK5%%`wT@QF-Ie>&*l~*0ILE3^{F&#Snag^Uh+%3$CB15ppoUDCL!hm z41Sy`;QF4uYDjM;vD2;Y9#)okwFqPaXWYz>7{=~E$4+o@$4Yj(xN}=W3s>PWpYPe_0j8|9oM`+bsn{GVWnF`EUzOxcTFUcOC(IH*a`}R zk(_!8&za`D@a~a!bQ%k$hUU=15Esr%Zpa5b;dbP8&!t(ruuIKhF1*O)l1Z$|wlDKw z@OliA1F**!>z*kkbS|2Vu$xrA)?gRbw$@j6dSFQAwUx|G8Qth2(?P7d^nMcDhZSnYOvqAMHxtYme-)sgR?IKXuMCxDJP} zJXD?<(=VljX-jQzmseV1K&vIY29QL=;09F$0Nk)9f)<5sH&1&D+gm%iTNyYT(C{cF#P zL4Gb$IZAFnAmH+P;kX?0Sek~B1^)oU-9*D}EKPrKVo2FbHr^0?yzbz7RU&57(A?7X z7Z-QBZ1+BNQl-3+G}kZYFPY94=D{A^93H;8dN!GTd8p2*aLsKk&BP7%DEzq>YHl2s zCp~!o02+hCmzHNq({(5`w-@FJqL&h##w27L#zq_FLBPj;YHK-7y^f+y`#8DYWj1lDe}tY;`+HbX)XQS+DM`woM$Y5<-|Dms5_J^v^ZQYqr+6 zdVGy(cM{D7%9!Ix0~oNN;E~QT&M+~>a^GvSmgHQujIzkU>cibfy zIT9Yc@&5pQ4@&U+&k9~?9wCz3M7Vu3T#Y{3=&o87MnV-;jz|E2Fmco0j`vd62a9Yz z$200$WVULvn~Upc)gAHozF20SqjjT%TJU5%?xQqpMtKX)+`~mgHw_xjyX~VR?gfUk19Cr~GP#EKd0G#0DS3#^w zhU5Y5UQcy9*lLnVIL>5NUBPpcfsTFYDKR~?Js#J?+6RYTNp!m_dqy8LC@_mD_WuAm zt9~Q!4wd5_A>qHaftKbV9elMVGtUPZ2i#Q)dp$mD_$P+xWh*IVi3s48+D3m6aqC`! zsHGR>1LXwsn%+qqYVT9#c>e%nT@ERjpAcU>0OM#y1bb)y0Igmf@x#Cnd?)c`rjc)S z_g0fzeWXt?0r_G!@y8hbYwhnB>o?XHwzm3wD$%;Jl1wSV9AgEC9E_UsPm2El25mks zUO{<(aXq%73Wol=M?E%^(<6>+7~pjGm@ZrDe2uU8KU46-&sddh5RV{R?st&ewCdY1{|Nm)~7&KdXesWS2_!q z66E0LIPFC>BvLu~+tVE=qQP_0{5Ro`6Ik8qGwRnC%@~SEo-i=7sYx;!TR+~7yN){% zT>k)sJPqOr&Ig>TBIY!dB&0JL`K(KMm;Gj0t}%lB5we#88EA zDMRCX7C1jBM$Ww7W=Qwqpz1`LVh#JO$^!;aS>0jBRE3dnq?7 z9nFN3TiaS&+2%5g%kv$;U=pNqdgI=z+QlT^8=FwGSB35@M80LXkr_l%fZzt>fOCLH zTB)jQ-YC(M3oGq1_UT=VHRMSdfyV3&fM)=eJ+eFF6mCBUmC)NizXHqhH?dcCYyPN^`qm3E+A&z>>6C{%PF-0@i2 z6k7hEA1u<|s3l;OfTlv^Z1a>2rvM*({VEMfykT)Av=UkAR+h@rB9k<#;fsNTgZCF4 zang(3ig~tZLc(Tx4gNwwzRmHaoSCt>m!WN-fF|+1rO7cX0#rtq3pl zY5X}o%$A5^TdDHbm*8o9Pq zyA1tgE07nA1B`=R)}I~bu@<#%mQu#=e`_===YH(5KnCEr?g+=YsxazsuiLC+uvqli z^#qPc;Z>10N*51;+dvF?&!tbIOLb*?FPn875udZm4a_(wn0W>W1DqZKUO5yucXE=l zvM*`zU)^|e&95z8E$uF6jpLGY{;(M_fFE%j;~jbH#Ydq-75$Z#wPkZGP|CAfOwcH3 z-Gst5k8uQo3l$xDb*9_sb{E>VrFb<7e$x%au)t9rZd@LYKsex*$;W=xmuIJ2==%KL zeWl!*bIUXlT8Wr4I0XI8*yVsc@^jXKt0kzDL$BNTH%?6>Ph{9+w)2dNgfJ|m^S}TO zN&G6twJg`454789EG?(JZ5lYFMRbkKp#UM}_4KFEes|o% zn!@Jg?5^aN&_#8k{gIQ*Au~~k$|Qa9s{+Ka002Vt91QiY zt^8Y|UtI~TwJ6_aqa2SKA!IMOe1*9uk=Lin4O5ot?Dm9^_g2)5;9qKsV5-h z;DS4v=6)P}H*f3>a`sJ8Z6focx=Tndz>-1ce;zPbjl>T59f@oyC@! zt*SUPM*5^!X>g|x2}a-z-FVM9?M~2dWza1(StHZu-5sz+jsi@X^I3Qe(BahM9X)F9 zXx75%+Vz}P7VC9s6}F)+qa;QbA&hQZ5*9*o6ymid)UGXHw6bWWnkgZM;6{-l+MuU7 z9PS6F^{V&L9d}eWLKe0UsoTtLRYPt@R3sCOgTXk(UDb4mTe;P3ZX{cI zRyBKRN|%k`+z4!yJu|oIj`gjrUYk8tq`7IL(-Pt3wTwilg`GfSkO4h1Ju^{ix6yr) z?@tyG$#pZNwwEk0s#&oiVh&p!a5&^va=Uh0oONXRy~%7pPe;}~C#s9)ktDL2Bo|Yk zId={|M$S(zI{Mc`tt7VzqUmBo=ZsuP`Px7SacquqNcz@2zlTv|(=6>ZdyA1Q=`{A` z0!E!sk5V^a;FI@9)~stc33=i>hzgK{Di|H41lj=4TxFZ`HBn8g6uFnhxzBiF?$1uP z(~|2`hTc@LxVI6rV6I)d7UX1=BO|cJD((Huns14I%cjJ))|V)YEYZqZMkQHJFna31;#!BECslm_ZHoSb&eHDFH;=~qJ2R}oxDRYIvoBL%WB z++dP<7{)8xJa21fr`W8PY?56CVpz84ILG)J@hgoZ9x;_>wq~{$Y#dYju7S3R$INo_Ujx6`d#%Z#CfBIFE##z*7&*L7>5SZjJ1(!4`$X?>-n@=q1K=v{-d zU@&dm0n?^w&B>ZmP+OP&-JtkOLGZNxBlBU7`rXz`g}Go6)d35&K_r~89(6h&C@%rbHEkEKQN6bWQItyJ)h>mk&PQMH|mMv)V@IgFf~<3D(iao1?8le)7a zDMhwH;C(*BTkxdh$vu=%yP$^NRzn$FjC`OTITcjs6JK7n@SN?lSY}jk*>RDa6Tvw5 zt5#Zso*b}A6t|IcB#uZ%IXjNvMga#T@$FV^HOc3L?6E}VA1?sBY=~FW<^w%wS6c>+ z-I{+C;eyTlDRUev9_#ns$hagMX^%Mf6zk%;rkLn}6lVk+cEfi31wT^Luk{@s8|$fU z=Yq~a(V-lM`-BcUV3F6oOMhiGt+l+XdX~*9mGc<~mbo2B^cl}uNE&X&T4=NQa@u1a z=~qyQ!R06gnOROwaxuU>{VG%7i7##gNq=P=*#it2&U<=)S}b)t8_TpyOX&%UGPhn# zi6Vy?KPg4d2pz_8TB%~v+%#5p7kAeJAux{{5rODK91Ic&&oo=9Qj%6ftTc$V8y1Xe zF9p@P+9rS^`HH843uN*={c9&sveX*>SC3G;7Wphn+%`J%#(jGZD{uQg?@vouH7jSf zX~tXkoP-1h!zt-2=b=*h?+Zd~+_At9Pf>q0U@_+qxSIi~8=YH)&BS`JfA4*NV$gyP*L6A_;*8p5?}a^Eocw5qg*seDJl^phDIyNEPg}%1z7Nt>GrU` ztrnwoePyX$z0AniAj%~f%kC|MwU-P|H|GMle-V6p@X6Eu&vW2-@2!~(MmY>?upASO zh`9T`YA8NCLE%&oY5xEZY^*e!%*Z8q8BwHR!Oqjc!RR{IvaIw*v8x1ko*JLRk@&9n zN7AB47S6YxOcEJ9zm`l!N{!gV0fE^?Q(afUkhR1{$4+~g=0}Akw0TC+jll>9Jqap% z{cE4_m&QAP6Y5iHHXa(VYkfZI-DS(lWs`h?e8dVc_#-1eovVK1#l9bfpGvgw)!cfB zXxu`&f0jX4ZR!q5Y#qmssp6Z^(My?J-SBf+T=iYij>pgno8kT4?z66@p??L;8iUE? zyWbWPFm#ZsN681Gjt4+~l^u?~;>|)MXKklL1g#G6^EyKr<2m2AJc7WEyb<4qig!92 ze;VE|grb@oc_MsGgpNKGnUFXj90SNC4#Z}p(0osKa|CHVpFFD+hD2|gBmmEw&YaYVO#y0ZVJa-leGLs_te>%H> z2n3Q;jEv+1o<}*Qv8D9b@Aa!&o6S<_X>!_I*iWQ}WO)$6mm%_Z4D~s|Ba#PN)a5hJVFSr5 zapp+8xnyE?_ZWN-Gt_}qZ9Fx5bdL-=rm=f}YOgaS*Lx8Z62K_{W90z!^{p40#(812 zd+DD}hfkI?fV!-W7T^Kl5gzV-c3ct29rK?3bDZhm!RJFg#+?MqIkuYOeMx-K0vv8& zNeS}c4yW82VJlr+=`|azJZNUuQk8EK2afVbB(!6K6QdOJ?hnjnx3hm&nz~VcKetmy}iQx@&+Z9vbYMPEZGF}(va1y zV;b@uPE9rb&!t@1Ura1q`A$KN0U@2fZslISovd2A>F*nf{?4JENQ8>z zBvx#(0}YlWXYkExYWj`;0Ej-;`eD7eEdmuw*_F!33vbQ{#~9-{IRtghbUqcgvR!IK z)M0roj3n;3k8m1*_l5FMlBA4v3~QgZ zwVzyqXvO3)+Q)hJl=E0K&xB5(VDs~T7Y4l(!`ilqW8y7A>>dehr?rJ6ST-uhAl?{- zKUMniS$b8nX!lyAmlv_==`%#c3`(;nm$A14jBul;9Vz^ZPR-ortnS)v2IfoYt!2Eo z)E{ii6K#_%fPjLE3stdx?r;Rt+^x9uXPLO z#k96ETt_T21rehVilu-Z@;K+URMvbm9sZ+fJa?+C<*G;w%nN**NEj!A0(1V&Qd<)# zEl)ku*G|(lm@aimq@LN*Yj3lNj$HZDa>R7T{zZ28!%MPlJH!6~Ws+A3BoVB)yL`f1 zr%au>AA#b!PY&GKcz*Ka%VsVTTZtK_WpgBDzl08*SZ5=>V$Ex%9ZuTf=_U@ONgc>V zR4h2o;~qV}@#~KCo%#y*E9iHvr`hNcq;Gj?b7mujE>M((cLn*dagZ~~>N8nW_*+QR z&e%+CB17hnGaNaLuw3VoTWa&uim|0=)-P#le$hSMy|vI(W%8MDCCH4B4@@6^YeAmN zQM!Smx0znb-4ONm@mNb2av`(Ig1c$0fX`;yBa$z+jwm zK~QnhiM5ld-s%bE-F>rT28pCql2=t$d~NN(!9KLxeJ($+4NA=fhD%hC6ql14^PQLn z_(`nY88nElH72o^FYN@9QFNw2U0K5hBooK_v5e!Or)!j?$u&tym*}x@^8!Ub5mZ^Dfpt3tiX11RoeVZ7M0DPs1&NyDCr_@dI>dbE$+iI5{Dbu5c z8&J|1W?L}GrZ*Tl$vNqj!8~K7OnhadJ?*o>a<;eD&E$`;%8x8c*cs1nPsguHuDY{$ zr^7mqpKSKU*~VjyH?dYbcAOE>xjxO2&1Bs8D_YZZYrnE;HqmNZj8H%!EfjtIM6_@}RQ-IXMTK_D>7{ z0BCq)Tun~y7Pz~n$CQzX_;h`dKV^e{Y8%^n&F6rswm2RQUSJ?gdQ zpR3Cw$rX&TTO$%(l&B!%*S8&LU72#Vu8}pwSQf!hxwxNezDU}*+!Z5B>^TFpM z@~3`XSq)uiaoYa?hVL~001aMCr%57D<*`X6V!J`nfgk{NGXOYcu`d{qzqIiPJJMXk?N!!ga4dg3x zkUn9Kr-~ik#HDS|EBLD>gQj2Uui?FIuA*SVa2efl2|qRldC2{114F!;KMDArTZuQt zGQ_AdPa;xtgV1r_yX%hx+3EI(An?@srO8&u*~;uv4gg~#gV*a=nvaOQFRlxp4ruU6 zX?JewnxZr%L?KBox$Z{R=}I?KS2n2mskIbzKLmUg4~M)b1H!&#?Z($o-*@d(s3oz` zZI2y0Ij?em4#c`lb}@geR8jJrWUsH|U!LC*K00{E!CIb|VWw)QPQ6!sO6?IAMTzAg z#|9X5Sc2!>*ml774}|{!w?&?*99BLvfi$b4zw#5d4A$iT0JfZzB>hJ{s}F4sepdAj zm67y*mYP??^@iH*kCL$}hm>w4j1GP9I`_p-tNcLF?nKE0O2S3j7C4HM2*Crjai0_5 zvG{?b=+{I&D4sw7V)B>CAO1<1RRWUhV||1 zTeOnB%8$LdzYeEoCxhm*E**@d1qAK{ZD4urkVoZIwe4Lmyen%3&7IoEbXL(WJh8O7 zQVV0QF`jx?J>hLPjy0c$D0Y|j$kBa;=DnCLpH z?>PKN(um?IPD(0Ug_>HP%dXq&+Aftgpzuc=FpbZcNaO3DO5G6^Lb3wc85k!O^Dedf zQuv=y((Wy8wI#TQB_J#5F)#3|HX`!%G3NddGZ+>>>wyQdHW6jK) z@@99r_6(LjSWNj$qwi#~;~lCw?V#GEvZpxtc+Gr%{{R%cRdX4ZFYPO6?XF(tQ!G)o^+zmnp}T?W-nxdKTapB_5^O|VAEmA1c8it)Rvlmk`#tgJAvErtLhPB!902j<^+n? z_U1V7KonKo!d1W-^xe{mk=V!8A(v0k?eDMr0daAtEUO*Eg)JP=oaRL!DOoyWAg@1# zXna}tiKpux5xMZi{hqI*Tr#A0cDJgm`&BaBHwG)W=-+A63xU~oswzJsPkeKT$24Srn(-{%Z*RWQb!V$7XBmg72WQeYw{R0^W`fI<7hii zJPzX~iYk&@l=URkpodlQ#;@Vs5L{eXUfHyE(%rV<6D(z9i+MTD=HG&Glb+Sd+xSbv z_IgFc?Re~Aks+H;xYT}JgSDN2!3p=yarx0jE{&H`D(6Muuk067qS__0m@KA{I!Loe zB5W9saLHlvZsWTep5s#RKAC%Hj}DJ5+$RkMy|8f0_mQwy11Bf1W7di&Ov+D0ZozFe z<;q;?Y}47vWpNW*OPG)aD$br)0|d8o^rp|^9cK2<<57=Eznt3QIRsu*Ir+l;r#r{Y zS0r|#iXMfvbd2pUQo7c4SVhD)P#BU(~uB zN1^$W%F*1)t8(qMa-?&&*E!@@wri2So`oH_X~wrDr`aKzA`5Nu*bssQQ8-}i#Dj1IrTdC12#jbknISzlOQYI9wekO-f9MI0yx z$|EBg!74Zh01=ufqAuuC)XTTJOFc$8rn#N2*rfYLr-IL&+lojCY^s1d^#C4~v8XNe z{{V^NirVQVwTy3;++qB`-ftTUS>b6d?t^~ zcWFdsJ=kPX)Z}xK*S$8&#n5Tjy5udW$*BJTXrg&CLuBh5Y^+EuG0=>A(M4l9wCr(I zsOdj-9nFGTwx3{@-h0VmXx8%GMHV8=goPVHEs!4_znxD#tlCZ8?x|yJ>Gs2u4adrN zh1wZZWQ663BQE{N2Ucy zZKvB=EP8ICJ+s=%%^LR=fzEQbtjs_-q&rtgX{rh zE47gKIbMCU?L`z=m^Pe^SoNzrJvHoLu-|q8A7~0U3=DKU=h~FXsmW=+Yq^(Cgdmi; z0hJhlNm0qhXri>~aVKZWdPbL{Som@;E)cOtwVCB}%W!j(S^BoKVER4PzuFYLzz_fl z`G**yip7@`hu3xcxjZzQeSrwXG;;1zL5z-Z$Gvm9Ka8*RSZ(Z=P}yd7mnDjjrA`Pq z>To)aa%iHOZ9NOJlGN8-eI%F5fxO370FbOXCj*i(UTLW5+Bb(TH4R42CYJYDx|Z_v z%B#D|kLQt8j)44$&;0Z>QCjYyHe|D{RAz31}Y%nZ&&N1s+8t20OXTui?pJI~rL}<+{L*-X*;LBqqWM}^X ztwj~2C_;B^!M}KX-VE^tmAGlN;RJit3(t7~0H0vw_2RqF5B|;mBGw^kZo*l%GKGJ7 zTc;RP#|OWq6jxHhQn_jBdIUeRLr0@aEV`uA-xVe(1+Z0T$I1(D;Ab7HjPYme+v2YV z_;PJyQid^a3ah=fyNP8WkT?Ky*Yu)_so`lYkuqljo)y-0*?fyVK6t_pm0dO*`;&_3 zY(5cqq6=uIdwX&l0adP1LCL`CeQ2VtmI|Dq&hK-H)O_|26Zk(}@XT)7hLmBFF_%c> zM=CL#@O=hr7Q*RVMADF|;FVWg7y5e9MPZ1c3QF-dhrG2m5(JQ|asmDxl`=-BBMJwm XXrjF0$qcB9L~02gNg1MwC=vhJ{Nui$ literal 0 HcmV?d00001 diff --git a/doc/tutorials/highgui/raster-gdal/raster_io_gdal.rst b/doc/tutorials/highgui/raster-gdal/raster_io_gdal.rst new file mode 100644 index 0000000000..d896ef5d79 --- /dev/null +++ b/doc/tutorials/highgui/raster-gdal/raster_io_gdal.rst @@ -0,0 +1,113 @@ +.. _Raster_IO_GDAL: + + +Reading Geospatial Raster files with GDAL +***************************************** + +Geospatial raster data is a heavily used product in Geographic Information +Systems and Photogrammetry. Raster data typically can represent imagery +and Digital Elevation Models (DEM). The standard library for loading +GIS imagery is the Geographic Data Abstraction Library (GDAL). In this example, we +will show techniques for loading GIS raster formats using native OpenCV functions. +In addition, we will show some an example of how OpenCV can use this data for +novel and interesting purposes. + +Goals +===== + +The primary objectives for this tutorial: + +.. container:: enumeratevisibleitemswithsquare + + + How to use OpenCV imread to load satellite imagery. + + How to use OpenCV imread to load SRTM Digital Elevation Models + + Given the corner coordinates of both the image and DEM, correllate the elevation data to the image to find elevations for each pixel. + + Show a basic, easy-to-implement example of a terrain heat map. + + Show a basic use of DEM data coupled with ortho-rectified imagery. + +To implement these goals, the following code takes a Digital Elevation Model as well as a GeoTiff image of San Francisco as input. +The image and DEM data is processed and generates a terrain heat map of the image as well as labels areas of the city which would +be affected should the water level of the bay rise 10, 50, and 100 meters. + +Code +==== + +.. literalinclude:: ../../../../samples/cpp/tutorial_code/HighGUI/GDAL_IO/gdal-image.cpp + :language: cpp + :linenos: + :tab-width: 4 + + +How to Read Raster Data using GDAL +====================================== + +This demonstration uses the default OpenCV :ocv:func:`imread` function. The primary difference is that in order to force GDAL to load the +image, you must use the appropriate flag. + +.. code-block:: cpp + + cv::Mat image = cv::imread( argv[1], cv::IMREAD_LOAD_GDAL ); + +When loading digital elevation models, the actual numeric value of each pixel is essential +and cannot be scaled or truncated. For example, with image data a pixel represented as a double with a value of 1 has +an equal appearance to a pixel which is represented as an unsigned character with a value of 255. +With terrain data, the pixel value represents the elevation in meters. In order to ensure that OpenCV preserves the native value, +use the GDAL flag in imread with the ANYDEPTH flag. + +.. code-block:: cpp + + cv::Mat dem = cv::imread( argv[2], cv::IMREAD_LOAD_GDAL | cv::IMREAD_ANYDEPTH ); + + +If you know beforehand the type of DEM model you are loading, then it may be a safe bet to test the ``Mat::type()`` or ``Mat::depth()`` +using an assert or other mechanism. NASA or DOD specification documents can provide the input types for various +elevation models. The major types, SRTM and DTED, are both signed shorts. + +Notes +===== + +Lat/Lon (Geodetic) Coordinates should normally be avoided +--------------------------------------------------------- + +The Geodetic Coordinate System is a spherical coordinate system, meaning that using them with Cartesian mathematics is technically incorrect. This +demo uses them to increase the readability and is accurate enough to make the point. A better coordinate system would be Universal Transverse Mercator. + +Finding the corner coordinates +------------------------------ + +One easy method to find the corner coordinates of an image is to use the command-line tool ``gdalinfo``. For imagery which is ortho-rectified and contains +the projection information, you can use the `USGS EarthExplorer `_. + +.. code-block:: bash + + $> gdalinfo N37W123.hgt + + Driver: SRTMHGT/SRTMHGT File Format + Files: N37W123.hgt + Size is 3601, 3601 + Coordinate System is: + GEOGCS["WGS 84", + DATUM["WGS_1984", + + ... more output ... + + Corner Coordinates: + Upper Left (-123.0001389, 38.0001389) (123d 0' 0.50"W, 38d 0' 0.50"N) + Lower Left (-123.0001389, 36.9998611) (123d 0' 0.50"W, 36d59'59.50"N) + Upper Right (-121.9998611, 38.0001389) (121d59'59.50"W, 38d 0' 0.50"N) + Lower Right (-121.9998611, 36.9998611) (121d59'59.50"W, 36d59'59.50"N) + Center (-122.5000000, 37.5000000) (122d30' 0.00"W, 37d30' 0.00"N) + + ... more output ... + + +Results +======= + +Below is the output of the program. Use the first image as the input. For the DEM model, download the SRTM file located at the USGS here. `http://dds.cr.usgs.gov/srtm/version2_1/SRTM1/Region_04/N37W123.hgt.zip `_ + +.. image:: images/output.jpg + +.. image:: images/heat-map.jpg + +.. image:: images/flood-zone.jpg diff --git a/doc/tutorials/highgui/table_of_content_highgui/images/gdal-io.jpg b/doc/tutorials/highgui/table_of_content_highgui/images/gdal-io.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b2974ed2fb36db5a54a125e674ce095173085673 GIT binary patch literal 74907 zcmeFYbyQr<*Dlz&y99?I!QG{i5ZqlFcXxMpCwODQLXhAt!QG*8x8UxCT;6xSd%u}k zGi%Mvzw@g;r&o3DUAyXedY!6WRr~y1`nv_dl$Df`1VBLn08sBAz~60vm4uhI1ppu; z!vH`8001xmY$%w2ME~CGP|yI(_dLh@Z5;{wZ`tSf{69&}%F)f!+|G`IjfI_$g$)1= zfG$A#R|5&=-Om3m|Bv?HZKPW(H#a8%R#pdB7GpC<6LS_*M|)N;V<%R27B*IZkcgL) zv8k=O8-SJrlZ$>F1Od;eY z;AQV*Z|-JH;bm{<;40t+r2N;ozr{jZ&Wik3 z82AqZ|6$-i4E+C(f&cd4%pKm{HqUqe?C&Z-8~_6i{m=EDVBaq|L^wEDSU6+^1b9SL zWK>iXWE2!MbZksCbS!if6ij?fEF4@sJUmp44+QwQ1lYKExc?Y|f_bk43x@;;hlGoU zf`?j=^2?>+24waOG?YWm;b1%Z)j|4ZfR}n?du;H92y=Oot>LsfGjR8 zuWaw^?(H8O{ysXsy1u!+yMK6mdj1C&6aeObgZ2LXe~An09Tzk#EDS8dKe(WvJ^ulY z1q=6)9Ufau1;N-Ehms>05%+U)VQmi*6{qSYo{7s0GCnoeHqF&P(EdgC{|s2j|0iVs z3)p|-S^=QKK)wHYFjxQ)z>PDiZ*=zq1O3@h{;8cIDmqU9$Yc7&pe? zA#z^hv%i4FYSV*C4q_uVA0F>N48!&Mm3_0NPvVU1go9pZ3fZO&TYd%TG9@mRn(8Q@ zFoe6a3h2%S%uwf=T^G?7uS+Z7cgs)OVq^MKruMf`Nv@{KxQ4;dsF9>Y<%Na6rqt#r zvyODjOQS&`o5! z^7An}*l>=rL`F7sf-$2cCf=-eI6&1ONl1;wK9t1;!CBWFqP_>Pp|?k(Z8^LBcHlr7 zSKLI^{1;$QRaGY)th8~IT~7iBa$pd*^K_B~mg~vF!z|T}4*Mi1bi34vsJ}~q9d># z2bEGHneE!pXu75x1|N{MS)3=8TxHFcl+eI$?$xB4AIZk)wwxblGe5F+CP8}-vWYM> zek4RhKm7?a2dNbNNJw$mC1um%c1vNDC+LRTyHWN*hy3D`(n?i$q*C`3 z%HIRDRXUYbcg|y9{8?Ly!nDVth>q^8z{Lr4l76b|L|2fm>Zpd7J_h>#Si2`CltOJC z6de#}!a$M~DFe7_xP7c>b|r1KJFFQghfZdw0bqBK-`thLiu5~iD9Y@<-j-)#C5H}* zQOq%HQ6UXVyCCulL1~)0^C|N6jF9BtOmKPIH=M1`!L{e>`Z@bW^4*|A4R4G6Xcd#{0qyx1Z&ZhL+lI}85nST zJs_-H6y)TH#_=vJIjz_+gyD^5i~uVN(1a!&xd z&mq|YCEqUuNZt|&)UQDse1s4LS@BxaiA1VeQrEkk)CqK_pyUf>220v%|A0ncrMmQc zLl)e%QC{|8oIa*C1c8&kJ2P;M zPewa<$m4i3h-~m%>wHN%M_47BJLYE|+Gf(XvQN2{cf>L_BWAN<$e!yUcxAh%s zbyxlZM6b*gO%o0*#yNSZjRU|=zD~ZHc~dziMT)A;tZMzx6_`qfx|pcGT4KBTP&RJ> zh{2Frv(;swC-0@SARhPBlc*^|%s|-(3!usAPzdLPS2@6>wFlrvt%9q=Ur|ALG_TJ4 z9rt0|YnN*dd)P&6Lhl7&!oO1rf};8+88^$``{P>XS*7KVyiP-7rceI7hQ-XNn_yRm zmUqFUa3JRK%#p{<=L{Mm9i2K&YL(O!&eT)EEB&;GKKoC7vMD>G#8s-kCJ|l^W|$4Z zIb+1|vuxz#{W1v6y1&Eu$Bfjy@1!qv8itsJM*}vi|0|m5NY{)QX?3drx3my~2 zkjQqX5OZPN3HeCK4QD(40{T}J(jp2@O7**nOouX@W(dYeTzK*%(bNkWY)%JerMH@y zq~N6O{xERJ)!O0Y`)uY73Tyu~9IY>{zs5{cRrHCGl>yJjinBPGp&HH-?EOm9ltg(6Am)m&~A+Ee7Os(bz%` zaT7aGlkcli3r2Y3h5>3}5AmoSQ%BBJ_+dmKxrET=P(HMS0?4&E4B%bDQ#8xs0-Q++ z?F7^05QZcoc0m80QC=GVkl5ovdGXSefs~D#>Qnq0_$E0)aG`*8kT*FvCYy@{)&1=P zPfvK^eG*a%w8`ToAVjz#&($UT_(aJdN`7XMgX}%2Bh5E*B*WFdXbDI?%Ab3^FJ~SB zV7EKVo0W1yeFl@gYUmVLqN2c~^{5TuSx1qLD;Yn}Li0j_Q(Vw(g2q#3zUBqjKuwiU z4&r|Qdg@7yS}h4U8nEIsOLCyV5Z}Bkm#zH`)ibjD`l8lC8HV{3W|UAOO7;3YAHOdF z8zX*>v7iL!FW~-6)KXLY#mLU|NI{!J*~r+N|E|nASxhLoEuF-4Us+gXwt>llz{0Zc zVL~l?Ih%$GO3p=z8u`mA<+kv_mTzI>T!bgA>Z-{ADs?{wflB{Vhs(9H&g$KS$_FeKrt-! zS!Rd?SqRYA_eOjr6{7`xK8agbXCl0Jlfs+mF5x2Fcvzcqu~r{ok=xMv!!KI6@~lyW z^oZy$Ak>{0&<7acx_QVwHQf=>;M zm58X)fel@e3?i(HzaoQl$+i7{II*2-l8(<_!dHDeo>fnag!=8)+d@l9-WBGua2lK+ zXQGP2dWTJ-BLf1Py&s;#2NqK71-=?`=$;9d$XmLAjp9t2{6u!(I_HSx^2j+I2=&;M zO+S;S^=t*#Q~gFL6%35-lbU9^b+wt3*q#uBTd(^_c_`Jo!co!Uz@DTLl2=qFy8@zdX=_ZEV?6O#tD}Vr?8gk$eHQ;ELg4oPggpib`h!NAA;!t3 ziMFub7#6BNuB*u>D;>5wpUQ*_1L1R=NlOk2t@|^YY=c=YGL6uY_(%9A75RpQawoIg zO-!xN4w^T3X*0t;F;w!)jx;I_BAEs1`bNGVC$_lrb4?L?`TgEt4n6yLon!#FG7z+z zzwM~#JtX96$o?w+XzqXc{CiZRnybuC$_-(C%5q5jVtP^PvTs*#MW?6uv7GSs34WLx zL2cSO0{Ba$pP#(S7kP8V+hXuunj1*D%@e^y&6qmq{7PY(*WpjEC^S^v%8u2x_N0mm zCd&hBv}h$M_-G{rppF!85O<;*HXfx)BPsm)lS!^B61myzvs>Lzk%(r4{h?Xz#Y>TJ z+^qjs+|5xBLbHmV12~S97oj}w7kX&E?ri;hczX1ADMwr4b?M9$PZ0sB7E8;*Q~$(9 zaa)^b$hWJdmAVV2Bj{TD7!K)?Qv_GtHiWQqcS7|7Mn*pE`Hvnl0@b%LG{nhCh(F3c zOcdyJhb8vlXLpr*S_9)t8a$fdx@MT-G|XYy8U9RaQSt4@B@cLJH`T&t6v*Z~w8c=f z=Ll91e2J@|ZqKM)5ru_Ws)4~99NUh160gQg1V=jhIA!Y zO6{N#9YY4kPEjld5tjqJ@d>>FX4gG)R3~Rc{-27>CaiBHuI0+-taYm(N5->VG$47s zG`5o_TND?W;pBwV!){Uu@2P(7wzkFUgU(ci^aJsO_9Hu8oDo%T+SG8M578|#FhI^S z1x-u4KK+0&M#yI{HIq6mK$GrRlnOxp_@T>|c!)^P^FHaAr+oW+L7aWg3*mjc<1f`= ze{>AI5_2!@Q5BE3?yWpI=Q0O#Ecy(uml!1e+scYmy!g?|`&kY={^-Q?t=(#Ak+JMs z5x4xA&w5>F5p~SEI2GX6v-?kBu;T}oL6>4Me;$4;DCutHq;>eo9oN-u@QGXzVcLEuRiuOE(Z^}lA*J?n{D_Hp4 zHE%)NwDrf@M4}0STWJAtYsqFfEr~w^k7K5fMvBhoq84s}NkQb|V&qg$QfE$P&E}-2L_g;8&xRnZ!96$a<*G zX?(t`P$rll=&F*_`U&u4^vQ|;MCWpi<5CNz5a#s{!zdE5UvLk>kph&1NZM7>+F_Y& zGa*nr1VGCWICZF#thmgW*ba8h_nV)ouX}y$BX7;i`#LHa-VoDzOmYczp+?X*EW;FZ zcUU%CUgSEL#DADrCHw)~xuq^h1}J@4_H_S4oTXB9W!#$r0FNOLwkVerYULS*O5i@a zc=Oe0A?_M?f_}~}b4#$KVIwXdDdm(f96qT20O)B=cTRr?EViv z4rSbp`(M*jOF2Prd_8@TJc_R8EQD(_1is2q%>YQM4J7yCQ|GxN?$@QH=Q>#dlCtOZl1HW97=l&P(}=hPK8< z1a1msn_u)RW?2HLdIGn9K7MJ)B~Yq1w9c9@AWr+{>y7sSPm5ZX+Z}XYO{FpI(9rr> zF^AmB&J%B@ZMwIUmzcXYZx&DldohWe{ENgif9ieVs=Wq60H9~$5j%|VQ$Ih?C(~Qt zCP)q$*KcwkZ=#-Z=MziuM1GfK<&t40h0Q=FSQUsH9Q6r7hZiir9dOw|zf>&R1u8Pi z5nCi(wGQ`wd#*iYJXZM7=OYsIDo9!YVUk!0BlK1mN^$EMJ_=z2Mpmhtt?o+&;K!yO z`UY4|1+Ygrh6m!UpKasV;2#eZvPnjDnP3)v4$b|so5CUetOY9Y3LWecglwG8i7M4F zp848~)gjmI2FRM7?WLSX)?|yY6>?)p8c}9#&NZ#=A3<9lEjAcf4=xJd-)@il8a^Zxka3nSA_1{ zE^xi}vY45^Z4q4}@i+vNJ(1GCF4lL^xg`E>dBeN}YS^<+0w)QCAdy;cu(sQR1bqkU+d@_#4`&vjC}fy!It?k> z3@0D=%6Zc^^1>U3pWkeCJsMc5OJC6XdrG7sFm{OMg0-!pM~hcgj<82s6;L&Klk2K3 z&1h_2@smy0VvrCB1S1LVxKAJ6*y7JA=^%-2zYU1J4mlM*Y7RmtpzOKbSIc5xEdR#h zTm$)sz$Vf3t(SgEbW$Zuq=Iqg=RZ;y7*dzj^ju3F;L#0Ss;0TTy*gUVbMuTb?^*g{ z6-L?z7og|Do)};o3h@&QycY~*E)B1updr$%yFLuBS=HX!I)vTB*9*>T5zZ=q41A-m za);JmU;Tze=2)K=IWl@~zsi%`EOets9@W8Szmt^=y;Ac;Bf(tbPMjKgH2S8ID>Kc(j9^FMU#2`k~5l^$U zGJchW0{(N>De!F4vKixySocmuu-Csb& z?BT#-_Sq7OW$|kLQyia`kz^nont{$0PCtiNU;lGnBTL{M3*j``FrUUNE|m6=H1FDu zvus|cBC?!)87c=u<3x)6I^oFeg+bbPFBTLGs6W;BQcd#?Sr%d6M-oJ~RWTlJ@(alB z4(mX}4q;Y=;4MHAb?T9fp?G!)E$q+v@r@B2iOw*y2s#YdxUJpA)TivqA!hxu_yA(B z&>o(9ErF)I`)LCTuf1a^DnZap?MlmRi_PNv!B;)~%-B9(^;VcFPD0B32A_j0szG!? zAGM4NXRyC@D6EltIj*ZZY$3*xy$D(1!dV?!U{SL011qGCMH(|{_xuJ zFJksb&$2#`834hbHyHF>!8fi72ZG#DvD?9S%1_jPS<>F(jaI#M5OJi||p2xS0|N-N<*+NDpc!$0fh{Gc@p? zYn|tICh)_&W_#rhVkM4&Ll7u4!<8|UM?)ulEnj0ib6XXs3f9>3%bwocVWdr-kXuGB z-ni*vWI!Gp?9=G;qf($n6Wx9gnSu-KQ7QB(&Y$w#X8u%f;Em#bX_)(p6CyfjNRt0^ zdm=GB$zb`Y&3?JT*OgzoD7RH6%Cg76TUb5C-@|mJrm}6wb)k1qcym)%XYELce!G)a zf0m_T^EB3xr58e91sgX9r=vXH?UnqHEvmFw;_^ldVc{}FJb8dPS{F^ARaK@xHYl6L zXfMRc1@U9UAA-$%4%!{D9{c1k*|a}@pLd|rK0B={{GOZ69wk)5~jO9qx6J zvu4hc@l-inmDn$7X4D_B>v@GZNt}CBrk(ZgE4Gujb9t<8*SYVIs`m&yvrIjbuzQ9n zVB&Cs7mxXhT(`V&26XNFJ$cHD8qQTGco~a>JsBckf=7VPkBi0D9`+w{(90chj*_Jg zbl1(};`v~sdVX)Ryc!+S5>y&nTct;^@YV-!S<27*G0fOT$|bxF(k*kGtITs^WTx=} zB(=jG#yb(K{@}>Z3fX=W^Do#?Fu!lL&S z{UiR7kMKxWHP*9sv;eH@lgs#sp!NZY*!lr(DJX}EiR68(krWTWJ0VB^3$U;~(>9B8>|Jj!MW&LCtOXm)*r*f?T( z-GJJfv&?LLJ#e_&CEy_}>cMGn5vSGYBDwaXE3IxdPA=!8d6cbh6ANdzO32plrv!*Q zMN-bLBq6|S)Wdx$*WLYNDb;|+sjzn+lq>f8#W&+_s6K|$eOQuk^A#xoS>_aB#T$Cc zwcHC*884M=o-^z;2b0k`Q{e*(hbNpK`2~jVF?Z&o7Nn{KBsI%5)Rev9WkBP|A?b#d z*CFs^4^Cox#nDglg*%dXl6Mkss`ty(##y>F%qZEQ77OL=Tf>Et_zEbFr*>; zW=x;+(P_vT(bLz?0U6VAnqP#0{8v{mVb(+ zU;NK7yAb#_2U-e`+X=7yAomG1)vUcPhpuMUa+Gre$KA9sdmW9gu@uv7;88A&2IPS zL}G7SJDTL+kZM!%`InqstC*;3Vh<(9vZo2^Cm+qPdZ-?X zy0|P{zFYgU6V1b`jt!B{`Hoff2A%B)wfhiM7kX2y9?&XKIpqyL$J=xhwB&lr2<8DZZc?!e@pkuZCPXbXz9RO5NYN)d^Td#&W0f^XtF6By}`DUtG}IlVNH zhFq7d2Bq-J#9WpYFb1*DliOTl#0qF6Wb86~KxQ@Ty)5N&T#+$zNTF8yu$}rZrR?qs zM^%=pZY`@G1vbWdMUdR}KOJaVJ6c*@xTA1=Vkb7U3>wd;L-u5an^KwZ*2oV_RfU}G z<*oGoqJA?Envizjq$047QMg}?i72SsJt+e7A?;JpuY7Z_G~1xR0D{NN4o~M_W2MXAg-wP>J-U@Tgzxz&ToclM zZcR}2wJkz_#<{SQLzQC2E0Fu&XZHSt6wfQ{? z8o!>8OGAJW3X(YiUrWeaFW*Q<%{uta31#d$#+E_4U};x1;QALaS2GCLRs-zbq`iNp zWDB|29(S*BR~205g_lr1Ir|q64*({ilN1H>bDp%uA2fB;niol8BJPD=O*$1&3%mz} z0Pt2`@(Q7{&I$SPoRiROV&$npHo#>)vZ4|;S+N3?5$E89KLhe9A7EbkuM!sWNH`Bm zrEFTUR$50!NPnb4yK)+(rrTj6lyz#y!6~15AAcw_)GZu&dMdVoJ9nBxEJ_=Kh^8RI|ns^ zi>olT6Ux|y4vGrB;Xyk%=`Woj1PQ*Sae*8NT?vR4MUUQml!5UeuCdIowS*$o`@xW69W-7wnAzko2V$Eph^ zlLeNHab{OfdaGX}j3FCA-}gl#h40pvA5#^QKu0I{TI_Tw8;C?ah@ZjsFa&&4!gtYI z`S6b(Lk9DpegRi0Vg*j!3EVhU!%bm$<(n`%z;DrKjX>gKVZzJ9DAUfF!=~BWgE}jV z8xkt-RzXos!Dtb>-Dyqiri$|0a=I$49PizA%A27@9Bu3L2d#U^`&9onjags4XPSHv z1o-7=N}b0(4Ka*z$2ilv`RQOBqPqG~LQolJh@TeNT8VKMY>wPll0(Qm|Gq9Mx{OfR z6l8}(`st5EP_jZU+l6|JN5T*Ga0;urF`I5QwAVyJJE;+9RxKi{oo2^Lv$*FOIw z(Uw4uZ%B(^7UZ008kgUjyEBDzl)CZs02$QTNj=lNpQ3k*bOdH#!-wI-B|Zr2A#t>h%1B>3Vvm`U#q=8 z*=YZkOTBf+xcq|1>|ifbcC^89tw}5h<4qlF&$Ng&tOEkWD)&Qc#a*pdJA=B=FV9oA zt88WQv;DhrK4rM>k6slf$q|2aZfK^WB}u%(%i2cc0D;g99>sti(!&~Isyx51<3u9! z5Y@tul?tj;c4m){-*#+$y_ri=*63QZ5TiKAgdbt^b83Jh$jg$msxbodS_~H5QGN>B za^ERKjn zL5sE9_dD0uY>p7>Idw8rr*2u!I+W&Xbkr|+20KxAGSziqTu7@U6E^{lh71}ZRu3M} z>UBq+_?T?-r-xRmeDx&dSPDZTJO{*!ai}5wjMd;{AbGD*ktRn+mFcI|0gpV6Imo7L z###E2Qx!F1KT8;iCJAA;-!}4-4~d9H_stKsxa+fEj*seUE+2bqH9i zvw{)kPH=I@S#F~#<1HYE8?(K72B`Z^AORPIDD6BnHCJWn<*9qsyEgTy8G2)kxmF`$ zR=&UleuwX)^9XFJ_J?$V&Cpjh#@`UtsUPE}fz68Y`%CGgA%&u(H;GDxnGhxQsDlN4 z?PGT!_Jzt7BBa6gq@A#17)g%aKzh;0Qc#-oX)C^i?4TV@)|NHe$0PQ>hctH_vSD9! zirFB2!dQV;sUGeZdY$LJ=kxRyDbTa?Y2HEiS&2txd_YB33d@ecSet=e;mLUJ=j=dU zGq5@076V#_>o4F49diG`>yZZ%iga?#vL4l3LK$#tB_tey*1&6L0gp?T_ii(b`3hnpD&zVL47nbOIr+&84>a+1eR$iCRQ{M?`wmsa23$U#rlN zelz1P)!nOI5-n5f?LQ2sYhSY66PF7!#(330k?H18if3mR`C}W^0ycex1{Z@wz{D`7 zhCixLx*qcenlUKeG#rJdN$pS+<~=a{J2mIuLLM|i77AM4rdrd?BCPG#4X`6o;vdav z$6?O%eD5ZgYtn(b;+ZT}s&cl$k=DFy`YFyQQS)0k^BVfBk}=PHDlOSZvo01X^ctT# zsEz1$f4sIHCMWpLxAPj&=^kai<(a|umpp$YyhNUnQJ|N0SDb$x@lDdhgb8he7vKo|d|L`*LM zLs{%&yxGyrnC<&OYT4WZPnXT7j}(`t>hTwVrOLU;cXIS)QHU8cwsyY@_R73F+R+_^ zrnqBuI9;v5%CeVwF?iGF9h$a+9Mlu(?f}pKaIzU;K%RgnhsLOsO|MO8(c#F&VM>)T zMTqjGHI z^i+jWs*_3swXy>y2p%Kwm!@OTtN2gxpPybTlxnF*P?(aje=ku{l%B=U`@NEdB{ZJ1 zThA`V@^k01OvF!wy^sF=Jyb@rZARxG>$YGfw=fc+6X@DN^Bzc8F4PSZuhUgO%39-l=l{1Snt)>+-(C=_}h5w%`*#zhfmbV?hC}HFL^buz zbGPv~N-)@qVTl`isE6~;L!yF~)Qeynd~u5{;l@Ce+9AyhDz>$xA)pjN@%n@eleza0 ze4&t9>o`zv&o#kjcBI`Vp?E=s+GNvM@+Ndo_?+k2l+^!5frBInUa3SCMwY#s%Hb4h z_-ukHuNBtkF!*TdaJIZJHH_r2T1vO2P~J;~eo8O-R4m0{(ES6&C=6e^WK9oV*1zDnSt+2wh!UUYBp1 zXq%A^y>FHM1pw&_i6B1{J3b%;|7J+2{dDx^{%g<)U2q{*3u`L{AY?ReKw(%vf@BBl z2dyObXu479`?ac?%7Va=K5&JATu}tM6Xks526O9-7!VD?;>p+n zfpQ2M_I0RR8r#x8=@e(Om_(7~@YakO8NnRsJI4NO1hxD64*MDU)J(9v@R&4qY15bx zwxN8mMGFT-651}wYtXd-s>WQIg3QRr!8l`UDOVJg%d;G7O)BxGSWrt_(~W7cgXA?{ zCTTxZ2%DtLADU){5`=B(!r~$uBPK}3!Bb>u(?9v>oP@D%Mk(+cK9(3@*D2O*VpeRq?Hlv& zhPt5NTC7yw>6l1mntti9qXck=B&Z3%6UDJXixcJM@Gyu=Pe6LJW?L|lP;e2zUS;Zv zo?ztHVN84BNFZmCgCb8&Wma^djJN6Kh0O87Lh$70 zBP4jJX6;!dg5*{_j&2N;`C2YC_c?QS&DE*3ZqS+tI1D0E1rO<-yT?vwFgN0Sw{bd7 zznWw*?nqzz1zEMYLFXxlHRY!zZL_FeUz+1=>_-31qYG|}P9S!6rc<64C;pb&!t$q; zI)$w)G)W-)rrhGnAbE%R^N{%TA;j$w9PDXtOsn7)n%g`_ zt~zc!jHc^HRfUw`OTbFK)v#@0x`<6t6*e!pD?pDPKqe>G-I2bXzu7TRB6m`$Va53RvrCf)MZ%Pl_y`2q{#Zh@c;& zZ_1~SlCrAA_^vKBya4n3hq6WlmG^TcUHs8~khdBYt|L_8URXd8v4qRopuZDG)B?Vm@z z*^`Q~oq~0cR3cy2vS%RNg5(4?GZHj^QiYQw#z2F6!*wC3DZJ^Pu*6aXTZsikHGhf* zKcqu=d&i_9lIc}V5DmEAVVKHDL8(k44j8jgth>Xhq8YPG%K@bQP`QK~$&ejwvf~}A z83*PKk<9m~zUYW8MK(4L{xY7uMN{dCA;q|dpBN>O*eaVNT-zVk5AvqAa;50C*e>k> zCQ=)AiDmMd!Z|x$cJ4q=nRI?P&shUbnqP(@k+im+G+yNF{3I4t*7%wmpHdauIJlnU zt781K4|<@&PUFhg&iag6fiCDkhWmIQH>$F~0Bik9;V;-A=Cj}GQtK~MxjocLHM^-J zBzILHRdJ4=yKRdS104dNrQKb1si7eR73xzb>6V z$;~#L?)Ms|lb9b#LQ5s+j}4BiJM&8c2evUa{Z1UiwBLf&dnu`T=hdq;05F93Fy$>Qvwrr&=p`Jzmxfo0vlj1eQyF z_5sf<6ehbJxs!6Lw;0w?vmXF(YmUSFFgDBuNZcsDuO53QdzE@^&uq_`j};r*_@5t= z*`!33guINfO|e}Q^*+1^Uww;^ zZ#@t~-SDIfKe%DJ^3FU{!S(xJz_&sQJk{zo)O~4$#b%WW zjg}F<2hNm(84}H`t1<0aVyTn^h(D==>^3X%w60Hz;Yp1ihFCWJb zg*LW>;~suWu6>?qKW1l{d6YHNqwVd+q=Jo3i>lgo_zl;~vG@5cwX(Eo`y`?(WS^?F z-8bo~q{Uo{;k)yCPM$PvDi}j_f$L0A%D2LwLf4==?qj;NgT3SvO^p4xdIS@U{f49q z0x7$$WNPEwTsfAjL1dkmpw_ILBgT-a9}Sk6P?f2@Be7ru>Zuw52>_j+s^AXq;Q22g zHZkIjTFIg524t<}Fel_`Thm*W0jCAj?gqLD+!)N5@8qVTMBqH4+A!TEUAAbZ zv*|=m3R6##Lm3OU>>v{sN@bl|js)#Z4IFktGcT072tt*^EEFTimA z74I^Q*-s{*yy`K*3uEb<#vY5$O>Plz3g|>ncVk;q;$UE2cp!q_ZBfC@tK^9HD%q;Q zDjkIsFvNLgNh*1>DzZ+JeT|VIOmSHj`)WwD7}oIfw2I#Zvu=wbDXw;@?v7MSRWbsU z6GmqCTWsTdRloBVNiA&NMw({bzP_TN<=F=&jSSbl_TMqkEqg>$E80l{ib2Z(j!H8hA36ONOAO7J}}o(>QuM#o*+WD*xjLKUXW%kBQq8 zPjBk?_a%BJ{l3>XkUfsjZeD%oxk;5AA5Q^}Zv~bCwvy*+28&}7^Bw78 z%Pt~D{h=CGD9TfGeug9y3=r&JO|n4^;R)2mkA)`xLZ}WL`LQl+;mA6TE*A)%)7{Pq zlR#PW`3nfQ`e^Ble@{&ZLjY^0VO2)R93=BppO=65Jm-+sZ-a22cp`&KU5(`;5WntS zU>?+~wRg809CtgQ&7K(;cCHpO>cS!Lz76?ZWoZu;=hsP`TB=P5fsrM6!LVQg#F)7r zlLnN;u=9=a=;X>U;smEVcqAMyIWdGWec$@Ad+ej}5Z76eBE~m)>O8q(mQB-iIi#N54Fw+0D&6h z?AmMmN++kK#@RU2ghd4^6Qwi#c+o4LNLh&>cM{9`p3{%ZR z^4fn$eY0gBf-4!=CNv4~LFi*P>Z zCn)k;1~}Ks5Yp}w;_05Tp4~B0Bd5r?)p56CnMG55F3&&!q?5WPAstO<#;Ow^t6Xtc z4TkOt#xrowTfU#0M0jOya2z=@Wc5%55#)YnlSZg^1>bj3O|SOr;@&@pkB-wctW#5v z4&(|Od7P~d_mCt6vI<=_N0&}_C=_mVKFbv8v40)3i}JiK0>$S%T*?lxh?`+0AL&O# zmm|4%pXDf!AvC!8kKp!=uYg?YoI?=#7~X@s4!`D>IMK-zN}=WD`@8xBJCuwPxw@@6 zB$%T2=!XyYDLBBM6nD_A_Oi!76w%f;kbU>dtXQvWNJdq*1+LXqmzHvHikut@9nsJW->jA;eAE z8i(l|F+*6@o^j<*u005}jB(ovHq!>r1iHM@ua-N}%nkuVB}dcR#mQ~!9VxO;$}k1L zG}oIiu)q!^IKhKnMcP-;j|jaRjCGecC(MB!D|##34V6Un=!cro0%r^`m;|QPh$Ce2 z?}r9G_NHa4G7e0q=MGw@RnWs5x(%v!^aRu-iCjs7FP`aWL>Hegr=q#eaQZ#I`3pF5 zY^*2IyhUI#jV*#u~m&wsz0Hrq5j%p*hfod^SzfQMcCwm<6GG(c%qz z1y@xYCH8wbQg?l9h(IYv8KH1R9xc^g3aqdzLx77N8Yl^50b=%$R*p^0T*Y@L`KDihY=DK9GJ@Fd|&bzdOn(x{GMH-%&m0k$eoxPcYd2LQqd`u*-hA(?}sq* zuI!qeP_wt%q3+VUt+#M1ZOnwnK?R!cZLTd%e2R1~lwagnUGEasFmnl`AECw;woA-3 z&C83YNiSo|K0eSk-Y7XU2_n?U*dMVAot&8~8~56&!wB2!XyR@2gM8rJ(7kYPj~t~D zBNh*b-GbjE6Qk@3=za{ZY>xiaMLC!rY3di-;yLZqd3LQQfecvqE(s%DlP<(xhUJn4VZ2c>gep( zPc?s6rMdI6*7<`F_vqJ}=`re@v{-r(x+m`uzGHNTZM7BZUS?Td=1-~IU0vMn336qb z&?S3o$qtO|CYR7PE1Y>9fBX`6Jp0ag4I3NUK6#xMrlp(N2?b>^Anzq~pnF0?FaFRu z$6C{)&9f2-ADy#@6RwpYZS`&xX=q)2AlDT8ul15zoA_ zG}*SKlFazm=L4R9e)^BgPsXO4Nw=DJGt*wp@f8PKVMPkpUhYB zGOv??4XOr6Lp(Y$8i!VG>S;=k3~%RGU;BR_PEY zV-##Q=z=&XusEYT0SVoH3{TH&!gq}~K&sjang22hKk3v$u%7x`jIx?uzx+LtV0p@R zvHLRpQL8UoAx94-mt*^5%8hbxM}`EP9Aj{cv{Q+X=ai`iYX^DhW6Z&j;^LPQ<5WiO zR^$QSIPkXgVcyey^=`js8|Tr(1BdMt_m+Dr`h}O*Ryz1z_ zX|T`~-=}#qkvTs8v&B+d`m#^iG}IR^+|!PCjuE z7M=qUTty-}ptgU8wwY~EUBNx;*@(FcS9s6kyt4mPISL*ruYC14-VTJ*-)ImktBpl+ zNKVc_-;6r87MbJQxV6}IyCjdo8bzhdcW~*}s#fDr=V@MZ zges&R$8WPS-CXCyj~U048IY=pA2u5sttU8;b7S>KmU=rAYS(aEPM=_*af=EYBs~z}t^6Jme5ats6+nt^$DL8DY>0ECjh$ z#^%}y=npj_#&W=r2W32QO=!;W#Qt3VbfH6hz~dcGKhJur0V*nijf@ED7q|Jrt5;H= zu$(D7_{Mvl)djnTBP=&#uJ6X3;tfhID@{X{E??yYADWp(4K^kPkf9xj$6DNp7BZ^1 zMm=(Hf6q$BS>zL$fMBw6pn=Hk{{ZT)g2LF$6^ISMIBq~6=lM{8`wzobM&{BhFSgo6 zre8#4j!TF>SfXS`^3{)QFaT$w;Ad@emwq8cF+A5(%jVhdmde^7&RYdqG$8!=WIuFZ z^PFO~JQ=24>2XEpnDr*|+I2vZZIBS|p-`MD%U}XeIp`|o&anOmv4ynw#f`zZm`)i< zXq2nV^7ED(pQ4UA^a6|Ndml`hou)`{n$mf+3;ing;@(xd7qYJQx)JX{I%f)uLv%e4 z0}%Mef*QIuHgij-#AZT91lt^;>0ION*b}wXnN)#15Wf zou)r90>@*=&}42NwG{e(w{ZmUJhIwF3kPVWh5YtWwXwXgIr&dPfuC$slD(KCY7Y#} z6X_DZp$z8AIbgZ5xluDo3P^THgbd^_T<1B(E$sST)y9bwS5Nk636R??WN%qxbOB3a z19`~LOm-No%{M}`)RJj6nQp8=x+XZGx-f=@LAlU{>UaS2gS2<3Oj>1?jp);LIOlk- zlJo5m#K8=4l^{DW0H9C?G53$Dp{}4=vAEFuFS#wWxMG$ijn-SMg3g#BHU(0|6*4Fw z0o3zbfAEmo>975vd3$kVq+86?nXI)9GUEQ- zqB@ER?ql-GDZ^ql&rGSoJx+1x_%(Ywd9UWZxP@6QV${+}etZwQ0*nF(P`S={08&=j z1+0v}5J)u(Yb)OmmX1hu7@FeSQh|~~2}VPh$QWOna3dModB#O-C>|Y)8g-g$e{Av^ zDK!}xmIop7%e)*e6*4&O>rA|s((VmgREFvc#fH$yadqVcV2GuoC4TlcyAjZw9=WaW z4&ANqhBV97cyCfjVksrDbCwJ@Dd%WX1_vgZ=Gbh)n!@QK*KBnA8*MVy>_c}6wr?s} zOD@+7u}@zp0zcY0>s-IXoj(4Z8s}(8*hU8)g6gYfwIL+xdeZI(A1Vw#F|!==SVt&+aO;#1Z=Eg4I40a zJU83~;PoQ2?=99Dv|UE($S0mgpKh>Ay&~PX5W@p#ZHfq7^&DcR+`kD{I4yGO8-Ec) zXQx?AE&QTjuzfj&!%j*=DG1ptpfq3s!2w6o{+Z&9TK8Ek4W+Te$8CHhhGZ7E=(&z?Iku+(?Z`EWgN_!Lqrx@dTIg zTS<7@yUBMg!rEI&^18{iJc_H!l?j}T@G9+nI*V-%55X4tzN@UH%d5+2ZKyrfp$yxW z-J{FI-#cK8sa%e5YpJzMiF`)48lQ`r{{T_5cW9E*CXzLaYk-9q+4H+3X0md~`rIaSIYndE?aam;u##XcMH5B64@bK-dQ zjdH^BX`lNmcrrxj#Fs#^w%p5%g#eY{)o&Ge*Teq+0X#OB(rErD8fV&}l`iA3eC`2C z24>p7GO1DD4Baz>uPbkrpifJlg!-rUWu~HAP)jL;K`fu>*%6<)8!>Eg=9$yY9n%nmtb920@pBDy~f9aSTaYa?>DGOSk~QYkad3!@^j-bT_kE=D;Vb)l|} z1(V$8bXgwK=1m^{$zax^nkk^XLQHp1Ir%sI4QG+F?7$B36x9k;xeRH<6R-GgVHnr=4?Ci~CB_C?(q*Cf$HB zuxT;MvE=UE(0-N89U}h0HG7o1yt&lnwvZi=z7@dvPXi}p&9pjim2lC@@e4T7fVg<~#^WRw&zM*A z#Y?T}vD<0W*|m+;&GxMuT?nIOF{*A-Nn$}jcaL7IKyAVLj4xWeQBY{Sjuy48Nzq6l(Tfmsqq#E|j%0vVfSkBbvX5br^ z1CZR;toW-%x7V#T8_O7Du{N-Yper$Ek%24+7{@9*lg(gwq-)Ko+e@Tc#dRj50g~oL zVxg8MIOBHG2IJTBtqV_v+8hvC-ob?raHa1?c5iW%k&jjB{~4hj6tZ+LIwJTqvP5DhO;)Y@Bd1c`5Dwlbq25Y2!_ z2=*1q_&-ax(JUZIAp0;^lG^5C${g%`BQZR_=N^(IQGM;hH06v|4Yr%dj_+>4;M;-mZ zpHVVIe$OS)!bH1{FumMylG*1t745(9u%eRcQkIb2SB8IPXw}}vf%wd>sVK_ z*!behP|NT&al zX^nCjorF-Q--aog!snT$X=8BxKnUh$8?0pR}t z0Y|9a>d@S4(l++6w`F97F_Ns=<^6_#t$6^3Nuf>8fX%>OMQJFw+T>0Wi%v^&{7V|b z_+gMT265W5duo z*tF8hh1p|P13mtgy%H)Q8%hDwJbpETE`Gyu@mz3N?jDEfS6ftxkd}3ekC!>ze*sKI z`6Z4J060F3a!=t@UQaX#B;Uv#3Kw*M(#MJwYl?ALb(o4%vAD6PHGKAd4#zj6dA+6 zC+X8C9lfXnNNQmti9SYi&is-=`ij`F)mUv&l|4vOI{J_PwQ<^UX3U|Vc?{QAQd?ayxL3PUQ9^>zl?0LUp2T1< ztmf7&bn7W~1(1c`7Nab;Vc2bWjC+Ffz}gAU068MFz9ZaddXL)tPA=rOLumvTci(0& z97W?8FqI!R?BhNCYW?n?VQp=sSQ~r2Cf`=E`y_JtfuoivnOkcHsV>qF^Ekxaw&8=$I0NP#j_V?|3Hk-2I8yHw9l%P`az5qCE zWapq6t*bpu+UwUkWyX^xl{TMhV`aaQTr_9Ol{rGh;cy2&x#?Ur){}pz{65ew^?9YU z)$|#sA7X!-%!EoD5K}5!U_{*9$+mkNGqnpA!3%;4ux9Q(bIogbf5U2;Y?r!uwbIzPE{Al5muTQ%0Cw)iIs!*b zS2y8n3z)S%VJvQKt)=RIpnUs0RhEVR;%{*H}#HKp~v z`orW8F;-7DDOE!;;fCi5dCpVTs<(%=TYKe}T|z6!bnAziQKHQ7nRg?pDlk+6NXS24 z^-Eip=GRTTx_LHU!Xmw4b#!GSHDq}?Di2251_wfUu9sTV^^qmj=9JKgB4tQc;T`_> zmOfx`R1L)L1kq=r5za|y`hKmb>2l32(?xqU@e61kRx2cHC(I)l06R&+I6jApXNj+5 z)4UmZb8{Y{6fnsh^Gb?0#F4s|j3_zU%19@Vy`HriSu~pdrE_gB*>0svLN9GuRl_68 z<_Nh92W^yJoG#r5$|gquy&{3WhwmUpt4<<>1)77k+a z)<500?X1iq3OLUh%}b?;b*~OJ%ISJs(M*w<=UcUcIRfMNh>E3xyCfbw(xnt{CKZR zxzgI|7JXLo?&=A*GkH?^XxRJw1jc&z#t+cf3$4l}@D;WFynarm%2szVKbCSDH*MWA zB!rCmzf2m+w866TU!xs*9-F!NnO}i@|)8qA6_THYi;5!e@@V~4Kc2~ z=bmecp;M4RQga||kbI%&az`XrtoSd$_kI?N_SP$up5&{%PaJKymB@|RK4J+wGDo5H ztAkT~*ClJIwXJHflwC#`+}q5lJkz{^V<^g-0pvE{!;fxiL3yjMi*);Ic%##-ZmgJ# zw=FJSHd2u)mK=rN*~b{H9}`NqUJtQ-YToZsiaSXFv$P8EZ{Bu;6q{N8UtAD)tJck{ zKs339ybwbS=+^#YzR3)TWBP!6!a)PD1k+B%^*3)WCA8Dt{^t5<@8>P%7`CV?7xe&p z`}7r`;Jq^6#sf?-!!ySWOj_;8FvwBNOcaLxA_2e{!R=huuj6e~QL^zAZ1z#dqQ?iF zWp8aJ;|!7y<7_AZF)M;c9+ki0{WjJDnq{rc)LKoQ;D%4LN~?t^BqwMGEK7F%Pc?SZ z~L@#E+hC>zvu=!6o=z8w!(O&qT9Y0)kn))lPH|;>B z&I7baQ@H*m+!SD7{N3?Od86powvB4mcMW+mCBTyE11A}ea=Gcw8;&^09V-I+Lzls~ zsc{s><4(S9%^Z0KG6`&jW6);+aCq;)4ef9wz0&l1{dU*H4Em0shS{N!OhChrlrNS@ zB}NNp1aiPsntY3Qpu=L8?Ee66N%YjXbF>wgCu=Cl1wc4rIX_y5P1Wr*b7^h4q=4N? z9lWuIc9t_BY&Z*!jsaqGls=-9Qi@$GRkpT+Ot`W8HS9NX-d~^?K51<5*(k#c?Vd$L z(da89QrAlH2+{3fZC2W7?8e(sZ)_wh<~amz3!ZQ~4u>AKiFUf0izR24)(E6~2+`e? zu|naJG*!vSLPysfc&^V)*1S)A_WuCrT7HgNCzVUHy0RWXRSKM`2P3d<`L1hRZDQ|Q zFx{+Ljisg1T|AN7vPz7=HuO`FF}LO9f>M6{h=U&$4JxfEYnho7aMLN(bO4%2OS5y zkbC}BjN@eaMb6``jQF*C3!|yp>BLJhvRO^4$Yd+I*?`(cdNw_1b`8uIxO>&Gi2OAp;A`4WN^_ zXQnyMYg+43wMd|nYp~Y~EO#hMJ0zZ3vK1w=qj2M}82l?3CnlVcr?mEzn|cfJAHr+n zuL;3(Y>`E)*esJrl>Oz@7#on_ec^ydUYPG(BX|eHntz8ZEp9FEE_LhWS=x6E3fqH% z6;$IRk(NIA?Ov0nc)AT&P@d~dC@kEpmXk*!vc^zh(BSo7m9f;RK7y?H=fk&u6ZS@e z_3vasYviP&8+&yaXK7e`(gVg9k?DhzT`)>BwAQHNlp{ZW*E~Ps43j>kYoKX1zuK3K zq7-Wbm}7tAi3*RLjxus_o~Nkiz9al8)&3S}+C|o@C9m4AgBG=pMe`u^1a&`A$7=cy z#hxKn{4?IEgdZ9nIX6UnO{p#Mj<2)owLCTIueuXE|nK zdU^ra4@%Co`Q&ldviP-sku8n;{h#Lq?dn&K4NEQYb@^n#-TXbO2qHEq8#HaPhV0-I z^r~|?mTEk;ZNRArgX(!kU(T%=AlqwHOfLfn0?OcKDieN{k+cR9`<7qg+#&eF9*XZ_X6|oJmn4S}{ zIlv#zv20=yv3^G0L}!3{;<|4R=+_#=&{*2V=gm8SxEwAB$v(hmG~!%SZpiwJQ}Bhp zso}Tqp1FGst(12XMzh)|mg4FN-!b=Kr)eWN<6`#fJ&voQ>H4OJVfLL;@9eiiJ6QEy z?iwe6k0i4V%B|OSG4hJXxzc<=;=8-4ZtumT4MyRa?Q&9!D z(6p^1!9FKOy|P$k5K6AnWyFQB6bEtlnC?F|IRKm*kHE0l_+LiW^uG++-b-zN95=sa zm_sbh8S??ypaQI+h{ELZGw#>DcX6$a3!fNkT3(@fb*sp+&1Do?l#!XkJKHM{w1XJP z-k^ec&m)WxSM~MrMxmx^7Lfgx-g{ehxD!b1^Ibv~MI~{ahbVaWA46-pYq}45D zS4+87-%ey>Bup6tWD;?fCnpQLrEYj{L$Hg*TAl8ykxEkbIOb+UZv)wc2wd+3Nc&V1 zw2U4GJBiu0iA!6tw%RV6=T8N%hRf;Yr@UM1leL7-L62uUi3+MlF~B_YioG6^{{Zlm z>i$~EWvO4=TTLy*_XI^CP;r3S=oE}#o@tjJ4YAa$v;lQISMpfuE#}V3k8g2p8_JQ! zc*$U`5ae)F@yT0fh)a~R}hN$;G?UgRBWf4kk?x$}n zX#*j^%LNA`q2z!onUCSMo&L9@>Kdnr4c?`q#R-bySp#j_&e876C~~Gw8w8w=wWR(R zx|>D6N4eBe;?ilYgfZ=n3M`w3M%?_-k=~w~HYe1N!&)WO7pCUgC~U6oEvK@0;eRP2 zAgjmwz<``>m#FWK^v@1yn&y>z74E;{zqekb#4It~v%?bZBOzOYaqa6`x_5`P-8yeF zG?p7rGAPPStXYy*^3bn1AQoOh9V-*;TAs4^8MK2&g3@+WxxICUIb%joy%>Guuo&vR z=caL4G~|$37cA}cT|UC!O}~TfQ^f?aEVjF%XN}1Li-13b0gi*3wWbS=XT)|Fx4Lc3 zm72{g3T~zOm`fQaJn*?6T#kL<(;}Px6JHU*nA^*_j(s^|e1_i+*N=i(K|X2Z0nSEG zBY#}EhEEEm_mwO*u!OuxrwbaoM>h6s7G^wW9CTsVkZoQ-t+}sfExp;2SnZ*986dFS zxyxgg!R&MB4}8}bc_E)cZ7OuS)7C4dkIRXFcCN^>=ZyUS05hDDGr{kg(YEmtTI#>q zji^{fGcg4oQ?@|F@E7IC$sB*QdkTshhq=@IK?+=(jm zo>1_!TzObOAu+mfl?xf=dWXg`GgS5O58P_L5t0oy#WhKxf>_w{vxjSlmgLK} z=*t|o(6MO)M~%2rMgszQAQC!tsBYH&)53O-tJzCyb7~>;t|4UzzF*B5+8aB5?s&+} zTAE+CUc3!Al{KBLW(Z*-M0ZIC$^wj)!?5Q+!=FPP?Y^nvOGt#5*U?2XNd?3(+k?Hf zjD_4+47`p;2vBfMLUy`A>SSJM*0!EC)>b=hG7DW<;jzAH9j0Q29s4$54W)MSd!Dsy z>2}&czJpBF=d?@1Z*?53poYZXF$PW9+N2SK{n6+vb#x2OOGLK2u~@9N8SLR_xpv#; zZA>@HsChe7VTn8pRc#9USCdk;xWAUyNxCgHlx<@U;Pn02_GtB_!p7t$F(z5&~3%lp0j5zpKk<6-b`{^e8^ZU ztAm`39E^9)IK^4gZ(mXIMfdiMnwhglkL=F3AQ^HwlVSuQas~+Ked^VYhZVM?BON*^ z(sY_1Hh9#w=;XrXuyAlllIAgqHb zenufl1o57|O&{=){{X^G;O#_df^9}P%UH~AqgG^eLGn0e48;fsC$}8+t?2LUv`-e@ z?g^*=0HCxhsD}))ZIm(`DazzC923vY>CZiN;@Gs$7X6~v#X1erNp2VHmbS9Rad7!; zq=?Sj@$%up4cCGNB@S!Z>Nf0aX(E3VYf!Yhg{%-YpmdJz^XA%B0F(s57#Rg~)w$>^ zL3D^U?-1SS$5f6RxneH^+hS1Z9tLpCTaEqe!Ms879$ydmhR?$mz82PCytuIsZ>g@9 z>kP5Ri=4LXk;09@aq{Om<_iznbHhFs)AVb-dO>5YY1a?-XxmAduA<()TdL$In4~#u z5(mmVfmQ6~C(4m3OS$P<7l<`Q_@#ZOYdW;|QCaGTNgKk&h~&10;7OF)L1MBm;5{k7 z6nrM01o-LTjZaCom9))APQSOjhVFT1hFKJ&g8R#ILlMuVa&q|8_?8FpmYt$&8hE{u zDHl`J?BlgE0CpoPBECl17=pwcFzhN{8+emjzVNP~!&SeMc+r|UUg(C8rT|=g+ms$x zrA1l$DcP;j7w&et=7FSZ+OCbR$rpyaKd9()NNs1ifuUB8L5CPpGFf(Ko;x0E9sF>{~7GKW+S z*Sf9T%niOWMr0%?%dbKFH7&H-MuXz-wccyGE~R>xTb?Uf&CqD}l_13#IXwtFLFX74 zto@|&VTuwZz(7*0H+<$&F;V z@{paYxN>ukz}IgK_{UDx?z~HL;r{@$OAj$L%^b1|e(^5F+M@*U9Q4I=zi-dYQCrl` z9LepW&3sh6)2w8-u+(f?=4og9Q|f#F0DWt4(8C%_keKGEft#?AE`m9|^UHV%lv#t)XnumEG{4*6yyfnV2=ai*E{fk})_jhGI4b85_Fw9qWH*&ra$3nO3FD^e9WF+|HL# z*;~EbFcS%AfpW|NCjeyNV4R;%!nt?^cQKqOQyy|XJuB&-6C?(S;{(UOD=ydw?V*^Bti-AQVE(49 z5?zV~jRDBOSsNG0> zn`t2ue(PZ#bFT~(77f=Yg&dMsinG3jb=#vJr8cUjVqZ|2Esb=?tL;B`CqF^kwQT** zQ?@Blk2Cn6;C+c}7O&zf6pH%N%T2Yrws_%pjiOs;fr6hocNN_2A!Q(yA~BG8u75?e z)U{hXd9Sp{w2^UVa+eDwz?$LZkxG+?C2&9_0kjR+-~tBJ8r99Nxux4is`s}Sk8LD( zZpJ)1%&@TpmHA#UINcPm84?K#FOk3O(j#vmbCf6BbYr2&Jf(-ji%m-N`v&^qZ|wAm)ogEUr7_KM z8%B~blW8ujuJV8|0SKh#toV;h@b8A~8skcq=R=Mg+k1w;iYJt>mdai-K_rLEs~qFz z=hBjHIs#gm8m_0OMc};&EDe?3Qr1gtE=Kbtw(@r*ZpuzUQq7j*zdTl#hqbLiG#?G# z+G#L^xK_4%O+GYMR*be2C+@GxRC}78{AZ*O7vD5dM{lT3(b-%Jg01oy44*GYMJ7%& z*BHR$)br~xS>L^?MX@2(!m?Spl1W-u4)P#Y1B~YxJRY5kljdSh#orHE>wY29^vm5r z3fs-ALe{qnIQ{HJUkNIzfI;3f$-zO*S=8awd`IG27$iDgiKN2PT?K{`(g%lX4eyXj zzTxTjanCi&>pmlGH^T37&3~jxrV|f%xQ#ZnRyD}tF9XaW1+@tw()j>b)zgM z#@kDVJBdZmylC1<0=kA!>O$@VV*&Gy7-RxDY28_d=*rS`M7`8?8*AM`#+_=in=9QB z$erYs!^)B;Ambbs=ifQTPNv!xqoaRkTlw%@jYrIe=%Hs{D6%w6PbGeFj^8Lgl^2Pj z@f;UkF8FPd@hP zB6nDr4bwD!n}QH==ms(=?W6n()bxn_MHTM76d8ujLl}U>cu5h0vc5X!=UzDOD^k`! zuy~JKvDGg8{fTd=Lo9I;PVX`@2+LrB0OVFyjbWtt$4S#~EJmE(Y>997>)Bd;jIoy7 z$Z*QU1m`_=obqb@)7}37!c}64e~YLrWQb}OU`gktzW^|1`N`belho8%*{hFZFYPkx zI&J=-%XAXbDLjjokL6}rKX$wfV+W|ubHS~BPfyjfeOBaY5m-TGaT`n;WZ10Zf;~VB z&U@$DvOnP^k?!s6P4(2`OM+*GQPmzWqXP;uq`BLX+z!2J#ixkv-&XL`=NQLI8ouIYe7|ag;uP0V*xSOh=`p}%ib3;D6r_$w=jD*|j{R$? z)c$V+-B}|#T-h0g5Y9FCa9rOTkaj%v#9 z!w@!~txadAL49`wGPB&t<%^BQS(vEm17MJHK?1C4_N^AZq{xwZdVS;*Bo7Wwe81jB z<$^fjSdKCPrpKk}-`V^+w^G@*AuW=oX zr1oA7BH;a+W?3bPqWkfDxZz}wV1f5Bnuw=+2Fz}Q;vH8~)b%TS`x)%?){;okjnsZ% zm@y?^80)ddPpb6IaoT@{ZoEa|%L^-r=hQ73Cbf~-khQ;(@*sQ>^JB^b83zs2n!4U5 z)pTzbU)o)1TD%tbw;pAz_cqII2#J|c$U`wMa=XJQIRmE#wQn^Or|CN8nWx6E-M*n1 zhHLqPFiC_2$W#oFSj<5KvEbFXyIG;8h%}q+b5YlHaBZZMOh93tZ!gQ(3_)493>>MA zdLDwh`!>DOQRn{DxVcuB&gR?@uKxflDaQ;xX!*xn9_KZD8RL0$4-1bEYmnOi0BT!m zNRGl_*pn&d6&yC+T!J&yjxkynNg1B?7V-BP1Z>vLDTpXWI7Jva0TVp>obYNQt)pX; zQq<4YwP|epA7^cMY|>ghucyf*Z{?%`$OCY};|vDidF@p6D~T`Vn%es28wqq<3p-5$5Sc#(j-^?(mrzDQmp{n>|*6T&pZ6}ugS=!N^CsDpsKnsTrf>Dbj zfx+#XVUEW0S(468R&71!jV_N4;k1c2U@PdiF@HEf(U?tfJ9l z8;b7@@~{9lc8=ucmTwj48cnj<4M+PmAyTOgv>CxF$_B+&IOmSoB#wfyP`0QQ(ma#L z9}v7{;eQwCx|WL;y>k-YJ)F<0X$dSWvk|nSBSy)9q?QZZ=Di2OnzzJ#ac{09yzus~ zX*5yI4d$?h-|WgkCuDJ<+%QL02Z7CSzBllP{48q==ycy2c&AU)E`V(~+TIv*vPMbM z$t@oL0GSz2r+zBlui}psT3+b>7Cr@&PP5ePuROh4;{G%Yu`cH)zHakviEXTq9% zdOw2x*=1pS<9V;5dy6}(D|N6~!>HMe5DpaeAe`rl#BU#JvuS#B-T0qFiuNb_BvIJe zdDl=z$VnLzFefOWfW60R=DaK6Z9l}?y`8>+@fTm#blVAqj-jX7&Gr~AoUS58*s*}Y zhBoDn549&3FM3ITUoX^>_3!*8decVw_rW~|_9t}B)~%~XhyWPg;o>>RuqTn$yB`Yp zkHeZW>36!VuZFxcdtr9uT4_y{F%&8CJ{NXIdZ-5gEN^X+*+gPRbTP_>SLa4j z)PGb>wjn4+1o1b01^<$aD?qAp(nR` z-PCP$?-6LDSJCb5qOrcTOQ`L2E7p(8ESt9EBj9p4?ag`L#!nu6D!0~r6?ftf6T@Sv zcuw_o3t05I<1ZtPxkpkrVC)$HbRBEZ;_+99ynU#6f9%@idQOXbY_h|r%Q!)LTq{Sk zFb#}!3&%Y;tZH&uXlWHB^w8wA>Gc)xiU-ry#Q`S!>~nd-2{2m<03Rkh;Abb&x!rH! zrk$_I`t{pS=fZ{9*#KVPFCzeSI2g~u4^7LK}NMMMKRDEOxMnANgoTNpdnkINM)1 z+s~F%BX-v9-oB&wnc;}MRpCiBy%@!)q^TXlByEsYmx&|i=HQQ)w?9MRcK#TLLy*g; zfj!ANOC8t=?e>Y+|U^g6p2BV8*X_LbUoz;T30D+u+eJi-sZ|<)~=^Q%%7jE6Eqp$#Q2cQ+s>hQ~RXbf^PxNbt9 zybn=<)|^r}9g)u5N&f&6o3uFEM?Te=W~$bTt-!}Y{Ob0(IkdD02IC{)f%K~OFoYv$ z;GQ|o-)gn717Vb%`?xE|9dqkX+_*UyC)S&F5ROG)0tVpV{#1!71M_lyN3BQ}BMG&) zXJh9epXXka;4KEr!kPnk&%}@ywnODVdQE0a&)(c(~dW=0I?o` z4gjrVXsffToKzRIm&mW;zY*N{gHXBDZ{!yj_e2&dPSjD+6n0hT9nMKSl1@dwpw`j` ziH=a@0p68=CJ%& z*ZP6Bk4U-H(cjB=x4O3`7+sV1N%Jqu^NbAi#yIb1#upQdeHFCb4n0R!x=8hbcYhdk zWhwrws$`M7Bc7Sa2Lie+uE)}Bi!oekdT+$7cHrJyXDrQOoqM{o9<*w@WjVvlik3JKcVfyvK7j+I*9$IhCL zooS}&7=1t@$1H9o2WVh&6lDF?8RLc>1_d+58n1-)(V@bY8lIth9Cq*hpyd!Ff z+xUOgjD{b?d-P@ZjUv%3H9P$h&htmqG`M72MnFnO8B{r5nFL0l;~-B3lkzE7Tu4KFg*_JbgJGn)h;jYd?kHjX|qt4 z<`9p?xFg?gv%lcbA3(EslBM2>xI$-|*2qUd!-DoiBy2giRG*2a}wd>2XcmtC?OL({xtw zt(C5=u1~17t4XJb?p97RA>p7GaQM9EyltEj%Krd9Qy>7!8#!!eWj3$=xdF?W6H#Erm%l~IP| zX0uv~_bK>~PKM<)^}3NQWwN=okf=buX%eB%a7I832=@2l{19pjVwX2}lSZ&3#w_iI z=zt`YBq+h>Ju$}_cOoUmvUX_rK@s!1dlFhZnA;d8q@k@EmYah_{R{7tV~OLG>d zaiYg}x6J_q;RyLuDH+^LZ6qF~0YkdbZD?n$vOcY-&hS|@a@-<$EOrDAn|Atq#Al)J zpK2Q9kxws)XKP(H)in(x?AKaUOlC8LGbuyBDo*Tf!5GFdRIb+U#`1eO?l((!U?7`M znRW#+gS*RRUPxCgLHsf^j>hux5A8^n_R`WD%d3NIlg{L^RzNYiM?>>*oaUYE2_w(E zM*1g>ue5vZ4^^>>Jt?EOw0mtLKRL0v9yO7{Dpf%Ql>`R|oK@Yk-0H$jdfw9FV+y^z zmmGP*DV(!lk&(7Yfdd^f1#r6;A3#l zO0BJU?*9Nw*Iv%g#1{J1!&%930fIQj#72uKxOQ$pY>ecE2Nks2O7_r{(>Ct(zY}O5 z7*oR0+FRWCPgT>N?e%+mVxMJTSO8=$LuY?Z4;t7HDeyQW=yft^>vkkqh+K!xcLn};^Nb!koAyovj zqBCvX(1Xd&I)5GCX?j1z{a0Q80EEWNOGz5h;knYSKRwT31G>uKwG`Vbx z*sh@@4VIA|;b`5rWr4>T;BG#(J?t008q}eIL>zr z^ca7KZ3m1rJz~QC(&7tdlxn|Y)We4*$)PJ0H)B5OAcQiC_10RTf3X1mAPt!b`gCjrM?j&h_3jYAB z$mDd+260|Lt?J(q{4a4Igf(0H3$F_;x=m}SO%Ye~3$R!>hYj)-QX3rz2hjC;4~cIy z%|BN@A&NzgH@jDc$ThIt42-NpF5S6R$OVbcc{Spnv=4&(FXCIR82Ed`_cj`xoT+-c zoU%)DWha$V3-0POjo*b#D#cw(e?nKivFd&d)~40G10RRA>yc^Vwbez`Fllm;EGmz| z3>?1afHpxS<;`|pJMor};~jfUu)6qtbK(Zimunukr$riu+DTi3F^rF}b>WHgi`CO*_53i*ae5#o%v<-X!pHYSz9G_4W8t!w@;@mIxUT~9>6@YaE+NLm>*d+P|N zok}w+2aaG!Z092b@vmm_rPcME7Z7RR5NA&i%o;mAI>y@CA2LqJ&me4M@tluZ@VhMs zLin4iYu*{vG_Mj(;~h4A`i#1j-})R!%*GHyEMdvP85jcxuN2`6r7b_NR6e>LJ^uj0 z{ddJ*4t2i|PvBn*YuZey1;cBaWxQ4wZ{^G-c!EZsJ1|v1Lm?mVUx<7L{t_BIx?QmQJi2wgsfA&Q zl}1TvTPhKG+Q5wW2aWF#+W5~@)PJ&kDP^TzqDsvJUg{F8F%nPC6=ON$xjwk-lQksU zS7@D$zxY^sE|;s?>AI!Z(={2R^U-c1WJ%a<17ST_k}#zD;G9;UjC>ho;=Mmk@kRH8 zH0zB<2!*_s)5av8TV27}ggidhRdB2h2qbcA!Y%aQjXpE+M!LQ!(DXevZ4b+e4PQ>o zPa*219g)N3cD8T|_Kr^CxyTKZf~Ntv$ruK{ zZSl8&Uqp)ES+a^_qh6}Z7@1D^3k|^^KF5Rjbq2nq)^+IYTkReh)xY5#*RG#z)_Sa8 z=)!Wj!$NStu>c)}bZ zda$%^%qr7WRgaKvoXXM;M)S~`q>vN`YLG|wJO2QjSEYPH@CfkXHqG2@!o@DGA6d~dC_q+4xl zVNLg!vT%?_I@v6Jx^##X){HkuZMrrW{#Ul#H7 zH&Sz%-==vdZhcAbfy+vsUA6%ypKd?Ggh3$rSYQA~2NX>pnM8O886CfsX5HP%oZQ{W zE{^#WhAg{r*C2g8DUqR982O3hVy=CJ>|ghAeMzVvayJS_LFYV*Ow9X`_?qS$m3c33 zt{Pwx;D|?+88R2i$pfnr2>Kq>{VMwZ09T9~IfSr8^IPq^W`#h6mkg+&gOyOFc8}u5 zbA!7bwX*%YRF_hk-poo9ciC6X$W_NXSm)?EW4&ZsYZ@B&9ETIqG^G+!5d3)by)`^#8A zwKVTG&MEE}G29rH!VAJ1O<@mJJucf@-GzRv|dOGeZ3aa3exqJY* zBPwyh6;fJx+?ylMJ|pS(9}TrlMf8nE0XC(7F^hU_`!wIV!nX$}dy~5y0yx0UUVRrw zo+wl`)%A!XW4__Htb?DGfhE@@z#Lb3@h8A*;@=bK_nJPXscGwN4b{Zjef^|J znt~0HwKiMqQp-;^@>p6=Gg~weuMVW40}P=?F~{dylS87~+v!g<_PS-u+O_5E7jdh)9kJje zmS8|KeeI)gJbG2#b~ZK^q6l>>OB>5;i*YRS0V`aDNsuC-2joSQwmmb7>Z4AiUbZbM zUhLD=w99w!SBNY%Ek6LAKw`g5f=O&7g>B-w!D-_RfdSa3ExCSgU}-e=8gGR3y)#GD zXMKLrqF7=}RhZ2Y3%R8$9s_j*jia8OE64m9@mfn5w6C#gcKX@5h7@_^W}hHQ| zk=#g<*xV|s4>mO%B8|8>W(}PD-&0Afc(YT#_?_ULVUobw+NI5;+g?E}%S+|FYZmSp zk1da06t+6oORV^=<4D$SH3rar!rHk@NKcv)P{o&NW08}R2W$>KX*;&H+|W%b&OflV z;gzQvg|C>&X#vg^G4n7uEs>4fb{#NjZSEww)ilO?w~jlDX<{H8NV2Zh3Rnz(3-r(4 zsPv6`^3%fCtsJSRMP+q!9I(j_ZX$MeatJ*aCyq1Hsb4j%z=r1cRvu$qBdojCQFo1n z@D2wo26OyarE5C{i;ZioPpHptsaRUWYSS4YmMeq1X;3i5ijXpMjyeoykYoPMw41{* zS(lA)9a z^&LK(R$ildd!cHYoz9tOYQovnyUw^mjpepi<;Wj2qd5Kp-kQHcdRUIrOVc#5VJufy zx~oKdxo#wnEX^X60Ox{B6a$WZ&o#Aoe?FFNFSO4MJaE{=7(C@$dJsVeED0I@RQ~`M zy|?@!x62LeZK{P!i(n=QM3J((s2ulD27emo=8{PCtG8G+IVGF-Zv;X`P=s^@90n(5 zP6X4~gEl~h7guAI19G-{^;Yj%Tbe%d9oIuY z#2yffOuCa(g8NV~*zqstgejl>oOKu`t_(0R$udRG3DG&?KpLQA_dAk<>FLmtB| zyI~mbbUT9N?is;6E_eeR#h;0;Z|uCg+s4&3GN{)!8hBDz`I`VcNf=^yB#*oa#TS}w z&YL`YygvoOx`p>y>e4ic42topW6O1ahW5HXq2i4eNiFYV z@imW=cRjSr<=V@?F}y}X3k5)+^yqmQ73^1f=8tJ$Z7p8=SG5r&S5PDph$Jr=Q2Aqk z3FmOY!j5~^XNB(V{46|61@@VyXg0sv4w|G^M`3azU9v_bZWQ1QDCap9CBC(!X+8wg z;<(mihUKh2%CO50Kmk|=ETEiVgZHooPAf?*M4iR(w~zIP@rJ8m_Dh*1xwm%>39)2Duk1bzcJdt1A;cUKDZV- zt7*47Z`-VIZuOJrw3EG{v!3)ixDkhKq>#v%&j)Dr6!>BBU8apGwea1l+cnZji`%81 zUEXF#-Q)%N0XhC0($PD29jwlSR`_e9_`kzTeRV#eVS9D9YlOG9fUNQ|seRsZxF?(+ zrFrIy@UqI|$Lr!vJ6rJ(@}} z*P5NaiESa5?GSlNTGr)A1s8J>wBw9mV+2(xJTt1td#7m^S6ZA}{rp!iFlhE$+=OKr z8+IOYNcp>r^`{G_?8fYE_-jzpr_-40Rxn!JXwr)r9^%;~V#urez{d=8yBQh#x$9n4 z;_IJ;@9`T!)?xASi8MLnk}nUN`7RPk7>&fJE>&<}@znU1?S}9xm{; zzN@Lh3dKBvb(vorZeU#DjyE0M^NNp0_&wp@gdQi8#2ya0(sW~~O267xw-bSB9kNEm z?M7e~_hSq?XOWDW&XTmOTWZG#rJ+Ahg#;pr|vhFw>rJlF)0o*7?9($9AIMv3csm*O!#+a zXREFE#d~co=K4P(_fFGYFW^;GC^krAa2Tft03Tf9xIctG0n@w*eI~7=>;5y={4$<% z*=dH(R#_qb5+NfyK*`;O$sI9G##H03{WlwFyCWY`)05%%f-O8sG+BH!XS`_?+};UI zv1Tl?ADHA5$UTYY9rS)4_zu(dg|YEWm%kBpT{pyc@Aiuc^vmM}0#VCM%8V89f(r3~ zNgVY03&WZZguG$ll<_UDk!Pye-CO;pIj7Uqv0id^vgbSzj=AHlVE8ZKpTq4o-}`l} zW7MtWk*+l7B){3Ba6fjq&gBFhxye#a2d;GIZCh!Q)wVoq$NvBZth^iGKMP!Vug4mJ z*X^cA?pIaU?q`DFoyf&d$Vv~G$QeK>!ymfByRU^_GuM10b9rldXBY_#j9iA;=& z7H~4Hy%|XuBd%~r72}@?Z+toNtHM^^C-B5NpM`b5w()MU7qz^%4pvCn0~J=Oz0-RGx#OB`_KD)X zDos+_L8)jiS{I2Te>z>ww`R^haVHt(=-%5F6K ze>UL8L$vBy@*^A;z)(g&>fQLPIi0ZswH$4cycM0ESh8%V5l)w3Z=$#o-cp5&YW(lAg7001xs1_fdN z0A^3*m}MAF&yI80*0OxwgR3;(EOtg@mg^VaQm!$_0DWnZ+dag|u{UP}YZL3~R?@@w z4zf8DMaFv&e;T=AYCc_{uR^MEocq++z|Xz3YiWpf8`N?KKz*vb>duM|cY-j(r#{uG zbfxbf&KQvO1du~@#wxnOl`2>4)%P*3}c;F@nrU!bPQq>teQ>LU^b6rI|Lr#+ZIJ~JMM?%XO z&m?d%54CHx?0quxHtaNOe--#kMYz)Ri(L-d_SOE=47(O`a+uEOj?x1$BLk7tU{m}d zBgqbvq2Arkq3M?4T(d+ZYk4A4Ba_T^IXk0Xxz0hr=Qx@lif(jmYxnvM)~Dg;V=}Lu zb0f-FoyCXF+zfT#bmJAy>GDfxx>d%bsoG7g&33IWC5=FIXIRQaK`b^ho!JaiDRxV4H`+xw&P?N#KC0( z<0^R-R$QTLGCg<27EUzyW$_vapu7Ijf+-_H0>-EZ?@FDkhincGRPuSKe`yZ_>Aw>6 zzX{0w9`;pMq>=YSrdG3famUl2_u3!_o{=GT9Vvu z%^Kbo(=V^A^$6seDW_eRZuf7DF3p9=X@P@T> zp=+KPp5IKj(e)^SFMDwEN|4N5RaKN9m;sEoF~(|nQ()b#px=vgYg%rdq~Gaxm(yC_ zvIA>zXr?v5-p6*{Km;6uMtKK{mqOGbi^T6|t6I$@dXAcALT+1fTp>n%ue&%aI^zeO zr@vg^6JKkWo)pnEx%GI>ln~1uwUl#5hLzkJlcPYCatM1a>zP+s$~F z7ZO_}cQ;v(t47Nb-~bTsjaQ!J4rw^OgG6b*nQd$18{4sdmfC&BoA!Br(Ry~3V!$`g z^6v~!JGoFjIkl$vmrsksx^$Y3t9x;Lws6HIrk!fjAap7lZq;rHUd%Y#$6BG_-vvvk zOQq^?XqsiFnvwaFMAI9IWhH}QTV~QWmB#LU`r}_r)h(>_`~4#7_H7DVEmGsini(QO zW0}mVRalVWe9feV%9S8{=^HiXB8{fG7Nd1%c@~$b-!09&)+=v&Y>^9z4j&4mWnH-_-N$~T8LqDS%6GS#^muKcy!&)A$$4~Rj%eH{U956gf`vdm zvT`_~CDaZ-MT&Usv|T<8Vr@2PmF@okvMnq;$s<@vC00ibmi@wzF_3YA#cf9hg{|t4 zwcf3&-`cjMmRBpPNi;+jMnMr!7jMqd{KM1^d91kOy3w_ljS>wi_TKp2+S`X`0h~G! z7{D7#z{ef@%=9>?+;}!oeRX{LmC(DmwMnF!+RMzE3x=3J41DA%T=d8)I?*kQj;_Y$ zf#AJ5{{T?Bv$oMRl61!N;<EUL2r zNNx&&jy>zuyajRLj~Y0d*4s(B(e*7hIn+FV@$N?TY;IkwbL(BYs*V%C%?3xWQyBV#~3eyq~MO`uW7%uygn=Vlcjhb-@((H zi-!)&s;}7tpbX2El{XMdFyP)9mI%fb1ZodY#tyqn3SG~BlztX3PEbeXe^g|L& zDn}s&fo$z#(Efc5Ek<^>@sEe^G@Sx{I$7?gvGXo&V@T$kIbSnrExAk#tC7y^X1YHT zYr6iiqR4Ki(XHO$jC0uT2;inp(DD(;WgWZbhMK6Pwgh=cg)ep2wA9yM@b`;6XFb%% zWHx2(RzZ$PZP6w(-#O&wylYMHrRR(OFrN;8!npqcgd*b3Ia+;VT(}p|N(y;_BrG00 z;EWYwa&g8@d&kB5+m8o)J(FM2{v_*Ga|q1&ZluA!)PuT%&sDdxQFbfPq4fJ%ZypgGz%gSR*s2bT2h z3&Iy(1Gcq?NuJ|dk>zhb(O_pTeFz z)21;p!ysmx0J$tT1Lkf3FH9e9p1G#@YvTmg-VL4~8QR}zmys)7Lu#n20sjDKoSAdq z2RY*y!L4gYo8C`;oXSHH&M*CZ5u2P%9A%a-f{Dk(L325J2d88OAa^TTk&- z{{Y85KKH?TmxG^4)@?5qJDVH0OtH%tB&l8Mqo5ha2yRH@p03NrzYu&q@fTOqCypyS zMM3s!#Eh~=Sb^m*FY^`|aKHv!;|H3(8Iq`Sk-^7I1w7I0X@J5|3`8+*owiI+?#nKcx zP09EEVhdxhBv;u!9JsadJ-EHLklZcWfYD?!9y|5m=QZVaelYQOi99)Jr1-uKKEq#* zHe1!RoJf-6fg-5vbGWZ=m7D(n35?zVwYa-o?`srWqf`Z?lLL{k4tiu`-llb1mnF6u zib(IgLL%@T?ZlR`THL8(Be(12vlH|2)OFzgd{>nCg5Sm-A<=Iv^gFw64&EVai!0lU zdEM4Pxd0Hz0X*j_-~;z~tz+VCKgD*|TF#p+x`N)y8W|yOTaldSqXUnW;~bA_=xqFb zW#Rt-6x!$>C9{?-J5h~cwAG!nZqsDu5<$W_01@lZ9E?_w_g=(GEwyHOMf^TD*Zey&L1Ex#4ey{{Y$go#c~V>&MKCPmVc!rn+6H<&y(z0lPUPt})iI zHIIls8~Bs(zS=!UO8&>t^yt?5;7#&~r;qqh^#lXBk<>RC&MF_4#oyggdz|0IUk&^( z_;cV5E5(IoeNs6LjI!Jr9_mB6M0h_b1mKJefTWuFg6rZ#_@7g`)Go=I_T>E2G1(dp zc1D@!Xas-&dn=TXmgc{SbI_jyfwvF4SZ0n`AD69X%s?{%#R^#1@l+|3$6 z(YUWSo<@^9NL4+@r*Tyzuc1!e53%6Vbw$y28*9xu;+8Ezt}Y~f;VssD9)9-(IXlPu zUs{geLx$f^yG2FwtZm|teXL}8;sODE0?B98BU{m1eL#}Eq<0#fuCJ)-)5UKhg^NtJRr91O#kYWkPuv?wBcTGh%S}S(QG&|*Ple`+ z>PY0Vi&74cA(Jt%IX^Z^w=KrtNH`Ugb^DJOY1&Sqqr9@cCKw~3{gG;T70j^LAm zMtbKNBD)Je321t~zlT+?^(d22f>efE$Jv?UQy?5;%QzB(2;{LN-9_`=TrH{2__IK` zv(z<#s3wzbacb7`LbgsNGfs=R1|$Q$jAM>|_r7a!b!Z^hR#|l!?X1PiUR(=g$CH2v z1(`^0*&R6NwP|SDb)K(bZ=s(E{{Ug@8k9Ln=3SEwq=6wNODH=}@n@xL>2@|Uf1~R< zf<*A?g3@9fF8IOn&f(5ZQ+9ak>6)hE(9wY(i0p1PYppWI-c46p*4-rXCb-!ck|)fc zIU@>JI82-o?sF~9gRW?|>wBqK_?PY>D?_L(WhEO=Pzwwk zpZF7c(}nM-K3<2L>Gs|%yYUX16H`lFD&tHM!6l`Zq0v-~0mO1-91fIOTWYdLty|kkZKT1ZYF9Uswaagk z86_Th3H&U$m}5EQ^y0azy=TQx{7!8XQ@S^{cDHsn1?^E(#3W}&bs%Iq;4nUq(ymG0 zO@SVdq{*UcULm>CZM-#Qq|c=|Y5xGUVobQ$g-SM9<1N?ylhXq}TcXXZ_(S2wg{5f- zliWikz%P3Hrd376ak$EYhj|{KC_QVg@xHO3+W6N*&|tFFr`GigmS~$)ihr|RM;eyI zvL1{vkT}i&=xY_xs-<1wjED{IWp zBxfTPqo{bA_gv6tyE?VhuWt5N(pfg2Cwcc*xxQin&k)30UJ^)nWsEwrx=o(nXpLWfi3sVC%N zj{g8J9cqS^1(uPl=~G@=CElN_>GL!K@Jv;>*t(UGm@@pUhR7oaZbx2E70vjQ#x}kp@m;{vHFSHMl!;!>7)uvS zHJzk_XApReF zKkb?Br?!>#1u|O{iQYr|rp`zwrbo@vp`^xio)`EN@^s;X3n87CM3 zW9eU7d_D0_vEmtJ(y!m_T3(**v&1Idg#@8PAvov(G@{=%yZ->0X{$S!*LIN2qgmYAG}jjqMhstSeo%wK z-JQhyo`0`jW2Csq0 zaj0BEN{h)FP2l7<(Ck3vPi`s=9dy3~c*9wlwF^{Bt4n2F(kMVfPrL#;5O$NFQR!Ji zHoLiNF2qX_Xq4fKAqOLG9<9zQpNKqZYklJD4SL5`lIF`z3ev@EX3~74d6X6k zdSP+wPa>n&{CA{k!}~{2yoW~6v*(CzWDpCc0~wPzI2ce*QPZ(Cw49SxTY|Sz9|2l; zj^o0H;FVGEpq$9_-jXpM_Y^QMx8(<)D_!|5H~3pAm+NC z1$ee^h<6t^`c{Fd*lPN8(HN7&Hm_$4(2_T*unpKT0E4ug)^eiK)dQ8-`?l0R7IbEXQh$l!0v+!hkr-W?b@uj4GUFMqCGkH?nLaDq1ydBNK!Qruv<0nTMB%?0Bh_0D0 z#6;14BKUnYd+iZ5j}2auk>0zsfg~L6RvfDg955i(PM0@_{3GF;Eeg|0X|3G~>Gn2` zT5mTe06t0FI+p4>lb*b9!>@=_c!x%~xxMhU-j>>etf`{vH(TXbXOu}KO87Y5pD+P% zIT^+)weYWkC(`d1UzDNM?j4=tTzNlt?jsS`ftKL5)5ZX-WeZJnJ-QT{OG6(-(KUY! zcrOHj}IArboN6c)5HgM1YJ55R4tesXXA)_)ZN< zUlv`-aANx$w$PQ-+Cj2H<+1?&9AR<~OmUp%v!3orSQkW4*1TI~q}xS(Br)mt3o*A? zF4g}I|?H9x=b>>ME@MTEk#8b8g9N_mIzaOuT_{ZV>=Ysw?jc>!+rSsov zmkajY3stz;4b%((l6zLp9L2YkAg~=k1QO|f^2%B@`2PTqq`ISi4-M*H5Hx*DN%8%h zZwz-WJ&vt!GCa!|W95;xR4ahP9CA2dIm{{~)=h=3nRfQjSuXuPNmWdD?3q_Dfr6#8 zoB@*CfX3W++N{&~pqqGdY@uvVDhwH%bwEdBj1$mj91=*+*L+E%*!`x)(aenTYtk&5uF2>dbF6IT}HpqjR*U~X9AL8i_}$YO zBD^-^;uqQ^b8V!nGZT|}J4>H(2GL(h>6%rij&zZ2J)%irB9SGylLKPxA#ynwz~kDr zA^3OU?IKqD4~O*s05L*gOfkD;j`{1?>C&~1puoj= zAMInKi?#60#f%O%y~12J&JeLenIoY4)jX*leQZ3GT;(gC2L;Ng1e|1JrB2sMZT|pp zP)Q3co3`@aqO&iyCBcR#GAwuoObip>6*ZbL>A}a~ezaWkj-uM?3xu^;*d@xLk|qnv zwW7mRf8KcvhSsTlAk&a9t;3pj8Cp~?t%(I&tYi*!_!0jacI6to*)k;QKrDRl4 z(thwUKQK7K9eQ`^ROAQMmOdx6)_hN%n2NpZ=31z_O7aX zdwow(w7J!g!wXLyB#oUyIv`bII}9lH>+e~sa_UmQ$mMkZ01Cl*cX1`&kE~4_B7v#u zZJD8#Kb(amaCqmQfsQz>-9t&1&iKIyk?rgxF}&r$npBb%V4_f^nw;`Tg zZ6LY0n)gq*o=x$>;TagH0z!M_6VKMTgW-G42gSPb>z6ZYI#ujZ&1Y&hvqTh-@$MgZ zjHv{SVUML#lI3pYEzO-q^4jabarj49n#$ud#eXxs+X>yFWo_Z`03f2Cy#_iOewk@; zZKqFb;p_ciK?TDwyocry<%Te18wtib@z*)dDwm3_JU6IMZrUc4wo=DxL)=+T(K@WG zxFgFgxDuGjR^vDz6PZ2~T3Y-&)b)7$Ii#CQyX~@EM|&ib?<8co`$+K@rI$|4Rl@H%KDYS^C5uA4ptECg!w-% zRFb3|XN4I&;=J2c_>6Q@aMtXYW+RtaYI{%T9ig^5tDyOz!ee)Xz%yNc9t zN&HOoG9SfZZY_L4e-erI+OUNqkqJV;u2h|;IN*cVr%J;3FRFd7#P=3@q_pmbtekV>*D z`kekXwW+`@{72y{Z?zlLx{64zOwq|3OD5GI#!dz^yFS=Gxrnyzn<=doj*Cn1E|GVl z>v|Tgs@ZAwchk6ZxgfgX^Mz(B#sctr4%Lv_q*`6Bo2bvL!*6>nx9=j8sJd^L3O133 z10Q(jcVY&4%|FE!eiPUHNYQDLYdU+hacwe(7E+)n;G8pn+j+q2o~Eg27kZ|<;G5qK z-0C*kO}3Jet%R45%A)C)1zpbc84VZ*3&7_eHFZT@b4ZuD(@m^uHa9X2NpBw2l6xs0 zSj=vcvKgc2JbbFpouD3^ce|+COB`0dGO)4Jtl+$ZbT)T)42D9HVG**K+<7=|K?6PO zo!2$(VLWxF+zZQnU&3i`9J-H_Xvry)l#R&RLxo-gWOX^|UWu;57P|$$mu;Z^os#WZ z2f1a9k+z23p>xV?N-((w=%Rl<5C|#H!7ff zx#W5ZmIy8{{7s}>Lw7aDgzfGlwYZ9M6bU8z|oO+}RsR$mv+# zA2!-IhoHCAO}?5^`e`gA5ZKV@^noFd_L^#~rml!y~CnFgI)eCQmTD_*FCXaRD%bioi zLMFOtn5;1*ZGb{Mu_bb+jPxAVOu9wBm1loxeS2%G&3hR0o-2@uWp#BwAW#6#!^rQ` zj(2YSA>jW28R&M)d1dylj3CFDe+yWiFL~vydfT&=4sd3 zWsr^wx5J5GWb+9mZ6J)1f_Vq0pZq-dA**~b@cxUZwe#wFu+;7@?5;25^5b_f6nI&b zu~1N!>)8D%-w=FZ@oV8Wk))XPy&mg9)HPOlBe6%jm3;XNGRM7ff>_{fIL%yanvS2> zP_@r_xbVi0aji=yocfZ%8p%9Yvq>QdBOQ#n?0mU8cOK%Q(LdoD(se7%MlhD?_5_f` z=%>kG%tC+{=5F1|uQ0f`)_g_aTid-W#20oNjCL0`(5ylzq7vJ)A|sN!fCL^1;FIfD zd>+@HCGgIJtzYT4c1bd&xrSK@n&MJ^W+Q&k2Hf$^G6y8oN&C7mvpVmHn(W%9i*b8v zrrut7V$8L~kgVt@n6q*|cNmFI2L~T6dvSxW{9o`^f#FE5wJl=XN%IHU#*uR(MRHuJ z+ZY?L0qpy>W1ZOMi{B7j_ybaVX>~atM!J|<+TKkWH(GPE9l}8W0D2F&LFBIU&e6u7 zi~J|2{7CR7p`iGV&rOg)0+|d)3ec0m2WY_sM?=R1XQ6)#lbJ0hV0xeq;C@;UVx}PS#*q?&sDnZ$$R`drl+^Zyp*T!vGmD$96jo zGu!DMOH{P@mEoA%GF!_ND&Fbajsx&8PkeiRBc*fHnsp?TxssZ_mgcv_OP>w+yTZEF zwfBYL)GZz|E>x5cAnUjuxfll^ZI?DqTr7WdVm$Ge1Fswm9&1zL7r=c#;!Wm> zk0hC`)$WnS_|I6s@a?^fvT3@{ zh?>G;KG_AlcY?|phD1#u!l%)Q;$2MZ z0#(#!S+k~2eo}>0tEPX41WCAcZihI<4Jj>Fzt)1gIV~E~RJy;pzBV^n_(huL3(^3% zK`%1ex|oN^HX>kpl6oz2dIyefJXzrD=nQ7oXv15JHT;P>hP&m04q<-Q|8ka#0R_?@R&C8gwV z1R9;3>SJjw9|-YC3BzHE;1R|N&nGh1JZ&YYUBu+CQ%PS1>V71S`r>p_&|GPeK$0z# z-cUzLqhLq@)UjYl0OuuhU3}O2UxR!D;p?mWJKL)USS>An$ERiEAwE!JTmZi*+71EQ za7}f(Pldd#B0J@Y65ev?+I-FyM^k{oWD3QQ?Hz&J)s8DqP#VvQqPehpT|NyeXoAiz zi_EC%L060oyBKmfBR#>zLY!08hbw2t`ftU*i5EY#&85eOt##X<12Uftg5t8$q!O+2zmoPb$C5*5Jb866K6KED*HqQ~N3YHY+ZrgAv7HBSNf3fSpav+36oNfaVjU*}=9*o@@koOH!} z{{VI4&lcP{7d{}=q+#9e-yj}+YtK?zrgPTB#*0yE=iXN-A2QueC2%pl*s=VA*N*omBq*fua z2q}&^#$4VOWipa%aU|>&SH!zlI4)7&h9e5 zE=U~#;+I?apDw4M$8T_!(HmK#lu59e{K$q3ryOB`$Xsw6zG_bm&mODddtqaswYHNW zoufAe6tpxl%mOw9PFFb`aakT4_x1%|%21La-JQ<2sp`W()HOtTZ*=J65BAtp zsyuAFff5N9b6^}5Tyz;6*9oEPcHR#0MXZ|Tl+v5gBq`;xOFr_W%3>9_ka-(P2aNmG z-E+j({vPqopNFM{-01f4C8RTpqD$;((T)Hg^U->C=i0fyh|;5JDAs9emr-2BE4{fg zF&nlq8;R%U>yG_t-6j@SJwxLa!s)&fmI%B)x?E8!IMgn$;fS~Hof;HYlX-4(6p_vk zP;t|K&6;HXCh*m!uN*5I&mQS6u5Em_mm_h(@5>N*JgKh%@rI{)E#AKzz8Uch;@;W| zn?tNlw&vat;K;@>L18AzS0gwCjxo=t{2TGkwc$SzYxC=Z4GziRvX;uxZp*=Lu8dh1 zJiOWZUkGxkU?Sr!3TFDy(8k*s=g@K8eKB#6}gkkif!$= zUfAz#o45>e+5AZB!RGv1XD+{eqD88BT5WXcmXB;Fx^*eE#uF)p#ty-IGWU7&;9^!*jb93zeqwrc$jR?7iM(K%PMK${O{p%T z_Kh6I(c@JyJ1)|wz>k|Pw>z-II2?>eCY7yf8aUFeV>*)}@`Mf#Q#d zT5Nhwn(|niIbKV9*$GJ>_fHG%%au4XaoiK>Lraw**r9Xcgt8i(bKYCPZ1nYx&640M z+&BS>HbEH;8vNXS?@ZKsrGy$~#1Pr*I+vR@^jfS?UvBbcja^nn%#H!yoMW+JfyX@; zjJyeDu4yAk)fx+H2<|QAK3d^VE}>3H;9v$A>4V;`cuQK-?6jLV)HNwS*#traTWdy{ zh!_Mb0msY_e!p5AxmMR1&TEUQYZ|@fmWyI^d%N8=E`HH70}O&UEF{EZ?}0GFp13}g zcxS>|)A)MnPPc2QSTF9Qw1&wgaE`kh%R8`DMmmGvnz?1B4LV&4(hVz6v}BfRAuNZ> zisCnoipIHOP=bivG4hekNuj5U^#1^daa`$ET6V1^oU$}V>f>b7GVhI3YK&)T+A?|I zvm(`JU}QoX*tjwZaYOTh>#{E$Eif*3XdZlm&ktqzUgoi9Pu^$RAJ z!s%tOn2pP>O$l2IP3gJY&DM6AB>^t`{yfZbXp+2kP zYaL$8O;Z$>G3iq}c``goOmcnYDo-iL_eECl?z+%;b~Kvg+Uro;3wuOR8v}R+Mlvu$ zk^>S(;4@u4lo~#PsbAaa+EudNY1bloBc9wA*sMxX!z7!0^48RC*jEq4&zPgB>D`%E_abg_sp#?d{xLIkoSMwx!2 z=5Tj)`MK-IJ>m}*>fRRdcAueZ8Z+J9rkZXbK{#kmB#f6B8Qi3x^uwMjtnp`wEaYp$ zX{;=ZsMP1~LR35AN_QCQSy@$G$e3Q<~snJ2?EiCzO&FJnwW|`mqFz za0j^=PS!L{tp)I|fSxCNxvp%M%SgMqGfio3i?&wa9D4oGSoduA$*)fFeYKQ24Z~hY z{{YxLMtrH4 zjF5g%zcHis&c#3jalQ~H~4FHf8r~BX2R}N^2e1dV-6KTVh#p33>N5m zk%QD%M|a|D9S=&ki%qu=Xd7lA+xCl@w&X^O$;r-6c-mOzo2^H!d^5d*-f1N928DCF z8)uhq+aZuEFp5rsMPLpj>;2$Q%~gCS;LDvN`acohTUp#{w@zbNt)DSjDJSJaoMdyj z@snA)P=n`t{$^?^Nww76@W+DW)b$tDwb>$%S$GeTVG#Y@s+^xHK7L{c%*XFB^aB;Y z;Xf5Vi{?c-gKCUd0kVVrxX)zkl_MhuwheK5Jldtlj4gF3Y=rm0q>9$vB@Gl&hT9{S z1P$bJPB`d0=S##o95UV9Y4*1h`O=N+Zw!TQA#?X!k!n#$~w|lMGeVbF&U}D;xt-I~m<#5?Uj4%s~u+JQx zNfY>uFa96LX{@#EcY0mE+f7OsTV>6)IEwvYy zP8w3m#^F*Kgsp2M02mSm04zxZ)Sr6Av%T?7t9>o4<@j$27B?g~5y~YW!;n67>UrpW zMmDzBHJB|>!Qp*lNcf+3;vGWh4JPMK0ig~aI6}Axh&KX+uH(~hAd(J2ucLfOgT?PO z5X}XKmWDyH;Iv952mMnLyt9HCc?#J$Cl!I?Ux>D^ZvOyaG7Cr;L@pX7Yanu@7hrRO zM%~Bd$>)p_OW}9J-x}*0mZ##sEp6^?;&@}VyUah@1U4BJh`;~?w6=b4Mb1b?HrodF zM@Kx7L8*()LMeXNcR97UfGfNqxeBUwjfIqgLFtzFtX&%6JRPKJ7n+1ua(p+{ZW`+1 z2EQ@OZ*WFSB*B4rvUnV-usv4>YhD?FnBypj;Rj(p5~y%zv=u18MQbe$u?9wpIyJFeep))rT}&EvDdWZRT9YDfSm z$r$8~#B^HP@lDLFrZv6dMdt6fNC8r!NZFBGs0V^c8o0mg` z{iCl|+rqj9vN}rAN#_!UNCZdIjz5f7&au3R+p??A0=~lW)SeT))3o@teKED7(a9Z% z6PUI*jdPg^1CRE-E9KiC2LzEwx>5^F zxbM2Ht-?avM#(wmsKfS$xG}miJY<5UK--SJy4OQ(pa`sDxty)EaxUbOQ;#qbK)~2~ldC|Mrf+jMB`2Ze@D{o5E=ek#(G?Ai+e9jc@O!Vjc^r&O7jbaDP1apEo{A;4L zzPwEhEL!STu~srAzVoqI^=-MvPaOJH#UoYbQZb34yJL_9T!H@Z6~ zbKaQ}$5L2IeUK=QCLj_WfRTdmr=Ixc0JA_$zq0hJE3Fg3I`@UO>!;N2{5`7JzxK80 z@@{USc0(fp^KcZ%F_ZGHO?ijLo2`GuJ}uLyxiafsOi{^g2b8a|Bw%-CR22DpIe0e=919&lWo}K^~<@T z(=2rau_I)Wv_+JV>E?h~9^?imBeg+)sllgT+~-BMx>;@SGaNCLH?g`f+KvX(u=U8# z1anz`5cS(n5y`4q9W+@8cSjYi{3a=5kQF0tSg)6zfED9|)O5C%H$EV@xr%Xd4dezn zG`U#h0Q*FdfgVoW1Htaij=V~XQnO{>nb_0uC&QbKaOv94moklF-6Le0L?s3`o!(d{ zoT3sidV2F*--!GR;!hFS-e{VJv0-mGjh!HZ%(~n<{KN(dy8yr(`uDDj!JZnw@JxE2 z_S`bq&E!Ebu!u>72+H{k#!4!HagsXp zq~prBD_K5fK`(`MJy*v%YQ?2pYknD@L5!u{q@!iLq3~e&i3Kpll}0wbR-m#rpN!mfl_L-6W zy=N`O_LVn;?!=b&65C4VS3Y3R-&NW-3?4dluUhbXJUV5(8iaQ?mV(|k5nEgN@~pXU zFWkoJhM#JUu2wbgUu5O7sx5nt&MRprv$#5(;26kuj$D8^Qeh+<@)&yYhyASDUABt1 zy415trOhAOBSy?<#Hu0yMpuasJRX@enqP=w(>@{VdTH>I-D-D?FSORyq>WlAcB(q7 z7G@y0VnFG?-n|Q717=d@{(XA~G&WOfdlANIiN~9uK>R!~Qz)bTZmc;n{4i zhNm&IX1apvNzk^`18(iS{Dfzb>s!%V$}|m9<5<3(S4|5f7Lr<`LPEEgr*eWo;E|FD zKT3Cs^%=um#VzlTyh~vvpZ0rC12}<+lkEOhP?Q)LKZE#zG8-CtTL;P@Pv?&Y7cWon_rd*5@{5Umh z!`>);TgCc)*V$2-t=i%RwN+oWLhBfnn4Y+iqU0Xq)`aXc8{sCRZY?dvj<}YOcWG@d z?LZs3CmvainBkNM8xHbDG6$t@LO!+D-l5qL(_I^@KCK zEGV`}tmkQyZ{O&4l1@3n9-J5Ee&~)rLD6r#ZQ<{?Ap3vXY%QdM=2_S>P5@~R7=l%} z=R9QNis&`328Q)S(i|*xF*ygvAKgtwv+~rDZ|V|Ki=BJ=aJ|~P%^~g zeWSlCL$QRK4d;k2^({szp8C=mw_Bi79JdHIr$!3FG5+(D-6TOQx-Fa}WkuiRz; zb~z(*itF^vI$bkOwAM9SKomwi%{WTTu|_frCU7@`eFq#I98*fqo2wSbKjFwUZEHrF z*Hwr^t5~#)G^S$H*e~9Qz)Gt;XODB79D&8ibhsZ_(x>r^DqUk}?Qfkz#Wn~bCg+DB zZVGt&+@3+JuTO2Dc<)HowLLG%)9w|L+2xNf8kQIYfzu~DPD5#l9%gF8n;Y zIky+mY77!9Iffoga%9{-?$fm7bLs0zr*&{;E35nayO+5(J9M~YRSP;0(l=5-$j2Xa z`r!1&dRU(c5TQ|IV01G zBBOgv*%RnZ;(a$*eJtx2T6om;3y>9Tw;v`L{LC0K0r`k>3*clYIO$p57J+;xeLQw+ zG`=5{GDI&J@3xg&=YjK`$__TU>C=&eTADNK7js`I`*hH1QcL}tJdBKDQa^|cV`of| zaxuxQ?OR1{Gf%Sc=A~_QCaCDQGHV7b$8#wJOYNC;V==KrY$EDrr5lMFhjd2aeRzwe+ZaL?E4@_f|_~@T1<&e@d zHBogvv{qJEQ(0TfFq-vBqcq`9P5IzA2R_Zxv#fOG_>ZVG5;23r7LA#ti;uOi&&j)@ z$C1|{oDtKnQ+a7`rdWWe%V8hMaXOrZ2iyC;r?=r;?~goZb9JIar^5qjmi}l)mfvtk zRpn90A1-m+;E~T9R7c)-Dd=z?+4^p=sn26$1Uglg!!Oyaa^hADR~(*Dou?oXhRGXv zZjya{ygg$UnGUlp_JJsxYg?O(mGkYHp9;Av$}xYCo=ynpb6z>|JI8vLgFv;@CrhcM zgtQGB?|U|B7k>2vETj@P91=n5F^=cqzrvf#PXX$B$BX7%e2;7l+gx;_YIeXvEdF-Fv#cT zAc44s>vH(^;_JhDeT=#l$%bP-sIr+zi9}?fL4a5@ZXuXpdJqY!z8<@S;nm)orfUOI z)jS-x63&uN-zJ&zfe@1<5`dQhn>$HRalx*J{{TY1_=Vz)F6&Fy27{>SY{_G*y5;<~ zIr3)c955KhdamJv*3{OB(WcgipZI^qUMSQq?tC}nFAdq)_=TjH#bu|;l3QNG$IQeM zsCJ*2ISqv;9OAeu?K;}~N78j0OQpZlw2e{i*&?1o5>|52nB;z0S0PMU%9TAq&3doI ze+z2bH;nYV+u?Y(OLw~NYd2OfZbwycjmxX_S08YIPw@)J@vnrnY38!kwfW|b(!yw6 zEFGgz7FLsCV564>er)Z?!5zWIYnf<_+m);*jg zpufyO+qbV{jm#Ug_e0hF%u&r0`#B zx`+0Bk(nZgGYG?-+q<7aGCjo+d@lHJ3bbwFNG_#TP+Hm5nkMKJx6Hr91rd$*FspX{ z74tl1^TZwl@H)Vn7l&KMOk^)K+QZFeQ2^mkAs~Wz$sBaS>sh`#*JAP3pQ2o8+E4ad zM3TiVj0{>h$C}QYN#yL$#FSZ7%#% z7OepvV$|)H`9L}O*llze=OLB<07|Q99S>x;y|l9M-jQ`Im$tKAkFmpVZ)xVb%A0bn zDzg$;NOqD3Q^i}ezyAP)j!hEL@AV5y#l5)F?(Fpv*7DmHh)Dn`fK+Xa;~CGm>Cbpe z;tr*&wxw;STF0bEXMZUrl_pkw#GRN`U_Mchdn%mrO>~|umT3GlF24GVx}Kua#WeQN zMvyGB{{X62%C7V{Yy-Q1YP9C^J?lN0m!WufRENiUmW`T9Ly9vz1B`z9FRwvmODF+#>9pUMpo zW!sfN_y-3Z=QQTyWY*`=O4FW$v(BqW5CGPxlM`E!OpFd+Q3&pkAV?`;Y` z6VbGV@d5tR)6&mV%!TeIa?*$xt6(+;P#FhapD&=Uqg>PUj}XBMSPM(-E+~BH?h8jN zdBKm|$RKf^dBLu7?@H9>)irr8b-%DXSP31jk{2c*1a3r}fcY_uXKx_$pO+Tn#7m)R zmb!B-(QCGlzUUrBQZlE^l0B;)7=7dax%aucqgPJV$fj`8-);Y%T8KiZ~}$V2YATQMW=m;g~At9V^YXE2vuQ z!(z)tw78DuH4QB9=LB8qh}+7NNGCsd6NB>{3hg{43|fQ4&z(@C^3>J4;s zsH}AKhVB+2R7`e}fyM~iAnDHTdJ0`SNUih>&kwcMp(lkdY<|rPSX_lLg2(1pCmA?X z(DxW1;=2^})YjM3!L-sYG~XCp=vtUqd_$_)TZtpTDEwAeeLC7JX0^DHUpB*d zjkghkNq5V3-H&tIFN>}k$==xM_R+jsyokV+o<6z213AVixhS^UxQ{Z@Z8d#Y!`5=^ zI_ldr&oG57ZemC-V@5e4a!PF+5KeQP;U#l%!(&M?u-rx zP{nr;0r_i~@QYdL)|wCYhuUMj(k0 zyN)BeD~nf(FFH$BS4Jze1B{RXT=q3m-^MXb;cKlX>g!ary#Cb}me+b*A~qHckx-Qi6*l1K2PeNBYUQ(C{6q1JuA!{FpJj(B8e%t(%q$5B_fARx%tvf< z*{a;Hm4Cw;^6AV~)2|MstEX$a#kQYg=E-{nxsa<$S-C5?oSntGk<4c?zL zzD#y8+CwZqXtV**!Q1|=hEJ4F&Ozl_amcSayVUeuF<`jyozxaLx>UjwEv!t@-^Mpa zj-U+0&A0+Hf(LQ5j=xyaZ8R+|$Hbl(Z;|>2z)e7crF_`+@SD1GAd&Em82%ixA*q?+Q|+5oEG+0thZi8$mS^&22wJ- zso;!s!5m8nmAebaluko$89jR(sq0(b9?q4aTk0^}r1z;XFk2Td41Tex!S@{o51`_kPhsd* z@fEC>dTessO)U2@$gs2y03mq*bAh{%PCI9eaxk>GA;0ki_E%Ra6~n^6XS#4?Rbp@! zP;t&k$jB@J{5rix!sJ{_cMS4Jsa{*OHsm0bVD1}zPBWah2Rvhn%Fw(w9fq8U6=#y; zhb}VnG4(%Q-MdzEnuU^A1e-=bhvn9-JV$pdalvbR9U;^pvo2tcbwTsMt&y>b1dckK z;ej>i_mZnaBs!z5_2u~T#k(@D0qxIB_V>UQ#@NXpnf4jhSw!*{k&JsEfA?IrFhR%6 zGoO6b?Qd7G(_x0+SCHIAbtHE3M(7EUf;PGo!5Gg$j)$Qcty|}n*#jlfC)I7?T`GAU zU~y}Ir(Z@Hqlhs8sRJn>>NAkz1ZNnn1Z2kYhOjf;rBASv1cEh18VCvm!^_ilJ$SN=ISO;haG7O}yoEwpT`t2OW+D0Laa z`W^}ES+9NQ4?^*{)LKcct#9q-uxLWuIEUtll6L^v+-4U-t&wM@bg5u}mozAJK-54#* zLs3iVSqv~^j3!QgQn=fWo}Eu=;@=Y7_;wh+$ERF>!Z_0zZEVT~4!c2iA1Eh~%o8~Q zi5bQhjk(n1v5ISZ8>hIPkj)&|R^<6mf}sQMJu=`7;Gd`_yMghN?ezFf{jji(&CQkE z^1vt4rxM0|m-9vpf4mB%vI6Jk7-b6M`qO>;jj}mDb?w9tM<4^4UK?>f+u?J~m z3UUW!4fjYqWRg4A4dC5K=#Ey-8^NGWB!UEdPWDZln9@QHW7fRiePt;|%)-;uu&eP)6Ekn(xYy}-3cR5$wK5tTkBDoz|XYn)Yns$eK9qoixt7y|( zw)S}nx+H#KU8t%8u^7+Hql6hbIX+g9Nm#(R7XBl#)%6``!`hy|p*{2_*3!|LUT_qk zW%-8ee4CHIJu1`!#jVuoe*`6kRg=w<`%y@UVSqxHWBfz`oc74AoBa}9JHeKkAhOgo z0I=G|*E%yOx=9tue}8(rFc<;$3ud8 zSBv33r+Z0%_#`0`UADfZ3}zH8C$JQ=51NaAmYz8$t#0hVoJ#f>2= zu;lPtoT)kK+ZE-0EYYE`@rJt%tXf1?(b~nfEfVnD+anUa9DrE$2aXB%tg#SWw=k%z zzpwH|*t~V-+aQo_n?HDt2fi~;UlClhVH}h_*dBd-YoD{yhnA8s`HAV?w|>P85dkLz zbGy>G;?6xwiGFVtjE)o#4io@C4nJD0b2!4C<%>1|2e8gMpKgcNp|_G49e2J)IOm|M z_u87nAo3&1;4WLSAXb7thwzV`roOLtX?1Y}X;$y5&ue!sEy};j*kG*A$6@#Rx^%Ak z*GRs((DjWgQPk|T`}rVuu(FmGkuFq1vL;-zo~w?T`E%`DFNZJm4-IND3wUptwLLyf zK6rIf5M9hXvKUE>B81LIa7pb}SK= zU~`JM9#ze4kEBVrWMh0iypPBF4X&#kn!G8f&*xmk8A{vCgblwiEKnSPN8Q2TVxjnx zsb1+zWSUjvmYQ|$oU%)6Beb}ZIRTJii020!FdSndpW!`5&q2|(D_tJw>Dn~Y%F)`& z8RC*`Ni?x5p6c7l9AGyX7_AtsE+i4jYjr;5issQI^A~P2<^)WrD}bjbjN}~F4L7RU zjqRbaeICsN>{fSHut{(o5Jv!HC|GBne}wfsA6nPYyjyK?cjR4IG%_kc79@ck)s(bs zR4MsXght^101+LkrKW(|UX!5TU(I9WY6~P184EhaHTi$wGdYgMqa)gp|2t{Xi-PagNo zC`$hK3)cVz<190U{^+Vh`!iCROm_CuMF?ot4?W~A8!XMS0VTP?9A`g;OQ`Caa$RXL zw6_YdT#K0Hme?$B9F7xdA&9};Fize=)9k(**+Hr?v(sX-)h1?m??SHT!-j90mH^}e zFh2EEr0rx?u28V?C55ajWu^$Nu5_1JZtM^i5us+Kvc0-V zg_>O|$*}_lh{o)2-zu-CBz3NeKMZ-=-P{nhtTL_SZ#34B7vAomh9^CmFul40ayYJ2 zQP%G6JQaC0)}3*6eGKLqEv?~MA{Yu-75m-D>)7KNts@sEm4wTB2ZpV+dujYkk|bJn z;~A~(XC>t-BqwVO5L9LP1&28Y9M+%1=1UzHUXt;=%NZ|`pz{&hGDhM;`YzW|#~D-4 zO7w3E_#Z=iNRE|b2iO_$Zz9ajivsQWahw7exWFI6IqO`MHx?ck_=|t0iQ*Q**4hCc zT*tjkjLv$1N=k&0{m!D4;^dpU7TXybzK;;`PM6|nFQK=N8wn#8pzM-TE+dlxFvWs| zZk+ts$2IAizMpE^dcBsf1X`0?7;I7D%reM>ZsVMHTz%o!HNp7GIJKxeKWAw?FR0mT z4|cM|=0a`Am*pxu6lEQHk3pK$vGJ9>8pJvn&DFyzJTN*137oS6*&y;sH5QQnuD5g}%qAJWhy&1b0<-L4Z!s?D##@t#vwwjr6TaW44JUwUx}V!x)XQ z?4fg$ljRT$rvneEO;y(kbU5w_UM?W2Z#O=*nBZ}tXSJ? z5(Y4+j!AOhWB}VxXK5!Jt2shbsm`<-x@P41d+9L)<6Q9jP%d8eQN{4 z_c~R_jCHGBYQ_tlIy(q%ZRNO)up|;P$Oi0&-SUyQ(D8x^rQ!JQZ~POe>NiecxQ1Js zPbjmfNs+?tQJgT`8!CA`0CS46{s`5z?+jgdhfmSs)30spLJLbto99S>3}-@}gm^qZTg{{VXB z@#Y{H-578SC?JMI^K-QGU3I>Pb#H5ZXKiz71=v9x5zPX%o!WIMcrGJg+=XwIvT)pj z;GAXe?o-uhdHs)pm&RJV%c{(lx+R1wsMd4hAObVkNvTVB zdu}yI_TMaCb*;C}9Cu?Qbe#&4Hl{~V8|-Lky<*1GQ`gL)@6y?05n0?ralFMUlYpvwj($=|Jm-#@ z&I&WKdJ`16PQv2VB-6w<(Mq=0KkKq`+lT>y1JgVO>5p93JqEFJq)WcyEy}2oK{NpV z^?=4yWZAeWGZNcIRJe3(eApp_dJ&9Z(rGndGjpJwc*fWhIT$aNb-~pyjeh-EM)p{v#EmsOp!JUqxZ5 z8)w!nVDpfx6-&tT%K`{0z=8hh=bGSJTlmZA5Bb8;%Z@Wx zk;rxHdpk``THRb6ub&bYL{}`JZXgjL0A{-Ve_gm+>xHwsYlgeoBO8QPSjGr!jCH`q z-}Wpb7f>QpB?%C>{PSkO8NdTSKbgg z^DQ0zc$i>=!5Ig?etY)jwMcaxHa*bVvCs(%_E@DOjQ7Ii4EG%51K$q1F6NskV)A zZv~VWTA>0sPn1QlOabP%TztnHcpQOSUOGi0Q0rKKvh^$NJ5aJ;>>H+7n&qPVL@>bk zB>8}x!sVB4N6F4`2ORysi|za!;``qO%+0KLF6fhQsawLc8)1UdTHFi}S7-2dfaz%CEbg@pR8E_0IDpx-EAZ)*iE?kasVLhJu-Bzd^lm$bsHIc zJvG*yd1$hshU|HJnYPIb0rN%12w{*p`cGPajhSohN!$Iw#lJfNG5;Qipw{G(J zQH8?9q=U#-8xWkgAY_aT4JscM_(Q}xw8O-9x|W6ZGj44!ANSgG#`sl@@r{9UNIZf# z&TuXKKGZx*@aq2nT=31!)tH^IOz(JBhDN>O42L{{UzuWI&)Q0^H;faO9k4Zg69%d3lpNPZnJN0BQdK!Z&nMd0=O|w~{k*ZFg>m_~ZlkXWyKDl@qUq zVw=jE$KmvG#-V@HJVA4O-~*1KNZ^6M>0W)W_{YS$R-%^nz9yGZfsiu2fCY?;{? zB!GL8dXwD$06;6AwN*IUCnV&Vho|Y22)CEdsXePiSw}kZqDKJo1vcvbIR5~4e7%E? z4o}c?RA$$j6x(i$bHQa?R~$@Rh|8!-&Lc#@$0YTv?N-`(WkPTW3O;T*$j9@k?Cviw zZlq8NCnPf+pmCfYDpRJ(s7(2kIaa}Ao(Hx&*5(ZQ88nX!XBR zMl;&Vn*>2w!!h1h0|V}#P%EC*JUgIX=^DxaRotFfNg+s$rDisOb%a>is;Eo2|bJnI6WiN?YpFccJ3?K?GhH6@pR%9No9?)T=ra?gOD-T zHMOW|7Mdoj1>Tz+Hj&<0$EbOiDv{dGu(>8}%1b-#kPhPj4Ce%5MdB!RolUIgHdk<| zF^dxl`9uhtVcx(33hWph{P`H<*3V5Xp-W8*dJeN`uiR@EdcMDZYkdijTVc^H~Z@r}Jfph2Xv`9krU;*|awdj)0Km860PE&fp7hdVomB zHJzl_D?(h?A=Z3VKBpd|=Um&$lG%vutznC6rotUJ06GJZdCyM5yPNHA`&!oHQL(qW zxPll`cZNv{taKt{Pf~eKZrD4KTyI<`VH7%_%_YmZ69dY^%fE60Q5YXp9-_NTuMb~Mqdt#!a`7e9 z@8(MX0K1R|W7BGZfN(e*{uQm&yv5g3Hp)FCSMbi1*S8n*Y8O_oB(|{1;@UqbA2Cr> zC^%q!dLH#Bg|%%TQTMax|UsK zQJIrYhDlkZQM9@dp3HNPQ^ja#20ITJ#~!&2u+rWknQmn}5=3pg7bF5(aKJy^KDD>- z^6tY$mtC;AyG=U5F77_fG&sf{R&@!%1wy_$e+jIis=F<#9LIvM;)_sSb57KoQqpgy zRI`Hd%w=2#j!nC{JD&%qT-Tfa(!Uh%ehcgR7mF`^8ZKqIo<*~{n*RXzOCVeq*r5E| zPaKY&JJu$l@LNUj{{Y3Q_3cN+8kL`hVkthEWo2^mOAY8`XCWkwfCb%-6z41kFmYb7 z;_n6Ne;GU-qG`T5ifvXs5=4?~nULaC-$ zyv3|^%|`L2ic5fevpl(wjpHgAixL4mXMvi7;SY&Cf1>5MEA!uhouZB5il@Z1OU6h>R5YDit91&17Cm+77=x$#DaryXw5 zVZF4sS;ei1%DaGneTMtVlEbgc52>mav2D^r>qyX}GODa9B~_QAvy2az=Z}3V%{wx?&^CzOaT z8@x-VYF5jpUf3?%oj%MBk~8huG&$jwut5VDB#t}BHivOzcQm(6J%!_JmL`i1Atb0E zE_oneu*L|_1a79?v|wJ-C9&}it*pnWOE!^xX}O_{xkG85a~^ZOvIhWT8RG1p)&`S(q@+?y73QBjtd^oTKj_R3F`VT{ zU_d{@eq3U);n#0832yA}ZlE&ToPDs%gdmO@PB0&Uc6Z{ri=8fOXeF}?_Jq7Uw!*(Z zna3lZayy>2)7a=1@(3cmw~gl98Yooxz%b}ZBbMpxJ@Hw4S2Ui?75f@GMy7QwJtDWZ zN$l@-&a%8jPa|-_@_y*+@9EaIG`p=SW+wjRGO89>&=Q9k`Eoj*D=KYcPO#Q~!+Ryw zoB>`#ExK+?h8QjLfs$9|%8t0>IIJxW`YmDZE-h!&KEp9)Z?~$M6bH&}^vLKBY#(Z+ z9%anRy^gC{xsOvGL=ZZ#K3&B7R!=59#NkJF0QTf#zkInRzVKGFDrwj6KAn1_?6b=b z(0*JIyQ6c+Bm>v2cQ!hHk*ZqT{hB8lTtB=!(+wl3=zH)-UikE;YO=-RNSS6S9fU^) z5WN?SH=*Z0Pinqov;=Yo!TP^~&A0Q;?EoD)^iOm zOR1-`R@*GlfU*=m$BsWER_=U9tV7}JtvJYL(&7az?%3@z5z->(j1F+!@$Fu17l*EO zO-4jF3dpPk*FVFaK3typILEho(IqCEGMt=jqO~?{G+DLFqhWK2wAm&PX>#kdO1rlV zgOC_7CywBBHJUtEsp+>@-W<7#*49hue9a?Qju-Oe5jc0Zo-%T>F472M0S63CYY%YKO(sXqvKIa|IR&%xWOvPU*VgdgUR~Hixw-O|(A^nKS1>?WFjC6f zis$aJ_rT=VU5|(F^xqR*LwBaw%i)u1ulBZ)jEf<2y*2@o%m~;=a7Hpl61&hInv%`n z-6ro!yU{fmOwiq1m${8gD=HEOOpEtqJF>Vu9D3G7KiVG(w3s|A<0&V;(i#xWtLjjR zBQZSXV@Vque9RS7(B~u$YuNrA_%P`fHa8lJ++0rqc`R)2h*@F;k{V(O4&X5xk3f5| zCcN|Zr~RRHuZP+U`VF);n%=dj#AA}$>uixmhmFphjAx>g&*w)!BevvDN)dCGht1y* zwXcO*XNV@g(LDW5@>vY=Sm>-_wMJvRJBZ9g@)-~idw^?~*Zv{vo;0wYGjSH3r};)x zr|HZgjTA5+yeF9n^d$8kO4ayd@E+^pFNc5ODY4d0opt9lZ*6OCyWa;HQ@sE@jPs0p z*LkD<%kgQEx?NmNE?*4t+(Q5Zra1F^(J5+hRQC0@e(B_Tezkq5T3cFOPc76IG36wy^LhNjB^~N~q`9pGx&jd*E)BrRZO76KXf4+$FIvYAZ6tc9FT1 zK%Xj*GtcE-TYG5GUrk_^k7;>oe5tLRZ)oHlLHvLHbaF8fwCyeCepU%0)@eJC8j3ki?wn~5i`qcIw0oS#2ylJ%d357S+V+gw}2 zYj}+Nw?L(nesZ9BWrrY+0LMz)lr6o6jwZa*E*^WQmf>WPUUr!d+_L0uaz`YPc^xa8 zv5QO7TT4i8r;6z{xGpYkukCitCj2WYaseBI0vCV-u20^rJts|zRM)O7biWB(+1*E| zPj@BeyCwz6^Ar$)O8@~m80rDyx@7cAuVX}>=@qr9;nwZ!@QJ5sR?Q(uq$(eB$l#Nf z=m1fJo`iA$&qrr-d*MqM_4})rywT#hSnr|UjUL%YmWOCxm*x6bY}xPk{2T-sdOcz^71>hew@@}#&+qTbsGFo*(85w&~)1&ExSsuB+R*pu|gQ_T(`@ChR-7%YbxIA zFAKq`MLxau8+&a}&a_DIsXNGs!G?E$L1!7s!BOv3?zB|Vb-Sx*^qH@tvTJ?W%XseNw2gecq5J6B#_Zq#NEqjn zSIpMJNo;jGZ;fp{OW}=T@at=PHN2takz;MKgdmqAJ6Gx#pzXVk>Uni-Wnj6nv9rC6 zB=g#P%h4EDRs@VFVpUGu_Tc*0g8U=UrENb@isxC95A7>sVs3QZH0_!bvjFZwr-BrI z>>ri6>0Z6z2>#cgY4O0Zc$Q$^V3OYPBaSt2200+$oHrxWuL7f<_HAkwv(TdYj|SOA-1`>(&x2`7_U&Yf<2AHD9S!d0DszINUdme zt7~hY4{2Az2NxFZ0F8sJWDlAmha0;L<0L7j<$i-&YB$232e(P5xVy1URqpQzj^bOB zBq4Y13$cy>#s>???oMlV#&z)j0LEQERg+F#Hp5)eiWWyJ1TPC^L#d5+vw5fMj+K|7 zYjNqiK9sus<%NdnWP$cd%AdOqIZ$|PM%{WIIXqTQldVUuc%f}?F1(36`Bn&{;zfkW zN^j3c0f6=3XOM8OWYvJ*Z6E#?500+&Re_D9cLnVdXt@#?#6h~GK<#{-;kntjHw_L^n?0EunjdyA&~HMXXZ zh+~ukm_*}0yJsYjyo~X|z^>22@!RXR_u8qwU$rVEb7_j%SyT+Ku{hv1I((#b+ex&! zY-T|Xw0cbAOVwny(Bd*Y!s&q#USlj@1EcbI&j+7MsiWP0W6O1EtIr{1kWB=LNhSKU zYk`b_$<9YO998W@UGVm~qTOjas(q@)IW_>QeEU|$7icOlcsTUV4neFh3?vZViw#zE zgHW}$Rj}HFV2pj@i^wjc9C9<;2b$U3H7n~jxBesYr_<+yPQRRlw>HPhlGFwTUtk2k z%y7%!ajh*6QTsFMR+`%VkH#8$n})ZWG9}OVWr*YhAHP&=XQw5ljBpEouotG7j1C5=){&cR<2%1%CjzGCnIMhGCw2`Pa>LW zZY|A?Lhj4O9vQasC55hJk)AOEh~%}OjJVEt&g|zI4o9)Zz0uk@t~C8Z*gmHiR%DV< z8nX^Ujt<=5m0(Jol{m=F?+3$Y2D7esZ_a~5)U2({jc;^Kmn~ixHnnP*+De&!?)wKD1KY0?e z+X*8JDxQIrdD_5Wl^sS8BD1c1O{o2feH~!7z0{(1MrhafQXv~m;CFshe8&Tx+}C&U zC&gM_q;Q*HE_H@)Ew+r@|9%v>fVy@GL1mNU# z&U5*9;-RfaeurOktfiD!dOoLYrdW1GmR*oc7<`*guhX24#<+b_!o$Q-Txj~hi|hr` z;@<8eRpXEhgqH_CxM7TfM+chjto${i>s}AOv(=Gq^ts0IbtdB^4mx0-R4D@lV+3Q< z9v^e6-dgI>+Q}u&<+K=u?O)K0@J4tC9 z84EY>Oe%OS^uXh({RMU!{{W0Ed@-ZNWuX}FFC~aN7}zqRk;ISf=sKG7OJ=x8MXrY& zYj6k=L`DRy>U#h>1?|AkIi_iP9irH4$*Sq{OC`GqSVeZW$kCNizBfh;A0);A18H0i zpq!QF{EG58zlxq3o5VUqx;CSzJRjP!BHUeR(=gO5=4QkavMC#owl@Lycgc%d6k4NNx40!b1%6u_{Rbu~|YW>w}bteNEBeCRur>$m@ZxzJu_b#)5+Yqw8 z?{Gc+55MBz)!Rp+w9uZyBlZi`ZbnprBJBY|GA*1jc|zjl)JWS&T((9#SIQp} zJXxb%_;1Dj6^)f|VZ4bf-UQr|nCETIS$Ry^POpE>=gBIu*_~?vHoQIpF?%>AP&s30A97H3(?W zI?|!I)1nbbNdu5E)A6pN$5ETh8`+!##z#MauF!lU)IYGS^#r}srIO&VTOjOZi~>L{ z#t$R0<06{>01I`vZISKt^K*Qy8IsCX^2B(6ud2?i~fLw6(dnw}r0eh{I~$V=3G-zYIt?&N4cRy>okO;m;2E!q&!Co-5HE z&7`*qrK6Fe;F0qM%#o3daBxprXNjkp+I=@qv(xYO?MnLIJG+RD{E$M&lFEKvp-Czg zdvnRa0hJhP=b~LMMUB^2(0{N-rv%oG48=@w%b4Vew@Hlrx%q$?peF?pU?4OmiF|!PVto_jJC#L7v&!;XQ$l⁡p7EG@iR_sCJ1e|{l2-#Gj^t->!CUB4dKElJqU$$$&GojIq}k}&v{od? z6tju(Z?)rLxpGm5o5l|SEo68}C)Yd^ryEU4rDuw%*24^lZFTJ3a= zC3G8&Fk4M}sR6l$2yUZdtn#A}8T)Q@CoPzcOi{o$nSK?azfB9a%k)FqEniq$S}H2DVaE-QHv3}KXj7nU3nK>z?T zSvFQNT6mB9J_`sfBb41oCDgHIQZOal+ldSTjFrhJ=Ixr(@n48_KL^b$nrsqikY78& zCEMxqUdHo0tXJj^0u}{ZZVAhb;SlQ9`tHfhgJ3%4- zW+aj^)K+R-&y{E^^gBHhQkTPtq3D(qTg=UMG?Rw;ObXb;mEFKE$T&SS!Qfr^SEIqE zT5DF86q2M2@vC~!$5y>nW3gf4Wy4|$SZ#>30EiPA^{7W158-JBD+ zZ$W{MI+6uk_;01pp!`blG*_1EZ=~Et8Kks1Nf_fh2PYY3_U~5oNuWsEzH3cy#d>s6 zGc3{HS$alx*y#*v>D-D&>-+P0QZ6k9@N-QK3p>ptf%YOBNcA{07GvP_^(sebnUhl zYY1(vw0T5i79{m2oOS>bc{I7KGe23so5WH1cGmEv#9nR9oL7L1<17!#3EpxJI<86W zTosL-<*$q^b&Gooh!DAo<{3yYX(;O(uEDfx+Zs zG@|V6(E1NuejgAd*Ba8vrp~Dv*~cRT7$mZc5y31o$>*TrxxWNh$ExescTj02AGEKX zEtSI}q~_dFfIgSsO1RcEsIKmI8{hUieUu1fs-NF?q6h6#=s5y$|8;?x%A{{V`jOUYANjUAs zd-^wZqXc6`e+P-RtIO%8iqlYqmN`{Zh)RG*QS)a%d$xA*ig$=K@dT+Q#++`Zxx)=c zIWvfh4YEMJm=Bcq9rtGqPW!>y)}^kQpwkl4Ym(7U%*B#!op3RR$zn%6vBi2d_O)Rq zl5{;&N_!nf*JN?nDk_FepDd9u`=Almk=TRKR9fbD4?~o^zYyux=+Qwwr7OoZwxewO zl2u-cq;c}G`GM=4`eN0_h|t_yP4>ijZ%{F7a${&@EJ4R?5X2Bb$35{?w0#oF*G1G* zRE9)`Mp5>)3>>~k%@D`%u^bOi&fkhIH46}^-@tj#uYYcOFBx4nnKqAlB9B&o zG43Oca<{Q?-f|AAa(?c3KGkB@&S9t!Fh2Zv;HS1Z&kFbVSSzhe_%349q|>aebZdu-#5>7#cNoB(R4i<} zxg#0I0PH<$3&l}iB(q%E#pYdXSYAliaX`GYV?6TM13d3Fqu|dF8&tg0^>!L|vl$W< zU{>1ZG4grPWO9TKK{->w?OV~z@ai9BQEtxi%oZtFDPkYxAo~T$9PrhPi@v2@ZgUo% z71yHHE!ygP2;&haojgirxnkgC?_3Szf&qb8d0M`3qsy;ZgWEWDAp zh6kKr?eFd?ZxQ&e+rrj%X*QWBl=7c4^hvZv=NR=N#~*+gBpg=l#kPy$%UOlYDwk76 zjTWJ6EUbvYnyYewYW?&WU}cwbZ3^?Nxr5d?Zzw_+dxw>;qBvXl34 z0q%M(GC8e_yL-J>2rR^&WsR(xTHy}Xkc{n7j)aaq{{S3T7Kh?ZM9*vCo0%gpd5DqC zZyp5EjQs19kWM-J@wjydhG*0D32j>XM}>n3)mveeLxw6xP1(kJ9&##H`ioob56w zKf7=4o;c55op`RpS@5mqm7v?)e`$u8FmZ7x++u!qFknGA7#;FD=D7WJ?e$=nS8&B= zbtG%%m`UbQ)z>_G{vVQ;D%449p=ZT9>RusrC2cdbM1=nI`r|+670IrfCH(E?7V`lL zfq7*okb~5pPMGUbPppkI15s6)LIPUckM(2|j(cYy4|B&E8QszBBf{_v-eGJN zJQq3jCy%1nJnz)iTVs{+?}IEgUj%B}9F;HicH+YEYXs860L=PMnm!rYrWUkQ?`oFRot_* zQoYm`ci9VYyK?^kyx=650H*woF~?E!KgI8jdd2sNtUNd2o0F(`nPl?6wjSOgaRNIB z5t6w9myO*5l_vo3y~#dAqH|7aI0a@ z7Z?X5pd@D}_6y8W;UTBc9UgV5&O?UbS!X)v}if57a>8H`H?xS5_ zTQHZyxy$UqCCEFn$By;&PlSF3Xub*89qnWndUSGbwY3C1Xutqlelq0pNj*0Z0L5Wa zPVHRbRBBh3H1tO|@Q2{_wu@~A{pF#wm&+?_5K+Al@Z`64ZUJvhfyQgl;_-&Nq+59! zXM*I^)NuQ@XgJ`O*6@JYR@AVhSDZv$Rq=S^y+J{NTJa62(6OBd2bpiCRx}3ybqXUa2p4p z6X49*KMsn(L98$=GkW2%*-$!B&ZPeYhOgiCcVh z_^K~F%Z+#K5r9XMV^l+){{SclzpZh;Be=Qo&F7io%ZAk05@T@tC4(cPlbntR3=Vxq zT5y6|vx#GAwtdNE<7jndCrxcSSP0!5i0t9VJg(lnR#vX1&nA~H zn}1_#vf^k+Xe2J&oxpm4Mo$1>cg0Ezmgw({qb*`_A0NIL$Ki-IKN#A^V7-q13!`SY z$jPzUBYei4LlRh%o=NCGrczd2iP0 z;@;*RE^yJtkxu9eE8&|Uj@)kT#a`CDcP7(4#+j(ZruH?4Ta}T%+iX>kwi_EpS$e z9&Jtwxuk2D?d9Z!0OSlhp(}xpTC~?O>20yM;SFn8*DWpeD+?=qB`0%p2>$?9vL^ok zosT>ntH3-g!NIJJdMxX) z-&x0hHIcn&B2c1PB4i+q*>7xRN4*+cm!2h-=GJ{le$S>yC9RaUQihSkuH^H3jjf!k z9OX|O*Fj-va~`E0q7BZX%&|xyj`&Ax3D211oQB4zZCeDue5t@ zASyJPt;)`~$j#)Wh&G2-Rs%)50{Mxpuq%^HFY0XN9A3jg~3_Y|5i558N5#8prUyhoShB zPSx+=xoeG9c_x6)%;d7E+y>G{2F;@b70pq&N!wzauV}|}ud&hXQ0ee#nozpDdz*bo z+-wm?0VO4P<=xe`WMpUWpL)je)|YqTe~H>gt7mG~>vt5ZJa&J*f;Jf_i;baA%*P}W zdsa@pe&5(X4>f%*GqR+?t`wS7u03(4yh2-?k9rY5=;?JjL8V!ADH>a%*&L( zIRKDA=QYxJ%feQ^4AgA(&j)HS$z?j1lE&q?rNL6C1+&9<83&;q0LCjNzlrhY+oGkk zPSF7?B1%Xb#xbA08j?nO^HJ#9#g4Ccb!~W&X(3{R?DEF#D$5xYIxxy$WGfu?AdYwy z30VruW3aH)Y&=PQb0pfBwsncFA&^e6eU0`udi4XIFhz*OK&^$eNd8ZpK z8f%ZUTU)@4VtaxJSxWJ>a-@YP3JK0nNVP8xY5p6V!q?O35KfnOu_Ws(Ow%icm9Ua@ zEC^Lx0B~`hGCR)@-&pvM#d0A2(S0vNvGWC-P&}%)b8d|StYDB*HDl;J(bBbxy0a6G zrCkSGi@>*6*4I|^tZY>nTA`VcbNkJslDx3unQ`GQGsPEIdZw4C5vQATBh3ZDHqR+= zOO!kYRS)UQocA@v%*N?_6|DGsQfX(iyq8bZ>@Kea;iGs_Ou4wF23 zzN;PTYBrjB-@_{35c?w&7S0_(CuuqRz;VwRspaK&MQ)C|SX=uR>s7eacFSoP`y)E- zXN0iD37{{TIgJgS@=5HLF9G{w5S@g|10GM6*$^HN^ugPqv~;~XDeqorZ$($B1Fml{5% zliq7~_kdg8#QR=YcqB*;K|lu}_27aD$m~2VVlM^ep4LmcINCfBQN_s^gj{=yo}E)F8dqkhWMF)IA#R(7z5j=IOeysZwtq&>UNWBfJ3M&w31y| zgBV~z0UdjRk@;kgNbOJBJR>HXsOfTv!%XOiNi5*~^k)05o-jzkC$&}Z=DR+xrY4bd z6qY)Ga|=%{04h_JD~+XrILPh}4Na6?!u`tLCh$^fej~UStpmNJp{?CU03kqJbt{}; zf!L2quct$ItX=5$32g&jUBt*^ZdcA21$T8Han9k$&AQxco%g{e`6e0NAs`a+B%bFIs|{@^?1b03?DlgV^;T0s_}HdtnvMsXeBhD$fD{{{U!{h~h!~ zOnPB(Ks`@RmCE=-;`XuPtvU@eR)!rPT!oqo+lOGOI;$0DQON)i^9=Aw8OJrNeRch- z5B7GOxM`cR@)3zO2mbN@0AO|@-sDrr^eEN>mbzMs1O#30Y z631`zkO5U5hw6O?>0Dlm2lk!S)}yFM@><(`flhJB`=ECu;1B-*Rd;ZSJUJw~ZlDCx z#y7=&7ctC-Ad}Y)K3tC3GJ%fcMYDxx}OW)Tf^cVD#uV+7fZg6&w@!CC1g9C zLpK}@XAR$B&rF^!Jv!$4Demo~k#!jD*L?1F1}y4^S2zJ&splOqbIIZ_i@qSd({D6; zTL+dcOIFk8OG~>(Qm|b>45-8&ys#feIj!1U{JjjhwA5$qEAgXsvGA6G8{F%+pXloy zxefMb2Wj%;AH&~~$G14}?}tADZ*{k8TPufEn=$HotXsE8r1JzH-cmr^`RA~}IqSX_ zcr0Jp%X6t}pKQ3fQE_{I8Jc+@U_W&jVUldq^o8@&beqQ}O`5b#1=%Xa1 zb15sF{hTf>E+KLb$z({(VT!Qx4#FF-#yH1%mqIs?-;0UXDOOhkwWQ+lDGk{w^UI!ojeggjhZE7}prli`(j5NCo13I;o5nI2QVe-^+ zT3iFTHhy1UUOJMDn{9-hm5ph2i#xdGTPr*J$>4AdXZLLwWy+i!a7B10?GvY_sqpJa z)*!Z$>KjRXxtiiO5-;A1e+L{gj&p;-=DU@)kU< zzP;8i8f)~qYkw+I3p0=aeh*A3AQ8}m(-lWdxtqv~A>x%6u5eiXT-2wj^YtmZc1-P~ zwNtiecU!zfZIMn2w@^VGitM}r;;8&5D?GLk$po@_lS=>*%FV_}=os)i;QQB@!>H;u z>$&3J2=~b!g>BmFG0z6_n^T~{>V1VbW~^N*vZU`8dcVY OpenCV 2.0 + + *Author:* |Author_MarvinS| + + Read common GIS Raster and DEM files to display and manipulate geographic data. + + =============== ====================================================== + + .. |hGDAL_IO| image:: images/gdal-io.jpg + :height: 90pt + :width: 90pt + + .. raw:: latex @@ -75,3 +95,4 @@ This section contains valuable tutorials about how to read/save your image/video ../trackbar/trackbar ../video-input-psnr-ssim/video-input-psnr-ssim ../video-write/video-write + ../raster-gdal/raster_io_gdal diff --git a/modules/highgui/CMakeLists.txt b/modules/highgui/CMakeLists.txt index f4a19cffe6..71975ce488 100644 --- a/modules/highgui/CMakeLists.txt +++ b/modules/highgui/CMakeLists.txt @@ -50,6 +50,11 @@ if(HAVE_OPENEXR) list(APPEND GRFMT_LIBS ${OPENEXR_LIBRARIES}) endif() +if(HAVE_GDAL) + include_directories(SYSTEM ${GDAL_INCLUDE_DIR}) + list(APPEND GRFMT_LIBS ${GDAL_LIBRARY}) +endif() + file(GLOB grfmt_hdrs src/grfmt*.hpp) file(GLOB grfmt_srcs src/grfmt*.cpp) list(APPEND grfmt_hdrs src/bitstrm.hpp) diff --git a/modules/highgui/include/opencv2/highgui.hpp b/modules/highgui/include/opencv2/highgui.hpp index f05825f784..f1ca5e0c1d 100644 --- a/modules/highgui/include/opencv2/highgui.hpp +++ b/modules/highgui/include/opencv2/highgui.hpp @@ -212,7 +212,8 @@ enum { IMREAD_UNCHANGED = -1, // 8bit, color or not IMREAD_GRAYSCALE = 0, // 8bit, gray IMREAD_COLOR = 1, // ?, color IMREAD_ANYDEPTH = 2, // any depth, ? - IMREAD_ANYCOLOR = 4 // ?, any color + IMREAD_ANYCOLOR = 4, // ?, any color + IMREAD_LOAD_GDAL = 8 // Use gdal driver }; enum { IMWRITE_JPEG_QUALITY = 1, diff --git a/modules/highgui/src/grfmt_gdal.cpp b/modules/highgui/src/grfmt_gdal.cpp new file mode 100644 index 0000000000..f172f6f9aa --- /dev/null +++ b/modules/highgui/src/grfmt_gdal.cpp @@ -0,0 +1,560 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// Intel License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000, Intel Corporation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of Intel Corporation may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ +#include "grfmt_gdal.hpp" + +#ifdef HAVE_GDAL + +/// C++ Standard Libraries +#include +#include +#include + + +namespace cv{ + + +/** + * Convert GDAL Palette Interpretation to OpenCV Pixel Type +*/ +int gdalPaletteInterpretation2OpenCV( GDALPaletteInterp const& paletteInterp, GDALDataType const& gdalType ){ + + switch( paletteInterp ){ + + /// GRAYSCALE + case GPI_Gray: + if( gdalType == GDT_Byte ){ return CV_8UC1; } + if( gdalType == GDT_UInt16 ){ return CV_16UC1; } + if( gdalType == GDT_Int16 ){ return CV_16SC1; } + if( gdalType == GDT_UInt32 ){ return CV_32SC1; } + if( gdalType == GDT_Int32 ){ return CV_32SC1; } + if( gdalType == GDT_Float32 ){ return CV_32FC1; } + if( gdalType == GDT_Float64 ){ return CV_64FC1; } + return -1; + + /// RGB + case GPI_RGB: + if( gdalType == GDT_Byte ){ return CV_8UC1; } + if( gdalType == GDT_UInt16 ){ return CV_16UC3; } + if( gdalType == GDT_Int16 ){ return CV_16SC3; } + if( gdalType == GDT_UInt32 ){ return CV_32SC3; } + if( gdalType == GDT_Int32 ){ return CV_32SC3; } + if( gdalType == GDT_Float32 ){ return CV_32FC3; } + if( gdalType == GDT_Float64 ){ return CV_64FC3; } + return -1; + + + /// otherwise + default: + return -1; + + } +} + +/** + * Convert gdal type to opencv type +*/ +int gdal2opencv( const GDALDataType& gdalType, const int& channels ){ + + switch( gdalType ){ + + /// UInt8 + case GDT_Byte: + if( channels == 1 ){ return CV_8UC1; } + if( channels == 3 ){ return CV_8UC3; } + if( channels == 4 ){ return CV_8UC4; } + return -1; + + /// UInt16 + case GDT_UInt16: + if( channels == 1 ){ return CV_16UC1; } + if( channels == 3 ){ return CV_16UC3; } + if( channels == 4 ){ return CV_16UC4; } + return -1; + + /// Int16 + case GDT_Int16: + if( channels == 1 ){ return CV_16SC1; } + if( channels == 3 ){ return CV_16SC3; } + if( channels == 4 ){ return CV_16SC4; } + return -1; + + /// UInt32 + case GDT_UInt32: + case GDT_Int32: + if( channels == 1 ){ return CV_32SC1; } + if( channels == 3 ){ return CV_32SC3; } + if( channels == 4 ){ return CV_32SC4; } + return -1; + + default: + std::cout << "Unknown GDAL Data Type" << std::endl; + std::cout << "Type: " << GDALGetDataTypeName(gdalType) << std::endl; + return -1; + } + + return -1; +} + + +std::string GetOpenCVTypeName( const int& type ){ + + switch(type){ + case CV_8UC1: + return "CV_8UC1"; + case CV_8UC3: + return "CV_8UC3"; + case CV_8UC4: + return "CV_8UC4"; + case CV_16UC1: + return "CV_16UC1"; + case CV_16UC3: + return "CV_16UC3"; + case CV_16UC4: + return "CV_16UC4"; + case CV_16SC1: + return "CV_16SC1"; + case CV_16SC3: + return "CV_16SC3"; + case CV_16SC4: + return "CV_16SC4"; + default: + return "Unknown"; + } + return "Unknown"; +} + + +/** + * GDAL Decoder Constructor +*/ +GdalDecoder::GdalDecoder(){ + + + // set a dummy signature + m_signature="0"; + for( size_t i=0; i<160; i++ ){ + m_signature += "0"; + } + + /// Register the driver + GDALAllRegister(); + + m_driver = NULL; + m_dataset = NULL; +} + +/** + * GDAL Decoder Destructor +*/ +GdalDecoder::~GdalDecoder(){ + + + if( m_dataset != NULL ){ + close(); + } +} + +/** + * Convert data range +*/ +double range_cast( const GDALDataType& gdalType, const int& cvDepth, const double& value ){ + + // uint8 -> uint8 + if( gdalType == GDT_Byte && cvDepth == CV_8U ){ + return value; + } + // uint8 -> uint16 + if( gdalType == GDT_Byte && (cvDepth == CV_16U || cvDepth == CV_16S)){ + return (value*256); + } + + // uint8 -> uint32 + if( gdalType == GDT_Byte && (cvDepth == CV_32F || cvDepth == CV_32S)){ + return (value*16777216); + } + + // int16 -> uint8 + if( (gdalType == GDT_UInt16 || gdalType == GDT_Int16) && cvDepth == CV_8U ){ + return std::floor(value/256.0); + } + + // int16 -> int16 + if( (gdalType == GDT_UInt16 || gdalType == GDT_Int16) && + ( cvDepth == CV_16U || cvDepth == CV_16S )){ + return value; + } + + std::cout << GDALGetDataTypeName( gdalType ) << std::endl; + std::cout << "warning: unknown range cast requested." << std::endl; + return (value); +} + + +/** + * There are some better mpl techniques for doing this. +*/ +void write_pixel( const double& pixelValue, + const GDALDataType& gdalType, + const int& gdalChannels, + Mat& image, + const int& row, + const int& col, + const int& channel ){ + + // convert the pixel + double newValue = range_cast(gdalType, image.depth(), pixelValue ); + + // input: 1 channel, output: 1 channel + if( gdalChannels == 1 && image.channels() == 1 ){ + if( image.depth() == CV_8U ){ image.at(row,col) = newValue; } + else if( image.depth() == CV_16U ){ image.at(row,col) = newValue; } + else if( image.depth() == CV_16S ){ image.at(row,col) = newValue; } + else if( image.depth() == CV_32S ){ image.at(row,col) = newValue; } + else if( image.depth() == CV_32F ){ image.at(row,col) = newValue; } + else if( image.depth() == CV_64F ){ image.at(row,col) = newValue; } + else{ throw std::runtime_error("Unknown image depth, gdal: 1, img: 1"); } + } + + // input: 1 channel, output: 3 channel + else if( gdalChannels == 1 && image.channels() == 3 ){ + if( image.depth() == CV_8U ){ image.at(row,col) = Vec3b(newValue,newValue,newValue); } + else if( image.depth() == CV_16U ){ image.at(row,col) = Vec3s(newValue,newValue,newValue); } + else if( image.depth() == CV_16S ){ image.at(row,col) = Vec3s(newValue,newValue,newValue); } + else if( image.depth() == CV_32S ){ image.at(row,col) = Vec3i(newValue,newValue,newValue); } + else if( image.depth() == CV_32F ){ image.at(row,col) = Vec3f(newValue,newValue,newValue); } + else if( image.depth() == CV_64F ){ image.at(row,col) = Vec3d(newValue,newValue,newValue); } + else{ throw std::runtime_error("Unknown image depth, gdal:1, img: 3"); } + } + + // input: 3 channel, output: 1 channel + else if( gdalChannels == 3 && image.channels() == 1 ){ + if( image.depth() == CV_8U ){ image.at(row,col) += (newValue/3.0); } + else{ throw std::runtime_error("Unknown image depth, gdal:3, img: 1"); } + } + + // input: 4 channel, output: 1 channel + else if( gdalChannels == 4 && image.channels() == 1 ){ + if( image.depth() == CV_8U ){ image.at(row,col) = newValue; } + else{ throw std::runtime_error("Unknown image depth, gdal: 4, image: 1"); } + } + + // input: 3 channel, output: 3 channel + else if( gdalChannels == 3 && image.channels() == 3 ){ + if( image.depth() == CV_8U ){ image.at(row,col)[channel] = newValue; } + else if( image.depth() == CV_16U ){ image.at(row,col)[channel] = newValue; } + else if( image.depth() == CV_16S ){ image.at(row,col)[channel] = newValue; } + else if( image.depth() == CV_32S ){ image.at(row,col)[channel] = newValue; } + else if( image.depth() == CV_32F ){ image.at(row,col)[channel] = newValue; } + else if( image.depth() == CV_64F ){ image.at(row,col)[channel] = newValue; } + else{ throw std::runtime_error("Unknown image depth, gdal: 3, image: 3"); } + } + + // input: 4 channel, output: 3 channel + else if( gdalChannels == 4 && image.channels() == 3 ){ + if( channel >= 4 ){ return; } + else if( image.depth() == CV_8U && channel < 4 ){ image.at(row,col)[channel] = newValue; } + else if( image.depth() == CV_16U && channel < 4 ){ image.at(row,col)[channel] = newValue; } + else if( image.depth() == CV_16S && channel < 4 ){ image.at(row,col)[channel] = newValue; } + else if( image.depth() == CV_32S && channel < 4 ){ image.at(row,col)[channel] = newValue; } + else if( image.depth() == CV_32F && channel < 4 ){ image.at(row,col)[channel] = newValue; } + else if( image.depth() == CV_64F && channel < 4 ){ image.at(row,col)[channel] = newValue; } + else{ throw std::runtime_error("Unknown image depth, gdal: 4, image: 3"); } + } + + // input: 4 channel, output: 4 channel + else if( gdalChannels == 4 && image.channels() == 4 ){ + if( image.depth() == CV_8U ){ image.at(row,col)[channel] = newValue; } + else{ throw std::runtime_error("Unknown image depth, gdal: 4, image: 4"); } + } + + // otherwise, throw an error + else{ + throw std::runtime_error("error: can't convert types."); + } + +} + + +void write_ctable_pixel( const double& pixelValue, + const GDALDataType& gdalType, + GDALColorTable const* gdalColorTable, + Mat& image, + const int& y, + const int& x, + const int& c ){ + + if( gdalColorTable == NULL ){ + write_pixel( pixelValue, gdalType, 1, image, y, x, c ); + } + + // if we are Grayscale, then do a straight conversion + if( gdalColorTable->GetPaletteInterpretation() == GPI_Gray ){ + write_pixel( pixelValue, gdalType, 1, image, y, x, c ); + } + + // if we are rgb, then convert here + else if( gdalColorTable->GetPaletteInterpretation() == GPI_RGB ){ + + // get the pixel + short r = gdalColorTable->GetColorEntry( (int)pixelValue )->c1; + short g = gdalColorTable->GetColorEntry( (int)pixelValue )->c2; + short b = gdalColorTable->GetColorEntry( (int)pixelValue )->c3; + short a = gdalColorTable->GetColorEntry( (int)pixelValue )->c4; + + write_pixel( r, gdalType, 4, image, y, x, 2 ); + write_pixel( g, gdalType, 4, image, y, x, 1 ); + write_pixel( b, gdalType, 4, image, y, x, 0 ); + if( image.channels() > 3 ){ + write_pixel( a, gdalType, 4, image, y, x, 1 ); + } + } + + // otherwise, set zeros + else{ + write_pixel( pixelValue, gdalType, 1, image, y, x, c ); + } +} + + + +/** + * read data +*/ +bool GdalDecoder::readData( Mat& img ){ + + + // make sure the image is the proper size + if( img.size().height != m_height ){ + return false; + } + if( img.size().width != m_width ){ + return false; + } + + // make sure the raster is alive + if( m_dataset == NULL || m_driver == NULL ){ + return false; + } + + // set the image to zero + img = 0; + + + // iterate over each raster band + // note that OpenCV does bgr rather than rgb + int nChannels = m_dataset->GetRasterCount(); + GDALColorTable* gdalColorTable = NULL; + if( m_dataset->GetRasterBand(1)->GetColorTable() != NULL ){ + gdalColorTable = m_dataset->GetRasterBand(1)->GetColorTable(); + } + + const GDALDataType gdalType = m_dataset->GetRasterBand(1)->GetRasterDataType(); + int nRows, nCols; + + if( nChannels > img.channels() ){ + nChannels = img.channels(); + } + + for( int c = 0; cGetRasterBand(c+1); + + // make sure the image band has the same dimensions as the image + if( band->GetXSize() != m_width || band->GetYSize() != m_height ){ return false; } + + // grab the raster size + nRows = band->GetYSize(); + nCols = band->GetXSize(); + + // create a temporary scanline pointer to store data + double* scanline = new double[nCols]; + + // iterate over each row and column + for( int y=0; yRasterIO( GF_Read, 0, y, nCols, 1, scanline, nCols, 1, GDT_Float64, 0, 0); + + // set inside the image + for( int x=0; xGetRasterCount() <= 0 ){ + return false; + } + + //extract the driver infomation + m_driver = m_dataset->GetDriver(); + + // if the driver failed, then exit + if( m_driver == NULL ){ + return false; + } + + + // get the image dimensions + m_width = m_dataset->GetRasterXSize(); + m_height= m_dataset->GetRasterYSize(); + + // make sure we have at least one band/channel + if( m_dataset->GetRasterCount() <= 0 ){ + return false; + } + + // check if we have a color palette + int tempType; + if( m_dataset->GetRasterBand(1)->GetColorInterpretation() == GCI_PaletteIndex ){ + + // remember that we have a color palette + hasColorTable = true; + + // if the color tables does not exist, then we failed + if( m_dataset->GetRasterBand(1)->GetColorTable() == NULL ){ + return false; + } + + // otherwise, get the pixeltype + else{ + // convert the palette interpretation to opencv type + tempType = gdalPaletteInterpretation2OpenCV( m_dataset->GetRasterBand(1)->GetColorTable()->GetPaletteInterpretation(), + m_dataset->GetRasterBand(1)->GetRasterDataType() ); + + if( tempType == -1 ){ + return false; + } + m_type = tempType; + } + + } + + // otherwise, we have standard channels + else{ + + // remember that we don't have a color table + hasColorTable = false; + + // convert the datatype to opencv + tempType = gdal2opencv( m_dataset->GetRasterBand(1)->GetRasterDataType(), m_dataset->GetRasterCount() ); + if( tempType == -1 ){ + return false; + } + m_type = tempType; + } + + return true; +} + +/** + * Close the module +*/ +void GdalDecoder::close(){ + + + GDALClose((GDALDatasetH)m_dataset); + m_dataset = NULL; + m_driver = NULL; +} + +/** + * Create a new decoder +*/ +ImageDecoder GdalDecoder::newDecoder()const{ + return makePtr(); +} + +/** + * Test the file signature +*/ +bool GdalDecoder::checkSignature( const String& signature )const{ + + + // look for NITF + std::string str = signature.c_str(); + if( str.substr(0,4).find("NITF") != std::string::npos ){ + return true; + } + + // look for DTED + if( str.substr(140,4) == "DTED" ){ + return true; + } + + return false; +} + +} /// End of cv Namespace + +#endif /**< End of HAVE_GDAL Definition */ diff --git a/modules/highgui/src/grfmt_gdal.hpp b/modules/highgui/src/grfmt_gdal.hpp new file mode 100644 index 0000000000..b2cd224467 --- /dev/null +++ b/modules/highgui/src/grfmt_gdal.hpp @@ -0,0 +1,160 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// Intel License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000, Intel Corporation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of Intel Corporation may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef __GRFMT_GDAL_HPP__ +#define __GRFMT_GDAL_HPP__ + +/// Macro to make sure we specified GDAL in CMake +#ifdef HAVE_GDAL + +/// C++ Libraries +#include + +/// OpenCV Libraries +#include "grfmt_base.hpp" +#include "precomp.hpp" + +/// Geospatial Data Abstraction Library +#include +#include +#include + + +/// Start of CV Namespace +namespace cv { + +/** + * Convert GDAL Palette Interpretation to OpenCV Pixel Type +*/ +int gdalPaletteInterpretation2OpenCV( GDALPaletteInterp const& paletteInterp, + GDALDataType const& gdalType ); + +/** + * Convert a GDAL Raster Type to OpenCV Type +*/ +int gdal2opencv( const GDALDataType& gdalType, const int& channels ); + +/** + * Write an image to pixel +*/ +void write_pixel( const double& pixelValue, + GDALDataType const& gdalType, + const int& gdalChannels, + Mat& image, + const int& row, + const int& col, + const int& channel ); + +/** + * Write a color table pixel to the image +*/ +void write_ctable_pixel( const double& pixelValue, + const GDALDataType& gdalType, + const GDALColorTable* gdalColorTable, + Mat& image, + const int& y, + const int& x, + const int& c ); + +/** + * Loader for GDAL +*/ +class GdalDecoder : public BaseImageDecoder{ + + public: + + /** + * Default Constructor + */ + GdalDecoder(); + + /** + * Destructor + */ + ~GdalDecoder(); + + /** + * Read image data + */ + bool readData( Mat& img ); + + /** + * Read the image header + */ + bool readHeader(); + + /** + * Close the module + */ + void close(); + + /** + * Create a new decoder + */ + ImageDecoder newDecoder() const; + + /** + * Test the file signature + * + * In general, this should be avoided as the user should specifically request GDAL. + * The reason is that GDAL tends to overlap with other image formats and it is probably + * safer to use other formats first. + */ + virtual bool checkSignature( const String& signature ) const; + + protected: + + /// GDAL Dataset + GDALDataset* m_dataset; + + /// GDAL Driver + GDALDriver* m_driver; + + /// Check if we are reading from a color table + bool hasColorTable; + +}; /// End of GdalDecoder Class + +} /// End of Namespace cv + +#endif/*HAVE_GDAL*/ + +#endif/*__GRFMT_GDAL_HPP__*/ diff --git a/modules/highgui/src/grfmts.hpp b/modules/highgui/src/grfmts.hpp index 799a4758a5..c9e31530a8 100644 --- a/modules/highgui/src/grfmts.hpp +++ b/modules/highgui/src/grfmts.hpp @@ -53,5 +53,6 @@ #include "grfmt_exr.hpp" #include "grfmt_webp.hpp" #include "grfmt_hdr.hpp" +#include "grfmt_gdal.hpp" #endif/*_GRFMTS_H_*/ diff --git a/modules/highgui/src/loadsave.cpp b/modules/highgui/src/loadsave.cpp index cdcaa23e5d..bb00869ee1 100644 --- a/modules/highgui/src/loadsave.cpp +++ b/modules/highgui/src/loadsave.cpp @@ -55,12 +55,22 @@ namespace cv { +/** + * @struct ImageCodecInitializer + * + * Container which stores the registered codecs to be used by OpenCV +*/ struct ImageCodecInitializer { + /** + * Default Constructor for the ImageCodeInitializer + */ ImageCodecInitializer() { + /// BMP Support decoders.push_back( makePtr() ); encoders.push_back( makePtr() ); + decoders.push_back( makePtr() ); encoders.push_back( makePtr() ); #ifdef HAVE_JPEG @@ -91,6 +101,11 @@ struct ImageCodecInitializer decoders.push_back( makePtr() ); encoders.push_back( makePtr() ); #endif + + #ifdef HAVE_GDAL + /// Attach the GDAL Decoder + decoders.push_back( makePtr() ); + #endif/*HAVE_GDAL*/ } std::vector decoders; @@ -99,29 +114,45 @@ struct ImageCodecInitializer static ImageCodecInitializer codecs; -static ImageDecoder findDecoder( const String& filename ) -{ +/** + * Find the decoders + * + * @param[in] filename File to search + * + * @return Image decoder to parse image file. +*/ +static ImageDecoder findDecoder( const String& filename ) { + size_t i, maxlen = 0; + + /// iterate through list of registered codecs for( i = 0; i < codecs.decoders.size(); i++ ) { size_t len = codecs.decoders[i]->signatureLength(); maxlen = std::max(maxlen, len); } + /// Open the file FILE* f= fopen( filename.c_str(), "rb" ); + + /// in the event of a failure, return an empty image decoder if( !f ) return ImageDecoder(); + + // read the file signature String signature(maxlen, ' '); maxlen = fread( (void*)signature.c_str(), 1, maxlen, f ); fclose(f); signature = signature.substr(0, maxlen); + /// compare signature against all decoders for( i = 0; i < codecs.decoders.size(); i++ ) { if( codecs.decoders[i]->checkSignature(signature) ) return codecs.decoders[i]->newDecoder(); } + /// If no decoder was found, return base type return ImageDecoder(); } @@ -193,6 +224,18 @@ static ImageEncoder findEncoder( const String& _ext ) enum { LOAD_CVMAT=0, LOAD_IMAGE=1, LOAD_MAT=2 }; +/** + * Read an image into memory and return the information + * + * @param[in] filename File to load + * @param[in] flags Flags + * @param[in] hdrtype { LOAD_CVMAT=0, + * LOAD_IMAGE=1, + * LOAD_MAT=2 + * } + * @param[in] mat Reference to C++ Mat object (If LOAD_MAT) + * +*/ static void* imread_( const String& filename, int flags, int hdrtype, Mat* mat=0 ) { @@ -200,16 +243,37 @@ imread_( const String& filename, int flags, int hdrtype, Mat* mat=0 ) CvMat *matrix = 0; Mat temp, *data = &temp; - ImageDecoder decoder = findDecoder(filename); - if( !decoder ) + /// Search for the relevant decoder to handle the imagery + ImageDecoder decoder; + +#ifdef HAVE_GDAL + if( (flags & IMREAD_LOAD_GDAL) == IMREAD_LOAD_GDAL ){ + decoder = GdalDecoder().newDecoder(); + }else{ +#endif + decoder = findDecoder(filename); +#ifdef HAVE_GDAL + } +#endif + + /// if no decoder was found, return nothing. + if( !decoder ){ return 0; + } + + /// set the filename in the driver decoder->setSource(filename); - if( !decoder->readHeader() ) + + // read the header to make sure it succeeds + if( !decoder->readHeader() ) return 0; + + // established the required input image size CvSize size; size.width = decoder->width(); size.height = decoder->height(); + // grab the decoded type int type = decoder->type(); if( flags != -1 ) { @@ -242,6 +306,7 @@ imread_( const String& filename, int flags, int hdrtype, Mat* mat=0 ) temp = cvarrToMat(image); } + // read the image data if( !decoder->readData( *data )) { cvReleaseImage( &image ); @@ -255,10 +320,23 @@ imread_( const String& filename, int flags, int hdrtype, Mat* mat=0 ) hdrtype == LOAD_IMAGE ? (void*)image : (void*)mat; } +/** + * Read an image + * + * This function merely calls the actual implementation above and returns itself. + * + * @param[in] filename File to load + * @param[in] flags Flags you wish to set. +*/ Mat imread( const String& filename, int flags ) { + /// create the basic container Mat img; + + /// load the data imread_( filename, flags, LOAD_MAT, &img ); + + /// return a reference to the data return img; } diff --git a/samples/cpp/tutorial_code/HighGUI/GDAL_IO/gdal-image.cpp b/samples/cpp/tutorial_code/HighGUI/GDAL_IO/gdal-image.cpp new file mode 100644 index 0000000000..48031fe372 --- /dev/null +++ b/samples/cpp/tutorial_code/HighGUI/GDAL_IO/gdal-image.cpp @@ -0,0 +1,229 @@ +/** + * gdal_image.cpp -- Load GIS data into OpenCV Containers using the Geospatial Data Abstraction Library +*/ + +/// OpenCV Headers +#include "opencv2/core/core.hpp" +#include "opencv2/imgproc/imgproc.hpp" +#include "opencv2/highgui/highgui.hpp" + +/// C++ Standard Libraries +#include +#include +#include +#include + +using namespace std; + + +/// define the corner points +/// Note that GDAL can natively determine this +cv::Point2d tl( -122.441017, 37.815664 ); +cv::Point2d tr( -122.370919, 37.815311 ); +cv::Point2d bl( -122.441533, 37.747167 ); +cv::Point2d br( -122.3715, 37.746814 ); + +/// determine dem corners +cv::Point2d dem_bl( -122.0, 38); +cv::Point2d dem_tr( -123.0, 37); + +/// range of the heat map colors +std::vector > color_range; + +/** + * Linear Interpolation + * p1 - Point 1 + * p2 - Point 2 + * t - Ratio from Point 1 to Point 2 +*/ +cv::Point2d lerp( cv::Point2d const& p1, cv::Point2d const& p2, const double& t ){ + return cv::Point2d( ((1-t)*p1.x) + (t*p2.x), + ((1-t)*p1.y) + (t*p2.y)); +} + +/** + * Interpolate Colors +*/ +template +cv::Vec lerp( cv::Vec const& minColor, + cv::Vec const& maxColor, + double const& t ){ + + cv::Vec output; + for( int i=0; i color_range.back().second ){ + return color_range.back().first; + } + + // otherwise, find the proper starting index + int idx=0; + double t = 0; + for( int x=0; x= 0 ){ pix[0] += b; } + if( pix[1] + g < 255 && pix[1] + g >= 0 ){ pix[1] += g; } + if( pix[2] + r < 255 && pix[2] + r >= 0 ){ pix[2] += r; } +} + + +/** + * Main Function +*/ +int main( int argc, char* argv[] ){ + + /** + * Check input arguments + */ + if( argc < 3 ){ + cout << "usage: " << argv[0] << " " << endl; + return 1; + } + + /// load the image (note that we don't have the projection information. You will + /// need to load that yourself or use the full GDAL driver. The values are pre-defined + /// at the top of this file + cv::Mat image = cv::imread(argv[1], cv::IMREAD_LOAD_GDAL | cv::IMREAD_COLOR ); + + /// load the dem model + cv::Mat dem = cv::imread(argv[2], cv::IMREAD_LOAD_GDAL | cv::IMREAD_ANYDEPTH ); + + /// create our output products + cv::Mat output_dem( image.size(), CV_8UC3 ); + cv::Mat output_dem_flood( image.size(), CV_8UC3 ); + + /// for sanity sake, make sure GDAL Loads it as a signed short + if( dem.type() != CV_16SC1 ){ throw std::runtime_error("DEM image type must be CV_16SC1"); } + + /// define the color range to create our output DEM heat map + // Pair format ( Color, elevation ); Push from low to high + // Note: This would be perfect for a configuration file, but is here for a working demo. + color_range.push_back( std::pair(cv::Vec3b( 188, 154, 46), -1)); + color_range.push_back( std::pair(cv::Vec3b( 110, 220, 110), 0.25)); + color_range.push_back( std::pair(cv::Vec3b( 150, 250, 230), 20)); + color_range.push_back( std::pair(cv::Vec3b( 160, 220, 200), 75)); + color_range.push_back( std::pair(cv::Vec3b( 220, 190, 170), 100)); + color_range.push_back( std::pair(cv::Vec3b( 250, 180, 140), 200)); + + // define a minimum elevation + double minElevation = -10; + + // iterate over each pixel in the image, computing the dem point + for( int y=0; y= 0 && dem_coordinate.y >= 0 && + dem_coordinate.x < dem.cols && dem_coordinate.y < dem.rows ){ + dz = dem.at(dem_coordinate); + }else{ + dz = minElevation; + } + + // write the pixel value to the file + output_dem_flood.at(y,x) = image.at(y,x); + + // compute the color for the heat map output + cv::Vec3b actualColor = get_dem_color(dz); + output_dem.at(y,x) = actualColor; + + // show effect of a 10 meter increase in ocean levels + if( dz < 10 ){ + add_color( output_dem_flood.at(y,x), 90, 0, 0 ); + } + // show effect of a 50 meter increase in ocean levels + else if( dz < 50 ){ + add_color( output_dem_flood.at(y,x), 0, 90, 0 ); + } + // show effect of a 100 meter increase in ocean levels + else if( dz < 100 ){ + add_color( output_dem_flood.at(y,x), 0, 0, 90 ); + } + + }} + + // print our heat map + cv::imwrite( "heat-map.jpg" , output_dem ); + + // print the flooding effect image + cv::imwrite( "flooded.jpg", output_dem_flood); + + return 0; +} From 561703ca27a036dbdae935c3a55294b793d2618d Mon Sep 17 00:00:00 2001 From: Marvin Smith Date: Tue, 1 Jul 2014 17:04:28 -0700 Subject: [PATCH 049/189] Fixed the compiler warnings for the demo program. --- .../HighGUI/GDAL_IO/gdal-image.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/samples/cpp/tutorial_code/HighGUI/GDAL_IO/gdal-image.cpp b/samples/cpp/tutorial_code/HighGUI/GDAL_IO/gdal-image.cpp index 48031fe372..deb3770283 100644 --- a/samples/cpp/tutorial_code/HighGUI/GDAL_IO/gdal-image.cpp +++ b/samples/cpp/tutorial_code/HighGUI/GDAL_IO/gdal-image.cpp @@ -15,7 +15,6 @@ using namespace std; - /// define the corner points /// Note that GDAL can natively determine this cv::Point2d tl( -122.441017, 37.815664 ); @@ -30,6 +29,20 @@ cv::Point2d dem_tr( -123.0, 37); /// range of the heat map colors std::vector > color_range; + +/// List of all function prototypes +cv::Point2d lerp( const cv::Point2d&, const cv::Point2d&, const double& ); + +cv::Vec3b get_dem_color( const double& ); + +cv::Point2d world2dem( const cv::Point2d&, const cv::Size&); + +cv::Point2d pixel2world( const int&, const int&, const cv::Size& ); + +void add_color( cv::Vec3b& pix, const uchar& b, const uchar& g, const uchar& r ); + + + /** * Linear Interpolation * p1 - Point 1 @@ -73,7 +86,7 @@ cv::Vec3b get_dem_color( const double& elevation ){ // otherwise, find the proper starting index int idx=0; double t = 0; - for( int x=0; x Date: Tue, 1 Jul 2014 14:53:39 +0400 Subject: [PATCH 050/189] fix for fisheye --- modules/calib3d/test/test_fisheye.cpp | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/modules/calib3d/test/test_fisheye.cpp b/modules/calib3d/test/test_fisheye.cpp index 774364df79..1ea47ab4e1 100644 --- a/modules/calib3d/test/test_fisheye.cpp +++ b/modules/calib3d/test/test_fisheye.cpp @@ -60,8 +60,6 @@ protected: protected: std::string combine(const std::string& _item1, const std::string& _item2); - std::string combine_format(const std::string& item1, const std::string& item2, ...); - cv::Mat mergeRectification(const cv::Mat& l, const cv::Mat& r); }; @@ -427,10 +425,10 @@ TEST_F(fisheyeTest, rectify) cv::Mat rectification = mergeRectification(lundist, rundist); - cv::Mat correct = cv::imread(combine_format(datasets_repository_path, "rectification_AB_%03d.png", i)); + cv::Mat correct = cv::imread(combine(datasets_repository_path, cv::format("rectification_AB_%03d.png", i))); if (correct.empty()) - cv::imwrite(combine_format(datasets_repository_path, "rectification_AB_%03d.png", i), rectification); + cv::imwrite(combine(datasets_repository_path, cv::format("rectification_AB_%03d.png", i)), rectification); else EXPECT_MAT_NEAR(correct, rectification, 1e-10); } @@ -599,17 +597,6 @@ std::string fisheyeTest::combine(const std::string& _item1, const std::string& _ return item1 + (last != '/' ? "/" : "") + item2; } -std::string fisheyeTest::combine_format(const std::string& item1, const std::string& item2, ...) -{ - std::string fmt = combine(item1, item2); - char buffer[1 << 16]; - va_list args; - va_start( args, item2 ); - vsprintf( buffer, fmt.c_str(), args ); - va_end( args ); - return std::string(buffer); -} - cv::Mat fisheyeTest::mergeRectification(const cv::Mat& l, const cv::Mat& r) { CV_Assert(l.type() == r.type() && l.size() == r.size()); From b1ac35e14a8ddfcc184db83c52a9bd928e0310ef Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Tue, 1 Jul 2014 20:02:02 +0400 Subject: [PATCH 051/189] ocl: fix mac and superres test --- .../ocl/include/opencv2/ocl/cl_runtime/cl_runtime.hpp | 11 +++++++++++ modules/superres/test/test_superres.cpp | 10 ++++++++++ 2 files changed, 21 insertions(+) diff --git a/modules/ocl/include/opencv2/ocl/cl_runtime/cl_runtime.hpp b/modules/ocl/include/opencv2/ocl/cl_runtime/cl_runtime.hpp index 86e7ebcc39..5472e0616f 100644 --- a/modules/ocl/include/opencv2/ocl/cl_runtime/cl_runtime.hpp +++ b/modules/ocl/include/opencv2/ocl/cl_runtime/cl_runtime.hpp @@ -6,6 +6,17 @@ #if defined(HAVE_OPENCL_STATIC) #if defined __APPLE__ +// APPLE ignores CL_USE_DEPRECATED_OPENCL_1_1_APIS so use this hack: +#include +#ifdef CL_EXT_PREFIX__VERSION_1_1_DEPRECATED +#undef CL_EXT_PREFIX__VERSION_1_1_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED +#endif +#ifdef CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED +#undef CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED +#endif + #include #else #include diff --git a/modules/superres/test/test_superres.cpp b/modules/superres/test/test_superres.cpp index 5cb078f77c..14d8eaf35a 100644 --- a/modules/superres/test/test_superres.cpp +++ b/modules/superres/test/test_superres.cpp @@ -278,6 +278,16 @@ TEST_F(SuperResolution, BTVL1_GPU) #if defined(HAVE_OPENCV_OCL) && defined(HAVE_OPENCL) TEST_F(SuperResolution, BTVL1_OCL) { + try + { + const cv::ocl::DeviceInfo& dev = cv::ocl::Context::getContext()->getDeviceInfo(); + std::cout << "Device name:" << dev.deviceName << std::endl; + } + catch (...) + { + std::cout << "Device name: N/A" << std::endl; + return; // skip test + } RunTest(cv::superres::createSuperResolution_BTVL1_OCL()); } #endif From 67e23ed972ec2f8bc5451e9ba10c046d644c4bd1 Mon Sep 17 00:00:00 2001 From: Marvin Smith Date: Fri, 11 Jul 2014 07:33:42 -0700 Subject: [PATCH 052/189] Fixing double to uchar conversion warning. --- samples/cpp/tutorial_code/HighGUI/GDAL_IO/gdal-image.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/cpp/tutorial_code/HighGUI/GDAL_IO/gdal-image.cpp b/samples/cpp/tutorial_code/HighGUI/GDAL_IO/gdal-image.cpp index deb3770283..48ef254406 100644 --- a/samples/cpp/tutorial_code/HighGUI/GDAL_IO/gdal-image.cpp +++ b/samples/cpp/tutorial_code/HighGUI/GDAL_IO/gdal-image.cpp @@ -64,7 +64,7 @@ cv::Vec lerp( cv::Vec const& minColor, cv::Vec output; for( int i=0; i Date: Tue, 29 Jul 2014 11:34:39 +0400 Subject: [PATCH 053/189] Used float instead of int for CV_8U in sumTemplate --- modules/imgproc/src/opencl/match_template.cl | 28 +++++--------------- modules/imgproc/src/templmatch.cpp | 14 +++++----- 2 files changed, 13 insertions(+), 29 deletions(-) diff --git a/modules/imgproc/src/opencl/match_template.cl b/modules/imgproc/src/opencl/match_template.cl index 1919e8edd2..c6c9468e88 100644 --- a/modules/imgproc/src/opencl/match_template.cl +++ b/modules/imgproc/src/opencl/match_template.cl @@ -90,11 +90,8 @@ __kernel void calcSum(__global const uchar * srcptr, int src_step, int src_offse T src = loadpix(srcptr + src_index); tmp = convertToWT(src); -#if wdepth == 4 - accumulator = mad24(tmp, tmp, accumulator); -#else + accumulator = mad(tmp, tmp, accumulator); -#endif } if (lid < WGS2_ALIGNED) @@ -165,11 +162,9 @@ __kernel void matchTemplate_Naive_CCORR(__global const uchar * srcptr, int src_s { T temp = (T)(template[j]); T src = *(__global const T*)(srcptr + ind + j*(int)sizeof(T1)); -#if wdepth == 4 - sum = mad24(convertToWT(src), convertToWT(temp), sum); -#else - sum = mad(convertToWT(src), convertToWT(temp), sum); -#endif + + sum = mad(convertToWT(src), convertToWT(temp), sum); + } ind += src_step; template = (__global const T1 *)((__global const uchar *)template + template_step); @@ -195,12 +190,7 @@ __kernel void matchTemplate_Naive_CCORR(__global const uchar * srcptr, int src_s #pragma unroll for (int cx=0, x = x0; cx < PIX_PER_WI_X && x < dst_cols; ++cx, ++x) { - -#if wdepth == 4 - sum[cx] = mad24(convertToWT1(src[j+cx]), convertToWT1(template[j]), sum[cx]); -#else sum[cx] = mad(convertToWT1(src[j+cx]), convertToWT1(template[j]), sum[cx]); -#endif } } @@ -237,11 +227,8 @@ __kernel void matchTemplate_Naive_CCORR(__global const uchar * srcptr, int src_s { T src = loadpix(srcptr + mad24(y+i, src_step, mad24(x+j, TSIZE, src_offset))); T template = loadpix(templateptr + mad24(i, template_step, mad24(j, TSIZE, template_offset))); -#if wdepth == 4 - sum = mad24(convertToWT(src), convertToWT(template), sum); -#else + sum = mad(convertToWT(src), convertToWT(template), sum); -#endif } } @@ -296,11 +283,8 @@ __kernel void matchTemplate_Naive_SQDIFF(__global const uchar * srcptr, int src_ T template = loadpix(templateptr + mad24(i, template_step, mad24(j, TSIZE, template_offset))); value = convertToWT(src) - convertToWT(template); -#if wdepth == 4 - sum = mad24(value, value, sum); -#else + sum = mad(value, value, sum); -#endif } } diff --git a/modules/imgproc/src/templmatch.cpp b/modules/imgproc/src/templmatch.cpp index 164af425e3..b0b188be67 100644 --- a/modules/imgproc/src/templmatch.cpp +++ b/modules/imgproc/src/templmatch.cpp @@ -79,7 +79,7 @@ static bool extractFirstChannel_32F(InputArray _image, OutputArray _result, int static bool sumTemplate(InputArray _src, UMat & result) { int type = _src.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type); - int wdepth = std::max(CV_32S, depth), wtype = CV_MAKE_TYPE(wdepth, cn); + int wdepth = CV_32F, wtype = CV_MAKE_TYPE(wdepth, cn); size_t wgs = ocl::Device::getDefault().maxWorkGroupSize(); int wgs2_aligned = 1; @@ -89,10 +89,10 @@ static bool sumTemplate(InputArray _src, UMat & result) char cvt[40]; ocl::Kernel k("calcSum", ocl::imgproc::match_template_oclsrc, - format("-D CALC_SUM -D T=%s -D T1=%s -D WT=%s -D cn=%d -D convertToWT=%s -D WGS=%d -D WGS2_ALIGNED=%d -D wdepth=%d", + format("-D CALC_SUM -D T=%s -D T1=%s -D WT=%s -D cn=%d -D convertToWT=%s -D WGS=%d -D WGS2_ALIGNED=%d", ocl::typeToStr(type), ocl::typeToStr(depth), ocl::typeToStr(wtype), cn, ocl::convertTypeStr(depth, wdepth, cn, cvt), - (int)wgs, wgs2_aligned, wdepth)); + (int)wgs, wgs2_aligned)); if (k.empty()) return false; @@ -281,8 +281,8 @@ static bool matchTemplateNaive_CCORR(InputArray _image, InputArray _templ, Outpu const char* convertToWT = ocl::convertTypeStr(depth, wdepth, rated_cn, cvt1); ocl::Kernel k("matchTemplate_Naive_CCORR", ocl::imgproc::match_template_oclsrc, - format("-D CCORR -D T=%s -D T1=%s -D WT=%s -D WT1=%s -D convertToWT=%s -D convertToWT1=%s -D cn=%d -D wdepth=%d -D PIX_PER_WI_X=%d", ocl::typeToStr(type), ocl::typeToStr(depth), ocl::typeToStr(wtype1), ocl::typeToStr(wtype), - convertToWT, convertToWT1, cn, wdepth, pxPerWIx)); + format("-D CCORR -D T=%s -D T1=%s -D WT=%s -D WT1=%s -D convertToWT=%s -D convertToWT1=%s -D cn=%d -D PIX_PER_WI_X=%d", ocl::typeToStr(type), ocl::typeToStr(depth), ocl::typeToStr(wtype1), ocl::typeToStr(wtype), + convertToWT, convertToWT1, cn, pxPerWIx)); if (k.empty()) return false; @@ -358,8 +358,8 @@ static bool matchTemplateNaive_SQDIFF(InputArray _image, InputArray _templ, Outp char cvt[40]; ocl::Kernel k("matchTemplate_Naive_SQDIFF", ocl::imgproc::match_template_oclsrc, - format("-D SQDIFF -D T=%s -D T1=%s -D WT=%s -D convertToWT=%s -D cn=%d -D wdepth=%d", ocl::typeToStr(type), ocl::typeToStr(depth), - ocl::typeToStr(wtype), ocl::convertTypeStr(depth, wdepth, cn, cvt), cn, wdepth)); + format("-D SQDIFF -D T=%s -D T1=%s -D WT=%s -D convertToWT=%s -D cn=%d", ocl::typeToStr(type), ocl::typeToStr(depth), + ocl::typeToStr(wtype), ocl::convertTypeStr(depth, wdepth, cn, cvt), cn)); if (k.empty()) return false; From dc3c691c8c784b097f72f2df2b0275f734a8c321 Mon Sep 17 00:00:00 2001 From: Elena Gvozdeva Date: Tue, 29 Jul 2014 12:06:20 +0400 Subject: [PATCH 054/189] new block size for dft --- modules/imgproc/src/templmatch.cpp | 43 ++++++++++++++---------------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/modules/imgproc/src/templmatch.cpp b/modules/imgproc/src/templmatch.cpp index b0b188be67..00e61061d4 100644 --- a/modules/imgproc/src/templmatch.cpp +++ b/modules/imgproc/src/templmatch.cpp @@ -129,7 +129,6 @@ struct ConvolveBuf UMat image_block, templ_block, result_data; void create(Size image_size, Size templ_size); - static Size estimateBlockSize(Size result_size); }; void ConvolveBuf::create(Size image_size, Size templ_size) @@ -137,19 +136,26 @@ void ConvolveBuf::create(Size image_size, Size templ_size) result_size = Size(image_size.width - templ_size.width + 1, image_size.height - templ_size.height + 1); - block_size = user_block_size; - if (user_block_size.width == 0 || user_block_size.height == 0) - block_size = estimateBlockSize(result_size); - - dft_size.width = 1 << int(ceil(std::log(block_size.width + templ_size.width - 1.) / std::log(2.))); - dft_size.height = 1 << int(ceil(std::log(block_size.height + templ_size.height - 1.) / std::log(2.))); - - dft_size.width = getOptimalDFTSize(block_size.width + templ_size.width - 1); + const double blockScale = 4.5; + const int minBlockSize = 256; + + block_size.width = cvRound(result_size.width*blockScale); + block_size.width = MAX( block_size.width, minBlockSize - templ_size.width + 1 ); + block_size.width = std::min( block_size.width, result_size.width ); + block_size.height = cvRound(templ_size.height*blockScale); + block_size.height = std::max( block_size.height, minBlockSize - templ_size.height + 1 ); + block_size.height = std::min( block_size.height, result_size.height ); + + dft_size.width = MAX(getOptimalDFTSize(block_size.width + templ_size.width - 1), 2); dft_size.height = getOptimalDFTSize(block_size.height + templ_size.height - 1); + if( dft_size.width <= 0 || dft_size.height <= 0 ) + CV_Error( CV_StsOutOfRange, "the input arrays are too big" ); - // To avoid wasting time doing small DFTs - dft_size.width = std::max(dft_size.width, 512); - dft_size.height = std::max(dft_size.height, 512); + // recompute block size + block_size.width = dft_size.width - templ_size.width + 1; + block_size.width = MIN( block_size.width, result_size.width); + block_size.height = dft_size.height - templ_size.height + 1; + block_size.height = MIN( block_size.height, result_size.height ); image_block.create(dft_size, CV_32F); templ_block.create(dft_size, CV_32F); @@ -164,21 +170,12 @@ void ConvolveBuf::create(Size image_size, Size templ_size) block_size.height = std::min(dft_size.height - templ_size.height + 1, result_size.height); } -Size ConvolveBuf::estimateBlockSize(Size result_size) -{ - int width = (result_size.width + 2) / 3; - int height = (result_size.height + 2) / 3; - width = std::min(width, result_size.width); - height = std::min(height, result_size.height); - return Size(width, height); -} - static bool convolve_dft(InputArray _image, InputArray _templ, OutputArray _result) { ConvolveBuf buf; CV_Assert(_image.type() == CV_32F); CV_Assert(_templ.type() == CV_32F); - + buf.create(_image.size(), _templ.size()); _result.create(buf.result_size, CV_32F); @@ -202,7 +199,7 @@ static bool convolve_dft(InputArray _image, InputArray _templ, OutputArray _resu copyMakeBorder(templ_roi, templ_block, 0, templ_block.rows - templ_roi.rows, 0, templ_block.cols - templ_roi.cols, BORDER_ISOLATED); - dft(templ_block, templ_spect, 0); + dft(templ_block, templ_spect, 0, templ.rows); // Process all blocks of the result matrix for (int y = 0; y < result.rows; y += block_size.height) From dbb5993d13e8542e0f6cca3dcf2d2430ff9037e8 Mon Sep 17 00:00:00 2001 From: Elena Gvozdeva Date: Tue, 29 Jul 2014 12:07:21 +0400 Subject: [PATCH 055/189] added dft for all platforms --- modules/imgproc/src/templmatch.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/modules/imgproc/src/templmatch.cpp b/modules/imgproc/src/templmatch.cpp index 00e61061d4..aec83b74cb 100644 --- a/modules/imgproc/src/templmatch.cpp +++ b/modules/imgproc/src/templmatch.cpp @@ -110,12 +110,8 @@ static bool sumTemplate(InputArray _src, UMat & result) static bool useNaive(Size size) { - if (!ocl::Device::getDefault().isIntel()) - return true; - int dft_size = 18; return size.height < dft_size && size.width < dft_size; - } struct ConvolveBuf @@ -138,7 +134,7 @@ void ConvolveBuf::create(Size image_size, Size templ_size) const double blockScale = 4.5; const int minBlockSize = 256; - + block_size.width = cvRound(result_size.width*blockScale); block_size.width = MAX( block_size.width, minBlockSize - templ_size.width + 1 ); block_size.width = std::min( block_size.width, result_size.width ); @@ -175,7 +171,7 @@ static bool convolve_dft(InputArray _image, InputArray _templ, OutputArray _resu ConvolveBuf buf; CV_Assert(_image.type() == CV_32F); CV_Assert(_templ.type() == CV_32F); - + buf.create(_image.size(), _templ.size()); _result.create(buf.result_size, CV_32F); From ba3783d205fa2860ceb0fea0cba5f6c95653b0e2 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Tue, 29 Jul 2014 23:54:23 +0400 Subject: [PATCH 056/189] initial commit; ml has been refactored; it compiles and the tests run well; some other modules, apps and samples do not compile; to be fixed --- modules/core/src/lapack.cpp | 12 +- modules/ml/include/opencv2/ml.hpp | 2292 ++-------- modules/ml/src/ann_mlp.cpp | 2321 +++++----- modules/ml/src/boost.cpp | 2213 ++-------- modules/ml/src/cnn.cpp | 1675 -------- modules/ml/src/data.cpp | 1413 +++--- modules/ml/src/em.cpp | 1138 +++-- modules/ml/src/ertrees.cpp | 1859 -------- modules/ml/src/estimate.cpp | 728 ---- modules/ml/src/gbt.cpp | 5 + modules/ml/src/inner_functions.cpp | 1861 +------- modules/ml/src/knearest.cpp | 588 +-- modules/ml/src/ml_init.cpp | 63 - modules/ml/src/nbayes.cpp | 863 ++-- modules/ml/src/precomp.hpp | 504 +-- modules/ml/src/rtrees.cpp | 1015 ++--- modules/ml/src/svm.cpp | 4218 ++++++++---------- modules/ml/src/testset.cpp | 149 +- modules/ml/src/tree.cpp | 4744 ++++++--------------- modules/ml/test/test_emknearestkmeans.cpp | 110 +- modules/ml/test/test_gbttest.cpp | 4 + modules/ml/test/test_mltests.cpp | 9 +- modules/ml/test/test_mltests2.cpp | 637 +-- modules/ml/test/test_precomp.hpp | 30 +- modules/ml/test/test_save_load.cpp | 81 +- 25 files changed, 7530 insertions(+), 21002 deletions(-) delete mode 100644 modules/ml/src/cnn.cpp delete mode 100644 modules/ml/src/ertrees.cpp delete mode 100644 modules/ml/src/estimate.cpp delete mode 100644 modules/ml/src/ml_init.cpp diff --git a/modules/core/src/lapack.cpp b/modules/core/src/lapack.cpp index f6bc7c88c9..8895a56593 100644 --- a/modules/core/src/lapack.cpp +++ b/modules/core/src/lapack.cpp @@ -1557,13 +1557,17 @@ static void _SVDcompute( InputArray _aarr, OutputArray _w, { if( !at ) { - transpose(temp_u, _u); - temp_v.copyTo(_vt); + if( _u.needed() ) + transpose(temp_u, _u); + if( _vt.needed() ) + temp_v.copyTo(_vt); } else { - transpose(temp_v, _u); - temp_u.copyTo(_vt); + if( _u.needed() ) + transpose(temp_v, _u); + if( _vt.needed() ) + temp_u.copyTo(_vt); } } } diff --git a/modules/ml/include/opencv2/ml.hpp b/modules/ml/include/opencv2/ml.hpp index f13e192be8..3aa329d24e 100644 --- a/modules/ml/include/opencv2/ml.hpp +++ b/modules/ml/include/opencv2/ml.hpp @@ -7,9 +7,11 @@ // copy or use the software. // // -// Intel License Agreement +// License Agreement +// For Open Source Computer Vision Library // // Copyright (C) 2000, Intel Corporation, all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. // Third party copyrights are property of their respective owners. // // Redistribution and use in source and binary forms, with or without modification, @@ -22,7 +24,7 @@ // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // -// * The name of Intel Corporation may not be used to endorse or promote products +// * The name of the copyright holders may not be used to endorse or promote products // derived from this software without specific prior written permission. // // This software is provided by the copyright holders and contributors "as is" and @@ -45,111 +47,137 @@ # include "opencv2/core.hpp" #endif -#include "opencv2/core/core_c.h" -#include - #ifdef __cplusplus +#include #include #include -// Apple defines a check() macro somewhere in the debug headers -// that interferes with a method definiton in this header -#undef check - -/****************************************************************************************\ -* Main struct definitions * -\****************************************************************************************/ - -/* log(2*PI) */ -#define CV_LOG2PI (1.8378770664093454835606594728112) - -/* columns of matrix are training samples */ -#define CV_COL_SAMPLE 0 - -/* rows of matrix are training samples */ -#define CV_ROW_SAMPLE 1 +namespace cv +{ -#define CV_IS_ROW_SAMPLE(flags) ((flags) & CV_ROW_SAMPLE) +namespace ml +{ -struct CvVectors +/* Variable type */ +enum { - int type; - int dims, count; - CvVectors* next; - union - { - uchar** ptr; - float** fl; - double** db; - } data; + VAR_NUMERICAL =0, + VAR_ORDERED =0, + VAR_CATEGORICAL =1 }; -#if 0 -/* A structure, representing the lattice range of statmodel parameters. - It is used for optimizing statmodel parameters by cross-validation method. - The lattice is logarithmic, so must be greater then 1. */ -typedef struct CvParamLattice +enum { - double min_val; - double max_val; - double step; -} -CvParamLattice; + TEST_ERROR = 0, + TRAIN_ERROR = 1 +}; -CV_INLINE CvParamLattice cvParamLattice( double min_val, double max_val, - double log_step ) +enum { - CvParamLattice pl; - pl.min_val = MIN( min_val, max_val ); - pl.max_val = MAX( min_val, max_val ); - pl.step = MAX( log_step, 1. ); - return pl; -} + ROW_SAMPLE = 0, + COL_SAMPLE = 1 +}; -CV_INLINE CvParamLattice cvDefaultParamLattice( void ) +class CV_EXPORTS_W_MAP ParamGrid { - CvParamLattice pl = {0,0,0}; - return pl; -} -#endif +public: + ParamGrid(); + ParamGrid(double _minVal, double _maxVal, double _logStep); -/* Variable type */ -#define CV_VAR_NUMERICAL 0 -#define CV_VAR_ORDERED 0 -#define CV_VAR_CATEGORICAL 1 - -#define CV_TYPE_NAME_ML_SVM "opencv-ml-svm" -#define CV_TYPE_NAME_ML_KNN "opencv-ml-knn" -#define CV_TYPE_NAME_ML_NBAYES "opencv-ml-bayesian" -#define CV_TYPE_NAME_ML_EM "opencv-ml-em" -#define CV_TYPE_NAME_ML_BOOSTING "opencv-ml-boost-tree" -#define CV_TYPE_NAME_ML_TREE "opencv-ml-tree" -#define CV_TYPE_NAME_ML_ANN_MLP "opencv-ml-ann-mlp" -#define CV_TYPE_NAME_ML_CNN "opencv-ml-cnn" -#define CV_TYPE_NAME_ML_RTREES "opencv-ml-random-trees" -#define CV_TYPE_NAME_ML_ERTREES "opencv-ml-extremely-randomized-trees" -#define CV_TYPE_NAME_ML_GBT "opencv-ml-gradient-boosting-trees" - -#define CV_TRAIN_ERROR 0 -#define CV_TEST_ERROR 1 - -class CV_EXPORTS_W CvStatModel + CV_PROP_RW double minVal; + CV_PROP_RW double maxVal; + CV_PROP_RW double logStep; +}; + + +class CV_EXPORTS TrainData { public: - CvStatModel(); - virtual ~CvStatModel(); - + static inline float missingValue() { return FLT_MAX; } + virtual ~TrainData(); + + virtual int getLayout() const = 0; + virtual int getNTrainSamples() const = 0; + virtual int getNTestSamples() const = 0; + virtual int getNSamples() const = 0; + virtual int getNVars() const = 0; + virtual int getNAllVars() const = 0; + + virtual void getSample(InputArray varIdx, int sidx, float* buf) const = 0; + virtual Mat getSamples() const = 0; + virtual Mat getMissing() const = 0; + virtual Mat getTrainSamples(int layout=ROW_SAMPLE, + bool compressSamples=true, + bool compressVars=true) const = 0; + virtual Mat getTrainResponses() const = 0; + virtual Mat getTrainNormCatResponses() const = 0; + virtual Mat getTestResponses() const = 0; + virtual Mat getTestNormCatResponses() const = 0; + virtual Mat getResponses() const = 0; + virtual Mat getNormCatResponses() const = 0; + virtual Mat getSampleWeights() const = 0; + virtual Mat getTrainSampleWeights() const = 0; + virtual Mat getTestSampleWeights() const = 0; + virtual Mat getVarIdx() const = 0; + virtual Mat getVarType() const = 0; + virtual int getResponseType() const = 0; + virtual Mat getTrainSampleIdx() const = 0; + virtual Mat getTestSampleIdx() const = 0; + virtual void getValues(int vi, InputArray sidx, float* values) const = 0; + virtual void getNormCatValues(int vi, InputArray sidx, int* values) const = 0; + virtual Mat getDefaultSubstValues() const = 0; + + virtual int getCatCount(int vi) const = 0; + virtual Mat getClassLabels() const = 0; + + virtual Mat getCatOfs() const = 0; + virtual Mat getCatMap() const = 0; + + virtual void setTrainTestSplit(int count, bool shuffle=true) = 0; + virtual void setTrainTestSplitRatio(float ratio, bool shuffle=true) = 0; + virtual void shuffleTrainTest() = 0; + + static Mat getSubVector(const Mat& vec, const Mat& idx); + static Ptr loadFromCSV(const String& filename, + int headerLineCount, + int responseStartIdx=-1, + int responseEndIdx=-1, + const String& varTypeSpec=String(), + char delimiter=',', + char missch='?'); + static Ptr create(InputArray samples, int layout, InputArray responses, + InputArray varIdx=noArray(), InputArray sampleIdx=noArray(), + InputArray sampleWeights=noArray(), InputArray varType=noArray()); +}; + + +class CV_EXPORTS_W StatModel : public Algorithm +{ +public: + enum { UPDATE_MODEL = 1, RAW_OUTPUT=1, COMPRESSED_INPUT=2, PREPROCESSED_INPUT=4 }; + virtual ~StatModel(); virtual void clear(); - CV_WRAP virtual void save( const char* filename, const char* name=0 ) const; - CV_WRAP virtual void load( const char* filename, const char* name=0 ); + virtual int getVarCount() const = 0; + + virtual bool isTrained() const = 0; + virtual bool isClassifier() const = 0; - virtual void write( CvFileStorage* storage, const char* name ) const; - virtual void read( CvFileStorage* storage, CvFileNode* node ); + virtual bool train( const Ptr& trainData, int flags=0 ) = 0; + virtual float calcError( const Ptr& data, bool test, OutputArray resp ) const; + virtual float predict( InputArray samples, OutputArray results=noArray(), int flags=0 ) const = 0; + + template static Ptr<_Tp> load(const String& filename) + { + FileStorage fs(filename, FileStorage::READ); + Ptr<_Tp> p = _Tp::create(); + p->read(fs.getFirstTopLevelNode()); + return p->isTrained() ? p : Ptr<_Tp>(); + } -protected: - const char* default_model_name; + virtual void save(const String& filename) const; + virtual String getDefaultModelName() const = 0; }; /****************************************************************************************\ @@ -161,413 +189,104 @@ protected: the accuracy estimate being computed by cross-validation. The grid is logarithmic, so must be greater then 1. */ -class CvMLData; - -struct CV_EXPORTS_W_MAP CvParamGrid -{ - // SVM params type - enum { SVM_C=0, SVM_GAMMA=1, SVM_P=2, SVM_NU=3, SVM_COEF=4, SVM_DEGREE=5 }; - - CvParamGrid() - { - min_val = max_val = step = 0; - } - - CvParamGrid( double min_val, double max_val, double log_step ); - //CvParamGrid( int param_id ); - bool check() const; - - CV_PROP_RW double min_val; - CV_PROP_RW double max_val; - CV_PROP_RW double step; -}; - -inline CvParamGrid::CvParamGrid( double _min_val, double _max_val, double _log_step ) -{ - min_val = _min_val; - max_val = _max_val; - step = _log_step; -} - -class CV_EXPORTS_W CvNormalBayesClassifier : public CvStatModel +class CV_EXPORTS_W NormalBayesClassifier : public StatModel { public: - CV_WRAP CvNormalBayesClassifier(); - virtual ~CvNormalBayesClassifier(); - - CvNormalBayesClassifier( const CvMat* trainData, const CvMat* responses, - const CvMat* varIdx=0, const CvMat* sampleIdx=0 ); - - virtual bool train( const CvMat* trainData, const CvMat* responses, - const CvMat* varIdx = 0, const CvMat* sampleIdx=0, bool update=false ); - - virtual float predict( const CvMat* samples, CV_OUT CvMat* results=0, CV_OUT CvMat* results_prob=0 ) const; - CV_WRAP virtual void clear(); - - CV_WRAP CvNormalBayesClassifier( const cv::Mat& trainData, const cv::Mat& responses, - const cv::Mat& varIdx=cv::Mat(), const cv::Mat& sampleIdx=cv::Mat() ); - CV_WRAP virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, - const cv::Mat& varIdx = cv::Mat(), const cv::Mat& sampleIdx=cv::Mat(), - bool update=false ); - CV_WRAP virtual float predict( const cv::Mat& samples, CV_OUT cv::Mat* results=0, CV_OUT cv::Mat* results_prob=0 ) const; - - virtual void write( CvFileStorage* storage, const char* name ) const; - virtual void read( CvFileStorage* storage, CvFileNode* node ); - -protected: - int var_count, var_all; - CvMat* var_idx; - CvMat* cls_labels; - CvMat** count; - CvMat** sum; - CvMat** productsum; - CvMat** avg; - CvMat** inv_eigen_values; - CvMat** cov_rotate_mats; - CvMat* c; -}; + virtual ~NormalBayesClassifier(); + virtual float predictProb( InputArray inputs, OutputArray outputs, + OutputArray outputProbs, int flags=0 ) const = 0; + static Ptr create(); +}; /****************************************************************************************\ * K-Nearest Neighbour Classifier * \****************************************************************************************/ // k Nearest Neighbors -class CV_EXPORTS_W CvKNearest : public CvStatModel +class CV_EXPORTS_W KNearest : public StatModel { public: - - CV_WRAP CvKNearest(); - virtual ~CvKNearest(); - - CvKNearest( const CvMat* trainData, const CvMat* responses, - const CvMat* sampleIdx=0, bool isRegression=false, int max_k=32 ); - - virtual bool train( const CvMat* trainData, const CvMat* responses, - const CvMat* sampleIdx=0, bool is_regression=false, - int maxK=32, bool updateBase=false ); - - virtual float find_nearest( const CvMat* samples, int k, CV_OUT CvMat* results=0, - const float** neighbors=0, CV_OUT CvMat* neighborResponses=0, CV_OUT CvMat* dist=0 ) const; - - CV_WRAP CvKNearest( const cv::Mat& trainData, const cv::Mat& responses, - const cv::Mat& sampleIdx=cv::Mat(), bool isRegression=false, int max_k=32 ); - - CV_WRAP virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, - const cv::Mat& sampleIdx=cv::Mat(), bool isRegression=false, - int maxK=32, bool updateBase=false ); - - virtual float find_nearest( const cv::Mat& samples, int k, cv::Mat* results=0, - const float** neighbors=0, cv::Mat* neighborResponses=0, - cv::Mat* dist=0 ) const; - CV_WRAP virtual float find_nearest( const cv::Mat& samples, int k, CV_OUT cv::Mat& results, - CV_OUT cv::Mat& neighborResponses, CV_OUT cv::Mat& dists) const; - - virtual void clear(); - int get_max_k() const; - int get_var_count() const; - int get_sample_count() const; - bool is_regression() const; - - virtual float write_results( int k, int k1, int start, int end, - const float* neighbor_responses, const float* dist, CvMat* _results, - CvMat* _neighbor_responses, CvMat* _dist, Cv32suf* sort_buf ) const; - - virtual void find_neighbors_direct( const CvMat* _samples, int k, int start, int end, - float* neighbor_responses, const float** neighbors, float* dist ) const; - -protected: - - int max_k, var_count; - int total; - bool regression; - CvVectors* samples; + virtual void setDefaultK(int k) = 0; + virtual int getDefaultK() const = 0; + virtual float findNearest( InputArray samples, int k, + OutputArray results, + OutputArray neighborResponses=noArray(), + OutputArray dist=noArray() ) const = 0; + static Ptr create(bool isclassifier=true); }; /****************************************************************************************\ * Support Vector Machines * \****************************************************************************************/ -// SVM training parameters -struct CV_EXPORTS_W_MAP CvSVMParams -{ - CvSVMParams(); - CvSVMParams( int svm_type, int kernel_type, - double degree, double gamma, double coef0, - double Cvalue, double nu, double p, - CvMat* class_weights, CvTermCriteria term_crit ); - - CV_PROP_RW int svm_type; - CV_PROP_RW int kernel_type; - CV_PROP_RW double degree; // for poly - CV_PROP_RW double gamma; // for poly/rbf/sigmoid/chi2 - CV_PROP_RW double coef0; // for poly/sigmoid - - CV_PROP_RW double C; // for CV_SVM_C_SVC, CV_SVM_EPS_SVR and CV_SVM_NU_SVR - CV_PROP_RW double nu; // for CV_SVM_NU_SVC, CV_SVM_ONE_CLASS, and CV_SVM_NU_SVR - CV_PROP_RW double p; // for CV_SVM_EPS_SVR - CvMat* class_weights; // for CV_SVM_C_SVC - CV_PROP_RW CvTermCriteria term_crit; // termination criteria -}; - - -struct CV_EXPORTS CvSVMKernel -{ - typedef void (CvSVMKernel::*Calc)( int vec_count, int vec_size, const float** vecs, - const float* another, float* results ); - CvSVMKernel(); - CvSVMKernel( const CvSVMParams* params, Calc _calc_func ); - virtual bool create( const CvSVMParams* params, Calc _calc_func ); - virtual ~CvSVMKernel(); - - virtual void clear(); - virtual void calc( int vcount, int n, const float** vecs, const float* another, float* results ); - - const CvSVMParams* params; - Calc calc_func; - - virtual void calc_non_rbf_base( int vec_count, int vec_size, const float** vecs, - const float* another, float* results, - double alpha, double beta ); - virtual void calc_intersec( int vcount, int var_count, const float** vecs, - const float* another, float* results ); - virtual void calc_chi2( int vec_count, int vec_size, const float** vecs, - const float* another, float* results ); - virtual void calc_linear( int vec_count, int vec_size, const float** vecs, - const float* another, float* results ); - virtual void calc_rbf( int vec_count, int vec_size, const float** vecs, - const float* another, float* results ); - virtual void calc_poly( int vec_count, int vec_size, const float** vecs, - const float* another, float* results ); - virtual void calc_sigmoid( int vec_count, int vec_size, const float** vecs, - const float* another, float* results ); -}; - - -struct CvSVMKernelRow -{ - CvSVMKernelRow* prev; - CvSVMKernelRow* next; - float* data; -}; - - -struct CvSVMSolutionInfo -{ - double obj; - double rho; - double upper_bound_p; - double upper_bound_n; - double r; // for Solver_NU -}; - -class CV_EXPORTS CvSVMSolver +// SVM model +class CV_EXPORTS_W SVM : public StatModel { public: - typedef bool (CvSVMSolver::*SelectWorkingSet)( int& i, int& j ); - typedef float* (CvSVMSolver::*GetRow)( int i, float* row, float* dst, bool existed ); - typedef void (CvSVMSolver::*CalcRho)( double& rho, double& r ); - - CvSVMSolver(); - - CvSVMSolver( int count, int var_count, const float** samples, schar* y, - int alpha_count, double* alpha, double Cp, double Cn, - CvMemStorage* storage, CvSVMKernel* kernel, GetRow get_row, - SelectWorkingSet select_working_set, CalcRho calc_rho ); - virtual bool create( int count, int var_count, const float** samples, schar* y, - int alpha_count, double* alpha, double Cp, double Cn, - CvMemStorage* storage, CvSVMKernel* kernel, GetRow get_row, - SelectWorkingSet select_working_set, CalcRho calc_rho ); - virtual ~CvSVMSolver(); - - virtual void clear(); - virtual bool solve_generic( CvSVMSolutionInfo& si ); - - virtual bool solve_c_svc( int count, int var_count, const float** samples, schar* y, - double Cp, double Cn, CvMemStorage* storage, - CvSVMKernel* kernel, double* alpha, CvSVMSolutionInfo& si ); - virtual bool solve_nu_svc( int count, int var_count, const float** samples, schar* y, - CvMemStorage* storage, CvSVMKernel* kernel, - double* alpha, CvSVMSolutionInfo& si ); - virtual bool solve_one_class( int count, int var_count, const float** samples, - CvMemStorage* storage, CvSVMKernel* kernel, - double* alpha, CvSVMSolutionInfo& si ); - - virtual bool solve_eps_svr( int count, int var_count, const float** samples, const float* y, - CvMemStorage* storage, CvSVMKernel* kernel, - double* alpha, CvSVMSolutionInfo& si ); - - virtual bool solve_nu_svr( int count, int var_count, const float** samples, const float* y, - CvMemStorage* storage, CvSVMKernel* kernel, - double* alpha, CvSVMSolutionInfo& si ); - - virtual float* get_row_base( int i, bool* _existed ); - virtual float* get_row( int i, float* dst ); - - int sample_count; - int var_count; - int cache_size; - int cache_line_size; - const float** samples; - const CvSVMParams* params; - CvMemStorage* storage; - CvSVMKernelRow lru_list; - CvSVMKernelRow* rows; - - int alpha_count; - - double* G; - double* alpha; - - // -1 - lower bound, 0 - free, 1 - upper bound - schar* alpha_status; - - schar* y; - double* b; - float* buf[2]; - double eps; - int max_iter; - double C[2]; // C[0] == Cn, C[1] == Cp - CvSVMKernel* kernel; - - SelectWorkingSet select_working_set_func; - CalcRho calc_rho_func; - GetRow get_row_func; - - virtual bool select_working_set( int& i, int& j ); - virtual bool select_working_set_nu_svm( int& i, int& j ); - virtual void calc_rho( double& rho, double& r ); - virtual void calc_rho_nu_svm( double& rho, double& r ); - - virtual float* get_row_svc( int i, float* row, float* dst, bool existed ); - virtual float* get_row_one_class( int i, float* row, float* dst, bool existed ); - virtual float* get_row_svr( int i, float* row, float* dst, bool existed ); -}; - - -struct CvSVMDecisionFunc -{ - double rho; - int sv_count; - double* alpha; - int* sv_index; -}; + class CV_EXPORTS_W_MAP Params + { + public: + Params(); + Params( int svm_type, int kernel_type, + double degree, double gamma, double coef0, + double Cvalue, double nu, double p, + const Mat& classWeights, TermCriteria termCrit ); + + CV_PROP_RW int svmType; + CV_PROP_RW int kernelType; + CV_PROP_RW double gamma, coef0, degree; + + CV_PROP_RW double C; // for CV_SVM_C_SVC, CV_SVM_EPS_SVR and CV_SVM_NU_SVR + CV_PROP_RW double nu; // for CV_SVM_NU_SVC, CV_SVM_ONE_CLASS, and CV_SVM_NU_SVR + CV_PROP_RW double p; // for CV_SVM_EPS_SVR + CV_PROP_RW Mat classWeights; // for CV_SVM_C_SVC + CV_PROP_RW TermCriteria termCrit; // termination criteria + }; + class CV_EXPORTS Kernel : public Algorithm + { + public: + virtual ~Kernel(); + virtual int getType() const = 0; + virtual void calc( int vcount, int n, const float* vecs, const float* another, float* results ) = 0; + }; -// SVM model -class CV_EXPORTS_W CvSVM : public CvStatModel -{ -public: // SVM type enum { C_SVC=100, NU_SVC=101, ONE_CLASS=102, EPS_SVR=103, NU_SVR=104 }; // SVM kernel type - enum { LINEAR=0, POLY=1, RBF=2, SIGMOID=3, CHI2=4, INTER=5 }; + enum { CUSTOM=-1, LINEAR=0, POLY=1, RBF=2, SIGMOID=3, CHI2=4, INTER=5 }; // SVM params type enum { C=0, GAMMA=1, P=2, NU=3, COEF=4, DEGREE=5 }; - CV_WRAP CvSVM(); - virtual ~CvSVM(); - - CvSVM( const CvMat* trainData, const CvMat* responses, - const CvMat* varIdx=0, const CvMat* sampleIdx=0, - CvSVMParams params=CvSVMParams() ); - - virtual bool train( const CvMat* trainData, const CvMat* responses, - const CvMat* varIdx=0, const CvMat* sampleIdx=0, - CvSVMParams params=CvSVMParams() ); - - virtual bool train_auto( const CvMat* trainData, const CvMat* responses, - const CvMat* varIdx, const CvMat* sampleIdx, CvSVMParams params, - int kfold = 10, - CvParamGrid Cgrid = get_default_grid(CvSVM::C), - CvParamGrid gammaGrid = get_default_grid(CvSVM::GAMMA), - CvParamGrid pGrid = get_default_grid(CvSVM::P), - CvParamGrid nuGrid = get_default_grid(CvSVM::NU), - CvParamGrid coeffGrid = get_default_grid(CvSVM::COEF), - CvParamGrid degreeGrid = get_default_grid(CvSVM::DEGREE), - bool balanced=false ); - - virtual float predict( const CvMat* sample, bool returnDFVal=false ) const; - virtual float predict( const CvMat* samples, CV_OUT CvMat* results, bool returnDFVal=false ) const; - - CV_WRAP CvSVM( const cv::Mat& trainData, const cv::Mat& responses, - const cv::Mat& varIdx=cv::Mat(), const cv::Mat& sampleIdx=cv::Mat(), - CvSVMParams params=CvSVMParams() ); - - CV_WRAP virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, - const cv::Mat& varIdx=cv::Mat(), const cv::Mat& sampleIdx=cv::Mat(), - CvSVMParams params=CvSVMParams() ); - - CV_WRAP virtual bool train_auto( const cv::Mat& trainData, const cv::Mat& responses, - const cv::Mat& varIdx, const cv::Mat& sampleIdx, CvSVMParams params, - int k_fold = 10, - CvParamGrid Cgrid = CvSVM::get_default_grid(CvSVM::C), - CvParamGrid gammaGrid = CvSVM::get_default_grid(CvSVM::GAMMA), - CvParamGrid pGrid = CvSVM::get_default_grid(CvSVM::P), - CvParamGrid nuGrid = CvSVM::get_default_grid(CvSVM::NU), - CvParamGrid coeffGrid = CvSVM::get_default_grid(CvSVM::COEF), - CvParamGrid degreeGrid = CvSVM::get_default_grid(CvSVM::DEGREE), - bool balanced=false); - CV_WRAP virtual float predict( const cv::Mat& sample, bool returnDFVal=false ) const; - CV_WRAP_AS(predict_all) virtual void predict( cv::InputArray samples, cv::OutputArray results ) const; - - CV_WRAP virtual int get_support_vector_count() const; - virtual const float* get_support_vector(int i) const; - virtual CvSVMParams get_params() const { return params; } - CV_WRAP virtual void clear(); - - virtual const CvSVMDecisionFunc* get_decision_function() const { return decision_func; } - - static CvParamGrid get_default_grid( int param_id ); - - virtual void write( CvFileStorage* storage, const char* name ) const; - virtual void read( CvFileStorage* storage, CvFileNode* node ); - CV_WRAP int get_var_count() const { return var_idx ? var_idx->cols : var_all; } - -protected: - - virtual bool set_params( const CvSVMParams& params ); - virtual bool train1( int sample_count, int var_count, const float** samples, - const void* responses, double Cp, double Cn, - CvMemStorage* _storage, double* alpha, double& rho ); - virtual bool do_train( int svm_type, int sample_count, int var_count, const float** samples, - const CvMat* responses, CvMemStorage* _storage, double* alpha ); - virtual void create_kernel(); - virtual void create_solver(); - - virtual float predict( const float* row_sample, int row_len, bool returnDFVal=false ) const; - - virtual void write_params( CvFileStorage* fs ) const; - virtual void read_params( CvFileStorage* fs, CvFileNode* node ); - - void optimize_linear_svm(); - - CvSVMParams params; - CvMat* class_labels; - int var_all; - float** sv; - int sv_total; - CvMat* var_idx; - CvMat* class_weights; - CvSVMDecisionFunc* decision_func; - CvMemStorage* storage; - - CvSVMSolver* solver; - CvSVMKernel* kernel; - -private: - CvSVM(const CvSVM&); - CvSVM& operator = (const CvSVM&); + virtual ~SVM(); + + virtual bool trainAuto( const Ptr& data, int kFold = 10, + ParamGrid Cgrid = SVM::getDefaultGrid(SVM::C), + ParamGrid gammaGrid = SVM::getDefaultGrid(SVM::GAMMA), + ParamGrid pGrid = SVM::getDefaultGrid(SVM::P), + ParamGrid nuGrid = SVM::getDefaultGrid(SVM::NU), + ParamGrid coeffGrid = SVM::getDefaultGrid(SVM::COEF), + ParamGrid degreeGrid = SVM::getDefaultGrid(SVM::DEGREE), + bool balanced=false) = 0; + + CV_WRAP virtual Mat getSupportVectors() const = 0; + + virtual void setParams(const Params& p, const Ptr& customKernel=Ptr()) = 0; + virtual Params getParams() const = 0; + virtual Ptr getKernel() const = 0; + virtual double getDecisionFunction(int i, OutputArray alpha, OutputArray svidx) const = 0; + + static ParamGrid getDefaultGrid( int param_id ); + static Ptr create(const Params& p=Params(), const Ptr& customKernel=Ptr()); }; /****************************************************************************************\ * Expectation - Maximization * \****************************************************************************************/ -namespace cv -{ -class CV_EXPORTS_W EM : public Algorithm +class CV_EXPORTS_W EM : public StatModel { public: // Type of covariation matrices @@ -579,1361 +298,236 @@ public: // The initial step enum {START_E_STEP=1, START_M_STEP=2, START_AUTO_STEP=0}; - CV_WRAP EM(int nclusters=EM::DEFAULT_NCLUSTERS, int covMatType=EM::COV_MAT_DIAGONAL, - const TermCriteria& termCrit=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, - EM::DEFAULT_MAX_ITERS, FLT_EPSILON)); - - virtual ~EM(); - CV_WRAP virtual void clear(); - - CV_WRAP virtual bool train(InputArray samples, - OutputArray logLikelihoods=noArray(), - OutputArray labels=noArray(), - OutputArray probs=noArray()); - - CV_WRAP virtual bool trainE(InputArray samples, - InputArray means0, - InputArray covs0=noArray(), - InputArray weights0=noArray(), - OutputArray logLikelihoods=noArray(), - OutputArray labels=noArray(), - OutputArray probs=noArray()); - - CV_WRAP virtual bool trainM(InputArray samples, - InputArray probs0, - OutputArray logLikelihoods=noArray(), - OutputArray labels=noArray(), - OutputArray probs=noArray()); - - CV_WRAP Vec2d predict(InputArray sample, - OutputArray probs=noArray()) const; - - CV_WRAP bool isTrained() const; - - AlgorithmInfo* info() const; - virtual void read(const FileNode& fn); - -protected: - - virtual void setTrainData(int startStep, const Mat& samples, - const Mat* probs0, - const Mat* means0, - const std::vector* covs0, - const Mat* weights0); - - bool doTrain(int startStep, - OutputArray logLikelihoods, - OutputArray labels, - OutputArray probs); - virtual void eStep(); - virtual void mStep(); - - void clusterTrainSamples(); - void decomposeCovs(); - void computeLogWeightDivDet(); - - Vec2d computeProbabilities(const Mat& sample, Mat* probs) const; - - // all inner matrices have type CV_64FC1 - CV_PROP_RW int nclusters; - CV_PROP_RW int covMatType; - CV_PROP_RW int maxIters; - CV_PROP_RW double epsilon; - - Mat trainSamples; - Mat trainProbs; - Mat trainLogLikelihoods; - Mat trainLabels; - - CV_PROP Mat weights; - CV_PROP Mat means; - CV_PROP std::vector covs; - - std::vector covsEigenValues; - std::vector covsRotateMats; - std::vector invCovsEigenValues; - Mat logWeightDivDet; -}; -} // namespace cv - -/****************************************************************************************\ -* Decision Tree * -\****************************************************************************************/\ -struct CvPair16u32s -{ - unsigned short* u; - int* i; -}; - - -#define CV_DTREE_CAT_DIR(idx,subset) \ - (2*((subset[(idx)>>5]&(1 << ((idx) & 31)))==0)-1) - -struct CvDTreeSplit -{ - int var_idx; - int condensed_idx; - int inversed; - float quality; - CvDTreeSplit* next; - union + class CV_EXPORTS_W_MAP Params { - int subset[2]; - struct - { - float c; - int split_point; - } - ord; + public: + explicit Params(int nclusters=DEFAULT_NCLUSTERS, int covMatType=EM::COV_MAT_DIAGONAL, + const TermCriteria& termCrit=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, + EM::DEFAULT_MAX_ITERS, 1e-6)); + int nclusters; + int covMatType; + TermCriteria termCrit; }; -}; - -struct CvDTreeNode -{ - int class_idx; - int Tn; - double value; - - CvDTreeNode* parent; - CvDTreeNode* left; - CvDTreeNode* right; - - CvDTreeSplit* split; - - int sample_count; - int depth; - int* num_valid; - int offset; - int buf_idx; - double maxlr; - - // global pruning data - int complexity; - double alpha; - double node_risk, tree_risk, tree_error; - - // cross-validation pruning data - int* cv_Tn; - double* cv_node_risk; - double* cv_node_error; - - int get_num_valid(int vi) { return num_valid ? num_valid[vi] : sample_count; } - void set_num_valid(int vi, int n) { if( num_valid ) num_valid[vi] = n; } -}; + virtual void setParams(const Params& p) = 0; + virtual Params getParams() const = 0; + virtual Mat getWeights() const = 0; + virtual Mat getMeans() const = 0; + virtual void getCovs(std::vector& covs) const = 0; -struct CV_EXPORTS_W_MAP CvDTreeParams -{ - CV_PROP_RW int max_categories; - CV_PROP_RW int max_depth; - CV_PROP_RW int min_sample_count; - CV_PROP_RW int cv_folds; - CV_PROP_RW bool use_surrogates; - CV_PROP_RW bool use_1se_rule; - CV_PROP_RW bool truncate_pruned_tree; - CV_PROP_RW float regression_accuracy; - const float* priors; - - CvDTreeParams(); - CvDTreeParams( int max_depth, int min_sample_count, - float regression_accuracy, bool use_surrogates, - int max_categories, int cv_folds, - bool use_1se_rule, bool truncate_pruned_tree, - const float* priors ); -}; + CV_WRAP virtual Vec2d predict2(InputArray sample, OutputArray probs) const = 0; + virtual bool train( const Ptr& trainData, int flags=0 ) = 0; -struct CV_EXPORTS CvDTreeTrainData -{ - CvDTreeTrainData(); - CvDTreeTrainData( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - const CvDTreeParams& params=CvDTreeParams(), - bool _shared=false, bool _add_labels=false ); - virtual ~CvDTreeTrainData(); - - virtual void set_data( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - const CvDTreeParams& params=CvDTreeParams(), - bool _shared=false, bool _add_labels=false, - bool _update_data=false ); - virtual void do_responses_copy(); - - virtual void get_vectors( const CvMat* _subsample_idx, - float* values, uchar* missing, float* responses, bool get_class_idx=false ); - - virtual CvDTreeNode* subsample_data( const CvMat* _subsample_idx ); - - virtual void write_params( CvFileStorage* fs ) const; - virtual void read_params( CvFileStorage* fs, CvFileNode* node ); - - // release all the data - virtual void clear(); - - int get_num_classes() const; - int get_var_type(int vi) const; - int get_work_var_count() const {return work_var_count;} - - virtual const float* get_ord_responses( CvDTreeNode* n, float* values_buf, int* sample_indices_buf ); - virtual const int* get_class_labels( CvDTreeNode* n, int* labels_buf ); - virtual const int* get_cv_labels( CvDTreeNode* n, int* labels_buf ); - virtual const int* get_sample_indices( CvDTreeNode* n, int* indices_buf ); - virtual const int* get_cat_var_data( CvDTreeNode* n, int vi, int* cat_values_buf ); - virtual void get_ord_var_data( CvDTreeNode* n, int vi, float* ord_values_buf, int* sorted_indices_buf, - const float** ord_values, const int** sorted_indices, int* sample_indices_buf ); - virtual int get_child_buf_idx( CvDTreeNode* n ); - - //////////////////////////////////// - - virtual bool set_params( const CvDTreeParams& params ); - virtual CvDTreeNode* new_node( CvDTreeNode* parent, int count, - int storage_idx, int offset ); - - virtual CvDTreeSplit* new_split_ord( int vi, float cmp_val, - int split_point, int inversed, float quality ); - virtual CvDTreeSplit* new_split_cat( int vi, float quality ); - virtual void free_node_data( CvDTreeNode* node ); - virtual void free_train_data(); - virtual void free_node( CvDTreeNode* node ); - - int sample_count, var_all, var_count, max_c_count; - int ord_var_count, cat_var_count, work_var_count; - bool have_labels, have_priors; - bool is_classifier; - int tflag; - - const CvMat* train_data; - const CvMat* responses; - CvMat* responses_copy; // used in Boosting - - int buf_count, buf_size; // buf_size is obsolete, please do not use it, use expression ((int64)buf->rows * (int64)buf->cols / buf_count) instead - bool shared; - int is_buf_16u; - - CvMat* cat_count; - CvMat* cat_ofs; - CvMat* cat_map; - - CvMat* counts; - CvMat* buf; - inline size_t get_length_subbuf() const - { - size_t res = (size_t)(work_var_count + 1) * (size_t)sample_count; - return res; - } + static Ptr train(InputArray samples, + OutputArray logLikelihoods=noArray(), + OutputArray labels=noArray(), + OutputArray probs=noArray(), + const Params& params=Params()); - CvMat* direction; - CvMat* split_buf; + static Ptr train_startWithE(InputArray samples, InputArray means0, + InputArray covs0=noArray(), + InputArray weights0=noArray(), + OutputArray logLikelihoods=noArray(), + OutputArray labels=noArray(), + OutputArray probs=noArray(), + const Params& params=Params()); - CvMat* var_idx; - CvMat* var_type; // i-th element = - // k<0 - ordered - // k>=0 - categorical, see k-th element of cat_* arrays - CvMat* priors; - CvMat* priors_mult; - - CvDTreeParams params; - - CvMemStorage* tree_storage; - CvMemStorage* temp_storage; - - CvDTreeNode* data_root; - - CvSet* node_heap; - CvSet* split_heap; - CvSet* cv_heap; - CvSet* nv_heap; - - cv::RNG* rng; -}; - -class CvDTree; -class CvForestTree; - -namespace cv -{ - struct DTreeBestSplitFinder; - struct ForestTreeBestSplitFinder; -} - -class CV_EXPORTS_W CvDTree : public CvStatModel -{ -public: - CV_WRAP CvDTree(); - virtual ~CvDTree(); - - virtual bool train( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - CvDTreeParams params=CvDTreeParams() ); - - virtual bool train( CvMLData* trainData, CvDTreeParams params=CvDTreeParams() ); - - // type in {CV_TRAIN_ERROR, CV_TEST_ERROR} - virtual float calc_error( CvMLData* trainData, int type, std::vector *resp = 0 ); - - virtual bool train( CvDTreeTrainData* trainData, const CvMat* subsampleIdx ); - - virtual CvDTreeNode* predict( const CvMat* sample, const CvMat* missingDataMask=0, - bool preprocessedInput=false ) const; - - CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag, - const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), - const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), - const cv::Mat& missingDataMask=cv::Mat(), - CvDTreeParams params=CvDTreeParams() ); - - CV_WRAP virtual CvDTreeNode* predict( const cv::Mat& sample, const cv::Mat& missingDataMask=cv::Mat(), - bool preprocessedInput=false ) const; - CV_WRAP virtual cv::Mat getVarImportance(); - - virtual const CvMat* get_var_importance(); - CV_WRAP virtual void clear(); - - virtual void read( CvFileStorage* fs, CvFileNode* node ); - virtual void write( CvFileStorage* fs, const char* name ) const; - - // special read & write methods for trees in the tree ensembles - virtual void read( CvFileStorage* fs, CvFileNode* node, - CvDTreeTrainData* data ); - virtual void write( CvFileStorage* fs ) const; - - const CvDTreeNode* get_root() const; - int get_pruned_tree_idx() const; - CvDTreeTrainData* get_data(); - -protected: - friend struct cv::DTreeBestSplitFinder; - - virtual bool do_train( const CvMat* _subsample_idx ); - - virtual void try_split_node( CvDTreeNode* n ); - virtual void split_node_data( CvDTreeNode* n ); - virtual CvDTreeSplit* find_best_split( CvDTreeNode* n ); - virtual CvDTreeSplit* find_split_ord_class( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_split_cat_class( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_split_ord_reg( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_split_cat_reg( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_surrogate_split_ord( CvDTreeNode* n, int vi, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_surrogate_split_cat( CvDTreeNode* n, int vi, uchar* ext_buf = 0 ); - virtual double calc_node_dir( CvDTreeNode* node ); - virtual void complete_node_dir( CvDTreeNode* node ); - virtual void cluster_categories( const int* vectors, int vector_count, - int var_count, int* sums, int k, int* cluster_labels ); - - virtual void calc_node_value( CvDTreeNode* node ); - - virtual void prune_cv(); - virtual double update_tree_rnc( int T, int fold ); - virtual int cut_tree( int T, int fold, double min_alpha ); - virtual void free_prune_data(bool cut_tree); - virtual void free_tree(); - - virtual void write_node( CvFileStorage* fs, CvDTreeNode* node ) const; - virtual void write_split( CvFileStorage* fs, CvDTreeSplit* split ) const; - virtual CvDTreeNode* read_node( CvFileStorage* fs, CvFileNode* node, CvDTreeNode* parent ); - virtual CvDTreeSplit* read_split( CvFileStorage* fs, CvFileNode* node ); - virtual void write_tree_nodes( CvFileStorage* fs ) const; - virtual void read_tree_nodes( CvFileStorage* fs, CvFileNode* node ); - - CvDTreeNode* root; - CvMat* var_importance; - CvDTreeTrainData* data; - CvMat train_data_hdr, responses_hdr; - cv::Mat train_data_mat, responses_mat; - -public: - int pruned_tree_idx; + static Ptr train_startWithM(InputArray samples, InputArray probs0, + OutputArray logLikelihoods=noArray(), + OutputArray labels=noArray(), + OutputArray probs=noArray(), + const Params& params=Params()); + static Ptr create(const Params& params=Params()); }; /****************************************************************************************\ -* Random Trees Classifier * +* Decision Tree * \****************************************************************************************/ -class CvRTrees; - -class CV_EXPORTS CvForestTree: public CvDTree +class CV_EXPORTS_W DTrees : public StatModel { public: - CvForestTree(); - virtual ~CvForestTree(); + enum { PREDICT_AUTO=0, PREDICT_SUM=(1<<8), PREDICT_MAX_VOTE=(2<<8), PREDICT_MASK=(3<<8) }; - virtual bool train( CvDTreeTrainData* trainData, const CvMat* _subsample_idx, CvRTrees* forest ); - - virtual int get_var_count() const {return data ? data->var_count : 0;} - virtual void read( CvFileStorage* fs, CvFileNode* node, CvRTrees* forest, CvDTreeTrainData* _data ); + class CV_EXPORTS_W_MAP Params + { + public: + Params(); + Params( int maxDepth, int minSampleCount, + double regressionAccuracy, bool useSurrogates, + int maxCategories, int CVFolds, + bool use1SERule, bool truncatePrunedTree, + const Mat& priors ); + + CV_PROP_RW int maxCategories; + CV_PROP_RW int maxDepth; + CV_PROP_RW int minSampleCount; + CV_PROP_RW int CVFolds; + CV_PROP_RW bool useSurrogates; + CV_PROP_RW bool use1SERule; + CV_PROP_RW bool truncatePrunedTree; + CV_PROP_RW float regressionAccuracy; + CV_PROP_RW Mat priors; + }; - /* dummy methods to avoid warnings: BEGIN */ - virtual bool train( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - CvDTreeParams params=CvDTreeParams() ); + class CV_EXPORTS Node + { + public: + Node(); + double value; + int classIdx; - virtual bool train( CvDTreeTrainData* trainData, const CvMat* _subsample_idx ); - virtual void read( CvFileStorage* fs, CvFileNode* node ); - virtual void read( CvFileStorage* fs, CvFileNode* node, - CvDTreeTrainData* data ); - /* dummy methods to avoid warnings: END */ + int parent; + int left; + int right; + int defaultDir; -protected: - friend struct cv::ForestTreeBestSplitFinder; + int split; + }; - virtual CvDTreeSplit* find_best_split( CvDTreeNode* n ); - CvRTrees* forest; -}; + class CV_EXPORTS Split + { + public: + Split(); + int varIdx; + bool inversed; + float quality; + int next; + float c; + int subsetOfs; + }; + virtual ~DTrees(); -struct CV_EXPORTS_W_MAP CvRTParams : public CvDTreeParams -{ - //Parameters for the forest - CV_PROP_RW bool calc_var_importance; // true <=> RF processes variable importance - CV_PROP_RW int nactive_vars; - CV_PROP_RW CvTermCriteria term_crit; - - CvRTParams(); - CvRTParams( int max_depth, int min_sample_count, - float regression_accuracy, bool use_surrogates, - int max_categories, const float* priors, bool calc_var_importance, - int nactive_vars, int max_num_of_trees_in_the_forest, - float forest_accuracy, int termcrit_type ); -}; + virtual void setDParams(const Params& p); + virtual Params getDParams() const; + virtual const std::vector& getRoots() const = 0; + virtual const std::vector& getNodes() const = 0; + virtual const std::vector& getSplits() const = 0; + virtual const std::vector& getSubsets() const = 0; -class CV_EXPORTS_W CvRTrees : public CvStatModel -{ -public: - CV_WRAP CvRTrees(); - virtual ~CvRTrees(); - virtual bool train( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - CvRTParams params=CvRTParams() ); - - virtual bool train( CvMLData* data, CvRTParams params=CvRTParams() ); - virtual float predict( const CvMat* sample, const CvMat* missing = 0 ) const; - virtual float predict_prob( const CvMat* sample, const CvMat* missing = 0 ) const; - - CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag, - const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), - const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), - const cv::Mat& missingDataMask=cv::Mat(), - CvRTParams params=CvRTParams() ); - CV_WRAP virtual float predict( const cv::Mat& sample, const cv::Mat& missing = cv::Mat() ) const; - CV_WRAP virtual float predict_prob( const cv::Mat& sample, const cv::Mat& missing = cv::Mat() ) const; - CV_WRAP virtual cv::Mat getVarImportance(); - - CV_WRAP virtual void clear(); - - virtual const CvMat* get_var_importance(); - virtual float get_proximity( const CvMat* sample1, const CvMat* sample2, - const CvMat* missing1 = 0, const CvMat* missing2 = 0 ) const; - - virtual float calc_error( CvMLData* data, int type , std::vector* resp = 0 ); // type in {CV_TRAIN_ERROR, CV_TEST_ERROR} - - virtual float get_train_error(); - - virtual void read( CvFileStorage* fs, CvFileNode* node ); - virtual void write( CvFileStorage* fs, const char* name ) const; - - CvMat* get_active_var_mask(); - CvRNG* get_rng(); - - int get_tree_count() const; - CvForestTree* get_tree(int i) const; - -protected: - virtual cv::String getName() const; - - virtual bool grow_forest( const CvTermCriteria term_crit ); - - // array of the trees of the forest - CvForestTree** trees; - CvDTreeTrainData* data; - CvMat train_data_hdr, responses_hdr; - cv::Mat train_data_mat, responses_mat; - int ntrees; - int nclasses; - double oob_error; - CvMat* var_importance; - int nsamples; - - cv::RNG* rng; - CvMat* active_var_mask; + static Ptr create(const Params& params=Params()); }; /****************************************************************************************\ -* Extremely randomized trees Classifier * +* Random Trees Classifier * \****************************************************************************************/ -struct CV_EXPORTS CvERTreeTrainData : public CvDTreeTrainData -{ - virtual void set_data( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - const CvDTreeParams& params=CvDTreeParams(), - bool _shared=false, bool _add_labels=false, - bool _update_data=false ); - virtual void get_ord_var_data( CvDTreeNode* n, int vi, float* ord_values_buf, int* missing_buf, - const float** ord_values, const int** missing, int* sample_buf = 0 ); - virtual const int* get_sample_indices( CvDTreeNode* n, int* indices_buf ); - virtual const int* get_cv_labels( CvDTreeNode* n, int* labels_buf ); - virtual const int* get_cat_var_data( CvDTreeNode* n, int vi, int* cat_values_buf ); - virtual void get_vectors( const CvMat* _subsample_idx, float* values, uchar* missing, - float* responses, bool get_class_idx=false ); - virtual CvDTreeNode* subsample_data( const CvMat* _subsample_idx ); - const CvMat* missing_mask; -}; - -class CV_EXPORTS CvForestERTree : public CvForestTree -{ -protected: - virtual double calc_node_dir( CvDTreeNode* node ); - virtual CvDTreeSplit* find_split_ord_class( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_split_cat_class( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_split_ord_reg( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_split_cat_reg( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual void split_node_data( CvDTreeNode* n ); -}; -class CV_EXPORTS_W CvERTrees : public CvRTrees +class CV_EXPORTS_W RTrees : public DTrees { public: - CV_WRAP CvERTrees(); - virtual ~CvERTrees(); - virtual bool train( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - CvRTParams params=CvRTParams()); - CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag, - const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), - const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), - const cv::Mat& missingDataMask=cv::Mat(), - CvRTParams params=CvRTParams()); - virtual bool train( CvMLData* data, CvRTParams params=CvRTParams() ); -protected: - virtual cv::String getName() const; - virtual bool grow_forest( const CvTermCriteria term_crit ); -}; + class CV_EXPORTS_W_MAP Params : public DTrees::Params + { + public: + Params(); + Params( int maxDepth, int minSampleCount, + double regressionAccuracy, bool useSurrogates, + int maxCategories, const Mat& priors, + bool calcVarImportance, int nactiveVars, + TermCriteria termCrit ); + + CV_PROP_RW bool calcVarImportance; // true <=> RF processes variable importance + CV_PROP_RW int nactiveVars; + CV_PROP_RW TermCriteria termCrit; + }; + virtual void setRParams(const Params& p) = 0; + virtual Params getRParams() const = 0; -/****************************************************************************************\ -* Boosted tree classifier * -\****************************************************************************************/ + virtual Mat getVarImportance() const = 0; -struct CV_EXPORTS_W_MAP CvBoostParams : public CvDTreeParams -{ - CV_PROP_RW int boost_type; - CV_PROP_RW int weak_count; - CV_PROP_RW int split_criteria; - CV_PROP_RW double weight_trim_rate; - - CvBoostParams(); - CvBoostParams( int boost_type, int weak_count, double weight_trim_rate, - int max_depth, bool use_surrogates, const float* priors ); + static Ptr create(const Params& params=Params()); }; +/****************************************************************************************\ +* Boosted tree classifier * +\****************************************************************************************/ -class CvBoost; - -class CV_EXPORTS CvBoostTree: public CvDTree +class CV_EXPORTS_W Boost : public DTrees { public: - CvBoostTree(); - virtual ~CvBoostTree(); - - virtual bool train( CvDTreeTrainData* trainData, - const CvMat* subsample_idx, CvBoost* ensemble ); - - virtual void scale( double s ); - virtual void read( CvFileStorage* fs, CvFileNode* node, - CvBoost* ensemble, CvDTreeTrainData* _data ); - virtual void clear(); - - /* dummy methods to avoid warnings: BEGIN */ - virtual bool train( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - CvDTreeParams params=CvDTreeParams() ); - virtual bool train( CvDTreeTrainData* trainData, const CvMat* _subsample_idx ); - - virtual void read( CvFileStorage* fs, CvFileNode* node ); - virtual void read( CvFileStorage* fs, CvFileNode* node, - CvDTreeTrainData* data ); - /* dummy methods to avoid warnings: END */ - -protected: - - virtual void try_split_node( CvDTreeNode* n ); - virtual CvDTreeSplit* find_surrogate_split_ord( CvDTreeNode* n, int vi, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_surrogate_split_cat( CvDTreeNode* n, int vi, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_split_ord_class( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_split_cat_class( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_split_ord_reg( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_split_cat_reg( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual void calc_node_value( CvDTreeNode* n ); - virtual double calc_node_dir( CvDTreeNode* n ); - - CvBoost* ensemble; -}; - + class CV_EXPORTS_W_MAP Params : public DTrees::Params + { + public: + CV_PROP_RW int boostType; + CV_PROP_RW int weakCount; + CV_PROP_RW double weightTrimRate; + + Params(); + Params( int boostType, int weakCount, double weightTrimRate, + int maxDepth, bool useSurrogates, const Mat& priors ); + }; -class CV_EXPORTS_W CvBoost : public CvStatModel -{ -public: // Boosting type enum { DISCRETE=0, REAL=1, LOGIT=2, GENTLE=3 }; - // Splitting criteria - enum { DEFAULT=0, GINI=1, MISCLASS=3, SQERR=4 }; - - CV_WRAP CvBoost(); - virtual ~CvBoost(); - - CvBoost( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - CvBoostParams params=CvBoostParams() ); - - virtual bool train( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - CvBoostParams params=CvBoostParams(), - bool update=false ); - - virtual bool train( CvMLData* data, - CvBoostParams params=CvBoostParams(), - bool update=false ); - - virtual float predict( const CvMat* sample, const CvMat* missing=0, - CvMat* weak_responses=0, CvSlice slice=CV_WHOLE_SEQ, - bool raw_mode=false, bool return_sum=false ) const; - - CV_WRAP CvBoost( const cv::Mat& trainData, int tflag, - const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), - const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), - const cv::Mat& missingDataMask=cv::Mat(), - CvBoostParams params=CvBoostParams() ); - - CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag, - const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), - const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), - const cv::Mat& missingDataMask=cv::Mat(), - CvBoostParams params=CvBoostParams(), - bool update=false ); - - CV_WRAP virtual float predict( const cv::Mat& sample, const cv::Mat& missing=cv::Mat(), - const cv::Range& slice=cv::Range::all(), bool rawMode=false, - bool returnSum=false ) const; - - virtual float calc_error( CvMLData* _data, int type , std::vector *resp = 0 ); // type in {CV_TRAIN_ERROR, CV_TEST_ERROR} - - CV_WRAP virtual void prune( CvSlice slice ); - - CV_WRAP virtual void clear(); - - virtual void write( CvFileStorage* storage, const char* name ) const; - virtual void read( CvFileStorage* storage, CvFileNode* node ); - virtual const CvMat* get_active_vars(bool absolute_idx=true); - - CvSeq* get_weak_predictors(); - - CvMat* get_weights(); - CvMat* get_subtree_weights(); - CvMat* get_weak_response(); - const CvBoostParams& get_params() const; - const CvDTreeTrainData* get_data() const; - -protected: - - virtual bool set_params( const CvBoostParams& params ); - virtual void update_weights( CvBoostTree* tree ); - virtual void trim_weights(); - virtual void write_params( CvFileStorage* fs ) const; - virtual void read_params( CvFileStorage* fs, CvFileNode* node ); - - virtual void initialize_weights(double (&p)[2]); - - CvDTreeTrainData* data; - CvMat train_data_hdr, responses_hdr; - cv::Mat train_data_mat, responses_mat; - CvBoostParams params; - CvSeq* weak; - - CvMat* active_vars; - CvMat* active_vars_abs; - bool have_active_cat_vars; - - CvMat* orig_response; - CvMat* sum_response; - CvMat* weak_eval; - CvMat* subsample_mask; - CvMat* weights; - CvMat* subtree_weights; - bool have_subsample; -}; + virtual ~Boost(); + virtual Params getBParams() const = 0; + virtual void setBParams(const Params& p) = 0; + static Ptr create(const Params& params=Params()); +}; /****************************************************************************************\ * Gradient Boosted Trees * \****************************************************************************************/ -// DataType: STRUCT CvGBTreesParams -// Parameters of GBT (Gradient Boosted trees model), including single -// tree settings and ensemble parameters. -// -// weak_count - count of trees in the ensemble -// loss_function_type - loss function used for ensemble training -// subsample_portion - portion of whole training set used for -// every single tree training. -// subsample_portion value is in (0.0, 1.0]. -// subsample_portion == 1.0 when whole dataset is -// used on each step. Count of sample used on each -// step is computed as -// int(total_samples_count * subsample_portion). -// shrinkage - regularization parameter. -// Each tree prediction is multiplied on shrinkage value. - - -struct CV_EXPORTS_W_MAP CvGBTreesParams : public CvDTreeParams -{ - CV_PROP_RW int weak_count; - CV_PROP_RW int loss_function_type; - CV_PROP_RW float subsample_portion; - CV_PROP_RW float shrinkage; - - CvGBTreesParams(); - CvGBTreesParams( int loss_function_type, int weak_count, float shrinkage, - float subsample_portion, int max_depth, bool use_surrogates ); -}; - -// DataType: CLASS CvGBTrees -// Gradient Boosting Trees (GBT) algorithm implementation. -// -// data - training dataset -// params - parameters of the CvGBTrees -// weak - array[0..(class_count-1)] of CvSeq -// for storing tree ensembles -// orig_response - original responses of the training set samples -// sum_response - predicitons of the current model on the training dataset. -// this matrix is updated on every iteration. -// sum_response_tmp - predicitons of the model on the training set on the next -// step. On every iteration values of sum_responses_tmp are -// computed via sum_responses values. When the current -// step is complete sum_response values become equal to -// sum_responses_tmp. -// sampleIdx - indices of samples used for training the ensemble. -// CvGBTrees training procedure takes a set of samples -// (train_data) and a set of responses (responses). -// Only pairs (train_data[i], responses[i]), where i is -// in sample_idx are used for training the ensemble. -// subsample_train - indices of samples used for training a single decision -// tree on the current step. This indices are countered -// relatively to the sample_idx, so that pairs -// (train_data[sample_idx[i]], responses[sample_idx[i]]) -// are used for training a decision tree. -// Training set is randomly splited -// in two parts (subsample_train and subsample_test) -// on every iteration accordingly to the portion parameter. -// subsample_test - relative indices of samples from the training set, -// which are not used for training a tree on the current -// step. -// missing - mask of the missing values in the training set. This -// matrix has the same size as train_data. 1 - missing -// value, 0 - not a missing value. -// class_labels - output class labels map. -// rng - random number generator. Used for spliting the -// training set. -// class_count - count of output classes. -// class_count == 1 in the case of regression, -// and > 1 in the case of classification. -// delta - Huber loss function parameter. -// base_value - start point of the gradient descent procedure. -// model prediction is -// f(x) = f_0 + sum_{i=1..weak_count-1}(f_i(x)), where -// f_0 is the base value. - - - -class CV_EXPORTS_W CvGBTrees : public CvStatModel +class CV_EXPORTS_W GBTrees : public DTrees { public: + struct CV_EXPORTS_W_MAP Params : public DTrees::Params + { + CV_PROP_RW int weakCount; + CV_PROP_RW int lossFunctionType; + CV_PROP_RW float subsamplePortion; + CV_PROP_RW float shrinkage; + + Params(); + Params( int lossFunctionType, int weakCount, float shrinkage, + float subsamplePortion, int maxDepth, bool useSurrogates ); + }; - /* - // DataType: ENUM - // Loss functions implemented in CvGBTrees. - // - // SQUARED_LOSS - // problem: regression - // loss = (x - x')^2 - // - // ABSOLUTE_LOSS - // problem: regression - // loss = abs(x - x') - // - // HUBER_LOSS - // problem: regression - // loss = delta*( abs(x - x') - delta/2), if abs(x - x') > delta - // 1/2*(x - x')^2, if abs(x - x') <= delta, - // where delta is the alpha-quantile of pseudo responses from - // the training set. - // - // DEVIANCE_LOSS - // problem: classification - // - */ enum {SQUARED_LOSS=0, ABSOLUTE_LOSS, HUBER_LOSS=3, DEVIANCE_LOSS}; + virtual ~GBTrees(); + virtual void setK(int k) = 0; - /* - // Default constructor. Creates a model only (without training). - // Should be followed by one form of the train(...) function. - // - // API - // CvGBTrees(); - - // INPUT - // OUTPUT - // RESULT - */ - CV_WRAP CvGBTrees(); - - - /* - // Full form constructor. Creates a gradient boosting model and does the - // train. - // - // API - // CvGBTrees( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - CvGBTreesParams params=CvGBTreesParams() ); - - // INPUT - // trainData - a set of input feature vectors. - // size of matrix is - // x - // or x - // depending on the tflag parameter. - // matrix values are float. - // tflag - a flag showing how do samples stored in the - // trainData matrix row by row (tflag=CV_ROW_SAMPLE) - // or column by column (tflag=CV_COL_SAMPLE). - // responses - a vector of responses corresponding to the samples - // in trainData. - // varIdx - indices of used variables. zero value means that all - // variables are active. - // sampleIdx - indices of used samples. zero value means that all - // samples from trainData are in the training set. - // varType - vector of length. gives every - // variable type CV_VAR_CATEGORICAL or CV_VAR_ORDERED. - // varType = 0 means all variables are numerical. - // missingDataMask - a mask of misiing values in trainData. - // missingDataMask = 0 means that there are no missing - // values. - // params - parameters of GTB algorithm. - // OUTPUT - // RESULT - */ - CvGBTrees( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - CvGBTreesParams params=CvGBTreesParams() ); - - - /* - // Destructor. - */ - virtual ~CvGBTrees(); - - - /* - // Gradient tree boosting model training - // - // API - // virtual bool train( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - CvGBTreesParams params=CvGBTreesParams(), - bool update=false ); - - // INPUT - // trainData - a set of input feature vectors. - // size of matrix is - // x - // or x - // depending on the tflag parameter. - // matrix values are float. - // tflag - a flag showing how do samples stored in the - // trainData matrix row by row (tflag=CV_ROW_SAMPLE) - // or column by column (tflag=CV_COL_SAMPLE). - // responses - a vector of responses corresponding to the samples - // in trainData. - // varIdx - indices of used variables. zero value means that all - // variables are active. - // sampleIdx - indices of used samples. zero value means that all - // samples from trainData are in the training set. - // varType - vector of length. gives every - // variable type CV_VAR_CATEGORICAL or CV_VAR_ORDERED. - // varType = 0 means all variables are numerical. - // missingDataMask - a mask of misiing values in trainData. - // missingDataMask = 0 means that there are no missing - // values. - // params - parameters of GTB algorithm. - // update - is not supported now. (!) - // OUTPUT - // RESULT - // Error state. - */ - virtual bool train( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - CvGBTreesParams params=CvGBTreesParams(), - bool update=false ); - - - /* - // Gradient tree boosting model training - // - // API - // virtual bool train( CvMLData* data, - CvGBTreesParams params=CvGBTreesParams(), - bool update=false ) {return false;} - - // INPUT - // data - training set. - // params - parameters of GTB algorithm. - // update - is not supported now. (!) - // OUTPUT - // RESULT - // Error state. - */ - virtual bool train( CvMLData* data, - CvGBTreesParams params=CvGBTreesParams(), - bool update=false ); - - - /* - // Response value prediction - // - // API - // virtual float predict_serial( const CvMat* sample, const CvMat* missing=0, - CvMat* weak_responses=0, CvSlice slice = CV_WHOLE_SEQ, - int k=-1 ) const; - - // INPUT - // sample - input sample of the same type as in the training set. - // missing - missing values mask. missing=0 if there are no - // missing values in sample vector. - // weak_responses - predictions of all of the trees. - // not implemented (!) - // slice - part of the ensemble used for prediction. - // slice = CV_WHOLE_SEQ when all trees are used. - // k - number of ensemble used. - // k is in {-1,0,1,..,}. - // in the case of classification problem - // ensembles are built. - // If k = -1 ordinary prediction is the result, - // otherwise function gives the prediction of the - // k-th ensemble only. - // OUTPUT - // RESULT - // Predicted value. - */ - virtual float predict_serial( const CvMat* sample, const CvMat* missing=0, - CvMat* weakResponses=0, CvSlice slice = CV_WHOLE_SEQ, - int k=-1 ) const; - - /* - // Response value prediction. - // Parallel version (in the case of TBB existence) - // - // API - // virtual float predict( const CvMat* sample, const CvMat* missing=0, - CvMat* weak_responses=0, CvSlice slice = CV_WHOLE_SEQ, - int k=-1 ) const; - - // INPUT - // sample - input sample of the same type as in the training set. - // missing - missing values mask. missing=0 if there are no - // missing values in sample vector. - // weak_responses - predictions of all of the trees. - // not implemented (!) - // slice - part of the ensemble used for prediction. - // slice = CV_WHOLE_SEQ when all trees are used. - // k - number of ensemble used. - // k is in {-1,0,1,..,}. - // in the case of classification problem - // ensembles are built. - // If k = -1 ordinary prediction is the result, - // otherwise function gives the prediction of the - // k-th ensemble only. - // OUTPUT - // RESULT - // Predicted value. - */ - virtual float predict( const CvMat* sample, const CvMat* missing=0, - CvMat* weakResponses=0, CvSlice slice = CV_WHOLE_SEQ, - int k=-1 ) const; - - /* - // Deletes all the data. - // - // API - // virtual void clear(); - - // INPUT - // OUTPUT - // delete data, weak, orig_response, sum_response, - // weak_eval, subsample_train, subsample_test, - // sample_idx, missing, lass_labels - // delta = 0.0 - // RESULT - */ - CV_WRAP virtual void clear(); - - /* - // Compute error on the train/test set. - // - // API - // virtual float calc_error( CvMLData* _data, int type, - // std::vector *resp = 0 ); - // - // INPUT - // data - dataset - // type - defines which error is to compute: train (CV_TRAIN_ERROR) or - // test (CV_TEST_ERROR). - // OUTPUT - // resp - vector of predicitons - // RESULT - // Error value. - */ - virtual float calc_error( CvMLData* _data, int type, - std::vector *resp = 0 ); - - /* - // - // Write parameters of the gtb model and data. Write learned model. - // - // API - // virtual void write( CvFileStorage* fs, const char* name ) const; - // - // INPUT - // fs - file storage to read parameters from. - // name - model name. - // OUTPUT - // RESULT - */ - virtual void write( CvFileStorage* fs, const char* name ) const; - - - /* - // - // Read parameters of the gtb model and data. Read learned model. - // - // API - // virtual void read( CvFileStorage* fs, CvFileNode* node ); - // - // INPUT - // fs - file storage to read parameters from. - // node - file node. - // OUTPUT - // RESULT - */ - virtual void read( CvFileStorage* fs, CvFileNode* node ); - - - // new-style C++ interface - CV_WRAP CvGBTrees( const cv::Mat& trainData, int tflag, - const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), - const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), - const cv::Mat& missingDataMask=cv::Mat(), - CvGBTreesParams params=CvGBTreesParams() ); - - CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag, - const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), - const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), - const cv::Mat& missingDataMask=cv::Mat(), - CvGBTreesParams params=CvGBTreesParams(), - bool update=false ); - - CV_WRAP virtual float predict( const cv::Mat& sample, const cv::Mat& missing=cv::Mat(), - const cv::Range& slice = cv::Range::all(), - int k=-1 ) const; - -protected: - - /* - // Compute the gradient vector components. - // - // API - // virtual void find_gradient( const int k = 0); - - // INPUT - // k - used for classification problem, determining current - // tree ensemble. - // OUTPUT - // changes components of data->responses - // which correspond to samples used for training - // on the current step. - // RESULT - */ - virtual void find_gradient( const int k = 0); - - - /* - // - // Change values in tree leaves according to the used loss function. - // - // API - // virtual void change_values(CvDTree* tree, const int k = 0); - // - // INPUT - // tree - decision tree to change. - // k - used for classification problem, determining current - // tree ensemble. - // OUTPUT - // changes 'value' fields of the trees' leaves. - // changes sum_response_tmp. - // RESULT - */ - virtual void change_values(CvDTree* tree, const int k = 0); - - - /* - // - // Find optimal constant prediction value according to the used loss - // function. - // The goal is to find a constant which gives the minimal summary loss - // on the _Idx samples. - // - // API - // virtual float find_optimal_value( const CvMat* _Idx ); - // - // INPUT - // _Idx - indices of the samples from the training set. - // OUTPUT - // RESULT - // optimal constant value. - */ - virtual float find_optimal_value( const CvMat* _Idx ); - - - /* - // - // Randomly split the whole training set in two parts according - // to params.portion. - // - // API - // virtual void do_subsample(); - // - // INPUT - // OUTPUT - // subsample_train - indices of samples used for training - // subsample_test - indices of samples used for test - // RESULT - */ - virtual void do_subsample(); - - - /* - // - // Internal recursive function giving an array of subtree tree leaves. - // - // API - // void leaves_get( CvDTreeNode** leaves, int& count, CvDTreeNode* node ); - // - // INPUT - // node - current leaf. - // OUTPUT - // count - count of leaves in the subtree. - // leaves - array of pointers to leaves. - // RESULT - */ - void leaves_get( CvDTreeNode** leaves, int& count, CvDTreeNode* node ); - - - /* - // - // Get leaves of the tree. - // - // API - // CvDTreeNode** GetLeaves( const CvDTree* dtree, int& len ); - // - // INPUT - // dtree - decision tree. - // OUTPUT - // len - count of the leaves. - // RESULT - // CvDTreeNode** - array of pointers to leaves. - */ - CvDTreeNode** GetLeaves( const CvDTree* dtree, int& len ); - - - /* - // - // Is it a regression or a classification. - // - // API - // bool problem_type(); - // - // INPUT - // OUTPUT - // RESULT - // false if it is a classification problem, - // true - if regression. - */ - virtual bool problem_type() const; - - - /* - // - // Write parameters of the gtb model. - // - // API - // virtual void write_params( CvFileStorage* fs ) const; - // - // INPUT - // fs - file storage to write parameters to. - // OUTPUT - // RESULT - */ - virtual void write_params( CvFileStorage* fs ) const; - - - /* - // - // Read parameters of the gtb model and data. - // - // API - // virtual void read_params( CvFileStorage* fs ); - // - // INPUT - // fs - file storage to read parameters from. - // OUTPUT - // params - parameters of the gtb model. - // data - contains information about the structure - // of the data set (count of variables, - // their types, etc.). - // class_labels - output class labels map. - // RESULT - */ - virtual void read_params( CvFileStorage* fs, CvFileNode* fnode ); - int get_len(const CvMat* mat) const; - - - CvDTreeTrainData* data; - CvGBTreesParams params; - - CvSeq** weak; - CvMat* orig_response; - CvMat* sum_response; - CvMat* sum_response_tmp; - CvMat* sample_idx; - CvMat* subsample_train; - CvMat* subsample_test; - CvMat* missing; - CvMat* class_labels; - - cv::RNG* rng; - - int class_count; - float delta; - float base_value; + virtual float predictSerial( InputArray samples, + OutputArray weakResponses, int flags) const; + static Ptr create(const Params& p); }; - - /****************************************************************************************\ * Artificial Neural Networks (ANN) * \****************************************************************************************/ /////////////////////////////////// Multi-Layer Perceptrons ////////////////////////////// -struct CV_EXPORTS_W_MAP CvANN_MLP_TrainParams -{ - CvANN_MLP_TrainParams(); - CvANN_MLP_TrainParams( CvTermCriteria term_crit, int train_method, - double param1, double param2=0 ); - ~CvANN_MLP_TrainParams(); - - enum { BACKPROP=0, RPROP=1 }; - - CV_PROP_RW CvTermCriteria term_crit; - CV_PROP_RW int train_method; - - // backpropagation parameters - CV_PROP_RW double bp_dw_scale, bp_moment_scale; - - // rprop parameters - CV_PROP_RW double rp_dw0, rp_dw_plus, rp_dw_minus, rp_dw_min, rp_dw_max; -}; - - -class CV_EXPORTS_W CvANN_MLP : public CvStatModel +class CV_EXPORTS_W ANN_MLP : public StatModel { public: - CV_WRAP CvANN_MLP(); - CvANN_MLP( const CvMat* layerSizes, - int activateFunc=CvANN_MLP::SIGMOID_SYM, - double fparam1=0, double fparam2=0 ); - - virtual ~CvANN_MLP(); - - virtual void create( const CvMat* layerSizes, - int activateFunc=CvANN_MLP::SIGMOID_SYM, - double fparam1=0, double fparam2=0 ); - - virtual int train( const CvMat* inputs, const CvMat* outputs, - const CvMat* sampleWeights, const CvMat* sampleIdx=0, - CvANN_MLP_TrainParams params = CvANN_MLP_TrainParams(), - int flags=0 ); - virtual float predict( const CvMat* inputs, CV_OUT CvMat* outputs ) const; + struct CV_EXPORTS_W_MAP Params + { + Params(); + Params( TermCriteria termCrit, int trainMethod, double param1, double param2=0 ); - CV_WRAP CvANN_MLP( const cv::Mat& layerSizes, - int activateFunc=CvANN_MLP::SIGMOID_SYM, - double fparam1=0, double fparam2=0 ); + enum { BACKPROP=0, RPROP=1 }; - CV_WRAP virtual void create( const cv::Mat& layerSizes, - int activateFunc=CvANN_MLP::SIGMOID_SYM, - double fparam1=0, double fparam2=0 ); + CV_PROP_RW TermCriteria termCrit; + CV_PROP_RW int trainMethod; - CV_WRAP virtual int train( const cv::Mat& inputs, const cv::Mat& outputs, - const cv::Mat& sampleWeights, const cv::Mat& sampleIdx=cv::Mat(), - CvANN_MLP_TrainParams params = CvANN_MLP_TrainParams(), - int flags=0 ); + // backpropagation parameters + CV_PROP_RW double bpDWScale, bpMomentScale; - CV_WRAP virtual float predict( const cv::Mat& inputs, CV_OUT cv::Mat& outputs ) const; + // rprop parameters + CV_PROP_RW double rpDW0, rpDWPlus, rpDWMinus, rpDWMin, rpDWMax; + }; - CV_WRAP virtual void clear(); + virtual ~ANN_MLP(); // possible activation functions enum { IDENTITY = 0, SIGMOID_SYM = 1, GAUSSIAN = 2 }; @@ -1941,53 +535,15 @@ public: // available training flags enum { UPDATE_WEIGHTS = 1, NO_INPUT_SCALE = 2, NO_OUTPUT_SCALE = 4 }; - virtual void read( CvFileStorage* fs, CvFileNode* node ); - virtual void write( CvFileStorage* storage, const char* name ) const; + virtual Mat getLayerSizes() const = 0; + virtual Mat getWeights(int layerIdx) const = 0; + virtual void setParams(const Params& p) = 0; + virtual Params getParams() const = 0; - int get_layer_count() { return layer_sizes ? layer_sizes->cols : 0; } - const CvMat* get_layer_sizes() { return layer_sizes; } - double* get_weights(int layer) - { - return layer_sizes && weights && - (unsigned)layer <= (unsigned)layer_sizes->cols ? weights[layer] : 0; - } - - virtual void calc_activ_func_deriv( CvMat* xf, CvMat* deriv, const double* bias ) const; - -protected: - - virtual bool prepare_to_train( const CvMat* _inputs, const CvMat* _outputs, - const CvMat* _sample_weights, const CvMat* sampleIdx, - CvVectors* _ivecs, CvVectors* _ovecs, double** _sw, int _flags ); - - // sequential random backpropagation - virtual int train_backprop( CvVectors _ivecs, CvVectors _ovecs, const double* _sw ); - - // RPROP algorithm - virtual int train_rprop( CvVectors _ivecs, CvVectors _ovecs, const double* _sw ); - - virtual void calc_activ_func( CvMat* xf, const double* bias ) const; - virtual void set_activ_func( int _activ_func=SIGMOID_SYM, - double _f_param1=0, double _f_param2=0 ); - virtual void init_weights(); - virtual void scale_input( const CvMat* _src, CvMat* _dst ) const; - virtual void scale_output( const CvMat* _src, CvMat* _dst ) const; - virtual void calc_input_scale( const CvVectors* vecs, int flags ); - virtual void calc_output_scale( const CvVectors* vecs, int flags ); - - virtual void write_params( CvFileStorage* fs ) const; - virtual void read_params( CvFileStorage* fs, CvFileNode* node ); - - CvMat* layer_sizes; - CvMat* wbuf; - CvMat* sample_weights; - double** weights; - double f_param1, f_param2; - double min_val, max_val, min_val1, max_val1; - int activ_func; - int max_count, max_buf_sz; - CvANN_MLP_TrainParams params; - cv::RNG* rng; + static Ptr create(InputArray layerSizes=noArray(), + const Params& params=Params(), + int activateFunc=ANN_MLP::SIGMOID_SYM, + double fparam1=0, double fparam2=0); }; /****************************************************************************************\ @@ -1996,167 +552,17 @@ protected: /* Generates from multivariate normal distribution, where - is an average row vector, - symmetric covariation matrix */ -CVAPI(void) cvRandMVNormal( CvMat* mean, CvMat* cov, CvMat* sample, - CvRNG* rng CV_DEFAULT(0) ); +CV_EXPORTS void randMVNormal( InputArray mean, InputArray cov, int nsamples, OutputArray samples); /* Generates sample from gaussian mixture distribution */ -CVAPI(void) cvRandGaussMixture( CvMat* means[], - CvMat* covs[], - float weights[], - int clsnum, - CvMat* sample, - CvMat* sampClasses CV_DEFAULT(0) ); - -#define CV_TS_CONCENTRIC_SPHERES 0 +CV_EXPORTS void randGaussMixture( InputArray means, InputArray covs, InputArray weights, + int nsamples, OutputArray samples, OutputArray sampClasses ); /* creates test set */ -CVAPI(void) cvCreateTestSet( int type, CvMat** samples, - int num_samples, - int num_features, - CvMat** responses, - int num_classes, ... ); - -/****************************************************************************************\ -* Data * -\****************************************************************************************/ - -#define CV_COUNT 0 -#define CV_PORTION 1 - -struct CV_EXPORTS CvTrainTestSplit -{ - CvTrainTestSplit(); - CvTrainTestSplit( int train_sample_count, bool mix = true); - CvTrainTestSplit( float train_sample_portion, bool mix = true); - - union - { - int count; - float portion; - } train_sample_part; - int train_sample_part_mode; - - bool mix; -}; - -class CV_EXPORTS CvMLData -{ -public: - CvMLData(); - virtual ~CvMLData(); - - // returns: - // 0 - OK - // -1 - file can not be opened or is not correct - int read_csv( const char* filename ); - - const CvMat* get_values() const; - const CvMat* get_responses(); - const CvMat* get_missing() const; - - void set_header_lines_number( int n ); - int get_header_lines_number() const; - - void set_response_idx( int idx ); // old response become predictors, new response_idx = idx - // if idx < 0 there will be no response - int get_response_idx() const; - - void set_train_test_split( const CvTrainTestSplit * spl ); - const CvMat* get_train_sample_idx() const; - const CvMat* get_test_sample_idx() const; - void mix_train_and_test_idx(); - - const CvMat* get_var_idx(); - void chahge_var_idx( int vi, bool state ); // misspelled (saved for back compitability), - // use change_var_idx - void change_var_idx( int vi, bool state ); // state == true to set vi-variable as predictor - - const CvMat* get_var_types(); - int get_var_type( int var_idx ) const; - // following 2 methods enable to change vars type - // use these methods to assign CV_VAR_CATEGORICAL type for categorical variable - // with numerical labels; in the other cases var types are correctly determined automatically - void set_var_types( const char* str ); // str examples: - // "ord[0-17],cat[18]", "ord[0,2,4,10-12], cat[1,3,5-9,13,14]", - // "cat", "ord" (all vars are categorical/ordered) - void change_var_type( int var_idx, int type); // type in { CV_VAR_ORDERED, CV_VAR_CATEGORICAL } - - void set_delimiter( char ch ); - char get_delimiter() const; - - void set_miss_ch( char ch ); - char get_miss_ch() const; - - const std::map& get_class_labels_map() const; - -protected: - virtual void clear(); - - void str_to_flt_elem( const char* token, float& flt_elem, int& type); - void free_train_test_idx(); - - char delimiter; - char miss_ch; - //char flt_separator; +CV_EXPORTS void createConcentricSpheresTestSet( int nsamples, int nfeatures, int nclasses, + OutputArray samples, OutputArray responses); - CvMat* values; - CvMat* missing; - CvMat* var_types; - CvMat* var_idx_mask; - - CvMat* response_out; // header - CvMat* var_idx_out; // mat - CvMat* var_types_out; // mat - - int header_lines_number; - - int response_idx; - - int train_sample_count; - bool mix; - - int total_class_count; - std::map class_map; - - CvMat* train_sample_idx; - CvMat* test_sample_idx; - int* sample_idx; // data of train_sample_idx and test_sample_idx - - cv::RNG* rng; -}; - - -namespace cv -{ - -typedef CvStatModel StatModel; -typedef CvParamGrid ParamGrid; -typedef CvNormalBayesClassifier NormalBayesClassifier; -typedef CvKNearest KNearest; -typedef CvSVMParams SVMParams; -typedef CvSVMKernel SVMKernel; -typedef CvSVMSolver SVMSolver; -typedef CvSVM SVM; -typedef CvDTreeParams DTreeParams; -typedef CvMLData TrainData; -typedef CvDTree DecisionTree; -typedef CvForestTree ForestTree; -typedef CvRTParams RandomTreeParams; -typedef CvRTrees RandomTrees; -typedef CvERTreeTrainData ERTreeTRainData; -typedef CvForestERTree ERTree; -typedef CvERTrees ERTrees; -typedef CvBoostParams BoostParams; -typedef CvBoostTree BoostTree; -typedef CvBoost Boost; -typedef CvANN_MLP_TrainParams ANN_MLP_TrainParams; -typedef CvANN_MLP NeuralNet_MLP; -typedef CvGBTreesParams GradientBoostingTreeParams; -typedef CvGBTrees GradientBoostingTrees; - -template<> CV_EXPORTS void DefaultDeleter::operator ()(CvDTreeSplit* obj) const; - -CV_EXPORTS bool initModule_ml(void); +} } #endif // __cplusplus diff --git a/modules/ml/src/ann_mlp.cpp b/modules/ml/src/ann_mlp.cpp index 7323ab57a7..19f5572e85 100644 --- a/modules/ml/src/ann_mlp.cpp +++ b/modules/ml/src/ann_mlp.cpp @@ -40,1579 +40,1266 @@ #include "precomp.hpp" -CvANN_MLP_TrainParams::CvANN_MLP_TrainParams() +namespace cv { namespace ml { + +ANN_MLP::~ANN_MLP() {} + +ANN_MLP::Params::Params() { - term_crit = cvTermCriteria( CV_TERMCRIT_ITER + CV_TERMCRIT_EPS, 1000, 0.01 ); - train_method = RPROP; - bp_dw_scale = bp_moment_scale = 0.1; - rp_dw0 = 0.1; rp_dw_plus = 1.2; rp_dw_minus = 0.5; - rp_dw_min = FLT_EPSILON; rp_dw_max = 50.; + termCrit = TermCriteria( TermCriteria::COUNT + TermCriteria::EPS, 1000, 0.01 ); + trainMethod = RPROP; + bpDWScale = bpMomentScale = 0.1; + rpDW0 = 0.1; rpDWPlus = 1.2; rpDWMinus = 0.5; + rpDWMin = FLT_EPSILON; rpDWMax = 50.; } -CvANN_MLP_TrainParams::CvANN_MLP_TrainParams( CvTermCriteria _term_crit, - int _train_method, - double _param1, double _param2 ) +ANN_MLP::Params::Params( TermCriteria _termCrit, int _trainMethod, double _param1, double _param2 ) { - term_crit = _term_crit; - train_method = _train_method; - bp_dw_scale = bp_moment_scale = 0.1; - rp_dw0 = 1.; rp_dw_plus = 1.2; rp_dw_minus = 0.5; - rp_dw_min = FLT_EPSILON; rp_dw_max = 50.; + termCrit = _termCrit; + trainMethod = _trainMethod; + bpDWScale = bpMomentScale = 0.1; + rpDW0 = 1.; rpDWPlus = 1.2; rpDWMinus = 0.5; + rpDWMin = FLT_EPSILON; rpDWMax = 50.; - if( train_method == RPROP ) + if( trainMethod == RPROP ) { - rp_dw0 = _param1; - if( rp_dw0 < FLT_EPSILON ) - rp_dw0 = 1.; - rp_dw_min = _param2; - rp_dw_min = MAX( rp_dw_min, 0 ); + rpDW0 = _param1; + if( rpDW0 < FLT_EPSILON ) + rpDW0 = 1.; + rpDWMin = _param2; + rpDWMin = std::max( rpDWMin, 0. ); } - else if( train_method == BACKPROP ) + else if( trainMethod == BACKPROP ) { - bp_dw_scale = _param1; - if( bp_dw_scale <= 0 ) - bp_dw_scale = 0.1; - bp_dw_scale = MAX( bp_dw_scale, 1e-3 ); - bp_dw_scale = MIN( bp_dw_scale, 1 ); - bp_moment_scale = _param2; - if( bp_moment_scale < 0 ) - bp_moment_scale = 0.1; - bp_moment_scale = MIN( bp_moment_scale, 1 ); + bpDWScale = _param1; + if( bpDWScale <= 0 ) + bpDWScale = 0.1; + bpDWScale = std::max( bpDWScale, 1e-3 ); + bpDWScale = std::min( bpDWScale, 1. ); + bpMomentScale = _param2; + if( bpMomentScale < 0 ) + bpMomentScale = 0.1; + bpMomentScale = std::min( bpMomentScale, 1. ); } else - train_method = RPROP; -} - - -CvANN_MLP_TrainParams::~CvANN_MLP_TrainParams() -{ -} - - -CvANN_MLP::CvANN_MLP() -{ - layer_sizes = wbuf = 0; - min_val = max_val = min_val1 = max_val1 = 0.; - weights = 0; - rng = &cv::theRNG(); - default_model_name = "my_nn"; - clear(); -} - - -CvANN_MLP::CvANN_MLP( const CvMat* _layer_sizes, - int _activ_func, - double _f_param1, double _f_param2 ) -{ - layer_sizes = wbuf = 0; - min_val = max_val = min_val1 = max_val1 = 0.; - weights = 0; - rng = &cv::theRNG(); - default_model_name = "my_nn"; - create( _layer_sizes, _activ_func, _f_param1, _f_param2 ); -} - - -CvANN_MLP::~CvANN_MLP() -{ - clear(); -} - - -void CvANN_MLP::clear() -{ - cvReleaseMat( &layer_sizes ); - cvReleaseMat( &wbuf ); - cvFree( &weights ); - activ_func = SIGMOID_SYM; - f_param1 = f_param2 = 1; - max_buf_sz = 1 << 12; + trainMethod = RPROP; } -void CvANN_MLP::set_activ_func( int _activ_func, double _f_param1, double _f_param2 ) +class ANN_MLPImpl : public ANN_MLP { - CV_FUNCNAME( "CvANN_MLP::set_activ_func" ); - - __BEGIN__; - - if( _activ_func < 0 || _activ_func > GAUSSIAN ) - CV_ERROR( CV_StsOutOfRange, "Unknown activation function" ); - - activ_func = _activ_func; - - switch( activ_func ) +public: + ANN_MLPImpl() { - case SIGMOID_SYM: - max_val = 0.95; min_val = -max_val; - max_val1 = 0.98; min_val1 = -max_val1; - if( fabs(_f_param1) < FLT_EPSILON ) - _f_param1 = 2./3; - if( fabs(_f_param2) < FLT_EPSILON ) - _f_param2 = 1.7159; - break; - case GAUSSIAN: - max_val = 1.; min_val = 0.05; - max_val1 = 1.; min_val1 = 0.02; - if( fabs(_f_param1) < FLT_EPSILON ) - _f_param1 = 1.; - if( fabs(_f_param2) < FLT_EPSILON ) - _f_param2 = 1.; - break; - default: - min_val = max_val = min_val1 = max_val1 = 0.; - _f_param1 = 1.; - _f_param2 = 0.; + clear(); } - f_param1 = _f_param1; - f_param2 = _f_param2; - - __END__; -} - - -void CvANN_MLP::init_weights() -{ - int i, j, k; - - for( i = 1; i < layer_sizes->cols; i++ ) + ANN_MLPImpl( const Mat& _layer_sizes, int _activ_func, + double _f_param1, double _f_param2 ) { - int n1 = layer_sizes->data.i[i-1]; - int n2 = layer_sizes->data.i[i]; - double val = 0, G = n2 > 2 ? 0.7*pow((double)n1,1./(n2-1)) : 1.; - double* w = weights[i]; - - // initialize weights using Nguyen-Widrow algorithm - for( j = 0; j < n2; j++ ) - { - double s = 0; - for( k = 0; k <= n1; k++ ) - { - val = rng->uniform(0., 1.)*2-1.; - w[k*n2 + j] = val; - s += fabs(val); - } - - if( i < layer_sizes->cols - 1 ) - { - s = 1./(s - fabs(val)); - for( k = 0; k <= n1; k++ ) - w[k*n2 + j] *= s; - w[n1*n2 + j] *= G*(-1+j*2./n2); - } - } + clear(); + create( _layer_sizes, _activ_func, _f_param1, _f_param2 ); } -} + virtual ~ANN_MLPImpl() {} -void CvANN_MLP::create( const CvMat* _layer_sizes, int _activ_func, - double _f_param1, double _f_param2 ) -{ - CV_FUNCNAME( "CvANN_MLP::create" ); - - __BEGIN__; - - int i, l_step, l_count, buf_sz = 0; - int *l_src, *l_dst; - - clear(); - - if( !CV_IS_MAT(_layer_sizes) || - (_layer_sizes->cols != 1 && _layer_sizes->rows != 1) || - CV_MAT_TYPE(_layer_sizes->type) != CV_32SC1 ) - CV_ERROR( CV_StsBadArg, - "The array of layer neuron counters must be an integer vector" ); - - CV_CALL( set_activ_func( _activ_func, _f_param1, _f_param2 )); - - l_count = _layer_sizes->rows + _layer_sizes->cols - 1; - l_src = _layer_sizes->data.i; - l_step = CV_IS_MAT_CONT(_layer_sizes->type) ? 1 : - _layer_sizes->step / sizeof(l_src[0]); - CV_CALL( layer_sizes = cvCreateMat( 1, l_count, CV_32SC1 )); - l_dst = layer_sizes->data.i; - - max_count = 0; - for( i = 0; i < l_count; i++ ) + void clear() { - int n = l_src[i*l_step]; - if( n < 1 + (0 < i && i < l_count-1)) - CV_ERROR( CV_StsOutOfRange, - "there should be at least one input and one output " - "and every hidden layer must have more than 1 neuron" ); - l_dst[i] = n; - max_count = MAX( max_count, n ); - if( i > 0 ) - buf_sz += (l_dst[i-1]+1)*n; + min_val = max_val = min_val1 = max_val1 = 0.; + rng = RNG(-1); + weights.clear(); + trained = false; } - buf_sz += (l_dst[0] + l_dst[l_count-1]*2)*2; - - CV_CALL( wbuf = cvCreateMat( 1, buf_sz, CV_64F )); - CV_CALL( weights = (double**)cvAlloc( (l_count+2)*sizeof(weights[0]) )); + int layer_count() const { return (int)layer_sizes.size(); } - weights[0] = wbuf->data.db; - weights[1] = weights[0] + l_dst[0]*2; - for( i = 1; i < l_count; i++ ) - weights[i+1] = weights[i] + (l_dst[i-1] + 1)*l_dst[i]; - weights[l_count+1] = weights[l_count] + l_dst[l_count-1]*2; + void set_activ_func( int _activ_func, double _f_param1, double _f_param2 ) + { + if( _activ_func < 0 || _activ_func > GAUSSIAN ) + CV_Error( CV_StsOutOfRange, "Unknown activation function" ); - __END__; -} + activ_func = _activ_func; + switch( activ_func ) + { + case SIGMOID_SYM: + max_val = 0.95; min_val = -max_val; + max_val1 = 0.98; min_val1 = -max_val1; + if( fabs(_f_param1) < FLT_EPSILON ) + _f_param1 = 2./3; + if( fabs(_f_param2) < FLT_EPSILON ) + _f_param2 = 1.7159; + break; + case GAUSSIAN: + max_val = 1.; min_val = 0.05; + max_val1 = 1.; min_val1 = 0.02; + if( fabs(_f_param1) < FLT_EPSILON ) + _f_param1 = 1.; + if( fabs(_f_param2) < FLT_EPSILON ) + _f_param2 = 1.; + break; + default: + min_val = max_val = min_val1 = max_val1 = 0.; + _f_param1 = 1.; + _f_param2 = 0.; + } -float CvANN_MLP::predict( const CvMat* _inputs, CvMat* _outputs ) const -{ - int i, j, n, dn = 0, l_count, dn0, buf_sz, min_buf_sz; - - if( !layer_sizes ) - CV_Error( CV_StsError, "The network has not been initialized" ); - - if( !CV_IS_MAT(_inputs) || !CV_IS_MAT(_outputs) || - !CV_ARE_TYPES_EQ(_inputs,_outputs) || - (CV_MAT_TYPE(_inputs->type) != CV_32FC1 && - CV_MAT_TYPE(_inputs->type) != CV_64FC1) || - _inputs->rows != _outputs->rows ) - CV_Error( CV_StsBadArg, "Both input and output must be floating-point matrices " - "of the same type and have the same number of rows" ); - - if( _inputs->cols != layer_sizes->data.i[0] ) - CV_Error( CV_StsBadSize, "input matrix must have the same number of columns as " - "the number of neurons in the input layer" ); - - if( _outputs->cols != layer_sizes->data.i[layer_sizes->cols - 1] ) - CV_Error( CV_StsBadSize, "output matrix must have the same number of columns as " - "the number of neurons in the output layer" ); - n = dn0 = _inputs->rows; - min_buf_sz = 2*max_count; - buf_sz = n*min_buf_sz; - - if( buf_sz > max_buf_sz ) - { - dn0 = max_buf_sz/min_buf_sz; - dn0 = MAX( dn0, 1 ); - buf_sz = dn0*min_buf_sz; + f_param1 = _f_param1; + f_param2 = _f_param2; } - cv::AutoBuffer buf(buf_sz); - l_count = layer_sizes->cols; - for( i = 0; i < n; i += dn ) + void init_weights() { - CvMat hdr[2], _w, *layer_in = &hdr[0], *layer_out = &hdr[1], *temp; - dn = MIN( dn0, n - i ); + int i, j, k, l_count = layer_count(); - cvGetRows( _inputs, layer_in, i, i + dn ); - cvInitMatHeader( layer_out, dn, layer_in->cols, CV_64F, &buf[0] ); - - scale_input( layer_in, layer_out ); - CV_SWAP( layer_in, layer_out, temp ); - - for( j = 1; j < l_count; j++ ) + for( i = 1; i < l_count; i++ ) { - double* data = buf + (j&1 ? max_count*dn0 : 0); - int cols = layer_sizes->data.i[j]; + int n1 = layer_sizes[i-1]; + int n2 = layer_sizes[i]; + double val = 0, G = n2 > 2 ? 0.7*pow((double)n1,1./(n2-1)) : 1.; + double* w = weights[i].ptr(); - cvInitMatHeader( layer_out, dn, cols, CV_64F, data ); - cvInitMatHeader( &_w, layer_in->cols, layer_out->cols, CV_64F, weights[j] ); - cvGEMM( layer_in, &_w, 1, 0, 0, layer_out ); - calc_activ_func( layer_out, _w.data.db + _w.rows*_w.cols ); + // initialize weights using Nguyen-Widrow algorithm + for( j = 0; j < n2; j++ ) + { + double s = 0; + for( k = 0; k <= n1; k++ ) + { + val = rng.uniform(0., 1.)*2-1.; + w[k*n2 + j] = val; + s += fabs(val); + } - CV_SWAP( layer_in, layer_out, temp ); + if( i < l_count - 1 ) + { + s = 1./(s - fabs(val)); + for( k = 0; k <= n1; k++ ) + w[k*n2 + j] *= s; + w[n1*n2 + j] *= G*(-1+j*2./n2); + } + } } - - cvGetRows( _outputs, layer_out, i, i + dn ); - scale_output( layer_in, layer_out ); } - return 0.f; -} - - -void CvANN_MLP::scale_input( const CvMat* _src, CvMat* _dst ) const -{ - int i, j, cols = _src->cols; - double* dst = _dst->data.db; - const double* w = weights[0]; - int step = _src->step; - - if( CV_MAT_TYPE( _src->type ) == CV_32F ) - { - const float* src = _src->data.fl; - step /= sizeof(src[0]); - - for( i = 0; i < _src->rows; i++, src += step, dst += cols ) - for( j = 0; j < cols; j++ ) - dst[j] = src[j]*w[j*2] + w[j*2+1]; - } - else + void create( InputArray _layer_sizes, int _activ_func, + double _f_param1, double _f_param2 ) { - const double* src = _src->data.db; - step /= sizeof(src[0]); + clear(); - for( i = 0; i < _src->rows; i++, src += step, dst += cols ) - for( j = 0; j < cols; j++ ) - dst[j] = src[j]*w[j*2] + w[j*2+1]; - } -} + _layer_sizes.copyTo(layer_sizes); + int l_count = layer_count(); + set_activ_func( _activ_func, _f_param1, _f_param2 ); -void CvANN_MLP::scale_output( const CvMat* _src, CvMat* _dst ) const -{ - int i, j, cols = _src->cols; - const double* src = _src->data.db; - const double* w = weights[layer_sizes->cols]; - int step = _dst->step; - - if( CV_MAT_TYPE( _dst->type ) == CV_32F ) - { - float* dst = _dst->data.fl; - step /= sizeof(dst[0]); + weights.resize(l_count + 2); + max_lsize = 0; - for( i = 0; i < _src->rows; i++, src += cols, dst += step ) - for( j = 0; j < cols; j++ ) - dst[j] = (float)(src[j]*w[j*2] + w[j*2+1]); - } - else - { - double* dst = _dst->data.db; - step /= sizeof(dst[0]); + if( l_count > 0 ) + { + for( int i = 0; i < l_count; i++ ) + { + int n = layer_sizes[i]; + if( n < 1 + (0 < i && i < l_count-1)) + CV_Error( CV_StsOutOfRange, + "there should be at least one input and one output " + "and every hidden layer must have more than 1 neuron" ); + max_lsize = std::max( max_lsize, n ); + if( i > 0 ) + weights[i].create(layer_sizes[i-1]+1, n, CV_64F); + } - for( i = 0; i < _src->rows; i++, src += cols, dst += step ) - for( j = 0; j < cols; j++ ) - dst[j] = src[j]*w[j*2] + w[j*2+1]; + int ninputs = layer_sizes.front(); + int noutputs = layer_sizes.back(); + weights[0].create(1, ninputs*2, CV_64F); + weights[l_count].create(1, noutputs*2, CV_64F); + weights[l_count+1].create(1, noutputs*2, CV_64F); + } } -} - -void CvANN_MLP::calc_activ_func( CvMat* sums, const double* bias ) const -{ - int i, j, n = sums->rows, cols = sums->cols; - double* data = sums->data.db; - double scale = 0, scale2 = f_param2; - - switch( activ_func ) + float predict( InputArray _inputs, OutputArray _outputs, int ) const { - case IDENTITY: - scale = 1.; - break; - case SIGMOID_SYM: - scale = -f_param1; - break; - case GAUSSIAN: - scale = -f_param1*f_param1; - break; - default: - ; - } + if( !trained ) + CV_Error( CV_StsError, "The network has not been trained or loaded" ); - assert( CV_IS_MAT_CONT(sums->type) ); + Mat inputs = _inputs.getMat(); + int type = inputs.type(), l_count = layer_count(); + int n = inputs.rows, dn0 = n; - if( activ_func != GAUSSIAN ) - { - for( i = 0; i < n; i++, data += cols ) - for( j = 0; j < cols; j++ ) - data[j] = (data[j] + bias[j])*scale; + CV_Assert( (type == CV_32F || type == CV_64F) && inputs.cols == layer_sizes[0] ); + _outputs.create(n, layer_sizes[l_count-1], type); - if( activ_func == IDENTITY ) - return; - } - else - { - for( i = 0; i < n; i++, data += cols ) - for( j = 0; j < cols; j++ ) - { - double t = data[j] + bias[j]; - data[j] = t*t*scale; - } - } - - cvExp( sums, sums ); + Mat outputs = _outputs.getMat(); - n *= cols; - data -= n; + int min_buf_sz = 2*max_lsize; + int buf_sz = n*min_buf_sz; - switch( activ_func ) - { - case SIGMOID_SYM: - for( i = 0; i <= n - 4; i += 4 ) + if( buf_sz > max_buf_sz ) { - double x0 = 1.+data[i], x1 = 1.+data[i+1], x2 = 1.+data[i+2], x3 = 1.+data[i+3]; - double a = x0*x1, b = x2*x3, d = scale2/(a*b), t0, t1; - a *= d; b *= d; - t0 = (2 - x0)*b*x1; t1 = (2 - x1)*b*x0; - data[i] = t0; data[i+1] = t1; - t0 = (2 - x2)*a*x3; t1 = (2 - x3)*a*x2; - data[i+2] = t0; data[i+3] = t1; + dn0 = max_buf_sz/min_buf_sz; + dn0 = std::max( dn0, 1 ); + buf_sz = dn0*min_buf_sz; } - for( ; i < n; i++ ) + cv::AutoBuffer _buf(buf_sz); + double* buf = _buf; + + int dn = 0; + for( int i = 0; i < n; i += dn ) { - double t = scale2*(1. - data[i])/(1. + data[i]); - data[i] = t; - } - break; + dn = std::min( dn0, n - i ); - case GAUSSIAN: - for( i = 0; i < n; i++ ) - data[i] = scale2*data[i]; - break; + Mat layer_in = inputs.rowRange(i, i + dn); + Mat layer_out( dn, layer_in.cols, CV_64F, buf); - default: - ; - } -} + scale_input( layer_in, layer_out ); + layer_in = layer_out; + for( int j = 1; j < l_count; j++ ) + { + double* data = buf + ((j&1) ? max_lsize*dn0 : 0); + int cols = layer_sizes[j]; -void CvANN_MLP::calc_activ_func_deriv( CvMat* _xf, CvMat* _df, - const double* bias ) const -{ - int i, j, n = _xf->rows, cols = _xf->cols; - double* xf = _xf->data.db; - double* df = _df->data.db; - double scale, scale2 = f_param2; - assert( CV_IS_MAT_CONT( _xf->type & _df->type ) ); + layer_out = Mat(dn, cols, CV_64F, data); + Mat w = weights[i].rowRange(0, layer_in.cols); + gemm(layer_in, w, 1, noArray(), 0, layer_out); + calc_activ_func( layer_out, weights[i] ); - if( activ_func == IDENTITY ) - { - for( i = 0; i < n; i++, xf += cols, df += cols ) - for( j = 0; j < cols; j++ ) - { - xf[j] += bias[j]; - df[j] = 1; - } - return; - } - else if( activ_func == GAUSSIAN ) - { - scale = -f_param1*f_param1; - scale2 *= scale; - for( i = 0; i < n; i++, xf += cols, df += cols ) - for( j = 0; j < cols; j++ ) - { - double t = xf[j] + bias[j]; - df[j] = t*2*scale2; - xf[j] = t*t*scale; + layer_in = layer_out; } - cvExp( _xf, _xf ); - n *= cols; - xf -= n; df -= n; + layer_out = outputs.rowRange(i, i + dn); + scale_output( layer_in, layer_out ); + } - for( i = 0; i < n; i++ ) - df[i] *= xf[i]; + return 0.f; } - else + + void scale_input( const Mat& _src, Mat& _dst ) const { - scale = f_param1; - for( i = 0; i < n; i++, xf += cols, df += cols ) - for( j = 0; j < cols; j++ ) + int cols = _src.cols; + const double* w = weights[0].ptr(); + + if( _src.type() == CV_32F ) + { + for( int i = 0; i < _src.rows; i++ ) { - xf[j] = (xf[j] + bias[j])*scale; - df[j] = -fabs(xf[j]); + const float* src = _src.ptr(i); + double* dst = _dst.ptr(i); + for( int j = 0; j < cols; j++ ) + dst[j] = src[j]*w[j*2] + w[j*2+1]; } - - cvExp( _df, _df ); - - n *= cols; - xf -= n; df -= n; - - // ((1+exp(-ax))^-1)'=a*((1+exp(-ax))^-2)*exp(-ax); - // ((1-exp(-ax))/(1+exp(-ax)))'=(a*exp(-ax)*(1+exp(-ax)) + a*exp(-ax)*(1-exp(-ax)))/(1+exp(-ax))^2= - // 2*a*exp(-ax)/(1+exp(-ax))^2 - scale *= 2*f_param2; - for( i = 0; i < n; i++ ) + } + else { - int s0 = xf[i] > 0 ? 1 : -1; - double t0 = 1./(1. + df[i]); - double t1 = scale*df[i]*t0*t0; - t0 *= scale2*(1. - df[i])*s0; - df[i] = t1; - xf[i] = t0; + for( int i = 0; i < _src.rows; i++ ) + { + const float* src = _src.ptr(i); + double* dst = _dst.ptr(i); + for( int j = 0; j < cols; j++ ) + dst[j] = src[j]*w[j*2] + w[j*2+1]; + } } } -} - - -void CvANN_MLP::calc_input_scale( const CvVectors* vecs, int flags ) -{ - bool reset_weights = (flags & UPDATE_WEIGHTS) == 0; - bool no_scale = (flags & NO_INPUT_SCALE) != 0; - double* scale = weights[0]; - int count = vecs->count; - if( reset_weights ) + void scale_output( const Mat& _src, Mat& _dst ) const { - int i, j, vcount = layer_sizes->data.i[0]; - int type = vecs->type; - double a = no_scale ? 1. : 0.; + int cols = _src.cols; + const double* w = weights[layer_count()].ptr(); - for( j = 0; j < vcount; j++ ) - scale[2*j] = a, scale[j*2+1] = 0.; - - if( no_scale ) - return; - - for( i = 0; i < count; i++ ) + if( _dst.type() == CV_32F ) { - const float* f = vecs->data.fl[i]; - const double* d = vecs->data.db[i]; - for( j = 0; j < vcount; j++ ) + for( int i = 0; i < _src.rows; i++ ) { - double t = type == CV_32F ? (double)f[j] : d[j]; - scale[j*2] += t; - scale[j*2+1] += t*t; + const double* src = _src.ptr(i); + float* dst = _dst.ptr(i); + for( int j = 0; j < cols; j++ ) + dst[j] = (float)(src[j]*w[j*2] + w[j*2+1]); } } - - for( j = 0; j < vcount; j++ ) + else { - double s = scale[j*2], s2 = scale[j*2+1]; - double m = s/count, sigma2 = s2/count - m*m; - scale[j*2] = sigma2 < DBL_EPSILON ? 1 : 1./sqrt(sigma2); - scale[j*2+1] = -m*scale[j*2]; + for( int i = 0; i < _src.rows; i++ ) + { + const double* src = _src.ptr(i); + double* dst = _dst.ptr(i); + for( int j = 0; j < cols; j++ ) + dst[j] = src[j]*w[j*2] + w[j*2+1]; + } } } -} - - -void CvANN_MLP::calc_output_scale( const CvVectors* vecs, int flags ) -{ - int i, j, vcount = layer_sizes->data.i[layer_sizes->cols-1]; - int type = vecs->type; - double m = min_val, M = max_val, m1 = min_val1, M1 = max_val1; - bool reset_weights = (flags & UPDATE_WEIGHTS) == 0; - bool no_scale = (flags & NO_OUTPUT_SCALE) != 0; - int l_count = layer_sizes->cols; - double* scale = weights[l_count]; - double* inv_scale = weights[l_count+1]; - int count = vecs->count; - - CV_FUNCNAME( "CvANN_MLP::calc_output_scale" ); - __BEGIN__; - - if( reset_weights ) + void calc_activ_func( Mat& sums, const Mat& w ) const { - double a0 = no_scale ? 1 : DBL_MAX, b0 = no_scale ? 0 : -DBL_MAX; + const double* bias = w.ptr(w.rows-1); + int i, j, n = sums.rows, cols = sums.cols; + double scale = 0, scale2 = f_param2; - for( j = 0; j < vcount; j++ ) + switch( activ_func ) { - scale[2*j] = inv_scale[2*j] = a0; - scale[j*2+1] = inv_scale[2*j+1] = b0; + case IDENTITY: + scale = 1.; + break; + case SIGMOID_SYM: + scale = -f_param1; + break; + case GAUSSIAN: + scale = -f_param1*f_param1; + break; + default: + ; } - if( no_scale ) - EXIT; - } - - for( i = 0; i < count; i++ ) - { - const float* f = vecs->data.fl[i]; - const double* d = vecs->data.db[i]; + CV_Assert( sums.isContinuous() ); - for( j = 0; j < vcount; j++ ) + if( activ_func != GAUSSIAN ) { - double t = type == CV_32F ? (double)f[j] : d[j]; - - if( reset_weights ) + for( i = 0; i < n; i++ ) { - double mj = scale[j*2], Mj = scale[j*2+1]; - if( mj > t ) mj = t; - if( Mj < t ) Mj = t; - - scale[j*2] = mj; - scale[j*2+1] = Mj; + double* data = sums.ptr(i); + for( j = 0; j < cols; j++ ) + data[j] = (data[j] + bias[j])*scale; } - else + + if( activ_func == IDENTITY ) + return; + } + else + { + for( i = 0; i < n; i++ ) { - t = t*inv_scale[j*2] + inv_scale[2*j+1]; - if( t < m1 || t > M1 ) - CV_ERROR( CV_StsOutOfRange, - "Some of new output training vector components run exceed the original range too much" ); + double* data = sums.ptr(i); + for( j = 0; j < cols; j++ ) + { + double t = data[j] + bias[j]; + data[j] = t*t*scale; + } } } - } - if( reset_weights ) - for( j = 0; j < vcount; j++ ) + exp( sums, sums ); + + if( sums.isContinuous() ) { - // map mj..Mj to m..M - double mj = scale[j*2], Mj = scale[j*2+1]; - double a, b; - double delta = Mj - mj; - if( delta < DBL_EPSILON ) - a = 1, b = (M + m - Mj - mj)*0.5; - else - a = (M - m)/delta, b = m - mj*a; - inv_scale[j*2] = a; inv_scale[j*2+1] = b; - a = 1./a; b = -b*a; - scale[j*2] = a; scale[j*2+1] = b; + cols *= n; + n = 1; } - __END__; -} + switch( activ_func ) + { + case SIGMOID_SYM: + for( i = 0; i < n; i++ ) + { + double* data = sums.ptr(i); + for( j = 0; j < cols; j++ ) + { + double t = scale2*(1. - data[j])/(1. + data[j]); + data[j] = t; + } + } + break; + case GAUSSIAN: + for( i = 0; i < n; j++ ) + { + double* data = sums.ptr(i); + for( j = 0; j < cols; j++ ) + data[j] = scale2*data[j]; + } + break; -bool CvANN_MLP::prepare_to_train( const CvMat* _inputs, const CvMat* _outputs, - const CvMat* _sample_weights, const CvMat* _sample_idx, - CvVectors* _ivecs, CvVectors* _ovecs, double** _sw, int _flags ) -{ - bool ok = false; - CvMat* sample_idx = 0; - CvVectors ivecs, ovecs; - double* sw = 0; - int count = 0; - - CV_FUNCNAME( "CvANN_MLP::prepare_to_train" ); - - ivecs.data.ptr = ovecs.data.ptr = 0; - assert( _ivecs && _ovecs ); - - __BEGIN__; - - const int* sidx = 0; - int i, sw_type = 0, sw_count = 0; - int sw_step = 0; - double sw_sum = 0; - - if( !layer_sizes ) - CV_ERROR( CV_StsError, - "The network has not been created. Use method create or the appropriate constructor" ); - - if( !CV_IS_MAT(_inputs) || (CV_MAT_TYPE(_inputs->type) != CV_32FC1 && - CV_MAT_TYPE(_inputs->type) != CV_64FC1) || _inputs->cols != layer_sizes->data.i[0] ) - CV_ERROR( CV_StsBadArg, - "input training data should be a floating-point matrix with" - "the number of rows equal to the number of training samples and " - "the number of columns equal to the size of 0-th (input) layer" ); - - if( !CV_IS_MAT(_outputs) || (CV_MAT_TYPE(_outputs->type) != CV_32FC1 && - CV_MAT_TYPE(_outputs->type) != CV_64FC1) || - _outputs->cols != layer_sizes->data.i[layer_sizes->cols - 1] ) - CV_ERROR( CV_StsBadArg, - "output training data should be a floating-point matrix with" - "the number of rows equal to the number of training samples and " - "the number of columns equal to the size of last (output) layer" ); - - if( _inputs->rows != _outputs->rows ) - CV_ERROR( CV_StsUnmatchedSizes, "The numbers of input and output samples do not match" ); - - if( _sample_idx ) - { - CV_CALL( sample_idx = cvPreprocessIndexArray( _sample_idx, _inputs->rows )); - sidx = sample_idx->data.i; - count = sample_idx->cols + sample_idx->rows - 1; + default: + ; + } } - else - count = _inputs->rows; - if( _sample_weights ) + void calc_activ_func_deriv( Mat& _xf, Mat& _df, const Mat& w ) const { - if( !CV_IS_MAT(_sample_weights) ) - CV_ERROR( CV_StsBadArg, "sample_weights (if passed) must be a valid matrix" ); - - sw_type = CV_MAT_TYPE(_sample_weights->type); - sw_count = _sample_weights->cols + _sample_weights->rows - 1; - - if( (sw_type != CV_32FC1 && sw_type != CV_64FC1) || - (_sample_weights->cols != 1 && _sample_weights->rows != 1) || - (sw_count != count && sw_count != _inputs->rows) ) - CV_ERROR( CV_StsBadArg, - "sample_weights must be 1d floating-point vector containing weights " - "of all or selected training samples" ); + const double* bias = w.ptr(w.rows-1); + int i, j, n = _xf.rows, cols = _xf.cols; - sw_step = CV_IS_MAT_CONT(_sample_weights->type) ? 1 : - _sample_weights->step/CV_ELEM_SIZE(sw_type); + if( activ_func == IDENTITY ) + { + for( i = 0; i < n; i++ ) + { + double* xf = _xf.ptr(i); + double* df = _df.ptr(i); - CV_CALL( sw = (double*)cvAlloc( count*sizeof(sw[0]) )); - } + for( j = 0; j < cols; j++ ) + { + xf[j] += bias[j]; + df[j] = 1; + } + } + } + else if( activ_func == GAUSSIAN ) + { + double scale = -f_param1*f_param1; + double scale2 = scale*f_param2; + for( i = 0; i < n; i++ ) + { + double* xf = _xf.ptr(i); + double* df = _df.ptr(i); - CV_CALL( ivecs.data.ptr = (uchar**)cvAlloc( count*sizeof(ivecs.data.ptr[0]) )); - CV_CALL( ovecs.data.ptr = (uchar**)cvAlloc( count*sizeof(ovecs.data.ptr[0]) )); + for( j = 0; j < cols; j++ ) + { + double t = xf[j] + bias[j]; + df[j] = t*2*scale2; + xf[j] = t*t*scale; + } + } + exp( _xf, _xf ); - ivecs.type = CV_MAT_TYPE(_inputs->type); - ovecs.type = CV_MAT_TYPE(_outputs->type); - ivecs.count = ovecs.count = count; + for( i = 0; i < n; i++ ) + { + double* xf = _xf.ptr(i); + double* df = _df.ptr(i); - for( i = 0; i < count; i++ ) - { - int idx = sidx ? sidx[i] : i; - ivecs.data.ptr[i] = _inputs->data.ptr + idx*_inputs->step; - ovecs.data.ptr[i] = _outputs->data.ptr + idx*_outputs->step; - if( sw ) - { - int si = sw_count == count ? i : idx; - double w = sw_type == CV_32FC1 ? - (double)_sample_weights->data.fl[si*sw_step] : - _sample_weights->data.db[si*sw_step]; - sw[i] = w; - if( w < 0 ) - CV_ERROR( CV_StsOutOfRange, "some of sample weights are negative" ); - sw_sum += w; + for( j = 0; j < cols; j++ ) + df[j] *= xf[j]; + } } - } + else + { + double scale = f_param1; + double scale2 = f_param2; - // normalize weights - if( sw ) - { - sw_sum = sw_sum > DBL_EPSILON ? 1./sw_sum : 0; - for( i = 0; i < count; i++ ) - sw[i] *= sw_sum; - } + for( i = 0; i < n; i++ ) + { + double* xf = _xf.ptr(i); + double* df = _df.ptr(i); - calc_input_scale( &ivecs, _flags ); - CV_CALL( calc_output_scale( &ovecs, _flags )); + for( j = 0; j < cols; j++ ) + { + xf[j] = (xf[j] + bias[j])*scale; + df[j] = -fabs(xf[j]); + } + } - ok = true; + exp( _df, _df ); - __END__; + // ((1+exp(-ax))^-1)'=a*((1+exp(-ax))^-2)*exp(-ax); + // ((1-exp(-ax))/(1+exp(-ax)))'=(a*exp(-ax)*(1+exp(-ax)) + a*exp(-ax)*(1-exp(-ax)))/(1+exp(-ax))^2= + // 2*a*exp(-ax)/(1+exp(-ax))^2 + scale *= 2*f_param2; + for( i = 0; i < n; i++ ) + { + double* xf = _xf.ptr(i); + double* df = _df.ptr(i); - if( !ok ) - { - cvFree( &ivecs.data.ptr ); - cvFree( &ovecs.data.ptr ); - cvFree( &sw ); + for( j = 0; j < cols; j++ ) + { + int s0 = xf[j] > 0 ? 1 : -1; + double t0 = 1./(1. + df[j]); + double t1 = scale*df[j]*t0*t0; + t0 *= scale2*(1. - df[j])*s0; + df[j] = t1; + xf[j] = t0; + } + } + } } - cvReleaseMat( &sample_idx ); - *_ivecs = ivecs; - *_ovecs = ovecs; - *_sw = sw; - - return ok; -} + void calc_input_scale( const Mat& inputs, int flags ) + { + bool reset_weights = (flags & UPDATE_WEIGHTS) == 0; + bool no_scale = (flags & NO_INPUT_SCALE) != 0; + double* scale = weights[0].ptr(); + int count = inputs.rows; + if( reset_weights ) + { + int i, j, vcount = layer_sizes[0]; + int type = inputs.type(); + double a = no_scale ? 1. : 0.; -int CvANN_MLP::train( const CvMat* _inputs, const CvMat* _outputs, - const CvMat* _sample_weights, const CvMat* _sample_idx, - CvANN_MLP_TrainParams _params, int flags ) -{ - const int MAX_ITER = 1000; - const double DEFAULT_EPSILON = FLT_EPSILON; + for( j = 0; j < vcount; j++ ) + scale[2*j] = a, scale[j*2+1] = 0.; - double* sw = 0; - CvVectors x0, u; - int iter = -1; + if( no_scale ) + return; - x0.data.ptr = u.data.ptr = 0; + for( i = 0; i < count; i++ ) + { + const uchar* p = inputs.ptr(i); + const float* f = (const float*)p; + const double* d = (const double*)p; + for( j = 0; j < vcount; j++ ) + { + double t = type == CV_32F ? (double)f[j] : d[j]; + scale[j*2] += t; + scale[j*2+1] += t*t; + } + } - CV_FUNCNAME( "CvANN_MLP::train" ); + for( j = 0; j < vcount; j++ ) + { + double s = scale[j*2], s2 = scale[j*2+1]; + double m = s/count, sigma2 = s2/count - m*m; + scale[j*2] = sigma2 < DBL_EPSILON ? 1 : 1./sqrt(sigma2); + scale[j*2+1] = -m*scale[j*2]; + } + } + } - __BEGIN__; + void calc_output_scale( const Mat& outputs, int flags ) + { + int i, j, vcount = layer_sizes.back(); + int type = outputs.type(); + double m = min_val, M = max_val, m1 = min_val1, M1 = max_val1; + bool reset_weights = (flags & UPDATE_WEIGHTS) == 0; + bool no_scale = (flags & NO_OUTPUT_SCALE) != 0; + int l_count = layer_count(); + double* scale = weights[l_count].ptr(); + double* inv_scale = weights[l_count+1].ptr(); + int count = outputs.rows; + + if( reset_weights ) + { + double a0 = no_scale ? 1 : DBL_MAX, b0 = no_scale ? 0 : -DBL_MAX; - int max_iter; - double epsilon; + for( j = 0; j < vcount; j++ ) + { + scale[2*j] = inv_scale[2*j] = a0; + scale[j*2+1] = inv_scale[2*j+1] = b0; + } - params = _params; + if( no_scale ) + return; + } - // initialize training data - CV_CALL( prepare_to_train( _inputs, _outputs, _sample_weights, - _sample_idx, &x0, &u, &sw, flags )); + for( i = 0; i < count; i++ ) + { + const uchar* p = outputs.ptr(i); + const float* f = (const float*)p; + const double* d = (const double*)p; - // ... and link weights - if( !(flags & UPDATE_WEIGHTS) ) - init_weights(); + for( j = 0; j < vcount; j++ ) + { + double t = type == CV_32F ? (double)f[j] : d[j]; - max_iter = params.term_crit.type & CV_TERMCRIT_ITER ? params.term_crit.max_iter : MAX_ITER; - max_iter = MAX( max_iter, 1 ); + if( reset_weights ) + { + double mj = scale[j*2], Mj = scale[j*2+1]; + if( mj > t ) mj = t; + if( Mj < t ) Mj = t; - epsilon = params.term_crit.type & CV_TERMCRIT_EPS ? params.term_crit.epsilon : DEFAULT_EPSILON; - epsilon = MAX(epsilon, DBL_EPSILON); + scale[j*2] = mj; + scale[j*2+1] = Mj; + } + else + { + t = t*inv_scale[j*2] + inv_scale[2*j+1]; + if( t < m1 || t > M1 ) + CV_Error( CV_StsOutOfRange, + "Some of new output training vector components run exceed the original range too much" ); + } + } + } - params.term_crit.type = CV_TERMCRIT_ITER + CV_TERMCRIT_EPS; - params.term_crit.max_iter = max_iter; - params.term_crit.epsilon = epsilon; + if( reset_weights ) + for( j = 0; j < vcount; j++ ) + { + // map mj..Mj to m..M + double mj = scale[j*2], Mj = scale[j*2+1]; + double a, b; + double delta = Mj - mj; + if( delta < DBL_EPSILON ) + a = 1, b = (M + m - Mj - mj)*0.5; + else + a = (M - m)/delta, b = m - mj*a; + inv_scale[j*2] = a; inv_scale[j*2+1] = b; + a = 1./a; b = -b*a; + scale[j*2] = a; scale[j*2+1] = b; + } + } - if( params.train_method == CvANN_MLP_TrainParams::BACKPROP ) + void prepare_to_train( const Mat& inputs, const Mat& outputs, + Mat& sample_weights, int flags ) { - CV_CALL( iter = train_backprop( x0, u, sw )); + if( layer_sizes.empty() ) + CV_Error( CV_StsError, + "The network has not been created. Use method create or the appropriate constructor" ); + + if( (inputs.type() != CV_32F && inputs.type() != CV_64F) || + inputs.cols != layer_sizes[0] ) + CV_Error( CV_StsBadArg, + "input training data should be a floating-point matrix with " + "the number of rows equal to the number of training samples and " + "the number of columns equal to the size of 0-th (input) layer" ); + + if( (outputs.type() != CV_32F && outputs.type() != CV_64F) || + outputs.cols != layer_sizes.back() ) + CV_Error( CV_StsBadArg, + "output training data should be a floating-point matrix with " + "the number of rows equal to the number of training samples and " + "the number of columns equal to the size of last (output) layer" ); + + if( inputs.rows != outputs.rows ) + CV_Error( CV_StsUnmatchedSizes, "The numbers of input and output samples do not match" ); + + Mat temp; + double s = sum(sample_weights)[0]; + sample_weights.convertTo(temp, CV_64F, 1./s); + sample_weights = temp; + + calc_input_scale( inputs, flags ); + calc_output_scale( outputs, flags ); } - else + + void setParams( const Params& _params ) { - CV_CALL( iter = train_rprop( x0, u, sw )); + params = _params; } - __END__; - - cvFree( &x0.data.ptr ); - cvFree( &u.data.ptr ); - cvFree( &sw ); - - return iter; -} + Params getParams() const + { + return params; + } + bool train( const Ptr& trainData, int flags ) + { + const int MAX_ITER = 1000; + const double DEFAULT_EPSILON = FLT_EPSILON; -int CvANN_MLP::train_backprop( CvVectors x0, CvVectors u, const double* sw ) -{ - CvMat* dw = 0; - CvMat* buf = 0; - double **x = 0, **df = 0; - CvMat* _idx = 0; - int iter = -1, count = x0.count; + // initialize training data + Mat inputs = trainData->getTrainSamples(); + Mat outputs = trainData->getTrainResponses(); + Mat sw = trainData->getTrainSampleWeights(); + prepare_to_train( inputs, outputs, sw, flags ); - CV_FUNCNAME( "CvANN_MLP::train_backprop" ); + // ... and link weights + if( !(flags & UPDATE_WEIGHTS) ) + init_weights(); - __BEGIN__; + TermCriteria termcrit; + termcrit.type = TermCriteria::COUNT + TermCriteria::EPS; + termcrit.maxCount = std::max((params.termCrit.type & CV_TERMCRIT_ITER ? params.termCrit.maxCount : MAX_ITER), 1); + termcrit.epsilon = std::max((params.termCrit.type & CV_TERMCRIT_EPS ? params.termCrit.epsilon : DEFAULT_EPSILON), DBL_EPSILON); - int i, j, k, ivcount, ovcount, l_count, total = 0, max_iter; - double *buf_ptr; - double prev_E = DBL_MAX*0.5, E = 0, epsilon; + int iter = params.trainMethod == Params::BACKPROP ? + train_backprop( inputs, outputs, sw, termcrit ) : + train_rprop( inputs, outputs, sw, termcrit ); - max_iter = params.term_crit.max_iter*count; - epsilon = params.term_crit.epsilon*count; + return iter; + } - l_count = layer_sizes->cols; - ivcount = layer_sizes->data.i[0]; - ovcount = layer_sizes->data.i[l_count-1]; + int train_backprop( const Mat& inputs, const Mat& outputs, const Mat& _sw, TermCriteria termCrit ) + { + int i, j, k; + double prev_E = DBL_MAX*0.5, E = 0; + int itype = inputs.type(), otype = outputs.type(); - // allocate buffers - for( i = 0; i < l_count; i++ ) - total += layer_sizes->data.i[i] + 1; + int count = inputs.rows; - CV_CALL( dw = cvCreateMat( wbuf->rows, wbuf->cols, wbuf->type )); - cvZero( dw ); - CV_CALL( buf = cvCreateMat( 1, (total + max_count)*2, CV_64F )); - CV_CALL( _idx = cvCreateMat( 1, count, CV_32SC1 )); - for( i = 0; i < count; i++ ) - _idx->data.i[i] = i; + int iter = -1, max_iter = termCrit.maxCount*count; + double epsilon = termCrit.epsilon*count; - CV_CALL( x = (double**)cvAlloc( total*2*sizeof(x[0]) )); - df = x + total; - buf_ptr = buf->data.db; + int l_count = layer_count(); + int ivcount = layer_sizes[0]; + int ovcount = layer_sizes.back(); - for( j = 0; j < l_count; j++ ) - { - x[j] = buf_ptr; - df[j] = x[j] + layer_sizes->data.i[j]; - buf_ptr += (df[j] - x[j])*2; - } + // allocate buffers + vector > x(l_count); + vector > df(l_count); + vector dw(l_count); - // run back-propagation loop - /* - y_i = w_i*x_{i-1} - x_i = f(y_i) - E = 1/2*||u - x_N||^2 - grad_N = (x_N - u)*f'(y_i) - dw_i(t) = momentum*dw_i(t-1) + dw_scale*x_{i-1}*grad_i - w_i(t+1) = w_i(t) + dw_i(t) - grad_{i-1} = w_i^t*grad_i - */ - for( iter = 0; iter < max_iter; iter++ ) - { - int idx = iter % count; - double* w = weights[0]; - double sweight = sw ? count*sw[idx] : 1.; - CvMat _w, _dw, hdr1, hdr2, ghdr1, ghdr2, _df; - CvMat *x1 = &hdr1, *x2 = &hdr2, *grad1 = &ghdr1, *grad2 = &ghdr2, *temp; + for( i = 0; i < l_count; i++ ) + { + int n = layer_sizes[i]; + x[i].resize(n); + df[i].resize(n); + dw[i].create(weights[i].size(), CV_64F); + } - if( idx == 0 ) + Mat _idx_m(1, count, CV_32S); + int* _idx = _idx_m.ptr(); + for( i = 0; i < count; i++ ) + _idx[i] = i; + + AutoBuffer _buf(max_lsize*2); + double* buf[] = { _buf, (double*)_buf + max_lsize }; + + const double* sw = _sw.empty() ? 0 : _sw.ptr(); + + // run back-propagation loop + /* + y_i = w_i*x_{i-1} + x_i = f(y_i) + E = 1/2*||u - x_N||^2 + grad_N = (x_N - u)*f'(y_i) + dw_i(t) = momentum*dw_i(t-1) + dw_scale*x_{i-1}*grad_i + w_i(t+1) = w_i(t) + dw_i(t) + grad_{i-1} = w_i^t*grad_i + */ + for( iter = 0; iter < max_iter; iter++ ) { - //printf("%d. E = %g\n", iter/count, E); - if( fabs(prev_E - E) < epsilon ) - break; - prev_E = E; - E = 0; + int idx = iter % count; + double sweight = sw ? count*sw[idx] : 1.; - // shuffle indices - for( i = 0; i < count; i++ ) + if( idx == 0 ) { - int tt; - j = (*rng)(count); - k = (*rng)(count); - CV_SWAP( _idx->data.i[j], _idx->data.i[k], tt ); + //printf("%d. E = %g\n", iter/count, E); + if( fabs(prev_E - E) < epsilon ) + break; + prev_E = E; + E = 0; + + // shuffle indices + for( i = 0; i < count; i++ ) + { + j = rng.uniform(0, count); + k = rng.uniform(0, count); + std::swap(_idx[j], _idx[k]); + } } - } - idx = _idx->data.i[idx]; + idx = _idx[idx]; - if( x0.type == CV_32F ) - { - const float* x0data = x0.data.fl[idx]; - for( j = 0; j < ivcount; j++ ) - x[0][j] = x0data[j]*w[j*2] + w[j*2 + 1]; - } - else - { - const double* x0data = x0.data.db[idx]; + const uchar* x0data_p = inputs.ptr(idx); + const float* x0data_f = (const float*)x0data_p; + const double* x0data_d = (const double*)x0data_p; + + double* w = weights[0].ptr(); for( j = 0; j < ivcount; j++ ) - x[0][j] = x0data[j]*w[j*2] + w[j*2 + 1]; - } + x[0][j] = (itype == CV_32F ? (double)x0data_f[j] : x0data_d[j])*w[j*2] + w[j*2 + 1]; - cvInitMatHeader( x1, 1, ivcount, CV_64F, x[0] ); + Mat x1( 1, ivcount, CV_64F, &x[0][0] ); - // forward pass, compute y[i]=w*x[i-1], x[i]=f(y[i]), df[i]=f'(y[i]) - for( i = 1; i < l_count; i++ ) - { - cvInitMatHeader( x2, 1, layer_sizes->data.i[i], CV_64F, x[i] ); - cvInitMatHeader( &_w, x1->cols, x2->cols, CV_64F, weights[i] ); - cvGEMM( x1, &_w, 1, 0, 0, x2 ); - _df = *x2; - _df.data.db = df[i]; - calc_activ_func_deriv( x2, &_df, _w.data.db + _w.rows*_w.cols ); - CV_SWAP( x1, x2, temp ); - } + // forward pass, compute y[i]=w*x[i-1], x[i]=f(y[i]), df[i]=f'(y[i]) + for( i = 1; i < l_count; i++ ) + { + int n = layer_sizes[i]; + Mat x2(1, n, CV_64F, &x[i][0] ); + Mat _w = weights[i].rowRange(0, x1.cols); + gemm(x1, _w, 1, noArray(), 0, x2); + Mat _df(1, n, CV_64F, &df[i][0] ); + calc_activ_func_deriv( x2, _df, weights[i] ); + x1 = x2; + } - cvInitMatHeader( grad1, 1, ovcount, CV_64F, buf_ptr ); - *grad2 = *grad1; - grad2->data.db = buf_ptr + max_count; + Mat grad1( 1, ovcount, CV_64F, buf[l_count&1] ); + w = weights[l_count+1].ptr(); - w = weights[l_count+1]; + // calculate error + const uchar* udata_p = outputs.ptr(idx); + const float* udata_f = (const float*)udata_p; + const double* udata_d = (const double*)udata_p; - // calculate error - if( u.type == CV_32F ) - { - const float* udata = u.data.fl[idx]; + double* gdata = grad1.ptr(); for( k = 0; k < ovcount; k++ ) { - double t = udata[k]*w[k*2] + w[k*2+1] - x[l_count-1][k]; - grad1->data.db[k] = t*sweight; + double t = (otype == CV_32F ? (double)udata_f[k] : udata_d[k])*w[k*2] + w[k*2+1] - x[l_count-1][k]; + gdata[k] = t*sweight; E += t*t; } - } - else - { - const double* udata = u.data.db[idx]; - for( k = 0; k < ovcount; k++ ) - { - double t = udata[k]*w[k*2] + w[k*2+1] - x[l_count-1][k]; - grad1->data.db[k] = t*sweight; - E += t*t; - } - } - E *= sweight; + E *= sweight; - // backward pass, update weights - for( i = l_count-1; i > 0; i-- ) - { - int n1 = layer_sizes->data.i[i-1], n2 = layer_sizes->data.i[i]; - cvInitMatHeader( &_df, 1, n2, CV_64F, df[i] ); - cvMul( grad1, &_df, grad1 ); - cvInitMatHeader( &_w, n1+1, n2, CV_64F, weights[i] ); - cvInitMatHeader( &_dw, n1+1, n2, CV_64F, dw->data.db + (weights[i] - weights[0]) ); - cvInitMatHeader( x1, n1+1, 1, CV_64F, x[i-1] ); - x[i-1][n1] = 1.; - cvGEMM( x1, grad1, params.bp_dw_scale, &_dw, params.bp_moment_scale, &_dw ); - cvAdd( &_w, &_dw, &_w ); - if( i > 1 ) + // backward pass, update weights + for( i = l_count-1; i > 0; i-- ) { - grad2->cols = n1; - _w.rows = n1; - cvGEMM( grad1, &_w, 1, 0, 0, grad2, CV_GEMM_B_T ); + int n1 = layer_sizes[i-1], n2 = layer_sizes[i]; + Mat _df(1, n2, CV_64F, &df[i][0]); + multiply( grad1, _df, grad1 ); + Mat _x(n1+1, 1, CV_64F, &x[i-1][0]); + x[i-1][n1] = 1.; + gemm( _x, grad1, params.bpDWScale, dw[i], params.bpMomentScale, dw[i] ); + add( weights[i], dw[i], weights[i] ); + if( i > 1 ) + { + Mat grad2(1, n1, CV_64F, buf[i&1]); + Mat _w = weights[i].rowRange(0, n1); + gemm( grad1, _w, 1, noArray(), 0, grad2, GEMM_2_T ); + grad1 = grad2; + } } - CV_SWAP( grad1, grad2, temp ); } - } - - iter /= count; - - __END__; - - cvReleaseMat( &dw ); - cvReleaseMat( &buf ); - cvReleaseMat( &_idx ); - cvFree( &x ); - return iter; -} - -struct rprop_loop : cv::ParallelLoopBody { - rprop_loop(const CvANN_MLP* _point, double**& _weights, int& _count, int& _ivcount, CvVectors* _x0, - int& _l_count, CvMat*& _layer_sizes, int& _ovcount, int& _max_count, - CvVectors* _u, const double*& _sw, double& _inv_count, CvMat*& _dEdw, int& _dcount0, double* _E, int _buf_sz) - { - point = _point; - weights = _weights; - count = _count; - ivcount = _ivcount; - x0 = _x0; - l_count = _l_count; - layer_sizes = _layer_sizes; - ovcount = _ovcount; - max_count = _max_count; - u = _u; - sw = _sw; - inv_count = _inv_count; - dEdw = _dEdw; - dcount0 = _dcount0; - E = _E; - buf_sz = _buf_sz; - } - - const CvANN_MLP* point; - double** weights; - int count; - int ivcount; - CvVectors* x0; - int l_count; - CvMat* layer_sizes; - int ovcount; - int max_count; - CvVectors* u; - const double* sw; - double inv_count; - CvMat* dEdw; - int dcount0; - double* E; - int buf_sz; - - - void operator()( const cv::Range& range ) const - { - double* buf_ptr; - double** x = 0; - double **df = 0; - int total = 0; - - for(int i = 0; i < l_count; i++ ) - total += layer_sizes->data.i[i]; - CvMat* buf; - buf = cvCreateMat( 1, buf_sz, CV_64F ); - x = (double**)cvAlloc( total*2*sizeof(x[0]) ); - df = x + total; - buf_ptr = buf->data.db; - for(int i = 0; i < l_count; i++ ) - { - x[i] = buf_ptr; - df[i] = x[i] + layer_sizes->data.i[i]*dcount0; - buf_ptr += (df[i] - x[i])*2; + iter /= count; + return iter; } - for(int si = range.start; si < range.end; si++ ) - { - if (si % dcount0 != 0) continue; - int n1, n2, k; - double* w; - CvMat _w, _dEdw, hdr1, hdr2, ghdr1, ghdr2, _df; - CvMat *x1, *x2, *grad1, *grad2, *temp; - int dcount = 0; - - dcount = MIN(count - si , dcount0 ); - w = weights[0]; - grad1 = &ghdr1; grad2 = &ghdr2; - x1 = &hdr1; x2 = &hdr2; - - // grab and preprocess input data - if( x0->type == CV_32F ) + struct RPropLoop : public ParallelLoopBody { - for(int i = 0; i < dcount; i++ ) - { - const float* x0data = x0->data.fl[si+i]; - double* xdata = x[0]+i*ivcount; - for(int j = 0; j < ivcount; j++ ) - xdata[j] = x0data[j]*w[j*2] + w[j*2+1]; - } - } - else - for(int i = 0; i < dcount; i++ ) - { - const double* x0data = x0->data.db[si+i]; - double* xdata = x[0]+i*ivcount; - for(int j = 0; j < ivcount; j++ ) - xdata[j] = x0data[j]*w[j*2] + w[j*2+1]; - } - cvInitMatHeader( x1, dcount, ivcount, CV_64F, x[0] ); - - // forward pass, compute y[i]=w*x[i-1], x[i]=f(y[i]), df[i]=f'(y[i]) - for(int i = 1; i < l_count; i++ ) + RPropLoop(ANN_MLPImpl* _ann, + const Mat& _inputs, const Mat& _outputs, const Mat& _sw, + int _dcount0, vector& _dEdw, double* _E) { - cvInitMatHeader( x2, dcount, layer_sizes->data.i[i], CV_64F, x[i] ); - cvInitMatHeader( &_w, x1->cols, x2->cols, CV_64F, weights[i] ); - cvGEMM( x1, &_w, 1, 0, 0, x2 ); - _df = *x2; - _df.data.db = df[i]; - point->calc_activ_func_deriv( x2, &_df, _w.data.db + _w.rows*_w.cols ); - CV_SWAP( x1, x2, temp ); + ann = _ann; + inputs = _inputs; + outputs = _outputs; + sw = _sw.ptr(); + dcount0 = _dcount0; + dEdw = &_dEdw; + pE = _E; } - cvInitMatHeader( grad1, dcount, ovcount, CV_64F, buf_ptr ); - w = weights[l_count+1]; - grad2->data.db = buf_ptr + max_count*dcount; + ANN_MLPImpl* ann; + vector* dEdw; + Mat inputs, outputs; + const double* sw; + int dcount0; + double* pE; - // calculate error - if( u->type == CV_32F ) - for(int i = 0; i < dcount; i++ ) + void operator()( const Range& range ) const + { + double inv_count = 1./inputs.rows; + int ivcount = ann->layer_sizes.front(); + int ovcount = ann->layer_sizes.back(); + int itype = inputs.type(), otype = outputs.type(); + int count = inputs.rows; + int i, j, k, l_count = ann->layer_count(); + vector > x(l_count); + vector > df(l_count); + vector _buf(ann->max_lsize*dcount0*2); + double* buf[] = { &_buf[0], &_buf[ann->max_lsize*dcount0] }; + double E = 0; + + for( i = 0; i < l_count; i++ ) { - const float* udata = u->data.fl[si+i]; - const double* xdata = x[l_count-1] + i*ovcount; - double* gdata = grad1->data.db + i*ovcount; - double sweight = sw ? sw[si+i] : inv_count, E1 = 0; - - for(int j = 0; j < ovcount; j++ ) - { - double t = udata[j]*w[j*2] + w[j*2+1] - xdata[j]; - gdata[j] = t*sweight; - E1 += t*t; - } - *E += sweight*E1; + x[i].resize(ann->layer_sizes[i]*dcount0); + df[i].resize(ann->layer_sizes[i]*dcount0); } - else - for(int i = 0; i < dcount; i++ ) + + for( int si = range.start; si < range.end; si++ ) { - const double* udata = u->data.db[si+i]; - const double* xdata = x[l_count-1] + i*ovcount; - double* gdata = grad1->data.db + i*ovcount; - double sweight = sw ? sw[si+i] : inv_count, E1 = 0; + int i0 = si*dcount0, i1 = std::min((si + 1)*dcount0, count); + int dcount = i1 - i0; + const double* w = ann->weights[0].ptr(); - for(int j = 0; j < ovcount; j++ ) + // grab and preprocess input data + for( i = 0; i < dcount; i++ ) { - double t = udata[j]*w[j*2] + w[j*2+1] - xdata[j]; - gdata[j] = t*sweight; - E1 += t*t; - } - *E += sweight*E1; - } - - // backward pass, update dEdw - static cv::Mutex mutex; - - for(int i = l_count-1; i > 0; i-- ) - { - n1 = layer_sizes->data.i[i-1]; n2 = layer_sizes->data.i[i]; - cvInitMatHeader( &_df, dcount, n2, CV_64F, df[i] ); - cvMul( grad1, &_df, grad1 ); + const uchar* x0data_p = inputs.ptr(i0 + i); + const float* x0data_f = (const float*)x0data_p; + const double* x0data_d = (const double*)x0data_p; - { - cv::AutoLock lock(mutex); - cvInitMatHeader( &_dEdw, n1, n2, CV_64F, dEdw->data.db+(weights[i]-weights[0]) ); - cvInitMatHeader( x1, dcount, n1, CV_64F, x[i-1] ); - cvGEMM( x1, grad1, 1, &_dEdw, 1, &_dEdw, CV_GEMM_A_T ); + double* xdata = &x[0][i*ivcount]; + for( j = 0; j < ivcount; j++ ) + xdata[j] = (itype == CV_32F ? (double)x0data_f[j] : x0data_d[j])*w[j*2] + w[j*2+1]; + } + Mat x1(dcount, ivcount, CV_64F, &x[0][0]); - // update bias part of dEdw - for( k = 0; k < dcount; k++ ) + // forward pass, compute y[i]=w*x[i-1], x[i]=f(y[i]), df[i]=f'(y[i]) + for( i = 1; i < l_count; i++ ) { - double* dst = _dEdw.data.db + n1*n2; - const double* src = grad1->data.db + k*n2; - for(int j = 0; j < n2; j++ ) - dst[j] += src[j]; + Mat x2( dcount, ann->layer_sizes[i], CV_64F, &x[i][0] ); + Mat _w = ann->weights[i].rowRange(0, x1.cols); + gemm( x1, _w, 1, noArray(), 0, x2 ); + Mat _df( x2.size(), CV_64F, &df[i][0] ); + ann->calc_activ_func_deriv( x2, _df, ann->weights[i] ); + x1 = x2; } - if (i > 1) - cvInitMatHeader( &_w, n1, n2, CV_64F, weights[i] ); - } - - cvInitMatHeader( grad2, dcount, n1, CV_64F, grad2->data.db ); - if( i > 1 ) - cvGEMM( grad1, &_w, 1, 0, 0, grad2, CV_GEMM_B_T ); - CV_SWAP( grad1, grad2, temp ); - } - } - cvFree(&x); - cvReleaseMat( &buf ); -} - -}; - - -int CvANN_MLP::train_rprop( CvVectors x0, CvVectors u, const double* sw ) -{ - const int max_buf_size = 1 << 16; - CvMat* dw = 0; - CvMat* dEdw = 0; - CvMat* prev_dEdw_sign = 0; - CvMat* buf = 0; - double **x = 0, **df = 0; - int iter = -1, count = x0.count; - - CV_FUNCNAME( "CvANN_MLP::train" ); - - __BEGIN__; - - int i, ivcount, ovcount, l_count, total = 0, max_iter, buf_sz, dcount0; - double *buf_ptr; - double prev_E = DBL_MAX*0.5, epsilon; - double dw_plus, dw_minus, dw_min, dw_max; - double inv_count; - - max_iter = params.term_crit.max_iter; - epsilon = params.term_crit.epsilon; - dw_plus = params.rp_dw_plus; - dw_minus = params.rp_dw_minus; - dw_min = params.rp_dw_min; - dw_max = params.rp_dw_max; - - l_count = layer_sizes->cols; - ivcount = layer_sizes->data.i[0]; - ovcount = layer_sizes->data.i[l_count-1]; - - // allocate buffers - for( i = 0; i < l_count; i++ ) - total += layer_sizes->data.i[i]; - - CV_CALL( dw = cvCreateMat( wbuf->rows, wbuf->cols, wbuf->type )); - cvSet( dw, cvScalarAll(params.rp_dw0) ); - CV_CALL( dEdw = cvCreateMat( wbuf->rows, wbuf->cols, wbuf->type )); - cvZero( dEdw ); - CV_CALL( prev_dEdw_sign = cvCreateMat( wbuf->rows, wbuf->cols, CV_8SC1 )); - cvZero( prev_dEdw_sign ); - - inv_count = 1./count; - dcount0 = max_buf_size/(2*total); - dcount0 = MAX( dcount0, 1 ); - dcount0 = MIN( dcount0, count ); - buf_sz = dcount0*(total + max_count)*2; - - CV_CALL( buf = cvCreateMat( 1, buf_sz, CV_64F )); - - CV_CALL( x = (double**)cvAlloc( total*2*sizeof(x[0]) )); - df = x + total; - buf_ptr = buf->data.db; - - for( i = 0; i < l_count; i++ ) - { - x[i] = buf_ptr; - df[i] = x[i] + layer_sizes->data.i[i]*dcount0; - buf_ptr += (df[i] - x[i])*2; - } - - // run rprop loop - /* - y_i(t) = w_i(t)*x_{i-1}(t) - x_i(t) = f(y_i(t)) - E = sum_over_all_samples(1/2*||u - x_N||^2) - grad_N = (x_N - u)*f'(y_i) + Mat grad1(dcount, ovcount, CV_64F, buf[l_count & 1]); - MIN(dw_i{jk}(t)*dw_plus, dw_max), if dE/dw_i{jk}(t)*dE/dw_i{jk}(t-1) > 0 - dw_i{jk}(t) = MAX(dw_i{jk}(t)*dw_minus, dw_min), if dE/dw_i{jk}(t)*dE/dw_i{jk}(t-1) < 0 - dw_i{jk}(t-1) else + w = ann->weights[l_count+1].ptr(); - if (dE/dw_i{jk}(t)*dE/dw_i{jk}(t-1) < 0) - dE/dw_i{jk}(t)<-0 - else - w_i{jk}(t+1) = w_i{jk}(t) + dw_i{jk}(t) - grad_{i-1}(t) = w_i^t(t)*grad_i(t) - */ - for( iter = 0; iter < max_iter; iter++ ) - { - int n1, n2, j, k; - double E = 0; - - // first, iterate through all the samples and compute dEdw - cv::parallel_for_(cv::Range(0, count), - rprop_loop(this, weights, count, ivcount, &x0, l_count, layer_sizes, - ovcount, max_count, &u, sw, inv_count, dEdw, dcount0, &E, buf_sz) - ); + // calculate error + for( i = 0; i < dcount; i++ ) + { + const uchar* udata_p = outputs.ptr(i0+i); + const float* udata_f = (const float*)udata_p; + const double* udata_d = (const double*)udata_p; - // now update weights - for( i = 1; i < l_count; i++ ) - { - n1 = layer_sizes->data.i[i-1]; n2 = layer_sizes->data.i[i]; - for( k = 0; k <= n1; k++ ) - { - double* wk = weights[i]+k*n2; - size_t delta = wk - weights[0]; - double* dwk = dw->data.db + delta; - double* dEdwk = dEdw->data.db + delta; - char* prevEk = (char*)(prev_dEdw_sign->data.ptr + delta); + const double* xdata = &x[l_count-1][i*ovcount]; + double* gdata = grad1.ptr(i); + double sweight = sw ? sw[si+i] : inv_count, E1 = 0; - for( j = 0; j < n2; j++ ) - { - double Eval = dEdwk[j]; - double dval = dwk[j]; - double wval = wk[j]; - int s = CV_SIGN(Eval); - int ss = prevEk[j]*s; - if( ss > 0 ) + for( j = 0; j < ovcount; j++ ) { - dval *= dw_plus; - dval = MIN( dval, dw_max ); - dwk[j] = dval; - wk[j] = wval + dval*s; + double t = (otype == CV_32F ? (double)udata_f[j] : udata_d[j])*w[j*2] + w[j*2+1] - xdata[j]; + gdata[j] = t*sweight; + E1 += t*t; } - else if( ss < 0 ) + E += sweight*E1; + } + + for( i = l_count-1; i > 0; i-- ) + { + int n1 = ann->layer_sizes[i-1], n2 = ann->layer_sizes[i]; + Mat _df(dcount, n2, CV_64F, &df[i][0]); + multiply(grad1, _df, grad1); + { - dval *= dw_minus; - dval = MAX( dval, dw_min ); - prevEk[j] = 0; - dwk[j] = dval; - wk[j] = wval + dval*s; + AutoLock lock(ann->mtx); + Mat _dEdw = dEdw->at(i).rowRange(0, n1); + x1 = Mat(dcount, n1, CV_64F, &x[i-1][0]); + gemm(x1, grad1, 1, _dEdw, 1, _dEdw, GEMM_1_T); + + // update bias part of dEdw + double* dst = dEdw->at(i).ptr(n1); + for( k = 0; k < dcount; k++ ) + { + const double* src = grad1.ptr(k); + for( j = 0; j < n2; j++ ) + dst[j] += src[j]; + } } - else + + Mat grad2( dcount, n1, CV_64F, buf[i&1] ); + if( i > 1 ) { - prevEk[j] = (char)s; - wk[j] = wval + dval*s; + Mat _w = ann->weights[i].rowRange(0, n1); + gemm(grad1, _w, 1, noArray(), 0, grad2, GEMM_2_T); } - dEdwk[j] = 0.; + grad1 = grad2; } } + { + AutoLock lock(ann->mtx); + *pE += E; + } } + }; - //printf("%d. E = %g\n", iter, E); - if( fabs(prev_E - E) < epsilon ) - break; - prev_E = E; - E = 0; - } - - __END__; - - cvReleaseMat( &dw ); - cvReleaseMat( &dEdw ); - cvReleaseMat( &prev_dEdw_sign ); - cvReleaseMat( &buf ); - cvFree( &x ); - - return iter; -} - - -void CvANN_MLP::write_params( CvFileStorage* fs ) const -{ - //CV_FUNCNAME( "CvANN_MLP::write_params" ); - - __BEGIN__; - - const char* activ_func_name = activ_func == IDENTITY ? "IDENTITY" : - activ_func == SIGMOID_SYM ? "SIGMOID_SYM" : - activ_func == GAUSSIAN ? "GAUSSIAN" : 0; - - if( activ_func_name ) - cvWriteString( fs, "activation_function", activ_func_name ); - else - cvWriteInt( fs, "activation_function", activ_func ); - - if( activ_func != IDENTITY ) + int train_rprop( const Mat& inputs, const Mat& outputs, const Mat& _sw, TermCriteria termCrit ) { - cvWriteReal( fs, "f_param1", f_param1 ); - cvWriteReal( fs, "f_param2", f_param2 ); - } - - cvWriteReal( fs, "min_val", min_val ); - cvWriteReal( fs, "max_val", max_val ); - cvWriteReal( fs, "min_val1", min_val1 ); - cvWriteReal( fs, "max_val1", max_val1 ); - - cvStartWriteStruct( fs, "training_params", CV_NODE_MAP ); - if( params.train_method == CvANN_MLP_TrainParams::BACKPROP ) - { - cvWriteString( fs, "train_method", "BACKPROP" ); - cvWriteReal( fs, "dw_scale", params.bp_dw_scale ); - cvWriteReal( fs, "moment_scale", params.bp_moment_scale ); - } - else if( params.train_method == CvANN_MLP_TrainParams::RPROP ) - { - cvWriteString( fs, "train_method", "RPROP" ); - cvWriteReal( fs, "dw0", params.rp_dw0 ); - cvWriteReal( fs, "dw_plus", params.rp_dw_plus ); - cvWriteReal( fs, "dw_minus", params.rp_dw_minus ); - cvWriteReal( fs, "dw_min", params.rp_dw_min ); - cvWriteReal( fs, "dw_max", params.rp_dw_max ); - } + const int max_buf_size = 1 << 16; + int i, iter = -1, count = inputs.rows; - cvStartWriteStruct( fs, "term_criteria", CV_NODE_MAP + CV_NODE_FLOW ); - if( params.term_crit.type & CV_TERMCRIT_EPS ) - cvWriteReal( fs, "epsilon", params.term_crit.epsilon ); - if( params.term_crit.type & CV_TERMCRIT_ITER ) - cvWriteInt( fs, "iterations", params.term_crit.max_iter ); - cvEndWriteStruct( fs ); + double prev_E = DBL_MAX*0.5; - cvEndWriteStruct( fs ); + int max_iter = termCrit.maxCount; + double epsilon = termCrit.epsilon; + double dw_plus = params.rpDWPlus; + double dw_minus = params.rpDWMinus; + double dw_min = params.rpDWMin; + double dw_max = params.rpDWMax; - __END__; -} + int l_count = layer_count(); + // allocate buffers + vector dw(l_count), dEdw(l_count), prev_dEdw_sign(l_count); -void CvANN_MLP::write( CvFileStorage* fs, const char* name ) const -{ - CV_FUNCNAME( "CvANN_MLP::write" ); - - __BEGIN__; - - int i, l_count = layer_sizes->cols; - - if( !layer_sizes ) - CV_ERROR( CV_StsError, "The network has not been initialized" ); + int total = 0; + for( i = 0; i < l_count; i++ ) + { + total += layer_sizes[i]; + dw[i].create(weights[i].size(), CV_64F); + dw[i].setTo(Scalar::all(params.rpDW0)); + prev_dEdw_sign[i] = Mat::zeros(weights[i].size(), CV_8S); + dEdw[i] = Mat::zeros(weights[i].size(), CV_64F); + } - cvStartWriteStruct( fs, name, CV_NODE_MAP, CV_TYPE_NAME_ML_ANN_MLP ); + int dcount0 = max_buf_size/(2*total); + dcount0 = std::max( dcount0, 1 ); + dcount0 = std::min( dcount0, count ); + int chunk_count = (count + dcount0 - 1)/dcount0; + + // run rprop loop + /* + y_i(t) = w_i(t)*x_{i-1}(t) + x_i(t) = f(y_i(t)) + E = sum_over_all_samples(1/2*||u - x_N||^2) + grad_N = (x_N - u)*f'(y_i) + + std::min(dw_i{jk}(t)*dw_plus, dw_max), if dE/dw_i{jk}(t)*dE/dw_i{jk}(t-1) > 0 + dw_i{jk}(t) = std::max(dw_i{jk}(t)*dw_minus, dw_min), if dE/dw_i{jk}(t)*dE/dw_i{jk}(t-1) < 0 + dw_i{jk}(t-1) else + + if (dE/dw_i{jk}(t)*dE/dw_i{jk}(t-1) < 0) + dE/dw_i{jk}(t)<-0 + else + w_i{jk}(t+1) = w_i{jk}(t) + dw_i{jk}(t) + grad_{i-1}(t) = w_i^t(t)*grad_i(t) + */ + for( iter = 0; iter < max_iter; iter++ ) + { + double E = 0; - cvWrite( fs, "layer_sizes", layer_sizes ); + for( i = 0; i < l_count; i++ ) + dEdw[i].setTo(Scalar::all(0)); - write_params( fs ); + // first, iterate through all the samples and compute dEdw + RPropLoop invoker(this, inputs, outputs, _sw, dcount0, dEdw, &E); + parallel_for_(Range(0, chunk_count), invoker); + //invoker(Range(0, chunk_count)); - cvStartWriteStruct( fs, "input_scale", CV_NODE_SEQ + CV_NODE_FLOW ); - cvWriteRawData( fs, weights[0], layer_sizes->data.i[0]*2, "d" ); - cvEndWriteStruct( fs ); + // now update weights + for( i = 1; i < l_count; i++ ) + { + int n1 = layer_sizes[i-1], n2 = layer_sizes[i]; + for( int k = 0; k <= n1; k++ ) + { + CV_Assert(weights[i].size() == Size(n2, n1+1)); + double* wk = weights[i].ptr(k); + double* dwk = dw[i].ptr(k); + double* dEdwk = dEdw[i].ptr(k); + schar* prevEk = prev_dEdw_sign[i].ptr(k); - cvStartWriteStruct( fs, "output_scale", CV_NODE_SEQ + CV_NODE_FLOW ); - cvWriteRawData( fs, weights[l_count], layer_sizes->data.i[l_count-1]*2, "d" ); - cvEndWriteStruct( fs ); + for( int j = 0; j < n2; j++ ) + { + double Eval = dEdwk[j]; + double dval = dwk[j]; + double wval = wk[j]; + int s = CV_SIGN(Eval); + int ss = prevEk[j]*s; + if( ss > 0 ) + { + dval *= dw_plus; + dval = std::min( dval, dw_max ); + dwk[j] = dval; + wk[j] = wval + dval*s; + } + else if( ss < 0 ) + { + dval *= dw_minus; + dval = std::max( dval, dw_min ); + prevEk[j] = 0; + dwk[j] = dval; + wk[j] = wval + dval*s; + } + else + { + prevEk[j] = (schar)s; + wk[j] = wval + dval*s; + } + dEdwk[j] = 0.; + } + } + } - cvStartWriteStruct( fs, "inv_output_scale", CV_NODE_SEQ + CV_NODE_FLOW ); - cvWriteRawData( fs, weights[l_count+1], layer_sizes->data.i[l_count-1]*2, "d" ); - cvEndWriteStruct( fs ); + //printf("%d. E = %g\n", iter, E); + if( fabs(prev_E - E) < epsilon ) + break; + prev_E = E; + } - cvStartWriteStruct( fs, "weights", CV_NODE_SEQ ); - for( i = 1; i < l_count; i++ ) - { - cvStartWriteStruct( fs, 0, CV_NODE_SEQ + CV_NODE_FLOW ); - cvWriteRawData( fs, weights[i], (layer_sizes->data.i[i-1]+1)*layer_sizes->data.i[i], "d" ); - cvEndWriteStruct( fs ); + return iter; } - cvEndWriteStruct( fs ); - - __END__; -} - + void write_params( FileStorage& fs ) const + { + const char* activ_func_name = activ_func == IDENTITY ? "IDENTITY" : + activ_func == SIGMOID_SYM ? "SIGMOID_SYM" : + activ_func == GAUSSIAN ? "GAUSSIAN" : 0; -void CvANN_MLP::read_params( CvFileStorage* fs, CvFileNode* node ) -{ - //CV_FUNCNAME( "CvANN_MLP::read_params" ); + if( activ_func_name ) + fs << "activation_function" << activ_func_name; + else + fs << "activation_function_id" << activ_func; - __BEGIN__; + if( activ_func != IDENTITY ) + { + fs << "f_param1" << f_param1; + fs << "f_param2" << f_param2; + } - const char* activ_func_name = cvReadStringByName( fs, node, "activation_function", 0 ); - CvFileNode* tparams_node; + fs << "min_val" << min_val << "max_val" << max_val << "min_val1" << min_val1 << "max_val1" << max_val1; - if( activ_func_name ) - activ_func = strcmp( activ_func_name, "SIGMOID_SYM" ) == 0 ? SIGMOID_SYM : - strcmp( activ_func_name, "IDENTITY" ) == 0 ? IDENTITY : - strcmp( activ_func_name, "GAUSSIAN" ) == 0 ? GAUSSIAN : 0; - else - activ_func = cvReadIntByName( fs, node, "activation_function" ); + fs << "training_params" << "{"; + if( params.trainMethod == Params::BACKPROP ) + { + fs << "train_method" << "BACKPROP"; + fs << "dw_scale" << params.bpDWScale; + fs << "moment_scale" << params.bpMomentScale; + } + else if( params.trainMethod == Params::RPROP ) + { + fs << "train_method" << "RPROP"; + fs << "dw0" << params.rpDW0; + fs << "dw_plus" << params.rpDWPlus; + fs << "dw_minus" << params.rpDWMinus; + fs << "dw_min" << params.rpDWMin; + fs << "dw_max" << params.rpDWMax; + } + else + CV_Error(CV_StsError, "Unknown training method"); + + fs << "term_criteria" << "{"; + if( params.termCrit.type & TermCriteria::EPS ) + fs << "epsilon" << params.termCrit.epsilon; + if( params.termCrit.type & TermCriteria::COUNT ) + fs << "iterations" << params.termCrit.maxCount; + fs << "}" << "}"; + } + + void write( FileStorage& fs ) const + { + if( layer_sizes.empty() ) + return; + int i, l_count = layer_count(); - f_param1 = cvReadRealByName( fs, node, "f_param1", 0 ); - f_param2 = cvReadRealByName( fs, node, "f_param2", 0 ); + fs << "layer_sizes" << layer_sizes; + + write_params( fs ); - set_activ_func( activ_func, f_param1, f_param2 ); + size_t esz = weights[0].elemSize(); - min_val = cvReadRealByName( fs, node, "min_val", 0. ); - max_val = cvReadRealByName( fs, node, "max_val", 1. ); - min_val1 = cvReadRealByName( fs, node, "min_val1", 0. ); - max_val1 = cvReadRealByName( fs, node, "max_val1", 1. ); + fs << "input_scale" << "["; + fs.writeRaw("d", weights[0].data, weights[0].total()*esz); - tparams_node = cvGetFileNodeByName( fs, node, "training_params" ); - params = CvANN_MLP_TrainParams(); + fs << "]" << "output_scale" << "["; + fs.writeRaw("d", weights[l_count].data, weights[l_count].total()*esz); - if( tparams_node ) - { - const char* tmethod_name = cvReadStringByName( fs, tparams_node, "train_method", "" ); - CvFileNode* tcrit_node; + fs << "]" << "inv_output_scale" << "["; + fs.writeRaw("d", weights[l_count+1].data, weights[l_count+1].total()*esz); - if( strcmp( tmethod_name, "BACKPROP" ) == 0 ) + fs << "]" << "weights" << "["; + for( i = 1; i < l_count; i++ ) { - params.train_method = CvANN_MLP_TrainParams::BACKPROP; - params.bp_dw_scale = cvReadRealByName( fs, tparams_node, "dw_scale", 0 ); - params.bp_moment_scale = cvReadRealByName( fs, tparams_node, "moment_scale", 0 ); + fs << "["; + fs.writeRaw("d", weights[i].data, weights[i].total()*esz); + fs << "]"; } - else if( strcmp( tmethod_name, "RPROP" ) == 0 ) + fs << "]"; + } + + void read_params( const FileNode& fn ) + { + String activ_func_name = (String)fn["activation_function"]; + if( !activ_func_name.empty() ) { - params.train_method = CvANN_MLP_TrainParams::RPROP; - params.rp_dw0 = cvReadRealByName( fs, tparams_node, "dw0", 0 ); - params.rp_dw_plus = cvReadRealByName( fs, tparams_node, "dw_plus", 0 ); - params.rp_dw_minus = cvReadRealByName( fs, tparams_node, "dw_minus", 0 ); - params.rp_dw_min = cvReadRealByName( fs, tparams_node, "dw_min", 0 ); - params.rp_dw_max = cvReadRealByName( fs, tparams_node, "dw_max", 0 ); + activ_func = activ_func_name == "SIGMOID_SYM" ? SIGMOID_SYM : + activ_func_name == "IDENTITY" ? IDENTITY : + activ_func_name == "GAUSSIAN" ? GAUSSIAN : -1; + CV_Assert( activ_func >= 0 ); } - - tcrit_node = cvGetFileNodeByName( fs, tparams_node, "term_criteria" ); - if( tcrit_node ) + else + activ_func = (int)fn["activation_function_id"]; + + f_param1 = (double)fn["f_param1"]; + f_param2 = (double)fn["f_param2"]; + + set_activ_func( activ_func, f_param1, f_param2 ); + + min_val = (double)fn["min_val"]; + max_val = (double)fn["max_val"]; + min_val1 = (double)fn["min_val1"]; + max_val1 = (double)fn["max_val1"]; + + FileNode tpn = fn["training_params"]; + params = Params(); + + if( !tpn.empty() ) { - params.term_crit.epsilon = cvReadRealByName( fs, tcrit_node, "epsilon", -1 ); - params.term_crit.max_iter = cvReadIntByName( fs, tcrit_node, "iterations", -1 ); - params.term_crit.type = (params.term_crit.epsilon >= 0 ? CV_TERMCRIT_EPS : 0) + - (params.term_crit.max_iter >= 0 ? CV_TERMCRIT_ITER : 0); + String tmethod_name = (String)tpn["train_method"]; + + if( tmethod_name == "BACKPROP" ) + { + params.trainMethod = Params::BACKPROP; + params.bpDWScale = (double)tpn["dw_scale"]; + params.bpMomentScale = (double)tpn["moment_scale"]; + } + else if( tmethod_name == "RPROP" ) + { + params.trainMethod = Params::RPROP; + params.rpDW0 = (double)tpn["dw0"]; + params.rpDWPlus = (double)tpn["dw_plus"]; + params.rpDWMinus = (double)tpn["dw_minus"]; + params.rpDWMin = (double)tpn["dw_min"]; + params.rpDWMax = (double)tpn["dw_max"]; + } + else + CV_Error(CV_StsParseError, "Unknown training method (should be BACKPROP or RPROP)"); + + FileNode tcn = tpn["term_criteria"]; + if( !tcn.empty() ) + { + FileNode tcn_e = tcn["epsilon"]; + FileNode tcn_i = tcn["iterations"]; + params.termCrit.type = 0; + if( !tcn_e.empty() ) + { + params.termCrit.type |= TermCriteria::EPS; + params.termCrit.epsilon = (double)tcn_e; + } + if( !tcn_i.empty() ) + { + params.termCrit.type |= TermCriteria::COUNT; + params.termCrit.maxCount = (int)tcn_i; + } + } } } + + void read( const FileNode& fn ) + { + clear(); - __END__; -} - - -void CvANN_MLP::read( CvFileStorage* fs, CvFileNode* node ) -{ - CvMat* _layer_sizes = 0; - - CV_FUNCNAME( "CvANN_MLP::read" ); - - __BEGIN__; + vector _layer_sizes; + fn["layer_sizes"] >> _layer_sizes; + create( _layer_sizes, SIGMOID_SYM, 0, 0 ); - CvFileNode* w; - CvSeqReader reader; - int i, l_count; + int i, l_count = layer_count(); + read_params(fn); - _layer_sizes = (CvMat*)cvReadByName( fs, node, "layer_sizes" ); - CV_CALL( create( _layer_sizes, SIGMOID_SYM, 0, 0 )); - l_count = layer_sizes->cols; + size_t esz = weights[0].elemSize(); - CV_CALL( read_params( fs, node )); + FileNode w = fn["input_scale"]; + w.readRaw("d", weights[0].data, weights[0].total()*esz); - w = cvGetFileNodeByName( fs, node, "input_scale" ); - if( !w || CV_NODE_TYPE(w->tag) != CV_NODE_SEQ || - w->data.seq->total != layer_sizes->data.i[0]*2 ) - CV_ERROR( CV_StsParseError, "input_scale tag is not found or is invalid" ); + w = fn["output_scale"]; + w.readRaw("d", weights[l_count].data, weights[l_count].total()*esz); - CV_CALL( cvReadRawData( fs, w, weights[0], "d" )); + w = fn["inv_output_scale"]; + w.readRaw("d", weights[l_count+1].data, weights[l_count+1].total()*esz); - w = cvGetFileNodeByName( fs, node, "output_scale" ); - if( !w || CV_NODE_TYPE(w->tag) != CV_NODE_SEQ || - w->data.seq->total != layer_sizes->data.i[l_count-1]*2 ) - CV_ERROR( CV_StsParseError, "output_scale tag is not found or is invalid" ); + FileNodeIterator w_it = fn["weights"].begin(); - CV_CALL( cvReadRawData( fs, w, weights[l_count], "d" )); + for( i = 1; i < l_count; i++, ++w_it ) + (*w_it).readRaw("d", weights[i].data, weights[i].total()*esz); + trained = true; + } - w = cvGetFileNodeByName( fs, node, "inv_output_scale" ); - if( !w || CV_NODE_TYPE(w->tag) != CV_NODE_SEQ || - w->data.seq->total != layer_sizes->data.i[l_count-1]*2 ) - CV_ERROR( CV_StsParseError, "inv_output_scale tag is not found or is invalid" ); + Mat getLayerSizes() const + { + return Mat_(layer_sizes, true); + } - CV_CALL( cvReadRawData( fs, w, weights[l_count+1], "d" )); + Mat getWeights(int layerIdx) const + { + CV_Assert( 0 <= layerIdx && layerIdx < (int)weights.size() ); + return weights[layerIdx]; + } - w = cvGetFileNodeByName( fs, node, "weights" ); - if( !w || CV_NODE_TYPE(w->tag) != CV_NODE_SEQ || - w->data.seq->total != l_count - 1 ) - CV_ERROR( CV_StsParseError, "weights tag is not found or is invalid" ); + bool isTrained() const + { + return trained; + } - cvStartReadSeq( w->data.seq, &reader ); + bool isClassifier() const + { + return false; + } - for( i = 1; i < l_count; i++ ) + int getVarCount() const { - w = (CvFileNode*)reader.ptr; - CV_CALL( cvReadRawData( fs, w, weights[i], "d" )); - CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); + return layer_sizes.empty() ? 0 : layer_sizes[0]; } - __END__; -} + String getDefaultModelName() const + { + return "opencv_ml_ann_mlp"; + } -using namespace cv; + vector layer_sizes; + vector weights; + double f_param1, f_param2; + double min_val, max_val, min_val1, max_val1; + int activ_func; + int max_lsize, max_buf_sz; + Params params; + RNG rng; + Mutex mtx; + bool trained; +}; -CvANN_MLP::CvANN_MLP( const Mat& _layer_sizes, int _activ_func, - double _f_param1, double _f_param2 ) -{ - layer_sizes = wbuf = 0; - min_val = max_val = min_val1 = max_val1 = 0.; - weights = 0; - rng = &cv::theRNG(); - default_model_name = "my_nn"; - create( _layer_sizes, _activ_func, _f_param1, _f_param2 ); -} -void CvANN_MLP::create( const Mat& _layer_sizes, int _activ_func, - double _f_param1, double _f_param2 ) +Ptr ANN_MLP::create(InputArray _layerSizes, + const ANN_MLP::Params& params, + int activateFunc, + double fparam1, double fparam2) { - CvMat cvlayer_sizes = _layer_sizes; - create( &cvlayer_sizes, _activ_func, _f_param1, _f_param2 ); -} + Mat layerSizes = _layerSizes.getMat(); + Ptr ann = makePtr(layerSizes, activateFunc, fparam1, fparam2); + ann->setParams(params); -int CvANN_MLP::train( const Mat& _inputs, const Mat& _outputs, - const Mat& _sample_weights, const Mat& _sample_idx, - CvANN_MLP_TrainParams _params, int flags ) -{ - CvMat inputs = _inputs, outputs = _outputs, sweights = _sample_weights, sidx = _sample_idx; - return train(&inputs, &outputs, sweights.data.ptr ? &sweights : 0, - sidx.data.ptr ? &sidx : 0, _params, flags); + return ann; } -float CvANN_MLP::predict( const Mat& _inputs, Mat& _outputs ) const -{ - CV_Assert(layer_sizes != 0); - _outputs.create(_inputs.rows, layer_sizes->data.i[layer_sizes->cols-1], _inputs.type()); - CvMat inputs = _inputs, outputs = _outputs; - - return predict(&inputs, &outputs); -} +}} /* End of file. */ diff --git a/modules/ml/src/boost.cpp b/modules/ml/src/boost.cpp index a22e13a532..9a775a0f25 100644 --- a/modules/ml/src/boost.cpp +++ b/modules/ml/src/boost.cpp @@ -7,9 +7,11 @@ // copy or use the software. // // -// Intel License Agreement +// License Agreement +// For Open Source Computer Vision Library // // Copyright (C) 2000, Intel Corporation, all rights reserved. +// Copyright (C) 2014, Itseez Inc, all rights reserved. // Third party copyrights are property of their respective owners. // // Redistribution and use in source and binary forms, with or without modification, @@ -22,7 +24,7 @@ // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // -// * The name of Intel Corporation may not be used to endorse or promote products +// * The name of the copyright holders may not be used to endorse or promote products // derived from this software without specific prior written permission. // // This software is provided by the copyright holders and contributors "as is" and @@ -40,1309 +42,259 @@ #include "precomp.hpp" +namespace cv { namespace ml { + static inline double log_ratio( double val ) { const double eps = 1e-5; - - val = MAX( val, eps ); - val = MIN( val, 1. - eps ); + val = std::max( val, eps ); + val = std::min( val, 1. - eps ); return log( val/(1. - val) ); } -CvBoostParams::CvBoostParams() -{ - boost_type = CvBoost::REAL; - weak_count = 100; - weight_trim_rate = 0.95; - cv_folds = 0; - max_depth = 1; -} - - -CvBoostParams::CvBoostParams( int _boost_type, int _weak_count, - double _weight_trim_rate, int _max_depth, - bool _use_surrogates, const float* _priors ) -{ - boost_type = _boost_type; - weak_count = _weak_count; - weight_trim_rate = _weight_trim_rate; - split_criteria = CvBoost::DEFAULT; - cv_folds = 0; - max_depth = _max_depth; - use_surrogates = _use_surrogates; - priors = _priors; -} - - - -///////////////////////////////// CvBoostTree /////////////////////////////////// - -CvBoostTree::CvBoostTree() -{ - ensemble = 0; -} - - -CvBoostTree::~CvBoostTree() -{ - clear(); -} - - -void -CvBoostTree::clear() -{ - CvDTree::clear(); - ensemble = 0; -} - - -bool -CvBoostTree::train( CvDTreeTrainData* _train_data, - const CvMat* _subsample_idx, CvBoost* _ensemble ) -{ - clear(); - ensemble = _ensemble; - data = _train_data; - data->shared = true; - return do_train( _subsample_idx ); -} - - -bool -CvBoostTree::train( const CvMat*, int, const CvMat*, const CvMat*, - const CvMat*, const CvMat*, const CvMat*, CvDTreeParams ) -{ - assert(0); - return false; -} - - -bool -CvBoostTree::train( CvDTreeTrainData*, const CvMat* ) -{ - assert(0); - return false; -} - - -void -CvBoostTree::scale( double _scale ) -{ - CvDTreeNode* node = root; - - // traverse the tree and scale all the node values - for(;;) - { - CvDTreeNode* parent; - for(;;) - { - node->value *= _scale; - if( !node->left ) - break; - node = node->left; - } - - for( parent = node->parent; parent && parent->right == node; - node = parent, parent = parent->parent ) - ; - - if( !parent ) - break; - - node = parent->right; - } -} - +Boost::~Boost() {} -void -CvBoostTree::try_split_node( CvDTreeNode* node ) +Boost::Params::Params() { - CvDTree::try_split_node( node ); - - if( !node->left ) - { - // if the node has not been split, - // store the responses for the corresponding training samples - double* weak_eval = ensemble->get_weak_response()->data.db; - cv::AutoBuffer inn_buf(node->sample_count); - const int* labels = data->get_cv_labels( node, (int*)inn_buf ); - int i, count = node->sample_count; - double value = node->value; - - for( i = 0; i < count; i++ ) - weak_eval[labels[i]] = value; - } + boostType = Boost::REAL; + weakCount = 100; + weightTrimRate = 0.95; + CVFolds = 0; + maxDepth = 1; } -double -CvBoostTree::calc_node_dir( CvDTreeNode* node ) +Boost::Params::Params( int _boostType, int _weak_count, + double _weightTrimRate, int _maxDepth, + bool _use_surrogates, const Mat& _priors ) { - char* dir = (char*)data->direction->data.ptr; - const double* weights = ensemble->get_subtree_weights()->data.db; - int i, n = node->sample_count, vi = node->split->var_idx; - double L, R; - - assert( !node->split->inversed ); - - if( data->get_var_type(vi) >= 0 ) // split on categorical var - { - cv::AutoBuffer inn_buf(n); - const int* cat_labels = data->get_cat_var_data( node, vi, (int*)inn_buf ); - const int* subset = node->split->subset; - double sum = 0, sum_abs = 0; - - for( i = 0; i < n; i++ ) - { - int idx = ((cat_labels[i] == 65535) && data->is_buf_16u) ? -1 : cat_labels[i]; - double w = weights[i]; - int d = idx >= 0 ? CV_DTREE_CAT_DIR(idx,subset) : 0; - sum += d*w; sum_abs += (d & 1)*w; - dir[i] = (char)d; - } - - R = (sum_abs + sum) * 0.5; - L = (sum_abs - sum) * 0.5; - } - else // split on ordered var - { - cv::AutoBuffer inn_buf(2*n*sizeof(int)+n*sizeof(float)); - float* values_buf = (float*)(uchar*)inn_buf; - int* sorted_indices_buf = (int*)(values_buf + n); - int* sample_indices_buf = sorted_indices_buf + n; - const float* values = 0; - const int* sorted_indices = 0; - data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, &sorted_indices, sample_indices_buf ); - int split_point = node->split->ord.split_point; - int n1 = node->get_num_valid(vi); - - assert( 0 <= split_point && split_point < n1-1 ); - L = R = 0; - - for( i = 0; i <= split_point; i++ ) - { - int idx = sorted_indices[i]; - double w = weights[idx]; - dir[idx] = (char)-1; - L += w; - } - - for( ; i < n1; i++ ) - { - int idx = sorted_indices[i]; - double w = weights[idx]; - dir[idx] = (char)1; - R += w; - } - - for( ; i < n; i++ ) - dir[sorted_indices[i]] = (char)0; - } - - node->maxlr = MAX( L, R ); - return node->split->quality/(L + R); + boostType = _boostType; + weakCount = _weak_count; + weightTrimRate = _weightTrimRate; + CVFolds = 0; + maxDepth = _maxDepth; + useSurrogates = _use_surrogates; + priors = _priors; } -CvDTreeSplit* -CvBoostTree::find_split_ord_class( CvDTreeNode* node, int vi, float init_quality, - CvDTreeSplit* _split, uchar* _ext_buf ) -{ - const float epsilon = FLT_EPSILON*2; - - const double* weights = ensemble->get_subtree_weights()->data.db; - int n = node->sample_count; - int n1 = node->get_num_valid(vi); - - cv::AutoBuffer inn_buf; - if( !_ext_buf ) - inn_buf.allocate(n*(3*sizeof(int)+sizeof(float))); - uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; - float* values_buf = (float*)ext_buf; - int* sorted_indices_buf = (int*)(values_buf + n); - int* sample_indices_buf = sorted_indices_buf + n; - const float* values = 0; - const int* sorted_indices = 0; - data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, &sorted_indices, sample_indices_buf ); - int* responses_buf = sorted_indices_buf + n; - const int* responses = data->get_class_labels( node, responses_buf ); - const double* rcw0 = weights + n; - double lcw[2] = {0,0}, rcw[2]; - int i, best_i = -1; - double best_val = init_quality; - int boost_type = ensemble->get_params().boost_type; - int split_criteria = ensemble->get_params().split_criteria; - - rcw[0] = rcw0[0]; rcw[1] = rcw0[1]; - for( i = n1; i < n; i++ ) - { - int idx = sorted_indices[i]; - double w = weights[idx]; - rcw[responses[idx]] -= w; - } - - if( split_criteria != CvBoost::GINI && split_criteria != CvBoost::MISCLASS ) - split_criteria = boost_type == CvBoost::DISCRETE ? CvBoost::MISCLASS : CvBoost::GINI; - - if( split_criteria == CvBoost::GINI ) - { - double L = 0, R = rcw[0] + rcw[1]; - double lsum2 = 0, rsum2 = rcw[0]*rcw[0] + rcw[1]*rcw[1]; - - for( i = 0; i < n1 - 1; i++ ) - { - int idx = sorted_indices[i]; - double w = weights[idx], w2 = w*w; - double lv, rv; - idx = responses[idx]; - L += w; R -= w; - lv = lcw[idx]; rv = rcw[idx]; - lsum2 += 2*lv*w + w2; - rsum2 -= 2*rv*w - w2; - lcw[idx] = lv + w; rcw[idx] = rv - w; - - if( values[i] + epsilon < values[i+1] ) - { - double val = (lsum2*R + rsum2*L)/(L*R); - if( best_val < val ) - { - best_val = val; - best_i = i; - } - } - } - } - else - { - for( i = 0; i < n1 - 1; i++ ) - { - int idx = sorted_indices[i]; - double w = weights[idx]; - idx = responses[idx]; - lcw[idx] += w; - rcw[idx] -= w; - - if( values[i] + epsilon < values[i+1] ) - { - double val = lcw[0] + rcw[1], val2 = lcw[1] + rcw[0]; - val = MAX(val, val2); - if( best_val < val ) - { - best_val = val; - best_i = i; - } - } - } - } - - CvDTreeSplit* split = 0; - if( best_i >= 0 ) - { - split = _split ? _split : data->new_split_ord( 0, 0.0f, 0, 0, 0.0f ); - split->var_idx = vi; - split->ord.c = (values[best_i] + values[best_i+1])*0.5f; - split->ord.split_point = best_i; - split->inversed = 0; - split->quality = (float)best_val; - } - return split; -} - -template -class LessThanPtr +class DTreesImplForBoost : public DTreesImpl { public: - bool operator()(T* a, T* b) const { return *a < *b; } -}; - -CvDTreeSplit* -CvBoostTree::find_split_cat_class( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) -{ - int ci = data->get_var_type(vi); - int n = node->sample_count; - int mi = data->cat_count->data.i[ci]; - - int base_size = (2*mi+3)*sizeof(double) + mi*sizeof(double*); - cv::AutoBuffer inn_buf((2*mi+3)*sizeof(double) + mi*sizeof(double*)); - if( !_ext_buf) - inn_buf.allocate( base_size + 2*n*sizeof(int) ); - uchar* base_buf = (uchar*)inn_buf; - uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; - - int* cat_labels_buf = (int*)ext_buf; - const int* cat_labels = data->get_cat_var_data(node, vi, cat_labels_buf); - int* responses_buf = cat_labels_buf + n; - const int* responses = data->get_class_labels(node, responses_buf); - double lcw[2]={0,0}, rcw[2]={0,0}; - - double* cjk = (double*)cv::alignPtr(base_buf,sizeof(double))+2; - const double* weights = ensemble->get_subtree_weights()->data.db; - double** dbl_ptr = (double**)(cjk + 2*mi); - int i, j, k, idx; - double L = 0, R; - double best_val = init_quality; - int best_subset = -1, subset_i; - int boost_type = ensemble->get_params().boost_type; - int split_criteria = ensemble->get_params().split_criteria; - - // init array of counters: - // c_{jk} - number of samples that have vi-th input variable = j and response = k. - for( j = -1; j < mi; j++ ) - cjk[j*2] = cjk[j*2+1] = 0; - - for( i = 0; i < n; i++ ) - { - double w = weights[i]; - j = ((cat_labels[i] == 65535) && data->is_buf_16u) ? -1 : cat_labels[i]; - k = responses[i]; - cjk[j*2 + k] += w; - } - - for( j = 0; j < mi; j++ ) - { - rcw[0] += cjk[j*2]; - rcw[1] += cjk[j*2+1]; - dbl_ptr[j] = cjk + j*2 + 1; - } - - R = rcw[0] + rcw[1]; - - if( split_criteria != CvBoost::GINI && split_criteria != CvBoost::MISCLASS ) - split_criteria = boost_type == CvBoost::DISCRETE ? CvBoost::MISCLASS : CvBoost::GINI; - - // sort rows of c_jk by increasing c_j,1 - // (i.e. by the weight of samples in j-th category that belong to class 1) - std::sort(dbl_ptr, dbl_ptr + mi, LessThanPtr()); - - for( subset_i = 0; subset_i < mi-1; subset_i++ ) - { - idx = (int)(dbl_ptr[subset_i] - cjk)/2; - const double* crow = cjk + idx*2; - double w0 = crow[0], w1 = crow[1]; - double weight = w0 + w1; - - if( weight < FLT_EPSILON ) - continue; - - lcw[0] += w0; rcw[0] -= w0; - lcw[1] += w1; rcw[1] -= w1; - - if( split_criteria == CvBoost::GINI ) - { - double lsum2 = lcw[0]*lcw[0] + lcw[1]*lcw[1]; - double rsum2 = rcw[0]*rcw[0] + rcw[1]*rcw[1]; - - L += weight; - R -= weight; - - if( L > FLT_EPSILON && R > FLT_EPSILON ) - { - double val = (lsum2*R + rsum2*L)/(L*R); - if( best_val < val ) - { - best_val = val; - best_subset = subset_i; - } - } - } - else - { - double val = lcw[0] + rcw[1]; - double val2 = lcw[1] + rcw[0]; - - val = MAX(val, val2); - if( best_val < val ) - { - best_val = val; - best_subset = subset_i; - } - } - } - - CvDTreeSplit* split = 0; - if( best_subset >= 0 ) - { - split = _split ? _split : data->new_split_cat( 0, -1.0f); - split->var_idx = vi; - split->quality = (float)best_val; - memset( split->subset, 0, (data->max_c_count + 31)/32 * sizeof(int)); - for( i = 0; i <= best_subset; i++ ) - { - idx = (int)(dbl_ptr[i] - cjk) >> 1; - split->subset[idx >> 5] |= 1 << (idx & 31); - } - } - return split; -} - - -CvDTreeSplit* -CvBoostTree::find_split_ord_reg( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) -{ - const float epsilon = FLT_EPSILON*2; - const double* weights = ensemble->get_subtree_weights()->data.db; - int n = node->sample_count; - int n1 = node->get_num_valid(vi); - - cv::AutoBuffer inn_buf; - if( !_ext_buf ) - inn_buf.allocate(2*n*(sizeof(int)+sizeof(float))); - uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; - - float* values_buf = (float*)ext_buf; - int* indices_buf = (int*)(values_buf + n); - int* sample_indices_buf = indices_buf + n; - const float* values = 0; - const int* indices = 0; - data->get_ord_var_data( node, vi, values_buf, indices_buf, &values, &indices, sample_indices_buf ); - float* responses_buf = (float*)(indices_buf + n); - const float* responses = data->get_ord_responses( node, responses_buf, sample_indices_buf ); - - int i, best_i = -1; - double L = 0, R = weights[n]; - double best_val = init_quality, lsum = 0, rsum = node->value*R; - - // compensate for missing values - for( i = n1; i < n; i++ ) - { - int idx = indices[i]; - double w = weights[idx]; - rsum -= responses[idx]*w; - R -= w; - } + DTreesImplForBoost() {} + virtual ~DTreesImplForBoost() {} - // find the optimal split - for( i = 0; i < n1 - 1; i++ ) - { - int idx = indices[i]; - double w = weights[idx]; - double t = responses[idx]*w; - L += w; R -= w; - lsum += t; rsum -= t; - - if( values[i] + epsilon < values[i+1] ) - { - double val = (lsum*lsum*R + rsum*rsum*L)/(L*R); - if( best_val < val ) - { - best_val = val; - best_i = i; - } - } - } + bool isClassifier() const { return true; } - CvDTreeSplit* split = 0; - if( best_i >= 0 ) + void setBParams(const Boost::Params& p) { - split = _split ? _split : data->new_split_ord( 0, 0.0f, 0, 0, 0.0f ); - split->var_idx = vi; - split->ord.c = (values[best_i] + values[best_i+1])*0.5f; - split->ord.split_point = best_i; - split->inversed = 0; - split->quality = (float)best_val; + bparams = p; } - return split; -} - -CvDTreeSplit* -CvBoostTree::find_split_cat_reg( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) -{ - const double* weights = ensemble->get_subtree_weights()->data.db; - int ci = data->get_var_type(vi); - int n = node->sample_count; - int mi = data->cat_count->data.i[ci]; - int base_size = (2*mi+3)*sizeof(double) + mi*sizeof(double*); - cv::AutoBuffer inn_buf(base_size); - if( !_ext_buf ) - inn_buf.allocate(base_size + n*(2*sizeof(int) + sizeof(float))); - uchar* base_buf = (uchar*)inn_buf; - uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; - - int* cat_labels_buf = (int*)ext_buf; - const int* cat_labels = data->get_cat_var_data(node, vi, cat_labels_buf); - float* responses_buf = (float*)(cat_labels_buf + n); - int* sample_indices_buf = (int*)(responses_buf + n); - const float* responses = data->get_ord_responses(node, responses_buf, sample_indices_buf); - - double* sum = (double*)cv::alignPtr(base_buf,sizeof(double)) + 1; - double* counts = sum + mi + 1; - double** sum_ptr = (double**)(counts + mi); - double L = 0, R = 0, best_val = init_quality, lsum = 0, rsum = 0; - int i, best_subset = -1, subset_i; - - for( i = -1; i < mi; i++ ) - sum[i] = counts[i] = 0; - - // calculate sum response and weight of each category of the input var - for( i = 0; i < n; i++ ) + Boost::Params getBParams() const { - int idx = ((cat_labels[i] == 65535) && data->is_buf_16u) ? -1 : cat_labels[i]; - double w = weights[i]; - double s = sum[idx] + responses[i]*w; - double nc = counts[idx] + w; - sum[idx] = s; - counts[idx] = nc; + return bparams; } - // calculate average response in each category - for( i = 0; i < mi; i++ ) + void clear() { - R += counts[i]; - rsum += sum[i]; - sum[i] = fabs(counts[i]) > DBL_EPSILON ? sum[i]/counts[i] : 0; - sum_ptr[i] = sum + i; + DTreesImpl::clear(); } - std::sort(sum_ptr, sum_ptr + mi, LessThanPtr()); - - // revert back to unnormalized sums - // (there should be a very little loss in accuracy) - for( i = 0; i < mi; i++ ) - sum[i] *= counts[i]; - - for( subset_i = 0; subset_i < mi-1; subset_i++ ) + void startTraining( const Ptr& trainData, int flags ) { - int idx = (int)(sum_ptr[subset_i] - sum); - double ni = counts[idx]; + DTreesImpl::startTraining(trainData, flags); - if( ni > FLT_EPSILON ) + if( bparams.boostType != Boost::DISCRETE ) { - double s = sum[idx]; - lsum += s; L += ni; - rsum -= s; R -= ni; + _isClassifier = false; + int i, n = (int)w->cat_responses.size(); + w->ord_responses.resize(n); - if( L > FLT_EPSILON && R > FLT_EPSILON ) + double a = -1, b = 1; + if( bparams.boostType == Boost::REAL ) + a = 0; + else if( bparams.boostType == Boost::LOGIT ) { - double val = (lsum*lsum*R + rsum*rsum*L)/(L*R); - if( best_val < val ) - { - best_val = val; - best_subset = subset_i; - } + sumResult.assign(w->sidx.size(), 0.); + a = -2, b = 2; } - } - } - CvDTreeSplit* split = 0; - if( best_subset >= 0 ) - { - split = _split ? _split : data->new_split_cat( 0, -1.0f); - split->var_idx = vi; - split->quality = (float)best_val; - memset( split->subset, 0, (data->max_c_count + 31)/32 * sizeof(int)); - for( i = 0; i <= best_subset; i++ ) - { - int idx = (int)(sum_ptr[i] - sum); - split->subset[idx >> 5] |= 1 << (idx & 31); - } - } - return split; -} - - -CvDTreeSplit* -CvBoostTree::find_surrogate_split_ord( CvDTreeNode* node, int vi, uchar* _ext_buf ) -{ - const float epsilon = FLT_EPSILON*2; - int n = node->sample_count; - cv::AutoBuffer inn_buf; - if( !_ext_buf ) - inn_buf.allocate(n*(2*sizeof(int)+sizeof(float))); - uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; - float* values_buf = (float*)ext_buf; - int* indices_buf = (int*)(values_buf + n); - int* sample_indices_buf = indices_buf + n; - const float* values = 0; - const int* indices = 0; - data->get_ord_var_data( node, vi, values_buf, indices_buf, &values, &indices, sample_indices_buf ); - - const double* weights = ensemble->get_subtree_weights()->data.db; - const char* dir = (char*)data->direction->data.ptr; - int n1 = node->get_num_valid(vi); - // LL - number of samples that both the primary and the surrogate splits send to the left - // LR - ... primary split sends to the left and the surrogate split sends to the right - // RL - ... primary split sends to the right and the surrogate split sends to the left - // RR - ... both send to the right - int i, best_i = -1, best_inversed = 0; - double best_val; - double LL = 0, RL = 0, LR, RR; - double worst_val = node->maxlr; - double sum = 0, sum_abs = 0; - best_val = worst_val; - - for( i = 0; i < n1; i++ ) - { - int idx = indices[i]; - double w = weights[idx]; - int d = dir[idx]; - sum += d*w; sum_abs += (d & 1)*w; - } - - // sum_abs = R + L; sum = R - L - RR = (sum_abs + sum)*0.5; - LR = (sum_abs - sum)*0.5; - - // initially all the samples are sent to the right by the surrogate split, - // LR of them are sent to the left by primary split, and RR - to the right. - // now iteratively compute LL, LR, RL and RR for every possible surrogate split value. - for( i = 0; i < n1 - 1; i++ ) - { - int idx = indices[i]; - double w = weights[idx]; - int d = dir[idx]; - - if( d < 0 ) - { - LL += w; LR -= w; - if( LL + RR > best_val && values[i] + epsilon < values[i+1] ) - { - best_val = LL + RR; - best_i = i; best_inversed = 0; - } - } - else if( d > 0 ) - { - RL += w; RR -= w; - if( RL + LR > best_val && values[i] + epsilon < values[i+1] ) - { - best_val = RL + LR; - best_i = i; best_inversed = 1; - } + for( i = 0; i < n; i++ ) + w->ord_responses[i] = w->cat_responses[i] > 0 ? b : a; } - } - - return best_i >= 0 && best_val > node->maxlr ? data->new_split_ord( vi, - (values[best_i] + values[best_i+1])*0.5f, best_i, - best_inversed, (float)best_val ) : 0; -} - - -CvDTreeSplit* -CvBoostTree::find_surrogate_split_cat( CvDTreeNode* node, int vi, uchar* _ext_buf ) -{ - const char* dir = (char*)data->direction->data.ptr; - const double* weights = ensemble->get_subtree_weights()->data.db; - int n = node->sample_count; - int i, mi = data->cat_count->data.i[data->get_var_type(vi)]; - - int base_size = (2*mi+3)*sizeof(double); - cv::AutoBuffer inn_buf(base_size); - if( !_ext_buf ) - inn_buf.allocate(base_size + n*sizeof(int)); - uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; - int* cat_labels_buf = (int*)ext_buf; - const int* cat_labels = data->get_cat_var_data(node, vi, cat_labels_buf); - - // LL - number of samples that both the primary and the surrogate splits send to the left - // LR - ... primary split sends to the left and the surrogate split sends to the right - // RL - ... primary split sends to the right and the surrogate split sends to the left - // RR - ... both send to the right - CvDTreeSplit* split = data->new_split_cat( vi, 0 ); - double best_val = 0; - double* lc = (double*)cv::alignPtr(cat_labels_buf + n, sizeof(double)) + 1; - double* rc = lc + mi + 1; - - for( i = -1; i < mi; i++ ) - lc[i] = rc[i] = 0; - - // 1. for each category calculate the weight of samples - // sent to the left (lc) and to the right (rc) by the primary split - for( i = 0; i < n; i++ ) - { - int idx = ((cat_labels[i] == 65535) && data->is_buf_16u) ? -1 : cat_labels[i]; - double w = weights[i]; - int d = dir[i]; - double sum = lc[idx] + d*w; - double sum_abs = rc[idx] + (d & 1)*w; - lc[idx] = sum; rc[idx] = sum_abs; - } - - for( i = 0; i < mi; i++ ) - { - double sum = lc[i]; - double sum_abs = rc[i]; - lc[i] = (sum_abs - sum) * 0.5; - rc[i] = (sum_abs + sum) * 0.5; - } - // 2. now form the split. - // in each category send all the samples to the same direction as majority - for( i = 0; i < mi; i++ ) - { - double lval = lc[i], rval = rc[i]; - if( lval > rval ) - { - split->subset[i >> 5] |= 1 << (i & 31); - best_val += lval; - } - else - best_val += rval; + normalizeWeights(); } - split->quality = (float)best_val; - if( split->quality <= node->maxlr ) - cvSetRemoveByPtr( data->split_heap, split ), split = 0; - - return split; -} - - -void -CvBoostTree::calc_node_value( CvDTreeNode* node ) -{ - int i, n = node->sample_count; - const double* weights = ensemble->get_weights()->data.db; - cv::AutoBuffer inn_buf(n*(sizeof(int) + ( data->is_classifier ? sizeof(int) : sizeof(int) + sizeof(float)))); - int* labels_buf = (int*)(uchar*)inn_buf; - const int* labels = data->get_cv_labels(node, labels_buf); - double* subtree_weights = ensemble->get_subtree_weights()->data.db; - double rcw[2] = {0,0}; - int boost_type = ensemble->get_params().boost_type; - - if( data->is_classifier ) + void normalizeWeights() { - int* _responses_buf = labels_buf + n; - const int* _responses = data->get_class_labels(node, _responses_buf); - int m = data->get_num_classes(); - int* cls_count = data->counts->data.i; - for( int k = 0; k < m; k++ ) - cls_count[k] = 0; - + int i, n = (int)w->sidx.size(); + double sumw = 0, a, b; for( i = 0; i < n; i++ ) + sumw += w->sample_weights[w->sidx[i]]; + if( sumw > DBL_EPSILON ) { - int idx = labels[i]; - double w = weights[idx]; - int r = _responses[i]; - rcw[r] += w; - cls_count[r]++; - subtree_weights[i] = w; - } - - node->class_idx = rcw[1] > rcw[0]; - - if( boost_type == CvBoost::DISCRETE ) - { - // ignore cat_map for responses, and use {-1,1}, - // as the whole ensemble response is computes as sign(sum_i(weak_response_i) - node->value = node->class_idx*2 - 1; + a = 1./sumw; + b = 0; } else - { - double p = rcw[1]/(rcw[0] + rcw[1]); - assert( boost_type == CvBoost::REAL ); - - // store log-ratio of the probability - node->value = 0.5*log_ratio(p); - } - } - else - { - // in case of regression tree: - // * node value is 1/n*sum_i(Y_i), where Y_i is i-th response, - // n is the number of samples in the node. - // * node risk is the sum of squared errors: sum_i((Y_i - )^2) - double sum = 0, sum2 = 0, iw; - float* values_buf = (float*)(labels_buf + n); - int* sample_indices_buf = (int*)(values_buf + n); - const float* values = data->get_ord_responses(node, values_buf, sample_indices_buf); - - for( i = 0; i < n; i++ ) - { - int idx = labels[i]; - double w = weights[idx]/*priors[values[i] > 0]*/; - double t = values[i]; - rcw[0] += w; - subtree_weights[i] = w; - sum += t*w; - sum2 += t*t*w; - } - - iw = 1./rcw[0]; - node->value = sum*iw; - node->node_risk = sum2 - (sum*iw)*sum; - - // renormalize the risk, as in try_split_node the unweighted formula - // sqrt(risk)/n is used, rather than sqrt(risk)/sum(weights_i) - node->node_risk *= n*iw*n*iw; - } - - // store summary weights - subtree_weights[n] = rcw[0]; - subtree_weights[n+1] = rcw[1]; -} - - -void CvBoostTree::read( CvFileStorage* fs, CvFileNode* fnode, CvBoost* _ensemble, CvDTreeTrainData* _data ) -{ - CvDTree::read( fs, fnode, _data ); - ensemble = _ensemble; -} - -void CvBoostTree::read( CvFileStorage*, CvFileNode* ) -{ - assert(0); -} - -void CvBoostTree::read( CvFileStorage* _fs, CvFileNode* _node, - CvDTreeTrainData* _data ) -{ - CvDTree::read( _fs, _node, _data ); -} - - -/////////////////////////////////// CvBoost ///////////////////////////////////// - -CvBoost::CvBoost() -{ - data = 0; - weak = 0; - default_model_name = "my_boost_tree"; - - active_vars = active_vars_abs = orig_response = sum_response = weak_eval = - subsample_mask = weights = subtree_weights = 0; - have_active_cat_vars = have_subsample = false; - - clear(); -} - - -void CvBoost::prune( CvSlice slice ) -{ - if( weak && weak->total > 0 ) - { - CvSeqReader reader; - int i, count = cvSliceLength( slice, weak ); - - cvStartReadSeq( weak, &reader ); - cvSetSeqReaderPos( &reader, slice.start_index ); - - for( i = 0; i < count; i++ ) - { - CvBoostTree* w; - CV_READ_SEQ_ELEM( w, reader ); - delete w; - } - - cvSeqRemoveSlice( weak, slice ); - } -} - - -void CvBoost::clear() -{ - if( weak ) - { - prune( CV_WHOLE_SEQ ); - cvReleaseMemStorage( &weak->storage ); - } - if( data ) - delete data; - weak = 0; - data = 0; - cvReleaseMat( &active_vars ); - cvReleaseMat( &active_vars_abs ); - cvReleaseMat( &orig_response ); - cvReleaseMat( &sum_response ); - cvReleaseMat( &weak_eval ); - cvReleaseMat( &subsample_mask ); - cvReleaseMat( &weights ); - cvReleaseMat( &subtree_weights ); - - have_subsample = false; -} - - -CvBoost::~CvBoost() -{ - clear(); -} - - -CvBoost::CvBoost( const CvMat* _train_data, int _tflag, - const CvMat* _responses, const CvMat* _var_idx, - const CvMat* _sample_idx, const CvMat* _var_type, - const CvMat* _missing_mask, CvBoostParams _params ) -{ - weak = 0; - data = 0; - default_model_name = "my_boost_tree"; - - active_vars = active_vars_abs = orig_response = sum_response = weak_eval = - subsample_mask = weights = subtree_weights = 0; - - train( _train_data, _tflag, _responses, _var_idx, _sample_idx, - _var_type, _missing_mask, _params ); -} - - -bool -CvBoost::set_params( const CvBoostParams& _params ) -{ - bool ok = false; - - CV_FUNCNAME( "CvBoost::set_params" ); - - __BEGIN__; - - params = _params; - if( params.boost_type != DISCRETE && params.boost_type != REAL && - params.boost_type != LOGIT && params.boost_type != GENTLE ) - CV_ERROR( CV_StsBadArg, "Unknown/unsupported boosting type" ); - - params.weak_count = MAX( params.weak_count, 1 ); - params.weight_trim_rate = MAX( params.weight_trim_rate, 0. ); - params.weight_trim_rate = MIN( params.weight_trim_rate, 1. ); - if( params.weight_trim_rate < FLT_EPSILON ) - params.weight_trim_rate = 1.f; - - if( params.boost_type == DISCRETE && - params.split_criteria != GINI && params.split_criteria != MISCLASS ) - params.split_criteria = MISCLASS; - if( params.boost_type == REAL && - params.split_criteria != GINI && params.split_criteria != MISCLASS ) - params.split_criteria = GINI; - if( (params.boost_type == LOGIT || params.boost_type == GENTLE) && - params.split_criteria != SQERR ) - params.split_criteria = SQERR; - - ok = true; - - __END__; - - return ok; -} - - -bool -CvBoost::train( const CvMat* _train_data, int _tflag, - const CvMat* _responses, const CvMat* _var_idx, - const CvMat* _sample_idx, const CvMat* _var_type, - const CvMat* _missing_mask, - CvBoostParams _params, bool _update ) -{ - bool ok = false; - CvMemStorage* storage = 0; - - CV_FUNCNAME( "CvBoost::train" ); - - __BEGIN__; - - int i; - - set_params( _params ); - - cvReleaseMat( &active_vars ); - cvReleaseMat( &active_vars_abs ); - - if( !_update || !data ) - { - clear(); - data = new CvDTreeTrainData( _train_data, _tflag, _responses, _var_idx, - _sample_idx, _var_type, _missing_mask, _params, true, true ); - - if( data->get_num_classes() != 2 ) - CV_ERROR( CV_StsNotImplemented, - "Boosted trees can only be used for 2-class classification." ); - CV_CALL( storage = cvCreateMemStorage() ); - weak = cvCreateSeq( 0, sizeof(CvSeq), sizeof(CvBoostTree*), storage ); - storage = 0; - } - else - { - data->set_data( _train_data, _tflag, _responses, _var_idx, - _sample_idx, _var_type, _missing_mask, _params, true, true, true ); - } - - if ( (_params.boost_type == LOGIT) || (_params.boost_type == GENTLE) ) - data->do_responses_copy(); - - update_weights( 0 ); - - for( i = 0; i < params.weak_count; i++ ) - { - CvBoostTree* tree = new CvBoostTree; - if( !tree->train( data, subsample_mask, this ) ) - { - delete tree; - break; - } - //cvCheckArr( get_weak_response()); - cvSeqPush( weak, &tree ); - update_weights( tree ); - trim_weights(); - if( cvCountNonZero(subsample_mask) == 0 ) - break; - } - - if(weak->total > 0) - { - get_active_vars(); // recompute active_vars* maps and condensed_idx's in the splits. - data->is_classifier = true; - data->free_train_data(); - ok = true; - } - else - clear(); - - __END__; - - return ok; -} - -bool CvBoost::train( CvMLData* _data, - CvBoostParams _params, - bool update ) -{ - bool result = false; - - CV_FUNCNAME( "CvBoost::train" ); - - __BEGIN__; - - const CvMat* values = _data->get_values(); - const CvMat* response = _data->get_responses(); - const CvMat* missing = _data->get_missing(); - const CvMat* var_types = _data->get_var_types(); - const CvMat* train_sidx = _data->get_train_sample_idx(); - const CvMat* var_idx = _data->get_var_idx(); - - CV_CALL( result = train( values, CV_ROW_SAMPLE, response, var_idx, - train_sidx, var_types, missing, _params, update ) ); - - __END__; - - return result; -} - -void CvBoost::initialize_weights(double (&p)[2]) -{ - p[0] = 1.; - p[1] = 1.; -} - -void -CvBoost::update_weights( CvBoostTree* tree ) -{ - CV_FUNCNAME( "CvBoost::update_weights" ); - - __BEGIN__; - - int i, n = data->sample_count; - double sumw = 0.; - int step = 0; - float* fdata = 0; - int *sample_idx_buf; - const int* sample_idx = 0; - cv::AutoBuffer inn_buf; - size_t _buf_size = (params.boost_type == LOGIT) || (params.boost_type == GENTLE) ? (size_t)(data->sample_count)*sizeof(int) : 0; - if( !tree ) - _buf_size += n*sizeof(int); - else - { - if( have_subsample ) - _buf_size += data->get_length_subbuf()*(sizeof(float)+sizeof(uchar)); + { + a = 0; + b = 1; + } + for( i = 0; i < n; i++ ) + { + double& wval = w->sample_weights[w->sidx[i]]; + wval = wval*a + b; + } } - inn_buf.allocate(_buf_size); - uchar* cur_buf_pos = (uchar*)inn_buf; - if ( (params.boost_type == LOGIT) || (params.boost_type == GENTLE) ) + void endTraining() { - step = CV_IS_MAT_CONT(data->responses_copy->type) ? - 1 : data->responses_copy->step / CV_ELEM_SIZE(data->responses_copy->type); - fdata = data->responses_copy->data.fl; - sample_idx_buf = (int*)cur_buf_pos; - cur_buf_pos = (uchar*)(sample_idx_buf + data->sample_count); - sample_idx = data->get_sample_indices( data->data_root, sample_idx_buf ); + DTreesImpl::endTraining(); + vector e; + std::swap(sumResult, e); } - CvMat* dtree_data_buf = data->buf; - size_t length_buf_row = data->get_length_subbuf(); - if( !tree ) // before training the first tree, initialize weights and other parameters + + void scaleTree( int root, double scale ) { - int* class_labels_buf = (int*)cur_buf_pos; - cur_buf_pos = (uchar*)(class_labels_buf + n); - const int* class_labels = data->get_class_labels(data->data_root, class_labels_buf); - // in case of logitboost and gentle adaboost each weak tree is a regression tree, - // so we need to convert class labels to floating-point values - - double w0 = 1./ n; - double p[2] = { 1., 1. }; - initialize_weights(p); - - cvReleaseMat( &orig_response ); - cvReleaseMat( &sum_response ); - cvReleaseMat( &weak_eval ); - cvReleaseMat( &subsample_mask ); - cvReleaseMat( &weights ); - cvReleaseMat( &subtree_weights ); - - CV_CALL( orig_response = cvCreateMat( 1, n, CV_32S )); - CV_CALL( weak_eval = cvCreateMat( 1, n, CV_64F )); - CV_CALL( subsample_mask = cvCreateMat( 1, n, CV_8U )); - CV_CALL( weights = cvCreateMat( 1, n, CV_64F )); - CV_CALL( subtree_weights = cvCreateMat( 1, n + 2, CV_64F )); - - if( data->have_priors ) - { - // compute weight scale for each class from their prior probabilities - int c1 = 0; - for( i = 0; i < n; i++ ) - c1 += class_labels[i]; - p[0] = data->priors->data.db[0]*(c1 < n ? 1./(n - c1) : 0.); - p[1] = data->priors->data.db[1]*(c1 > 0 ? 1./c1 : 0.); - p[0] /= p[0] + p[1]; - p[1] = 1. - p[0]; - } + int nidx = root, pidx = 0; + Node *node = 0; - if (data->is_buf_16u) + // traverse the tree and save all the nodes in depth-first order + for(;;) { - unsigned short* labels = (unsigned short*)(dtree_data_buf->data.s + data->data_root->buf_idx*length_buf_row + - data->data_root->offset + (data->work_var_count-1)*data->sample_count); - for( i = 0; i < n; i++ ) + for(;;) { - // save original categorical responses {0,1}, convert them to {-1,1} - orig_response->data.i[i] = class_labels[i]*2 - 1; - // make all the samples active at start. - // later, in trim_weights() deactivate/reactive again some, if need - subsample_mask->data.ptr[i] = (uchar)1; - // make all the initial weights the same. - weights->data.db[i] = w0*p[class_labels[i]]; - // set the labels to find (from within weak tree learning proc) - // the particular sample weight, and where to store the response. - labels[i] = (unsigned short)i; + node = &nodes[nidx]; + node->value *= scale; + if( node->left < 0 ) + break; + nidx = node->left; } - } - else - { - int* labels = dtree_data_buf->data.i + data->data_root->buf_idx*length_buf_row + - data->data_root->offset + (data->work_var_count-1)*data->sample_count; - for( i = 0; i < n; i++ ) - { - // save original categorical responses {0,1}, convert them to {-1,1} - orig_response->data.i[i] = class_labels[i]*2 - 1; - // make all the samples active at start. - // later, in trim_weights() deactivate/reactive again some, if need - subsample_mask->data.ptr[i] = (uchar)1; - // make all the initial weights the same. - weights->data.db[i] = w0*p[class_labels[i]]; - // set the labels to find (from within weak tree learning proc) - // the particular sample weight, and where to store the response. - labels[i] = i; - } + for( pidx = node->parent; pidx >= 0 && nodes[pidx].right == nidx; + nidx = pidx, pidx = nodes[pidx].parent ) + ; + + if( pidx < 0 ) + break; + + nidx = nodes[pidx].right; } + } - if( params.boost_type == LOGIT ) + void calcValue( int nidx, const vector& _sidx ) + { + DTreesImpl::calcValue(nidx, _sidx); + WNode* node = &w->wnodes[nidx]; + if( bparams.boostType == Boost::DISCRETE ) { - CV_CALL( sum_response = cvCreateMat( 1, n, CV_64F )); - - for( i = 0; i < n; i++ ) - { - sum_response->data.db[i] = 0; - fdata[sample_idx[i]*step] = orig_response->data.i[i] > 0 ? 2.f : -2.f; - } - - // in case of logitboost each weak tree is a regression tree. - // the target function values are recalculated for each of the trees - data->is_classifier = false; + node->value = node->class_idx == 0 ? -1 : 1; } - else if( params.boost_type == GENTLE ) + else if( bparams.boostType == Boost::REAL ) { - for( i = 0; i < n; i++ ) - fdata[sample_idx[i]*step] = (float)orig_response->data.i[i]; - - data->is_classifier = false; + double p = node->value; + node->value = 0.5*log_ratio(p); } } - else - { - // at this moment, for all the samples that participated in the training of the most - // recent weak classifier we know the responses. For other samples we need to compute them - if( have_subsample ) - { - float* values = (float*)cur_buf_pos; - cur_buf_pos = (uchar*)(values + data->get_length_subbuf()); - uchar* missing = cur_buf_pos; - cur_buf_pos = missing + data->get_length_subbuf() * (size_t)CV_ELEM_SIZE(data->buf->type); - CvMat _sample, _mask; + bool train( const Ptr& trainData, int flags ) + { + Params dp(bparams.maxDepth, bparams.minSampleCount, bparams.regressionAccuracy, + bparams.useSurrogates, bparams.maxCategories, 0, + false, false, bparams.priors); + setDParams(dp); + startTraining(trainData, flags); + int treeidx, ntrees = bparams.weakCount >= 0 ? bparams.weakCount : 10000; + vector sidx = w->sidx; - // invert the subsample mask - cvXorS( subsample_mask, cvScalar(1.), subsample_mask ); - data->get_vectors( subsample_mask, values, missing, 0 ); + for( treeidx = 0; treeidx < ntrees; treeidx++ ) + { + int root = addTree( sidx ); + if( root < 0 ) + return false; + updateWeightsAndTrim( treeidx, sidx ); + } + endTraining(); + return true; + } - _sample = cvMat( 1, data->var_count, CV_32F ); - _mask = cvMat( 1, data->var_count, CV_8U ); + void updateWeightsAndTrim( int treeidx, vector& sidx ) + { + int i, n = (int)w->sidx.size(); + int nvars = (int)varIdx.size(); + double sumw = 0.; + cv::AutoBuffer buf(n*3 + nvars); + double* result = buf; + float* sbuf = (float*)(result + n*3); + Mat sample(1, nvars, CV_32F, sbuf); + int predictFlags = bparams.boostType == Boost::DISCRETE ? (PREDICT_MAX_VOTE | RAW_OUTPUT) : PREDICT_SUM; + predictFlags |= COMPRESSED_INPUT; - // run tree through all the non-processed samples - for( i = 0; i < n; i++ ) - if( subsample_mask->data.ptr[i] ) - { - _sample.data.fl = values; - _mask.data.ptr = missing; - values += _sample.cols; - missing += _mask.cols; - weak_eval->data.db[i] = tree->predict( &_sample, &_mask, true )->value; - } + for( i = 0; i < n; i++ ) + { + w->data->getSample(varIdx, w->sidx[i], sbuf ); + result[i] = predictTrees(Range(treeidx, treeidx+1), sample, predictFlags); } // now update weights and other parameters for each type of boosting - if( params.boost_type == DISCRETE ) + if( bparams.boostType == Boost::DISCRETE ) { // Discrete AdaBoost: // weak_eval[i] (=f(x_i)) is in {-1,1} // err = sum(w_i*(f(x_i) != y_i))/sum(w_i) // C = log((1-err)/err) // w_i *= exp(C*(f(x_i) != y_i)) - - double C, err = 0.; - double scale[] = { 1., 0. }; + double err = 0.; for( i = 0; i < n; i++ ) { - double w = weights->data.db[i]; - sumw += w; - err += w*(weak_eval->data.db[i] != orig_response->data.i[i]); + int si = w->sidx[i]; + double wval = w->sample_weights[si]; + sumw += wval; + err += wval*(result[i] != w->cat_responses[si]); } if( sumw != 0 ) err /= sumw; - C = err = -log_ratio( err ); - scale[1] = exp(err); + double C = -log_ratio( err ); + double scale = std::exp(C); sumw = 0; for( i = 0; i < n; i++ ) { - double w = weights->data.db[i]* - scale[weak_eval->data.db[i] != orig_response->data.i[i]]; - sumw += w; - weights->data.db[i] = w; + int si = w->sidx[i]; + double wval = w->sample_weights[si]; + if( result[i] != w->cat_responses[si] ) + wval *= scale; + sumw += wval; + w->sample_weights[si] = wval; } - tree->scale( C ); + scaleTree(roots[treeidx], C); } - else if( params.boost_type == REAL ) + else if( bparams.boostType == Boost::REAL || bparams.boostType == Boost::GENTLE ) { // Real AdaBoost: // weak_eval[i] = f(x_i) = 0.5*log(p(x_i)/(1-p(x_i))), p(x_i)=P(y=1|x_i) // w_i *= exp(-y_i*f(x_i)) - for( i = 0; i < n; i++ ) - weak_eval->data.db[i] *= -orig_response->data.i[i]; - - cvExp( weak_eval, weak_eval ); - + // Gentle AdaBoost: + // weak_eval[i] = f(x_i) in [-1,1] + // w_i *= exp(-y_i*f(x_i)) for( i = 0; i < n; i++ ) { - double w = weights->data.db[i]*weak_eval->data.db[i]; - sumw += w; - weights->data.db[i] = w; + int si = w->sidx[i]; + double wval = w->sample_weights[si]*std::exp(-result[i]*w->ord_responses[si]); + sumw += wval; + w->sample_weights[si] = wval; } } - else if( params.boost_type == LOGIT ) + else if( bparams.boostType == Boost::LOGIT ) { // LogitBoost: // weak_eval[i] = f(x_i) in [-z_max,z_max] @@ -1353,810 +305,209 @@ CvBoost::update_weights( CvBoostTree* tree ) // w_i = p(x_i)*1(1 - p(x_i)) // z_i = ((y_i+1)/2 - p(x_i))/(p(x_i)*(1 - p(x_i))) // store z_i to the data->data_root as the new target responses - const double lb_weight_thresh = FLT_EPSILON; const double lb_z_max = 10.; - /*float* responses_buf = data->get_resp_float_buf(); - const float* responses = 0; - data->get_ord_responses(data->data_root, responses_buf, &responses);*/ - - /*if( weak->total == 7 ) - putchar('*');*/ - - for( i = 0; i < n; i++ ) - { - double s = sum_response->data.db[i] + 0.5*weak_eval->data.db[i]; - sum_response->data.db[i] = s; - weak_eval->data.db[i] = -2*s; - } - - cvExp( weak_eval, weak_eval ); for( i = 0; i < n; i++ ) { - double p = 1./(1. + weak_eval->data.db[i]); - double w = p*(1 - p), z; - w = MAX( w, lb_weight_thresh ); - weights->data.db[i] = w; - sumw += w; - if( orig_response->data.i[i] > 0 ) + int si = w->sidx[i]; + sumResult[i] += 0.5*result[i]; + double p = 1./(1 + std::exp(-2*sumResult[i])); + double wval = std::max( p*(1 - p), lb_weight_thresh ), z; + w->sample_weights[si] = wval; + sumw += wval; + if( w->ord_responses[si] > 0 ) { z = 1./p; - fdata[sample_idx[i]*step] = (float)MIN(z, lb_z_max); + w->ord_responses[si] = std::min(z, lb_z_max); } else { z = 1./(1-p); - fdata[sample_idx[i]*step] = (float)-MIN(z, lb_z_max); + w->ord_responses[si] = -std::min(z, lb_z_max); } } } else - { - // Gentle AdaBoost: - // weak_eval[i] = f(x_i) in [-1,1] - // w_i *= exp(-y_i*f(x_i)) - assert( params.boost_type == GENTLE ); - - for( i = 0; i < n; i++ ) - weak_eval->data.db[i] *= -orig_response->data.i[i]; - - cvExp( weak_eval, weak_eval ); - - for( i = 0; i < n; i++ ) - { - double w = weights->data.db[i] * weak_eval->data.db[i]; - weights->data.db[i] = w; - sumw += w; - } - } - } - - // renormalize weights - if( sumw > FLT_EPSILON ) - { - sumw = 1./sumw; - for( i = 0; i < n; ++i ) - weights->data.db[i] *= sumw; - } - - __END__; -} - - -void -CvBoost::trim_weights() -{ - //CV_FUNCNAME( "CvBoost::trim_weights" ); - - __BEGIN__; - - int i, count = data->sample_count, nz_count = 0; - double sum, threshold; - - if( params.weight_trim_rate <= 0. || params.weight_trim_rate >= 1. ) - EXIT; - - // use weak_eval as temporary buffer for sorted weights - cvCopy( weights, weak_eval ); - - std::sort(weak_eval->data.db, weak_eval->data.db + count); - - // as weight trimming occurs immediately after updating the weights, - // where they are renormalized, we assume that the weight sum = 1. - sum = 1. - params.weight_trim_rate; - - for( i = 0; i < count; i++ ) - { - double w = weak_eval->data.db[i]; - if( sum <= 0 ) - break; - sum -= w; - } - - threshold = i < count ? weak_eval->data.db[i] : DBL_MAX; - - for( i = 0; i < count; i++ ) - { - double w = weights->data.db[i]; - int f = w >= threshold; - subsample_mask->data.ptr[i] = (uchar)f; - nz_count += f; - } - - have_subsample = nz_count < count; - - __END__; -} - - -const CvMat* -CvBoost::get_active_vars( bool absolute_idx ) -{ - CvMat* mask = 0; - CvMat* inv_map = 0; - CvMat* result = 0; + CV_Error(CV_StsNotImplemented, "Unknown boosting type"); + + // renormalize weights + if( sumw > FLT_EPSILON ) + normalizeWeights(); - CV_FUNCNAME( "CvBoost::get_active_vars" ); + if( bparams.weightTrimRate <= 0. || bparams.weightTrimRate >= 1. ) + return; - __BEGIN__; + for( i = 0; i < n; i++ ) + result[i] = w->sample_weights[w->sidx[i]]; + std::sort(result, result + n); - if( !weak ) - CV_ERROR( CV_StsError, "The boosted tree ensemble has not been trained yet" ); + // as weight trimming occurs immediately after updating the weights, + // where they are renormalized, we assume that the weight sum = 1. + sumw = 1. - bparams.weightTrimRate; - if( !active_vars || !active_vars_abs ) - { - CvSeqReader reader; - int i, j, nactive_vars; - CvBoostTree* wtree; - const CvDTreeNode* node; - - assert(!active_vars && !active_vars_abs); - mask = cvCreateMat( 1, data->var_count, CV_8U ); - inv_map = cvCreateMat( 1, data->var_count, CV_32S ); - cvZero( mask ); - cvSet( inv_map, cvScalar(-1) ); - - // first pass: compute the mask of used variables - cvStartReadSeq( weak, &reader ); - for( i = 0; i < weak->total; i++ ) + for( i = 0; i < n; i++ ) { - CV_READ_SEQ_ELEM(wtree, reader); - - node = wtree->get_root(); - assert( node != 0 ); - for(;;) - { - const CvDTreeNode* parent; - for(;;) - { - CvDTreeSplit* split = node->split; - for( ; split != 0; split = split->next ) - mask->data.ptr[split->var_idx] = 1; - if( !node->left ) - break; - node = node->left; - } - - for( parent = node->parent; parent && parent->right == node; - node = parent, parent = parent->parent ) - ; - - if( !parent ) - break; - - node = parent->right; - } + double wval = result[i]; + if( sumw <= 0 ) + break; + sumw -= wval; } - nactive_vars = cvCountNonZero(mask); + double threshold = i < n ? result[i] : DBL_MAX; + sidx.clear(); - //if ( nactive_vars > 0 ) + for( i = 0; i < n; i++ ) { - active_vars = cvCreateMat( 1, nactive_vars, CV_32S ); - active_vars_abs = cvCreateMat( 1, nactive_vars, CV_32S ); - - have_active_cat_vars = false; - - for( i = j = 0; i < data->var_count; i++ ) - { - if( mask->data.ptr[i] ) - { - active_vars->data.i[j] = i; - active_vars_abs->data.i[j] = data->var_idx ? data->var_idx->data.i[i] : i; - inv_map->data.i[i] = j; - if( data->var_type->data.i[i] >= 0 ) - have_active_cat_vars = true; - j++; - } - } - - - // second pass: now compute the condensed indices - cvStartReadSeq( weak, &reader ); - for( i = 0; i < weak->total; i++ ) - { - CV_READ_SEQ_ELEM(wtree, reader); - node = wtree->get_root(); - for(;;) - { - const CvDTreeNode* parent; - for(;;) - { - CvDTreeSplit* split = node->split; - for( ; split != 0; split = split->next ) - { - split->condensed_idx = inv_map->data.i[split->var_idx]; - assert( split->condensed_idx >= 0 ); - } - - if( !node->left ) - break; - node = node->left; - } - - for( parent = node->parent; parent && parent->right == node; - node = parent, parent = parent->parent ) - ; - - if( !parent ) - break; - - node = parent->right; - } - } + int si = w->sidx[i]; + if( w->sample_weights[si] >= threshold ) + sidx.push_back(si); } } - result = absolute_idx ? active_vars_abs : active_vars; - - __END__; - - cvReleaseMat( &mask ); - cvReleaseMat( &inv_map ); - - return result; -} - - -float -CvBoost::predict( const CvMat* _sample, const CvMat* _missing, - CvMat* weak_responses, CvSlice slice, - bool raw_mode, bool return_sum ) const -{ - float value = -FLT_MAX; - - CvSeqReader reader; - double sum = 0; - int wstep = 0; - const float* sample_data; - - if( !weak ) - CV_Error( CV_StsError, "The boosted tree ensemble has not been trained yet" ); - - if( !CV_IS_MAT(_sample) || CV_MAT_TYPE(_sample->type) != CV_32FC1 || - (_sample->cols != 1 && _sample->rows != 1) || - (_sample->cols + _sample->rows - 1 != data->var_all && !raw_mode) || - (active_vars && _sample->cols + _sample->rows - 1 != active_vars->cols && raw_mode) ) - CV_Error( CV_StsBadArg, - "the input sample must be 1d floating-point vector with the same " - "number of elements as the total number of variables or " - "as the number of variables used for training" ); - - if( _missing ) + float predictTrees( const Range& range, const Mat& sample, int flags0 ) const { - if( !CV_IS_MAT(_missing) || !CV_IS_MASK_ARR(_missing) || - !CV_ARE_SIZES_EQ(_missing, _sample) ) - CV_Error( CV_StsBadArg, - "the missing data mask must be 8-bit vector of the same size as input sample" ); + int flags = (flags0 & ~PREDICT_MASK) | PREDICT_SUM; + float val = DTreesImpl::predictTrees(range, sample, flags); + if( flags != flags0 ) + { + int ival = (int)(val > 0); + if( !(flags0 & RAW_OUTPUT) ) + ival = classLabels[ival]; + val = (float)ival; + } + return val; } - int i, weak_count = cvSliceLength( slice, weak ); - if( weak_count >= weak->total ) + void writeTrainingParams( FileStorage& fs ) const { - weak_count = weak->total; - slice.start_index = 0; - } + fs << "boosting_type" << + (bparams.boostType == Boost::DISCRETE ? "DiscreteAdaboost" : + bparams.boostType == Boost::REAL ? "RealAdaboost" : + bparams.boostType == Boost::LOGIT ? "LogitBoost" : + bparams.boostType == Boost::GENTLE ? "GentleAdaboost" : "Unknown"); - if( weak_responses ) - { - if( !CV_IS_MAT(weak_responses) || - CV_MAT_TYPE(weak_responses->type) != CV_32FC1 || - (weak_responses->cols != 1 && weak_responses->rows != 1) || - weak_responses->cols + weak_responses->rows - 1 != weak_count ) - CV_Error( CV_StsBadArg, - "The output matrix of weak classifier responses must be valid " - "floating-point vector of the same number of components as the length of input slice" ); - wstep = CV_IS_MAT_CONT(weak_responses->type) ? 1 : weak_responses->step/sizeof(float); + DTreesImpl::writeTrainingParams(fs); + fs << "weight_trimming_rate" << bparams.weightTrimRate; } - int var_count = active_vars->cols; - const int* vtype = data->var_type->data.i; - const int* cmap = data->cat_map->data.i; - const int* cofs = data->cat_ofs->data.i; - - cv::Mat sample = cv::cvarrToMat(_sample); - cv::Mat missing; - if(!_missing) - missing = cv::cvarrToMat(_missing); - - // if need, preprocess the input vector - if( !raw_mode ) + void write( FileStorage& fs ) const { - int sstep, mstep = 0; - const float* src_sample; - const uchar* src_mask = 0; - float* dst_sample; - uchar* dst_mask; - const int* vidx = active_vars->data.i; - const int* vidx_abs = active_vars_abs->data.i; - bool have_mask = _missing != 0; + if( roots.empty() ) + CV_Error( CV_StsBadArg, "RTrees have not been trained" ); - sample = cv::Mat(1, var_count, CV_32FC1); - missing = cv::Mat(1, var_count, CV_8UC1); + writeParams(fs); - dst_sample = sample.ptr(); - dst_mask = missing.ptr(); + int k, ntrees = (int)roots.size(); - src_sample = _sample->data.fl; - sstep = CV_IS_MAT_CONT(_sample->type) ? 1 : _sample->step/sizeof(src_sample[0]); + fs << "ntrees" << ntrees + << "trees" << "["; - if( _missing ) + for( k = 0; k < ntrees; k++ ) { - src_mask = _missing->data.ptr; - mstep = CV_IS_MAT_CONT(_missing->type) ? 1 : _missing->step; - } - - for( i = 0; i < var_count; i++ ) - { - int idx = vidx[i], idx_abs = vidx_abs[i]; - float val = src_sample[idx_abs*sstep]; - int ci = vtype[idx]; - uchar m = src_mask ? src_mask[idx_abs*mstep] : (uchar)0; - - if( ci >= 0 ) - { - int a = cofs[ci], b = (ci+1 >= data->cat_ofs->cols) ? data->cat_map->cols : cofs[ci+1], - c = a; - int ival = cvRound(val); - if ( (ival != val) && (!m) ) - CV_Error( CV_StsBadArg, - "one of input categorical variable is not an integer" ); - - while( a < b ) - { - c = (a + b) >> 1; - if( ival < cmap[c] ) - b = c; - else if( ival > cmap[c] ) - a = c+1; - else - break; - } - - if( c < 0 || ival != cmap[c] ) - { - m = 1; - have_mask = true; - } - else - { - val = (float)(c - cofs[ci]); - } - } - - dst_sample[i] = val; - dst_mask[i] = m; + fs << "{"; + writeTree(fs, roots[k]); + fs << "}"; } - if( !have_mask ) - missing.release(); - } - else - { - if( !CV_IS_MAT_CONT(_sample->type & (_missing ? _missing->type : -1)) ) - CV_Error( CV_StsBadArg, "In raw mode the input vectors must be continuous" ); + fs << "]"; } - cvStartReadSeq( weak, &reader ); - cvSetSeqReaderPos( &reader, slice.start_index ); - - sample_data = sample.ptr(); - - if( !have_active_cat_vars && missing.empty() && !weak_responses ) - { - for( i = 0; i < weak_count; i++ ) - { - CvBoostTree* wtree; - const CvDTreeNode* node; - CV_READ_SEQ_ELEM( wtree, reader ); - - node = wtree->get_root(); - while( node->left ) - { - CvDTreeSplit* split = node->split; - int vi = split->condensed_idx; - float val = sample_data[vi]; - int dir = val <= split->ord.c ? -1 : 1; - if( split->inversed ) - dir = -dir; - node = dir < 0 ? node->left : node->right; - } - sum += node->value; - } - } - else + void readParams( const FileNode& fn ) { - const int* avars = active_vars->data.i; - const uchar* m = !missing.empty() ? missing.ptr() : 0; - - // full-featured version - for( i = 0; i < weak_count; i++ ) - { - CvBoostTree* wtree; - const CvDTreeNode* node; - CV_READ_SEQ_ELEM( wtree, reader ); - - node = wtree->get_root(); - while( node->left ) - { - const CvDTreeSplit* split = node->split; - int dir = 0; - for( ; !dir && split != 0; split = split->next ) - { - int vi = split->condensed_idx; - int ci = vtype[avars[vi]]; - float val = sample_data[vi]; - if( m && m[vi] ) - continue; - if( ci < 0 ) // ordered - dir = val <= split->ord.c ? -1 : 1; - else // categorical - { - int c = cvRound(val); - dir = CV_DTREE_CAT_DIR(c, split->subset); - } - if( split->inversed ) - dir = -dir; - } + DTreesImpl::readParams(fn); + bparams.maxDepth = params0.maxDepth; + bparams.minSampleCount = params0.minSampleCount; + bparams.regressionAccuracy = params0.regressionAccuracy; + bparams.useSurrogates = params0.useSurrogates; + bparams.maxCategories = params0.maxCategories; + bparams.priors = params0.priors; - if( !dir ) - { - int diff = node->right->sample_count - node->left->sample_count; - dir = diff < 0 ? -1 : 1; - } - node = dir < 0 ? node->left : node->right; - } - if( weak_responses ) - weak_responses->data.fl[i*wstep] = (float)node->value; - sum += node->value; - } + FileNode tparams_node = fn["training_params"]; + String bts = (String)tparams_node["boosting_type"]; + bparams.boostType = (bts == "DiscreteAdaboost" ? Boost::DISCRETE : + bts == "RealAdaboost" ? Boost::REAL : + bts == "LogitBoost" ? Boost::LOGIT : + bts == "GentleAdaboost" ? Boost::GENTLE : -1); + _isClassifier = bparams.boostType == Boost::DISCRETE; + bparams.weightTrimRate = (double)tparams_node["weight_trimming_rate"]; } - if( return_sum ) - value = (float)sum; - else + void read( const FileNode& fn ) { - int cls_idx = sum >= 0; - if( raw_mode ) - value = (float)cls_idx; - else - value = (float)cmap[cofs[vtype[data->var_count]] + cls_idx]; - } + clear(); - return value; -} + int ntrees = (int)fn["ntrees"]; + readParams(fn); -float CvBoost::calc_error( CvMLData* _data, int type, std::vector *resp ) -{ - float err = 0; - const CvMat* values = _data->get_values(); - const CvMat* response = _data->get_responses(); - const CvMat* missing = _data->get_missing(); - const CvMat* sample_idx = (type == CV_TEST_ERROR) ? _data->get_test_sample_idx() : _data->get_train_sample_idx(); - const CvMat* var_types = _data->get_var_types(); - int* sidx = sample_idx ? sample_idx->data.i : 0; - int r_step = CV_IS_MAT_CONT(response->type) ? - 1 : response->step / CV_ELEM_SIZE(response->type); - bool is_classifier = var_types->data.ptr[var_types->cols-1] == CV_VAR_CATEGORICAL; - int sample_count = sample_idx ? sample_idx->cols : 0; - sample_count = (type == CV_TRAIN_ERROR && sample_count == 0) ? values->rows : sample_count; - float* pred_resp = 0; - if( resp && (sample_count > 0) ) - { - resp->resize( sample_count ); - pred_resp = &((*resp)[0]); - } - if ( is_classifier ) - { - for( int i = 0; i < sample_count; i++ ) - { - CvMat sample, miss; - int si = sidx ? sidx[i] : i; - cvGetRow( values, &sample, si ); - if( missing ) - cvGetRow( missing, &miss, si ); - float r = (float)predict( &sample, missing ? &miss : 0 ); - if( pred_resp ) - pred_resp[i] = r; - int d = fabs((double)r - response->data.fl[si*r_step]) <= FLT_EPSILON ? 0 : 1; - err += d; - } - err = sample_count ? err / (float)sample_count * 100 : -FLT_MAX; - } - else - { - for( int i = 0; i < sample_count; i++ ) + FileNode trees_node = fn["trees"]; + FileNodeIterator it = trees_node.begin(); + CV_Assert( ntrees == (int)trees_node.size() ); + + for( int treeidx = 0; treeidx < ntrees; treeidx++, ++it ) { - CvMat sample, miss; - int si = sidx ? sidx[i] : i; - cvGetRow( values, &sample, si ); - if( missing ) - cvGetRow( missing, &miss, si ); - float r = (float)predict( &sample, missing ? &miss : 0 ); - if( pred_resp ) - pred_resp[i] = r; - float d = r - response->data.fl[si*r_step]; - err += d*d; + FileNode nfn = (*it)["nodes"]; + readTree(nfn); } - err = sample_count ? err / (float)sample_count : -FLT_MAX; } - return err; -} - -void CvBoost::write_params( CvFileStorage* fs ) const -{ - const char* boost_type_str = - params.boost_type == DISCRETE ? "DiscreteAdaboost" : - params.boost_type == REAL ? "RealAdaboost" : - params.boost_type == LOGIT ? "LogitBoost" : - params.boost_type == GENTLE ? "GentleAdaboost" : 0; - - const char* split_crit_str = - params.split_criteria == DEFAULT ? "Default" : - params.split_criteria == GINI ? "Gini" : - params.boost_type == MISCLASS ? "Misclassification" : - params.boost_type == SQERR ? "SquaredErr" : 0; - - if( boost_type_str ) - cvWriteString( fs, "boosting_type", boost_type_str ); - else - cvWriteInt( fs, "boosting_type", params.boost_type ); - - if( split_crit_str ) - cvWriteString( fs, "splitting_criteria", split_crit_str ); - else - cvWriteInt( fs, "splitting_criteria", params.split_criteria ); - - cvWriteInt( fs, "ntrees", weak->total ); - cvWriteReal( fs, "weight_trimming_rate", params.weight_trim_rate ); - - data->write_params( fs ); -} + + Boost::Params bparams; + vector sumResult; +}; -void CvBoost::read_params( CvFileStorage* fs, CvFileNode* fnode ) +class BoostImpl : public Boost { - CV_FUNCNAME( "CvBoost::read_params" ); - - __BEGIN__; - - CvFileNode* temp; - - if( !fnode || !CV_NODE_IS_MAP(fnode->tag) ) - return; - - data = new CvDTreeTrainData(); - CV_CALL( data->read_params(fs, fnode)); - data->shared = true; - - params.max_depth = data->params.max_depth; - params.min_sample_count = data->params.min_sample_count; - params.max_categories = data->params.max_categories; - params.priors = data->params.priors; - params.regression_accuracy = data->params.regression_accuracy; - params.use_surrogates = data->params.use_surrogates; +public: + BoostImpl() {} + virtual ~BoostImpl() {} - temp = cvGetFileNodeByName( fs, fnode, "boosting_type" ); - if( !temp ) - return; + String getDefaultModelName() const { return "opencv_ml_boost"; } - if( temp && CV_NODE_IS_STRING(temp->tag) ) + bool train( const Ptr& trainData, int flags ) { - const char* boost_type_str = cvReadString( temp, "" ); - params.boost_type = strcmp( boost_type_str, "DiscreteAdaboost" ) == 0 ? DISCRETE : - strcmp( boost_type_str, "RealAdaboost" ) == 0 ? REAL : - strcmp( boost_type_str, "LogitBoost" ) == 0 ? LOGIT : - strcmp( boost_type_str, "GentleAdaboost" ) == 0 ? GENTLE : -1; + return impl.train(trainData, flags); } - else - params.boost_type = cvReadInt( temp, -1 ); - - if( params.boost_type < DISCRETE || params.boost_type > GENTLE ) - CV_ERROR( CV_StsBadArg, "Unknown boosting type" ); - temp = cvGetFileNodeByName( fs, fnode, "splitting_criteria" ); - if( temp && CV_NODE_IS_STRING(temp->tag) ) + float predict( InputArray samples, OutputArray results, int flags ) const { - const char* split_crit_str = cvReadString( temp, "" ); - params.split_criteria = strcmp( split_crit_str, "Default" ) == 0 ? DEFAULT : - strcmp( split_crit_str, "Gini" ) == 0 ? GINI : - strcmp( split_crit_str, "Misclassification" ) == 0 ? MISCLASS : - strcmp( split_crit_str, "SquaredErr" ) == 0 ? SQERR : -1; + return impl.predict(samples, results, flags); } - else - params.split_criteria = cvReadInt( temp, -1 ); - - if( params.split_criteria < DEFAULT || params.boost_type > SQERR ) - CV_ERROR( CV_StsBadArg, "Unknown boosting type" ); - - params.weak_count = cvReadIntByName( fs, fnode, "ntrees" ); - params.weight_trim_rate = cvReadRealByName( fs, fnode, "weight_trimming_rate", 0. ); - - __END__; -} - - - -void -CvBoost::read( CvFileStorage* fs, CvFileNode* node ) -{ - CV_FUNCNAME( "CvBoost::read" ); - - __BEGIN__; - - CvSeqReader reader; - CvFileNode* trees_fnode; - CvMemStorage* storage; - int i, ntrees; - - clear(); - read_params( fs, node ); - - if( !data ) - EXIT; - trees_fnode = cvGetFileNodeByName( fs, node, "trees" ); - if( !trees_fnode || !CV_NODE_IS_SEQ(trees_fnode->tag) ) - CV_ERROR( CV_StsParseError, " tag is missing" ); - - cvStartReadSeq( trees_fnode->data.seq, &reader ); - ntrees = trees_fnode->data.seq->total; - - if( ntrees != params.weak_count ) - CV_ERROR( CV_StsUnmatchedSizes, - "The number of trees stored does not match tag value" ); - - CV_CALL( storage = cvCreateMemStorage() ); - weak = cvCreateSeq( 0, sizeof(CvSeq), sizeof(CvBoostTree*), storage ); - - for( i = 0; i < ntrees; i++ ) + void write( FileStorage& fs ) const { - CvBoostTree* tree = new CvBoostTree(); - CV_CALL(tree->read( fs, (CvFileNode*)reader.ptr, this, data )); - CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); - cvSeqPush( weak, &tree ); + impl.write(fs); } - get_active_vars(); - - __END__; -} - - -void -CvBoost::write( CvFileStorage* fs, const char* name ) const -{ - CV_FUNCNAME( "CvBoost::write" ); - - __BEGIN__; - - CvSeqReader reader; - int i; - - cvStartWriteStruct( fs, name, CV_NODE_MAP, CV_TYPE_NAME_ML_BOOSTING ); - if( !weak ) - CV_ERROR( CV_StsBadArg, "The classifier has not been trained yet" ); - - write_params( fs ); - cvStartWriteStruct( fs, "trees", CV_NODE_SEQ ); - - cvStartReadSeq( weak, &reader ); - - for( i = 0; i < weak->total; i++ ) + void read( const FileNode& fn ) { - CvBoostTree* tree; - CV_READ_SEQ_ELEM( tree, reader ); - cvStartWriteStruct( fs, 0, CV_NODE_MAP ); - tree->write( fs ); - cvEndWriteStruct( fs ); + impl.read(fn); } - cvEndWriteStruct( fs ); - cvEndWriteStruct( fs ); - - __END__; -} - - -CvMat* -CvBoost::get_weights() -{ - return weights; -} - - -CvMat* -CvBoost::get_subtree_weights() -{ - return subtree_weights; -} - - -CvMat* -CvBoost::get_weak_response() -{ - return weak_eval; -} - - -const CvBoostParams& -CvBoost::get_params() const -{ - return params; -} + void setBParams(const Params& p) { impl.setBParams(p); } + Params getBParams() const { return impl.getBParams(); } -CvSeq* CvBoost::get_weak_predictors() -{ - return weak; -} + int getVarCount() const { return impl.getVarCount(); } -const CvDTreeTrainData* CvBoost::get_data() const -{ - return data; -} + bool isTrained() const { return impl.isTrained(); } + bool isClassifier() const { return impl.isClassifier(); } -using namespace cv; + const vector& getRoots() const { return impl.getRoots(); } + const vector& getNodes() const { return impl.getNodes(); } + const vector& getSplits() const { return impl.getSplits(); } + const vector& getSubsets() const { return impl.getSubsets(); } -CvBoost::CvBoost( const Mat& _train_data, int _tflag, - const Mat& _responses, const Mat& _var_idx, - const Mat& _sample_idx, const Mat& _var_type, - const Mat& _missing_mask, - CvBoostParams _params ) -{ - weak = 0; - data = 0; - default_model_name = "my_boost_tree"; - active_vars = active_vars_abs = orig_response = sum_response = weak_eval = - subsample_mask = weights = subtree_weights = 0; - - train( _train_data, _tflag, _responses, _var_idx, _sample_idx, - _var_type, _missing_mask, _params ); -} + DTreesImplForBoost impl; +}; -bool -CvBoost::train( const Mat& _train_data, int _tflag, - const Mat& _responses, const Mat& _var_idx, - const Mat& _sample_idx, const Mat& _var_type, - const Mat& _missing_mask, - CvBoostParams _params, bool _update ) +Ptr Boost::create(const Params& params) { - train_data_hdr = _train_data; - train_data_mat = _train_data; - responses_hdr = _responses; - responses_mat = _responses; - - CvMat vidx = _var_idx, sidx = _sample_idx, vtype = _var_type, mmask = _missing_mask; - - return train(&train_data_hdr, _tflag, &responses_hdr, vidx.data.ptr ? &vidx : 0, - sidx.data.ptr ? &sidx : 0, vtype.data.ptr ? &vtype : 0, - mmask.data.ptr ? &mmask : 0, _params, _update); + Ptr p = makePtr(); + p->setBParams(params); + return p; } -float -CvBoost::predict( const Mat& _sample, const Mat& _missing, - const Range& slice, bool raw_mode, bool return_sum ) const -{ - CvMat sample = _sample, mmask = _missing; - /*if( weak_responses ) - { - int weak_count = cvSliceLength( slice, weak ); - if( weak_count >= weak->total ) - { - weak_count = weak->total; - slice.start_index = 0; - } - - if( !(weak_responses->data && weak_responses->type() == CV_32FC1 && - (weak_responses->cols == 1 || weak_responses->rows == 1) && - weak_responses->cols + weak_responses->rows - 1 == weak_count) ) - weak_responses->create(weak_count, 1, CV_32FC1); - pwr = &(wr = *weak_responses); - }*/ - return predict(&sample, _missing.empty() ? 0 : &mmask, 0, - slice == Range::all() ? CV_WHOLE_SEQ : cvSlice(slice.start, slice.end), - raw_mode, return_sum); -} +}} /* End of file. */ diff --git a/modules/ml/src/cnn.cpp b/modules/ml/src/cnn.cpp deleted file mode 100644 index 0e0b1d08b7..0000000000 --- a/modules/ml/src/cnn.cpp +++ /dev/null @@ -1,1675 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of Intel Corporation may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "precomp.hpp" - -#if 0 -/****************************************************************************************\ -* Auxilary functions declarations * -\****************************************************************************************/ -/*---------------------- functions for the CNN classifier ------------------------------*/ -static float icvCNNModelPredict( - const CvStatModel* cnn_model, - const CvMat* image, - CvMat* probs CV_DEFAULT(0) ); - -static void icvCNNModelUpdate( - CvStatModel* cnn_model, const CvMat* images, int tflag, - const CvMat* responses, const CvStatModelParams* params, - const CvMat* CV_DEFAULT(0), const CvMat* sample_idx CV_DEFAULT(0), - const CvMat* CV_DEFAULT(0), const CvMat* CV_DEFAULT(0)); - -static void icvCNNModelRelease( CvStatModel** cnn_model ); - -static void icvTrainCNNetwork( CvCNNetwork* network, - const float** images, - const CvMat* responses, - const CvMat* etalons, - int grad_estim_type, - int max_iter, - int start_iter ); - -/*------------------------- functions for the CNN network ------------------------------*/ -static void icvCNNetworkAddLayer( CvCNNetwork* network, CvCNNLayer* layer ); -static void icvCNNetworkRelease( CvCNNetwork** network ); - -/* In all layer functions we denote input by X and output by Y, where - X and Y are column-vectors, so that - length(X)==**, - length(Y)==**. -*/ -/*------------------------ functions for convolutional layer ---------------------------*/ -static void icvCNNConvolutionRelease( CvCNNLayer** p_layer ); - -static void icvCNNConvolutionForward( CvCNNLayer* layer, const CvMat* X, CvMat* Y ); - -static void icvCNNConvolutionBackward( CvCNNLayer* layer, int t, - const CvMat* X, const CvMat* dE_dY, CvMat* dE_dX ); - -/*------------------------ functions for sub-sampling layer ----------------------------*/ -static void icvCNNSubSamplingRelease( CvCNNLayer** p_layer ); - -static void icvCNNSubSamplingForward( CvCNNLayer* layer, const CvMat* X, CvMat* Y ); - -static void icvCNNSubSamplingBackward( CvCNNLayer* layer, int t, - const CvMat* X, const CvMat* dE_dY, CvMat* dE_dX ); - -/*------------------------ functions for full connected layer --------------------------*/ -static void icvCNNFullConnectRelease( CvCNNLayer** p_layer ); - -static void icvCNNFullConnectForward( CvCNNLayer* layer, const CvMat* X, CvMat* Y ); - -static void icvCNNFullConnectBackward( CvCNNLayer* layer, int, - const CvMat*, const CvMat* dE_dY, CvMat* dE_dX ); - -/****************************************************************************************\ -* Functions implementations * -\****************************************************************************************/ - -#define ICV_CHECK_CNN_NETWORK(network) \ -{ \ - CvCNNLayer* first_layer, *layer, *last_layer; \ - int n_layers, i; \ - if( !network ) \ - CV_ERROR( CV_StsNullPtr, \ - "Null pointer. Network must be created by user." ); \ - n_layers = network->n_layers; \ - first_layer = last_layer = network->layers; \ - for( i = 0, layer = first_layer; i < n_layers && layer; i++ ) \ - { \ - if( !ICV_IS_CNN_LAYER(layer) ) \ - CV_ERROR( CV_StsNullPtr, "Invalid network" ); \ - last_layer = layer; \ - layer = layer->next_layer; \ - } \ - \ - if( i == 0 || i != n_layers || first_layer->prev_layer || layer ) \ - CV_ERROR( CV_StsNullPtr, "Invalid network" ); \ - \ - if( first_layer->n_input_planes != 1 ) \ - CV_ERROR( CV_StsBadArg, "First layer must contain only one input plane" ); \ - \ - if( img_size != first_layer->input_height*first_layer->input_width ) \ - CV_ERROR( CV_StsBadArg, "Invalid input sizes of the first layer" ); \ - \ - if( params->etalons->cols != last_layer->n_output_planes* \ - last_layer->output_height*last_layer->output_width ) \ - CV_ERROR( CV_StsBadArg, "Invalid output sizes of the last layer" ); \ -} - -#define ICV_CHECK_CNN_MODEL_PARAMS(params) \ -{ \ - if( !params ) \ - CV_ERROR( CV_StsNullPtr, "Null pointer" ); \ - \ - if( !ICV_IS_MAT_OF_TYPE(params->etalons, CV_32FC1) ) \ - CV_ERROR( CV_StsBadArg, " must be CV_32FC1 type" ); \ - if( params->etalons->rows != cnn_model->cls_labels->cols ) \ - CV_ERROR( CV_StsBadArg, "Invalid size" ); \ - \ - if( params->grad_estim_type != CV_CNN_GRAD_ESTIM_RANDOM && \ - params->grad_estim_type != CV_CNN_GRAD_ESTIM_BY_WORST_IMG ) \ - CV_ERROR( CV_StsBadArg, "Invalid " ); \ - \ - if( params->start_iter < 0 ) \ - CV_ERROR( CV_StsBadArg, "Parameter must be positive or zero" ); \ - \ - if( params->max_iter < 1 ) \ - params->max_iter = 1; \ -} - -/****************************************************************************************\ -* Classifier functions * -\****************************************************************************************/ -ML_IMPL CvStatModel* -cvTrainCNNClassifier( const CvMat* _train_data, int tflag, - const CvMat* _responses, - const CvStatModelParams* _params, - const CvMat*, const CvMat* _sample_idx, const CvMat*, const CvMat* ) -{ - CvCNNStatModel* cnn_model = 0; - const float** out_train_data = 0; - CvMat* responses = 0; - - CV_FUNCNAME("cvTrainCNNClassifier"); - __BEGIN__; - - int n_images; - int img_size; - CvCNNStatModelParams* params = (CvCNNStatModelParams*)_params; - - CV_CALL(cnn_model = (CvCNNStatModel*)cvCreateStatModel( - CV_STAT_MODEL_MAGIC_VAL|CV_CNN_MAGIC_VAL, sizeof(CvCNNStatModel), - icvCNNModelRelease, icvCNNModelPredict, icvCNNModelUpdate )); - - CV_CALL(cvPrepareTrainData( "cvTrainCNNClassifier", - _train_data, tflag, _responses, CV_VAR_CATEGORICAL, - 0, _sample_idx, false, &out_train_data, - &n_images, &img_size, &img_size, &responses, - &cnn_model->cls_labels, 0 )); - - ICV_CHECK_CNN_MODEL_PARAMS(params); - ICV_CHECK_CNN_NETWORK(params->network); - - cnn_model->network = params->network; - CV_CALL(cnn_model->etalons = (CvMat*)cvClone( params->etalons )); - - CV_CALL( icvTrainCNNetwork( cnn_model->network, out_train_data, responses, - cnn_model->etalons, params->grad_estim_type, params->max_iter, - params->start_iter )); - - __END__; - - if( cvGetErrStatus() < 0 && cnn_model ) - { - cnn_model->release( (CvStatModel**)&cnn_model ); - } - cvFree( &out_train_data ); - cvReleaseMat( &responses ); - - return (CvStatModel*)cnn_model; -} - -/****************************************************************************************/ -static void icvTrainCNNetwork( CvCNNetwork* network, - const float** images, - const CvMat* responses, - const CvMat* etalons, - int grad_estim_type, - int max_iter, - int start_iter ) -{ - CvMat** X = 0; - CvMat** dE_dX = 0; - const int n_layers = network->n_layers; - int k; - - CV_FUNCNAME("icvTrainCNNetwork"); - __BEGIN__; - - CvCNNLayer* first_layer = network->layers; - const int img_height = first_layer->input_height; - const int img_width = first_layer->input_width; - const int img_size = img_width*img_height; - const int n_images = responses->cols; - CvMat image = cvMat( 1, img_size, CV_32FC1 ); - CvCNNLayer* layer; - int n; - CvRNG rng = cvRNG(-1); - - CV_CALL(X = (CvMat**)cvAlloc( (n_layers+1)*sizeof(CvMat*) )); - CV_CALL(dE_dX = (CvMat**)cvAlloc( (n_layers+1)*sizeof(CvMat*) )); - memset( X, 0, (n_layers+1)*sizeof(CvMat*) ); - memset( dE_dX, 0, (n_layers+1)*sizeof(CvMat*) ); - - CV_CALL(X[0] = cvCreateMat( img_height*img_width,1,CV_32FC1 )); - CV_CALL(dE_dX[0] = cvCreateMat( 1, X[0]->rows, CV_32FC1 )); - for( k = 0, layer = first_layer; k < n_layers; k++, layer = layer->next_layer ) - { - CV_CALL(X[k+1] = cvCreateMat( layer->n_output_planes*layer->output_height* - layer->output_width, 1, CV_32FC1 )); - CV_CALL(dE_dX[k+1] = cvCreateMat( 1, X[k+1]->rows, CV_32FC1 )); - } - - for( n = 1; n <= max_iter; n++ ) - { - float loss, max_loss = 0; - int i; - int worst_img_idx = -1; - int* right_etal_idx = responses->data.i; - CvMat etalon; - - // Find the worst image (which produces the greatest loss) or use the random image - if( grad_estim_type == CV_CNN_GRAD_ESTIM_BY_WORST_IMG ) - { - for( i = 0; i < n_images; i++, right_etal_idx++ ) - { - image.data.fl = (float*)images[i]; - cvTranspose( &image, X[0] ); - - for( k = 0, layer = first_layer; k < n_layers; k++, layer = layer->next_layer ) - CV_CALL(layer->forward( layer, X[k], X[k+1] )); - - cvTranspose( X[n_layers], dE_dX[n_layers] ); - cvGetRow( etalons, &etalon, *right_etal_idx ); - loss = (float)cvNorm( dE_dX[n_layers], &etalon ); - if( loss > max_loss ) - { - max_loss = loss; - worst_img_idx = i; - } - } - } - else - worst_img_idx = cvRandInt(&rng) % n_images; - - // Train network on the worst image - // 1) Compute the network output on the - image.data.fl = (float*)images[worst_img_idx]; - CV_CALL(cvTranspose( &image, X[0] )); - - for( k = 0, layer = first_layer; k < n_layers - 1; k++, layer = layer->next_layer ) - CV_CALL(layer->forward( layer, X[k], X[k+1] )); - CV_CALL(layer->forward( layer, X[k], X[k+1] )); - - // 2) Compute the gradient - cvTranspose( X[n_layers], dE_dX[n_layers] ); - cvGetRow( etalons, &etalon, responses->data.i[worst_img_idx] ); - cvSub( dE_dX[n_layers], &etalon, dE_dX[n_layers] ); - - // 3) Update weights by the gradient descent - for( k = n_layers; k > 0; k--, layer = layer->prev_layer ) - CV_CALL(layer->backward( layer, n + start_iter, X[k-1], dE_dX[k], dE_dX[k-1] )); - } - - __END__; - - for( k = 0; k <= n_layers; k++ ) - { - cvReleaseMat( &X[k] ); - cvReleaseMat( &dE_dX[k] ); - } - cvFree( &X ); - cvFree( &dE_dX ); -} - -/****************************************************************************************/ -static float icvCNNModelPredict( const CvStatModel* model, - const CvMat* _image, - CvMat* probs ) -{ - CvMat** X = 0; - float* img_data = 0; - int n_layers = 0; - int best_etal_idx = -1; - int k; - - CV_FUNCNAME("icvCNNModelPredict"); - __BEGIN__; - - CvCNNStatModel* cnn_model = (CvCNNStatModel*)model; - CvCNNLayer* first_layer, *layer = 0; - int img_height, img_width, img_size; - int nclasses, i; - float loss, min_loss = FLT_MAX; - float* probs_data; - CvMat etalon, image; - - if( !CV_IS_CNN(model) ) - CV_ERROR( CV_StsBadArg, "Invalid model" ); - - nclasses = cnn_model->cls_labels->cols; - n_layers = cnn_model->network->n_layers; - first_layer = cnn_model->network->layers; - img_height = first_layer->input_height; - img_width = first_layer->input_width; - img_size = img_height*img_width; - - cvPreparePredictData( _image, img_size, 0, nclasses, probs, &img_data ); - - CV_CALL(X = (CvMat**)cvAlloc( (n_layers+1)*sizeof(CvMat*) )); - memset( X, 0, (n_layers+1)*sizeof(CvMat*) ); - - CV_CALL(X[0] = cvCreateMat( img_size,1,CV_32FC1 )); - for( k = 0, layer = first_layer; k < n_layers; k++, layer = layer->next_layer ) - { - CV_CALL(X[k+1] = cvCreateMat( layer->n_output_planes*layer->output_height* - layer->output_width, 1, CV_32FC1 )); - } - - image = cvMat( 1, img_size, CV_32FC1, img_data ); - cvTranspose( &image, X[0] ); - for( k = 0, layer = first_layer; k < n_layers; k++, layer = layer->next_layer ) - CV_CALL(layer->forward( layer, X[k], X[k+1] )); - - probs_data = probs ? probs->data.fl : 0; - etalon = cvMat( cnn_model->etalons->cols, 1, CV_32FC1, cnn_model->etalons->data.fl ); - for( i = 0; i < nclasses; i++, etalon.data.fl += cnn_model->etalons->cols ) - { - loss = (float)cvNorm( X[n_layers], &etalon ); - if( loss < min_loss ) - { - min_loss = loss; - best_etal_idx = i; - } - if( probs ) - *probs_data++ = -loss; - } - - if( probs ) - { - cvExp( probs, probs ); - CvScalar sum = cvSum( probs ); - cvConvertScale( probs, probs, 1./sum.val[0] ); - } - - __END__; - - for( k = 0; k <= n_layers; k++ ) - cvReleaseMat( &X[k] ); - cvFree( &X ); - if( img_data != _image->data.fl ) - cvFree( &img_data ); - - return ((float) ((CvCNNStatModel*)model)->cls_labels->data.i[best_etal_idx]); -} - -/****************************************************************************************/ -static void icvCNNModelUpdate( - CvStatModel* _cnn_model, const CvMat* _train_data, int tflag, - const CvMat* _responses, const CvStatModelParams* _params, - const CvMat*, const CvMat* _sample_idx, - const CvMat*, const CvMat* ) -{ - const float** out_train_data = 0; - CvMat* responses = 0; - CvMat* cls_labels = 0; - - CV_FUNCNAME("icvCNNModelUpdate"); - __BEGIN__; - - int n_images, img_size, i; - CvCNNStatModelParams* params = (CvCNNStatModelParams*)_params; - CvCNNStatModel* cnn_model = (CvCNNStatModel*)_cnn_model; - - if( !CV_IS_CNN(cnn_model) ) - CV_ERROR( CV_StsBadArg, "Invalid model" ); - - CV_CALL(cvPrepareTrainData( "cvTrainCNNClassifier", - _train_data, tflag, _responses, CV_VAR_CATEGORICAL, - 0, _sample_idx, false, &out_train_data, - &n_images, &img_size, &img_size, &responses, - &cls_labels, 0, 0 )); - - ICV_CHECK_CNN_MODEL_PARAMS(params); - - // Number of classes must be the same as when classifiers was created - if( !CV_ARE_SIZES_EQ(cls_labels, cnn_model->cls_labels) ) - CV_ERROR( CV_StsBadArg, "Number of classes must be left unchanged" ); - for( i = 0; i < cls_labels->cols; i++ ) - { - if( cls_labels->data.i[i] != cnn_model->cls_labels->data.i[i] ) - CV_ERROR( CV_StsBadArg, "Number of classes must be left unchanged" ); - } - - CV_CALL( icvTrainCNNetwork( cnn_model->network, out_train_data, responses, - cnn_model->etalons, params->grad_estim_type, params->max_iter, - params->start_iter )); - - __END__; - - cvFree( &out_train_data ); - cvReleaseMat( &responses ); -} - -/****************************************************************************************/ -static void icvCNNModelRelease( CvStatModel** cnn_model ) -{ - CV_FUNCNAME("icvCNNModelRelease"); - __BEGIN__; - - CvCNNStatModel* cnn; - if( !cnn_model ) - CV_ERROR( CV_StsNullPtr, "Null double pointer" ); - - cnn = *(CvCNNStatModel**)cnn_model; - - cvReleaseMat( &cnn->cls_labels ); - cvReleaseMat( &cnn->etalons ); - cnn->network->release( &cnn->network ); - - cvFree( &cnn ); - - __END__; - -} - -/****************************************************************************************\ -* Network functions * -\****************************************************************************************/ -ML_IMPL CvCNNetwork* cvCreateCNNetwork( CvCNNLayer* first_layer ) -{ - CvCNNetwork* network = 0; - - CV_FUNCNAME( "cvCreateCNNetwork" ); - __BEGIN__; - - if( !ICV_IS_CNN_LAYER(first_layer) ) - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - CV_CALL(network = (CvCNNetwork*)cvAlloc( sizeof(CvCNNetwork) )); - memset( network, 0, sizeof(CvCNNetwork) ); - - network->layers = first_layer; - network->n_layers = 1; - network->release = icvCNNetworkRelease; - network->add_layer = icvCNNetworkAddLayer; - - __END__; - - if( cvGetErrStatus() < 0 && network ) - cvFree( &network ); - - return network; - -} - -/****************************************************************************************/ -static void icvCNNetworkAddLayer( CvCNNetwork* network, CvCNNLayer* layer ) -{ - CV_FUNCNAME( "icvCNNetworkAddLayer" ); - __BEGIN__; - - CvCNNLayer* prev_layer; - - if( network == NULL ) - CV_ERROR( CV_StsNullPtr, "Null pointer" ); - - prev_layer = network->layers; - while( prev_layer->next_layer ) - prev_layer = prev_layer->next_layer; - - if( ICV_IS_CNN_FULLCONNECT_LAYER(layer) ) - { - if( layer->n_input_planes != prev_layer->output_width*prev_layer->output_height* - prev_layer->n_output_planes ) - CV_ERROR( CV_StsBadArg, "Unmatched size of the new layer" ); - if( layer->input_height != 1 || layer->output_height != 1 || - layer->input_width != 1 || layer->output_width != 1 ) - CV_ERROR( CV_StsBadArg, "Invalid size of the new layer" ); - } - else if( ICV_IS_CNN_CONVOLUTION_LAYER(layer) || ICV_IS_CNN_SUBSAMPLING_LAYER(layer) ) - { - if( prev_layer->n_output_planes != layer->n_input_planes || - prev_layer->output_height != layer->input_height || - prev_layer->output_width != layer->input_width ) - CV_ERROR( CV_StsBadArg, "Unmatched size of the new layer" ); - } - else - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - layer->prev_layer = prev_layer; - prev_layer->next_layer = layer; - network->n_layers++; - - __END__; -} - -/****************************************************************************************/ -static void icvCNNetworkRelease( CvCNNetwork** network_pptr ) -{ - CV_FUNCNAME( "icvReleaseCNNetwork" ); - __BEGIN__; - - CvCNNetwork* network = 0; - CvCNNLayer* layer = 0, *next_layer = 0; - int k; - - if( network_pptr == NULL ) - CV_ERROR( CV_StsBadArg, "Null double pointer" ); - if( *network_pptr == NULL ) - return; - - network = *network_pptr; - layer = network->layers; - if( layer == NULL ) - CV_ERROR( CV_StsBadArg, "CNN is empty (does not contain any layer)" ); - - // k is the number of the layer to be deleted - for( k = 0; k < network->n_layers && layer; k++ ) - { - next_layer = layer->next_layer; - layer->release( &layer ); - layer = next_layer; - } - - if( k != network->n_layers || layer) - CV_ERROR( CV_StsBadArg, "Invalid network" ); - - cvFree( &network ); - - __END__; -} - -/****************************************************************************************\ -* Layer functions * -\****************************************************************************************/ -static CvCNNLayer* icvCreateCNNLayer( int layer_type, int header_size, - int n_input_planes, int input_height, int input_width, - int n_output_planes, int output_height, int output_width, - float init_learn_rate, int learn_rate_decrease_type, - CvCNNLayerRelease release, CvCNNLayerForward forward, CvCNNLayerBackward backward ) -{ - CvCNNLayer* layer = 0; - - CV_FUNCNAME("icvCreateCNNLayer"); - __BEGIN__; - - CV_ASSERT( release && forward && backward ) - CV_ASSERT( header_size >= sizeof(CvCNNLayer) ) - - if( n_input_planes < 1 || n_output_planes < 1 || - input_height < 1 || input_width < 1 || - output_height < 1 || output_width < 1 || - input_height < output_height || - input_width < output_width ) - CV_ERROR( CV_StsBadArg, "Incorrect input or output parameters" ); - if( init_learn_rate < FLT_EPSILON ) - CV_ERROR( CV_StsBadArg, "Initial learning rate must be positive" ); - if( learn_rate_decrease_type != CV_CNN_LEARN_RATE_DECREASE_HYPERBOLICALLY && - learn_rate_decrease_type != CV_CNN_LEARN_RATE_DECREASE_SQRT_INV && - learn_rate_decrease_type != CV_CNN_LEARN_RATE_DECREASE_LOG_INV ) - CV_ERROR( CV_StsBadArg, "Invalid type of learning rate dynamics" ); - - CV_CALL(layer = (CvCNNLayer*)cvAlloc( header_size )); - memset( layer, 0, header_size ); - - layer->flags = ICV_CNN_LAYER|layer_type; - CV_ASSERT( ICV_IS_CNN_LAYER(layer) ) - - layer->n_input_planes = n_input_planes; - layer->input_height = input_height; - layer->input_width = input_width; - - layer->n_output_planes = n_output_planes; - layer->output_height = output_height; - layer->output_width = output_width; - - layer->init_learn_rate = init_learn_rate; - layer->learn_rate_decrease_type = learn_rate_decrease_type; - - layer->release = release; - layer->forward = forward; - layer->backward = backward; - - __END__; - - if( cvGetErrStatus() < 0 && layer) - cvFree( &layer ); - - return layer; -} - -/****************************************************************************************/ -ML_IMPL CvCNNLayer* cvCreateCNNConvolutionLayer( - int n_input_planes, int input_height, int input_width, - int n_output_planes, int K, - float init_learn_rate, int learn_rate_decrease_type, - CvMat* connect_mask, CvMat* weights ) - -{ - CvCNNConvolutionLayer* layer = 0; - - CV_FUNCNAME("cvCreateCNNConvolutionLayer"); - __BEGIN__; - - const int output_height = input_height - K + 1; - const int output_width = input_width - K + 1; - - if( K < 1 || init_learn_rate <= 0 ) - CV_ERROR( CV_StsBadArg, "Incorrect parameters" ); - - CV_CALL(layer = (CvCNNConvolutionLayer*)icvCreateCNNLayer( ICV_CNN_CONVOLUTION_LAYER, - sizeof(CvCNNConvolutionLayer), n_input_planes, input_height, input_width, - n_output_planes, output_height, output_width, - init_learn_rate, learn_rate_decrease_type, - icvCNNConvolutionRelease, icvCNNConvolutionForward, icvCNNConvolutionBackward )); - - layer->K = K; - CV_CALL(layer->weights = cvCreateMat( n_output_planes, K*K+1, CV_32FC1 )); - CV_CALL(layer->connect_mask = cvCreateMat( n_output_planes, n_input_planes, CV_8UC1)); - - if( weights ) - { - if( !ICV_IS_MAT_OF_TYPE( weights, CV_32FC1 ) ) - CV_ERROR( CV_StsBadSize, "Type of initial weights matrix must be CV_32FC1" ); - if( !CV_ARE_SIZES_EQ( weights, layer->weights ) ) - CV_ERROR( CV_StsBadSize, "Invalid size of initial weights matrix" ); - CV_CALL(cvCopy( weights, layer->weights )); - } - else - { - CvRNG rng = cvRNG( 0xFFFFFFFF ); - cvRandArr( &rng, layer->weights, CV_RAND_UNI, cvRealScalar(-1), cvRealScalar(1) ); - } - - if( connect_mask ) - { - if( !ICV_IS_MAT_OF_TYPE( connect_mask, CV_8UC1 ) ) - CV_ERROR( CV_StsBadSize, "Type of connection matrix must be CV_32FC1" ); - if( !CV_ARE_SIZES_EQ( connect_mask, layer->connect_mask ) ) - CV_ERROR( CV_StsBadSize, "Invalid size of connection matrix" ); - CV_CALL(cvCopy( connect_mask, layer->connect_mask )); - } - else - CV_CALL(cvSet( layer->connect_mask, cvRealScalar(1) )); - - __END__; - - if( cvGetErrStatus() < 0 && layer ) - { - cvReleaseMat( &layer->weights ); - cvReleaseMat( &layer->connect_mask ); - cvFree( &layer ); - } - - return (CvCNNLayer*)layer; -} - -/****************************************************************************************/ -ML_IMPL CvCNNLayer* cvCreateCNNSubSamplingLayer( - int n_input_planes, int input_height, int input_width, - int sub_samp_scale, float a, float s, - float init_learn_rate, int learn_rate_decrease_type, CvMat* weights ) - -{ - CvCNNSubSamplingLayer* layer = 0; - - CV_FUNCNAME("cvCreateCNNSubSamplingLayer"); - __BEGIN__; - - const int output_height = input_height/sub_samp_scale; - const int output_width = input_width/sub_samp_scale; - const int n_output_planes = n_input_planes; - - if( sub_samp_scale < 1 || a <= 0 || s <= 0) - CV_ERROR( CV_StsBadArg, "Incorrect parameters" ); - - CV_CALL(layer = (CvCNNSubSamplingLayer*)icvCreateCNNLayer( ICV_CNN_SUBSAMPLING_LAYER, - sizeof(CvCNNSubSamplingLayer), n_input_planes, input_height, input_width, - n_output_planes, output_height, output_width, - init_learn_rate, learn_rate_decrease_type, - icvCNNSubSamplingRelease, icvCNNSubSamplingForward, icvCNNSubSamplingBackward )); - - layer->sub_samp_scale = sub_samp_scale; - layer->a = a; - layer->s = s; - - CV_CALL(layer->sumX = - cvCreateMat( n_output_planes*output_width*output_height, 1, CV_32FC1 )); - CV_CALL(layer->exp2ssumWX = - cvCreateMat( n_output_planes*output_width*output_height, 1, CV_32FC1 )); - - cvZero( layer->sumX ); - cvZero( layer->exp2ssumWX ); - - CV_CALL(layer->weights = cvCreateMat( n_output_planes, 2, CV_32FC1 )); - if( weights ) - { - if( !ICV_IS_MAT_OF_TYPE( weights, CV_32FC1 ) ) - CV_ERROR( CV_StsBadSize, "Type of initial weights matrix must be CV_32FC1" ); - if( !CV_ARE_SIZES_EQ( weights, layer->weights ) ) - CV_ERROR( CV_StsBadSize, "Invalid size of initial weights matrix" ); - CV_CALL(cvCopy( weights, layer->weights )); - } - else - { - CvRNG rng = cvRNG( 0xFFFFFFFF ); - cvRandArr( &rng, layer->weights, CV_RAND_UNI, cvRealScalar(-1), cvRealScalar(1) ); - } - - __END__; - - if( cvGetErrStatus() < 0 && layer ) - { - cvReleaseMat( &layer->exp2ssumWX ); - cvFree( &layer ); - } - - return (CvCNNLayer*)layer; -} - -/****************************************************************************************/ -ML_IMPL CvCNNLayer* cvCreateCNNFullConnectLayer( - int n_inputs, int n_outputs, float a, float s, - float init_learn_rate, int learn_rate_decrease_type, CvMat* weights ) -{ - CvCNNFullConnectLayer* layer = 0; - - CV_FUNCNAME("cvCreateCNNFullConnectLayer"); - __BEGIN__; - - if( a <= 0 || s <= 0 || init_learn_rate <= 0) - CV_ERROR( CV_StsBadArg, "Incorrect parameters" ); - - CV_CALL(layer = (CvCNNFullConnectLayer*)icvCreateCNNLayer( ICV_CNN_FULLCONNECT_LAYER, - sizeof(CvCNNFullConnectLayer), n_inputs, 1, 1, n_outputs, 1, 1, - init_learn_rate, learn_rate_decrease_type, - icvCNNFullConnectRelease, icvCNNFullConnectForward, icvCNNFullConnectBackward )); - - layer->a = a; - layer->s = s; - - CV_CALL(layer->exp2ssumWX = cvCreateMat( n_outputs, 1, CV_32FC1 )); - cvZero( layer->exp2ssumWX ); - - CV_CALL(layer->weights = cvCreateMat( n_outputs, n_inputs+1, CV_32FC1 )); - if( weights ) - { - if( !ICV_IS_MAT_OF_TYPE( weights, CV_32FC1 ) ) - CV_ERROR( CV_StsBadSize, "Type of initial weights matrix must be CV_32FC1" ); - if( !CV_ARE_SIZES_EQ( weights, layer->weights ) ) - CV_ERROR( CV_StsBadSize, "Invalid size of initial weights matrix" ); - CV_CALL(cvCopy( weights, layer->weights )); - } - else - { - CvRNG rng = cvRNG( 0xFFFFFFFF ); - cvRandArr( &rng, layer->weights, CV_RAND_UNI, cvRealScalar(-1), cvRealScalar(1) ); - } - - __END__; - - if( cvGetErrStatus() < 0 && layer ) - { - cvReleaseMat( &layer->exp2ssumWX ); - cvReleaseMat( &layer->weights ); - cvFree( &layer ); - } - - return (CvCNNLayer*)layer; -} - - -/****************************************************************************************\ -* Layer FORWARD functions * -\****************************************************************************************/ -static void icvCNNConvolutionForward( CvCNNLayer* _layer, - const CvMat* X, - CvMat* Y ) -{ - CV_FUNCNAME("icvCNNConvolutionForward"); - - if( !ICV_IS_CNN_CONVOLUTION_LAYER(_layer) ) - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - {__BEGIN__; - - const CvCNNConvolutionLayer* layer = (CvCNNConvolutionLayer*) _layer; - - const int K = layer->K; - const int n_weights_for_Yplane = K*K + 1; - - const int nXplanes = layer->n_input_planes; - const int Xheight = layer->input_height; - const int Xwidth = layer->input_width ; - const int Xsize = Xwidth*Xheight; - - const int nYplanes = layer->n_output_planes; - const int Yheight = layer->output_height; - const int Ywidth = layer->output_width; - const int Ysize = Ywidth*Yheight; - - int xx, yy, ni, no, kx, ky; - float *Yplane = 0, *Xplane = 0, *w = 0; - uchar* connect_mask_data = 0; - - CV_ASSERT( X->rows == nXplanes*Xsize && X->cols == 1 ); - CV_ASSERT( Y->rows == nYplanes*Ysize && Y->cols == 1 ); - - cvSetZero( Y ); - - Yplane = Y->data.fl; - connect_mask_data = layer->connect_mask->data.ptr; - w = layer->weights->data.fl; - for( no = 0; no < nYplanes; no++, Yplane += Ysize, w += n_weights_for_Yplane ) - { - Xplane = X->data.fl; - for( ni = 0; ni < nXplanes; ni++, Xplane += Xsize, connect_mask_data++ ) - { - if( *connect_mask_data ) - { - float* Yelem = Yplane; - - // Xheight-K+1 == Yheight && Xwidth-K+1 == Ywidth - for( yy = 0; yy < Xheight-K+1; yy++ ) - { - for( xx = 0; xx < Xwidth-K+1; xx++, Yelem++ ) - { - float* templ = Xplane+yy*Xwidth+xx; - float WX = 0; - for( ky = 0; ky < K; ky++, templ += Xwidth-K ) - { - for( kx = 0; kx < K; kx++, templ++ ) - { - WX += *templ*w[ky*K+kx]; - } - } - *Yelem += WX + w[K*K]; - } - } - } - } - } - }__END__; -} - -/****************************************************************************************/ -static void icvCNNSubSamplingForward( CvCNNLayer* _layer, - const CvMat* X, - CvMat* Y ) -{ - CV_FUNCNAME("icvCNNSubSamplingForward"); - - if( !ICV_IS_CNN_SUBSAMPLING_LAYER(_layer) ) - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - {__BEGIN__; - - const CvCNNSubSamplingLayer* layer = (CvCNNSubSamplingLayer*) _layer; - - const int sub_sampl_scale = layer->sub_samp_scale; - const int nplanes = layer->n_input_planes; - - const int Xheight = layer->input_height; - const int Xwidth = layer->input_width ; - const int Xsize = Xwidth*Xheight; - - const int Yheight = layer->output_height; - const int Ywidth = layer->output_width; - const int Ysize = Ywidth*Yheight; - - int xx, yy, ni, kx, ky; - float* sumX_data = 0, *w = 0; - CvMat sumX_sub_col, exp2ssumWX_sub_col; - - CV_ASSERT(X->rows == nplanes*Xsize && X->cols == 1); - CV_ASSERT(layer->exp2ssumWX->cols == 1 && layer->exp2ssumWX->rows == nplanes*Ysize); - - // update inner variable layer->exp2ssumWX, which will be used in back-progation - cvZero( layer->sumX ); - cvZero( layer->exp2ssumWX ); - - for( ky = 0; ky < sub_sampl_scale; ky++ ) - for( kx = 0; kx < sub_sampl_scale; kx++ ) - { - float* Xplane = X->data.fl; - sumX_data = layer->sumX->data.fl; - for( ni = 0; ni < nplanes; ni++, Xplane += Xsize ) - { - for( yy = 0; yy < Yheight; yy++ ) - for( xx = 0; xx < Ywidth; xx++, sumX_data++ ) - *sumX_data += Xplane[((yy+ky)*Xwidth+(xx+kx))]; - } - } - - w = layer->weights->data.fl; - cvGetRows( layer->sumX, &sumX_sub_col, 0, Ysize ); - cvGetRows( layer->exp2ssumWX, &exp2ssumWX_sub_col, 0, Ysize ); - for( ni = 0; ni < nplanes; ni++, w += 2 ) - { - CV_CALL(cvConvertScale( &sumX_sub_col, &exp2ssumWX_sub_col, w[0], w[1] )); - sumX_sub_col.data.fl += Ysize; - exp2ssumWX_sub_col.data.fl += Ysize; - } - - CV_CALL(cvScale( layer->exp2ssumWX, layer->exp2ssumWX, 2.0*layer->s )); - CV_CALL(cvExp( layer->exp2ssumWX, layer->exp2ssumWX )); - CV_CALL(cvMinS( layer->exp2ssumWX, FLT_MAX, layer->exp2ssumWX )); -//#ifdef _DEBUG - { - float* exp2ssumWX_data = layer->exp2ssumWX->data.fl; - for( ni = 0; ni < layer->exp2ssumWX->rows; ni++, exp2ssumWX_data++ ) - { - if( *exp2ssumWX_data == FLT_MAX ) - cvSetErrStatus( 1 ); - } - } -//#endif - // compute the output variable Y == ( a - 2a/(layer->exp2ssumWX + 1)) - CV_CALL(cvAddS( layer->exp2ssumWX, cvRealScalar(1), Y )); - CV_CALL(cvDiv( 0, Y, Y, -2.0*layer->a )); - CV_CALL(cvAddS( Y, cvRealScalar(layer->a), Y )); - - }__END__; -} - -/****************************************************************************************/ -static void icvCNNFullConnectForward( CvCNNLayer* _layer, const CvMat* X, CvMat* Y ) -{ - CV_FUNCNAME("icvCNNFullConnectForward"); - - if( !ICV_IS_CNN_FULLCONNECT_LAYER(_layer) ) - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - {__BEGIN__; - - const CvCNNFullConnectLayer* layer = (CvCNNFullConnectLayer*)_layer; - CvMat* weights = layer->weights; - CvMat sub_weights, bias; - - CV_ASSERT(X->cols == 1 && X->rows == layer->n_input_planes); - CV_ASSERT(Y->cols == 1 && Y->rows == layer->n_output_planes); - - CV_CALL(cvGetSubRect( weights, &sub_weights, - cvRect(0, 0, weights->cols-1, weights->rows ))); - CV_CALL(cvGetCol( weights, &bias, weights->cols-1)); - - // update inner variable layer->exp2ssumWX, which will be used in Back-Propagation - CV_CALL(cvGEMM( &sub_weights, X, 2*layer->s, &bias, 2*layer->s, layer->exp2ssumWX )); - CV_CALL(cvExp( layer->exp2ssumWX, layer->exp2ssumWX )); - CV_CALL(cvMinS( layer->exp2ssumWX, FLT_MAX, layer->exp2ssumWX )); -//#ifdef _DEBUG - { - float* exp2ssumWX_data = layer->exp2ssumWX->data.fl; - int i; - for( i = 0; i < layer->exp2ssumWX->rows; i++, exp2ssumWX_data++ ) - { - if( *exp2ssumWX_data == FLT_MAX ) - cvSetErrStatus( 1 ); - } - } -//#endif - // compute the output variable Y == ( a - 2a/(layer->exp2ssumWX + 1)) - CV_CALL(cvAddS( layer->exp2ssumWX, cvRealScalar(1), Y )); - CV_CALL(cvDiv( 0, Y, Y, -2.0*layer->a )); - CV_CALL(cvAddS( Y, cvRealScalar(layer->a), Y )); - - }__END__; -} - -/****************************************************************************************\ -* Layer BACKWARD functions * -\****************************************************************************************/ - -/* , should be row-vectors. - Function computes partial derivatives - of the loss function with respect to the planes components - of the previous layer (X). - It is a basic function for back propagation method. - Input parameter is the partial derivative of the - loss function with respect to the planes components - of the current layer. */ -static void icvCNNConvolutionBackward( - CvCNNLayer* _layer, int t, const CvMat* X, const CvMat* dE_dY, CvMat* dE_dX ) -{ - CvMat* dY_dX = 0; - CvMat* dY_dW = 0; - CvMat* dE_dW = 0; - - CV_FUNCNAME("icvCNNConvolutionBackward"); - - if( !ICV_IS_CNN_CONVOLUTION_LAYER(_layer) ) - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - {__BEGIN__; - - const CvCNNConvolutionLayer* layer = (CvCNNConvolutionLayer*) _layer; - - const int K = layer->K; - - const int n_X_planes = layer->n_input_planes; - const int X_plane_height = layer->input_height; - const int X_plane_width = layer->input_width; - const int X_plane_size = X_plane_height*X_plane_width; - - const int n_Y_planes = layer->n_output_planes; - const int Y_plane_height = layer->output_height; - const int Y_plane_width = layer->output_width; - const int Y_plane_size = Y_plane_height*Y_plane_width; - - int no, ni, yy, xx, ky, kx; - int X_idx = 0, Y_idx = 0; - - float *X_plane = 0, *w = 0; - - CvMat* weights = layer->weights; - - CV_ASSERT( t >= 1 ); - CV_ASSERT( n_Y_planes == weights->rows ); - - dY_dX = cvCreateMat( n_Y_planes*Y_plane_size, X->rows, CV_32FC1 ); - dY_dW = cvCreateMat( dY_dX->rows, weights->cols*weights->rows, CV_32FC1 ); - dE_dW = cvCreateMat( 1, dY_dW->cols, CV_32FC1 ); - - cvZero( dY_dX ); - cvZero( dY_dW ); - - // compute gradient of the loss function with respect to X and W - for( no = 0; no < n_Y_planes; no++, Y_idx += Y_plane_size ) - { - w = weights->data.fl + no*(K*K+1); - X_idx = 0; - X_plane = X->data.fl; - for( ni = 0; ni < n_X_planes; ni++, X_plane += X_plane_size ) - { - if( layer->connect_mask->data.ptr[ni*n_Y_planes+no] ) - { - for( yy = 0; yy < X_plane_height - K + 1; yy++ ) - { - for( xx = 0; xx < X_plane_width - K + 1; xx++ ) - { - for( ky = 0; ky < K; ky++ ) - { - for( kx = 0; kx < K; kx++ ) - { - CV_MAT_ELEM(*dY_dX, float, Y_idx+yy*Y_plane_width+xx, - X_idx+(yy+ky)*X_plane_width+(xx+kx)) = w[ky*K+kx]; - - // dY_dWi, i=1,...,K*K - CV_MAT_ELEM(*dY_dW, float, Y_idx+yy*Y_plane_width+xx, - no*(K*K+1)+ky*K+kx) += - X_plane[(yy+ky)*X_plane_width+(xx+kx)]; - } - } - // dY_dW(K*K+1)==1 because W(K*K+1) is bias - CV_MAT_ELEM(*dY_dW, float, Y_idx+yy*Y_plane_width+xx, - no*(K*K+1)+K*K) += 1; - } - } - } - X_idx += X_plane_size; - } - } - - CV_CALL(cvMatMul( dE_dY, dY_dW, dE_dW )); - CV_CALL(cvMatMul( dE_dY, dY_dX, dE_dX )); - - // update weights - { - CvMat dE_dW_mat; - float eta; - if( layer->learn_rate_decrease_type == CV_CNN_LEARN_RATE_DECREASE_LOG_INV ) - eta = -layer->init_learn_rate/logf(1+(float)t); - else if( layer->learn_rate_decrease_type == CV_CNN_LEARN_RATE_DECREASE_SQRT_INV ) - eta = -layer->init_learn_rate/sqrtf((float)t); - else - eta = -layer->init_learn_rate/(float)t; - cvReshape( dE_dW, &dE_dW_mat, 0, weights->rows ); - cvScaleAdd( &dE_dW_mat, cvRealScalar(eta), weights, weights ); - } - - }__END__; - - cvReleaseMat( &dY_dX ); - cvReleaseMat( &dY_dW ); - cvReleaseMat( &dE_dW ); -} - -/****************************************************************************************/ -static void icvCNNSubSamplingBackward( - CvCNNLayer* _layer, int t, const CvMat*, const CvMat* dE_dY, CvMat* dE_dX ) -{ - // derivative of activation function - CvMat* dY_dX_elems = 0; // elements of matrix dY_dX - CvMat* dY_dW_elems = 0; // elements of matrix dY_dW - CvMat* dE_dW = 0; - - CV_FUNCNAME("icvCNNSubSamplingBackward"); - - if( !ICV_IS_CNN_SUBSAMPLING_LAYER(_layer) ) - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - {__BEGIN__; - - const CvCNNSubSamplingLayer* layer = (CvCNNSubSamplingLayer*) _layer; - - const int Xwidth = layer->input_width; - const int Ywidth = layer->output_width; - const int Yheight = layer->output_height; - const int Ysize = Ywidth * Yheight; - const int scale = layer->sub_samp_scale; - const int k_max = layer->n_output_planes * Yheight; - - int k, i, j, m; - float* dY_dX_current_elem = 0, *dE_dX_start = 0, *dE_dW_data = 0, *w = 0; - CvMat dy_dw0, dy_dw1; - CvMat activ_func_der, sumX_row; - CvMat dE_dY_sub_row, dY_dX_sub_col, dy_dw0_sub_row, dy_dw1_sub_row; - - CV_CALL(dY_dX_elems = cvCreateMat( layer->sumX->rows, 1, CV_32FC1 )); - CV_CALL(dY_dW_elems = cvCreateMat( 2, layer->sumX->rows, CV_32FC1 )); - CV_CALL(dE_dW = cvCreateMat( 1, 2*layer->n_output_planes, CV_32FC1 )); - - // compute derivative of activ.func. - // == = 4as*(layer->exp2ssumWX)/(layer->exp2ssumWX + 1)^2 - CV_CALL(cvAddS( layer->exp2ssumWX, cvRealScalar(1), dY_dX_elems )); - CV_CALL(cvPow( dY_dX_elems, dY_dX_elems, -2.0 )); - CV_CALL(cvMul( dY_dX_elems, layer->exp2ssumWX, dY_dX_elems, 4.0*layer->a*layer->s )); - - // compute - // a) compute - cvReshape( dY_dX_elems, &activ_func_der, 0, 1 ); - cvGetRow( dY_dW_elems, &dy_dw0, 0 ); - cvGetRow( dY_dW_elems, &dy_dw1, 1 ); - CV_CALL(cvCopy( &activ_func_der, &dy_dw0 )); - CV_CALL(cvCopy( &activ_func_der, &dy_dw1 )); - - cvReshape( layer->sumX, &sumX_row, 0, 1 ); - cvMul( &dy_dw0, &sumX_row, &dy_dw0 ); - - // b) compute = * - cvGetCols( dE_dY, &dE_dY_sub_row, 0, Ysize ); - cvGetCols( &dy_dw0, &dy_dw0_sub_row, 0, Ysize ); - cvGetCols( &dy_dw1, &dy_dw1_sub_row, 0, Ysize ); - dE_dW_data = dE_dW->data.fl; - for( i = 0; i < layer->n_output_planes; i++ ) - { - *dE_dW_data++ = (float)cvDotProduct( &dE_dY_sub_row, &dy_dw0_sub_row ); - *dE_dW_data++ = (float)cvDotProduct( &dE_dY_sub_row, &dy_dw1_sub_row ); - - dE_dY_sub_row.data.fl += Ysize; - dy_dw0_sub_row.data.fl += Ysize; - dy_dw1_sub_row.data.fl += Ysize; - } - - // compute = layer->weights* - w = layer->weights->data.fl; - cvGetRows( dY_dX_elems, &dY_dX_sub_col, 0, Ysize ); - for( i = 0; i < layer->n_input_planes; i++, w++, dY_dX_sub_col.data.fl += Ysize ) - CV_CALL(cvConvertScale( &dY_dX_sub_col, &dY_dX_sub_col, (float)*w )); - - // compute - CV_CALL(cvReshape( dY_dX_elems, dY_dX_elems, 0, 1 )); - CV_CALL(cvMul( dY_dX_elems, dE_dY, dY_dX_elems )); - - dY_dX_current_elem = dY_dX_elems->data.fl; - dE_dX_start = dE_dX->data.fl; - for( k = 0; k < k_max; k++ ) - { - for( i = 0; i < Ywidth; i++, dY_dX_current_elem++ ) - { - float* dE_dX_current_elem = dE_dX_start; - for( j = 0; j < scale; j++, dE_dX_current_elem += Xwidth - scale ) - { - for( m = 0; m < scale; m++, dE_dX_current_elem++ ) - *dE_dX_current_elem = *dY_dX_current_elem; - } - dE_dX_start += scale; - } - dE_dX_start += Xwidth * (scale - 1); - } - - // update weights - { - CvMat dE_dW_mat, *weights = layer->weights; - float eta; - if( layer->learn_rate_decrease_type == CV_CNN_LEARN_RATE_DECREASE_LOG_INV ) - eta = -layer->init_learn_rate/logf(1+(float)t); - else if( layer->learn_rate_decrease_type == CV_CNN_LEARN_RATE_DECREASE_SQRT_INV ) - eta = -layer->init_learn_rate/sqrtf((float)t); - else - eta = -layer->init_learn_rate/(float)t; - cvReshape( dE_dW, &dE_dW_mat, 0, weights->rows ); - cvScaleAdd( &dE_dW_mat, cvRealScalar(eta), weights, weights ); - } - - }__END__; - - cvReleaseMat( &dY_dX_elems ); - cvReleaseMat( &dY_dW_elems ); - cvReleaseMat( &dE_dW ); -} - -/****************************************************************************************/ -/* , should be row-vectors. - Function computes partial derivatives , - of the loss function with respect to the planes components - of the previous layer (X) and the weights of the current layer (W) - and updates weights od the current layer by using . - It is a basic function for back propagation method. - Input parameter is the partial derivative of the - loss function with respect to the planes components - of the current layer. */ -static void icvCNNFullConnectBackward( CvCNNLayer* _layer, - int t, - const CvMat* X, - const CvMat* dE_dY, - CvMat* dE_dX ) -{ - CvMat* dE_dY_activ_func_der = 0; - CvMat* dE_dW = 0; - - CV_FUNCNAME( "icvCNNFullConnectBackward" ); - - if( !ICV_IS_CNN_FULLCONNECT_LAYER(_layer) ) - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - {__BEGIN__; - - const CvCNNFullConnectLayer* layer = (CvCNNFullConnectLayer*)_layer; - const int n_outputs = layer->n_output_planes; - const int n_inputs = layer->n_input_planes; - - int i; - float* dE_dY_activ_func_der_data; - CvMat* weights = layer->weights; - CvMat sub_weights, Xtemplate, Xrow, exp2ssumWXrow; - - CV_ASSERT(X->cols == 1 && X->rows == n_inputs); - CV_ASSERT(dE_dY->rows == 1 && dE_dY->cols == n_outputs ); - CV_ASSERT(dE_dX->rows == 1 && dE_dX->cols == n_inputs ); - - // we violate the convetion about vector's orientation because - // here is more convenient to make this parameter a row-vector - CV_CALL(dE_dY_activ_func_der = cvCreateMat( 1, n_outputs, CV_32FC1 )); - CV_CALL(dE_dW = cvCreateMat( 1, weights->rows*weights->cols, CV_32FC1 )); - - // 1) compute gradients dE_dX and dE_dW - // activ_func_der == 4as*(layer->exp2ssumWX)/(layer->exp2ssumWX + 1)^2 - CV_CALL(cvReshape( layer->exp2ssumWX, &exp2ssumWXrow, 0, layer->exp2ssumWX->cols )); - CV_CALL(cvAddS( &exp2ssumWXrow, cvRealScalar(1), dE_dY_activ_func_der )); - CV_CALL(cvPow( dE_dY_activ_func_der, dE_dY_activ_func_der, -2.0 )); - CV_CALL(cvMul( dE_dY_activ_func_der, &exp2ssumWXrow, dE_dY_activ_func_der, - 4.0*layer->a*layer->s )); - CV_CALL(cvMul( dE_dY, dE_dY_activ_func_der, dE_dY_activ_func_der )); - - // sub_weights = d(W*(X|1))/dX - CV_CALL(cvGetSubRect( weights, &sub_weights, - cvRect(0, 0, weights->cols-1, weights->rows) )); - CV_CALL(cvMatMul( dE_dY_activ_func_der, &sub_weights, dE_dX )); - - cvReshape( X, &Xrow, 0, 1 ); - dE_dY_activ_func_der_data = dE_dY_activ_func_der->data.fl; - Xtemplate = cvMat( 1, n_inputs, CV_32FC1, dE_dW->data.fl ); - for( i = 0; i < n_outputs; i++, Xtemplate.data.fl += n_inputs + 1 ) - { - CV_CALL(cvConvertScale( &Xrow, &Xtemplate, *dE_dY_activ_func_der_data )); - Xtemplate.data.fl[n_inputs] = *dE_dY_activ_func_der_data++; - } - - // 2) update weights - { - CvMat dE_dW_mat; - float eta; - if( layer->learn_rate_decrease_type == CV_CNN_LEARN_RATE_DECREASE_LOG_INV ) - eta = -layer->init_learn_rate/logf(1+(float)t); - else if( layer->learn_rate_decrease_type == CV_CNN_LEARN_RATE_DECREASE_SQRT_INV ) - eta = -layer->init_learn_rate/sqrtf((float)t); - else - eta = -layer->init_learn_rate/(float)t; - cvReshape( dE_dW, &dE_dW_mat, 0, n_outputs ); - cvScaleAdd( &dE_dW_mat, cvRealScalar(eta), weights, weights ); - } - - }__END__; - - cvReleaseMat( &dE_dY_activ_func_der ); - cvReleaseMat( &dE_dW ); -} - -/****************************************************************************************\ -* Layer RELEASE functions * -\****************************************************************************************/ -static void icvCNNConvolutionRelease( CvCNNLayer** p_layer ) -{ - CV_FUNCNAME("icvCNNConvolutionRelease"); - __BEGIN__; - - CvCNNConvolutionLayer* layer = 0; - - if( !p_layer ) - CV_ERROR( CV_StsNullPtr, "Null double pointer" ); - - layer = *(CvCNNConvolutionLayer**)p_layer; - - if( !layer ) - return; - if( !ICV_IS_CNN_CONVOLUTION_LAYER(layer) ) - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - cvReleaseMat( &layer->weights ); - cvReleaseMat( &layer->connect_mask ); - cvFree( p_layer ); - - __END__; -} - -/****************************************************************************************/ -static void icvCNNSubSamplingRelease( CvCNNLayer** p_layer ) -{ - CV_FUNCNAME("icvCNNSubSamplingRelease"); - __BEGIN__; - - CvCNNSubSamplingLayer* layer = 0; - - if( !p_layer ) - CV_ERROR( CV_StsNullPtr, "Null double pointer" ); - - layer = *(CvCNNSubSamplingLayer**)p_layer; - - if( !layer ) - return; - if( !ICV_IS_CNN_SUBSAMPLING_LAYER(layer) ) - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - cvReleaseMat( &layer->exp2ssumWX ); - cvReleaseMat( &layer->weights ); - cvFree( p_layer ); - - __END__; -} - -/****************************************************************************************/ -static void icvCNNFullConnectRelease( CvCNNLayer** p_layer ) -{ - CV_FUNCNAME("icvCNNFullConnectRelease"); - __BEGIN__; - - CvCNNFullConnectLayer* layer = 0; - - if( !p_layer ) - CV_ERROR( CV_StsNullPtr, "Null double pointer" ); - - layer = *(CvCNNFullConnectLayer**)p_layer; - - if( !layer ) - return; - if( !ICV_IS_CNN_FULLCONNECT_LAYER(layer) ) - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - cvReleaseMat( &layer->exp2ssumWX ); - cvReleaseMat( &layer->weights ); - cvFree( p_layer ); - - __END__; -} - -/****************************************************************************************\ -* Read/Write CNN classifier * -\****************************************************************************************/ -static int icvIsCNNModel( const void* ptr ) -{ - return CV_IS_CNN(ptr); -} - -/****************************************************************************************/ -static void icvReleaseCNNModel( void** ptr ) -{ - CV_FUNCNAME("icvReleaseCNNModel"); - __BEGIN__; - - if( !ptr ) - CV_ERROR( CV_StsNullPtr, "NULL double pointer" ); - CV_ASSERT(CV_IS_CNN(*ptr)); - - icvCNNModelRelease( (CvStatModel**)ptr ); - - __END__; -} - -/****************************************************************************************/ -static CvCNNLayer* icvReadCNNLayer( CvFileStorage* fs, CvFileNode* node ) -{ - CvCNNLayer* layer = 0; - CvMat* weights = 0; - CvMat* connect_mask = 0; - - CV_FUNCNAME("icvReadCNNLayer"); - __BEGIN__; - - int n_input_planes, input_height, input_width; - int n_output_planes, output_height, output_width; - int learn_type, layer_type; - float init_learn_rate; - - CV_CALL(n_input_planes = cvReadIntByName( fs, node, "n_input_planes", -1 )); - CV_CALL(input_height = cvReadIntByName( fs, node, "input_height", -1 )); - CV_CALL(input_width = cvReadIntByName( fs, node, "input_width", -1 )); - CV_CALL(n_output_planes = cvReadIntByName( fs, node, "n_output_planes", -1 )); - CV_CALL(output_height = cvReadIntByName( fs, node, "output_height", -1 )); - CV_CALL(output_width = cvReadIntByName( fs, node, "output_width", -1 )); - CV_CALL(layer_type = cvReadIntByName( fs, node, "layer_type", -1 )); - - CV_CALL(init_learn_rate = (float)cvReadRealByName( fs, node, "init_learn_rate", -1 )); - CV_CALL(learn_type = cvReadIntByName( fs, node, "learn_rate_decrease_type", -1 )); - CV_CALL(weights = (CvMat*)cvReadByName( fs, node, "weights" )); - - if( n_input_planes < 0 || input_height < 0 || input_width < 0 || - n_output_planes < 0 || output_height < 0 || output_width < 0 || - init_learn_rate < 0 || learn_type < 0 || layer_type < 0 || !weights ) - CV_ERROR( CV_StsParseError, "" ); - - if( layer_type == ICV_CNN_CONVOLUTION_LAYER ) - { - const int K = input_height - output_height + 1; - if( K <= 0 || K != input_width - output_width + 1 ) - CV_ERROR( CV_StsBadArg, "Invalid " ); - - CV_CALL(connect_mask = (CvMat*)cvReadByName( fs, node, "connect_mask" )); - if( !connect_mask ) - CV_ERROR( CV_StsParseError, "Missing " ); - - CV_CALL(layer = cvCreateCNNConvolutionLayer( - n_input_planes, input_height, input_width, n_output_planes, K, - init_learn_rate, learn_type, connect_mask, weights )); - } - else if( layer_type == ICV_CNN_SUBSAMPLING_LAYER ) - { - float a, s; - const int sub_samp_scale = input_height/output_height; - - if( sub_samp_scale <= 0 || sub_samp_scale != input_width/output_width ) - CV_ERROR( CV_StsBadArg, "Invalid " ); - - CV_CALL(a = (float)cvReadRealByName( fs, node, "a", -1 )); - CV_CALL(s = (float)cvReadRealByName( fs, node, "s", -1 )); - if( a < 0 || s < 0 ) - CV_ERROR( CV_StsParseError, "Missing or " ); - - CV_CALL(layer = cvCreateCNNSubSamplingLayer( - n_input_planes, input_height, input_width, sub_samp_scale, - a, s, init_learn_rate, learn_type, weights )); - } - else if( layer_type == ICV_CNN_FULLCONNECT_LAYER ) - { - float a, s; - CV_CALL(a = (float)cvReadRealByName( fs, node, "a", -1 )); - CV_CALL(s = (float)cvReadRealByName( fs, node, "s", -1 )); - if( a < 0 || s < 0 ) - CV_ERROR( CV_StsParseError, "" ); - if( input_height != 1 || input_width != 1 || - output_height != 1 || output_width != 1 ) - CV_ERROR( CV_StsBadArg, "" ); - - CV_CALL(layer = cvCreateCNNFullConnectLayer( n_input_planes, n_output_planes, - a, s, init_learn_rate, learn_type, weights )); - } - else - CV_ERROR( CV_StsBadArg, "Invalid " ); - - __END__; - - if( cvGetErrStatus() < 0 && layer ) - layer->release( &layer ); - - cvReleaseMat( &weights ); - cvReleaseMat( &connect_mask ); - - return layer; -} - -/****************************************************************************************/ -static void icvWriteCNNLayer( CvFileStorage* fs, CvCNNLayer* layer ) -{ - CV_FUNCNAME ("icvWriteCNNLayer"); - __BEGIN__; - - if( !ICV_IS_CNN_LAYER(layer) ) - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - CV_CALL( cvStartWriteStruct( fs, NULL, CV_NODE_MAP, "opencv-ml-cnn-layer" )); - - CV_CALL(cvWriteInt( fs, "n_input_planes", layer->n_input_planes )); - CV_CALL(cvWriteInt( fs, "input_height", layer->input_height )); - CV_CALL(cvWriteInt( fs, "input_width", layer->input_width )); - CV_CALL(cvWriteInt( fs, "n_output_planes", layer->n_output_planes )); - CV_CALL(cvWriteInt( fs, "output_height", layer->output_height )); - CV_CALL(cvWriteInt( fs, "output_width", layer->output_width )); - CV_CALL(cvWriteInt( fs, "learn_rate_decrease_type", layer->learn_rate_decrease_type)); - CV_CALL(cvWriteReal( fs, "init_learn_rate", layer->init_learn_rate )); - CV_CALL(cvWrite( fs, "weights", layer->weights )); - - if( ICV_IS_CNN_CONVOLUTION_LAYER( layer )) - { - CvCNNConvolutionLayer* l = (CvCNNConvolutionLayer*)layer; - CV_CALL(cvWriteInt( fs, "layer_type", ICV_CNN_CONVOLUTION_LAYER )); - CV_CALL(cvWrite( fs, "connect_mask", l->connect_mask )); - } - else if( ICV_IS_CNN_SUBSAMPLING_LAYER( layer ) ) - { - CvCNNSubSamplingLayer* l = (CvCNNSubSamplingLayer*)layer; - CV_CALL(cvWriteInt( fs, "layer_type", ICV_CNN_SUBSAMPLING_LAYER )); - CV_CALL(cvWriteReal( fs, "a", l->a )); - CV_CALL(cvWriteReal( fs, "s", l->s )); - } - else if( ICV_IS_CNN_FULLCONNECT_LAYER( layer ) ) - { - CvCNNFullConnectLayer* l = (CvCNNFullConnectLayer*)layer; - CV_CALL(cvWriteInt( fs, "layer_type", ICV_CNN_FULLCONNECT_LAYER )); - CV_CALL(cvWriteReal( fs, "a", l->a )); - CV_CALL(cvWriteReal( fs, "s", l->s )); - } - else - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - CV_CALL( cvEndWriteStruct( fs )); //"opencv-ml-cnn-layer" - - __END__; -} - -/****************************************************************************************/ -static void* icvReadCNNModel( CvFileStorage* fs, CvFileNode* root_node ) -{ - CvCNNStatModel* cnn = 0; - CvCNNLayer* layer = 0; - - CV_FUNCNAME("icvReadCNNModel"); - __BEGIN__; - - CvFileNode* node; - CvSeq* seq; - CvSeqReader reader; - int i; - - CV_CALL(cnn = (CvCNNStatModel*)cvCreateStatModel( - CV_STAT_MODEL_MAGIC_VAL|CV_CNN_MAGIC_VAL, sizeof(CvCNNStatModel), - icvCNNModelRelease, icvCNNModelPredict, icvCNNModelUpdate )); - - CV_CALL(cnn->etalons = (CvMat*)cvReadByName( fs, root_node, "etalons" )); - CV_CALL(cnn->cls_labels = (CvMat*)cvReadByName( fs, root_node, "cls_labels" )); - - if( !cnn->etalons || !cnn->cls_labels ) - CV_ERROR( CV_StsParseError, "No or in CNN model" ); - - CV_CALL( node = cvGetFileNodeByName( fs, root_node, "network" )); - seq = node->data.seq; - if( !CV_NODE_IS_SEQ(node->tag) ) - CV_ERROR( CV_StsBadArg, "" ); - - CV_CALL( cvStartReadSeq( seq, &reader, 0 )); - CV_CALL(layer = icvReadCNNLayer( fs, (CvFileNode*)reader.ptr )); - CV_CALL(cnn->network = cvCreateCNNetwork( layer )); - - for( i = 1; i < seq->total; i++ ) - { - CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); - CV_CALL(layer = icvReadCNNLayer( fs, (CvFileNode*)reader.ptr )); - CV_CALL(cnn->network->add_layer( cnn->network, layer )); - } - - __END__; - - if( cvGetErrStatus() < 0 ) - { - if( cnn ) cnn->release( (CvStatModel**)&cnn ); - if( layer ) layer->release( &layer ); - } - return (void*)cnn; -} - -/****************************************************************************************/ -static void -icvWriteCNNModel( CvFileStorage* fs, const char* name, - const void* struct_ptr, CvAttrList ) - -{ - CV_FUNCNAME ("icvWriteCNNModel"); - __BEGIN__; - - CvCNNStatModel* cnn = (CvCNNStatModel*)struct_ptr; - int n_layers, i; - CvCNNLayer* layer; - - if( !CV_IS_CNN(cnn) ) - CV_ERROR( CV_StsBadArg, "Invalid pointer" ); - - n_layers = cnn->network->n_layers; - - CV_CALL( cvStartWriteStruct( fs, name, CV_NODE_MAP, CV_TYPE_NAME_ML_CNN )); - - CV_CALL(cvWrite( fs, "etalons", cnn->etalons )); - CV_CALL(cvWrite( fs, "cls_labels", cnn->cls_labels )); - - CV_CALL( cvStartWriteStruct( fs, "network", CV_NODE_SEQ )); - - layer = cnn->network->layers; - for( i = 0; i < n_layers && layer; i++, layer = layer->next_layer ) - CV_CALL(icvWriteCNNLayer( fs, layer )); - if( i < n_layers || layer ) - CV_ERROR( CV_StsBadArg, "Invalid network" ); - - CV_CALL( cvEndWriteStruct( fs )); //"network" - CV_CALL( cvEndWriteStruct( fs )); //"opencv-ml-cnn" - - __END__; -} - -static int icvRegisterCNNStatModelType() -{ - CvTypeInfo info; - - info.header_size = sizeof( info ); - info.is_instance = icvIsCNNModel; - info.release = icvReleaseCNNModel; - info.read = icvReadCNNModel; - info.write = icvWriteCNNModel; - info.clone = NULL; - info.type_name = CV_TYPE_NAME_ML_CNN; - cvRegisterType( &info ); - - return 1; -} // End of icvRegisterCNNStatModelType - -static int cnn = icvRegisterCNNStatModelType(); - -#endif - -// End of file diff --git a/modules/ml/src/data.cpp b/modules/ml/src/data.cpp index 3af1e3bd02..07e2f2635d 100644 --- a/modules/ml/src/data.cpp +++ b/modules/ml/src/data.cpp @@ -40,753 +40,958 @@ #include "precomp.hpp" #include +#include +#include -#define MISS_VAL FLT_MAX -#define CV_VAR_MISS 0 +namespace cv { namespace ml { -CvTrainTestSplit::CvTrainTestSplit() -{ - train_sample_part_mode = CV_COUNT; - train_sample_part.count = -1; - mix = false; -} +static const float MISSED_VAL = TrainData::missingValue(); +static const int VAR_MISSED = VAR_ORDERED; -CvTrainTestSplit::CvTrainTestSplit( int _train_sample_count, bool _mix ) -{ - train_sample_part_mode = CV_COUNT; - train_sample_part.count = _train_sample_count; - mix = _mix; -} +TrainData::~TrainData() {} -CvTrainTestSplit::CvTrainTestSplit( float _train_sample_portion, bool _mix ) +Mat TrainData::getSubVector(const Mat& vec, const Mat& idx) { - train_sample_part_mode = CV_PORTION; - train_sample_part.portion = _train_sample_portion; - mix = _mix; -} - -//////////////// + if( idx.empty() ) + return vec; + int i, j, n = idx.checkVector(1, CV_32S); + int type = vec.type(); + CV_Assert( type == CV_32S || type == CV_32F || type == CV_64F ); + int dims = 1, m; -CvMLData::CvMLData() -{ - values = missing = var_types = var_idx_mask = response_out = var_idx_out = var_types_out = 0; - train_sample_idx = test_sample_idx = 0; - header_lines_number = 0; - sample_idx = 0; - response_idx = -1; - - train_sample_count = -1; - - delimiter = ','; - miss_ch = '?'; - //flt_separator = '.'; - - rng = &cv::theRNG(); -} + if( vec.cols == 1 || vec.rows == 1 ) + { + dims = 1; + m = vec.cols + vec.rows - 1; + } + else + { + dims = vec.cols; + m = vec.rows; + } -CvMLData::~CvMLData() -{ - clear(); -} + Mat subvec; -void CvMLData::free_train_test_idx() -{ - cvReleaseMat( &train_sample_idx ); - cvReleaseMat( &test_sample_idx ); - sample_idx = 0; + if( vec.cols == m ) + subvec.create(dims, n, type); + else + subvec.create(n, dims, type); + if( type == CV_32S ) + for( i = 0; i < n; i++ ) + { + int k = idx.at(i); + CV_Assert( 0 <= k && k < m ); + if( dims == 1 ) + subvec.at(i) = vec.at(k); + else + for( j = 0; j < dims; j++ ) + subvec.at(i, j) = vec.at(k, j); + } + else if( type == CV_32F ) + for( i = 0; i < n; i++ ) + { + int k = idx.at(i); + CV_Assert( 0 <= k && k < m ); + if( dims == 1 ) + subvec.at(i) = vec.at(k); + else + for( j = 0; j < dims; j++ ) + subvec.at(i, j) = vec.at(k, j); + } + else + for( i = 0; i < n; i++ ) + { + int k = idx.at(i); + CV_Assert( 0 <= k && k < m ); + if( dims == 1 ) + subvec.at(i) = vec.at(k); + else + for( j = 0; j < dims; j++ ) + subvec.at(i, j) = vec.at(k, j); + } + return subvec; } -void CvMLData::clear() +class TrainDataImpl : public TrainData { - class_map.clear(); +public: + typedef std::map MapType; - cvReleaseMat( &values ); - cvReleaseMat( &missing ); - cvReleaseMat( &var_types ); - cvReleaseMat( &var_idx_mask ); - - cvReleaseMat( &response_out ); - cvReleaseMat( &var_idx_out ); - cvReleaseMat( &var_types_out ); + TrainDataImpl() + { + file = 0; + clear(); + } - free_train_test_idx(); + virtual ~TrainDataImpl() { closeFile(); } - total_class_count = 0; + int getLayout() const { return layout; } + int getNSamples() const + { + return !sampleIdx.empty() ? (int)sampleIdx.total() : + layout == ROW_SAMPLE ? samples.rows : samples.cols; + } + int getNTrainSamples() const + { + return !trainSampleIdx.empty() ? (int)trainSampleIdx.total() : getNSamples(); + } + int getNTestSamples() const + { + return !testSampleIdx.empty() ? (int)testSampleIdx.total() : 0; + } + int getNVars() const + { + return !varIdx.empty() ? (int)varIdx.total() : getNAllVars(); + } + int getNAllVars() const + { + return layout == ROW_SAMPLE ? samples.cols : samples.rows; + } - response_idx = -1; + Mat getSamples() const { return samples; } + Mat getResponses() const { return responses; } + Mat getMissing() const { return missing; } + Mat getVarIdx() const { return varIdx; } + Mat getVarType() const { return varType; } + int getResponseType() const + { + return classLabels.empty() ? VAR_ORDERED : VAR_CATEGORICAL; + } + Mat getTrainSampleIdx() const { return !trainSampleIdx.empty() ? trainSampleIdx : sampleIdx; } + Mat getTestSampleIdx() const { return testSampleIdx; } + Mat getSampleWeights() const + { + return sampleWeights; + } + Mat getTrainSampleWeights() const + { + return getSubVector(sampleWeights, getTrainSampleIdx()); + } + Mat getTestSampleWeights() const + { + Mat idx = getTestSampleIdx(); + return idx.empty() ? Mat() : getSubVector(sampleWeights, idx); + } + Mat getTrainResponses() const + { + return getSubVector(responses, getTrainSampleIdx()); + } + Mat getTrainNormCatResponses() const + { + return getSubVector(normCatResponses, getTrainSampleIdx()); + } + Mat getTestResponses() const + { + Mat idx = getTestSampleIdx(); + return idx.empty() ? Mat() : getSubVector(responses, idx); + } + Mat getTestNormCatResponses() const + { + Mat idx = getTestSampleIdx(); + return idx.empty() ? Mat() : getSubVector(normCatResponses, idx); + } + Mat getNormCatResponses() const { return normCatResponses; } + Mat getClassLabels() const { return classLabels; } + Mat getClassCounters() const { return classCounters; } + int getCatCount(int vi) const + { + int n = (int)catOfs.total(); + CV_Assert( 0 <= vi && vi < n ); + Vec2i ofs = catOfs.at(vi); + return ofs[1] - ofs[0]; + } - train_sample_count = -1; -} + Mat getCatOfs() const { return catOfs; } + Mat getCatMap() const { return catMap; } + Mat getDefaultSubstValues() const { return missingSubst; } -void CvMLData::set_header_lines_number( int idx ) -{ - header_lines_number = std::max(0, idx); -} + void closeFile() { if(file) fclose(file); file=0; } + void clear() + { + closeFile(); + samples.release(); + missing.release(); + varType.release(); + responses.release(); + sampleIdx.release(); + trainSampleIdx.release(); + testSampleIdx.release(); + normCatResponses.release(); + classLabels.release(); + classCounters.release(); + catMap.release(); + catOfs.release(); + nameMap = MapType(); + layout = ROW_SAMPLE; + } -int CvMLData::get_header_lines_number() const -{ - return header_lines_number; -} + typedef std::map CatMapHash; -static char *fgets_chomp(char *str, int n, FILE *stream) -{ - char *head = fgets(str, n, stream); - if( head ) + void setData(InputArray _samples, int _layout, InputArray _responses, + InputArray _varIdx, InputArray _sampleIdx, InputArray _sampleWeights, + InputArray _varType, InputArray _missing) { - for(char *tail = head + strlen(head) - 1; tail >= head; --tail) - { - if( *tail != '\r' && *tail != '\n' ) - break; - *tail = '\0'; - } - } - return head; -} + clear(); + CV_Assert(_layout == ROW_SAMPLE || _layout == COL_SAMPLE ); + samples = _samples.getMat(); + layout = _layout; + responses = _responses.getMat(); + varIdx = _varIdx.getMat(); + sampleIdx = _sampleIdx.getMat(); + sampleWeights = _sampleWeights.getMat(); + varType = _varType.getMat(); + missing = _missing.getMat(); -int CvMLData::read_csv(const char* filename) -{ - const int M = 1000000; - const char str_delimiter[3] = { ' ', delimiter, '\0' }; - FILE* file = 0; - CvMemStorage* storage; - CvSeq* seq; - char *ptr; - float* el_ptr; - CvSeqReader reader; - int cols_count = 0; - uchar *var_types_ptr = 0; + int nsamples = layout == ROW_SAMPLE ? samples.rows : samples.cols; + int ninputvars = layout == ROW_SAMPLE ? samples.cols : samples.rows; + int i, noutputvars = 0; - clear(); + CV_Assert( samples.type() == CV_32F || samples.type() == CV_32S ); - file = fopen( filename, "rt" ); + if( !sampleIdx.empty() ) + { + CV_Assert( (sampleIdx.checkVector(1, CV_32S, true) > 0 && + checkRange(sampleIdx, true, 0, 0, nsamples-1)) || + sampleIdx.checkVector(1, CV_8U, true) == nsamples ); + if( sampleIdx.type() == CV_8U ) + sampleIdx = convertMaskToIdx(sampleIdx); + } - if( !file ) - return -1; + if( !sampleWeights.empty() ) + { + CV_Assert( sampleWeights.checkVector(1, CV_32F, true) == nsamples ); + } + else + { + sampleWeights = Mat::ones(nsamples, 1, CV_32F); + } - std::vector _buf(M); - char* buf = &_buf[0]; + if( !varIdx.empty() ) + { + CV_Assert( (varIdx.checkVector(1, CV_32S, true) > 0 && + checkRange(varIdx, true, 0, 0, ninputvars)) || + varIdx.checkVector(1, CV_8U, true) == ninputvars ); + if( varIdx.type() == CV_8U ) + varIdx = convertMaskToIdx(varIdx); + varIdx = varIdx.clone(); + std::sort(varIdx.ptr(), varIdx.ptr() + varIdx.total()); + } - // skip header lines - for( int i = 0; i < header_lines_number; i++ ) - { - if( fgets( buf, M, file ) == 0 ) + if( !responses.empty() ) { - fclose(file); - return -1; + CV_Assert( responses.type() == CV_32F || responses.type() == CV_32S ); + if( (responses.cols == 1 || responses.rows == 1) && (int)responses.total() == nsamples ) + noutputvars = 1; + else + { + CV_Assert( (layout == ROW_SAMPLE && responses.rows == nsamples) || + (layout == COL_SAMPLE && responses.cols == nsamples) ); + noutputvars = layout == ROW_SAMPLE ? responses.cols : responses.rows; + } + if( !responses.isContinuous() || (layout == COL_SAMPLE && noutputvars > 1) ) + { + Mat temp; + transpose(responses, temp); + responses = temp; + } } - } - // read the first data line and determine the number of variables - if( !fgets_chomp( buf, M, file )) - { - fclose(file); - return -1; - } + int nvars = ninputvars + noutputvars; - ptr = buf; - while( *ptr == ' ' ) - ptr++; - for( ; *ptr != '\0'; ) - { - if(*ptr == delimiter || *ptr == ' ') + if( !varType.empty() ) { - cols_count++; - ptr++; - while( *ptr == ' ' ) ptr++; + CV_Assert( varType.checkVector(1, CV_8U, true) == nvars && + checkRange(varType, true, 0, VAR_ORDERED, VAR_CATEGORICAL+1) ); } else - ptr++; - } + { + varType.create(1, nvars, CV_8U); + varType = Scalar::all(VAR_ORDERED); + if( noutputvars == 1 ) + varType.at(ninputvars) = responses.type() < CV_32F ? VAR_CATEGORICAL : VAR_ORDERED; + } - cols_count++; + if( noutputvars > 1 ) + { + for( i = 0; i < noutputvars; i++ ) + CV_Assert( varType.at(ninputvars + i) == VAR_ORDERED ); + } - if ( cols_count == 0) - { - fclose(file); - return -1; - } + catOfs = Mat::zeros(1, nvars, CV_32SC2); + missingSubst = Mat::zeros(1, nvars, CV_32F); - // create temporary memory storage to store the whole database - el_ptr = new float[cols_count]; - storage = cvCreateMemStorage(); - seq = cvCreateSeq( 0, sizeof(*seq), cols_count*sizeof(float), storage ); + vector labels, counters, sortbuf, tempCatMap; + vector tempCatOfs; + CatMapHash ofshash; - var_types = cvCreateMat( 1, cols_count, CV_8U ); - cvZero( var_types ); - var_types_ptr = var_types->data.ptr; + AutoBuffer buf(nsamples); + Mat non_missing(layout == ROW_SAMPLE ? Size(1, nsamples) : Size(nsamples, 1), CV_8U, (uchar*)buf); + bool haveMissing = !missing.empty(); + if( haveMissing ) + { + CV_Assert( missing.size() == samples.size() && missing.type() == CV_8U ); + } - for(;;) - { - char *token = NULL; - int type; - token = strtok(buf, str_delimiter); - if (!token) - break; - for (int i = 0; i < cols_count-1; i++) + // we iterate through all the variables. For each categorical variable we build a map + // in order to convert input values of the variable into normalized values (0..catcount_vi-1) + // often many categorical variables are similar, so we compress the map - try to re-use + // maps for different variables if they are identical + for( i = 0; i < ninputvars; i++ ) { - str_to_flt_elem( token, el_ptr[i], type); - var_types_ptr[i] |= type; - token = strtok(NULL, str_delimiter); - if (!token) + Mat values_i = layout == ROW_SAMPLE ? samples.col(i) : samples.row(i); + + if( varType.at(i) == VAR_CATEGORICAL ) + { + preprocessCategorical(values_i, 0, labels, 0, sortbuf); + missingSubst.at(i) = -1.f; + int j, m = (int)labels.size(); + CV_Assert( m > 0 ); + int a = labels.front(), b = labels.back(); + const int* currmap = &labels[0]; + int hashval = ((unsigned)a*127 + (unsigned)b)*127 + m; + CatMapHash::iterator it = ofshash.find(hashval); + if( it != ofshash.end() ) + { + int vi = it->second; + Vec2i ofs0 = tempCatOfs[vi]; + int m0 = ofs0[1] - ofs0[0]; + const int* map0 = &tempCatMap[ofs0[0]]; + if( m0 == m && map0[0] == a && map0[m0-1] == b ) + { + for( j = 0; j < m; j++ ) + if( map0[j] != currmap[j] ) + break; + if( j == m ) + { + // re-use the map + tempCatOfs.push_back(ofs0); + continue; + } + } + } + else + ofshash[hashval] = i; + Vec2i ofs; + ofs[0] = (int)tempCatMap.size(); + ofs[1] = ofs[0] + m; + tempCatOfs.push_back(ofs); + std::copy(labels.begin(), labels.end(), std::back_inserter(tempCatMap)); + } + else if( haveMissing ) { - fclose(file); - delete [] el_ptr; - return -1; + tempCatOfs.push_back(Vec2i(0, 0)); + /*Mat missing_i = layout == ROW_SAMPLE ? missing.col(i) : missing.row(i); + compare(missing_i, Scalar::all(0), non_missing, CMP_EQ); + missingSubst.at(i) = (float)(mean(values_i, non_missing)[0]);*/ + missingSubst.at(i) = 0.f; } } - str_to_flt_elem( token, el_ptr[cols_count-1], type); - var_types_ptr[cols_count-1] |= type; - cvSeqPush( seq, el_ptr ); - if( !fgets_chomp( buf, M, file ) ) - break; - } - fclose(file); - values = cvCreateMat( seq->total, cols_count, CV_32FC1 ); - missing = cvCreateMat( seq->total, cols_count, CV_8U ); - var_idx_mask = cvCreateMat( 1, values->cols, CV_8UC1 ); - cvSet( var_idx_mask, cvRealScalar(1) ); - train_sample_count = seq->total; - - cvStartReadSeq( seq, &reader ); - for(int i = 0; i < seq->total; i++ ) - { - const float* sdata = (float*)reader.ptr; - float* ddata = values->data.fl + cols_count*i; - uchar* dm = missing->data.ptr + cols_count*i; + if( !tempCatOfs.empty() ) + { + Mat(tempCatOfs).copyTo(catOfs); + Mat(tempCatMap).copyTo(catMap); + } - for( int j = 0; j < cols_count; j++ ) + if( varType.at(ninputvars) == VAR_CATEGORICAL ) { - ddata[j] = sdata[j]; - dm[j] = ( fabs( MISS_VAL - sdata[j] ) <= FLT_EPSILON ); + preprocessCategorical(responses, &normCatResponses, labels, &counters, sortbuf); + Mat(labels).copyTo(classLabels); + Mat(counters).copyTo(classCounters); } - CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); } - if ( cvNorm( missing, 0, CV_L1 ) <= FLT_EPSILON ) - cvReleaseMat( &missing ); + Mat convertMaskToIdx(const Mat& mask) + { + int i, j, nz = countNonZero(mask), n = mask.cols + mask.rows - 1; + Mat idx(1, nz, CV_32S); + for( i = j = 0; i < n; i++ ) + if( mask.at(i) ) + idx.at(j++) = i; + return idx; + } - cvReleaseMemStorage( &storage ); - delete []el_ptr; - return 0; -} + struct CmpByIdx + { + CmpByIdx(const int* _data, int _step) : data(_data), step(_step) {} + bool operator ()(int i, int j) const { return data[i*step] < data[j*step]; } + const int* data; + int step; + }; + + void preprocessCategorical(const Mat& data, Mat* normdata, vector& labels, + vector* counters, vector& sortbuf) + { + CV_Assert((data.cols == 1 || data.rows == 1) && (data.type() == CV_32S || data.type() == CV_32F)); + int* odata = 0; + int ostep = 0; -const CvMat* CvMLData::get_values() const -{ - return values; -} + if(normdata) + { + normdata->create(data.size(), CV_32S); + odata = normdata->ptr(); + ostep = normdata->isContinuous() ? 1 : (int)normdata->step1(); + } -const CvMat* CvMLData::get_missing() const -{ - CV_FUNCNAME( "CvMLData::get_missing" ); - __BEGIN__; + int i, n = data.cols + data.rows - 1; + sortbuf.resize(n*2); + int* idx = &sortbuf[0]; + int* idata = (int*)data.ptr(); + int istep = data.isContinuous() ? 1 : (int)data.step1(); - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); + if( data.type() == CV_32F ) + { + idata = idx + n; + const float* fdata = data.ptr(); + for( i = 0; i < n; i++ ) + { + if( fdata[i*istep] == MISSED_VAL ) + idata[i] = -1; + else + { + idata[i] = cvRound(fdata[i*istep]); + CV_Assert( (float)idata[i] == fdata[i*istep] ); + } + } + istep = 1; + } - __END__; + for( i = 0; i < n; i++ ) + idx[i] = i; - return missing; -} + std::sort(idx, idx + n, CmpByIdx(idata, istep)); -const std::map& CvMLData::get_class_labels_map() const -{ - return class_map; -} + int clscount = 1; + for( i = 1; i < n; i++ ) + clscount += idata[idx[i]*istep] != idata[idx[i-1]*istep]; -void CvMLData::str_to_flt_elem( const char* token, float& flt_elem, int& type) -{ + int clslabel = -1; + int prev = ~idata[idx[0]*istep]; + int previdx = 0; - char* stopstring = NULL; - flt_elem = (float)strtod( token, &stopstring ); - assert( stopstring ); - type = CV_VAR_ORDERED; - if ( *stopstring == miss_ch && strlen(stopstring) == 1 ) // missed value - { - flt_elem = MISS_VAL; - type = CV_VAR_MISS; - } - else - { - if ( (*stopstring != 0) && (*stopstring != '\n') && (strcmp(stopstring, "\r\n") != 0) ) // class label + labels.resize(clscount); + if(counters) + counters->resize(clscount); + + for( i = 0; i < n; i++ ) { - int idx = class_map[token]; - if ( idx == 0) + int l = idata[idx[i]*istep]; + if( l != prev ) { - total_class_count++; - idx = total_class_count; - class_map[token] = idx; + clslabel++; + labels[clslabel] = l; + int k = i - previdx; + if( clslabel > 0 && counters ) + counters->at(clslabel-1) = k; + prev = l; + previdx = i; } - flt_elem = (float)idx; - type = CV_VAR_CATEGORICAL; + if(odata) + odata[idx[i]*ostep] = clslabel; } + if(counters) + counters->at(clslabel) = i - previdx; } -} -void CvMLData::set_delimiter(char ch) -{ - CV_FUNCNAME( "CvMLData::set_delimited" ); - __BEGIN__; - - if (ch == miss_ch /*|| ch == flt_separator*/) - CV_ERROR(CV_StsBadArg, "delimited, miss_character and flt_separator must be different"); - - delimiter = ch; - - __END__; -} + bool loadCSV(const String& filename, int headerLines, + int responseStartIdx, int responseEndIdx, + const String& varTypeSpec, char delimiter, char missch) + { + const int M = 1000000; + const char delimiters[3] = { ' ', delimiter, '\0' }; + int nvars = 0; + bool varTypesSet = false; -char CvMLData::get_delimiter() const -{ - return delimiter; -} + clear(); -void CvMLData::set_miss_ch(char ch) -{ - CV_FUNCNAME( "CvMLData::set_miss_ch" ); - __BEGIN__; + file = fopen( filename.c_str(), "rt" ); - if (ch == delimiter/* || ch == flt_separator*/) - CV_ERROR(CV_StsBadArg, "delimited, miss_character and flt_separator must be different"); + if( !file ) + return false; - miss_ch = ch; + std::vector _buf(M); + std::vector allresponses; + std::vector rowvals; + std::vector vtypes, rowtypes; + bool haveMissed = false; + char* buf = &_buf[0]; - __END__; -} + int i, ridx0 = responseStartIdx, ridx1 = responseEndIdx; + int ninputvars = 0, noutputvars = 0; -char CvMLData::get_miss_ch() const -{ - return miss_ch; -} + Mat tempSamples, tempMissing, tempResponses; + MapType tempNameMap; + int catCounter = 1; -void CvMLData::set_response_idx( int idx ) -{ - CV_FUNCNAME( "CvMLData::set_response_idx" ); - __BEGIN__; + // skip header lines + int lineno = 0; + for(;;lineno++) + { + if( !fgets(buf, M, file) ) + break; + if(lineno < headerLines ) + continue; + // trim trailing spaces + int idx = (int)strlen(buf)-1; + while( idx >= 0 && isspace(buf[idx]) ) + buf[idx--] = '\0'; + // skip spaces in the beginning + char* ptr = buf; + while( *ptr != '\0' && isspace(*ptr) ) + ptr++; + // skip commented off lines + if(*ptr == '#') + continue; + rowvals.clear(); + rowtypes.clear(); + + char* token = strtok(buf, delimiters); + if (!token) + break; - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); + for(;;) + { + float val=0.f; int tp = 0; + decodeElem( token, val, tp, missch, tempNameMap, catCounter ); + if( tp == VAR_MISSED ) + haveMissed = true; + rowvals.push_back(val); + rowtypes.push_back(tp); + token = strtok(NULL, delimiters); + if (!token) + break; + } - if ( idx >= values->cols) - CV_ERROR( CV_StsBadArg, "idx value is not correct" ); + if( nvars == 0 ) + { + if( rowvals.empty() ) + CV_Error(CV_StsBadArg, "invalid CSV format; no data found"); + nvars = (int)rowvals.size(); + if( !varTypeSpec.empty() && varTypeSpec.size() > 0 ) + { + setVarTypes(varTypeSpec, nvars, vtypes); + varTypesSet = true; + } + else + vtypes = rowtypes; - if ( response_idx >= 0 ) - chahge_var_idx( response_idx, true ); - if ( idx >= 0 ) - chahge_var_idx( idx, false ); - response_idx = idx; + ridx0 = ridx0 >= 0 ? ridx0 : ridx0 == -1 ? nvars - 1 : -1; + ridx1 = ridx1 >= 0 ? ridx1 : ridx0 >= 0 ? ridx0+1 : -1; + CV_Assert(ridx1 > ridx0); + noutputvars = ridx0 >= 0 ? ridx1 - ridx0 : 0; + ninputvars = nvars - noutputvars; + } + else + CV_Assert( nvars == (int)rowvals.size() ); - __END__; -} + // check var types + for( i = 0; i < nvars; i++ ) + { + CV_Assert( (!varTypesSet && vtypes[i] == rowtypes[i]) || + (varTypesSet && (vtypes[i] == rowtypes[i] || rowtypes[i] == VAR_ORDERED)) ); + } -int CvMLData::get_response_idx() const -{ - CV_FUNCNAME( "CvMLData::get_response_idx" ); - __BEGIN__; + if( ridx0 >= 0 ) + { + for( i = ridx1; i < nvars; i++ ) + std::swap(rowvals[i], rowvals[i-noutputvars]); + for( i = ninputvars; i < nvars; i++ ) + allresponses.push_back(rowvals[i]); + rowvals.pop_back(); + } + Mat rmat(1, ninputvars, CV_32F, &rowvals[0]); + tempSamples.push_back(rmat); + } - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); - __END__; - return response_idx; -} + closeFile(); -void CvMLData::change_var_type( int var_idx, int type ) -{ - CV_FUNCNAME( "CvMLData::change_var_type" ); - __BEGIN__; + int nsamples = tempSamples.rows; + if( nsamples == 0 ) + return false; - int var_count = 0; + if( haveMissed ) + compare(tempSamples, MISSED_VAL, tempMissing, CMP_EQ); - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); + if( ridx0 >= 0 ) + { + for( i = ridx1; i < nvars; i++ ) + std::swap(vtypes[i], vtypes[i-noutputvars]); + if( noutputvars > 1 ) + { + for( i = ninputvars; i < nvars; i++ ) + if( vtypes[i] == VAR_CATEGORICAL ) + CV_Error(CV_StsBadArg, + "If responses are vector values, not scalars, they must be marked as ordered responses"); + } + } - var_count = values->cols; + if( !varTypesSet && noutputvars == 1 && vtypes[ninputvars] == VAR_ORDERED ) + { + for( i = 0; i < nsamples; i++ ) + if( allresponses[i] != cvRound(allresponses[i]) ) + break; + if( i == nsamples ) + vtypes[ninputvars] = VAR_CATEGORICAL; + } - if ( var_idx < 0 || var_idx >= var_count) - CV_ERROR( CV_StsBadArg, "var_idx is not correct" ); + Mat(nsamples, noutputvars, CV_32F, &allresponses[0]).copyTo(tempResponses); + setData(tempSamples, ROW_SAMPLE, tempResponses, noArray(), noArray(), + noArray(), Mat(vtypes).clone(), tempMissing); + bool ok = !samples.empty(); + if(ok) + std::swap(tempNameMap, nameMap); + return ok; + } - if ( type != CV_VAR_ORDERED && type != CV_VAR_CATEGORICAL) - CV_ERROR( CV_StsBadArg, "type is not correct" ); + void decodeElem( const char* token, float& elem, int& type, + char missch, MapType& namemap, int& counter ) const + { + char* stopstring = NULL; + elem = (float)strtod( token, &stopstring ); + if( *stopstring == missch && strlen(stopstring) == 1 ) // missed value + { + elem = MISSED_VAL; + type = VAR_MISSED; + } + else if( *stopstring != '\0' ) + { + MapType::iterator it = namemap.find(token); + if( it == namemap.end() ) + { + elem = (float)counter; + namemap[token] = counter++; + } + else + elem = (float)it->second; + type = VAR_CATEGORICAL; + } + else + type = VAR_ORDERED; + } - assert( var_types ); - if ( var_types->data.ptr[var_idx] == CV_VAR_CATEGORICAL && type == CV_VAR_ORDERED) - CV_ERROR( CV_StsBadArg, "it`s impossible to assign CV_VAR_ORDERED type to categorical variable" ); - var_types->data.ptr[var_idx] = (uchar)type; + void setVarTypes( const String& s, int nvars, std::vector& vtypes ) const + { + const char* errmsg = "type spec is not correct; it should have format \"cat\", \"ord\" or " + "\"ord[n1,n2-n3,n4-n5,...]cat[m1-m2,m3,m4-m5,...]\", where n's and m's are 0-based variable indices"; + const char* str = s.c_str(); + int specCounter = 0; - __END__; + vtypes.resize(nvars); - return; -} + for( int k = 0; k < 2; k++ ) + { + const char* ptr = strstr(str, k == 0 ? "ord" : "cat"); + int tp = k == 0 ? VAR_ORDERED : VAR_CATEGORICAL; + if( ptr ) // parse ord/cat str + { + char* stopstring = NULL; -void CvMLData::set_var_types( const char* str ) -{ - CV_FUNCNAME( "CvMLData::set_var_types" ); - __BEGIN__; + if( ptr[3] == '\0' ) + { + for( int i = 0; i < nvars; i++ ) + vtypes[i] = (uchar)tp; + specCounter = nvars; + break; + } - const char* ord = 0, *cat = 0; - int var_count = 0, set_var_type_count = 0; - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); + if ( ptr[3] != '[') + CV_Error( CV_StsBadArg, errmsg ); - var_count = values->cols; + ptr += 4; // pass "ord[" + do + { + int b1 = (int)strtod( ptr, &stopstring ); + if( *stopstring == 0 || (*stopstring != ',' && *stopstring != ']' && *stopstring != '-') ) + CV_Error( CV_StsBadArg, errmsg ); + ptr = stopstring + 1; + if( (stopstring[0] == ',') || (stopstring[0] == ']')) + { + CV_Assert( 0 <= b1 && b1 < nvars ); + vtypes[b1] = (uchar)tp; + specCounter++; + } + else + { + if( stopstring[0] == '-') + { + int b2 = (int)strtod( ptr, &stopstring); + if ( (*stopstring == 0) || (*stopstring != ',' && *stopstring != ']') ) + CV_Error( CV_StsBadArg, errmsg ); + ptr = stopstring + 1; + CV_Assert( 0 <= b1 && b1 <= b2 && b2 < nvars ); + for (int i = b1; i <= b2; i++) + vtypes[i] = (uchar)tp; + specCounter += b2 - b1 + 1; + } + else + CV_Error( CV_StsBadArg, errmsg ); - assert( var_types ); + } + } + while(*stopstring != ']'); - ord = strstr( str, "ord" ); - cat = strstr( str, "cat" ); - if ( !ord && !cat ) - CV_ERROR( CV_StsBadArg, "types string is not correct" ); + if( stopstring[1] != '\0' && stopstring[1] != ',') + CV_Error( CV_StsBadArg, errmsg ); + } + } - if ( !ord && strlen(cat) == 3 ) // str == "cat" - { - cvSet( var_types, cvScalarAll(CV_VAR_CATEGORICAL) ); - return; + if( specCounter != nvars ) + CV_Error( CV_StsBadArg, "type of some variables is not specified" ); } - if ( !cat && strlen(ord) == 3 ) // str == "ord" + void setTrainTestSplitRatio(float ratio, bool shuffle) { - cvSet( var_types, cvScalarAll(CV_VAR_ORDERED) ); - return; + CV_Assert( 0 <= ratio && ratio <= 1 ); + setTrainTestSplit(cvRound(getNSamples()*ratio), shuffle); } - if ( ord ) // parse ord str + void setTrainTestSplit(int count, bool shuffle) { - char* stopstring = NULL; - if ( ord[3] != '[') - CV_ERROR( CV_StsBadArg, "types string is not correct" ); + int i, nsamples = getNSamples(); + CV_Assert( 0 <= count < nsamples ); + + trainSampleIdx.release(); + testSampleIdx.release(); - ord += 4; // pass "ord[" - do + if( count == 0 ) + trainSampleIdx = sampleIdx; + else if( count == nsamples ) + testSampleIdx = sampleIdx; + else { - int b1 = (int)strtod( ord, &stopstring ); - if ( *stopstring == 0 || (*stopstring != ',' && *stopstring != ']' && *stopstring != '-') ) - CV_ERROR( CV_StsBadArg, "types string is not correct" ); - ord = stopstring + 1; - if ( (stopstring[0] == ',') || (stopstring[0] == ']')) + Mat mask(1, nsamples, CV_8U); + uchar* mptr = mask.data; + for( i = 0; i < nsamples; i++ ) + mptr[i] = (uchar)(i < count); + trainSampleIdx.create(1, count, CV_32S); + testSampleIdx.create(1, nsamples - count, CV_32S); + int j0 = 0, j1 = 0; + const int* sptr = !sampleIdx.empty() ? sampleIdx.ptr() : 0; + int* trainptr = trainSampleIdx.ptr(); + int* testptr = testSampleIdx.ptr(); + for( i = 0; i < nsamples; i++ ) { - if ( var_types->data.ptr[b1] == CV_VAR_CATEGORICAL) - CV_ERROR( CV_StsBadArg, "it`s impossible to assign CV_VAR_ORDERED type to categorical variable" ); - var_types->data.ptr[b1] = CV_VAR_ORDERED; - set_var_type_count++; - } - else - { - if ( stopstring[0] == '-') - { - int b2 = (int)strtod( ord, &stopstring); - if ( (*stopstring == 0) || (*stopstring != ',' && *stopstring != ']') ) - CV_ERROR( CV_StsBadArg, "types string is not correct" ); - ord = stopstring + 1; - for (int i = b1; i <= b2; i++) - { - if ( var_types->data.ptr[i] == CV_VAR_CATEGORICAL) - CV_ERROR( CV_StsBadArg, "it`s impossible to assign CV_VAR_ORDERED type to categorical variable" ); - var_types->data.ptr[i] = CV_VAR_ORDERED; - } - set_var_type_count += b2 - b1 + 1; - } + int idx = sptr ? sptr[i] : i; + if( mptr[i] ) + trainptr[j0++] = idx; else - CV_ERROR( CV_StsBadArg, "types string is not correct" ); - + testptr[j1++] = idx; } + if( shuffle ) + shuffleTrainTest(); } - while (*stopstring != ']'); - - if ( stopstring[1] != '\0' && stopstring[1] != ',') - CV_ERROR( CV_StsBadArg, "types string is not correct" ); } - if ( cat ) // parse cat str + void shuffleTrainTest() { - char* stopstring = NULL; - if ( cat[3] != '[') - CV_ERROR( CV_StsBadArg, "types string is not correct" ); - - cat += 4; // pass "cat[" - do + if( !trainSampleIdx.empty() && !testSampleIdx.empty() ) { - int b1 = (int)strtod( cat, &stopstring ); - if ( *stopstring == 0 || (*stopstring != ',' && *stopstring != ']' && *stopstring != '-') ) - CV_ERROR( CV_StsBadArg, "types string is not correct" ); - cat = stopstring + 1; - if ( (stopstring[0] == ',') || (stopstring[0] == ']')) - { - var_types->data.ptr[b1] = CV_VAR_CATEGORICAL; - set_var_type_count++; - } - else + int i, nsamples = getNSamples(), ntrain = getNTrainSamples(), ntest = getNTestSamples(); + int* trainIdx = trainSampleIdx.ptr(); + int* testIdx = testSampleIdx.ptr(); + RNG& rng = theRNG(); + + for( i = 0; i < nsamples; i++) { - if ( stopstring[0] == '-') + int a = rng.uniform(0, nsamples); + int b = rng.uniform(0, nsamples); + int* ptra = trainIdx; + int* ptrb = trainIdx; + if( a >= ntrain ) { - int b2 = (int)strtod( cat, &stopstring); - if ( (*stopstring == 0) || (*stopstring != ',' && *stopstring != ']') ) - CV_ERROR( CV_StsBadArg, "types string is not correct" ); - cat = stopstring + 1; - for (int i = b1; i <= b2; i++) - var_types->data.ptr[i] = CV_VAR_CATEGORICAL; - set_var_type_count += b2 - b1 + 1; + ptra = testIdx; + a -= ntrain; + CV_Assert( a < ntest ); } - else - CV_ERROR( CV_StsBadArg, "types string is not correct" ); - + if( b >= ntrain ) + { + ptrb = testIdx; + b -= ntrain; + CV_Assert( b < ntest ); + } + std::swap(ptra[a], ptrb[b]); } } - while (*stopstring != ']'); - - if ( stopstring[1] != '\0' && stopstring[1] != ',') - CV_ERROR( CV_StsBadArg, "types string is not correct" ); - } - - if (set_var_type_count != var_count) - CV_ERROR( CV_StsBadArg, "types string is not correct" ); - - __END__; -} - -const CvMat* CvMLData::get_var_types() -{ - CV_FUNCNAME( "CvMLData::get_var_types" ); - __BEGIN__; - - uchar *var_types_out_ptr = 0; - int avcount, vt_size; - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); - - assert( var_idx_mask ); - - avcount = cvFloor( cvNorm( var_idx_mask, 0, CV_L1 ) ); - vt_size = avcount + (response_idx >= 0); - - if ( avcount == values->cols || (avcount == values->cols-1 && response_idx == values->cols-1) ) - return var_types; - - if ( !var_types_out || ( var_types_out && var_types_out->cols != vt_size ) ) - { - cvReleaseMat( &var_types_out ); - var_types_out = cvCreateMat( 1, vt_size, CV_8UC1 ); } - var_types_out_ptr = var_types_out->data.ptr; - for( int i = 0; i < var_types->cols; i++) + Mat getTrainSamples(int _layout, + bool compressSamples, + bool compressVars) const { - if (i == response_idx || !var_idx_mask->data.ptr[i]) continue; - *var_types_out_ptr = var_types->data.ptr[i]; - var_types_out_ptr++; - } - if ( response_idx >= 0 ) - *var_types_out_ptr = var_types->data.ptr[response_idx]; - - __END__; - - return var_types_out; -} - -int CvMLData::get_var_type( int var_idx ) const -{ - return var_types->data.ptr[var_idx]; -} - -const CvMat* CvMLData::get_responses() -{ - CV_FUNCNAME( "CvMLData::get_responses_ptr" ); - __BEGIN__; - - int var_count = 0; - - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); - var_count = values->cols; - - if ( response_idx < 0 || response_idx >= var_count ) - return 0; - if ( !response_out ) - response_out = cvCreateMatHeader( values->rows, 1, CV_32FC1 ); - else - cvInitMatHeader( response_out, values->rows, 1, CV_32FC1); - cvGetCol( values, response_out, response_idx ); - - __END__; - - return response_out; -} - -void CvMLData::set_train_test_split( const CvTrainTestSplit * spl) -{ - CV_FUNCNAME( "CvMLData::set_division" ); - __BEGIN__; - - int sample_count = 0; + if( samples.empty() ) + return samples; + + if( (!compressSamples || (trainSampleIdx.empty() && sampleIdx.empty())) && + (!compressVars || varIdx.empty()) && + layout == _layout ) + return samples; + + int drows = getNTrainSamples(), dcols = getNVars(); + Mat sidx = getTrainSampleIdx(), vidx = getVarIdx(); + const float* src0 = samples.ptr(); + const int* sptr = !sidx.empty() ? sidx.ptr() : 0; + const int* vptr = !vidx.empty() ? vidx.ptr() : 0; + size_t sstep0 = samples.step/samples.elemSize(); + size_t sstep = layout == ROW_SAMPLE ? sstep0 : 1; + size_t vstep = layout == ROW_SAMPLE ? 1 : sstep0; + + if( _layout == COL_SAMPLE ) + { + std::swap(drows, dcols); + std::swap(sptr, vptr); + std::swap(sstep, vstep); + } - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); + Mat dsamples(drows, dcols, CV_32F); - sample_count = values->rows; + for( int i = 0; i < drows; i++ ) + { + const float* src = src0 + (sptr ? sptr[i] : i)*sstep; + float* dst = dsamples.ptr(i); - float train_sample_portion; + for( int j = 0; j < dcols; j++ ) + dst[j] = src[(vptr ? vptr[j] : j)*vstep]; + } - if (spl->train_sample_part_mode == CV_COUNT) - { - train_sample_count = spl->train_sample_part.count; - if (train_sample_count > sample_count) - CV_ERROR( CV_StsBadArg, "train samples count is not correct" ); - train_sample_count = train_sample_count<=0 ? sample_count : train_sample_count; - } - else // dtype.train_sample_part_mode == CV_PORTION - { - train_sample_portion = spl->train_sample_part.portion; - if ( train_sample_portion > 1) - CV_ERROR( CV_StsBadArg, "train samples count is not correct" ); - train_sample_portion = train_sample_portion <= FLT_EPSILON || - 1 - train_sample_portion <= FLT_EPSILON ? 1 : train_sample_portion; - train_sample_count = std::max(1, cvFloor( train_sample_portion * sample_count )); + return dsamples; } - if ( train_sample_count == sample_count ) + void getValues( int vi, InputArray _sidx, float* values ) const { - free_train_test_idx(); - return; + Mat sidx = _sidx.getMat(); + int i, n, nsamples = getNSamples(); + CV_Assert( 0 <= vi && vi < getNAllVars() ); + CV_Assert( (n = sidx.checkVector(1, CV_32S)) >= 0 ); + const int* s = n > 0 ? sidx.ptr() : 0; + if( n == 0 ) + n = nsamples; + + size_t step = samples.step/samples.elemSize(); + size_t sstep = layout == ROW_SAMPLE ? step : 1; + size_t vstep = layout == ROW_SAMPLE ? 1 : step; + + const float* src = samples.ptr() + vi*vstep; + float subst = missingSubst.at(vi); + for( i = 0; i < n; i++ ) + { + int j = i; + if( s ) + { + j = s[i]; + CV_DbgAssert( 0 <= j && j < nsamples ); + } + values[i] = src[j*sstep]; + if( values[i] == MISSED_VAL ) + values[i] = subst; + } } - if ( train_sample_idx && train_sample_idx->cols != train_sample_count ) - free_train_test_idx(); - - if ( !sample_idx) + void getNormCatValues( int vi, InputArray _sidx, int* values ) const { - int test_sample_count = sample_count- train_sample_count; - sample_idx = (int*)cvAlloc( sample_count * sizeof(sample_idx[0]) ); - for (int i = 0; i < sample_count; i++ ) - sample_idx[i] = i; - train_sample_idx = cvCreateMatHeader( 1, train_sample_count, CV_32SC1 ); - *train_sample_idx = cvMat( 1, train_sample_count, CV_32SC1, &sample_idx[0] ); - - CV_Assert(test_sample_count > 0); - test_sample_idx = cvCreateMatHeader( 1, test_sample_count, CV_32SC1 ); - *test_sample_idx = cvMat( 1, test_sample_count, CV_32SC1, &sample_idx[train_sample_count] ); - } - - mix = spl->mix; - if ( mix ) - mix_train_and_test_idx(); - - __END__; -} - -const CvMat* CvMLData::get_train_sample_idx() const -{ - CV_FUNCNAME( "CvMLData::get_train_sample_idx" ); - __BEGIN__; - - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); - __END__; - - return train_sample_idx; -} + float* fvalues = (float*)values; + getValues(vi, _sidx, fvalues); + int i, n = (int)_sidx.total(); + Vec2i ofs = catOfs.at(vi); + int m = ofs[1] - ofs[0]; -const CvMat* CvMLData::get_test_sample_idx() const -{ - CV_FUNCNAME( "CvMLData::get_test_sample_idx" ); - __BEGIN__; - - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); - __END__; - - return test_sample_idx; -} - -void CvMLData::mix_train_and_test_idx() -{ - CV_FUNCNAME( "CvMLData::mix_train_and_test_idx" ); - __BEGIN__; + CV_Assert( m > 0 ); // if m==0, vi is an ordered variable + const int* cmap = &catMap.at(ofs[0]); + bool fastMap = (m == cmap[m] - cmap[0]); - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); - __END__; - - if ( !sample_idx) - return; - - if ( train_sample_count > 0 && train_sample_count < values->rows ) - { - int n = values->rows; - for (int i = 0; i < n; i++) + if( fastMap ) { - int a = (*rng)(n); - int b = (*rng)(n); - int t; - CV_SWAP( sample_idx[a], sample_idx[b], t ); + for( i = 0; i < n; i++ ) + { + int val = cvRound(fvalues[i]); + int idx = val - cmap[0]; + CV_Assert(cmap[idx] == val); + values[i] = idx; + } } - } -} - -const CvMat* CvMLData::get_var_idx() -{ - CV_FUNCNAME( "CvMLData::get_var_idx" ); - __BEGIN__; - - int avcount = 0; - - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); - - assert( var_idx_mask ); - - avcount = cvFloor( cvNorm( var_idx_mask, 0, CV_L1 ) ); - int* vidx; + else + { + for( i = 0; i < n; i++ ) + { + int val = cvRound(fvalues[i]); + int a = 0, b = m, c = -1; - if ( avcount == values->cols ) - return 0; + while( a < b ) + { + c = (a + b) >> 1; + if( val < cmap[c] ) + b = c; + else if( val > cmap[c] ) + a = c+1; + else + break; + } - if ( !var_idx_out || ( var_idx_out && var_idx_out->cols != avcount ) ) - { - cvReleaseMat( &var_idx_out ); - var_idx_out = cvCreateMat( 1, avcount, CV_32SC1); - if ( response_idx >=0 ) - var_idx_mask->data.ptr[response_idx] = 0; + CV_DbgAssert( c >= 0 && val == cmap[c] ); + values[i] = c; + } + } } - vidx = var_idx_out->data.i; - - for(int i = 0; i < var_idx_mask->cols; i++) - if ( var_idx_mask->data.ptr[i] ) + void getSample(InputArray _vidx, int sidx, float* buf) const + { + CV_Assert(buf != 0 && 0 <= sidx && sidx < getNSamples()); + Mat vidx = _vidx.getMat(); + int i, n, nvars = getNAllVars(); + CV_Assert( (n = vidx.checkVector(1, CV_32S)) >= 0 ); + const int* vptr = n > 0 ? vidx.ptr() : 0; + if( n == 0 ) + n = nvars; + + size_t step = samples.step/samples.elemSize(); + size_t sstep = layout == ROW_SAMPLE ? step : 1; + size_t vstep = layout == ROW_SAMPLE ? 1 : step; + + const float* src = samples.ptr() + sidx*sstep; + for( i = 0; i < n; i++ ) { - *vidx = i; - vidx++; + int j = i; + if( vptr ) + { + j = vptr[i]; + CV_DbgAssert( 0 <= j && j < nvars ); + } + buf[i] = src[j*vstep]; } + } - __END__; - - return var_idx_out; -} + FILE* file; + int layout; + Mat samples, missing, varType, varIdx, responses, missingSubst; + Mat sampleIdx, trainSampleIdx, testSampleIdx; + Mat sampleWeights, catMap, catOfs; + Mat normCatResponses, classLabels, classCounters; + MapType nameMap; +}; -void CvMLData::chahge_var_idx( int vi, bool state ) +Ptr TrainData::loadFromCSV(const String& filename, + int headerLines, + int responseStartIdx, + int responseEndIdx, + const String& varTypeSpec, + char delimiter, char missch) { - change_var_idx( vi, state ); + Ptr td = makePtr(); + if(!td->loadCSV(filename, headerLines, responseStartIdx, responseEndIdx, varTypeSpec, delimiter, missch)) + td.release(); + return td; } -void CvMLData::change_var_idx( int vi, bool state ) +Ptr TrainData::create(InputArray samples, int layout, InputArray responses, + InputArray varIdx, InputArray sampleIdx, InputArray sampleWeights, + InputArray varType) { - CV_FUNCNAME( "CvMLData::change_var_idx" ); - __BEGIN__; - - int var_count = 0; - - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); - - var_count = values->cols; - - if ( vi < 0 || vi >= var_count) - CV_ERROR( CV_StsBadArg, "variable index is not correct" ); - - assert( var_idx_mask ); - var_idx_mask->data.ptr[vi] = state; - - __END__; + Ptr td = makePtr(); + td->setData(samples, layout, responses, varIdx, sampleIdx, sampleWeights, varType, noArray()); + return td; } +}} + /* End of file. */ diff --git a/modules/ml/src/em.cpp b/modules/ml/src/em.cpp index 0bd44f2720..351ca39fc7 100644 --- a/modules/ml/src/em.cpp +++ b/modules/ml/src/em.cpp @@ -43,635 +43,839 @@ namespace cv { +namespace ml +{ const double minEigenValue = DBL_EPSILON; -/////////////////////////////////////////////////////////////////////////////////////////////////////// - -EM::EM(int _nclusters, int _covMatType, const TermCriteria& _termCrit) +EM::Params::Params(int _nclusters, int _covMatType, const TermCriteria& _termCrit) { nclusters = _nclusters; covMatType = _covMatType; - maxIters = (_termCrit.type & TermCriteria::MAX_ITER) ? _termCrit.maxCount : DEFAULT_MAX_ITERS; - epsilon = (_termCrit.type & TermCriteria::EPS) ? _termCrit.epsilon : 0; + termCrit = _termCrit; } -EM::~EM() +class CV_EXPORTS EMImpl : public EM { - //clear(); -} +public: + EMImpl(const Params& _params) + { + setParams(_params); + } -void EM::clear() -{ - trainSamples.release(); - trainProbs.release(); - trainLogLikelihoods.release(); - trainLabels.release(); + virtual ~EMImpl() {} + + void setParams(const Params& _params) + { + params = _params; + CV_Assert(params.nclusters > 1); + CV_Assert(params.covMatType == COV_MAT_SPHERICAL || + params.covMatType == COV_MAT_DIAGONAL || + params.covMatType == COV_MAT_GENERIC); + } + + Params getParams() const + { + return params; + } - weights.release(); - means.release(); - covs.clear(); + void clear() + { + trainSamples.release(); + trainProbs.release(); + trainLogLikelihoods.release(); + trainLabels.release(); - covsEigenValues.clear(); - invCovsEigenValues.clear(); - covsRotateMats.clear(); + weights.release(); + means.release(); + covs.clear(); - logWeightDivDet.release(); -} + covsEigenValues.clear(); + invCovsEigenValues.clear(); + covsRotateMats.clear(); + logWeightDivDet.release(); + } -bool EM::train(InputArray samples, + bool train(const Ptr& data, int) + { + Mat samples = data->getTrainSamples(), labels; + return train_(samples, labels, noArray(), noArray()); + } + + bool train_(InputArray samples, OutputArray logLikelihoods, OutputArray labels, OutputArray probs) -{ - Mat samplesMat = samples.getMat(); - setTrainData(START_AUTO_STEP, samplesMat, 0, 0, 0, 0); - return doTrain(START_AUTO_STEP, logLikelihoods, labels, probs); -} + { + Mat samplesMat = samples.getMat(); + setTrainData(START_AUTO_STEP, samplesMat, 0, 0, 0, 0); + return doTrain(START_AUTO_STEP, logLikelihoods, labels, probs); + } -bool EM::trainE(InputArray samples, + bool trainE(InputArray samples, InputArray _means0, InputArray _covs0, InputArray _weights0, OutputArray logLikelihoods, OutputArray labels, OutputArray probs) -{ - Mat samplesMat = samples.getMat(); - std::vector covs0; - _covs0.getMatVector(covs0); + { + Mat samplesMat = samples.getMat(); + std::vector covs0; + _covs0.getMatVector(covs0); - Mat means0 = _means0.getMat(), weights0 = _weights0.getMat(); + Mat means0 = _means0.getMat(), weights0 = _weights0.getMat(); - setTrainData(START_E_STEP, samplesMat, 0, !_means0.empty() ? &means0 : 0, - !_covs0.empty() ? &covs0 : 0, !_weights0.empty() ? &weights0 : 0); - return doTrain(START_E_STEP, logLikelihoods, labels, probs); -} + setTrainData(START_E_STEP, samplesMat, 0, !_means0.empty() ? &means0 : 0, + !_covs0.empty() ? &covs0 : 0, !_weights0.empty() ? &weights0 : 0); + return doTrain(START_E_STEP, logLikelihoods, labels, probs); + } -bool EM::trainM(InputArray samples, + bool trainM(InputArray samples, InputArray _probs0, OutputArray logLikelihoods, OutputArray labels, OutputArray probs) -{ - Mat samplesMat = samples.getMat(); - Mat probs0 = _probs0.getMat(); - - setTrainData(START_M_STEP, samplesMat, !_probs0.empty() ? &probs0 : 0, 0, 0, 0); - return doTrain(START_M_STEP, logLikelihoods, labels, probs); -} - - -Vec2d EM::predict(InputArray _sample, OutputArray _probs) const -{ - Mat sample = _sample.getMat(); - CV_Assert(isTrained()); - - CV_Assert(!sample.empty()); - if(sample.type() != CV_64FC1) { - Mat tmp; - sample.convertTo(tmp, CV_64FC1); - sample = tmp; - } - sample = sample.reshape(1, 1); + Mat samplesMat = samples.getMat(); + Mat probs0 = _probs0.getMat(); - Mat probs; - if( _probs.needed() ) - { - _probs.create(1, nclusters, CV_64FC1); - probs = _probs.getMat(); + setTrainData(START_M_STEP, samplesMat, !_probs0.empty() ? &probs0 : 0, 0, 0, 0); + return doTrain(START_M_STEP, logLikelihoods, labels, probs); } - return computeProbabilities(sample, !probs.empty() ? &probs : 0); -} - -bool EM::isTrained() const -{ - return !means.empty(); -} + float predict(InputArray _inputs, OutputArray _outputs, int) const + { + bool needprobs = _outputs.needed(); + Mat samples = _inputs.getMat(), probs, probsrow; + int ptype = CV_32F; + float firstres = 0.f; + int i, nsamples = samples.rows; + if( needprobs ) + { + if( _outputs.fixedType() ) + ptype = _outputs.type(); + _outputs.create(samples.rows, params.nclusters, ptype); + } + else + nsamples = std::min(nsamples, 1); -static -void checkTrainData(int startStep, const Mat& samples, - int nclusters, int covMatType, const Mat* probs, const Mat* means, - const std::vector* covs, const Mat* weights) -{ - // Check samples. - CV_Assert(!samples.empty()); - CV_Assert(samples.channels() == 1); - - int nsamples = samples.rows; - int dim = samples.cols; - - // Check training params. - CV_Assert(nclusters > 0); - CV_Assert(nclusters <= nsamples); - CV_Assert(startStep == EM::START_AUTO_STEP || - startStep == EM::START_E_STEP || - startStep == EM::START_M_STEP); - CV_Assert(covMatType == EM::COV_MAT_GENERIC || - covMatType == EM::COV_MAT_DIAGONAL || - covMatType == EM::COV_MAT_SPHERICAL); - - CV_Assert(!probs || - (!probs->empty() && - probs->rows == nsamples && probs->cols == nclusters && - (probs->type() == CV_32FC1 || probs->type() == CV_64FC1))); - - CV_Assert(!weights || - (!weights->empty() && - (weights->cols == 1 || weights->rows == 1) && static_cast(weights->total()) == nclusters && - (weights->type() == CV_32FC1 || weights->type() == CV_64FC1))); - - CV_Assert(!means || - (!means->empty() && - means->rows == nclusters && means->cols == dim && - means->channels() == 1)); - - CV_Assert(!covs || - (!covs->empty() && - static_cast(covs->size()) == nclusters)); - if(covs) - { - const Size covSize(dim, dim); - for(size_t i = 0; i < covs->size(); i++) + for( i = 0; i < nsamples; i++ ) { - const Mat& m = (*covs)[i]; - CV_Assert(!m.empty() && m.size() == covSize && (m.channels() == 1)); + if( needprobs ) + probsrow = probs.row(i); + Vec2d res = computeProbabilities(samples.row(i), needprobs ? &probsrow : 0, ptype); + if( i == 0 ) + firstres = (float)res[1]; } + return firstres; } - if(startStep == EM::START_E_STEP) - { - CV_Assert(means); - } - else if(startStep == EM::START_M_STEP) + Vec2d predict2(InputArray _sample, OutputArray _probs) const { - CV_Assert(probs); - } -} - -static -void preprocessSampleData(const Mat& src, Mat& dst, int dstType, bool isAlwaysClone) -{ - if(src.type() == dstType && !isAlwaysClone) - dst = src; - else - src.convertTo(dst, dstType); -} + int ptype = CV_32F; + Mat sample = _sample.getMat(); + CV_Assert(isTrained()); -static -void preprocessProbability(Mat& probs) -{ - max(probs, 0., probs); + CV_Assert(!sample.empty()); + if(sample.type() != CV_64FC1) + { + Mat tmp; + sample.convertTo(tmp, CV_64FC1); + sample = tmp; + } + sample.reshape(1, 1); - const double uniformProbability = (double)(1./probs.cols); - for(int y = 0; y < probs.rows; y++) - { - Mat sampleProbs = probs.row(y); + Mat probs; + if( _probs.needed() ) + { + if( _probs.fixedType() ) + ptype = _probs.type(); + _probs.create(1, params.nclusters, ptype); + probs = _probs.getMat(); + } - double maxVal = 0; - minMaxLoc(sampleProbs, 0, &maxVal); - if(maxVal < FLT_EPSILON) - sampleProbs.setTo(uniformProbability); - else - normalize(sampleProbs, sampleProbs, 1, 0, NORM_L1); + return computeProbabilities(sample, !probs.empty() ? &probs : 0, ptype); } -} -void EM::setTrainData(int startStep, const Mat& samples, - const Mat* probs0, - const Mat* means0, - const std::vector* covs0, - const Mat* weights0) -{ - clear(); - - checkTrainData(startStep, samples, nclusters, covMatType, probs0, means0, covs0, weights0); - - bool isKMeansInit = (startStep == EM::START_AUTO_STEP) || (startStep == EM::START_E_STEP && (covs0 == 0 || weights0 == 0)); - // Set checked data - preprocessSampleData(samples, trainSamples, isKMeansInit ? CV_32FC1 : CV_64FC1, false); - - // set probs - if(probs0 && startStep == EM::START_M_STEP) + bool isTrained() const { - preprocessSampleData(*probs0, trainProbs, CV_64FC1, true); - preprocessProbability(trainProbs); + return !means.empty(); } - // set weights - if(weights0 && (startStep == EM::START_E_STEP && covs0)) + bool isClassifier() const { - weights0->convertTo(weights, CV_64FC1); - weights = weights.reshape(1,1); - preprocessProbability(weights); + return true; } - // set means - if(means0 && (startStep == EM::START_E_STEP/* || startStep == EM::START_AUTO_STEP*/)) - means0->convertTo(means, isKMeansInit ? CV_32FC1 : CV_64FC1); - - // set covs - if(covs0 && (startStep == EM::START_E_STEP && weights0)) + int getVarCount() const { - covs.resize(nclusters); - for(size_t i = 0; i < covs0->size(); i++) - (*covs0)[i].convertTo(covs[i], CV_64FC1); + return means.cols; } -} -void EM::decomposeCovs() -{ - CV_Assert(!covs.empty()); - covsEigenValues.resize(nclusters); - if(covMatType == EM::COV_MAT_GENERIC) - covsRotateMats.resize(nclusters); - invCovsEigenValues.resize(nclusters); - for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) + String getDefaultModelName() const { - CV_Assert(!covs[clusterIndex].empty()); - - SVD svd(covs[clusterIndex], SVD::MODIFY_A + SVD::FULL_UV); + return "opencv_ml_em"; + } - if(covMatType == EM::COV_MAT_SPHERICAL) + static void checkTrainData(int startStep, const Mat& samples, + int nclusters, int covMatType, const Mat* probs, const Mat* means, + const std::vector* covs, const Mat* weights) + { + // Check samples. + CV_Assert(!samples.empty()); + CV_Assert(samples.channels() == 1); + + int nsamples = samples.rows; + int dim = samples.cols; + + // Check training params. + CV_Assert(nclusters > 0); + CV_Assert(nclusters <= nsamples); + CV_Assert(startStep == START_AUTO_STEP || + startStep == START_E_STEP || + startStep == START_M_STEP); + CV_Assert(covMatType == COV_MAT_GENERIC || + covMatType == COV_MAT_DIAGONAL || + covMatType == COV_MAT_SPHERICAL); + + CV_Assert(!probs || + (!probs->empty() && + probs->rows == nsamples && probs->cols == nclusters && + (probs->type() == CV_32FC1 || probs->type() == CV_64FC1))); + + CV_Assert(!weights || + (!weights->empty() && + (weights->cols == 1 || weights->rows == 1) && static_cast(weights->total()) == nclusters && + (weights->type() == CV_32FC1 || weights->type() == CV_64FC1))); + + CV_Assert(!means || + (!means->empty() && + means->rows == nclusters && means->cols == dim && + means->channels() == 1)); + + CV_Assert(!covs || + (!covs->empty() && + static_cast(covs->size()) == nclusters)); + if(covs) { - double maxSingularVal = svd.w.at(0); - covsEigenValues[clusterIndex] = Mat(1, 1, CV_64FC1, Scalar(maxSingularVal)); + const Size covSize(dim, dim); + for(size_t i = 0; i < covs->size(); i++) + { + const Mat& m = (*covs)[i]; + CV_Assert(!m.empty() && m.size() == covSize && (m.channels() == 1)); + } } - else if(covMatType == EM::COV_MAT_DIAGONAL) + + if(startStep == START_E_STEP) { - covsEigenValues[clusterIndex] = svd.w; + CV_Assert(means); } - else //EM::COV_MAT_GENERIC + else if(startStep == START_M_STEP) { - covsEigenValues[clusterIndex] = svd.w; - covsRotateMats[clusterIndex] = svd.u; + CV_Assert(probs); } - max(covsEigenValues[clusterIndex], minEigenValue, covsEigenValues[clusterIndex]); - invCovsEigenValues[clusterIndex] = 1./covsEigenValues[clusterIndex]; } -} - -void EM::clusterTrainSamples() -{ - int nsamples = trainSamples.rows; - - // Cluster samples, compute/update means - // Convert samples and means to 32F, because kmeans requires this type. - Mat trainSamplesFlt, meansFlt; - if(trainSamples.type() != CV_32FC1) - trainSamples.convertTo(trainSamplesFlt, CV_32FC1); - else - trainSamplesFlt = trainSamples; - if(!means.empty()) + static void preprocessSampleData(const Mat& src, Mat& dst, int dstType, bool isAlwaysClone) { - if(means.type() != CV_32FC1) - means.convertTo(meansFlt, CV_32FC1); + if(src.type() == dstType && !isAlwaysClone) + dst = src; else - meansFlt = means; + src.convertTo(dst, dstType); } - Mat labels; - kmeans(trainSamplesFlt, nclusters, labels, TermCriteria(TermCriteria::COUNT, means.empty() ? 10 : 1, 0.5), 10, KMEANS_PP_CENTERS, meansFlt); - - // Convert samples and means back to 64F. - CV_Assert(meansFlt.type() == CV_32FC1); - if(trainSamples.type() != CV_64FC1) + static void preprocessProbability(Mat& probs) { - Mat trainSamplesBuffer; - trainSamplesFlt.convertTo(trainSamplesBuffer, CV_64FC1); - trainSamples = trainSamplesBuffer; - } - meansFlt.convertTo(means, CV_64FC1); + max(probs, 0., probs); - // Compute weights and covs - weights = Mat(1, nclusters, CV_64FC1, Scalar(0)); - covs.resize(nclusters); - for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) - { - Mat clusterSamples; - for(int sampleIndex = 0; sampleIndex < nsamples; sampleIndex++) + const double uniformProbability = (double)(1./probs.cols); + for(int y = 0; y < probs.rows; y++) { - if(labels.at(sampleIndex) == clusterIndex) - { - const Mat sample = trainSamples.row(sampleIndex); - clusterSamples.push_back(sample); - } - } - CV_Assert(!clusterSamples.empty()); + Mat sampleProbs = probs.row(y); - calcCovarMatrix(clusterSamples, covs[clusterIndex], means.row(clusterIndex), - CV_COVAR_NORMAL + CV_COVAR_ROWS + CV_COVAR_USE_AVG + CV_COVAR_SCALE, CV_64FC1); - weights.at(clusterIndex) = static_cast(clusterSamples.rows)/static_cast(nsamples); + double maxVal = 0; + minMaxLoc(sampleProbs, 0, &maxVal); + if(maxVal < FLT_EPSILON) + sampleProbs.setTo(uniformProbability); + else + normalize(sampleProbs, sampleProbs, 1, 0, NORM_L1); + } } - decomposeCovs(); -} + void setTrainData(int startStep, const Mat& samples, + const Mat* probs0, + const Mat* means0, + const std::vector* covs0, + const Mat* weights0) + { + int nclusters = params.nclusters, covMatType = params.covMatType; + clear(); -void EM::computeLogWeightDivDet() -{ - CV_Assert(!covsEigenValues.empty()); + checkTrainData(startStep, samples, nclusters, covMatType, probs0, means0, covs0, weights0); - Mat logWeights; - cv::max(weights, DBL_MIN, weights); - log(weights, logWeights); + bool isKMeansInit = (startStep == START_AUTO_STEP) || (startStep == START_E_STEP && (covs0 == 0 || weights0 == 0)); + // Set checked data + preprocessSampleData(samples, trainSamples, isKMeansInit ? CV_32FC1 : CV_64FC1, false); - logWeightDivDet.create(1, nclusters, CV_64FC1); - // note: logWeightDivDet = log(weight_k) - 0.5 * log(|det(cov_k)|) + // set probs + if(probs0 && startStep == START_M_STEP) + { + preprocessSampleData(*probs0, trainProbs, CV_64FC1, true); + preprocessProbability(trainProbs); + } - for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) - { - double logDetCov = 0.; - const int evalCount = static_cast(covsEigenValues[clusterIndex].total()); - for(int di = 0; di < evalCount; di++) - logDetCov += std::log(covsEigenValues[clusterIndex].at(covMatType != EM::COV_MAT_SPHERICAL ? di : 0)); + // set weights + if(weights0 && (startStep == START_E_STEP && covs0)) + { + weights0->convertTo(weights, CV_64FC1); + weights.reshape(1,1); + preprocessProbability(weights); + } - logWeightDivDet.at(clusterIndex) = logWeights.at(clusterIndex) - 0.5 * logDetCov; + // set means + if(means0 && (startStep == START_E_STEP/* || startStep == START_AUTO_STEP*/)) + means0->convertTo(means, isKMeansInit ? CV_32FC1 : CV_64FC1); + + // set covs + if(covs0 && (startStep == START_E_STEP && weights0)) + { + covs.resize(nclusters); + for(size_t i = 0; i < covs0->size(); i++) + (*covs0)[i].convertTo(covs[i], CV_64FC1); + } } -} -bool EM::doTrain(int startStep, OutputArray logLikelihoods, OutputArray labels, OutputArray probs) -{ - int dim = trainSamples.cols; - // Precompute the empty initial train data in the cases of EM::START_E_STEP and START_AUTO_STEP - if(startStep != EM::START_M_STEP) + void decomposeCovs() { - if(covs.empty()) + int nclusters = params.nclusters, covMatType = params.covMatType; + CV_Assert(!covs.empty()); + covsEigenValues.resize(nclusters); + if(covMatType == COV_MAT_GENERIC) + covsRotateMats.resize(nclusters); + invCovsEigenValues.resize(nclusters); + for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) { - CV_Assert(weights.empty()); - clusterTrainSamples(); + CV_Assert(!covs[clusterIndex].empty()); + + SVD svd(covs[clusterIndex], SVD::MODIFY_A + SVD::FULL_UV); + + if(covMatType == COV_MAT_SPHERICAL) + { + double maxSingularVal = svd.w.at(0); + covsEigenValues[clusterIndex] = Mat(1, 1, CV_64FC1, Scalar(maxSingularVal)); + } + else if(covMatType == COV_MAT_DIAGONAL) + { + covsEigenValues[clusterIndex] = svd.w; + } + else //COV_MAT_GENERIC + { + covsEigenValues[clusterIndex] = svd.w; + covsRotateMats[clusterIndex] = svd.u; + } + max(covsEigenValues[clusterIndex], minEigenValue, covsEigenValues[clusterIndex]); + invCovsEigenValues[clusterIndex] = 1./covsEigenValues[clusterIndex]; } } - if(!covs.empty() && covsEigenValues.empty() ) + void clusterTrainSamples() { - CV_Assert(invCovsEigenValues.empty()); - decomposeCovs(); - } + int nclusters = params.nclusters; + int nsamples = trainSamples.rows; - if(startStep == EM::START_M_STEP) - mStep(); + // Cluster samples, compute/update means - double trainLogLikelihood, prevTrainLogLikelihood = 0.; - for(int iter = 0; ; iter++) - { - eStep(); - trainLogLikelihood = sum(trainLogLikelihoods)[0]; + // Convert samples and means to 32F, because kmeans requires this type. + Mat trainSamplesFlt, meansFlt; + if(trainSamples.type() != CV_32FC1) + trainSamples.convertTo(trainSamplesFlt, CV_32FC1); + else + trainSamplesFlt = trainSamples; + if(!means.empty()) + { + if(means.type() != CV_32FC1) + means.convertTo(meansFlt, CV_32FC1); + else + meansFlt = means; + } + + Mat labels; + kmeans(trainSamplesFlt, nclusters, labels, + TermCriteria(TermCriteria::COUNT, means.empty() ? 10 : 1, 0.5), + 10, KMEANS_PP_CENTERS, meansFlt); - if(iter >= maxIters - 1) - break; + // Convert samples and means back to 64F. + CV_Assert(meansFlt.type() == CV_32FC1); + if(trainSamples.type() != CV_64FC1) + { + Mat trainSamplesBuffer; + trainSamplesFlt.convertTo(trainSamplesBuffer, CV_64FC1); + trainSamples = trainSamplesBuffer; + } + meansFlt.convertTo(means, CV_64FC1); - double trainLogLikelihoodDelta = trainLogLikelihood - prevTrainLogLikelihood; - if( iter != 0 && - (trainLogLikelihoodDelta < -DBL_EPSILON || - trainLogLikelihoodDelta < epsilon * std::fabs(trainLogLikelihood))) - break; + // Compute weights and covs + weights = Mat(1, nclusters, CV_64FC1, Scalar(0)); + covs.resize(nclusters); + for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) + { + Mat clusterSamples; + for(int sampleIndex = 0; sampleIndex < nsamples; sampleIndex++) + { + if(labels.at(sampleIndex) == clusterIndex) + { + const Mat sample = trainSamples.row(sampleIndex); + clusterSamples.push_back(sample); + } + } + CV_Assert(!clusterSamples.empty()); - mStep(); + calcCovarMatrix(clusterSamples, covs[clusterIndex], means.row(clusterIndex), + CV_COVAR_NORMAL + CV_COVAR_ROWS + CV_COVAR_USE_AVG + CV_COVAR_SCALE, CV_64FC1); + weights.at(clusterIndex) = static_cast(clusterSamples.rows)/static_cast(nsamples); + } - prevTrainLogLikelihood = trainLogLikelihood; + decomposeCovs(); } - if( trainLogLikelihood <= -DBL_MAX/10000. ) + void computeLogWeightDivDet() { - clear(); - return false; + int nclusters = params.nclusters; + CV_Assert(!covsEigenValues.empty()); + + Mat logWeights; + cv::max(weights, DBL_MIN, weights); + log(weights, logWeights); + + logWeightDivDet.create(1, nclusters, CV_64FC1); + // note: logWeightDivDet = log(weight_k) - 0.5 * log(|det(cov_k)|) + + for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) + { + double logDetCov = 0.; + const int evalCount = static_cast(covsEigenValues[clusterIndex].total()); + for(int di = 0; di < evalCount; di++) + logDetCov += std::log(covsEigenValues[clusterIndex].at(params.covMatType != COV_MAT_SPHERICAL ? di : 0)); + + logWeightDivDet.at(clusterIndex) = logWeights.at(clusterIndex) - 0.5 * logDetCov; + } } - // postprocess covs - covs.resize(nclusters); - for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) + bool doTrain(int startStep, OutputArray logLikelihoods, OutputArray labels, OutputArray probs) { - if(covMatType == EM::COV_MAT_SPHERICAL) + int nclusters = params.nclusters; + int dim = trainSamples.cols; + // Precompute the empty initial train data in the cases of START_E_STEP and START_AUTO_STEP + if(startStep != START_M_STEP) { - covs[clusterIndex].create(dim, dim, CV_64FC1); - setIdentity(covs[clusterIndex], Scalar(covsEigenValues[clusterIndex].at(0))); + if(covs.empty()) + { + CV_Assert(weights.empty()); + clusterTrainSamples(); + } } - else if(covMatType == EM::COV_MAT_DIAGONAL) + + if(!covs.empty() && covsEigenValues.empty() ) { - covs[clusterIndex] = Mat::diag(covsEigenValues[clusterIndex]); + CV_Assert(invCovsEigenValues.empty()); + decomposeCovs(); } - } - if(labels.needed()) - trainLabels.copyTo(labels); - if(probs.needed()) - trainProbs.copyTo(probs); - if(logLikelihoods.needed()) - trainLogLikelihoods.copyTo(logLikelihoods); + if(startStep == START_M_STEP) + mStep(); - trainSamples.release(); - trainProbs.release(); - trainLabels.release(); - trainLogLikelihoods.release(); + double trainLogLikelihood, prevTrainLogLikelihood = 0.; + int maxIters = (params.termCrit.type & TermCriteria::MAX_ITER) ? + params.termCrit.maxCount : DEFAULT_MAX_ITERS; + double epsilon = (params.termCrit.type & TermCriteria::EPS) ? params.termCrit.epsilon : 0.; - return true; -} + for(int iter = 0; ; iter++) + { + eStep(); + trainLogLikelihood = sum(trainLogLikelihoods)[0]; -Vec2d EM::computeProbabilities(const Mat& sample, Mat* probs) const -{ - // L_ik = log(weight_k) - 0.5 * log(|det(cov_k)|) - 0.5 *(x_i - mean_k)' cov_k^(-1) (x_i - mean_k)] - // q = arg(max_k(L_ik)) - // probs_ik = exp(L_ik - L_iq) / (1 + sum_j!=q (exp(L_ij - L_iq)) - // see Alex Smola's blog http://blog.smola.org/page/2 for - // details on the log-sum-exp trick - - CV_Assert(!means.empty()); - CV_Assert(sample.type() == CV_64FC1); - CV_Assert(sample.rows == 1); - CV_Assert(sample.cols == means.cols); - - int dim = sample.cols; - - Mat L(1, nclusters, CV_64FC1); - int label = 0; - for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) - { - const Mat centeredSample = sample - means.row(clusterIndex); + if(iter >= maxIters - 1) + break; + + double trainLogLikelihoodDelta = trainLogLikelihood - prevTrainLogLikelihood; + if( iter != 0 && + (trainLogLikelihoodDelta < -DBL_EPSILON || + trainLogLikelihoodDelta < epsilon * std::fabs(trainLogLikelihood))) + break; - Mat rotatedCenteredSample = covMatType != EM::COV_MAT_GENERIC ? - centeredSample : centeredSample * covsRotateMats[clusterIndex]; + mStep(); - double Lval = 0; - for(int di = 0; di < dim; di++) + prevTrainLogLikelihood = trainLogLikelihood; + } + + if( trainLogLikelihood <= -DBL_MAX/10000. ) { - double w = invCovsEigenValues[clusterIndex].at(covMatType != EM::COV_MAT_SPHERICAL ? di : 0); - double val = rotatedCenteredSample.at(di); - Lval += w * val * val; + clear(); + return false; } - CV_DbgAssert(!logWeightDivDet.empty()); - L.at(clusterIndex) = logWeightDivDet.at(clusterIndex) - 0.5 * Lval; - if(L.at(clusterIndex) > L.at(label)) - label = clusterIndex; - } + // postprocess covs + covs.resize(nclusters); + for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) + { + if(params.covMatType == COV_MAT_SPHERICAL) + { + covs[clusterIndex].create(dim, dim, CV_64FC1); + setIdentity(covs[clusterIndex], Scalar(covsEigenValues[clusterIndex].at(0))); + } + else if(params.covMatType == COV_MAT_DIAGONAL) + { + covs[clusterIndex] = Mat::diag(covsEigenValues[clusterIndex]); + } + } - double maxLVal = L.at(label); - Mat expL_Lmax = L; // exp(L_ij - L_iq) - for(int i = 0; i < L.cols; i++) - expL_Lmax.at(i) = std::exp(L.at(i) - maxLVal); - double expDiffSum = sum(expL_Lmax)[0]; // sum_j(exp(L_ij - L_iq)) + if(labels.needed()) + trainLabels.copyTo(labels); + if(probs.needed()) + trainProbs.copyTo(probs); + if(logLikelihoods.needed()) + trainLogLikelihoods.copyTo(logLikelihoods); - if(probs) - { - probs->create(1, nclusters, CV_64FC1); - double factor = 1./expDiffSum; - expL_Lmax *= factor; - expL_Lmax.copyTo(*probs); - } + trainSamples.release(); + trainProbs.release(); + trainLabels.release(); + trainLogLikelihoods.release(); - Vec2d res; - res[0] = std::log(expDiffSum) + maxLVal - 0.5 * dim * CV_LOG2PI; - res[1] = label; + return true; + } - return res; -} + Vec2d computeProbabilities(const Mat& sample, Mat* probs, int ptype) const + { + // L_ik = log(weight_k) - 0.5 * log(|det(cov_k)|) - 0.5 *(x_i - mean_k)' cov_k^(-1) (x_i - mean_k)] + // q = arg(max_k(L_ik)) + // probs_ik = exp(L_ik - L_iq) / (1 + sum_j!=q (exp(L_ij - L_iq)) + // see Alex Smola's blog http://blog.smola.org/page/2 for + // details on the log-sum-exp trick + + int nclusters = params.nclusters, covMatType = params.covMatType; + int stype = sample.type(); + CV_Assert(!means.empty()); + CV_Assert((stype == CV_32F || stype == CV_64F) && (ptype == CV_32F || ptype == CV_64F)); + CV_Assert(sample.size() == Size(means.cols, 1)); + + int dim = sample.cols; + + Mat L(1, nclusters, CV_64FC1), centeredSample(1, dim, CV_64F); + int i, label = 0; + for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) + { + const double* mptr = means.ptr(clusterIndex); + double* dptr = centeredSample.ptr(); + if( stype == CV_32F ) + { + const float* sptr = sample.ptr(); + for( i = 0; i < dim; i++ ) + dptr[i] = sptr[i] - mptr[i]; + } + else + { + const double* sptr = sample.ptr(); + for( i = 0; i < dim; i++ ) + dptr[i] = sptr[i] - mptr[i]; + } -void EM::eStep() -{ - // Compute probs_ik from means_k, covs_k and weights_k. - trainProbs.create(trainSamples.rows, nclusters, CV_64FC1); - trainLabels.create(trainSamples.rows, 1, CV_32SC1); - trainLogLikelihoods.create(trainSamples.rows, 1, CV_64FC1); + Mat rotatedCenteredSample = covMatType != COV_MAT_GENERIC ? + centeredSample : centeredSample * covsRotateMats[clusterIndex]; - computeLogWeightDivDet(); + double Lval = 0; + for(int di = 0; di < dim; di++) + { + double w = invCovsEigenValues[clusterIndex].at(covMatType != COV_MAT_SPHERICAL ? di : 0); + double val = rotatedCenteredSample.at(di); + Lval += w * val * val; + } + CV_DbgAssert(!logWeightDivDet.empty()); + L.at(clusterIndex) = logWeightDivDet.at(clusterIndex) - 0.5 * Lval; - CV_DbgAssert(trainSamples.type() == CV_64FC1); - CV_DbgAssert(means.type() == CV_64FC1); + if(L.at(clusterIndex) > L.at(label)) + label = clusterIndex; + } - for(int sampleIndex = 0; sampleIndex < trainSamples.rows; sampleIndex++) - { - Mat sampleProbs = trainProbs.row(sampleIndex); - Vec2d res = computeProbabilities(trainSamples.row(sampleIndex), &sampleProbs); - trainLogLikelihoods.at(sampleIndex) = res[0]; - trainLabels.at(sampleIndex) = static_cast(res[1]); - } -} + double maxLVal = L.at(label); + double expDiffSum = 0; + for( i = 0; i < L.cols; i++ ) + { + double v = std::exp(L.at(i) - maxLVal); + L.at(i) = v; + expDiffSum += v; // sum_j(exp(L_ij - L_iq)) + } -void EM::mStep() -{ - // Update means_k, covs_k and weights_k from probs_ik - int dim = trainSamples.cols; + if(probs) + L.convertTo(*probs, ptype, 1./expDiffSum); - // Update weights - // not normalized first - reduce(trainProbs, weights, 0, CV_REDUCE_SUM); + Vec2d res; + res[0] = std::log(expDiffSum) + maxLVal - 0.5 * dim * CV_LOG2PI; + res[1] = label; - // Update means - means.create(nclusters, dim, CV_64FC1); - means = Scalar(0); + return res; + } - const double minPosWeight = trainSamples.rows * DBL_EPSILON; - double minWeight = DBL_MAX; - int minWeightClusterIndex = -1; - for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) + void eStep() { - if(weights.at(clusterIndex) <= minPosWeight) - continue; + // Compute probs_ik from means_k, covs_k and weights_k. + trainProbs.create(trainSamples.rows, params.nclusters, CV_64FC1); + trainLabels.create(trainSamples.rows, 1, CV_32SC1); + trainLogLikelihoods.create(trainSamples.rows, 1, CV_64FC1); - if(weights.at(clusterIndex) < minWeight) - { - minWeight = weights.at(clusterIndex); - minWeightClusterIndex = clusterIndex; - } + computeLogWeightDivDet(); + + CV_DbgAssert(trainSamples.type() == CV_64FC1); + CV_DbgAssert(means.type() == CV_64FC1); - Mat clusterMean = means.row(clusterIndex); for(int sampleIndex = 0; sampleIndex < trainSamples.rows; sampleIndex++) - clusterMean += trainProbs.at(sampleIndex, clusterIndex) * trainSamples.row(sampleIndex); - clusterMean /= weights.at(clusterIndex); + { + Mat sampleProbs = trainProbs.row(sampleIndex); + Vec2d res = computeProbabilities(trainSamples.row(sampleIndex), &sampleProbs, CV_64F); + trainLogLikelihoods.at(sampleIndex) = res[0]; + trainLabels.at(sampleIndex) = static_cast(res[1]); + } } - // Update covsEigenValues and invCovsEigenValues - covs.resize(nclusters); - covsEigenValues.resize(nclusters); - if(covMatType == EM::COV_MAT_GENERIC) - covsRotateMats.resize(nclusters); - invCovsEigenValues.resize(nclusters); - for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) + void mStep() { - if(weights.at(clusterIndex) <= minPosWeight) - continue; - - if(covMatType != EM::COV_MAT_SPHERICAL) - covsEigenValues[clusterIndex].create(1, dim, CV_64FC1); - else - covsEigenValues[clusterIndex].create(1, 1, CV_64FC1); - - if(covMatType == EM::COV_MAT_GENERIC) - covs[clusterIndex].create(dim, dim, CV_64FC1); + // Update means_k, covs_k and weights_k from probs_ik + int nclusters = params.nclusters; + int covMatType = params.covMatType; + int dim = trainSamples.cols; + + // Update weights + // not normalized first + reduce(trainProbs, weights, 0, CV_REDUCE_SUM); + + // Update means + means.create(nclusters, dim, CV_64FC1); + means = Scalar(0); + + const double minPosWeight = trainSamples.rows * DBL_EPSILON; + double minWeight = DBL_MAX; + int minWeightClusterIndex = -1; + for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) + { + if(weights.at(clusterIndex) <= minPosWeight) + continue; - Mat clusterCov = covMatType != EM::COV_MAT_GENERIC ? - covsEigenValues[clusterIndex] : covs[clusterIndex]; + if(weights.at(clusterIndex) < minWeight) + { + minWeight = weights.at(clusterIndex); + minWeightClusterIndex = clusterIndex; + } - clusterCov = Scalar(0); + Mat clusterMean = means.row(clusterIndex); + for(int sampleIndex = 0; sampleIndex < trainSamples.rows; sampleIndex++) + clusterMean += trainProbs.at(sampleIndex, clusterIndex) * trainSamples.row(sampleIndex); + clusterMean /= weights.at(clusterIndex); + } - Mat centeredSample; - for(int sampleIndex = 0; sampleIndex < trainSamples.rows; sampleIndex++) + // Update covsEigenValues and invCovsEigenValues + covs.resize(nclusters); + covsEigenValues.resize(nclusters); + if(covMatType == COV_MAT_GENERIC) + covsRotateMats.resize(nclusters); + invCovsEigenValues.resize(nclusters); + for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) { - centeredSample = trainSamples.row(sampleIndex) - means.row(clusterIndex); + if(weights.at(clusterIndex) <= minPosWeight) + continue; - if(covMatType == EM::COV_MAT_GENERIC) - clusterCov += trainProbs.at(sampleIndex, clusterIndex) * centeredSample.t() * centeredSample; + if(covMatType != COV_MAT_SPHERICAL) + covsEigenValues[clusterIndex].create(1, dim, CV_64FC1); else + covsEigenValues[clusterIndex].create(1, 1, CV_64FC1); + + if(covMatType == COV_MAT_GENERIC) + covs[clusterIndex].create(dim, dim, CV_64FC1); + + Mat clusterCov = covMatType != COV_MAT_GENERIC ? + covsEigenValues[clusterIndex] : covs[clusterIndex]; + + clusterCov = Scalar(0); + + Mat centeredSample; + for(int sampleIndex = 0; sampleIndex < trainSamples.rows; sampleIndex++) { - double p = trainProbs.at(sampleIndex, clusterIndex); - for(int di = 0; di < dim; di++ ) + centeredSample = trainSamples.row(sampleIndex) - means.row(clusterIndex); + + if(covMatType == COV_MAT_GENERIC) + clusterCov += trainProbs.at(sampleIndex, clusterIndex) * centeredSample.t() * centeredSample; + else { - double val = centeredSample.at(di); - clusterCov.at(covMatType != EM::COV_MAT_SPHERICAL ? di : 0) += p*val*val; + double p = trainProbs.at(sampleIndex, clusterIndex); + for(int di = 0; di < dim; di++ ) + { + double val = centeredSample.at(di); + clusterCov.at(covMatType != COV_MAT_SPHERICAL ? di : 0) += p*val*val; + } } } - } - if(covMatType == EM::COV_MAT_SPHERICAL) - clusterCov /= dim; + if(covMatType == COV_MAT_SPHERICAL) + clusterCov /= dim; + + clusterCov /= weights.at(clusterIndex); + + // Update covsRotateMats for COV_MAT_GENERIC only + if(covMatType == COV_MAT_GENERIC) + { + SVD svd(covs[clusterIndex], SVD::MODIFY_A + SVD::FULL_UV); + covsEigenValues[clusterIndex] = svd.w; + covsRotateMats[clusterIndex] = svd.u; + } - clusterCov /= weights.at(clusterIndex); + max(covsEigenValues[clusterIndex], minEigenValue, covsEigenValues[clusterIndex]); - // Update covsRotateMats for EM::COV_MAT_GENERIC only - if(covMatType == EM::COV_MAT_GENERIC) + // update invCovsEigenValues + invCovsEigenValues[clusterIndex] = 1./covsEigenValues[clusterIndex]; + } + + for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) { - SVD svd(covs[clusterIndex], SVD::MODIFY_A + SVD::FULL_UV); - covsEigenValues[clusterIndex] = svd.w; - covsRotateMats[clusterIndex] = svd.u; + if(weights.at(clusterIndex) <= minPosWeight) + { + Mat clusterMean = means.row(clusterIndex); + means.row(minWeightClusterIndex).copyTo(clusterMean); + covs[minWeightClusterIndex].copyTo(covs[clusterIndex]); + covsEigenValues[minWeightClusterIndex].copyTo(covsEigenValues[clusterIndex]); + if(covMatType == COV_MAT_GENERIC) + covsRotateMats[minWeightClusterIndex].copyTo(covsRotateMats[clusterIndex]); + invCovsEigenValues[minWeightClusterIndex].copyTo(invCovsEigenValues[clusterIndex]); + } } - max(covsEigenValues[clusterIndex], minEigenValue, covsEigenValues[clusterIndex]); + // Normalize weights + weights /= trainSamples.rows; + } - // update invCovsEigenValues - invCovsEigenValues[clusterIndex] = 1./covsEigenValues[clusterIndex]; + void write_params(FileStorage& fs) const + { + fs << "nclusters" << params.nclusters; + fs << "cov_mat_type" << (params.covMatType == COV_MAT_SPHERICAL ? String("spherical") : + params.covMatType == COV_MAT_DIAGONAL ? String("diagonal") : + params.covMatType == COV_MAT_GENERIC ? String("generic") : + format("unknown_%d", params.covMatType)); + writeTermCrit(fs, params.termCrit); } - for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) + void write(FileStorage& fs) const { - if(weights.at(clusterIndex) <= minPosWeight) - { - Mat clusterMean = means.row(clusterIndex); - means.row(minWeightClusterIndex).copyTo(clusterMean); - covs[minWeightClusterIndex].copyTo(covs[clusterIndex]); - covsEigenValues[minWeightClusterIndex].copyTo(covsEigenValues[clusterIndex]); - if(covMatType == EM::COV_MAT_GENERIC) - covsRotateMats[minWeightClusterIndex].copyTo(covsRotateMats[clusterIndex]); - invCovsEigenValues[minWeightClusterIndex].copyTo(invCovsEigenValues[clusterIndex]); - } + fs << "training_params" << "{"; + write_params(fs); + fs << "}"; + fs << "weights" << weights; + fs << "means" << means; + + size_t i, n = covs.size(); + + fs << "covs" << "["; + for( i = 0; i < n; i++ ) + fs << covs[i]; + fs << "]"; + } + + void read_params(const FileNode& fn) + { + Params _params; + _params.nclusters = (int)fn["nclusters"]; + String s = (String)fn["cov_mat_type"]; + _params.covMatType = s == "spherical" ? COV_MAT_SPHERICAL : + s == "diagonal" ? COV_MAT_DIAGONAL : + s == "generic" ? COV_MAT_GENERIC : -1; + CV_Assert(_params.covMatType >= 0); + _params.termCrit = readTermCrit(fn); + setParams(_params); + } + + void read(const FileNode& fn) + { + clear(); + read_params(fn["training_params"]); + + fn["weights"] >> weights; + fn["means"] >> means; + + FileNode cfn = fn["covs"]; + FileNodeIterator cfn_it = cfn.begin(); + int i, n = (int)cfn.size(); + covs.resize(n); + + for( i = 0; i < n; i++, ++cfn_it ) + (*cfn_it) >> covs[i]; + + decomposeCovs(); + computeLogWeightDivDet(); } - // Normalize weights - weights /= trainSamples.rows; + Mat getWeights() const { return weights; } + Mat getMeans() const { return means; } + void getCovs(std::vector& _covs) const + { + _covs.resize(covs.size()); + std::copy(covs.begin(), covs.end(), _covs.begin()); + } + + Params params; + + // all inner matrices have type CV_64FC1 + Mat trainSamples; + Mat trainProbs; + Mat trainLogLikelihoods; + Mat trainLabels; + + Mat weights; + Mat means; + std::vector covs; + + std::vector covsEigenValues; + std::vector covsRotateMats; + std::vector invCovsEigenValues; + Mat logWeightDivDet; +}; + + +Ptr EM::train(InputArray samples, OutputArray logLikelihoods, + OutputArray labels, OutputArray probs, + const EM::Params& params) +{ + Ptr em = makePtr(params); + if(!em->train_(samples, logLikelihoods, labels, probs)) + em.release(); + return em; } -void EM::read(const FileNode& fn) +Ptr EM::train_startWithE(InputArray samples, InputArray means0, + InputArray covs0, InputArray weights0, + OutputArray logLikelihoods, OutputArray labels, + OutputArray probs, const EM::Params& params) { - Algorithm::read(fn); + Ptr em = makePtr(params); + if(!em->trainE(samples, means0, covs0, weights0, logLikelihoods, labels, probs)) + em.release(); + return em; +} - decomposeCovs(); - computeLogWeightDivDet(); +Ptr EM::train_startWithM(InputArray samples, InputArray probs0, + OutputArray logLikelihoods, OutputArray labels, + OutputArray probs, const EM::Params& params) +{ + Ptr em = makePtr(params); + if(!em->trainM(samples, probs0, logLikelihoods, labels, probs)) + em.release(); + return em; } +Ptr EM::create(const Params& params) +{ + return makePtr(params); +} + +} } // namespace cv /* End of file. */ diff --git a/modules/ml/src/ertrees.cpp b/modules/ml/src/ertrees.cpp deleted file mode 100644 index 0201deb0c6..0000000000 --- a/modules/ml/src/ertrees.cpp +++ /dev/null @@ -1,1859 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// - - IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. - - By downloading, copying, installing or using the software you agree to this license. - If you do not agree to this license, do not download, install, - copy or use the software. - - - Intel License Agreement - - Copyright (C) 2000, Intel Corporation, all rights reserved. - Third party copyrights are property of their respective owners. - - Redistribution and use in source and binary forms, with or without modification, - are permitted provided that the following conditions are met: - - * Redistribution's of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistribution's in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * The name of Intel Corporation may not be used to endorse or promote products - derived from this software without specific prior written permission. - - This software is provided by the copyright holders and contributors "as is" and - any express or implied warranties, including, but not limited to, the implied - warranties of merchantability and fitness for a particular purpose are disclaimed. - In no event shall the Intel Corporation or contributors be liable for any direct, - indirect, incidental, special, exemplary, or consequential damages - (including, but not limited to, procurement of substitute goods or services; - loss of use, data, or profits; or business interruption) however caused - and on any theory of liability, whether in contract, strict liability, - or tort (including negligence or otherwise) arising in any way out of - the use of this software, even if advised of the possibility of such damage. - -M*/ - -#include "precomp.hpp" - -static const float ord_nan = FLT_MAX*0.5f; -static const int min_block_size = 1 << 16; -static const int block_size_delta = 1 << 10; - -template -class LessThanPtr -{ -public: - bool operator()(T* a, T* b) const { return *a < *b; } -}; - -class LessThanPairs -{ -public: - bool operator()(const CvPair16u32s& a, const CvPair16u32s& b) const { return *a.i < *b.i; } -}; - -void CvERTreeTrainData::set_data( const CvMat* _train_data, int _tflag, - const CvMat* _responses, const CvMat* _var_idx, const CvMat* _sample_idx, - const CvMat* _var_type, const CvMat* _missing_mask, const CvDTreeParams& _params, - bool _shared, bool _add_labels, bool _update_data ) -{ - CvMat* sample_indices = 0; - CvMat* var_type0 = 0; - CvMat* tmp_map = 0; - int** int_ptr = 0; - CvPair16u32s* pair16u32s_ptr = 0; - CvDTreeTrainData* data = 0; - float *_fdst = 0; - int *_idst = 0; - unsigned short* udst = 0; - int* idst = 0; - - CV_FUNCNAME( "CvERTreeTrainData::set_data" ); - - __BEGIN__; - - int sample_all = 0, r_type, cv_n; - int total_c_count = 0; - int tree_block_size, temp_block_size, max_split_size, nv_size, cv_size = 0; - int ds_step, dv_step, ms_step = 0, mv_step = 0; // {data|mask}{sample|var}_step - int vi, i, size; - char err[100]; - const int *sidx = 0, *vidx = 0; - - uint64 effective_buf_size = 0; - int effective_buf_height = 0, effective_buf_width = 0; - - if ( _params.use_surrogates ) - CV_ERROR(CV_StsBadArg, "CvERTrees do not support surrogate splits"); - - if( _update_data && data_root ) - { - CV_ERROR(CV_StsBadArg, "CvERTrees do not support data update"); - } - - clear(); - - var_all = 0; - rng = &cv::theRNG(); - - CV_CALL( set_params( _params )); - - // check parameter types and sizes - CV_CALL( cvCheckTrainData( _train_data, _tflag, _missing_mask, &var_all, &sample_all )); - - train_data = _train_data; - responses = _responses; - missing_mask = _missing_mask; - - if( _tflag == CV_ROW_SAMPLE ) - { - ds_step = _train_data->step/CV_ELEM_SIZE(_train_data->type); - dv_step = 1; - if( _missing_mask ) - ms_step = _missing_mask->step, mv_step = 1; - } - else - { - dv_step = _train_data->step/CV_ELEM_SIZE(_train_data->type); - ds_step = 1; - if( _missing_mask ) - mv_step = _missing_mask->step, ms_step = 1; - } - tflag = _tflag; - - sample_count = sample_all; - var_count = var_all; - - if( _sample_idx ) - { - CV_CALL( sample_indices = cvPreprocessIndexArray( _sample_idx, sample_all )); - sidx = sample_indices->data.i; - sample_count = sample_indices->rows + sample_indices->cols - 1; - } - - if( _var_idx ) - { - CV_CALL( var_idx = cvPreprocessIndexArray( _var_idx, var_all )); - vidx = var_idx->data.i; - var_count = var_idx->rows + var_idx->cols - 1; - } - - if( !CV_IS_MAT(_responses) || - (CV_MAT_TYPE(_responses->type) != CV_32SC1 && - CV_MAT_TYPE(_responses->type) != CV_32FC1) || - (_responses->rows != 1 && _responses->cols != 1) || - _responses->rows + _responses->cols - 1 != sample_all ) - CV_ERROR( CV_StsBadArg, "The array of _responses must be an integer or " - "floating-point vector containing as many elements as " - "the total number of samples in the training data matrix" ); - - is_buf_16u = false; - if ( sample_count < 65536 ) - is_buf_16u = true; - - r_type = CV_VAR_CATEGORICAL; - if( _var_type ) - CV_CALL( var_type0 = cvPreprocessVarType( _var_type, var_idx, var_count, &r_type )); - - CV_CALL( var_type = cvCreateMat( 1, var_count+2, CV_32SC1 )); - - cat_var_count = 0; - ord_var_count = -1; - - is_classifier = r_type == CV_VAR_CATEGORICAL; - - // step 0. calc the number of categorical vars - for( vi = 0; vi < var_count; vi++ ) - { - char vt = var_type0 ? var_type0->data.ptr[vi] : CV_VAR_ORDERED; - var_type->data.i[vi] = vt == CV_VAR_CATEGORICAL ? cat_var_count++ : ord_var_count--; - } - - ord_var_count = ~ord_var_count; - cv_n = params.cv_folds; - // set the two last elements of var_type array to be able - // to locate responses and cross-validation labels using - // the corresponding get_* functions. - var_type->data.i[var_count] = cat_var_count; - var_type->data.i[var_count+1] = cat_var_count+1; - - // in case of single ordered predictor we need dummy cv_labels - // for safe split_node_data() operation - have_labels = cv_n > 0 || (ord_var_count == 1 && cat_var_count == 0) || _add_labels; - - work_var_count = cat_var_count + (is_classifier ? 1 : 0) + (have_labels ? 1 : 0); - - shared = _shared; - buf_count = shared ? 2 : 1; - - buf_size = -1; // the member buf_size is obsolete - - effective_buf_size = (uint64)(work_var_count + 1)*(uint64)sample_count * buf_count; // this is the total size of "CvMat buf" to be allocated - effective_buf_width = sample_count; - effective_buf_height = work_var_count+1; - - if (effective_buf_width >= effective_buf_height) - effective_buf_height *= buf_count; - else - effective_buf_width *= buf_count; - - if ((uint64)effective_buf_width * (uint64)effective_buf_height != effective_buf_size) - { - CV_Error(CV_StsBadArg, "The memory buffer cannot be allocated since its size exceeds integer fields limit"); - } - - if ( is_buf_16u ) - { - CV_CALL( buf = cvCreateMat( effective_buf_height, effective_buf_width, CV_16UC1 )); - CV_CALL( pair16u32s_ptr = (CvPair16u32s*)cvAlloc( sample_count*sizeof(pair16u32s_ptr[0]) )); - } - else - { - CV_CALL( buf = cvCreateMat( effective_buf_height, effective_buf_width, CV_32SC1 )); - CV_CALL( int_ptr = (int**)cvAlloc( sample_count*sizeof(int_ptr[0]) )); - } - - size = is_classifier ? cat_var_count+1 : cat_var_count; - size = !size ? 1 : size; - CV_CALL( cat_count = cvCreateMat( 1, size, CV_32SC1 )); - CV_CALL( cat_ofs = cvCreateMat( 1, size, CV_32SC1 )); - - size = is_classifier ? (cat_var_count + 1)*params.max_categories : cat_var_count*params.max_categories; - size = !size ? 1 : size; - CV_CALL( cat_map = cvCreateMat( 1, size, CV_32SC1 )); - - // now calculate the maximum size of split, - // create memory storage that will keep nodes and splits of the decision tree - // allocate root node and the buffer for the whole training data - max_split_size = cvAlign(sizeof(CvDTreeSplit) + - (MAX(0,sample_count - 33)/32)*sizeof(int),sizeof(void*)); - tree_block_size = MAX((int)sizeof(CvDTreeNode)*8, max_split_size); - tree_block_size = MAX(tree_block_size + block_size_delta, min_block_size); - CV_CALL( tree_storage = cvCreateMemStorage( tree_block_size )); - CV_CALL( node_heap = cvCreateSet( 0, sizeof(*node_heap), sizeof(CvDTreeNode), tree_storage )); - - nv_size = var_count*sizeof(int); - nv_size = cvAlign(MAX( nv_size, (int)sizeof(CvSetElem) ), sizeof(void*)); - - temp_block_size = nv_size; - - if( cv_n ) - { - if( sample_count < cv_n*MAX(params.min_sample_count,10) ) - CV_ERROR( CV_StsOutOfRange, - "The many folds in cross-validation for such a small dataset" ); - - cv_size = cvAlign( cv_n*(sizeof(int) + sizeof(double)*2), sizeof(double) ); - temp_block_size = MAX(temp_block_size, cv_size); - } - - temp_block_size = MAX( temp_block_size + block_size_delta, min_block_size ); - CV_CALL( temp_storage = cvCreateMemStorage( temp_block_size )); - CV_CALL( nv_heap = cvCreateSet( 0, sizeof(*nv_heap), nv_size, temp_storage )); - if( cv_size ) - CV_CALL( cv_heap = cvCreateSet( 0, sizeof(*cv_heap), cv_size, temp_storage )); - - CV_CALL( data_root = new_node( 0, sample_count, 0, 0 )); - - max_c_count = 1; - - _fdst = 0; - _idst = 0; - if (ord_var_count) - _fdst = (float*)cvAlloc(sample_count*sizeof(_fdst[0])); - if (is_buf_16u && (cat_var_count || is_classifier)) - _idst = (int*)cvAlloc(sample_count*sizeof(_idst[0])); - - // transform the training data to convenient representation - for( vi = 0; vi <= var_count; vi++ ) - { - int ci; - const uchar* mask = 0; - int m_step = 0, step; - const int* idata = 0; - const float* fdata = 0; - int num_valid = 0; - - if( vi < var_count ) // analyze i-th input variable - { - int vi0 = vidx ? vidx[vi] : vi; - ci = get_var_type(vi); - step = ds_step; m_step = ms_step; - if( CV_MAT_TYPE(_train_data->type) == CV_32SC1 ) - idata = _train_data->data.i + vi0*dv_step; - else - fdata = _train_data->data.fl + vi0*dv_step; - if( _missing_mask ) - mask = _missing_mask->data.ptr + vi0*mv_step; - } - else // analyze _responses - { - ci = cat_var_count; - step = CV_IS_MAT_CONT(_responses->type) ? - 1 : _responses->step / CV_ELEM_SIZE(_responses->type); - if( CV_MAT_TYPE(_responses->type) == CV_32SC1 ) - idata = _responses->data.i; - else - fdata = _responses->data.fl; - } - - if( (vi < var_count && ci>=0) || - (vi == var_count && is_classifier) ) // process categorical variable or response - { - int c_count, prev_label; - int* c_map; - - if (is_buf_16u) - udst = (unsigned short*)(buf->data.s + ci*sample_count); - else - idst = buf->data.i + ci*sample_count; - - // copy data - for( i = 0; i < sample_count; i++ ) - { - int val = INT_MAX, si = sidx ? sidx[i] : i; - if( !mask || !mask[(size_t)si*m_step] ) - { - if( idata ) - val = idata[(size_t)si*step]; - else - { - float t = fdata[(size_t)si*step]; - val = cvRound(t); - if( val != t ) - { - sprintf( err, "%d-th value of %d-th (categorical) " - "variable is not an integer", i, vi ); - CV_ERROR( CV_StsBadArg, err ); - } - } - - if( val == INT_MAX ) - { - sprintf( err, "%d-th value of %d-th (categorical) " - "variable is too large", i, vi ); - CV_ERROR( CV_StsBadArg, err ); - } - num_valid++; - } - if (is_buf_16u) - { - _idst[i] = val; - pair16u32s_ptr[i].u = udst + i; - pair16u32s_ptr[i].i = _idst + i; - } - else - { - idst[i] = val; - int_ptr[i] = idst + i; - } - } - - c_count = num_valid > 0; - - if (is_buf_16u) - { - std::sort(pair16u32s_ptr, pair16u32s_ptr + sample_count, LessThanPairs()); - // count the categories - for( i = 1; i < num_valid; i++ ) - if (*pair16u32s_ptr[i].i != *pair16u32s_ptr[i-1].i) - c_count ++ ; - } - else - { - std::sort(int_ptr, int_ptr + sample_count, LessThanPtr()); - // count the categories - for( i = 1; i < num_valid; i++ ) - c_count += *int_ptr[i] != *int_ptr[i-1]; - } - - if( vi > 0 ) - max_c_count = MAX( max_c_count, c_count ); - cat_count->data.i[ci] = c_count; - cat_ofs->data.i[ci] = total_c_count; - - // resize cat_map, if need - if( cat_map->cols < total_c_count + c_count ) - { - tmp_map = cat_map; - CV_CALL( cat_map = cvCreateMat( 1, - MAX(cat_map->cols*3/2,total_c_count+c_count), CV_32SC1 )); - for( i = 0; i < total_c_count; i++ ) - cat_map->data.i[i] = tmp_map->data.i[i]; - cvReleaseMat( &tmp_map ); - } - - c_map = cat_map->data.i + total_c_count; - total_c_count += c_count; - - c_count = -1; - if (is_buf_16u) - { - // compact the class indices and build the map - prev_label = ~*pair16u32s_ptr[0].i; - for( i = 0; i < num_valid; i++ ) - { - int cur_label = *pair16u32s_ptr[i].i; - if( cur_label != prev_label ) - c_map[++c_count] = prev_label = cur_label; - *pair16u32s_ptr[i].u = (unsigned short)c_count; - } - // replace labels for missing values with 65535 - for( ; i < sample_count; i++ ) - *pair16u32s_ptr[i].u = 65535; - } - else - { - // compact the class indices and build the map - prev_label = ~*int_ptr[0]; - for( i = 0; i < num_valid; i++ ) - { - int cur_label = *int_ptr[i]; - if( cur_label != prev_label ) - c_map[++c_count] = prev_label = cur_label; - *int_ptr[i] = c_count; - } - // replace labels for missing values with -1 - for( ; i < sample_count; i++ ) - *int_ptr[i] = -1; - } - } - else if( ci < 0 ) // process ordered variable - { - for( i = 0; i < sample_count; i++ ) - { - float val = ord_nan; - int si = sidx ? sidx[i] : i; - if( !mask || !mask[(size_t)si*m_step] ) - { - if( idata ) - val = (float)idata[(size_t)si*step]; - else - val = fdata[(size_t)si*step]; - - if( fabs(val) >= ord_nan ) - { - sprintf( err, "%d-th value of %d-th (ordered) " - "variable (=%g) is too large", i, vi, val ); - CV_ERROR( CV_StsBadArg, err ); - } - num_valid++; - } - } - } - if( vi < var_count ) - data_root->set_num_valid(vi, num_valid); - } - - // set sample labels - if (is_buf_16u) - udst = (unsigned short*)(buf->data.s + get_work_var_count()*sample_count); - else - idst = buf->data.i + get_work_var_count()*sample_count; - - for (i = 0; i < sample_count; i++) - { - if (udst) - udst[i] = sidx ? (unsigned short)sidx[i] : (unsigned short)i; - else - idst[i] = sidx ? sidx[i] : i; - } - - if( cv_n ) - { - unsigned short* usdst = 0; - int* idst2 = 0; - - if (is_buf_16u) - { - usdst = (unsigned short*)(buf->data.s + (get_work_var_count()-1)*sample_count); - for( i = vi = 0; i < sample_count; i++ ) - { - usdst[i] = (unsigned short)vi++; - vi &= vi < cv_n ? -1 : 0; - } - - for( i = 0; i < sample_count; i++ ) - { - int a = (*rng)(sample_count); - int b = (*rng)(sample_count); - unsigned short unsh = (unsigned short)vi; - CV_SWAP( usdst[a], usdst[b], unsh ); - } - } - else - { - idst2 = buf->data.i + (get_work_var_count()-1)*sample_count; - for( i = vi = 0; i < sample_count; i++ ) - { - idst2[i] = vi++; - vi &= vi < cv_n ? -1 : 0; - } - - for( i = 0; i < sample_count; i++ ) - { - int a = (*rng)(sample_count); - int b = (*rng)(sample_count); - CV_SWAP( idst2[a], idst2[b], vi ); - } - } - } - - if ( cat_map ) - cat_map->cols = MAX( total_c_count, 1 ); - - max_split_size = cvAlign(sizeof(CvDTreeSplit) + - (MAX(0,max_c_count - 33)/32)*sizeof(int),sizeof(void*)); - CV_CALL( split_heap = cvCreateSet( 0, sizeof(*split_heap), max_split_size, tree_storage )); - - have_priors = is_classifier && params.priors; - if( is_classifier ) - { - int m = get_num_classes(); - double sum = 0; - CV_CALL( priors = cvCreateMat( 1, m, CV_64F )); - for( i = 0; i < m; i++ ) - { - double val = have_priors ? params.priors[i] : 1.; - if( val <= 0 ) - CV_ERROR( CV_StsOutOfRange, "Every class weight should be positive" ); - priors->data.db[i] = val; - sum += val; - } - - // normalize weights - if( have_priors ) - cvScale( priors, priors, 1./sum ); - - CV_CALL( priors_mult = cvCloneMat( priors )); - CV_CALL( counts = cvCreateMat( 1, m, CV_32SC1 )); - } - - CV_CALL( direction = cvCreateMat( 1, sample_count, CV_8UC1 )); - CV_CALL( split_buf = cvCreateMat( 1, sample_count, CV_32SC1 )); - - __END__; - - if( data ) - delete data; - - if (_fdst) - cvFree( &_fdst ); - if (_idst) - cvFree( &_idst ); - cvFree( &int_ptr ); - cvReleaseMat( &var_type0 ); - cvReleaseMat( &sample_indices ); - cvReleaseMat( &tmp_map ); -} - -void CvERTreeTrainData::get_ord_var_data( CvDTreeNode* n, int vi, float* ord_values_buf, int* missing_buf, - const float** ord_values, const int** missing, int* sample_indices_buf ) -{ - int vidx = var_idx ? var_idx->data.i[vi] : vi; - int node_sample_count = n->sample_count; - // may use missing_buf as buffer for sample indices! - const int* sample_indices = get_sample_indices(n, sample_indices_buf ? sample_indices_buf : missing_buf); - - int td_step = train_data->step/CV_ELEM_SIZE(train_data->type); - int m_step = missing_mask ? missing_mask->step/CV_ELEM_SIZE(missing_mask->type) : 1; - if( tflag == CV_ROW_SAMPLE ) - { - for( int i = 0; i < node_sample_count; i++ ) - { - int idx = sample_indices[i]; - missing_buf[i] = missing_mask ? *(missing_mask->data.ptr + idx * m_step + vi) : 0; - ord_values_buf[i] = *(train_data->data.fl + idx * td_step + vidx); - } - } - else - for( int i = 0; i < node_sample_count; i++ ) - { - int idx = sample_indices[i]; - missing_buf[i] = missing_mask ? *(missing_mask->data.ptr + vi* m_step + idx) : 0; - ord_values_buf[i] = *(train_data->data.fl + vidx* td_step + idx); - } - *ord_values = ord_values_buf; - *missing = missing_buf; -} - - -const int* CvERTreeTrainData::get_sample_indices( CvDTreeNode* n, int* indices_buf ) -{ - return get_cat_var_data( n, var_count + (is_classifier ? 1 : 0) + (have_labels ? 1 : 0), indices_buf ); -} - - -const int* CvERTreeTrainData::get_cv_labels( CvDTreeNode* n, int* labels_buf ) -{ - if (have_labels) - return get_cat_var_data( n, var_count + (is_classifier ? 1 : 0), labels_buf ); - return 0; -} - - -const int* CvERTreeTrainData::get_cat_var_data( CvDTreeNode* n, int vi, int* cat_values_buf ) -{ - int ci = get_var_type( vi); - const int* cat_values = 0; - if( !is_buf_16u ) - cat_values = buf->data.i + n->buf_idx*get_length_subbuf() + ci*sample_count + n->offset; - else { - const unsigned short* short_values = (const unsigned short*)(buf->data.s + n->buf_idx*get_length_subbuf() + - ci*sample_count + n->offset); - for( int i = 0; i < n->sample_count; i++ ) - cat_values_buf[i] = short_values[i]; - cat_values = cat_values_buf; - } - return cat_values; -} - -void CvERTreeTrainData::get_vectors( const CvMat* _subsample_idx, - float* values, uchar* missing, - float* _responses, bool get_class_idx ) -{ - CvMat* subsample_idx = 0; - CvMat* subsample_co = 0; - - cv::AutoBuffer inn_buf(sample_count*(sizeof(float) + sizeof(int))); - - CV_FUNCNAME( "CvERTreeTrainData::get_vectors" ); - - __BEGIN__; - - int i, vi, total = sample_count, count = total, cur_ofs = 0; - int* sidx = 0; - int* co = 0; - - if( _subsample_idx ) - { - CV_CALL( subsample_idx = cvPreprocessIndexArray( _subsample_idx, sample_count )); - sidx = subsample_idx->data.i; - CV_CALL( subsample_co = cvCreateMat( 1, sample_count*2, CV_32SC1 )); - co = subsample_co->data.i; - cvZero( subsample_co ); - count = subsample_idx->cols + subsample_idx->rows - 1; - for( i = 0; i < count; i++ ) - co[sidx[i]*2]++; - for( i = 0; i < total; i++ ) - { - int count_i = co[i*2]; - if( count_i ) - { - co[i*2+1] = cur_ofs*var_count; - cur_ofs += count_i; - } - } - } - - if( missing ) - memset( missing, 1, count*var_count ); - - for( vi = 0; vi < var_count; vi++ ) - { - int ci = get_var_type(vi); - if( ci >= 0 ) // categorical - { - float* dst = values + vi; - uchar* m = missing ? missing + vi : 0; - int* lbls_buf = (int*)(uchar*)inn_buf; - const int* src = get_cat_var_data(data_root, vi, lbls_buf); - - for( i = 0; i < count; i++, dst += var_count ) - { - int idx = sidx ? sidx[i] : i; - int val = src[idx]; - *dst = (float)val; - if( m ) - { - *m = (!is_buf_16u && val < 0) || (is_buf_16u && (val == 65535)); - m += var_count; - } - } - } - else // ordered - { - int* mis_buf = (int*)(uchar*)inn_buf; - const float *dst = 0; - const int* mis = 0; - get_ord_var_data(data_root, vi, values + vi, mis_buf, &dst, &mis, 0); - for (int si = 0; si < total; si++) - *(missing + vi + si) = mis[si] == 0 ? 0 : 1; - } - } - - // copy responses - if( _responses ) - { - if( is_classifier ) - { - int* lbls_buf = (int*)(uchar*)inn_buf; - const int* src = get_class_labels(data_root, lbls_buf); - for( i = 0; i < count; i++ ) - { - int idx = sidx ? sidx[i] : i; - int val = get_class_idx ? src[idx] : - cat_map->data.i[cat_ofs->data.i[cat_var_count]+src[idx]]; - _responses[i] = (float)val; - } - } - else - { - float* _values_buf = (float*)(uchar*)inn_buf; - int* sample_idx_buf = (int*)(_values_buf + sample_count); - const float* _values = get_ord_responses(data_root, _values_buf, sample_idx_buf); - for( i = 0; i < count; i++ ) - { - int idx = sidx ? sidx[i] : i; - _responses[i] = _values[idx]; - } - } - } - - __END__; - - cvReleaseMat( &subsample_idx ); - cvReleaseMat( &subsample_co ); -} - -CvDTreeNode* CvERTreeTrainData::subsample_data( const CvMat* _subsample_idx ) -{ - CvDTreeNode* root = 0; - - CV_FUNCNAME( "CvERTreeTrainData::subsample_data" ); - - __BEGIN__; - - if( !data_root ) - CV_ERROR( CV_StsError, "No training data has been set" ); - - if( !_subsample_idx ) - { - // make a copy of the root node - CvDTreeNode temp; - int i; - root = new_node( 0, 1, 0, 0 ); - temp = *root; - *root = *data_root; - root->num_valid = temp.num_valid; - if( root->num_valid ) - { - for( i = 0; i < var_count; i++ ) - root->num_valid[i] = data_root->num_valid[i]; - } - root->cv_Tn = temp.cv_Tn; - root->cv_node_risk = temp.cv_node_risk; - root->cv_node_error = temp.cv_node_error; - } - else - CV_ERROR( CV_StsError, "_subsample_idx must be null for extra-trees" ); - __END__; - - return root; -} - -double CvForestERTree::calc_node_dir( CvDTreeNode* node ) -{ - char* dir = (char*)data->direction->data.ptr; - int i, n = node->sample_count, vi = node->split->var_idx; - double L, R; - - assert( !node->split->inversed ); - - if( data->get_var_type(vi) >= 0 ) // split on categorical var - { - cv::AutoBuffer inn_buf(n*sizeof(int)*(!data->have_priors ? 1 : 2)); - int* labels_buf = (int*)(uchar*)inn_buf; - const int* labels = data->get_cat_var_data( node, vi, labels_buf ); - const int* subset = node->split->subset; - if( !data->have_priors ) - { - int sum = 0, sum_abs = 0; - - for( i = 0; i < n; i++ ) - { - int idx = labels[i]; - int d = ( ((idx >= 0)&&(!data->is_buf_16u)) || ((idx != 65535)&&(data->is_buf_16u)) ) ? - CV_DTREE_CAT_DIR(idx,subset) : 0; - sum += d; sum_abs += d & 1; - dir[i] = (char)d; - } - - R = (sum_abs + sum) >> 1; - L = (sum_abs - sum) >> 1; - } - else - { - const double* priors = data->priors_mult->data.db; - double sum = 0, sum_abs = 0; - int *responses_buf = labels_buf + n; - const int* responses = data->get_class_labels(node, responses_buf); - - for( i = 0; i < n; i++ ) - { - int idx = labels[i]; - double w = priors[responses[i]]; - int d = idx >= 0 ? CV_DTREE_CAT_DIR(idx,subset) : 0; - sum += d*w; sum_abs += (d & 1)*w; - dir[i] = (char)d; - } - - R = (sum_abs + sum) * 0.5; - L = (sum_abs - sum) * 0.5; - } - } - else // split on ordered var - { - float split_val = node->split->ord.c; - cv::AutoBuffer inn_buf(n*(sizeof(int)*(!data->have_priors ? 1 : 2) + sizeof(float))); - float* val_buf = (float*)(uchar*)inn_buf; - int* missing_buf = (int*)(val_buf + n); - const float* val = 0; - const int* missing = 0; - data->get_ord_var_data( node, vi, val_buf, missing_buf, &val, &missing, 0 ); - - if( !data->have_priors ) - { - L = R = 0; - for( i = 0; i < n; i++ ) - { - if ( missing[i] ) - dir[i] = (char)0; - else - { - if ( val[i] < split_val) - { - dir[i] = (char)-1; - L++; - } - else - { - dir[i] = (char)1; - R++; - } - } - } - } - else - { - const double* priors = data->priors_mult->data.db; - int* responses_buf = missing_buf + n; - const int* responses = data->get_class_labels(node, responses_buf); - L = R = 0; - for( i = 0; i < n; i++ ) - { - if ( missing[i] ) - dir[i] = (char)0; - else - { - double w = priors[responses[i]]; - if ( val[i] < split_val) - { - dir[i] = (char)-1; - L += w; - } - else - { - dir[i] = (char)1; - R += w; - } - } - } - } - } - - node->maxlr = MAX( L, R ); - return node->split->quality/(L + R); -} - -CvDTreeSplit* CvForestERTree::find_split_ord_class( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, - uchar* _ext_buf ) -{ - const float epsilon = FLT_EPSILON*2; - const float split_delta = (1 + FLT_EPSILON) * FLT_EPSILON; - - int n = node->sample_count; - int m = data->get_num_classes(); - - cv::AutoBuffer inn_buf; - if( !_ext_buf ) - inn_buf.allocate(n*(2*sizeof(int) + sizeof(float))); - uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; - float* values_buf = (float*)ext_buf; - int* missing_buf = (int*)(values_buf + n); - const float* values = 0; - const int* missing = 0; - data->get_ord_var_data( node, vi, values_buf, missing_buf, &values, &missing, 0 ); - int* responses_buf = missing_buf + n; - const int* responses = data->get_class_labels( node, responses_buf ); - - double lbest_val = 0, rbest_val = 0, best_val = init_quality, split_val = 0; - const double* priors = data->have_priors ? data->priors_mult->data.db : 0; - bool is_find_split = false; - float pmin, pmax; - int smpi = 0; - while ( missing[smpi] && (smpi < n) ) - smpi++; - assert(smpi < n); - - pmin = values[smpi]; - pmax = pmin; - for (; smpi < n; smpi++) - { - float ptemp = values[smpi]; - int ms = missing[smpi]; - if (ms) continue; - if ( ptemp < pmin) - pmin = ptemp; - if ( ptemp > pmax) - pmax = ptemp; - } - float fdiff = pmax-pmin; - if (fdiff > epsilon) - { - is_find_split = true; - cv::RNG* rng = data->rng; - split_val = pmin + rng->uniform(0.f, 1.f) * fdiff ; - if (split_val - pmin <= FLT_EPSILON) - split_val = pmin + split_delta; - if (pmax - split_val <= FLT_EPSILON) - split_val = pmax - split_delta; - - // calculate Gini index - if ( !priors ) - { - cv::AutoBuffer lrc(m*2); - int *lc = lrc, *rc = lc + m; - int L = 0, R = 0; - - // init arrays of class instance counters on both sides of the split - for(int i = 0; i < m; i++ ) - { - lc[i] = 0; - rc[i] = 0; - } - for( int si = 0; si < n; si++ ) - { - int r = responses[si]; - float val = values[si]; - int ms = missing[si]; - if (ms) continue; - if ( val < split_val ) - { - lc[r]++; - L++; - } - else - { - rc[r]++; - R++; - } - } - for (int i = 0; i < m; i++) - { - lbest_val += lc[i]*lc[i]; - rbest_val += rc[i]*rc[i]; - } - best_val = (lbest_val*R + rbest_val*L) / ((double)(L*R)); - } - else - { - cv::AutoBuffer lrc(m*2); - double *lc = lrc, *rc = lc + m; - double L = 0, R = 0; - - // init arrays of class instance counters on both sides of the split - for(int i = 0; i < m; i++ ) - { - lc[i] = 0; - rc[i] = 0; - } - for( int si = 0; si < n; si++ ) - { - int r = responses[si]; - float val = values[si]; - int ms = missing[si]; - double p = priors[r]; - if (ms) continue; - if ( val < split_val ) - { - lc[r] += p; - L += p; - } - else - { - rc[r] += p; - R += p; - } - } - for (int i = 0; i < m; i++) - { - lbest_val += lc[i]*lc[i]; - rbest_val += rc[i]*rc[i]; - } - best_val = (lbest_val*R + rbest_val*L) / (L*R); - } - - } - - CvDTreeSplit* split = 0; - if( is_find_split ) - { - split = _split ? _split : data->new_split_ord( 0, 0.0f, 0, 0, 0.0f ); - split->var_idx = vi; - split->ord.c = (float)split_val; - split->ord.split_point = -1; - split->inversed = 0; - split->quality = (float)best_val; - } - return split; -} - -CvDTreeSplit* CvForestERTree::find_split_cat_class( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, - uchar* _ext_buf ) -{ - int ci = data->get_var_type(vi); - int n = node->sample_count; - int cm = data->get_num_classes(); - int vm = data->cat_count->data.i[ci]; - double best_val = init_quality; - CvDTreeSplit *split = 0; - - if ( vm > 1 ) - { - cv::AutoBuffer inn_buf; - if( !_ext_buf ) - inn_buf.allocate(2*n); - int* ext_buf = _ext_buf ? (int*)_ext_buf : (int*)inn_buf; - - const int* labels = data->get_cat_var_data( node, vi, ext_buf ); - const int* responses = data->get_class_labels( node, ext_buf + n ); - - const double* priors = data->have_priors ? data->priors_mult->data.db : 0; - - // create random class mask - cv::AutoBuffer valid_cidx(vm); - for (int i = 0; i < vm; i++) - { - valid_cidx[i] = -1; - } - for (int si = 0; si < n; si++) - { - int c = labels[si]; - if ( ((c == 65535) && data->is_buf_16u) || ((c<0) && (!data->is_buf_16u)) ) - continue; - valid_cidx[c]++; - } - - int valid_ccount = 0; - for (int i = 0; i < vm; i++) - if (valid_cidx[i] >= 0) - { - valid_cidx[i] = valid_ccount; - valid_ccount++; - } - if (valid_ccount > 1) - { - CvRNG* rng = forest->get_rng(); - int l_cval_count = 1 + cvRandInt(rng) % (valid_ccount-1); - - CvMat* var_class_mask = cvCreateMat( 1, valid_ccount, CV_8UC1 ); - CvMat submask; - memset(var_class_mask->data.ptr, 0, valid_ccount*CV_ELEM_SIZE(var_class_mask->type)); - cvGetCols( var_class_mask, &submask, 0, l_cval_count ); - cvSet( &submask, cvScalar(1) ); - for (int i = 0; i < valid_ccount; i++) - { - uchar temp; - int i1 = cvRandInt( rng ) % valid_ccount; - int i2 = cvRandInt( rng ) % valid_ccount; - CV_SWAP( var_class_mask->data.ptr[i1], var_class_mask->data.ptr[i2], temp ); - } - - split = _split ? _split : data->new_split_cat( 0, -1.0f ); - split->var_idx = vi; - memset( split->subset, 0, (data->max_c_count + 31)/32 * sizeof(int)); - - // calculate Gini index - double lbest_val = 0, rbest_val = 0; - if( !priors ) - { - cv::AutoBuffer lrc(cm*2); - int *lc = lrc, *rc = lc + cm; - int L = 0, R = 0; - // init arrays of class instance counters on both sides of the split - for(int i = 0; i < cm; i++ ) - { - lc[i] = 0; - rc[i] = 0; - } - for( int si = 0; si < n; si++ ) - { - int r = responses[si]; - int var_class_idx = labels[si]; - if ( ((var_class_idx == 65535) && data->is_buf_16u) || ((var_class_idx<0) && (!data->is_buf_16u)) ) - continue; - int mask_class_idx = valid_cidx[var_class_idx]; - if (var_class_mask->data.ptr[mask_class_idx]) - { - lc[r]++; - L++; - split->subset[var_class_idx >> 5] |= 1 << (var_class_idx & 31); - } - else - { - rc[r]++; - R++; - } - } - for (int i = 0; i < cm; i++) - { - lbest_val += lc[i]*lc[i]; - rbest_val += rc[i]*rc[i]; - } - best_val = (lbest_val*R + rbest_val*L) / ((double)(L*R)); - } - else - { - cv::AutoBuffer lrc(cm*2); - int *lc = lrc, *rc = lc + cm; - double L = 0, R = 0; - // init arrays of class instance counters on both sides of the split - for(int i = 0; i < cm; i++ ) - { - lc[i] = 0; - rc[i] = 0; - } - for( int si = 0; si < n; si++ ) - { - int r = responses[si]; - int var_class_idx = labels[si]; - if ( ((var_class_idx == 65535) && data->is_buf_16u) || ((var_class_idx<0) && (!data->is_buf_16u)) ) - continue; - double p = priors[si]; - int mask_class_idx = valid_cidx[var_class_idx]; - - if (var_class_mask->data.ptr[mask_class_idx]) - { - lc[r]+=(int)p; - L+=p; - split->subset[var_class_idx >> 5] |= 1 << (var_class_idx & 31); - } - else - { - rc[r]+=(int)p; - R+=p; - } - } - for (int i = 0; i < cm; i++) - { - lbest_val += lc[i]*lc[i]; - rbest_val += rc[i]*rc[i]; - } - best_val = (lbest_val*R + rbest_val*L) / (L*R); - } - split->quality = (float)best_val; - - cvReleaseMat(&var_class_mask); - } - } - - return split; -} - -CvDTreeSplit* CvForestERTree::find_split_ord_reg( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, - uchar* _ext_buf ) -{ - const float epsilon = FLT_EPSILON*2; - const float split_delta = (1 + FLT_EPSILON) * FLT_EPSILON; - int n = node->sample_count; - cv::AutoBuffer inn_buf; - if( !_ext_buf ) - inn_buf.allocate(n*(2*sizeof(int) + 2*sizeof(float))); - uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; - float* values_buf = (float*)ext_buf; - int* missing_buf = (int*)(values_buf + n); - const float* values = 0; - const int* missing = 0; - data->get_ord_var_data( node, vi, values_buf, missing_buf, &values, &missing, 0 ); - float* responses_buf = (float*)(missing_buf + n); - int* sample_indices_buf = (int*)(responses_buf + n); - const float* responses = data->get_ord_responses( node, responses_buf, sample_indices_buf ); - - double best_val = init_quality, split_val = 0, lsum = 0, rsum = 0; - int L = 0, R = 0; - - bool is_find_split = false; - float pmin, pmax; - int smpi = 0; - while ( missing[smpi] && (smpi < n) ) - smpi++; - - assert(smpi < n); - - pmin = values[smpi]; - pmax = pmin; - for (; smpi < n; smpi++) - { - float ptemp = values[smpi]; - int m = missing[smpi]; - if (m) continue; - if ( ptemp < pmin) - pmin = ptemp; - if ( ptemp > pmax) - pmax = ptemp; - } - float fdiff = pmax-pmin; - if (fdiff > epsilon) - { - is_find_split = true; - cv::RNG* rng = data->rng; - split_val = pmin + rng->uniform(0.f, 1.f) * fdiff ; - if (split_val - pmin <= FLT_EPSILON) - split_val = pmin + split_delta; - if (pmax - split_val <= FLT_EPSILON) - split_val = pmax - split_delta; - - for (int si = 0; si < n; si++) - { - float r = responses[si]; - float val = values[si]; - int m = missing[si]; - if (m) continue; - if (val < split_val) - { - lsum += r; - L++; - } - else - { - rsum += r; - R++; - } - } - best_val = (lsum*lsum*R + rsum*rsum*L)/((double)L*R); - } - - CvDTreeSplit* split = 0; - if( is_find_split ) - { - split = _split ? _split : data->new_split_ord( 0, 0.0f, 0, 0, 0.0f ); - split->var_idx = vi; - split->ord.c = (float)split_val; - split->ord.split_point = -1; - split->inversed = 0; - split->quality = (float)best_val; - } - return split; -} - -CvDTreeSplit* CvForestERTree::find_split_cat_reg( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, - uchar* _ext_buf ) -{ - int ci = data->get_var_type(vi); - int n = node->sample_count; - int vm = data->cat_count->data.i[ci]; - double best_val = init_quality; - CvDTreeSplit *split = 0; - float lsum = 0, rsum = 0; - - if ( vm > 1 ) - { - int base_size = vm*sizeof(int); - cv::AutoBuffer inn_buf(base_size); - if( !_ext_buf ) - inn_buf.allocate(base_size + n*(2*sizeof(int) + sizeof(float))); - uchar* base_buf = (uchar*)inn_buf; - uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; - int* labels_buf = (int*)ext_buf; - const int* labels = data->get_cat_var_data( node, vi, labels_buf ); - float* responses_buf = (float*)(labels_buf + n); - int* sample_indices_buf = (int*)(responses_buf + n); - const float* responses = data->get_ord_responses( node, responses_buf, sample_indices_buf ); - - // create random class mask - int *valid_cidx = (int*)base_buf; - for (int i = 0; i < vm; i++) - { - valid_cidx[i] = -1; - } - for (int si = 0; si < n; si++) - { - int c = labels[si]; - if ( ((c == 65535) && data->is_buf_16u) || ((c<0) && (!data->is_buf_16u)) ) - continue; - valid_cidx[c]++; - } - - int valid_ccount = 0; - for (int i = 0; i < vm; i++) - if (valid_cidx[i] >= 0) - { - valid_cidx[i] = valid_ccount; - valid_ccount++; - } - if (valid_ccount > 1) - { - CvRNG* rng = forest->get_rng(); - int l_cval_count = 1 + cvRandInt(rng) % (valid_ccount-1); - - CvMat* var_class_mask = cvCreateMat( 1, valid_ccount, CV_8UC1 ); - CvMat submask; - memset(var_class_mask->data.ptr, 0, valid_ccount*CV_ELEM_SIZE(var_class_mask->type)); - cvGetCols( var_class_mask, &submask, 0, l_cval_count ); - cvSet( &submask, cvScalar(1) ); - for (int i = 0; i < valid_ccount; i++) - { - uchar temp; - int i1 = cvRandInt( rng ) % valid_ccount; - int i2 = cvRandInt( rng ) % valid_ccount; - CV_SWAP( var_class_mask->data.ptr[i1], var_class_mask->data.ptr[i2], temp ); - } - - split = _split ? _split : data->new_split_cat( 0, -1.0f); - split->var_idx = vi; - memset( split->subset, 0, (data->max_c_count + 31)/32 * sizeof(int)); - - int L = 0, R = 0; - for( int si = 0; si < n; si++ ) - { - float r = responses[si]; - int var_class_idx = labels[si]; - if ( ((var_class_idx == 65535) && data->is_buf_16u) || ((var_class_idx<0) && (!data->is_buf_16u)) ) - continue; - int mask_class_idx = valid_cidx[var_class_idx]; - if (var_class_mask->data.ptr[mask_class_idx]) - { - lsum += r; - L++; - split->subset[var_class_idx >> 5] |= 1 << (var_class_idx & 31); - } - else - { - rsum += r; - R++; - } - } - best_val = (lsum*lsum*R + rsum*rsum*L)/((double)L*R); - - split->quality = (float)best_val; - - cvReleaseMat(&var_class_mask); - } - } - - return split; -} - -void CvForestERTree::split_node_data( CvDTreeNode* node ) -{ - int vi, i, n = node->sample_count, nl, nr, scount = data->sample_count; - char* dir = (char*)data->direction->data.ptr; - CvDTreeNode *left = 0, *right = 0; - int new_buf_idx = data->get_child_buf_idx( node ); - CvMat* buf = data->buf; - size_t length_buf_row = data->get_length_subbuf(); - cv::AutoBuffer temp_buf(n); - - complete_node_dir(node); - - for( i = nl = nr = 0; i < n; i++ ) - { - int d = dir[i]; - nr += d; - nl += d^1; - } - - bool split_input_data; - node->left = left = data->new_node( node, nl, new_buf_idx, node->offset ); - node->right = right = data->new_node( node, nr, new_buf_idx, node->offset + nl ); - - split_input_data = node->depth + 1 < data->params.max_depth && - (node->left->sample_count > data->params.min_sample_count || - node->right->sample_count > data->params.min_sample_count); - - cv::AutoBuffer inn_buf(n*(sizeof(int)+sizeof(float))); - // split ordered vars - for( vi = 0; vi < data->var_count; vi++ ) - { - int ci = data->get_var_type(vi); - if (ci >= 0) continue; - - int n1 = node->get_num_valid(vi), nr1 = 0; - float* values_buf = (float*)(uchar*)inn_buf; - int* missing_buf = (int*)(values_buf + n); - const float* values = 0; - const int* missing = 0; - data->get_ord_var_data( node, vi, values_buf, missing_buf, &values, &missing, 0 ); - - for( i = 0; i < n; i++ ) - nr1 += ((!missing[i]) & dir[i]); - left->set_num_valid(vi, n1 - nr1); - right->set_num_valid(vi, nr1); - } - // split categorical vars, responses and cv_labels using new_idx relocation table - for( vi = 0; vi < data->get_work_var_count() + data->ord_var_count; vi++ ) - { - int ci = data->get_var_type(vi); - if (ci < 0) continue; - - int n1 = node->get_num_valid(vi), nr1 = 0; - const int* src_lbls = data->get_cat_var_data(node, vi, (int*)(uchar*)inn_buf); - - for(i = 0; i < n; i++) - temp_buf[i] = src_lbls[i]; - - if (data->is_buf_16u) - { - unsigned short *ldst = (unsigned short *)(buf->data.s + left->buf_idx*length_buf_row + - ci*scount + left->offset); - unsigned short *rdst = (unsigned short *)(buf->data.s + right->buf_idx*length_buf_row + - ci*scount + right->offset); - - for( i = 0; i < n; i++ ) - { - int d = dir[i]; - int idx = temp_buf[i]; - if (d) - { - *rdst = (unsigned short)idx; - rdst++; - nr1 += (idx != 65535); - } - else - { - *ldst = (unsigned short)idx; - ldst++; - } - } - - if( vi < data->var_count ) - { - left->set_num_valid(vi, n1 - nr1); - right->set_num_valid(vi, nr1); - } - } - else - { - int *ldst = buf->data.i + left->buf_idx*length_buf_row + - ci*scount + left->offset; - int *rdst = buf->data.i + right->buf_idx*length_buf_row + - ci*scount + right->offset; - - for( i = 0; i < n; i++ ) - { - int d = dir[i]; - int idx = temp_buf[i]; - if (d) - { - *rdst = idx; - rdst++; - nr1 += (idx >= 0); - } - else - { - *ldst = idx; - ldst++; - } - - } - - if( vi < data->var_count ) - { - left->set_num_valid(vi, n1 - nr1); - right->set_num_valid(vi, nr1); - } - } - } - - // split sample indices - int *sample_idx_src_buf = (int*)(uchar*)inn_buf; - const int* sample_idx_src = 0; - if (split_input_data) - { - sample_idx_src = data->get_sample_indices(node, sample_idx_src_buf); - - for(i = 0; i < n; i++) - temp_buf[i] = sample_idx_src[i]; - - int pos = data->get_work_var_count(); - - if (data->is_buf_16u) - { - unsigned short* ldst = (unsigned short*)(buf->data.s + left->buf_idx*length_buf_row + - pos*scount + left->offset); - unsigned short* rdst = (unsigned short*)(buf->data.s + right->buf_idx*length_buf_row + - pos*scount + right->offset); - - for (i = 0; i < n; i++) - { - int d = dir[i]; - unsigned short idx = (unsigned short)temp_buf[i]; - if (d) - { - *rdst = idx; - rdst++; - } - else - { - *ldst = idx; - ldst++; - } - } - } - else - { - int* ldst = buf->data.i + left->buf_idx*length_buf_row + - pos*scount + left->offset; - int* rdst = buf->data.i + right->buf_idx*length_buf_row + - pos*scount + right->offset; - for (i = 0; i < n; i++) - { - int d = dir[i]; - int idx = temp_buf[i]; - if (d) - { - *rdst = idx; - rdst++; - } - else - { - *ldst = idx; - ldst++; - } - } - } - } - - // deallocate the parent node data that is not needed anymore - data->free_node_data(node); -} - -CvERTrees::CvERTrees() -{ -} - -CvERTrees::~CvERTrees() -{ -} - -cv::String CvERTrees::getName() const -{ - return CV_TYPE_NAME_ML_ERTREES; -} - -bool CvERTrees::train( const CvMat* _train_data, int _tflag, - const CvMat* _responses, const CvMat* _var_idx, - const CvMat* _sample_idx, const CvMat* _var_type, - const CvMat* _missing_mask, CvRTParams params ) -{ - bool result = false; - - CV_FUNCNAME("CvERTrees::train"); - __BEGIN__ - int var_count = 0; - - clear(); - - CvDTreeParams tree_params( params.max_depth, params.min_sample_count, - params.regression_accuracy, params.use_surrogates, params.max_categories, - params.cv_folds, params.use_1se_rule, false, params.priors ); - - data = new CvERTreeTrainData(); - CV_CALL(data->set_data( _train_data, _tflag, _responses, _var_idx, - _sample_idx, _var_type, _missing_mask, tree_params, true)); - - var_count = data->var_count; - if( params.nactive_vars > var_count ) - params.nactive_vars = var_count; - else if( params.nactive_vars == 0 ) - params.nactive_vars = (int)sqrt((double)var_count); - else if( params.nactive_vars < 0 ) - CV_ERROR( CV_StsBadArg, " must be non-negative" ); - - // Create mask of active variables at the tree nodes - CV_CALL(active_var_mask = cvCreateMat( 1, var_count, CV_8UC1 )); - if( params.calc_var_importance ) - { - CV_CALL(var_importance = cvCreateMat( 1, var_count, CV_32FC1 )); - cvZero(var_importance); - } - { // initialize active variables mask - CvMat submask1, submask2; - CV_Assert( (active_var_mask->cols >= 1) && (params.nactive_vars > 0) && (params.nactive_vars <= active_var_mask->cols) ); - cvGetCols( active_var_mask, &submask1, 0, params.nactive_vars ); - cvSet( &submask1, cvScalar(1) ); - if( params.nactive_vars < active_var_mask->cols ) - { - cvGetCols( active_var_mask, &submask2, params.nactive_vars, var_count ); - cvZero( &submask2 ); - } - } - - CV_CALL(result = grow_forest( params.term_crit )); - - result = true; - - __END__ - return result; - -} - -bool CvERTrees::train( CvMLData* _data, CvRTParams params) -{ - bool result = false; - - CV_FUNCNAME( "CvERTrees::train" ); - - __BEGIN__; - - CV_CALL( result = CvRTrees::train( _data, params) ); - - __END__; - - return result; -} - -bool CvERTrees::grow_forest( const CvTermCriteria term_crit ) -{ - bool result = false; - - CvMat* sample_idx_for_tree = 0; - - CV_FUNCNAME("CvERTrees::grow_forest"); - __BEGIN__; - - const int max_ntrees = term_crit.max_iter; - const double max_oob_err = term_crit.epsilon; - - const int dims = data->var_count; - float maximal_response = 0; - - CvMat* oob_sample_votes = 0; - CvMat* oob_responses = 0; - - float* oob_samples_perm_ptr= 0; - - float* samples_ptr = 0; - uchar* missing_ptr = 0; - float* true_resp_ptr = 0; - bool is_oob_or_vimportance = ((max_oob_err > 0) && (term_crit.type != CV_TERMCRIT_ITER)) || var_importance; - - // oob_predictions_sum[i] = sum of predicted values for the i-th sample - // oob_num_of_predictions[i] = number of summands - // (number of predictions for the i-th sample) - // initialize these variable to avoid warning C4701 - CvMat oob_predictions_sum = cvMat( 1, 1, CV_32FC1 ); - CvMat oob_num_of_predictions = cvMat( 1, 1, CV_32FC1 ); - - nsamples = data->sample_count; - nclasses = data->get_num_classes(); - - if ( is_oob_or_vimportance ) - { - if( data->is_classifier ) - { - CV_CALL(oob_sample_votes = cvCreateMat( nsamples, nclasses, CV_32SC1 )); - cvZero(oob_sample_votes); - } - else - { - // oob_responses[0,i] = oob_predictions_sum[i] - // = sum of predicted values for the i-th sample - // oob_responses[1,i] = oob_num_of_predictions[i] - // = number of summands (number of predictions for the i-th sample) - CV_CALL(oob_responses = cvCreateMat( 2, nsamples, CV_32FC1 )); - cvZero(oob_responses); - cvGetRow( oob_responses, &oob_predictions_sum, 0 ); - cvGetRow( oob_responses, &oob_num_of_predictions, 1 ); - } - - CV_CALL(oob_samples_perm_ptr = (float*)cvAlloc( sizeof(float)*nsamples*dims )); - CV_CALL(samples_ptr = (float*)cvAlloc( sizeof(float)*nsamples*dims )); - CV_CALL(missing_ptr = (uchar*)cvAlloc( sizeof(uchar)*nsamples*dims )); - CV_CALL(true_resp_ptr = (float*)cvAlloc( sizeof(float)*nsamples )); - - CV_CALL(data->get_vectors( 0, samples_ptr, missing_ptr, true_resp_ptr )); - { - double minval, maxval; - CvMat responses = cvMat(1, nsamples, CV_32FC1, true_resp_ptr); - cvMinMaxLoc( &responses, &minval, &maxval ); - maximal_response = (float)MAX( MAX( fabs(minval), fabs(maxval) ), 0 ); - } - } - - trees = (CvForestTree**)cvAlloc( sizeof(trees[0])*max_ntrees ); - memset( trees, 0, sizeof(trees[0])*max_ntrees ); - - CV_CALL(sample_idx_for_tree = cvCreateMat( 1, nsamples, CV_32SC1 )); - - for (int i = 0; i < nsamples; i++) - sample_idx_for_tree->data.i[i] = i; - ntrees = 0; - while( ntrees < max_ntrees ) - { - int i, oob_samples_count = 0; - double ncorrect_responses = 0; // used for estimation of variable importance - CvForestTree* tree = 0; - - trees[ntrees] = new CvForestERTree(); - tree = (CvForestERTree*)trees[ntrees]; - CV_CALL(tree->train( data, 0, this )); - - if ( is_oob_or_vimportance ) - { - CvMat sample, missing; - // form array of OOB samples indices and get these samples - sample = cvMat( 1, dims, CV_32FC1, samples_ptr ); - missing = cvMat( 1, dims, CV_8UC1, missing_ptr ); - - oob_error = 0; - for( i = 0; i < nsamples; i++, - sample.data.fl += dims, missing.data.ptr += dims ) - { - CvDTreeNode* predicted_node = 0; - - // predict oob samples - if( !predicted_node ) - CV_CALL(predicted_node = tree->predict(&sample, &missing, true)); - - if( !data->is_classifier ) //regression - { - double avg_resp, resp = predicted_node->value; - oob_predictions_sum.data.fl[i] += (float)resp; - oob_num_of_predictions.data.fl[i] += 1; - - // compute oob error - avg_resp = oob_predictions_sum.data.fl[i]/oob_num_of_predictions.data.fl[i]; - avg_resp -= true_resp_ptr[i]; - oob_error += avg_resp*avg_resp; - resp = (resp - true_resp_ptr[i])/maximal_response; - ncorrect_responses += exp( -resp*resp ); - } - else //classification - { - double prdct_resp; - CvPoint max_loc; - CvMat votes; - - cvGetRow(oob_sample_votes, &votes, i); - votes.data.i[predicted_node->class_idx]++; - - // compute oob error - cvMinMaxLoc( &votes, 0, 0, 0, &max_loc ); - - prdct_resp = data->cat_map->data.i[max_loc.x]; - oob_error += (fabs(prdct_resp - true_resp_ptr[i]) < FLT_EPSILON) ? 0 : 1; - - ncorrect_responses += cvRound(predicted_node->value - true_resp_ptr[i]) == 0; - } - oob_samples_count++; - } - if( oob_samples_count > 0 ) - oob_error /= (double)oob_samples_count; - - // estimate variable importance - if( var_importance && oob_samples_count > 0 ) - { - int m; - - memcpy( oob_samples_perm_ptr, samples_ptr, dims*nsamples*sizeof(float)); - for( m = 0; m < dims; m++ ) - { - double ncorrect_responses_permuted = 0; - // randomly permute values of the m-th variable in the oob samples - float* mth_var_ptr = oob_samples_perm_ptr + m; - - for( i = 0; i < nsamples; i++ ) - { - int i1, i2; - float temp; - - i1 = (*rng)(nsamples); - i2 = (*rng)(nsamples); - CV_SWAP( mth_var_ptr[i1*dims], mth_var_ptr[i2*dims], temp ); - - // turn values of (m-1)-th variable, that were permuted - // at the previous iteration, untouched - if( m > 1 ) - oob_samples_perm_ptr[i*dims+m-1] = samples_ptr[i*dims+m-1]; - } - - // predict "permuted" cases and calculate the number of votes for the - // correct class in the variable-m-permuted oob data - sample = cvMat( 1, dims, CV_32FC1, oob_samples_perm_ptr ); - missing = cvMat( 1, dims, CV_8UC1, missing_ptr ); - for( i = 0; i < nsamples; i++, - sample.data.fl += dims, missing.data.ptr += dims ) - { - double predct_resp, true_resp; - - predct_resp = tree->predict(&sample, &missing, true)->value; - true_resp = true_resp_ptr[i]; - if( data->is_classifier ) - ncorrect_responses_permuted += cvRound(true_resp - predct_resp) == 0; - else - { - true_resp = (true_resp - predct_resp)/maximal_response; - ncorrect_responses_permuted += exp( -true_resp*true_resp ); - } - } - var_importance->data.fl[m] += (float)(ncorrect_responses - - ncorrect_responses_permuted); - } - } - } - ntrees++; - if( term_crit.type != CV_TERMCRIT_ITER && oob_error < max_oob_err ) - break; - } - if( var_importance ) - { - for ( int vi = 0; vi < var_importance->cols; vi++ ) - var_importance->data.fl[vi] = ( var_importance->data.fl[vi] > 0 ) ? - var_importance->data.fl[vi] : 0; - cvNormalize( var_importance, var_importance, 1., 0, CV_L1 ); - } - - result = true; - - cvFree( &oob_samples_perm_ptr ); - cvFree( &samples_ptr ); - cvFree( &missing_ptr ); - cvFree( &true_resp_ptr ); - - cvReleaseMat( &sample_idx_for_tree ); - - cvReleaseMat( &oob_sample_votes ); - cvReleaseMat( &oob_responses ); - - __END__; - - return result; -} - -using namespace cv; - -bool CvERTrees::train( const Mat& _train_data, int _tflag, - const Mat& _responses, const Mat& _var_idx, - const Mat& _sample_idx, const Mat& _var_type, - const Mat& _missing_mask, CvRTParams params ) -{ - train_data_hdr = _train_data; - train_data_mat = _train_data; - responses_hdr = _responses; - responses_mat = _responses; - - CvMat vidx = _var_idx, sidx = _sample_idx, vtype = _var_type, mmask = _missing_mask; - - return train(&train_data_hdr, _tflag, &responses_hdr, vidx.data.ptr ? &vidx : 0, - sidx.data.ptr ? &sidx : 0, vtype.data.ptr ? &vtype : 0, - mmask.data.ptr ? &mmask : 0, params); -} - -// End of file. diff --git a/modules/ml/src/estimate.cpp b/modules/ml/src/estimate.cpp deleted file mode 100644 index e9cab881e9..0000000000 --- a/modules/ml/src/estimate.cpp +++ /dev/null @@ -1,728 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of Intel Corporation may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "precomp.hpp" - -#if 0 - -ML_IMPL int -icvCmpIntegers (const void* a, const void* b) {return *(const int*)a - *(const int*)b;} - -/****************************************************************************************\ -* Cross-validation algorithms realizations * -\****************************************************************************************/ - -// Return pointer to trainIdx. Function DOES NOT FILL this matrix! -ML_IMPL -const CvMat* cvCrossValGetTrainIdxMatrix (const CvStatModel* estimateModel) -{ - CvMat* result = NULL; - - CV_FUNCNAME ("cvCrossValGetTrainIdxMatrix"); - __BEGIN__ - - if (!CV_IS_CROSSVAL(estimateModel)) - { - CV_ERROR (CV_StsBadArg, "Pointer point to not CvCrossValidationModel"); - } - - result = ((CvCrossValidationModel*)estimateModel)->sampleIdxTrain; - - __END__ - - return result; -} // End of cvCrossValGetTrainIdxMatrix - -/****************************************************************************************/ -// Return pointer to checkIdx. Function DOES NOT FILL this matrix! -ML_IMPL -const CvMat* cvCrossValGetCheckIdxMatrix (const CvStatModel* estimateModel) -{ - CvMat* result = NULL; - - CV_FUNCNAME ("cvCrossValGetCheckIdxMatrix"); - __BEGIN__ - - if (!CV_IS_CROSSVAL (estimateModel)) - { - CV_ERROR (CV_StsBadArg, "Pointer point to not CvCrossValidationModel"); - } - - result = ((CvCrossValidationModel*)estimateModel)->sampleIdxEval; - - __END__ - - return result; -} // End of cvCrossValGetCheckIdxMatrix - -/****************************************************************************************/ -// Create new Idx-matrix for next classifiers training and return code of result. -// Result is 0 if function can't make next step (error input or folds are finished), -// it is 1 if all was correct, and it is 2 if current fold wasn't' checked. -ML_IMPL -int cvCrossValNextStep (CvStatModel* estimateModel) -{ - int result = 0; - - CV_FUNCNAME ("cvCrossValGetNextTrainIdx"); - __BEGIN__ - - CvCrossValidationModel* crVal = (CvCrossValidationModel*) estimateModel; - int k, fold; - - if (!CV_IS_CROSSVAL (estimateModel)) - { - CV_ERROR (CV_StsBadArg, "Pointer point to not CvCrossValidationModel"); - } - - fold = ++crVal->current_fold; - - if (fold >= crVal->folds_all) - { - if (fold == crVal->folds_all) - EXIT; - else - { - CV_ERROR (CV_StsInternal, "All iterations has end long ago"); - } - } - - k = crVal->folds[fold + 1] - crVal->folds[fold]; - crVal->sampleIdxTrain->data.i = crVal->sampleIdxAll + crVal->folds[fold + 1]; - crVal->sampleIdxTrain->cols = crVal->samples_all - k; - crVal->sampleIdxEval->data.i = crVal->sampleIdxAll + crVal->folds[fold]; - crVal->sampleIdxEval->cols = k; - - if (crVal->is_checked) - { - crVal->is_checked = 0; - result = 1; - } - else - { - result = 2; - } - - __END__ - - return result; -} - -/****************************************************************************************/ -// Do checking part of loop of cross-validations metod. -ML_IMPL -void cvCrossValCheckClassifier (CvStatModel* estimateModel, - const CvStatModel* model, - const CvMat* trainData, - int sample_t_flag, - const CvMat* trainClasses) -{ - CV_FUNCNAME ("cvCrossValCheckClassifier "); - __BEGIN__ - - CvCrossValidationModel* crVal = (CvCrossValidationModel*) estimateModel; - int i, j, k; - int* data; - float* responses_fl; - int step; - float* responses_result; - int* responses_i; - double te, te1; - double sum_c, sum_p, sum_pp, sum_cp, sum_cc, sq_err; - -// Check input data to correct values. - if (!CV_IS_CROSSVAL (estimateModel)) - { - CV_ERROR (CV_StsBadArg,"First parameter point to not CvCrossValidationModel"); - } - if (!CV_IS_STAT_MODEL (model)) - { - CV_ERROR (CV_StsBadArg, "Second parameter point to not CvStatModel"); - } - if (!CV_IS_MAT (trainData)) - { - CV_ERROR (CV_StsBadArg, "Third parameter point to not CvMat"); - } - if (!CV_IS_MAT (trainClasses)) - { - CV_ERROR (CV_StsBadArg, "Fifth parameter point to not CvMat"); - } - if (crVal->is_checked) - { - CV_ERROR (CV_StsInternal, "This iterations already was checked"); - } - -// Initialize. - k = crVal->sampleIdxEval->cols; - data = crVal->sampleIdxEval->data.i; - -// Eval tested feature vectors. - CV_CALL (cvStatModelMultiPredict (model, trainData, sample_t_flag, - crVal->predict_results, NULL, crVal->sampleIdxEval)); -// Count number if correct results. - responses_result = crVal->predict_results->data.fl; - if (crVal->is_regression) - { - sum_c = sum_p = sum_pp = sum_cp = sum_cc = sq_err = 0; - if (CV_MAT_TYPE (trainClasses->type) == CV_32FC1) - { - responses_fl = trainClasses->data.fl; - step = trainClasses->rows == 1 ? 1 : trainClasses->step / sizeof(float); - for (i = 0; i < k; i++) - { - te = responses_result[*data]; - te1 = responses_fl[*data * step]; - sum_c += te1; - sum_p += te; - sum_cc += te1 * te1; - sum_pp += te * te; - sum_cp += te1 * te; - te -= te1; - sq_err += te * te; - - data++; - } - } - else - { - responses_i = trainClasses->data.i; - step = trainClasses->rows == 1 ? 1 : trainClasses->step / sizeof(int); - for (i = 0; i < k; i++) - { - te = responses_result[*data]; - te1 = responses_i[*data * step]; - sum_c += te1; - sum_p += te; - sum_cc += te1 * te1; - sum_pp += te * te; - sum_cp += te1 * te; - te -= te1; - sq_err += te * te; - - data++; - } - } - // Fixing new internal values of accuracy. - crVal->sum_correct += sum_c; - crVal->sum_predict += sum_p; - crVal->sum_cc += sum_cc; - crVal->sum_pp += sum_pp; - crVal->sum_cp += sum_cp; - crVal->sq_error += sq_err; - } - else - { - if (CV_MAT_TYPE (trainClasses->type) == CV_32FC1) - { - responses_fl = trainClasses->data.fl; - step = trainClasses->rows == 1 ? 1 : trainClasses->step / sizeof(float); - for (i = 0, j = 0; i < k; i++) - { - if (cvRound (responses_result[*data]) == cvRound (responses_fl[*data * step])) - j++; - data++; - } - } - else - { - responses_i = trainClasses->data.i; - step = trainClasses->rows == 1 ? 1 : trainClasses->step / sizeof(int); - for (i = 0, j = 0; i < k; i++) - { - if (cvRound (responses_result[*data]) == responses_i[*data * step]) - j++; - data++; - } - } - // Fixing new internal values of accuracy. - crVal->correct_results += j; - } -// Fixing that this fold already checked. - crVal->all_results += k; - crVal->is_checked = 1; - - __END__ -} // End of cvCrossValCheckClassifier - -/****************************************************************************************/ -// Return current accuracy. -ML_IMPL -float cvCrossValGetResult (const CvStatModel* estimateModel, - float* correlation) -{ - float result = 0; - - CV_FUNCNAME ("cvCrossValGetResult"); - __BEGIN__ - - double te, te1; - CvCrossValidationModel* crVal = (CvCrossValidationModel*)estimateModel; - - if (!CV_IS_CROSSVAL (estimateModel)) - { - CV_ERROR (CV_StsBadArg, "Pointer point to not CvCrossValidationModel"); - } - - if (crVal->all_results) - { - if (crVal->is_regression) - { - result = ((float)crVal->sq_error) / crVal->all_results; - if (correlation) - { - te = crVal->all_results * crVal->sum_cp - - crVal->sum_correct * crVal->sum_predict; - te *= te; - te1 = (crVal->all_results * crVal->sum_cc - - crVal->sum_correct * crVal->sum_correct) * - (crVal->all_results * crVal->sum_pp - - crVal->sum_predict * crVal->sum_predict); - *correlation = (float)(te / te1); - - } - } - else - { - result = ((float)crVal->correct_results) / crVal->all_results; - } - } - - __END__ - - return result; -} - -/****************************************************************************************/ -// Reset cross-validation EstimateModel to state the same as it was immidiatly after -// its creating. -ML_IMPL -void cvCrossValReset (CvStatModel* estimateModel) -{ - CV_FUNCNAME ("cvCrossValReset"); - __BEGIN__ - - CvCrossValidationModel* crVal = (CvCrossValidationModel*)estimateModel; - - if (!CV_IS_CROSSVAL (estimateModel)) - { - CV_ERROR (CV_StsBadArg, "Pointer point to not CvCrossValidationModel"); - } - - crVal->current_fold = -1; - crVal->is_checked = 1; - crVal->all_results = 0; - crVal->correct_results = 0; - crVal->sq_error = 0; - crVal->sum_correct = 0; - crVal->sum_predict = 0; - crVal->sum_cc = 0; - crVal->sum_pp = 0; - crVal->sum_cp = 0; - - __END__ -} - -/****************************************************************************************/ -// This function is standart CvStatModel field to release cross-validation EstimateModel. -ML_IMPL -void cvReleaseCrossValidationModel (CvStatModel** model) -{ - CvCrossValidationModel* pModel; - - CV_FUNCNAME ("cvReleaseCrossValidationModel"); - __BEGIN__ - - if (!model) - { - CV_ERROR (CV_StsNullPtr, ""); - } - - pModel = (CvCrossValidationModel*)*model; - if (!pModel) - { - return; - } - if (!CV_IS_CROSSVAL (pModel)) - { - CV_ERROR (CV_StsBadArg, ""); - } - - cvFree (&pModel->sampleIdxAll); - cvFree (&pModel->folds); - cvReleaseMat (&pModel->sampleIdxEval); - cvReleaseMat (&pModel->sampleIdxTrain); - cvReleaseMat (&pModel->predict_results); - - cvFree (model); - - __END__ -} // End of cvReleaseCrossValidationModel. - -/****************************************************************************************/ -// This function create cross-validation EstimateModel. -ML_IMPL CvStatModel* -cvCreateCrossValidationEstimateModel( - int samples_all, - const CvStatModelParams* estimateParams, - const CvMat* sampleIdx) -{ - CvStatModel* model = NULL; - CvCrossValidationModel* crVal = NULL; - - CV_FUNCNAME ("cvCreateCrossValidationEstimateModel"); - __BEGIN__ - - int k_fold = 10; - - int i, j, k, s_len; - int samples_selected; - CvRNG rng; - CvRNG* prng; - int* res_s_data; - int* te_s_data; - int* folds; - - rng = cvRNG(cvGetTickCount()); - cvRandInt (&rng); cvRandInt (&rng); cvRandInt (&rng); cvRandInt (&rng); -// Check input parameters. - if (estimateParams) - k_fold = ((CvCrossValidationParams*)estimateParams)->k_fold; - if (!k_fold) - { - CV_ERROR (CV_StsBadArg, "Error in parameters of cross-validation (k_fold == 0)!"); - } - if (samples_all <= 0) - { - CV_ERROR (CV_StsBadArg, " should be positive!"); - } - -// Alloc memory and fill standart StatModel's fields. - CV_CALL (crVal = (CvCrossValidationModel*)cvCreateStatModel ( - CV_STAT_MODEL_MAGIC_VAL | CV_CROSSVAL_MAGIC_VAL, - sizeof(CvCrossValidationModel), - cvReleaseCrossValidationModel, - NULL, NULL)); - crVal->current_fold = -1; - crVal->folds_all = k_fold; - if (estimateParams && ((CvCrossValidationParams*)estimateParams)->is_regression) - crVal->is_regression = 1; - else - crVal->is_regression = 0; - if (estimateParams && ((CvCrossValidationParams*)estimateParams)->rng) - prng = ((CvCrossValidationParams*)estimateParams)->rng; - else - prng = &rng; - - // Check and preprocess sample indices. - if (sampleIdx) - { - int s_step; - int s_type = 0; - - if (!CV_IS_MAT (sampleIdx)) - CV_ERROR (CV_StsBadArg, "Invalid sampleIdx array"); - - if (sampleIdx->rows != 1 && sampleIdx->cols != 1) - CV_ERROR (CV_StsBadSize, "sampleIdx array must be 1-dimensional"); - - s_len = sampleIdx->rows + sampleIdx->cols - 1; - s_step = sampleIdx->rows == 1 ? - 1 : sampleIdx->step / CV_ELEM_SIZE(sampleIdx->type); - - s_type = CV_MAT_TYPE (sampleIdx->type); - - switch (s_type) - { - case CV_8UC1: - case CV_8SC1: - { - uchar* s_data = sampleIdx->data.ptr; - - // sampleIdx is array of 1's and 0's - - // i.e. it is a mask of the selected samples - if( s_len != samples_all ) - CV_ERROR (CV_StsUnmatchedSizes, - "Sample mask should contain as many elements as the total number of samples"); - - samples_selected = 0; - for (i = 0; i < s_len; i++) - samples_selected += s_data[i * s_step] != 0; - - if (samples_selected == 0) - CV_ERROR (CV_StsOutOfRange, "No samples is selected!"); - } - s_len = samples_selected; - break; - case CV_32SC1: - if (s_len > samples_all) - CV_ERROR (CV_StsOutOfRange, - "sampleIdx array may not contain more elements than the total number of samples"); - samples_selected = s_len; - break; - default: - CV_ERROR (CV_StsUnsupportedFormat, "Unsupported sampleIdx array data type " - "(it should be 8uC1, 8sC1 or 32sC1)"); - } - - // Alloc additional memory for internal Idx and fill it. -/*!!*/ CV_CALL (res_s_data = crVal->sampleIdxAll = - (int*)cvAlloc (2 * s_len * sizeof(int))); - - if (s_type < CV_32SC1) - { - uchar* s_data = sampleIdx->data.ptr; - for (i = 0; i < s_len; i++) - if (s_data[i * s_step]) - { - *res_s_data++ = i; - } - res_s_data = crVal->sampleIdxAll; - } - else - { - int* s_data = sampleIdx->data.i; - int out_of_order = 0; - - for (i = 0; i < s_len; i++) - { - res_s_data[i] = s_data[i * s_step]; - if (i > 0 && res_s_data[i] < res_s_data[i - 1]) - out_of_order = 1; - } - - if (out_of_order) - qsort (res_s_data, s_len, sizeof(res_s_data[0]), icvCmpIntegers); - - if (res_s_data[0] < 0 || - res_s_data[s_len - 1] >= samples_all) - CV_ERROR (CV_StsBadArg, "There are out-of-range sample indices"); - for (i = 1; i < s_len; i++) - if (res_s_data[i] <= res_s_data[i - 1]) - CV_ERROR (CV_StsBadArg, "There are duplicated"); - } - } - else // if (sampleIdx) - { - // Alloc additional memory for internal Idx and fill it. - s_len = samples_all; - CV_CALL (res_s_data = crVal->sampleIdxAll = (int*)cvAlloc (2 * s_len * sizeof(int))); - for (i = 0; i < s_len; i++) - { - *res_s_data++ = i; - } - res_s_data = crVal->sampleIdxAll; - } // if (sampleIdx) ... else - -// Resort internal Idx. - te_s_data = res_s_data + s_len; - for (i = s_len; i > 1; i--) - { - j = cvRandInt (prng) % i; - k = *(--te_s_data); - *te_s_data = res_s_data[j]; - res_s_data[j] = k; - } - -// Duplicate resorted internal Idx. -// It will be used to simplify operation of getting trainIdx. - te_s_data = res_s_data + s_len; - for (i = 0; i < s_len; i++) - { - *te_s_data++ = *res_s_data++; - } - -// Cut sampleIdxAll to parts. - if (k_fold > 0) - { - if (k_fold > s_len) - { - CV_ERROR (CV_StsBadArg, - "Error in parameters of cross-validation ('k_fold' > #samples)!"); - } - folds = crVal->folds = (int*) cvAlloc ((k_fold + 1) * sizeof (int)); - *folds++ = 0; - for (i = 1; i < k_fold; i++) - { - *folds++ = cvRound (i * s_len * 1. / k_fold); - } - *folds = s_len; - folds = crVal->folds; - - crVal->max_fold_size = (s_len - 1) / k_fold + 1; - } - else - { - k = -k_fold; - crVal->max_fold_size = k; - if (k >= s_len) - { - CV_ERROR (CV_StsBadArg, - "Error in parameters of cross-validation (-'k_fold' > #samples)!"); - } - crVal->folds_all = k = (s_len - 1) / k + 1; - - folds = crVal->folds = (int*) cvAlloc ((k + 1) * sizeof (int)); - for (i = 0; i < k; i++) - { - *folds++ = -i * k_fold; - } - *folds = s_len; - folds = crVal->folds; - } - -// Prepare other internal fields to working. - CV_CALL (crVal->predict_results = cvCreateMat (1, samples_all, CV_32FC1)); - CV_CALL (crVal->sampleIdxEval = cvCreateMatHeader (1, 1, CV_32SC1)); - CV_CALL (crVal->sampleIdxTrain = cvCreateMatHeader (1, 1, CV_32SC1)); - crVal->sampleIdxEval->cols = 0; - crVal->sampleIdxTrain->cols = 0; - crVal->samples_all = s_len; - crVal->is_checked = 1; - - crVal->getTrainIdxMat = cvCrossValGetTrainIdxMatrix; - crVal->getCheckIdxMat = cvCrossValGetCheckIdxMatrix; - crVal->nextStep = cvCrossValNextStep; - crVal->check = cvCrossValCheckClassifier; - crVal->getResult = cvCrossValGetResult; - crVal->reset = cvCrossValReset; - - model = (CvStatModel*)crVal; - - __END__ - - if (!model) - { - cvReleaseCrossValidationModel ((CvStatModel**)&crVal); - } - - return model; -} // End of cvCreateCrossValidationEstimateModel - - -/****************************************************************************************\ -* Extended interface with backcalls for models * -\****************************************************************************************/ -ML_IMPL float -cvCrossValidation (const CvMat* trueData, - int tflag, - const CvMat* trueClasses, - CvStatModel* (*createClassifier) (const CvMat*, - int, - const CvMat*, - const CvClassifierTrainParams*, - const CvMat*, - const CvMat*, - const CvMat*, - const CvMat*), - const CvClassifierTrainParams* estimateParams, - const CvClassifierTrainParams* trainParams, - const CvMat* compIdx, - const CvMat* sampleIdx, - CvStatModel** pCrValModel, - const CvMat* typeMask, - const CvMat* missedMeasurementMask) -{ - CvCrossValidationModel* crVal = NULL; - float result = 0; - CvStatModel* pClassifier = NULL; - - CV_FUNCNAME ("cvCrossValidation"); - __BEGIN__ - - const CvMat* trainDataIdx; - int samples_all; - -// checking input data - if ((createClassifier) == NULL) - { - CV_ERROR (CV_StsNullPtr, "Null pointer to functiion which create classifier"); - } - if (pCrValModel && *pCrValModel && !CV_IS_CROSSVAL(*pCrValModel)) - { - CV_ERROR (CV_StsBadArg, - " point to not cross-validation model"); - } - -// initialization - if (pCrValModel && *pCrValModel) - { - crVal = (CvCrossValidationModel*)*pCrValModel; - crVal->reset ((CvStatModel*)crVal); - } - else - { - samples_all = ((tflag) ? trueData->rows : trueData->cols); - CV_CALL (crVal = (CvCrossValidationModel*) - cvCreateCrossValidationEstimateModel (samples_all, estimateParams, sampleIdx)); - } - - CV_CALL (trainDataIdx = crVal->getTrainIdxMat ((CvStatModel*)crVal)); - -// operation loop - for (; crVal->nextStep((CvStatModel*)crVal) != 0; ) - { - CV_CALL (pClassifier = createClassifier (trueData, tflag, trueClasses, - trainParams, compIdx, trainDataIdx, typeMask, missedMeasurementMask)); - CV_CALL (crVal->check ((CvStatModel*)crVal, pClassifier, - trueData, tflag, trueClasses)); - - pClassifier->release (&pClassifier); - } - -// Get result and fill output field. - CV_CALL (result = crVal->getResult ((CvStatModel*)crVal, 0)); - - if (pCrValModel && !*pCrValModel) - *pCrValModel = (CvStatModel*)crVal; - - __END__ - -// Free all memory that should be freed. - if (pClassifier) - pClassifier->release (&pClassifier); - if (crVal && (!pCrValModel || !*pCrValModel)) - crVal->release ((CvStatModel**)&crVal); - - return result; -} // End of cvCrossValidation - -#endif - -/* End of file */ diff --git a/modules/ml/src/gbt.cpp b/modules/ml/src/gbt.cpp index 42d0d4f3af..9ece5d6bcb 100644 --- a/modules/ml/src/gbt.cpp +++ b/modules/ml/src/gbt.cpp @@ -2,6 +2,8 @@ #include "precomp.hpp" #include +#if 0 + #define pCvSeq CvSeq* #define pCvDTreeNode CvDTreeNode* @@ -1359,3 +1361,6 @@ float CvGBTrees::predict( const cv::Mat& sample, const cv::Mat& _missing, return predict(&_sample, _missing.empty() ? 0 : &miss, 0, slice==cv::Range::all() ? CV_WHOLE_SEQ : cvSlice(slice.start, slice.end), k); } + +#endif + diff --git a/modules/ml/src/inner_functions.cpp b/modules/ml/src/inner_functions.cpp index f0e085da6c..c347835613 100644 --- a/modules/ml/src/inner_functions.cpp +++ b/modules/ml/src/inner_functions.cpp @@ -40,1840 +40,139 @@ #include "precomp.hpp" +namespace cv { namespace ml { -CvStatModel::CvStatModel() +ParamGrid::ParamGrid() { minVal = maxVal = 0.; logStep = 1; } +ParamGrid::ParamGrid(double _minVal, double _maxVal, double _logStep) { - default_model_name = "my_stat_model"; + minVal = std::min(_minVal, _maxVal); + maxVal = std::max(_minVal, _maxVal); + logStep = std::max(_logStep, 1.); } +StatModel::~StatModel() {} +void StatModel::clear() {} -CvStatModel::~CvStatModel() -{ - clear(); -} - - -void CvStatModel::clear() -{ -} +int StatModel::getVarCount() const { return 0; } - -void CvStatModel::save( const char* filename, const char* name ) const +bool StatModel::train( const Ptr&, int ) { - CvFileStorage* fs = 0; - - CV_FUNCNAME( "CvStatModel::save" ); - - __BEGIN__; - - CV_CALL( fs = cvOpenFileStorage( filename, 0, CV_STORAGE_WRITE )); - if( !fs ) - CV_ERROR( CV_StsError, "Could not open the file storage. Check the path and permissions" ); - - write( fs, name ? name : default_model_name ); - - __END__; - - cvReleaseFileStorage( &fs ); + CV_Error(CV_StsNotImplemented, ""); + return false; } - -void CvStatModel::load( const char* filename, const char* name ) +float StatModel::calcError( const Ptr& data, bool testerr, OutputArray _resp ) const { - CvFileStorage* fs = 0; + Mat samples = data->getSamples(); + int layout = data->getLayout(); + Mat sidx = testerr ? data->getTestSampleIdx() : data->getTrainSampleIdx(); + const int* sidx_ptr = sidx.ptr(); + int i, n = (int)sidx.total(); + bool isclassifier = isClassifier(); + Mat responses = data->getResponses(); - CV_FUNCNAME( "CvStatModel::load" ); + if( n == 0 ) + n = data->getNSamples(); - __BEGIN__; + if( n == 0 ) + return -FLT_MAX; - CvFileNode* model_node = 0; + Mat resp; + if( _resp.needed() ) + resp.create(n, 1, CV_32F); - CV_CALL( fs = cvOpenFileStorage( filename, 0, CV_STORAGE_READ )); - if( !fs ) - EXIT; - - if( name ) - model_node = cvGetFileNodeByName( fs, 0, name ); - else + double err = 0; + for( i = 0; i < n; i++ ) { - CvFileNode* root = cvGetRootFileNode( fs ); - if( root->data.seq->total > 0 ) - model_node = (CvFileNode*)cvGetSeqElem( root->data.seq, 0 ); - } + int si = sidx_ptr ? sidx_ptr[i] : i; + Mat sample = layout == ROW_SAMPLE ? samples.row(si) : samples.col(si); + float val = predict(sample); + float val0 = responses.at(si); - read( fs, model_node ); - - __END__; - - cvReleaseFileStorage( &fs ); -} + if( isclassifier ) + err += fabs(val - val0) > FLT_EPSILON; + else + err += (val - val0)*(val - val0); + if( resp.data ) + resp.at(i) = val; + /*if( i < 100 ) + { + printf("%d. ref %.1f vs pred %.1f\n", i, val0, val); + }*/ + } + if( _resp.needed() ) + resp.copyTo(_resp); -void CvStatModel::write( CvFileStorage*, const char* ) const -{ - OPENCV_ERROR( CV_StsNotImplemented, "CvStatModel::write", "" ); + return err / n * (isclassifier ? 100 : 1); } - -void CvStatModel::read( CvFileStorage*, CvFileNode* ) +void StatModel::save(const String& filename) const { - OPENCV_ERROR( CV_StsNotImplemented, "CvStatModel::read", "" ); + FileStorage fs(filename, FileStorage::WRITE); + fs << getDefaultModelName() << "{"; + write(fs); + fs << "}"; } - /* Calculates upper triangular matrix S, where A is a symmetrical matrix A=S'*S */ -static void cvChol( CvMat* A, CvMat* S ) +static void Cholesky( const Mat& A, Mat& S ) { - int dim = A->rows; + CV_Assert(A.type() == CV_32F); + + int dim = A.rows; + S.create(dim, dim, CV_32F); int i, j, k; - float sum; for( i = 0; i < dim; i++ ) { for( j = 0; j < i; j++ ) - CV_MAT_ELEM(*S, float, i, j) = 0; + S.at(i,j) = 0.f; - sum = 0; + float sum = 0.f; for( k = 0; k < i; k++ ) - sum += CV_MAT_ELEM(*S, float, k, i) * CV_MAT_ELEM(*S, float, k, i); + { + float val = S.at(k,i); + sum += val*val; + } - CV_MAT_ELEM(*S, float, i, i) = (float)sqrt(CV_MAT_ELEM(*A, float, i, i) - sum); + S.at(i,i) = std::sqrt(std::max(A.at(i,i) - sum, 0.f)); + float ival = 1.f/S.at(i, i); for( j = i + 1; j < dim; j++ ) { sum = 0; for( k = 0; k < i; k++ ) - sum += CV_MAT_ELEM(*S, float, k, i) * CV_MAT_ELEM(*S, float, k, j); - - CV_MAT_ELEM(*S, float, i, j) = - (CV_MAT_ELEM(*A, float, i, j) - sum) / CV_MAT_ELEM(*S, float, i, i); + sum += S.at(k, i) * S.at(k, j); + S.at(i, j) = (A.at(i, j) - sum)*ival; } } } /* Generates from multivariate normal distribution, where - is an average row vector, - symmetric covariation matrix */ -CV_IMPL void cvRandMVNormal( CvMat* mean, CvMat* cov, CvMat* sample, CvRNG* rng ) -{ - int dim = sample->cols; - int amount = sample->rows; - - CvRNG state = rng ? *rng : cvRNG( cvGetTickCount() ); - cvRandArr(&state, sample, CV_RAND_NORMAL, cvScalarAll(0), cvScalarAll(1) ); - - CvMat* utmat = cvCreateMat(dim, dim, sample->type); - CvMat* vect = cvCreateMatHeader(1, dim, sample->type); - - cvChol(cov, utmat); - - int i; - for( i = 0; i < amount; i++ ) - { - cvGetRow(sample, vect, i); - cvMatMulAdd(vect, utmat, mean, vect); - } - - cvReleaseMat(&vect); - cvReleaseMat(&utmat); -} - - -/* Generates of points from a discrete variate xi, - where Pr{xi = k} == probs[k], 0 < k < len - 1. */ -static void cvRandSeries( float probs[], int len, int sample[], int amount ) -{ - CvMat* univals = cvCreateMat(1, amount, CV_32FC1); - float* knots = (float*)cvAlloc( len * sizeof(float) ); - - int i, j; - - CvRNG state = cvRNG(-1); - cvRandArr(&state, univals, CV_RAND_UNI, cvScalarAll(0), cvScalarAll(1) ); - - knots[0] = probs[0]; - for( i = 1; i < len; i++ ) - knots[i] = knots[i - 1] + probs[i]; - - for( i = 0; i < amount; i++ ) - for( j = 0; j < len; j++ ) - { - if ( CV_MAT_ELEM(*univals, float, 0, i) <= knots[j] ) - { - sample[i] = j; - break; - } - } - - cvFree(&knots); -} - -/* Generates from gaussian mixture distribution */ -CV_IMPL void cvRandGaussMixture( CvMat* means[], - CvMat* covs[], - float weights[], - int clsnum, - CvMat* sample, - CvMat* sampClasses ) -{ - int dim = sample->cols; - int amount = sample->rows; - - int i, clss; - - int* sample_clsnum = (int*)cvAlloc( amount * sizeof(int) ); - CvMat** utmats = (CvMat**)cvAlloc( clsnum * sizeof(CvMat*) ); - CvMat* vect = cvCreateMatHeader(1, dim, CV_32FC1); - - CvMat* classes; - if( sampClasses ) - classes = sampClasses; - else - classes = cvCreateMat(1, amount, CV_32FC1); - - CvRNG state = cvRNG(-1); - cvRandArr(&state, sample, CV_RAND_NORMAL, cvScalarAll(0), cvScalarAll(1)); - - cvRandSeries(weights, clsnum, sample_clsnum, amount); - - for( i = 0; i < clsnum; i++ ) - { - utmats[i] = cvCreateMat(dim, dim, CV_32FC1); - cvChol(covs[i], utmats[i]); - } - - for( i = 0; i < amount; i++ ) - { - CV_MAT_ELEM(*classes, float, 0, i) = (float)sample_clsnum[i]; - cvGetRow(sample, vect, i); - clss = sample_clsnum[i]; - cvMatMulAdd(vect, utmats[clss], means[clss], vect); - } - - if( !sampClasses ) - cvReleaseMat(&classes); - for( i = 0; i < clsnum; i++ ) - cvReleaseMat(&utmats[i]); - cvFree(&utmats); - cvFree(&sample_clsnum); - cvReleaseMat(&vect); -} - - -CvMat* icvGenerateRandomClusterCenters ( int seed, const CvMat* data, - int num_of_clusters, CvMat* _centers ) -{ - CvMat* centers = _centers; - - CV_FUNCNAME("icvGenerateRandomClusterCenters"); - __BEGIN__; - - CvRNG rng; - CvMat data_comp, centers_comp; - CvPoint minLoc, maxLoc; // Not used, just for function "cvMinMaxLoc" - double minVal, maxVal; - int i; - int dim = data ? data->cols : 0; - - if( ICV_IS_MAT_OF_TYPE(data, CV_32FC1) ) - { - if( _centers && !ICV_IS_MAT_OF_TYPE (_centers, CV_32FC1) ) - { - CV_ERROR(CV_StsBadArg,""); - } - else if( !_centers ) - CV_CALL(centers = cvCreateMat (num_of_clusters, dim, CV_32FC1)); - } - else if( ICV_IS_MAT_OF_TYPE(data, CV_64FC1) ) - { - if( _centers && !ICV_IS_MAT_OF_TYPE (_centers, CV_64FC1) ) - { - CV_ERROR(CV_StsBadArg,""); - } - else if( !_centers ) - CV_CALL(centers = cvCreateMat (num_of_clusters, dim, CV_64FC1)); - } - else - CV_ERROR (CV_StsBadArg,""); - - if( num_of_clusters < 1 ) - CV_ERROR (CV_StsBadArg,""); - - rng = cvRNG(seed); - for (i = 0; i < dim; i++) - { - CV_CALL(cvGetCol (data, &data_comp, i)); - CV_CALL(cvMinMaxLoc (&data_comp, &minVal, &maxVal, &minLoc, &maxLoc)); - CV_CALL(cvGetCol (centers, ¢ers_comp, i)); - CV_CALL(cvRandArr (&rng, ¢ers_comp, CV_RAND_UNI, cvScalarAll(minVal), cvScalarAll(maxVal))); - } - - __END__; - - if( (cvGetErrStatus () < 0) || (centers != _centers) ) - cvReleaseMat (¢ers); - - return _centers ? _centers : centers; -} // end of icvGenerateRandomClusterCenters - -// By S. Dilman - begin - - -#define ICV_RAND_MAX 4294967296 // == 2^32 - -// static void cvRandRoundUni (CvMat* center, -// float radius_small, -// float radius_large, -// CvMat* desired_matrix, -// CvRNG* rng_state_ptr) -// { -// float rad, norm, coefficient; -// int dim, size, i, j; -// CvMat *cov, sample; -// CvRNG rng_local; - -// CV_FUNCNAME("cvRandRoundUni"); -// __BEGIN__ - -// rng_local = *rng_state_ptr; - -// CV_ASSERT ((radius_small >= 0) && -// (radius_large > 0) && -// (radius_small <= radius_large)); -// CV_ASSERT (center && desired_matrix && rng_state_ptr); -// CV_ASSERT (center->rows == 1); -// CV_ASSERT (center->cols == desired_matrix->cols); - -// dim = desired_matrix->cols; -// size = desired_matrix->rows; -// cov = cvCreateMat (dim, dim, CV_32FC1); -// cvSetIdentity (cov); -// cvRandMVNormal (center, cov, desired_matrix, &rng_local); - -// for (i = 0; i < size; i++) -// { -// rad = (float)(cvRandReal(&rng_local)*(radius_large - radius_small) + radius_small); -// cvGetRow (desired_matrix, &sample, i); -// norm = (float) cvNorm (&sample, 0, CV_L2); -// coefficient = rad / norm; -// for (j = 0; j < dim; j++) -// CV_MAT_ELEM (sample, float, 0, j) *= coefficient; -// } - -// __END__ - -// } - -// By S. Dilman - end - - -static int CV_CDECL -icvCmpIntegers( const void* a, const void* b ) -{ - return *(const int*)a - *(const int*)b; -} - - -static int CV_CDECL -icvCmpIntegersPtr( const void* _a, const void* _b ) -{ - int a = **(const int**)_a; - int b = **(const int**)_b; - return (a < b ? -1 : 0)|(a > b); -} - - -static int icvCmpSparseVecElems( const void* a, const void* b ) -{ - return ((CvSparseVecElem32f*)a)->idx - ((CvSparseVecElem32f*)b)->idx; -} - - -CvMat* -cvPreprocessIndexArray( const CvMat* idx_arr, int data_arr_size, bool check_for_duplicates ) -{ - CvMat* idx = 0; - - CV_FUNCNAME( "cvPreprocessIndexArray" ); - - __BEGIN__; - - int i, idx_total, idx_selected = 0, step, type, prev = INT_MIN, is_sorted = 1; - uchar* srcb = 0; - int* srci = 0; - int* dsti; - - if( !CV_IS_MAT(idx_arr) ) - CV_ERROR( CV_StsBadArg, "Invalid index array" ); - - if( idx_arr->rows != 1 && idx_arr->cols != 1 ) - CV_ERROR( CV_StsBadSize, "the index array must be 1-dimensional" ); - - idx_total = idx_arr->rows + idx_arr->cols - 1; - srcb = idx_arr->data.ptr; - srci = idx_arr->data.i; - - type = CV_MAT_TYPE(idx_arr->type); - step = CV_IS_MAT_CONT(idx_arr->type) ? 1 : idx_arr->step/CV_ELEM_SIZE(type); - - switch( type ) - { - case CV_8UC1: - case CV_8SC1: - // idx_arr is array of 1's and 0's - - // i.e. it is a mask of the selected components - if( idx_total != data_arr_size ) - CV_ERROR( CV_StsUnmatchedSizes, - "Component mask should contain as many elements as the total number of input variables" ); - - for( i = 0; i < idx_total; i++ ) - idx_selected += srcb[i*step] != 0; - - if( idx_selected == 0 ) - CV_ERROR( CV_StsOutOfRange, "No components/input_variables is selected!" ); - - break; - case CV_32SC1: - // idx_arr is array of integer indices of selected components - if( idx_total > data_arr_size ) - CV_ERROR( CV_StsOutOfRange, - "index array may not contain more elements than the total number of input variables" ); - idx_selected = idx_total; - // check if sorted already - for( i = 0; i < idx_total; i++ ) - { - int val = srci[i*step]; - if( val >= prev ) - { - is_sorted = 0; - break; - } - prev = val; - } - break; - default: - CV_ERROR( CV_StsUnsupportedFormat, "Unsupported index array data type " - "(it should be 8uC1, 8sC1 or 32sC1)" ); - } - - CV_CALL( idx = cvCreateMat( 1, idx_selected, CV_32SC1 )); - dsti = idx->data.i; - - if( type < CV_32SC1 ) - { - for( i = 0; i < idx_total; i++ ) - if( srcb[i*step] ) - *dsti++ = i; - } - else - { - for( i = 0; i < idx_total; i++ ) - dsti[i] = srci[i*step]; - - if( !is_sorted ) - qsort( dsti, idx_total, sizeof(dsti[0]), icvCmpIntegers ); - - if( dsti[0] < 0 || dsti[idx_total-1] >= data_arr_size ) - CV_ERROR( CV_StsOutOfRange, "the index array elements are out of range" ); - - if( check_for_duplicates ) - { - for( i = 1; i < idx_total; i++ ) - if( dsti[i] <= dsti[i-1] ) - CV_ERROR( CV_StsBadArg, "There are duplicated index array elements" ); - } - } - - __END__; - - if( cvGetErrStatus() < 0 ) - cvReleaseMat( &idx ); - - return idx; -} - - -CvMat* -cvPreprocessVarType( const CvMat* var_type, const CvMat* var_idx, - int var_count, int* response_type ) -{ - CvMat* out_var_type = 0; - CV_FUNCNAME( "cvPreprocessVarType" ); - - if( response_type ) - *response_type = -1; - - __BEGIN__; - - int i, tm_size, tm_step; - //int* map = 0; - const uchar* src; - uchar* dst; - - if( !CV_IS_MAT(var_type) ) - CV_ERROR( var_type ? CV_StsBadArg : CV_StsNullPtr, "Invalid or absent var_type array" ); - - if( var_type->rows != 1 && var_type->cols != 1 ) - CV_ERROR( CV_StsBadSize, "var_type array must be 1-dimensional" ); - - if( !CV_IS_MASK_ARR(var_type)) - CV_ERROR( CV_StsUnsupportedFormat, "type mask must be 8uC1 or 8sC1 array" ); - - tm_size = var_type->rows + var_type->cols - 1; - tm_step = var_type->rows == 1 ? 1 : var_type->step/CV_ELEM_SIZE(var_type->type); - - if( /*tm_size != var_count &&*/ tm_size != var_count + 1 ) - CV_ERROR( CV_StsBadArg, - "type mask must be of + 1 size" ); - - if( response_type && tm_size > var_count ) - *response_type = var_type->data.ptr[var_count*tm_step] != 0; - - if( var_idx ) - { - if( !CV_IS_MAT(var_idx) || CV_MAT_TYPE(var_idx->type) != CV_32SC1 || - (var_idx->rows != 1 && var_idx->cols != 1) || !CV_IS_MAT_CONT(var_idx->type) ) - CV_ERROR( CV_StsBadArg, "var index array should be continuous 1-dimensional integer vector" ); - if( var_idx->rows + var_idx->cols - 1 > var_count ) - CV_ERROR( CV_StsBadSize, "var index array is too large" ); - //map = var_idx->data.i; - var_count = var_idx->rows + var_idx->cols - 1; - } - - CV_CALL( out_var_type = cvCreateMat( 1, var_count, CV_8UC1 )); - src = var_type->data.ptr; - dst = out_var_type->data.ptr; - - for( i = 0; i < var_count; i++ ) - { - //int idx = map ? map[i] : i; - assert( (unsigned)/*idx*/i < (unsigned)tm_size ); - dst[i] = (uchar)(src[/*idx*/i*tm_step] != 0); - } - - __END__; - - return out_var_type; -} - - -CvMat* -cvPreprocessOrderedResponses( const CvMat* responses, const CvMat* sample_idx, int sample_all ) -{ - CvMat* out_responses = 0; - - CV_FUNCNAME( "cvPreprocessOrderedResponses" ); - - __BEGIN__; - - int i, r_type, r_step; - const int* map = 0; - float* dst; - int sample_count = sample_all; - - if( !CV_IS_MAT(responses) ) - CV_ERROR( CV_StsBadArg, "Invalid response array" ); - - if( responses->rows != 1 && responses->cols != 1 ) - CV_ERROR( CV_StsBadSize, "Response array must be 1-dimensional" ); - - if( responses->rows + responses->cols - 1 != sample_count ) - CV_ERROR( CV_StsUnmatchedSizes, - "Response array must contain as many elements as the total number of samples" ); - - r_type = CV_MAT_TYPE(responses->type); - if( r_type != CV_32FC1 && r_type != CV_32SC1 ) - CV_ERROR( CV_StsUnsupportedFormat, "Unsupported response type" ); - - r_step = responses->step ? responses->step / CV_ELEM_SIZE(responses->type) : 1; - - if( r_type == CV_32FC1 && CV_IS_MAT_CONT(responses->type) && !sample_idx ) - { - out_responses = cvCloneMat( responses ); - EXIT; - } - - if( sample_idx ) - { - if( !CV_IS_MAT(sample_idx) || CV_MAT_TYPE(sample_idx->type) != CV_32SC1 || - (sample_idx->rows != 1 && sample_idx->cols != 1) || !CV_IS_MAT_CONT(sample_idx->type) ) - CV_ERROR( CV_StsBadArg, "sample index array should be continuous 1-dimensional integer vector" ); - if( sample_idx->rows + sample_idx->cols - 1 > sample_count ) - CV_ERROR( CV_StsBadSize, "sample index array is too large" ); - map = sample_idx->data.i; - sample_count = sample_idx->rows + sample_idx->cols - 1; - } - - CV_CALL( out_responses = cvCreateMat( 1, sample_count, CV_32FC1 )); - - dst = out_responses->data.fl; - if( r_type == CV_32FC1 ) - { - const float* src = responses->data.fl; - for( i = 0; i < sample_count; i++ ) - { - int idx = map ? map[i] : i; - assert( (unsigned)idx < (unsigned)sample_all ); - dst[i] = src[idx*r_step]; - } - } - else - { - const int* src = responses->data.i; - for( i = 0; i < sample_count; i++ ) - { - int idx = map ? map[i] : i; - assert( (unsigned)idx < (unsigned)sample_all ); - dst[i] = (float)src[idx*r_step]; - } - } - - __END__; - - return out_responses; -} - -CvMat* -cvPreprocessCategoricalResponses( const CvMat* responses, - const CvMat* sample_idx, int sample_all, - CvMat** out_response_map, CvMat** class_counts ) -{ - CvMat* out_responses = 0; - int** response_ptr = 0; - - CV_FUNCNAME( "cvPreprocessCategoricalResponses" ); - - if( out_response_map ) - *out_response_map = 0; - - if( class_counts ) - *class_counts = 0; - - __BEGIN__; - - int i, r_type, r_step; - int cls_count = 1, prev_cls, prev_i; - const int* map = 0; - const int* srci; - const float* srcfl; - int* dst; - int* cls_map; - int* cls_counts = 0; - int sample_count = sample_all; - - if( !CV_IS_MAT(responses) ) - CV_ERROR( CV_StsBadArg, "Invalid response array" ); - - if( responses->rows != 1 && responses->cols != 1 ) - CV_ERROR( CV_StsBadSize, "Response array must be 1-dimensional" ); - - if( responses->rows + responses->cols - 1 != sample_count ) - CV_ERROR( CV_StsUnmatchedSizes, - "Response array must contain as many elements as the total number of samples" ); - - r_type = CV_MAT_TYPE(responses->type); - if( r_type != CV_32FC1 && r_type != CV_32SC1 ) - CV_ERROR( CV_StsUnsupportedFormat, "Unsupported response type" ); - - r_step = responses->rows == 1 ? 1 : responses->step / CV_ELEM_SIZE(responses->type); - - if( sample_idx ) - { - if( !CV_IS_MAT(sample_idx) || CV_MAT_TYPE(sample_idx->type) != CV_32SC1 || - (sample_idx->rows != 1 && sample_idx->cols != 1) || !CV_IS_MAT_CONT(sample_idx->type) ) - CV_ERROR( CV_StsBadArg, "sample index array should be continuous 1-dimensional integer vector" ); - if( sample_idx->rows + sample_idx->cols - 1 > sample_count ) - CV_ERROR( CV_StsBadSize, "sample index array is too large" ); - map = sample_idx->data.i; - sample_count = sample_idx->rows + sample_idx->cols - 1; - } - - CV_CALL( out_responses = cvCreateMat( 1, sample_count, CV_32SC1 )); - - if( !out_response_map ) - CV_ERROR( CV_StsNullPtr, "out_response_map pointer is NULL" ); - - CV_CALL( response_ptr = (int**)cvAlloc( sample_count*sizeof(response_ptr[0]))); - - srci = responses->data.i; - srcfl = responses->data.fl; - dst = out_responses->data.i; - - for( i = 0; i < sample_count; i++ ) - { - int idx = map ? map[i] : i; - assert( (unsigned)idx < (unsigned)sample_all ); - if( r_type == CV_32SC1 ) - dst[i] = srci[idx*r_step]; - else - { - float rf = srcfl[idx*r_step]; - int ri = cvRound(rf); - if( ri != rf ) - { - char buf[100]; - sprintf( buf, "response #%d is not integral", idx ); - CV_ERROR( CV_StsBadArg, buf ); - } - dst[i] = ri; - } - response_ptr[i] = dst + i; - } - - qsort( response_ptr, sample_count, sizeof(int*), icvCmpIntegersPtr ); - - // count the classes - for( i = 1; i < sample_count; i++ ) - cls_count += *response_ptr[i] != *response_ptr[i-1]; - - if( cls_count < 2 ) - CV_ERROR( CV_StsBadArg, "There is only a single class" ); - - CV_CALL( *out_response_map = cvCreateMat( 1, cls_count, CV_32SC1 )); - - if( class_counts ) - { - CV_CALL( *class_counts = cvCreateMat( 1, cls_count, CV_32SC1 )); - cls_counts = (*class_counts)->data.i; - } - - // compact the class indices and build the map - prev_cls = ~*response_ptr[0]; - cls_count = -1; - cls_map = (*out_response_map)->data.i; - - for( i = 0, prev_i = -1; i < sample_count; i++ ) - { - int cur_cls = *response_ptr[i]; - if( cur_cls != prev_cls ) - { - if( cls_counts && cls_count >= 0 ) - cls_counts[cls_count] = i - prev_i; - cls_map[++cls_count] = prev_cls = cur_cls; - prev_i = i; - } - *response_ptr[i] = cls_count; - } - - if( cls_counts ) - cls_counts[cls_count] = i - prev_i; - - __END__; - - cvFree( &response_ptr ); - - return out_responses; -} - - -const float** -cvGetTrainSamples( const CvMat* train_data, int tflag, - const CvMat* var_idx, const CvMat* sample_idx, - int* _var_count, int* _sample_count, - bool always_copy_data ) +void randMVNormal( InputArray _mean, InputArray _cov, int nsamples, OutputArray _samples ) { - float** samples = 0; - - CV_FUNCNAME( "cvGetTrainSamples" ); - - __BEGIN__; - - int i, j, var_count, sample_count, s_step, v_step; - bool copy_data; - const float* data; - const int *s_idx, *v_idx; + Mat mean = _mean.getMat(), cov = _cov.getMat(); + int dim = (int)mean.total(); - if( !CV_IS_MAT(train_data) ) - CV_ERROR( CV_StsBadArg, "Invalid or NULL training data matrix" ); + _samples.create(nsamples, dim, CV_32F); + Mat samples = _samples.getMat(); + randu(samples, 0., 1.); - var_count = var_idx ? var_idx->cols + var_idx->rows - 1 : - tflag == CV_ROW_SAMPLE ? train_data->cols : train_data->rows; - sample_count = sample_idx ? sample_idx->cols + sample_idx->rows - 1 : - tflag == CV_ROW_SAMPLE ? train_data->rows : train_data->cols; + Mat utmat; + Cholesky(cov, utmat); + int flags = mean.cols == 1 ? 0 : GEMM_3_T; - if( _var_count ) - *_var_count = var_count; - - if( _sample_count ) - *_sample_count = sample_count; - - copy_data = tflag != CV_ROW_SAMPLE || var_idx || always_copy_data; - - CV_CALL( samples = (float**)cvAlloc(sample_count*sizeof(samples[0]) + - (copy_data ? 1 : 0)*var_count*sample_count*sizeof(samples[0][0])) ); - data = train_data->data.fl; - s_step = train_data->step / sizeof(samples[0][0]); - v_step = 1; - s_idx = sample_idx ? sample_idx->data.i : 0; - v_idx = var_idx ? var_idx->data.i : 0; - - if( !copy_data ) + for( int i = 0; i < nsamples; i++ ) { - for( i = 0; i < sample_count; i++ ) - samples[i] = (float*)(data + (s_idx ? s_idx[i] : i)*s_step); - } - else - { - samples[0] = (float*)(samples + sample_count); - if( tflag != CV_ROW_SAMPLE ) - CV_SWAP( s_step, v_step, i ); - - for( i = 0; i < sample_count; i++ ) - { - float* dst = samples[i] = samples[0] + i*var_count; - const float* src = data + (s_idx ? s_idx[i] : i)*s_step; - - if( !v_idx ) - for( j = 0; j < var_count; j++ ) - dst[j] = src[j*v_step]; - else - for( j = 0; j < var_count; j++ ) - dst[j] = src[v_idx[j]*v_step]; - } + Mat sample = samples.row(i); + gemm(sample, utmat, 1, mean, 1, sample, flags); } - - __END__; - - return (const float**)samples; } - -void -cvCheckTrainData( const CvMat* train_data, int tflag, - const CvMat* missing_mask, - int* var_all, int* sample_all ) -{ - CV_FUNCNAME( "cvCheckTrainData" ); - - if( var_all ) - *var_all = 0; - - if( sample_all ) - *sample_all = 0; - - __BEGIN__; - - // check parameter types and sizes - if( !CV_IS_MAT(train_data) || CV_MAT_TYPE(train_data->type) != CV_32FC1 ) - CV_ERROR( CV_StsBadArg, "train data must be floating-point matrix" ); - - if( missing_mask ) - { - if( !CV_IS_MAT(missing_mask) || !CV_IS_MASK_ARR(missing_mask) || - !CV_ARE_SIZES_EQ(train_data, missing_mask) ) - CV_ERROR( CV_StsBadArg, - "missing value mask must be 8-bit matrix of the same size as training data" ); - } - - if( tflag != CV_ROW_SAMPLE && tflag != CV_COL_SAMPLE ) - CV_ERROR( CV_StsBadArg, - "Unknown training data layout (must be CV_ROW_SAMPLE or CV_COL_SAMPLE)" ); - - if( var_all ) - *var_all = tflag == CV_ROW_SAMPLE ? train_data->cols : train_data->rows; - - if( sample_all ) - *sample_all = tflag == CV_ROW_SAMPLE ? train_data->rows : train_data->cols; - - __END__; -} - - -int -cvPrepareTrainData( const char* /*funcname*/, - const CvMat* train_data, int tflag, - const CvMat* responses, int response_type, - const CvMat* var_idx, - const CvMat* sample_idx, - bool always_copy_data, - const float*** out_train_samples, - int* _sample_count, - int* _var_count, - int* _var_all, - CvMat** out_responses, - CvMat** out_response_map, - CvMat** out_var_idx, - CvMat** out_sample_idx ) -{ - int ok = 0; - CvMat* _var_idx = 0; - CvMat* _sample_idx = 0; - CvMat* _responses = 0; - int sample_all = 0, sample_count = 0, var_all = 0, var_count = 0; - - CV_FUNCNAME( "cvPrepareTrainData" ); - - // step 0. clear all the output pointers to ensure we do not try - // to call free() with uninitialized pointers - if( out_responses ) - *out_responses = 0; - - if( out_response_map ) - *out_response_map = 0; - - if( out_var_idx ) - *out_var_idx = 0; - - if( out_sample_idx ) - *out_sample_idx = 0; - - if( out_train_samples ) - *out_train_samples = 0; - - if( _sample_count ) - *_sample_count = 0; - - if( _var_count ) - *_var_count = 0; - - if( _var_all ) - *_var_all = 0; - - __BEGIN__; - - if( !out_train_samples ) - CV_ERROR( CV_StsBadArg, "output pointer to train samples is NULL" ); - - CV_CALL( cvCheckTrainData( train_data, tflag, 0, &var_all, &sample_all )); - - if( sample_idx ) - CV_CALL( _sample_idx = cvPreprocessIndexArray( sample_idx, sample_all )); - if( var_idx ) - CV_CALL( _var_idx = cvPreprocessIndexArray( var_idx, var_all )); - - if( responses ) - { - if( !out_responses ) - CV_ERROR( CV_StsNullPtr, "output response pointer is NULL" ); - - if( response_type == CV_VAR_NUMERICAL ) - { - CV_CALL( _responses = cvPreprocessOrderedResponses( responses, - _sample_idx, sample_all )); - } - else - { - CV_CALL( _responses = cvPreprocessCategoricalResponses( responses, - _sample_idx, sample_all, out_response_map, 0 )); - } - } - - CV_CALL( *out_train_samples = - cvGetTrainSamples( train_data, tflag, _var_idx, _sample_idx, - &var_count, &sample_count, always_copy_data )); - - ok = 1; - - __END__; - - if( ok ) - { - if( out_responses ) - *out_responses = _responses, _responses = 0; - - if( out_var_idx ) - *out_var_idx = _var_idx, _var_idx = 0; - - if( out_sample_idx ) - *out_sample_idx = _sample_idx, _sample_idx = 0; - - if( _sample_count ) - *_sample_count = sample_count; - - if( _var_count ) - *_var_count = var_count; - - if( _var_all ) - *_var_all = var_all; - } - else - { - if( out_response_map ) - cvReleaseMat( out_response_map ); - cvFree( out_train_samples ); - } - - if( _responses != responses ) - cvReleaseMat( &_responses ); - cvReleaseMat( &_var_idx ); - cvReleaseMat( &_sample_idx ); - - return ok; -} - - -typedef struct CvSampleResponsePair -{ - const float* sample; - const uchar* mask; - int response; - int index; -} -CvSampleResponsePair; - - -static int -CV_CDECL icvCmpSampleResponsePairs( const void* a, const void* b ) -{ - int ra = ((const CvSampleResponsePair*)a)->response; - int rb = ((const CvSampleResponsePair*)b)->response; - int ia = ((const CvSampleResponsePair*)a)->index; - int ib = ((const CvSampleResponsePair*)b)->index; - - return ra < rb ? -1 : ra > rb ? 1 : ia - ib; - //return (ra > rb ? -1 : 0)|(ra < rb); -} - - -void -cvSortSamplesByClasses( const float** samples, const CvMat* classes, - int* class_ranges, const uchar** mask ) -{ - CvSampleResponsePair* pairs = 0; - CV_FUNCNAME( "cvSortSamplesByClasses" ); - - __BEGIN__; - - int i, k = 0, sample_count; - - if( !samples || !classes || !class_ranges ) - CV_ERROR( CV_StsNullPtr, "INTERNAL ERROR: some of the args are NULL pointers" ); - - if( classes->rows != 1 || CV_MAT_TYPE(classes->type) != CV_32SC1 ) - CV_ERROR( CV_StsBadArg, "classes array must be a single row of integers" ); - - sample_count = classes->cols; - CV_CALL( pairs = (CvSampleResponsePair*)cvAlloc( (sample_count+1)*sizeof(pairs[0]))); - - for( i = 0; i < sample_count; i++ ) - { - pairs[i].sample = samples[i]; - pairs[i].mask = (mask) ? (mask[i]) : 0; - pairs[i].response = classes->data.i[i]; - pairs[i].index = i; - assert( classes->data.i[i] >= 0 ); - } - - qsort( pairs, sample_count, sizeof(pairs[0]), icvCmpSampleResponsePairs ); - pairs[sample_count].response = -1; - class_ranges[0] = 0; - - for( i = 0; i < sample_count; i++ ) - { - samples[i] = pairs[i].sample; - if (mask) - mask[i] = pairs[i].mask; - classes->data.i[i] = pairs[i].response; - - if( pairs[i].response != pairs[i+1].response ) - class_ranges[++k] = i+1; - } - - __END__; - - cvFree( &pairs ); -} - - -void -cvPreparePredictData( const CvArr* _sample, int dims_all, - const CvMat* comp_idx, int class_count, - const CvMat* prob, float** _row_sample, - int as_sparse ) -{ - float* row_sample = 0; - int* inverse_comp_idx = 0; - - CV_FUNCNAME( "cvPreparePredictData" ); - - __BEGIN__; - - const CvMat* sample = (const CvMat*)_sample; - float* sample_data; - int sample_step; - int is_sparse = CV_IS_SPARSE_MAT(sample); - int d, sizes[CV_MAX_DIM]; - int i, dims_selected; - int vec_size; - - if( !is_sparse && !CV_IS_MAT(sample) ) - CV_ERROR( !sample ? CV_StsNullPtr : CV_StsBadArg, "The sample is not a valid vector" ); - - if( cvGetElemType( sample ) != CV_32FC1 ) - CV_ERROR( CV_StsUnsupportedFormat, "Input sample must have 32fC1 type" ); - - CV_CALL( d = cvGetDims( sample, sizes )); - - if( !((is_sparse && d == 1) || (!is_sparse && d == 2 && (sample->rows == 1 || sample->cols == 1))) ) - CV_ERROR( CV_StsBadSize, "Input sample must be 1-dimensional vector" ); - - if( d == 1 ) - sizes[1] = 1; - - if( sizes[0] + sizes[1] - 1 != dims_all ) - CV_ERROR( CV_StsUnmatchedSizes, - "The sample size is different from what has been used for training" ); - - if( !_row_sample ) - CV_ERROR( CV_StsNullPtr, "INTERNAL ERROR: The row_sample pointer is NULL" ); - - if( comp_idx && (!CV_IS_MAT(comp_idx) || comp_idx->rows != 1 || - CV_MAT_TYPE(comp_idx->type) != CV_32SC1) ) - CV_ERROR( CV_StsBadArg, "INTERNAL ERROR: invalid comp_idx" ); - - dims_selected = comp_idx ? comp_idx->cols : dims_all; - - if( prob ) - { - if( !CV_IS_MAT(prob) ) - CV_ERROR( CV_StsBadArg, "The output matrix of probabilities is invalid" ); - - if( (prob->rows != 1 && prob->cols != 1) || - (CV_MAT_TYPE(prob->type) != CV_32FC1 && - CV_MAT_TYPE(prob->type) != CV_64FC1) ) - CV_ERROR( CV_StsBadSize, - "The matrix of probabilities must be 1-dimensional vector of 32fC1 type" ); - - if( prob->rows + prob->cols - 1 != class_count ) - CV_ERROR( CV_StsUnmatchedSizes, - "The vector of probabilities must contain as many elements as " - "the number of classes in the training set" ); - } - - vec_size = !as_sparse ? dims_selected*sizeof(row_sample[0]) : - (dims_selected + 1)*sizeof(CvSparseVecElem32f); - - if( CV_IS_MAT(sample) ) - { - sample_data = sample->data.fl; - sample_step = CV_IS_MAT_CONT(sample->type) ? 1 : sample->step/sizeof(row_sample[0]); - - if( !comp_idx && CV_IS_MAT_CONT(sample->type) && !as_sparse ) - *_row_sample = sample_data; - else - { - CV_CALL( row_sample = (float*)cvAlloc( vec_size )); - - if( !comp_idx ) - for( i = 0; i < dims_selected; i++ ) - row_sample[i] = sample_data[sample_step*i]; - else - { - int* comp = comp_idx->data.i; - for( i = 0; i < dims_selected; i++ ) - row_sample[i] = sample_data[sample_step*comp[i]]; - } - - *_row_sample = row_sample; - } - - if( as_sparse ) - { - const float* src = (const float*)row_sample; - CvSparseVecElem32f* dst = (CvSparseVecElem32f*)row_sample; - - dst[dims_selected].idx = -1; - for( i = dims_selected - 1; i >= 0; i-- ) - { - dst[i].idx = i; - dst[i].val = src[i]; - } - } - } - else - { - CvSparseNode* node; - CvSparseMatIterator mat_iterator; - const CvSparseMat* sparse = (const CvSparseMat*)sample; - assert( is_sparse ); - - node = cvInitSparseMatIterator( sparse, &mat_iterator ); - CV_CALL( row_sample = (float*)cvAlloc( vec_size )); - - if( comp_idx ) - { - CV_CALL( inverse_comp_idx = (int*)cvAlloc( dims_all*sizeof(int) )); - memset( inverse_comp_idx, -1, dims_all*sizeof(int) ); - for( i = 0; i < dims_selected; i++ ) - inverse_comp_idx[comp_idx->data.i[i]] = i; - } - - if( !as_sparse ) - { - memset( row_sample, 0, vec_size ); - - for( ; node != 0; node = cvGetNextSparseNode(&mat_iterator) ) - { - int idx = *CV_NODE_IDX( sparse, node ); - if( inverse_comp_idx ) - { - idx = inverse_comp_idx[idx]; - if( idx < 0 ) - continue; - } - row_sample[idx] = *(float*)CV_NODE_VAL( sparse, node ); - } - } - else - { - CvSparseVecElem32f* ptr = (CvSparseVecElem32f*)row_sample; - - for( ; node != 0; node = cvGetNextSparseNode(&mat_iterator) ) - { - int idx = *CV_NODE_IDX( sparse, node ); - if( inverse_comp_idx ) - { - idx = inverse_comp_idx[idx]; - if( idx < 0 ) - continue; - } - ptr->idx = idx; - ptr->val = *(float*)CV_NODE_VAL( sparse, node ); - ptr++; - } - - qsort( row_sample, ptr - (CvSparseVecElem32f*)row_sample, - sizeof(ptr[0]), icvCmpSparseVecElems ); - ptr->idx = -1; - } - - *_row_sample = row_sample; - } - - __END__; - - if( inverse_comp_idx ) - cvFree( &inverse_comp_idx ); - - if( cvGetErrStatus() < 0 && _row_sample ) - { - cvFree( &row_sample ); - *_row_sample = 0; - } -} - - -static void -icvConvertDataToSparse( const uchar* src, int src_step, int src_type, - uchar* dst, int dst_step, int dst_type, - CvSize size, int* idx ) -{ - CV_FUNCNAME( "icvConvertDataToSparse" ); - - __BEGIN__; - - int i, j; - src_type = CV_MAT_TYPE(src_type); - dst_type = CV_MAT_TYPE(dst_type); - - if( CV_MAT_CN(src_type) != 1 || CV_MAT_CN(dst_type) != 1 ) - CV_ERROR( CV_StsUnsupportedFormat, "The function supports only single-channel arrays" ); - - if( src_step == 0 ) - src_step = CV_ELEM_SIZE(src_type); - - if( dst_step == 0 ) - dst_step = CV_ELEM_SIZE(dst_type); - - // if there is no "idx" and if both arrays are continuous, - // do the whole processing (copying or conversion) in a single loop - if( !idx && CV_ELEM_SIZE(src_type)*size.width == src_step && - CV_ELEM_SIZE(dst_type)*size.width == dst_step ) - { - size.width *= size.height; - size.height = 1; - } - - if( src_type == dst_type ) - { - int full_width = CV_ELEM_SIZE(dst_type)*size.width; - - if( full_width == sizeof(int) ) // another common case: copy int's or float's - for( i = 0; i < size.height; i++, src += src_step ) - *(int*)(dst + dst_step*(idx ? idx[i] : i)) = *(int*)src; - else - for( i = 0; i < size.height; i++, src += src_step ) - memcpy( dst + dst_step*(idx ? idx[i] : i), src, full_width ); - } - else if( src_type == CV_32SC1 && (dst_type == CV_32FC1 || dst_type == CV_64FC1) ) - for( i = 0; i < size.height; i++, src += src_step ) - { - uchar* _dst = dst + dst_step*(idx ? idx[i] : i); - if( dst_type == CV_32FC1 ) - for( j = 0; j < size.width; j++ ) - ((float*)_dst)[j] = (float)((int*)src)[j]; - else - for( j = 0; j < size.width; j++ ) - ((double*)_dst)[j] = ((int*)src)[j]; - } - else if( (src_type == CV_32FC1 || src_type == CV_64FC1) && dst_type == CV_32SC1 ) - for( i = 0; i < size.height; i++, src += src_step ) - { - uchar* _dst = dst + dst_step*(idx ? idx[i] : i); - if( src_type == CV_32FC1 ) - for( j = 0; j < size.width; j++ ) - ((int*)_dst)[j] = cvRound(((float*)src)[j]); - else - for( j = 0; j < size.width; j++ ) - ((int*)_dst)[j] = cvRound(((double*)src)[j]); - } - else if( (src_type == CV_32FC1 && dst_type == CV_64FC1) || - (src_type == CV_64FC1 && dst_type == CV_32FC1) ) - for( i = 0; i < size.height; i++, src += src_step ) - { - uchar* _dst = dst + dst_step*(idx ? idx[i] : i); - if( src_type == CV_32FC1 ) - for( j = 0; j < size.width; j++ ) - ((double*)_dst)[j] = ((float*)src)[j]; - else - for( j = 0; j < size.width; j++ ) - ((float*)_dst)[j] = (float)((double*)src)[j]; - } - else - CV_ERROR( CV_StsUnsupportedFormat, "Unsupported combination of input and output vectors" ); - - __END__; -} - - -void -cvWritebackLabels( const CvMat* labels, CvMat* dst_labels, - const CvMat* centers, CvMat* dst_centers, - const CvMat* probs, CvMat* dst_probs, - const CvMat* sample_idx, int samples_all, - const CvMat* comp_idx, int dims_all ) -{ - CV_FUNCNAME( "cvWritebackLabels" ); - - __BEGIN__; - - int samples_selected = samples_all, dims_selected = dims_all; - - if( dst_labels && !CV_IS_MAT(dst_labels) ) - CV_ERROR( CV_StsBadArg, "Array of output labels is not a valid matrix" ); - - if( dst_centers ) - if( !ICV_IS_MAT_OF_TYPE(dst_centers, CV_32FC1) && - !ICV_IS_MAT_OF_TYPE(dst_centers, CV_64FC1) ) - CV_ERROR( CV_StsBadArg, "Array of cluster centers is not a valid matrix" ); - - if( dst_probs && !CV_IS_MAT(dst_probs) ) - CV_ERROR( CV_StsBadArg, "Probability matrix is not valid" ); - - if( sample_idx ) - { - CV_ASSERT( sample_idx->rows == 1 && CV_MAT_TYPE(sample_idx->type) == CV_32SC1 ); - samples_selected = sample_idx->cols; - } - - if( comp_idx ) - { - CV_ASSERT( comp_idx->rows == 1 && CV_MAT_TYPE(comp_idx->type) == CV_32SC1 ); - dims_selected = comp_idx->cols; - } - - if( dst_labels && (!labels || labels->data.ptr != dst_labels->data.ptr) ) - { - if( !labels ) - CV_ERROR( CV_StsNullPtr, "NULL labels" ); - - CV_ASSERT( labels->rows == 1 ); - - if( dst_labels->rows != 1 && dst_labels->cols != 1 ) - CV_ERROR( CV_StsBadSize, "Array of output labels should be 1d vector" ); - - if( dst_labels->rows + dst_labels->cols - 1 != samples_all ) - CV_ERROR( CV_StsUnmatchedSizes, - "Size of vector of output labels is not equal to the total number of input samples" ); - - CV_ASSERT( labels->cols == samples_selected ); - - CV_CALL( icvConvertDataToSparse( labels->data.ptr, labels->step, labels->type, - dst_labels->data.ptr, dst_labels->step, dst_labels->type, - cvSize( 1, samples_selected ), sample_idx ? sample_idx->data.i : 0 )); - } - - if( dst_centers && (!centers || centers->data.ptr != dst_centers->data.ptr) ) - { - int i; - - if( !centers ) - CV_ERROR( CV_StsNullPtr, "NULL centers" ); - - if( centers->rows != dst_centers->rows ) - CV_ERROR( CV_StsUnmatchedSizes, "Invalid number of rows in matrix of output centers" ); - - if( dst_centers->cols != dims_all ) - CV_ERROR( CV_StsUnmatchedSizes, - "Number of columns in matrix of output centers is " - "not equal to the total number of components in the input samples" ); - - CV_ASSERT( centers->cols == dims_selected ); - - for( i = 0; i < centers->rows; i++ ) - CV_CALL( icvConvertDataToSparse( centers->data.ptr + i*centers->step, 0, centers->type, - dst_centers->data.ptr + i*dst_centers->step, 0, dst_centers->type, - cvSize( 1, dims_selected ), comp_idx ? comp_idx->data.i : 0 )); - } - - if( dst_probs && (!probs || probs->data.ptr != dst_probs->data.ptr) ) - { - if( !probs ) - CV_ERROR( CV_StsNullPtr, "NULL probs" ); - - if( probs->cols != dst_probs->cols ) - CV_ERROR( CV_StsUnmatchedSizes, "Invalid number of columns in output probability matrix" ); - - if( dst_probs->rows != samples_all ) - CV_ERROR( CV_StsUnmatchedSizes, - "Number of rows in output probability matrix is " - "not equal to the total number of input samples" ); - - CV_ASSERT( probs->rows == samples_selected ); - - CV_CALL( icvConvertDataToSparse( probs->data.ptr, probs->step, probs->type, - dst_probs->data.ptr, dst_probs->step, dst_probs->type, - cvSize( probs->cols, samples_selected ), - sample_idx ? sample_idx->data.i : 0 )); - } - - __END__; -} - -#if 0 -CV_IMPL void -cvStatModelMultiPredict( const CvStatModel* stat_model, - const CvArr* predict_input, - int flags, CvMat* predict_output, - CvMat* probs, const CvMat* sample_idx ) -{ - CvMemStorage* storage = 0; - CvMat* sample_idx_buffer = 0; - CvSparseMat** sparse_rows = 0; - int samples_selected = 0; - - CV_FUNCNAME( "cvStatModelMultiPredict" ); - - __BEGIN__; - - int i; - int predict_output_step = 1, sample_idx_step = 1; - int type; - int d, sizes[CV_MAX_DIM]; - int tflag = flags == CV_COL_SAMPLE; - int samples_all, dims_all; - int is_sparse = CV_IS_SPARSE_MAT(predict_input); - CvMat predict_input_part; - CvArr* sample = &predict_input_part; - CvMat probs_part; - CvMat* probs1 = probs ? &probs_part : 0; - - if( !CV_IS_STAT_MODEL(stat_model) ) - CV_ERROR( !stat_model ? CV_StsNullPtr : CV_StsBadArg, "Invalid statistical model" ); - - if( !stat_model->predict ) - CV_ERROR( CV_StsNotImplemented, "There is no \"predict\" method" ); - - if( !predict_input || !predict_output ) - CV_ERROR( CV_StsNullPtr, "NULL input or output matrices" ); - - if( !is_sparse && !CV_IS_MAT(predict_input) ) - CV_ERROR( CV_StsBadArg, "predict_input should be a matrix or a sparse matrix" ); - - if( !CV_IS_MAT(predict_output) ) - CV_ERROR( CV_StsBadArg, "predict_output should be a matrix" ); - - type = cvGetElemType( predict_input ); - if( type != CV_32FC1 || - (CV_MAT_TYPE(predict_output->type) != CV_32FC1 && - CV_MAT_TYPE(predict_output->type) != CV_32SC1 )) - CV_ERROR( CV_StsUnsupportedFormat, "The input or output matrix has unsupported format" ); - - CV_CALL( d = cvGetDims( predict_input, sizes )); - if( d > 2 ) - CV_ERROR( CV_StsBadSize, "The input matrix should be 1- or 2-dimensional" ); - - if( !tflag ) - { - samples_all = samples_selected = sizes[0]; - dims_all = sizes[1]; - } - else - { - samples_all = samples_selected = sizes[1]; - dims_all = sizes[0]; - } - - if( sample_idx ) - { - if( !CV_IS_MAT(sample_idx) ) - CV_ERROR( CV_StsBadArg, "Invalid sample_idx matrix" ); - - if( sample_idx->cols != 1 && sample_idx->rows != 1 ) - CV_ERROR( CV_StsBadSize, "sample_idx must be 1-dimensional matrix" ); - - samples_selected = sample_idx->rows + sample_idx->cols - 1; - - if( CV_MAT_TYPE(sample_idx->type) == CV_32SC1 ) - { - if( samples_selected > samples_all ) - CV_ERROR( CV_StsBadSize, "sample_idx is too large vector" ); - } - else if( samples_selected != samples_all ) - CV_ERROR( CV_StsUnmatchedSizes, "sample_idx has incorrect size" ); - - sample_idx_step = sample_idx->step ? - sample_idx->step / CV_ELEM_SIZE(sample_idx->type) : 1; - } - - if( predict_output->rows != 1 && predict_output->cols != 1 ) - CV_ERROR( CV_StsBadSize, "predict_output should be a 1-dimensional matrix" ); - - if( predict_output->rows + predict_output->cols - 1 != samples_all ) - CV_ERROR( CV_StsUnmatchedSizes, "predict_output and predict_input have uncoordinated sizes" ); - - predict_output_step = predict_output->step ? - predict_output->step / CV_ELEM_SIZE(predict_output->type) : 1; - - if( probs ) - { - if( !CV_IS_MAT(probs) ) - CV_ERROR( CV_StsBadArg, "Invalid matrix of probabilities" ); - - if( probs->rows != samples_all ) - CV_ERROR( CV_StsUnmatchedSizes, - "matrix of probabilities must have as many rows as the total number of samples" ); - - if( CV_MAT_TYPE(probs->type) != CV_32FC1 ) - CV_ERROR( CV_StsUnsupportedFormat, "matrix of probabilities must have 32fC1 type" ); - } - - if( is_sparse ) - { - CvSparseNode* node; - CvSparseMatIterator mat_iterator; - CvSparseMat* sparse = (CvSparseMat*)predict_input; - - if( sample_idx && CV_MAT_TYPE(sample_idx->type) == CV_32SC1 ) - { - CV_CALL( sample_idx_buffer = cvCreateMat( 1, samples_all, CV_8UC1 )); - cvZero( sample_idx_buffer ); - for( i = 0; i < samples_selected; i++ ) - sample_idx_buffer->data.ptr[sample_idx->data.i[i*sample_idx_step]] = 1; - samples_selected = samples_all; - sample_idx = sample_idx_buffer; - sample_idx_step = 1; - } - - CV_CALL( sparse_rows = (CvSparseMat**)cvAlloc( samples_selected*sizeof(sparse_rows[0]))); - for( i = 0; i < samples_selected; i++ ) - { - if( sample_idx && sample_idx->data.ptr[i*sample_idx_step] == 0 ) - continue; - CV_CALL( sparse_rows[i] = cvCreateSparseMat( 1, &dims_all, type )); - if( !storage ) - storage = sparse_rows[i]->heap->storage; - else - { - // hack: to decrease memory footprint, make all the sparse matrices - // reside in the same storage - int elem_size = sparse_rows[i]->heap->elem_size; - cvReleaseMemStorage( &sparse_rows[i]->heap->storage ); - sparse_rows[i]->heap = cvCreateSet( 0, sizeof(CvSet), elem_size, storage ); - } - } - - // put each row (or column) of predict_input into separate sparse matrix. - node = cvInitSparseMatIterator( sparse, &mat_iterator ); - for( ; node != 0; node = cvGetNextSparseNode( &mat_iterator )) - { - int* idx = CV_NODE_IDX( sparse, node ); - int idx0 = idx[tflag ^ 1]; - int idx1 = idx[tflag]; - - if( sample_idx && sample_idx->data.ptr[idx0*sample_idx_step] == 0 ) - continue; - - assert( sparse_rows[idx0] != 0 ); - *(float*)cvPtrND( sparse, &idx1, 0, 1, 0 ) = *(float*)CV_NODE_VAL( sparse, node ); - } - } - - for( i = 0; i < samples_selected; i++ ) - { - int idx = i; - float response; - - if( sample_idx ) - { - if( CV_MAT_TYPE(sample_idx->type) == CV_32SC1 ) - { - idx = sample_idx->data.i[i*sample_idx_step]; - if( (unsigned)idx >= (unsigned)samples_all ) - CV_ERROR( CV_StsOutOfRange, "Some of sample_idx elements are out of range" ); - } - else if( CV_MAT_TYPE(sample_idx->type) == CV_8UC1 && - sample_idx->data.ptr[i*sample_idx_step] == 0 ) - continue; - } - - if( !is_sparse ) - { - if( !tflag ) - cvGetRow( predict_input, &predict_input_part, idx ); - else - { - cvGetCol( predict_input, &predict_input_part, idx ); - } - } - else - sample = sparse_rows[idx]; - - if( probs ) - cvGetRow( probs, probs1, idx ); - - CV_CALL( response = stat_model->predict( stat_model, (CvMat*)sample, probs1 )); - - if( CV_MAT_TYPE(predict_output->type) == CV_32FC1 ) - predict_output->data.fl[idx*predict_output_step] = response; - else - { - CV_ASSERT( cvRound(response) == response ); - predict_output->data.i[idx*predict_output_step] = cvRound(response); - } - } - - __END__; - - if( sparse_rows ) - { - int i; - for( i = 0; i < samples_selected; i++ ) - if( sparse_rows[i] ) - { - sparse_rows[i]->heap->storage = 0; - cvReleaseSparseMat( &sparse_rows[i] ); - } - cvFree( &sparse_rows ); - } - - cvReleaseMat( &sample_idx_buffer ); - cvReleaseMemStorage( &storage ); -} -#endif - -// By P. Yarykin - begin - - -void cvCombineResponseMaps (CvMat* _responses, - const CvMat* old_response_map, - CvMat* new_response_map, - CvMat** out_response_map) -{ - int** old_data = NULL; - int** new_data = NULL; - - CV_FUNCNAME ("cvCombineResponseMaps"); - __BEGIN__ - - int i,j; - int old_n, new_n, out_n; - int samples, free_response; - int* first; - int* responses; - int* out_data; - - if( out_response_map ) - *out_response_map = 0; - -// Check input data. - if ((!ICV_IS_MAT_OF_TYPE (_responses, CV_32SC1)) || - (!ICV_IS_MAT_OF_TYPE (old_response_map, CV_32SC1)) || - (!ICV_IS_MAT_OF_TYPE (new_response_map, CV_32SC1))) - { - CV_ERROR (CV_StsBadArg, "Some of input arguments is not the CvMat") - } - -// Prepare sorted responses. - first = new_response_map->data.i; - new_n = new_response_map->cols; - CV_CALL (new_data = (int**)cvAlloc (new_n * sizeof (new_data[0]))); - for (i = 0; i < new_n; i++) - new_data[i] = first + i; - qsort (new_data, new_n, sizeof(int*), icvCmpIntegersPtr); - - first = old_response_map->data.i; - old_n = old_response_map->cols; - CV_CALL (old_data = (int**)cvAlloc (old_n * sizeof (old_data[0]))); - for (i = 0; i < old_n; i++) - old_data[i] = first + i; - qsort (old_data, old_n, sizeof(int*), icvCmpIntegersPtr); - -// Count the number of different responses. - for (i = 0, j = 0, out_n = 0; i < old_n && j < new_n; out_n++) - { - if (*old_data[i] == *new_data[j]) - { - i++; - j++; - } - else if (*old_data[i] < *new_data[j]) - i++; - else - j++; - } - out_n += old_n - i + new_n - j; - -// Create and fill the result response maps. - CV_CALL (*out_response_map = cvCreateMat (1, out_n, CV_32SC1)); - out_data = (*out_response_map)->data.i; - memcpy (out_data, first, old_n * sizeof (int)); - - free_response = old_n; - for (i = 0, j = 0; i < old_n && j < new_n; ) - { - if (*old_data[i] == *new_data[j]) - { - *new_data[j] = (int)(old_data[i] - first); - i++; - j++; - } - else if (*old_data[i] < *new_data[j]) - i++; - else - { - out_data[free_response] = *new_data[j]; - *new_data[j] = free_response++; - j++; - } - } - for (; j < new_n; j++) - { - out_data[free_response] = *new_data[j]; - *new_data[j] = free_response++; - } - CV_ASSERT (free_response == out_n); - -// Change according to out response map. - samples = _responses->cols + _responses->rows - 1; - responses = _responses->data.i; - first = new_response_map->data.i; - for (i = 0; i < samples; i++) - { - responses[i] = first[responses[i]]; - } - - __END__ - - cvFree(&old_data); - cvFree(&new_data); - -} - - -static int icvGetNumberOfCluster( double* prob_vector, int num_of_clusters, float r, - float outlier_thresh, int normalize_probs ) -{ - int max_prob_loc = 0; - - CV_FUNCNAME("icvGetNumberOfCluster"); - __BEGIN__; - - double prob, maxprob, sum; - int i; - - CV_ASSERT(prob_vector); - CV_ASSERT(num_of_clusters >= 0); - - maxprob = prob_vector[0]; - max_prob_loc = 0; - sum = maxprob; - for( i = 1; i < num_of_clusters; i++ ) - { - prob = prob_vector[i]; - sum += prob; - if( prob > maxprob ) - { - max_prob_loc = i; - maxprob = prob; - } - } - if( normalize_probs && fabs(sum - 1.) > FLT_EPSILON ) - { - for( i = 0; i < num_of_clusters; i++ ) - prob_vector[i] /= sum; - } - if( fabs(r - 1.) > FLT_EPSILON && fabs(sum - 1.) < outlier_thresh ) - max_prob_loc = -1; - - __END__; - - return max_prob_loc; - -} // End of icvGetNumberOfCluster - - -void icvFindClusterLabels( const CvMat* probs, float outlier_thresh, float r, - const CvMat* labels ) -{ - CvMat* counts = 0; - - CV_FUNCNAME("icvFindClusterLabels"); - __BEGIN__; - - int nclusters, nsamples; - int i, j; - double* probs_data; - - CV_ASSERT( ICV_IS_MAT_OF_TYPE(probs, CV_64FC1) ); - CV_ASSERT( ICV_IS_MAT_OF_TYPE(labels, CV_32SC1) ); - - nclusters = probs->cols; - nsamples = probs->rows; - CV_ASSERT( nsamples == labels->cols ); - - CV_CALL( counts = cvCreateMat( 1, nclusters + 1, CV_32SC1 ) ); - CV_CALL( cvSetZero( counts )); - for( i = 0; i < nsamples; i++ ) - { - labels->data.i[i] = icvGetNumberOfCluster( probs->data.db + i*probs->cols, - nclusters, r, outlier_thresh, 1 ); - counts->data.i[labels->data.i[i] + 1]++; - } - CV_ASSERT((int)cvSum(counts).val[0] == nsamples); - // Filling empty clusters with the vector, that has the maximal probability - for( j = 0; j < nclusters; j++ ) // outliers are ignored - { - int maxprob_loc = -1; - double maxprob = 0; - - if( counts->data.i[j+1] ) // j-th class is not empty - continue; - // look for the presentative, which is not lonely in it's cluster - // and that has a maximal probability among all these vectors - probs_data = probs->data.db; - for( i = 0; i < nsamples; i++, probs_data++ ) - { - int label = labels->data.i[i]; - double prob; - if( counts->data.i[label+1] == 0 || - (counts->data.i[label+1] <= 1 && label != -1) ) - continue; - prob = *probs_data; - if( prob >= maxprob ) - { - maxprob = prob; - maxprob_loc = i; - } - } - // maxprob_loc == 0 <=> number of vectors less then number of clusters - CV_ASSERT( maxprob_loc >= 0 ); - counts->data.i[labels->data.i[maxprob_loc] + 1]--; - labels->data.i[maxprob_loc] = j; - counts->data.i[j + 1]++; - } - - __END__; - - cvReleaseMat( &counts ); -} // End of icvFindClusterLabels +}} /* End of file */ diff --git a/modules/ml/src/knearest.cpp b/modules/ml/src/knearest.cpp index a05a30da86..6824d26e89 100644 --- a/modules/ml/src/knearest.cpp +++ b/modules/ml/src/knearest.cpp @@ -7,9 +7,11 @@ // copy or use the software. // // -// Intel License Agreement +// License Agreement +// For Open Source Computer Vision Library // // Copyright (C) 2000, Intel Corporation, all rights reserved. +// Copyright (C) 2014, Itseez Inc, all rights reserved. // Third party copyrights are property of their respective owners. // // Redistribution and use in source and binary forms, with or without modification, @@ -22,7 +24,7 @@ // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // -// * The name of Intel Corporation may not be used to endorse or promote products +// * The name of the copyright holders may not be used to endorse or promote products // derived from this software without specific prior written permission. // // This software is provided by the copyright holders and contributors "as is" and @@ -41,442 +43,314 @@ #include "precomp.hpp" /****************************************************************************************\ -* K-Nearest Neighbors Classifier * +* K-Nearest Neighbors Classifier * \****************************************************************************************/ -// k Nearest Neighbors -CvKNearest::CvKNearest() -{ - samples = 0; - clear(); -} - - -CvKNearest::~CvKNearest() -{ - clear(); -} - +namespace cv { +namespace ml { -CvKNearest::CvKNearest( const CvMat* _train_data, const CvMat* _responses, - const CvMat* _sample_idx, bool _is_regression, int _max_k ) +class KNearestImpl : public KNearest { - samples = 0; - train( _train_data, _responses, _sample_idx, _is_regression, _max_k, false ); -} - - -void CvKNearest::clear() -{ - while( samples ) +public: + KNearestImpl(bool __isClassifier=true) { - CvVectors* next_samples = samples->next; - cvFree( &samples->data.fl ); - cvFree( &samples ); - samples = next_samples; + defaultK = 3; + _isClassifier = __isClassifier; } - var_count = 0; - total = 0; - max_k = 0; -} - - -int CvKNearest::get_max_k() const { return max_k; } -int CvKNearest::get_var_count() const { return var_count; } + virtual ~KNearestImpl() {} -bool CvKNearest::is_regression() const { return regression; } + bool isClassifier() const { return _isClassifier; } + bool isTrained() const { return !samples.empty(); } -int CvKNearest::get_sample_count() const { return total; } + String getDefaultModelName() const { return "opencv_ml_knn"; } -bool CvKNearest::train( const CvMat* _train_data, const CvMat* _responses, - const CvMat* _sample_idx, bool _is_regression, - int _max_k, bool _update_base ) -{ - bool ok = false; - CvMat* responses = 0; - - CV_FUNCNAME( "CvKNearest::train" ); - - __BEGIN__; - - CvVectors* _samples = 0; - float** _data = 0; - int _count = 0, _dims = 0, _dims_all = 0, _rsize = 0; - - if( !_update_base ) - clear(); - - // Prepare training data and related parameters. - // Treat categorical responses as ordered - to prevent class label compression and - // to enable entering new classes in the updates - CV_CALL( cvPrepareTrainData( "CvKNearest::train", _train_data, CV_ROW_SAMPLE, - _responses, CV_VAR_ORDERED, 0, _sample_idx, true, (const float***)&_data, - &_count, &_dims, &_dims_all, &responses, 0, 0 )); - - if( !responses ) - CV_ERROR( CV_StsNoMem, "Could not allocate memory for responses" ); - - if( _update_base && _dims != var_count ) - CV_ERROR( CV_StsBadArg, "The newly added data have different dimensionality" ); - - if( !_update_base ) + void clear() { - if( _max_k < 1 ) - CV_ERROR( CV_StsOutOfRange, "max_k must be a positive number" ); - - regression = _is_regression; - var_count = _dims; - max_k = _max_k; + samples.release(); + responses.release(); } - _rsize = _count*sizeof(float); - CV_CALL( _samples = (CvVectors*)cvAlloc( sizeof(*_samples) + _rsize )); - _samples->next = samples; - _samples->type = CV_32F; - _samples->data.fl = _data; - _samples->count = _count; - total += _count; + int getVarCount() const { return samples.cols; } - samples = _samples; - memcpy( _samples + 1, responses->data.fl, _rsize ); + bool train( const Ptr& data, int flags ) + { + Mat new_samples = data->getTrainSamples(ROW_SAMPLE); + Mat new_responses; + data->getTrainResponses().convertTo(new_responses, CV_32F); + bool update = (flags & UPDATE_MODEL) != 0 && !samples.empty(); + + CV_Assert( new_samples.type() == CV_32F ); - ok = true; + if( !update ) + { + clear(); + } + else + { + CV_Assert( new_samples.cols == samples.cols && + new_responses.cols == responses.cols ); + } - __END__; + samples.push_back(new_samples); + responses.push_back(new_responses); - if( responses && responses->data.ptr != _responses->data.ptr ) - cvReleaseMat(&responses); + return true; + } - return ok; -} + void findNearestCore( const Mat& _samples, int k0, const Range& range, + Mat* results, Mat* neighbor_responses, + Mat* dists, float* presult ) const + { + int testidx, baseidx, i, j, d = samples.cols, nsamples = samples.rows; + int testcount = range.end - range.start; + int k = std::min(k0, nsamples); + AutoBuffer buf(testcount*k*2); + float* dbuf = buf; + float* rbuf = dbuf + testcount*k; + const float* rptr = responses.ptr(); -void CvKNearest::find_neighbors_direct( const CvMat* _samples, int k, int start, int end, - float* neighbor_responses, const float** neighbors, float* dist ) const -{ - int i, j, count = end - start, k1 = 0, k2 = 0, d = var_count; - CvVectors* s = samples; + for( testidx = 0; testidx < testcount; testidx++ ) + { + for( i = 0; i < k; i++ ) + { + dbuf[testidx*k + i] = FLT_MAX; + rbuf[testidx*k + i] = 0.f; + } + } - for( ; s != 0; s = s->next ) - { - int n = s->count; - for( j = 0; j < n; j++ ) + for( baseidx = 0; baseidx < nsamples; baseidx++ ) { - for( i = 0; i < count; i++ ) + for( testidx = 0; testidx < testcount; testidx++ ) { - double sum = 0; - Cv32suf si; - const float* v = s->data.fl[j]; - const float* u = (float*)(_samples->data.ptr + _samples->step*(start + i)); - Cv32suf* dd = (Cv32suf*)(dist + i*k); - float* nr; - const float** nn; - int t, ii, ii1; - - for( t = 0; t <= d - 4; t += 4 ) + const float* v = samples.ptr(baseidx); + const float* u = _samples.ptr(testidx + range.start); + + float s = 0; + for( i = 0; i <= d - 4; i += 4 ) { - double t0 = u[t] - v[t], t1 = u[t+1] - v[t+1]; - double t2 = u[t+2] - v[t+2], t3 = u[t+3] - v[t+3]; - sum += t0*t0 + t1*t1 + t2*t2 + t3*t3; + float t0 = u[i] - v[i], t1 = u[i+1] - v[i+1]; + float t2 = u[i+2] - v[i+2], t3 = u[i+3] - v[i+3]; + s += t0*t0 + t1*t1 + t2*t2 + t3*t3; } - for( ; t < d; t++ ) + for( ; i < d; i++ ) { - double t0 = u[t] - v[t]; - sum += t0*t0; + float t0 = u[i] - v[i]; + s += t0*t0; } - si.f = (float)sum; - for( ii = k1-1; ii >= 0; ii-- ) - if( si.i > dd[ii].i ) + Cv32suf si; + si.f = (float)s; + Cv32suf* dd = (Cv32suf*)(&dbuf[testidx*k]); + float* nr = &rbuf[testidx*k]; + + for( i = k; i > 0; i-- ) + if( si.i >= dd[i-1].i ) break; - if( ii >= k-1 ) + if( i >= k ) continue; - nr = neighbor_responses + i*k; - nn = neighbors ? neighbors + (start + i)*k : 0; - for( ii1 = k2 - 1; ii1 > ii; ii1-- ) + for( j = k-2; j >= i; j-- ) { - dd[ii1+1].i = dd[ii1].i; - nr[ii1+1] = nr[ii1]; - if( nn ) nn[ii1+1] = nn[ii1]; + dd[j+1].i = dd[j].i; + nr[j+1] = nr[j]; } - dd[ii+1].i = si.i; - nr[ii+1] = ((float*)(s + 1))[j]; - if( nn ) - nn[ii+1] = v; + dd[i].i = si.i; + nr[i] = rptr[baseidx]; } - k1 = MIN( k1+1, k ); - k2 = MIN( k1, k-1 ); } - } -} + float result = 0.f; + float inv_scale = 1./k; -float CvKNearest::write_results( int k, int k1, int start, int end, - const float* neighbor_responses, const float* dist, - CvMat* _results, CvMat* _neighbor_responses, - CvMat* _dist, Cv32suf* sort_buf ) const -{ - float result = 0.f; - int i, j, j1, count = end - start; - double inv_scale = 1./k1; - int rstep = _results && !CV_IS_MAT_CONT(_results->type) ? _results->step/sizeof(result) : 1; - - for( i = 0; i < count; i++ ) - { - const Cv32suf* nr = (const Cv32suf*)(neighbor_responses + i*k); - float* dst; - float r; - if( _results || start+i == 0 ) + for( testidx = 0; testidx < testcount; testidx++ ) { - if( regression ) + if( neighbor_responses ) { - double s = 0; - for( j = 0; j < k1; j++ ) - s += nr[j].f; - r = (float)(s*inv_scale); + float* nr = neighbor_responses->ptr(testidx + range.start); + for( j = 0; j < k; j++ ) + nr[j] = rbuf[testidx*k + j]; + for( ; j < k0; j++ ) + nr[j] = 0.f; } - else - { - int prev_start = 0, best_count = 0, cur_count; - Cv32suf best_val; - for( j = 0; j < k1; j++ ) - sort_buf[j].i = nr[j].i; + if( dists ) + { + float* dptr = dists->ptr(testidx + range.start); + for( j = 0; j < k; j++ ) + dptr[j] = dbuf[testidx*k + j]; + for( ; j < k0; j++ ) + dptr[j] = 0.f; + } - for( j = k1-1; j > 0; j-- ) + if( results || testidx+range.start == 0 ) + { + if( !_isClassifier || k == 1 ) { - bool swap_fl = false; - for( j1 = 0; j1 < j; j1++ ) - if( sort_buf[j1].i > sort_buf[j1+1].i ) + float s = 0.f; + for( j = 0; j < k; j++ ) + s += rbuf[testidx*k + j]; + result = (float)(s*inv_scale); + } + else + { + float* rp = rbuf + testidx*k; + for( j = k-1; j > 0; j-- ) + { + bool swap_fl = false; + for( i = 0; i < j; i++ ) { - int t; - CV_SWAP( sort_buf[j1].i, sort_buf[j1+1].i, t ); - swap_fl = true; + if( rp[i] > rp[i+1] ) + { + std::swap(rp[i], rp[i+1]); + swap_fl = true; + } } - if( !swap_fl ) - break; - } + if( !swap_fl ) + break; + } - best_val.i = 0; - for( j = 1; j <= k1; j++ ) - if( j == k1 || sort_buf[j].i != sort_buf[j-1].i ) + result = rp[0]; + int prev_start = 0; + int best_count = 0; + for( j = 1; j <= k; j++ ) { - cur_count = j - prev_start; - if( best_count < cur_count ) + if( j == k || rp[j] != rp[j-1] ) { - best_count = cur_count; - best_val.i = sort_buf[j-1].i; + int count = j - prev_start; + if( best_count < count ) + { + best_count = count; + result = rp[j-1]; + } + prev_start = j; } - prev_start = j; } - r = best_val.f; + } + if( results ) + results->at(testidx + range.start) = result; + if( presult && testidx+range.start == 0 ) + *presult = result; } - - if( start+i == 0 ) - result = r; - - if( _results ) - _results->data.fl[(start + i)*rstep] = r; } + } - if( _neighbor_responses ) + struct findKNearestInvoker : public ParallelLoopBody + { + findKNearestInvoker(const KNearestImpl* _p, int _k, const Mat& __samples, + Mat* __results, Mat* __neighbor_responses, Mat* __dists, float* _presult) { - dst = (float*)(_neighbor_responses->data.ptr + - (start + i)*_neighbor_responses->step); - for( j = 0; j < k1; j++ ) - dst[j] = nr[j].f; - for( ; j < k; j++ ) - dst[j] = 0.f; + p = _p; + k = _k; + _samples = &__samples; + _results = __results; + _neighbor_responses = __neighbor_responses; + _dists = __dists; + presult = _presult; } - if( _dist ) + void operator()( const Range& range ) const { - dst = (float*)(_dist->data.ptr + (start + i)*_dist->step); - for( j = 0; j < k1; j++ ) - dst[j] = dist[j + i*k]; - for( ; j < k; j++ ) - dst[j] = 0.f; + int delta = std::min(range.end - range.start, 256); + for( int start = range.start; start < range.end; start += delta ) + { + p->findNearestCore( *_samples, k, Range(start, std::min(start + delta, range.end)), + _results, _neighbor_responses, _dists, presult ); + } } - } - return result; -} - -struct P1 : cv::ParallelLoopBody { - P1(const CvKNearest* _pointer, int _buf_sz, int _k, const CvMat* __samples, const float** __neighbors, - int _k1, CvMat* __results, CvMat* __neighbor_responses, CvMat* __dist, float* _result) - { - pointer = _pointer; - k = _k; - _samples = __samples; - _neighbors = __neighbors; - k1 = _k1; - _results = __results; - _neighbor_responses = __neighbor_responses; - _dist = __dist; - result = _result; - buf_sz = _buf_sz; - } - - const CvKNearest* pointer; - int k; - const CvMat* _samples; - const float** _neighbors; - int k1; - CvMat* _results; - CvMat* _neighbor_responses; - CvMat* _dist; - float* result; - int buf_sz; - - void operator()( const cv::Range& range ) const - { - cv::AutoBuffer buf(buf_sz); - for(int i = range.start; i < range.end; i += 1 ) + const KNearestImpl* p; + int k; + const Mat* _samples; + Mat* _results; + Mat* _neighbor_responses; + Mat* _dists; + float* presult; + }; + + float findNearest( InputArray _samples, int k, + OutputArray _results, + OutputArray _neighborResponses, + OutputArray _dists ) const { - float* neighbor_responses = &buf[0]; - float* dist = neighbor_responses + 1*k; - Cv32suf* sort_buf = (Cv32suf*)(dist + 1*k); - - pointer->find_neighbors_direct( _samples, k, i, i + 1, - neighbor_responses, _neighbors, dist ); + float result = 0.f; + CV_Assert( 0 < k ); - float r = pointer->write_results( k, k1, i, i + 1, neighbor_responses, dist, - _results, _neighbor_responses, _dist, sort_buf ); + Mat test_samples = _samples.getMat(); + CV_Assert( test_samples.type() == CV_32F && test_samples.cols == samples.cols ); + int testcount = test_samples.rows; - if( i == 0 ) - *result = r; - } - } - -}; - -float CvKNearest::find_nearest( const CvMat* _samples, int k, CvMat* _results, - const float** _neighbors, CvMat* _neighbor_responses, CvMat* _dist ) const -{ - float result = 0.f; - const int max_blk_count = 128, max_buf_sz = 1 << 12; - - if( !samples ) - CV_Error( CV_StsError, "The search tree must be constructed first using train method" ); - - if( !CV_IS_MAT(_samples) || - CV_MAT_TYPE(_samples->type) != CV_32FC1 || - _samples->cols != var_count ) - CV_Error( CV_StsBadArg, "Input samples must be floating-point matrix (x)" ); - - if( _results && (!CV_IS_MAT(_results) || - (_results->cols != 1 && _results->rows != 1) || - _results->cols + _results->rows - 1 != _samples->rows) ) - CV_Error( CV_StsBadArg, - "The results must be 1d vector containing as much elements as the number of samples" ); - - if( _results && CV_MAT_TYPE(_results->type) != CV_32FC1 && - (CV_MAT_TYPE(_results->type) != CV_32SC1 || regression)) - CV_Error( CV_StsUnsupportedFormat, - "The results must be floating-point or integer (in case of classification) vector" ); + if( testcount == 0 ) + { + _results.release(); + _neighborResponses.release(); + _dists.release(); + return 0.f; + } - if( k < 1 || k > max_k ) - CV_Error( CV_StsOutOfRange, "k must be within 1..max_k range" ); + Mat res, nr, d, *pres = 0, *pnr = 0, *pd = 0; + if( _results.needed() ) + { + _results.create(testcount, 1, CV_32F); + pres = &(res = _results.getMat()); + } + if( _neighborResponses.needed() ) + { + _neighborResponses.create(testcount, k, CV_32F); + pnr = &(nr = _neighborResponses.getMat()); + } + if( _dists.needed() ) + { + _dists.create(testcount, k, CV_32F); + pd = &(d = _dists.getMat()); + } - if( _neighbor_responses ) - { - if( !CV_IS_MAT(_neighbor_responses) || CV_MAT_TYPE(_neighbor_responses->type) != CV_32FC1 || - _neighbor_responses->rows != _samples->rows || _neighbor_responses->cols != k ) - CV_Error( CV_StsBadArg, - "The neighbor responses (if present) must be floating-point matrix of x size" ); + findKNearestInvoker invoker(this, k, test_samples, pres, pnr, pd, &result); + parallel_for_(Range(0, testcount), invoker); + //invoker(Range(0, testcount)); + return result; } - if( _dist ) + float predict(InputArray inputs, OutputArray outputs, int) const { - if( !CV_IS_MAT(_dist) || CV_MAT_TYPE(_dist->type) != CV_32FC1 || - _dist->rows != _samples->rows || _dist->cols != k ) - CV_Error( CV_StsBadArg, - "The distances from the neighbors (if present) must be floating-point matrix of x size" ); + return findNearest( inputs, defaultK, outputs, noArray(), noArray() ); } - int count = _samples->rows; - int count_scale = k*2; - int blk_count0 = MIN( count, max_blk_count ); - int buf_sz = MIN( blk_count0 * count_scale, max_buf_sz ); - blk_count0 = MAX( buf_sz/count_scale, 1 ); - blk_count0 += blk_count0 % 2; - blk_count0 = MIN( blk_count0, count ); - buf_sz = blk_count0 * count_scale + k; - int k1 = get_sample_count(); - k1 = MIN( k1, k ); - - cv::parallel_for_(cv::Range(0, count), P1(this, buf_sz, k, _samples, _neighbors, k1, - _results, _neighbor_responses, _dist, &result) - ); - - return result; -} - - -using namespace cv; - -CvKNearest::CvKNearest( const Mat& _train_data, const Mat& _responses, - const Mat& _sample_idx, bool _is_regression, int _max_k ) -{ - samples = 0; - train(_train_data, _responses, _sample_idx, _is_regression, _max_k, false ); -} - -bool CvKNearest::train( const Mat& _train_data, const Mat& _responses, - const Mat& _sample_idx, bool _is_regression, - int _max_k, bool _update_base ) -{ - CvMat tdata = _train_data, responses = _responses, sidx = _sample_idx; - - return train(&tdata, &responses, sidx.data.ptr ? &sidx : 0, _is_regression, _max_k, _update_base ); -} - - -float CvKNearest::find_nearest( const Mat& _samples, int k, Mat* _results, - const float** _neighbors, Mat* _neighbor_responses, - Mat* _dist ) const -{ - CvMat s = _samples, results, *presults = 0, nresponses, *pnresponses = 0, dist, *pdist = 0; - - if( _results ) + void write( FileStorage& fs ) const { - if(!(_results->data && (_results->type() == CV_32F || - (_results->type() == CV_32S && regression)) && - (_results->cols == 1 || _results->rows == 1) && - _results->cols + _results->rows - 1 == _samples.rows) ) - _results->create(_samples.rows, 1, CV_32F); - presults = &(results = *_results); - } + fs << "is_classifier" << (int)_isClassifier; - if( _neighbor_responses ) - { - if(!(_neighbor_responses->data && _neighbor_responses->type() == CV_32F && - _neighbor_responses->cols == k && _neighbor_responses->rows == _samples.rows) ) - _neighbor_responses->create(_samples.rows, k, CV_32F); - pnresponses = &(nresponses = *_neighbor_responses); + fs << "samples" << samples; + fs << "responses" << responses; } - if( _dist ) + void read( const FileNode& fn ) { - if(!(_dist->data && _dist->type() == CV_32F && - _dist->cols == k && _dist->rows == _samples.rows) ) - _dist->create(_samples.rows, k, CV_32F); - pdist = &(dist = *_dist); + clear(); + _isClassifier = (int)fn["is_classifier"] != 0; + + fn["samples"] >> samples; + fn["responses"] >> responses; } - return find_nearest(&s, k, presults, _neighbors, pnresponses, pdist ); -} + void setDefaultK(int _k) { defaultK = _k; } + int getDefaultK() const { return defaultK; } + Mat samples; + Mat responses; + bool _isClassifier; + int defaultK; +}; -float CvKNearest::find_nearest( const cv::Mat& _samples, int k, CV_OUT cv::Mat& results, - CV_OUT cv::Mat& neighborResponses, CV_OUT cv::Mat& dists) const +Ptr KNearest::create(bool isClassifier) { - return find_nearest(_samples, k, &results, 0, &neighborResponses, &dists); + return makePtr(isClassifier); +} + +} } /* End of file */ diff --git a/modules/ml/src/ml_init.cpp b/modules/ml/src/ml_init.cpp deleted file mode 100644 index fcf9e1c892..0000000000 --- a/modules/ml/src/ml_init.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "precomp.hpp" - -namespace cv -{ - -CV_INIT_ALGORITHM(EM, "StatModel.EM", - obj.info()->addParam(obj, "nclusters", obj.nclusters); - obj.info()->addParam(obj, "covMatType", obj.covMatType); - obj.info()->addParam(obj, "maxIters", obj.maxIters); - obj.info()->addParam(obj, "epsilon", obj.epsilon); - obj.info()->addParam(obj, "weights", obj.weights, true); - obj.info()->addParam(obj, "means", obj.means, true); - obj.info()->addParam(obj, "covs", obj.covs, true)) - -bool initModule_ml(void) -{ - Ptr em = createEM_ptr_hidden(); - return em->info() != 0; -} - -} diff --git a/modules/ml/src/nbayes.cpp b/modules/ml/src/nbayes.cpp index 938f3fbd8d..afa138b7ed 100644 --- a/modules/ml/src/nbayes.cpp +++ b/modules/ml/src/nbayes.cpp @@ -40,622 +40,425 @@ #include "precomp.hpp" -CvNormalBayesClassifier::CvNormalBayesClassifier() -{ - var_count = var_all = 0; - var_idx = 0; - cls_labels = 0; - count = 0; - sum = 0; - productsum = 0; - avg = 0; - inv_eigen_values = 0; - cov_rotate_mats = 0; - c = 0; - default_model_name = "my_nb"; -} +namespace cv { +namespace ml { +NormalBayesClassifier::~NormalBayesClassifier() {} -void CvNormalBayesClassifier::clear() +class NormalBayesClassifierImpl : public NormalBayesClassifier { - if( cls_labels ) +public: + NormalBayesClassifierImpl() { - for( int cls = 0; cls < cls_labels->cols; cls++ ) - { - cvReleaseMat( &count[cls] ); - cvReleaseMat( &sum[cls] ); - cvReleaseMat( &productsum[cls] ); - cvReleaseMat( &avg[cls] ); - cvReleaseMat( &inv_eigen_values[cls] ); - cvReleaseMat( &cov_rotate_mats[cls] ); - } + nallvars = 0; } - cvReleaseMat( &cls_labels ); - cvReleaseMat( &var_idx ); - cvReleaseMat( &c ); - cvFree( &count ); -} - - -CvNormalBayesClassifier::~CvNormalBayesClassifier() -{ - clear(); -} - - -CvNormalBayesClassifier::CvNormalBayesClassifier( - const CvMat* _train_data, const CvMat* _responses, - const CvMat* _var_idx, const CvMat* _sample_idx ) -{ - var_count = var_all = 0; - var_idx = 0; - cls_labels = 0; - count = 0; - sum = 0; - productsum = 0; - avg = 0; - inv_eigen_values = 0; - cov_rotate_mats = 0; - c = 0; - default_model_name = "my_nb"; - - train( _train_data, _responses, _var_idx, _sample_idx ); -} - - -bool CvNormalBayesClassifier::train( const CvMat* _train_data, const CvMat* _responses, - const CvMat* _var_idx, const CvMat* _sample_idx, bool update ) -{ - const float min_variation = FLT_EPSILON; - bool result = false; - CvMat* responses = 0; - const float** train_data = 0; - CvMat* __cls_labels = 0; - CvMat* __var_idx = 0; - CvMat* cov = 0; - - CV_FUNCNAME( "CvNormalBayesClassifier::train" ); - - __BEGIN__; - - int cls, nsamples = 0, _var_count = 0, _var_all = 0, nclasses = 0; - int s, c1, c2; - const int* responses_data; - - CV_CALL( cvPrepareTrainData( 0, - _train_data, CV_ROW_SAMPLE, _responses, CV_VAR_CATEGORICAL, - _var_idx, _sample_idx, false, &train_data, - &nsamples, &_var_count, &_var_all, &responses, - &__cls_labels, &__var_idx )); - - if( !update ) + bool train( const Ptr& trainData, int flags ) { - const size_t mat_size = sizeof(CvMat*); - size_t data_size; - - clear(); - - var_idx = __var_idx; - cls_labels = __cls_labels; - __var_idx = __cls_labels = 0; - var_count = _var_count; - var_all = _var_all; + const float min_variation = FLT_EPSILON; + Mat responses = trainData->getNormCatResponses(); + Mat __cls_labels = trainData->getClassLabels(); + Mat __var_idx = trainData->getVarIdx(); + Mat samples = trainData->getTrainSamples(); + int nclasses = (int)__cls_labels.total(); - nclasses = cls_labels->cols; - data_size = nclasses*6*mat_size; + int nvars = trainData->getNVars(); + int s, c1, c2, cls; - CV_CALL( count = (CvMat**)cvAlloc( data_size )); - memset( count, 0, data_size ); + int __nallvars = trainData->getNAllVars(); + bool update = (flags & UPDATE_MODEL) != 0; - sum = count + nclasses; - productsum = sum + nclasses; - avg = productsum + nclasses; - inv_eigen_values= avg + nclasses; - cov_rotate_mats = inv_eigen_values + nclasses; + if( !update ) + { + nallvars = __nallvars; + count.resize(nclasses); + sum.resize(nclasses); + productsum.resize(nclasses); + avg.resize(nclasses); + inv_eigen_values.resize(nclasses); + cov_rotate_mats.resize(nclasses); + + for( cls = 0; cls < nclasses; cls++ ) + { + count[cls] = Mat::zeros( 1, nvars, CV_32SC1 ); + sum[cls] = Mat::zeros( 1, nvars, CV_64FC1 ); + productsum[cls] = Mat::zeros( nvars, nvars, CV_64FC1 ); + avg[cls] = Mat::zeros( 1, nvars, CV_64FC1 ); + inv_eigen_values[cls] = Mat::zeros( 1, nvars, CV_64FC1 ); + cov_rotate_mats[cls] = Mat::zeros( nvars, nvars, CV_64FC1 ); + } - CV_CALL( c = cvCreateMat( 1, nclasses, CV_64FC1 )); + var_idx = __var_idx; + cls_labels = __cls_labels; - for( cls = 0; cls < nclasses; cls++ ) + c.create(1, nclasses, CV_64FC1); + } + else { - CV_CALL(count[cls] = cvCreateMat( 1, var_count, CV_32SC1 )); - CV_CALL(sum[cls] = cvCreateMat( 1, var_count, CV_64FC1 )); - CV_CALL(productsum[cls] = cvCreateMat( var_count, var_count, CV_64FC1 )); - CV_CALL(avg[cls] = cvCreateMat( 1, var_count, CV_64FC1 )); - CV_CALL(inv_eigen_values[cls] = cvCreateMat( 1, var_count, CV_64FC1 )); - CV_CALL(cov_rotate_mats[cls] = cvCreateMat( var_count, var_count, CV_64FC1 )); - CV_CALL(cvZero( count[cls] )); - CV_CALL(cvZero( sum[cls] )); - CV_CALL(cvZero( productsum[cls] )); - CV_CALL(cvZero( avg[cls] )); - CV_CALL(cvZero( inv_eigen_values[cls] )); - CV_CALL(cvZero( cov_rotate_mats[cls] )); + // check that the new training data has the same dimensionality etc. + if( nallvars != __nallvars || + var_idx.size() != __var_idx.size() || + norm(var_idx, __var_idx, NORM_INF) != 0 || + cls_labels.size() != __cls_labels.size() || + norm(cls_labels, __cls_labels, NORM_INF) != 0 ) + CV_Error( CV_StsBadArg, + "The new training data is inconsistent with the original training data; varIdx and the class labels should be the same" ); } - } - else - { - // check that the new training data has the same dimensionality etc. - if( _var_count != var_count || _var_all != var_all || !((!_var_idx && !var_idx) || - (_var_idx && var_idx && cvNorm(_var_idx,var_idx,CV_C) < DBL_EPSILON)) ) - CV_ERROR( CV_StsBadArg, - "The new training data is inconsistent with the original training data" ); - - if( cls_labels->cols != __cls_labels->cols || - cvNorm(cls_labels, __cls_labels, CV_C) > DBL_EPSILON ) - CV_ERROR( CV_StsNotImplemented, - "In the current implementation the new training data must have absolutely " - "the same set of class labels as used in the original training data" ); - - nclasses = cls_labels->cols; - } - responses_data = responses->data.i; - CV_CALL( cov = cvCreateMat( _var_count, _var_count, CV_64FC1 )); + Mat cov( nvars, nvars, CV_64FC1 ); + int nsamples = samples.rows; - /* process train data (count, sum , productsum) */ - for( s = 0; s < nsamples; s++ ) - { - cls = responses_data[s]; - int* count_data = count[cls]->data.i; - double* sum_data = sum[cls]->data.db; - double* prod_data = productsum[cls]->data.db; - const float* train_vec = train_data[s]; - - for( c1 = 0; c1 < _var_count; c1++, prod_data += _var_count ) + // process train data (count, sum , productsum) + for( s = 0; s < nsamples; s++ ) { - double val1 = train_vec[c1]; - sum_data[c1] += val1; - count_data[c1]++; - for( c2 = c1; c2 < _var_count; c2++ ) - prod_data[c2] += train_vec[c2]*val1; - } - } - cvReleaseMat( &responses ); - responses = 0; + cls = responses.at(s); + int* count_data = count[cls].ptr(); + double* sum_data = sum[cls].ptr(); + double* prod_data = productsum[cls].ptr(); + const float* train_vec = samples.ptr(s); - /* calculate avg, covariance matrix, c */ - for( cls = 0; cls < nclasses; cls++ ) - { - double det = 1; - int i, j; - CvMat* w = inv_eigen_values[cls]; - int* count_data = count[cls]->data.i; - double* avg_data = avg[cls]->data.db; - double* sum1 = sum[cls]->data.db; + for( c1 = 0; c1 < nvars; c1++, prod_data += nvars ) + { + double val1 = train_vec[c1]; + sum_data[c1] += val1; + count_data[c1]++; + for( c2 = c1; c2 < nvars; c2++ ) + prod_data[c2] += train_vec[c2]*val1; + } + } - cvCompleteSymm( productsum[cls], 0 ); + Mat vt; - for( j = 0; j < _var_count; j++ ) + // calculate avg, covariance matrix, c + for( cls = 0; cls < nclasses; cls++ ) { - int n = count_data[j]; - avg_data[j] = n ? sum1[j] / n : 0.; - } + double det = 1; + int i, j; + Mat& w = inv_eigen_values[cls]; + int* count_data = count[cls].ptr(); + double* avg_data = avg[cls].ptr(); + double* sum1 = sum[cls].ptr(); - count_data = count[cls]->data.i; - avg_data = avg[cls]->data.db; - sum1 = sum[cls]->data.db; + completeSymm(productsum[cls], 0); - for( i = 0; i < _var_count; i++ ) - { - double* avg2_data = avg[cls]->data.db; - double* sum2 = sum[cls]->data.db; - double* prod_data = productsum[cls]->data.db + i*_var_count; - double* cov_data = cov->data.db + i*_var_count; - double s1val = sum1[i]; - double avg1 = avg_data[i]; - int _count = count_data[i]; - - for( j = 0; j <= i; j++ ) + for( j = 0; j < nvars; j++ ) { - double avg2 = avg2_data[j]; - double cov_val = prod_data[j] - avg1 * sum2[j] - avg2 * s1val + avg1 * avg2 * _count; - cov_val = (_count > 1) ? cov_val / (_count - 1) : cov_val; - cov_data[j] = cov_val; + int n = count_data[j]; + avg_data[j] = n ? sum1[j] / n : 0.; } - } - - CV_CALL( cvCompleteSymm( cov, 1 )); - CV_CALL( cvSVD( cov, w, cov_rotate_mats[cls], 0, CV_SVD_U_T )); - CV_CALL( cvMaxS( w, min_variation, w )); - for( j = 0; j < _var_count; j++ ) - det *= w->data.db[j]; - - CV_CALL( cvDiv( NULL, w, w )); - c->data.db[cls] = det > 0 ? log(det) : -700; - } - result = true; + count_data = count[cls].ptr(); + avg_data = avg[cls].ptr(); + sum1 = sum[cls].ptr(); - __END__; + for( i = 0; i < nvars; i++ ) + { + double* avg2_data = avg[cls].ptr(); + double* sum2 = sum[cls].ptr(); + double* prod_data = productsum[cls].ptr(i); + double* cov_data = cov.ptr(i); + double s1val = sum1[i]; + double avg1 = avg_data[i]; + int _count = count_data[i]; + + for( j = 0; j <= i; j++ ) + { + double avg2 = avg2_data[j]; + double cov_val = prod_data[j] - avg1 * sum2[j] - avg2 * s1val + avg1 * avg2 * _count; + cov_val = (_count > 1) ? cov_val / (_count - 1) : cov_val; + cov_data[j] = cov_val; + } + } - if( !result || cvGetErrStatus() < 0 ) - clear(); + completeSymm( cov, 1 ); - cvReleaseMat( &cov ); - cvReleaseMat( &__cls_labels ); - cvReleaseMat( &__var_idx ); - cvFree( &train_data ); + SVD::compute(cov, w, cov_rotate_mats[cls], noArray()); + transpose(cov_rotate_mats[cls], cov_rotate_mats[cls]); + cv::max(w, min_variation, w); + for( j = 0; j < nvars; j++ ) + det *= w.at(j); - return result; -} + divide(1., w, w); + c.at(cls) = det > 0 ? log(det) : -700; + } -struct predict_body : cv::ParallelLoopBody { - predict_body(CvMat* _c, CvMat** _cov_rotate_mats, CvMat** _inv_eigen_values, CvMat** _avg, - const CvMat* _samples, const int* _vidx, CvMat* _cls_labels, - CvMat* _results, float* _value, int _var_count1, CvMat* _results_prob - ) - { - c = _c; - cov_rotate_mats = _cov_rotate_mats; - inv_eigen_values = _inv_eigen_values; - avg = _avg; - samples = _samples; - vidx = _vidx; - cls_labels = _cls_labels; - results = _results; - value = _value; - var_count1 = _var_count1; - results_prob = _results_prob; - } - - CvMat* c; - CvMat** cov_rotate_mats; - CvMat** inv_eigen_values; - CvMat** avg; - const CvMat* samples; - const int* vidx; - CvMat* cls_labels; - - CvMat* results_prob; - CvMat* results; - float* value; - int var_count1; - - void operator()( const cv::Range& range ) const - { - - int cls = -1; - int rtype = 0, rstep = 0, rptype = 0, rpstep = 0; - int nclasses = cls_labels->cols; - int _var_count = avg[0]->cols; - double probability = 0; - - if (results) - { - rtype = CV_MAT_TYPE(results->type); - rstep = CV_IS_MAT_CONT(results->type) ? 1 : results->step/CV_ELEM_SIZE(rtype); + return true; } - if (results_prob) - { - rptype = CV_MAT_TYPE(results_prob->type); - rpstep = CV_IS_MAT_CONT(results_prob->type) ? 1 : results_prob->step/CV_ELEM_SIZE(rptype); - } - // allocate memory and initializing headers for calculating - cv::AutoBuffer buffer(nclasses + var_count1); - CvMat diff = cvMat( 1, var_count1, CV_64FC1, &buffer[0] ); - for(int k = range.start; k < range.end; k += 1 ) + class NBPredictBody : public ParallelLoopBody { - int ival; - double opt = FLT_MAX; - - for(int i = 0; i < nclasses; i++ ) + public: + NBPredictBody( const Mat& _c, const vector& _cov_rotate_mats, + const vector& _inv_eigen_values, + const vector& _avg, + const Mat& _samples, const Mat& _vidx, const Mat& _cls_labels, + Mat& _results, Mat& _results_prob, bool _rawOutput ) { - double cur = c->data.db[i]; - CvMat* u = cov_rotate_mats[i]; - CvMat* w = inv_eigen_values[i]; + c = &_c; + cov_rotate_mats = &_cov_rotate_mats; + inv_eigen_values = &_inv_eigen_values; + avg = &_avg; + samples = &_samples; + vidx = &_vidx; + cls_labels = &_cls_labels; + results = &_results; + results_prob = _results_prob.data ? &_results_prob : 0; + rawOutput = _rawOutput; + } - const double* avg_data = avg[i]->data.db; - const float* x = (const float*)(samples->data.ptr + samples->step*k); + const Mat* c; + const vector* cov_rotate_mats; + const vector* inv_eigen_values; + const vector* avg; + const Mat* samples; + const Mat* vidx; + const Mat* cls_labels; - // cov = u w u' --> cov^(-1) = u w^(-1) u' - for(int j = 0; j < _var_count; j++ ) - diff.data.db[j] = avg_data[j] - x[vidx ? vidx[j] : j]; + Mat* results_prob; + Mat* results; + float* value; + bool rawOutput; - cvGEMM( &diff, u, 1, 0, 0, &diff, CV_GEMM_B_T ); - for(int j = 0; j < _var_count; j++ ) + void operator()( const Range& range ) const + { + int cls = -1; + int rtype = 0, rptype = 0; + size_t rstep = 0, rpstep = 0; + int nclasses = (int)cls_labels->total(); + int nvars = avg->at(0).cols; + double probability = 0; + const int* vptr = vidx && !vidx->empty() ? vidx->ptr() : 0; + + if (results) { - double d = diff.data.db[j]; - cur += d*d*w->data.db[j]; + rtype = results->type(); + rstep = results->isContinuous() ? 1 : results->step/results->elemSize(); } - - if( cur < opt ) + if (results_prob) { - cls = i; - opt = cur; + rptype = results_prob->type(); + rpstep = results_prob->isContinuous() ? 1 : results_prob->step/results_prob->elemSize(); + } + // allocate memory and initializing headers for calculating + cv::AutoBuffer _buffer(nvars*2); + double* _diffin = _buffer; + double* _diffout = _buffer + nvars; + Mat diffin( 1, nvars, CV_64FC1, _diffin ); + Mat diffout( 1, nvars, CV_64FC1, _diffout ); + + for(int k = range.start; k < range.end; k++ ) + { + double opt = FLT_MAX; + + for(int i = 0; i < nclasses; i++ ) + { + double cur = c->at(i); + const Mat& u = cov_rotate_mats->at(i); + const Mat& w = inv_eigen_values->at(i); + + const double* avg_data = avg->at(i).ptr(); + const float* x = samples->ptr(k); + + // cov = u w u' --> cov^(-1) = u w^(-1) u' + for(int j = 0; j < nvars; j++ ) + _diffin[j] = avg_data[j] - x[vptr ? vptr[j] : j]; + + gemm( diffin, u, 1, noArray(), 0, diffout, GEMM_2_T ); + for(int j = 0; j < nvars; j++ ) + { + double d = _diffout[j]; + cur += d*d*w.ptr()[j]; + } + + if( cur < opt ) + { + cls = i; + opt = cur; + } + probability = exp( -0.5 * cur ); + + if( results_prob ) + { + if ( rptype == CV_32FC1 ) + results_prob->ptr()[k*rpstep + i] = (float)probability; + else + results_prob->ptr()[k*rpstep + i] = probability; + } + } + + int ival = rawOutput ? cls : cls_labels->at(cls); + if( results ) + { + if( rtype == CV_32SC1 ) + results->ptr()[k*rstep] = ival; + else + results->ptr()[k*rstep] = (float)ival; + } } - /* probability = exp( -0.5 * cur ) */ - probability = exp( -0.5 * cur ); - } - - ival = cls_labels->data.i[cls]; - if( results ) - { - if( rtype == CV_32SC1 ) - results->data.i[k*rstep] = ival; - else - results->data.fl[k*rstep] = (float)ival; - } - if ( results_prob ) - { - if ( rptype == CV_32FC1 ) - results_prob->data.fl[k*rpstep] = (float)probability; - else - results_prob->data.db[k*rpstep] = probability; } - if( k == 0 ) - *value = (float)ival; - } - } -}; - - -float CvNormalBayesClassifier::predict( const CvMat* samples, CvMat* results, CvMat* results_prob ) const -{ - float value = 0; + }; - if( !CV_IS_MAT(samples) || CV_MAT_TYPE(samples->type) != CV_32FC1 || samples->cols != var_all ) - CV_Error( CV_StsBadArg, - "The input samples must be 32f matrix with the number of columns = var_all" ); - - if( samples->rows > 1 && !results ) - CV_Error( CV_StsNullPtr, - "When the number of input samples is >1, the output vector of results must be passed" ); - - if( results ) + float predict( InputArray _samples, OutputArray _results, int flags ) const { - if( !CV_IS_MAT(results) || (CV_MAT_TYPE(results->type) != CV_32FC1 && - CV_MAT_TYPE(results->type) != CV_32SC1) || - (results->cols != 1 && results->rows != 1) || - results->cols + results->rows - 1 != samples->rows ) - CV_Error( CV_StsBadArg, "The output array must be integer or floating-point vector " - "with the number of elements = number of rows in the input matrix" ); + return predictProb(_samples, _results, noArray(), flags); } - if( results_prob ) + float predictProb( InputArray _samples, OutputArray _results, OutputArray _resultsProb, int flags ) const { - if( !CV_IS_MAT(results_prob) || (CV_MAT_TYPE(results_prob->type) != CV_32FC1 && - CV_MAT_TYPE(results_prob->type) != CV_64FC1) || - (results_prob->cols != 1 && results_prob->rows != 1) || - results_prob->cols + results_prob->rows - 1 != samples->rows ) - CV_Error( CV_StsBadArg, "The output array must be double or float vector " - "with the number of elements = number of rows in the input matrix" ); - } + int value=0; + Mat samples = _samples.getMat(), results, resultsProb; + int nsamples = samples.rows, nclasses = (int)cls_labels.total(); + bool rawOutput = (flags & RAW_OUTPUT) != 0; - const int* vidx = var_idx ? var_idx->data.i : 0; + if( samples.type() != CV_32F || samples.cols != nallvars ) + CV_Error( CV_StsBadArg, + "The input samples must be 32f matrix with the number of columns = nallvars" ); - cv::parallel_for_(cv::Range(0, samples->rows), - predict_body(c, cov_rotate_mats, inv_eigen_values, avg, samples, - vidx, cls_labels, results, &value, var_count, results_prob)); + if( samples.rows > 1 && _results.needed() ) + CV_Error( CV_StsNullPtr, + "When the number of input samples is >1, the output vector of results must be passed" ); - return value; -} + if( _results.needed() ) + { + _results.create(nsamples, 1, CV_32S); + results = _results.getMat(); + } + else + results = Mat(1, 1, CV_32S, &value); + if( _resultsProb.needed() ) + { + _resultsProb.create(nsamples, nclasses, CV_32F); + resultsProb = _resultsProb.getMat(); + } -void CvNormalBayesClassifier::write( CvFileStorage* fs, const char* name ) const -{ - CV_FUNCNAME( "CvNormalBayesClassifier::write" ); + cv::parallel_for_(cv::Range(0, nsamples), + NBPredictBody(c, cov_rotate_mats, inv_eigen_values, avg, samples, + var_idx, cls_labels, results, resultsProb, rawOutput)); + + return (float)value; + } - __BEGIN__; + void write( FileStorage& fs ) const + { + int nclasses = (int)cls_labels.total(), i; - int nclasses, i; + fs << "var_count" << (var_idx.empty() ? nallvars : (int)var_idx.total()); + fs << "var_all" << nallvars; - nclasses = cls_labels->cols; + if( !var_idx.empty() ) + fs << "var_idx" << var_idx; + fs << "cls_labels" << cls_labels; - cvStartWriteStruct( fs, name, CV_NODE_MAP, CV_TYPE_NAME_ML_NBAYES ); + fs << "count" << "["; + for( i = 0; i < nclasses; i++ ) + fs << count[i]; - CV_CALL( cvWriteInt( fs, "var_count", var_count )); - CV_CALL( cvWriteInt( fs, "var_all", var_all )); + fs << "]" << "sum" << "["; + for( i = 0; i < nclasses; i++ ) + fs << sum[i]; - if( var_idx ) - CV_CALL( cvWrite( fs, "var_idx", var_idx )); - CV_CALL( cvWrite( fs, "cls_labels", cls_labels )); + fs << "]" << "productsum" << "["; + for( i = 0; i < nclasses; i++ ) + fs << productsum[i]; - CV_CALL( cvStartWriteStruct( fs, "count", CV_NODE_SEQ )); - for( i = 0; i < nclasses; i++ ) - CV_CALL( cvWrite( fs, NULL, count[i] )); - CV_CALL( cvEndWriteStruct( fs )); + fs << "]" << "avg" << "["; + for( i = 0; i < nclasses; i++ ) + fs << avg[i]; - CV_CALL( cvStartWriteStruct( fs, "sum", CV_NODE_SEQ )); - for( i = 0; i < nclasses; i++ ) - CV_CALL( cvWrite( fs, NULL, sum[i] )); - CV_CALL( cvEndWriteStruct( fs )); + fs << "]" << "inv_eigen_values" << "["; + for( i = 0; i < nclasses; i++ ) + fs << inv_eigen_values[i]; - CV_CALL( cvStartWriteStruct( fs, "productsum", CV_NODE_SEQ )); - for( i = 0; i < nclasses; i++ ) - CV_CALL( cvWrite( fs, NULL, productsum[i] )); - CV_CALL( cvEndWriteStruct( fs )); + fs << "]" << "cov_rotate_mats" << "["; + for( i = 0; i < nclasses; i++ ) + fs << cov_rotate_mats[i]; - CV_CALL( cvStartWriteStruct( fs, "avg", CV_NODE_SEQ )); - for( i = 0; i < nclasses; i++ ) - CV_CALL( cvWrite( fs, NULL, avg[i] )); - CV_CALL( cvEndWriteStruct( fs )); + fs << "]"; - CV_CALL( cvStartWriteStruct( fs, "inv_eigen_values", CV_NODE_SEQ )); - for( i = 0; i < nclasses; i++ ) - CV_CALL( cvWrite( fs, NULL, inv_eigen_values[i] )); - CV_CALL( cvEndWriteStruct( fs )); + fs << "c" << c; + } - CV_CALL( cvStartWriteStruct( fs, "cov_rotate_mats", CV_NODE_SEQ )); - for( i = 0; i < nclasses; i++ ) - CV_CALL( cvWrite( fs, NULL, cov_rotate_mats[i] )); - CV_CALL( cvEndWriteStruct( fs )); + void read( const FileNode& fn ) + { + clear(); - CV_CALL( cvWrite( fs, "c", c )); + fn["var_all"] >> nallvars; - cvEndWriteStruct( fs ); + if( nallvars <= 0 ) + CV_Error( CV_StsParseError, + "The field \"var_count\" of NBayes classifier is missing or non-positive" ); - __END__; -} + fn["var_idx"] >> var_idx; + fn["cls_labels"] >> cls_labels; + int nclasses = (int)cls_labels.total(), i; -void CvNormalBayesClassifier::read( CvFileStorage* fs, CvFileNode* root_node ) -{ - bool ok = false; - CV_FUNCNAME( "CvNormalBayesClassifier::read" ); - - __BEGIN__; - - int nclasses, i; - size_t data_size; - CvFileNode* node; - CvSeq* seq; - CvSeqReader reader; - - clear(); - - CV_CALL( var_count = cvReadIntByName( fs, root_node, "var_count", -1 )); - CV_CALL( var_all = cvReadIntByName( fs, root_node, "var_all", -1 )); - CV_CALL( var_idx = (CvMat*)cvReadByName( fs, root_node, "var_idx" )); - CV_CALL( cls_labels = (CvMat*)cvReadByName( fs, root_node, "cls_labels" )); - if( !cls_labels ) - CV_ERROR( CV_StsParseError, "No \"cls_labels\" in NBayes classifier" ); - if( cls_labels->cols < 1 ) - CV_ERROR( CV_StsBadArg, "Number of classes is less 1" ); - if( var_count <= 0 ) - CV_ERROR( CV_StsParseError, - "The field \"var_count\" of NBayes classifier is missing" ); - nclasses = cls_labels->cols; - - data_size = nclasses*6*sizeof(CvMat*); - CV_CALL( count = (CvMat**)cvAlloc( data_size )); - memset( count, 0, data_size ); - - sum = count + nclasses; - productsum = sum + nclasses; - avg = productsum + nclasses; - inv_eigen_values = avg + nclasses; - cov_rotate_mats = inv_eigen_values + nclasses; - - CV_CALL( node = cvGetFileNodeByName( fs, root_node, "count" )); - seq = node->data.seq; - if( !CV_NODE_IS_SEQ(node->tag) || seq->total != nclasses) - CV_ERROR( CV_StsBadArg, "" ); - CV_CALL( cvStartReadSeq( seq, &reader, 0 )); - for( i = 0; i < nclasses; i++ ) - { - CV_CALL( count[i] = (CvMat*)cvRead( fs, (CvFileNode*)reader.ptr )); - CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); - } + if( cls_labels.empty() || nclasses < 1 ) + CV_Error( CV_StsParseError, "No or invalid \"cls_labels\" in NBayes classifier" ); - CV_CALL( node = cvGetFileNodeByName( fs, root_node, "sum" )); - seq = node->data.seq; - if( !CV_NODE_IS_SEQ(node->tag) || seq->total != nclasses) - CV_ERROR( CV_StsBadArg, "" ); - CV_CALL( cvStartReadSeq( seq, &reader, 0 )); - for( i = 0; i < nclasses; i++ ) - { - CV_CALL( sum[i] = (CvMat*)cvRead( fs, (CvFileNode*)reader.ptr )); - CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); - } + FileNodeIterator + count_it = fn["count"].begin(), + sum_it = fn["sum"].begin(), + productsum_it = fn["productsum"].begin(), + avg_it = fn["avg"].begin(), + inv_eigen_values_it = fn["inv_eigen_values"].begin(), + cov_rotate_mats_it = fn["cov_rotate_mats"].begin(); - CV_CALL( node = cvGetFileNodeByName( fs, root_node, "productsum" )); - seq = node->data.seq; - if( !CV_NODE_IS_SEQ(node->tag) || seq->total != nclasses) - CV_ERROR( CV_StsBadArg, "" ); - CV_CALL( cvStartReadSeq( seq, &reader, 0 )); - for( i = 0; i < nclasses; i++ ) - { - CV_CALL( productsum[i] = (CvMat*)cvRead( fs, (CvFileNode*)reader.ptr )); - CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); - } + count.resize(nclasses); + sum.resize(nclasses); + productsum.resize(nclasses); + avg.resize(nclasses); + inv_eigen_values.resize(nclasses); + cov_rotate_mats.resize(nclasses); - CV_CALL( node = cvGetFileNodeByName( fs, root_node, "avg" )); - seq = node->data.seq; - if( !CV_NODE_IS_SEQ(node->tag) || seq->total != nclasses) - CV_ERROR( CV_StsBadArg, "" ); - CV_CALL( cvStartReadSeq( seq, &reader, 0 )); - for( i = 0; i < nclasses; i++ ) - { - CV_CALL( avg[i] = (CvMat*)cvRead( fs, (CvFileNode*)reader.ptr )); - CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); - } + for( i = 0; i < nclasses; i++, ++count_it, ++sum_it, ++productsum_it, ++avg_it, + ++inv_eigen_values_it, ++cov_rotate_mats_it ) + { + *count_it >> count[i]; + *sum_it >> sum[i]; + *productsum_it >> productsum[i]; + *avg_it >> avg[i]; + *inv_eigen_values_it >> inv_eigen_values[i]; + *cov_rotate_mats_it >> cov_rotate_mats[i]; + } - CV_CALL( node = cvGetFileNodeByName( fs, root_node, "inv_eigen_values" )); - seq = node->data.seq; - if( !CV_NODE_IS_SEQ(node->tag) || seq->total != nclasses) - CV_ERROR( CV_StsBadArg, "" ); - CV_CALL( cvStartReadSeq( seq, &reader, 0 )); - for( i = 0; i < nclasses; i++ ) - { - CV_CALL( inv_eigen_values[i] = (CvMat*)cvRead( fs, (CvFileNode*)reader.ptr )); - CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); + fn["c"] >> c; } - CV_CALL( node = cvGetFileNodeByName( fs, root_node, "cov_rotate_mats" )); - seq = node->data.seq; - if( !CV_NODE_IS_SEQ(node->tag) || seq->total != nclasses) - CV_ERROR( CV_StsBadArg, "" ); - CV_CALL( cvStartReadSeq( seq, &reader, 0 )); - for( i = 0; i < nclasses; i++ ) + void clear() { - CV_CALL( cov_rotate_mats[i] = (CvMat*)cvRead( fs, (CvFileNode*)reader.ptr )); - CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); + count.clear(); + sum.clear(); + productsum.clear(); + avg.clear(); + inv_eigen_values.clear(); + cov_rotate_mats.clear(); + + var_idx.release(); + cls_labels.release(); + c.release(); + nallvars = 0; } - CV_CALL( c = (CvMat*)cvReadByName( fs, root_node, "c" )); - - ok = true; + bool isTrained() const { return !avg.empty(); } + bool isClassifier() const { return true; } + int getVarCount() const { return nallvars; } + String getDefaultModelName() const { return "opencv_ml_nbayes"; } - __END__; - - if( !ok ) - clear(); -} + int nallvars; + Mat var_idx, cls_labels, c; + vector count, sum, productsum, avg, inv_eigen_values, cov_rotate_mats; +}; -using namespace cv; -CvNormalBayesClassifier::CvNormalBayesClassifier( const Mat& _train_data, const Mat& _responses, - const Mat& _var_idx, const Mat& _sample_idx ) +Ptr NormalBayesClassifier::create() { - var_count = var_all = 0; - var_idx = 0; - cls_labels = 0; - count = 0; - sum = 0; - productsum = 0; - avg = 0; - inv_eigen_values = 0; - cov_rotate_mats = 0; - c = 0; - default_model_name = "my_nb"; - - CvMat tdata = _train_data, responses = _responses, vidx = _var_idx, sidx = _sample_idx; - train(&tdata, &responses, vidx.data.ptr ? &vidx : 0, - sidx.data.ptr ? &sidx : 0); + Ptr p = makePtr(); + return p; } -bool CvNormalBayesClassifier::train( const Mat& _train_data, const Mat& _responses, - const Mat& _var_idx, const Mat& _sample_idx, bool update ) -{ - CvMat tdata = _train_data, responses = _responses, vidx = _var_idx, sidx = _sample_idx; - return train(&tdata, &responses, vidx.data.ptr ? &vidx : 0, - sidx.data.ptr ? &sidx : 0, update); } - -float CvNormalBayesClassifier::predict( const Mat& _samples, Mat* _results, Mat* _results_prob ) const -{ - CvMat samples = _samples, results, *presults = 0, results_prob, *presults_prob = 0; - - if( _results ) - { - if( !(_results->data && _results->type() == CV_32F && - (_results->cols == 1 || _results->rows == 1) && - _results->cols + _results->rows - 1 == _samples.rows) ) - _results->create(_samples.rows, 1, CV_32F); - presults = &(results = *_results); - } - - if( _results_prob ) - { - if( !(_results_prob->data && _results_prob->type() == CV_64F && - (_results_prob->cols == 1 || _results_prob->rows == 1) && - _results_prob->cols + _results_prob->rows - 1 == _samples.rows) ) - _results_prob->create(_samples.rows, 1, CV_64F); - presults_prob = &(results_prob = *_results_prob); - } - - return predict(&samples, presults, presults_prob); } /* End of file. */ diff --git a/modules/ml/src/precomp.hpp b/modules/ml/src/precomp.hpp index 551ff81791..23e22d9d92 100644 --- a/modules/ml/src/precomp.hpp +++ b/modules/ml/src/precomp.hpp @@ -38,8 +38,8 @@ // //M*/ -#ifndef __OPENCV_PRECOMP_H__ -#define __OPENCV_PRECOMP_H__ +#ifndef __OPENCV_ML_PRECOMP_HPP__ +#define __OPENCV_ML_PRECOMP_HPP__ #include "opencv2/core.hpp" #include "opencv2/ml.hpp" @@ -56,321 +56,217 @@ #include #include #include +#include -#define ML_IMPL CV_IMPL -#define __BEGIN__ __CV_BEGIN__ -#define __END__ __CV_END__ -#define EXIT __CV_EXIT__ - -#define CV_MAT_ELEM_FLAG( mat, type, comp, vect, tflag ) \ - (( tflag == CV_ROW_SAMPLE ) \ - ? (CV_MAT_ELEM( mat, type, comp, vect )) \ - : (CV_MAT_ELEM( mat, type, vect, comp ))) - -/* Convert matrix to vector */ -#define ICV_MAT2VEC( mat, vdata, vstep, num ) \ - if( MIN( (mat).rows, (mat).cols ) != 1 ) \ - CV_ERROR( CV_StsBadArg, "" ); \ - (vdata) = ((mat).data.ptr); \ - if( (mat).rows == 1 ) \ - { \ - (vstep) = CV_ELEM_SIZE( (mat).type ); \ - (num) = (mat).cols; \ - } \ - else \ - { \ - (vstep) = (mat).step; \ - (num) = (mat).rows; \ - } +/****************************************************************************************\ + * Main struct definitions * + \****************************************************************************************/ -/* get raw data */ -#define ICV_RAWDATA( mat, flags, rdata, sstep, cstep, m, n ) \ - (rdata) = (mat).data.ptr; \ - if( CV_IS_ROW_SAMPLE( flags ) ) \ - { \ - (sstep) = (mat).step; \ - (cstep) = CV_ELEM_SIZE( (mat).type ); \ - (m) = (mat).rows; \ - (n) = (mat).cols; \ - } \ - else \ - { \ - (cstep) = (mat).step; \ - (sstep) = CV_ELEM_SIZE( (mat).type ); \ - (n) = (mat).rows; \ - (m) = (mat).cols; \ - } +/* log(2*PI) */ +#define CV_LOG2PI (1.8378770664093454835606594728112) -#define ICV_IS_MAT_OF_TYPE( mat, mat_type) \ - (CV_IS_MAT( mat ) && CV_MAT_TYPE( mat->type ) == (mat_type) && \ - (mat)->cols > 0 && (mat)->rows > 0) - -/* - uchar* data; int sstep, cstep; - trainData->data - uchar* classes; int clstep; int ncl;- trainClasses - uchar* tmask; int tmstep; int ntm; - typeMask - uchar* missed;int msstep, mcstep; -missedMeasurements... - int mm, mn; == m,n == size,dim - uchar* sidx;int sistep; - sampleIdx - uchar* cidx;int cistep; - compIdx - int k, l; == n,m == dim,size (length of cidx, sidx) - int m, n; == size,dim -*/ -#define ICV_DECLARE_TRAIN_ARGS() \ - uchar* data; \ - int sstep, cstep; \ - uchar* classes; \ - int clstep; \ - int ncl; \ - uchar* tmask; \ - int tmstep; \ - int ntm; \ - uchar* missed; \ - int msstep, mcstep; \ - int mm, mn; \ - uchar* sidx; \ - int sistep; \ - uchar* cidx; \ - int cistep; \ - int k, l; \ - int m, n; \ - \ - data = classes = tmask = missed = sidx = cidx = NULL; \ - sstep = cstep = clstep = ncl = tmstep = ntm = msstep = mcstep = mm = mn = 0; \ - sistep = cistep = k = l = m = n = 0; - -#define ICV_TRAIN_DATA_REQUIRED( param, flags ) \ - if( !ICV_IS_MAT_OF_TYPE( (param), CV_32FC1 ) ) \ - { \ - CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ - } \ - else \ - { \ - ICV_RAWDATA( *(param), (flags), data, sstep, cstep, m, n ); \ - k = n; \ - l = m; \ - } +namespace cv +{ +namespace ml +{ + using std::vector; -#define ICV_TRAIN_CLASSES_REQUIRED( param ) \ - if( !ICV_IS_MAT_OF_TYPE( (param), CV_32FC1 ) ) \ - { \ - CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ - } \ - else \ - { \ - ICV_MAT2VEC( *(param), classes, clstep, ncl ); \ - if( m != ncl ) \ - { \ - CV_ERROR( CV_StsBadArg, "Unmatched sizes" ); \ - } \ - } + #define CV_DTREE_CAT_DIR(idx,subset) \ + (2*((subset[(idx)>>5]&(1 << ((idx) & 31)))==0)-1) -#define ICV_ARG_NULL( param ) \ - if( (param) != NULL ) \ - { \ - CV_ERROR( CV_StsBadArg, #param " parameter must be NULL" ); \ - } + template struct cmp_lt_idx + { + cmp_lt_idx(const _Tp* _arr) : arr(_arr) {} + bool operator ()(int a, int b) const { return arr[a] < arr[b]; } + const _Tp* arr; + }; -#define ICV_MISSED_MEASUREMENTS_OPTIONAL( param, flags ) \ - if( param ) \ - { \ - if( !ICV_IS_MAT_OF_TYPE( param, CV_8UC1 ) ) \ - { \ - CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ - } \ - else \ - { \ - ICV_RAWDATA( *(param), (flags), missed, msstep, mcstep, mm, mn ); \ - if( mm != m || mn != n ) \ - { \ - CV_ERROR( CV_StsBadArg, "Unmatched sizes" ); \ - } \ - } \ - } + template struct cmp_lt_ptr + { + cmp_lt_ptr() {} + bool operator ()(const _Tp* a, const _Tp* b) const { return *a < *b; } + }; -#define ICV_COMP_IDX_OPTIONAL( param ) \ - if( param ) \ - { \ - if( !ICV_IS_MAT_OF_TYPE( param, CV_32SC1 ) ) \ - { \ - CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ - } \ - else \ - { \ - ICV_MAT2VEC( *(param), cidx, cistep, k ); \ - if( k > n ) \ - CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ - } \ + static inline void setRangeVector(std::vector& vec, int n) + { + vec.resize(n); + for( int i = 0; i < n; i++ ) + vec[i] = i; } -#define ICV_SAMPLE_IDX_OPTIONAL( param ) \ - if( param ) \ - { \ - if( !ICV_IS_MAT_OF_TYPE( param, CV_32SC1 ) ) \ - { \ - CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ - } \ - else \ - { \ - ICV_MAT2VEC( *sampleIdx, sidx, sistep, l ); \ - if( l > m ) \ - CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ - } \ + static inline void writeTermCrit(FileStorage& fs, const TermCriteria& termCrit) + { + if( (termCrit.type & TermCriteria::EPS) != 0 ) + fs << "epsilon" << termCrit.epsilon; + if( (termCrit.type & TermCriteria::COUNT) != 0 ) + fs << "iterations" << termCrit.maxCount; } -/****************************************************************************************/ -#define ICV_CONVERT_FLOAT_ARRAY_TO_MATRICE( array, matrice ) \ -{ \ - CvMat a, b; \ - int dims = (matrice)->cols; \ - int nsamples = (matrice)->rows; \ - int type = CV_MAT_TYPE((matrice)->type); \ - int i, offset = dims; \ - \ - CV_ASSERT( type == CV_32FC1 || type == CV_64FC1 ); \ - offset *= ((type == CV_32FC1) ? sizeof(float) : sizeof(double));\ - \ - b = cvMat( 1, dims, CV_32FC1 ); \ - cvGetRow( matrice, &a, 0 ); \ - for( i = 0; i < nsamples; i++, a.data.ptr += offset ) \ - { \ - b.data.fl = (float*)array[i]; \ - CV_CALL( cvConvert( &b, &a ) ); \ - } \ -} - -/****************************************************************************************\ -* Auxiliary functions declarations * -\****************************************************************************************/ - -/* Generates a set of classes centers in quantity that are generated as - uniform random vectors in parallelepiped, where is concentrated. Vectors in - should have horizontal orientation. If != NULL, the function doesn't - allocate any memory and stores generated centers in , returns . - If == NULL, the function allocates memory and creates the matrice. Centers - are supposed to be oriented horizontally. */ -CvMat* icvGenerateRandomClusterCenters( int seed, - const CvMat* data, - int num_of_clusters, - CvMat* centers CV_DEFAULT(0)); - -/* Fills the using by choosing the maximal probability. Outliers are - fixed by and have cluster label (-1). Function also controls that there - weren't "empty" clusters by filling empty clusters with the maximal probability vector. - If probs_sums != NULL, filles it with the sums of probabilities for each sample (it is - useful for normalizing probabilities' matrice of FCM) */ -void icvFindClusterLabels( const CvMat* probs, float outlier_thresh, float r, - const CvMat* labels ); - -typedef struct CvSparseVecElem32f -{ - int idx; - float val; -} -CvSparseVecElem32f; - -/* Prepare training data and related parameters */ -#define CV_TRAIN_STATMODEL_DEFRAGMENT_TRAIN_DATA 1 -#define CV_TRAIN_STATMODEL_SAMPLES_AS_ROWS 2 -#define CV_TRAIN_STATMODEL_SAMPLES_AS_COLUMNS 4 -#define CV_TRAIN_STATMODEL_CATEGORICAL_RESPONSE 8 -#define CV_TRAIN_STATMODEL_ORDERED_RESPONSE 16 -#define CV_TRAIN_STATMODEL_RESPONSES_ON_OUTPUT 32 -#define CV_TRAIN_STATMODEL_ALWAYS_COPY_TRAIN_DATA 64 -#define CV_TRAIN_STATMODEL_SPARSE_AS_SPARSE 128 - -int -cvPrepareTrainData( const char* /*funcname*/, - const CvMat* train_data, int tflag, - const CvMat* responses, int response_type, - const CvMat* var_idx, - const CvMat* sample_idx, - bool always_copy_data, - const float*** out_train_samples, - int* _sample_count, - int* _var_count, - int* _var_all, - CvMat** out_responses, - CvMat** out_response_map, - CvMat** out_var_idx, - CvMat** out_sample_idx=0 ); - -void -cvSortSamplesByClasses( const float** samples, const CvMat* classes, - int* class_ranges, const uchar** mask CV_DEFAULT(0) ); - -void -cvCombineResponseMaps (CvMat* _responses, - const CvMat* old_response_map, - CvMat* new_response_map, - CvMat** out_response_map); - -void -cvPreparePredictData( const CvArr* sample, int dims_all, const CvMat* comp_idx, - int class_count, const CvMat* prob, float** row_sample, - int as_sparse CV_DEFAULT(0) ); - -/* copies clustering [or batch "predict"] results - (labels and/or centers and/or probs) back to the output arrays */ -void -cvWritebackLabels( const CvMat* labels, CvMat* dst_labels, - const CvMat* centers, CvMat* dst_centers, - const CvMat* probs, CvMat* dst_probs, - const CvMat* sample_idx, int samples_all, - const CvMat* comp_idx, int dims_all ); -#define cvWritebackResponses cvWritebackLabels - -#define XML_FIELD_NAME "_name" -CvFileNode* icvFileNodeGetChild(CvFileNode* father, const char* name); -CvFileNode* icvFileNodeGetChildArrayElem(CvFileNode* father, const char* name,int index); -CvFileNode* icvFileNodeGetNext(CvFileNode* n, const char* name); - - -void cvCheckTrainData( const CvMat* train_data, int tflag, - const CvMat* missing_mask, - int* var_all, int* sample_all ); - -CvMat* cvPreprocessIndexArray( const CvMat* idx_arr, int data_arr_size, bool check_for_duplicates=false ); - -CvMat* cvPreprocessVarType( const CvMat* type_mask, const CvMat* var_idx, - int var_all, int* response_type ); - -CvMat* cvPreprocessOrderedResponses( const CvMat* responses, - const CvMat* sample_idx, int sample_all ); - -CvMat* cvPreprocessCategoricalResponses( const CvMat* responses, - const CvMat* sample_idx, int sample_all, - CvMat** out_response_map, CvMat** class_counts=0 ); - -const float** cvGetTrainSamples( const CvMat* train_data, int tflag, - const CvMat* var_idx, const CvMat* sample_idx, - int* _var_count, int* _sample_count, - bool always_copy_data=false ); - -namespace cv -{ - struct DTreeBestSplitFinder + static inline TermCriteria readTermCrit(const FileNode& fn) { - DTreeBestSplitFinder(){ splitSize = 0, tree = 0; node = 0; } - DTreeBestSplitFinder( CvDTree* _tree, CvDTreeNode* _node); - DTreeBestSplitFinder( const DTreeBestSplitFinder& finder, Split ); - virtual ~DTreeBestSplitFinder() {} - virtual void operator()(const BlockedRange& range); - void join( DTreeBestSplitFinder& rhs ); - Ptr bestSplit; - Ptr split; - int splitSize; - CvDTree* tree; - CvDTreeNode* node; - }; + TermCriteria termCrit; + double epsilon = (double)fn["epsilon"]; + if( epsilon > 0 ) + { + termCrit.type |= TermCriteria::EPS; + termCrit.epsilon = epsilon; + } + int iters = (double)fn["iterations"]; + if( iters > 0 ) + { + termCrit.type |= TermCriteria::COUNT; + termCrit.maxCount = iters; + } + return termCrit; + } - struct ForestTreeBestSplitFinder : DTreeBestSplitFinder + class DTreesImpl : public DTrees { - ForestTreeBestSplitFinder() : DTreeBestSplitFinder() {} - ForestTreeBestSplitFinder( CvForestTree* _tree, CvDTreeNode* _node ); - ForestTreeBestSplitFinder( const ForestTreeBestSplitFinder& finder, Split ); - virtual void operator()(const BlockedRange& range); + public: + struct WNode + { + WNode() + { + class_idx = sample_count = depth = complexity = 0; + parent = left = right = split = defaultDir = -1; + Tn = INT_MAX; + value = maxlr = alpha = node_risk = tree_risk = tree_error = 0.; + } + + int class_idx; + int Tn; + double value; + + int parent; + int left; + int right; + int defaultDir; + + int split; + + int sample_count; + int depth; + double maxlr; + + // global pruning data + int complexity; + double alpha; + double node_risk, tree_risk, tree_error; + }; + + struct WSplit + { + WSplit() + { + varIdx = inversed = next = 0; + quality = c = 0.f; + subsetOfs = -1; + } + + int varIdx; + int inversed; + float quality; + int next; + float c; + int subsetOfs; + }; + + struct WorkData + { + WorkData(const Ptr& _data); + + Ptr data; + vector wnodes; + vector wsplits; + vector wsubsets; + vector cv_Tn; + vector cv_node_risk; + vector cv_node_error; + vector cv_labels; + vector sample_weights; + vector cat_responses; + vector ord_responses; + vector sidx; + int maxSubsetSize; + }; + + DTreesImpl(); + virtual ~DTreesImpl(); + virtual void clear(); + + String getDefaultModelName() const { return "opencv_ml_dtree"; } + bool isTrained() const { return !roots.empty(); } + bool isClassifier() const { return _isClassifier; } + int getVarCount() const { return varType.empty() ? 0 : (int)(varType.size() - 1); } + int getCatCount(int vi) const { return catOfs[vi][1] - catOfs[vi][0]; } + int getSubsetSize(int vi) const { return (getCatCount(vi) + 31)/32; } + + virtual void setDParams(const Params& _params); + virtual Params getDParams() const; + virtual void startTraining( const Ptr& trainData, int flags ); + virtual void endTraining(); + virtual void initCompVarIdx(); + virtual bool train( const Ptr& trainData, int flags ); + + virtual int addTree( const vector& sidx ); + virtual int addNodeAndTrySplit( int parent, const vector& sidx ); + virtual const vector& getActiveVars(); + virtual int findBestSplit( const vector& _sidx ); + virtual void calcValue( int nidx, const vector& _sidx ); + + virtual WSplit findSplitOrdClass( int vi, const vector& _sidx, double initQuality ); + + // simple k-means, slightly modified to take into account the "weight" (L1-norm) of each vector. + virtual void clusterCategories( const double* vectors, int n, int m, double* csums, int k, int* labels ); + virtual WSplit findSplitCatClass( int vi, const vector& _sidx, double initQuality, int* subset ); + + virtual WSplit findSplitOrdReg( int vi, const vector& _sidx, double initQuality ); + virtual WSplit findSplitCatReg( int vi, const vector& _sidx, double initQuality, int* subset ); + + virtual int calcDir( int splitidx, const vector& _sidx, vector& _sleft, vector& _sright ); + virtual int pruneCV( int root ); + + virtual double updateTreeRNC( int root, double T, int fold ); + virtual bool cutTree( int root, double T, int fold, double min_alpha ); + virtual float predictTrees( const Range& range, const Mat& sample, int flags ) const; + virtual float predict( InputArray inputs, OutputArray outputs, int flags ) const; + + virtual void writeTrainingParams( FileStorage& fs ) const; + virtual void writeParams( FileStorage& fs ) const; + virtual void writeSplit( FileStorage& fs, int splitidx ) const; + virtual void writeNode( FileStorage& fs, int nidx, int depth ) const; + virtual void writeTree( FileStorage& fs, int root ) const; + virtual void write( FileStorage& fs ) const; + + virtual void readParams( const FileNode& fn ); + virtual int readSplit( const FileNode& fn ); + virtual int readNode( const FileNode& fn ); + virtual int readTree( const FileNode& fn ); + virtual void read( const FileNode& fn ); + + virtual const std::vector& getRoots() const { return roots; } + virtual const std::vector& getNodes() const { return nodes; } + virtual const std::vector& getSplits() const { return splits; } + virtual const std::vector& getSubsets() const { return subsets; } + + Params params0, params; + + vector varIdx; + vector compVarIdx; + vector varType; + vector catOfs; + vector catMap; + vector roots; + vector nodes; + vector splits; + vector subsets; + vector classLabels; + vector missingSubst; + bool _isClassifier; + + Ptr w; }; -} -#endif /* __ML_H__ */ +}} + +#endif /* __OPENCV_ML_PRECOMP_HPP__ */ diff --git a/modules/ml/src/rtrees.cpp b/modules/ml/src/rtrees.cpp index c41b842142..2677c819e7 100644 --- a/modules/ml/src/rtrees.cpp +++ b/modules/ml/src/rtrees.cpp @@ -7,9 +7,11 @@ // copy or use the software. // // -// Intel License Agreement +// License Agreement +// For Open Source Computer Vision Library // // Copyright (C) 2000, Intel Corporation, all rights reserved. +// Copyright (C) 2014, Itseez Inc, all rights reserved. // Third party copyrights are property of their respective owners. // // Redistribution and use in source and binary forms, with or without modification, @@ -22,7 +24,7 @@ // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // -// * The name of Intel Corporation may not be used to endorse or promote products +// * The name of the copyright holders may not be used to endorse or promote products // derived from this software without specific prior written permission. // // This software is provided by the copyright holders and contributors "as is" and @@ -40,833 +42,388 @@ #include "precomp.hpp" -CvForestTree::CvForestTree() -{ - forest = NULL; -} - - -CvForestTree::~CvForestTree() -{ - clear(); -} +namespace cv { +namespace ml { - -bool CvForestTree::train( CvDTreeTrainData* _data, - const CvMat* _subsample_idx, - CvRTrees* _forest ) +////////////////////////////////////////////////////////////////////////////////////////// +// Random trees // +////////////////////////////////////////////////////////////////////////////////////////// +RTrees::Params::Params() + : DTrees::Params(5, 10, 0.f, false, 10, 0, false, false, Mat()) { - clear(); - forest = _forest; - - data = _data; - data->shared = true; - return do_train(_subsample_idx); + calcVarImportance = false; + nactiveVars = 0; + termCrit = TermCriteria(TermCriteria::EPS + TermCriteria::COUNT, 50, 0.1); } - -bool -CvForestTree::train( const CvMat*, int, const CvMat*, const CvMat*, - const CvMat*, const CvMat*, const CvMat*, CvDTreeParams ) +RTrees::Params::Params( int _maxDepth, int _minSampleCount, + double _regressionAccuracy, bool _useSurrogates, + int _maxCategories, const Mat& _priors, + bool _calcVarImportance, int _nactiveVars, + TermCriteria _termCrit ) + : DTrees::Params(_maxDepth, _minSampleCount, _regressionAccuracy, _useSurrogates, + _maxCategories, 0, false, false, _priors) { - assert(0); - return false; + calcVarImportance = _calcVarImportance; + nactiveVars = _nactiveVars; + termCrit = _termCrit; } -bool -CvForestTree::train( CvDTreeTrainData*, const CvMat* ) +class DTreesImplForRTrees : public DTreesImpl { - assert(0); - return false; -} - - +public: + DTreesImplForRTrees() {} + virtual ~DTreesImplForRTrees() {} -namespace cv -{ - -ForestTreeBestSplitFinder::ForestTreeBestSplitFinder( CvForestTree* _tree, CvDTreeNode* _node ) : - DTreeBestSplitFinder(_tree, _node) {} - -ForestTreeBestSplitFinder::ForestTreeBestSplitFinder( const ForestTreeBestSplitFinder& finder, Split spl ) : - DTreeBestSplitFinder( finder, spl ) {} - -void ForestTreeBestSplitFinder::operator()(const BlockedRange& range) -{ - int vi, vi1 = range.begin(), vi2 = range.end(); - int n = node->sample_count; - CvDTreeTrainData* data = tree->get_data(); - AutoBuffer inn_buf(2*n*(sizeof(int) + sizeof(float))); - - CvForestTree* ftree = (CvForestTree*)tree; - const CvMat* active_var_mask = ftree->forest->get_active_var_mask(); - - for( vi = vi1; vi < vi2; vi++ ) + void setRParams(const RTrees::Params& p) { - CvDTreeSplit *res; - int ci = data->var_type->data.i[vi]; - if( node->num_valid[vi] <= 1 - || (active_var_mask && !active_var_mask->data.ptr[vi]) ) - continue; - - if( data->is_classifier ) - { - if( ci >= 0 ) - res = ftree->find_split_cat_class( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); - else - res = ftree->find_split_ord_class( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); - } - else - { - if( ci >= 0 ) - res = ftree->find_split_cat_reg( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); - else - res = ftree->find_split_ord_reg( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); - } - - if( res && bestSplit->quality < split->quality ) - memcpy( bestSplit.get(), split.get(), splitSize ); + rparams = p; } -} -} -CvDTreeSplit* CvForestTree::find_best_split( CvDTreeNode* node ) -{ - CvMat* active_var_mask = 0; - if( forest ) + RTrees::Params getRParams() const { - int var_count; - CvRNG* rng = forest->get_rng(); - - active_var_mask = forest->get_active_var_mask(); - var_count = active_var_mask->cols; - - CV_Assert( var_count == data->var_count ); - - for( int vi = 0; vi < var_count; vi++ ) - { - uchar temp; - int i1 = cvRandInt(rng) % var_count; - int i2 = cvRandInt(rng) % var_count; - CV_SWAP( active_var_mask->data.ptr[i1], - active_var_mask->data.ptr[i2], temp ); - } + return rparams; } - cv::ForestTreeBestSplitFinder finder( this, node ); - - cv::parallel_reduce(cv::BlockedRange(0, data->var_count), finder); - - CvDTreeSplit *bestSplit = 0; - if( finder.bestSplit->quality > 0 ) + void clear() { - bestSplit = data->new_split_cat( 0, -1.0f ); - memcpy( bestSplit, finder.bestSplit, finder.splitSize ); + DTreesImpl::clear(); + oobError = 0.; + rng = RNG(-1); } - return bestSplit; -} - -void CvForestTree::read( CvFileStorage* fs, CvFileNode* fnode, CvRTrees* _forest, CvDTreeTrainData* _data ) -{ - CvDTree::read( fs, fnode, _data ); - forest = _forest; -} - - -void CvForestTree::read( CvFileStorage*, CvFileNode* ) -{ - assert(0); -} - -void CvForestTree::read( CvFileStorage* _fs, CvFileNode* _node, - CvDTreeTrainData* _data ) -{ - CvDTree::read( _fs, _node, _data ); -} - - -////////////////////////////////////////////////////////////////////////////////////////// -// Random trees // -////////////////////////////////////////////////////////////////////////////////////////// -CvRTParams::CvRTParams() : CvDTreeParams( 5, 10, 0, false, 10, 0, false, false, 0 ), - calc_var_importance(false), nactive_vars(0) -{ - term_crit = cvTermCriteria( CV_TERMCRIT_ITER+CV_TERMCRIT_EPS, 50, 0.1 ); -} - -CvRTParams::CvRTParams( int _max_depth, int _min_sample_count, - float _regression_accuracy, bool _use_surrogates, - int _max_categories, const float* _priors, bool _calc_var_importance, - int _nactive_vars, int max_num_of_trees_in_the_forest, - float forest_accuracy, int termcrit_type ) : - CvDTreeParams( _max_depth, _min_sample_count, _regression_accuracy, - _use_surrogates, _max_categories, 0, - false, false, _priors ), - calc_var_importance(_calc_var_importance), - nactive_vars(_nactive_vars) -{ - term_crit = cvTermCriteria(termcrit_type, - max_num_of_trees_in_the_forest, forest_accuracy); -} - -CvRTrees::CvRTrees() -{ - nclasses = 0; - oob_error = 0; - ntrees = 0; - trees = NULL; - data = NULL; - active_var_mask = NULL; - var_importance = NULL; - rng = &cv::theRNG(); - default_model_name = "my_random_trees"; -} - - -void CvRTrees::clear() -{ - int k; - for( k = 0; k < ntrees; k++ ) - delete trees[k]; - cvFree( &trees ); - - delete data; - data = 0; - - cvReleaseMat( &active_var_mask ); - cvReleaseMat( &var_importance ); - ntrees = 0; -} - - -CvRTrees::~CvRTrees() -{ - clear(); -} - -cv::String CvRTrees::getName() const -{ - return CV_TYPE_NAME_ML_RTREES; -} - -CvMat* CvRTrees::get_active_var_mask() -{ - return active_var_mask; -} - - -CvRNG* CvRTrees::get_rng() -{ - return &rng->state; -} - -bool CvRTrees::train( const CvMat* _train_data, int _tflag, - const CvMat* _responses, const CvMat* _var_idx, - const CvMat* _sample_idx, const CvMat* _var_type, - const CvMat* _missing_mask, CvRTParams params ) -{ - clear(); - - CvDTreeParams tree_params( params.max_depth, params.min_sample_count, - params.regression_accuracy, params.use_surrogates, params.max_categories, - params.cv_folds, params.use_1se_rule, false, params.priors ); - - data = new CvDTreeTrainData(); - data->set_data( _train_data, _tflag, _responses, _var_idx, - _sample_idx, _var_type, _missing_mask, tree_params, true); - - int var_count = data->var_count; - if( params.nactive_vars > var_count ) - params.nactive_vars = var_count; - else if( params.nactive_vars == 0 ) - params.nactive_vars = (int)sqrt((double)var_count); - else if( params.nactive_vars < 0 ) - CV_Error( CV_StsBadArg, " must be non-negative" ); - - // Create mask of active variables at the tree nodes - active_var_mask = cvCreateMat( 1, var_count, CV_8UC1 ); - if( params.calc_var_importance ) + const vector& getActiveVars() { - var_importance = cvCreateMat( 1, var_count, CV_32FC1 ); - cvZero(var_importance); - } - { // initialize active variables mask - CvMat submask1, submask2; - CV_Assert( (active_var_mask->cols >= 1) && (params.nactive_vars > 0) && (params.nactive_vars <= active_var_mask->cols) ); - cvGetCols( active_var_mask, &submask1, 0, params.nactive_vars ); - cvSet( &submask1, cvScalar(1) ); - if( params.nactive_vars < active_var_mask->cols ) + int i, nvars = (int)allVars.size(), m = (int)activeVars.size(); + for( i = 0; i < nvars; i++ ) { - cvGetCols( active_var_mask, &submask2, params.nactive_vars, var_count ); - cvZero( &submask2 ); + int i1 = rng.uniform(0, nvars); + int i2 = rng.uniform(0, nvars); + std::swap(allVars[i1], allVars[i2]); } + for( i = 0; i < m; i++ ) + activeVars[i] = allVars[i]; + return activeVars; } - return grow_forest( params.term_crit ); -} - -bool CvRTrees::train( CvMLData* _data, CvRTParams params ) -{ - const CvMat* values = _data->get_values(); - const CvMat* response = _data->get_responses(); - const CvMat* missing = _data->get_missing(); - const CvMat* var_types = _data->get_var_types(); - const CvMat* train_sidx = _data->get_train_sample_idx(); - const CvMat* var_idx = _data->get_var_idx(); - - return train( values, CV_ROW_SAMPLE, response, var_idx, - train_sidx, var_types, missing, params ); -} - -bool CvRTrees::grow_forest( const CvTermCriteria term_crit ) -{ - CvMat* sample_idx_mask_for_tree = 0; - CvMat* sample_idx_for_tree = 0; - - const int max_ntrees = term_crit.max_iter; - const double max_oob_err = term_crit.epsilon; - - const int dims = data->var_count; - float maximal_response = 0; - - CvMat* oob_sample_votes = 0; - CvMat* oob_responses = 0; - - float* oob_samples_perm_ptr= 0; - - float* samples_ptr = 0; - uchar* missing_ptr = 0; - float* true_resp_ptr = 0; - bool is_oob_or_vimportance = (max_oob_err > 0 && term_crit.type != CV_TERMCRIT_ITER) || var_importance; - - // oob_predictions_sum[i] = sum of predicted values for the i-th sample - // oob_num_of_predictions[i] = number of summands - // (number of predictions for the i-th sample) - // initialize these variable to avoid warning C4701 - CvMat oob_predictions_sum = cvMat( 1, 1, CV_32FC1 ); - CvMat oob_num_of_predictions = cvMat( 1, 1, CV_32FC1 ); - - nsamples = data->sample_count; - nclasses = data->get_num_classes(); - - if ( is_oob_or_vimportance ) + void startTraining( const Ptr& trainData, int flags ) { - if( data->is_classifier ) - { - oob_sample_votes = cvCreateMat( nsamples, nclasses, CV_32SC1 ); - cvZero(oob_sample_votes); - } - else - { - // oob_responses[0,i] = oob_predictions_sum[i] - // = sum of predicted values for the i-th sample - // oob_responses[1,i] = oob_num_of_predictions[i] - // = number of summands (number of predictions for the i-th sample) - oob_responses = cvCreateMat( 2, nsamples, CV_32FC1 ); - cvZero(oob_responses); - cvGetRow( oob_responses, &oob_predictions_sum, 0 ); - cvGetRow( oob_responses, &oob_num_of_predictions, 1 ); - } - - oob_samples_perm_ptr = (float*)cvAlloc( sizeof(float)*nsamples*dims ); - samples_ptr = (float*)cvAlloc( sizeof(float)*nsamples*dims ); - missing_ptr = (uchar*)cvAlloc( sizeof(uchar)*nsamples*dims ); - true_resp_ptr = (float*)cvAlloc( sizeof(float)*nsamples ); - - data->get_vectors( 0, samples_ptr, missing_ptr, true_resp_ptr ); - - double minval, maxval; - CvMat responses = cvMat(1, nsamples, CV_32FC1, true_resp_ptr); - cvMinMaxLoc( &responses, &minval, &maxval ); - maximal_response = (float)MAX( MAX( fabs(minval), fabs(maxval) ), 0 ); + DTreesImpl::startTraining(trainData, flags); + int nvars = w->data->getNVars(); + int i, m = rparams.nactiveVars > 0 ? rparams.nactiveVars : cvRound(std::sqrt((double)nvars)); + m = std::min(std::max(m, 1), nvars); + allVars.resize(nvars); + activeVars.resize(m); + for( i = 0; i < nvars; i++ ) + allVars[i] = varIdx[i]; } - trees = (CvForestTree**)cvAlloc( sizeof(trees[0])*max_ntrees ); - memset( trees, 0, sizeof(trees[0])*max_ntrees ); - - sample_idx_mask_for_tree = cvCreateMat( 1, nsamples, CV_8UC1 ); - sample_idx_for_tree = cvCreateMat( 1, nsamples, CV_32SC1 ); - - ntrees = 0; - while( ntrees < max_ntrees ) + void endTraining() { - int i, oob_samples_count = 0; - double ncorrect_responses = 0; // used for estimation of variable importance - CvForestTree* tree = 0; + DTreesImpl::endTraining(); + vector a, b; + std::swap(allVars, a); + std::swap(activeVars, b); + } - cvZero( sample_idx_mask_for_tree ); - for(i = 0; i < nsamples; i++ ) //form sample for creation one tree + bool train( const Ptr& trainData, int flags ) + { + Params dp(rparams.maxDepth, rparams.minSampleCount, rparams.regressionAccuracy, + rparams.useSurrogates, rparams.maxCategories, rparams.CVFolds, + rparams.use1SERule, rparams.truncatePrunedTree, rparams.priors); + setDParams(dp); + startTraining(trainData, flags); + int treeidx, ntrees = (rparams.termCrit.type & TermCriteria::COUNT) != 0 ? + rparams.termCrit.maxCount : 10000; + int i, j, k, vi, vi_, n = (int)w->sidx.size(); + int nclasses = (int)classLabels.size(); + double eps = (rparams.termCrit.type & TermCriteria::EPS) != 0 && + rparams.termCrit.epsilon > 0 ? rparams.termCrit.epsilon : 0.; + vector sidx(n); + vector oobmask(n); + vector oobidx; + vector oobperm; + vector oobres(n, 0.); + vector oobcount(n, 0); + vector oobvotes(n*nclasses, 0); + int nvars = w->data->getNVars(); + int nallvars = w->data->getNAllVars(); + const int* vidx = !varIdx.empty() ? &varIdx[0] : 0; + vector samplebuf(nallvars); + Mat samples = w->data->getSamples(); + float* psamples = samples.ptr(); + size_t sstep0 = samples.step1(), sstep1 = 1; + Mat sample0, sample(nallvars, 1, CV_32F, &samplebuf[0]); + int predictFlags = _isClassifier ? (PREDICT_MAX_VOTE + RAW_OUTPUT) : PREDICT_SUM; + + bool calcOOBError = eps > 0 || rparams.calcVarImportance; + double max_response = 0.; + + if( w->data->getLayout() == COL_SAMPLE ) + std::swap(sstep0, sstep1); + + if( !_isClassifier ) { - int idx = (*rng)(nsamples); - sample_idx_for_tree->data.i[i] = idx; - sample_idx_mask_for_tree->data.ptr[idx] = 0xFF; + for( i = 0; i < n; i++ ) + { + double val = std::abs(w->ord_responses[w->sidx[i]]); + max_response = std::max(max_response, val); + } } - trees[ntrees] = new CvForestTree(); - tree = trees[ntrees]; - tree->train( data, sample_idx_for_tree, this ); + if( rparams.calcVarImportance ) + varImportance.resize(nallvars, 0.f); - if ( is_oob_or_vimportance ) + for( treeidx = 0; treeidx < ntrees; treeidx++ ) { - CvMat sample, missing; - // form array of OOB samples indices and get these samples - sample = cvMat( 1, dims, CV_32FC1, samples_ptr ); - missing = cvMat( 1, dims, CV_8UC1, missing_ptr ); - - oob_error = 0; - for( i = 0; i < nsamples; i++, - sample.data.fl += dims, missing.data.ptr += dims ) - { - CvDTreeNode* predicted_node = 0; - // check if the sample is OOB - if( sample_idx_mask_for_tree->data.ptr[i] ) - continue; - - // predict oob samples - if( !predicted_node ) - predicted_node = tree->predict(&sample, &missing, true); - - if( !data->is_classifier ) //regression - { - double avg_resp, resp = predicted_node->value; - oob_predictions_sum.data.fl[i] += (float)resp; - oob_num_of_predictions.data.fl[i] += 1; - - // compute oob error - avg_resp = oob_predictions_sum.data.fl[i]/oob_num_of_predictions.data.fl[i]; - avg_resp -= true_resp_ptr[i]; - oob_error += avg_resp*avg_resp; - resp = (resp - true_resp_ptr[i])/maximal_response; - ncorrect_responses += exp( -resp*resp ); - } - else //classification - { - double prdct_resp; - CvPoint max_loc; - CvMat votes; - - cvGetRow(oob_sample_votes, &votes, i); - votes.data.i[predicted_node->class_idx]++; - - // compute oob error - cvMinMaxLoc( &votes, 0, 0, 0, &max_loc ); + putchar('.'); fflush(stdout); + for( i = 0; i < n; i++ ) + oobmask[i] = (uchar)1; - prdct_resp = data->cat_map->data.i[max_loc.x]; - oob_error += (fabs(prdct_resp - true_resp_ptr[i]) < FLT_EPSILON) ? 0 : 1; - - ncorrect_responses += cvRound(predicted_node->value - true_resp_ptr[i]) == 0; - } - oob_samples_count++; + for( i = 0; i < n; i++ ) + { + j = rng.uniform(0, n); + sidx[i] = w->sidx[j]; + oobmask[j] = (uchar)0; } - if( oob_samples_count > 0 ) - oob_error /= (double)oob_samples_count; + int root = addTree( sidx ); + if( root < 0 ) + return false; - // estimate variable importance - if( var_importance && oob_samples_count > 0 ) + if( calcOOBError ) { - int m; + oobidx.clear(); + for( i = 0; i < n; i++ ) + { + if( !oobmask[i] ) + oobidx.push_back(i); + } + int n_oob = (int)oobidx.size(); + // if there is no out-of-bag samples, we can not compute OOB error + // nor update the variable importance vector; so we proceed to the next tree + if( n_oob == 0 ) + continue; + double ncorrect_responses = 0.; - memcpy( oob_samples_perm_ptr, samples_ptr, dims*nsamples*sizeof(float)); - for( m = 0; m < dims; m++ ) + oobError = 0.; + for( i = 0; i < n_oob; i++ ) { - double ncorrect_responses_permuted = 0; - // randomly permute values of the m-th variable in the oob samples - float* mth_var_ptr = oob_samples_perm_ptr + m; + j = oobidx[i]; + sample = Mat( nallvars, 1, CV_32F, psamples + sstep0*w->sidx[j], sstep1*sizeof(psamples[0]) ); - for( i = 0; i < nsamples; i++ ) + double val = predictTrees(Range(treeidx, treeidx+1), sample, predictFlags); + if( !_isClassifier ) { - int i1, i2; - float temp; - - if( sample_idx_mask_for_tree->data.ptr[i] ) //the sample is not OOB - continue; - i1 = (*rng)(nsamples); - i2 = (*rng)(nsamples); - CV_SWAP( mth_var_ptr[i1*dims], mth_var_ptr[i2*dims], temp ); - - // turn values of (m-1)-th variable, that were permuted - // at the previous iteration, untouched - if( m > 1 ) - oob_samples_perm_ptr[i*dims+m-1] = samples_ptr[i*dims+m-1]; + oobres[j] += val; + oobcount[j]++; + double true_val = w->ord_responses[w->sidx[j]]; + double a = oobres[j]/oobcount[j] - true_val; + oobError += a*a; + val = (val - true_val)/max_response; + ncorrect_responses += std::exp( -val*val ); } - - // predict "permuted" cases and calculate the number of votes for the - // correct class in the variable-m-permuted oob data - sample = cvMat( 1, dims, CV_32FC1, oob_samples_perm_ptr ); - missing = cvMat( 1, dims, CV_8UC1, missing_ptr ); - for( i = 0; i < nsamples; i++, - sample.data.fl += dims, missing.data.ptr += dims ) + else { - double predct_resp, true_resp; + int ival = cvRound(val); + int* votes = &oobvotes[j*nclasses]; + votes[ival]++; + int best_class = 0; + for( k = 1; k < nclasses; k++ ) + if( votes[best_class] < votes[k] ) + best_class = k; + int diff = best_class != w->cat_responses[w->sidx[j]]; + oobError += diff; + ncorrect_responses += diff == 0; + } + } + + oobError /= n_oob; + if( rparams.calcVarImportance && n_oob > 1 ) + { + oobperm.resize(n_oob); + for( i = 0; i < n_oob; i++ ) + oobperm[i] = oobidx[i]; - if( sample_idx_mask_for_tree->data.ptr[i] ) //the sample is not OOB - continue; + for( vi_ = 0; vi_ < nvars; vi_++ ) + { + vi = vidx ? vidx[vi_] : vi_; + double ncorrect_responses_permuted = 0; + for( i = 0; i < n_oob; i++ ) + { + int i1 = rng.uniform(0, n_oob); + int i2 = rng.uniform(0, n_oob); + std::swap(i1, i2); + } - predct_resp = tree->predict(&sample, &missing, true)->value; - true_resp = true_resp_ptr[i]; - if( data->is_classifier ) - ncorrect_responses_permuted += cvRound(true_resp - predct_resp) == 0; - else + for( i = 0; i < n_oob; i++ ) { - true_resp = (true_resp - predct_resp)/maximal_response; - ncorrect_responses_permuted += exp( -true_resp*true_resp ); + j = oobidx[i]; + int vj = oobperm[i]; + sample0 = Mat( nallvars, 1, CV_32F, psamples + sstep0*w->sidx[j], sstep1*sizeof(psamples[0]) ); + for( k = 0; k < nallvars; k++ ) + sample.at(k) = sample0.at(k); + sample.at(vi) = psamples[sstep0*w->sidx[vj] + sstep1*vi]; + + double val = predictTrees(Range(treeidx, treeidx+1), sample, predictFlags); + if( !_isClassifier ) + { + val = (val - w->ord_responses[w->sidx[j]])/max_response; + ncorrect_responses_permuted += exp( -val*val ); + } + else + ncorrect_responses_permuted += cvRound(val) == w->cat_responses[w->sidx[j]]; } + varImportance[vi] += (float)(ncorrect_responses - ncorrect_responses_permuted); } - var_importance->data.fl[m] += (float)(ncorrect_responses - - ncorrect_responses_permuted); } } + if( calcOOBError && oobError < eps ) + break; } - ntrees++; - if( term_crit.type != CV_TERMCRIT_ITER && oob_error < max_oob_err ) - break; - } - - if( var_importance ) - { - for ( int vi = 0; vi < var_importance->cols; vi++ ) - var_importance->data.fl[vi] = ( var_importance->data.fl[vi] > 0 ) ? - var_importance->data.fl[vi] : 0; - cvNormalize( var_importance, var_importance, 1., 0, CV_L1 ); - } - - cvFree( &oob_samples_perm_ptr ); - cvFree( &samples_ptr ); - cvFree( &missing_ptr ); - cvFree( &true_resp_ptr ); - - cvReleaseMat( &sample_idx_mask_for_tree ); - cvReleaseMat( &sample_idx_for_tree ); - - cvReleaseMat( &oob_sample_votes ); - cvReleaseMat( &oob_responses ); + printf("done!\n"); - return true; -} - - -const CvMat* CvRTrees::get_var_importance() -{ - return var_importance; -} - - -float CvRTrees::get_proximity( const CvMat* sample1, const CvMat* sample2, - const CvMat* missing1, const CvMat* missing2 ) const -{ - float result = 0; - - for( int i = 0; i < ntrees; i++ ) - result += trees[i]->predict( sample1, missing1 ) == - trees[i]->predict( sample2, missing2 ) ? 1 : 0; - result = result/(float)ntrees; - - return result; -} - -float CvRTrees::calc_error( CvMLData* _data, int type , std::vector *resp ) -{ - float err = 0; - const CvMat* values = _data->get_values(); - const CvMat* response = _data->get_responses(); - const CvMat* missing = _data->get_missing(); - const CvMat* sample_idx = (type == CV_TEST_ERROR) ? _data->get_test_sample_idx() : _data->get_train_sample_idx(); - const CvMat* var_types = _data->get_var_types(); - int* sidx = sample_idx ? sample_idx->data.i : 0; - int r_step = CV_IS_MAT_CONT(response->type) ? - 1 : response->step / CV_ELEM_SIZE(response->type); - bool is_classifier = var_types->data.ptr[var_types->cols-1] == CV_VAR_CATEGORICAL; - int sample_count = sample_idx ? sample_idx->cols : 0; - sample_count = (type == CV_TRAIN_ERROR && sample_count == 0) ? values->rows : sample_count; - float* pred_resp = 0; - if( resp && (sample_count > 0) ) - { - resp->resize( sample_count ); - pred_resp = &((*resp)[0]); - } - if ( is_classifier ) - { - for( int i = 0; i < sample_count; i++ ) + if( rparams.calcVarImportance ) { - CvMat sample, miss; - int si = sidx ? sidx[i] : i; - cvGetRow( values, &sample, si ); - if( missing ) - cvGetRow( missing, &miss, si ); - float r = (float)predict( &sample, missing ? &miss : 0 ); - if( pred_resp ) - pred_resp[i] = r; - int d = fabs((double)r - response->data.fl[si*r_step]) <= FLT_EPSILON ? 0 : 1; - err += d; + for( vi_ = 0; vi_ < nallvars; vi_++ ) + varImportance[vi_] = std::max(varImportance[vi_], 0.f); + normalize(varImportance, varImportance, 1., 0, NORM_L1); } - err = sample_count ? err / (float)sample_count * 100 : -FLT_MAX; + endTraining(); + return true; } - else + + void writeTrainingParams( FileStorage& fs ) const { - for( int i = 0; i < sample_count; i++ ) - { - CvMat sample, miss; - int si = sidx ? sidx[i] : i; - cvGetRow( values, &sample, si ); - if( missing ) - cvGetRow( missing, &miss, si ); - float r = (float)predict( &sample, missing ? &miss : 0 ); - if( pred_resp ) - pred_resp[i] = r; - float d = r - response->data.fl[si*r_step]; - err += d*d; - } - err = sample_count ? err / (float)sample_count : -FLT_MAX; + DTreesImpl::writeTrainingParams(fs); + fs << "nactive_vars" << rparams.nactiveVars; } - return err; -} - -float CvRTrees::get_train_error() -{ - float err = -1; - - int sample_count = data->sample_count; - int var_count = data->var_count; - - float *values_ptr = (float*)cvAlloc( sizeof(float)*sample_count*var_count ); - uchar *missing_ptr = (uchar*)cvAlloc( sizeof(uchar)*sample_count*var_count ); - float *responses_ptr = (float*)cvAlloc( sizeof(float)*sample_count ); - - data->get_vectors( 0, values_ptr, missing_ptr, responses_ptr); - if (data->is_classifier) + void write( FileStorage& fs ) const { - int err_count = 0; - float *vp = values_ptr; - uchar *mp = missing_ptr; - for (int si = 0; si < sample_count; si++, vp += var_count, mp += var_count) - { - CvMat sample = cvMat( 1, var_count, CV_32FC1, vp ); - CvMat missing = cvMat( 1, var_count, CV_8UC1, mp ); - float r = predict( &sample, &missing ); - if (fabs(r - responses_ptr[si]) >= FLT_EPSILON) - err_count++; - } - err = (float)err_count / (float)sample_count; - } - else - CV_Error( CV_StsBadArg, "This method is not supported for regression problems" ); + if( roots.empty() ) + CV_Error( CV_StsBadArg, "RTrees have not been trained" ); - cvFree( &values_ptr ); - cvFree( &missing_ptr ); - cvFree( &responses_ptr ); + writeParams(fs); - return err; -} + fs << "oob_error" << oobError; + if( !varImportance.empty() ) + fs << "var_importance" << varImportance; + int k, ntrees = (int)roots.size(); -float CvRTrees::predict( const CvMat* sample, const CvMat* missing ) const -{ - double result = -1; - int k; + fs << "ntrees" << ntrees + << "trees" << "["; - if( nclasses > 0 ) //classification - { - int max_nvotes = 0; - cv::AutoBuffer _votes(nclasses); - int* votes = _votes; - memset( votes, 0, sizeof(*votes)*nclasses ); for( k = 0; k < ntrees; k++ ) { - CvDTreeNode* predicted_node = trees[k]->predict( sample, missing ); - int nvotes; - int class_idx = predicted_node->class_idx; - CV_Assert( 0 <= class_idx && class_idx < nclasses ); - - nvotes = ++votes[class_idx]; - if( nvotes > max_nvotes ) - { - max_nvotes = nvotes; - result = predicted_node->value; - } + fs << "{"; + writeTree(fs, roots[k]); + fs << "}"; } - } - else // regression - { - result = 0; - for( k = 0; k < ntrees; k++ ) - result += trees[k]->predict( sample, missing )->value; - result /= (double)ntrees; - } - return (float)result; -} + fs << "]"; + } -float CvRTrees::predict_prob( const CvMat* sample, const CvMat* missing) const -{ - if( nclasses == 2 ) //classification + void readParams( const FileNode& fn ) { - cv::AutoBuffer _votes(nclasses); - int* votes = _votes; - memset( votes, 0, sizeof(*votes)*nclasses ); - for( int k = 0; k < ntrees; k++ ) - { - CvDTreeNode* predicted_node = trees[k]->predict( sample, missing ); - int class_idx = predicted_node->class_idx; - CV_Assert( 0 <= class_idx && class_idx < nclasses ); - - ++votes[class_idx]; - } - - return float(votes[1])/ntrees; + DTreesImpl::readParams(fn); + rparams.maxDepth = params0.maxDepth; + rparams.minSampleCount = params0.minSampleCount; + rparams.regressionAccuracy = params0.regressionAccuracy; + rparams.useSurrogates = params0.useSurrogates; + rparams.maxCategories = params0.maxCategories; + rparams.priors = params0.priors; + + FileNode tparams_node = fn["training_params"]; + rparams.nactiveVars = (int)tparams_node["nactive_vars"]; } - else // regression - CV_Error(CV_StsBadArg, "This function works for binary classification problems only..."); - - return -1; -} - -void CvRTrees::write( CvFileStorage* fs, const char* name ) const -{ - int k; - if( ntrees < 1 || !trees || nsamples < 1 ) - CV_Error( CV_StsBadArg, "Invalid CvRTrees object" ); - - cv::String modelNodeName = this->getName(); - cvStartWriteStruct( fs, name, CV_NODE_MAP, modelNodeName.c_str() ); - - cvWriteInt( fs, "nclasses", nclasses ); - cvWriteInt( fs, "nsamples", nsamples ); - cvWriteInt( fs, "nactive_vars", (int)cvSum(active_var_mask).val[0] ); - cvWriteReal( fs, "oob_error", oob_error ); + void read( const FileNode& fn ) + { + clear(); - if( var_importance ) - cvWrite( fs, "var_importance", var_importance ); + //int nclasses = (int)fn["nclasses"]; + //int nsamples = (int)fn["nsamples"]; + oobError = (double)fn["oob_error"]; + int ntrees = (int)fn["ntrees"]; - cvWriteInt( fs, "ntrees", ntrees ); + fn["var_importance"] >> varImportance; - data->write_params( fs ); + readParams(fn); - cvStartWriteStruct( fs, "trees", CV_NODE_SEQ ); + FileNode trees_node = fn["trees"]; + FileNodeIterator it = trees_node.begin(); + CV_Assert( ntrees == (int)trees_node.size() ); - for( k = 0; k < ntrees; k++ ) - { - cvStartWriteStruct( fs, 0, CV_NODE_MAP ); - trees[k]->write( fs ); - cvEndWriteStruct( fs ); + for( int treeidx = 0; treeidx < ntrees; treeidx++, ++it ) + { + FileNode nfn = (*it)["nodes"]; + readTree(nfn); + } } - cvEndWriteStruct( fs ); //trees - cvEndWriteStruct( fs ); //CV_TYPE_NAME_ML_RTREES -} + RTrees::Params rparams; + double oobError; + vector varImportance; + vector allVars, activeVars; + RNG rng; +}; -void CvRTrees::read( CvFileStorage* fs, CvFileNode* fnode ) +class RTreesImpl : public RTrees { - int nactive_vars, var_count, k; - CvSeqReader reader; - CvFileNode* trees_fnode = 0; +public: + RTreesImpl() {} + virtual ~RTreesImpl() {} - clear(); + String getDefaultModelName() const { return "opencv_ml_rtrees"; } - nclasses = cvReadIntByName( fs, fnode, "nclasses", -1 ); - nsamples = cvReadIntByName( fs, fnode, "nsamples" ); - nactive_vars = cvReadIntByName( fs, fnode, "nactive_vars", -1 ); - oob_error = cvReadRealByName(fs, fnode, "oob_error", -1 ); - ntrees = cvReadIntByName( fs, fnode, "ntrees", -1 ); - - var_importance = (CvMat*)cvReadByName( fs, fnode, "var_importance" ); - - if( nclasses < 0 || nsamples <= 0 || nactive_vars < 0 || oob_error < 0 || ntrees <= 0) - CV_Error( CV_StsParseError, "Some , , , " - ", , of tags are missing" ); - - rng = &cv::theRNG(); - - trees = (CvForestTree**)cvAlloc( sizeof(trees[0])*ntrees ); - memset( trees, 0, sizeof(trees[0])*ntrees ); - - data = new CvDTreeTrainData(); - data->read_params( fs, fnode ); - data->shared = true; - - trees_fnode = cvGetFileNodeByName( fs, fnode, "trees" ); - if( !trees_fnode || !CV_NODE_IS_SEQ(trees_fnode->tag) ) - CV_Error( CV_StsParseError, " tag is missing" ); - - cvStartReadSeq( trees_fnode->data.seq, &reader ); - if( reader.seq->total != ntrees ) - CV_Error( CV_StsParseError, - " is not equal to the number of trees saved in file" ); - - for( k = 0; k < ntrees; k++ ) + bool train( const Ptr& trainData, int flags ) { - trees[k] = new CvForestTree(); - trees[k]->read( fs, (CvFileNode*)reader.ptr, this, data ); - CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); + return impl.train(trainData, flags); } - var_count = data->var_count; - active_var_mask = cvCreateMat( 1, var_count, CV_8UC1 ); + float predict( InputArray samples, OutputArray results, int flags ) const { - // initialize active variables mask - CvMat submask1; - cvGetCols( active_var_mask, &submask1, 0, nactive_vars ); - cvSet( &submask1, cvScalar(1) ); - - if( nactive_vars < var_count ) - { - CvMat submask2; - cvGetCols( active_var_mask, &submask2, nactive_vars, var_count ); - cvZero( &submask2 ); - } + return impl.predict(samples, results, flags); } -} - - -int CvRTrees::get_tree_count() const -{ - return ntrees; -} -CvForestTree* CvRTrees::get_tree(int i) const -{ - return (unsigned)i < (unsigned)ntrees ? trees[i] : 0; -} + void write( FileStorage& fs ) const + { + impl.write(fs); + } + + void read( const FileNode& fn ) + { + impl.read(fn); + } -using namespace cv; + void setRParams(const Params& p) { impl.setRParams(p); } + Params getRParams() const { return impl.getRParams(); } -bool CvRTrees::train( const Mat& _train_data, int _tflag, - const Mat& _responses, const Mat& _var_idx, - const Mat& _sample_idx, const Mat& _var_type, - const Mat& _missing_mask, CvRTParams _params ) -{ - train_data_hdr = _train_data; - train_data_mat = _train_data; - responses_hdr = _responses; - responses_mat = _responses; + Mat getVarImportance() const { return Mat_(impl.varImportance, true); } + int getVarCount() const { return impl.getVarCount(); } - CvMat vidx = _var_idx, sidx = _sample_idx, vtype = _var_type, mmask = _missing_mask; + bool isTrained() const { return impl.isTrained(); } + bool isClassifier() const { return impl.isClassifier(); } - return train(&train_data_hdr, _tflag, &responses_hdr, vidx.data.ptr ? &vidx : 0, - sidx.data.ptr ? &sidx : 0, vtype.data.ptr ? &vtype : 0, - mmask.data.ptr ? &mmask : 0, _params); -} + const vector& getRoots() const { return impl.getRoots(); } + const vector& getNodes() const { return impl.getNodes(); } + const vector& getSplits() const { return impl.getSplits(); } + const vector& getSubsets() const { return impl.getSubsets(); } + DTreesImplForRTrees impl; +}; -float CvRTrees::predict( const Mat& _sample, const Mat& _missing ) const -{ - CvMat sample = _sample, mmask = _missing; - return predict(&sample, mmask.data.ptr ? &mmask : 0); -} -float CvRTrees::predict_prob( const Mat& _sample, const Mat& _missing) const +Ptr RTrees::create(const Params& params) { - CvMat sample = _sample, mmask = _missing; - return predict_prob(&sample, mmask.data.ptr ? &mmask : 0); + Ptr p = makePtr(); + p->setRParams(params); + return p; } -Mat CvRTrees::getVarImportance() -{ - return cvarrToMat(get_var_importance()); -} +}} // End of file. diff --git a/modules/ml/src/svm.cpp b/modules/ml/src/svm.cpp index 341a817c94..7715bee8af 100644 --- a/modules/ml/src/svm.cpp +++ b/modules/ml/src/svm.cpp @@ -7,9 +7,11 @@ // copy or use the software. // // -// Intel License Agreement +// License Agreement +// For Open Source Computer Vision Library // // Copyright (C) 2000, Intel Corporation, all rights reserved. +// Copyright (C) 2014, Itseez Inc, all rights reserved. // Third party copyrights are property of their respective owners. // // Redistribution and use in source and binary forms, with or without modification, @@ -22,7 +24,7 @@ // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // -// * The name of Intel Corporation may not be used to endorse or promote products +// * The name of the copyright holders may not be used to endorse or promote products // derived from this software without specific prior written permission. // // This software is provided by the copyright holders and contributors "as is" and @@ -40,6 +42,9 @@ #include "precomp.hpp" +#include +#include + /****************************************************************************************\ COPYRIGHT NOTICE ---------------- @@ -81,2929 +86,2092 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \****************************************************************************************/ -using namespace cv; - -#define CV_SVM_MIN_CACHE_SIZE (40 << 20) /* 40Mb */ +namespace cv { namespace ml { -#include -#include - -#if 1 typedef float Qfloat; -#define QFLOAT_TYPE CV_32F -#else -typedef double Qfloat; -#define QFLOAT_TYPE CV_64F -#endif +const int QFLOAT_TYPE = DataDepth::value; // Param Grid -bool CvParamGrid::check() const -{ - bool ok = false; - - CV_FUNCNAME( "CvParamGrid::check" ); - __BEGIN__; - - if( min_val > max_val ) - CV_ERROR( CV_StsBadArg, "Lower bound of the grid must be less then the upper one" ); - if( min_val < DBL_EPSILON ) - CV_ERROR( CV_StsBadArg, "Lower bound of the grid must be positive" ); - if( step < 1. + FLT_EPSILON ) - CV_ERROR( CV_StsBadArg, "Grid step must greater then 1" ); - - ok = true; - - __END__; - - return ok; -} - -CvParamGrid CvSVM::get_default_grid( int param_id ) +static void checkParamGrid(const ParamGrid& pg) { - CvParamGrid grid; - if( param_id == CvSVM::C ) - { - grid.min_val = 0.1; - grid.max_val = 500; - grid.step = 5; // total iterations = 5 - } - else if( param_id == CvSVM::GAMMA ) - { - grid.min_val = 1e-5; - grid.max_val = 0.6; - grid.step = 15; // total iterations = 4 - } - else if( param_id == CvSVM::P ) - { - grid.min_val = 0.01; - grid.max_val = 100; - grid.step = 7; // total iterations = 4 - } - else if( param_id == CvSVM::NU ) - { - grid.min_val = 0.01; - grid.max_val = 0.2; - grid.step = 3; // total iterations = 3 - } - else if( param_id == CvSVM::COEF ) - { - grid.min_val = 0.1; - grid.max_val = 300; - grid.step = 14; // total iterations = 3 - } - else if( param_id == CvSVM::DEGREE ) - { - grid.min_val = 0.01; - grid.max_val = 4; - grid.step = 7; // total iterations = 3 - } - else - cvError( CV_StsBadArg, "CvSVM::get_default_grid", "Invalid type of parameter " - "(use one of CvSVM::C, CvSVM::GAMMA et al.)", __FILE__, __LINE__ ); - return grid; + if( pg.minVal > pg.maxVal ) + CV_Error( CV_StsBadArg, "Lower bound of the grid must be less then the upper one" ); + if( pg.minVal < DBL_EPSILON ) + CV_Error( CV_StsBadArg, "Lower bound of the grid must be positive" ); + if( pg.logStep < 1. + FLT_EPSILON ) + CV_Error( CV_StsBadArg, "Grid step must greater then 1" ); } // SVM training parameters -CvSVMParams::CvSVMParams() : - svm_type(CvSVM::C_SVC), kernel_type(CvSVM::RBF), degree(0), - gamma(1), coef0(0), C(1), nu(0), p(0), class_weights(0) +SVM::Params::Params() { - term_crit = cvTermCriteria( CV_TERMCRIT_ITER+CV_TERMCRIT_EPS, 1000, FLT_EPSILON ); + svmType = SVM::C_SVC; + kernelType = SVM::RBF; + degree = 0; + gamma = 1; + coef0 = 0; + C = 1; + nu = 0; + p = 0; + termCrit = TermCriteria( CV_TERMCRIT_ITER+CV_TERMCRIT_EPS, 1000, FLT_EPSILON ); } -CvSVMParams::CvSVMParams( int _svm_type, int _kernel_type, - double _degree, double _gamma, double _coef0, - double _Con, double _nu, double _p, - CvMat* _class_weights, CvTermCriteria _term_crit ) : - svm_type(_svm_type), kernel_type(_kernel_type), - degree(_degree), gamma(_gamma), coef0(_coef0), - C(_Con), nu(_nu), p(_p), class_weights(_class_weights), term_crit(_term_crit) +SVM::Params::Params( int _svmType, int _kernelType, + double _degree, double _gamma, double _coef0, + double _Con, double _nu, double _p, + const Mat& _classWeights, TermCriteria _termCrit ) { + svmType = _svmType; + kernelType = _kernelType; + degree = _degree; + gamma = _gamma; + coef0 = _coef0; + C = _Con; + nu = _nu; + p = _p; + classWeights = _classWeights; + termCrit = _termCrit; } +SVM::Kernel::~Kernel() {} /////////////////////////////////////// SVM kernel /////////////////////////////////////// - -CvSVMKernel::CvSVMKernel() -{ - clear(); -} - - -void CvSVMKernel::clear() +class SVMKernelImpl : public SVM::Kernel { - params = 0; - calc_func = 0; -} - - -CvSVMKernel::~CvSVMKernel() -{ -} - - -CvSVMKernel::CvSVMKernel( const CvSVMParams* _params, Calc _calc_func ) -{ - clear(); - create( _params, _calc_func ); -} - - -bool CvSVMKernel::create( const CvSVMParams* _params, Calc _calc_func ) -{ - clear(); - params = _params; - calc_func = _calc_func; - - if( !calc_func ) - calc_func = params->kernel_type == CvSVM::RBF ? &CvSVMKernel::calc_rbf : - params->kernel_type == CvSVM::POLY ? &CvSVMKernel::calc_poly : - params->kernel_type == CvSVM::SIGMOID ? &CvSVMKernel::calc_sigmoid : - params->kernel_type == CvSVM::CHI2 ? &CvSVMKernel::calc_chi2 : - params->kernel_type == CvSVM::INTER ? &CvSVMKernel::calc_intersec : - &CvSVMKernel::calc_linear; - - return true; -} - - -void CvSVMKernel::calc_non_rbf_base( int vcount, int var_count, const float** vecs, - const float* another, Qfloat* results, - double alpha, double beta ) -{ - int j, k; - for( j = 0; j < vcount; j++ ) +public: + SVMKernelImpl() { - const float* sample = vecs[j]; - double s = 0; - for( k = 0; k <= var_count - 4; k += 4 ) - s += sample[k]*another[k] + sample[k+1]*another[k+1] + - sample[k+2]*another[k+2] + sample[k+3]*another[k+3]; - for( ; k < var_count; k++ ) - s += sample[k]*another[k]; - results[j] = (Qfloat)(s*alpha + beta); } -} - - -void CvSVMKernel::calc_linear( int vcount, int var_count, const float** vecs, - const float* another, Qfloat* results ) -{ - calc_non_rbf_base( vcount, var_count, vecs, another, results, 1, 0 ); -} - - -void CvSVMKernel::calc_poly( int vcount, int var_count, const float** vecs, - const float* another, Qfloat* results ) -{ - CvMat R = cvMat( 1, vcount, QFLOAT_TYPE, results ); - calc_non_rbf_base( vcount, var_count, vecs, another, results, params->gamma, params->coef0 ); - if( vcount > 0 ) - cvPow( &R, &R, params->degree ); -} - -void CvSVMKernel::calc_sigmoid( int vcount, int var_count, const float** vecs, - const float* another, Qfloat* results ) -{ - int j; - calc_non_rbf_base( vcount, var_count, vecs, another, results, - -2*params->gamma, -2*params->coef0 ); - // TODO: speedup this - for( j = 0; j < vcount; j++ ) + SVMKernelImpl( const SVM::Params& _params ) { - Qfloat t = results[j]; - double e = exp(-fabs(t)); - if( t > 0 ) - results[j] = (Qfloat)((1. - e)/(1. + e)); - else - results[j] = (Qfloat)((e - 1.)/(e + 1.)); + params = _params; } -} - - -void CvSVMKernel::calc_rbf( int vcount, int var_count, const float** vecs, - const float* another, Qfloat* results ) -{ - CvMat R = cvMat( 1, vcount, QFLOAT_TYPE, results ); - double gamma = -params->gamma; - int j, k; - for( j = 0; j < vcount; j++ ) + virtual ~SVMKernelImpl() { - const float* sample = vecs[j]; - double s = 0; - - for( k = 0; k <= var_count - 4; k += 4 ) - { - double t0 = sample[k] - another[k]; - double t1 = sample[k+1] - another[k+1]; - - s += t0*t0 + t1*t1; - - t0 = sample[k+2] - another[k+2]; - t1 = sample[k+3] - another[k+3]; + } - s += t0*t0 + t1*t1; - } + int getType() const + { + return params.kernelType; + } - for( ; k < var_count; k++ ) + void calc_non_rbf_base( int vcount, int var_count, const float* vecs, + const float* another, Qfloat* results, + double alpha, double beta ) + { + int j, k; + for( j = 0; j < vcount; j++ ) { - double t0 = sample[k] - another[k]; - s += t0*t0; + const float* sample = &vecs[j*var_count]; + double s = 0; + for( k = 0; k <= var_count - 4; k += 4 ) + s += sample[k]*another[k] + sample[k+1]*another[k+1] + + sample[k+2]*another[k+2] + sample[k+3]*another[k+3]; + for( ; k < var_count; k++ ) + s += sample[k]*another[k]; + results[j] = (Qfloat)(s*alpha + beta); } - results[j] = (Qfloat)(s*gamma); } - if( vcount > 0 ) - cvExp( &R, &R ); -} - -/// Histogram intersection kernel -void CvSVMKernel::calc_intersec( int vcount, int var_count, const float** vecs, - const float* another, Qfloat* results ) -{ - int j, k; - for( j = 0; j < vcount; j++ ) + void calc_linear( int vcount, int var_count, const float* vecs, + const float* another, Qfloat* results ) { - const float* sample = vecs[j]; - double s = 0; - for( k = 0; k <= var_count - 4; k += 4 ) - s += std::min(sample[k],another[k]) + std::min(sample[k+1],another[k+1]) + - std::min(sample[k+2],another[k+2]) + std::min(sample[k+3],another[k+3]); - for( ; k < var_count; k++ ) - s += std::min(sample[k],another[k]); - results[j] = (Qfloat)(s); + calc_non_rbf_base( vcount, var_count, vecs, another, results, 1, 0 ); } -} -/// Exponential chi2 kernel -void CvSVMKernel::calc_chi2( int vcount, int var_count, const float** vecs, - const float* another, Qfloat* results ) -{ - CvMat R = cvMat( 1, vcount, QFLOAT_TYPE, results ); - double gamma = -params->gamma; - int j, k; - for( j = 0; j < vcount; j++ ) + void calc_poly( int vcount, int var_count, const float* vecs, + const float* another, Qfloat* results ) { - const float* sample = vecs[j]; - double chi2 = 0; - for(k = 0 ; k < var_count; k++ ) + Mat R( 1, vcount, QFLOAT_TYPE, results ); + calc_non_rbf_base( vcount, var_count, vecs, another, results, params.gamma, params.coef0 ); + if( vcount > 0 ) + pow( R, params.degree, R ); + } + + void calc_sigmoid( int vcount, int var_count, const float* vecs, + const float* another, Qfloat* results ) { - double d = sample[k]-another[k]; - double devisor = sample[k]+another[k]; - /// if devisor == 0, the Chi2 distance would be zero, but calculation would rise an error because of deviding by zero - if (devisor != 0) + int j; + calc_non_rbf_base( vcount, var_count, vecs, another, results, + -2*params.gamma, -2*params.coef0 ); + // TODO: speedup this + for( j = 0; j < vcount; j++ ) { - chi2 += d*d/devisor; + Qfloat t = results[j]; + Qfloat e = std::exp(-std::abs(t)); + if( t > 0 ) + results[j] = (Qfloat)((1. - e)/(1. + e)); + else + results[j] = (Qfloat)((e - 1.)/(e + 1.)); } } - results[j] = (Qfloat) (gamma*chi2); - } - if( vcount > 0 ) - cvExp( &R, &R ); -} - -void CvSVMKernel::calc( int vcount, int var_count, const float** vecs, - const float* another, Qfloat* results ) -{ - const Qfloat max_val = (Qfloat)(FLT_MAX*1e-3); - int j; - (this->*calc_func)( vcount, var_count, vecs, another, results ); - for( j = 0; j < vcount; j++ ) + void calc_rbf( int vcount, int var_count, const float* vecs, + const float* another, Qfloat* results ) { - if( results[j] > max_val ) - results[j] = max_val; - } -} - - -// Generalized SMO+SVMlight algorithm -// Solves: -// -// min [0.5(\alpha^T Q \alpha) + b^T \alpha] -// -// y^T \alpha = \delta -// y_i = +1 or -1 -// 0 <= alpha_i <= Cp for y_i = 1 -// 0 <= alpha_i <= Cn for y_i = -1 -// -// Given: -// -// Q, b, y, Cp, Cn, and an initial feasible point \alpha -// l is the size of vectors and matrices -// eps is the stopping criterion -// -// solution will be put in \alpha, objective value will be put in obj -// - -void CvSVMSolver::clear() -{ - G = 0; - alpha = 0; - y = 0; - b = 0; - buf[0] = buf[1] = 0; - cvReleaseMemStorage( &storage ); - kernel = 0; - select_working_set_func = 0; - calc_rho_func = 0; - - rows = 0; - samples = 0; - get_row_func = 0; -} - - -CvSVMSolver::CvSVMSolver() -{ - storage = 0; - clear(); -} - - -CvSVMSolver::~CvSVMSolver() -{ - clear(); -} + double gamma = -params.gamma; + int j, k; + for( j = 0; j < vcount; j++ ) + { + const float* sample = &vecs[j*var_count]; + double s = 0; -CvSVMSolver::CvSVMSolver( int _sample_count, int _var_count, const float** _samples, schar* _y, - int _alpha_count, double* _alpha, double _Cp, double _Cn, - CvMemStorage* _storage, CvSVMKernel* _kernel, GetRow _get_row, - SelectWorkingSet _select_working_set, CalcRho _calc_rho ) -{ - storage = 0; - create( _sample_count, _var_count, _samples, _y, _alpha_count, _alpha, _Cp, _Cn, - _storage, _kernel, _get_row, _select_working_set, _calc_rho ); -} + for( k = 0; k <= var_count - 4; k += 4 ) + { + double t0 = sample[k] - another[k]; + double t1 = sample[k+1] - another[k+1]; + s += t0*t0 + t1*t1; -bool CvSVMSolver::create( int _sample_count, int _var_count, const float** _samples, schar* _y, - int _alpha_count, double* _alpha, double _Cp, double _Cn, - CvMemStorage* _storage, CvSVMKernel* _kernel, GetRow _get_row, - SelectWorkingSet _select_working_set, CalcRho _calc_rho ) -{ - bool ok = false; - int i, svm_type; - - CV_FUNCNAME( "CvSVMSolver::create" ); - - __BEGIN__; - - int rows_hdr_size; - - clear(); - - sample_count = _sample_count; - var_count = _var_count; - samples = _samples; - y = _y; - alpha_count = _alpha_count; - alpha = _alpha; - kernel = _kernel; - - C[0] = _Cn; - C[1] = _Cp; - eps = kernel->params->term_crit.epsilon; - max_iter = kernel->params->term_crit.max_iter; - storage = cvCreateChildMemStorage( _storage ); - - b = (double*)cvMemStorageAlloc( storage, alpha_count*sizeof(b[0])); - alpha_status = (schar*)cvMemStorageAlloc( storage, alpha_count*sizeof(alpha_status[0])); - G = (double*)cvMemStorageAlloc( storage, alpha_count*sizeof(G[0])); - for( i = 0; i < 2; i++ ) - buf[i] = (Qfloat*)cvMemStorageAlloc( storage, sample_count*2*sizeof(buf[i][0]) ); - svm_type = kernel->params->svm_type; - - select_working_set_func = _select_working_set; - if( !select_working_set_func ) - select_working_set_func = svm_type == CvSVM::NU_SVC || svm_type == CvSVM::NU_SVR ? - &CvSVMSolver::select_working_set_nu_svm : &CvSVMSolver::select_working_set; - - calc_rho_func = _calc_rho; - if( !calc_rho_func ) - calc_rho_func = svm_type == CvSVM::NU_SVC || svm_type == CvSVM::NU_SVR ? - &CvSVMSolver::calc_rho_nu_svm : &CvSVMSolver::calc_rho; - - get_row_func = _get_row; - if( !get_row_func ) - get_row_func = params->svm_type == CvSVM::EPS_SVR || - params->svm_type == CvSVM::NU_SVR ? &CvSVMSolver::get_row_svr : - params->svm_type == CvSVM::C_SVC || - params->svm_type == CvSVM::NU_SVC ? &CvSVMSolver::get_row_svc : - &CvSVMSolver::get_row_one_class; - - cache_line_size = sample_count*sizeof(Qfloat); - // cache size = max(num_of_samples^2*sizeof(Qfloat)*0.25, 64Kb) - // (assuming that for large training sets ~25% of Q matrix is used) - cache_size = MAX( cache_line_size*sample_count/4, CV_SVM_MIN_CACHE_SIZE ); - - // the size of Q matrix row headers - rows_hdr_size = sample_count*sizeof(rows[0]); - if( rows_hdr_size > storage->block_size ) - CV_ERROR( CV_StsOutOfRange, "Too small storage block size" ); - - lru_list.prev = lru_list.next = &lru_list; - rows = (CvSVMKernelRow*)cvMemStorageAlloc( storage, rows_hdr_size ); - memset( rows, 0, rows_hdr_size ); - - ok = true; - - __END__; - - return ok; -} + t0 = sample[k+2] - another[k+2]; + t1 = sample[k+3] - another[k+3]; + s += t0*t0 + t1*t1; + } -float* CvSVMSolver::get_row_base( int i, bool* _existed ) -{ - int i1 = i < sample_count ? i : i - sample_count; - CvSVMKernelRow* row = rows + i1; - bool existed = row->data != 0; - Qfloat* data; + for( ; k < var_count; k++ ) + { + double t0 = sample[k] - another[k]; + s += t0*t0; + } + results[j] = (Qfloat)(s*gamma); + } - if( existed || cache_size <= 0 ) - { - CvSVMKernelRow* del_row = existed ? row : lru_list.prev; - data = del_row->data; - assert( data != 0 ); - - // delete row from the LRU list - del_row->data = 0; - del_row->prev->next = del_row->next; - del_row->next->prev = del_row->prev; + if( vcount > 0 ) + { + Mat R( 1, vcount, QFLOAT_TYPE, results ); + exp( R, R ); + } } - else + + /// Histogram intersection kernel + void calc_intersec( int vcount, int var_count, const float* vecs, + const float* another, Qfloat* results ) { - data = (Qfloat*)cvMemStorageAlloc( storage, cache_line_size ); - cache_size -= cache_line_size; + int j, k; + for( j = 0; j < vcount; j++ ) + { + const float* sample = &vecs[j*var_count]; + double s = 0; + for( k = 0; k <= var_count - 4; k += 4 ) + s += std::min(sample[k],another[k]) + std::min(sample[k+1],another[k+1]) + + std::min(sample[k+2],another[k+2]) + std::min(sample[k+3],another[k+3]); + for( ; k < var_count; k++ ) + s += std::min(sample[k],another[k]); + results[j] = (Qfloat)(s); + } } - // insert row into the LRU list - row->data = data; - row->prev = &lru_list; - row->next = lru_list.next; - row->prev->next = row->next->prev = row; - - if( !existed ) + /// Exponential chi2 kernel + void calc_chi2( int vcount, int var_count, const float* vecs, + const float* another, Qfloat* results ) { - kernel->calc( sample_count, var_count, samples, samples[i1], row->data ); + Mat R( 1, vcount, QFLOAT_TYPE, results ); + double gamma = -params.gamma; + int j, k; + for( j = 0; j < vcount; j++ ) + { + const float* sample = &vecs[j*var_count]; + double chi2 = 0; + for(k = 0 ; k < var_count; k++ ) + { + double d = sample[k]-another[k]; + double devisor = sample[k]+another[k]; + /// if devisor == 0, the Chi2 distance would be zero, + // but calculation would rise an error because of deviding by zero + if (devisor != 0) + { + chi2 += d*d/devisor; + } + } + results[j] = (Qfloat) (gamma*chi2); + } + if( vcount > 0 ) + exp( R, R ); } - - if( _existed ) - *_existed = existed; - - return row->data; -} - - -float* CvSVMSolver::get_row_svc( int i, float* row, float*, bool existed ) -{ - if( !existed ) + + void calc( int vcount, int var_count, const float* vecs, + const float* another, Qfloat* results ) { - const schar* _y = y; - int j, len = sample_count; - assert( _y && i < sample_count ); - - if( _y[i] > 0 ) + switch( params.kernelType ) { - for( j = 0; j < len; j++ ) - row[j] = _y[j]*row[j]; + case SVM::LINEAR: + calc_linear(vcount, var_count, vecs, another, results); + break; + case SVM::RBF: + calc_rbf(vcount, var_count, vecs, another, results); + break; + case SVM::POLY: + calc_poly(vcount, var_count, vecs, another, results); + break; + case SVM::SIGMOID: + calc_sigmoid(vcount, var_count, vecs, another, results); + break; + case SVM::CHI2: + calc_chi2(vcount, var_count, vecs, another, results); + break; + case SVM::INTER: + calc_intersec(vcount, var_count, vecs, another, results); + break; + default: + CV_Error(CV_StsBadArg, "Unknown kernel type"); } - else + const Qfloat max_val = (Qfloat)(FLT_MAX*1e-3); + for( int j = 0; j < vcount; j++ ) { - for( j = 0; j < len; j++ ) - row[j] = -_y[j]*row[j]; + if( results[j] > max_val ) + results[j] = max_val; } } - return row; -} - - -float* CvSVMSolver::get_row_one_class( int, float* row, float*, bool ) -{ - return row; -} - -float* CvSVMSolver::get_row_svr( int i, float* row, float* dst, bool ) -{ - int j, len = sample_count; - Qfloat* dst_pos = dst; - Qfloat* dst_neg = dst + len; - if( i >= len ) - { - Qfloat* temp; - CV_SWAP( dst_pos, dst_neg, temp ); - } + SVM::Params params; +}; - for( j = 0; j < len; j++ ) - { - Qfloat t = row[j]; - dst_pos[j] = t; - dst_neg[j] = -t; - } - return dst; -} +///////////////////////////////////////////////////////////////////////// -float* CvSVMSolver::get_row( int i, float* dst ) +static void sortSamplesByClasses( const Mat& _samples, const Mat& _responses, + vector& sidx_all, vector& class_ranges ) { - bool existed = false; - float* row = get_row_base( i, &existed ); - return (this->*get_row_func)( i, row, dst, existed ); -} - - -#undef is_upper_bound -#define is_upper_bound(i) (alpha_status[i] > 0) + int i, nsamples = _samples.rows; + CV_Assert( _responses.isContinuous() && _responses.checkVector(1, CV_32S) == nsamples ); -#undef is_lower_bound -#define is_lower_bound(i) (alpha_status[i] < 0) + setRangeVector(sidx_all, nsamples); -#undef is_free -#define is_free(i) (alpha_status[i] == 0) + const int* rptr = _responses.ptr(); + std::sort(sidx_all.begin(), sidx_all.end(), cmp_lt_idx(rptr)); + class_ranges.clear(); + class_ranges.push_back(0); -#undef get_C -#define get_C(i) (C[y[i]>0]) - -#undef update_alpha_status -#define update_alpha_status(i) \ - alpha_status[i] = (schar)(alpha[i] >= get_C(i) ? 1 : alpha[i] <= 0 ? -1 : 0) - -#undef reconstruct_gradient -#define reconstruct_gradient() /* empty for now */ + for( i = 0; i < nsamples; i++ ) + { + if( i == nsamples-1 || rptr[sidx_all[i]] != rptr[sidx_all[i+1]] ) + class_ranges.push_back(i+1); + } +} + +//////////////////////// SVM implementation ////////////////////////////// +SVM::~SVM() {} -bool CvSVMSolver::solve_generic( CvSVMSolutionInfo& si ) +class SVMImpl : public SVM { - int iter = 0; - int i, j, k; - - // 1. initialize gradient and alpha status - for( i = 0; i < alpha_count; i++ ) +public: + struct DecisionFunc { - update_alpha_status(i); - G[i] = b[i]; - if( fabs(G[i]) > 1e200 ) - return false; - } + DecisionFunc(double _rho, int _ofs) : rho(_rho), ofs(_ofs) {} + DecisionFunc() : rho(0.), ofs(0) {} + double rho; + int ofs; + }; - for( i = 0; i < alpha_count; i++ ) + virtual ParamGrid getDefaultGrid( int param_id ) const { - if( !is_lower_bound(i) ) + ParamGrid grid; + if( param_id == SVM::C ) { - const Qfloat *Q_i = get_row( i, buf[0] ); - double alpha_i = alpha[i]; - - for( j = 0; j < alpha_count; j++ ) - G[j] += alpha_i*Q_i[j]; + grid.minVal = 0.1; + grid.maxVal = 500; + grid.logStep = 5; // total iterations = 5 } - } - - // 2. optimization loop - for(;;) - { - const Qfloat *Q_i, *Q_j; - double C_i, C_j; - double old_alpha_i, old_alpha_j, alpha_i, alpha_j; - double delta_alpha_i, delta_alpha_j; - -#ifdef _DEBUG - for( i = 0; i < alpha_count; i++ ) + else if( param_id == SVM::GAMMA ) { - if( fabs(G[i]) > 1e+300 ) - return false; - - if( fabs(alpha[i]) > 1e16 ) - return false; + grid.minVal = 1e-5; + grid.maxVal = 0.6; + grid.logStep = 15; // total iterations = 4 + } + else if( param_id == SVM::P ) + { + grid.minVal = 0.01; + grid.maxVal = 100; + grid.logStep = 7; // total iterations = 4 + } + else if( param_id == SVM::NU ) + { + grid.minVal = 0.01; + grid.maxVal = 0.2; + grid.logStep = 3; // total iterations = 3 + } + else if( param_id == SVM::COEF ) + { + grid.minVal = 0.1; + grid.maxVal = 300; + grid.logStep = 14; // total iterations = 3 + } + else if( param_id == SVM::DEGREE ) + { + grid.minVal = 0.01; + grid.maxVal = 4; + grid.logStep = 7; // total iterations = 3 + } + else + cvError( CV_StsBadArg, "SVM::getDefaultGrid", "Invalid type of parameter " + "(use one of SVM::C, SVM::GAMMA et al.)", __FILE__, __LINE__ ); + return grid; + } + + + // Generalized SMO+SVMlight algorithm + // Solves: + // + // min [0.5(\alpha^T Q \alpha) + b^T \alpha] + // + // y^T \alpha = \delta + // y_i = +1 or -1 + // 0 <= alpha_i <= Cp for y_i = 1 + // 0 <= alpha_i <= Cn for y_i = -1 + // + // Given: + // + // Q, b, y, Cp, Cn, and an initial feasible point \alpha + // l is the size of vectors and matrices + // eps is the stopping criterion + // + // solution will be put in \alpha, objective value will be put in obj + // + class Solver + { + public: + enum { MIN_CACHE_SIZE = (40 << 20) /* 40Mb */, MAX_CACHE_SIZE = (500 << 20) /* 500Mb */ }; + + typedef bool (Solver::*SelectWorkingSet)( int& i, int& j ); + typedef Qfloat* (Solver::*GetRow)( int i, Qfloat* row, Qfloat* dst, bool existed ); + typedef void (Solver::*CalcRho)( double& rho, double& r ); + + struct KernelRow + { + KernelRow() { idx = -1; prev = next = 0; } + KernelRow(int _idx, int _prev, int _next) : idx(_idx), prev(_prev), next(_next) {} + int idx; + int prev; + int next; + }; + + struct SolutionInfo + { + SolutionInfo() { obj = rho = upper_bound_p = upper_bound_n = r = 0; } + double obj; + double rho; + double upper_bound_p; + double upper_bound_n; + double r; // for Solver_NU + }; + + void clear() + { + alpha_vec = 0; + select_working_set_func = 0; + calc_rho_func = 0; + get_row_func = 0; + lru_cache.clear(); } -#endif - - if( (this->*select_working_set_func)( i, j ) != 0 || iter++ >= max_iter ) - break; - - Q_i = get_row( i, buf[0] ); - Q_j = get_row( j, buf[1] ); - - C_i = get_C(i); - C_j = get_C(j); - - alpha_i = old_alpha_i = alpha[i]; - alpha_j = old_alpha_j = alpha[j]; - if( y[i] != y[j] ) + Solver( const Mat& _samples, const vector& _y, + vector& _alpha, const vector& _b, + double _Cp, double _Cn, + const Ptr& _kernel, GetRow _get_row, + SelectWorkingSet _select_working_set, CalcRho _calc_rho, + TermCriteria _termCrit ) { - double denom = Q_i[i]+Q_j[j]+2*Q_i[j]; - double delta = (-G[i]-G[j])/MAX(fabs(denom),FLT_EPSILON); - double diff = alpha_i - alpha_j; - alpha_i += delta; - alpha_j += delta; + clear(); + + samples = _samples; + sample_count = samples.rows; + var_count = samples.cols; + + y_vec = _y; + alpha_vec = &_alpha; + alpha_count = (int)alpha_vec->size(); + b_vec = _b; + kernel = _kernel; + + C[0] = _Cn; + C[1] = _Cp; + eps = _termCrit.epsilon; + max_iter = _termCrit.maxCount; + + G_vec.resize(alpha_count); + alpha_status_vec.resize(alpha_count); + buf[0].resize(sample_count*2); + buf[1].resize(sample_count*2); + + select_working_set_func = _select_working_set; + CV_Assert(select_working_set_func != 0); + + calc_rho_func = _calc_rho; + CV_Assert(calc_rho_func != 0); + + get_row_func = _get_row; + CV_Assert(get_row_func != 0); + + // assume that for large training sets ~25% of Q matrix is used + int64 csize = (int64)sample_count*sample_count/4; + csize = std::max(csize, (int64)(MIN_CACHE_SIZE/sizeof(Qfloat)) ); + csize = std::min(csize, (int64)(MAX_CACHE_SIZE/sizeof(Qfloat)) ); + max_cache_size = (int)((csize + sample_count-1)/sample_count); + max_cache_size = std::min(std::max(max_cache_size, 1), sample_count); + cache_size = 0; + + lru_cache.clear(); + lru_cache.resize(sample_count+1, KernelRow(-1, 0, 0)); + lru_first = lru_last = 0; + lru_cache_data.create(max_cache_size, sample_count, QFLOAT_TYPE); + } - if( diff > 0 && alpha_j < 0 ) + Qfloat* get_row_base( int i, bool* _existed ) + { + int i1 = i < sample_count ? i : i - sample_count; + KernelRow& kr = lru_cache[i1+1]; + if( _existed ) + *_existed = kr.idx >= 0; + if( kr.idx < 0 ) { - alpha_j = 0; - alpha_i = diff; + if( cache_size < max_cache_size ) + { + kr.idx = cache_size; + cache_size++; + } + else + { + KernelRow& last = lru_cache[lru_last]; + kr.idx = last.idx; + last.idx = -1; + lru_cache[last.prev].next = 0; + lru_last = last.prev; + } + kernel->calc( sample_count, var_count, samples.ptr(), + samples.ptr(i1), lru_cache_data.ptr(kr.idx) ); } - else if( diff <= 0 && alpha_i < 0 ) + else { - alpha_i = 0; - alpha_j = -diff; + if( kr.next ) + lru_cache[kr.next].prev = kr.prev; + else + lru_last = kr.prev; + if( kr.prev ) + lru_cache[kr.prev].next = kr.next; + else + lru_first = kr.next; } + kr.next = lru_first; + kr.prev = 0; + lru_first = i1+1; - if( diff > C_i - C_j && alpha_i > C_i ) - { - alpha_i = C_i; - alpha_j = C_i - diff; - } - else if( diff <= C_i - C_j && alpha_j > C_j ) - { - alpha_j = C_j; - alpha_i = C_j + diff; - } + return lru_cache_data.ptr(kr.idx); } - else - { - double denom = Q_i[i]+Q_j[j]-2*Q_i[j]; - double delta = (G[i]-G[j])/MAX(fabs(denom),FLT_EPSILON); - double sum = alpha_i + alpha_j; - alpha_i -= delta; - alpha_j += delta; - if( sum > C_i && alpha_i > C_i ) - { - alpha_i = C_i; - alpha_j = sum - C_i; - } - else if( sum <= C_i && alpha_j < 0) + Qfloat* get_row_svc( int i, Qfloat* row, Qfloat*, bool existed ) + { + if( !existed ) { - alpha_j = 0; - alpha_i = sum; - } + const schar* _y = &y_vec[0]; + int j, len = sample_count; - if( sum > C_j && alpha_j > C_j ) - { - alpha_j = C_j; - alpha_i = sum - C_j; - } - else if( sum <= C_j && alpha_i < 0 ) - { - alpha_i = 0; - alpha_j = sum; + if( _y[i] > 0 ) + { + for( j = 0; j < len; j++ ) + row[j] = _y[j]*row[j]; + } + else + { + for( j = 0; j < len; j++ ) + row[j] = -_y[j]*row[j]; + } } + return row; } - // update alpha - alpha[i] = alpha_i; - alpha[j] = alpha_j; - update_alpha_status(i); - update_alpha_status(j); - - // update G - delta_alpha_i = alpha_i - old_alpha_i; - delta_alpha_j = alpha_j - old_alpha_j; + Qfloat* get_row_one_class( int, Qfloat* row, Qfloat*, bool ) + { + return row; + } - for( k = 0; k < alpha_count; k++ ) - G[k] += Q_i[k]*delta_alpha_i + Q_j[k]*delta_alpha_j; - } + Qfloat* get_row_svr( int i, Qfloat* row, Qfloat* dst, bool ) + { + int j, len = sample_count; + Qfloat* dst_pos = dst; + Qfloat* dst_neg = dst + len; + if( i >= len ) + std::swap(dst_pos, dst_neg); - // calculate rho - (this->*calc_rho_func)( si.rho, si.r ); + for( j = 0; j < len; j++ ) + { + Qfloat t = row[j]; + dst_pos[j] = t; + dst_neg[j] = -t; + } + return dst; + } - // calculate objective value - for( i = 0, si.obj = 0; i < alpha_count; i++ ) - si.obj += alpha[i] * (G[i] + b[i]); + Qfloat* get_row( int i, float* dst ) + { + bool existed = false; + float* row = get_row_base( i, &existed ); + return (this->*get_row_func)( i, row, dst, existed ); + } - si.obj *= 0.5; + #undef is_upper_bound + #define is_upper_bound(i) (alpha_status[i] > 0) - si.upper_bound_p = C[1]; - si.upper_bound_n = C[0]; + #undef is_lower_bound + #define is_lower_bound(i) (alpha_status[i] < 0) - return true; -} + #undef is_free + #define is_free(i) (alpha_status[i] == 0) + #undef get_C + #define get_C(i) (C[y[i]>0]) -// return 1 if already optimal, return 0 otherwise -bool -CvSVMSolver::select_working_set( int& out_i, int& out_j ) -{ - // return i,j which maximize -grad(f)^T d , under constraint - // if alpha_i == C, d != +1 - // if alpha_i == 0, d != -1 - double Gmax1 = -DBL_MAX; // max { -grad(f)_i * d | y_i*d = +1 } - int Gmax1_idx = -1; + #undef update_alpha_status + #define update_alpha_status(i) \ + alpha_status[i] = (schar)(alpha[i] >= get_C(i) ? 1 : alpha[i] <= 0 ? -1 : 0) - double Gmax2 = -DBL_MAX; // max { -grad(f)_i * d | y_i*d = -1 } - int Gmax2_idx = -1; + #undef reconstruct_gradient + #define reconstruct_gradient() /* empty for now */ - int i; + bool solve_generic( SolutionInfo& si ) + { + const schar* y = &y_vec[0]; + double* alpha = &alpha_vec->at(0); + schar* alpha_status = &alpha_status_vec[0]; + double* G = &G_vec[0]; + double* b = &b_vec[0]; - for( i = 0; i < alpha_count; i++ ) - { - double t; + int iter = 0; + int i, j, k; - if( y[i] > 0 ) // y = +1 - { - if( !is_upper_bound(i) && (t = -G[i]) > Gmax1 ) // d = +1 - { - Gmax1 = t; - Gmax1_idx = i; - } - if( !is_lower_bound(i) && (t = G[i]) > Gmax2 ) // d = -1 + // 1. initialize gradient and alpha status + for( i = 0; i < alpha_count; i++ ) { - Gmax2 = t; - Gmax2_idx = i; + update_alpha_status(i); + G[i] = b[i]; + if( fabs(G[i]) > 1e200 ) + return false; } - } - else // y = -1 - { - if( !is_upper_bound(i) && (t = -G[i]) > Gmax2 ) // d = +1 + + for( i = 0; i < alpha_count; i++ ) { - Gmax2 = t; - Gmax2_idx = i; + if( !is_lower_bound(i) ) + { + const Qfloat *Q_i = get_row( i, &buf[0][0] ); + double alpha_i = alpha[i]; + + for( j = 0; j < alpha_count; j++ ) + G[j] += alpha_i*Q_i[j]; + } } - if( !is_lower_bound(i) && (t = G[i]) > Gmax1 ) // d = -1 + + // 2. optimization loop + for(;;) { - Gmax1 = t; - Gmax1_idx = i; - } - } - } + const Qfloat *Q_i, *Q_j; + double C_i, C_j; + double old_alpha_i, old_alpha_j, alpha_i, alpha_j; + double delta_alpha_i, delta_alpha_j; - out_i = Gmax1_idx; - out_j = Gmax2_idx; - - return Gmax1 + Gmax2 < eps; -} + #ifdef _DEBUG + for( i = 0; i < alpha_count; i++ ) + { + if( fabs(G[i]) > 1e+300 ) + return false; + if( fabs(alpha[i]) > 1e16 ) + return false; + } + #endif -void -CvSVMSolver::calc_rho( double& rho, double& r ) -{ - int i, nr_free = 0; - double ub = DBL_MAX, lb = -DBL_MAX, sum_free = 0; + if( (this->*select_working_set_func)( i, j ) != 0 || iter++ >= max_iter ) + break; - for( i = 0; i < alpha_count; i++ ) - { - double yG = y[i]*G[i]; + Q_i = get_row( i, &buf[0][0] ); + Q_j = get_row( j, &buf[1][0] ); - if( is_lower_bound(i) ) - { - if( y[i] > 0 ) - ub = MIN(ub,yG); - else - lb = MAX(lb,yG); - } - else if( is_upper_bound(i) ) - { - if( y[i] < 0) - ub = MIN(ub,yG); - else - lb = MAX(lb,yG); - } - else - { - ++nr_free; - sum_free += yG; - } - } + C_i = get_C(i); + C_j = get_C(j); - rho = nr_free > 0 ? sum_free/nr_free : (ub + lb)*0.5; - r = 0; -} + alpha_i = old_alpha_i = alpha[i]; + alpha_j = old_alpha_j = alpha[j]; + if( y[i] != y[j] ) + { + double denom = Q_i[i]+Q_j[j]+2*Q_i[j]; + double delta = (-G[i]-G[j])/MAX(fabs(denom),FLT_EPSILON); + double diff = alpha_i - alpha_j; + alpha_i += delta; + alpha_j += delta; -bool -CvSVMSolver::select_working_set_nu_svm( int& out_i, int& out_j ) -{ - // return i,j which maximize -grad(f)^T d , under constraint - // if alpha_i == C, d != +1 - // if alpha_i == 0, d != -1 - double Gmax1 = -DBL_MAX; // max { -grad(f)_i * d | y_i = +1, d = +1 } - int Gmax1_idx = -1; + if( diff > 0 && alpha_j < 0 ) + { + alpha_j = 0; + alpha_i = diff; + } + else if( diff <= 0 && alpha_i < 0 ) + { + alpha_i = 0; + alpha_j = -diff; + } - double Gmax2 = -DBL_MAX; // max { -grad(f)_i * d | y_i = +1, d = -1 } - int Gmax2_idx = -1; + if( diff > C_i - C_j && alpha_i > C_i ) + { + alpha_i = C_i; + alpha_j = C_i - diff; + } + else if( diff <= C_i - C_j && alpha_j > C_j ) + { + alpha_j = C_j; + alpha_i = C_j + diff; + } + } + else + { + double denom = Q_i[i]+Q_j[j]-2*Q_i[j]; + double delta = (G[i]-G[j])/MAX(fabs(denom),FLT_EPSILON); + double sum = alpha_i + alpha_j; + alpha_i -= delta; + alpha_j += delta; - double Gmax3 = -DBL_MAX; // max { -grad(f)_i * d | y_i = -1, d = +1 } - int Gmax3_idx = -1; + if( sum > C_i && alpha_i > C_i ) + { + alpha_i = C_i; + alpha_j = sum - C_i; + } + else if( sum <= C_i && alpha_j < 0) + { + alpha_j = 0; + alpha_i = sum; + } - double Gmax4 = -DBL_MAX; // max { -grad(f)_i * d | y_i = -1, d = -1 } - int Gmax4_idx = -1; + if( sum > C_j && alpha_j > C_j ) + { + alpha_j = C_j; + alpha_i = sum - C_j; + } + else if( sum <= C_j && alpha_i < 0 ) + { + alpha_i = 0; + alpha_j = sum; + } + } - int i; + // update alpha + alpha[i] = alpha_i; + alpha[j] = alpha_j; + update_alpha_status(i); + update_alpha_status(j); - for( i = 0; i < alpha_count; i++ ) - { - double t; + // update G + delta_alpha_i = alpha_i - old_alpha_i; + delta_alpha_j = alpha_j - old_alpha_j; - if( y[i] > 0 ) // y == +1 - { - if( !is_upper_bound(i) && (t = -G[i]) > Gmax1 ) // d = +1 - { - Gmax1 = t; - Gmax1_idx = i; - } - if( !is_lower_bound(i) && (t = G[i]) > Gmax2 ) // d = -1 - { - Gmax2 = t; - Gmax2_idx = i; - } - } - else // y == -1 - { - if( !is_upper_bound(i) && (t = -G[i]) > Gmax3 ) // d = +1 - { - Gmax3 = t; - Gmax3_idx = i; - } - if( !is_lower_bound(i) && (t = G[i]) > Gmax4 ) // d = -1 - { - Gmax4 = t; - Gmax4_idx = i; + for( k = 0; k < alpha_count; k++ ) + G[k] += Q_i[k]*delta_alpha_i + Q_j[k]*delta_alpha_j; } - } - } - - if( MAX(Gmax1 + Gmax2, Gmax3 + Gmax4) < eps ) - return 1; - if( Gmax1 + Gmax2 > Gmax3 + Gmax4 ) - { - out_i = Gmax1_idx; - out_j = Gmax2_idx; - } - else - { - out_i = Gmax3_idx; - out_j = Gmax4_idx; - } - return 0; -} + // calculate rho + (this->*calc_rho_func)( si.rho, si.r ); + // calculate objective value + for( i = 0, si.obj = 0; i < alpha_count; i++ ) + si.obj += alpha[i] * (G[i] + b[i]); -void -CvSVMSolver::calc_rho_nu_svm( double& rho, double& r ) -{ - int nr_free1 = 0, nr_free2 = 0; - double ub1 = DBL_MAX, ub2 = DBL_MAX; - double lb1 = -DBL_MAX, lb2 = -DBL_MAX; - double sum_free1 = 0, sum_free2 = 0; - double r1, r2; + si.obj *= 0.5; - int i; + si.upper_bound_p = C[1]; + si.upper_bound_n = C[0]; - for( i = 0; i < alpha_count; i++ ) - { - double G_i = G[i]; - if( y[i] > 0 ) - { - if( is_lower_bound(i) ) - ub1 = MIN( ub1, G_i ); - else if( is_upper_bound(i) ) - lb1 = MAX( lb1, G_i ); - else - { - ++nr_free1; - sum_free1 += G_i; - } - } - else - { - if( is_lower_bound(i) ) - ub2 = MIN( ub2, G_i ); - else if( is_upper_bound(i) ) - lb2 = MAX( lb2, G_i ); - else - { - ++nr_free2; - sum_free2 += G_i; - } + return true; } - } - - r1 = nr_free1 > 0 ? sum_free1/nr_free1 : (ub1 + lb1)*0.5; - r2 = nr_free2 > 0 ? sum_free2/nr_free2 : (ub2 + lb2)*0.5; - - rho = (r1 - r2)*0.5; - r = (r1 + r2)*0.5; -} - -/* -///////////////////////// construct and solve various formulations /////////////////////// -*/ - -bool CvSVMSolver::solve_c_svc( int _sample_count, int _var_count, const float** _samples, schar* _y, - double _Cp, double _Cn, CvMemStorage* _storage, - CvSVMKernel* _kernel, double* _alpha, CvSVMSolutionInfo& _si ) -{ - int i; - - if( !create( _sample_count, _var_count, _samples, _y, _sample_count, - _alpha, _Cp, _Cn, _storage, _kernel, &CvSVMSolver::get_row_svc, - &CvSVMSolver::select_working_set, &CvSVMSolver::calc_rho )) - return false; - - for( i = 0; i < sample_count; i++ ) - { - alpha[i] = 0; - b[i] = -1; - } - - if( !solve_generic( _si )) - return false; - - for( i = 0; i < sample_count; i++ ) - alpha[i] *= y[i]; - - return true; -} - - -bool CvSVMSolver::solve_nu_svc( int _sample_count, int _var_count, const float** _samples, schar* _y, - CvMemStorage* _storage, CvSVMKernel* _kernel, - double* _alpha, CvSVMSolutionInfo& _si ) -{ - int i; - double sum_pos, sum_neg, inv_r; - - if( !create( _sample_count, _var_count, _samples, _y, _sample_count, - _alpha, 1., 1., _storage, _kernel, &CvSVMSolver::get_row_svc, - &CvSVMSolver::select_working_set_nu_svm, &CvSVMSolver::calc_rho_nu_svm )) - return false; - - sum_pos = kernel->params->nu * sample_count * 0.5; - sum_neg = kernel->params->nu * sample_count * 0.5; - - for( i = 0; i < sample_count; i++ ) - { - if( y[i] > 0 ) + // return 1 if already optimal, return 0 otherwise + bool select_working_set( int& out_i, int& out_j ) { - alpha[i] = MIN(1.0, sum_pos); - sum_pos -= alpha[i]; - } - else - { - alpha[i] = MIN(1.0, sum_neg); - sum_neg -= alpha[i]; - } - b[i] = 0; - } + // return i,j which maximize -grad(f)^T d , under constraint + // if alpha_i == C, d != +1 + // if alpha_i == 0, d != -1 + double Gmax1 = -DBL_MAX; // max { -grad(f)_i * d | y_i*d = +1 } + int Gmax1_idx = -1; - if( !solve_generic( _si )) - return false; + double Gmax2 = -DBL_MAX; // max { -grad(f)_i * d | y_i*d = -1 } + int Gmax2_idx = -1; - inv_r = 1./_si.r; + const schar* y = &y_vec[0]; + const schar* alpha_status = &alpha_status_vec[0]; + const double* G = &G_vec[0]; - for( i = 0; i < sample_count; i++ ) - alpha[i] *= y[i]*inv_r; - - _si.rho *= inv_r; - _si.obj *= (inv_r*inv_r); - _si.upper_bound_p = inv_r; - _si.upper_bound_n = inv_r; - - return true; -} - - -bool CvSVMSolver::solve_one_class( int _sample_count, int _var_count, const float** _samples, - CvMemStorage* _storage, CvSVMKernel* _kernel, - double* _alpha, CvSVMSolutionInfo& _si ) -{ - int i, n; - double nu = _kernel->params->nu; - - if( !create( _sample_count, _var_count, _samples, 0, _sample_count, - _alpha, 1., 1., _storage, _kernel, &CvSVMSolver::get_row_one_class, - &CvSVMSolver::select_working_set, &CvSVMSolver::calc_rho )) - return false; - - y = (schar*)cvMemStorageAlloc( storage, sample_count*sizeof(y[0]) ); - n = cvRound( nu*sample_count ); - - for( i = 0; i < sample_count; i++ ) - { - y[i] = 1; - b[i] = 0; - alpha[i] = i < n ? 1 : 0; - } - - if( n < sample_count ) - alpha[n] = nu * sample_count - n; - else - alpha[n-1] = nu * sample_count - (n-1); - - return solve_generic(_si); -} - - -bool CvSVMSolver::solve_eps_svr( int _sample_count, int _var_count, const float** _samples, - const float* _y, CvMemStorage* _storage, - CvSVMKernel* _kernel, double* _alpha, CvSVMSolutionInfo& _si ) -{ - int i; - double p = _kernel->params->p, kernel_param_c = _kernel->params->C; - - if( !create( _sample_count, _var_count, _samples, 0, - _sample_count*2, 0, kernel_param_c, kernel_param_c, _storage, _kernel, &CvSVMSolver::get_row_svr, - &CvSVMSolver::select_working_set, &CvSVMSolver::calc_rho )) - return false; - - y = (schar*)cvMemStorageAlloc( storage, sample_count*2*sizeof(y[0]) ); - alpha = (double*)cvMemStorageAlloc( storage, alpha_count*sizeof(alpha[0]) ); - - for( i = 0; i < sample_count; i++ ) - { - alpha[i] = 0; - b[i] = p - _y[i]; - y[i] = 1; - - alpha[i+sample_count] = 0; - b[i+sample_count] = p + _y[i]; - y[i+sample_count] = -1; - } - - if( !solve_generic( _si )) - return false; - - for( i = 0; i < sample_count; i++ ) - _alpha[i] = alpha[i] - alpha[i+sample_count]; - - return true; -} - - -bool CvSVMSolver::solve_nu_svr( int _sample_count, int _var_count, const float** _samples, - const float* _y, CvMemStorage* _storage, - CvSVMKernel* _kernel, double* _alpha, CvSVMSolutionInfo& _si ) -{ - int i; - double kernel_param_c = _kernel->params->C, sum; - - if( !create( _sample_count, _var_count, _samples, 0, - _sample_count*2, 0, 1., 1., _storage, _kernel, &CvSVMSolver::get_row_svr, - &CvSVMSolver::select_working_set_nu_svm, &CvSVMSolver::calc_rho_nu_svm )) - return false; - - y = (schar*)cvMemStorageAlloc( storage, sample_count*2*sizeof(y[0]) ); - alpha = (double*)cvMemStorageAlloc( storage, alpha_count*sizeof(alpha[0]) ); - sum = kernel_param_c * _kernel->params->nu * sample_count * 0.5; - - for( i = 0; i < sample_count; i++ ) - { - alpha[i] = alpha[i + sample_count] = MIN(sum, kernel_param_c); - sum -= alpha[i]; - - b[i] = -_y[i]; - y[i] = 1; - - b[i + sample_count] = _y[i]; - y[i + sample_count] = -1; - } - - if( !solve_generic( _si )) - return false; - - for( i = 0; i < sample_count; i++ ) - _alpha[i] = alpha[i] - alpha[i+sample_count]; - - return true; -} - - -////////////////////////////////////////////////////////////////////////////////////////// - -CvSVM::CvSVM() -{ - decision_func = 0; - class_labels = 0; - class_weights = 0; - storage = 0; - var_idx = 0; - kernel = 0; - solver = 0; - default_model_name = "my_svm"; - - clear(); -} - - -CvSVM::~CvSVM() -{ - clear(); -} - - -void CvSVM::clear() -{ - cvFree( &decision_func ); - cvReleaseMat( &class_labels ); - cvReleaseMat( &class_weights ); - cvReleaseMemStorage( &storage ); - cvReleaseMat( &var_idx ); - delete kernel; - delete solver; - kernel = 0; - solver = 0; - var_all = 0; - sv = 0; - sv_total = 0; -} - - -CvSVM::CvSVM( const CvMat* _train_data, const CvMat* _responses, - const CvMat* _var_idx, const CvMat* _sample_idx, CvSVMParams _params ) -{ - decision_func = 0; - class_labels = 0; - class_weights = 0; - storage = 0; - var_idx = 0; - kernel = 0; - solver = 0; - default_model_name = "my_svm"; - - train( _train_data, _responses, _var_idx, _sample_idx, _params ); -} - - -int CvSVM::get_support_vector_count() const -{ - return sv_total; -} - - -const float* CvSVM::get_support_vector(int i) const -{ - return sv && (unsigned)i < (unsigned)sv_total ? sv[i] : 0; -} - -bool CvSVM::set_params( const CvSVMParams& _params ) -{ - bool ok = false; - - CV_FUNCNAME( "CvSVM::set_params" ); - - __BEGIN__; - - int kernel_type, svm_type; - - params = _params; - - kernel_type = params.kernel_type; - svm_type = params.svm_type; - - if( kernel_type != LINEAR && kernel_type != POLY && - kernel_type != SIGMOID && kernel_type != RBF && - kernel_type != INTER && kernel_type != CHI2) - CV_ERROR( CV_StsBadArg, "Unknown/unsupported kernel type" ); - - if( kernel_type == LINEAR ) - params.gamma = 1; - else if( params.gamma <= 0 ) - CV_ERROR( CV_StsOutOfRange, "gamma parameter of the kernel must be positive" ); - - if( kernel_type != SIGMOID && kernel_type != POLY ) - params.coef0 = 0; - else if( params.coef0 < 0 ) - CV_ERROR( CV_StsOutOfRange, "The kernel parameter must be positive or zero" ); - - if( kernel_type != POLY ) - params.degree = 0; - else if( params.degree <= 0 ) - CV_ERROR( CV_StsOutOfRange, "The kernel parameter must be positive" ); - - if( svm_type != C_SVC && svm_type != NU_SVC && - svm_type != ONE_CLASS && svm_type != EPS_SVR && - svm_type != NU_SVR ) - CV_ERROR( CV_StsBadArg, "Unknown/unsupported SVM type" ); - - if( svm_type == ONE_CLASS || svm_type == NU_SVC ) - params.C = 0; - else if( params.C <= 0 ) - CV_ERROR( CV_StsOutOfRange, "The parameter C must be positive" ); - - if( svm_type == C_SVC || svm_type == EPS_SVR ) - params.nu = 0; - else if( params.nu <= 0 || params.nu >= 1 ) - CV_ERROR( CV_StsOutOfRange, "The parameter nu must be between 0 and 1" ); - - if( svm_type != EPS_SVR ) - params.p = 0; - else if( params.p <= 0 ) - CV_ERROR( CV_StsOutOfRange, "The parameter p must be positive" ); - - if( svm_type != C_SVC ) - params.class_weights = 0; - - params.term_crit = cvCheckTermCriteria( params.term_crit, DBL_EPSILON, INT_MAX ); - params.term_crit.epsilon = MAX( params.term_crit.epsilon, DBL_EPSILON ); - ok = true; - - __END__; - - return ok; -} - - - -void CvSVM::create_kernel() -{ - kernel = new CvSVMKernel(¶ms,0); -} - - -void CvSVM::create_solver( ) -{ - solver = new CvSVMSolver; -} - - -// switching function -bool CvSVM::train1( int sample_count, int var_count, const float** samples, - const void* _responses, double Cp, double Cn, - CvMemStorage* _storage, double* alpha, double& rho ) -{ - bool ok = false; - - //CV_FUNCNAME( "CvSVM::train1" ); - - __BEGIN__; - - CvSVMSolutionInfo si; - int svm_type = params.svm_type; - - si.rho = 0; - - ok = svm_type == C_SVC ? solver->solve_c_svc( sample_count, var_count, samples, (schar*)_responses, - Cp, Cn, _storage, kernel, alpha, si ) : - svm_type == NU_SVC ? solver->solve_nu_svc( sample_count, var_count, samples, (schar*)_responses, - _storage, kernel, alpha, si ) : - svm_type == ONE_CLASS ? solver->solve_one_class( sample_count, var_count, samples, - _storage, kernel, alpha, si ) : - svm_type == EPS_SVR ? solver->solve_eps_svr( sample_count, var_count, samples, (float*)_responses, - _storage, kernel, alpha, si ) : - svm_type == NU_SVR ? solver->solve_nu_svr( sample_count, var_count, samples, (float*)_responses, - _storage, kernel, alpha, si ) : false; - - rho = si.rho; - - __END__; - - return ok; -} - - -bool CvSVM::do_train( int svm_type, int sample_count, int var_count, const float** samples, - const CvMat* responses, CvMemStorage* temp_storage, double* alpha ) -{ - bool ok = false; - - CV_FUNCNAME( "CvSVM::do_train" ); - - __BEGIN__; - - CvSVMDecisionFunc* df = 0; - const int sample_size = var_count*sizeof(samples[0][0]); - int i, j, k; - - cvClearMemStorage( storage ); - - if( svm_type == ONE_CLASS || svm_type == EPS_SVR || svm_type == NU_SVR ) - { - int sv_count = 0; - - CV_CALL( decision_func = df = - (CvSVMDecisionFunc*)cvAlloc( sizeof(df[0]) )); - - df->rho = 0; - if( !train1( sample_count, var_count, samples, svm_type == ONE_CLASS ? 0 : - responses->data.i, 0, 0, temp_storage, alpha, df->rho )) - EXIT; - - for( i = 0; i < sample_count; i++ ) - sv_count += fabs(alpha[i]) > 0; - - CV_Assert(sv_count != 0); - - sv_total = df->sv_count = sv_count; - CV_CALL( df->alpha = (double*)cvMemStorageAlloc( storage, sv_count*sizeof(df->alpha[0])) ); - CV_CALL( sv = (float**)cvMemStorageAlloc( storage, sv_count*sizeof(sv[0]))); - - for( i = k = 0; i < sample_count; i++ ) - { - if( fabs(alpha[i]) > 0 ) + for( int i = 0; i < alpha_count; i++ ) { - CV_CALL( sv[k] = (float*)cvMemStorageAlloc( storage, sample_size )); - memcpy( sv[k], samples[i], sample_size ); - df->alpha[k++] = alpha[i]; - } - } - } - else - { - int class_count = class_labels->cols; - int* sv_tab = 0; - const float** temp_samples = 0; - int* class_ranges = 0; - schar* temp_y = 0; - assert( svm_type == CvSVM::C_SVC || svm_type == CvSVM::NU_SVC ); - - if( svm_type == CvSVM::C_SVC && params.class_weights ) - { - const CvMat* cw = params.class_weights; - - if( !CV_IS_MAT(cw) || (cw->cols != 1 && cw->rows != 1) || - cw->rows + cw->cols - 1 != class_count || - (CV_MAT_TYPE(cw->type) != CV_32FC1 && CV_MAT_TYPE(cw->type) != CV_64FC1) ) - CV_ERROR( CV_StsBadArg, "params.class_weights must be 1d floating-point vector " - "containing as many elements as the number of classes" ); + double t; - CV_CALL( class_weights = cvCreateMat( cw->rows, cw->cols, CV_64F )); - CV_CALL( cvConvert( cw, class_weights )); - CV_CALL( cvScale( class_weights, class_weights, params.C )); - } - - CV_CALL( decision_func = df = (CvSVMDecisionFunc*)cvAlloc( - (class_count*(class_count-1)/2)*sizeof(df[0]))); - - CV_CALL( sv_tab = (int*)cvMemStorageAlloc( temp_storage, sample_count*sizeof(sv_tab[0]) )); - memset( sv_tab, 0, sample_count*sizeof(sv_tab[0]) ); - CV_CALL( class_ranges = (int*)cvMemStorageAlloc( temp_storage, - (class_count + 1)*sizeof(class_ranges[0]))); - CV_CALL( temp_samples = (const float**)cvMemStorageAlloc( temp_storage, - sample_count*sizeof(temp_samples[0]))); - CV_CALL( temp_y = (schar*)cvMemStorageAlloc( temp_storage, sample_count)); - - class_ranges[class_count] = 0; - cvSortSamplesByClasses( samples, responses, class_ranges, 0 ); - //check that while cross-validation there were the samples from all the classes - if( class_ranges[class_count] <= 0 ) - CV_ERROR( CV_StsBadArg, "While cross-validation one or more of the classes have " - "been fell out of the sample. Try to enlarge " ); - - if( svm_type == NU_SVC ) - { - // check if nu is feasible - for(i = 0; i < class_count; i++ ) - { - int ci = class_ranges[i+1] - class_ranges[i]; - for( j = i+1; j< class_count; j++ ) + if( y[i] > 0 ) // y = +1 { - int cj = class_ranges[j+1] - class_ranges[j]; - if( params.nu*(ci + cj)*0.5 > MIN( ci, cj ) ) + if( !is_upper_bound(i) && (t = -G[i]) > Gmax1 ) // d = +1 + { + Gmax1 = t; + Gmax1_idx = i; + } + if( !is_lower_bound(i) && (t = G[i]) > Gmax2 ) // d = -1 + { + Gmax2 = t; + Gmax2_idx = i; + } + } + else // y = -1 + { + if( !is_upper_bound(i) && (t = -G[i]) > Gmax2 ) // d = +1 + { + Gmax2 = t; + Gmax2_idx = i; + } + if( !is_lower_bound(i) && (t = G[i]) > Gmax1 ) // d = -1 { - // !!!TODO!!! add some diagnostic - EXIT; // exit immediately; will release the model and return NULL pointer + Gmax1 = t; + Gmax1_idx = i; } } } + + out_i = Gmax1_idx; + out_j = Gmax2_idx; + + return Gmax1 + Gmax2 < eps; } - // train n*(n-1)/2 classifiers - for( i = 0; i < class_count; i++ ) + void calc_rho( double& rho, double& r ) { - for( j = i+1; j < class_count; j++, df++ ) + int nr_free = 0; + double ub = DBL_MAX, lb = -DBL_MAX, sum_free = 0; + const schar* y = &y_vec[0]; + const schar* alpha_status = &alpha_status_vec[0]; + const double* G = &G_vec[0]; + + for( int i = 0; i < alpha_count; i++ ) { - int si = class_ranges[i], ci = class_ranges[i+1] - si; - int sj = class_ranges[j], cj = class_ranges[j+1] - sj; - double Cp = params.C, Cn = Cp; - int k1 = 0, sv_count = 0; + double yG = y[i]*G[i]; - for( k = 0; k < ci; k++ ) + if( is_lower_bound(i) ) { - temp_samples[k] = samples[si + k]; - temp_y[k] = 1; + if( y[i] > 0 ) + ub = MIN(ub,yG); + else + lb = MAX(lb,yG); } - - for( k = 0; k < cj; k++ ) + else if( is_upper_bound(i) ) { - temp_samples[ci + k] = samples[sj + k]; - temp_y[ci + k] = -1; + if( y[i] < 0) + ub = MIN(ub,yG); + else + lb = MAX(lb,yG); } - - if( class_weights ) + else { - Cp = class_weights->data.db[i]; - Cn = class_weights->data.db[j]; + ++nr_free; + sum_free += yG; } + } + + rho = nr_free > 0 ? sum_free/nr_free : (ub + lb)*0.5; + r = 0; + } + + bool select_working_set_nu_svm( int& out_i, int& out_j ) + { + // return i,j which maximize -grad(f)^T d , under constraint + // if alpha_i == C, d != +1 + // if alpha_i == 0, d != -1 + double Gmax1 = -DBL_MAX; // max { -grad(f)_i * d | y_i = +1, d = +1 } + int Gmax1_idx = -1; - if( !train1( ci + cj, var_count, temp_samples, temp_y, - Cp, Cn, temp_storage, alpha, df->rho )) - EXIT; + double Gmax2 = -DBL_MAX; // max { -grad(f)_i * d | y_i = +1, d = -1 } + int Gmax2_idx = -1; - for( k = 0; k < ci + cj; k++ ) - sv_count += fabs(alpha[k]) > 0; + double Gmax3 = -DBL_MAX; // max { -grad(f)_i * d | y_i = -1, d = +1 } + int Gmax3_idx = -1; - df->sv_count = sv_count; + double Gmax4 = -DBL_MAX; // max { -grad(f)_i * d | y_i = -1, d = -1 } + int Gmax4_idx = -1; - CV_CALL( df->alpha = (double*)cvMemStorageAlloc( temp_storage, - sv_count*sizeof(df->alpha[0]))); - CV_CALL( df->sv_index = (int*)cvMemStorageAlloc( temp_storage, - sv_count*sizeof(df->sv_index[0]))); + const schar* y = &y_vec[0]; + const schar* alpha_status = &alpha_status_vec[0]; + const double* G = &G_vec[0]; - for( k = 0; k < ci; k++ ) + for( int i = 0; i < alpha_count; i++ ) + { + double t; + + if( y[i] > 0 ) // y == +1 { - if( fabs(alpha[k]) > 0 ) + if( !is_upper_bound(i) && (t = -G[i]) > Gmax1 ) // d = +1 + { + Gmax1 = t; + Gmax1_idx = i; + } + if( !is_lower_bound(i) && (t = G[i]) > Gmax2 ) // d = -1 { - sv_tab[si + k] = 1; - df->sv_index[k1] = si + k; - df->alpha[k1++] = alpha[k]; + Gmax2 = t; + Gmax2_idx = i; } } - - for( k = 0; k < cj; k++ ) + else // y == -1 { - if( fabs(alpha[ci + k]) > 0 ) + if( !is_upper_bound(i) && (t = -G[i]) > Gmax3 ) // d = +1 + { + Gmax3 = t; + Gmax3_idx = i; + } + if( !is_lower_bound(i) && (t = G[i]) > Gmax4 ) // d = -1 { - sv_tab[sj + k] = 1; - df->sv_index[k1] = sj + k; - df->alpha[k1++] = alpha[ci + k]; + Gmax4 = t; + Gmax4_idx = i; } } } - } - - // allocate support vectors and initialize sv_tab - for( i = 0, k = 0; i < sample_count; i++ ) - { - if( sv_tab[i] ) - sv_tab[i] = ++k; - } - sv_total = k; - CV_CALL( sv = (float**)cvMemStorageAlloc( storage, sv_total*sizeof(sv[0]))); + if( MAX(Gmax1 + Gmax2, Gmax3 + Gmax4) < eps ) + return 1; - for( i = 0, k = 0; i < sample_count; i++ ) - { - if( sv_tab[i] ) + if( Gmax1 + Gmax2 > Gmax3 + Gmax4 ) { - CV_CALL( sv[k] = (float*)cvMemStorageAlloc( storage, sample_size )); - memcpy( sv[k], samples[i], sample_size ); - k++; + out_i = Gmax1_idx; + out_j = Gmax2_idx; } + else + { + out_i = Gmax3_idx; + out_j = Gmax4_idx; + } + return 0; } - df = (CvSVMDecisionFunc*)decision_func; - - // set sv pointers - for( i = 0; i < class_count; i++ ) + void calc_rho_nu_svm( double& rho, double& r ) { - for( j = i+1; j < class_count; j++, df++ ) + int nr_free1 = 0, nr_free2 = 0; + double ub1 = DBL_MAX, ub2 = DBL_MAX; + double lb1 = -DBL_MAX, lb2 = -DBL_MAX; + double sum_free1 = 0, sum_free2 = 0; + + const schar* y = &y_vec[0]; + const schar* alpha_status = &alpha_status_vec[0]; + const double* G = &G_vec[0]; + + for( int i = 0; i < alpha_count; i++ ) { - for( k = 0; k < df->sv_count; k++ ) + double G_i = G[i]; + if( y[i] > 0 ) { - df->sv_index[k] = sv_tab[df->sv_index[k]]-1; - assert( (unsigned)df->sv_index[k] < (unsigned)sv_total ); + if( is_lower_bound(i) ) + ub1 = MIN( ub1, G_i ); + else if( is_upper_bound(i) ) + lb1 = MAX( lb1, G_i ); + else + { + ++nr_free1; + sum_free1 += G_i; + } + } + else + { + if( is_lower_bound(i) ) + ub2 = MIN( ub2, G_i ); + else if( is_upper_bound(i) ) + lb2 = MAX( lb2, G_i ); + else + { + ++nr_free2; + sum_free2 += G_i; + } } } - } - } - - optimize_linear_svm(); - ok = true; - - __END__; - - return ok; -} - - -void CvSVM::optimize_linear_svm() -{ - // we optimize only linear SVM: compress all the support vectors into one. - if( params.kernel_type != LINEAR ) - return; - - int class_count = class_labels ? class_labels->cols : - params.svm_type == CvSVM::ONE_CLASS ? 1 : 0; - int i, df_count = class_count > 1 ? class_count*(class_count-1)/2 : 1; - CvSVMDecisionFunc* df = decision_func; + double r1 = nr_free1 > 0 ? sum_free1/nr_free1 : (ub1 + lb1)*0.5; + double r2 = nr_free2 > 0 ? sum_free2/nr_free2 : (ub2 + lb2)*0.5; - for( i = 0; i < df_count; i++ ) - { - int sv_count = df[i].sv_count; - if( sv_count != 1 ) - break; - } - - // if every decision functions uses a single support vector; - // it's already compressed. skip it then. - if( i == df_count ) - return; - - int var_count = get_var_count(); - cv::AutoBuffer vbuf(var_count); - double* v = vbuf; - float** new_sv = (float**)cvMemStorageAlloc(storage, df_count*sizeof(new_sv[0])); - - for( i = 0; i < df_count; i++ ) - { - new_sv[i] = (float*)cvMemStorageAlloc(storage, var_count*sizeof(new_sv[i][0])); - float* dst = new_sv[i]; - memset(v, 0, var_count*sizeof(v[0])); - int j, k, sv_count = df[i].sv_count; - for( j = 0; j < sv_count; j++ ) - { - const float* src = class_count > 1 && df[i].sv_index ? sv[df[i].sv_index[j]] : sv[j]; - double a = df[i].alpha[j]; - for( k = 0; k < var_count; k++ ) - v[k] += src[k]*a; + rho = (r1 - r2)*0.5; + r = (r1 + r2)*0.5; } - for( k = 0; k < var_count; k++ ) - dst[k] = (float)v[k]; - df[i].sv_count = 1; - df[i].alpha[0] = 1.; - if( class_count > 1 && df[i].sv_index ) - df[i].sv_index[0] = i; - } - - sv = new_sv; - sv_total = df_count; -} - - -bool CvSVM::train( const CvMat* _train_data, const CvMat* _responses, - const CvMat* _var_idx, const CvMat* _sample_idx, CvSVMParams _params ) -{ - bool ok = false; - CvMat* responses = 0; - CvMemStorage* temp_storage = 0; - const float** samples = 0; - - CV_FUNCNAME( "CvSVM::train" ); - - __BEGIN__; - - int svm_type, sample_count, var_count, sample_size; - int block_size = 1 << 16; - double* alpha; - - clear(); - CV_CALL( set_params( _params )); - - svm_type = _params.svm_type; - - /* Prepare training data and related parameters */ - CV_CALL( cvPrepareTrainData( "CvSVM::train", _train_data, CV_ROW_SAMPLE, - svm_type != CvSVM::ONE_CLASS ? _responses : 0, - svm_type == CvSVM::C_SVC || - svm_type == CvSVM::NU_SVC ? CV_VAR_CATEGORICAL : - CV_VAR_ORDERED, _var_idx, _sample_idx, - false, &samples, &sample_count, &var_count, &var_all, - &responses, &class_labels, &var_idx )); - - - sample_size = var_count*sizeof(samples[0][0]); - - // make the storage block size large enough to fit all - // the temporary vectors and output support vectors. - block_size = MAX( block_size, sample_count*(int)sizeof(CvSVMKernelRow)); - block_size = MAX( block_size, sample_count*2*(int)sizeof(double) + 1024 ); - block_size = MAX( block_size, sample_size*2 + 1024 ); - CV_CALL( storage = cvCreateMemStorage(block_size + sizeof(CvMemBlock) + sizeof(CvSeqBlock))); - CV_CALL( temp_storage = cvCreateChildMemStorage(storage)); - CV_CALL( alpha = (double*)cvMemStorageAlloc(temp_storage, sample_count*sizeof(double))); + /* + ///////////////////////// construct and solve various formulations /////////////////////// + */ + static bool solve_c_svc( const Mat& _samples, const vector& _y, + double _Cp, double _Cn, const Ptr& _kernel, + vector& _alpha, SolutionInfo& _si, TermCriteria termCrit ) + { + int sample_count = _samples.rows; - create_kernel(); - create_solver(); + _alpha.assign(sample_count, 0.); + vector _b(sample_count, -1.); - if( !do_train( svm_type, sample_count, var_count, samples, responses, temp_storage, alpha )) - EXIT; + Solver solver( _samples, _y, _alpha, _b, _Cp, _Cn, _kernel, + &Solver::get_row_svc, + &Solver::select_working_set, + &Solver::calc_rho, + termCrit ); - ok = true; // model has been trained succesfully + if( !solver.solve_generic( _si )) + return false; - __END__; + for( int i = 0; i < sample_count; i++ ) + _alpha[i] *= _y[i]; - delete solver; - solver = 0; - cvReleaseMemStorage( &temp_storage ); - cvReleaseMat( &responses ); - cvFree( &samples ); + return true; + } - if( cvGetErrStatus() < 0 || !ok ) - clear(); - return ok; -} + static bool solve_nu_svc( const Mat& _samples, const vector& _y, + double nu, const Ptr& _kernel, + vector& _alpha, SolutionInfo& _si, + TermCriteria termCrit ) + { + int sample_count = _samples.rows; -struct indexedratio -{ - double val; - int ind; - int count_smallest, count_biggest; - void eval() { val = (double) count_smallest/(count_smallest+count_biggest); } -}; + _alpha.resize(sample_count); + vector _b(sample_count, 0.); -static int CV_CDECL -icvCmpIndexedratio( const void* a, const void* b ) -{ - return ((const indexedratio*)a)->val < ((const indexedratio*)b)->val ? -1 - : ((const indexedratio*)a)->val > ((const indexedratio*)b)->val ? 1 - : 0; -} + double sum_pos = nu * sample_count * 0.5; + double sum_neg = nu * sample_count * 0.5; -bool CvSVM::train_auto( const CvMat* _train_data, const CvMat* _responses, - const CvMat* _var_idx, const CvMat* _sample_idx, CvSVMParams _params, int k_fold, - CvParamGrid C_grid, CvParamGrid gamma_grid, CvParamGrid p_grid, - CvParamGrid nu_grid, CvParamGrid coef_grid, CvParamGrid degree_grid, - bool balanced) -{ - bool ok = false; - CvMat* responses = 0; - CvMat* responses_local = 0; - CvMemStorage* temp_storage = 0; - const float** samples = 0; - const float** samples_local = 0; - - CV_FUNCNAME( "CvSVM::train_auto" ); - __BEGIN__; - - int svm_type, sample_count, var_count, sample_size; - int block_size = 1 << 16; - double* alpha; - RNG* rng = &theRNG(); - - // all steps are logarithmic and must be > 1 - double degree_step = 10, g_step = 10, coef_step = 10, C_step = 10, nu_step = 10, p_step = 10; - double gamma = 0, curr_c = 0, degree = 0, coef = 0, p = 0, nu = 0; - double best_degree = 0, best_gamma = 0, best_coef = 0, best_C = 0, best_nu = 0, best_p = 0; - float min_error = FLT_MAX, error; - - if( _params.svm_type == CvSVM::ONE_CLASS ) - { - if(!train( _train_data, _responses, _var_idx, _sample_idx, _params )) - EXIT; - return true; - } + for( int i = 0; i < sample_count; i++ ) + { + double a; + if( _y[i] > 0 ) + { + a = std::min(1.0, sum_pos); + sum_pos -= a; + } + else + { + a = std::min(1.0, sum_neg); + sum_neg -= a; + } + _alpha[i] = a; + } - clear(); + Solver solver( _samples, _y, _alpha, _b, 1., 1., _kernel, + &Solver::get_row_svc, + &Solver::select_working_set_nu_svm, + &Solver::calc_rho_nu_svm, + termCrit ); - if( k_fold < 2 ) - CV_ERROR( CV_StsBadArg, "Parameter must be > 1" ); + if( !solver.solve_generic( _si )) + return false; - CV_CALL(set_params( _params )); - svm_type = _params.svm_type; + double inv_r = 1./_si.r; - // All the parameters except, possibly, are positive. - // is nonnegative - if( C_grid.step <= 1 ) - { - C_grid.min_val = C_grid.max_val = params.C; - C_grid.step = 10; - } - else - CV_CALL(C_grid.check()); + for( int i = 0; i < sample_count; i++ ) + _alpha[i] *= _y[i]*inv_r; - if( gamma_grid.step <= 1 ) - { - gamma_grid.min_val = gamma_grid.max_val = params.gamma; - gamma_grid.step = 10; - } - else - CV_CALL(gamma_grid.check()); + _si.rho *= inv_r; + _si.obj *= (inv_r*inv_r); + _si.upper_bound_p = inv_r; + _si.upper_bound_n = inv_r; - if( p_grid.step <= 1 ) - { - p_grid.min_val = p_grid.max_val = params.p; - p_grid.step = 10; - } - else - CV_CALL(p_grid.check()); + return true; + } - if( nu_grid.step <= 1 ) - { - nu_grid.min_val = nu_grid.max_val = params.nu; - nu_grid.step = 10; - } - else - CV_CALL(nu_grid.check()); + static bool solve_one_class( const Mat& _samples, double nu, + const Ptr& _kernel, + vector& _alpha, SolutionInfo& _si, + TermCriteria termCrit ) + { + int sample_count = _samples.rows; + vector _y(sample_count, 1); + vector _b(sample_count, 0.); - if( coef_grid.step <= 1 ) - { - coef_grid.min_val = coef_grid.max_val = params.coef0; - coef_grid.step = 10; - } - else - CV_CALL(coef_grid.check()); + int i, n = cvRound( nu*sample_count ); - if( degree_grid.step <= 1 ) - { - degree_grid.min_val = degree_grid.max_val = params.degree; - degree_grid.step = 10; - } - else - CV_CALL(degree_grid.check()); - - // these parameters are not used: - if( params.kernel_type != CvSVM::POLY ) - degree_grid.min_val = degree_grid.max_val = params.degree; - if( params.kernel_type == CvSVM::LINEAR ) - gamma_grid.min_val = gamma_grid.max_val = params.gamma; - if( params.kernel_type != CvSVM::POLY && params.kernel_type != CvSVM::SIGMOID ) - coef_grid.min_val = coef_grid.max_val = params.coef0; - if( svm_type == CvSVM::NU_SVC || svm_type == CvSVM::ONE_CLASS ) - C_grid.min_val = C_grid.max_val = params.C; - if( svm_type == CvSVM::C_SVC || svm_type == CvSVM::EPS_SVR ) - nu_grid.min_val = nu_grid.max_val = params.nu; - if( svm_type != CvSVM::EPS_SVR ) - p_grid.min_val = p_grid.max_val = params.p; - - CV_ASSERT( g_step > 1 && degree_step > 1 && coef_step > 1); - CV_ASSERT( p_step > 1 && C_step > 1 && nu_step > 1 ); - - /* Prepare training data and related parameters */ - CV_CALL(cvPrepareTrainData( "CvSVM::train_auto", _train_data, CV_ROW_SAMPLE, - svm_type != CvSVM::ONE_CLASS ? _responses : 0, - svm_type == CvSVM::C_SVC || - svm_type == CvSVM::NU_SVC ? CV_VAR_CATEGORICAL : - CV_VAR_ORDERED, _var_idx, _sample_idx, - false, &samples, &sample_count, &var_count, &var_all, - &responses, &class_labels, &var_idx )); - - sample_size = var_count*sizeof(samples[0][0]); - - // make the storage block size large enough to fit all - // the temporary vectors and output support vectors. - block_size = MAX( block_size, sample_count*(int)sizeof(CvSVMKernelRow)); - block_size = MAX( block_size, sample_count*2*(int)sizeof(double) + 1024 ); - block_size = MAX( block_size, sample_size*2 + 1024 ); - - CV_CALL( storage = cvCreateMemStorage(block_size + sizeof(CvMemBlock) + sizeof(CvSeqBlock))); - CV_CALL(temp_storage = cvCreateChildMemStorage(storage)); - CV_CALL(alpha = (double*)cvMemStorageAlloc(temp_storage, sample_count*sizeof(double))); - - create_kernel(); - create_solver(); + _alpha.resize(sample_count); + for( i = 0; i < sample_count; i++ ) + _alpha[i] = i < n ? 1 : 0; - { - const int testset_size = sample_count/k_fold; - const int trainset_size = sample_count - testset_size; - const int last_testset_size = sample_count - testset_size*(k_fold-1); - const int last_trainset_size = sample_count - last_testset_size; - const bool is_regression = (svm_type == EPS_SVR) || (svm_type == NU_SVR); + if( n < sample_count ) + _alpha[n] = nu * sample_count - n; + else + _alpha[n-1] = nu * sample_count - (n-1); - size_t resp_elem_size = CV_ELEM_SIZE(responses->type); - size_t size = 2*last_trainset_size*sizeof(samples[0]); + Solver solver( _samples, _y, _alpha, _b, 1., 1., _kernel, + &Solver::get_row_one_class, + &Solver::select_working_set, + &Solver::calc_rho, + termCrit ); - samples_local = (const float**) cvAlloc( size ); - memset( samples_local, 0, size ); + return solver.solve_generic(_si); + } - responses_local = cvCreateMat( 1, trainset_size, CV_MAT_TYPE(responses->type) ); - cvZero( responses_local ); + static bool solve_eps_svr( const Mat& _samples, const vector& _yf, + double p, double C, const Ptr& _kernel, + vector& _alpha, SolutionInfo& _si, + TermCriteria termCrit ) + { + int sample_count = _samples.rows; + int alpha_count = sample_count*2; - // randomly permute samples and responses - for(int i = 0; i < sample_count; i++ ) - { - int i1 = (*rng)(sample_count); - int i2 = (*rng)(sample_count); - const float* temp; - float t; - int y; - - CV_SWAP( samples[i1], samples[i2], temp ); - if( is_regression ) - CV_SWAP( responses->data.fl[i1], responses->data.fl[i2], t ); - else - CV_SWAP( responses->data.i[i1], responses->data.i[i2], y ); - } + CV_Assert( (int)_yf.size() == sample_count ); - if (!is_regression && class_labels->cols==2 && balanced) - { - // count class samples - int num_0=0,num_1=0; - for (int i=0; idata.i[i]==class_labels->data.i[0]) - ++num_0; - else - ++num_1; - } + _alpha.assign(alpha_count, 0.); + vector _y(alpha_count); + vector _b(alpha_count); - int label_smallest_class; - int label_biggest_class; - if (num_0 < num_1) - { - label_biggest_class = class_labels->data.i[1]; - label_smallest_class = class_labels->data.i[0]; - } - else - { - label_biggest_class = class_labels->data.i[0]; - label_smallest_class = class_labels->data.i[1]; - int y; - CV_SWAP(num_0,num_1,y); - } - const double class_ratio = (double) num_0/sample_count; - // calculate class ratio of each fold - indexedratio *ratios=0; - ratios = (indexedratio*) cvAlloc(k_fold*sizeof(*ratios)); - for (int k=0, i_begin=0; kdata.i[i]==label_smallest_class) - ++count0; - else - ++count1; - } - ratios[k].ind = k; - ratios[k].count_smallest = count0; - ratios[k].count_biggest = count1; - ratios[k].eval(); - } - // initial distance - qsort(ratios, k_fold, sizeof(ratios[0]), icvCmpIndexedratio); - double old_dist = 0.0; - for (int k=0; k 0.0) - { - if (ratios[0].count_biggest==0 || ratios[k_fold-1].count_smallest==0) - break; // we are not able to swap samples anymore - // what if we swap the samples, calculate the new distance - ratios[0].count_smallest++; - ratios[0].count_biggest--; - ratios[0].eval(); - ratios[k_fold-1].count_smallest--; - ratios[k_fold-1].count_biggest++; - ratios[k_fold-1].eval(); - qsort(ratios, k_fold, sizeof(ratios[0]), icvCmpIndexedratio); - new_dist = 0.0; - for (int k=0; kdata.i[i1]==label_biggest_class) - break; - } - // index of the smallest_class sample from the maximum ratio fold - int i2 = ratios[k_fold-1].ind * testset_size; - for ( ; i2data.i[i2]==label_smallest_class) - break; - } - // swap - const float* temp; - int y; - CV_SWAP( samples[i1], samples[i2], temp ); - CV_SWAP( responses->data.i[i1], responses->data.i[i2], y ); - old_dist = new_dist; - } - else - break; // does not improve, so break the loop - } - cvFree(&ratios); - } + _b[i] = p - _yf[i]; + _y[i] = 1; - int* cls_lbls = class_labels ? class_labels->data.i : 0; - curr_c = C_grid.min_val; - do - { - params.C = curr_c; - gamma = gamma_grid.min_val; - do - { - params.gamma = gamma; - p = p_grid.min_val; - do - { - params.p = p; - nu = nu_grid.min_val; - do - { - params.nu = nu; - coef = coef_grid.min_val; - do - { - params.coef0 = coef; - degree = degree_grid.min_val; - do - { - params.degree = degree; - - float** test_samples_ptr = (float**)samples; - uchar* true_resp = responses->data.ptr; - int test_size = testset_size; - int train_size = trainset_size; - - error = 0; - for(int k = 0; k < k_fold; k++ ) - { - memcpy( samples_local, samples, sizeof(samples[0])*test_size*k ); - memcpy( samples_local + test_size*k, test_samples_ptr + test_size, - sizeof(samples[0])*(sample_count - testset_size*(k+1)) ); + _b[i+sample_count] = p + _yf[i]; + _y[i+sample_count] = -1; + } - memcpy( responses_local->data.ptr, responses->data.ptr, resp_elem_size*test_size*k ); - memcpy( responses_local->data.ptr + resp_elem_size*test_size*k, - true_resp + resp_elem_size*test_size, - resp_elem_size*(sample_count - testset_size*(k+1)) ); + Solver solver( _samples, _y, _alpha, _b, C, C, _kernel, + &Solver::get_row_svr, + &Solver::select_working_set, + &Solver::calc_rho, + termCrit ); - if( k == k_fold - 1 ) - { - test_size = last_testset_size; - train_size = last_trainset_size; - responses_local->cols = last_trainset_size; - } + if( !solver.solve_generic( _si )) + return false; - // Train SVM on samples - if( !do_train( svm_type, train_size, var_count, - (const float**)samples_local, responses_local, temp_storage, alpha ) ) - EXIT; + for( int i = 0; i < sample_count; i++ ) + _alpha[i] -= _alpha[i+sample_count]; - // Compute test set error on samples - for(int i = 0; i < test_size; i++, true_resp += resp_elem_size, test_samples_ptr++ ) - { - float resp = predict( *test_samples_ptr, var_count ); - error += is_regression ? powf( resp - *(float*)true_resp, 2 ) - : ((int)resp != cls_lbls[*(int*)true_resp]); - } - } - if( min_error > error ) - { - min_error = error; - best_degree = degree; - best_gamma = gamma; - best_coef = coef; - best_C = curr_c; - best_nu = nu; - best_p = p; - } - degree *= degree_grid.step; - } - while( degree < degree_grid.max_val ); - coef *= coef_grid.step; - } - while( coef < coef_grid.max_val ); - nu *= nu_grid.step; - } - while( nu < nu_grid.max_val ); - p *= p_grid.step; + return true; } - while( p < p_grid.max_val ); - gamma *= gamma_grid.step; - } - while( gamma < gamma_grid.max_val ); - curr_c *= C_grid.step; - } - while( curr_c < C_grid.max_val ); - } - min_error /= (float) sample_count; - params.C = best_C; - params.nu = best_nu; - params.p = best_p; - params.gamma = best_gamma; - params.degree = best_degree; - params.coef0 = best_coef; + static bool solve_nu_svr( const Mat& _samples, const vector& _yf, + double nu, double C, const Ptr& _kernel, + vector& _alpha, SolutionInfo& _si, + TermCriteria termCrit ) + { + int sample_count = _samples.rows; + int alpha_count = sample_count*2; + double sum = C * nu * sample_count * 0.5; - CV_CALL(ok = do_train( svm_type, sample_count, var_count, samples, responses, temp_storage, alpha )); + CV_Assert( (int)_yf.size() == sample_count ); - __END__; + _alpha.resize(alpha_count); + vector _y(alpha_count); + vector _b(alpha_count); - delete solver; - solver = 0; - cvReleaseMemStorage( &temp_storage ); - cvReleaseMat( &responses ); - cvReleaseMat( &responses_local ); - cvFree( &samples ); - cvFree( &samples_local ); + for( int i = 0; i < sample_count; i++ ) + { + _alpha[i] = _alpha[i + sample_count] = std::min(sum, C); + sum -= _alpha[i]; - if( cvGetErrStatus() < 0 || !ok ) - clear(); + _b[i] = -_yf[i]; + _y[i] = 1; - return ok; -} + _b[i + sample_count] = _yf[i]; + _y[i + sample_count] = -1; + } -float CvSVM::predict( const float* row_sample, int row_len, bool returnDFVal ) const -{ - assert( kernel ); - assert( row_sample ); + Solver solver( _samples, _y, _alpha, _b, 1., 1., _kernel, + &Solver::get_row_svr, + &Solver::select_working_set_nu_svm, + &Solver::calc_rho_nu_svm, + termCrit ); - int var_count = get_var_count(); - assert( row_len == var_count ); - (void)row_len; + if( !solver.solve_generic( _si )) + return false; - int class_count = class_labels ? class_labels->cols : - params.svm_type == ONE_CLASS ? 1 : 0; + for( int i = 0; i < sample_count; i++ ) + _alpha[i] -= _alpha[i+sample_count]; - float result = 0; - cv::AutoBuffer _buffer(sv_total + (class_count+1)*2); - float* buffer = _buffer; + return true; + } - if( params.svm_type == EPS_SVR || - params.svm_type == NU_SVR || - params.svm_type == ONE_CLASS ) + int sample_count; + int var_count; + int cache_size; + int max_cache_size; + Mat samples; + SVM::Params params; + vector lru_cache; + int lru_first; + int lru_last; + Mat lru_cache_data; + + int alpha_count; + + vector G_vec; + vector* alpha_vec; + vector y_vec; + // -1 - lower bound, 0 - free, 1 - upper bound + vector alpha_status_vec; + vector b_vec; + + vector buf[2]; + double eps; + int max_iter; + double C[2]; // C[0] == Cn, C[1] == Cp + Ptr kernel; + + SelectWorkingSet select_working_set_func; + CalcRho calc_rho_func; + GetRow get_row_func; + }; + + ////////////////////////////////////////////////////////////////////////////////////////// + SVMImpl() { - CvSVMDecisionFunc* df = (CvSVMDecisionFunc*)decision_func; - int i, sv_count = df->sv_count; - double sum = -df->rho; - - kernel->calc( sv_count, var_count, (const float**)sv, row_sample, buffer ); - for( i = 0; i < sv_count; i++ ) - sum += buffer[i]*df->alpha[i]; - - result = params.svm_type == ONE_CLASS ? (float)(sum > 0) : (float)sum; + clear(); } - else if( params.svm_type == C_SVC || - params.svm_type == NU_SVC ) + + ~SVMImpl() { - CvSVMDecisionFunc* df = (CvSVMDecisionFunc*)decision_func; - int* vote = (int*)(buffer + sv_total); - int i, j, k; + clear(); + } - memset( vote, 0, class_count*sizeof(vote[0])); - kernel->calc( sv_total, var_count, (const float**)sv, row_sample, buffer ); - double sum = 0.; + void clear() + { + decision_func.clear(); + df_alpha.clear(); + df_index.clear(); + sv.release(); + } - for( i = 0; i < class_count; i++ ) - { - for( j = i+1; j < class_count; j++, df++ ) - { - sum = -df->rho; - int sv_count = df->sv_count; - for( k = 0; k < sv_count; k++ ) - sum += df->alpha[k]*buffer[df->sv_index[k]]; + Mat getSupportVectors() const + { + return sv; + } - vote[sum > 0 ? i : j]++; - } - } + void setParams( const Params& _params, const Ptr& _kernel ) + { + params = _params; - for( i = 1, k = 0; i < class_count; i++ ) - { - if( vote[i] > vote[k] ) - k = i; - } - result = returnDFVal && class_count == 2 ? (float)sum : (float)(class_labels->data.i[k]); - } - else - CV_Error( CV_StsBadArg, "INTERNAL ERROR: Unknown SVM type, " - "the SVM structure is probably corrupted" ); + int kernelType = params.kernelType; + int svmType = params.svmType; - return result; -} + if( kernelType != LINEAR && kernelType != POLY && + kernelType != SIGMOID && kernelType != RBF && + kernelType != INTER && kernelType != CHI2) + CV_Error( CV_StsBadArg, "Unknown/unsupported kernel type" ); -float CvSVM::predict( const CvMat* sample, bool returnDFVal ) const -{ - float result = 0; - float* row_sample = 0; + if( kernelType == LINEAR ) + params.gamma = 1; + else if( params.gamma <= 0 ) + CV_Error( CV_StsOutOfRange, "gamma parameter of the kernel must be positive" ); - CV_FUNCNAME( "CvSVM::predict" ); + if( kernelType != SIGMOID && kernelType != POLY ) + params.coef0 = 0; + else if( params.coef0 < 0 ) + CV_Error( CV_StsOutOfRange, "The kernel parameter must be positive or zero" ); - __BEGIN__; + if( kernelType != POLY ) + params.degree = 0; + else if( params.degree <= 0 ) + CV_Error( CV_StsOutOfRange, "The kernel parameter must be positive" ); - int class_count; + if( svmType != C_SVC && svmType != NU_SVC && + svmType != ONE_CLASS && svmType != EPS_SVR && + svmType != NU_SVR ) + CV_Error( CV_StsBadArg, "Unknown/unsupported SVM type" ); - if( !kernel ) - CV_ERROR( CV_StsBadArg, "The SVM should be trained first" ); + if( svmType == ONE_CLASS || svmType == NU_SVC ) + params.C = 0; + else if( params.C <= 0 ) + CV_Error( CV_StsOutOfRange, "The parameter C must be positive" ); - class_count = class_labels ? class_labels->cols : - params.svm_type == ONE_CLASS ? 1 : 0; + if( svmType == C_SVC || svmType == EPS_SVR ) + params.nu = 0; + else if( params.nu <= 0 || params.nu >= 1 ) + CV_Error( CV_StsOutOfRange, "The parameter nu must be between 0 and 1" ); - CV_CALL( cvPreparePredictData( sample, var_all, var_idx, - class_count, 0, &row_sample )); - result = predict( row_sample, get_var_count(), returnDFVal ); + if( svmType != EPS_SVR ) + params.p = 0; + else if( params.p <= 0 ) + CV_Error( CV_StsOutOfRange, "The parameter p must be positive" ); - __END__; + if( svmType != C_SVC ) + params.classWeights.release(); - if( sample && (!CV_IS_MAT(sample) || sample->data.fl != row_sample) ) - cvFree( &row_sample ); + termCrit = params.termCrit; + if( !(termCrit.type & TermCriteria::EPS) ) + termCrit.epsilon = DBL_EPSILON; + termCrit.epsilon = std::max(termCrit.epsilon, DBL_EPSILON); + if( !(termCrit.type & TermCriteria::COUNT) ) + termCrit.maxCount = INT_MAX; + termCrit.maxCount = std::max(termCrit.maxCount, 1); - return result; -} + if( _kernel ) + kernel = _kernel; + else + kernel = makePtr(params); + } -struct predict_body_svm : ParallelLoopBody { - predict_body_svm(const CvSVM* _pointer, float* _result, const CvMat* _samples, CvMat* _results, bool _returnDFVal) + Params getParams() const { - pointer = _pointer; - result = _result; - samples = _samples; - results = _results; - returnDFVal = _returnDFVal; + return params; } - const CvSVM* pointer; - float* result; - const CvMat* samples; - CvMat* results; - bool returnDFVal; - - void operator()( const cv::Range& range ) const + Ptr getKernel() const { - for(int i = range.start; i < range.end; i++ ) - { - CvMat sample; - cvGetRow( samples, &sample, i ); - int r = (int)pointer->predict(&sample, returnDFVal); - if (results) - results->data.fl[i] = (float)r; - if (i == 0) - *result = (float)r; + return kernel; } + + int getSVCount(int i) const + { + return (i < (int)(decision_func.size()-1) ? decision_func[i+1].ofs : + (int)df_index.size()) - decision_func[i].ofs; } -}; -float CvSVM::predict(const CvMat* samples, CV_OUT CvMat* results, bool returnDFVal) const -{ - float result = 0; - cv::parallel_for_(cv::Range(0, samples->rows), - predict_body_svm(this, &result, samples, results, returnDFVal) - ); - return result; -} + bool do_train( const Mat& _samples, const Mat& _responses ) + { + int svmType = params.svmType; + int i, j, k, sample_count = _samples.rows; + vector _alpha; + Solver::SolutionInfo sinfo; -void CvSVM::predict( cv::InputArray _samples, cv::OutputArray _results ) const -{ - _results.create(_samples.size().height, 1, CV_32F); - CvMat samples = _samples.getMat(), results = _results.getMat(); - predict(&samples, &results); -} + CV_Assert( _samples.type() == CV_32F ); + var_count = _samples.cols; -CvSVM::CvSVM( const Mat& _train_data, const Mat& _responses, - const Mat& _var_idx, const Mat& _sample_idx, CvSVMParams _params ) -{ - decision_func = 0; - class_labels = 0; - class_weights = 0; - storage = 0; - var_idx = 0; - kernel = 0; - solver = 0; - default_model_name = "my_svm"; - - train( _train_data, _responses, _var_idx, _sample_idx, _params ); -} + if( svmType == ONE_CLASS || svmType == EPS_SVR || svmType == NU_SVR ) + { + int sv_count = 0; + decision_func.clear(); -bool CvSVM::train( const Mat& _train_data, const Mat& _responses, - const Mat& _var_idx, const Mat& _sample_idx, CvSVMParams _params ) -{ - CvMat tdata = _train_data, responses = _responses, vidx = _var_idx, sidx = _sample_idx; - return train(&tdata, &responses, vidx.data.ptr ? &vidx : 0, sidx.data.ptr ? &sidx : 0, _params); -} + vector _yf; + if( !_responses.empty() ) + _responses.convertTo(_yf, CV_32F); + bool ok = + (svmType == ONE_CLASS ? Solver::solve_one_class( _samples, params.nu, kernel, _alpha, sinfo, termCrit ) : + svmType == EPS_SVR ? Solver::solve_eps_svr( _samples, _yf, params.p, params.C, kernel, _alpha, sinfo, termCrit ) : + svmType == NU_SVR ? Solver::solve_nu_svr( _samples, _yf, params.nu, params.C, kernel, _alpha, sinfo, termCrit ) : false); -bool CvSVM::train_auto( const Mat& _train_data, const Mat& _responses, - const Mat& _var_idx, const Mat& _sample_idx, CvSVMParams _params, int k_fold, - CvParamGrid C_grid, CvParamGrid gamma_grid, CvParamGrid p_grid, - CvParamGrid nu_grid, CvParamGrid coef_grid, CvParamGrid degree_grid, bool balanced ) -{ - CvMat tdata = _train_data, responses = _responses, vidx = _var_idx, sidx = _sample_idx; - return train_auto(&tdata, &responses, vidx.data.ptr ? &vidx : 0, - sidx.data.ptr ? &sidx : 0, _params, k_fold, C_grid, gamma_grid, p_grid, - nu_grid, coef_grid, degree_grid, balanced); -} + if( !ok ) + return false; -float CvSVM::predict( const Mat& _sample, bool returnDFVal ) const -{ - CvMat sample = _sample; - return predict(&sample, returnDFVal); -} + for( i = 0; i < sample_count; i++ ) + sv_count += fabs(_alpha[i]) > 0; + CV_Assert(sv_count != 0); -void CvSVM::write_params( CvFileStorage* fs ) const -{ - //CV_FUNCNAME( "CvSVM::write_params" ); + sv.create(sv_count, _samples.cols, CV_32F); + df_alpha.resize(sv_count); + df_index.resize(sv_count); - __BEGIN__; + for( i = k = 0; i < sample_count; i++ ) + { + if( std::abs(_alpha[i]) > 0 ) + { + _samples.row(i).copyTo(sv.row(k)); + df_alpha[k] = _alpha[i]; + df_index[k] = k; + k++; + } + } - int svm_type = params.svm_type; - int kernel_type = params.kernel_type; + decision_func.push_back(DecisionFunc(sinfo.rho, 0)); + } + else + { + int class_count = (int)class_labels.total(); + vector svidx, sidx, sidx_all, sv_tab(sample_count, 0); + Mat temp_samples, class_weights; + vector class_ranges; + vector temp_y; + double nu = params.nu; + CV_Assert( svmType == C_SVC || svmType == NU_SVC ); + + if( svmType == C_SVC && !params.classWeights.empty() ) + { + const Mat cw = params.classWeights; - const char* svm_type_str = - svm_type == CvSVM::C_SVC ? "C_SVC" : - svm_type == CvSVM::NU_SVC ? "NU_SVC" : - svm_type == CvSVM::ONE_CLASS ? "ONE_CLASS" : - svm_type == CvSVM::EPS_SVR ? "EPS_SVR" : - svm_type == CvSVM::NU_SVR ? "NU_SVR" : 0; - const char* kernel_type_str = - kernel_type == CvSVM::LINEAR ? "LINEAR" : - kernel_type == CvSVM::POLY ? "POLY" : - kernel_type == CvSVM::RBF ? "RBF" : - kernel_type == CvSVM::SIGMOID ? "SIGMOID" : 0; + if( (cw.cols != 1 && cw.rows != 1) || + (int)cw.total() != class_count || + (cw.type() != CV_32F && cw.type() != CV_64F) ) + CV_Error( CV_StsBadArg, "params.class_weights must be 1d floating-point vector " + "containing as many elements as the number of classes" ); - if( svm_type_str ) - cvWriteString( fs, "svm_type", svm_type_str ); - else - cvWriteInt( fs, "svm_type", svm_type ); + cw.convertTo(class_weights, CV_64F, params.C); + //normalize(cw, class_weights, params.C, 0, NORM_L1, CV_64F); + } - // save kernel - cvStartWriteStruct( fs, "kernel", CV_NODE_MAP + CV_NODE_FLOW ); + decision_func.clear(); + df_alpha.clear(); + df_index.clear(); - if( kernel_type_str ) - cvWriteString( fs, "type", kernel_type_str ); - else - cvWriteInt( fs, "type", kernel_type ); + sortSamplesByClasses( _samples, _responses, sidx_all, class_ranges ); - if( kernel_type == CvSVM::POLY || !kernel_type_str ) - cvWriteReal( fs, "degree", params.degree ); + //check that while cross-validation there were the samples from all the classes + if( class_ranges[class_count] <= 0 ) + CV_Error( CV_StsBadArg, "While cross-validation one or more of the classes have " + "been fell out of the sample. Try to enlarge " ); - if( kernel_type != CvSVM::LINEAR || !kernel_type_str ) - cvWriteReal( fs, "gamma", params.gamma ); + if( svmType == NU_SVC ) + { + // check if nu is feasible + for( i = 0; i < class_count; i++ ) + { + int ci = class_ranges[i+1] - class_ranges[i]; + for( j = i+1; j< class_count; j++ ) + { + int cj = class_ranges[j+1] - class_ranges[j]; + if( nu*(ci + cj)*0.5 > std::min( ci, cj ) ) + // TODO: add some diagnostic + return false; + } + } + } - if( kernel_type == CvSVM::POLY || kernel_type == CvSVM::SIGMOID || !kernel_type_str ) - cvWriteReal( fs, "coef0", params.coef0 ); + size_t samplesize = _samples.cols*_samples.elemSize(); - cvEndWriteStruct(fs); + // train n*(n-1)/2 classifiers + for( i = 0; i < class_count; i++ ) + { + for( j = i+1; j < class_count; j++ ) + { + int si = class_ranges[i], ci = class_ranges[i+1] - si; + int sj = class_ranges[j], cj = class_ranges[j+1] - sj; + double Cp = params.C, Cn = Cp; - if( svm_type == CvSVM::C_SVC || svm_type == CvSVM::EPS_SVR || - svm_type == CvSVM::NU_SVR || !svm_type_str ) - cvWriteReal( fs, "C", params.C ); + temp_samples.create(ci + cj, _samples.cols, _samples.type()); + sidx.resize(ci + cj); + temp_y.resize(ci + cj); - if( svm_type == CvSVM::NU_SVC || svm_type == CvSVM::ONE_CLASS || - svm_type == CvSVM::NU_SVR || !svm_type_str ) - cvWriteReal( fs, "nu", params.nu ); + // form input for the binary classification problem + for( k = 0; k < ci+cj; k++ ) + { + int idx = k < ci ? si+k : sj+k-ci; + memcpy(temp_samples.ptr(k), _samples.ptr(sidx_all[idx]), samplesize); + sidx[k] = sidx_all[idx]; + temp_y[k] = k < ci ? 1 : -1; + } - if( svm_type == CvSVM::EPS_SVR || !svm_type_str ) - cvWriteReal( fs, "p", params.p ); + if( !class_weights.empty() ) + { + Cp = class_weights.at(i); + Cn = class_weights.at(j); + } - cvStartWriteStruct( fs, "term_criteria", CV_NODE_MAP + CV_NODE_FLOW ); - if( params.term_crit.type & CV_TERMCRIT_EPS ) - cvWriteReal( fs, "epsilon", params.term_crit.epsilon ); - if( params.term_crit.type & CV_TERMCRIT_ITER ) - cvWriteInt( fs, "iterations", params.term_crit.max_iter ); - cvEndWriteStruct( fs ); + DecisionFunc df; + bool ok = params.svmType == C_SVC ? + Solver::solve_c_svc( temp_samples, temp_y, Cp, Cn, + kernel, _alpha, sinfo, termCrit ) : + params.svmType == NU_SVC ? + Solver::solve_nu_svc( temp_samples, temp_y, params.nu, + kernel, _alpha, sinfo, termCrit ) : + false; + if( !ok ) + return false; + df.rho = sinfo.rho; + df.ofs = (int)df_index.size(); + decision_func.push_back(df); + + for( k = 0; k < ci + cj; k++ ) + { + if( std::abs(_alpha[k]) > 0 ) + { + int idx = k < ci ? si+k : sj+k-ci; + sv_tab[sidx_all[idx]] = 1; + df_index.push_back(sidx_all[idx]); + df_alpha.push_back(_alpha[k]); + } + } + } + } - __END__; -} + // allocate support vectors and initialize sv_tab + for( i = 0, k = 0; i < sample_count; i++ ) + { + if( sv_tab[i] ) + sv_tab[i] = ++k; + } + int sv_total = k; + sv.create(sv_total, _samples.cols, _samples.type()); -static bool isSvmModelApplicable(int sv_total, int var_all, int var_count, int class_count) -{ - return (sv_total > 0 && var_count > 0 && var_count <= var_all && class_count >= 0); -} + for( i = 0; i < sample_count; i++ ) + { + if( !sv_tab[i] ) + continue; + memcpy(sv.ptr(sv_tab[i]-1), _samples.ptr(i), samplesize); + } + // set sv pointers + int n = (int)df_index.size(); + for( i = 0; i < n; i++ ) + { + CV_Assert( sv_tab[df_index[i]] > 0 ); + df_index[i] = sv_tab[df_index[i]] - 1; + } + } -void CvSVM::write( CvFileStorage* fs, const char* name ) const -{ - CV_FUNCNAME( "CvSVM::write" ); + optimize_linear_svm(); + return true; + } - __BEGIN__; + void optimize_linear_svm() + { + // we optimize only linear SVM: compress all the support vectors into one. + if( params.kernelType != LINEAR ) + return; - int i, var_count = get_var_count(), df_count; - int class_count = class_labels ? class_labels->cols : - params.svm_type == CvSVM::ONE_CLASS ? 1 : 0; - const CvSVMDecisionFunc* df = decision_func; - if( !isSvmModelApplicable(sv_total, var_all, var_count, class_count) ) - CV_ERROR( CV_StsParseError, "SVM model data is invalid, check sv_count, var_* and class_count tags" ); + int i, df_count = (int)decision_func.size(); - cvStartWriteStruct( fs, name, CV_NODE_MAP, CV_TYPE_NAME_ML_SVM ); + for( i = 0; i < df_count; i++ ) + { + if( getSVCount(i) != 1 ) + break; + } - write_params( fs ); + // if every decision functions uses a single support vector; + // it's already compressed. skip it then. + if( i == df_count ) + return; - cvWriteInt( fs, "var_all", var_all ); - cvWriteInt( fs, "var_count", var_count ); + AutoBuffer vbuf(var_count); + double* v = vbuf; + Mat new_sv(df_count, var_count, CV_32F); - if( class_count ) - { - cvWriteInt( fs, "class_count", class_count ); + vector new_df; - if( class_labels ) - cvWrite( fs, "class_labels", class_labels ); + for( i = 0; i < df_count; i++ ) + { + float* dst = new_sv.ptr(i); + memset(v, 0, var_count*sizeof(v[0])); + int j, k, sv_count = getSVCount(i); + const DecisionFunc& df = decision_func[i]; + const int* sv_index = &df_index[df.ofs]; + const double* sv_alpha = &df_alpha[df.ofs]; + for( j = 0; j < sv_count; j++ ) + { + const float* src = sv.ptr(sv_index[j]); + double a = sv_alpha[j]; + for( k = 0; k < var_count; k++ ) + v[k] += src[k]*a; + } + for( k = 0; k < var_count; k++ ) + dst[k] = (float)v[k]; + new_df.push_back(DecisionFunc(df.rho, i)); + } - if( class_weights ) - cvWrite( fs, "class_weights", class_weights ); + setRangeVector(df_index, df_count); + df_alpha.assign(df_count, 1.); + std::swap(sv, new_sv); + std::swap(decision_func, new_df); } - if( var_idx ) - cvWrite( fs, "var_idx", var_idx ); - - // write the joint collection of support vectors - cvWriteInt( fs, "sv_total", sv_total ); - cvStartWriteStruct( fs, "support_vectors", CV_NODE_SEQ ); - for( i = 0; i < sv_total; i++ ) + bool train( const Ptr& data, int ) { - cvStartWriteStruct( fs, 0, CV_NODE_SEQ + CV_NODE_FLOW ); - cvWriteRawData( fs, sv[i], var_count, "f" ); - cvEndWriteStruct( fs ); - } - - cvEndWriteStruct( fs ); + clear(); - // write decision functions - df_count = class_count > 1 ? class_count*(class_count-1)/2 : 1; - df = decision_func; + int svmType = params.svmType; + Mat samples = data->getTrainSamples(); + Mat responses; - cvStartWriteStruct( fs, "decision_functions", CV_NODE_SEQ ); - for( i = 0; i < df_count; i++ ) - { - int sv_count = df[i].sv_count; - cvStartWriteStruct( fs, 0, CV_NODE_MAP ); - cvWriteInt( fs, "sv_count", sv_count ); - cvWriteReal( fs, "rho", df[i].rho ); - cvStartWriteStruct( fs, "alpha", CV_NODE_SEQ+CV_NODE_FLOW ); - cvWriteRawData( fs, df[i].alpha, df[i].sv_count, "d" ); - cvEndWriteStruct( fs ); - if( class_count > 1 ) + if( svmType == C_SVC || svmType == NU_SVC ) { - cvStartWriteStruct( fs, "index", CV_NODE_SEQ+CV_NODE_FLOW ); - cvWriteRawData( fs, df[i].sv_index, df[i].sv_count, "i" ); - cvEndWriteStruct( fs ); + responses = data->getTrainNormCatResponses(); + class_labels = data->getClassLabels(); } else - CV_ASSERT( sv_count == sv_total ); - cvEndWriteStruct( fs ); - } - cvEndWriteStruct( fs ); - cvEndWriteStruct( fs ); - - __END__; -} - + responses = data->getTrainResponses(); -void CvSVM::read_params( CvFileStorage* fs, CvFileNode* svm_node ) -{ - CV_FUNCNAME( "CvSVM::read_params" ); + if( !do_train( samples, responses )) + { + clear(); + return false; + } - __BEGIN__; + return true; + } - int svm_type, kernel_type; - CvSVMParams _params; + bool trainAuto( const Ptr& data, int k_fold, + ParamGrid C_grid, ParamGrid gamma_grid, ParamGrid p_grid, + ParamGrid nu_grid, ParamGrid coef_grid, ParamGrid degree_grid, + bool balanced ) + { + int svmType = params.svmType; + RNG rng(-1); - CvFileNode* tmp_node = cvGetFileNodeByName( fs, svm_node, "svm_type" ); - CvFileNode* kernel_node; - if( !tmp_node ) - CV_ERROR( CV_StsBadArg, "svm_type tag is not found" ); + if( svmType == ONE_CLASS ) + // current implementation of "auto" svm does not support the 1-class case. + return train( data, 0 ); - if( CV_NODE_TYPE(tmp_node->tag) == CV_NODE_INT ) - svm_type = cvReadInt( tmp_node, -1 ); - else - { - const char* svm_type_str = cvReadString( tmp_node, "" ); - svm_type = - strcmp( svm_type_str, "C_SVC" ) == 0 ? CvSVM::C_SVC : - strcmp( svm_type_str, "NU_SVC" ) == 0 ? CvSVM::NU_SVC : - strcmp( svm_type_str, "ONE_CLASS" ) == 0 ? CvSVM::ONE_CLASS : - strcmp( svm_type_str, "EPS_SVR" ) == 0 ? CvSVM::EPS_SVR : - strcmp( svm_type_str, "NU_SVR" ) == 0 ? CvSVM::NU_SVR : -1; - - if( svm_type < 0 ) - CV_ERROR( CV_StsParseError, "Missing of invalid SVM type" ); - } + clear(); - kernel_node = cvGetFileNodeByName( fs, svm_node, "kernel" ); - if( !kernel_node ) - CV_ERROR( CV_StsParseError, "SVM kernel tag is not found" ); + CV_Assert( k_fold >= 2 ); + + // All the parameters except, possibly, are positive. + // is nonnegative + #define CHECK_GRID(grid, param) \ + if( grid.logStep <= 1 ) \ + { \ + grid.minVal = grid.maxVal = params.param; \ + grid.logStep = 10; \ + } \ + else \ + checkParamGrid(grid) + + CHECK_GRID(C_grid, C); + CHECK_GRID(gamma_grid, gamma); + CHECK_GRID(p_grid, p); + CHECK_GRID(nu_grid, nu); + CHECK_GRID(coef_grid, coef0); + CHECK_GRID(degree_grid, degree); + + // these parameters are not used: + if( params.kernelType != POLY ) + degree_grid.minVal = degree_grid.maxVal = params.degree; + if( params.kernelType == LINEAR ) + gamma_grid.minVal = gamma_grid.maxVal = params.gamma; + if( params.kernelType != POLY && params.kernelType != SIGMOID ) + coef_grid.minVal = coef_grid.maxVal = params.coef0; + if( svmType == NU_SVC || svmType == ONE_CLASS ) + C_grid.minVal = C_grid.maxVal = params.C; + if( svmType == C_SVC || svmType == EPS_SVR ) + nu_grid.minVal = nu_grid.maxVal = params.nu; + if( svmType != EPS_SVR ) + p_grid.minVal = p_grid.maxVal = params.p; + + Mat samples = data->getTrainSamples(); + Mat responses; + bool is_classification = false; + Mat class_labels0 = class_labels; + int class_count = (int)class_labels.total(); + + if( svmType == C_SVC || svmType == NU_SVC ) + { + responses = data->getTrainNormCatResponses(); + class_labels = data->getClassLabels(); + is_classification = true; - tmp_node = cvGetFileNodeByName( fs, kernel_node, "type" ); - if( !tmp_node ) - CV_ERROR( CV_StsParseError, "SVM kernel type tag is not found" ); + vector temp_class_labels; + setRangeVector(temp_class_labels, class_count); - if( CV_NODE_TYPE(tmp_node->tag) == CV_NODE_INT ) - kernel_type = cvReadInt( tmp_node, -1 ); - else - { - const char* kernel_type_str = cvReadString( tmp_node, "" ); - kernel_type = - strcmp( kernel_type_str, "LINEAR" ) == 0 ? CvSVM::LINEAR : - strcmp( kernel_type_str, "POLY" ) == 0 ? CvSVM::POLY : - strcmp( kernel_type_str, "RBF" ) == 0 ? CvSVM::RBF : - strcmp( kernel_type_str, "SIGMOID" ) == 0 ? CvSVM::SIGMOID : -1; - - if( kernel_type < 0 ) - CV_ERROR( CV_StsParseError, "Missing of invalid SVM kernel type" ); - } + // temporarily replace class labels with 0, 1, ..., NCLASSES-1 + Mat(temp_class_labels).copyTo(class_labels); + } + else + responses = data->getTrainResponses(); - _params.svm_type = svm_type; - _params.kernel_type = kernel_type; - _params.degree = cvReadRealByName( fs, kernel_node, "degree", 0 ); - _params.gamma = cvReadRealByName( fs, kernel_node, "gamma", 0 ); - _params.coef0 = cvReadRealByName( fs, kernel_node, "coef0", 0 ); + CV_Assert(samples.type() == CV_32F); - _params.C = cvReadRealByName( fs, svm_node, "C", 0 ); - _params.nu = cvReadRealByName( fs, svm_node, "nu", 0 ); - _params.p = cvReadRealByName( fs, svm_node, "p", 0 ); - _params.class_weights = 0; + int sample_count = samples.rows; + var_count = samples.cols; + size_t sample_size = var_count*samples.elemSize(); - tmp_node = cvGetFileNodeByName( fs, svm_node, "term_criteria" ); - if( tmp_node ) - { - _params.term_crit.epsilon = cvReadRealByName( fs, tmp_node, "epsilon", -1. ); - _params.term_crit.max_iter = cvReadIntByName( fs, tmp_node, "iterations", -1 ); - _params.term_crit.type = (_params.term_crit.epsilon >= 0 ? CV_TERMCRIT_EPS : 0) + - (_params.term_crit.max_iter >= 0 ? CV_TERMCRIT_ITER : 0); - } - else - _params.term_crit = cvTermCriteria( CV_TERMCRIT_EPS + CV_TERMCRIT_ITER, 1000, FLT_EPSILON ); + vector sidx; + setRangeVector(sidx, sample_count); - set_params( _params ); + int i, j, k; - __END__; -} + // randomly permute training samples + for( i = 0; i < sample_count; i++ ) + { + int i1 = rng.uniform(0, sample_count); + int i2 = rng.uniform(0, sample_count); + std::swap(sidx[i1], sidx[i2]); + } -void CvSVM::read( CvFileStorage* fs, CvFileNode* svm_node ) -{ - const double not_found_dbl = DBL_MAX; + if( is_classification && class_count == 2 && balanced ) + { + // reshuffle the training set in such a way that + // instances of each class are divided more or less evenly + // between the k_fold parts. + vector sidx0, sidx1; - CV_FUNCNAME( "CvSVM::read" ); + for( i = 0; i < sample_count; i++ ) + { + if( responses.at(sidx[i]) == 0 ) + sidx0.push_back(sidx[i]); + else + sidx1.push_back(sidx[i]); + } - __BEGIN__; + int n0 = (int)sidx0.size(), n1 = (int)sidx1.size(); + int a0 = 0, a1 = 0; + sidx.clear(); + for( k = 0; k < k_fold; k++ ) + { + int b0 = ((k+1)*n0 + k_fold/2)/k_fold, b1 = ((k+1)*n1 + k_fold/2)/k_fold; + int a = (int)sidx.size(), b = a + (b0 - a0) + (b1 - a1); + for( i = a0; i < b0; i++ ) + sidx.push_back(sidx0[i]); + for( i = a1; i < b1; i++ ) + sidx.push_back(sidx1[i]); + for( i = 0; i < (b - a); i++ ) + { + int i1 = rng.uniform(a, b); + int i2 = rng.uniform(a, b); + std::swap(sidx[i1], sidx[i2]); + } + a0 = b0; a1 = b1; + } + } - int i, var_count, df_count, class_count; - int block_size = 1 << 16, sv_size; - CvFileNode *sv_node, *df_node; - CvSVMDecisionFunc* df; - CvSeqReader reader; + int test_sample_count = (sample_count + k_fold/2)/k_fold; + int train_sample_count = sample_count - test_sample_count; - if( !svm_node ) - CV_ERROR( CV_StsParseError, "The requested element is not found" ); + Params best_params = params; + double min_error = FLT_MAX; - clear(); + int rtype = responses.type(); - // read SVM parameters - read_params( fs, svm_node ); + Mat temp_train_samples(train_sample_count, var_count, CV_32F); + Mat temp_test_samples(test_sample_count, var_count, CV_32F); + Mat temp_train_responses(train_sample_count, 1, rtype); + Mat temp_test_responses; - // and top-level data - sv_total = cvReadIntByName( fs, svm_node, "sv_total", -1 ); - var_all = cvReadIntByName( fs, svm_node, "var_all", -1 ); - var_count = cvReadIntByName( fs, svm_node, "var_count", var_all ); - class_count = cvReadIntByName( fs, svm_node, "class_count", 0 ); + #define FOR_IN_GRID(var, grid) \ + for( params.var = grid.minVal; params.var == grid.minVal || params.var < grid.maxVal; params.var *= grid.logStep ) - if( !isSvmModelApplicable(sv_total, var_all, var_count, class_count) ) - CV_ERROR( CV_StsParseError, "SVM model data is invalid, check sv_count, var_* and class_count tags" ); + FOR_IN_GRID(C, C_grid) + FOR_IN_GRID(gamma, gamma_grid) + FOR_IN_GRID(p, p_grid) + FOR_IN_GRID(nu, nu_grid) + FOR_IN_GRID(coef0, coef_grid) + FOR_IN_GRID(degree, degree_grid) + { + double error = 0; + for( k = 0; k < k_fold; k++ ) + { + int start = (k*sample_count + k_fold/2)/k_fold; + for( i = 0; i < train_sample_count; i++ ) + { + j = sidx[(i+start)%sample_count]; + memcpy(temp_train_samples.ptr(i), samples.ptr(j), sample_size); + if( is_classification ) + temp_train_responses.at(i) = responses.at(j); + else if( !responses.empty() ) + temp_train_responses.at(i) = responses.at(j); + } - CV_CALL( class_labels = (CvMat*)cvReadByName( fs, svm_node, "class_labels" )); - CV_CALL( class_weights = (CvMat*)cvReadByName( fs, svm_node, "class_weights" )); - CV_CALL( var_idx = (CvMat*)cvReadByName( fs, svm_node, "var_idx" )); + // Train SVM on samples + if( !do_train( temp_train_samples, temp_train_responses )) + continue; - if( class_count > 1 && (!class_labels || - !CV_IS_MAT(class_labels) || class_labels->cols != class_count)) - CV_ERROR( CV_StsParseError, "Array of class labels is missing or invalid" ); + for( i = 0; i < test_sample_count; i++ ) + { + j = sidx[(i+start+train_sample_count) % sample_count]; + memcpy(temp_train_samples.ptr(i), samples.ptr(j), sample_size); + } - if( var_count < var_all && (!var_idx || !CV_IS_MAT(var_idx) || var_idx->cols != var_count) ) - CV_ERROR( CV_StsParseError, "var_idx array is missing or invalid" ); + predict(temp_test_samples, temp_test_responses, 0); + for( i = 0; i < test_sample_count; i++ ) + { + float val = temp_test_responses.at(i); + j = sidx[(i+start+train_sample_count) % sample_count]; + if( is_classification ) + error += (float)(val != responses.at(j)); + else + { + val -= responses.at(j); + error += val*val; + } + } + } + if( min_error > error ) + { + min_error = error; + best_params = params; + } + } - // read support vectors - sv_node = cvGetFileNodeByName( fs, svm_node, "support_vectors" ); - if( !sv_node || !CV_NODE_IS_SEQ(sv_node->tag)) - CV_ERROR( CV_StsParseError, "Missing or invalid sequence of support vectors" ); + params = best_params; + class_labels = class_labels0; + return do_train( samples, responses ); + } - block_size = MAX( block_size, sv_total*(int)sizeof(CvSVMKernelRow)); - block_size = MAX( block_size, sv_total*2*(int)sizeof(double)); - block_size = MAX( block_size, var_all*(int)sizeof(double)); + struct PredictBody : ParallelLoopBody + { + PredictBody( const SVMImpl* _svm, const Mat& _samples, Mat& _results, bool _returnDFVal ) + { + svm = _svm; + results = &_results; + samples = &_samples; + returnDFVal = _returnDFVal; + } - CV_CALL( storage = cvCreateMemStorage(block_size + sizeof(CvMemBlock) + sizeof(CvSeqBlock))); - CV_CALL( sv = (float**)cvMemStorageAlloc( storage, - sv_total*sizeof(sv[0]) )); + void operator()( const Range& range ) const + { + int svmType = svm->params.svmType; + int sv_total = svm->sv.rows; + int class_count = !svm->class_labels.empty() ? svm->class_labels.cols : svmType == ONE_CLASS ? 1 : 0; - CV_CALL( cvStartReadSeq( sv_node->data.seq, &reader, 0 )); - sv_size = var_count*sizeof(sv[0][0]); + AutoBuffer _buffer(sv_total + (class_count+1)*2); + float* buffer = _buffer; - for( i = 0; i < sv_total; i++ ) - { - CvFileNode* sv_elem = (CvFileNode*)reader.ptr; - CV_ASSERT( var_count == 1 || (CV_NODE_IS_SEQ(sv_elem->tag) && - sv_elem->data.seq->total == var_count) ); + int i, j, dfi, k, si; - CV_CALL( sv[i] = (float*)cvMemStorageAlloc( storage, sv_size )); - CV_CALL( cvReadRawData( fs, sv_elem, sv[i], "f" )); - CV_NEXT_SEQ_ELEM( sv_node->data.seq->elem_size, reader ); - } + if( svmType == EPS_SVR || svmType == NU_SVR || svmType == ONE_CLASS ) + { + for( si = range.start; si < range.end; si++ ) + { + const float* row_sample = samples->ptr(si); + svm->kernel->calc( sv_total, svm->var_count, svm->sv.ptr(), row_sample, buffer ); + + const SVMImpl::DecisionFunc* df = &svm->decision_func[0]; + double sum = -df->rho; + for( i = 0; i < sv_total; i++ ) + sum += buffer[i]*svm->df_alpha[i]; + float result = svm->params.svmType == ONE_CLASS && !returnDFVal ? (float)(sum > 0) : (float)sum; + results->at(si) = result; + } + } + else if( svmType == C_SVC || svmType == NU_SVC ) + { + int* vote = (int*)(buffer + sv_total); - // read decision functions - df_count = class_count > 1 ? class_count*(class_count-1)/2 : 1; - df_node = cvGetFileNodeByName( fs, svm_node, "decision_functions" ); - if( !df_node || !CV_NODE_IS_SEQ(df_node->tag) || - df_node->data.seq->total != df_count ) - CV_ERROR( CV_StsParseError, "decision_functions is missing or is not a collection " - "or has a wrong number of elements" ); + for( si = range.start; si < range.end; si++ ) + { + svm->kernel->calc( sv_total, svm->var_count, svm->sv.ptr(), + samples->ptr(si), buffer ); + double sum = 0.; - CV_CALL( df = decision_func = (CvSVMDecisionFunc*)cvAlloc( df_count*sizeof(df[0]) )); - cvStartReadSeq( df_node->data.seq, &reader, 0 ); + memset( vote, 0, class_count*sizeof(vote[0])); - for( i = 0; i < df_count; i++ ) - { - CvFileNode* df_elem = (CvFileNode*)reader.ptr; - CvFileNode* alpha_node = cvGetFileNodeByName( fs, df_elem, "alpha" ); + for( i = dfi = 0; i < class_count; i++ ) + { + for( j = i+1; j < class_count; j++, dfi++ ) + { + const DecisionFunc& df = svm->decision_func[dfi]; + sum = -df.rho; + int sv_count = svm->getSVCount(dfi); + const double* alpha = &svm->df_alpha[df.ofs]; + const int* sv_index = &svm->df_index[df.ofs]; + for( k = 0; k < sv_count; k++ ) + sum += alpha[k]*buffer[sv_index[k]]; + + vote[sum > 0 ? i : j]++; + } + } - int sv_count = cvReadIntByName( fs, df_elem, "sv_count", -1 ); - if( sv_count <= 0 ) - CV_ERROR( CV_StsParseError, "sv_count is missing or non-positive" ); - df[i].sv_count = sv_count; + for( i = 1, k = 0; i < class_count; i++ ) + { + if( vote[i] > vote[k] ) + k = i; + } + float result = returnDFVal && class_count == 2 ? + (float)sum : (float)(svm->class_labels.at(k)); + results->at(si) = result; + } + } + else + CV_Error( CV_StsBadArg, "INTERNAL ERROR: Unknown SVM type, " + "the SVM structure is probably corrupted" ); + } - df[i].rho = cvReadRealByName( fs, df_elem, "rho", not_found_dbl ); - if( fabs(df[i].rho - not_found_dbl) < DBL_EPSILON ) - CV_ERROR( CV_StsParseError, "rho is missing" ); + const SVMImpl* svm; + const Mat* samples; + Mat* results; + bool returnDFVal; + }; - if( !alpha_node ) - CV_ERROR( CV_StsParseError, "alpha is missing in the decision function" ); + float predict( InputArray _samples, OutputArray _results, int flags ) const + { + float result = 0; + Mat samples = _samples.getMat(), results; + int nsamples = samples.rows; + bool returnDFVal = (flags & RAW_OUTPUT) != 0; - CV_CALL( df[i].alpha = (double*)cvMemStorageAlloc( storage, - sv_count*sizeof(df[i].alpha[0]))); - CV_ASSERT( sv_count == 1 || (CV_NODE_IS_SEQ(alpha_node->tag) && - alpha_node->data.seq->total == sv_count) ); - CV_CALL( cvReadRawData( fs, alpha_node, df[i].alpha, "d" )); + CV_Assert( samples.cols == var_count && samples.type() == CV_32F ); - if( class_count > 1 ) + if( _results.needed() ) + { + _results.create( nsamples, 1, samples.type() ); + results = _results.getMat(); + } + else { - CvFileNode* index_node = cvGetFileNodeByName( fs, df_elem, "index" ); - if( !index_node ) - CV_ERROR( CV_StsParseError, "index is missing in the decision function" ); - CV_CALL( df[i].sv_index = (int*)cvMemStorageAlloc( storage, - sv_count*sizeof(df[i].sv_index[0]))); - CV_ASSERT( sv_count == 1 || (CV_NODE_IS_SEQ(index_node->tag) && - index_node->data.seq->total == sv_count) ); - CV_CALL( cvReadRawData( fs, index_node, df[i].sv_index, "i" )); + CV_Assert( nsamples == 1 ); + results = Mat(1, 1, CV_32F, &result); } + + PredictBody invoker(this, samples, results, returnDFVal); + if( nsamples < 10 ) + invoker(Range(0, nsamples)); else - df[i].sv_index = 0; + parallel_for_(Range(0, nsamples), invoker); + return result; + } - CV_NEXT_SEQ_ELEM( df_node->data.seq->elem_size, reader ); + double getDecisionFunction(int i, OutputArray _alpha, OutputArray _svidx ) const + { + CV_Assert( 0 <= i && i < (int)decision_func.size()); + const DecisionFunc& df = decision_func[i]; + int count = getSVCount(i); + Mat(1, count, CV_64F, (double*)&df_alpha[df.ofs]).copyTo(_alpha); + Mat(1, count, CV_32S, (int*)&df_index[df.ofs]).copyTo(_svidx); + return df.rho; } - if( cvReadIntByName(fs, svm_node, "optimize_linear", 1) != 0 ) - optimize_linear_svm(); - create_kernel(); + void write_params( FileStorage& fs ) const + { + int svmType = params.svmType; + int kernelType = params.kernelType; - __END__; -} + String svm_type_str = + svmType == C_SVC ? "C_SVC" : + svmType == NU_SVC ? "NU_SVC" : + svmType == ONE_CLASS ? "ONE_CLASS" : + svmType == EPS_SVR ? "EPS_SVR" : + svmType == NU_SVR ? "NU_SVR" : format("Uknown_%d", svmType); + String kernel_type_str = + kernelType == LINEAR ? "LINEAR" : + kernelType == POLY ? "POLY" : + kernelType == RBF ? "RBF" : + kernelType == SIGMOID ? "SIGMOID" : format("Unknown_%d", kernelType); -#if 0 + fs << "svmType" << svm_type_str; -static void* -icvCloneSVM( const void* _src ) -{ - CvSVMModel* dst = 0; + // save kernel + fs << "kernel" << "{" << "type" << kernel_type_str; - CV_FUNCNAME( "icvCloneSVM" ); + if( kernelType == POLY ) + fs << "degree" << params.degree; - __BEGIN__; + if( kernelType != LINEAR ) + fs << "gamma" << params.gamma; - const CvSVMModel* src = (const CvSVMModel*)_src; - int var_count, class_count; - int i, sv_total, df_count; - int sv_size; + if( kernelType == POLY || kernelType == SIGMOID ) + fs << "coef0" << params.coef0; - if( !CV_IS_SVM(src) ) - CV_ERROR( !src ? CV_StsNullPtr : CV_StsBadArg, "Input pointer is NULL or invalid" ); + fs << "}"; - // 0. create initial CvSVMModel structure - CV_CALL( dst = icvCreateSVM() ); - dst->params = src->params; - dst->params.weight_labels = 0; - dst->params.weights = 0; + if( svmType == C_SVC || svmType == EPS_SVR || svmType == NU_SVR ) + fs << "C" << params.C; - dst->var_all = src->var_all; - if( src->class_labels ) - dst->class_labels = cvCloneMat( src->class_labels ); - if( src->class_weights ) - dst->class_weights = cvCloneMat( src->class_weights ); - if( src->comp_idx ) - dst->comp_idx = cvCloneMat( src->comp_idx ); + if( svmType == NU_SVC || svmType == ONE_CLASS || svmType == NU_SVR ) + fs << "nu" << params.nu; - var_count = src->comp_idx ? src->comp_idx->cols : src->var_all; - class_count = src->class_labels ? src->class_labels->cols : - src->params.svm_type == CvSVM::ONE_CLASS ? 1 : 0; - sv_total = dst->sv_total = src->sv_total; - CV_CALL( dst->storage = cvCreateMemStorage( src->storage->block_size )); - CV_CALL( dst->sv = (float**)cvMemStorageAlloc( dst->storage, - sv_total*sizeof(dst->sv[0]) )); + if( svmType == EPS_SVR ) + fs << "p" << params.p; - sv_size = var_count*sizeof(dst->sv[0][0]); + fs << "term_criteria" << "{:"; + if( params.termCrit.type & TermCriteria::EPS ) + fs << "epsilon" << params.termCrit.epsilon; + if( params.termCrit.type & TermCriteria::COUNT ) + fs << "iterations" << params.termCrit.maxCount; + fs << "}"; + } - for( i = 0; i < sv_total; i++ ) + bool isTrained() const { - CV_CALL( dst->sv[i] = (float*)cvMemStorageAlloc( dst->storage, sv_size )); - memcpy( dst->sv[i], src->sv[i], sv_size ); + return !sv.empty(); } - df_count = class_count > 1 ? class_count*(class_count-1)/2 : 1; + bool isClassifier() const + { + return params.svmType == C_SVC || params.svmType == NU_SVC || params.svmType == ONE_CLASS; + } - CV_CALL( dst->decision_func = cvAlloc( df_count*sizeof(CvSVMDecisionFunc) )); + int getVarCount() const + { + return var_count; + } - for( i = 0; i < df_count; i++ ) + String getDefaultModelName() const { - const CvSVMDecisionFunc *sdf = - (const CvSVMDecisionFunc*)src->decision_func+i; - CvSVMDecisionFunc *ddf = - (CvSVMDecisionFunc*)dst->decision_func+i; - int sv_count = sdf->sv_count; - ddf->sv_count = sv_count; - ddf->rho = sdf->rho; - CV_CALL( ddf->alpha = (double*)cvMemStorageAlloc( dst->storage, - sv_count*sizeof(ddf->alpha[0]))); - memcpy( ddf->alpha, sdf->alpha, sv_count*sizeof(ddf->alpha[0])); - - if( class_count > 1 ) - { - CV_CALL( ddf->sv_index = (int*)cvMemStorageAlloc( dst->storage, - sv_count*sizeof(ddf->sv_index[0]))); - memcpy( ddf->sv_index, sdf->sv_index, sv_count*sizeof(ddf->sv_index[0])); - } - else - ddf->sv_index = 0; + return "opencv_ml_svm"; } - __END__; + void write( FileStorage& fs ) const + { + int class_count = !class_labels.empty() ? (int)class_labels.total() : + params.svmType == ONE_CLASS ? 1 : 0; + if( !isTrained() ) + CV_Error( CV_StsParseError, "SVM model data is invalid, check sv_count, var_* and class_count tags" ); - if( cvGetErrStatus() < 0 && dst ) - icvReleaseSVM( &dst ); + write_params( fs ); - return dst; -} + fs << "var_count" << var_count; -static int icvRegisterSVMType() -{ - CvTypeInfo info; - memset( &info, 0, sizeof(info) ); - - info.flags = 0; - info.header_size = sizeof( info ); - info.is_instance = icvIsSVM; - info.release = (CvReleaseFunc)icvReleaseSVM; - info.read = icvReadSVM; - info.write = icvWriteSVM; - info.clone = icvCloneSVM; - info.type_name = CV_TYPE_NAME_ML_SVM; - cvRegisterType( &info ); - - return 1; -} + if( class_count > 0 ) + { + fs << "class_count" << class_count; + if( !class_labels.empty() ) + fs << "class_labels" << class_labels; -static int svm = icvRegisterSVMType(); - -/* The function trains SVM model with optimal parameters, obtained by using cross-validation. -The parameters to be estimated should be indicated by setting theirs values to FLT_MAX. -The optimal parameters are saved in */ -CV_IMPL CvStatModel* -cvTrainSVM_CrossValidation( const CvMat* train_data, int tflag, - const CvMat* responses, - CvStatModelParams* model_params, - const CvStatModelParams* cross_valid_params, - const CvMat* comp_idx, - const CvMat* sample_idx, - const CvParamGrid* degree_grid, - const CvParamGrid* gamma_grid, - const CvParamGrid* coef_grid, - const CvParamGrid* C_grid, - const CvParamGrid* nu_grid, - const CvParamGrid* p_grid ) -{ - CvStatModel* svm = 0; - - CV_FUNCNAME("cvTainSVMCrossValidation"); - __BEGIN__; - - double degree_step = 7, - g_step = 15, - coef_step = 14, - C_step = 20, - nu_step = 5, - p_step = 7; // all steps must be > 1 - double degree_begin = 0.01, degree_end = 2; - double g_begin = 1e-5, g_end = 0.5; - double coef_begin = 0.1, coef_end = 300; - double C_begin = 0.1, C_end = 6000; - double nu_begin = 0.01, nu_end = 0.4; - double p_begin = 0.01, p_end = 100; - - double rate = 0, gamma = 0, C = 0, degree = 0, coef = 0, p = 0, nu = 0; - - double best_rate = 0; - double best_degree = degree_begin; - double best_gamma = g_begin; - double best_coef = coef_begin; - double best_C = C_begin; - double best_nu = nu_begin; - double best_p = p_begin; - - CvSVMModelParams svm_params, *psvm_params; - CvCrossValidationParams* cv_params = (CvCrossValidationParams*)cross_valid_params; - int svm_type, kernel; - int is_regression; - - if( !model_params ) - CV_ERROR( CV_StsBadArg, "" ); - if( !cv_params ) - CV_ERROR( CV_StsBadArg, "" ); - - svm_params = *(CvSVMModelParams*)model_params; - psvm_params = (CvSVMModelParams*)model_params; - svm_type = svm_params.svm_type; - kernel = svm_params.kernel_type; - - svm_params.degree = svm_params.degree > 0 ? svm_params.degree : 1; - svm_params.gamma = svm_params.gamma > 0 ? svm_params.gamma : 1; - svm_params.coef0 = svm_params.coef0 > 0 ? svm_params.coef0 : 1e-6; - svm_params.C = svm_params.C > 0 ? svm_params.C : 1; - svm_params.nu = svm_params.nu > 0 ? svm_params.nu : 1; - svm_params.p = svm_params.p > 0 ? svm_params.p : 1; - - if( degree_grid ) - { - if( !(degree_grid->max_val == 0 && degree_grid->min_val == 0 && - degree_grid->step == 0) ) - { - if( degree_grid->min_val > degree_grid->max_val ) - CV_ERROR( CV_StsBadArg, - "low bound of grid should be less then the upper one"); - if( degree_grid->step <= 1 ) - CV_ERROR( CV_StsBadArg, "grid step should be greater 1" ); - degree_begin = degree_grid->min_val; - degree_end = degree_grid->max_val; - degree_step = degree_grid->step; + if( !params.classWeights.empty() ) + fs << "class_weights" << params.classWeights; } - } - else - degree_begin = degree_end = svm_params.degree; - if( gamma_grid ) - { - if( !(gamma_grid->max_val == 0 && gamma_grid->min_val == 0 && - gamma_grid->step == 0) ) + // write the joint collection of support vectors + int i, sv_total = sv.rows; + fs << "sv_total" << sv_total; + fs << "support_vectors" << "["; + for( i = 0; i < sv_total; i++ ) { - if( gamma_grid->min_val > gamma_grid->max_val ) - CV_ERROR( CV_StsBadArg, - "low bound of grid should be less then the upper one"); - if( gamma_grid->step <= 1 ) - CV_ERROR( CV_StsBadArg, "grid step should be greater 1" ); - g_begin = gamma_grid->min_val; - g_end = gamma_grid->max_val; - g_step = gamma_grid->step; + fs << "[:"; + fs.writeRaw("f", sv.ptr(i), sv.cols*sv.elemSize()); + fs << "]"; } - } - else - g_begin = g_end = svm_params.gamma; + fs << "]"; - if( coef_grid ) - { - if( !(coef_grid->max_val == 0 && coef_grid->min_val == 0 && - coef_grid->step == 0) ) - { - if( coef_grid->min_val > coef_grid->max_val ) - CV_ERROR( CV_StsBadArg, - "low bound of grid should be less then the upper one"); - if( coef_grid->step <= 1 ) - CV_ERROR( CV_StsBadArg, "grid step should be greater 1" ); - coef_begin = coef_grid->min_val; - coef_end = coef_grid->max_val; - coef_step = coef_grid->step; - } - } - else - coef_begin = coef_end = svm_params.coef0; + // write decision functions + int df_count = (int)decision_func.size(); - if( C_grid ) - { - if( !(C_grid->max_val == 0 && C_grid->min_val == 0 && C_grid->step == 0)) + fs << "decision_functions" << "["; + for( i = 0; i < df_count; i++ ) { - if( C_grid->min_val > C_grid->max_val ) - CV_ERROR( CV_StsBadArg, - "low bound of grid should be less then the upper one"); - if( C_grid->step <= 1 ) - CV_ERROR( CV_StsBadArg, "grid step should be greater 1" ); - C_begin = C_grid->min_val; - C_end = C_grid->max_val; - C_step = C_grid->step; + const DecisionFunc& df = decision_func[i]; + int sv_count = getSVCount(i); + fs << "{" << "sv_count" << sv_count + << "rho" << df.rho + << "alpha" << "[:"; + fs.writeRaw("d", (const uchar*)&df_alpha[df.ofs], sv_count*sizeof(df_alpha[0])); + fs << "]"; + if( class_count > 2 ) + { + fs << "index" << "[:"; + fs.writeRaw("i", (const uchar*)&df_index[df.ofs], sv_count*sizeof(df_index[0])); + fs << "]"; + } + else + CV_Assert( sv_count == sv_total ); + fs << "}"; } + fs << "]"; } - else - C_begin = C_end = svm_params.C; - if( nu_grid ) + void read_params( const FileNode& fn ) { - if(!(nu_grid->max_val == 0 && nu_grid->min_val == 0 && nu_grid->step==0)) - { - if( nu_grid->min_val > nu_grid->max_val ) - CV_ERROR( CV_StsBadArg, - "low bound of grid should be less then the upper one"); - if( nu_grid->step <= 1 ) - CV_ERROR( CV_StsBadArg, "grid step should be greater 1" ); - nu_begin = nu_grid->min_val; - nu_end = nu_grid->max_val; - nu_step = nu_grid->step; - } - } - else - nu_begin = nu_end = svm_params.nu; + Params _params; - if( p_grid ) - { - if( !(p_grid->max_val == 0 && p_grid->min_val == 0 && p_grid->step == 0)) + String svm_type_str = (String)fn["svmType"]; + int svmType = + svm_type_str == "C_SVC" ? C_SVC : + svm_type_str == "NU_SVC" ? NU_SVC : + svm_type_str == "ONE_CLASS" ? ONE_CLASS : + svm_type_str == "EPS_SVR" ? EPS_SVR : + svm_type_str == "NU_SVR" ? NU_SVR : -1; + + if( svmType < 0 ) + CV_Error( CV_StsParseError, "Missing of invalid SVM type" ); + + FileNode kernel_node = fn["kernel"]; + if( kernel_node.empty() ) + CV_Error( CV_StsParseError, "SVM kernel tag is not found" ); + + String kernel_type_str = (String)kernel_node["type"]; + int kernelType = + kernel_type_str == "LINEAR" ? LINEAR : + kernel_type_str == "POLY" ? POLY : + kernel_type_str == "RBF" ? RBF : + kernel_type_str == "SIGMOID" ? SIGMOID : -1; + + if( kernelType < 0 ) + CV_Error( CV_StsParseError, "Missing of invalid SVM kernel type" ); + + _params.svmType = svmType; + _params.kernelType = kernelType; + _params.degree = (double)kernel_node["degree"]; + _params.gamma = (double)kernel_node["gamma"]; + _params.coef0 = (double)kernel_node["coef0"]; + + _params.C = (double)fn["C"]; + _params.nu = (double)fn["nu"]; + _params.p = (double)fn["p"]; + _params.classWeights = Mat(); + + FileNode tcnode = fn["term_criteria"]; + if( !tcnode.empty() ) { - if( p_grid->min_val > p_grid->max_val ) - CV_ERROR( CV_StsBadArg, - "low bound of grid should be less then the upper one"); - if( p_grid->step <= 1 ) - CV_ERROR( CV_StsBadArg, "grid step should be greater 1" ); - p_begin = p_grid->min_val; - p_end = p_grid->max_val; - p_step = p_grid->step; + _params.termCrit.epsilon = (double)tcnode["epsilon"]; + _params.termCrit.maxCount = (int)tcnode["iterations"]; + _params.termCrit.type = (_params.termCrit.epsilon > 0 ? TermCriteria::EPS : 0) + + (_params.termCrit.maxCount > 0 ? TermCriteria::COUNT : 0); } + else + _params.termCrit = TermCriteria( TermCriteria::EPS + TermCriteria::COUNT, 1000, FLT_EPSILON ); + + setParams( _params, Ptr() ); } - else - p_begin = p_end = svm_params.p; - // these parameters are not used: - if( kernel != CvSVM::POLY ) - degree_begin = degree_end = svm_params.degree; + void read( const FileNode& fn ) + { + clear(); - if( kernel == CvSVM::LINEAR ) - g_begin = g_end = svm_params.gamma; + // read SVM parameters + read_params( fn ); - if( kernel != CvSVM::POLY && kernel != CvSVM::SIGMOID ) - coef_begin = coef_end = svm_params.coef0; + // and top-level data + int i, sv_total = (int)fn["sv_total"]; + var_count = (int)fn["var_count"]; + int class_count = (int)fn["class_count"]; - if( svm_type == CvSVM::NU_SVC || svm_type == CvSVM::ONE_CLASS ) - C_begin = C_end = svm_params.C; + if( sv_total <= 0 || var_count <= 0 ) + CV_Error( CV_StsParseError, "SVM model data is invalid, check sv_count, var_* and class_count tags" ); - if( svm_type == CvSVM::C_SVC || svm_type == CvSVM::EPS_SVR ) - nu_begin = nu_end = svm_params.nu; + FileNode m = fn["class_labels"]; + if( !m.empty() ) + m >> class_labels; + m = fn["class_weights"]; + if( !m.empty() ) + m >> params.classWeights; - if( svm_type != CvSVM::EPS_SVR ) - p_begin = p_end = svm_params.p; + if( class_count > 1 && (class_labels.empty() || (int)class_labels.total() != class_count)) + CV_Error( CV_StsParseError, "Array of class labels is missing or invalid" ); - is_regression = cv_params->is_regression; - best_rate = is_regression ? FLT_MAX : 0; + // read support vectors + FileNode sv_node = fn["support_vectors"]; - assert( g_step > 1 && degree_step > 1 && coef_step > 1); - assert( p_step > 1 && C_step > 1 && nu_step > 1 ); + CV_Assert((int)sv_node.size() == sv_total); + sv.create(sv_total, var_count, CV_32F); - for( degree = degree_begin; degree <= degree_end; degree *= degree_step ) - { - svm_params.degree = degree; - //printf("degree = %.3f\n", degree ); - for( gamma= g_begin; gamma <= g_end; gamma *= g_step ) - { - svm_params.gamma = gamma; - //printf(" gamma = %.3f\n", gamma ); - for( coef = coef_begin; coef <= coef_end; coef *= coef_step ) + FileNodeIterator sv_it = sv_node.begin(); + for( i = 0; i < sv_total; i++, ++sv_it ) { - svm_params.coef0 = coef; - //printf(" coef = %.3f\n", coef ); - for( C = C_begin; C <= C_end; C *= C_step ) - { - svm_params.C = C; - //printf(" C = %.3f\n", C ); - for( nu = nu_begin; nu <= nu_end; nu *= nu_step ) - { - svm_params.nu = nu; - //printf(" nu = %.3f\n", nu ); - for( p = p_begin; p <= p_end; p *= p_step ) - { - int well; - svm_params.p = p; - //printf(" p = %.3f\n", p ); - - CV_CALL(rate = cvCrossValidation( train_data, tflag, responses, &cvTrainSVM, - cross_valid_params, (CvStatModelParams*)&svm_params, comp_idx, sample_idx )); - - well = rate > best_rate && !is_regression || rate < best_rate && is_regression; - if( well || (rate == best_rate && C < best_C) ) - { - best_rate = rate; - best_degree = degree; - best_gamma = gamma; - best_coef = coef; - best_C = C; - best_nu = nu; - best_p = p; - } - //printf(" rate = %.2f\n", rate ); - } - } - } + (*sv_it).readRaw("f", sv.ptr(i), var_count*sv.elemSize()); } - } - } - //printf("The best:\nrate = %.2f%% degree = %f gamma = %f coef = %f c = %f nu = %f p = %f\n", - // best_rate, best_degree, best_gamma, best_coef, best_C, best_nu, best_p ); - psvm_params->C = best_C; - psvm_params->nu = best_nu; - psvm_params->p = best_p; - psvm_params->gamma = best_gamma; - psvm_params->degree = best_degree; - psvm_params->coef0 = best_coef; + // read decision functions + int df_count = class_count > 1 ? class_count*(class_count-1)/2 : 1; + FileNode df_node = fn["decision_functions"]; + + CV_Assert((int)df_node.size() == df_count); - CV_CALL(svm = cvTrainSVM( train_data, tflag, responses, model_params, comp_idx, sample_idx )); + FileNodeIterator df_it = df_node.begin(); + for( i = 0; i < df_count; i++, ++df_it ) + { + FileNode dfi = *df_it; + DecisionFunc df; + int sv_count = (int)dfi["sv_count"]; + int ofs = (int)df_index.size(); + df.rho = (double)dfi["rho"]; + df.ofs = ofs; + df_index.resize(ofs + sv_count); + df_alpha.resize(ofs + sv_count); + dfi["alpha"].readRaw("d", (uchar*)&df_alpha[ofs], sv_count*sizeof(df_alpha[0])); + if( class_count > 2 ) + dfi["index"].readRaw("i", (uchar*)&df_index[ofs], sv_count*sizeof(df_index[0])); + decision_func.push_back(df); + } + if( class_count <= 2 ) + setRangeVector(df_index, sv_total); + if( (int)fn["optimize_linear"] != 0 ) + optimize_linear_svm(); + } + + Params params; + TermCriteria termCrit; + Mat class_labels; + int var_count; + Mat sv; + vector decision_func; + vector df_alpha; + vector df_index; + + Ptr kernel; +}; - __END__; - return svm; +Ptr SVM::create(const Params& params, const Ptr& kernel) +{ + Ptr p = makePtr(); + p->setParams(params, kernel); + return p; } -#endif +} +} /* End of file. */ diff --git a/modules/ml/src/testset.cpp b/modules/ml/src/testset.cpp index 5edb3b45df..8b8bba5456 100644 --- a/modules/ml/src/testset.cpp +++ b/modules/ml/src/testset.cpp @@ -40,131 +40,74 @@ #include "precomp.hpp" -typedef struct CvDI +namespace cv { namespace ml { + +struct PairDI { double d; int i; -} CvDI; +}; -static int CV_CDECL -icvCmpDI( const void* a, const void* b, void* ) +struct CmpPairDI { - const CvDI* e1 = (const CvDI*) a; - const CvDI* e2 = (const CvDI*) b; - - return (e1->d < e2->d) ? -1 : (e1->d > e2->d); -} + bool operator ()(const PairDI& e1, const PairDI& e2) const + { + return (e1.d < e2.d) || (e1.d == e2.d && e1.i < e2.i); + } +}; -CV_IMPL void -cvCreateTestSet( int type, CvMat** samples, - int num_samples, - int num_features, - CvMat** responses, - int num_classes, ... ) +void createConcentricSpheresTestSet( int num_samples, int num_features, int num_classes, + OutputArray _samples, OutputArray _responses) { - CvMat* mean = NULL; - CvMat* cov = NULL; - CvMemStorage* storage = NULL; - - CV_FUNCNAME( "cvCreateTestSet" ); + if( num_samples < 1 ) + CV_Error( CV_StsBadArg, "num_samples parameter must be positive" ); - __BEGIN__; + if( num_features < 1 ) + CV_Error( CV_StsBadArg, "num_features parameter must be positive" ); - if( samples ) - *samples = NULL; - if( responses ) - *responses = NULL; + if( num_classes < 1 ) + CV_Error( CV_StsBadArg, "num_classes parameter must be positive" ); - if( type != CV_TS_CONCENTRIC_SPHERES ) - CV_ERROR( CV_StsBadArg, "Invalid type parameter" ); + int i, cur_class; - if( !samples ) - CV_ERROR( CV_StsNullPtr, "samples parameter must be not NULL" ); + _samples.create( num_samples, num_features, CV_32F ); + _responses.create( 1, num_samples, CV_32S ); - if( !responses ) - CV_ERROR( CV_StsNullPtr, "responses parameter must be not NULL" ); + Mat responses = _responses.getMat(); - if( num_samples < 1 ) - CV_ERROR( CV_StsBadArg, "num_samples parameter must be positive" ); + Mat mean = Mat::zeros(1, num_features, CV_32F); + Mat cov = Mat::eye(num_features, num_features, CV_32F); - if( num_features < 1 ) - CV_ERROR( CV_StsBadArg, "num_features parameter must be positive" ); + // fill the feature values matrix with random numbers drawn from standard normal distribution + randMVNormal( mean, cov, num_samples, _samples ); + Mat samples = _samples.getMat(); - if( num_classes < 1 ) - CV_ERROR( CV_StsBadArg, "num_classes parameter must be positive" ); + // calculate distances from the origin to the samples and put them + // into the sequence along with indices + std::vector dis(samples.rows); - if( type == CV_TS_CONCENTRIC_SPHERES ) + for( i = 0; i < samples.rows; i++ ) { - CvSeqWriter writer; - CvSeqReader reader; - CvMat sample; - CvDI elem; - CvSeq* seq = NULL; - int i, cur_class; - - CV_CALL( *samples = cvCreateMat( num_samples, num_features, CV_32FC1 ) ); - CV_CALL( *responses = cvCreateMat( 1, num_samples, CV_32SC1 ) ); - CV_CALL( mean = cvCreateMat( 1, num_features, CV_32FC1 ) ); - CV_CALL( cvSetZero( mean ) ); - CV_CALL( cov = cvCreateMat( num_features, num_features, CV_32FC1 ) ); - CV_CALL( cvSetIdentity( cov ) ); - - /* fill the feature values matrix with random numbers drawn from standard - normal distribution */ - CV_CALL( cvRandMVNormal( mean, cov, *samples ) ); - - /* calculate distances from the origin to the samples and put them - into the sequence along with indices */ - CV_CALL( storage = cvCreateMemStorage() ); - CV_CALL( cvStartWriteSeq( 0, sizeof( CvSeq ), sizeof( CvDI ), storage, &writer )); - for( i = 0; i < (*samples)->rows; ++i ) - { - CV_CALL( cvGetRow( *samples, &sample, i )); - elem.i = i; - CV_CALL( elem.d = cvNorm( &sample, NULL, CV_L2 )); - CV_WRITE_SEQ_ELEM( elem, writer ); - } - CV_CALL( seq = cvEndWriteSeq( &writer ) ); - - /* sort the sequence in a distance ascending order */ - CV_CALL( cvSeqSort( seq, icvCmpDI, NULL ) ); - - /* assign class labels */ - num_classes = MIN( num_samples, num_classes ); - CV_CALL( cvStartReadSeq( seq, &reader ) ); - CV_READ_SEQ_ELEM( elem, reader ); - for( i = 0, cur_class = 0; i < num_samples; ++cur_class ) - { - int last_idx; - double max_dst; - - last_idx = num_samples * (cur_class + 1) / num_classes - 1; - CV_CALL( max_dst = (*((CvDI*) cvGetSeqElem( seq, last_idx ))).d ); - max_dst = MAX( max_dst, elem.d ); - - for( ; elem.d <= max_dst && i < num_samples; ++i ) - { - CV_MAT_ELEM( **responses, int, 0, elem.i ) = cur_class; - if( i < num_samples - 1 ) - { - CV_READ_SEQ_ELEM( elem, reader ); - } - } - } + PairDI& elem = dis[i]; + elem.i = i; + elem.d = norm(samples.row(i), NORM_L2); } - __END__; + std::sort(dis.begin(), dis.end(), CmpPairDI()); - if( cvGetErrStatus() < 0 ) + // assign class labels + num_classes = std::min( num_samples, num_classes ); + for( i = 0, cur_class = 0; i < num_samples; ++cur_class ) { - if( samples ) - cvReleaseMat( samples ); - if( responses ) - cvReleaseMat( responses ); + int last_idx = num_samples * (cur_class + 1) / num_classes - 1; + double max_dst = dis[last_idx].d; + max_dst = std::max( max_dst, dis[i].d ); + + for( ; i < num_samples && dis[i].d <= max_dst; ++i ) + responses.at(i) = cur_class; } - cvReleaseMat( &mean ); - cvReleaseMat( &cov ); - cvReleaseMemStorage( &storage ); } +}} + /* End of file. */ diff --git a/modules/ml/src/tree.cpp b/modules/ml/src/tree.cpp index 41d2553a43..2985f3f146 100644 --- a/modules/ml/src/tree.cpp +++ b/modules/ml/src/tree.cpp @@ -7,9 +7,11 @@ // copy or use the software. // // -// Intel License Agreement +// License Agreement +// For Open Source Computer Vision Library // // Copyright (C) 2000, Intel Corporation, all rights reserved. +// Copyright (C) 2014, Itseez Inc, all rights reserved. // Third party copyrights are property of their respective owners. // // Redistribution and use in source and binary forms, with or without modification, @@ -22,7 +24,7 @@ // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // -// * The name of Intel Corporation may not be used to endorse or promote products +// * The name of the copyright holders may not be used to endorse or promote products // derived from this software without specific prior written permission. // // This software is provided by the copyright holders and contributors "as is" and @@ -41,2730 +43,469 @@ #include "precomp.hpp" #include -using namespace cv; +namespace cv { +namespace ml { -static const float ord_nan = FLT_MAX*0.5f; -static const int min_block_size = 1 << 16; -static const int block_size_delta = 1 << 10; +using std::vector; -CvDTreeTrainData::CvDTreeTrainData() -{ - var_idx = var_type = cat_count = cat_ofs = cat_map = - priors = priors_mult = counts = direction = split_buf = responses_copy = 0; - buf = 0; - tree_storage = temp_storage = 0; - - clear(); -} +DTrees::~DTrees() {} - -CvDTreeTrainData::CvDTreeTrainData( const CvMat* _train_data, int _tflag, - const CvMat* _responses, const CvMat* _var_idx, - const CvMat* _sample_idx, const CvMat* _var_type, - const CvMat* _missing_mask, const CvDTreeParams& _params, - bool _shared, bool _add_labels ) +void DTrees::setDParams(const DTrees::Params&) { - var_idx = var_type = cat_count = cat_ofs = cat_map = - priors = priors_mult = counts = direction = split_buf = responses_copy = 0; - buf = 0; - - tree_storage = temp_storage = 0; - - set_data( _train_data, _tflag, _responses, _var_idx, _sample_idx, - _var_type, _missing_mask, _params, _shared, _add_labels ); + CV_Error(CV_StsNotImplemented, ""); } - -CvDTreeTrainData::~CvDTreeTrainData() +DTrees::Params DTrees::getDParams() const { - clear(); + CV_Error(CV_StsNotImplemented, ""); + return DTrees::Params(); } - -bool CvDTreeTrainData::set_params( const CvDTreeParams& _params ) +DTrees::Params::Params() { - bool ok = false; - - CV_FUNCNAME( "CvDTreeTrainData::set_params" ); - - __BEGIN__; - - // set parameters - params = _params; - - if( params.max_categories < 2 ) - CV_ERROR( CV_StsOutOfRange, "params.max_categories should be >= 2" ); - params.max_categories = MIN( params.max_categories, 15 ); - - if( params.max_depth < 0 ) - CV_ERROR( CV_StsOutOfRange, "params.max_depth should be >= 0" ); - params.max_depth = MIN( params.max_depth, 25 ); - - params.min_sample_count = MAX(params.min_sample_count,1); - - if( params.cv_folds < 0 ) - CV_ERROR( CV_StsOutOfRange, - "params.cv_folds should be =0 (the tree is not pruned) " - "or n>0 (tree is pruned using n-fold cross-validation)" ); - - if( params.cv_folds == 1 ) - params.cv_folds = 0; - - if( params.regression_accuracy < 0 ) - CV_ERROR( CV_StsOutOfRange, "params.regression_accuracy should be >= 0" ); - - ok = true; - - __END__; - - return ok; + maxDepth = INT_MAX; + minSampleCount = 10; + regressionAccuracy = 0.01f; + useSurrogates = false; + maxCategories = 10; + CVFolds = 10; + use1SERule = true; + truncatePrunedTree = true; + priors = Mat(); } -template -class LessThanPtr +DTrees::Params::Params( int _maxDepth, int _minSampleCount, + double _regressionAccuracy, bool _useSurrogates, + int _maxCategories, int _CVFolds, + bool _use1SERule, bool _truncatePrunedTree, + const Mat& _priors ) { -public: - bool operator()(T* a, T* b) const { return *a < *b; } -}; + maxDepth = _maxDepth; + minSampleCount = _minSampleCount; + regressionAccuracy = (float)_regressionAccuracy; + useSurrogates = _useSurrogates; + maxCategories = _maxCategories; + CVFolds = _CVFolds; + use1SERule = _use1SERule; + truncatePrunedTree = _truncatePrunedTree; + priors = _priors; +} -template -class LessThanIdx +DTrees::Node::Node() { -public: - LessThanIdx( const T* _arr ) : arr(_arr) {} - bool operator()(Idx a, Idx b) const { return arr[a] < arr[b]; } - const T* arr; -}; + classIdx = 0; + value = 0; + parent = left = right = split = defaultDir = -1; +} -class LessThanPairs -{ -public: - bool operator()(const CvPair16u32s& a, const CvPair16u32s& b) const { return *a.i < *b.i; } -}; - -void CvDTreeTrainData::set_data( const CvMat* _train_data, int _tflag, - const CvMat* _responses, const CvMat* _var_idx, const CvMat* _sample_idx, - const CvMat* _var_type, const CvMat* _missing_mask, const CvDTreeParams& _params, - bool _shared, bool _add_labels, bool _update_data ) +DTrees::Split::Split() { - CvMat* sample_indices = 0; - CvMat* var_type0 = 0; - CvMat* tmp_map = 0; - int** int_ptr = 0; - CvPair16u32s* pair16u32s_ptr = 0; - CvDTreeTrainData* data = 0; - float *_fdst = 0; - int *_idst = 0; - unsigned short* udst = 0; - int* idst = 0; - - CV_FUNCNAME( "CvDTreeTrainData::set_data" ); - - __BEGIN__; - - int sample_all = 0, r_type, cv_n; - int total_c_count = 0; - int tree_block_size, temp_block_size, max_split_size, nv_size, cv_size = 0; - int ds_step, dv_step, ms_step = 0, mv_step = 0; // {data|mask}{sample|var}_step - int vi, i, size; - char err[100]; - const int *sidx = 0, *vidx = 0; - - uint64 effective_buf_size = 0; - int effective_buf_height = 0, effective_buf_width = 0; - - if( _update_data && data_root ) - { - data = new CvDTreeTrainData( _train_data, _tflag, _responses, _var_idx, - _sample_idx, _var_type, _missing_mask, _params, _shared, _add_labels ); - - // compare new and old train data - if( !(data->var_count == var_count && - cvNorm( data->var_type, var_type, CV_C ) < FLT_EPSILON && - cvNorm( data->cat_count, cat_count, CV_C ) < FLT_EPSILON && - cvNorm( data->cat_map, cat_map, CV_C ) < FLT_EPSILON) ) - CV_ERROR( CV_StsBadArg, - "The new training data must have the same types and the input and output variables " - "and the same categories for categorical variables" ); - - cvReleaseMat( &priors ); - cvReleaseMat( &priors_mult ); - cvReleaseMat( &buf ); - cvReleaseMat( &direction ); - cvReleaseMat( &split_buf ); - cvReleaseMemStorage( &temp_storage ); - - priors = data->priors; data->priors = 0; - priors_mult = data->priors_mult; data->priors_mult = 0; - buf = data->buf; data->buf = 0; - buf_count = data->buf_count; buf_size = data->buf_size; - sample_count = data->sample_count; - - direction = data->direction; data->direction = 0; - split_buf = data->split_buf; data->split_buf = 0; - temp_storage = data->temp_storage; data->temp_storage = 0; - nv_heap = data->nv_heap; cv_heap = data->cv_heap; - - data_root = new_node( 0, sample_count, 0, 0 ); - EXIT; - } - - clear(); - - var_all = 0; - rng = &cv::theRNG(); - - CV_CALL( set_params( _params )); - - // check parameter types and sizes - CV_CALL( cvCheckTrainData( _train_data, _tflag, _missing_mask, &var_all, &sample_all )); + varIdx = 0; + inversed = false; + quality = 0.f; + next = -1; + c = 0.f; + subsetOfs = 0; +} - train_data = _train_data; - responses = _responses; - if( _tflag == CV_ROW_SAMPLE ) +DTreesImpl::WorkData::WorkData(const Ptr& _data) +{ + data = _data; + vector subsampleIdx; + Mat sidx0 = _data->getTrainSampleIdx(); + if( !sidx0.empty() ) { - ds_step = _train_data->step/CV_ELEM_SIZE(_train_data->type); - dv_step = 1; - if( _missing_mask ) - ms_step = _missing_mask->step, mv_step = 1; + sidx0.copyTo(sidx); + std::sort(sidx.begin(), sidx.end()); } else { - dv_step = _train_data->step/CV_ELEM_SIZE(_train_data->type); - ds_step = 1; - if( _missing_mask ) - mv_step = _missing_mask->step, ms_step = 1; - } - tflag = _tflag; - - sample_count = sample_all; - var_count = var_all; - - if( _sample_idx ) - { - CV_CALL( sample_indices = cvPreprocessIndexArray( _sample_idx, sample_all )); - sidx = sample_indices->data.i; - sample_count = sample_indices->rows + sample_indices->cols - 1; + int n = _data->getNSamples(); + setRangeVector(sidx, n); } - if( _var_idx ) - { - CV_CALL( var_idx = cvPreprocessIndexArray( _var_idx, var_all )); - vidx = var_idx->data.i; - var_count = var_idx->rows + var_idx->cols - 1; - } - - is_buf_16u = false; - if ( sample_count < 65536 ) - is_buf_16u = true; + maxSubsetSize = 0; +} - if( !CV_IS_MAT(_responses) || - (CV_MAT_TYPE(_responses->type) != CV_32SC1 && - CV_MAT_TYPE(_responses->type) != CV_32FC1) || - (_responses->rows != 1 && _responses->cols != 1) || - _responses->rows + _responses->cols - 1 != sample_all ) - CV_ERROR( CV_StsBadArg, "The array of _responses must be an integer or " - "floating-point vector containing as many elements as " - "the total number of samples in the training data matrix" ); +DTreesImpl::DTreesImpl() {} +DTreesImpl::~DTreesImpl() {} +void DTreesImpl::clear() +{ + varIdx.clear(); + compVarIdx.clear(); + varType.clear(); + catOfs.clear(); + catMap.clear(); + roots.clear(); + nodes.clear(); + splits.clear(); + subsets.clear(); + classLabels.clear(); - r_type = CV_VAR_CATEGORICAL; - if( _var_type ) - CV_CALL( var_type0 = cvPreprocessVarType( _var_type, var_idx, var_count, &r_type )); + w.release(); + _isClassifier = false; +} - CV_CALL( var_type = cvCreateMat( 1, var_count+2, CV_32SC1 )); +void DTreesImpl::startTraining( const Ptr& data, int ) +{ + clear(); + w = makePtr(data); - cat_var_count = 0; - ord_var_count = -1; + Mat vtype = data->getVarType(); + vtype.copyTo(varType); - is_classifier = r_type == CV_VAR_CATEGORICAL; + data->getCatOfs().copyTo(catOfs); + data->getCatMap().copyTo(catMap); + data->getDefaultSubstValues().copyTo(missingSubst); - // step 0. calc the number of categorical vars - for( vi = 0; vi < var_count; vi++ ) - { - char vt = var_type0 ? var_type0->data.ptr[vi] : CV_VAR_ORDERED; - var_type->data.i[vi] = vt == CV_VAR_CATEGORICAL ? cat_var_count++ : ord_var_count--; - } + int nallvars = data->getNAllVars(); - ord_var_count = ~ord_var_count; - cv_n = params.cv_folds; - // set the two last elements of var_type array to be able - // to locate responses and cross-validation labels using - // the corresponding get_* functions. - var_type->data.i[var_count] = cat_var_count; - var_type->data.i[var_count+1] = cat_var_count+1; + Mat vidx0 = data->getVarIdx(); + if( !vidx0.empty() ) + vidx0.copyTo(varIdx); + else + setRangeVector(varIdx, nallvars); - // in case of single ordered predictor we need dummy cv_labels - // for safe split_node_data() operation - have_labels = cv_n > 0 || (ord_var_count == 1 && cat_var_count == 0) || _add_labels; + initCompVarIdx(); - work_var_count = var_count + (is_classifier ? 1 : 0) // for responses class_labels - + (have_labels ? 1 : 0); // for cv_labels + w->maxSubsetSize = 0; - shared = _shared; - buf_count = shared ? 2 : 1; + int i, nvars = (int)varIdx.size(); + for( i = 0; i < nvars; i++ ) + w->maxSubsetSize = std::max(w->maxSubsetSize, getCatCount(varIdx[i])); - buf_size = -1; // the member buf_size is obsolete + w->maxSubsetSize = std::max((w->maxSubsetSize + 31)/32, 1); - effective_buf_size = (uint64)(work_var_count + 1)*(uint64)sample_count * buf_count; // this is the total size of "CvMat buf" to be allocated - effective_buf_width = sample_count; - effective_buf_height = work_var_count+1; + data->getSampleWeights().copyTo(w->sample_weights); - if (effective_buf_width >= effective_buf_height) - effective_buf_height *= buf_count; - else - effective_buf_width *= buf_count; + _isClassifier = data->getResponseType() == VAR_CATEGORICAL; - if ((uint64)effective_buf_width * (uint64)effective_buf_height != effective_buf_size) + if( _isClassifier ) { - CV_Error(CV_StsBadArg, "The memory buffer cannot be allocated since its size exceeds integer fields limit"); - } + data->getNormCatResponses().copyTo(w->cat_responses); + data->getClassLabels().copyTo(classLabels); + int nclasses = (int)classLabels.size(); + Mat class_weights = params.priors; + if( !class_weights.empty() ) + { + if( class_weights.type() != CV_64F || !class_weights.isContinuous() ) + { + Mat temp; + class_weights.convertTo(temp, CV_64F); + class_weights = temp; + } + CV_Assert( class_weights.checkVector(1, CV_64F) == nclasses ); + int nsamples = (int)w->cat_responses.size(); + const double* cw = class_weights.ptr(); + CV_Assert( (int)w->sample_weights.size() == nsamples ); - if ( is_buf_16u ) - { - CV_CALL( buf = cvCreateMat( effective_buf_height, effective_buf_width, CV_16UC1 )); - CV_CALL( pair16u32s_ptr = (CvPair16u32s*)cvAlloc( sample_count*sizeof(pair16u32s_ptr[0]) )); + for( i = 0; i < nsamples; i++ ) + { + int ci = w->cat_responses[i]; + CV_Assert( 0 <= ci && ci < nclasses ); + w->sample_weights[i] *= cw[ci]; + } + } } else + data->getResponses().copyTo(w->ord_responses); +} + + +void DTreesImpl::initCompVarIdx() +{ + int nallvars = (int)varType.size(); + compVarIdx.assign(nallvars, -1); + int i, nvars = (int)varIdx.size(), prevIdx = -1; + for( i = 0; i < nvars; i++ ) { - CV_CALL( buf = cvCreateMat( effective_buf_height, effective_buf_width, CV_32SC1 )); - CV_CALL( int_ptr = (int**)cvAlloc( sample_count*sizeof(int_ptr[0]) )); + int vi = varIdx[i]; + CV_Assert( 0 <= vi && vi < nallvars && vi > prevIdx ); + prevIdx = vi; + compVarIdx[vi] = i; } +} + +void DTreesImpl::endTraining() +{ + w.release(); +} - size = is_classifier ? (cat_var_count+1) : cat_var_count; - size = !size ? 1 : size; - CV_CALL( cat_count = cvCreateMat( 1, size, CV_32SC1 )); - CV_CALL( cat_ofs = cvCreateMat( 1, size, CV_32SC1 )); +bool DTreesImpl::train( const Ptr& trainData, int flags ) +{ + startTraining(trainData, flags); + bool ok = addTree( w->sidx ) >= 0; + w.release(); + endTraining(); + return ok; +} - size = is_classifier ? (cat_var_count + 1)*params.max_categories : cat_var_count*params.max_categories; - size = !size ? 1 : size; - CV_CALL( cat_map = cvCreateMat( 1, size, CV_32SC1 )); +const vector& DTreesImpl::getActiveVars() +{ + return varIdx; +} - // now calculate the maximum size of split, - // create memory storage that will keep nodes and splits of the decision tree - // allocate root node and the buffer for the whole training data - max_split_size = cvAlign(sizeof(CvDTreeSplit) + - (MAX(0,sample_count - 33)/32)*sizeof(int),sizeof(void*)); - tree_block_size = MAX((int)sizeof(CvDTreeNode)*8, max_split_size); - tree_block_size = MAX(tree_block_size + block_size_delta, min_block_size); - CV_CALL( tree_storage = cvCreateMemStorage( tree_block_size )); - CV_CALL( node_heap = cvCreateSet( 0, sizeof(*node_heap), sizeof(CvDTreeNode), tree_storage )); +int DTreesImpl::addTree(const vector& sidx ) +{ + size_t n = (params.maxDepth > 0 ? (1 << params.maxDepth) : 1024) + w->wnodes.size(); - nv_size = var_count*sizeof(int); - nv_size = cvAlign(MAX( nv_size, (int)sizeof(CvSetElem) ), sizeof(void*)); + w->wnodes.reserve(n); + w->wsplits.reserve(n); + w->wsubsets.reserve(n*w->maxSubsetSize); + w->wnodes.clear(); + w->wsplits.clear(); + w->wsubsets.clear(); - temp_block_size = nv_size; + int cv_n = params.CVFolds; - if( cv_n ) + if( cv_n > 0 ) { - if( sample_count < cv_n*MAX(params.min_sample_count,10) ) - CV_ERROR( CV_StsOutOfRange, - "The many folds in cross-validation for such a small dataset" ); - - cv_size = cvAlign( cv_n*(sizeof(int) + sizeof(double)*2), sizeof(double) ); - temp_block_size = MAX(temp_block_size, cv_size); + w->cv_Tn.resize(n*cv_n); + w->cv_node_error.resize(n*cv_n); + w->cv_node_risk.resize(n*cv_n); } - temp_block_size = MAX( temp_block_size + block_size_delta, min_block_size ); - CV_CALL( temp_storage = cvCreateMemStorage( temp_block_size )); - CV_CALL( nv_heap = cvCreateSet( 0, sizeof(*nv_heap), nv_size, temp_storage )); - if( cv_size ) - CV_CALL( cv_heap = cvCreateSet( 0, sizeof(*cv_heap), cv_size, temp_storage )); - - CV_CALL( data_root = new_node( 0, sample_count, 0, 0 )); + // build the tree recursively + int w_root = addNodeAndTrySplit(-1, sidx); + int maxdepth = INT_MAX;//pruneCV(root); - max_c_count = 1; + int w_nidx = w_root, pidx = -1, depth = 0; + int root = (int)nodes.size(); - _fdst = 0; - _idst = 0; - if (ord_var_count) - _fdst = (float*)cvAlloc(sample_count*sizeof(_fdst[0])); - if (is_buf_16u && (cat_var_count || is_classifier)) - _idst = (int*)cvAlloc(sample_count*sizeof(_idst[0])); - - // transform the training data to convenient representation - for( vi = 0; vi <= var_count; vi++ ) + for(;;) { - int ci; - const uchar* mask = 0; - int64 m_step = 0, step; - const int* idata = 0; - const float* fdata = 0; - int num_valid = 0; - - if( vi < var_count ) // analyze i-th input variable - { - int vi0 = vidx ? vidx[vi] : vi; - ci = get_var_type(vi); - step = ds_step; m_step = ms_step; - if( CV_MAT_TYPE(_train_data->type) == CV_32SC1 ) - idata = _train_data->data.i + vi0*dv_step; - else - fdata = _train_data->data.fl + vi0*dv_step; - if( _missing_mask ) - mask = _missing_mask->data.ptr + vi0*mv_step; - } - else // analyze _responses - { - ci = cat_var_count; - step = CV_IS_MAT_CONT(_responses->type) ? - 1 : _responses->step / CV_ELEM_SIZE(_responses->type); - if( CV_MAT_TYPE(_responses->type) == CV_32SC1 ) - idata = _responses->data.i; - else - fdata = _responses->data.fl; - } + const WNode& wnode = w->wnodes[w_nidx]; + Node node; + node.parent = pidx; + node.classIdx = wnode.class_idx; + node.value = wnode.value; + node.defaultDir = wnode.defaultDir; - if( (vi < var_count && ci>=0) || - (vi == var_count && is_classifier) ) // process categorical variable or response + int wsplit_idx = wnode.split; + if( wsplit_idx >= 0 ) { - int c_count, prev_label; - int* c_map; - - if (is_buf_16u) - udst = (unsigned short*)(buf->data.s + vi*sample_count); - else - idst = buf->data.i + vi*sample_count; - - // copy data - for( i = 0; i < sample_count; i++ ) - { - int val = INT_MAX, si = sidx ? sidx[i] : i; - if( !mask || !mask[(size_t)si*m_step] ) - { - if( idata ) - val = idata[(size_t)si*step]; - else - { - float t = fdata[(size_t)si*step]; - val = cvRound(t); - if( fabs(t - val) > FLT_EPSILON ) - { - sprintf( err, "%d-th value of %d-th (categorical) " - "variable is not an integer", i, vi ); - CV_ERROR( CV_StsBadArg, err ); - } - } - - if( val == INT_MAX ) - { - sprintf( err, "%d-th value of %d-th (categorical) " - "variable is too large", i, vi ); - CV_ERROR( CV_StsBadArg, err ); - } - num_valid++; - } - if (is_buf_16u) - { - _idst[i] = val; - pair16u32s_ptr[i].u = udst + i; - pair16u32s_ptr[i].i = _idst + i; - } - else - { - idst[i] = val; - int_ptr[i] = idst + i; - } - } - - c_count = num_valid > 0; - if (is_buf_16u) - { - std::sort(pair16u32s_ptr, pair16u32s_ptr + sample_count, LessThanPairs()); - // count the categories - for( i = 1; i < num_valid; i++ ) - if (*pair16u32s_ptr[i].i != *pair16u32s_ptr[i-1].i) - c_count ++ ; - } - else - { - std::sort(int_ptr, int_ptr + sample_count, LessThanPtr()); - // count the categories - for( i = 1; i < num_valid; i++ ) - c_count += *int_ptr[i] != *int_ptr[i-1]; - } - - if( vi > 0 ) - max_c_count = MAX( max_c_count, c_count ); - cat_count->data.i[ci] = c_count; - cat_ofs->data.i[ci] = total_c_count; - - // resize cat_map, if need - if( cat_map->cols < total_c_count + c_count ) - { - tmp_map = cat_map; - CV_CALL( cat_map = cvCreateMat( 1, - MAX(cat_map->cols*3/2,total_c_count+c_count), CV_32SC1 )); - for( i = 0; i < total_c_count; i++ ) - cat_map->data.i[i] = tmp_map->data.i[i]; - cvReleaseMat( &tmp_map ); - } - - c_map = cat_map->data.i + total_c_count; - total_c_count += c_count; - - c_count = -1; - if (is_buf_16u) - { - // compact the class indices and build the map - prev_label = ~*pair16u32s_ptr[0].i; - for( i = 0; i < num_valid; i++ ) - { - int cur_label = *pair16u32s_ptr[i].i; - if( cur_label != prev_label ) - c_map[++c_count] = prev_label = cur_label; - *pair16u32s_ptr[i].u = (unsigned short)c_count; - } - // replace labels for missing values with -1 - for( ; i < sample_count; i++ ) - *pair16u32s_ptr[i].u = 65535; - } - else + const WSplit& wsplit = w->wsplits[wsplit_idx]; + Split split; + split.c = wsplit.c; + split.quality = wsplit.quality; + split.inversed = wsplit.inversed; + split.varIdx = wsplit.varIdx; + split.subsetOfs = -1; + if( wsplit.subsetOfs >= 0 ) { - // compact the class indices and build the map - prev_label = ~*int_ptr[0]; - for( i = 0; i < num_valid; i++ ) - { - int cur_label = *int_ptr[i]; - if( cur_label != prev_label ) - c_map[++c_count] = prev_label = cur_label; - *int_ptr[i] = c_count; - } - // replace labels for missing values with -1 - for( ; i < sample_count; i++ ) - *int_ptr[i] = -1; + int ssize = getSubsetSize(split.varIdx); + split.subsetOfs = (int)subsets.size(); + subsets.resize(split.subsetOfs + ssize); + memcpy(&subsets[split.subsetOfs], &w->wsubsets[wsplit.subsetOfs], ssize*sizeof(int)); } + node.split = (int)splits.size(); + splits.push_back(split); } - else if( ci < 0 ) // process ordered variable + int nidx = (int)nodes.size(); + nodes.push_back(node); + if( pidx >= 0 ) { - if (is_buf_16u) - udst = (unsigned short*)(buf->data.s + vi*sample_count); - else - idst = buf->data.i + vi*sample_count; - - for( i = 0; i < sample_count; i++ ) + int w_pidx = w->wnodes[w_nidx].parent; + if( w->wnodes[w_pidx].left == w_nidx ) { - float val = ord_nan; - int si = sidx ? sidx[i] : i; - if( !mask || !mask[(size_t)si*m_step] ) - { - if( idata ) - val = (float)idata[(size_t)si*step]; - else - val = fdata[(size_t)si*step]; - - if( fabs(val) >= ord_nan ) - { - sprintf( err, "%d-th value of %d-th (ordered) " - "variable (=%g) is too large", i, vi, val ); - CV_ERROR( CV_StsBadArg, err ); - } - num_valid++; - } - - if (is_buf_16u) - udst[i] = (unsigned short)i; // TODO: memory corruption may be here - else - idst[i] = i; - _fdst[i] = val; - + nodes[pidx].left = nidx; } - if (is_buf_16u) - std::sort(udst, udst + sample_count, LessThanIdx(_fdst)); else - std::sort(idst, idst + sample_count, LessThanIdx(_fdst)); - } - - if( vi < var_count ) - data_root->set_num_valid(vi, num_valid); - } - - // set sample labels - if (is_buf_16u) - udst = (unsigned short*)(buf->data.s + work_var_count*sample_count); - else - idst = buf->data.i + work_var_count*sample_count; - - for (i = 0; i < sample_count; i++) - { - if (udst) - udst[i] = sidx ? (unsigned short)sidx[i] : (unsigned short)i; - else - idst[i] = sidx ? sidx[i] : i; - } - - if( cv_n ) - { - unsigned short* usdst = 0; - int* idst2 = 0; - - if (is_buf_16u) - { - usdst = (unsigned short*)(buf->data.s + (get_work_var_count()-1)*sample_count); - for( i = vi = 0; i < sample_count; i++ ) { - usdst[i] = (unsigned short)vi++; - vi &= vi < cv_n ? -1 : 0; + CV_Assert(w->wnodes[w_pidx].right == w_nidx); + nodes[pidx].right = nidx; } + } - for( i = 0; i < sample_count; i++ ) - { - int a = (*rng)(sample_count); - int b = (*rng)(sample_count); - unsigned short unsh = (unsigned short)vi; - CV_SWAP( usdst[a], usdst[b], unsh ); - } + if( wnode.left >= 0 && depth+1 < maxdepth ) + { + w_nidx = wnode.left; + pidx = nidx; + depth++; } else { - idst2 = buf->data.i + (get_work_var_count()-1)*sample_count; - for( i = vi = 0; i < sample_count; i++ ) - { - idst2[i] = vi++; - vi &= vi < cv_n ? -1 : 0; - } - - for( i = 0; i < sample_count; i++ ) + int w_pidx = wnode.parent; + while( w_pidx >= 0 && w->wnodes[w_pidx].right == w_nidx ) { - int a = (*rng)(sample_count); - int b = (*rng)(sample_count); - CV_SWAP( idst2[a], idst2[b], vi ); + w_nidx = w_pidx; + w_pidx = w->wnodes[w_pidx].parent; + nidx = pidx; + pidx = nodes[pidx].parent; + depth--; } - } - } - if ( cat_map ) - cat_map->cols = MAX( total_c_count, 1 ); - - max_split_size = cvAlign(sizeof(CvDTreeSplit) + - (MAX(0,max_c_count - 33)/32)*sizeof(int),sizeof(void*)); - CV_CALL( split_heap = cvCreateSet( 0, sizeof(*split_heap), max_split_size, tree_storage )); + if( w_pidx < 0 ) + break; - have_priors = is_classifier && params.priors; - if( is_classifier ) - { - int m = get_num_classes(); - double sum = 0; - CV_CALL( priors = cvCreateMat( 1, m, CV_64F )); - for( i = 0; i < m; i++ ) - { - double val = have_priors ? params.priors[i] : 1.; - if( val <= 0 ) - CV_ERROR( CV_StsOutOfRange, "Every class weight should be positive" ); - priors->data.db[i] = val; - sum += val; + w_nidx = w->wnodes[w_pidx].right; + CV_Assert( w_nidx >= 0 ); } - - // normalize weights - if( have_priors ) - cvScale( priors, priors, 1./sum ); - - CV_CALL( priors_mult = cvCloneMat( priors )); - CV_CALL( counts = cvCreateMat( 1, m, CV_32SC1 )); } - - - CV_CALL( direction = cvCreateMat( 1, sample_count, CV_8UC1 )); - CV_CALL( split_buf = cvCreateMat( 1, sample_count, CV_32SC1 )); - - __END__; - - if( data ) - delete data; - - if (_fdst) - cvFree( &_fdst ); - if (_idst) - cvFree( &_idst ); - cvFree( &int_ptr ); - cvFree( &pair16u32s_ptr); - cvReleaseMat( &var_type0 ); - cvReleaseMat( &sample_indices ); - cvReleaseMat( &tmp_map ); + roots.push_back(root); + return root; } -void CvDTreeTrainData::do_responses_copy() +DTrees::Params DTreesImpl::getDParams() const { - responses_copy = cvCreateMat( responses->rows, responses->cols, responses->type ); - cvCopy( responses, responses_copy); - responses = responses_copy; + return params0; } -CvDTreeNode* CvDTreeTrainData::subsample_data( const CvMat* _subsample_idx ) +void DTreesImpl::setDParams(const Params& _params) { - CvDTreeNode* root = 0; - CvMat* isubsample_idx = 0; - CvMat* subsample_co = 0; + params0 = params = _params; + if( params.maxCategories < 2 ) + CV_Error( CV_StsOutOfRange, "params.max_categories should be >= 2" ); + params.maxCategories = std::min( params.maxCategories, 15 ); - bool isMakeRootCopy = true; + if( params.maxDepth < 0 ) + CV_Error( CV_StsOutOfRange, "params.max_depth should be >= 0" ); + params.maxDepth = std::min( params.maxDepth, 25 ); - CV_FUNCNAME( "CvDTreeTrainData::subsample_data" ); + params.minSampleCount = std::max(params.minSampleCount, 1); - __BEGIN__; + if( params.CVFolds < 0 ) + CV_Error( CV_StsOutOfRange, + "params.CVFolds should be =0 (the tree is not pruned) " + "or n>0 (tree is pruned using n-fold cross-validation)" ); - if( !data_root ) - CV_ERROR( CV_StsError, "No training data has been set" ); + if( params.CVFolds == 1 ) + params.CVFolds = 0; + + if( params.regressionAccuracy < 0 ) + CV_Error( CV_StsOutOfRange, "params.regression_accuracy should be >= 0" ); +} - if( _subsample_idx ) - { - CV_CALL( isubsample_idx = cvPreprocessIndexArray( _subsample_idx, sample_count )); +int DTreesImpl::addNodeAndTrySplit( int parent, const vector& sidx ) +{ + w->wnodes.push_back(WNode()); + int nidx = (int)(w->wnodes.size() - 1); + WNode& node = w->wnodes.back(); - if( isubsample_idx->cols + isubsample_idx->rows - 1 == sample_count ) - { - const int* sidx = isubsample_idx->data.i; - for( int i = 0; i < sample_count; i++ ) - { - if( sidx[i] != i ) - { - isMakeRootCopy = false; - break; - } - } - } - else - isMakeRootCopy = false; - } + node.parent = parent; + node.depth = parent >= 0 ? w->wnodes[parent].depth + 1 : 0; + int nfolds = params.CVFolds; - if( isMakeRootCopy ) + if( nfolds > 0 ) { - // make a copy of the root node - CvDTreeNode temp; - int i; - root = new_node( 0, 1, 0, 0 ); - temp = *root; - *root = *data_root; - root->num_valid = temp.num_valid; - if( root->num_valid ) - { - for( i = 0; i < var_count; i++ ) - root->num_valid[i] = data_root->num_valid[i]; - } - root->cv_Tn = temp.cv_Tn; - root->cv_node_risk = temp.cv_node_risk; - root->cv_node_error = temp.cv_node_error; + w->cv_Tn.resize((nidx+1)*nfolds); + w->cv_node_error.resize((nidx+1)*nfolds); + w->cv_node_risk.resize((nidx+1)*nfolds); } - else - { - int* sidx = isubsample_idx->data.i; - // co - array of count/offset pairs (to handle duplicated values in _subsample_idx) - int* co, cur_ofs = 0; - int vi, i; - int workVarCount = get_work_var_count(); - int count = isubsample_idx->rows + isubsample_idx->cols - 1; - - root = new_node( 0, count, 1, 0 ); - - CV_CALL( subsample_co = cvCreateMat( 1, sample_count*2, CV_32SC1 )); - cvZero( subsample_co ); - co = subsample_co->data.i; - for( i = 0; i < count; i++ ) - co[sidx[i]*2]++; - for( i = 0; i < sample_count; i++ ) - { - if( co[i*2] ) - { - co[i*2+1] = cur_ofs; - cur_ofs += co[i*2]; - } - else - co[i*2+1] = -1; - } - - cv::AutoBuffer inn_buf(sample_count*(2*sizeof(int) + sizeof(float))); - for( vi = 0; vi < workVarCount; vi++ ) - { - int ci = get_var_type(vi); - if( ci >= 0 || vi >= var_count ) - { - int num_valid = 0; - const int* src = CvDTreeTrainData::get_cat_var_data( data_root, vi, (int*)(uchar*)inn_buf ); + int i, n = node.sample_count = (int)sidx.size(); + bool can_split = true; + vector sleft, sright; - if (is_buf_16u) - { - unsigned short* udst = (unsigned short*)(buf->data.s + root->buf_idx*get_length_subbuf() + - vi*sample_count + root->offset); - for( i = 0; i < count; i++ ) - { - int val = src[sidx[i]]; - udst[i] = (unsigned short)val; - num_valid += val >= 0; - } - } - else - { - int* idst = buf->data.i + root->buf_idx*get_length_subbuf() + - vi*sample_count + root->offset; - for( i = 0; i < count; i++ ) - { - int val = src[sidx[i]]; - idst[i] = val; - num_valid += val >= 0; - } - } + calcValue( nidx, sidx ); - if( vi < var_count ) - root->set_num_valid(vi, num_valid); - } - else - { - int *src_idx_buf = (int*)(uchar*)inn_buf; - float *src_val_buf = (float*)(src_idx_buf + sample_count); - int* sample_indices_buf = (int*)(src_val_buf + sample_count); - const int* src_idx = 0; - const float* src_val = 0; - get_ord_var_data( data_root, vi, src_val_buf, src_idx_buf, &src_val, &src_idx, sample_indices_buf ); - int j = 0, idx, count_i; - int num_valid = data_root->get_num_valid(vi); - - if (is_buf_16u) - { - unsigned short* udst_idx = (unsigned short*)(buf->data.s + root->buf_idx*get_length_subbuf() + - vi*sample_count + data_root->offset); - for( i = 0; i < num_valid; i++ ) - { - idx = src_idx[i]; - count_i = co[idx*2]; - if( count_i ) - for( cur_ofs = co[idx*2+1]; count_i > 0; count_i--, j++, cur_ofs++ ) - udst_idx[j] = (unsigned short)cur_ofs; - } + if( n <= params.minSampleCount || node.depth >= params.maxDepth ) + can_split = false; + else if( _isClassifier ) + { + const int* responses = &w->cat_responses[0]; + const int* s = &sidx[0]; + int first = responses[s[0]]; + for( i = 1; i < n; i++ ) + if( responses[s[i]] != first ) + break; + if( i == n ) + can_split = false; + } + else + { + if( sqrt(node.node_risk) < params.regressionAccuracy ) + can_split = false; + } - root->set_num_valid(vi, j); + if( can_split ) + node.split = findBestSplit( sidx ); - for( ; i < sample_count; i++ ) - { - idx = src_idx[i]; - count_i = co[idx*2]; - if( count_i ) - for( cur_ofs = co[idx*2+1]; count_i > 0; count_i--, j++, cur_ofs++ ) - udst_idx[j] = (unsigned short)cur_ofs; - } - } - else - { - int* idst_idx = buf->data.i + root->buf_idx*get_length_subbuf() + - vi*sample_count + root->offset; - for( i = 0; i < num_valid; i++ ) - { - idx = src_idx[i]; - count_i = co[idx*2]; - if( count_i ) - for( cur_ofs = co[idx*2+1]; count_i > 0; count_i--, j++, cur_ofs++ ) - idst_idx[j] = cur_ofs; - } + //printf("depth=%d, nidx=%d, parent=%d, n=%d, %s, value=%.1f, risk=%.1f\n", node.depth, nidx, node.parent, n, (node.split < 0 ? "leaf" : varType[w->wsplits[node.split].varIdx] == VAR_CATEGORICAL ? "cat" : "ord"), node.value, node.node_risk); - root->set_num_valid(vi, j); + if( node.split >= 0 ) + { + node.defaultDir = calcDir( node.split, sidx, sleft, sright ); + if( params.useSurrogates ) + CV_Error( CV_StsNotImplemented, "surrogate splits are not implemented yet"); - for( ; i < sample_count; i++ ) - { - idx = src_idx[i]; - count_i = co[idx*2]; - if( count_i ) - for( cur_ofs = co[idx*2+1]; count_i > 0; count_i--, j++, cur_ofs++ ) - idst_idx[j] = cur_ofs; - } - } - } - } - // sample indices subsampling - const int* sample_idx_src = get_sample_indices(data_root, (int*)(uchar*)inn_buf); - if (is_buf_16u) - { - unsigned short* sample_idx_dst = (unsigned short*)(buf->data.s + root->buf_idx*get_length_subbuf() + - workVarCount*sample_count + root->offset); - for (i = 0; i < count; i++) - sample_idx_dst[i] = (unsigned short)sample_idx_src[sidx[i]]; - } - else - { - int* sample_idx_dst = buf->data.i + root->buf_idx*get_length_subbuf() + - workVarCount*sample_count + root->offset; - for (i = 0; i < count; i++) - sample_idx_dst[i] = sample_idx_src[sidx[i]]; - } + w->wnodes[nidx].left = addNodeAndTrySplit( nidx, sleft ); + w->wnodes[nidx].right = addNodeAndTrySplit( nidx, sright ); } - __END__; - - cvReleaseMat( &isubsample_idx ); - cvReleaseMat( &subsample_co ); - - return root; + return nidx; } - -void CvDTreeTrainData::get_vectors( const CvMat* _subsample_idx, - float* values, uchar* missing, - float* _responses, bool get_class_idx ) +int DTreesImpl::findBestSplit( const vector& _sidx ) { - CvMat* subsample_idx = 0; - CvMat* subsample_co = 0; - - CV_FUNCNAME( "CvDTreeTrainData::get_vectors" ); - - __BEGIN__; + const vector& activeVars = getActiveVars(); + int splitidx = -1; + int vi_, nv = (int)activeVars.size(); + AutoBuffer buf(w->maxSubsetSize*2); + int *subset = buf, *best_subset = subset + w->maxSubsetSize; + WSplit split, best_split; + best_split.quality = 0.; - int i, vi, total = sample_count, count = total, cur_ofs = 0; - int* sidx = 0; - int* co = 0; - - cv::AutoBuffer inn_buf(sample_count*(2*sizeof(int) + sizeof(float))); - if( _subsample_idx ) + for( vi_ = 0; vi_ < nv; vi_++ ) { - CV_CALL( subsample_idx = cvPreprocessIndexArray( _subsample_idx, sample_count )); - sidx = subsample_idx->data.i; - CV_CALL( subsample_co = cvCreateMat( 1, sample_count*2, CV_32SC1 )); - co = subsample_co->data.i; - cvZero( subsample_co ); - count = subsample_idx->cols + subsample_idx->rows - 1; - for( i = 0; i < count; i++ ) - co[sidx[i]*2]++; - for( i = 0; i < total; i++ ) + int vi = activeVars[vi_]; + if( varType[vi] == VAR_CATEGORICAL ) { - int count_i = co[i*2]; - if( count_i ) - { - co[i*2+1] = cur_ofs*var_count; - cur_ofs += count_i; - } + if( _isClassifier ) + split = findSplitCatClass(vi, _sidx, 0, subset); + else + split = findSplitCatReg(vi, _sidx, 0, subset); } - } - - if( missing ) - memset( missing, 1, count*var_count ); - - for( vi = 0; vi < var_count; vi++ ) - { - int ci = get_var_type(vi); - if( ci >= 0 ) // categorical + else { - float* dst = values + vi; - uchar* m = missing ? missing + vi : 0; - const int* src = get_cat_var_data(data_root, vi, (int*)(uchar*)inn_buf); - - for( i = 0; i < count; i++, dst += var_count ) - { - int idx = sidx ? sidx[i] : i; - int val = src[idx]; - *dst = (float)val; - if( m ) - { - *m = (!is_buf_16u && val < 0) || (is_buf_16u && (val == 65535)); - m += var_count; - } - } + if( _isClassifier ) + split = findSplitOrdClass(vi, _sidx, 0); + else + split = findSplitOrdReg(vi, _sidx, 0); } - else // ordered + if( split.quality > best_split.quality ) { - float* dst = values + vi; - uchar* m = missing ? missing + vi : 0; - int count1 = data_root->get_num_valid(vi); - float *src_val_buf = (float*)(uchar*)inn_buf; - int* src_idx_buf = (int*)(src_val_buf + sample_count); - int* sample_indices_buf = src_idx_buf + sample_count; - const float *src_val = 0; - const int* src_idx = 0; - get_ord_var_data(data_root, vi, src_val_buf, src_idx_buf, &src_val, &src_idx, sample_indices_buf); - - for( i = 0; i < count1; i++ ) - { - int idx = src_idx[i]; - int count_i = 1; - if( co ) - { - count_i = co[idx*2]; - cur_ofs = co[idx*2+1]; - } - else - cur_ofs = idx*var_count; - if( count_i ) - { - float val = src_val[i]; - for( ; count_i > 0; count_i--, cur_ofs += var_count ) - { - dst[cur_ofs] = val; - if( m ) - m[cur_ofs] = 0; - } - } - } - } - } - - // copy responses - if( _responses ) - { - if( is_classifier ) - { - const int* src = get_class_labels(data_root, (int*)(uchar*)inn_buf); - for( i = 0; i < count; i++ ) - { - int idx = sidx ? sidx[i] : i; - int val = get_class_idx ? src[idx] : - cat_map->data.i[cat_ofs->data.i[cat_var_count]+src[idx]]; - _responses[i] = (float)val; - } - } - else - { - float* val_buf = (float*)(uchar*)inn_buf; - int* sample_idx_buf = (int*)(val_buf + sample_count); - const float* _values = get_ord_responses(data_root, val_buf, sample_idx_buf); - for( i = 0; i < count; i++ ) - { - int idx = sidx ? sidx[i] : i; - _responses[i] = _values[idx]; - } - } - } - - __END__; - - cvReleaseMat( &subsample_idx ); - cvReleaseMat( &subsample_co ); -} - - -CvDTreeNode* CvDTreeTrainData::new_node( CvDTreeNode* parent, int count, - int storage_idx, int offset ) -{ - CvDTreeNode* node = (CvDTreeNode*)cvSetNew( node_heap ); - - node->sample_count = count; - node->depth = parent ? parent->depth + 1 : 0; - node->parent = parent; - node->left = node->right = 0; - node->split = 0; - node->value = 0; - node->class_idx = 0; - node->maxlr = 0.; - - node->buf_idx = storage_idx; - node->offset = offset; - if( nv_heap ) - node->num_valid = (int*)cvSetNew( nv_heap ); - else - node->num_valid = 0; - node->alpha = node->node_risk = node->tree_risk = node->tree_error = 0.; - node->complexity = 0; - - if( params.cv_folds > 0 && cv_heap ) - { - int cv_n = params.cv_folds; - node->Tn = INT_MAX; - node->cv_Tn = (int*)cvSetNew( cv_heap ); - node->cv_node_risk = (double*)cvAlignPtr(node->cv_Tn + cv_n, sizeof(double)); - node->cv_node_error = node->cv_node_risk + cv_n; - } - else - { - node->Tn = 0; - node->cv_Tn = 0; - node->cv_node_risk = 0; - node->cv_node_error = 0; - } - - return node; -} - - -CvDTreeSplit* CvDTreeTrainData::new_split_ord( int vi, float cmp_val, - int split_point, int inversed, float quality ) -{ - CvDTreeSplit* split = (CvDTreeSplit*)cvSetNew( split_heap ); - split->var_idx = vi; - split->condensed_idx = INT_MIN; - split->ord.c = cmp_val; - split->ord.split_point = split_point; - split->inversed = inversed; - split->quality = quality; - split->next = 0; - - return split; -} - - -CvDTreeSplit* CvDTreeTrainData::new_split_cat( int vi, float quality ) -{ - CvDTreeSplit* split = (CvDTreeSplit*)cvSetNew( split_heap ); - int i, n = (max_c_count + 31)/32; - - split->var_idx = vi; - split->condensed_idx = INT_MIN; - split->inversed = 0; - split->quality = quality; - for( i = 0; i < n; i++ ) - split->subset[i] = 0; - split->next = 0; - - return split; -} - - -void CvDTreeTrainData::free_node( CvDTreeNode* node ) -{ - CvDTreeSplit* split = node->split; - free_node_data( node ); - while( split ) - { - CvDTreeSplit* next = split->next; - cvSetRemoveByPtr( split_heap, split ); - split = next; - } - node->split = 0; - cvSetRemoveByPtr( node_heap, node ); -} - - -void CvDTreeTrainData::free_node_data( CvDTreeNode* node ) -{ - if( node->num_valid ) - { - cvSetRemoveByPtr( nv_heap, node->num_valid ); - node->num_valid = 0; - } - // do not free cv_* fields, as all the cross-validation related data is released at once. -} - - -void CvDTreeTrainData::free_train_data() -{ - cvReleaseMat( &counts ); - cvReleaseMat( &buf ); - cvReleaseMat( &direction ); - cvReleaseMat( &split_buf ); - cvReleaseMemStorage( &temp_storage ); - cvReleaseMat( &responses_copy ); - cv_heap = nv_heap = 0; -} - - -void CvDTreeTrainData::clear() -{ - free_train_data(); - - cvReleaseMemStorage( &tree_storage ); - - cvReleaseMat( &var_idx ); - cvReleaseMat( &var_type ); - cvReleaseMat( &cat_count ); - cvReleaseMat( &cat_ofs ); - cvReleaseMat( &cat_map ); - cvReleaseMat( &priors ); - cvReleaseMat( &priors_mult ); - - node_heap = split_heap = 0; - - sample_count = var_all = var_count = max_c_count = ord_var_count = cat_var_count = 0; - have_labels = have_priors = is_classifier = false; - - buf_count = buf_size = 0; - shared = false; - - data_root = 0; - - rng = &cv::theRNG(); -} - - -int CvDTreeTrainData::get_num_classes() const -{ - return is_classifier ? cat_count->data.i[cat_var_count] : 0; -} - - -int CvDTreeTrainData::get_var_type(int vi) const -{ - return var_type->data.i[vi]; -} - -void CvDTreeTrainData::get_ord_var_data( CvDTreeNode* n, int vi, float* ord_values_buf, int* sorted_indices_buf, - const float** ord_values, const int** sorted_indices, int* sample_indices_buf ) -{ - int vidx = var_idx ? var_idx->data.i[vi] : vi; - int node_sample_count = n->sample_count; - int td_step = train_data->step/CV_ELEM_SIZE(train_data->type); - - const int* sample_indices = get_sample_indices(n, sample_indices_buf); - - if( !is_buf_16u ) - *sorted_indices = buf->data.i + n->buf_idx*get_length_subbuf() + - vi*sample_count + n->offset; - else { - const unsigned short* short_indices = (const unsigned short*)(buf->data.s + n->buf_idx*get_length_subbuf() + - vi*sample_count + n->offset ); - for( int i = 0; i < node_sample_count; i++ ) - sorted_indices_buf[i] = short_indices[i]; - *sorted_indices = sorted_indices_buf; - } - - if( tflag == CV_ROW_SAMPLE ) - { - for( int i = 0; i < node_sample_count && - ((((*sorted_indices)[i] >= 0) && !is_buf_16u) || (((*sorted_indices)[i] != 65535) && is_buf_16u)); i++ ) - { - int idx = (*sorted_indices)[i]; - idx = sample_indices[idx]; - ord_values_buf[i] = *(train_data->data.fl + idx * td_step + vidx); - } - } - else - for( int i = 0; i < node_sample_count && - ((((*sorted_indices)[i] >= 0) && !is_buf_16u) || (((*sorted_indices)[i] != 65535) && is_buf_16u)); i++ ) - { - int idx = (*sorted_indices)[i]; - idx = sample_indices[idx]; - ord_values_buf[i] = *(train_data->data.fl + vidx* td_step + idx); - } - - *ord_values = ord_values_buf; -} - - -const int* CvDTreeTrainData::get_class_labels( CvDTreeNode* n, int* labels_buf ) -{ - if (is_classifier) - return get_cat_var_data( n, var_count, labels_buf); - return 0; -} - -const int* CvDTreeTrainData::get_sample_indices( CvDTreeNode* n, int* indices_buf ) -{ - return get_cat_var_data( n, get_work_var_count(), indices_buf ); -} - -const float* CvDTreeTrainData::get_ord_responses( CvDTreeNode* n, float* values_buf, int*sample_indices_buf ) -{ - int _sample_count = n->sample_count; - int r_step = CV_IS_MAT_CONT(responses->type) ? 1 : responses->step/CV_ELEM_SIZE(responses->type); - const int* indices = get_sample_indices(n, sample_indices_buf); - - for( int i = 0; i < _sample_count && - (((indices[i] >= 0) && !is_buf_16u) || ((indices[i] != 65535) && is_buf_16u)); i++ ) - { - int idx = indices[i]; - values_buf[i] = *(responses->data.fl + idx * r_step); - } - - return values_buf; -} - - -const int* CvDTreeTrainData::get_cv_labels( CvDTreeNode* n, int* labels_buf ) -{ - if (have_labels) - return get_cat_var_data( n, get_work_var_count()- 1, labels_buf); - return 0; -} - - -const int* CvDTreeTrainData::get_cat_var_data( CvDTreeNode* n, int vi, int* cat_values_buf) -{ - const int* cat_values = 0; - if( !is_buf_16u ) - cat_values = buf->data.i + n->buf_idx*get_length_subbuf() + - vi*sample_count + n->offset; - else { - const unsigned short* short_values = (const unsigned short*)(buf->data.s + n->buf_idx*get_length_subbuf() + - vi*sample_count + n->offset); - for( int i = 0; i < n->sample_count; i++ ) - cat_values_buf[i] = short_values[i]; - cat_values = cat_values_buf; - } - return cat_values; -} - - -int CvDTreeTrainData::get_child_buf_idx( CvDTreeNode* n ) -{ - int idx = n->buf_idx + 1; - if( idx >= buf_count ) - idx = shared ? 1 : 0; - return idx; -} - - -void CvDTreeTrainData::write_params( CvFileStorage* fs ) const -{ - CV_FUNCNAME( "CvDTreeTrainData::write_params" ); - - __BEGIN__; - - int vi, vcount = var_count; - - cvWriteInt( fs, "is_classifier", is_classifier ? 1 : 0 ); - cvWriteInt( fs, "var_all", var_all ); - cvWriteInt( fs, "var_count", var_count ); - cvWriteInt( fs, "ord_var_count", ord_var_count ); - cvWriteInt( fs, "cat_var_count", cat_var_count ); - - cvStartWriteStruct( fs, "training_params", CV_NODE_MAP ); - cvWriteInt( fs, "use_surrogates", params.use_surrogates ? 1 : 0 ); - - if( is_classifier ) - { - cvWriteInt( fs, "max_categories", params.max_categories ); - } - else - { - cvWriteReal( fs, "regression_accuracy", params.regression_accuracy ); - } - - cvWriteInt( fs, "max_depth", params.max_depth ); - cvWriteInt( fs, "min_sample_count", params.min_sample_count ); - cvWriteInt( fs, "cross_validation_folds", params.cv_folds ); - - if( params.cv_folds > 1 ) - { - cvWriteInt( fs, "use_1se_rule", params.use_1se_rule ? 1 : 0 ); - cvWriteInt( fs, "truncate_pruned_tree", params.truncate_pruned_tree ? 1 : 0 ); - } - - if( priors ) - cvWrite( fs, "priors", priors ); - - cvEndWriteStruct( fs ); - - if( var_idx ) - cvWrite( fs, "var_idx", var_idx ); - - cvStartWriteStruct( fs, "var_type", CV_NODE_SEQ+CV_NODE_FLOW ); - - for( vi = 0; vi < vcount; vi++ ) - cvWriteInt( fs, 0, var_type->data.i[vi] >= 0 ); - - cvEndWriteStruct( fs ); - - if( cat_count && (cat_var_count > 0 || is_classifier) ) - { - CV_ASSERT( cat_count != 0 ); - cvWrite( fs, "cat_count", cat_count ); - cvWrite( fs, "cat_map", cat_map ); - } - - __END__; -} - - -void CvDTreeTrainData::read_params( CvFileStorage* fs, CvFileNode* node ) -{ - CV_FUNCNAME( "CvDTreeTrainData::read_params" ); - - __BEGIN__; - - CvFileNode *tparams_node, *vartype_node; - CvSeqReader reader; - int vi, max_split_size, tree_block_size; - - is_classifier = (cvReadIntByName( fs, node, "is_classifier" ) != 0); - var_all = cvReadIntByName( fs, node, "var_all" ); - var_count = cvReadIntByName( fs, node, "var_count", var_all ); - cat_var_count = cvReadIntByName( fs, node, "cat_var_count" ); - ord_var_count = cvReadIntByName( fs, node, "ord_var_count" ); - - tparams_node = cvGetFileNodeByName( fs, node, "training_params" ); - - if( tparams_node ) // training parameters are not necessary - { - params.use_surrogates = cvReadIntByName( fs, tparams_node, "use_surrogates", 1 ) != 0; - - if( is_classifier ) - { - params.max_categories = cvReadIntByName( fs, tparams_node, "max_categories" ); - } - else - { - params.regression_accuracy = - (float)cvReadRealByName( fs, tparams_node, "regression_accuracy" ); - } - - params.max_depth = cvReadIntByName( fs, tparams_node, "max_depth" ); - params.min_sample_count = cvReadIntByName( fs, tparams_node, "min_sample_count" ); - params.cv_folds = cvReadIntByName( fs, tparams_node, "cross_validation_folds" ); - - if( params.cv_folds > 1 ) - { - params.use_1se_rule = cvReadIntByName( fs, tparams_node, "use_1se_rule" ) != 0; - params.truncate_pruned_tree = - cvReadIntByName( fs, tparams_node, "truncate_pruned_tree" ) != 0; - } - - priors = (CvMat*)cvReadByName( fs, tparams_node, "priors" ); - if( priors ) - { - if( !CV_IS_MAT(priors) ) - CV_ERROR( CV_StsParseError, "priors must stored as a matrix" ); - priors_mult = cvCloneMat( priors ); - } - } - - CV_CALL( var_idx = (CvMat*)cvReadByName( fs, node, "var_idx" )); - if( var_idx ) - { - if( !CV_IS_MAT(var_idx) || - (var_idx->cols != 1 && var_idx->rows != 1) || - var_idx->cols + var_idx->rows - 1 != var_count || - CV_MAT_TYPE(var_idx->type) != CV_32SC1 ) - CV_ERROR( CV_StsParseError, - "var_idx (if exist) must be valid 1d integer vector containing elements" ); - - for( vi = 0; vi < var_count; vi++ ) - if( (unsigned)var_idx->data.i[vi] >= (unsigned)var_all ) - CV_ERROR( CV_StsOutOfRange, "some of var_idx elements are out of range" ); - } - - ////// read var type - CV_CALL( var_type = cvCreateMat( 1, var_count + 2, CV_32SC1 )); - - cat_var_count = 0; - ord_var_count = -1; - vartype_node = cvGetFileNodeByName( fs, node, "var_type" ); - - if( vartype_node && CV_NODE_TYPE(vartype_node->tag) == CV_NODE_INT && var_count == 1 ) - var_type->data.i[0] = vartype_node->data.i ? cat_var_count++ : ord_var_count--; - else - { - if( !vartype_node || CV_NODE_TYPE(vartype_node->tag) != CV_NODE_SEQ || - vartype_node->data.seq->total != var_count ) - CV_ERROR( CV_StsParseError, "var_type must exist and be a sequence of 0's and 1's" ); - - cvStartReadSeq( vartype_node->data.seq, &reader ); - - for( vi = 0; vi < var_count; vi++ ) - { - CvFileNode* n = (CvFileNode*)reader.ptr; - if( CV_NODE_TYPE(n->tag) != CV_NODE_INT || (n->data.i & ~1) ) - CV_ERROR( CV_StsParseError, "var_type must exist and be a sequence of 0's and 1's" ); - var_type->data.i[vi] = n->data.i ? cat_var_count++ : ord_var_count--; - CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); - } - } - var_type->data.i[var_count] = cat_var_count; - - ord_var_count = ~ord_var_count; - ////// - - if( cat_var_count > 0 || is_classifier ) - { - int ccount, total_c_count = 0; - CV_CALL( cat_count = (CvMat*)cvReadByName( fs, node, "cat_count" )); - CV_CALL( cat_map = (CvMat*)cvReadByName( fs, node, "cat_map" )); - - if( !CV_IS_MAT(cat_count) || !CV_IS_MAT(cat_map) || - (cat_count->cols != 1 && cat_count->rows != 1) || - CV_MAT_TYPE(cat_count->type) != CV_32SC1 || - cat_count->cols + cat_count->rows - 1 != cat_var_count + is_classifier || - (cat_map->cols != 1 && cat_map->rows != 1) || - CV_MAT_TYPE(cat_map->type) != CV_32SC1 ) - CV_ERROR( CV_StsParseError, - "Both cat_count and cat_map must exist and be valid 1d integer vectors of an appropriate size" ); - - ccount = cat_var_count + is_classifier; - - CV_CALL( cat_ofs = cvCreateMat( 1, ccount + 1, CV_32SC1 )); - cat_ofs->data.i[0] = 0; - max_c_count = 1; - - for( vi = 0; vi < ccount; vi++ ) - { - int val = cat_count->data.i[vi]; - if( val <= 0 ) - CV_ERROR( CV_StsOutOfRange, "some of cat_count elements are out of range" ); - max_c_count = MAX( max_c_count, val ); - cat_ofs->data.i[vi+1] = total_c_count += val; - } - - if( cat_map->cols + cat_map->rows - 1 != total_c_count ) - CV_ERROR( CV_StsBadSize, - "cat_map vector length is not equal to the total number of categories in all categorical vars" ); - } - - max_split_size = cvAlign(sizeof(CvDTreeSplit) + - (MAX(0,max_c_count - 33)/32)*sizeof(int),sizeof(void*)); - - tree_block_size = MAX((int)sizeof(CvDTreeNode)*8, max_split_size); - tree_block_size = MAX(tree_block_size + block_size_delta, min_block_size); - CV_CALL( tree_storage = cvCreateMemStorage( tree_block_size )); - CV_CALL( node_heap = cvCreateSet( 0, sizeof(node_heap[0]), - sizeof(CvDTreeNode), tree_storage )); - CV_CALL( split_heap = cvCreateSet( 0, sizeof(split_heap[0]), - max_split_size, tree_storage )); - - __END__; -} - -/////////////////////// Decision Tree ///////////////////////// -CvDTreeParams::CvDTreeParams() : max_categories(10), max_depth(INT_MAX), min_sample_count(10), - cv_folds(10), use_surrogates(true), use_1se_rule(true), - truncate_pruned_tree(true), regression_accuracy(0.01f), priors(0) -{} - -CvDTreeParams::CvDTreeParams( int _max_depth, int _min_sample_count, - float _regression_accuracy, bool _use_surrogates, - int _max_categories, int _cv_folds, - bool _use_1se_rule, bool _truncate_pruned_tree, - const float* _priors ) : - max_categories(_max_categories), max_depth(_max_depth), - min_sample_count(_min_sample_count), cv_folds (_cv_folds), - use_surrogates(_use_surrogates), use_1se_rule(_use_1se_rule), - truncate_pruned_tree(_truncate_pruned_tree), - regression_accuracy(_regression_accuracy), - priors(_priors) -{} - -CvDTree::CvDTree() -{ - data = 0; - var_importance = 0; - default_model_name = "my_tree"; - - clear(); -} - - -void CvDTree::clear() -{ - cvReleaseMat( &var_importance ); - if( data ) - { - if( !data->shared ) - delete data; - else - free_tree(); - data = 0; - } - root = 0; - pruned_tree_idx = -1; -} - - -CvDTree::~CvDTree() -{ - clear(); -} - - -const CvDTreeNode* CvDTree::get_root() const -{ - return root; -} - - -int CvDTree::get_pruned_tree_idx() const -{ - return pruned_tree_idx; -} - - -CvDTreeTrainData* CvDTree::get_data() -{ - return data; -} - - -bool CvDTree::train( const CvMat* _train_data, int _tflag, - const CvMat* _responses, const CvMat* _var_idx, - const CvMat* _sample_idx, const CvMat* _var_type, - const CvMat* _missing_mask, CvDTreeParams _params ) -{ - bool result = false; - - CV_FUNCNAME( "CvDTree::train" ); - - __BEGIN__; - - clear(); - data = new CvDTreeTrainData( _train_data, _tflag, _responses, - _var_idx, _sample_idx, _var_type, - _missing_mask, _params, false ); - CV_CALL( result = do_train(0) ); - - __END__; - - return result; -} - -bool CvDTree::train( const Mat& _train_data, int _tflag, - const Mat& _responses, const Mat& _var_idx, - const Mat& _sample_idx, const Mat& _var_type, - const Mat& _missing_mask, CvDTreeParams _params ) -{ - train_data_hdr = _train_data; - train_data_mat = _train_data; - responses_hdr = _responses; - responses_mat = _responses; - - CvMat vidx=_var_idx, sidx=_sample_idx, vtype=_var_type, mmask=_missing_mask; - - return train(&train_data_hdr, _tflag, &responses_hdr, vidx.data.ptr ? &vidx : 0, sidx.data.ptr ? &sidx : 0, - vtype.data.ptr ? &vtype : 0, mmask.data.ptr ? &mmask : 0, _params); -} - - -bool CvDTree::train( CvMLData* _data, CvDTreeParams _params ) -{ - bool result = false; - - CV_FUNCNAME( "CvDTree::train" ); - - __BEGIN__; - - const CvMat* values = _data->get_values(); - const CvMat* response = _data->get_responses(); - const CvMat* missing = _data->get_missing(); - const CvMat* var_types = _data->get_var_types(); - const CvMat* train_sidx = _data->get_train_sample_idx(); - const CvMat* var_idx = _data->get_var_idx(); - - CV_CALL( result = train( values, CV_ROW_SAMPLE, response, var_idx, - train_sidx, var_types, missing, _params ) ); - - __END__; - - return result; -} - -bool CvDTree::train( CvDTreeTrainData* _data, const CvMat* _subsample_idx ) -{ - bool result = false; - - CV_FUNCNAME( "CvDTree::train" ); - - __BEGIN__; - - clear(); - data = _data; - data->shared = true; - CV_CALL( result = do_train(_subsample_idx)); - - __END__; - - return result; -} - - -bool CvDTree::do_train( const CvMat* _subsample_idx ) -{ - bool result = false; - - CV_FUNCNAME( "CvDTree::do_train" ); - - __BEGIN__; - - root = data->subsample_data( _subsample_idx ); - - CV_CALL( try_split_node(root)); - - if( root->split ) - { - CV_Assert( root->left ); - CV_Assert( root->right ); - - if( data->params.cv_folds > 0 ) - CV_CALL( prune_cv() ); - - if( !data->shared ) - data->free_train_data(); - - result = true; - } - - __END__; - - return result; -} - - -void CvDTree::try_split_node( CvDTreeNode* node ) -{ - CvDTreeSplit* best_split = 0; - int i, n = node->sample_count, vi; - bool can_split = true; - double quality_scale; - - calc_node_value( node ); - - if( node->sample_count <= data->params.min_sample_count || - node->depth >= data->params.max_depth ) - can_split = false; - - if( can_split && data->is_classifier ) - { - // check if we have a "pure" node, - // we assume that cls_count is filled by calc_node_value() - int* cls_count = data->counts->data.i; - int nz = 0, m = data->get_num_classes(); - for( i = 0; i < m; i++ ) - nz += cls_count[i] != 0; - if( nz == 1 ) // there is only one class - can_split = false; - } - else if( can_split ) - { - if( sqrt(node->node_risk)/n < data->params.regression_accuracy ) - can_split = false; - } - - if( can_split ) - { - best_split = find_best_split(node); - // TODO: check the split quality ... - node->split = best_split; - } - if( !can_split || !best_split ) - { - data->free_node_data(node); - return; - } - - quality_scale = calc_node_dir( node ); - if( data->params.use_surrogates ) - { - // find all the surrogate splits - // and sort them by their similarity to the primary one - for( vi = 0; vi < data->var_count; vi++ ) - { - CvDTreeSplit* split; - int ci = data->get_var_type(vi); - - if( vi == best_split->var_idx ) - continue; - - if( ci >= 0 ) - split = find_surrogate_split_cat( node, vi ); - else - split = find_surrogate_split_ord( node, vi ); - - if( split ) - { - // insert the split - CvDTreeSplit* prev_split = node->split; - split->quality = (float)(split->quality*quality_scale); - - while( prev_split->next && - prev_split->next->quality > split->quality ) - prev_split = prev_split->next; - split->next = prev_split->next; - prev_split->next = split; - } - } - } - split_node_data( node ); - try_split_node( node->left ); - try_split_node( node->right ); -} - - -// calculate direction (left(-1),right(1),missing(0)) -// for each sample using the best split -// the function returns scale coefficients for surrogate split quality factors. -// the scale is applied to normalize surrogate split quality relatively to the -// best (primary) split quality. That is, if a surrogate split is absolutely -// identical to the primary split, its quality will be set to the maximum value = -// quality of the primary split; otherwise, it will be lower. -// besides, the function compute node->maxlr, -// minimum possible quality (w/o considering the above mentioned scale) -// for a surrogate split. Surrogate splits with quality less than node->maxlr -// are not discarded. -double CvDTree::calc_node_dir( CvDTreeNode* node ) -{ - char* dir = (char*)data->direction->data.ptr; - int i, n = node->sample_count, vi = node->split->var_idx; - double L, R; - - assert( !node->split->inversed ); - - if( data->get_var_type(vi) >= 0 ) // split on categorical var - { - cv::AutoBuffer inn_buf(n*(!data->have_priors ? 1 : 2)); - int* labels_buf = (int*)inn_buf; - const int* labels = data->get_cat_var_data( node, vi, labels_buf ); - const int* subset = node->split->subset; - if( !data->have_priors ) - { - int sum = 0, sum_abs = 0; - - for( i = 0; i < n; i++ ) - { - int idx = labels[i]; - int d = ( ((idx >= 0)&&(!data->is_buf_16u)) || ((idx != 65535)&&(data->is_buf_16u)) ) ? - CV_DTREE_CAT_DIR(idx,subset) : 0; - sum += d; sum_abs += d & 1; - dir[i] = (char)d; - } - - R = (sum_abs + sum) >> 1; - L = (sum_abs - sum) >> 1; - } - else - { - const double* priors = data->priors_mult->data.db; - double sum = 0, sum_abs = 0; - int* responses_buf = labels_buf + n; - const int* responses = data->get_class_labels(node, responses_buf); - - for( i = 0; i < n; i++ ) - { - int idx = labels[i]; - double w = priors[responses[i]]; - int d = idx >= 0 ? CV_DTREE_CAT_DIR(idx,subset) : 0; - sum += d*w; sum_abs += (d & 1)*w; - dir[i] = (char)d; - } - - R = (sum_abs + sum) * 0.5; - L = (sum_abs - sum) * 0.5; - } - } - else // split on ordered var - { - int split_point = node->split->ord.split_point; - int n1 = node->get_num_valid(vi); - cv::AutoBuffer inn_buf(n*(sizeof(int)*(data->have_priors ? 3 : 2) + sizeof(float))); - float* val_buf = (float*)(uchar*)inn_buf; - int* sorted_buf = (int*)(val_buf + n); - int* sample_idx_buf = sorted_buf + n; - const float* val = 0; - const int* sorted = 0; - data->get_ord_var_data( node, vi, val_buf, sorted_buf, &val, &sorted, sample_idx_buf); - - assert( 0 <= split_point && split_point < n1-1 ); - - if( !data->have_priors ) - { - for( i = 0; i <= split_point; i++ ) - dir[sorted[i]] = (char)-1; - for( ; i < n1; i++ ) - dir[sorted[i]] = (char)1; - for( ; i < n; i++ ) - dir[sorted[i]] = (char)0; - - L = split_point-1; - R = n1 - split_point + 1; - } - else - { - const double* priors = data->priors_mult->data.db; - int* responses_buf = sample_idx_buf + n; - const int* responses = data->get_class_labels(node, responses_buf); - L = R = 0; - - for( i = 0; i <= split_point; i++ ) - { - int idx = sorted[i]; - double w = priors[responses[idx]]; - dir[idx] = (char)-1; - L += w; - } - - for( ; i < n1; i++ ) - { - int idx = sorted[i]; - double w = priors[responses[idx]]; - dir[idx] = (char)1; - R += w; - } - - for( ; i < n; i++ ) - dir[sorted[i]] = (char)0; - } - } - node->maxlr = MAX( L, R ); - return node->split->quality/(L + R); -} - - -namespace cv -{ - -template<> CV_EXPORTS void DefaultDeleter::operator ()(CvDTreeSplit* obj) const -{ - fastFree(obj); -} - -DTreeBestSplitFinder::DTreeBestSplitFinder( CvDTree* _tree, CvDTreeNode* _node) -{ - tree = _tree; - node = _node; - splitSize = tree->get_data()->split_heap->elem_size; - - bestSplit.reset((CvDTreeSplit*)fastMalloc(splitSize)); - memset(bestSplit.get(), 0, splitSize); - bestSplit->quality = -1; - bestSplit->condensed_idx = INT_MIN; - split.reset((CvDTreeSplit*)fastMalloc(splitSize)); - memset(split.get(), 0, splitSize); - //haveSplit = false; -} - -DTreeBestSplitFinder::DTreeBestSplitFinder( const DTreeBestSplitFinder& finder, Split ) -{ - tree = finder.tree; - node = finder.node; - splitSize = tree->get_data()->split_heap->elem_size; - - bestSplit.reset((CvDTreeSplit*)fastMalloc(splitSize)); - memcpy(bestSplit.get(), finder.bestSplit.get(), splitSize); - split.reset((CvDTreeSplit*)fastMalloc(splitSize)); - memset(split.get(), 0, splitSize); -} - -void DTreeBestSplitFinder::operator()(const BlockedRange& range) -{ - int vi, vi1 = range.begin(), vi2 = range.end(); - int n = node->sample_count; - CvDTreeTrainData* data = tree->get_data(); - AutoBuffer inn_buf(2*n*(sizeof(int) + sizeof(float))); - - for( vi = vi1; vi < vi2; vi++ ) - { - CvDTreeSplit *res; - int ci = data->get_var_type(vi); - if( node->get_num_valid(vi) <= 1 ) - continue; - - if( data->is_classifier ) - { - if( ci >= 0 ) - res = tree->find_split_cat_class( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); - else - res = tree->find_split_ord_class( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); - } - else - { - if( ci >= 0 ) - res = tree->find_split_cat_reg( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); - else - res = tree->find_split_ord_reg( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); - } - - if( res && bestSplit->quality < split->quality ) - memcpy( bestSplit.get(), split.get(), splitSize ); - } -} - -void DTreeBestSplitFinder::join( DTreeBestSplitFinder& rhs ) -{ - if( bestSplit->quality < rhs.bestSplit->quality ) - memcpy( bestSplit.get(), rhs.bestSplit.get(), splitSize ); -} -} - - -CvDTreeSplit* CvDTree::find_best_split( CvDTreeNode* node ) -{ - DTreeBestSplitFinder finder( this, node ); - - cv::parallel_reduce(cv::BlockedRange(0, data->var_count), finder); - - CvDTreeSplit *bestSplit = 0; - if( finder.bestSplit->quality > 0 ) - { - bestSplit = data->new_split_cat( 0, -1.0f ); - memcpy( bestSplit, finder.bestSplit, finder.splitSize ); - } - - return bestSplit; -} - -CvDTreeSplit* CvDTree::find_split_ord_class( CvDTreeNode* node, int vi, - float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) -{ - const float epsilon = FLT_EPSILON*2; - int n = node->sample_count; - int n1 = node->get_num_valid(vi); - int m = data->get_num_classes(); - - int base_size = 2*m*sizeof(int); - cv::AutoBuffer inn_buf(base_size); - if( !_ext_buf ) - inn_buf.allocate(base_size + n*(3*sizeof(int)+sizeof(float))); - uchar* base_buf = (uchar*)inn_buf; - uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; - float* values_buf = (float*)ext_buf; - int* sorted_indices_buf = (int*)(values_buf + n); - int* sample_indices_buf = sorted_indices_buf + n; - const float* values = 0; - const int* sorted_indices = 0; - data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, - &sorted_indices, sample_indices_buf ); - int* responses_buf = sample_indices_buf + n; - const int* responses = data->get_class_labels( node, responses_buf ); - - const int* rc0 = data->counts->data.i; - int* lc = (int*)base_buf; - int* rc = lc + m; - int i, best_i = -1; - double lsum2 = 0, rsum2 = 0, best_val = init_quality; - const double* priors = data->have_priors ? data->priors_mult->data.db : 0; - - // init arrays of class instance counters on both sides of the split - for( i = 0; i < m; i++ ) - { - lc[i] = 0; - rc[i] = rc0[i]; - } - - // compensate for missing values - for( i = n1; i < n; i++ ) - { - rc[responses[sorted_indices[i]]]--; - } - - if( !priors ) - { - int L = 0, R = n1; - - for( i = 0; i < m; i++ ) - rsum2 += (double)rc[i]*rc[i]; - - for( i = 0; i < n1 - 1; i++ ) - { - int idx = responses[sorted_indices[i]]; - int lv, rv; - L++; R--; - lv = lc[idx]; rv = rc[idx]; - lsum2 += lv*2 + 1; - rsum2 -= rv*2 - 1; - lc[idx] = lv + 1; rc[idx] = rv - 1; - - if( values[i] + epsilon < values[i+1] ) - { - double val = (lsum2*R + rsum2*L)/((double)L*R); - if( best_val < val ) - { - best_val = val; - best_i = i; - } - } - } - } - else - { - double L = 0, R = 0; - for( i = 0; i < m; i++ ) - { - double wv = rc[i]*priors[i]; - R += wv; - rsum2 += wv*wv; - } - - for( i = 0; i < n1 - 1; i++ ) - { - int idx = responses[sorted_indices[i]]; - int lv, rv; - double p = priors[idx], p2 = p*p; - L += p; R -= p; - lv = lc[idx]; rv = rc[idx]; - lsum2 += p2*(lv*2 + 1); - rsum2 -= p2*(rv*2 - 1); - lc[idx] = lv + 1; rc[idx] = rv - 1; - - if( values[i] + epsilon < values[i+1] ) - { - double val = (lsum2*R + rsum2*L)/((double)L*R); - if( best_val < val ) - { - best_val = val; - best_i = i; - } - } - } - } - - CvDTreeSplit* split = 0; - if( best_i >= 0 ) - { - split = _split ? _split : data->new_split_ord( 0, 0.0f, 0, 0, 0.0f ); - split->var_idx = vi; - split->ord.c = (values[best_i] + values[best_i+1])*0.5f; - split->ord.split_point = best_i; - split->inversed = 0; - split->quality = (float)best_val; - } - return split; -} - - -void CvDTree::cluster_categories( const int* vectors, int n, int m, - int* csums, int k, int* labels ) -{ - // TODO: consider adding priors (class weights) and sample weights to the clustering algorithm - int iters = 0, max_iters = 100; - int i, j, idx; - cv::AutoBuffer buf(n + k); - double *v_weights = buf, *c_weights = buf + n; - bool modified = true; - RNG* r = data->rng; - - // assign labels randomly - for( i = 0; i < n; i++ ) - { - int sum = 0; - const int* v = vectors + i*m; - labels[i] = i < k ? i : r->uniform(0, k); - - // compute weight of each vector - for( j = 0; j < m; j++ ) - sum += v[j]; - v_weights[i] = sum ? 1./sum : 0.; - } - - for( i = 0; i < n; i++ ) - { - int i1 = (*r)(n); - int i2 = (*r)(n); - CV_SWAP( labels[i1], labels[i2], j ); - } - - for( iters = 0; iters <= max_iters; iters++ ) - { - // calculate csums - for( i = 0; i < k; i++ ) - { - for( j = 0; j < m; j++ ) - csums[i*m + j] = 0; - } - - for( i = 0; i < n; i++ ) - { - const int* v = vectors + i*m; - int* s = csums + labels[i]*m; - for( j = 0; j < m; j++ ) - s[j] += v[j]; - } - - // exit the loop here, when we have up-to-date csums - if( iters == max_iters || !modified ) - break; - - modified = false; - - // calculate weight of each cluster - for( i = 0; i < k; i++ ) - { - const int* s = csums + i*m; - int sum = 0; - for( j = 0; j < m; j++ ) - sum += s[j]; - c_weights[i] = sum ? 1./sum : 0; - } - - // now for each vector determine the closest cluster - for( i = 0; i < n; i++ ) - { - const int* v = vectors + i*m; - double alpha = v_weights[i]; - double min_dist2 = DBL_MAX; - int min_idx = -1; - - for( idx = 0; idx < k; idx++ ) - { - const int* s = csums + idx*m; - double dist2 = 0., beta = c_weights[idx]; - for( j = 0; j < m; j++ ) - { - double t = v[j]*alpha - s[j]*beta; - dist2 += t*t; - } - if( min_dist2 > dist2 ) - { - min_dist2 = dist2; - min_idx = idx; - } - } - - if( min_idx != labels[i] ) - modified = true; - labels[i] = min_idx; - } - } -} - - -CvDTreeSplit* CvDTree::find_split_cat_class( CvDTreeNode* node, int vi, float init_quality, - CvDTreeSplit* _split, uchar* _ext_buf ) -{ - int ci = data->get_var_type(vi); - int n = node->sample_count; - int m = data->get_num_classes(); - int _mi = data->cat_count->data.i[ci], mi = _mi; - - int base_size = m*(3 + mi)*sizeof(int) + (mi+1)*sizeof(double); - if( m > 2 && mi > data->params.max_categories ) - base_size += (m*std::min(data->params.max_categories, n) + mi)*sizeof(int); - else - base_size += mi*sizeof(int*); - cv::AutoBuffer inn_buf(base_size); - if( !_ext_buf ) - inn_buf.allocate(base_size + 2*n*sizeof(int)); - uchar* base_buf = (uchar*)inn_buf; - uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; - - int* lc = (int*)base_buf; - int* rc = lc + m; - int* _cjk = rc + m*2, *cjk = _cjk; - double* c_weights = (double*)alignPtr(cjk + m*mi, sizeof(double)); - - int* labels_buf = (int*)ext_buf; - const int* labels = data->get_cat_var_data(node, vi, labels_buf); - int* responses_buf = labels_buf + n; - const int* responses = data->get_class_labels(node, responses_buf); - - int* cluster_labels = 0; - int** int_ptr = 0; - int i, j, k, idx; - double L = 0, R = 0; - double best_val = init_quality; - int prevcode = 0, best_subset = -1, subset_i, subset_n, subtract = 0; - const double* priors = data->priors_mult->data.db; - - // init array of counters: - // c_{jk} - number of samples that have vi-th input variable = j and response = k. - for( j = -1; j < mi; j++ ) - for( k = 0; k < m; k++ ) - cjk[j*m + k] = 0; - - for( i = 0; i < n; i++ ) - { - j = ( labels[i] == 65535 && data->is_buf_16u) ? -1 : labels[i]; - k = responses[i]; - cjk[j*m + k]++; - } - - if( m > 2 ) - { - if( mi > data->params.max_categories ) - { - mi = MIN(data->params.max_categories, n); - cjk = (int*)(c_weights + _mi); - cluster_labels = cjk + m*mi; - cluster_categories( _cjk, _mi, m, cjk, mi, cluster_labels ); - } - subset_i = 1; - subset_n = 1 << mi; - } - else - { - assert( m == 2 ); - int_ptr = (int**)(c_weights + _mi); - for( j = 0; j < mi; j++ ) - int_ptr[j] = cjk + j*2 + 1; - std::sort(int_ptr, int_ptr + mi, LessThanPtr()); - subset_i = 0; - subset_n = mi; - } - - for( k = 0; k < m; k++ ) - { - int sum = 0; - for( j = 0; j < mi; j++ ) - sum += cjk[j*m + k]; - rc[k] = sum; - lc[k] = 0; - } - - for( j = 0; j < mi; j++ ) - { - double sum = 0; - for( k = 0; k < m; k++ ) - sum += cjk[j*m + k]*priors[k]; - c_weights[j] = sum; - R += c_weights[j]; - } - - for( ; subset_i < subset_n; subset_i++ ) - { - double weight; - int* crow; - double lsum2 = 0, rsum2 = 0; - - if( m == 2 ) - idx = (int)(int_ptr[subset_i] - cjk)/2; - else - { - int graycode = (subset_i>>1)^subset_i; - int diff = graycode ^ prevcode; - - // determine index of the changed bit. - Cv32suf u; - idx = diff >= (1 << 16) ? 16 : 0; - u.f = (float)(((diff >> 16) | diff) & 65535); - idx += (u.i >> 23) - 127; - subtract = graycode < prevcode; - prevcode = graycode; - } - - crow = cjk + idx*m; - weight = c_weights[idx]; - if( weight < FLT_EPSILON ) - continue; - - if( !subtract ) - { - for( k = 0; k < m; k++ ) - { - int t = crow[k]; - int lval = lc[k] + t; - int rval = rc[k] - t; - double p = priors[k], p2 = p*p; - lsum2 += p2*lval*lval; - rsum2 += p2*rval*rval; - lc[k] = lval; rc[k] = rval; - } - L += weight; - R -= weight; - } - else - { - for( k = 0; k < m; k++ ) - { - int t = crow[k]; - int lval = lc[k] - t; - int rval = rc[k] + t; - double p = priors[k], p2 = p*p; - lsum2 += p2*lval*lval; - rsum2 += p2*rval*rval; - lc[k] = lval; rc[k] = rval; - } - L -= weight; - R += weight; - } - - if( L > FLT_EPSILON && R > FLT_EPSILON ) - { - double val = (lsum2*R + rsum2*L)/((double)L*R); - if( best_val < val ) - { - best_val = val; - best_subset = subset_i; - } - } - } - - CvDTreeSplit* split = 0; - if( best_subset >= 0 ) - { - split = _split ? _split : data->new_split_cat( 0, -1.0f ); - split->var_idx = vi; - split->quality = (float)best_val; - memset( split->subset, 0, (data->max_c_count + 31)/32 * sizeof(int)); - if( m == 2 ) - { - for( i = 0; i <= best_subset; i++ ) - { - idx = (int)(int_ptr[i] - cjk) >> 1; - split->subset[idx >> 5] |= 1 << (idx & 31); - } - } - else - { - for( i = 0; i < _mi; i++ ) - { - idx = cluster_labels ? cluster_labels[i] : i; - if( best_subset & (1 << idx) ) - split->subset[i >> 5] |= 1 << (i & 31); - } - } - } - return split; -} - - -CvDTreeSplit* CvDTree::find_split_ord_reg( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) -{ - const float epsilon = FLT_EPSILON*2; - int n = node->sample_count; - int n1 = node->get_num_valid(vi); - - cv::AutoBuffer inn_buf; - if( !_ext_buf ) - inn_buf.allocate(2*n*(sizeof(int) + sizeof(float))); - uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; - float* values_buf = (float*)ext_buf; - int* sorted_indices_buf = (int*)(values_buf + n); - int* sample_indices_buf = sorted_indices_buf + n; - const float* values = 0; - const int* sorted_indices = 0; - data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, &sorted_indices, sample_indices_buf ); - float* responses_buf = (float*)(sample_indices_buf + n); - const float* responses = data->get_ord_responses( node, responses_buf, sample_indices_buf ); - - int i, best_i = -1; - double best_val = init_quality, lsum = 0, rsum = node->value*n; - int L = 0, R = n1; - - // compensate for missing values - for( i = n1; i < n; i++ ) - rsum -= responses[sorted_indices[i]]; - - // find the optimal split - for( i = 0; i < n1 - 1; i++ ) - { - float t = responses[sorted_indices[i]]; - L++; R--; - lsum += t; - rsum -= t; - - if( values[i] + epsilon < values[i+1] ) - { - double val = (lsum*lsum*R + rsum*rsum*L)/((double)L*R); - if( best_val < val ) - { - best_val = val; - best_i = i; - } - } - } - - CvDTreeSplit* split = 0; - if( best_i >= 0 ) - { - split = _split ? _split : data->new_split_ord( 0, 0.0f, 0, 0, 0.0f ); - split->var_idx = vi; - split->ord.c = (values[best_i] + values[best_i+1])*0.5f; - split->ord.split_point = best_i; - split->inversed = 0; - split->quality = (float)best_val; - } - return split; -} - -CvDTreeSplit* CvDTree::find_split_cat_reg( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) -{ - int ci = data->get_var_type(vi); - int n = node->sample_count; - int mi = data->cat_count->data.i[ci]; - - int base_size = (mi+2)*sizeof(double) + (mi+1)*(sizeof(int) + sizeof(double*)); - cv::AutoBuffer inn_buf(base_size); - if( !_ext_buf ) - inn_buf.allocate(base_size + n*(2*sizeof(int) + sizeof(float))); - uchar* base_buf = (uchar*)inn_buf; - uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; - int* labels_buf = (int*)ext_buf; - const int* labels = data->get_cat_var_data(node, vi, labels_buf); - float* responses_buf = (float*)(labels_buf + n); - int* sample_indices_buf = (int*)(responses_buf + n); - const float* responses = data->get_ord_responses(node, responses_buf, sample_indices_buf); - - double* sum = (double*)cv::alignPtr(base_buf,sizeof(double)) + 1; - int* counts = (int*)(sum + mi) + 1; - double** sum_ptr = (double**)(counts + mi); - int i, L = 0, R = 0; - double best_val = init_quality, lsum = 0, rsum = 0; - int best_subset = -1, subset_i; - - for( i = -1; i < mi; i++ ) - sum[i] = counts[i] = 0; - - // calculate sum response and weight of each category of the input var - for( i = 0; i < n; i++ ) - { - int idx = ( (labels[i] == 65535) && data->is_buf_16u ) ? -1 : labels[i]; - double s = sum[idx] + responses[i]; - int nc = counts[idx] + 1; - sum[idx] = s; - counts[idx] = nc; - } - - // calculate average response in each category - for( i = 0; i < mi; i++ ) - { - R += counts[i]; - rsum += sum[i]; - sum[i] /= MAX(counts[i],1); - sum_ptr[i] = sum + i; - } - - std::sort(sum_ptr, sum_ptr + mi, LessThanPtr()); - - // revert back to unnormalized sums - // (there should be a very little loss of accuracy) - for( i = 0; i < mi; i++ ) - sum[i] *= counts[i]; - - for( subset_i = 0; subset_i < mi-1; subset_i++ ) - { - int idx = (int)(sum_ptr[subset_i] - sum); - int ni = counts[idx]; - - if( ni ) - { - double s = sum[idx]; - lsum += s; L += ni; - rsum -= s; R -= ni; - - if( L && R ) - { - double val = (lsum*lsum*R + rsum*rsum*L)/((double)L*R); - if( best_val < val ) - { - best_val = val; - best_subset = subset_i; - } - } - } - } - - CvDTreeSplit* split = 0; - if( best_subset >= 0 ) - { - split = _split ? _split : data->new_split_cat( 0, -1.0f); - split->var_idx = vi; - split->quality = (float)best_val; - memset( split->subset, 0, (data->max_c_count + 31)/32 * sizeof(int)); - for( i = 0; i <= best_subset; i++ ) - { - int idx = (int)(sum_ptr[i] - sum); - split->subset[idx >> 5] |= 1 << (idx & 31); - } - } - return split; -} - -CvDTreeSplit* CvDTree::find_surrogate_split_ord( CvDTreeNode* node, int vi, uchar* _ext_buf ) -{ - const float epsilon = FLT_EPSILON*2; - const char* dir = (char*)data->direction->data.ptr; - int n = node->sample_count, n1 = node->get_num_valid(vi); - cv::AutoBuffer inn_buf; - if( !_ext_buf ) - inn_buf.allocate( n*(sizeof(int)*(data->have_priors ? 3 : 2) + sizeof(float)) ); - uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; - float* values_buf = (float*)ext_buf; - int* sorted_indices_buf = (int*)(values_buf + n); - int* sample_indices_buf = sorted_indices_buf + n; - const float* values = 0; - const int* sorted_indices = 0; - data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, &sorted_indices, sample_indices_buf ); - // LL - number of samples that both the primary and the surrogate splits send to the left - // LR - ... primary split sends to the left and the surrogate split sends to the right - // RL - ... primary split sends to the right and the surrogate split sends to the left - // RR - ... both send to the right - int i, best_i = -1, best_inversed = 0; - double best_val; - - if( !data->have_priors ) - { - int LL = 0, RL = 0, LR, RR; - int worst_val = cvFloor(node->maxlr), _best_val = worst_val; - int sum = 0, sum_abs = 0; - - for( i = 0; i < n1; i++ ) - { - int d = dir[sorted_indices[i]]; - sum += d; sum_abs += d & 1; - } - - // sum_abs = R + L; sum = R - L - RR = (sum_abs + sum) >> 1; - LR = (sum_abs - sum) >> 1; - - // initially all the samples are sent to the right by the surrogate split, - // LR of them are sent to the left by primary split, and RR - to the right. - // now iteratively compute LL, LR, RL and RR for every possible surrogate split value. - for( i = 0; i < n1 - 1; i++ ) - { - int d = dir[sorted_indices[i]]; - - if( d < 0 ) - { - LL++; LR--; - if( LL + RR > _best_val && values[i] + epsilon < values[i+1] ) - { - best_val = LL + RR; - best_i = i; best_inversed = 0; - } - } - else if( d > 0 ) - { - RL++; RR--; - if( RL + LR > _best_val && values[i] + epsilon < values[i+1] ) - { - best_val = RL + LR; - best_i = i; best_inversed = 1; - } - } - } - best_val = _best_val; - } - else - { - double LL = 0, RL = 0, LR, RR; - double worst_val = node->maxlr; - double sum = 0, sum_abs = 0; - const double* priors = data->priors_mult->data.db; - int* responses_buf = sample_indices_buf + n; - const int* responses = data->get_class_labels(node, responses_buf); - best_val = worst_val; - - for( i = 0; i < n1; i++ ) - { - int idx = sorted_indices[i]; - double w = priors[responses[idx]]; - int d = dir[idx]; - sum += d*w; sum_abs += (d & 1)*w; - } - - // sum_abs = R + L; sum = R - L - RR = (sum_abs + sum)*0.5; - LR = (sum_abs - sum)*0.5; - - // initially all the samples are sent to the right by the surrogate split, - // LR of them are sent to the left by primary split, and RR - to the right. - // now iteratively compute LL, LR, RL and RR for every possible surrogate split value. - for( i = 0; i < n1 - 1; i++ ) - { - int idx = sorted_indices[i]; - double w = priors[responses[idx]]; - int d = dir[idx]; - - if( d < 0 ) - { - LL += w; LR -= w; - if( LL + RR > best_val && values[i] + epsilon < values[i+1] ) - { - best_val = LL + RR; - best_i = i; best_inversed = 0; - } - } - else if( d > 0 ) - { - RL += w; RR -= w; - if( RL + LR > best_val && values[i] + epsilon < values[i+1] ) - { - best_val = RL + LR; - best_i = i; best_inversed = 1; - } - } - } - } - return best_i >= 0 && best_val > node->maxlr ? data->new_split_ord( vi, - (values[best_i] + values[best_i+1])*0.5f, best_i, best_inversed, (float)best_val ) : 0; -} - - -CvDTreeSplit* CvDTree::find_surrogate_split_cat( CvDTreeNode* node, int vi, uchar* _ext_buf ) -{ - const char* dir = (char*)data->direction->data.ptr; - int n = node->sample_count; - int i, mi = data->cat_count->data.i[data->get_var_type(vi)], l_win = 0; - - int base_size = (2*(mi+1)+1)*sizeof(double) + (!data->have_priors ? 2*(mi+1)*sizeof(int) : 0); - cv::AutoBuffer inn_buf(base_size); - if( !_ext_buf ) - inn_buf.allocate(base_size + n*(sizeof(int) + (data->have_priors ? sizeof(int) : 0))); - uchar* base_buf = (uchar*)inn_buf; - uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; - - int* labels_buf = (int*)ext_buf; - const int* labels = data->get_cat_var_data(node, vi, labels_buf); - // LL - number of samples that both the primary and the surrogate splits send to the left - // LR - ... primary split sends to the left and the surrogate split sends to the right - // RL - ... primary split sends to the right and the surrogate split sends to the left - // RR - ... both send to the right - CvDTreeSplit* split = data->new_split_cat( vi, 0 ); - double best_val = 0; - double* lc = (double*)cv::alignPtr(base_buf,sizeof(double)) + 1; - double* rc = lc + mi + 1; - - for( i = -1; i < mi; i++ ) - lc[i] = rc[i] = 0; - - // for each category calculate the weight of samples - // sent to the left (lc) and to the right (rc) by the primary split - if( !data->have_priors ) - { - int* _lc = (int*)rc + 1; - int* _rc = _lc + mi + 1; - - for( i = -1; i < mi; i++ ) - _lc[i] = _rc[i] = 0; - - for( i = 0; i < n; i++ ) - { - int idx = ( (labels[i] == 65535) && (data->is_buf_16u) ) ? -1 : labels[i]; - int d = dir[i]; - int sum = _lc[idx] + d; - int sum_abs = _rc[idx] + (d & 1); - _lc[idx] = sum; _rc[idx] = sum_abs; - } - - for( i = 0; i < mi; i++ ) - { - int sum = _lc[i]; - int sum_abs = _rc[i]; - lc[i] = (sum_abs - sum) >> 1; - rc[i] = (sum_abs + sum) >> 1; - } - } - else - { - const double* priors = data->priors_mult->data.db; - int* responses_buf = labels_buf + n; - const int* responses = data->get_class_labels(node, responses_buf); - - for( i = 0; i < n; i++ ) - { - int idx = ( (labels[i] == 65535) && (data->is_buf_16u) ) ? -1 : labels[i]; - double w = priors[responses[i]]; - int d = dir[i]; - double sum = lc[idx] + d*w; - double sum_abs = rc[idx] + (d & 1)*w; - lc[idx] = sum; rc[idx] = sum_abs; - } - - for( i = 0; i < mi; i++ ) - { - double sum = lc[i]; - double sum_abs = rc[i]; - lc[i] = (sum_abs - sum) * 0.5; - rc[i] = (sum_abs + sum) * 0.5; - } - } - - // 2. now form the split. - // in each category send all the samples to the same direction as majority - for( i = 0; i < mi; i++ ) - { - double lval = lc[i], rval = rc[i]; - if( lval > rval ) - { - split->subset[i >> 5] |= 1 << (i & 31); - best_val += lval; - l_win++; + best_split = split; + std::swap(subset, best_subset); } - else - best_val += rval; } - split->quality = (float)best_val; - if( split->quality <= node->maxlr || l_win == 0 || l_win == mi ) - cvSetRemoveByPtr( data->split_heap, split ), split = 0; + if( best_split.quality > 0 ) + { + int best_vi = best_split.varIdx; + CV_Assert( compVarIdx[best_split.varIdx] >= 0 && best_vi >= 0 ); + int i, prevsz = (int)w->wsubsets.size(), ssize = getSubsetSize(best_vi); + w->wsubsets.resize(prevsz + ssize); + for( i = 0; i < ssize; i++ ) + w->wsubsets[prevsz + i] = best_subset[i]; + best_split.subsetOfs = prevsz; + w->wsplits.push_back(best_split); + splitidx = (int)(w->wsplits.size()-1); + } - return split; + return splitidx; } - -void CvDTree::calc_node_value( CvDTreeNode* node ) +void DTreesImpl::calcValue( int nidx, const vector& _sidx ) { - int i, j, k, n = node->sample_count, cv_n = data->params.cv_folds; - int m = data->get_num_classes(); + WNode* node = &w->wnodes[nidx]; + int i, j, k, n = (int)_sidx.size(), cv_n = params.CVFolds; + int m = (int)classLabels.size(); - int base_size = data->is_classifier ? m*cv_n*sizeof(int) : 2*cv_n*sizeof(double)+cv_n*sizeof(int); - int ext_size = n*(sizeof(int) + (data->is_classifier ? sizeof(int) : sizeof(int)+sizeof(float))); - cv::AutoBuffer inn_buf(base_size + ext_size); - uchar* base_buf = (uchar*)inn_buf; - uchar* ext_buf = base_buf + base_size; + cv::AutoBuffer buf(std::max(m, 3)*(cv_n+1)); - int* cv_labels_buf = (int*)ext_buf; - const int* cv_labels = data->get_cv_labels(node, cv_labels_buf); + if( cv_n > 0 ) + { + size_t sz = w->cv_Tn.size(); + w->cv_Tn.resize(sz + cv_n); + w->cv_node_risk.resize(sz + cv_n); + w->cv_node_error.resize(sz + cv_n); + } - if( data->is_classifier ) + if( _isClassifier ) { // in case of classification tree: // * node value is the label of the class that has the largest weight in the node. @@ -2775,13 +516,11 @@ void CvDTree::calc_node_value( CvDTreeNode* node ) // misclassified samples with cv_labels(*)==j. // compute the number of instances of each class - int* cls_count = data->counts->data.i; - int* responses_buf = cv_labels_buf + n; - const int* responses = data->get_class_labels(node, responses_buf); - int* cv_cls_count = (int*)base_buf; + double* cls_count = buf; + double* cv_cls_count = cls_count + m; + double max_val = -1, total_weight = 0; int max_k = -1; - double* priors = data->priors_mult->data.db; for( k = 0; k < m; k++ ) cls_count[k] = 0; @@ -2789,7 +528,10 @@ void CvDTree::calc_node_value( CvDTreeNode* node ) if( cv_n == 0 ) { for( i = 0; i < n; i++ ) - cls_count[responses[i]]++; + { + int si = _sidx[i]; + cls_count[w->cat_responses[si]] += w->sample_weights[si]; + } } else { @@ -2799,8 +541,9 @@ void CvDTree::calc_node_value( CvDTreeNode* node ) for( i = 0; i < n; i++ ) { - j = cv_labels[i]; k = responses[i]; - cv_cls_count[j*m + k]++; + int si = _sidx[i]; + j = w->cv_labels[si]; k = w->cat_responses[si]; + cv_cls_count[j*m + k] += w->sample_weights[si]; } for( j = 0; j < cv_n; j++ ) @@ -2808,24 +551,9 @@ void CvDTree::calc_node_value( CvDTreeNode* node ) cls_count[k] += cv_cls_count[j*m + k]; } - if( data->have_priors && node->parent == 0 ) - { - // compute priors_mult from priors, take the sample ratio into account. - double sum = 0; - for( k = 0; k < m; k++ ) - { - int n_k = cls_count[k]; - priors[k] = data->priors->data.db[k]*(n_k ? 1./n_k : 0.); - sum += priors[k]; - } - sum = 1./sum; - for( k = 0; k < m; k++ ) - priors[k] *= sum; - } - for( k = 0; k < m; k++ ) { - double val = cls_count[k]*priors[k]; + double val = cls_count[k]; total_weight += val; if( max_val < val ) { @@ -2835,8 +563,7 @@ void CvDTree::calc_node_value( CvDTreeNode* node ) } node->class_idx = max_k; - node->value = data->cat_map->data.i[ - data->cat_ofs->data.i[data->cat_var_count] + max_k]; + node->value = classLabels[max_k]; node->node_risk = total_weight - max_val; for( j = 0; j < cv_n; j++ ) @@ -2846,9 +573,8 @@ void CvDTree::calc_node_value( CvDTreeNode* node ) for( k = 0; k < m; k++ ) { - double w = priors[k]; - double val_k = cv_cls_count[j*m + k]*w; - double val = cls_count[k]*w - val_k; + double val_k = cv_cls_count[j*m + k]; + double val = cls_count[k] - val_k; sum_k += val_k; sum += val; if( max_val < val ) @@ -2859,9 +585,9 @@ void CvDTree::calc_node_value( CvDTreeNode* node ) } } - node->cv_Tn[j] = INT_MAX; - node->cv_node_risk[j] = sum - max_val; - node->cv_node_error[j] = sum_k - max_val_k; + w->cv_Tn[nidx*cv_n + j] = INT_MAX; + w->cv_node_risk[nidx*cv_n + j] = sum - max_val; + w->cv_node_error[nidx*cv_n + j] = sum_k - max_val_k; } } else @@ -2878,28 +604,24 @@ void CvDTree::calc_node_value( CvDTreeNode* node ) // where node_value_j is the node value calculated // as described in the previous bullet, and summation is done // over the samples with cv_labels(*)==j. - - double sum = 0, sum2 = 0; - float* values_buf = (float*)(cv_labels_buf + n); - int* sample_indices_buf = (int*)(values_buf + n); - const float* values = data->get_ord_responses(node, values_buf, sample_indices_buf); - double *cv_sum = 0, *cv_sum2 = 0; - int* cv_count = 0; + double sum = 0, sum2 = 0, sumw = 0; if( cv_n == 0 ) { for( i = 0; i < n; i++ ) { - double t = values[i]; - sum += t; - sum2 += t*t; + int si = _sidx[i]; + double wval = w->sample_weights[si]; + double t = w->ord_responses[si]; + sum += t*wval; + sum2 += t*t*wval; + sumw += wval; } } else { - cv_sum = (double*)base_buf; - cv_sum2 = cv_sum + cv_n; - cv_count = (int*)(cv_sum2 + cv_n); + double *cv_sum = buf, *cv_sum2 = cv_sum + cv_n; + double* cv_count = (double*)(cv_sum2 + cv_n); for( j = 0; j < cv_n; j++ ) { @@ -2909,537 +631,642 @@ void CvDTree::calc_node_value( CvDTreeNode* node ) for( i = 0; i < n; i++ ) { - j = cv_labels[i]; - double t = values[i]; - double s = cv_sum[j] + t; - double s2 = cv_sum2[j] + t*t; - int nc = cv_count[j] + 1; - cv_sum[j] = s; - cv_sum2[j] = s2; - cv_count[j] = nc; + int si = _sidx[i]; + j = w->cv_labels[si]; + double wval = w->sample_weights[si]; + double t = w->ord_responses[si]; + cv_sum[j] += t*wval; + cv_sum2[j] += t*t*wval; + cv_count[j] += wval; } - + for( j = 0; j < cv_n; j++ ) { sum += cv_sum[j]; sum2 += cv_sum2[j]; + sumw += cv_count[j]; + } + + for( j = 0; j < cv_n; j++ ) + { + double s = sum - cv_sum[j], si = sum - s; + double s2 = sum2 - cv_sum2[j], s2i = sum2 - s2; + double c = cv_count[j], ci = sumw - c; + double r = si/std::max(ci, DBL_EPSILON); + w->cv_node_risk[nidx*cv_n + j] = s2i - r*r*ci; + w->cv_node_error[nidx*cv_n + j] = s2 - 2*r*s + c*r*r; + w->cv_Tn[nidx*cv_n + j] = INT_MAX; } } + + node->node_risk = sum2 - (sum/sumw)*sum; + node->value = sum/sumw; + } +} - node->node_risk = sum2 - (sum/n)*sum; - node->value = sum/n; +DTreesImpl::WSplit DTreesImpl::findSplitOrdClass( int vi, const vector& _sidx, double initQuality ) +{ + const double epsilon = FLT_EPSILON*2; + int n = (int)_sidx.size(); + int m = (int)classLabels.size(); - for( j = 0; j < cv_n; j++ ) + cv::AutoBuffer buf(n*(sizeof(float) + sizeof(int)) + m*2*sizeof(double)); + const int* sidx = &_sidx[0]; + const int* responses = &w->cat_responses[0]; + const double* weights = &w->sample_weights[0]; + double* lcw = (double*)(uchar*)buf; + double* rcw = lcw + m; + float* values = (float*)(rcw + m); + int* sorted_idx = (int*)(values + n); + int i, best_i = -1; + double best_val = initQuality; + + for( i = 0; i < m; i++ ) + lcw[i] = rcw[i] = 0.; + + w->data->getValues( vi, _sidx, values ); + + for( i = 0; i < n; i++ ) + { + sorted_idx[i] = i; + int si = sidx[i]; + rcw[responses[si]] += weights[si]; + } + + std::sort(sorted_idx, sorted_idx + n, cmp_lt_idx(values)); + + double L = 0, R = 0, lsum2 = 0, rsum2 = 0; + for( i = 0; i < m; i++ ) + { + double wval = rcw[i]; + R += wval; + rsum2 += wval*wval; + } + + for( i = 0; i < n - 1; i++ ) + { + int curr = sorted_idx[i]; + int next = sorted_idx[i+1]; + int si = sidx[curr]; + double wval = weights[si], w2 = wval*wval; + L += wval; R -= wval; + int idx = responses[si]; + double lv = lcw[idx], rv = rcw[idx]; + lsum2 += 2*lv*wval + w2; + rsum2 -= 2*rv*wval - w2; + lcw[idx] = lv + wval; rcw[idx] = rv - wval; + + if( values[curr] + epsilon < values[next] ) { - double s = cv_sum[j], si = sum - s; - double s2 = cv_sum2[j], s2i = sum2 - s2; - int c = cv_count[j], ci = n - c; - double r = si/MAX(ci,1); - node->cv_node_risk[j] = s2i - r*r*ci; - node->cv_node_error[j] = s2 - 2*r*s + c*r*r; - node->cv_Tn[j] = INT_MAX; + double val = (lsum2*R + rsum2*L)/(L*R); + if( best_val < val ) + { + best_val = val; + best_i = i; + } } } -} + WSplit split; + if( best_i >= 0 ) + { + split.varIdx = vi; + split.c = (values[sorted_idx[best_i]] + values[sorted_idx[best_i+1]])*0.5f; + split.inversed = 0; + split.quality = (float)best_val; + } + return split; +} -void CvDTree::complete_node_dir( CvDTreeNode* node ) +// simple k-means, slightly modified to take into account the "weight" (L1-norm) of each vector. +void DTreesImpl::clusterCategories( const double* vectors, int n, int m, double* csums, int k, int* labels ) { - int vi, i, n = node->sample_count, nl, nr, d0 = 0, d1 = -1; - int nz = n - node->get_num_valid(node->split->var_idx); - char* dir = (char*)data->direction->data.ptr; + int iters = 0, max_iters = 100; + int i, j, idx; + cv::AutoBuffer buf(n + k); + double *v_weights = buf, *c_weights = buf + n; + bool modified = true; + RNG r(-1); + + // assign labels randomly + for( i = 0; i < n; i++ ) + { + int sum = 0; + const double* v = vectors + i*m; + labels[i] = i < k ? i : r.uniform(0, k); - // try to complete direction using surrogate splits - if( nz && data->params.use_surrogates ) + // compute weight of each vector + for( j = 0; j < m; j++ ) + sum += v[j]; + v_weights[i] = sum ? 1./sum : 0.; + } + + for( i = 0; i < n; i++ ) + { + int i1 = r.uniform(0, n); + int i2 = r.uniform(0, n); + std::swap( labels[i1], labels[i2] ); + } + + for( iters = 0; iters <= max_iters; iters++ ) { - cv::AutoBuffer inn_buf(n*(2*sizeof(int)+sizeof(float))); - CvDTreeSplit* split = node->split->next; - for( ; split != 0 && nz; split = split->next ) + // calculate csums + for( i = 0; i < k; i++ ) + { + for( j = 0; j < m; j++ ) + csums[i*m + j] = 0; + } + + for( i = 0; i < n; i++ ) { - int inversed_mask = split->inversed ? -1 : 0; - vi = split->var_idx; + const double* v = vectors + i*m; + double* s = csums + labels[i]*m; + for( j = 0; j < m; j++ ) + s[j] += v[j]; + } - if( data->get_var_type(vi) >= 0 ) // split on categorical var - { - int* labels_buf = (int*)(uchar*)inn_buf; - const int* labels = data->get_cat_var_data(node, vi, labels_buf); - const int* subset = split->subset; + // exit the loop here, when we have up-to-date csums + if( iters == max_iters || !modified ) + break; - for( i = 0; i < n; i++ ) - { - int idx = labels[i]; - if( !dir[i] && ( ((idx >= 0)&&(!data->is_buf_16u)) || ((idx != 65535)&&(data->is_buf_16u)) )) + modified = false; - { - int d = CV_DTREE_CAT_DIR(idx,subset); - dir[i] = (char)((d ^ inversed_mask) - inversed_mask); - if( --nz ) - break; - } - } - } - else // split on ordered var + // calculate weight of each cluster + for( i = 0; i < k; i++ ) + { + const double* s = csums + i*m; + double sum = 0; + for( j = 0; j < m; j++ ) + sum += s[j]; + c_weights[i] = sum ? 1./sum : 0; + } + + // now for each vector determine the closest cluster + for( i = 0; i < n; i++ ) + { + const double* v = vectors + i*m; + double alpha = v_weights[i]; + double min_dist2 = DBL_MAX; + int min_idx = -1; + + for( idx = 0; idx < k; idx++ ) { - float* values_buf = (float*)(uchar*)inn_buf; - int* sorted_indices_buf = (int*)(values_buf + n); - int* sample_indices_buf = sorted_indices_buf + n; - const float* values = 0; - const int* sorted_indices = 0; - data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, &sorted_indices, sample_indices_buf ); - int split_point = split->ord.split_point; - int n1 = node->get_num_valid(vi); - - assert( 0 <= split_point && split_point < n-1 ); - - for( i = 0; i < n1; i++ ) + const double* s = csums + idx*m; + double dist2 = 0., beta = c_weights[idx]; + for( j = 0; j < m; j++ ) { - int idx = sorted_indices[i]; - if( !dir[idx] ) - { - int d = i <= split_point ? -1 : 1; - dir[idx] = (char)((d ^ inversed_mask) - inversed_mask); - if( --nz ) - break; - } + double t = v[j]*alpha - s[j]*beta; + dist2 += t*t; + } + if( min_dist2 > dist2 ) + { + min_dist2 = dist2; + min_idx = idx; } } + + if( min_idx != labels[i] ) + modified = true; + labels[i] = min_idx; } } +} - // find the default direction for the rest - if( nz ) +DTreesImpl::WSplit DTreesImpl::findSplitCatClass( int vi, const vector& _sidx, + double initQuality, int* subset ) +{ + int _mi = getCatCount(vi), mi = _mi; + int n = (int)_sidx.size(); + int m = (int)classLabels.size(); + + int base_size = m*(3 + mi) + mi + 1; + if( m > 2 && mi > params.maxCategories ) + base_size += m*std::min(params.maxCategories, n) + mi; + else + base_size += mi; + AutoBuffer buf(base_size + n); + + double* lc = (double*)buf; + double* rc = lc + m; + double* _cjk = rc + m*2, *cjk = _cjk; + double* c_weights = cjk + m*mi; + + int* labels = (int*)(buf + base_size); + w->data->getNormCatValues(vi, _sidx, labels); + const int* responses = &w->cat_responses[0]; + const double* weights = &w->sample_weights[0]; + + int* cluster_labels = 0; + double** dbl_ptr = 0; + int i, j, k, si, idx; + double L = 0, R = 0; + double best_val = initQuality; + int prevcode = 0, best_subset = -1, subset_i, subset_n, subtract = 0; + + // init array of counters: + // c_{jk} - number of samples that have vi-th input variable = j and response = k. + for( j = -1; j < mi; j++ ) + for( k = 0; k < m; k++ ) + cjk[j*m + k] = 0; + + for( i = 0; i < n; i++ ) { - for( i = nr = 0; i < n; i++ ) - nr += dir[i] > 0; - nl = n - nr - nz; - d0 = nl > nr ? -1 : nr > nl; + si = _sidx[i]; + j = labels[i]; + k = responses[si]; + cjk[j*m + k] += weights[si]; } - // make sure that every sample is directed either to the left or to the right - for( i = 0; i < n; i++ ) + if( m > 2 ) { - int d = dir[i]; - if( !d ) + if( mi > params.maxCategories ) { - d = d0; - if( !d ) - d = d1, d1 = -d1; + mi = std::min(params.maxCategories, n); + cjk = c_weights + _mi; + cluster_labels = (int*)(cjk + m*mi); + clusterCategories( _cjk, _mi, m, cjk, mi, cluster_labels ); } - d = d > 0; - dir[i] = (char)d; // remap (-1,1) to (0,1) + subset_i = 1; + subset_n = 1 << mi; } -} - - -void CvDTree::split_node_data( CvDTreeNode* node ) -{ - int vi, i, n = node->sample_count, nl, nr, scount = data->sample_count; - char* dir = (char*)data->direction->data.ptr; - CvDTreeNode *left = 0, *right = 0; - int* new_idx = data->split_buf->data.i; - int new_buf_idx = data->get_child_buf_idx( node ); - int work_var_count = data->get_work_var_count(); - CvMat* buf = data->buf; - size_t length_buf_row = data->get_length_subbuf(); - cv::AutoBuffer inn_buf(n*(3*sizeof(int) + sizeof(float))); - int* temp_buf = (int*)(uchar*)inn_buf; - - complete_node_dir(node); - - for( i = nl = nr = 0; i < n; i++ ) + else { - int d = dir[i]; - // initialize new indices for splitting ordered variables - new_idx[i] = (nl & (d-1)) | (nr & -d); // d ? ri : li - nr += d; - nl += d^1; + assert( m == 2 ); + dbl_ptr = (double**)(c_weights + _mi); + for( j = 0; j < mi; j++ ) + dbl_ptr[j] = cjk + j*2 + 1; + std::sort(dbl_ptr, dbl_ptr + mi, cmp_lt_ptr()); + subset_i = 0; + subset_n = mi; } - bool split_input_data; - node->left = left = data->new_node( node, nl, new_buf_idx, node->offset ); - node->right = right = data->new_node( node, nr, new_buf_idx, node->offset + nl ); + for( k = 0; k < m; k++ ) + { + double sum = 0; + for( j = 0; j < mi; j++ ) + sum += cjk[j*m + k]; + CV_Assert(sum > 0); + rc[k] = sum; + lc[k] = 0; + } - split_input_data = node->depth + 1 < data->params.max_depth && - (node->left->sample_count > data->params.min_sample_count || - node->right->sample_count > data->params.min_sample_count); + for( j = 0; j < mi; j++ ) + { + double sum = 0; + for( k = 0; k < m; k++ ) + sum += cjk[j*m + k]; + c_weights[j] = sum; + R += c_weights[j]; + } - // split ordered variables, keep both halves sorted. - for( vi = 0; vi < data->var_count; vi++ ) + for( ; subset_i < subset_n; subset_i++ ) { - int ci = data->get_var_type(vi); + double lsum2 = 0, rsum2 = 0; - if( ci >= 0 || !split_input_data ) - continue; + if( m == 2 ) + idx = (int)(dbl_ptr[subset_i] - cjk)/2; + else + { + int graycode = (subset_i>>1)^subset_i; + int diff = graycode ^ prevcode; - int n1 = node->get_num_valid(vi); - float* src_val_buf = (float*)(uchar*)(temp_buf + n); - int* src_sorted_idx_buf = (int*)(src_val_buf + n); - int* src_sample_idx_buf = src_sorted_idx_buf + n; - const float* src_val = 0; - const int* src_sorted_idx = 0; - data->get_ord_var_data(node, vi, src_val_buf, src_sorted_idx_buf, &src_val, &src_sorted_idx, src_sample_idx_buf); + // determine index of the changed bit. + Cv32suf u; + idx = diff >= (1 << 16) ? 16 : 0; + u.f = (float)(((diff >> 16) | diff) & 65535); + idx += (u.i >> 23) - 127; + subtract = graycode < prevcode; + prevcode = graycode; + } - for(i = 0; i < n; i++) - temp_buf[i] = src_sorted_idx[i]; + double* crow = cjk + idx*m; + double weight = c_weights[idx]; + if( weight < FLT_EPSILON ) + continue; - if (data->is_buf_16u) + if( !subtract ) { - unsigned short *ldst, *rdst, *ldst0, *rdst0; - //unsigned short tl, tr; - ldst0 = ldst = (unsigned short*)(buf->data.s + left->buf_idx*length_buf_row + - vi*scount + left->offset); - rdst0 = rdst = (unsigned short*)(ldst + nl); - - // split sorted - for( i = 0; i < n1; i++ ) + for( k = 0; k < m; k++ ) { - int idx = temp_buf[i]; - int d = dir[idx]; - idx = new_idx[idx]; - if (d) - { - *rdst = (unsigned short)idx; - rdst++; - } - else - { - *ldst = (unsigned short)idx; - ldst++; - } + double t = crow[k]; + double lval = lc[k] + t; + double rval = rc[k] - t; + lsum2 += lval*lval; + rsum2 += rval*rval; + lc[k] = lval; rc[k] = rval; + } + L += weight; + R -= weight; + } + else + { + for( k = 0; k < m; k++ ) + { + double t = crow[k]; + double lval = lc[k] - t; + double rval = rc[k] + t; + lsum2 += lval*lval; + rsum2 += rval*rval; + lc[k] = lval; rc[k] = rval; } + L -= weight; + R += weight; + } - left->set_num_valid(vi, (int)(ldst - ldst0)); - right->set_num_valid(vi, (int)(rdst - rdst0)); + if( L > FLT_EPSILON && R > FLT_EPSILON ) + { + double val = (lsum2*R + rsum2*L)/(L*R); + if( best_val < val ) + { + best_val = val; + best_subset = subset_i; + } + } + } - // split missing - for( ; i < n; i++ ) + WSplit split; + if( best_subset >= 0 ) + { + split.varIdx = vi; + split.quality = (float)best_val; + memset( subset, 0, getSubsetSize(vi) * sizeof(int) ); + if( m == 2 ) + { + for( i = 0; i <= best_subset; i++ ) { - int idx = temp_buf[i]; - int d = dir[idx]; - idx = new_idx[idx]; - if (d) - { - *rdst = (unsigned short)idx; - rdst++; - } - else - { - *ldst = (unsigned short)idx; - ldst++; - } + idx = (int)(dbl_ptr[i] - cjk) >> 1; + subset[idx >> 5] |= 1 << (idx & 31); } } else { - int *ldst0, *ldst, *rdst0, *rdst; - ldst0 = ldst = buf->data.i + left->buf_idx*length_buf_row + - vi*scount + left->offset; - rdst0 = rdst = buf->data.i + right->buf_idx*length_buf_row + - vi*scount + right->offset; - - // split sorted - for( i = 0; i < n1; i++ ) + for( i = 0; i < _mi; i++ ) { - int idx = temp_buf[i]; - int d = dir[idx]; - idx = new_idx[idx]; - if (d) - { - *rdst = idx; - rdst++; - } - else - { - *ldst = idx; - ldst++; - } + idx = cluster_labels ? cluster_labels[i] : i; + if( best_subset & (1 << idx) ) + subset[i >> 5] |= 1 << (i & 31); } + } + } + return split; +} + +DTreesImpl::WSplit DTreesImpl::findSplitOrdReg( int vi, const vector& _sidx, double initQuality ) +{ + const float epsilon = FLT_EPSILON*2; + const double* weights = &w->sample_weights[0]; + int n = (int)_sidx.size(); + + AutoBuffer buf(n*(sizeof(int) + sizeof(float))); + + float* values = (float*)(uchar*)buf; + int* sorted_idx = (int*)(values + n); + w->data->getValues(vi, _sidx, values); + const double* responses = &w->ord_responses[0]; - left->set_num_valid(vi, (int)(ldst - ldst0)); - right->set_num_valid(vi, (int)(rdst - rdst0)); + int i, si, best_i = -1; + double L = 0, R = 0; + double best_val = initQuality, lsum = 0, rsum = 0; + + for( i = 0; i < n; i++ ) + { + sorted_idx[i] = i; + si = _sidx[i]; + R += weights[si]; + rsum += weights[si]*responses[si]; + } + + std::sort(sorted_idx, sorted_idx + n, cmp_lt_idx(values)); + + // find the optimal split + for( i = 0; i < n - 1; i++ ) + { + int curr = sorted_idx[i]; + int next = sorted_idx[i+1]; + si = _sidx[curr]; + double wval = weights[si]; + double t = responses[si]*wval; + L += wval; R -= wval; + lsum += t; rsum -= t; - // split missing - for( ; i < n; i++ ) + if( values[curr] + epsilon < values[next] ) + { + double val = (lsum*lsum*R + rsum*rsum*L)/(L*R); + if( best_val < val ) { - int idx = temp_buf[i]; - int d = dir[idx]; - idx = new_idx[idx]; - if (d) - { - *rdst = idx; - rdst++; - } - else - { - *ldst = idx; - ldst++; - } + best_val = val; + best_i = i; } } } - // split categorical vars, responses and cv_labels using new_idx relocation table - for( vi = 0; vi < work_var_count; vi++ ) + WSplit split; + if( best_i >= 0 ) { - int ci = data->get_var_type(vi); - int n1 = node->get_num_valid(vi), nr1 = 0; + split.varIdx = vi; + split.c = (values[sorted_idx[best_i]] + values[sorted_idx[best_i+1]])*0.5f; + split.inversed = 0; + split.quality = (float)best_val; + } + return split; +} - if( ci < 0 || (vi < data->var_count && !split_input_data) ) - continue; +DTreesImpl::WSplit DTreesImpl::findSplitCatReg( int vi, const vector& _sidx, + double initQuality, int* subset ) +{ + const double* weights = &w->sample_weights[0]; + const double* responses = &w->ord_responses[0]; + int n = (int)_sidx.size(); + int mi = getCatCount(vi); - int *src_lbls_buf = temp_buf + n; - const int* src_lbls = data->get_cat_var_data(node, vi, src_lbls_buf); + AutoBuffer buf(3*mi + 3 + n); + double* sum = (double*)buf + 1; + double* counts = sum + mi + 1; + double** sum_ptr = (double**)(counts + mi); + int* cat_labels = (int*)(sum_ptr + mi); - for(i = 0; i < n; i++) - temp_buf[i] = src_lbls[i]; + w->data->getNormCatValues(vi, _sidx, cat_labels); - if (data->is_buf_16u) - { - unsigned short *ldst = (unsigned short *)(buf->data.s + left->buf_idx*length_buf_row + - vi*scount + left->offset); - unsigned short *rdst = (unsigned short *)(buf->data.s + right->buf_idx*length_buf_row + - vi*scount + right->offset); + double L = 0, R = 0, best_val = initQuality, lsum = 0, rsum = 0; + int i, si, best_subset = -1, subset_i; - for( i = 0; i < n; i++ ) - { - int d = dir[i]; - int idx = temp_buf[i]; - if (d) - { - *rdst = (unsigned short)idx; - rdst++; - nr1 += (idx != 65535 )&d; - } - else - { - *ldst = (unsigned short)idx; - ldst++; - } - } + for( i = -1; i < mi; i++ ) + sum[i] = counts[i] = 0; - if( vi < data->var_count ) - { - left->set_num_valid(vi, n1 - nr1); - right->set_num_valid(vi, nr1); - } - } - else - { - int *ldst = buf->data.i + left->buf_idx*length_buf_row + - vi*scount + left->offset; - int *rdst = buf->data.i + right->buf_idx*length_buf_row + - vi*scount + right->offset; + // calculate sum response and weight of each category of the input var + for( i = 0; i < n; i++ ) + { + int idx = cat_labels[i]; + si = _sidx[i]; + double wval = weights[si]; + sum[idx] += responses[si]*wval; + counts[idx] += wval; + } - for( i = 0; i < n; i++ ) - { - int d = dir[i]; - int idx = temp_buf[i]; - if (d) - { - *rdst = idx; - rdst++; - nr1 += (idx >= 0)&d; - } - else - { - *ldst = idx; - ldst++; - } + // calculate average response in each category + for( i = 0; i < mi; i++ ) + { + R += counts[i]; + rsum += sum[i]; + sum[i] = fabs(counts[i]) > DBL_EPSILON ? sum[i]/counts[i] : 0; + sum_ptr[i] = sum + i; + } - } + std::sort(sum_ptr, sum_ptr + mi, cmp_lt_ptr()); - if( vi < data->var_count ) + // revert back to unnormalized sums + // (there should be a very little loss in accuracy) + for( i = 0; i < mi; i++ ) + sum[i] *= counts[i]; + + for( subset_i = 0; subset_i < mi-1; subset_i++ ) + { + int idx = (int)(sum_ptr[subset_i] - sum); + double ni = counts[idx]; + + if( ni > FLT_EPSILON ) + { + double s = sum[idx]; + lsum += s; L += ni; + rsum -= s; R -= ni; + + if( L > FLT_EPSILON && R > FLT_EPSILON ) { - left->set_num_valid(vi, n1 - nr1); - right->set_num_valid(vi, nr1); + double val = (lsum*lsum*R + rsum*rsum*L)/(L*R); + if( best_val < val ) + { + best_val = val; + best_subset = subset_i; + } } } } + + WSplit split; + if( best_subset >= 0 ) + { + split.varIdx = vi; + split.quality = (float)best_val; + memset( subset, 0, getSubsetSize(vi) * sizeof(int)); + for( i = 0; i <= best_subset; i++ ) + { + int idx = (int)(sum_ptr[i] - sum); + subset[idx >> 5] |= 1 << (idx & 31); + } + } + return split; +} +int DTreesImpl::calcDir( int splitidx, const vector& _sidx, + vector& _sleft, vector& _sright ) +{ + WSplit split = w->wsplits[splitidx]; + int i, si, n = (int)_sidx.size(), vi = split.varIdx; + _sleft.reserve(n); + _sright.reserve(n); + _sleft.clear(); + _sright.clear(); - // split sample indices - int *sample_idx_src_buf = temp_buf + n; - const int* sample_idx_src = data->get_sample_indices(node, sample_idx_src_buf); - - for(i = 0; i < n; i++) - temp_buf[i] = sample_idx_src[i]; + AutoBuffer buf(n); + int mi = getCatCount(vi); + double wleft = 0, wright = 0; + const double* weights = &w->sample_weights[0]; - int pos = data->get_work_var_count(); - if (data->is_buf_16u) + if( mi <= 0 ) // split on an ordered variable { - unsigned short* ldst = (unsigned short*)(buf->data.s + left->buf_idx*length_buf_row + - pos*scount + left->offset); - unsigned short* rdst = (unsigned short*)(buf->data.s + right->buf_idx*length_buf_row + - pos*scount + right->offset); - for (i = 0; i < n; i++) + float c = split.c; + float* values = buf; + w->data->getValues(vi, _sidx, values); + + for( i = 0; i < n; i++ ) { - int d = dir[i]; - unsigned short idx = (unsigned short)temp_buf[i]; - if (d) + si = _sidx[i]; + if( values[i] <= c ) { - *rdst = idx; - rdst++; + _sleft.push_back(si); + wleft += weights[si]; } else { - *ldst = idx; - ldst++; + _sright.push_back(si); + wright += weights[si]; } } } else { - int* ldst = buf->data.i + left->buf_idx*length_buf_row + - pos*scount + left->offset; - int* rdst = buf->data.i + right->buf_idx*length_buf_row + - pos*scount + right->offset; - for (i = 0; i < n; i++) + const int* subset = &w->wsubsets[split.subsetOfs]; + int* cat_labels = (int*)(float*)buf; + w->data->getNormCatValues(vi, _sidx, cat_labels); + + for( i = 0; i < n; i++ ) { - int d = dir[i]; - int idx = temp_buf[i]; - if (d) + si = _sidx[i]; + unsigned u = cat_labels[i]; + if( CV_DTREE_CAT_DIR(u, subset) < 0 ) { - *rdst = idx; - rdst++; + _sleft.push_back(si); + wleft += weights[si]; } else { - *ldst = idx; - ldst++; + _sright.push_back(si); + wright += weights[si]; } } } - - // deallocate the parent node data that is not needed anymore - data->free_node_data(node); -} - -float CvDTree::calc_error( CvMLData* _data, int type, std::vector *resp ) -{ - float err = 0; - const CvMat* values = _data->get_values(); - const CvMat* response = _data->get_responses(); - const CvMat* missing = _data->get_missing(); - const CvMat* sample_idx = (type == CV_TEST_ERROR) ? _data->get_test_sample_idx() : _data->get_train_sample_idx(); - const CvMat* var_types = _data->get_var_types(); - int* sidx = sample_idx ? sample_idx->data.i : 0; - int r_step = CV_IS_MAT_CONT(response->type) ? - 1 : response->step / CV_ELEM_SIZE(response->type); - bool is_classifier = var_types->data.ptr[var_types->cols-1] == CV_VAR_CATEGORICAL; - int sample_count = sample_idx ? sample_idx->cols : 0; - sample_count = (type == CV_TRAIN_ERROR && sample_count == 0) ? values->rows : sample_count; - float* pred_resp = 0; - if( resp && (sample_count > 0) ) - { - resp->resize( sample_count ); - pred_resp = &((*resp)[0]); - } - - if ( is_classifier ) - { - for( int i = 0; i < sample_count; i++ ) - { - CvMat sample, miss; - int si = sidx ? sidx[i] : i; - cvGetRow( values, &sample, si ); - if( missing ) - cvGetRow( missing, &miss, si ); - float r = (float)predict( &sample, missing ? &miss : 0 )->value; - if( pred_resp ) - pred_resp[i] = r; - int d = fabs((double)r - response->data.fl[(size_t)si*r_step]) <= FLT_EPSILON ? 0 : 1; - err += d; - } - err = sample_count ? err / (float)sample_count * 100 : -FLT_MAX; - } - else - { - for( int i = 0; i < sample_count; i++ ) - { - CvMat sample, miss; - int si = sidx ? sidx[i] : i; - cvGetRow( values, &sample, si ); - if( missing ) - cvGetRow( missing, &miss, si ); - float r = (float)predict( &sample, missing ? &miss : 0 )->value; - if( pred_resp ) - pred_resp[i] = r; - float d = r - response->data.fl[(size_t)si*r_step]; - err += d*d; - } - err = sample_count ? err / (float)sample_count : -FLT_MAX; - } - return err; + CV_Assert( (int)_sleft.size() < n && (int)_sright.size() < n ); + return wleft > wright ? -1 : 1; } -void CvDTree::prune_cv() +int DTreesImpl::pruneCV( int root ) { - CvMat* ab = 0; - CvMat* temp = 0; - CvMat* err_jk = 0; + vector ab; // 1. build tree sequence for each cv fold, calculate error_{Tj,beta_k}. // 2. choose the best tree index (if need, apply 1SE rule). // 3. store the best index and cut the branches. - CV_FUNCNAME( "CvDTree::prune_cv" ); - - __BEGIN__; - - int ti, j, tree_count = 0, cv_n = data->params.cv_folds, n = root->sample_count; + int ti, tree_count = 0, j, cv_n = params.CVFolds, n = w->wnodes[root].sample_count; // currently, 1SE for regression is not implemented - bool use_1se = data->params.use_1se_rule != 0 && data->is_classifier; - double* err; + bool use_1se = params.use1SERule != 0 && _isClassifier; double min_err = 0, min_err_se = 0; int min_idx = -1; - CV_CALL( ab = cvCreateMat( 1, 256, CV_64F )); - // build the main tree sequence, calculate alpha's for(;;tree_count++) { - double min_alpha = update_tree_rnc(tree_count, -1); - if( cut_tree(tree_count, -1, min_alpha) ) + double min_alpha = updateTreeRNC(root, tree_count, -1); + if( cutTree(root, tree_count, -1, min_alpha) ) break; - if( ab->cols <= tree_count ) - { - CV_CALL( temp = cvCreateMat( 1, ab->cols*3/2, CV_64F )); - for( ti = 0; ti < ab->cols; ti++ ) - temp->data.db[ti] = ab->data.db[ti]; - cvReleaseMat( &ab ); - ab = temp; - temp = 0; - } - - ab->data.db[tree_count] = min_alpha; + ab.push_back(min_alpha); } - ab->data.db[0] = 0.; - if( tree_count > 0 ) { + ab[0] = 0.; + for( ti = 1; ti < tree_count-1; ti++ ) - ab->data.db[ti] = sqrt(ab->data.db[ti]*ab->data.db[ti+1]); - ab->data.db[tree_count-1] = DBL_MAX*0.5; + ab[ti] = std::sqrt(ab[ti]*ab[ti+1]); + ab[tree_count-1] = DBL_MAX*0.5; - CV_CALL( err_jk = cvCreateMat( cv_n, tree_count, CV_64F )); - err = err_jk->data.db; + Mat err_jk(cv_n, tree_count, CV_64F); for( j = 0; j < cv_n; j++ ) { int tj = 0, tk = 0; - for( ; tk < tree_count; tj++ ) + for( ; tj < tree_count; tj++ ) { - double min_alpha = update_tree_rnc(tj, j); - if( cut_tree(tj, j, min_alpha) ) + double min_alpha = updateTreeRNC(root, tj, j); + if( cutTree(root, tj, j, min_alpha) ) min_alpha = DBL_MAX; for( ; tk < tree_count; tk++ ) { - if( ab->data.db[tk] > min_alpha ) + if( ab[tk] > min_alpha ) break; - err[j*tree_count + tk] = root->tree_error; + err_jk.at(j, tk) = w->wnodes[root].tree_error; } } } @@ -3448,7 +1275,7 @@ void CvDTree::prune_cv() { double sum_err = 0; for( j = 0; j < cv_n; j++ ) - sum_err += err[j*tree_count + ti]; + sum_err += err_jk.at(j, ti); if( ti == 0 || sum_err < min_err ) { min_err = sum_err; @@ -3461,242 +1288,190 @@ void CvDTree::prune_cv() } } - pruned_tree_idx = min_idx; - free_prune_data(data->params.truncate_pruned_tree != 0); - - __END__; - - cvReleaseMat( &err_jk ); - cvReleaseMat( &ab ); - cvReleaseMat( &temp ); + return min_idx; } - -double CvDTree::update_tree_rnc( int T, int fold ) +double DTreesImpl::updateTreeRNC( int root, double T, int fold ) { - CvDTreeNode* node = root; + int nidx = root, pidx = -1, cv_n = params.CVFolds; double min_alpha = DBL_MAX; for(;;) { - CvDTreeNode* parent; + WNode *node = 0, *parent = 0; + for(;;) { - int t = fold >= 0 ? node->cv_Tn[fold] : node->Tn; - if( t <= T || !node->left ) + node = &w->wnodes[nidx]; + double t = fold >= 0 ? w->cv_Tn[nidx*cv_n + fold] : node->Tn; + if( t <= T || node->left < 0 ) { node->complexity = 1; node->tree_risk = node->node_risk; node->tree_error = 0.; if( fold >= 0 ) { - node->tree_risk = node->cv_node_risk[fold]; - node->tree_error = node->cv_node_error[fold]; + node->tree_risk = w->cv_node_risk[nidx*cv_n + fold]; + node->tree_error = w->cv_node_error[nidx*cv_n + fold]; } break; } - node = node->left; + nidx = node->left; } - for( parent = node->parent; parent && parent->right == node; - node = parent, parent = parent->parent ) + for( pidx = node->parent; pidx >= 0 && w->wnodes[pidx].right == nidx; + nidx = pidx, pidx = w->wnodes[pidx].parent ) { + node = &w->wnodes[nidx]; + parent = &w->wnodes[pidx]; parent->complexity += node->complexity; parent->tree_risk += node->tree_risk; parent->tree_error += node->tree_error; - parent->alpha = ((fold >= 0 ? parent->cv_node_risk[fold] : parent->node_risk) - - parent->tree_risk)/(parent->complexity - 1); - min_alpha = MIN( min_alpha, parent->alpha ); + parent->alpha = ((fold >= 0 ? w->cv_node_risk[pidx*cv_n + fold] : parent->node_risk) + - parent->tree_risk)/(parent->complexity - 1); + min_alpha = std::min( min_alpha, parent->alpha ); } - if( !parent ) + if( pidx < 0 ) break; + node = &w->wnodes[nidx]; + parent = &w->wnodes[pidx]; parent->complexity = node->complexity; parent->tree_risk = node->tree_risk; parent->tree_error = node->tree_error; - node = parent->right; + nidx = parent->right; } return min_alpha; } - -int CvDTree::cut_tree( int T, int fold, double min_alpha ) +bool DTreesImpl::cutTree( int root, double T, int fold, double min_alpha ) { - CvDTreeNode* node = root; - if( !node->left ) - return 1; + int cv_n = params.CVFolds, nidx = root, pidx = -1; + WNode* node = &w->wnodes[root]; + if( node->left < 0 ) + return true; for(;;) { - CvDTreeNode* parent; for(;;) { - int t = fold >= 0 ? node->cv_Tn[fold] : node->Tn; - if( t <= T || !node->left ) + node = &w->wnodes[nidx]; + double t = fold >= 0 ? w->cv_Tn[nidx*cv_n + fold] : node->Tn; + if( t <= T || node->left < 0 ) break; if( node->alpha <= min_alpha + FLT_EPSILON ) { if( fold >= 0 ) - node->cv_Tn[fold] = T; + w->cv_Tn[nidx*cv_n + fold] = T; else node->Tn = T; - if( node == root ) - return 1; + if( nidx == root ) + return true; break; } - node = node->left; + nidx = node->left; } - - for( parent = node->parent; parent && parent->right == node; - node = parent, parent = parent->parent ) + + for( pidx = node->parent; pidx >= 0 && w->wnodes[pidx].right == nidx; + nidx = pidx, pidx = w->wnodes[pidx].parent ) ; - - if( !parent ) + + if( pidx < 0 ) break; - - node = parent->right; + + nidx = w->wnodes[pidx].right; } - - return 0; + + return false; } - -void CvDTree::free_prune_data(bool _cut_tree) +float DTreesImpl::predictTrees( const Range& range, const Mat& sample, int flags ) const { - CvDTreeNode* node = root; - - for(;;) - { - CvDTreeNode* parent; - for(;;) - { - // do not call cvSetRemoveByPtr( cv_heap, node->cv_Tn ) - // as we will clear the whole cross-validation heap at the end - node->cv_Tn = 0; - node->cv_node_error = node->cv_node_risk = 0; - if( !node->left ) - break; - node = node->left; - } - - for( parent = node->parent; parent && parent->right == node; - node = parent, parent = parent->parent ) - { - if( _cut_tree && parent->Tn <= pruned_tree_idx ) - { - data->free_node( parent->left ); - data->free_node( parent->right ); - parent->left = parent->right = 0; - } - } + CV_Assert( sample.type() == CV_32F ); - if( !parent ) - break; - - node = parent->right; - } - - if( data->cv_heap ) - cvClearSet( data->cv_heap ); -} + int predictType = flags & PREDICT_MASK; + int nvars = (int)varIdx.size(); + if( nvars == 0 ) + nvars = (int)varType.size(); + int i, ncats = (int)catOfs.size(), nclasses = (int)classLabels.size(); + int catbufsize = ncats > 0 ? nvars : 0; + AutoBuffer buf(nclasses + catbufsize + 1); + int* votes = buf; + int* catbuf = votes + nclasses; + const int* cvidx = (flags & (COMPRESSED_INPUT|PREPROCESSED_INPUT)) == 0 && !varIdx.empty() ? &compVarIdx[0] : 0; + const uchar* vtype = &varType[0]; + const Vec2i* cofs = !catOfs.empty() ? &catOfs[0] : 0; + const int* cmap = !catMap.empty() ? &catMap[0] : 0; + const float* psample = sample.ptr(); + const float* missingSubstPtr = !missingSubst.empty() ? &missingSubst[0] : 0; + size_t sstep = sample.isContinuous() ? 1 : sample.step/sizeof(float); + double sum = 0.; + int lastClassIdx = -1; + const float MISSED_VAL = TrainData::missingValue(); + for( i = 0; i < catbufsize; i++ ) + catbuf[i] = -1; -void CvDTree::free_tree() -{ - if( root && data && data->shared ) + if( predictType == PREDICT_AUTO ) { - pruned_tree_idx = INT_MIN; - free_prune_data(true); - data->free_node(root); - root = 0; + predictType = !_isClassifier || (classLabels.size() == 2 && (flags & RAW_OUTPUT) != 0) ? + PREDICT_SUM : PREDICT_MAX_VOTE; } -} - -CvDTreeNode* CvDTree::predict( const CvMat* _sample, - const CvMat* _missing, bool preprocessed_input ) const -{ - cv::AutoBuffer catbuf; - - int i, mstep = 0; - const uchar* m = 0; - CvDTreeNode* node = root; - - if( !node ) - CV_Error( CV_StsError, "The tree has not been trained yet" ); - - if( !CV_IS_MAT(_sample) || CV_MAT_TYPE(_sample->type) != CV_32FC1 || - (_sample->cols != 1 && _sample->rows != 1) || - (_sample->cols + _sample->rows - 1 != data->var_all && !preprocessed_input) || - (_sample->cols + _sample->rows - 1 != data->var_count && preprocessed_input) ) - CV_Error( CV_StsBadArg, - "the input sample must be 1d floating-point vector with the same " - "number of elements as the total number of variables used for training" ); - const float* sample = _sample->data.fl; - int step = CV_IS_MAT_CONT(_sample->type) ? 1 : _sample->step/sizeof(sample[0]); - - if( data->cat_count && !preprocessed_input ) // cache for categorical variables + if( predictType == PREDICT_MAX_VOTE ) { - int n = data->cat_count->cols; - catbuf.allocate(n); - for( i = 0; i < n; i++ ) - catbuf[i] = -1; + for( i = 0; i < nclasses; i++ ) + votes[i] = 0; } - if( _missing ) + for( int ridx = range.start; ridx < range.end; ridx++ ) { - if( !CV_IS_MAT(_missing) || !CV_IS_MASK_ARR(_missing) || - !CV_ARE_SIZES_EQ(_missing, _sample) ) - CV_Error( CV_StsBadArg, - "the missing data mask must be 8-bit vector of the same size as input sample" ); - m = _missing->data.ptr; - mstep = CV_IS_MAT_CONT(_missing->type) ? 1 : _missing->step/sizeof(m[0]); - } - - const int* vtype = data->var_type->data.i; - const int* vidx = data->var_idx && !preprocessed_input ? data->var_idx->data.i : 0; - const int* cmap = data->cat_map ? data->cat_map->data.i : 0; - const int* cofs = data->cat_ofs ? data->cat_ofs->data.i : 0; + int nidx = roots[ridx], prev = nidx, c = 0; - while( node->Tn > pruned_tree_idx && node->left ) - { - CvDTreeSplit* split = node->split; - int dir = 0; - for( ; !dir && split != 0; split = split->next ) + for(;;) { - int vi = split->var_idx; - int ci = vtype[vi]; - i = vidx ? vidx[vi] : vi; - float val = sample[(size_t)i*step]; - if( m && m[(size_t)i*mstep] ) - continue; - if( ci < 0 ) // ordered - dir = val <= split->ord.c ? -1 : 1; - else // categorical + prev = nidx; + const Node& node = nodes[nidx]; + if( node.split < 0 ) + break; + const Split& split = splits[node.split]; + int vi = split.varIdx; + int ci = cvidx ? cvidx[vi] : vi; + float val = psample[ci*sstep]; + if( val == MISSED_VAL ) + { + if( !missingSubstPtr ) + { + nidx = node.defaultDir < 0 ? node.left : node.right; + continue; + } + val = missingSubstPtr[vi]; + } + + if( vtype[vi] == VAR_ORDERED ) + nidx = val <= split.c ? node.left : node.right; + else { - int c; - if( preprocessed_input ) + if( flags & PREPROCESSED_INPUT ) c = cvRound(val); else { c = catbuf[ci]; if( c < 0 ) { - int a = c = cofs[ci]; - int b = (ci+1 >= data->cat_ofs->cols) ? data->cat_map->cols : cofs[ci+1]; + int a = c = cofs[vi][0]; + int b = cofs[vi][1]; int ival = cvRound(val); if( ival != val ) CV_Error( CV_StsBadArg, - "one of input categorical variable is not an integer" ); + "one of input categorical variable is not an integer" ); - int sh = 0; while( a < b ) { - sh++; c = (a + b) >> 1; if( ival < cmap[c] ) b = c; @@ -3706,446 +1481,423 @@ CvDTreeNode* CvDTree::predict( const CvMat* _sample, break; } - if( c < 0 || ival != cmap[c] ) - continue; + CV_Assert( c >= 0 && ival == cmap[c] ); - catbuf[ci] = c -= cofs[ci]; + c -= cofs[vi][0]; + catbuf[ci] = c; } + const int* subset = &subsets[split.subsetOfs]; + unsigned u = c; + nidx = CV_DTREE_CAT_DIR(u, subset) < 0 ? node.left : node.right; } - c = ( (c == 65535) && data->is_buf_16u ) ? -1 : c; - dir = CV_DTREE_CAT_DIR(c, split->subset); } + } - if( split->inversed ) - dir = -dir; + if( predictType == PREDICT_SUM ) + sum += nodes[prev].value; + else + { + lastClassIdx = nodes[prev].classIdx; + votes[lastClassIdx]++; } + } - if( !dir ) + if( predictType == PREDICT_MAX_VOTE ) + { + int best_idx = lastClassIdx; + if( range.end - range.start > 1 ) { - double diff = node->right->sample_count - node->left->sample_count; - dir = diff < 0 ? -1 : 1; + best_idx = 0; + for( i = 1; i < nclasses; i++ ) + if( votes[best_idx] < votes[i] ) + best_idx = i; } - node = dir < 0 ? node->left : node->right; + sum = (flags & RAW_OUTPUT) ? (float)best_idx : classLabels[best_idx]; } - return node; + return (float)sum; } -CvDTreeNode* CvDTree::predict( const Mat& _sample, const Mat& _missing, bool preprocessed_input ) const +float DTreesImpl::predict( InputArray _samples, OutputArray _results, int flags ) const { - CvMat sample = _sample, mmask = _missing; - return predict(&sample, mmask.data.ptr ? &mmask : 0, preprocessed_input); -} + CV_Assert( !roots.empty() ); + Mat samples = _samples.getMat(), results; + int i, nsamples = samples.rows; + int rtype = CV_32F; + bool needresults = _results.needed(); + float retval = 0.f; + bool iscls = isClassifier(); + float scale = !iscls ? 1.f/(int)roots.size() : 1.f; + if( iscls && (flags & PREDICT_MASK) == PREDICT_MAX_VOTE ) + rtype = CV_32S; -const CvMat* CvDTree::get_var_importance() -{ - if( !var_importance ) + if( needresults ) { - CvDTreeNode* node = root; - double* importance; - if( !node ) - return 0; - var_importance = cvCreateMat( 1, data->var_count, CV_64F ); - cvZero( var_importance ); - importance = var_importance->data.db; + _results.create(nsamples, 1, rtype); + results = _results.getMat(); + } + else + nsamples = std::min(nsamples, 1); - for(;;) + for( i = 0; i < nsamples; i++ ) + { + float val = predictTrees( Range(0, (int)roots.size()), samples.row(i), flags )*scale; + if( needresults ) { - CvDTreeNode* parent; - for( ;; node = node->left ) - { - CvDTreeSplit* split = node->split; + if( rtype == CV_32F ) + results.at(i) = val; + else + results.at(i) = cvRound(val); + } + if( i == 0 ) + retval = val; + } + return retval; +} - if( !node->left || node->Tn <= pruned_tree_idx ) - break; +void DTreesImpl::writeTrainingParams(FileStorage& fs) const +{ + fs << "use_surrogates" << (params0.useSurrogates ? 1 : 0); + fs << "max_categories" << params0.maxCategories; + fs << "regression_accuracy" << params0.regressionAccuracy; - for( ; split != 0; split = split->next ) - importance[split->var_idx] += split->quality; - } + fs << "max_depth" << params0.maxDepth; + fs << "min_sample_count" << params0.minSampleCount; + fs << "cross_validation_folds" << params0.CVFolds; - for( parent = node->parent; parent && parent->right == node; - node = parent, parent = parent->parent ) - ; + if( params0.CVFolds > 1 ) + fs << "use_1se_rule" << (params0.use1SERule ? 1 : 0); - if( !parent ) - break; + if( !params0.priors.empty() ) + fs << "priors" << params0.priors; +} - node = parent->right; - } +void DTreesImpl::writeParams(FileStorage& fs) const +{ + fs << "is_classifier" << isClassifier(); + fs << "var_all" << (int)varType.size(); + fs << "var_count" << getVarCount(); - cvNormalize( var_importance, var_importance, 1., 0, CV_L1 ); - } + int ord_var_count = 0, cat_var_count = 0; + int i, n = (int)varType.size(); + for( i = 0; i < n; i++ ) + if( varType[i] == VAR_ORDERED ) + ord_var_count++; + else + cat_var_count++; + fs << "ord_var_count" << ord_var_count; + fs << "cat_var_count" << cat_var_count; - return var_importance; -} + fs << "training_params" << "{"; + writeTrainingParams(fs); + + fs << "}"; + if( !varIdx.empty() ) + fs << "var_idx" << varIdx; -void CvDTree::write_split( CvFileStorage* fs, CvDTreeSplit* split ) const + fs << "var_type" << varType; + + if( !catOfs.empty() ) + fs << "cat_ofs" << catOfs; + if( !catMap.empty() ) + fs << "cat_map" << catMap; + if( !classLabels.empty() ) + fs << "class_labels" << classLabels; + if( !missingSubst.empty() ) + fs << "missing_subst" << missingSubst; +} + +void DTreesImpl::writeSplit( FileStorage& fs, int splitidx ) const { - int ci; + const Split& split = splits[splitidx]; + + fs << "{:"; - cvStartWriteStruct( fs, 0, CV_NODE_MAP + CV_NODE_FLOW ); - cvWriteInt( fs, "var", split->var_idx ); - cvWriteReal( fs, "quality", split->quality ); + int vi = split.varIdx; + fs << "var" << vi; + fs << "quality" << split.quality; - ci = data->get_var_type(split->var_idx); - if( ci >= 0 ) // split on a categorical var + if( varType[vi] == VAR_CATEGORICAL ) // split on a categorical var { - int i, n = data->cat_count->data.i[ci], to_right = 0, default_dir; + int i, n = getCatCount(vi), to_right = 0; + const int* subset = &subsets[split.subsetOfs]; for( i = 0; i < n; i++ ) - to_right += CV_DTREE_CAT_DIR(i,split->subset) > 0; + to_right += CV_DTREE_CAT_DIR(i, subset) > 0; // ad-hoc rule when to use inverse categorical split notation // to achieve more compact and clear representation - default_dir = to_right <= 1 || to_right <= MIN(3, n/2) || to_right <= n/3 ? -1 : 1; + int default_dir = to_right <= 1 || to_right <= std::min(3, n/2) || to_right <= n/3 ? -1 : 1; - cvStartWriteStruct( fs, default_dir*(split->inversed ? -1 : 1) > 0 ? - "in" : "not_in", CV_NODE_SEQ+CV_NODE_FLOW ); + fs << (default_dir*(split.inversed ? -1 : 1) > 0 ? "in" : "not_in") << "[:"; for( i = 0; i < n; i++ ) { - int dir = CV_DTREE_CAT_DIR(i,split->subset); + int dir = CV_DTREE_CAT_DIR(i, subset); if( dir*default_dir < 0 ) - cvWriteInt( fs, 0, i ); + fs << i; } - cvEndWriteStruct( fs ); + + fs << "]"; } else - cvWriteReal( fs, !split->inversed ? "le" : "gt", split->ord.c ); + fs << (!split.inversed ? "le" : "gt") << split.c; - cvEndWriteStruct( fs ); + fs << "}"; } - -void CvDTree::write_node( CvFileStorage* fs, CvDTreeNode* node ) const +void DTreesImpl::writeNode( FileStorage& fs, int nidx, int depth ) const { - CvDTreeSplit* split; - - cvStartWriteStruct( fs, 0, CV_NODE_MAP ); - - cvWriteInt( fs, "depth", node->depth ); - cvWriteInt( fs, "sample_count", node->sample_count ); - cvWriteReal( fs, "value", node->value ); + const Node& node = nodes[nidx]; + fs << "{"; + fs << "depth" << depth; + fs << "value" << node.value; - if( data->is_classifier ) - cvWriteInt( fs, "norm_class_idx", node->class_idx ); + if( _isClassifier ) + fs << "norm_class_idx" << node.classIdx; - cvWriteInt( fs, "Tn", node->Tn ); - cvWriteInt( fs, "complexity", node->complexity ); - cvWriteReal( fs, "alpha", node->alpha ); - cvWriteReal( fs, "node_risk", node->node_risk ); - cvWriteReal( fs, "tree_risk", node->tree_risk ); - cvWriteReal( fs, "tree_error", node->tree_error ); - - if( node->left ) + if( node.split >= 0 ) { - cvStartWriteStruct( fs, "splits", CV_NODE_SEQ ); + fs << "splits" << "["; - for( split = node->split; split != 0; split = split->next ) - write_split( fs, split ); + for( int splitidx = node.split; splitidx >= 0; splitidx = splits[splitidx].next ) + writeSplit( fs, splitidx ); - cvEndWriteStruct( fs ); + fs << "]"; } - cvEndWriteStruct( fs ); + fs << "}"; } - -void CvDTree::write_tree_nodes( CvFileStorage* fs ) const +void DTreesImpl::writeTree( FileStorage& fs, int root ) const { - //CV_FUNCNAME( "CvDTree::write_tree_nodes" ); + fs << "nodes" << "["; - __BEGIN__; - - CvDTreeNode* node = root; + int nidx = root, pidx = 0, depth = 0; + const Node *node = 0; // traverse the tree and save all the nodes in depth-first order for(;;) { - CvDTreeNode* parent; for(;;) { - write_node( fs, node ); - if( !node->left ) + writeNode( fs, nidx, depth ); + node = &nodes[nidx]; + if( node->left < 0 ) break; - node = node->left; + nidx = node->left; + depth++; } - for( parent = node->parent; parent && parent->right == node; - node = parent, parent = parent->parent ) - ; + for( pidx = node->parent; pidx >= 0 && nodes[pidx].right == nidx; + nidx = pidx, pidx = nodes[pidx].parent ) + depth--; - if( !parent ) + if( pidx < 0 ) break; - node = parent->right; + nidx = nodes[pidx].right; } - __END__; + fs << "]"; } - -void CvDTree::write( CvFileStorage* fs, const char* name ) const +void DTreesImpl::write( FileStorage& fs ) const { - //CV_FUNCNAME( "CvDTree::write" ); - - __BEGIN__; - - cvStartWriteStruct( fs, name, CV_NODE_MAP, CV_TYPE_NAME_ML_TREE ); - - //get_var_importance(); - data->write_params( fs ); - //if( var_importance ) - //cvWrite( fs, "var_importance", var_importance ); - write( fs ); - - cvEndWriteStruct( fs ); - - __END__; + writeParams(fs); + writeTree(fs, roots[0]); } - -void CvDTree::write( CvFileStorage* fs ) const +void DTreesImpl::readParams( const FileNode& fn ) { - //CV_FUNCNAME( "CvDTree::write" ); + _isClassifier = (int)fn["is_classifier"] != 0; + /*int var_all = (int)fn["var_all"]; + int var_count = (int)fn["var_count"]; + int cat_var_count = (int)fn["cat_var_count"]; + int ord_var_count = (int)fn["ord_var_count"];*/ - __BEGIN__; + FileNode tparams_node = fn["training_params"]; - cvWriteInt( fs, "best_tree_idx", pruned_tree_idx ); + params0 = Params(); - cvStartWriteStruct( fs, "nodes", CV_NODE_SEQ ); - write_tree_nodes( fs ); - cvEndWriteStruct( fs ); + if( !tparams_node.empty() ) // training parameters are not necessary + { + params0.useSurrogates = (int)tparams_node["use_surrogates"] != 0; + params0.maxCategories = (int)tparams_node["max_categories"]; + params0.regressionAccuracy = (float)tparams_node["regression_accuracy"]; - __END__; -} + params0.maxDepth = (int)tparams_node["max_depth"]; + params0.minSampleCount = (int)tparams_node["min_sample_count"]; + params0.CVFolds = (int)tparams_node["cross_validation_folds"]; + if( params0.CVFolds > 1 ) + { + params.use1SERule = (int)tparams_node["use_1se_rule"] != 0; + } -CvDTreeSplit* CvDTree::read_split( CvFileStorage* fs, CvFileNode* fnode ) -{ - CvDTreeSplit* split = 0; + tparams_node["priors"] >> params0.priors; + } - CV_FUNCNAME( "CvDTree::read_split" ); + fn["var_idx"] >> varIdx; + fn["var_type"] >> varType; - __BEGIN__; + fn["cat_ofs"] >> catOfs; + fn["cat_map"] >> catMap; + fn["missing_subst"] >> missingSubst; + fn["class_labels"] >> classLabels; - int vi, ci; + initCompVarIdx(); + setDParams(params0); +} - if( !fnode || CV_NODE_TYPE(fnode->tag) != CV_NODE_MAP ) - CV_ERROR( CV_StsParseError, "some of the splits are not stored properly" ); +int DTreesImpl::readSplit( const FileNode& fn ) +{ + Split split; - vi = cvReadIntByName( fs, fnode, "var", -1 ); - if( (unsigned)vi >= (unsigned)data->var_count ) - CV_ERROR( CV_StsOutOfRange, "Split variable index is out of range" ); + int vi = (int)fn["var"]; + CV_Assert( 0 <= vi && vi <= (int)varType.size() ); + split.varIdx = vi; - ci = data->get_var_type(vi); - if( ci >= 0 ) // split on categorical var + if( varType[vi] == VAR_CATEGORICAL ) // split on categorical var { - int i, n = data->cat_count->data.i[ci], inversed = 0, val; - CvSeqReader reader; - CvFileNode* inseq; - split = data->new_split_cat( vi, 0 ); - inseq = cvGetFileNodeByName( fs, fnode, "in" ); - if( !inseq ) + int i, val, ssize = getSubsetSize(vi); + split.subsetOfs = (int)subsets.size(); + for( i = 0; i < ssize; i++ ) + subsets.push_back(0); + int* subset = &subsets[split.subsetOfs]; + FileNode fns = fn["in"]; + if( fns.empty() ) { - inseq = cvGetFileNodeByName( fs, fnode, "not_in" ); - inversed = 1; + fns = fn["not_in"]; + split.inversed = true; } - if( !inseq || - (CV_NODE_TYPE(inseq->tag) != CV_NODE_SEQ && CV_NODE_TYPE(inseq->tag) != CV_NODE_INT)) - CV_ERROR( CV_StsParseError, - "Either 'in' or 'not_in' tags should be inside a categorical split data" ); - if( CV_NODE_TYPE(inseq->tag) == CV_NODE_INT ) + if( fns.isInt() ) { - val = inseq->data.i; - if( (unsigned)val >= (unsigned)n ) - CV_ERROR( CV_StsOutOfRange, "some of in/not_in elements are out of range" ); - - split->subset[val >> 5] |= 1 << (val & 31); + val = (int)fns; + subset[val >> 5] |= 1 << (val & 31); } else { - cvStartReadSeq( inseq->data.seq, &reader ); - - for( i = 0; i < reader.seq->total; i++ ) + FileNodeIterator it = fns.begin(); + int n = (int)fns.size(); + for( i = 0; i < n; i++, ++it ) { - CvFileNode* inode = (CvFileNode*)reader.ptr; - val = inode->data.i; - if( CV_NODE_TYPE(inode->tag) != CV_NODE_INT || (unsigned)val >= (unsigned)n ) - CV_ERROR( CV_StsOutOfRange, "some of in/not_in elements are out of range" ); - - split->subset[val >> 5] |= 1 << (val & 31); - CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); + val = (int)*it; + subset[val >> 5] |= 1 << (val & 31); } } // for categorical splits we do not use inversed splits, // instead we inverse the variable set in the split - if( inversed ) - for( i = 0; i < (n + 31) >> 5; i++ ) - split->subset[i] ^= -1; + if( split.inversed ) + { + for( i = 0; i < ssize; i++ ) + subset[i] ^= -1; + split.inversed = false; + } } else { - CvFileNode* cmp_node; - split = data->new_split_ord( vi, 0, 0, 0, 0 ); - - cmp_node = cvGetFileNodeByName( fs, fnode, "le" ); - if( !cmp_node ) + FileNode cmpNode = fn["le"]; + if( cmpNode.empty() ) { - cmp_node = cvGetFileNodeByName( fs, fnode, "gt" ); - split->inversed = 1; + cmpNode = fn["gt"]; + split.inversed = true; } - - split->ord.c = (float)cvReadReal( cmp_node ); + split.c = (float)cmpNode; } + + split.quality = (float)fn["quality"]; + splits.push_back(split); - split->quality = (float)cvReadRealByName( fs, fnode, "quality" ); - - __END__; - - return split; + return (int)(splits.size() - 1); } - -CvDTreeNode* CvDTree::read_node( CvFileStorage* fs, CvFileNode* fnode, CvDTreeNode* parent ) +int DTreesImpl::readNode( const FileNode& fn ) { - CvDTreeNode* node = 0; - - CV_FUNCNAME( "CvDTree::read_node" ); - - __BEGIN__; - - CvFileNode* splits; - int i, depth; - - if( !fnode || CV_NODE_TYPE(fnode->tag) != CV_NODE_MAP ) - CV_ERROR( CV_StsParseError, "some of the tree elements are not stored properly" ); - - CV_CALL( node = data->new_node( parent, 0, 0, 0 )); - depth = cvReadIntByName( fs, fnode, "depth", -1 ); - if( depth != node->depth ) - CV_ERROR( CV_StsParseError, "incorrect node depth" ); - - node->sample_count = cvReadIntByName( fs, fnode, "sample_count" ); - node->value = cvReadRealByName( fs, fnode, "value" ); - if( data->is_classifier ) - node->class_idx = cvReadIntByName( fs, fnode, "norm_class_idx" ); + Node node; + node.value = (double)fn["value"]; - node->Tn = cvReadIntByName( fs, fnode, "Tn" ); - node->complexity = cvReadIntByName( fs, fnode, "complexity" ); - node->alpha = cvReadRealByName( fs, fnode, "alpha" ); - node->node_risk = cvReadRealByName( fs, fnode, "node_risk" ); - node->tree_risk = cvReadRealByName( fs, fnode, "tree_risk" ); - node->tree_error = cvReadRealByName( fs, fnode, "tree_error" ); + if( _isClassifier ) + node.classIdx = (int)fn["norm_class_idx"]; - splits = cvGetFileNodeByName( fs, fnode, "splits" ); - if( splits ) + FileNode sfn = fn["splits"]; + if( !sfn.empty() ) { - CvSeqReader reader; - CvDTreeSplit* last_split = 0; + int i, n = (int)sfn.size(), prevsplit = -1; + FileNodeIterator it = sfn.begin(); - if( CV_NODE_TYPE(splits->tag) != CV_NODE_SEQ ) - CV_ERROR( CV_StsParseError, "splits tag must stored as a sequence" ); - - cvStartReadSeq( splits->data.seq, &reader ); - for( i = 0; i < reader.seq->total; i++ ) + for( i = 0; i < n; i++, ++it ) { - CvDTreeSplit* split; - CV_CALL( split = read_split( fs, (CvFileNode*)reader.ptr )); - if( !last_split ) - node->split = last_split = split; + int splitidx = readSplit(*it); + if( splitidx < 0 ) + break; + if( prevsplit < 0 ) + node.split = splitidx; else - last_split = last_split->next = split; - - CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); + splits[prevsplit].next = splitidx; + prevsplit = splitidx; } } - - __END__; - - return node; + nodes.push_back(node); + return (int)(nodes.size() - 1); } - -void CvDTree::read_tree_nodes( CvFileStorage* fs, CvFileNode* fnode ) +int DTreesImpl::readTree( const FileNode& fn ) { - CV_FUNCNAME( "CvDTree::read_tree_nodes" ); - - __BEGIN__; - - CvSeqReader reader; - CvDTreeNode _root; - CvDTreeNode* parent = &_root; - int i; - parent->left = parent->right = parent->parent = 0; + int i, n = (int)fn.size(), root = -1, pidx = -1; + FileNodeIterator it = fn.begin(); - cvStartReadSeq( fnode->data.seq, &reader ); - - for( i = 0; i < reader.seq->total; i++ ) + for( i = 0; i < n; i++, ++it ) { - CvDTreeNode* node; - - CV_CALL( node = read_node( fs, (CvFileNode*)reader.ptr, parent != &_root ? parent : 0 )); - if( !parent->left ) - parent->left = node; + int nidx = readNode(*it); + if( nidx < 0 ) + break; + Node& node = nodes[nidx]; + node.parent = pidx; + if( pidx < 0 ) + root = nidx; else - parent->right = node; - if( node->split ) - parent = node; + { + Node& parent = nodes[pidx]; + if( parent.left < 0 ) + parent.left = nidx; + else + parent.right = nidx; + } + if( node.split >= 0 ) + pidx = nidx; else { - while( parent && parent->right ) - parent = parent->parent; + while( pidx >= 0 && nodes[pidx].right >= 0 ) + pidx = nodes[pidx].parent; } - - CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); } - - root = _root.left; - - __END__; -} - - -void CvDTree::read( CvFileStorage* fs, CvFileNode* fnode ) -{ - CvDTreeTrainData* _data = new CvDTreeTrainData(); - _data->read_params( fs, fnode ); - - read( fs, fnode, _data ); - get_var_importance(); + roots.push_back(root); + return root; } - -// a special entry point for reading weak decision trees from the tree ensembles -void CvDTree::read( CvFileStorage* fs, CvFileNode* node, CvDTreeTrainData* _data ) +void DTreesImpl::read( const FileNode& fn ) { - CV_FUNCNAME( "CvDTree::read" ); - - __BEGIN__; - - CvFileNode* tree_nodes; - clear(); - data = _data; + readParams(fn); - tree_nodes = cvGetFileNodeByName( fs, node, "nodes" ); - if( !tree_nodes || CV_NODE_TYPE(tree_nodes->tag) != CV_NODE_SEQ ) - CV_ERROR( CV_StsParseError, "nodes tag is missing" ); - - pruned_tree_idx = cvReadIntByName( fs, node, "best_tree_idx", -1 ); - read_tree_nodes( fs, tree_nodes ); - - __END__; + FileNode fnodes = fn["nodes"]; + CV_Assert( !fnodes.empty() ); + readTree(fnodes); } -Mat CvDTree::getVarImportance() +Ptr DTrees::create(const DTrees::Params& params) { - return cvarrToMat(get_var_importance()); + Ptr p = makePtr(); + p->setDParams(params); + return p; +} + +} } /* End of file. */ diff --git a/modules/ml/test/test_emknearestkmeans.cpp b/modules/ml/test/test_emknearestkmeans.cpp index a14b636061..5e65fdbea1 100644 --- a/modules/ml/test/test_emknearestkmeans.cpp +++ b/modules/ml/test/test_emknearestkmeans.cpp @@ -43,6 +43,9 @@ using namespace std; using namespace cv; +using cv::ml::TrainData; +using cv::ml::EM; +using cv::ml::KNearest; static void defaultDistribs( Mat& means, vector& covs, int type=CV_32FC1 ) @@ -309,9 +312,9 @@ void CV_KNearestTest::run( int /*start_from*/ ) generateData( testData, testLabels, sizes, means, covs, CV_32FC1, CV_32FC1 ); int code = cvtest::TS::OK; - KNearest knearest; - knearest.train( trainData, trainLabels ); - knearest.find_nearest( testData, 4, &bestLabels ); + Ptr knearest = KNearest::create(true); + knearest->train(TrainData::create(trainData, cv::ml::ROW_SAMPLE, trainLabels), 0);; + knearest->findNearest( testData, 4, bestLabels); float err; if( !calcErr( bestLabels, testLabels, sizes, err, true ) ) { @@ -373,13 +376,16 @@ int CV_EMTest::runCase( int caseIndex, const EM_Params& params, cv::Mat labels; float err; - cv::EM em(params.nclusters, params.covMatType, params.termCrit); + Ptr em; + EM::Params emp(params.nclusters, params.covMatType, params.termCrit); if( params.startStep == EM::START_AUTO_STEP ) - em.train( trainData, noArray(), labels ); + em = EM::train( trainData, noArray(), labels, noArray(), emp ); else if( params.startStep == EM::START_E_STEP ) - em.trainE( trainData, *params.means, *params.covs, *params.weights, noArray(), labels ); + em = EM::train_startWithE( trainData, *params.means, *params.covs, + *params.weights, noArray(), labels, noArray(), emp ); else if( params.startStep == EM::START_M_STEP ) - em.trainM( trainData, *params.probs, noArray(), labels ); + em = EM::train_startWithM( trainData, *params.probs, + noArray(), labels, noArray(), emp ); // check train error if( !calcErr( labels, trainLabels, sizes, err , false, false ) ) @@ -399,7 +405,7 @@ int CV_EMTest::runCase( int caseIndex, const EM_Params& params, { Mat sample = testData.row(i); Mat probs; - labels.at(i) = static_cast(em.predict( sample, probs )[1]); + labels.at(i) = static_cast(em->predict2( sample, probs )[1]); } if( !calcErr( labels, testLabels, sizes, err, false, false ) ) { @@ -446,56 +452,56 @@ void CV_EMTest::run( int /*start_from*/ ) int code = cvtest::TS::OK; int caseIndex = 0; { - params.startStep = cv::EM::START_AUTO_STEP; - params.covMatType = cv::EM::COV_MAT_GENERIC; + params.startStep = EM::START_AUTO_STEP; + params.covMatType = EM::COV_MAT_GENERIC; int currCode = runCase(caseIndex++, params, trainData, trainLabels, testData, testLabels, sizes); code = currCode == cvtest::TS::OK ? code : currCode; } { - params.startStep = cv::EM::START_AUTO_STEP; - params.covMatType = cv::EM::COV_MAT_DIAGONAL; + params.startStep = EM::START_AUTO_STEP; + params.covMatType = EM::COV_MAT_DIAGONAL; int currCode = runCase(caseIndex++, params, trainData, trainLabels, testData, testLabels, sizes); code = currCode == cvtest::TS::OK ? code : currCode; } { - params.startStep = cv::EM::START_AUTO_STEP; - params.covMatType = cv::EM::COV_MAT_SPHERICAL; + params.startStep = EM::START_AUTO_STEP; + params.covMatType = EM::COV_MAT_SPHERICAL; int currCode = runCase(caseIndex++, params, trainData, trainLabels, testData, testLabels, sizes); code = currCode == cvtest::TS::OK ? code : currCode; } { - params.startStep = cv::EM::START_M_STEP; - params.covMatType = cv::EM::COV_MAT_GENERIC; + params.startStep = EM::START_M_STEP; + params.covMatType = EM::COV_MAT_GENERIC; int currCode = runCase(caseIndex++, params, trainData, trainLabels, testData, testLabels, sizes); code = currCode == cvtest::TS::OK ? code : currCode; } { - params.startStep = cv::EM::START_M_STEP; - params.covMatType = cv::EM::COV_MAT_DIAGONAL; + params.startStep = EM::START_M_STEP; + params.covMatType = EM::COV_MAT_DIAGONAL; int currCode = runCase(caseIndex++, params, trainData, trainLabels, testData, testLabels, sizes); code = currCode == cvtest::TS::OK ? code : currCode; } { - params.startStep = cv::EM::START_M_STEP; - params.covMatType = cv::EM::COV_MAT_SPHERICAL; + params.startStep = EM::START_M_STEP; + params.covMatType = EM::COV_MAT_SPHERICAL; int currCode = runCase(caseIndex++, params, trainData, trainLabels, testData, testLabels, sizes); code = currCode == cvtest::TS::OK ? code : currCode; } { - params.startStep = cv::EM::START_E_STEP; - params.covMatType = cv::EM::COV_MAT_GENERIC; + params.startStep = EM::START_E_STEP; + params.covMatType = EM::COV_MAT_GENERIC; int currCode = runCase(caseIndex++, params, trainData, trainLabels, testData, testLabels, sizes); code = currCode == cvtest::TS::OK ? code : currCode; } { - params.startStep = cv::EM::START_E_STEP; - params.covMatType = cv::EM::COV_MAT_DIAGONAL; + params.startStep = EM::START_E_STEP; + params.covMatType = EM::COV_MAT_DIAGONAL; int currCode = runCase(caseIndex++, params, trainData, trainLabels, testData, testLabels, sizes); code = currCode == cvtest::TS::OK ? code : currCode; } { - params.startStep = cv::EM::START_E_STEP; - params.covMatType = cv::EM::COV_MAT_SPHERICAL; + params.startStep = EM::START_E_STEP; + params.covMatType = EM::COV_MAT_SPHERICAL; int currCode = runCase(caseIndex++, params, trainData, trainLabels, testData, testLabels, sizes); code = currCode == cvtest::TS::OK ? code : currCode; } @@ -511,7 +517,6 @@ protected: { int code = cvtest::TS::OK; const int nclusters = 2; - cv::EM em(nclusters); Mat samples = Mat(3,1,CV_64FC1); samples.at(0,0) = 1; @@ -520,11 +525,11 @@ protected: Mat labels; - em.train(samples, labels); + Ptr em = EM::train(samples, noArray(), labels, noArray(), EM::Params(nclusters)); Mat firstResult(samples.rows, 1, CV_32SC1); for( int i = 0; i < samples.rows; i++) - firstResult.at(i) = static_cast(em.predict(samples.row(i))[1]); + firstResult.at(i) = static_cast(em->predict2(samples.row(i), noArray())[1]); // Write out string filename = cv::tempfile(".xml"); @@ -533,7 +538,7 @@ protected: try { fs << "em" << "{"; - em.write(fs); + em->write(fs); fs << "}"; } catch(...) @@ -543,29 +548,24 @@ protected: } } - em.clear(); + em.release(); // Read in + try { - FileStorage fs = FileStorage(filename, FileStorage::READ); - CV_Assert(fs.isOpened()); - FileNode fn = fs["em"]; - try - { - em.read(fn); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "Crash in read method.\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_EXCEPTION ); - } + em = StatModel::load(filename); + } + catch(...) + { + ts->printf( cvtest::TS::LOG, "Crash in read method.\n" ); + ts->set_failed_test_info( cvtest::TS::FAIL_EXCEPTION ); } remove( filename.c_str() ); int errCaseCount = 0; for( int i = 0; i < samples.rows; i++) - errCaseCount = std::abs(em.predict(samples.row(i))[1] - firstResult.at(i)) < FLT_EPSILON ? 0 : 1; + errCaseCount = std::abs(em->predict2(samples.row(i), noArray())[1] - firstResult.at(i)) < FLT_EPSILON ? 0 : 1; if( errCaseCount > 0 ) { @@ -588,21 +588,18 @@ protected: // 1. estimates distributions of "spam" / "not spam" // 2. predict classID using Bayes classifier for estimated distributions. - CvMLData data; string dataFilename = string(ts->get_data_path()) + "spambase.data"; + Ptr data = TrainData::loadFromCSV(dataFilename, 0); - if(data.read_csv(dataFilename.c_str()) != 0) + if( data.empty() ) { ts->printf(cvtest::TS::LOG, "File with spambase dataset cann't be read.\n"); ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_TEST_DATA); } - Mat values = cv::cvarrToMat(data.get_values()); - CV_Assert(values.cols == 58); - int responseIndex = 57; - - Mat samples = values.colRange(0, responseIndex); - Mat responses = values.col(responseIndex); + Mat samples = data->getSamples(); + CV_Assert(samples.cols == 57); + Mat responses = data->getResponses(); vector trainSamplesMask(samples.rows, 0); int trainSamplesCount = (int)(0.5f * samples.rows); @@ -616,7 +613,6 @@ protected: std::swap(trainSamplesMask[i1], trainSamplesMask[i2]); } - EM model0(3), model1(3); Mat samples0, samples1; for(int i = 0; i < samples.rows; i++) { @@ -630,8 +626,8 @@ protected: samples1.push_back(sample); } } - model0.train(samples0); - model1.train(samples1); + Ptr model0 = EM::train(samples0, noArray(), noArray(), noArray(), EM::Params(3)); + Ptr model1 = EM::train(samples1, noArray(), noArray(), noArray(), EM::Params(3)); Mat trainConfusionMat(2, 2, CV_32SC1, Scalar(0)), testConfusionMat(2, 2, CV_32SC1, Scalar(0)); @@ -639,8 +635,8 @@ protected: for(int i = 0; i < samples.rows; i++) { Mat sample = samples.row(i); - double sampleLogLikelihoods0 = model0.predict(sample)[0]; - double sampleLogLikelihoods1 = model1.predict(sample)[0]; + double sampleLogLikelihoods0 = model0->predict2(sample, noArray())[0]; + double sampleLogLikelihoods1 = model1->predict2(sample, noArray())[0]; int classID = sampleLogLikelihoods0 >= lambda * sampleLogLikelihoods1 ? 0 : 1; diff --git a/modules/ml/test/test_gbttest.cpp b/modules/ml/test/test_gbttest.cpp index 1e6d0fb20e..df19489f60 100644 --- a/modules/ml/test/test_gbttest.cpp +++ b/modules/ml/test/test_gbttest.cpp @@ -1,6 +1,8 @@ #include "test_precomp.hpp" +#if 0 + #include #include #include @@ -284,3 +286,5 @@ void CV_GBTreesTest::run(int) ///////////////////////////////////////////////////////////////////////////// TEST(ML_GBTrees, regression) { CV_GBTreesTest test; test.safe_run(); } + +#endif diff --git a/modules/ml/test/test_mltests.cpp b/modules/ml/test/test_mltests.cpp index e04ca98fe2..2ffa531ece 100644 --- a/modules/ml/test/test_mltests.cpp +++ b/modules/ml/test/test_mltests.cpp @@ -65,7 +65,7 @@ int CV_AMLTest::run_test_case( int testCaseIdx ) for (int k = 0; k < icount; k++) { #endif - data.mix_train_and_test_idx(); + data->shuffleTrainTest(); code = train( testCaseIdx ); #ifdef GET_STAT float case_result = get_error(); @@ -101,9 +101,10 @@ int CV_AMLTest::validate_test_results( int testCaseIdx ) { resultNode["mean"] >> mean; resultNode["sigma"] >> sigma; - float curErr = get_error( testCaseIdx, CV_TEST_ERROR ); + model->save(format("/Users/vp/tmp/dtree/testcase_%02d.cur.yml", testCaseIdx)); + float curErr = get_test_error( testCaseIdx ); const int coeff = 4; - ts->printf( cvtest::TS::LOG, "Test case = %d; test error = %f; mean error = %f (diff=%f), %d*sigma = %f", + ts->printf( cvtest::TS::LOG, "Test case = %d; test error = %f; mean error = %f (diff=%f), %d*sigma = %f\n", testCaseIdx, curErr, mean, abs( curErr - mean), coeff, coeff*sigma ); if ( abs( curErr - mean) > coeff*sigma ) { @@ -125,6 +126,6 @@ int CV_AMLTest::validate_test_results( int testCaseIdx ) TEST(ML_DTree, regression) { CV_AMLTest test( CV_DTREE ); test.safe_run(); } TEST(ML_Boost, regression) { CV_AMLTest test( CV_BOOST ); test.safe_run(); } TEST(ML_RTrees, regression) { CV_AMLTest test( CV_RTREES ); test.safe_run(); } -TEST(ML_ERTrees, regression) { CV_AMLTest test( CV_ERTREES ); test.safe_run(); } +TEST(DISABLED_ML_ERTrees, regression) { CV_AMLTest test( CV_ERTREES ); test.safe_run(); } /* End of file. */ diff --git a/modules/ml/test/test_mltests2.cpp b/modules/ml/test/test_mltests2.cpp index 560c449321..7a116f518f 100644 --- a/modules/ml/test/test_mltests2.cpp +++ b/modules/ml/test/test_mltests2.cpp @@ -44,257 +44,49 @@ using namespace cv; using namespace std; -// auxiliary functions -// 1. nbayes -void nbayes_check_data( CvMLData* _data ) -{ - if( _data->get_missing() ) - CV_Error( CV_StsBadArg, "missing values are not supported" ); - const CvMat* var_types = _data->get_var_types(); - bool is_classifier = var_types->data.ptr[var_types->cols-1] == CV_VAR_CATEGORICAL; - - Mat _var_types = cvarrToMat(var_types); - if( ( fabs( cvtest::norm( _var_types, Mat::zeros(_var_types.dims, _var_types.size, _var_types.type()), CV_L1 ) - - (var_types->rows + var_types->cols - 2)*CV_VAR_ORDERED - CV_VAR_CATEGORICAL ) > FLT_EPSILON ) || - !is_classifier ) - CV_Error( CV_StsBadArg, "incorrect types of predictors or responses" ); -} -bool nbayes_train( CvNormalBayesClassifier* nbayes, CvMLData* _data ) -{ - nbayes_check_data( _data ); - const CvMat* values = _data->get_values(); - const CvMat* responses = _data->get_responses(); - const CvMat* train_sidx = _data->get_train_sample_idx(); - const CvMat* var_idx = _data->get_var_idx(); - return nbayes->train( values, responses, var_idx, train_sidx ); -} -float nbayes_calc_error( CvNormalBayesClassifier* nbayes, CvMLData* _data, int type, vector *resp ) -{ - float err = 0; - nbayes_check_data( _data ); - const CvMat* values = _data->get_values(); - const CvMat* response = _data->get_responses(); - const CvMat* sample_idx = (type == CV_TEST_ERROR) ? _data->get_test_sample_idx() : _data->get_train_sample_idx(); - int* sidx = sample_idx ? sample_idx->data.i : 0; - int r_step = CV_IS_MAT_CONT(response->type) ? - 1 : response->step / CV_ELEM_SIZE(response->type); - int sample_count = sample_idx ? sample_idx->cols : 0; - sample_count = (type == CV_TRAIN_ERROR && sample_count == 0) ? values->rows : sample_count; - float* pred_resp = 0; - if( resp && (sample_count > 0) ) - { - resp->resize( sample_count ); - pred_resp = &((*resp)[0]); - } - - for( int i = 0; i < sample_count; i++ ) - { - CvMat sample; - int si = sidx ? sidx[i] : i; - cvGetRow( values, &sample, si ); - float r = (float)nbayes->predict( &sample, 0 ); - if( pred_resp ) - pred_resp[i] = r; - int d = fabs((double)r - response->data.fl[si*r_step]) <= FLT_EPSILON ? 0 : 1; - err += d; - } - err = sample_count ? err / (float)sample_count * 100 : -FLT_MAX; - return err; -} - -// 2. knearest -void knearest_check_data_and_get_predictors( CvMLData* _data, CvMat* _predictors ) -{ - const CvMat* values = _data->get_values(); - const CvMat* var_idx = _data->get_var_idx(); - if( var_idx->cols + var_idx->rows != values->cols ) - CV_Error( CV_StsBadArg, "var_idx is not supported" ); - if( _data->get_missing() ) - CV_Error( CV_StsBadArg, "missing values are not supported" ); - int resp_idx = _data->get_response_idx(); - if( resp_idx == 0) - cvGetCols( values, _predictors, 1, values->cols ); - else if( resp_idx == values->cols - 1 ) - cvGetCols( values, _predictors, 0, values->cols - 1 ); - else - CV_Error( CV_StsBadArg, "responses must be in the first or last column; other cases are not supported" ); -} -bool knearest_train( CvKNearest* knearest, CvMLData* _data ) -{ - const CvMat* responses = _data->get_responses(); - const CvMat* train_sidx = _data->get_train_sample_idx(); - bool is_regression = _data->get_var_type( _data->get_response_idx() ) == CV_VAR_ORDERED; - CvMat predictors; - knearest_check_data_and_get_predictors( _data, &predictors ); - return knearest->train( &predictors, responses, train_sidx, is_regression ); -} -float knearest_calc_error( CvKNearest* knearest, CvMLData* _data, int k, int type, vector *resp ) -{ - float err = 0; - const CvMat* response = _data->get_responses(); - const CvMat* sample_idx = (type == CV_TEST_ERROR) ? _data->get_test_sample_idx() : _data->get_train_sample_idx(); - int* sidx = sample_idx ? sample_idx->data.i : 0; - int r_step = CV_IS_MAT_CONT(response->type) ? - 1 : response->step / CV_ELEM_SIZE(response->type); - bool is_regression = _data->get_var_type( _data->get_response_idx() ) == CV_VAR_ORDERED; - CvMat predictors; - knearest_check_data_and_get_predictors( _data, &predictors ); - int sample_count = sample_idx ? sample_idx->cols : 0; - sample_count = (type == CV_TRAIN_ERROR && sample_count == 0) ? predictors.rows : sample_count; - float* pred_resp = 0; - if( resp && (sample_count > 0) ) - { - resp->resize( sample_count ); - pred_resp = &((*resp)[0]); - } - if ( !is_regression ) - { - for( int i = 0; i < sample_count; i++ ) - { - CvMat sample; - int si = sidx ? sidx[i] : i; - cvGetRow( &predictors, &sample, si ); - float r = knearest->find_nearest( &sample, k ); - if( pred_resp ) - pred_resp[i] = r; - int d = fabs((double)r - response->data.fl[si*r_step]) <= FLT_EPSILON ? 0 : 1; - err += d; - } - err = sample_count ? err / (float)sample_count * 100 : -FLT_MAX; - } - else - { - for( int i = 0; i < sample_count; i++ ) - { - CvMat sample; - int si = sidx ? sidx[i] : i; - cvGetRow( &predictors, &sample, si ); - float r = knearest->find_nearest( &sample, k ); - if( pred_resp ) - pred_resp[i] = r; - float d = r - response->data.fl[si*r_step]; - err += d*d; - } - err = sample_count ? err / (float)sample_count : -FLT_MAX; - } - return err; -} - -// 3. svm int str_to_svm_type(String& str) { if( !str.compare("C_SVC") ) - return CvSVM::C_SVC; + return SVM::C_SVC; if( !str.compare("NU_SVC") ) - return CvSVM::NU_SVC; + return SVM::NU_SVC; if( !str.compare("ONE_CLASS") ) - return CvSVM::ONE_CLASS; + return SVM::ONE_CLASS; if( !str.compare("EPS_SVR") ) - return CvSVM::EPS_SVR; + return SVM::EPS_SVR; if( !str.compare("NU_SVR") ) - return CvSVM::NU_SVR; + return SVM::NU_SVR; CV_Error( CV_StsBadArg, "incorrect svm type string" ); return -1; } int str_to_svm_kernel_type( String& str ) { if( !str.compare("LINEAR") ) - return CvSVM::LINEAR; + return SVM::LINEAR; if( !str.compare("POLY") ) - return CvSVM::POLY; + return SVM::POLY; if( !str.compare("RBF") ) - return CvSVM::RBF; + return SVM::RBF; if( !str.compare("SIGMOID") ) - return CvSVM::SIGMOID; + return SVM::SIGMOID; CV_Error( CV_StsBadArg, "incorrect svm type string" ); return -1; } -void svm_check_data( CvMLData* _data ) -{ - if( _data->get_missing() ) - CV_Error( CV_StsBadArg, "missing values are not supported" ); - const CvMat* var_types = _data->get_var_types(); - for( int i = 0; i < var_types->cols-1; i++ ) - if (var_types->data.ptr[i] == CV_VAR_CATEGORICAL) - { - char msg[50]; - sprintf( msg, "incorrect type of %d-predictor", i ); - CV_Error( CV_StsBadArg, msg ); - } -} -bool svm_train( CvSVM* svm, CvMLData* _data, CvSVMParams _params ) -{ - svm_check_data(_data); - const CvMat* _train_data = _data->get_values(); - const CvMat* _responses = _data->get_responses(); - const CvMat* _var_idx = _data->get_var_idx(); - const CvMat* _sample_idx = _data->get_train_sample_idx(); - return svm->train( _train_data, _responses, _var_idx, _sample_idx, _params ); -} -bool svm_train_auto( CvSVM* svm, CvMLData* _data, CvSVMParams _params, - int k_fold, CvParamGrid C_grid, CvParamGrid gamma_grid, - CvParamGrid p_grid, CvParamGrid nu_grid, CvParamGrid coef_grid, - CvParamGrid degree_grid ) -{ - svm_check_data(_data); - const CvMat* _train_data = _data->get_values(); - const CvMat* _responses = _data->get_responses(); - const CvMat* _var_idx = _data->get_var_idx(); - const CvMat* _sample_idx = _data->get_train_sample_idx(); - return svm->train_auto( _train_data, _responses, _var_idx, - _sample_idx, _params, k_fold, C_grid, gamma_grid, p_grid, nu_grid, coef_grid, degree_grid ); -} -float svm_calc_error( CvSVM* svm, CvMLData* _data, int type, vector *resp ) + +Ptr svm_train_auto( Ptr _data, SVM::Params _params, + int k_fold, ParamGrid C_grid, ParamGrid gamma_grid, + ParamGrid p_grid, ParamGrid nu_grid, ParamGrid coef_grid, + ParamGrid degree_grid ) { - svm_check_data(_data); - float err = 0; - const CvMat* values = _data->get_values(); - const CvMat* response = _data->get_responses(); - const CvMat* sample_idx = (type == CV_TEST_ERROR) ? _data->get_test_sample_idx() : _data->get_train_sample_idx(); - const CvMat* var_types = _data->get_var_types(); - int* sidx = sample_idx ? sample_idx->data.i : 0; - int r_step = CV_IS_MAT_CONT(response->type) ? - 1 : response->step / CV_ELEM_SIZE(response->type); - bool is_classifier = var_types->data.ptr[var_types->cols-1] == CV_VAR_CATEGORICAL; - int sample_count = sample_idx ? sample_idx->cols : 0; - sample_count = (type == CV_TRAIN_ERROR && sample_count == 0) ? values->rows : sample_count; - float* pred_resp = 0; - if( resp && (sample_count > 0) ) - { - resp->resize( sample_count ); - pred_resp = &((*resp)[0]); - } - if ( is_classifier ) - { - for( int i = 0; i < sample_count; i++ ) - { - CvMat sample; - int si = sidx ? sidx[i] : i; - cvGetRow( values, &sample, si ); - float r = svm->predict( &sample ); - if( pred_resp ) - pred_resp[i] = r; - int d = fabs((double)r - response->data.fl[si*r_step]) <= FLT_EPSILON ? 0 : 1; - err += d; - } - err = sample_count ? err / (float)sample_count * 100 : -FLT_MAX; - } - else - { - for( int i = 0; i < sample_count; i++ ) - { - CvMat sample; - int si = sidx ? sidx[i] : i; - cvGetRow( values, &sample, si ); - float r = svm->predict( &sample ); - if( pred_resp ) - pred_resp[i] = r; - float d = r - response->data.fl[si*r_step]; - err += d*d; - } - err = sample_count ? err / (float)sample_count : -FLT_MAX; - } - return err; + Mat _train_data = _data->getSamples(); + Mat _responses = _data->getResponses(); + Mat _var_idx = _data->getVarIdx(); + Mat _sample_idx = _data->getTrainSampleIdx(); + + Ptr svm = SVM::create(_params); + if( svm->trainAuto( _data, k_fold, C_grid, gamma_grid, p_grid, nu_grid, coef_grid, degree_grid ) ) + return svm; + return Ptr(); } // 4. em @@ -302,79 +94,66 @@ float svm_calc_error( CvSVM* svm, CvMLData* _data, int type, vector *resp int str_to_ann_train_method( String& str ) { if( !str.compare("BACKPROP") ) - return CvANN_MLP_TrainParams::BACKPROP; + return ANN_MLP::Params::BACKPROP; if( !str.compare("RPROP") ) - return CvANN_MLP_TrainParams::RPROP; + return ANN_MLP::Params::RPROP; CV_Error( CV_StsBadArg, "incorrect ann train method string" ); return -1; } -void ann_check_data_and_get_predictors( CvMLData* _data, CvMat* _inputs ) + +void ann_check_data( Ptr _data ) { - const CvMat* values = _data->get_values(); - const CvMat* var_idx = _data->get_var_idx(); - if( var_idx->cols + var_idx->rows != values->cols ) + Mat values = _data->getSamples(); + Mat var_idx = _data->getVarIdx(); + int nvars = (int)var_idx.total(); + if( nvars != 0 && nvars != values.cols ) CV_Error( CV_StsBadArg, "var_idx is not supported" ); - if( _data->get_missing() ) + if( !_data->getMissing().empty() ) CV_Error( CV_StsBadArg, "missing values are not supported" ); - int resp_idx = _data->get_response_idx(); - if( resp_idx == 0) - cvGetCols( values, _inputs, 1, values->cols ); - else if( resp_idx == values->cols - 1 ) - cvGetCols( values, _inputs, 0, values->cols - 1 ); - else - CV_Error( CV_StsBadArg, "outputs must be in the first or last column; other cases are not supported" ); } -void ann_get_new_responses( CvMLData* _data, Mat& new_responses, map& cls_map ) + +// unroll the categorical responses to binary vectors +Mat ann_get_new_responses( Ptr _data, map& cls_map ) { - const CvMat* train_sidx = _data->get_train_sample_idx(); - int* train_sidx_ptr = train_sidx->data.i; - const CvMat* responses = _data->get_responses(); - float* responses_ptr = responses->data.fl; - int r_step = CV_IS_MAT_CONT(responses->type) ? - 1 : responses->step / CV_ELEM_SIZE(responses->type); + Mat train_sidx = _data->getTrainSampleIdx(); + int* train_sidx_ptr = train_sidx.ptr(); + Mat responses = _data->getResponses(); int cls_count = 0; // construct cls_map cls_map.clear(); - for( int si = 0; si < train_sidx->cols; si++ ) + int nresponses = (int)responses.total(); + int si, n = !train_sidx.empty() ? (int)train_sidx.total() : nresponses; + + for( si = 0; si < n; si++ ) { - int sidx = train_sidx_ptr[si]; - int r = cvRound(responses_ptr[sidx*r_step]); - CV_DbgAssert( fabs(responses_ptr[sidx*r_step]-r) < FLT_EPSILON ); - int cls_map_size = (int)cls_map.size(); - cls_map[r]; - if ( (int)cls_map.size() > cls_map_size ) + int sidx = train_sidx_ptr ? train_sidx_ptr[si] : si; + int r = cvRound(responses.at(sidx)); + CV_DbgAssert( fabs(responses.at(sidx) - r) < FLT_EPSILON ); + map::iterator it = cls_map.find(r); + if( it == cls_map.end() ) cls_map[r] = cls_count++; } - new_responses.create( responses->rows, cls_count, CV_32F ); - new_responses.setTo( 0 ); - for( int si = 0; si < train_sidx->cols; si++ ) + Mat new_responses = Mat::zeros( nresponses, cls_count, CV_32F ); + for( si = 0; si < n; si++ ) { - int sidx = train_sidx_ptr[si]; - int r = cvRound(responses_ptr[sidx*r_step]); + int sidx = train_sidx_ptr ? train_sidx_ptr[si] : si; + int r = cvRound(responses.at(sidx)); int cidx = cls_map[r]; - new_responses.ptr(sidx)[cidx] = 1; + new_responses.at(sidx, cidx) = 1.f; } + return new_responses; } -int ann_train( CvANN_MLP* ann, CvMLData* _data, Mat& new_responses, CvANN_MLP_TrainParams _params, int flags = 0 ) -{ - const CvMat* train_sidx = _data->get_train_sample_idx(); - CvMat predictors; - ann_check_data_and_get_predictors( _data, &predictors ); - CvMat _new_responses = CvMat( new_responses ); - return ann->train( &predictors, &_new_responses, 0, train_sidx, _params, flags ); -} -float ann_calc_error( CvANN_MLP* ann, CvMLData* _data, map& cls_map, int type , vector *resp_labels ) + +float ann_calc_error( Ptr ann, Ptr _data, map& cls_map, int type, vector *resp_labels ) { float err = 0; - const CvMat* responses = _data->get_responses(); - const CvMat* sample_idx = (type == CV_TEST_ERROR) ? _data->get_test_sample_idx() : _data->get_train_sample_idx(); - int* sidx = sample_idx ? sample_idx->data.i : 0; - int r_step = CV_IS_MAT_CONT(responses->type) ? - 1 : responses->step / CV_ELEM_SIZE(responses->type); - CvMat predictors; - ann_check_data_and_get_predictors( _data, &predictors ); - int sample_count = sample_idx ? sample_idx->cols : 0; - sample_count = (type == CV_TRAIN_ERROR && sample_count == 0) ? predictors.rows : sample_count; + Mat samples = _data->getSamples(); + Mat responses = _data->getResponses(); + Mat sample_idx = (type == CV_TEST_ERROR) ? _data->getTestSampleIdx() : _data->getTrainSampleIdx(); + int* sidx = !sample_idx.empty() ? sample_idx.ptr() : 0; + ann_check_data( _data ); + int sample_count = (int)sample_idx.total(); + sample_count = (type == CV_TRAIN_ERROR && sample_count == 0) ? samples.rows : sample_count; float* pred_resp = 0; vector innresp; if( sample_count > 0 ) @@ -392,17 +171,16 @@ float ann_calc_error( CvANN_MLP* ann, CvMLData* _data, map& cls_map, i } int cls_count = (int)cls_map.size(); Mat output( 1, cls_count, CV_32FC1 ); - CvMat _output = CvMat(output); + for( int i = 0; i < sample_count; i++ ) { - CvMat sample; int si = sidx ? sidx[i] : i; - cvGetRow( &predictors, &sample, si ); - ann->predict( &sample, &_output ); - CvPoint best_cls; - cvMinMaxLoc( &_output, 0, 0, 0, &best_cls, 0 ); - int r = cvRound(responses->data.fl[si*r_step]); - CV_DbgAssert( fabs(responses->data.fl[si*r_step]-r) < FLT_EPSILON ); + Mat sample = samples.row(si); + ann->predict( sample, output ); + Point best_cls; + minMaxLoc(output, 0, 0, 0, &best_cls, 0); + int r = cvRound(responses.at(si)); + CV_DbgAssert( fabs(responses.at(si) - r) < FLT_EPSILON ); r = cls_map[r]; int d = best_cls.x == r ? 0 : 1; err += d; @@ -417,13 +195,13 @@ float ann_calc_error( CvANN_MLP* ann, CvMLData* _data, map& cls_map, i int str_to_boost_type( String& str ) { if ( !str.compare("DISCRETE") ) - return CvBoost::DISCRETE; + return Boost::DISCRETE; if ( !str.compare("REAL") ) - return CvBoost::REAL; + return Boost::REAL; if ( !str.compare("LOGIT") ) - return CvBoost::LOGIT; + return Boost::LOGIT; if ( !str.compare("GENTLE") ) - return CvBoost::GENTLE; + return Boost::GENTLE; CV_Error( CV_StsBadArg, "incorrect boost type string" ); return -1; } @@ -446,76 +224,37 @@ CV_MLBaseTest::CV_MLBaseTest(const char* _modelName) RNG& rng = theRNG(); initSeed = rng.state; - rng.state = seeds[rng(seedCount)]; modelName = _modelName; - nbayes = 0; - knearest = 0; - svm = 0; - ann = 0; - dtree = 0; - boost = 0; - rtrees = 0; - ertrees = 0; - if( !modelName.compare(CV_NBAYES) ) - nbayes = new CvNormalBayesClassifier; - else if( !modelName.compare(CV_KNEAREST) ) - knearest = new CvKNearest; - else if( !modelName.compare(CV_SVM) ) - svm = new CvSVM; - else if( !modelName.compare(CV_ANN) ) - ann = new CvANN_MLP; - else if( !modelName.compare(CV_DTREE) ) - dtree = new CvDTree; - else if( !modelName.compare(CV_BOOST) ) - boost = new CvBoost; - else if( !modelName.compare(CV_RTREES) ) - rtrees = new CvRTrees; - else if( !modelName.compare(CV_ERTREES) ) - ertrees = new CvERTrees; } CV_MLBaseTest::~CV_MLBaseTest() { if( validationFS.isOpened() ) validationFS.release(); - if( nbayes ) - delete nbayes; - if( knearest ) - delete knearest; - if( svm ) - delete svm; - if( ann ) - delete ann; - if( dtree ) - delete dtree; - if( boost ) - delete boost; - if( rtrees ) - delete rtrees; - if( ertrees ) - delete ertrees; theRNG().state = initSeed; } -int CV_MLBaseTest::read_params( CvFileStorage* _fs ) +int CV_MLBaseTest::read_params( CvFileStorage* __fs ) { - if( !_fs ) + FileStorage _fs(__fs, false); + if( !_fs.isOpened() ) test_case_count = -1; else { - CvFileNode* fn = cvGetRootFileNode( _fs, 0 ); - fn = (CvFileNode*)cvGetSeqElem( fn->data.seq, 0 ); - fn = cvGetFileNodeByName( _fs, fn, "run_params" ); - CvSeq* dataSetNamesSeq = cvGetFileNodeByName( _fs, fn, modelName.c_str() )->data.seq; - test_case_count = dataSetNamesSeq ? dataSetNamesSeq->total : -1; + FileNode fn = _fs.getFirstTopLevelNode()["run_params"][modelName]; + test_case_count = (int)fn.size(); + if( test_case_count <= 0 ) + test_case_count = -1; if( test_case_count > 0 ) { dataSetNames.resize( test_case_count ); - vector::iterator it = dataSetNames.begin(); - for( int i = 0; i < test_case_count; i++, it++ ) - *it = ((CvFileNode*)cvGetSeqElem( dataSetNamesSeq, i ))->data.str.ptr; + FileNodeIterator it = fn.begin(); + for( int i = 0; i < test_case_count; i++, ++it ) + { + dataSetNames[i] = (string)*it; + } } } return cvtest::TS::OK;; @@ -547,8 +286,6 @@ void CV_MLBaseTest::run( int ) int CV_MLBaseTest::prepare_test_case( int test_case_idx ) { - int trainSampleCount, respIdx; - String varTypes; clear(); string dataPath = ts->get_data_path(); @@ -560,30 +297,27 @@ int CV_MLBaseTest::prepare_test_case( int test_case_idx ) string dataName = dataSetNames[test_case_idx], filename = dataPath + dataName + ".data"; - if ( data.read_csv( filename.c_str() ) != 0) - { - char msg[100]; - sprintf( msg, "file %s can not be read", filename.c_str() ); - ts->printf( cvtest::TS::LOG, msg ); - return cvtest::TS::FAIL_INVALID_TEST_DATA; - } FileNode dataParamsNode = validationFS.getFirstTopLevelNode()["validation"][modelName][dataName]["data_params"]; CV_DbgAssert( !dataParamsNode.empty() ); CV_DbgAssert( !dataParamsNode["LS"].empty() ); - dataParamsNode["LS"] >> trainSampleCount; - CvTrainTestSplit spl( trainSampleCount ); - data.set_train_test_split( &spl ); + int trainSampleCount = (int)dataParamsNode["LS"]; CV_DbgAssert( !dataParamsNode["resp_idx"].empty() ); - dataParamsNode["resp_idx"] >> respIdx; - data.set_response_idx( respIdx ); + int respIdx = (int)dataParamsNode["resp_idx"]; CV_DbgAssert( !dataParamsNode["types"].empty() ); - dataParamsNode["types"] >> varTypes; - data.set_var_types( varTypes.c_str() ); + String varTypes = (String)dataParamsNode["types"]; + data = TrainData::loadFromCSV(filename, 0, respIdx, respIdx+1, varTypes); + if( data.empty() ) + { + ts->printf( cvtest::TS::LOG, "file %s can not be read\n", filename.c_str() ); + return cvtest::TS::FAIL_INVALID_TEST_DATA; + } + + data->setTrainTestSplit(trainSampleCount); return cvtest::TS::OK; } @@ -598,114 +332,97 @@ int CV_MLBaseTest::train( int testCaseIdx ) FileNode modelParamsNode = validationFS.getFirstTopLevelNode()["validation"][modelName][dataSetNames[testCaseIdx]]["model_params"]; - if( !modelName.compare(CV_NBAYES) ) - is_trained = nbayes_train( nbayes, &data ); - else if( !modelName.compare(CV_KNEAREST) ) + if( modelName == CV_NBAYES ) + model = NormalBayesClassifier::create(); + else if( modelName == CV_KNEAREST ) { - assert( 0 ); - //is_trained = knearest->train( &data ); + model = KNearest::create(); } - else if( !modelName.compare(CV_SVM) ) + else if( modelName == CV_SVM ) { String svm_type_str, kernel_type_str; modelParamsNode["svm_type"] >> svm_type_str; modelParamsNode["kernel_type"] >> kernel_type_str; - CvSVMParams params; - params.svm_type = str_to_svm_type( svm_type_str ); - params.kernel_type = str_to_svm_kernel_type( kernel_type_str ); + SVM::Params params; + params.svmType = str_to_svm_type( svm_type_str ); + params.kernelType = str_to_svm_kernel_type( kernel_type_str ); modelParamsNode["degree"] >> params.degree; modelParamsNode["gamma"] >> params.gamma; modelParamsNode["coef0"] >> params.coef0; modelParamsNode["C"] >> params.C; modelParamsNode["nu"] >> params.nu; modelParamsNode["p"] >> params.p; - is_trained = svm_train( svm, &data, params ); + model = SVM::create(params); } - else if( !modelName.compare(CV_EM) ) + else if( modelName == CV_EM ) { assert( 0 ); } - else if( !modelName.compare(CV_ANN) ) + else if( modelName == CV_ANN ) { String train_method_str; double param1, param2; modelParamsNode["train_method"] >> train_method_str; modelParamsNode["param1"] >> param1; modelParamsNode["param2"] >> param2; - Mat new_responses; - ann_get_new_responses( &data, new_responses, cls_map ); - int layer_sz[] = { data.get_values()->cols - 1, 100, 100, (int)cls_map.size() }; - CvMat layer_sizes = - cvMat( 1, (int)(sizeof(layer_sz)/sizeof(layer_sz[0])), CV_32S, layer_sz ); - ann->create( &layer_sizes ); - is_trained = ann_train( ann, &data, new_responses, CvANN_MLP_TrainParams(cvTermCriteria(CV_TERMCRIT_ITER,300,0.01), - str_to_ann_train_method(train_method_str), param1, param2) ) >= 0; + Mat new_responses = ann_get_new_responses( data, cls_map ); + // binarize the responses + data = TrainData::create(data->getSamples(), data->getLayout(), new_responses, + data->getVarIdx(), data->getTrainSampleIdx()); + int layer_sz[] = { data->getNAllVars(), 100, 100, (int)cls_map.size() }; + Mat layer_sizes( 1, (int)(sizeof(layer_sz)/sizeof(layer_sz[0])), CV_32S, layer_sz ); + model = ANN_MLP::create(layer_sizes, ANN_MLP::Params(TermCriteria(TermCriteria::COUNT,300,0.01), + str_to_ann_train_method(train_method_str), param1, param2)); } - else if( !modelName.compare(CV_DTREE) ) + else if( modelName == CV_DTREE ) { int MAX_DEPTH, MIN_SAMPLE_COUNT, MAX_CATEGORIES, CV_FOLDS; float REG_ACCURACY = 0; - bool USE_SURROGATE, IS_PRUNED; + bool USE_SURROGATE = false, IS_PRUNED; modelParamsNode["max_depth"] >> MAX_DEPTH; modelParamsNode["min_sample_count"] >> MIN_SAMPLE_COUNT; - modelParamsNode["use_surrogate"] >> USE_SURROGATE; + //modelParamsNode["use_surrogate"] >> USE_SURROGATE; modelParamsNode["max_categories"] >> MAX_CATEGORIES; modelParamsNode["cv_folds"] >> CV_FOLDS; modelParamsNode["is_pruned"] >> IS_PRUNED; - is_trained = dtree->train( &data, - CvDTreeParams(MAX_DEPTH, MIN_SAMPLE_COUNT, REG_ACCURACY, USE_SURROGATE, - MAX_CATEGORIES, CV_FOLDS, false, IS_PRUNED, 0 )) != 0; + model = DTrees::create(DTrees::Params(MAX_DEPTH, MIN_SAMPLE_COUNT, REG_ACCURACY, USE_SURROGATE, + MAX_CATEGORIES, CV_FOLDS, false, IS_PRUNED, Mat() )); } - else if( !modelName.compare(CV_BOOST) ) + else if( modelName == CV_BOOST ) { int BOOST_TYPE, WEAK_COUNT, MAX_DEPTH; float WEIGHT_TRIM_RATE; - bool USE_SURROGATE; + bool USE_SURROGATE = false; String typeStr; modelParamsNode["type"] >> typeStr; BOOST_TYPE = str_to_boost_type( typeStr ); modelParamsNode["weak_count"] >> WEAK_COUNT; modelParamsNode["weight_trim_rate"] >> WEIGHT_TRIM_RATE; modelParamsNode["max_depth"] >> MAX_DEPTH; - modelParamsNode["use_surrogate"] >> USE_SURROGATE; - is_trained = boost->train( &data, - CvBoostParams(BOOST_TYPE, WEAK_COUNT, WEIGHT_TRIM_RATE, MAX_DEPTH, USE_SURROGATE, 0) ) != 0; + //modelParamsNode["use_surrogate"] >> USE_SURROGATE; + model = Boost::create( Boost::Params(BOOST_TYPE, WEAK_COUNT, WEIGHT_TRIM_RATE, MAX_DEPTH, USE_SURROGATE, Mat()) ); } - else if( !modelName.compare(CV_RTREES) ) + else if( modelName == CV_RTREES ) { int MAX_DEPTH, MIN_SAMPLE_COUNT, MAX_CATEGORIES, CV_FOLDS, NACTIVE_VARS, MAX_TREES_NUM; float REG_ACCURACY = 0, OOB_EPS = 0.0; - bool USE_SURROGATE, IS_PRUNED; + bool USE_SURROGATE = false, IS_PRUNED; modelParamsNode["max_depth"] >> MAX_DEPTH; modelParamsNode["min_sample_count"] >> MIN_SAMPLE_COUNT; - modelParamsNode["use_surrogate"] >> USE_SURROGATE; + //modelParamsNode["use_surrogate"] >> USE_SURROGATE; modelParamsNode["max_categories"] >> MAX_CATEGORIES; modelParamsNode["cv_folds"] >> CV_FOLDS; modelParamsNode["is_pruned"] >> IS_PRUNED; modelParamsNode["nactive_vars"] >> NACTIVE_VARS; modelParamsNode["max_trees_num"] >> MAX_TREES_NUM; - is_trained = rtrees->train( &data, CvRTParams( MAX_DEPTH, MIN_SAMPLE_COUNT, REG_ACCURACY, - USE_SURROGATE, MAX_CATEGORIES, 0, true, // (calc_var_importance == true) <=> RF processes variable importance - NACTIVE_VARS, MAX_TREES_NUM, OOB_EPS, CV_TERMCRIT_ITER)) != 0; - } - else if( !modelName.compare(CV_ERTREES) ) - { - int MAX_DEPTH, MIN_SAMPLE_COUNT, MAX_CATEGORIES, CV_FOLDS, NACTIVE_VARS, MAX_TREES_NUM; - float REG_ACCURACY = 0, OOB_EPS = 0.0; - bool USE_SURROGATE, IS_PRUNED; - modelParamsNode["max_depth"] >> MAX_DEPTH; - modelParamsNode["min_sample_count"] >> MIN_SAMPLE_COUNT; - modelParamsNode["use_surrogate"] >> USE_SURROGATE; - modelParamsNode["max_categories"] >> MAX_CATEGORIES; - modelParamsNode["cv_folds"] >> CV_FOLDS; - modelParamsNode["is_pruned"] >> IS_PRUNED; - modelParamsNode["nactive_vars"] >> NACTIVE_VARS; - modelParamsNode["max_trees_num"] >> MAX_TREES_NUM; - is_trained = ertrees->train( &data, CvRTParams( MAX_DEPTH, MIN_SAMPLE_COUNT, REG_ACCURACY, - USE_SURROGATE, MAX_CATEGORIES, 0, false, // (calc_var_importance == true) <=> RF processes variable importance - NACTIVE_VARS, MAX_TREES_NUM, OOB_EPS, CV_TERMCRIT_ITER)) != 0; + model = RTrees::create(RTrees::Params( MAX_DEPTH, MIN_SAMPLE_COUNT, REG_ACCURACY, + USE_SURROGATE, MAX_CATEGORIES, Mat(), true, // (calc_var_importance == true) <=> RF processes variable importance + NACTIVE_VARS, TermCriteria(TermCriteria::COUNT, MAX_TREES_NUM, OOB_EPS))); } + if( !model.empty() ) + is_trained = model->train(data, 0); + if( !is_trained ) { ts->printf( cvtest::TS::LOG, "in test case %d model training was failed", testCaseIdx ); @@ -714,78 +431,46 @@ int CV_MLBaseTest::train( int testCaseIdx ) return cvtest::TS::OK; } -float CV_MLBaseTest::get_error( int /*testCaseIdx*/, int type, vector *resp ) +float CV_MLBaseTest::get_test_error( int /*testCaseIdx*/, vector *resp ) { + int type = CV_TEST_ERROR; float err = 0; - if( !modelName.compare(CV_NBAYES) ) - err = nbayes_calc_error( nbayes, &data, type, resp ); - else if( !modelName.compare(CV_KNEAREST) ) - { - assert( 0 ); - /*testCaseIdx = 0; - int k = 2; - validationFS.getFirstTopLevelNode()["validation"][modelName][dataSetNames[testCaseIdx]]["model_params"]["k"] >> k; - err = knearest->calc_error( &data, k, type, resp );*/ - } - else if( !modelName.compare(CV_SVM) ) - err = svm_calc_error( svm, &data, type, resp ); - else if( !modelName.compare(CV_EM) ) + Mat _resp; + if( modelName == CV_EM ) assert( 0 ); - else if( !modelName.compare(CV_ANN) ) - err = ann_calc_error( ann, &data, cls_map, type, resp ); - else if( !modelName.compare(CV_DTREE) ) - err = dtree->calc_error( &data, type, resp ); - else if( !modelName.compare(CV_BOOST) ) - err = boost->calc_error( &data, type, resp ); - else if( !modelName.compare(CV_RTREES) ) - err = rtrees->calc_error( &data, type, resp ); - else if( !modelName.compare(CV_ERTREES) ) - err = ertrees->calc_error( &data, type, resp ); + else if( modelName == CV_ANN ) + err = ann_calc_error( model, data, cls_map, type, resp ); + else if( modelName == CV_DTREE || modelName == CV_BOOST || modelName == CV_RTREES || + modelName == CV_SVM || modelName == CV_NBAYES || modelName == CV_KNEAREST ) + err = model->calcError( data, true, _resp ); + if( !_resp.empty() && resp ) + _resp.convertTo(*resp, CV_32F); return err; } void CV_MLBaseTest::save( const char* filename ) { - if( !modelName.compare(CV_NBAYES) ) - nbayes->save( filename ); - else if( !modelName.compare(CV_KNEAREST) ) - knearest->save( filename ); - else if( !modelName.compare(CV_SVM) ) - svm->save( filename ); - else if( !modelName.compare(CV_ANN) ) - ann->save( filename ); - else if( !modelName.compare(CV_DTREE) ) - dtree->save( filename ); - else if( !modelName.compare(CV_BOOST) ) - boost->save( filename ); - else if( !modelName.compare(CV_RTREES) ) - rtrees->save( filename ); - else if( !modelName.compare(CV_ERTREES) ) - ertrees->save( filename ); + model->save( filename ); } void CV_MLBaseTest::load( const char* filename ) { - if( !modelName.compare(CV_NBAYES) ) - nbayes->load( filename ); - else if( !modelName.compare(CV_KNEAREST) ) - knearest->load( filename ); - else if( !modelName.compare(CV_SVM) ) - { - delete svm; - svm = new CvSVM; - svm->load( filename ); - } - else if( !modelName.compare(CV_ANN) ) - ann->load( filename ); - else if( !modelName.compare(CV_DTREE) ) - dtree->load( filename ); - else if( !modelName.compare(CV_BOOST) ) - boost->load( filename ); - else if( !modelName.compare(CV_RTREES) ) - rtrees->load( filename ); - else if( !modelName.compare(CV_ERTREES) ) - ertrees->load( filename ); + if( modelName == CV_NBAYES ) + model = StatModel::load( filename ); + else if( modelName == CV_KNEAREST ) + model = StatModel::load( filename ); + else if( modelName == CV_SVM ) + model = StatModel::load( filename ); + else if( modelName == CV_ANN ) + model = StatModel::load( filename ); + else if( modelName == CV_DTREE ) + model = StatModel::load( filename ); + else if( modelName == CV_BOOST ) + model = StatModel::load( filename ); + else if( modelName == CV_RTREES ) + model = StatModel::load( filename ); + else + CV_Error( CV_StsNotImplemented, "invalid stat model name"); } /* End of file. */ diff --git a/modules/ml/test/test_precomp.hpp b/modules/ml/test/test_precomp.hpp index e68e5513ba..329b9bd6c0 100644 --- a/modules/ml/test/test_precomp.hpp +++ b/modules/ml/test/test_precomp.hpp @@ -25,6 +25,20 @@ #define CV_RTREES "rtrees" #define CV_ERTREES "ertrees" +enum { CV_TRAIN_ERROR=0, CV_TEST_ERROR=1 }; + +using cv::Ptr; +using cv::ml::StatModel; +using cv::ml::TrainData; +using cv::ml::NormalBayesClassifier; +using cv::ml::SVM; +using cv::ml::KNearest; +using cv::ml::ParamGrid; +using cv::ml::ANN_MLP; +using cv::ml::DTrees; +using cv::ml::Boost; +using cv::ml::RTrees; + class CV_MLBaseTest : public cvtest::BaseTest { public: @@ -39,24 +53,16 @@ protected: virtual int validate_test_results( int testCaseIdx ) = 0; int train( int testCaseIdx ); - float get_error( int testCaseIdx, int type, std::vector *resp = 0 ); + float get_test_error( int testCaseIdx, std::vector *resp = 0 ); void save( const char* filename ); void load( const char* filename ); - CvMLData data; + Ptr data; std::string modelName, validationFN; std::vector dataSetNames; cv::FileStorage validationFS; - // MLL models - CvNormalBayesClassifier* nbayes; - CvKNearest* knearest; - CvSVM* svm; - CvANN_MLP* ann; - CvDTree* dtree; - CvBoost* boost; - CvRTrees* rtrees; - CvERTrees* ertrees; + Ptr model; std::map cls_map; @@ -67,6 +73,7 @@ class CV_AMLTest : public CV_MLBaseTest { public: CV_AMLTest( const char* _modelName ); + virtual ~CV_AMLTest() {} protected: virtual int run_test_case( int testCaseIdx ); virtual int validate_test_results( int testCaseIdx ); @@ -76,6 +83,7 @@ class CV_SLMLTest : public CV_MLBaseTest { public: CV_SLMLTest( const char* _modelName ); + virtual ~CV_SLMLTest() {} protected: virtual int run_test_case( int testCaseIdx ); virtual int validate_test_results( int testCaseIdx ); diff --git a/modules/ml/test/test_save_load.cpp b/modules/ml/test/test_save_load.cpp index 8b58ce534a..a5997d5355 100644 --- a/modules/ml/test/test_save_load.cpp +++ b/modules/ml/test/test_save_load.cpp @@ -59,20 +59,20 @@ int CV_SLMLTest::run_test_case( int testCaseIdx ) if( code == cvtest::TS::OK ) { - data.mix_train_and_test_idx(); - code = train( testCaseIdx ); - if( code == cvtest::TS::OK ) - { - get_error( testCaseIdx, CV_TEST_ERROR, &test_resps1 ); - fname1 = tempfile(".yml.gz"); - save( fname1.c_str() ); - load( fname1.c_str() ); - get_error( testCaseIdx, CV_TEST_ERROR, &test_resps2 ); - fname2 = tempfile(".yml.gz"); - save( fname2.c_str() ); - } - else - ts->printf( cvtest::TS::LOG, "model can not be trained" ); + data->setTrainTestSplit(data->getNTrainSamples(), true); + code = train( testCaseIdx ); + if( code == cvtest::TS::OK ) + { + get_test_error( testCaseIdx, &test_resps1 ); + fname1 = tempfile(".yml.gz"); + save( fname1.c_str() ); + load( fname1.c_str() ); + get_test_error( testCaseIdx, &test_resps2 ); + fname2 = tempfile(".yml.gz"); + save( fname2.c_str() ); + } + else + ts->printf( cvtest::TS::LOG, "model can not be trained" ); } return code; } @@ -130,15 +130,19 @@ int CV_SLMLTest::validate_test_results( int testCaseIdx ) remove( fname2.c_str() ); } - // 2. compare responses - CV_Assert( test_resps1.size() == test_resps2.size() ); - vector::const_iterator it1 = test_resps1.begin(), it2 = test_resps2.begin(); - for( ; it1 != test_resps1.end(); ++it1, ++it2 ) + if( code >= 0 ) { - if( fabs(*it1 - *it2) > FLT_EPSILON ) + // 2. compare responses + CV_Assert( test_resps1.size() == test_resps2.size() ); + vector::const_iterator it1 = test_resps1.begin(), it2 = test_resps2.begin(); + for( ; it1 != test_resps1.end(); ++it1, ++it2 ) { - ts->printf( cvtest::TS::LOG, "in test case %d responses predicted before saving and after loading is different", testCaseIdx ); - code = cvtest::TS::FAIL_INVALID_OUTPUT; + if( fabs(*it1 - *it2) > FLT_EPSILON ) + { + ts->printf( cvtest::TS::LOG, "in test case %d responses predicted before saving and after loading is different", testCaseIdx ); + code = cvtest::TS::FAIL_INVALID_OUTPUT; + break; + } } } return code; @@ -152,40 +156,41 @@ TEST(ML_ANN, save_load) { CV_SLMLTest test( CV_ANN ); test.safe_run(); } TEST(ML_DTree, save_load) { CV_SLMLTest test( CV_DTREE ); test.safe_run(); } TEST(ML_Boost, save_load) { CV_SLMLTest test( CV_BOOST ); test.safe_run(); } TEST(ML_RTrees, save_load) { CV_SLMLTest test( CV_RTREES ); test.safe_run(); } -TEST(ML_ERTrees, save_load) { CV_SLMLTest test( CV_ERTREES ); test.safe_run(); } +TEST(DISABLED_ML_ERTrees, save_load) { CV_SLMLTest test( CV_ERTREES ); test.safe_run(); } -TEST(ML_SVM, throw_exception_when_save_untrained_model) +/*TEST(ML_SVM, throw_exception_when_save_untrained_model) { - SVM svm; + Ptr svm; string filename = tempfile("svm.xml"); ASSERT_THROW(svm.save(filename.c_str()), Exception); remove(filename.c_str()); -} +}*/ TEST(DISABLED_ML_SVM, linear_save_load) { - CvSVM svm1, svm2, svm3; - svm1.load("SVM45_X_38-1.xml"); - svm2.load("SVM45_X_38-2.xml"); + Ptr svm1, svm2, svm3; + + svm1 = StatModel::load("SVM45_X_38-1.xml"); + svm2 = StatModel::load("SVM45_X_38-2.xml"); string tname = tempfile("a.xml"); - svm2.save(tname.c_str()); - svm3.load(tname.c_str()); + svm2->save(tname); + svm3 = StatModel::load(tname); - ASSERT_EQ(svm1.get_var_count(), svm2.get_var_count()); - ASSERT_EQ(svm1.get_var_count(), svm3.get_var_count()); + ASSERT_EQ(svm1->getVarCount(), svm2->getVarCount()); + ASSERT_EQ(svm1->getVarCount(), svm3->getVarCount()); - int m = 10000, n = svm1.get_var_count(); + int m = 10000, n = svm1->getVarCount(); Mat samples(m, n, CV_32F), r1, r2, r3; randu(samples, 0., 1.); - svm1.predict(samples, r1); - svm2.predict(samples, r2); - svm3.predict(samples, r3); + svm1->predict(samples, r1); + svm2->predict(samples, r2); + svm3->predict(samples, r3); double eps = 1e-4; - EXPECT_LE(cvtest::norm(r1, r2, NORM_INF), eps); - EXPECT_LE(cvtest::norm(r1, r3, NORM_INF), eps); + EXPECT_LE(norm(r1, r2, NORM_INF), eps); + EXPECT_LE(norm(r1, r3, NORM_INF), eps); remove(tname.c_str()); } From 878dec65c89c566f38987ea877c868d5dd0d046f Mon Sep 17 00:00:00 2001 From: vbystricky Date: Mon, 28 Jul 2014 15:48:02 +0400 Subject: [PATCH 057/189] Optimize OpenCL version of morfology and box filters for small filter kernels --- modules/imgproc/src/morph.cpp | 176 ++++++++++++++- .../{boxFilterSmall.cl => filterSmall.cl} | 212 ++++++++++++++---- modules/imgproc/src/smooth.cpp | 4 +- modules/imgproc/test/ocl/test_filters.cpp | 70 +++++- 4 files changed, 399 insertions(+), 63 deletions(-) rename modules/imgproc/src/opencl/{boxFilterSmall.cl => filterSmall.cl} (71%) diff --git a/modules/imgproc/src/morph.cpp b/modules/imgproc/src/morph.cpp index 4f696b4209..328d03de1f 100644 --- a/modules/imgproc/src/morph.cpp +++ b/modules/imgproc/src/morph.cpp @@ -1339,20 +1339,188 @@ static bool IPPMorphOp(int op, InputArray _src, OutputArray _dst, #ifdef HAVE_OPENCL +#define ROUNDUP(sz, n) ((sz) + (n) - 1 - (((sz) + (n) - 1) % (n))) + +static bool ocl_morphSmall( InputArray _src, OutputArray _dst, InputArray _kernel, Point anchor, int borderType, + int op, int actual_op = -1, InputArray _extraMat = noArray()) +{ + const ocl::Device & dev = ocl::Device::getDefault(); + int type = _src.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type), esz = CV_ELEM_SIZE(type); + bool doubleSupport = dev.doubleFPConfig() > 0; + + if (cn > 4 || (!doubleSupport && depth == CV_64F) || + _src.offset() % esz != 0 || _src.step() % esz != 0) + return false; + + Size ksize = _kernel.size(); + if (anchor.x < 0) + anchor.x = ksize.width / 2; + if (anchor.y < 0) + anchor.y = ksize.height / 2; + + Size size = _src.size(), wholeSize; + bool isolated = (borderType & BORDER_ISOLATED) != 0; + borderType &= ~BORDER_ISOLATED; + int wdepth = depth, wtype = type; + if (depth == CV_8U) + { + wdepth = CV_32S; + wtype = CV_MAKETYPE(wdepth, cn); + } + char cvt[2][40]; + + bool haveExtraMat = !_extraMat.empty(); + CV_Assert(actual_op <= 3 || haveExtraMat); + + const char * const borderMap[] = { "BORDER_CONSTANT", "BORDER_REPLICATE", + "BORDER_REFLECT", 0, "BORDER_REFLECT_101" }; + size_t globalsize[2] = { size.width, size.height }; + + UMat src = _src.getUMat(); + if (!isolated) + { + Point ofs; + src.locateROI(wholeSize, ofs); + } + + int h = isolated ? size.height : wholeSize.height; + int w = isolated ? size.width : wholeSize.width; + if (w < ksize.width || h < ksize.height) + return false; + + // Figure out what vector size to use for loading the pixels. + int pxLoadNumPixels = cn != 1 || size.width % 4 ? 1 : 4; + int pxLoadVecSize = cn * pxLoadNumPixels; + + // Figure out how many pixels per work item to compute in X and Y + // directions. Too many and we run out of registers. + int pxPerWorkItemX = 1, pxPerWorkItemY = 1; + if (cn <= 2 && ksize.width <= 4 && ksize.height <= 4) + { + pxPerWorkItemX = size.width % 8 ? size.width % 4 ? size.width % 2 ? 1 : 2 : 4 : 8; + pxPerWorkItemY = size.height % 2 ? 1 : 2; + } + else if (cn < 4 || (ksize.width <= 4 && ksize.height <= 4)) + { + pxPerWorkItemX = size.width % 2 ? 1 : 2; + pxPerWorkItemY = size.height % 2 ? 1 : 2; + } + globalsize[0] = size.width / pxPerWorkItemX; + globalsize[1] = size.height / pxPerWorkItemY; + + // Need some padding in the private array for pixels + int privDataWidth = ROUNDUP(pxPerWorkItemX + ksize.width - 1, pxLoadNumPixels); + + // Make the global size a nice round number so the runtime can pick + // from reasonable choices for the workgroup size + const int wgRound = 256; + globalsize[0] = ROUNDUP(globalsize[0], wgRound); + + if (actual_op < 0) + actual_op = op; + + // build processing + String processing; + Mat kernel8u; + _kernel.getMat().convertTo(kernel8u, CV_8U); + for (int y = 0; y < kernel8u.rows; ++y) + for (int x = 0; x < kernel8u.cols; ++x) + if (kernel8u.at(y, x) != 0) + processing += format("PROCESS(%d,%d)", y, x); + + + static const char * const op2str[] = { "OP_ERODE", "OP_DILATE", NULL, NULL, "OP_GRADIENT", "OP_TOPHAT", "OP_BLACKHAT" }; + String opts = format("-D cn=%d " + "-D ANCHOR_X=%d -D ANCHOR_Y=%d -D KERNEL_SIZE_X=%d -D KERNEL_SIZE_Y=%d " + "-D PX_LOAD_VEC_SIZE=%d -D PX_LOAD_NUM_PX=%d -D DEPTH_%d " + "-D PX_PER_WI_X=%d -D PX_PER_WI_Y=%d -D PRIV_DATA_WIDTH=%d -D %s -D %s " + "-D PX_LOAD_X_ITERATIONS=%d -D PX_LOAD_Y_ITERATIONS=%d " + "-D srcT=%s -D srcT1=%s -D dstT=srcT -D dstT1=srcT1 -D WT=%s -D WT1=%s " + "-D convertToWT=%s -D convertToDstT=%s -D PROCESS_ELEM_=%s -D %s%s", + cn, anchor.x, anchor.y, ksize.width, ksize.height, + pxLoadVecSize, pxLoadNumPixels, depth, + pxPerWorkItemX, pxPerWorkItemY, privDataWidth, borderMap[borderType], + isolated ? "BORDER_ISOLATED" : "NO_BORDER_ISOLATED", + privDataWidth / pxLoadNumPixels, pxPerWorkItemY + ksize.height - 1, + ocl::typeToStr(type), ocl::typeToStr(depth), + haveExtraMat ? ocl::typeToStr(wtype):"srcT",//to prevent overflow - WT + haveExtraMat ? ocl::typeToStr(wdepth):"srcT1",//to prevent overflow - WT1 + haveExtraMat ? ocl::convertTypeStr(depth, wdepth, cn, cvt[0]) : "noconvert",//to prevent overflow - src to WT + haveExtraMat ? ocl::convertTypeStr(wdepth, depth, cn, cvt[1]) : "noconvert",//to prevent overflow - WT to dst + processing.c_str(), op2str[op], + actual_op == op ? "" : cv::format(" -D %s", op2str[actual_op]).c_str()); + + ocl::Kernel kernel("filterSmall", cv::ocl::imgproc::filterSmall_oclsrc, opts); + if (kernel.empty()) + return false; + + _dst.create(size, type); + UMat dst = _dst.getUMat(); + + UMat source; + if(src.u != dst.u) + source = src; + else + { + Point ofs; + int cols = src.cols, rows = src.rows; + src.locateROI(wholeSize, ofs); + src.adjustROI(ofs.y, wholeSize.height - rows - ofs.y, ofs.x, wholeSize.width - cols - ofs.x); + src.copyTo(source); + + src.adjustROI(-ofs.y, -wholeSize.height + rows + ofs.y, -ofs.x, -wholeSize.width + cols + ofs.x); + source.adjustROI(-ofs.y, -wholeSize.height + rows + ofs.y, -ofs.x, -wholeSize.width + cols + ofs.x); + source.locateROI(wholeSize, ofs); + } + + UMat extraMat = _extraMat.getUMat(); + + int idxArg = kernel.set(0, ocl::KernelArg::PtrReadOnly(source)); + idxArg = kernel.set(idxArg, (int)source.step); + int srcOffsetX = (int)((source.offset % source.step) / source.elemSize()); + int srcOffsetY = (int)(source.offset / source.step); + int srcEndX = isolated ? srcOffsetX + size.width : wholeSize.width; + int srcEndY = isolated ? srcOffsetY + size.height : wholeSize.height; + idxArg = kernel.set(idxArg, srcOffsetX); + idxArg = kernel.set(idxArg, srcOffsetY); + idxArg = kernel.set(idxArg, srcEndX); + idxArg = kernel.set(idxArg, srcEndY); + idxArg = kernel.set(idxArg, ocl::KernelArg::WriteOnly(dst)); + + if (haveExtraMat) + { + idxArg = kernel.set(idxArg, ocl::KernelArg::ReadOnlyNoSize(extraMat)); + } + + return kernel.run(2, globalsize, NULL, false); + +} + static bool ocl_morphOp(InputArray _src, OutputArray _dst, InputArray _kernel, Point anchor, int iterations, int op, int borderType, const Scalar &, int actual_op = -1, InputArray _extraMat = noArray()) { const ocl::Device & dev = ocl::Device::getDefault(); - int type = _src.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type); - bool doubleSupport = dev.doubleFPConfig() > 0; + int type = _src.type(), depth = CV_MAT_DEPTH(type), + cn = CV_MAT_CN(type), esz = CV_ELEM_SIZE(type); + Mat kernel = _kernel.getMat(); + Size ksize = kernel.data ? kernel.size() : Size(3, 3), ssize = _src.size(); + + // try to use OpenCL kernel adopted for small morph kernel + if (dev.isIntel() && !(dev.type() & ocl::Device::TYPE_CPU) && + ((ksize.width < 5 && ksize.height < 5 && esz <= 4) || + (ksize.width == 5 && ksize.height == 5 && cn == 1)) && + (iterations == 1)) + { + if (ocl_morphSmall(_src, _dst, _kernel, anchor, borderType, op, actual_op, _extraMat)) + return true; + } + bool doubleSupport = dev.doubleFPConfig() > 0; if ((depth == CV_64F && !doubleSupport) || borderType != BORDER_CONSTANT) return false; - Mat kernel = _kernel.getMat(); bool haveExtraMat = !_extraMat.empty(); - Size ksize = kernel.data ? kernel.size() : Size(3, 3), ssize = _src.size(); CV_Assert(actual_op <= 3 || haveExtraMat); if (iterations == 0 || kernel.rows*kernel.cols == 1) diff --git a/modules/imgproc/src/opencl/boxFilterSmall.cl b/modules/imgproc/src/opencl/filterSmall.cl similarity index 71% rename from modules/imgproc/src/opencl/boxFilterSmall.cl rename to modules/imgproc/src/opencl/filterSmall.cl index ff47d18e4b..c996fb833e 100755 --- a/modules/imgproc/src/opencl/boxFilterSmall.cl +++ b/modules/imgproc/src/opencl/filterSmall.cl @@ -153,35 +153,10 @@ inline bool isBorder(const struct RectCoords bounds, int2 coord, int numPixels) } #endif -inline WT getBorderPixel(const struct RectCoords bounds, int2 coord, - __global const uchar * srcptr, int srcstep) -{ -#ifdef BORDER_CONSTANT - return (WT)(0); -#else - int selected_col = coord.x; - int selected_row = coord.y; - - EXTRAPOLATE(selected_col, selected_row, - bounds.x1, bounds.y1, - bounds.x2, bounds.y2); - - __global const uchar* ptr = srcptr + mad24(selected_row, srcstep, selected_col * SRCSIZE); - return convertToWT(loadpix(ptr)); -#endif -} - -inline WT readSrcPixelSingle(int2 pos, __global const uchar * srcptr, - int srcstep, const struct RectCoords srcCoords) -{ - if (!isBorder(srcCoords, pos, 1)) - { - __global const uchar * ptr = srcptr + mad24(pos.y, srcstep, pos.x * SRCSIZE); - return convertToWT(loadpix(ptr)); - } - else - return getBorderPixel(srcCoords, pos, srcptr, srcstep); -} +#define float1 float +#define uchar1 uchar +#define int1 int +#define uint1 unit #define __CAT(x, y) x##y #define CAT(x, y) __CAT(x, y) @@ -191,7 +166,7 @@ inline WT readSrcPixelSingle(int2 pos, __global const uchar * srcptr, #define PX_LOAD_FLOAT_VEC_TYPE CAT(WT1, PX_LOAD_VEC_SIZE) #define PX_LOAD_FLOAT_VEC_CONV CAT(convert_, PX_LOAD_FLOAT_VEC_TYPE) #define PX_LOAD CAT(vload, PX_LOAD_VEC_SIZE) -#define float1 float + inline PX_LOAD_FLOAT_VEC_TYPE readSrcPixelGroup(int2 pos, __global const uchar * srcptr, int srcstep, const struct RectCoords srcCoords) @@ -218,12 +193,150 @@ inline PX_LOAD_FLOAT_VEC_TYPE readSrcPixelGroup(int2 pos, __global const uchar * #define LOOP(N, VAR, STMT) CAT(LOOP, N)((VAR), (STMT)) -__kernel void boxFilterSmall(__global const uchar * srcptr, int src_step, int srcOffsetX, int srcOffsetY, int srcEndX, int srcEndY, - __global uchar * dstptr, int dst_step, int dst_offset, int rows, int cols +#ifdef OP_BOX_FILTER +#define PROCESS_ELEM \ + WT total_sum = (WT)(0); \ + int sy = 0; \ + LOOP(KERNEL_SIZE_Y, sy, \ + { \ + int sx = 0; \ + LOOP(KERNEL_SIZE_X, sx, \ + { \ + total_sum += privateData[py + sy][px + sx]; \ + }); \ + }) + +#elif defined OP_FILTER2D + +#define DIG(a) a, +__constant WT1 kernelData[] = { COEFF }; + +#define PROCESS_ELEM \ + WT total_sum = 0; \ + int sy = 0; \ + int kernelIndex = 0; \ + LOOP(KERNEL_SIZE_Y, sy, \ + { \ + int sx = 0; \ + LOOP(KERNEL_SIZE_X, sx, \ + { \ + total_sum = fma(kernelData[kernelIndex++], privateData[py + sy][px + sx], total_sum); \ + }); \ + }) + +#elif defined OP_ERODE || defined OP_DILATE + +#ifdef DEPTH_0 +#define MIN_VAL 0 +#define MAX_VAL UCHAR_MAX +#elif defined DEPTH_1 +#define MIN_VAL SCHAR_MIN +#define MAX_VAL SCHAR_MAX +#elif defined DEPTH_2 +#define MIN_VAL 0 +#define MAX_VAL USHRT_MAX +#elif defined DEPTH_3 +#define MIN_VAL SHRT_MIN +#define MAX_VAL SHRT_MAX +#elif defined DEPTH_4 +#define MIN_VAL INT_MIN +#define MAX_VAL INT_MAX +#elif defined DEPTH_5 +#define MIN_VAL (-FLT_MAX) +#define MAX_VAL FLT_MAX +#elif defined DEPTH_6 +#define MIN_VAL (-DBL_MAX) +#define MAX_VAL DBL_MAX +#endif + +#ifdef OP_ERODE +#define VAL (WT)MAX_VAL +#elif defined OP_DILATE +#define VAL (WT)MIN_VAL +#else +#error "Unknown operation" +#endif + +#define convert_float1 convert_float +#define convert_uchar1 convert_uchar +#define convert_int1 convert_int +#define convert_uint1 convert_uint + +#ifdef OP_ERODE +#if defined INTEL_DEVICE && defined DEPTH_0 +// workaround for bug in Intel HD graphics drivers (10.18.10.3496 or older) +#define WA_CONVERT_1 CAT(convert_uint, cn) +#define WA_CONVERT_2 CAT(convert_, srcT) +#define MORPH_OP(A, B) WA_CONVERT_2(min(WA_CONVERT_1(A), WA_CONVERT_1(B))) +#else +#define MORPH_OP(A, B) min((A), (B)) +#endif +#endif +#ifdef OP_DILATE +#define MORPH_OP(A, B) max((A), (B)) +#endif + +#define PROCESS(_y, _x) \ + total_sum = convertToWT(MORPH_OP(convertToWT(total_sum), convertToWT(privateData[py + _y][px + _x]))); + +#define PROCESS_ELEM \ + WT total_sum = convertToWT(VAL); \ + PROCESS_ELEM_ + +#else +#error "No processing is specified" +#endif + +#if defined OP_GRADIENT || defined OP_TOPHAT || defined OP_BLACKHAT +#define EXTRA_PARAMS , __global const uchar * matptr, int mat_step, int mat_offset +#else +#define EXTRA_PARAMS +#endif + +inline WT getBorderPixel(const struct RectCoords bounds, int2 coord, + __global const uchar * srcptr, int srcstep) +{ +#ifdef BORDER_CONSTANT +#ifdef OP_ERODE + return (WT)(MAX_VAL); +#elif defined OP_DILATE + return (WT)(MIN_VAL); +#else + return (WT)(0); +#endif +#else + + int selected_col = coord.x; + int selected_row = coord.y; + + EXTRAPOLATE(selected_col, selected_row, + bounds.x1, bounds.y1, + bounds.x2, bounds.y2); + + __global const uchar* ptr = srcptr + mad24(selected_row, srcstep, selected_col * SRCSIZE); + return convertToWT(loadpix(ptr)); +#endif +} + +inline WT readSrcPixelSingle(int2 pos, __global const uchar * srcptr, + int srcstep, const struct RectCoords srcCoords) +{ + if (!isBorder(srcCoords, pos, 1)) + { + __global const uchar * ptr = srcptr + mad24(pos.y, srcstep, pos.x * SRCSIZE); + return convertToWT(loadpix(ptr)); + } + else + return getBorderPixel(srcCoords, pos, srcptr, srcstep); +} + + +__kernel void filterSmall(__global const uchar * srcptr, int src_step, int srcOffsetX, int srcOffsetY, int srcEndX, int srcEndY, + __global uchar * dstptr, int dst_step, int dst_offset, int rows, int cols #ifdef NORMALIZE - , float alpha + , float alpha #endif - ) + EXTRA_PARAMS ) { // for non-isolated border: offsetX, offsetY, wholeX, wholeY const struct RectCoords srcCoords = { srcOffsetX, srcOffsetY, srcEndX, srcEndY }; @@ -282,24 +395,27 @@ __kernel void boxFilterSmall(__global const uchar * srcptr, int src_step, int sr LOOP(PX_PER_WI_X, px, { int x = startX + px; - int sy = 0; - int kernelIndex = 0; - WT total_sum = (WT)(0); - - LOOP(KERNEL_SIZE_Y, sy, - { - int sx = 0; - LOOP(KERNEL_SIZE_X, sx, - { - total_sum += privateData[py + sy][px + sx]; - }); - }); - - __global dstT * dstPtr = (__global dstT *)(dstptr + mad24(y, dst_step, mad24(x, DSTSIZE, dst_offset))); + PROCESS_ELEM; + int dst_index = mad24(y, dst_step, mad24(x, DSTSIZE, dst_offset)); + __global dstT * dstPtr = (__global dstT *)(dstptr + dst_index); #ifdef NORMALIZE total_sum *= (WT)(alpha); #endif +#if defined OP_GRADIENT || defined OP_TOPHAT || defined OP_BLACKHAT + //for this type of operations SRCSIZE == DSTSIZE + int mat_index = mad24(y, mat_step, mad24(x, SRCSIZE, mat_offset)); + WT value = convertToWT(loadpix(matptr + mat_index)); + +#ifdef OP_GRADIENT + storepix(convertToDstT(convertToWT(total_sum) - convertToWT(value)), dstPtr ); +#elif defined OP_TOPHAT + storepix(convertToDstT(convertToWT(value) - convertToWT(total_sum)), dstPtr ); +#elif defined OP_BLACKHAT + storepix(convertToDstT(convertToWT(total_sum) - convertToWT(value)), dstPtr ); +#endif +#else // erode or dilate, or open-close storepix(convertToDstT(total_sum), dstPtr); +#endif }); }); } diff --git a/modules/imgproc/src/smooth.cpp b/modules/imgproc/src/smooth.cpp index 66ff429cf3..907a6591ba 100644 --- a/modules/imgproc/src/smooth.cpp +++ b/modules/imgproc/src/smooth.cpp @@ -720,7 +720,7 @@ static bool ocl_boxFilter( InputArray _src, OutputArray _dst, int ddepth, "-D PX_PER_WI_X=%d -D PX_PER_WI_Y=%d -D PRIV_DATA_WIDTH=%d -D %s -D %s " "-D PX_LOAD_X_ITERATIONS=%d -D PX_LOAD_Y_ITERATIONS=%d " "-D srcT=%s -D srcT1=%s -D dstT=%s -D dstT1=%s -D WT=%s -D WT1=%s " - "-D convertToWT=%s -D convertToDstT=%s%s%s", + "-D convertToWT=%s -D convertToDstT=%s%s%s -D OP_BOX_FILTER", cn, anchor.x, anchor.y, ksize.width, ksize.height, pxLoadVecSize, pxLoadNumPixels, pxPerWorkItemX, pxPerWorkItemY, privDataWidth, borderMap[borderType], @@ -734,7 +734,7 @@ static bool ocl_boxFilter( InputArray _src, OutputArray _dst, int ddepth, - if (!kernel.create("boxFilterSmall", cv::ocl::imgproc::boxFilterSmall_oclsrc, build_options)) + if (!kernel.create("filterSmall", cv::ocl::imgproc::filterSmall_oclsrc, build_options)) return false; } else diff --git a/modules/imgproc/test/ocl/test_filters.cpp b/modules/imgproc/test/ocl/test_filters.cpp index 1fe2927886..aa881bd3c6 100644 --- a/modules/imgproc/test/ocl/test_filters.cpp +++ b/modules/imgproc/test/ocl/test_filters.cpp @@ -275,14 +275,68 @@ OCL_TEST_P(Dilate, Mat) ///////////////////////////////////////////////////////////////////////////////////////////////// // MorphologyEx +IMPLEMENT_PARAM_CLASS(MorphOp, int) +PARAM_TEST_CASE(MorphologyEx, MatType, + int, // kernel size + MorphOp, // MORPH_OP + int, // iterations + bool) +{ + int type, ksize, op, iterations; + bool useRoi; + + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_OUTPUT_PARAMETER(dst); + + virtual void SetUp() + { + type = GET_PARAM(0); + ksize = GET_PARAM(1); + op = GET_PARAM(2); + iterations = GET_PARAM(3); + useRoi = GET_PARAM(4); + } + + void random_roi(int minSize = 1) + { + if (minSize == 0) + minSize = ksize; + + Size roiSize = randomSize(minSize, MAX_VALUE); + + Border srcBorder = randomBorder(0, useRoi ? MAX_VALUE : 0); + randomSubMat(src, src_roi, roiSize, srcBorder, type, 5, 256); + + Border dstBorder = randomBorder(0, useRoi ? MAX_VALUE : 0); + randomSubMat(dst, dst_roi, roiSize, dstBorder, type, -60, 70); + + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); + } + + void Near() + { + int depth = CV_MAT_DEPTH(type); + bool isFP = depth >= CV_32F; -typedef FilterTestBase MorphologyEx; + if (isFP) + Near(1e-6, true); + else + Near(1, false); + } + + void Near(double threshold, bool relative) + { + if (relative) + OCL_EXPECT_MATS_NEAR_RELATIVE(dst, threshold); + else + OCL_EXPECT_MATS_NEAR(dst, threshold); + } +}; OCL_TEST_P(MorphologyEx, Mat) { Size kernelSize(ksize, ksize); - int iterations = (int)param; - int op = size.height; for (int j = 0; j < test_loop_times; j++) { @@ -377,12 +431,10 @@ OCL_INSTANTIATE_TEST_CASE_P(Filter, Dilate, Combine( OCL_INSTANTIATE_TEST_CASE_P(Filter, MorphologyEx, Combine( Values(CV_8UC1, CV_8UC3, CV_8UC4, CV_32FC1, CV_32FC3, CV_32FC4), - Values(3, 5, 7), - Values(Size(0, 2), Size(0, 3), Size(0, 4), Size(0, 5), Size(0, 6)), // used as generator of operations - Values((BorderType)BORDER_CONSTANT), - Values(1.0, 2.0, 3.0), - Bool(), - Values(1))); // not used + Values(3, 5, 7), // kernel size + Values(MORPH_OPEN, MORPH_CLOSE, MORPH_GRADIENT, MORPH_TOPHAT, MORPH_BLACKHAT), // used as generator of operations + Values(1, 2, 3), + Bool())); } } // namespace cvtest::ocl From d3d0434f07143b6c823d93d54ca2d0b15bb36507 Mon Sep 17 00:00:00 2001 From: "Fco. Javier Delgado del Hoyo" Date: Wed, 30 Jul 2014 09:00:23 +0200 Subject: [PATCH 058/189] Removed opencv_legacy dependency from cudaoptflow --- modules/cudaoptflow/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/cudaoptflow/CMakeLists.txt b/modules/cudaoptflow/CMakeLists.txt index b7a2109fbb..f2d3e3da0b 100644 --- a/modules/cudaoptflow/CMakeLists.txt +++ b/modules/cudaoptflow/CMakeLists.txt @@ -6,4 +6,4 @@ set(the_description "CUDA-accelerated Optical Flow") ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4127 /wd4324 /wd4512 -Wundef -Wmissing-declarations) -ocv_define_module(cudaoptflow opencv_video opencv_legacy opencv_cudaarithm opencv_cudawarping opencv_cudaimgproc OPTIONAL opencv_cudalegacy) +ocv_define_module(cudaoptflow opencv_video opencv_cudaarithm opencv_cudawarping opencv_cudaimgproc OPTIONAL opencv_cudalegacy) From bd8894002e0bc16097918422a0c050954df7cdf9 Mon Sep 17 00:00:00 2001 From: vbystricky Date: Wed, 30 Jul 2014 11:56:28 +0400 Subject: [PATCH 059/189] Fix some problems --- modules/imgproc/src/morph.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/modules/imgproc/src/morph.cpp b/modules/imgproc/src/morph.cpp index 328d03de1f..977be679dd 100644 --- a/modules/imgproc/src/morph.cpp +++ b/modules/imgproc/src/morph.cpp @@ -1352,6 +1352,9 @@ static bool ocl_morphSmall( InputArray _src, OutputArray _dst, InputArray _kerne _src.offset() % esz != 0 || _src.step() % esz != 0) return false; + bool haveExtraMat = !_extraMat.empty(); + CV_Assert(actual_op <= 3 || haveExtraMat); + Size ksize = _kernel.size(); if (anchor.x < 0) anchor.x = ksize.width / 2; @@ -1369,9 +1372,6 @@ static bool ocl_morphSmall( InputArray _src, OutputArray _dst, InputArray _kerne } char cvt[2][40]; - bool haveExtraMat = !_extraMat.empty(); - CV_Assert(actual_op <= 3 || haveExtraMat); - const char * const borderMap[] = { "BORDER_CONSTANT", "BORDER_REPLICATE", "BORDER_REFLECT", 0, "BORDER_REFLECT_101" }; size_t globalsize[2] = { size.width, size.height }; @@ -1506,6 +1506,13 @@ static bool ocl_morphOp(InputArray _src, OutputArray _dst, InputArray _kernel, Mat kernel = _kernel.getMat(); Size ksize = kernel.data ? kernel.size() : Size(3, 3), ssize = _src.size(); + bool doubleSupport = dev.doubleFPConfig() > 0; + if ((depth == CV_64F && !doubleSupport) || borderType != BORDER_CONSTANT) + return false; + + bool haveExtraMat = !_extraMat.empty(); + CV_Assert(actual_op <= 3 || haveExtraMat); + // try to use OpenCL kernel adopted for small morph kernel if (dev.isIntel() && !(dev.type() & ocl::Device::TYPE_CPU) && ((ksize.width < 5 && ksize.height < 5 && esz <= 4) || @@ -1516,13 +1523,6 @@ static bool ocl_morphOp(InputArray _src, OutputArray _dst, InputArray _kernel, return true; } - bool doubleSupport = dev.doubleFPConfig() > 0; - if ((depth == CV_64F && !doubleSupport) || borderType != BORDER_CONSTANT) - return false; - - bool haveExtraMat = !_extraMat.empty(); - CV_Assert(actual_op <= 3 || haveExtraMat); - if (iterations == 0 || kernel.rows*kernel.cols == 1) { _src.copyTo(_dst); From 90ac88cb8e39f7f7fcb64041da0a0fdfbbe31b00 Mon Sep 17 00:00:00 2001 From: Elena Gvozdeva Date: Wed, 30 Jul 2014 14:28:02 +0400 Subject: [PATCH 060/189] use std::min,max --- modules/imgproc/src/templmatch.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/imgproc/src/templmatch.cpp b/modules/imgproc/src/templmatch.cpp index aec83b74cb..45f2529f7a 100644 --- a/modules/imgproc/src/templmatch.cpp +++ b/modules/imgproc/src/templmatch.cpp @@ -136,22 +136,22 @@ void ConvolveBuf::create(Size image_size, Size templ_size) const int minBlockSize = 256; block_size.width = cvRound(result_size.width*blockScale); - block_size.width = MAX( block_size.width, minBlockSize - templ_size.width + 1 ); + block_size.width = std::max( block_size.width, minBlockSize - templ_size.width + 1 ); block_size.width = std::min( block_size.width, result_size.width ); block_size.height = cvRound(templ_size.height*blockScale); block_size.height = std::max( block_size.height, minBlockSize - templ_size.height + 1 ); block_size.height = std::min( block_size.height, result_size.height ); - dft_size.width = MAX(getOptimalDFTSize(block_size.width + templ_size.width - 1), 2); + dft_size.width = std::max(getOptimalDFTSize(block_size.width + templ_size.width - 1), 2); dft_size.height = getOptimalDFTSize(block_size.height + templ_size.height - 1); if( dft_size.width <= 0 || dft_size.height <= 0 ) CV_Error( CV_StsOutOfRange, "the input arrays are too big" ); // recompute block size block_size.width = dft_size.width - templ_size.width + 1; - block_size.width = MIN( block_size.width, result_size.width); + block_size.width = std::min( block_size.width, result_size.width); block_size.height = dft_size.height - templ_size.height + 1; - block_size.height = MIN( block_size.height, result_size.height ); + block_size.height = std::min( block_size.height, result_size.height ); image_block.create(dft_size, CV_32F); templ_block.create(dft_size, CV_32F); From e368f17cafc0f8f6af7209edcc51495abea9d2de Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Wed, 30 Jul 2014 16:11:08 +0400 Subject: [PATCH 061/189] fixed python bindings generation --- modules/python/src2/cv2.cpp | 9 +-------- modules/python/src2/gen2.py | 6 +++--- modules/python/src2/hdr_parser.py | 12 ++++++++---- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/modules/python/src2/cv2.cpp b/modules/python/src2/cv2.cpp index 622d24e64b..225ea5afc5 100644 --- a/modules/python/src2/cv2.cpp +++ b/modules/python/src2/cv2.cpp @@ -10,6 +10,7 @@ #include #include "pyopencv_generated_include.h" +#include "opencv2/core/types_c.h" #include "opencv2/opencv_modules.hpp" @@ -1089,14 +1090,6 @@ bool pyopencv_to(PyObject* obj, CvSlice& r, const char* name) return PyArg_ParseTuple(obj, "ii", &r.start_index, &r.end_index) > 0; } -template<> -PyObject* pyopencv_from(CvDTreeNode* const & node) -{ - double value = node->value; - int ivalue = cvRound(value); - return value == ivalue ? PyInt_FromLong(ivalue) : PyFloat_FromDouble(value); -} - //////////////////////////////////////////////////////////////////////////////////////////////////// static void OnMouse(int event, int x, int y, int flags, void* param) diff --git a/modules/python/src2/gen2.py b/modules/python/src2/gen2.py index 684b80f4e8..3dc2329c5a 100755 --- a/modules/python/src2/gen2.py +++ b/modules/python/src2/gen2.py @@ -267,7 +267,7 @@ class ClassInfo(object): #return sys.exit(-1) if self.bases and self.bases[0].startswith("cv::"): self.bases[0] = self.bases[0][4:] - if self.bases and self.bases[0] == "Algorithm": + if self.bases and self.bases[0] == "cv::Algorithm": self.isalgorithm = True for m in decl[2]: if m.startswith("="): @@ -286,7 +286,7 @@ class ClassInfo(object): code = "static bool pyopencv_to(PyObject* src, %s& dst, const char* name)\n{\n PyObject* tmp;\n bool ok;\n" % (self.cname) code += "".join([gen_template_set_prop_from_map.substitute(propname=p.name,proptype=p.tp) for p in self.props]) if self.bases: - code += "\n return pyopencv_to(src, (%s&)dst, name);\n}\n" % all_classes[self.bases[0]].cname + code += "\n return pyopencv_to(src, (%s&)dst, name);\n}\n" % all_classes[self.bases[0].replace("::", "_")].cname else: code += "\n return true;\n}\n" return code @@ -761,7 +761,7 @@ class PythonWrapperGenerator(object): sys.exit(-1) self.classes[classinfo.name] = classinfo if classinfo.bases and not classinfo.isalgorithm: - classinfo.isalgorithm = self.classes[classinfo.bases[0]].isalgorithm + classinfo.isalgorithm = self.classes[classinfo.bases[0].replace("::", "_")].isalgorithm def add_const(self, name, decl): constinfo = ConstInfo(name, decl[1]) diff --git a/modules/python/src2/hdr_parser.py b/modules/python/src2/hdr_parser.py index eb9100928f..de33aeb911 100755 --- a/modules/python/src2/hdr_parser.py +++ b/modules/python/src2/hdr_parser.py @@ -582,6 +582,7 @@ class CppHeaderParser(object): return name if name.startswith("cv."): return name + qualified_name = (("." in name) or ("::" in name)) n = "" for b in self.block_stack: block_type, block_name = b[self.BLOCK_TYPE], b[self.BLOCK_NAME] @@ -590,9 +591,12 @@ class CppHeaderParser(object): if block_type not in ["struct", "class", "namespace"]: print("Error at %d: there are non-valid entries in the current block stack " % (self.lineno, self.block_stack)) sys.exit(-1) - if block_name: + if block_name and (block_type == "namespace" or not qualified_name): n += block_name + "." - return n + name.replace("::", ".") + n += name.replace("::", ".") + if n.endswith(".Algorithm"): + n = "cv.Algorithm" + return n def parse_stmt(self, stmt, end_token): """ @@ -643,7 +647,7 @@ class CppHeaderParser(object): classname = classname[1:] decl = [stmt_type + " " + self.get_dotted_name(classname), "", modlist, []] if bases: - decl[1] = ": " + ", ".join([b if "::" in b else self.get_dotted_name(b).replace(".","::") for b in bases]) + decl[1] = ": " + ", ".join([self.get_dotted_name(b).replace(".","::") for b in bases]) return stmt_type, classname, True, decl if stmt.startswith("class") or stmt.startswith("struct"): @@ -658,7 +662,7 @@ class CppHeaderParser(object): if ("CV_EXPORTS_W" in stmt) or ("CV_EXPORTS_AS" in stmt) or (not self.wrap_mode):# and ("CV_EXPORTS" in stmt)): decl = [stmt_type + " " + self.get_dotted_name(classname), "", modlist, []] if bases: - decl[1] = ": " + ", ".join([b if "::" in b else self.get_dotted_name(b).replace(".","::") for b in bases]) + decl[1] = ": " + ", ".join([self.get_dotted_name(b).replace(".","::") for b in bases]) return stmt_type, classname, True, decl if stmt.startswith("enum"): From 223cdcd0eeca29dc56d9ed326d2ebf63c38e3e17 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Wed, 30 Jul 2014 22:53:46 +0400 Subject: [PATCH 062/189] fixed compilation of some samples; fixed ANN_MLP::predict --- modules/ml/src/ann_mlp.cpp | 6 +- samples/cpp/bagofwords_classification.cpp | 57 +-- samples/cpp/em.cpp | 8 +- samples/cpp/points_classifier.cpp | 506 +++++++--------------- 4 files changed, 189 insertions(+), 388 deletions(-) diff --git a/modules/ml/src/ann_mlp.cpp b/modules/ml/src/ann_mlp.cpp index 19f5572e85..750b3e67db 100644 --- a/modules/ml/src/ann_mlp.cpp +++ b/modules/ml/src/ann_mlp.cpp @@ -262,9 +262,9 @@ public: int cols = layer_sizes[j]; layer_out = Mat(dn, cols, CV_64F, data); - Mat w = weights[i].rowRange(0, layer_in.cols); + Mat w = weights[j].rowRange(0, layer_in.cols); gemm(layer_in, w, 1, noArray(), 0, layer_out); - calc_activ_func( layer_out, weights[i] ); + calc_activ_func( layer_out, weights[j] ); layer_in = layer_out; } @@ -682,6 +682,8 @@ public: train_backprop( inputs, outputs, sw, termcrit ) : train_rprop( inputs, outputs, sw, termcrit ); + trained = true; + return iter; } diff --git a/samples/cpp/bagofwords_classification.cpp b/samples/cpp/bagofwords_classification.cpp index ef4f3c73c6..320acf389c 100644 --- a/samples/cpp/bagofwords_classification.cpp +++ b/samples/cpp/bagofwords_classification.cpp @@ -23,6 +23,7 @@ #define DEBUG_DESC_PROGRESS using namespace cv; +using namespace cv::ml; using namespace std; const string paramsFile = "params.xml"; @@ -677,7 +678,7 @@ void VocData::writeClassifierResultsFile( const string& out_dir, const string& o result_file.close(); } else { string err_msg = "could not open classifier results file '" + output_file + "' for writing. Before running for the first time, a 'results' subdirectory should be created within the VOC dataset base directory. e.g. if the VOC data is stored in /VOC/VOC2010 then the path /VOC/results must be created."; - CV_Error(CV_StsError,err_msg.c_str()); + CV_Error(Error::StsError,err_msg.c_str()); } } @@ -701,9 +702,9 @@ void VocData::writeClassifierResultsFile( const string& out_dir, const string& o string VocData::getResultsFilename(const string& obj_class, const VocTask task, const ObdDatasetType dataset, const int competition, const int number) { if ((competition < 1) && (competition != -1)) - CV_Error(CV_StsBadArg,"competition argument should be a positive non-zero number or -1 to accept the default"); + CV_Error(Error::StsBadArg,"competition argument should be a positive non-zero number or -1 to accept the default"); if ((number < 1) && (number != -1)) - CV_Error(CV_StsBadArg,"number argument should be a positive non-zero number or -1 to accept the default"); + CV_Error(Error::StsBadArg,"number argument should be a positive non-zero number or -1 to accept the default"); string dset, task_type; @@ -815,7 +816,7 @@ void VocData::calcClassifierPrecRecall(const string& input_file, vector& scoregt_file.close(); } else { string err_msg = "could not open scoregt file '" + scoregt_file_str + "' for writing."; - CV_Error(CV_StsError,err_msg.c_str()); + CV_Error(Error::StsError,err_msg.c_str()); } } @@ -974,7 +975,7 @@ void VocData::calcClassifierConfMatRow(const string& obj_class, const vector& if (!gtfile.is_open()) { string err_msg = "could not open VOC ground truth textfile '" + filename + "'."; - CV_Error(CV_StsError,err_msg.c_str()); + CV_Error(Error::StsError,err_msg.c_str()); } string line; @@ -1462,7 +1463,7 @@ void VocData::readClassifierGroundTruth(const string& filename, vector& image_codes.push_back(image); object_present.push_back(obj_present == 1); } else { - if (!gtfile.eof()) CV_Error(CV_StsParseError,"error parsing VOC ground truth textfile."); + if (!gtfile.eof()) CV_Error(Error::StsParseError,"error parsing VOC ground truth textfile."); } } gtfile.close(); @@ -1488,13 +1489,13 @@ void VocData::readClassifierResultsFile(const string& input_file, vector image_codes.push_back(image); scores.push_back(score); } else { - if(!result_file.eof()) CV_Error(CV_StsParseError,"error parsing VOC classifier results file."); + if(!result_file.eof()) CV_Error(Error::StsParseError,"error parsing VOC classifier results file."); } } result_file.close(); } else { string err_msg = "could not open classifier results file '" + input_file + "' for reading."; - CV_Error(CV_StsError,err_msg.c_str()); + CV_Error(Error::StsError,err_msg.c_str()); } } @@ -1545,13 +1546,13 @@ void VocData::readDetectorResultsFile(const string& input_file, vector& bounding_boxes[image_idx].push_back(bounding_box); } } else { - if(!result_file.eof()) CV_Error(CV_StsParseError,"error parsing VOC detector results file."); + if(!result_file.eof()) CV_Error(Error::StsParseError,"error parsing VOC detector results file."); } } result_file.close(); } else { string err_msg = "could not open detector results file '" + input_file + "' for reading."; - CV_Error(CV_StsError,err_msg.c_str()); + CV_Error(Error::StsError,err_msg.c_str()); } } @@ -1595,23 +1596,23 @@ void VocData::extractVocObjects(const string filename, vector& object //object class ------------- - if (extractXMLBlock(object_contents, "name", 0, tag_contents) == -1) CV_Error(CV_StsError,"missing tag in object definition of '" + filename + "'"); + if (extractXMLBlock(object_contents, "name", 0, tag_contents) == -1) CV_Error(Error::StsError,"missing tag in object definition of '" + filename + "'"); object.object_class.swap(tag_contents); //object bounding box ------------- int xmax, xmin, ymax, ymin; - if (extractXMLBlock(object_contents, "xmax", 0, tag_contents) == -1) CV_Error(CV_StsError,"missing tag in object definition of '" + filename + "'"); + if (extractXMLBlock(object_contents, "xmax", 0, tag_contents) == -1) CV_Error(Error::StsError,"missing tag in object definition of '" + filename + "'"); xmax = stringToInteger(tag_contents); - if (extractXMLBlock(object_contents, "xmin", 0, tag_contents) == -1) CV_Error(CV_StsError,"missing tag in object definition of '" + filename + "'"); + if (extractXMLBlock(object_contents, "xmin", 0, tag_contents) == -1) CV_Error(Error::StsError,"missing tag in object definition of '" + filename + "'"); xmin = stringToInteger(tag_contents); - if (extractXMLBlock(object_contents, "ymax", 0, tag_contents) == -1) CV_Error(CV_StsError,"missing tag in object definition of '" + filename + "'"); + if (extractXMLBlock(object_contents, "ymax", 0, tag_contents) == -1) CV_Error(Error::StsError,"missing tag in object definition of '" + filename + "'"); ymax = stringToInteger(tag_contents); - if (extractXMLBlock(object_contents, "ymin", 0, tag_contents) == -1) CV_Error(CV_StsError,"missing tag in object definition of '" + filename + "'"); + if (extractXMLBlock(object_contents, "ymin", 0, tag_contents) == -1) CV_Error(Error::StsError,"missing tag in object definition of '" + filename + "'"); ymin = stringToInteger(tag_contents); object.boundingBox.x = xmin-1; //convert to 0-based indexing @@ -1714,11 +1715,11 @@ void VocData::extractDataFromResultsFilename(const string& input_file, string& c size_t fnameend = input_file_std.rfind(".txt"); if ((fnamestart == input_file_std.npos) || (fnameend == input_file_std.npos)) - CV_Error(CV_StsError,"Could not extract filename of results file."); + CV_Error(Error::StsError,"Could not extract filename of results file."); ++fnamestart; if (fnamestart >= fnameend) - CV_Error(CV_StsError,"Could not extract filename of results file."); + CV_Error(Error::StsError,"Could not extract filename of results file."); //extract dataset and class names, triggering exception if the filename format is not correct string filename = input_file_std.substr(fnamestart, fnameend-fnamestart); @@ -1729,11 +1730,11 @@ void VocData::extractDataFromResultsFilename(const string& input_file, string& c size_t classend = filename.find("_",classstart+1); if (classend == filename.npos) classend = filename.size(); if ((datasetstart == filename.npos) || (classstart == filename.npos)) - CV_Error(CV_StsError,"Error parsing results filename. Is it in standard format of 'comp_{cls/det}__.txt'?"); + CV_Error(Error::StsError,"Error parsing results filename. Is it in standard format of 'comp_{cls/det}__.txt'?"); ++datasetstart; ++classstart; if (((datasetstart-classstart) < 1) || ((classend-datasetstart) < 1)) - CV_Error(CV_StsError,"Error parsing results filename. Is it in standard format of 'comp_{cls/det}__.txt'?"); + CV_Error(Error::StsError,"Error parsing results filename. Is it in standard format of 'comp_{cls/det}__.txt'?"); dataset_name = filename.substr(datasetstart,classstart-datasetstart-1); class_name = filename.substr(classstart,classend-classstart); @@ -1781,7 +1782,7 @@ bool VocData::getClassifierGroundTruthImage(const string& obj_class, const strin return m_classifier_gt_all_present[std::distance(m_classifier_gt_all_ids.begin(),it)] != 0; } else { string err_msg = "could not find classifier ground truth for image '" + id + "' and class '" + obj_class + "'"; - CV_Error(CV_StsError,err_msg.c_str()); + CV_Error(Error::StsError,err_msg.c_str()); } return true; @@ -1814,7 +1815,7 @@ void VocData::getSortOrder(const vector& values, vector& order, b void VocData::readFileToString(const string filename, string& file_contents) { std::ifstream ifs(filename.c_str()); - if (!ifs.is_open()) CV_Error(CV_StsError,"could not open text file"); + if (!ifs.is_open()) CV_Error(Error::StsError,"could not open text file"); stringstream oss; oss << ifs.rdbuf(); @@ -1829,7 +1830,7 @@ int VocData::stringToInteger(const string input_str) stringstream ss(input_str); if ((ss >> result).fail()) { - CV_Error(CV_StsBadArg,"could not perform string to integer conversion"); + CV_Error(Error::StsBadArg,"could not perform string to integer conversion"); } return result; } @@ -1841,7 +1842,7 @@ string VocData::integerToString(const int input_int) stringstream ss; if ((ss << input_int).fail()) { - CV_Error(CV_StsBadArg,"could not perform integer to string conversion"); + CV_Error(Error::StsBadArg,"could not perform integer to string conversion"); } result = ss.str(); return result; @@ -2325,7 +2326,7 @@ static void removeBowImageDescriptorsByCount( vector& images, vector em_model = EM::train( samples, noArray(), labels, noArray(), + EM::Params(N, EM::COV_MAT_SPHERICAL, + TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 300, 0.1))); // classify every image pixel for( i = 0; i < img.rows; i++ ) @@ -44,7 +46,7 @@ int main( int /*argc*/, char** /*argv*/ ) { sample.at(0) = (float)j; sample.at(1) = (float)i; - int response = cvRound(em_model.predict( sample )[1]); + int response = cvRound(em_model->predict2( sample, noArray() )[1]); Scalar c = colors[response]; circle( img, Point(j, i), 1, c*0.75, FILLED ); diff --git a/samples/cpp/points_classifier.cpp b/samples/cpp/points_classifier.cpp index 26858da886..0a742f34e9 100644 --- a/samples/cpp/points_classifier.cpp +++ b/samples/cpp/points_classifier.cpp @@ -12,6 +12,7 @@ using namespace std; using namespace cv; +using namespace cv::ml; const Scalar WHITE_COLOR = Scalar(255,255,255); const string winName = "points"; @@ -22,18 +23,20 @@ RNG rng; vector trainedPoints; vector trainedPointsMarkers; -vector classColors; - -#define _NBC_ 0 // normal Bayessian classifier -#define _KNN_ 0 // k nearest neighbors classifier -#define _SVM_ 0 // support vectors machine +const int MAX_CLASSES = 2; +vector classColors(MAX_CLASSES); +int currentClass = 0; +vector classCounters(MAX_CLASSES); + +#define _NBC_ 1 // normal Bayessian classifier +#define _KNN_ 1 // k nearest neighbors classifier +#define _SVM_ 1 // support vectors machine #define _DT_ 1 // decision tree -#define _BT_ 0 // ADA Boost +#define _BT_ 1 // ADA Boost #define _GBT_ 0 // gradient boosted trees -#define _RF_ 0 // random forest -#define _ERT_ 0 // extremely randomized trees -#define _ANN_ 0 // artificial neural networks -#define _EM_ 0 // expectation-maximization +#define _RF_ 1 // random forest +#define _ANN_ 1 // artificial neural networks +#define _EM_ 1 // expectation-maximization static void on_mouse( int event, int x, int y, int /*flags*/, void* ) { @@ -44,76 +47,43 @@ static void on_mouse( int event, int x, int y, int /*flags*/, void* ) if( event == EVENT_LBUTTONUP ) { - if( classColors.empty() ) - return; - trainedPoints.push_back( Point(x,y) ); - trainedPointsMarkers.push_back( (int)(classColors.size()-1) ); + trainedPointsMarkers.push_back( currentClass ); + classCounters[currentClass]++; updateFlag = true; } - else if( event == EVENT_RBUTTONUP ) - { -#if _BT_ - if( classColors.size() < 2 ) - { -#endif - classColors.push_back( Scalar((uchar)rng(256), (uchar)rng(256), (uchar)rng(256)) ); - updateFlag = true; -#if _BT_ - } - else - cout << "New class can not be added, because CvBoost can only be used for 2-class classification" << endl; -#endif - - } //draw if( updateFlag ) { img = Scalar::all(0); - // put the text - stringstream text; - text << "current class " << classColors.size()-1; - putText( img, text.str(), Point(10,25), FONT_HERSHEY_SIMPLEX, 0.8f, WHITE_COLOR, 2 ); - - text.str(""); - text << "total classes " << classColors.size(); - putText( img, text.str(), Point(10,50), FONT_HERSHEY_SIMPLEX, 0.8f, WHITE_COLOR, 2 ); - - text.str(""); - text << "total points " << trainedPoints.size(); - putText(img, text.str(), Point(10,75), FONT_HERSHEY_SIMPLEX, 0.8f, WHITE_COLOR, 2 ); - // draw points for( size_t i = 0; i < trainedPoints.size(); i++ ) - circle( img, trainedPoints[i], 5, classColors[trainedPointsMarkers[i]], -1 ); + { + Vec3b c = classColors[trainedPointsMarkers[i]]; + circle( img, trainedPoints[i], 5, Scalar(c), -1 ); + } imshow( winName, img ); } } -static void prepare_train_data( Mat& samples, Mat& classes ) +static Mat prepare_train_samples(const vector& pts) { - Mat( trainedPoints ).copyTo( samples ); - Mat( trainedPointsMarkers ).copyTo( classes ); - - // reshape trainData and change its type - samples = samples.reshape( 1, samples.rows ); - samples.convertTo( samples, CV_32FC1 ); + Mat samples; + Mat(pts).reshape(1, (int)pts.size()).convertTo(samples, CV_32F); + return samples; } -#if _NBC_ -static void find_decision_boundary_NBC() +static Ptr prepare_train_data() { - img.copyTo( imgDst ); - - Mat trainSamples, trainClasses; - prepare_train_data( trainSamples, trainClasses ); - - // learn classifier - CvNormalBayesClassifier normalBayesClassifier( trainSamples, trainClasses ); + Mat samples = prepare_train_samples(trainedPoints); + return TrainData::create(samples, ROW_SAMPLE, Mat(trainedPointsMarkers)); +} +static void predict_and_paint(const Ptr& model, Mat& dst) +{ Mat testSample( 1, 2, CV_32FC1 ); for( int y = 0; y < img.rows; y += testStep ) { @@ -122,328 +92,146 @@ static void find_decision_boundary_NBC() testSample.at(0) = (float)x; testSample.at(1) = (float)y; - int response = (int)normalBayesClassifier.predict( testSample ); - circle( imgDst, Point(x,y), 1, classColors[response] ); + int response = (int)model->predict( testSample ); + dst.at(y, x) = classColors[response]; } } } -#endif - -#if _KNN_ -static void find_decision_boundary_KNN( int K ) +#if _NBC_ +static void find_decision_boundary_NBC() { - img.copyTo( imgDst ); - - Mat trainSamples, trainClasses; - prepare_train_data( trainSamples, trainClasses ); - // learn classifier -#if defined HAVE_OPENCV_OCL && _OCL_KNN_ - cv::ocl::KNearestNeighbour knnClassifier; - Mat temp, result; - knnClassifier.train(trainSamples, trainClasses, temp, false, K); - cv::ocl::oclMat testSample_ocl, reslut_ocl; -#else - CvKNearest knnClassifier( trainSamples, trainClasses, Mat(), false, K ); -#endif + Ptr normalBayesClassifier = NormalBayesClassifier::create(); + normalBayesClassifier->train(prepare_train_data()); - Mat testSample( 1, 2, CV_32FC1 ); - for( int y = 0; y < img.rows; y += testStep ) - { - for( int x = 0; x < img.cols; x += testStep ) - { - testSample.at(0) = (float)x; - testSample.at(1) = (float)y; -#if defined HAVE_OPENCV_OCL && _OCL_KNN_ - testSample_ocl.upload(testSample); + predict_and_paint(normalBayesClassifier, imgDst); +} +#endif - knnClassifier.find_nearest(testSample_ocl, K, reslut_ocl); - reslut_ocl.download(result); - int response = saturate_cast(result.at(0)); - circle(imgDst, Point(x, y), 1, classColors[response]); -#else +#if _KNN_ +static void find_decision_boundary_KNN( int K ) +{ + Ptr knn = KNearest::create(true); + knn->setDefaultK(K); + knn->train(prepare_train_data()); - int response = (int)knnClassifier.find_nearest( testSample, K ); - circle( imgDst, Point(x,y), 1, classColors[response] ); -#endif - } - } + predict_and_paint(knn, imgDst); } #endif #if _SVM_ -static void find_decision_boundary_SVM( CvSVMParams params ) +static void find_decision_boundary_SVM( SVM::Params params ) { - img.copyTo( imgDst ); - - Mat trainSamples, trainClasses; - prepare_train_data( trainSamples, trainClasses ); + Ptr svm = SVM::create(params); + svm->train(prepare_train_data()); - // learn classifier -#if defined HAVE_OPENCV_OCL && _OCL_SVM_ - cv::ocl::CvSVM_OCL svmClassifier(trainSamples, trainClasses, Mat(), Mat(), params); -#else - CvSVM svmClassifier( trainSamples, trainClasses, Mat(), Mat(), params ); -#endif + predict_and_paint(svm, imgDst); - Mat testSample( 1, 2, CV_32FC1 ); - for( int y = 0; y < img.rows; y += testStep ) + Mat sv = svm->getSupportVectors(); + for( int i = 0; i < sv.rows; i++ ) { - for( int x = 0; x < img.cols; x += testStep ) - { - testSample.at(0) = (float)x; - testSample.at(1) = (float)y; - - int response = (int)svmClassifier.predict( testSample ); - circle( imgDst, Point(x,y), 2, classColors[response], 1 ); - } + const float* supportVector = sv.ptr(i); + circle( imgDst, Point(saturate_cast(supportVector[0]),saturate_cast(supportVector[1])), 5, Scalar(255,255,255), -1 ); } - - - for( int i = 0; i < svmClassifier.get_support_vector_count(); i++ ) - { - const float* supportVector = svmClassifier.get_support_vector(i); - circle( imgDst, Point(saturate_cast(supportVector[0]),saturate_cast(supportVector[1])), 5, CV_RGB(255,255,255), -1 ); - } - } #endif #if _DT_ static void find_decision_boundary_DT() { - img.copyTo( imgDst ); - - Mat trainSamples, trainClasses; - prepare_train_data( trainSamples, trainClasses ); - - // learn classifier - CvDTree dtree; - - Mat var_types( 1, trainSamples.cols + 1, CV_8UC1, Scalar(CV_VAR_ORDERED) ); - var_types.at( trainSamples.cols ) = CV_VAR_CATEGORICAL; - - CvDTreeParams params; - params.max_depth = 8; - params.min_sample_count = 2; - params.use_surrogates = false; - params.cv_folds = 0; // the number of cross-validation folds - params.use_1se_rule = false; - params.truncate_pruned_tree = false; - - dtree.train( trainSamples, CV_ROW_SAMPLE, trainClasses, - Mat(), Mat(), var_types, Mat(), params ); - - Mat testSample(1, 2, CV_32FC1 ); - for( int y = 0; y < img.rows; y += testStep ) - { - for( int x = 0; x < img.cols; x += testStep ) - { - testSample.at(0) = (float)x; - testSample.at(1) = (float)y; - - int response = (int)dtree.predict( testSample )->value; - circle( imgDst, Point(x,y), 2, classColors[response], 1 ); - } - } + DTrees::Params params; + params.maxDepth = 8; + params.minSampleCount = 2; + params.useSurrogates = false; + params.CVFolds = 0; // the number of cross-validation folds + params.use1SERule = false; + params.truncatePrunedTree = false; + + Ptr dtree = DTrees::create(params); + dtree->train(prepare_train_data()); + + predict_and_paint(dtree, imgDst); } #endif #if _BT_ -void find_decision_boundary_BT() +static void find_decision_boundary_BT() { - img.copyTo( imgDst ); - - Mat trainSamples, trainClasses; - prepare_train_data( trainSamples, trainClasses ); - - // learn classifier - CvBoost boost; - - Mat var_types( 1, trainSamples.cols + 1, CV_8UC1, Scalar(CV_VAR_ORDERED) ); - var_types.at( trainSamples.cols ) = CV_VAR_CATEGORICAL; - - CvBoostParams params( CvBoost::DISCRETE, // boost_type - 100, // weak_count - 0.95, // weight_trim_rate - 2, // max_depth - false, //use_surrogates - 0 // priors - ); - - boost.train( trainSamples, CV_ROW_SAMPLE, trainClasses, Mat(), Mat(), var_types, Mat(), params ); - - Mat testSample(1, 2, CV_32FC1 ); - for( int y = 0; y < img.rows; y += testStep ) - { - for( int x = 0; x < img.cols; x += testStep ) - { - testSample.at(0) = (float)x; - testSample.at(1) = (float)y; - - int response = (int)boost.predict( testSample ); - circle( imgDst, Point(x,y), 2, classColors[response], 1 ); - } - } + Boost::Params params( Boost::DISCRETE, // boost_type + 100, // weak_count + 0.95, // weight_trim_rate + 2, // max_depth + false, //use_surrogates + Mat() // priors + ); + + Ptr boost = Boost::create(params); + boost->train(prepare_train_data()); + predict_and_paint(boost, imgDst); } #endif #if _GBT_ -void find_decision_boundary_GBT() +static void find_decision_boundary_GBT() { - img.copyTo( imgDst ); - - Mat trainSamples, trainClasses; - prepare_train_data( trainSamples, trainClasses ); - - // learn classifier - CvGBTrees gbtrees; - - Mat var_types( 1, trainSamples.cols + 1, CV_8UC1, Scalar(CV_VAR_ORDERED) ); - var_types.at( trainSamples.cols ) = CV_VAR_CATEGORICAL; - - CvGBTreesParams params( CvGBTrees::DEVIANCE_LOSS, // loss_function_type - 100, // weak_count - 0.1f, // shrinkage - 1.0f, // subsample_portion - 2, // max_depth - false // use_surrogates ) - ); - - gbtrees.train( trainSamples, CV_ROW_SAMPLE, trainClasses, Mat(), Mat(), var_types, Mat(), params ); - - Mat testSample(1, 2, CV_32FC1 ); - for( int y = 0; y < img.rows; y += testStep ) - { - for( int x = 0; x < img.cols; x += testStep ) - { - testSample.at(0) = (float)x; - testSample.at(1) = (float)y; + GBTrees::Params params( GBTrees::DEVIANCE_LOSS, // loss_function_type + 100, // weak_count + 0.1f, // shrinkage + 1.0f, // subsample_portion + 2, // max_depth + false // use_surrogates ) + ); - int response = (int)gbtrees.predict( testSample ); - circle( imgDst, Point(x,y), 2, classColors[response], 1 ); - } - } + Ptr gbtrees = GBTrees::create(params); + gbtrees->train(prepare_train_data()); + predict_and_paint(gbtrees, imgDst); } - #endif #if _RF_ -void find_decision_boundary_RF() +static void find_decision_boundary_RF() { - img.copyTo( imgDst ); - - Mat trainSamples, trainClasses; - prepare_train_data( trainSamples, trainClasses ); - - // learn classifier - CvRTrees rtrees; - CvRTParams params( 4, // max_depth, + RTrees::Params params( 4, // max_depth, 2, // min_sample_count, 0.f, // regression_accuracy, false, // use_surrogates, 16, // max_categories, - 0, // priors, + Mat(), // priors, false, // calc_var_importance, 1, // nactive_vars, - 5, // max_num_of_trees_in_the_forest, - 0, // forest_accuracy, - CV_TERMCRIT_ITER // termcrit_type + TermCriteria(TermCriteria::MAX_ITER, 5, 0) // max_num_of_trees_in_the_forest, ); - rtrees.train( trainSamples, CV_ROW_SAMPLE, trainClasses, Mat(), Mat(), Mat(), Mat(), params ); - - Mat testSample(1, 2, CV_32FC1 ); - for( int y = 0; y < img.rows; y += testStep ) - { - for( int x = 0; x < img.cols; x += testStep ) - { - testSample.at(0) = (float)x; - testSample.at(1) = (float)y; - - int response = (int)rtrees.predict( testSample ); - circle( imgDst, Point(x,y), 2, classColors[response], 1 ); - } - } + Ptr rtrees = RTrees::create(params); + rtrees->train(prepare_train_data()); + predict_and_paint(rtrees, imgDst); } #endif -#if _ERT_ -void find_decision_boundary_ERT() -{ - img.copyTo( imgDst ); - - Mat trainSamples, trainClasses; - prepare_train_data( trainSamples, trainClasses ); - - // learn classifier - CvERTrees ertrees; - - Mat var_types( 1, trainSamples.cols + 1, CV_8UC1, Scalar(CV_VAR_ORDERED) ); - var_types.at( trainSamples.cols ) = CV_VAR_CATEGORICAL; - - CvRTParams params( 4, // max_depth, - 2, // min_sample_count, - 0.f, // regression_accuracy, - false, // use_surrogates, - 16, // max_categories, - 0, // priors, - false, // calc_var_importance, - 1, // nactive_vars, - 5, // max_num_of_trees_in_the_forest, - 0, // forest_accuracy, - CV_TERMCRIT_ITER // termcrit_type - ); - - ertrees.train( trainSamples, CV_ROW_SAMPLE, trainClasses, Mat(), Mat(), var_types, Mat(), params ); - - Mat testSample(1, 2, CV_32FC1 ); - for( int y = 0; y < img.rows; y += testStep ) - { - for( int x = 0; x < img.cols; x += testStep ) - { - testSample.at(0) = (float)x; - testSample.at(1) = (float)y; - - int response = (int)ertrees.predict( testSample ); - circle( imgDst, Point(x,y), 2, classColors[response], 1 ); - } - } -} -#endif - #if _ANN_ -void find_decision_boundary_ANN( const Mat& layer_sizes ) +static void find_decision_boundary_ANN( const Mat& layer_sizes ) { - img.copyTo( imgDst ); + ANN_MLP::Params params(TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS, 300, FLT_EPSILON), + ANN_MLP::Params::BACKPROP, 0.001); + Ptr ann = ANN_MLP::create(layer_sizes, params, ANN_MLP::SIGMOID_SYM, 1, 1 ); - Mat trainSamples, trainClasses; - prepare_train_data( trainSamples, trainClasses ); - - // prerare trainClasses - trainClasses.create( trainedPoints.size(), classColors.size(), CV_32FC1 ); - for( int i = 0; i < trainClasses.rows; i++ ) + Mat trainClasses = Mat::zeros( trainedPoints.size(), classColors.size(), CV_32FC1 ); + for( int i = 0; i < trainClasses.rows; i++ ) { - for( int k = 0; k < trainClasses.cols; k++ ) - { - if( k == trainedPointsMarkers[i] ) - trainClasses.at(i,k) = 1; - else - trainClasses.at(i,k) = 0; - } + trainClasses.at(i, trainedPointsMarkers[i]) = 1.f; } - Mat weights( 1, trainedPoints.size(), CV_32FC1, Scalar::all(1) ); + Mat samples = prepare_train_samples(trainedPoints); + Ptr tdata = TrainData::create(samples, ROW_SAMPLE, trainClasses); - // learn classifier - CvANN_MLP ann( layer_sizes, CvANN_MLP::SIGMOID_SYM, 1, 1 ); - ann.train( trainSamples, trainClasses, weights ); + ann->train(tdata); Mat testSample( 1, 2, CV_32FC1 ); + Mat outputs; for( int y = 0; y < img.rows; y += testStep ) { for( int x = 0; x < img.cols; x += testStep ) @@ -451,49 +239,50 @@ void find_decision_boundary_ANN( const Mat& layer_sizes ) testSample.at(0) = (float)x; testSample.at(1) = (float)y; - Mat outputs( 1, classColors.size(), CV_32FC1, testSample.data ); - ann.predict( testSample, outputs ); + ann->predict( testSample, outputs ); Point maxLoc; minMaxLoc( outputs, 0, 0, 0, &maxLoc ); - circle( imgDst, Point(x,y), 2, classColors[maxLoc.x], 1 ); + imgDst.at(y, x) = classColors[maxLoc.x]; } } } #endif #if _EM_ -void find_decision_boundary_EM() +static void find_decision_boundary_EM() { img.copyTo( imgDst ); - Mat trainSamples, trainClasses; - prepare_train_data( trainSamples, trainClasses ); - - vector em_models(classColors.size()); + Mat samples = prepare_train_samples(trainedPoints); - CV_Assert((int)trainClasses.total() == trainSamples.rows); - CV_Assert((int)trainClasses.type() == CV_32SC1); + int i, j, nmodels = (int)classColors.size(); + vector > em_models(nmodels); + Mat modelSamples; - for(size_t modelIndex = 0; modelIndex < em_models.size(); modelIndex++) + for( i = 0; i < nmodels; i++ ) { const int componentCount = 3; - em_models[modelIndex] = EM(componentCount, cv::EM::COV_MAT_DIAGONAL); - Mat modelSamples; - for(int sampleIndex = 0; sampleIndex < trainSamples.rows; sampleIndex++) + modelSamples.release(); + for( j = 0; j < samples.rows; j++ ) { - if(trainClasses.at(sampleIndex) == (int)modelIndex) - modelSamples.push_back(trainSamples.row(sampleIndex)); + if( trainedPointsMarkers[j] == i ) + modelSamples.push_back(samples.row(j)); } // learn models - if(!modelSamples.empty()) - em_models[modelIndex].train(modelSamples); + if( !modelSamples.empty() ) + { + em_models[i] = EM::train(modelSamples, noArray(), noArray(), noArray(), + EM::Params(componentCount, EM::COV_MAT_DIAGONAL)); + } } // classify coordinate plane points using the bayes classifier, i.e. // y(x) = arg max_i=1_modelsCount likelihoods_i(x) Mat testSample(1, 2, CV_32FC1 ); + Mat logLikelihoods(1, nmodels, CV_64FC1, Scalar(-DBL_MAX)); + for( int y = 0; y < img.rows; y += testStep ) { for( int x = 0; x < img.cols; x += testStep ) @@ -501,17 +290,14 @@ void find_decision_boundary_EM() testSample.at(0) = (float)x; testSample.at(1) = (float)y; - Mat logLikelihoods(1, em_models.size(), CV_64FC1, Scalar(-DBL_MAX)); - for(size_t modelIndex = 0; modelIndex < em_models.size(); modelIndex++) + for( i = 0; i < nmodels; i++ ) { - if(em_models[modelIndex].isTrained()) - logLikelihoods.at(modelIndex) = em_models[modelIndex].predict(testSample)[0]; + if( !em_models[i].empty() ) + logLikelihoods.at(i) = em_models[i]->predict2(testSample, noArray())[0]; } Point maxLoc; minMaxLoc(logLikelihoods, 0, 0, 0, &maxLoc); - - int response = maxLoc.x; - circle( imgDst, Point(x,y), 2, classColors[response], 1 ); + imgDst.at(y, x) = classColors[maxLoc.x]; } } } @@ -520,7 +306,7 @@ void find_decision_boundary_EM() int main() { cout << "Use:" << endl - << " right mouse button - to add new class;" << endl + << " key '0' .. '1' - switch to class #n" << endl << " left mouse button - to add new point;" << endl << " key 'r' - to run the ML model;" << endl << " key 'i' - to init (clear) the data." << endl << endl; @@ -532,6 +318,9 @@ int main() imshow( "points", img ); setMouseCallback( "points", on_mouse ); + classColors[0] = Vec3b(0, 255, 0); + classColors[1] = Vec3b(0, 0, 255); + for(;;) { uchar key = (uchar)waitKey(); @@ -542,15 +331,28 @@ int main() { img = Scalar::all(0); - classColors.clear(); trainedPoints.clear(); trainedPointsMarkers.clear(); + classCounters.assign(MAX_CLASSES, 0); imshow( winName, img ); } + if( key == '0' || key == '1' ) + { + currentClass = key - '0'; + } + if( key == 'r' ) // run { + double minVal = 0; + minMaxLoc(classCounters, &minVal, 0, 0, 0); + if( minVal == 0 ) + { + printf("each class should have at least 1 point\n"); + continue; + } + img.copyTo( imgDst ); #if _NBC_ find_decision_boundary_NBC(); namedWindow( "NormalBayesClassifier", WINDOW_AUTOSIZE ); @@ -570,16 +372,16 @@ int main() #if _SVM_ //(1)-(2)separable and not sets - CvSVMParams params; - params.svm_type = CvSVM::C_SVC; - params.kernel_type = CvSVM::POLY; //CvSVM::LINEAR; + SVM::Params params; + params.svmType = SVM::C_SVC; + params.kernelType = SVM::POLY; //CvSVM::LINEAR; params.degree = 0.5; params.gamma = 1; params.coef0 = 1; params.C = 1; params.nu = 0.5; params.p = 0; - params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER, 1000, 0.01); + params.termCrit = TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS, 1000, 0.01); find_decision_boundary_SVM( params ); namedWindow( "classificationSVM1", WINDOW_AUTOSIZE ); @@ -615,12 +417,6 @@ int main() imshow( "RF", imgDst); #endif -#if _ERT_ - find_decision_boundary_ERT(); - namedWindow( "ERT", WINDOW_AUTOSIZE ); - imshow( "ERT", imgDst); -#endif - #if _ANN_ Mat layer_sizes1( 1, 3, CV_32SC1 ); layer_sizes1.at(0) = 2; From 3c5eb7de8470af58a406dfe82800d89a648bec9a Mon Sep 17 00:00:00 2001 From: Samson Yilma Date: Wed, 30 Jul 2014 18:53:33 -0400 Subject: [PATCH 063/189] updated documentation for decomposeHomography --- .../calib3d/doc/camera_calibration_and_3d_reconstruction.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst index 0170904a6d..0e47e7f632 100644 --- a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst +++ b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst @@ -764,7 +764,7 @@ Decompose a homography matrix to rotation(s), translation(s) and plane normal(s) .. ocv:function:: int decomposeHomographyMat( InputArray H, InputArray K, OutputArrayOfArrays rotations, OutputArrayOfArrays translations, OutputArrayOfArrays normals) - :param H: The input homography matrix. + :param H: The input homography matrix between two images. :param K: The input intrinsic camera calibration matrix. From 3b608fa48962e217fd56121972ceb86dc3e80926 Mon Sep 17 00:00:00 2001 From: Samson Yilma Date: Wed, 30 Jul 2014 19:32:37 -0400 Subject: [PATCH 064/189] added comment. --- modules/calib3d/src/homography_decomp.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/calib3d/src/homography_decomp.cpp b/modules/calib3d/src/homography_decomp.cpp index 7a5c31b43c..1a642612f0 100644 --- a/modules/calib3d/src/homography_decomp.cpp +++ b/modules/calib3d/src/homography_decomp.cpp @@ -431,6 +431,7 @@ void HomographyDecompInria::decompose(std::vector& camMotions) } //namespace HomographyDecomposition +// function decomposes image-to-image homography to rotation and translation matrices int decomposeHomographyMat(InputArray _H, InputArray _K, OutputArrayOfArrays _rotations, From 8def44047a76fd63659dc5b2b9a3329941572aa3 Mon Sep 17 00:00:00 2001 From: "Fco. Javier Delgado del Hoyo" Date: Thu, 31 Jul 2014 09:08:29 +0200 Subject: [PATCH 065/189] Removed cvCalcOpticalFlowBM from performance test --- modules/cudaoptflow/perf/perf_optflow.cpp | 26 +---------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/modules/cudaoptflow/perf/perf_optflow.cpp b/modules/cudaoptflow/perf/perf_optflow.cpp index 6c312ad0be..71ab895082 100644 --- a/modules/cudaoptflow/perf/perf_optflow.cpp +++ b/modules/cudaoptflow/perf/perf_optflow.cpp @@ -41,7 +41,6 @@ //M*/ #include "perf_precomp.hpp" -#include "opencv2/legacy.hpp" using namespace std; using namespace testing; @@ -389,24 +388,6 @@ PERF_TEST_P(ImagePair, OpticalFlowDual_TVL1, ////////////////////////////////////////////////////// // OpticalFlowBM -void calcOpticalFlowBM(const cv::Mat& prev, const cv::Mat& curr, - cv::Size bSize, cv::Size shiftSize, cv::Size maxRange, int usePrevious, - cv::Mat& velx, cv::Mat& vely) -{ - cv::Size sz((curr.cols - bSize.width + shiftSize.width)/shiftSize.width, (curr.rows - bSize.height + shiftSize.height)/shiftSize.height); - - velx.create(sz, CV_32FC1); - vely.create(sz, CV_32FC1); - - CvMat cvprev = prev; - CvMat cvcurr = curr; - - CvMat cvvelx = velx; - CvMat cvvely = vely; - - cvCalcOpticalFlowBM(&cvprev, &cvcurr, bSize, shiftSize, maxRange, usePrevious, &cvvelx, &cvvely); -} - PERF_TEST_P(ImagePair, OpticalFlowBM, Values(make_pair("gpu/opticalflow/frame0.png", "gpu/opticalflow/frame1.png"))) { @@ -435,12 +416,7 @@ PERF_TEST_P(ImagePair, OpticalFlowBM, } else { - cv::Mat u, v; - - TEST_CYCLE() calcOpticalFlowBM(frame0, frame1, block_size, shift_size, max_range, false, u, v); - - CPU_SANITY_CHECK(u); - CPU_SANITY_CHECK(v); + FAIL_NO_CPU(); } } From fd10557e78731885370c2df78af7152fe8ee82c2 Mon Sep 17 00:00:00 2001 From: "Fco. Javier Delgado del Hoyo" Date: Thu, 31 Jul 2014 09:21:44 +0200 Subject: [PATCH 066/189] Removed cvCalcOpticalFlowBM from cudaoptflow test --- modules/cudaoptflow/test/test_optflow.cpp | 30 +---------------------- 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/modules/cudaoptflow/test/test_optflow.cpp b/modules/cudaoptflow/test/test_optflow.cpp index 110fed0339..d537f5b4c2 100644 --- a/modules/cudaoptflow/test/test_optflow.cpp +++ b/modules/cudaoptflow/test/test_optflow.cpp @@ -41,7 +41,6 @@ //M*/ #include "test_precomp.hpp" -#include "opencv2/legacy.hpp" #ifdef HAVE_CUDA @@ -373,32 +372,11 @@ INSTANTIATE_TEST_CASE_P(CUDA_OptFlow, OpticalFlowDual_TVL1, testing::Combine( ////////////////////////////////////////////////////// // OpticalFlowBM -namespace -{ - void calcOpticalFlowBM(const cv::Mat& prev, const cv::Mat& curr, - cv::Size bSize, cv::Size shiftSize, cv::Size maxRange, int usePrevious, - cv::Mat& velx, cv::Mat& vely) - { - cv::Size sz((curr.cols - bSize.width + shiftSize.width)/shiftSize.width, (curr.rows - bSize.height + shiftSize.height)/shiftSize.height); - - velx.create(sz, CV_32FC1); - vely.create(sz, CV_32FC1); - - CvMat cvprev = prev; - CvMat cvcurr = curr; - - CvMat cvvelx = velx; - CvMat cvvely = vely; - - cvCalcOpticalFlowBM(&cvprev, &cvcurr, bSize, shiftSize, maxRange, usePrevious, &cvvelx, &cvvely); - } -} - struct OpticalFlowBM : testing::TestWithParam { }; -CUDA_TEST_P(OpticalFlowBM, Accuracy) +CUDA_TEST_P(OpticalFlowBM, BlockMatching) { cv::cuda::DeviceInfo devInfo = GetParam(); cv::cuda::setDevice(devInfo.deviceID()); @@ -419,12 +397,6 @@ CUDA_TEST_P(OpticalFlowBM, Accuracy) cv::cuda::calcOpticalFlowBM(loadMat(frame0), loadMat(frame1), block_size, shift_size, max_range, false, d_velx, d_vely, buf); - - cv::Mat velx, vely; - calcOpticalFlowBM(frame0, frame1, block_size, shift_size, max_range, false, velx, vely); - - EXPECT_MAT_NEAR(velx, d_velx, 0); - EXPECT_MAT_NEAR(vely, d_vely, 0); } INSTANTIATE_TEST_CASE_P(CUDA_OptFlow, OpticalFlowBM, ALL_DEVICES); From 52df3b232d87e5b144c37f4c89af2e8e1f1ff5c7 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Thu, 31 Jul 2014 03:27:06 -0400 Subject: [PATCH 067/189] Reference PYTHON_NUMPY_INCLUDE_DIRS not PYTHON_NUMPY_INCLUDE_PATH PYTHON_NUMPY_INCLUDE_PATH was a typo, it should have been PYTHON_NUMPY_INCLUDE_DIRS. --- modules/python/python2/CMakeLists.txt | 2 +- modules/python/python3/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/python/python2/CMakeLists.txt b/modules/python/python2/CMakeLists.txt index f65c75d783..4881cb5edf 100644 --- a/modules/python/python2/CMakeLists.txt +++ b/modules/python/python2/CMakeLists.txt @@ -6,7 +6,7 @@ set(the_description "The python2 bindings") set(MODULE_NAME python2) set(PYTHON_INCLUDE_PATH ${PYTHON2_INCLUDE_PATH}) -set(PYTHON_NUMPY_INCLUDE_PATH ${PYTHON2_NUMPY_INCLUDE_PATH}) +set(PYTHON_NUMPY_INCLUDE_DIRS ${PYTHON2_NUMPY_INCLUDE_DIRS}) set(PYTHON_EXECUTABLE ${PYTHON2_EXECUTABLE}) set(PYTHON_DEBUG_LIBRARIES ${PYTHON2_DEBUG_LIBRARIES}) set(PYTHON_LIBRARIES ${PYTHON2_LIBRARIES}) diff --git a/modules/python/python3/CMakeLists.txt b/modules/python/python3/CMakeLists.txt index 7c23bd9c72..3f66492050 100644 --- a/modules/python/python3/CMakeLists.txt +++ b/modules/python/python3/CMakeLists.txt @@ -6,7 +6,7 @@ set(the_description "The python3 bindings") set(MODULE_NAME python3) set(PYTHON_INCLUDE_PATH ${PYTHON3_INCLUDE_PATH}) -set(PYTHON_NUMPY_INCLUDE_PATH ${PYTHON3_NUMPY_INCLUDE_PATH}) +set(PYTHON_NUMPY_INCLUDE_DIRS ${PYTHON3_NUMPY_INCLUDE_DIRS}) set(PYTHON_EXECUTABLE ${PYTHON3_EXECUTABLE}) set(PYTHON_DEBUG_LIBRARIES ${PYTHON3_DEBUG_LIBRARIES}) set(PYTHON_LIBRARIES ${PYTHON3_LIBRARIES}) From 10b60f8d16983599605d481d7b63eac21170dd07 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Thu, 31 Jul 2014 14:12:10 +0400 Subject: [PATCH 068/189] continuing refactoring ml samples; added "max vote" response to ANN_MLP. Probably, should make it in less hacky way --- modules/ml/src/ann_mlp.cpp | 25 +- samples/cpp/letter_recog.cpp | 584 +++++++++++++----------------- samples/cpp/points_classifier.cpp | 17 +- 3 files changed, 273 insertions(+), 353 deletions(-) diff --git a/modules/ml/src/ann_mlp.cpp b/modules/ml/src/ann_mlp.cpp index 750b3e67db..8b7ec3aad2 100644 --- a/modules/ml/src/ann_mlp.cpp +++ b/modules/ml/src/ann_mlp.cpp @@ -228,9 +228,8 @@ public: int n = inputs.rows, dn0 = n; CV_Assert( (type == CV_32F || type == CV_64F) && inputs.cols == layer_sizes[0] ); - _outputs.create(n, layer_sizes[l_count-1], type); - - Mat outputs = _outputs.getMat(); + int noutputs = layer_sizes[l_count-1]; + Mat outputs; int min_buf_sz = 2*max_lsize; int buf_sz = n*min_buf_sz; @@ -242,9 +241,20 @@ public: buf_sz = dn0*min_buf_sz; } - cv::AutoBuffer _buf(buf_sz); + cv::AutoBuffer _buf(buf_sz+noutputs); double* buf = _buf; + if( !_outputs.needed() ) + { + CV_Assert( n == 1 ); + outputs = Mat(n, noutputs, type, buf + buf_sz); + } + else + { + _outputs.create(n, noutputs, type); + outputs = _outputs.getMat(); + } + int dn = 0; for( int i = 0; i < n; i += dn ) { @@ -273,6 +283,13 @@ public: scale_output( layer_in, layer_out ); } + if( n == 1 ) + { + int maxIdx[] = {0, 0}; + minMaxIdx(outputs, 0, 0, 0, maxIdx); + return maxIdx[0] + maxIdx[1]; + } + return 0.f; } diff --git a/samples/cpp/letter_recog.cpp b/samples/cpp/letter_recog.cpp index ddbe676291..a07aae8fe9 100644 --- a/samples/cpp/letter_recog.cpp +++ b/samples/cpp/letter_recog.cpp @@ -1,11 +1,13 @@ -#include "opencv2/core/core_c.h" +#include "opencv2/core/core.hpp" #include "opencv2/ml/ml.hpp" #include #include -/* +#include -*/ +using namespace std; +using namespace cv; +using namespace cv::ml; static void help() { @@ -33,142 +35,101 @@ static void help() } // This function reads data and responses from the file -static int -read_num_class_data( const char* filename, int var_count, - CvMat** data, CvMat** responses ) +static bool +read_num_class_data( const string& filename, int var_count, + Mat* _data, Mat* _responses ) { const int M = 1024; - FILE* f = fopen( filename, "rt" ); - CvMemStorage* storage; - CvSeq* seq; char buf[M+2]; - float* el_ptr; - CvSeqReader reader; - int i, j; - if( !f ) - return 0; + Mat el_ptr(1, var_count, CV_32F); + int i; + vector responses; - el_ptr = new float[var_count+1]; - storage = cvCreateMemStorage(); - seq = cvCreateSeq( 0, sizeof(*seq), (var_count+1)*sizeof(float), storage ); + _data->release(); + _responses->release(); + + FILE* f = fopen( filename.c_str(), "rt" ); + if( !f ) + { + cout << "Could not read the database " << filename << endl; + return false; + } for(;;) { char* ptr; if( !fgets( buf, M, f ) || !strchr( buf, ',' ) ) break; - el_ptr[0] = buf[0]; + responses.push_back((int)buf[0]); ptr = buf+2; - for( i = 1; i <= var_count; i++ ) + for( i = 0; i < var_count; i++ ) { int n = 0; - sscanf( ptr, "%f%n", el_ptr + i, &n ); + sscanf( ptr, "%f%n", &el_ptr.at(i), &n ); ptr += n + 1; } - if( i <= var_count ) + if( i < var_count ) break; - cvSeqPush( seq, el_ptr ); + _data->push_back(el_ptr); } fclose(f); + Mat(responses).copyTo(*_responses); - *data = cvCreateMat( seq->total, var_count, CV_32F ); - *responses = cvCreateMat( seq->total, 1, CV_32F ); - - cvStartReadSeq( seq, &reader ); - - for( i = 0; i < seq->total; i++ ) - { - const float* sdata = (float*)reader.ptr + 1; - float* ddata = data[0]->data.fl + var_count*i; - float* dr = responses[0]->data.fl + i; - - for( j = 0; j < var_count; j++ ) - ddata[j] = sdata[j]; - *dr = sdata[-1]; - CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); - } + cout << "The database " << filename << " is loaded.\n"; - cvReleaseMemStorage( &storage ); - delete[] el_ptr; - return 1; + return true; } -static -int build_rtrees_classifier( char* data_filename, - char* filename_to_save, char* filename_to_load ) +template +static Ptr load_classifier(const string& filename_to_load) { - CvMat* data = 0; - CvMat* responses = 0; - CvMat* var_type = 0; - CvMat* sample_idx = 0; - - int ok = read_num_class_data( data_filename, 16, &data, &responses ); - int nsamples_all = 0, ntrain_samples = 0; - int i = 0; - double train_hr = 0, test_hr = 0; - CvRTrees forest; - CvMat* var_importance = 0; - - if( !ok ) - { - printf( "Could not read the database %s\n", data_filename ); - return -1; - } + // load classifier from the specified file + Ptr model = StatModel::load( filename_to_load ); + if( model.empty() ) + cout << "Could not read the classifier " << filename_to_load << endl; + else + cout << "The classifier " << filename_to_load << " is loaded.\n"; - printf( "The database %s is loaded.\n", data_filename ); - nsamples_all = data->rows; - ntrain_samples = (int)(nsamples_all*0.8); + return model; +} - // Create or load Random Trees classifier - if( filename_to_load ) - { - // load classifier from the specified file - forest.load( filename_to_load ); - ntrain_samples = 0; - if( forest.get_tree_count() == 0 ) - { - printf( "Could not read the classifier %s\n", filename_to_load ); - return -1; - } - printf( "The classifier %s is loaded.\n", filename_to_load ); - } - else - { - // create classifier by using and - printf( "Training the classifier ...\n"); +static Ptr +prepare_train_data(const Mat& data, const Mat& responses, int ntrain_samples) +{ + Mat sample_idx = Mat::zeros( 1, data.rows, CV_8U ); + Mat train_samples = sample_idx.colRange(0, ntrain_samples); + train_samples.setTo(Scalar::all(1)); - // 1. create type mask - var_type = cvCreateMat( data->cols + 1, 1, CV_8U ); - cvSet( var_type, cvScalarAll(CV_VAR_ORDERED) ); - cvSetReal1D( var_type, data->cols, CV_VAR_CATEGORICAL ); + int nvars = data.cols; + Mat var_type( nvars + 1, 1, CV_8U ); + var_type.setTo(Scalar::all(VAR_ORDERED)); + var_type.at(nvars) = VAR_CATEGORICAL; - // 2. create sample_idx - sample_idx = cvCreateMat( 1, nsamples_all, CV_8UC1 ); - { - CvMat mat; - cvGetCols( sample_idx, &mat, 0, ntrain_samples ); - cvSet( &mat, cvRealScalar(1) ); + return TrainData::create(data, ROW_SAMPLE, responses, + noArray(), sample_idx, noArray(), var_type); +} - cvGetCols( sample_idx, &mat, ntrain_samples, nsamples_all ); - cvSetZero( &mat ); - } +inline TermCriteria TC(int iters, double eps) +{ + return TermCriteria(TermCriteria::MAX_ITER + (eps > 0 ? TermCriteria::EPS : 0), iters, eps); +} - // 3. train classifier - forest.train( data, CV_ROW_SAMPLE, responses, 0, sample_idx, var_type, 0, - CvRTParams(10,10,0,false,15,0,true,4,100,0.01f,CV_TERMCRIT_ITER)); - printf( "\n"); - } +static void test_and_save_classifier(const Ptr& model, + const Mat& data, const Mat& responses, + int ntrain_samples, int rdelta, + const string& filename_to_save) +{ + int i, nsamples_all = data.rows; + double train_hr = 0, test_hr = 0; // compute prediction error on train and test data for( i = 0; i < nsamples_all; i++ ) { - double r; - CvMat sample; - cvGetRow( data, &sample, i ); + Mat sample = data.row(i); - r = forest.predict( &sample ); - r = fabs((double)r - responses->data.fl[i]) <= FLT_EPSILON ? 1 : 0; + float r = model->predict( sample ); + r = std::abs(r + rdelta - responses.at(i)) <= FLT_EPSILON ? 1 : 0; if( i < ntrain_samples ) train_hr += r; @@ -176,93 +137,101 @@ int build_rtrees_classifier( char* data_filename, test_hr += r; } - test_hr /= (double)(nsamples_all-ntrain_samples); - train_hr /= (double)ntrain_samples; + test_hr /= nsamples_all - ntrain_samples; + train_hr = ntrain_samples > 0 ? train_hr/ntrain_samples : 1.; + printf( "Recognition rate: train = %.1f%%, test = %.1f%%\n", train_hr*100., test_hr*100. ); - printf( "Number of trees: %d\n", forest.get_tree_count() ); - - // Print variable importance - var_importance = (CvMat*)forest.get_var_importance(); - if( var_importance ) + if( !filename_to_save.empty() ) { - double rt_imp_sum = cvSum( var_importance ).val[0]; - printf("var#\timportance (in %%):\n"); - for( i = 0; i < var_importance->cols; i++ ) - printf( "%-2d\t%-4.1f\n", i, - 100.f*var_importance->data.fl[i]/rt_imp_sum); + model->save( filename_to_save ); } +} + - //Print some proximitites - printf( "Proximities between some samples corresponding to the letter 'T':\n" ); +static bool +build_rtrees_classifier( const string& data_filename, + const string& filename_to_save, + const string& filename_to_load ) +{ + Mat data; + Mat responses; + bool ok = read_num_class_data( data_filename, 16, &data, &responses ); + if( !ok ) + return ok; + + Ptr model; + + int nsamples_all = data.rows; + int ntrain_samples = (int)(nsamples_all*0.8); + + // Create or load Random Trees classifier + if( !filename_to_load.empty() ) { - CvMat sample1, sample2; - const int pairs[][2] = {{0,103}, {0,106}, {106,103}, {-1,-1}}; + model = load_classifier(filename_to_load); + if( model.empty() ) + return false; + ntrain_samples = 0; + } + else + { + // create classifier by using and + cout << "Training the classifier ...\n"; + Ptr tdata = prepare_train_data(data, responses, ntrain_samples); - for( i = 0; pairs[i][0] >= 0; i++ ) - { - cvGetRow( data, &sample1, pairs[i][0] ); - cvGetRow( data, &sample2, pairs[i][1] ); - printf( "proximity(%d,%d) = %.1f%%\n", pairs[i][0], pairs[i][1], - forest.get_proximity( &sample1, &sample2 )*100. ); - } + // 3. train classifier + model = RTrees::create(RTrees::Params(10,10,0,false,15,Mat(),true,4,TC(100,0.01f))); + model->train( tdata ); + cout << endl; } - // Save Random Trees classifier to file if needed - if( filename_to_save ) - forest.save( filename_to_save ); + test_and_save_classifier(model, data, responses, ntrain_samples, 0, filename_to_save); + cout << "Number of trees: " << model->getRoots().size() << endl; - cvReleaseMat( &sample_idx ); - cvReleaseMat( &var_type ); - cvReleaseMat( &data ); - cvReleaseMat( &responses ); + // Print variable importance + Mat var_importance = model->getVarImportance(); + if( !var_importance.empty() ) + { + double rt_imp_sum = sum( var_importance )[0]; + printf("var#\timportance (in %%):\n"); + int i, n = (int)var_importance.total(); + for( i = 0; i < n; i++ ) + printf( "%-2d\t%-4.1f\n", i, 100.f*var_importance.at(i)/rt_imp_sum); + } - return 0; + return true; } -static -int build_boost_classifier( char* data_filename, - char* filename_to_save, char* filename_to_load ) +static bool +build_boost_classifier( const string& data_filename, + const string& filename_to_save, + const string& filename_to_load ) { const int class_count = 26; - CvMat* data = 0; - CvMat* responses = 0; - CvMat* var_type = 0; - CvMat* temp_sample = 0; - CvMat* weak_responses = 0; - - int ok = read_num_class_data( data_filename, 16, &data, &responses ); - int nsamples_all = 0, ntrain_samples = 0; - int var_count; - int i, j, k; - double train_hr = 0, test_hr = 0; - CvBoost boost; + Mat data; + Mat responses; + Mat weak_responses; + bool ok = read_num_class_data( data_filename, 16, &data, &responses ); if( !ok ) - { - printf( "Could not read the database %s\n", data_filename ); - return -1; - } + return ok; - printf( "The database %s is loaded.\n", data_filename ); - nsamples_all = data->rows; - ntrain_samples = (int)(nsamples_all*0.5); - var_count = data->cols; + int i, j, k; + Ptr model; + + int nsamples_all = data.rows; + int ntrain_samples = (int)(nsamples_all*0.5); + int var_count = data.cols; // Create or load Boosted Tree classifier - if( filename_to_load ) + if( !filename_to_load.empty() ) { - // load classifier from the specified file - boost.load( filename_to_load ); + model = load_classifier(filename_to_load); + if( model.empty() ) + return false; ntrain_samples = 0; - if( !boost.get_weak_predictors() ) - { - printf( "Could not read the classifier %s\n", filename_to_load ); - return -1; - } - printf( "The classifier %s is loaded.\n", filename_to_load ); } else { @@ -275,135 +244,108 @@ int build_boost_classifier( char* data_filename, // // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - CvMat* new_data = cvCreateMat( ntrain_samples*class_count, var_count + 1, CV_32F ); - CvMat* new_responses = cvCreateMat( ntrain_samples*class_count, 1, CV_32S ); + Mat new_data( ntrain_samples*class_count, var_count + 1, CV_32F ); + Mat new_responses( ntrain_samples*class_count, 1, CV_32S ); // 1. unroll the database type mask printf( "Unrolling the database...\n"); for( i = 0; i < ntrain_samples; i++ ) { - float* data_row = (float*)(data->data.ptr + data->step*i); + const float* data_row = data.ptr(i); for( j = 0; j < class_count; j++ ) { - float* new_data_row = (float*)(new_data->data.ptr + - new_data->step*(i*class_count+j)); - for( k = 0; k < var_count; k++ ) - new_data_row[k] = data_row[k]; + float* new_data_row = (float*)new_data.ptr(i*class_count+j); + memcpy(new_data_row, data_row, var_count*sizeof(data_row[0])); new_data_row[var_count] = (float)j; - new_responses->data.i[i*class_count + j] = responses->data.fl[i] == j+'A'; + new_responses.at(i*class_count + j) = responses.at(i) == j+'A'; } } - // 2. create type mask - var_type = cvCreateMat( var_count + 2, 1, CV_8U ); - cvSet( var_type, cvScalarAll(CV_VAR_ORDERED) ); - // the last indicator variable, as well - // as the new (binary) response are categorical - cvSetReal1D( var_type, var_count, CV_VAR_CATEGORICAL ); - cvSetReal1D( var_type, var_count+1, CV_VAR_CATEGORICAL ); + Mat var_type( 1, var_count + 2, CV_8U ); + var_type.setTo(Scalar::all(VAR_ORDERED)); + var_type.at(var_count) = var_type.at(var_count+1) = VAR_CATEGORICAL; - // 3. train classifier - printf( "Training the classifier (may take a few minutes)...\n"); - boost.train( new_data, CV_ROW_SAMPLE, new_responses, 0, 0, var_type, 0, - CvBoostParams(CvBoost::REAL, 100, 0.95, 5, false, 0 )); - cvReleaseMat( &new_data ); - cvReleaseMat( &new_responses ); - printf("\n"); + Ptr tdata = TrainData::create(new_data, ROW_SAMPLE, new_responses, + noArray(), noArray(), noArray(), var_type); + model = Boost::create(Boost::Params(Boost::REAL, 100, 0.95, 5, false, Mat() )); + + cout << "Training the classifier (may take a few minutes)...\n"; + model->train(tdata); + cout << endl; } - temp_sample = cvCreateMat( 1, var_count + 1, CV_32F ); - weak_responses = cvCreateMat( 1, boost.get_weak_predictors()->total, CV_32F ); + Mat temp_sample( 1, var_count + 1, CV_32F ); + float* tptr = temp_sample.ptr(); // compute prediction error on train and test data + double train_hr = 0, test_hr = 0; for( i = 0; i < nsamples_all; i++ ) { int best_class = 0; double max_sum = -DBL_MAX; - double r; - CvMat sample; - cvGetRow( data, &sample, i ); + const float* ptr = data.ptr(i); for( k = 0; k < var_count; k++ ) - temp_sample->data.fl[k] = sample.data.fl[k]; + tptr[k] = ptr[k]; for( j = 0; j < class_count; j++ ) { - temp_sample->data.fl[var_count] = (float)j; - boost.predict( temp_sample, 0, weak_responses ); - double sum = cvSum( weak_responses ).val[0]; - if( max_sum < sum ) + tptr[var_count] = (float)j; + float s = model->predict( temp_sample, noArray(), StatModel::RAW_OUTPUT ); + if( max_sum < s ) { - max_sum = sum; + max_sum = s; best_class = j + 'A'; } } - r = fabs(best_class - responses->data.fl[i]) < FLT_EPSILON ? 1 : 0; - + double r = std::abs(best_class - responses.at(i)) < FLT_EPSILON ? 1 : 0; if( i < ntrain_samples ) train_hr += r; else test_hr += r; } - test_hr /= (double)(nsamples_all-ntrain_samples); - train_hr /= (double)ntrain_samples; + test_hr /= nsamples_all-ntrain_samples; + train_hr = ntrain_samples > 0 ? train_hr/ntrain_samples : 1.; printf( "Recognition rate: train = %.1f%%, test = %.1f%%\n", train_hr*100., test_hr*100. ); - printf( "Number of trees: %d\n", boost.get_weak_predictors()->total ); + cout << "Number of trees: " << model->getRoots().size() << endl; // Save classifier to file if needed - if( filename_to_save ) - boost.save( filename_to_save ); + if( !filename_to_save.empty() ) + model->save( filename_to_save ); - cvReleaseMat( &temp_sample ); - cvReleaseMat( &weak_responses ); - cvReleaseMat( &var_type ); - cvReleaseMat( &data ); - cvReleaseMat( &responses ); - - return 0; + return true; } -static -int build_mlp_classifier( char* data_filename, - char* filename_to_save, char* filename_to_load ) +static bool +build_mlp_classifier( const string& data_filename, + const string& filename_to_save, + const string& filename_to_load ) { const int class_count = 26; - CvMat* data = 0; - CvMat train_data; - CvMat* responses = 0; - CvMat* mlp_response = 0; - - int ok = read_num_class_data( data_filename, 16, &data, &responses ); - int nsamples_all = 0, ntrain_samples = 0; - int i, j; - double train_hr = 0, test_hr = 0; - CvANN_MLP mlp; + Mat data; + Mat responses; + bool ok = read_num_class_data( data_filename, 16, &data, &responses ); if( !ok ) - { - printf( "Could not read the database %s\n", data_filename ); - return -1; - } + return ok; - printf( "The database %s is loaded.\n", data_filename ); - nsamples_all = data->rows; - ntrain_samples = (int)(nsamples_all*0.8); + int i, j; + Ptr model; + + int nsamples_all = data.rows; + int ntrain_samples = (int)(nsamples_all*0.8); // Create or load MLP classifier - if( filename_to_load ) + if( !filename_to_load.empty() ) { - // load classifier from the specified file - mlp.load( filename_to_load ); + model = load_classifier(filename_to_load); + if( model.empty() ) + return false; ntrain_samples = 0; - if( !mlp.get_layer_count() ) - { - printf( "Could not read the classifier %s\n", filename_to_load ); - return -1; - } - printf( "The classifier %s is loaded.\n", filename_to_load ); } else { @@ -417,45 +359,44 @@ int build_mlp_classifier( char* data_filename, // // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - CvMat* new_responses = cvCreateMat( ntrain_samples, class_count, CV_32F ); + Mat train_data = data.rowRange(0, ntrain_samples); + Mat new_responses = Mat::zeros( ntrain_samples, class_count, CV_32F ); // 1. unroll the responses - printf( "Unrolling the responses...\n"); + cout << "Unrolling the responses...\n"; for( i = 0; i < ntrain_samples; i++ ) { - int cls_label = cvRound(responses->data.fl[i]) - 'A'; - float* bit_vec = (float*)(new_responses->data.ptr + i*new_responses->step); - for( j = 0; j < class_count; j++ ) - bit_vec[j] = 0.f; - bit_vec[cls_label] = 1.f; + int cls_label = responses.at(i) - 'A' + new_responses.at(i, cls_label) = 1.f; } - cvGetRows( data, &train_data, 0, ntrain_samples ); // 2. train classifier - int layer_sz[] = { data->cols, 100, 100, class_count }; - CvMat layer_sizes = - cvMat( 1, (int)(sizeof(layer_sz)/sizeof(layer_sz[0])), CV_32S, layer_sz ); - mlp.create( &layer_sizes ); - printf( "Training the classifier (may take a few minutes)...\n"); + int layer_sz[] = { data.cols, 100, 100, class_count }; + int nlayers = (int)(sizeof(layer_sz)/sizeof(layer_sz[0])); + Mat layer_sizes( 1, nlayers, CV_32S, layer_sz ); #if 1 - int method = CvANN_MLP_TrainParams::BACKPROP; + int method = ANN_MLP::Params::BACKPROP; double method_param = 0.001; int max_iter = 300; #else - int method = CvANN_MLP_TrainParams::RPROP; + int method = ANN_MLP::Params::RPROP; double method_param = 0.1; int max_iter = 1000; #endif mlp.train( &train_data, new_responses, 0, 0, - CvANN_MLP_TrainParams(cvTermCriteria(CV_TERMCRIT_ITER,max_iter,0.01), - method, method_param)); + ANN_MLP::Params(TC(max_iter,0), method, method_param)); + + + model = ANN_MLP::create() mlp.create( &layer_sizes ); + printf( "Training the classifier (may take a few minutes)...\n"); + cvReleaseMat( &new_responses ); printf("\n"); } - mlp_response = cvCreateMat( 1, class_count, CV_32F ); + Mat mlp_response; // compute prediction error on train and test data for( i = 0; i < nsamples_all; i++ ) @@ -481,38 +422,26 @@ int build_mlp_classifier( char* data_filename, printf( "Recognition rate: train = %.1f%%, test = %.1f%%\n", train_hr*100., test_hr*100. ); - // Save classifier to file if needed - if( filename_to_save ) - mlp.save( filename_to_save ); + if( !filename_to_save.empty() ) + model->save( filename_to_save ); - cvReleaseMat( &mlp_response ); - cvReleaseMat( &data ); - cvReleaseMat( &responses ); - - return 0; + return true; } -static -int build_knearest_classifier( char* data_filename, int K ) +static bool +build_knearest_classifier( const string& data_filename, int K ) { const int var_count = 16; - CvMat* data = 0; + Mat data; CvMat train_data; - CvMat* responses; - - int ok = read_num_class_data( data_filename, 16, &data, &responses ); - int nsamples_all = 0, ntrain_samples = 0; - //int i, j; - //double /*train_hr = 0,*/ test_hr = 0; - CvANN_MLP mlp; + Mat responses; + bool ok = read_num_class_data( data_filename, 16, &data, &responses ); if( !ok ) - { - printf( "Could not read the database %s\n", data_filename ); - return -1; - } + return ok; + + int nsamples_all = 0, ntrain_samples = 0; - printf( "The database %s is loaded.\n", data_filename ); nsamples_all = data->rows; ntrain_samples = (int)(nsamples_all*0.8); @@ -521,12 +450,13 @@ int build_knearest_classifier( char* data_filename, int K ) cvGetRows( data, &train_data, 0, ntrain_samples ); // 2. train classifier - CvMat* train_resp = cvCreateMat( ntrain_samples, 1, CV_32FC1); + Mat train_resp = cvCreateMat( ntrain_samples, 1, CV_32FC1); for (int i = 0; i < ntrain_samples; i++) train_resp->data.fl[i] = responses->data.fl[i]; - CvKNearest knearest(&train_data, train_resp); + Ptr model = KNearest::create(true); + model->train(train_data, train_resp); - CvMat* nearests = cvCreateMat( (nsamples_all - ntrain_samples), K, CV_32FC1); + Mat nearests = cvCreateMat( (nsamples_all - ntrain_samples), K, CV_32FC1); float* _sample = new float[var_count * (nsamples_all - ntrain_samples)]; CvMat sample = cvMat( nsamples_all - ntrain_samples, 16, CV_32FC1, _sample ); float* true_results = new float[nsamples_all - ntrain_samples]; @@ -569,27 +499,20 @@ int build_knearest_classifier( char* data_filename, int K ) return 0; } -static -int build_nbayes_classifier( char* data_filename ) +static bool +build_nbayes_classifier( const string& data_filename ) { const int var_count = 16; - CvMat* data = 0; + Mat data; CvMat train_data; - CvMat* responses; - - int ok = read_num_class_data( data_filename, 16, &data, &responses ); - int nsamples_all = 0, ntrain_samples = 0; - //int i, j; - //double /*train_hr = 0, */test_hr = 0; - CvANN_MLP mlp; + Mat responses; + bool ok = read_num_class_data( data_filename, 16, &data, &responses ); if( !ok ) - { - printf( "Could not read the database %s\n", data_filename ); - return -1; - } + return ok; + + int nsamples_all = 0, ntrain_samples = 0; - printf( "The database %s is loaded.\n", data_filename ); nsamples_all = data->rows; ntrain_samples = (int)(nsamples_all*0.5); @@ -598,7 +521,7 @@ int build_nbayes_classifier( char* data_filename ) cvGetRows( data, &train_data, 0, ntrain_samples ); // 2. train classifier - CvMat* train_resp = cvCreateMat( ntrain_samples, 1, CV_32FC1); + Mat train_resp = cvCreateMat( ntrain_samples, 1, CV_32FC1); for (int i = 0; i < ntrain_samples; i++) train_resp->data.fl[i] = responses->data.fl[i]; CvNormalBayesClassifier nbayes(&train_data, train_resp); @@ -638,23 +561,23 @@ int build_nbayes_classifier( char* data_filename ) return 0; } -static -int build_svm_classifier( char* data_filename, const char* filename_to_save, const char* filename_to_load ) +static bool +build_svm_classifier( const string& data_filename, + const string& filename_to_save, + const string& filename_to_load ) { - CvMat* data = 0; - CvMat* responses = 0; - CvMat* train_resp = 0; + Mat data; + Mat responses; + Mat train_resp; CvMat train_data; int nsamples_all = 0, ntrain_samples = 0; int var_count; - CvSVM svm; + Ptr model; - int ok = read_num_class_data( data_filename, 16, &data, &responses ); + bool ok = read_num_class_data( data_filename, 16, &data, &responses ); if( !ok ) - { - printf( "Could not read the database %s\n", data_filename ); - return -1; - } + return ok; + ////////// SVM parameters /////////////////////////////// CvSVMParams param; param.kernel_type=CvSVM::LINEAR; @@ -722,15 +645,10 @@ int build_svm_classifier( char* data_filename, const char* filename_to_save, con printf("true_resp = %f%%\n", (float)true_resp / (nsamples_all - ntrain_samples) * 100); - if( filename_to_save ) - svm.save( filename_to_save ); + if( !filename_to_save.empty() ) + model->save( filename_to_save ); - cvReleaseMat( &train_resp ); - cvReleaseMat( &result ); - cvReleaseMat( &data ); - cvReleaseMat( &responses ); - - return 0; + return true; } int main( int argc, char *argv[] ) @@ -768,17 +686,17 @@ int main( int argc, char *argv[] ) method = 2; } else if ( strcmp(argv[i], "-knearest") == 0) - { - method = 3; - } - else if ( strcmp(argv[i], "-nbayes") == 0) - { - method = 4; - } - else if ( strcmp(argv[i], "-svm") == 0) - { - method = 5; - } + { + method = 3; + } + else if ( strcmp(argv[i], "-nbayes") == 0) + { + method = 4; + } + else if ( strcmp(argv[i], "-svm") == 0) + { + method = 5; + } else break; } diff --git a/samples/cpp/points_classifier.cpp b/samples/cpp/points_classifier.cpp index 0a742f34e9..ef0091526d 100644 --- a/samples/cpp/points_classifier.cpp +++ b/samples/cpp/points_classifier.cpp @@ -229,22 +229,7 @@ static void find_decision_boundary_ANN( const Mat& layer_sizes ) Ptr tdata = TrainData::create(samples, ROW_SAMPLE, trainClasses); ann->train(tdata); - - Mat testSample( 1, 2, CV_32FC1 ); - Mat outputs; - for( int y = 0; y < img.rows; y += testStep ) - { - for( int x = 0; x < img.cols; x += testStep ) - { - testSample.at(0) = (float)x; - testSample.at(1) = (float)y; - - ann->predict( testSample, outputs ); - Point maxLoc; - minMaxLoc( outputs, 0, 0, 0, &maxLoc ); - imgDst.at(y, x) = classColors[maxLoc.x]; - } - } + predict_and_paint(ann, imgDst); } #endif From 625fd613130dcd0d49ea6dafd81b741b6c2b6165 Mon Sep 17 00:00:00 2001 From: "Fco. Javier Delgado del Hoyo" Date: Fri, 1 Aug 2014 09:28:19 +0200 Subject: [PATCH 069/189] Removed OpticalFlowBM test from cudaoptflow module --- modules/cudaoptflow/test/test_optflow.cpp | 32 ----------------------- 1 file changed, 32 deletions(-) diff --git a/modules/cudaoptflow/test/test_optflow.cpp b/modules/cudaoptflow/test/test_optflow.cpp index d537f5b4c2..1de40510dd 100644 --- a/modules/cudaoptflow/test/test_optflow.cpp +++ b/modules/cudaoptflow/test/test_optflow.cpp @@ -369,38 +369,6 @@ INSTANTIATE_TEST_CASE_P(CUDA_OptFlow, OpticalFlowDual_TVL1, testing::Combine( ALL_DEVICES, WHOLE_SUBMAT)); -////////////////////////////////////////////////////// -// OpticalFlowBM - -struct OpticalFlowBM : testing::TestWithParam -{ -}; - -CUDA_TEST_P(OpticalFlowBM, BlockMatching) -{ - cv::cuda::DeviceInfo devInfo = GetParam(); - cv::cuda::setDevice(devInfo.deviceID()); - - cv::Mat frame0 = readImage("opticalflow/rubberwhale1.png", cv::IMREAD_GRAYSCALE); - ASSERT_FALSE(frame0.empty()); - cv::resize(frame0, frame0, cv::Size(), 0.5, 0.5); - - cv::Mat frame1 = readImage("opticalflow/rubberwhale2.png", cv::IMREAD_GRAYSCALE); - ASSERT_FALSE(frame1.empty()); - cv::resize(frame1, frame1, cv::Size(), 0.5, 0.5); - - cv::Size block_size(8, 8); - cv::Size shift_size(1, 1); - cv::Size max_range(8, 8); - - cv::cuda::GpuMat d_velx, d_vely, buf; - cv::cuda::calcOpticalFlowBM(loadMat(frame0), loadMat(frame1), - block_size, shift_size, max_range, false, - d_velx, d_vely, buf); -} - -INSTANTIATE_TEST_CASE_P(CUDA_OptFlow, OpticalFlowBM, ALL_DEVICES); - ////////////////////////////////////////////////////// // FastOpticalFlowBM From b7242085107de47253786ff79a478b78bbeb312d Mon Sep 17 00:00:00 2001 From: vbystricky Date: Fri, 1 Aug 2014 14:18:35 +0400 Subject: [PATCH 070/189] Fix Luv2RGB function --- modules/imgproc/src/color.cpp | 4 ++++ modules/imgproc/src/opencl/cvtcolor.cl | 22 +++++++++++++++------- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/modules/imgproc/src/color.cpp b/modules/imgproc/src/color.cpp index fe460ee75a..351ee74e43 100644 --- a/modules/imgproc/src/color.cpp +++ b/modules/imgproc/src/color.cpp @@ -2038,6 +2038,10 @@ struct Luv2RGB_f float G = X*C3 + Y*C4 + Z*C5; float B = X*C6 + Y*C7 + Z*C8; + R = std::min(std::max(R, 0.f), 1.f); + G = std::min(std::max(G, 0.f), 1.f); + B = std::min(std::max(B, 0.f), 1.f); + if( gammaTab ) { R = splineInterpolate(R*gscale, gammaTab, GAMMA_TAB_SIZE); diff --git a/modules/imgproc/src/opencl/cvtcolor.cl b/modules/imgproc/src/opencl/cvtcolor.cl index da835e08f3..18827ebfa7 100644 --- a/modules/imgproc/src/opencl/cvtcolor.cl +++ b/modules/imgproc/src/opencl/cvtcolor.cl @@ -441,18 +441,18 @@ __kernel void YCrCb2RGB(__global const uchar* src, int src_step, int src_offset, __global DATA_TYPE * dstptr = (__global DATA_TYPE*)(dst + dst_index); DATA_TYPE_4 src_pix = vload4(0, srcptr); - DATA_TYPE y = src_pix.x, cr = src_pix.y, cb = src_pix.z; + DATA_TYPE yp = src_pix.x, cr = src_pix.y, cb = src_pix.z; #ifdef DEPTH_5 __constant float * coeff = c_YCrCb2RGBCoeffs_f; - float r = fma(coeff[0], cr - HALF_MAX, y); - float g = fma(coeff[1], cr - HALF_MAX, fma(coeff[2], cb - HALF_MAX, y)); - float b = fma(coeff[3], cb - HALF_MAX, y); + float r = fma(coeff[0], cr - HALF_MAX, yp); + float g = fma(coeff[1], cr - HALF_MAX, fma(coeff[2], cb - HALF_MAX, yp)); + float b = fma(coeff[3], cb - HALF_MAX, yp); #else __constant int * coeff = c_YCrCb2RGBCoeffs_i; - int r = y + CV_DESCALE(coeff[0] * (cr - HALF_MAX), yuv_shift); - int g = y + CV_DESCALE(mad24(coeff[1], cr - HALF_MAX, coeff[2] * (cb - HALF_MAX)), yuv_shift); - int b = y + CV_DESCALE(coeff[3] * (cb - HALF_MAX), yuv_shift); + int r = yp + CV_DESCALE(coeff[0] * (cr - HALF_MAX), yuv_shift); + int g = yp + CV_DESCALE(mad24(coeff[1], cr - HALF_MAX, coeff[2] * (cb - HALF_MAX)), yuv_shift); + int b = yp + CV_DESCALE(coeff[3] * (cb - HALF_MAX), yuv_shift); #endif dstptr[(bidx^2)] = SAT_CAST(r); @@ -1796,6 +1796,10 @@ __kernel void Luv2BGR(__global const uchar * srcptr, int src_step, int src_offse float G = fma(X, coeffs[3], fma(Y, coeffs[4], Z * coeffs[5])); float B = fma(X, coeffs[6], fma(Y, coeffs[7], Z * coeffs[8])); + R = min(max(R, 0.f), 1.f); + G = min(max(G, 0.f), 1.f); + B = min(max(B, 0.f), 1.f); + #ifdef SRGB R = splineInterpolate(R*GammaTabScale, gammaTab, GAMMA_TAB_SIZE); G = splineInterpolate(G*GammaTabScale, gammaTab, GAMMA_TAB_SIZE); @@ -1853,6 +1857,10 @@ __kernel void Luv2BGR(__global const uchar * src, int src_step, int src_offset, float G = fma(X, coeffs[3], fma(Y, coeffs[4], Z * coeffs[5])); float B = fma(X, coeffs[6], fma(Y, coeffs[7], Z * coeffs[8])); + R = min(max(R, 0.f), 1.f); + G = min(max(G, 0.f), 1.f); + B = min(max(B, 0.f), 1.f); + #ifdef SRGB R = splineInterpolate(R*GammaTabScale, gammaTab, GAMMA_TAB_SIZE); G = splineInterpolate(G*GammaTabScale, gammaTab, GAMMA_TAB_SIZE); From 184c5917bff385b845a56bdda6b4d53cf89a4915 Mon Sep 17 00:00:00 2001 From: vbystricky Date: Fri, 1 Aug 2014 17:53:24 +0400 Subject: [PATCH 071/189] Fix accurency test of OpenCL merge function. --- modules/core/test/ocl/test_channels.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/core/test/ocl/test_channels.cpp b/modules/core/test/ocl/test_channels.cpp index 7565273e7a..53d7de5d52 100644 --- a/modules/core/test/ocl/test_channels.cpp +++ b/modules/core/test/ocl/test_channels.cpp @@ -105,6 +105,7 @@ PARAM_TEST_CASE(Merge, MatDepth, int, bool) UMAT_UPLOAD_INPUT_PARAMETER(src3); UMAT_UPLOAD_INPUT_PARAMETER(src4); + src_roi.clear(); usrc_roi.clear(); // for test_loop_times > 1 src_roi.push_back(src1_roi), usrc_roi.push_back(usrc1_roi); if (nsrc >= 2) src_roi.push_back(src2_roi), usrc_roi.push_back(usrc2_roi); From aad4104297afd02baf91fc633401db90463bae0c Mon Sep 17 00:00:00 2001 From: vbystricky Date: Fri, 1 Aug 2014 18:30:20 +0400 Subject: [PATCH 072/189] Fix accurency test for OpenCL matrix operations --- modules/core/test/ocl/test_matrix_operation.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/modules/core/test/ocl/test_matrix_operation.cpp b/modules/core/test/ocl/test_matrix_operation.cpp index ee591e9bd9..1ff3bec6c2 100644 --- a/modules/core/test/ocl/test_matrix_operation.cpp +++ b/modules/core/test/ocl/test_matrix_operation.cpp @@ -96,7 +96,7 @@ OCL_TEST_P(ConvertTo, Accuracy) OCL_OFF(src_roi.convertTo(dst_roi, dstType, alpha, beta)); OCL_ON(usrc_roi.convertTo(udst_roi, dstType, alpha, beta)); - double eps = src_depth >= CV_32F || CV_MAT_DEPTH(dstType) >= CV_32F ? 1e-4 : 1; + double eps = src_depth >= CV_32F || CV_MAT_DEPTH(dstType) >= CV_32F ? 2e-4 : 1; OCL_EXPECT_MATS_NEAR(dst, eps); } } @@ -121,7 +121,7 @@ PARAM_TEST_CASE(CopyTo, MatDepth, Channels, bool, bool) use_mask = GET_PARAM(3); } - void generateTestData() + void generateTestData(bool one_cn_mask = false) { const int type = CV_MAKE_TYPE(depth, cn); @@ -132,9 +132,11 @@ PARAM_TEST_CASE(CopyTo, MatDepth, Channels, bool, bool) if (use_mask) { Border maskBorder = randomBorder(0, use_roi ? MAX_VALUE : 0); - int mask_cn = randomDouble(0.0, 2.0) > 1.0 ? cn : 1; + int mask_cn = 1; + if (!one_cn_mask && randomDouble(0.0, 2.0) > 1.0) + mask_cn = cn; randomSubMat(mask, mask_roi, roiSize, maskBorder, CV_8UC(mask_cn), 0, 2); - cv::threshold(mask, mask, 0.5, 255., CV_8UC1); + cv::threshold(mask, mask, 0.5, 255., THRESH_BINARY); } Border dstBorder = randomBorder(0, use_roi ? MAX_VALUE : 0); @@ -177,7 +179,7 @@ OCL_TEST_P(SetTo, Accuracy) { for (int j = 0; j < test_loop_times; j++) { - generateTestData(); + generateTestData(true); // see modules/core/src/umatrix.cpp Ln:791 => CV_Assert( mask.size() == size() && mask.type() == CV_8UC1 ); if (use_mask) { From 0f9b79ef646e8cdd432ce4eac464d9f83a3acde5 Mon Sep 17 00:00:00 2001 From: VBystricky Date: Fri, 1 Aug 2014 19:45:11 +0400 Subject: [PATCH 073/189] Change min-max to clamp --- modules/imgproc/src/opencl/cvtcolor.cl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/imgproc/src/opencl/cvtcolor.cl b/modules/imgproc/src/opencl/cvtcolor.cl index 18827ebfa7..2846357d52 100644 --- a/modules/imgproc/src/opencl/cvtcolor.cl +++ b/modules/imgproc/src/opencl/cvtcolor.cl @@ -1796,9 +1796,9 @@ __kernel void Luv2BGR(__global const uchar * srcptr, int src_step, int src_offse float G = fma(X, coeffs[3], fma(Y, coeffs[4], Z * coeffs[5])); float B = fma(X, coeffs[6], fma(Y, coeffs[7], Z * coeffs[8])); - R = min(max(R, 0.f), 1.f); - G = min(max(G, 0.f), 1.f); - B = min(max(B, 0.f), 1.f); + R = clamp(R, 0.f, 1.f); + G = clamp(G, 0.f, 1.f); + B = clamp(B, 0.f, 1.f); #ifdef SRGB R = splineInterpolate(R*GammaTabScale, gammaTab, GAMMA_TAB_SIZE); @@ -1857,9 +1857,9 @@ __kernel void Luv2BGR(__global const uchar * src, int src_step, int src_offset, float G = fma(X, coeffs[3], fma(Y, coeffs[4], Z * coeffs[5])); float B = fma(X, coeffs[6], fma(Y, coeffs[7], Z * coeffs[8])); - R = min(max(R, 0.f), 1.f); - G = min(max(G, 0.f), 1.f); - B = min(max(B, 0.f), 1.f); + R = clamp(R, 0.f, 1.f); + G = clamp(G, 0.f, 1.f); + B = clamp(B, 0.f, 1.f); #ifdef SRGB R = splineInterpolate(R*GammaTabScale, gammaTab, GAMMA_TAB_SIZE); From 74e58ddbb1f2f80631ea794c8ccf158c3a60cde8 Mon Sep 17 00:00:00 2001 From: Roman Donchenko Date: Fri, 1 Aug 2014 19:50:17 +0400 Subject: [PATCH 074/189] Disable the broken fisheye undistortImage test --- modules/calib3d/test/test_fisheye.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/calib3d/test/test_fisheye.cpp b/modules/calib3d/test/test_fisheye.cpp index 8318f82164..553b81c39b 100644 --- a/modules/calib3d/test/test_fisheye.cpp +++ b/modules/calib3d/test/test_fisheye.cpp @@ -98,7 +98,7 @@ TEST_F(fisheyeTest, projectPoints) EXPECT_MAT_NEAR(distorted0, distorted2, 1e-10); } -TEST_F(fisheyeTest, undistortImage) +TEST_F(fisheyeTest, DISABLED_undistortImage) { cv::Matx33d K = this->K; cv::Mat D = cv::Mat(this->D); From 20260946913666ca5952bbf9f5152b27dbf3517f Mon Sep 17 00:00:00 2001 From: VBystricky Date: Sat, 2 Aug 2014 13:21:34 +0400 Subject: [PATCH 075/189] Increase epsilon for OpenCL version UMatDot and ReduceAvg accurency tests --- modules/core/test/ocl/test_arithm.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/core/test/ocl/test_arithm.cpp b/modules/core/test/ocl/test_arithm.cpp index 4940d80f7c..a150782708 100644 --- a/modules/core/test/ocl/test_arithm.cpp +++ b/modules/core/test/ocl/test_arithm.cpp @@ -1419,7 +1419,7 @@ OCL_TEST_P(UMatDot, Mat) OCL_OFF(const double cpuRes = src1_roi.dot(src2_roi)); OCL_ON(const double gpuRes = usrc1_roi.dot(usrc2_roi)); - EXPECT_PRED3(relativeError, cpuRes, gpuRes, 1e-6); + EXPECT_PRED3(relativeError, cpuRes, gpuRes, 1e-5); } } @@ -1749,7 +1749,7 @@ OCL_TEST_P(ReduceAvg, Mat) OCL_OFF(cv::reduce(src_roi, dst_roi, dim, CV_REDUCE_AVG, dtype)); OCL_ON(cv::reduce(usrc_roi, udst_roi, dim, CV_REDUCE_AVG, dtype)); - double eps = ddepth <= CV_32S ? 1 : 5e-6; + double eps = ddepth <= CV_32S ? 1 : 6e-6; OCL_EXPECT_MATS_NEAR(dst, eps); } } From c20ff6ce19911b22ab215c82dd1ca4db3ede53e9 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Sun, 3 Aug 2014 01:41:09 +0400 Subject: [PATCH 076/189] made everything compile and even run somehow --- apps/traincascade/CMakeLists.txt | 13 +- apps/traincascade/boost.h | 2 +- apps/traincascade/cascadeclassifier.h | 2 - apps/traincascade/old_ml.hpp | 2165 +++++ apps/traincascade/old_ml_boost.cpp | 2162 +++++ apps/traincascade/old_ml_data.cpp | 792 ++ apps/traincascade/old_ml_inner_functions.cpp | 1879 ++++ apps/traincascade/old_ml_precomp.hpp | 376 + apps/traincascade/old_ml_tree.cpp | 4151 +++++++++ apps/traincascade/traincascade.cpp | 2 - apps/traincascade/traincascade_features.h | 3 - modules/ml/include/opencv2/ml.hpp | 72 +- modules/ml/src/ann_mlp.cpp | 57 +- modules/ml/src/boost.cpp | 30 +- modules/ml/src/data.cpp | 6 +- modules/ml/src/inner_functions.cpp | 6 +- modules/ml/src/knearest.cpp | 37 +- modules/ml/src/nbayes.cpp | 7 +- modules/ml/src/svm.cpp | 99 +- modules/ml/src/tree.cpp | 2 - modules/ml/test/test_emknearestkmeans.cpp | 2 +- modules/ml/test/test_mltests2.cpp | 5 +- samples/cpp/agaricus-lepiota.data | 8124 ----------------- samples/cpp/bagofwords_classification.cpp | 66 +- samples/cpp/letter_recog.cpp | 281 +- samples/cpp/mushroom.cpp | 322 - samples/cpp/points_classifier.cpp | 40 +- samples/cpp/train_HOG.cpp | 82 +- samples/cpp/tree_engine.cpp | 122 +- .../introduction_to_svm.cpp | 36 +- .../ml/non_linear_svms/non_linear_svms.cpp | 22 +- 31 files changed, 11907 insertions(+), 9058 deletions(-) create mode 100644 apps/traincascade/old_ml.hpp create mode 100644 apps/traincascade/old_ml_boost.cpp create mode 100644 apps/traincascade/old_ml_data.cpp create mode 100644 apps/traincascade/old_ml_inner_functions.cpp create mode 100644 apps/traincascade/old_ml_precomp.hpp create mode 100644 apps/traincascade/old_ml_tree.cpp delete mode 100644 samples/cpp/agaricus-lepiota.data delete mode 100644 samples/cpp/mushroom.cpp diff --git a/apps/traincascade/CMakeLists.txt b/apps/traincascade/CMakeLists.txt index cca56361e3..ab32b4cfb5 100644 --- a/apps/traincascade/CMakeLists.txt +++ b/apps/traincascade/CMakeLists.txt @@ -1,4 +1,4 @@ -set(OPENCV_TRAINCASCADE_DEPS opencv_core opencv_ml opencv_imgproc opencv_photo opencv_objdetect opencv_imgcodecs opencv_videoio opencv_highgui opencv_calib3d opencv_video opencv_features2d) +set(OPENCV_TRAINCASCADE_DEPS opencv_core opencv_imgproc opencv_objdetect opencv_imgcodecs opencv_highgui opencv_calib3d opencv_features2d) ocv_check_dependencies(${OPENCV_TRAINCASCADE_DEPS}) if(NOT OCV_DEPENDENCIES_FOUND) @@ -10,13 +10,10 @@ project(traincascade) ocv_include_directories("${CMAKE_CURRENT_SOURCE_DIR}" "${OpenCV_SOURCE_DIR}/include/opencv") ocv_include_modules(${OPENCV_TRAINCASCADE_DEPS}) -set(traincascade_files traincascade.cpp - cascadeclassifier.cpp cascadeclassifier.h - boost.cpp boost.h features.cpp traincascade_features.h - haarfeatures.cpp haarfeatures.h - lbpfeatures.cpp lbpfeatures.h - HOGfeatures.cpp HOGfeatures.h - imagestorage.cpp imagestorage.h) +file(GLOB SRCS *.cpp) +file(GLOB HDRS *.h*) + +set(traincascade_files ${SRCS} ${HDRS}) set(the_target opencv_traincascade) add_executable(${the_target} ${traincascade_files}) diff --git a/apps/traincascade/boost.h b/apps/traincascade/boost.h index 0edf776a5b..48d4789b9c 100644 --- a/apps/traincascade/boost.h +++ b/apps/traincascade/boost.h @@ -2,7 +2,7 @@ #define _OPENCV_BOOST_H_ #include "traincascade_features.h" -#include "ml.h" +#include "old_ml.hpp" struct CvCascadeBoostParams : CvBoostParams { diff --git a/apps/traincascade/cascadeclassifier.h b/apps/traincascade/cascadeclassifier.h index 93be478b4e..6d6cb5b3f9 100644 --- a/apps/traincascade/cascadeclassifier.h +++ b/apps/traincascade/cascadeclassifier.h @@ -7,8 +7,6 @@ #include "lbpfeatures.h" #include "HOGfeatures.h" //new #include "boost.h" -#include "cv.h" -#include "cxcore.h" #define CC_CASCADE_FILENAME "cascade.xml" #define CC_PARAMS_FILENAME "params.xml" diff --git a/apps/traincascade/old_ml.hpp b/apps/traincascade/old_ml.hpp new file mode 100644 index 0000000000..6ec31a025d --- /dev/null +++ b/apps/traincascade/old_ml.hpp @@ -0,0 +1,2165 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// Intel License Agreement +// +// Copyright (C) 2000, Intel Corporation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of Intel Corporation may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef __OPENCV_ML_HPP__ +#define __OPENCV_ML_HPP__ + +#ifdef __cplusplus +# include "opencv2/core.hpp" +#endif + +#include "opencv2/core/core_c.h" +#include + +#ifdef __cplusplus + +#include +#include + +// Apple defines a check() macro somewhere in the debug headers +// that interferes with a method definiton in this header +#undef check + +/****************************************************************************************\ +* Main struct definitions * +\****************************************************************************************/ + +/* log(2*PI) */ +#define CV_LOG2PI (1.8378770664093454835606594728112) + +/* columns of matrix are training samples */ +#define CV_COL_SAMPLE 0 + +/* rows of matrix are training samples */ +#define CV_ROW_SAMPLE 1 + +#define CV_IS_ROW_SAMPLE(flags) ((flags) & CV_ROW_SAMPLE) + +struct CvVectors +{ + int type; + int dims, count; + CvVectors* next; + union + { + uchar** ptr; + float** fl; + double** db; + } data; +}; + +#if 0 +/* A structure, representing the lattice range of statmodel parameters. + It is used for optimizing statmodel parameters by cross-validation method. + The lattice is logarithmic, so must be greater then 1. */ +typedef struct CvParamLattice +{ + double min_val; + double max_val; + double step; +} +CvParamLattice; + +CV_INLINE CvParamLattice cvParamLattice( double min_val, double max_val, + double log_step ) +{ + CvParamLattice pl; + pl.min_val = MIN( min_val, max_val ); + pl.max_val = MAX( min_val, max_val ); + pl.step = MAX( log_step, 1. ); + return pl; +} + +CV_INLINE CvParamLattice cvDefaultParamLattice( void ) +{ + CvParamLattice pl = {0,0,0}; + return pl; +} +#endif + +/* Variable type */ +#define CV_VAR_NUMERICAL 0 +#define CV_VAR_ORDERED 0 +#define CV_VAR_CATEGORICAL 1 + +#define CV_TYPE_NAME_ML_SVM "opencv-ml-svm" +#define CV_TYPE_NAME_ML_KNN "opencv-ml-knn" +#define CV_TYPE_NAME_ML_NBAYES "opencv-ml-bayesian" +#define CV_TYPE_NAME_ML_EM "opencv-ml-em" +#define CV_TYPE_NAME_ML_BOOSTING "opencv-ml-boost-tree" +#define CV_TYPE_NAME_ML_TREE "opencv-ml-tree" +#define CV_TYPE_NAME_ML_ANN_MLP "opencv-ml-ann-mlp" +#define CV_TYPE_NAME_ML_CNN "opencv-ml-cnn" +#define CV_TYPE_NAME_ML_RTREES "opencv-ml-random-trees" +#define CV_TYPE_NAME_ML_ERTREES "opencv-ml-extremely-randomized-trees" +#define CV_TYPE_NAME_ML_GBT "opencv-ml-gradient-boosting-trees" + +#define CV_TRAIN_ERROR 0 +#define CV_TEST_ERROR 1 + +class CvStatModel +{ +public: + CvStatModel(); + virtual ~CvStatModel(); + + virtual void clear(); + + CV_WRAP virtual void save( const char* filename, const char* name=0 ) const; + CV_WRAP virtual void load( const char* filename, const char* name=0 ); + + virtual void write( CvFileStorage* storage, const char* name ) const; + virtual void read( CvFileStorage* storage, CvFileNode* node ); + +protected: + const char* default_model_name; +}; + +/****************************************************************************************\ +* Normal Bayes Classifier * +\****************************************************************************************/ + +/* The structure, representing the grid range of statmodel parameters. + It is used for optimizing statmodel accuracy by varying model parameters, + the accuracy estimate being computed by cross-validation. + The grid is logarithmic, so must be greater then 1. */ + +class CvMLData; + +struct CvParamGrid +{ + // SVM params type + enum { SVM_C=0, SVM_GAMMA=1, SVM_P=2, SVM_NU=3, SVM_COEF=4, SVM_DEGREE=5 }; + + CvParamGrid() + { + min_val = max_val = step = 0; + } + + CvParamGrid( double min_val, double max_val, double log_step ); + //CvParamGrid( int param_id ); + bool check() const; + + CV_PROP_RW double min_val; + CV_PROP_RW double max_val; + CV_PROP_RW double step; +}; + +inline CvParamGrid::CvParamGrid( double _min_val, double _max_val, double _log_step ) +{ + min_val = _min_val; + max_val = _max_val; + step = _log_step; +} + +class CvNormalBayesClassifier : public CvStatModel +{ +public: + CV_WRAP CvNormalBayesClassifier(); + virtual ~CvNormalBayesClassifier(); + + CvNormalBayesClassifier( const CvMat* trainData, const CvMat* responses, + const CvMat* varIdx=0, const CvMat* sampleIdx=0 ); + + virtual bool train( const CvMat* trainData, const CvMat* responses, + const CvMat* varIdx = 0, const CvMat* sampleIdx=0, bool update=false ); + + virtual float predict( const CvMat* samples, CV_OUT CvMat* results=0, CV_OUT CvMat* results_prob=0 ) const; + CV_WRAP virtual void clear(); + + CV_WRAP CvNormalBayesClassifier( const cv::Mat& trainData, const cv::Mat& responses, + const cv::Mat& varIdx=cv::Mat(), const cv::Mat& sampleIdx=cv::Mat() ); + CV_WRAP virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, + const cv::Mat& varIdx = cv::Mat(), const cv::Mat& sampleIdx=cv::Mat(), + bool update=false ); + CV_WRAP virtual float predict( const cv::Mat& samples, CV_OUT cv::Mat* results=0, CV_OUT cv::Mat* results_prob=0 ) const; + + virtual void write( CvFileStorage* storage, const char* name ) const; + virtual void read( CvFileStorage* storage, CvFileNode* node ); + +protected: + int var_count, var_all; + CvMat* var_idx; + CvMat* cls_labels; + CvMat** count; + CvMat** sum; + CvMat** productsum; + CvMat** avg; + CvMat** inv_eigen_values; + CvMat** cov_rotate_mats; + CvMat* c; +}; + + +/****************************************************************************************\ +* K-Nearest Neighbour Classifier * +\****************************************************************************************/ + +// k Nearest Neighbors +class CvKNearest : public CvStatModel +{ +public: + + CV_WRAP CvKNearest(); + virtual ~CvKNearest(); + + CvKNearest( const CvMat* trainData, const CvMat* responses, + const CvMat* sampleIdx=0, bool isRegression=false, int max_k=32 ); + + virtual bool train( const CvMat* trainData, const CvMat* responses, + const CvMat* sampleIdx=0, bool is_regression=false, + int maxK=32, bool updateBase=false ); + + virtual float find_nearest( const CvMat* samples, int k, CV_OUT CvMat* results=0, + const float** neighbors=0, CV_OUT CvMat* neighborResponses=0, CV_OUT CvMat* dist=0 ) const; + + CV_WRAP CvKNearest( const cv::Mat& trainData, const cv::Mat& responses, + const cv::Mat& sampleIdx=cv::Mat(), bool isRegression=false, int max_k=32 ); + + CV_WRAP virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, + const cv::Mat& sampleIdx=cv::Mat(), bool isRegression=false, + int maxK=32, bool updateBase=false ); + + virtual float find_nearest( const cv::Mat& samples, int k, cv::Mat* results=0, + const float** neighbors=0, cv::Mat* neighborResponses=0, + cv::Mat* dist=0 ) const; + CV_WRAP virtual float find_nearest( const cv::Mat& samples, int k, CV_OUT cv::Mat& results, + CV_OUT cv::Mat& neighborResponses, CV_OUT cv::Mat& dists) const; + + virtual void clear(); + int get_max_k() const; + int get_var_count() const; + int get_sample_count() const; + bool is_regression() const; + + virtual float write_results( int k, int k1, int start, int end, + const float* neighbor_responses, const float* dist, CvMat* _results, + CvMat* _neighbor_responses, CvMat* _dist, Cv32suf* sort_buf ) const; + + virtual void find_neighbors_direct( const CvMat* _samples, int k, int start, int end, + float* neighbor_responses, const float** neighbors, float* dist ) const; + +protected: + + int max_k, var_count; + int total; + bool regression; + CvVectors* samples; +}; + +/****************************************************************************************\ +* Support Vector Machines * +\****************************************************************************************/ + +// SVM training parameters +struct CvSVMParams +{ + CvSVMParams(); + CvSVMParams( int svm_type, int kernel_type, + double degree, double gamma, double coef0, + double Cvalue, double nu, double p, + CvMat* class_weights, CvTermCriteria term_crit ); + + CV_PROP_RW int svm_type; + CV_PROP_RW int kernel_type; + CV_PROP_RW double degree; // for poly + CV_PROP_RW double gamma; // for poly/rbf/sigmoid/chi2 + CV_PROP_RW double coef0; // for poly/sigmoid + + CV_PROP_RW double C; // for CV_SVM_C_SVC, CV_SVM_EPS_SVR and CV_SVM_NU_SVR + CV_PROP_RW double nu; // for CV_SVM_NU_SVC, CV_SVM_ONE_CLASS, and CV_SVM_NU_SVR + CV_PROP_RW double p; // for CV_SVM_EPS_SVR + CvMat* class_weights; // for CV_SVM_C_SVC + CV_PROP_RW CvTermCriteria term_crit; // termination criteria +}; + + +struct CvSVMKernel +{ + typedef void (CvSVMKernel::*Calc)( int vec_count, int vec_size, const float** vecs, + const float* another, float* results ); + CvSVMKernel(); + CvSVMKernel( const CvSVMParams* params, Calc _calc_func ); + virtual bool create( const CvSVMParams* params, Calc _calc_func ); + virtual ~CvSVMKernel(); + + virtual void clear(); + virtual void calc( int vcount, int n, const float** vecs, const float* another, float* results ); + + const CvSVMParams* params; + Calc calc_func; + + virtual void calc_non_rbf_base( int vec_count, int vec_size, const float** vecs, + const float* another, float* results, + double alpha, double beta ); + virtual void calc_intersec( int vcount, int var_count, const float** vecs, + const float* another, float* results ); + virtual void calc_chi2( int vec_count, int vec_size, const float** vecs, + const float* another, float* results ); + virtual void calc_linear( int vec_count, int vec_size, const float** vecs, + const float* another, float* results ); + virtual void calc_rbf( int vec_count, int vec_size, const float** vecs, + const float* another, float* results ); + virtual void calc_poly( int vec_count, int vec_size, const float** vecs, + const float* another, float* results ); + virtual void calc_sigmoid( int vec_count, int vec_size, const float** vecs, + const float* another, float* results ); +}; + + +struct CvSVMKernelRow +{ + CvSVMKernelRow* prev; + CvSVMKernelRow* next; + float* data; +}; + + +struct CvSVMSolutionInfo +{ + double obj; + double rho; + double upper_bound_p; + double upper_bound_n; + double r; // for Solver_NU +}; + +class CvSVMSolver +{ +public: + typedef bool (CvSVMSolver::*SelectWorkingSet)( int& i, int& j ); + typedef float* (CvSVMSolver::*GetRow)( int i, float* row, float* dst, bool existed ); + typedef void (CvSVMSolver::*CalcRho)( double& rho, double& r ); + + CvSVMSolver(); + + CvSVMSolver( int count, int var_count, const float** samples, schar* y, + int alpha_count, double* alpha, double Cp, double Cn, + CvMemStorage* storage, CvSVMKernel* kernel, GetRow get_row, + SelectWorkingSet select_working_set, CalcRho calc_rho ); + virtual bool create( int count, int var_count, const float** samples, schar* y, + int alpha_count, double* alpha, double Cp, double Cn, + CvMemStorage* storage, CvSVMKernel* kernel, GetRow get_row, + SelectWorkingSet select_working_set, CalcRho calc_rho ); + virtual ~CvSVMSolver(); + + virtual void clear(); + virtual bool solve_generic( CvSVMSolutionInfo& si ); + + virtual bool solve_c_svc( int count, int var_count, const float** samples, schar* y, + double Cp, double Cn, CvMemStorage* storage, + CvSVMKernel* kernel, double* alpha, CvSVMSolutionInfo& si ); + virtual bool solve_nu_svc( int count, int var_count, const float** samples, schar* y, + CvMemStorage* storage, CvSVMKernel* kernel, + double* alpha, CvSVMSolutionInfo& si ); + virtual bool solve_one_class( int count, int var_count, const float** samples, + CvMemStorage* storage, CvSVMKernel* kernel, + double* alpha, CvSVMSolutionInfo& si ); + + virtual bool solve_eps_svr( int count, int var_count, const float** samples, const float* y, + CvMemStorage* storage, CvSVMKernel* kernel, + double* alpha, CvSVMSolutionInfo& si ); + + virtual bool solve_nu_svr( int count, int var_count, const float** samples, const float* y, + CvMemStorage* storage, CvSVMKernel* kernel, + double* alpha, CvSVMSolutionInfo& si ); + + virtual float* get_row_base( int i, bool* _existed ); + virtual float* get_row( int i, float* dst ); + + int sample_count; + int var_count; + int cache_size; + int cache_line_size; + const float** samples; + const CvSVMParams* params; + CvMemStorage* storage; + CvSVMKernelRow lru_list; + CvSVMKernelRow* rows; + + int alpha_count; + + double* G; + double* alpha; + + // -1 - lower bound, 0 - free, 1 - upper bound + schar* alpha_status; + + schar* y; + double* b; + float* buf[2]; + double eps; + int max_iter; + double C[2]; // C[0] == Cn, C[1] == Cp + CvSVMKernel* kernel; + + SelectWorkingSet select_working_set_func; + CalcRho calc_rho_func; + GetRow get_row_func; + + virtual bool select_working_set( int& i, int& j ); + virtual bool select_working_set_nu_svm( int& i, int& j ); + virtual void calc_rho( double& rho, double& r ); + virtual void calc_rho_nu_svm( double& rho, double& r ); + + virtual float* get_row_svc( int i, float* row, float* dst, bool existed ); + virtual float* get_row_one_class( int i, float* row, float* dst, bool existed ); + virtual float* get_row_svr( int i, float* row, float* dst, bool existed ); +}; + + +struct CvSVMDecisionFunc +{ + double rho; + int sv_count; + double* alpha; + int* sv_index; +}; + + +// SVM model +class CvSVM : public CvStatModel +{ +public: + // SVM type + enum { C_SVC=100, NU_SVC=101, ONE_CLASS=102, EPS_SVR=103, NU_SVR=104 }; + + // SVM kernel type + enum { LINEAR=0, POLY=1, RBF=2, SIGMOID=3, CHI2=4, INTER=5 }; + + // SVM params type + enum { C=0, GAMMA=1, P=2, NU=3, COEF=4, DEGREE=5 }; + + CV_WRAP CvSVM(); + virtual ~CvSVM(); + + CvSVM( const CvMat* trainData, const CvMat* responses, + const CvMat* varIdx=0, const CvMat* sampleIdx=0, + CvSVMParams params=CvSVMParams() ); + + virtual bool train( const CvMat* trainData, const CvMat* responses, + const CvMat* varIdx=0, const CvMat* sampleIdx=0, + CvSVMParams params=CvSVMParams() ); + + virtual bool train_auto( const CvMat* trainData, const CvMat* responses, + const CvMat* varIdx, const CvMat* sampleIdx, CvSVMParams params, + int kfold = 10, + CvParamGrid Cgrid = get_default_grid(CvSVM::C), + CvParamGrid gammaGrid = get_default_grid(CvSVM::GAMMA), + CvParamGrid pGrid = get_default_grid(CvSVM::P), + CvParamGrid nuGrid = get_default_grid(CvSVM::NU), + CvParamGrid coeffGrid = get_default_grid(CvSVM::COEF), + CvParamGrid degreeGrid = get_default_grid(CvSVM::DEGREE), + bool balanced=false ); + + virtual float predict( const CvMat* sample, bool returnDFVal=false ) const; + virtual float predict( const CvMat* samples, CV_OUT CvMat* results, bool returnDFVal=false ) const; + + CV_WRAP CvSVM( const cv::Mat& trainData, const cv::Mat& responses, + const cv::Mat& varIdx=cv::Mat(), const cv::Mat& sampleIdx=cv::Mat(), + CvSVMParams params=CvSVMParams() ); + + CV_WRAP virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, + const cv::Mat& varIdx=cv::Mat(), const cv::Mat& sampleIdx=cv::Mat(), + CvSVMParams params=CvSVMParams() ); + + CV_WRAP virtual bool train_auto( const cv::Mat& trainData, const cv::Mat& responses, + const cv::Mat& varIdx, const cv::Mat& sampleIdx, CvSVMParams params, + int k_fold = 10, + CvParamGrid Cgrid = CvSVM::get_default_grid(CvSVM::C), + CvParamGrid gammaGrid = CvSVM::get_default_grid(CvSVM::GAMMA), + CvParamGrid pGrid = CvSVM::get_default_grid(CvSVM::P), + CvParamGrid nuGrid = CvSVM::get_default_grid(CvSVM::NU), + CvParamGrid coeffGrid = CvSVM::get_default_grid(CvSVM::COEF), + CvParamGrid degreeGrid = CvSVM::get_default_grid(CvSVM::DEGREE), + bool balanced=false); + CV_WRAP virtual float predict( const cv::Mat& sample, bool returnDFVal=false ) const; + CV_WRAP_AS(predict_all) virtual void predict( cv::InputArray samples, cv::OutputArray results ) const; + + CV_WRAP virtual int get_support_vector_count() const; + virtual const float* get_support_vector(int i) const; + virtual CvSVMParams get_params() const { return params; } + CV_WRAP virtual void clear(); + + virtual const CvSVMDecisionFunc* get_decision_function() const { return decision_func; } + + static CvParamGrid get_default_grid( int param_id ); + + virtual void write( CvFileStorage* storage, const char* name ) const; + virtual void read( CvFileStorage* storage, CvFileNode* node ); + CV_WRAP int get_var_count() const { return var_idx ? var_idx->cols : var_all; } + +protected: + + virtual bool set_params( const CvSVMParams& params ); + virtual bool train1( int sample_count, int var_count, const float** samples, + const void* responses, double Cp, double Cn, + CvMemStorage* _storage, double* alpha, double& rho ); + virtual bool do_train( int svm_type, int sample_count, int var_count, const float** samples, + const CvMat* responses, CvMemStorage* _storage, double* alpha ); + virtual void create_kernel(); + virtual void create_solver(); + + virtual float predict( const float* row_sample, int row_len, bool returnDFVal=false ) const; + + virtual void write_params( CvFileStorage* fs ) const; + virtual void read_params( CvFileStorage* fs, CvFileNode* node ); + + void optimize_linear_svm(); + + CvSVMParams params; + CvMat* class_labels; + int var_all; + float** sv; + int sv_total; + CvMat* var_idx; + CvMat* class_weights; + CvSVMDecisionFunc* decision_func; + CvMemStorage* storage; + + CvSVMSolver* solver; + CvSVMKernel* kernel; + +private: + CvSVM(const CvSVM&); + CvSVM& operator = (const CvSVM&); +}; + +/****************************************************************************************\ +* Expectation - Maximization * +\****************************************************************************************/ +namespace cv +{ +class EM : public Algorithm +{ +public: + // Type of covariation matrices + enum {COV_MAT_SPHERICAL=0, COV_MAT_DIAGONAL=1, COV_MAT_GENERIC=2, COV_MAT_DEFAULT=COV_MAT_DIAGONAL}; + + // Default parameters + enum {DEFAULT_NCLUSTERS=5, DEFAULT_MAX_ITERS=100}; + + // The initial step + enum {START_E_STEP=1, START_M_STEP=2, START_AUTO_STEP=0}; + + CV_WRAP EM(int nclusters=EM::DEFAULT_NCLUSTERS, int covMatType=EM::COV_MAT_DIAGONAL, + const TermCriteria& termCrit=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, + EM::DEFAULT_MAX_ITERS, FLT_EPSILON)); + + virtual ~EM(); + CV_WRAP virtual void clear(); + + CV_WRAP virtual bool train(InputArray samples, + OutputArray logLikelihoods=noArray(), + OutputArray labels=noArray(), + OutputArray probs=noArray()); + + CV_WRAP virtual bool trainE(InputArray samples, + InputArray means0, + InputArray covs0=noArray(), + InputArray weights0=noArray(), + OutputArray logLikelihoods=noArray(), + OutputArray labels=noArray(), + OutputArray probs=noArray()); + + CV_WRAP virtual bool trainM(InputArray samples, + InputArray probs0, + OutputArray logLikelihoods=noArray(), + OutputArray labels=noArray(), + OutputArray probs=noArray()); + + CV_WRAP Vec2d predict(InputArray sample, + OutputArray probs=noArray()) const; + + CV_WRAP bool isTrained() const; + + AlgorithmInfo* info() const; + virtual void read(const FileNode& fn); + +protected: + + virtual void setTrainData(int startStep, const Mat& samples, + const Mat* probs0, + const Mat* means0, + const std::vector* covs0, + const Mat* weights0); + + bool doTrain(int startStep, + OutputArray logLikelihoods, + OutputArray labels, + OutputArray probs); + virtual void eStep(); + virtual void mStep(); + + void clusterTrainSamples(); + void decomposeCovs(); + void computeLogWeightDivDet(); + + Vec2d computeProbabilities(const Mat& sample, Mat* probs) const; + + // all inner matrices have type CV_64FC1 + CV_PROP_RW int nclusters; + CV_PROP_RW int covMatType; + CV_PROP_RW int maxIters; + CV_PROP_RW double epsilon; + + Mat trainSamples; + Mat trainProbs; + Mat trainLogLikelihoods; + Mat trainLabels; + + CV_PROP Mat weights; + CV_PROP Mat means; + CV_PROP std::vector covs; + + std::vector covsEigenValues; + std::vector covsRotateMats; + std::vector invCovsEigenValues; + Mat logWeightDivDet; +}; +} // namespace cv + +/****************************************************************************************\ +* Decision Tree * +\****************************************************************************************/\ +struct CvPair16u32s +{ + unsigned short* u; + int* i; +}; + + +#define CV_DTREE_CAT_DIR(idx,subset) \ + (2*((subset[(idx)>>5]&(1 << ((idx) & 31)))==0)-1) + +struct CvDTreeSplit +{ + int var_idx; + int condensed_idx; + int inversed; + float quality; + CvDTreeSplit* next; + union + { + int subset[2]; + struct + { + float c; + int split_point; + } + ord; + }; +}; + +struct CvDTreeNode +{ + int class_idx; + int Tn; + double value; + + CvDTreeNode* parent; + CvDTreeNode* left; + CvDTreeNode* right; + + CvDTreeSplit* split; + + int sample_count; + int depth; + int* num_valid; + int offset; + int buf_idx; + double maxlr; + + // global pruning data + int complexity; + double alpha; + double node_risk, tree_risk, tree_error; + + // cross-validation pruning data + int* cv_Tn; + double* cv_node_risk; + double* cv_node_error; + + int get_num_valid(int vi) { return num_valid ? num_valid[vi] : sample_count; } + void set_num_valid(int vi, int n) { if( num_valid ) num_valid[vi] = n; } +}; + + +struct CvDTreeParams +{ + CV_PROP_RW int max_categories; + CV_PROP_RW int max_depth; + CV_PROP_RW int min_sample_count; + CV_PROP_RW int cv_folds; + CV_PROP_RW bool use_surrogates; + CV_PROP_RW bool use_1se_rule; + CV_PROP_RW bool truncate_pruned_tree; + CV_PROP_RW float regression_accuracy; + const float* priors; + + CvDTreeParams(); + CvDTreeParams( int max_depth, int min_sample_count, + float regression_accuracy, bool use_surrogates, + int max_categories, int cv_folds, + bool use_1se_rule, bool truncate_pruned_tree, + const float* priors ); +}; + + +struct CvDTreeTrainData +{ + CvDTreeTrainData(); + CvDTreeTrainData( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + const CvDTreeParams& params=CvDTreeParams(), + bool _shared=false, bool _add_labels=false ); + virtual ~CvDTreeTrainData(); + + virtual void set_data( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + const CvDTreeParams& params=CvDTreeParams(), + bool _shared=false, bool _add_labels=false, + bool _update_data=false ); + virtual void do_responses_copy(); + + virtual void get_vectors( const CvMat* _subsample_idx, + float* values, uchar* missing, float* responses, bool get_class_idx=false ); + + virtual CvDTreeNode* subsample_data( const CvMat* _subsample_idx ); + + virtual void write_params( CvFileStorage* fs ) const; + virtual void read_params( CvFileStorage* fs, CvFileNode* node ); + + // release all the data + virtual void clear(); + + int get_num_classes() const; + int get_var_type(int vi) const; + int get_work_var_count() const {return work_var_count;} + + virtual const float* get_ord_responses( CvDTreeNode* n, float* values_buf, int* sample_indices_buf ); + virtual const int* get_class_labels( CvDTreeNode* n, int* labels_buf ); + virtual const int* get_cv_labels( CvDTreeNode* n, int* labels_buf ); + virtual const int* get_sample_indices( CvDTreeNode* n, int* indices_buf ); + virtual const int* get_cat_var_data( CvDTreeNode* n, int vi, int* cat_values_buf ); + virtual void get_ord_var_data( CvDTreeNode* n, int vi, float* ord_values_buf, int* sorted_indices_buf, + const float** ord_values, const int** sorted_indices, int* sample_indices_buf ); + virtual int get_child_buf_idx( CvDTreeNode* n ); + + //////////////////////////////////// + + virtual bool set_params( const CvDTreeParams& params ); + virtual CvDTreeNode* new_node( CvDTreeNode* parent, int count, + int storage_idx, int offset ); + + virtual CvDTreeSplit* new_split_ord( int vi, float cmp_val, + int split_point, int inversed, float quality ); + virtual CvDTreeSplit* new_split_cat( int vi, float quality ); + virtual void free_node_data( CvDTreeNode* node ); + virtual void free_train_data(); + virtual void free_node( CvDTreeNode* node ); + + int sample_count, var_all, var_count, max_c_count; + int ord_var_count, cat_var_count, work_var_count; + bool have_labels, have_priors; + bool is_classifier; + int tflag; + + const CvMat* train_data; + const CvMat* responses; + CvMat* responses_copy; // used in Boosting + + int buf_count, buf_size; // buf_size is obsolete, please do not use it, use expression ((int64)buf->rows * (int64)buf->cols / buf_count) instead + bool shared; + int is_buf_16u; + + CvMat* cat_count; + CvMat* cat_ofs; + CvMat* cat_map; + + CvMat* counts; + CvMat* buf; + inline size_t get_length_subbuf() const + { + size_t res = (size_t)(work_var_count + 1) * (size_t)sample_count; + return res; + } + + CvMat* direction; + CvMat* split_buf; + + CvMat* var_idx; + CvMat* var_type; // i-th element = + // k<0 - ordered + // k>=0 - categorical, see k-th element of cat_* arrays + CvMat* priors; + CvMat* priors_mult; + + CvDTreeParams params; + + CvMemStorage* tree_storage; + CvMemStorage* temp_storage; + + CvDTreeNode* data_root; + + CvSet* node_heap; + CvSet* split_heap; + CvSet* cv_heap; + CvSet* nv_heap; + + cv::RNG* rng; +}; + +class CvDTree; +class CvForestTree; + +namespace cv +{ + struct DTreeBestSplitFinder; + struct ForestTreeBestSplitFinder; +} + +class CvDTree : public CvStatModel +{ +public: + CV_WRAP CvDTree(); + virtual ~CvDTree(); + + virtual bool train( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + CvDTreeParams params=CvDTreeParams() ); + + virtual bool train( CvMLData* trainData, CvDTreeParams params=CvDTreeParams() ); + + // type in {CV_TRAIN_ERROR, CV_TEST_ERROR} + virtual float calc_error( CvMLData* trainData, int type, std::vector *resp = 0 ); + + virtual bool train( CvDTreeTrainData* trainData, const CvMat* subsampleIdx ); + + virtual CvDTreeNode* predict( const CvMat* sample, const CvMat* missingDataMask=0, + bool preprocessedInput=false ) const; + + CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag, + const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), + const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), + const cv::Mat& missingDataMask=cv::Mat(), + CvDTreeParams params=CvDTreeParams() ); + + CV_WRAP virtual CvDTreeNode* predict( const cv::Mat& sample, const cv::Mat& missingDataMask=cv::Mat(), + bool preprocessedInput=false ) const; + CV_WRAP virtual cv::Mat getVarImportance(); + + virtual const CvMat* get_var_importance(); + CV_WRAP virtual void clear(); + + virtual void read( CvFileStorage* fs, CvFileNode* node ); + virtual void write( CvFileStorage* fs, const char* name ) const; + + // special read & write methods for trees in the tree ensembles + virtual void read( CvFileStorage* fs, CvFileNode* node, + CvDTreeTrainData* data ); + virtual void write( CvFileStorage* fs ) const; + + const CvDTreeNode* get_root() const; + int get_pruned_tree_idx() const; + CvDTreeTrainData* get_data(); + +protected: + friend struct cv::DTreeBestSplitFinder; + + virtual bool do_train( const CvMat* _subsample_idx ); + + virtual void try_split_node( CvDTreeNode* n ); + virtual void split_node_data( CvDTreeNode* n ); + virtual CvDTreeSplit* find_best_split( CvDTreeNode* n ); + virtual CvDTreeSplit* find_split_ord_class( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_split_cat_class( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_split_ord_reg( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_split_cat_reg( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_surrogate_split_ord( CvDTreeNode* n, int vi, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_surrogate_split_cat( CvDTreeNode* n, int vi, uchar* ext_buf = 0 ); + virtual double calc_node_dir( CvDTreeNode* node ); + virtual void complete_node_dir( CvDTreeNode* node ); + virtual void cluster_categories( const int* vectors, int vector_count, + int var_count, int* sums, int k, int* cluster_labels ); + + virtual void calc_node_value( CvDTreeNode* node ); + + virtual void prune_cv(); + virtual double update_tree_rnc( int T, int fold ); + virtual int cut_tree( int T, int fold, double min_alpha ); + virtual void free_prune_data(bool cut_tree); + virtual void free_tree(); + + virtual void write_node( CvFileStorage* fs, CvDTreeNode* node ) const; + virtual void write_split( CvFileStorage* fs, CvDTreeSplit* split ) const; + virtual CvDTreeNode* read_node( CvFileStorage* fs, CvFileNode* node, CvDTreeNode* parent ); + virtual CvDTreeSplit* read_split( CvFileStorage* fs, CvFileNode* node ); + virtual void write_tree_nodes( CvFileStorage* fs ) const; + virtual void read_tree_nodes( CvFileStorage* fs, CvFileNode* node ); + + CvDTreeNode* root; + CvMat* var_importance; + CvDTreeTrainData* data; + CvMat train_data_hdr, responses_hdr; + cv::Mat train_data_mat, responses_mat; + +public: + int pruned_tree_idx; +}; + + +/****************************************************************************************\ +* Random Trees Classifier * +\****************************************************************************************/ + +class CvRTrees; + +class CvForestTree: public CvDTree +{ +public: + CvForestTree(); + virtual ~CvForestTree(); + + virtual bool train( CvDTreeTrainData* trainData, const CvMat* _subsample_idx, CvRTrees* forest ); + + virtual int get_var_count() const {return data ? data->var_count : 0;} + virtual void read( CvFileStorage* fs, CvFileNode* node, CvRTrees* forest, CvDTreeTrainData* _data ); + + /* dummy methods to avoid warnings: BEGIN */ + virtual bool train( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + CvDTreeParams params=CvDTreeParams() ); + + virtual bool train( CvDTreeTrainData* trainData, const CvMat* _subsample_idx ); + virtual void read( CvFileStorage* fs, CvFileNode* node ); + virtual void read( CvFileStorage* fs, CvFileNode* node, + CvDTreeTrainData* data ); + /* dummy methods to avoid warnings: END */ + +protected: + friend struct cv::ForestTreeBestSplitFinder; + + virtual CvDTreeSplit* find_best_split( CvDTreeNode* n ); + CvRTrees* forest; +}; + + +struct CvRTParams : public CvDTreeParams +{ + //Parameters for the forest + CV_PROP_RW bool calc_var_importance; // true <=> RF processes variable importance + CV_PROP_RW int nactive_vars; + CV_PROP_RW CvTermCriteria term_crit; + + CvRTParams(); + CvRTParams( int max_depth, int min_sample_count, + float regression_accuracy, bool use_surrogates, + int max_categories, const float* priors, bool calc_var_importance, + int nactive_vars, int max_num_of_trees_in_the_forest, + float forest_accuracy, int termcrit_type ); +}; + + +class CvRTrees : public CvStatModel +{ +public: + CV_WRAP CvRTrees(); + virtual ~CvRTrees(); + virtual bool train( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + CvRTParams params=CvRTParams() ); + + virtual bool train( CvMLData* data, CvRTParams params=CvRTParams() ); + virtual float predict( const CvMat* sample, const CvMat* missing = 0 ) const; + virtual float predict_prob( const CvMat* sample, const CvMat* missing = 0 ) const; + + CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag, + const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), + const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), + const cv::Mat& missingDataMask=cv::Mat(), + CvRTParams params=CvRTParams() ); + CV_WRAP virtual float predict( const cv::Mat& sample, const cv::Mat& missing = cv::Mat() ) const; + CV_WRAP virtual float predict_prob( const cv::Mat& sample, const cv::Mat& missing = cv::Mat() ) const; + CV_WRAP virtual cv::Mat getVarImportance(); + + CV_WRAP virtual void clear(); + + virtual const CvMat* get_var_importance(); + virtual float get_proximity( const CvMat* sample1, const CvMat* sample2, + const CvMat* missing1 = 0, const CvMat* missing2 = 0 ) const; + + virtual float calc_error( CvMLData* data, int type , std::vector* resp = 0 ); // type in {CV_TRAIN_ERROR, CV_TEST_ERROR} + + virtual float get_train_error(); + + virtual void read( CvFileStorage* fs, CvFileNode* node ); + virtual void write( CvFileStorage* fs, const char* name ) const; + + CvMat* get_active_var_mask(); + CvRNG* get_rng(); + + int get_tree_count() const; + CvForestTree* get_tree(int i) const; + +protected: + virtual cv::String getName() const; + + virtual bool grow_forest( const CvTermCriteria term_crit ); + + // array of the trees of the forest + CvForestTree** trees; + CvDTreeTrainData* data; + CvMat train_data_hdr, responses_hdr; + cv::Mat train_data_mat, responses_mat; + int ntrees; + int nclasses; + double oob_error; + CvMat* var_importance; + int nsamples; + + cv::RNG* rng; + CvMat* active_var_mask; +}; + +/****************************************************************************************\ +* Extremely randomized trees Classifier * +\****************************************************************************************/ +struct CvERTreeTrainData : public CvDTreeTrainData +{ + virtual void set_data( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + const CvDTreeParams& params=CvDTreeParams(), + bool _shared=false, bool _add_labels=false, + bool _update_data=false ); + virtual void get_ord_var_data( CvDTreeNode* n, int vi, float* ord_values_buf, int* missing_buf, + const float** ord_values, const int** missing, int* sample_buf = 0 ); + virtual const int* get_sample_indices( CvDTreeNode* n, int* indices_buf ); + virtual const int* get_cv_labels( CvDTreeNode* n, int* labels_buf ); + virtual const int* get_cat_var_data( CvDTreeNode* n, int vi, int* cat_values_buf ); + virtual void get_vectors( const CvMat* _subsample_idx, float* values, uchar* missing, + float* responses, bool get_class_idx=false ); + virtual CvDTreeNode* subsample_data( const CvMat* _subsample_idx ); + const CvMat* missing_mask; +}; + +class CvForestERTree : public CvForestTree +{ +protected: + virtual double calc_node_dir( CvDTreeNode* node ); + virtual CvDTreeSplit* find_split_ord_class( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_split_cat_class( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_split_ord_reg( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_split_cat_reg( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual void split_node_data( CvDTreeNode* n ); +}; + +class CvERTrees : public CvRTrees +{ +public: + CV_WRAP CvERTrees(); + virtual ~CvERTrees(); + virtual bool train( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + CvRTParams params=CvRTParams()); + CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag, + const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), + const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), + const cv::Mat& missingDataMask=cv::Mat(), + CvRTParams params=CvRTParams()); + virtual bool train( CvMLData* data, CvRTParams params=CvRTParams() ); +protected: + virtual cv::String getName() const; + virtual bool grow_forest( const CvTermCriteria term_crit ); +}; + + +/****************************************************************************************\ +* Boosted tree classifier * +\****************************************************************************************/ + +struct CvBoostParams : public CvDTreeParams +{ + CV_PROP_RW int boost_type; + CV_PROP_RW int weak_count; + CV_PROP_RW int split_criteria; + CV_PROP_RW double weight_trim_rate; + + CvBoostParams(); + CvBoostParams( int boost_type, int weak_count, double weight_trim_rate, + int max_depth, bool use_surrogates, const float* priors ); +}; + + +class CvBoost; + +class CvBoostTree: public CvDTree +{ +public: + CvBoostTree(); + virtual ~CvBoostTree(); + + virtual bool train( CvDTreeTrainData* trainData, + const CvMat* subsample_idx, CvBoost* ensemble ); + + virtual void scale( double s ); + virtual void read( CvFileStorage* fs, CvFileNode* node, + CvBoost* ensemble, CvDTreeTrainData* _data ); + virtual void clear(); + + /* dummy methods to avoid warnings: BEGIN */ + virtual bool train( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + CvDTreeParams params=CvDTreeParams() ); + virtual bool train( CvDTreeTrainData* trainData, const CvMat* _subsample_idx ); + + virtual void read( CvFileStorage* fs, CvFileNode* node ); + virtual void read( CvFileStorage* fs, CvFileNode* node, + CvDTreeTrainData* data ); + /* dummy methods to avoid warnings: END */ + +protected: + + virtual void try_split_node( CvDTreeNode* n ); + virtual CvDTreeSplit* find_surrogate_split_ord( CvDTreeNode* n, int vi, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_surrogate_split_cat( CvDTreeNode* n, int vi, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_split_ord_class( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_split_cat_class( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_split_ord_reg( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_split_cat_reg( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual void calc_node_value( CvDTreeNode* n ); + virtual double calc_node_dir( CvDTreeNode* n ); + + CvBoost* ensemble; +}; + + +class CvBoost : public CvStatModel +{ +public: + // Boosting type + enum { DISCRETE=0, REAL=1, LOGIT=2, GENTLE=3 }; + + // Splitting criteria + enum { DEFAULT=0, GINI=1, MISCLASS=3, SQERR=4 }; + + CV_WRAP CvBoost(); + virtual ~CvBoost(); + + CvBoost( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + CvBoostParams params=CvBoostParams() ); + + virtual bool train( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + CvBoostParams params=CvBoostParams(), + bool update=false ); + + virtual bool train( CvMLData* data, + CvBoostParams params=CvBoostParams(), + bool update=false ); + + virtual float predict( const CvMat* sample, const CvMat* missing=0, + CvMat* weak_responses=0, CvSlice slice=CV_WHOLE_SEQ, + bool raw_mode=false, bool return_sum=false ) const; + + CV_WRAP CvBoost( const cv::Mat& trainData, int tflag, + const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), + const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), + const cv::Mat& missingDataMask=cv::Mat(), + CvBoostParams params=CvBoostParams() ); + + CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag, + const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), + const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), + const cv::Mat& missingDataMask=cv::Mat(), + CvBoostParams params=CvBoostParams(), + bool update=false ); + + CV_WRAP virtual float predict( const cv::Mat& sample, const cv::Mat& missing=cv::Mat(), + const cv::Range& slice=cv::Range::all(), bool rawMode=false, + bool returnSum=false ) const; + + virtual float calc_error( CvMLData* _data, int type , std::vector *resp = 0 ); // type in {CV_TRAIN_ERROR, CV_TEST_ERROR} + + CV_WRAP virtual void prune( CvSlice slice ); + + CV_WRAP virtual void clear(); + + virtual void write( CvFileStorage* storage, const char* name ) const; + virtual void read( CvFileStorage* storage, CvFileNode* node ); + virtual const CvMat* get_active_vars(bool absolute_idx=true); + + CvSeq* get_weak_predictors(); + + CvMat* get_weights(); + CvMat* get_subtree_weights(); + CvMat* get_weak_response(); + const CvBoostParams& get_params() const; + const CvDTreeTrainData* get_data() const; + +protected: + + virtual bool set_params( const CvBoostParams& params ); + virtual void update_weights( CvBoostTree* tree ); + virtual void trim_weights(); + virtual void write_params( CvFileStorage* fs ) const; + virtual void read_params( CvFileStorage* fs, CvFileNode* node ); + + virtual void initialize_weights(double (&p)[2]); + + CvDTreeTrainData* data; + CvMat train_data_hdr, responses_hdr; + cv::Mat train_data_mat, responses_mat; + CvBoostParams params; + CvSeq* weak; + + CvMat* active_vars; + CvMat* active_vars_abs; + bool have_active_cat_vars; + + CvMat* orig_response; + CvMat* sum_response; + CvMat* weak_eval; + CvMat* subsample_mask; + CvMat* weights; + CvMat* subtree_weights; + bool have_subsample; +}; + + +/****************************************************************************************\ +* Gradient Boosted Trees * +\****************************************************************************************/ + +// DataType: STRUCT CvGBTreesParams +// Parameters of GBT (Gradient Boosted trees model), including single +// tree settings and ensemble parameters. +// +// weak_count - count of trees in the ensemble +// loss_function_type - loss function used for ensemble training +// subsample_portion - portion of whole training set used for +// every single tree training. +// subsample_portion value is in (0.0, 1.0]. +// subsample_portion == 1.0 when whole dataset is +// used on each step. Count of sample used on each +// step is computed as +// int(total_samples_count * subsample_portion). +// shrinkage - regularization parameter. +// Each tree prediction is multiplied on shrinkage value. + + +struct CvGBTreesParams : public CvDTreeParams +{ + CV_PROP_RW int weak_count; + CV_PROP_RW int loss_function_type; + CV_PROP_RW float subsample_portion; + CV_PROP_RW float shrinkage; + + CvGBTreesParams(); + CvGBTreesParams( int loss_function_type, int weak_count, float shrinkage, + float subsample_portion, int max_depth, bool use_surrogates ); +}; + +// DataType: CLASS CvGBTrees +// Gradient Boosting Trees (GBT) algorithm implementation. +// +// data - training dataset +// params - parameters of the CvGBTrees +// weak - array[0..(class_count-1)] of CvSeq +// for storing tree ensembles +// orig_response - original responses of the training set samples +// sum_response - predicitons of the current model on the training dataset. +// this matrix is updated on every iteration. +// sum_response_tmp - predicitons of the model on the training set on the next +// step. On every iteration values of sum_responses_tmp are +// computed via sum_responses values. When the current +// step is complete sum_response values become equal to +// sum_responses_tmp. +// sampleIdx - indices of samples used for training the ensemble. +// CvGBTrees training procedure takes a set of samples +// (train_data) and a set of responses (responses). +// Only pairs (train_data[i], responses[i]), where i is +// in sample_idx are used for training the ensemble. +// subsample_train - indices of samples used for training a single decision +// tree on the current step. This indices are countered +// relatively to the sample_idx, so that pairs +// (train_data[sample_idx[i]], responses[sample_idx[i]]) +// are used for training a decision tree. +// Training set is randomly splited +// in two parts (subsample_train and subsample_test) +// on every iteration accordingly to the portion parameter. +// subsample_test - relative indices of samples from the training set, +// which are not used for training a tree on the current +// step. +// missing - mask of the missing values in the training set. This +// matrix has the same size as train_data. 1 - missing +// value, 0 - not a missing value. +// class_labels - output class labels map. +// rng - random number generator. Used for spliting the +// training set. +// class_count - count of output classes. +// class_count == 1 in the case of regression, +// and > 1 in the case of classification. +// delta - Huber loss function parameter. +// base_value - start point of the gradient descent procedure. +// model prediction is +// f(x) = f_0 + sum_{i=1..weak_count-1}(f_i(x)), where +// f_0 is the base value. + + + +class CvGBTrees : public CvStatModel +{ +public: + + /* + // DataType: ENUM + // Loss functions implemented in CvGBTrees. + // + // SQUARED_LOSS + // problem: regression + // loss = (x - x')^2 + // + // ABSOLUTE_LOSS + // problem: regression + // loss = abs(x - x') + // + // HUBER_LOSS + // problem: regression + // loss = delta*( abs(x - x') - delta/2), if abs(x - x') > delta + // 1/2*(x - x')^2, if abs(x - x') <= delta, + // where delta is the alpha-quantile of pseudo responses from + // the training set. + // + // DEVIANCE_LOSS + // problem: classification + // + */ + enum {SQUARED_LOSS=0, ABSOLUTE_LOSS, HUBER_LOSS=3, DEVIANCE_LOSS}; + + + /* + // Default constructor. Creates a model only (without training). + // Should be followed by one form of the train(...) function. + // + // API + // CvGBTrees(); + + // INPUT + // OUTPUT + // RESULT + */ + CV_WRAP CvGBTrees(); + + + /* + // Full form constructor. Creates a gradient boosting model and does the + // train. + // + // API + // CvGBTrees( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + CvGBTreesParams params=CvGBTreesParams() ); + + // INPUT + // trainData - a set of input feature vectors. + // size of matrix is + // x + // or x + // depending on the tflag parameter. + // matrix values are float. + // tflag - a flag showing how do samples stored in the + // trainData matrix row by row (tflag=CV_ROW_SAMPLE) + // or column by column (tflag=CV_COL_SAMPLE). + // responses - a vector of responses corresponding to the samples + // in trainData. + // varIdx - indices of used variables. zero value means that all + // variables are active. + // sampleIdx - indices of used samples. zero value means that all + // samples from trainData are in the training set. + // varType - vector of length. gives every + // variable type CV_VAR_CATEGORICAL or CV_VAR_ORDERED. + // varType = 0 means all variables are numerical. + // missingDataMask - a mask of misiing values in trainData. + // missingDataMask = 0 means that there are no missing + // values. + // params - parameters of GTB algorithm. + // OUTPUT + // RESULT + */ + CvGBTrees( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + CvGBTreesParams params=CvGBTreesParams() ); + + + /* + // Destructor. + */ + virtual ~CvGBTrees(); + + + /* + // Gradient tree boosting model training + // + // API + // virtual bool train( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + CvGBTreesParams params=CvGBTreesParams(), + bool update=false ); + + // INPUT + // trainData - a set of input feature vectors. + // size of matrix is + // x + // or x + // depending on the tflag parameter. + // matrix values are float. + // tflag - a flag showing how do samples stored in the + // trainData matrix row by row (tflag=CV_ROW_SAMPLE) + // or column by column (tflag=CV_COL_SAMPLE). + // responses - a vector of responses corresponding to the samples + // in trainData. + // varIdx - indices of used variables. zero value means that all + // variables are active. + // sampleIdx - indices of used samples. zero value means that all + // samples from trainData are in the training set. + // varType - vector of length. gives every + // variable type CV_VAR_CATEGORICAL or CV_VAR_ORDERED. + // varType = 0 means all variables are numerical. + // missingDataMask - a mask of misiing values in trainData. + // missingDataMask = 0 means that there are no missing + // values. + // params - parameters of GTB algorithm. + // update - is not supported now. (!) + // OUTPUT + // RESULT + // Error state. + */ + virtual bool train( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + CvGBTreesParams params=CvGBTreesParams(), + bool update=false ); + + + /* + // Gradient tree boosting model training + // + // API + // virtual bool train( CvMLData* data, + CvGBTreesParams params=CvGBTreesParams(), + bool update=false ) {return false;} + + // INPUT + // data - training set. + // params - parameters of GTB algorithm. + // update - is not supported now. (!) + // OUTPUT + // RESULT + // Error state. + */ + virtual bool train( CvMLData* data, + CvGBTreesParams params=CvGBTreesParams(), + bool update=false ); + + + /* + // Response value prediction + // + // API + // virtual float predict_serial( const CvMat* sample, const CvMat* missing=0, + CvMat* weak_responses=0, CvSlice slice = CV_WHOLE_SEQ, + int k=-1 ) const; + + // INPUT + // sample - input sample of the same type as in the training set. + // missing - missing values mask. missing=0 if there are no + // missing values in sample vector. + // weak_responses - predictions of all of the trees. + // not implemented (!) + // slice - part of the ensemble used for prediction. + // slice = CV_WHOLE_SEQ when all trees are used. + // k - number of ensemble used. + // k is in {-1,0,1,..,}. + // in the case of classification problem + // ensembles are built. + // If k = -1 ordinary prediction is the result, + // otherwise function gives the prediction of the + // k-th ensemble only. + // OUTPUT + // RESULT + // Predicted value. + */ + virtual float predict_serial( const CvMat* sample, const CvMat* missing=0, + CvMat* weakResponses=0, CvSlice slice = CV_WHOLE_SEQ, + int k=-1 ) const; + + /* + // Response value prediction. + // Parallel version (in the case of TBB existence) + // + // API + // virtual float predict( const CvMat* sample, const CvMat* missing=0, + CvMat* weak_responses=0, CvSlice slice = CV_WHOLE_SEQ, + int k=-1 ) const; + + // INPUT + // sample - input sample of the same type as in the training set. + // missing - missing values mask. missing=0 if there are no + // missing values in sample vector. + // weak_responses - predictions of all of the trees. + // not implemented (!) + // slice - part of the ensemble used for prediction. + // slice = CV_WHOLE_SEQ when all trees are used. + // k - number of ensemble used. + // k is in {-1,0,1,..,}. + // in the case of classification problem + // ensembles are built. + // If k = -1 ordinary prediction is the result, + // otherwise function gives the prediction of the + // k-th ensemble only. + // OUTPUT + // RESULT + // Predicted value. + */ + virtual float predict( const CvMat* sample, const CvMat* missing=0, + CvMat* weakResponses=0, CvSlice slice = CV_WHOLE_SEQ, + int k=-1 ) const; + + /* + // Deletes all the data. + // + // API + // virtual void clear(); + + // INPUT + // OUTPUT + // delete data, weak, orig_response, sum_response, + // weak_eval, subsample_train, subsample_test, + // sample_idx, missing, lass_labels + // delta = 0.0 + // RESULT + */ + CV_WRAP virtual void clear(); + + /* + // Compute error on the train/test set. + // + // API + // virtual float calc_error( CvMLData* _data, int type, + // std::vector *resp = 0 ); + // + // INPUT + // data - dataset + // type - defines which error is to compute: train (CV_TRAIN_ERROR) or + // test (CV_TEST_ERROR). + // OUTPUT + // resp - vector of predicitons + // RESULT + // Error value. + */ + virtual float calc_error( CvMLData* _data, int type, + std::vector *resp = 0 ); + + /* + // + // Write parameters of the gtb model and data. Write learned model. + // + // API + // virtual void write( CvFileStorage* fs, const char* name ) const; + // + // INPUT + // fs - file storage to read parameters from. + // name - model name. + // OUTPUT + // RESULT + */ + virtual void write( CvFileStorage* fs, const char* name ) const; + + + /* + // + // Read parameters of the gtb model and data. Read learned model. + // + // API + // virtual void read( CvFileStorage* fs, CvFileNode* node ); + // + // INPUT + // fs - file storage to read parameters from. + // node - file node. + // OUTPUT + // RESULT + */ + virtual void read( CvFileStorage* fs, CvFileNode* node ); + + + // new-style C++ interface + CV_WRAP CvGBTrees( const cv::Mat& trainData, int tflag, + const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), + const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), + const cv::Mat& missingDataMask=cv::Mat(), + CvGBTreesParams params=CvGBTreesParams() ); + + CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag, + const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), + const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), + const cv::Mat& missingDataMask=cv::Mat(), + CvGBTreesParams params=CvGBTreesParams(), + bool update=false ); + + CV_WRAP virtual float predict( const cv::Mat& sample, const cv::Mat& missing=cv::Mat(), + const cv::Range& slice = cv::Range::all(), + int k=-1 ) const; + +protected: + + /* + // Compute the gradient vector components. + // + // API + // virtual void find_gradient( const int k = 0); + + // INPUT + // k - used for classification problem, determining current + // tree ensemble. + // OUTPUT + // changes components of data->responses + // which correspond to samples used for training + // on the current step. + // RESULT + */ + virtual void find_gradient( const int k = 0); + + + /* + // + // Change values in tree leaves according to the used loss function. + // + // API + // virtual void change_values(CvDTree* tree, const int k = 0); + // + // INPUT + // tree - decision tree to change. + // k - used for classification problem, determining current + // tree ensemble. + // OUTPUT + // changes 'value' fields of the trees' leaves. + // changes sum_response_tmp. + // RESULT + */ + virtual void change_values(CvDTree* tree, const int k = 0); + + + /* + // + // Find optimal constant prediction value according to the used loss + // function. + // The goal is to find a constant which gives the minimal summary loss + // on the _Idx samples. + // + // API + // virtual float find_optimal_value( const CvMat* _Idx ); + // + // INPUT + // _Idx - indices of the samples from the training set. + // OUTPUT + // RESULT + // optimal constant value. + */ + virtual float find_optimal_value( const CvMat* _Idx ); + + + /* + // + // Randomly split the whole training set in two parts according + // to params.portion. + // + // API + // virtual void do_subsample(); + // + // INPUT + // OUTPUT + // subsample_train - indices of samples used for training + // subsample_test - indices of samples used for test + // RESULT + */ + virtual void do_subsample(); + + + /* + // + // Internal recursive function giving an array of subtree tree leaves. + // + // API + // void leaves_get( CvDTreeNode** leaves, int& count, CvDTreeNode* node ); + // + // INPUT + // node - current leaf. + // OUTPUT + // count - count of leaves in the subtree. + // leaves - array of pointers to leaves. + // RESULT + */ + void leaves_get( CvDTreeNode** leaves, int& count, CvDTreeNode* node ); + + + /* + // + // Get leaves of the tree. + // + // API + // CvDTreeNode** GetLeaves( const CvDTree* dtree, int& len ); + // + // INPUT + // dtree - decision tree. + // OUTPUT + // len - count of the leaves. + // RESULT + // CvDTreeNode** - array of pointers to leaves. + */ + CvDTreeNode** GetLeaves( const CvDTree* dtree, int& len ); + + + /* + // + // Is it a regression or a classification. + // + // API + // bool problem_type(); + // + // INPUT + // OUTPUT + // RESULT + // false if it is a classification problem, + // true - if regression. + */ + virtual bool problem_type() const; + + + /* + // + // Write parameters of the gtb model. + // + // API + // virtual void write_params( CvFileStorage* fs ) const; + // + // INPUT + // fs - file storage to write parameters to. + // OUTPUT + // RESULT + */ + virtual void write_params( CvFileStorage* fs ) const; + + + /* + // + // Read parameters of the gtb model and data. + // + // API + // virtual void read_params( CvFileStorage* fs ); + // + // INPUT + // fs - file storage to read parameters from. + // OUTPUT + // params - parameters of the gtb model. + // data - contains information about the structure + // of the data set (count of variables, + // their types, etc.). + // class_labels - output class labels map. + // RESULT + */ + virtual void read_params( CvFileStorage* fs, CvFileNode* fnode ); + int get_len(const CvMat* mat) const; + + + CvDTreeTrainData* data; + CvGBTreesParams params; + + CvSeq** weak; + CvMat* orig_response; + CvMat* sum_response; + CvMat* sum_response_tmp; + CvMat* sample_idx; + CvMat* subsample_train; + CvMat* subsample_test; + CvMat* missing; + CvMat* class_labels; + + cv::RNG* rng; + + int class_count; + float delta; + float base_value; + +}; + + + +/****************************************************************************************\ +* Artificial Neural Networks (ANN) * +\****************************************************************************************/ + +/////////////////////////////////// Multi-Layer Perceptrons ////////////////////////////// + +struct CvANN_MLP_TrainParams +{ + CvANN_MLP_TrainParams(); + CvANN_MLP_TrainParams( CvTermCriteria term_crit, int train_method, + double param1, double param2=0 ); + ~CvANN_MLP_TrainParams(); + + enum { BACKPROP=0, RPROP=1 }; + + CV_PROP_RW CvTermCriteria term_crit; + CV_PROP_RW int train_method; + + // backpropagation parameters + CV_PROP_RW double bp_dw_scale, bp_moment_scale; + + // rprop parameters + CV_PROP_RW double rp_dw0, rp_dw_plus, rp_dw_minus, rp_dw_min, rp_dw_max; +}; + + +class CvANN_MLP : public CvStatModel +{ +public: + CV_WRAP CvANN_MLP(); + CvANN_MLP( const CvMat* layerSizes, + int activateFunc=CvANN_MLP::SIGMOID_SYM, + double fparam1=0, double fparam2=0 ); + + virtual ~CvANN_MLP(); + + virtual void create( const CvMat* layerSizes, + int activateFunc=CvANN_MLP::SIGMOID_SYM, + double fparam1=0, double fparam2=0 ); + + virtual int train( const CvMat* inputs, const CvMat* outputs, + const CvMat* sampleWeights, const CvMat* sampleIdx=0, + CvANN_MLP_TrainParams params = CvANN_MLP_TrainParams(), + int flags=0 ); + virtual float predict( const CvMat* inputs, CV_OUT CvMat* outputs ) const; + + CV_WRAP CvANN_MLP( const cv::Mat& layerSizes, + int activateFunc=CvANN_MLP::SIGMOID_SYM, + double fparam1=0, double fparam2=0 ); + + CV_WRAP virtual void create( const cv::Mat& layerSizes, + int activateFunc=CvANN_MLP::SIGMOID_SYM, + double fparam1=0, double fparam2=0 ); + + CV_WRAP virtual int train( const cv::Mat& inputs, const cv::Mat& outputs, + const cv::Mat& sampleWeights, const cv::Mat& sampleIdx=cv::Mat(), + CvANN_MLP_TrainParams params = CvANN_MLP_TrainParams(), + int flags=0 ); + + CV_WRAP virtual float predict( const cv::Mat& inputs, CV_OUT cv::Mat& outputs ) const; + + CV_WRAP virtual void clear(); + + // possible activation functions + enum { IDENTITY = 0, SIGMOID_SYM = 1, GAUSSIAN = 2 }; + + // available training flags + enum { UPDATE_WEIGHTS = 1, NO_INPUT_SCALE = 2, NO_OUTPUT_SCALE = 4 }; + + virtual void read( CvFileStorage* fs, CvFileNode* node ); + virtual void write( CvFileStorage* storage, const char* name ) const; + + int get_layer_count() { return layer_sizes ? layer_sizes->cols : 0; } + const CvMat* get_layer_sizes() { return layer_sizes; } + double* get_weights(int layer) + { + return layer_sizes && weights && + (unsigned)layer <= (unsigned)layer_sizes->cols ? weights[layer] : 0; + } + + virtual void calc_activ_func_deriv( CvMat* xf, CvMat* deriv, const double* bias ) const; + +protected: + + virtual bool prepare_to_train( const CvMat* _inputs, const CvMat* _outputs, + const CvMat* _sample_weights, const CvMat* sampleIdx, + CvVectors* _ivecs, CvVectors* _ovecs, double** _sw, int _flags ); + + // sequential random backpropagation + virtual int train_backprop( CvVectors _ivecs, CvVectors _ovecs, const double* _sw ); + + // RPROP algorithm + virtual int train_rprop( CvVectors _ivecs, CvVectors _ovecs, const double* _sw ); + + virtual void calc_activ_func( CvMat* xf, const double* bias ) const; + virtual void set_activ_func( int _activ_func=SIGMOID_SYM, + double _f_param1=0, double _f_param2=0 ); + virtual void init_weights(); + virtual void scale_input( const CvMat* _src, CvMat* _dst ) const; + virtual void scale_output( const CvMat* _src, CvMat* _dst ) const; + virtual void calc_input_scale( const CvVectors* vecs, int flags ); + virtual void calc_output_scale( const CvVectors* vecs, int flags ); + + virtual void write_params( CvFileStorage* fs ) const; + virtual void read_params( CvFileStorage* fs, CvFileNode* node ); + + CvMat* layer_sizes; + CvMat* wbuf; + CvMat* sample_weights; + double** weights; + double f_param1, f_param2; + double min_val, max_val, min_val1, max_val1; + int activ_func; + int max_count, max_buf_sz; + CvANN_MLP_TrainParams params; + cv::RNG* rng; +}; + +/****************************************************************************************\ +* Auxilary functions declarations * +\****************************************************************************************/ + +/* Generates from multivariate normal distribution, where - is an + average row vector, - symmetric covariation matrix */ +CVAPI(void) cvRandMVNormal( CvMat* mean, CvMat* cov, CvMat* sample, + CvRNG* rng CV_DEFAULT(0) ); + +/* Generates sample from gaussian mixture distribution */ +CVAPI(void) cvRandGaussMixture( CvMat* means[], + CvMat* covs[], + float weights[], + int clsnum, + CvMat* sample, + CvMat* sampClasses CV_DEFAULT(0) ); + +#define CV_TS_CONCENTRIC_SPHERES 0 + +/* creates test set */ +CVAPI(void) cvCreateTestSet( int type, CvMat** samples, + int num_samples, + int num_features, + CvMat** responses, + int num_classes, ... ); + +/****************************************************************************************\ +* Data * +\****************************************************************************************/ + +#define CV_COUNT 0 +#define CV_PORTION 1 + +struct CvTrainTestSplit +{ + CvTrainTestSplit(); + CvTrainTestSplit( int train_sample_count, bool mix = true); + CvTrainTestSplit( float train_sample_portion, bool mix = true); + + union + { + int count; + float portion; + } train_sample_part; + int train_sample_part_mode; + + bool mix; +}; + +class CvMLData +{ +public: + CvMLData(); + virtual ~CvMLData(); + + // returns: + // 0 - OK + // -1 - file can not be opened or is not correct + int read_csv( const char* filename ); + + const CvMat* get_values() const; + const CvMat* get_responses(); + const CvMat* get_missing() const; + + void set_header_lines_number( int n ); + int get_header_lines_number() const; + + void set_response_idx( int idx ); // old response become predictors, new response_idx = idx + // if idx < 0 there will be no response + int get_response_idx() const; + + void set_train_test_split( const CvTrainTestSplit * spl ); + const CvMat* get_train_sample_idx() const; + const CvMat* get_test_sample_idx() const; + void mix_train_and_test_idx(); + + const CvMat* get_var_idx(); + void chahge_var_idx( int vi, bool state ); // misspelled (saved for back compitability), + // use change_var_idx + void change_var_idx( int vi, bool state ); // state == true to set vi-variable as predictor + + const CvMat* get_var_types(); + int get_var_type( int var_idx ) const; + // following 2 methods enable to change vars type + // use these methods to assign CV_VAR_CATEGORICAL type for categorical variable + // with numerical labels; in the other cases var types are correctly determined automatically + void set_var_types( const char* str ); // str examples: + // "ord[0-17],cat[18]", "ord[0,2,4,10-12], cat[1,3,5-9,13,14]", + // "cat", "ord" (all vars are categorical/ordered) + void change_var_type( int var_idx, int type); // type in { CV_VAR_ORDERED, CV_VAR_CATEGORICAL } + + void set_delimiter( char ch ); + char get_delimiter() const; + + void set_miss_ch( char ch ); + char get_miss_ch() const; + + const std::map& get_class_labels_map() const; + +protected: + virtual void clear(); + + void str_to_flt_elem( const char* token, float& flt_elem, int& type); + void free_train_test_idx(); + + char delimiter; + char miss_ch; + //char flt_separator; + + CvMat* values; + CvMat* missing; + CvMat* var_types; + CvMat* var_idx_mask; + + CvMat* response_out; // header + CvMat* var_idx_out; // mat + CvMat* var_types_out; // mat + + int header_lines_number; + + int response_idx; + + int train_sample_count; + bool mix; + + int total_class_count; + std::map class_map; + + CvMat* train_sample_idx; + CvMat* test_sample_idx; + int* sample_idx; // data of train_sample_idx and test_sample_idx + + cv::RNG* rng; +}; + + +namespace cv +{ + +typedef CvStatModel StatModel; +typedef CvParamGrid ParamGrid; +typedef CvNormalBayesClassifier NormalBayesClassifier; +typedef CvKNearest KNearest; +typedef CvSVMParams SVMParams; +typedef CvSVMKernel SVMKernel; +typedef CvSVMSolver SVMSolver; +typedef CvSVM SVM; +typedef CvDTreeParams DTreeParams; +typedef CvMLData TrainData; +typedef CvDTree DecisionTree; +typedef CvForestTree ForestTree; +typedef CvRTParams RandomTreeParams; +typedef CvRTrees RandomTrees; +typedef CvERTreeTrainData ERTreeTRainData; +typedef CvForestERTree ERTree; +typedef CvERTrees ERTrees; +typedef CvBoostParams BoostParams; +typedef CvBoostTree BoostTree; +typedef CvBoost Boost; +typedef CvANN_MLP_TrainParams ANN_MLP_TrainParams; +typedef CvANN_MLP NeuralNet_MLP; +typedef CvGBTreesParams GradientBoostingTreeParams; +typedef CvGBTrees GradientBoostingTrees; + +template<> void DefaultDeleter::operator ()(CvDTreeSplit* obj) const; + +bool initModule_ml(void); +} + +#endif // __cplusplus +#endif // __OPENCV_ML_HPP__ + +/* End of file. */ diff --git a/apps/traincascade/old_ml_boost.cpp b/apps/traincascade/old_ml_boost.cpp new file mode 100644 index 0000000000..be4cd81f04 --- /dev/null +++ b/apps/traincascade/old_ml_boost.cpp @@ -0,0 +1,2162 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// Intel License Agreement +// +// Copyright (C) 2000, Intel Corporation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of Intel Corporation may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#include "old_ml_precomp.hpp" + +static inline double +log_ratio( double val ) +{ + const double eps = 1e-5; + + val = MAX( val, eps ); + val = MIN( val, 1. - eps ); + return log( val/(1. - val) ); +} + + +CvBoostParams::CvBoostParams() +{ + boost_type = CvBoost::REAL; + weak_count = 100; + weight_trim_rate = 0.95; + cv_folds = 0; + max_depth = 1; +} + + +CvBoostParams::CvBoostParams( int _boost_type, int _weak_count, + double _weight_trim_rate, int _max_depth, + bool _use_surrogates, const float* _priors ) +{ + boost_type = _boost_type; + weak_count = _weak_count; + weight_trim_rate = _weight_trim_rate; + split_criteria = CvBoost::DEFAULT; + cv_folds = 0; + max_depth = _max_depth; + use_surrogates = _use_surrogates; + priors = _priors; +} + + + +///////////////////////////////// CvBoostTree /////////////////////////////////// + +CvBoostTree::CvBoostTree() +{ + ensemble = 0; +} + + +CvBoostTree::~CvBoostTree() +{ + clear(); +} + + +void +CvBoostTree::clear() +{ + CvDTree::clear(); + ensemble = 0; +} + + +bool +CvBoostTree::train( CvDTreeTrainData* _train_data, + const CvMat* _subsample_idx, CvBoost* _ensemble ) +{ + clear(); + ensemble = _ensemble; + data = _train_data; + data->shared = true; + return do_train( _subsample_idx ); +} + + +bool +CvBoostTree::train( const CvMat*, int, const CvMat*, const CvMat*, + const CvMat*, const CvMat*, const CvMat*, CvDTreeParams ) +{ + assert(0); + return false; +} + + +bool +CvBoostTree::train( CvDTreeTrainData*, const CvMat* ) +{ + assert(0); + return false; +} + + +void +CvBoostTree::scale( double _scale ) +{ + CvDTreeNode* node = root; + + // traverse the tree and scale all the node values + for(;;) + { + CvDTreeNode* parent; + for(;;) + { + node->value *= _scale; + if( !node->left ) + break; + node = node->left; + } + + for( parent = node->parent; parent && parent->right == node; + node = parent, parent = parent->parent ) + ; + + if( !parent ) + break; + + node = parent->right; + } +} + + +void +CvBoostTree::try_split_node( CvDTreeNode* node ) +{ + CvDTree::try_split_node( node ); + + if( !node->left ) + { + // if the node has not been split, + // store the responses for the corresponding training samples + double* weak_eval = ensemble->get_weak_response()->data.db; + cv::AutoBuffer inn_buf(node->sample_count); + const int* labels = data->get_cv_labels( node, (int*)inn_buf ); + int i, count = node->sample_count; + double value = node->value; + + for( i = 0; i < count; i++ ) + weak_eval[labels[i]] = value; + } +} + + +double +CvBoostTree::calc_node_dir( CvDTreeNode* node ) +{ + char* dir = (char*)data->direction->data.ptr; + const double* weights = ensemble->get_subtree_weights()->data.db; + int i, n = node->sample_count, vi = node->split->var_idx; + double L, R; + + assert( !node->split->inversed ); + + if( data->get_var_type(vi) >= 0 ) // split on categorical var + { + cv::AutoBuffer inn_buf(n); + const int* cat_labels = data->get_cat_var_data( node, vi, (int*)inn_buf ); + const int* subset = node->split->subset; + double sum = 0, sum_abs = 0; + + for( i = 0; i < n; i++ ) + { + int idx = ((cat_labels[i] == 65535) && data->is_buf_16u) ? -1 : cat_labels[i]; + double w = weights[i]; + int d = idx >= 0 ? CV_DTREE_CAT_DIR(idx,subset) : 0; + sum += d*w; sum_abs += (d & 1)*w; + dir[i] = (char)d; + } + + R = (sum_abs + sum) * 0.5; + L = (sum_abs - sum) * 0.5; + } + else // split on ordered var + { + cv::AutoBuffer inn_buf(2*n*sizeof(int)+n*sizeof(float)); + float* values_buf = (float*)(uchar*)inn_buf; + int* sorted_indices_buf = (int*)(values_buf + n); + int* sample_indices_buf = sorted_indices_buf + n; + const float* values = 0; + const int* sorted_indices = 0; + data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, &sorted_indices, sample_indices_buf ); + int split_point = node->split->ord.split_point; + int n1 = node->get_num_valid(vi); + + assert( 0 <= split_point && split_point < n1-1 ); + L = R = 0; + + for( i = 0; i <= split_point; i++ ) + { + int idx = sorted_indices[i]; + double w = weights[idx]; + dir[idx] = (char)-1; + L += w; + } + + for( ; i < n1; i++ ) + { + int idx = sorted_indices[i]; + double w = weights[idx]; + dir[idx] = (char)1; + R += w; + } + + for( ; i < n; i++ ) + dir[sorted_indices[i]] = (char)0; + } + + node->maxlr = MAX( L, R ); + return node->split->quality/(L + R); +} + + +CvDTreeSplit* +CvBoostTree::find_split_ord_class( CvDTreeNode* node, int vi, float init_quality, + CvDTreeSplit* _split, uchar* _ext_buf ) +{ + const float epsilon = FLT_EPSILON*2; + + const double* weights = ensemble->get_subtree_weights()->data.db; + int n = node->sample_count; + int n1 = node->get_num_valid(vi); + + cv::AutoBuffer inn_buf; + if( !_ext_buf ) + inn_buf.allocate(n*(3*sizeof(int)+sizeof(float))); + uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; + float* values_buf = (float*)ext_buf; + int* sorted_indices_buf = (int*)(values_buf + n); + int* sample_indices_buf = sorted_indices_buf + n; + const float* values = 0; + const int* sorted_indices = 0; + data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, &sorted_indices, sample_indices_buf ); + int* responses_buf = sorted_indices_buf + n; + const int* responses = data->get_class_labels( node, responses_buf ); + const double* rcw0 = weights + n; + double lcw[2] = {0,0}, rcw[2]; + int i, best_i = -1; + double best_val = init_quality; + int boost_type = ensemble->get_params().boost_type; + int split_criteria = ensemble->get_params().split_criteria; + + rcw[0] = rcw0[0]; rcw[1] = rcw0[1]; + for( i = n1; i < n; i++ ) + { + int idx = sorted_indices[i]; + double w = weights[idx]; + rcw[responses[idx]] -= w; + } + + if( split_criteria != CvBoost::GINI && split_criteria != CvBoost::MISCLASS ) + split_criteria = boost_type == CvBoost::DISCRETE ? CvBoost::MISCLASS : CvBoost::GINI; + + if( split_criteria == CvBoost::GINI ) + { + double L = 0, R = rcw[0] + rcw[1]; + double lsum2 = 0, rsum2 = rcw[0]*rcw[0] + rcw[1]*rcw[1]; + + for( i = 0; i < n1 - 1; i++ ) + { + int idx = sorted_indices[i]; + double w = weights[idx], w2 = w*w; + double lv, rv; + idx = responses[idx]; + L += w; R -= w; + lv = lcw[idx]; rv = rcw[idx]; + lsum2 += 2*lv*w + w2; + rsum2 -= 2*rv*w - w2; + lcw[idx] = lv + w; rcw[idx] = rv - w; + + if( values[i] + epsilon < values[i+1] ) + { + double val = (lsum2*R + rsum2*L)/(L*R); + if( best_val < val ) + { + best_val = val; + best_i = i; + } + } + } + } + else + { + for( i = 0; i < n1 - 1; i++ ) + { + int idx = sorted_indices[i]; + double w = weights[idx]; + idx = responses[idx]; + lcw[idx] += w; + rcw[idx] -= w; + + if( values[i] + epsilon < values[i+1] ) + { + double val = lcw[0] + rcw[1], val2 = lcw[1] + rcw[0]; + val = MAX(val, val2); + if( best_val < val ) + { + best_val = val; + best_i = i; + } + } + } + } + + CvDTreeSplit* split = 0; + if( best_i >= 0 ) + { + split = _split ? _split : data->new_split_ord( 0, 0.0f, 0, 0, 0.0f ); + split->var_idx = vi; + split->ord.c = (values[best_i] + values[best_i+1])*0.5f; + split->ord.split_point = best_i; + split->inversed = 0; + split->quality = (float)best_val; + } + return split; +} + +template +class LessThanPtr +{ +public: + bool operator()(T* a, T* b) const { return *a < *b; } +}; + +CvDTreeSplit* +CvBoostTree::find_split_cat_class( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) +{ + int ci = data->get_var_type(vi); + int n = node->sample_count; + int mi = data->cat_count->data.i[ci]; + + int base_size = (2*mi+3)*sizeof(double) + mi*sizeof(double*); + cv::AutoBuffer inn_buf((2*mi+3)*sizeof(double) + mi*sizeof(double*)); + if( !_ext_buf) + inn_buf.allocate( base_size + 2*n*sizeof(int) ); + uchar* base_buf = (uchar*)inn_buf; + uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; + + int* cat_labels_buf = (int*)ext_buf; + const int* cat_labels = data->get_cat_var_data(node, vi, cat_labels_buf); + int* responses_buf = cat_labels_buf + n; + const int* responses = data->get_class_labels(node, responses_buf); + double lcw[2]={0,0}, rcw[2]={0,0}; + + double* cjk = (double*)cv::alignPtr(base_buf,sizeof(double))+2; + const double* weights = ensemble->get_subtree_weights()->data.db; + double** dbl_ptr = (double**)(cjk + 2*mi); + int i, j, k, idx; + double L = 0, R; + double best_val = init_quality; + int best_subset = -1, subset_i; + int boost_type = ensemble->get_params().boost_type; + int split_criteria = ensemble->get_params().split_criteria; + + // init array of counters: + // c_{jk} - number of samples that have vi-th input variable = j and response = k. + for( j = -1; j < mi; j++ ) + cjk[j*2] = cjk[j*2+1] = 0; + + for( i = 0; i < n; i++ ) + { + double w = weights[i]; + j = ((cat_labels[i] == 65535) && data->is_buf_16u) ? -1 : cat_labels[i]; + k = responses[i]; + cjk[j*2 + k] += w; + } + + for( j = 0; j < mi; j++ ) + { + rcw[0] += cjk[j*2]; + rcw[1] += cjk[j*2+1]; + dbl_ptr[j] = cjk + j*2 + 1; + } + + R = rcw[0] + rcw[1]; + + if( split_criteria != CvBoost::GINI && split_criteria != CvBoost::MISCLASS ) + split_criteria = boost_type == CvBoost::DISCRETE ? CvBoost::MISCLASS : CvBoost::GINI; + + // sort rows of c_jk by increasing c_j,1 + // (i.e. by the weight of samples in j-th category that belong to class 1) + std::sort(dbl_ptr, dbl_ptr + mi, LessThanPtr()); + + for( subset_i = 0; subset_i < mi-1; subset_i++ ) + { + idx = (int)(dbl_ptr[subset_i] - cjk)/2; + const double* crow = cjk + idx*2; + double w0 = crow[0], w1 = crow[1]; + double weight = w0 + w1; + + if( weight < FLT_EPSILON ) + continue; + + lcw[0] += w0; rcw[0] -= w0; + lcw[1] += w1; rcw[1] -= w1; + + if( split_criteria == CvBoost::GINI ) + { + double lsum2 = lcw[0]*lcw[0] + lcw[1]*lcw[1]; + double rsum2 = rcw[0]*rcw[0] + rcw[1]*rcw[1]; + + L += weight; + R -= weight; + + if( L > FLT_EPSILON && R > FLT_EPSILON ) + { + double val = (lsum2*R + rsum2*L)/(L*R); + if( best_val < val ) + { + best_val = val; + best_subset = subset_i; + } + } + } + else + { + double val = lcw[0] + rcw[1]; + double val2 = lcw[1] + rcw[0]; + + val = MAX(val, val2); + if( best_val < val ) + { + best_val = val; + best_subset = subset_i; + } + } + } + + CvDTreeSplit* split = 0; + if( best_subset >= 0 ) + { + split = _split ? _split : data->new_split_cat( 0, -1.0f); + split->var_idx = vi; + split->quality = (float)best_val; + memset( split->subset, 0, (data->max_c_count + 31)/32 * sizeof(int)); + for( i = 0; i <= best_subset; i++ ) + { + idx = (int)(dbl_ptr[i] - cjk) >> 1; + split->subset[idx >> 5] |= 1 << (idx & 31); + } + } + return split; +} + + +CvDTreeSplit* +CvBoostTree::find_split_ord_reg( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) +{ + const float epsilon = FLT_EPSILON*2; + const double* weights = ensemble->get_subtree_weights()->data.db; + int n = node->sample_count; + int n1 = node->get_num_valid(vi); + + cv::AutoBuffer inn_buf; + if( !_ext_buf ) + inn_buf.allocate(2*n*(sizeof(int)+sizeof(float))); + uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; + + float* values_buf = (float*)ext_buf; + int* indices_buf = (int*)(values_buf + n); + int* sample_indices_buf = indices_buf + n; + const float* values = 0; + const int* indices = 0; + data->get_ord_var_data( node, vi, values_buf, indices_buf, &values, &indices, sample_indices_buf ); + float* responses_buf = (float*)(indices_buf + n); + const float* responses = data->get_ord_responses( node, responses_buf, sample_indices_buf ); + + int i, best_i = -1; + double L = 0, R = weights[n]; + double best_val = init_quality, lsum = 0, rsum = node->value*R; + + // compensate for missing values + for( i = n1; i < n; i++ ) + { + int idx = indices[i]; + double w = weights[idx]; + rsum -= responses[idx]*w; + R -= w; + } + + // find the optimal split + for( i = 0; i < n1 - 1; i++ ) + { + int idx = indices[i]; + double w = weights[idx]; + double t = responses[idx]*w; + L += w; R -= w; + lsum += t; rsum -= t; + + if( values[i] + epsilon < values[i+1] ) + { + double val = (lsum*lsum*R + rsum*rsum*L)/(L*R); + if( best_val < val ) + { + best_val = val; + best_i = i; + } + } + } + + CvDTreeSplit* split = 0; + if( best_i >= 0 ) + { + split = _split ? _split : data->new_split_ord( 0, 0.0f, 0, 0, 0.0f ); + split->var_idx = vi; + split->ord.c = (values[best_i] + values[best_i+1])*0.5f; + split->ord.split_point = best_i; + split->inversed = 0; + split->quality = (float)best_val; + } + return split; +} + + +CvDTreeSplit* +CvBoostTree::find_split_cat_reg( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) +{ + const double* weights = ensemble->get_subtree_weights()->data.db; + int ci = data->get_var_type(vi); + int n = node->sample_count; + int mi = data->cat_count->data.i[ci]; + int base_size = (2*mi+3)*sizeof(double) + mi*sizeof(double*); + cv::AutoBuffer inn_buf(base_size); + if( !_ext_buf ) + inn_buf.allocate(base_size + n*(2*sizeof(int) + sizeof(float))); + uchar* base_buf = (uchar*)inn_buf; + uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; + + int* cat_labels_buf = (int*)ext_buf; + const int* cat_labels = data->get_cat_var_data(node, vi, cat_labels_buf); + float* responses_buf = (float*)(cat_labels_buf + n); + int* sample_indices_buf = (int*)(responses_buf + n); + const float* responses = data->get_ord_responses(node, responses_buf, sample_indices_buf); + + double* sum = (double*)cv::alignPtr(base_buf,sizeof(double)) + 1; + double* counts = sum + mi + 1; + double** sum_ptr = (double**)(counts + mi); + double L = 0, R = 0, best_val = init_quality, lsum = 0, rsum = 0; + int i, best_subset = -1, subset_i; + + for( i = -1; i < mi; i++ ) + sum[i] = counts[i] = 0; + + // calculate sum response and weight of each category of the input var + for( i = 0; i < n; i++ ) + { + int idx = ((cat_labels[i] == 65535) && data->is_buf_16u) ? -1 : cat_labels[i]; + double w = weights[i]; + double s = sum[idx] + responses[i]*w; + double nc = counts[idx] + w; + sum[idx] = s; + counts[idx] = nc; + } + + // calculate average response in each category + for( i = 0; i < mi; i++ ) + { + R += counts[i]; + rsum += sum[i]; + sum[i] = fabs(counts[i]) > DBL_EPSILON ? sum[i]/counts[i] : 0; + sum_ptr[i] = sum + i; + } + + std::sort(sum_ptr, sum_ptr + mi, LessThanPtr()); + + // revert back to unnormalized sums + // (there should be a very little loss in accuracy) + for( i = 0; i < mi; i++ ) + sum[i] *= counts[i]; + + for( subset_i = 0; subset_i < mi-1; subset_i++ ) + { + int idx = (int)(sum_ptr[subset_i] - sum); + double ni = counts[idx]; + + if( ni > FLT_EPSILON ) + { + double s = sum[idx]; + lsum += s; L += ni; + rsum -= s; R -= ni; + + if( L > FLT_EPSILON && R > FLT_EPSILON ) + { + double val = (lsum*lsum*R + rsum*rsum*L)/(L*R); + if( best_val < val ) + { + best_val = val; + best_subset = subset_i; + } + } + } + } + + CvDTreeSplit* split = 0; + if( best_subset >= 0 ) + { + split = _split ? _split : data->new_split_cat( 0, -1.0f); + split->var_idx = vi; + split->quality = (float)best_val; + memset( split->subset, 0, (data->max_c_count + 31)/32 * sizeof(int)); + for( i = 0; i <= best_subset; i++ ) + { + int idx = (int)(sum_ptr[i] - sum); + split->subset[idx >> 5] |= 1 << (idx & 31); + } + } + return split; +} + + +CvDTreeSplit* +CvBoostTree::find_surrogate_split_ord( CvDTreeNode* node, int vi, uchar* _ext_buf ) +{ + const float epsilon = FLT_EPSILON*2; + int n = node->sample_count; + cv::AutoBuffer inn_buf; + if( !_ext_buf ) + inn_buf.allocate(n*(2*sizeof(int)+sizeof(float))); + uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; + float* values_buf = (float*)ext_buf; + int* indices_buf = (int*)(values_buf + n); + int* sample_indices_buf = indices_buf + n; + const float* values = 0; + const int* indices = 0; + data->get_ord_var_data( node, vi, values_buf, indices_buf, &values, &indices, sample_indices_buf ); + + const double* weights = ensemble->get_subtree_weights()->data.db; + const char* dir = (char*)data->direction->data.ptr; + int n1 = node->get_num_valid(vi); + // LL - number of samples that both the primary and the surrogate splits send to the left + // LR - ... primary split sends to the left and the surrogate split sends to the right + // RL - ... primary split sends to the right and the surrogate split sends to the left + // RR - ... both send to the right + int i, best_i = -1, best_inversed = 0; + double best_val; + double LL = 0, RL = 0, LR, RR; + double worst_val = node->maxlr; + double sum = 0, sum_abs = 0; + best_val = worst_val; + + for( i = 0; i < n1; i++ ) + { + int idx = indices[i]; + double w = weights[idx]; + int d = dir[idx]; + sum += d*w; sum_abs += (d & 1)*w; + } + + // sum_abs = R + L; sum = R - L + RR = (sum_abs + sum)*0.5; + LR = (sum_abs - sum)*0.5; + + // initially all the samples are sent to the right by the surrogate split, + // LR of them are sent to the left by primary split, and RR - to the right. + // now iteratively compute LL, LR, RL and RR for every possible surrogate split value. + for( i = 0; i < n1 - 1; i++ ) + { + int idx = indices[i]; + double w = weights[idx]; + int d = dir[idx]; + + if( d < 0 ) + { + LL += w; LR -= w; + if( LL + RR > best_val && values[i] + epsilon < values[i+1] ) + { + best_val = LL + RR; + best_i = i; best_inversed = 0; + } + } + else if( d > 0 ) + { + RL += w; RR -= w; + if( RL + LR > best_val && values[i] + epsilon < values[i+1] ) + { + best_val = RL + LR; + best_i = i; best_inversed = 1; + } + } + } + + return best_i >= 0 && best_val > node->maxlr ? data->new_split_ord( vi, + (values[best_i] + values[best_i+1])*0.5f, best_i, + best_inversed, (float)best_val ) : 0; +} + + +CvDTreeSplit* +CvBoostTree::find_surrogate_split_cat( CvDTreeNode* node, int vi, uchar* _ext_buf ) +{ + const char* dir = (char*)data->direction->data.ptr; + const double* weights = ensemble->get_subtree_weights()->data.db; + int n = node->sample_count; + int i, mi = data->cat_count->data.i[data->get_var_type(vi)]; + + int base_size = (2*mi+3)*sizeof(double); + cv::AutoBuffer inn_buf(base_size); + if( !_ext_buf ) + inn_buf.allocate(base_size + n*sizeof(int)); + uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; + int* cat_labels_buf = (int*)ext_buf; + const int* cat_labels = data->get_cat_var_data(node, vi, cat_labels_buf); + + // LL - number of samples that both the primary and the surrogate splits send to the left + // LR - ... primary split sends to the left and the surrogate split sends to the right + // RL - ... primary split sends to the right and the surrogate split sends to the left + // RR - ... both send to the right + CvDTreeSplit* split = data->new_split_cat( vi, 0 ); + double best_val = 0; + double* lc = (double*)cv::alignPtr(cat_labels_buf + n, sizeof(double)) + 1; + double* rc = lc + mi + 1; + + for( i = -1; i < mi; i++ ) + lc[i] = rc[i] = 0; + + // 1. for each category calculate the weight of samples + // sent to the left (lc) and to the right (rc) by the primary split + for( i = 0; i < n; i++ ) + { + int idx = ((cat_labels[i] == 65535) && data->is_buf_16u) ? -1 : cat_labels[i]; + double w = weights[i]; + int d = dir[i]; + double sum = lc[idx] + d*w; + double sum_abs = rc[idx] + (d & 1)*w; + lc[idx] = sum; rc[idx] = sum_abs; + } + + for( i = 0; i < mi; i++ ) + { + double sum = lc[i]; + double sum_abs = rc[i]; + lc[i] = (sum_abs - sum) * 0.5; + rc[i] = (sum_abs + sum) * 0.5; + } + + // 2. now form the split. + // in each category send all the samples to the same direction as majority + for( i = 0; i < mi; i++ ) + { + double lval = lc[i], rval = rc[i]; + if( lval > rval ) + { + split->subset[i >> 5] |= 1 << (i & 31); + best_val += lval; + } + else + best_val += rval; + } + + split->quality = (float)best_val; + if( split->quality <= node->maxlr ) + cvSetRemoveByPtr( data->split_heap, split ), split = 0; + + return split; +} + + +void +CvBoostTree::calc_node_value( CvDTreeNode* node ) +{ + int i, n = node->sample_count; + const double* weights = ensemble->get_weights()->data.db; + cv::AutoBuffer inn_buf(n*(sizeof(int) + ( data->is_classifier ? sizeof(int) : sizeof(int) + sizeof(float)))); + int* labels_buf = (int*)(uchar*)inn_buf; + const int* labels = data->get_cv_labels(node, labels_buf); + double* subtree_weights = ensemble->get_subtree_weights()->data.db; + double rcw[2] = {0,0}; + int boost_type = ensemble->get_params().boost_type; + + if( data->is_classifier ) + { + int* _responses_buf = labels_buf + n; + const int* _responses = data->get_class_labels(node, _responses_buf); + int m = data->get_num_classes(); + int* cls_count = data->counts->data.i; + for( int k = 0; k < m; k++ ) + cls_count[k] = 0; + + for( i = 0; i < n; i++ ) + { + int idx = labels[i]; + double w = weights[idx]; + int r = _responses[i]; + rcw[r] += w; + cls_count[r]++; + subtree_weights[i] = w; + } + + node->class_idx = rcw[1] > rcw[0]; + + if( boost_type == CvBoost::DISCRETE ) + { + // ignore cat_map for responses, and use {-1,1}, + // as the whole ensemble response is computes as sign(sum_i(weak_response_i) + node->value = node->class_idx*2 - 1; + } + else + { + double p = rcw[1]/(rcw[0] + rcw[1]); + assert( boost_type == CvBoost::REAL ); + + // store log-ratio of the probability + node->value = 0.5*log_ratio(p); + } + } + else + { + // in case of regression tree: + // * node value is 1/n*sum_i(Y_i), where Y_i is i-th response, + // n is the number of samples in the node. + // * node risk is the sum of squared errors: sum_i((Y_i - )^2) + double sum = 0, sum2 = 0, iw; + float* values_buf = (float*)(labels_buf + n); + int* sample_indices_buf = (int*)(values_buf + n); + const float* values = data->get_ord_responses(node, values_buf, sample_indices_buf); + + for( i = 0; i < n; i++ ) + { + int idx = labels[i]; + double w = weights[idx]/*priors[values[i] > 0]*/; + double t = values[i]; + rcw[0] += w; + subtree_weights[i] = w; + sum += t*w; + sum2 += t*t*w; + } + + iw = 1./rcw[0]; + node->value = sum*iw; + node->node_risk = sum2 - (sum*iw)*sum; + + // renormalize the risk, as in try_split_node the unweighted formula + // sqrt(risk)/n is used, rather than sqrt(risk)/sum(weights_i) + node->node_risk *= n*iw*n*iw; + } + + // store summary weights + subtree_weights[n] = rcw[0]; + subtree_weights[n+1] = rcw[1]; +} + + +void CvBoostTree::read( CvFileStorage* fs, CvFileNode* fnode, CvBoost* _ensemble, CvDTreeTrainData* _data ) +{ + CvDTree::read( fs, fnode, _data ); + ensemble = _ensemble; +} + +void CvBoostTree::read( CvFileStorage*, CvFileNode* ) +{ + assert(0); +} + +void CvBoostTree::read( CvFileStorage* _fs, CvFileNode* _node, + CvDTreeTrainData* _data ) +{ + CvDTree::read( _fs, _node, _data ); +} + + +/////////////////////////////////// CvBoost ///////////////////////////////////// + +CvBoost::CvBoost() +{ + data = 0; + weak = 0; + default_model_name = "my_boost_tree"; + + active_vars = active_vars_abs = orig_response = sum_response = weak_eval = + subsample_mask = weights = subtree_weights = 0; + have_active_cat_vars = have_subsample = false; + + clear(); +} + + +void CvBoost::prune( CvSlice slice ) +{ + if( weak && weak->total > 0 ) + { + CvSeqReader reader; + int i, count = cvSliceLength( slice, weak ); + + cvStartReadSeq( weak, &reader ); + cvSetSeqReaderPos( &reader, slice.start_index ); + + for( i = 0; i < count; i++ ) + { + CvBoostTree* w; + CV_READ_SEQ_ELEM( w, reader ); + delete w; + } + + cvSeqRemoveSlice( weak, slice ); + } +} + + +void CvBoost::clear() +{ + if( weak ) + { + prune( CV_WHOLE_SEQ ); + cvReleaseMemStorage( &weak->storage ); + } + if( data ) + delete data; + weak = 0; + data = 0; + cvReleaseMat( &active_vars ); + cvReleaseMat( &active_vars_abs ); + cvReleaseMat( &orig_response ); + cvReleaseMat( &sum_response ); + cvReleaseMat( &weak_eval ); + cvReleaseMat( &subsample_mask ); + cvReleaseMat( &weights ); + cvReleaseMat( &subtree_weights ); + + have_subsample = false; +} + + +CvBoost::~CvBoost() +{ + clear(); +} + + +CvBoost::CvBoost( const CvMat* _train_data, int _tflag, + const CvMat* _responses, const CvMat* _var_idx, + const CvMat* _sample_idx, const CvMat* _var_type, + const CvMat* _missing_mask, CvBoostParams _params ) +{ + weak = 0; + data = 0; + default_model_name = "my_boost_tree"; + + active_vars = active_vars_abs = orig_response = sum_response = weak_eval = + subsample_mask = weights = subtree_weights = 0; + + train( _train_data, _tflag, _responses, _var_idx, _sample_idx, + _var_type, _missing_mask, _params ); +} + + +bool +CvBoost::set_params( const CvBoostParams& _params ) +{ + bool ok = false; + + CV_FUNCNAME( "CvBoost::set_params" ); + + __BEGIN__; + + params = _params; + if( params.boost_type != DISCRETE && params.boost_type != REAL && + params.boost_type != LOGIT && params.boost_type != GENTLE ) + CV_ERROR( CV_StsBadArg, "Unknown/unsupported boosting type" ); + + params.weak_count = MAX( params.weak_count, 1 ); + params.weight_trim_rate = MAX( params.weight_trim_rate, 0. ); + params.weight_trim_rate = MIN( params.weight_trim_rate, 1. ); + if( params.weight_trim_rate < FLT_EPSILON ) + params.weight_trim_rate = 1.f; + + if( params.boost_type == DISCRETE && + params.split_criteria != GINI && params.split_criteria != MISCLASS ) + params.split_criteria = MISCLASS; + if( params.boost_type == REAL && + params.split_criteria != GINI && params.split_criteria != MISCLASS ) + params.split_criteria = GINI; + if( (params.boost_type == LOGIT || params.boost_type == GENTLE) && + params.split_criteria != SQERR ) + params.split_criteria = SQERR; + + ok = true; + + __END__; + + return ok; +} + + +bool +CvBoost::train( const CvMat* _train_data, int _tflag, + const CvMat* _responses, const CvMat* _var_idx, + const CvMat* _sample_idx, const CvMat* _var_type, + const CvMat* _missing_mask, + CvBoostParams _params, bool _update ) +{ + bool ok = false; + CvMemStorage* storage = 0; + + CV_FUNCNAME( "CvBoost::train" ); + + __BEGIN__; + + int i; + + set_params( _params ); + + cvReleaseMat( &active_vars ); + cvReleaseMat( &active_vars_abs ); + + if( !_update || !data ) + { + clear(); + data = new CvDTreeTrainData( _train_data, _tflag, _responses, _var_idx, + _sample_idx, _var_type, _missing_mask, _params, true, true ); + + if( data->get_num_classes() != 2 ) + CV_ERROR( CV_StsNotImplemented, + "Boosted trees can only be used for 2-class classification." ); + CV_CALL( storage = cvCreateMemStorage() ); + weak = cvCreateSeq( 0, sizeof(CvSeq), sizeof(CvBoostTree*), storage ); + storage = 0; + } + else + { + data->set_data( _train_data, _tflag, _responses, _var_idx, + _sample_idx, _var_type, _missing_mask, _params, true, true, true ); + } + + if ( (_params.boost_type == LOGIT) || (_params.boost_type == GENTLE) ) + data->do_responses_copy(); + + update_weights( 0 ); + + for( i = 0; i < params.weak_count; i++ ) + { + CvBoostTree* tree = new CvBoostTree; + if( !tree->train( data, subsample_mask, this ) ) + { + delete tree; + break; + } + //cvCheckArr( get_weak_response()); + cvSeqPush( weak, &tree ); + update_weights( tree ); + trim_weights(); + if( cvCountNonZero(subsample_mask) == 0 ) + break; + } + + if(weak->total > 0) + { + get_active_vars(); // recompute active_vars* maps and condensed_idx's in the splits. + data->is_classifier = true; + data->free_train_data(); + ok = true; + } + else + clear(); + + __END__; + + return ok; +} + +bool CvBoost::train( CvMLData* _data, + CvBoostParams _params, + bool update ) +{ + bool result = false; + + CV_FUNCNAME( "CvBoost::train" ); + + __BEGIN__; + + const CvMat* values = _data->get_values(); + const CvMat* response = _data->get_responses(); + const CvMat* missing = _data->get_missing(); + const CvMat* var_types = _data->get_var_types(); + const CvMat* train_sidx = _data->get_train_sample_idx(); + const CvMat* var_idx = _data->get_var_idx(); + + CV_CALL( result = train( values, CV_ROW_SAMPLE, response, var_idx, + train_sidx, var_types, missing, _params, update ) ); + + __END__; + + return result; +} + +void CvBoost::initialize_weights(double (&p)[2]) +{ + p[0] = 1.; + p[1] = 1.; +} + +void +CvBoost::update_weights( CvBoostTree* tree ) +{ + CV_FUNCNAME( "CvBoost::update_weights" ); + + __BEGIN__; + + int i, n = data->sample_count; + double sumw = 0.; + int step = 0; + float* fdata = 0; + int *sample_idx_buf; + const int* sample_idx = 0; + cv::AutoBuffer inn_buf; + size_t _buf_size = (params.boost_type == LOGIT) || (params.boost_type == GENTLE) ? (size_t)(data->sample_count)*sizeof(int) : 0; + if( !tree ) + _buf_size += n*sizeof(int); + else + { + if( have_subsample ) + _buf_size += data->get_length_subbuf()*(sizeof(float)+sizeof(uchar)); + } + inn_buf.allocate(_buf_size); + uchar* cur_buf_pos = (uchar*)inn_buf; + + if ( (params.boost_type == LOGIT) || (params.boost_type == GENTLE) ) + { + step = CV_IS_MAT_CONT(data->responses_copy->type) ? + 1 : data->responses_copy->step / CV_ELEM_SIZE(data->responses_copy->type); + fdata = data->responses_copy->data.fl; + sample_idx_buf = (int*)cur_buf_pos; + cur_buf_pos = (uchar*)(sample_idx_buf + data->sample_count); + sample_idx = data->get_sample_indices( data->data_root, sample_idx_buf ); + } + CvMat* dtree_data_buf = data->buf; + size_t length_buf_row = data->get_length_subbuf(); + if( !tree ) // before training the first tree, initialize weights and other parameters + { + int* class_labels_buf = (int*)cur_buf_pos; + cur_buf_pos = (uchar*)(class_labels_buf + n); + const int* class_labels = data->get_class_labels(data->data_root, class_labels_buf); + // in case of logitboost and gentle adaboost each weak tree is a regression tree, + // so we need to convert class labels to floating-point values + + double w0 = 1./ n; + double p[2] = { 1., 1. }; + initialize_weights(p); + + cvReleaseMat( &orig_response ); + cvReleaseMat( &sum_response ); + cvReleaseMat( &weak_eval ); + cvReleaseMat( &subsample_mask ); + cvReleaseMat( &weights ); + cvReleaseMat( &subtree_weights ); + + CV_CALL( orig_response = cvCreateMat( 1, n, CV_32S )); + CV_CALL( weak_eval = cvCreateMat( 1, n, CV_64F )); + CV_CALL( subsample_mask = cvCreateMat( 1, n, CV_8U )); + CV_CALL( weights = cvCreateMat( 1, n, CV_64F )); + CV_CALL( subtree_weights = cvCreateMat( 1, n + 2, CV_64F )); + + if( data->have_priors ) + { + // compute weight scale for each class from their prior probabilities + int c1 = 0; + for( i = 0; i < n; i++ ) + c1 += class_labels[i]; + p[0] = data->priors->data.db[0]*(c1 < n ? 1./(n - c1) : 0.); + p[1] = data->priors->data.db[1]*(c1 > 0 ? 1./c1 : 0.); + p[0] /= p[0] + p[1]; + p[1] = 1. - p[0]; + } + + if (data->is_buf_16u) + { + unsigned short* labels = (unsigned short*)(dtree_data_buf->data.s + data->data_root->buf_idx*length_buf_row + + data->data_root->offset + (data->work_var_count-1)*data->sample_count); + for( i = 0; i < n; i++ ) + { + // save original categorical responses {0,1}, convert them to {-1,1} + orig_response->data.i[i] = class_labels[i]*2 - 1; + // make all the samples active at start. + // later, in trim_weights() deactivate/reactive again some, if need + subsample_mask->data.ptr[i] = (uchar)1; + // make all the initial weights the same. + weights->data.db[i] = w0*p[class_labels[i]]; + // set the labels to find (from within weak tree learning proc) + // the particular sample weight, and where to store the response. + labels[i] = (unsigned short)i; + } + } + else + { + int* labels = dtree_data_buf->data.i + data->data_root->buf_idx*length_buf_row + + data->data_root->offset + (data->work_var_count-1)*data->sample_count; + + for( i = 0; i < n; i++ ) + { + // save original categorical responses {0,1}, convert them to {-1,1} + orig_response->data.i[i] = class_labels[i]*2 - 1; + // make all the samples active at start. + // later, in trim_weights() deactivate/reactive again some, if need + subsample_mask->data.ptr[i] = (uchar)1; + // make all the initial weights the same. + weights->data.db[i] = w0*p[class_labels[i]]; + // set the labels to find (from within weak tree learning proc) + // the particular sample weight, and where to store the response. + labels[i] = i; + } + } + + if( params.boost_type == LOGIT ) + { + CV_CALL( sum_response = cvCreateMat( 1, n, CV_64F )); + + for( i = 0; i < n; i++ ) + { + sum_response->data.db[i] = 0; + fdata[sample_idx[i]*step] = orig_response->data.i[i] > 0 ? 2.f : -2.f; + } + + // in case of logitboost each weak tree is a regression tree. + // the target function values are recalculated for each of the trees + data->is_classifier = false; + } + else if( params.boost_type == GENTLE ) + { + for( i = 0; i < n; i++ ) + fdata[sample_idx[i]*step] = (float)orig_response->data.i[i]; + + data->is_classifier = false; + } + } + else + { + // at this moment, for all the samples that participated in the training of the most + // recent weak classifier we know the responses. For other samples we need to compute them + if( have_subsample ) + { + float* values = (float*)cur_buf_pos; + cur_buf_pos = (uchar*)(values + data->get_length_subbuf()); + uchar* missing = cur_buf_pos; + cur_buf_pos = missing + data->get_length_subbuf() * (size_t)CV_ELEM_SIZE(data->buf->type); + + CvMat _sample, _mask; + + // invert the subsample mask + cvXorS( subsample_mask, cvScalar(1.), subsample_mask ); + data->get_vectors( subsample_mask, values, missing, 0 ); + + _sample = cvMat( 1, data->var_count, CV_32F ); + _mask = cvMat( 1, data->var_count, CV_8U ); + + // run tree through all the non-processed samples + for( i = 0; i < n; i++ ) + if( subsample_mask->data.ptr[i] ) + { + _sample.data.fl = values; + _mask.data.ptr = missing; + values += _sample.cols; + missing += _mask.cols; + weak_eval->data.db[i] = tree->predict( &_sample, &_mask, true )->value; + } + } + + // now update weights and other parameters for each type of boosting + if( params.boost_type == DISCRETE ) + { + // Discrete AdaBoost: + // weak_eval[i] (=f(x_i)) is in {-1,1} + // err = sum(w_i*(f(x_i) != y_i))/sum(w_i) + // C = log((1-err)/err) + // w_i *= exp(C*(f(x_i) != y_i)) + + double C, err = 0.; + double scale[] = { 1., 0. }; + + for( i = 0; i < n; i++ ) + { + double w = weights->data.db[i]; + sumw += w; + err += w*(weak_eval->data.db[i] != orig_response->data.i[i]); + } + + if( sumw != 0 ) + err /= sumw; + C = err = -log_ratio( err ); + scale[1] = exp(err); + + sumw = 0; + for( i = 0; i < n; i++ ) + { + double w = weights->data.db[i]* + scale[weak_eval->data.db[i] != orig_response->data.i[i]]; + sumw += w; + weights->data.db[i] = w; + } + + tree->scale( C ); + } + else if( params.boost_type == REAL ) + { + // Real AdaBoost: + // weak_eval[i] = f(x_i) = 0.5*log(p(x_i)/(1-p(x_i))), p(x_i)=P(y=1|x_i) + // w_i *= exp(-y_i*f(x_i)) + + for( i = 0; i < n; i++ ) + weak_eval->data.db[i] *= -orig_response->data.i[i]; + + cvExp( weak_eval, weak_eval ); + + for( i = 0; i < n; i++ ) + { + double w = weights->data.db[i]*weak_eval->data.db[i]; + sumw += w; + weights->data.db[i] = w; + } + } + else if( params.boost_type == LOGIT ) + { + // LogitBoost: + // weak_eval[i] = f(x_i) in [-z_max,z_max] + // sum_response = F(x_i). + // F(x_i) += 0.5*f(x_i) + // p(x_i) = exp(F(x_i))/(exp(F(x_i)) + exp(-F(x_i))=1/(1+exp(-2*F(x_i))) + // reuse weak_eval: weak_eval[i] <- p(x_i) + // w_i = p(x_i)*1(1 - p(x_i)) + // z_i = ((y_i+1)/2 - p(x_i))/(p(x_i)*(1 - p(x_i))) + // store z_i to the data->data_root as the new target responses + + const double lb_weight_thresh = FLT_EPSILON; + const double lb_z_max = 10.; + /*float* responses_buf = data->get_resp_float_buf(); + const float* responses = 0; + data->get_ord_responses(data->data_root, responses_buf, &responses);*/ + + /*if( weak->total == 7 ) + putchar('*');*/ + + for( i = 0; i < n; i++ ) + { + double s = sum_response->data.db[i] + 0.5*weak_eval->data.db[i]; + sum_response->data.db[i] = s; + weak_eval->data.db[i] = -2*s; + } + + cvExp( weak_eval, weak_eval ); + + for( i = 0; i < n; i++ ) + { + double p = 1./(1. + weak_eval->data.db[i]); + double w = p*(1 - p), z; + w = MAX( w, lb_weight_thresh ); + weights->data.db[i] = w; + sumw += w; + if( orig_response->data.i[i] > 0 ) + { + z = 1./p; + fdata[sample_idx[i]*step] = (float)MIN(z, lb_z_max); + } + else + { + z = 1./(1-p); + fdata[sample_idx[i]*step] = (float)-MIN(z, lb_z_max); + } + } + } + else + { + // Gentle AdaBoost: + // weak_eval[i] = f(x_i) in [-1,1] + // w_i *= exp(-y_i*f(x_i)) + assert( params.boost_type == GENTLE ); + + for( i = 0; i < n; i++ ) + weak_eval->data.db[i] *= -orig_response->data.i[i]; + + cvExp( weak_eval, weak_eval ); + + for( i = 0; i < n; i++ ) + { + double w = weights->data.db[i] * weak_eval->data.db[i]; + weights->data.db[i] = w; + sumw += w; + } + } + } + + // renormalize weights + if( sumw > FLT_EPSILON ) + { + sumw = 1./sumw; + for( i = 0; i < n; ++i ) + weights->data.db[i] *= sumw; + } + + __END__; +} + + +void +CvBoost::trim_weights() +{ + //CV_FUNCNAME( "CvBoost::trim_weights" ); + + __BEGIN__; + + int i, count = data->sample_count, nz_count = 0; + double sum, threshold; + + if( params.weight_trim_rate <= 0. || params.weight_trim_rate >= 1. ) + EXIT; + + // use weak_eval as temporary buffer for sorted weights + cvCopy( weights, weak_eval ); + + std::sort(weak_eval->data.db, weak_eval->data.db + count); + + // as weight trimming occurs immediately after updating the weights, + // where they are renormalized, we assume that the weight sum = 1. + sum = 1. - params.weight_trim_rate; + + for( i = 0; i < count; i++ ) + { + double w = weak_eval->data.db[i]; + if( sum <= 0 ) + break; + sum -= w; + } + + threshold = i < count ? weak_eval->data.db[i] : DBL_MAX; + + for( i = 0; i < count; i++ ) + { + double w = weights->data.db[i]; + int f = w >= threshold; + subsample_mask->data.ptr[i] = (uchar)f; + nz_count += f; + } + + have_subsample = nz_count < count; + + __END__; +} + + +const CvMat* +CvBoost::get_active_vars( bool absolute_idx ) +{ + CvMat* mask = 0; + CvMat* inv_map = 0; + CvMat* result = 0; + + CV_FUNCNAME( "CvBoost::get_active_vars" ); + + __BEGIN__; + + if( !weak ) + CV_ERROR( CV_StsError, "The boosted tree ensemble has not been trained yet" ); + + if( !active_vars || !active_vars_abs ) + { + CvSeqReader reader; + int i, j, nactive_vars; + CvBoostTree* wtree; + const CvDTreeNode* node; + + assert(!active_vars && !active_vars_abs); + mask = cvCreateMat( 1, data->var_count, CV_8U ); + inv_map = cvCreateMat( 1, data->var_count, CV_32S ); + cvZero( mask ); + cvSet( inv_map, cvScalar(-1) ); + + // first pass: compute the mask of used variables + cvStartReadSeq( weak, &reader ); + for( i = 0; i < weak->total; i++ ) + { + CV_READ_SEQ_ELEM(wtree, reader); + + node = wtree->get_root(); + assert( node != 0 ); + for(;;) + { + const CvDTreeNode* parent; + for(;;) + { + CvDTreeSplit* split = node->split; + for( ; split != 0; split = split->next ) + mask->data.ptr[split->var_idx] = 1; + if( !node->left ) + break; + node = node->left; + } + + for( parent = node->parent; parent && parent->right == node; + node = parent, parent = parent->parent ) + ; + + if( !parent ) + break; + + node = parent->right; + } + } + + nactive_vars = cvCountNonZero(mask); + + //if ( nactive_vars > 0 ) + { + active_vars = cvCreateMat( 1, nactive_vars, CV_32S ); + active_vars_abs = cvCreateMat( 1, nactive_vars, CV_32S ); + + have_active_cat_vars = false; + + for( i = j = 0; i < data->var_count; i++ ) + { + if( mask->data.ptr[i] ) + { + active_vars->data.i[j] = i; + active_vars_abs->data.i[j] = data->var_idx ? data->var_idx->data.i[i] : i; + inv_map->data.i[i] = j; + if( data->var_type->data.i[i] >= 0 ) + have_active_cat_vars = true; + j++; + } + } + + + // second pass: now compute the condensed indices + cvStartReadSeq( weak, &reader ); + for( i = 0; i < weak->total; i++ ) + { + CV_READ_SEQ_ELEM(wtree, reader); + node = wtree->get_root(); + for(;;) + { + const CvDTreeNode* parent; + for(;;) + { + CvDTreeSplit* split = node->split; + for( ; split != 0; split = split->next ) + { + split->condensed_idx = inv_map->data.i[split->var_idx]; + assert( split->condensed_idx >= 0 ); + } + + if( !node->left ) + break; + node = node->left; + } + + for( parent = node->parent; parent && parent->right == node; + node = parent, parent = parent->parent ) + ; + + if( !parent ) + break; + + node = parent->right; + } + } + } + } + + result = absolute_idx ? active_vars_abs : active_vars; + + __END__; + + cvReleaseMat( &mask ); + cvReleaseMat( &inv_map ); + + return result; +} + + +float +CvBoost::predict( const CvMat* _sample, const CvMat* _missing, + CvMat* weak_responses, CvSlice slice, + bool raw_mode, bool return_sum ) const +{ + float value = -FLT_MAX; + + CvSeqReader reader; + double sum = 0; + int wstep = 0; + const float* sample_data; + + if( !weak ) + CV_Error( CV_StsError, "The boosted tree ensemble has not been trained yet" ); + + if( !CV_IS_MAT(_sample) || CV_MAT_TYPE(_sample->type) != CV_32FC1 || + (_sample->cols != 1 && _sample->rows != 1) || + (_sample->cols + _sample->rows - 1 != data->var_all && !raw_mode) || + (active_vars && _sample->cols + _sample->rows - 1 != active_vars->cols && raw_mode) ) + CV_Error( CV_StsBadArg, + "the input sample must be 1d floating-point vector with the same " + "number of elements as the total number of variables or " + "as the number of variables used for training" ); + + if( _missing ) + { + if( !CV_IS_MAT(_missing) || !CV_IS_MASK_ARR(_missing) || + !CV_ARE_SIZES_EQ(_missing, _sample) ) + CV_Error( CV_StsBadArg, + "the missing data mask must be 8-bit vector of the same size as input sample" ); + } + + int i, weak_count = cvSliceLength( slice, weak ); + if( weak_count >= weak->total ) + { + weak_count = weak->total; + slice.start_index = 0; + } + + if( weak_responses ) + { + if( !CV_IS_MAT(weak_responses) || + CV_MAT_TYPE(weak_responses->type) != CV_32FC1 || + (weak_responses->cols != 1 && weak_responses->rows != 1) || + weak_responses->cols + weak_responses->rows - 1 != weak_count ) + CV_Error( CV_StsBadArg, + "The output matrix of weak classifier responses must be valid " + "floating-point vector of the same number of components as the length of input slice" ); + wstep = CV_IS_MAT_CONT(weak_responses->type) ? 1 : weak_responses->step/sizeof(float); + } + + int var_count = active_vars->cols; + const int* vtype = data->var_type->data.i; + const int* cmap = data->cat_map->data.i; + const int* cofs = data->cat_ofs->data.i; + + cv::Mat sample = cv::cvarrToMat(_sample); + cv::Mat missing; + if(!_missing) + missing = cv::cvarrToMat(_missing); + + // if need, preprocess the input vector + if( !raw_mode ) + { + int sstep, mstep = 0; + const float* src_sample; + const uchar* src_mask = 0; + float* dst_sample; + uchar* dst_mask; + const int* vidx = active_vars->data.i; + const int* vidx_abs = active_vars_abs->data.i; + bool have_mask = _missing != 0; + + sample = cv::Mat(1, var_count, CV_32FC1); + missing = cv::Mat(1, var_count, CV_8UC1); + + dst_sample = sample.ptr(); + dst_mask = missing.ptr(); + + src_sample = _sample->data.fl; + sstep = CV_IS_MAT_CONT(_sample->type) ? 1 : _sample->step/sizeof(src_sample[0]); + + if( _missing ) + { + src_mask = _missing->data.ptr; + mstep = CV_IS_MAT_CONT(_missing->type) ? 1 : _missing->step; + } + + for( i = 0; i < var_count; i++ ) + { + int idx = vidx[i], idx_abs = vidx_abs[i]; + float val = src_sample[idx_abs*sstep]; + int ci = vtype[idx]; + uchar m = src_mask ? src_mask[idx_abs*mstep] : (uchar)0; + + if( ci >= 0 ) + { + int a = cofs[ci], b = (ci+1 >= data->cat_ofs->cols) ? data->cat_map->cols : cofs[ci+1], + c = a; + int ival = cvRound(val); + if ( (ival != val) && (!m) ) + CV_Error( CV_StsBadArg, + "one of input categorical variable is not an integer" ); + + while( a < b ) + { + c = (a + b) >> 1; + if( ival < cmap[c] ) + b = c; + else if( ival > cmap[c] ) + a = c+1; + else + break; + } + + if( c < 0 || ival != cmap[c] ) + { + m = 1; + have_mask = true; + } + else + { + val = (float)(c - cofs[ci]); + } + } + + dst_sample[i] = val; + dst_mask[i] = m; + } + + if( !have_mask ) + missing.release(); + } + else + { + if( !CV_IS_MAT_CONT(_sample->type & (_missing ? _missing->type : -1)) ) + CV_Error( CV_StsBadArg, "In raw mode the input vectors must be continuous" ); + } + + cvStartReadSeq( weak, &reader ); + cvSetSeqReaderPos( &reader, slice.start_index ); + + sample_data = sample.ptr(); + + if( !have_active_cat_vars && missing.empty() && !weak_responses ) + { + for( i = 0; i < weak_count; i++ ) + { + CvBoostTree* wtree; + const CvDTreeNode* node; + CV_READ_SEQ_ELEM( wtree, reader ); + + node = wtree->get_root(); + while( node->left ) + { + CvDTreeSplit* split = node->split; + int vi = split->condensed_idx; + float val = sample_data[vi]; + int dir = val <= split->ord.c ? -1 : 1; + if( split->inversed ) + dir = -dir; + node = dir < 0 ? node->left : node->right; + } + sum += node->value; + } + } + else + { + const int* avars = active_vars->data.i; + const uchar* m = !missing.empty() ? missing.ptr() : 0; + + // full-featured version + for( i = 0; i < weak_count; i++ ) + { + CvBoostTree* wtree; + const CvDTreeNode* node; + CV_READ_SEQ_ELEM( wtree, reader ); + + node = wtree->get_root(); + while( node->left ) + { + const CvDTreeSplit* split = node->split; + int dir = 0; + for( ; !dir && split != 0; split = split->next ) + { + int vi = split->condensed_idx; + int ci = vtype[avars[vi]]; + float val = sample_data[vi]; + if( m && m[vi] ) + continue; + if( ci < 0 ) // ordered + dir = val <= split->ord.c ? -1 : 1; + else // categorical + { + int c = cvRound(val); + dir = CV_DTREE_CAT_DIR(c, split->subset); + } + if( split->inversed ) + dir = -dir; + } + + if( !dir ) + { + int diff = node->right->sample_count - node->left->sample_count; + dir = diff < 0 ? -1 : 1; + } + node = dir < 0 ? node->left : node->right; + } + if( weak_responses ) + weak_responses->data.fl[i*wstep] = (float)node->value; + sum += node->value; + } + } + + if( return_sum ) + value = (float)sum; + else + { + int cls_idx = sum >= 0; + if( raw_mode ) + value = (float)cls_idx; + else + value = (float)cmap[cofs[vtype[data->var_count]] + cls_idx]; + } + + return value; +} + +float CvBoost::calc_error( CvMLData* _data, int type, std::vector *resp ) +{ + float err = 0; + const CvMat* values = _data->get_values(); + const CvMat* response = _data->get_responses(); + const CvMat* missing = _data->get_missing(); + const CvMat* sample_idx = (type == CV_TEST_ERROR) ? _data->get_test_sample_idx() : _data->get_train_sample_idx(); + const CvMat* var_types = _data->get_var_types(); + int* sidx = sample_idx ? sample_idx->data.i : 0; + int r_step = CV_IS_MAT_CONT(response->type) ? + 1 : response->step / CV_ELEM_SIZE(response->type); + bool is_classifier = var_types->data.ptr[var_types->cols-1] == CV_VAR_CATEGORICAL; + int sample_count = sample_idx ? sample_idx->cols : 0; + sample_count = (type == CV_TRAIN_ERROR && sample_count == 0) ? values->rows : sample_count; + float* pred_resp = 0; + if( resp && (sample_count > 0) ) + { + resp->resize( sample_count ); + pred_resp = &((*resp)[0]); + } + if ( is_classifier ) + { + for( int i = 0; i < sample_count; i++ ) + { + CvMat sample, miss; + int si = sidx ? sidx[i] : i; + cvGetRow( values, &sample, si ); + if( missing ) + cvGetRow( missing, &miss, si ); + float r = (float)predict( &sample, missing ? &miss : 0 ); + if( pred_resp ) + pred_resp[i] = r; + int d = fabs((double)r - response->data.fl[si*r_step]) <= FLT_EPSILON ? 0 : 1; + err += d; + } + err = sample_count ? err / (float)sample_count * 100 : -FLT_MAX; + } + else + { + for( int i = 0; i < sample_count; i++ ) + { + CvMat sample, miss; + int si = sidx ? sidx[i] : i; + cvGetRow( values, &sample, si ); + if( missing ) + cvGetRow( missing, &miss, si ); + float r = (float)predict( &sample, missing ? &miss : 0 ); + if( pred_resp ) + pred_resp[i] = r; + float d = r - response->data.fl[si*r_step]; + err += d*d; + } + err = sample_count ? err / (float)sample_count : -FLT_MAX; + } + return err; +} + +void CvBoost::write_params( CvFileStorage* fs ) const +{ + const char* boost_type_str = + params.boost_type == DISCRETE ? "DiscreteAdaboost" : + params.boost_type == REAL ? "RealAdaboost" : + params.boost_type == LOGIT ? "LogitBoost" : + params.boost_type == GENTLE ? "GentleAdaboost" : 0; + + const char* split_crit_str = + params.split_criteria == DEFAULT ? "Default" : + params.split_criteria == GINI ? "Gini" : + params.boost_type == MISCLASS ? "Misclassification" : + params.boost_type == SQERR ? "SquaredErr" : 0; + + if( boost_type_str ) + cvWriteString( fs, "boosting_type", boost_type_str ); + else + cvWriteInt( fs, "boosting_type", params.boost_type ); + + if( split_crit_str ) + cvWriteString( fs, "splitting_criteria", split_crit_str ); + else + cvWriteInt( fs, "splitting_criteria", params.split_criteria ); + + cvWriteInt( fs, "ntrees", weak->total ); + cvWriteReal( fs, "weight_trimming_rate", params.weight_trim_rate ); + + data->write_params( fs ); +} + + +void CvBoost::read_params( CvFileStorage* fs, CvFileNode* fnode ) +{ + CV_FUNCNAME( "CvBoost::read_params" ); + + __BEGIN__; + + CvFileNode* temp; + + if( !fnode || !CV_NODE_IS_MAP(fnode->tag) ) + return; + + data = new CvDTreeTrainData(); + CV_CALL( data->read_params(fs, fnode)); + data->shared = true; + + params.max_depth = data->params.max_depth; + params.min_sample_count = data->params.min_sample_count; + params.max_categories = data->params.max_categories; + params.priors = data->params.priors; + params.regression_accuracy = data->params.regression_accuracy; + params.use_surrogates = data->params.use_surrogates; + + temp = cvGetFileNodeByName( fs, fnode, "boosting_type" ); + if( !temp ) + return; + + if( temp && CV_NODE_IS_STRING(temp->tag) ) + { + const char* boost_type_str = cvReadString( temp, "" ); + params.boost_type = strcmp( boost_type_str, "DiscreteAdaboost" ) == 0 ? DISCRETE : + strcmp( boost_type_str, "RealAdaboost" ) == 0 ? REAL : + strcmp( boost_type_str, "LogitBoost" ) == 0 ? LOGIT : + strcmp( boost_type_str, "GentleAdaboost" ) == 0 ? GENTLE : -1; + } + else + params.boost_type = cvReadInt( temp, -1 ); + + if( params.boost_type < DISCRETE || params.boost_type > GENTLE ) + CV_ERROR( CV_StsBadArg, "Unknown boosting type" ); + + temp = cvGetFileNodeByName( fs, fnode, "splitting_criteria" ); + if( temp && CV_NODE_IS_STRING(temp->tag) ) + { + const char* split_crit_str = cvReadString( temp, "" ); + params.split_criteria = strcmp( split_crit_str, "Default" ) == 0 ? DEFAULT : + strcmp( split_crit_str, "Gini" ) == 0 ? GINI : + strcmp( split_crit_str, "Misclassification" ) == 0 ? MISCLASS : + strcmp( split_crit_str, "SquaredErr" ) == 0 ? SQERR : -1; + } + else + params.split_criteria = cvReadInt( temp, -1 ); + + if( params.split_criteria < DEFAULT || params.boost_type > SQERR ) + CV_ERROR( CV_StsBadArg, "Unknown boosting type" ); + + params.weak_count = cvReadIntByName( fs, fnode, "ntrees" ); + params.weight_trim_rate = cvReadRealByName( fs, fnode, "weight_trimming_rate", 0. ); + + __END__; +} + + + +void +CvBoost::read( CvFileStorage* fs, CvFileNode* node ) +{ + CV_FUNCNAME( "CvBoost::read" ); + + __BEGIN__; + + CvSeqReader reader; + CvFileNode* trees_fnode; + CvMemStorage* storage; + int i, ntrees; + + clear(); + read_params( fs, node ); + + if( !data ) + EXIT; + + trees_fnode = cvGetFileNodeByName( fs, node, "trees" ); + if( !trees_fnode || !CV_NODE_IS_SEQ(trees_fnode->tag) ) + CV_ERROR( CV_StsParseError, " tag is missing" ); + + cvStartReadSeq( trees_fnode->data.seq, &reader ); + ntrees = trees_fnode->data.seq->total; + + if( ntrees != params.weak_count ) + CV_ERROR( CV_StsUnmatchedSizes, + "The number of trees stored does not match tag value" ); + + CV_CALL( storage = cvCreateMemStorage() ); + weak = cvCreateSeq( 0, sizeof(CvSeq), sizeof(CvBoostTree*), storage ); + + for( i = 0; i < ntrees; i++ ) + { + CvBoostTree* tree = new CvBoostTree(); + CV_CALL(tree->read( fs, (CvFileNode*)reader.ptr, this, data )); + CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); + cvSeqPush( weak, &tree ); + } + get_active_vars(); + + __END__; +} + + +void +CvBoost::write( CvFileStorage* fs, const char* name ) const +{ + CV_FUNCNAME( "CvBoost::write" ); + + __BEGIN__; + + CvSeqReader reader; + int i; + + cvStartWriteStruct( fs, name, CV_NODE_MAP, CV_TYPE_NAME_ML_BOOSTING ); + + if( !weak ) + CV_ERROR( CV_StsBadArg, "The classifier has not been trained yet" ); + + write_params( fs ); + cvStartWriteStruct( fs, "trees", CV_NODE_SEQ ); + + cvStartReadSeq( weak, &reader ); + + for( i = 0; i < weak->total; i++ ) + { + CvBoostTree* tree; + CV_READ_SEQ_ELEM( tree, reader ); + cvStartWriteStruct( fs, 0, CV_NODE_MAP ); + tree->write( fs ); + cvEndWriteStruct( fs ); + } + + cvEndWriteStruct( fs ); + cvEndWriteStruct( fs ); + + __END__; +} + + +CvMat* +CvBoost::get_weights() +{ + return weights; +} + + +CvMat* +CvBoost::get_subtree_weights() +{ + return subtree_weights; +} + + +CvMat* +CvBoost::get_weak_response() +{ + return weak_eval; +} + + +const CvBoostParams& +CvBoost::get_params() const +{ + return params; +} + +CvSeq* CvBoost::get_weak_predictors() +{ + return weak; +} + +const CvDTreeTrainData* CvBoost::get_data() const +{ + return data; +} + +using namespace cv; + +CvBoost::CvBoost( const Mat& _train_data, int _tflag, + const Mat& _responses, const Mat& _var_idx, + const Mat& _sample_idx, const Mat& _var_type, + const Mat& _missing_mask, + CvBoostParams _params ) +{ + weak = 0; + data = 0; + default_model_name = "my_boost_tree"; + active_vars = active_vars_abs = orig_response = sum_response = weak_eval = + subsample_mask = weights = subtree_weights = 0; + + train( _train_data, _tflag, _responses, _var_idx, _sample_idx, + _var_type, _missing_mask, _params ); +} + + +bool +CvBoost::train( const Mat& _train_data, int _tflag, + const Mat& _responses, const Mat& _var_idx, + const Mat& _sample_idx, const Mat& _var_type, + const Mat& _missing_mask, + CvBoostParams _params, bool _update ) +{ + train_data_hdr = _train_data; + train_data_mat = _train_data; + responses_hdr = _responses; + responses_mat = _responses; + + CvMat vidx = _var_idx, sidx = _sample_idx, vtype = _var_type, mmask = _missing_mask; + + return train(&train_data_hdr, _tflag, &responses_hdr, vidx.data.ptr ? &vidx : 0, + sidx.data.ptr ? &sidx : 0, vtype.data.ptr ? &vtype : 0, + mmask.data.ptr ? &mmask : 0, _params, _update); +} + +float +CvBoost::predict( const Mat& _sample, const Mat& _missing, + const Range& slice, bool raw_mode, bool return_sum ) const +{ + CvMat sample = _sample, mmask = _missing; + /*if( weak_responses ) + { + int weak_count = cvSliceLength( slice, weak ); + if( weak_count >= weak->total ) + { + weak_count = weak->total; + slice.start_index = 0; + } + + if( !(weak_responses->data && weak_responses->type() == CV_32FC1 && + (weak_responses->cols == 1 || weak_responses->rows == 1) && + weak_responses->cols + weak_responses->rows - 1 == weak_count) ) + weak_responses->create(weak_count, 1, CV_32FC1); + pwr = &(wr = *weak_responses); + }*/ + return predict(&sample, _missing.empty() ? 0 : &mmask, 0, + slice == Range::all() ? CV_WHOLE_SEQ : cvSlice(slice.start, slice.end), + raw_mode, return_sum); +} + +/* End of file. */ diff --git a/apps/traincascade/old_ml_data.cpp b/apps/traincascade/old_ml_data.cpp new file mode 100644 index 0000000000..d221dcbf0f --- /dev/null +++ b/apps/traincascade/old_ml_data.cpp @@ -0,0 +1,792 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// Intel License Agreement +// +// Copyright (C) 2000, Intel Corporation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of Intel Corporation may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#include "old_ml_precomp.hpp" +#include + +#define MISS_VAL FLT_MAX +#define CV_VAR_MISS 0 + +CvTrainTestSplit::CvTrainTestSplit() +{ + train_sample_part_mode = CV_COUNT; + train_sample_part.count = -1; + mix = false; +} + +CvTrainTestSplit::CvTrainTestSplit( int _train_sample_count, bool _mix ) +{ + train_sample_part_mode = CV_COUNT; + train_sample_part.count = _train_sample_count; + mix = _mix; +} + +CvTrainTestSplit::CvTrainTestSplit( float _train_sample_portion, bool _mix ) +{ + train_sample_part_mode = CV_PORTION; + train_sample_part.portion = _train_sample_portion; + mix = _mix; +} + +//////////////// + +CvMLData::CvMLData() +{ + values = missing = var_types = var_idx_mask = response_out = var_idx_out = var_types_out = 0; + train_sample_idx = test_sample_idx = 0; + header_lines_number = 0; + sample_idx = 0; + response_idx = -1; + + train_sample_count = -1; + + delimiter = ','; + miss_ch = '?'; + //flt_separator = '.'; + + rng = &cv::theRNG(); +} + +CvMLData::~CvMLData() +{ + clear(); +} + +void CvMLData::free_train_test_idx() +{ + cvReleaseMat( &train_sample_idx ); + cvReleaseMat( &test_sample_idx ); + sample_idx = 0; +} + +void CvMLData::clear() +{ + class_map.clear(); + + cvReleaseMat( &values ); + cvReleaseMat( &missing ); + cvReleaseMat( &var_types ); + cvReleaseMat( &var_idx_mask ); + + cvReleaseMat( &response_out ); + cvReleaseMat( &var_idx_out ); + cvReleaseMat( &var_types_out ); + + free_train_test_idx(); + + total_class_count = 0; + + response_idx = -1; + + train_sample_count = -1; +} + + +void CvMLData::set_header_lines_number( int idx ) +{ + header_lines_number = std::max(0, idx); +} + +int CvMLData::get_header_lines_number() const +{ + return header_lines_number; +} + +static char *fgets_chomp(char *str, int n, FILE *stream) +{ + char *head = fgets(str, n, stream); + if( head ) + { + for(char *tail = head + strlen(head) - 1; tail >= head; --tail) + { + if( *tail != '\r' && *tail != '\n' ) + break; + *tail = '\0'; + } + } + return head; +} + + +int CvMLData::read_csv(const char* filename) +{ + const int M = 1000000; + const char str_delimiter[3] = { ' ', delimiter, '\0' }; + FILE* file = 0; + CvMemStorage* storage; + CvSeq* seq; + char *ptr; + float* el_ptr; + CvSeqReader reader; + int cols_count = 0; + uchar *var_types_ptr = 0; + + clear(); + + file = fopen( filename, "rt" ); + + if( !file ) + return -1; + + std::vector _buf(M); + char* buf = &_buf[0]; + + // skip header lines + for( int i = 0; i < header_lines_number; i++ ) + { + if( fgets( buf, M, file ) == 0 ) + { + fclose(file); + return -1; + } + } + + // read the first data line and determine the number of variables + if( !fgets_chomp( buf, M, file )) + { + fclose(file); + return -1; + } + + ptr = buf; + while( *ptr == ' ' ) + ptr++; + for( ; *ptr != '\0'; ) + { + if(*ptr == delimiter || *ptr == ' ') + { + cols_count++; + ptr++; + while( *ptr == ' ' ) ptr++; + } + else + ptr++; + } + + cols_count++; + + if ( cols_count == 0) + { + fclose(file); + return -1; + } + + // create temporary memory storage to store the whole database + el_ptr = new float[cols_count]; + storage = cvCreateMemStorage(); + seq = cvCreateSeq( 0, sizeof(*seq), cols_count*sizeof(float), storage ); + + var_types = cvCreateMat( 1, cols_count, CV_8U ); + cvZero( var_types ); + var_types_ptr = var_types->data.ptr; + + for(;;) + { + char *token = NULL; + int type; + token = strtok(buf, str_delimiter); + if (!token) + break; + for (int i = 0; i < cols_count-1; i++) + { + str_to_flt_elem( token, el_ptr[i], type); + var_types_ptr[i] |= type; + token = strtok(NULL, str_delimiter); + if (!token) + { + fclose(file); + delete [] el_ptr; + return -1; + } + } + str_to_flt_elem( token, el_ptr[cols_count-1], type); + var_types_ptr[cols_count-1] |= type; + cvSeqPush( seq, el_ptr ); + if( !fgets_chomp( buf, M, file ) ) + break; + } + fclose(file); + + values = cvCreateMat( seq->total, cols_count, CV_32FC1 ); + missing = cvCreateMat( seq->total, cols_count, CV_8U ); + var_idx_mask = cvCreateMat( 1, values->cols, CV_8UC1 ); + cvSet( var_idx_mask, cvRealScalar(1) ); + train_sample_count = seq->total; + + cvStartReadSeq( seq, &reader ); + for(int i = 0; i < seq->total; i++ ) + { + const float* sdata = (float*)reader.ptr; + float* ddata = values->data.fl + cols_count*i; + uchar* dm = missing->data.ptr + cols_count*i; + + for( int j = 0; j < cols_count; j++ ) + { + ddata[j] = sdata[j]; + dm[j] = ( fabs( MISS_VAL - sdata[j] ) <= FLT_EPSILON ); + } + CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); + } + + if ( cvNorm( missing, 0, CV_L1 ) <= FLT_EPSILON ) + cvReleaseMat( &missing ); + + cvReleaseMemStorage( &storage ); + delete []el_ptr; + return 0; +} + +const CvMat* CvMLData::get_values() const +{ + return values; +} + +const CvMat* CvMLData::get_missing() const +{ + CV_FUNCNAME( "CvMLData::get_missing" ); + __BEGIN__; + + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + + __END__; + + return missing; +} + +const std::map& CvMLData::get_class_labels_map() const +{ + return class_map; +} + +void CvMLData::str_to_flt_elem( const char* token, float& flt_elem, int& type) +{ + + char* stopstring = NULL; + flt_elem = (float)strtod( token, &stopstring ); + assert( stopstring ); + type = CV_VAR_ORDERED; + if ( *stopstring == miss_ch && strlen(stopstring) == 1 ) // missed value + { + flt_elem = MISS_VAL; + type = CV_VAR_MISS; + } + else + { + if ( (*stopstring != 0) && (*stopstring != '\n') && (strcmp(stopstring, "\r\n") != 0) ) // class label + { + int idx = class_map[token]; + if ( idx == 0) + { + total_class_count++; + idx = total_class_count; + class_map[token] = idx; + } + flt_elem = (float)idx; + type = CV_VAR_CATEGORICAL; + } + } +} + +void CvMLData::set_delimiter(char ch) +{ + CV_FUNCNAME( "CvMLData::set_delimited" ); + __BEGIN__; + + if (ch == miss_ch /*|| ch == flt_separator*/) + CV_ERROR(CV_StsBadArg, "delimited, miss_character and flt_separator must be different"); + + delimiter = ch; + + __END__; +} + +char CvMLData::get_delimiter() const +{ + return delimiter; +} + +void CvMLData::set_miss_ch(char ch) +{ + CV_FUNCNAME( "CvMLData::set_miss_ch" ); + __BEGIN__; + + if (ch == delimiter/* || ch == flt_separator*/) + CV_ERROR(CV_StsBadArg, "delimited, miss_character and flt_separator must be different"); + + miss_ch = ch; + + __END__; +} + +char CvMLData::get_miss_ch() const +{ + return miss_ch; +} + +void CvMLData::set_response_idx( int idx ) +{ + CV_FUNCNAME( "CvMLData::set_response_idx" ); + __BEGIN__; + + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + + if ( idx >= values->cols) + CV_ERROR( CV_StsBadArg, "idx value is not correct" ); + + if ( response_idx >= 0 ) + chahge_var_idx( response_idx, true ); + if ( idx >= 0 ) + chahge_var_idx( idx, false ); + response_idx = idx; + + __END__; +} + +int CvMLData::get_response_idx() const +{ + CV_FUNCNAME( "CvMLData::get_response_idx" ); + __BEGIN__; + + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + __END__; + return response_idx; +} + +void CvMLData::change_var_type( int var_idx, int type ) +{ + CV_FUNCNAME( "CvMLData::change_var_type" ); + __BEGIN__; + + int var_count = 0; + + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + + var_count = values->cols; + + if ( var_idx < 0 || var_idx >= var_count) + CV_ERROR( CV_StsBadArg, "var_idx is not correct" ); + + if ( type != CV_VAR_ORDERED && type != CV_VAR_CATEGORICAL) + CV_ERROR( CV_StsBadArg, "type is not correct" ); + + assert( var_types ); + if ( var_types->data.ptr[var_idx] == CV_VAR_CATEGORICAL && type == CV_VAR_ORDERED) + CV_ERROR( CV_StsBadArg, "it`s impossible to assign CV_VAR_ORDERED type to categorical variable" ); + var_types->data.ptr[var_idx] = (uchar)type; + + __END__; + + return; +} + +void CvMLData::set_var_types( const char* str ) +{ + CV_FUNCNAME( "CvMLData::set_var_types" ); + __BEGIN__; + + const char* ord = 0, *cat = 0; + int var_count = 0, set_var_type_count = 0; + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + + var_count = values->cols; + + assert( var_types ); + + ord = strstr( str, "ord" ); + cat = strstr( str, "cat" ); + if ( !ord && !cat ) + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + + if ( !ord && strlen(cat) == 3 ) // str == "cat" + { + cvSet( var_types, cvScalarAll(CV_VAR_CATEGORICAL) ); + return; + } + + if ( !cat && strlen(ord) == 3 ) // str == "ord" + { + cvSet( var_types, cvScalarAll(CV_VAR_ORDERED) ); + return; + } + + if ( ord ) // parse ord str + { + char* stopstring = NULL; + if ( ord[3] != '[') + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + + ord += 4; // pass "ord[" + do + { + int b1 = (int)strtod( ord, &stopstring ); + if ( *stopstring == 0 || (*stopstring != ',' && *stopstring != ']' && *stopstring != '-') ) + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + ord = stopstring + 1; + if ( (stopstring[0] == ',') || (stopstring[0] == ']')) + { + if ( var_types->data.ptr[b1] == CV_VAR_CATEGORICAL) + CV_ERROR( CV_StsBadArg, "it`s impossible to assign CV_VAR_ORDERED type to categorical variable" ); + var_types->data.ptr[b1] = CV_VAR_ORDERED; + set_var_type_count++; + } + else + { + if ( stopstring[0] == '-') + { + int b2 = (int)strtod( ord, &stopstring); + if ( (*stopstring == 0) || (*stopstring != ',' && *stopstring != ']') ) + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + ord = stopstring + 1; + for (int i = b1; i <= b2; i++) + { + if ( var_types->data.ptr[i] == CV_VAR_CATEGORICAL) + CV_ERROR( CV_StsBadArg, "it`s impossible to assign CV_VAR_ORDERED type to categorical variable" ); + var_types->data.ptr[i] = CV_VAR_ORDERED; + } + set_var_type_count += b2 - b1 + 1; + } + else + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + + } + } + while (*stopstring != ']'); + + if ( stopstring[1] != '\0' && stopstring[1] != ',') + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + } + + if ( cat ) // parse cat str + { + char* stopstring = NULL; + if ( cat[3] != '[') + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + + cat += 4; // pass "cat[" + do + { + int b1 = (int)strtod( cat, &stopstring ); + if ( *stopstring == 0 || (*stopstring != ',' && *stopstring != ']' && *stopstring != '-') ) + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + cat = stopstring + 1; + if ( (stopstring[0] == ',') || (stopstring[0] == ']')) + { + var_types->data.ptr[b1] = CV_VAR_CATEGORICAL; + set_var_type_count++; + } + else + { + if ( stopstring[0] == '-') + { + int b2 = (int)strtod( cat, &stopstring); + if ( (*stopstring == 0) || (*stopstring != ',' && *stopstring != ']') ) + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + cat = stopstring + 1; + for (int i = b1; i <= b2; i++) + var_types->data.ptr[i] = CV_VAR_CATEGORICAL; + set_var_type_count += b2 - b1 + 1; + } + else + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + + } + } + while (*stopstring != ']'); + + if ( stopstring[1] != '\0' && stopstring[1] != ',') + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + } + + if (set_var_type_count != var_count) + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + + __END__; +} + +const CvMat* CvMLData::get_var_types() +{ + CV_FUNCNAME( "CvMLData::get_var_types" ); + __BEGIN__; + + uchar *var_types_out_ptr = 0; + int avcount, vt_size; + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + + assert( var_idx_mask ); + + avcount = cvFloor( cvNorm( var_idx_mask, 0, CV_L1 ) ); + vt_size = avcount + (response_idx >= 0); + + if ( avcount == values->cols || (avcount == values->cols-1 && response_idx == values->cols-1) ) + return var_types; + + if ( !var_types_out || ( var_types_out && var_types_out->cols != vt_size ) ) + { + cvReleaseMat( &var_types_out ); + var_types_out = cvCreateMat( 1, vt_size, CV_8UC1 ); + } + + var_types_out_ptr = var_types_out->data.ptr; + for( int i = 0; i < var_types->cols; i++) + { + if (i == response_idx || !var_idx_mask->data.ptr[i]) continue; + *var_types_out_ptr = var_types->data.ptr[i]; + var_types_out_ptr++; + } + if ( response_idx >= 0 ) + *var_types_out_ptr = var_types->data.ptr[response_idx]; + + __END__; + + return var_types_out; +} + +int CvMLData::get_var_type( int var_idx ) const +{ + return var_types->data.ptr[var_idx]; +} + +const CvMat* CvMLData::get_responses() +{ + CV_FUNCNAME( "CvMLData::get_responses_ptr" ); + __BEGIN__; + + int var_count = 0; + + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + var_count = values->cols; + + if ( response_idx < 0 || response_idx >= var_count ) + return 0; + if ( !response_out ) + response_out = cvCreateMatHeader( values->rows, 1, CV_32FC1 ); + else + cvInitMatHeader( response_out, values->rows, 1, CV_32FC1); + cvGetCol( values, response_out, response_idx ); + + __END__; + + return response_out; +} + +void CvMLData::set_train_test_split( const CvTrainTestSplit * spl) +{ + CV_FUNCNAME( "CvMLData::set_division" ); + __BEGIN__; + + int sample_count = 0; + + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + + sample_count = values->rows; + + float train_sample_portion; + + if (spl->train_sample_part_mode == CV_COUNT) + { + train_sample_count = spl->train_sample_part.count; + if (train_sample_count > sample_count) + CV_ERROR( CV_StsBadArg, "train samples count is not correct" ); + train_sample_count = train_sample_count<=0 ? sample_count : train_sample_count; + } + else // dtype.train_sample_part_mode == CV_PORTION + { + train_sample_portion = spl->train_sample_part.portion; + if ( train_sample_portion > 1) + CV_ERROR( CV_StsBadArg, "train samples count is not correct" ); + train_sample_portion = train_sample_portion <= FLT_EPSILON || + 1 - train_sample_portion <= FLT_EPSILON ? 1 : train_sample_portion; + train_sample_count = std::max(1, cvFloor( train_sample_portion * sample_count )); + } + + if ( train_sample_count == sample_count ) + { + free_train_test_idx(); + return; + } + + if ( train_sample_idx && train_sample_idx->cols != train_sample_count ) + free_train_test_idx(); + + if ( !sample_idx) + { + int test_sample_count = sample_count- train_sample_count; + sample_idx = (int*)cvAlloc( sample_count * sizeof(sample_idx[0]) ); + for (int i = 0; i < sample_count; i++ ) + sample_idx[i] = i; + train_sample_idx = cvCreateMatHeader( 1, train_sample_count, CV_32SC1 ); + *train_sample_idx = cvMat( 1, train_sample_count, CV_32SC1, &sample_idx[0] ); + + CV_Assert(test_sample_count > 0); + test_sample_idx = cvCreateMatHeader( 1, test_sample_count, CV_32SC1 ); + *test_sample_idx = cvMat( 1, test_sample_count, CV_32SC1, &sample_idx[train_sample_count] ); + } + + mix = spl->mix; + if ( mix ) + mix_train_and_test_idx(); + + __END__; +} + +const CvMat* CvMLData::get_train_sample_idx() const +{ + CV_FUNCNAME( "CvMLData::get_train_sample_idx" ); + __BEGIN__; + + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + __END__; + + return train_sample_idx; +} + +const CvMat* CvMLData::get_test_sample_idx() const +{ + CV_FUNCNAME( "CvMLData::get_test_sample_idx" ); + __BEGIN__; + + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + __END__; + + return test_sample_idx; +} + +void CvMLData::mix_train_and_test_idx() +{ + CV_FUNCNAME( "CvMLData::mix_train_and_test_idx" ); + __BEGIN__; + + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + __END__; + + if ( !sample_idx) + return; + + if ( train_sample_count > 0 && train_sample_count < values->rows ) + { + int n = values->rows; + for (int i = 0; i < n; i++) + { + int a = (*rng)(n); + int b = (*rng)(n); + int t; + CV_SWAP( sample_idx[a], sample_idx[b], t ); + } + } +} + +const CvMat* CvMLData::get_var_idx() +{ + CV_FUNCNAME( "CvMLData::get_var_idx" ); + __BEGIN__; + + int avcount = 0; + + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + + assert( var_idx_mask ); + + avcount = cvFloor( cvNorm( var_idx_mask, 0, CV_L1 ) ); + int* vidx; + + if ( avcount == values->cols ) + return 0; + + if ( !var_idx_out || ( var_idx_out && var_idx_out->cols != avcount ) ) + { + cvReleaseMat( &var_idx_out ); + var_idx_out = cvCreateMat( 1, avcount, CV_32SC1); + if ( response_idx >=0 ) + var_idx_mask->data.ptr[response_idx] = 0; + } + + vidx = var_idx_out->data.i; + + for(int i = 0; i < var_idx_mask->cols; i++) + if ( var_idx_mask->data.ptr[i] ) + { + *vidx = i; + vidx++; + } + + __END__; + + return var_idx_out; +} + +void CvMLData::chahge_var_idx( int vi, bool state ) +{ + change_var_idx( vi, state ); +} + +void CvMLData::change_var_idx( int vi, bool state ) +{ + CV_FUNCNAME( "CvMLData::change_var_idx" ); + __BEGIN__; + + int var_count = 0; + + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + + var_count = values->cols; + + if ( vi < 0 || vi >= var_count) + CV_ERROR( CV_StsBadArg, "variable index is not correct" ); + + assert( var_idx_mask ); + var_idx_mask->data.ptr[vi] = state; + + __END__; +} + +/* End of file. */ diff --git a/apps/traincascade/old_ml_inner_functions.cpp b/apps/traincascade/old_ml_inner_functions.cpp new file mode 100644 index 0000000000..10b43f93fe --- /dev/null +++ b/apps/traincascade/old_ml_inner_functions.cpp @@ -0,0 +1,1879 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// Intel License Agreement +// +// Copyright (C) 2000, Intel Corporation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of Intel Corporation may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#include "old_ml_precomp.hpp" + + +CvStatModel::CvStatModel() +{ + default_model_name = "my_stat_model"; +} + + +CvStatModel::~CvStatModel() +{ + clear(); +} + + +void CvStatModel::clear() +{ +} + + +void CvStatModel::save( const char* filename, const char* name ) const +{ + CvFileStorage* fs = 0; + + CV_FUNCNAME( "CvStatModel::save" ); + + __BEGIN__; + + CV_CALL( fs = cvOpenFileStorage( filename, 0, CV_STORAGE_WRITE )); + if( !fs ) + CV_ERROR( CV_StsError, "Could not open the file storage. Check the path and permissions" ); + + write( fs, name ? name : default_model_name ); + + __END__; + + cvReleaseFileStorage( &fs ); +} + + +void CvStatModel::load( const char* filename, const char* name ) +{ + CvFileStorage* fs = 0; + + CV_FUNCNAME( "CvStatModel::load" ); + + __BEGIN__; + + CvFileNode* model_node = 0; + + CV_CALL( fs = cvOpenFileStorage( filename, 0, CV_STORAGE_READ )); + if( !fs ) + EXIT; + + if( name ) + model_node = cvGetFileNodeByName( fs, 0, name ); + else + { + CvFileNode* root = cvGetRootFileNode( fs ); + if( root->data.seq->total > 0 ) + model_node = (CvFileNode*)cvGetSeqElem( root->data.seq, 0 ); + } + + read( fs, model_node ); + + __END__; + + cvReleaseFileStorage( &fs ); +} + + +void CvStatModel::write( CvFileStorage*, const char* ) const +{ + OPENCV_ERROR( CV_StsNotImplemented, "CvStatModel::write", "" ); +} + + +void CvStatModel::read( CvFileStorage*, CvFileNode* ) +{ + OPENCV_ERROR( CV_StsNotImplemented, "CvStatModel::read", "" ); +} + + +/* Calculates upper triangular matrix S, where A is a symmetrical matrix A=S'*S */ +static void cvChol( CvMat* A, CvMat* S ) +{ + int dim = A->rows; + + int i, j, k; + float sum; + + for( i = 0; i < dim; i++ ) + { + for( j = 0; j < i; j++ ) + CV_MAT_ELEM(*S, float, i, j) = 0; + + sum = 0; + for( k = 0; k < i; k++ ) + sum += CV_MAT_ELEM(*S, float, k, i) * CV_MAT_ELEM(*S, float, k, i); + + CV_MAT_ELEM(*S, float, i, i) = (float)sqrt(CV_MAT_ELEM(*A, float, i, i) - sum); + + for( j = i + 1; j < dim; j++ ) + { + sum = 0; + for( k = 0; k < i; k++ ) + sum += CV_MAT_ELEM(*S, float, k, i) * CV_MAT_ELEM(*S, float, k, j); + + CV_MAT_ELEM(*S, float, i, j) = + (CV_MAT_ELEM(*A, float, i, j) - sum) / CV_MAT_ELEM(*S, float, i, i); + + } + } +} + +/* Generates from multivariate normal distribution, where - is an + average row vector, - symmetric covariation matrix */ +CV_IMPL void cvRandMVNormal( CvMat* mean, CvMat* cov, CvMat* sample, CvRNG* rng ) +{ + int dim = sample->cols; + int amount = sample->rows; + + CvRNG state = rng ? *rng : cvRNG( cvGetTickCount() ); + cvRandArr(&state, sample, CV_RAND_NORMAL, cvScalarAll(0), cvScalarAll(1) ); + + CvMat* utmat = cvCreateMat(dim, dim, sample->type); + CvMat* vect = cvCreateMatHeader(1, dim, sample->type); + + cvChol(cov, utmat); + + int i; + for( i = 0; i < amount; i++ ) + { + cvGetRow(sample, vect, i); + cvMatMulAdd(vect, utmat, mean, vect); + } + + cvReleaseMat(&vect); + cvReleaseMat(&utmat); +} + + +/* Generates of points from a discrete variate xi, + where Pr{xi = k} == probs[k], 0 < k < len - 1. */ +static void cvRandSeries( float probs[], int len, int sample[], int amount ) +{ + CvMat* univals = cvCreateMat(1, amount, CV_32FC1); + float* knots = (float*)cvAlloc( len * sizeof(float) ); + + int i, j; + + CvRNG state = cvRNG(-1); + cvRandArr(&state, univals, CV_RAND_UNI, cvScalarAll(0), cvScalarAll(1) ); + + knots[0] = probs[0]; + for( i = 1; i < len; i++ ) + knots[i] = knots[i - 1] + probs[i]; + + for( i = 0; i < amount; i++ ) + for( j = 0; j < len; j++ ) + { + if ( CV_MAT_ELEM(*univals, float, 0, i) <= knots[j] ) + { + sample[i] = j; + break; + } + } + + cvFree(&knots); +} + +/* Generates from gaussian mixture distribution */ +CV_IMPL void cvRandGaussMixture( CvMat* means[], + CvMat* covs[], + float weights[], + int clsnum, + CvMat* sample, + CvMat* sampClasses ) +{ + int dim = sample->cols; + int amount = sample->rows; + + int i, clss; + + int* sample_clsnum = (int*)cvAlloc( amount * sizeof(int) ); + CvMat** utmats = (CvMat**)cvAlloc( clsnum * sizeof(CvMat*) ); + CvMat* vect = cvCreateMatHeader(1, dim, CV_32FC1); + + CvMat* classes; + if( sampClasses ) + classes = sampClasses; + else + classes = cvCreateMat(1, amount, CV_32FC1); + + CvRNG state = cvRNG(-1); + cvRandArr(&state, sample, CV_RAND_NORMAL, cvScalarAll(0), cvScalarAll(1)); + + cvRandSeries(weights, clsnum, sample_clsnum, amount); + + for( i = 0; i < clsnum; i++ ) + { + utmats[i] = cvCreateMat(dim, dim, CV_32FC1); + cvChol(covs[i], utmats[i]); + } + + for( i = 0; i < amount; i++ ) + { + CV_MAT_ELEM(*classes, float, 0, i) = (float)sample_clsnum[i]; + cvGetRow(sample, vect, i); + clss = sample_clsnum[i]; + cvMatMulAdd(vect, utmats[clss], means[clss], vect); + } + + if( !sampClasses ) + cvReleaseMat(&classes); + for( i = 0; i < clsnum; i++ ) + cvReleaseMat(&utmats[i]); + cvFree(&utmats); + cvFree(&sample_clsnum); + cvReleaseMat(&vect); +} + + +CvMat* icvGenerateRandomClusterCenters ( int seed, const CvMat* data, + int num_of_clusters, CvMat* _centers ) +{ + CvMat* centers = _centers; + + CV_FUNCNAME("icvGenerateRandomClusterCenters"); + __BEGIN__; + + CvRNG rng; + CvMat data_comp, centers_comp; + CvPoint minLoc, maxLoc; // Not used, just for function "cvMinMaxLoc" + double minVal, maxVal; + int i; + int dim = data ? data->cols : 0; + + if( ICV_IS_MAT_OF_TYPE(data, CV_32FC1) ) + { + if( _centers && !ICV_IS_MAT_OF_TYPE (_centers, CV_32FC1) ) + { + CV_ERROR(CV_StsBadArg,""); + } + else if( !_centers ) + CV_CALL(centers = cvCreateMat (num_of_clusters, dim, CV_32FC1)); + } + else if( ICV_IS_MAT_OF_TYPE(data, CV_64FC1) ) + { + if( _centers && !ICV_IS_MAT_OF_TYPE (_centers, CV_64FC1) ) + { + CV_ERROR(CV_StsBadArg,""); + } + else if( !_centers ) + CV_CALL(centers = cvCreateMat (num_of_clusters, dim, CV_64FC1)); + } + else + CV_ERROR (CV_StsBadArg,""); + + if( num_of_clusters < 1 ) + CV_ERROR (CV_StsBadArg,""); + + rng = cvRNG(seed); + for (i = 0; i < dim; i++) + { + CV_CALL(cvGetCol (data, &data_comp, i)); + CV_CALL(cvMinMaxLoc (&data_comp, &minVal, &maxVal, &minLoc, &maxLoc)); + CV_CALL(cvGetCol (centers, ¢ers_comp, i)); + CV_CALL(cvRandArr (&rng, ¢ers_comp, CV_RAND_UNI, cvScalarAll(minVal), cvScalarAll(maxVal))); + } + + __END__; + + if( (cvGetErrStatus () < 0) || (centers != _centers) ) + cvReleaseMat (¢ers); + + return _centers ? _centers : centers; +} // end of icvGenerateRandomClusterCenters + +// By S. Dilman - begin - + +#define ICV_RAND_MAX 4294967296 // == 2^32 + +// static void cvRandRoundUni (CvMat* center, +// float radius_small, +// float radius_large, +// CvMat* desired_matrix, +// CvRNG* rng_state_ptr) +// { +// float rad, norm, coefficient; +// int dim, size, i, j; +// CvMat *cov, sample; +// CvRNG rng_local; + +// CV_FUNCNAME("cvRandRoundUni"); +// __BEGIN__ + +// rng_local = *rng_state_ptr; + +// CV_ASSERT ((radius_small >= 0) && +// (radius_large > 0) && +// (radius_small <= radius_large)); +// CV_ASSERT (center && desired_matrix && rng_state_ptr); +// CV_ASSERT (center->rows == 1); +// CV_ASSERT (center->cols == desired_matrix->cols); + +// dim = desired_matrix->cols; +// size = desired_matrix->rows; +// cov = cvCreateMat (dim, dim, CV_32FC1); +// cvSetIdentity (cov); +// cvRandMVNormal (center, cov, desired_matrix, &rng_local); + +// for (i = 0; i < size; i++) +// { +// rad = (float)(cvRandReal(&rng_local)*(radius_large - radius_small) + radius_small); +// cvGetRow (desired_matrix, &sample, i); +// norm = (float) cvNorm (&sample, 0, CV_L2); +// coefficient = rad / norm; +// for (j = 0; j < dim; j++) +// CV_MAT_ELEM (sample, float, 0, j) *= coefficient; +// } + +// __END__ + +// } + +// By S. Dilman - end - + +static int CV_CDECL +icvCmpIntegers( const void* a, const void* b ) +{ + return *(const int*)a - *(const int*)b; +} + + +static int CV_CDECL +icvCmpIntegersPtr( const void* _a, const void* _b ) +{ + int a = **(const int**)_a; + int b = **(const int**)_b; + return (a < b ? -1 : 0)|(a > b); +} + + +static int icvCmpSparseVecElems( const void* a, const void* b ) +{ + return ((CvSparseVecElem32f*)a)->idx - ((CvSparseVecElem32f*)b)->idx; +} + + +CvMat* +cvPreprocessIndexArray( const CvMat* idx_arr, int data_arr_size, bool check_for_duplicates ) +{ + CvMat* idx = 0; + + CV_FUNCNAME( "cvPreprocessIndexArray" ); + + __BEGIN__; + + int i, idx_total, idx_selected = 0, step, type, prev = INT_MIN, is_sorted = 1; + uchar* srcb = 0; + int* srci = 0; + int* dsti; + + if( !CV_IS_MAT(idx_arr) ) + CV_ERROR( CV_StsBadArg, "Invalid index array" ); + + if( idx_arr->rows != 1 && idx_arr->cols != 1 ) + CV_ERROR( CV_StsBadSize, "the index array must be 1-dimensional" ); + + idx_total = idx_arr->rows + idx_arr->cols - 1; + srcb = idx_arr->data.ptr; + srci = idx_arr->data.i; + + type = CV_MAT_TYPE(idx_arr->type); + step = CV_IS_MAT_CONT(idx_arr->type) ? 1 : idx_arr->step/CV_ELEM_SIZE(type); + + switch( type ) + { + case CV_8UC1: + case CV_8SC1: + // idx_arr is array of 1's and 0's - + // i.e. it is a mask of the selected components + if( idx_total != data_arr_size ) + CV_ERROR( CV_StsUnmatchedSizes, + "Component mask should contain as many elements as the total number of input variables" ); + + for( i = 0; i < idx_total; i++ ) + idx_selected += srcb[i*step] != 0; + + if( idx_selected == 0 ) + CV_ERROR( CV_StsOutOfRange, "No components/input_variables is selected!" ); + + break; + case CV_32SC1: + // idx_arr is array of integer indices of selected components + if( idx_total > data_arr_size ) + CV_ERROR( CV_StsOutOfRange, + "index array may not contain more elements than the total number of input variables" ); + idx_selected = idx_total; + // check if sorted already + for( i = 0; i < idx_total; i++ ) + { + int val = srci[i*step]; + if( val >= prev ) + { + is_sorted = 0; + break; + } + prev = val; + } + break; + default: + CV_ERROR( CV_StsUnsupportedFormat, "Unsupported index array data type " + "(it should be 8uC1, 8sC1 or 32sC1)" ); + } + + CV_CALL( idx = cvCreateMat( 1, idx_selected, CV_32SC1 )); + dsti = idx->data.i; + + if( type < CV_32SC1 ) + { + for( i = 0; i < idx_total; i++ ) + if( srcb[i*step] ) + *dsti++ = i; + } + else + { + for( i = 0; i < idx_total; i++ ) + dsti[i] = srci[i*step]; + + if( !is_sorted ) + qsort( dsti, idx_total, sizeof(dsti[0]), icvCmpIntegers ); + + if( dsti[0] < 0 || dsti[idx_total-1] >= data_arr_size ) + CV_ERROR( CV_StsOutOfRange, "the index array elements are out of range" ); + + if( check_for_duplicates ) + { + for( i = 1; i < idx_total; i++ ) + if( dsti[i] <= dsti[i-1] ) + CV_ERROR( CV_StsBadArg, "There are duplicated index array elements" ); + } + } + + __END__; + + if( cvGetErrStatus() < 0 ) + cvReleaseMat( &idx ); + + return idx; +} + + +CvMat* +cvPreprocessVarType( const CvMat* var_type, const CvMat* var_idx, + int var_count, int* response_type ) +{ + CvMat* out_var_type = 0; + CV_FUNCNAME( "cvPreprocessVarType" ); + + if( response_type ) + *response_type = -1; + + __BEGIN__; + + int i, tm_size, tm_step; + //int* map = 0; + const uchar* src; + uchar* dst; + + if( !CV_IS_MAT(var_type) ) + CV_ERROR( var_type ? CV_StsBadArg : CV_StsNullPtr, "Invalid or absent var_type array" ); + + if( var_type->rows != 1 && var_type->cols != 1 ) + CV_ERROR( CV_StsBadSize, "var_type array must be 1-dimensional" ); + + if( !CV_IS_MASK_ARR(var_type)) + CV_ERROR( CV_StsUnsupportedFormat, "type mask must be 8uC1 or 8sC1 array" ); + + tm_size = var_type->rows + var_type->cols - 1; + tm_step = var_type->rows == 1 ? 1 : var_type->step/CV_ELEM_SIZE(var_type->type); + + if( /*tm_size != var_count &&*/ tm_size != var_count + 1 ) + CV_ERROR( CV_StsBadArg, + "type mask must be of + 1 size" ); + + if( response_type && tm_size > var_count ) + *response_type = var_type->data.ptr[var_count*tm_step] != 0; + + if( var_idx ) + { + if( !CV_IS_MAT(var_idx) || CV_MAT_TYPE(var_idx->type) != CV_32SC1 || + (var_idx->rows != 1 && var_idx->cols != 1) || !CV_IS_MAT_CONT(var_idx->type) ) + CV_ERROR( CV_StsBadArg, "var index array should be continuous 1-dimensional integer vector" ); + if( var_idx->rows + var_idx->cols - 1 > var_count ) + CV_ERROR( CV_StsBadSize, "var index array is too large" ); + //map = var_idx->data.i; + var_count = var_idx->rows + var_idx->cols - 1; + } + + CV_CALL( out_var_type = cvCreateMat( 1, var_count, CV_8UC1 )); + src = var_type->data.ptr; + dst = out_var_type->data.ptr; + + for( i = 0; i < var_count; i++ ) + { + //int idx = map ? map[i] : i; + assert( (unsigned)/*idx*/i < (unsigned)tm_size ); + dst[i] = (uchar)(src[/*idx*/i*tm_step] != 0); + } + + __END__; + + return out_var_type; +} + + +CvMat* +cvPreprocessOrderedResponses( const CvMat* responses, const CvMat* sample_idx, int sample_all ) +{ + CvMat* out_responses = 0; + + CV_FUNCNAME( "cvPreprocessOrderedResponses" ); + + __BEGIN__; + + int i, r_type, r_step; + const int* map = 0; + float* dst; + int sample_count = sample_all; + + if( !CV_IS_MAT(responses) ) + CV_ERROR( CV_StsBadArg, "Invalid response array" ); + + if( responses->rows != 1 && responses->cols != 1 ) + CV_ERROR( CV_StsBadSize, "Response array must be 1-dimensional" ); + + if( responses->rows + responses->cols - 1 != sample_count ) + CV_ERROR( CV_StsUnmatchedSizes, + "Response array must contain as many elements as the total number of samples" ); + + r_type = CV_MAT_TYPE(responses->type); + if( r_type != CV_32FC1 && r_type != CV_32SC1 ) + CV_ERROR( CV_StsUnsupportedFormat, "Unsupported response type" ); + + r_step = responses->step ? responses->step / CV_ELEM_SIZE(responses->type) : 1; + + if( r_type == CV_32FC1 && CV_IS_MAT_CONT(responses->type) && !sample_idx ) + { + out_responses = cvCloneMat( responses ); + EXIT; + } + + if( sample_idx ) + { + if( !CV_IS_MAT(sample_idx) || CV_MAT_TYPE(sample_idx->type) != CV_32SC1 || + (sample_idx->rows != 1 && sample_idx->cols != 1) || !CV_IS_MAT_CONT(sample_idx->type) ) + CV_ERROR( CV_StsBadArg, "sample index array should be continuous 1-dimensional integer vector" ); + if( sample_idx->rows + sample_idx->cols - 1 > sample_count ) + CV_ERROR( CV_StsBadSize, "sample index array is too large" ); + map = sample_idx->data.i; + sample_count = sample_idx->rows + sample_idx->cols - 1; + } + + CV_CALL( out_responses = cvCreateMat( 1, sample_count, CV_32FC1 )); + + dst = out_responses->data.fl; + if( r_type == CV_32FC1 ) + { + const float* src = responses->data.fl; + for( i = 0; i < sample_count; i++ ) + { + int idx = map ? map[i] : i; + assert( (unsigned)idx < (unsigned)sample_all ); + dst[i] = src[idx*r_step]; + } + } + else + { + const int* src = responses->data.i; + for( i = 0; i < sample_count; i++ ) + { + int idx = map ? map[i] : i; + assert( (unsigned)idx < (unsigned)sample_all ); + dst[i] = (float)src[idx*r_step]; + } + } + + __END__; + + return out_responses; +} + +CvMat* +cvPreprocessCategoricalResponses( const CvMat* responses, + const CvMat* sample_idx, int sample_all, + CvMat** out_response_map, CvMat** class_counts ) +{ + CvMat* out_responses = 0; + int** response_ptr = 0; + + CV_FUNCNAME( "cvPreprocessCategoricalResponses" ); + + if( out_response_map ) + *out_response_map = 0; + + if( class_counts ) + *class_counts = 0; + + __BEGIN__; + + int i, r_type, r_step; + int cls_count = 1, prev_cls, prev_i; + const int* map = 0; + const int* srci; + const float* srcfl; + int* dst; + int* cls_map; + int* cls_counts = 0; + int sample_count = sample_all; + + if( !CV_IS_MAT(responses) ) + CV_ERROR( CV_StsBadArg, "Invalid response array" ); + + if( responses->rows != 1 && responses->cols != 1 ) + CV_ERROR( CV_StsBadSize, "Response array must be 1-dimensional" ); + + if( responses->rows + responses->cols - 1 != sample_count ) + CV_ERROR( CV_StsUnmatchedSizes, + "Response array must contain as many elements as the total number of samples" ); + + r_type = CV_MAT_TYPE(responses->type); + if( r_type != CV_32FC1 && r_type != CV_32SC1 ) + CV_ERROR( CV_StsUnsupportedFormat, "Unsupported response type" ); + + r_step = responses->rows == 1 ? 1 : responses->step / CV_ELEM_SIZE(responses->type); + + if( sample_idx ) + { + if( !CV_IS_MAT(sample_idx) || CV_MAT_TYPE(sample_idx->type) != CV_32SC1 || + (sample_idx->rows != 1 && sample_idx->cols != 1) || !CV_IS_MAT_CONT(sample_idx->type) ) + CV_ERROR( CV_StsBadArg, "sample index array should be continuous 1-dimensional integer vector" ); + if( sample_idx->rows + sample_idx->cols - 1 > sample_count ) + CV_ERROR( CV_StsBadSize, "sample index array is too large" ); + map = sample_idx->data.i; + sample_count = sample_idx->rows + sample_idx->cols - 1; + } + + CV_CALL( out_responses = cvCreateMat( 1, sample_count, CV_32SC1 )); + + if( !out_response_map ) + CV_ERROR( CV_StsNullPtr, "out_response_map pointer is NULL" ); + + CV_CALL( response_ptr = (int**)cvAlloc( sample_count*sizeof(response_ptr[0]))); + + srci = responses->data.i; + srcfl = responses->data.fl; + dst = out_responses->data.i; + + for( i = 0; i < sample_count; i++ ) + { + int idx = map ? map[i] : i; + assert( (unsigned)idx < (unsigned)sample_all ); + if( r_type == CV_32SC1 ) + dst[i] = srci[idx*r_step]; + else + { + float rf = srcfl[idx*r_step]; + int ri = cvRound(rf); + if( ri != rf ) + { + char buf[100]; + sprintf( buf, "response #%d is not integral", idx ); + CV_ERROR( CV_StsBadArg, buf ); + } + dst[i] = ri; + } + response_ptr[i] = dst + i; + } + + qsort( response_ptr, sample_count, sizeof(int*), icvCmpIntegersPtr ); + + // count the classes + for( i = 1; i < sample_count; i++ ) + cls_count += *response_ptr[i] != *response_ptr[i-1]; + + if( cls_count < 2 ) + CV_ERROR( CV_StsBadArg, "There is only a single class" ); + + CV_CALL( *out_response_map = cvCreateMat( 1, cls_count, CV_32SC1 )); + + if( class_counts ) + { + CV_CALL( *class_counts = cvCreateMat( 1, cls_count, CV_32SC1 )); + cls_counts = (*class_counts)->data.i; + } + + // compact the class indices and build the map + prev_cls = ~*response_ptr[0]; + cls_count = -1; + cls_map = (*out_response_map)->data.i; + + for( i = 0, prev_i = -1; i < sample_count; i++ ) + { + int cur_cls = *response_ptr[i]; + if( cur_cls != prev_cls ) + { + if( cls_counts && cls_count >= 0 ) + cls_counts[cls_count] = i - prev_i; + cls_map[++cls_count] = prev_cls = cur_cls; + prev_i = i; + } + *response_ptr[i] = cls_count; + } + + if( cls_counts ) + cls_counts[cls_count] = i - prev_i; + + __END__; + + cvFree( &response_ptr ); + + return out_responses; +} + + +const float** +cvGetTrainSamples( const CvMat* train_data, int tflag, + const CvMat* var_idx, const CvMat* sample_idx, + int* _var_count, int* _sample_count, + bool always_copy_data ) +{ + float** samples = 0; + + CV_FUNCNAME( "cvGetTrainSamples" ); + + __BEGIN__; + + int i, j, var_count, sample_count, s_step, v_step; + bool copy_data; + const float* data; + const int *s_idx, *v_idx; + + if( !CV_IS_MAT(train_data) ) + CV_ERROR( CV_StsBadArg, "Invalid or NULL training data matrix" ); + + var_count = var_idx ? var_idx->cols + var_idx->rows - 1 : + tflag == CV_ROW_SAMPLE ? train_data->cols : train_data->rows; + sample_count = sample_idx ? sample_idx->cols + sample_idx->rows - 1 : + tflag == CV_ROW_SAMPLE ? train_data->rows : train_data->cols; + + if( _var_count ) + *_var_count = var_count; + + if( _sample_count ) + *_sample_count = sample_count; + + copy_data = tflag != CV_ROW_SAMPLE || var_idx || always_copy_data; + + CV_CALL( samples = (float**)cvAlloc(sample_count*sizeof(samples[0]) + + (copy_data ? 1 : 0)*var_count*sample_count*sizeof(samples[0][0])) ); + data = train_data->data.fl; + s_step = train_data->step / sizeof(samples[0][0]); + v_step = 1; + s_idx = sample_idx ? sample_idx->data.i : 0; + v_idx = var_idx ? var_idx->data.i : 0; + + if( !copy_data ) + { + for( i = 0; i < sample_count; i++ ) + samples[i] = (float*)(data + (s_idx ? s_idx[i] : i)*s_step); + } + else + { + samples[0] = (float*)(samples + sample_count); + if( tflag != CV_ROW_SAMPLE ) + CV_SWAP( s_step, v_step, i ); + + for( i = 0; i < sample_count; i++ ) + { + float* dst = samples[i] = samples[0] + i*var_count; + const float* src = data + (s_idx ? s_idx[i] : i)*s_step; + + if( !v_idx ) + for( j = 0; j < var_count; j++ ) + dst[j] = src[j*v_step]; + else + for( j = 0; j < var_count; j++ ) + dst[j] = src[v_idx[j]*v_step]; + } + } + + __END__; + + return (const float**)samples; +} + + +void +cvCheckTrainData( const CvMat* train_data, int tflag, + const CvMat* missing_mask, + int* var_all, int* sample_all ) +{ + CV_FUNCNAME( "cvCheckTrainData" ); + + if( var_all ) + *var_all = 0; + + if( sample_all ) + *sample_all = 0; + + __BEGIN__; + + // check parameter types and sizes + if( !CV_IS_MAT(train_data) || CV_MAT_TYPE(train_data->type) != CV_32FC1 ) + CV_ERROR( CV_StsBadArg, "train data must be floating-point matrix" ); + + if( missing_mask ) + { + if( !CV_IS_MAT(missing_mask) || !CV_IS_MASK_ARR(missing_mask) || + !CV_ARE_SIZES_EQ(train_data, missing_mask) ) + CV_ERROR( CV_StsBadArg, + "missing value mask must be 8-bit matrix of the same size as training data" ); + } + + if( tflag != CV_ROW_SAMPLE && tflag != CV_COL_SAMPLE ) + CV_ERROR( CV_StsBadArg, + "Unknown training data layout (must be CV_ROW_SAMPLE or CV_COL_SAMPLE)" ); + + if( var_all ) + *var_all = tflag == CV_ROW_SAMPLE ? train_data->cols : train_data->rows; + + if( sample_all ) + *sample_all = tflag == CV_ROW_SAMPLE ? train_data->rows : train_data->cols; + + __END__; +} + + +int +cvPrepareTrainData( const char* /*funcname*/, + const CvMat* train_data, int tflag, + const CvMat* responses, int response_type, + const CvMat* var_idx, + const CvMat* sample_idx, + bool always_copy_data, + const float*** out_train_samples, + int* _sample_count, + int* _var_count, + int* _var_all, + CvMat** out_responses, + CvMat** out_response_map, + CvMat** out_var_idx, + CvMat** out_sample_idx ) +{ + int ok = 0; + CvMat* _var_idx = 0; + CvMat* _sample_idx = 0; + CvMat* _responses = 0; + int sample_all = 0, sample_count = 0, var_all = 0, var_count = 0; + + CV_FUNCNAME( "cvPrepareTrainData" ); + + // step 0. clear all the output pointers to ensure we do not try + // to call free() with uninitialized pointers + if( out_responses ) + *out_responses = 0; + + if( out_response_map ) + *out_response_map = 0; + + if( out_var_idx ) + *out_var_idx = 0; + + if( out_sample_idx ) + *out_sample_idx = 0; + + if( out_train_samples ) + *out_train_samples = 0; + + if( _sample_count ) + *_sample_count = 0; + + if( _var_count ) + *_var_count = 0; + + if( _var_all ) + *_var_all = 0; + + __BEGIN__; + + if( !out_train_samples ) + CV_ERROR( CV_StsBadArg, "output pointer to train samples is NULL" ); + + CV_CALL( cvCheckTrainData( train_data, tflag, 0, &var_all, &sample_all )); + + if( sample_idx ) + CV_CALL( _sample_idx = cvPreprocessIndexArray( sample_idx, sample_all )); + if( var_idx ) + CV_CALL( _var_idx = cvPreprocessIndexArray( var_idx, var_all )); + + if( responses ) + { + if( !out_responses ) + CV_ERROR( CV_StsNullPtr, "output response pointer is NULL" ); + + if( response_type == CV_VAR_NUMERICAL ) + { + CV_CALL( _responses = cvPreprocessOrderedResponses( responses, + _sample_idx, sample_all )); + } + else + { + CV_CALL( _responses = cvPreprocessCategoricalResponses( responses, + _sample_idx, sample_all, out_response_map, 0 )); + } + } + + CV_CALL( *out_train_samples = + cvGetTrainSamples( train_data, tflag, _var_idx, _sample_idx, + &var_count, &sample_count, always_copy_data )); + + ok = 1; + + __END__; + + if( ok ) + { + if( out_responses ) + *out_responses = _responses, _responses = 0; + + if( out_var_idx ) + *out_var_idx = _var_idx, _var_idx = 0; + + if( out_sample_idx ) + *out_sample_idx = _sample_idx, _sample_idx = 0; + + if( _sample_count ) + *_sample_count = sample_count; + + if( _var_count ) + *_var_count = var_count; + + if( _var_all ) + *_var_all = var_all; + } + else + { + if( out_response_map ) + cvReleaseMat( out_response_map ); + cvFree( out_train_samples ); + } + + if( _responses != responses ) + cvReleaseMat( &_responses ); + cvReleaseMat( &_var_idx ); + cvReleaseMat( &_sample_idx ); + + return ok; +} + + +typedef struct CvSampleResponsePair +{ + const float* sample; + const uchar* mask; + int response; + int index; +} +CvSampleResponsePair; + + +static int +CV_CDECL icvCmpSampleResponsePairs( const void* a, const void* b ) +{ + int ra = ((const CvSampleResponsePair*)a)->response; + int rb = ((const CvSampleResponsePair*)b)->response; + int ia = ((const CvSampleResponsePair*)a)->index; + int ib = ((const CvSampleResponsePair*)b)->index; + + return ra < rb ? -1 : ra > rb ? 1 : ia - ib; + //return (ra > rb ? -1 : 0)|(ra < rb); +} + + +void +cvSortSamplesByClasses( const float** samples, const CvMat* classes, + int* class_ranges, const uchar** mask ) +{ + CvSampleResponsePair* pairs = 0; + CV_FUNCNAME( "cvSortSamplesByClasses" ); + + __BEGIN__; + + int i, k = 0, sample_count; + + if( !samples || !classes || !class_ranges ) + CV_ERROR( CV_StsNullPtr, "INTERNAL ERROR: some of the args are NULL pointers" ); + + if( classes->rows != 1 || CV_MAT_TYPE(classes->type) != CV_32SC1 ) + CV_ERROR( CV_StsBadArg, "classes array must be a single row of integers" ); + + sample_count = classes->cols; + CV_CALL( pairs = (CvSampleResponsePair*)cvAlloc( (sample_count+1)*sizeof(pairs[0]))); + + for( i = 0; i < sample_count; i++ ) + { + pairs[i].sample = samples[i]; + pairs[i].mask = (mask) ? (mask[i]) : 0; + pairs[i].response = classes->data.i[i]; + pairs[i].index = i; + assert( classes->data.i[i] >= 0 ); + } + + qsort( pairs, sample_count, sizeof(pairs[0]), icvCmpSampleResponsePairs ); + pairs[sample_count].response = -1; + class_ranges[0] = 0; + + for( i = 0; i < sample_count; i++ ) + { + samples[i] = pairs[i].sample; + if (mask) + mask[i] = pairs[i].mask; + classes->data.i[i] = pairs[i].response; + + if( pairs[i].response != pairs[i+1].response ) + class_ranges[++k] = i+1; + } + + __END__; + + cvFree( &pairs ); +} + + +void +cvPreparePredictData( const CvArr* _sample, int dims_all, + const CvMat* comp_idx, int class_count, + const CvMat* prob, float** _row_sample, + int as_sparse ) +{ + float* row_sample = 0; + int* inverse_comp_idx = 0; + + CV_FUNCNAME( "cvPreparePredictData" ); + + __BEGIN__; + + const CvMat* sample = (const CvMat*)_sample; + float* sample_data; + int sample_step; + int is_sparse = CV_IS_SPARSE_MAT(sample); + int d, sizes[CV_MAX_DIM]; + int i, dims_selected; + int vec_size; + + if( !is_sparse && !CV_IS_MAT(sample) ) + CV_ERROR( !sample ? CV_StsNullPtr : CV_StsBadArg, "The sample is not a valid vector" ); + + if( cvGetElemType( sample ) != CV_32FC1 ) + CV_ERROR( CV_StsUnsupportedFormat, "Input sample must have 32fC1 type" ); + + CV_CALL( d = cvGetDims( sample, sizes )); + + if( !((is_sparse && d == 1) || (!is_sparse && d == 2 && (sample->rows == 1 || sample->cols == 1))) ) + CV_ERROR( CV_StsBadSize, "Input sample must be 1-dimensional vector" ); + + if( d == 1 ) + sizes[1] = 1; + + if( sizes[0] + sizes[1] - 1 != dims_all ) + CV_ERROR( CV_StsUnmatchedSizes, + "The sample size is different from what has been used for training" ); + + if( !_row_sample ) + CV_ERROR( CV_StsNullPtr, "INTERNAL ERROR: The row_sample pointer is NULL" ); + + if( comp_idx && (!CV_IS_MAT(comp_idx) || comp_idx->rows != 1 || + CV_MAT_TYPE(comp_idx->type) != CV_32SC1) ) + CV_ERROR( CV_StsBadArg, "INTERNAL ERROR: invalid comp_idx" ); + + dims_selected = comp_idx ? comp_idx->cols : dims_all; + + if( prob ) + { + if( !CV_IS_MAT(prob) ) + CV_ERROR( CV_StsBadArg, "The output matrix of probabilities is invalid" ); + + if( (prob->rows != 1 && prob->cols != 1) || + (CV_MAT_TYPE(prob->type) != CV_32FC1 && + CV_MAT_TYPE(prob->type) != CV_64FC1) ) + CV_ERROR( CV_StsBadSize, + "The matrix of probabilities must be 1-dimensional vector of 32fC1 type" ); + + if( prob->rows + prob->cols - 1 != class_count ) + CV_ERROR( CV_StsUnmatchedSizes, + "The vector of probabilities must contain as many elements as " + "the number of classes in the training set" ); + } + + vec_size = !as_sparse ? dims_selected*sizeof(row_sample[0]) : + (dims_selected + 1)*sizeof(CvSparseVecElem32f); + + if( CV_IS_MAT(sample) ) + { + sample_data = sample->data.fl; + sample_step = CV_IS_MAT_CONT(sample->type) ? 1 : sample->step/sizeof(row_sample[0]); + + if( !comp_idx && CV_IS_MAT_CONT(sample->type) && !as_sparse ) + *_row_sample = sample_data; + else + { + CV_CALL( row_sample = (float*)cvAlloc( vec_size )); + + if( !comp_idx ) + for( i = 0; i < dims_selected; i++ ) + row_sample[i] = sample_data[sample_step*i]; + else + { + int* comp = comp_idx->data.i; + for( i = 0; i < dims_selected; i++ ) + row_sample[i] = sample_data[sample_step*comp[i]]; + } + + *_row_sample = row_sample; + } + + if( as_sparse ) + { + const float* src = (const float*)row_sample; + CvSparseVecElem32f* dst = (CvSparseVecElem32f*)row_sample; + + dst[dims_selected].idx = -1; + for( i = dims_selected - 1; i >= 0; i-- ) + { + dst[i].idx = i; + dst[i].val = src[i]; + } + } + } + else + { + CvSparseNode* node; + CvSparseMatIterator mat_iterator; + const CvSparseMat* sparse = (const CvSparseMat*)sample; + assert( is_sparse ); + + node = cvInitSparseMatIterator( sparse, &mat_iterator ); + CV_CALL( row_sample = (float*)cvAlloc( vec_size )); + + if( comp_idx ) + { + CV_CALL( inverse_comp_idx = (int*)cvAlloc( dims_all*sizeof(int) )); + memset( inverse_comp_idx, -1, dims_all*sizeof(int) ); + for( i = 0; i < dims_selected; i++ ) + inverse_comp_idx[comp_idx->data.i[i]] = i; + } + + if( !as_sparse ) + { + memset( row_sample, 0, vec_size ); + + for( ; node != 0; node = cvGetNextSparseNode(&mat_iterator) ) + { + int idx = *CV_NODE_IDX( sparse, node ); + if( inverse_comp_idx ) + { + idx = inverse_comp_idx[idx]; + if( idx < 0 ) + continue; + } + row_sample[idx] = *(float*)CV_NODE_VAL( sparse, node ); + } + } + else + { + CvSparseVecElem32f* ptr = (CvSparseVecElem32f*)row_sample; + + for( ; node != 0; node = cvGetNextSparseNode(&mat_iterator) ) + { + int idx = *CV_NODE_IDX( sparse, node ); + if( inverse_comp_idx ) + { + idx = inverse_comp_idx[idx]; + if( idx < 0 ) + continue; + } + ptr->idx = idx; + ptr->val = *(float*)CV_NODE_VAL( sparse, node ); + ptr++; + } + + qsort( row_sample, ptr - (CvSparseVecElem32f*)row_sample, + sizeof(ptr[0]), icvCmpSparseVecElems ); + ptr->idx = -1; + } + + *_row_sample = row_sample; + } + + __END__; + + if( inverse_comp_idx ) + cvFree( &inverse_comp_idx ); + + if( cvGetErrStatus() < 0 && _row_sample ) + { + cvFree( &row_sample ); + *_row_sample = 0; + } +} + + +static void +icvConvertDataToSparse( const uchar* src, int src_step, int src_type, + uchar* dst, int dst_step, int dst_type, + CvSize size, int* idx ) +{ + CV_FUNCNAME( "icvConvertDataToSparse" ); + + __BEGIN__; + + int i, j; + src_type = CV_MAT_TYPE(src_type); + dst_type = CV_MAT_TYPE(dst_type); + + if( CV_MAT_CN(src_type) != 1 || CV_MAT_CN(dst_type) != 1 ) + CV_ERROR( CV_StsUnsupportedFormat, "The function supports only single-channel arrays" ); + + if( src_step == 0 ) + src_step = CV_ELEM_SIZE(src_type); + + if( dst_step == 0 ) + dst_step = CV_ELEM_SIZE(dst_type); + + // if there is no "idx" and if both arrays are continuous, + // do the whole processing (copying or conversion) in a single loop + if( !idx && CV_ELEM_SIZE(src_type)*size.width == src_step && + CV_ELEM_SIZE(dst_type)*size.width == dst_step ) + { + size.width *= size.height; + size.height = 1; + } + + if( src_type == dst_type ) + { + int full_width = CV_ELEM_SIZE(dst_type)*size.width; + + if( full_width == sizeof(int) ) // another common case: copy int's or float's + for( i = 0; i < size.height; i++, src += src_step ) + *(int*)(dst + dst_step*(idx ? idx[i] : i)) = *(int*)src; + else + for( i = 0; i < size.height; i++, src += src_step ) + memcpy( dst + dst_step*(idx ? idx[i] : i), src, full_width ); + } + else if( src_type == CV_32SC1 && (dst_type == CV_32FC1 || dst_type == CV_64FC1) ) + for( i = 0; i < size.height; i++, src += src_step ) + { + uchar* _dst = dst + dst_step*(idx ? idx[i] : i); + if( dst_type == CV_32FC1 ) + for( j = 0; j < size.width; j++ ) + ((float*)_dst)[j] = (float)((int*)src)[j]; + else + for( j = 0; j < size.width; j++ ) + ((double*)_dst)[j] = ((int*)src)[j]; + } + else if( (src_type == CV_32FC1 || src_type == CV_64FC1) && dst_type == CV_32SC1 ) + for( i = 0; i < size.height; i++, src += src_step ) + { + uchar* _dst = dst + dst_step*(idx ? idx[i] : i); + if( src_type == CV_32FC1 ) + for( j = 0; j < size.width; j++ ) + ((int*)_dst)[j] = cvRound(((float*)src)[j]); + else + for( j = 0; j < size.width; j++ ) + ((int*)_dst)[j] = cvRound(((double*)src)[j]); + } + else if( (src_type == CV_32FC1 && dst_type == CV_64FC1) || + (src_type == CV_64FC1 && dst_type == CV_32FC1) ) + for( i = 0; i < size.height; i++, src += src_step ) + { + uchar* _dst = dst + dst_step*(idx ? idx[i] : i); + if( src_type == CV_32FC1 ) + for( j = 0; j < size.width; j++ ) + ((double*)_dst)[j] = ((float*)src)[j]; + else + for( j = 0; j < size.width; j++ ) + ((float*)_dst)[j] = (float)((double*)src)[j]; + } + else + CV_ERROR( CV_StsUnsupportedFormat, "Unsupported combination of input and output vectors" ); + + __END__; +} + + +void +cvWritebackLabels( const CvMat* labels, CvMat* dst_labels, + const CvMat* centers, CvMat* dst_centers, + const CvMat* probs, CvMat* dst_probs, + const CvMat* sample_idx, int samples_all, + const CvMat* comp_idx, int dims_all ) +{ + CV_FUNCNAME( "cvWritebackLabels" ); + + __BEGIN__; + + int samples_selected = samples_all, dims_selected = dims_all; + + if( dst_labels && !CV_IS_MAT(dst_labels) ) + CV_ERROR( CV_StsBadArg, "Array of output labels is not a valid matrix" ); + + if( dst_centers ) + if( !ICV_IS_MAT_OF_TYPE(dst_centers, CV_32FC1) && + !ICV_IS_MAT_OF_TYPE(dst_centers, CV_64FC1) ) + CV_ERROR( CV_StsBadArg, "Array of cluster centers is not a valid matrix" ); + + if( dst_probs && !CV_IS_MAT(dst_probs) ) + CV_ERROR( CV_StsBadArg, "Probability matrix is not valid" ); + + if( sample_idx ) + { + CV_ASSERT( sample_idx->rows == 1 && CV_MAT_TYPE(sample_idx->type) == CV_32SC1 ); + samples_selected = sample_idx->cols; + } + + if( comp_idx ) + { + CV_ASSERT( comp_idx->rows == 1 && CV_MAT_TYPE(comp_idx->type) == CV_32SC1 ); + dims_selected = comp_idx->cols; + } + + if( dst_labels && (!labels || labels->data.ptr != dst_labels->data.ptr) ) + { + if( !labels ) + CV_ERROR( CV_StsNullPtr, "NULL labels" ); + + CV_ASSERT( labels->rows == 1 ); + + if( dst_labels->rows != 1 && dst_labels->cols != 1 ) + CV_ERROR( CV_StsBadSize, "Array of output labels should be 1d vector" ); + + if( dst_labels->rows + dst_labels->cols - 1 != samples_all ) + CV_ERROR( CV_StsUnmatchedSizes, + "Size of vector of output labels is not equal to the total number of input samples" ); + + CV_ASSERT( labels->cols == samples_selected ); + + CV_CALL( icvConvertDataToSparse( labels->data.ptr, labels->step, labels->type, + dst_labels->data.ptr, dst_labels->step, dst_labels->type, + cvSize( 1, samples_selected ), sample_idx ? sample_idx->data.i : 0 )); + } + + if( dst_centers && (!centers || centers->data.ptr != dst_centers->data.ptr) ) + { + int i; + + if( !centers ) + CV_ERROR( CV_StsNullPtr, "NULL centers" ); + + if( centers->rows != dst_centers->rows ) + CV_ERROR( CV_StsUnmatchedSizes, "Invalid number of rows in matrix of output centers" ); + + if( dst_centers->cols != dims_all ) + CV_ERROR( CV_StsUnmatchedSizes, + "Number of columns in matrix of output centers is " + "not equal to the total number of components in the input samples" ); + + CV_ASSERT( centers->cols == dims_selected ); + + for( i = 0; i < centers->rows; i++ ) + CV_CALL( icvConvertDataToSparse( centers->data.ptr + i*centers->step, 0, centers->type, + dst_centers->data.ptr + i*dst_centers->step, 0, dst_centers->type, + cvSize( 1, dims_selected ), comp_idx ? comp_idx->data.i : 0 )); + } + + if( dst_probs && (!probs || probs->data.ptr != dst_probs->data.ptr) ) + { + if( !probs ) + CV_ERROR( CV_StsNullPtr, "NULL probs" ); + + if( probs->cols != dst_probs->cols ) + CV_ERROR( CV_StsUnmatchedSizes, "Invalid number of columns in output probability matrix" ); + + if( dst_probs->rows != samples_all ) + CV_ERROR( CV_StsUnmatchedSizes, + "Number of rows in output probability matrix is " + "not equal to the total number of input samples" ); + + CV_ASSERT( probs->rows == samples_selected ); + + CV_CALL( icvConvertDataToSparse( probs->data.ptr, probs->step, probs->type, + dst_probs->data.ptr, dst_probs->step, dst_probs->type, + cvSize( probs->cols, samples_selected ), + sample_idx ? sample_idx->data.i : 0 )); + } + + __END__; +} + +#if 0 +CV_IMPL void +cvStatModelMultiPredict( const CvStatModel* stat_model, + const CvArr* predict_input, + int flags, CvMat* predict_output, + CvMat* probs, const CvMat* sample_idx ) +{ + CvMemStorage* storage = 0; + CvMat* sample_idx_buffer = 0; + CvSparseMat** sparse_rows = 0; + int samples_selected = 0; + + CV_FUNCNAME( "cvStatModelMultiPredict" ); + + __BEGIN__; + + int i; + int predict_output_step = 1, sample_idx_step = 1; + int type; + int d, sizes[CV_MAX_DIM]; + int tflag = flags == CV_COL_SAMPLE; + int samples_all, dims_all; + int is_sparse = CV_IS_SPARSE_MAT(predict_input); + CvMat predict_input_part; + CvArr* sample = &predict_input_part; + CvMat probs_part; + CvMat* probs1 = probs ? &probs_part : 0; + + if( !CV_IS_STAT_MODEL(stat_model) ) + CV_ERROR( !stat_model ? CV_StsNullPtr : CV_StsBadArg, "Invalid statistical model" ); + + if( !stat_model->predict ) + CV_ERROR( CV_StsNotImplemented, "There is no \"predict\" method" ); + + if( !predict_input || !predict_output ) + CV_ERROR( CV_StsNullPtr, "NULL input or output matrices" ); + + if( !is_sparse && !CV_IS_MAT(predict_input) ) + CV_ERROR( CV_StsBadArg, "predict_input should be a matrix or a sparse matrix" ); + + if( !CV_IS_MAT(predict_output) ) + CV_ERROR( CV_StsBadArg, "predict_output should be a matrix" ); + + type = cvGetElemType( predict_input ); + if( type != CV_32FC1 || + (CV_MAT_TYPE(predict_output->type) != CV_32FC1 && + CV_MAT_TYPE(predict_output->type) != CV_32SC1 )) + CV_ERROR( CV_StsUnsupportedFormat, "The input or output matrix has unsupported format" ); + + CV_CALL( d = cvGetDims( predict_input, sizes )); + if( d > 2 ) + CV_ERROR( CV_StsBadSize, "The input matrix should be 1- or 2-dimensional" ); + + if( !tflag ) + { + samples_all = samples_selected = sizes[0]; + dims_all = sizes[1]; + } + else + { + samples_all = samples_selected = sizes[1]; + dims_all = sizes[0]; + } + + if( sample_idx ) + { + if( !CV_IS_MAT(sample_idx) ) + CV_ERROR( CV_StsBadArg, "Invalid sample_idx matrix" ); + + if( sample_idx->cols != 1 && sample_idx->rows != 1 ) + CV_ERROR( CV_StsBadSize, "sample_idx must be 1-dimensional matrix" ); + + samples_selected = sample_idx->rows + sample_idx->cols - 1; + + if( CV_MAT_TYPE(sample_idx->type) == CV_32SC1 ) + { + if( samples_selected > samples_all ) + CV_ERROR( CV_StsBadSize, "sample_idx is too large vector" ); + } + else if( samples_selected != samples_all ) + CV_ERROR( CV_StsUnmatchedSizes, "sample_idx has incorrect size" ); + + sample_idx_step = sample_idx->step ? + sample_idx->step / CV_ELEM_SIZE(sample_idx->type) : 1; + } + + if( predict_output->rows != 1 && predict_output->cols != 1 ) + CV_ERROR( CV_StsBadSize, "predict_output should be a 1-dimensional matrix" ); + + if( predict_output->rows + predict_output->cols - 1 != samples_all ) + CV_ERROR( CV_StsUnmatchedSizes, "predict_output and predict_input have uncoordinated sizes" ); + + predict_output_step = predict_output->step ? + predict_output->step / CV_ELEM_SIZE(predict_output->type) : 1; + + if( probs ) + { + if( !CV_IS_MAT(probs) ) + CV_ERROR( CV_StsBadArg, "Invalid matrix of probabilities" ); + + if( probs->rows != samples_all ) + CV_ERROR( CV_StsUnmatchedSizes, + "matrix of probabilities must have as many rows as the total number of samples" ); + + if( CV_MAT_TYPE(probs->type) != CV_32FC1 ) + CV_ERROR( CV_StsUnsupportedFormat, "matrix of probabilities must have 32fC1 type" ); + } + + if( is_sparse ) + { + CvSparseNode* node; + CvSparseMatIterator mat_iterator; + CvSparseMat* sparse = (CvSparseMat*)predict_input; + + if( sample_idx && CV_MAT_TYPE(sample_idx->type) == CV_32SC1 ) + { + CV_CALL( sample_idx_buffer = cvCreateMat( 1, samples_all, CV_8UC1 )); + cvZero( sample_idx_buffer ); + for( i = 0; i < samples_selected; i++ ) + sample_idx_buffer->data.ptr[sample_idx->data.i[i*sample_idx_step]] = 1; + samples_selected = samples_all; + sample_idx = sample_idx_buffer; + sample_idx_step = 1; + } + + CV_CALL( sparse_rows = (CvSparseMat**)cvAlloc( samples_selected*sizeof(sparse_rows[0]))); + for( i = 0; i < samples_selected; i++ ) + { + if( sample_idx && sample_idx->data.ptr[i*sample_idx_step] == 0 ) + continue; + CV_CALL( sparse_rows[i] = cvCreateSparseMat( 1, &dims_all, type )); + if( !storage ) + storage = sparse_rows[i]->heap->storage; + else + { + // hack: to decrease memory footprint, make all the sparse matrices + // reside in the same storage + int elem_size = sparse_rows[i]->heap->elem_size; + cvReleaseMemStorage( &sparse_rows[i]->heap->storage ); + sparse_rows[i]->heap = cvCreateSet( 0, sizeof(CvSet), elem_size, storage ); + } + } + + // put each row (or column) of predict_input into separate sparse matrix. + node = cvInitSparseMatIterator( sparse, &mat_iterator ); + for( ; node != 0; node = cvGetNextSparseNode( &mat_iterator )) + { + int* idx = CV_NODE_IDX( sparse, node ); + int idx0 = idx[tflag ^ 1]; + int idx1 = idx[tflag]; + + if( sample_idx && sample_idx->data.ptr[idx0*sample_idx_step] == 0 ) + continue; + + assert( sparse_rows[idx0] != 0 ); + *(float*)cvPtrND( sparse, &idx1, 0, 1, 0 ) = *(float*)CV_NODE_VAL( sparse, node ); + } + } + + for( i = 0; i < samples_selected; i++ ) + { + int idx = i; + float response; + + if( sample_idx ) + { + if( CV_MAT_TYPE(sample_idx->type) == CV_32SC1 ) + { + idx = sample_idx->data.i[i*sample_idx_step]; + if( (unsigned)idx >= (unsigned)samples_all ) + CV_ERROR( CV_StsOutOfRange, "Some of sample_idx elements are out of range" ); + } + else if( CV_MAT_TYPE(sample_idx->type) == CV_8UC1 && + sample_idx->data.ptr[i*sample_idx_step] == 0 ) + continue; + } + + if( !is_sparse ) + { + if( !tflag ) + cvGetRow( predict_input, &predict_input_part, idx ); + else + { + cvGetCol( predict_input, &predict_input_part, idx ); + } + } + else + sample = sparse_rows[idx]; + + if( probs ) + cvGetRow( probs, probs1, idx ); + + CV_CALL( response = stat_model->predict( stat_model, (CvMat*)sample, probs1 )); + + if( CV_MAT_TYPE(predict_output->type) == CV_32FC1 ) + predict_output->data.fl[idx*predict_output_step] = response; + else + { + CV_ASSERT( cvRound(response) == response ); + predict_output->data.i[idx*predict_output_step] = cvRound(response); + } + } + + __END__; + + if( sparse_rows ) + { + int i; + for( i = 0; i < samples_selected; i++ ) + if( sparse_rows[i] ) + { + sparse_rows[i]->heap->storage = 0; + cvReleaseSparseMat( &sparse_rows[i] ); + } + cvFree( &sparse_rows ); + } + + cvReleaseMat( &sample_idx_buffer ); + cvReleaseMemStorage( &storage ); +} +#endif + +// By P. Yarykin - begin - + +void cvCombineResponseMaps (CvMat* _responses, + const CvMat* old_response_map, + CvMat* new_response_map, + CvMat** out_response_map) +{ + int** old_data = NULL; + int** new_data = NULL; + + CV_FUNCNAME ("cvCombineResponseMaps"); + __BEGIN__ + + int i,j; + int old_n, new_n, out_n; + int samples, free_response; + int* first; + int* responses; + int* out_data; + + if( out_response_map ) + *out_response_map = 0; + +// Check input data. + if ((!ICV_IS_MAT_OF_TYPE (_responses, CV_32SC1)) || + (!ICV_IS_MAT_OF_TYPE (old_response_map, CV_32SC1)) || + (!ICV_IS_MAT_OF_TYPE (new_response_map, CV_32SC1))) + { + CV_ERROR (CV_StsBadArg, "Some of input arguments is not the CvMat") + } + +// Prepare sorted responses. + first = new_response_map->data.i; + new_n = new_response_map->cols; + CV_CALL (new_data = (int**)cvAlloc (new_n * sizeof (new_data[0]))); + for (i = 0; i < new_n; i++) + new_data[i] = first + i; + qsort (new_data, new_n, sizeof(int*), icvCmpIntegersPtr); + + first = old_response_map->data.i; + old_n = old_response_map->cols; + CV_CALL (old_data = (int**)cvAlloc (old_n * sizeof (old_data[0]))); + for (i = 0; i < old_n; i++) + old_data[i] = first + i; + qsort (old_data, old_n, sizeof(int*), icvCmpIntegersPtr); + +// Count the number of different responses. + for (i = 0, j = 0, out_n = 0; i < old_n && j < new_n; out_n++) + { + if (*old_data[i] == *new_data[j]) + { + i++; + j++; + } + else if (*old_data[i] < *new_data[j]) + i++; + else + j++; + } + out_n += old_n - i + new_n - j; + +// Create and fill the result response maps. + CV_CALL (*out_response_map = cvCreateMat (1, out_n, CV_32SC1)); + out_data = (*out_response_map)->data.i; + memcpy (out_data, first, old_n * sizeof (int)); + + free_response = old_n; + for (i = 0, j = 0; i < old_n && j < new_n; ) + { + if (*old_data[i] == *new_data[j]) + { + *new_data[j] = (int)(old_data[i] - first); + i++; + j++; + } + else if (*old_data[i] < *new_data[j]) + i++; + else + { + out_data[free_response] = *new_data[j]; + *new_data[j] = free_response++; + j++; + } + } + for (; j < new_n; j++) + { + out_data[free_response] = *new_data[j]; + *new_data[j] = free_response++; + } + CV_ASSERT (free_response == out_n); + +// Change according to out response map. + samples = _responses->cols + _responses->rows - 1; + responses = _responses->data.i; + first = new_response_map->data.i; + for (i = 0; i < samples; i++) + { + responses[i] = first[responses[i]]; + } + + __END__ + + cvFree(&old_data); + cvFree(&new_data); + +} + + +static int icvGetNumberOfCluster( double* prob_vector, int num_of_clusters, float r, + float outlier_thresh, int normalize_probs ) +{ + int max_prob_loc = 0; + + CV_FUNCNAME("icvGetNumberOfCluster"); + __BEGIN__; + + double prob, maxprob, sum; + int i; + + CV_ASSERT(prob_vector); + CV_ASSERT(num_of_clusters >= 0); + + maxprob = prob_vector[0]; + max_prob_loc = 0; + sum = maxprob; + for( i = 1; i < num_of_clusters; i++ ) + { + prob = prob_vector[i]; + sum += prob; + if( prob > maxprob ) + { + max_prob_loc = i; + maxprob = prob; + } + } + if( normalize_probs && fabs(sum - 1.) > FLT_EPSILON ) + { + for( i = 0; i < num_of_clusters; i++ ) + prob_vector[i] /= sum; + } + if( fabs(r - 1.) > FLT_EPSILON && fabs(sum - 1.) < outlier_thresh ) + max_prob_loc = -1; + + __END__; + + return max_prob_loc; + +} // End of icvGetNumberOfCluster + + +void icvFindClusterLabels( const CvMat* probs, float outlier_thresh, float r, + const CvMat* labels ) +{ + CvMat* counts = 0; + + CV_FUNCNAME("icvFindClusterLabels"); + __BEGIN__; + + int nclusters, nsamples; + int i, j; + double* probs_data; + + CV_ASSERT( ICV_IS_MAT_OF_TYPE(probs, CV_64FC1) ); + CV_ASSERT( ICV_IS_MAT_OF_TYPE(labels, CV_32SC1) ); + + nclusters = probs->cols; + nsamples = probs->rows; + CV_ASSERT( nsamples == labels->cols ); + + CV_CALL( counts = cvCreateMat( 1, nclusters + 1, CV_32SC1 ) ); + CV_CALL( cvSetZero( counts )); + for( i = 0; i < nsamples; i++ ) + { + labels->data.i[i] = icvGetNumberOfCluster( probs->data.db + i*probs->cols, + nclusters, r, outlier_thresh, 1 ); + counts->data.i[labels->data.i[i] + 1]++; + } + CV_ASSERT((int)cvSum(counts).val[0] == nsamples); + // Filling empty clusters with the vector, that has the maximal probability + for( j = 0; j < nclusters; j++ ) // outliers are ignored + { + int maxprob_loc = -1; + double maxprob = 0; + + if( counts->data.i[j+1] ) // j-th class is not empty + continue; + // look for the presentative, which is not lonely in it's cluster + // and that has a maximal probability among all these vectors + probs_data = probs->data.db; + for( i = 0; i < nsamples; i++, probs_data++ ) + { + int label = labels->data.i[i]; + double prob; + if( counts->data.i[label+1] == 0 || + (counts->data.i[label+1] <= 1 && label != -1) ) + continue; + prob = *probs_data; + if( prob >= maxprob ) + { + maxprob = prob; + maxprob_loc = i; + } + } + // maxprob_loc == 0 <=> number of vectors less then number of clusters + CV_ASSERT( maxprob_loc >= 0 ); + counts->data.i[labels->data.i[maxprob_loc] + 1]--; + labels->data.i[maxprob_loc] = j; + counts->data.i[j + 1]++; + } + + __END__; + + cvReleaseMat( &counts ); +} // End of icvFindClusterLabels + +/* End of file */ diff --git a/apps/traincascade/old_ml_precomp.hpp b/apps/traincascade/old_ml_precomp.hpp new file mode 100644 index 0000000000..32ae269818 --- /dev/null +++ b/apps/traincascade/old_ml_precomp.hpp @@ -0,0 +1,376 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// Intel License Agreement +// +// Copyright (C) 2000, Intel Corporation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of Intel Corporation may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef __OPENCV_PRECOMP_H__ +#define __OPENCV_PRECOMP_H__ + +#include "opencv2/core.hpp" +#include "old_ml.hpp" +#include "opencv2/core/core_c.h" +#include "opencv2/core/utility.hpp" + +#include "opencv2/core/private.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include + +#define ML_IMPL CV_IMPL +#define __BEGIN__ __CV_BEGIN__ +#define __END__ __CV_END__ +#define EXIT __CV_EXIT__ + +#define CV_MAT_ELEM_FLAG( mat, type, comp, vect, tflag ) \ + (( tflag == CV_ROW_SAMPLE ) \ + ? (CV_MAT_ELEM( mat, type, comp, vect )) \ + : (CV_MAT_ELEM( mat, type, vect, comp ))) + +/* Convert matrix to vector */ +#define ICV_MAT2VEC( mat, vdata, vstep, num ) \ + if( MIN( (mat).rows, (mat).cols ) != 1 ) \ + CV_ERROR( CV_StsBadArg, "" ); \ + (vdata) = ((mat).data.ptr); \ + if( (mat).rows == 1 ) \ + { \ + (vstep) = CV_ELEM_SIZE( (mat).type ); \ + (num) = (mat).cols; \ + } \ + else \ + { \ + (vstep) = (mat).step; \ + (num) = (mat).rows; \ + } + +/* get raw data */ +#define ICV_RAWDATA( mat, flags, rdata, sstep, cstep, m, n ) \ + (rdata) = (mat).data.ptr; \ + if( CV_IS_ROW_SAMPLE( flags ) ) \ + { \ + (sstep) = (mat).step; \ + (cstep) = CV_ELEM_SIZE( (mat).type ); \ + (m) = (mat).rows; \ + (n) = (mat).cols; \ + } \ + else \ + { \ + (cstep) = (mat).step; \ + (sstep) = CV_ELEM_SIZE( (mat).type ); \ + (n) = (mat).rows; \ + (m) = (mat).cols; \ + } + +#define ICV_IS_MAT_OF_TYPE( mat, mat_type) \ + (CV_IS_MAT( mat ) && CV_MAT_TYPE( mat->type ) == (mat_type) && \ + (mat)->cols > 0 && (mat)->rows > 0) + +/* + uchar* data; int sstep, cstep; - trainData->data + uchar* classes; int clstep; int ncl;- trainClasses + uchar* tmask; int tmstep; int ntm; - typeMask + uchar* missed;int msstep, mcstep; -missedMeasurements... + int mm, mn; == m,n == size,dim + uchar* sidx;int sistep; - sampleIdx + uchar* cidx;int cistep; - compIdx + int k, l; == n,m == dim,size (length of cidx, sidx) + int m, n; == size,dim +*/ +#define ICV_DECLARE_TRAIN_ARGS() \ + uchar* data; \ + int sstep, cstep; \ + uchar* classes; \ + int clstep; \ + int ncl; \ + uchar* tmask; \ + int tmstep; \ + int ntm; \ + uchar* missed; \ + int msstep, mcstep; \ + int mm, mn; \ + uchar* sidx; \ + int sistep; \ + uchar* cidx; \ + int cistep; \ + int k, l; \ + int m, n; \ + \ + data = classes = tmask = missed = sidx = cidx = NULL; \ + sstep = cstep = clstep = ncl = tmstep = ntm = msstep = mcstep = mm = mn = 0; \ + sistep = cistep = k = l = m = n = 0; + +#define ICV_TRAIN_DATA_REQUIRED( param, flags ) \ + if( !ICV_IS_MAT_OF_TYPE( (param), CV_32FC1 ) ) \ + { \ + CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ + } \ + else \ + { \ + ICV_RAWDATA( *(param), (flags), data, sstep, cstep, m, n ); \ + k = n; \ + l = m; \ + } + +#define ICV_TRAIN_CLASSES_REQUIRED( param ) \ + if( !ICV_IS_MAT_OF_TYPE( (param), CV_32FC1 ) ) \ + { \ + CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ + } \ + else \ + { \ + ICV_MAT2VEC( *(param), classes, clstep, ncl ); \ + if( m != ncl ) \ + { \ + CV_ERROR( CV_StsBadArg, "Unmatched sizes" ); \ + } \ + } + +#define ICV_ARG_NULL( param ) \ + if( (param) != NULL ) \ + { \ + CV_ERROR( CV_StsBadArg, #param " parameter must be NULL" ); \ + } + +#define ICV_MISSED_MEASUREMENTS_OPTIONAL( param, flags ) \ + if( param ) \ + { \ + if( !ICV_IS_MAT_OF_TYPE( param, CV_8UC1 ) ) \ + { \ + CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ + } \ + else \ + { \ + ICV_RAWDATA( *(param), (flags), missed, msstep, mcstep, mm, mn ); \ + if( mm != m || mn != n ) \ + { \ + CV_ERROR( CV_StsBadArg, "Unmatched sizes" ); \ + } \ + } \ + } + +#define ICV_COMP_IDX_OPTIONAL( param ) \ + if( param ) \ + { \ + if( !ICV_IS_MAT_OF_TYPE( param, CV_32SC1 ) ) \ + { \ + CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ + } \ + else \ + { \ + ICV_MAT2VEC( *(param), cidx, cistep, k ); \ + if( k > n ) \ + CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ + } \ + } + +#define ICV_SAMPLE_IDX_OPTIONAL( param ) \ + if( param ) \ + { \ + if( !ICV_IS_MAT_OF_TYPE( param, CV_32SC1 ) ) \ + { \ + CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ + } \ + else \ + { \ + ICV_MAT2VEC( *sampleIdx, sidx, sistep, l ); \ + if( l > m ) \ + CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ + } \ + } + +/****************************************************************************************/ +#define ICV_CONVERT_FLOAT_ARRAY_TO_MATRICE( array, matrice ) \ +{ \ + CvMat a, b; \ + int dims = (matrice)->cols; \ + int nsamples = (matrice)->rows; \ + int type = CV_MAT_TYPE((matrice)->type); \ + int i, offset = dims; \ + \ + CV_ASSERT( type == CV_32FC1 || type == CV_64FC1 ); \ + offset *= ((type == CV_32FC1) ? sizeof(float) : sizeof(double));\ + \ + b = cvMat( 1, dims, CV_32FC1 ); \ + cvGetRow( matrice, &a, 0 ); \ + for( i = 0; i < nsamples; i++, a.data.ptr += offset ) \ + { \ + b.data.fl = (float*)array[i]; \ + CV_CALL( cvConvert( &b, &a ) ); \ + } \ +} + +/****************************************************************************************\ +* Auxiliary functions declarations * +\****************************************************************************************/ + +/* Generates a set of classes centers in quantity that are generated as + uniform random vectors in parallelepiped, where is concentrated. Vectors in + should have horizontal orientation. If != NULL, the function doesn't + allocate any memory and stores generated centers in , returns . + If == NULL, the function allocates memory and creates the matrice. Centers + are supposed to be oriented horizontally. */ +CvMat* icvGenerateRandomClusterCenters( int seed, + const CvMat* data, + int num_of_clusters, + CvMat* centers CV_DEFAULT(0)); + +/* Fills the using by choosing the maximal probability. Outliers are + fixed by and have cluster label (-1). Function also controls that there + weren't "empty" clusters by filling empty clusters with the maximal probability vector. + If probs_sums != NULL, filles it with the sums of probabilities for each sample (it is + useful for normalizing probabilities' matrice of FCM) */ +void icvFindClusterLabels( const CvMat* probs, float outlier_thresh, float r, + const CvMat* labels ); + +typedef struct CvSparseVecElem32f +{ + int idx; + float val; +} +CvSparseVecElem32f; + +/* Prepare training data and related parameters */ +#define CV_TRAIN_STATMODEL_DEFRAGMENT_TRAIN_DATA 1 +#define CV_TRAIN_STATMODEL_SAMPLES_AS_ROWS 2 +#define CV_TRAIN_STATMODEL_SAMPLES_AS_COLUMNS 4 +#define CV_TRAIN_STATMODEL_CATEGORICAL_RESPONSE 8 +#define CV_TRAIN_STATMODEL_ORDERED_RESPONSE 16 +#define CV_TRAIN_STATMODEL_RESPONSES_ON_OUTPUT 32 +#define CV_TRAIN_STATMODEL_ALWAYS_COPY_TRAIN_DATA 64 +#define CV_TRAIN_STATMODEL_SPARSE_AS_SPARSE 128 + +int +cvPrepareTrainData( const char* /*funcname*/, + const CvMat* train_data, int tflag, + const CvMat* responses, int response_type, + const CvMat* var_idx, + const CvMat* sample_idx, + bool always_copy_data, + const float*** out_train_samples, + int* _sample_count, + int* _var_count, + int* _var_all, + CvMat** out_responses, + CvMat** out_response_map, + CvMat** out_var_idx, + CvMat** out_sample_idx=0 ); + +void +cvSortSamplesByClasses( const float** samples, const CvMat* classes, + int* class_ranges, const uchar** mask CV_DEFAULT(0) ); + +void +cvCombineResponseMaps (CvMat* _responses, + const CvMat* old_response_map, + CvMat* new_response_map, + CvMat** out_response_map); + +void +cvPreparePredictData( const CvArr* sample, int dims_all, const CvMat* comp_idx, + int class_count, const CvMat* prob, float** row_sample, + int as_sparse CV_DEFAULT(0) ); + +/* copies clustering [or batch "predict"] results + (labels and/or centers and/or probs) back to the output arrays */ +void +cvWritebackLabels( const CvMat* labels, CvMat* dst_labels, + const CvMat* centers, CvMat* dst_centers, + const CvMat* probs, CvMat* dst_probs, + const CvMat* sample_idx, int samples_all, + const CvMat* comp_idx, int dims_all ); +#define cvWritebackResponses cvWritebackLabels + +#define XML_FIELD_NAME "_name" +CvFileNode* icvFileNodeGetChild(CvFileNode* father, const char* name); +CvFileNode* icvFileNodeGetChildArrayElem(CvFileNode* father, const char* name,int index); +CvFileNode* icvFileNodeGetNext(CvFileNode* n, const char* name); + + +void cvCheckTrainData( const CvMat* train_data, int tflag, + const CvMat* missing_mask, + int* var_all, int* sample_all ); + +CvMat* cvPreprocessIndexArray( const CvMat* idx_arr, int data_arr_size, bool check_for_duplicates=false ); + +CvMat* cvPreprocessVarType( const CvMat* type_mask, const CvMat* var_idx, + int var_all, int* response_type ); + +CvMat* cvPreprocessOrderedResponses( const CvMat* responses, + const CvMat* sample_idx, int sample_all ); + +CvMat* cvPreprocessCategoricalResponses( const CvMat* responses, + const CvMat* sample_idx, int sample_all, + CvMat** out_response_map, CvMat** class_counts=0 ); + +const float** cvGetTrainSamples( const CvMat* train_data, int tflag, + const CvMat* var_idx, const CvMat* sample_idx, + int* _var_count, int* _sample_count, + bool always_copy_data=false ); + +namespace cv +{ + struct DTreeBestSplitFinder + { + DTreeBestSplitFinder(){ splitSize = 0, tree = 0; node = 0; } + DTreeBestSplitFinder( CvDTree* _tree, CvDTreeNode* _node); + DTreeBestSplitFinder( const DTreeBestSplitFinder& finder, Split ); + virtual ~DTreeBestSplitFinder() {} + virtual void operator()(const BlockedRange& range); + void join( DTreeBestSplitFinder& rhs ); + Ptr bestSplit; + Ptr split; + int splitSize; + CvDTree* tree; + CvDTreeNode* node; + }; + + struct ForestTreeBestSplitFinder : DTreeBestSplitFinder + { + ForestTreeBestSplitFinder() : DTreeBestSplitFinder() {} + ForestTreeBestSplitFinder( CvForestTree* _tree, CvDTreeNode* _node ); + ForestTreeBestSplitFinder( const ForestTreeBestSplitFinder& finder, Split ); + virtual void operator()(const BlockedRange& range); + }; +} + +#endif /* __ML_H__ */ diff --git a/apps/traincascade/old_ml_tree.cpp b/apps/traincascade/old_ml_tree.cpp new file mode 100644 index 0000000000..b7e346ccbc --- /dev/null +++ b/apps/traincascade/old_ml_tree.cpp @@ -0,0 +1,4151 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// Intel License Agreement +// +// Copyright (C) 2000, Intel Corporation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of Intel Corporation may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#include "old_ml_precomp.hpp" +#include + +using namespace cv; + +static const float ord_nan = FLT_MAX*0.5f; +static const int min_block_size = 1 << 16; +static const int block_size_delta = 1 << 10; + +CvDTreeTrainData::CvDTreeTrainData() +{ + var_idx = var_type = cat_count = cat_ofs = cat_map = + priors = priors_mult = counts = direction = split_buf = responses_copy = 0; + buf = 0; + tree_storage = temp_storage = 0; + + clear(); +} + + +CvDTreeTrainData::CvDTreeTrainData( const CvMat* _train_data, int _tflag, + const CvMat* _responses, const CvMat* _var_idx, + const CvMat* _sample_idx, const CvMat* _var_type, + const CvMat* _missing_mask, const CvDTreeParams& _params, + bool _shared, bool _add_labels ) +{ + var_idx = var_type = cat_count = cat_ofs = cat_map = + priors = priors_mult = counts = direction = split_buf = responses_copy = 0; + buf = 0; + + tree_storage = temp_storage = 0; + + set_data( _train_data, _tflag, _responses, _var_idx, _sample_idx, + _var_type, _missing_mask, _params, _shared, _add_labels ); +} + + +CvDTreeTrainData::~CvDTreeTrainData() +{ + clear(); +} + + +bool CvDTreeTrainData::set_params( const CvDTreeParams& _params ) +{ + bool ok = false; + + CV_FUNCNAME( "CvDTreeTrainData::set_params" ); + + __BEGIN__; + + // set parameters + params = _params; + + if( params.max_categories < 2 ) + CV_ERROR( CV_StsOutOfRange, "params.max_categories should be >= 2" ); + params.max_categories = MIN( params.max_categories, 15 ); + + if( params.max_depth < 0 ) + CV_ERROR( CV_StsOutOfRange, "params.max_depth should be >= 0" ); + params.max_depth = MIN( params.max_depth, 25 ); + + params.min_sample_count = MAX(params.min_sample_count,1); + + if( params.cv_folds < 0 ) + CV_ERROR( CV_StsOutOfRange, + "params.cv_folds should be =0 (the tree is not pruned) " + "or n>0 (tree is pruned using n-fold cross-validation)" ); + + if( params.cv_folds == 1 ) + params.cv_folds = 0; + + if( params.regression_accuracy < 0 ) + CV_ERROR( CV_StsOutOfRange, "params.regression_accuracy should be >= 0" ); + + ok = true; + + __END__; + + return ok; +} + +template +class LessThanPtr +{ +public: + bool operator()(T* a, T* b) const { return *a < *b; } +}; + +template +class LessThanIdx +{ +public: + LessThanIdx( const T* _arr ) : arr(_arr) {} + bool operator()(Idx a, Idx b) const { return arr[a] < arr[b]; } + const T* arr; +}; + +class LessThanPairs +{ +public: + bool operator()(const CvPair16u32s& a, const CvPair16u32s& b) const { return *a.i < *b.i; } +}; + +void CvDTreeTrainData::set_data( const CvMat* _train_data, int _tflag, + const CvMat* _responses, const CvMat* _var_idx, const CvMat* _sample_idx, + const CvMat* _var_type, const CvMat* _missing_mask, const CvDTreeParams& _params, + bool _shared, bool _add_labels, bool _update_data ) +{ + CvMat* sample_indices = 0; + CvMat* var_type0 = 0; + CvMat* tmp_map = 0; + int** int_ptr = 0; + CvPair16u32s* pair16u32s_ptr = 0; + CvDTreeTrainData* data = 0; + float *_fdst = 0; + int *_idst = 0; + unsigned short* udst = 0; + int* idst = 0; + + CV_FUNCNAME( "CvDTreeTrainData::set_data" ); + + __BEGIN__; + + int sample_all = 0, r_type, cv_n; + int total_c_count = 0; + int tree_block_size, temp_block_size, max_split_size, nv_size, cv_size = 0; + int ds_step, dv_step, ms_step = 0, mv_step = 0; // {data|mask}{sample|var}_step + int vi, i, size; + char err[100]; + const int *sidx = 0, *vidx = 0; + + uint64 effective_buf_size = 0; + int effective_buf_height = 0, effective_buf_width = 0; + + if( _update_data && data_root ) + { + data = new CvDTreeTrainData( _train_data, _tflag, _responses, _var_idx, + _sample_idx, _var_type, _missing_mask, _params, _shared, _add_labels ); + + // compare new and old train data + if( !(data->var_count == var_count && + cvNorm( data->var_type, var_type, CV_C ) < FLT_EPSILON && + cvNorm( data->cat_count, cat_count, CV_C ) < FLT_EPSILON && + cvNorm( data->cat_map, cat_map, CV_C ) < FLT_EPSILON) ) + CV_ERROR( CV_StsBadArg, + "The new training data must have the same types and the input and output variables " + "and the same categories for categorical variables" ); + + cvReleaseMat( &priors ); + cvReleaseMat( &priors_mult ); + cvReleaseMat( &buf ); + cvReleaseMat( &direction ); + cvReleaseMat( &split_buf ); + cvReleaseMemStorage( &temp_storage ); + + priors = data->priors; data->priors = 0; + priors_mult = data->priors_mult; data->priors_mult = 0; + buf = data->buf; data->buf = 0; + buf_count = data->buf_count; buf_size = data->buf_size; + sample_count = data->sample_count; + + direction = data->direction; data->direction = 0; + split_buf = data->split_buf; data->split_buf = 0; + temp_storage = data->temp_storage; data->temp_storage = 0; + nv_heap = data->nv_heap; cv_heap = data->cv_heap; + + data_root = new_node( 0, sample_count, 0, 0 ); + EXIT; + } + + clear(); + + var_all = 0; + rng = &cv::theRNG(); + + CV_CALL( set_params( _params )); + + // check parameter types and sizes + CV_CALL( cvCheckTrainData( _train_data, _tflag, _missing_mask, &var_all, &sample_all )); + + train_data = _train_data; + responses = _responses; + + if( _tflag == CV_ROW_SAMPLE ) + { + ds_step = _train_data->step/CV_ELEM_SIZE(_train_data->type); + dv_step = 1; + if( _missing_mask ) + ms_step = _missing_mask->step, mv_step = 1; + } + else + { + dv_step = _train_data->step/CV_ELEM_SIZE(_train_data->type); + ds_step = 1; + if( _missing_mask ) + mv_step = _missing_mask->step, ms_step = 1; + } + tflag = _tflag; + + sample_count = sample_all; + var_count = var_all; + + if( _sample_idx ) + { + CV_CALL( sample_indices = cvPreprocessIndexArray( _sample_idx, sample_all )); + sidx = sample_indices->data.i; + sample_count = sample_indices->rows + sample_indices->cols - 1; + } + + if( _var_idx ) + { + CV_CALL( var_idx = cvPreprocessIndexArray( _var_idx, var_all )); + vidx = var_idx->data.i; + var_count = var_idx->rows + var_idx->cols - 1; + } + + is_buf_16u = false; + if ( sample_count < 65536 ) + is_buf_16u = true; + + if( !CV_IS_MAT(_responses) || + (CV_MAT_TYPE(_responses->type) != CV_32SC1 && + CV_MAT_TYPE(_responses->type) != CV_32FC1) || + (_responses->rows != 1 && _responses->cols != 1) || + _responses->rows + _responses->cols - 1 != sample_all ) + CV_ERROR( CV_StsBadArg, "The array of _responses must be an integer or " + "floating-point vector containing as many elements as " + "the total number of samples in the training data matrix" ); + + r_type = CV_VAR_CATEGORICAL; + if( _var_type ) + CV_CALL( var_type0 = cvPreprocessVarType( _var_type, var_idx, var_count, &r_type )); + + CV_CALL( var_type = cvCreateMat( 1, var_count+2, CV_32SC1 )); + + cat_var_count = 0; + ord_var_count = -1; + + is_classifier = r_type == CV_VAR_CATEGORICAL; + + // step 0. calc the number of categorical vars + for( vi = 0; vi < var_count; vi++ ) + { + char vt = var_type0 ? var_type0->data.ptr[vi] : CV_VAR_ORDERED; + var_type->data.i[vi] = vt == CV_VAR_CATEGORICAL ? cat_var_count++ : ord_var_count--; + } + + ord_var_count = ~ord_var_count; + cv_n = params.cv_folds; + // set the two last elements of var_type array to be able + // to locate responses and cross-validation labels using + // the corresponding get_* functions. + var_type->data.i[var_count] = cat_var_count; + var_type->data.i[var_count+1] = cat_var_count+1; + + // in case of single ordered predictor we need dummy cv_labels + // for safe split_node_data() operation + have_labels = cv_n > 0 || (ord_var_count == 1 && cat_var_count == 0) || _add_labels; + + work_var_count = var_count + (is_classifier ? 1 : 0) // for responses class_labels + + (have_labels ? 1 : 0); // for cv_labels + + shared = _shared; + buf_count = shared ? 2 : 1; + + buf_size = -1; // the member buf_size is obsolete + + effective_buf_size = (uint64)(work_var_count + 1)*(uint64)sample_count * buf_count; // this is the total size of "CvMat buf" to be allocated + effective_buf_width = sample_count; + effective_buf_height = work_var_count+1; + + if (effective_buf_width >= effective_buf_height) + effective_buf_height *= buf_count; + else + effective_buf_width *= buf_count; + + if ((uint64)effective_buf_width * (uint64)effective_buf_height != effective_buf_size) + { + CV_Error(CV_StsBadArg, "The memory buffer cannot be allocated since its size exceeds integer fields limit"); + } + + + + if ( is_buf_16u ) + { + CV_CALL( buf = cvCreateMat( effective_buf_height, effective_buf_width, CV_16UC1 )); + CV_CALL( pair16u32s_ptr = (CvPair16u32s*)cvAlloc( sample_count*sizeof(pair16u32s_ptr[0]) )); + } + else + { + CV_CALL( buf = cvCreateMat( effective_buf_height, effective_buf_width, CV_32SC1 )); + CV_CALL( int_ptr = (int**)cvAlloc( sample_count*sizeof(int_ptr[0]) )); + } + + size = is_classifier ? (cat_var_count+1) : cat_var_count; + size = !size ? 1 : size; + CV_CALL( cat_count = cvCreateMat( 1, size, CV_32SC1 )); + CV_CALL( cat_ofs = cvCreateMat( 1, size, CV_32SC1 )); + + size = is_classifier ? (cat_var_count + 1)*params.max_categories : cat_var_count*params.max_categories; + size = !size ? 1 : size; + CV_CALL( cat_map = cvCreateMat( 1, size, CV_32SC1 )); + + // now calculate the maximum size of split, + // create memory storage that will keep nodes and splits of the decision tree + // allocate root node and the buffer for the whole training data + max_split_size = cvAlign(sizeof(CvDTreeSplit) + + (MAX(0,sample_count - 33)/32)*sizeof(int),sizeof(void*)); + tree_block_size = MAX((int)sizeof(CvDTreeNode)*8, max_split_size); + tree_block_size = MAX(tree_block_size + block_size_delta, min_block_size); + CV_CALL( tree_storage = cvCreateMemStorage( tree_block_size )); + CV_CALL( node_heap = cvCreateSet( 0, sizeof(*node_heap), sizeof(CvDTreeNode), tree_storage )); + + nv_size = var_count*sizeof(int); + nv_size = cvAlign(MAX( nv_size, (int)sizeof(CvSetElem) ), sizeof(void*)); + + temp_block_size = nv_size; + + if( cv_n ) + { + if( sample_count < cv_n*MAX(params.min_sample_count,10) ) + CV_ERROR( CV_StsOutOfRange, + "The many folds in cross-validation for such a small dataset" ); + + cv_size = cvAlign( cv_n*(sizeof(int) + sizeof(double)*2), sizeof(double) ); + temp_block_size = MAX(temp_block_size, cv_size); + } + + temp_block_size = MAX( temp_block_size + block_size_delta, min_block_size ); + CV_CALL( temp_storage = cvCreateMemStorage( temp_block_size )); + CV_CALL( nv_heap = cvCreateSet( 0, sizeof(*nv_heap), nv_size, temp_storage )); + if( cv_size ) + CV_CALL( cv_heap = cvCreateSet( 0, sizeof(*cv_heap), cv_size, temp_storage )); + + CV_CALL( data_root = new_node( 0, sample_count, 0, 0 )); + + max_c_count = 1; + + _fdst = 0; + _idst = 0; + if (ord_var_count) + _fdst = (float*)cvAlloc(sample_count*sizeof(_fdst[0])); + if (is_buf_16u && (cat_var_count || is_classifier)) + _idst = (int*)cvAlloc(sample_count*sizeof(_idst[0])); + + // transform the training data to convenient representation + for( vi = 0; vi <= var_count; vi++ ) + { + int ci; + const uchar* mask = 0; + int64 m_step = 0, step; + const int* idata = 0; + const float* fdata = 0; + int num_valid = 0; + + if( vi < var_count ) // analyze i-th input variable + { + int vi0 = vidx ? vidx[vi] : vi; + ci = get_var_type(vi); + step = ds_step; m_step = ms_step; + if( CV_MAT_TYPE(_train_data->type) == CV_32SC1 ) + idata = _train_data->data.i + vi0*dv_step; + else + fdata = _train_data->data.fl + vi0*dv_step; + if( _missing_mask ) + mask = _missing_mask->data.ptr + vi0*mv_step; + } + else // analyze _responses + { + ci = cat_var_count; + step = CV_IS_MAT_CONT(_responses->type) ? + 1 : _responses->step / CV_ELEM_SIZE(_responses->type); + if( CV_MAT_TYPE(_responses->type) == CV_32SC1 ) + idata = _responses->data.i; + else + fdata = _responses->data.fl; + } + + if( (vi < var_count && ci>=0) || + (vi == var_count && is_classifier) ) // process categorical variable or response + { + int c_count, prev_label; + int* c_map; + + if (is_buf_16u) + udst = (unsigned short*)(buf->data.s + vi*sample_count); + else + idst = buf->data.i + vi*sample_count; + + // copy data + for( i = 0; i < sample_count; i++ ) + { + int val = INT_MAX, si = sidx ? sidx[i] : i; + if( !mask || !mask[(size_t)si*m_step] ) + { + if( idata ) + val = idata[(size_t)si*step]; + else + { + float t = fdata[(size_t)si*step]; + val = cvRound(t); + if( fabs(t - val) > FLT_EPSILON ) + { + sprintf( err, "%d-th value of %d-th (categorical) " + "variable is not an integer", i, vi ); + CV_ERROR( CV_StsBadArg, err ); + } + } + + if( val == INT_MAX ) + { + sprintf( err, "%d-th value of %d-th (categorical) " + "variable is too large", i, vi ); + CV_ERROR( CV_StsBadArg, err ); + } + num_valid++; + } + if (is_buf_16u) + { + _idst[i] = val; + pair16u32s_ptr[i].u = udst + i; + pair16u32s_ptr[i].i = _idst + i; + } + else + { + idst[i] = val; + int_ptr[i] = idst + i; + } + } + + c_count = num_valid > 0; + if (is_buf_16u) + { + std::sort(pair16u32s_ptr, pair16u32s_ptr + sample_count, LessThanPairs()); + // count the categories + for( i = 1; i < num_valid; i++ ) + if (*pair16u32s_ptr[i].i != *pair16u32s_ptr[i-1].i) + c_count ++ ; + } + else + { + std::sort(int_ptr, int_ptr + sample_count, LessThanPtr()); + // count the categories + for( i = 1; i < num_valid; i++ ) + c_count += *int_ptr[i] != *int_ptr[i-1]; + } + + if( vi > 0 ) + max_c_count = MAX( max_c_count, c_count ); + cat_count->data.i[ci] = c_count; + cat_ofs->data.i[ci] = total_c_count; + + // resize cat_map, if need + if( cat_map->cols < total_c_count + c_count ) + { + tmp_map = cat_map; + CV_CALL( cat_map = cvCreateMat( 1, + MAX(cat_map->cols*3/2,total_c_count+c_count), CV_32SC1 )); + for( i = 0; i < total_c_count; i++ ) + cat_map->data.i[i] = tmp_map->data.i[i]; + cvReleaseMat( &tmp_map ); + } + + c_map = cat_map->data.i + total_c_count; + total_c_count += c_count; + + c_count = -1; + if (is_buf_16u) + { + // compact the class indices and build the map + prev_label = ~*pair16u32s_ptr[0].i; + for( i = 0; i < num_valid; i++ ) + { + int cur_label = *pair16u32s_ptr[i].i; + if( cur_label != prev_label ) + c_map[++c_count] = prev_label = cur_label; + *pair16u32s_ptr[i].u = (unsigned short)c_count; + } + // replace labels for missing values with -1 + for( ; i < sample_count; i++ ) + *pair16u32s_ptr[i].u = 65535; + } + else + { + // compact the class indices and build the map + prev_label = ~*int_ptr[0]; + for( i = 0; i < num_valid; i++ ) + { + int cur_label = *int_ptr[i]; + if( cur_label != prev_label ) + c_map[++c_count] = prev_label = cur_label; + *int_ptr[i] = c_count; + } + // replace labels for missing values with -1 + for( ; i < sample_count; i++ ) + *int_ptr[i] = -1; + } + } + else if( ci < 0 ) // process ordered variable + { + if (is_buf_16u) + udst = (unsigned short*)(buf->data.s + vi*sample_count); + else + idst = buf->data.i + vi*sample_count; + + for( i = 0; i < sample_count; i++ ) + { + float val = ord_nan; + int si = sidx ? sidx[i] : i; + if( !mask || !mask[(size_t)si*m_step] ) + { + if( idata ) + val = (float)idata[(size_t)si*step]; + else + val = fdata[(size_t)si*step]; + + if( fabs(val) >= ord_nan ) + { + sprintf( err, "%d-th value of %d-th (ordered) " + "variable (=%g) is too large", i, vi, val ); + CV_ERROR( CV_StsBadArg, err ); + } + num_valid++; + } + + if (is_buf_16u) + udst[i] = (unsigned short)i; // TODO: memory corruption may be here + else + idst[i] = i; + _fdst[i] = val; + + } + if (is_buf_16u) + std::sort(udst, udst + sample_count, LessThanIdx(_fdst)); + else + std::sort(idst, idst + sample_count, LessThanIdx(_fdst)); + } + + if( vi < var_count ) + data_root->set_num_valid(vi, num_valid); + } + + // set sample labels + if (is_buf_16u) + udst = (unsigned short*)(buf->data.s + work_var_count*sample_count); + else + idst = buf->data.i + work_var_count*sample_count; + + for (i = 0; i < sample_count; i++) + { + if (udst) + udst[i] = sidx ? (unsigned short)sidx[i] : (unsigned short)i; + else + idst[i] = sidx ? sidx[i] : i; + } + + if( cv_n ) + { + unsigned short* usdst = 0; + int* idst2 = 0; + + if (is_buf_16u) + { + usdst = (unsigned short*)(buf->data.s + (get_work_var_count()-1)*sample_count); + for( i = vi = 0; i < sample_count; i++ ) + { + usdst[i] = (unsigned short)vi++; + vi &= vi < cv_n ? -1 : 0; + } + + for( i = 0; i < sample_count; i++ ) + { + int a = (*rng)(sample_count); + int b = (*rng)(sample_count); + unsigned short unsh = (unsigned short)vi; + CV_SWAP( usdst[a], usdst[b], unsh ); + } + } + else + { + idst2 = buf->data.i + (get_work_var_count()-1)*sample_count; + for( i = vi = 0; i < sample_count; i++ ) + { + idst2[i] = vi++; + vi &= vi < cv_n ? -1 : 0; + } + + for( i = 0; i < sample_count; i++ ) + { + int a = (*rng)(sample_count); + int b = (*rng)(sample_count); + CV_SWAP( idst2[a], idst2[b], vi ); + } + } + } + + if ( cat_map ) + cat_map->cols = MAX( total_c_count, 1 ); + + max_split_size = cvAlign(sizeof(CvDTreeSplit) + + (MAX(0,max_c_count - 33)/32)*sizeof(int),sizeof(void*)); + CV_CALL( split_heap = cvCreateSet( 0, sizeof(*split_heap), max_split_size, tree_storage )); + + have_priors = is_classifier && params.priors; + if( is_classifier ) + { + int m = get_num_classes(); + double sum = 0; + CV_CALL( priors = cvCreateMat( 1, m, CV_64F )); + for( i = 0; i < m; i++ ) + { + double val = have_priors ? params.priors[i] : 1.; + if( val <= 0 ) + CV_ERROR( CV_StsOutOfRange, "Every class weight should be positive" ); + priors->data.db[i] = val; + sum += val; + } + + // normalize weights + if( have_priors ) + cvScale( priors, priors, 1./sum ); + + CV_CALL( priors_mult = cvCloneMat( priors )); + CV_CALL( counts = cvCreateMat( 1, m, CV_32SC1 )); + } + + + CV_CALL( direction = cvCreateMat( 1, sample_count, CV_8UC1 )); + CV_CALL( split_buf = cvCreateMat( 1, sample_count, CV_32SC1 )); + + __END__; + + if( data ) + delete data; + + if (_fdst) + cvFree( &_fdst ); + if (_idst) + cvFree( &_idst ); + cvFree( &int_ptr ); + cvFree( &pair16u32s_ptr); + cvReleaseMat( &var_type0 ); + cvReleaseMat( &sample_indices ); + cvReleaseMat( &tmp_map ); +} + +void CvDTreeTrainData::do_responses_copy() +{ + responses_copy = cvCreateMat( responses->rows, responses->cols, responses->type ); + cvCopy( responses, responses_copy); + responses = responses_copy; +} + +CvDTreeNode* CvDTreeTrainData::subsample_data( const CvMat* _subsample_idx ) +{ + CvDTreeNode* root = 0; + CvMat* isubsample_idx = 0; + CvMat* subsample_co = 0; + + bool isMakeRootCopy = true; + + CV_FUNCNAME( "CvDTreeTrainData::subsample_data" ); + + __BEGIN__; + + if( !data_root ) + CV_ERROR( CV_StsError, "No training data has been set" ); + + if( _subsample_idx ) + { + CV_CALL( isubsample_idx = cvPreprocessIndexArray( _subsample_idx, sample_count )); + + if( isubsample_idx->cols + isubsample_idx->rows - 1 == sample_count ) + { + const int* sidx = isubsample_idx->data.i; + for( int i = 0; i < sample_count; i++ ) + { + if( sidx[i] != i ) + { + isMakeRootCopy = false; + break; + } + } + } + else + isMakeRootCopy = false; + } + + if( isMakeRootCopy ) + { + // make a copy of the root node + CvDTreeNode temp; + int i; + root = new_node( 0, 1, 0, 0 ); + temp = *root; + *root = *data_root; + root->num_valid = temp.num_valid; + if( root->num_valid ) + { + for( i = 0; i < var_count; i++ ) + root->num_valid[i] = data_root->num_valid[i]; + } + root->cv_Tn = temp.cv_Tn; + root->cv_node_risk = temp.cv_node_risk; + root->cv_node_error = temp.cv_node_error; + } + else + { + int* sidx = isubsample_idx->data.i; + // co - array of count/offset pairs (to handle duplicated values in _subsample_idx) + int* co, cur_ofs = 0; + int vi, i; + int workVarCount = get_work_var_count(); + int count = isubsample_idx->rows + isubsample_idx->cols - 1; + + root = new_node( 0, count, 1, 0 ); + + CV_CALL( subsample_co = cvCreateMat( 1, sample_count*2, CV_32SC1 )); + cvZero( subsample_co ); + co = subsample_co->data.i; + for( i = 0; i < count; i++ ) + co[sidx[i]*2]++; + for( i = 0; i < sample_count; i++ ) + { + if( co[i*2] ) + { + co[i*2+1] = cur_ofs; + cur_ofs += co[i*2]; + } + else + co[i*2+1] = -1; + } + + cv::AutoBuffer inn_buf(sample_count*(2*sizeof(int) + sizeof(float))); + for( vi = 0; vi < workVarCount; vi++ ) + { + int ci = get_var_type(vi); + + if( ci >= 0 || vi >= var_count ) + { + int num_valid = 0; + const int* src = CvDTreeTrainData::get_cat_var_data( data_root, vi, (int*)(uchar*)inn_buf ); + + if (is_buf_16u) + { + unsigned short* udst = (unsigned short*)(buf->data.s + root->buf_idx*get_length_subbuf() + + vi*sample_count + root->offset); + for( i = 0; i < count; i++ ) + { + int val = src[sidx[i]]; + udst[i] = (unsigned short)val; + num_valid += val >= 0; + } + } + else + { + int* idst = buf->data.i + root->buf_idx*get_length_subbuf() + + vi*sample_count + root->offset; + for( i = 0; i < count; i++ ) + { + int val = src[sidx[i]]; + idst[i] = val; + num_valid += val >= 0; + } + } + + if( vi < var_count ) + root->set_num_valid(vi, num_valid); + } + else + { + int *src_idx_buf = (int*)(uchar*)inn_buf; + float *src_val_buf = (float*)(src_idx_buf + sample_count); + int* sample_indices_buf = (int*)(src_val_buf + sample_count); + const int* src_idx = 0; + const float* src_val = 0; + get_ord_var_data( data_root, vi, src_val_buf, src_idx_buf, &src_val, &src_idx, sample_indices_buf ); + int j = 0, idx, count_i; + int num_valid = data_root->get_num_valid(vi); + + if (is_buf_16u) + { + unsigned short* udst_idx = (unsigned short*)(buf->data.s + root->buf_idx*get_length_subbuf() + + vi*sample_count + data_root->offset); + for( i = 0; i < num_valid; i++ ) + { + idx = src_idx[i]; + count_i = co[idx*2]; + if( count_i ) + for( cur_ofs = co[idx*2+1]; count_i > 0; count_i--, j++, cur_ofs++ ) + udst_idx[j] = (unsigned short)cur_ofs; + } + + root->set_num_valid(vi, j); + + for( ; i < sample_count; i++ ) + { + idx = src_idx[i]; + count_i = co[idx*2]; + if( count_i ) + for( cur_ofs = co[idx*2+1]; count_i > 0; count_i--, j++, cur_ofs++ ) + udst_idx[j] = (unsigned short)cur_ofs; + } + } + else + { + int* idst_idx = buf->data.i + root->buf_idx*get_length_subbuf() + + vi*sample_count + root->offset; + for( i = 0; i < num_valid; i++ ) + { + idx = src_idx[i]; + count_i = co[idx*2]; + if( count_i ) + for( cur_ofs = co[idx*2+1]; count_i > 0; count_i--, j++, cur_ofs++ ) + idst_idx[j] = cur_ofs; + } + + root->set_num_valid(vi, j); + + for( ; i < sample_count; i++ ) + { + idx = src_idx[i]; + count_i = co[idx*2]; + if( count_i ) + for( cur_ofs = co[idx*2+1]; count_i > 0; count_i--, j++, cur_ofs++ ) + idst_idx[j] = cur_ofs; + } + } + } + } + // sample indices subsampling + const int* sample_idx_src = get_sample_indices(data_root, (int*)(uchar*)inn_buf); + if (is_buf_16u) + { + unsigned short* sample_idx_dst = (unsigned short*)(buf->data.s + root->buf_idx*get_length_subbuf() + + workVarCount*sample_count + root->offset); + for (i = 0; i < count; i++) + sample_idx_dst[i] = (unsigned short)sample_idx_src[sidx[i]]; + } + else + { + int* sample_idx_dst = buf->data.i + root->buf_idx*get_length_subbuf() + + workVarCount*sample_count + root->offset; + for (i = 0; i < count; i++) + sample_idx_dst[i] = sample_idx_src[sidx[i]]; + } + } + + __END__; + + cvReleaseMat( &isubsample_idx ); + cvReleaseMat( &subsample_co ); + + return root; +} + + +void CvDTreeTrainData::get_vectors( const CvMat* _subsample_idx, + float* values, uchar* missing, + float* _responses, bool get_class_idx ) +{ + CvMat* subsample_idx = 0; + CvMat* subsample_co = 0; + + CV_FUNCNAME( "CvDTreeTrainData::get_vectors" ); + + __BEGIN__; + + int i, vi, total = sample_count, count = total, cur_ofs = 0; + int* sidx = 0; + int* co = 0; + + cv::AutoBuffer inn_buf(sample_count*(2*sizeof(int) + sizeof(float))); + if( _subsample_idx ) + { + CV_CALL( subsample_idx = cvPreprocessIndexArray( _subsample_idx, sample_count )); + sidx = subsample_idx->data.i; + CV_CALL( subsample_co = cvCreateMat( 1, sample_count*2, CV_32SC1 )); + co = subsample_co->data.i; + cvZero( subsample_co ); + count = subsample_idx->cols + subsample_idx->rows - 1; + for( i = 0; i < count; i++ ) + co[sidx[i]*2]++; + for( i = 0; i < total; i++ ) + { + int count_i = co[i*2]; + if( count_i ) + { + co[i*2+1] = cur_ofs*var_count; + cur_ofs += count_i; + } + } + } + + if( missing ) + memset( missing, 1, count*var_count ); + + for( vi = 0; vi < var_count; vi++ ) + { + int ci = get_var_type(vi); + if( ci >= 0 ) // categorical + { + float* dst = values + vi; + uchar* m = missing ? missing + vi : 0; + const int* src = get_cat_var_data(data_root, vi, (int*)(uchar*)inn_buf); + + for( i = 0; i < count; i++, dst += var_count ) + { + int idx = sidx ? sidx[i] : i; + int val = src[idx]; + *dst = (float)val; + if( m ) + { + *m = (!is_buf_16u && val < 0) || (is_buf_16u && (val == 65535)); + m += var_count; + } + } + } + else // ordered + { + float* dst = values + vi; + uchar* m = missing ? missing + vi : 0; + int count1 = data_root->get_num_valid(vi); + float *src_val_buf = (float*)(uchar*)inn_buf; + int* src_idx_buf = (int*)(src_val_buf + sample_count); + int* sample_indices_buf = src_idx_buf + sample_count; + const float *src_val = 0; + const int* src_idx = 0; + get_ord_var_data(data_root, vi, src_val_buf, src_idx_buf, &src_val, &src_idx, sample_indices_buf); + + for( i = 0; i < count1; i++ ) + { + int idx = src_idx[i]; + int count_i = 1; + if( co ) + { + count_i = co[idx*2]; + cur_ofs = co[idx*2+1]; + } + else + cur_ofs = idx*var_count; + if( count_i ) + { + float val = src_val[i]; + for( ; count_i > 0; count_i--, cur_ofs += var_count ) + { + dst[cur_ofs] = val; + if( m ) + m[cur_ofs] = 0; + } + } + } + } + } + + // copy responses + if( _responses ) + { + if( is_classifier ) + { + const int* src = get_class_labels(data_root, (int*)(uchar*)inn_buf); + for( i = 0; i < count; i++ ) + { + int idx = sidx ? sidx[i] : i; + int val = get_class_idx ? src[idx] : + cat_map->data.i[cat_ofs->data.i[cat_var_count]+src[idx]]; + _responses[i] = (float)val; + } + } + else + { + float* val_buf = (float*)(uchar*)inn_buf; + int* sample_idx_buf = (int*)(val_buf + sample_count); + const float* _values = get_ord_responses(data_root, val_buf, sample_idx_buf); + for( i = 0; i < count; i++ ) + { + int idx = sidx ? sidx[i] : i; + _responses[i] = _values[idx]; + } + } + } + + __END__; + + cvReleaseMat( &subsample_idx ); + cvReleaseMat( &subsample_co ); +} + + +CvDTreeNode* CvDTreeTrainData::new_node( CvDTreeNode* parent, int count, + int storage_idx, int offset ) +{ + CvDTreeNode* node = (CvDTreeNode*)cvSetNew( node_heap ); + + node->sample_count = count; + node->depth = parent ? parent->depth + 1 : 0; + node->parent = parent; + node->left = node->right = 0; + node->split = 0; + node->value = 0; + node->class_idx = 0; + node->maxlr = 0.; + + node->buf_idx = storage_idx; + node->offset = offset; + if( nv_heap ) + node->num_valid = (int*)cvSetNew( nv_heap ); + else + node->num_valid = 0; + node->alpha = node->node_risk = node->tree_risk = node->tree_error = 0.; + node->complexity = 0; + + if( params.cv_folds > 0 && cv_heap ) + { + int cv_n = params.cv_folds; + node->Tn = INT_MAX; + node->cv_Tn = (int*)cvSetNew( cv_heap ); + node->cv_node_risk = (double*)cvAlignPtr(node->cv_Tn + cv_n, sizeof(double)); + node->cv_node_error = node->cv_node_risk + cv_n; + } + else + { + node->Tn = 0; + node->cv_Tn = 0; + node->cv_node_risk = 0; + node->cv_node_error = 0; + } + + return node; +} + + +CvDTreeSplit* CvDTreeTrainData::new_split_ord( int vi, float cmp_val, + int split_point, int inversed, float quality ) +{ + CvDTreeSplit* split = (CvDTreeSplit*)cvSetNew( split_heap ); + split->var_idx = vi; + split->condensed_idx = INT_MIN; + split->ord.c = cmp_val; + split->ord.split_point = split_point; + split->inversed = inversed; + split->quality = quality; + split->next = 0; + + return split; +} + + +CvDTreeSplit* CvDTreeTrainData::new_split_cat( int vi, float quality ) +{ + CvDTreeSplit* split = (CvDTreeSplit*)cvSetNew( split_heap ); + int i, n = (max_c_count + 31)/32; + + split->var_idx = vi; + split->condensed_idx = INT_MIN; + split->inversed = 0; + split->quality = quality; + for( i = 0; i < n; i++ ) + split->subset[i] = 0; + split->next = 0; + + return split; +} + + +void CvDTreeTrainData::free_node( CvDTreeNode* node ) +{ + CvDTreeSplit* split = node->split; + free_node_data( node ); + while( split ) + { + CvDTreeSplit* next = split->next; + cvSetRemoveByPtr( split_heap, split ); + split = next; + } + node->split = 0; + cvSetRemoveByPtr( node_heap, node ); +} + + +void CvDTreeTrainData::free_node_data( CvDTreeNode* node ) +{ + if( node->num_valid ) + { + cvSetRemoveByPtr( nv_heap, node->num_valid ); + node->num_valid = 0; + } + // do not free cv_* fields, as all the cross-validation related data is released at once. +} + + +void CvDTreeTrainData::free_train_data() +{ + cvReleaseMat( &counts ); + cvReleaseMat( &buf ); + cvReleaseMat( &direction ); + cvReleaseMat( &split_buf ); + cvReleaseMemStorage( &temp_storage ); + cvReleaseMat( &responses_copy ); + cv_heap = nv_heap = 0; +} + + +void CvDTreeTrainData::clear() +{ + free_train_data(); + + cvReleaseMemStorage( &tree_storage ); + + cvReleaseMat( &var_idx ); + cvReleaseMat( &var_type ); + cvReleaseMat( &cat_count ); + cvReleaseMat( &cat_ofs ); + cvReleaseMat( &cat_map ); + cvReleaseMat( &priors ); + cvReleaseMat( &priors_mult ); + + node_heap = split_heap = 0; + + sample_count = var_all = var_count = max_c_count = ord_var_count = cat_var_count = 0; + have_labels = have_priors = is_classifier = false; + + buf_count = buf_size = 0; + shared = false; + + data_root = 0; + + rng = &cv::theRNG(); +} + + +int CvDTreeTrainData::get_num_classes() const +{ + return is_classifier ? cat_count->data.i[cat_var_count] : 0; +} + + +int CvDTreeTrainData::get_var_type(int vi) const +{ + return var_type->data.i[vi]; +} + +void CvDTreeTrainData::get_ord_var_data( CvDTreeNode* n, int vi, float* ord_values_buf, int* sorted_indices_buf, + const float** ord_values, const int** sorted_indices, int* sample_indices_buf ) +{ + int vidx = var_idx ? var_idx->data.i[vi] : vi; + int node_sample_count = n->sample_count; + int td_step = train_data->step/CV_ELEM_SIZE(train_data->type); + + const int* sample_indices = get_sample_indices(n, sample_indices_buf); + + if( !is_buf_16u ) + *sorted_indices = buf->data.i + n->buf_idx*get_length_subbuf() + + vi*sample_count + n->offset; + else { + const unsigned short* short_indices = (const unsigned short*)(buf->data.s + n->buf_idx*get_length_subbuf() + + vi*sample_count + n->offset ); + for( int i = 0; i < node_sample_count; i++ ) + sorted_indices_buf[i] = short_indices[i]; + *sorted_indices = sorted_indices_buf; + } + + if( tflag == CV_ROW_SAMPLE ) + { + for( int i = 0; i < node_sample_count && + ((((*sorted_indices)[i] >= 0) && !is_buf_16u) || (((*sorted_indices)[i] != 65535) && is_buf_16u)); i++ ) + { + int idx = (*sorted_indices)[i]; + idx = sample_indices[idx]; + ord_values_buf[i] = *(train_data->data.fl + idx * td_step + vidx); + } + } + else + for( int i = 0; i < node_sample_count && + ((((*sorted_indices)[i] >= 0) && !is_buf_16u) || (((*sorted_indices)[i] != 65535) && is_buf_16u)); i++ ) + { + int idx = (*sorted_indices)[i]; + idx = sample_indices[idx]; + ord_values_buf[i] = *(train_data->data.fl + vidx* td_step + idx); + } + + *ord_values = ord_values_buf; +} + + +const int* CvDTreeTrainData::get_class_labels( CvDTreeNode* n, int* labels_buf ) +{ + if (is_classifier) + return get_cat_var_data( n, var_count, labels_buf); + return 0; +} + +const int* CvDTreeTrainData::get_sample_indices( CvDTreeNode* n, int* indices_buf ) +{ + return get_cat_var_data( n, get_work_var_count(), indices_buf ); +} + +const float* CvDTreeTrainData::get_ord_responses( CvDTreeNode* n, float* values_buf, int*sample_indices_buf ) +{ + int _sample_count = n->sample_count; + int r_step = CV_IS_MAT_CONT(responses->type) ? 1 : responses->step/CV_ELEM_SIZE(responses->type); + const int* indices = get_sample_indices(n, sample_indices_buf); + + for( int i = 0; i < _sample_count && + (((indices[i] >= 0) && !is_buf_16u) || ((indices[i] != 65535) && is_buf_16u)); i++ ) + { + int idx = indices[i]; + values_buf[i] = *(responses->data.fl + idx * r_step); + } + + return values_buf; +} + + +const int* CvDTreeTrainData::get_cv_labels( CvDTreeNode* n, int* labels_buf ) +{ + if (have_labels) + return get_cat_var_data( n, get_work_var_count()- 1, labels_buf); + return 0; +} + + +const int* CvDTreeTrainData::get_cat_var_data( CvDTreeNode* n, int vi, int* cat_values_buf) +{ + const int* cat_values = 0; + if( !is_buf_16u ) + cat_values = buf->data.i + n->buf_idx*get_length_subbuf() + + vi*sample_count + n->offset; + else { + const unsigned short* short_values = (const unsigned short*)(buf->data.s + n->buf_idx*get_length_subbuf() + + vi*sample_count + n->offset); + for( int i = 0; i < n->sample_count; i++ ) + cat_values_buf[i] = short_values[i]; + cat_values = cat_values_buf; + } + return cat_values; +} + + +int CvDTreeTrainData::get_child_buf_idx( CvDTreeNode* n ) +{ + int idx = n->buf_idx + 1; + if( idx >= buf_count ) + idx = shared ? 1 : 0; + return idx; +} + + +void CvDTreeTrainData::write_params( CvFileStorage* fs ) const +{ + CV_FUNCNAME( "CvDTreeTrainData::write_params" ); + + __BEGIN__; + + int vi, vcount = var_count; + + cvWriteInt( fs, "is_classifier", is_classifier ? 1 : 0 ); + cvWriteInt( fs, "var_all", var_all ); + cvWriteInt( fs, "var_count", var_count ); + cvWriteInt( fs, "ord_var_count", ord_var_count ); + cvWriteInt( fs, "cat_var_count", cat_var_count ); + + cvStartWriteStruct( fs, "training_params", CV_NODE_MAP ); + cvWriteInt( fs, "use_surrogates", params.use_surrogates ? 1 : 0 ); + + if( is_classifier ) + { + cvWriteInt( fs, "max_categories", params.max_categories ); + } + else + { + cvWriteReal( fs, "regression_accuracy", params.regression_accuracy ); + } + + cvWriteInt( fs, "max_depth", params.max_depth ); + cvWriteInt( fs, "min_sample_count", params.min_sample_count ); + cvWriteInt( fs, "cross_validation_folds", params.cv_folds ); + + if( params.cv_folds > 1 ) + { + cvWriteInt( fs, "use_1se_rule", params.use_1se_rule ? 1 : 0 ); + cvWriteInt( fs, "truncate_pruned_tree", params.truncate_pruned_tree ? 1 : 0 ); + } + + if( priors ) + cvWrite( fs, "priors", priors ); + + cvEndWriteStruct( fs ); + + if( var_idx ) + cvWrite( fs, "var_idx", var_idx ); + + cvStartWriteStruct( fs, "var_type", CV_NODE_SEQ+CV_NODE_FLOW ); + + for( vi = 0; vi < vcount; vi++ ) + cvWriteInt( fs, 0, var_type->data.i[vi] >= 0 ); + + cvEndWriteStruct( fs ); + + if( cat_count && (cat_var_count > 0 || is_classifier) ) + { + CV_ASSERT( cat_count != 0 ); + cvWrite( fs, "cat_count", cat_count ); + cvWrite( fs, "cat_map", cat_map ); + } + + __END__; +} + + +void CvDTreeTrainData::read_params( CvFileStorage* fs, CvFileNode* node ) +{ + CV_FUNCNAME( "CvDTreeTrainData::read_params" ); + + __BEGIN__; + + CvFileNode *tparams_node, *vartype_node; + CvSeqReader reader; + int vi, max_split_size, tree_block_size; + + is_classifier = (cvReadIntByName( fs, node, "is_classifier" ) != 0); + var_all = cvReadIntByName( fs, node, "var_all" ); + var_count = cvReadIntByName( fs, node, "var_count", var_all ); + cat_var_count = cvReadIntByName( fs, node, "cat_var_count" ); + ord_var_count = cvReadIntByName( fs, node, "ord_var_count" ); + + tparams_node = cvGetFileNodeByName( fs, node, "training_params" ); + + if( tparams_node ) // training parameters are not necessary + { + params.use_surrogates = cvReadIntByName( fs, tparams_node, "use_surrogates", 1 ) != 0; + + if( is_classifier ) + { + params.max_categories = cvReadIntByName( fs, tparams_node, "max_categories" ); + } + else + { + params.regression_accuracy = + (float)cvReadRealByName( fs, tparams_node, "regression_accuracy" ); + } + + params.max_depth = cvReadIntByName( fs, tparams_node, "max_depth" ); + params.min_sample_count = cvReadIntByName( fs, tparams_node, "min_sample_count" ); + params.cv_folds = cvReadIntByName( fs, tparams_node, "cross_validation_folds" ); + + if( params.cv_folds > 1 ) + { + params.use_1se_rule = cvReadIntByName( fs, tparams_node, "use_1se_rule" ) != 0; + params.truncate_pruned_tree = + cvReadIntByName( fs, tparams_node, "truncate_pruned_tree" ) != 0; + } + + priors = (CvMat*)cvReadByName( fs, tparams_node, "priors" ); + if( priors ) + { + if( !CV_IS_MAT(priors) ) + CV_ERROR( CV_StsParseError, "priors must stored as a matrix" ); + priors_mult = cvCloneMat( priors ); + } + } + + CV_CALL( var_idx = (CvMat*)cvReadByName( fs, node, "var_idx" )); + if( var_idx ) + { + if( !CV_IS_MAT(var_idx) || + (var_idx->cols != 1 && var_idx->rows != 1) || + var_idx->cols + var_idx->rows - 1 != var_count || + CV_MAT_TYPE(var_idx->type) != CV_32SC1 ) + CV_ERROR( CV_StsParseError, + "var_idx (if exist) must be valid 1d integer vector containing elements" ); + + for( vi = 0; vi < var_count; vi++ ) + if( (unsigned)var_idx->data.i[vi] >= (unsigned)var_all ) + CV_ERROR( CV_StsOutOfRange, "some of var_idx elements are out of range" ); + } + + ////// read var type + CV_CALL( var_type = cvCreateMat( 1, var_count + 2, CV_32SC1 )); + + cat_var_count = 0; + ord_var_count = -1; + vartype_node = cvGetFileNodeByName( fs, node, "var_type" ); + + if( vartype_node && CV_NODE_TYPE(vartype_node->tag) == CV_NODE_INT && var_count == 1 ) + var_type->data.i[0] = vartype_node->data.i ? cat_var_count++ : ord_var_count--; + else + { + if( !vartype_node || CV_NODE_TYPE(vartype_node->tag) != CV_NODE_SEQ || + vartype_node->data.seq->total != var_count ) + CV_ERROR( CV_StsParseError, "var_type must exist and be a sequence of 0's and 1's" ); + + cvStartReadSeq( vartype_node->data.seq, &reader ); + + for( vi = 0; vi < var_count; vi++ ) + { + CvFileNode* n = (CvFileNode*)reader.ptr; + if( CV_NODE_TYPE(n->tag) != CV_NODE_INT || (n->data.i & ~1) ) + CV_ERROR( CV_StsParseError, "var_type must exist and be a sequence of 0's and 1's" ); + var_type->data.i[vi] = n->data.i ? cat_var_count++ : ord_var_count--; + CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); + } + } + var_type->data.i[var_count] = cat_var_count; + + ord_var_count = ~ord_var_count; + ////// + + if( cat_var_count > 0 || is_classifier ) + { + int ccount, total_c_count = 0; + CV_CALL( cat_count = (CvMat*)cvReadByName( fs, node, "cat_count" )); + CV_CALL( cat_map = (CvMat*)cvReadByName( fs, node, "cat_map" )); + + if( !CV_IS_MAT(cat_count) || !CV_IS_MAT(cat_map) || + (cat_count->cols != 1 && cat_count->rows != 1) || + CV_MAT_TYPE(cat_count->type) != CV_32SC1 || + cat_count->cols + cat_count->rows - 1 != cat_var_count + is_classifier || + (cat_map->cols != 1 && cat_map->rows != 1) || + CV_MAT_TYPE(cat_map->type) != CV_32SC1 ) + CV_ERROR( CV_StsParseError, + "Both cat_count and cat_map must exist and be valid 1d integer vectors of an appropriate size" ); + + ccount = cat_var_count + is_classifier; + + CV_CALL( cat_ofs = cvCreateMat( 1, ccount + 1, CV_32SC1 )); + cat_ofs->data.i[0] = 0; + max_c_count = 1; + + for( vi = 0; vi < ccount; vi++ ) + { + int val = cat_count->data.i[vi]; + if( val <= 0 ) + CV_ERROR( CV_StsOutOfRange, "some of cat_count elements are out of range" ); + max_c_count = MAX( max_c_count, val ); + cat_ofs->data.i[vi+1] = total_c_count += val; + } + + if( cat_map->cols + cat_map->rows - 1 != total_c_count ) + CV_ERROR( CV_StsBadSize, + "cat_map vector length is not equal to the total number of categories in all categorical vars" ); + } + + max_split_size = cvAlign(sizeof(CvDTreeSplit) + + (MAX(0,max_c_count - 33)/32)*sizeof(int),sizeof(void*)); + + tree_block_size = MAX((int)sizeof(CvDTreeNode)*8, max_split_size); + tree_block_size = MAX(tree_block_size + block_size_delta, min_block_size); + CV_CALL( tree_storage = cvCreateMemStorage( tree_block_size )); + CV_CALL( node_heap = cvCreateSet( 0, sizeof(node_heap[0]), + sizeof(CvDTreeNode), tree_storage )); + CV_CALL( split_heap = cvCreateSet( 0, sizeof(split_heap[0]), + max_split_size, tree_storage )); + + __END__; +} + +/////////////////////// Decision Tree ///////////////////////// +CvDTreeParams::CvDTreeParams() : max_categories(10), max_depth(INT_MAX), min_sample_count(10), + cv_folds(10), use_surrogates(true), use_1se_rule(true), + truncate_pruned_tree(true), regression_accuracy(0.01f), priors(0) +{} + +CvDTreeParams::CvDTreeParams( int _max_depth, int _min_sample_count, + float _regression_accuracy, bool _use_surrogates, + int _max_categories, int _cv_folds, + bool _use_1se_rule, bool _truncate_pruned_tree, + const float* _priors ) : + max_categories(_max_categories), max_depth(_max_depth), + min_sample_count(_min_sample_count), cv_folds (_cv_folds), + use_surrogates(_use_surrogates), use_1se_rule(_use_1se_rule), + truncate_pruned_tree(_truncate_pruned_tree), + regression_accuracy(_regression_accuracy), + priors(_priors) +{} + +CvDTree::CvDTree() +{ + data = 0; + var_importance = 0; + default_model_name = "my_tree"; + + clear(); +} + + +void CvDTree::clear() +{ + cvReleaseMat( &var_importance ); + if( data ) + { + if( !data->shared ) + delete data; + else + free_tree(); + data = 0; + } + root = 0; + pruned_tree_idx = -1; +} + + +CvDTree::~CvDTree() +{ + clear(); +} + + +const CvDTreeNode* CvDTree::get_root() const +{ + return root; +} + + +int CvDTree::get_pruned_tree_idx() const +{ + return pruned_tree_idx; +} + + +CvDTreeTrainData* CvDTree::get_data() +{ + return data; +} + + +bool CvDTree::train( const CvMat* _train_data, int _tflag, + const CvMat* _responses, const CvMat* _var_idx, + const CvMat* _sample_idx, const CvMat* _var_type, + const CvMat* _missing_mask, CvDTreeParams _params ) +{ + bool result = false; + + CV_FUNCNAME( "CvDTree::train" ); + + __BEGIN__; + + clear(); + data = new CvDTreeTrainData( _train_data, _tflag, _responses, + _var_idx, _sample_idx, _var_type, + _missing_mask, _params, false ); + CV_CALL( result = do_train(0) ); + + __END__; + + return result; +} + +bool CvDTree::train( const Mat& _train_data, int _tflag, + const Mat& _responses, const Mat& _var_idx, + const Mat& _sample_idx, const Mat& _var_type, + const Mat& _missing_mask, CvDTreeParams _params ) +{ + train_data_hdr = _train_data; + train_data_mat = _train_data; + responses_hdr = _responses; + responses_mat = _responses; + + CvMat vidx=_var_idx, sidx=_sample_idx, vtype=_var_type, mmask=_missing_mask; + + return train(&train_data_hdr, _tflag, &responses_hdr, vidx.data.ptr ? &vidx : 0, sidx.data.ptr ? &sidx : 0, + vtype.data.ptr ? &vtype : 0, mmask.data.ptr ? &mmask : 0, _params); +} + + +bool CvDTree::train( CvMLData* _data, CvDTreeParams _params ) +{ + bool result = false; + + CV_FUNCNAME( "CvDTree::train" ); + + __BEGIN__; + + const CvMat* values = _data->get_values(); + const CvMat* response = _data->get_responses(); + const CvMat* missing = _data->get_missing(); + const CvMat* var_types = _data->get_var_types(); + const CvMat* train_sidx = _data->get_train_sample_idx(); + const CvMat* var_idx = _data->get_var_idx(); + + CV_CALL( result = train( values, CV_ROW_SAMPLE, response, var_idx, + train_sidx, var_types, missing, _params ) ); + + __END__; + + return result; +} + +bool CvDTree::train( CvDTreeTrainData* _data, const CvMat* _subsample_idx ) +{ + bool result = false; + + CV_FUNCNAME( "CvDTree::train" ); + + __BEGIN__; + + clear(); + data = _data; + data->shared = true; + CV_CALL( result = do_train(_subsample_idx)); + + __END__; + + return result; +} + + +bool CvDTree::do_train( const CvMat* _subsample_idx ) +{ + bool result = false; + + CV_FUNCNAME( "CvDTree::do_train" ); + + __BEGIN__; + + root = data->subsample_data( _subsample_idx ); + + CV_CALL( try_split_node(root)); + + if( root->split ) + { + CV_Assert( root->left ); + CV_Assert( root->right ); + + if( data->params.cv_folds > 0 ) + CV_CALL( prune_cv() ); + + if( !data->shared ) + data->free_train_data(); + + result = true; + } + + __END__; + + return result; +} + + +void CvDTree::try_split_node( CvDTreeNode* node ) +{ + CvDTreeSplit* best_split = 0; + int i, n = node->sample_count, vi; + bool can_split = true; + double quality_scale; + + calc_node_value( node ); + + if( node->sample_count <= data->params.min_sample_count || + node->depth >= data->params.max_depth ) + can_split = false; + + if( can_split && data->is_classifier ) + { + // check if we have a "pure" node, + // we assume that cls_count is filled by calc_node_value() + int* cls_count = data->counts->data.i; + int nz = 0, m = data->get_num_classes(); + for( i = 0; i < m; i++ ) + nz += cls_count[i] != 0; + if( nz == 1 ) // there is only one class + can_split = false; + } + else if( can_split ) + { + if( sqrt(node->node_risk)/n < data->params.regression_accuracy ) + can_split = false; + } + + if( can_split ) + { + best_split = find_best_split(node); + // TODO: check the split quality ... + node->split = best_split; + } + if( !can_split || !best_split ) + { + data->free_node_data(node); + return; + } + + quality_scale = calc_node_dir( node ); + if( data->params.use_surrogates ) + { + // find all the surrogate splits + // and sort them by their similarity to the primary one + for( vi = 0; vi < data->var_count; vi++ ) + { + CvDTreeSplit* split; + int ci = data->get_var_type(vi); + + if( vi == best_split->var_idx ) + continue; + + if( ci >= 0 ) + split = find_surrogate_split_cat( node, vi ); + else + split = find_surrogate_split_ord( node, vi ); + + if( split ) + { + // insert the split + CvDTreeSplit* prev_split = node->split; + split->quality = (float)(split->quality*quality_scale); + + while( prev_split->next && + prev_split->next->quality > split->quality ) + prev_split = prev_split->next; + split->next = prev_split->next; + prev_split->next = split; + } + } + } + split_node_data( node ); + try_split_node( node->left ); + try_split_node( node->right ); +} + + +// calculate direction (left(-1),right(1),missing(0)) +// for each sample using the best split +// the function returns scale coefficients for surrogate split quality factors. +// the scale is applied to normalize surrogate split quality relatively to the +// best (primary) split quality. That is, if a surrogate split is absolutely +// identical to the primary split, its quality will be set to the maximum value = +// quality of the primary split; otherwise, it will be lower. +// besides, the function compute node->maxlr, +// minimum possible quality (w/o considering the above mentioned scale) +// for a surrogate split. Surrogate splits with quality less than node->maxlr +// are not discarded. +double CvDTree::calc_node_dir( CvDTreeNode* node ) +{ + char* dir = (char*)data->direction->data.ptr; + int i, n = node->sample_count, vi = node->split->var_idx; + double L, R; + + assert( !node->split->inversed ); + + if( data->get_var_type(vi) >= 0 ) // split on categorical var + { + cv::AutoBuffer inn_buf(n*(!data->have_priors ? 1 : 2)); + int* labels_buf = (int*)inn_buf; + const int* labels = data->get_cat_var_data( node, vi, labels_buf ); + const int* subset = node->split->subset; + if( !data->have_priors ) + { + int sum = 0, sum_abs = 0; + + for( i = 0; i < n; i++ ) + { + int idx = labels[i]; + int d = ( ((idx >= 0)&&(!data->is_buf_16u)) || ((idx != 65535)&&(data->is_buf_16u)) ) ? + CV_DTREE_CAT_DIR(idx,subset) : 0; + sum += d; sum_abs += d & 1; + dir[i] = (char)d; + } + + R = (sum_abs + sum) >> 1; + L = (sum_abs - sum) >> 1; + } + else + { + const double* priors = data->priors_mult->data.db; + double sum = 0, sum_abs = 0; + int* responses_buf = labels_buf + n; + const int* responses = data->get_class_labels(node, responses_buf); + + for( i = 0; i < n; i++ ) + { + int idx = labels[i]; + double w = priors[responses[i]]; + int d = idx >= 0 ? CV_DTREE_CAT_DIR(idx,subset) : 0; + sum += d*w; sum_abs += (d & 1)*w; + dir[i] = (char)d; + } + + R = (sum_abs + sum) * 0.5; + L = (sum_abs - sum) * 0.5; + } + } + else // split on ordered var + { + int split_point = node->split->ord.split_point; + int n1 = node->get_num_valid(vi); + cv::AutoBuffer inn_buf(n*(sizeof(int)*(data->have_priors ? 3 : 2) + sizeof(float))); + float* val_buf = (float*)(uchar*)inn_buf; + int* sorted_buf = (int*)(val_buf + n); + int* sample_idx_buf = sorted_buf + n; + const float* val = 0; + const int* sorted = 0; + data->get_ord_var_data( node, vi, val_buf, sorted_buf, &val, &sorted, sample_idx_buf); + + assert( 0 <= split_point && split_point < n1-1 ); + + if( !data->have_priors ) + { + for( i = 0; i <= split_point; i++ ) + dir[sorted[i]] = (char)-1; + for( ; i < n1; i++ ) + dir[sorted[i]] = (char)1; + for( ; i < n; i++ ) + dir[sorted[i]] = (char)0; + + L = split_point-1; + R = n1 - split_point + 1; + } + else + { + const double* priors = data->priors_mult->data.db; + int* responses_buf = sample_idx_buf + n; + const int* responses = data->get_class_labels(node, responses_buf); + L = R = 0; + + for( i = 0; i <= split_point; i++ ) + { + int idx = sorted[i]; + double w = priors[responses[idx]]; + dir[idx] = (char)-1; + L += w; + } + + for( ; i < n1; i++ ) + { + int idx = sorted[i]; + double w = priors[responses[idx]]; + dir[idx] = (char)1; + R += w; + } + + for( ; i < n; i++ ) + dir[sorted[i]] = (char)0; + } + } + node->maxlr = MAX( L, R ); + return node->split->quality/(L + R); +} + + +namespace cv +{ + +template<> CV_EXPORTS void DefaultDeleter::operator ()(CvDTreeSplit* obj) const +{ + fastFree(obj); +} + +DTreeBestSplitFinder::DTreeBestSplitFinder( CvDTree* _tree, CvDTreeNode* _node) +{ + tree = _tree; + node = _node; + splitSize = tree->get_data()->split_heap->elem_size; + + bestSplit.reset((CvDTreeSplit*)fastMalloc(splitSize)); + memset(bestSplit.get(), 0, splitSize); + bestSplit->quality = -1; + bestSplit->condensed_idx = INT_MIN; + split.reset((CvDTreeSplit*)fastMalloc(splitSize)); + memset(split.get(), 0, splitSize); + //haveSplit = false; +} + +DTreeBestSplitFinder::DTreeBestSplitFinder( const DTreeBestSplitFinder& finder, Split ) +{ + tree = finder.tree; + node = finder.node; + splitSize = tree->get_data()->split_heap->elem_size; + + bestSplit.reset((CvDTreeSplit*)fastMalloc(splitSize)); + memcpy(bestSplit.get(), finder.bestSplit.get(), splitSize); + split.reset((CvDTreeSplit*)fastMalloc(splitSize)); + memset(split.get(), 0, splitSize); +} + +void DTreeBestSplitFinder::operator()(const BlockedRange& range) +{ + int vi, vi1 = range.begin(), vi2 = range.end(); + int n = node->sample_count; + CvDTreeTrainData* data = tree->get_data(); + AutoBuffer inn_buf(2*n*(sizeof(int) + sizeof(float))); + + for( vi = vi1; vi < vi2; vi++ ) + { + CvDTreeSplit *res; + int ci = data->get_var_type(vi); + if( node->get_num_valid(vi) <= 1 ) + continue; + + if( data->is_classifier ) + { + if( ci >= 0 ) + res = tree->find_split_cat_class( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); + else + res = tree->find_split_ord_class( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); + } + else + { + if( ci >= 0 ) + res = tree->find_split_cat_reg( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); + else + res = tree->find_split_ord_reg( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); + } + + if( res && bestSplit->quality < split->quality ) + memcpy( bestSplit.get(), split.get(), splitSize ); + } +} + +void DTreeBestSplitFinder::join( DTreeBestSplitFinder& rhs ) +{ + if( bestSplit->quality < rhs.bestSplit->quality ) + memcpy( bestSplit.get(), rhs.bestSplit.get(), splitSize ); +} +} + + +CvDTreeSplit* CvDTree::find_best_split( CvDTreeNode* node ) +{ + DTreeBestSplitFinder finder( this, node ); + + cv::parallel_reduce(cv::BlockedRange(0, data->var_count), finder); + + CvDTreeSplit *bestSplit = 0; + if( finder.bestSplit->quality > 0 ) + { + bestSplit = data->new_split_cat( 0, -1.0f ); + memcpy( bestSplit, finder.bestSplit, finder.splitSize ); + } + + return bestSplit; +} + +CvDTreeSplit* CvDTree::find_split_ord_class( CvDTreeNode* node, int vi, + float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) +{ + const float epsilon = FLT_EPSILON*2; + int n = node->sample_count; + int n1 = node->get_num_valid(vi); + int m = data->get_num_classes(); + + int base_size = 2*m*sizeof(int); + cv::AutoBuffer inn_buf(base_size); + if( !_ext_buf ) + inn_buf.allocate(base_size + n*(3*sizeof(int)+sizeof(float))); + uchar* base_buf = (uchar*)inn_buf; + uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; + float* values_buf = (float*)ext_buf; + int* sorted_indices_buf = (int*)(values_buf + n); + int* sample_indices_buf = sorted_indices_buf + n; + const float* values = 0; + const int* sorted_indices = 0; + data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, + &sorted_indices, sample_indices_buf ); + int* responses_buf = sample_indices_buf + n; + const int* responses = data->get_class_labels( node, responses_buf ); + + const int* rc0 = data->counts->data.i; + int* lc = (int*)base_buf; + int* rc = lc + m; + int i, best_i = -1; + double lsum2 = 0, rsum2 = 0, best_val = init_quality; + const double* priors = data->have_priors ? data->priors_mult->data.db : 0; + + // init arrays of class instance counters on both sides of the split + for( i = 0; i < m; i++ ) + { + lc[i] = 0; + rc[i] = rc0[i]; + } + + // compensate for missing values + for( i = n1; i < n; i++ ) + { + rc[responses[sorted_indices[i]]]--; + } + + if( !priors ) + { + int L = 0, R = n1; + + for( i = 0; i < m; i++ ) + rsum2 += (double)rc[i]*rc[i]; + + for( i = 0; i < n1 - 1; i++ ) + { + int idx = responses[sorted_indices[i]]; + int lv, rv; + L++; R--; + lv = lc[idx]; rv = rc[idx]; + lsum2 += lv*2 + 1; + rsum2 -= rv*2 - 1; + lc[idx] = lv + 1; rc[idx] = rv - 1; + + if( values[i] + epsilon < values[i+1] ) + { + double val = (lsum2*R + rsum2*L)/((double)L*R); + if( best_val < val ) + { + best_val = val; + best_i = i; + } + } + } + } + else + { + double L = 0, R = 0; + for( i = 0; i < m; i++ ) + { + double wv = rc[i]*priors[i]; + R += wv; + rsum2 += wv*wv; + } + + for( i = 0; i < n1 - 1; i++ ) + { + int idx = responses[sorted_indices[i]]; + int lv, rv; + double p = priors[idx], p2 = p*p; + L += p; R -= p; + lv = lc[idx]; rv = rc[idx]; + lsum2 += p2*(lv*2 + 1); + rsum2 -= p2*(rv*2 - 1); + lc[idx] = lv + 1; rc[idx] = rv - 1; + + if( values[i] + epsilon < values[i+1] ) + { + double val = (lsum2*R + rsum2*L)/((double)L*R); + if( best_val < val ) + { + best_val = val; + best_i = i; + } + } + } + } + + CvDTreeSplit* split = 0; + if( best_i >= 0 ) + { + split = _split ? _split : data->new_split_ord( 0, 0.0f, 0, 0, 0.0f ); + split->var_idx = vi; + split->ord.c = (values[best_i] + values[best_i+1])*0.5f; + split->ord.split_point = best_i; + split->inversed = 0; + split->quality = (float)best_val; + } + return split; +} + + +void CvDTree::cluster_categories( const int* vectors, int n, int m, + int* csums, int k, int* labels ) +{ + // TODO: consider adding priors (class weights) and sample weights to the clustering algorithm + int iters = 0, max_iters = 100; + int i, j, idx; + cv::AutoBuffer buf(n + k); + double *v_weights = buf, *c_weights = buf + n; + bool modified = true; + RNG* r = data->rng; + + // assign labels randomly + for( i = 0; i < n; i++ ) + { + int sum = 0; + const int* v = vectors + i*m; + labels[i] = i < k ? i : r->uniform(0, k); + + // compute weight of each vector + for( j = 0; j < m; j++ ) + sum += v[j]; + v_weights[i] = sum ? 1./sum : 0.; + } + + for( i = 0; i < n; i++ ) + { + int i1 = (*r)(n); + int i2 = (*r)(n); + CV_SWAP( labels[i1], labels[i2], j ); + } + + for( iters = 0; iters <= max_iters; iters++ ) + { + // calculate csums + for( i = 0; i < k; i++ ) + { + for( j = 0; j < m; j++ ) + csums[i*m + j] = 0; + } + + for( i = 0; i < n; i++ ) + { + const int* v = vectors + i*m; + int* s = csums + labels[i]*m; + for( j = 0; j < m; j++ ) + s[j] += v[j]; + } + + // exit the loop here, when we have up-to-date csums + if( iters == max_iters || !modified ) + break; + + modified = false; + + // calculate weight of each cluster + for( i = 0; i < k; i++ ) + { + const int* s = csums + i*m; + int sum = 0; + for( j = 0; j < m; j++ ) + sum += s[j]; + c_weights[i] = sum ? 1./sum : 0; + } + + // now for each vector determine the closest cluster + for( i = 0; i < n; i++ ) + { + const int* v = vectors + i*m; + double alpha = v_weights[i]; + double min_dist2 = DBL_MAX; + int min_idx = -1; + + for( idx = 0; idx < k; idx++ ) + { + const int* s = csums + idx*m; + double dist2 = 0., beta = c_weights[idx]; + for( j = 0; j < m; j++ ) + { + double t = v[j]*alpha - s[j]*beta; + dist2 += t*t; + } + if( min_dist2 > dist2 ) + { + min_dist2 = dist2; + min_idx = idx; + } + } + + if( min_idx != labels[i] ) + modified = true; + labels[i] = min_idx; + } + } +} + + +CvDTreeSplit* CvDTree::find_split_cat_class( CvDTreeNode* node, int vi, float init_quality, + CvDTreeSplit* _split, uchar* _ext_buf ) +{ + int ci = data->get_var_type(vi); + int n = node->sample_count; + int m = data->get_num_classes(); + int _mi = data->cat_count->data.i[ci], mi = _mi; + + int base_size = m*(3 + mi)*sizeof(int) + (mi+1)*sizeof(double); + if( m > 2 && mi > data->params.max_categories ) + base_size += (m*std::min(data->params.max_categories, n) + mi)*sizeof(int); + else + base_size += mi*sizeof(int*); + cv::AutoBuffer inn_buf(base_size); + if( !_ext_buf ) + inn_buf.allocate(base_size + 2*n*sizeof(int)); + uchar* base_buf = (uchar*)inn_buf; + uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; + + int* lc = (int*)base_buf; + int* rc = lc + m; + int* _cjk = rc + m*2, *cjk = _cjk; + double* c_weights = (double*)alignPtr(cjk + m*mi, sizeof(double)); + + int* labels_buf = (int*)ext_buf; + const int* labels = data->get_cat_var_data(node, vi, labels_buf); + int* responses_buf = labels_buf + n; + const int* responses = data->get_class_labels(node, responses_buf); + + int* cluster_labels = 0; + int** int_ptr = 0; + int i, j, k, idx; + double L = 0, R = 0; + double best_val = init_quality; + int prevcode = 0, best_subset = -1, subset_i, subset_n, subtract = 0; + const double* priors = data->priors_mult->data.db; + + // init array of counters: + // c_{jk} - number of samples that have vi-th input variable = j and response = k. + for( j = -1; j < mi; j++ ) + for( k = 0; k < m; k++ ) + cjk[j*m + k] = 0; + + for( i = 0; i < n; i++ ) + { + j = ( labels[i] == 65535 && data->is_buf_16u) ? -1 : labels[i]; + k = responses[i]; + cjk[j*m + k]++; + } + + if( m > 2 ) + { + if( mi > data->params.max_categories ) + { + mi = MIN(data->params.max_categories, n); + cjk = (int*)(c_weights + _mi); + cluster_labels = cjk + m*mi; + cluster_categories( _cjk, _mi, m, cjk, mi, cluster_labels ); + } + subset_i = 1; + subset_n = 1 << mi; + } + else + { + assert( m == 2 ); + int_ptr = (int**)(c_weights + _mi); + for( j = 0; j < mi; j++ ) + int_ptr[j] = cjk + j*2 + 1; + std::sort(int_ptr, int_ptr + mi, LessThanPtr()); + subset_i = 0; + subset_n = mi; + } + + for( k = 0; k < m; k++ ) + { + int sum = 0; + for( j = 0; j < mi; j++ ) + sum += cjk[j*m + k]; + rc[k] = sum; + lc[k] = 0; + } + + for( j = 0; j < mi; j++ ) + { + double sum = 0; + for( k = 0; k < m; k++ ) + sum += cjk[j*m + k]*priors[k]; + c_weights[j] = sum; + R += c_weights[j]; + } + + for( ; subset_i < subset_n; subset_i++ ) + { + double weight; + int* crow; + double lsum2 = 0, rsum2 = 0; + + if( m == 2 ) + idx = (int)(int_ptr[subset_i] - cjk)/2; + else + { + int graycode = (subset_i>>1)^subset_i; + int diff = graycode ^ prevcode; + + // determine index of the changed bit. + Cv32suf u; + idx = diff >= (1 << 16) ? 16 : 0; + u.f = (float)(((diff >> 16) | diff) & 65535); + idx += (u.i >> 23) - 127; + subtract = graycode < prevcode; + prevcode = graycode; + } + + crow = cjk + idx*m; + weight = c_weights[idx]; + if( weight < FLT_EPSILON ) + continue; + + if( !subtract ) + { + for( k = 0; k < m; k++ ) + { + int t = crow[k]; + int lval = lc[k] + t; + int rval = rc[k] - t; + double p = priors[k], p2 = p*p; + lsum2 += p2*lval*lval; + rsum2 += p2*rval*rval; + lc[k] = lval; rc[k] = rval; + } + L += weight; + R -= weight; + } + else + { + for( k = 0; k < m; k++ ) + { + int t = crow[k]; + int lval = lc[k] - t; + int rval = rc[k] + t; + double p = priors[k], p2 = p*p; + lsum2 += p2*lval*lval; + rsum2 += p2*rval*rval; + lc[k] = lval; rc[k] = rval; + } + L -= weight; + R += weight; + } + + if( L > FLT_EPSILON && R > FLT_EPSILON ) + { + double val = (lsum2*R + rsum2*L)/((double)L*R); + if( best_val < val ) + { + best_val = val; + best_subset = subset_i; + } + } + } + + CvDTreeSplit* split = 0; + if( best_subset >= 0 ) + { + split = _split ? _split : data->new_split_cat( 0, -1.0f ); + split->var_idx = vi; + split->quality = (float)best_val; + memset( split->subset, 0, (data->max_c_count + 31)/32 * sizeof(int)); + if( m == 2 ) + { + for( i = 0; i <= best_subset; i++ ) + { + idx = (int)(int_ptr[i] - cjk) >> 1; + split->subset[idx >> 5] |= 1 << (idx & 31); + } + } + else + { + for( i = 0; i < _mi; i++ ) + { + idx = cluster_labels ? cluster_labels[i] : i; + if( best_subset & (1 << idx) ) + split->subset[i >> 5] |= 1 << (i & 31); + } + } + } + return split; +} + + +CvDTreeSplit* CvDTree::find_split_ord_reg( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) +{ + const float epsilon = FLT_EPSILON*2; + int n = node->sample_count; + int n1 = node->get_num_valid(vi); + + cv::AutoBuffer inn_buf; + if( !_ext_buf ) + inn_buf.allocate(2*n*(sizeof(int) + sizeof(float))); + uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; + float* values_buf = (float*)ext_buf; + int* sorted_indices_buf = (int*)(values_buf + n); + int* sample_indices_buf = sorted_indices_buf + n; + const float* values = 0; + const int* sorted_indices = 0; + data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, &sorted_indices, sample_indices_buf ); + float* responses_buf = (float*)(sample_indices_buf + n); + const float* responses = data->get_ord_responses( node, responses_buf, sample_indices_buf ); + + int i, best_i = -1; + double best_val = init_quality, lsum = 0, rsum = node->value*n; + int L = 0, R = n1; + + // compensate for missing values + for( i = n1; i < n; i++ ) + rsum -= responses[sorted_indices[i]]; + + // find the optimal split + for( i = 0; i < n1 - 1; i++ ) + { + float t = responses[sorted_indices[i]]; + L++; R--; + lsum += t; + rsum -= t; + + if( values[i] + epsilon < values[i+1] ) + { + double val = (lsum*lsum*R + rsum*rsum*L)/((double)L*R); + if( best_val < val ) + { + best_val = val; + best_i = i; + } + } + } + + CvDTreeSplit* split = 0; + if( best_i >= 0 ) + { + split = _split ? _split : data->new_split_ord( 0, 0.0f, 0, 0, 0.0f ); + split->var_idx = vi; + split->ord.c = (values[best_i] + values[best_i+1])*0.5f; + split->ord.split_point = best_i; + split->inversed = 0; + split->quality = (float)best_val; + } + return split; +} + +CvDTreeSplit* CvDTree::find_split_cat_reg( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) +{ + int ci = data->get_var_type(vi); + int n = node->sample_count; + int mi = data->cat_count->data.i[ci]; + + int base_size = (mi+2)*sizeof(double) + (mi+1)*(sizeof(int) + sizeof(double*)); + cv::AutoBuffer inn_buf(base_size); + if( !_ext_buf ) + inn_buf.allocate(base_size + n*(2*sizeof(int) + sizeof(float))); + uchar* base_buf = (uchar*)inn_buf; + uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; + int* labels_buf = (int*)ext_buf; + const int* labels = data->get_cat_var_data(node, vi, labels_buf); + float* responses_buf = (float*)(labels_buf + n); + int* sample_indices_buf = (int*)(responses_buf + n); + const float* responses = data->get_ord_responses(node, responses_buf, sample_indices_buf); + + double* sum = (double*)cv::alignPtr(base_buf,sizeof(double)) + 1; + int* counts = (int*)(sum + mi) + 1; + double** sum_ptr = (double**)(counts + mi); + int i, L = 0, R = 0; + double best_val = init_quality, lsum = 0, rsum = 0; + int best_subset = -1, subset_i; + + for( i = -1; i < mi; i++ ) + sum[i] = counts[i] = 0; + + // calculate sum response and weight of each category of the input var + for( i = 0; i < n; i++ ) + { + int idx = ( (labels[i] == 65535) && data->is_buf_16u ) ? -1 : labels[i]; + double s = sum[idx] + responses[i]; + int nc = counts[idx] + 1; + sum[idx] = s; + counts[idx] = nc; + } + + // calculate average response in each category + for( i = 0; i < mi; i++ ) + { + R += counts[i]; + rsum += sum[i]; + sum[i] /= MAX(counts[i],1); + sum_ptr[i] = sum + i; + } + + std::sort(sum_ptr, sum_ptr + mi, LessThanPtr()); + + // revert back to unnormalized sums + // (there should be a very little loss of accuracy) + for( i = 0; i < mi; i++ ) + sum[i] *= counts[i]; + + for( subset_i = 0; subset_i < mi-1; subset_i++ ) + { + int idx = (int)(sum_ptr[subset_i] - sum); + int ni = counts[idx]; + + if( ni ) + { + double s = sum[idx]; + lsum += s; L += ni; + rsum -= s; R -= ni; + + if( L && R ) + { + double val = (lsum*lsum*R + rsum*rsum*L)/((double)L*R); + if( best_val < val ) + { + best_val = val; + best_subset = subset_i; + } + } + } + } + + CvDTreeSplit* split = 0; + if( best_subset >= 0 ) + { + split = _split ? _split : data->new_split_cat( 0, -1.0f); + split->var_idx = vi; + split->quality = (float)best_val; + memset( split->subset, 0, (data->max_c_count + 31)/32 * sizeof(int)); + for( i = 0; i <= best_subset; i++ ) + { + int idx = (int)(sum_ptr[i] - sum); + split->subset[idx >> 5] |= 1 << (idx & 31); + } + } + return split; +} + +CvDTreeSplit* CvDTree::find_surrogate_split_ord( CvDTreeNode* node, int vi, uchar* _ext_buf ) +{ + const float epsilon = FLT_EPSILON*2; + const char* dir = (char*)data->direction->data.ptr; + int n = node->sample_count, n1 = node->get_num_valid(vi); + cv::AutoBuffer inn_buf; + if( !_ext_buf ) + inn_buf.allocate( n*(sizeof(int)*(data->have_priors ? 3 : 2) + sizeof(float)) ); + uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; + float* values_buf = (float*)ext_buf; + int* sorted_indices_buf = (int*)(values_buf + n); + int* sample_indices_buf = sorted_indices_buf + n; + const float* values = 0; + const int* sorted_indices = 0; + data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, &sorted_indices, sample_indices_buf ); + // LL - number of samples that both the primary and the surrogate splits send to the left + // LR - ... primary split sends to the left and the surrogate split sends to the right + // RL - ... primary split sends to the right and the surrogate split sends to the left + // RR - ... both send to the right + int i, best_i = -1, best_inversed = 0; + double best_val; + + if( !data->have_priors ) + { + int LL = 0, RL = 0, LR, RR; + int worst_val = cvFloor(node->maxlr), _best_val = worst_val; + int sum = 0, sum_abs = 0; + + for( i = 0; i < n1; i++ ) + { + int d = dir[sorted_indices[i]]; + sum += d; sum_abs += d & 1; + } + + // sum_abs = R + L; sum = R - L + RR = (sum_abs + sum) >> 1; + LR = (sum_abs - sum) >> 1; + + // initially all the samples are sent to the right by the surrogate split, + // LR of them are sent to the left by primary split, and RR - to the right. + // now iteratively compute LL, LR, RL and RR for every possible surrogate split value. + for( i = 0; i < n1 - 1; i++ ) + { + int d = dir[sorted_indices[i]]; + + if( d < 0 ) + { + LL++; LR--; + if( LL + RR > _best_val && values[i] + epsilon < values[i+1] ) + { + best_val = LL + RR; + best_i = i; best_inversed = 0; + } + } + else if( d > 0 ) + { + RL++; RR--; + if( RL + LR > _best_val && values[i] + epsilon < values[i+1] ) + { + best_val = RL + LR; + best_i = i; best_inversed = 1; + } + } + } + best_val = _best_val; + } + else + { + double LL = 0, RL = 0, LR, RR; + double worst_val = node->maxlr; + double sum = 0, sum_abs = 0; + const double* priors = data->priors_mult->data.db; + int* responses_buf = sample_indices_buf + n; + const int* responses = data->get_class_labels(node, responses_buf); + best_val = worst_val; + + for( i = 0; i < n1; i++ ) + { + int idx = sorted_indices[i]; + double w = priors[responses[idx]]; + int d = dir[idx]; + sum += d*w; sum_abs += (d & 1)*w; + } + + // sum_abs = R + L; sum = R - L + RR = (sum_abs + sum)*0.5; + LR = (sum_abs - sum)*0.5; + + // initially all the samples are sent to the right by the surrogate split, + // LR of them are sent to the left by primary split, and RR - to the right. + // now iteratively compute LL, LR, RL and RR for every possible surrogate split value. + for( i = 0; i < n1 - 1; i++ ) + { + int idx = sorted_indices[i]; + double w = priors[responses[idx]]; + int d = dir[idx]; + + if( d < 0 ) + { + LL += w; LR -= w; + if( LL + RR > best_val && values[i] + epsilon < values[i+1] ) + { + best_val = LL + RR; + best_i = i; best_inversed = 0; + } + } + else if( d > 0 ) + { + RL += w; RR -= w; + if( RL + LR > best_val && values[i] + epsilon < values[i+1] ) + { + best_val = RL + LR; + best_i = i; best_inversed = 1; + } + } + } + } + return best_i >= 0 && best_val > node->maxlr ? data->new_split_ord( vi, + (values[best_i] + values[best_i+1])*0.5f, best_i, best_inversed, (float)best_val ) : 0; +} + + +CvDTreeSplit* CvDTree::find_surrogate_split_cat( CvDTreeNode* node, int vi, uchar* _ext_buf ) +{ + const char* dir = (char*)data->direction->data.ptr; + int n = node->sample_count; + int i, mi = data->cat_count->data.i[data->get_var_type(vi)], l_win = 0; + + int base_size = (2*(mi+1)+1)*sizeof(double) + (!data->have_priors ? 2*(mi+1)*sizeof(int) : 0); + cv::AutoBuffer inn_buf(base_size); + if( !_ext_buf ) + inn_buf.allocate(base_size + n*(sizeof(int) + (data->have_priors ? sizeof(int) : 0))); + uchar* base_buf = (uchar*)inn_buf; + uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; + + int* labels_buf = (int*)ext_buf; + const int* labels = data->get_cat_var_data(node, vi, labels_buf); + // LL - number of samples that both the primary and the surrogate splits send to the left + // LR - ... primary split sends to the left and the surrogate split sends to the right + // RL - ... primary split sends to the right and the surrogate split sends to the left + // RR - ... both send to the right + CvDTreeSplit* split = data->new_split_cat( vi, 0 ); + double best_val = 0; + double* lc = (double*)cv::alignPtr(base_buf,sizeof(double)) + 1; + double* rc = lc + mi + 1; + + for( i = -1; i < mi; i++ ) + lc[i] = rc[i] = 0; + + // for each category calculate the weight of samples + // sent to the left (lc) and to the right (rc) by the primary split + if( !data->have_priors ) + { + int* _lc = (int*)rc + 1; + int* _rc = _lc + mi + 1; + + for( i = -1; i < mi; i++ ) + _lc[i] = _rc[i] = 0; + + for( i = 0; i < n; i++ ) + { + int idx = ( (labels[i] == 65535) && (data->is_buf_16u) ) ? -1 : labels[i]; + int d = dir[i]; + int sum = _lc[idx] + d; + int sum_abs = _rc[idx] + (d & 1); + _lc[idx] = sum; _rc[idx] = sum_abs; + } + + for( i = 0; i < mi; i++ ) + { + int sum = _lc[i]; + int sum_abs = _rc[i]; + lc[i] = (sum_abs - sum) >> 1; + rc[i] = (sum_abs + sum) >> 1; + } + } + else + { + const double* priors = data->priors_mult->data.db; + int* responses_buf = labels_buf + n; + const int* responses = data->get_class_labels(node, responses_buf); + + for( i = 0; i < n; i++ ) + { + int idx = ( (labels[i] == 65535) && (data->is_buf_16u) ) ? -1 : labels[i]; + double w = priors[responses[i]]; + int d = dir[i]; + double sum = lc[idx] + d*w; + double sum_abs = rc[idx] + (d & 1)*w; + lc[idx] = sum; rc[idx] = sum_abs; + } + + for( i = 0; i < mi; i++ ) + { + double sum = lc[i]; + double sum_abs = rc[i]; + lc[i] = (sum_abs - sum) * 0.5; + rc[i] = (sum_abs + sum) * 0.5; + } + } + + // 2. now form the split. + // in each category send all the samples to the same direction as majority + for( i = 0; i < mi; i++ ) + { + double lval = lc[i], rval = rc[i]; + if( lval > rval ) + { + split->subset[i >> 5] |= 1 << (i & 31); + best_val += lval; + l_win++; + } + else + best_val += rval; + } + + split->quality = (float)best_val; + if( split->quality <= node->maxlr || l_win == 0 || l_win == mi ) + cvSetRemoveByPtr( data->split_heap, split ), split = 0; + + return split; +} + + +void CvDTree::calc_node_value( CvDTreeNode* node ) +{ + int i, j, k, n = node->sample_count, cv_n = data->params.cv_folds; + int m = data->get_num_classes(); + + int base_size = data->is_classifier ? m*cv_n*sizeof(int) : 2*cv_n*sizeof(double)+cv_n*sizeof(int); + int ext_size = n*(sizeof(int) + (data->is_classifier ? sizeof(int) : sizeof(int)+sizeof(float))); + cv::AutoBuffer inn_buf(base_size + ext_size); + uchar* base_buf = (uchar*)inn_buf; + uchar* ext_buf = base_buf + base_size; + + int* cv_labels_buf = (int*)ext_buf; + const int* cv_labels = data->get_cv_labels(node, cv_labels_buf); + + if( data->is_classifier ) + { + // in case of classification tree: + // * node value is the label of the class that has the largest weight in the node. + // * node risk is the weighted number of misclassified samples, + // * j-th cross-validation fold value and risk are calculated as above, + // but using the samples with cv_labels(*)!=j. + // * j-th cross-validation fold error is calculated as the weighted number of + // misclassified samples with cv_labels(*)==j. + + // compute the number of instances of each class + int* cls_count = data->counts->data.i; + int* responses_buf = cv_labels_buf + n; + const int* responses = data->get_class_labels(node, responses_buf); + int* cv_cls_count = (int*)base_buf; + double max_val = -1, total_weight = 0; + int max_k = -1; + double* priors = data->priors_mult->data.db; + + for( k = 0; k < m; k++ ) + cls_count[k] = 0; + + if( cv_n == 0 ) + { + for( i = 0; i < n; i++ ) + cls_count[responses[i]]++; + } + else + { + for( j = 0; j < cv_n; j++ ) + for( k = 0; k < m; k++ ) + cv_cls_count[j*m + k] = 0; + + for( i = 0; i < n; i++ ) + { + j = cv_labels[i]; k = responses[i]; + cv_cls_count[j*m + k]++; + } + + for( j = 0; j < cv_n; j++ ) + for( k = 0; k < m; k++ ) + cls_count[k] += cv_cls_count[j*m + k]; + } + + if( data->have_priors && node->parent == 0 ) + { + // compute priors_mult from priors, take the sample ratio into account. + double sum = 0; + for( k = 0; k < m; k++ ) + { + int n_k = cls_count[k]; + priors[k] = data->priors->data.db[k]*(n_k ? 1./n_k : 0.); + sum += priors[k]; + } + sum = 1./sum; + for( k = 0; k < m; k++ ) + priors[k] *= sum; + } + + for( k = 0; k < m; k++ ) + { + double val = cls_count[k]*priors[k]; + total_weight += val; + if( max_val < val ) + { + max_val = val; + max_k = k; + } + } + + node->class_idx = max_k; + node->value = data->cat_map->data.i[ + data->cat_ofs->data.i[data->cat_var_count] + max_k]; + node->node_risk = total_weight - max_val; + + for( j = 0; j < cv_n; j++ ) + { + double sum_k = 0, sum = 0, max_val_k = 0; + max_val = -1; max_k = -1; + + for( k = 0; k < m; k++ ) + { + double w = priors[k]; + double val_k = cv_cls_count[j*m + k]*w; + double val = cls_count[k]*w - val_k; + sum_k += val_k; + sum += val; + if( max_val < val ) + { + max_val = val; + max_val_k = val_k; + max_k = k; + } + } + + node->cv_Tn[j] = INT_MAX; + node->cv_node_risk[j] = sum - max_val; + node->cv_node_error[j] = sum_k - max_val_k; + } + } + else + { + // in case of regression tree: + // * node value is 1/n*sum_i(Y_i), where Y_i is i-th response, + // n is the number of samples in the node. + // * node risk is the sum of squared errors: sum_i((Y_i - )^2) + // * j-th cross-validation fold value and risk are calculated as above, + // but using the samples with cv_labels(*)!=j. + // * j-th cross-validation fold error is calculated + // using samples with cv_labels(*)==j as the test subset: + // error_j = sum_(i,cv_labels(i)==j)((Y_i - )^2), + // where node_value_j is the node value calculated + // as described in the previous bullet, and summation is done + // over the samples with cv_labels(*)==j. + + double sum = 0, sum2 = 0; + float* values_buf = (float*)(cv_labels_buf + n); + int* sample_indices_buf = (int*)(values_buf + n); + const float* values = data->get_ord_responses(node, values_buf, sample_indices_buf); + double *cv_sum = 0, *cv_sum2 = 0; + int* cv_count = 0; + + if( cv_n == 0 ) + { + for( i = 0; i < n; i++ ) + { + double t = values[i]; + sum += t; + sum2 += t*t; + } + } + else + { + cv_sum = (double*)base_buf; + cv_sum2 = cv_sum + cv_n; + cv_count = (int*)(cv_sum2 + cv_n); + + for( j = 0; j < cv_n; j++ ) + { + cv_sum[j] = cv_sum2[j] = 0.; + cv_count[j] = 0; + } + + for( i = 0; i < n; i++ ) + { + j = cv_labels[i]; + double t = values[i]; + double s = cv_sum[j] + t; + double s2 = cv_sum2[j] + t*t; + int nc = cv_count[j] + 1; + cv_sum[j] = s; + cv_sum2[j] = s2; + cv_count[j] = nc; + } + + for( j = 0; j < cv_n; j++ ) + { + sum += cv_sum[j]; + sum2 += cv_sum2[j]; + } + } + + node->node_risk = sum2 - (sum/n)*sum; + node->value = sum/n; + + for( j = 0; j < cv_n; j++ ) + { + double s = cv_sum[j], si = sum - s; + double s2 = cv_sum2[j], s2i = sum2 - s2; + int c = cv_count[j], ci = n - c; + double r = si/MAX(ci,1); + node->cv_node_risk[j] = s2i - r*r*ci; + node->cv_node_error[j] = s2 - 2*r*s + c*r*r; + node->cv_Tn[j] = INT_MAX; + } + } +} + + +void CvDTree::complete_node_dir( CvDTreeNode* node ) +{ + int vi, i, n = node->sample_count, nl, nr, d0 = 0, d1 = -1; + int nz = n - node->get_num_valid(node->split->var_idx); + char* dir = (char*)data->direction->data.ptr; + + // try to complete direction using surrogate splits + if( nz && data->params.use_surrogates ) + { + cv::AutoBuffer inn_buf(n*(2*sizeof(int)+sizeof(float))); + CvDTreeSplit* split = node->split->next; + for( ; split != 0 && nz; split = split->next ) + { + int inversed_mask = split->inversed ? -1 : 0; + vi = split->var_idx; + + if( data->get_var_type(vi) >= 0 ) // split on categorical var + { + int* labels_buf = (int*)(uchar*)inn_buf; + const int* labels = data->get_cat_var_data(node, vi, labels_buf); + const int* subset = split->subset; + + for( i = 0; i < n; i++ ) + { + int idx = labels[i]; + if( !dir[i] && ( ((idx >= 0)&&(!data->is_buf_16u)) || ((idx != 65535)&&(data->is_buf_16u)) )) + + { + int d = CV_DTREE_CAT_DIR(idx,subset); + dir[i] = (char)((d ^ inversed_mask) - inversed_mask); + if( --nz ) + break; + } + } + } + else // split on ordered var + { + float* values_buf = (float*)(uchar*)inn_buf; + int* sorted_indices_buf = (int*)(values_buf + n); + int* sample_indices_buf = sorted_indices_buf + n; + const float* values = 0; + const int* sorted_indices = 0; + data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, &sorted_indices, sample_indices_buf ); + int split_point = split->ord.split_point; + int n1 = node->get_num_valid(vi); + + assert( 0 <= split_point && split_point < n-1 ); + + for( i = 0; i < n1; i++ ) + { + int idx = sorted_indices[i]; + if( !dir[idx] ) + { + int d = i <= split_point ? -1 : 1; + dir[idx] = (char)((d ^ inversed_mask) - inversed_mask); + if( --nz ) + break; + } + } + } + } + } + + // find the default direction for the rest + if( nz ) + { + for( i = nr = 0; i < n; i++ ) + nr += dir[i] > 0; + nl = n - nr - nz; + d0 = nl > nr ? -1 : nr > nl; + } + + // make sure that every sample is directed either to the left or to the right + for( i = 0; i < n; i++ ) + { + int d = dir[i]; + if( !d ) + { + d = d0; + if( !d ) + d = d1, d1 = -d1; + } + d = d > 0; + dir[i] = (char)d; // remap (-1,1) to (0,1) + } +} + + +void CvDTree::split_node_data( CvDTreeNode* node ) +{ + int vi, i, n = node->sample_count, nl, nr, scount = data->sample_count; + char* dir = (char*)data->direction->data.ptr; + CvDTreeNode *left = 0, *right = 0; + int* new_idx = data->split_buf->data.i; + int new_buf_idx = data->get_child_buf_idx( node ); + int work_var_count = data->get_work_var_count(); + CvMat* buf = data->buf; + size_t length_buf_row = data->get_length_subbuf(); + cv::AutoBuffer inn_buf(n*(3*sizeof(int) + sizeof(float))); + int* temp_buf = (int*)(uchar*)inn_buf; + + complete_node_dir(node); + + for( i = nl = nr = 0; i < n; i++ ) + { + int d = dir[i]; + // initialize new indices for splitting ordered variables + new_idx[i] = (nl & (d-1)) | (nr & -d); // d ? ri : li + nr += d; + nl += d^1; + } + + bool split_input_data; + node->left = left = data->new_node( node, nl, new_buf_idx, node->offset ); + node->right = right = data->new_node( node, nr, new_buf_idx, node->offset + nl ); + + split_input_data = node->depth + 1 < data->params.max_depth && + (node->left->sample_count > data->params.min_sample_count || + node->right->sample_count > data->params.min_sample_count); + + // split ordered variables, keep both halves sorted. + for( vi = 0; vi < data->var_count; vi++ ) + { + int ci = data->get_var_type(vi); + + if( ci >= 0 || !split_input_data ) + continue; + + int n1 = node->get_num_valid(vi); + float* src_val_buf = (float*)(uchar*)(temp_buf + n); + int* src_sorted_idx_buf = (int*)(src_val_buf + n); + int* src_sample_idx_buf = src_sorted_idx_buf + n; + const float* src_val = 0; + const int* src_sorted_idx = 0; + data->get_ord_var_data(node, vi, src_val_buf, src_sorted_idx_buf, &src_val, &src_sorted_idx, src_sample_idx_buf); + + for(i = 0; i < n; i++) + temp_buf[i] = src_sorted_idx[i]; + + if (data->is_buf_16u) + { + unsigned short *ldst, *rdst, *ldst0, *rdst0; + //unsigned short tl, tr; + ldst0 = ldst = (unsigned short*)(buf->data.s + left->buf_idx*length_buf_row + + vi*scount + left->offset); + rdst0 = rdst = (unsigned short*)(ldst + nl); + + // split sorted + for( i = 0; i < n1; i++ ) + { + int idx = temp_buf[i]; + int d = dir[idx]; + idx = new_idx[idx]; + if (d) + { + *rdst = (unsigned short)idx; + rdst++; + } + else + { + *ldst = (unsigned short)idx; + ldst++; + } + } + + left->set_num_valid(vi, (int)(ldst - ldst0)); + right->set_num_valid(vi, (int)(rdst - rdst0)); + + // split missing + for( ; i < n; i++ ) + { + int idx = temp_buf[i]; + int d = dir[idx]; + idx = new_idx[idx]; + if (d) + { + *rdst = (unsigned short)idx; + rdst++; + } + else + { + *ldst = (unsigned short)idx; + ldst++; + } + } + } + else + { + int *ldst0, *ldst, *rdst0, *rdst; + ldst0 = ldst = buf->data.i + left->buf_idx*length_buf_row + + vi*scount + left->offset; + rdst0 = rdst = buf->data.i + right->buf_idx*length_buf_row + + vi*scount + right->offset; + + // split sorted + for( i = 0; i < n1; i++ ) + { + int idx = temp_buf[i]; + int d = dir[idx]; + idx = new_idx[idx]; + if (d) + { + *rdst = idx; + rdst++; + } + else + { + *ldst = idx; + ldst++; + } + } + + left->set_num_valid(vi, (int)(ldst - ldst0)); + right->set_num_valid(vi, (int)(rdst - rdst0)); + + // split missing + for( ; i < n; i++ ) + { + int idx = temp_buf[i]; + int d = dir[idx]; + idx = new_idx[idx]; + if (d) + { + *rdst = idx; + rdst++; + } + else + { + *ldst = idx; + ldst++; + } + } + } + } + + // split categorical vars, responses and cv_labels using new_idx relocation table + for( vi = 0; vi < work_var_count; vi++ ) + { + int ci = data->get_var_type(vi); + int n1 = node->get_num_valid(vi), nr1 = 0; + + if( ci < 0 || (vi < data->var_count && !split_input_data) ) + continue; + + int *src_lbls_buf = temp_buf + n; + const int* src_lbls = data->get_cat_var_data(node, vi, src_lbls_buf); + + for(i = 0; i < n; i++) + temp_buf[i] = src_lbls[i]; + + if (data->is_buf_16u) + { + unsigned short *ldst = (unsigned short *)(buf->data.s + left->buf_idx*length_buf_row + + vi*scount + left->offset); + unsigned short *rdst = (unsigned short *)(buf->data.s + right->buf_idx*length_buf_row + + vi*scount + right->offset); + + for( i = 0; i < n; i++ ) + { + int d = dir[i]; + int idx = temp_buf[i]; + if (d) + { + *rdst = (unsigned short)idx; + rdst++; + nr1 += (idx != 65535 )&d; + } + else + { + *ldst = (unsigned short)idx; + ldst++; + } + } + + if( vi < data->var_count ) + { + left->set_num_valid(vi, n1 - nr1); + right->set_num_valid(vi, nr1); + } + } + else + { + int *ldst = buf->data.i + left->buf_idx*length_buf_row + + vi*scount + left->offset; + int *rdst = buf->data.i + right->buf_idx*length_buf_row + + vi*scount + right->offset; + + for( i = 0; i < n; i++ ) + { + int d = dir[i]; + int idx = temp_buf[i]; + if (d) + { + *rdst = idx; + rdst++; + nr1 += (idx >= 0)&d; + } + else + { + *ldst = idx; + ldst++; + } + + } + + if( vi < data->var_count ) + { + left->set_num_valid(vi, n1 - nr1); + right->set_num_valid(vi, nr1); + } + } + } + + + // split sample indices + int *sample_idx_src_buf = temp_buf + n; + const int* sample_idx_src = data->get_sample_indices(node, sample_idx_src_buf); + + for(i = 0; i < n; i++) + temp_buf[i] = sample_idx_src[i]; + + int pos = data->get_work_var_count(); + if (data->is_buf_16u) + { + unsigned short* ldst = (unsigned short*)(buf->data.s + left->buf_idx*length_buf_row + + pos*scount + left->offset); + unsigned short* rdst = (unsigned short*)(buf->data.s + right->buf_idx*length_buf_row + + pos*scount + right->offset); + for (i = 0; i < n; i++) + { + int d = dir[i]; + unsigned short idx = (unsigned short)temp_buf[i]; + if (d) + { + *rdst = idx; + rdst++; + } + else + { + *ldst = idx; + ldst++; + } + } + } + else + { + int* ldst = buf->data.i + left->buf_idx*length_buf_row + + pos*scount + left->offset; + int* rdst = buf->data.i + right->buf_idx*length_buf_row + + pos*scount + right->offset; + for (i = 0; i < n; i++) + { + int d = dir[i]; + int idx = temp_buf[i]; + if (d) + { + *rdst = idx; + rdst++; + } + else + { + *ldst = idx; + ldst++; + } + } + } + + // deallocate the parent node data that is not needed anymore + data->free_node_data(node); +} + +float CvDTree::calc_error( CvMLData* _data, int type, std::vector *resp ) +{ + float err = 0; + const CvMat* values = _data->get_values(); + const CvMat* response = _data->get_responses(); + const CvMat* missing = _data->get_missing(); + const CvMat* sample_idx = (type == CV_TEST_ERROR) ? _data->get_test_sample_idx() : _data->get_train_sample_idx(); + const CvMat* var_types = _data->get_var_types(); + int* sidx = sample_idx ? sample_idx->data.i : 0; + int r_step = CV_IS_MAT_CONT(response->type) ? + 1 : response->step / CV_ELEM_SIZE(response->type); + bool is_classifier = var_types->data.ptr[var_types->cols-1] == CV_VAR_CATEGORICAL; + int sample_count = sample_idx ? sample_idx->cols : 0; + sample_count = (type == CV_TRAIN_ERROR && sample_count == 0) ? values->rows : sample_count; + float* pred_resp = 0; + if( resp && (sample_count > 0) ) + { + resp->resize( sample_count ); + pred_resp = &((*resp)[0]); + } + + if ( is_classifier ) + { + for( int i = 0; i < sample_count; i++ ) + { + CvMat sample, miss; + int si = sidx ? sidx[i] : i; + cvGetRow( values, &sample, si ); + if( missing ) + cvGetRow( missing, &miss, si ); + float r = (float)predict( &sample, missing ? &miss : 0 )->value; + if( pred_resp ) + pred_resp[i] = r; + int d = fabs((double)r - response->data.fl[(size_t)si*r_step]) <= FLT_EPSILON ? 0 : 1; + err += d; + } + err = sample_count ? err / (float)sample_count * 100 : -FLT_MAX; + } + else + { + for( int i = 0; i < sample_count; i++ ) + { + CvMat sample, miss; + int si = sidx ? sidx[i] : i; + cvGetRow( values, &sample, si ); + if( missing ) + cvGetRow( missing, &miss, si ); + float r = (float)predict( &sample, missing ? &miss : 0 )->value; + if( pred_resp ) + pred_resp[i] = r; + float d = r - response->data.fl[(size_t)si*r_step]; + err += d*d; + } + err = sample_count ? err / (float)sample_count : -FLT_MAX; + } + return err; +} + +void CvDTree::prune_cv() +{ + CvMat* ab = 0; + CvMat* temp = 0; + CvMat* err_jk = 0; + + // 1. build tree sequence for each cv fold, calculate error_{Tj,beta_k}. + // 2. choose the best tree index (if need, apply 1SE rule). + // 3. store the best index and cut the branches. + + CV_FUNCNAME( "CvDTree::prune_cv" ); + + __BEGIN__; + + int ti, j, tree_count = 0, cv_n = data->params.cv_folds, n = root->sample_count; + // currently, 1SE for regression is not implemented + bool use_1se = data->params.use_1se_rule != 0 && data->is_classifier; + double* err; + double min_err = 0, min_err_se = 0; + int min_idx = -1; + + CV_CALL( ab = cvCreateMat( 1, 256, CV_64F )); + + // build the main tree sequence, calculate alpha's + for(;;tree_count++) + { + double min_alpha = update_tree_rnc(tree_count, -1); + if( cut_tree(tree_count, -1, min_alpha) ) + break; + + if( ab->cols <= tree_count ) + { + CV_CALL( temp = cvCreateMat( 1, ab->cols*3/2, CV_64F )); + for( ti = 0; ti < ab->cols; ti++ ) + temp->data.db[ti] = ab->data.db[ti]; + cvReleaseMat( &ab ); + ab = temp; + temp = 0; + } + + ab->data.db[tree_count] = min_alpha; + } + + ab->data.db[0] = 0.; + + if( tree_count > 0 ) + { + for( ti = 1; ti < tree_count-1; ti++ ) + ab->data.db[ti] = sqrt(ab->data.db[ti]*ab->data.db[ti+1]); + ab->data.db[tree_count-1] = DBL_MAX*0.5; + + CV_CALL( err_jk = cvCreateMat( cv_n, tree_count, CV_64F )); + err = err_jk->data.db; + + for( j = 0; j < cv_n; j++ ) + { + int tj = 0, tk = 0; + for( ; tk < tree_count; tj++ ) + { + double min_alpha = update_tree_rnc(tj, j); + if( cut_tree(tj, j, min_alpha) ) + min_alpha = DBL_MAX; + + for( ; tk < tree_count; tk++ ) + { + if( ab->data.db[tk] > min_alpha ) + break; + err[j*tree_count + tk] = root->tree_error; + } + } + } + + for( ti = 0; ti < tree_count; ti++ ) + { + double sum_err = 0; + for( j = 0; j < cv_n; j++ ) + sum_err += err[j*tree_count + ti]; + if( ti == 0 || sum_err < min_err ) + { + min_err = sum_err; + min_idx = ti; + if( use_1se ) + min_err_se = sqrt( sum_err*(n - sum_err) ); + } + else if( sum_err < min_err + min_err_se ) + min_idx = ti; + } + } + + pruned_tree_idx = min_idx; + free_prune_data(data->params.truncate_pruned_tree != 0); + + __END__; + + cvReleaseMat( &err_jk ); + cvReleaseMat( &ab ); + cvReleaseMat( &temp ); +} + + +double CvDTree::update_tree_rnc( int T, int fold ) +{ + CvDTreeNode* node = root; + double min_alpha = DBL_MAX; + + for(;;) + { + CvDTreeNode* parent; + for(;;) + { + int t = fold >= 0 ? node->cv_Tn[fold] : node->Tn; + if( t <= T || !node->left ) + { + node->complexity = 1; + node->tree_risk = node->node_risk; + node->tree_error = 0.; + if( fold >= 0 ) + { + node->tree_risk = node->cv_node_risk[fold]; + node->tree_error = node->cv_node_error[fold]; + } + break; + } + node = node->left; + } + + for( parent = node->parent; parent && parent->right == node; + node = parent, parent = parent->parent ) + { + parent->complexity += node->complexity; + parent->tree_risk += node->tree_risk; + parent->tree_error += node->tree_error; + + parent->alpha = ((fold >= 0 ? parent->cv_node_risk[fold] : parent->node_risk) + - parent->tree_risk)/(parent->complexity - 1); + min_alpha = MIN( min_alpha, parent->alpha ); + } + + if( !parent ) + break; + + parent->complexity = node->complexity; + parent->tree_risk = node->tree_risk; + parent->tree_error = node->tree_error; + node = parent->right; + } + + return min_alpha; +} + + +int CvDTree::cut_tree( int T, int fold, double min_alpha ) +{ + CvDTreeNode* node = root; + if( !node->left ) + return 1; + + for(;;) + { + CvDTreeNode* parent; + for(;;) + { + int t = fold >= 0 ? node->cv_Tn[fold] : node->Tn; + if( t <= T || !node->left ) + break; + if( node->alpha <= min_alpha + FLT_EPSILON ) + { + if( fold >= 0 ) + node->cv_Tn[fold] = T; + else + node->Tn = T; + if( node == root ) + return 1; + break; + } + node = node->left; + } + + for( parent = node->parent; parent && parent->right == node; + node = parent, parent = parent->parent ) + ; + + if( !parent ) + break; + + node = parent->right; + } + + return 0; +} + + +void CvDTree::free_prune_data(bool _cut_tree) +{ + CvDTreeNode* node = root; + + for(;;) + { + CvDTreeNode* parent; + for(;;) + { + // do not call cvSetRemoveByPtr( cv_heap, node->cv_Tn ) + // as we will clear the whole cross-validation heap at the end + node->cv_Tn = 0; + node->cv_node_error = node->cv_node_risk = 0; + if( !node->left ) + break; + node = node->left; + } + + for( parent = node->parent; parent && parent->right == node; + node = parent, parent = parent->parent ) + { + if( _cut_tree && parent->Tn <= pruned_tree_idx ) + { + data->free_node( parent->left ); + data->free_node( parent->right ); + parent->left = parent->right = 0; + } + } + + if( !parent ) + break; + + node = parent->right; + } + + if( data->cv_heap ) + cvClearSet( data->cv_heap ); +} + + +void CvDTree::free_tree() +{ + if( root && data && data->shared ) + { + pruned_tree_idx = INT_MIN; + free_prune_data(true); + data->free_node(root); + root = 0; + } +} + +CvDTreeNode* CvDTree::predict( const CvMat* _sample, + const CvMat* _missing, bool preprocessed_input ) const +{ + cv::AutoBuffer catbuf; + + int i, mstep = 0; + const uchar* m = 0; + CvDTreeNode* node = root; + + if( !node ) + CV_Error( CV_StsError, "The tree has not been trained yet" ); + + if( !CV_IS_MAT(_sample) || CV_MAT_TYPE(_sample->type) != CV_32FC1 || + (_sample->cols != 1 && _sample->rows != 1) || + (_sample->cols + _sample->rows - 1 != data->var_all && !preprocessed_input) || + (_sample->cols + _sample->rows - 1 != data->var_count && preprocessed_input) ) + CV_Error( CV_StsBadArg, + "the input sample must be 1d floating-point vector with the same " + "number of elements as the total number of variables used for training" ); + + const float* sample = _sample->data.fl; + int step = CV_IS_MAT_CONT(_sample->type) ? 1 : _sample->step/sizeof(sample[0]); + + if( data->cat_count && !preprocessed_input ) // cache for categorical variables + { + int n = data->cat_count->cols; + catbuf.allocate(n); + for( i = 0; i < n; i++ ) + catbuf[i] = -1; + } + + if( _missing ) + { + if( !CV_IS_MAT(_missing) || !CV_IS_MASK_ARR(_missing) || + !CV_ARE_SIZES_EQ(_missing, _sample) ) + CV_Error( CV_StsBadArg, + "the missing data mask must be 8-bit vector of the same size as input sample" ); + m = _missing->data.ptr; + mstep = CV_IS_MAT_CONT(_missing->type) ? 1 : _missing->step/sizeof(m[0]); + } + + const int* vtype = data->var_type->data.i; + const int* vidx = data->var_idx && !preprocessed_input ? data->var_idx->data.i : 0; + const int* cmap = data->cat_map ? data->cat_map->data.i : 0; + const int* cofs = data->cat_ofs ? data->cat_ofs->data.i : 0; + + while( node->Tn > pruned_tree_idx && node->left ) + { + CvDTreeSplit* split = node->split; + int dir = 0; + for( ; !dir && split != 0; split = split->next ) + { + int vi = split->var_idx; + int ci = vtype[vi]; + i = vidx ? vidx[vi] : vi; + float val = sample[(size_t)i*step]; + if( m && m[(size_t)i*mstep] ) + continue; + if( ci < 0 ) // ordered + dir = val <= split->ord.c ? -1 : 1; + else // categorical + { + int c; + if( preprocessed_input ) + c = cvRound(val); + else + { + c = catbuf[ci]; + if( c < 0 ) + { + int a = c = cofs[ci]; + int b = (ci+1 >= data->cat_ofs->cols) ? data->cat_map->cols : cofs[ci+1]; + + int ival = cvRound(val); + if( ival != val ) + CV_Error( CV_StsBadArg, + "one of input categorical variable is not an integer" ); + + int sh = 0; + while( a < b ) + { + sh++; + c = (a + b) >> 1; + if( ival < cmap[c] ) + b = c; + else if( ival > cmap[c] ) + a = c+1; + else + break; + } + + if( c < 0 || ival != cmap[c] ) + continue; + + catbuf[ci] = c -= cofs[ci]; + } + } + c = ( (c == 65535) && data->is_buf_16u ) ? -1 : c; + dir = CV_DTREE_CAT_DIR(c, split->subset); + } + + if( split->inversed ) + dir = -dir; + } + + if( !dir ) + { + double diff = node->right->sample_count - node->left->sample_count; + dir = diff < 0 ? -1 : 1; + } + node = dir < 0 ? node->left : node->right; + } + + return node; +} + + +CvDTreeNode* CvDTree::predict( const Mat& _sample, const Mat& _missing, bool preprocessed_input ) const +{ + CvMat sample = _sample, mmask = _missing; + return predict(&sample, mmask.data.ptr ? &mmask : 0, preprocessed_input); +} + + +const CvMat* CvDTree::get_var_importance() +{ + if( !var_importance ) + { + CvDTreeNode* node = root; + double* importance; + if( !node ) + return 0; + var_importance = cvCreateMat( 1, data->var_count, CV_64F ); + cvZero( var_importance ); + importance = var_importance->data.db; + + for(;;) + { + CvDTreeNode* parent; + for( ;; node = node->left ) + { + CvDTreeSplit* split = node->split; + + if( !node->left || node->Tn <= pruned_tree_idx ) + break; + + for( ; split != 0; split = split->next ) + importance[split->var_idx] += split->quality; + } + + for( parent = node->parent; parent && parent->right == node; + node = parent, parent = parent->parent ) + ; + + if( !parent ) + break; + + node = parent->right; + } + + cvNormalize( var_importance, var_importance, 1., 0, CV_L1 ); + } + + return var_importance; +} + + +void CvDTree::write_split( CvFileStorage* fs, CvDTreeSplit* split ) const +{ + int ci; + + cvStartWriteStruct( fs, 0, CV_NODE_MAP + CV_NODE_FLOW ); + cvWriteInt( fs, "var", split->var_idx ); + cvWriteReal( fs, "quality", split->quality ); + + ci = data->get_var_type(split->var_idx); + if( ci >= 0 ) // split on a categorical var + { + int i, n = data->cat_count->data.i[ci], to_right = 0, default_dir; + for( i = 0; i < n; i++ ) + to_right += CV_DTREE_CAT_DIR(i,split->subset) > 0; + + // ad-hoc rule when to use inverse categorical split notation + // to achieve more compact and clear representation + default_dir = to_right <= 1 || to_right <= MIN(3, n/2) || to_right <= n/3 ? -1 : 1; + + cvStartWriteStruct( fs, default_dir*(split->inversed ? -1 : 1) > 0 ? + "in" : "not_in", CV_NODE_SEQ+CV_NODE_FLOW ); + + for( i = 0; i < n; i++ ) + { + int dir = CV_DTREE_CAT_DIR(i,split->subset); + if( dir*default_dir < 0 ) + cvWriteInt( fs, 0, i ); + } + cvEndWriteStruct( fs ); + } + else + cvWriteReal( fs, !split->inversed ? "le" : "gt", split->ord.c ); + + cvEndWriteStruct( fs ); +} + + +void CvDTree::write_node( CvFileStorage* fs, CvDTreeNode* node ) const +{ + CvDTreeSplit* split; + + cvStartWriteStruct( fs, 0, CV_NODE_MAP ); + + cvWriteInt( fs, "depth", node->depth ); + cvWriteInt( fs, "sample_count", node->sample_count ); + cvWriteReal( fs, "value", node->value ); + + if( data->is_classifier ) + cvWriteInt( fs, "norm_class_idx", node->class_idx ); + + cvWriteInt( fs, "Tn", node->Tn ); + cvWriteInt( fs, "complexity", node->complexity ); + cvWriteReal( fs, "alpha", node->alpha ); + cvWriteReal( fs, "node_risk", node->node_risk ); + cvWriteReal( fs, "tree_risk", node->tree_risk ); + cvWriteReal( fs, "tree_error", node->tree_error ); + + if( node->left ) + { + cvStartWriteStruct( fs, "splits", CV_NODE_SEQ ); + + for( split = node->split; split != 0; split = split->next ) + write_split( fs, split ); + + cvEndWriteStruct( fs ); + } + + cvEndWriteStruct( fs ); +} + + +void CvDTree::write_tree_nodes( CvFileStorage* fs ) const +{ + //CV_FUNCNAME( "CvDTree::write_tree_nodes" ); + + __BEGIN__; + + CvDTreeNode* node = root; + + // traverse the tree and save all the nodes in depth-first order + for(;;) + { + CvDTreeNode* parent; + for(;;) + { + write_node( fs, node ); + if( !node->left ) + break; + node = node->left; + } + + for( parent = node->parent; parent && parent->right == node; + node = parent, parent = parent->parent ) + ; + + if( !parent ) + break; + + node = parent->right; + } + + __END__; +} + + +void CvDTree::write( CvFileStorage* fs, const char* name ) const +{ + //CV_FUNCNAME( "CvDTree::write" ); + + __BEGIN__; + + cvStartWriteStruct( fs, name, CV_NODE_MAP, CV_TYPE_NAME_ML_TREE ); + + //get_var_importance(); + data->write_params( fs ); + //if( var_importance ) + //cvWrite( fs, "var_importance", var_importance ); + write( fs ); + + cvEndWriteStruct( fs ); + + __END__; +} + + +void CvDTree::write( CvFileStorage* fs ) const +{ + //CV_FUNCNAME( "CvDTree::write" ); + + __BEGIN__; + + cvWriteInt( fs, "best_tree_idx", pruned_tree_idx ); + + cvStartWriteStruct( fs, "nodes", CV_NODE_SEQ ); + write_tree_nodes( fs ); + cvEndWriteStruct( fs ); + + __END__; +} + + +CvDTreeSplit* CvDTree::read_split( CvFileStorage* fs, CvFileNode* fnode ) +{ + CvDTreeSplit* split = 0; + + CV_FUNCNAME( "CvDTree::read_split" ); + + __BEGIN__; + + int vi, ci; + + if( !fnode || CV_NODE_TYPE(fnode->tag) != CV_NODE_MAP ) + CV_ERROR( CV_StsParseError, "some of the splits are not stored properly" ); + + vi = cvReadIntByName( fs, fnode, "var", -1 ); + if( (unsigned)vi >= (unsigned)data->var_count ) + CV_ERROR( CV_StsOutOfRange, "Split variable index is out of range" ); + + ci = data->get_var_type(vi); + if( ci >= 0 ) // split on categorical var + { + int i, n = data->cat_count->data.i[ci], inversed = 0, val; + CvSeqReader reader; + CvFileNode* inseq; + split = data->new_split_cat( vi, 0 ); + inseq = cvGetFileNodeByName( fs, fnode, "in" ); + if( !inseq ) + { + inseq = cvGetFileNodeByName( fs, fnode, "not_in" ); + inversed = 1; + } + if( !inseq || + (CV_NODE_TYPE(inseq->tag) != CV_NODE_SEQ && CV_NODE_TYPE(inseq->tag) != CV_NODE_INT)) + CV_ERROR( CV_StsParseError, + "Either 'in' or 'not_in' tags should be inside a categorical split data" ); + + if( CV_NODE_TYPE(inseq->tag) == CV_NODE_INT ) + { + val = inseq->data.i; + if( (unsigned)val >= (unsigned)n ) + CV_ERROR( CV_StsOutOfRange, "some of in/not_in elements are out of range" ); + + split->subset[val >> 5] |= 1 << (val & 31); + } + else + { + cvStartReadSeq( inseq->data.seq, &reader ); + + for( i = 0; i < reader.seq->total; i++ ) + { + CvFileNode* inode = (CvFileNode*)reader.ptr; + val = inode->data.i; + if( CV_NODE_TYPE(inode->tag) != CV_NODE_INT || (unsigned)val >= (unsigned)n ) + CV_ERROR( CV_StsOutOfRange, "some of in/not_in elements are out of range" ); + + split->subset[val >> 5] |= 1 << (val & 31); + CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); + } + } + + // for categorical splits we do not use inversed splits, + // instead we inverse the variable set in the split + if( inversed ) + for( i = 0; i < (n + 31) >> 5; i++ ) + split->subset[i] ^= -1; + } + else + { + CvFileNode* cmp_node; + split = data->new_split_ord( vi, 0, 0, 0, 0 ); + + cmp_node = cvGetFileNodeByName( fs, fnode, "le" ); + if( !cmp_node ) + { + cmp_node = cvGetFileNodeByName( fs, fnode, "gt" ); + split->inversed = 1; + } + + split->ord.c = (float)cvReadReal( cmp_node ); + } + + split->quality = (float)cvReadRealByName( fs, fnode, "quality" ); + + __END__; + + return split; +} + + +CvDTreeNode* CvDTree::read_node( CvFileStorage* fs, CvFileNode* fnode, CvDTreeNode* parent ) +{ + CvDTreeNode* node = 0; + + CV_FUNCNAME( "CvDTree::read_node" ); + + __BEGIN__; + + CvFileNode* splits; + int i, depth; + + if( !fnode || CV_NODE_TYPE(fnode->tag) != CV_NODE_MAP ) + CV_ERROR( CV_StsParseError, "some of the tree elements are not stored properly" ); + + CV_CALL( node = data->new_node( parent, 0, 0, 0 )); + depth = cvReadIntByName( fs, fnode, "depth", -1 ); + if( depth != node->depth ) + CV_ERROR( CV_StsParseError, "incorrect node depth" ); + + node->sample_count = cvReadIntByName( fs, fnode, "sample_count" ); + node->value = cvReadRealByName( fs, fnode, "value" ); + if( data->is_classifier ) + node->class_idx = cvReadIntByName( fs, fnode, "norm_class_idx" ); + + node->Tn = cvReadIntByName( fs, fnode, "Tn" ); + node->complexity = cvReadIntByName( fs, fnode, "complexity" ); + node->alpha = cvReadRealByName( fs, fnode, "alpha" ); + node->node_risk = cvReadRealByName( fs, fnode, "node_risk" ); + node->tree_risk = cvReadRealByName( fs, fnode, "tree_risk" ); + node->tree_error = cvReadRealByName( fs, fnode, "tree_error" ); + + splits = cvGetFileNodeByName( fs, fnode, "splits" ); + if( splits ) + { + CvSeqReader reader; + CvDTreeSplit* last_split = 0; + + if( CV_NODE_TYPE(splits->tag) != CV_NODE_SEQ ) + CV_ERROR( CV_StsParseError, "splits tag must stored as a sequence" ); + + cvStartReadSeq( splits->data.seq, &reader ); + for( i = 0; i < reader.seq->total; i++ ) + { + CvDTreeSplit* split; + CV_CALL( split = read_split( fs, (CvFileNode*)reader.ptr )); + if( !last_split ) + node->split = last_split = split; + else + last_split = last_split->next = split; + + CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); + } + } + + __END__; + + return node; +} + + +void CvDTree::read_tree_nodes( CvFileStorage* fs, CvFileNode* fnode ) +{ + CV_FUNCNAME( "CvDTree::read_tree_nodes" ); + + __BEGIN__; + + CvSeqReader reader; + CvDTreeNode _root; + CvDTreeNode* parent = &_root; + int i; + parent->left = parent->right = parent->parent = 0; + + cvStartReadSeq( fnode->data.seq, &reader ); + + for( i = 0; i < reader.seq->total; i++ ) + { + CvDTreeNode* node; + + CV_CALL( node = read_node( fs, (CvFileNode*)reader.ptr, parent != &_root ? parent : 0 )); + if( !parent->left ) + parent->left = node; + else + parent->right = node; + if( node->split ) + parent = node; + else + { + while( parent && parent->right ) + parent = parent->parent; + } + + CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); + } + + root = _root.left; + + __END__; +} + + +void CvDTree::read( CvFileStorage* fs, CvFileNode* fnode ) +{ + CvDTreeTrainData* _data = new CvDTreeTrainData(); + _data->read_params( fs, fnode ); + + read( fs, fnode, _data ); + get_var_importance(); +} + + +// a special entry point for reading weak decision trees from the tree ensembles +void CvDTree::read( CvFileStorage* fs, CvFileNode* node, CvDTreeTrainData* _data ) +{ + CV_FUNCNAME( "CvDTree::read" ); + + __BEGIN__; + + CvFileNode* tree_nodes; + + clear(); + data = _data; + + tree_nodes = cvGetFileNodeByName( fs, node, "nodes" ); + if( !tree_nodes || CV_NODE_TYPE(tree_nodes->tag) != CV_NODE_SEQ ) + CV_ERROR( CV_StsParseError, "nodes tag is missing" ); + + pruned_tree_idx = cvReadIntByName( fs, node, "best_tree_idx", -1 ); + read_tree_nodes( fs, tree_nodes ); + + __END__; +} + +Mat CvDTree::getVarImportance() +{ + return cvarrToMat(get_var_importance()); +} + +/* End of file. */ diff --git a/apps/traincascade/traincascade.cpp b/apps/traincascade/traincascade.cpp index 52bacc8083..d1c3e4e87a 100644 --- a/apps/traincascade/traincascade.cpp +++ b/apps/traincascade/traincascade.cpp @@ -1,6 +1,4 @@ #include "opencv2/core.hpp" - -#include "cv.h" #include "cascadeclassifier.h" using namespace std; diff --git a/apps/traincascade/traincascade_features.h b/apps/traincascade/traincascade_features.h index dfba7a3d43..c8f024b507 100644 --- a/apps/traincascade/traincascade_features.h +++ b/apps/traincascade/traincascade_features.h @@ -2,9 +2,6 @@ #define _OPENCV_FEATURES_H_ #include "imagestorage.h" -#include "cxcore.h" -#include "cv.h" -#include "ml.h" #include #define FEATURES "features" diff --git a/modules/ml/include/opencv2/ml.hpp b/modules/ml/include/opencv2/ml.hpp index 3aa329d24e..ee54eab06e 100644 --- a/modules/ml/include/opencv2/ml.hpp +++ b/modules/ml/include/opencv2/ml.hpp @@ -135,7 +135,7 @@ public: virtual Mat getCatMap() const = 0; virtual void setTrainTestSplit(int count, bool shuffle=true) = 0; - virtual void setTrainTestSplitRatio(float ratio, bool shuffle=true) = 0; + virtual void setTrainTestSplitRatio(double ratio, bool shuffle=true) = 0; virtual void shuffleTrainTest() = 0; static Mat getSubVector(const Mat& vec, const Mat& idx); @@ -156,7 +156,6 @@ class CV_EXPORTS_W StatModel : public Algorithm { public: enum { UPDATE_MODEL = 1, RAW_OUTPUT=1, COMPRESSED_INPUT=2, PREPROCESSED_INPUT=4 }; - virtual ~StatModel(); virtual void clear(); virtual int getVarCount() const = 0; @@ -164,16 +163,30 @@ public: virtual bool isTrained() const = 0; virtual bool isClassifier() const = 0; - virtual bool train( const Ptr& trainData, int flags=0 ) = 0; + virtual bool train( const Ptr& trainData, int flags=0 ); + virtual bool train( InputArray samples, int layout, InputArray responses ); virtual float calcError( const Ptr& data, bool test, OutputArray resp ) const; virtual float predict( InputArray samples, OutputArray results=noArray(), int flags=0 ) const = 0; template static Ptr<_Tp> load(const String& filename) { FileStorage fs(filename, FileStorage::READ); - Ptr<_Tp> p = _Tp::create(); - p->read(fs.getFirstTopLevelNode()); - return p->isTrained() ? p : Ptr<_Tp>(); + Ptr<_Tp> model = _Tp::create(); + model->read(fs.getFirstTopLevelNode()); + return model->isTrained() ? model : Ptr<_Tp>(); + } + + template static Ptr<_Tp> train(const Ptr& data, const typename _Tp::Params& p, int flags=0) + { + Ptr<_Tp> model = _Tp::create(p); + return !model.empty() && model->train(data, flags) ? model : Ptr<_Tp>(); + } + + template static Ptr<_Tp> train(InputArray samples, int layout, InputArray responses, + const typename _Tp::Params& p, int flags=0) + { + Ptr<_Tp> model = _Tp::create(p); + return !model.empty() && model->train(TrainData::create(samples, layout, responses), flags) ? model : Ptr<_Tp>(); } virtual void save(const String& filename) const; @@ -192,11 +205,17 @@ public: class CV_EXPORTS_W NormalBayesClassifier : public StatModel { public: - virtual ~NormalBayesClassifier(); + class CV_EXPORTS_W_MAP Params + { + public: + Params(); + }; virtual float predictProb( InputArray inputs, OutputArray outputs, OutputArray outputProbs, int flags=0 ) const = 0; + virtual void setParams(const Params& params) = 0; + virtual Params getParams() const = 0; - static Ptr create(); + static Ptr create(const Params& params=Params()); }; /****************************************************************************************\ @@ -207,13 +226,21 @@ public: class CV_EXPORTS_W KNearest : public StatModel { public: - virtual void setDefaultK(int k) = 0; - virtual int getDefaultK() const = 0; + class CV_EXPORTS_W_MAP Params + { + public: + Params(int defaultK=10, bool isclassifier=true); + + int defaultK; + bool isclassifier; + }; + virtual void setParams(const Params& p) = 0; + virtual Params getParams() const = 0; virtual float findNearest( InputArray samples, int k, OutputArray results, OutputArray neighborResponses=noArray(), OutputArray dist=noArray() ) const = 0; - static Ptr create(bool isclassifier=true); + static Ptr create(const Params& params=Params()); }; /****************************************************************************************\ @@ -247,7 +274,6 @@ public: class CV_EXPORTS Kernel : public Algorithm { public: - virtual ~Kernel(); virtual int getType() const = 0; virtual void calc( int vcount, int n, const float* vecs, const float* another, float* results ) = 0; }; @@ -261,8 +287,6 @@ public: // SVM params type enum { C=0, GAMMA=1, P=2, NU=3, COEF=4, DEGREE=5 }; - virtual ~SVM(); - virtual bool trainAuto( const Ptr& data, int kFold = 10, ParamGrid Cgrid = SVM::getDefaultGrid(SVM::C), ParamGrid gammaGrid = SVM::getDefaultGrid(SVM::GAMMA), @@ -399,8 +423,6 @@ public: int subsetOfs; }; - virtual ~DTrees(); - virtual void setDParams(const Params& p); virtual Params getDParams() const; @@ -464,7 +486,6 @@ public: // Boosting type enum { DISCRETE=0, REAL=1, LOGIT=2, GENTLE=3 }; - virtual ~Boost(); virtual Params getBParams() const = 0; virtual void setBParams(const Params& p) = 0; @@ -491,7 +512,6 @@ public: }; enum {SQUARED_LOSS=0, ABSOLUTE_LOSS, HUBER_LOSS=3, DEVIANCE_LOSS}; - virtual ~GBTrees(); virtual void setK(int k) = 0; @@ -513,10 +533,16 @@ public: struct CV_EXPORTS_W_MAP Params { Params(); - Params( TermCriteria termCrit, int trainMethod, double param1, double param2=0 ); + Params( const Mat& layerSizes, int activateFunc, double fparam1, double fparam2, + TermCriteria termCrit, int trainMethod, double param1, double param2=0 ); enum { BACKPROP=0, RPROP=1 }; + CV_PROP_RW Mat layerSizes; + CV_PROP_RW int activateFunc; + CV_PROP_RW double fparam1; + CV_PROP_RW double fparam2; + CV_PROP_RW TermCriteria termCrit; CV_PROP_RW int trainMethod; @@ -527,23 +553,17 @@ public: CV_PROP_RW double rpDW0, rpDWPlus, rpDWMinus, rpDWMin, rpDWMax; }; - virtual ~ANN_MLP(); - // possible activation functions enum { IDENTITY = 0, SIGMOID_SYM = 1, GAUSSIAN = 2 }; // available training flags enum { UPDATE_WEIGHTS = 1, NO_INPUT_SCALE = 2, NO_OUTPUT_SCALE = 4 }; - virtual Mat getLayerSizes() const = 0; virtual Mat getWeights(int layerIdx) const = 0; virtual void setParams(const Params& p) = 0; virtual Params getParams() const = 0; - static Ptr create(InputArray layerSizes=noArray(), - const Params& params=Params(), - int activateFunc=ANN_MLP::SIGMOID_SYM, - double fparam1=0, double fparam2=0); + static Ptr create(const Params& params=Params()); }; /****************************************************************************************\ diff --git a/modules/ml/src/ann_mlp.cpp b/modules/ml/src/ann_mlp.cpp index 8b7ec3aad2..9d0180f7c6 100644 --- a/modules/ml/src/ann_mlp.cpp +++ b/modules/ml/src/ann_mlp.cpp @@ -42,10 +42,11 @@ namespace cv { namespace ml { -ANN_MLP::~ANN_MLP() {} - ANN_MLP::Params::Params() { + layerSizes = Mat(); + activateFunc = SIGMOID_SYM; + fparam1 = fparam2 = 0; termCrit = TermCriteria( TermCriteria::COUNT + TermCriteria::EPS, 1000, 0.01 ); trainMethod = RPROP; bpDWScale = bpMomentScale = 0.1; @@ -54,8 +55,13 @@ ANN_MLP::Params::Params() } -ANN_MLP::Params::Params( TermCriteria _termCrit, int _trainMethod, double _param1, double _param2 ) +ANN_MLP::Params::Params( const Mat& _layerSizes, int _activateFunc, double _fparam1, double _fparam2, + TermCriteria _termCrit, int _trainMethod, double _param1, double _param2 ) { + layerSizes = _layerSizes; + activateFunc = _activateFunc; + fparam1 = _fparam1; + fparam2 = _fparam2; termCrit = _termCrit; trainMethod = _trainMethod; bpDWScale = bpMomentScale = 0.1; @@ -95,15 +101,25 @@ public: clear(); } - ANN_MLPImpl( const Mat& _layer_sizes, int _activ_func, - double _f_param1, double _f_param2 ) + ANN_MLPImpl( const Params& p ) { - clear(); - create( _layer_sizes, _activ_func, _f_param1, _f_param2 ); + setParams(p); } virtual ~ANN_MLPImpl() {} + void setParams(const Params& p) + { + params = p; + create( params.layerSizes ); + set_activ_func( params.activateFunc, params.fparam1, params.fparam2 ); + } + + Params getParams() const + { + return params; + } + void clear() { min_val = max_val = min_val1 = max_val1 = 0.; @@ -183,16 +199,13 @@ public: } } - void create( InputArray _layer_sizes, int _activ_func, - double _f_param1, double _f_param2 ) + void create( InputArray _layer_sizes ) { clear(); _layer_sizes.copyTo(layer_sizes); int l_count = layer_count(); - set_activ_func( _activ_func, _f_param1, _f_param2 ); - weights.resize(l_count + 2); max_lsize = 0; @@ -665,16 +678,6 @@ public: calc_output_scale( outputs, flags ); } - void setParams( const Params& _params ) - { - params = _params; - } - - Params getParams() const - { - return params; - } - bool train( const Ptr& trainData, int flags ) { const int MAX_ITER = 1000; @@ -1240,7 +1243,7 @@ public: vector _layer_sizes; fn["layer_sizes"] >> _layer_sizes; - create( _layer_sizes, SIGMOID_SYM, 0, 0 ); + create( _layer_sizes ); int i, l_count = layer_count(); read_params(fn); @@ -1307,15 +1310,9 @@ public: }; -Ptr ANN_MLP::create(InputArray _layerSizes, - const ANN_MLP::Params& params, - int activateFunc, - double fparam1, double fparam2) +Ptr ANN_MLP::create(const ANN_MLP::Params& params) { - Mat layerSizes = _layerSizes.getMat(); - Ptr ann = makePtr(layerSizes, activateFunc, fparam1, fparam2); - ann->setParams(params); - + Ptr ann = makePtr(params); return ann; } diff --git a/modules/ml/src/boost.cpp b/modules/ml/src/boost.cpp index 9a775a0f25..f485b6e17e 100644 --- a/modules/ml/src/boost.cpp +++ b/modules/ml/src/boost.cpp @@ -54,8 +54,6 @@ log_ratio( double val ) } -Boost::~Boost() {} - Boost::Params::Params() { boostType = Boost::REAL; @@ -106,6 +104,7 @@ public: void startTraining( const Ptr& trainData, int flags ) { DTreesImpl::startTraining(trainData, flags); + sumResult.assign(w->sidx.size(), 0.); if( bparams.boostType != Boost::DISCRETE ) { @@ -114,14 +113,10 @@ public: w->ord_responses.resize(n); double a = -1, b = 1; - if( bparams.boostType == Boost::REAL ) - a = 0; - else if( bparams.boostType == Boost::LOGIT ) + if( bparams.boostType == Boost::LOGIT ) { - sumResult.assign(w->sidx.size(), 0.); a = -2, b = 2; } - for( i = 0; i < n; i++ ) w->ord_responses[i] = w->cat_responses[i] > 0 ? b : a; } @@ -197,7 +192,7 @@ public: } else if( bparams.boostType == Boost::REAL ) { - double p = node->value; + double p = (node->value+1)*0.5; node->value = 0.5*log_ratio(p); } } @@ -227,7 +222,7 @@ public: { int i, n = (int)w->sidx.size(); int nvars = (int)varIdx.size(); - double sumw = 0.; + double sumw = 0., C = 1.; cv::AutoBuffer buf(n*3 + nvars); double* result = buf; float* sbuf = (float*)(result + n*3); @@ -261,7 +256,7 @@ public: if( sumw != 0 ) err /= sumw; - double C = -log_ratio( err ); + C = -log_ratio( err ); double scale = std::exp(C); sumw = 0; @@ -289,6 +284,7 @@ public: for( i = 0; i < n; i++ ) { int si = w->sidx[i]; + CV_Assert( std::abs(w->ord_responses[si]) == 1 ); double wval = w->sample_weights[si]*std::exp(-result[i]*w->ord_responses[si]); sumw += wval; w->sample_weights[si] = wval; @@ -330,6 +326,20 @@ public: } else CV_Error(CV_StsNotImplemented, "Unknown boosting type"); + + /*if( bparams.boostType != Boost::LOGIT ) + { + double err = 0; + for( i = 0; i < n; i++ ) + { + sumResult[i] += result[i]*C; + if( bparams.boostType != Boost::DISCRETE ) + err += sumResult[i]*w->ord_responses[w->sidx[i]] < 0; + else + err += sumResult[i]*w->cat_responses[w->sidx[i]] < 0; + } + printf("%d trees. C=%.2f, training error=%.1f%%, working set size=%d (out of %d)\n", (int)roots.size(), C, err*100./n, (int)sidx.size(), n); + }*/ // renormalize weights if( sumw > FLT_EPSILON ) diff --git a/modules/ml/src/data.cpp b/modules/ml/src/data.cpp index 07e2f2635d..d73cb5703e 100644 --- a/modules/ml/src/data.cpp +++ b/modules/ml/src/data.cpp @@ -379,7 +379,7 @@ public: tempCatOfs.push_back(ofs); std::copy(labels.begin(), labels.end(), std::back_inserter(tempCatMap)); } - else if( haveMissing ) + else { tempCatOfs.push_back(Vec2i(0, 0)); /*Mat missing_i = layout == ROW_SAMPLE ? missing.col(i) : missing.row(i); @@ -741,9 +741,9 @@ public: CV_Error( CV_StsBadArg, "type of some variables is not specified" ); } - void setTrainTestSplitRatio(float ratio, bool shuffle) + void setTrainTestSplitRatio(double ratio, bool shuffle) { - CV_Assert( 0 <= ratio && ratio <= 1 ); + CV_Assert( 0. <= ratio && ratio <= 1. ); setTrainTestSplit(cvRound(getNSamples()*ratio), shuffle); } diff --git a/modules/ml/src/inner_functions.cpp b/modules/ml/src/inner_functions.cpp index c347835613..a5fd59d45b 100644 --- a/modules/ml/src/inner_functions.cpp +++ b/modules/ml/src/inner_functions.cpp @@ -50,7 +50,6 @@ ParamGrid::ParamGrid(double _minVal, double _maxVal, double _logStep) logStep = std::max(_logStep, 1.); } -StatModel::~StatModel() {} void StatModel::clear() {} int StatModel::getVarCount() const { return 0; } @@ -61,6 +60,11 @@ bool StatModel::train( const Ptr&, int ) return false; } +bool StatModel::train( InputArray samples, int layout, InputArray responses ) +{ + return train(TrainData::create(samples, layout, responses)); +} + float StatModel::calcError( const Ptr& data, bool testerr, OutputArray _resp ) const { Mat samples = data->getSamples(); diff --git a/modules/ml/src/knearest.cpp b/modules/ml/src/knearest.cpp index 6824d26e89..6c40545e22 100644 --- a/modules/ml/src/knearest.cpp +++ b/modules/ml/src/knearest.cpp @@ -49,18 +49,27 @@ namespace cv { namespace ml { +KNearest::Params::Params(int k, bool isclassifier_) +{ + defaultK = k; + isclassifier = isclassifier_; +} + + class KNearestImpl : public KNearest { public: - KNearestImpl(bool __isClassifier=true) + KNearestImpl(const Params& p) { - defaultK = 3; - _isClassifier = __isClassifier; + params = p; } virtual ~KNearestImpl() {} - bool isClassifier() const { return _isClassifier; } + Params getParams() const { return params; } + void setParams(const Params& p) { params = p; } + + bool isClassifier() const { return params.isclassifier; } bool isTrained() const { return !samples.empty(); } String getDefaultModelName() const { return "opencv_ml_knn"; } @@ -188,7 +197,7 @@ public: if( results || testidx+range.start == 0 ) { - if( !_isClassifier || k == 1 ) + if( !params.isclassifier || k == 1 ) { float s = 0.f; for( j = 0; j < k; j++ ) @@ -316,12 +325,13 @@ public: float predict(InputArray inputs, OutputArray outputs, int) const { - return findNearest( inputs, defaultK, outputs, noArray(), noArray() ); + return findNearest( inputs, params.defaultK, outputs, noArray(), noArray() ); } void write( FileStorage& fs ) const { - fs << "is_classifier" << (int)_isClassifier; + fs << "is_classifier" << (int)params.isclassifier; + fs << "default_k" << params.defaultK; fs << "samples" << samples; fs << "responses" << responses; @@ -330,24 +340,21 @@ public: void read( const FileNode& fn ) { clear(); - _isClassifier = (int)fn["is_classifier"] != 0; + params.isclassifier = (int)fn["is_classifier"] != 0; + params.defaultK = (int)fn["default_k"]; fn["samples"] >> samples; fn["responses"] >> responses; } - void setDefaultK(int _k) { defaultK = _k; } - int getDefaultK() const { return defaultK; } - Mat samples; Mat responses; - bool _isClassifier; - int defaultK; + Params params; }; -Ptr KNearest::create(bool isClassifier) +Ptr KNearest::create(const Params& p) { - return makePtr(isClassifier); + return makePtr(p); } } diff --git a/modules/ml/src/nbayes.cpp b/modules/ml/src/nbayes.cpp index afa138b7ed..1e2d7104ef 100644 --- a/modules/ml/src/nbayes.cpp +++ b/modules/ml/src/nbayes.cpp @@ -43,7 +43,7 @@ namespace cv { namespace ml { -NormalBayesClassifier::~NormalBayesClassifier() {} +NormalBayesClassifier::Params::Params() {} class NormalBayesClassifierImpl : public NormalBayesClassifier { @@ -53,6 +53,9 @@ public: nallvars = 0; } + void setParams(const Params&) {} + Params getParams() const { return Params(); } + bool train( const Ptr& trainData, int flags ) { const float min_variation = FLT_EPSILON; @@ -452,7 +455,7 @@ public: }; -Ptr NormalBayesClassifier::create() +Ptr NormalBayesClassifier::create(const Params&) { Ptr p = makePtr(); return p; diff --git a/modules/ml/src/svm.cpp b/modules/ml/src/svm.cpp index 7715bee8af..a638b6bfa0 100644 --- a/modules/ml/src/svm.cpp +++ b/modules/ml/src/svm.cpp @@ -134,8 +134,6 @@ SVM::Params::Params( int _svmType, int _kernelType, termCrit = _termCrit; } -SVM::Kernel::~Kernel() {} - /////////////////////////////////////// SVM kernel /////////////////////////////////////// class SVMKernelImpl : public SVM::Kernel { @@ -358,7 +356,51 @@ static void sortSamplesByClasses( const Mat& _samples, const Mat& _responses, //////////////////////// SVM implementation ////////////////////////////// -SVM::~SVM() {} +ParamGrid SVM::getDefaultGrid( int param_id ) +{ + ParamGrid grid; + if( param_id == SVM::C ) + { + grid.minVal = 0.1; + grid.maxVal = 500; + grid.logStep = 5; // total iterations = 5 + } + else if( param_id == SVM::GAMMA ) + { + grid.minVal = 1e-5; + grid.maxVal = 0.6; + grid.logStep = 15; // total iterations = 4 + } + else if( param_id == SVM::P ) + { + grid.minVal = 0.01; + grid.maxVal = 100; + grid.logStep = 7; // total iterations = 4 + } + else if( param_id == SVM::NU ) + { + grid.minVal = 0.01; + grid.maxVal = 0.2; + grid.logStep = 3; // total iterations = 3 + } + else if( param_id == SVM::COEF ) + { + grid.minVal = 0.1; + grid.maxVal = 300; + grid.logStep = 14; // total iterations = 3 + } + else if( param_id == SVM::DEGREE ) + { + grid.minVal = 0.01; + grid.maxVal = 4; + grid.logStep = 7; // total iterations = 3 + } + else + cvError( CV_StsBadArg, "SVM::getDefaultGrid", "Invalid type of parameter " + "(use one of SVM::C, SVM::GAMMA et al.)", __FILE__, __LINE__ ); + return grid; +} + class SVMImpl : public SVM { @@ -371,52 +413,6 @@ public: int ofs; }; - virtual ParamGrid getDefaultGrid( int param_id ) const - { - ParamGrid grid; - if( param_id == SVM::C ) - { - grid.minVal = 0.1; - grid.maxVal = 500; - grid.logStep = 5; // total iterations = 5 - } - else if( param_id == SVM::GAMMA ) - { - grid.minVal = 1e-5; - grid.maxVal = 0.6; - grid.logStep = 15; // total iterations = 4 - } - else if( param_id == SVM::P ) - { - grid.minVal = 0.01; - grid.maxVal = 100; - grid.logStep = 7; // total iterations = 4 - } - else if( param_id == SVM::NU ) - { - grid.minVal = 0.01; - grid.maxVal = 0.2; - grid.logStep = 3; // total iterations = 3 - } - else if( param_id == SVM::COEF ) - { - grid.minVal = 0.1; - grid.maxVal = 300; - grid.logStep = 14; // total iterations = 3 - } - else if( param_id == SVM::DEGREE ) - { - grid.minVal = 0.01; - grid.maxVal = 4; - grid.logStep = 7; // total iterations = 3 - } - else - cvError( CV_StsBadArg, "SVM::getDefaultGrid", "Invalid type of parameter " - "(use one of SVM::C, SVM::GAMMA et al.)", __FILE__, __LINE__ ); - return grid; - } - - // Generalized SMO+SVMlight algorithm // Solves: // @@ -1568,6 +1564,9 @@ public: if( svmType == C_SVC || svmType == NU_SVC ) { responses = data->getTrainNormCatResponses(); + if( responses.empty() ) + CV_Error(CV_StsBadArg, "in the case of classification problem the responses must be categorical; " + "either specify varType when creating TrainData, or pass integer responses"); class_labels = data->getClassLabels(); } else @@ -1793,7 +1792,7 @@ public: { int svmType = svm->params.svmType; int sv_total = svm->sv.rows; - int class_count = !svm->class_labels.empty() ? svm->class_labels.cols : svmType == ONE_CLASS ? 1 : 0; + int class_count = !svm->class_labels.empty() ? (int)svm->class_labels.total() : svmType == ONE_CLASS ? 1 : 0; AutoBuffer _buffer(sv_total + (class_count+1)*2); float* buffer = _buffer; diff --git a/modules/ml/src/tree.cpp b/modules/ml/src/tree.cpp index 2985f3f146..ae05b81852 100644 --- a/modules/ml/src/tree.cpp +++ b/modules/ml/src/tree.cpp @@ -48,8 +48,6 @@ namespace ml { using std::vector; -DTrees::~DTrees() {} - void DTrees::setDParams(const DTrees::Params&) { CV_Error(CV_StsNotImplemented, ""); diff --git a/modules/ml/test/test_emknearestkmeans.cpp b/modules/ml/test/test_emknearestkmeans.cpp index 5e65fdbea1..98b88c7011 100644 --- a/modules/ml/test/test_emknearestkmeans.cpp +++ b/modules/ml/test/test_emknearestkmeans.cpp @@ -313,7 +313,7 @@ void CV_KNearestTest::run( int /*start_from*/ ) int code = cvtest::TS::OK; Ptr knearest = KNearest::create(true); - knearest->train(TrainData::create(trainData, cv::ml::ROW_SAMPLE, trainLabels), 0);; + knearest->train(trainData, cv::ml::ROW_SAMPLE, trainLabels); knearest->findNearest( testData, 4, bestLabels); float err; if( !calcErr( bestLabels, testLabels, sizes, err, true ) ) diff --git a/modules/ml/test/test_mltests2.cpp b/modules/ml/test/test_mltests2.cpp index 7a116f518f..b7c5f46c6e 100644 --- a/modules/ml/test/test_mltests2.cpp +++ b/modules/ml/test/test_mltests2.cpp @@ -371,8 +371,9 @@ int CV_MLBaseTest::train( int testCaseIdx ) data->getVarIdx(), data->getTrainSampleIdx()); int layer_sz[] = { data->getNAllVars(), 100, 100, (int)cls_map.size() }; Mat layer_sizes( 1, (int)(sizeof(layer_sz)/sizeof(layer_sz[0])), CV_32S, layer_sz ); - model = ANN_MLP::create(layer_sizes, ANN_MLP::Params(TermCriteria(TermCriteria::COUNT,300,0.01), - str_to_ann_train_method(train_method_str), param1, param2)); + model = ANN_MLP::create(ANN_MLP::Params(layer_sizes, ANN_MLP::SIGMOID_SYM, 0, 0, + TermCriteria(TermCriteria::COUNT,300,0.01), + str_to_ann_train_method(train_method_str), param1, param2)); } else if( modelName == CV_DTREE ) { diff --git a/samples/cpp/agaricus-lepiota.data b/samples/cpp/agaricus-lepiota.data deleted file mode 100644 index 14fe8bbe77..0000000000 --- a/samples/cpp/agaricus-lepiota.data +++ /dev/null @@ -1,8124 +0,0 @@ -p,x,s,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,s,u -e,x,s,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,g -e,b,s,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,m -p,x,y,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,s,u -e,x,s,g,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,y,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,g -e,b,s,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,m -e,b,y,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,m -p,x,y,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,v,g -e,b,s,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,m -e,x,y,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,y,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,m -e,b,s,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,g -p,x,y,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,v,u -e,x,f,n,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,a,g -e,s,f,g,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,y,u -e,f,f,w,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,a,g -p,x,s,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,s,g -p,x,y,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,s,u -p,x,s,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,s,u -e,b,s,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,m -p,x,y,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,v,g -e,b,y,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,m -e,b,y,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,m -e,b,s,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,m -p,f,s,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,v,g -e,x,y,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,y,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,m -e,f,f,n,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,y,u -e,x,s,y,t,a,f,w,n,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,b,s,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,m -p,x,y,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,s,u -e,x,y,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,y,n,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,y,p -e,b,y,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,f,y,t,l,f,w,n,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,s,f,g,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,v,u -p,x,y,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,s,u -e,x,f,y,t,a,f,w,n,p,t,b,s,s,w,w,p,w,o,p,n,v,d -e,b,s,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,m -e,b,y,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,y,y,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,y,p -e,x,f,n,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,k,y,u -p,x,y,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,v,g -e,x,s,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,y,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,y,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,m -e,x,s,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,y,y,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,s,p -e,f,y,y,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,s,p -e,x,y,n,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,s,g -e,x,s,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,g -e,b,s,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,m -p,x,y,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,v,u -p,x,s,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,v,u -e,b,y,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,m -e,f,f,g,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,a,g -e,b,s,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,s,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,y,n,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,y,p -e,s,f,g,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,v,u -e,b,y,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,m -e,b,s,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,m -e,b,y,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,m -e,b,y,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,g -e,f,s,n,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,s,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,g -e,f,y,y,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,s,g -e,x,y,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,f,g,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,v,u -e,f,f,y,t,l,f,w,n,p,t,b,s,s,w,w,p,w,o,p,n,v,d -e,b,y,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,m -e,f,f,y,t,l,f,w,n,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,n,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,s,p -e,b,s,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,g -e,f,s,y,t,l,f,w,n,p,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,s,w,t,l,f,w,n,n,t,b,s,s,w,w,p,w,o,p,u,v,d -e,f,y,n,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,y,p -p,x,y,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,v,u -e,f,y,n,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,y,g -e,x,s,n,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,s,g -p,x,y,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,s,g -e,f,f,g,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,y,u -e,x,f,g,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,y,y,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,s,g -e,x,s,n,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,s,g -e,b,s,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,s,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,g -e,f,y,n,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,y,g -e,s,f,n,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,v,u -e,x,f,n,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,y,u -e,b,s,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,y,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,y,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,s,n,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,s,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,g -e,f,y,n,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,s,g -e,x,s,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,g -e,b,s,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,y,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,f,n,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,s,g -e,b,s,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,g -e,f,y,y,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,s,g -e,x,y,y,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,y,p -e,b,y,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,y,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,y,y,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,y,g -e,b,y,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,m -e,b,y,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,s,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,s,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,g -e,s,f,g,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,k,y,u -e,x,f,w,t,a,f,w,n,w,t,b,s,s,w,w,p,w,o,p,u,v,d -e,x,s,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,m -p,x,y,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,v,u -e,x,y,y,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,s,g -e,s,f,g,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,y,u -e,x,y,y,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,y,g -e,x,s,y,t,l,f,w,n,p,t,b,s,s,w,w,p,w,o,p,u,v,d -e,s,f,n,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,y,u -p,x,s,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,v,g -e,x,y,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,m -p,f,y,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,v,g -e,f,s,g,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,s,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,s,w,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,s,g -e,b,s,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,g -e,f,f,g,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,s,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,g -e,b,s,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,m -e,b,s,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,g -e,b,y,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,m -e,f,s,w,t,l,f,w,n,w,t,b,s,s,w,w,p,w,o,p,u,v,d -e,x,y,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,m -e,f,s,w,t,a,f,w,n,p,t,b,s,s,w,w,p,w,o,p,n,v,d -p,x,y,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,v,u -e,f,f,w,t,l,f,w,n,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,g -p,x,s,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,v,g -e,b,s,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,y,n,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,y,p -e,b,y,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,m -e,s,f,n,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,v,u -e,f,y,n,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,y,p -e,x,y,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,f,g,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,s,g -e,f,f,w,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,y,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,m -e,b,s,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,g -e,b,y,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,y,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,s,n,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,a,g -e,x,y,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,g -e,s,f,n,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,s,w,t,a,f,w,n,w,t,b,s,s,w,w,p,w,o,p,u,v,d -e,x,y,n,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,s,g -e,b,y,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,y,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,g -e,b,y,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,m -e,b,s,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,g -e,b,s,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,m -e,b,y,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,f,n,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,y,u -e,f,y,n,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,y,g -e,x,y,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,g -e,f,y,y,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,y,p -e,b,s,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,g -e,b,s,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,m -e,x,y,n,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,y,g -e,b,s,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,f,g,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,n,y,u -e,b,s,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,f,y,t,l,f,w,n,n,t,b,s,s,w,w,p,w,o,p,u,v,d -e,b,y,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,g -e,f,y,y,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,s,g -e,b,y,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,m -e,b,y,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,m -e,b,y,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,y,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,m -e,b,s,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,g -p,x,y,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,v,u -e,s,f,n,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,n,y,u -e,f,f,n,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,s,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,m -e,f,y,n,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,s,p -p,x,y,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,s,g -e,b,s,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,m -e,f,f,g,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,v,u -e,b,y,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,y,n,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,y,p -e,x,f,w,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,s,g -e,x,s,w,t,l,f,w,n,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,b,s,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,m -e,f,s,y,t,a,f,w,n,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,s,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,m -e,f,f,g,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,n,y,u -e,b,s,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,s,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,y,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,m -e,f,s,w,t,a,f,w,n,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,g -e,b,s,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,s,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,f,w,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,s,g -e,f,y,n,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,y,p -p,x,s,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,v,u -e,b,s,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,g -e,b,s,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,m -e,b,y,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,g -e,b,y,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,s,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,g -e,b,s,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,f,y,t,a,f,w,n,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,f,g,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,y,u -e,f,y,y,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,s,g -e,b,s,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,s,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,y,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,y,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,g -e,s,f,g,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,v,u -e,x,s,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,m -p,x,s,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,s,g -e,x,y,y,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,s,g -e,f,f,w,t,a,f,w,n,p,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,m -e,b,y,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,s,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,s,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,g -p,x,y,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,v,u -e,b,s,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,f,g,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,y,u -p,x,y,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,s,u -e,x,y,y,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,y,p -e,f,f,n,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,v,u -e,b,s,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,f,w,t,l,f,w,n,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,g -e,b,y,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,y,y,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,s,g -e,f,y,y,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,s,p -e,f,y,y,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,y,p -e,x,s,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,s,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,m -p,x,s,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,v,u -e,f,f,w,t,a,f,w,n,p,t,b,s,s,w,w,p,w,o,p,u,v,d -e,x,s,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,s,w,t,l,f,w,n,p,t,b,s,s,w,w,p,w,o,p,u,v,d -e,x,y,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,m -e,f,y,y,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,y,p -e,x,s,n,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,s,g -e,f,y,y,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,y,g -p,x,s,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,s,g -e,s,f,n,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,n,v,u -e,b,y,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,m -e,b,s,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,g -e,b,y,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,m -e,f,f,n,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,v,u -e,x,s,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,m -e,b,y,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,g -e,b,y,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,m -e,f,y,n,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,s,g -p,x,y,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,v,g -e,x,s,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,y,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,m -e,f,f,w,t,l,f,w,n,w,t,b,s,s,w,w,p,w,o,p,u,v,d -e,f,f,g,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,k,v,u -e,f,s,g,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,y,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,m -e,b,s,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,m -p,f,y,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,s,u -e,x,s,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,m -p,f,s,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,y,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,y,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,m -e,f,y,y,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,s,p -e,x,y,n,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,s,p -e,f,y,n,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,y,g -e,x,y,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,m -e,f,f,n,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,s,g -e,x,s,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,m -p,x,y,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,s,g -e,b,y,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,m -e,s,f,n,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,v,u -e,x,s,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,m -e,b,y,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,m -e,f,y,n,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,s,g -e,b,y,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,m -e,b,y,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,y,n,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,y,p -e,f,f,g,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,y,u -e,x,f,g,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,k,y,u -e,b,y,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,s,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,m -e,b,y,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,s,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,m -e,b,s,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,s,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,m -e,x,f,g,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,s,g -e,f,s,y,t,a,f,w,n,p,t,b,s,s,w,w,p,w,o,p,n,v,d -p,x,y,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,s,g -e,x,f,w,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,a,g -e,b,y,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,s,y,t,l,f,w,n,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,b,y,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,y,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,f,n,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,y,d -e,b,y,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,s,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,m -e,f,y,n,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,y,g -e,x,f,w,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,s,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,g -p,x,y,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,v,g -e,x,y,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,f,w,t,a,f,w,n,p,t,b,s,s,w,w,p,w,o,p,n,v,d -e,b,s,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,g -p,x,y,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,s,y,t,a,f,w,n,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,f,w,t,l,f,w,n,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,s,w,t,l,f,w,n,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,m -e,f,f,y,t,a,f,w,n,w,t,b,s,s,w,w,p,w,o,p,u,v,d -e,x,s,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,g -e,b,y,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,m -e,x,y,n,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,s,p -e,b,y,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,s,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,m -p,x,y,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,v,u -e,b,s,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,g -e,b,y,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,g -p,x,y,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,v,u -e,b,s,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,m -e,b,y,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,m -e,b,y,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,y,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,f,n,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,y,d -e,x,y,n,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,y,g -e,b,s,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,f,g,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,n,v,u -e,x,y,n,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,y,g -e,x,s,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,g -e,b,y,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,s,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,m -e,f,f,y,t,a,f,w,n,p,t,b,s,s,w,w,p,w,o,p,n,v,d -e,b,y,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,f,n,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,f,y,t,l,f,w,n,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,s,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,m -e,f,s,g,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,s,g -e,x,f,n,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,n,y,u -e,f,s,g,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,a,g -e,f,y,n,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,s,p -e,b,y,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,g -e,b,s,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,m -e,x,y,y,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,s,p -e,s,f,g,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,n,v,u -e,f,y,n,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,y,p -p,x,y,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,s,u -e,x,y,y,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,y,p -e,x,y,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,f,n,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,f,n,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,a,g -e,f,s,n,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,a,g -e,f,y,n,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,s,p -e,x,s,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,g -e,f,f,n,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,y,y,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,s,p -e,x,f,y,t,a,f,w,n,p,t,b,s,s,w,w,p,w,o,p,u,v,d -e,b,y,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,f,g,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,s,g -e,x,y,y,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,s,g -e,f,y,n,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,y,g -e,x,s,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,m -e,s,f,n,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,y,u -e,x,s,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,m -e,b,s,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,g -e,s,f,n,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,y,u -e,b,y,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,y,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,g -e,b,y,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,g -p,x,y,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,s,u -e,x,s,w,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,y,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,m -e,b,s,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,f,n,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,y,d -p,x,s,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,s,u -e,x,y,n,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,y,p -e,x,s,n,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,a,g -e,b,y,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,s,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,m -e,b,s,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,s,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,m -e,b,y,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,f,g,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,v,u -e,f,y,n,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,s,g -e,x,f,g,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,s,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,y,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,f,g,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,v,u -p,x,s,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,s,u -e,b,y,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,g -e,b,y,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,m -p,x,y,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,v,u -e,b,s,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,s,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,y,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,m -e,b,y,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,s,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,s,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,y,n,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,y,p -e,x,s,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,s,n,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,s,g -e,x,y,n,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,s,p -e,x,y,y,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,y,g -p,x,y,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,v,g -e,b,y,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,f,w,t,l,f,w,n,p,t,b,s,s,w,w,p,w,o,p,u,v,d -p,x,s,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,s,u -e,x,y,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,g -e,f,f,g,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,y,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,g -e,b,y,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,m -p,x,y,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,s,u -e,f,y,n,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,s,g -e,x,s,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,s,w,t,a,f,w,n,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,n,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,y,p -e,b,s,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,s,w,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,a,g -e,f,f,g,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,v,u -e,x,y,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,y,y,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,y,g -e,b,s,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,g -e,b,s,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,g -e,f,s,w,t,l,f,w,n,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,b,s,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,f,y,t,a,f,w,n,n,t,b,s,s,w,w,p,w,o,p,u,v,d -e,x,y,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,m -e,b,y,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,y,n,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,y,p -e,x,y,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,m -e,x,y,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,m -e,x,y,y,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,y,p -e,x,y,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,s,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,y,n,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,s,g -e,x,s,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,g -e,f,y,n,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,s,g -e,b,s,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,m -e,x,f,n,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,y,d -e,x,y,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,m -e,b,s,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,g -e,b,s,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,f,y,t,l,f,w,n,p,t,b,s,s,w,w,p,w,o,p,n,v,d -e,b,s,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,s,g,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,a,g -e,b,s,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,g -e,b,s,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,m -e,f,y,y,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,y,p -e,f,y,n,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,y,p -e,x,s,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,m -e,f,y,y,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,s,g -e,b,s,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,y,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,f,n,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,v,u -e,f,y,n,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,y,g -e,x,s,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,s,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,g -e,b,y,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,g -e,f,y,y,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,s,p -e,x,y,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,y,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,m -e,f,f,w,t,a,f,w,n,n,t,b,s,s,w,w,p,w,o,p,u,v,d -e,s,f,g,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,y,u -e,f,s,y,t,l,f,w,n,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,f,g,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,y,u -e,x,f,n,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,y,u -e,b,y,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,s,w,t,a,f,w,n,p,t,b,s,s,w,w,p,w,o,p,n,v,d -e,b,y,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,m -e,b,y,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,m -e,b,y,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,g -e,f,s,w,t,l,f,w,n,p,t,b,s,s,w,w,p,w,o,p,u,v,d -e,f,f,g,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,k,y,u -e,f,s,w,t,a,f,w,n,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,y,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,y,g -e,x,y,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,m -e,s,f,n,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,y,u -e,x,y,n,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,s,p -e,x,y,n,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,s,p -e,f,f,y,t,a,f,w,n,n,t,b,s,s,w,w,p,w,o,p,u,v,d -p,f,s,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,s,g -p,x,s,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,v,u -e,f,y,n,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,s,p -e,x,y,y,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,s,g -e,b,s,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,m -e,f,f,w,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,a,g -e,f,y,n,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,s,g -e,x,y,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,g -e,b,s,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,s,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,g -e,b,y,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,s,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,m -e,b,s,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,m -e,b,y,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,g -p,x,s,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,v,g -e,x,s,g,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,s,g -e,f,s,n,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,a,g -e,x,f,w,t,a,f,w,n,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,f,g,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,v,u -e,f,f,n,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,y,u -e,b,y,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,f,w,t,a,f,w,n,n,t,b,s,s,w,w,p,w,o,p,u,v,d -e,s,f,g,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,v,u -e,x,f,n,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,v,u -e,x,f,w,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,a,g -e,x,y,n,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,y,p -e,b,s,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,y,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,y,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,s,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,m -e,b,s,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,g -e,f,y,y,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,y,p -p,x,s,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,s,u -e,f,f,g,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,y,u -e,b,s,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,g -e,f,y,n,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,s,p -e,x,s,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,f,n,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,y,u -e,f,y,y,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,y,p -e,x,y,n,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,y,p -e,x,s,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,g -p,x,y,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,s,g -e,f,y,n,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,y,p -p,f,s,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,s,g -e,x,f,w,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,s,g -e,b,y,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,m -e,s,f,n,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,y,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,m -e,f,s,w,t,a,f,w,n,p,t,b,s,s,w,w,p,w,o,p,u,v,d -e,x,s,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,m -e,f,f,g,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,s,g -p,x,y,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,s,g -e,x,y,y,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,s,g -e,f,f,n,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,s,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,m -e,b,y,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,m -e,f,f,g,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,n,v,u -e,x,f,y,t,l,f,w,n,p,t,b,s,s,w,w,p,w,o,p,u,v,d -e,x,s,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,m -e,f,f,n,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,y,u -e,x,f,g,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,y,y,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,s,p -e,f,s,w,t,l,f,w,n,p,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,s,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,g -e,f,y,y,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,y,p -p,x,y,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,f,w,t,l,f,w,n,w,t,b,s,s,w,w,p,w,o,p,u,v,d -e,x,s,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,y,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,m -e,b,s,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,s,y,t,a,f,w,n,w,t,b,s,s,w,w,p,w,o,p,u,v,d -e,x,s,y,t,a,f,w,n,n,t,b,s,s,w,w,p,w,o,p,u,v,d -e,x,f,w,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,s,g -e,b,s,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,m -p,x,y,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,v,g -e,x,y,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,g -e,f,s,g,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,s,g -p,x,s,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,s,g -e,b,y,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,s,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,m -e,f,f,y,t,l,f,w,n,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,s,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,g -e,b,y,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,y,n,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,y,g -e,x,s,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,f,n,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,v,u -e,x,s,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,y,y,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,y,g -p,x,s,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,s,g -e,x,s,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,s,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,y,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,y,y,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,y,g -e,f,y,y,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,s,g -e,x,y,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,m -e,s,f,g,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,k,v,u -e,f,f,n,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,y,u -e,s,f,g,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,y,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,m -p,x,s,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,s,u -e,x,s,g,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,s,g -e,x,y,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,g -p,x,y,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,s,g -e,x,s,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,m -p,x,s,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,v,u -e,b,s,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,m -e,b,y,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,m -p,x,y,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,s,g -p,x,s,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,s,u -e,x,s,g,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,y,n,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,y,g -e,f,f,w,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,a,g -e,f,y,n,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,s,p -e,b,y,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,m -e,b,s,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,s,g,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,s,g -e,f,y,n,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,y,g -e,x,s,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,m -e,f,f,g,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,v,u -e,f,s,n,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,a,g -e,x,f,g,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,s,g -e,f,s,w,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,a,g -p,x,s,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,s,u -e,x,y,y,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,s,g -e,b,s,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,g -e,f,f,g,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,a,g -e,b,y,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,g -e,b,s,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,m -e,s,f,g,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,y,u -e,f,y,y,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,s,g -e,b,s,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,f,w,t,l,f,w,n,n,t,b,s,s,w,w,p,w,o,p,u,v,d -e,f,y,y,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,s,p -e,f,f,g,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,y,u -e,x,s,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,m -e,f,f,y,t,l,f,w,n,w,t,b,s,s,w,w,p,w,o,p,u,v,d -e,s,f,g,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,y,u -e,b,y,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,g -e,b,s,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,g -e,f,f,n,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,s,g -e,b,y,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,f,n,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,v,d -e,x,y,n,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,s,g -e,x,y,n,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,s,g -e,b,y,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,m -e,f,y,y,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,s,g -e,x,y,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,s,n,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,s,g -e,x,y,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,m -e,b,y,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,y,n,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,y,g -e,f,y,n,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,s,p -e,f,y,n,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,y,g -e,f,y,y,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,s,p -e,x,s,y,t,l,f,w,n,n,t,b,s,s,w,w,p,w,o,p,u,v,d -e,b,y,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,m -e,b,s,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,y,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,g -e,f,f,w,t,l,f,w,n,p,t,b,s,s,w,w,p,w,o,p,u,v,d -e,x,s,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,g -e,b,s,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,m -e,f,y,y,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,y,g -p,x,y,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,s,g -p,x,y,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,s,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,g -e,f,f,w,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,s,g -e,b,s,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,y,y,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,y,p -e,f,f,g,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,y,u -e,b,s,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,s,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,m -p,x,y,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,s,g -p,x,s,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,s,g -e,b,s,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,g -e,b,s,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,m -e,f,y,n,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,s,g -e,x,y,y,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,y,g -e,f,y,y,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,y,p -e,x,y,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,s,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,g -e,f,f,n,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,v,u -e,f,f,n,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,f,y,t,l,f,w,n,w,t,b,s,s,w,w,p,w,o,p,u,v,d -e,f,y,y,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,s,p -e,f,f,n,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,k,y,u -e,f,f,g,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,v,u -e,x,y,n,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,y,g -e,x,y,y,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,y,p -e,b,s,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,m -e,x,s,w,t,l,f,w,n,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,f,y,t,a,f,w,n,w,t,b,s,s,w,w,p,w,o,p,u,v,d -e,b,s,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,f,n,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,v,d -e,x,y,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,m -e,f,f,g,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,v,u -e,b,y,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,y,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,s,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,g -e,b,s,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,g -e,b,y,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,y,n,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,s,p -e,f,s,g,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,a,g -p,x,y,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,s,g -e,b,y,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,g -e,b,s,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,m -p,x,y,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,v,g -p,x,s,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,v,u -e,f,s,n,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,a,g -p,x,s,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,s,g -e,f,f,g,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,y,y,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,s,p -e,b,y,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,m -e,f,y,y,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,s,p -e,f,y,y,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,y,p -e,b,y,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,m -e,s,f,n,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,y,u -e,x,s,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,m -e,b,y,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,m -e,f,y,y,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,s,p -e,f,s,n,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,s,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,m -e,b,y,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,g -e,b,y,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,g -e,b,y,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,m -e,b,s,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,y,y,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,s,p -e,x,y,n,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,s,g -e,s,f,n,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,k,v,u -e,f,y,n,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,s,g -e,x,s,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,g -e,f,s,y,t,l,f,w,n,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,s,n,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,a,g -e,f,y,y,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,s,g -p,x,y,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,v,g -e,x,s,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,f,w,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,s,g -e,b,s,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,y,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,m -e,f,y,y,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,y,g -e,x,f,n,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,s,g -p,x,s,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,s,g -p,x,y,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,s,u -e,x,y,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,g -e,b,y,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,f,w,t,a,f,w,n,w,t,b,s,s,w,w,p,w,o,p,n,v,d -p,x,y,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,s,u -e,x,s,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,f,g,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,f,n,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,v,u -e,b,s,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,m -e,x,y,n,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,s,g -e,b,y,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,m -e,f,y,y,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,s,p -e,x,y,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,g -e,b,y,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,g -e,b,y,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,m -p,x,s,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,v,u -e,f,s,y,t,a,f,w,n,n,t,b,s,s,w,w,p,w,o,p,u,v,d -e,x,y,n,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,s,p -e,b,s,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,g -e,f,s,w,t,a,f,w,n,n,t,b,s,s,w,w,p,w,o,p,u,v,d -e,b,y,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,g -e,b,y,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,m -e,b,s,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,g -e,f,y,y,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,y,g -e,x,s,w,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,a,g -e,b,y,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,y,n,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,y,p -e,b,s,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,g -e,f,y,n,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,y,g -e,x,s,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,f,n,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,n,v,u -e,x,y,n,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,s,p -e,f,f,g,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,a,g -e,x,s,w,t,l,f,w,n,p,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,f,n,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,n,y,u -e,b,y,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,m -e,b,s,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,s,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,g -e,b,s,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,y,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,s,y,t,a,f,w,n,p,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,f,g,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,a,g -e,x,y,y,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,s,g -p,x,y,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,s,u -e,x,y,n,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,y,g -e,x,s,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,g -e,b,y,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,y,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,m -e,s,f,n,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,k,y,u -e,b,y,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,m -e,x,s,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,m -e,x,s,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,g -p,x,s,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,v,g -e,x,f,n,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,y,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,g -p,x,y,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,s,g -e,x,y,y,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,y,p -e,b,y,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,g -e,f,y,n,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,y,p -e,x,y,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,s,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,g -p,x,y,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,v,g -p,x,y,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,s,u -e,b,y,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,s,w,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,s,g -p,x,s,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,v,g -e,x,y,n,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,s,p -e,b,s,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,y,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,g -p,x,s,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,v,u -e,b,y,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,g -e,b,y,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,g -e,f,y,y,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,s,g -e,b,y,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,y,y,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,y,g -e,b,s,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,s,y,t,l,f,w,n,p,t,b,s,s,w,w,p,w,o,p,n,v,d -e,b,s,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,m -e,b,s,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,m -p,x,y,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,v,u -p,x,y,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,v,g -p,x,s,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,s,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,m -e,x,y,n,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,y,g -e,x,y,y,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,y,g -e,x,s,w,t,a,f,w,n,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,b,y,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,g -e,b,s,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,f,g,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,v,u -e,b,s,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,m -e,x,s,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,y,n,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,s,p -e,x,y,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,m -e,f,f,w,t,l,f,w,n,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,f,w,t,a,f,w,n,w,t,b,s,s,w,w,p,w,o,p,u,v,d -e,x,s,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,m -e,f,s,y,t,l,f,w,n,p,t,b,s,s,w,w,p,w,o,p,u,v,d -e,s,f,g,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,v,u -e,f,f,y,t,a,f,w,n,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,n,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,y,g -e,x,y,y,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,s,g -e,x,y,y,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,y,p -p,x,s,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,v,g -e,x,s,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,m -p,x,y,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,s,u -e,x,y,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,y,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,g -e,f,s,y,t,a,f,w,n,w,t,b,s,s,w,w,p,w,o,p,u,v,d -p,x,y,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,v,g -e,b,s,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,g -e,s,f,g,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,y,u -e,x,s,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,f,g,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,y,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,m -e,b,y,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,g -e,b,s,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,s,w,t,l,f,w,n,w,t,b,s,s,w,w,p,w,o,p,u,v,d -e,b,s,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,g -e,f,y,n,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,s,g -e,s,f,g,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,n,y,u -e,x,f,w,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,a,g -e,s,f,n,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,v,u -e,f,y,n,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,s,p -e,f,s,y,t,l,f,w,n,n,t,b,s,s,w,w,p,w,o,p,u,v,d -e,b,s,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,g -e,b,s,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,m -p,x,s,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,v,g -e,f,y,n,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,y,p -e,x,s,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,g -e,f,y,y,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,s,g -e,x,y,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,y,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,y,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,g -e,f,f,n,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,v,u -e,f,y,y,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,y,p -e,x,f,g,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,y,u -e,x,s,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,g -e,f,y,n,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,y,p -e,x,s,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,y,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,f,n,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,v,d -e,x,s,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,y,y,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,s,p -e,x,y,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,s,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,g -e,f,y,y,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,y,g -e,b,s,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,g -e,f,f,w,t,a,f,w,n,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,s,g,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,y,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,y,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,g -e,f,y,y,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,s,g -e,x,s,w,t,a,f,w,n,p,t,b,s,s,w,w,p,w,o,p,u,v,d -e,x,s,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,g -e,f,y,y,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,y,g -e,x,y,y,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,y,p -e,x,s,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,f,n,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,y,d -e,f,y,y,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,y,g -e,x,s,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,g -e,b,s,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,s,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,y,n,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,s,g -e,b,y,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,s,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,y,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,m -e,x,s,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,g -e,f,y,y,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,y,p -e,x,f,w,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,s,n,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,s,g -e,x,s,w,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,s,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,m -e,f,f,w,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,s,g -p,f,s,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,s,g -e,x,f,g,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,s,g -p,f,y,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,v,u -p,x,s,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,v,g -e,b,s,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,f,g,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,a,g -e,x,s,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,g -e,f,f,g,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,s,g,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,s,g -e,x,s,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,s,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,y,g,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,y,d -e,f,f,n,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,s,w,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,s,g -e,f,f,n,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,a,g -e,x,s,n,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,y,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,s,y,t,l,f,w,n,w,t,b,s,s,w,w,p,w,o,p,u,v,d -e,f,f,w,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,s,n,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,a,g -e,x,s,g,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,a,g -p,x,y,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,s,u -e,x,f,g,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,y,u -e,b,s,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,s,g,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,a,g -e,f,f,g,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,s,g -p,f,s,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,v,g -e,x,s,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,f,n,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,y,u -e,f,s,w,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,s,g -e,x,y,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,f,n,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,s,g -e,f,s,g,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,a,g -e,x,y,e,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,y,d -e,b,y,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,f,w,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,s,g -p,x,s,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,s,g -e,x,f,g,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,s,g -e,f,f,g,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,f,n,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,a,g -e,f,f,w,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,s,g -e,b,y,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,g -e,f,f,n,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,a,g -p,f,y,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,v,u -p,x,y,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,s,u -e,b,s,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,g -e,f,s,g,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,f,g,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,a,g -e,f,f,n,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,s,g -e,b,s,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,m -p,x,s,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,y,n,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,v,d -e,f,f,w,t,l,f,w,n,n,t,b,s,s,w,w,p,w,o,p,u,v,d -e,x,y,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,f,n,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,a,g -e,f,f,w,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,a,g -e,x,f,n,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,v,d -e,x,f,n,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,y,d -e,f,s,g,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,s,g -e,f,s,g,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,s,g -p,f,s,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,s,g -e,x,f,n,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,y,d -e,x,s,n,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,s,g -e,x,f,w,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,s,g -e,f,f,n,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,f,n,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,v,d -e,x,f,g,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,s,g -e,f,f,n,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,y,d -e,x,s,g,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,s,g -e,b,y,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,f,n,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,y,d -e,x,y,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,g -e,f,f,g,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,a,g -e,f,f,n,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,y,d -e,x,s,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,m -e,f,f,g,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,s,g -e,x,f,n,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,s,g -p,x,s,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,s,u -e,x,f,w,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,s,g -e,f,f,w,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,a,g -e,x,s,w,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,s,g,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,a,g -e,x,y,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,s,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,s,g,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,a,g -e,x,s,n,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,s,g -e,f,f,n,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,v,u -e,f,s,w,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,s,g -e,f,s,w,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,a,g -e,x,y,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,m -e,f,s,w,t,a,f,w,n,w,t,b,s,s,w,w,p,w,o,p,u,v,d -e,b,s,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,m -p,f,y,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,f,g,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,y,d -e,f,y,n,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,y,g -e,f,s,n,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,s,g -p,x,s,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,v,g -e,x,y,n,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,y,g -e,x,s,g,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,s,w,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,a,g -e,f,f,w,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,f,n,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,s,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,y,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,s,w,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,s,g -e,f,y,y,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,s,p -e,f,s,n,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,s,g -e,f,f,g,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,s,g -e,f,f,y,t,a,f,w,n,p,t,b,s,s,w,w,p,w,o,p,u,v,d -e,f,y,n,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,s,g -e,x,f,n,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,y,d -p,f,s,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,s,g -e,x,f,n,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,v,d -e,f,f,n,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,a,g -e,b,s,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,m -e,b,y,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,y,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,m -p,f,y,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,v,u -p,f,y,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,s,g -e,x,f,n,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,v,u -e,f,s,y,t,l,f,w,n,w,t,b,s,s,w,w,p,w,o,p,u,v,d -e,x,y,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,s,w,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,f,g,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,y,d -p,x,y,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,v,g -e,x,f,g,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,s,g -e,f,f,n,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,s,w,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,s,g -e,f,f,w,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,a,g -e,x,y,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,m -e,f,f,y,t,a,f,w,n,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,f,g,f,n,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,y,u -p,x,s,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,s,u -e,x,y,y,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,y,p -e,f,y,n,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,s,p -e,x,f,w,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,y,n,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,v,d -e,x,s,g,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,s,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,f,g,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,s,g -p,f,y,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,s,u -e,x,f,n,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,v,d -e,x,f,g,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,a,g -e,x,f,e,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,v,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,f,g,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,y,y,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,s,p -e,x,f,n,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,s,g -e,b,s,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,f,w,t,l,f,w,n,p,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,s,g,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,y,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,f,n,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,s,g -e,f,s,w,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,s,y,t,l,f,w,n,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,s,g,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,f,g,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,s,g -p,f,y,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,s,u -e,f,f,y,t,l,f,w,n,p,t,b,s,s,w,w,p,w,o,p,u,v,d -e,x,y,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,g -e,f,f,w,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,a,g -e,x,f,n,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,v,d -e,x,y,n,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,s,g -e,x,s,w,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,a,g -p,f,y,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,v,g -e,x,s,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,f,g,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,y,d -e,f,y,y,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,s,p -e,f,s,g,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,a,g -e,f,f,n,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,y,u -p,f,y,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,v,g -e,f,f,g,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,y,n,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,s,p -e,f,f,w,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,a,g -p,f,y,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,v,u -e,b,s,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,m -e,f,f,g,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,s,g -e,b,s,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,g -e,f,f,g,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,s,g -e,b,y,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,y,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,m -p,f,y,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,v,g -e,x,y,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,g -e,s,f,n,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,y,u -e,x,y,n,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,y,g -e,f,f,g,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,a,g -e,f,f,y,t,l,f,w,n,n,t,b,s,s,w,w,p,w,o,p,u,v,d -e,x,s,g,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,a,g -p,f,y,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,f,g,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,s,g,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,a,g -e,x,f,g,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,s,g -p,x,y,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,s,g -e,x,f,n,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,a,g -e,f,s,w,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,f,g,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,s,g -p,x,y,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,s,g -e,f,f,n,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,a,g -e,f,s,w,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,a,g -p,x,y,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,v,u -e,f,f,g,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,a,g -e,b,y,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,s,n,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,a,g -e,f,f,n,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,a,g -p,f,s,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,s,g -e,x,y,n,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,s,g -e,f,f,w,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,a,g -e,f,y,n,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,s,g -e,f,f,g,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,s,g -e,f,f,g,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,s,g -e,f,s,g,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,s,g -e,f,f,n,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,s,g -e,x,s,g,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,f,w,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,s,g -e,f,f,w,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,a,g -e,x,s,n,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,f,n,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,v,d -e,f,s,y,t,a,f,w,n,p,t,b,s,s,w,w,p,w,o,p,u,v,d -e,x,f,w,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,s,g -e,f,s,w,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,a,g -e,b,s,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,f,w,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,f,g,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,a,g -p,f,s,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,v,u -e,x,f,g,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,a,g -p,x,s,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,s,g -e,f,s,w,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,y,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,f,n,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,s,g -e,x,f,n,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,y,d -e,b,y,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,g -e,f,f,w,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,s,n,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,a,g -e,f,f,w,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,f,n,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,v,d -e,f,f,w,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,s,w,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,a,g -e,x,s,n,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,f,w,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,s,g -e,f,s,g,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,s,g -e,x,f,g,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,f,g,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,a,g -e,f,s,n,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,a,g -e,f,s,w,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,a,g -e,f,y,n,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,y,p -p,x,y,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,v,g -e,f,s,g,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,a,g -p,x,y,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,v,g -e,b,y,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,s,g,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,s,g -e,f,f,g,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,a,g -e,f,f,w,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,s,g -e,f,s,g,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,s,g -e,b,y,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,f,g,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,s,g -e,x,f,e,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,y,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,s,p -e,x,s,w,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,s,g -e,b,s,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,m -p,x,s,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,v,g -e,x,f,n,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,y,d -e,f,s,n,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,s,g -e,b,s,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,s,g,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,s,g -e,x,f,n,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,v,d -e,f,f,w,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,f,n,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,f,g,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,f,g,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,y,u -e,b,y,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,m -e,f,f,n,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,n,v,u -e,x,f,w,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,a,g -e,f,y,n,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,s,p -e,x,y,n,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,y,p -e,x,y,y,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,k,y,g -e,f,f,g,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,a,g -e,x,y,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,y,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,g -e,f,s,w,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,a,g -e,f,s,g,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,a,g -p,f,s,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,y,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,f,n,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,f,w,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,s,g -e,x,s,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,f,e,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,v,d -e,f,y,n,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,s,p -e,b,s,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,g -p,x,s,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,s,g -e,x,f,g,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,s,g -e,b,y,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,s,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,g -e,b,y,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,m -e,x,y,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,s,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,g -e,b,s,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,g -e,f,s,n,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,s,g -p,f,s,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,s,g -e,f,s,n,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,a,g -e,f,f,n,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,a,g -p,f,y,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,s,u -e,f,s,w,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,a,g -e,x,f,w,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,s,n,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,a,g -e,f,s,n,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,a,g -e,f,y,y,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,y,g -e,x,f,g,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,a,g -e,x,f,n,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,a,g -p,f,s,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,v,g -e,x,s,w,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,a,g -e,f,f,n,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,s,g -e,f,f,w,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,a,g -e,f,f,w,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,y,y,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,s,g -e,x,s,g,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,f,g,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,a,g -e,f,f,n,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,s,g -e,f,s,n,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,a,g -e,x,f,w,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,s,g -e,x,y,e,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,v,d -e,x,f,n,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,a,g -p,x,s,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,v,g -e,x,y,n,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,y,d -e,x,f,n,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,s,g -p,f,y,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,s,g -e,f,f,g,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,a,g -e,x,f,w,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,a,g -e,f,s,n,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,a,g -e,f,f,g,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,a,g -e,f,s,g,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,a,g -e,f,f,g,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,s,g,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,s,n,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,s,g -p,f,s,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,s,g,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,a,g -p,x,s,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,s,g -p,f,s,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,s,u -e,f,s,n,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,f,g,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,a,g -e,f,s,g,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,s,g,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,a,g -e,f,f,g,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,a,g -e,f,f,g,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,a,g -e,x,y,g,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,y,d -e,x,f,n,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,s,w,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,a,g -p,f,y,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,v,g -p,f,y,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,s,g -e,x,s,w,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,a,g -p,f,s,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,s,g -e,f,f,n,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,s,g -e,f,s,w,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,a,g -p,f,s,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,v,g -p,f,y,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,v,g -p,f,y,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,v,g -p,f,s,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,s,g -e,x,s,w,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,a,g -e,x,f,n,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,v,d -e,f,s,w,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,a,g -e,f,f,g,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,a,g -p,f,y,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,s,w,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,y,e,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,y,d -e,f,s,g,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,s,g -e,x,s,w,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,s,g -p,f,s,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,s,g -e,f,f,n,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,a,g -e,x,f,w,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,s,g -p,f,s,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,s,u -e,x,f,n,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,a,g -e,f,f,w,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,s,w,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,s,g -e,f,s,w,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,s,g -e,b,y,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,s,g,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,f,w,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,s,g -e,x,s,n,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,f,n,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,a,g -e,f,f,g,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,a,g -p,x,y,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,s,u -e,f,s,g,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,s,g -e,x,f,n,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,y,d -e,f,s,w,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,a,g -e,x,f,n,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,v,d -e,x,f,g,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,a,g -e,x,f,w,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,a,g -p,f,s,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,v,g -p,f,s,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,v,g -e,x,s,g,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,a,g -e,x,f,n,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,v,d -e,x,s,g,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,s,g -e,x,y,y,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,s,p -e,f,s,w,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,s,w,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,f,g,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,a,g -e,f,s,w,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,f,n,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,y,d -e,f,s,g,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,a,g -e,f,s,g,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,s,g -e,f,f,n,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,s,g -e,f,s,w,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,s,g -e,f,s,w,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,a,g -e,f,s,g,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,s,g -e,f,f,w,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,s,g -e,f,s,n,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,a,g -p,f,s,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,s,g -e,x,f,g,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,a,g -e,b,y,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,g -e,f,f,n,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,s,g -e,f,s,g,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,f,n,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,y,d -e,b,s,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,s,m -e,x,s,w,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,s,g -e,f,f,n,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,y,d -p,x,s,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,s,g -e,f,f,w,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,s,g -p,f,y,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,s,u -e,x,s,n,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,a,g -e,f,s,n,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,a,g -e,b,s,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,g -e,f,s,g,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,s,g,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,a,g -e,f,f,g,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,s,g -e,x,f,g,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,s,g -e,f,s,w,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,a,g -p,f,s,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,v,g -e,f,f,g,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,a,g -e,f,s,w,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,f,n,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,y,d -e,x,s,n,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,f,e,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,y,d -e,x,y,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,g -e,f,f,w,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,s,g -e,x,s,w,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,a,g -e,f,f,n,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,a,g -p,f,s,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,s,u -e,f,f,g,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,y,d -e,f,s,w,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,s,g -e,f,f,w,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,a,g -p,f,y,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,v,g -e,x,s,w,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,s,g -e,x,f,n,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,s,n,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,s,g -e,f,s,w,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,s,g -e,f,s,n,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,s,n,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,a,g -e,f,f,w,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,a,g -e,x,f,n,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,s,g -e,f,f,w,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,a,g -e,f,f,n,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,a,g -e,f,s,w,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,s,g -e,f,f,n,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,a,g -p,f,y,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,v,u -e,f,f,w,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,a,g -e,f,s,w,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,f,n,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,a,g -e,f,f,w,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,f,g,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,a,g -e,f,s,n,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,f,g,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,v,d -e,f,f,w,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,a,g -e,f,f,n,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,s,g -e,x,s,n,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,s,g -e,x,f,w,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,s,g -e,b,s,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,g -p,x,y,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,s,g -p,f,s,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,v,g -e,f,f,w,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,s,g -e,f,f,n,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,s,g -p,f,y,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,s,g -e,f,f,n,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,s,g -p,x,s,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,v,u -e,f,s,n,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,a,g -p,f,y,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,v,u -e,f,s,n,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,a,g -e,f,s,g,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,a,g -e,x,f,g,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,a,g -e,f,f,n,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,f,g,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,v,d -e,x,f,n,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,v,d -e,x,f,n,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,f,g,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,s,w,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,s,g -e,f,s,w,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,a,g -e,x,s,w,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,s,g -e,f,f,g,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,s,g -e,x,f,n,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,y,d -e,x,s,w,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,s,n,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,s,g -e,f,s,g,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,s,g -p,f,y,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,s,g -e,f,s,n,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,s,g -e,f,y,y,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,y,g -e,x,f,g,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,y,d -e,f,s,g,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,s,g,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,a,g -p,f,y,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,s,u -e,x,s,w,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,a,g -e,x,s,w,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,a,g -e,f,s,g,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,a,g -e,f,s,n,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,f,n,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,s,g -e,f,s,n,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,s,g -e,f,s,n,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,f,w,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,a,g -e,f,f,w,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,a,g -e,f,f,n,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,a,g -e,x,y,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,s,n,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,a,g -e,x,s,g,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,s,g -e,f,s,w,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,a,g -p,x,s,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,s,u -e,x,s,w,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,s,g -e,x,f,n,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,v,d -e,f,f,g,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,s,g,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,a,g -e,f,f,n,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,a,g -e,f,s,n,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,s,g,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,s,g -e,f,y,n,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,s,p -p,f,y,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,s,n,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,f,n,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,v,d -p,f,y,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,s,g -p,x,s,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,s,u -p,f,s,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,s,u -e,x,f,n,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,y,d -e,b,y,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,m -p,f,y,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,s,g -e,f,f,w,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,a,g -e,x,s,w,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,f,n,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,y,d -e,x,s,n,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,a,g -e,f,f,n,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,s,g -e,f,f,n,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,s,g -p,f,y,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,s,u -p,f,y,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,v,g -e,x,s,n,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,s,g -e,f,f,g,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,f,n,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,v,d -e,f,s,g,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,s,g -e,f,f,n,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,a,g -p,f,s,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,v,u -e,x,f,n,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,a,g -p,f,y,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,v,g -e,x,s,g,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,a,g -e,f,f,w,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,s,g -e,x,s,w,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,f,n,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,y,d -e,x,s,n,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,s,g -p,f,s,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,s,u -e,x,f,n,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,v,d -e,x,s,w,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,s,g -e,f,s,w,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,s,g -e,x,s,w,t,a,f,w,n,n,t,b,s,s,w,w,p,w,o,p,u,v,d -e,x,f,n,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,y,g,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,v,d -e,x,f,n,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,y,d -e,x,s,y,t,a,f,w,n,p,t,b,s,s,w,w,p,w,o,p,u,v,d -e,f,f,g,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,s,n,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,s,g -e,x,y,e,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,y,d -e,f,s,g,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,a,g -p,f,s,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,v,u -e,f,f,w,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,f,g,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,a,g -e,f,f,n,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,s,g -e,f,s,n,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,a,g -e,x,f,w,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,a,g -p,f,y,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,s,g -e,x,f,w,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,s,g -e,f,s,n,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,s,n,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,s,g -e,x,f,g,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,s,g -e,x,s,n,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,a,g -e,f,y,y,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,y,g -p,x,y,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,f,w,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,a,g -e,f,s,w,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,s,g -e,x,s,n,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,s,g -p,f,y,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,s,g -e,f,f,g,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,s,g -p,f,s,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,s,u -e,f,s,n,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,s,g -e,x,s,g,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,s,g -e,x,f,g,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,a,g -e,f,f,n,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,s,g -e,f,s,g,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,s,w,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,f,n,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,a,g -e,x,f,g,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,s,g -e,f,f,n,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,a,g -e,b,y,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,m -e,f,f,g,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,f,g,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,a,g -e,f,f,w,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,f,n,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,y,d -p,f,s,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,s,u -e,x,f,n,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,y,d -e,x,f,n,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,f,n,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,y,d -e,x,f,w,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,a,g -e,f,s,g,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,s,g -e,f,s,n,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,y,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,m -e,x,f,w,t,a,f,w,n,p,t,b,s,s,w,w,p,w,o,p,u,v,d -e,f,f,g,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,a,g -e,f,f,n,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,a,g -e,f,f,n,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,s,g -e,b,y,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,g -e,x,f,n,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,s,g -e,x,y,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,g -e,f,s,w,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,s,g -e,x,s,w,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,f,n,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,s,n,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,s,n,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,y,n,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,y,d -e,f,s,g,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,s,g -e,x,y,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,s,w,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,a,g -p,f,y,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,s,u -e,f,s,w,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,s,g -p,f,s,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,s,u -e,f,s,g,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,s,g -e,f,f,g,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,s,g -p,x,s,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,s,g -e,x,s,g,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,a,g -p,x,s,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,s,u -e,x,s,g,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,s,g -e,f,s,w,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,s,g -p,f,y,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,v,g -e,x,f,w,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,s,n,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,f,w,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,f,w,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,a,g -e,x,y,e,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,y,d -p,f,s,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,s,u -e,f,f,g,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,s,g -e,x,y,y,t,a,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,y,g -e,x,f,n,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,a,g -e,f,f,n,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,a,g -e,b,s,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,m -e,f,s,g,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,a,g -e,f,f,w,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,a,g -e,f,f,n,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,a,g -p,f,s,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,s,u -e,x,s,n,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,a,g -e,b,y,y,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,g -e,f,s,g,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,a,g -e,f,s,n,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,s,g -e,x,f,g,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,a,g -e,f,s,g,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,s,g -e,x,f,n,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,a,g -e,x,f,n,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,v,d -e,b,y,w,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,m -e,x,f,g,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,v,d -p,f,y,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,s,g -e,x,s,w,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,a,g -p,f,s,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,v,u -e,f,s,n,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,a,g -e,f,f,n,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,a,g -e,x,f,w,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,a,g -e,x,f,n,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,a,g -e,f,s,n,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,s,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,s,g -e,f,s,w,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,a,g -e,x,s,w,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,s,g -p,x,y,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,v,g -e,f,f,g,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,a,g -p,f,y,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,s,g -e,f,f,w,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,f,n,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,v,d -e,x,f,g,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,s,g -p,f,s,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,v,u -e,f,s,g,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,s,g -p,x,s,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,v,u -e,x,f,n,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,v,d -e,x,f,n,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,y,y,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,s,p -e,f,f,w,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,s,g -e,f,s,w,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,f,g,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,s,g -e,f,f,g,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,s,g -e,f,f,w,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,f,g,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,s,g -e,f,f,g,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,f,g,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,s,g,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,a,g -e,f,s,g,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,s,g -e,x,y,n,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,s,g -e,x,y,g,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,y,d -e,f,s,g,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,a,g -e,f,f,w,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,s,g -e,f,s,n,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,a,g -e,f,f,w,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,s,g -e,f,f,n,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,a,g -e,f,s,g,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,s,n,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,f,n,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,y,d -e,x,s,n,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,f,n,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,a,g -e,f,s,w,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,f,n,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,y,u -p,f,s,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,s,u -p,f,s,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,v,g -e,x,f,n,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,v,d -e,x,s,w,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,a,g -e,f,f,g,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,s,n,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,f,n,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,s,g,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,s,g -e,f,f,g,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,a,g -e,f,s,n,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,s,g -e,f,s,g,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,a,g -e,x,f,e,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,v,d -p,f,y,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,v,u -e,x,f,n,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,f,n,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,v,d -p,f,s,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,s,u -p,f,s,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,v,g -p,f,s,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,s,u -e,f,f,w,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,a,g -e,f,s,n,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,s,g -e,f,f,n,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,a,g -e,x,s,n,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,a,g -e,f,s,n,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,a,g -p,f,s,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,v,g -p,f,s,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,v,g -e,f,s,g,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,s,n,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,a,g -e,x,s,n,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,f,n,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,v,d -e,x,f,n,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,v,d -e,f,f,w,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,a,g -e,f,f,w,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,f,w,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,a,g -e,x,s,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,m -e,f,s,g,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,s,w,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,f,n,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,f,n,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,a,g -e,x,s,w,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,s,n,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,s,g -e,x,s,g,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,s,g,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,s,g -e,f,s,w,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,s,n,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,a,g -e,f,f,g,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,s,g -e,f,f,w,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,s,g -e,x,f,w,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,a,g -e,f,f,g,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,s,g -e,x,f,g,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,a,g -e,x,y,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,s,y,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,s,w,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,a,g -p,x,y,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,s,g -e,x,f,w,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,s,g -p,x,s,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,s,u -e,x,y,g,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,v,d -p,f,s,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,y,y,t,l,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,y,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,m -e,f,y,n,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,y,p -e,x,s,w,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,s,g -e,f,s,n,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,s,g -e,x,s,g,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,s,w,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,a,g -e,f,s,n,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,s,g -e,f,s,n,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,s,g,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,s,g -e,b,s,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,g -e,x,s,g,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,s,g -e,x,s,y,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,m -p,f,y,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,v,g -e,f,s,w,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,s,g -e,f,s,n,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,s,g -e,f,s,g,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,s,g -e,f,f,g,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,y,n,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,y,d -e,x,f,n,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,y,y,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,y,p -e,x,f,g,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,y,d -e,f,f,g,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,a,g -e,f,s,n,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,s,g -e,f,s,w,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,f,g,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,a,g -e,f,s,w,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,s,g -e,f,f,g,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,a,g -e,x,f,g,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,s,n,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,f,n,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,y,d -e,f,s,w,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,s,g -e,f,f,n,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,s,g -p,f,y,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,s,g -e,x,f,n,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,y,d -e,x,f,n,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,s,g -e,f,f,w,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,s,g -p,f,y,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,v,u -e,f,f,g,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,s,g -e,x,f,g,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,v,d -e,x,f,w,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,a,g -e,x,f,g,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,s,g -e,x,f,n,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,v,d -e,x,s,g,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,a,g -e,f,f,w,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,f,g,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,y,d -e,x,y,w,t,l,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,n,g -e,x,y,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,m -e,f,s,g,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,s,g -e,f,s,w,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,a,g -e,f,s,n,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,s,g -e,f,s,w,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,a,g -e,x,f,n,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,s,n,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,s,g -e,b,y,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,n,m -p,f,y,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,v,g -e,x,s,n,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,a,g -e,f,s,n,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,s,g -e,x,y,n,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,k,s,g -e,x,s,g,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,a,g -e,f,s,w,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,a,g -p,x,s,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,v,u -e,f,s,g,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,a,g -e,x,f,w,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,s,g -p,f,s,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,v,g -e,x,f,n,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,s,n,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,a,g -e,x,f,n,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,v,d -e,f,s,w,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,s,g -p,f,s,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,v,u -e,x,f,w,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,a,g -e,f,f,n,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,s,g -e,f,s,g,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,f,w,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,a,g -e,f,y,n,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,y,g -p,f,s,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,s,g -e,x,f,w,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,a,g -e,f,f,n,f,n,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,y,u -p,f,y,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,s,u -e,f,s,w,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,f,g,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,s,g -e,f,y,y,t,a,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,y,p -e,x,f,w,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,f,w,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,a,g -p,f,y,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,s,g -e,f,f,n,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,s,g -e,f,f,g,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,f,n,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,s,g -e,x,f,n,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,v,d -e,x,s,g,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,s,g -e,x,s,g,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,a,g -e,x,f,w,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,s,g -e,f,f,g,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,f,n,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,y,d -e,x,s,w,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,s,g -p,x,s,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,s,u -e,f,s,g,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,s,n,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,f,n,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,v,d -e,x,y,y,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,y,g -e,x,s,g,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,a,g -e,x,f,n,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,a,g -e,x,f,w,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,y,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,f,n,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,f,w,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,f,w,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,a,g -p,f,s,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,s,u -p,f,s,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,s,n,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,f,g,f,n,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,v,u -e,f,s,n,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,s,g -e,x,s,w,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,a,g -p,f,s,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,s,g -e,b,s,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,f,n,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,a,g -p,f,y,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,s,u -e,x,s,g,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,a,g -e,x,s,g,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,s,w,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,s,g -p,f,s,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,v,u -e,f,s,w,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,a,g -e,x,f,n,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,a,g -e,f,f,n,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,f,n,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,a,g -p,f,y,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,v,g -e,x,f,w,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,s,g -e,f,s,w,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,a,g -p,f,y,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,v,u -e,f,s,g,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,a,g -e,f,y,n,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,v,d -e,x,f,g,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,f,g,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,v,d -e,f,s,g,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,f,g,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,y,d -e,x,f,g,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,s,g -p,f,s,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,s,g -e,f,f,n,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,v,d -p,x,s,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,v,g -e,x,s,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,s,w,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,y,y,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,g -p,x,f,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,g -e,f,s,n,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,a,g -e,f,s,w,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,f,n,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,v,d -e,f,s,n,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,s,g -e,x,f,n,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,s,g -p,x,s,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,v,u -e,f,f,n,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,y,d -e,x,y,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,g -e,f,f,g,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,s,g -e,x,y,e,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,f,w,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,s,g -e,x,s,g,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,a,g -e,x,y,n,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,v,d -e,f,s,w,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,a,g -e,x,f,g,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,v,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,y,d -e,f,f,w,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,y,n,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,y,d -e,x,s,g,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,s,g -e,x,f,g,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,a,g -e,f,f,w,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,y,g,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,v,d -p,f,y,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,s,u -e,x,y,e,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,v,d -e,f,f,w,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,s,g -e,f,s,g,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,a,g -e,x,y,g,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,v,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,v,d -e,x,s,w,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,a,g -e,x,f,e,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,v,d -e,x,f,n,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,y,d -e,x,f,n,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,y,d -e,x,f,y,t,a,f,w,n,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,v,d -p,f,s,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,v,g -e,x,s,w,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,s,g -e,x,f,e,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,y,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,v,d -e,x,f,w,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,a,g -e,x,f,g,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,y,d -e,x,s,g,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,y,e,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,y,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,v,d -e,x,s,w,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,a,g -e,x,s,n,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,a,g -e,x,s,w,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,s,g -e,x,s,n,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,s,g -e,f,f,e,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,y,d -e,f,f,w,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,a,g -e,f,f,g,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,y,e,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,y,d -e,f,s,n,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,s,w,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,s,w,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,a,g -e,x,f,w,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,f,e,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,v,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,v,d -e,f,f,w,t,l,f,w,n,p,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,f,w,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,a,g -p,f,y,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,s,g -e,f,f,g,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,v,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,v,d -e,x,s,w,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,f,w,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,s,n,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,f,n,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,s,g,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,y,n,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,v,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,y,d -e,f,s,g,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,s,g -e,f,s,n,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,a,g -e,x,s,g,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,s,g -e,f,f,g,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,y,d -e,x,s,w,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,a,g -e,f,f,n,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,a,g -e,f,s,w,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,s,g -e,x,f,g,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,s,g -e,f,f,n,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,a,g -e,f,f,n,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,a,g -e,x,f,n,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,v,d -e,f,s,g,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,a,g -e,f,s,w,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,y,e,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,v,d -e,x,f,g,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,s,g -e,f,f,g,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,a,g -e,f,y,y,t,l,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,y,g -p,f,y,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,v,u -e,f,s,n,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,a,g -e,f,f,n,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,s,g -e,f,f,n,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,y,d -e,f,f,g,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,f,n,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,k,s,g -e,x,f,g,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,y,e,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,v,d -e,x,f,n,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,s,g -e,x,f,n,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,a,g -e,f,s,w,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,s,g -e,f,s,g,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,s,g -p,f,y,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,s,u -e,b,s,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,g -e,x,f,n,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,v,d -e,f,f,g,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,a,g -e,x,f,n,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,s,n,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,s,g -e,f,s,w,t,l,f,w,n,n,t,b,s,s,w,w,p,w,o,p,u,v,d -e,x,f,w,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,s,w,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,a,g -e,x,s,g,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,s,g -e,x,y,e,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,v,d -e,x,f,n,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,v,d -e,f,f,w,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,s,g -e,f,s,n,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,s,g -p,f,s,w,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,n,v,u -e,f,f,n,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,y,g,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,v,d -e,x,f,g,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,f,g,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,v,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,v,d -e,x,f,n,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,v,d -p,x,s,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,v,g -e,x,f,n,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,s,g -e,x,y,n,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,v,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,y,d -p,f,y,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,s,g -e,x,f,g,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,y,d -e,x,f,g,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,s,g -e,x,f,e,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,v,d -e,f,f,n,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,s,g -e,f,s,w,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,a,g -e,f,s,n,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,k,s,g -e,x,y,e,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,s,n,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,s,g -e,f,f,n,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,v,d -e,f,s,w,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,s,g -e,x,f,n,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,a,g -e,f,f,n,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,s,g -p,x,s,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,v,u -e,x,f,n,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,y,d -e,f,s,n,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,s,g -p,f,y,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,s,g -e,x,f,n,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,v,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,y,d -e,f,f,n,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,f,e,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,v,d -e,f,f,w,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,f,w,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,s,g -e,x,y,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,s,w,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,y,g,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,v,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,s,g,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,a,g -p,f,y,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,s,u -e,x,f,e,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,v,d -p,f,s,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,s,u -p,f,y,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,v,g -e,x,f,g,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,v,d -e,f,s,n,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,f,g,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,y,d -e,x,f,n,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,a,g -e,x,f,n,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,y,d -e,f,s,n,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,s,g -e,f,f,n,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,a,g -e,x,s,n,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,a,g -e,x,s,n,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,s,g -e,x,f,n,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,v,d -e,f,s,n,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,a,g -e,x,f,n,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,y,d -p,f,y,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,v,u -e,x,y,y,t,l,f,c,b,n,e,r,s,y,w,w,p,w,o,p,n,s,g -p,f,s,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,s,g -e,f,f,w,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,n,s,g -e,f,f,n,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,a,g -p,f,s,n,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,v,g -e,x,s,n,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,f,n,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,s,g -e,x,f,e,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,v,d -e,f,f,n,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,f,w,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,s,g -e,f,s,g,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,a,g -e,f,f,w,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,s,g -e,f,s,y,t,a,f,w,n,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,f,w,t,a,f,w,n,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,f,n,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,f,n,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,y,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,y,d -e,x,f,n,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,s,g -e,x,f,g,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,y,d -e,x,f,n,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,v,d -e,x,f,g,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,a,g -e,x,f,n,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,v,d -e,x,s,n,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,a,g -e,b,y,w,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,m -e,x,y,e,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,v,d -e,f,s,n,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,f,e,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,y,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,v,d -e,x,s,g,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,s,n,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,k,s,g -e,x,f,g,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,s,g,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,y,e,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,y,d -e,x,f,n,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,s,g -e,f,s,n,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,f,w,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,s,g -e,x,y,y,t,a,f,c,b,p,e,r,s,y,w,w,p,w,o,p,n,s,p -e,x,f,e,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,v,d -e,x,f,n,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,s,g -e,x,y,n,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,y,d -e,x,f,w,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,a,g -e,x,y,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,m -e,x,s,n,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,s,g -e,f,s,w,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,a,g -e,f,f,n,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,v,d -e,f,f,w,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,s,g -e,x,f,g,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,v,d -e,x,f,n,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,y,d -e,x,f,w,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,s,w,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,m -e,f,s,g,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,s,g -p,f,y,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,v,g -e,f,f,g,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,f,n,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,v,d -e,x,f,w,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,y,n,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,v,d -p,f,s,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,v,u -e,f,s,g,f,n,f,w,b,p,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,f,g,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,y,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,y,d -p,x,s,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,v,u -e,x,s,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,n,m -e,x,f,n,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,v,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,y,d -e,x,s,g,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,y,e,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,y,d -e,x,f,g,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,s,g -e,f,s,w,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,f,n,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,v,d -e,f,f,g,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,s,g -e,f,f,g,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,s,g -e,f,f,n,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,f,g,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,y,d -p,f,y,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,s,u -e,x,y,g,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,v,d -e,x,s,w,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,a,g -e,b,s,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,n,s,m -e,x,s,w,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,s,g -e,f,f,n,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,k,s,g -e,x,y,g,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,f,g,f,n,f,w,b,p,t,e,f,s,w,w,p,w,o,e,k,s,g -p,x,s,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,s,g -e,x,s,n,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,y,g,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,y,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,v,d -p,x,s,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,v,g -e,x,f,e,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,v,d -e,x,f,n,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,v,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,v,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,g -p,f,s,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,s,g -e,x,f,e,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,v,d -e,x,f,w,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,y,n,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,y,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,y,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,v,d -p,f,s,n,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,v,u -e,f,f,e,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,y,d -p,x,s,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,s,g -e,x,f,e,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,y,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,v,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,y,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,y,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,v,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,v,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,y,d -e,x,s,g,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,y,e,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,y,d -e,x,s,w,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,f,n,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,v,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,y,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,v,d -p,x,s,p,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,n,s,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,y,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,v,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,y,d -e,x,f,w,f,n,f,w,b,k,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,y,g,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,y,d -e,f,f,g,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,s,g -p,x,f,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,p -e,x,f,e,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,y,d -p,f,s,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,k,v,g -e,f,y,n,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,v,d -e,x,f,g,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,a,g -e,x,f,n,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,y,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,y,d -e,f,f,g,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,n,s,g -e,f,f,g,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,y,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,v,d -e,f,s,g,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,a,g -e,x,f,n,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,y,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,y,d -e,f,s,w,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,a,g -e,x,y,n,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,v,d -e,f,f,n,f,n,f,w,b,n,t,e,s,f,w,w,p,w,o,e,k,s,g -e,f,f,g,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,y,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,v,d -e,x,f,n,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,y,d -p,x,s,p,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,y,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,y,d -p,f,s,n,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,k,s,u -e,x,y,n,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,y,d -e,f,s,w,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,k,s,g -e,x,y,g,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,v,d -e,x,f,n,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,f,n,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,v,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,v,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,y,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,v,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,y,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,y,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,v,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,y,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,v,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,v,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,v,d -e,x,f,w,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,n,s,g -e,f,y,g,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,y,d -e,f,s,g,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,n,s,g -e,f,f,n,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,y,d -p,f,y,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,s,u -e,x,y,g,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,v,d -e,f,s,w,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,y,n,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,y,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,y,d -p,f,s,w,t,p,f,c,n,w,e,e,s,s,w,w,p,w,o,p,n,v,u -e,x,f,g,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,v,d -e,f,s,w,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,s,g -e,x,s,g,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,n,s,g -e,x,f,g,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,y,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,f,n,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,k,a,g -p,x,s,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,n,v,g -e,x,y,g,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,f,n,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,y,d -p,x,s,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,v,g -e,f,f,g,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,v,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,y,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,y,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,v,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,y,d -e,x,f,n,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,v,d -p,x,s,p,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,y,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,y,d -e,f,f,e,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,g -e,x,y,n,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,y,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,y,d -e,x,f,g,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,n,a,g -e,x,y,g,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,y,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,f,n,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,v,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,v,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,v,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,y,d -p,f,y,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,s,u -e,x,s,g,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,f,g,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,y,d -p,x,s,p,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,n,s,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,v,d -e,x,s,w,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,s,g -e,f,f,g,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,y,d -p,f,y,w,t,p,f,c,n,p,e,e,s,s,w,w,p,w,o,p,n,v,u -e,f,f,n,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,v,d -e,f,s,w,f,n,f,w,b,h,t,e,f,f,w,w,p,w,o,e,k,s,g -e,x,f,n,f,n,f,w,b,k,t,e,f,s,w,w,p,w,o,e,n,a,g -e,x,f,n,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,v,d -p,x,s,w,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,n,s,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,y,d -e,f,s,w,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,y,g,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,y,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,y,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,p -e,f,f,g,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,d -p,x,f,p,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,n,s,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,v,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,y,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,y,d -p,x,f,w,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,g -e,x,y,n,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,y,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,y,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,y,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,p -e,x,f,g,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,y,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,p -e,x,f,e,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,y,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,y,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,y,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,v,d -e,x,f,n,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,v,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,v,d -p,x,f,g,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,v,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,y,d -e,f,s,n,f,n,f,w,b,p,t,e,s,f,w,w,p,w,o,e,k,a,g -e,f,f,n,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,v,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,y,d -e,f,f,w,f,n,f,w,b,h,t,e,s,f,w,w,p,w,o,e,k,s,g -e,x,y,n,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,v,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,y,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,v,d -p,x,f,p,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,y,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,v,d -e,f,s,n,f,n,f,w,b,n,t,e,s,s,w,w,p,w,o,e,n,a,g -e,x,y,g,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,g -e,x,y,e,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,y,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,v,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,y,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,y,d -e,x,s,g,f,n,f,w,b,h,t,e,f,s,w,w,p,w,o,e,k,s,g -e,f,f,n,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,y,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,y,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,y,d -p,x,f,g,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,y,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,y,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,v,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,y,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,v,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,v,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,y,d -e,f,s,g,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,k,s,g -e,x,y,e,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,v,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,v,d -p,x,f,w,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,n,s,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,y,d -e,f,f,w,f,n,f,w,b,h,t,e,s,s,w,w,p,w,o,e,n,s,g -e,x,f,g,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,v,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,v,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,y,d -e,f,f,n,f,n,f,w,b,n,t,e,f,f,w,w,p,w,o,e,k,s,g -e,x,f,e,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,y,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,y,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,y,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,v,d -p,x,f,p,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,v,d -e,f,s,n,f,n,f,w,b,p,t,e,f,f,w,w,p,w,o,e,n,s,g -e,x,y,g,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,y,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,y,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,y,d -p,x,s,p,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,y,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,y,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,v,d -e,x,s,w,f,n,f,w,b,k,t,e,s,f,w,w,p,w,o,e,k,s,g -e,x,y,n,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,y,d -e,f,f,e,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,y,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,v,d -p,x,s,g,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,k,v,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,v,d -e,x,f,n,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,k,a,g -e,x,y,e,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,y,d -p,x,f,w,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,p -e,x,y,g,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,v,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,y,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,p -e,x,f,g,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,y,d -e,x,f,n,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,p -e,x,f,n,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,y,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,v,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,y,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,y,d -e,x,f,n,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,v,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,y,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,f,g,f,n,f,w,b,n,t,e,f,s,w,w,p,w,o,e,n,s,g -e,x,y,e,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,v,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,v,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,y,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,y,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,v,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,y,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,y,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,v,d -p,x,y,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,p -e,f,y,n,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,d -p,x,f,g,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,y,d -e,f,f,e,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,v,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,y,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,p -e,f,f,g,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,y,d -p,x,f,w,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,n,s,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,g -p,x,f,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,p -e,f,y,e,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,v,d -p,x,f,p,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,k,s,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,y,d -e,f,f,e,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,v,d -p,f,f,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,p -e,f,y,n,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,v,d -p,x,f,g,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,n,s,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,v,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,g -p,f,f,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,v,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,v,d -p,x,s,p,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,y,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,v,d -p,x,s,w,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,v,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,v,d -p,x,s,g,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,n,s,d -p,x,f,p,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,d -p,x,s,w,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,p -e,f,y,n,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,v,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,p -e,f,y,g,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,v,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,y,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,y,d -p,x,s,w,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,n,s,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,p -e,f,y,g,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,y,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,p -e,f,y,n,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,y,d -p,f,f,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,p -e,f,f,e,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,y,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,v,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,p -e,f,y,g,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,p -e,f,f,e,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,g -e,f,y,e,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,g -p,x,f,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,p -p,x,f,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,g -e,f,y,e,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,g -e,f,f,e,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,v,d -p,x,s,g,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,v,d -p,x,s,p,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,n,s,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,y,d -e,f,f,e,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,y,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,g -p,f,f,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,p -p,x,s,g,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,f,e,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,v,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,g -p,x,f,g,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,v,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,y,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,y,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,v,d -p,x,s,g,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,k,v,d -p,x,f,w,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,y,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,v,d -p,x,s,w,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,y,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,v,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,v,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,y,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,v,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,y,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,v,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,v,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,p -e,f,y,g,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,y,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,y,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,v,d -p,x,s,w,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,n,s,d -p,x,f,w,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,n,s,d -e,f,f,n,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,y,d -p,x,s,w,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,n,s,d -e,x,y,e,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,v,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,p -p,x,f,p,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,p -p,x,f,w,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,n,s,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,p -e,f,y,e,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,v,d -p,x,y,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,p -p,x,s,g,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,n,s,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,p -p,x,f,p,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,y,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,y,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,v,d -p,x,y,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,g -e,f,y,n,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,v,d -p,x,f,p,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,k,v,d -p,x,f,w,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,p -e,f,f,e,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,y,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,g -p,x,s,p,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,y,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,v,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,y,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,g -e,f,y,e,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,y,d -p,f,f,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,p -e,f,y,e,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,y,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,g -e,f,y,g,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,g -p,x,f,w,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,n,s,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,v,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,v,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,v,d -p,x,s,g,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,p -p,x,s,w,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,p -p,x,s,w,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,n,s,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,p -e,x,y,g,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,g -e,f,y,e,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,y,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,v,d -p,x,s,w,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,k,s,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,g -e,f,f,e,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,g -e,f,y,n,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,y,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,v,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,y,d -p,x,s,g,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,n,s,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,v,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,v,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,v,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,v,d -p,x,f,p,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,g -e,f,y,g,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,y,d -p,x,s,p,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,p -p,x,f,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,p -e,f,y,n,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,v,d -p,x,s,g,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,n,v,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,d -p,x,f,p,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,n,s,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,y,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,g -e,f,f,g,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,y,d -p,x,f,w,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,p -p,x,f,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,p -p,x,s,p,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,y,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,y,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,y,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,y,d -p,x,f,p,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,v,d -p,x,s,w,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,n,s,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,y,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,g -e,f,f,e,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,g -e,f,f,e,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,g -e,f,y,e,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,v,d -p,x,f,w,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,y,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,v,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,y,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,y,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,y,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,v,d -p,x,f,p,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,n,s,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,v,d -p,x,s,w,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,k,s,d -p,x,f,p,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,p -e,x,f,g,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,v,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,v,d -p,x,s,p,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,g -e,f,y,n,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,y,d -p,x,f,w,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,k,v,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,y,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,p -e,f,f,g,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,v,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,v,d -p,x,f,g,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,y,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,p -e,f,y,n,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,v,d -p,x,s,g,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,n,s,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,g -e,f,f,e,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,v,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,v,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,y,d -p,x,f,w,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,g -p,x,f,g,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,v,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,g -e,f,y,e,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,y,d -p,x,f,p,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,n,s,d -p,x,s,g,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,y,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,v,d -p,x,s,p,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,v,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,v,d -p,f,f,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,p -e,x,f,g,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,y,d -p,x,s,p,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,n,s,d -e,x,y,e,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,y,d -e,f,f,e,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,v,d -p,x,s,w,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,n,v,d -p,x,y,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,d -p,x,f,p,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,y,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,v,d -p,x,f,g,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,n,s,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,y,d -p,x,f,p,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,y,d -p,x,s,w,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,k,s,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,g -p,x,s,g,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,g -p,x,s,p,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,k,v,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,y,d -p,x,s,g,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,n,s,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,y,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,v,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,y,d -p,x,s,g,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,n,s,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,g -p,x,s,g,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,n,s,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,y,d -p,x,f,g,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,k,v,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,y,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,y,d -e,f,f,e,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,v,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,p -p,x,s,g,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,y,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,v,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,p -e,f,y,g,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,y,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,v,d -p,x,f,g,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,v,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,p -e,f,f,e,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,p -e,f,y,g,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,v,d -p,x,f,p,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,n,s,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,v,d -p,x,f,p,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,n,v,d -p,x,s,w,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,n,s,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,v,d -p,x,s,p,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,g -p,x,f,g,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,p -p,x,f,w,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,n,s,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,y,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,y,d -p,x,f,w,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,k,s,d -e,x,y,g,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,y,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,y,d -p,x,f,w,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,y,d -p,x,y,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,v,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,v,d -p,x,f,g,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,n,v,d -p,x,s,p,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,y,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,p -e,x,y,n,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,y,d -p,x,f,g,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,p -e,f,y,g,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,y,d -p,x,s,w,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,n,v,d -p,x,f,w,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,n,s,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,v,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,g -e,f,y,g,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,p -e,f,f,e,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,g -e,f,y,g,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,y,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,d -e,f,f,e,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,v,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,v,d -p,x,f,w,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,y,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,y,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,v,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,g -e,x,f,g,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,v,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,y,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,y,d -p,f,f,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,y,d -p,x,s,g,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,v,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,v,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,v,d -p,x,s,p,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,k,s,d -p,f,f,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,y,d -p,x,f,p,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,n,v,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,v,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,y,d -p,x,s,w,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,y,d -p,x,y,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,v,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,v,d -p,x,s,g,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,v,d -p,x,s,p,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,n,s,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,v,d -p,x,s,p,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,y,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,y,d -e,f,f,n,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,y,d -p,x,f,p,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,v,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,d -p,x,s,g,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,v,d -p,f,f,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,d -p,x,f,g,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,y,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,y,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,g -e,f,f,g,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,p -e,f,y,e,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,y,d -p,f,f,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,v,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,p -e,f,f,e,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,v,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,y,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,g -e,f,y,n,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,y,d -p,x,f,g,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,k,v,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,v,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,v,d -p,x,f,p,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,k,s,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,y,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,g -e,f,y,g,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,g -e,f,y,n,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,g -e,f,f,e,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,y,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,v,d -p,x,y,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,d -p,x,s,g,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,g -p,x,f,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,p -p,f,f,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,p -e,f,f,g,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,v,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,v,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,y,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,y,d -p,x,f,p,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,n,s,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,y,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,g -p,x,f,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,p -e,f,f,g,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,v,d -e,x,f,n,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,y,d -p,x,f,p,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,n,s,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,p -e,x,f,e,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,y,d -p,x,s,g,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,k,s,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,g -e,f,y,n,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,y,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,y,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,g -e,f,f,g,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,y,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,g -p,x,f,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,p -e,f,y,e,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,v,d -p,x,y,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,p -p,f,y,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,p -e,f,y,n,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,v,d -p,x,f,g,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,n,s,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,v,d -p,f,f,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,v,d -e,x,y,e,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,p -e,x,y,n,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,y,d -p,x,s,w,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,v,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,y,d -p,x,s,p,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,f,e,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,y,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,p -e,f,y,n,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,v,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,y,d -p,x,s,p,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,y,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,v,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,y,d -p,x,s,w,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,k,s,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,p -e,f,y,n,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,g -p,x,f,w,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,n,s,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,y,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,v,d -p,x,f,w,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,g -e,f,y,n,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,n,v,d -p,x,s,p,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,y,d -p,x,s,p,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,y,d -p,x,y,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,g -e,f,y,e,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,y,d -p,x,f,p,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,n,s,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,p -e,f,f,e,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,y,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,y,d -p,x,f,g,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,n,s,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,g -e,f,y,g,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,v,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,v,d -p,f,y,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,v,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,y,d -e,x,f,n,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,v,d -p,f,y,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,y,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,y,d -e,x,y,n,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,d -p,x,s,w,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,n,v,d -p,f,f,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,p -e,f,y,n,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,p,g,p,w,o,p,k,y,d -e,f,f,e,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,y,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,v,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,v,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,g -e,f,y,e,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,d -p,x,f,w,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,k,s,d -p,x,f,g,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,k,v,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,y,d -p,f,f,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,p -p,x,s,g,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,y,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,v,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,v,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,p -p,x,f,g,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,v,d -p,x,s,g,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,n,s,d -p,x,f,w,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,g -e,f,y,g,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,v,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,p -e,f,f,e,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,v,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,v,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,y,d -e,x,f,g,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,v,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,y,d -e,f,f,n,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,p -e,f,y,e,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,y,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,y,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,v,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,y,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,v,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,y,d -p,f,f,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,p -e,x,y,n,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,v,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,y,d -p,f,f,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,v,d -p,x,f,g,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,y,d -p,x,s,w,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,v,d -p,x,s,w,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,y,d -p,x,s,g,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,v,d -p,x,f,p,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,y,d -p,x,s,p,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,y,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,g -e,f,y,g,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,g -e,f,y,n,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,v,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,v,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,v,d -p,x,s,p,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,k,s,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,p -e,f,f,e,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,v,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,k,v,d -e,x,f,g,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,d -e,x,y,n,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,y,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,k,y,d -p,x,f,w,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,k,v,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,y,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,g -e,f,y,g,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,y,d -p,x,s,w,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,k,v,d -p,x,s,w,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,k,s,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,v,d -e,f,y,g,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,p -e,f,f,e,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,y,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,y,d -p,x,y,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,g -e,f,f,e,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,y,d -p,x,f,g,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,n,s,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,y,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,y,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,y,d -p,x,s,p,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,g -e,f,y,e,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,n,v,d -p,x,s,w,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,n,v,d -p,x,f,w,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,n,v,d -e,x,y,n,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,v,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,v,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,v,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,d -p,x,f,w,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,k,v,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,y,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,v,d -p,x,f,w,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,k,v,d -p,x,s,g,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,k,s,d -e,x,y,e,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,d -p,x,f,g,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,d -p,x,s,g,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,n,v,d -e,x,f,g,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,v,d -p,x,f,p,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,v,d -p,x,s,p,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,k,v,d -p,x,f,g,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,y,d -p,x,f,g,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,k,s,d -p,x,s,g,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,k,v,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,y,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,y,d -p,x,f,g,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,n,s,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,k,v,d -p,x,s,w,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,n,s,d -e,f,y,n,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,d -p,f,y,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,g -e,f,y,g,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,g -e,f,y,g,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,g -p,f,f,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,p -e,f,f,e,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,v,d -p,x,f,w,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,y,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,p -p,x,y,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,p -p,x,f,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,g -p,x,f,w,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,n,v,d -p,x,y,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,d -p,x,f,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,p -p,f,f,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,d -p,f,f,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,d -e,f,y,g,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,k,y,d -p,x,y,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,g -p,f,f,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,g -e,x,f,g,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,y,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,v,d -p,x,y,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,g -p,f,y,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,g -p,f,y,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,y,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,g -e,f,f,e,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,v,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,g -p,f,f,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,g -e,f,y,e,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,n,v,d -p,x,f,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,g -p,f,y,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,d -p,x,y,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,p -p,x,s,p,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,n,s,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,g -e,f,f,e,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,v,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,k,y,d -p,x,f,p,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,n,v,d -p,x,f,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,g -p,f,y,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,g -e,x,y,g,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,y,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,w,g,p,w,o,p,n,y,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,v,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,d -p,f,y,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,g -e,f,f,e,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,v,d -p,x,y,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,g -p,f,f,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,g -p,x,y,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,g -p,f,f,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,g -p,x,s,p,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,n,s,d -p,x,f,g,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,k,s,d -p,x,y,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,p -p,x,y,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,v,d -p,x,s,g,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,v,u -p,x,y,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,v,d -p,f,f,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,p -p,x,y,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,g -p,f,y,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,g -p,f,y,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,p -p,x,f,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,p -p,x,s,w,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,k,v,d -p,x,y,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,p -p,x,f,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,p -e,f,y,n,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,v,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,v,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,p -p,x,s,p,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,n,s,d -p,f,f,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,g -p,x,f,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,g -p,x,s,w,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,n,v,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,g -p,x,f,p,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,k,v,d -p,f,s,w,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,v,g -p,x,y,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,p -e,x,y,b,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -p,f,f,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,g -p,x,f,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,g -p,x,f,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,g -p,f,f,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,g -e,f,f,g,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,y,d -p,x,f,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,d -p,f,f,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,g -p,x,f,g,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,n,s,d -p,x,f,g,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,n,v,d -p,x,y,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,g -p,x,s,g,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,s,g -p,x,y,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,g -e,f,y,g,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,y,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,v,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,p -e,f,y,n,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,y,d -p,x,y,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,p -p,x,y,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,v,d -p,f,f,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,p -e,f,f,g,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,y,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,n,v,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,p -e,x,f,e,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,v,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,p -p,f,y,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,p -p,x,y,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,d -e,x,f,g,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,v,d -e,x,y,g,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,v,d -p,f,y,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,g -p,f,f,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,d -p,x,y,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,p -p,x,y,e,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,x,y,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,p -p,x,y,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,g -p,x,s,g,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,n,v,d -p,f,f,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,g -p,f,s,b,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,s,g -p,x,y,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,d -p,x,s,w,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,k,s,d -p,x,y,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,d -e,f,f,e,t,n,f,c,b,w,t,b,s,s,w,p,p,w,o,p,k,v,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,g -p,x,f,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,p -p,f,f,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,g -p,x,f,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,k,v,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,y,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,d -p,f,f,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,d -p,x,s,w,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,k,v,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,g,w,p,w,o,p,k,v,d -p,x,f,w,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,k,s,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,d -p,x,f,p,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,n,v,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,d -p,f,f,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,p -e,f,y,e,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,v,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,p -p,f,f,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,p -p,x,f,g,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,n,s,d -p,x,s,p,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,k,v,d -e,x,f,e,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,v,d -p,x,y,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,g -e,f,f,n,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,y,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,k,y,d -p,f,y,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,g -p,x,y,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,d -p,f,f,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,p -e,f,y,g,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,n,y,d -p,x,y,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,p -p,x,y,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,p -p,f,f,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,p -p,f,f,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,p -e,f,f,e,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,y,n,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,v,d -p,x,f,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,g -e,f,y,u,f,n,f,c,n,h,e,?,s,f,w,w,p,w,o,f,h,y,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,y,d -p,f,y,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,g -p,f,f,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,g -p,x,y,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,d -p,x,y,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,p -p,x,y,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,d -p,x,f,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,p -p,x,y,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,p -p,x,f,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,p -e,x,f,g,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,v,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,d -p,f,f,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,d -e,f,y,n,t,n,f,c,b,n,t,b,s,s,w,w,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,y,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,g -e,x,f,e,t,n,f,c,b,w,t,b,s,s,p,p,p,w,o,p,k,v,d -e,f,f,e,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,y,d -p,f,y,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,p -p,x,f,w,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,k,v,d -p,x,y,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,d -p,x,y,e,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,p -p,f,y,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,n,y,d -p,x,y,n,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -e,f,y,e,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,v,d -p,b,s,b,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,m -e,f,f,g,t,n,f,c,b,w,t,b,s,s,g,g,p,w,o,p,k,y,d -p,f,f,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,g -e,f,y,g,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,k,y,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,g -p,f,f,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,g -e,f,f,e,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,v,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,g -p,x,f,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,g -p,f,f,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,g -p,x,y,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,p -e,f,y,e,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,k,v,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,d -p,f,f,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,g -e,f,f,n,t,n,f,c,b,u,t,b,s,s,w,p,p,w,o,p,k,v,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,p -p,x,y,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,p -e,f,y,n,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,y,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,p -e,f,f,e,t,n,f,c,b,p,t,b,s,s,g,g,p,w,o,p,k,y,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,g -p,f,y,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,d -p,x,s,g,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,k,s,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,v,d -p,f,y,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,g -p,x,f,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,p -e,f,y,n,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,v,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,w,t,b,s,s,p,g,p,w,o,p,k,v,d -p,f,s,g,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,v,u -p,x,f,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,p -p,f,y,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,p -p,x,y,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,p -p,x,f,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,p -e,f,y,e,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,n,y,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,g -p,f,y,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,g -p,x,y,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,p -e,f,f,e,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,v,d -e,f,y,e,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,y,d -p,f,f,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,g -p,f,f,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,p -e,f,y,n,t,n,f,c,b,u,t,b,s,s,g,p,p,w,o,p,k,y,d -p,x,y,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,g -e,f,f,g,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,v,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,p -p,x,y,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,d -e,f,f,c,f,n,f,w,n,w,e,b,f,f,w,n,p,w,o,e,w,v,l -p,x,f,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,d -p,f,f,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,g -p,x,y,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,g -p,f,y,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,g -p,x,s,b,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,s,u -p,f,f,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,d -p,x,y,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,g -p,f,f,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,p -p,f,f,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,y,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,p -p,x,f,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,p -e,f,y,e,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,k,y,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,p -p,f,f,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,d -e,f,f,g,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,y,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,g -p,x,f,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,p -e,f,y,n,t,n,f,c,b,p,t,b,s,s,p,w,p,w,o,p,n,y,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,n,v,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,d -p,f,y,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,p -p,f,f,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,p -p,f,f,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,p -p,f,y,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,g -p,f,s,b,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,s,u -e,f,f,e,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,y,d -p,x,y,n,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -e,x,y,g,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,v,d -p,x,f,g,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,k,v,d -p,x,f,p,f,c,f,w,n,n,e,b,s,s,w,w,p,w,o,p,n,v,d -p,x,y,n,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,f,f,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,p -p,x,f,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,g -p,x,s,g,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,s,u -p,f,y,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,p -p,x,f,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,d -p,x,y,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,g -p,f,f,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,g -p,x,f,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,g -p,f,f,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,g -p,x,f,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,g -p,x,f,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,g -p,x,y,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,g -p,f,s,g,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,v,u -p,x,f,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,g -p,f,f,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,g -p,f,y,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,d -p,f,f,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,p -p,x,y,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,p -e,f,y,e,t,n,f,c,b,p,t,b,s,s,w,w,p,w,o,p,n,v,d -p,f,f,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,d -p,f,f,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,p -p,x,f,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,g -p,x,f,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,p -p,x,f,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,p -p,f,s,w,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,s,u -p,f,f,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,g -p,f,f,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,d -p,f,f,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,p -p,x,y,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,g -p,x,f,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,g -p,x,f,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,d -p,x,s,w,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,s,g -p,f,f,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,g -p,x,s,b,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,s,g -p,f,y,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,d -p,x,y,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,g -p,x,f,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,g -p,x,y,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,g -e,f,y,g,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,y,d -p,f,y,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,p -p,x,y,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,g -p,f,y,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,p -p,f,f,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,p -p,f,f,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,g -p,x,y,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,p -p,x,f,p,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,k,s,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,g -p,f,f,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,g -p,x,y,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,g -p,f,f,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,g -p,x,y,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,d -p,x,f,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,g -p,x,f,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,p -p,x,y,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,d -p,f,y,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,p -p,f,y,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,d -p,x,f,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,p -e,k,y,n,f,n,f,w,n,w,e,b,f,f,w,n,p,w,o,e,w,v,l -p,f,f,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,p -p,x,y,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,g -p,f,f,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,g -p,x,y,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,d -p,x,f,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,g -e,f,s,p,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -p,f,f,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,p -p,x,f,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,d -p,x,y,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,p -p,x,f,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,g -p,f,y,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,g -e,k,s,p,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -p,x,f,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,p -p,f,f,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,g -p,x,f,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,p -p,x,y,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,g -p,f,y,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,g -p,f,f,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,g -p,f,f,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,d -p,f,f,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,g -e,f,y,g,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,n,y,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,d -p,f,y,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,g -p,x,y,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,g -p,x,y,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,g -p,x,y,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,g -p,x,y,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,g -p,x,f,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,d -p,f,f,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,g -p,f,y,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,d -p,f,f,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,g -p,f,y,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,g -p,f,f,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,g -p,x,f,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,p -p,f,y,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,g -p,f,y,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,g -p,f,y,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,p -e,x,y,r,f,n,f,c,n,p,e,?,s,f,w,w,p,w,o,f,h,v,d -p,f,y,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,g -p,x,f,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,d -p,x,y,n,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,f,y,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,d -p,k,y,n,f,n,f,c,n,w,e,?,k,y,w,n,p,w,o,e,w,v,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,g -p,f,y,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,g -p,x,f,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,d -p,x,y,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,d -p,x,y,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,g -p,x,y,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,g -e,f,y,e,t,n,f,c,b,w,t,b,s,s,g,p,p,w,o,p,k,y,d -p,f,f,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,p -p,x,y,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,g -p,f,f,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,g -p,x,f,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,p -p,f,f,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,g -p,f,f,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,g -p,x,y,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,g -p,f,s,b,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,s,u -p,x,y,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,g -p,x,y,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,p -p,f,f,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,p -p,f,y,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,g -p,x,y,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,g -e,x,s,e,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -p,f,f,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,p -p,f,y,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,d -p,x,f,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,g -p,b,y,w,t,n,f,w,n,w,e,b,s,s,w,w,p,w,o,p,w,c,l -p,f,s,b,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,v,u -p,x,y,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,p -p,f,y,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,p -p,f,y,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,p -p,f,f,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,d -p,x,y,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,g -p,f,f,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,g -p,x,s,w,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,s,u -e,f,y,g,t,n,f,c,b,n,t,b,s,s,g,p,p,w,o,p,n,v,d -p,x,y,n,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,g -e,f,y,e,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,v,d -e,x,y,b,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -p,x,y,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,g -p,x,y,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,d -p,x,y,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,p -p,x,y,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,g -p,f,f,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,g -p,f,y,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,g -p,x,f,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,g -p,f,y,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,g -p,x,y,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,g -p,x,y,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,g -p,f,y,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,p -p,f,y,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,g -p,x,y,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,p -e,x,y,u,f,n,f,c,n,h,e,?,s,f,w,w,p,w,o,f,h,y,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,g -p,f,f,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,g -p,f,f,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,g -p,x,f,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,g -p,f,f,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,g -p,f,f,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,g -p,f,y,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,d -p,f,f,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,g -p,f,f,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,d -p,f,y,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,p -p,f,f,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,p -p,f,y,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,g -p,f,f,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,d -e,f,f,e,t,n,f,c,b,u,t,b,s,s,g,w,p,w,o,p,n,y,d -p,f,s,b,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,v,u -p,f,y,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,d -p,f,f,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,p -p,x,y,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,g -p,f,f,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,p -p,f,y,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,d -e,f,y,n,t,n,f,c,b,u,t,b,s,s,w,g,p,w,o,p,k,v,d -p,f,y,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,g -e,x,s,b,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -p,x,y,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,g -p,x,f,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,d -p,x,y,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,g -p,f,y,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,p -e,f,f,e,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,k,y,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,g -p,x,y,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,g -p,x,y,n,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,p -p,x,y,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,g -p,f,f,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,p -p,f,f,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,p -p,f,y,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,g -p,f,y,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,g -p,x,s,g,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,k,v,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,g -p,f,s,g,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,s,u -p,x,y,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,g -p,x,y,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,p -p,x,y,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,d -e,f,y,g,t,n,f,c,b,u,t,b,s,s,p,g,p,w,o,p,k,y,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,d -p,f,y,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,g -p,f,y,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,p -p,x,y,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,g -p,x,y,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,p -e,f,y,n,t,n,f,c,b,n,t,b,s,s,g,g,p,w,o,p,n,v,d -p,x,y,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,g -p,f,f,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,g -p,x,y,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,p -p,x,y,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,g -p,f,f,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,g -p,x,y,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,g -e,k,y,b,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -p,x,y,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,p -p,x,y,n,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,p -p,x,y,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,p -p,f,y,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,g -p,f,y,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,d -p,f,f,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,g -p,f,y,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,g -p,x,f,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,d -p,x,s,w,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,v,u -p,x,y,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,g -p,f,f,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,p -p,x,f,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,g -p,x,y,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,p -p,f,y,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,g -p,x,y,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,g -p,x,y,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,p -p,f,y,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,p -e,f,y,n,t,n,f,c,b,p,t,b,s,s,w,p,p,w,o,p,k,y,d -p,x,y,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,d -p,x,y,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,p -p,f,y,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,g -p,f,y,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,g -p,x,y,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,p -p,x,y,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,d -p,x,f,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,d -p,f,f,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,d -e,f,f,c,f,n,f,w,n,w,e,b,s,f,w,n,p,w,o,e,w,v,l -p,f,y,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,g -p,x,y,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,p -p,f,f,y,f,n,f,c,n,w,e,?,k,y,w,y,p,w,o,e,w,v,d -p,f,f,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,p -p,x,s,g,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,v,g -e,f,s,n,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -p,x,y,n,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,x,s,g,f,c,f,w,n,u,e,b,s,s,w,w,p,w,o,p,k,v,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,g -p,f,y,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,g -p,x,y,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,g -p,x,y,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,g -p,f,f,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,g -p,x,f,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,p -p,f,f,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,p -p,f,y,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,d -p,f,f,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,p -p,f,f,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,g -p,x,y,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,g -p,x,y,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,d -e,x,s,b,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -p,f,f,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,d -p,x,y,n,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,x,y,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,p -p,f,y,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,d -p,f,f,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,g -p,x,y,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,d -p,x,f,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,g -p,f,f,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,p -p,x,y,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,p -p,f,f,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,g -p,x,f,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,g -e,x,y,u,f,n,f,c,n,h,e,?,s,f,w,w,p,w,o,f,h,v,d -e,f,y,b,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -p,f,y,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,p -p,x,y,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,g -p,f,f,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,g -p,f,f,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,g -p,f,y,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,g -p,x,f,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,g -p,f,f,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,d -p,f,f,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,d -p,f,y,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,g -p,f,y,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,g -p,f,f,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,g -p,f,s,b,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,v,g -p,f,s,w,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,m -p,x,y,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,p -p,f,y,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,g -p,x,y,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,p -p,x,f,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,g,g,p,w,o,p,n,v,d -e,x,y,u,f,n,f,c,n,u,e,?,s,f,w,w,p,w,o,f,h,v,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,g -p,x,y,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,d -p,x,y,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,p -p,x,f,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,g -p,x,y,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,p -p,f,y,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,g -p,f,y,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,p -p,x,f,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,p -e,f,f,e,t,n,f,c,b,w,t,b,s,s,w,g,p,w,o,p,n,v,d -p,x,y,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,d -p,x,y,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,p -p,f,y,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,p -p,f,f,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,d -p,f,f,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,g -p,f,y,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,d -p,f,f,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,d -p,x,f,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,d -p,x,y,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,p -p,x,y,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,p -p,x,f,w,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,n,v,d -p,f,f,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,d -p,x,f,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,p -p,f,y,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,g -p,f,y,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,d -p,f,y,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,d -p,f,f,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,p -p,x,y,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,g -p,f,y,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,g -p,f,f,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,p -p,x,f,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,d -p,f,f,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,g -p,x,y,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,g -p,f,y,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,d -p,f,f,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,d -p,f,f,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,g -p,f,f,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,d -p,f,f,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,g -p,f,f,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,d -p,f,f,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,d -p,x,y,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,g -p,x,y,n,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -e,f,y,b,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -p,x,f,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,g -p,x,y,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,p -p,f,y,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,d -p,f,f,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,p -p,x,f,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,p -p,f,f,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,g -p,f,f,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,p -p,f,y,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,g -p,f,f,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,g -p,f,y,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,d -p,f,f,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,d -p,f,y,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,p -p,x,f,g,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,k,s,d -p,f,s,b,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,v,g -e,f,f,e,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,k,v,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,p -p,x,y,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,g -e,f,f,g,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,k,v,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,p -p,f,f,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,p -p,x,f,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,p -p,x,f,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,g -p,f,s,w,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,s,u -p,x,y,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,g -p,f,y,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,p -p,x,y,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,p -p,x,f,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,d -e,f,y,u,f,n,f,c,n,h,e,?,s,f,w,w,p,w,o,f,h,v,d -p,f,f,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,g -p,x,y,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,g -p,f,f,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,g -e,f,y,n,t,n,f,c,b,n,t,b,s,s,p,p,p,w,o,p,n,y,d -p,x,f,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,p -p,f,f,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,g -p,x,f,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,p -p,x,f,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,p -p,f,y,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,g -p,x,s,w,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,s,u -e,f,y,e,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -e,x,y,u,f,n,f,c,n,w,e,?,s,f,w,w,p,w,o,f,h,y,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,g -p,x,y,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,d -p,x,y,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,g -p,f,f,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,g -p,x,y,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,p -p,f,y,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,p -e,f,s,p,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -p,f,f,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,p -p,x,y,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,p -p,x,y,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,g -p,x,f,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,d -p,f,y,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,p -p,x,y,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,g -p,x,y,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,d -p,f,f,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,p -p,f,y,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,d -p,x,y,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,g -p,f,f,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,g -p,f,f,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,p -p,x,f,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,g -p,x,y,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,p -p,f,f,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,p -e,f,y,n,t,n,f,c,b,n,t,b,s,s,w,g,p,w,o,p,n,y,d -p,f,f,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,d -p,x,y,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,p -p,x,s,g,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,s,g -p,f,y,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,p -p,x,y,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,p -p,x,f,w,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,k,s,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,d -p,f,s,b,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,s,u -p,x,y,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,g -p,x,y,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,d -p,f,f,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,g -p,f,s,p,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,g -p,f,s,b,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,v,u -p,x,y,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,g -p,x,y,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,g -p,x,y,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,g -p,f,f,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,p -p,x,f,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,p -e,f,y,u,f,n,f,c,n,u,e,?,s,f,w,w,p,w,o,f,h,v,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,g -e,f,f,e,t,n,f,c,b,w,t,b,s,s,g,w,p,w,o,p,n,v,d -p,f,f,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,g -p,x,f,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,g -p,x,y,n,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,x,y,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,g -p,x,f,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,d -p,f,f,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,g -p,x,y,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,p -p,x,y,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,g -p,x,f,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,d -p,f,f,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,g -p,f,y,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,p -p,f,y,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,g -e,f,y,n,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,y,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,g -e,f,f,e,t,n,f,c,b,w,t,b,s,s,w,w,p,w,o,p,k,y,d -p,x,f,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,p -p,f,y,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,p -p,x,f,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,d -p,f,f,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,p -p,f,y,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,g -p,x,f,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,d -p,x,y,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,d -p,x,y,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,d -p,f,f,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,p -p,f,y,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,d -p,x,f,p,f,c,f,w,n,p,e,b,s,s,w,w,p,w,o,p,k,s,d -p,f,f,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,g -p,x,y,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,d -p,f,y,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,p -p,x,y,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,p -p,x,f,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,d -p,f,y,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,g -p,x,y,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,d -p,f,f,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,d -p,x,y,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,d -p,x,y,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,d -p,x,y,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,g -p,x,f,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,g -p,x,y,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,g -p,x,y,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,p -p,x,f,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,d -p,x,y,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,d -p,f,f,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,p -p,x,y,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,p -p,x,f,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,d -p,f,f,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,p -e,x,s,p,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -p,f,f,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,d -p,x,s,p,f,c,f,w,n,g,e,b,s,s,w,w,p,w,o,p,k,v,d -p,x,f,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,g -p,f,f,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,p -p,x,f,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,g -e,f,f,e,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,n,y,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,g -p,f,y,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,g -p,f,f,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,g -e,f,y,n,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,v,d -p,x,y,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,p -p,x,y,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,p -p,f,f,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,d -p,f,y,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,g -p,f,f,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,g -p,x,y,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,g -p,f,y,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,p -p,x,y,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,g -e,f,f,g,t,n,f,c,b,u,t,b,s,s,w,w,p,w,o,p,n,y,d -p,x,s,g,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,s,g -p,x,y,n,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,f,s,g,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,v,g -p,f,y,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,g -p,f,y,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,g -p,f,y,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,d -e,f,y,e,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -p,f,y,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,p -p,x,f,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,g -p,f,f,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,g -e,f,y,n,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -p,f,y,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,g -p,k,f,n,f,n,f,c,n,w,e,?,k,y,w,n,p,w,o,e,w,v,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,d -p,f,f,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,p -p,x,y,n,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,f,f,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,p -p,f,s,w,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,v,g -p,f,f,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,g -p,x,f,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,g -e,x,y,e,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -p,f,y,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,d -p,b,f,y,f,n,f,c,n,w,e,?,k,y,w,n,p,w,o,e,w,v,d -p,f,y,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,d -p,x,s,g,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,s,u -p,f,y,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,g -e,k,y,e,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -p,f,f,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,p -p,f,f,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,p -e,k,y,n,f,n,f,w,n,w,e,b,f,s,w,n,p,w,o,e,w,v,l -p,x,s,w,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,n,v,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,g -p,x,f,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,p -p,x,f,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,d -p,f,y,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,p -p,b,s,b,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,g -p,x,s,w,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,v,g -e,f,y,e,t,n,f,c,b,n,t,b,s,s,w,p,p,w,o,p,n,y,d -p,b,s,w,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,m -e,f,y,p,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -p,x,s,w,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,v,g -e,k,y,n,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -p,x,y,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,p -p,f,s,b,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,v,u -p,f,y,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,d -p,x,y,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,d -p,x,y,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,p -p,x,y,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,d -p,x,y,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,p -p,x,y,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,p -e,k,s,e,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -e,f,y,n,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -e,f,s,b,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -p,x,y,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,d -e,f,f,g,t,n,f,c,b,u,t,b,s,s,p,p,p,w,o,p,n,v,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,p -p,f,y,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,g -p,x,s,g,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,v,g -p,f,f,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,p -p,x,f,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,g -p,x,y,n,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,f,f,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,p -e,f,y,n,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -e,f,y,e,t,n,f,c,b,p,t,b,s,s,g,p,p,w,o,p,k,v,d -p,f,y,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,g -p,x,y,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,p -p,f,f,g,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,p,w,p,w,o,p,n,v,d -p,x,y,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,p -p,f,f,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,p -p,f,y,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,d -p,b,y,w,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,m -p,f,f,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,p -p,x,y,n,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,g -p,x,y,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,g -p,f,y,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,p -e,f,y,p,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -p,x,s,w,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,s,g -p,f,y,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,g -p,x,y,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,p -p,x,f,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,g -p,f,s,b,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,s,u -p,x,f,g,f,c,f,c,n,g,e,b,s,s,w,w,p,w,o,p,k,v,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,p -p,f,y,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,g -p,f,y,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,p -e,x,y,r,f,n,f,c,n,p,e,?,s,f,w,w,p,w,o,f,h,y,d -e,f,y,w,f,n,f,c,n,h,e,?,s,f,w,w,p,w,o,f,h,v,d -p,x,f,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,d -p,f,y,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,p -p,f,y,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,g -p,x,y,e,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,x,y,e,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,x,y,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,g -p,f,f,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,d -p,x,y,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,g -p,x,y,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,d -p,f,f,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,p -e,f,s,e,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -p,f,f,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,p -p,x,y,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,p -p,f,s,g,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,s,g -p,f,f,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,g -p,x,y,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,p -p,x,s,g,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,v,u -p,f,y,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,g -p,f,f,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,g -p,x,s,w,f,c,f,c,n,n,e,b,s,s,w,w,p,w,o,p,k,v,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,p -e,f,y,e,t,n,f,c,b,u,t,b,s,s,p,w,p,w,o,p,n,y,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,g -p,x,y,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,p -e,k,s,b,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -p,f,f,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,g -p,f,f,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,g -e,x,f,n,f,n,f,w,n,w,e,b,s,f,w,n,p,w,o,e,w,v,l -e,x,y,e,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -p,x,y,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,p -p,x,f,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,g -p,f,s,g,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,v,g -p,x,y,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,g -p,f,y,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,p -p,x,y,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,g -p,x,y,n,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -e,k,s,b,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -p,f,f,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,d -p,x,f,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,p -p,f,y,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,p -p,x,f,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,d -p,f,y,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,g -e,k,s,p,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -p,f,y,n,f,n,f,c,n,w,e,?,k,y,w,n,p,w,o,e,w,v,d -p,x,y,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,d -p,x,f,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,p -p,f,s,b,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,v,u -e,f,s,b,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -p,f,s,w,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,s,u -p,f,y,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,p -p,x,f,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,p -p,f,y,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,p -p,f,y,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,g -p,f,f,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,d -p,x,s,b,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,v,u -p,f,f,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,p -p,x,y,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,g -p,f,y,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,d -p,f,s,g,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,s,u -e,f,s,b,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -e,x,s,p,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -e,k,s,n,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -p,f,y,p,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,g -p,f,y,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,p -p,x,y,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,p -p,f,f,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,g -p,f,f,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,d -p,f,y,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,g -p,f,y,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,g -p,x,y,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,d -p,x,y,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,p -p,f,y,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,g -p,f,f,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,p -p,x,y,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,p -e,f,y,u,f,n,f,c,n,w,e,?,s,f,w,w,p,w,o,f,h,y,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,g -p,x,y,n,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,x,y,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,g -p,x,y,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,p -p,x,y,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,g -p,f,f,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,p -e,f,s,b,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -p,f,f,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,p -p,f,y,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,d -e,x,s,n,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -p,f,f,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,p -p,x,y,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,d -p,x,y,n,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,f,f,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,d -p,x,y,n,f,n,f,c,n,w,e,?,k,y,w,n,p,w,o,e,w,v,d -p,b,s,b,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,g -p,f,f,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,d -e,f,y,u,f,n,f,c,n,u,e,?,s,f,w,w,p,w,o,f,h,y,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,g -p,f,y,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,g -p,f,f,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,g -p,x,y,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,d -e,x,y,e,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -p,f,f,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,g -p,x,y,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,g -p,x,y,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,p -p,f,y,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,p -e,k,s,b,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -p,f,y,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,d -p,x,y,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,p -p,x,f,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,p -p,f,s,w,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,v,u -p,x,s,g,f,c,f,c,n,p,e,b,s,s,w,w,p,w,o,p,n,v,d -p,f,y,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,d -e,f,y,u,f,n,f,c,n,p,e,?,s,f,w,w,p,w,o,f,h,v,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,g -p,x,f,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,p -p,x,s,g,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,s,u -p,f,y,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,d -p,f,f,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,d -p,x,y,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,d -p,x,y,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,g -p,x,y,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,d -p,x,f,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,g -p,x,y,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,g -p,f,f,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,p -p,x,y,n,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,x,f,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,p -p,x,y,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,p -p,f,s,b,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,v,g -p,f,f,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,d -p,f,y,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,p -p,x,f,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,d -p,x,y,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,d -p,x,y,e,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -e,k,y,b,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -e,f,y,b,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -p,x,y,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,d -p,f,f,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,p -p,x,y,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,g -p,f,y,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,g -p,x,s,b,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,s,u -p,f,y,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,p -p,x,s,w,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,s,u -p,x,f,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,p -p,x,y,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,p -p,x,s,w,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,s,u -p,f,s,b,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,s,g -p,x,s,w,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,s,u -p,f,f,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,p -p,x,f,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,g -p,f,f,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,p -e,x,y,w,f,n,f,c,n,u,e,?,s,f,w,w,p,w,o,f,h,y,d -e,x,s,e,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -p,x,y,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,g -p,f,f,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,g -p,x,y,n,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,x,y,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,p -p,f,f,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,p -p,f,f,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,d -e,f,f,e,t,n,f,c,b,n,t,b,s,s,g,w,p,w,o,p,n,y,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,g -p,f,y,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,p -p,x,y,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,g -p,x,f,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,p -p,k,f,y,f,n,f,c,n,w,e,?,k,y,w,n,p,w,o,e,w,v,d -p,f,f,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,g -e,k,f,c,f,n,f,w,n,w,e,b,f,s,w,n,p,w,o,e,w,v,l -p,f,f,g,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,p -p,f,y,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,p -p,x,y,g,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,d -p,x,y,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,p -p,f,f,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,g -p,f,y,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,d -p,x,f,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,p -p,x,y,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,d -p,b,y,p,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,g -e,k,y,p,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -p,x,y,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,p -p,x,f,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,g -e,k,y,b,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -p,f,y,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,d -p,x,s,w,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,s,u -p,x,y,n,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,x,y,n,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,x,y,e,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,f,g,w,t,n,f,w,n,w,e,b,s,s,w,w,p,w,o,p,w,c,l -p,x,s,g,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,v,u -e,f,y,c,f,n,f,w,n,w,e,b,f,s,w,n,p,w,o,e,w,v,l -p,x,y,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,g -p,f,y,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,d -p,f,y,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,p -e,f,y,p,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -p,x,s,b,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,v,g -p,x,s,g,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,s,g -p,x,y,e,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -e,k,y,c,f,n,f,w,n,w,e,b,s,f,w,n,p,w,o,e,w,v,l -p,x,s,w,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,s,u -p,x,s,w,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,v,g -p,f,s,b,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,v,u -p,f,s,b,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,v,g -e,k,y,c,f,n,f,w,n,w,e,b,f,s,w,n,p,w,o,e,w,v,l -p,x,y,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,d -p,f,s,w,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,v,g -p,f,s,g,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,s,u -p,c,g,w,t,n,f,w,n,w,e,b,s,s,w,w,p,w,o,p,w,c,l -p,x,s,g,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,s,u -p,b,g,w,t,n,f,w,n,w,e,b,s,s,w,w,p,w,o,p,w,c,l -p,x,s,b,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,v,g -p,f,s,w,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,s,u -p,b,f,y,f,n,f,c,n,w,e,?,k,y,w,y,p,w,o,e,w,v,d -p,x,y,n,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,x,y,n,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -e,k,s,n,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -e,k,y,b,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -p,f,s,w,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,v,g -p,f,s,b,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,m -p,f,y,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,p -p,x,y,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,g -p,f,s,b,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,g -p,x,y,n,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,x,y,e,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,f,f,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,d -e,x,s,e,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -p,x,y,n,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,x,f,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,g -p,x,y,n,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -e,f,f,n,f,n,f,w,n,w,e,b,s,f,w,n,p,w,o,e,w,v,l -p,x,y,n,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -e,x,s,b,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -e,f,y,n,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -p,f,y,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,p -p,f,y,b,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,m -p,x,y,n,f,n,f,c,n,w,e,?,k,y,w,y,p,w,o,e,w,v,d -p,x,y,n,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,x,s,b,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,s,g -p,x,s,b,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,v,g -p,f,y,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,p -p,f,s,g,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,v,g -p,x,y,n,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,x,s,b,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,v,g -p,f,f,n,f,n,f,c,n,w,e,?,k,y,w,y,p,w,o,e,w,v,d -e,x,y,e,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -p,f,s,b,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,s,g -p,f,s,w,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,s,g -e,k,y,e,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -p,x,f,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,p -p,x,f,n,f,n,f,c,n,w,e,?,k,y,w,n,p,w,o,e,w,v,d -e,x,y,n,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -p,x,y,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,g -p,f,s,b,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,v,g -p,f,s,b,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,s,g -p,f,y,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,g -p,f,y,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,d -e,x,s,p,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -e,f,s,p,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -p,b,y,w,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,g -e,x,y,c,f,n,f,w,n,w,e,b,f,f,w,n,p,w,o,e,w,v,l -e,f,s,n,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -p,x,s,b,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,v,u -p,x,s,g,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,v,g -p,f,y,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,d -p,x,s,b,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,v,u -p,x,s,w,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,s,g -e,f,y,c,f,n,f,w,n,w,e,b,s,f,w,n,p,w,o,e,w,v,l -p,x,y,e,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,f,f,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,d -e,x,y,w,f,n,f,c,n,h,e,?,s,f,w,w,p,w,o,f,h,v,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,p -p,f,y,p,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,g -p,f,s,g,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,v,u -p,x,y,n,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -e,k,s,p,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -p,x,y,n,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,x,y,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,p -p,f,s,b,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,s,u -e,k,y,p,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -p,x,f,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,p -p,f,y,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,g -p,f,f,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,d -p,x,s,b,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,s,g -p,x,y,n,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,x,y,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,d -p,f,f,y,f,f,f,c,b,h,e,b,k,k,n,n,p,w,o,l,h,v,d -p,f,f,n,f,n,f,c,n,w,e,?,k,y,w,n,p,w,o,e,w,v,d -e,k,s,b,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -p,f,y,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,g -p,x,y,e,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,x,s,g,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,s,u -e,f,s,n,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -p,x,y,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,p -p,x,y,n,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,x,s,g,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,v,u -p,x,s,g,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,v,g -p,f,y,p,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,m -e,k,y,b,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -p,x,s,w,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,v,u -p,x,y,n,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -e,k,y,n,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -p,f,y,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,d -e,x,y,p,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -p,f,s,g,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,s,u -e,x,s,p,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -p,b,y,n,f,n,f,c,n,w,e,?,k,y,w,n,p,w,o,e,w,v,d -p,f,s,b,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,v,g -p,x,y,n,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,x,y,n,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,x,s,b,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,s,u -p,x,y,n,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -e,k,y,p,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -e,k,f,c,f,n,f,w,n,w,e,b,f,f,w,n,p,w,o,e,w,v,l -p,x,y,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,g -e,x,s,n,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -p,f,f,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,p -p,f,y,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,d -p,f,s,g,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,v,u -p,k,y,w,t,n,f,w,n,w,e,b,s,s,w,w,p,w,o,p,w,c,l -e,k,f,n,f,n,f,w,n,w,e,b,f,f,w,n,p,w,o,e,w,v,l -p,k,f,y,f,n,f,c,n,w,e,?,k,y,w,y,p,w,o,e,w,v,d -p,f,s,w,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,s,g -p,f,y,y,f,n,f,c,n,w,e,?,k,y,w,y,p,w,o,e,w,v,d -p,f,y,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,d -e,k,s,b,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -p,f,y,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,p -p,x,y,n,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,x,y,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,d -p,x,y,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,p -p,b,y,w,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,g -p,f,y,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,y,g -p,x,s,w,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,v,g -p,x,s,b,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,v,g -e,k,y,b,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -p,f,y,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,p -p,x,s,b,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,s,g -p,b,y,b,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,m -p,x,s,w,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,v,g -e,k,s,n,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -p,f,s,g,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,s,u -p,x,f,y,f,n,f,c,n,w,e,?,k,y,w,y,p,w,o,e,w,v,d -p,f,s,g,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,v,g -p,f,y,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,d -p,k,y,n,f,n,f,c,n,w,e,?,k,y,w,y,p,w,o,e,w,v,d -p,f,s,b,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,s,u -e,f,s,e,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -p,x,y,n,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,x,y,n,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,x,y,n,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,x,s,w,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,v,u -e,k,s,n,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -p,f,y,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,g -e,x,s,b,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -p,f,s,w,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,s,u -e,k,f,n,f,n,f,w,n,w,e,b,s,s,w,n,p,w,o,e,w,v,l -p,x,y,n,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,f,s,w,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,v,g -p,x,s,g,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,v,u -p,k,y,y,f,n,f,c,n,w,e,?,k,y,w,y,p,w,o,e,w,v,d -p,f,s,w,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,m -p,f,f,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,p -e,k,y,p,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -p,f,y,w,t,n,f,w,n,w,e,b,s,s,w,w,p,w,o,p,w,c,l -p,f,s,b,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,v,u -e,f,y,w,f,n,f,c,n,u,e,?,s,f,w,w,p,w,o,f,h,y,d -e,x,y,r,f,n,f,c,n,w,e,?,s,f,w,w,p,w,o,f,h,v,d -e,x,s,b,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -p,f,s,g,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,v,g -p,x,y,e,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,f,y,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,p -p,f,s,g,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,s,g -p,f,s,b,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,s,g -e,f,s,e,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -p,x,y,e,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,f,f,g,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,g -p,f,y,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,d -e,x,s,n,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -p,f,s,g,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,s,g -p,x,y,n,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,f,s,w,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,s,g -e,x,f,c,f,n,f,w,n,w,e,b,s,s,w,n,p,w,o,e,w,v,l -p,f,s,g,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,v,g -p,f,f,g,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,p -e,x,y,r,f,n,f,c,n,w,e,?,s,f,w,w,p,w,o,f,h,y,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,p -p,x,y,n,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,x,y,n,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -e,f,y,e,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -p,x,s,g,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,v,u -e,k,y,n,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -e,f,y,e,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -p,x,y,n,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,b,y,n,f,n,f,c,n,w,e,?,k,y,w,y,p,w,o,e,w,v,d -p,x,y,n,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -e,f,y,b,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -p,x,s,w,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,v,g -p,f,y,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,g -e,f,y,n,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -p,b,y,w,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,m -e,x,y,n,f,n,f,w,n,w,e,b,s,f,w,n,p,w,o,e,w,v,l -p,f,y,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,p -p,x,s,b,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,s,g -p,x,y,n,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,x,s,g,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,s,u -p,f,s,g,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,s,u -p,x,y,n,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -e,f,y,w,f,n,f,c,n,p,e,?,s,f,w,w,p,w,o,f,h,v,d -p,x,y,n,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,f,f,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,g -p,x,y,e,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,x,s,w,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,v,g -p,f,y,g,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,d -p,x,s,w,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,s,u -p,k,y,y,f,n,f,c,n,w,e,?,k,y,w,n,p,w,o,e,w,v,d -p,f,s,w,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,v,u -p,f,s,g,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,v,u -e,x,y,c,f,n,f,w,n,w,e,b,f,s,w,n,p,w,o,e,w,v,l -p,x,s,w,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,v,u -p,x,y,n,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,f,y,p,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,g -p,f,y,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,p -e,x,s,p,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -p,f,y,b,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,g -p,x,f,y,f,n,f,c,n,w,e,?,k,y,w,n,p,w,o,e,w,v,d -p,f,y,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,p -e,f,f,n,f,n,f,w,n,w,e,b,f,f,w,n,p,w,o,e,w,v,l -e,x,f,n,f,n,f,w,n,w,e,b,f,s,w,n,p,w,o,e,w,v,l -p,x,y,n,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,f,s,g,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,v,u -p,x,s,b,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,s,u -p,f,s,g,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,v,g -p,x,s,b,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,s,g -e,x,y,r,f,n,f,c,n,h,e,?,s,f,w,w,p,w,o,f,h,v,d -p,f,y,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,d -p,f,s,g,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,s,u -p,x,y,n,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,f,y,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,g -p,f,s,w,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,v,u -p,x,s,w,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,s,u -p,f,y,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,p -p,f,y,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,p -p,x,y,n,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,x,y,y,f,n,f,c,n,w,e,?,k,y,w,n,p,w,o,e,w,v,d -e,f,s,n,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -p,f,y,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,d -p,f,s,g,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,s,u -p,x,y,n,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,f,y,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,d -p,f,y,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,d -p,f,s,w,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,s,u -p,f,s,p,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,m -p,f,y,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,g -e,k,s,p,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -p,x,s,b,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,s,g -p,x,s,w,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,s,g -p,x,s,w,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,s,g -p,x,y,n,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,b,y,p,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,m -p,x,s,b,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,s,u -e,x,y,p,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -p,x,y,n,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,x,y,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,v,p -p,x,s,w,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,v,u -e,f,y,b,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -p,f,s,b,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,v,u -e,x,f,c,f,n,f,w,n,w,e,b,f,f,w,n,p,w,o,e,w,v,l -e,f,s,p,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -e,x,y,n,f,n,f,w,n,w,e,b,f,f,w,n,p,w,o,e,w,v,l -e,f,s,p,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -p,f,s,g,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,v,u -e,k,s,e,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -e,k,y,e,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -p,f,s,w,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,v,g -e,k,s,b,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -p,x,s,b,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,v,g -p,b,y,y,f,n,f,c,n,w,e,?,k,y,w,y,p,w,o,e,w,v,d -p,x,s,w,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,s,u -p,x,f,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,g -p,f,y,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,p -p,b,f,n,f,n,f,c,n,w,e,?,k,y,w,y,p,w,o,e,w,v,d -p,f,y,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,p -p,f,y,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,v,p -e,f,y,c,f,n,f,w,n,w,e,b,s,s,w,n,p,w,o,e,w,v,l -p,x,y,e,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,f,s,w,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,s,g -p,x,y,n,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,b,y,p,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,g -p,f,y,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,d -p,x,s,b,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,s,g -p,f,y,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,p -p,f,s,b,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,s,g -p,f,s,b,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,s,u -p,x,y,n,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,f,y,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,p -e,x,s,n,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -p,f,y,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,v,g -e,f,s,b,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -e,f,s,e,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -e,x,s,n,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -p,f,s,w,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,v,u -p,f,y,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,d -e,f,s,p,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -e,x,s,e,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -p,f,y,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,d -p,b,y,b,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,m -p,f,s,b,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,s,u -p,f,s,g,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,s,g -p,x,s,b,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,s,g -p,x,f,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,p -p,f,s,w,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,s,g -p,x,s,g,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,s,u -e,f,y,r,f,n,f,c,n,h,e,?,s,f,w,w,p,w,o,f,h,y,d -p,f,y,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,g -p,x,y,n,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,x,s,b,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,s,g -e,x,f,c,f,n,f,w,n,w,e,b,f,s,w,n,p,w,o,e,w,v,l -p,x,s,g,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,v,u -e,x,y,u,f,n,f,c,n,p,e,?,s,f,w,w,p,w,o,f,h,y,d -p,x,f,y,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,v,p -p,f,f,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,g -p,f,y,w,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,m -p,x,y,n,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,x,y,n,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,x,y,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,p -e,x,y,p,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -p,f,s,g,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,s,g -p,x,s,b,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,v,g -p,x,y,n,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,x,s,g,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,s,u -p,x,y,n,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,f,s,w,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,s,g -p,x,s,g,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,v,u -p,x,s,g,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,s,g -p,f,y,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,p -p,f,y,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,p -p,f,y,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,g -p,x,y,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,g -p,x,s,g,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,s,u -p,f,s,b,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,s,u -p,f,s,w,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,s,u -p,f,f,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,g -p,f,s,b,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,s,g -p,x,y,n,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,x,s,w,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,s,g -e,k,s,e,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -p,f,y,b,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,m -p,x,y,n,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -e,k,y,n,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -p,f,s,w,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,v,u -p,f,s,w,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,v,u -p,x,y,n,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,x,s,w,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,s,g -p,x,y,n,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,b,s,p,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,g -p,x,y,e,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,f,y,g,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,p -p,x,y,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,d -p,x,y,g,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,v,g -p,f,y,w,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,m -p,f,s,g,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,s,g -e,k,y,p,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -p,x,s,w,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,v,g -e,k,s,p,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -p,f,s,w,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,s,u -p,x,y,n,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,x,f,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,d -p,f,y,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,p -p,x,y,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,p -e,x,y,e,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -p,f,y,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,p -p,x,y,n,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,x,s,b,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,v,g -p,f,y,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,d -e,k,y,e,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -p,f,y,p,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,m -p,f,y,w,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,m -p,f,y,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,p -p,f,y,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,g -e,f,y,r,f,n,f,c,n,w,e,?,s,f,w,w,p,w,o,f,h,v,d -p,x,s,w,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,s,g -p,x,s,w,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,s,g -p,x,s,b,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,s,u -p,x,y,n,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -e,k,y,e,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -e,k,s,p,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -e,x,y,b,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -p,x,s,g,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,v,g -p,f,y,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,g -p,x,y,n,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,c,y,w,t,n,f,w,n,w,e,b,s,s,w,w,p,w,o,p,w,c,l -p,f,s,w,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,v,g -p,f,s,g,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,s,g -p,x,y,e,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,x,s,g,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,s,g -p,x,y,n,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -e,x,y,p,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -e,f,y,w,f,n,f,c,n,h,e,?,s,f,w,w,p,w,o,f,h,y,d -p,f,y,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,g -p,x,y,n,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,x,f,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,d -p,x,y,n,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,x,s,g,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,v,u -p,x,y,n,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -e,k,f,n,f,n,f,w,n,w,e,b,s,f,w,n,p,w,o,e,w,v,l -p,x,s,w,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,v,u -p,f,y,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,p -e,x,y,p,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -p,b,y,b,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,m -p,f,y,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,p -e,f,y,r,f,n,f,c,n,h,e,?,s,f,w,w,p,w,o,f,h,v,d -p,x,y,n,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,x,y,n,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,f,s,b,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,v,g -p,f,y,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,d -p,x,y,n,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -e,f,y,n,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -p,x,y,n,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -e,f,y,e,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -e,x,y,b,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -e,x,s,n,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -p,f,s,w,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,v,g -e,x,y,b,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -p,x,f,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,g -p,f,y,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,d -p,f,y,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,y,g -e,k,y,e,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -p,f,s,w,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,v,u -e,k,y,c,f,n,f,w,n,w,e,b,s,s,w,n,p,w,o,e,w,v,l -e,k,y,n,f,n,f,w,n,w,e,b,s,s,w,n,p,w,o,e,w,v,l -p,b,s,p,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,m -p,x,y,n,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,x,s,b,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,s,u -e,f,y,r,f,n,f,c,n,p,e,?,s,f,w,w,p,w,o,f,h,v,d -p,x,s,b,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,s,g -e,f,y,u,f,n,f,c,n,p,e,?,s,f,w,w,p,w,o,f,h,y,d -p,x,y,n,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,x,s,w,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,v,u -e,x,s,e,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -e,f,y,p,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -p,x,y,n,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,x,y,n,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,x,s,w,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,v,g -p,f,y,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,p -e,x,y,n,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -e,x,y,e,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -p,x,s,w,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,v,u -p,x,y,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,g -p,f,s,b,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,m -p,f,f,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,v,p -p,x,s,g,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,v,g -e,f,s,p,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -e,x,y,n,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -p,b,y,w,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,m -p,f,y,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,d -p,x,y,e,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,x,s,b,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,s,g -p,x,s,b,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,v,g -p,x,y,n,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,b,y,p,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,g -e,x,y,c,f,n,f,w,n,w,e,b,s,s,w,n,p,w,o,e,w,v,l -p,x,y,n,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,x,s,w,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,s,u -p,x,y,n,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -e,f,y,n,f,n,f,w,n,w,e,b,f,s,w,n,p,w,o,e,w,v,l -p,x,y,n,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,f,s,g,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,s,u -p,x,y,e,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -e,x,y,r,f,n,f,c,n,h,e,?,s,f,w,w,p,w,o,f,h,y,d -p,b,y,p,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,m -e,x,s,p,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -p,x,y,n,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,x,y,n,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,f,s,g,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,v,g -p,f,y,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,p -p,f,y,p,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,m -p,x,y,n,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,x,y,n,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -e,f,s,b,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -p,f,s,b,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,v,u -e,x,y,c,f,n,f,w,n,w,e,b,s,f,w,n,p,w,o,e,w,v,l -e,x,y,w,f,n,f,c,n,w,e,?,s,f,w,w,p,w,o,f,h,y,d -p,x,y,n,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -e,f,y,n,f,n,f,w,n,w,e,b,s,s,w,n,p,w,o,e,w,v,l -p,x,y,n,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,x,y,n,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -e,k,y,p,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -p,f,s,w,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,m -p,x,y,n,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,f,y,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,g -e,k,y,n,f,n,f,w,n,w,e,b,s,f,w,n,p,w,o,e,w,v,l -p,f,s,g,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,v,g -p,f,s,w,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,g -p,f,f,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,g -e,f,s,n,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -p,x,f,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,d -p,x,y,n,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,x,y,e,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,f,y,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,g -p,b,s,w,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,g -p,x,s,b,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,v,u -e,f,y,b,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -e,x,f,c,f,n,f,w,n,w,e,b,s,f,w,n,p,w,o,e,w,v,l -p,f,s,w,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,v,u -e,k,s,p,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -e,k,y,n,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -e,x,y,b,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -p,x,f,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,g -p,f,s,g,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,v,g -p,f,y,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,p -e,x,y,e,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -p,f,s,b,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,v,g -e,x,y,n,f,n,f,w,n,w,e,b,s,s,w,n,p,w,o,e,w,v,l -p,f,y,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,d -p,f,f,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,d -p,b,y,b,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,g -p,x,y,e,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,f,y,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,p -p,f,f,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,p -p,f,y,w,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,g -e,k,s,e,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -p,f,y,y,f,f,f,c,b,g,e,b,k,k,n,n,p,w,o,l,h,v,p -e,k,s,n,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -p,f,y,y,f,n,f,c,n,w,e,?,k,y,w,n,p,w,o,e,w,v,d -p,f,y,g,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,p -p,f,y,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,g -p,x,y,e,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -e,f,s,b,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -p,f,s,w,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,v,u -p,x,s,w,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,s,g -p,f,y,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,d -e,f,y,p,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -p,f,y,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,g -p,f,y,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,p -e,k,s,e,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -e,x,y,n,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -p,x,y,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,g -p,f,s,b,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,v,g -p,x,y,g,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,v,d -p,f,s,g,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,s,u -p,x,s,w,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,v,g -p,x,f,n,f,n,f,c,n,w,e,?,k,y,w,y,p,w,o,e,w,v,d -p,f,s,b,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,s,g -e,f,y,e,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -p,f,y,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,g -p,x,s,b,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,s,u -e,k,f,n,f,n,f,w,n,w,e,b,f,s,w,n,p,w,o,e,w,v,l -p,f,y,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,g -e,k,y,c,f,n,f,w,n,w,e,b,f,f,w,n,p,w,o,e,w,v,l -p,x,f,g,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,y,p -p,x,y,n,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -e,f,y,p,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -p,x,s,b,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,v,g -p,x,y,g,f,f,f,c,b,h,e,b,k,k,b,n,p,w,o,l,h,y,d -p,f,y,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,g -p,x,y,e,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -e,f,y,r,f,n,f,c,n,w,e,?,s,f,w,w,p,w,o,f,h,y,d -p,f,y,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,p -p,x,s,g,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,v,g -p,x,s,w,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,v,g -p,f,s,b,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,s,g -e,x,y,n,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -p,f,f,y,f,n,f,c,n,w,e,?,k,y,w,n,p,w,o,e,w,v,d -e,f,y,u,f,n,f,c,n,w,e,?,s,f,w,w,p,w,o,f,h,v,d -p,x,y,n,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -e,x,s,n,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -p,x,s,w,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,v,u -p,f,y,y,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,v,d -e,f,s,b,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -e,k,f,c,f,n,f,w,n,w,e,b,s,s,w,n,p,w,o,e,w,v,l -p,x,s,g,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,v,u -p,f,y,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,p -p,x,y,e,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -e,f,y,p,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -e,k,y,p,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -p,x,y,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,g -p,x,y,n,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -e,f,s,n,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -p,f,y,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,g -p,x,y,n,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -e,f,s,n,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -p,f,y,y,f,f,f,c,b,p,e,b,k,k,p,p,p,w,o,l,h,v,d -p,f,y,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,p -p,f,y,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,y,p -e,f,f,c,f,n,f,w,n,w,e,b,f,s,w,n,p,w,o,e,w,v,l -p,b,y,b,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,g -e,k,y,e,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -p,x,s,b,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,v,u -p,x,s,g,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,v,g -p,f,y,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,g -p,x,s,g,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,s,u -p,x,y,e,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,f,s,w,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,v,u -e,f,s,p,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -p,f,s,b,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,v,g -p,x,y,e,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -e,f,y,w,f,n,f,c,n,u,e,?,s,f,w,w,p,w,o,f,h,v,d -e,x,y,p,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -p,x,s,b,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,v,u -p,k,g,w,t,n,f,w,n,w,e,b,s,s,w,w,p,w,o,p,w,c,l -p,f,s,g,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,s,g -p,x,y,n,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -e,k,s,e,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -p,x,y,n,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,x,y,n,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,f,s,w,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,s,g -e,f,s,e,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -p,f,s,b,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,s,g -p,b,s,w,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,m -e,f,f,n,f,n,f,w,n,w,e,b,f,s,w,n,p,w,o,e,w,v,l -p,f,s,g,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,v,u -p,x,s,w,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,v,g -p,f,y,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,g -e,x,s,b,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -e,f,y,n,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -e,x,y,r,f,n,f,c,n,u,e,?,s,f,w,w,p,w,o,f,h,v,d -e,k,s,b,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -p,x,s,w,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,v,u -p,x,y,n,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -e,x,y,b,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -p,f,y,w,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,g -p,f,s,b,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,s,u -p,x,s,g,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,v,g -e,k,s,n,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -p,f,s,g,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,s,g -e,k,y,p,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -p,f,y,b,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,m -p,x,y,n,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,f,y,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,v,p -p,x,s,b,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,s,u -e,k,f,c,f,n,f,w,n,w,e,b,s,f,w,n,p,w,o,e,w,v,l -p,f,s,g,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,v,u -p,f,s,w,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,v,g -p,b,s,b,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,m -p,b,s,p,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,g -p,f,s,w,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,s,g -e,x,y,n,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -p,x,y,n,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,x,y,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,g -e,x,s,b,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -p,x,y,n,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,x,s,b,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,s,u -p,f,s,p,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,g -p,x,y,n,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,x,s,w,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,v,u -p,f,s,w,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,v,u -e,f,y,r,f,n,f,c,n,u,e,?,s,f,w,w,p,w,o,f,h,y,d -p,f,s,w,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,s,g -p,f,s,w,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,s,u -e,x,y,w,f,n,f,c,n,u,e,?,s,f,w,w,p,w,o,f,h,v,d -p,x,y,n,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -e,k,y,b,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -p,x,y,n,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,x,y,n,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,x,s,b,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,s,u -e,f,y,r,f,n,f,c,n,p,e,?,s,f,w,w,p,w,o,f,h,y,d -p,b,s,p,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,g -p,x,s,b,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,v,u -e,f,y,c,f,n,f,w,n,w,e,b,f,f,w,n,p,w,o,e,w,v,l -e,x,y,u,f,n,f,c,n,p,e,?,s,f,w,w,p,w,o,f,h,v,d -p,x,s,b,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,v,u -e,x,y,w,f,n,f,c,n,w,e,?,s,f,w,w,p,w,o,f,h,v,d -p,x,y,n,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -e,x,s,p,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -p,f,s,p,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,m -p,f,y,n,f,n,f,c,n,w,e,?,k,y,w,y,p,w,o,e,w,v,d -p,f,y,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,p -p,f,s,w,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,v,g -p,x,y,g,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,v,g -e,f,y,e,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -p,f,s,b,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,g -p,b,s,p,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,m -p,x,y,n,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,x,s,b,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,v,u -p,x,y,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,y,p -p,b,y,w,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,g -e,f,y,n,f,n,f,w,n,w,e,b,s,f,w,n,p,w,o,e,w,v,l -p,f,f,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,g -p,f,y,y,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,p -p,f,y,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,g -p,x,s,g,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,s,u -p,x,y,e,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,x,y,y,f,n,f,c,n,w,e,?,k,y,w,y,p,w,o,e,w,v,d -p,x,y,n,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,f,s,w,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,s,g -p,f,f,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,g -e,f,f,n,f,n,f,w,n,w,e,b,s,s,w,n,p,w,o,e,w,v,l -p,x,s,g,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,s,g -p,f,s,b,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,v,u -e,f,s,e,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -p,x,s,b,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,s,u -p,f,y,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,d -p,x,y,n,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,f,s,w,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,v,g -p,f,s,g,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,s,g -p,f,y,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,g -e,f,f,c,f,n,f,w,n,w,e,b,s,s,w,n,p,w,o,e,w,v,l -p,x,y,n,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -e,k,y,e,t,n,f,c,b,e,e,?,s,s,w,e,p,w,t,e,w,c,w -p,x,y,n,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,f,s,w,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,s,g -p,x,y,e,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -e,x,s,n,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -p,f,y,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,p -p,x,s,w,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,v,u -e,f,s,e,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -p,f,y,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,d -p,f,y,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,v,d -e,f,y,e,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -p,f,s,g,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,v,g -e,k,s,n,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w -p,f,y,y,f,f,f,c,b,p,e,b,k,k,n,b,p,w,o,l,h,y,d -p,x,s,w,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,s,g -p,x,y,n,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,f,y,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,g -p,f,y,w,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,g -p,x,y,n,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -e,f,y,w,f,n,f,c,n,w,e,?,s,f,w,w,p,w,o,f,h,v,d -e,x,y,w,f,n,f,c,n,h,e,?,s,f,w,w,p,w,o,f,h,y,d -p,x,y,n,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,f,s,g,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,s,u -e,x,y,u,f,n,f,c,n,w,e,?,s,f,w,w,p,w,o,f,h,v,d -p,f,s,w,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,g -p,x,y,y,f,f,f,c,b,g,e,b,k,k,p,b,p,w,o,l,h,v,d -p,f,s,g,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,v,g -p,f,y,y,f,f,f,c,b,g,e,b,k,k,p,n,p,w,o,l,h,y,p -p,x,f,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,g -p,f,y,y,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,y,d -p,x,s,g,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,s,g -e,f,y,r,f,n,f,c,n,u,e,?,s,f,w,w,p,w,o,f,h,v,d -p,f,s,w,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,s,g -e,k,s,n,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -p,x,y,n,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,x,s,g,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,s,g -p,f,y,y,f,f,f,c,b,g,e,b,k,k,p,p,p,w,o,l,h,y,g -p,b,s,w,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,m -p,x,y,n,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,b,s,b,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,m -p,f,f,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,g -p,x,y,g,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,d -e,x,y,e,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -e,k,s,b,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -p,x,y,n,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -e,x,s,e,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -p,f,s,b,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,m -e,f,s,n,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -p,x,y,e,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -e,f,y,b,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -p,x,s,g,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,s,u -p,f,s,b,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,g -p,x,y,n,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,x,y,e,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,f,y,y,f,f,f,c,b,h,e,b,k,k,b,b,p,w,o,l,h,y,g -p,x,y,n,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,x,y,n,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,f,s,g,t,f,f,c,b,w,t,b,f,s,w,w,p,w,o,p,h,v,u -e,x,y,p,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -e,x,y,u,f,n,f,c,n,u,e,?,s,f,w,w,p,w,o,f,h,y,d -p,f,y,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,y,p -p,x,s,g,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,v,g -p,x,y,n,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,f,s,g,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,v,u -p,x,s,b,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,v,g -p,x,f,y,f,f,f,c,b,h,e,b,k,k,b,p,p,w,o,l,h,y,g -p,b,s,w,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,g -e,k,y,n,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -p,x,y,e,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,f,y,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,p -e,x,y,b,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -p,x,s,b,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,v,g -p,f,s,g,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,v,u -p,f,s,b,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,s,u -p,f,y,y,f,f,f,c,b,p,e,b,k,k,b,b,p,w,o,l,h,y,d -p,x,y,n,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,f,s,w,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,v,u -e,k,y,n,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -e,x,s,e,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -e,x,y,w,f,n,f,c,n,p,e,?,s,f,w,w,p,w,o,f,h,v,d -p,f,s,b,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,s,u -p,f,s,g,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,s,u -e,f,s,e,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -p,f,y,y,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,y,g -p,x,y,n,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,f,s,w,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,g -p,f,y,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,d -e,x,f,n,f,n,f,w,n,w,e,b,s,s,w,n,p,w,o,e,w,v,l -p,f,y,y,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,y,d -p,x,s,w,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,s,u -e,x,s,b,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -e,x,s,p,t,n,f,c,b,w,e,?,s,s,w,e,p,w,t,e,w,c,w -p,x,s,g,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,v,g -p,f,f,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,p -p,x,s,w,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,s,g -p,x,f,y,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,v,p -p,f,s,w,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,s,u -e,k,y,n,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -e,x,y,p,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -p,f,y,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,y,g -e,f,y,b,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -e,x,s,e,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -p,x,s,g,t,f,f,c,b,p,t,b,f,f,w,w,p,w,o,p,h,v,u -p,f,s,b,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,v,u -p,f,y,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,p -p,x,s,b,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,v,u -p,f,s,w,t,f,f,c,b,h,t,b,s,s,w,w,p,w,o,p,h,v,g -p,f,y,y,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,g -p,f,y,y,f,f,f,c,b,p,e,b,k,k,n,p,p,w,o,l,h,y,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,n,p,p,w,o,l,h,y,p -p,f,f,g,f,f,f,c,b,g,e,b,k,k,b,n,p,w,o,l,h,v,p -p,b,s,p,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,m -p,x,y,n,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,b,s,w,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,g -e,x,y,n,t,n,f,c,b,w,e,?,s,s,w,w,p,w,t,e,w,c,w -p,x,y,n,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,x,y,n,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,x,y,n,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,f,s,b,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,s,g -p,b,y,y,f,n,f,c,n,w,e,?,k,y,w,n,p,w,o,e,w,v,d -p,x,s,g,t,f,f,c,b,w,t,b,f,f,w,w,p,w,o,p,h,v,u -e,f,y,p,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -e,k,s,p,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -e,f,y,n,t,n,f,c,b,w,e,?,s,s,e,e,p,w,t,e,w,c,w -p,b,y,p,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,m -p,x,s,g,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,v,g -p,x,s,g,t,f,f,c,b,p,t,b,s,s,w,w,p,w,o,p,h,s,g -p,x,f,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,g -p,x,y,n,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,f,y,b,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,r,v,g -p,x,s,b,t,f,f,c,b,h,t,b,f,f,w,w,p,w,o,p,h,v,u -p,b,s,b,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,g -e,f,y,w,f,n,f,c,n,p,e,?,s,f,w,w,p,w,o,f,h,y,d -e,x,y,n,f,n,f,w,n,w,e,b,f,s,w,n,p,w,o,e,w,v,l -p,x,f,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,p -p,f,s,b,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,v,g -p,f,y,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,v,g -e,k,s,e,t,n,f,c,b,e,e,?,s,s,e,e,p,w,t,e,w,c,w -p,f,f,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,p -p,b,f,n,f,n,f,c,n,w,e,?,k,y,w,n,p,w,o,e,w,v,d -p,x,y,n,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,f,y,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,d -p,x,y,y,f,f,f,c,b,g,e,b,k,k,n,b,p,w,o,l,h,y,g -p,x,s,g,t,f,f,c,b,p,t,b,f,s,w,w,p,w,o,p,h,s,g -p,x,y,n,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -e,x,y,n,t,n,f,c,b,w,e,?,s,s,e,w,p,w,t,e,w,c,w -e,f,y,n,f,n,f,w,n,w,e,b,f,f,w,n,p,w,o,e,w,v,l -p,f,y,b,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,g -p,k,f,n,f,n,f,c,n,w,e,?,k,y,w,y,p,w,o,e,w,v,d -p,f,y,g,f,f,f,c,b,h,e,b,k,k,p,n,p,w,o,l,h,v,g -p,x,y,n,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,f,f,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,d -p,f,f,g,f,f,f,c,b,p,e,b,k,k,b,p,p,w,o,l,h,v,d -p,x,s,g,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,s,g -e,x,y,r,f,n,f,c,n,u,e,?,s,f,w,w,p,w,o,f,h,y,d -p,x,y,n,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,f,s,p,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,m -p,x,y,e,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,f,s,b,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,v,g -p,x,s,b,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,v,u -e,k,s,e,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -p,f,s,b,t,f,f,c,b,w,t,b,s,f,w,w,p,w,o,p,h,s,g -e,x,f,n,f,n,f,w,n,w,e,b,f,f,w,n,p,w,o,e,w,v,l -p,f,y,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,v,d -e,f,y,w,f,n,f,c,n,w,e,?,s,f,w,w,p,w,o,f,h,y,d -p,f,s,w,t,f,f,c,b,w,t,b,s,s,w,w,p,w,o,p,h,s,u -p,f,s,p,t,n,f,c,b,r,e,b,s,s,w,w,p,w,t,p,r,v,g -p,f,y,y,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,d -p,f,s,g,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,s,g -p,x,y,n,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,f,y,y,f,f,f,c,b,g,e,b,k,k,b,b,p,w,o,l,h,v,g -p,f,s,g,t,f,f,c,b,h,t,b,f,s,w,w,p,w,o,p,h,s,g -p,f,s,w,t,f,f,c,b,h,t,b,s,f,w,w,p,w,o,p,h,s,u -p,x,y,n,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,f,f,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,y,d -p,x,y,n,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,b,y,b,t,n,f,c,b,g,e,b,s,s,w,w,p,w,t,p,r,v,g -p,f,y,y,f,f,f,c,b,g,e,b,k,k,b,p,p,w,o,l,h,v,g -p,x,y,e,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,x,y,n,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -e,k,y,b,t,n,f,c,b,e,e,?,s,s,w,w,p,w,t,e,w,c,w -e,x,y,w,f,n,f,c,n,p,e,?,s,f,w,w,p,w,o,f,h,y,d -p,f,s,b,t,f,f,c,b,p,t,b,s,f,w,w,p,w,o,p,h,v,u -p,f,y,y,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,g -p,x,y,e,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,f,s,e,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,x,y,e,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,x,s,n,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,f,y,n,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,f,y,e,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,k,y,n,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,f,y,e,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,x,s,e,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,f,y,n,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,f,y,e,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,x,s,e,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,x,s,n,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,f,s,e,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,f,s,e,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,f,y,e,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,f,y,n,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,f,y,n,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,x,y,e,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,k,s,n,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,x,s,n,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,f,s,e,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,f,y,e,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,k,s,e,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,f,y,e,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,x,s,n,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,f,s,e,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,f,s,n,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,f,y,e,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,f,s,e,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,f,s,n,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,f,y,e,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,x,s,e,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,f,s,e,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,x,s,n,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,f,y,n,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,x,y,e,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,f,y,n,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -e,b,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,n,c,l -p,f,s,n,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -e,x,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,n,v,l -p,f,y,e,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,f,y,n,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,f,y,e,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,f,s,n,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,x,y,e,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,x,s,n,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,f,s,n,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,f,y,e,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,f,s,n,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,f,s,n,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,f,s,n,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,f,y,e,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,f,s,e,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,x,y,e,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,x,s,e,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,f,s,e,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,f,y,n,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,x,y,e,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,k,s,e,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,k,s,n,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,f,y,n,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,x,s,e,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,x,y,e,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,f,y,e,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,f,y,n,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,f,s,e,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,x,s,n,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -e,x,f,w,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,n,g -p,f,y,n,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,x,s,n,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,x,s,e,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,f,s,n,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,f,s,n,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,x,y,e,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,x,s,e,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,f,s,n,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,k,s,n,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,f,y,n,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,x,s,n,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,f,y,e,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,x,s,e,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,f,s,n,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,f,y,n,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,k,y,n,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,f,y,n,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,f,s,n,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,x,s,e,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,f,s,n,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,f,s,n,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,f,s,e,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,f,y,n,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,f,s,n,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,f,y,n,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,f,s,e,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,f,s,e,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,x,y,e,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,f,s,n,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,x,y,e,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,f,y,e,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,x,s,n,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,f,y,n,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,f,y,e,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,x,y,e,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,f,y,n,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,f,y,n,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,x,y,e,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,f,y,n,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,f,s,n,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,x,s,n,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,f,y,e,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,x,y,e,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,x,s,e,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,f,s,e,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,f,y,e,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,x,y,e,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,x,y,e,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,x,s,n,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,x,s,e,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,k,s,e,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -e,x,s,c,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,v,p -p,x,s,e,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,f,s,n,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,x,s,n,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,f,y,n,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,f,y,e,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,f,s,e,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,x,y,e,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,x,s,e,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,x,s,n,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,x,y,e,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,f,s,e,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,f,s,n,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,f,y,e,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,x,y,e,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,k,s,e,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,f,y,n,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,f,s,n,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,x,s,e,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,f,s,n,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,f,s,e,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,f,y,e,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -e,b,f,w,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,n,g -p,x,y,e,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,x,y,e,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,f,y,e,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,f,y,e,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -e,k,f,w,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,s,g -p,x,s,n,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,f,s,n,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,x,s,n,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,f,s,e,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,x,s,n,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,x,s,n,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,x,s,e,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,k,s,n,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,x,y,e,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,x,s,e,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,x,y,e,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,x,s,e,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,x,s,e,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,x,s,e,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,x,s,e,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,f,y,e,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,x,s,n,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,f,s,n,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,x,s,e,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,f,s,e,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,x,s,n,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,f,y,e,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,x,s,n,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,k,s,n,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,f,s,e,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,f,s,e,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,f,y,e,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,k,s,n,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,f,y,n,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,f,s,e,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,x,y,e,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,f,s,e,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,f,y,e,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,f,s,n,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,f,s,n,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,x,y,e,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,x,y,e,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,f,s,e,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,k,y,e,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,f,y,e,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,k,y,n,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,x,s,e,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,x,y,e,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,x,s,n,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,f,y,n,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,x,s,e,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -e,b,s,g,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,n,g -p,x,y,e,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,x,s,e,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,f,y,e,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,x,s,e,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,f,y,e,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,f,y,e,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,x,s,n,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,f,y,n,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -e,k,s,w,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,s,g -p,f,y,e,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,x,s,e,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,f,y,n,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,f,y,n,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,x,s,e,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,f,y,e,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,f,y,e,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,f,s,n,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,x,y,e,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,f,y,e,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -e,b,f,g,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,n,g -p,k,y,e,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,x,y,e,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,k,s,e,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,x,s,n,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -e,k,s,w,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,s,g -p,f,s,e,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,x,s,n,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,k,s,e,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,k,y,n,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,k,y,e,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,x,s,e,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,f,s,e,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,f,y,e,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,x,y,e,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,f,y,n,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,x,y,e,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,f,y,n,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,x,y,e,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,k,y,n,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,f,s,e,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,x,s,n,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,f,y,n,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,f,s,e,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,x,s,e,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,f,s,n,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,f,y,n,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,x,y,e,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,x,s,e,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,f,y,e,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,f,s,e,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,f,y,e,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,x,s,n,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,f,s,n,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,x,s,n,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,f,y,n,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,k,y,n,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,x,s,e,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,f,y,n,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,x,y,e,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,f,y,e,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,x,y,e,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,f,y,e,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,f,y,e,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,f,s,e,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,k,y,e,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,x,s,e,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -e,k,s,g,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,s,g -p,x,s,n,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,f,s,e,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,f,s,n,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,f,s,e,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,f,y,n,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,x,s,e,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,x,s,e,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,x,s,e,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,x,s,e,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,f,s,e,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,x,s,e,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,x,s,n,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,f,s,n,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,k,y,n,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,x,y,e,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,x,s,n,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,x,s,e,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -e,b,s,w,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,s,g -p,f,s,e,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,x,s,e,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,x,y,e,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,f,y,n,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,f,s,e,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,f,y,n,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,f,y,e,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,f,s,n,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,x,y,e,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,f,s,n,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,x,s,n,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,f,s,e,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,x,s,n,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,f,s,e,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,x,y,e,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,f,y,n,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,x,y,e,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,f,s,n,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,f,s,n,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,x,s,n,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,f,s,e,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,k,y,n,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,x,y,e,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,x,y,e,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,k,s,n,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,x,s,e,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,x,s,e,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,f,y,n,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,f,s,e,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,f,s,e,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,f,s,n,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,f,y,e,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,f,y,e,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,k,s,e,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,x,s,n,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,f,y,n,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,f,s,e,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,k,s,n,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,f,y,n,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,x,y,e,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,x,y,e,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,x,s,e,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,f,y,n,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,f,y,n,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,f,y,e,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,k,y,n,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,x,s,n,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,x,s,e,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,x,s,n,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,f,y,e,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,k,y,e,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -e,x,f,g,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,s,g -p,f,y,e,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,x,s,e,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,x,s,e,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,x,y,e,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,f,y,n,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,f,y,n,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,x,s,n,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,x,s,e,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,f,y,e,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,f,s,n,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,f,y,n,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,f,y,n,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,x,y,e,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,x,s,e,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,f,s,n,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,f,s,n,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,x,s,e,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,f,s,n,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,f,s,n,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,f,y,n,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,x,s,n,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,f,s,n,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,f,s,n,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,x,s,n,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,f,y,n,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,x,s,n,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,x,s,n,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,f,s,n,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,f,y,n,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,x,y,e,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,f,s,e,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,f,y,n,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,f,s,e,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,x,s,n,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -e,k,f,w,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,n,g -p,x,s,n,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,f,s,n,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,f,y,n,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,f,s,n,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,f,y,n,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,f,y,n,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,f,s,n,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,f,y,e,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -e,b,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,o,v,l -p,f,s,e,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,f,s,e,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,x,s,e,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,f,y,n,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,f,y,e,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,f,s,n,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,f,y,e,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,f,s,n,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,k,y,n,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,f,y,e,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,f,s,e,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,x,y,e,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,f,s,n,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,x,s,e,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,k,y,n,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,x,s,n,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,x,y,e,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,f,y,n,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,f,s,e,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,f,s,n,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -e,x,s,w,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,s,g -p,f,y,n,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,f,s,n,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,x,y,e,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,f,s,e,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,x,s,n,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,x,y,e,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -e,k,f,g,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,s,g -p,f,s,e,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,f,y,e,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -e,b,f,w,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,s,g -p,f,s,n,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,x,y,e,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,x,y,e,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,f,s,n,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,x,s,n,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,f,s,e,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,f,s,e,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,f,s,e,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,x,y,e,f,m,f,c,b,w,e,c,k,y,c,c,p,w,n,n,w,c,d -p,f,y,n,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,f,y,e,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,x,s,e,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,f,s,e,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,f,y,e,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,f,y,e,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,x,s,e,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,f,s,e,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -e,x,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,y,c,l -p,f,y,n,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,f,y,e,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,f,y,e,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,x,s,n,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,x,s,e,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,x,y,e,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,x,s,e,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,x,y,e,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,f,y,e,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -e,x,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,o,v,l -p,f,s,n,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,x,y,e,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,f,s,n,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,f,y,e,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,x,y,e,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,x,s,n,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,x,s,n,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,x,s,n,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,x,y,e,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,f,s,n,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,f,s,n,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,k,y,e,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,x,s,n,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,f,y,n,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -e,k,s,w,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,n,g -p,f,s,e,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,x,s,e,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,f,y,n,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,f,y,n,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,f,y,e,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,x,s,n,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,f,y,n,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,x,s,n,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,k,y,n,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,f,s,e,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,f,y,e,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,f,y,e,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,f,y,e,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,f,y,n,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,f,y,n,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,k,y,n,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,k,y,n,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,f,s,e,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,x,s,e,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,k,s,n,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,x,s,e,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,f,s,n,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,x,s,e,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,f,s,n,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,x,s,n,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,f,y,e,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,x,s,n,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,x,s,e,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,x,s,e,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,x,s,n,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,x,y,e,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,f,y,e,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,f,s,e,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,x,s,e,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,f,y,e,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,f,s,e,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,f,s,e,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,f,y,n,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,f,s,n,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,x,s,e,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,f,y,n,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,f,s,n,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,f,y,n,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,f,s,e,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,f,y,e,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,f,y,n,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,f,s,e,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,f,s,e,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,f,y,n,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,f,s,e,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,f,s,n,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,k,y,e,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,f,y,e,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,f,s,e,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,f,y,e,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,f,y,n,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,f,y,e,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,f,s,n,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,x,y,e,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -e,x,f,w,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,n,g -p,x,s,e,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,x,s,e,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,f,y,n,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,x,s,e,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,x,s,n,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,x,s,n,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,x,s,n,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -e,x,f,g,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,n,g -p,f,y,e,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,f,y,e,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,x,y,e,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,x,s,n,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,k,s,e,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,k,y,e,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,f,y,e,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,x,s,n,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,f,s,n,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,x,s,e,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,f,y,n,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,x,s,n,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -e,k,f,w,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,n,g -p,k,y,n,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,f,s,e,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,x,y,e,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,x,s,n,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,x,s,n,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,f,y,e,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,f,y,n,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,x,y,e,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,f,s,e,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,x,s,e,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,x,s,n,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,f,y,n,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,f,y,e,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,f,y,n,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,f,y,n,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,f,s,n,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,f,y,e,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,f,y,e,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,x,y,e,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,k,s,e,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,f,y,e,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,f,y,n,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,f,s,n,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,f,s,e,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,k,s,e,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,f,y,e,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,f,s,n,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -e,x,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,b,v,l -p,x,s,n,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,k,s,n,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,f,s,n,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,f,s,n,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,x,s,n,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,f,s,n,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,f,y,e,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,f,y,e,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,f,s,n,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,x,s,e,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,x,s,n,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,x,s,e,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,x,s,e,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,f,y,e,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,x,s,e,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,k,s,e,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,x,y,e,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,f,s,n,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,f,s,n,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,x,s,n,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,k,y,e,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,x,s,e,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,f,y,n,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,f,y,e,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,f,y,n,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,f,s,n,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,f,s,e,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,k,y,n,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,f,y,e,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,f,s,e,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,f,s,n,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,x,s,n,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,f,y,n,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,f,y,e,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,x,y,e,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,f,s,e,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,x,s,n,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,f,s,n,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,f,s,n,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,f,s,e,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -e,x,s,g,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,n,g -p,k,y,n,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,x,y,e,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,x,s,n,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,x,s,n,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,f,y,e,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,k,y,n,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,x,s,e,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,x,s,n,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,k,y,n,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,x,y,e,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,k,s,n,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,x,s,n,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,x,y,e,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,f,s,e,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,f,s,n,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,f,s,n,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,f,s,e,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,x,y,e,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,x,s,e,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,f,s,n,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,f,y,e,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,x,s,n,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,x,s,e,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,x,s,e,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,f,s,e,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,x,y,e,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,x,s,n,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,x,s,e,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,x,s,e,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,x,s,n,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,x,s,n,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,f,s,e,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,f,y,e,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,x,s,n,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,x,s,e,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,f,s,n,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,x,s,n,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,f,s,e,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,k,y,n,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,x,s,n,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,f,y,n,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,k,y,n,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,f,s,e,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,f,s,n,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,x,s,e,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,x,s,n,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,f,y,n,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,f,y,n,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,x,s,e,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,f,y,n,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,x,y,e,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,f,y,n,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,f,y,e,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,x,y,e,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,f,s,e,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,k,s,n,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,x,y,e,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,x,s,n,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,f,s,e,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,f,s,e,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -e,b,f,g,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,s,g -p,x,s,n,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,k,s,n,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -e,b,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,y,v,l -p,f,s,n,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,f,y,n,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,x,y,e,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,x,s,e,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,k,y,c,f,m,a,c,b,w,e,c,k,y,c,c,p,w,n,n,w,c,d -p,x,s,e,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,f,s,n,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,x,s,n,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,x,y,e,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,x,s,e,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,f,s,e,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,f,s,n,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,f,s,n,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,f,y,e,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,x,s,e,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,f,y,e,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,f,y,n,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,x,y,e,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,f,y,e,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,f,s,e,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,f,s,e,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,x,s,e,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,x,s,e,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,k,y,e,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,x,y,e,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,x,s,e,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,x,s,n,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,x,s,n,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,f,s,n,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,f,y,n,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,x,s,e,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,k,s,n,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,f,s,n,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,f,y,n,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,f,y,e,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,f,y,e,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,f,y,n,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,x,s,e,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,f,y,n,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,f,s,n,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,f,s,e,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,x,s,n,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,f,y,e,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,k,y,n,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,f,s,n,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,f,y,n,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,f,s,e,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,x,s,n,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,f,s,e,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,x,s,e,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,f,y,e,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,x,s,e,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,f,s,e,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,f,s,n,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,x,s,n,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,x,s,e,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,f,s,e,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,x,s,e,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,x,s,n,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,f,s,e,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,x,y,e,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,x,s,n,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,x,y,e,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,f,s,e,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,x,s,e,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,f,y,n,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,x,s,e,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,x,s,n,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,f,s,e,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,x,s,e,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,f,s,n,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,x,y,e,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,f,y,e,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,x,y,e,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,k,y,n,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,f,y,n,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,x,y,e,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,f,s,n,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,x,s,e,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,f,s,e,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -e,x,f,g,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,s,g -p,x,s,e,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,f,s,n,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,f,s,n,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,x,s,e,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,x,s,e,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,x,s,e,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,f,y,e,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -e,b,f,g,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,s,g -p,f,y,n,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,f,y,e,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,f,y,n,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,f,s,n,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,f,y,n,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,x,y,e,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,f,y,n,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,x,s,n,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,f,y,e,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -e,k,f,g,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,s,g -e,b,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,o,c,l -p,f,s,n,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,x,s,n,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,f,y,n,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,f,s,e,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,f,y,n,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,f,s,n,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,f,y,e,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,f,y,e,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,f,s,n,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,x,s,e,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -e,x,f,w,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,n,g -p,f,s,n,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,x,s,e,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,x,s,n,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,x,s,n,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,x,s,n,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,k,y,n,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,f,s,n,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,x,y,e,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,f,s,n,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,f,s,n,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,x,s,n,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,x,s,n,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,x,y,e,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,f,s,e,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,f,s,e,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,f,y,n,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,x,s,e,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,f,s,e,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,f,y,e,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,f,y,e,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,x,y,e,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,f,y,n,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,f,s,n,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,f,s,n,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,k,y,e,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,f,s,e,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,x,s,e,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,x,y,e,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,f,y,e,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,x,y,e,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,f,y,e,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,f,y,n,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,f,y,e,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,x,y,e,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,x,s,e,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,f,s,e,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,f,s,e,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,x,s,e,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,f,s,e,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,f,s,e,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,f,s,n,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,f,y,e,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,f,y,n,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,k,s,e,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,f,s,n,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,f,y,n,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,f,s,e,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,f,y,e,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,x,s,n,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,k,y,n,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,x,y,e,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,x,s,e,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -e,x,s,g,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,n,g -p,k,y,n,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,x,s,n,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,f,s,n,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,f,s,n,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,x,s,e,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,f,s,e,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,f,y,e,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,f,y,e,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,f,s,n,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,f,s,e,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,x,s,n,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,f,s,e,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,x,s,e,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,f,s,e,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,f,y,e,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,k,y,e,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,f,s,n,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,k,y,e,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,f,s,e,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,f,y,e,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,f,s,e,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -e,b,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,o,c,l -p,x,s,n,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,f,y,e,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,f,y,n,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,f,s,e,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,f,y,n,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,k,y,n,f,m,f,c,b,w,e,c,k,y,c,c,p,w,n,n,w,c,d -p,x,s,e,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,f,s,e,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,k,y,n,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,f,s,e,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -e,k,s,w,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,s,g -p,f,y,n,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,f,y,n,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,f,y,n,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,f,s,n,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,f,s,n,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,f,y,e,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,x,s,e,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,f,y,n,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,x,s,n,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,x,s,e,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,x,s,e,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,f,y,e,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,x,s,n,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,x,s,e,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,f,s,n,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,x,s,n,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,f,y,e,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,x,s,n,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,f,y,e,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,f,s,e,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,f,y,n,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,f,y,n,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,x,y,e,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -e,k,f,g,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,n,g -p,x,s,e,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,k,y,n,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,k,y,n,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,x,y,e,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,f,s,e,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,f,s,n,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,f,s,e,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,x,s,e,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,f,s,n,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,f,y,e,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,x,s,n,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,x,y,e,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,f,s,e,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,x,s,n,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,f,s,n,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -e,x,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,y,v,l -p,k,s,n,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,f,s,n,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,k,y,e,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -e,x,y,c,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,y,p -e,b,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,y,c,l -e,k,s,g,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,n,g -e,x,f,g,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,s,g -p,x,s,n,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,k,y,e,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -e,x,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,o,c,l -p,k,s,e,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,b,y,y,f,n,f,w,n,y,e,c,y,y,y,y,p,y,o,e,w,c,l -p,x,s,e,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -e,b,s,g,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,n,g -p,k,y,e,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,k,s,e,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,f,s,e,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,f,y,n,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,f,s,e,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -e,k,f,g,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,s,g -p,k,s,n,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,k,s,e,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,f,s,e,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -e,b,f,g,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,n,g -p,f,y,n,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,f,s,n,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -e,f,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,n,c,l -e,x,y,p,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,y,p -p,f,s,n,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,k,y,e,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,f,s,n,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -e,b,s,w,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,n,g -p,x,y,e,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,f,y,e,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,f,s,e,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,k,y,n,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -e,x,f,w,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,s,g -e,b,s,w,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,n,g -p,k,s,e,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,f,y,n,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -e,f,y,n,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,v,p -p,k,s,n,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,k,s,n,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,f,y,n,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,f,y,e,f,m,a,c,b,w,e,c,k,y,c,c,p,w,n,n,w,c,d -p,x,s,e,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,k,y,e,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,x,s,n,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,k,s,e,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,k,y,n,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,f,y,e,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -e,x,f,w,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,s,g -p,k,s,n,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,f,s,n,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,k,s,e,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,k,s,e,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,k,y,n,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -e,k,f,w,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,s,g -p,k,s,n,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,k,y,n,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,k,s,n,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,k,s,e,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,x,s,n,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,x,y,e,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,f,s,e,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,k,y,n,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -e,b,s,n,f,n,f,c,b,w,e,b,y,y,n,n,p,w,t,p,w,y,d -p,f,s,n,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,k,y,e,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -e,x,s,n,f,n,f,c,b,w,e,b,y,y,n,n,p,w,t,p,w,y,d -p,f,s,n,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,k,s,n,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,f,y,n,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,x,s,n,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -e,k,f,w,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,s,g -p,f,y,e,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,x,s,e,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,x,s,n,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,f,s,n,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,k,s,n,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,k,s,e,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,k,s,e,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,x,s,e,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -e,b,s,n,f,n,f,c,b,w,e,b,y,y,n,n,p,w,t,p,w,y,p -p,k,s,e,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,x,s,n,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,x,y,e,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,f,s,e,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -e,b,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,n,c,l -e,k,s,g,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,n,g -p,k,y,e,f,m,f,c,b,y,e,c,k,y,c,c,p,w,n,n,w,c,d -p,k,y,e,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,f,s,e,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -e,k,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,o,c,l -p,f,y,e,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,k,y,e,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -e,k,f,w,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,s,g -e,x,s,g,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,s,g -e,k,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,o,v,l -p,k,y,e,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,k,y,n,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,k,s,e,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -e,x,s,w,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,s,g -e,k,s,w,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,n,g -e,k,s,w,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,s,g -p,k,s,e,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,x,s,e,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -e,k,s,g,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,s,g -e,x,f,w,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,s,g -p,k,y,e,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -e,b,s,w,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,s,g -p,k,s,e,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,f,s,n,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,f,y,n,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -e,k,s,g,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,s,g -e,x,s,w,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,n,g -p,f,y,e,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,x,s,e,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -e,x,f,w,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,s,g -e,k,f,w,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,n,g -p,f,s,e,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -e,f,s,g,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,v,p -p,k,s,e,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,x,s,n,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -e,k,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,b,c,l -e,x,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,n,c,l -p,k,y,e,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,x,s,e,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,x,s,n,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,k,s,e,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,x,s,n,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -e,k,f,w,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,n,g -e,k,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,n,c,l -p,k,y,c,f,m,f,c,b,w,e,c,k,y,c,c,p,w,n,n,w,c,d -e,x,f,g,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,s,g -e,x,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,o,v,l -e,x,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,b,v,l -p,k,y,e,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -e,k,f,w,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,n,g -e,x,f,g,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,s,g -e,f,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,n,v,l -p,k,y,n,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,k,y,n,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,f,y,n,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,f,y,e,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -e,k,f,g,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,n,g -p,f,y,e,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,f,y,n,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,k,s,e,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -e,k,s,g,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,s,g -e,b,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,y,c,l -p,k,y,n,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,x,s,n,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -e,b,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,o,v,l -p,k,s,n,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,k,s,n,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,k,s,e,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,f,s,e,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,x,s,e,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,x,s,e,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,x,s,n,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,k,y,n,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -e,x,s,p,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,y,p -p,f,s,e,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,x,y,n,f,m,a,c,b,w,e,c,k,y,c,c,p,w,n,n,w,c,d -p,k,s,n,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -e,k,s,g,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,s,g -p,k,s,n,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,f,y,n,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,k,s,n,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,k,y,e,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,f,y,e,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -e,f,s,c,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,y,p -p,f,y,n,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,k,s,e,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,x,s,e,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,f,y,e,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,x,s,n,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -e,f,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,n,c,l -p,f,s,e,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,x,y,e,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,x,y,e,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,x,s,e,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,k,s,e,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,x,s,e,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -e,b,f,g,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,s,g -p,k,y,e,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,k,s,e,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -e,k,f,g,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,n,g -e,f,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,n,v,l -p,f,y,n,f,m,f,c,b,w,e,c,k,y,c,c,p,w,n,n,w,c,d -p,k,s,e,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,f,s,n,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,k,y,n,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,k,s,e,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,k,y,n,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,k,y,n,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -e,x,f,g,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,n,g -p,k,y,e,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,x,y,c,f,m,a,c,b,y,e,c,k,y,c,c,p,w,n,n,w,c,d -p,k,y,e,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,k,y,e,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -e,b,s,w,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,s,g -p,k,s,n,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,x,s,e,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,f,y,n,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,f,s,e,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,k,y,e,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,k,y,e,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -e,b,f,w,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,n,g -p,k,y,n,f,m,a,c,b,w,e,c,k,y,c,c,p,w,n,n,w,c,d -p,f,y,e,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,k,s,n,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,k,y,n,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,x,s,e,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -e,x,y,g,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,v,p -p,f,s,n,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,k,y,e,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -e,k,f,w,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,n,g -p,x,s,n,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,k,y,n,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,x,s,e,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -e,k,s,w,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,n,g -p,f,y,n,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,k,s,e,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,k,s,e,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,f,y,e,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -e,f,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,y,v,l -p,f,y,n,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,k,y,e,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,k,s,e,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,k,s,e,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -e,b,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,b,v,l -e,k,s,g,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,s,g -e,x,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,n,v,l -e,x,f,g,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,n,g -p,k,s,e,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,f,y,e,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,k,s,n,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,k,s,n,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -e,b,s,w,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,n,g -p,f,s,n,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -e,b,f,g,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,n,g -p,x,s,n,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,x,y,e,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,f,y,c,f,m,f,c,b,w,e,c,k,y,c,c,p,w,n,n,w,c,d -p,f,s,n,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,x,y,e,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,f,s,n,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,f,y,e,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,f,s,e,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,x,s,e,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -e,k,s,g,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,s,g -p,x,s,e,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,k,s,n,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,k,y,e,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,x,s,n,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -e,b,s,g,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,n,g -p,x,s,n,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,f,s,e,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,k,s,n,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -e,b,s,g,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,s,g -p,x,s,n,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,f,y,e,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,f,s,e,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,f,y,n,f,m,f,c,b,y,e,c,k,y,c,c,p,w,n,n,w,c,d -e,b,f,g,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,s,g -p,f,s,e,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,k,s,n,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -e,k,s,g,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,n,g -p,k,y,n,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,x,s,e,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -e,b,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,y,c,l -p,k,y,n,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,f,y,n,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -e,x,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,b,c,l -p,k,s,n,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,k,s,n,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,k,s,n,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,k,s,n,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -e,f,y,c,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,y,p -e,f,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,n,c,l -e,b,s,w,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,n,g -p,k,s,e,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -e,b,s,g,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,n,g -p,k,y,e,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,k,y,n,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -e,x,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,y,c,l -p,x,s,e,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,x,s,n,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,f,s,e,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,f,y,e,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,x,y,e,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,k,s,e,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -e,k,y,n,f,n,f,c,b,w,e,b,y,y,n,n,p,w,t,p,w,y,d -p,f,s,e,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,k,s,n,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,f,y,n,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,f,s,e,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -e,k,f,g,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,n,g -p,k,s,n,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -e,b,f,w,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,s,g -p,k,s,e,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -e,x,s,g,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,n,g -e,k,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,y,c,l -p,k,s,e,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,k,y,n,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -e,k,f,g,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,n,g -p,x,s,n,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,k,y,n,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -e,x,f,w,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,n,g -p,k,y,e,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,k,s,e,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,k,s,e,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,k,y,e,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,k,y,n,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -e,k,s,g,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,n,g -p,k,y,n,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,k,s,e,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -e,x,s,g,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,n,g -e,f,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,y,v,l -e,k,s,g,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,n,g -p,x,s,e,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,k,s,n,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,k,s,n,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -e,x,s,g,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,s,g -p,k,y,e,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -e,f,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,y,v,l -e,k,s,w,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,n,g -p,f,y,e,f,m,f,c,b,y,e,c,k,y,c,c,p,w,n,n,w,c,d -e,b,s,g,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,s,g -p,f,y,n,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -e,b,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,b,c,l -e,b,s,g,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,n,g -e,k,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,y,c,l -e,b,s,g,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,n,g -p,k,s,n,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,k,y,n,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -e,f,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,o,c,l -p,k,s,e,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,f,s,e,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,k,s,n,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,k,s,n,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -e,b,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,y,v,l -e,k,f,g,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,s,g -e,b,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,o,c,l -p,k,s,n,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,k,y,e,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,k,y,e,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,k,s,n,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -e,f,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,n,c,l -p,k,s,e,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -e,x,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,o,v,l -p,k,s,n,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -e,k,s,w,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,s,g -p,k,y,e,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,k,y,n,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -e,k,f,g,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,s,g -p,f,s,n,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -e,x,s,g,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,n,g -p,k,y,n,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,f,s,e,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -e,x,f,w,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,n,g -p,k,y,n,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,f,y,n,f,m,a,c,b,w,e,c,k,y,c,c,p,w,n,n,w,c,d -e,b,f,g,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,n,g -p,k,y,e,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,x,y,e,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,k,s,e,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -e,k,f,g,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,n,g -e,k,f,w,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,s,g -p,k,y,e,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -e,k,s,g,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,n,g -p,k,s,n,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,k,y,n,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -e,k,s,w,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,s,g -p,k,y,e,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -e,b,s,w,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,s,g -p,k,s,n,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -e,x,s,w,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,n,g -e,b,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,n,v,l -p,k,s,n,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,k,y,e,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -e,x,f,w,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,n,g -p,x,y,e,f,m,a,c,b,y,e,c,k,y,c,c,p,w,n,n,w,c,d -p,k,s,e,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,k,s,n,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -p,k,y,n,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,k,s,e,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -e,k,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,b,c,l -p,k,y,n,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -e,f,y,n,f,n,f,c,b,w,e,b,y,y,n,n,p,w,t,p,w,y,d -e,k,s,g,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,n,g -p,f,y,e,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,k,y,y,f,n,f,w,n,y,e,c,y,y,y,y,p,y,o,e,w,c,l -p,k,y,e,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,k,s,e,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,k,y,e,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -e,b,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,n,c,l -e,x,s,g,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,y,p -e,k,s,g,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,n,g -p,f,y,e,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,k,s,e,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,k,y,e,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -e,b,f,w,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,n,g -e,f,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,o,c,l -p,k,s,n,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,k,s,e,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -e,x,f,w,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,s,g -p,k,y,e,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -e,x,f,w,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,s,g -p,k,y,e,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,k,y,n,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -e,x,s,g,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,n,g -e,x,s,w,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,n,g -p,k,y,n,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,k,s,n,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,k,s,e,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -e,b,f,w,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,n,g -p,f,s,n,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,k,s,e,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,k,s,n,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,x,y,n,f,m,f,c,b,y,e,c,k,y,c,c,p,w,n,n,w,c,d -p,k,y,n,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -e,f,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,y,c,l -p,x,y,e,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -e,f,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,y,v,l -e,b,s,w,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,n,g -e,b,s,g,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,n,g -p,k,y,e,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,k,s,n,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,k,s,e,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,k,s,e,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -e,b,f,w,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,s,g -e,k,s,g,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,n,g -p,f,y,e,f,m,f,c,b,w,e,c,k,y,c,c,p,w,n,n,w,c,d -p,k,y,n,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,k,y,n,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,f,s,e,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,x,s,n,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,k,y,n,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,k,y,c,f,m,f,c,b,y,e,c,k,y,c,c,p,w,n,n,w,c,d -p,k,y,n,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -e,k,s,w,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,n,g -p,f,y,n,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -e,b,f,g,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,s,g -p,f,s,e,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,k,s,e,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -e,k,s,g,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,s,g -e,x,s,g,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,s,g -p,k,s,e,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -e,k,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,y,c,l -e,f,y,p,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,y,p -e,b,s,w,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,n,g -p,f,y,n,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,f,s,e,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,k,s,e,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -e,k,f,g,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,n,g -e,x,f,w,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,s,g -e,x,s,c,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,y,p -e,k,f,g,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,s,g -p,k,s,e,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,k,y,e,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,k,s,n,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,x,y,e,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -e,k,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,o,c,l -p,f,y,y,f,n,f,w,n,w,e,c,y,y,y,y,p,y,o,e,w,c,l -p,x,y,c,f,m,a,c,b,w,e,c,k,y,c,c,p,w,n,n,w,c,d -p,x,s,n,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -e,x,y,p,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,v,p -p,k,y,n,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -e,k,s,g,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,n,g -e,b,s,g,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,s,g -p,k,s,e,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -e,x,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,b,v,l -e,b,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,b,v,l -e,f,s,n,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,y,p -e,k,s,g,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,s,g -p,f,s,n,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,k,s,n,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,f,y,n,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,k,y,e,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,k,s,n,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,k,s,e,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -e,b,s,w,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,n,g -p,k,y,n,f,m,f,c,b,y,e,c,k,y,c,c,p,w,n,n,w,c,d -p,k,y,e,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -e,k,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,y,v,l -p,k,s,e,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -e,b,s,w,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,s,g -e,x,s,g,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,s,g -p,k,s,n,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,k,y,n,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,k,s,n,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,k,y,e,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,k,s,e,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,k,y,n,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -e,b,s,g,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,s,g -p,k,y,e,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -e,b,f,w,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,s,g -p,c,y,y,f,n,f,w,n,y,e,c,y,y,y,y,p,y,o,e,w,c,l -p,x,s,n,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,k,y,e,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -e,x,s,g,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,s,g -e,b,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,y,v,l -p,k,y,e,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -e,b,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,n,c,l -p,k,y,e,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,k,y,e,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,k,s,e,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -e,b,s,g,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,s,g -e,k,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,n,c,l -e,b,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,n,v,l -p,x,s,n,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -e,x,s,g,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,v,p -e,x,f,g,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,s,g -p,k,s,n,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -e,k,f,g,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,n,g -p,k,s,n,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,k,y,e,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,k,y,n,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -e,f,s,p,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,y,p -p,k,y,n,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,k,y,e,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -e,f,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,b,c,l -p,k,y,e,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,k,y,n,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,k,y,n,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,f,y,n,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,k,s,e,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,k,y,e,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -e,x,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,o,c,l -p,f,s,e,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -e,k,s,g,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,s,g -p,k,s,e,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,k,s,e,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -e,f,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,o,v,l -p,k,s,n,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -e,x,f,g,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,s,g -e,k,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,o,v,l -p,f,s,e,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,k,s,n,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -e,f,y,n,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,y,p -e,x,f,g,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,n,g -e,k,s,w,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,n,g -e,b,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,b,c,l -p,k,y,e,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,k,y,e,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -e,k,y,n,f,n,f,c,b,w,e,b,y,y,n,n,p,w,t,p,w,y,p -e,x,f,g,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,s,g -p,k,s,n,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,k,y,e,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,k,y,n,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,f,y,n,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -e,f,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,b,v,l -p,f,y,e,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,k,s,n,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,k,s,n,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -e,b,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,y,c,l -e,x,f,g,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,n,g -p,k,s,n,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,k,y,n,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -e,x,s,g,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,s,g -p,k,y,n,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,k,s,e,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,k,y,e,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -e,b,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,o,c,l -e,b,s,g,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,s,g -p,x,y,e,f,m,a,c,b,w,e,c,k,y,c,c,p,w,n,n,w,c,d -p,k,s,n,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,k,y,e,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,k,y,e,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,k,s,n,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,k,y,e,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,k,s,e,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,x,s,e,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,k,s,e,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,k,s,n,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -e,b,f,g,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,s,g -p,k,y,n,f,m,a,c,b,y,e,c,k,y,c,c,p,w,n,n,w,c,d -e,f,s,n,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,v,p -p,k,s,n,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,f,y,y,f,n,f,w,n,y,e,c,y,y,y,y,p,y,o,e,w,c,l -p,k,s,n,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,f,y,e,f,m,a,c,b,y,e,c,k,y,c,c,p,w,n,n,w,c,d -e,x,f,g,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,n,g -p,k,y,n,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,k,s,n,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,f,y,n,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -e,f,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,y,c,l -p,k,y,n,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,f,y,n,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,k,s,n,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,f,y,e,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,k,s,n,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,x,y,e,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,k,y,n,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -e,x,s,w,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,s,g -e,x,s,g,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,s,g -e,x,f,w,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,s,g -p,k,s,n,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,k,s,e,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,k,y,e,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,k,s,e,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,k,s,n,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,k,y,n,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,k,y,e,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,k,s,n,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,k,s,e,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -e,f,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,o,c,l -p,f,s,n,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,k,s,n,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -e,x,s,g,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,n,g -e,x,f,w,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,n,g -p,k,y,n,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -e,x,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,o,c,l -p,k,y,n,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,k,y,n,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,k,y,n,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,k,y,e,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,k,s,n,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -e,b,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,b,c,l -e,f,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,n,c,l -e,b,s,w,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,s,g -p,k,s,n,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -e,x,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,n,c,l -p,k,y,n,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -e,b,f,g,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,s,g -e,b,s,g,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,n,g -p,x,s,n,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -e,x,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,b,c,l -e,x,s,w,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,n,g -e,x,s,n,f,n,f,c,b,w,e,b,y,y,n,n,p,w,t,p,w,y,p -e,k,s,g,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,s,g -e,x,s,w,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,n,g -p,f,y,c,f,m,f,c,b,y,e,c,k,y,c,c,p,w,n,n,w,c,d -e,x,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,y,c,l -p,k,s,e,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,k,y,e,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -e,x,s,w,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,n,g -e,k,f,w,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,s,g -e,b,f,g,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,s,g -e,k,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,b,v,l -p,k,y,n,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,f,y,e,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,k,s,e,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -e,k,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,n,v,l -e,f,s,p,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,v,p -p,k,y,n,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -e,b,s,w,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,s,g -p,k,s,e,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -e,k,s,w,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,s,g -p,k,y,n,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,k,s,n,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -e,f,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,b,c,l -p,k,s,n,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -p,k,y,e,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -e,x,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,y,v,l -e,x,f,w,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,n,g -e,x,f,g,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,n,g -e,x,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,b,v,l -p,k,s,n,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,k,y,e,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -e,x,s,w,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,s,g -p,k,y,e,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -e,x,f,g,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,s,g -p,k,s,n,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,f,y,n,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -p,k,s,e,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -e,k,s,n,f,n,f,c,b,w,e,b,y,y,n,n,p,w,t,p,w,y,p -p,k,s,e,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,k,s,n,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -e,b,s,g,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,s,g -p,k,y,n,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,k,s,n,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -e,k,f,g,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,n,g -p,k,y,n,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,k,s,e,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,k,y,n,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,k,s,e,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -e,k,f,w,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,n,g -p,k,y,e,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,k,y,e,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -e,b,f,w,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,s,g -e,x,s,g,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,n,g -e,b,s,g,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,s,g -p,k,y,e,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,k,s,n,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,k,y,e,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -e,b,s,w,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,s,g -p,f,s,e,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,k,s,n,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -e,k,s,w,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,s,g -p,k,y,e,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,k,s,e,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,k,s,n,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -e,x,s,n,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,v,p -p,k,s,n,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,k,y,e,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,b,y,y,f,n,f,w,n,w,e,c,y,y,y,y,p,y,o,e,w,c,l -p,k,y,e,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -e,x,s,n,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,y,p -p,k,s,e,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -e,k,f,g,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,s,g -p,k,s,e,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,k,s,e,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,k,s,n,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,k,y,n,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -e,x,f,g,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,n,g -e,b,s,w,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,n,g -p,k,y,e,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -e,b,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,n,c,l -p,k,y,e,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,k,s,e,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -e,b,s,g,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,s,g -p,k,s,e,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -e,b,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,o,v,l -p,f,s,n,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,k,s,e,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,k,s,n,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,k,y,n,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -e,b,f,g,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,n,g -e,k,s,w,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,s,g -p,k,s,n,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,f,y,n,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -e,x,s,w,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,s,g -e,x,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,b,c,l -p,k,s,n,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,k,y,n,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -e,k,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,b,v,l -e,b,f,w,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,s,g -e,x,s,w,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,n,g -p,f,y,e,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,k,y,e,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,x,y,e,f,m,f,c,b,y,e,c,k,y,c,c,p,w,n,n,w,c,d -e,f,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,y,c,l -p,k,s,n,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,x,s,n,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,k,y,e,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -e,b,s,w,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,s,g -e,b,s,g,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,s,g -e,k,f,g,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,n,g -e,k,f,g,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,n,g -e,x,f,w,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,n,g -p,k,y,e,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,f,y,e,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,k,y,e,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,f,s,n,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -e,b,s,w,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,s,g -e,k,s,w,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,s,g -e,b,f,w,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,n,g -e,f,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,b,c,l -p,k,y,e,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,k,s,n,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,k,s,n,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,f,y,n,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,x,s,e,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -e,f,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,o,v,l -e,k,f,w,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,s,g -p,k,s,n,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,x,s,n,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -e,b,f,g,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,s,g -p,k,y,n,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -e,b,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,y,c,l -e,f,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,n,v,l -p,k,y,e,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,k,s,e,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,k,y,n,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -p,k,y,e,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,k,y,n,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -e,x,s,g,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,s,g -p,k,y,n,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -e,f,y,c,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,v,p -e,b,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,n,v,l -p,k,s,e,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,k,s,n,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,k,y,n,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -e,b,f,g,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,s,g -p,k,y,n,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -e,b,f,w,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,s,g -p,k,s,e,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -e,x,s,w,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,s,g -p,k,y,e,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,k,y,e,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -e,x,s,w,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,n,g -p,k,y,e,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,k,y,n,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -e,k,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,o,v,l -e,k,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,n,v,l -p,k,s,e,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,k,s,e,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -e,k,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,n,c,l -p,k,s,n,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,k,s,e,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,k,y,e,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,k,y,e,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,k,y,e,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -e,k,f,w,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,n,g -e,b,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,n,v,l -p,k,s,e,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -e,f,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,b,v,l -e,f,y,n,f,n,f,c,b,w,e,b,y,y,n,n,p,w,t,p,w,y,p -p,k,y,e,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -e,f,s,g,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,y,p -e,x,s,p,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,v,p -p,c,y,y,f,n,f,w,n,w,e,c,y,y,y,y,p,y,o,e,w,c,l -p,k,s,e,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -p,k,y,e,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,k,y,e,f,m,a,c,b,y,e,c,k,y,c,c,p,w,n,n,w,c,d -e,b,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,o,v,l -p,k,s,n,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -e,x,s,w,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,s,g -p,x,s,e,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,x,y,c,f,m,f,c,b,w,e,c,k,y,c,c,p,w,n,n,w,c,d -p,f,s,n,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -e,k,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,b,c,l -e,b,y,n,f,n,f,c,b,w,e,b,y,y,n,n,p,w,t,p,w,y,d -p,f,s,n,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,k,s,n,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -e,b,s,g,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,s,g -e,x,y,n,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,v,p -p,f,s,n,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -e,k,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,y,c,l -e,b,f,w,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,n,g -e,x,f,w,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,n,g -p,k,s,n,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,x,y,n,f,m,a,c,b,y,e,c,k,y,c,c,p,w,n,n,w,c,d -p,k,y,e,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -e,x,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,b,c,l -p,k,s,e,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,x,s,e,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,k,s,n,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,k,y,e,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,k,y,n,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -p,k,s,e,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -e,b,f,g,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,n,g -e,k,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,y,v,l -p,k,y,n,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,k,y,y,f,n,f,w,n,w,e,c,y,y,y,y,p,y,o,e,w,c,l -e,k,s,w,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,n,g -e,x,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,y,c,l -p,k,s,n,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -e,k,f,g,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,s,g -e,k,f,w,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,n,g -e,f,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,b,c,l -e,x,s,w,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,n,g -e,b,s,g,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,n,g -e,x,f,w,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,n,g -e,k,f,w,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,n,g -p,k,s,n,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,k,y,e,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -e,k,f,g,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,s,g -e,x,s,w,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,s,g -p,k,s,n,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,k,y,n,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,k,y,n,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,k,s,e,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -p,k,s,e,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -e,b,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,n,v,l -p,k,s,e,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -e,x,s,g,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,n,g -e,x,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,y,v,l -e,b,s,w,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,n,g -p,k,s,e,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -e,x,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,n,v,l -p,k,s,n,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,k,s,e,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,k,y,e,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -e,b,f,w,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,s,g -p,k,y,n,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,k,s,e,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -e,b,s,g,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,s,g -p,k,s,n,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,x,s,n,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,k,y,e,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -e,x,s,w,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,n,g -e,x,s,w,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,s,g -p,k,y,n,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -e,k,s,n,f,n,f,c,b,w,e,b,y,y,n,n,p,w,t,p,w,y,d -p,k,s,e,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,k,y,e,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -e,b,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,o,v,l -e,b,f,g,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,n,g -p,k,s,e,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,k,s,n,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -p,f,y,n,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,f,y,n,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -e,f,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,y,c,l -p,k,y,n,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -e,k,s,w,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,s,g -e,b,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,b,c,l -p,k,y,n,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -p,k,s,n,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,k,s,e,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -e,k,s,w,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,n,g -p,k,y,e,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -e,x,s,w,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,s,g -p,k,y,e,f,s,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,k,y,e,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,k,y,n,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,f,y,c,f,m,a,c,b,w,e,c,k,y,c,c,p,w,n,n,w,c,d -p,x,s,n,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -e,k,f,g,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,s,g -p,k,s,e,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,x,y,n,f,m,f,c,b,w,e,c,k,y,c,c,p,w,n,n,w,c,d -p,f,y,e,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -e,k,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,b,c,l -p,k,s,n,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -e,b,f,g,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,n,g -e,b,f,w,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,n,g -e,x,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,y,v,l -p,k,y,n,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -e,f,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,o,c,l -e,x,s,w,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,n,g -p,k,s,e,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,k,s,e,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,p -e,x,s,g,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,n,g -e,b,s,g,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,n,g -p,k,y,n,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -p,k,y,e,f,m,f,c,b,w,e,c,k,y,c,c,p,w,n,n,w,c,d -p,k,y,e,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,k,y,n,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -e,x,f,w,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,s,g -p,k,y,e,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -e,b,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,b,v,l -p,k,y,n,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,k,s,n,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -e,b,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,y,v,l -e,f,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,n,v,l -e,k,s,g,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,n,g -e,f,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,y,c,l -p,k,y,e,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -e,b,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,b,v,l -e,k,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,n,c,l -p,k,y,e,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,d -e,f,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,n,c,l -p,k,s,e,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -e,b,f,g,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,n,g -p,k,y,n,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -e,f,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,b,v,l -p,k,s,n,f,s,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,l -e,x,s,g,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,s,g -e,x,s,g,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,s,g -e,k,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,b,v,l -e,x,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,b,c,l -p,k,y,e,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -e,x,f,g,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,n,g -p,k,s,n,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,k,y,e,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,k,y,n,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -p,k,s,e,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,k,y,n,f,s,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,k,y,e,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -e,x,s,w,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,n,g -p,k,s,n,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,k,s,e,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -p,k,s,e,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -e,x,f,g,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,n,g -e,x,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,o,c,l -e,b,s,w,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,n,g -p,k,s,n,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,k,y,n,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,k,s,n,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,x,y,e,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,k,y,e,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -e,x,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,b,v,l -e,x,s,g,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,s,g -p,k,s,e,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,k,y,e,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -e,k,s,w,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,n,g -e,b,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,b,v,l -e,k,s,w,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,n,g -p,k,s,e,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,k,y,n,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,k,s,e,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -p,k,s,n,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,x,s,n,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -e,k,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,n,c,l -p,k,s,n,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,k,s,n,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -p,k,y,e,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -e,x,f,w,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,s,g -p,f,s,e,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,k,s,n,f,y,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,k,s,e,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -e,f,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,b,v,l -e,x,y,n,f,n,f,c,b,w,e,b,y,y,n,n,p,w,t,p,w,y,d -p,k,y,n,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,k,s,e,f,s,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,l -e,b,s,w,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,s,g -p,k,y,n,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -p,k,s,n,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,p -e,x,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,n,c,l -e,x,s,g,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,s,g -e,x,s,g,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,n,g -p,f,y,n,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,f,y,n,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -e,f,y,g,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,v,p -p,k,s,e,f,y,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -e,x,f,w,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,s,g -p,k,y,n,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,k,s,n,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -p,x,s,e,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -e,x,f,g,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,s,g -e,f,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,n,v,l -p,x,y,e,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -e,b,f,w,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,s,g -p,k,s,e,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -e,x,f,g,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,s,g -p,f,y,n,f,m,a,c,b,y,e,c,k,y,c,c,p,w,n,n,w,c,d -e,x,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,o,v,l -e,b,s,g,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,n,g -e,b,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,o,v,l -p,k,s,e,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -e,f,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,o,v,l -e,x,f,g,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,n,g -p,k,s,n,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -e,x,f,w,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,n,g -e,f,y,p,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,v,p -p,k,y,e,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -e,k,f,g,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,n,g -e,k,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,y,c,l -p,k,s,n,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -p,k,s,n,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -p,k,s,e,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,k,y,n,f,s,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,d -e,k,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,o,c,l -p,k,y,n,f,s,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -e,k,f,w,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,s,g -p,k,y,e,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -e,f,s,n,f,n,f,c,b,w,e,b,y,y,n,n,p,w,t,p,w,y,p -p,k,s,e,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -e,x,f,g,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,s,g -p,k,y,e,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,d -p,k,y,e,f,y,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,k,s,n,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,l -e,b,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,o,c,l -e,k,s,w,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,n,g -e,b,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,o,c,l -e,f,y,g,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,y,p -p,k,y,e,f,m,a,c,b,w,e,c,k,y,c,c,p,w,n,n,w,c,d -p,x,y,e,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,k,y,n,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -e,k,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,y,v,l -e,k,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,o,c,l -e,x,y,c,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,v,p -p,k,s,e,f,s,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -p,k,y,n,f,y,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,l -p,k,s,e,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -p,k,y,n,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,k,y,e,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -e,f,s,c,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,v,p -e,x,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,n,c,l -e,b,f,w,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,n,g -e,k,f,g,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,s,g -e,f,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,o,c,l -e,k,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,o,c,l -e,k,f,w,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,n,g -p,k,y,e,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,l -e,b,f,w,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,s,g -p,k,y,n,f,y,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,k,y,e,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,k,y,n,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -e,x,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,y,v,l -e,x,y,n,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,y,p -e,b,s,w,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,n,g -p,f,y,n,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,d -p,k,s,n,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,k,s,e,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -e,x,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,y,c,l -e,x,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,n,v,l -e,b,s,w,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,s,g -p,x,y,e,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -e,b,f,w,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,s,g -e,b,f,w,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,n,g -e,b,f,w,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,n,g -e,k,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,o,v,l -p,k,y,e,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,p -e,k,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,o,v,l -p,k,s,e,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,d -p,k,y,c,f,m,a,c,b,y,e,c,k,y,c,c,p,w,n,n,w,c,d -p,k,s,n,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -e,x,s,g,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,n,g -e,f,s,n,f,n,f,c,b,w,e,b,y,y,n,n,p,w,t,p,w,y,d -e,k,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,y,c,l -e,b,y,n,f,n,f,c,b,w,e,b,y,y,n,n,p,w,t,p,w,y,p -p,x,s,n,f,f,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -e,b,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,b,c,l -p,f,s,n,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -p,k,y,n,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -e,k,s,g,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,n,g -p,k,y,n,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -e,k,f,g,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,s,g -e,x,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,o,c,l -p,k,s,e,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -e,f,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,y,v,l -p,k,s,n,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,k,y,n,f,s,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -e,k,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,n,v,l -e,b,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,n,c,l -e,x,y,n,f,n,f,c,b,w,e,b,y,y,n,n,p,w,t,p,w,y,p -e,x,s,w,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,s,g -e,f,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,o,v,l -p,f,s,n,f,f,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,x,y,e,f,s,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,d -p,k,y,e,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,k,s,e,f,f,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,k,s,e,f,f,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,p -e,b,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,n,v,l -e,x,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,y,v,l -e,f,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,y,v,l -p,k,s,n,f,s,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -e,b,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,b,v,l -e,k,s,g,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,s,g -e,k,f,w,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,s,g -p,k,s,e,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,p -e,b,f,w,f,n,f,w,b,g,e,?,k,k,w,w,p,w,t,p,w,n,g -e,x,s,w,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,s,g -e,b,f,w,f,n,f,w,b,p,e,?,s,k,w,w,p,w,t,p,w,s,g -p,k,y,n,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,d -p,f,s,n,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -p,f,y,e,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,k,s,e,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,p -p,k,y,n,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -e,x,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,y,c,l -e,f,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,n,v,l -p,k,y,n,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,l -p,k,s,n,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -e,x,f,g,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,n,g -e,k,s,w,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,s,g -p,k,y,e,f,f,f,c,n,b,t,?,s,k,p,p,p,w,o,e,w,v,p -p,x,s,n,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,d -p,k,y,n,f,f,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,l -e,k,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,b,c,l -e,b,f,w,f,n,f,w,b,p,e,?,k,s,w,w,p,w,t,p,w,n,g -e,k,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,b,v,l -p,k,y,e,f,y,f,c,n,b,t,?,k,k,p,w,p,w,o,e,w,v,d -e,x,y,g,t,n,f,c,b,w,e,b,s,s,w,w,p,w,t,p,w,y,p -p,k,s,e,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -e,b,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,y,v,l -p,k,y,e,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,p -e,x,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,b,c,l -e,f,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,b,v,l -e,f,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,y,c,l -p,k,y,e,f,y,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -e,b,f,g,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,n,g -p,k,s,e,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,k,s,n,f,y,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -p,k,y,n,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,l -p,k,s,n,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,d -e,x,f,w,f,n,f,w,b,w,e,?,s,k,w,w,p,w,t,p,w,s,g -e,f,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,o,v,l -p,k,y,n,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -e,x,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,n,v,l -e,b,f,g,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,n,g -e,b,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,y,v,l -e,x,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,o,v,l -p,k,s,e,f,s,f,c,n,b,t,?,s,k,w,p,p,w,o,e,w,v,l -p,k,s,n,f,f,f,c,n,b,t,?,s,s,w,p,p,w,o,e,w,v,p -p,k,s,n,f,s,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,k,s,n,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,k,y,n,f,y,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -e,k,f,w,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,s,g -p,k,y,e,f,f,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,l -e,k,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,b,v,l -p,k,s,e,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -e,b,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,b,c,l -e,f,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,b,c,l -e,k,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,n,c,l -p,k,y,e,f,s,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,l -e,k,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,y,v,l -p,k,y,e,f,f,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,p -e,k,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,y,v,l -e,b,f,g,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,n,g -e,f,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,o,c,l -e,b,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,y,c,l -e,f,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,o,v,l -e,b,f,g,f,n,f,w,b,g,e,?,s,s,w,w,p,w,t,p,w,s,g -p,k,y,e,f,f,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -p,k,s,n,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,d -p,k,y,n,f,f,f,c,n,b,t,?,k,s,w,w,p,w,o,e,w,v,p -p,k,s,e,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,p -p,k,y,n,f,y,f,c,n,b,t,?,s,s,w,w,p,w,o,e,w,v,l -e,b,f,g,f,n,f,w,b,p,e,?,k,k,w,w,p,w,t,p,w,s,g -e,k,f,w,f,n,f,w,b,g,e,?,s,k,w,w,p,w,t,p,w,s,g -e,k,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,n,o,p,o,v,l -p,x,s,e,f,f,f,c,n,b,t,?,k,s,w,p,p,w,o,e,w,v,p -e,k,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,n,v,l -p,k,y,e,f,f,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -p,k,s,n,f,f,f,c,n,b,t,?,k,s,p,p,p,w,o,e,w,v,d -p,k,y,e,f,f,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,p -p,k,y,e,f,y,f,c,n,b,t,?,s,s,p,p,p,w,o,e,w,v,p -p,x,s,n,f,y,f,c,n,b,t,?,k,k,w,w,p,w,o,e,w,v,d -e,b,s,g,f,n,f,w,b,g,e,?,k,s,w,w,p,w,t,p,w,n,g -p,x,y,c,f,m,f,c,b,y,e,c,k,y,c,c,p,w,n,n,w,c,d -e,k,f,w,f,n,f,w,b,w,e,?,k,s,w,w,p,w,t,p,w,n,g -p,k,y,n,f,s,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,l -p,k,s,e,f,y,f,c,n,b,t,?,k,k,w,p,p,w,o,e,w,v,d -e,k,f,w,f,n,f,w,b,w,e,?,k,k,w,w,p,w,t,p,w,s,g -e,f,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,b,v,l -p,k,s,e,f,s,f,c,n,b,t,?,s,s,p,w,p,w,o,e,w,v,p -e,x,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,n,c,l -e,k,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,o,c,l -e,k,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,n,v,l -e,k,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,y,v,l -e,k,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,n,v,l -e,x,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,n,c,l -p,k,y,e,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,l -e,b,s,w,f,n,f,w,b,w,e,?,s,s,w,w,p,w,t,p,w,n,g -e,x,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,o,o,p,n,v,l -e,k,s,w,f,n,f,w,b,p,e,?,s,s,w,w,p,w,t,p,w,n,g -e,k,s,n,f,n,a,c,b,o,e,?,s,s,o,o,p,n,o,p,b,v,l -p,k,y,e,f,y,f,c,n,b,t,?,k,k,p,p,p,w,o,e,w,v,d -p,f,y,c,f,m,a,c,b,y,e,c,k,y,c,c,p,w,n,n,w,c,d -e,x,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,o,v,l -p,k,y,n,f,s,f,c,n,b,t,?,s,k,p,w,p,w,o,e,w,v,l -p,k,s,e,f,y,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -p,k,y,n,f,f,f,c,n,b,t,?,k,s,p,w,p,w,o,e,w,v,d -e,k,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,b,c,l -e,x,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,n,o,p,b,v,l -e,f,s,n,f,n,a,c,b,n,e,?,s,s,o,o,p,o,o,p,b,c,l -p,k,y,n,f,y,f,c,n,b,t,?,s,k,w,w,p,w,o,e,w,v,l -e,x,s,n,f,n,a,c,b,y,e,?,s,s,o,o,p,o,o,p,o,c,l diff --git a/samples/cpp/bagofwords_classification.cpp b/samples/cpp/bagofwords_classification.cpp index 320acf389c..1c50a0ec88 100644 --- a/samples/cpp/bagofwords_classification.cpp +++ b/samples/cpp/bagofwords_classification.cpp @@ -2326,14 +2326,14 @@ static void removeBowImageDescriptorsByCount( vector& images, vector(1) = static_cast(pos_ex)/static_cast(pos_ex+neg_ex); } class_wts_cv = class_wts; - svmParams.class_weights = &class_wts_cv; + svmParams.classWeights = class_wts_cv; } } -static void setSVMTrainAutoParams( CvParamGrid& c_grid, CvParamGrid& gamma_grid, - CvParamGrid& p_grid, CvParamGrid& nu_grid, - CvParamGrid& coef_grid, CvParamGrid& degree_grid ) +static void setSVMTrainAutoParams( ParamGrid& c_grid, ParamGrid& gamma_grid, + ParamGrid& p_grid, ParamGrid& nu_grid, + ParamGrid& coef_grid, ParamGrid& degree_grid ) { - c_grid = CvSVM::get_default_grid(CvSVM::C); + c_grid = SVM::getDefaultGrid(SVM::C); - gamma_grid = CvSVM::get_default_grid(CvSVM::GAMMA); + gamma_grid = SVM::getDefaultGrid(SVM::GAMMA); - p_grid = CvSVM::get_default_grid(CvSVM::P); - p_grid.step = 0; + p_grid = SVM::getDefaultGrid(SVM::P); + p_grid.logStep = 0; - nu_grid = CvSVM::get_default_grid(CvSVM::NU); - nu_grid.step = 0; + nu_grid = SVM::getDefaultGrid(SVM::NU); + nu_grid.logStep = 0; - coef_grid = CvSVM::get_default_grid(CvSVM::COEF); - coef_grid.step = 0; + coef_grid = SVM::getDefaultGrid(SVM::COEF); + coef_grid.logStep = 0; - degree_grid = CvSVM::get_default_grid(CvSVM::DEGREE); - degree_grid.step = 0; + degree_grid = SVM::getDefaultGrid(SVM::DEGREE); + degree_grid.logStep = 0; } -static void trainSVMClassifier( CvSVM& svm, const SVMTrainParamsExt& svmParamsExt, const string& objClassName, VocData& vocData, +static Ptr trainSVMClassifier( const SVMTrainParamsExt& svmParamsExt, const string& objClassName, VocData& vocData, Ptr& bowExtractor, const Ptr& fdetector, const string& resPath ) { /* first check if a previously trained svm for the current class has been saved to file */ string svmFilename = resPath + svmsDir + "/" + objClassName + ".xml.gz"; + Ptr svm; FileStorage fs( svmFilename, FileStorage::READ); if( fs.isOpened() ) { cout << "*** LOADING SVM CLASSIFIER FOR CLASS " << objClassName << " ***" << endl; - svm.load( svmFilename.c_str() ); + svm = StatModel::load( svmFilename ); } else { @@ -2438,20 +2439,24 @@ static void trainSVMClassifier( CvSVM& svm, const SVMTrainParamsExt& svmParamsEx } cout << "TRAINING SVM FOR CLASS ..." << objClassName << "..." << endl; - CvSVMParams svmParams; - CvMat class_wts_cv; + SVM::Params svmParams; + Mat class_wts_cv; setSVMParams( svmParams, class_wts_cv, responses, svmParamsExt.balanceClasses ); - CvParamGrid c_grid, gamma_grid, p_grid, nu_grid, coef_grid, degree_grid; + svm = SVM::create(svmParams); + ParamGrid c_grid, gamma_grid, p_grid, nu_grid, coef_grid, degree_grid; setSVMTrainAutoParams( c_grid, gamma_grid, p_grid, nu_grid, coef_grid, degree_grid ); - svm.train_auto( trainData, responses, Mat(), Mat(), svmParams, 10, c_grid, gamma_grid, p_grid, nu_grid, coef_grid, degree_grid ); + + svm->trainAuto(TrainData::create(trainData, ROW_SAMPLE, responses), 10, + c_grid, gamma_grid, p_grid, nu_grid, coef_grid, degree_grid); cout << "SVM TRAINING FOR CLASS " << objClassName << " COMPLETED" << endl; - svm.save( svmFilename.c_str() ); + svm->save( svmFilename ); cout << "SAVED CLASSIFIER TO FILE" << endl; } + return svm; } -static void computeConfidences( CvSVM& svm, const string& objClassName, VocData& vocData, +static void computeConfidences( const Ptr& svm, const string& objClassName, VocData& vocData, Ptr& bowExtractor, const Ptr& fdetector, const string& resPath ) { @@ -2477,12 +2482,12 @@ static void computeConfidences( CvSVM& svm, const string& objClassName, VocData& if( imageIdx == 0 ) { // In the first iteration, determine the sign of the positive class - float classVal = confidences[imageIdx] = svm.predict( bowImageDescriptors[imageIdx], false ); - float scoreVal = confidences[imageIdx] = svm.predict( bowImageDescriptors[imageIdx], true ); + float classVal = confidences[imageIdx] = svm->predict( bowImageDescriptors[imageIdx], noArray(), 0 ); + float scoreVal = confidences[imageIdx] = svm->predict( bowImageDescriptors[imageIdx], noArray(), StatModel::RAW_OUTPUT ); signMul = (classVal < 0) == (scoreVal < 0) ? 1.f : -1.f; } // svm output of decision function - confidences[imageIdx] = signMul * svm.predict( bowImageDescriptors[imageIdx], true ); + confidences[imageIdx] = signMul * svm->predict( bowImageDescriptors[imageIdx], noArray(), StatModel::RAW_OUTPUT ); } cout << "WRITING QUERY RESULTS TO VOC RESULTS FILE FOR CLASS " << objClassName << "..." << endl; @@ -2592,9 +2597,8 @@ int main(int argc, char** argv) for( size_t classIdx = 0; classIdx < objClasses.size(); ++classIdx ) { // Train a classifier on train dataset - CvSVM svm; - trainSVMClassifier( svm, svmTrainParamsExt, objClasses[classIdx], vocData, - bowExtractor, featureDetector, resPath ); + Ptr svm = trainSVMClassifier( svmTrainParamsExt, objClasses[classIdx], vocData, + bowExtractor, featureDetector, resPath ); // Now use the classifier over all images on the test dataset and rank according to score order // also calculating precision-recall etc. diff --git a/samples/cpp/letter_recog.cpp b/samples/cpp/letter_recog.cpp index a07aae8fe9..4076b639f7 100644 --- a/samples/cpp/letter_recog.cpp +++ b/samples/cpp/letter_recog.cpp @@ -179,10 +179,7 @@ build_rtrees_classifier( const string& data_filename, // create classifier by using and cout << "Training the classifier ...\n"; Ptr tdata = prepare_train_data(data, responses, ntrain_samples); - - // 3. train classifier - model = RTrees::create(RTrees::Params(10,10,0,false,15,Mat(),true,4,TC(100,0.01f))); - model->train( tdata ); + model = StatModel::train(tdata, RTrees::Params(10,10,0,false,15,Mat(),true,4,TC(100,0.01f))); cout << endl; } @@ -267,10 +264,12 @@ build_boost_classifier( const string& data_filename, Ptr tdata = TrainData::create(new_data, ROW_SAMPLE, new_responses, noArray(), noArray(), noArray(), var_type); - model = Boost::create(Boost::Params(Boost::REAL, 100, 0.95, 5, false, Mat() )); + vector priors(2); + priors[0] = 1; + priors[1] = 26; cout << "Training the classifier (may take a few minutes)...\n"; - model->train(tdata); + model = StatModel::train(tdata, Boost::Params(Boost::GENTLE, 100, 0.95, 5, false, Mat(priors) )); cout << endl; } @@ -333,7 +332,6 @@ build_mlp_classifier( const string& data_filename, if( !ok ) return ok; - int i, j; Ptr model; int nsamples_all = data.rows; @@ -360,14 +358,14 @@ build_mlp_classifier( const string& data_filename, // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Mat train_data = data.rowRange(0, ntrain_samples); - Mat new_responses = Mat::zeros( ntrain_samples, class_count, CV_32F ); + Mat train_responses = Mat::zeros( ntrain_samples, class_count, CV_32F ); // 1. unroll the responses cout << "Unrolling the responses...\n"; - for( i = 0; i < ntrain_samples; i++ ) + for( int i = 0; i < ntrain_samples; i++ ) { - int cls_label = responses.at(i) - 'A' - new_responses.at(i, cls_label) = 1.f; + int cls_label = responses.at(i) - 'A'; + train_responses.at(i, cls_label) = 1.f; } // 2. train classifier @@ -385,180 +383,63 @@ build_mlp_classifier( const string& data_filename, int max_iter = 1000; #endif - mlp.train( &train_data, new_responses, 0, 0, - ANN_MLP::Params(TC(max_iter,0), method, method_param)); - - - model = ANN_MLP::create() mlp.create( &layer_sizes ); - printf( "Training the classifier (may take a few minutes)...\n"); - - cvReleaseMat( &new_responses ); - printf("\n"); - } - - Mat mlp_response; - - // compute prediction error on train and test data - for( i = 0; i < nsamples_all; i++ ) - { - int best_class; - CvMat sample; - cvGetRow( data, &sample, i ); - CvPoint max_loc; - mlp.predict( &sample, mlp_response ); - cvMinMaxLoc( mlp_response, 0, 0, 0, &max_loc, 0 ); - best_class = max_loc.x + 'A'; - - int r = fabs((double)best_class - responses->data.fl[i]) < FLT_EPSILON ? 1 : 0; + Ptr tdata = TrainData::create(train_data, ROW_SAMPLE, train_responses); - if( i < ntrain_samples ) - train_hr += r; - else - test_hr += r; + cout << "Training the classifier (may take a few minutes)...\n"; + model = StatModel::train(tdata, ANN_MLP::Params(layer_sizes, ANN_MLP::SIGMOID_SYM, 0, 0, TC(max_iter,0), method, method_param)); + cout << endl; } - test_hr /= (double)(nsamples_all-ntrain_samples); - train_hr /= (double)ntrain_samples; - printf( "Recognition rate: train = %.1f%%, test = %.1f%%\n", - train_hr*100., test_hr*100. ); - - if( !filename_to_save.empty() ) - model->save( filename_to_save ); - + test_and_save_classifier(model, data, responses, ntrain_samples, 'A', filename_to_save); return true; } static bool build_knearest_classifier( const string& data_filename, int K ) { - const int var_count = 16; Mat data; - CvMat train_data; Mat responses; - bool ok = read_num_class_data( data_filename, 16, &data, &responses ); if( !ok ) return ok; - int nsamples_all = 0, ntrain_samples = 0; - - nsamples_all = data->rows; - ntrain_samples = (int)(nsamples_all*0.8); - - // 1. unroll the responses - printf( "Unrolling the responses...\n"); - cvGetRows( data, &train_data, 0, ntrain_samples ); - - // 2. train classifier - Mat train_resp = cvCreateMat( ntrain_samples, 1, CV_32FC1); - for (int i = 0; i < ntrain_samples; i++) - train_resp->data.fl[i] = responses->data.fl[i]; - Ptr model = KNearest::create(true); - model->train(train_data, train_resp); + Ptr model; - Mat nearests = cvCreateMat( (nsamples_all - ntrain_samples), K, CV_32FC1); - float* _sample = new float[var_count * (nsamples_all - ntrain_samples)]; - CvMat sample = cvMat( nsamples_all - ntrain_samples, 16, CV_32FC1, _sample ); - float* true_results = new float[nsamples_all - ntrain_samples]; - for (int j = ntrain_samples; j < nsamples_all; j++) - { - float *s = data->data.fl + j * var_count; - - for (int i = 0; i < var_count; i++) - { - sample.data.fl[(j - ntrain_samples) * var_count + i] = s[i]; - } - true_results[j - ntrain_samples] = responses->data.fl[j]; - } - CvMat *result = cvCreateMat(1, nsamples_all - ntrain_samples, CV_32FC1); - knearest.find_nearest(&sample, K, result, 0, nearests, 0); - int true_resp = 0; - int accuracy = 0; - for (int i = 0; i < nsamples_all - ntrain_samples; i++) - { - if (result->data.fl[i] == true_results[i]) - true_resp++; - for(int k = 0; k < K; k++ ) - { - if( nearests->data.fl[i * K + k] == true_results[i]) - accuracy++; - } - } - - printf("true_resp = %f%%\tavg accuracy = %f%%\n", (float)true_resp / (nsamples_all - ntrain_samples) * 100, - (float)accuracy / (nsamples_all - ntrain_samples) / K * 100); + int nsamples_all = data.rows; + int ntrain_samples = (int)(nsamples_all*0.8); - delete[] true_results; - delete[] _sample; - cvReleaseMat( &train_resp ); - cvReleaseMat( &nearests ); - cvReleaseMat( &result ); - cvReleaseMat( &data ); - cvReleaseMat( &responses ); + // create classifier by using and + cout << "Training the classifier ...\n"; + Ptr tdata = prepare_train_data(data, responses, ntrain_samples); + model = StatModel::train(tdata, KNearest::Params(K, true)); + cout << endl; - return 0; + test_and_save_classifier(model, data, responses, ntrain_samples, 0, string()); + return true; } static bool build_nbayes_classifier( const string& data_filename ) { - const int var_count = 16; Mat data; - CvMat train_data; Mat responses; - bool ok = read_num_class_data( data_filename, 16, &data, &responses ); if( !ok ) return ok; - int nsamples_all = 0, ntrain_samples = 0; + Ptr model; - nsamples_all = data->rows; - ntrain_samples = (int)(nsamples_all*0.5); - - // 1. unroll the responses - printf( "Unrolling the responses...\n"); - cvGetRows( data, &train_data, 0, ntrain_samples ); - - // 2. train classifier - Mat train_resp = cvCreateMat( ntrain_samples, 1, CV_32FC1); - for (int i = 0; i < ntrain_samples; i++) - train_resp->data.fl[i] = responses->data.fl[i]; - CvNormalBayesClassifier nbayes(&train_data, train_resp); - - float* _sample = new float[var_count * (nsamples_all - ntrain_samples)]; - CvMat sample = cvMat( nsamples_all - ntrain_samples, 16, CV_32FC1, _sample ); - float* true_results = new float[nsamples_all - ntrain_samples]; - for (int j = ntrain_samples; j < nsamples_all; j++) - { - float *s = data->data.fl + j * var_count; - - for (int i = 0; i < var_count; i++) - { - sample.data.fl[(j - ntrain_samples) * var_count + i] = s[i]; - } - true_results[j - ntrain_samples] = responses->data.fl[j]; - } - CvMat *result = cvCreateMat(1, nsamples_all - ntrain_samples, CV_32FC1); - nbayes.predict(&sample, result); - int true_resp = 0; - //int accuracy = 0; - for (int i = 0; i < nsamples_all - ntrain_samples; i++) - { - if (result->data.fl[i] == true_results[i]) - true_resp++; - } - - printf("true_resp = %f%%\n", (float)true_resp / (nsamples_all - ntrain_samples) * 100); + int nsamples_all = data.rows; + int ntrain_samples = (int)(nsamples_all*0.8); - delete[] true_results; - delete[] _sample; - cvReleaseMat( &train_resp ); - cvReleaseMat( &result ); - cvReleaseMat( &data ); - cvReleaseMat( &responses ); + // create classifier by using and + cout << "Training the classifier ...\n"; + Ptr tdata = prepare_train_data(data, responses, ntrain_samples); + model = StatModel::train(tdata, NormalBayesClassifier::Params()); + cout << endl; - return 0; + test_and_save_classifier(model, data, responses, ntrain_samples, 0, string()); + return true; } static bool @@ -568,95 +449,47 @@ build_svm_classifier( const string& data_filename, { Mat data; Mat responses; - Mat train_resp; - CvMat train_data; - int nsamples_all = 0, ntrain_samples = 0; - int var_count; - Ptr model; - bool ok = read_num_class_data( data_filename, 16, &data, &responses ); if( !ok ) return ok; - ////////// SVM parameters /////////////////////////////// - CvSVMParams param; - param.kernel_type=CvSVM::LINEAR; - param.svm_type=CvSVM::C_SVC; - param.C=1; - /////////////////////////////////////////////////////////// + Ptr model; - printf( "The database %s is loaded.\n", data_filename ); - nsamples_all = data->rows; - ntrain_samples = (int)(nsamples_all*0.1); - var_count = data->cols; + int nsamples_all = data.rows; + int ntrain_samples = (int)(nsamples_all*0.8); // Create or load Random Trees classifier - if( filename_to_load ) + if( !filename_to_load.empty() ) { - // load classifier from the specified file - svm.load( filename_to_load ); + model = load_classifier(filename_to_load); + if( model.empty() ) + return false; ntrain_samples = 0; - if( svm.get_var_count() == 0 ) - { - printf( "Could not read the classifier %s\n", filename_to_load ); - return -1; - } - printf( "The classifier %s is loaded.\n", filename_to_load ); } else { - // train classifier - printf( "Training the classifier (may take a few minutes)...\n"); - cvGetRows( data, &train_data, 0, ntrain_samples ); - train_resp = cvCreateMat( ntrain_samples, 1, CV_32FC1); - for (int i = 0; i < ntrain_samples; i++) - train_resp->data.fl[i] = responses->data.fl[i]; - svm.train(&train_data, train_resp, 0, 0, param); - } - - // classification - std::vector _sample(var_count * (nsamples_all - ntrain_samples)); - CvMat sample = cvMat( nsamples_all - ntrain_samples, 16, CV_32FC1, &_sample[0] ); - std::vector true_results(nsamples_all - ntrain_samples); - for (int j = ntrain_samples; j < nsamples_all; j++) - { - float *s = data->data.fl + j * var_count; - - for (int i = 0; i < var_count; i++) - { - sample.data.fl[(j - ntrain_samples) * var_count + i] = s[i]; - } - true_results[j - ntrain_samples] = responses->data.fl[j]; - } - CvMat *result = cvCreateMat(1, nsamples_all - ntrain_samples, CV_32FC1); + // create classifier by using and + cout << "Training the classifier ...\n"; + Ptr tdata = prepare_train_data(data, responses, ntrain_samples); - printf("Classification (may take a few minutes)...\n"); - double t = (double)cvGetTickCount(); - svm.predict(&sample, result); - t = (double)cvGetTickCount() - t; - printf("Prediction type: %gms\n", t/(cvGetTickFrequency()*1000.)); + SVM::Params params; + params.svmType = SVM::C_SVC; + params.kernelType = SVM::LINEAR; + params.C = 1; - int true_resp = 0; - for (int i = 0; i < nsamples_all - ntrain_samples; i++) - { - if (result->data.fl[i] == true_results[i]) - true_resp++; + model = StatModel::train(tdata, params); + cout << endl; } - printf("true_resp = %f%%\n", (float)true_resp / (nsamples_all - ntrain_samples) * 100); - - if( !filename_to_save.empty() ) - model->save( filename_to_save ); - + test_and_save_classifier(model, data, responses, ntrain_samples, 0, filename_to_save); return true; } int main( int argc, char *argv[] ) { - char* filename_to_save = 0; - char* filename_to_load = 0; - char default_data_filename[] = "./letter-recognition.data"; - char* data_filename = default_data_filename; + string filename_to_save = ""; + string filename_to_load = ""; + string data_filename = "./letter-recognition.data"; int method = 0; int i; @@ -685,15 +518,15 @@ int main( int argc, char *argv[] ) { method = 2; } - else if ( strcmp(argv[i], "-knearest") == 0) + else if( strcmp(argv[i], "-knearest") == 0 || strcmp(argv[i], "-knn") == 0 ) { method = 3; } - else if ( strcmp(argv[i], "-nbayes") == 0) + else if( strcmp(argv[i], "-nbayes") == 0) { method = 4; } - else if ( strcmp(argv[i], "-svm") == 0) + else if( strcmp(argv[i], "-svm") == 0) { method = 5; } diff --git a/samples/cpp/mushroom.cpp b/samples/cpp/mushroom.cpp deleted file mode 100644 index 60eb9f066c..0000000000 --- a/samples/cpp/mushroom.cpp +++ /dev/null @@ -1,322 +0,0 @@ -#include "opencv2/core/core_c.h" -#include "opencv2/ml/ml.hpp" -#include - -static void help() -{ - printf("\nThis program demonstrated the use of OpenCV's decision tree function for learning and predicting data\n" - "Usage :\n" - "./mushroom \n" - "\n" - "The sample demonstrates how to build a decision tree for classifying mushrooms.\n" - "It uses the sample base agaricus-lepiota.data from UCI Repository, here is the link:\n" - "\n" - "Newman, D.J. & Hettich, S. & Blake, C.L. & Merz, C.J. (1998).\n" - "UCI Repository of machine learning databases\n" - "[http://www.ics.uci.edu/~mlearn/MLRepository.html].\n" - "Irvine, CA: University of California, Department of Information and Computer Science.\n" - "\n" - "// loads the mushroom database, which is a text file, containing\n" - "// one training sample per row, all the input variables and the output variable are categorical,\n" - "// the values are encoded by characters.\n\n"); -} - -static int mushroom_read_database( const char* filename, CvMat** data, CvMat** missing, CvMat** responses ) -{ - const int M = 1024; - FILE* f = fopen( filename, "rt" ); - CvMemStorage* storage; - CvSeq* seq; - char buf[M+2], *ptr; - float* el_ptr; - CvSeqReader reader; - int i, j, var_count = 0; - - if( !f ) - return 0; - - // read the first line and determine the number of variables - if( !fgets( buf, M, f )) - { - fclose(f); - return 0; - } - - for( ptr = buf; *ptr != '\0'; ptr++ ) - var_count += *ptr == ','; - assert( ptr - buf == (var_count+1)*2 ); - - // create temporary memory storage to store the whole database - el_ptr = new float[var_count+1]; - storage = cvCreateMemStorage(); - seq = cvCreateSeq( 0, sizeof(*seq), (var_count+1)*sizeof(float), storage ); - - for(;;) - { - for( i = 0; i <= var_count; i++ ) - { - int c = buf[i*2]; - el_ptr[i] = c == '?' ? -1.f : (float)c; - } - if( i != var_count+1 ) - break; - cvSeqPush( seq, el_ptr ); - if( !fgets( buf, M, f ) || !strchr( buf, ',' ) ) - break; - } - fclose(f); - - // allocate the output matrices and copy the base there - *data = cvCreateMat( seq->total, var_count, CV_32F ); - *missing = cvCreateMat( seq->total, var_count, CV_8U ); - *responses = cvCreateMat( seq->total, 1, CV_32F ); - - cvStartReadSeq( seq, &reader ); - - for( i = 0; i < seq->total; i++ ) - { - const float* sdata = (float*)reader.ptr + 1; - float* ddata = data[0]->data.fl + var_count*i; - float* dr = responses[0]->data.fl + i; - uchar* dm = missing[0]->data.ptr + var_count*i; - - for( j = 0; j < var_count; j++ ) - { - ddata[j] = sdata[j]; - dm[j] = sdata[j] < 0; - } - *dr = sdata[-1]; - CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); - } - - cvReleaseMemStorage( &storage ); - delete [] el_ptr; - return 1; -} - - -static CvDTree* mushroom_create_dtree( const CvMat* data, const CvMat* missing, - const CvMat* responses, float p_weight ) -{ - CvDTree* dtree; - CvMat* var_type; - int i, hr1 = 0, hr2 = 0, p_total = 0; - float priors[] = { 1, p_weight }; - - var_type = cvCreateMat( data->cols + 1, 1, CV_8U ); - cvSet( var_type, cvScalarAll(CV_VAR_CATEGORICAL) ); // all the variables are categorical - - dtree = new CvDTree; - - dtree->train( data, CV_ROW_SAMPLE, responses, 0, 0, var_type, missing, - CvDTreeParams( 8, // max depth - 10, // min sample count - 0, // regression accuracy: N/A here - true, // compute surrogate split, as we have missing data - 15, // max number of categories (use sub-optimal algorithm for larger numbers) - 10, // the number of cross-validation folds - true, // use 1SE rule => smaller tree - true, // throw away the pruned tree branches - priors // the array of priors, the bigger p_weight, the more attention - // to the poisonous mushrooms - // (a mushroom will be judjed to be poisonous with bigger chance) - )); - - // compute hit-rate on the training database, demonstrates predict usage. - for( i = 0; i < data->rows; i++ ) - { - CvMat sample, mask; - cvGetRow( data, &sample, i ); - cvGetRow( missing, &mask, i ); - double r = dtree->predict( &sample, &mask )->value; - int d = fabs(r - responses->data.fl[i]) >= FLT_EPSILON; - if( d ) - { - if( r != 'p' ) - hr1++; - else - hr2++; - } - p_total += responses->data.fl[i] == 'p'; - } - - printf( "Results on the training database:\n" - "\tPoisonous mushrooms mis-predicted: %d (%g%%)\n" - "\tFalse-alarms: %d (%g%%)\n", hr1, (double)hr1*100/p_total, - hr2, (double)hr2*100/(data->rows - p_total) ); - - cvReleaseMat( &var_type ); - - return dtree; -} - - -static const char* var_desc[] = -{ - "cap shape (bell=b,conical=c,convex=x,flat=f)", - "cap surface (fibrous=f,grooves=g,scaly=y,smooth=s)", - "cap color (brown=n,buff=b,cinnamon=c,gray=g,green=r,\n\tpink=p,purple=u,red=e,white=w,yellow=y)", - "bruises? (bruises=t,no=f)", - "odor (almond=a,anise=l,creosote=c,fishy=y,foul=f,\n\tmusty=m,none=n,pungent=p,spicy=s)", - "gill attachment (attached=a,descending=d,free=f,notched=n)", - "gill spacing (close=c,crowded=w,distant=d)", - "gill size (broad=b,narrow=n)", - "gill color (black=k,brown=n,buff=b,chocolate=h,gray=g,\n\tgreen=r,orange=o,pink=p,purple=u,red=e,white=w,yellow=y)", - "stalk shape (enlarging=e,tapering=t)", - "stalk root (bulbous=b,club=c,cup=u,equal=e,rhizomorphs=z,rooted=r)", - "stalk surface above ring (ibrous=f,scaly=y,silky=k,smooth=s)", - "stalk surface below ring (ibrous=f,scaly=y,silky=k,smooth=s)", - "stalk color above ring (brown=n,buff=b,cinnamon=c,gray=g,orange=o,\n\tpink=p,red=e,white=w,yellow=y)", - "stalk color below ring (brown=n,buff=b,cinnamon=c,gray=g,orange=o,\n\tpink=p,red=e,white=w,yellow=y)", - "veil type (partial=p,universal=u)", - "veil color (brown=n,orange=o,white=w,yellow=y)", - "ring number (none=n,one=o,two=t)", - "ring type (cobwebby=c,evanescent=e,flaring=f,large=l,\n\tnone=n,pendant=p,sheathing=s,zone=z)", - "spore print color (black=k,brown=n,buff=b,chocolate=h,green=r,\n\torange=o,purple=u,white=w,yellow=y)", - "population (abundant=a,clustered=c,numerous=n,\n\tscattered=s,several=v,solitary=y)", - "habitat (grasses=g,leaves=l,meadows=m,paths=p\n\turban=u,waste=w,woods=d)", - 0 -}; - - -static void print_variable_importance( CvDTree* dtree ) -{ - const CvMat* var_importance = dtree->get_var_importance(); - int i; - char input[1000]; - - if( !var_importance ) - { - printf( "Error: Variable importance can not be retrieved\n" ); - return; - } - - printf( "Print variable importance information? (y/n) " ); - int values_read = scanf( "%1s", input ); - CV_Assert(values_read == 1); - - if( input[0] != 'y' && input[0] != 'Y' ) - return; - - for( i = 0; i < var_importance->cols*var_importance->rows; i++ ) - { - double val = var_importance->data.db[i]; - char buf[100]; - int len = (int)(strchr( var_desc[i], '(' ) - var_desc[i] - 1); - strncpy( buf, var_desc[i], len ); - buf[len] = '\0'; - printf( "%s", buf ); - printf( ": %g%%\n", val*100. ); - } -} - -static void interactive_classification( CvDTree* dtree ) -{ - char input[1000]; - const CvDTreeNode* root; - CvDTreeTrainData* data; - - if( !dtree ) - return; - - root = dtree->get_root(); - data = dtree->get_data(); - - for(;;) - { - const CvDTreeNode* node; - - printf( "Start/Proceed with interactive mushroom classification (y/n): " ); - int values_read = scanf( "%1s", input ); - CV_Assert(values_read == 1); - - if( input[0] != 'y' && input[0] != 'Y' ) - break; - printf( "Enter 1-letter answers, '?' for missing/unknown value...\n" ); - - // custom version of predict - node = root; - for(;;) - { - CvDTreeSplit* split = node->split; - int dir = 0; - - if( !node->left || node->Tn <= dtree->get_pruned_tree_idx() || !node->split ) - break; - - for( ; split != 0; ) - { - int vi = split->var_idx, j; - int count = data->cat_count->data.i[vi]; - const int* map = data->cat_map->data.i + data->cat_ofs->data.i[vi]; - - printf( "%s: ", var_desc[vi] ); - values_read = scanf( "%1s", input ); - CV_Assert(values_read == 1); - - if( input[0] == '?' ) - { - split = split->next; - continue; - } - - // convert the input character to the normalized value of the variable - for( j = 0; j < count; j++ ) - if( map[j] == input[0] ) - break; - if( j < count ) - { - dir = (split->subset[j>>5] & (1 << (j&31))) ? -1 : 1; - if( split->inversed ) - dir = -dir; - break; - } - else - printf( "Error: unrecognized value\n" ); - } - - if( !dir ) - { - printf( "Impossible to classify the sample\n"); - node = 0; - break; - } - node = dir < 0 ? node->left : node->right; - } - - if( node ) - printf( "Prediction result: the mushroom is %s\n", - node->class_idx == 0 ? "EDIBLE" : "POISONOUS" ); - printf( "\n-----------------------------\n" ); - } -} - - -int main( int argc, char** argv ) -{ - CvMat *data = 0, *missing = 0, *responses = 0; - CvDTree* dtree; - const char* base_path = argc >= 2 ? argv[1] : "agaricus-lepiota.data"; - - help(); - - if( !mushroom_read_database( base_path, &data, &missing, &responses ) ) - { - printf( "\nUnable to load the training database\n\n"); - help(); - return -1; - } - - dtree = mushroom_create_dtree( data, missing, responses, - 10 // poisonous mushrooms will have 10x higher weight in the decision tree - ); - cvReleaseMat( &data ); - cvReleaseMat( &missing ); - cvReleaseMat( &responses ); - - print_variable_importance( dtree ); - interactive_classification( dtree ); - delete dtree; - - return 0; -} diff --git a/samples/cpp/points_classifier.cpp b/samples/cpp/points_classifier.cpp index ef0091526d..3aa4d9b137 100644 --- a/samples/cpp/points_classifier.cpp +++ b/samples/cpp/points_classifier.cpp @@ -102,8 +102,7 @@ static void predict_and_paint(const Ptr& model, Mat& dst) static void find_decision_boundary_NBC() { // learn classifier - Ptr normalBayesClassifier = NormalBayesClassifier::create(); - normalBayesClassifier->train(prepare_train_data()); + Ptr normalBayesClassifier = StatModel::train(prepare_train_data(), NormalBayesClassifier::Params()); predict_and_paint(normalBayesClassifier, imgDst); } @@ -113,10 +112,7 @@ static void find_decision_boundary_NBC() #if _KNN_ static void find_decision_boundary_KNN( int K ) { - Ptr knn = KNearest::create(true); - knn->setDefaultK(K); - knn->train(prepare_train_data()); - + Ptr knn = StatModel::train(prepare_train_data(), KNearest::Params(K, true)); predict_and_paint(knn, imgDst); } #endif @@ -124,9 +120,7 @@ static void find_decision_boundary_KNN( int K ) #if _SVM_ static void find_decision_boundary_SVM( SVM::Params params ) { - Ptr svm = SVM::create(params); - svm->train(prepare_train_data()); - + Ptr svm = StatModel::train(prepare_train_data(), params); predict_and_paint(svm, imgDst); Mat sv = svm->getSupportVectors(); @@ -149,8 +143,7 @@ static void find_decision_boundary_DT() params.use1SERule = false; params.truncatePrunedTree = false; - Ptr dtree = DTrees::create(params); - dtree->train(prepare_train_data()); + Ptr dtree = StatModel::train(prepare_train_data(), params); predict_and_paint(dtree, imgDst); } @@ -167,8 +160,7 @@ static void find_decision_boundary_BT() Mat() // priors ); - Ptr boost = Boost::create(params); - boost->train(prepare_train_data()); + Ptr boost = StatModel::train(prepare_train_data(), params); predict_and_paint(boost, imgDst); } @@ -185,8 +177,7 @@ static void find_decision_boundary_GBT() false // use_surrogates ) ); - Ptr gbtrees = GBTrees::create(params); - gbtrees->train(prepare_train_data()); + Ptr gbtrees = StatModel::train(prepare_train_data(), params); predict_and_paint(gbtrees, imgDst); } #endif @@ -205,8 +196,7 @@ static void find_decision_boundary_RF() TermCriteria(TermCriteria::MAX_ITER, 5, 0) // max_num_of_trees_in_the_forest, ); - Ptr rtrees = RTrees::create(params); - rtrees->train(prepare_train_data()); + Ptr rtrees = StatModel::train(prepare_train_data(), params); predict_and_paint(rtrees, imgDst); } @@ -215,9 +205,8 @@ static void find_decision_boundary_RF() #if _ANN_ static void find_decision_boundary_ANN( const Mat& layer_sizes ) { - ANN_MLP::Params params(TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS, 300, FLT_EPSILON), + ANN_MLP::Params params(layer_sizes, ANN_MLP::SIGMOID_SYM, 1, 1, TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS, 300, FLT_EPSILON), ANN_MLP::Params::BACKPROP, 0.001); - Ptr ann = ANN_MLP::create(layer_sizes, params, ANN_MLP::SIGMOID_SYM, 1, 1 ); Mat trainClasses = Mat::zeros( trainedPoints.size(), classColors.size(), CV_32FC1 ); for( int i = 0; i < trainClasses.rows; i++ ) @@ -228,7 +217,7 @@ static void find_decision_boundary_ANN( const Mat& layer_sizes ) Mat samples = prepare_train_samples(trainedPoints); Ptr tdata = TrainData::create(samples, ROW_SAMPLE, trainClasses); - ann->train(tdata); + Ptr ann = StatModel::train(tdata, params); predict_and_paint(ann, imgDst); } #endif @@ -340,18 +329,15 @@ int main() img.copyTo( imgDst ); #if _NBC_ find_decision_boundary_NBC(); - namedWindow( "NormalBayesClassifier", WINDOW_AUTOSIZE ); imshow( "NormalBayesClassifier", imgDst ); #endif #if _KNN_ int K = 3; find_decision_boundary_KNN( K ); - namedWindow( "kNN", WINDOW_AUTOSIZE ); imshow( "kNN", imgDst ); K = 15; find_decision_boundary_KNN( K ); - namedWindow( "kNN2", WINDOW_AUTOSIZE ); imshow( "kNN2", imgDst ); #endif @@ -369,36 +355,30 @@ int main() params.termCrit = TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS, 1000, 0.01); find_decision_boundary_SVM( params ); - namedWindow( "classificationSVM1", WINDOW_AUTOSIZE ); imshow( "classificationSVM1", imgDst ); params.C = 10; find_decision_boundary_SVM( params ); - namedWindow( "classificationSVM2", WINDOW_AUTOSIZE ); imshow( "classificationSVM2", imgDst ); #endif #if _DT_ find_decision_boundary_DT(); - namedWindow( "DT", WINDOW_AUTOSIZE ); imshow( "DT", imgDst ); #endif #if _BT_ find_decision_boundary_BT(); - namedWindow( "BT", WINDOW_AUTOSIZE ); imshow( "BT", imgDst); #endif #if _GBT_ find_decision_boundary_GBT(); - namedWindow( "GBT", WINDOW_AUTOSIZE ); imshow( "GBT", imgDst); #endif #if _RF_ find_decision_boundary_RF(); - namedWindow( "RF", WINDOW_AUTOSIZE ); imshow( "RF", imgDst); #endif @@ -408,13 +388,11 @@ int main() layer_sizes1.at(1) = 5; layer_sizes1.at(2) = classColors.size(); find_decision_boundary_ANN( layer_sizes1 ); - namedWindow( "ANN", WINDOW_AUTOSIZE ); imshow( "ANN", imgDst ); #endif #if _EM_ find_decision_boundary_EM(); - namedWindow( "EM", WINDOW_AUTOSIZE ); imshow( "EM", imgDst ); #endif } diff --git a/samples/cpp/train_HOG.cpp b/samples/cpp/train_HOG.cpp index e3ee190fc3..fbd217a968 100644 --- a/samples/cpp/train_HOG.cpp +++ b/samples/cpp/train_HOG.cpp @@ -8,9 +8,10 @@ #include using namespace cv; +using namespace cv::ml; using namespace std; -void get_svm_detector(const SVM& svm, vector< float > & hog_detector ); +void get_svm_detector(const Ptr& svm, vector< float > & hog_detector ); void convert_to_ml(const std::vector< cv::Mat > & train_samples, cv::Mat& trainData ); void load_images( const string & prefix, const string & filename, vector< Mat > & img_lst ); void sample_neg( const vector< Mat > & full_neg_lst, vector< Mat > & neg_lst, const Size & size ); @@ -20,49 +21,24 @@ void train_svm( const vector< Mat > & gradient_lst, const vector< int > & labels void draw_locations( Mat & img, const vector< Rect > & locations, const Scalar & color ); void test_it( const Size & size ); -void get_svm_detector(const SVM& svm, vector< float > & hog_detector ) +void get_svm_detector(const Ptr& svm, vector< float > & hog_detector ) { - // get the number of variables - const int var_all = svm.get_var_count(); - // get the number of support vectors - const int sv_total = svm.get_support_vector_count(); - // get the decision function - const CvSVMDecisionFunc* decision_func = svm.get_decision_function(); // get the support vectors - const float** sv = new const float*[ sv_total ]; - for( int i = 0 ; i < sv_total ; ++i ) - sv[ i ] = svm.get_support_vector(i); - - CV_Assert( var_all > 0 && - sv_total > 0 && - decision_func != 0 && - decision_func->alpha != 0 && - decision_func->sv_count == sv_total ); - - float svi = 0.f; - - hog_detector.clear(); //clear stuff in vector. - hog_detector.reserve( var_all + 1 ); //reserve place for memory efficiency. - - /** - * hog_detector^i = \sum_j support_vector_j^i * \alpha_j - * hog_detector^dim = -\rho - */ - for( int i = 0 ; i < var_all ; ++i ) - { - svi = 0.f; - for( int j = 0 ; j < sv_total ; ++j ) - { - if( decision_func->sv_index != NULL ) // sometime the sv_index isn't store on YML/XML. - svi += (float)( sv[decision_func->sv_index[j]][i] * decision_func->alpha[ j ] ); - else - svi += (float)( sv[j][i] * decision_func->alpha[ j ] ); - } - hog_detector.push_back( svi ); - } - hog_detector.push_back( (float)-decision_func->rho ); - - delete[] sv; + Mat sv = svm->getSupportVectors(); + const int sv_total = sv.rows; + // get the decision function + Mat alpha, svidx; + double rho = svm->getDecisionFunction(0, alpha, svidx); + + CV_Assert( alpha.total() == 1 && svidx.total() == 1 && sv_total == 1 ); + CV_Assert( (alpha.type() == CV_64F && alpha.at(0) == 1.) || + (alpha.type() == CV_32F && alpha.at(0) == 1.f) ); + CV_Assert( sv.type() == CV_32F ); + hog_detector.clear(); + + hog_detector.resize(sv.cols + 1); + memcpy(&hog_detector[0], sv.data, sv.cols*sizeof(hog_detector[0])); + hog_detector[sv.cols] = (float)-rho; } @@ -263,7 +239,7 @@ Mat get_hogdescriptor_visu(const Mat& color_origImg, vector& descriptorVa int mx = drawX + cellSize/2; int my = drawY + cellSize/2; - rectangle(visu, Point((int)(drawX*zoomFac), (int)(drawY*zoomFac)), Point((int)((drawX+cellSize)*zoomFac), (int)((drawY+cellSize)*zoomFac)), CV_RGB(100,100,100), 1); + rectangle(visu, Point((int)(drawX*zoomFac), (int)(drawY*zoomFac)), Point((int)((drawX+cellSize)*zoomFac), (int)((drawY+cellSize)*zoomFac)), Scalar(100,100,100), 1); // draw in each cell all 9 gradient strengths for (int bin=0; bin& descriptorVa float y2 = my + dirVecY * currentGradStrength * maxVecLen * scale; // draw gradient visualization - line(visu, Point((int)(x1*zoomFac),(int)(y1*zoomFac)), Point((int)(x2*zoomFac),(int)(y2*zoomFac)), CV_RGB(0,255,0), 1); + line(visu, Point((int)(x1*zoomFac),(int)(y1*zoomFac)), Point((int)(x2*zoomFac),(int)(y2*zoomFac)), Scalar(0,255,0), 1); } // for (all bins) @@ -337,28 +313,26 @@ void compute_hog( const vector< Mat > & img_lst, vector< Mat > & gradient_lst, c void train_svm( const vector< Mat > & gradient_lst, const vector< int > & labels ) { - SVM svm; - /* Default values to train SVM */ - SVMParams params; + SVM::Params params; params.coef0 = 0.0; params.degree = 3; - params.term_crit.epsilon = 1e-3; + params.termCrit.epsilon = 1e-3; params.gamma = 0; - params.kernel_type = SVM::LINEAR; + params.kernelType = SVM::LINEAR; params.nu = 0.5; params.p = 0.1; // for EPSILON_SVR, epsilon in loss function? params.C = 0.01; // From paper, soft classifier - params.svm_type = SVM::EPS_SVR; // C_SVC; // EPSILON_SVR; // may be also NU_SVR; // do regression task + params.svmType = SVM::EPS_SVR; // C_SVC; // EPSILON_SVR; // may be also NU_SVR; // do regression task Mat train_data; convert_to_ml( gradient_lst, train_data ); clog << "Start training..."; - svm.train( train_data, Mat( labels ), Mat(), Mat(), params ); + Ptr svm = StatModel::train(train_data, ROW_SAMPLE, Mat(labels), params); clog << "...[done]" << endl; - svm.save( "my_people_detector.yml" ); + svm->save( "my_people_detector.yml" ); } void draw_locations( Mat & img, const vector< Rect > & locations, const Scalar & color ) @@ -380,7 +354,7 @@ void test_it( const Size & size ) Scalar reference( 0, 255, 0 ); Scalar trained( 0, 0, 255 ); Mat img, draw; - SVM svm; + Ptr svm; HOGDescriptor hog; HOGDescriptor my_hog; my_hog.winSize = size; @@ -388,7 +362,7 @@ void test_it( const Size & size ) vector< Rect > locations; // Load the trained SVM. - svm.load( "my_people_detector.yml" ); + svm = StatModel::load( "my_people_detector.yml" ); // Set the trained svm to my_hog vector< float > hog_detector; get_svm_detector( svm, hog_detector ); diff --git a/samples/cpp/tree_engine.cpp b/samples/cpp/tree_engine.cpp index 2c3046fd73..6defc31c50 100644 --- a/samples/cpp/tree_engine.cpp +++ b/samples/cpp/tree_engine.cpp @@ -1,63 +1,35 @@ #include "opencv2/ml/ml.hpp" -#include "opencv2/core/core_c.h" +#include "opencv2/core/core.hpp" #include "opencv2/core/utility.hpp" #include +#include #include +using namespace cv; +using namespace cv::ml; + static void help() { printf( - "\nThis sample demonstrates how to use different decision trees and forests including boosting and random trees:\n" - "CvDTree dtree;\n" - "CvBoost boost;\n" - "CvRTrees rtrees;\n" - "CvERTrees ertrees;\n" - "CvGBTrees gbtrees;\n" - "Call:\n\t./tree_engine [-r ] [-c] \n" + "\nThis sample demonstrates how to use different decision trees and forests including boosting and random trees.\n" + "Usage:\n\t./tree_engine [-r ] [-ts type_spec] \n" "where -r specified the 0-based index of the response (0 by default)\n" - "-c specifies that the response is categorical (it's ordered by default) and\n" + "-ts specifies the var type spec in the form ord[n1,n2-n3,n4-n5,...]cat[m1-m2,m3,m4-m5,...]\n" " is the name of training data file in comma-separated value format\n\n"); } - -static int count_classes(CvMLData& data) +static void train_and_print_errs(Ptr model, const Ptr& data) { - cv::Mat r = cv::cvarrToMat(data.get_responses()); - std::map rmap; - int i, n = (int)r.total(); - for( i = 0; i < n; i++ ) + bool ok = model->train(data); + if( !ok ) { - float val = r.at(i); - int ival = cvRound(val); - if( ival != val ) - return -1; - rmap[ival] = 1; + printf("Training failed\n"); } - return (int)rmap.size(); -} - -static void print_result(float train_err, float test_err, const CvMat* _var_imp) -{ - printf( "train error %f\n", train_err ); - printf( "test error %f\n\n", test_err ); - - if (_var_imp) + else { - cv::Mat var_imp = cv::cvarrToMat(_var_imp), sorted_idx; - cv::sortIdx(var_imp, sorted_idx, CV_SORT_EVERY_ROW + CV_SORT_DESCENDING); - - printf( "variable importance:\n" ); - int i, n = (int)var_imp.total(); - int type = var_imp.type(); - CV_Assert(type == CV_32F || type == CV_64F); - - for( i = 0; i < n; i++) - { - int k = sorted_idx.at(i); - printf( "%d\t%f\n", k, type == CV_32F ? var_imp.at(k) : var_imp.at(k)); - } + printf( "train error: %f\n", model->calcError(data, false, noArray()) ); + printf( "test error: %f\n\n", model->calcError(data, true, noArray()) ); } - printf("\n"); } int main(int argc, char** argv) @@ -69,14 +41,14 @@ int main(int argc, char** argv) } const char* filename = 0; int response_idx = 0; - bool categorical_response = false; + std::string typespec; for(int i = 1; i < argc; i++) { if(strcmp(argv[i], "-r") == 0) sscanf(argv[++i], "%d", &response_idx); - else if(strcmp(argv[i], "-c") == 0) - categorical_response = true; + else if(strcmp(argv[i], "-ts") == 0) + typespec = argv[++i]; else if(argv[i][0] != '-' ) filename = argv[i]; else @@ -88,52 +60,32 @@ int main(int argc, char** argv) } printf("\nReading in %s...\n\n",filename); - CvDTree dtree; - CvBoost boost; - CvRTrees rtrees; - CvERTrees ertrees; - CvGBTrees gbtrees; - - CvMLData data; + const double train_test_split_ratio = 0.5; + Ptr data = TrainData::loadFromCSV(filename, 0, response_idx, response_idx+1, typespec); - CvTrainTestSplit spl( 0.5f ); - - if ( data.read_csv( filename ) == 0) + if( data.empty() ) { - data.set_response_idx( response_idx ); - if(categorical_response) - data.change_var_type( response_idx, CV_VAR_CATEGORICAL ); - data.set_train_test_split( &spl ); - - printf("======DTREE=====\n"); - dtree.train( &data, CvDTreeParams( 10, 2, 0, false, 16, 0, false, false, 0 )); - print_result( dtree.calc_error( &data, CV_TRAIN_ERROR), dtree.calc_error( &data, CV_TEST_ERROR ), dtree.get_var_importance() ); - - if( categorical_response && count_classes(data) == 2 ) - { - printf("======BOOST=====\n"); - boost.train( &data, CvBoostParams(CvBoost::DISCRETE, 100, 0.95, 2, false, 0)); - print_result( boost.calc_error( &data, CV_TRAIN_ERROR ), boost.calc_error( &data, CV_TEST_ERROR ), 0 ); //doesn't compute importance - } + printf("ERROR: File %s can not be read\n", filename); + return 0; + } - printf("======RTREES=====\n"); - rtrees.train( &data, CvRTParams( 10, 2, 0, false, 16, 0, true, 0, 100, 0, CV_TERMCRIT_ITER )); - print_result( rtrees.calc_error( &data, CV_TRAIN_ERROR), rtrees.calc_error( &data, CV_TEST_ERROR ), rtrees.get_var_importance() ); + data->setTrainTestSplitRatio(train_test_split_ratio); - printf("======ERTREES=====\n"); - ertrees.train( &data, CvRTParams( 18, 2, 0, false, 16, 0, true, 0, 100, 0, CV_TERMCRIT_ITER )); - print_result( ertrees.calc_error( &data, CV_TRAIN_ERROR), ertrees.calc_error( &data, CV_TEST_ERROR ), ertrees.get_var_importance() ); + printf("======DTREE=====\n"); + Ptr dtree = DTrees::create(DTrees::Params( 10, 2, 0, false, 16, 0, false, false, Mat() )); + train_and_print_errs(dtree, data); - printf("======GBTREES=====\n"); - if (categorical_response) - gbtrees.train( &data, CvGBTreesParams(CvGBTrees::DEVIANCE_LOSS, 100, 0.1f, 0.8f, 5, false)); - else - gbtrees.train( &data, CvGBTreesParams(CvGBTrees::SQUARED_LOSS, 100, 0.1f, 0.8f, 5, false)); - print_result( gbtrees.calc_error( &data, CV_TRAIN_ERROR), gbtrees.calc_error( &data, CV_TEST_ERROR ), 0 ); //doesn't compute importance + if( (int)data->getClassLabels().total() <= 2 ) // regression or 2-class classification problem + { + printf("======BOOST=====\n"); + Ptr boost = Boost::create(Boost::Params(Boost::GENTLE, 100, 0.95, 2, false, Mat())); + train_and_print_errs(boost, data); } - else - printf("File can not be read"); + + printf("======RTREES=====\n"); + Ptr rtrees = RTrees::create(RTrees::Params(10, 2, 0, false, 16, Mat(), false, 0, TermCriteria(TermCriteria::MAX_ITER, 100, 0))); + train_and_print_errs(rtrees, data); return 0; } diff --git a/samples/cpp/tutorial_code/ml/introduction_to_svm/introduction_to_svm.cpp b/samples/cpp/tutorial_code/ml/introduction_to_svm/introduction_to_svm.cpp index 2b4a97d54d..f261418043 100644 --- a/samples/cpp/tutorial_code/ml/introduction_to_svm/introduction_to_svm.cpp +++ b/samples/cpp/tutorial_code/ml/introduction_to_svm/introduction_to_svm.cpp @@ -4,29 +4,29 @@ #include using namespace cv; +using namespace cv::ml; -int main() +int main(int, char**) { // Data for visual representation int width = 512, height = 512; Mat image = Mat::zeros(height, width, CV_8UC3); // Set up training data - float labels[4] = {1.0, -1.0, -1.0, -1.0}; - Mat labelsMat(4, 1, CV_32FC1, labels); + int labels[4] = {1, -1, -1, -1}; + Mat labelsMat(4, 1, CV_32SC1, labels); float trainingData[4][2] = { {501, 10}, {255, 10}, {501, 255}, {10, 501} }; Mat trainingDataMat(4, 2, CV_32FC1, trainingData); // Set up SVM's parameters - CvSVMParams params; - params.svm_type = CvSVM::C_SVC; - params.kernel_type = CvSVM::LINEAR; - params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER, 100, 1e-6); + SVM::Params params; + params.svmType = SVM::C_SVC; + params.kernelType = SVM::LINEAR; + params.termCrit = TermCriteria(TermCriteria::MAX_ITER, 100, 1e-6); // Train the SVM - CvSVM SVM; - SVM.train(trainingDataMat, labelsMat, Mat(), Mat(), params); + Ptr svm = StatModel::train(trainingDataMat, ROW_SAMPLE, labelsMat, params); Vec3b green(0,255,0), blue (255,0,0); // Show the decision regions given by the SVM @@ -34,30 +34,30 @@ int main() for (int j = 0; j < image.cols; ++j) { Mat sampleMat = (Mat_(1,2) << j,i); - float response = SVM.predict(sampleMat); + float response = svm->predict(sampleMat); if (response == 1) image.at(i,j) = green; else if (response == -1) - image.at(i,j) = blue; + image.at(i,j) = blue; } // Show the training data int thickness = -1; int lineType = 8; - circle( image, Point(501, 10), 5, Scalar( 0, 0, 0), thickness, lineType); - circle( image, Point(255, 10), 5, Scalar(255, 255, 255), thickness, lineType); - circle( image, Point(501, 255), 5, Scalar(255, 255, 255), thickness, lineType); - circle( image, Point( 10, 501), 5, Scalar(255, 255, 255), thickness, lineType); + circle( image, Point(501, 10), 5, Scalar( 0, 0, 0), thickness, lineType ); + circle( image, Point(255, 10), 5, Scalar(255, 255, 255), thickness, lineType ); + circle( image, Point(501, 255), 5, Scalar(255, 255, 255), thickness, lineType ); + circle( image, Point( 10, 501), 5, Scalar(255, 255, 255), thickness, lineType ); // Show support vectors thickness = 2; lineType = 8; - int c = SVM.get_support_vector_count(); + Mat sv = svm->getSupportVectors(); - for (int i = 0; i < c; ++i) + for (int i = 0; i < sv.rows; ++i) { - const float* v = SVM.get_support_vector(i); + const float* v = sv.ptr(i); circle( image, Point( (int) v[0], (int) v[1]), 6, Scalar(128, 128, 128), thickness, lineType); } diff --git a/samples/cpp/tutorial_code/ml/non_linear_svms/non_linear_svms.cpp b/samples/cpp/tutorial_code/ml/non_linear_svms/non_linear_svms.cpp index bfab746cdf..3e7cdb3a4e 100644 --- a/samples/cpp/tutorial_code/ml/non_linear_svms/non_linear_svms.cpp +++ b/samples/cpp/tutorial_code/ml/non_linear_svms/non_linear_svms.cpp @@ -8,6 +8,7 @@ #define FRAC_LINEAR_SEP 0.9f // Fraction of samples which compose the linear separable part using namespace cv; +using namespace cv::ml; using namespace std; static void help() @@ -30,7 +31,7 @@ int main() //--------------------- 1. Set up training data randomly --------------------------------------- Mat trainData(2*NTRAINING_SAMPLES, 2, CV_32FC1); - Mat labels (2*NTRAINING_SAMPLES, 1, CV_32FC1); + Mat labels (2*NTRAINING_SAMPLES, 1, CV_32SC1); RNG rng(100); // Random value generation class @@ -71,16 +72,15 @@ int main() labels.rowRange(NTRAINING_SAMPLES, 2*NTRAINING_SAMPLES).setTo(2); // Class 2 //------------------------ 2. Set up the support vector machines parameters -------------------- - CvSVMParams params; - params.svm_type = SVM::C_SVC; + SVM::Params params; + params.svmType = SVM::C_SVC; params.C = 0.1; - params.kernel_type = SVM::LINEAR; - params.term_crit = TermCriteria(CV_TERMCRIT_ITER, (int)1e7, 1e-6); + params.kernelType = SVM::LINEAR; + params.termCrit = TermCriteria(TermCriteria::MAX_ITER, (int)1e7, 1e-6); //------------------------ 3. Train the svm ---------------------------------------------------- cout << "Starting training process" << endl; - CvSVM svm; - svm.train(trainData, labels, Mat(), Mat(), params); + Ptr svm = StatModel::train(trainData, ROW_SAMPLE, labels, params); cout << "Finished training process" << endl; //------------------------ 4. Show the decision regions ---------------------------------------- @@ -89,7 +89,7 @@ int main() for (int j = 0; j < I.cols; ++j) { Mat sampleMat = (Mat_(1,2) << i, j); - float response = svm.predict(sampleMat); + float response = svm->predict(sampleMat); if (response == 1) I.at(j, i) = green; else if (response == 2) I.at(j, i) = blue; @@ -117,11 +117,11 @@ int main() //------------------------- 6. Show support vectors -------------------------------------------- thick = 2; lineType = 8; - int x = svm.get_support_vector_count(); + Mat sv = svm->getSupportVectors(); - for (int i = 0; i < x; ++i) + for (int i = 0; i < sv.rows; ++i) { - const float* v = svm.get_support_vector(i); + const float* v = sv.ptr(i); circle( I, Point( (int) v[0], (int) v[1]), 6, Scalar(128, 128, 128), thick, lineType); } From c6593d02a6da5373f6b2a8cbb4afb11ef37ecaff Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Sun, 3 Aug 2014 01:41:30 +0400 Subject: [PATCH 077/189] updated docs --- modules/ml/doc/boosting.rst | 164 +++------- modules/ml/doc/decision_trees.rst | 279 ++++++----------- modules/ml/doc/ertrees.rst | 15 - modules/ml/doc/expectation_maximization.rst | 99 +++--- modules/ml/doc/gradient_boosted_trees.rst | 272 ---------------- modules/ml/doc/k_nearest_neighbors.rst | 181 ++--------- modules/ml/doc/ml.rst | 2 - modules/ml/doc/mldata.rst | 329 ++++++-------------- modules/ml/doc/neural_networks.rst | 200 +++++------- modules/ml/doc/normal_bayes_classifier.rst | 53 +--- modules/ml/doc/random_trees.rst | 164 ++-------- modules/ml/doc/support_vector_machines.rst | 238 ++++++-------- 12 files changed, 513 insertions(+), 1483 deletions(-) delete mode 100644 modules/ml/doc/ertrees.rst delete mode 100644 modules/ml/doc/gradient_boosted_trees.rst diff --git a/modules/ml/doc/boosting.rst b/modules/ml/doc/boosting.rst index 7c5bc83fce..76a9293fc3 100644 --- a/modules/ml/doc/boosting.rst +++ b/modules/ml/doc/boosting.rst @@ -63,41 +63,30 @@ training examples are recomputed at each training iteration. Examples deleted at .. [FHT98] Friedman, J. H., Hastie, T. and Tibshirani, R. Additive Logistic Regression: a Statistical View of Boosting. Technical Report, Dept. of Statistics*, Stanford University, 1998. -CvBoostParams +Boost::Params ------------- -.. ocv:struct:: CvBoostParams : public CvDTreeParams +.. ocv:struct:: Boost::Params : public DTree::Params Boosting training parameters. - There is one structure member that you can set directly: - - .. ocv:member:: int split_criteria - - Splitting criteria used to choose optimal splits during a weak tree construction. Possible values are: - - * **CvBoost::DEFAULT** Use the default for the particular boosting method, see below. - * **CvBoost::GINI** Use Gini index. This is default option for Real AdaBoost; may be also used for Discrete AdaBoost. - * **CvBoost::MISCLASS** Use misclassification rate. This is default option for Discrete AdaBoost; may be also used for Real AdaBoost. - * **CvBoost::SQERR** Use least squares criteria. This is default and the only option for LogitBoost and Gentle AdaBoost. - -The structure is derived from :ocv:class:`CvDTreeParams` but not all of the decision tree parameters are supported. In particular, cross-validation is not supported. +The structure is derived from ``DTrees::Params`` but not all of the decision tree parameters are supported. In particular, cross-validation is not supported. All parameters are public. You can initialize them by a constructor and then override some of them directly if you want. -CvBoostParams::CvBoostParams +Boost::Params::Params ---------------------------- The constructors. -.. ocv:function:: CvBoostParams::CvBoostParams() +.. ocv:function:: Boost::Params::Params() -.. ocv:function:: CvBoostParams::CvBoostParams( int boost_type, int weak_count, double weight_trim_rate, int max_depth, bool use_surrogates, const float* priors ) +.. ocv:function:: Boost::Params::Params( int boost_type, int weak_count, double weight_trim_rate, int max_depth, bool use_surrogates, const float* priors ) :param boost_type: Type of the boosting algorithm. Possible values are: - * **CvBoost::DISCRETE** Discrete AdaBoost. - * **CvBoost::REAL** Real AdaBoost. It is a technique that utilizes confidence-rated predictions and works well with categorical data. - * **CvBoost::LOGIT** LogitBoost. It can produce good regression fits. - * **CvBoost::GENTLE** Gentle AdaBoost. It puts less weight on outlier data points and for that reason is often good with regression data. + * **Boost::DISCRETE** Discrete AdaBoost. + * **Boost::REAL** Real AdaBoost. It is a technique that utilizes confidence-rated predictions and works well with categorical data. + * **Boost::LOGIT** LogitBoost. It can produce good regression fits. + * **Boost::GENTLE** Gentle AdaBoost. It puts less weight on outlier data points and for that reason is often good with regression data. Gentle AdaBoost and Real AdaBoost are often the preferable choices. @@ -105,131 +94,54 @@ The constructors. :param weight_trim_rate: A threshold between 0 and 1 used to save computational time. Samples with summary weight :math:`\leq 1 - weight\_trim\_rate` do not participate in the *next* iteration of training. Set this parameter to 0 to turn off this functionality. -See :ocv:func:`CvDTreeParams::CvDTreeParams` for description of other parameters. +See ``DTrees::Params`` for description of other parameters. Default parameters are: :: - CvBoostParams::CvBoostParams() + Boost::Params::Params() { - boost_type = CvBoost::REAL; - weak_count = 100; - weight_trim_rate = 0.95; - cv_folds = 0; - max_depth = 1; + boostType = Boost::REAL; + weakCount = 100; + weightTrimRate = 0.95; + CVFolds = 0; + maxDepth = 1; } -CvBoostTree ------------ -.. ocv:class:: CvBoostTree : public CvDTree - -The weak tree classifier, a component of the boosted tree classifier :ocv:class:`CvBoost`, is a derivative of :ocv:class:`CvDTree`. Normally, there is no need to use the weak classifiers directly. However, they can be accessed as elements of the sequence ``CvBoost::weak``, retrieved by :ocv:func:`CvBoost::get_weak_predictors`. - -.. note:: In case of LogitBoost and Gentle AdaBoost, each weak predictor is a regression tree, rather than a classification tree. Even in case of Discrete AdaBoost and Real AdaBoost, the ``CvBoostTree::predict`` return value (:ocv:member:`CvDTreeNode::value`) is not an output class label. A negative value "votes" for class #0, a positive value - for class #1. The votes are weighted. The weight of each individual tree may be increased or decreased using the method ``CvBoostTree::scale``. - -CvBoost +Boost ------- -.. ocv:class:: CvBoost : public CvStatModel - -Boosted tree classifier derived from :ocv:class:`CvStatModel`. - -CvBoost::CvBoost ----------------- -Default and training constructors. - -.. ocv:function:: CvBoost::CvBoost() - -.. ocv:function:: CvBoost::CvBoost( const Mat& trainData, int tflag, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat(), const Mat& varType=Mat(), const Mat& missingDataMask=Mat(), CvBoostParams params=CvBoostParams() ) - -.. ocv:function:: CvBoost::CvBoost( const CvMat* trainData, int tflag, const CvMat* responses, const CvMat* varIdx=0, const CvMat* sampleIdx=0, const CvMat* varType=0, const CvMat* missingDataMask=0, CvBoostParams params=CvBoostParams() ) - -.. ocv:pyfunction:: cv2.Boost([trainData, tflag, responses[, varIdx[, sampleIdx[, varType[, missingDataMask[, params]]]]]]) -> - - -The constructors follow conventions of :ocv:func:`CvStatModel::CvStatModel`. See :ocv:func:`CvStatModel::train` for parameters descriptions. - -CvBoost::train --------------- -Trains a boosted tree classifier. - -.. ocv:function:: bool CvBoost::train( const Mat& trainData, int tflag, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat(), const Mat& varType=Mat(), const Mat& missingDataMask=Mat(), CvBoostParams params=CvBoostParams(), bool update=false ) - -.. ocv:function:: bool CvBoost::train( const CvMat* trainData, int tflag, const CvMat* responses, const CvMat* varIdx=0, const CvMat* sampleIdx=0, const CvMat* varType=0, const CvMat* missingDataMask=0, CvBoostParams params=CvBoostParams(), bool update=false ) - -.. ocv:function:: bool CvBoost::train( CvMLData* data, CvBoostParams params=CvBoostParams(), bool update=false ) - -.. ocv:pyfunction:: cv2.Boost.train(trainData, tflag, responses[, varIdx[, sampleIdx[, varType[, missingDataMask[, params[, update]]]]]]) -> retval - - :param update: Specifies whether the classifier needs to be updated (``true``, the new weak tree classifiers added to the existing ensemble) or the classifier needs to be rebuilt from scratch (``false``). +.. ocv:class:: Boost : public DTrees -The train method follows the common template of :ocv:func:`CvStatModel::train`. The responses must be categorical, which means that boosted trees cannot be built for regression, and there should be two classes. +Boosted tree classifier derived from ``DTrees`` -CvBoost::predict +Boost::create ---------------- -Predicts a response for an input sample. +Creates the empty model -.. ocv:function:: float CvBoost::predict( const cv::Mat& sample, const cv::Mat& missing=Mat(), const cv::Range& slice=Range::all(), bool rawMode=false, bool returnSum=false ) const +.. ocv:function:: Ptr Boost::create(const Params& params=Params()) -.. ocv:function:: float CvBoost::predict( const CvMat* sample, const CvMat* missing=0, CvMat* weak_responses=0, CvSlice slice=CV_WHOLE_SEQ, bool raw_mode=false, bool return_sum=false ) const - -.. ocv:pyfunction:: cv2.Boost.predict(sample[, missing[, slice[, rawMode[, returnSum]]]]) -> retval - - :param sample: Input sample. - - :param missing: Optional mask of missing measurements. To handle missing measurements, the weak classifiers must include surrogate splits (see ``CvDTreeParams::use_surrogates``). - - :param weak_responses: Optional output parameter, a floating-point vector with responses of each individual weak classifier. The number of elements in the vector must be equal to the slice length. - - :param slice: Continuous subset of the sequence of weak classifiers to be used for prediction. By default, all the weak classifiers are used. - - :param rawMode: Normally, it should be set to ``false``. - - :param returnSum: If ``true`` then return sum of votes instead of the class label. - -The method runs the sample through the trees in the ensemble and returns the output class label based on the weighted voting. - -CvBoost::prune --------------- -Removes the specified weak classifiers. - -.. ocv:function:: void CvBoost::prune( CvSlice slice ) - -.. ocv:pyfunction:: cv2.Boost.prune(slice) -> None - - :param slice: Continuous subset of the sequence of weak classifiers to be removed. - -The method removes the specified weak classifiers from the sequence. - -.. note:: Do not confuse this method with the pruning of individual decision trees, which is currently not supported. - - -CvBoost::calc_error -------------------- -Returns error of the boosted tree classifier. - -.. ocv:function:: float CvBoost::calc_error( CvMLData* _data, int type , std::vector *resp = 0 ) - -The method is identical to :ocv:func:`CvDTree::calc_error` but uses the boosted tree classifier as predictor. +Use ``StatModel::train`` to train the model, ``StatModel::train(traindata, params)`` to create and train the model, ``StatModel::load(filename)`` to load the pre-trained model. +Boost::getBParams +----------------- +Returns the boosting parameters -CvBoost::get_weak_predictors ----------------------------- -Returns the sequence of weak tree classifiers. +.. ocv:function:: Params Boost::getBParams() const -.. ocv:function:: CvSeq* CvBoost::get_weak_predictors() +The method returns the training parameters. -The method returns the sequence of weak classifiers. Each element of the sequence is a pointer to the :ocv:class:`CvBoostTree` class or to some of its derivatives. +Boost::setBParams +----------------- +Sets the boosting parameters -CvBoost::get_params -------------------- -Returns current parameters of the boosted tree classifier. +.. ocv:function:: void Boost::setBParams( const Params& p ) -.. ocv:function:: const CvBoostParams& CvBoost::get_params() const + :param p: Training parameters of type Boost::Params. +The method sets the training parameters. -CvBoost::get_data ------------------ -Returns used train data of the boosted tree classifier. +Prediction with Boost +--------------------- -.. ocv:function:: const CvDTreeTrainData* CvBoost::get_data() const +StatModel::predict(samples, results, flags) should be used. Pass ``flags=StatModel::RAW_OUTPUT`` to get the raw sum from Boost classifier. diff --git a/modules/ml/doc/decision_trees.rst b/modules/ml/doc/decision_trees.rst index de6fc99d63..9400ae4b96 100644 --- a/modules/ml/doc/decision_trees.rst +++ b/modules/ml/doc/decision_trees.rst @@ -3,10 +3,7 @@ Decision Trees The ML classes discussed in this section implement Classification and Regression Tree algorithms described in [Breiman84]_. -The class -:ocv:class:`CvDTree` represents a single decision tree that may be used alone or as a base class in tree ensembles (see -:ref:`Boosting` and -:ref:`Random Trees` ). +The class ``cv::ml::DTrees`` represents a single decision tree or a collection of decision trees. It's also a base class for ``RTrees`` and ``Boost``. A decision tree is a binary tree (tree where each non-leaf node has two child nodes). It can be used either for classification or for regression. For classification, each tree leaf is marked with a class label; multiple leaves may have the same label. For regression, a constant is also assigned to each tree leaf, so the approximation function is piecewise constant. @@ -55,123 +52,107 @@ Besides the prediction that is an obvious use of decision trees, the tree can be Importance of each variable is computed over all the splits on this variable in the tree, primary and surrogate ones. Thus, to compute variable importance correctly, the surrogate splits must be enabled in the training parameters, even if there is no missing data. -CvDTreeSplit +DTrees::Split ------------ -.. ocv:struct:: CvDTreeSplit +.. ocv:class:: DTrees::Split + The class represents split in a decision tree. It has public members: - The structure represents a possible decision tree node split. It has public members: - - .. ocv:member:: int var_idx + .. ocv:member:: int varIdx Index of variable on which the split is created. - .. ocv:member:: int inversed + .. ocv:member:: bool inversed - If it is not null then inverse split rule is used that is left and right branches are exchanged in the rule expressions below. + If true, then the inverse split rule is used (i.e. left and right branches are exchanged in the rule expressions below). .. ocv:member:: float quality - The split quality, a positive number. It is used to choose the best primary split, then to choose and sort the surrogate splits. After the tree is constructed, it is also used to compute variable importance. - - .. ocv:member:: CvDTreeSplit* next - - Pointer to the next split in the node list of splits. - - .. ocv:member:: int[] subset + The split quality, a positive number. It is used to choose the best split. - Bit array indicating the value subset in case of split on a categorical variable. The rule is: :: + .. ocv:member:: int next - if var_value in subset - then next_node <- left - else next_node <- right + Index of the next split in the list of splits for the node - .. ocv:member:: float ord::c + .. ocv:member:: float c The threshold value in case of split on an ordered variable. The rule is: :: - if var_value < ord.c - then next_node<-left - else next_node<-right + if var_value < c + then next_node<-left + else next_node<-right - .. ocv:member:: int ord::split_point + .. ocv:member:: int subsetOfs - Used internally by the training algorithm. - -CvDTreeNode ------------ -.. ocv:struct:: CvDTreeNode + Offset of the bitset used by the split on a categorical variable. The rule is: :: + if bitset[var_value] == 1 + then next_node <- left + else next_node <- right - The structure represents a node in a decision tree. It has public members: - - .. ocv:member:: int class_idx - - Class index normalized to 0..class_count-1 range and assigned to the node. It is used internally in classification trees and tree ensembles. - - .. ocv:member:: int Tn +DTrees::Node +----------- +.. ocv:class:: DTrees::Node - Tree index in a ordered sequence of pruned trees. The indices are used during and after the pruning procedure. The root node has the maximum value ``Tn`` of the whole tree, child nodes have ``Tn`` less than or equal to the parent's ``Tn``, and nodes with :math:`Tn \leq CvDTree::pruned\_tree\_idx` are not used at prediction stage (the corresponding branches are considered as cut-off), even if they have not been physically deleted from the tree at the pruning stage. + The class represents a decision tree node. It has public members: .. ocv:member:: double value - + Value at the node: a class label in case of classification or estimated function value in case of regression. - .. ocv:member:: CvDTreeNode* parent - - Pointer to the parent node. + .. ocv:member:: int classIdx - .. ocv:member:: CvDTreeNode* left + Class index normalized to 0..class_count-1 range and assigned to the node. It is used internally in classification trees and tree ensembles. - Pointer to the left child node. + .. ocv:member:: int parent - .. ocv:member:: CvDTreeNode* right + Index of the parent node - Pointer to the right child node. + .. ocv:member:: int left - .. ocv:member:: CvDTreeSplit* split + Index of the left child node - Pointer to the first (primary) split in the node list of splits. + .. ocv:member:: int right - .. ocv:member:: int sample_count + Index of right child node. - The number of samples that fall into the node at the training stage. It is used to resolve the difficult cases - when the variable for the primary split is missing and all the variables for other surrogate splits are missing too. In this case the sample is directed to the left if ``left->sample_count > right->sample_count`` and to the right otherwise. + .. ocv:member:: int defaultDir - .. ocv:member:: int depth + Default direction where to go (-1: left or +1: right). It helps in the case of missing values. - Depth of the node. The root node depth is 0, the child nodes depth is the parent's depth + 1. + .. ocv:member:: int split -Other numerous fields of ``CvDTreeNode`` are used internally at the training stage. + Index of the first split -CvDTreeParams -------------- -.. ocv:struct:: CvDTreeParams +DTrees::Params +--------------- +.. ocv:class:: DTrees::Params The structure contains all the decision tree training parameters. You can initialize it by default constructor and then override any parameters directly before training, or the structure may be fully initialized using the advanced variant of the constructor. -CvDTreeParams::CvDTreeParams +DTrees::Params::Params ---------------------------- -The constructors. +The constructors -.. ocv:function:: CvDTreeParams::CvDTreeParams() +.. ocv:function:: DTrees::Params::Params() -.. ocv:function:: CvDTreeParams::CvDTreeParams( int max_depth, int min_sample_count, float regression_accuracy, bool use_surrogates, int max_categories, int cv_folds, bool use_1se_rule, bool truncate_pruned_tree, const float* priors ) +.. ocv:function:: DTrees::Params::Params( int maxDepth, int minSampleCount, double regressionAccuracy, bool useSurrogates, int maxCategories, int CVFolds, bool use1SERule, bool truncatePrunedTree, const Mat& priors ) - :param max_depth: The maximum possible depth of the tree. That is the training algorithms attempts to split a node while its depth is less than ``max_depth``. The actual depth may be smaller if the other termination criteria are met (see the outline of the training procedure in the beginning of the section), and/or if the tree is pruned. + :param maxDepth: The maximum possible depth of the tree. That is the training algorithms attempts to split a node while its depth is less than ``maxDepth``. The root node has zero depth. The actual depth may be smaller if the other termination criteria are met (see the outline of the training procedure in the beginning of the section), and/or if the tree is pruned. - :param min_sample_count: If the number of samples in a node is less than this parameter then the node will not be split. + :param minSampleCount: If the number of samples in a node is less than this parameter then the node will not be split. - :param regression_accuracy: Termination criteria for regression trees. If all absolute differences between an estimated value in a node and values of train samples in this node are less than this parameter then the node will not be split. + :param regressionAccuracy: Termination criteria for regression trees. If all absolute differences between an estimated value in a node and values of train samples in this node are less than this parameter then the node will not be split further. - :param use_surrogates: If true then surrogate splits will be built. These splits allow to work with missing data and compute variable importance correctly. + :param useSurrogates: If true then surrogate splits will be built. These splits allow to work with missing data and compute variable importance correctly. .. note:: currently it's not implemented. - :param max_categories: Cluster possible values of a categorical variable into ``K`` :math:`\leq` ``max_categories`` clusters to find a suboptimal split. If a discrete variable, on which the training procedure tries to make a split, takes more than ``max_categories`` values, the precise best subset estimation may take a very long time because the algorithm is exponential. Instead, many decision trees engines (including ML) try to find sub-optimal split in this case by clustering all the samples into ``max_categories`` clusters that is some categories are merged together. The clustering is applied only in ``n``>2-class classification problems for categorical variables with ``N > max_categories`` possible values. In case of regression and 2-class classification the optimal split can be found efficiently without employing clustering, thus the parameter is not used in these cases. + :param maxCategories: Cluster possible values of a categorical variable into ``K<=maxCategories`` clusters to find a suboptimal split. If a discrete variable, on which the training procedure tries to make a split, takes more than ``maxCategories`` values, the precise best subset estimation may take a very long time because the algorithm is exponential. Instead, many decision trees engines (including our implementation) try to find sub-optimal split in this case by clustering all the samples into ``maxCategories`` clusters that is some categories are merged together. The clustering is applied only in ``n > 2``-class classification problems for categorical variables with ``N > max_categories`` possible values. In case of regression and 2-class classification the optimal split can be found efficiently without employing clustering, thus the parameter is not used in these cases. - :param cv_folds: If ``cv_folds > 1`` then prune a tree with ``K``-fold cross-validation where ``K`` is equal to ``cv_folds``. + :param CVFolds: If ``CVFolds > 1`` then algorithms prunes the built decision tree using ``K``-fold cross-validation procedure where ``K`` is equal to ``CVFolds``. - :param use_1se_rule: If true then a pruning will be harsher. This will make a tree more compact and more resistant to the training data noise but a bit less accurate. + :param use1SERule: If true then a pruning will be harsher. This will make a tree more compact and more resistant to the training data noise but a bit less accurate. - :param truncate_pruned_tree: If true then pruned branches are physically removed from the tree. Otherwise they are retained and it is possible to get results from the original unpruned (or pruned less aggressively) tree by decreasing ``CvDTree::pruned_tree_idx`` parameter. + :param truncatePrunedTree: If true then pruned branches are physically removed from the tree. Otherwise they are retained and it is possible to get results from the original unpruned (or pruned less aggressively) tree. :param priors: The array of a priori class probabilities, sorted by the class label value. The parameter can be used to tune the decision tree preferences toward a certain class. For example, if you want to detect some rare anomaly occurrence, the training base will likely contain much more normal cases than anomalies, so a very good classification performance will be achieved just by considering every case as normal. To avoid this, the priors can be specified, where the anomaly probability is artificially increased (up to 0.5 or even greater), so the weight of the misclassified anomalies becomes much bigger, and the tree is adjusted properly. You can also think about this parameter as weights of prediction categories which determine relative weights that you give to misclassification. That is, if the weight of the first category is 1 and the weight of the second category is 10, then each mistake in predicting the second category is equivalent to making 10 mistakes in predicting the first category. @@ -179,142 +160,82 @@ The default constructor initializes all the parameters with the default values t :: - CvDTreeParams() : max_categories(10), max_depth(INT_MAX), min_sample_count(10), - cv_folds(10), use_surrogates(true), use_1se_rule(true), - truncate_pruned_tree(true), regression_accuracy(0.01f), priors(0) - {} - - -CvDTreeTrainData ----------------- -.. ocv:struct:: CvDTreeTrainData - -Decision tree training data and shared data for tree ensembles. The structure is mostly used internally for storing both standalone trees and tree ensembles efficiently. Basically, it contains the following types of information: - -#. Training parameters, an instance of :ocv:class:`CvDTreeParams`. - -#. Training data preprocessed to find the best splits more efficiently. For tree ensembles, this preprocessed data is reused by all trees. Additionally, the training data characteristics shared by all trees in the ensemble are stored here: variable types, the number of classes, a class label compression map, and so on. - -#. Buffers, memory storages for tree nodes, splits, and other elements of the constructed trees. - -There are two ways of using this structure. In simple cases (for example, a standalone tree or the ready-to-use "black box" tree ensemble from machine learning, like -:ref:`Random Trees` or -:ref:`Boosting` ), there is no need to care or even to know about the structure. You just construct the needed statistical model, train it, and use it. The ``CvDTreeTrainData`` structure is constructed and used internally. However, for custom tree algorithms or another sophisticated cases, the structure may be constructed and used explicitly. The scheme is the following: - -#. - The structure is initialized using the default constructor, followed by ``set_data``, or it is built using the full form of constructor. The parameter ``_shared`` must be set to ``true``. - -#. - One or more trees are trained using this data (see the special form of the method :ocv:func:`CvDTree::train`). - -#. - The structure is released as soon as all the trees using it are released. + DTrees::Params::Params() + { + maxDepth = INT_MAX; + minSampleCount = 10; + regressionAccuracy = 0.01f; + useSurrogates = false; + maxCategories = 10; + CVFolds = 10; + use1SERule = true; + truncatePrunedTree = true; + priors = Mat(); + } -CvDTree -------- -.. ocv:class:: CvDTree : public CvStatModel -The class implements a decision tree as described in the beginning of this section. +DTrees +------ +.. ocv:class:: DTrees : public StatModel -CvDTree::train --------------- -Trains a decision tree. +The class represents a single decision tree or a collection of decision trees. The current public interface of the class allows user to train only a single decision tree, however the class is capable of storing multiple decision trees and using them for prediction (by summing responses or using a voting schemes), and the derived from DTrees classes (such as ``RTrees`` and ``Boost``) use this capability to implement decision tree ensembles. -.. ocv:function:: bool CvDTree::train( const Mat& trainData, int tflag, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat(), const Mat& varType=Mat(), const Mat& missingDataMask=Mat(), CvDTreeParams params=CvDTreeParams() ) - -.. ocv:function:: bool CvDTree::train( const CvMat* trainData, int tflag, const CvMat* responses, const CvMat* varIdx=0, const CvMat* sampleIdx=0, const CvMat* varType=0, const CvMat* missingDataMask=0, CvDTreeParams params=CvDTreeParams() ) - -.. ocv:function:: bool CvDTree::train( CvMLData* trainData, CvDTreeParams params=CvDTreeParams() ) - -.. ocv:function:: bool CvDTree::train( CvDTreeTrainData* trainData, const CvMat* subsampleIdx ) - -.. ocv:pyfunction:: cv2.DTree.train(trainData, tflag, responses[, varIdx[, sampleIdx[, varType[, missingDataMask[, params]]]]]) -> retval - -There are four ``train`` methods in :ocv:class:`CvDTree`: - -* The **first two** methods follow the generic :ocv:func:`CvStatModel::train` conventions. It is the most complete form. Both data layouts (``tflag=CV_ROW_SAMPLE`` and ``tflag=CV_COL_SAMPLE``) are supported, as well as sample and variable subsets, missing measurements, arbitrary combinations of input and output variable types, and so on. The last parameter contains all of the necessary training parameters (see the :ocv:class:`CvDTreeParams` description). - -* The **third** method uses :ocv:class:`CvMLData` to pass training data to a decision tree. - -* The **last** method ``train`` is mostly used for building tree ensembles. It takes the pre-constructed :ocv:class:`CvDTreeTrainData` instance and an optional subset of the training set. The indices in ``subsampleIdx`` are counted relatively to the ``_sample_idx`` , passed to the ``CvDTreeTrainData`` constructor. For example, if ``_sample_idx=[1, 5, 7, 100]`` , then ``subsampleIdx=[0,3]`` means that the samples ``[1, 100]`` of the original training set are used. - -The function is parallelized with the TBB library. - - - -CvDTree::predict +DTrees::create ---------------- -Returns the leaf node of a decision tree corresponding to the input vector. - -.. ocv:function:: CvDTreeNode* CvDTree::predict( const Mat& sample, const Mat& missingDataMask=Mat(), bool preprocessedInput=false ) const - -.. ocv:function:: CvDTreeNode* CvDTree::predict( const CvMat* sample, const CvMat* missingDataMask=0, bool preprocessedInput=false ) const +Creates the empty model -.. ocv:pyfunction:: cv2.DTree.predict(sample[, missingDataMask[, preprocessedInput]]) -> retval +.. ocv:function:: Ptr DTrees::create(const Params& params=Params()) - :param sample: Sample for prediction. +The static method creates empty decision tree with the specified parameters. It should be then trained using ``train`` method (see ``StatModel::train``). Alternatively, you can load the model from file using ``StatModel::load(filename)``. - :param missingDataMask: Optional input missing measurement mask. +DTrees::getDParams +------------------ +Returns the training parameters - :param preprocessedInput: This parameter is normally set to ``false``, implying a regular input. If it is ``true``, the method assumes that all the values of the discrete input variables have been already normalized to :math:`0` to :math:`num\_of\_categories_i-1` ranges since the decision tree uses such normalized representation internally. It is useful for faster prediction with tree ensembles. For ordered input variables, the flag is not used. +.. ocv:function:: Params DTrees::getDParams() const -The method traverses the decision tree and returns the reached leaf node as output. The prediction result, either the class label or the estimated function value, may be retrieved as the ``value`` field of the :ocv:class:`CvDTreeNode` structure, for example: ``dtree->predict(sample,mask)->value``. +The method returns the training parameters. - - -CvDTree::calc_error +DTrees::setDParams ------------------- -Returns error of the decision tree. - -.. ocv:function:: float CvDTree::calc_error( CvMLData* trainData, int type, std::vector *resp = 0 ) - - :param trainData: Data for the decision tree. - - :param type: Type of error. Possible values are: - - * **CV_TRAIN_ERROR** Error on train samples. - - * **CV_TEST_ERROR** Error on test samples. +Sets the training parameters - :param resp: If it is not null then size of this vector will be set to the number of samples and each element will be set to result of prediction on the corresponding sample. +.. ocv:function:: void DTrees::setDParams( const Params& p ) -The method calculates error of the decision tree. In case of classification it is the percentage of incorrectly classified samples and in case of regression it is the mean of squared errors on samples. + :param p: Training parameters of type DTrees::Params. +The method sets the training parameters. -CvDTree::getVarImportance -------------------------- -Returns the variable importance array. -.. ocv:function:: Mat CvDTree::getVarImportance() - -.. ocv:function:: const CvMat* CvDTree::get_var_importance() +DTrees::getRoots +------------------- +Returns indices of root nodes -.. ocv:pyfunction:: cv2.DTree.getVarImportance() -> retval +.. ocv:function:: std::vector& DTrees::getRoots() const -CvDTree::get_root ------------------ -Returns the root of the decision tree. +DTrees::getNodes +------------------- +Returns all the nodes -.. ocv:function:: const CvDTreeNode* CvDTree::get_root() const +.. ocv:function:: std::vector& DTrees::getNodes() const +all the node indices, mentioned above (left, right, parent, root indices) are indices in the returned vector -CvDTree::get_pruned_tree_idx ----------------------------- -Returns the ``CvDTree::pruned_tree_idx`` parameter. - -.. ocv:function:: int CvDTree::get_pruned_tree_idx() const +DTrees::getSplits +------------------- +Returns all the splits -The parameter ``DTree::pruned_tree_idx`` is used to prune a decision tree. See the ``CvDTreeNode::Tn`` parameter. +.. ocv:function:: std::vector& DTrees::getSplits() const -CvDTree::get_data ------------------ -Returns used train data of the decision tree. +all the split indices, mentioned above (split, next etc.) are indices in the returned vector -.. ocv:function:: CvDTreeTrainData* CvDTree::get_data() const +DTrees::getSubsets +------------------- +Returns all the bitsets for categorical splits -Example: building a tree for classifying mushrooms. See the ``mushroom.cpp`` sample that demonstrates how to build and use the -decision tree. +.. ocv:function:: std::vector& DTrees::getSubsets() const +``Split::subsetOfs`` is an offset in the returned vector .. [Breiman84] Breiman, L., Friedman, J. Olshen, R. and Stone, C. (1984), *Classification and Regression Trees*, Wadsworth. diff --git a/modules/ml/doc/ertrees.rst b/modules/ml/doc/ertrees.rst deleted file mode 100644 index 7e6d03e7fc..0000000000 --- a/modules/ml/doc/ertrees.rst +++ /dev/null @@ -1,15 +0,0 @@ -Extremely randomized trees -========================== - -Extremely randomized trees have been introduced by Pierre Geurts, Damien Ernst and Louis Wehenkel in the article "Extremely randomized trees", 2006 [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.65.7485&rep=rep1&type=pdf]. The algorithm of growing Extremely randomized trees is similar to :ref:`Random Trees` (Random Forest), but there are two differences: - -#. Extremely randomized trees don't apply the bagging procedure to construct a set of the training samples for each tree. The same input training set is used to train all trees. - -#. Extremely randomized trees pick a node split very extremely (both a variable index and variable splitting value are chosen randomly), whereas Random Forest finds the best split (optimal one by variable index and variable splitting value) among random subset of variables. - - -CvERTrees ----------- -.. ocv:class:: CvERTrees : public CvRTrees - - The class implements the Extremely randomized trees algorithm. ``CvERTrees`` is inherited from :ocv:class:`CvRTrees` and has the same interface, so see description of :ocv:class:`CvRTrees` class to get details. To set the training parameters of Extremely randomized trees the same class :ocv:struct:`CvRTParams` is used. diff --git a/modules/ml/doc/expectation_maximization.rst b/modules/ml/doc/expectation_maximization.rst index b79dea820b..82450be4be 100644 --- a/modules/ml/doc/expectation_maximization.rst +++ b/modules/ml/doc/expectation_maximization.rst @@ -91,22 +91,23 @@ already a good enough approximation). EM -- -.. ocv:class:: EM : public Algorithm +.. ocv:class:: EM : public StatModel -The class implements the EM algorithm as described in the beginning of this section. It is inherited from :ocv:class:`Algorithm`. +The class implements the EM algorithm as described in the beginning of this section. +EM::Params +---------- +.. ocv:class:: EM::Params -EM::EM ------- -The constructor of the class +The class describes EM training parameters. It includes: -.. ocv:function:: EM::EM(int nclusters=EM::DEFAULT_NCLUSTERS, int covMatType=EM::COV_MAT_DIAGONAL, const TermCriteria& termCrit=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, EM::DEFAULT_MAX_ITERS, FLT_EPSILON) ) + .. ocv:member:: int clusters + + The number of mixture components in the Gaussian mixture model. Default value of the parameter is ``EM::DEFAULT_NCLUSTERS=5``. Some of EM implementation could determine the optimal number of mixtures within a specified value range, but that is not the case in ML yet. -.. ocv:pyfunction:: cv2.EM([nclusters[, covMatType[, termCrit]]]) -> + .. ocv:member:: int covMatType - :param nclusters: The number of mixture components in the Gaussian mixture model. Default value of the parameter is ``EM::DEFAULT_NCLUSTERS=5``. Some of EM implementation could determine the optimal number of mixtures within a specified value range, but that is not the case in ML yet. - - :param covMatType: Constraint on covariance matrices which defines type of matrices. Possible values are: + Constraint on covariance matrices which defines type of matrices. Possible values are: * **EM::COV_MAT_SPHERICAL** A scaled identity matrix :math:`\mu_k * I`. There is the only parameter :math:`\mu_k` to be estimated for each matrix. The option may be used in special cases, when the constraint is relevant, or as a first step in the optimization (for example in case when the data is preprocessed with PCA). The results of such preliminary estimation may be passed again to the optimization procedure, this time with ``covMatType=EM::COV_MAT_DIAGONAL``. @@ -114,23 +115,30 @@ The constructor of the class * **EM::COV_MAT_GENERIC** A symmetric positively defined matrix. The number of free parameters in each matrix is about :math:`d^2/2`. It is not recommended to use this option, unless there is pretty accurate initial estimation of the parameters and/or a huge number of training samples. - :param termCrit: The termination criteria of the EM algorithm. The EM algorithm can be terminated by the number of iterations ``termCrit.maxCount`` (number of M-steps) or when relative change of likelihood logarithm is less than ``termCrit.epsilon``. Default maximum number of iterations is ``EM::DEFAULT_MAX_ITERS=100``. + .. ocv:member:: TermCriteria termCrit + + The termination criteria of the EM algorithm. The EM algorithm can be terminated by the number of iterations ``termCrit.maxCount`` (number of M-steps) or when relative change of likelihood logarithm is less than ``termCrit.epsilon``. Default maximum number of iterations is ``EM::DEFAULT_MAX_ITERS=100``. -EM::train ---------- -Estimates the Gaussian mixture parameters from a samples set. -.. ocv:function:: bool EM::train(InputArray samples, OutputArray logLikelihoods=noArray(), OutputArray labels=noArray(), OutputArray probs=noArray()) +EM::create +---------- +Creates empty EM model + +.. ocv:function:: Ptr EM::create(const Params& params=Params()) -.. ocv:function:: bool EM::trainE(InputArray samples, InputArray means0, InputArray covs0=noArray(), InputArray weights0=noArray(), OutputArray logLikelihoods=noArray(), OutputArray labels=noArray(), OutputArray probs=noArray()) + :param params: EM parameters -.. ocv:function:: bool EM::trainM(InputArray samples, InputArray probs0, OutputArray logLikelihoods=noArray(), OutputArray labels=noArray(), OutputArray probs=noArray()) +The model should be trained then using ``StatModel::train(traindata, flags)`` method. Alternatively, you can use one of the ``EM::train*`` methods or load it from file using ``StatModel::load(filename)``. + +EM::train +--------- +Static methods that estimate the Gaussian mixture parameters from a samples set -.. ocv:pyfunction:: cv2.EM.train(samples[, logLikelihoods[, labels[, probs]]]) -> retval, logLikelihoods, labels, probs +.. ocv:function:: Ptr EM::train(InputArray samples, OutputArray logLikelihoods=noArray(), OutputArray labels=noArray(), OutputArray probs=noArray(), const Params& params=Params()) -.. ocv:pyfunction:: cv2.EM.trainE(samples, means0[, covs0[, weights0[, logLikelihoods[, labels[, probs]]]]]) -> retval, logLikelihoods, labels, probs +.. ocv:function:: bool EM::train_startWithE(InputArray samples, InputArray means0, InputArray covs0=noArray(), InputArray weights0=noArray(), OutputArray logLikelihoods=noArray(), OutputArray labels=noArray(), OutputArray probs=noArray(), const Params& params=Params()) -.. ocv:pyfunction:: cv2.EM.trainM(samples, probs0[, logLikelihoods[, labels[, probs]]]) -> retval, logLikelihoods, labels, probs +.. ocv:function:: bool EM::train_startWithM(InputArray samples, InputArray probs0, OutputArray logLikelihoods=noArray(), OutputArray labels=noArray(), OutputArray probs=noArray(), const Params& params=Params()) :param samples: Samples from which the Gaussian mixture model will be estimated. It should be a one-channel matrix, each row of which is a sample. If the matrix does not have ``CV_64F`` type it will be converted to the inner matrix of such type for the further computing. @@ -147,6 +155,8 @@ Estimates the Gaussian mixture parameters from a samples set. :param labels: The optional output "class label" for each sample: :math:`\texttt{labels}_i=\texttt{arg max}_k(p_{i,k}), i=1..N` (indices of the most probable mixture component for each sample). It has :math:`nsamples \times 1` size and ``CV_32SC1`` type. :param probs: The optional output matrix that contains posterior probabilities of each Gaussian mixture component given the each sample. It has :math:`nsamples \times nclusters` size and ``CV_64FC1`` type. + + :param params: The Gaussian mixture params, see ``EM::Params`` description above. Three versions of training method differ in the initialization of Gaussian mixture model parameters and start step: @@ -167,15 +177,13 @@ Unlike many of the ML models, EM is an unsupervised learning algorithm and it do :math:`\texttt{labels}_i=\texttt{arg max}_k(p_{i,k}), i=1..N` (indices of the most probable mixture component for each sample). The trained model can be used further for prediction, just like any other classifier. The trained model is similar to the -:ocv:class:`CvNormalBayesClassifier`. +``NormalBayesClassifier``. -EM::predict ------------ +EM::predict2 +------------ Returns a likelihood logarithm value and an index of the most probable mixture component for the given sample. -.. ocv:function:: Vec2d EM::predict(InputArray sample, OutputArray probs=noArray()) const - -.. ocv:pyfunction:: cv2.EM.predict(sample[, probs]) -> retval, probs +.. ocv:function:: Vec2d EM::predict2(InputArray sample, OutputArray probs=noArray()) const :param sample: A sample for classification. It should be a one-channel matrix of :math:`1 \times dims` or :math:`dims \times 1` size. @@ -183,28 +191,29 @@ Returns a likelihood logarithm value and an index of the most probable mixture c The method returns a two-element ``double`` vector. Zero element is a likelihood logarithm value for the sample. First element is an index of the most probable mixture component for the given sample. -CvEM::isTrained ---------------- -Returns ``true`` if the Gaussian mixture model was trained. -.. ocv:function:: bool EM::isTrained() const +EM::getMeans +------------ +Returns the cluster centers (means of the Gaussian mixture) + +.. ocv:function:: Mat EM::getMeans() const + +Returns matrix with the number of rows equal to the number of mixtures and number of columns equal to the space dimensionality. + + +EM::getWeights +-------------- +Returns weights of the mixtures + +.. ocv:function:: Mat EM::getWeights() const -.. ocv:pyfunction:: cv2.EM.isTrained() -> retval +Returns vector with the number of elements equal to the number of mixtures. -EM::read, EM::write -------------------- -See :ocv:func:`Algorithm::read` and :ocv:func:`Algorithm::write`. -EM::get, EM::set ----------------- -See :ocv:func:`Algorithm::get` and :ocv:func:`Algorithm::set`. The following parameters are available: +EM::getCovs +-------------- +Returns covariation matrices -* ``"nclusters"`` -* ``"covMatType"`` -* ``"maxIters"`` -* ``"epsilon"`` -* ``"weights"`` *(read-only)* -* ``"means"`` *(read-only)* -* ``"covs"`` *(read-only)* +.. ocv:function:: void EM::getCovs(std::vector& covs) const -.. +Returns vector of covariation matrices. Number of matrices is the number of gaussian mixtures, each matrix is a square floating-point matrix NxN, where N is the space dimensionality. diff --git a/modules/ml/doc/gradient_boosted_trees.rst b/modules/ml/doc/gradient_boosted_trees.rst deleted file mode 100644 index b83c47e4e1..0000000000 --- a/modules/ml/doc/gradient_boosted_trees.rst +++ /dev/null @@ -1,272 +0,0 @@ -.. _Gradient Boosted Trees: - -Gradient Boosted Trees -====================== - -.. highlight:: cpp - -Gradient Boosted Trees (GBT) is a generalized boosting algorithm introduced by -Jerome Friedman: http://www.salfordsystems.com/doc/GreedyFuncApproxSS.pdf . -In contrast to the AdaBoost.M1 algorithm, GBT can deal with both multiclass -classification and regression problems. Moreover, it can use any -differential loss function, some popular ones are implemented. -Decision trees (:ocv:class:`CvDTree`) usage as base learners allows to process ordered -and categorical variables. - -.. _Training GBT: - -Training the GBT model ----------------------- - -Gradient Boosted Trees model represents an ensemble of single regression trees -built in a greedy fashion. Training procedure is an iterative process -similar to the numerical optimization via the gradient descent method. Summary loss -on the training set depends only on the current model predictions for the -training samples, in other words -:math:`\sum^N_{i=1}L(y_i, F(x_i)) \equiv \mathcal{L}(F(x_1), F(x_2), ... , F(x_N)) -\equiv \mathcal{L}(F)`. And the :math:`\mathcal{L}(F)` -gradient can be computed as follows: - -.. math:: - grad(\mathcal{L}(F)) = \left( \dfrac{\partial{L(y_1, F(x_1))}}{\partial{F(x_1)}}, - \dfrac{\partial{L(y_2, F(x_2))}}{\partial{F(x_2)}}, ... , - \dfrac{\partial{L(y_N, F(x_N))}}{\partial{F(x_N)}} \right) . - -At every training step, a single regression tree is built to predict an -antigradient vector components. Step length is computed corresponding to the -loss function and separately for every region determined by the tree leaf. It -can be eliminated by changing values of the leaves directly. - -See below the main scheme of the training process: - -#. - Find the best constant model. -#. - For :math:`i` in :math:`[1,M]`: - - #. - Compute the antigradient. - #. - Grow a regression tree to predict antigradient components. - #. - Change values in the tree leaves. - #. - Add the tree to the model. - - -The following loss functions are implemented for regression problems: - -* - Squared loss (``CvGBTrees::SQUARED_LOSS``): - :math:`L(y,f(x))=\dfrac{1}{2}(y-f(x))^2` -* - Absolute loss (``CvGBTrees::ABSOLUTE_LOSS``): - :math:`L(y,f(x))=|y-f(x)|` -* - Huber loss (``CvGBTrees::HUBER_LOSS``): - :math:`L(y,f(x)) = \left\{ \begin{array}{lr} - \delta\cdot\left(|y-f(x)|-\dfrac{\delta}{2}\right) & : |y-f(x)|>\delta\\ - \dfrac{1}{2}\cdot(y-f(x))^2 & : |y-f(x)|\leq\delta \end{array} \right.`, - - where :math:`\delta` is the :math:`\alpha`-quantile estimation of the - :math:`|y-f(x)|`. In the current implementation :math:`\alpha=0.2`. - - -The following loss functions are implemented for classification problems: - -* - Deviance or cross-entropy loss (``CvGBTrees::DEVIANCE_LOSS``): - :math:`K` functions are built, one function for each output class, and - :math:`L(y,f_1(x),...,f_K(x)) = -\sum^K_{k=0}1(y=k)\ln{p_k(x)}`, - where :math:`p_k(x)=\dfrac{\exp{f_k(x)}}{\sum^K_{i=1}\exp{f_i(x)}}` - is the estimation of the probability of :math:`y=k`. - -As a result, you get the following model: - -.. math:: f(x) = f_0 + \nu\cdot\sum^M_{i=1}T_i(x) , - -where :math:`f_0` is the initial guess (the best constant model) and :math:`\nu` -is a regularization parameter from the interval :math:`(0,1]`, further called -*shrinkage*. - -.. _Predicting with GBT: - -Predicting with the GBT Model ------------------------------ - -To get the GBT model prediction, you need to compute the sum of responses of -all the trees in the ensemble. For regression problems, it is the answer. -For classification problems, the result is :math:`\arg\max_{i=1..K}(f_i(x))`. - - -.. highlight:: cpp - - -CvGBTreesParams ---------------- -.. ocv:struct:: CvGBTreesParams : public CvDTreeParams - -GBT training parameters. - -The structure contains parameters for each single decision tree in the ensemble, -as well as the whole model characteristics. The structure is derived from -:ocv:class:`CvDTreeParams` but not all of the decision tree parameters are supported: -cross-validation, pruning, and class priorities are not used. - -CvGBTreesParams::CvGBTreesParams --------------------------------- -.. ocv:function:: CvGBTreesParams::CvGBTreesParams() - -.. ocv:function:: CvGBTreesParams::CvGBTreesParams( int loss_function_type, int weak_count, float shrinkage, float subsample_portion, int max_depth, bool use_surrogates ) - - :param loss_function_type: Type of the loss function used for training - (see :ref:`Training GBT`). It must be one of the - following types: ``CvGBTrees::SQUARED_LOSS``, ``CvGBTrees::ABSOLUTE_LOSS``, - ``CvGBTrees::HUBER_LOSS``, ``CvGBTrees::DEVIANCE_LOSS``. The first three - types are used for regression problems, and the last one for - classification. - - :param weak_count: Count of boosting algorithm iterations. ``weak_count*K`` is the total - count of trees in the GBT model, where ``K`` is the output classes count - (equal to one in case of a regression). - - :param shrinkage: Regularization parameter (see :ref:`Training GBT`). - - :param subsample_portion: Portion of the whole training set used for each algorithm iteration. - Subset is generated randomly. For more information see - http://www.salfordsystems.com/doc/StochasticBoostingSS.pdf. - - :param max_depth: Maximal depth of each decision tree in the ensemble (see :ocv:class:`CvDTree`). - - :param use_surrogates: If ``true``, surrogate splits are built (see :ocv:class:`CvDTree`). - -By default the following constructor is used: - -.. code-block:: cpp - - CvGBTreesParams(CvGBTrees::SQUARED_LOSS, 200, 0.01f, 0.8f, 3, false) - : CvDTreeParams( 3, 10, 0, false, 10, 0, false, false, 0 ) - -CvGBTrees ---------- -.. ocv:class:: CvGBTrees : public CvStatModel - -The class implements the Gradient boosted tree model as described in the beginning of this section. - -CvGBTrees::CvGBTrees --------------------- -Default and training constructors. - -.. ocv:function:: CvGBTrees::CvGBTrees() - -.. ocv:function:: CvGBTrees::CvGBTrees( const Mat& trainData, int tflag, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat(), const Mat& varType=Mat(), const Mat& missingDataMask=Mat(), CvGBTreesParams params=CvGBTreesParams() ) - -.. ocv:function:: CvGBTrees::CvGBTrees( const CvMat* trainData, int tflag, const CvMat* responses, const CvMat* varIdx=0, const CvMat* sampleIdx=0, const CvMat* varType=0, const CvMat* missingDataMask=0, CvGBTreesParams params=CvGBTreesParams() ) - -.. ocv:pyfunction:: cv2.GBTrees([trainData, tflag, responses[, varIdx[, sampleIdx[, varType[, missingDataMask[, params]]]]]]) -> - -The constructors follow conventions of :ocv:func:`CvStatModel::CvStatModel`. See :ocv:func:`CvStatModel::train` for parameters descriptions. - -CvGBTrees::train ----------------- -Trains a Gradient boosted tree model. - -.. ocv:function:: bool CvGBTrees::train(const Mat& trainData, int tflag, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat(), const Mat& varType=Mat(), const Mat& missingDataMask=Mat(), CvGBTreesParams params=CvGBTreesParams(), bool update=false) - -.. ocv:function:: bool CvGBTrees::train( const CvMat* trainData, int tflag, const CvMat* responses, const CvMat* varIdx=0, const CvMat* sampleIdx=0, const CvMat* varType=0, const CvMat* missingDataMask=0, CvGBTreesParams params=CvGBTreesParams(), bool update=false ) - -.. ocv:function:: bool CvGBTrees::train(CvMLData* data, CvGBTreesParams params=CvGBTreesParams(), bool update=false) - -.. ocv:pyfunction:: cv2.GBTrees.train(trainData, tflag, responses[, varIdx[, sampleIdx[, varType[, missingDataMask[, params[, update]]]]]]) -> retval - -The first train method follows the common template (see :ocv:func:`CvStatModel::train`). -Both ``tflag`` values (``CV_ROW_SAMPLE``, ``CV_COL_SAMPLE``) are supported. -``trainData`` must be of the ``CV_32F`` type. ``responses`` must be a matrix of type -``CV_32S`` or ``CV_32F``. In both cases it is converted into the ``CV_32F`` -matrix inside the training procedure. ``varIdx`` and ``sampleIdx`` must be a -list of indices (``CV_32S``) or a mask (``CV_8U`` or ``CV_8S``). ``update`` is -a dummy parameter. - -The second form of :ocv:func:`CvGBTrees::train` function uses :ocv:class:`CvMLData` as a -data set container. ``update`` is still a dummy parameter. - -All parameters specific to the GBT model are passed into the training function -as a :ocv:class:`CvGBTreesParams` structure. - - -CvGBTrees::predict ------------------- -Predicts a response for an input sample. - -.. ocv:function:: float CvGBTrees::predict(const Mat& sample, const Mat& missing=Mat(), const Range& slice = Range::all(), int k=-1) const - -.. ocv:function:: float CvGBTrees::predict( const CvMat* sample, const CvMat* missing=0, CvMat* weakResponses=0, CvSlice slice = CV_WHOLE_SEQ, int k=-1 ) const - -.. ocv:pyfunction:: cv2.GBTrees.predict(sample[, missing[, slice[, k]]]) -> retval - - :param sample: Input feature vector that has the same format as every training set - element. If not all the variables were actually used during training, - ``sample`` contains forged values at the appropriate places. - - :param missing: Missing values mask, which is a dimensional matrix of the same size as - ``sample`` having the ``CV_8U`` type. ``1`` corresponds to the missing value - in the same position in the ``sample`` vector. If there are no missing values - in the feature vector, an empty matrix can be passed instead of the missing mask. - - :param weakResponses: Matrix used to obtain predictions of all the trees. - The matrix has :math:`K` rows, - where :math:`K` is the count of output classes (1 for the regression case). - The matrix has as many columns as the ``slice`` length. - - :param slice: Parameter defining the part of the ensemble used for prediction. - If ``slice = Range::all()``, all trees are used. Use this parameter to - get predictions of the GBT models with different ensemble sizes learning - only one model. - - :param k: Number of tree ensembles built in case of the classification problem - (see :ref:`Training GBT`). Use this - parameter to change the output to sum of the trees' predictions in the - ``k``-th ensemble only. To get the total GBT model prediction, ``k`` value - must be -1. For regression problems, ``k`` is also equal to -1. - -The method predicts the response corresponding to the given sample -(see :ref:`Predicting with GBT`). -The result is either the class label or the estimated function value. The -:ocv:func:`CvGBTrees::predict` method enables using the parallel version of the GBT model -prediction if the OpenCV is built with the TBB library. In this case, predictions -of single trees are computed in a parallel fashion. - - -CvGBTrees::clear ----------------- -Clears the model. - -.. ocv:function:: void CvGBTrees::clear() - -.. ocv:pyfunction:: cv2.GBTrees.clear() -> None - -The function deletes the data set information and all the weak models and sets all internal -variables to the initial state. The function is called in :ocv:func:`CvGBTrees::train` and in the -destructor. - - -CvGBTrees::calc_error ---------------------- -Calculates a training or testing error. - -.. ocv:function:: float CvGBTrees::calc_error( CvMLData* _data, int type, std::vector *resp = 0 ) - - :param _data: Data set. - - :param type: Parameter defining the error that should be computed: train (``CV_TRAIN_ERROR``) or test - (``CV_TEST_ERROR``). - - :param resp: If non-zero, a vector of predictions on the corresponding data set is - returned. - -If the :ocv:class:`CvMLData` data is used to store the data set, :ocv:func:`CvGBTrees::calc_error` can be -used to get a training/testing error easily and (optionally) all predictions -on the training/testing set. If the Intel* TBB* library is used, the error is computed in a -parallel way, namely, predictions for different samples are computed at the same time. -In case of a regression problem, a mean squared error is returned. For -classifications, the result is a misclassification error in percent. diff --git a/modules/ml/doc/k_nearest_neighbors.rst b/modules/ml/doc/k_nearest_neighbors.rst index 05413c7785..6e16641450 100644 --- a/modules/ml/doc/k_nearest_neighbors.rst +++ b/modules/ml/doc/k_nearest_neighbors.rst @@ -5,9 +5,9 @@ K-Nearest Neighbors The algorithm caches all training samples and predicts the response for a new sample by analyzing a certain number (**K**) of the nearest neighbors of the sample using voting, calculating weighted sum, and so on. The method is sometimes referred to as "learning by example" because for prediction it looks for the feature vector with a known response that is closest to the given vector. -CvKNearest +KNearest ---------- -.. ocv:class:: CvKNearest : public CvStatModel +.. ocv:class:: KNearest : public StatModel The class implements K-Nearest Neighbors model as described in the beginning of this section. @@ -17,65 +17,32 @@ The class implements K-Nearest Neighbors model as described in the beginning of * (Python) An example of grid search digit recognition using KNearest can be found at opencv_source/samples/python2/digits_adjust.py * (Python) An example of video digit recognition using KNearest can be found at opencv_source/samples/python2/digits_video.py -CvKNearest::CvKNearest +KNearest::create ---------------------- -Default and training constructors. +Creates the empty model -.. ocv:function:: CvKNearest::CvKNearest() +.. ocv:function:: Ptr KNearest::create(const Params& params=Params()) -.. ocv:function:: CvKNearest::CvKNearest( const Mat& trainData, const Mat& responses, const Mat& sampleIdx=Mat(), bool isRegression=false, int max_k=32 ) + :param params: The model parameters: default number of neighbors to use in predict method (in ``KNearest::findNearest`` this number must be passed explicitly) and the flag on whether classification or regression model should be trained. -.. ocv:function:: CvKNearest::CvKNearest( const CvMat* trainData, const CvMat* responses, const CvMat* sampleIdx=0, bool isRegression=false, int max_k=32 ) +The static method creates empty KNearest classifier. It should be then trained using ``train`` method (see ``StatModel::train``). Alternatively, you can load boost model from file using ``StatModel::load(filename)``. -See :ocv:func:`CvKNearest::train` for additional parameters descriptions. -CvKNearest::train ------------------ -Trains the model. - -.. ocv:function:: bool CvKNearest::train( const Mat& trainData, const Mat& responses, const Mat& sampleIdx=Mat(), bool isRegression=false, int maxK=32, bool updateBase=false ) - -.. ocv:function:: bool CvKNearest::train( const CvMat* trainData, const CvMat* responses, const CvMat* sampleIdx=0, bool is_regression=false, int maxK=32, bool updateBase=false ) - -.. ocv:pyfunction:: cv2.KNearest.train(trainData, responses[, sampleIdx[, isRegression[, maxK[, updateBase]]]]) -> retval - - :param isRegression: Type of the problem: ``true`` for regression and ``false`` for classification. - - :param maxK: Number of maximum neighbors that may be passed to the method :ocv:func:`CvKNearest::find_nearest`. - - :param updateBase: Specifies whether the model is trained from scratch (``update_base=false``), or it is updated using the new training data (``update_base=true``). In the latter case, the parameter ``maxK`` must not be larger than the original value. - -The method trains the K-Nearest model. It follows the conventions of the generic :ocv:func:`CvStatModel::train` approach with the following limitations: - -* Only ``CV_ROW_SAMPLE`` data layout is supported. -* Input variables are all ordered. -* Output variables can be either categorical ( ``is_regression=false`` ) or ordered ( ``is_regression=true`` ). -* Variable subsets (``var_idx``) and missing measurements are not supported. - -CvKNearest::find_nearest +KNearest::findNearest ------------------------ Finds the neighbors and predicts responses for input vectors. -.. ocv:function:: float CvKNearest::find_nearest( const Mat& samples, int k, Mat* results=0, const float** neighbors=0, Mat* neighborResponses=0, Mat* dist=0 ) const - -.. ocv:function:: float CvKNearest::find_nearest( const Mat& samples, int k, Mat& results, Mat& neighborResponses, Mat& dists) const +.. ocv:function:: float KNearest::findNearest( InputArray samples, int k, OutputArray results, OutputArray neighborResponses=noArray(), OutputArray dist=noArray() ) const -.. ocv:function:: float CvKNearest::find_nearest( const CvMat* samples, int k, CvMat* results=0, const float** neighbors=0, CvMat* neighborResponses=0, CvMat* dist=0 ) const + :param samples: Input samples stored by rows. It is a single-precision floating-point matrix of `` * k`` size. -.. ocv:pyfunction:: cv2.KNearest.find_nearest(samples, k[, results[, neighborResponses[, dists]]]) -> retval, results, neighborResponses, dists + :param k: Number of used nearest neighbors. Should be greater than 1. + :param results: Vector with results of prediction (regression or classification) for each input sample. It is a single-precision floating-point vector with ```` elements. - :param samples: Input samples stored by rows. It is a single-precision floating-point matrix of :math:`number\_of\_samples \times number\_of\_features` size. + :param neighborResponses: Optional output values for corresponding neighbors. It is a single-precision floating-point matrix of `` * k`` size. - :param k: Number of used nearest neighbors. It must satisfy constraint: :math:`k \le` :ocv:func:`CvKNearest::get_max_k`. - - :param results: Vector with results of prediction (regression or classification) for each input sample. It is a single-precision floating-point vector with ``number_of_samples`` elements. - - :param neighbors: Optional output pointers to the neighbor vectors themselves. It is an array of ``k*samples->rows`` pointers. - - :param neighborResponses: Optional output values for corresponding ``neighbors``. It is a single-precision floating-point matrix of :math:`number\_of\_samples \times k` size. - - :param dist: Optional output distances from the input vectors to the corresponding ``neighbors``. It is a single-precision floating-point matrix of :math:`number\_of\_samples \times k` size. + :param dist: Optional output distances from the input vectors to the corresponding neighbors. It is a single-precision floating-point matrix of `` * k`` size. For each input vector (a row of the matrix ``samples``), the method finds the ``k`` nearest neighbors. In case of regression, the predicted result is a mean value of the particular vector's neighbor responses. In case of classification, the class is determined by voting. @@ -87,110 +54,18 @@ If only a single input vector is passed, all output matrices are optional and th The function is parallelized with the TBB library. -CvKNearest::get_max_k +KNearest::getDefaultK +--------------------- +Returns the default number of neighbors + +.. ocv:function:: int KNearest::getDefaultK() const + +The function returns the default number of neighbors that is used in a simpler ``predict`` method, not ``findNearest``. + +KNearest::setDefaultK --------------------- -Returns the number of maximum neighbors that may be passed to the method :ocv:func:`CvKNearest::find_nearest`. - -.. ocv:function:: int CvKNearest::get_max_k() const - -CvKNearest::get_var_count -------------------------- -Returns the number of used features (variables count). - -.. ocv:function:: int CvKNearest::get_var_count() const - -CvKNearest::get_sample_count ----------------------------- -Returns the total number of train samples. - -.. ocv:function:: int CvKNearest::get_sample_count() const - -CvKNearest::is_regression -------------------------- -Returns type of the problem: ``true`` for regression and ``false`` for classification. - -.. ocv:function:: bool CvKNearest::is_regression() const - - - -The sample below (currently using the obsolete ``CvMat`` structures) demonstrates the use of the k-nearest classifier for 2D point classification: :: - - #include "ml.h" - #include "highgui.h" - - int main( int argc, char** argv ) - { - const int K = 10; - int i, j, k, accuracy; - float response; - int train_sample_count = 100; - CvRNG rng_state = cvRNG(-1); - CvMat* trainData = cvCreateMat( train_sample_count, 2, CV_32FC1 ); - CvMat* trainClasses = cvCreateMat( train_sample_count, 1, CV_32FC1 ); - IplImage* img = cvCreateImage( cvSize( 500, 500 ), 8, 3 ); - float _sample[2]; - CvMat sample = cvMat( 1, 2, CV_32FC1, _sample ); - cvZero( img ); - - CvMat trainData1, trainData2, trainClasses1, trainClasses2; - - // form the training samples - cvGetRows( trainData, &trainData1, 0, train_sample_count/2 ); - cvRandArr( &rng_state, &trainData1, CV_RAND_NORMAL, cvScalar(200,200), cvScalar(50,50) ); - - cvGetRows( trainData, &trainData2, train_sample_count/2, train_sample_count ); - cvRandArr( &rng_state, &trainData2, CV_RAND_NORMAL, cvScalar(300,300), cvScalar(50,50) ); - - cvGetRows( trainClasses, &trainClasses1, 0, train_sample_count/2 ); - cvSet( &trainClasses1, cvScalar(1) ); - - cvGetRows( trainClasses, &trainClasses2, train_sample_count/2, train_sample_count ); - cvSet( &trainClasses2, cvScalar(2) ); - - // learn classifier - CvKNearest knn( trainData, trainClasses, 0, false, K ); - CvMat* nearests = cvCreateMat( 1, K, CV_32FC1); - - for( i = 0; i < img->height; i++ ) - { - for( j = 0; j < img->width; j++ ) - { - sample.data.fl[0] = (float)j; - sample.data.fl[1] = (float)i; - - // estimate the response and get the neighbors' labels - response = knn.find_nearest(&sample,K,0,0,nearests,0); - - // compute the number of neighbors representing the majority - for( k = 0, accuracy = 0; k < K; k++ ) - { - if( nearests->data.fl[k] == response) - accuracy++; - } - // highlight the pixel depending on the accuracy (or confidence) - cvSet2D( img, i, j, response == 1 ? - (accuracy > 5 ? CV_RGB(180,0,0) : CV_RGB(180,120,0)) : - (accuracy > 5 ? CV_RGB(0,180,0) : CV_RGB(120,120,0)) ); - } - } - - // display the original training samples - for( i = 0; i < train_sample_count/2; i++ ) - { - CvPoint pt; - pt.x = cvRound(trainData1.data.fl[i*2]); - pt.y = cvRound(trainData1.data.fl[i*2+1]); - cvCircle( img, pt, 2, CV_RGB(255,0,0), CV_FILLED ); - pt.x = cvRound(trainData2.data.fl[i*2]); - pt.y = cvRound(trainData2.data.fl[i*2+1]); - cvCircle( img, pt, 2, CV_RGB(0,255,0), CV_FILLED ); - } - - cvNamedWindow( "classifier result", 1 ); - cvShowImage( "classifier result", img ); - cvWaitKey(0); - - cvReleaseMat( &trainClasses ); - cvReleaseMat( &trainData ); - return 0; - } +Returns the default number of neighbors + +.. ocv:function:: void KNearest::setDefaultK(int k) + +The function sets the default number of neighbors that is used in a simpler ``predict`` method, not ``findNearest``. diff --git a/modules/ml/doc/ml.rst b/modules/ml/doc/ml.rst index b83e7dedc3..86da3ac4ff 100644 --- a/modules/ml/doc/ml.rst +++ b/modules/ml/doc/ml.rst @@ -15,9 +15,7 @@ Most of the classification and regression algorithms are implemented as C++ clas support_vector_machines decision_trees boosting - gradient_boosted_trees random_trees - ertrees expectation_maximization neural_networks mldata diff --git a/modules/ml/doc/mldata.rst b/modules/ml/doc/mldata.rst index c3092d1490..8a3b796e30 100644 --- a/modules/ml/doc/mldata.rst +++ b/modules/ml/doc/mldata.rst @@ -1,279 +1,126 @@ -MLData +Training Data =================== .. highlight:: cpp -For the machine learning algorithms, the data set is often stored in a file of the ``.csv``-like format. The file contains a table of predictor and response values where each row of the table corresponds to a sample. Missing values are supported. The UC Irvine Machine Learning Repository (http://archive.ics.uci.edu/ml/) provides many data sets stored in such a format to the machine learning community. The class ``MLData`` is implemented to easily load the data for training one of the OpenCV machine learning algorithms. For float values, only the ``'.'`` separator is supported. The table can have a header and in such case the user have to set the number of the header lines to skip them duaring the file reading. +In machine learning algorithms there is notion of training data. Training data includes several components: -CvMLData --------- -.. ocv:class:: CvMLData - -Class for loading the data from a ``.csv`` file. -:: - - class CV_EXPORTS CvMLData - { - public: - CvMLData(); - virtual ~CvMLData(); - - int read_csv(const char* filename); - - const CvMat* get_values() const; - const CvMat* get_responses(); - const CvMat* get_missing() const; +* A set of training samples. Each training sample is a vector of values (in Computer Vision it's sometimes referred to as feature vector). Usually all the vectors have the same number of components (features); OpenCV ml module assumes that. Each feature can be ordered (i.e. its values are floating-point numbers that can be compared with each other and strictly ordered, i.e. sorted) or categorical (i.e. its value belongs to a fixed set of values that can be integers, strings etc.). - void set_response_idx( int idx ); - int get_response_idx() const; +* Optional set of responses corresponding to the samples. Training data with no responses is used in unsupervised learning algorithms that learn structure of the supplied data based on distances between different samples. Training data with responses is used in supervised learning algorithms, which learn the function mapping samples to responses. Usually the responses are scalar values, ordered (when we deal with regression problem) or categorical (when we deal with classification problem; in this case the responses are often called "labels"). Some algorithms, most noticeably Neural networks, can handle not only scalar, but also multi-dimensional or vector responses. +* Another optional component is the mask of missing measurements. Most algorithms require all the components in all the training samples be valid, but some other algorithms, such as decision tress, can handle the cases of missing measurements. - void set_train_test_split( const CvTrainTestSplit * spl); - const CvMat* get_train_sample_idx() const; - const CvMat* get_test_sample_idx() const; - void mix_train_and_test_idx(); +* In the case of classification problem user may want to give different weights to different classes. This is useful, for example, when + * user wants to shift prediction accuracy towards lower false-alarm rate or higher hit-rate. + * user wants to compensate for significantly different amounts of training samples from different classes. - const CvMat* get_var_idx(); - void change_var_idx( int vi, bool state ); +* In addition to that, each training sample may be given a weight, if user wants the algorithm to pay special attention to certain training samples and adjust the training model accordingly. - const CvMat* get_var_types(); - void set_var_types( const char* str ); +* Also, user may wish not to use the whole training data at once, but rather use parts of it, e.g. to do parameter optimization via cross-validation procedure. - int get_var_type( int var_idx ) const; - void change_var_type( int var_idx, int type); +As you can see, training data can have rather complex structure; besides, it may be very big and/or not entirely available, so there is need to make abstraction for this concept. In OpenCV ml there is ``cv::ml::TrainData`` class for that. - void set_delimiter( char ch ); - char get_delimiter() const; - - void set_miss_ch( char ch ); - char get_miss_ch() const; - - const std::map& get_class_labels_map() const; +TrainData +-------- +.. ocv:class:: TrainData - protected: - ... - }; +Class encapsulating training data. Please note that the class only specifies the interface of training data, but not implementation. All the statistical model classes in ml take Ptr. In other words, you can create your own class derived from ``TrainData`` and supply smart pointer to the instance of this class into ``StatModel::train``. -CvMLData::read_csv ------------------- -Reads the data set from a ``.csv``-like ``filename`` file and stores all read values in a matrix. +TrainData::loadFromCSV +---------------------- +Reads the dataset from a .csv file and returns the ready-to-use training data. -.. ocv:function:: int CvMLData::read_csv(const char* filename) +.. ocv:function:: Ptr loadFromCSV(const String& filename, int headerLineCount, int responseStartIdx=-1, int responseEndIdx=-1, const String& varTypeSpec=String(), char delimiter=',', char missch='?'); :param filename: The input file name -While reading the data, the method tries to define the type of variables (predictors and responses): ordered or categorical. If a value of the variable is not numerical (except for the label for a missing value), the type of the variable is set to ``CV_VAR_CATEGORICAL``. If all existing values of the variable are numerical, the type of the variable is set to ``CV_VAR_ORDERED``. So, the default definition of variables types works correctly for all cases except the case of a categorical variable with numerical class labels. In this case, the type ``CV_VAR_ORDERED`` is set. You should change the type to ``CV_VAR_CATEGORICAL`` using the method :ocv:func:`CvMLData::change_var_type`. For categorical variables, a common map is built to convert a string class label to the numerical class label. Use :ocv:func:`CvMLData::get_class_labels_map` to obtain this map. - -Also, when reading the data, the method constructs the mask of missing values. For example, values are equal to `'?'`. - -CvMLData::get_values --------------------- -Returns a pointer to the matrix of predictors and response values - -.. ocv:function:: const CvMat* CvMLData::get_values() const - -The method returns a pointer to the matrix of predictor and response ``values`` or ``0`` if the data has not been loaded from the file yet. - -The row count of this matrix equals the sample count. The column count equals predictors ``+ 1`` for the response (if exists) count. This means that each row of the matrix contains values of one sample predictor and response. The matrix type is ``CV_32FC1``. - -CvMLData::get_responses ------------------------ -Returns a pointer to the matrix of response values - -.. ocv:function:: const CvMat* CvMLData::get_responses() - -The method returns a pointer to the matrix of response values or throws an exception if the data has not been loaded from the file yet. - -This is a single-column matrix of the type ``CV_32FC1``. Its row count is equal to the sample count, one column and . - -CvMLData::get_missing ---------------------- -Returns a pointer to the mask matrix of missing values - -.. ocv:function:: const CvMat* CvMLData::get_missing() const - -The method returns a pointer to the mask matrix of missing values or throws an exception if the data has not been loaded from the file yet. - -This matrix has the same size as the ``values`` matrix (see :ocv:func:`CvMLData::get_values`) and the type ``CV_8UC1``. - -CvMLData::set_response_idx --------------------------- -Specifies index of response column in the data matrix - -.. ocv:function:: void CvMLData::set_response_idx( int idx ) - -The method sets the index of a response column in the ``values`` matrix (see :ocv:func:`CvMLData::get_values`) or throws an exception if the data has not been loaded from the file yet. - -The old response columns become predictors. If ``idx < 0``, there is no response. - -CvMLData::get_response_idx + :param headerLineCount: The number of lines in the beginning to skip; besides the header, the function also skips empty lines and lines staring with '#' + + :param responseStartIdx: Index of the first output variable. If -1, the function considers the last variable as the response + + :param responseEndIdx: Index of the last output variable + 1. If -1, then there is single response variable at ``responseStartIdx``. + + :param varTypeSpec: The optional text string that specifies the variables' types. It has the format ``ord[n1-n2,n3,n4-n5,...]cat[n6,n7-n8,...]``. That is, variables from n1 to n2 (inclusive range), n3, n4 to n5 ... are considered ordered and n6, n7 to n8 ... are considered as categorical. The range [n1..n2] + [n3] + [n4..n5] + ... + [n6] + [n7..n8] should cover all the variables. If varTypeSpec is not specified, then algorithm uses the following rules: + 1. all input variables are considered ordered by default. If some column contains has non-numerical values, e.g. 'apple', 'pear', 'apple', 'apple', 'mango', the corresponding variable is considered categorical. + 2. if there are several output variables, they are all considered as ordered. Error is reported when non-numerical values are used. + 3. if there is a single output variable, then if its values are non-numerical or are all integers, then it's considered categorical. Otherwise, it's considered ordered. + + :param delimiter: The character used to separate values in each line. + + :param missch: The character used to specify missing measurements. It should not be a digit. Although it's a non-numerical value, it surely does not affect the decision of whether the variable ordered or categorical. + +TrainData::create +----------------- +Creates training data from in-memory arrays. + +.. ocv:function:: Ptr create(InputArray samples, int layout, InputArray responses, InputArray varIdx=noArray(), InputArray sampleIdx=noArray(), InputArray sampleWeights=noArray(), InputArray varType=noArray()) + + :param samples: matrix of samples. It should have ``CV_32F`` type. + + :param layout: it's either ``ROW_SAMPLE``, which means that each training sample is a row of ``samples``, or ``COL_SAMPLE``, which means that each training sample occupies a column of ``samples``. + + :param responses: matrix of responses. If the responses are scalar, they should be stored as a single row or as a single column. The matrix should have type ``CV_32F`` or ``CV_32S`` (in the former case the responses are considered as ordered by default; in the latter case - as categorical) + + :param varIdx: vector specifying which variables to use for training. It can be an integer vector (``CV_32S``) containing 0-based variable indices or byte vector (``CV_8U``) containing a mask of active variables. + + :param sampleIdx: vector specifying which samples to use for training. It can be an integer vector (``CV_32S``) containing 0-based sample indices or byte vector (``CV_8U``) containing a mask of training samples. + + :param sampleWeights: optional vector with weights for each sample. It should have ``CV_32F`` type. + + :param varType: optional vector of type ``CV_8U`` and size + , containing types of each input and output variable. The ordered variables are denoted by value ``VAR_ORDERED``, and categorical - by ``VAR_CATEGORICAL``. + + +TrainData::getTrainSamples -------------------------- -Returns index of the response column in the loaded data matrix - -.. ocv:function:: int CvMLData::get_response_idx() const - -The method returns the index of a response column in the ``values`` matrix (see :ocv:func:`CvMLData::get_values`) or throws an exception if the data has not been loaded from the file yet. - -If ``idx < 0``, there is no response. - - -CvMLData::set_train_test_split ------------------------------- -Divides the read data set into two disjoint training and test subsets. - -.. ocv:function:: void CvMLData::set_train_test_split( const CvTrainTestSplit * spl ) - -This method sets parameters for such a split using ``spl`` (see :ocv:class:`CvTrainTestSplit`) or throws an exception if the data has not been loaded from the file yet. - -CvMLData::get_train_sample_idx ------------------------------- -Returns the matrix of sample indices for a training subset - -.. ocv:function:: const CvMat* CvMLData::get_train_sample_idx() const - -The method returns the matrix of sample indices for a training subset. This is a single-row matrix of the type ``CV_32SC1``. If data split is not set, the method returns ``0``. If the data has not been loaded from the file yet, an exception is thrown. - -CvMLData::get_test_sample_idx ------------------------------ -Returns the matrix of sample indices for a testing subset - -.. ocv:function:: const CvMat* CvMLData::get_test_sample_idx() const - - -CvMLData::mix_train_and_test_idx --------------------------------- -Mixes the indices of training and test samples - -.. ocv:function:: void CvMLData::mix_train_and_test_idx() - -The method shuffles the indices of training and test samples preserving sizes of training and test subsets if the data split is set by :ocv:func:`CvMLData::get_values`. If the data has not been loaded from the file yet, an exception is thrown. - -CvMLData::get_var_idx ---------------------- -Returns the indices of the active variables in the data matrix - -.. ocv:function:: const CvMat* CvMLData::get_var_idx() - -The method returns the indices of variables (columns) used in the ``values`` matrix (see :ocv:func:`CvMLData::get_values`). - -It returns ``0`` if the used subset is not set. It throws an exception if the data has not been loaded from the file yet. Returned matrix is a single-row matrix of the type ``CV_32SC1``. Its column count is equal to the size of the used variable subset. - -CvMLData::change_var_idx ------------------------- -Enables or disables particular variable in the loaded data - -.. ocv:function:: void CvMLData::change_var_idx( int vi, bool state ) - -By default, after reading the data set all variables in the ``values`` matrix (see :ocv:func:`CvMLData::get_values`) are used. But you may want to use only a subset of variables and include/exclude (depending on ``state`` value) a variable with the ``vi`` index from the used subset. If the data has not been loaded from the file yet, an exception is thrown. - -CvMLData::get_var_types ------------------------ -Returns a matrix of the variable types. - -.. ocv:function:: const CvMat* CvMLData::get_var_types() - -The function returns a single-row matrix of the type ``CV_8UC1``, where each element is set to either ``CV_VAR_ORDERED`` or ``CV_VAR_CATEGORICAL``. The number of columns is equal to the number of variables. If data has not been loaded from file yet an exception is thrown. - -CvMLData::set_var_types ------------------------ -Sets the variables types in the loaded data. - -.. ocv:function:: void CvMLData::set_var_types( const char* str ) - -In the string, a variable type is followed by a list of variables indices. For example: ``"ord[0-17],cat[18]"``, ``"ord[0,2,4,10-12], cat[1,3,5-9,13,14]"``, ``"cat"`` (all variables are categorical), ``"ord"`` (all variables are ordered). - -CvMLData::get_header_lines_number ---------------------------------- -Returns a number of the table header lines. - -.. ocv:function:: int CvMLData::get_header_lines_number() const - -CvMLData::set_header_lines_number ---------------------------------- -Sets a number of the table header lines. - -.. ocv:function:: void CvMLData::set_header_lines_number( int n ) - -By default it is supposed that the table does not have a header, i.e. it contains only the data. - -CvMLData::get_var_type ----------------------- -Returns type of the specified variable - -.. ocv:function:: int CvMLData::get_var_type( int var_idx ) const - -The method returns the type of a variable by the index ``var_idx`` ( ``CV_VAR_ORDERED`` or ``CV_VAR_CATEGORICAL``). - -CvMLData::change_var_type -------------------------- -Changes type of the specified variable - -.. ocv:function:: void CvMLData::change_var_type( int var_idx, int type) - -The method changes type of variable with index ``var_idx`` from existing type to ``type`` ( ``CV_VAR_ORDERED`` or ``CV_VAR_CATEGORICAL``). - -CvMLData::set_delimiter ------------------------ -Sets the delimiter in the file used to separate input numbers - -.. ocv:function:: void CvMLData::set_delimiter( char ch ) - -The method sets the delimiter for variables in a file. For example: ``','`` (default), ``';'``, ``' '`` (space), or other characters. The floating-point separator ``'.'`` is not allowed. +Returns matrix of train samples -CvMLData::get_delimiter ------------------------ -Returns the currently used delimiter character. +.. ocv:function:: Mat TrainData::getTrainSamples(int layout=ROW_SAMPLE, bool compressSamples=true, bool compressVars=true) const -.. ocv:function:: char CvMLData::get_delimiter() const + :param layout: The requested layout. If it's different from the initial one, the matrix is transposed. + + :param compressSamples: if true, the function returns only the training samples (specified by sampleIdx) + + :param compressVars: if true, the function returns the shorter training samples, containing only the active variables. + +In current implementation the function tries to avoid physical data copying and returns the matrix stored inside TrainData (unless the transposition or compression is needed). -CvMLData::set_miss_ch ---------------------- -Sets the character used to specify missing values +TrainData::getTrainResponses +---------------------------- +Returns the vector of responses -.. ocv:function:: void CvMLData::set_miss_ch( char ch ) +.. ocv:function:: Mat TrainData::getTrainResponses() const -The method sets the character used to specify missing values. For example: ``'?'`` (default), ``'-'``. The floating-point separator ``'.'`` is not allowed. +The function returns ordered or the original categorical responses. Usually it's used in regression algorithms. -CvMLData::get_miss_ch ---------------------- -Returns the currently used missing value character. -.. ocv:function:: char CvMLData::get_miss_ch() const +TrainData::getClassLabels +---------------------------- +Returns the vector of class labels -CvMLData::get_class_labels_map -------------------------------- -Returns a map that converts strings to labels. +.. ocv:function:: Mat TrainData::getClassLabels() const -.. ocv:function:: const std::map& CvMLData::get_class_labels_map() const +The function returns vector of unique labels occurred in the responses. -The method returns a map that converts string class labels to the numerical class labels. It can be used to get an original class label as in a file. -CvTrainTestSplit ----------------- -.. ocv:struct:: CvTrainTestSplit +TrainData::getTrainNormCatResponses +----------------------------------- +Returns the vector of normalized categorical responses -Structure setting the split of a data set read by :ocv:class:`CvMLData`. -:: +.. ocv:function:: Mat TrainData::getTrainNormCatResponses() const - struct CvTrainTestSplit - { - CvTrainTestSplit(); - CvTrainTestSplit( int train_sample_count, bool mix = true); - CvTrainTestSplit( float train_sample_portion, bool mix = true); +The function returns vector of responses. Each response is integer from 0 to -1. The actual label value can be retrieved then from the class label vector, see ``TrainData::getClassLabels``. - union - { - int count; - float portion; - } train_sample_part; - int train_sample_part_mode; +TrainData::setTrainTestSplitRatio +----------------------------------- +Splits the training data into the training and test parts - bool mix; - }; +.. ocv:function:: void TrainData::setTrainTestSplitRatio(double ratio, bool shuffle=true) -There are two ways to construct a split: +The function selects a subset of specified relative size and then returns it as the training set. If the function is not called, all the data is used for training. Please, note that for each of ``TrainData::getTrain*`` there is corresponding ``TrainData::getTest*``, so that the test subset can be retrieved and processed as well. -* Set the training sample count (subset size) ``train_sample_count``. Other existing samples are located in a test subset. -* Set a training sample portion in ``[0,..1]``. The flag ``mix`` is used to mix training and test samples indices when the split is set. Otherwise, the data set is split in the storing order: the first part of samples of a given size is a training subset, the second part is a test subset. +Other methods +------------- +The class includes many other methods that can be used to access normalized categorical input variables, access training data by parts, so that does not have to fit into the memory etc. diff --git a/modules/ml/doc/neural_networks.rst b/modules/ml/doc/neural_networks.rst index 776bf243bd..166e2e2f4b 100644 --- a/modules/ml/doc/neural_networks.rst +++ b/modules/ml/doc/neural_networks.rst @@ -29,17 +29,17 @@ In other words, given the outputs Different activation functions may be used. ML implements three standard functions: * - Identity function ( ``CvANN_MLP::IDENTITY`` ): + Identity function ( ``ANN_MLP::IDENTITY`` ): :math:`f(x)=x` * - Symmetrical sigmoid ( ``CvANN_MLP::SIGMOID_SYM`` ): + Symmetrical sigmoid ( ``ANN_MLP::SIGMOID_SYM`` ): :math:`f(x)=\beta*(1-e^{-\alpha x})/(1+e^{-\alpha x}` ), which is the default choice for MLP. The standard sigmoid with :math:`\beta =1, \alpha =1` is shown below: .. image:: pics/sigmoid_bipolar.png * - Gaussian function ( ``CvANN_MLP::GAUSSIAN`` ): + Gaussian function ( ``ANN_MLP::GAUSSIAN`` ): :math:`f(x)=\beta e^{-\alpha x*x}` , which is not completely supported at the moment. In ML, all the neurons have the same activation functions, with the same free parameters ( @@ -95,60 +95,90 @@ The second (default) one is a batch RPROP algorithm. .. [RPROP93] M. Riedmiller and H. Braun, *A Direct Adaptive Method for Faster Backpropagation Learning: The RPROP Algorithm*, Proc. ICNN, San Francisco (1993). -CvANN_MLP_TrainParams +ANN_MLP::Params --------------------- -.. ocv:struct:: CvANN_MLP_TrainParams - - Parameters of the MLP training algorithm. You can initialize the structure by a constructor or the individual parameters can be adjusted after the structure is created. +.. ocv:class:: ANN_MLP::Params + + Parameters of the MLP and of the training algorithm. You can initialize the structure by a constructor or the individual parameters can be adjusted after the structure is created. + + The network structure: + + .. ocv:member:: Mat layerSizes + + The number of elements in each layer of network. The very first element specifies the number of elements in the input layer. The last element - number of elements in the output layer. + + .. ocv:member:: int activateFunc + + The activation function. Currently the only fully supported activation function is ``ANN_MLP::SIGMOID_SYM``. + + .. ocv:member:: double fparam1 + + The first parameter of activation function, 0 by default. + + .. ocv:member:: double fparam2 + + The second parameter of the activation function, 0 by default. + + .. note:: + + If you are using the default ``ANN_MLP::SIGMOID_SYM`` activation function with the default parameter values fparam1=0 and fparam2=0 then the function used is y = 1.7159*tanh(2/3 * x), so the output will range from [-1.7159, 1.7159], instead of [0,1]. The back-propagation algorithm parameters: - .. ocv:member:: double bp_dw_scale + .. ocv:member:: double bpDWScale Strength of the weight gradient term. The recommended value is about 0.1. - .. ocv:member:: double bp_moment_scale + .. ocv:member:: double bpMomentScale Strength of the momentum term (the difference between weights on the 2 previous iterations). This parameter provides some inertia to smooth the random fluctuations of the weights. It can vary from 0 (the feature is disabled) to 1 and beyond. The value 0.1 or so is good enough The RPROP algorithm parameters (see [RPROP93]_ for details): - .. ocv:member:: double rp_dw0 + .. ocv:member:: double prDW0 Initial value :math:`\Delta_0` of update-values :math:`\Delta_{ij}`. - .. ocv:member:: double rp_dw_plus + .. ocv:member:: double rpDWPlus Increase factor :math:`\eta^+`. It must be >1. - .. ocv:member:: double rp_dw_minus + .. ocv:member:: double rpDWMinus Decrease factor :math:`\eta^-`. It must be <1. - .. ocv:member:: double rp_dw_min + .. ocv:member:: double rpDWMin Update-values lower limit :math:`\Delta_{min}`. It must be positive. - .. ocv:member:: double rp_dw_max + .. ocv:member:: double rpDWMax Update-values upper limit :math:`\Delta_{max}`. It must be >1. -CvANN_MLP_TrainParams::CvANN_MLP_TrainParams +ANN_MLP::Params::Params -------------------------------------------- -The constructors. +Construct the parameter structure + +.. ocv:function:: ANN_MLP::Params() + +.. ocv:function:: ANN_MLP::Params::Params( const Mat& layerSizes, int activateFunc, double fparam1, double fparam2, TermCriteria termCrit, int trainMethod, double param1, double param2=0 ) + + :param layerSizes: Integer vector specifying the number of neurons in each layer including the input and output layers. -.. ocv:function:: CvANN_MLP_TrainParams::CvANN_MLP_TrainParams() + :param activateFunc: Parameter specifying the activation function for each neuron: one of ``ANN_MLP::IDENTITY``, ``ANN_MLP::SIGMOID_SYM``, and ``ANN_MLP::GAUSSIAN``. -.. ocv:function:: CvANN_MLP_TrainParams::CvANN_MLP_TrainParams( CvTermCriteria term_crit, int train_method, double param1, double param2=0 ) + :param fparam1: The first parameter of the activation function, :math:`\alpha`. See the formulas in the introduction section. - :param term_crit: Termination criteria of the training algorithm. You can specify the maximum number of iterations (``max_iter``) and/or how much the error could change between the iterations to make the algorithm continue (``epsilon``). + :param fparam2: The second parameter of the activation function, :math:`\beta`. See the formulas in the introduction section. + + :param termCrit: Termination criteria of the training algorithm. You can specify the maximum number of iterations (``maxCount``) and/or how much the error could change between the iterations to make the algorithm continue (``epsilon``). :param train_method: Training method of the MLP. Possible values are: - * **CvANN_MLP_TrainParams::BACKPROP** The back-propagation algorithm. + * **ANN_MLP_TrainParams::BACKPROP** The back-propagation algorithm. - * **CvANN_MLP_TrainParams::RPROP** The RPROP algorithm. + * **ANN_MLP_TrainParams::RPROP** The RPROP algorithm. :param param1: Parameter of the training method. It is ``rp_dw0`` for ``RPROP`` and ``bp_dw_scale`` for ``BACKPROP``. @@ -158,126 +188,54 @@ By default the RPROP algorithm is used: :: - CvANN_MLP_TrainParams::CvANN_MLP_TrainParams() + ANN_MLP_TrainParams::ANN_MLP_TrainParams() { - term_crit = cvTermCriteria( CV_TERMCRIT_ITER + CV_TERMCRIT_EPS, 1000, 0.01 ); + layerSizes = Mat(); + activateFun = SIGMOID_SYM; + fparam1 = fparam2 = 0; + term_crit = TermCriteria( TermCriteria::MAX_ITER + TermCriteria::EPS, 1000, 0.01 ); train_method = RPROP; - bp_dw_scale = bp_moment_scale = 0.1; - rp_dw0 = 0.1; rp_dw_plus = 1.2; rp_dw_minus = 0.5; - rp_dw_min = FLT_EPSILON; rp_dw_max = 50.; + bpDWScale = bpMomentScale = 0.1; + rpDW0 = 0.1; rpDWPlus = 1.2; rpDWMinus = 0.5; + rpDWMin = FLT_EPSILON; rpDWMax = 50.; } -CvANN_MLP +ANN_MLP --------- -.. ocv:class:: CvANN_MLP : public CvStatModel +.. ocv:class:: ANN_MLP : public StatModel MLP model. -Unlike many other models in ML that are constructed and trained at once, in the MLP model these steps are separated. First, a network with the specified topology is created using the non-default constructor or the method :ocv:func:`CvANN_MLP::create`. All the weights are set to zeros. Then, the network is trained using a set of input and output vectors. The training procedure can be repeated more than once, that is, the weights can be adjusted based on the new training data. +Unlike many other models in ML that are constructed and trained at once, in the MLP model these steps are separated. First, a network with the specified topology is created using the non-default constructor or the method :ocv:func:`ANN_MLP::create`. All the weights are set to zeros. Then, the network is trained using a set of input and output vectors. The training procedure can be repeated more than once, that is, the weights can be adjusted based on the new training data. -CvANN_MLP::CvANN_MLP +ANN_MLP::create -------------------- -The constructors. - -.. ocv:function:: CvANN_MLP::CvANN_MLP() - -.. ocv:function:: CvANN_MLP::CvANN_MLP( const CvMat* layerSizes, int activateFunc=CvANN_MLP::SIGMOID_SYM, double fparam1=0, double fparam2=0 ) - -.. ocv:pyfunction:: cv2.ANN_MLP([layerSizes[, activateFunc[, fparam1[, fparam2]]]]) -> - -The advanced constructor allows to create MLP with the specified topology. See :ocv:func:`CvANN_MLP::create` for details. - -CvANN_MLP::create ------------------ -Constructs MLP with the specified topology. - -.. ocv:function:: void CvANN_MLP::create( const Mat& layerSizes, int activateFunc=CvANN_MLP::SIGMOID_SYM, double fparam1=0, double fparam2=0 ) - -.. ocv:function:: void CvANN_MLP::create( const CvMat* layerSizes, int activateFunc=CvANN_MLP::SIGMOID_SYM, double fparam1=0, double fparam2=0 ) - -.. ocv:pyfunction:: cv2.ANN_MLP.create(layerSizes[, activateFunc[, fparam1[, fparam2]]]) -> None - - :param layerSizes: Integer vector specifying the number of neurons in each layer including the input and output layers. - - :param activateFunc: Parameter specifying the activation function for each neuron: one of ``CvANN_MLP::IDENTITY``, ``CvANN_MLP::SIGMOID_SYM``, and ``CvANN_MLP::GAUSSIAN``. - - :param fparam1: Free parameter of the activation function, :math:`\alpha`. See the formulas in the introduction section. - - :param fparam2: Free parameter of the activation function, :math:`\beta`. See the formulas in the introduction section. - -The method creates an MLP network with the specified topology and assigns the same activation function to all the neurons. - -CvANN_MLP::train ----------------- -Trains/updates MLP. - -.. ocv:function:: int CvANN_MLP::train( const Mat& inputs, const Mat& outputs, const Mat& sampleWeights, const Mat& sampleIdx=Mat(), CvANN_MLP_TrainParams params = CvANN_MLP_TrainParams(), int flags=0 ) - -.. ocv:function:: int CvANN_MLP::train( const CvMat* inputs, const CvMat* outputs, const CvMat* sampleWeights, const CvMat* sampleIdx=0, CvANN_MLP_TrainParams params = CvANN_MLP_TrainParams(), int flags=0 ) - -.. ocv:pyfunction:: cv2.ANN_MLP.train(inputs, outputs, sampleWeights[, sampleIdx[, params[, flags]]]) -> retval - - :param inputs: Floating-point matrix of input vectors, one vector per row. - - :param outputs: Floating-point matrix of the corresponding output vectors, one vector per row. - - :param sampleWeights: (RPROP only) Optional floating-point vector of weights for each sample. Some samples may be more important than others for training. You may want to raise the weight of certain classes to find the right balance between hit-rate and false-alarm rate, and so on. - - :param sampleIdx: Optional integer vector indicating the samples (rows of ``inputs`` and ``outputs``) that are taken into account. - - :param params: Training parameters. See the :ocv:class:`CvANN_MLP_TrainParams` description. - - :param flags: Various parameters to control the training algorithm. A combination of the following parameters is possible: - - * **UPDATE_WEIGHTS** Algorithm updates the network weights, rather than computes them from scratch. In the latter case the weights are initialized using the Nguyen-Widrow algorithm. - - * **NO_INPUT_SCALE** Algorithm does not normalize the input vectors. If this flag is not set, the training algorithm normalizes each input feature independently, shifting its mean value to 0 and making the standard deviation equal to 1. If the network is assumed to be updated frequently, the new training data could be much different from original one. In this case, you should take care of proper normalization. - - * **NO_OUTPUT_SCALE** Algorithm does not normalize the output vectors. If the flag is not set, the training algorithm normalizes each output feature independently, by transforming it to the certain range depending on the used activation function. - -This method applies the specified training algorithm to computing/adjusting the network weights. It returns the number of done iterations. - -The RPROP training algorithm is parallelized with the TBB library. - -If you are using the default ``cvANN_MLP::SIGMOID_SYM`` activation function then the output should be in the range [-1,1], instead of [0,1], for optimal results. - -CvANN_MLP::predict ------------------- -Predicts responses for input samples. - -.. ocv:function:: float CvANN_MLP::predict( const Mat& inputs, Mat& outputs ) const - -.. ocv:function:: float CvANN_MLP::predict( const CvMat* inputs, CvMat* outputs ) const - -.. ocv:pyfunction:: cv2.ANN_MLP.predict(inputs[, outputs]) -> retval, outputs +Creates empty model - :param inputs: Input samples. +.. ocv:function:: Ptr ANN_MLP::create(const Params& params=Params()) - :param outputs: Predicted responses for corresponding samples. +Use ``StatModel::train`` to train the model, ``StatModel::train(traindata, params)`` to create and train the model, ``StatModel::load(filename)`` to load the pre-trained model. Note that the train method has optional flags, and the following flags are handled by ``ANN_MLP``: -The method returns a dummy value which should be ignored. + * **UPDATE_WEIGHTS** Algorithm updates the network weights, rather than computes them from scratch. In the latter case the weights are initialized using the Nguyen-Widrow algorithm. -If you are using the default ``cvANN_MLP::SIGMOID_SYM`` activation function with the default parameter values fparam1=0 and fparam2=0 then the function used is y = 1.7159*tanh(2/3 * x), so the output will range from [-1.7159, 1.7159], instead of [0,1]. + * **NO_INPUT_SCALE** Algorithm does not normalize the input vectors. If this flag is not set, the training algorithm normalizes each input feature independently, shifting its mean value to 0 and making the standard deviation equal to 1. If the network is assumed to be updated frequently, the new training data could be much different from original one. In this case, you should take care of proper normalization. -CvANN_MLP::get_layer_count --------------------------- -Returns the number of layers in the MLP. + * **NO_OUTPUT_SCALE** Algorithm does not normalize the output vectors. If the flag is not set, the training algorithm normalizes each output feature independently, by transforming it to the certain range depending on the used activation function. -.. ocv:function:: int CvANN_MLP::get_layer_count() -CvANN_MLP::get_layer_sizes --------------------------- -Returns numbers of neurons in each layer of the MLP. +ANN_MLP::setParams +------------------- +Sets the new network parameters -.. ocv:function:: const CvMat* CvANN_MLP::get_layer_sizes() +.. ocv:function:: void ANN_MLP::setParams(const Params& params) -The method returns the integer vector specifying the number of neurons in each layer including the input and output layers of the MLP. + :param params: The new parameters -CvANN_MLP::get_weights ----------------------- -Returns neurons weights of the particular layer. +The existing network, if any, will be destroyed and new empty one will be created. It should be re-trained after that. -.. ocv:function:: double* CvANN_MLP::get_weights(int layer) +ANN_MLP::getParams +------------------- +Retrieves the current network parameters - :param layer: Index of the particular layer. +.. ocv:function:: Params ANN_MLP::getParams() const diff --git a/modules/ml/doc/normal_bayes_classifier.rst b/modules/ml/doc/normal_bayes_classifier.rst index dbd6ae229c..e3aba21c32 100644 --- a/modules/ml/doc/normal_bayes_classifier.rst +++ b/modules/ml/doc/normal_bayes_classifier.rst @@ -9,55 +9,26 @@ This simple classification model assumes that feature vectors from each class ar .. [Fukunaga90] K. Fukunaga. *Introduction to Statistical Pattern Recognition*. second ed., New York: Academic Press, 1990. -CvNormalBayesClassifier +NormalBayesClassifier ----------------------- -.. ocv:class:: CvNormalBayesClassifier : public CvStatModel +.. ocv:class:: NormalBayesClassifier : public StatModel Bayes classifier for normally distributed data. -CvNormalBayesClassifier::CvNormalBayesClassifier ------------------------------------------------- -Default and training constructors. +NormalBayesClassifier::create +----------------------------- +Creates empty model -.. ocv:function:: CvNormalBayesClassifier::CvNormalBayesClassifier() +.. ocv:function:: Ptr NormalBayesClassifier::create(const NormalBayesClassifier::Params& params=Params()) -.. ocv:function:: CvNormalBayesClassifier::CvNormalBayesClassifier( const Mat& trainData, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat() ) + :param params: The model parameters. There is none so far, the structure is used as a placeholder for possible extensions. -.. ocv:function:: CvNormalBayesClassifier::CvNormalBayesClassifier( const CvMat* trainData, const CvMat* responses, const CvMat* varIdx=0, const CvMat* sampleIdx=0 ) +Use ``StatModel::train`` to train the model, ``StatModel::train(traindata, params)`` to create and train the model, ``StatModel::load(filename)`` to load the pre-trained model. -.. ocv:pyfunction:: cv2.NormalBayesClassifier([trainData, responses[, varIdx[, sampleIdx]]]) -> - -The constructors follow conventions of :ocv:func:`CvStatModel::CvStatModel`. See :ocv:func:`CvStatModel::train` for parameters descriptions. - -CvNormalBayesClassifier::train ------------------------------- -Trains the model. - -.. ocv:function:: bool CvNormalBayesClassifier::train( const Mat& trainData, const Mat& responses, const Mat& varIdx = Mat(), const Mat& sampleIdx=Mat(), bool update=false ) - -.. ocv:function:: bool CvNormalBayesClassifier::train( const CvMat* trainData, const CvMat* responses, const CvMat* varIdx = 0, const CvMat* sampleIdx=0, bool update=false ) - -.. ocv:pyfunction:: cv2.NormalBayesClassifier.train(trainData, responses[, varIdx[, sampleIdx[, update]]]) -> retval - - :param update: Identifies whether the model should be trained from scratch (``update=false``) or should be updated using the new training data (``update=true``). - -The method trains the Normal Bayes classifier. It follows the conventions of the generic :ocv:func:`CvStatModel::train` approach with the following limitations: - -* Only ``CV_ROW_SAMPLE`` data layout is supported. -* Input variables are all ordered. -* Output variable is categorical , which means that elements of ``responses`` must be integer numbers, though the vector may have the ``CV_32FC1`` type. -* Missing measurements are not supported. - -CvNormalBayesClassifier::predict --------------------------------- +NormalBayesClassifier::predictProb +---------------------------------- Predicts the response for sample(s). -.. ocv:function:: float CvNormalBayesClassifier::predict( const Mat& samples, Mat* results=0, Mat* results_prob=0 ) const - -.. ocv:function:: float CvNormalBayesClassifier::predict( const CvMat* samples, CvMat* results=0, CvMat* results_prob=0 ) const - -.. ocv:pyfunction:: cv2.NormalBayesClassifier.predict(samples) -> retval, results - -The method estimates the most probable classes for input vectors. Input vectors (one or more) are stored as rows of the matrix ``samples``. In case of multiple input vectors, there should be one output vector ``results``. The predicted class for a single input vector is returned by the method. The vector ``results_prob`` contains the output probabilities coresponding to each element of ``result``. +.. ocv:function:: float NormalBayesClassifier::predictProb( InputArray inputs, OutputArray outputs, OutputArray outputProbs, int flags=0 ) const -The function is parallelized with the TBB library. +The method estimates the most probable classes for input vectors. Input vectors (one or more) are stored as rows of the matrix ``inputs``. In case of multiple input vectors, there should be one output vector ``outputs``. The predicted class for a single input vector is returned by the method. The vector ``outputProbs`` contains the output probabilities corresponding to each element of ``result``. diff --git a/modules/ml/doc/random_trees.rst b/modules/ml/doc/random_trees.rst index 8d7911d368..3b851261e9 100644 --- a/modules/ml/doc/random_trees.rst +++ b/modules/ml/doc/random_trees.rst @@ -40,179 +40,65 @@ For the random trees usage example, please, see letter_recog.cpp sample in OpenC * And other articles from the web site http://www.stat.berkeley.edu/users/breiman/RandomForests/cc_home.htm -CvRTParams ----------- -.. ocv:struct:: CvRTParams : public CvDTreeParams +RTrees::Params +-------------- +.. ocv:struct:: RTrees::Params : public DTrees::Params Training parameters of random trees. The set of training parameters for the forest is a superset of the training parameters for a single tree. However, random trees do not need all the functionality/features of decision trees. Most noticeably, the trees are not pruned, so the cross-validation parameters are not used. -CvRTParams::CvRTParams: +RTrees::Params::Params ----------------------- -The constructors. +The constructors -.. ocv:function:: CvRTParams::CvRTParams() +.. ocv:function:: RTrees::Params::Params() -.. ocv:function:: CvRTParams::CvRTParams( int max_depth, int min_sample_count, float regression_accuracy, bool use_surrogates, int max_categories, const float* priors, bool calc_var_importance, int nactive_vars, int max_num_of_trees_in_the_forest, float forest_accuracy, int termcrit_type ) +.. ocv:function:: RTrees::Params::Params( int maxDepth, int minSampleCount, double regressionAccuracy, bool useSurrogates, int maxCategories, const Mat& priors, bool calcVarImportance, int nactiveVars, TermCriteria termCrit ) - :param max_depth: the depth of the tree. A low value will likely underfit and conversely a high value will likely overfit. The optimal value can be obtained using cross validation or other suitable methods. + :param maxDepth: the depth of the tree. A low value will likely underfit and conversely a high value will likely overfit. The optimal value can be obtained using cross validation or other suitable methods. - :param min_sample_count: minimum samples required at a leaf node for it to be split. A reasonable value is a small percentage of the total data e.g. 1%. + :param minSampleCount: minimum samples required at a leaf node for it to be split. A reasonable value is a small percentage of the total data e.g. 1%. - :param max_categories: Cluster possible values of a categorical variable into ``K`` :math:`\leq` ``max_categories`` clusters to find a suboptimal split. If a discrete variable, on which the training procedure tries to make a split, takes more than ``max_categories`` values, the precise best subset estimation may take a very long time because the algorithm is exponential. Instead, many decision trees engines (including ML) try to find sub-optimal split in this case by clustering all the samples into ``max_categories`` clusters that is some categories are merged together. The clustering is applied only in ``n``>2-class classification problems for categorical variables with ``N > max_categories`` possible values. In case of regression and 2-class classification the optimal split can be found efficiently without employing clustering, thus the parameter is not used in these cases. + :param maxCategories: Cluster possible values of a categorical variable into ``K <= maxCategories`` clusters to find a suboptimal split. If a discrete variable, on which the training procedure tries to make a split, takes more than ``max_categories`` values, the precise best subset estimation may take a very long time because the algorithm is exponential. Instead, many decision trees engines (including ML) try to find sub-optimal split in this case by clustering all the samples into ``maxCategories`` clusters that is some categories are merged together. The clustering is applied only in ``n``>2-class classification problems for categorical variables with ``N > max_categories`` possible values. In case of regression and 2-class classification the optimal split can be found efficiently without employing clustering, thus the parameter is not used in these cases. - :param calc_var_importance: If true then variable importance will be calculated and then it can be retrieved by :ocv:func:`CvRTrees::get_var_importance`. + :param calcVarImportance: If true then variable importance will be calculated and then it can be retrieved by ``RTrees::getVarImportance``. - :param nactive_vars: The size of the randomly selected subset of features at each tree node and that are used to find the best split(s). If you set it to 0 then the size will be set to the square root of the total number of features. + :param nactiveVars: The size of the randomly selected subset of features at each tree node and that are used to find the best split(s). If you set it to 0 then the size will be set to the square root of the total number of features. - :param max_num_of_trees_in_the_forest: The maximum number of trees in the forest (surprise, surprise). Typically the more trees you have the better the accuracy. However, the improvement in accuracy generally diminishes and asymptotes pass a certain number of trees. Also to keep in mind, the number of tree increases the prediction time linearly. - - :param forest_accuracy: Sufficient accuracy (OOB error). - - :param termcrit_type: The type of the termination criteria: - - * **CV_TERMCRIT_ITER** Terminate learning by the ``max_num_of_trees_in_the_forest``; - - * **CV_TERMCRIT_EPS** Terminate learning by the ``forest_accuracy``; - - * **CV_TERMCRIT_ITER | CV_TERMCRIT_EPS** Use both termination criteria. - -For meaning of other parameters see :ocv:func:`CvDTreeParams::CvDTreeParams`. + :param termCrit: The termination criteria that specifies when the training algorithm stops - either when the specified number of trees is trained and added to the ensemble or when sufficient accuracy (measured as OOB error) is achieved. Typically the more trees you have the better the accuracy. However, the improvement in accuracy generally diminishes and asymptotes pass a certain number of trees. Also to keep in mind, the number of tree increases the prediction time linearly. The default constructor sets all parameters to default values which are different from default values of :ocv:class:`CvDTreeParams`: :: - CvRTParams::CvRTParams() : CvDTreeParams( 5, 10, 0, false, 10, 0, false, false, 0 ), - calc_var_importance(false), nactive_vars(0) + RTrees::Params::Params() : DTrees::Params( 5, 10, 0, false, 10, 0, false, false, Mat() ), + calcVarImportance(false), nactiveVars(0) { - term_crit = cvTermCriteria( CV_TERMCRIT_ITER+CV_TERMCRIT_EPS, 50, 0.1 ); + termCrit = cvTermCriteria( TermCriteria::MAX_ITERS + TermCriteria::EPS, 50, 0.1 ); } -CvRTrees +RTrees -------- -.. ocv:class:: CvRTrees : public CvStatModel +.. ocv:class:: RTrees : public DTrees The class implements the random forest predictor as described in the beginning of this section. -CvRTrees::train +RTrees::create --------------- -Trains the Random Trees model. - -.. ocv:function:: bool CvRTrees::train( const Mat& trainData, int tflag, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat(), const Mat& varType=Mat(), const Mat& missingDataMask=Mat(), CvRTParams params=CvRTParams() ) - -.. ocv:function:: bool CvRTrees::train( const CvMat* trainData, int tflag, const CvMat* responses, const CvMat* varIdx=0, const CvMat* sampleIdx=0, const CvMat* varType=0, const CvMat* missingDataMask=0, CvRTParams params=CvRTParams() ) - -.. ocv:function:: bool CvRTrees::train( CvMLData* data, CvRTParams params=CvRTParams() ) - -.. ocv:pyfunction:: cv2.RTrees.train(trainData, tflag, responses[, varIdx[, sampleIdx[, varType[, missingDataMask[, params]]]]]) -> retval - -The method :ocv:func:`CvRTrees::train` is very similar to the method :ocv:func:`CvDTree::train` and follows the generic method :ocv:func:`CvStatModel::train` conventions. All the parameters specific to the algorithm training are passed as a :ocv:class:`CvRTParams` instance. The estimate of the training error (``oob-error``) is stored in the protected class member ``oob_error``. - -The function is parallelized with the TBB library. - -CvRTrees::predict ------------------ -Predicts the output for an input sample. - -.. ocv:function:: float CvRTrees::predict( const Mat& sample, const Mat& missing=Mat() ) const +Creates the empty model -.. ocv:function:: float CvRTrees::predict( const CvMat* sample, const CvMat* missing = 0 ) const +.. ocv:function:: bool RTrees::create(const RTrees::Params& params=Params()) -.. ocv:pyfunction:: cv2.RTrees.predict(sample[, missing]) -> retval +Use ``StatModel::train`` to train the model, ``StatModel::train(traindata, params)`` to create and train the model, ``StatModel::load(filename)`` to load the pre-trained model. - :param sample: Sample for classification. - - :param missing: Optional missing measurement mask of the sample. - -The input parameters of the prediction method are the same as in :ocv:func:`CvDTree::predict` but the return value type is different. This method returns the cumulative result from all the trees in the forest (the class that receives the majority of voices, or the mean of the regression function estimates). - - -CvRTrees::predict_prob ----------------------- -Returns a fuzzy-predicted class label. - -.. ocv:function:: float CvRTrees::predict_prob( const cv::Mat& sample, const cv::Mat& missing = cv::Mat() ) const - -.. ocv:function:: float CvRTrees::predict_prob( const CvMat* sample, const CvMat* missing = 0 ) const - -.. ocv:pyfunction:: cv2.RTrees.predict_prob(sample[, missing]) -> retval - - :param sample: Sample for classification. - - :param missing: Optional missing measurement mask of the sample. - -The function works for binary classification problems only. It returns the number between 0 and 1. This number represents probability or confidence of the sample belonging to the second class. It is calculated as the proportion of decision trees that classified the sample to the second class. - - -CvRTrees::getVarImportance +RTrees::getVarImportance ---------------------------- Returns the variable importance array. -.. ocv:function:: Mat CvRTrees::getVarImportance() - -.. ocv:function:: const CvMat* CvRTrees::get_var_importance() - -.. ocv:pyfunction:: cv2.RTrees.getVarImportance() -> retval - -The method returns the variable importance vector, computed at the training stage when ``CvRTParams::calc_var_importance`` is set to true. If this flag was set to false, the ``NULL`` pointer is returned. This differs from the decision trees where variable importance can be computed anytime after the training. - - -CvRTrees::get_proximity ------------------------ -Retrieves the proximity measure between two training samples. - -.. ocv:function:: float CvRTrees::get_proximity( const CvMat* sample1, const CvMat* sample2, const CvMat* missing1 = 0, const CvMat* missing2 = 0 ) const - - :param sample1: The first sample. - - :param sample2: The second sample. - - :param missing1: Optional missing measurement mask of the first sample. - - :param missing2: Optional missing measurement mask of the second sample. - -The method returns proximity measure between any two samples. This is a ratio of those trees in the ensemble, in which the samples fall into the same leaf node, to the total number of the trees. - -CvRTrees::calc_error --------------------- -Returns error of the random forest. - -.. ocv:function:: float CvRTrees::calc_error( CvMLData* data, int type, std::vector* resp=0 ) - -The method is identical to :ocv:func:`CvDTree::calc_error` but uses the random forest as predictor. - - -CvRTrees::get_train_error -------------------------- -Returns the train error. - -.. ocv:function:: float CvRTrees::get_train_error() - -The method works for classification problems only. It returns the proportion of incorrectly classified train samples. - - -CvRTrees::get_rng ------------------ -Returns the state of the used random number generator. - -.. ocv:function:: CvRNG* CvRTrees::get_rng() - - -CvRTrees::get_tree_count ------------------------- -Returns the number of trees in the constructed random forest. - -.. ocv:function:: int CvRTrees::get_tree_count() const - - -CvRTrees::get_tree ------------------- -Returns the specific decision tree in the constructed random forest. +.. ocv:function:: Mat RTrees::getVarImportance() const -.. ocv:function:: CvForestTree* CvRTrees::get_tree(int i) const +The method returns the variable importance vector, computed at the training stage when ``RTParams::calcVarImportance`` is set to true. If this flag was set to false, the empty matrix is returned. - :param i: Index of the decision tree. diff --git a/modules/ml/doc/support_vector_machines.rst b/modules/ml/doc/support_vector_machines.rst index 9793bd6e3f..003ec4dc6a 100644 --- a/modules/ml/doc/support_vector_machines.rst +++ b/modules/ml/doc/support_vector_machines.rst @@ -14,21 +14,21 @@ SVM implementation in OpenCV is based on [LibSVM]_. .. [LibSVM] C.-C. Chang and C.-J. Lin. *LIBSVM: a library for support vector machines*, ACM Transactions on Intelligent Systems and Technology, 2:27:1--27:27, 2011. (http://www.csie.ntu.edu.tw/~cjlin/papers/libsvm.pdf) -CvParamGrid +ParamGrid ----------- -.. ocv:struct:: CvParamGrid +.. ocv:class:: ParamGrid The structure represents the logarithmic grid range of statmodel parameters. It is used for optimizing statmodel accuracy by varying model parameters, the accuracy estimate being computed by cross-validation. - .. ocv:member:: double CvParamGrid::min_val + .. ocv:member:: double ParamGrid::minVal Minimum value of the statmodel parameter. - .. ocv:member:: double CvParamGrid::max_val + .. ocv:member:: double ParamGrid::maxVal Maximum value of the statmodel parameter. - .. ocv:member:: double CvParamGrid::step + .. ocv:member:: double ParamGrid::logStep Logarithmic step for iterating the statmodel parameter. @@ -36,88 +36,78 @@ The grid determines the following iteration sequence of the statmodel parameter .. math:: - (min\_val, min\_val*step, min\_val*{step}^2, \dots, min\_val*{step}^n), + (minVal, minVal*step, minVal*{step}^2, \dots, minVal*{logStep}^n), where :math:`n` is the maximal index satisfying .. math:: - \texttt{min\_val} * \texttt{step} ^n < \texttt{max\_val} + \texttt{minVal} * \texttt{logStep} ^n < \texttt{maxVal} -The grid is logarithmic, so ``step`` must always be greater then 1. +The grid is logarithmic, so ``logStep`` must always be greater then 1. -CvParamGrid::CvParamGrid +ParamGrid::ParamGrid ------------------------ The constructors. -.. ocv:function:: CvParamGrid::CvParamGrid() +.. ocv:function:: ParamGrid::ParamGrid() -.. ocv:function:: CvParamGrid::CvParamGrid( double min_val, double max_val, double log_step ) +.. ocv:function:: ParamGrid::ParamGrid( double minVal, double maxVal, double logStep ) The full constructor initializes corresponding members. The default constructor creates a dummy grid: :: - CvParamGrid::CvParamGrid() + ParamGrid::ParamGrid() { - min_val = max_val = step = 0; + minVal = maxVal = 0; + logStep = 1; } -CvParamGrid::check ------------------- -Checks validness of the grid. -.. ocv:function:: bool CvParamGrid::check() - -Returns ``true`` if the grid is valid and ``false`` otherwise. The grid is valid if and only if: - -* Lower bound of the grid is less then the upper one. -* Lower bound of the grid is positive. -* Grid step is greater then 1. - -CvSVMParams +SVM::Params ----------- -.. ocv:struct:: CvSVMParams +.. ocv:class:: SVM::Params SVM training parameters. -The structure must be initialized and passed to the training method of :ocv:class:`CvSVM`. +The structure must be initialized and passed to the training method of :ocv:class:`SVM`. -CvSVMParams::CvSVMParams +SVM::Params::Params ------------------------ -The constructors. +The constructors -.. ocv:function:: CvSVMParams::CvSVMParams() +.. ocv:function:: SVM::Params::Params() -.. ocv:function:: CvSVMParams::CvSVMParams( int svm_type, int kernel_type, double degree, double gamma, double coef0, double Cvalue, double nu, double p, CvMat* class_weights, CvTermCriteria term_crit ) +.. ocv:function:: SVM::Params::Params( int svmType, int kernelType, double degree, double gamma, double coef0, double Cvalue, double nu, double p, const Mat& classWeights, TermCriteria termCrit ) - :param svm_type: Type of a SVM formulation. Possible values are: + :param svmType: Type of a SVM formulation. Possible values are: - * **CvSVM::C_SVC** C-Support Vector Classification. ``n``-class classification (``n`` :math:`\geq` 2), allows imperfect separation of classes with penalty multiplier ``C`` for outliers. + * **SVM::C_SVC** C-Support Vector Classification. ``n``-class classification (``n`` :math:`\geq` 2), allows imperfect separation of classes with penalty multiplier ``C`` for outliers. - * **CvSVM::NU_SVC** :math:`\nu`-Support Vector Classification. ``n``-class classification with possible imperfect separation. Parameter :math:`\nu` (in the range 0..1, the larger the value, the smoother the decision boundary) is used instead of ``C``. + * **SVM::NU_SVC** :math:`\nu`-Support Vector Classification. ``n``-class classification with possible imperfect separation. Parameter :math:`\nu` (in the range 0..1, the larger the value, the smoother the decision boundary) is used instead of ``C``. - * **CvSVM::ONE_CLASS** Distribution Estimation (One-class SVM). All the training data are from the same class, SVM builds a boundary that separates the class from the rest of the feature space. + * **SVM::ONE_CLASS** Distribution Estimation (One-class SVM). All the training data are from the same class, SVM builds a boundary that separates the class from the rest of the feature space. - * **CvSVM::EPS_SVR** :math:`\epsilon`-Support Vector Regression. The distance between feature vectors from the training set and the fitting hyper-plane must be less than ``p``. For outliers the penalty multiplier ``C`` is used. + * **SVM::EPS_SVR** :math:`\epsilon`-Support Vector Regression. The distance between feature vectors from the training set and the fitting hyper-plane must be less than ``p``. For outliers the penalty multiplier ``C`` is used. - * **CvSVM::NU_SVR** :math:`\nu`-Support Vector Regression. :math:`\nu` is used instead of ``p``. + * **SVM::NU_SVR** :math:`\nu`-Support Vector Regression. :math:`\nu` is used instead of ``p``. See [LibSVM]_ for details. - :param kernel_type: Type of a SVM kernel. Possible values are: + :param kernelType: Type of a SVM kernel. Possible values are: - * **CvSVM::LINEAR** Linear kernel. No mapping is done, linear discrimination (or regression) is done in the original feature space. It is the fastest option. :math:`K(x_i, x_j) = x_i^T x_j`. + * **SVM::LINEAR** Linear kernel. No mapping is done, linear discrimination (or regression) is done in the original feature space. It is the fastest option. :math:`K(x_i, x_j) = x_i^T x_j`. - * **CvSVM::POLY** Polynomial kernel: :math:`K(x_i, x_j) = (\gamma x_i^T x_j + coef0)^{degree}, \gamma > 0`. + * **SVM::POLY** Polynomial kernel: :math:`K(x_i, x_j) = (\gamma x_i^T x_j + coef0)^{degree}, \gamma > 0`. - * **CvSVM::RBF** Radial basis function (RBF), a good choice in most cases. :math:`K(x_i, x_j) = e^{-\gamma ||x_i - x_j||^2}, \gamma > 0`. + * **SVM::RBF** Radial basis function (RBF), a good choice in most cases. :math:`K(x_i, x_j) = e^{-\gamma ||x_i - x_j||^2}, \gamma > 0`. - * **CvSVM::SIGMOID** Sigmoid kernel: :math:`K(x_i, x_j) = \tanh(\gamma x_i^T x_j + coef0)`. + * **SVM::SIGMOID** Sigmoid kernel: :math:`K(x_i, x_j) = \tanh(\gamma x_i^T x_j + coef0)`. - * **CvSVM::CHI2** Exponential Chi2 kernel, similar to the RBF kernel: :math:`K(x_i, x_j) = e^{-\gamma \chi^2(x_i,x_j)}, \chi^2(x_i,x_j) = (x_i-x_j)^2/(x_i+x_j), \gamma > 0`. + * **SVM::CHI2** Exponential Chi2 kernel, similar to the RBF kernel: :math:`K(x_i, x_j) = e^{-\gamma \chi^2(x_i,x_j)}, \chi^2(x_i,x_j) = (x_i-x_j)^2/(x_i+x_j), \gamma > 0`. - * **CvSVM::INTER** Histogram intersection kernel. A fast kernel. :math:`K(x_i, x_j) = min(x_i,x_j)`. + * **SVM::INTER** Histogram intersection kernel. A fast kernel. :math:`K(x_i, x_j) = min(x_i,x_j)`. :param degree: Parameter ``degree`` of a kernel function (POLY). @@ -131,19 +121,19 @@ The constructors. :param p: Parameter :math:`\epsilon` of a SVM optimization problem (EPS_SVR). - :param class_weights: Optional weights in the C_SVC problem , assigned to particular classes. They are multiplied by ``C`` so the parameter ``C`` of class ``#i`` becomes :math:`class\_weights_i * C`. Thus these weights affect the misclassification penalty for different classes. The larger weight, the larger penalty on misclassification of data from the corresponding class. + :param classWeights: Optional weights in the C_SVC problem , assigned to particular classes. They are multiplied by ``C`` so the parameter ``C`` of class ``#i`` becomes ``classWeights(i) * C``. Thus these weights affect the misclassification penalty for different classes. The larger weight, the larger penalty on misclassification of data from the corresponding class. - :param term_crit: Termination criteria of the iterative SVM training procedure which solves a partial case of constrained quadratic optimization problem. You can specify tolerance and/or the maximum number of iterations. + :param termCrit: Termination criteria of the iterative SVM training procedure which solves a partial case of constrained quadratic optimization problem. You can specify tolerance and/or the maximum number of iterations. The default constructor initialize the structure with following values: :: - CvSVMParams::CvSVMParams() : - svm_type(CvSVM::C_SVC), kernel_type(CvSVM::RBF), degree(0), - gamma(1), coef0(0), C(1), nu(0), p(0), class_weights(0) + SVMParams::SVMParams() : + svmType(SVM::C_SVC), kernelType(SVM::RBF), degree(0), + gamma(1), coef0(0), C(1), nu(0), p(0), classWeights(0) { - term_crit = cvTermCriteria( CV_TERMCRIT_ITER+CV_TERMCRIT_EPS, 1000, FLT_EPSILON ); + termCrit = TermCriteria( TermCriteria::MAX_ITER+TermCriteria::EPS, 1000, FLT_EPSILON ); } A comparison of different kernels on the following 2D test case with four classes. Four C_SVC SVMs have been trained (one against rest) with auto_train. Evaluation on three different kernels (CHI2, INTER, RBF). The color depicts the class with max score. Bright means max-score > 0, dark means max-score < 0. @@ -151,10 +141,9 @@ A comparison of different kernels on the following 2D test case with four classe .. image:: pics/SVM_Comparison.png - -CvSVM +SVM ----- -.. ocv:class:: CvSVM : public CvStatModel +.. ocv:class:: SVM : public StatModel Support Vector Machines. @@ -164,55 +153,27 @@ Support Vector Machines. * (Python) An example of grid search digit recognition using SVM can be found at opencv_source/samples/python2/digits_adjust.py * (Python) An example of video digit recognition using SVM can be found at opencv_source/samples/python2/digits_video.py -CvSVM::CvSVM ------------- -Default and training constructors. - -.. ocv:function:: CvSVM::CvSVM() - -.. ocv:function:: CvSVM::CvSVM( const Mat& trainData, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat(), CvSVMParams params=CvSVMParams() ) - -.. ocv:function:: CvSVM::CvSVM( const CvMat* trainData, const CvMat* responses, const CvMat* varIdx=0, const CvMat* sampleIdx=0, CvSVMParams params=CvSVMParams() ) - -.. ocv:pyfunction:: cv2.SVM([trainData, responses[, varIdx[, sampleIdx[, params]]]]) -> - -The constructors follow conventions of :ocv:func:`CvStatModel::CvStatModel`. See :ocv:func:`CvStatModel::train` for parameters descriptions. - -CvSVM::train +SVM::create ------------ -Trains an SVM. - -.. ocv:function:: bool CvSVM::train( const Mat& trainData, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat(), CvSVMParams params=CvSVMParams() ) - -.. ocv:function:: bool CvSVM::train( const CvMat* trainData, const CvMat* responses, const CvMat* varIdx=0, const CvMat* sampleIdx=0, CvSVMParams params=CvSVMParams() ) - -.. ocv:pyfunction:: cv2.SVM.train(trainData, responses[, varIdx[, sampleIdx[, params]]]) -> retval - -The method trains the SVM model. It follows the conventions of the generic :ocv:func:`CvStatModel::train` approach with the following limitations: - -* Only the ``CV_ROW_SAMPLE`` data layout is supported. - -* Input variables are all ordered. +Creates empty model -* Output variables can be either categorical (``params.svm_type=CvSVM::C_SVC`` or ``params.svm_type=CvSVM::NU_SVC``), or ordered (``params.svm_type=CvSVM::EPS_SVR`` or ``params.svm_type=CvSVM::NU_SVR``), or not required at all (``params.svm_type=CvSVM::ONE_CLASS``). +.. ocv:function:: Ptr SVM::create(const Params& p=Params(), const Ptr& customKernel=Ptr()) -* Missing measurements are not supported. + :param p: SVM parameters + :param customKernel: the optional custom kernel to use. It must implement ``SVM::Kernel`` interface. -All the other parameters are gathered in the -:ocv:class:`CvSVMParams` structure. +Use ``StatModel::train`` to train the model, ``StatModel::train(traindata, params)`` to create and train the model, ``StatModel::load(filename)`` to load the pre-trained model. Since SVM has several parameters, you may want to find the best parameters for your problem. It can be done with ``SVM::trainAuto``. -CvSVM::train_auto +SVM::trainAuto ----------------- Trains an SVM with optimal parameters. -.. ocv:function:: bool CvSVM::train_auto( const Mat& trainData, const Mat& responses, const Mat& varIdx, const Mat& sampleIdx, CvSVMParams params, int k_fold = 10, CvParamGrid Cgrid = CvSVM::get_default_grid(CvSVM::C), CvParamGrid gammaGrid = CvSVM::get_default_grid(CvSVM::GAMMA), CvParamGrid pGrid = CvSVM::get_default_grid(CvSVM::P), CvParamGrid nuGrid = CvSVM::get_default_grid(CvSVM::NU), CvParamGrid coeffGrid = CvSVM::get_default_grid(CvSVM::COEF), CvParamGrid degreeGrid = CvSVM::get_default_grid(CvSVM::DEGREE), bool balanced=false) +.. ocv:function:: bool SVM::trainAuto( const Ptr& data, int kFold = 10, ParamGrid Cgrid = SVM::getDefaultGrid(SVM::C), ParamGrid gammaGrid = SVM::getDefaultGrid(SVM::GAMMA), ParamGrid pGrid = SVM::getDefaultGrid(SVM::P), ParamGrid nuGrid = SVM::getDefaultGrid(SVM::NU), ParamGrid coeffGrid = SVM::getDefaultGrid(SVM::COEF), ParamGrid degreeGrid = SVM::getDefaultGrid(SVM::DEGREE), bool balanced=false) -.. ocv:function:: bool CvSVM::train_auto( const CvMat* trainData, const CvMat* responses, const CvMat* varIdx, const CvMat* sampleIdx, CvSVMParams params, int kfold = 10, CvParamGrid Cgrid = get_default_grid(CvSVM::C), CvParamGrid gammaGrid = get_default_grid(CvSVM::GAMMA), CvParamGrid pGrid = get_default_grid(CvSVM::P), CvParamGrid nuGrid = get_default_grid(CvSVM::NU), CvParamGrid coeffGrid = get_default_grid(CvSVM::COEF), CvParamGrid degreeGrid = get_default_grid(CvSVM::DEGREE), bool balanced=false ) + :param data: the training data that can be constructed using ``TrainData::create`` or ``TrainData::loadFromCSV``. -.. ocv:pyfunction:: cv2.SVM.train_auto(trainData, responses, varIdx, sampleIdx, params[, k_fold[, Cgrid[, gammaGrid[, pGrid[, nuGrid[, coeffGrid[, degreeGrid[, balanced]]]]]]]]) -> retval - - :param k_fold: Cross-validation parameter. The training set is divided into ``k_fold`` subsets. One subset is used to test the model, the others form the train set. So, the SVM algorithm is executed ``k_fold`` times. + :param kFold: Cross-validation parameter. The training set is divided into ``kFold`` subsets. One subset is used to test the model, the others form the train set. So, the SVM algorithm is executed ``kFold`` times. :param \*Grid: Iteration grid for the corresponding SVM parameter. @@ -220,97 +181,76 @@ Trains an SVM with optimal parameters. The method trains the SVM model automatically by choosing the optimal parameters ``C``, ``gamma``, ``p``, ``nu``, ``coef0``, ``degree`` from -:ocv:class:`CvSVMParams`. Parameters are considered optimal +:ocv:class:`SVMParams`. Parameters are considered optimal when the cross-validation estimate of the test set error is minimal. -If there is no need to optimize a parameter, the corresponding grid step should be set to any value less than or equal to 1. For example, to avoid optimization in ``gamma``, set ``gamma_grid.step = 0``, ``gamma_grid.min_val``, ``gamma_grid.max_val`` as arbitrary numbers. In this case, the value ``params.gamma`` is taken for ``gamma``. +If there is no need to optimize a parameter, the corresponding grid step should be set to any value less than or equal to 1. For example, to avoid optimization in ``gamma``, set ``gammaGrid.step = 0``, ``gammaGrid.minVal``, ``gamma_grid.maxVal`` as arbitrary numbers. In this case, the value ``params.gamma`` is taken for ``gamma``. And, finally, if the optimization in a parameter is required but -the corresponding grid is unknown, you may call the function :ocv:func:`CvSVM::get_default_grid`. To generate a grid, for example, for ``gamma``, call ``CvSVM::get_default_grid(CvSVM::GAMMA)``. +the corresponding grid is unknown, you may call the function :ocv:func:`SVM::getDefaulltGrid`. To generate a grid, for example, for ``gamma``, call ``SVM::getDefaulltGrid(SVM::GAMMA)``. This function works for the classification -(``params.svm_type=CvSVM::C_SVC`` or ``params.svm_type=CvSVM::NU_SVC``) +(``params.svmType=SVM::C_SVC`` or ``params.svmType=SVM::NU_SVC``) as well as for the regression -(``params.svm_type=CvSVM::EPS_SVR`` or ``params.svm_type=CvSVM::NU_SVR``). If ``params.svm_type=CvSVM::ONE_CLASS``, no optimization is made and the usual SVM with parameters specified in ``params`` is executed. - -CvSVM::predict --------------- -Predicts the response for input sample(s). - -.. ocv:function:: float CvSVM::predict( const Mat& sample, bool returnDFVal=false ) const - -.. ocv:function:: float CvSVM::predict( const CvMat* sample, bool returnDFVal=false ) const - -.. ocv:function:: float CvSVM::predict( const CvMat* samples, CvMat* results, bool returnDFVal=false ) const - -.. ocv:pyfunction:: cv2.SVM.predict(sample[, returnDFVal]) -> retval - -.. ocv:pyfunction:: cv2.SVM.predict_all(samples[, results]) -> results - - :param sample: Input sample for prediction. - - :param samples: Input samples for prediction. +(``params.svmType=SVM::EPS_SVR`` or ``params.svmType=SVM::NU_SVR``). If ``params.svmType=SVM::ONE_CLASS``, no optimization is made and the usual SVM with parameters specified in ``params`` is executed. - :param returnDFVal: Specifies a type of the return value. If ``true`` and the problem is 2-class classification then the method returns the decision function value that is signed distance to the margin, else the function returns a class label (classification) or estimated function value (regression). - :param results: Output prediction responses for corresponding samples. - -If you pass one sample then prediction result is returned. If you want to get responses for several samples then you should pass the ``results`` matrix where prediction results will be stored. - -The function is parallelized with the TBB library. - - -CvSVM::get_default_grid +SVM::getDefaulltGrid ----------------------- Generates a grid for SVM parameters. -.. ocv:function:: CvParamGrid CvSVM::get_default_grid( int param_id ) +.. ocv:function:: ParamGrid SVM::getDefaulltGrid( int param_id ) :param param_id: SVM parameters IDs that must be one of the following: - * **CvSVM::C** + * **SVM::C** - * **CvSVM::GAMMA** + * **SVM::GAMMA** - * **CvSVM::P** + * **SVM::P** - * **CvSVM::NU** + * **SVM::NU** - * **CvSVM::COEF** + * **SVM::COEF** - * **CvSVM::DEGREE** + * **SVM::DEGREE** The grid is generated for the parameter with this ID. -The function generates a grid for the specified parameter of the SVM algorithm. The grid may be passed to the function :ocv:func:`CvSVM::train_auto`. +The function generates a grid for the specified parameter of the SVM algorithm. The grid may be passed to the function :ocv:func:`SVM::trainAuto`. -CvSVM::get_params +SVM::getParams ----------------- Returns the current SVM parameters. -.. ocv:function:: CvSVMParams CvSVM::get_params() const +.. ocv:function:: SVM::Params SVM::getParams() const -This function may be used to get the optimal parameters obtained while automatically training :ocv:func:`CvSVM::train_auto`. +This function may be used to get the optimal parameters obtained while automatically training :ocv:func:`SVM::train_auto`. -CvSVM::get_support_vector +SVM::getSupportVectors -------------------------- -Retrieves a number of support vectors and the particular vector. - -.. ocv:function:: int CvSVM::get_support_vector_count() const +Retrieves all the support vectors -.. ocv:function:: const float* CvSVM::get_support_vector(int i) const +.. ocv:function:: Mat SVM::getSupportVectors() const -.. ocv:pyfunction:: cv2.SVM.get_support_vector_count() -> retval +The method returns all the support vector as floating-point matrix, where support vectors are stored as matrix rows. - :param i: Index of the particular support vector. - -The methods can be used to retrieve a set of support vectors. - -CvSVM::get_var_count +SVM::getDecisionFunction +-------------------------- +Retrieves the decision function + +.. ocv:function:: double SVM::getDecisionFunction(int i, OutputArray alpha, OutputArray svidx) const + + :param i: the index of the decision function. If the problem solved is regression, 1-class or 2-class classification, then there will be just one decision function and the index should always be 0. Otherwise, in the case of N-class classification, there will be N*(N-1)/2 decision functions. + + :param alpha: the optional output vector for weights, corresponding to different support vectors. In the case of linear SVM all the alpha's will be 1's. + + :param svidx: the optional output vector of indices of support vectors within the matrix of support vectors (which can be retrieved by ``SVM::getSupportVectors``). In the case of linear SVM each decision function consists of a single "compressed" support vector. + +The method returns ``rho`` parameter of the decision function, a scalar subtracted from the weighted sum of kernel responses. + +Prediction with SVM -------------------- -Returns the number of used features (variables count). - -.. ocv:function:: int CvSVM::get_var_count() const -.. ocv:pyfunction:: cv2.SVM.get_var_count() -> retval +StatModel::predict(samples, results, flags) should be used. Pass ``flags=StatModel::RAW_OUTPUT`` to get the raw response from SVM (in the case of regression, 1-class or 2-class classification problem). From 28ca6ac05ea484bde4200b3f2f35d27ee29e7e9d Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Sun, 3 Aug 2014 02:34:47 +0400 Subject: [PATCH 078/189] fixed building html docs --- modules/core/doc/basic_structures.rst | 1 - modules/ml/doc/boosting.rst | 2 +- modules/ml/doc/decision_trees.rst | 4 +- modules/ml/doc/expectation_maximization.rst | 20 +-- modules/ml/doc/mldata.rst | 4 +- modules/ml/doc/random_trees.rst | 2 +- modules/ml/doc/statistical_models.rst | 185 +++++++------------- modules/ml/doc/support_vector_machines.rst | 4 +- 8 files changed, 85 insertions(+), 137 deletions(-) diff --git a/modules/core/doc/basic_structures.rst b/modules/core/doc/basic_structures.rst index a94fa1731e..4f238df492 100644 --- a/modules/core/doc/basic_structures.rst +++ b/modules/core/doc/basic_structures.rst @@ -845,7 +845,6 @@ For convenience, the following types from the OpenCV C API already have such a s that calls the appropriate release function: * ``CvCapture`` -* :ocv:struct:`CvDTreeSplit` * :ocv:struct:`CvFileStorage` * ``CvHaarClassifierCascade`` * :ocv:struct:`CvMat` diff --git a/modules/ml/doc/boosting.rst b/modules/ml/doc/boosting.rst index 76a9293fc3..2ba4a031f4 100644 --- a/modules/ml/doc/boosting.rst +++ b/modules/ml/doc/boosting.rst @@ -79,7 +79,7 @@ The constructors. .. ocv:function:: Boost::Params::Params() -.. ocv:function:: Boost::Params::Params( int boost_type, int weak_count, double weight_trim_rate, int max_depth, bool use_surrogates, const float* priors ) +.. ocv:function:: Boost::Params::Params( int boostType, int weakCount, double weightTrimRate, int maxDepth, bool useSurrogates, const Mat& priors ) :param boost_type: Type of the boosting algorithm. Possible values are: diff --git a/modules/ml/doc/decision_trees.rst b/modules/ml/doc/decision_trees.rst index 9400ae4b96..1cc9992d5b 100644 --- a/modules/ml/doc/decision_trees.rst +++ b/modules/ml/doc/decision_trees.rst @@ -53,7 +53,7 @@ Importance of each variable is computed over all the splits on this variable in DTrees::Split ------------- +------------- .. ocv:class:: DTrees::Split The class represents split in a decision tree. It has public members: @@ -91,7 +91,7 @@ DTrees::Split else next_node <- right DTrees::Node ------------ +------------ .. ocv:class:: DTrees::Node The class represents a decision tree node. It has public members: diff --git a/modules/ml/doc/expectation_maximization.rst b/modules/ml/doc/expectation_maximization.rst index 82450be4be..9b306fd54f 100644 --- a/modules/ml/doc/expectation_maximization.rst +++ b/modules/ml/doc/expectation_maximization.rst @@ -66,7 +66,7 @@ Alternatively, the algorithm may start with the M-step when the initial values f :math:`p_{i,k}` can be provided. Another alternative when :math:`p_{i,k}` are unknown is to use a simpler clustering algorithm to pre-cluster the input samples and thus obtain initial :math:`p_{i,k}` . Often (including machine learning) the -:ocv:func:`kmeans` algorithm is used for that purpose. +``k-means`` algorithm is used for that purpose. One of the main problems of the EM algorithm is a large number of parameters to estimate. The majority of the parameters reside in @@ -99,15 +99,17 @@ EM::Params ---------- .. ocv:class:: EM::Params -The class describes EM training parameters. It includes: +The class describes EM training parameters. - .. ocv:member:: int clusters - - The number of mixture components in the Gaussian mixture model. Default value of the parameter is ``EM::DEFAULT_NCLUSTERS=5``. Some of EM implementation could determine the optimal number of mixtures within a specified value range, but that is not the case in ML yet. +EM::Params::Params +------------------ +The constructor - .. ocv:member:: int covMatType +.. ocv:function:: EM::Params::Params( int nclusters=DEFAULT_NCLUSTERS, int covMatType=EM::COV_MAT_DIAGONAL,const TermCriteria& termCrit=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, EM::DEFAULT_MAX_ITERS, 1e-6)) - Constraint on covariance matrices which defines type of matrices. Possible values are: + :param nclusters: The number of mixture components in the Gaussian mixture model. Default value of the parameter is ``EM::DEFAULT_NCLUSTERS=5``. Some of EM implementation could determine the optimal number of mixtures within a specified value range, but that is not the case in ML yet. + + :param covMatType: Constraint on covariance matrices which defines type of matrices. Possible values are: * **EM::COV_MAT_SPHERICAL** A scaled identity matrix :math:`\mu_k * I`. There is the only parameter :math:`\mu_k` to be estimated for each matrix. The option may be used in special cases, when the constraint is relevant, or as a first step in the optimization (for example in case when the data is preprocessed with PCA). The results of such preliminary estimation may be passed again to the optimization procedure, this time with ``covMatType=EM::COV_MAT_DIAGONAL``. @@ -115,9 +117,7 @@ The class describes EM training parameters. It includes: * **EM::COV_MAT_GENERIC** A symmetric positively defined matrix. The number of free parameters in each matrix is about :math:`d^2/2`. It is not recommended to use this option, unless there is pretty accurate initial estimation of the parameters and/or a huge number of training samples. - .. ocv:member:: TermCriteria termCrit - - The termination criteria of the EM algorithm. The EM algorithm can be terminated by the number of iterations ``termCrit.maxCount`` (number of M-steps) or when relative change of likelihood logarithm is less than ``termCrit.epsilon``. Default maximum number of iterations is ``EM::DEFAULT_MAX_ITERS=100``. + :param termCrit: The termination criteria of the EM algorithm. The EM algorithm can be terminated by the number of iterations ``termCrit.maxCount`` (number of M-steps) or when relative change of likelihood logarithm is less than ``termCrit.epsilon``. Default maximum number of iterations is ``EM::DEFAULT_MAX_ITERS=100``. EM::create diff --git a/modules/ml/doc/mldata.rst b/modules/ml/doc/mldata.rst index 8a3b796e30..9a795b60da 100644 --- a/modules/ml/doc/mldata.rst +++ b/modules/ml/doc/mldata.rst @@ -22,7 +22,7 @@ In machine learning algorithms there is notion of training data. Training data i As you can see, training data can have rather complex structure; besides, it may be very big and/or not entirely available, so there is need to make abstraction for this concept. In OpenCV ml there is ``cv::ml::TrainData`` class for that. TrainData --------- +--------- .. ocv:class:: TrainData Class encapsulating training data. Please note that the class only specifies the interface of training data, but not implementation. All the statistical model classes in ml take Ptr. In other words, you can create your own class derived from ``TrainData`` and supply smart pointer to the instance of this class into ``StatModel::train``. @@ -31,7 +31,7 @@ TrainData::loadFromCSV ---------------------- Reads the dataset from a .csv file and returns the ready-to-use training data. -.. ocv:function:: Ptr loadFromCSV(const String& filename, int headerLineCount, int responseStartIdx=-1, int responseEndIdx=-1, const String& varTypeSpec=String(), char delimiter=',', char missch='?'); +.. ocv:function:: Ptr loadFromCSV(const String& filename, int headerLineCount, int responseStartIdx=-1, int responseEndIdx=-1, const String& varTypeSpec=String(), char delimiter=',', char missch='?') :param filename: The input file name diff --git a/modules/ml/doc/random_trees.rst b/modules/ml/doc/random_trees.rst index 3b851261e9..951dfe72f4 100644 --- a/modules/ml/doc/random_trees.rst +++ b/modules/ml/doc/random_trees.rst @@ -69,7 +69,7 @@ The constructors :param termCrit: The termination criteria that specifies when the training algorithm stops - either when the specified number of trees is trained and added to the ensemble or when sufficient accuracy (measured as OOB error) is achieved. Typically the more trees you have the better the accuracy. However, the improvement in accuracy generally diminishes and asymptotes pass a certain number of trees. Also to keep in mind, the number of tree increases the prediction time linearly. -The default constructor sets all parameters to default values which are different from default values of :ocv:class:`CvDTreeParams`: +The default constructor sets all parameters to default values which are different from default values of ``DTrees::Params``: :: diff --git a/modules/ml/doc/statistical_models.rst b/modules/ml/doc/statistical_models.rst index af250b7864..754b45ee87 100644 --- a/modules/ml/doc/statistical_models.rst +++ b/modules/ml/doc/statistical_models.rst @@ -3,161 +3,110 @@ Statistical Models .. highlight:: cpp -.. index:: CvStatModel +.. index:: StatModel -CvStatModel +StatModel ----------- -.. ocv:class:: CvStatModel +.. ocv:class:: StatModel -Base class for statistical models in ML. :: +Base class for statistical models in OpenCV ML. - class CvStatModel - { - public: - /* CvStatModel(); */ - /* CvStatModel( const Mat& train_data ... ); */ - virtual ~CvStatModel(); - - virtual void clear()=0; - - /* virtual bool train( const Mat& train_data, [int tflag,] ..., const - Mat& responses, ..., - [const Mat& var_idx,] ..., [const Mat& sample_idx,] ... - [const Mat& var_type,] ..., [const Mat& missing_mask,] - ... )=0; - */ - - /* virtual float predict( const Mat& sample ... ) const=0; */ +StatModel::train +------------------------ +Trains the statistical model - virtual void save( const char* filename, const char* name=0 )=0; - virtual void load( const char* filename, const char* name=0 )=0; +.. ocv:function:: bool StatModel::train( const Ptr& trainData, int flags=0 ) - virtual void write( CvFileStorage* storage, const char* name )=0; - virtual void read( CvFileStorage* storage, CvFileNode* node )=0; - }; +.. ocv:function:: bool StatModel::train( InputArray samples, int layout, InputArray responses ) +.. ocv:function:: Ptr<_Tp> StatModel::train(const Ptr& data, const _Tp::Params& p, int flags=0 ) -In this declaration, some methods are commented off. These are methods for which there is no unified API (with the exception of the default constructor). However, there are many similarities in the syntax and semantics that are briefly described below in this section, as if they are part of the base class. +.. ocv:function:: Ptr<_Tp> StatModel::train(InputArray samples, int layout, InputArray responses, const _Tp::Params& p, int flags=0 ) -CvStatModel::CvStatModel ------------------------- -The default constructor. + :param trainData: training data that can be loaded from file using ``TrainData::loadFromCSV`` or created with ``TrainData::create``. + + :param samples: training samples + + :param layout: ``ROW_SAMPLE`` (training samples are the matrix rows) or ``COL_SAMPLE`` (training samples are the matrix columns) + + :param responses: vector of responses associated with the training samples. + + :param p: the stat model parameters. + + :param flags: optional flags, depending on the model. Some of the models can be updated with the new training samples, not completely overwritten (such as ``NormalBayesClassifier`` or ``ANN_MLP``). -.. ocv:function:: CvStatModel::CvStatModel() +There are 2 instance methods and 2 static (class) template methods. The first two train the already created model (the very first method must be overwritten in the derived classes). And the latter two variants are convenience methods that construct empty model and then call its train method. -Each statistical model class in ML has a default constructor without parameters. This constructor is useful for a two-stage model construction, when the default constructor is followed by :ocv:func:`CvStatModel::train` or :ocv:func:`CvStatModel::load`. -CvStatModel::CvStatModel(...) +StatModel::isTrained ----------------------------- -The training constructor. +Returns true if the model is trained -.. ocv:function:: CvStatModel::CvStatModel() +.. ocv:function:: bool StatModel::isTrained() -Most ML classes provide a single-step constructor and train constructors. This constructor is equivalent to the default constructor, followed by the :ocv:func:`CvStatModel::train` method with the parameters that are passed to the constructor. +The method must be overwritten in the derived classes. -CvStatModel::~CvStatModel -------------------------- -The virtual destructor. +StatModel::isClassifier +----------------------------- +Returns true if the model is classifier -.. ocv:function:: CvStatModel::~CvStatModel() +.. ocv:function:: bool StatModel::isClassifier() -The destructor of the base class is declared as virtual. So, it is safe to write the following code: :: +The method must be overwritten in the derived classes. - CvStatModel* model; - if( use_svm ) - model = new CvSVM(... /* SVM params */); - else - model = new CvDTree(... /* Decision tree params */); - ... - delete model; +StatModel::getVarCount +----------------------------- +Returns the number of variables in training samples +.. ocv:function:: int StatModel::getVarCount() -Normally, the destructor of each derived class does nothing. But in this instance, it calls the overridden method :ocv:func:`CvStatModel::clear` that deallocates all the memory. +The method must be overwritten in the derived classes. -CvStatModel::clear +StatModel::predict ------------------ -Deallocates memory and resets the model state. - -.. ocv:function:: void CvStatModel::clear() - -The method ``clear`` does the same job as the destructor: it deallocates all the memory occupied by the class members. But the object itself is not destructed and can be reused further. This method is called from the destructor, from the :ocv:func:`CvStatModel::train` methods of the derived classes, from the methods :ocv:func:`CvStatModel::load`, :ocv:func:`CvStatModel::read()`, or even explicitly by the user. - -CvStatModel::save ------------------ -Saves the model to a file. - -.. ocv:function:: void CvStatModel::save( const char* filename, const char* name=0 ) - -.. ocv:pyfunction:: cv2.StatModel.save(filename[, name]) -> None - -The method ``save`` saves the complete model state to the specified XML or YAML file with the specified name or default name (which depends on a particular class). *Data persistence* functionality from ``CxCore`` is used. - -CvStatModel::load ------------------ -Loads the model from a file. - -.. ocv:function:: void CvStatModel::load( const char* filename, const char* name=0 ) +Predicts response(s) for the provided sample(s) -.. ocv:pyfunction:: cv2.StatModel.load(filename[, name]) -> None +.. ocv:function:: float StatModel::predict( InputArray samples, OutputArray results=noArray(), int flags=0 ) const -The method ``load`` loads the complete model state with the specified name (or default model-dependent name) from the specified XML or YAML file. The previous model state is cleared by :ocv:func:`CvStatModel::clear`. + :param samples: The input samples, floating-point matrix + + :param results: The optional output matrix of results. + + :param flags: The optional flags, model-dependent. Some models, such as ``Boost``, ``SVM`` recognize ``StatModel::RAW_OUTPUT`` flag, which makes the method return the raw results (the sum), not the class label. + +StatModel::calcError +------------------------- +Computes error on the training or test dataset -CvStatModel::write ------------------- -Writes the model to the file storage. +.. ocv:function:: float StatModel::calcError( const Ptr& data, bool test, OutputArray resp ) const -.. ocv:function:: void CvStatModel::write( CvFileStorage* storage, const char* name ) + :param data: the training data + + :param test: if true, the error is computed over the test subset of the data, otherwise it's computed over the training subset of the data. Please note that if you loaded a completely different dataset to evaluate already trained classifier, you will probably want not to set the test subset at all with ``TrainData::setTrainTestSplitRatio`` and specify ``test=false``, so that the error is computed for the whole new set. Yes, this sounds a bit confusing. -The method ``write`` stores the complete model state in the file storage with the specified name or default name (which depends on the particular class). The method is called by :ocv:func:`CvStatModel::save`. + :param resp: the optional output responses. + +The method uses ``StatModel::predict`` to compute the error. For regression models the error is computed as RMS, for classifiers - as a percent of missclassified samples (0%-100%). -CvStatModel::read +StatModel::save ----------------- -Reads the model from the file storage. - -.. ocv:function:: void CvStatModel::read( CvFileStorage* storage, CvFileNode* node ) - -The method ``read`` restores the complete model state from the specified node of the file storage. Use the function -:ocv:cfunc:`GetFileNodeByName` to locate the node. - -The previous model state is cleared by :ocv:func:`CvStatModel::clear`. - -CvStatModel::train ------------------- -Trains the model. - -.. ocv:function:: bool CvStatModel::train( const Mat& train_data, [int tflag,] ..., const Mat& responses, ..., [const Mat& var_idx,] ..., [const Mat& sample_idx,] ... [const Mat& var_type,] ..., [const Mat& missing_mask,] ... ) - -The method trains the statistical model using a set of input feature vectors and the corresponding output values (responses). Both input and output vectors/values are passed as matrices. By default, the input feature vectors are stored as ``train_data`` rows, that is, all the components (features) of a training vector are stored continuously. However, some algorithms can handle the transposed representation when all values of each particular feature (component/input variable) over the whole input set are stored continuously. If both layouts are supported, the method includes the ``tflag`` parameter that specifies the orientation as follows: - -* ``tflag=CV_ROW_SAMPLE`` The feature vectors are stored as rows. - -* ``tflag=CV_COL_SAMPLE`` The feature vectors are stored as columns. - -The ``train_data`` must have the ``CV_32FC1`` (32-bit floating-point, single-channel) format. Responses are usually stored in a 1D vector (a row or a column) of ``CV_32SC1`` (only in the classification problem) or ``CV_32FC1`` format, one value per input vector. Although, some algorithms, like various flavors of neural nets, take vector responses. - -For classification problems, the responses are discrete class labels. For regression problems, the responses are values of the function to be approximated. Some algorithms can deal only with classification problems, some - only with regression problems, and some can deal with both problems. In the latter case, the type of output variable is either passed as a separate parameter or as the last element of the ``var_type`` vector: - -* ``CV_VAR_CATEGORICAL`` The output values are discrete class labels. - -* ``CV_VAR_ORDERED(=CV_VAR_NUMERICAL)`` The output values are ordered. This means that two different values can be compared as numbers, and this is a regression problem. - -Types of input variables can be also specified using ``var_type``. Most algorithms can handle only ordered input variables. +Saves the model to a file. -Many ML models may be trained on a selected feature subset, and/or on a selected sample subset of the training set. To make it easier for you, the method ``train`` usually includes the ``var_idx`` and ``sample_idx`` parameters. The former parameter identifies variables (features) of interest, and the latter one identifies samples of interest. Both vectors are either integer (``CV_32SC1``) vectors (lists of 0-based indices) or 8-bit (``CV_8UC1``) masks of active variables/samples. You may pass ``NULL`` pointers instead of either of the arguments, meaning that all of the variables/samples are used for training. +.. ocv:function:: void StatModel::save( const String& filename ) -Additionally, some algorithms can handle missing measurements, that is, when certain features of certain training samples have unknown values (for example, they forgot to measure a temperature of patient A on Monday). The parameter ``missing_mask``, an 8-bit matrix of the same size as ``train_data``, is used to mark the missed values (non-zero elements of the mask). +In order to make this method work, the derived class must overwrite ``Algorithm::write(FileStorage& fs)``. -Usually, the previous model state is cleared by :ocv:func:`CvStatModel::clear` before running the training procedure. However, some algorithms may optionally update the model state with the new training data, instead of resetting it. +StatModel::load +----------------- +Loads model from the file -CvStatModel::predict --------------------- -Predicts the response for a sample. +.. ocv:function:: Ptr<_Tp> StatModel::load( const String& filename ) -.. ocv:function:: float CvStatModel::predict( const Mat& sample, ... ) const +This is static template method of StatModel. It's usage is following (in the case of SVM): :: -The method is used to predict the response for a new sample. In case of a classification, the method returns the class label. In case of a regression, the method returns the output function value. The input sample must have as many components as the ``train_data`` passed to ``train`` contains. If the ``var_idx`` parameter is passed to ``train``, it is remembered and then is used to extract only the necessary components from the input sample in the method ``predict``. + Ptr svm = StatModel::load("my_svm_model.xml"); -The suffix ``const`` means that prediction does not affect the internal model state, so the method can be safely called from within different threads. +In order to make this method work, the derived class must overwrite ``Algorithm::read(const FileNode& fn)``. diff --git a/modules/ml/doc/support_vector_machines.rst b/modules/ml/doc/support_vector_machines.rst index 003ec4dc6a..60724afd20 100644 --- a/modules/ml/doc/support_vector_machines.rst +++ b/modules/ml/doc/support_vector_machines.rst @@ -181,7 +181,7 @@ Trains an SVM with optimal parameters. The method trains the SVM model automatically by choosing the optimal parameters ``C``, ``gamma``, ``p``, ``nu``, ``coef0``, ``degree`` from -:ocv:class:`SVMParams`. Parameters are considered optimal +``SVM::Params``. Parameters are considered optimal when the cross-validation estimate of the test set error is minimal. @@ -226,7 +226,7 @@ Returns the current SVM parameters. .. ocv:function:: SVM::Params SVM::getParams() const -This function may be used to get the optimal parameters obtained while automatically training :ocv:func:`SVM::train_auto`. +This function may be used to get the optimal parameters obtained while automatically training ``SVM::trainAuto``. SVM::getSupportVectors -------------------------- From 2520e335d1c8d98da25a8533c15bfa66a7afc7d3 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Sun, 3 Aug 2014 03:08:25 +0400 Subject: [PATCH 079/189] removed many extra whitespaces; fixed 1 warning --- modules/ml/doc/decision_trees.rst | 2 +- modules/ml/doc/expectation_maximization.rst | 4 +-- modules/ml/doc/mldata.rst | 28 ++++++++++----------- modules/ml/doc/neural_networks.rst | 22 ++++++++-------- modules/ml/doc/random_trees.rst | 1 - modules/ml/doc/statistical_models.rst | 20 +++++++-------- modules/ml/doc/support_vector_machines.rst | 8 +++--- modules/ml/include/opencv2/ml.hpp | 2 +- modules/ml/src/ann_mlp.cpp | 16 ++++++------ modules/ml/src/boost.cpp | 10 ++++---- modules/ml/src/data.cpp | 2 +- modules/ml/src/gbt.cpp | 1 - modules/ml/src/nbayes.cpp | 2 +- modules/ml/src/precomp.hpp | 6 ++--- modules/ml/src/rtrees.cpp | 2 +- modules/ml/src/svm.cpp | 6 ++--- modules/ml/src/tree.cpp | 28 ++++++++++----------- 17 files changed, 79 insertions(+), 81 deletions(-) diff --git a/modules/ml/doc/decision_trees.rst b/modules/ml/doc/decision_trees.rst index 1cc9992d5b..474cca2e32 100644 --- a/modules/ml/doc/decision_trees.rst +++ b/modules/ml/doc/decision_trees.rst @@ -97,7 +97,7 @@ DTrees::Node The class represents a decision tree node. It has public members: .. ocv:member:: double value - + Value at the node: a class label in case of classification or estimated function value in case of regression. .. ocv:member:: int classIdx diff --git a/modules/ml/doc/expectation_maximization.rst b/modules/ml/doc/expectation_maximization.rst index 9b306fd54f..4b54007bb9 100644 --- a/modules/ml/doc/expectation_maximization.rst +++ b/modules/ml/doc/expectation_maximization.rst @@ -128,7 +128,7 @@ Creates empty EM model :param params: EM parameters -The model should be trained then using ``StatModel::train(traindata, flags)`` method. Alternatively, you can use one of the ``EM::train*`` methods or load it from file using ``StatModel::load(filename)``. +The model should be trained then using ``StatModel::train(traindata, flags)`` method. Alternatively, you can use one of the ``EM::train*`` methods or load it from file using ``StatModel::load(filename)``. EM::train --------- @@ -155,7 +155,7 @@ Static methods that estimate the Gaussian mixture parameters from a samples set :param labels: The optional output "class label" for each sample: :math:`\texttt{labels}_i=\texttt{arg max}_k(p_{i,k}), i=1..N` (indices of the most probable mixture component for each sample). It has :math:`nsamples \times 1` size and ``CV_32SC1`` type. :param probs: The optional output matrix that contains posterior probabilities of each Gaussian mixture component given the each sample. It has :math:`nsamples \times nclusters` size and ``CV_64FC1`` type. - + :param params: The Gaussian mixture params, see ``EM::Params`` description above. Three versions of training method differ in the initialization of Gaussian mixture model parameters and start step: diff --git a/modules/ml/doc/mldata.rst b/modules/ml/doc/mldata.rst index 9a795b60da..b710f29a8b 100644 --- a/modules/ml/doc/mldata.rst +++ b/modules/ml/doc/mldata.rst @@ -36,18 +36,18 @@ Reads the dataset from a .csv file and returns the ready-to-use training data. :param filename: The input file name :param headerLineCount: The number of lines in the beginning to skip; besides the header, the function also skips empty lines and lines staring with '#' - + :param responseStartIdx: Index of the first output variable. If -1, the function considers the last variable as the response - + :param responseEndIdx: Index of the last output variable + 1. If -1, then there is single response variable at ``responseStartIdx``. - + :param varTypeSpec: The optional text string that specifies the variables' types. It has the format ``ord[n1-n2,n3,n4-n5,...]cat[n6,n7-n8,...]``. That is, variables from n1 to n2 (inclusive range), n3, n4 to n5 ... are considered ordered and n6, n7 to n8 ... are considered as categorical. The range [n1..n2] + [n3] + [n4..n5] + ... + [n6] + [n7..n8] should cover all the variables. If varTypeSpec is not specified, then algorithm uses the following rules: 1. all input variables are considered ordered by default. If some column contains has non-numerical values, e.g. 'apple', 'pear', 'apple', 'apple', 'mango', the corresponding variable is considered categorical. 2. if there are several output variables, they are all considered as ordered. Error is reported when non-numerical values are used. 3. if there is a single output variable, then if its values are non-numerical or are all integers, then it's considered categorical. Otherwise, it's considered ordered. - + :param delimiter: The character used to separate values in each line. - + :param missch: The character used to specify missing measurements. It should not be a digit. Although it's a non-numerical value, it surely does not affect the decision of whether the variable ordered or categorical. TrainData::create @@ -57,17 +57,17 @@ Creates training data from in-memory arrays. .. ocv:function:: Ptr create(InputArray samples, int layout, InputArray responses, InputArray varIdx=noArray(), InputArray sampleIdx=noArray(), InputArray sampleWeights=noArray(), InputArray varType=noArray()) :param samples: matrix of samples. It should have ``CV_32F`` type. - + :param layout: it's either ``ROW_SAMPLE``, which means that each training sample is a row of ``samples``, or ``COL_SAMPLE``, which means that each training sample occupies a column of ``samples``. - + :param responses: matrix of responses. If the responses are scalar, they should be stored as a single row or as a single column. The matrix should have type ``CV_32F`` or ``CV_32S`` (in the former case the responses are considered as ordered by default; in the latter case - as categorical) - + :param varIdx: vector specifying which variables to use for training. It can be an integer vector (``CV_32S``) containing 0-based variable indices or byte vector (``CV_8U``) containing a mask of active variables. - + :param sampleIdx: vector specifying which samples to use for training. It can be an integer vector (``CV_32S``) containing 0-based sample indices or byte vector (``CV_8U``) containing a mask of training samples. - + :param sampleWeights: optional vector with weights for each sample. It should have ``CV_32F`` type. - + :param varType: optional vector of type ``CV_8U`` and size + , containing types of each input and output variable. The ordered variables are denoted by value ``VAR_ORDERED``, and categorical - by ``VAR_CATEGORICAL``. @@ -78,11 +78,11 @@ Returns matrix of train samples .. ocv:function:: Mat TrainData::getTrainSamples(int layout=ROW_SAMPLE, bool compressSamples=true, bool compressVars=true) const :param layout: The requested layout. If it's different from the initial one, the matrix is transposed. - + :param compressSamples: if true, the function returns only the training samples (specified by sampleIdx) - + :param compressVars: if true, the function returns the shorter training samples, containing only the active variables. - + In current implementation the function tries to avoid physical data copying and returns the matrix stored inside TrainData (unless the transposition or compression is needed). diff --git a/modules/ml/doc/neural_networks.rst b/modules/ml/doc/neural_networks.rst index 166e2e2f4b..557ef82c35 100644 --- a/modules/ml/doc/neural_networks.rst +++ b/modules/ml/doc/neural_networks.rst @@ -102,26 +102,26 @@ ANN_MLP::Params Parameters of the MLP and of the training algorithm. You can initialize the structure by a constructor or the individual parameters can be adjusted after the structure is created. The network structure: - + .. ocv:member:: Mat layerSizes - + The number of elements in each layer of network. The very first element specifies the number of elements in the input layer. The last element - number of elements in the output layer. - + .. ocv:member:: int activateFunc - + The activation function. Currently the only fully supported activation function is ``ANN_MLP::SIGMOID_SYM``. - + .. ocv:member:: double fparam1 - + The first parameter of activation function, 0 by default. - + .. ocv:member:: double fparam2 - + The second parameter of the activation function, 0 by default. - + .. note:: - - If you are using the default ``ANN_MLP::SIGMOID_SYM`` activation function with the default parameter values fparam1=0 and fparam2=0 then the function used is y = 1.7159*tanh(2/3 * x), so the output will range from [-1.7159, 1.7159], instead of [0,1]. + + If you are using the default ``ANN_MLP::SIGMOID_SYM`` activation function with the default parameter values fparam1=0 and fparam2=0 then the function used is y = 1.7159*tanh(2/3 * x), so the output will range from [-1.7159, 1.7159], instead of [0,1]. The back-propagation algorithm parameters: diff --git a/modules/ml/doc/random_trees.rst b/modules/ml/doc/random_trees.rst index 951dfe72f4..602786d57e 100644 --- a/modules/ml/doc/random_trees.rst +++ b/modules/ml/doc/random_trees.rst @@ -101,4 +101,3 @@ Returns the variable importance array. .. ocv:function:: Mat RTrees::getVarImportance() const The method returns the variable importance vector, computed at the training stage when ``RTParams::calcVarImportance`` is set to true. If this flag was set to false, the empty matrix is returned. - diff --git a/modules/ml/doc/statistical_models.rst b/modules/ml/doc/statistical_models.rst index 754b45ee87..82cffbbfe3 100644 --- a/modules/ml/doc/statistical_models.rst +++ b/modules/ml/doc/statistical_models.rst @@ -25,15 +25,15 @@ Trains the statistical model .. ocv:function:: Ptr<_Tp> StatModel::train(InputArray samples, int layout, InputArray responses, const _Tp::Params& p, int flags=0 ) :param trainData: training data that can be loaded from file using ``TrainData::loadFromCSV`` or created with ``TrainData::create``. - + :param samples: training samples - + :param layout: ``ROW_SAMPLE`` (training samples are the matrix rows) or ``COL_SAMPLE`` (training samples are the matrix columns) - + :param responses: vector of responses associated with the training samples. - + :param p: the stat model parameters. - + :param flags: optional flags, depending on the model. Some of the models can be updated with the new training samples, not completely overwritten (such as ``NormalBayesClassifier`` or ``ANN_MLP``). There are 2 instance methods and 2 static (class) template methods. The first two train the already created model (the very first method must be overwritten in the derived classes). And the latter two variants are convenience methods that construct empty model and then call its train method. @@ -70,11 +70,11 @@ Predicts response(s) for the provided sample(s) .. ocv:function:: float StatModel::predict( InputArray samples, OutputArray results=noArray(), int flags=0 ) const :param samples: The input samples, floating-point matrix - + :param results: The optional output matrix of results. - + :param flags: The optional flags, model-dependent. Some models, such as ``Boost``, ``SVM`` recognize ``StatModel::RAW_OUTPUT`` flag, which makes the method return the raw results (the sum), not the class label. - + StatModel::calcError ------------------------- @@ -83,11 +83,11 @@ Computes error on the training or test dataset .. ocv:function:: float StatModel::calcError( const Ptr& data, bool test, OutputArray resp ) const :param data: the training data - + :param test: if true, the error is computed over the test subset of the data, otherwise it's computed over the training subset of the data. Please note that if you loaded a completely different dataset to evaluate already trained classifier, you will probably want not to set the test subset at all with ``TrainData::setTrainTestSplitRatio`` and specify ``test=false``, so that the error is computed for the whole new set. Yes, this sounds a bit confusing. :param resp: the optional output responses. - + The method uses ``StatModel::predict`` to compute the error. For regression models the error is computed as RMS, for classifiers - as a percent of missclassified samples (0%-100%). diff --git a/modules/ml/doc/support_vector_machines.rst b/modules/ml/doc/support_vector_machines.rst index 60724afd20..d514db28af 100644 --- a/modules/ml/doc/support_vector_machines.rst +++ b/modules/ml/doc/support_vector_machines.rst @@ -243,13 +243,13 @@ Retrieves the decision function .. ocv:function:: double SVM::getDecisionFunction(int i, OutputArray alpha, OutputArray svidx) const :param i: the index of the decision function. If the problem solved is regression, 1-class or 2-class classification, then there will be just one decision function and the index should always be 0. Otherwise, in the case of N-class classification, there will be N*(N-1)/2 decision functions. - + :param alpha: the optional output vector for weights, corresponding to different support vectors. In the case of linear SVM all the alpha's will be 1's. - + :param svidx: the optional output vector of indices of support vectors within the matrix of support vectors (which can be retrieved by ``SVM::getSupportVectors``). In the case of linear SVM each decision function consists of a single "compressed" support vector. - + The method returns ``rho`` parameter of the decision function, a scalar subtracted from the weighted sum of kernel responses. - + Prediction with SVM -------------------- diff --git a/modules/ml/include/opencv2/ml.hpp b/modules/ml/include/opencv2/ml.hpp index ee54eab06e..3338dd3b3b 100644 --- a/modules/ml/include/opencv2/ml.hpp +++ b/modules/ml/include/opencv2/ml.hpp @@ -133,7 +133,7 @@ public: virtual Mat getCatOfs() const = 0; virtual Mat getCatMap() const = 0; - + virtual void setTrainTestSplit(int count, bool shuffle=true) = 0; virtual void setTrainTestSplitRatio(double ratio, bool shuffle=true) = 0; virtual void shuffleTrainTest() = 0; diff --git a/modules/ml/src/ann_mlp.cpp b/modules/ml/src/ann_mlp.cpp index 9d0180f7c6..878ab4eca5 100644 --- a/modules/ml/src/ann_mlp.cpp +++ b/modules/ml/src/ann_mlp.cpp @@ -1137,7 +1137,7 @@ public: fs << "iterations" << params.termCrit.maxCount; fs << "}" << "}"; } - + void write( FileStorage& fs ) const { if( layer_sizes.empty() ) @@ -1145,7 +1145,7 @@ public: int i, l_count = layer_count(); fs << "layer_sizes" << layer_sizes; - + write_params( fs ); size_t esz = weights[0].elemSize(); @@ -1168,7 +1168,7 @@ public: } fs << "]"; } - + void read_params( const FileNode& fn ) { String activ_func_name = (String)fn["activation_function"]; @@ -1186,7 +1186,7 @@ public: f_param2 = (double)fn["f_param2"]; set_activ_func( activ_func, f_param1, f_param2 ); - + min_val = (double)fn["min_val"]; max_val = (double)fn["max_val"]; min_val1 = (double)fn["min_val1"]; @@ -1194,11 +1194,11 @@ public: FileNode tpn = fn["training_params"]; params = Params(); - + if( !tpn.empty() ) { String tmethod_name = (String)tpn["train_method"]; - + if( tmethod_name == "BACKPROP" ) { params.trainMethod = Params::BACKPROP; @@ -1216,7 +1216,7 @@ public: } else CV_Error(CV_StsParseError, "Unknown training method (should be BACKPROP or RPROP)"); - + FileNode tcn = tpn["term_criteria"]; if( !tcn.empty() ) { @@ -1236,7 +1236,7 @@ public: } } } - + void read( const FileNode& fn ) { clear(); diff --git a/modules/ml/src/boost.cpp b/modules/ml/src/boost.cpp index f485b6e17e..9af90189dd 100644 --- a/modules/ml/src/boost.cpp +++ b/modules/ml/src/boost.cpp @@ -174,10 +174,10 @@ public: for( pidx = node->parent; pidx >= 0 && nodes[pidx].right == nidx; nidx = pidx, pidx = nodes[pidx].parent ) ; - + if( pidx < 0 ) break; - + nidx = nodes[pidx].right; } } @@ -340,7 +340,7 @@ public: } printf("%d trees. C=%.2f, training error=%.1f%%, working set size=%d (out of %d)\n", (int)roots.size(), C, err*100./n, (int)sidx.size(), n); }*/ - + // renormalize weights if( sumw > FLT_EPSILON ) normalizeWeights(); @@ -453,14 +453,14 @@ public: FileNode trees_node = fn["trees"]; FileNodeIterator it = trees_node.begin(); CV_Assert( ntrees == (int)trees_node.size() ); - + for( int treeidx = 0; treeidx < ntrees; treeidx++, ++it ) { FileNode nfn = (*it)["nodes"]; readTree(nfn); } } - + Boost::Params bparams; vector sumResult; }; diff --git a/modules/ml/src/data.cpp b/modules/ml/src/data.cpp index d73cb5703e..33ad79c981 100644 --- a/modules/ml/src/data.cpp +++ b/modules/ml/src/data.cpp @@ -750,7 +750,7 @@ public: void setTrainTestSplit(int count, bool shuffle) { int i, nsamples = getNSamples(); - CV_Assert( 0 <= count < nsamples ); + CV_Assert( 0 <= count && count < nsamples ); trainSampleIdx.release(); testSampleIdx.release(); diff --git a/modules/ml/src/gbt.cpp b/modules/ml/src/gbt.cpp index 9ece5d6bcb..b186abf672 100644 --- a/modules/ml/src/gbt.cpp +++ b/modules/ml/src/gbt.cpp @@ -1363,4 +1363,3 @@ float CvGBTrees::predict( const cv::Mat& sample, const cv::Mat& _missing, } #endif - diff --git a/modules/ml/src/nbayes.cpp b/modules/ml/src/nbayes.cpp index 1e2d7104ef..2dbbcdf690 100644 --- a/modules/ml/src/nbayes.cpp +++ b/modules/ml/src/nbayes.cpp @@ -338,7 +338,7 @@ public: cv::parallel_for_(cv::Range(0, nsamples), NBPredictBody(c, cov_rotate_mats, inv_eigen_values, avg, samples, var_idx, cls_labels, results, resultsProb, rawOutput)); - + return (float)value; } diff --git a/modules/ml/src/precomp.hpp b/modules/ml/src/precomp.hpp index 23e22d9d92..dde1ba1a1b 100644 --- a/modules/ml/src/precomp.hpp +++ b/modules/ml/src/precomp.hpp @@ -248,9 +248,9 @@ namespace ml virtual const std::vector& getNodes() const { return nodes; } virtual const std::vector& getSplits() const { return splits; } virtual const std::vector& getSubsets() const { return subsets; } - + Params params0, params; - + vector varIdx; vector compVarIdx; vector varType; @@ -263,7 +263,7 @@ namespace ml vector classLabels; vector missingSubst; bool _isClassifier; - + Ptr w; }; diff --git a/modules/ml/src/rtrees.cpp b/modules/ml/src/rtrees.cpp index 2677c819e7..bdd7df7034 100644 --- a/modules/ml/src/rtrees.cpp +++ b/modules/ml/src/rtrees.cpp @@ -393,7 +393,7 @@ public: { impl.write(fs); } - + void read( const FileNode& fn ) { impl.read(fn); diff --git a/modules/ml/src/svm.cpp b/modules/ml/src/svm.cpp index a638b6bfa0..ea8123a388 100644 --- a/modules/ml/src/svm.cpp +++ b/modules/ml/src/svm.cpp @@ -292,7 +292,7 @@ public: if( vcount > 0 ) exp( R, R ); } - + void calc( int vcount, int var_count, const float* vecs, const float* another, Qfloat* results ) { @@ -353,7 +353,7 @@ static void sortSamplesByClasses( const Mat& _samples, const Mat& _responses, class_ranges.push_back(i+1); } } - + //////////////////////// SVM implementation ////////////////////////////// ParamGrid SVM::getDefaultGrid( int param_id ) @@ -1205,7 +1205,7 @@ public: int max_iter; double C[2]; // C[0] == Cn, C[1] == Cp Ptr kernel; - + SelectWorkingSet select_working_set_func; CalcRho calc_rho_func; GetRow get_row_func; diff --git a/modules/ml/src/tree.cpp b/modules/ml/src/tree.cpp index ae05b81852..3eac0b8679 100644 --- a/modules/ml/src/tree.cpp +++ b/modules/ml/src/tree.cpp @@ -372,7 +372,7 @@ void DTreesImpl::setDParams(const Params& _params) if( params.CVFolds == 1 ) params.CVFolds = 0; - + if( params.regressionAccuracy < 0 ) CV_Error( CV_StsOutOfRange, "params.regression_accuracy should be >= 0" ); } @@ -637,7 +637,7 @@ void DTreesImpl::calcValue( int nidx, const vector& _sidx ) cv_sum2[j] += t*t*wval; cv_count[j] += wval; } - + for( j = 0; j < cv_n; j++ ) { sum += cv_sum[j]; @@ -656,7 +656,7 @@ void DTreesImpl::calcValue( int nidx, const vector& _sidx ) w->cv_Tn[nidx*cv_n + j] = INT_MAX; } } - + node->node_risk = sum2 - (sum/sumw)*sum; node->value = sum/sumw; } @@ -822,7 +822,7 @@ void DTreesImpl::clusterCategories( const double* vectors, int n, int m, double* min_idx = idx; } } - + if( min_idx != labels[i] ) modified = true; labels[i] = min_idx; @@ -1116,18 +1116,18 @@ DTreesImpl::WSplit DTreesImpl::findSplitCatReg( int vi, const vector& _sidx // (there should be a very little loss in accuracy) for( i = 0; i < mi; i++ ) sum[i] *= counts[i]; - + for( subset_i = 0; subset_i < mi-1; subset_i++ ) { int idx = (int)(sum_ptr[subset_i] - sum); double ni = counts[idx]; - + if( ni > FLT_EPSILON ) { double s = sum[idx]; lsum += s; L += ni; rsum -= s; R -= ni; - + if( L > FLT_EPSILON && R > FLT_EPSILON ) { double val = (lsum*lsum*R + rsum*rsum*L)/(L*R); @@ -1139,7 +1139,7 @@ DTreesImpl::WSplit DTreesImpl::findSplitCatReg( int vi, const vector& _sidx } } } - + WSplit split; if( best_subset >= 0 ) { @@ -1372,17 +1372,17 @@ bool DTreesImpl::cutTree( int root, double T, int fold, double min_alpha ) } nidx = node->left; } - + for( pidx = node->parent; pidx >= 0 && w->wnodes[pidx].right == nidx; nidx = pidx, pidx = w->wnodes[pidx].parent ) ; - + if( pidx < 0 ) break; - + nidx = w->wnodes[pidx].right; } - + return false; } @@ -1807,7 +1807,7 @@ int DTreesImpl::readSplit( const FileNode& fn ) } split.c = (float)cmpNode; } - + split.quality = (float)fn["quality"]; splits.push_back(split); @@ -1894,7 +1894,7 @@ Ptr DTrees::create(const DTrees::Params& params) p->setDParams(params); return p; } - + } } From 8e9d1d9fe6dc044b1b2f9d10e39c228274ed1c03 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Sun, 3 Aug 2014 04:28:20 +0400 Subject: [PATCH 080/189] temporarily disabled java bindings for ml; hopefully fixed warnings etc. --- modules/java/CMakeLists.txt | 2 +- modules/java/generator/rst_parser.py | 2 +- modules/java/generator/src/cpp/jni_part.cpp | 9 +-------- modules/ml/test/test_save_load.cpp | 2 +- modules/python/src2/cv2.cpp | 6 ++++++ 5 files changed, 10 insertions(+), 11 deletions(-) diff --git a/modules/java/CMakeLists.txt b/modules/java/CMakeLists.txt index 3e95b52ab4..38b75e8d36 100644 --- a/modules/java/CMakeLists.txt +++ b/modules/java/CMakeLists.txt @@ -6,7 +6,7 @@ if(IOS OR NOT PYTHON_EXECUTABLE OR NOT ANT_EXECUTABLE OR NOT (JNI_FOUND OR (ANDR endif() set(the_description "The java bindings") -ocv_add_module(java BINDINGS opencv_core opencv_imgproc OPTIONAL opencv_objdetect opencv_features2d opencv_video opencv_imgcodecs opencv_videoio opencv_ml opencv_calib3d opencv_photo opencv_nonfree opencv_contrib) +ocv_add_module(java BINDINGS opencv_core opencv_imgproc OPTIONAL opencv_objdetect opencv_features2d opencv_video opencv_imgcodecs opencv_videoio opencv_calib3d opencv_photo opencv_nonfree opencv_contrib) ocv_module_include_directories("${CMAKE_CURRENT_SOURCE_DIR}/generator/src/cpp") if(NOT ANDROID) diff --git a/modules/java/generator/rst_parser.py b/modules/java/generator/rst_parser.py index 80b09ac40b..78114aedb1 100755 --- a/modules/java/generator/rst_parser.py +++ b/modules/java/generator/rst_parser.py @@ -2,7 +2,7 @@ from __future__ import print_function import os, sys, re, string, fnmatch -allmodules = ["core", "flann", "imgproc", "ml", "imgcodecs", "videoio", "highgui", "video", "features2d", "calib3d", "objdetect", "legacy", "contrib", "cuda", "androidcamera", "java", "python", "stitching", "ts", "photo", "nonfree", "videostab", "softcascade", "superres"] +allmodules = ["core", "flann", "imgproc", "imgcodecs", "videoio", "highgui", "video", "features2d", "calib3d", "objdetect", "legacy", "contrib", "cuda", "androidcamera", "java", "python", "stitching", "ts", "photo", "nonfree", "videostab", "softcascade", "superres"] verbose = False show_warnings = True show_errors = True diff --git a/modules/java/generator/src/cpp/jni_part.cpp b/modules/java/generator/src/cpp/jni_part.cpp index ccd870cdf9..a4ac0d553a 100644 --- a/modules/java/generator/src/cpp/jni_part.cpp +++ b/modules/java/generator/src/cpp/jni_part.cpp @@ -14,10 +14,6 @@ # include "opencv2/video.hpp" #endif -#ifdef HAVE_OPENCV_ML -# include "opencv2/ml.hpp" -#endif - #ifdef HAVE_OPENCV_CONTRIB # include "opencv2/contrib.hpp" #endif @@ -41,10 +37,7 @@ JNI_OnLoad(JavaVM* vm, void* ) #ifdef HAVE_OPENCV_VIDEO init &= cv::initModule_video(); #endif -#ifdef HAVE_OPENCV_ML - init &= cv::initModule_ml(); -#endif - #ifdef HAVE_OPENCV_CONTRIB +#ifdef HAVE_OPENCV_CONTRIB init &= cv::initModule_contrib(); #endif diff --git a/modules/ml/test/test_save_load.cpp b/modules/ml/test/test_save_load.cpp index a5997d5355..bef2fd0e1c 100644 --- a/modules/ml/test/test_save_load.cpp +++ b/modules/ml/test/test_save_load.cpp @@ -170,7 +170,7 @@ TEST(DISABLED_ML_ERTrees, save_load) { CV_SLMLTest test( CV_ERTREES ); test.safe TEST(DISABLED_ML_SVM, linear_save_load) { Ptr svm1, svm2, svm3; - + svm1 = StatModel::load("SVM45_X_38-1.xml"); svm2 = StatModel::load("SVM45_X_38-2.xml"); string tname = tempfile("a.xml"); diff --git a/modules/python/src2/cv2.cpp b/modules/python/src2/cv2.cpp index 225ea5afc5..0bd914a248 100644 --- a/modules/python/src2/cv2.cpp +++ b/modules/python/src2/cv2.cpp @@ -376,6 +376,12 @@ static bool pyopencv_to(PyObject* o, Mat& m, const ArgInfo info) return true; } +template<> +bool pyopencv_to(PyObject* o, Mat& m, const char* name) +{ + return pyopencv_to(o, m, ArgInfo(name, 0)); +} + template<> PyObject* pyopencv_from(const Mat& m) { From 9cb79b9abb87043961209b2b3816e6fd46068570 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Sun, 3 Aug 2014 04:28:31 +0400 Subject: [PATCH 081/189] temporarily disabled java bindings for ml; hopefully fixed warnings etc. --- modules/java/generator/config/ml.filelist | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 modules/java/generator/config/ml.filelist diff --git a/modules/java/generator/config/ml.filelist b/modules/java/generator/config/ml.filelist new file mode 100644 index 0000000000..e69de29bb2 From eeb786fcfd47c5a8dd9f6c1132ff652905731e34 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Sun, 3 Aug 2014 12:46:28 +0400 Subject: [PATCH 082/189] fixed compile warnings from MSVC; fixed warnings in Python bindings; added some debugging code --- modules/ml/include/opencv2/ml.hpp | 12 ++++++------ modules/ml/src/ann_mlp.cpp | 9 ++++----- modules/ml/src/boost.cpp | 6 ++++-- modules/ml/src/data.cpp | 8 ++++---- modules/ml/src/inner_functions.cpp | 2 +- modules/ml/src/knearest.cpp | 2 +- modules/ml/src/precomp.hpp | 8 ++++---- modules/ml/src/rtrees.cpp | 3 +-- modules/ml/src/svm.cpp | 2 +- modules/ml/src/tree.cpp | 8 ++++---- 10 files changed, 30 insertions(+), 30 deletions(-) diff --git a/modules/ml/include/opencv2/ml.hpp b/modules/ml/include/opencv2/ml.hpp index 3338dd3b3b..f642f1f62c 100644 --- a/modules/ml/include/opencv2/ml.hpp +++ b/modules/ml/include/opencv2/ml.hpp @@ -205,7 +205,7 @@ public: class CV_EXPORTS_W NormalBayesClassifier : public StatModel { public: - class CV_EXPORTS_W_MAP Params + class CV_EXPORTS_W Params { public: Params(); @@ -231,8 +231,8 @@ public: public: Params(int defaultK=10, bool isclassifier=true); - int defaultK; - bool isclassifier; + CV_PROP_RW int defaultK; + CV_PROP_RW bool isclassifier; }; virtual void setParams(const Params& p) = 0; virtual Params getParams() const = 0; @@ -328,9 +328,9 @@ public: explicit Params(int nclusters=DEFAULT_NCLUSTERS, int covMatType=EM::COV_MAT_DIAGONAL, const TermCriteria& termCrit=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, EM::DEFAULT_MAX_ITERS, 1e-6)); - int nclusters; - int covMatType; - TermCriteria termCrit; + CV_PROP_RW int nclusters; + CV_PROP_RW int covMatType; + CV_PROP_RW TermCriteria termCrit; }; virtual void setParams(const Params& p) = 0; diff --git a/modules/ml/src/ann_mlp.cpp b/modules/ml/src/ann_mlp.cpp index 878ab4eca5..73af1ae94d 100644 --- a/modules/ml/src/ann_mlp.cpp +++ b/modules/ml/src/ann_mlp.cpp @@ -123,7 +123,7 @@ public: void clear() { min_val = max_val = min_val1 = max_val1 = 0.; - rng = RNG(-1); + rng = RNG((uint64)-1); weights.clear(); trained = false; } @@ -300,7 +300,7 @@ public: { int maxIdx[] = {0, 0}; minMaxIdx(outputs, 0, 0, 0, maxIdx); - return maxIdx[0] + maxIdx[1]; + return (float)(maxIdx[0] + maxIdx[1]); } return 0.f; @@ -702,9 +702,8 @@ public: train_backprop( inputs, outputs, sw, termcrit ) : train_rprop( inputs, outputs, sw, termcrit ); - trained = true; - - return iter; + trained = iter > 0; + return trained; } int train_backprop( const Mat& inputs, const Mat& outputs, const Mat& _sw, TermCriteria termCrit ) diff --git a/modules/ml/src/boost.cpp b/modules/ml/src/boost.cpp index 9af90189dd..480454349f 100644 --- a/modules/ml/src/boost.cpp +++ b/modules/ml/src/boost.cpp @@ -220,12 +220,13 @@ public: void updateWeightsAndTrim( int treeidx, vector& sidx ) { + putchar('<'); int i, n = (int)w->sidx.size(); int nvars = (int)varIdx.size(); double sumw = 0., C = 1.; - cv::AutoBuffer buf(n*3 + nvars); + cv::AutoBuffer buf(n + nvars); double* result = buf; - float* sbuf = (float*)(result + n*3); + float* sbuf = (float*)(result + n); Mat sample(1, nvars, CV_32F, sbuf); int predictFlags = bparams.boostType == Boost::DISCRETE ? (PREDICT_MAX_VOTE | RAW_OUTPUT) : PREDICT_SUM; predictFlags |= COMPRESSED_INPUT; @@ -373,6 +374,7 @@ public: if( w->sample_weights[si] >= threshold ) sidx.push_back(si); } + putchar('>'); fflush(stdout); } float predictTrees( const Range& range, const Mat& sample, int flags0 ) const diff --git a/modules/ml/src/data.cpp b/modules/ml/src/data.cpp index 33ad79c981..b5d0527985 100644 --- a/modules/ml/src/data.cpp +++ b/modules/ml/src/data.cpp @@ -310,7 +310,7 @@ public: varType.create(1, nvars, CV_8U); varType = Scalar::all(VAR_ORDERED); if( noutputvars == 1 ) - varType.at(ninputvars) = responses.type() < CV_32F ? VAR_CATEGORICAL : VAR_ORDERED; + varType.at(ninputvars) = (uchar)(responses.type() < CV_32F ? VAR_CATEGORICAL : VAR_ORDERED); } if( noutputvars > 1 ) @@ -558,7 +558,7 @@ public: if( tp == VAR_MISSED ) haveMissed = true; rowvals.push_back(val); - rowtypes.push_back(tp); + rowtypes.push_back((uchar)tp); token = strtok(NULL, delimiters); if (!token) break; @@ -880,7 +880,7 @@ public: if( s ) { j = s[i]; - CV_DbgAssert( 0 <= j && j < nsamples ); + CV_Assert( 0 <= j && j < nsamples ); } values[i] = src[j*sstep]; if( values[i] == MISSED_VAL ) @@ -955,7 +955,7 @@ public: if( vptr ) { j = vptr[i]; - CV_DbgAssert( 0 <= j && j < nvars ); + CV_Assert( 0 <= j && j < nvars ); } buf[i] = src[j*vstep]; } diff --git a/modules/ml/src/inner_functions.cpp b/modules/ml/src/inner_functions.cpp index a5fd59d45b..3d5f335201 100644 --- a/modules/ml/src/inner_functions.cpp +++ b/modules/ml/src/inner_functions.cpp @@ -108,7 +108,7 @@ float StatModel::calcError( const Ptr& data, bool testerr, OutputArra if( _resp.needed() ) resp.copyTo(_resp); - return err / n * (isclassifier ? 100 : 1); + return (float)(err / n * (isclassifier ? 100 : 1)); } void StatModel::save(const String& filename) const diff --git a/modules/ml/src/knearest.cpp b/modules/ml/src/knearest.cpp index 6c40545e22..3ead3228f5 100644 --- a/modules/ml/src/knearest.cpp +++ b/modules/ml/src/knearest.cpp @@ -173,7 +173,7 @@ public: } float result = 0.f; - float inv_scale = 1./k; + float inv_scale = 1.f/k; for( testidx = 0; testidx < testcount; testidx++ ) { diff --git a/modules/ml/src/precomp.hpp b/modules/ml/src/precomp.hpp index dde1ba1a1b..ca47395ab8 100644 --- a/modules/ml/src/precomp.hpp +++ b/modules/ml/src/precomp.hpp @@ -111,7 +111,7 @@ namespace ml termCrit.type |= TermCriteria::EPS; termCrit.epsilon = epsilon; } - int iters = (double)fn["iterations"]; + int iters = (int)fn["iterations"]; if( iters > 0 ) { termCrit.type |= TermCriteria::COUNT; @@ -134,7 +134,7 @@ namespace ml } int class_idx; - int Tn; + double Tn; double value; int parent; @@ -164,7 +164,7 @@ namespace ml } int varIdx; - int inversed; + bool inversed; float quality; int next; float c; @@ -179,7 +179,7 @@ namespace ml vector wnodes; vector wsplits; vector wsubsets; - vector cv_Tn; + vector cv_Tn; vector cv_node_risk; vector cv_node_error; vector cv_labels; diff --git a/modules/ml/src/rtrees.cpp b/modules/ml/src/rtrees.cpp index bdd7df7034..abae817b5f 100644 --- a/modules/ml/src/rtrees.cpp +++ b/modules/ml/src/rtrees.cpp @@ -90,7 +90,7 @@ public: { DTreesImpl::clear(); oobError = 0.; - rng = RNG(-1); + rng = RNG((uint64)-1); } const vector& getActiveVars() @@ -177,7 +177,6 @@ public: for( treeidx = 0; treeidx < ntrees; treeidx++ ) { - putchar('.'); fflush(stdout); for( i = 0; i < n; i++ ) oobmask[i] = (uchar)1; diff --git a/modules/ml/src/svm.cpp b/modules/ml/src/svm.cpp index ea8123a388..985cc62520 100644 --- a/modules/ml/src/svm.cpp +++ b/modules/ml/src/svm.cpp @@ -1587,7 +1587,7 @@ public: bool balanced ) { int svmType = params.svmType; - RNG rng(-1); + RNG rng((uint64)-1); if( svmType == ONE_CLASS ) // current implementation of "auto" svm does not support the 1-class case. diff --git a/modules/ml/src/tree.cpp b/modules/ml/src/tree.cpp index 3eac0b8679..49013e2e63 100644 --- a/modules/ml/src/tree.cpp +++ b/modules/ml/src/tree.cpp @@ -730,7 +730,7 @@ DTreesImpl::WSplit DTreesImpl::findSplitOrdClass( int vi, const vector& _si { split.varIdx = vi; split.c = (values[sorted_idx[best_i]] + values[sorted_idx[best_i+1]])*0.5f; - split.inversed = 0; + split.inversed = false; split.quality = (float)best_val; } return split; @@ -744,12 +744,12 @@ void DTreesImpl::clusterCategories( const double* vectors, int n, int m, double* cv::AutoBuffer buf(n + k); double *v_weights = buf, *c_weights = buf + n; bool modified = true; - RNG r(-1); + RNG r((uint64)-1); // assign labels randomly for( i = 0; i < n; i++ ) { - int sum = 0; + double sum = 0; const double* v = vectors + i*m; labels[i] = i < k ? i : r.uniform(0, k); @@ -1063,7 +1063,7 @@ DTreesImpl::WSplit DTreesImpl::findSplitOrdReg( int vi, const vector& _sidx { split.varIdx = vi; split.c = (values[sorted_idx[best_i]] + values[sorted_idx[best_i+1]])*0.5f; - split.inversed = 0; + split.inversed = false; split.quality = (float)best_val; } return split; From 79b593d8d80ea6504ffe89b667c2902b77e136ff Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Sun, 3 Aug 2014 13:08:03 +0400 Subject: [PATCH 083/189] more fixes and more debugging code --- modules/ml/src/precomp.hpp | 3 ++- modules/ml/src/tree.cpp | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/modules/ml/src/precomp.hpp b/modules/ml/src/precomp.hpp index ca47395ab8..d308ae98ec 100644 --- a/modules/ml/src/precomp.hpp +++ b/modules/ml/src/precomp.hpp @@ -158,7 +158,8 @@ namespace ml { WSplit() { - varIdx = inversed = next = 0; + varIdx = next = 0; + inversed = false; quality = c = 0.f; subsetOfs = -1; } diff --git a/modules/ml/src/tree.cpp b/modules/ml/src/tree.cpp index 49013e2e63..5113348b00 100644 --- a/modules/ml/src/tree.cpp +++ b/modules/ml/src/tree.cpp @@ -340,7 +340,28 @@ int DTreesImpl::addTree(const vector& sidx ) break; w_nidx = w->wnodes[w_pidx].right; +#if 1 + if( w_nidx < 0 ) + { + size_t i, nnodes = w->wnodes.size(); + printf("w_pidx = %d\nwnodes (%d): ", w_pidx, (int)n); + for( i = 0; i < nnodes; i++ ) + { + printf("[%d. depth=%d parent=%d, left=%d, right=%d] ", + (int)i, w->wnodes[i].depth, w->wnodes[i].parent, w->wnodes[i].left, w->wnodes[i].right); + } + + nnodes = nodes.size(); + printf("\nnodes (%d): ", (int)nnodes); + for( i = 0; i < nnodes; i++ ) + { + printf("[%d. parent=%d, left=%d, right=%d] ", (int)i, nodes[i].parent, nodes[i].left, nodes[i].right); + } + printf("\n"); + } +#else CV_Assert( w_nidx >= 0 ); +#endif } } roots.push_back(root); From 98a11812405971f667b0df01b4a94f5b52ca8af5 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Sun, 3 Aug 2014 13:15:43 +0400 Subject: [PATCH 084/189] fixed the condition --- modules/ml/src/tree.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/ml/src/tree.cpp b/modules/ml/src/tree.cpp index 5113348b00..a75f4bab79 100644 --- a/modules/ml/src/tree.cpp +++ b/modules/ml/src/tree.cpp @@ -359,9 +359,8 @@ int DTreesImpl::addTree(const vector& sidx ) } printf("\n"); } -#else - CV_Assert( w_nidx >= 0 ); #endif + CV_Assert( w_nidx >= 0 ); } } roots.push_back(root); From 24b01a8e4f9c505903bc761b118f496ae01bb332 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Sun, 3 Aug 2014 21:21:11 +0400 Subject: [PATCH 085/189] continuing to debug boost and fix MSVC compile errors --- modules/ml/include/opencv2/ml.hpp | 6 +++--- modules/ml/src/rtrees.cpp | 1 - modules/ml/src/tree.cpp | 1 + 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/ml/include/opencv2/ml.hpp b/modules/ml/include/opencv2/ml.hpp index f642f1f62c..a5ce3010bf 100644 --- a/modules/ml/include/opencv2/ml.hpp +++ b/modules/ml/include/opencv2/ml.hpp @@ -496,7 +496,7 @@ public: * Gradient Boosted Trees * \****************************************************************************************/ -class CV_EXPORTS_W GBTrees : public DTrees +/*class CV_EXPORTS_W GBTrees : public DTrees { public: struct CV_EXPORTS_W_MAP Params : public DTrees::Params @@ -516,10 +516,10 @@ public: virtual void setK(int k) = 0; virtual float predictSerial( InputArray samples, - OutputArray weakResponses, int flags) const; + OutputArray weakResponses, int flags) const = 0; static Ptr create(const Params& p); -}; +};*/ /****************************************************************************************\ * Artificial Neural Networks (ANN) * diff --git a/modules/ml/src/rtrees.cpp b/modules/ml/src/rtrees.cpp index abae817b5f..7c9cbaf268 100644 --- a/modules/ml/src/rtrees.cpp +++ b/modules/ml/src/rtrees.cpp @@ -280,7 +280,6 @@ public: if( calcOOBError && oobError < eps ) break; } - printf("done!\n"); if( rparams.calcVarImportance ) { diff --git a/modules/ml/src/tree.cpp b/modules/ml/src/tree.cpp index a75f4bab79..f931d0f1f4 100644 --- a/modules/ml/src/tree.cpp +++ b/modules/ml/src/tree.cpp @@ -452,6 +452,7 @@ int DTreesImpl::addNodeAndTrySplit( int parent, const vector& sidx ) w->wnodes[nidx].left = addNodeAndTrySplit( nidx, sleft ); w->wnodes[nidx].right = addNodeAndTrySplit( nidx, sright ); + CV_Assert( w->wnodes[nidx].left > 0 && w->wnodes[nidx].right > 0 ); } return nidx; From 222f8a3d5e0b7dbde8c90aa61a27f2e466c27b30 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Mon, 4 Aug 2014 01:16:45 +0400 Subject: [PATCH 086/189] hopefully fixed test failure on Linux --- modules/imgproc/src/morph.cpp | 9 +++------ modules/ml/src/boost.cpp | 2 -- modules/ml/src/tree.cpp | 26 ++++---------------------- 3 files changed, 7 insertions(+), 30 deletions(-) diff --git a/modules/imgproc/src/morph.cpp b/modules/imgproc/src/morph.cpp index 4f696b4209..22f7f7329f 100644 --- a/modules/imgproc/src/morph.cpp +++ b/modules/imgproc/src/morph.cpp @@ -1221,7 +1221,7 @@ static bool IPPMorphReplicate(int op, const Mat &src, Mat &dst, const Mat &kerne IPP_MORPH_CASE(CV_32FC3, 32f_C3R, 32f); IPP_MORPH_CASE(CV_32FC4, 32f_C4R, 32f); default: - return false; + ; } #undef IPP_MORPH_CASE @@ -1253,14 +1253,11 @@ static bool IPPMorphReplicate(int op, const Mat &src, Mat &dst, const Mat &kerne IPP_MORPH_CASE(CV_32FC3, 32f_C3R, 32f); IPP_MORPH_CASE(CV_32FC4, 32f_C4R, 32f); default: - return false; + ; } #undef IPP_MORPH_CASE - -#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ >= 8 - return false; /// It disables false positive warning in GCC 4.8 and further -#endif } + return false; } static bool IPPMorphOp(int op, InputArray _src, OutputArray _dst, diff --git a/modules/ml/src/boost.cpp b/modules/ml/src/boost.cpp index 480454349f..5e0b307338 100644 --- a/modules/ml/src/boost.cpp +++ b/modules/ml/src/boost.cpp @@ -220,7 +220,6 @@ public: void updateWeightsAndTrim( int treeidx, vector& sidx ) { - putchar('<'); int i, n = (int)w->sidx.size(); int nvars = (int)varIdx.size(); double sumw = 0., C = 1.; @@ -374,7 +373,6 @@ public: if( w->sample_weights[si] >= threshold ) sidx.push_back(si); } - putchar('>'); fflush(stdout); } float predictTrees( const Range& range, const Mat& sample, int flags0 ) const diff --git a/modules/ml/src/tree.cpp b/modules/ml/src/tree.cpp index f931d0f1f4..416abd9364 100644 --- a/modules/ml/src/tree.cpp +++ b/modules/ml/src/tree.cpp @@ -340,26 +340,6 @@ int DTreesImpl::addTree(const vector& sidx ) break; w_nidx = w->wnodes[w_pidx].right; -#if 1 - if( w_nidx < 0 ) - { - size_t i, nnodes = w->wnodes.size(); - printf("w_pidx = %d\nwnodes (%d): ", w_pidx, (int)n); - for( i = 0; i < nnodes; i++ ) - { - printf("[%d. depth=%d parent=%d, left=%d, right=%d] ", - (int)i, w->wnodes[i].depth, w->wnodes[i].parent, w->wnodes[i].left, w->wnodes[i].right); - } - - nnodes = nodes.size(); - printf("\nnodes (%d): ", (int)nnodes); - for( i = 0; i < nnodes; i++ ) - { - printf("[%d. parent=%d, left=%d, right=%d] ", (int)i, nodes[i].parent, nodes[i].left, nodes[i].right); - } - printf("\n"); - } -#endif CV_Assert( w_nidx >= 0 ); } } @@ -450,8 +430,10 @@ int DTreesImpl::addNodeAndTrySplit( int parent, const vector& sidx ) if( params.useSurrogates ) CV_Error( CV_StsNotImplemented, "surrogate splits are not implemented yet"); - w->wnodes[nidx].left = addNodeAndTrySplit( nidx, sleft ); - w->wnodes[nidx].right = addNodeAndTrySplit( nidx, sright ); + int left = addNodeAndTrySplit( nidx, sleft ); + int right = addNodeAndTrySplit( nidx, sright ); + w->wnodes[nidx].left = left; + w->wnodes[nidx].right = right; CV_Assert( w->wnodes[nidx].left > 0 && w->wnodes[nidx].right > 0 ); } From cdb7b83741fde677ebfa0923ed49f9f3706b066f Mon Sep 17 00:00:00 2001 From: Vladislav Vinogradov Date: Mon, 4 Aug 2014 12:12:51 +0400 Subject: [PATCH 087/189] fix python module compilation with enabled CUDA support: filterout all CUDA related headers from python module include headers --- modules/python/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/python/CMakeLists.txt b/modules/python/CMakeLists.txt index 66ac1addd6..128f28558f 100644 --- a/modules/python/CMakeLists.txt +++ b/modules/python/CMakeLists.txt @@ -45,7 +45,8 @@ endforeach(m) # header blacklist ocv_list_filterout(opencv_hdrs ".h$") -ocv_list_filterout(opencv_hdrs "opencv2/core/cuda") +ocv_list_filterout(opencv_hdrs "cuda") +ocv_list_filterout(opencv_hdrs "cudev") ocv_list_filterout(opencv_hdrs "opencv2/objdetect/detection_based_tracker.hpp") ocv_list_filterout(opencv_hdrs "opencv2/optim.hpp") From a3da3a01e151be9beb8f28ff8ad055131aa95f90 Mon Sep 17 00:00:00 2001 From: Vladislav Vinogradov Date: Mon, 4 Aug 2014 12:13:33 +0400 Subject: [PATCH 088/189] fix test_opencv_imgproc compilation --- modules/imgproc/test/ocl/test_filters.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/imgproc/test/ocl/test_filters.cpp b/modules/imgproc/test/ocl/test_filters.cpp index aa881bd3c6..61f38a6b8b 100644 --- a/modules/imgproc/test/ocl/test_filters.cpp +++ b/modules/imgproc/test/ocl/test_filters.cpp @@ -432,7 +432,7 @@ OCL_INSTANTIATE_TEST_CASE_P(Filter, Dilate, Combine( OCL_INSTANTIATE_TEST_CASE_P(Filter, MorphologyEx, Combine( Values(CV_8UC1, CV_8UC3, CV_8UC4, CV_32FC1, CV_32FC3, CV_32FC4), Values(3, 5, 7), // kernel size - Values(MORPH_OPEN, MORPH_CLOSE, MORPH_GRADIENT, MORPH_TOPHAT, MORPH_BLACKHAT), // used as generator of operations + Values((MorphOp)MORPH_OPEN, (MorphOp)MORPH_CLOSE, (MorphOp)MORPH_GRADIENT, (MorphOp)MORPH_TOPHAT, (MorphOp)MORPH_BLACKHAT), // used as generator of operations Values(1, 2, 3), Bool())); From cb9b88e65b1410f0d84cae26db33598ab0ab7508 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Mon, 4 Aug 2014 14:22:31 +0400 Subject: [PATCH 089/189] fixed more compile warnings on Windows --- samples/cpp/letter_recog.cpp | 2 +- samples/cpp/points_classifier.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/samples/cpp/letter_recog.cpp b/samples/cpp/letter_recog.cpp index 4076b639f7..b6a35e338f 100644 --- a/samples/cpp/letter_recog.cpp +++ b/samples/cpp/letter_recog.cpp @@ -129,7 +129,7 @@ static void test_and_save_classifier(const Ptr& model, Mat sample = data.row(i); float r = model->predict( sample ); - r = std::abs(r + rdelta - responses.at(i)) <= FLT_EPSILON ? 1 : 0; + r = std::abs(r + rdelta - responses.at(i)) <= FLT_EPSILON ? 1.f : 0.f; if( i < ntrain_samples ) train_hr += r; diff --git a/samples/cpp/points_classifier.cpp b/samples/cpp/points_classifier.cpp index 3aa4d9b137..eedec4b6a8 100644 --- a/samples/cpp/points_classifier.cpp +++ b/samples/cpp/points_classifier.cpp @@ -208,7 +208,7 @@ static void find_decision_boundary_ANN( const Mat& layer_sizes ) ANN_MLP::Params params(layer_sizes, ANN_MLP::SIGMOID_SYM, 1, 1, TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS, 300, FLT_EPSILON), ANN_MLP::Params::BACKPROP, 0.001); - Mat trainClasses = Mat::zeros( trainedPoints.size(), classColors.size(), CV_32FC1 ); + Mat trainClasses = Mat::zeros( (int)trainedPoints.size(), (int)classColors.size(), CV_32FC1 ); for( int i = 0; i < trainClasses.rows; i++ ) { trainClasses.at(i, trainedPointsMarkers[i]) = 1.f; @@ -386,7 +386,7 @@ int main() Mat layer_sizes1( 1, 3, CV_32SC1 ); layer_sizes1.at(0) = 2; layer_sizes1.at(1) = 5; - layer_sizes1.at(2) = classColors.size(); + layer_sizes1.at(2) = (int)classColors.size(); find_decision_boundary_ANN( layer_sizes1 ); imshow( "ANN", imgDst ); #endif From 2d587ad6918659201ee528ba202cb58056d30cf8 Mon Sep 17 00:00:00 2001 From: vbystricky Date: Mon, 4 Aug 2014 15:12:36 +0400 Subject: [PATCH 090/189] Prevent generating test case with mask filled 0 only --- modules/core/test/ocl/test_arithm.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/core/test/ocl/test_arithm.cpp b/modules/core/test/ocl/test_arithm.cpp index a150782708..b0905b19f0 100644 --- a/modules/core/test/ocl/test_arithm.cpp +++ b/modules/core/test/ocl/test_arithm.cpp @@ -157,6 +157,7 @@ PARAM_TEST_CASE(ArithmTestBase, MatDepth, Channels, bool) Border maskBorder = randomBorder(0, use_roi ? MAX_VALUE : 0); randomSubMat(mask, mask_roi, roiSize, maskBorder, CV_8UC1, 0, 2); cv::threshold(mask, mask, 0.5, 255., CV_8UC1); + *mask.ptr(0) = 255; // prevent test case with mask filled 0 only val = cv::Scalar(rng.uniform(-100.0, 100.0), rng.uniform(-100.0, 100.0), rng.uniform(-100.0, 100.0), rng.uniform(-100.0, 100.0)); From 3fe4980ce1c38db20c1ad7e3e536aefdab059bf0 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 4 Aug 2014 14:12:48 +0200 Subject: [PATCH 091/189] Double precision for solvePnPRansac() --- modules/calib3d/src/solvepnp.cpp | 44 ++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/modules/calib3d/src/solvepnp.cpp b/modules/calib3d/src/solvepnp.cpp index 2b2d1bdf34..20e2899737 100644 --- a/modules/calib3d/src/solvepnp.cpp +++ b/modules/calib3d/src/solvepnp.cpp @@ -139,11 +139,13 @@ namespace cv CameraParameters camera; }; + template static void pnpTask(const std::vector& pointsMask, const Mat& objectPoints, const Mat& imagePoints, const Parameters& params, std::vector& inliers, Mat& rvec, Mat& tvec, const Mat& rvecInit, const Mat& tvecInit, Mutex& resultsMutex) { - Mat modelObjectPoints(1, MIN_POINTS_COUNT, CV_32FC3), modelImagePoints(1, MIN_POINTS_COUNT, CV_32FC2); + Mat modelObjectPoints(1, MIN_POINTS_COUNT, CV_MAKETYPE(DataDepth::value, 3)); + Mat modelImagePoints(1, MIN_POINTS_COUNT, CV_MAKETYPE(DataDepth::value, 2)); for (int i = 0, colIndex = 0; i < (int)pointsMask.size(); i++) { if (pointsMask[i]) @@ -162,7 +164,7 @@ namespace cv for (int i = 0; i < MIN_POINTS_COUNT; i++) for (int j = i + 1; j < MIN_POINTS_COUNT; j++) { - if (norm(modelObjectPoints.at(0, i) - modelObjectPoints.at(0, j)) < eps) + if (norm(modelObjectPoints.at >(0, i) - modelObjectPoints.at >(0, j)) < eps) num_same_points++; } if (num_same_points > 0) @@ -176,7 +178,7 @@ namespace cv params.useExtrinsicGuess, params.flags); - std::vector projected_points; + std::vector > projected_points; projected_points.resize(objectPoints.cols); projectPoints(objectPoints, localRvec, localTvec, params.camera.intrinsics, params.camera.distortion, projected_points); @@ -186,9 +188,11 @@ namespace cv std::vector localInliers; for (int i = 0; i < objectPoints.cols; i++) { - Point2f p(imagePoints.at(0, i)[0], imagePoints.at(0, i)[1]); + //Although p is a 2D point it needs the same type as the object points to enable the norm calculation + Point_ p((OpointType)imagePoints.at >(0, i)[0], + (OpointType)imagePoints.at >(0, i)[1]); if ((norm(p - projected_points[i]) < params.reprojectionError) - && (rotatedPoints.at(0, i)[2] > 0)) //hack + && (rotatedPoints.at >(0, i)[2] > 0)) //hack { localInliers.push_back(i); } @@ -208,6 +212,30 @@ namespace cv } } + static void pnpTask(const std::vector& pointsMask, const Mat& objectPoints, const Mat& imagePoints, + const Parameters& params, std::vector& inliers, Mat& rvec, Mat& tvec, + const Mat& rvecInit, const Mat& tvecInit, Mutex& resultsMutex) + { + CV_Assert(objectPoints.depth() == CV_64F || objectPoints.depth() == CV_32F); + CV_Assert(imagePoints.depth() == CV_64F || imagePoints.depth() == CV_32F); + const bool objectDoublePrecision = objectPoints.depth() == CV_64F; + const bool imageDoublePrecision = imagePoints.depth() == CV_64F; + if(objectDoublePrecision) + { + if(imageDoublePrecision) + pnpTask(pointsMask, objectPoints, imagePoints, params, inliers, rvec, tvec, rvecInit, tvecInit, resultsMutex); + else + pnpTask(pointsMask, objectPoints, imagePoints, params, inliers, rvec, tvec, rvecInit, tvecInit, resultsMutex); + } + else + { + if(imageDoublePrecision) + pnpTask(pointsMask, objectPoints, imagePoints, params, inliers, rvec, tvec, rvecInit, tvecInit, resultsMutex); + else + pnpTask(pointsMask, objectPoints, imagePoints, params, inliers, rvec, tvec, rvecInit, tvecInit, resultsMutex); + } + } + class PnPSolver { public: @@ -283,10 +311,10 @@ void cv::solvePnPRansac(InputArray _opoints, InputArray _ipoints, Mat cameraMatrix = _cameraMatrix.getMat(), distCoeffs = _distCoeffs.getMat(); CV_Assert(opoints.isContinuous()); - CV_Assert(opoints.depth() == CV_32F); + CV_Assert(opoints.depth() == CV_32F || opoints.depth() == CV_64F); CV_Assert((opoints.rows == 1 && opoints.channels() == 3) || opoints.cols*opoints.channels() == 3); CV_Assert(ipoints.isContinuous()); - CV_Assert(ipoints.depth() == CV_32F); + CV_Assert(ipoints.depth() == CV_32F || ipoints.depth() == CV_64F); CV_Assert((ipoints.rows == 1 && ipoints.channels() == 2) || ipoints.cols*ipoints.channels() == 2); _rvec.create(3, 1, CV_64FC1); @@ -322,7 +350,7 @@ void cv::solvePnPRansac(InputArray _opoints, InputArray _ipoints, if (flags != P3P) { int i, pointsCount = (int)localInliers.size(); - Mat inlierObjectPoints(1, pointsCount, CV_32FC3), inlierImagePoints(1, pointsCount, CV_32FC2); + Mat inlierObjectPoints(1, pointsCount, CV_MAKE_TYPE(opoints.depth(), 3)), inlierImagePoints(1, pointsCount, CV_MAKE_TYPE(ipoints.depth(), 2)); for (i = 0; i < pointsCount; i++) { int index = localInliers[i]; From 61423a2d4774228f6c484569329cd64087e4acb8 Mon Sep 17 00:00:00 2001 From: Yury Gorbachev Date: Mon, 4 Aug 2014 16:44:51 +0400 Subject: [PATCH 092/189] ARM NEON accelerated implementation of cv::addWeighted, cv::inRange and cv::compare functions. NOT verified on target platform, compilation passes with and without NEON. --- modules/core/src/arithm.cpp | 244 ++++++++++++++++++++++++++++++++++-- 1 file changed, 236 insertions(+), 8 deletions(-) diff --git a/modules/core/src/arithm.cpp b/modules/core/src/arithm.cpp index 7ac3672cf7..4c6ba1c7b0 100644 --- a/modules/core/src/arithm.cpp +++ b/modules/core/src/arithm.cpp @@ -2440,6 +2440,34 @@ addWeighted8u( const uchar* src1, size_t step1, _mm_storel_epi64((__m128i*)(dst + x), u); } } +#elif CV_NEON + float32x4_t g = vdupq_n_f32 (gamma); + + for( ; x <= size.width - 8; x += 8 ) + { + uint8x8_t in1 = vld1_u8(src1+x); + uint16x8_t in1_16 = vmovl_u8(in1); + float32x4_t in1_f_l = vcvtq_f32_u32(vmovl_u16(vget_low_u16(in1_16))); + float32x4_t in1_f_h = vcvtq_f32_u32(vmovl_u16(vget_high_u16(in1_16))); + + uint8x8_t in2 = vld1_u8(src2+x); + uint16x8_t in2_16 = vmovl_u8(in2); + float32x4_t in2_f_l = vcvtq_f32_u32(vmovl_u16(vget_low_u16(in2_16))); + float32x4_t in2_f_h = vcvtq_f32_u32(vmovl_u16(vget_high_u16(in2_16))); + + float32x4_t out_f_l = vaddq_f32(vmulq_n_f32(in1_f_l, alpha), vmulq_n_f32(in2_f_l, beta)); + float32x4_t out_f_h = vaddq_f32(vmulq_n_f32(in1_f_h, alpha), vmulq_n_f32(in2_f_h, beta)); + out_f_l = vaddq_f32(out_f_l, g); + out_f_h = vaddq_f32(out_f_h, g); + + uint16x4_t out_16_l = vqmovn_u32(vcvtq_u32_f32(out_f_l)); + uint16x4_t out_16_h = vqmovn_u32(vcvtq_u32_f32(out_f_h)); + + uint16x8_t out_16 = vcombine_u16(out_16_l, out_16_h); + uint8x8_t out = vqmovn_u16(out_16); + + vst1_u8(dst+x, out); + } #endif #if CV_ENABLE_UNROLLED for( ; x <= size.width - 4; x += 4 ) @@ -2650,6 +2678,14 @@ static void cmp8u(const uchar* src1, size_t step1, const uchar* src2, size_t ste } } + #elif CV_NEON + uint8x16_t mask = code == CMP_GT ? vdupq_n_u8(0) : vdupq_n_u8(255); + + for( ; x <= size.width - 16; x += 16 ) + { + vst1q_u8(dst+x, veorq_u8(vcgtq_u8(vld1q_u8(src1+x), vld1q_u8(src2+x)), mask)); + } + #endif for( ; x < size.width; x++ ){ @@ -2674,6 +2710,13 @@ static void cmp8u(const uchar* src1, size_t step1, const uchar* src2, size_t ste _mm_storeu_si128((__m128i*)(dst + x), r00); } } + #elif CV_NEON + uint8x16_t mask = code == CMP_EQ ? vdupq_n_u8(0) : vdupq_n_u8(255); + + for( ; x <= size.width - 16; x += 16 ) + { + vst1q_u8(dst+x, veorq_u8(vceqq_u8(vld1q_u8(src1+x), vld1q_u8(src2+x)), mask)); + } #endif for( ; x < size.width; x++ ) dst[x] = (uchar)(-(src1[x] == src2[x]) ^ m); @@ -2759,6 +2802,22 @@ static void cmp16s(const short* src1, size_t step1, const short* src2, size_t st x += 8; } } + #elif CV_NEON + uint8x16_t mask = code == CMP_GT ? vdupq_n_u8(0) : vdupq_n_u8(255); + + for( ; x <= size.width - 16; x += 16 ) + { + int16x8_t in1 = vld1q_s16(src1 + x); + int16x8_t in2 = vld1q_s16(src2 + x); + uint8x8_t t1 = vmovn_u16(vcgtq_s16(in1, in2)); + + in1 = vld1q_s16(src1 + x + 8); + in2 = vld1q_s16(src2 + x + 8); + uint8x8_t t2 = vmovn_u16(vcgtq_s16(in1, in2)); + + vst1q_u8(dst+x, veorq_u8(vcombine_u8(t1, t2), mask)); + } + #endif for( ; x < size.width; x++ ){ @@ -2797,6 +2856,21 @@ static void cmp16s(const short* src1, size_t step1, const short* src2, size_t st x += 8; } } + #elif CV_NEON + uint8x16_t mask = code == CMP_EQ ? vdupq_n_u8(0) : vdupq_n_u8(255); + + for( ; x <= size.width - 16; x += 16 ) + { + int16x8_t in1 = vld1q_s16(src1 + x); + int16x8_t in2 = vld1q_s16(src2 + x); + uint8x8_t t1 = vmovn_u16(vceqq_s16(in1, in2)); + + in1 = vld1q_s16(src1 + x + 8); + in2 = vld1q_s16(src2 + x + 8); + uint8x8_t t2 = vmovn_u16(vceqq_s16(in1, in2)); + + vst1q_u8(dst+x, veorq_u8(vcombine_u8(t1, t2), mask)); + } #endif for( ; x < size.width; x++ ) dst[x] = (uchar)(-(src1[x] == src2[x]) ^ m); @@ -3085,7 +3159,7 @@ namespace cv { template -struct InRange_SSE +struct InRange_SIMD { int operator () (const T *, const T *, const T *, uchar *, int) const { @@ -3096,7 +3170,7 @@ struct InRange_SSE #if CV_SSE2 template <> -struct InRange_SSE +struct InRange_SIMD { int operator () (const uchar * src1, const uchar * src2, const uchar * src3, uchar * dst, int len) const @@ -3121,7 +3195,7 @@ struct InRange_SSE }; template <> -struct InRange_SSE +struct InRange_SIMD { int operator () (const schar * src1, const schar * src2, const schar * src3, uchar * dst, int len) const @@ -3146,7 +3220,7 @@ struct InRange_SSE }; template <> -struct InRange_SSE +struct InRange_SIMD { int operator () (const ushort * src1, const ushort * src2, const ushort * src3, uchar * dst, int len) const @@ -3172,7 +3246,7 @@ struct InRange_SSE }; template <> -struct InRange_SSE +struct InRange_SIMD { int operator () (const short * src1, const short * src2, const short * src3, uchar * dst, int len) const @@ -3198,7 +3272,7 @@ struct InRange_SSE }; template <> -struct InRange_SSE +struct InRange_SIMD { int operator () (const int * src1, const int * src2, const int * src3, uchar * dst, int len) const @@ -3230,7 +3304,7 @@ struct InRange_SSE }; template <> -struct InRange_SSE +struct InRange_SIMD { int operator () (const float * src1, const float * src2, const float * src3, uchar * dst, int len) const @@ -3261,6 +3335,160 @@ struct InRange_SSE } }; +#elif CV_NEON + +template <> +struct InRange_SIMD +{ + int operator () (const uchar * src1, const uchar * src2, const uchar * src3, + uchar * dst, int len) const + { + int x = 0; + + for ( ; x <= len - 16; x += 16 ) + { + uint8x16_t values = vld1q_u8(src1 + x); + uint8x16_t low = vld1q_u8(src2 + x); + uint8x16_t high = vld1q_u8(src3 + x); + + vst1q_u8(dst + x, vandq_u8(vcgeq_u8(values, low), vcgeq_u8(high, values))); + } + return x; + } +}; + +template <> +struct InRange_SIMD +{ + int operator () (const schar * src1, const schar * src2, const schar * src3, + uchar * dst, int len) const + { + int x = 0; + + for ( ; x <= len - 16; x += 16 ) + { + int8x16_t values = vld1q_s8(src1 + x); + int8x16_t low = vld1q_s8(src2 + x); + int8x16_t high = vld1q_s8(src3 + x); + + vst1q_u8(dst + x, vandq_u8(vcgeq_s8(values, low), vcgeq_s8(high, values))); + } + return x; + } +}; + +template <> +struct InRange_SIMD +{ + int operator () (const ushort * src1, const ushort * src2, const ushort * src3, + uchar * dst, int len) const + { + int x = 0; + + for ( ; x <= len - 16; x += 16 ) + { + uint16x8_t values = vld1q_u16((const uint16_t*)(src1 + x)); + uint16x8_t low = vld1q_u16((const uint16_t*)(src2 + x)); + uint16x8_t high = vld1q_u16((const uint16_t*)(src3 + x)); + uint8x8_t r1 = vmovn_u16(vandq_u16(vcgeq_u16(values, low), vcgeq_u16(high, values))); + + values = vld1q_u16((const uint16_t*)(src1 + x + 8)); + low = vld1q_u16((const uint16_t*)(src2 + x + 8)); + high = vld1q_u16((const uint16_t*)(src3 + x + 8)); + uint8x8_t r2 = vmovn_u16(vandq_u16(vcgeq_u16(values, low), vcgeq_u16(high, values))); + + vst1q_u8(dst + x, vcombine_u8(r1, r2)); + } + return x; + } +}; + +template <> +struct InRange_SIMD +{ + int operator () (const short * src1, const short * src2, const short * src3, + uchar * dst, int len) const + { + int x = 0; + + for ( ; x <= len - 16; x += 16 ) + { + int16x8_t values = vld1q_s16((const int16_t*)(src1 + x)); + int16x8_t low = vld1q_s16((const int16_t*)(src2 + x)); + int16x8_t high = vld1q_s16((const int16_t*)(src3 + x)); + uint8x8_t r1 = vmovn_u16(vandq_u16(vcgeq_s16(values, low), vcgeq_s16(high, values))); + + values = vld1q_s16((const int16_t*)(src1 + x + 8)); + low = vld1q_s16((const int16_t*)(src2 + x + 8)); + high = vld1q_s16((const int16_t*)(src3 + x + 8)); + uint8x8_t r2 = vmovn_u16(vandq_u16(vcgeq_s16(values, low), vcgeq_s16(high, values))); + + vst1q_u8(dst + x, vcombine_u8(r1, r2)); + } + return x; + } +}; + +template <> +struct InRange_SIMD +{ + int operator () (const int * src1, const int * src2, const int * src3, + uchar * dst, int len) const + { + int x = 0; + + for ( ; x <= len - 8; x += 8 ) + { + int32x4_t values = vld1q_s32((const int32_t*)(src1 + x)); + int32x4_t low = vld1q_s32((const int32_t*)(src2 + x)); + int32x4_t high = vld1q_s32((const int32_t*)(src3 + x)); + + uint16x4_t r1 = vmovn_u32(vandq_u32(vcgeq_s32(values, low), vcgeq_s32(high, values))); + + values = vld1q_s32((const int32_t*)(src1 + x + 4)); + low = vld1q_s32((const int32_t*)(src2 + x + 4)); + high = vld1q_s32((const int32_t*)(src3 + x + 4)); + + uint16x4_t r2 = vmovn_u32(vandq_u32(vcgeq_s32(values, low), vcgeq_s32(high, values))); + + uint16x8_t res_16 = vcombine_u16(r1, r2); + + vst1_u8(dst + x, vmovn_u16(res_16)); + } + return x; + } +}; + +template <> +struct InRange_SIMD +{ + int operator () (const float * src1, const float * src2, const float * src3, + uchar * dst, int len) const + { + int x = 0; + + for ( ; x <= len - 8; x += 8 ) + { + float32x4_t values = vld1q_f32((const float32_t*)(src1 + x)); + float32x4_t low = vld1q_f32((const float32_t*)(src2 + x)); + float32x4_t high = vld1q_f32((const float32_t*)(src3 + x)); + + uint16x4_t r1 = vmovn_u32(vandq_u32(vcgeq_f32(values, low), vcgeq_f32(high, values))); + + values = vld1q_f32((const float32_t*)(src1 + x + 4)); + low = vld1q_f32((const float32_t*)(src2 + x + 4)); + high = vld1q_f32((const float32_t*)(src3 + x + 4)); + + uint16x4_t r2 = vmovn_u32(vandq_u32(vcgeq_f32(values, low), vcgeq_f32(high, values))); + + uint16x8_t res_16 = vcombine_u16(r1, r2); + + vst1_u8(dst + x, vmovn_u16(res_16)); + } + return x; + } +}; + #endif template @@ -3272,7 +3500,7 @@ static void inRange_(const T* src1, size_t step1, const T* src2, size_t step2, step2 /= sizeof(src2[0]); step3 /= sizeof(src3[0]); - InRange_SSE vop; + InRange_SIMD vop; for( ; size.height--; src1 += step1, src2 += step2, src3 += step3, dst += step ) { From b2acd1f75a3d281f901c975c25655c7fe524afda Mon Sep 17 00:00:00 2001 From: Adrian Stratulat Date: Sat, 19 Oct 2013 17:07:08 +0000 Subject: [PATCH 093/189] Vectorize split & merge for NEON --- modules/core/src/convert.cpp | 235 +++++++++++++++++++++++++++++++++-- 1 file changed, 227 insertions(+), 8 deletions(-) diff --git a/modules/core/src/convert.cpp b/modules/core/src/convert.cpp index 21d5bdaca7..d5d1efecbc 100644 --- a/modules/core/src/convert.cpp +++ b/modules/core/src/convert.cpp @@ -50,6 +50,71 @@ namespace cv * split & merge * \****************************************************************************************/ +#if CV_NEON +template struct VSplit2; +template struct VSplit3; +template struct VSplit4; + +#define SPLIT2_KERNEL_TEMPLATE(name, data_type, reg_type, load_func, store_func) \ + template<> \ + struct name{ \ + void operator()(const data_type* src, data_type* dst0, data_type* dst1){ \ + reg_type r = load_func(src); \ + store_func(dst0, r.val[0]); \ + store_func(dst1, r.val[1]); \ + } \ + } + +#define SPLIT3_KERNEL_TEMPLATE(name, data_type, reg_type, load_func, store_func) \ + template<> \ + struct name{ \ + void operator()(const data_type* src, data_type* dst0, data_type* dst1, \ + data_type* dst2){ \ + reg_type r = load_func(src); \ + store_func(dst0, r.val[0]); \ + store_func(dst1, r.val[1]); \ + store_func(dst2, r.val[2]); \ + } \ + } + +#define SPLIT4_KERNEL_TEMPLATE(name, data_type, reg_type, load_func, store_func) \ + template<> \ + struct name{ \ + void operator()(const data_type* src, data_type* dst0, data_type* dst1, \ + data_type* dst2, data_type* dst3){ \ + reg_type r = load_func(src); \ + store_func(dst0, r.val[0]); \ + store_func(dst1, r.val[1]); \ + store_func(dst2, r.val[2]); \ + store_func(dst3, r.val[3]); \ + } \ + } + +SPLIT2_KERNEL_TEMPLATE(VSplit2, uchar , uint8x16x2_t, vld2q_u8 , vst1q_u8 ); +SPLIT2_KERNEL_TEMPLATE(VSplit2, schar , int8x16x2_t, vld2q_s8 , vst1q_s8 ); +SPLIT2_KERNEL_TEMPLATE(VSplit2, ushort, uint16x8x2_t, vld2q_u16, vst1q_u16); +SPLIT2_KERNEL_TEMPLATE(VSplit2, short , int16x8x2_t, vld2q_s16, vst1q_s16); +SPLIT2_KERNEL_TEMPLATE(VSplit2, int , int32x4x2_t, vld2q_s32, vst1q_s32); +SPLIT2_KERNEL_TEMPLATE(VSplit2, float , float32x4x2_t, vld2q_f32, vst1q_f32); +SPLIT2_KERNEL_TEMPLATE(VSplit2, int64 , int64x1x2_t, vld2_s64 , vst1_s64 ); + +SPLIT3_KERNEL_TEMPLATE(VSplit3, uchar , uint8x16x3_t, vld3q_u8 , vst1q_u8 ); +SPLIT3_KERNEL_TEMPLATE(VSplit3, schar , int8x16x3_t, vld3q_s8 , vst1q_s8 ); +SPLIT3_KERNEL_TEMPLATE(VSplit3, ushort, uint16x8x3_t, vld3q_u16, vst1q_u16); +SPLIT3_KERNEL_TEMPLATE(VSplit3, short , int16x8x3_t, vld3q_s16, vst1q_s16); +SPLIT3_KERNEL_TEMPLATE(VSplit3, int , int32x4x3_t, vld3q_s32, vst1q_s32); +SPLIT3_KERNEL_TEMPLATE(VSplit3, float , float32x4x3_t, vld3q_f32, vst1q_f32); +SPLIT3_KERNEL_TEMPLATE(VSplit3, int64 , int64x1x3_t, vld3_s64 , vst1_s64 ); + +SPLIT4_KERNEL_TEMPLATE(VSplit4, uchar , uint8x16x4_t, vld4q_u8 , vst1q_u8 ); +SPLIT4_KERNEL_TEMPLATE(VSplit4, schar , int8x16x4_t, vld4q_s8 , vst1q_s8 ); +SPLIT4_KERNEL_TEMPLATE(VSplit4, ushort, uint16x8x4_t, vld4q_u16, vst1q_u16); +SPLIT4_KERNEL_TEMPLATE(VSplit4, short , int16x8x4_t, vld4q_s16, vst1q_s16); +SPLIT4_KERNEL_TEMPLATE(VSplit4, int , int32x4x4_t, vld4q_s32, vst1q_s32); +SPLIT4_KERNEL_TEMPLATE(VSplit4, float , float32x4x4_t, vld4q_f32, vst1q_f32); +SPLIT4_KERNEL_TEMPLATE(VSplit4, int64 , int64x1x4_t, vld4_s64 , vst1_s64 ); +#endif + template static void split_( const T* src, T** dst, int len, int cn ) { @@ -58,13 +123,34 @@ split_( const T* src, T** dst, int len, int cn ) if( k == 1 ) { T* dst0 = dst[0]; - for( i = j = 0; i < len; i++, j += cn ) - dst0[i] = src[j]; + + if(cn == 1) + { + memcpy(dst0, src, len * sizeof(T)); + } + else + { + for( i = 0, j = 0 ; i < len; i++, j += cn ) + dst0[i] = src[j]; + } } else if( k == 2 ) { T *dst0 = dst[0], *dst1 = dst[1]; - for( i = j = 0; i < len; i++, j += cn ) + i = j = 0; + +#if CV_NEON + if(cn == 2) + { + int inc_i = (sizeof(T) == 8)? 1: 16/sizeof(T); + int inc_j = 2 * inc_i; + + VSplit2 vsplit; + for( ; i < len - inc_i; i += inc_i, j += inc_j) + vsplit(src + j, dst0 + i, dst1 + i); + } +#endif + for( ; i < len; i++, j += cn ) { dst0[i] = src[j]; dst1[i] = src[j+1]; @@ -73,7 +159,20 @@ split_( const T* src, T** dst, int len, int cn ) else if( k == 3 ) { T *dst0 = dst[0], *dst1 = dst[1], *dst2 = dst[2]; - for( i = j = 0; i < len; i++, j += cn ) + i = j = 0; + +#if CV_NEON + if(cn == 3) + { + int inc_i = (sizeof(T) == 8)? 1: 16/sizeof(T); + int inc_j = 3 * inc_i; + + VSplit3 vsplit; + for( ; i < len - inc_i; i += inc_i, j += inc_j) + vsplit(src + j, dst0 + i, dst1 + i, dst2 + i); + } +#endif + for( ; i < len; i++, j += cn ) { dst0[i] = src[j]; dst1[i] = src[j+1]; @@ -83,7 +182,20 @@ split_( const T* src, T** dst, int len, int cn ) else { T *dst0 = dst[0], *dst1 = dst[1], *dst2 = dst[2], *dst3 = dst[3]; - for( i = j = 0; i < len; i++, j += cn ) + i = j = 0; + +#if CV_NEON + if(cn == 4) + { + int inc_i = (sizeof(T) == 8)? 1: 16/sizeof(T); + int inc_j = 4 * inc_i; + + VSplit4 vsplit; + for( ; i < len - inc_i; i += inc_i, j += inc_j) + vsplit(src + j, dst0 + i, dst1 + i, dst2 + i, dst3 + i); + } +#endif + for( ; i < len; i++, j += cn ) { dst0[i] = src[j]; dst1[i] = src[j+1]; dst2[i] = src[j+2]; dst3[i] = src[j+3]; @@ -101,6 +213,77 @@ split_( const T* src, T** dst, int len, int cn ) } } + +#if CV_NEON +template struct VMerge2; +template struct VMerge3; +template struct VMerge4; + +#define MERGE2_KERNEL_TEMPLATE(name, data_type, reg_type, load_func, store_func) \ + template<> \ + struct name{ \ + void operator()(const data_type* src0, const data_type* src1, \ + data_type* dst){ \ + reg_type r; \ + r.val[0] = load_func(src0); \ + r.val[1] = load_func(src1); \ + store_func(dst, r); \ + } \ + } + +#define MERGE3_KERNEL_TEMPLATE(name, data_type, reg_type, load_func, store_func) \ + template<> \ + struct name{ \ + void operator()(const data_type* src0, const data_type* src1, \ + const data_type* src2, data_type* dst){ \ + reg_type r; \ + r.val[0] = load_func(src0); \ + r.val[1] = load_func(src1); \ + r.val[2] = load_func(src2); \ + store_func(dst, r); \ + } \ + } + +#define MERGE4_KERNEL_TEMPLATE(name, data_type, reg_type, load_func, store_func) \ + template<> \ + struct name{ \ + void operator()(const data_type* src0, const data_type* src1, \ + const data_type* src2, const data_type* src3, \ + data_type* dst){ \ + reg_type r; \ + r.val[0] = load_func(src0); \ + r.val[1] = load_func(src1); \ + r.val[2] = load_func(src2); \ + r.val[3] = load_func(src3); \ + store_func(dst, r); \ + } \ + } + +MERGE2_KERNEL_TEMPLATE(VMerge2, uchar , uint8x16x2_t, vld1q_u8 , vst2q_u8 ); +MERGE2_KERNEL_TEMPLATE(VMerge2, schar , int8x16x2_t, vld1q_s8 , vst2q_s8 ); +MERGE2_KERNEL_TEMPLATE(VMerge2, ushort, uint16x8x2_t, vld1q_u16, vst2q_u16); +MERGE2_KERNEL_TEMPLATE(VMerge2, short , int16x8x2_t, vld1q_s16, vst2q_s16); +MERGE2_KERNEL_TEMPLATE(VMerge2, int , int32x4x2_t, vld1q_s32, vst2q_s32); +MERGE2_KERNEL_TEMPLATE(VMerge2, float , float32x4x2_t, vld1q_f32, vst2q_f32); +MERGE2_KERNEL_TEMPLATE(VMerge2, int64 , int64x1x2_t, vld1_s64 , vst2_s64 ); + +MERGE3_KERNEL_TEMPLATE(VMerge3, uchar , uint8x16x3_t, vld1q_u8 , vst3q_u8 ); +MERGE3_KERNEL_TEMPLATE(VMerge3, schar , int8x16x3_t, vld1q_s8 , vst3q_s8 ); +MERGE3_KERNEL_TEMPLATE(VMerge3, ushort, uint16x8x3_t, vld1q_u16, vst3q_u16); +MERGE3_KERNEL_TEMPLATE(VMerge3, short , int16x8x3_t, vld1q_s16, vst3q_s16); +MERGE3_KERNEL_TEMPLATE(VMerge3, int , int32x4x3_t, vld1q_s32, vst3q_s32); +MERGE3_KERNEL_TEMPLATE(VMerge3, float , float32x4x3_t, vld1q_f32, vst3q_f32); +MERGE3_KERNEL_TEMPLATE(VMerge3, int64 , int64x1x3_t, vld1_s64 , vst3_s64 ); + +MERGE4_KERNEL_TEMPLATE(VMerge4, uchar , uint8x16x4_t, vld1q_u8 , vst4q_u8 ); +MERGE4_KERNEL_TEMPLATE(VMerge4, schar , int8x16x4_t, vld1q_s8 , vst4q_s8 ); +MERGE4_KERNEL_TEMPLATE(VMerge4, ushort, uint16x8x4_t, vld1q_u16, vst4q_u16); +MERGE4_KERNEL_TEMPLATE(VMerge4, short , int16x8x4_t, vld1q_s16, vst4q_s16); +MERGE4_KERNEL_TEMPLATE(VMerge4, int , int32x4x4_t, vld1q_s32, vst4q_s32); +MERGE4_KERNEL_TEMPLATE(VMerge4, float , float32x4x4_t, vld1q_f32, vst4q_f32); +MERGE4_KERNEL_TEMPLATE(VMerge4, int64 , int64x1x4_t, vld1_s64 , vst4_s64 ); +#endif + template static void merge_( const T** src, T* dst, int len, int cn ) { @@ -115,7 +298,19 @@ merge_( const T** src, T* dst, int len, int cn ) else if( k == 2 ) { const T *src0 = src[0], *src1 = src[1]; - for( i = j = 0; i < len; i++, j += cn ) + i = j = 0; +#if CV_NEON + if(cn == 2) + { + int inc_i = (sizeof(T) == 8)? 1: 16/sizeof(T); + int inc_j = 2 * inc_i; + + VMerge2 vmerge; + for( ; i < len - inc_i; i += inc_i, j += inc_j) + vmerge(src0 + i, src1 + i, dst + j); + } +#endif + for( ; i < len; i++, j += cn ) { dst[j] = src0[i]; dst[j+1] = src1[i]; @@ -124,7 +319,19 @@ merge_( const T** src, T* dst, int len, int cn ) else if( k == 3 ) { const T *src0 = src[0], *src1 = src[1], *src2 = src[2]; - for( i = j = 0; i < len; i++, j += cn ) + i = j = 0; +#if CV_NEON + if(cn == 3) + { + int inc_i = (sizeof(T) == 8)? 1: 16/sizeof(T); + int inc_j = 3 * inc_i; + + VMerge3 vmerge; + for( ; i < len - inc_i; i += inc_i, j += inc_j) + vmerge(src0 + i, src1 + i, src2 + i, dst + j); + } +#endif + for( ; i < len; i++, j += cn ) { dst[j] = src0[i]; dst[j+1] = src1[i]; @@ -134,7 +341,19 @@ merge_( const T** src, T* dst, int len, int cn ) else { const T *src0 = src[0], *src1 = src[1], *src2 = src[2], *src3 = src[3]; - for( i = j = 0; i < len; i++, j += cn ) + i = j = 0; +#if CV_NEON + if(cn == 4) + { + int inc_i = (sizeof(T) == 8)? 1: 16/sizeof(T); + int inc_j = 4 * inc_i; + + VMerge4 vmerge; + for( ; i < len - inc_i; i += inc_i, j += inc_j) + vmerge(src0 + i, src1 + i, src2 + i, src3 + i, dst + j); + } +#endif + for( ; i < len; i++, j += cn ) { dst[j] = src0[i]; dst[j+1] = src1[i]; dst[j+2] = src2[i]; dst[j+3] = src3[i]; From 8c2c3b54d934c308e006d280ca28b1653215999c Mon Sep 17 00:00:00 2001 From: Elena Gvozdeva Date: Mon, 4 Aug 2014 11:28:48 +0400 Subject: [PATCH 094/189] fixed ocl tests for BlendLinear, BoxFilter, Integral --- modules/imgproc/test/ocl/test_blend.cpp | 2 +- modules/imgproc/test/ocl/test_boxfilter.cpp | 2 +- modules/imgproc/test/ocl/test_imgproc.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/imgproc/test/ocl/test_blend.cpp b/modules/imgproc/test/ocl/test_blend.cpp index 7b62b97172..6d8a15fb2b 100644 --- a/modules/imgproc/test/ocl/test_blend.cpp +++ b/modules/imgproc/test/ocl/test_blend.cpp @@ -117,7 +117,7 @@ OCL_TEST_P(BlendLinear, Accuracy) OCL_OFF(cv::blendLinear(src1_roi, src2_roi, weights1_roi, weights2_roi, dst_roi)); OCL_ON(cv::blendLinear(usrc1_roi, usrc2_roi, uweights1_roi, uweights2_roi, udst_roi)); - Near(depth <= CV_32S ? 1.0 : 0.2); + Near(depth <= CV_32S ? 1.0 : 0.5); } } diff --git a/modules/imgproc/test/ocl/test_boxfilter.cpp b/modules/imgproc/test/ocl/test_boxfilter.cpp index 63f4ebff20..4940dff799 100644 --- a/modules/imgproc/test/ocl/test_boxfilter.cpp +++ b/modules/imgproc/test/ocl/test_boxfilter.cpp @@ -109,7 +109,7 @@ OCL_TEST_P(BoxFilter, Mat) OCL_OFF(cv::boxFilter(src_roi, dst_roi, -1, ksize, anchor, normalize, borderType)); OCL_ON(cv::boxFilter(usrc_roi, udst_roi, -1, ksize, anchor, normalize, borderType)); - Near(depth <= CV_32S ? 1 : 1e-3); + Near(depth <= CV_32S ? 1 : 3e-3); } } diff --git a/modules/imgproc/test/ocl/test_imgproc.cpp b/modules/imgproc/test/ocl/test_imgproc.cpp index ad8e26cbca..69d8f4e786 100644 --- a/modules/imgproc/test/ocl/test_imgproc.cpp +++ b/modules/imgproc/test/ocl/test_imgproc.cpp @@ -347,7 +347,7 @@ OCL_TEST_P(Integral, Mat2) OCL_ON(cv::integral(usrc_roi, udst_roi, udst2_roi, sdepth, sqdepth)); Near(); - sqdepth == CV_32F ? Near2(1e-6, true) : Near2(); + sqdepth == CV_32F ? Near2(2e-4, true) : Near2(); } } From f32b52ea8dcb79a4a8b8e06ce7922fa1fc2bd5f9 Mon Sep 17 00:00:00 2001 From: Elena Gvozdeva Date: Mon, 4 Aug 2014 14:15:21 +0400 Subject: [PATCH 095/189] fixed test for CvtColor RGB -> Luv --- modules/imgproc/test/ocl/test_color.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/modules/imgproc/test/ocl/test_color.cpp b/modules/imgproc/test/ocl/test_color.cpp index 82bf2c06f1..5f3a2f73f9 100644 --- a/modules/imgproc/test/ocl/test_color.cpp +++ b/modules/imgproc/test/ocl/test_color.cpp @@ -302,14 +302,14 @@ OCL_TEST_P(CvtColor8u32f, Lab2LRGBA) { performTest(3, 4, CVTCODE(Lab2LRGB), dept // RGB -> Luv -OCL_TEST_P(CvtColor8u32f, BGR2Luv) { performTest(3, 3, CVTCODE(BGR2Luv), depth == CV_8U ? 1 : 1e-2); } -OCL_TEST_P(CvtColor8u32f, RGB2Luv) { performTest(3, 3, CVTCODE(RGB2Luv), depth == CV_8U ? 1 : 1e-2); } -OCL_TEST_P(CvtColor8u32f, LBGR2Luv) { performTest(3, 3, CVTCODE(LBGR2Luv), depth == CV_8U ? 1 : 4e-3); } -OCL_TEST_P(CvtColor8u32f, LRGB2Luv) { performTest(3, 3, CVTCODE(LRGB2Luv), depth == CV_8U ? 1 : 5e-3); } -OCL_TEST_P(CvtColor8u32f, BGRA2Luv) { performTest(4, 3, CVTCODE(BGR2Luv), depth == CV_8U ? 1 : 8e-3); } -OCL_TEST_P(CvtColor8u32f, RGBA2Luv) { performTest(4, 3, CVTCODE(RGB2Luv), depth == CV_8U ? 1 : 9e-3); } -OCL_TEST_P(CvtColor8u32f, LBGRA2Luv) { performTest(4, 3, CVTCODE(LBGR2Luv), depth == CV_8U ? 1 : 5e-3); } -OCL_TEST_P(CvtColor8u32f, LRGBA2Luv) { performTest(4, 3, CVTCODE(LRGB2Luv), depth == CV_8U ? 1 : 5e-3); } +OCL_TEST_P(CvtColor8u32f, BGR2Luv) { performTest(3, 3, CVTCODE(BGR2Luv), depth == CV_8U ? 1 : 1.5e-2); } +OCL_TEST_P(CvtColor8u32f, RGB2Luv) { performTest(3, 3, CVTCODE(RGB2Luv), depth == CV_8U ? 1 : 1.5e-2); } +OCL_TEST_P(CvtColor8u32f, LBGR2Luv) { performTest(3, 3, CVTCODE(LBGR2Luv), depth == CV_8U ? 1 : 6e-3); } +OCL_TEST_P(CvtColor8u32f, LRGB2Luv) { performTest(3, 3, CVTCODE(LRGB2Luv), depth == CV_8U ? 1 : 6e-3); } +OCL_TEST_P(CvtColor8u32f, BGRA2Luv) { performTest(4, 3, CVTCODE(BGR2Luv), depth == CV_8U ? 1 : 2e-2); } +OCL_TEST_P(CvtColor8u32f, RGBA2Luv) { performTest(4, 3, CVTCODE(RGB2Luv), depth == CV_8U ? 1 : 2e-2); } +OCL_TEST_P(CvtColor8u32f, LBGRA2Luv) { performTest(4, 3, CVTCODE(LBGR2Luv), depth == CV_8U ? 1 : 6e-3); } +OCL_TEST_P(CvtColor8u32f, LRGBA2Luv) { performTest(4, 3, CVTCODE(LRGB2Luv), depth == CV_8U ? 1 : 6e-3); } OCL_TEST_P(CvtColor8u32f, Luv2BGR) { performTest(3, 3, CVTCODE(Luv2BGR), depth == CV_8U ? 1 : 7e-5); } OCL_TEST_P(CvtColor8u32f, Luv2RGB) { performTest(3, 3, CVTCODE(Luv2RGB), depth == CV_8U ? 1 : 7e-5); } From 7999fbf7652a944b975bac1a3122f7288c0bc083 Mon Sep 17 00:00:00 2001 From: Elena Gvozdeva Date: Tue, 5 Aug 2014 11:55:18 +0400 Subject: [PATCH 096/189] fixed ocl_integral --- modules/imgproc/src/opencl/integral_sum.cl | 7 +++++-- modules/imgproc/test/ocl/test_imgproc.cpp | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/modules/imgproc/src/opencl/integral_sum.cl b/modules/imgproc/src/opencl/integral_sum.cl index 49a3bde955..3c51c1a28b 100644 --- a/modules/imgproc/src/opencl/integral_sum.cl +++ b/modules/imgproc/src/opencl/integral_sum.cl @@ -132,8 +132,11 @@ kernel void integral_sum_rows(__global const uchar *buf_ptr, int buf_step, int b } dst_sq_offset += dst_sq_step; - dst_sq = (__global sumSQT *)(dst_sq_ptr + mad24(x, dst_sq_step, dst_sq_offset)); - dst_sq[0] = 0; + if (x < rows - 1) + { + dst_sq = (__global sumSQT *)(dst_sq_ptr + mad24(x, dst_sq_step, dst_sq_offset)); + dst_sq[0] = 0; + } int buf_sq_index = mad24((int)sizeof(sumSQT), x, buf_sq_offset); sumSQT accum_sq = 0; diff --git a/modules/imgproc/test/ocl/test_imgproc.cpp b/modules/imgproc/test/ocl/test_imgproc.cpp index 69d8f4e786..ad8e26cbca 100644 --- a/modules/imgproc/test/ocl/test_imgproc.cpp +++ b/modules/imgproc/test/ocl/test_imgproc.cpp @@ -347,7 +347,7 @@ OCL_TEST_P(Integral, Mat2) OCL_ON(cv::integral(usrc_roi, udst_roi, udst2_roi, sdepth, sqdepth)); Near(); - sqdepth == CV_32F ? Near2(2e-4, true) : Near2(); + sqdepth == CV_32F ? Near2(1e-6, true) : Near2(); } } From 2637b18b67a9236fd58f3239e11f25d9f0393c19 Mon Sep 17 00:00:00 2001 From: vbystricky Date: Tue, 5 Aug 2014 16:34:23 +0400 Subject: [PATCH 097/189] Fix epsilon for OpenCL function ConverTo, for convertation from float to integer types --- modules/core/test/ocl/test_matrix_operation.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/core/test/ocl/test_matrix_operation.cpp b/modules/core/test/ocl/test_matrix_operation.cpp index 1ff3bec6c2..252db01d16 100644 --- a/modules/core/test/ocl/test_matrix_operation.cpp +++ b/modules/core/test/ocl/test_matrix_operation.cpp @@ -96,7 +96,7 @@ OCL_TEST_P(ConvertTo, Accuracy) OCL_OFF(src_roi.convertTo(dst_roi, dstType, alpha, beta)); OCL_ON(usrc_roi.convertTo(udst_roi, dstType, alpha, beta)); - double eps = src_depth >= CV_32F || CV_MAT_DEPTH(dstType) >= CV_32F ? 2e-4 : 1; + double eps = CV_MAT_DEPTH(dstType) >= CV_32F ? 2e-4 : 1; OCL_EXPECT_MATS_NEAR(dst, eps); } } From 774d277c1f3ac883d489fd2011da788204d63b1b Mon Sep 17 00:00:00 2001 From: vbystricky Date: Tue, 5 Aug 2014 17:30:06 +0400 Subject: [PATCH 098/189] Fix error in OpenCl version of meanstddev for continues src and not continues mask --- modules/core/src/opencl/meanstddev.cl | 2 +- modules/core/src/stat.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/core/src/opencl/meanstddev.cl b/modules/core/src/opencl/meanstddev.cl index 39e917e96d..ed68c64538 100644 --- a/modules/core/src/opencl/meanstddev.cl +++ b/modules/core/src/opencl/meanstddev.cl @@ -59,7 +59,7 @@ __kernel void meanStdDev(__global const uchar * srcptr, int src_step, int src_of for (int grain = groups * WGS; id < total; id += grain) { #ifdef HAVE_MASK -#ifdef HAVE_SRC_CONT +#ifdef HAVE_MASK_CONT int mask_index = id; #else int mask_index = mad24(id / cols, mask_step, id % cols); diff --git a/modules/core/src/stat.cpp b/modules/core/src/stat.cpp index f47a28ad26..26bae7a44d 100644 --- a/modules/core/src/stat.cpp +++ b/modules/core/src/stat.cpp @@ -918,7 +918,8 @@ static bool ocl_meanStdDev( InputArray _src, OutputArray _mean, OutputArray _sdv { int type = _src.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type); bool doubleSupport = ocl::Device::getDefault().doubleFPConfig() > 0, - isContinuous = _src.isContinuous(); + isContinuous = _src.isContinuous(), + isMaskContinuous = _mask.isContinuous(); const ocl::Device &defDev = ocl::Device::getDefault(); int groups = defDev.maxComputeUnits(); if (defDev.isIntel()) @@ -943,13 +944,14 @@ static bool ocl_meanStdDev( InputArray _src, OutputArray _mean, OutputArray _sdv char cvt[2][40]; String opts = format("-D srcT=%s -D srcT1=%s -D dstT=%s -D dstT1=%s -D sqddepth=%d" - " -D sqdstT=%s -D sqdstT1=%s -D convertToSDT=%s -D cn=%d%s" + " -D sqdstT=%s -D sqdstT1=%s -D convertToSDT=%s -D cn=%d%s%s" " -D convertToDT=%s -D WGS=%d -D WGS2_ALIGNED=%d%s%s", ocl::typeToStr(type), ocl::typeToStr(depth), ocl::typeToStr(dtype), ocl::typeToStr(ddepth), sqddepth, ocl::typeToStr(sqdtype), ocl::typeToStr(sqddepth), ocl::convertTypeStr(depth, sqddepth, cn, cvt[0]), cn, isContinuous ? " -D HAVE_SRC_CONT" : "", + isMaskContinuous ? " -D HAVE_MASK_CONT" : "", ocl::convertTypeStr(depth, ddepth, cn, cvt[1]), (int)wgs, wgs2_aligned, haveMask ? " -D HAVE_MASK" : "", doubleSupport ? " -D DOUBLE_SUPPORT" : ""); From 55188fe991a962e6b04fb087e0845b3a0d4b88b4 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Fri, 1 Aug 2014 18:11:20 +0400 Subject: [PATCH 099/189] world fix --- CMakeLists.txt | 1 - apps/traincascade/CMakeLists.txt | 10 +- cmake/OpenCVDetectAndroidSDK.cmake | 7 +- cmake/OpenCVModule.cmake | 364 ++++++++++-------- cmake/OpenCVPCHSupport.cmake | 12 + cmake/OpenCVUtils.cmake | 104 ++++- cmake/templates/OpenCVConfig.cmake.in | 37 +- modules/CMakeLists.txt | 2 +- .../camera_wrapper/CMakeLists.txt | 2 +- modules/calib3d/perf/opencl/perf_stereobm.cpp | 2 +- modules/calib3d/src/circlesgrid.cpp | 1 + modules/calib3d/src/stereobm.cpp | 2 +- modules/calib3d/test/opencl/test_stereobm.cpp | 2 +- modules/core/CMakeLists.txt | 5 +- modules/core/perf/opencl/perf_arithm.cpp | 2 +- modules/core/perf/opencl/perf_bufferpool.cpp | 2 +- modules/core/perf/opencl/perf_channels.cpp | 2 +- modules/core/perf/opencl/perf_dxt.cpp | 2 +- modules/core/perf/opencl/perf_gemm.cpp | 2 +- modules/core/perf/opencl/perf_matop.cpp | 2 +- modules/core/perf/opencl/perf_usage_flags.cpp | 2 +- modules/core/src/arithm.cpp | 2 +- modules/core/src/convert.cpp | 2 +- modules/core/src/copy.cpp | 2 +- modules/core/src/dxt.cpp | 2 +- modules/core/src/mathfuncs.cpp | 2 +- modules/core/src/matmul.cpp | 2 +- modules/core/src/matrix.cpp | 2 +- .../src/opencl/runtime/opencl_clamdblas.cpp | 2 +- .../src/opencl/runtime/opencl_clamdfft.cpp | 2 +- .../core/src/opencl/runtime/opencl_core.cpp | 2 +- modules/core/src/stat.cpp | 2 +- modules/core/src/umatrix.cpp | 2 +- modules/core/test/ocl/test_arithm.cpp | 2 +- modules/core/test/ocl/test_channels.cpp | 2 +- modules/core/test/ocl/test_dft.cpp | 2 +- modules/core/test/ocl/test_gemm.cpp | 2 +- modules/core/test/ocl/test_matrix_expr.cpp | 2 +- .../core/test/ocl/test_matrix_operation.cpp | 2 +- modules/cudaarithm/CMakeLists.txt | 2 - modules/cudacodec/CMakeLists.txt | 2 - modules/cudev/test/CMakeLists.txt | 2 +- .../perf/opencl/perf_brute_force_matcher.cpp | 2 +- modules/features2d/perf/opencl/perf_fast.cpp | 2 +- modules/features2d/perf/opencl/perf_orb.cpp | 2 +- modules/features2d/src/fast.cpp | 2 +- modules/features2d/src/kaze/AKAZEConfig.h | 2 +- modules/features2d/src/kaze/AKAZEFeatures.h | 2 +- modules/features2d/src/kaze/KAZEConfig.h | 2 +- modules/features2d/src/kaze/fed.cpp | 2 +- .../src/kaze/nldiffusion_functions.h | 2 +- modules/features2d/src/matchers.cpp | 2 +- modules/features2d/src/orb.cpp | 2 +- .../test/ocl/test_brute_force_matcher.cpp | 2 +- modules/highgui/CMakeLists.txt | 43 ++- modules/imgcodecs/CMakeLists.txt | 35 +- modules/imgproc/perf/opencl/perf_3vs4.cpp | 2 +- .../imgproc/perf/opencl/perf_accumulate.cpp | 2 +- modules/imgproc/perf/opencl/perf_blend.cpp | 2 +- modules/imgproc/perf/opencl/perf_color.cpp | 2 +- modules/imgproc/perf/opencl/perf_filters.cpp | 2 +- modules/imgproc/perf/opencl/perf_gftt.cpp | 2 +- modules/imgproc/perf/opencl/perf_imgproc.cpp | 2 +- modules/imgproc/perf/opencl/perf_imgwarp.cpp | 2 +- .../perf/opencl/perf_matchTemplate.cpp | 2 +- modules/imgproc/perf/opencl/perf_moments.cpp | 2 +- modules/imgproc/perf/opencl/perf_pyramid.cpp | 2 +- modules/imgproc/src/accum.cpp | 2 +- modules/imgproc/src/blend.cpp | 2 +- modules/imgproc/src/canny.cpp | 2 +- modules/imgproc/src/clahe.cpp | 2 +- modules/imgproc/src/color.cpp | 2 +- modules/imgproc/src/corner.cpp | 2 +- modules/imgproc/src/deriv.cpp | 2 +- modules/imgproc/src/featureselect.cpp | 2 +- modules/imgproc/src/filter.cpp | 2 +- modules/imgproc/src/histogram.cpp | 2 +- modules/imgproc/src/imgwarp.cpp | 2 +- modules/imgproc/src/moments.cpp | 2 +- modules/imgproc/src/morph.cpp | 2 +- modules/imgproc/src/pyramids.cpp | 2 +- modules/imgproc/src/smooth.cpp | 2 +- modules/imgproc/src/sumpixels.cpp | 2 +- modules/imgproc/src/templmatch.cpp | 2 +- modules/imgproc/src/thresh.cpp | 2 +- modules/imgproc/test/ocl/test_accumulate.cpp | 2 +- modules/imgproc/test/ocl/test_blend.cpp | 2 +- modules/imgproc/test/ocl/test_boxfilter.cpp | 2 +- modules/imgproc/test/ocl/test_canny.cpp | 2 +- modules/imgproc/test/ocl/test_color.cpp | 2 +- modules/imgproc/test/ocl/test_filter2d.cpp | 2 +- modules/imgproc/test/ocl/test_filters.cpp | 2 +- modules/imgproc/test/ocl/test_gftt.cpp | 2 +- modules/imgproc/test/ocl/test_histogram.cpp | 2 +- modules/imgproc/test/ocl/test_imgproc.cpp | 2 +- .../imgproc/test/ocl/test_match_template.cpp | 2 +- .../imgproc/test/ocl/test_medianfilter.cpp | 2 +- modules/imgproc/test/ocl/test_pyramids.cpp | 2 +- modules/imgproc/test/ocl/test_sepfilter2D.cpp | 2 +- modules/imgproc/test/ocl/test_warp.cpp | 2 +- modules/java/CMakeLists.txt | 16 +- modules/nonfree/src/surf.ocl.cpp | 2 +- .../objdetect/perf/opencl/perf_cascades.cpp | 2 +- .../objdetect/perf/opencl/perf_hogdetect.cpp | 2 +- modules/objdetect/src/cascadedetect.cpp | 2 +- modules/objdetect/src/hog.cpp | 2 +- .../test/opencl/test_hogdetector.cpp | 2 +- modules/photo/perf/opencl/perf_denoising.cpp | 2 +- .../src/fast_nlmeans_denoising_opencl.hpp | 4 +- modules/photo/test/ocl/test_denoising.cpp | 2 +- modules/python/CMakeLists.txt | 14 +- modules/stitching/perf/opencl/perf_stitch.cpp | 2 +- .../stitching/perf/opencl/perf_warpers.cpp | 2 +- modules/stitching/src/blenders.cpp | 2 +- modules/stitching/src/timelapsers.cpp | 2 +- modules/stitching/src/warpers.cpp | 2 +- modules/stitching/test/ocl/test_warpers.cpp | 2 +- modules/superres/src/btv_l1.cpp | 2 +- modules/superres/test/test_precomp.hpp | 2 +- modules/ts/CMakeLists.txt | 2 - modules/video/perf/opencl/perf_bgfg_mog2.cpp | 2 +- modules/video/perf/opencl/perf_motempl.cpp | 2 +- .../perf/opencl/perf_optflow_dualTVL1.cpp | 2 +- .../perf/opencl/perf_optflow_farneback.cpp | 2 +- .../video/perf/opencl/perf_optflow_pyrlk.cpp | 2 +- modules/video/src/bgfg_gaussmix2.cpp | 2 +- modules/video/src/lkpyramid.cpp | 2 +- modules/video/src/motempl.cpp | 2 +- modules/video/src/optflowgf.cpp | 2 +- modules/video/src/tvl1flow.cpp | 2 +- modules/video/test/ocl/test_bgfg_mog2.cpp | 2 +- modules/video/test/ocl/test_motempl.cpp | 2 +- .../video/test/ocl/test_optflow_farneback.cpp | 2 +- .../video/test/ocl/test_optflow_tvl1flow.cpp | 2 +- modules/video/test/ocl/test_optflowpyrlk.cpp | 2 +- modules/videoio/CMakeLists.txt | 72 ++-- modules/viz/CMakeLists.txt | 2 +- modules/world/CMakeLists.txt | 139 ++----- modules/world/src/precomp.hpp | 6 +- modules/world/src/world_init.cpp | 3 - samples/android/CMakeLists.txt | 4 +- samples/cpp/CMakeLists.txt | 6 +- samples/directx/CMakeLists.txt | 2 +- samples/gpu/CMakeLists.txt | 10 +- samples/gpu/performance/CMakeLists.txt | 4 +- samples/tapi/CMakeLists.txt | 2 +- 146 files changed, 625 insertions(+), 520 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dd2054d977..e397912943 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -554,7 +554,6 @@ endif() # ---------------------------------------------------------------------------- # Finalization: generate configuration-based files # ---------------------------------------------------------------------------- -ocv_track_build_dependencies() # Generate platform-dependent and configuration-dependent headers include(cmake/OpenCVGenHeaders.cmake) diff --git a/apps/traincascade/CMakeLists.txt b/apps/traincascade/CMakeLists.txt index ab32b4cfb5..59d48172da 100644 --- a/apps/traincascade/CMakeLists.txt +++ b/apps/traincascade/CMakeLists.txt @@ -6,18 +6,18 @@ if(NOT OCV_DEPENDENCIES_FOUND) endif() project(traincascade) +set(the_target opencv_traincascade) -ocv_include_directories("${CMAKE_CURRENT_SOURCE_DIR}" "${OpenCV_SOURCE_DIR}/include/opencv") -ocv_include_modules(${OPENCV_TRAINCASCADE_DEPS}) +ocv_target_include_directories(${the_target} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}" "${OpenCV_SOURCE_DIR}/include/opencv") +ocv_target_include_modules(${the_target} ${OPENCV_TRAINCASCADE_DEPS}) file(GLOB SRCS *.cpp) file(GLOB HDRS *.h*) set(traincascade_files ${SRCS} ${HDRS}) -set(the_target opencv_traincascade) -add_executable(${the_target} ${traincascade_files}) -target_link_libraries(${the_target} ${OPENCV_TRAINCASCADE_DEPS}) +ocv_add_executable(${the_target} ${traincascade_files}) +ocv_target_link_libraries(${the_target} ${OPENCV_TRAINCASCADE_DEPS}) set_target_properties(${the_target} PROPERTIES DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}" diff --git a/cmake/OpenCVDetectAndroidSDK.cmake b/cmake/OpenCVDetectAndroidSDK.cmake index 90e11761e7..d97e9ec74f 100644 --- a/cmake/OpenCVDetectAndroidSDK.cmake +++ b/cmake/OpenCVDetectAndroidSDK.cmake @@ -280,9 +280,6 @@ macro(add_android_project target path) string(REGEX REPLACE "LOCAL_MODULE[ ]*:=[ ]*([a-zA-Z_][a-zA-Z_0-9]*)[ ]*" "\\1" JNI_LIB_NAME "${JNI_LIB_NAME}") if(JNI_LIB_NAME) - ocv_include_modules_recurse(${android_proj_NATIVE_DEPS}) - ocv_include_directories("${path}/jni") - if(NATIVE_APP_GLUE) include_directories(${ANDROID_NDK}/sources/android/native_app_glue) list(APPEND android_proj_jni_files ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c) @@ -291,7 +288,9 @@ macro(add_android_project target path) endif() add_library(${JNI_LIB_NAME} MODULE ${android_proj_jni_files}) - target_link_libraries(${JNI_LIB_NAME} ${OPENCV_LINKER_LIBS} ${android_proj_NATIVE_DEPS}) + ocv_target_include_modules_recurse(${JNI_LIB_NAME} ${android_proj_NATIVE_DEPS}) + ocv_target_include_directories(${JNI_LIB_NAME} "${path}/jni") + ocv_target_link_libraries(${JNI_LIB_NAME} ${OPENCV_LINKER_LIBS} ${android_proj_NATIVE_DEPS}) set_target_properties(${JNI_LIB_NAME} PROPERTIES OUTPUT_NAME "${JNI_LIB_NAME}" diff --git a/cmake/OpenCVModule.cmake b/cmake/OpenCVModule.cmake index 3f4da5f106..d53f0666ec 100644 --- a/cmake/OpenCVModule.cmake +++ b/cmake/OpenCVModule.cmake @@ -6,16 +6,19 @@ # Global variables: # # OPENCV_MODULE_${the_module}_LOCATION +# OPENCV_MODULE_${the_module}_BINARY_DIR # OPENCV_MODULE_${the_module}_DESCRIPTION # OPENCV_MODULE_${the_module}_CLASS - PUBLIC|INTERNAL|BINDINGS # OPENCV_MODULE_${the_module}_HEADERS # OPENCV_MODULE_${the_module}_SOURCES # OPENCV_MODULE_${the_module}_DEPS - final flattened set of module dependencies +# OPENCV_MODULE_${the_module}_DEPS_TO_LINK - differs from above for world build only # OPENCV_MODULE_${the_module}_DEPS_EXT - non-module dependencies # OPENCV_MODULE_${the_module}_REQ_DEPS # OPENCV_MODULE_${the_module}_OPT_DEPS # OPENCV_MODULE_${the_module}_PRIVATE_REQ_DEPS # OPENCV_MODULE_${the_module}_PRIVATE_OPT_DEPS +# OPENCV_MODULE_${the_module}_IS_PART_OF_WORLD # HAVE_${the_module} - for fast check of module availability # To control the setup of the module you could also set: @@ -53,6 +56,7 @@ foreach(mod ${OPENCV_MODULES_BUILD} ${OPENCV_MODULES_DISABLED_USER} ${OPENCV_MOD unset(OPENCV_MODULE_${mod}_OPT_DEPS CACHE) unset(OPENCV_MODULE_${mod}_PRIVATE_REQ_DEPS CACHE) unset(OPENCV_MODULE_${mod}_PRIVATE_OPT_DEPS CACHE) + unset(OPENCV_MODULE_${mod}_LINK_DEPS CACHE) endforeach() # clean modules info which needs to be recalculated @@ -61,6 +65,7 @@ set(OPENCV_MODULES_BUILD "" CACHE INTERNAL "List of OpenCV modules incl set(OPENCV_MODULES_DISABLED_USER "" CACHE INTERNAL "List of OpenCV modules explicitly disabled by user") set(OPENCV_MODULES_DISABLED_AUTO "" CACHE INTERNAL "List of OpenCV modules implicitly disabled due to dependencies") set(OPENCV_MODULES_DISABLED_FORCE "" CACHE INTERNAL "List of OpenCV modules which can not be build in current configuration") +unset(OPENCV_WORLD_MODULES CACHE) # adds dependencies to OpenCV module # Usage: @@ -68,6 +73,7 @@ set(OPENCV_MODULES_DISABLED_FORCE "" CACHE INTERNAL "List of OpenCV modules whic # Notes: # * - can include full names of modules or full pathes to shared/static libraries or cmake targets macro(ocv_add_dependencies full_modname) + ocv_debug_message("ocv_add_dependencies(" ${full_modname} ${ARGN} ")") #we don't clean the dependencies here to allow this macro several times for every module foreach(d "REQUIRED" ${ARGN}) if(d STREQUAL "REQUIRED") @@ -105,6 +111,7 @@ endmacro() # Example: # ocv_add_module(yaom INTERNAL opencv_core opencv_highgui opencv_flann OPTIONAL opencv_cuda) macro(ocv_add_module _name) + ocv_debug_message("ocv_add_module(" ${_name} ${ARGN} ")") string(TOLOWER "${_name}" name) string(REGEX REPLACE "^opencv_" "" ${name} "${name}") set(the_module opencv_${name}) @@ -134,6 +141,8 @@ macro(ocv_add_module _name) set(OPENCV_MODULE_${the_module}_DESCRIPTION "${the_description}" CACHE INTERNAL "Brief description of ${the_module} module") set(OPENCV_MODULE_${the_module}_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}" CACHE INTERNAL "Location of ${the_module} module sources") + set(OPENCV_MODULE_${the_module}_LINK_DEPS "" CACHE INTERNAL "") + # parse list of dependencies if("${ARGV1}" STREQUAL "INTERNAL" OR "${ARGV1}" STREQUAL "BINDINGS") set(OPENCV_MODULE_${the_module}_CLASS "${ARGV1}" CACHE INTERNAL "The category of the module") @@ -150,8 +159,14 @@ macro(ocv_add_module _name) endif() # add self to the world dependencies - if(NOT DEFINED OPENCV_MODULE_IS_PART_OF_WORLD AND NOT OPENCV_MODULE_${the_module}_CLASS STREQUAL "BINDINGS" OR OPENCV_MODULE_IS_PART_OF_WORLD) + if((NOT DEFINED OPENCV_MODULE_IS_PART_OF_WORLD AND NOT OPENCV_MODULE_${the_module}_CLASS STREQUAL "BINDINGS" + AND NOT OPENCV_PROCESSING_EXTRA_MODULES) + OR OPENCV_MODULE_IS_PART_OF_WORLD + ) + set(OPENCV_MODULE_${the_module}_IS_PART_OF_WORLD ON CACHE INTERNAL "") ocv_add_dependencies(opencv_world OPTIONAL ${the_module}) + else() + set(OPENCV_MODULE_${the_module}_IS_PART_OF_WORLD OFF CACHE INTERNAL "") endif() if(BUILD_${the_module}) @@ -164,12 +179,15 @@ macro(ocv_add_module _name) # stop processing of current file return() - else(OPENCV_INITIAL_PASS) + else() + set(OPENCV_MODULE_${the_module}_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}" CACHE INTERNAL "") if(NOT BUILD_${the_module}) return() # extra protection from redefinition endif() - project(${the_module}) - endif(OPENCV_INITIAL_PASS) + if((NOT OPENCV_MODULE_${the_module}_IS_PART_OF_WORLD AND NOT ${the_module} STREQUAL opencv_world) OR NOT ${BUILD_opencv_world}) + project(${the_module}) + endif() + endif() endmacro() # excludes module from current configuration @@ -200,7 +218,11 @@ macro(ocv_glob_modules) # collect modules set(OPENCV_INITIAL_PASS ON) + set(OPENCV_PROCESSING_EXTRA_MODULES 0) foreach(__path ${ARGN}) + if("${__path}" STREQUAL "EXTRA") + set(OPENCV_PROCESSING_EXTRA_MODULES 1) + endif() get_filename_component(__path "${__path}" ABSOLUTE) list(FIND __directories_observed "${__path}" __pathIdx) @@ -222,16 +244,7 @@ macro(ocv_glob_modules) endif() list(APPEND __directories_observed "${__modpath}") - if(OCV_MODULE_RELOCATE_ON_INITIAL_PASS) - file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${mod}/.${mod}") - file(COPY "${__modpath}/CMakeLists.txt" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/${mod}/.${mod}") - add_subdirectory("${CMAKE_CURRENT_BINARY_DIR}/${mod}/.${mod}" "${CMAKE_CURRENT_BINARY_DIR}/${mod}/.${mod}") - if("${OPENCV_MODULE_opencv_${mod}_LOCATION}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}/${mod}/.${mod}") - set(OPENCV_MODULE_opencv_${mod}_LOCATION "${__modpath}" CACHE PATH "" FORCE) - endif() - else() - add_subdirectory("${__modpath}" "${CMAKE_CURRENT_BINARY_DIR}/${mod}/.${mod}") - endif() + add_subdirectory("${__modpath}" "${CMAKE_CURRENT_BINARY_DIR}/${mod}/.${mod}") endif() endforeach() endif() @@ -244,15 +257,31 @@ macro(ocv_glob_modules) # create modules set(OPENCV_INITIAL_PASS OFF PARENT_SCOPE) set(OPENCV_INITIAL_PASS OFF) - foreach(m ${OPENCV_MODULES_BUILD}) - if(m MATCHES "^opencv_") - string(REGEX REPLACE "^opencv_" "" __shortname "${m}") - add_subdirectory("${OPENCV_MODULE_${m}_LOCATION}" "${CMAKE_CURRENT_BINARY_DIR}/${__shortname}") - else() - message(WARNING "Check module name: ${m}") - add_subdirectory("${OPENCV_MODULE_${m}_LOCATION}" "${CMAKE_CURRENT_BINARY_DIR}/${m}") - endif() - endforeach() + if(${BUILD_opencv_world}) + add_subdirectory("${OPENCV_MODULE_opencv_world_LOCATION}" "${CMAKE_CURRENT_BINARY_DIR}/world") + foreach(m ${OPENCV_MODULES_BUILD}) + if(NOT OPENCV_MODULE_${m}_IS_PART_OF_WORLD AND NOT ${m} STREQUAL opencv_world) + message(STATUS "Processing module ${m}...") + if(m MATCHES "^opencv_") + string(REGEX REPLACE "^opencv_" "" __shortname "${m}") + add_subdirectory("${OPENCV_MODULE_${m}_LOCATION}" "${CMAKE_CURRENT_BINARY_DIR}/${__shortname}") + else() + message(WARNING "Check module name: ${m}") + add_subdirectory("${OPENCV_MODULE_${m}_LOCATION}" "${CMAKE_CURRENT_BINARY_DIR}/${m}") + endif() + endif() + endforeach() + else() + foreach(m ${OPENCV_MODULES_BUILD}) + if(m MATCHES "^opencv_") + string(REGEX REPLACE "^opencv_" "" __shortname "${m}") + add_subdirectory("${OPENCV_MODULE_${m}_LOCATION}" "${CMAKE_CURRENT_BINARY_DIR}/${__shortname}") + else() + message(WARNING "Check module name: ${m}") + add_subdirectory("${OPENCV_MODULE_${m}_LOCATION}" "${CMAKE_CURRENT_BINARY_DIR}/${m}") + endif() + endforeach() + endif() unset(__shortname) endmacro() @@ -394,11 +423,36 @@ function(__ocv_resolve_dependencies) __ocv_sort_modules_by_deps(OPENCV_MODULE_${m}_DEPS) ocv_list_sort(OPENCV_MODULE_${m}_DEPS_EXT) + set(LINK_DEPS ${OPENCV_MODULE_${m}_DEPS}) + + # process world + if(BUILD_opencv_world) + if(OPENCV_MODULE_${m}_IS_PART_OF_WORLD) + list(APPEND OPENCV_WORLD_MODULES ${m}) + endif() + foreach(m2 ${OPENCV_MODULES_BUILD}) + if(OPENCV_MODULE_${m2}_IS_PART_OF_WORLD) + if(";${LINK_DEPS};" MATCHES ";${m2};") + list(REMOVE_ITEM LINK_DEPS ${m2}) + if(NOT (";${LINK_DEPS};" MATCHES ";opencv_world;") AND NOT (${m} STREQUAL opencv_world)) + list(APPEND LINK_DEPS opencv_world) + endif() + endif() + if(${m} STREQUAL opencv_world) + list(APPEND OPENCV_MODULE_opencv_world_DEPS_EXT ${OPENCV_MODULE_${m2}_DEPS_EXT}) + endif() + endif() + endforeach() + endif() + set(OPENCV_MODULE_${m}_DEPS ${OPENCV_MODULE_${m}_DEPS} CACHE INTERNAL "Flattened dependencies of ${m} module") set(OPENCV_MODULE_${m}_DEPS_EXT ${OPENCV_MODULE_${m}_DEPS_EXT} CACHE INTERNAL "Extra dependencies of ${m} module") + set(OPENCV_MODULE_${m}_DEPS_TO_LINK ${LINK_DEPS} CACHE INTERNAL "Flattened dependencies of ${m} module (for linker)") -# message(STATUS " module deps: ${OPENCV_MODULE_${m}_DEPS}") -# message(STATUS " extra deps: ${OPENCV_MODULE_${m}_DEPS_EXT}") +# message(STATUS " module deps of ${m}: ${OPENCV_MODULE_${m}_DEPS}") +# message(STATUS " module link deps of ${m}: ${OPENCV_MODULE_${m}_DEPS_TO_LINK}") +# message(STATUS " extra deps of ${m}: ${OPENCV_MODULE_${m}_DEPS_EXT}") +# message(STATUS "") endforeach() __ocv_sort_modules_by_deps(OPENCV_MODULES_BUILD) @@ -406,6 +460,7 @@ function(__ocv_resolve_dependencies) set(OPENCV_MODULES_PUBLIC ${OPENCV_MODULES_PUBLIC} CACHE INTERNAL "List of OpenCV modules marked for export") set(OPENCV_MODULES_BUILD ${OPENCV_MODULES_BUILD} CACHE INTERNAL "List of OpenCV modules included into the build") set(OPENCV_MODULES_DISABLED_AUTO ${OPENCV_MODULES_DISABLED_AUTO} CACHE INTERNAL "List of OpenCV modules implicitly disabled due to dependencies") + set(OPENCV_WORLD_MODULES ${OPENCV_WORLD_MODULES} CACHE INTERNAL "List of OpenCV modules included into the world") endfunction() @@ -422,18 +477,31 @@ macro(ocv_include_modules) endforeach() endmacro() +# setup include paths for the list of passed modules +macro(ocv_target_include_modules target) + foreach(d ${ARGN}) + if(d MATCHES "^opencv_" AND HAVE_${d}) + if (EXISTS "${OPENCV_MODULE_${d}_LOCATION}/include") + ocv_target_include_directories(${target} "${OPENCV_MODULE_${d}_LOCATION}/include") + endif() + elseif(EXISTS "${d}") + ocv_target_include_directories(${target} "${d}") + endif() + endforeach() +endmacro() + # setup include paths for the list of passed modules and recursively add dependent modules -macro(ocv_include_modules_recurse) +macro(ocv_target_include_modules_recurse target) foreach(d ${ARGN}) if(d MATCHES "^opencv_" AND HAVE_${d}) if (EXISTS "${OPENCV_MODULE_${d}_LOCATION}/include") - ocv_include_directories("${OPENCV_MODULE_${d}_LOCATION}/include") + ocv_target_include_directories(${target} "${OPENCV_MODULE_${d}_LOCATION}/include") endif() if(OPENCV_MODULE_${d}_DEPS) - ocv_include_modules(${OPENCV_MODULE_${d}_DEPS}) + ocv_target_include_modules(${target} ${OPENCV_MODULE_${d}_DEPS}) endif() elseif(EXISTS "${d}") - ocv_include_directories("${d}") + ocv_target_include_directories(${target} "${d}") endif() endforeach() endmacro() @@ -441,11 +509,12 @@ endmacro() # setup include path for OpenCV headers for specified module # ocv_module_include_directories() macro(ocv_module_include_directories) - ocv_include_directories("${OPENCV_MODULE_${the_module}_LOCATION}/include" - "${OPENCV_MODULE_${the_module}_LOCATION}/src" - "${CMAKE_CURRENT_BINARY_DIR}" # for precompiled headers - ) - ocv_include_modules(${OPENCV_MODULE_${the_module}_DEPS} ${ARGN}) + ocv_target_include_directories(${the_module} + "${OPENCV_MODULE_${the_module}_LOCATION}/include" + "${OPENCV_MODULE_${the_module}_LOCATION}/src" + "${CMAKE_CURRENT_BINARY_DIR}" # for precompiled headers + ) + ocv_target_include_modules(${the_module} ${OPENCV_MODULE_${the_module}_DEPS} ${ARGN}) endmacro() @@ -454,6 +523,8 @@ endmacro() # Usage: # ocv_set_module_sources([HEADERS] [SOURCES] ) macro(ocv_set_module_sources) + ocv_debug_message("ocv_set_module_sources(" ${ARGN} ")") + set(OPENCV_MODULE_${the_module}_HEADERS "") set(OPENCV_MODULE_${the_module}_SOURCES "") @@ -481,31 +552,50 @@ endmacro() # Usage: # ocv_glob_module_sources([EXCLUDE_CUDA] ) macro(ocv_glob_module_sources) + ocv_debug_message("ocv_glob_module_sources(" ${ARGN} ")") set(_argn ${ARGN}) list(FIND _argn "EXCLUDE_CUDA" exclude_cuda) if(NOT exclude_cuda EQUAL -1) list(REMOVE_AT _argn ${exclude_cuda}) endif() - file(GLOB_RECURSE lib_srcs "src/*.cpp") - file(GLOB_RECURSE lib_int_hdrs "src/*.hpp" "src/*.h") - file(GLOB lib_hdrs "include/opencv2/*.hpp" "include/opencv2/${name}/*.hpp" "include/opencv2/${name}/*.h") - file(GLOB lib_hdrs_detail "include/opencv2/${name}/detail/*.hpp" "include/opencv2/${name}/detail/*.h") - file(GLOB_RECURSE lib_srcs_apple "src/*.mm") + file(GLOB_RECURSE lib_srcs + "${CMAKE_CURRENT_LIST_DIR}/src/*.cpp" + ) + file(GLOB_RECURSE lib_int_hdrs + "${CMAKE_CURRENT_LIST_DIR}/src/*.hpp" + "${CMAKE_CURRENT_LIST_DIR}/src/*.h" + ) + file(GLOB lib_hdrs + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/*.hpp" + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.hpp" + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.h" + ) + file(GLOB lib_hdrs_detail + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/detail/*.hpp" + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/detail/*.h" + ) if (APPLE) + file(GLOB_RECURSE lib_srcs_apple + "${CMAKE_CURRENT_LIST_DIR}/src/*.mm" + ) list(APPEND lib_srcs ${lib_srcs_apple}) endif() - ocv_source_group("Src" DIRBASE "${CMAKE_CURRENT_SOURCE_DIR}/src" FILES ${lib_srcs} ${lib_int_hdrs}) - ocv_source_group("Include" DIRBASE "${CMAKE_CURRENT_SOURCE_DIR}/include" FILES ${lib_hdrs} ${lib_hdrs_detail}) + ocv_source_group("Src" DIRBASE "${CMAKE_CURRENT_LIST_DIR}/src" FILES ${lib_srcs} ${lib_int_hdrs}) + ocv_source_group("Include" DIRBASE "${CMAKE_CURRENT_LIST_DIR}/include" FILES ${lib_hdrs} ${lib_hdrs_detail}) if (exclude_cuda EQUAL -1) - file(GLOB lib_cuda_srcs "src/cuda/*.cu") + file(GLOB lib_cuda_srcs + "${CMAKE_CURRENT_LIST_DIR}/src/cuda/*.cu" + ) set(cuda_objs "") set(lib_cuda_hdrs "") if(HAVE_CUDA) ocv_include_directories(${CUDA_INCLUDE_DIRS}) - file(GLOB lib_cuda_hdrs "src/cuda/*.hpp") + file(GLOB lib_cuda_hdrs + "${CMAKE_CURRENT_LIST_DIR}/src/cuda/*.hpp" + ) ocv_cuda_compile(cuda_objs ${lib_cuda_srcs} ${lib_cuda_hdrs}) source_group("Src\\Cuda" FILES ${lib_cuda_srcs} ${lib_cuda_hdrs}) @@ -516,17 +606,19 @@ macro(ocv_glob_module_sources) set(lib_cuda_hdrs "") endif() - file(GLOB cl_kernels "src/opencl/*.cl") + file(GLOB cl_kernels + "${CMAKE_CURRENT_LIST_DIR}/src/opencl/*.cl" + ) if(cl_kernels) + set(OCL_NAME opencl_kernels_${name}) ocv_include_directories(${OPENCL_INCLUDE_DIRS}) - string(REGEX REPLACE "opencv_" "" the_module_barename "${the_module}") add_custom_command( - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp" - COMMAND ${CMAKE_COMMAND} -DMODULE_NAME="${the_module_barename}" -DCL_DIR="${CMAKE_CURRENT_SOURCE_DIR}/src/opencl" -DOUTPUT="${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" -P "${OpenCV_SOURCE_DIR}/cmake/cl2cpp.cmake" + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${OCL_NAME}.cpp" "${CMAKE_CURRENT_BINARY_DIR}/${OCL_NAME}.hpp" + COMMAND ${CMAKE_COMMAND} -DMODULE_NAME="${name}" -DCL_DIR="${CMAKE_CURRENT_LIST_DIR}/src/opencl" -DOUTPUT="${CMAKE_CURRENT_BINARY_DIR}/${OCL_NAME}.cpp" -P "${OpenCV_SOURCE_DIR}/cmake/cl2cpp.cmake" DEPENDS ${cl_kernels} "${OpenCV_SOURCE_DIR}/cmake/cl2cpp.cmake") ocv_source_group("Src\\opencl\\kernels" FILES ${cl_kernels}) - ocv_source_group("Src\\opencl\\kernels\\autogenerated" FILES "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp") - list(APPEND lib_srcs ${cl_kernels} "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp") + ocv_source_group("Src\\opencl\\kernels\\autogenerated" FILES "${CMAKE_CURRENT_BINARY_DIR}/${OCL_NAME}.cpp" "${CMAKE_CURRENT_BINARY_DIR}/${OCL_NAME}.hpp") + list(APPEND lib_srcs ${cl_kernels} "${CMAKE_CURRENT_BINARY_DIR}/${OCL_NAME}.cpp" "${CMAKE_CURRENT_BINARY_DIR}/${OCL_NAME}.hpp") endif() ocv_set_module_sources(${_argn} HEADERS ${lib_hdrs} ${lib_hdrs_detail} @@ -537,29 +629,39 @@ endmacro() # creates new target, configures standard dependencies, compilers flags, install rules # Usage: # ocv_create_module() -# ocv_create_module(SKIP_LINK) +# ocv_create_module() macro(ocv_create_module) + ocv_debug_message("ocv_create_module(" ${ARGN} ")") + set(OPENCV_MODULE_${the_module}_LINK_DEPS "${OPENCV_MODULE_${the_module}_LINK_DEPS};${ARGN}" CACHE INTERNAL "") + if(${BUILD_opencv_world} AND OPENCV_MODULE_${the_module}_IS_PART_OF_WORLD) + # nothing + set(the_module_target opencv_world) + else() + _ocv_create_module(${ARGN}) + set(the_module_target ${the_module}) + endif() +endmacro() + +macro(_ocv_create_module) # The condition we ought to be testing here is whether ocv_add_precompiled_headers will # be called at some point in the future. We can't look into the future, though, # so this will have to do. - if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/precomp.hpp") + if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/precomp.hpp" AND NOT ${the_module} STREQUAL opencv_world) get_native_precompiled_header(${the_module} precomp.hpp) endif() - add_library(${the_module} ${OPENCV_MODULE_TYPE} ${OPENCV_MODULE_${the_module}_HEADERS} ${OPENCV_MODULE_${the_module}_SOURCES} + ocv_add_library(${the_module} ${OPENCV_MODULE_TYPE} ${OPENCV_MODULE_${the_module}_HEADERS} ${OPENCV_MODULE_${the_module}_SOURCES} "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/cvconfig.h" "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/opencv2/opencv_modules.hpp" ${${the_module}_pch}) if(NOT the_module STREQUAL opencv_ts) set_target_properties(${the_module} PROPERTIES COMPILE_DEFINITIONS OPENCV_NOSTL) endif() - if(NOT "${ARGN}" STREQUAL "SKIP_LINK") - target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS}) - target_link_libraries(${the_module} LINK_INTERFACE_LIBRARIES ${OPENCV_MODULE_${the_module}_DEPS}) - target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS_EXT} ${OPENCV_LINKER_LIBS} ${IPP_LIBS} ${ARGN}) - if (HAVE_CUDA) - target_link_libraries(${the_module} ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY}) - endif() + ocv_target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS_TO_LINK}) + ocv_target_link_libraries(${the_module} LINK_INTERFACE_LIBRARIES ${OPENCV_MODULE_${the_module}_DEPS_TO_LINK}) + ocv_target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS_EXT} ${OPENCV_LINKER_LIBS} ${IPP_LIBS} ${ARGN}) + if (HAVE_CUDA) + ocv_target_link_libraries(${the_module} ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY}) endif() add_dependencies(opencv_modules ${the_module}) @@ -614,13 +716,16 @@ macro(ocv_create_module) endif() endforeach() endif() + _ocv_add_precompiled_headers(${the_module}) endmacro() # opencv precompiled headers macro (can add pch to modules and tests) # this macro must be called after any "add_definitions" commands, otherwise precompiled headers will not work # Usage: # ocv_add_precompiled_headers(${the_module}) -macro(ocv_add_precompiled_headers the_target) +macro(_ocv_add_precompiled_headers the_target) + ocv_debug_message("ocv_add_precompiled_headers(" ${the_target} ${ARGN} ")") + if("${the_target}" MATCHES "^opencv_test_.*$") SET(pch_path "test/test_") elseif("${the_target}" MATCHES "^opencv_perf_.*$") @@ -637,6 +742,7 @@ endmacro() # Usage: # ocv_define_module(module_name [INTERNAL] [EXCLUDE_CUDA] [REQUIRED] [] [OPTIONAL ]) macro(ocv_define_module module_name) + ocv_debug_message("ocv_define_module(" ${module_name} ${ARGN} ")") set(_argn ${ARGN}) set(exclude_cuda "") foreach(arg ${_argn}) @@ -647,10 +753,9 @@ macro(ocv_define_module module_name) endforeach() ocv_add_module(${module_name} ${_argn}) - ocv_module_include_directories() ocv_glob_module_sources(${exclude_cuda}) + ocv_module_include_directories() ocv_create_module() - ocv_add_precompiled_headers(${the_module}) ocv_add_accuracy_tests() ocv_add_perf_tests() @@ -685,7 +790,7 @@ macro(__ocv_parse_test_sources tests_type) set(__file_group_name "") set(__file_group_sources "") elseif(arg STREQUAL "DEPENDS_ON") - set(__currentvar "OPENCV_TEST_${the_module}_DEPS") + set(__currentvar "OPENCV_${tests_type}_${the_module}_DEPS") elseif("${__currentvar}" STREQUAL "__file_group_sources" AND NOT __file_group_name) set(__file_group_name "${arg}") else() @@ -700,20 +805,20 @@ endmacro() # this is a command for adding OpenCV performance tests to the module # ocv_add_perf_tests() function(ocv_add_perf_tests) - set(perf_path "${CMAKE_CURRENT_SOURCE_DIR}/perf") + ocv_debug_message("ocv_add_perf_tests(" ${ARGN} ")") + + set(perf_path "${CMAKE_CURRENT_LIST_DIR}/perf") if(BUILD_PERF_TESTS AND EXISTS "${perf_path}") __ocv_parse_test_sources(PERF ${ARGN}) # opencv_imgcodecs is required for imread/imwrite - set(perf_deps ${the_module} opencv_ts opencv_imgcodecs ${OPENCV_PERF_${the_module}_DEPS} ${OPENCV_MODULE_opencv_ts_DEPS}) + set(perf_deps ${the_module} opencv_ts opencv_imgcodecs ${OPENCV_MODULE_${the_module}_DEPS} ${OPENCV_MODULE_opencv_ts_DEPS}) ocv_check_dependencies(${perf_deps}) if(OCV_DEPENDENCIES_FOUND) set(the_target "opencv_perf_${name}") # project(${the_target}) - ocv_module_include_directories(${perf_deps} "${perf_path}") - if(NOT OPENCV_PERF_${the_module}_SOURCES) file(GLOB_RECURSE perf_srcs "${perf_path}/*.cpp") file(GLOB_RECURSE perf_hdrs "${perf_path}/*.hpp" "${perf_path}/*.h") @@ -722,10 +827,13 @@ function(ocv_add_perf_tests) set(OPENCV_PERF_${the_module}_SOURCES ${perf_srcs} ${perf_hdrs}) endif() - get_native_precompiled_header(${the_target} perf_precomp.hpp) + if(NOT BUILD_opencv_world) + get_native_precompiled_header(${the_target} perf_precomp.hpp) + endif() - add_executable(${the_target} ${OPENCV_PERF_${the_module}_SOURCES} ${${the_target}_pch}) - target_link_libraries(${the_target} ${OPENCV_MODULE_${the_module}_DEPS} ${perf_deps} ${OPENCV_LINKER_LIBS}) + ocv_add_executable(${the_target} ${OPENCV_PERF_${the_module}_SOURCES} ${${the_target}_pch}) + ocv_target_include_modules(${the_target} ${perf_deps} "${perf_path}") + ocv_target_link_libraries(${the_target} ${OPENCV_MODULE_${the_module}_DEPS} ${perf_deps} ${OPENCV_LINKER_LIBS}) add_dependencies(opencv_perf_tests ${the_target}) # Additional target properties @@ -738,8 +846,9 @@ function(ocv_add_perf_tests) set_target_properties(${the_target} PROPERTIES FOLDER "tests performance") endif() - ocv_add_precompiled_headers(${the_target}) - + if(NOT BUILD_opencv_world) + _ocv_add_precompiled_headers(${the_target}) + endif() else(OCV_DEPENDENCIES_FOUND) # TODO: warn about unsatisfied dependencies endif(OCV_DEPENDENCIES_FOUND) @@ -752,21 +861,19 @@ endfunction() # this is a command for adding OpenCV accuracy/regression tests to the module # ocv_add_accuracy_tests([FILES ] [DEPENDS_ON] ) function(ocv_add_accuracy_tests) - set(test_path "${CMAKE_CURRENT_SOURCE_DIR}/test") - ocv_check_dependencies(${test_deps}) + ocv_debug_message("ocv_add_accuracy_tests(" ${ARGN} ")") + + set(test_path "${CMAKE_CURRENT_LIST_DIR}/test") if(BUILD_TESTS AND EXISTS "${test_path}") __ocv_parse_test_sources(TEST ${ARGN}) # opencv_imgcodecs is required for imread/imwrite - set(test_deps ${the_module} opencv_ts opencv_imgcodecs opencv_videoio ${OPENCV_TEST_${the_module}_DEPS} ${OPENCV_MODULE_opencv_ts_DEPS}) + set(test_deps ${the_module} opencv_ts opencv_imgcodecs opencv_videoio ${OPENCV_MODULE_${the_module}_DEPS} ${OPENCV_MODULE_opencv_ts_DEPS}) ocv_check_dependencies(${test_deps}) - if(OCV_DEPENDENCIES_FOUND) set(the_target "opencv_test_${name}") # project(${the_target}) - ocv_module_include_directories(${test_deps} "${test_path}") - if(NOT OPENCV_TEST_${the_module}_SOURCES) file(GLOB_RECURSE test_srcs "${test_path}/*.cpp") file(GLOB_RECURSE test_hdrs "${test_path}/*.hpp" "${test_path}/*.h") @@ -775,10 +882,13 @@ function(ocv_add_accuracy_tests) set(OPENCV_TEST_${the_module}_SOURCES ${test_srcs} ${test_hdrs}) endif() - get_native_precompiled_header(${the_target} test_precomp.hpp) - add_executable(${the_target} ${OPENCV_TEST_${the_module}_SOURCES} ${${the_target}_pch}) + if(NOT BUILD_opencv_world) + get_native_precompiled_header(${the_target} test_precomp.hpp) + endif() - target_link_libraries(${the_target} ${OPENCV_MODULE_${the_module}_DEPS} ${test_deps} ${OPENCV_LINKER_LIBS}) + ocv_add_executable(${the_target} ${OPENCV_TEST_${the_module}_SOURCES} ${${the_target}_pch}) + ocv_target_include_modules(${the_target} ${test_deps} "${test_path}") + ocv_target_link_libraries(${the_target} ${OPENCV_MODULE_${the_module}_DEPS} ${test_deps} ${OPENCV_LINKER_LIBS}) add_dependencies(opencv_tests ${the_target}) # Additional target properties @@ -795,7 +905,9 @@ function(ocv_add_accuracy_tests) get_target_property(LOC ${the_target} LOCATION) add_test(${the_target} "${LOC}") - ocv_add_precompiled_headers(${the_target}) + if(NOT BUILD_opencv_world) + _ocv_add_precompiled_headers(${the_target}) + endif() else(OCV_DEPENDENCIES_FOUND) # TODO: warn about unsatisfied dependencies endif(OCV_DEPENDENCIES_FOUND) @@ -807,6 +919,8 @@ function(ocv_add_accuracy_tests) endfunction() function(ocv_add_samples) + ocv_debug_message("ocv_add_samples(" ${ARGN} ")") + set(samples_path "${CMAKE_CURRENT_SOURCE_DIR}/samples") string(REGEX REPLACE "^opencv_" "" module_id ${the_module}) @@ -816,15 +930,14 @@ function(ocv_add_samples) if(OCV_DEPENDENCIES_FOUND) file(GLOB sample_sources "${samples_path}/*.cpp") - ocv_include_modules(${OPENCV_MODULE_${the_module}_DEPS}) foreach(source ${sample_sources}) get_filename_component(name "${source}" NAME_WE) set(the_target "example_${module_id}_${name}") - add_executable(${the_target} "${source}") - target_link_libraries(${the_target} ${samples_deps}) - + ocv_add_executable(${the_target} "${source}") + ocv_target_include_modules(${the_target} ${samples_deps}) + ocv_target_link_libraries(${the_target} ${samples_deps}) set_target_properties(${the_target} PROPERTIES PROJECT_LABEL "(sample) ${name}") if(ENABLE_SOLUTION_FOLDERS) @@ -847,82 +960,3 @@ function(ocv_add_samples) PERMISSIONS OWNER_READ GROUP_READ WORLD_READ COMPONENT samples) endif() endfunction() - -# internal macro; finds all link dependencies of the module -# should be used at the end of CMake processing -macro(__ocv_track_module_link_dependencies the_module optkind) - set(${the_module}_MODULE_DEPS_${optkind} "") - set(${the_module}_EXTRA_DEPS_${optkind} "") - - get_target_property(__module_type ${the_module} TYPE) - if(__module_type STREQUAL "STATIC_LIBRARY") - #in case of static library we have to inherit its dependencies (in right order!!!) - if(NOT DEFINED ${the_module}_LIB_DEPENDS_${optkind}) - ocv_split_libs_list(${the_module}_LIB_DEPENDS ${the_module}_LIB_DEPENDS_DBG ${the_module}_LIB_DEPENDS_OPT) - endif() - - set(__resolved_deps "") - set(__mod_depends ${${the_module}_LIB_DEPENDS_${optkind}}) - set(__has_cycle FALSE) - - while(__mod_depends) - list(GET __mod_depends 0 __dep) - list(REMOVE_AT __mod_depends 0) - if(__dep STREQUAL the_module) - set(__has_cycle TRUE) - else()#if("${OPENCV_MODULES_BUILD}" MATCHES "(^|;)${__dep}(;|$)") - ocv_regex_escape(__rdep "${__dep}") - if(__resolved_deps MATCHES "(^|;)${__rdep}(;|$)") - #all dependencies of this module are already resolved - list(APPEND ${the_module}_MODULE_DEPS_${optkind} "${__dep}") - else() - get_target_property(__module_type ${__dep} TYPE) - if(__module_type STREQUAL "STATIC_LIBRARY") - if(NOT DEFINED ${__dep}_LIB_DEPENDS_${optkind}) - ocv_split_libs_list(${__dep}_LIB_DEPENDS ${__dep}_LIB_DEPENDS_DBG ${__dep}_LIB_DEPENDS_OPT) - endif() - list(INSERT __mod_depends 0 ${${__dep}_LIB_DEPENDS_${optkind}} ${__dep}) - list(APPEND __resolved_deps "${__dep}") - elseif(NOT __module_type) - list(APPEND ${the_module}_EXTRA_DEPS_${optkind} "${__dep}") - endif() - endif() - #else() - # get_target_property(__dep_location "${__dep}" LOCATION) - endif() - endwhile() - - ocv_list_unique(${the_module}_MODULE_DEPS_${optkind}) - #ocv_list_reverse(${the_module}_MODULE_DEPS_${optkind}) - ocv_list_unique(${the_module}_EXTRA_DEPS_${optkind}) - #ocv_list_reverse(${the_module}_EXTRA_DEPS_${optkind}) - - if(__has_cycle) - # not sure if it can work - list(APPEND ${the_module}_MODULE_DEPS_${optkind} "${the_module}") - endif() - - unset(__dep_location) - unset(__mod_depends) - unset(__resolved_deps) - unset(__has_cycle) - unset(__rdep) - endif()#STATIC_LIBRARY - unset(__module_type) - - #message("${the_module}_MODULE_DEPS_${optkind}") - #message(" ${${the_module}_MODULE_DEPS_${optkind}}") - #message(" ${OPENCV_MODULE_${the_module}_DEPS}") - #message("") - #message("${the_module}_EXTRA_DEPS_${optkind}") - #message(" ${${the_module}_EXTRA_DEPS_${optkind}}") - #message("") -endmacro() - -# creates lists of build dependencies needed for external projects -macro(ocv_track_build_dependencies) - foreach(m ${OPENCV_MODULES_BUILD}) - __ocv_track_module_link_dependencies("${m}" OPT) - __ocv_track_module_link_dependencies("${m}" DBG) - endforeach() -endmacro() diff --git a/cmake/OpenCVPCHSupport.cmake b/cmake/OpenCVPCHSupport.cmake index 8af30f1151..e5fb90e6ff 100644 --- a/cmake/OpenCVPCHSupport.cmake +++ b/cmake/OpenCVPCHSupport.cmake @@ -68,6 +68,15 @@ MACRO(_PCH_GET_COMPILE_FLAGS _out_compile_flags) endif() ENDFOREACH(item) + get_target_property(DIRINC ${_PCH_current_target} INCLUDE_DIRECTORIES ) + FOREACH(item ${DIRINC}) + if(item MATCHES "^${OpenCV_SOURCE_DIR}/modules/") + LIST(APPEND ${_out_compile_flags} "${_PCH_include_prefix}\"${item}\"") + else() + LIST(APPEND ${_out_compile_flags} "${_PCH_isystem_prefix}\"${item}\"") + endif() + ENDFOREACH(item) + GET_DIRECTORY_PROPERTY(_directory_flags DEFINITIONS) GET_DIRECTORY_PROPERTY(_global_definitions DIRECTORY ${OpenCV_SOURCE_DIR} DEFINITIONS) #MESSAGE("_directory_flags ${_directory_flags} ${_global_definitions}" ) @@ -254,6 +263,9 @@ MACRO(ADD_PRECOMPILED_HEADER _targetName _input) endif() endif() + get_target_property(DIRINC ${_targetName} INCLUDE_DIRECTORIES) + set_target_properties(${_targetName}_pch_dephelp PROPERTIES INCLUDE_DIRECTORIES "${DIRINC}") + #MESSAGE("_compile_FLAGS: ${_compile_FLAGS}") #message("COMMAND ${CMAKE_CXX_COMPILER} ${_compile_FLAGS} -x c++-header -o ${_output} ${_input}") diff --git a/cmake/OpenCVUtils.cmake b/cmake/OpenCVUtils.cmake index d8171770de..a7d449f1b9 100644 --- a/cmake/OpenCVUtils.cmake +++ b/cmake/OpenCVUtils.cmake @@ -42,6 +42,11 @@ macro(ocv_assert) endif() endmacro() +macro(ocv_debug_message) +# string(REPLACE ";" " " __msg "${ARGN}") +# message(STATUS "${__msg}") +endmacro() + macro(ocv_check_environment_variables) foreach(_var ${ARGN}) if(NOT DEFINED ${_var} AND DEFINED ENV{${_var}}) @@ -53,8 +58,18 @@ macro(ocv_check_environment_variables) endforeach() endmacro() +# rename modules target to world if needed +macro(_ocv_fix_target target_var) + if(BUILD_opencv_world) + if(OPENCV_MODULE_${${target_var}}_IS_PART_OF_WORLD) + set(${target_var} opencv_world) + endif() + endif() +endmacro() + # adds include directories in such way that directories from the OpenCV source tree go first function(ocv_include_directories) + ocv_debug_message("ocv_include_directories( ${ARGN} )") set(__add_before "") foreach(dir ${ARGN}) get_filename_component(__abs_dir "${dir}" ABSOLUTE) @@ -67,6 +82,30 @@ function(ocv_include_directories) include_directories(BEFORE ${__add_before}) endfunction() +# adds include directories in such way that directories from the OpenCV source tree go first +function(ocv_target_include_directories target) + _ocv_fix_target(target) + set(__params "") + foreach(dir ${ARGN}) + get_filename_component(__abs_dir "${dir}" ABSOLUTE) + if("${__abs_dir}" MATCHES "^${OpenCV_SOURCE_DIR}" OR "${__abs_dir}" MATCHES "^${OpenCV_BINARY_DIR}") + list(APPEND __params "${__abs_dir}") + else() + list(APPEND __params "${dir}") + endif() + endforeach() + if(CMAKE_VERSION VERSION_LESS 2.8.11) + include_directories(${__params}) + else() + if(TARGET ${target}) + target_include_directories(${target} PRIVATE ${__params}) + else() + set(__new_inc "${OCV_TARGET_INCLUDE_DIRS_${target}};${__params}") + set(OCV_TARGET_INCLUDE_DIRS_${target} "${__new_inc}" CACHE INTERNAL "") + endif() + endif() +endfunction() + # clears all passed variables macro(ocv_clear_vars) foreach(_var ${ARGN}) @@ -295,8 +334,8 @@ endfunction() macro(ocv_finalize_status) if(NOT OPENCV_SKIP_STATUS_FINALIZATION) - if(TARGET opencv_core) - execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${OPENCV_BUILD_INFO_FILE}" "${opencv_core_BINARY_DIR}/version_string.inc" OUTPUT_QUIET) + if(DEFINED OPENCV_MODULE_opencv_core_BINARY_DIR) + execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${OPENCV_BUILD_INFO_FILE}" "${OPENCV_MODULE_opencv_core_BINARY_DIR}/version_string.inc" OUTPUT_QUIET) endif() endif() endmacro() @@ -533,16 +572,20 @@ function(ocv_install_target) # message(STATUS "Process ${__target} dst=${__dst}...") if(DEFINED __dst) - get_target_property(fname ${__target} LOCATION_DEBUG) - if(fname MATCHES "\\.lib$") - string(REGEX REPLACE "\\.lib$" ".pdb" fname "${fname}") - install(FILES ${fname} DESTINATION ${__dst} CONFIGURATIONS Debug) - endif() + if(CMAKE_VERSION VERSION_LESS 2.8.12) + get_target_property(fname ${__target} LOCATION_DEBUG) + if(fname MATCHES "\\.lib$") + string(REGEX REPLACE "\\.lib$" ".pdb" fname "${fname}") + install(FILES ${fname} DESTINATION ${__dst} CONFIGURATIONS Debug) + endif() - get_target_property(fname ${__target} LOCATION_RELEASE) - if(fname MATCHES "\\.lib$") - string(REGEX REPLACE "\\.lib$" ".pdb" fname "${fname}") - install(FILES ${fname} DESTINATION ${__dst} CONFIGURATIONS Release) + get_target_property(fname ${__target} LOCATION_RELEASE) + if(fname MATCHES "\\.lib$") + string(REGEX REPLACE "\\.lib$" ".pdb" fname "${fname}") + install(FILES ${fname} DESTINATION ${__dst} CONFIGURATIONS Release) + endif() + else() + # CMake 2.8.12 brokes PDB support in STATIC libraries for MSVS endif() endif() endif() @@ -637,6 +680,9 @@ endmacro() ################################################################################################ # short command to setup source group function(ocv_source_group group) + if(BUILD_opencv_world AND OPENCV_MODULE_${the_module}_IS_PART_OF_WORLD) + set(group "${the_module}\\${group}") + endif() cmake_parse_arguments(SG "" "DIRBASE" "GLOB;GLOB_RECURSE;FILES" ${ARGN}) set(files "") if(SG_FILES) @@ -669,3 +715,39 @@ function(ocv_source_group group) source_group(${group} FILES ${files}) endif() endfunction() + +function(ocv_target_link_libraries target) + _ocv_fix_target(target) + set(LINK_DEPS ${ARGN}) + # process world + if(BUILD_opencv_world) + foreach(m ${OPENCV_MODULES_BUILD}) + if(OPENCV_MODULE_${m}_IS_PART_OF_WORLD) + if(";${LINK_DEPS};" MATCHES ";${m};") + list(REMOVE_ITEM LINK_DEPS ${m}) + if(NOT (";${LINK_DEPS};" MATCHES ";opencv_world;")) + list(APPEND LINK_DEPS opencv_world) + endif() + endif() + endif() + endforeach() + endif() + target_link_libraries(${target} ${LINK_DEPS}) +endfunction() + +function(_ocv_append_target_includes target) + if(DEFINED OCV_TARGET_INCLUDE_DIRS_${target}) + target_include_directories(${target} PRIVATE ${OCV_TARGET_INCLUDE_DIRS_${target}}) + unset(OCV_TARGET_INCLUDE_DIRS_${target} CACHE) + endif() +endfunction() + +function(ocv_add_executable target) + add_executable(${target} ${ARGN}) + _ocv_append_target_includes(${target}) +endfunction() + +function(ocv_add_library target) + add_library(${target} ${ARGN}) + _ocv_append_target_includes(${target}) +endfunction() \ No newline at end of file diff --git a/cmake/templates/OpenCVConfig.cmake.in b/cmake/templates/OpenCVConfig.cmake.in index e3bde4bbe3..5d97474f3a 100644 --- a/cmake/templates/OpenCVConfig.cmake.in +++ b/cmake/templates/OpenCVConfig.cmake.in @@ -141,6 +141,7 @@ SET(OpenCV_VERSION_STATUS "@OPENCV_VERSION_STATUS@") # ==================================================================== SET(OpenCV_LIB_COMPONENTS @OPENCV_MODULES_CONFIGCMAKE@) +SET(OpenCV_WORLD_COMPONENTS @OPENCV_WORLD_MODULES@) # ============================================================== # Extra include directories, needed by OpenCV 2 new structure @@ -200,8 +201,8 @@ foreach(__cvcomponent ${OpenCV_FIND_COMPONENTS}) message(WARNING "${__cvcomponent} is required but was not found") endif() #indicate that module is NOT found - string(TOUPPER "${__cvcomponent}" __cvcomponent) - set(${__cvcomponent}_FOUND "${__cvcomponent}_FOUND-NOTFOUND") + string(TOUPPER "${__cvcomponent}" __cvcomponentUP) + set(${__cvcomponentUP}_FOUND "${__cvcomponentUP}_FOUND-NOTFOUND") else() list(APPEND OpenCV_FIND_COMPONENTS_ ${__cvcomponent}) # Not using list(APPEND) here, because OpenCV_LIBS may not exist yet. @@ -209,8 +210,31 @@ foreach(__cvcomponent ${OpenCV_FIND_COMPONENTS}) # to find_package(OpenCV) with different component lists add up. set(OpenCV_LIBS ${OpenCV_LIBS} "${__cvcomponent}") #indicate that module is found - string(TOUPPER "${__cvcomponent}" __cvcomponent) - set(${__cvcomponent}_FOUND 1) + string(TOUPPER "${__cvcomponent}" __cvcomponentUP) + set(${__cvcomponentUP}_FOUND 1) + endif() + if(OpenCV_SHARED AND ";${OpenCV_WORLD_COMPONENTS};" MATCHES ";${__cvcomponent};" AND NOT TARGET ${__cvcomponent}) + get_target_property(__implib_dbg opencv_world IMPORTED_IMPLIB_DEBUG) + get_target_property(__implib_release opencv_world IMPORTED_IMPLIB_RELEASE) + get_target_property(__location_dbg opencv_world IMPORTED_LOCATION_DEBUG) + get_target_property(__location_release opencv_world IMPORTED_LOCATION_RELEASE) + add_library(${__cvcomponent} SHARED IMPORTED) + if(__location_dbg) + set_property(TARGET ${__cvcomponent} APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) + set_target_properties(${__cvcomponent} PROPERTIES + IMPORTED_IMPLIB_DEBUG "${__implib_dbg}" + IMPORTED_LINK_INTERFACE_LIBRARIES_DEBUG "" + IMPORTED_LOCATION_DEBUG "${__location_dbg}" + ) + endif() + if(__location_release) + set_property(TARGET ${__cvcomponent} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) + set_target_properties(${__cvcomponent} PROPERTIES + IMPORTED_IMPLIB_RELEASE "${__implib_release}" + IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE "" + IMPORTED_LOCATION_RELEASE "${__location_release}" + ) + endif() endif() endforeach() set(OpenCV_FIND_COMPONENTS ${OpenCV_FIND_COMPONENTS_}) @@ -321,6 +345,7 @@ macro(ocv_check_dependencies) set(OCV_DEPENDENCIES_FOUND TRUE) foreach(d ${ARGN}) if(NOT TARGET ${d}) + message(WARNING "OpenCV: Can't resolve dependency: ${d}") set(OCV_DEPENDENCIES_FOUND FALSE) break() endif() @@ -346,6 +371,10 @@ macro(ocv_include_modules) include_directories(BEFORE "${OpenCV_INCLUDE_DIRS}") endmacro() +macro(ocv_target_link_libraries) + target_link_libraries(${ARGN}) +endmacro() + # remove all matching elements from the list macro(ocv_list_filterout lst regex) foreach(item ${${lst}}) diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt index 400b2a8381..2c6c34304e 100644 --- a/modules/CMakeLists.txt +++ b/modules/CMakeLists.txt @@ -4,4 +4,4 @@ if(NOT OPENCV_MODULES_PATH) set(OPENCV_MODULES_PATH "${CMAKE_CURRENT_SOURCE_DIR}") endif() -ocv_glob_modules(${OPENCV_MODULES_PATH} ${OPENCV_EXTRA_MODULES_PATH}) +ocv_glob_modules(${OPENCV_MODULES_PATH} EXTRA ${OPENCV_EXTRA_MODULES_PATH}) diff --git a/modules/androidcamera/camera_wrapper/CMakeLists.txt b/modules/androidcamera/camera_wrapper/CMakeLists.txt index d08e2c469d..c306db1de5 100644 --- a/modules/androidcamera/camera_wrapper/CMakeLists.txt +++ b/modules/androidcamera/camera_wrapper/CMakeLists.txt @@ -46,7 +46,7 @@ ADD_LIBRARY(${the_target} SHARED camera_wrapper.h camera_wrapper.cpp) string(REGEX REPLACE "[.]" "_" LIBRARY_DEF ${ANDROID_VERSION}) add_definitions(-DANDROID_r${LIBRARY_DEF}) -target_link_libraries(${the_target} c m dl utils camera_client binder log) +ocv_target_link_libraries(${the_target} c m dl utils camera_client binder log) if(NOT ANDROID_VERSION VERSION_LESS "3.0.0") target_link_libraries(${the_target} gui ) diff --git a/modules/calib3d/perf/opencl/perf_stereobm.cpp b/modules/calib3d/perf/opencl/perf_stereobm.cpp index 8fca1b894f..1436eb9d94 100644 --- a/modules/calib3d/perf/opencl/perf_stereobm.cpp +++ b/modules/calib3d/perf/opencl/perf_stereobm.cpp @@ -40,7 +40,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/calib3d/src/circlesgrid.cpp b/modules/calib3d/src/circlesgrid.cpp index 0b89e181c2..ea169bdd72 100644 --- a/modules/calib3d/src/circlesgrid.cpp +++ b/modules/calib3d/src/circlesgrid.cpp @@ -40,6 +40,7 @@ // //M*/ +#include "precomp.hpp" #include "circlesgrid.hpp" #include //#define DEBUG_CIRCLES diff --git a/modules/calib3d/src/stereobm.cpp b/modules/calib3d/src/stereobm.cpp index 7c06debcb3..676202d129 100644 --- a/modules/calib3d/src/stereobm.cpp +++ b/modules/calib3d/src/stereobm.cpp @@ -48,7 +48,7 @@ #include "precomp.hpp" #include #include -#include "opencl_kernels.hpp" +#include "opencl_kernels_calib3d.hpp" namespace cv { diff --git a/modules/calib3d/test/opencl/test_stereobm.cpp b/modules/calib3d/test/opencl/test_stereobm.cpp index 636d76cb27..e64fe415e7 100644 --- a/modules/calib3d/test/opencl/test_stereobm.cpp +++ b/modules/calib3d/test/opencl/test_stereobm.cpp @@ -40,7 +40,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "cvconfig.h" #include "opencv2/ts/ocl_test.hpp" diff --git a/modules/core/CMakeLists.txt b/modules/core/CMakeLists.txt index e5898023f2..5158dec5f4 100644 --- a/modules/core/CMakeLists.txt +++ b/modules/core/CMakeLists.txt @@ -1,6 +1,5 @@ set(the_description "The Core Functionality") ocv_add_module(core PRIVATE_REQUIRED ${ZLIB_LIBRARIES} "${OPENCL_LIBRARIES}" OPTIONAL opencv_cudev) -ocv_module_include_directories(${ZLIB_INCLUDE_DIRS}) if(HAVE_WINRT_CX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /ZW") @@ -19,11 +18,11 @@ file(GLOB lib_cuda_hdrs_detail "include/opencv2/${name}/cuda/detail/*.hpp" "incl source_group("Cuda Headers" FILES ${lib_cuda_hdrs}) source_group("Cuda Headers\\Detail" FILES ${lib_cuda_hdrs_detail}) -ocv_glob_module_sources(SOURCES "${opencv_core_BINARY_DIR}/version_string.inc" +ocv_glob_module_sources(SOURCES "${OPENCV_MODULE_opencv_core_BINARY_DIR}/version_string.inc" HEADERS ${lib_cuda_hdrs} ${lib_cuda_hdrs_detail}) +ocv_module_include_directories(${the_module} ${ZLIB_INCLUDE_DIRS}) ocv_create_module() -ocv_add_precompiled_headers(${the_module}) ocv_add_accuracy_tests() ocv_add_perf_tests() diff --git a/modules/core/perf/opencl/perf_arithm.cpp b/modules/core/perf/opencl/perf_arithm.cpp index 17badca765..9cb5ac9821 100644 --- a/modules/core/perf/opencl/perf_arithm.cpp +++ b/modules/core/perf/opencl/perf_arithm.cpp @@ -39,7 +39,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/core/perf/opencl/perf_bufferpool.cpp b/modules/core/perf/opencl/perf_bufferpool.cpp index 2e01db4045..3d241a6a56 100644 --- a/modules/core/perf/opencl/perf_bufferpool.cpp +++ b/modules/core/perf/opencl/perf_bufferpool.cpp @@ -4,7 +4,7 @@ // // Copyright (C) 2014, Advanced Micro Devices, Inc., all rights reserved. -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/core/perf/opencl/perf_channels.cpp b/modules/core/perf/opencl/perf_channels.cpp index 1dbad51a06..62d6b822b7 100644 --- a/modules/core/perf/opencl/perf_channels.cpp +++ b/modules/core/perf/opencl/perf_channels.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/core/perf/opencl/perf_dxt.cpp b/modules/core/perf/opencl/perf_dxt.cpp index c0e41485e4..8a45a8c1ab 100644 --- a/modules/core/perf/opencl/perf_dxt.cpp +++ b/modules/core/perf/opencl/perf_dxt.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/core/perf/opencl/perf_gemm.cpp b/modules/core/perf/opencl/perf_gemm.cpp index 700f380492..205062dacb 100644 --- a/modules/core/perf/opencl/perf_gemm.cpp +++ b/modules/core/perf/opencl/perf_gemm.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/core/perf/opencl/perf_matop.cpp b/modules/core/perf/opencl/perf_matop.cpp index 67d382239c..0fd5d437c4 100644 --- a/modules/core/perf/opencl/perf_matop.cpp +++ b/modules/core/perf/opencl/perf_matop.cpp @@ -5,7 +5,7 @@ // Copyright (C) 2014, Advanced Micro Devices, Inc., all rights reserved. // Third party copyrights are property of their respective owners. -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/core/perf/opencl/perf_usage_flags.cpp b/modules/core/perf/opencl/perf_usage_flags.cpp index 3f59fec8be..b140e3a046 100644 --- a/modules/core/perf/opencl/perf_usage_flags.cpp +++ b/modules/core/perf/opencl/perf_usage_flags.cpp @@ -4,7 +4,7 @@ // // Copyright (C) 2014, Advanced Micro Devices, Inc., all rights reserved. -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/core/src/arithm.cpp b/modules/core/src/arithm.cpp index 2211fcd367..b8ecfdd68d 100644 --- a/modules/core/src/arithm.cpp +++ b/modules/core/src/arithm.cpp @@ -47,7 +47,7 @@ // */ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_core.hpp" namespace cv { diff --git a/modules/core/src/convert.cpp b/modules/core/src/convert.cpp index d6abaa4adb..74f1cf0b97 100644 --- a/modules/core/src/convert.cpp +++ b/modules/core/src/convert.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_core.hpp" namespace cv { diff --git a/modules/core/src/copy.cpp b/modules/core/src/copy.cpp index 8bd2f457d9..2bd6ebb9d2 100644 --- a/modules/core/src/copy.cpp +++ b/modules/core/src/copy.cpp @@ -46,7 +46,7 @@ // */ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_core.hpp" namespace cv { diff --git a/modules/core/src/dxt.cpp b/modules/core/src/dxt.cpp index bbe0f74001..c1551acb41 100644 --- a/modules/core/src/dxt.cpp +++ b/modules/core/src/dxt.cpp @@ -42,7 +42,7 @@ #include "precomp.hpp" #include "opencv2/core/opencl/runtime/opencl_clamdfft.hpp" #include "opencv2/core/opencl/runtime/opencl_core.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_core.hpp" #include namespace cv diff --git a/modules/core/src/mathfuncs.cpp b/modules/core/src/mathfuncs.cpp index f36e268d0d..6c6ed6b1c8 100644 --- a/modules/core/src/mathfuncs.cpp +++ b/modules/core/src/mathfuncs.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_core.hpp" namespace cv { diff --git a/modules/core/src/matmul.cpp b/modules/core/src/matmul.cpp index 2ef44179d8..b3c04a6bf3 100644 --- a/modules/core/src/matmul.cpp +++ b/modules/core/src/matmul.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_core.hpp" #include "opencv2/core/opencl/runtime/opencl_clamdblas.hpp" namespace cv diff --git a/modules/core/src/matrix.cpp b/modules/core/src/matrix.cpp index 398abcaaa6..46c8eeac86 100644 --- a/modules/core/src/matrix.cpp +++ b/modules/core/src/matrix.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_core.hpp" #include "bufferpool.impl.hpp" diff --git a/modules/core/src/opencl/runtime/opencl_clamdblas.cpp b/modules/core/src/opencl/runtime/opencl_clamdblas.cpp index 420fdb97d3..379929993f 100644 --- a/modules/core/src/opencl/runtime/opencl_clamdblas.cpp +++ b/modules/core/src/opencl/runtime/opencl_clamdblas.cpp @@ -39,7 +39,7 @@ // //M*/ -#include "precomp.hpp" +#include "../../precomp.hpp" #ifdef HAVE_CLAMDBLAS diff --git a/modules/core/src/opencl/runtime/opencl_clamdfft.cpp b/modules/core/src/opencl/runtime/opencl_clamdfft.cpp index 36a9ed2a71..255bcd826a 100644 --- a/modules/core/src/opencl/runtime/opencl_clamdfft.cpp +++ b/modules/core/src/opencl/runtime/opencl_clamdfft.cpp @@ -39,7 +39,7 @@ // //M*/ -#include "precomp.hpp" +#include "../../precomp.hpp" #ifdef HAVE_CLAMDFFT diff --git a/modules/core/src/opencl/runtime/opencl_core.cpp b/modules/core/src/opencl/runtime/opencl_core.cpp index 5dbc85ec10..93f6aae5de 100644 --- a/modules/core/src/opencl/runtime/opencl_core.cpp +++ b/modules/core/src/opencl/runtime/opencl_core.cpp @@ -39,7 +39,7 @@ // //M*/ -#include "precomp.hpp" +#include "../../precomp.hpp" #if defined(HAVE_OPENCL) && !defined(HAVE_OPENCL_STATIC) diff --git a/modules/core/src/stat.cpp b/modules/core/src/stat.cpp index 26bae7a44d..7abbde543e 100644 --- a/modules/core/src/stat.cpp +++ b/modules/core/src/stat.cpp @@ -44,7 +44,7 @@ #include #include -#include "opencl_kernels.hpp" +#include "opencl_kernels_core.hpp" namespace cv { diff --git a/modules/core/src/umatrix.cpp b/modules/core/src/umatrix.cpp index 60f547794c..494f3e3c06 100644 --- a/modules/core/src/umatrix.cpp +++ b/modules/core/src/umatrix.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_core.hpp" ///////////////////////////////// UMat implementation /////////////////////////////// diff --git a/modules/core/test/ocl/test_arithm.cpp b/modules/core/test/ocl/test_arithm.cpp index b0905b19f0..3af01f3d50 100644 --- a/modules/core/test/ocl/test_arithm.cpp +++ b/modules/core/test/ocl/test_arithm.cpp @@ -39,7 +39,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #include diff --git a/modules/core/test/ocl/test_channels.cpp b/modules/core/test/ocl/test_channels.cpp index 53d7de5d52..2a07bc1085 100644 --- a/modules/core/test/ocl/test_channels.cpp +++ b/modules/core/test/ocl/test_channels.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/core/test/ocl/test_dft.cpp b/modules/core/test/ocl/test_dft.cpp index cd0c1f07d0..db280f19cf 100644 --- a/modules/core/test/ocl/test_dft.cpp +++ b/modules/core/test/ocl/test_dft.cpp @@ -43,7 +43,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/core/test/ocl/test_gemm.cpp b/modules/core/test/ocl/test_gemm.cpp index e92fc2a1c9..e98135a3dc 100644 --- a/modules/core/test/ocl/test_gemm.cpp +++ b/modules/core/test/ocl/test_gemm.cpp @@ -42,7 +42,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/core/test/ocl/test_matrix_expr.cpp b/modules/core/test/ocl/test_matrix_expr.cpp index 167026d8cd..b8448fb50c 100644 --- a/modules/core/test/ocl/test_matrix_expr.cpp +++ b/modules/core/test/ocl/test_matrix_expr.cpp @@ -5,7 +5,7 @@ // Copyright (C) 2014, Advanced Micro Devices, Inc., all rights reserved. // Third party copyrights are property of their respective owners. -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/core/test/ocl/test_matrix_operation.cpp b/modules/core/test/ocl/test_matrix_operation.cpp index 252db01d16..b19b74f543 100644 --- a/modules/core/test/ocl/test_matrix_operation.cpp +++ b/modules/core/test/ocl/test_matrix_operation.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/cudaarithm/CMakeLists.txt b/modules/cudaarithm/CMakeLists.txt index c819ec928d..b4708e723a 100644 --- a/modules/cudaarithm/CMakeLists.txt +++ b/modules/cudaarithm/CMakeLists.txt @@ -23,7 +23,5 @@ endif() ocv_create_module(${extra_libs}) -ocv_add_precompiled_headers(${the_module}) - ocv_add_accuracy_tests(DEPENDS_ON opencv_imgproc) ocv_add_perf_tests(DEPENDS_ON opencv_imgproc) diff --git a/modules/cudacodec/CMakeLists.txt b/modules/cudacodec/CMakeLists.txt index 5d8f7327c0..90599766ad 100644 --- a/modules/cudacodec/CMakeLists.txt +++ b/modules/cudacodec/CMakeLists.txt @@ -23,7 +23,5 @@ endif() ocv_create_module(${extra_libs}) -ocv_add_precompiled_headers(${the_module}) - ocv_add_accuracy_tests() ocv_add_perf_tests() diff --git a/modules/cudev/test/CMakeLists.txt b/modules/cudev/test/CMakeLists.txt index 363970e4b7..89213e236d 100644 --- a/modules/cudev/test/CMakeLists.txt +++ b/modules/cudev/test/CMakeLists.txt @@ -29,7 +29,7 @@ if(OCV_DEPENDENCIES_FOUND) endforeach() CUDA_ADD_EXECUTABLE(${the_target} ${OPENCV_TEST_${the_module}_SOURCES}) - target_link_libraries(${the_target} ${test_deps} ${OPENCV_LINKER_LIBS} ${CUDA_LIBRARIES}) + ocv_target_link_libraries(${the_target} ${test_deps} ${OPENCV_LINKER_LIBS} ${CUDA_LIBRARIES}) add_dependencies(opencv_tests ${the_target}) # Additional target properties diff --git a/modules/features2d/perf/opencl/perf_brute_force_matcher.cpp b/modules/features2d/perf/opencl/perf_brute_force_matcher.cpp index 2e6e574160..2cb8daabfb 100644 --- a/modules/features2d/perf/opencl/perf_brute_force_matcher.cpp +++ b/modules/features2d/perf/opencl/perf_brute_force_matcher.cpp @@ -43,7 +43,7 @@ // the use of this software, even if advised of the possibility of such damage. // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/features2d/perf/opencl/perf_fast.cpp b/modules/features2d/perf/opencl/perf_fast.cpp index 7816da7b10..c4a8e078c0 100644 --- a/modules/features2d/perf/opencl/perf_fast.cpp +++ b/modules/features2d/perf/opencl/perf_fast.cpp @@ -1,4 +1,4 @@ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/features2d/perf/opencl/perf_orb.cpp b/modules/features2d/perf/opencl/perf_orb.cpp index f40b5f4b92..c551dee88a 100644 --- a/modules/features2d/perf/opencl/perf_orb.cpp +++ b/modules/features2d/perf/opencl/perf_orb.cpp @@ -1,4 +1,4 @@ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/features2d/src/fast.cpp b/modules/features2d/src/fast.cpp index c01cbba698..79b6d6cef3 100644 --- a/modules/features2d/src/fast.cpp +++ b/modules/features2d/src/fast.cpp @@ -43,7 +43,7 @@ The references are: #include "precomp.hpp" #include "fast_score.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_features2d.hpp" #if defined _MSC_VER # pragma warning( disable : 4127) diff --git a/modules/features2d/src/kaze/AKAZEConfig.h b/modules/features2d/src/kaze/AKAZEConfig.h index c7ac1cfc0b..e2ba51c531 100644 --- a/modules/features2d/src/kaze/AKAZEConfig.h +++ b/modules/features2d/src/kaze/AKAZEConfig.h @@ -10,7 +10,7 @@ /* ************************************************************************* */ // OpenCV -#include "precomp.hpp" +#include "../precomp.hpp" #include /* ************************************************************************* */ diff --git a/modules/features2d/src/kaze/AKAZEFeatures.h b/modules/features2d/src/kaze/AKAZEFeatures.h index f8ce7a4889..9119c97f2f 100644 --- a/modules/features2d/src/kaze/AKAZEFeatures.h +++ b/modules/features2d/src/kaze/AKAZEFeatures.h @@ -11,7 +11,7 @@ /* ************************************************************************* */ // Includes -#include "precomp.hpp" +#include "../precomp.hpp" #include "AKAZEConfig.h" #include "TEvolution.h" diff --git a/modules/features2d/src/kaze/KAZEConfig.h b/modules/features2d/src/kaze/KAZEConfig.h index 21489a07a4..546ee36579 100644 --- a/modules/features2d/src/kaze/KAZEConfig.h +++ b/modules/features2d/src/kaze/KAZEConfig.h @@ -9,7 +9,7 @@ #define __OPENCV_FEATURES_2D_AKAZE_CONFIG_H__ // OpenCV Includes -#include "precomp.hpp" +#include "../precomp.hpp" #include //************************************************************************************* diff --git a/modules/features2d/src/kaze/fed.cpp b/modules/features2d/src/kaze/fed.cpp index 7c2588559d..cb47628e03 100644 --- a/modules/features2d/src/kaze/fed.cpp +++ b/modules/features2d/src/kaze/fed.cpp @@ -28,7 +28,7 @@ * DAGM, 2010 * */ -#include "precomp.hpp" +#include "../precomp.hpp" #include "fed.h" using namespace std; diff --git a/modules/features2d/src/kaze/nldiffusion_functions.h b/modules/features2d/src/kaze/nldiffusion_functions.h index 5c161a6e7c..6665e54270 100644 --- a/modules/features2d/src/kaze/nldiffusion_functions.h +++ b/modules/features2d/src/kaze/nldiffusion_functions.h @@ -13,7 +13,7 @@ /* ************************************************************************* */ // Includes -#include "precomp.hpp" +#include "../precomp.hpp" /* ************************************************************************* */ // Declaration of functions diff --git a/modules/features2d/src/matchers.cpp b/modules/features2d/src/matchers.cpp index 2b5605031a..1ae1340d1d 100644 --- a/modules/features2d/src/matchers.cpp +++ b/modules/features2d/src/matchers.cpp @@ -41,7 +41,7 @@ #include "precomp.hpp" #include -#include "opencl_kernels.hpp" +#include "opencl_kernels_features2d.hpp" #if defined(HAVE_EIGEN) && EIGEN_WORLD_VERSION == 2 #include diff --git a/modules/features2d/src/orb.cpp b/modules/features2d/src/orb.cpp index 4fe9cbc237..57bce1ce4e 100644 --- a/modules/features2d/src/orb.cpp +++ b/modules/features2d/src/orb.cpp @@ -35,7 +35,7 @@ /** Authors: Ethan Rublee, Vincent Rabaud, Gary Bradski */ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_features2d.hpp" #include //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/modules/features2d/test/ocl/test_brute_force_matcher.cpp b/modules/features2d/test/ocl/test_brute_force_matcher.cpp index 0e1df784f2..635953307c 100644 --- a/modules/features2d/test/ocl/test_brute_force_matcher.cpp +++ b/modules/features2d/test/ocl/test_brute_force_matcher.cpp @@ -48,7 +48,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "cvconfig.h" #include "opencv2/ts/ocl_test.hpp" diff --git a/modules/highgui/CMakeLists.txt b/modules/highgui/CMakeLists.txt index 78d6bfb094..de8c27ba33 100644 --- a/modules/highgui/CMakeLists.txt +++ b/modules/highgui/CMakeLists.txt @@ -17,21 +17,27 @@ if(APPLE) endif() set(highgui_hdrs - src/precomp.hpp + ${CMAKE_CURRENT_LIST_DIR}/src/precomp.hpp ) set(highgui_srcs - src/window.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/window.cpp ) -file(GLOB highgui_ext_hdrs "include/opencv2/*.hpp" "include/opencv2/${name}/*.hpp" "include/opencv2/${name}/*.h") +file(GLOB highgui_ext_hdrs + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/*.hpp" + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.hpp" + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.h") if(HAVE_QT5) set(CMAKE_AUTOMOC ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) - QT5_ADD_RESOURCES(_RCC_OUTFILES src/window_QT.qrc) - list(APPEND highgui_srcs src/window_QT.cpp src/window_QT.h ${_RCC_OUTFILES}) + QT5_ADD_RESOURCES(_RCC_OUTFILES ${CMAKE_CURRENT_LIST_DIR}/src/window_QT.qrc) + list(APPEND highgui_srcs + ${CMAKE_CURRENT_LIST_DIR}/src/window_QT.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/window_QT.h + ${_RCC_OUTFILES}) foreach(dt5_dep Core Gui Widgets Test Concurrent) add_definitions(${Qt5${dt5_dep}_DEFINITIONS}) @@ -51,24 +57,24 @@ elseif(HAVE_QT) endif() include(${QT_USE_FILE}) - QT4_ADD_RESOURCES(_RCC_OUTFILES src/window_QT.qrc) - QT4_WRAP_CPP(_MOC_OUTFILES src/window_QT.h) + QT4_ADD_RESOURCES(_RCC_OUTFILES ${CMAKE_CURRENT_LIST_DIR}/src/window_QT.qrc) + QT4_WRAP_CPP(_MOC_OUTFILES ${CMAKE_CURRENT_LIST_DIR}/src/window_QT.h) list(APPEND HIGHGUI_LIBRARIES ${QT_LIBRARIES}) - list(APPEND highgui_srcs src/window_QT.cpp ${_MOC_OUTFILES} ${_RCC_OUTFILES}) + list(APPEND highgui_srcs ${CMAKE_CURRENT_LIST_DIR}/src/window_QT.cpp ${_MOC_OUTFILES} ${_RCC_OUTFILES}) ocv_check_flag_support(CXX -Wno-missing-declarations _have_flag) if(${_have_flag}) set_source_files_properties(${_RCC_OUTFILES} PROPERTIES COMPILE_FLAGS -Wno-missing-declarations) endif() elseif(HAVE_WIN32UI) - list(APPEND highgui_srcs src/window_w32.cpp) + list(APPEND highgui_srcs ${CMAKE_CURRENT_LIST_DIR}/src/window_w32.cpp) elseif(HAVE_GTK OR HAVE_GTK3) - list(APPEND highgui_srcs src/window_gtk.cpp) + list(APPEND highgui_srcs ${CMAKE_CURRENT_LIST_DIR}/src/window_gtk.cpp) elseif(HAVE_CARBON) - list(APPEND highgui_srcs src/window_carbon.cpp) + list(APPEND highgui_srcs ${CMAKE_CURRENT_LIST_DIR}/src/window_carbon.cpp) list(APPEND HIGHGUI_LIBRARIES "-framework Carbon" "-framework QuickTime") elseif(HAVE_COCOA) - list(APPEND highgui_srcs src/window_cocoa.mm) + list(APPEND highgui_srcs ${CMAKE_CURRENT_LIST_DIR}/src/window_cocoa.mm) list(APPEND HIGHGUI_LIBRARIES "-framework Cocoa") endif() @@ -90,6 +96,7 @@ ocv_module_include_directories() ocv_create_module(${HIGHGUI_LIBRARIES}) +macro(ocv_highgui_configure_target) if(APPLE) ocv_check_flag_support(OBJCXX "-fobjc-exceptions" HAVE_OBJC_EXCEPTIONS) if(HAVE_OBJC_EXCEPTIONS) @@ -116,11 +123,17 @@ if(MSVC) set_target_properties(${the_module} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:atlthunk.lib /NODEFAULTLIB:atlsd.lib /NODEFAULTLIB:libcmt.lib /DEBUG") endif() -#stop automatic dependencies propagation for this module -set_target_properties(${the_module} PROPERTIES LINK_INTERFACE_LIBRARIES "") +if(NOT BUILD_opencv_world) + #stop automatic dependencies propagation for this module + set_target_properties(${the_module} PROPERTIES LINK_INTERFACE_LIBRARIES "") +endif() -ocv_add_precompiled_headers(${the_module}) ocv_warnings_disable(CMAKE_CXX_FLAGS -Wno-deprecated-declarations) +endmacro() + +if(NOT BUILD_opencv_world) + ocv_highgui_configure_target() +endif() ocv_add_accuracy_tests() ocv_add_perf_tests() diff --git a/modules/imgcodecs/CMakeLists.txt b/modules/imgcodecs/CMakeLists.txt index 8cf60e5469..5ef34da53e 100644 --- a/modules/imgcodecs/CMakeLists.txt +++ b/modules/imgcodecs/CMakeLists.txt @@ -50,30 +50,34 @@ if(HAVE_OPENEXR) list(APPEND GRFMT_LIBS ${OPENEXR_LIBRARIES}) endif() -file(GLOB grfmt_hdrs src/grfmt*.hpp) -file(GLOB grfmt_srcs src/grfmt*.cpp) -list(APPEND grfmt_hdrs src/bitstrm.hpp) -list(APPEND grfmt_srcs src/bitstrm.cpp) -list(APPEND grfmt_hdrs src/rgbe.hpp) -list(APPEND grfmt_srcs src/rgbe.cpp) +file(GLOB grfmt_hdrs ${CMAKE_CURRENT_LIST_DIR}/src/grfmt*.hpp) +file(GLOB grfmt_srcs ${CMAKE_CURRENT_LIST_DIR}/src/grfmt*.cpp) +list(APPEND grfmt_hdrs ${CMAKE_CURRENT_LIST_DIR}/src/bitstrm.hpp) +list(APPEND grfmt_srcs ${CMAKE_CURRENT_LIST_DIR}/src/bitstrm.cpp) +list(APPEND grfmt_hdrs ${CMAKE_CURRENT_LIST_DIR}/src/rgbe.hpp) +list(APPEND grfmt_srcs ${CMAKE_CURRENT_LIST_DIR}/src/rgbe.cpp) source_group("Src\\grfmts" FILES ${grfmt_hdrs} ${grfmt_srcs}) set(imgcodecs_hdrs - src/precomp.hpp - src/utils.hpp + ${CMAKE_CURRENT_LIST_DIR}/src/precomp.hpp + ${CMAKE_CURRENT_LIST_DIR}/src/utils.hpp ) set(imgcodecs_srcs - src/loadsave.cpp - src/utils.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/loadsave.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/utils.cpp ) -file(GLOB imgcodecs_ext_hdrs "include/opencv2/*.hpp" "include/opencv2/${name}/*.hpp" "include/opencv2/${name}/*.h") +file(GLOB imgcodecs_ext_hdrs + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/*.hpp" + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.hpp" + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.h" + ) if(IOS) add_definitions(-DHAVE_IOS=1) - list(APPEND imgcodecs_srcs src/ios_conversions.mm) + list(APPEND imgcodecs_srcs ${CMAKE_CURRENT_LIST_DIR}/src/ios_conversions.mm) list(APPEND IMGCODECS_LIBRARIES "-framework Accelerate" "-framework CoreGraphics" "-framework CoreImage" "-framework QuartzCore" "-framework AssetsLibrary") endif() @@ -95,6 +99,7 @@ ocv_module_include_directories() ocv_create_module(${GRFMT_LIBS} ${IMGCODECS_LIBRARIES}) +macro(ocv_imgcodecs_configure_target) if(APPLE) ocv_check_flag_support(OBJCXX "-fobjc-exceptions" HAVE_OBJC_EXCEPTIONS) if(HAVE_OBJC_EXCEPTIONS) @@ -124,8 +129,12 @@ endif() #stop automatic dependencies propagation for this module set_target_properties(${the_module} PROPERTIES LINK_INTERFACE_LIBRARIES "") -ocv_add_precompiled_headers(${the_module}) ocv_warnings_disable(CMAKE_CXX_FLAGS -Wno-deprecated-declarations) +endmacro() + +if(NOT BUILD_opencv_world) + ocv_imgcodecs_configure_target() +endif() ocv_add_accuracy_tests() ocv_add_perf_tests() diff --git a/modules/imgproc/perf/opencl/perf_3vs4.cpp b/modules/imgproc/perf/opencl/perf_3vs4.cpp index f6601e1233..940a5ff63b 100644 --- a/modules/imgproc/perf/opencl/perf_3vs4.cpp +++ b/modules/imgproc/perf/opencl/perf_3vs4.cpp @@ -5,7 +5,7 @@ // Copyright (C) 2014, Advanced Micro Devices, Inc., all rights reserved. // Third party copyrights are property of their respective owners. -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/perf/opencl/perf_accumulate.cpp b/modules/imgproc/perf/opencl/perf_accumulate.cpp index 5b7ac4c75d..e0ba471b9c 100644 --- a/modules/imgproc/perf/opencl/perf_accumulate.cpp +++ b/modules/imgproc/perf/opencl/perf_accumulate.cpp @@ -43,7 +43,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/perf/opencl/perf_blend.cpp b/modules/imgproc/perf/opencl/perf_blend.cpp index f595069bde..6396fef7e2 100644 --- a/modules/imgproc/perf/opencl/perf_blend.cpp +++ b/modules/imgproc/perf/opencl/perf_blend.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/perf/opencl/perf_color.cpp b/modules/imgproc/perf/opencl/perf_color.cpp index 4a30f3a1f9..14dd614904 100644 --- a/modules/imgproc/perf/opencl/perf_color.cpp +++ b/modules/imgproc/perf/opencl/perf_color.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/perf/opencl/perf_filters.cpp b/modules/imgproc/perf/opencl/perf_filters.cpp index 9667b8f907..ede98c308e 100644 --- a/modules/imgproc/perf/opencl/perf_filters.cpp +++ b/modules/imgproc/perf/opencl/perf_filters.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/perf/opencl/perf_gftt.cpp b/modules/imgproc/perf/opencl/perf_gftt.cpp index 29626c62e3..b6c3b2c369 100644 --- a/modules/imgproc/perf/opencl/perf_gftt.cpp +++ b/modules/imgproc/perf/opencl/perf_gftt.cpp @@ -41,7 +41,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #include diff --git a/modules/imgproc/perf/opencl/perf_imgproc.cpp b/modules/imgproc/perf/opencl/perf_imgproc.cpp index 7f0770853d..f441bd9b32 100644 --- a/modules/imgproc/perf/opencl/perf_imgproc.cpp +++ b/modules/imgproc/perf/opencl/perf_imgproc.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/perf/opencl/perf_imgwarp.cpp b/modules/imgproc/perf/opencl/perf_imgwarp.cpp index b5a5138e20..d6832aec54 100644 --- a/modules/imgproc/perf/opencl/perf_imgwarp.cpp +++ b/modules/imgproc/perf/opencl/perf_imgwarp.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/perf/opencl/perf_matchTemplate.cpp b/modules/imgproc/perf/opencl/perf_matchTemplate.cpp index db9199b878..d230f90465 100644 --- a/modules/imgproc/perf/opencl/perf_matchTemplate.cpp +++ b/modules/imgproc/perf/opencl/perf_matchTemplate.cpp @@ -1,4 +1,4 @@ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/perf/opencl/perf_moments.cpp b/modules/imgproc/perf/opencl/perf_moments.cpp index e77b76850d..69a3e6835c 100644 --- a/modules/imgproc/perf/opencl/perf_moments.cpp +++ b/modules/imgproc/perf/opencl/perf_moments.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/perf/opencl/perf_pyramid.cpp b/modules/imgproc/perf/opencl/perf_pyramid.cpp index 8bbc3184fc..f26fd1940e 100644 --- a/modules/imgproc/perf/opencl/perf_pyramid.cpp +++ b/modules/imgproc/perf/opencl/perf_pyramid.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/src/accum.cpp b/modules/imgproc/src/accum.cpp index 04a70128bb..1a4b4080e1 100644 --- a/modules/imgproc/src/accum.cpp +++ b/modules/imgproc/src/accum.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" namespace cv { diff --git a/modules/imgproc/src/blend.cpp b/modules/imgproc/src/blend.cpp index 4fbdff9c3d..7a2e57d520 100644 --- a/modules/imgproc/src/blend.cpp +++ b/modules/imgproc/src/blend.cpp @@ -44,7 +44,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" namespace cv { diff --git a/modules/imgproc/src/canny.cpp b/modules/imgproc/src/canny.cpp index 2a87ae05b4..09898a539e 100644 --- a/modules/imgproc/src/canny.cpp +++ b/modules/imgproc/src/canny.cpp @@ -40,7 +40,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" #if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7) diff --git a/modules/imgproc/src/clahe.cpp b/modules/imgproc/src/clahe.cpp index f19f192430..1a26744257 100644 --- a/modules/imgproc/src/clahe.cpp +++ b/modules/imgproc/src/clahe.cpp @@ -40,7 +40,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" // ---------------------------------------------------------------------- // CLAHE diff --git a/modules/imgproc/src/color.cpp b/modules/imgproc/src/color.cpp index 351ee74e43..db5bcd35f2 100644 --- a/modules/imgproc/src/color.cpp +++ b/modules/imgproc/src/color.cpp @@ -90,7 +90,7 @@ \**********************************************************************************/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" #include #define CV_DESCALE(x,n) (((x) + (1 << ((n)-1))) >> (n)) diff --git a/modules/imgproc/src/corner.cpp b/modules/imgproc/src/corner.cpp index 923d78b30f..1fdd047cd1 100644 --- a/modules/imgproc/src/corner.cpp +++ b/modules/imgproc/src/corner.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" namespace cv { diff --git a/modules/imgproc/src/deriv.cpp b/modules/imgproc/src/deriv.cpp index 1a29c38abf..80b1e9b33c 100644 --- a/modules/imgproc/src/deriv.cpp +++ b/modules/imgproc/src/deriv.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" #if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7) static IppStatus sts = ippInit(); diff --git a/modules/imgproc/src/featureselect.cpp b/modules/imgproc/src/featureselect.cpp index 54bb65fffa..a50b704e8a 100644 --- a/modules/imgproc/src/featureselect.cpp +++ b/modules/imgproc/src/featureselect.cpp @@ -40,7 +40,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" #include #include diff --git a/modules/imgproc/src/filter.cpp b/modules/imgproc/src/filter.cpp index 6c0da79ccf..4928a16d28 100644 --- a/modules/imgproc/src/filter.cpp +++ b/modules/imgproc/src/filter.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" /****************************************************************************************\ Base Image Filter diff --git a/modules/imgproc/src/histogram.cpp b/modules/imgproc/src/histogram.cpp index b38ddcad0c..1006897e4e 100644 --- a/modules/imgproc/src/histogram.cpp +++ b/modules/imgproc/src/histogram.cpp @@ -40,7 +40,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" namespace cv { diff --git a/modules/imgproc/src/imgwarp.cpp b/modules/imgproc/src/imgwarp.cpp index 1d16bcc3fc..907fa445de 100644 --- a/modules/imgproc/src/imgwarp.cpp +++ b/modules/imgproc/src/imgwarp.cpp @@ -47,7 +47,7 @@ // */ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" #if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7) static IppStatus sts = ippInit(); diff --git a/modules/imgproc/src/moments.cpp b/modules/imgproc/src/moments.cpp index a61002a792..b114264e31 100644 --- a/modules/imgproc/src/moments.cpp +++ b/modules/imgproc/src/moments.cpp @@ -39,7 +39,7 @@ // //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" namespace cv { diff --git a/modules/imgproc/src/morph.cpp b/modules/imgproc/src/morph.cpp index 520d26d6c7..8985a7f06b 100644 --- a/modules/imgproc/src/morph.cpp +++ b/modules/imgproc/src/morph.cpp @@ -42,7 +42,7 @@ #include "precomp.hpp" #include -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" /****************************************************************************************\ Basic Morphological Operations: Erosion & Dilation diff --git a/modules/imgproc/src/pyramids.cpp b/modules/imgproc/src/pyramids.cpp index 2714e08f30..658eb42152 100644 --- a/modules/imgproc/src/pyramids.cpp +++ b/modules/imgproc/src/pyramids.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" namespace cv { diff --git a/modules/imgproc/src/smooth.cpp b/modules/imgproc/src/smooth.cpp index 907a6591ba..7f2e31bdc4 100644 --- a/modules/imgproc/src/smooth.cpp +++ b/modules/imgproc/src/smooth.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" /* * This file includes the code, contributed by Simon Perreault diff --git a/modules/imgproc/src/sumpixels.cpp b/modules/imgproc/src/sumpixels.cpp index e7694b01a9..1c6f1513f1 100755 --- a/modules/imgproc/src/sumpixels.cpp +++ b/modules/imgproc/src/sumpixels.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" #if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7) static IppStatus sts = ippInit(); diff --git a/modules/imgproc/src/templmatch.cpp b/modules/imgproc/src/templmatch.cpp index 164af425e3..37e4d1113a 100644 --- a/modules/imgproc/src/templmatch.cpp +++ b/modules/imgproc/src/templmatch.cpp @@ -40,7 +40,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" ////////////////////////////////////////////////// matchTemplate ////////////////////////////////////////////////////////// diff --git a/modules/imgproc/src/thresh.cpp b/modules/imgproc/src/thresh.cpp index 988fc9e9f6..9376d62a50 100644 --- a/modules/imgproc/src/thresh.cpp +++ b/modules/imgproc/src/thresh.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" namespace cv { diff --git a/modules/imgproc/test/ocl/test_accumulate.cpp b/modules/imgproc/test/ocl/test_accumulate.cpp index 50c9085cb4..cebf173d5d 100644 --- a/modules/imgproc/test/ocl/test_accumulate.cpp +++ b/modules/imgproc/test/ocl/test_accumulate.cpp @@ -43,7 +43,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "cvconfig.h" #include "opencv2/ts/ocl_test.hpp" diff --git a/modules/imgproc/test/ocl/test_blend.cpp b/modules/imgproc/test/ocl/test_blend.cpp index 6d8a15fb2b..d64b0bae8e 100644 --- a/modules/imgproc/test/ocl/test_blend.cpp +++ b/modules/imgproc/test/ocl/test_blend.cpp @@ -43,7 +43,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "cvconfig.h" #include "opencv2/ts/ocl_test.hpp" diff --git a/modules/imgproc/test/ocl/test_boxfilter.cpp b/modules/imgproc/test/ocl/test_boxfilter.cpp index 4940dff799..19a6ace75e 100644 --- a/modules/imgproc/test/ocl/test_boxfilter.cpp +++ b/modules/imgproc/test/ocl/test_boxfilter.cpp @@ -41,7 +41,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/test/ocl/test_canny.cpp b/modules/imgproc/test/ocl/test_canny.cpp index 631fe5bd19..fadf777985 100644 --- a/modules/imgproc/test/ocl/test_canny.cpp +++ b/modules/imgproc/test/ocl/test_canny.cpp @@ -43,7 +43,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/test/ocl/test_color.cpp b/modules/imgproc/test/ocl/test_color.cpp index 5f3a2f73f9..818d6a85ab 100644 --- a/modules/imgproc/test/ocl/test_color.cpp +++ b/modules/imgproc/test/ocl/test_color.cpp @@ -43,7 +43,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/test/ocl/test_filter2d.cpp b/modules/imgproc/test/ocl/test_filter2d.cpp index 18ba4cc529..03a6bcff74 100644 --- a/modules/imgproc/test/ocl/test_filter2d.cpp +++ b/modules/imgproc/test/ocl/test_filter2d.cpp @@ -41,7 +41,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/test/ocl/test_filters.cpp b/modules/imgproc/test/ocl/test_filters.cpp index 61f38a6b8b..35e4aa8f81 100644 --- a/modules/imgproc/test/ocl/test_filters.cpp +++ b/modules/imgproc/test/ocl/test_filters.cpp @@ -48,7 +48,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "cvconfig.h" #include "opencv2/ts/ocl_test.hpp" diff --git a/modules/imgproc/test/ocl/test_gftt.cpp b/modules/imgproc/test/ocl/test_gftt.cpp index 6e65f90dd0..15618cc308 100644 --- a/modules/imgproc/test/ocl/test_gftt.cpp +++ b/modules/imgproc/test/ocl/test_gftt.cpp @@ -41,7 +41,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/test/ocl/test_histogram.cpp b/modules/imgproc/test/ocl/test_histogram.cpp index 68a2a60fd0..e8813c85ad 100644 --- a/modules/imgproc/test/ocl/test_histogram.cpp +++ b/modules/imgproc/test/ocl/test_histogram.cpp @@ -52,7 +52,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "cvconfig.h" #include "opencv2/ts/ocl_test.hpp" diff --git a/modules/imgproc/test/ocl/test_imgproc.cpp b/modules/imgproc/test/ocl/test_imgproc.cpp index ad8e26cbca..d89101799a 100644 --- a/modules/imgproc/test/ocl/test_imgproc.cpp +++ b/modules/imgproc/test/ocl/test_imgproc.cpp @@ -51,7 +51,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "cvconfig.h" #include "opencv2/ts/ocl_test.hpp" diff --git a/modules/imgproc/test/ocl/test_match_template.cpp b/modules/imgproc/test/ocl/test_match_template.cpp index 8c8a1238c7..a525039ac2 100644 --- a/modules/imgproc/test/ocl/test_match_template.cpp +++ b/modules/imgproc/test/ocl/test_match_template.cpp @@ -41,7 +41,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #include "iostream" #include "fstream" diff --git a/modules/imgproc/test/ocl/test_medianfilter.cpp b/modules/imgproc/test/ocl/test_medianfilter.cpp index 6015ed1d77..74077f6db7 100644 --- a/modules/imgproc/test/ocl/test_medianfilter.cpp +++ b/modules/imgproc/test/ocl/test_medianfilter.cpp @@ -41,7 +41,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/test/ocl/test_pyramids.cpp b/modules/imgproc/test/ocl/test_pyramids.cpp index a129c7f771..5ac88411df 100644 --- a/modules/imgproc/test/ocl/test_pyramids.cpp +++ b/modules/imgproc/test/ocl/test_pyramids.cpp @@ -44,7 +44,7 @@ //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/test/ocl/test_sepfilter2D.cpp b/modules/imgproc/test/ocl/test_sepfilter2D.cpp index f7a18aae10..ed42e8b4a7 100644 --- a/modules/imgproc/test/ocl/test_sepfilter2D.cpp +++ b/modules/imgproc/test/ocl/test_sepfilter2D.cpp @@ -41,7 +41,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/test/ocl/test_warp.cpp b/modules/imgproc/test/ocl/test_warp.cpp index 53d82187f9..0bcc330c70 100644 --- a/modules/imgproc/test/ocl/test_warp.cpp +++ b/modules/imgproc/test/ocl/test_warp.cpp @@ -51,7 +51,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/java/CMakeLists.txt b/modules/java/CMakeLists.txt index 38b75e8d36..364cb87ea9 100644 --- a/modules/java/CMakeLists.txt +++ b/modules/java/CMakeLists.txt @@ -1,7 +1,9 @@ # ---------------------------------------------------------------------------- # CMake file for java support # ---------------------------------------------------------------------------- -if(IOS OR NOT PYTHON_EXECUTABLE OR NOT ANT_EXECUTABLE OR NOT (JNI_FOUND OR (ANDROID AND ANDROID_NATIVE_API_LEVEL GREATER 7))) +if(IOS OR NOT PYTHON_EXECUTABLE OR NOT ANT_EXECUTABLE OR NOT (JNI_FOUND OR (ANDROID AND ANDROID_NATIVE_API_LEVEL GREATER 7)) + OR BUILD_opencv_world + ) ocv_module_disable(java) endif() @@ -274,7 +276,7 @@ endif(ANDROID) # workarounding lack of `__attribute__ ((visibility("default")))` in jni_md.h/JNIEXPORT string(REPLACE "-fvisibility=hidden" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") -add_library(${the_module} SHARED ${handwrittren_h_sources} ${handwrittren_cpp_sources} ${generated_cpp_sources} +ocv_add_library(${the_module} SHARED ${handwrittren_h_sources} ${handwrittren_cpp_sources} ${generated_cpp_sources} ${copied_files} "${JAR_FILE}" "${JAR_FILE}.dephelper") set_target_properties(${the_module} PROPERTIES COMPILE_DEFINITIONS OPENCV_NOSTL) @@ -295,18 +297,18 @@ if(BUILD_FAT_JAVA_LIB) endif() if(APPLE) foreach(_dep ${__deps}) - target_link_libraries(${the_module} -Wl,-force_load "${_dep}") + ocv_target_link_libraries(${the_module} -Wl,-force_load "${_dep}") endforeach() else() - target_link_libraries(${the_module} -Wl,-whole-archive ${__deps} -Wl,-no-whole-archive) + ocv_target_link_libraries(${the_module} -Wl,-whole-archive ${__deps} -Wl,-no-whole-archive) endif() - target_link_libraries(${the_module} ${__extradeps} ${OPENCV_LINKER_LIBS}) + ocv_target_link_libraries(${the_module} ${__extradeps} ${OPENCV_LINKER_LIBS}) else() - target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS} ${OPENCV_LINKER_LIBS}) + ocv_target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS} ${OPENCV_LINKER_LIBS}) endif() if(ANDROID) - target_link_libraries(${the_module} jnigraphics) # for Mat <=> Bitmap converters + ocv_target_link_libraries(${the_module} jnigraphics) # for Mat <=> Bitmap converters # force strip library after the build command # because samples and tests will make a copy of the library before install diff --git a/modules/nonfree/src/surf.ocl.cpp b/modules/nonfree/src/surf.ocl.cpp index eaf50fbc74..f46fc500f2 100644 --- a/modules/nonfree/src/surf.ocl.cpp +++ b/modules/nonfree/src/surf.ocl.cpp @@ -47,7 +47,7 @@ #include #include -#include "opencl_kernels.hpp" +#include "opencl_kernels_nonfree.hpp" namespace cv { diff --git a/modules/objdetect/perf/opencl/perf_cascades.cpp b/modules/objdetect/perf/opencl/perf_cascades.cpp index dd61cdb668..7cd1112a5d 100644 --- a/modules/objdetect/perf/opencl/perf_cascades.cpp +++ b/modules/objdetect/perf/opencl/perf_cascades.cpp @@ -1,4 +1,4 @@ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include #include "opencv2/ts/ocl_perf.hpp" diff --git a/modules/objdetect/perf/opencl/perf_hogdetect.cpp b/modules/objdetect/perf/opencl/perf_hogdetect.cpp index 36ab857c8b..7c107a962d 100644 --- a/modules/objdetect/perf/opencl/perf_hogdetect.cpp +++ b/modules/objdetect/perf/opencl/perf_hogdetect.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/objdetect/src/cascadedetect.cpp b/modules/objdetect/src/cascadedetect.cpp index 2d5c0795dc..70311d91fe 100644 --- a/modules/objdetect/src/cascadedetect.cpp +++ b/modules/objdetect/src/cascadedetect.cpp @@ -44,7 +44,7 @@ #include "cascadedetect.hpp" #include "opencv2/objdetect/objdetect_c.h" -#include "opencl_kernels.hpp" +#include "opencl_kernels_objdetect.hpp" namespace cv { diff --git a/modules/objdetect/src/hog.cpp b/modules/objdetect/src/hog.cpp index a84c00d051..7230954dc6 100644 --- a/modules/objdetect/src/hog.cpp +++ b/modules/objdetect/src/hog.cpp @@ -42,7 +42,7 @@ #include "precomp.hpp" #include "opencv2/core/core_c.h" -#include "opencl_kernels.hpp" +#include "opencl_kernels_objdetect.hpp" #include #include diff --git a/modules/objdetect/test/opencl/test_hogdetector.cpp b/modules/objdetect/test/opencl/test_hogdetector.cpp index b3ef6b48fb..eb666cb1c8 100644 --- a/modules/objdetect/test/opencl/test_hogdetector.cpp +++ b/modules/objdetect/test/opencl/test_hogdetector.cpp @@ -50,7 +50,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/photo/perf/opencl/perf_denoising.cpp b/modules/photo/perf/opencl/perf_denoising.cpp index a2ee9178a1..14ffa3a15a 100644 --- a/modules/photo/perf/opencl/perf_denoising.cpp +++ b/modules/photo/perf/opencl/perf_denoising.cpp @@ -5,7 +5,7 @@ // Copyright (C) 2014, Advanced Micro Devices, Inc., all rights reserved. // Third party copyrights are property of their respective owners. -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/photo/src/fast_nlmeans_denoising_opencl.hpp b/modules/photo/src/fast_nlmeans_denoising_opencl.hpp index 2ec9b94878..ae173905d8 100644 --- a/modules/photo/src/fast_nlmeans_denoising_opencl.hpp +++ b/modules/photo/src/fast_nlmeans_denoising_opencl.hpp @@ -5,11 +5,11 @@ // Copyright (C) 2014, Advanced Micro Devices, Inc., all rights reserved. // Third party copyrights are property of their respective owners. +#include "precomp.hpp" #ifndef __OPENCV_FAST_NLMEANS_DENOISING_OPENCL_HPP__ #define __OPENCV_FAST_NLMEANS_DENOISING_OPENCL_HPP__ -#include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_photo.hpp" #ifdef HAVE_OPENCL diff --git a/modules/photo/test/ocl/test_denoising.cpp b/modules/photo/test/ocl/test_denoising.cpp index b533399ccd..cb2d74f850 100644 --- a/modules/photo/test/ocl/test_denoising.cpp +++ b/modules/photo/test/ocl/test_denoising.cpp @@ -5,7 +5,7 @@ // Copyright (C) 2014, Advanced Micro Devices, Inc., all rights reserved. // Third party copyrights are property of their respective owners. -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/python/CMakeLists.txt b/modules/python/CMakeLists.txt index 128f28558f..f70092ac8a 100644 --- a/modules/python/CMakeLists.txt +++ b/modules/python/CMakeLists.txt @@ -2,7 +2,9 @@ # CMake file for python support # ---------------------------------------------------------------------------- -if(WIN32 AND CMAKE_BUILD_TYPE STREQUAL "Debug") +if((WIN32 AND CMAKE_BUILD_TYPE STREQUAL "Debug") + OR BUILD_opencv_world + ) ocv_module_disable(python) endif() @@ -67,15 +69,15 @@ add_custom_command( DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/headers.txt DEPENDS ${opencv_hdrs}) -add_library(${the_module} SHARED src2/cv2.cpp ${cv2_generated_hdrs}) +ocv_add_library(${the_module} SHARED src2/cv2.cpp ${cv2_generated_hdrs}) set_target_properties(${the_module} PROPERTIES COMPILE_DEFINITIONS OPENCV_NOSTL) if(PYTHON_DEBUG_LIBRARIES AND NOT PYTHON_LIBRARIES MATCHES "optimized.*debug") - target_link_libraries(${the_module} debug ${PYTHON_DEBUG_LIBRARIES} optimized ${PYTHON_LIBRARIES}) + ocv_target_link_libraries(${the_module} debug ${PYTHON_DEBUG_LIBRARIES} optimized ${PYTHON_LIBRARIES}) else() - target_link_libraries(${the_module} ${PYTHON_LIBRARIES}) + ocv_target_link_libraries(${the_module} ${PYTHON_LIBRARIES}) endif() -target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS}) +ocv_target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS}) execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('SO'))" RESULT_VARIABLE PYTHON_CVPY_PROCESS @@ -92,7 +94,7 @@ if(ENABLE_SOLUTION_FOLDERS) endif() if(MSVC) - add_definitions(-DCVAPI_EXPORTS) + add_definitions(-DCVAPI_EXPORTS) endif() if(CMAKE_COMPILER_IS_GNUCXX AND NOT ENABLE_NOISY_WARNINGS) diff --git a/modules/stitching/perf/opencl/perf_stitch.cpp b/modules/stitching/perf/opencl/perf_stitch.cpp index 3434726996..ce7c3a9f11 100644 --- a/modules/stitching/perf/opencl/perf_stitch.cpp +++ b/modules/stitching/perf/opencl/perf_stitch.cpp @@ -4,7 +4,7 @@ // // Copyright (C) 2014, Itseez, Inc, all rights reserved. -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" using namespace cv; diff --git a/modules/stitching/perf/opencl/perf_warpers.cpp b/modules/stitching/perf/opencl/perf_warpers.cpp index 6a8be4ebe8..57ca9a602d 100644 --- a/modules/stitching/perf/opencl/perf_warpers.cpp +++ b/modules/stitching/perf/opencl/perf_warpers.cpp @@ -39,7 +39,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/stitching/warpers.hpp" #include "opencv2/ts/ocl_perf.hpp" diff --git a/modules/stitching/src/blenders.cpp b/modules/stitching/src/blenders.cpp index 03aad752fe..2fb04d29e9 100644 --- a/modules/stitching/src/blenders.cpp +++ b/modules/stitching/src/blenders.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_stitching.hpp" namespace cv { namespace detail { diff --git a/modules/stitching/src/timelapsers.cpp b/modules/stitching/src/timelapsers.cpp index d78ad86a57..bc1d62e1a8 100644 --- a/modules/stitching/src/timelapsers.cpp +++ b/modules/stitching/src/timelapsers.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_stitching.hpp" namespace cv { namespace detail { diff --git a/modules/stitching/src/warpers.cpp b/modules/stitching/src/warpers.cpp index 8b2c77e759..c01b7d0d3b 100644 --- a/modules/stitching/src/warpers.cpp +++ b/modules/stitching/src/warpers.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_stitching.hpp" namespace cv { namespace detail { diff --git a/modules/stitching/test/ocl/test_warpers.cpp b/modules/stitching/test/ocl/test_warpers.cpp index 43f0e9741d..4a95fff00f 100644 --- a/modules/stitching/test/ocl/test_warpers.cpp +++ b/modules/stitching/test/ocl/test_warpers.cpp @@ -39,7 +39,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #include "opencv2/stitching/warpers.hpp" diff --git a/modules/superres/src/btv_l1.cpp b/modules/superres/src/btv_l1.cpp index d54b4b398a..3b3513e8de 100644 --- a/modules/superres/src/btv_l1.cpp +++ b/modules/superres/src/btv_l1.cpp @@ -44,7 +44,7 @@ // Dennis Mitzel, Thomas Pock, Thomas Schoenemann, Daniel Cremers. Video Super Resolution using Duality Based TV-L1 Optical Flow. #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_superres.hpp" using namespace cv; using namespace cv::superres; diff --git a/modules/superres/test/test_precomp.hpp b/modules/superres/test/test_precomp.hpp index 553481818c..9e89b428e6 100644 --- a/modules/superres/test/test_precomp.hpp +++ b/modules/superres/test/test_precomp.hpp @@ -57,6 +57,6 @@ #include "opencv2/imgproc.hpp" #include "opencv2/superres.hpp" #include "cvconfig.h" -#include "input_array_utility.hpp" +#include "../src/input_array_utility.hpp" #endif diff --git a/modules/ts/CMakeLists.txt b/modules/ts/CMakeLists.txt index c923a29d8f..9727c9a8c5 100644 --- a/modules/ts/CMakeLists.txt +++ b/modules/ts/CMakeLists.txt @@ -14,5 +14,3 @@ ocv_add_module(ts opencv_core opencv_imgproc opencv_imgcodecs opencv_videoio ope ocv_glob_module_sources() ocv_module_include_directories() ocv_create_module() - -ocv_add_precompiled_headers(${the_module}) diff --git a/modules/video/perf/opencl/perf_bgfg_mog2.cpp b/modules/video/perf/opencl/perf_bgfg_mog2.cpp index 50814bf817..12223d6631 100644 --- a/modules/video/perf/opencl/perf_bgfg_mog2.cpp +++ b/modules/video/perf/opencl/perf_bgfg_mog2.cpp @@ -1,4 +1,4 @@ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/video/perf/opencl/perf_motempl.cpp b/modules/video/perf/opencl/perf_motempl.cpp index 7956857216..d603569024 100644 --- a/modules/video/perf/opencl/perf_motempl.cpp +++ b/modules/video/perf/opencl/perf_motempl.cpp @@ -5,7 +5,7 @@ // Copyright (C) 2014, Advanced Micro Devices, Inc., all rights reserved. // Third party copyrights are property of their respective owners. -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/video/perf/opencl/perf_optflow_dualTVL1.cpp b/modules/video/perf/opencl/perf_optflow_dualTVL1.cpp index 72b1b0cbb2..90e656d81e 100644 --- a/modules/video/perf/opencl/perf_optflow_dualTVL1.cpp +++ b/modules/video/perf/opencl/perf_optflow_dualTVL1.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" using std::tr1::make_tuple; diff --git a/modules/video/perf/opencl/perf_optflow_farneback.cpp b/modules/video/perf/opencl/perf_optflow_farneback.cpp index a17ed4dd9d..03eac1a07e 100644 --- a/modules/video/perf/opencl/perf_optflow_farneback.cpp +++ b/modules/video/perf/opencl/perf_optflow_farneback.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" using std::tr1::make_tuple; diff --git a/modules/video/perf/opencl/perf_optflow_pyrlk.cpp b/modules/video/perf/opencl/perf_optflow_pyrlk.cpp index 1d7e643d52..6041a4b51f 100644 --- a/modules/video/perf/opencl/perf_optflow_pyrlk.cpp +++ b/modules/video/perf/opencl/perf_optflow_pyrlk.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" using std::tr1::make_tuple; diff --git a/modules/video/src/bgfg_gaussmix2.cpp b/modules/video/src/bgfg_gaussmix2.cpp index a5c48cb1f3..08c3d12d6e 100644 --- a/modules/video/src/bgfg_gaussmix2.cpp +++ b/modules/video/src/bgfg_gaussmix2.cpp @@ -83,7 +83,7 @@ ///////////*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_video.hpp" namespace cv { diff --git a/modules/video/src/lkpyramid.cpp b/modules/video/src/lkpyramid.cpp index 3e939391c2..60e990f42d 100644 --- a/modules/video/src/lkpyramid.cpp +++ b/modules/video/src/lkpyramid.cpp @@ -43,7 +43,7 @@ #include #include #include "lkpyramid.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_video.hpp" #define CV_DESCALE(x,n) (((x) + (1 << ((n)-1))) >> (n)) diff --git a/modules/video/src/motempl.cpp b/modules/video/src/motempl.cpp index bb48206ecf..af19429252 100644 --- a/modules/video/src/motempl.cpp +++ b/modules/video/src/motempl.cpp @@ -40,7 +40,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_video.hpp" #ifdef HAVE_OPENCL diff --git a/modules/video/src/optflowgf.cpp b/modules/video/src/optflowgf.cpp index c0b1d88f12..4225e3d7fc 100644 --- a/modules/video/src/optflowgf.cpp +++ b/modules/video/src/optflowgf.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_video.hpp" // // 2D dense optical flow algorithm from the following paper: diff --git a/modules/video/src/tvl1flow.cpp b/modules/video/src/tvl1flow.cpp index 914f09c730..fec000dc4f 100644 --- a/modules/video/src/tvl1flow.cpp +++ b/modules/video/src/tvl1flow.cpp @@ -73,7 +73,7 @@ */ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_video.hpp" #include #include diff --git a/modules/video/test/ocl/test_bgfg_mog2.cpp b/modules/video/test/ocl/test_bgfg_mog2.cpp index 0a52227ece..49539ac04d 100644 --- a/modules/video/test/ocl/test_bgfg_mog2.cpp +++ b/modules/video/test/ocl/test_bgfg_mog2.cpp @@ -1,4 +1,4 @@ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/video/test/ocl/test_motempl.cpp b/modules/video/test/ocl/test_motempl.cpp index 91053d9add..f8c6abc633 100644 --- a/modules/video/test/ocl/test_motempl.cpp +++ b/modules/video/test/ocl/test_motempl.cpp @@ -5,7 +5,7 @@ // Copyright (C) 2014, Advanced Micro Devices, Inc., all rights reserved. // Third party copyrights are property of their respective owners. -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/video/test/ocl/test_optflow_farneback.cpp b/modules/video/test/ocl/test_optflow_farneback.cpp index cc40f749ba..ec718d4f67 100644 --- a/modules/video/test/ocl/test_optflow_farneback.cpp +++ b/modules/video/test/ocl/test_optflow_farneback.cpp @@ -41,7 +41,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/video/test/ocl/test_optflow_tvl1flow.cpp b/modules/video/test/ocl/test_optflow_tvl1flow.cpp index 6e7150718b..bd32252b27 100644 --- a/modules/video/test/ocl/test_optflow_tvl1flow.cpp +++ b/modules/video/test/ocl/test_optflow_tvl1flow.cpp @@ -41,7 +41,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/video/test/ocl/test_optflowpyrlk.cpp b/modules/video/test/ocl/test_optflowpyrlk.cpp index 94195eabe4..3c264a5e41 100644 --- a/modules/video/test/ocl/test_optflowpyrlk.cpp +++ b/modules/video/test/ocl/test_optflowpyrlk.cpp @@ -42,7 +42,7 @@ //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" diff --git a/modules/videoio/CMakeLists.txt b/modules/videoio/CMakeLists.txt index 96ac5045f5..f92f5ea689 100644 --- a/modules/videoio/CMakeLists.txt +++ b/modules/videoio/CMakeLists.txt @@ -17,80 +17,80 @@ if(APPLE) endif() set(videoio_hdrs - src/precomp.hpp - src/cap_ffmpeg_impl.hpp + ${CMAKE_CURRENT_LIST_DIR}/src/precomp.hpp + ${CMAKE_CURRENT_LIST_DIR}/src/cap_ffmpeg_impl.hpp ) set(videoio_srcs - src/cap.cpp - src/cap_images.cpp - src/cap_ffmpeg.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/cap.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/cap_images.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/cap_ffmpeg.cpp ) file(GLOB videoio_ext_hdrs "include/opencv2/*.hpp" "include/opencv2/${name}/*.hpp" "include/opencv2/${name}/*.h") if(WIN32 AND NOT ARM) - list(APPEND videoio_srcs src/cap_cmu.cpp) + list(APPEND videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_cmu.cpp) endif() if (WIN32 AND HAVE_DSHOW) - list(APPEND videoio_srcs src/cap_dshow.cpp) - list(APPEND videoio_hdrs src/cap_dshow.hpp) + list(APPEND videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_dshow.cpp) + list(APPEND videoio_hdrs ${CMAKE_CURRENT_LIST_DIR}/src/cap_dshow.hpp) endif() if (WIN32 AND HAVE_MSMF) - list(APPEND videoio_srcs src/cap_msmf.cpp) + list(APPEND videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_msmf.cpp) endif() if (WIN32 AND HAVE_VFW) - list(APPEND videoio_srcs src/cap_vfw.cpp) + list(APPEND videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_vfw.cpp) endif() if(HAVE_XINE) - list(APPEND videoio_srcs src/cap_xine.cpp) + list(APPEND videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_xine.cpp) endif(HAVE_XINE) if(HAVE_DC1394_2) - list(APPEND videoio_srcs src/cap_dc1394_v2.cpp) + list(APPEND videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_dc1394_v2.cpp) endif(HAVE_DC1394_2) if(HAVE_DC1394) - list(APPEND videoio_srcs src/cap_dc1394.cpp) + list(APPEND videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_dc1394.cpp) endif(HAVE_DC1394) if(HAVE_GSTREAMER) - list(APPEND videoio_srcs src/cap_gstreamer.cpp) + list(APPEND videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_gstreamer.cpp) endif(HAVE_GSTREAMER) if(HAVE_UNICAP) - list(APPEND videoio_srcs src/cap_unicap.cpp) + list(APPEND videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_unicap.cpp) endif(HAVE_UNICAP) if(HAVE_LIBV4L) - list(APPEND videoio_srcs src/cap_libv4l.cpp) + list(APPEND videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_libv4l.cpp) elseif(HAVE_CAMV4L OR HAVE_CAMV4L2 OR HAVE_VIDEOIO) - list(APPEND videoio_srcs src/cap_v4l.cpp) + list(APPEND videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_v4l.cpp) endif() if(HAVE_OPENNI) - list(APPEND videoio_srcs src/cap_openni.cpp) + list(APPEND videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_openni.cpp) ocv_include_directories(${OPENNI_INCLUDE_DIR}) list(APPEND VIDEOIO_LIBRARIES ${OPENNI_LIBRARY}) endif(HAVE_OPENNI) if(HAVE_OPENNI2) - list(APPEND videoio_srcs src/cap_openni2.cpp) + list(APPEND videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_openni2.cpp) ocv_include_directories(${OPENNI2_INCLUDE_DIR}) list(APPEND VIDEOIO_LIBRARIES ${OPENNI2_LIBRARY}) endif(HAVE_OPENNI2) if(HAVE_opencv_androidcamera) - list(APPEND videoio_srcs src/cap_android.cpp) + list(APPEND videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_android.cpp) add_definitions(-DHAVE_ANDROID_NATIVE_CAMERA)#TODO: remove this line endif(HAVE_opencv_androidcamera) if(HAVE_XIMEA) - list(APPEND videoio_srcs src/cap_ximea.cpp) + list(APPEND videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_ximea.cpp) ocv_include_directories(${XIMEA_PATH}) if(XIMEA_LIBRARY_DIR) link_directories("${XIMEA_LIBRARY_DIR}") @@ -115,40 +115,43 @@ if(HAVE_PVAPI) add_definitions(-DHAVE_PVAPI) add_definitions(${PVAPI_DEFINITIONS}) ocv_include_directories(${PVAPI_INCLUDE_PATH}) - set(videoio_srcs src/cap_pvapi.cpp ${videoio_srcs}) + set(videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_pvapi.cpp ${videoio_srcs}) list(APPEND VIDEOIO_LIBRARIES ${PVAPI_LIBRARY}) endif() if(HAVE_GIGE_API) add_definitions(-DHAVE_GIGE_API) ocv_include_directories(${GIGEAPI_INCLUDE_PATH}) - set(videoio_srcs src/cap_giganetix.cpp ${videoio_srcs}) + set(videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_giganetix.cpp ${videoio_srcs}) list(APPEND VIDEOIO_LIBRARIES ${GIGEAPI_LIBRARIES}) - list(APPEND videoio_srcs src/cap_giganetix.cpp) + list(APPEND videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_giganetix.cpp) endif(HAVE_GIGE_API) if(HAVE_AVFOUNDATION) - list(APPEND videoio_srcs src/cap_avfoundation.mm) + list(APPEND videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_avfoundation.mm) list(APPEND VIDEOIO_LIBRARIES "-framework AVFoundation" "-framework QuartzCore") endif() if(HAVE_QUICKTIME) - list(APPEND videoio_srcs src/cap_qt.cpp) + list(APPEND videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_qt.cpp) list(APPEND VIDEOIO_LIBRARIES "-framework Carbon" "-framework QuickTime" "-framework CoreFoundation" "-framework QuartzCore") elseif(HAVE_QTKIT) - list(APPEND videoio_srcs src/cap_qtkit.mm) + list(APPEND videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_qtkit.mm) list(APPEND VIDEOIO_LIBRARIES "-framework QTKit" "-framework QuartzCore" "-framework AppKit") endif() if(HAVE_INTELPERC) - list(APPEND videoio_srcs src/cap_intelperc.cpp) + list(APPEND videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_intelperc.cpp) ocv_include_directories(${INTELPERC_INCLUDE_DIR}) list(APPEND VIDEOIO_LIBRARIES ${INTELPERC_LIBRARIES}) endif(HAVE_INTELPERC) if(IOS) add_definitions(-DHAVE_IOS=1) - list(APPEND videoio_srcs src/cap_ios_abstract_camera.mm src/cap_ios_photo_camera.mm src/cap_ios_video_camera.mm) + list(APPEND videoio_srcs + ${CMAKE_CURRENT_LIST_DIR}/src/cap_ios_abstract_camera.mm + ${CMAKE_CURRENT_LIST_DIR}/src/cap_ios_photo_camera.mm + ${CMAKE_CURRENT_LIST_DIR}/src/cap_ios_video_camera.mm) list(APPEND VIDEOIO_LIBRARIES "-framework Accelerate" "-framework AVFoundation" "-framework CoreGraphics" "-framework CoreImage" "-framework CoreMedia" "-framework CoreVideo" "-framework QuartzCore" "-framework AssetsLibrary") endif() @@ -176,6 +179,7 @@ ocv_module_include_directories() ocv_create_module(${VIDEOIO_LIBRARIES}) +macro(ocv_videoio_configure_target) if(APPLE) ocv_check_flag_support(OBJCXX "-fobjc-exceptions" HAVE_OBJC_EXCEPTIONS) if(HAVE_OBJC_EXCEPTIONS) @@ -203,9 +207,10 @@ if(MSVC) endif() #stop automatic dependencies propagation for this module -set_target_properties(${the_module} PROPERTIES LINK_INTERFACE_LIBRARIES "") +if(NOT BUILD_opencv_world) + set_target_properties(${the_module} PROPERTIES LINK_INTERFACE_LIBRARIES "") +endif() -ocv_add_precompiled_headers(${the_module}) ocv_warnings_disable(CMAKE_CXX_FLAGS -Wno-deprecated-declarations) if(WIN32 AND WITH_FFMPEG) @@ -235,6 +240,11 @@ if(WIN32 AND WITH_FFMPEG) install(FILES "${ffmpeg_path}" DESTINATION ${OPENCV_BIN_INSTALL_PATH} COMPONENT libs RENAME "${ffmpeg_bare_name_ver}") endif() +endmacro() + +if(NOT BUILD_opencv_world) + ocv_videoio_configure_target() +endif() ocv_add_accuracy_tests() ocv_add_perf_tests() diff --git a/modules/viz/CMakeLists.txt b/modules/viz/CMakeLists.txt index d839491c1b..7fddb53880 100644 --- a/modules/viz/CMakeLists.txt +++ b/modules/viz/CMakeLists.txt @@ -7,7 +7,7 @@ set(the_description "Viz") ocv_define_module(viz opencv_core ${VTK_LIBRARIES}) if(APPLE AND BUILD_opencv_viz) - target_link_libraries(opencv_viz "-framework Cocoa") + ocv_target_link_libraries(opencv_viz "-framework Cocoa") endif() if(TARGET opencv_test_viz) diff --git a/modules/world/CMakeLists.txt b/modules/world/CMakeLists.txt index 33a9304c87..4e05188e03 100644 --- a/modules/world/CMakeLists.txt +++ b/modules/world/CMakeLists.txt @@ -9,124 +9,47 @@ else() set(OPENCV_WORLD_FLAGS_PROPERTY LINK_FLAGS) endif() -ocv_add_module(world opencv_core) - -if(MSVC) - foreach(_var CMAKE_EXE_LINKER_FLAGS_RELEASE CMAKE_MODULE_LINKER_FLAGS_RELEASE CMAKE_SHARED_LINKER_FLAGS_RELEASE - CMAKE_EXE_LINKER_FLAGS_DEBUG CMAKE_MODULE_LINKER_FLAGS_DEBUG CMAKE_SHARED_LINKER_FLAGS_DEBUG) - string(REPLACE "/INCREMENTAL:NO" "/INCREMENTAL:YES" ${_var} "${${_var}}") +if(NOT OPENCV_INITIAL_PASS) + project(opencv_world) + + message(STATUS "Processing WORLD modules...") + foreach(m ${OPENCV_MODULES_BUILD}) + if(OPENCV_MODULE_${m}_IS_PART_OF_WORLD) + message(STATUS " module ${m}...") + set(CMAKE_CURRENT_SOURCE_DIR ${OPENCV_MODULE_${m}_LOCATION}) + #add_subdirectory("${OPENCV_MODULE_${m}_LOCATION}" ${CMAKE_CURRENT_BINARY_DIR}/${m}) + include("${OPENCV_MODULE_${m}_LOCATION}/CMakeLists.txt") + endif() endforeach() + message(STATUS "Processing WORLD modules... DONE") + set(CMAKE_CURRENT_SOURCE_DIR OPENCV_MODULE_${opencv_world}_LOCATION) endif() -ocv_glob_module_sources() -ocv_module_include_directories() -ocv_create_module(SKIP_LINK) - -#TODO: try to use try_compile to find real object file extension/location -if(CMAKE_GENERATOR MATCHES "^Visual.*$") - set(have_cfg 1) - set(objpath0 ".dir//.obj") -elseif (CMAKE_GENERATOR MATCHES Xcode) - set(have_cfg 1) - set(objpath0 "OpenCV.build/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/.build/Objects-normal/$(CURRENT_ARCH)/.o") -else() - set(have_cfg 0) - set(objpath0 "CMakeFiles/.dir/.o") - if(MINGW OR MSVC) - set(objpath0 "${objpath0}bj") - endif() -endif() +ocv_add_module(world opencv_core) -set(objlist "") +set(headers_list "HEADERS") +set(sources_list "SOURCES") +set(link_deps "") foreach(m ${OPENCV_MODULE_${the_module}_DEPS}) - # build order dependencies - add_dependencies(${the_module} ${m}) - # link dependencies - string(REGEX REPLACE "(general|debug|optimized);opencv_[^;]*(;|$)" "" _link_deps "${${m}_LIB_DEPENDS}") - if(_link_deps) - target_link_libraries(${the_module} ${_link_deps}) - endif() - - string(REGEX REPLACE "" "${m}" objpath1 "${${m}_BINARY_DIR}/${objpath0}") - foreach(srcname ${OPENCV_MODULE_${m}_SOURCES}) - if(srcname MATCHES "\\.(cpp|mm|c|cxx|cc|o|obj)$") - if(srcname MATCHES "\\.(o|obj)$") - if(IS_ABSOLUTE "${srcname}") - set(objpath3 "${srcname}") - else() - set(objpath3 "${${m}_SOURCE_DIR}/${srcname}") - endif() - else() - if(IS_ABSOLUTE "${srcname}") - if(srcname MATCHES "/(qrc|moc)_[^/]*\\.cxx$") - # QT generated sources - file(RELATIVE_PATH srcname "${${m}_BINARY_DIR}" "${srcname}") - else() - file(RELATIVE_PATH srcname "${OPENCV_MODULE_${m}_LOCATION}" "${srcname}") - endif() - endif() - string(REPLACE ".." "__" srcname "${srcname}") - #NAME_WE intentionally not used since it interprets first period as start of extension (http://cmake.org/Bug/view.php?id=12282) - get_filename_component(srcname_we "${srcname}" NAME) - string(REGEX REPLACE "\\.[^.]+$" "" srcname_we "${srcname_we}") - string(REGEX REPLACE "${srcname_we}" objpath2 "${objpath1}") - string(REGEX REPLACE "${srcname}" objpath3 "${objpath2}") - endif() - if(CMAKE_GENERATOR MATCHES Makefiles) - file(RELATIVE_PATH objpath4 "${CMAKE_CURRENT_BINARY_DIR}" "${objpath3}") - else() - set(objpath4 ${objpath3}) - endif() - list(APPEND objlist "\"${objpath4}\"") - endif() - endforeach() + set(headers_list "${headers_list};${OPENCV_MODULE_${m}_HEADERS}") + set(sources_list "${sources_list};${OPENCV_MODULE_${m}_SOURCES}") + set(link_deps "${link_deps};${OPENCV_MODULE_${m}_LINK_DEPS}") endforeach() +ocv_glob_module_sources(${headers_list} ${sources_list}) -macro(ios_include_3party_libs) - foreach(l ${ARGN}) - add_dependencies(${the_module} ${l}) - string(REGEX REPLACE "" "${l}" objpath1 "${CMAKE_BINARY_DIR}/3rdparty/${l}/${objpath0}") - file(GLOB sources ${CMAKE_SOURCE_DIR}/3rdparty/${l}/*.c) - foreach(srcname ${sources}) - if(IS_ABSOLUTE "${srcname}") - file(RELATIVE_PATH srcname "${CMAKE_SOURCE_DIR}/3rdparty/${l}" "${srcname}") - endif() +ocv_module_include_directories() - string(REPLACE ".." "__" srcname "${srcname}") - #NAME_WE intentionally not used since it interprets first period as start of extension (http://cmake.org/Bug/view.php?id=12282) - get_filename_component(srcname_we "${srcname}" NAME) - string(REGEX REPLACE "\\.[^.]+$" "" srcname_we "${srcname_we}") - string(REGEX REPLACE "${srcname_we}" objpath2 "${objpath1}") - string(REGEX REPLACE "${srcname}" objpath3 "${objpath2}") +#message(STATUS "${OPENCV_MODULE_${the_module}_HEADERS}") +#message(STATUS "${OPENCV_MODULE_${the_module}_SOURCES}") +ocv_create_module(${link_deps}) - list(APPEND objlist "\"${objpath3}\"") - endforeach() # (srcname ${sources}) - endforeach() - ocv_list_filterout(objlist jmemansi) # <<= dirty fix -endmacro() - -if( (IOS OR APPLE) AND WITH_PNG) - ios_include_3party_libs(zlib libpng) +if(BUILD_opencv_imgcodecs) + ocv_imgcodecs_configure_target() endif() - -if( (IOS OR APPLE) AND WITH_JPEG) - ios_include_3party_libs(libjpeg) +if(BUILD_opencv_videoio) + ocv_videoio_configure_target() endif() - -string(REPLACE ";" " " objlist "${objlist}") - -if(have_cfg) - string(REGEX REPLACE "" "Debug" objlist_dbg "${objlist}") - string(REGEX REPLACE "" "Release" objlist_rls "${objlist}") - set_target_properties(${the_module} PROPERTIES - ${OPENCV_WORLD_FLAGS_PROPERTY}_DEBUG ${objlist_dbg} - ${OPENCV_WORLD_FLAGS_PROPERTY}_RELEASE ${objlist_rls}) -else() - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/world_objects.list" "${objlist}") - execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_BINARY_DIR}/world_objects.list" "${CMAKE_CURRENT_BINARY_DIR}/world_objects.rsp" OUTPUT_QUIET) - set_target_properties(${the_module} PROPERTIES - ${OPENCV_WORLD_FLAGS_PROPERTY} "@${CMAKE_CURRENT_BINARY_DIR}/world_objects.rsp") +if(BUILD_opencv_highgui) + ocv_highgui_configure_target() endif() - -ocv_add_precompiled_headers(${the_module}) diff --git a/modules/world/src/precomp.hpp b/modules/world/src/precomp.hpp index 1aa056848f..a46e470b43 100644 --- a/modules/world/src/precomp.hpp +++ b/modules/world/src/precomp.hpp @@ -44,6 +44,9 @@ #define __OPENCV_PRECOMP_H__ #include "opencv2/opencv_modules.hpp" + +#include "opencv2/core/ocl.hpp" + #ifdef HAVE_OPENCV_VIDEO #include "opencv2/video.hpp" #endif @@ -53,9 +56,6 @@ #ifdef HAVE_OPENCV_NONFREE #include "opencv2/nonfree.hpp" #endif -#ifdef HAVE_OPENCV_ML -#include "opencv2/ml.hpp" -#endif #include "opencv2/world.hpp" diff --git a/modules/world/src/world_init.cpp b/modules/world/src/world_init.cpp index 3fd13f392a..685e44bdf7 100644 --- a/modules/world/src/world_init.cpp +++ b/modules/world/src/world_init.cpp @@ -53,9 +53,6 @@ bool cv::initAll() #endif #ifdef HAVE_OPENCV_NONFREE && initModule_nonfree() -#endif -#ifdef HAVE_OPENCV_ML - && initModule_ml() #endif ; } diff --git a/samples/android/CMakeLists.txt b/samples/android/CMakeLists.txt index 1ca60fbb91..8cad0e9fe1 100644 --- a/samples/android/CMakeLists.txt +++ b/samples/android/CMakeLists.txt @@ -19,9 +19,9 @@ add_subdirectory(native-activity) # hello-android sample if(HAVE_opencv_highgui) - ocv_include_modules_recurse(opencv_imgcodecs opencv_videoio opencv_highgui opencv_core) add_executable(hello-android hello-android/main.cpp) - target_link_libraries(hello-android ${OPENCV_LINKER_LIBS} opencv_imgcodecs opencv_videoio opencv_highgui opencv_core) + ocv_target_include_modules_recurse(hello-android opencv_imgcodecs opencv_videoio opencv_highgui opencv_core) + ocv_target_link_libraries(hello-android ${OPENCV_LINKER_LIBS} opencv_imgcodecs opencv_videoio opencv_highgui opencv_core) set_target_properties(hello-android PROPERTIES OUTPUT_NAME hello-android RUNTIME_OUTPUT_DIRECTORY "${EXECUTABLE_OUTPUT_PATH}") add_dependencies(opencv_android_examples hello-android) endif() diff --git a/samples/cpp/CMakeLists.txt b/samples/cpp/CMakeLists.txt index f22483cf6e..26acad1452 100644 --- a/samples/cpp/CMakeLists.txt +++ b/samples/cpp/CMakeLists.txt @@ -55,14 +55,14 @@ if(BUILD_EXAMPLES AND OCV_DEPENDENCIES_FOUND) set(the_target "${sample_kind}_${name}") add_executable(${the_target} ${srcs}) - target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS} ${OPENCV_CPP_SAMPLES_REQUIRED_DEPS}) + ocv_target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS} ${OPENCV_CPP_SAMPLES_REQUIRED_DEPS}) if("${srcs}" MATCHES "gpu/") - target_link_libraries(${the_target} opencv_cudaarithm opencv_cudafilters) + ocv_target_link_libraries(${the_target} opencv_cudaarithm opencv_cudafilters) endif() if(HAVE_opencv_ocl) - target_link_libraries(${the_target} opencv_ocl) + ocv_target_link_libraries(${the_target} opencv_ocl) endif() set_target_properties(${the_target} PROPERTIES diff --git a/samples/directx/CMakeLists.txt b/samples/directx/CMakeLists.txt index 1083894100..15a6575374 100644 --- a/samples/directx/CMakeLists.txt +++ b/samples/directx/CMakeLists.txt @@ -17,7 +17,7 @@ if(BUILD_EXAMPLES AND OCV_DEPENDENCIES_FOUND) set(the_target "example_${project}_${name}") add_executable(${the_target} ${srcs}) - target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS} ${OPENCV_DIRECTX_SAMPLES_REQUIRED_DEPS}) + ocv_target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS} ${OPENCV_DIRECTX_SAMPLES_REQUIRED_DEPS}) set_target_properties(${the_target} PROPERTIES OUTPUT_NAME "${project}-example-${name}" diff --git a/samples/gpu/CMakeLists.txt b/samples/gpu/CMakeLists.txt index 849e3109df..01bd694bb8 100644 --- a/samples/gpu/CMakeLists.txt +++ b/samples/gpu/CMakeLists.txt @@ -47,21 +47,21 @@ if(BUILD_EXAMPLES AND OCV_DEPENDENCIES_FOUND) set(the_target "example_${project}_${name}") add_executable(${the_target} ${srcs}) - target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS} ${OPENCV_CUDA_SAMPLES_REQUIRED_DEPS}) + ocv_target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS} ${OPENCV_CUDA_SAMPLES_REQUIRED_DEPS}) if(HAVE_CUDA AND NOT ANDROID) - target_link_libraries(${the_target} ${CUDA_CUDA_LIBRARY}) + ocv_target_link_libraries(${the_target} ${CUDA_CUDA_LIBRARY}) endif() if(HAVE_opencv_nonfree) - target_link_libraries(${the_target} opencv_nonfree) + ocv_target_link_libraries(${the_target} opencv_nonfree) endif() if(HAVE_opencv_cudacodec) - target_link_libraries(${the_target} opencv_cudacodec) + ocv_target_link_libraries(${the_target} opencv_cudacodec) endif() if(HAVE_opencv_ocl) - target_link_libraries(${the_target} opencv_ocl) + ocv_target_link_libraries(${the_target} opencv_ocl) endif() set_target_properties(${the_target} PROPERTIES diff --git a/samples/gpu/performance/CMakeLists.txt b/samples/gpu/performance/CMakeLists.txt index 9289180afc..07125c2eb2 100644 --- a/samples/gpu/performance/CMakeLists.txt +++ b/samples/gpu/performance/CMakeLists.txt @@ -8,10 +8,10 @@ if(HAVE_opencv_nonfree) endif() add_executable(${the_target} ${sources} ${headers}) -target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS} ${OPENCV_CUDA_SAMPLES_REQUIRED_DEPS}) +ocv_target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS} ${OPENCV_CUDA_SAMPLES_REQUIRED_DEPS}) if(HAVE_opencv_nonfree) - target_link_libraries(${the_target} opencv_nonfree) + ocv_target_link_libraries(${the_target} opencv_nonfree) endif() set_target_properties(${the_target} PROPERTIES diff --git a/samples/tapi/CMakeLists.txt b/samples/tapi/CMakeLists.txt index cf88f3a98f..83fd7260ac 100644 --- a/samples/tapi/CMakeLists.txt +++ b/samples/tapi/CMakeLists.txt @@ -17,7 +17,7 @@ if(BUILD_EXAMPLES AND OCV_DEPENDENCIES_FOUND) set(the_target "example_${project}_${name}") add_executable(${the_target} ${srcs}) - target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS} ${OPENCV_TAPI_SAMPLES_REQUIRED_DEPS}) + ocv_target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS} ${OPENCV_TAPI_SAMPLES_REQUIRED_DEPS}) set_target_properties(${the_target} PROPERTIES OUTPUT_NAME "${project}-example-${name}" From fc0f254f0042dd94419bdc07358a7fd38577b359 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Tue, 5 Aug 2014 20:37:18 +0400 Subject: [PATCH 100/189] make distrib with world (shared libs) --- CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index e397912943..58108fa346 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -337,6 +337,9 @@ if(DEFINED CMAKE_DEBUG_POSTFIX) set(OPENCV_DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}") endif() +if(INSTALL_CREATE_DISTRIB AND BUILD_SHARED_LIBS AND NOT DEFINED BUILD_opencv_world) + set(BUILD_opencv_world ON CACHE INTERNAL "") +endif() # ---------------------------------------------------------------------------- # Path for build/platform -specific headers From 976c727eec7b9bb3f4c12b7ed4ada8b3f664bf69 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Wed, 6 Aug 2014 02:30:35 -0400 Subject: [PATCH 101/189] Fix a few more PYTHON_NUMPY_INCLUDE_PATH The previous commit fixing references to PYTHON_NUMPY_INCLUDE_PATH missed a few unset()s. --- modules/python/python2/CMakeLists.txt | 2 +- modules/python/python3/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/python/python2/CMakeLists.txt b/modules/python/python2/CMakeLists.txt index 4881cb5edf..01a3b474d0 100644 --- a/modules/python/python2/CMakeLists.txt +++ b/modules/python/python2/CMakeLists.txt @@ -18,7 +18,7 @@ include(../common.cmake) unset(MODULE_NAME) unset(PYTHON_INCLUDE_PATH) -unset(PYTHON_NUMPY_INCLUDE_PATH) +unset(PYTHON_NUMPY_INCLUDE_DIRS) unset(PYTHON_EXECUTABLE) unset(PYTHON_DEBUG_LIBRARIES) unset(PYTHON_LIBRARIES) diff --git a/modules/python/python3/CMakeLists.txt b/modules/python/python3/CMakeLists.txt index 3f66492050..14672d3c75 100644 --- a/modules/python/python3/CMakeLists.txt +++ b/modules/python/python3/CMakeLists.txt @@ -18,7 +18,7 @@ include(../common.cmake) unset(MODULE_NAME) unset(PYTHON_INCLUDE_PATH) -unset(PYTHON_NUMPY_INCLUDE_PATH) +unset(PYTHON_NUMPY_INCLUDE_DIRS) unset(PYTHON_EXECUTABLE) unset(PYTHON_DEBUG_LIBRARIES) unset(PYTHON_LIBRARIES) From 9d9411555fa87321a1e36a39c8993c224f66e2fd Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Wed, 6 Aug 2014 02:31:30 -0400 Subject: [PATCH 102/189] Place Python library out in dedicated folder Place the built Python module library in a dedicated folder inside of lib/. This ensures that even if the Python 2 and Python 3 module names conflict, they will not overwrite one another. --- modules/python/common.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/python/common.cmake b/modules/python/common.cmake index 7d964067af..c37ae6681b 100644 --- a/modules/python/common.cmake +++ b/modules/python/common.cmake @@ -71,6 +71,7 @@ execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import distutils.sysconfig; pri OUTPUT_STRIP_TRAILING_WHITESPACE) set_target_properties(${the_module} PROPERTIES + LIBRARY_OUTPUT_DIRECTORY "${LIBRARY_OUTPUT_PATH}/${MODULE_NAME}" PREFIX "" OUTPUT_NAME cv2 SUFFIX ${CVPY_SUFFIX}) From f3aa4bdf5941f413282d3400359e946bf812e2e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20W=C3=B6ldecke?= Date: Wed, 6 Aug 2014 19:02:48 +0200 Subject: [PATCH 103/189] fix misinterpretation of empty window name The documentation states, that a NULL or an empty window name can be used to refer to the control panel. But the string parameters of the C++ frontend methods cannot be NULL and converting an empty string to a const char* by c_str() doesn't produce a NULL pointer, but an empty string. Unfortunately, the const char* pointer is just passed on to the standard C functions in the QT backend, which doesn't check for the empty string case. There are two places where the empty string check could have been introduced: inside the frontend or inside the backend. As long as the documentation only mentions this as a special case for the QT backend, the best place seems to be there. --- modules/highgui/src/window_QT.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/highgui/src/window_QT.cpp b/modules/highgui/src/window_QT.cpp index 1433f744de..d4dfc989f5 100644 --- a/modules/highgui/src/window_QT.cpp +++ b/modules/highgui/src/window_QT.cpp @@ -401,7 +401,7 @@ static CvTrackbar* icvFindTrackBarByName(const char* name_trackbar, const char* { QString nameQt(name_trackbar); - if (!name_window && global_control_panel) //window name is null and we have a control panel + if ((!name_window || !name_window[0]) && global_control_panel) //window name is null and we have a control panel layout = global_control_panel->myLayout; if (!layout) From d921cde4d2ee72533896ef971e8e30d2ce33806a Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Thu, 7 Aug 2014 00:16:49 -0400 Subject: [PATCH 104/189] Add opencv_matlab to Python ignored modules Requested by @vpisarev in #3047. --- modules/python/common.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/python/common.cmake b/modules/python/common.cmake index c37ae6681b..581822e9d5 100644 --- a/modules/python/common.cmake +++ b/modules/python/common.cmake @@ -15,6 +15,7 @@ endforeach(mp) # module blacklist ocv_list_filterout(candidate_deps "^opencv_cud(a|ev)") ocv_list_filterout(candidate_deps "^opencv_adas$") +ocv_list_filterout(candidate_deps "^opencv_matlab$") ocv_list_filterout(candidate_deps "^opencv_tracking$") From 7d41ce23a757b56d6b4c96d741f9a4b175606a70 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Thu, 7 Aug 2014 00:21:42 -0400 Subject: [PATCH 105/189] Build Python 3 bindings in subdirectory Build the Python 3 cv2 module in lib/python3/, to avoid potential naming conflicts with the Python 2 bindings. The Python 2 bindings are placed directly in lib/, where they are required for the Buildbot to successfully execute the Python tests. --- modules/python/common.cmake | 2 +- modules/python/python2/CMakeLists.txt | 3 +++ modules/python/python3/CMakeLists.txt | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/python/common.cmake b/modules/python/common.cmake index 581822e9d5..30f6d2813c 100644 --- a/modules/python/common.cmake +++ b/modules/python/common.cmake @@ -72,7 +72,7 @@ execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import distutils.sysconfig; pri OUTPUT_STRIP_TRAILING_WHITESPACE) set_target_properties(${the_module} PROPERTIES - LIBRARY_OUTPUT_DIRECTORY "${LIBRARY_OUTPUT_PATH}/${MODULE_NAME}" + LIBRARY_OUTPUT_DIRECTORY "${LIBRARY_OUTPUT_PATH}/${MODULE_INSTALL_SUBDIR}" PREFIX "" OUTPUT_NAME cv2 SUFFIX ${CVPY_SUFFIX}) diff --git a/modules/python/python2/CMakeLists.txt b/modules/python/python2/CMakeLists.txt index 01a3b474d0..158763ec50 100644 --- a/modules/python/python2/CMakeLists.txt +++ b/modules/python/python2/CMakeLists.txt @@ -4,6 +4,8 @@ endif() set(the_description "The python2 bindings") set(MODULE_NAME python2) +# Buildbot requires Python 2 to be in root lib dir +set(MODULE_INSTALL_SUBDIR "") set(PYTHON_INCLUDE_PATH ${PYTHON2_INCLUDE_PATH}) set(PYTHON_NUMPY_INCLUDE_DIRS ${PYTHON2_NUMPY_INCLUDE_DIRS}) @@ -17,6 +19,7 @@ set(PYTHON_VERSION_MINOR ${PYTHON2_VERSION_MINOR}) include(../common.cmake) unset(MODULE_NAME) +unset(MODULE_INSTALL_SUBDIR) unset(PYTHON_INCLUDE_PATH) unset(PYTHON_NUMPY_INCLUDE_DIRS) unset(PYTHON_EXECUTABLE) diff --git a/modules/python/python3/CMakeLists.txt b/modules/python/python3/CMakeLists.txt index 14672d3c75..4b6fe4f141 100644 --- a/modules/python/python3/CMakeLists.txt +++ b/modules/python/python3/CMakeLists.txt @@ -4,6 +4,7 @@ endif() set(the_description "The python3 bindings") set(MODULE_NAME python3) +set(MODULE_INSTALL_SUBDIR python3) set(PYTHON_INCLUDE_PATH ${PYTHON3_INCLUDE_PATH}) set(PYTHON_NUMPY_INCLUDE_DIRS ${PYTHON3_NUMPY_INCLUDE_DIRS}) @@ -17,6 +18,7 @@ set(PYTHON_VERSION_MINOR ${PYTHON3_VERSION_MINOR}) include(../common.cmake) unset(MODULE_NAME) +unset(MODULE_INSTALL_SUBDIR) unset(PYTHON_INCLUDE_PATH) unset(PYTHON_NUMPY_INCLUDE_DIRS) unset(PYTHON_EXECUTABLE) From e9ccadebed4a07626b2aa8108fde0634d96827d4 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Thu, 7 Aug 2014 00:51:48 -0400 Subject: [PATCH 106/189] Support Python 2 and 3 in test script Add Python 3 support to the Python test.py script. The print function is used in place of the print statement. The urlopen function has been moved to urllib.request in Python 3, so attempt to import it from either location. TestCase.assert_() has been deprecated in place of TestCase.assertTrue(). The tests all pass in both Python 2 and 3. --- modules/python/test/test.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/modules/python/test/test.py b/modules/python/test/test.py index 2da740de9b..76f64fc52e 100644 --- a/modules/python/test/test.py +++ b/modules/python/test/test.py @@ -1,12 +1,12 @@ #!/usr/bin/env python +from __future__ import print_function import unittest import random import time import math import sys import array -import urllib import tarfile import hashlib import os @@ -16,11 +16,17 @@ import functools import numpy as np import cv2 +# Python 3 moved urlopen to urllib.requests +try: + from urllib.request import urlopen +except ImportError: + from urllib import urlopen + class NewOpenCVTests(unittest.TestCase): def get_sample(self, filename, iscolor = cv2.IMREAD_COLOR): if not filename in self.image_cache: - filedata = urllib.urlopen("https://raw.github.com/Itseez/opencv/master/" + filename).read() + filedata = urlopen("https://raw.github.com/Itseez/opencv/master/" + filename).read() self.image_cache[filename] = cv2.imdecode(np.fromstring(filedata, dtype=np.uint8), iscolor) return self.image_cache[filename] @@ -51,7 +57,7 @@ class Hackathon244Tests(NewOpenCVTests): def test_int_array(self): a = np.array([-1, 2, -3, 4, -5]) absa0 = np.abs(a) - self.assert_(cv2.norm(a, cv2.NORM_L1) == 15) + self.assertTrue(cv2.norm(a, cv2.NORM_L1) == 15) absa1 = cv2.absdiff(a, 0) self.assertEqual(cv2.norm(absa1, absa0, cv2.NORM_INF), 0) @@ -90,13 +96,13 @@ class Hackathon244Tests(NewOpenCVTests): img = cv2.medianBlur(img, 3) imgc = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) keypoints = fd.detect(img) - self.assert_(600 <= len(keypoints) <= 700) + self.assertTrue(600 <= len(keypoints) <= 700) for kpt in keypoints: self.assertNotEqual(kpt.response, 0) def check_close_angles(self, a, b, angle_delta): - self.assert_(abs(a - b) <= angle_delta or - abs(360 - abs(a - b)) <= angle_delta) + self.assertTrue(abs(a - b) <= angle_delta or + abs(360 - abs(a - b)) <= angle_delta) def check_close_pairs(self, a, b, delta): self.assertLessEqual(abs(a[0] - b[0]), delta) @@ -127,6 +133,6 @@ class Hackathon244Tests(NewOpenCVTests): self.assertLessEqual(abs(mr - mr0), 5) if __name__ == '__main__': - print "Testing OpenCV", cv2.__version__ + print("Testing OpenCV", cv2.__version__) random.seed(0) unittest.main() From fec21239c809ff363bb40235784276e790e634e0 Mon Sep 17 00:00:00 2001 From: Alexander Karsakov Date: Mon, 4 Aug 2014 12:45:00 +0400 Subject: [PATCH 107/189] Revert optimization for warpAffine INTER_NEAREST mode --- modules/imgproc/src/opencl/warp_affine.cl | 15 ++++++--------- modules/imgproc/src/pyramids.cpp | 3 +++ modules/imgproc/test/ocl/test_pyramids.cpp | 3 ++- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/modules/imgproc/src/opencl/warp_affine.cl b/modules/imgproc/src/opencl/warp_affine.cl index 649f10db7a..229336ea15 100644 --- a/modules/imgproc/src/opencl/warp_affine.cl +++ b/modules/imgproc/src/opencl/warp_affine.cl @@ -98,15 +98,15 @@ __kernel void warpAffine(__global const uchar * srcptr, int src_step, int src_of { int round_delta = (AB_SCALE >> 1); - int X0 = rint(fma(M[0], dx, fma(M[1], dy0, M[2])) * AB_SCALE) + round_delta; - int Y0 = rint(fma(M[3], dx, fma(M[4], dy0, M[5])) * AB_SCALE) + round_delta; - - int XSTEP = (int)(M[1] * AB_SCALE); - int YSTEP = (int)(M[4] * AB_SCALE); + int X0_ = rint(M[0] * dx * AB_SCALE); + int Y0_ = rint(M[3] * dx * AB_SCALE); int dst_index = mad24(dy0, dst_step, mad24(dx, pixsize, dst_offset)); for (int dy = dy0, dy1 = min(dst_rows, dy0 + rowsPerWI); dy < dy1; ++dy, dst_index += dst_step) { + int X0 = X0_ + rint(fma(M[1], dy, M[2]) * AB_SCALE) + round_delta; + int Y0 = Y0_ + rint(fma(M[4], dy, M[5]) * AB_SCALE) + round_delta; + short sx = convert_short_sat(X0 >> AB_BITS); short sy = convert_short_sat(Y0 >> AB_BITS); @@ -117,9 +117,6 @@ __kernel void warpAffine(__global const uchar * srcptr, int src_step, int src_of } else storepix(scalar, dstptr + dst_index); - - X0 += XSTEP; - Y0 += YSTEP; } } } @@ -376,4 +373,4 @@ __kernel void warpAffine(__global const uchar * srcptr, int src_step, int src_of } } -#endif +#endif \ No newline at end of file diff --git a/modules/imgproc/src/pyramids.cpp b/modules/imgproc/src/pyramids.cpp index 2714e08f30..f213445993 100644 --- a/modules/imgproc/src/pyramids.cpp +++ b/modules/imgproc/src/pyramids.cpp @@ -413,6 +413,9 @@ static bool ocl_pyrDown( InputArray _src, OutputArray _dst, const Size& _dsz, in Size ssize = _src.size(); Size dsize = _dsz.area() == 0 ? Size((ssize.width + 1) / 2, (ssize.height + 1) / 2) : _dsz; + if (dsize.height < 2 || dsize.width < 2) + return false; + CV_Assert( ssize.width > 0 && ssize.height > 0 && std::abs(dsize.width*2 - ssize.width) <= 2 && std::abs(dsize.height*2 - ssize.height) <= 2 ); diff --git a/modules/imgproc/test/ocl/test_pyramids.cpp b/modules/imgproc/test/ocl/test_pyramids.cpp index a129c7f771..beff48591e 100644 --- a/modules/imgproc/test/ocl/test_pyramids.cpp +++ b/modules/imgproc/test/ocl/test_pyramids.cpp @@ -94,7 +94,8 @@ OCL_TEST_P(PyrDown, Mat) { for (int j = 0; j < test_loop_times; j++) { - Size src_roiSize = randomSize(1, MAX_VALUE); + // minimal src size is set to 4 since size<4 doesn't make sense + Size src_roiSize = randomSize(4, MAX_VALUE); Size dst_roiSize = Size(randomInt((src_roiSize.width - 1) / 2, (src_roiSize.width + 3) / 2), randomInt((src_roiSize.height - 1) / 2, (src_roiSize.height + 3) / 2)); dst_roiSize = dst_roiSize.area() == 0 ? Size((src_roiSize.width + 1) / 2, (src_roiSize.height + 1) / 2) : dst_roiSize; From eb9fdb01642021a8bd56d44cde5b50295e6403bc Mon Sep 17 00:00:00 2001 From: Alexander Karsakov Date: Tue, 5 Aug 2014 15:40:29 +0400 Subject: [PATCH 108/189] Fixed rounding in remap INTER_LINEAR mode --- modules/imgproc/src/opencl/remap.cl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/imgproc/src/opencl/remap.cl b/modules/imgproc/src/opencl/remap.cl index 4e45b40bd3..41f5fa85d7 100644 --- a/modules/imgproc/src/opencl/remap.cl +++ b/modules/imgproc/src/opencl/remap.cl @@ -413,9 +413,9 @@ __kernel void remap_2_32FC1(__global const uchar * srcptr, int src_step, int src __global T * dst = (__global T *)(dstptr + dst_index); #if defined BORDER_CONSTANT - float xf = map1[0], yf = map2[0]; - int sx = convert_int_sat_rtn(xf), sy = convert_int_sat_rtn(yf); + int sx = convert_int_sat_rtz(mad(xf, INTER_TAB_SIZE, 0.5f)) >> INTER_BITS; + int sy = convert_int_sat_rtz(mad(yf, INTER_TAB_SIZE, 0.5f)) >> INTER_BITS; __constant float * coeffs_x = coeffs + ((convert_int_rte(xf * INTER_TAB_SIZE) & (INTER_TAB_SIZE - 1)) << 1); __constant float * coeffs_y = coeffs + ((convert_int_rte(yf * INTER_TAB_SIZE) & (INTER_TAB_SIZE - 1)) << 1); From 2a0b39d30a6e324e51f870536420de5f8df6e687 Mon Sep 17 00:00:00 2001 From: Alexander Karsakov Date: Tue, 5 Aug 2014 17:17:14 +0400 Subject: [PATCH 109/189] Fixed calculate_histogram kernel --- modules/imgproc/src/opencl/histogram.cl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/imgproc/src/opencl/histogram.cl b/modules/imgproc/src/opencl/histogram.cl index ff8023054f..5c99d5424d 100644 --- a/modules/imgproc/src/opencl/histogram.cl +++ b/modules/imgproc/src/opencl/histogram.cl @@ -47,7 +47,7 @@ #define noconvert -__kernel void calculate_histogram(__global const uchar * src, int src_step, int src_offset, int src_rows, int src_cols, +__kernel void calculate_histogram(__global const uchar * src_ptr, int src_step, int src_offset, int src_rows, int src_cols, __global uchar * histptr, int total) { int lid = get_local_id(0); @@ -61,6 +61,7 @@ __kernel void calculate_histogram(__global const uchar * src, int src_step, int localhist[i] = 0; barrier(CLK_LOCAL_MEM_FENCE); + __global const uchar * src = src_ptr + src_offset; int src_index; for (int grain = HISTS_COUNT * WGS * kercn; id < total; id += grain) @@ -68,7 +69,7 @@ __kernel void calculate_histogram(__global const uchar * src, int src_step, int #ifdef HAVE_SRC_CONT src_index = id; #else - src_index = mad24(id / src_cols, src_step, src_offset + id % src_cols); + src_index = mad24(id / src_cols, src_step, id % src_cols); #endif #if kercn == 1 From 44fbfb2cf6b6dd45ab0ad2a8d31bfafca71bc00f Mon Sep 17 00:00:00 2001 From: Alexander Karsakov Date: Wed, 6 Aug 2014 11:09:56 +0400 Subject: [PATCH 110/189] Fixed extrapolation in pyrDown --- modules/imgproc/src/opencl/pyr_down.cl | 6 +++--- modules/imgproc/test/ocl/test_pyramids.cpp | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/modules/imgproc/src/opencl/pyr_down.cl b/modules/imgproc/src/opencl/pyr_down.cl index 4db1a8d811..b6927fa879 100644 --- a/modules/imgproc/src/opencl/pyr_down.cl +++ b/modules/imgproc/src/opencl/pyr_down.cl @@ -53,16 +53,16 @@ #if defined BORDER_REPLICATE // aaaaaa|abcdefgh|hhhhhhh -#define EXTRAPOLATE(x, maxV) clamp(x, 0, maxV-1) +#define EXTRAPOLATE(x, maxV) clamp((x), 0, (maxV)-1) #elif defined BORDER_WRAP // cdefgh|abcdefgh|abcdefg #define EXTRAPOLATE(x, maxV) ( (x) + (maxV) ) % (maxV) #elif defined BORDER_REFLECT // fedcba|abcdefgh|hgfedcb -#define EXTRAPOLATE(x, maxV) min(((maxV)-1)*2-(x)+1, max((x),-(x)-1) ) +#define EXTRAPOLATE(x, maxV) clamp(min(((maxV)-1)*2-(x)+1, max((x),-(x)-1) ), 0, (maxV)-1) #elif defined BORDER_REFLECT_101 || defined BORDER_REFLECT101 // gfedcb|abcdefgh|gfedcba -#define EXTRAPOLATE(x, maxV) min(((maxV)-1)*2-(x), max((x),-(x)) ) +#define EXTRAPOLATE(x, maxV) clamp(min(((maxV)-1)*2-(x), max((x),-(x)) ), 0, (maxV)-1) #else #error No extrapolation method #endif diff --git a/modules/imgproc/test/ocl/test_pyramids.cpp b/modules/imgproc/test/ocl/test_pyramids.cpp index beff48591e..a129c7f771 100644 --- a/modules/imgproc/test/ocl/test_pyramids.cpp +++ b/modules/imgproc/test/ocl/test_pyramids.cpp @@ -94,8 +94,7 @@ OCL_TEST_P(PyrDown, Mat) { for (int j = 0; j < test_loop_times; j++) { - // minimal src size is set to 4 since size<4 doesn't make sense - Size src_roiSize = randomSize(4, MAX_VALUE); + Size src_roiSize = randomSize(1, MAX_VALUE); Size dst_roiSize = Size(randomInt((src_roiSize.width - 1) / 2, (src_roiSize.width + 3) / 2), randomInt((src_roiSize.height - 1) / 2, (src_roiSize.height + 3) / 2)); dst_roiSize = dst_roiSize.area() == 0 ? Size((src_roiSize.width + 1) / 2, (src_roiSize.height + 1) / 2) : dst_roiSize; From 00221e96fdaabedb57bc04eb9d5a66504278ec47 Mon Sep 17 00:00:00 2001 From: Alexander Karsakov Date: Thu, 7 Aug 2014 12:31:50 +0400 Subject: [PATCH 111/189] Fixed issue: Mat::copyTo(UMat) if device copy is obsolete. Added test. --- modules/core/src/umatrix.cpp | 7 ++++--- modules/core/test/test_umat.cpp | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/modules/core/src/umatrix.cpp b/modules/core/src/umatrix.cpp index 494f3e3c06..ab8865d047 100644 --- a/modules/core/src/umatrix.cpp +++ b/modules/core/src/umatrix.cpp @@ -593,15 +593,16 @@ void* UMat::handle(int accessFlags) const if( !u ) return 0; - if ((accessFlags & ACCESS_WRITE) != 0) - u->markHostCopyObsolete(true); - // check flags: if CPU copy is newer, copy it back to GPU. if( u->deviceCopyObsolete() ) { CV_Assert(u->refcount == 0); u->currAllocator->unmap(u); } + + if ((accessFlags & ACCESS_WRITE) != 0) + u->markHostCopyObsolete(true); + return u->handle; } diff --git a/modules/core/test/test_umat.cpp b/modules/core/test/test_umat.cpp index d7ae7a9385..8e51aadad2 100644 --- a/modules/core/test/test_umat.cpp +++ b/modules/core/test/test_umat.cpp @@ -745,6 +745,24 @@ TEST(UMat, Sync) EXPECT_EQ(0, cvtest::norm(um.getMat(ACCESS_READ), cv::Mat(um.size(), um.type(), 19), NORM_INF)); } +TEST(UMat, CopyToIfDeviceCopyIsObsolete) +{ + UMat um(7, 2, CV_8UC1); + Mat m(um.size(), um.type()); + m.setTo(Scalar::all(0)); + + { + // make obsolete device copy of UMat + Mat temp = um.getMat(ACCESS_WRITE); + temp.setTo(Scalar::all(10)); + } + + m.copyTo(um); + um.setTo(Scalar::all(17)); + + EXPECT_EQ(0, cvtest::norm(um.getMat(ACCESS_READ), Mat(um.size(), um.type(), 17), NORM_INF)); +} + TEST(UMat, setOpenCL) { // save the current state From c9b5d8cf4c1bacf0d907fbfa939daee97b3aa7f9 Mon Sep 17 00:00:00 2001 From: Elena Gvozdeva Date: Wed, 6 Aug 2014 16:14:48 +0400 Subject: [PATCH 112/189] fixed tests for ocl_filter2d, ocl_matchTemplate, ocl_histogram.cpp --- modules/imgproc/test/ocl/test_filter2d.cpp | 2 +- modules/imgproc/test/ocl/test_histogram.cpp | 8 ++++++-- modules/imgproc/test/ocl/test_match_template.cpp | 11 +++++++++-- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/modules/imgproc/test/ocl/test_filter2d.cpp b/modules/imgproc/test/ocl/test_filter2d.cpp index 03a6bcff74..38a25a9d9b 100644 --- a/modules/imgproc/test/ocl/test_filter2d.cpp +++ b/modules/imgproc/test/ocl/test_filter2d.cpp @@ -125,7 +125,7 @@ OCL_INSTANTIATE_TEST_CASE_P(ImageProc, Filter2D, Combine( Values(CV_8U, CV_16U, CV_32F), OCL_ALL_CHANNELS, - Values(3, 5, 9), // Kernel size + Values(3, 5, 7), // Kernel size Values(1, 4, 8), // Width mutiple Values((BorderType)BORDER_CONSTANT, (BorderType)BORDER_REPLICATE, diff --git a/modules/imgproc/test/ocl/test_histogram.cpp b/modules/imgproc/test/ocl/test_histogram.cpp index e8813c85ad..9d73614e2d 100644 --- a/modules/imgproc/test/ocl/test_histogram.cpp +++ b/modules/imgproc/test/ocl/test_histogram.cpp @@ -99,6 +99,10 @@ PARAM_TEST_CASE(CalcBackProject, MatDepth, int, bool) Size roiSize = randomSize(1, MAX_VALUE); int totalChannels = 0; + + ranges.clear(); + channels.clear(); + for (int i = 0; i < N; ++i) { Border srcBorder = randomBorder(0, useRoi ? MAX_VALUE : 0); @@ -202,9 +206,9 @@ OCL_TEST_P(CalcBackProject, Mat) OCL_ON(cv::calcBackProject(uimages_roi, channels, uhist_roi, udst_roi, ranges, scale)); Size dstSize = dst_roi.size(); - int nDiffs = (int)(0.03f*dstSize.height*dstSize.width); + int nDiffs = (int)(0.06f*dstSize.area()+1); - //check if the dst mats are the same except 3% difference + //check if the dst mats are the same except 6% difference EXPECT_MAT_N_DIFF(dst_roi, udst_roi, nDiffs); } } diff --git a/modules/imgproc/test/ocl/test_match_template.cpp b/modules/imgproc/test/ocl/test_match_template.cpp index a525039ac2..a2c7f57e1f 100644 --- a/modules/imgproc/test/ocl/test_match_template.cpp +++ b/modules/imgproc/test/ocl/test_match_template.cpp @@ -99,7 +99,7 @@ PARAM_TEST_CASE(MatchTemplate, MatDepth, Channels, MatchTemplType, bool) void Near(double threshold = 0.0) { - OCL_EXPECT_MATS_NEAR_RELATIVE(result, threshold); + OCL_EXPECT_MATS_NEAR(result, threshold); } }; @@ -112,7 +112,14 @@ OCL_TEST_P(MatchTemplate, Mat) OCL_OFF(cv::matchTemplate(image_roi, templ_roi, result_roi, method)); OCL_ON(cv::matchTemplate(uimage_roi, utempl_roi, uresult_roi, method)); - Near(1.5e-4); + bool isNormed = + method == TM_CCORR_NORMED || + method == TM_SQDIFF_NORMED || + method == TM_CCOEFF_NORMED; + + double eps = isNormed ? 3e-2 : 255.0 * 255.0 * templ.total() * 2e-5; + + Near(eps); } } From 7dd7dd97cd40a996192b02b246dfae16f9f73f40 Mon Sep 17 00:00:00 2001 From: Elena Gvozdeva Date: Wed, 6 Aug 2014 17:31:19 +0400 Subject: [PATCH 113/189] fixed nDiffs for CalcBackProject --- modules/imgproc/test/ocl/test_histogram.cpp | 4 ++-- modules/imgproc/test/ocl/test_match_template.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/imgproc/test/ocl/test_histogram.cpp b/modules/imgproc/test/ocl/test_histogram.cpp index 9d73614e2d..6a16efa3a3 100644 --- a/modules/imgproc/test/ocl/test_histogram.cpp +++ b/modules/imgproc/test/ocl/test_histogram.cpp @@ -206,9 +206,9 @@ OCL_TEST_P(CalcBackProject, Mat) OCL_ON(cv::calcBackProject(uimages_roi, channels, uhist_roi, udst_roi, ranges, scale)); Size dstSize = dst_roi.size(); - int nDiffs = (int)(0.06f*dstSize.area()+1); + int nDiffs = std::max((int)(0.07f*dstSize.area()), 1); - //check if the dst mats are the same except 6% difference + //check if the dst mats are the same except 7% difference EXPECT_MAT_N_DIFF(dst_roi, udst_roi, nDiffs); } } diff --git a/modules/imgproc/test/ocl/test_match_template.cpp b/modules/imgproc/test/ocl/test_match_template.cpp index a2c7f57e1f..1d1352adfd 100644 --- a/modules/imgproc/test/ocl/test_match_template.cpp +++ b/modules/imgproc/test/ocl/test_match_template.cpp @@ -116,9 +116,9 @@ OCL_TEST_P(MatchTemplate, Mat) method == TM_CCORR_NORMED || method == TM_SQDIFF_NORMED || method == TM_CCOEFF_NORMED; - + double eps = isNormed ? 3e-2 : 255.0 * 255.0 * templ.total() * 2e-5; - + Near(eps); } } From c5ad6de596baebca7c66b907a251997147abada5 Mon Sep 17 00:00:00 2001 From: Alexander Karsakov Date: Thu, 7 Aug 2014 15:37:26 +0400 Subject: [PATCH 114/189] Fixed choice of kercn and rowsPerWI for non-Intel device. --- modules/core/src/matrix.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/modules/core/src/matrix.cpp b/modules/core/src/matrix.cpp index 46c8eeac86..7eff30660c 100644 --- a/modules/core/src/matrix.cpp +++ b/modules/core/src/matrix.cpp @@ -2758,15 +2758,18 @@ namespace cv { static bool ocl_setIdentity( InputOutputArray _m, const Scalar& s ) { - int type = _m.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type), kercn = cn; - if (cn == 1) + int type = _m.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type), kercn = cn, rowsPerWI = 1; + int sctype = CV_MAKE_TYPE(depth, cn == 3 ? 4 : cn); + if (ocl::Device::getDefault().isIntel()) { - kercn = std::min(ocl::predictOptimalVectorWidth(_m), 4); - if (kercn != 4) - kercn = 1; + rowsPerWI = 4; + if (cn == 1) + { + kercn = std::min(ocl::predictOptimalVectorWidth(_m), 4); + if (kercn != 4) + kercn = 1; + } } - int sctype = CV_MAKE_TYPE(depth, cn == 3 ? 4 : cn), - rowsPerWI = ocl::Device::getDefault().isIntel() ? 4 : 1; ocl::Kernel k("setIdentity", ocl::core::set_identity_oclsrc, format("-D T=%s -D T1=%s -D cn=%d -D ST=%s -D kercn=%d -D rowsPerWI=%d", From 98d5731ad8342ec2ea3cc83ad81c1399d4a7a638 Mon Sep 17 00:00:00 2001 From: Adil Ibragimov Date: Thu, 7 Aug 2014 15:49:14 +0400 Subject: [PATCH 115/189] some formal changes (generally adding constness) --- modules/core/include/opencv2/core/cuda.hpp | 8 +++--- modules/core/include/opencv2/core/mat.hpp | 26 ++++++++--------- modules/core/include/opencv2/core/mat.inl.hpp | 20 ++++++------- modules/core/src/dxt.cpp | 12 ++++---- modules/core/src/lapack.cpp | 26 ++++++++--------- modules/core/src/matrix.cpp | 28 +++++++++---------- modules/core/src/stat.cpp | 8 +++--- modules/core/src/umatrix.cpp | 2 +- modules/features2d/src/brisk.cpp | 16 +++++------ modules/imgcodecs/src/grfmt_jpeg2000.cpp | 6 ++-- modules/imgproc/test/test_filter.cpp | 2 +- modules/imgproc/test/test_imgwarp.cpp | 2 +- modules/imgproc/test/test_imgwarp_strict.cpp | 2 +- 13 files changed, 79 insertions(+), 79 deletions(-) diff --git a/modules/core/include/opencv2/core/cuda.hpp b/modules/core/include/opencv2/core/cuda.hpp index bc6dd31438..fe7c0a8c48 100644 --- a/modules/core/include/opencv2/core/cuda.hpp +++ b/modules/core/include/opencv2/core/cuda.hpp @@ -261,8 +261,8 @@ public: int* refcount; //! helper fields used in locateROI and adjustROI - uchar* datastart; - uchar* dataend; + const uchar* datastart; + const uchar* dataend; //! allocator Allocator* allocator; @@ -349,8 +349,8 @@ public: uchar* data; int* refcount; - uchar* datastart; - uchar* dataend; + const uchar* datastart; + const uchar* dataend; AllocType alloc_type; }; diff --git a/modules/core/include/opencv2/core/mat.hpp b/modules/core/include/opencv2/core/mat.hpp index 945b450303..44501f6de9 100644 --- a/modules/core/include/opencv2/core/mat.hpp +++ b/modules/core/include/opencv2/core/mat.hpp @@ -395,7 +395,7 @@ struct CV_EXPORTS UMatData struct CV_EXPORTS UMatDataAutoLock { - UMatDataAutoLock(UMatData* u); + explicit UMatDataAutoLock(UMatData* u); ~UMatDataAutoLock(); UMatData* u; }; @@ -403,7 +403,7 @@ struct CV_EXPORTS UMatDataAutoLock struct CV_EXPORTS MatSize { - MatSize(int* _p); + explicit MatSize(int* _p); Size operator()() const; const int& operator[](int i) const; int& operator[](int i); @@ -417,7 +417,7 @@ struct CV_EXPORTS MatSize struct CV_EXPORTS MatStep { MatStep(); - MatStep(size_t s); + explicit MatStep(size_t s); const size_t& operator[](int i) const; size_t& operator[](int i); operator size_t() const; @@ -918,9 +918,9 @@ public: uchar* data; //! helper fields used in locateROI and adjustROI - uchar* datastart; - uchar* dataend; - uchar* datalimit; + const uchar* datastart; + const uchar* dataend; + const uchar* datalimit; //! custom allocator MatAllocator* allocator; @@ -1804,9 +1804,9 @@ public: //! copy operator MatConstIterator& operator = (const MatConstIterator& it); //! returns the current matrix element - uchar* operator *() const; + const uchar* operator *() const; //! returns the i-th matrix element, relative to the current - uchar* operator [](ptrdiff_t i) const; + const uchar* operator [](ptrdiff_t i) const; //! shifts the iterator forward by the specified number of elements MatConstIterator& operator += (ptrdiff_t ofs); @@ -1831,9 +1831,9 @@ public: const Mat* m; size_t elemSize; - uchar* ptr; - uchar* sliceStart; - uchar* sliceEnd; + const uchar* ptr; + const uchar* sliceStart; + const uchar* sliceEnd; }; @@ -1917,9 +1917,9 @@ public: //! constructor that sets the iterator to the specified element of the matrix MatIterator_(Mat_<_Tp>* _m, int _row, int _col=0); //! constructor that sets the iterator to the specified element of the matrix - MatIterator_(const Mat_<_Tp>* _m, Point _pt); + MatIterator_(Mat_<_Tp>* _m, Point _pt); //! constructor that sets the iterator to the specified element of the matrix - MatIterator_(const Mat_<_Tp>* _m, const int* _idx); + MatIterator_(Mat_<_Tp>* _m, const int* _idx); //! copy constructor MatIterator_(const MatIterator_& it); //! copy operator diff --git a/modules/core/include/opencv2/core/mat.inl.hpp b/modules/core/include/opencv2/core/mat.inl.hpp index dae0e137a8..e44ed2f08f 100644 --- a/modules/core/include/opencv2/core/mat.inl.hpp +++ b/modules/core/include/opencv2/core/mat.inl.hpp @@ -438,7 +438,7 @@ Mat::Mat(const std::vector<_Tp>& vec, bool copyData) if( !copyData ) { step[0] = step[1] = sizeof(_Tp); - data = datastart = (uchar*)&vec[0]; + datastart = data = (uchar*)&vec[0]; datalimit = dataend = datastart + rows * step[0]; } else @@ -453,7 +453,7 @@ Mat::Mat(const Vec<_Tp, n>& vec, bool copyData) if( !copyData ) { step[0] = step[1] = sizeof(_Tp); - data = datastart = (uchar*)vec.val; + datastart = data = (uchar*)vec.val; datalimit = dataend = datastart + rows * step[0]; } else @@ -470,7 +470,7 @@ Mat::Mat(const Matx<_Tp,m,n>& M, bool copyData) { step[0] = cols * sizeof(_Tp); step[1] = sizeof(_Tp); - data = datastart = (uchar*)M.val; + datastart = data = (uchar*)M.val; datalimit = dataend = datastart + rows * step[0]; } else @@ -485,7 +485,7 @@ Mat::Mat(const Point_<_Tp>& pt, bool copyData) if( !copyData ) { step[0] = step[1] = sizeof(_Tp); - data = datastart = (uchar*)&pt.x; + datastart = data = (uchar*)&pt.x; datalimit = dataend = datastart + rows * step[0]; } else @@ -642,7 +642,7 @@ inline void Mat::release() if( u && CV_XADD(&u->refcount, -1) == 1 ) deallocate(); u = NULL; - data = datastart = dataend = datalimit = 0; + datastart = dataend = datalimit = data = 0; size.p[0] = 0; } @@ -2148,7 +2148,7 @@ MatConstIterator& MatConstIterator::operator = (const MatConstIterator& it ) } inline -uchar* MatConstIterator::operator *() const +const uchar* MatConstIterator::operator *() const { return ptr; } @@ -2281,7 +2281,7 @@ MatConstIterator operator - (const MatConstIterator& a, ptrdiff_t ofs) inline -uchar* MatConstIterator::operator [](ptrdiff_t i) const +const uchar* MatConstIterator::operator [](ptrdiff_t i) const { return *(*this + i); } @@ -2453,12 +2453,12 @@ MatIterator_<_Tp>::MatIterator_(Mat_<_Tp>* _m, int _row, int _col) {} template inline -MatIterator_<_Tp>::MatIterator_(const Mat_<_Tp>* _m, Point _pt) +MatIterator_<_Tp>::MatIterator_(Mat_<_Tp>* _m, Point _pt) : MatConstIterator_<_Tp>(_m, _pt) {} template inline -MatIterator_<_Tp>::MatIterator_(const Mat_<_Tp>* _m, const int* _idx) +MatIterator_<_Tp>::MatIterator_(Mat_<_Tp>* _m, const int* _idx) : MatConstIterator_<_Tp>(_m, _idx) {} @@ -2592,7 +2592,7 @@ inline SparseMatConstIterator& SparseMatConstIterator::operator = (const SparseM template inline const _Tp& SparseMatConstIterator::value() const { - return *(_Tp*)ptr; + return *(const _Tp*)ptr; } inline diff --git a/modules/core/src/dxt.cpp b/modules/core/src/dxt.cpp index c1551acb41..c74d87dcba 100644 --- a/modules/core/src/dxt.cpp +++ b/modules/core/src/dxt.cpp @@ -2635,8 +2635,8 @@ void cv::dft( InputArray _src0, OutputArray _dst, int flags, int nonzero_rows ) for( i = 0; i < nonzero_rows; i++ ) { - uchar* sptr = src.data + i*src.step; - uchar* dptr0 = dst.data + i*dst.step; + const uchar* sptr = src.ptr(i); + uchar* dptr0 = dst.ptr(i); uchar* dptr = dptr0; if( tmp_buf ) @@ -2649,7 +2649,7 @@ void cv::dft( InputArray _src0, OutputArray _dst, int flags, int nonzero_rows ) for( ; i < count; i++ ) { - uchar* dptr0 = dst.data + i*dst.step; + uchar* dptr0 = dst.ptr(i); memset( dptr0, 0, dst_full_len ); } @@ -2661,7 +2661,7 @@ void cv::dft( InputArray _src0, OutputArray _dst, int flags, int nonzero_rows ) { int a = 0, b = count; uchar *buf0, *buf1, *dbuf0, *dbuf1; - uchar* sptr0 = src.data; + const uchar* sptr0 = src.data; uchar* dptr0 = dst.data; buf0 = ptr; ptr += len*complex_elem_size; @@ -2800,7 +2800,7 @@ void cv::dft( InputArray _src0, OutputArray _dst, int flags, int nonzero_rows ) int n = dst.cols; if( elem_size == (int)sizeof(float) ) { - float* p0 = (float*)dst.data; + float* p0 = dst.ptr(); size_t dstep = dst.step/sizeof(p0[0]); for( i = 0; i < len; i++ ) { @@ -2816,7 +2816,7 @@ void cv::dft( InputArray _src0, OutputArray _dst, int flags, int nonzero_rows ) } else { - double* p0 = (double*)dst.data; + double* p0 = dst.ptr(); size_t dstep = dst.step/sizeof(p0[0]); for( i = 0; i < len; i++ ) { diff --git a/modules/core/src/lapack.cpp b/modules/core/src/lapack.cpp index 8895a56593..45881c3d55 100644 --- a/modules/core/src/lapack.cpp +++ b/modules/core/src/lapack.cpp @@ -955,10 +955,10 @@ double cv::invert( InputArray _src, OutputArray _dst, int method ) SVD::compute(src, w, u, vt); SVD::backSubst(w, u, vt, Mat(), _dst); return type == CV_32F ? - (((float*)w.data)[0] >= FLT_EPSILON ? - ((float*)w.data)[n-1]/((float*)w.data)[0] : 0) : - (((double*)w.data)[0] >= DBL_EPSILON ? - ((double*)w.data)[n-1]/((double*)w.data)[0] : 0); + (w.ptr()[0] >= FLT_EPSILON ? + w.ptr()[n-1]/w.ptr()[0] : 0) : + (w.ptr()[0] >= DBL_EPSILON ? + w.ptr()[n-1]/w.ptr()[0] : 0); } CV_Assert( m == n ); @@ -975,10 +975,10 @@ double cv::invert( InputArray _src, OutputArray _dst, int method ) transpose(vt, u); SVD::backSubst(w, u, vt, Mat(), _dst); return type == CV_32F ? - (((float*)w.data)[0] >= FLT_EPSILON ? - ((float*)w.data)[n-1]/((float*)w.data)[0] : 0) : - (((double*)w.data)[0] >= DBL_EPSILON ? - ((double*)w.data)[n-1]/((double*)w.data)[0] : 0); + (w.ptr()[0] >= FLT_EPSILON ? + w.ptr()[n-1]/w.ptr()[0] : 0) : + (w.ptr()[0] >= DBL_EPSILON ? + w.ptr()[n-1]/w.ptr()[0] : 0); } CV_Assert( method == DECOMP_LU || method == DECOMP_CHOLESKY ); @@ -988,7 +988,7 @@ double cv::invert( InputArray _src, OutputArray _dst, int method ) if( n <= 3 ) { - uchar* srcdata = src.data; + const uchar* srcdata = src.data; uchar* dstdata = dst.data; size_t srcstep = src.step; size_t dststep = dst.step; @@ -1212,8 +1212,8 @@ bool cv::solve( InputArray _src, InputArray _src2arg, OutputArray _dst, int meth #define bf(y) ((float*)(bdata + y*src2step))[0] #define bd(y) ((double*)(bdata + y*src2step))[0] - uchar* srcdata = src.data; - uchar* bdata = _src2.data; + const uchar* srcdata = src.data; + const uchar* bdata = _src2.data; uchar* dstdata = dst.data; size_t srcstep = src.step; size_t src2step = _src2.step; @@ -1709,7 +1709,7 @@ cvEigenVV( CvArr* srcarr, CvArr* evectsarr, CvArr* evalsarr, double, eigen(src, evals, evects); if( evects0.data != evects.data ) { - uchar* p = evects0.data; + const uchar* p = evects0.data; evects.convertTo(evects0, evects0.type()); CV_Assert( p == evects0.data ); } @@ -1718,7 +1718,7 @@ cvEigenVV( CvArr* srcarr, CvArr* evectsarr, CvArr* evalsarr, double, eigen(src, evals); if( evals0.data != evals.data ) { - uchar* p = evals0.data; + const uchar* p = evals0.data; if( evals0.size() == evals.size() ) evals.convertTo(evals0, evals0.type()); else if( evals0.type() == evals.type() ) diff --git a/modules/core/src/matrix.cpp b/modules/core/src/matrix.cpp index 46c8eeac86..a602d7e490 100644 --- a/modules/core/src/matrix.cpp +++ b/modules/core/src/matrix.cpp @@ -346,7 +346,7 @@ static void finalizeHdr(Mat& m) if( d > 2 ) m.rows = m.cols = -1; if(m.u) - m.data = m.datastart = m.u->data; + m.datastart = m.data = m.u->data; if( m.data ) { m.datalimit = m.datastart + m.size[0]*m.step[0]; @@ -510,7 +510,7 @@ Mat::Mat(int _dims, const int* _sizes, int _type, void* _data, const size_t* _st datalimit(0), allocator(0), u(0), size(&rows) { flags |= CV_MAT_TYPE(_type); - data = datastart = (uchar*)_data; + datastart = data = (uchar*)_data; setSize(*this, _dims, _sizes, _steps, true); finalizeHdr(*this); } @@ -549,7 +549,7 @@ static Mat cvMatNDToMat(const CvMatND* m, bool copyData) if( !m ) return thiz; - thiz.data = thiz.datastart = m->data.ptr; + thiz.datastart = thiz.data = m->data.ptr; thiz.flags |= CV_MAT_TYPE(m->type); int _sizes[CV_MAX_DIM]; size_t _steps[CV_MAX_DIM]; @@ -587,7 +587,7 @@ static Mat cvMatToMat(const CvMat* m, bool copyData) thiz.dims = 2; thiz.rows = m->rows; thiz.cols = m->cols; - thiz.data = thiz.datastart = m->data.ptr; + thiz.datastart = thiz.data = m->data.ptr; size_t esz = CV_ELEM_SIZE(m->type), minstep = thiz.cols*esz, _step = m->step; if( _step == 0 ) _step = minstep; @@ -597,7 +597,7 @@ static Mat cvMatToMat(const CvMat* m, bool copyData) } else { - thiz.data = thiz.datastart = thiz.dataend = 0; + thiz.datastart = thiz.dataend = thiz.data = 0; Mat(m->rows, m->cols, m->type, m->data.ptr, m->step).copyTo(thiz); } @@ -636,7 +636,7 @@ static Mat iplImageToMat(const IplImage* img, bool copyData) m.rows = img->roi->height; m.cols = img->roi->width; esz = CV_ELEM_SIZE(m.flags); - m.data = m.datastart = (uchar*)img->imageData + + m.datastart = m.data = (uchar*)img->imageData + (selectedPlane ? (img->roi->coi - 1)*m.step*img->height : 0) + img->roi->yOffset*m.step[0] + img->roi->xOffset*esz; } @@ -5529,14 +5529,14 @@ double norm( const SparseMat& src, int normType ) { if( normType == NORM_INF ) for( i = 0; i < N; i++, ++it ) - result = std::max(result, std::abs((double)*(const float*)it.ptr)); + result = std::max(result, std::abs((double)it.value())); else if( normType == NORM_L1 ) for( i = 0; i < N; i++, ++it ) - result += std::abs(*(const float*)it.ptr); + result += std::abs(it.value()); else for( i = 0; i < N; i++, ++it ) { - double v = *(const float*)it.ptr; + double v = it.value(); result += v*v; } } @@ -5544,14 +5544,14 @@ double norm( const SparseMat& src, int normType ) { if( normType == NORM_INF ) for( i = 0; i < N; i++, ++it ) - result = std::max(result, std::abs(*(const double*)it.ptr)); + result = std::max(result, std::abs(it.value())); else if( normType == NORM_L1 ) for( i = 0; i < N; i++, ++it ) - result += std::abs(*(const double*)it.ptr); + result += std::abs(it.value()); else for( i = 0; i < N; i++, ++it ) { - double v = *(const double*)it.ptr; + double v = it.value(); result += v*v; } } @@ -5575,7 +5575,7 @@ void minMaxLoc( const SparseMat& src, double* _minval, double* _maxval, int* _mi float minval = FLT_MAX, maxval = -FLT_MAX; for( i = 0; i < N; i++, ++it ) { - float v = *(const float*)it.ptr; + float v = it.value(); if( v < minval ) { minval = v; @@ -5597,7 +5597,7 @@ void minMaxLoc( const SparseMat& src, double* _minval, double* _maxval, int* _mi double minval = DBL_MAX, maxval = -DBL_MAX; for( i = 0; i < N; i++, ++it ) { - double v = *(const double*)it.ptr; + double v = it.value(); if( v < minval ) { minval = v; diff --git a/modules/core/src/stat.cpp b/modules/core/src/stat.cpp index 7abbde543e..20e8aa5a79 100644 --- a/modules/core/src/stat.cpp +++ b/modules/core/src/stat.cpp @@ -782,7 +782,7 @@ cv::Scalar cv::mean( InputArray _src, InputArray _mask ) int type = src.type(); if( !mask.empty() ) { - typedef IppStatus (CV_STDCALL* ippiMaskMeanFuncC1)(const void *, int, void *, int, IppiSize, Ipp64f *); + typedef IppStatus (CV_STDCALL* ippiMaskMeanFuncC1)(const void *, int, const void *, int, IppiSize, Ipp64f *); ippiMaskMeanFuncC1 ippFuncC1 = type == CV_8UC1 ? (ippiMaskMeanFuncC1)ippiMean_8u_C1MR : type == CV_16UC1 ? (ippiMaskMeanFuncC1)ippiMean_16u_C1MR : @@ -795,7 +795,7 @@ cv::Scalar cv::mean( InputArray _src, InputArray _mask ) return Scalar(res); setIppErrorStatus(); } - typedef IppStatus (CV_STDCALL* ippiMaskMeanFuncC3)(const void *, int, void *, int, IppiSize, int, Ipp64f *); + typedef IppStatus (CV_STDCALL* ippiMaskMeanFuncC3)(const void *, int, const void *, int, IppiSize, int, Ipp64f *); ippiMaskMeanFuncC3 ippFuncC3 = type == CV_8UC3 ? (ippiMaskMeanFuncC3)ippiMean_8u_C3CMR : type == CV_16UC3 ? (ippiMaskMeanFuncC3)ippiMean_16u_C3CMR : @@ -1071,7 +1071,7 @@ void cv::meanStdDev( InputArray _src, OutputArray _mean, OutputArray _sdv, Input int type = src.type(); if( !mask.empty() ) { - typedef IppStatus (CV_STDCALL* ippiMaskMeanStdDevFuncC1)(const void *, int, void *, int, IppiSize, Ipp64f *, Ipp64f *); + typedef IppStatus (CV_STDCALL* ippiMaskMeanStdDevFuncC1)(const void *, int, const void *, int, IppiSize, Ipp64f *, Ipp64f *); ippiMaskMeanStdDevFuncC1 ippFuncC1 = type == CV_8UC1 ? (ippiMaskMeanStdDevFuncC1)ippiMean_StdDev_8u_C1MR : type == CV_16UC1 ? (ippiMaskMeanStdDevFuncC1)ippiMean_StdDev_16u_C1MR : @@ -1083,7 +1083,7 @@ void cv::meanStdDev( InputArray _src, OutputArray _mean, OutputArray _sdv, Input return; setIppErrorStatus(); } - typedef IppStatus (CV_STDCALL* ippiMaskMeanStdDevFuncC3)(const void *, int, void *, int, IppiSize, int, Ipp64f *, Ipp64f *); + typedef IppStatus (CV_STDCALL* ippiMaskMeanStdDevFuncC3)(const void *, int, const void *, int, IppiSize, int, Ipp64f *, Ipp64f *); ippiMaskMeanStdDevFuncC3 ippFuncC3 = type == CV_8UC3 ? (ippiMaskMeanStdDevFuncC3)ippiMean_StdDev_8u_C3CMR : type == CV_16UC3 ? (ippiMaskMeanStdDevFuncC3)ippiMean_StdDev_16u_C3CMR : diff --git a/modules/core/src/umatrix.cpp b/modules/core/src/umatrix.cpp index 494f3e3c06..14e90603b8 100644 --- a/modules/core/src/umatrix.cpp +++ b/modules/core/src/umatrix.cpp @@ -582,7 +582,7 @@ Mat UMat::getMat(int accessFlags) const hdr.flags = flags; hdr.u = u; hdr.datastart = u->data; - hdr.data = hdr.datastart + offset; + hdr.data = u->data + offset; hdr.datalimit = hdr.dataend = u->data + u->size; CV_XADD(&hdr.u->refcount, 1); return hdr; diff --git a/modules/features2d/src/brisk.cpp b/modules/features2d/src/brisk.cpp index f4690eb170..213dd60413 100644 --- a/modules/features2d/src/brisk.cpp +++ b/modules/features2d/src/brisk.cpp @@ -427,7 +427,7 @@ BRISK::smoothedIntensity(const cv::Mat& image, const cv::Mat& integral, const fl if (dx + dy > 2) { // now the calculation: - uchar* ptr = image.data + x_left + imagecols * y_top; + const uchar* ptr = image.data + x_left + imagecols * y_top; // first the corners: ret_val = A * int(*ptr); ptr += dx + 1; @@ -475,7 +475,7 @@ BRISK::smoothedIntensity(const cv::Mat& image, const cv::Mat& integral, const fl } // now the calculation: - uchar* ptr = image.data + x_left + imagecols * y_top; + const uchar* ptr = image.data + x_left + imagecols * y_top; // first row: ret_val = A * int(*ptr); ptr++; @@ -487,7 +487,7 @@ BRISK::smoothedIntensity(const cv::Mat& image, const cv::Mat& integral, const fl ret_val += B * int(*ptr); // middle ones: ptr += imagecols - dx - 1; - uchar* end_j = ptr + dy * imagecols; + const uchar* end_j = ptr + dy * imagecols; for (; ptr < end_j; ptr += imagecols - dx - 1) { ret_val += r_x_1_i * int(*ptr); @@ -607,7 +607,7 @@ BRISK::computeDescriptorsAndOrOrientation(InputArray _image, InputArray _mask, s int t2; // the feature orientation - uchar* ptr = descriptors.data; + const uchar* ptr = descriptors.data; for (size_t k = 0; k < ksize; k++) { cv::KeyPoint& kp = keypoints[k]; @@ -1070,7 +1070,7 @@ BriskScaleSpace::isMax2D(const int layer, const int x_layer, const int y_layer) { const cv::Mat& scores = pyramid_[layer].scores(); const int scorescols = scores.cols; - uchar* data = scores.data + y_layer * scorescols + x_layer; + const uchar* data = scores.data + y_layer * scorescols + x_layer; // decision tree: const uchar center = (*data); data--; @@ -2140,7 +2140,7 @@ BriskLayer::value(const cv::Mat& mat, float xf, float yf, float scale_in) const const int r_y = (int)((yf - y) * 1024); const int r_x_1 = (1024 - r_x); const int r_y_1 = (1024 - r_y); - uchar* ptr = image.data + x + y * imagecols; + const uchar* ptr = image.data + x + y * imagecols; // just interpolate: ret_val = (r_x_1 * r_y_1 * int(*ptr)); ptr++; @@ -2186,7 +2186,7 @@ BriskLayer::value(const cv::Mat& mat, float xf, float yf, float scale_in) const const int r_y1_i = (int)(r_y1 * scaling); // now the calculation: - uchar* ptr = image.data + x_left + imagecols * y_top; + const uchar* ptr = image.data + x_left + imagecols * y_top; // first row: ret_val = A * int(*ptr); ptr++; @@ -2198,7 +2198,7 @@ BriskLayer::value(const cv::Mat& mat, float xf, float yf, float scale_in) const ret_val += B * int(*ptr); // middle ones: ptr += imagecols - dx - 1; - uchar* end_j = ptr + dy * imagecols; + const uchar* end_j = ptr + dy * imagecols; for (; ptr < end_j; ptr += imagecols - dx - 1) { ret_val += r_x_1_i * int(*ptr); diff --git a/modules/imgcodecs/src/grfmt_jpeg2000.cpp b/modules/imgcodecs/src/grfmt_jpeg2000.cpp index d711846ce8..83fd55a594 100644 --- a/modules/imgcodecs/src/grfmt_jpeg2000.cpp +++ b/modules/imgcodecs/src/grfmt_jpeg2000.cpp @@ -154,7 +154,7 @@ bool Jpeg2KDecoder::readData( Mat& img ) { bool result = false; int color = img.channels() > 1; - uchar* data = img.data; + uchar* data = img.ptr(); int step = (int)img.step; jas_stream_t* stream = (jas_stream_t*)m_stream; jas_image_t* image = (jas_image_t*)m_image; @@ -478,7 +478,7 @@ bool Jpeg2KEncoder::writeComponent8u( void *__img, const Mat& _img ) for( int y = 0; y < h; y++ ) { - uchar* data = _img.data + _img.step*y; + const uchar* data = _img.ptr(y); for( int i = 0; i < ncmpts; i++ ) { for( int x = 0; x < w; x++) @@ -502,7 +502,7 @@ bool Jpeg2KEncoder::writeComponent16u( void *__img, const Mat& _img ) for( int y = 0; y < h; y++ ) { - uchar* data = _img.data + _img.step*y; + const uchar* data = _img.ptr(y); for( int i = 0; i < ncmpts; i++ ) { for( int x = 0; x < w; x++) diff --git a/modules/imgproc/test/test_filter.cpp b/modules/imgproc/test/test_filter.cpp index a0927b0f39..6b8cb8c472 100644 --- a/modules/imgproc/test/test_filter.cpp +++ b/modules/imgproc/test/test_filter.cpp @@ -228,7 +228,7 @@ int CV_MorphologyBaseTest::prepare_test_case( int test_case_idx ) if( shape == CV_SHAPE_CUSTOM ) { eldata.resize(aperture_size.width*aperture_size.height); - uchar* src = test_mat[INPUT][1].data; + const uchar* src = test_mat[INPUT][1].data; int srcstep = (int)test_mat[INPUT][1].step; int i, j, nonzero = 0; diff --git a/modules/imgproc/test/test_imgwarp.cpp b/modules/imgproc/test/test_imgwarp.cpp index b0897483a2..e08020dbed 100644 --- a/modules/imgproc/test/test_imgwarp.cpp +++ b/modules/imgproc/test/test_imgwarp.cpp @@ -344,7 +344,7 @@ static void test_remap( const Mat& src, Mat& dst, const Mat& mapx, const Mat& ma int x, y, k; int drows = dst.rows, dcols = dst.cols; int srows = src.rows, scols = src.cols; - uchar* sptr0 = src.data; + const uchar* sptr0 = src.data; int depth = src.depth(), cn = src.channels(); int elem_size = (int)src.elemSize(); int step = (int)(src.step / CV_ELEM_SIZE(depth)); diff --git a/modules/imgproc/test/test_imgwarp_strict.cpp b/modules/imgproc/test/test_imgwarp_strict.cpp index 034d89014b..02016fb3da 100644 --- a/modules/imgproc/test/test_imgwarp_strict.cpp +++ b/modules/imgproc/test/test_imgwarp_strict.cpp @@ -532,7 +532,7 @@ void CV_Resize_Test::resize_1d(const Mat& _src, Mat& _dst, int dy, const dim& _d ofs = 3, ksize = 8; Mat _extended_src_row(1, _src.cols + ksize * 2, _src.type()); - uchar* srow = _src.data + dy * _src.step; + const uchar* srow = _src.ptr(dy); memcpy(_extended_src_row.data + elemsize * ksize, srow, _src.step); for (int k = 0; k < ksize; ++k) { From 6b05ca589d689e13c431f60d98e6a4abd5d6c7ff Mon Sep 17 00:00:00 2001 From: Adil Ibragimov Date: Thu, 7 Aug 2014 17:06:22 +0400 Subject: [PATCH 116/189] fixing Mac build --- modules/core/include/opencv2/core/mat.inl.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/core/include/opencv2/core/mat.inl.hpp b/modules/core/include/opencv2/core/mat.inl.hpp index e44ed2f08f..6923146f94 100644 --- a/modules/core/include/opencv2/core/mat.inl.hpp +++ b/modules/core/include/opencv2/core/mat.inl.hpp @@ -504,7 +504,7 @@ Mat::Mat(const Point3_<_Tp>& pt, bool copyData) if( !copyData ) { step[0] = step[1] = sizeof(_Tp); - data = datastart = (uchar*)&pt.x; + datastart = data = (uchar*)&pt.x; datalimit = dataend = datastart + rows * step[0]; } else @@ -1044,7 +1044,7 @@ void Mat::push_back(const _Tp& elem) } CV_Assert(DataType<_Tp>::type == type() && cols == 1 /* && dims == 2 (cols == 1 implies dims == 2) */); - uchar* tmp = dataend + step[0]; + const uchar* tmp = dataend + step[0]; if( !isSubmatrix() && isContinuous() && tmp <= datalimit ) { *(_Tp*)(data + (size.p[0]++) * step.p[0]) = elem; From 8dab2ffce74b671d7c9bad92888da82e4275fd39 Mon Sep 17 00:00:00 2001 From: Adil Ibragimov Date: Thu, 7 Aug 2014 17:43:32 +0400 Subject: [PATCH 117/189] fixing error, wrong template method param. --- modules/core/src/matrix.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/core/src/matrix.cpp b/modules/core/src/matrix.cpp index a602d7e490..fb0f0462ed 100644 --- a/modules/core/src/matrix.cpp +++ b/modules/core/src/matrix.cpp @@ -5597,7 +5597,7 @@ void minMaxLoc( const SparseMat& src, double* _minval, double* _maxval, int* _mi double minval = DBL_MAX, maxval = -DBL_MAX; for( i = 0; i < N; i++, ++it ) { - double v = it.value(); + double v = it.value(); if( v < minval ) { minval = v; From 6ad4521b781184df5268dd9337fb6deafd052bca Mon Sep 17 00:00:00 2001 From: Alexander Karsakov Date: Fri, 8 Aug 2014 13:11:35 +0400 Subject: [PATCH 118/189] Fixed typos --- modules/core/src/opencl/fft.cl | 4 ++-- modules/core/test/ocl/test_dft.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/core/src/opencl/fft.cl b/modules/core/src/opencl/fft.cl index 1268c4d6e4..b56f5c1dc2 100644 --- a/modules/core/src/opencl/fft.cl +++ b/modules/core/src/opencl/fft.cl @@ -424,7 +424,7 @@ void fft_radix3_B3(__local float2* smem, __global const float2* twiddles, const const int x3 = x2 + t/3; float2 a0, a1, a2, a3, a4, a5, a6, a7, a8; - if (x1 < t/2) + if (x1 < t/3) { a0 = smem[x1]; a1 = smem[x1+t]; a2 = smem[x1+2*t]; a3 = smem[x2]; a4 = smem[x2+t]; a5 = smem[x2+2*t]; @@ -433,7 +433,7 @@ void fft_radix3_B3(__local float2* smem, __global const float2* twiddles, const barrier(CLK_LOCAL_MEM_FENCE); - if (x1 < t/2) + if (x1 < t/3) { butterfly3(a0, a1, a2, smem, twiddles, x1, block_size); butterfly3(a3, a4, a5, smem, twiddles, x2, block_size); diff --git a/modules/core/test/ocl/test_dft.cpp b/modules/core/test/ocl/test_dft.cpp index db280f19cf..afad19613f 100644 --- a/modules/core/test/ocl/test_dft.cpp +++ b/modules/core/test/ocl/test_dft.cpp @@ -108,7 +108,7 @@ OCL_TEST_P(Dft, Mat) { generateTestData(); - int nonzero_rows = hint ? src.cols - randomInt(1, src.rows-1) : 0; + int nonzero_rows = hint ? src.rows - randomInt(1, src.rows-1) : 0; OCL_OFF(cv::dft(src, dst, dft_flags, nonzero_rows)); OCL_ON(cv::dft(usrc, udst, dft_flags, nonzero_rows)); @@ -175,7 +175,7 @@ OCL_TEST_P(MulSpectrums, Mat) OCL_INSTANTIATE_TEST_CASE_P(OCL_ImgProc, MulSpectrums, testing::Combine(Bool(), Bool())); -OCL_INSTANTIATE_TEST_CASE_P(Core, Dft, Combine(Values(cv::Size(10, 10), cv::Size(36, 36), cv::Size(512, 1), cv::Size(1280, 768)), +OCL_INSTANTIATE_TEST_CASE_P(Core, Dft, Combine(Values(cv::Size(45, 72), cv::Size(36, 36), cv::Size(512, 1), cv::Size(1280, 768)), Values((OCL_FFT_TYPE) R2C, (OCL_FFT_TYPE) C2C, (OCL_FFT_TYPE) R2R, (OCL_FFT_TYPE) C2R), Bool(), // DFT_INVERSE Bool(), // DFT_ROWS From b5f251c8159ccff82f5342c74eb1c313fa98c024 Mon Sep 17 00:00:00 2001 From: Elena Gvozdeva Date: Thu, 7 Aug 2014 16:00:25 +0400 Subject: [PATCH 119/189] fixed test ocl_MatchTemplate for sparse matrix --- modules/imgproc/src/templmatch.cpp | 5 ++-- .../imgproc/test/ocl/test_match_template.cpp | 21 +++++++------- modules/ts/include/opencv2/ts/ocl_test.hpp | 29 +++++++++++++++++++ 3 files changed, 43 insertions(+), 12 deletions(-) diff --git a/modules/imgproc/src/templmatch.cpp b/modules/imgproc/src/templmatch.cpp index df2e19cc47..33c1e15bd6 100644 --- a/modules/imgproc/src/templmatch.cpp +++ b/modules/imgproc/src/templmatch.cpp @@ -454,14 +454,15 @@ static bool matchTemplate_CCOEFF(InputArray _image, InputArray _templ, OutputArr if (cn==1) { - float templ_sum = static_cast(sum(_templ)[0]) / tsize.area(); + Scalar templMean = mean(templ); + float templ_sum = (float)templMean[0]; k.args(ocl::KernelArg::ReadOnlyNoSize(image_sums), ocl::KernelArg::ReadWrite(result), templ.rows, templ.cols, templ_sum); } else { Vec4f templ_sum = Vec4f::all(0); - templ_sum = sum(templ) / tsize.area(); + templ_sum = (Vec4f)mean(templ); k.args(ocl::KernelArg::ReadOnlyNoSize(image_sums), ocl::KernelArg::ReadWrite(result), templ.rows, templ.cols, templ_sum); } diff --git a/modules/imgproc/test/ocl/test_match_template.cpp b/modules/imgproc/test/ocl/test_match_template.cpp index 1d1352adfd..6cf0fe4f30 100644 --- a/modules/imgproc/test/ocl/test_match_template.cpp +++ b/modules/imgproc/test/ocl/test_match_template.cpp @@ -97,9 +97,17 @@ PARAM_TEST_CASE(MatchTemplate, MatDepth, Channels, MatchTemplType, bool) UMAT_UPLOAD_OUTPUT_PARAMETER(result); } - void Near(double threshold = 0.0) + void Near() { - OCL_EXPECT_MATS_NEAR(result, threshold); + bool isNormed = + method == TM_CCORR_NORMED || + method == TM_SQDIFF_NORMED || + method == TM_CCOEFF_NORMED; + + if (isNormed) + OCL_EXPECT_MATS_NEAR(result, 3e-2); + else + OCL_EXPECT_MATS_NEAR_RELATIVE_SPARSE(result, 1.5e-2); } }; @@ -112,14 +120,7 @@ OCL_TEST_P(MatchTemplate, Mat) OCL_OFF(cv::matchTemplate(image_roi, templ_roi, result_roi, method)); OCL_ON(cv::matchTemplate(uimage_roi, utempl_roi, uresult_roi, method)); - bool isNormed = - method == TM_CCORR_NORMED || - method == TM_SQDIFF_NORMED || - method == TM_CCOEFF_NORMED; - - double eps = isNormed ? 3e-2 : 255.0 * 255.0 * templ.total() * 2e-5; - - Near(eps); + Near(); } } diff --git a/modules/ts/include/opencv2/ts/ocl_test.hpp b/modules/ts/include/opencv2/ts/ocl_test.hpp index 3703b7b9f7..559f4aa32b 100644 --- a/modules/ts/include/opencv2/ts/ocl_test.hpp +++ b/modules/ts/include/opencv2/ts/ocl_test.hpp @@ -159,6 +159,25 @@ do \ << "Size: " << name ## _roi.size() << std::endl; \ } while ((void)0, 0) +//for sparse matrix +#define OCL_EXPECT_MATS_NEAR_RELATIVE_SPARSE(name, eps) \ +do \ +{ \ + ASSERT_EQ(name ## _roi.type(), u ## name ## _roi.type()); \ + ASSERT_EQ(name ## _roi.size(), u ## name ## _roi.size()); \ + EXPECT_LE(TestUtils::checkNormRelativeSparse(name ## _roi, u ## name ## _roi), eps) \ + << "Size: " << name ## _roi.size() << std::endl; \ + Point _offset; \ + Size _wholeSize; \ + name ## _roi.locateROI(_wholeSize, _offset); \ + Mat _mask(name.size(), CV_8UC1, Scalar::all(255)); \ + _mask(Rect(_offset, name ## _roi.size())).setTo(Scalar::all(0)); \ + ASSERT_EQ(name.type(), u ## name.type()); \ + ASSERT_EQ(name.size(), u ## name.size()); \ + EXPECT_LE(TestUtils::checkNormRelativeSparse(name, u ## name, _mask), eps) \ + << "Size: " << name ## _roi.size() << std::endl; \ +} while ((void)0, 0) + #define EXPECT_MAT_SIMILAR(mat1, mat2, eps) \ do \ { \ @@ -274,6 +293,16 @@ struct CV_EXPORTS TestUtils std::max((double)std::numeric_limits::epsilon(), (double)std::max(cvtest::norm(m1.getMat(), cv::NORM_INF), cvtest::norm(m2.getMat(), cv::NORM_INF))); } + + static inline double checkNormRelativeSparse(InputArray m1, InputArray m2, InputArray mask = noArray()) + { + double norm_inf = cvtest::norm(m1.getMat(), m2.getMat(), cv::NORM_INF, mask); + double norm_rel = norm_inf / + std::max((double)std::numeric_limits::epsilon(), + (double)std::max(cvtest::norm(m1.getMat(), cv::NORM_INF), cvtest::norm(m2.getMat(), cv::NORM_INF))); + return std::min(norm_inf, norm_rel); + } + }; #define TEST_DECLARE_INPUT_PARAMETER(name) Mat name, name ## _roi; UMat u ## name, u ## name ## _roi From 03435c0d74a3a0e1937c5afe7def304901d00e4d Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Fri, 8 Aug 2014 15:57:54 +0400 Subject: [PATCH 120/189] fix IOS framework --- modules/videoio/CMakeLists.txt | 5 ++++- modules/world/CMakeLists.txt | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/modules/videoio/CMakeLists.txt b/modules/videoio/CMakeLists.txt index f92f5ea689..94907575d3 100644 --- a/modules/videoio/CMakeLists.txt +++ b/modules/videoio/CMakeLists.txt @@ -27,7 +27,10 @@ set(videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_ffmpeg.cpp ) -file(GLOB videoio_ext_hdrs "include/opencv2/*.hpp" "include/opencv2/${name}/*.hpp" "include/opencv2/${name}/*.h") +file(GLOB videoio_ext_hdrs + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/*.hpp" + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.hpp" + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.h") if(WIN32 AND NOT ARM) list(APPEND videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_cmu.cpp) diff --git a/modules/world/CMakeLists.txt b/modules/world/CMakeLists.txt index 4e05188e03..d2f5cb1682 100644 --- a/modules/world/CMakeLists.txt +++ b/modules/world/CMakeLists.txt @@ -53,3 +53,26 @@ endif() if(BUILD_opencv_highgui) ocv_highgui_configure_target() endif() + +if(IOS OR APPLE) + set(merge_libs "") + macro(ios_include_3party_libs) + foreach(l ${ARGN}) + add_dependencies(${the_module} ${l}) + list(APPEND merge_libs "$") + endforeach() + endmacro() + + if(WITH_PNG) + ios_include_3party_libs(zlib libpng) + endif() + + if(WITH_JPEG) + ios_include_3party_libs(libjpeg) + endif() + + add_custom_command(TARGET ${the_module} POST_BUILD + COMMAND /usr/bin/libtool -static -o ${CMAKE_CURRENT_BINARY_DIR}/${the_module}_fat.a $ ${merge_libs} + COMMAND mv ${CMAKE_CURRENT_BINARY_DIR}/${the_module}_fat.a $ + ) +endif() From b7899c3d5c80b7e82fce5cfbbb0573383dd04179 Mon Sep 17 00:00:00 2001 From: Elena Gvozdeva Date: Fri, 8 Aug 2014 11:09:10 +0400 Subject: [PATCH 121/189] small fix for ocl_resize --- modules/imgproc/src/imgwarp.cpp | 5 +++-- modules/imgproc/test/ocl/test_warp.cpp | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/imgproc/src/imgwarp.cpp b/modules/imgproc/src/imgwarp.cpp index 907fa445de..b2619883e0 100644 --- a/modules/imgproc/src/imgwarp.cpp +++ b/modules/imgproc/src/imgwarp.cpp @@ -2074,7 +2074,8 @@ static bool ocl_resize( InputArray _src, OutputArray _dst, Size dsize, // datatypes because the observed error is low. bool useSampler = (interpolation == INTER_LINEAR && ocl::Device::getDefault().imageSupport() && ocl::Image2D::canCreateAlias(src) && depth <= 4 && - ocl::Image2D::isFormatSupported(depth, cn, true)); + ocl::Image2D::isFormatSupported(depth, cn, true) && + src.offset==0); if (useSampler) { int wdepth = std::max(depth, CV_32S); @@ -2380,7 +2381,7 @@ void cv::resize( InputArray _src, OutputArray _dst, Size dsize, inv_scale_y = (double)dsize.height/ssize.height; } - CV_OCL_RUN(_src.dims() <= 2 && _dst.isUMat(), + CV_OCL_RUN(_src.dims() <= 2 && _dst.isUMat() && _src.cols() > 10 && _src.rows() > 10, ocl_resize(_src, _dst, dsize, inv_scale_x, inv_scale_y, interpolation)) Mat src = _src.getMat(); diff --git a/modules/imgproc/test/ocl/test_warp.cpp b/modules/imgproc/test/ocl/test_warp.cpp index 0bcc330c70..3067abaf66 100644 --- a/modules/imgproc/test/ocl/test_warp.cpp +++ b/modules/imgproc/test/ocl/test_warp.cpp @@ -182,7 +182,7 @@ PARAM_TEST_CASE(Resize, MatType, double, double, Interpolation, bool, int) { CV_Assert(fx > 0 && fy > 0); - Size srcRoiSize = randomSize(1, MAX_VALUE), dstRoiSize; + Size srcRoiSize = randomSize(10, MAX_VALUE), dstRoiSize; // Make sure the width is a multiple of the requested value, and no more srcRoiSize.width += widthMultiple - 1 - (srcRoiSize.width - 1) % widthMultiple; dstRoiSize.width = cvRound(srcRoiSize.width * fx); @@ -215,7 +215,7 @@ OCL_TEST_P(Resize, Mat) for (int j = 0; j < test_loop_times; j++) { int depth = CV_MAT_DEPTH(type); - double eps = depth <= CV_32S ? 1 : 1e-2; + double eps = depth <= CV_32S ? 1 : 5e-2; random_roi(); From 4c54b287e4b14d4c79cb1f64c90ebf095c982e38 Mon Sep 17 00:00:00 2001 From: Maksim Shabunin Date: Fri, 8 Aug 2014 16:55:10 +0400 Subject: [PATCH 122/189] Revert "Fix local variable shadowing" This reverts commit 2f8b5731dabb3162ca62a0e1901bb13f0ed83e4c. --- modules/flann/include/opencv2/flann/lsh_index.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/flann/include/opencv2/flann/lsh_index.h b/modules/flann/include/opencv2/flann/lsh_index.h index 23988d436a..2530a0143a 100644 --- a/modules/flann/include/opencv2/flann/lsh_index.h +++ b/modules/flann/include/opencv2/flann/lsh_index.h @@ -118,8 +118,8 @@ public: if( (indices.size() == feature_size_ * CHAR_BIT) || (indices.size() < key_size_) ) { indices.resize( feature_size_ * CHAR_BIT ); - for (size_t j = 0; j < feature_size_ * CHAR_BIT; ++j) - indices[j] = j; + for (size_t i = 0; i < feature_size_ * CHAR_BIT; ++i) + indices[i] = i; std::random_shuffle(indices.begin(), indices.end()); } From 0be18aca81aa154f4020bf0296d93765463fb39c Mon Sep 17 00:00:00 2001 From: Maksim Shabunin Date: Fri, 8 Aug 2014 16:58:35 +0400 Subject: [PATCH 123/189] Revert "Allows to choose orthogonal sub-vectors for LSH without using a static table among LshTable instances" This reverts commit e63d7de87c3565555e4a73220a465ed39488160d. --- .../flann/include/opencv2/flann/lsh_index.h | 14 +-------- .../flann/include/opencv2/flann/lsh_table.h | 30 ++++++++++++++----- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/modules/flann/include/opencv2/flann/lsh_index.h b/modules/flann/include/opencv2/flann/lsh_index.h index 2530a0143a..4d4670ea50 100644 --- a/modules/flann/include/opencv2/flann/lsh_index.h +++ b/modules/flann/include/opencv2/flann/lsh_index.h @@ -109,22 +109,10 @@ public: */ void buildIndex() { - std::vector indices(feature_size_ * CHAR_BIT); - tables_.resize(table_number_); for (unsigned int i = 0; i < table_number_; ++i) { - - //re-initialize the random indices table that the LshTable will use to pick its sub-dimensions - if( (indices.size() == feature_size_ * CHAR_BIT) || (indices.size() < key_size_) ) - { - indices.resize( feature_size_ * CHAR_BIT ); - for (size_t i = 0; i < feature_size_ * CHAR_BIT; ++i) - indices[i] = i; - std::random_shuffle(indices.begin(), indices.end()); - } - lsh::LshTable& table = tables_[i]; - table = lsh::LshTable(feature_size_, key_size_, indices); + table = lsh::LshTable(feature_size_, key_size_); // Add the features to the table table.add(dataset_); diff --git a/modules/flann/include/opencv2/flann/lsh_table.h b/modules/flann/include/opencv2/flann/lsh_table.h index 956e14ef15..5da0e3f369 100644 --- a/modules/flann/include/opencv2/flann/lsh_table.h +++ b/modules/flann/include/opencv2/flann/lsh_table.h @@ -153,7 +153,7 @@ public: * @param feature_size is the size of the feature (considered as a ElementType[]) * @param key_size is the number of bits that are turned on in the feature */ - LshTable(unsigned int /*feature_size*/, unsigned int /*key_size*/, std::vector & /*indices*/) + LshTable(unsigned int /*feature_size*/, unsigned int /*key_size*/) { std::cerr << "LSH is not implemented for that type" << std::endl; assert(0); @@ -339,20 +339,34 @@ private: // Specialization for unsigned char template<> -inline LshTable::LshTable( unsigned int feature_size, - unsigned int subsignature_size, - std::vector & indices ) +inline LshTable::LshTable(unsigned int feature_size, unsigned int subsignature_size) { initialize(subsignature_size); // Allocate the mask mask_ = std::vector((size_t)ceil((float)(feature_size * sizeof(char)) / (float)sizeof(size_t)), 0); + // A bit brutal but fast to code + static std::vector* indices = NULL; + + //Ensure the Nth bit will be selected only once among the different LshTables + //to avoid having two different tables with signatures sharing many dimensions/many bits + if( indices == NULL ) + { + indices = new std::vector( feature_size * CHAR_BIT ); + } + else if( indices->size() < key_size_ ) + { + indices->resize( feature_size * CHAR_BIT ); + for (size_t i = 0; i < feature_size * CHAR_BIT; ++i) { + (*indices)[i] = i; + } + std::random_shuffle(indices->begin(), indices->end()); + } + // Generate a random set of order of subsignature_size_ bits for (unsigned int i = 0; i < key_size_; ++i) { - //Ensure the Nth bit will be selected only once among the different LshTables - //to avoid having two different tables with signatures sharing many dimensions/many bits - size_t index = indices[0]; - indices.erase( indices.begin() ); + size_t index = (*indices)[0]; + indices->erase( indices->begin() ); // Set that bit in the mask size_t divisor = CHAR_BIT * sizeof(size_t); From 032c363ea0073e75eb46ec9de3dd75bf45d954d9 Mon Sep 17 00:00:00 2001 From: Maksim Shabunin Date: Fri, 8 Aug 2014 16:59:13 +0400 Subject: [PATCH 124/189] Revert "Fix a heap issue with static on Windows" This reverts commit 8e93c19de311a76704028b0195abfe04cfad900d. --- .../flann/include/opencv2/flann/lsh_table.h | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/modules/flann/include/opencv2/flann/lsh_table.h b/modules/flann/include/opencv2/flann/lsh_table.h index 5da0e3f369..737a4f5333 100644 --- a/modules/flann/include/opencv2/flann/lsh_table.h +++ b/modules/flann/include/opencv2/flann/lsh_table.h @@ -346,27 +346,21 @@ inline LshTable::LshTable(unsigned int feature_size, unsigned int mask_ = std::vector((size_t)ceil((float)(feature_size * sizeof(char)) / (float)sizeof(size_t)), 0); // A bit brutal but fast to code - static std::vector* indices = NULL; + static std::vector indices(feature_size * CHAR_BIT); //Ensure the Nth bit will be selected only once among the different LshTables //to avoid having two different tables with signatures sharing many dimensions/many bits - if( indices == NULL ) + if( (indices.size() == feature_size * CHAR_BIT) || (indices.size() < key_size_) ) { - indices = new std::vector( feature_size * CHAR_BIT ); - } - else if( indices->size() < key_size_ ) - { - indices->resize( feature_size * CHAR_BIT ); - for (size_t i = 0; i < feature_size * CHAR_BIT; ++i) { - (*indices)[i] = i; - } - std::random_shuffle(indices->begin(), indices->end()); + indices.resize( feature_size * CHAR_BIT ); + for (size_t i = 0; i < feature_size * CHAR_BIT; ++i) indices[i] = i; + std::random_shuffle(indices.begin(), indices.end()); } // Generate a random set of order of subsignature_size_ bits for (unsigned int i = 0; i < key_size_; ++i) { - size_t index = (*indices)[0]; - indices->erase( indices->begin() ); + size_t index = indices[0]; + indices.erase( indices.begin() ); // Set that bit in the mask size_t divisor = CHAR_BIT * sizeof(size_t); From f908c2b0e313dd01fb8bf033674e70e147eab4da Mon Sep 17 00:00:00 2001 From: Maksim Shabunin Date: Fri, 8 Aug 2014 16:59:24 +0400 Subject: [PATCH 125/189] Revert "Avoid obtaining several identical dimensions between two LSH sub-vectors by choosing orthogonal sub-vectors." This reverts commit e85bacff7b676a7789bea6501e694cac299b21be. --- modules/flann/include/opencv2/flann/lsh_table.h | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/modules/flann/include/opencv2/flann/lsh_table.h b/modules/flann/include/opencv2/flann/lsh_table.h index 737a4f5333..2c99a3aee4 100644 --- a/modules/flann/include/opencv2/flann/lsh_table.h +++ b/modules/flann/include/opencv2/flann/lsh_table.h @@ -346,21 +346,13 @@ inline LshTable::LshTable(unsigned int feature_size, unsigned int mask_ = std::vector((size_t)ceil((float)(feature_size * sizeof(char)) / (float)sizeof(size_t)), 0); // A bit brutal but fast to code - static std::vector indices(feature_size * CHAR_BIT); - - //Ensure the Nth bit will be selected only once among the different LshTables - //to avoid having two different tables with signatures sharing many dimensions/many bits - if( (indices.size() == feature_size * CHAR_BIT) || (indices.size() < key_size_) ) - { - indices.resize( feature_size * CHAR_BIT ); - for (size_t i = 0; i < feature_size * CHAR_BIT; ++i) indices[i] = i; - std::random_shuffle(indices.begin(), indices.end()); - } + std::vector indices(feature_size * CHAR_BIT); + for (size_t i = 0; i < feature_size * CHAR_BIT; ++i) indices[i] = i; + std::random_shuffle(indices.begin(), indices.end()); // Generate a random set of order of subsignature_size_ bits for (unsigned int i = 0; i < key_size_; ++i) { - size_t index = indices[0]; - indices.erase( indices.begin() ); + size_t index = indices[i]; // Set that bit in the mask size_t divisor = CHAR_BIT * sizeof(size_t); From 7849c35de1c6385f0b6633d4730415cfeeaae38a Mon Sep 17 00:00:00 2001 From: Alexander Karsakov Date: Fri, 8 Aug 2014 17:14:38 +0400 Subject: [PATCH 126/189] Changed check condition in tests for warpAffine and warpPerspective --- modules/imgproc/test/ocl/test_warp.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/modules/imgproc/test/ocl/test_warp.cpp b/modules/imgproc/test/ocl/test_warp.cpp index 0bcc330c70..95128fd5c2 100644 --- a/modules/imgproc/test/ocl/test_warp.cpp +++ b/modules/imgproc/test/ocl/test_warp.cpp @@ -72,6 +72,7 @@ PARAM_TEST_CASE(WarpTestBase, MatType, Interpolation, bool, bool) int type, interpolation; Size dsize; bool useRoi, mapInverse; + int depth; TEST_DECLARE_INPUT_PARAMETER(src); TEST_DECLARE_OUTPUT_PARAMETER(dst); @@ -82,6 +83,7 @@ PARAM_TEST_CASE(WarpTestBase, MatType, Interpolation, bool, bool) interpolation = GET_PARAM(1); mapInverse = GET_PARAM(2); useRoi = GET_PARAM(3); + depth = CV_MAT_DEPTH(type); if (mapInverse) interpolation |= WARP_INVERSE_MAP; @@ -104,7 +106,10 @@ PARAM_TEST_CASE(WarpTestBase, MatType, Interpolation, bool, bool) void Near(double threshold = 0.0) { - OCL_EXPECT_MATS_NEAR(dst, threshold); + if (depth < CV_32F) + EXPECT_MAT_N_DIFF(dst_roi, udst_roi, cvRound(dst_roi.total()*threshold)); + else + OCL_EXPECT_MATS_NEAR_RELATIVE(dst, threshold); } }; @@ -116,6 +121,7 @@ OCL_TEST_P(WarpAffine, Mat) { for (int j = 0; j < test_loop_times; j++) { + double eps = depth < CV_32F ? 0.03 : 0.06; random_roi(); Mat M = getRotationMatrix2D(Point2f(src_roi.cols / 2.0f, src_roi.rows / 2.0f), @@ -124,7 +130,7 @@ OCL_TEST_P(WarpAffine, Mat) OCL_OFF(cv::warpAffine(src_roi, dst_roi, M, dsize, interpolation)); OCL_ON(cv::warpAffine(usrc_roi, udst_roi, M, dsize, interpolation)); - Near(1.0); + Near(eps); } } @@ -136,6 +142,7 @@ OCL_TEST_P(WarpPerspective, Mat) { for (int j = 0; j < test_loop_times; j++) { + double eps = depth < CV_32F ? 0.03 : 0.06; random_roi(); float cols = static_cast(src_roi.cols), rows = static_cast(src_roi.rows); @@ -150,7 +157,7 @@ OCL_TEST_P(WarpPerspective, Mat) OCL_OFF(cv::warpPerspective(src_roi, dst_roi, M, dsize, interpolation)); OCL_ON(cv::warpPerspective(usrc_roi, udst_roi, M, dsize, interpolation)); - Near(1.0); + Near(eps); } } From b3a54d588ba82565bb4abbe8ff8913ed825ad306 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Fri, 8 Aug 2014 17:24:59 +0400 Subject: [PATCH 127/189] fix binary package build --- cmake/OpenCVDetectPython.cmake | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cmake/OpenCVDetectPython.cmake b/cmake/OpenCVDetectPython.cmake index 4b71052685..91e62e38c6 100644 --- a/cmake/OpenCVDetectPython.cmake +++ b/cmake/OpenCVDetectPython.cmake @@ -26,6 +26,12 @@ function(find_python preferred_version min_version library_env include_dir_env libs_found libs_version_string libraries library debug_libraries debug_library include_path include_dir include_dir2 packages_path numpy_include_dirs numpy_version) + + ocv_check_environment_variables(${executable}) + if(${executable}) + set(PYTHON_EXECUTABLE "${${executable}}") + endif() + if(WIN32 AND NOT ${executable}) # search for executable with the same bitness as resulting binaries # standard FindPythonInterp always prefers executable from system path From 7cba3ac4f87a8289ea7a1b5212605456dd0ec21b Mon Sep 17 00:00:00 2001 From: Elena Gvozdeva Date: Fri, 8 Aug 2014 17:47:37 +0400 Subject: [PATCH 128/189] small fix for GaussianBlur ocl test --- modules/imgproc/test/ocl/test_filters.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/imgproc/test/ocl/test_filters.cpp b/modules/imgproc/test/ocl/test_filters.cpp index 35e4aa8f81..3037735e08 100644 --- a/modules/imgproc/test/ocl/test_filters.cpp +++ b/modules/imgproc/test/ocl/test_filters.cpp @@ -225,7 +225,7 @@ OCL_TEST_P(GaussianBlurTest, Mat) OCL_OFF(cv::GaussianBlur(src_roi, dst_roi, Size(ksize, ksize), sigma1, sigma2, borderType)); OCL_ON(cv::GaussianBlur(usrc_roi, udst_roi, Size(ksize, ksize), sigma1, sigma2, borderType)); - Near(CV_MAT_DEPTH(type) >= CV_32F ? 5e-5 : 1, false); + Near(CV_MAT_DEPTH(type) >= CV_32F ? 7e-5 : 1, false); } } From 0224a20ff6d0cf051cf818efb364048a2dcb716d Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Fri, 8 Aug 2014 22:33:40 +0400 Subject: [PATCH 129/189] ECC patch by the author (G. Evangelidis); fixed some OCL Farneback optical flow test failures on Mac --- modules/video/src/ecc.cpp | 7 ++++++- modules/video/src/optflowgf.cpp | 16 ++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/modules/video/src/ecc.cpp b/modules/video/src/ecc.cpp index f56e1f24b5..8c5fbee790 100644 --- a/modules/video/src/ecc.cpp +++ b/modules/video/src/ecc.cpp @@ -297,7 +297,12 @@ static void update_warping_matrix_ECC (Mat& map_matrix, const Mat& update, const mapPtr[5] += updatePtr[7]; } if (motionType == MOTION_EUCLIDEAN) { - double new_theta = acos(mapPtr[0]) + updatePtr[0]; + double new_theta = updatePtr[0]; + if (mapPtr[3]>0) + new_theta += acos(mapPtr[0]); + + if (mapPtr[3]<0) + new_theta -= acos(mapPtr[0]); mapPtr[2] += updatePtr[1]; mapPtr[5] += updatePtr[2]; diff --git a/modules/video/src/optflowgf.cpp b/modules/video/src/optflowgf.cpp index 4225e3d7fc..27abf739fb 100644 --- a/modules/video/src/optflowgf.cpp +++ b/modules/video/src/optflowgf.cpp @@ -43,6 +43,10 @@ #include "precomp.hpp" #include "opencl_kernels_video.hpp" +#if defined __APPLE__ || defined ANDROID +#define SMALL_LOCALSIZE +#endif + // // 2D dense optical flow algorithm from the following paper: // Gunnar Farneback. "Two-Frame Motion Estimation Based on Polynomial Expansion". @@ -836,7 +840,7 @@ private: bool gaussianBlurOcl(const UMat &src, int ksizeHalf, UMat &dst) { -#ifdef ANDROID +#ifdef SMALL_LOCALSIZE size_t localsize[2] = { 128, 1}; #else size_t localsize[2] = { 256, 1}; @@ -863,7 +867,7 @@ private: bool gaussianBlur5Ocl(const UMat &src, int ksizeHalf, UMat &dst) { int height = src.rows / 5; -#ifdef ANDROID +#ifdef SMALL_LOCALSIZE size_t localsize[2] = { 128, 1}; #else size_t localsize[2] = { 256, 1}; @@ -888,7 +892,7 @@ private: } bool polynomialExpansionOcl(const UMat &src, UMat &dst) { -#ifdef ANDROID +#ifdef SMALL_LOCALSIZE size_t localsize[2] = { 128, 1}; #else size_t localsize[2] = { 256, 1}; @@ -925,7 +929,7 @@ private: bool boxFilter5Ocl(const UMat &src, int ksizeHalf, UMat &dst) { int height = src.rows / 5; -#ifdef ANDROID +#ifdef SMALL_LOCALSIZE size_t localsize[2] = { 128, 1}; #else size_t localsize[2] = { 256, 1}; @@ -952,7 +956,7 @@ private: bool updateFlowOcl(const UMat &M, UMat &flowx, UMat &flowy) { -#ifdef ANDROID +#ifdef SMALL_LOCALSIZE size_t localsize[2] = { 32, 4}; #else size_t localsize[2] = { 32, 8}; @@ -976,7 +980,7 @@ private: } bool updateMatricesOcl(const UMat &flowx, const UMat &flowy, const UMat &R0, const UMat &R1, UMat &M) { -#ifdef ANDROID +#ifdef SMALL_LOCALSIZE size_t localsize[2] = { 32, 4}; #else size_t localsize[2] = { 32, 8}; From 68305703bd53c612e69463ddaa330bc0c53d79a8 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Fri, 8 Aug 2014 22:45:07 +0400 Subject: [PATCH 130/189] modified farneback sample to use T-API --- samples/cpp/fback.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/samples/cpp/fback.cpp b/samples/cpp/fback.cpp index 476cfe6548..af0f2ca09b 100644 --- a/samples/cpp/fback.cpp +++ b/samples/cpp/fback.cpp @@ -37,7 +37,8 @@ int main(int, char**) if( !cap.isOpened() ) return -1; - Mat prevgray, gray, flow, cflow, frame; + Mat flow, cflow, frame; + UMat gray, prevgray, uflow; namedWindow("flow", 1); for(;;) @@ -45,10 +46,11 @@ int main(int, char**) cap >> frame; cvtColor(frame, gray, COLOR_BGR2GRAY); - if( prevgray.data ) + if( !prevgray.empty() ) { - calcOpticalFlowFarneback(prevgray, gray, flow, 0.5, 3, 15, 3, 5, 1.2, 0); + calcOpticalFlowFarneback(prevgray, gray, uflow, 0.5, 3, 15, 3, 5, 1.2, 0); cvtColor(prevgray, cflow, COLOR_GRAY2BGR); + uflow.copyTo(flow); drawOptFlowMap(flow, cflow, 16, 1.5, Scalar(0, 255, 0)); imshow("flow", cflow); } From 9a233999a9db7bc3a368e05da274d6fce9e0bcd6 Mon Sep 17 00:00:00 2001 From: Yury Gorbachev Date: Sat, 9 Aug 2014 13:37:53 +0400 Subject: [PATCH 131/189] Fixed review comment from Vadim Pisarevsky --- modules/core/src/arithm.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/core/src/arithm.cpp b/modules/core/src/arithm.cpp index 4c6ba1c7b0..91c338b21e 100644 --- a/modules/core/src/arithm.cpp +++ b/modules/core/src/arithm.cpp @@ -2460,8 +2460,8 @@ addWeighted8u( const uchar* src1, size_t step1, out_f_l = vaddq_f32(out_f_l, g); out_f_h = vaddq_f32(out_f_h, g); - uint16x4_t out_16_l = vqmovn_u32(vcvtq_u32_f32(out_f_l)); - uint16x4_t out_16_h = vqmovn_u32(vcvtq_u32_f32(out_f_h)); + uint16x4_t out_16_l = vqmovun_s32(vcvtq_s32_f32(out_f_l)); + uint16x4_t out_16_h = vqmovun_s32(vcvtq_s32_f32(out_f_h)); uint16x8_t out_16 = vcombine_u16(out_16_l, out_16_h); uint8x8_t out = vqmovn_u16(out_16); From 05e7c29de5fc4864a8812d8f8ab92e89ae6343dc Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Sun, 10 Aug 2014 00:10:05 +0400 Subject: [PATCH 132/189] fixed various warnings and obvious errors reported by clang compiler and the coverity tool. --- modules/core/src/dxt.cpp | 4 ++-- modules/core/src/ocl.cpp | 7 +++---- modules/features2d/src/freak.cpp | 1 - modules/imgproc/src/templmatch.cpp | 1 - modules/ml/src/ann_mlp.cpp | 2 +- modules/ml/src/data.cpp | 8 ++++---- modules/ml/src/svm.cpp | 4 ++-- modules/shape/test/test_emdl1.cpp | 2 -- modules/shape/test/test_shape.cpp | 2 -- modules/video/test/test_tvl1optflow.cpp | 4 +++- modules/videoio/src/cap_qtkit.mm | 1 - 11 files changed, 15 insertions(+), 21 deletions(-) diff --git a/modules/core/src/dxt.cpp b/modules/core/src/dxt.cpp index c74d87dcba..ed96a0b80c 100644 --- a/modules/core/src/dxt.cpp +++ b/modules/core/src/dxt.cpp @@ -1801,11 +1801,11 @@ private: UMat twiddles; String buildOptions; int thread_count; - bool status; int dft_size; + bool status; public: - OCL_FftPlan(int _size): dft_size(_size), status(true) + OCL_FftPlan(int _size) : dft_size(_size), status(true) { int min_radix; std::vector radixes, blocks; diff --git a/modules/core/src/ocl.cpp b/modules/core/src/ocl.cpp index 433249a2ea..837d16ee83 100644 --- a/modules/core/src/ocl.cpp +++ b/modules/core/src/ocl.cpp @@ -1324,6 +1324,9 @@ OCL_FUNC(cl_int, clReleaseEvent, (cl_event event), (event)) #endif +#ifdef _DEBUG +#define CV_OclDbgAssert CV_DbgAssert +#else static bool isRaiseError() { static bool initialized = false; @@ -1335,10 +1338,6 @@ static bool isRaiseError() } return value; } - -#ifdef _DEBUG -#define CV_OclDbgAssert CV_DbgAssert -#else #define CV_OclDbgAssert(expr) do { if (isRaiseError()) { CV_Assert(expr); } else { (void)(expr); } } while ((void)0, 0) #endif diff --git a/modules/features2d/src/freak.cpp b/modules/features2d/src/freak.cpp index 00c0e35ae8..58c1fe11e2 100644 --- a/modules/features2d/src/freak.cpp +++ b/modules/features2d/src/freak.cpp @@ -45,7 +45,6 @@ namespace cv { static const double FREAK_SQRT2 = 1.4142135623731; -static const double FREAK_INV_SQRT2 = 1.0 / FREAK_SQRT2; static const double FREAK_LOG2 = 0.693147180559945; static const int FREAK_NB_ORIENTATION = 256; static const int FREAK_NB_POINTS = 43; diff --git a/modules/imgproc/src/templmatch.cpp b/modules/imgproc/src/templmatch.cpp index 33c1e15bd6..6919d7a3d0 100644 --- a/modules/imgproc/src/templmatch.cpp +++ b/modules/imgproc/src/templmatch.cpp @@ -450,7 +450,6 @@ static bool matchTemplate_CCOEFF(InputArray _image, InputArray _templ, OutputArr UMat templ = _templ.getUMat(); UMat result = _result.getUMat(); - Size tsize = templ.size(); if (cn==1) { diff --git a/modules/ml/src/ann_mlp.cpp b/modules/ml/src/ann_mlp.cpp index 73af1ae94d..b0e1447dcc 100644 --- a/modules/ml/src/ann_mlp.cpp +++ b/modules/ml/src/ann_mlp.cpp @@ -431,7 +431,7 @@ public: break; case GAUSSIAN: - for( i = 0; i < n; j++ ) + for( i = 0; i < n; i++ ) { double* data = sums.ptr(i); for( j = 0; j < cols; j++ ) diff --git a/modules/ml/src/data.cpp b/modules/ml/src/data.cpp index b5d0527985..c9a323a43a 100644 --- a/modules/ml/src/data.cpp +++ b/modules/ml/src/data.cpp @@ -861,9 +861,9 @@ public: void getValues( int vi, InputArray _sidx, float* values ) const { Mat sidx = _sidx.getMat(); - int i, n, nsamples = getNSamples(); + int i, n = sidx.checkVector(1, CV_32S), nsamples = getNSamples(); CV_Assert( 0 <= vi && vi < getNAllVars() ); - CV_Assert( (n = sidx.checkVector(1, CV_32S)) >= 0 ); + CV_Assert( n >= 0 ); const int* s = n > 0 ? sidx.ptr() : 0; if( n == 0 ) n = nsamples; @@ -938,8 +938,8 @@ public: { CV_Assert(buf != 0 && 0 <= sidx && sidx < getNSamples()); Mat vidx = _vidx.getMat(); - int i, n, nvars = getNAllVars(); - CV_Assert( (n = vidx.checkVector(1, CV_32S)) >= 0 ); + int i, n = vidx.checkVector(1, CV_32S), nvars = getNAllVars(); + CV_Assert( n >= 0 ); const int* vptr = n > 0 ? vidx.ptr() : 0; if( n == 0 ) n = nvars; diff --git a/modules/ml/src/svm.cpp b/modules/ml/src/svm.cpp index 985cc62520..49e5c0200a 100644 --- a/modules/ml/src/svm.cpp +++ b/modules/ml/src/svm.cpp @@ -1335,9 +1335,9 @@ public: _responses.convertTo(_yf, CV_32F); bool ok = - (svmType == ONE_CLASS ? Solver::solve_one_class( _samples, params.nu, kernel, _alpha, sinfo, termCrit ) : + svmType == ONE_CLASS ? Solver::solve_one_class( _samples, params.nu, kernel, _alpha, sinfo, termCrit ) : svmType == EPS_SVR ? Solver::solve_eps_svr( _samples, _yf, params.p, params.C, kernel, _alpha, sinfo, termCrit ) : - svmType == NU_SVR ? Solver::solve_nu_svr( _samples, _yf, params.nu, params.C, kernel, _alpha, sinfo, termCrit ) : false); + svmType == NU_SVR ? Solver::solve_nu_svr( _samples, _yf, params.nu, params.C, kernel, _alpha, sinfo, termCrit ) : false; if( !ok ) return false; diff --git a/modules/shape/test/test_emdl1.cpp b/modules/shape/test/test_emdl1.cpp index fc677fc5b0..e52351bcf6 100644 --- a/modules/shape/test/test_emdl1.cpp +++ b/modules/shape/test/test_emdl1.cpp @@ -50,8 +50,6 @@ const float minRad=0.2f; const float maxRad=2; const int NSN=5;//10;//20; //number of shapes per class const int NP=100; //number of points sympliying the contour -const float outlierWeight=0.1f; -const int numOutliers=20; const float CURRENT_MAX_ACCUR=95; //98% and 99% reached in several tests, 95 is fixed as minimum boundary class CV_ShapeEMDTest : public cvtest::BaseTest diff --git a/modules/shape/test/test_shape.cpp b/modules/shape/test/test_shape.cpp index 737e0473ae..04e89fe6b9 100644 --- a/modules/shape/test/test_shape.cpp +++ b/modules/shape/test/test_shape.cpp @@ -50,8 +50,6 @@ const float minRad=0.2f; const float maxRad=2; const int NSN=5;//10;//20; //number of shapes per class const int NP=120; //number of points sympliying the contour -const float outlierWeight=0.1f; -const int numOutliers=20; const float CURRENT_MAX_ACCUR=95; //99% and 100% reached in several tests, 95 is fixed as minimum boundary class CV_ShapeTest : public cvtest::BaseTest diff --git a/modules/video/test/test_tvl1optflow.cpp b/modules/video/test/test_tvl1optflow.cpp index 274c13e65d..4772f0fb6e 100644 --- a/modules/video/test/test_tvl1optflow.cpp +++ b/modules/video/test/test_tvl1optflow.cpp @@ -52,12 +52,13 @@ namespace { // first four bytes, should be the same in little endian const float FLO_TAG_FLOAT = 202021.25f; // check for this when READING the file - const char FLO_TAG_STRING[] = "PIEH"; // use this when WRITING the file +#ifdef DUMP // binary file format for flow data specified here: // http://vision.middlebury.edu/flow/data/ void writeOpticalFlowToFile(const Mat_& flow, const string& fileName) { + const char FLO_TAG_STRING[] = "PIEH"; // use this when WRITING the file ofstream file(fileName.c_str(), ios_base::binary); file << FLO_TAG_STRING; @@ -76,6 +77,7 @@ namespace } } } +#endif // binary file format for flow data specified here: // http://vision.middlebury.edu/flow/data/ diff --git a/modules/videoio/src/cap_qtkit.mm b/modules/videoio/src/cap_qtkit.mm index 461bc1f33c..a0b10cd090 100644 --- a/modules/videoio/src/cap_qtkit.mm +++ b/modules/videoio/src/cap_qtkit.mm @@ -199,7 +199,6 @@ public: private: IplImage* argbimage; QTMovie* mMovie; - unsigned char* imagedata; NSString* path; NSString* codec; From e49536e88b1057184aeee6bd8511ba948a6f1265 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Sun, 10 Aug 2014 01:52:54 +0400 Subject: [PATCH 133/189] moved to the new opencv_contrib/face module --- .../haarcascade_mcs_eyepair_big.xml | 8827 ---- .../haarcascade_mcs_eyepair_small.xml | 10091 ---- data/haarcascades/haarcascade_mcs_leftear.xml | 7633 --- data/haarcascades/haarcascade_mcs_lefteye.xml | 19209 -------- .../haarcascade_mcs_lefteye_alt.xml | 24071 ---------- data/haarcascades/haarcascade_mcs_mouth.xml | 17680 ------- data/haarcascades/haarcascade_mcs_nose.xml | 39332 ---------------- .../haarcascades/haarcascade_mcs_rightear.xml | 7931 ---- .../haarcascades/haarcascade_mcs_righteye.xml | 34105 -------------- .../haarcascade_mcs_righteye_alt.xml | 22351 --------- .../haarcascade_mcs_upperbody.xml | 37318 --------------- 11 files changed, 228548 deletions(-) delete mode 100644 data/haarcascades/haarcascade_mcs_eyepair_big.xml delete mode 100644 data/haarcascades/haarcascade_mcs_eyepair_small.xml delete mode 100644 data/haarcascades/haarcascade_mcs_leftear.xml delete mode 100644 data/haarcascades/haarcascade_mcs_lefteye.xml delete mode 100644 data/haarcascades/haarcascade_mcs_lefteye_alt.xml delete mode 100644 data/haarcascades/haarcascade_mcs_mouth.xml delete mode 100644 data/haarcascades/haarcascade_mcs_nose.xml delete mode 100644 data/haarcascades/haarcascade_mcs_rightear.xml delete mode 100644 data/haarcascades/haarcascade_mcs_righteye.xml delete mode 100644 data/haarcascades/haarcascade_mcs_righteye_alt.xml delete mode 100644 data/haarcascades/haarcascade_mcs_upperbody.xml diff --git a/data/haarcascades/haarcascade_mcs_eyepair_big.xml b/data/haarcascades/haarcascade_mcs_eyepair_big.xml deleted file mode 100644 index c3ac7a1bac..0000000000 --- a/data/haarcascades/haarcascade_mcs_eyepair_big.xml +++ /dev/null @@ -1,8827 +0,0 @@ - - - -BOOST - HAAR - 45 - 11 - - 85 - - 0 - 19 - - <_> - 4 - -1.4563479423522949e+00 - - <_> - - 0 -1 0 1.0129979997873306e-01 - - -7.9546368122100830e-01 7.8110837936401367e-01 - <_> - - 0 -1 1 3.1212110072374344e-02 - - -7.2823482751846313e-01 6.2244427204132080e-01 - <_> - - 0 -1 2 -5.4906789213418961e-02 - - 6.6794431209564209e-01 -6.0760712623596191e-01 - <_> - - 0 -1 3 1.3104109466075897e-01 - - -4.8816078901290894e-01 6.7495757341384888e-01 - <_> - 6 - -1.4917520284652710e+00 - - <_> - - 0 -1 4 1.5072830021381378e-01 - - -6.3909012079238892e-01 8.0536258220672607e-01 - <_> - - 0 -1 5 2.2887440398335457e-02 - - -7.2313660383224487e-01 3.9929839968681335e-01 - <_> - - 0 -1 6 2.7674660086631775e-02 - - -7.0643997192382812e-01 4.8853880167007446e-01 - <_> - - 0 -1 7 3.1899858266115189e-02 - - -4.2184171080589294e-01 5.3921532630920410e-01 - <_> - - 0 -1 8 3.6972828209400177e-02 - - -4.2400631308555603e-01 5.6811082363128662e-01 - <_> - - 0 -1 9 -1.6711089760065079e-02 - - 4.6170559525489807e-01 -4.2389839887619019e-01 - <_> - 11 - -1.6821570396423340e+00 - - <_> - - 0 -1 10 2.1208600699901581e-01 - - -6.5022879838943481e-01 5.9933120012283325e-01 - <_> - - 0 -1 11 -2.2745320573449135e-02 - - 5.1935321092605591e-01 -4.4163998961448669e-01 - <_> - - 0 -1 12 2.1561959758400917e-02 - - -6.4395201206207275e-01 5.1543998718261719e-01 - <_> - - 0 -1 13 8.7526358664035797e-02 - - -3.7235569953918457e-01 4.8228278756141663e-01 - <_> - - 0 -1 14 1.7132370267063379e-03 - - -6.2590628862380981e-01 3.1931561231613159e-01 - <_> - - 0 -1 15 -1.2182939797639847e-01 - - 4.4271498918533325e-01 -2.8492081165313721e-01 - <_> - - 0 -1 16 -1.6568049788475037e-02 - - 4.3862259387969971e-01 -3.0607050657272339e-01 - <_> - - 0 -1 17 -8.0553777515888214e-02 - - 6.0115402936935425e-01 -1.9848510622978210e-02 - <_> - - 0 -1 18 9.4548419117927551e-02 - - -2.5033459067344666e-01 4.8005449771881104e-01 - <_> - - 0 -1 19 -9.6633229404687881e-03 - - 2.1125659346580505e-01 -2.5508201122283936e-01 - <_> - - 0 -1 20 -1.7194730462506413e-03 - - -7.4376249313354492e-01 1.3561910390853882e-01 - <_> - 19 - -2.4261860847473145e+00 - - <_> - - 0 -1 21 -2.9845130443572998e-01 - - 5.7684171199798584e-01 -5.6365752220153809e-01 - <_> - - 0 -1 22 8.4831789135932922e-02 - - -4.8785820603370667e-01 3.0233600735664368e-01 - <_> - - 0 -1 23 4.8235268332064152e-03 - - -4.1680189967155457e-01 5.4730242490768433e-01 - <_> - - 0 -1 24 2.4796100333333015e-02 - - -4.0749680995941162e-01 2.9871928691864014e-01 - <_> - - 0 -1 25 7.8466311097145081e-03 - - -6.6262972354888916e-01 3.0879470705986023e-01 - <_> - - 0 -1 26 8.8172443211078644e-02 - - -1.9640329480171204e-01 1.7876540124416351e-01 - <_> - - 0 -1 27 6.7136192228645086e-04 - - -4.5652940869331360e-01 4.7216510772705078e-01 - <_> - - 0 -1 28 -5.8130059187533334e-05 - - 1.8948759883642197e-02 -2.7900961041450500e-01 - <_> - - 0 -1 29 -7.0680370554327965e-03 - - 4.3155920505523682e-01 -5.2287191152572632e-01 - <_> - - 0 -1 30 1.0486739687621593e-02 - - -6.2000381946563721e-01 4.0068510174751282e-01 - <_> - - 0 -1 31 3.0196599662303925e-02 - - -7.2579962015151978e-01 1.9102710485458374e-01 - <_> - - 0 -1 32 2.2740899585187435e-03 - - -7.4379247426986694e-01 1.4359140396118164e-01 - <_> - - 0 -1 33 2.8281889390200377e-03 - - -7.0359271764755249e-01 2.0774589478969574e-01 - <_> - - 0 -1 34 9.4722010544501245e-05 - - -6.8661361932754517e-01 2.3000240325927734e-01 - <_> - - 0 -1 35 5.8486708439886570e-05 - - -7.4927699565887451e-01 1.7420600354671478e-01 - <_> - - 0 -1 36 -5.3329051297623664e-05 - - 1.9545179605484009e-01 -6.4602172374725342e-01 - <_> - - 0 -1 37 -1.9914070435333997e-05 - - 3.1910550594329834e-01 -5.0005888938903809e-01 - <_> - - 0 -1 38 -2.8483340516686440e-02 - - 2.7206888794898987e-01 -1.7283840477466583e-01 - <_> - - 0 -1 39 -7.0301168598234653e-03 - - 4.9069970846176147e-01 -2.5846821069717407e-01 - <_> - 16 - -1.6515820026397705e+00 - - <_> - - 0 -1 40 1.7105689644813538e-01 - - -5.6416177749633789e-01 5.4754227399826050e-01 - <_> - - 0 -1 41 -1.0497429966926575e-01 - - 4.7274130582809448e-01 -4.5322591066360474e-01 - <_> - - 0 -1 42 -3.1381469219923019e-02 - - 4.9009248614311218e-01 -3.5930469632148743e-01 - <_> - - 0 -1 43 6.2426690012216568e-02 - - -3.1271660327911377e-01 3.7389820814132690e-01 - <_> - - 0 -1 44 5.4725550115108490e-02 - - -4.3851169943809509e-01 3.3310478925704956e-01 - <_> - - 0 -1 45 4.7346241772174835e-03 - - -6.4141207933425903e-01 2.5311610102653503e-01 - <_> - - 0 -1 46 7.9919751733541489e-03 - - -4.6805310249328613e-01 2.4310259521007538e-01 - <_> - - 0 -1 47 1.6218619421124458e-02 - - -3.6558291316032410e-01 1.9355100393295288e-01 - <_> - - 0 -1 48 -2.7070839423686266e-03 - - -6.2368887662887573e-01 1.5246219933032990e-01 - <_> - - 0 -1 49 -1.4570339582860470e-02 - - 2.5488319993019104e-01 -1.0177270323038101e-01 - <_> - - 0 -1 50 -7.4289329349994659e-02 - - -5.9631901979446411e-01 1.4141720533370972e-01 - <_> - - 0 -1 51 1.7482470721006393e-02 - - 6.8981222808361053e-02 -8.0752617120742798e-01 - <_> - - 0 -1 52 7.4595998739823699e-04 - - 8.9970856904983521e-02 -7.5478130578994751e-01 - <_> - - 0 -1 53 6.8119657039642334e-01 - - 1.2513290345668793e-01 -5.9507852792739868e-01 - <_> - - 0 -1 54 -3.2223601010628045e-04 - - -5.4766350984573364e-01 1.4170460402965546e-01 - <_> - - 0 -1 55 -1.3318139826878905e-03 - - -4.6108511090278625e-01 8.7741702795028687e-02 - <_> - 21 - -1.8342440128326416e+00 - - <_> - - 0 -1 56 7.9966977238655090e-02 - - -6.6598808765411377e-01 4.2352628707885742e-01 - <_> - - 0 -1 57 -2.7264660224318504e-02 - - 3.3973929286003113e-01 -5.0634992122650146e-01 - <_> - - 0 -1 58 2.8883190825581551e-02 - - -4.9011540412902832e-01 4.0123671293258667e-01 - <_> - - 0 -1 59 3.9732199162244797e-02 - - -4.7746640443801880e-01 2.0590600371360779e-01 - <_> - - 0 -1 60 -9.7214527428150177e-02 - - 4.5142328739166260e-01 -4.6996578574180603e-01 - <_> - - 0 -1 61 7.0403199642896652e-03 - - -5.0513231754302979e-01 1.8722230195999146e-01 - <_> - - 0 -1 62 1.0033249855041504e-02 - - -6.0716050863265991e-01 2.0498579740524292e-01 - <_> - - 0 -1 63 -2.2186320275068283e-03 - - 2.7919989824295044e-01 -3.9091849327087402e-01 - <_> - - 0 -1 64 7.2839930653572083e-02 - - -8.7004872038960457e-03 -4.3667841796875000e+03 - <_> - - 0 -1 65 -6.8644046783447266e-02 - - 5.4671740531921387e-01 -9.7120396792888641e-02 - <_> - - 0 -1 66 8.3757557149510831e-05 - - -4.3773889541625977e-01 2.0737740397453308e-01 - <_> - - 0 -1 67 -1.8882959848269820e-03 - - 2.8053081035614014e-01 -1.1238359659910202e-01 - <_> - - 0 -1 68 -3.6242630332708359e-02 - - -6.3709640502929688e-01 1.4787060022354126e-01 - <_> - - 0 -1 69 -3.3338118344545364e-02 - - 4.7268480062484741e-01 -2.1240149438381195e-01 - <_> - - 0 -1 70 2.5847079232335091e-03 - - 1.2344239652156830e-01 -7.4099230766296387e-01 - <_> - - 0 -1 71 -2.0372489467263222e-02 - - 1.3778980076313019e-01 -1.9940899312496185e-01 - <_> - - 0 -1 72 3.6333200987428427e-03 - - 7.9361379146575928e-02 -7.6000207662582397e-01 - <_> - - 0 -1 73 4.6827611513435841e-03 - - -6.6145867109298706e-02 1.7332559823989868e-01 - <_> - - 0 -1 74 -4.8445351421833038e-03 - - 4.4801148772239685e-01 -1.5643960237503052e-01 - <_> - - 0 -1 75 2.4819609522819519e-01 - - -8.6152970790863037e-02 3.3757150173187256e-01 - <_> - - 0 -1 76 1.9421289861202240e-01 - - -1.4059330523014069e-01 5.1121640205383301e-01 - <_> - 26 - -1.6580430269241333e+00 - - <_> - - 0 -1 77 -9.6888672560453415e-03 - - 3.8957211375236511e-01 -4.8118248581886292e-01 - <_> - - 0 -1 78 2.9810279607772827e-01 - - -4.8006340861320496e-01 3.9554169774055481e-01 - <_> - - 0 -1 79 -9.8945433273911476e-03 - - 4.2066010832786560e-01 -3.4448111057281494e-01 - <_> - - 0 -1 80 5.6289549916982651e-02 - - -2.3237819969654083e-01 4.2001250386238098e-01 - <_> - - 0 -1 81 2.8186529874801636e-02 - - -5.4988211393356323e-01 1.9484530389308929e-01 - <_> - - 0 -1 82 4.7115761786699295e-02 - - 1.6842770576477051e-01 -5.3077638149261475e-01 - <_> - - 0 -1 83 -3.1187951099127531e-03 - - 1.9679939746856689e-01 -3.7416198849678040e-01 - <_> - - 0 -1 84 1.9423909485340118e-02 - - -4.4669228792190552e-01 1.6852539777755737e-01 - <_> - - 0 -1 85 -2.6180699467658997e-01 - - -8.3780890703201294e-01 6.1774950474500656e-02 - <_> - - 0 -1 86 -4.8632198013365269e-03 - - -4.8009449243545532e-01 6.6771760582923889e-02 - <_> - - 0 -1 87 3.8411598652601242e-02 - - 1.3380399346351624e-01 -5.8349931240081787e-01 - <_> - - 0 -1 88 5.7644587941467762e-03 - - 8.2218721508979797e-02 -8.1420588493347168e-01 - <_> - - 0 -1 89 -2.7703220024704933e-02 - - 4.7253361344337463e-01 -1.4942400157451630e-01 - <_> - - 0 -1 90 2.9970629839226604e-04 - - -3.5082170367240906e-01 1.1788990348577499e-01 - <_> - - 0 -1 91 6.6997818648815155e-03 - - -1.5635940432548523e-01 3.6560869216918945e-01 - <_> - - 0 -1 92 1.8159940736950375e-05 - - -3.1400790810585022e-01 1.2775659561157227e-01 - <_> - - 0 -1 93 -2.3775480221956968e-03 - - -7.1568191051483154e-01 7.5858749449253082e-02 - <_> - - 0 -1 94 -4.4308858923614025e-03 - - -5.7954931259155273e-01 6.5880201756954193e-02 - <_> - - 0 -1 95 8.2603342831134796e-02 - - 7.0020496845245361e-02 -6.6175222396850586e-01 - <_> - - 0 -1 96 -8.3666313439607620e-03 - - -4.9013429880142212e-01 9.3764282763004303e-02 - <_> - - 0 -1 97 -4.2126090265810490e-03 - - -5.8547890186309814e-01 7.7719986438751221e-02 - <_> - - 0 -1 98 1.4681339962407947e-03 - - -2.4955469369888306e-01 1.1525829881429672e-01 - <_> - - 0 -1 99 5.7278228923678398e-03 - - -1.1968609690666199e-01 4.2483189702033997e-01 - <_> - - 0 -1 100 6.5779332071542740e-03 - - 2.8237590566277504e-02 -4.0717759728431702e-01 - <_> - - 0 -1 101 1.2635639905056451e-05 - - -3.2787650823593140e-01 1.4637599885463715e-01 - <_> - - 0 -1 102 -4.6048699878156185e-03 - - 1.8424710631370544e-01 -2.3546899855136871e-01 - <_> - 31 - -1.7386059761047363e+00 - - <_> - - 0 -1 103 6.1627078801393509e-02 - - -6.3852781057357788e-01 3.3314740657806396e-01 - <_> - - 0 -1 104 4.2768982239067554e-03 - - -4.2443430423736572e-01 4.3040299415588379e-01 - <_> - - 0 -1 105 4.6536661684513092e-03 - - -3.5712578892707825e-01 3.4206199645996094e-01 - <_> - - 0 -1 106 8.9929848909378052e-02 - - -3.0818319320678711e-01 3.1036278605461121e-01 - <_> - - 0 -1 107 7.4353553354740143e-02 - - -4.1107970476150513e-01 2.7357169985771179e-01 - <_> - - 0 -1 108 1.8687270348891616e-03 - - -3.2678169012069702e-01 1.8466979265213013e-01 - <_> - - 0 -1 109 -6.2053278088569641e-03 - - 3.1079730391502380e-01 -2.4444060027599335e-01 - <_> - - 0 -1 110 -1.6329739242792130e-02 - - 2.4938680231571198e-01 -3.8487339019775391e-01 - <_> - - 0 -1 111 1.1337800323963165e-01 - - -4.3810528516769409e-01 1.5818390250205994e-01 - <_> - - 0 -1 112 7.4822813272476196e-02 - - 7.7593952417373657e-02 -6.1711072921752930e-01 - <_> - - 0 -1 113 -4.5132860541343689e-02 - - 5.9627789258956909e-01 -1.0650890320539474e-01 - <_> - - 0 -1 114 -1.0261160321533680e-02 - - 3.4028670191764832e-01 -7.6013132929801941e-02 - <_> - - 0 -1 115 1.9562950183171779e-04 - - -3.2240030169487000e-01 1.5930220484733582e-01 - <_> - - 0 -1 116 1.2749910354614258e-02 - - 3.4237869083881378e-02 -8.2333010435104370e-01 - <_> - - 0 -1 117 1.0267910547554493e-03 - - -3.3482649922370911e-01 1.4868380129337311e-01 - <_> - - 0 -1 118 1.1899939738214016e-02 - - -1.1105280369520187e-01 2.9978659749031067e-01 - <_> - - 0 -1 119 9.4404807314276695e-03 - - 6.3143752515316010e-02 -7.4914127588272095e-01 - <_> - - 0 -1 120 -4.4033881276845932e-03 - - 1.5069060027599335e-01 -1.2134409695863724e-01 - <_> - - 0 -1 121 8.2504339516162872e-03 - - 6.5444067120552063e-02 -7.5574231147766113e-01 - <_> - - 0 -1 122 -1.1925470083951950e-02 - - 1.1579179763793945e-01 -1.8231560289859772e-01 - <_> - - 0 -1 123 2.3744169156998396e-03 - - -2.3897719383239746e-01 1.9362419843673706e-01 - <_> - - 0 -1 124 1.8954979255795479e-02 - - -7.3902383446693420e-02 9.5206938683986664e-02 - <_> - - 0 -1 125 -6.4718048088252544e-03 - - 1.8825650215148926e-01 -2.7421408891677856e-01 - <_> - - 0 -1 126 1.1885800398886204e-02 - - -7.9389132559299469e-02 3.9397639036178589e-01 - <_> - - 0 -1 127 3.9641708135604858e-03 - - -3.1416910886764526e-01 1.5722210705280304e-01 - <_> - - 0 -1 128 -1.5312650240957737e-02 - - 4.3467319011688232e-01 -8.0059163272380829e-02 - <_> - - 0 -1 129 -4.4087409041821957e-03 - - -6.9355368614196777e-01 7.2660736739635468e-02 - <_> - - 0 -1 130 2.6811350136995316e-02 - - -2.8735099360346794e-02 4.3056601285934448e-01 - <_> - - 0 -1 131 1.2916729785501957e-02 - - -7.9113177955150604e-02 5.6161957979202271e-01 - <_> - - 0 -1 132 -2.8802119195461273e-03 - - -6.6846042871475220e-01 7.7757932245731354e-02 - <_> - - 0 -1 133 -7.7549487352371216e-02 - - 6.9363379478454590e-01 -7.2858713567256927e-02 - <_> - 33 - -1.6643459796905518e+00 - - <_> - - 0 -1 134 1.1415310204029083e-01 - - -4.6382120251655579e-01 3.8176709413528442e-01 - <_> - - 0 -1 135 4.8969490453600883e-03 - - -1.8987430632114410e-01 3.6797779798507690e-01 - <_> - - 0 -1 136 2.1013330668210983e-02 - - -3.9102751016616821e-01 3.0523461103439331e-01 - <_> - - 0 -1 137 -8.5326731204986572e-03 - - 4.0289008617401123e-01 -3.7945809960365295e-01 - <_> - - 0 -1 138 2.2233189083635807e-03 - - -5.8341151475906372e-01 2.0504960417747498e-01 - <_> - - 0 -1 139 -8.9455489069223404e-03 - - 1.0734400153160095e-01 -1.4078269898891449e-01 - <_> - - 0 -1 140 -4.4652701035374776e-05 - - 3.1881740689277649e-01 -2.4204300343990326e-01 - <_> - - 0 -1 141 -2.7766218781471252e-01 - - 3.1993478536605835e-01 -2.3212060332298279e-01 - <_> - - 0 -1 142 2.9992889612913132e-02 - - -4.8636630177497864e-01 1.5733970701694489e-01 - <_> - - 0 -1 143 1.0384639725089073e-02 - - -3.5761609673500061e-01 1.0168769955635071e-01 - <_> - - 0 -1 144 -9.9069289863109589e-03 - - 3.4743508696556091e-01 -2.0619870722293854e-01 - <_> - - 0 -1 145 -9.3680381774902344e-02 - - 5.4358488321304321e-01 -7.3790967464447021e-02 - <_> - - 0 -1 146 4.6968900278443471e-05 - - -3.6511829495429993e-01 2.0056860148906708e-01 - <_> - - 0 -1 147 -8.3182547241449356e-03 - - -5.2089792490005493e-01 5.1686830818653107e-02 - <_> - - 0 -1 148 -1.1552570015192032e-01 - - -6.0911101102828979e-01 9.2298023402690887e-02 - <_> - - 0 -1 149 4.5758039050269872e-05 - - -2.4188159406185150e-01 1.1205270141363144e-01 - <_> - - 0 -1 150 8.3619967103004456e-02 - - -1.6591419279575348e-01 2.9946151375770569e-01 - <_> - - 0 -1 151 -1.7055140342563391e-03 - - 6.6100686788558960e-02 -1.7834219336509705e-01 - <_> - - 0 -1 152 -5.0255719572305679e-02 - - 5.0841152667999268e-01 -1.0191909968852997e-01 - <_> - - 0 -1 153 -1.4493470080196857e-02 - - 3.3411300182342529e-01 -9.1295331716537476e-02 - <_> - - 0 -1 154 6.6773351281881332e-03 - - 7.0742093026638031e-02 -7.1941351890563965e-01 - <_> - - 0 -1 155 -2.4902720469981432e-03 - - 2.7122259140014648e-01 -2.8118500113487244e-01 - <_> - - 0 -1 156 5.9668770991265774e-03 - - 8.6890019476413727e-02 -5.5102467536926270e-01 - <_> - - 0 -1 157 8.9923879131674767e-03 - - -1.1156769841909409e-01 1.8312740325927734e-01 - <_> - - 0 -1 158 -1.8761169631034136e-03 - - 1.6583199799060822e-01 -2.9823789000511169e-01 - <_> - - 0 -1 159 4.4691809453070164e-03 - - 6.7625999450683594e-02 -5.9995788335800171e-01 - <_> - - 0 -1 160 4.9513768404722214e-02 - - -1.1853209882974625e-01 4.0671309828758240e-01 - <_> - - 0 -1 161 -5.2096061408519745e-02 - - -4.9050968885421753e-01 4.4450759887695312e-02 - <_> - - 0 -1 162 -5.7540610432624817e-02 - - 2.2163380682468414e-01 -2.2697730362415314e-01 - <_> - - 0 -1 163 -1.2027090415358543e-02 - - -7.8315860033035278e-01 2.5225780904293060e-02 - <_> - - 0 -1 164 4.3592308647930622e-03 - - 7.8445762395858765e-02 -5.4399901628494263e-01 - <_> - - 0 -1 165 1.0845139622688293e-02 - - 4.3532259762287140e-02 -7.5301069021224976e-01 - <_> - - 0 -1 166 -2.2464629728347063e-04 - - 1.8881680071353912e-01 -2.1684129536151886e-01 - <_> - 36 - -1.5700939893722534e+00 - - <_> - - 0 -1 167 1.5167570114135742e-01 - - -3.1243559718132019e-01 3.9714258909225464e-01 - <_> - - 0 -1 168 -5.6243538856506348e-03 - - 2.8443521261215210e-01 -4.6888008713722229e-01 - <_> - - 0 -1 169 -1.3363420031964779e-02 - - 2.9847151041030884e-01 -2.8974089026451111e-01 - <_> - - 0 -1 170 1.1973579972982407e-01 - - -2.5059941411018372e-01 3.6980310082435608e-01 - <_> - - 0 -1 171 2.9538029804825783e-02 - - -5.3302282094955444e-01 1.9540609419345856e-01 - <_> - - 0 -1 172 2.2876099683344364e-03 - - -3.9356181025505066e-01 2.2455599904060364e-01 - <_> - - 0 -1 173 3.3369789889547974e-05 - - -4.2540431022644043e-01 1.2474709749221802e-01 - <_> - - 0 -1 174 1.2203590013086796e-02 - - -1.1117500066757202e-01 3.3035451173782349e-01 - <_> - - 0 -1 175 2.8831530362367630e-02 - - -2.6190409064292908e-01 2.6021391153335571e-01 - <_> - - 0 -1 176 2.3157240357249975e-03 - - 5.2618000656366348e-02 -6.1872607469558716e-01 - <_> - - 0 -1 177 3.3288369886577129e-03 - - 7.9465217888355255e-02 -6.1543351411819458e-01 - <_> - - 0 -1 178 -4.1650598868727684e-03 - - 2.2358900308609009e-01 -2.8173050284385681e-01 - <_> - - 0 -1 179 -5.5534418672323227e-02 - - 5.3370571136474609e-01 -9.7847342491149902e-02 - <_> - - 0 -1 180 1.0430039837956429e-02 - - -3.1936469674110413e-01 1.3222220540046692e-01 - <_> - - 0 -1 181 7.3731052875518799e-01 - - 8.5652276873588562e-02 -5.6832748651504517e-01 - <_> - - 0 -1 182 2.1106310188770294e-02 - - 1.0350720025599003e-02 -4.3624758720397949e-01 - <_> - - 0 -1 183 1.8394569633528590e-03 - - -3.0258610844612122e-01 1.8252749741077423e-01 - <_> - - 0 -1 184 -6.2626888975501060e-03 - - -7.0305782556533813e-01 3.4566838294267654e-02 - <_> - - 0 -1 185 -2.5872439146041870e-03 - - 1.9593180716037750e-01 -2.5039601325988770e-01 - <_> - - 0 -1 186 7.9651866108179092e-03 - - 5.6051678955554962e-02 -4.8542159795761108e-01 - <_> - - 0 -1 187 -2.6494610309600830e-01 - - -7.4813681840896606e-01 5.7292331010103226e-02 - <_> - - 0 -1 188 -8.7696090340614319e-03 - - 5.5027532577514648e-01 -9.8186388611793518e-02 - <_> - - 0 -1 189 9.3607688322663307e-03 - - 8.7964951992034912e-02 -6.3283741474151611e-01 - <_> - - 0 -1 190 6.7315441556274891e-03 - - -1.1990720033645630e-01 2.6050290465354919e-01 - <_> - - 0 -1 191 -4.8705069348216057e-03 - - -6.7054021358489990e-01 6.8369716405868530e-02 - <_> - - 0 -1 192 -3.3518500626087189e-02 - - 4.3754190206527710e-01 -5.5987328290939331e-02 - <_> - - 0 -1 193 7.6086460612714291e-03 - - -2.5253391265869141e-01 1.9854959845542908e-01 - <_> - - 0 -1 194 1.8334789201617241e-02 - - 8.3083607256412506e-02 -4.9109730124473572e-01 - <_> - - 0 -1 195 -2.7305909898132086e-03 - - -4.8166638612747192e-01 8.7030112743377686e-02 - <_> - - 0 -1 196 -2.5308089330792427e-02 - - -5.1370352506637573e-01 3.1775940209627151e-02 - <_> - - 0 -1 197 -6.7148888483643532e-03 - - -4.6419641375541687e-01 8.6918152868747711e-02 - <_> - - 0 -1 198 -1.3796479906886816e-03 - - 1.1364360153675079e-01 -1.0997840017080307e-01 - <_> - - 0 -1 199 -1.7988620325922966e-02 - - -5.6473308801651001e-01 8.4838069975376129e-02 - <_> - - 0 -1 200 1.2048670032527298e-04 - - -3.3594891428947449e-01 1.1819580197334290e-01 - <_> - - 0 -1 201 -7.3997122235596180e-03 - - -7.1109187602996826e-01 5.0271350890398026e-02 - <_> - - 0 -1 202 -4.4395271688699722e-03 - - 2.4038110673427582e-01 -8.4818542003631592e-02 - <_> - 37 - -1.5616159439086914e+00 - - <_> - - 0 -1 203 6.7837378010153770e-03 - - -2.4474079906940460e-01 5.2373462915420532e-01 - <_> - - 0 -1 204 -2.6304289698600769e-02 - - 2.3381529748439789e-01 -4.2366439104080200e-01 - <_> - - 0 -1 205 7.0552483201026917e-02 - - -4.8068380355834961e-01 2.1674250066280365e-01 - <_> - - 0 -1 206 1.1588639765977859e-01 - - -2.1499669551849365e-01 2.6753580570220947e-01 - <_> - - 0 -1 207 1.0048950091004372e-02 - - -2.0594270527362823e-01 4.0484279394149780e-01 - <_> - - 0 -1 208 1.4628170058131218e-02 - - 4.5195270329713821e-02 -4.3382239341735840e-01 - <_> - - 0 -1 209 1.0691519826650620e-01 - - -4.0005341172218323e-01 1.5653589367866516e-01 - <_> - - 0 -1 210 2.1544670686125755e-02 - - -3.8369441032409668e-01 1.2536710500717163e-01 - <_> - - 0 -1 211 5.0607468001544476e-03 - - -1.3730029761791229e-01 5.3118318319320679e-01 - <_> - - 0 -1 212 -4.9039809964597225e-03 - - -6.9460391998291016e-01 7.7118568122386932e-02 - <_> - - 0 -1 213 5.5592060089111328e-02 - - 8.4951102733612061e-02 -6.1610800027847290e-01 - <_> - - 0 -1 214 -5.3959678858518600e-02 - - -3.7826099991798401e-01 3.3103808760643005e-02 - <_> - - 0 -1 215 3.6401430406840518e-05 - - -3.6711519956588745e-01 1.3446779549121857e-01 - <_> - - 0 -1 216 -5.5411658249795437e-03 - - -5.7400441169738770e-01 7.4292019009590149e-02 - <_> - - 0 -1 217 7.9086691141128540e-01 - - 7.7422752976417542e-02 -6.3653308153152466e-01 - <_> - - 0 -1 218 4.4924449175596237e-03 - - 6.8504527211189270e-02 -5.3273099660873413e-01 - <_> - - 0 -1 219 -6.8721971474587917e-03 - - -6.5151798725128174e-01 6.4900688827037811e-02 - <_> - - 0 -1 220 4.6454541385173798e-02 - - -1.1238980293273926e-01 2.0744140446186066e-01 - <_> - - 0 -1 221 6.0355630703270435e-03 - - -8.8757097721099854e-02 5.4748558998107910e-01 - <_> - - 0 -1 222 3.9944230229593813e-04 - - 8.6624041199684143e-02 -4.6936568617820740e-01 - <_> - - 0 -1 223 7.5040599331259727e-03 - - -9.2116452753543854e-02 5.3663599491119385e-01 - <_> - - 0 -1 224 -1.5840120613574982e-02 - - 3.8116949796676636e-01 -6.9548472762107849e-02 - <_> - - 0 -1 225 5.7859481312334538e-03 - - 8.0815151333808899e-02 -5.5126720666885376e-01 - <_> - - 0 -1 226 -6.8534379824995995e-03 - - 2.0171649754047394e-01 -2.9816129803657532e-01 - <_> - - 0 -1 227 -3.2146628655027598e-05 - - 1.6275359690189362e-01 -2.5661829113960266e-01 - <_> - - 0 -1 228 4.8393569886684418e-02 - - 6.8830713629722595e-02 -5.7602387666702271e-01 - <_> - - 0 -1 229 4.5954588800668716e-02 - - 5.7024329900741577e-02 -6.5287989377975464e-01 - <_> - - 0 -1 230 1.1721630580723286e-03 - - 1.0443740338087082e-01 -2.3838600516319275e-01 - <_> - - 0 -1 231 4.0837051346898079e-03 - - -8.1231042742729187e-02 5.0901311635971069e-01 - <_> - - 0 -1 232 -1.6486380249261856e-02 - - -5.5164510011672974e-01 6.5037772059440613e-02 - <_> - - 0 -1 233 -1.5899680554866791e-02 - - -6.0929298400878906e-01 6.0179140418767929e-02 - <_> - - 0 -1 234 -3.7392228841781616e-04 - - -4.7092041373252869e-01 9.4327569007873535e-02 - <_> - - 0 -1 235 4.5171450823545456e-02 - - -1.5723140537738800e-01 2.5750550627708435e-01 - <_> - - 0 -1 236 3.9194729179143906e-03 - - -1.1993490159511566e-01 4.1458979249000549e-01 - <_> - - 0 -1 237 4.8551987856626511e-03 - - 8.4063969552516937e-02 -5.1544702053070068e-01 - <_> - - 0 -1 238 4.9727171659469604e-02 - - -8.0618113279342651e-02 2.8510481119155884e-01 - <_> - - 0 -1 239 -2.5979800149798393e-02 - - 2.0879699289798737e-01 -1.9923439621925354e-01 - <_> - 41 - -1.4751789569854736e+00 - - <_> - - 0 -1 240 3.6881880369037390e-03 - - -2.0089849829673767e-01 5.8759230375289917e-01 - <_> - - 0 -1 241 1.2514260411262512e-01 - - -3.3750560879707336e-01 3.0424299836158752e-01 - <_> - - 0 -1 242 1.0761030018329620e-02 - - -1.7004770040512085e-01 4.1313949227333069e-01 - <_> - - 0 -1 243 5.7919409126043320e-02 - - 1.1780419945716858e-01 -5.8375751972198486e-01 - <_> - - 0 -1 244 1.4278049580752850e-02 - - -5.2599787712097168e-01 1.3024589419364929e-01 - <_> - - 0 -1 245 9.2770338058471680e-02 - - -2.8803780674934387e-01 2.0918029546737671e-01 - <_> - - 0 -1 246 -1.2687300331890583e-03 - - -6.8545269966125488e-01 6.7969717085361481e-02 - <_> - - 0 -1 247 -4.1586877778172493e-03 - - 1.5776990354061127e-01 -3.7061429023742676e-01 - <_> - - 0 -1 248 -2.6486739516258240e-03 - - 1.4115740358829498e-01 -3.8789930939674377e-01 - <_> - - 0 -1 249 3.3513078960822895e-05 - - -1.7047059535980225e-01 9.1491073369979858e-02 - <_> - - 0 -1 250 4.1814000724116340e-05 - - -3.3629861474037170e-01 1.5615530312061310e-01 - <_> - - 0 -1 251 -1.0579999536275864e-02 - - 5.1775962114334106e-01 -1.2346430122852325e-01 - <_> - - 0 -1 252 9.6945222467184067e-03 - - -9.3172810971736908e-02 5.4562288522720337e-01 - <_> - - 0 -1 253 2.5123909115791321e-02 - - 2.9200939461588860e-02 -3.9561650156974792e-01 - <_> - - 0 -1 254 -1.9009890820598230e-05 - - 1.3413070142269135e-01 -3.5932931303977966e-01 - <_> - - 0 -1 255 1.1085460428148508e-03 - - 7.0447176694869995e-02 -5.0175982713699341e-01 - <_> - - 0 -1 256 8.4646381437778473e-02 - - -1.4077399671077728e-01 2.9327180981636047e-01 - <_> - - 0 -1 257 -4.6889279037714005e-02 - - 5.4173952341079712e-01 -7.2838932275772095e-02 - <_> - - 0 -1 258 -1.9944239407777786e-02 - - -4.9865978956222534e-01 9.5483623445034027e-02 - <_> - - 0 -1 259 2.3346049711108208e-03 - - -3.4936821460723877e-01 8.6551502346992493e-02 - <_> - - 0 -1 260 -1.2524469755589962e-02 - - 4.2317241430282593e-01 -1.0624880343675613e-01 - <_> - - 0 -1 261 7.4971290305256844e-03 - - -7.7121920883655548e-02 3.3112499117851257e-01 - <_> - - 0 -1 262 -4.3038600124418736e-03 - - 4.4627100229263306e-01 -9.7493350505828857e-02 - <_> - - 0 -1 263 -2.4376739747822285e-03 - - -6.3246351480484009e-01 7.2243332862854004e-02 - <_> - - 0 -1 264 4.0068682283163071e-03 - - 7.4511006474494934e-02 -5.2885991334915161e-01 - <_> - - 0 -1 265 1.6935829818248749e-01 - - 1.9200190901756287e-02 -9.3619912862777710e-01 - <_> - - 0 -1 266 -5.1640910096466541e-03 - - -4.5252829790115356e-01 8.3753086626529694e-02 - <_> - - 0 -1 267 2.1301470696926117e-03 - - 5.9029411524534225e-02 -5.9486192464828491e-01 - <_> - - 0 -1 268 -1.0491809807717800e-03 - - 1.4820049703121185e-01 -2.5729310512542725e-01 - <_> - - 0 -1 269 6.5077878534793854e-03 - - -1.0978510230779648e-01 4.8351821303367615e-01 - <_> - - 0 -1 270 1.0791060049086809e-03 - - 8.5893951356410980e-02 -4.9897330999374390e-01 - <_> - - 0 -1 271 -1.1327429674565792e-02 - - -8.8535779714584351e-01 1.2531019747257233e-02 - <_> - - 0 -1 272 -7.9090192914009094e-02 - - 5.3530997037887573e-01 -7.0534676313400269e-02 - <_> - - 0 -1 273 8.9392989873886108e-02 - - -2.3977179080247879e-02 5.4723167419433594e-01 - <_> - - 0 -1 274 -1.1642159894108772e-02 - - 2.4973329901695251e-01 -1.4847369492053986e-01 - <_> - - 0 -1 275 7.8169062733650208e-02 - - 4.7635629773139954e-02 -5.1396459341049194e-01 - <_> - - 0 -1 276 -5.2542597986757755e-03 - - -4.8597300052642822e-01 7.2495378553867340e-02 - <_> - - 0 -1 277 5.8305509388446808e-02 - - 1.6267899423837662e-02 -5.8864599466323853e-01 - <_> - - 0 -1 278 5.8591919951140881e-03 - - -3.1926271319389343e-01 1.3474270701408386e-01 - <_> - - 0 -1 279 -2.9373338911682367e-03 - - 4.2839759588241577e-01 -9.2287540435791016e-02 - <_> - - 0 -1 280 -3.7391098885564134e-05 - - 2.0448459684848785e-01 -1.8515400588512421e-01 - <_> - 49 - -1.5896049737930298e+00 - - <_> - - 0 -1 281 -6.1791189946234226e-03 - - 2.8580269217491150e-01 -3.7005850672721863e-01 - <_> - - 0 -1 282 4.1821770370006561e-02 - - -5.3575879335403442e-01 1.6827170550823212e-01 - <_> - - 0 -1 283 5.7136882096529007e-03 - - -3.2001748681068420e-01 2.6822981238365173e-01 - <_> - - 0 -1 284 2.8650460299104452e-03 - - -4.2462509870529175e-01 1.3827459514141083e-01 - <_> - - 0 -1 285 2.9460960067808628e-03 - - -3.9784219861030579e-01 2.0654679834842682e-01 - <_> - - 0 -1 286 4.6483702026307583e-03 - - -1.9075180590152740e-01 2.4786050617694855e-01 - <_> - - 0 -1 287 2.3228039499372244e-03 - - -5.2134007215499878e-01 1.0562290251255035e-01 - <_> - - 0 -1 288 -7.4393101967871189e-03 - - 1.6785180568695068e-01 -2.1561630070209503e-01 - <_> - - 0 -1 289 2.8299659607000649e-04 - - -3.8065499067306519e-01 1.4934809505939484e-01 - <_> - - 0 -1 290 -1.3282369822263718e-02 - - 8.6049616336822510e-02 -2.3779979348182678e-01 - <_> - - 0 -1 291 -1.1417060159146786e-02 - - 4.0117940306663513e-01 -1.3484360277652740e-01 - <_> - - 0 -1 292 -1.4769020676612854e-01 - - -4.8844268918037415e-01 1.5933260321617126e-02 - <_> - - 0 -1 293 -3.2284119515679777e-04 - - 1.1826100200414658e-01 -3.8623189926147461e-01 - <_> - - 0 -1 294 -3.6730729334522039e-05 - - 1.0511270165443420e-01 -1.2332110106945038e-01 - <_> - - 0 -1 295 4.3103349162265658e-04 - - 8.0074340105056763e-02 -5.6408351659774780e-01 - <_> - - 0 -1 296 -8.7611482013016939e-04 - - -4.1123768687248230e-01 3.5481810569763184e-02 - <_> - - 0 -1 297 -3.6012110649608076e-04 - - -3.9288720488548279e-01 1.0729379951953888e-01 - <_> - - 0 -1 298 1.1329179629683495e-02 - - -7.7669121325016022e-02 3.0630418658256531e-01 - <_> - - 0 -1 299 -8.5942242294549942e-03 - - 4.0262201428413391e-01 -1.1348369717597961e-01 - <_> - - 0 -1 300 -1.1088109575212002e-02 - - 1.3112230598926544e-01 -1.6582110524177551e-01 - <_> - - 0 -1 301 -2.3962128907442093e-03 - - 1.8446379899978638e-01 -2.1245540678501129e-01 - <_> - - 0 -1 302 1.4491369947791100e-03 - - 1.3291729986667633e-01 -3.4224191308021545e-01 - <_> - - 0 -1 303 -2.3471130989491940e-03 - - -5.9373968839645386e-01 5.2677150815725327e-02 - <_> - - 0 -1 304 -3.3021058887243271e-02 - - 2.0655089616775513e-01 -1.1640720069408417e-01 - <_> - - 0 -1 305 -1.7596699297428131e-02 - - 1.1615789681673050e-01 -2.8771498799324036e-01 - <_> - - 0 -1 306 9.0615563094615936e-02 - - 4.9429651349782944e-02 -5.9598392248153687e-01 - <_> - - 0 -1 307 -4.1973239183425903e-01 - - -9.1762787103652954e-01 2.9144510626792908e-02 - <_> - - 0 -1 308 -4.5256591401994228e-03 - - 3.0929449200630188e-01 -1.1589109897613525e-01 - <_> - - 0 -1 309 -3.1792598747415468e-05 - - 1.2300709635019302e-01 -2.6961469650268555e-01 - <_> - - 0 -1 310 9.3048512935638428e-03 - - -1.6311720013618469e-01 4.5435959100723267e-01 - <_> - - 0 -1 311 1.8182669579982758e-01 - - -6.5462931990623474e-02 5.2403932809829712e-01 - <_> - - 0 -1 312 7.6404958963394165e-03 - - -2.8455978631973267e-01 9.9262543022632599e-02 - <_> - - 0 -1 313 5.8155450969934464e-03 - - -1.8076479434967041e-01 1.9177889823913574e-01 - <_> - - 0 -1 314 2.0472649484872818e-02 - - -4.2547050863504410e-02 4.9899381399154663e-01 - <_> - - 0 -1 315 -9.9484594538807869e-03 - - 4.5864629745483398e-01 -8.2073070108890533e-02 - <_> - - 0 -1 316 5.6835189461708069e-03 - - 7.0460416376590729e-02 -4.9191218614578247e-01 - <_> - - 0 -1 317 6.8594329059123993e-04 - - -2.5722059607505798e-01 1.3338489830493927e-01 - <_> - - 0 -1 318 8.5325147956609726e-03 - - 5.4296270012855530e-02 -4.8597770929336548e-01 - <_> - - 0 -1 319 -2.9188990592956543e-03 - - -3.6844459176063538e-01 8.7630286812782288e-02 - <_> - - 0 -1 320 -5.1809879951179028e-03 - - 2.6872760057449341e-01 -1.3063269853591919e-01 - <_> - - 0 -1 321 -9.3669425696134567e-03 - - 3.7982439994812012e-01 -8.4970362484455109e-02 - <_> - - 0 -1 322 2.1493609528988600e-03 - - 6.7364171147346497e-02 -3.8138151168823242e-01 - <_> - - 0 -1 323 7.9133054241538048e-03 - - 6.1179801821708679e-02 -4.7124278545379639e-01 - <_> - - 0 -1 324 3.3651650883257389e-03 - - -1.9406950473785400e-01 1.6957849264144897e-01 - <_> - - 0 -1 325 5.9752619563369080e-05 - - -3.1296211481094360e-01 9.8244443535804749e-02 - <_> - - 0 -1 326 -4.8905829899013042e-03 - - 2.4011640250682831e-01 -4.0517911314964294e-02 - <_> - - 0 -1 327 -1.6692260280251503e-02 - - -5.8297210931777954e-01 5.1860880106687546e-02 - <_> - - 0 -1 328 2.6945179700851440e-01 - - 2.1222369745373726e-02 -5.0650900602340698e-01 - <_> - - 0 -1 329 2.5985699892044067e-01 - - 4.3021328747272491e-02 -6.9706851243972778e-01 - <_> - 54 - -1.5319960117340088e+00 - - <_> - - 0 -1 330 9.6479244530200958e-03 - - -2.1499650180339813e-01 4.5064011216163635e-01 - <_> - - 0 -1 331 1.1707089841365814e-01 - - -4.5927199721336365e-01 1.4997510612010956e-01 - <_> - - 0 -1 332 -7.2843180969357491e-03 - - 2.0559869706630707e-01 -3.4988620877265930e-01 - <_> - - 0 -1 333 4.3017291318392381e-05 - - -2.9128479957580566e-01 1.4479379355907440e-01 - <_> - - 0 -1 334 -1.6313560307025909e-02 - - 3.6099588871002197e-01 -1.4882080256938934e-01 - <_> - - 0 -1 335 3.8464391231536865e-01 - - 4.7116551548242569e-02 -5.4356420040130615e-01 - <_> - - 0 -1 336 4.4735490519087762e-05 - - -4.7153618931770325e-01 1.0130570083856583e-01 - <_> - - 0 -1 337 2.8128800913691521e-03 - - 2.5190239772200584e-02 -3.8858410716056824e-01 - <_> - - 0 -1 338 6.5664112567901611e-02 - - -1.9981299340724945e-01 2.7820420265197754e-01 - <_> - - 0 -1 339 3.6691401153802872e-02 - - -3.2141581177711487e-01 8.3295859396457672e-02 - <_> - - 0 -1 340 1.9937170669436455e-02 - - 9.6269257366657257e-02 -4.8872131109237671e-01 - <_> - - 0 -1 341 -4.8181511461734772e-02 - - -4.3690940737724304e-01 4.0801100432872772e-02 - <_> - - 0 -1 342 -6.4909900538623333e-03 - - 1.5237170457839966e-01 -2.8793171048164368e-01 - <_> - - 0 -1 343 -2.1715220063924789e-03 - - -4.5620518922805786e-01 9.0800173580646515e-02 - <_> - - 0 -1 344 -1.9035710021853447e-02 - - 1.6175259649753571e-01 -2.4115300178527832e-01 - <_> - - 0 -1 345 -1.7119180411100388e-02 - - -5.1326441764831543e-01 4.2472470551729202e-02 - <_> - - 0 -1 346 -1.8220050260424614e-02 - - -7.0324420928955078e-01 4.4962640851736069e-02 - <_> - - 0 -1 347 -8.9265108108520508e-03 - - 4.3140518665313721e-01 -1.9158810377120972e-01 - <_> - - 0 -1 348 -8.3519242703914642e-02 - - -6.1536192893981934e-01 7.4886828660964966e-02 - <_> - - 0 -1 349 3.6072250804863870e-04 - - 5.7905141264200211e-02 -4.1235160827636719e-01 - <_> - - 0 -1 350 4.9997381865978241e-03 - - -6.9844640791416168e-02 5.6807458400726318e-01 - <_> - - 0 -1 351 -8.4604680538177490e-02 - - 5.8838641643524170e-01 -6.4438559114933014e-02 - <_> - - 0 -1 352 -2.5773020461201668e-02 - - -7.4485701322555542e-01 5.8126550167798996e-02 - <_> - - 0 -1 353 8.6997799575328827e-02 - - 8.3158798515796661e-03 -5.0057667493820190e-01 - <_> - - 0 -1 354 -4.9193361774086952e-03 - - -5.0268518924713135e-01 6.2273811548948288e-02 - <_> - - 0 -1 355 7.9372245818376541e-03 - - -1.0656870156526566e-01 4.9397408962249756e-01 - <_> - - 0 -1 356 2.3460648953914642e-03 - - 7.8172452747821808e-02 -4.3537878990173340e-01 - <_> - - 0 -1 357 -2.4173699319362640e-02 - - 1.4930419623851776e-01 -1.8787060678005219e-01 - <_> - - 0 -1 358 5.0533721223473549e-03 - - -1.0777329653501511e-01 3.3679130673408508e-01 - <_> - - 0 -1 359 -1.7847840487957001e-01 - - 3.2536488771438599e-01 -4.3528459966182709e-02 - <_> - - 0 -1 360 -9.2971222475171089e-03 - - -5.4683762788772583e-01 6.4206808805465698e-02 - <_> - - 0 -1 361 -4.5331679284572601e-03 - - -2.7402278780937195e-01 6.9679208099842072e-02 - <_> - - 0 -1 362 4.4196969829499722e-03 - - -2.6736640930175781e-01 1.2777979671955109e-01 - <_> - - 0 -1 363 -2.4256419390439987e-02 - - -7.3339939117431641e-01 3.4833770245313644e-02 - <_> - - 0 -1 364 1.2094249948859215e-02 - - 6.7233562469482422e-02 -4.4198140501976013e-01 - <_> - - 0 -1 365 -3.1668329029344022e-04 - - -3.4792518615722656e-01 8.6957253515720367e-02 - <_> - - 0 -1 366 6.6463160328567028e-03 - - -7.4840560555458069e-02 4.2975288629531860e-01 - <_> - - 0 -1 367 -8.7216906249523163e-03 - - 6.5960638225078583e-02 -1.1695290356874466e-01 - <_> - - 0 -1 368 3.8271831726888195e-05 - - -2.6323419809341431e-01 1.2117200344800949e-01 - <_> - - 0 -1 369 -2.7925189584493637e-02 - - 1.1978749930858612e-01 -1.0626199841499329e-01 - <_> - - 0 -1 370 -3.6273279692977667e-03 - - 1.2563459575176239e-01 -2.6336249709129333e-01 - <_> - - 0 -1 371 -1.1868350207805634e-02 - - 2.7150759100914001e-01 -5.8620139956474304e-02 - <_> - - 0 -1 372 4.4153559952974319e-02 - - -1.1503530293703079e-01 3.1426700949668884e-01 - <_> - - 0 -1 373 2.4056360125541687e-02 - - 7.5575739145278931e-02 -4.2317551374435425e-01 - <_> - - 0 -1 374 6.9733301643282175e-04 - - -9.7587190568447113e-02 3.2876640558242798e-01 - <_> - - 0 -1 375 -6.4465990290045738e-03 - - -7.1510308980941772e-01 2.5225099176168442e-02 - <_> - - 0 -1 376 -8.1870909780263901e-03 - - -7.6685047149658203e-01 3.2576881349086761e-02 - <_> - - 0 -1 377 -2.7694210875779390e-03 - - 2.4075849354267120e-01 -1.4446850121021271e-01 - <_> - - 0 -1 378 5.9827328659594059e-03 - - -7.9637400805950165e-02 3.3648189902305603e-01 - <_> - - 0 -1 379 7.5759701430797577e-03 - - -7.7287860214710236e-02 3.6068120598793030e-01 - <_> - - 0 -1 380 -3.7349949125200510e-03 - - 3.5057601332664490e-01 -1.0241500288248062e-01 - <_> - - 0 -1 381 3.2173299696296453e-03 - - 6.4644902944564819e-02 -5.0682359933853149e-01 - <_> - - 0 -1 382 5.2299688104540110e-04 - - 5.5405199527740479e-02 -4.9950990080833435e-01 - <_> - - 0 -1 383 4.8098989645950496e-04 - - -2.4837599694728851e-01 7.4951313436031342e-02 - <_> - 63 - -1.5442479848861694e+00 - - <_> - - 0 -1 384 -3.2547898590564728e-02 - - 2.5708261132240295e-01 -3.2944089174270630e-01 - <_> - - 0 -1 385 4.6782270073890686e-02 - - -3.3552670478820801e-01 1.4950010180473328e-01 - <_> - - 0 -1 386 1.1599030112847686e-03 - - -2.1494610607624054e-01 2.9501560330390930e-01 - <_> - - 0 -1 387 4.7644421458244324e-02 - - -1.7128750681877136e-01 9.9497273564338684e-02 - <_> - - 0 -1 388 6.2301728874444962e-02 - - -3.8296920061111450e-01 1.8469420075416565e-01 - <_> - - 0 -1 389 1.6393130645155907e-02 - - -4.8794609308242798e-01 1.9131919741630554e-01 - <_> - - 0 -1 390 6.3293199054896832e-03 - - -1.8209590017795563e-01 2.8313478827476501e-01 - <_> - - 0 -1 391 6.4573478884994984e-03 - - 3.9345800876617432e-02 -5.2096349000930786e-01 - <_> - - 0 -1 392 -2.5518420152366161e-03 - - 2.1809610724449158e-01 -2.0214560627937317e-01 - <_> - - 0 -1 393 2.6448559947311878e-03 - - -9.7657637670636177e-03 -5.8440917730331421e-01 - <_> - - 0 -1 394 3.3177100704051554e-05 - - -2.9121240973472595e-01 1.3445389270782471e-01 - <_> - - 0 -1 395 -4.0287282317876816e-03 - - 2.7975788712501526e-01 -1.0854139924049377e-01 - <_> - - 0 -1 396 1.7501820111647248e-03 - - 8.0245189368724823e-02 -5.1040309667587280e-01 - <_> - - 0 -1 397 -9.8289866000413895e-03 - - 2.2203339636325836e-01 -2.5279709696769714e-01 - <_> - - 0 -1 398 -1.1355300433933735e-02 - - -5.6477332115173340e-01 6.1788219958543777e-02 - <_> - - 0 -1 399 6.1084949411451817e-03 - - -1.2973600625991821e-01 3.1682729721069336e-01 - <_> - - 0 -1 400 -1.0406709770904854e-04 - - 1.2907129526138306e-01 -2.5948029756546021e-01 - <_> - - 0 -1 401 2.6019159704446793e-03 - - 4.8421688377857208e-02 -5.4648971557617188e-01 - <_> - - 0 -1 402 -5.9403157792985439e-03 - - -5.5114412307739258e-01 5.9723380953073502e-02 - <_> - - 0 -1 403 -4.0788599289953709e-03 - - 7.9743288457393646e-02 -1.7927250266075134e-01 - <_> - - 0 -1 404 -8.8134910911321640e-03 - - 3.8017749786376953e-01 -8.6376570165157318e-02 - <_> - - 0 -1 405 -2.3983590304851532e-02 - - -4.9645310640335083e-01 5.4226141422986984e-02 - <_> - - 0 -1 406 3.9569390937685966e-03 - - 5.1663581281900406e-02 -5.6799358129501343e-01 - <_> - - 0 -1 407 -1.3359559699892998e-02 - - 2.3724800348281860e-01 -3.2083779573440552e-02 - <_> - - 0 -1 408 8.6046587675809860e-03 - - -8.2463279366493225e-02 4.0011510252952576e-01 - <_> - - 0 -1 409 -8.4893424063920975e-03 - - -5.2815818786621094e-01 6.8383157253265381e-02 - <_> - - 0 -1 410 7.7398498542606831e-03 - - -4.3508920073509216e-01 6.3567712903022766e-02 - <_> - - 0 -1 411 5.4778340272605419e-03 - - 2.4115180596709251e-02 -4.5364230871200562e-01 - <_> - - 0 -1 412 -5.3739761933684349e-03 - - -4.8526778817176819e-01 6.2529832124710083e-02 - <_> - - 0 -1 413 -6.5155163407325745e-02 - - 3.3586868643760681e-01 -1.1969889700412750e-01 - <_> - - 0 -1 414 3.1082800123840570e-03 - - -9.3668088316917419e-02 3.1569510698318481e-01 - <_> - - 0 -1 415 -5.6411409750580788e-03 - - 4.1902360320091248e-01 -5.2446529269218445e-02 - <_> - - 0 -1 416 1.0050649754703045e-02 - - 6.9715507328510284e-02 -4.8279500007629395e-01 - <_> - - 0 -1 417 -6.4478779677301645e-04 - - -3.9206001162528992e-01 2.6635570451617241e-02 - <_> - - 0 -1 418 4.2866038711508736e-05 - - -2.8287550806999207e-01 9.8806321620941162e-02 - <_> - - 0 -1 419 5.5659800767898560e-02 - - 3.4592561423778534e-02 -5.7936602830886841e-01 - <_> - - 0 -1 420 -1.9027240574359894e-02 - - 1.2798109650611877e-01 -2.2252650558948517e-01 - <_> - - 0 -1 421 -5.4886029101908207e-03 - - 2.2120019793510437e-01 -1.4247809350490570e-01 - <_> - - 0 -1 422 -9.1977212578058243e-03 - - 1.1419790238142014e-01 -2.5367730855941772e-01 - <_> - - 0 -1 423 1.5616010129451752e-01 - - -2.4698130786418915e-02 6.4977157115936279e-01 - <_> - - 0 -1 424 1.0394269973039627e-01 - - -4.7591820359230042e-02 6.7088091373443604e-01 - <_> - - 0 -1 425 2.3722560144960880e-03 - - -2.5346800684928894e-01 1.2758140265941620e-01 - <_> - - 0 -1 426 6.3766101375222206e-03 - - -8.0695442855358124e-02 4.2792451381683350e-01 - <_> - - 0 -1 427 -1.3368749991059303e-02 - - 1.0521420091390610e-01 -4.7770101577043533e-02 - <_> - - 0 -1 428 -5.6055800087051466e-05 - - 1.2017639726400375e-01 -2.5983789563179016e-01 - <_> - - 0 -1 429 2.6153340004384518e-03 - - 4.9611940979957581e-02 -4.0553820133209229e-01 - <_> - - 0 -1 430 -8.5704872617498040e-04 - - 3.6326551437377930e-01 -8.2753598690032959e-02 - <_> - - 0 -1 431 4.0100780315697193e-03 - - 4.0156569331884384e-02 -5.6216222047805786e-01 - <_> - - 0 -1 432 1.5721879899501801e-02 - - -1.1804500222206116e-01 2.4654519557952881e-01 - <_> - - 0 -1 433 -2.6668920181691647e-03 - - -5.4068821668624878e-01 4.3663289397954941e-02 - <_> - - 0 -1 434 4.1414599865674973e-02 - - -8.2976840436458588e-02 3.3884221315383911e-01 - <_> - - 0 -1 435 4.8187570646405220e-03 - - 4.3414391577243805e-02 -4.0724611282348633e-01 - <_> - - 0 -1 436 -5.4356600157916546e-03 - - 3.3830219507217407e-01 -9.0368166565895081e-02 - <_> - - 0 -1 437 -4.6245800331234932e-03 - - 4.8925418406724930e-02 -1.0818439722061157e-01 - <_> - - 0 -1 438 -5.0910529680550098e-03 - - 3.3953168988227844e-01 -7.7847503125667572e-02 - <_> - - 0 -1 439 -6.9446121342480183e-03 - - -3.6882779002189636e-01 3.4155908972024918e-02 - <_> - - 0 -1 440 -5.2966130897402763e-03 - - -4.6671220660209656e-01 5.5030699819326401e-02 - <_> - - 0 -1 441 8.2239676266908646e-03 - - -1.9418859854340553e-02 2.7148181200027466e-01 - <_> - - 0 -1 442 -6.9603421725332737e-03 - - 1.3864019513130188e-01 -2.1237270534038544e-01 - <_> - - 0 -1 443 -3.5027971025556326e-03 - - 4.8216879367828369e-01 -8.9572787284851074e-02 - <_> - - 0 -1 444 -3.3562759199412540e-05 - - 1.7753930389881134e-01 -1.5390409529209137e-01 - <_> - - 0 -1 445 -1.1905809864401817e-02 - - -4.4905489683151245e-01 4.8765189945697784e-02 - <_> - - 0 -1 446 1.0403740452602506e-03 - - 6.9199390709400177e-02 -3.9061141014099121e-01 - <_> - 68 - -1.5824840068817139e+00 - - <_> - - 0 -1 447 1.1477550119161606e-01 - - -3.5392341017723083e-01 2.4686269462108612e-01 - <_> - - 0 -1 448 -8.3238538354635239e-03 - - 3.5804480314254761e-01 -2.9096409678459167e-01 - <_> - - 0 -1 449 3.3069178462028503e-02 - - -4.5017778873443604e-01 1.4678280055522919e-01 - <_> - - 0 -1 450 -9.8486011847853661e-03 - - 1.5487630665302277e-01 -1.5467190742492676e-01 - <_> - - 0 -1 451 -3.6737930495291948e-03 - - 2.7250599861145020e-01 -2.0117540657520294e-01 - <_> - - 0 -1 452 -3.5203520674258471e-03 - - 2.1894049644470215e-01 -3.0996188521385193e-01 - <_> - - 0 -1 453 -2.9107630252838135e-03 - - 1.7095150053501129e-01 -2.5036340951919556e-01 - <_> - - 0 -1 454 1.1107170023024082e-02 - - -2.9383128881454468e-01 9.0500317513942719e-02 - <_> - - 0 -1 455 4.5277690514922142e-03 - - -3.6567330360412598e-01 7.1812681853771210e-02 - <_> - - 0 -1 456 1.6910480335354805e-03 - - -2.4635620415210724e-01 1.4365090429782867e-01 - <_> - - 0 -1 457 -5.2848931401968002e-02 - - -4.8988130688667297e-01 5.8866269886493683e-02 - <_> - - 0 -1 458 2.7257269248366356e-02 - - -1.3318820297718048e-01 1.7798610031604767e-01 - <_> - - 0 -1 459 -1.0774610191583633e-01 - - 7.5734657049179077e-01 -4.5793280005455017e-02 - <_> - - 0 -1 460 6.2365201301872730e-03 - - 7.6347790658473969e-02 -4.6734619140625000e-01 - <_> - - 0 -1 461 -3.2917850185185671e-03 - - 2.5657090544700623e-01 -1.3669669628143311e-01 - <_> - - 0 -1 462 -7.0988652296364307e-03 - - -7.3587757349014282e-01 5.6788709014654160e-02 - <_> - - 0 -1 463 -2.0502239465713501e-02 - - -6.1333388090133667e-01 4.0661100298166275e-02 - <_> - - 0 -1 464 -5.7894989848136902e-02 - - -4.2337441444396973e-01 1.6256660223007202e-02 - <_> - - 0 -1 465 -7.0625008083879948e-03 - - 1.5070070326328278e-01 -2.1530729532241821e-01 - <_> - - 0 -1 466 -1.4774609589949250e-03 - - 9.9447593092918396e-02 -1.9990250468254089e-01 - <_> - - 0 -1 467 -5.9045450761914253e-03 - - 2.3448540270328522e-01 -1.3239750266075134e-01 - <_> - - 0 -1 468 4.9114958383142948e-03 - - 5.5307600647211075e-02 -4.1024419665336609e-01 - <_> - - 0 -1 469 -4.0302358567714691e-02 - - 5.1089602708816528e-01 -6.7178718745708466e-02 - <_> - - 0 -1 470 -3.1478509306907654e-02 - - -3.5742738842964172e-01 3.4691110253334045e-02 - <_> - - 0 -1 471 -2.0419940119609237e-04 - - 1.1907909810543060e-01 -2.6256930828094482e-01 - <_> - - 0 -1 472 6.1496188864111900e-03 - - 3.8344919681549072e-02 -7.0752871036529541e-01 - <_> - - 0 -1 473 -6.4982818439602852e-03 - - -5.7135289907455444e-01 4.1346888989210129e-02 - <_> - - 0 -1 474 -2.0436770282685757e-03 - - 2.1547719836235046e-01 -9.2143923044204712e-02 - <_> - - 0 -1 475 8.4923263639211655e-03 - - 5.7075109332799911e-02 -5.3487390279769897e-01 - <_> - - 0 -1 476 -2.2661099210381508e-03 - - 2.7374848723411560e-01 -1.8907399475574493e-01 - <_> - - 0 -1 477 -3.8180600386112928e-03 - - -4.9997299909591675e-01 5.6287519633769989e-02 - <_> - - 0 -1 478 1.9832929968833923e-01 - - -4.9284029752016068e-02 3.0991891026496887e-01 - <_> - - 0 -1 479 -5.3573800250887871e-03 - - 3.6525368690490723e-01 -8.1586323678493500e-02 - <_> - - 0 -1 480 -4.1200658306479454e-03 - - -4.9979409575462341e-01 3.3759441226720810e-02 - <_> - - 0 -1 481 2.7241830248385668e-03 - - -7.4961036443710327e-02 4.0402159094810486e-01 - <_> - - 0 -1 482 -1.1279270052909851e-02 - - -6.2540912628173828e-01 4.0539268404245377e-02 - <_> - - 0 -1 483 -2.6438670232892036e-02 - - 6.2469798326492310e-01 -5.0695668905973434e-02 - <_> - - 0 -1 484 9.3085810542106628e-02 - - -2.7736229822039604e-02 1.2201499938964844e-01 - <_> - - 0 -1 485 3.6821569665335119e-04 - - 6.3227869570255280e-02 -4.5462760329246521e-01 - <_> - - 0 -1 486 -2.6150209829211235e-02 - - 2.1615530550479889e-01 -3.4189209342002869e-02 - <_> - - 0 -1 487 -1.5219129621982574e-01 - - -5.6291139125823975e-01 5.0881389528512955e-02 - <_> - - 0 -1 488 -5.3802412003278732e-03 - - 1.1969149857759476e-01 -4.5463770627975464e-02 - <_> - - 0 -1 489 3.1421401072293520e-03 - - 3.5171128809452057e-02 -7.5333297252655029e-01 - <_> - - 0 -1 490 -2.3642999585717916e-03 - - -7.8145317733287811e-02 3.6591161042451859e-02 - <_> - - 0 -1 491 -3.4253650810569525e-03 - - 2.7961251139640808e-01 -1.0286819934844971e-01 - <_> - - 0 -1 492 -1.0126389563083649e-02 - - 1.2946769595146179e-01 -2.0795370638370514e-01 - <_> - - 0 -1 493 9.5109362155199051e-03 - - -6.4487166702747345e-02 4.5304939150810242e-01 - <_> - - 0 -1 494 -2.8382990509271622e-02 - - 1.8103609979152679e-01 -1.2647239863872528e-01 - <_> - - 0 -1 495 7.2591200470924377e-02 - - -1.3137449324131012e-01 2.1626609563827515e-01 - <_> - - 0 -1 496 5.6936382316052914e-03 - - -7.3818109929561615e-02 1.0788620263338089e-01 - <_> - - 0 -1 497 -5.4796910844743252e-03 - - 4.1715219616889954e-01 -6.7778319120407104e-02 - <_> - - 0 -1 498 -6.8001292645931244e-02 - - -5.7230949401855469e-01 5.9687018394470215e-02 - <_> - - 0 -1 499 4.1796491132117808e-05 - - -3.6016240715980530e-01 6.7770622670650482e-02 - <_> - - 0 -1 500 -6.0458998195827007e-03 - - -6.6702812910079956e-01 2.0666399970650673e-02 - <_> - - 0 -1 501 -8.9402851881459355e-04 - - 1.8525250256061554e-01 -1.3367660343647003e-01 - <_> - - 0 -1 502 -5.2337357774376869e-03 - - -6.4259058237075806e-01 3.8245800882577896e-02 - <_> - - 0 -1 503 -1.0876660235226154e-02 - - -6.5612989664077759e-01 3.0916240066289902e-02 - <_> - - 0 -1 504 1.0764590464532375e-02 - - -1.2209519743919373e-01 2.3244349658489227e-01 - <_> - - 0 -1 505 6.2717488035559654e-03 - - 3.6665380001068115e-02 -6.4267098903656006e-01 - <_> - - 0 -1 506 3.9870911277830601e-03 - - -1.0013840347528458e-01 2.6687619090080261e-01 - <_> - - 0 -1 507 5.6966538541018963e-03 - - 4.1680138558149338e-02 -6.2925517559051514e-01 - <_> - - 0 -1 508 -2.4660900235176086e-03 - - 3.0375760793685913e-01 -8.9954569935798645e-02 - <_> - - 0 -1 509 4.3577459291554987e-04 - - 5.6845329701900482e-02 -4.4916090369224548e-01 - <_> - - 0 -1 510 -8.6022150935605168e-04 - - -3.1331560015678406e-01 2.2231949493288994e-02 - <_> - - 0 -1 511 -3.6151748645352200e-05 - - 1.6037069261074066e-01 -1.5645219385623932e-01 - <_> - - 0 -1 512 -1.2417449615895748e-03 - - 3.6251470446586609e-01 -6.8029686808586121e-02 - <_> - - 0 -1 513 -9.3716438859701157e-03 - - -6.5667027235031128e-01 3.9296999573707581e-02 - <_> - - 0 -1 514 5.0649640616029501e-04 - - -9.9897801876068115e-02 2.5486990809440613e-01 - <_> - 71 - -1.4470269680023193e+00 - - <_> - - 0 -1 515 6.9536222144961357e-03 - - -3.0070298910140991e-01 2.8844910860061646e-01 - <_> - - 0 -1 516 1.5524399280548096e-01 - - -2.8483951091766357e-01 1.2542790174484253e-01 - <_> - - 0 -1 517 -9.5990058034658432e-03 - - 2.6636219024658203e-01 -2.2467589378356934e-01 - <_> - - 0 -1 518 8.2325551193207502e-04 - - -1.5014129877090454e-01 1.7611239850521088e-01 - <_> - - 0 -1 519 -6.3837850466370583e-03 - - -5.3211832046508789e-01 8.8923923671245575e-02 - <_> - - 0 -1 520 -1.8110420554876328e-02 - - 2.9294028878211975e-01 -1.8418279290199280e-01 - <_> - - 0 -1 521 -2.2221719846129417e-03 - - 2.3608820140361786e-01 -1.8082359433174133e-01 - <_> - - 0 -1 522 -4.2745987884700298e-03 - - 1.1372009664773941e-01 -2.8232550621032715e-01 - <_> - - 0 -1 523 -1.1924340389668941e-02 - - 3.0177098512649536e-01 -1.3063450157642365e-01 - <_> - - 0 -1 524 2.1337319631129503e-03 - - -2.0078870654106140e-01 1.0759650170803070e-01 - <_> - - 0 -1 525 3.9748410927131772e-05 - - -3.3652520179748535e-01 9.8408773541450500e-02 - <_> - - 0 -1 526 -7.4939359910786152e-03 - - 4.4728818535804749e-01 -1.2359820306301117e-01 - <_> - - 0 -1 527 -5.4673082195222378e-03 - - -3.7992051243782043e-01 9.0167470276355743e-02 - <_> - - 0 -1 528 -4.6410970389842987e-02 - - -4.7909379005432129e-01 2.2162070497870445e-02 - <_> - - 0 -1 529 -1.8335790373384953e-03 - - 1.4062260091304779e-01 -2.7500510215759277e-01 - <_> - - 0 -1 530 3.2272320822812617e-04 - - 4.4330291450023651e-02 -3.1671470403671265e-01 - <_> - - 0 -1 531 -2.0776148885488510e-03 - - 4.1858351230621338e-01 -7.0875823497772217e-02 - <_> - - 0 -1 532 -7.9464362934231758e-03 - - -7.9281628131866455e-01 1.9778270274400711e-02 - <_> - - 0 -1 533 1.8161779735237360e-03 - - -3.5335579514503479e-01 8.0757312476634979e-02 - <_> - - 0 -1 534 -1.3951859727967530e-04 - - 8.7176196277141571e-02 -2.3442719876766205e-01 - <_> - - 0 -1 535 -3.0605921056121588e-03 - - 1.9965550303459167e-01 -1.4475509524345398e-01 - <_> - - 0 -1 536 -3.5044189542531967e-02 - - -4.6923148632049561e-01 6.3744127750396729e-02 - <_> - - 0 -1 537 2.2343990206718445e-01 - - 3.6188349127769470e-02 -6.7740142345428467e-01 - <_> - - 0 -1 538 6.2643741257488728e-03 - - 5.3922589868307114e-02 -2.9957211017608643e-01 - <_> - - 0 -1 539 5.1456191577017307e-03 - - -8.5695646703243256e-02 3.4958600997924805e-01 - <_> - - 0 -1 540 -4.5792991295456886e-04 - - -3.7274828553199768e-01 5.2098128944635391e-02 - <_> - - 0 -1 541 -8.9521985501050949e-03 - - -5.5943322181701660e-01 4.5037239789962769e-02 - <_> - - 0 -1 542 -8.8845528662204742e-03 - - -8.2152491807937622e-01 1.9023310393095016e-02 - <_> - - 0 -1 543 -8.3964038640260696e-04 - - 1.3553179800510406e-01 -1.9439619779586792e-01 - <_> - - 0 -1 544 5.7581579312682152e-03 - - 3.4872371703386307e-02 -6.1317610740661621e-01 - <_> - - 0 -1 545 -3.2971119508147240e-03 - - 2.0933049917221069e-01 -1.1797709763050079e-01 - <_> - - 0 -1 546 6.6358018666505814e-03 - - -1.2625180184841156e-01 2.3151409626007080e-01 - <_> - - 0 -1 547 9.1771818697452545e-03 - - 4.2256359010934830e-02 -6.4281421899795532e-01 - <_> - - 0 -1 548 -1.8898380920290947e-02 - - -5.4784798622131348e-01 2.4022759869694710e-02 - <_> - - 0 -1 549 -1.3961439952254295e-02 - - 1.3342179358005524e-01 -1.8949310481548309e-01 - <_> - - 0 -1 550 3.9351810701191425e-03 - - 1.2323100119829178e-02 -4.8017400503158569e-01 - <_> - - 0 -1 551 2.8737629763782024e-03 - - -6.3833169639110565e-02 3.8450908660888672e-01 - <_> - - 0 -1 552 -2.1502410527318716e-03 - - 2.4967829883098602e-01 -8.3693861961364746e-02 - <_> - - 0 -1 553 -2.0945349708199501e-02 - - -4.6581479907035828e-01 5.9967949986457825e-02 - <_> - - 0 -1 554 1.2025360483676195e-03 - - -7.4031457304954529e-02 2.6217839121818542e-01 - <_> - - 0 -1 555 -1.2649910058826208e-03 - - -5.6358098983764648e-01 4.7350831329822540e-02 - <_> - - 0 -1 556 -3.5608751204563305e-05 - - 8.3944819867610931e-02 -9.2339277267456055e-02 - <_> - - 0 -1 557 1.7638429999351501e-03 - - -6.7106232047080994e-02 3.5390651226043701e-01 - <_> - - 0 -1 558 2.6478520594537258e-03 - - 4.9792490899562836e-02 -5.6108528375625610e-01 - <_> - - 0 -1 559 1.1421759845688939e-03 - - -8.0566927790641785e-02 3.1899300217628479e-01 - <_> - - 0 -1 560 -3.7144690286368132e-03 - - -2.1286490559577942e-01 6.6972009837627411e-02 - <_> - - 0 -1 561 4.6520791947841644e-03 - - 5.9289190918207169e-02 -4.5674440264701843e-01 - <_> - - 0 -1 562 -4.7056251205503941e-03 - - -2.4541069567203522e-01 2.4544840678572655e-02 - <_> - - 0 -1 563 7.1251969784498215e-03 - - 3.8318928331136703e-02 -6.4973872900009155e-01 - <_> - - 0 -1 564 -6.7658387124538422e-02 - - 4.0030410885810852e-01 -3.2079871743917465e-02 - <_> - - 0 -1 565 3.5729840397834778e-02 - - -7.0430107414722443e-02 3.0633118748664856e-01 - <_> - - 0 -1 566 -3.3828441053628922e-02 - - 5.0491297245025635e-01 -3.5456459969282150e-02 - <_> - - 0 -1 567 1.3351860456168652e-02 - - -1.7890280485153198e-01 1.4767180383205414e-01 - <_> - - 0 -1 568 8.7488196790218353e-02 - - 4.3538779020309448e-02 -4.6793699264526367e-01 - <_> - - 0 -1 569 3.6777120549231768e-03 - - -2.0427100360393524e-01 1.5148130059242249e-01 - <_> - - 0 -1 570 1.0766600025817752e-03 - - -9.6319787204265594e-02 3.5530230402946472e-01 - <_> - - 0 -1 571 5.2243531681597233e-03 - - 5.3389668464660645e-02 -4.5717859268188477e-01 - <_> - - 0 -1 572 -9.5345107838511467e-03 - - 1.4912480115890503e-01 -1.4985750615596771e-01 - <_> - - 0 -1 573 4.2573010432533920e-05 - - -1.3890530169010162e-01 1.5467180311679840e-01 - <_> - - 0 -1 574 -1.5596169978380203e-03 - - -5.4723149538040161e-01 3.4767109900712967e-02 - <_> - - 0 -1 575 7.6222111238166690e-04 - - -7.8980550169944763e-02 2.8355160355567932e-01 - <_> - - 0 -1 576 -2.1907720714807510e-02 - - -4.3671789765357971e-01 5.1701240241527557e-02 - <_> - - 0 -1 577 4.6507688239216805e-05 - - -3.1914091110229492e-01 6.2482111155986786e-02 - <_> - - 0 -1 578 -2.9253138927742839e-04 - - -2.4766990542411804e-01 8.4014937281608582e-02 - <_> - - 0 -1 579 3.0009269248694181e-03 - - -1.1042869836091995e-01 1.9720460474491119e-01 - <_> - - 0 -1 580 8.7042397353798151e-04 - - 6.7197367548942566e-02 -1.8366929888725281e-01 - <_> - - 0 -1 581 7.6602102490141988e-04 - - -6.4485676586627960e-02 3.2467260956764221e-01 - <_> - - 0 -1 582 3.3248408726649359e-05 - - -9.8362646996974945e-02 8.6462937295436859e-02 - <_> - - 0 -1 583 1.2568470556288958e-03 - - 4.9354679882526398e-02 -4.3177890777587891e-01 - <_> - - 0 -1 584 -9.7309090197086334e-03 - - -2.7393120527267456e-01 3.9641439914703369e-02 - <_> - - 0 -1 585 5.8255670592188835e-03 - - -7.0380076766014099e-02 3.0546179413795471e-01 - <_> - 77 - -1.4913309812545776e+00 - - <_> - - 0 -1 586 -6.9308779202401638e-03 - - 2.3897680640220642e-01 -3.3735579252243042e-01 - <_> - - 0 -1 587 6.3356258906424046e-03 - - -2.0606219768524170e-01 2.4546289443969727e-01 - <_> - - 0 -1 588 3.2951928675174713e-02 - - -4.8151299357414246e-01 1.3534410297870636e-01 - <_> - - 0 -1 589 -2.0294299349188805e-02 - - 2.4425999820232391e-01 -3.0648550391197205e-01 - <_> - - 0 -1 590 -8.0935731530189514e-03 - - 2.1754260361194611e-01 -2.3051339387893677e-01 - <_> - - 0 -1 591 -3.2209409400820732e-03 - - 2.4082750082015991e-01 -1.4753510057926178e-01 - <_> - - 0 -1 592 3.6949120461940765e-02 - - -2.8758960962295532e-01 1.7237929999828339e-01 - <_> - - 0 -1 593 1.0001210030168295e-03 - - -1.8483549356460571e-01 1.0649669915437698e-01 - <_> - - 0 -1 594 -4.9832418881123886e-05 - - 1.0084930062294006e-01 -3.7289780378341675e-01 - <_> - - 0 -1 595 4.6645071357488632e-02 - - 7.1331411600112915e-02 -4.2174908518791199e-01 - <_> - - 0 -1 596 2.9729669913649559e-03 - - -2.3385779559612274e-01 1.5728150308132172e-01 - <_> - - 0 -1 597 1.1885419953614473e-03 - - -2.1615119278430939e-01 8.5435479879379272e-02 - <_> - - 0 -1 598 -2.5504899676889181e-03 - - 2.4453009665012360e-01 -1.3642320036888123e-01 - <_> - - 0 -1 599 1.4580690301954746e-02 - - 6.3050612807273865e-02 -4.3805420398712158e-01 - <_> - - 0 -1 600 1.7621000006329268e-04 - - -3.5026490688323975e-01 9.7995147109031677e-02 - <_> - - 0 -1 601 -1.0763060301542282e-02 - - -5.5614972114562988e-01 5.2613109350204468e-02 - <_> - - 0 -1 602 -1.7733459826558828e-03 - - 2.1240839362144470e-01 -1.2885910272598267e-01 - <_> - - 0 -1 603 -5.6170229800045490e-03 - - -5.7895171642303467e-01 2.7056280523538589e-02 - <_> - - 0 -1 604 7.8137779235839844e-01 - - 4.3512191623449326e-02 -5.1112377643585205e-01 - <_> - - 0 -1 605 1.5521559864282608e-02 - - 1.7887489870190620e-02 -4.2302969098091125e-01 - <_> - - 0 -1 606 -6.0149789787828922e-03 - - -6.1993318796157837e-01 4.1468121111392975e-02 - <_> - - 0 -1 607 -1.2032959610223770e-02 - - 3.7520378828048706e-01 -5.2101939916610718e-02 - <_> - - 0 -1 608 5.7090952759608626e-04 - - -2.3000800609588623e-01 1.3806359469890594e-01 - <_> - - 0 -1 609 -3.5141059925081208e-05 - - 1.3613599538803101e-01 -1.3633610308170319e-01 - <_> - - 0 -1 610 3.8827958633191884e-04 - - 6.2043979763984680e-02 -4.0999558568000793e-01 - <_> - - 0 -1 611 -3.1813879031687975e-03 - - 4.3042609095573425e-01 -5.8574389666318893e-02 - <_> - - 0 -1 612 1.2359759770333767e-02 - - -5.3425218909978867e-02 4.4235768914222717e-01 - <_> - - 0 -1 613 5.3630769252777100e-03 - - 4.8345729708671570e-02 -3.6919850111007690e-01 - <_> - - 0 -1 614 6.7529240623116493e-03 - - -6.7788898944854736e-02 4.0632560849189758e-01 - <_> - - 0 -1 615 -1.1506180278956890e-02 - - -2.4940669536590576e-01 3.0043790116906166e-02 - <_> - - 0 -1 616 -6.5450267866253853e-03 - - -5.0393360853195190e-01 5.1048409193754196e-02 - <_> - - 0 -1 617 -6.4059509895741940e-03 - - -7.8335607051849365e-01 7.0806178264319897e-03 - <_> - - 0 -1 618 -4.7279968857765198e-03 - - -6.8467348814010620e-01 3.3867139369249344e-02 - <_> - - 0 -1 619 -5.2285747369751334e-04 - - 1.4660769701004028e-01 -6.7289963364601135e-02 - <_> - - 0 -1 620 -9.3035101890563965e-03 - - -4.0989071130752563e-01 5.7299319654703140e-02 - <_> - - 0 -1 621 6.8128891289234161e-03 - - 4.2919881641864777e-02 -2.4730630218982697e-01 - <_> - - 0 -1 622 4.6791278873570263e-04 - - -7.5994156301021576e-02 3.0771958827972412e-01 - <_> - - 0 -1 623 2.3431669920682907e-02 - - 1.0545349679887295e-02 -4.1394978761672974e-01 - <_> - - 0 -1 624 9.2174801975488663e-03 - - 5.8044180274009705e-02 -4.0034890174865723e-01 - <_> - - 0 -1 625 -7.8371819108724594e-03 - - 1.2945890426635742e-01 -7.3255613446235657e-02 - <_> - - 0 -1 626 3.5635009407997131e-03 - - -7.1402922272682190e-02 3.4709578752517700e-01 - <_> - - 0 -1 627 -5.3719929419457912e-03 - - 6.9731049239635468e-02 -6.1688169836997986e-02 - <_> - - 0 -1 628 4.3290190398693085e-02 - - 5.0334971398115158e-02 -4.5517569780349731e-01 - <_> - - 0 -1 629 -4.6179331839084625e-03 - - -4.9110341072082520e-01 3.5927779972553253e-02 - <_> - - 0 -1 630 -7.0018521510064602e-03 - - -6.0634332895278931e-01 3.3043950796127319e-02 - <_> - - 0 -1 631 -2.0546320825815201e-02 - - 3.7467220425605774e-01 -6.0966350138187408e-02 - <_> - - 0 -1 632 9.0153552591800690e-03 - - -8.1377029418945312e-02 2.8447070717811584e-01 - <_> - - 0 -1 633 1.6945270821452141e-02 - - 1.9947079941630363e-02 -4.2220640182495117e-01 - <_> - - 0 -1 634 8.2118361024186015e-04 - - -2.7205279469490051e-01 9.5590539276599884e-02 - <_> - - 0 -1 635 3.5344670322956517e-05 - - -7.9617857933044434e-02 7.4185736477375031e-02 - <_> - - 0 -1 636 -8.4219790995121002e-02 - - -4.8575800657272339e-01 4.2242940515279770e-02 - <_> - - 0 -1 637 4.3517339974641800e-02 - - -1.5482529997825623e-01 1.0759840160608292e-01 - <_> - - 0 -1 638 -8.3383917808532715e-03 - - 4.0242099761962891e-01 -8.3734147250652313e-02 - <_> - - 0 -1 639 -2.6848739944398403e-03 - - 2.5776070356369019e-01 -5.7312320917844772e-02 - <_> - - 0 -1 640 3.9407201111316681e-03 - - -9.5994941890239716e-02 2.4924820661544800e-01 - <_> - - 0 -1 641 -6.5882800845429301e-04 - - 1.2785859405994415e-01 -1.5311600267887115e-01 - <_> - - 0 -1 642 -1.1875710450112820e-02 - - -7.0702570676803589e-01 3.2913740724325180e-02 - <_> - - 0 -1 643 -2.3982020094990730e-02 - - -5.0821501016616821e-01 4.6551831066608429e-02 - <_> - - 0 -1 644 -2.0041069947183132e-03 - - -6.8692350387573242e-01 2.5760149583220482e-02 - <_> - - 0 -1 645 7.8222304582595825e-03 - - -4.8103228211402893e-02 2.1432960033416748e-01 - <_> - - 0 -1 646 1.0946569964289665e-02 - - -1.6195610165596008e-01 1.6880209743976593e-01 - <_> - - 0 -1 647 2.6802860200405121e-02 - - 5.6256961077451706e-02 -2.7505400776863098e-01 - <_> - - 0 -1 648 3.9884559810161591e-03 - - -1.2663219869136810e-01 2.1626690030097961e-01 - <_> - - 0 -1 649 -1.8008690327405930e-02 - - 1.4534379541873932e-01 -5.5422309786081314e-02 - <_> - - 0 -1 650 1.7189480364322662e-02 - - -6.7623190581798553e-02 4.0081891417503357e-01 - <_> - - 0 -1 651 -1.2231480330228806e-02 - - -8.2071441411972046e-01 2.1297780796885490e-02 - <_> - - 0 -1 652 1.5830479562282562e-02 - - 3.5207420587539673e-02 -6.0531431436538696e-01 - <_> - - 0 -1 653 -1.5264269895851612e-02 - - -2.7459529042243958e-01 2.2607039660215378e-02 - <_> - - 0 -1 654 3.8808338344097137e-02 - - 3.9623390883207321e-02 -5.8665269613265991e-01 - <_> - - 0 -1 655 1.6585539560765028e-03 - - 2.4927699938416481e-02 -1.7679250240325928e-01 - <_> - - 0 -1 656 -7.0774480700492859e-03 - - 3.9536350965499878e-01 -5.4568108171224594e-02 - <_> - - 0 -1 657 4.7583471314283088e-05 - - -9.0718649327754974e-02 6.7698262631893158e-02 - <_> - - 0 -1 658 4.4619271648116410e-05 - - -2.3770439624786377e-01 9.9762678146362305e-02 - <_> - - 0 -1 659 -1.1851030401885509e-02 - - 3.2351729273796082e-01 -3.9586558938026428e-02 - <_> - - 0 -1 660 -1.6401939792558551e-03 - - -2.9881209135055542e-01 7.3466911911964417e-02 - <_> - - 0 -1 661 -6.9199479185044765e-03 - - 4.3420779705047607e-01 -1.0284329950809479e-01 - <_> - - 0 -1 662 -1.1484259739518166e-02 - - -4.9977409839630127e-01 5.0039488822221756e-02 - <_> - 85 - -1.4498629570007324e+00 - - <_> - - 0 -1 663 5.7978169061243534e-03 - - -2.5478368997573853e-01 3.1262540817260742e-01 - <_> - - 0 -1 664 3.4410690423101187e-03 - - -1.4427100121974945e-01 1.4882120490074158e-01 - <_> - - 0 -1 665 1.6638059914112091e-01 - - -2.9001000523567200e-01 1.7310169339179993e-01 - <_> - - 0 -1 666 -7.4716238304972649e-03 - - 2.5105801224708557e-01 -2.0066189765930176e-01 - <_> - - 0 -1 667 -3.6712910514324903e-03 - - 2.5619038939476013e-01 -1.9867749512195587e-01 - <_> - - 0 -1 668 1.8908550555352122e-04 - - -1.2631610035896301e-01 1.1225890368223190e-01 - <_> - - 0 -1 669 -1.9562460947781801e-03 - - 2.2644129395484924e-01 -1.6129520535469055e-01 - <_> - - 0 -1 670 -8.1449178978800774e-03 - - 2.5742760300636292e-01 -7.2123177349567413e-02 - <_> - - 0 -1 671 6.4932177774608135e-03 - - -1.8143969774246216e-01 2.2572280466556549e-01 - <_> - - 0 -1 672 4.5387531281448901e-04 - - 2.3686420172452927e-02 -4.0528649091720581e-01 - <_> - - 0 -1 673 4.2509411287028342e-05 - - -2.9150670766830444e-01 1.1115519702434540e-01 - <_> - - 0 -1 674 -1.5767119824886322e-02 - - -7.3671698570251465e-01 1.0386019945144653e-02 - <_> - - 0 -1 675 -6.9369110278785229e-03 - - 1.6062590479850769e-01 -1.8799079954624176e-01 - <_> - - 0 -1 676 -3.2210960052907467e-03 - - 1.1640430241823196e-01 -1.8258500099182129e-01 - <_> - - 0 -1 677 -1.2131559662520885e-02 - - -6.3532382249832153e-01 3.5376798361539841e-02 - <_> - - 0 -1 678 -2.6418970082886517e-04 - - -2.4938230216503143e-01 5.5897600948810577e-02 - <_> - - 0 -1 679 1.1737859994173050e-01 - - 3.1205369159579277e-02 -7.4014288187026978e-01 - <_> - - 0 -1 680 -1.1690290411934257e-03 - - 7.8599072992801666e-02 -1.7284469306468964e-01 - <_> - - 0 -1 681 2.4764470756053925e-02 - - 5.1048379391431808e-02 -5.1298439502716064e-01 - <_> - - 0 -1 682 -4.2942222207784653e-03 - - 3.2294911146163940e-01 -9.1555416584014893e-02 - <_> - - 0 -1 683 1.2354889884591103e-02 - - -7.1046717464923859e-02 3.7195768952369690e-01 - <_> - - 0 -1 684 -2.3104460909962654e-02 - - -5.9680628776550293e-01 1.2195380404591560e-02 - <_> - - 0 -1 685 -2.0122020505368710e-03 - - 1.3106389343738556e-01 -2.0082409679889679e-01 - <_> - - 0 -1 686 -1.2122809886932373e-02 - - -3.3110201358795166e-01 3.2431658357381821e-02 - <_> - - 0 -1 687 -1.3967029750347137e-02 - - -4.7931128740310669e-01 5.2107390016317368e-02 - <_> - - 0 -1 688 7.5348587706685066e-03 - - -9.8858788609504700e-02 3.6169511079788208e-01 - <_> - - 0 -1 689 -1.6827749088406563e-02 - - -6.1323410272598267e-01 4.3719381093978882e-02 - <_> - - 0 -1 690 5.4655349813401699e-03 - - 2.9257390648126602e-02 -4.1502380371093750e-01 - <_> - - 0 -1 691 -5.7378439232707024e-03 - - -4.9381670355796814e-01 4.4704858213663101e-02 - <_> - - 0 -1 692 -9.9511053413152695e-03 - - 3.1045120954513550e-01 -6.0698598623275757e-02 - <_> - - 0 -1 693 2.8865570202469826e-03 - - -1.9001829624176025e-01 1.2568040192127228e-01 - <_> - - 0 -1 694 4.1129510849714279e-02 - - 3.0545100569725037e-02 -4.2006531357765198e-01 - <_> - - 0 -1 695 1.6931550204753876e-01 - - 3.2922860234975815e-02 -7.0118480920791626e-01 - <_> - - 0 -1 696 3.9114229381084442e-02 - - -1.2389829754829407e-01 2.5299561023712158e-01 - <_> - - 0 -1 697 1.4167210459709167e-01 - - -1.1856999993324280e-01 2.6716861128807068e-01 - <_> - - 0 -1 698 2.3257229477167130e-03 - - 2.7907749637961388e-02 -3.4009200334548950e-01 - <_> - - 0 -1 699 -2.6245389133691788e-02 - - 9.8266378045082092e-02 -2.5756400823593140e-01 - <_> - - 0 -1 700 1.8283349927514791e-03 - - -8.3703443408012390e-02 2.3101350665092468e-01 - <_> - - 0 -1 701 4.7496692277491093e-03 - - 6.1327129602432251e-02 -4.3593269586563110e-01 - <_> - - 0 -1 702 -4.3565989471971989e-03 - - -4.2383280396461487e-01 9.4382222741842270e-03 - <_> - - 0 -1 703 -3.8147179875522852e-03 - - -6.4637732505798340e-01 3.7270799279212952e-02 - <_> - - 0 -1 704 -2.1859859116375446e-03 - - 2.8486278653144836e-01 -1.9577220082283020e-01 - <_> - - 0 -1 705 -1.5153910499066114e-03 - - 1.6781100630760193e-01 -1.3713860511779785e-01 - <_> - - 0 -1 706 -3.2454739994136617e-05 - - 7.3632411658763885e-02 -7.7787682414054871e-02 - <_> - - 0 -1 707 1.1885840445756912e-02 - - -4.3111089617013931e-02 5.2360087633132935e-01 - <_> - - 0 -1 708 4.4173169881105423e-03 - - 4.5849800109863281e-02 -3.2220908999443054e-01 - <_> - - 0 -1 709 7.3544741608202457e-03 - - -7.6994776725769043e-02 2.8344219923019409e-01 - <_> - - 0 -1 710 -1.4129919931292534e-02 - - -3.9489749073982239e-01 4.1761901229619980e-02 - <_> - - 0 -1 711 6.3752778805792332e-03 - - 4.6900819987058640e-02 -4.8540329933166504e-01 - <_> - - 0 -1 712 2.3776849266141653e-03 - - 1.7367800697684288e-02 -2.0004540681838989e-01 - <_> - - 0 -1 713 -9.5808254554867744e-03 - - 3.6303970217704773e-01 -6.2879018485546112e-02 - <_> - - 0 -1 714 3.8879989006090909e-05 - - -8.1249810755252838e-02 8.1068873405456543e-02 - <_> - - 0 -1 715 -8.8017992675304413e-02 - - 4.4440689682960510e-01 -4.8520348966121674e-02 - <_> - - 0 -1 716 1.4197609852999449e-03 - - -1.0583449900150299e-01 2.3807370662689209e-01 - <_> - - 0 -1 717 8.2073677331209183e-03 - - 4.7994330525398254e-02 -4.6953499317169189e-01 - <_> - - 0 -1 718 -2.9159379191696644e-03 - - 3.7838110327720642e-01 -6.0855239629745483e-02 - <_> - - 0 -1 719 -1.2287500314414501e-02 - - 1.2594810128211975e-01 -1.7701840400695801e-01 - <_> - - 0 -1 720 -5.6836591102182865e-03 - - 2.3341970145702362e-01 -4.4496081769466400e-02 - <_> - - 0 -1 721 -1.3924470171332359e-02 - - -7.2878497838973999e-01 3.0758429318666458e-02 - <_> - - 0 -1 722 9.9232727661728859e-03 - - -3.9361201226711273e-02 3.4838870167732239e-01 - <_> - - 0 -1 723 1.0692769661545753e-02 - - -4.4223789125680923e-02 4.2715668678283691e-01 - <_> - - 0 -1 724 3.7554800655925646e-05 - - -6.4494386315345764e-02 1.2572330236434937e-01 - <_> - - 0 -1 725 2.7551440871320665e-04 - - 6.7445993423461914e-02 -3.4731999039649963e-01 - <_> - - 0 -1 726 3.5946661228081211e-05 - - -7.5870849192142487e-02 1.2495779991149902e-01 - <_> - - 0 -1 727 -4.1565788706066087e-05 - - 1.4327770471572876e-01 -1.5775039792060852e-01 - <_> - - 0 -1 728 2.9380898922681808e-03 - - -2.8900629281997681e-01 6.4528502523899078e-02 - <_> - - 0 -1 729 2.3380669951438904e-01 - - -3.8070231676101685e-02 6.0606312751770020e-01 - <_> - - 0 -1 730 -4.0552138671046123e-05 - - 1.7881380021572113e-01 -9.3907959759235382e-02 - <_> - - 0 -1 731 3.6401779652805999e-05 - - -1.7232389748096466e-01 1.4596420526504517e-01 - <_> - - 0 -1 732 1.2257539667189121e-02 - - 2.7358820661902428e-02 -5.9449177980422974e-01 - <_> - - 0 -1 733 3.4914221032522619e-05 - - -1.4092069864273071e-01 1.4110060036182404e-01 - <_> - - 0 -1 734 5.0704288296401501e-03 - - -1.1959090083837509e-01 3.3249089121818542e-01 - <_> - - 0 -1 735 -1.2888760305941105e-02 - - -6.8956321477890015e-01 3.1754989176988602e-02 - <_> - - 0 -1 736 -1.6707969829440117e-02 - - 9.8655208945274353e-02 -1.0937389731407166e-01 - <_> - - 0 -1 737 1.1148779653012753e-02 - - -6.3801966607570648e-02 3.4605810046195984e-01 - <_> - - 0 -1 738 -2.7799250092357397e-03 - - 2.0987810194492340e-01 -1.3359400629997253e-01 - <_> - - 0 -1 739 -2.4409759498666972e-04 - - 6.9238096475601196e-02 -3.1708741188049316e-01 - <_> - - 0 -1 740 -2.9775299131870270e-02 - - -4.1800031065940857e-01 3.2243121415376663e-02 - <_> - - 0 -1 741 -2.9159660916775465e-03 - - 1.3949039578437805e-01 -1.6484509408473969e-01 - <_> - - 0 -1 742 -3.3617448934819549e-05 - - 9.9441543221473694e-02 -8.6935497820377350e-02 - <_> - - 0 -1 743 -1.2755930423736572e-01 - - -5.9932261705398560e-01 3.4439250826835632e-02 - <_> - - 0 -1 744 1.1930080130696297e-02 - - 3.4306000918149948e-02 -5.4623407125473022e-01 - <_> - - 0 -1 745 1.2805329635739326e-02 - - 5.4770689457654953e-02 -3.3244410157203674e-01 - <_> - - 0 -1 746 -1.1016329750418663e-02 - - -3.3880481123924255e-01 1.9317859783768654e-02 - <_> - - 0 -1 747 -1.5256899641826749e-03 - - 1.9104599952697754e-01 -1.0740239918231964e-01 - - <_> - - <_> - 7 3 30 3 -1. - <_> - 17 3 10 3 3. - <_> - - <_> - 34 5 11 6 -1. - <_> - 34 8 11 3 2. - <_> - - <_> - 6 1 6 9 -1. - <_> - 8 4 2 3 9. - <_> - - <_> - 15 0 15 11 -1. - <_> - 20 0 5 11 3. - <_> - - <_> - 7 3 30 3 -1. - <_> - 17 3 10 3 3. - <_> - - <_> - 34 5 11 6 -1. - <_> - 34 8 11 3 2. - <_> - - <_> - 0 5 11 6 -1. - <_> - 0 8 11 3 2. - <_> - - <_> - 22 0 6 11 -1. - <_> - 22 0 3 11 2. - <_> - - <_> - 17 0 6 11 -1. - <_> - 20 0 3 11 2. - <_> - - <_> - 39 0 1 9 -1. - <_> - 36 3 1 3 3. - 1 - <_> - - <_> - 9 0 27 6 -1. - <_> - 18 0 9 6 3. - <_> - - <_> - 39 0 1 9 -1. - <_> - 36 3 1 3 3. - 1 - <_> - - <_> - 7 3 4 8 -1. - <_> - 7 7 4 4 2. - <_> - - <_> - 17 2 12 8 -1. - <_> - 21 2 4 8 3. - <_> - - <_> - 1 7 5 4 -1. - <_> - 1 9 5 2 2. - <_> - - <_> - 31 1 9 9 -1. - <_> - 34 4 3 3 9. - <_> - - <_> - 2 1 8 4 -1. - <_> - 2 3 8 2 2. - <_> - - <_> - 18 2 12 9 -1. - <_> - 22 2 4 9 3. - <_> - - <_> - 15 2 12 9 -1. - <_> - 19 2 4 9 3. - <_> - - <_> - 31 4 9 3 -1. - <_> - 34 4 3 3 3. - <_> - - <_> - 20 9 4 2 -1. - <_> - 20 9 2 1 2. - <_> - 22 10 2 1 2. - <_> - - <_> - 0 0 24 9 -1. - <_> - 8 3 8 3 9. - <_> - - <_> - 7 3 36 4 -1. - <_> - 16 3 18 4 2. - <_> - - <_> - 9 5 4 2 -1. - <_> - 11 5 2 2 2. - <_> - - <_> - 22 0 6 10 -1. - <_> - 22 0 3 10 2. - <_> - - <_> - 0 5 6 6 -1. - <_> - 0 8 6 3 2. - <_> - - <_> - 21 0 8 11 -1. - <_> - 21 0 4 11 2. - <_> - - <_> - 1 3 42 8 -1. - <_> - 1 3 21 4 2. - <_> - 22 7 21 4 2. - <_> - - <_> - 24 0 8 3 -1. - <_> - 26 2 4 3 2. - 1 - <_> - - <_> - 21 0 3 8 -1. - <_> - 19 2 3 4 2. - 1 - <_> - - <_> - 35 3 2 8 -1. - <_> - 35 7 2 4 2. - <_> - - <_> - 2 4 36 5 -1. - <_> - 11 4 18 5 2. - <_> - - <_> - 12 0 21 1 -1. - <_> - 19 0 7 1 3. - <_> - - <_> - 8 5 2 6 -1. - <_> - 8 8 2 3 2. - <_> - - <_> - 24 9 11 2 -1. - <_> - 24 10 11 1 2. - <_> - - <_> - 2 7 2 4 -1. - <_> - 2 9 2 2 2. - <_> - - <_> - 42 4 2 2 -1. - <_> - 42 4 1 2 2. - 1 - <_> - - <_> - 3 4 2 2 -1. - <_> - 3 4 2 1 2. - 1 - <_> - - <_> - 23 6 16 5 -1. - <_> - 27 6 8 5 2. - <_> - - <_> - 10 2 2 4 -1. - <_> - 9 3 2 2 2. - 1 - <_> - - <_> - 6 3 33 3 -1. - <_> - 17 3 11 3 3. - <_> - - <_> - 31 1 9 9 -1. - <_> - 34 4 3 3 9. - <_> - - <_> - 9 0 6 3 -1. - <_> - 11 2 2 3 3. - 1 - <_> - - <_> - 21 1 8 10 -1. - <_> - 21 1 4 10 2. - <_> - - <_> - 7 3 26 5 -1. - <_> - 20 3 13 5 2. - <_> - - <_> - 40 5 3 6 -1. - <_> - 40 8 3 3 2. - <_> - - <_> - 2 5 3 6 -1. - <_> - 2 8 3 3 2. - <_> - - <_> - 13 0 21 1 -1. - <_> - 20 0 7 1 3. - <_> - - <_> - 10 9 11 2 -1. - <_> - 10 10 11 1 2. - <_> - - <_> - 35 2 4 3 -1. - <_> - 36 3 2 3 2. - 1 - <_> - - <_> - 9 0 26 10 -1. - <_> - 9 0 13 5 2. - <_> - 22 5 13 5 2. - <_> - - <_> - 1 9 44 2 -1. - <_> - 23 9 22 1 2. - <_> - 1 10 22 1 2. - <_> - - <_> - 21 9 2 2 -1. - <_> - 21 9 1 1 2. - <_> - 22 10 1 1 2. - <_> - - <_> - 0 0 45 9 -1. - <_> - 15 3 15 3 9. - <_> - - <_> - 21 9 2 2 -1. - <_> - 21 9 1 1 2. - <_> - 22 10 1 1 2. - <_> - - <_> - 39 9 5 2 -1. - <_> - 39 10 5 1 2. - <_> - - <_> - 4 3 32 3 -1. - <_> - 12 3 16 3 2. - <_> - - <_> - 26 1 11 8 -1. - <_> - 26 3 11 4 2. - <_> - - <_> - 17 1 6 9 -1. - <_> - 20 1 3 9 2. - <_> - - <_> - 27 3 11 8 -1. - <_> - 27 7 11 4 2. - <_> - - <_> - 5 1 9 9 -1. - <_> - 8 4 3 3 9. - <_> - - <_> - 13 0 21 1 -1. - <_> - 20 0 7 1 3. - <_> - - <_> - 9 3 11 8 -1. - <_> - 9 7 11 4 2. - <_> - - <_> - 38 5 6 2 -1. - <_> - 40 5 2 2 3. - <_> - - <_> - 8 9 16 1 -1. - <_> - 16 9 8 1 2. - <_> - - <_> - 18 0 15 10 -1. - <_> - 23 0 5 10 3. - <_> - - <_> - 3 9 4 2 -1. - <_> - 3 10 4 1 2. - <_> - - <_> - 31 5 2 2 -1. - <_> - 31 5 1 2 2. - <_> - - <_> - 12 0 20 6 -1. - <_> - 12 0 10 3 2. - <_> - 22 3 10 3 2. - <_> - - <_> - 31 0 10 6 -1. - <_> - 31 2 10 2 3. - <_> - - <_> - 7 10 4 1 -1. - <_> - 9 10 2 1 2. - <_> - - <_> - 25 0 15 4 -1. - <_> - 30 0 5 4 3. - <_> - - <_> - 5 10 6 1 -1. - <_> - 7 10 2 1 3. - <_> - - <_> - 38 5 4 4 -1. - <_> - 40 5 2 2 2. - <_> - 38 7 2 2 2. - <_> - - <_> - 3 5 4 4 -1. - <_> - 3 5 2 2 2. - <_> - 5 7 2 2 2. - <_> - - <_> - 15 2 18 9 -1. - <_> - 21 2 6 9 3. - <_> - - <_> - 12 0 15 11 -1. - <_> - 17 0 5 11 3. - <_> - - <_> - 8 1 6 1 -1. - <_> - 10 3 2 1 3. - 1 - <_> - - <_> - 9 0 27 7 -1. - <_> - 18 0 9 7 3. - <_> - - <_> - 10 2 3 4 -1. - <_> - 9 3 3 2 2. - 1 - <_> - - <_> - 18 3 9 8 -1. - <_> - 21 3 3 8 3. - <_> - - <_> - 0 5 11 6 -1. - <_> - 0 8 11 3 2. - <_> - - <_> - 1 3 44 8 -1. - <_> - 23 3 22 4 2. - <_> - 1 7 22 4 2. - <_> - - <_> - 0 4 4 4 -1. - <_> - 2 4 2 4 2. - <_> - - <_> - 24 3 11 8 -1. - <_> - 24 7 11 4 2. - <_> - - <_> - 3 1 39 9 -1. - <_> - 16 4 13 3 9. - <_> - - <_> - 24 7 11 4 -1. - <_> - 24 9 11 2 2. - <_> - - <_> - 11 4 22 6 -1. - <_> - 11 4 11 3 2. - <_> - 22 7 11 3 2. - <_> - - <_> - 33 9 6 2 -1. - <_> - 35 9 2 2 3. - <_> - - <_> - 6 0 7 6 -1. - <_> - 6 2 7 2 3. - <_> - - <_> - 24 0 6 1 -1. - <_> - 24 0 3 1 2. - <_> - - <_> - 4 1 10 3 -1. - <_> - 4 2 10 1 3. - <_> - - <_> - 36 9 9 2 -1. - <_> - 36 10 9 1 2. - <_> - - <_> - 7 9 4 2 -1. - <_> - 8 9 2 2 2. - <_> - - <_> - 18 9 10 2 -1. - <_> - 23 9 5 1 2. - <_> - 18 10 5 1 2. - <_> - - <_> - 7 0 30 6 -1. - <_> - 7 0 15 3 2. - <_> - 22 3 15 3 2. - <_> - - <_> - 21 5 3 6 -1. - <_> - 22 7 1 2 9. - <_> - - <_> - 16 9 10 2 -1. - <_> - 16 9 5 1 2. - <_> - 21 10 5 1 2. - <_> - - <_> - 24 9 11 2 -1. - <_> - 24 10 11 1 2. - <_> - - <_> - 5 2 7 3 -1. - <_> - 5 3 7 1 3. - <_> - - <_> - 26 0 4 1 -1. - <_> - 26 0 2 1 2. - <_> - - <_> - 15 0 4 1 -1. - <_> - 17 0 2 1 2. - <_> - - <_> - 26 0 11 4 -1. - <_> - 26 2 11 2 2. - <_> - - <_> - 7 3 22 3 -1. - <_> - 18 3 11 3 2. - <_> - - <_> - 32 1 4 6 -1. - <_> - 34 1 2 3 2. - <_> - 32 4 2 3 2. - <_> - - <_> - 9 1 4 6 -1. - <_> - 9 1 2 3 2. - <_> - 11 4 2 3 2. - <_> - - <_> - 17 0 12 11 -1. - <_> - 21 0 4 11 3. - <_> - - <_> - 1 3 11 8 -1. - <_> - 1 7 11 4 2. - <_> - - <_> - 25 9 11 2 -1. - <_> - 25 10 11 1 2. - <_> - - <_> - 1 4 6 4 -1. - <_> - 3 4 2 4 3. - <_> - - <_> - 24 1 11 8 -1. - <_> - 24 3 11 4 2. - <_> - - <_> - 4 0 32 7 -1. - <_> - 12 0 16 7 2. - <_> - - <_> - 8 0 30 8 -1. - <_> - 23 0 15 4 2. - <_> - 8 4 15 4 2. - <_> - - <_> - 19 2 6 9 -1. - <_> - 22 2 3 9 2. - <_> - - <_> - 17 0 26 2 -1. - <_> - 30 0 13 1 2. - <_> - 17 1 13 1 2. - <_> - - <_> - 20 0 1 2 -1. - <_> - 20 0 1 1 2. - 1 - <_> - - <_> - 38 9 6 2 -1. - <_> - 38 10 6 1 2. - <_> - - <_> - 1 9 8 2 -1. - <_> - 1 10 8 1 2. - <_> - - <_> - 31 0 11 4 -1. - <_> - 31 1 11 2 2. - <_> - - <_> - 7 8 6 3 -1. - <_> - 9 8 2 3 3. - <_> - - <_> - 36 3 4 4 -1. - <_> - 36 3 2 4 2. - <_> - - <_> - 17 0 2 3 -1. - <_> - 17 0 1 3 2. - 1 - <_> - - <_> - 25 1 11 6 -1. - <_> - 25 3 11 2 3. - <_> - - <_> - 16 10 12 1 -1. - <_> - 19 10 6 1 2. - <_> - - <_> - 11 1 32 4 -1. - <_> - 27 1 16 2 2. - <_> - 11 3 16 2 2. - <_> - - <_> - 10 1 11 6 -1. - <_> - 10 3 11 2 3. - <_> - - <_> - 39 2 5 3 -1. - <_> - 38 3 5 1 3. - 1 - <_> - - <_> - 10 7 11 4 -1. - <_> - 10 9 11 2 2. - <_> - - <_> - 39 2 5 3 -1. - <_> - 38 3 5 1 3. - 1 - <_> - - <_> - 4 8 2 1 -1. - <_> - 4 8 1 1 2. - 1 - <_> - - <_> - 39 2 5 3 -1. - <_> - 38 3 5 1 3. - 1 - <_> - - <_> - 6 2 3 5 -1. - <_> - 7 3 1 5 3. - 1 - <_> - - <_> - 35 9 4 2 -1. - <_> - 36 9 2 2 2. - <_> - - <_> - 15 1 12 10 -1. - <_> - 19 1 4 10 3. - <_> - - <_> - 5 3 32 3 -1. - <_> - 13 3 16 3 2. - <_> - - <_> - 30 5 6 2 -1. - <_> - 32 5 2 2 3. - <_> - - <_> - 17 2 6 5 -1. - <_> - 20 2 3 5 2. - <_> - - <_> - 35 2 4 3 -1. - <_> - 36 3 2 3 2. - 1 - <_> - - <_> - 0 6 5 4 -1. - <_> - 0 8 5 2 2. - <_> - - <_> - 33 4 6 4 -1. - <_> - 35 4 2 4 3. - <_> - - <_> - 12 5 2 2 -1. - <_> - 13 5 1 2 2. - <_> - - <_> - 21 1 24 6 -1. - <_> - 29 3 8 2 9. - <_> - - <_> - 8 3 10 8 -1. - <_> - 8 7 10 4 2. - <_> - - <_> - 13 0 21 1 -1. - <_> - 20 0 7 1 3. - <_> - - <_> - 9 2 6 3 -1. - <_> - 8 3 6 1 3. - 1 - <_> - - <_> - 16 2 18 8 -1. - <_> - 22 2 6 8 3. - <_> - - <_> - 3 9 1 2 -1. - <_> - 3 10 1 1 2. - <_> - - <_> - 27 4 2 5 -1. - <_> - 27 4 1 5 2. - 1 - <_> - - <_> - 2 0 36 10 -1. - <_> - 2 0 18 5 2. - <_> - 20 5 18 5 2. - <_> - - <_> - 26 1 2 1 -1. - <_> - 26 1 1 1 2. - <_> - - <_> - 15 2 12 9 -1. - <_> - 18 2 6 9 2. - <_> - - <_> - 31 4 9 6 -1. - <_> - 34 4 3 6 3. - <_> - - <_> - 5 0 10 6 -1. - <_> - 5 2 10 2 3. - <_> - - <_> - 35 2 3 4 -1. - <_> - 34 3 3 2 2. - 1 - <_> - - <_> - 5 9 6 2 -1. - <_> - 7 9 2 2 3. - <_> - - <_> - 40 5 4 2 -1. - <_> - 40 5 2 2 2. - <_> - - <_> - 19 0 3 3 -1. - <_> - 20 1 1 1 9. - <_> - - <_> - 31 0 11 4 -1. - <_> - 31 1 11 2 2. - <_> - - <_> - 5 0 15 1 -1. - <_> - 10 0 5 1 3. - <_> - - <_> - 17 8 12 2 -1. - <_> - 23 8 6 1 2. - <_> - 17 9 6 1 2. - <_> - - <_> - 19 2 6 9 -1. - <_> - 22 2 3 9 2. - <_> - - <_> - 32 1 6 10 -1. - <_> - 34 1 2 10 3. - <_> - - <_> - 5 2 9 6 -1. - <_> - 8 4 3 2 9. - <_> - - <_> - 29 0 2 3 -1. - <_> - 28 1 2 1 3. - 1 - <_> - - <_> - 16 0 3 2 -1. - <_> - 17 1 1 2 3. - 1 - <_> - - <_> - 34 8 6 3 -1. - <_> - 36 8 2 3 3. - <_> - - <_> - 2 5 2 1 -1. - <_> - 3 5 1 1 2. - <_> - - <_> - 6 3 33 2 -1. - <_> - 17 3 11 2 3. - <_> - - <_> - 35 2 4 3 -1. - <_> - 36 3 2 3 2. - 1 - <_> - - <_> - 5 5 9 2 -1. - <_> - 8 5 3 2 3. - <_> - - <_> - 17 1 12 10 -1. - <_> - 21 1 4 10 3. - <_> - - <_> - 0 4 11 6 -1. - <_> - 0 7 11 3 2. - <_> - - <_> - 29 9 11 2 -1. - <_> - 29 10 11 1 2. - <_> - - <_> - 17 1 2 1 -1. - <_> - 18 1 1 1 2. - <_> - - <_> - 31 0 11 4 -1. - <_> - 31 1 11 2 2. - <_> - - <_> - 2 1 32 6 -1. - <_> - 2 1 16 3 2. - <_> - 18 4 16 3 2. - <_> - - <_> - 21 9 6 2 -1. - <_> - 24 9 3 1 2. - <_> - 21 10 3 1 2. - <_> - - <_> - 17 9 10 2 -1. - <_> - 17 9 5 1 2. - <_> - 22 10 5 1 2. - <_> - - <_> - 41 4 4 6 -1. - <_> - 41 4 2 6 2. - <_> - - <_> - 4 0 10 6 -1. - <_> - 4 2 10 2 3. - <_> - - <_> - 13 0 21 1 -1. - <_> - 20 0 7 1 3. - <_> - - <_> - 3 0 39 9 -1. - <_> - 16 3 13 3 9. - <_> - - <_> - 30 9 11 2 -1. - <_> - 30 10 11 1 2. - <_> - - <_> - 5 9 11 2 -1. - <_> - 5 10 11 1 2. - <_> - - <_> - 20 9 8 2 -1. - <_> - 24 9 4 1 2. - <_> - 20 10 4 1 2. - <_> - - <_> - 1 5 6 3 -1. - <_> - 3 5 2 3 3. - <_> - - <_> - 29 0 6 3 -1. - <_> - 31 0 2 3 3. - <_> - - <_> - 3 0 39 9 -1. - <_> - 16 3 13 3 9. - <_> - - <_> - 34 1 5 3 -1. - <_> - 34 2 5 1 3. - <_> - - <_> - 10 0 6 3 -1. - <_> - 12 0 2 3 3. - <_> - - <_> - 33 1 8 3 -1. - <_> - 33 2 8 1 3. - <_> - - <_> - 16 9 10 2 -1. - <_> - 16 9 5 1 2. - <_> - 21 10 5 1 2. - <_> - - <_> - 19 5 9 6 -1. - <_> - 22 5 3 6 3. - <_> - - <_> - 16 9 12 2 -1. - <_> - 20 9 4 2 3. - <_> - - <_> - 24 10 20 1 -1. - <_> - 24 10 10 1 2. - <_> - - <_> - 18 0 2 1 -1. - <_> - 18 0 1 1 2. - 1 - <_> - - <_> - 24 10 20 1 -1. - <_> - 24 10 10 1 2. - <_> - - <_> - 0 0 1 8 -1. - <_> - 0 4 1 4 2. - <_> - - <_> - 24 10 20 1 -1. - <_> - 24 10 10 1 2. - <_> - - <_> - 1 10 20 1 -1. - <_> - 11 10 10 1 2. - <_> - - <_> - 42 7 3 4 -1. - <_> - 42 9 3 2 2. - <_> - - <_> - 6 9 6 2 -1. - <_> - 8 9 2 2 3. - <_> - - <_> - 33 1 6 3 -1. - <_> - 33 2 6 1 3. - <_> - - <_> - 12 4 3 2 -1. - <_> - 13 5 1 2 3. - 1 - <_> - - <_> - 26 1 11 8 -1. - <_> - 26 3 11 4 2. - <_> - - <_> - 3 4 30 3 -1. - <_> - 18 4 15 3 2. - <_> - - <_> - 17 0 12 9 -1. - <_> - 21 0 4 9 3. - <_> - - <_> - 2 0 9 4 -1. - <_> - 2 1 9 2 2. - <_> - - <_> - 19 0 12 1 -1. - <_> - 22 0 6 1 2. - <_> - - <_> - 7 0 28 5 -1. - <_> - 14 0 14 5 2. - <_> - - <_> - 26 5 11 6 -1. - <_> - 26 8 11 3 2. - <_> - - <_> - 4 5 4 2 -1. - <_> - 5 5 2 2 2. - <_> - - <_> - 40 7 5 4 -1. - <_> - 40 9 5 2 2. - <_> - - <_> - 5 5 34 6 -1. - <_> - 5 5 17 3 2. - <_> - 22 8 17 3 2. - <_> - - <_> - 7 2 38 3 -1. - <_> - 7 2 19 3 2. - <_> - - <_> - 3 8 1 2 -1. - <_> - 3 9 1 1 2. - <_> - - <_> - 31 7 2 2 -1. - <_> - 31 7 1 2 2. - 1 - <_> - - <_> - 0 0 45 9 -1. - <_> - 15 3 15 3 9. - <_> - - <_> - 35 9 6 2 -1. - <_> - 37 9 2 2 3. - <_> - - <_> - 4 9 6 2 -1. - <_> - 6 9 2 2 3. - <_> - - <_> - 19 5 9 6 -1. - <_> - 22 5 3 6 3. - <_> - - <_> - 7 2 3 3 -1. - <_> - 7 3 3 1 3. - <_> - - <_> - 22 9 2 2 -1. - <_> - 23 9 1 1 2. - <_> - 22 10 1 1 2. - <_> - - <_> - 5 3 8 2 -1. - <_> - 5 4 8 1 2. - <_> - - <_> - 20 2 8 9 -1. - <_> - 22 2 4 9 2. - <_> - - <_> - 3 9 8 2 -1. - <_> - 5 9 4 2 2. - <_> - - <_> - 32 3 6 7 -1. - <_> - 34 3 2 7 3. - <_> - - <_> - 5 0 8 2 -1. - <_> - 9 0 4 2 2. - <_> - - <_> - 12 0 22 6 -1. - <_> - 23 0 11 3 2. - <_> - 12 3 11 3 2. - <_> - - <_> - 14 1 16 6 -1. - <_> - 14 1 8 3 2. - <_> - 22 4 8 3 2. - <_> - - <_> - 30 0 6 4 -1. - <_> - 32 0 2 4 3. - <_> - - <_> - 4 4 4 2 -1. - <_> - 4 4 2 1 2. - <_> - 6 5 2 1 2. - <_> - - <_> - 30 0 6 4 -1. - <_> - 32 0 2 4 3. - <_> - - <_> - 9 0 6 4 -1. - <_> - 11 0 2 4 3. - <_> - - <_> - 22 9 2 2 -1. - <_> - 23 9 1 1 2. - <_> - 22 10 1 1 2. - <_> - - <_> - 17 5 9 6 -1. - <_> - 20 5 3 6 3. - <_> - - <_> - 30 5 4 2 -1. - <_> - 31 5 2 2 2. - <_> - - <_> - 2 1 2 2 -1. - <_> - 2 1 2 1 2. - 1 - <_> - - <_> - 19 7 12 4 -1. - <_> - 23 7 4 4 3. - <_> - - <_> - 7 2 10 6 -1. - <_> - 7 4 10 2 3. - <_> - - <_> - 11 5 3 2 -1. - <_> - 12 5 1 2 3. - <_> - - <_> - 8 3 30 2 -1. - <_> - 18 3 10 2 3. - <_> - - <_> - 6 0 6 4 -1. - <_> - 6 1 6 2 2. - <_> - - <_> - 7 3 32 8 -1. - <_> - 23 3 16 4 2. - <_> - 7 7 16 4 2. - <_> - - <_> - 7 3 3 8 -1. - <_> - 7 7 3 4 2. - <_> - - <_> - 17 0 12 11 -1. - <_> - 21 0 4 11 3. - <_> - - <_> - 0 9 3 2 -1. - <_> - 0 10 3 1 2. - <_> - - <_> - 31 5 9 6 -1. - <_> - 34 5 3 6 3. - <_> - - <_> - 6 1 2 6 -1. - <_> - 4 3 2 2 3. - 1 - <_> - - <_> - 27 1 2 1 -1. - <_> - 27 1 1 1 2. - <_> - - <_> - 16 0 8 1 -1. - <_> - 18 0 4 1 2. - <_> - - <_> - 33 2 6 3 -1. - <_> - 33 3 6 1 3. - <_> - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - <_> - - <_> - 31 5 9 6 -1. - <_> - 34 5 3 6 3. - <_> - - <_> - 5 5 9 6 -1. - <_> - 8 5 3 6 3. - <_> - - <_> - 21 9 4 2 -1. - <_> - 23 9 2 1 2. - <_> - 21 10 2 1 2. - <_> - - <_> - 15 5 12 6 -1. - <_> - 19 5 4 6 3. - <_> - - <_> - 20 0 6 11 -1. - <_> - 20 0 3 11 2. - <_> - - <_> - 1 7 32 2 -1. - <_> - 9 7 16 2 2. - <_> - - <_> - 24 7 11 4 -1. - <_> - 24 9 11 2 2. - <_> - - <_> - 6 1 7 4 -1. - <_> - 6 2 7 2 2. - <_> - - <_> - 34 0 5 3 -1. - <_> - 34 1 5 1 3. - <_> - - <_> - 6 0 5 3 -1. - <_> - 6 1 5 1 3. - <_> - - <_> - 35 9 4 2 -1. - <_> - 36 9 2 2 2. - <_> - - <_> - 16 1 2 2 -1. - <_> - 16 1 1 2 2. - 1 - <_> - - <_> - 7 0 34 8 -1. - <_> - 24 0 17 4 2. - <_> - 7 4 17 4 2. - <_> - - <_> - 17 0 2 3 -1. - <_> - 17 0 1 3 2. - 1 - <_> - - <_> - 35 9 4 2 -1. - <_> - 36 9 2 2 2. - <_> - - <_> - 8 0 9 2 -1. - <_> - 11 0 3 2 3. - <_> - - <_> - 34 6 4 3 -1. - <_> - 34 7 4 1 3. - <_> - - <_> - 20 9 4 2 -1. - <_> - 20 9 2 1 2. - <_> - 22 10 2 1 2. - <_> - - <_> - 34 9 6 2 -1. - <_> - 36 9 2 2 3. - <_> - - <_> - 18 2 8 9 -1. - <_> - 22 2 4 9 2. - <_> - - <_> - 21 5 12 6 -1. - <_> - 25 5 4 6 3. - <_> - - <_> - 14 7 8 4 -1. - <_> - 16 7 4 4 2. - <_> - - <_> - 25 1 6 4 -1. - <_> - 25 1 3 4 2. - 1 - <_> - - <_> - 15 7 2 2 -1. - <_> - 15 7 2 1 2. - 1 - <_> - - <_> - 24 7 11 4 -1. - <_> - 24 9 11 2 2. - <_> - - <_> - 10 7 11 4 -1. - <_> - 10 9 11 2 2. - <_> - - <_> - 32 5 3 2 -1. - <_> - 33 5 1 2 3. - <_> - - <_> - 15 9 2 2 -1. - <_> - 15 9 1 1 2. - <_> - 16 10 1 1 2. - <_> - - <_> - 11 2 3 4 -1. - <_> - 12 3 1 4 3. - 1 - <_> - - <_> - 21 0 12 5 -1. - <_> - 21 0 6 5 2. - <_> - - <_> - 6 4 3 4 -1. - <_> - 6 6 3 2 2. - <_> - - <_> - 38 7 7 4 -1. - <_> - 38 9 7 2 2. - <_> - - <_> - 21 4 3 4 -1. - <_> - 21 4 3 2 2. - 1 - <_> - - <_> - 35 0 7 4 -1. - <_> - 35 1 7 2 2. - <_> - - <_> - 0 7 6 4 -1. - <_> - 0 9 6 2 2. - <_> - - <_> - 33 3 6 8 -1. - <_> - 35 3 2 8 3. - <_> - - <_> - 15 0 4 1 -1. - <_> - 17 0 2 1 2. - <_> - - <_> - 30 2 12 9 -1. - <_> - 34 2 4 9 3. - <_> - - <_> - 5 2 3 3 -1. - <_> - 6 3 1 3 3. - 1 - <_> - - <_> - 30 3 12 8 -1. - <_> - 34 3 4 8 3. - <_> - - <_> - 3 3 12 8 -1. - <_> - 7 3 4 8 3. - <_> - - <_> - 24 8 2 2 -1. - <_> - 25 8 1 1 2. - <_> - 24 9 1 1 2. - <_> - - <_> - 19 8 2 2 -1. - <_> - 19 8 1 1 2. - <_> - 20 9 1 1 2. - <_> - - <_> - 24 8 2 2 -1. - <_> - 25 8 1 1 2. - <_> - 24 9 1 1 2. - <_> - - <_> - 19 8 2 2 -1. - <_> - 19 8 1 1 2. - <_> - 20 9 1 1 2. - <_> - - <_> - 20 0 22 2 -1. - <_> - 31 0 11 1 2. - <_> - 20 1 11 1 2. - <_> - - <_> - 3 0 22 2 -1. - <_> - 3 0 11 1 2. - <_> - 14 1 11 1 2. - <_> - - <_> - 29 0 3 9 -1. - <_> - 30 3 1 3 9. - <_> - - <_> - 12 4 6 3 -1. - <_> - 14 4 2 3 3. - <_> - - <_> - 41 0 4 2 -1. - <_> - 42 1 2 2 2. - 1 - <_> - - <_> - 6 9 4 2 -1. - <_> - 7 9 2 2 2. - <_> - - <_> - 21 5 12 4 -1. - <_> - 25 5 4 4 3. - <_> - - <_> - 10 0 11 9 -1. - <_> - 10 3 11 3 3. - <_> - - <_> - 1 4 44 6 -1. - <_> - 23 4 22 3 2. - <_> - 1 7 22 3 2. - <_> - - <_> - 1 1 42 9 -1. - <_> - 15 4 14 3 9. - <_> - - <_> - 39 4 3 2 -1. - <_> - 40 5 1 2 3. - 1 - <_> - - <_> - 1 3 2 6 -1. - <_> - 2 3 1 6 2. - <_> - - <_> - 33 3 3 3 -1. - <_> - 32 4 3 1 3. - 1 - <_> - - <_> - 16 0 12 11 -1. - <_> - 22 0 6 11 2. - <_> - - <_> - 24 6 11 4 -1. - <_> - 24 8 11 2 2. - <_> - - <_> - 15 9 12 1 -1. - <_> - 19 9 4 1 3. - <_> - - <_> - 33 3 3 3 -1. - <_> - 32 4 3 1 3. - 1 - <_> - - <_> - 12 3 3 3 -1. - <_> - 13 4 1 3 3. - 1 - <_> - - <_> - 30 0 6 2 -1. - <_> - 32 0 2 2 3. - <_> - - <_> - 10 9 4 2 -1. - <_> - 10 10 4 1 2. - <_> - - <_> - 42 0 2 3 -1. - <_> - 42 0 1 3 2. - 1 - <_> - - <_> - 3 0 3 2 -1. - <_> - 3 0 3 1 2. - 1 - <_> - - <_> - 37 2 3 4 -1. - <_> - 37 3 3 2 2. - <_> - - <_> - 5 0 9 4 -1. - <_> - 5 1 9 2 2. - <_> - - <_> - 43 9 2 2 -1. - <_> - 43 10 2 1 2. - <_> - - <_> - 14 0 14 2 -1. - <_> - 14 0 7 1 2. - <_> - 21 1 7 1 2. - <_> - - <_> - 34 6 4 2 -1. - <_> - 34 7 4 1 2. - <_> - - <_> - 18 0 8 1 -1. - <_> - 20 0 4 1 2. - <_> - - <_> - 23 6 4 4 -1. - <_> - 23 6 2 4 2. - <_> - - <_> - 0 9 44 2 -1. - <_> - 0 9 22 1 2. - <_> - 22 10 22 1 2. - <_> - - <_> - 10 0 32 5 -1. - <_> - 10 0 16 5 2. - <_> - - <_> - 3 0 32 5 -1. - <_> - 19 0 16 5 2. - <_> - - <_> - 12 4 3 3 -1. - <_> - 13 5 1 3 3. - 1 - <_> - - <_> - 19 0 18 7 -1. - <_> - 19 0 9 7 2. - <_> - - <_> - 10 2 3 4 -1. - <_> - 9 3 3 2 2. - 1 - <_> - - <_> - 24 2 2 1 -1. - <_> - 24 2 1 1 2. - <_> - - <_> - 5 2 10 4 -1. - <_> - 5 3 10 2 2. - <_> - - <_> - 12 0 26 9 -1. - <_> - 12 0 13 9 2. - <_> - - <_> - 1 9 6 2 -1. - <_> - 1 10 6 1 2. - <_> - - <_> - 24 2 2 1 -1. - <_> - 24 2 1 1 2. - <_> - - <_> - 18 3 9 8 -1. - <_> - 21 3 3 8 3. - <_> - - <_> - 26 5 11 6 -1. - <_> - 26 8 11 3 2. - <_> - - <_> - 11 5 22 4 -1. - <_> - 11 5 11 2 2. - <_> - 22 7 11 2 2. - <_> - - <_> - 14 0 20 6 -1. - <_> - 24 0 10 3 2. - <_> - 14 3 10 3 2. - <_> - - <_> - 7 0 12 3 -1. - <_> - 11 0 4 3 3. - <_> - - <_> - 41 7 4 4 -1. - <_> - 41 8 4 2 2. - <_> - - <_> - 1 3 6 6 -1. - <_> - 3 5 2 2 9. - <_> - - <_> - 28 0 6 4 -1. - <_> - 30 0 2 4 3. - <_> - - <_> - 10 0 6 4 -1. - <_> - 12 0 2 4 3. - <_> - - <_> - 40 2 3 3 -1. - <_> - 39 3 3 1 3. - 1 - <_> - - <_> - 10 1 11 8 -1. - <_> - 10 3 11 4 2. - <_> - - <_> - 22 8 2 2 -1. - <_> - 23 8 1 1 2. - <_> - 22 9 1 1 2. - <_> - - <_> - 7 3 3 3 -1. - <_> - 7 4 3 1 3. - <_> - - <_> - 19 0 8 11 -1. - <_> - 19 0 4 11 2. - <_> - - <_> - 0 10 22 1 -1. - <_> - 11 10 11 1 2. - <_> - - <_> - 12 0 24 6 -1. - <_> - 24 0 12 3 2. - <_> - 12 3 12 3 2. - <_> - - <_> - 19 5 4 2 -1. - <_> - 19 5 4 1 2. - 1 - <_> - - <_> - 40 3 3 3 -1. - <_> - 39 4 3 1 3. - 1 - <_> - - <_> - 2 4 6 1 -1. - <_> - 2 4 3 1 2. - 1 - <_> - - <_> - 35 3 10 6 -1. - <_> - 35 3 5 6 2. - <_> - - <_> - 5 2 6 3 -1. - <_> - 5 3 6 1 3. - <_> - - <_> - 18 2 18 9 -1. - <_> - 24 2 6 9 3. - <_> - - <_> - 0 0 1 8 -1. - <_> - 0 4 1 4 2. - <_> - - <_> - 27 0 2 2 -1. - <_> - 27 0 2 1 2. - 1 - <_> - - <_> - 7 1 26 4 -1. - <_> - 7 1 13 2 2. - <_> - 20 3 13 2 2. - <_> - - <_> - 34 8 9 3 -1. - <_> - 37 8 3 3 3. - <_> - - <_> - 2 8 9 3 -1. - <_> - 5 8 3 3 3. - <_> - - <_> - 22 8 2 2 -1. - <_> - 23 8 1 1 2. - <_> - 22 9 1 1 2. - <_> - - <_> - 5 3 3 3 -1. - <_> - 6 4 1 3 3. - 1 - <_> - - <_> - 35 3 10 3 -1. - <_> - 35 3 5 3 2. - <_> - - <_> - 19 2 2 1 -1. - <_> - 20 2 1 1 2. - <_> - - <_> - 21 3 12 8 -1. - <_> - 24 3 6 8 2. - <_> - - <_> - 0 3 10 3 -1. - <_> - 5 3 5 3 2. - <_> - - <_> - 19 6 9 5 -1. - <_> - 22 6 3 5 3. - <_> - - <_> - 19 0 6 11 -1. - <_> - 22 0 3 11 2. - <_> - - <_> - 21 0 3 9 -1. - <_> - 22 3 1 3 9. - <_> - - <_> - 12 5 2 2 -1. - <_> - 12 5 1 1 2. - <_> - 13 6 1 1 2. - <_> - - <_> - 20 9 8 2 -1. - <_> - 24 9 4 1 2. - <_> - 20 10 4 1 2. - <_> - - <_> - 13 7 2 2 -1. - <_> - 13 7 2 1 2. - 1 - <_> - - <_> - 31 5 3 3 -1. - <_> - 30 6 3 1 3. - 1 - <_> - - <_> - 8 1 3 3 -1. - <_> - 8 2 3 1 3. - <_> - - <_> - 34 1 4 3 -1. - <_> - 34 2 4 1 3. - <_> - - <_> - 7 1 5 3 -1. - <_> - 7 2 5 1 3. - <_> - - <_> - 31 1 1 2 -1. - <_> - 31 1 1 1 2. - 1 - <_> - - <_> - 21 8 2 2 -1. - <_> - 21 8 1 1 2. - <_> - 22 9 1 1 2. - <_> - - <_> - 26 9 10 2 -1. - <_> - 26 10 10 1 2. - <_> - - <_> - 9 0 6 3 -1. - <_> - 11 2 2 3 3. - 1 - <_> - - <_> - 21 0 12 4 -1. - <_> - 21 0 6 4 2. - <_> - - <_> - 12 5 2 6 -1. - <_> - 12 5 1 3 2. - <_> - 13 8 1 3 2. - <_> - - <_> - 12 4 30 3 -1. - <_> - 12 4 15 3 2. - <_> - - <_> - 4 4 30 3 -1. - <_> - 19 4 15 3 2. - <_> - - <_> - 39 5 6 6 -1. - <_> - 39 8 6 3 2. - <_> - - <_> - 2 3 6 4 -1. - <_> - 2 3 3 2 2. - <_> - 5 5 3 2 2. - <_> - - <_> - 25 0 4 1 -1. - <_> - 25 0 2 1 2. - <_> - - <_> - 12 10 12 1 -1. - <_> - 15 10 6 1 2. - <_> - - <_> - 27 1 2 1 -1. - <_> - 27 1 1 1 2. - <_> - - <_> - 16 1 2 1 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 20 0 18 2 -1. - <_> - 29 0 9 1 2. - <_> - 20 1 9 1 2. - <_> - - <_> - 16 9 8 2 -1. - <_> - 16 9 4 1 2. - <_> - 20 10 4 1 2. - <_> - - <_> - 35 2 4 5 -1. - <_> - 36 3 2 5 2. - 1 - <_> - - <_> - 7 0 6 3 -1. - <_> - 9 0 2 3 3. - <_> - - <_> - 39 3 4 3 -1. - <_> - 38 4 4 1 3. - 1 - <_> - - <_> - 14 8 1 2 -1. - <_> - 14 8 1 1 2. - 1 - <_> - - <_> - 31 7 2 2 -1. - <_> - 31 7 1 2 2. - 1 - <_> - - <_> - 14 7 2 2 -1. - <_> - 14 7 2 1 2. - 1 - <_> - - <_> - 32 0 6 9 -1. - <_> - 34 0 2 9 3. - <_> - - <_> - 12 3 3 3 -1. - <_> - 13 4 1 3 3. - 1 - <_> - - <_> - 14 1 18 4 -1. - <_> - 23 1 9 2 2. - <_> - 14 3 9 2 2. - <_> - - <_> - 8 0 4 3 -1. - <_> - 9 0 2 3 2. - <_> - - <_> - 39 3 4 3 -1. - <_> - 38 4 4 1 3. - 1 - <_> - - <_> - 6 3 3 4 -1. - <_> - 7 4 1 4 3. - 1 - <_> - - <_> - 44 0 1 8 -1. - <_> - 44 4 1 4 2. - <_> - - <_> - 0 5 6 6 -1. - <_> - 0 8 6 3 2. - <_> - - <_> - 27 0 2 2 -1. - <_> - 27 0 2 1 2. - 1 - <_> - - <_> - 18 0 2 2 -1. - <_> - 18 0 1 2 2. - 1 - <_> - - <_> - 20 3 12 8 -1. - <_> - 24 3 4 8 3. - <_> - - <_> - 9 0 5 2 -1. - <_> - 9 1 5 1 2. - <_> - - <_> - 34 0 4 3 -1. - <_> - 34 1 4 1 3. - <_> - - <_> - 0 5 1 6 -1. - <_> - 0 8 1 3 2. - <_> - - <_> - 22 9 2 2 -1. - <_> - 23 9 1 1 2. - <_> - 22 10 1 1 2. - <_> - - <_> - 3 9 1 2 -1. - <_> - 3 10 1 1 2. - <_> - - <_> - 10 3 26 6 -1. - <_> - 23 3 13 3 2. - <_> - 10 6 13 3 2. - <_> - - <_> - 10 0 11 8 -1. - <_> - 10 2 11 4 2. - <_> - - <_> - 40 2 3 3 -1. - <_> - 39 3 3 1 3. - 1 - <_> - - <_> - 4 0 20 2 -1. - <_> - 9 0 10 2 2. - <_> - - <_> - 21 3 12 8 -1. - <_> - 25 3 4 8 3. - <_> - - <_> - 12 3 12 8 -1. - <_> - 16 3 4 8 3. - <_> - - <_> - 15 10 15 1 -1. - <_> - 20 10 5 1 3. - <_> - - <_> - 5 2 3 3 -1. - <_> - 6 3 1 3 3. - 1 - <_> - - <_> - 35 2 4 3 -1. - <_> - 36 3 2 3 2. - 1 - <_> - - <_> - 2 3 2 6 -1. - <_> - 3 3 1 6 2. - <_> - - <_> - 18 9 10 2 -1. - <_> - 23 9 5 1 2. - <_> - 18 10 5 1 2. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 36 8 4 3 -1. - <_> - 37 8 2 3 2. - <_> - - <_> - 20 3 4 8 -1. - <_> - 22 3 2 8 2. - <_> - - <_> - 36 9 4 2 -1. - <_> - 37 9 2 2 2. - <_> - - <_> - 15 5 9 6 -1. - <_> - 18 5 3 6 3. - <_> - - <_> - 28 0 4 4 -1. - <_> - 29 0 2 4 2. - <_> - - <_> - 7 2 3 3 -1. - <_> - 7 3 3 1 3. - <_> - - <_> - 33 2 6 1 -1. - <_> - 35 4 2 1 3. - 1 - <_> - - <_> - 6 0 6 3 -1. - <_> - 6 1 6 1 3. - <_> - - <_> - 28 0 4 4 -1. - <_> - 29 0 2 4 2. - <_> - - <_> - 13 0 4 4 -1. - <_> - 14 0 2 4 2. - <_> - - <_> - 33 2 6 1 -1. - <_> - 35 4 2 1 3. - 1 - <_> - - <_> - 12 2 1 6 -1. - <_> - 10 4 1 2 3. - 1 - <_> - - <_> - 35 1 2 3 -1. - <_> - 35 2 2 1 3. - <_> - - <_> - 19 8 2 2 -1. - <_> - 19 8 1 1 2. - <_> - 20 9 1 1 2. - <_> - - <_> - 43 6 1 4 -1. - <_> - 43 6 1 2 2. - 1 - <_> - - <_> - 2 6 4 1 -1. - <_> - 2 6 2 1 2. - 1 - <_> - - <_> - 4 3 32 3 -1. - <_> - 12 3 16 3 2. - <_> - - <_> - 32 5 6 2 -1. - <_> - 34 5 2 2 3. - <_> - - <_> - 15 0 8 7 -1. - <_> - 19 0 4 7 2. - <_> - - <_> - 35 2 4 3 -1. - <_> - 36 3 2 3 2. - 1 - <_> - - <_> - 15 2 2 3 -1. - <_> - 14 3 2 1 3. - 1 - <_> - - <_> - 42 5 2 3 -1. - <_> - 42 5 1 3 2. - 1 - <_> - - <_> - 0 1 4 6 -1. - <_> - 0 1 2 3 2. - <_> - 2 4 2 3 2. - <_> - - <_> - 13 0 21 1 -1. - <_> - 20 0 7 1 3. - <_> - - <_> - 9 4 1 6 -1. - <_> - 9 7 1 3 2. - <_> - - <_> - 25 9 11 2 -1. - <_> - 25 10 11 1 2. - <_> - - <_> - 9 1 26 8 -1. - <_> - 9 1 13 4 2. - <_> - 22 5 13 4 2. - <_> - - <_> - 19 5 8 6 -1. - <_> - 21 5 4 6 2. - <_> - - <_> - 15 3 12 8 -1. - <_> - 21 3 6 8 2. - <_> - - <_> - 20 0 6 1 -1. - <_> - 22 0 2 1 3. - <_> - - <_> - 7 0 12 2 -1. - <_> - 7 0 6 1 2. - <_> - 13 1 6 1 2. - <_> - - <_> - 33 9 6 2 -1. - <_> - 35 9 2 2 3. - <_> - - <_> - 11 0 6 5 -1. - <_> - 13 0 2 5 3. - <_> - - <_> - 32 1 6 10 -1. - <_> - 34 1 2 10 3. - <_> - - <_> - 7 1 6 10 -1. - <_> - 9 1 2 10 3. - <_> - - <_> - 27 0 9 3 -1. - <_> - 30 0 3 3 3. - <_> - - <_> - 9 3 2 3 -1. - <_> - 8 4 2 1 3. - 1 - <_> - - <_> - 41 0 3 2 -1. - <_> - 42 1 1 2 3. - 1 - <_> - - <_> - 6 0 5 6 -1. - <_> - 6 2 5 2 3. - <_> - - <_> - 27 0 9 3 -1. - <_> - 30 0 3 3 3. - <_> - - <_> - 9 0 9 3 -1. - <_> - 12 0 3 3 3. - <_> - - <_> - 32 9 6 2 -1. - <_> - 34 9 2 2 3. - <_> - - <_> - 7 9 6 2 -1. - <_> - 9 9 2 2 3. - <_> - - <_> - 26 10 6 1 -1. - <_> - 26 10 3 1 2. - <_> - - <_> - 2 0 3 2 -1. - <_> - 2 0 3 1 2. - 1 - <_> - - <_> - 32 5 3 3 -1. - <_> - 31 6 3 1 3. - 1 - <_> - - <_> - 16 9 8 2 -1. - <_> - 16 9 4 1 2. - <_> - 20 10 4 1 2. - <_> - - <_> - 18 2 12 9 -1. - <_> - 22 2 4 9 3. - <_> - - <_> - 8 3 2 3 -1. - <_> - 8 4 2 1 3. - <_> - - <_> - 43 5 2 4 -1. - <_> - 43 7 2 2 2. - <_> - - <_> - 8 3 2 3 -1. - <_> - 8 4 2 1 3. - <_> - - <_> - 15 4 16 2 -1. - <_> - 23 4 8 1 2. - <_> - 15 5 8 1 2. - <_> - - <_> - 12 5 16 2 -1. - <_> - 16 5 8 2 2. - <_> - - <_> - 19 2 9 9 -1. - <_> - 22 2 3 9 3. - <_> - - <_> - 19 9 2 2 -1. - <_> - 19 9 1 1 2. - <_> - 20 10 1 1 2. - <_> - - <_> - 20 1 8 10 -1. - <_> - 22 1 4 10 2. - <_> - - <_> - 0 2 39 9 -1. - <_> - 13 5 13 3 9. - <_> - - <_> - 32 5 3 3 -1. - <_> - 31 6 3 1 3. - 1 - <_> - - <_> - 8 9 4 2 -1. - <_> - 9 9 2 2 2. - <_> - - <_> - 32 5 3 3 -1. - <_> - 31 6 3 1 3. - 1 - <_> - - <_> - 13 5 3 3 -1. - <_> - 14 6 1 3 3. - 1 - <_> - - <_> - 24 2 11 6 -1. - <_> - 24 4 11 2 3. - <_> - - <_> - 5 2 3 4 -1. - <_> - 6 3 1 4 3. - 1 - <_> - - <_> - 39 1 3 9 -1. - <_> - 40 4 1 3 9. - <_> - - <_> - 17 2 9 9 -1. - <_> - 20 2 3 9 3. - <_> - - <_> - 20 8 8 2 -1. - <_> - 22 8 4 2 2. - <_> - - <_> - 18 7 8 4 -1. - <_> - 20 7 4 4 2. - <_> - - <_> - 8 5 30 6 -1. - <_> - 23 5 15 3 2. - <_> - 8 8 15 3 2. - <_> - - <_> - 0 7 5 2 -1. - <_> - 0 8 5 1 2. - <_> - - <_> - 23 6 1 4 -1. - <_> - 22 7 1 2 2. - 1 - <_> - - <_> - 3 5 3 2 -1. - <_> - 4 5 1 2 3. - <_> - - <_> - 21 0 6 1 -1. - <_> - 23 0 2 1 3. - <_> - - <_> - 2 3 2 7 -1. - <_> - 3 3 1 7 2. - <_> - - <_> - 18 2 24 2 -1. - <_> - 30 2 12 1 2. - <_> - 18 3 12 1 2. - <_> - - <_> - 0 3 3 4 -1. - <_> - 0 4 3 2 2. - <_> - - <_> - 34 0 3 3 -1. - <_> - 34 1 3 1 3. - <_> - - <_> - 17 1 2 2 -1. - <_> - 17 1 1 2 2. - 1 - <_> - - <_> - 34 0 3 3 -1. - <_> - 34 1 3 1 3. - <_> - - <_> - 21 9 2 2 -1. - <_> - 21 9 1 1 2. - <_> - 22 10 1 1 2. - <_> - - <_> - 25 9 2 2 -1. - <_> - 26 9 1 1 2. - <_> - 25 10 1 1 2. - <_> - - <_> - 18 9 2 2 -1. - <_> - 18 9 1 1 2. - <_> - 19 10 1 1 2. - <_> - - <_> - 31 4 2 2 -1. - <_> - 32 4 1 1 2. - <_> - 31 5 1 1 2. - <_> - - <_> - 4 2 1 4 -1. - <_> - 3 3 1 2 2. - 1 - <_> - - <_> - 31 4 2 2 -1. - <_> - 32 4 1 1 2. - <_> - 31 5 1 1 2. - <_> - - <_> - 9 1 4 6 -1. - <_> - 9 1 2 3 2. - <_> - 11 4 2 3 2. - <_> - - <_> - 19 0 20 7 -1. - <_> - 19 0 10 7 2. - <_> - - <_> - 4 2 4 3 -1. - <_> - 5 3 2 3 2. - 1 - <_> - - <_> - 23 6 4 1 -1. - <_> - 23 6 2 1 2. - 1 - <_> - - <_> - 0 1 2 10 -1. - <_> - 0 6 2 5 2. - <_> - - <_> - 1 10 44 1 -1. - <_> - 1 10 22 1 2. - <_> - - <_> - 12 4 4 4 -1. - <_> - 13 4 2 4 2. - <_> - - <_> - 30 2 12 5 -1. - <_> - 33 2 6 5 2. - <_> - - <_> - 12 2 3 4 -1. - <_> - 13 3 1 4 3. - 1 - <_> - - <_> - 25 9 11 2 -1. - <_> - 25 10 11 1 2. - <_> - - <_> - 17 1 2 1 -1. - <_> - 18 1 1 1 2. - <_> - - <_> - 33 2 4 3 -1. - <_> - 33 3 4 1 3. - <_> - - <_> - 18 0 2 3 -1. - <_> - 18 0 1 3 2. - 1 - <_> - - <_> - 35 0 6 6 -1. - <_> - 35 0 3 6 2. - <_> - - <_> - 4 0 6 6 -1. - <_> - 7 0 3 6 2. - <_> - - <_> - 22 9 2 2 -1. - <_> - 23 9 1 1 2. - <_> - 22 10 1 1 2. - <_> - - <_> - 11 5 3 2 -1. - <_> - 12 5 1 2 3. - <_> - - <_> - 24 9 11 2 -1. - <_> - 24 10 11 1 2. - <_> - - <_> - 16 0 12 1 -1. - <_> - 19 0 6 1 2. - <_> - - <_> - 29 5 4 2 -1. - <_> - 29 5 2 2 2. - 1 - <_> - - <_> - 14 10 9 1 -1. - <_> - 17 10 3 1 3. - <_> - - <_> - 6 7 34 4 -1. - <_> - 23 7 17 2 2. - <_> - 6 9 17 2 2. - <_> - - <_> - 1 2 36 4 -1. - <_> - 19 2 18 4 2. - <_> - - <_> - 29 0 6 4 -1. - <_> - 31 0 2 4 3. - <_> - - <_> - 11 5 4 2 -1. - <_> - 12 5 2 2 2. - <_> - - <_> - 22 9 2 2 -1. - <_> - 23 9 1 1 2. - <_> - 22 10 1 1 2. - <_> - - <_> - 6 8 6 3 -1. - <_> - 8 8 2 3 3. - <_> - - <_> - 33 9 6 2 -1. - <_> - 35 9 2 2 3. - <_> - - <_> - 0 3 2 5 -1. - <_> - 1 3 1 5 2. - <_> - - <_> - 33 9 6 2 -1. - <_> - 35 9 2 2 3. - <_> - - <_> - 7 0 16 2 -1. - <_> - 7 0 8 1 2. - <_> - 15 1 8 1 2. - <_> - - <_> - 21 1 16 2 -1. - <_> - 29 1 8 1 2. - <_> - 21 2 8 1 2. - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 0 1 3 2. - 1 - <_> - - <_> - 29 0 6 4 -1. - <_> - 31 0 2 4 3. - <_> - - <_> - 12 2 6 6 -1. - <_> - 14 4 2 2 9. - <_> - - <_> - 33 10 6 1 -1. - <_> - 35 10 2 1 3. - <_> - - <_> - 5 3 2 3 -1. - <_> - 5 4 2 1 3. - <_> - - <_> - 39 4 1 4 -1. - <_> - 39 5 1 2 2. - <_> - - <_> - 16 4 1 6 -1. - <_> - 16 4 1 3 2. - 1 - <_> - - <_> - 39 4 1 4 -1. - <_> - 39 5 1 2 2. - <_> - - <_> - 1 8 1 3 -1. - <_> - 1 9 1 1 3. - <_> - - <_> - 25 8 2 2 -1. - <_> - 26 8 1 1 2. - <_> - 25 9 1 1 2. - <_> - - <_> - 5 4 1 4 -1. - <_> - 5 5 1 2 2. - <_> - - <_> - 42 8 2 3 -1. - <_> - 42 9 2 1 3. - <_> - - <_> - 5 4 2 2 -1. - <_> - 5 4 1 1 2. - <_> - 6 5 1 1 2. - <_> - - <_> - 42 2 2 2 -1. - <_> - 42 2 1 2 2. - 1 - <_> - - <_> - 3 2 2 2 -1. - <_> - 3 2 2 1 2. - 1 - <_> - - <_> - 33 9 6 2 -1. - <_> - 35 9 2 2 3. - <_> - - <_> - 6 9 6 2 -1. - <_> - 8 9 2 2 3. - <_> - - <_> - 28 3 2 6 -1. - <_> - 28 3 2 3 2. - 1 - <_> - - <_> - 16 4 8 7 -1. - <_> - 18 4 4 7 2. - <_> - - <_> - 21 1 6 8 -1. - <_> - 21 1 3 8 2. - <_> - - <_> - 18 4 6 4 -1. - <_> - 21 4 3 4 2. - <_> - - <_> - 24 0 8 3 -1. - <_> - 24 0 4 3 2. - 1 - <_> - - <_> - 1 9 32 2 -1. - <_> - 9 9 16 2 2. - <_> - - <_> - 38 2 1 3 -1. - <_> - 38 3 1 1 3. - <_> - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - <_> - - <_> - 32 2 6 1 -1. - <_> - 34 4 2 1 3. - 1 - <_> - - <_> - 0 10 2 1 -1. - <_> - 1 10 1 1 2. - <_> - - <_> - 43 9 2 2 -1. - <_> - 43 10 2 1 2. - <_> - - <_> - 7 3 2 2 -1. - <_> - 7 3 1 1 2. - <_> - 8 4 1 1 2. - <_> - - <_> - 21 0 3 9 -1. - <_> - 22 3 1 3 9. - <_> - - <_> - 0 8 5 2 -1. - <_> - 0 9 5 1 2. - <_> - - <_> - 42 8 2 3 -1. - <_> - 42 9 2 1 3. - <_> - - <_> - 9 5 1 4 -1. - <_> - 8 6 1 2 2. - 1 - <_> - - <_> - 42 8 2 3 -1. - <_> - 42 9 2 1 3. - <_> - - <_> - 11 7 2 2 -1. - <_> - 11 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 43 8 1 3 -1. - <_> - 43 9 1 1 3. - <_> - - <_> - 1 8 1 3 -1. - <_> - 1 9 1 1 3. - <_> - - <_> - 36 0 6 4 -1. - <_> - 38 0 2 4 3. - <_> - - <_> - 4 0 12 2 -1. - <_> - 4 0 6 1 2. - <_> - 10 1 6 1 2. - <_> - - <_> - 6 4 6 4 -1. - <_> - 8 4 2 4 3. - <_> - - <_> - 34 0 10 4 -1. - <_> - 34 1 10 2 2. - <_> - - <_> - 12 0 12 4 -1. - <_> - 18 0 6 4 2. - <_> - - <_> - 39 1 3 9 -1. - <_> - 40 4 1 3 9. - <_> - - <_> - 6 2 8 4 -1. - <_> - 6 3 8 2 2. - <_> - - <_> - 31 5 3 3 -1. - <_> - 30 6 3 1 3. - 1 - <_> - - <_> - 0 5 24 2 -1. - <_> - 12 5 12 2 2. - <_> - - <_> - 24 5 2 2 -1. - <_> - 24 5 1 2 2. - <_> - - <_> - 15 4 3 4 -1. - <_> - 15 4 3 2 2. - 1 - <_> - - <_> - 10 1 26 8 -1. - <_> - 23 1 13 4 2. - <_> - 10 5 13 4 2. - <_> - - <_> - 0 5 4 6 -1. - <_> - 0 5 2 3 2. - <_> - 2 8 2 3 2. - <_> - - <_> - 24 9 11 2 -1. - <_> - 24 10 11 1 2. - <_> - - <_> - 9 4 4 3 -1. - <_> - 10 4 2 3 2. - <_> - - <_> - 44 3 1 8 -1. - <_> - 44 7 1 4 2. - <_> - - <_> - 0 3 1 8 -1. - <_> - 0 7 1 4 2. - <_> - - <_> - 33 0 6 3 -1. - <_> - 35 0 2 3 3. - <_> - - <_> - 13 6 3 2 -1. - <_> - 14 7 1 2 3. - 1 - <_> - - <_> - 20 8 8 2 -1. - <_> - 24 8 4 1 2. - <_> - 20 9 4 1 2. - <_> - - <_> - 0 1 45 9 -1. - <_> - 15 4 15 3 9. - <_> - - <_> - 33 0 6 3 -1. - <_> - 35 0 2 3 3. - <_> - - <_> - 16 8 10 2 -1. - <_> - 16 8 5 1 2. - <_> - 21 9 5 1 2. - <_> - - <_> - 22 0 4 9 -1. - <_> - 22 0 2 9 2. - <_> - - <_> - 22 6 1 4 -1. - <_> - 22 6 1 2 2. - 1 - <_> - - <_> - 23 8 2 2 -1. - <_> - 24 8 1 1 2. - <_> - 23 9 1 1 2. - <_> - - <_> - 20 8 2 2 -1. - <_> - 20 8 1 1 2. - <_> - 21 9 1 1 2. - <_> - - <_> - 37 4 4 2 -1. - <_> - 39 4 2 1 2. - <_> - 37 5 2 1 2. - <_> - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - <_> - - <_> - 29 1 3 2 -1. - <_> - 29 1 3 1 2. - 1 - <_> - - <_> - 0 3 10 2 -1. - <_> - 0 3 5 1 2. - <_> - 5 4 5 1 2. - <_> - - <_> - 36 0 6 4 -1. - <_> - 38 0 2 4 3. - <_> - - <_> - 0 1 1 6 -1. - <_> - 0 4 1 3 2. - <_> - - <_> - 36 10 6 1 -1. - <_> - 38 10 2 1 3. - <_> - - <_> - 3 10 6 1 -1. - <_> - 5 10 2 1 3. - <_> - - <_> - 33 7 2 2 -1. - <_> - 34 7 1 1 2. - <_> - 33 8 1 1 2. - <_> - - <_> - 3 0 6 4 -1. - <_> - 5 0 2 4 3. - <_> - - <_> - 36 0 6 3 -1. - <_> - 38 0 2 3 3. - <_> - - <_> - 10 7 2 2 -1. - <_> - 10 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 36 0 6 3 -1. - <_> - 38 0 2 3 3. - <_> - - <_> - 3 0 6 3 -1. - <_> - 5 0 2 3 3. - <_> - - <_> - 33 0 8 2 -1. - <_> - 33 0 4 2 2. - <_> - - <_> - 5 6 4 2 -1. - <_> - 5 6 2 1 2. - <_> - 7 7 2 1 2. - <_> - - <_> - 31 0 10 2 -1. - <_> - 31 0 5 2 2. - <_> - - <_> - 13 0 18 6 -1. - <_> - 13 0 9 3 2. - <_> - 22 3 9 3 2. - <_> - - <_> - 26 0 1 2 -1. - <_> - 26 0 1 1 2. - 1 - <_> - - <_> - 15 7 2 2 -1. - <_> - 15 7 2 1 2. - 1 - <_> - - <_> - 41 0 4 4 -1. - <_> - 40 1 4 2 2. - 1 - <_> - - <_> - 4 0 4 4 -1. - <_> - 5 1 2 4 2. - 1 - <_> - - <_> - 25 9 11 2 -1. - <_> - 25 10 11 1 2. - <_> - - <_> - 9 9 11 2 -1. - <_> - 9 10 11 1 2. - <_> - - <_> - 24 1 2 2 -1. - <_> - 25 1 1 1 2. - <_> - 24 2 1 1 2. - <_> - - <_> - 0 0 44 6 -1. - <_> - 0 0 22 3 2. - <_> - 22 3 22 3 2. - <_> - - <_> - 20 0 8 11 -1. - <_> - 20 0 4 11 2. - <_> - - <_> - 17 4 8 7 -1. - <_> - 19 4 4 7 2. - <_> - - <_> - 34 7 4 3 -1. - <_> - 34 8 4 1 3. - <_> - - <_> - 7 7 4 3 -1. - <_> - 7 8 4 1 3. - <_> - - <_> - 29 0 3 7 -1. - <_> - 30 0 1 7 3. - <_> - - <_> - 13 0 3 7 -1. - <_> - 14 0 1 7 3. - <_> - - <_> - 14 6 18 4 -1. - <_> - 23 6 9 2 2. - <_> - 14 8 9 2 2. - <_> - - <_> - 9 9 4 1 -1. - <_> - 10 9 2 1 2. - <_> - - <_> - 23 8 6 3 -1. - <_> - 25 8 2 3 3. - <_> - - <_> - 18 3 6 5 -1. - <_> - 20 3 2 5 3. - <_> - - <_> - 23 0 10 1 -1. - <_> - 23 0 5 1 2. - 1 - <_> - - <_> - 21 0 2 11 -1. - <_> - 22 0 1 11 2. - <_> - - <_> - 22 7 9 3 -1. - <_> - 25 7 3 3 3. - <_> - - <_> - 14 7 9 3 -1. - <_> - 17 7 3 3 3. - <_> - - <_> - 20 0 6 2 -1. - <_> - 22 0 2 2 3. - <_> - - <_> - 19 0 6 2 -1. - <_> - 21 0 2 2 3. - <_> - - <_> - 23 0 10 1 -1. - <_> - 23 0 5 1 2. - 1 - <_> - - <_> - 22 0 1 10 -1. - <_> - 22 0 1 5 2. - 1 - <_> - - <_> - 22 1 4 1 -1. - <_> - 23 1 2 1 2. - <_> - - <_> - 7 0 5 3 -1. - <_> - 7 1 5 1 3. - <_> - - <_> - 22 1 4 1 -1. - <_> - 23 1 2 1 2. - <_> - - <_> - 18 1 6 1 -1. - <_> - 20 1 2 1 3. - <_> - - <_> - 21 0 16 2 -1. - <_> - 29 0 8 1 2. - <_> - 21 1 8 1 2. - <_> - - <_> - 14 2 2 1 -1. - <_> - 14 2 1 1 2. - 1 - <_> - - <_> - 33 1 6 3 -1. - <_> - 33 2 6 1 3. - <_> - - <_> - 15 1 4 2 -1. - <_> - 16 2 2 2 2. - 1 - <_> - - <_> - 13 3 3 4 -1. - <_> - 14 4 1 4 3. - 1 - <_> - - <_> - 36 0 8 4 -1. - <_> - 36 1 8 2 2. - <_> - - <_> - 7 0 18 7 -1. - <_> - 16 0 9 7 2. - <_> - - <_> - 38 2 6 1 -1. - <_> - 40 4 2 1 3. - 1 - <_> - - <_> - 3 5 4 6 -1. - <_> - 3 5 2 3 2. - <_> - 5 8 2 3 2. - <_> - - <_> - 24 8 2 1 -1. - <_> - 24 8 1 1 2. - 1 - <_> - - <_> - 13 10 12 1 -1. - <_> - 16 10 6 1 2. - <_> - - <_> - 34 0 10 4 -1. - <_> - 34 1 10 2 2. - <_> - - <_> - 1 0 10 4 -1. - <_> - 1 1 10 2 2. - <_> - - <_> - 22 9 2 2 -1. - <_> - 23 9 1 1 2. - <_> - 22 10 1 1 2. - <_> - - <_> - 4 9 1 2 -1. - <_> - 4 10 1 1 2. - <_> - - <_> - 33 0 6 3 -1. - <_> - 35 0 2 3 3. - <_> - - <_> - 7 0 7 3 -1. - <_> - 6 1 7 1 3. - 1 - <_> - - <_> - 27 0 12 2 -1. - <_> - 30 0 6 2 2. - <_> - - <_> - 6 0 6 3 -1. - <_> - 8 0 2 3 3. - <_> - - <_> - 22 9 2 2 -1. - <_> - 23 9 1 1 2. - <_> - 22 10 1 1 2. - <_> - - <_> - 3 4 34 2 -1. - <_> - 20 4 17 2 2. - <_> - - <_> - 22 5 6 6 -1. - <_> - 25 5 3 3 2. - <_> - 22 8 3 3 2. - <_> - - <_> - 12 4 20 4 -1. - <_> - 12 4 10 2 2. - <_> - 22 6 10 2 2. - <_> - - <_> - 37 2 2 3 -1. - <_> - 37 3 2 1 3. - <_> - - <_> - 5 2 9 3 -1. - <_> - 5 3 9 1 3. - <_> - - <_> - 27 0 12 1 -1. - <_> - 30 0 6 1 2. - <_> - - <_> - 6 0 12 1 -1. - <_> - 9 0 6 1 2. - <_> - - <_> - 30 0 6 3 -1. - <_> - 32 0 2 3 3. - <_> - - <_> - 8 0 6 4 -1. - <_> - 10 0 2 4 3. - <_> - - <_> - 34 3 3 3 -1. - <_> - 33 4 3 1 3. - 1 - <_> - - <_> - 10 0 6 4 -1. - <_> - 12 0 2 4 3. - <_> - - <_> - 36 9 6 2 -1. - <_> - 38 9 2 2 3. - <_> - - <_> - 3 9 6 2 -1. - <_> - 5 9 2 2 3. - <_> - - <_> - 34 3 3 3 -1. - <_> - 33 4 3 1 3. - 1 - <_> - - <_> - 16 10 12 1 -1. - <_> - 19 10 6 1 2. - <_> - - <_> - 23 0 1 10 -1. - <_> - 23 0 1 5 2. - 1 - <_> - - <_> - 1 5 32 4 -1. - <_> - 9 5 16 4 2. - <_> - - <_> - 20 1 6 10 -1. - <_> - 20 1 3 10 2. - <_> - - <_> - 0 6 44 5 -1. - <_> - 22 6 22 5 2. - <_> - - <_> - 33 10 6 1 -1. - <_> - 35 10 2 1 3. - <_> - - <_> - 0 3 18 4 -1. - <_> - 6 3 6 4 3. - <_> - - <_> - 30 3 4 2 -1. - <_> - 32 3 2 1 2. - <_> - 30 4 2 1 2. - <_> - - <_> - 4 0 3 4 -1. - <_> - 3 1 3 2 2. - 1 - <_> - - <_> - 33 10 6 1 -1. - <_> - 35 10 2 1 3. - <_> - - <_> - 6 10 6 1 -1. - <_> - 8 10 2 1 3. - <_> - - <_> - 28 5 4 3 -1. - <_> - 29 5 2 3 2. - <_> - - <_> - 13 5 4 3 -1. - <_> - 14 5 2 3 2. - <_> - - <_> - 25 8 2 2 -1. - <_> - 26 8 1 1 2. - <_> - 25 9 1 1 2. - <_> - - <_> - 11 3 3 3 -1. - <_> - 12 4 1 3 3. - 1 - <_> - - <_> - 28 0 2 3 -1. - <_> - 27 1 2 1 3. - 1 - <_> - - <_> - 4 1 3 3 -1. - <_> - 5 2 1 3 3. - 1 - <_> - - <_> - 43 3 2 6 -1. - <_> - 43 5 2 2 3. - <_> - - <_> - 0 3 2 6 -1. - <_> - 0 5 2 2 3. - <_> - - <_> - 28 6 2 1 -1. - <_> - 28 6 1 1 2. - 1 - <_> - - <_> - 17 7 9 4 -1. - <_> - 20 7 3 4 3. - <_> - - <_> - 24 1 2 2 -1. - <_> - 25 1 1 1 2. - <_> - 24 2 1 1 2. - <_> - - <_> - 18 2 6 3 -1. - <_> - 18 2 3 3 2. - 1 - <_> - - <_> - 38 4 4 2 -1. - <_> - 40 4 2 1 2. - <_> - 38 5 2 1 2. - <_> - - <_> - 14 3 16 2 -1. - <_> - 14 3 8 1 2. - <_> - 22 4 8 1 2. - <_> - - <_> - 38 4 4 2 -1. - <_> - 40 4 2 1 2. - <_> - 38 5 2 1 2. - <_> - - <_> - 12 0 3 9 -1. - <_> - 13 3 1 3 9. - <_> - - <_> - 33 0 6 3 -1. - <_> - 33 1 6 1 3. - <_> - - <_> - 15 0 3 3 -1. - <_> - 16 1 1 3 3. - 1 - <_> - - <_> - 31 2 3 3 -1. - <_> - 32 3 1 3 3. - 1 - <_> - - <_> - 14 2 3 3 -1. - <_> - 13 3 3 1 3. - 1 - <_> - - <_> - 23 9 2 2 -1. - <_> - 24 9 1 1 2. - <_> - 23 10 1 1 2. - <_> - - <_> - 20 9 2 2 -1. - <_> - 20 9 1 1 2. - <_> - 21 10 1 1 2. - <_> - - <_> - 25 8 2 2 -1. - <_> - 26 8 1 1 2. - <_> - 25 9 1 1 2. - <_> - - <_> - 18 8 2 2 -1. - <_> - 18 8 1 1 2. - <_> - 19 9 1 1 2. - <_> - - <_> - 17 0 12 2 -1. - <_> - 20 0 6 2 2. - <_> - - <_> - 8 0 18 11 -1. - <_> - 14 0 6 11 3. - <_> - - <_> - 24 1 2 2 -1. - <_> - 25 1 1 1 2. - <_> - 24 2 1 1 2. - <_> - - <_> - 19 1 2 2 -1. - <_> - 19 1 1 1 2. - <_> - 20 2 1 1 2. - <_> - - <_> - 30 8 6 3 -1. - <_> - 32 8 2 3 3. - <_> - - <_> - 19 3 2 2 -1. - <_> - 19 3 1 1 2. - <_> - 20 4 1 1 2. - <_> - - <_> - 26 1 10 2 -1. - <_> - 31 1 5 1 2. - <_> - 26 2 5 1 2. - <_> - - <_> - 9 8 6 3 -1. - <_> - 11 8 2 3 3. - <_> - - <_> - 36 1 5 6 -1. - <_> - 36 3 5 2 3. - <_> - - <_> - 4 1 5 6 -1. - <_> - 4 3 5 2 3. - <_> - - <_> - 36 9 8 1 -1. - <_> - 36 9 4 1 2. - <_> - - <_> - 3 3 6 2 -1. - <_> - 3 3 3 2 2. - 1 - <_> - - <_> - 39 3 4 8 -1. - <_> - 39 3 2 8 2. - <_> - - <_> - 2 3 4 8 -1. - <_> - 4 3 2 8 2. - <_> - - <_> - 22 7 2 2 -1. - <_> - 23 7 1 1 2. - <_> - 22 8 1 1 2. - <_> - - <_> - 0 5 38 6 -1. - <_> - 0 5 19 3 2. - <_> - 19 8 19 3 2. - <_> - - <_> - 43 0 2 4 -1. - <_> - 43 0 1 4 2. - 1 - <_> - - <_> - 14 6 16 4 -1. - <_> - 14 6 8 2 2. - <_> - 22 8 8 2 2. - <_> - - <_> - 43 0 2 4 -1. - <_> - 43 0 1 4 2. - 1 - <_> - - <_> - 12 4 3 4 -1. - <_> - 13 4 1 4 3. - diff --git a/data/haarcascades/haarcascade_mcs_eyepair_small.xml b/data/haarcascades/haarcascade_mcs_eyepair_small.xml deleted file mode 100644 index 6e22b44ea0..0000000000 --- a/data/haarcascades/haarcascade_mcs_eyepair_small.xml +++ /dev/null @@ -1,10091 +0,0 @@ - - - -BOOST - HAAR - 22 - 5 - - 133 - - 0 - 17 - - <_> - 7 - -1.7232350111007690e+00 - - <_> - - 0 -1 0 2.5266629457473755e-01 - - -7.7110642194747925e-01 8.0833798646926880e-01 - <_> - - 0 -1 1 5.6097120977938175e-03 - - -7.3824870586395264e-01 3.8851681351661682e-01 - <_> - - 0 -1 2 1.5298590064048767e-01 - - -5.5244392156600952e-01 6.4289671182632446e-01 - <_> - - 0 -1 3 -4.1561521589756012e-02 - - 4.6287709474563599e-01 -5.3415888547897339e-01 - <_> - - 0 -1 4 4.0643951296806335e-01 - - 1.7092859372496605e-02 -4.6732509765625000e+03 - <_> - - 0 -1 5 2.9633469879627228e-02 - - -4.4348448514938354e-01 5.0703012943267822e-01 - <_> - - 0 -1 6 1.0285720054525882e-04 - - -6.6466391086578369e-01 3.0207848548889160e-01 - <_> - 7 - -1.4015640020370483e+00 - - <_> - - 0 -1 7 3.3425179123878479e-01 - - -6.5658462047576904e-01 7.2224652767181396e-01 - <_> - - 0 -1 8 3.4681979566812515e-02 - - -6.5526360273361206e-01 5.4633998870849609e-01 - <_> - - 0 -1 9 -5.3489811718463898e-02 - - 4.9894320964813232e-01 -5.0774151086807251e-01 - <_> - - 0 -1 10 1.0272119939327240e-01 - - -2.8445309400558472e-01 4.0494489669799805e-01 - <_> - - 0 -1 11 1.4077969535719603e-04 - - -7.9020249843597412e-01 3.4440949559211731e-01 - <_> - - 0 -1 12 2.3227030038833618e-01 - - -1.3018049299716949e-01 4.3139758706092834e-01 - <_> - - 0 -1 13 8.0413393676280975e-02 - - -4.6376779675483704e-01 4.8824951052665710e-01 - <_> - 14 - -1.9015949964523315e+00 - - <_> - - 0 -1 14 3.5276851058006287e-01 - - -6.3080090284347534e-01 6.5199118852615356e-01 - <_> - - 0 -1 15 7.3224060237407684e-02 - - -5.9558337926864624e-01 4.8831069469451904e-01 - <_> - - 0 -1 16 -2.2634120658040047e-02 - - 4.1987290978431702e-01 -5.6545442342758179e-01 - <_> - - 0 -1 17 2.2298170626163483e-01 - - -3.1860861182212830e-01 4.8772248625755310e-01 - <_> - - 0 -1 18 1.8357429653406143e-02 - - -4.0862768888473511e-01 3.9951491355895996e-01 - <_> - - 0 -1 19 1.2711199815385044e-04 - - -4.7230800986289978e-01 2.0521849393844604e-01 - <_> - - 0 -1 20 1.0834160260856152e-02 - - 1.3318300247192383e-01 -7.7914947271347046e-01 - <_> - - 0 -1 21 -7.9301595687866211e-03 - - -5.9789812564849854e-01 4.9372468143701553e-02 - <_> - - 0 -1 22 2.9459610581398010e-01 - - -9.9943317472934723e-03 -3.9346069335937500e+03 - <_> - - 0 -1 23 2.3979870602488518e-02 - - 6.5359488129615784e-02 -5.0484991073608398e-01 - <_> - - 0 -1 24 1.0285720054525882e-04 - - -6.2231910228729248e-01 1.3749890029430389e-01 - <_> - - 0 -1 25 1.3282659649848938e-01 - - -3.4161621332168579e-01 2.7172261476516724e-01 - <_> - - 0 -1 26 -3.7376780062913895e-02 - - -7.4671339988708496e-01 1.1474339663982391e-01 - <_> - - 0 -1 27 7.3414398357272148e-03 - - -3.4962359070777893e-01 1.2929069995880127e-01 - <_> - 21 - -1.8471280336380005e+00 - - <_> - - 0 -1 28 3.5913649201393127e-01 - - -5.8520388603210449e-01 5.8315628767013550e-01 - <_> - - 0 -1 29 -9.2016262933611870e-03 - - 2.3378680646419525e-01 -5.2131319046020508e-01 - <_> - - 0 -1 30 -1.5467359684407711e-02 - - 3.3575141429901123e-01 -5.4084789752960205e-01 - <_> - - 0 -1 31 1.5523830056190491e-01 - - -4.6488308906555176e-01 4.3957579135894775e-01 - <_> - - 0 -1 32 -1.0378899984061718e-02 - - 2.2855420410633087e-01 -4.7472599148750305e-01 - <_> - - 0 -1 33 -7.5254109688103199e-03 - - 3.0168649554252625e-01 -2.8491249680519104e-01 - <_> - - 0 -1 34 -1.2629480625037104e-04 - - 2.2317290306091309e-01 -3.9811360836029053e-01 - <_> - - 0 -1 35 1.2507449719123542e-04 - - -3.6723288893699646e-01 1.3852049410343170e-01 - <_> - - 0 -1 36 -9.0782120823860168e-03 - - -6.8277508020401001e-01 1.0983029752969742e-01 - <_> - - 0 -1 37 -4.9800768494606018e-02 - - -7.1183747053146362e-01 9.5877766609191895e-02 - <_> - - 0 -1 38 1.0729680210351944e-01 - - -1.9828429445624352e-02 -2.6988120117187500e+03 - <_> - - 0 -1 39 -2.9545628931373358e-03 - - -5.9663408994674683e-01 1.4378489553928375e-01 - <_> - - 0 -1 40 1.2507449719123542e-04 - - -4.2198759317398071e-01 1.2654370069503784e-01 - <_> - - 0 -1 41 5.0712730735540390e-02 - - 3.6825660616159439e-02 -7.2819608449935913e-01 - <_> - - 0 -1 42 1.4936710067559034e-04 - - -5.3859847784042358e-01 1.2984189391136169e-01 - <_> - - 0 -1 43 2.4373650550842285e-01 - - 5.6961510330438614e-02 -7.1023291349411011e-01 - <_> - - 0 -1 44 -6.0015019029378891e-02 - - 2.4694560468196869e-01 -2.5020390748977661e-01 - <_> - - 0 -1 45 8.7412662804126740e-02 - - 5.8552309870719910e-02 -2.8725269436836243e-01 - <_> - - 0 -1 46 -9.0919047594070435e-02 - - -6.8815648555755615e-01 8.8074482977390289e-02 - <_> - - 0 -1 47 1.4819550514221191e-01 - - -8.3346709609031677e-02 5.1286262273788452e-01 - <_> - - 0 -1 48 2.1776199340820312e-01 - - -1.1302039772272110e-01 4.8981839418411255e-01 - <_> - 23 - -1.7498610019683838e+00 - - <_> - - 0 -1 49 2.4087640643119812e-01 - - -5.4511332511901855e-01 4.9997121095657349e-01 - <_> - - 0 -1 50 9.1455027461051941e-02 - - -5.4530072212219238e-01 3.6511918902397156e-01 - <_> - - 0 -1 51 6.2960892915725708e-02 - - -4.5040848851203918e-01 3.1278419494628906e-01 - <_> - - 0 -1 52 -4.4865939766168594e-02 - - 3.8191598653793335e-01 -4.0314820408821106e-01 - <_> - - 0 -1 53 -1.3774819672107697e-02 - - 2.5567761063575745e-01 -5.2795022726058960e-01 - <_> - - 0 -1 54 3.0930969864130020e-02 - - -3.2184159755706787e-01 3.2615759968757629e-01 - <_> - - 0 -1 55 2.8891479596495628e-03 - - -5.8948808908462524e-01 1.3433440029621124e-01 - <_> - - 0 -1 56 8.0474298447370529e-03 - - 1.3132849335670471e-01 -6.8602150678634644e-01 - <_> - - 0 -1 57 9.5555791631340981e-03 - - 9.8187282681465149e-02 -6.7927527427673340e-01 - <_> - - 0 -1 58 -3.1676879152655602e-03 - - 1.1390289664268494e-01 -2.3203469812870026e-01 - <_> - - 0 -1 59 -1.6496120020747185e-02 - - 2.5697690248489380e-01 -2.6603409647941589e-01 - <_> - - 0 -1 60 -9.6434041857719421e-02 - - -6.8036687374114990e-01 2.6103440672159195e-02 - <_> - - 0 -1 61 -1.0129880160093307e-02 - - 2.6537680625915527e-01 -2.8654828667640686e-01 - <_> - - 0 -1 62 3.5491649759933352e-04 - - -4.5001238584518433e-01 1.5570540726184845e-01 - <_> - - 0 -1 63 -1.0879360139369965e-02 - - 2.8526028990745544e-01 -2.2041590511798859e-01 - <_> - - 0 -1 64 -1.3320960104465485e-02 - - -6.2863361835479736e-01 7.5602389872074127e-02 - <_> - - 0 -1 65 9.1701131314039230e-03 - - 1.0672529786825180e-01 -5.6462252140045166e-01 - <_> - - 0 -1 66 -1.7562079429626465e-01 - - 6.0234647989273071e-01 -1.1059260368347168e-01 - <_> - - 0 -1 67 3.4105561673641205e-02 - - 1.3363470137119293e-01 -4.9567678570747375e-01 - <_> - - 0 -1 68 -6.4384371042251587e-02 - - -5.8806449174880981e-01 3.2023940235376358e-02 - <_> - - 0 -1 69 -4.6032480895519257e-02 - - -6.1432898044586182e-01 9.9403113126754761e-02 - <_> - - 0 -1 70 -3.8402248173952103e-02 - - 1.6040940582752228e-01 -1.8730519711971283e-01 - <_> - - 0 -1 71 -4.7098070383071899e-01 - - -8.1419098377227783e-01 6.2802910804748535e-02 - <_> - 26 - -1.6923429965972900e+00 - - <_> - - 0 -1 72 4.0789580345153809e-01 - - -2.1667710097972304e-04 4.0943940429687500e+03 - <_> - - 0 -1 73 2.2189030051231384e-01 - - -5.7190257310867310e-01 3.1764110922813416e-01 - <_> - - 0 -1 74 -6.7908123135566711e-02 - - 4.2148721218109131e-01 -4.6982499957084656e-01 - <_> - - 0 -1 75 8.1082796677947044e-03 - - 1.2259560078382492e-01 -4.1368159651756287e-01 - <_> - - 0 -1 76 1.7519680783152580e-02 - - -3.8625329732894897e-01 3.0897051095962524e-01 - <_> - - 0 -1 77 8.1193387508392334e-02 - - -6.3750207424163818e-01 3.8393190503120422e-01 - <_> - - 0 -1 78 1.4751380681991577e-01 - - -4.6316000819206238e-01 2.4519099295139313e-01 - <_> - - 0 -1 79 -4.6391459181904793e-03 - - 2.8011339902877808e-01 -3.1145840883255005e-01 - <_> - - 0 -1 80 -2.5532179279252887e-04 - - 2.1388280391693115e-01 -4.4669920206069946e-01 - <_> - - 0 -1 81 3.5182538628578186e-01 - - 2.3929810151457787e-02 -8.2447677850723267e-01 - <_> - - 0 -1 82 7.2416856884956360e-02 - - -3.8994240760803223e-01 1.8486149609088898e-01 - <_> - - 0 -1 83 -1.2314420193433762e-02 - - 1.1694400012493134e-01 -1.6245290637016296e-01 - <_> - - 0 -1 84 4.2064491659402847e-02 - - 1.0999520123004913e-01 -7.1583980321884155e-01 - <_> - - 0 -1 85 1.4708960056304932e-01 - - 6.4720317721366882e-02 -7.2780632972717285e-01 - <_> - - 0 -1 86 -8.5739437490701675e-03 - - -6.5120697021484375e-01 6.4630962908267975e-02 - <_> - - 0 -1 87 2.4884249432943761e-04 - - -3.8540419936180115e-01 1.0373640060424805e-01 - <_> - - 0 -1 88 3.0264389351941645e-04 - - -3.5174098610877991e-01 1.3352109491825104e-01 - <_> - - 0 -1 89 -3.9636630564928055e-02 - - 3.2420659065246582e-01 -1.9590090215206146e-01 - <_> - - 0 -1 90 3.9922460913658142e-02 - - -1.1895609647035599e-01 4.4634771347045898e-01 - <_> - - 0 -1 91 -1.4249280095100403e-01 - - 5.6414389610290527e-01 -6.4507760107517242e-02 - <_> - - 0 -1 92 3.6157241463661194e-01 - - -1.6855439543724060e-01 3.4748959541320801e-01 - <_> - - 0 -1 93 4.0057301521301270e-02 - - 5.9359360486268997e-02 -5.1402068138122559e-01 - <_> - - 0 -1 94 3.2065549748949707e-04 - - -5.2019292116165161e-01 1.0447859764099121e-01 - <_> - - 0 -1 95 7.5918599963188171e-02 - - 5.9021171182394028e-02 -6.0396432876586914e-01 - <_> - - 0 -1 96 8.8088903576135635e-03 - - -3.0517879128456116e-01 1.9598659873008728e-01 - <_> - - 0 -1 97 -1.1505999602377415e-02 - - -6.9035482406616211e-01 9.5966316759586334e-02 - <_> - 30 - -1.6187490224838257e+00 - - <_> - - 0 -1 98 8.9942701160907745e-02 - - -5.5803191661834717e-01 3.1510511040687561e-01 - <_> - - 0 -1 99 1.4116680622100830e-01 - - -3.5455980896949768e-01 3.4234490990638733e-01 - <_> - - 0 -1 100 -4.9074299633502960e-02 - - 2.8429248929023743e-01 -4.7629681229591370e-01 - <_> - - 0 -1 101 8.8981233537197113e-02 - - 2.1262410283088684e-01 -5.9201169013977051e-01 - <_> - - 0 -1 102 4.5736131072044373e-01 - - -3.4110060334205627e-01 3.1832331418991089e-01 - <_> - - 0 -1 103 -2.0847789710387588e-04 - - 9.2047147452831268e-02 -1.9282439351081848e-01 - <_> - - 0 -1 104 -2.5638268562033772e-04 - - 1.8027019500732422e-01 -5.0077557563781738e-01 - <_> - - 0 -1 105 -4.3627548962831497e-02 - - -7.0934057235717773e-01 2.6141040027141571e-02 - <_> - - 0 -1 106 -1.2148039968451485e-04 - - 1.7804700136184692e-01 -3.8742861151695251e-01 - <_> - - 0 -1 107 6.6614202223718166e-03 - - 9.5236569643020630e-02 -6.4199751615524292e-01 - <_> - - 0 -1 108 1.0133580304682255e-02 - - 4.5362278819084167e-02 -7.3915910720825195e-01 - <_> - - 0 -1 109 -7.4527491815388203e-03 - - 3.4663969278335571e-01 -4.1097310185432434e-01 - <_> - - 0 -1 110 1.8654769659042358e-01 - - 4.6516291797161102e-02 -7.6239591836929321e-01 - <_> - - 0 -1 111 3.4887841343879700e-01 - - 4.4766940176486969e-02 -3.7297439575195312e-01 - <_> - - 0 -1 112 9.0129990130662918e-03 - - 9.2422701418399811e-02 -5.6183439493179321e-01 - <_> - - 0 -1 113 -7.8636936843395233e-02 - - 4.5786789059638977e-01 -1.6657710075378418e-01 - <_> - - 0 -1 114 1.2116239964962006e-01 - - -8.3181731402873993e-02 5.2312797307968140e-01 - <_> - - 0 -1 115 1.8915069522336125e-03 - - -4.3309900164604187e-01 1.2311600148677826e-01 - <_> - - 0 -1 116 3.4766089171171188e-02 - - -3.8780850172042847e-01 1.3191400468349457e-01 - <_> - - 0 -1 117 5.2351798862218857e-02 - - -7.4684523046016693e-02 4.7566229104995728e-01 - <_> - - 0 -1 118 -3.0340079218149185e-02 - - 1.9884179532527924e-01 -2.3101469874382019e-01 - <_> - - 0 -1 119 6.8641840480268002e-03 - - -8.9482538402080536e-02 2.9374399781227112e-01 - <_> - - 0 -1 120 -7.1418210864067078e-02 - - -5.8315718173980713e-01 8.2432016730308533e-02 - <_> - - 0 -1 121 -8.4603831171989441e-02 - - -7.1703827381134033e-01 4.6565640717744827e-02 - <_> - - 0 -1 122 -5.9493448585271835e-02 - - 3.4731200337409973e-01 -1.1965610086917877e-01 - <_> - - 0 -1 123 1.0994940251111984e-01 - - -7.9890703782439232e-03 3.4111711382865906e-01 - <_> - - 0 -1 124 4.9111388623714447e-02 - - -1.0241589695215225e-01 4.6818280220031738e-01 - <_> - - 0 -1 125 3.6367809772491455e-01 - - -8.3159081637859344e-02 3.7145859003067017e-01 - <_> - - 0 -1 126 -1.5865339338779449e-01 - - 5.0474298000335693e-01 -8.3462662994861603e-02 - <_> - - 0 -1 127 -2.5151360780000687e-02 - - -4.5326530933380127e-01 7.8059017658233643e-02 - <_> - 33 - -1.6774560213088989e+00 - - <_> - - 0 -1 128 1.6495940089225769e-01 - - -6.3327008485794067e-01 2.1666599810123444e-01 - <_> - - 0 -1 129 -4.3875761330127716e-02 - - 3.2398268580436707e-01 -5.3654092550277710e-01 - <_> - - 0 -1 130 9.6001587808132172e-03 - - -5.3273487091064453e-01 1.8380840122699738e-01 - <_> - - 0 -1 131 7.8705519437789917e-02 - - -3.8046509027481079e-01 8.5777603089809418e-02 - <_> - - 0 -1 132 -9.9123762920498848e-03 - - 3.0974680185317993e-01 -3.0242699384689331e-01 - <_> - - 0 -1 133 2.1423709392547607e-01 - - -1.3076549768447876e-01 1.5465900301933289e-01 - <_> - - 0 -1 134 3.8553290069103241e-02 - - -4.1129979491233826e-01 2.2162139415740967e-01 - <_> - - 0 -1 135 2.4947660858742893e-04 - - -3.9588528871536255e-01 1.8671679496765137e-01 - <_> - - 0 -1 136 -2.3194089590106159e-04 - - 2.2963899374008179e-01 -2.8851020336151123e-01 - <_> - - 0 -1 137 1.0282140225172043e-02 - - 7.1141071617603302e-02 -7.4978381395339966e-01 - <_> - - 0 -1 138 1.9899800419807434e-02 - - -3.7339100241661072e-01 1.4279870688915253e-01 - <_> - - 0 -1 139 9.1035827994346619e-02 - - 7.0756226778030396e-02 -6.6389507055282593e-01 - <_> - - 0 -1 140 3.9384838193655014e-02 - - -2.2626769542694092e-01 2.4647849798202515e-01 - <_> - - 0 -1 141 1.0999630205333233e-02 - - -2.6254078745841980e-01 1.1630869656801224e-01 - <_> - - 0 -1 142 -5.1808681339025497e-02 - - -5.9614032506942749e-01 8.5982881486415863e-02 - <_> - - 0 -1 143 -7.3788218200206757e-02 - - 2.5938460230827332e-01 -1.0419789701700211e-01 - <_> - - 0 -1 144 4.6990741044282913e-02 - - -1.3505549728870392e-01 4.3088319897651672e-01 - <_> - - 0 -1 145 -9.7187450155615807e-03 - - -6.8422812223434448e-01 1.0987590253353119e-01 - <_> - - 0 -1 146 -3.5397530882619321e-04 - - 1.4434379339218140e-01 -3.2492259144783020e-01 - <_> - - 0 -1 147 1.4243640005588531e-02 - - 2.5580020621418953e-02 -7.0051062107086182e-01 - <_> - - 0 -1 148 -1.3059009611606598e-01 - - 4.8231971263885498e-01 -9.7855798900127411e-02 - <_> - - 0 -1 149 -1.7721720039844513e-02 - - -7.6230561733245850e-01 3.1668808311223984e-02 - <_> - - 0 -1 150 -9.2830806970596313e-03 - - -5.6193757057189941e-01 7.6575733721256256e-02 - <_> - - 0 -1 151 2.4865049635991454e-04 - - -4.1249978542327881e-01 1.3300099968910217e-01 - <_> - - 0 -1 152 -1.4796050265431404e-02 - - -6.9817942380905151e-01 5.2536390721797943e-02 - <_> - - 0 -1 153 1.4459720253944397e-01 - - 8.0330166965723038e-03 -8.6757528781890869e-01 - <_> - - 0 -1 154 1.5795610845088959e-02 - - -2.9273110628128052e-01 1.3636249303817749e-01 - <_> - - 0 -1 155 1.3104810379445553e-02 - - -2.2310920059680939e-01 5.7727438211441040e-01 - <_> - - 0 -1 156 2.2301739454269409e-01 - - -9.3301281332969666e-02 4.9452948570251465e-01 - <_> - - 0 -1 157 -4.9664869904518127e-02 - - -5.1878559589385986e-01 3.4580491483211517e-02 - <_> - - 0 -1 158 -4.5947611331939697e-02 - - -6.5967637300491333e-01 5.8844711631536484e-02 - <_> - - 0 -1 159 -1.0404409840703011e-02 - - 2.6226308941841125e-01 -1.8617649376392365e-01 - <_> - - 0 -1 160 2.9125370085239410e-02 - - -1.8833640217781067e-01 2.1089859306812286e-01 - <_> - 43 - -1.5980160236358643e+00 - - <_> - - 0 -1 161 -2.7601189911365509e-02 - - 2.8599020838737488e-01 -4.1096940636634827e-01 - <_> - - 0 -1 162 3.7857651710510254e-02 - - -4.5894971489906311e-01 1.3157080113887787e-01 - <_> - - 0 -1 163 8.7851449847221375e-02 - - -4.6392178535461426e-01 2.6767331361770630e-01 - <_> - - 0 -1 164 -6.6995318047702312e-03 - - 3.4441629052162170e-01 -3.5756340622901917e-01 - <_> - - 0 -1 165 -2.1192200074438006e-04 - - 2.8535151481628418e-01 -2.5099050998687744e-01 - <_> - - 0 -1 166 7.3331758379936218e-02 - - -5.1049250364303589e-01 2.0841999351978302e-01 - <_> - - 0 -1 167 7.0513516664505005e-02 - - -2.9435500502586365e-01 2.4908310174942017e-01 - <_> - - 0 -1 168 2.4877820396795869e-04 - - -4.5301368832588196e-01 1.1060699820518494e-01 - <_> - - 0 -1 169 -3.4712569322437048e-03 - - 2.8186500072479248e-01 -2.2025389969348907e-01 - <_> - - 0 -1 170 2.4717900669202209e-04 - - -2.4565899372100830e-01 8.6443759500980377e-02 - <_> - - 0 -1 171 1.2986420188099146e-04 - - -3.5027301311492920e-01 1.4678439497947693e-01 - <_> - - 0 -1 172 6.9045290350914001e-02 - - 3.0464420095086098e-02 -6.0509628057479858e-01 - <_> - - 0 -1 173 2.7935361140407622e-04 - - -6.0390001535415649e-01 8.6118496954441071e-02 - <_> - - 0 -1 174 -1.4282229542732239e-01 - - -5.7246452569961548e-01 7.2643920779228210e-02 - <_> - - 0 -1 175 -3.6195218563079834e-02 - - 1.4508500695228577e-01 -2.9879340529441833e-01 - <_> - - 0 -1 176 -3.0662279576063156e-02 - - 2.2187960147857666e-01 -1.6560579836368561e-01 - <_> - - 0 -1 177 4.1992411017417908e-02 - - -1.0774009674787521e-01 4.8182308673858643e-01 - <_> - - 0 -1 178 -7.9941511154174805e-02 - - -4.7171419858932495e-01 3.7495650351047516e-02 - <_> - - 0 -1 179 -6.4027868211269379e-02 - - -6.4578139781951904e-01 7.0583656430244446e-02 - <_> - - 0 -1 180 -2.1864910377189517e-04 - - 1.4576619863510132e-01 -2.6793161034584045e-01 - <_> - - 0 -1 181 -1.4113999903202057e-02 - - -7.7310252189636230e-01 4.3031539767980576e-02 - <_> - - 0 -1 182 -2.7583390474319458e-02 - - -4.6052241325378418e-01 1.2541879899799824e-02 - <_> - - 0 -1 183 3.2080090045928955e-01 - - 3.8655929267406464e-02 -8.0620688199996948e-01 - <_> - - 0 -1 184 3.5831309854984283e-02 - - -6.6294170916080475e-02 3.2638838887214661e-01 - <_> - - 0 -1 185 -7.9818010330200195e-02 - - 4.1679659485816956e-01 -9.1265693306922913e-02 - <_> - - 0 -1 186 -2.6545161381363869e-04 - - 1.1011809855699539e-01 -1.5701800584793091e-01 - <_> - - 0 -1 187 -2.4198470055125654e-04 - - 1.3520300388336182e-01 -2.4126259982585907e-01 - <_> - - 0 -1 188 6.9970320910215378e-03 - - 6.1209369450807571e-02 -4.9959999322891235e-01 - <_> - - 0 -1 189 1.8720689415931702e-01 - - 5.6549020111560822e-02 -5.1141732931137085e-01 - <_> - - 0 -1 190 2.5392429903149605e-02 - - 1.2943379580974579e-02 -5.7294350862503052e-01 - <_> - - 0 -1 191 1.9598169252276421e-02 - - -8.1028573215007782e-02 4.1770109534263611e-01 - <_> - - 0 -1 192 -3.0563350766897202e-02 - - -7.7354127168655396e-01 1.7834499478340149e-02 - <_> - - 0 -1 193 -1.7510980367660522e-02 - - -5.8982509374618530e-01 5.1176030188798904e-02 - <_> - - 0 -1 194 8.0173909664154053e-03 - - -8.8888056576251984e-02 2.5149890780448914e-01 - <_> - - 0 -1 195 3.0078329145908356e-02 - - -5.1423519849777222e-02 6.0266208648681641e-01 - <_> - - 0 -1 196 1.2652520090341568e-02 - - 5.2874740213155746e-02 -6.8241232633590698e-01 - <_> - - 0 -1 197 1.2671189324464649e-04 - - -3.3524969220161438e-01 8.1200607120990753e-02 - <_> - - 0 -1 198 1.8680329620838165e-01 - - -5.4362770169973373e-02 5.2354782819747925e-01 - <_> - - 0 -1 199 1.7570440471172333e-01 - - -5.7003289461135864e-02 6.1373281478881836e-01 - <_> - - 0 -1 200 1.0384310483932495e+00 - - 5.5142719298601151e-02 -6.1898940801620483e-01 - <_> - - 0 -1 201 -3.6805290728807449e-03 - - -3.4223210811614990e-01 8.9690372347831726e-02 - <_> - - 0 -1 202 -1.5596579760313034e-02 - - -6.7402267456054688e-01 2.3316940292716026e-02 - <_> - - 0 -1 203 7.3065250180661678e-03 - - -3.3753579854965210e-01 8.1490926444530487e-02 - <_> - 49 - -1.5710469484329224e+00 - - <_> - - 0 -1 204 1.8058590590953827e-01 - - -5.3006607294082642e-01 3.0238381028175354e-01 - <_> - - 0 -1 205 -1.4102189801633358e-02 - - 3.6992278695106506e-01 -3.2417449355125427e-01 - <_> - - 0 -1 206 -1.0875849984586239e-02 - - 2.5693210959434509e-01 -3.2424819469451904e-01 - <_> - - 0 -1 207 1.9429029896855354e-02 - - -2.1578429639339447e-01 2.5954779982566833e-01 - <_> - - 0 -1 208 -3.3504539169371128e-04 - - 1.5259739756584167e-01 -4.9001759290695190e-01 - <_> - - 0 -1 209 1.4867480099201202e-01 - - -2.5198081135749817e-01 2.3439890146255493e-01 - <_> - - 0 -1 210 -1.9672799855470657e-02 - - 2.4085490405559540e-01 -2.0880240201950073e-01 - <_> - - 0 -1 211 2.9412939329631627e-04 - - -2.0930929481983185e-01 8.3217248320579529e-02 - <_> - - 0 -1 212 -4.9362171441316605e-02 - - 1.7945680022239685e-01 -2.6339888572692871e-01 - <_> - - 0 -1 213 2.6121780276298523e-02 - - 2.5723719969391823e-02 -7.1571451425552368e-01 - <_> - - 0 -1 214 2.5359389837831259e-04 - - -3.6208280920982361e-01 1.4229419827461243e-01 - <_> - - 0 -1 215 2.3524250835180283e-02 - - 1.3082559406757355e-01 -3.1331199407577515e-01 - <_> - - 0 -1 216 2.8964199009351432e-04 - - -2.9553139209747314e-01 1.6127729415893555e-01 - <_> - - 0 -1 217 -5.6771971285343170e-03 - - -5.3372818231582642e-01 3.7908848375082016e-02 - <_> - - 0 -1 218 2.7393171330913901e-04 - - -3.8743188977241516e-01 1.0680560022592545e-01 - <_> - - 0 -1 219 -4.9558758735656738e-02 - - 2.5248089432716370e-01 -1.9702939689159393e-01 - <_> - - 0 -1 220 -3.1284131109714508e-02 - - -5.4901629686355591e-01 8.3271853625774384e-02 - <_> - - 0 -1 221 5.1301490515470505e-02 - - 5.6439649313688278e-02 -3.9528268575668335e-01 - <_> - - 0 -1 222 -6.5874107182025909e-02 - - -6.6007608175277710e-01 5.1039341837167740e-02 - <_> - - 0 -1 223 -4.2836990207433701e-02 - - -4.6951889991760254e-01 2.4805689230561256e-02 - <_> - - 0 -1 224 -3.9816949516534805e-02 - - -5.3903067111968994e-01 6.2565587460994720e-02 - <_> - - 0 -1 225 9.6334350109100342e-01 - - 7.0093147456645966e-02 -5.0512290000915527e-01 - <_> - - 0 -1 226 -9.0300403535366058e-02 - - -6.0602772235870361e-01 4.7844190150499344e-02 - <_> - - 0 -1 227 1.1647170037031174e-01 - - 3.7802059203386307e-02 -4.2558151483535767e-01 - <_> - - 0 -1 228 1.4104600250720978e-01 - - 5.3307779133319855e-02 -6.4774441719055176e-01 - <_> - - 0 -1 229 -2.2453929483890533e-01 - - -7.4235057830810547e-01 3.9420530200004578e-02 - <_> - - 0 -1 230 1.2207459658384323e-02 - - 4.1159488260746002e-02 -6.2470448017120361e-01 - <_> - - 0 -1 231 -1.2989179790019989e-01 - - -5.0202441215515137e-01 5.0608549267053604e-02 - <_> - - 0 -1 232 -1.3367730379104614e-01 - - -5.9807258844375610e-01 5.1502179354429245e-02 - <_> - - 0 -1 233 -2.7120931190438569e-04 - - 9.4227276742458344e-02 -1.8693520128726959e-01 - <_> - - 0 -1 234 -1.0169100016355515e-01 - - 3.2843610644340515e-01 -8.7932407855987549e-02 - <_> - - 0 -1 235 -1.0269139707088470e-01 - - 3.6913949251174927e-01 -9.3921191990375519e-02 - <_> - - 0 -1 236 -1.0396800003945827e-02 - - 2.7350321412086487e-01 -1.0995180159807205e-01 - <_> - - 0 -1 237 -2.1686570718884468e-02 - - -5.4310798645019531e-01 3.5409461706876755e-02 - <_> - - 0 -1 238 -1.0991159826517105e-02 - - 3.3133411407470703e-01 -9.4798907637596130e-02 - <_> - - 0 -1 239 3.3094190061092377e-02 - - -6.7603901028633118e-02 3.7596800923347473e-01 - <_> - - 0 -1 240 1.1286569759249687e-02 - - 5.9782750904560089e-02 -5.1132440567016602e-01 - <_> - - 0 -1 241 -2.7613660320639610e-02 - - -1.4082999527454376e-01 2.7692280709743500e-02 - <_> - - 0 -1 242 -2.4939039722084999e-02 - - -3.9404359459877014e-01 7.4676387012004852e-02 - <_> - - 0 -1 243 -2.0524069666862488e-02 - - -3.6042830348014832e-01 7.4041247367858887e-02 - <_> - - 0 -1 244 -7.4007459916174412e-03 - - 2.8367879986763000e-01 -1.0147889703512192e-01 - <_> - - 0 -1 245 6.7080897092819214e-01 - - 4.5882590115070343e-02 -3.3616951107978821e-01 - <_> - - 0 -1 246 -3.9679888635873795e-02 - - -5.2566331624984741e-01 5.4599281400442123e-02 - <_> - - 0 -1 247 -8.7327197194099426e-02 - - 1.6750040650367737e-01 -4.3622560799121857e-02 - <_> - - 0 -1 248 6.4611792564392090e-02 - - -7.3659181594848633e-02 3.8314640522003174e-01 - <_> - - 0 -1 249 -2.2105389833450317e-01 - - 1.0447829961776733e-01 -1.7116640508174896e-01 - <_> - - 0 -1 250 5.3933750838041306e-02 - - -2.9619699716567993e-01 9.6287600696086884e-02 - <_> - - 0 -1 251 -2.7547979727387428e-02 - - 1.2633620202541351e-01 -1.4370830357074738e-01 - <_> - - 0 -1 252 -7.9627260565757751e-02 - - -6.7207431793212891e-01 4.2808510363101959e-02 - <_> - 56 - -1.5772149562835693e+00 - - <_> - - 0 -1 253 3.9984458684921265e-01 - - -4.9297308921813965e-01 2.7820569276809692e-01 - <_> - - 0 -1 254 -1.1940109543502331e-02 - - 2.9590839147567749e-01 -2.9935190081596375e-01 - <_> - - 0 -1 255 8.0412777606397867e-04 - - -5.1374572515487671e-01 1.4820599555969238e-01 - <_> - - 0 -1 256 -6.8827301263809204e-02 - - 3.2834580540657043e-01 -2.1098789572715759e-01 - <_> - - 0 -1 257 -2.6670019142329693e-03 - - 1.6911430656909943e-01 -3.8614910840988159e-01 - <_> - - 0 -1 258 1.7666140571236610e-02 - - -2.7672740817070007e-01 2.1801890432834625e-01 - <_> - - 0 -1 259 7.4831801466643810e-03 - - -3.8488918542861938e-01 1.6186140477657318e-01 - <_> - - 0 -1 260 -1.6251010820269585e-02 - - -4.6217259764671326e-01 4.9147199839353561e-02 - <_> - - 0 -1 261 3.9933170774020255e-04 - - -4.5336130261421204e-01 1.0460279881954193e-01 - <_> - - 0 -1 262 -1.5297180041670799e-02 - - -1.4113479852676392e-01 1.1434920132160187e-01 - <_> - - 0 -1 263 -6.3068820163607597e-03 - - 1.6264270246028900e-01 -3.1081709265708923e-01 - <_> - - 0 -1 264 -1.2744629755616188e-02 - - -6.6173952817916870e-01 6.7844212055206299e-02 - <_> - - 0 -1 265 -1.0559420287609100e-01 - - -5.1333832740783691e-01 7.1062602102756500e-02 - <_> - - 0 -1 266 2.1958440542221069e-02 - - 1.3662010431289673e-02 -5.3517282009124756e-01 - <_> - - 0 -1 267 1.6034189611673355e-02 - - -3.5287639498710632e-01 1.0490509867668152e-01 - <_> - - 0 -1 268 -6.5577318891882896e-03 - - 2.1489949524402618e-01 -1.9894179701805115e-01 - <_> - - 0 -1 269 -1.1923479847609997e-02 - - -5.2076560258865356e-01 6.7639470100402832e-02 - <_> - - 0 -1 270 8.6674906313419342e-02 - - 5.8022700250148773e-02 -5.6969362497329712e-01 - <_> - - 0 -1 271 -2.3583239817526191e-04 - - 1.6676810383796692e-01 -2.1293079853057861e-01 - <_> - - 0 -1 272 2.2656060173176229e-04 - - -1.0723900049924850e-01 8.0340780317783356e-02 - <_> - - 0 -1 273 -3.8619268685579300e-02 - - -4.8281979560852051e-01 6.4317606389522552e-02 - <_> - - 0 -1 274 -3.6343471147119999e-03 - - 1.6469269990921021e-01 -1.2586009502410889e-01 - <_> - - 0 -1 275 -1.3567389547824860e-01 - - 6.8711781501770020e-01 -4.5401938259601593e-02 - <_> - - 0 -1 276 -5.9284181334078312e-03 - - -4.4602438807487488e-01 7.7744297683238983e-02 - <_> - - 0 -1 277 -3.8721960037946701e-02 - - -7.9545962810516357e-01 2.7273029088973999e-02 - <_> - - 0 -1 278 2.7111990493722260e-04 - - -6.1464820057153702e-02 8.6636051535606384e-02 - <_> - - 0 -1 279 -8.9391563087701797e-03 - - 3.2042619585990906e-01 -9.4426132738590240e-02 - <_> - - 0 -1 280 4.0600231289863586e-01 - - -1.4507249929010868e-02 4.0071460604667664e-01 - <_> - - 0 -1 281 3.5274639725685120e-01 - - -4.8782840371131897e-02 5.8633488416671753e-01 - <_> - - 0 -1 282 -2.6537929079495370e-04 - - 1.6140839457511902e-01 -2.1041369438171387e-01 - <_> - - 0 -1 283 -1.2319950386881828e-02 - - -5.9739661216735840e-01 4.0629621595144272e-02 - <_> - - 0 -1 284 -1.3849560171365738e-02 - - -6.8779480457305908e-01 2.8297599405050278e-02 - <_> - - 0 -1 285 -3.0354750924743712e-04 - - 1.1384069919586182e-01 -2.1501390635967255e-01 - <_> - - 0 -1 286 -3.9106961339712143e-02 - - -2.2600589692592621e-01 3.9526809006929398e-02 - <_> - - 0 -1 287 -2.8095500543713570e-02 - - -3.5950079560279846e-01 7.4736073613166809e-02 - <_> - - 0 -1 288 -2.1256110072135925e-01 - - -7.1098762750625610e-01 4.1869599372148514e-02 - <_> - - 0 -1 289 -7.9028336331248283e-03 - - 3.0954331159591675e-01 -8.6424186825752258e-02 - <_> - - 0 -1 290 1.1795709840953350e-02 - - 2.5133460760116577e-02 -6.6756761074066162e-01 - <_> - - 0 -1 291 -1.0672540403902531e-02 - - -5.7254207134246826e-01 3.8454119116067886e-02 - <_> - - 0 -1 292 1.9260150194168091e-01 - - 4.5295011252164841e-02 -3.5983958840370178e-01 - <_> - - 0 -1 293 2.7458968758583069e-01 - - 3.7602171301841736e-02 -6.7104452848434448e-01 - <_> - - 0 -1 294 -2.9315929859876633e-02 - - -5.7990521192550659e-01 3.4113410860300064e-02 - <_> - - 0 -1 295 -3.4563058614730835e-01 - - -7.7321988344192505e-01 2.6545749977231026e-02 - <_> - - 0 -1 296 1.0821919888257980e-01 - - 2.6538049802184105e-02 -5.1272237300872803e-01 - <_> - - 0 -1 297 1.5225330367684364e-02 - - -2.8461378812789917e-01 9.5019251108169556e-02 - <_> - - 0 -1 298 -1.3128579594194889e-02 - - 2.4167710542678833e-01 -9.8213009536266327e-02 - <_> - - 0 -1 299 3.9482329040765762e-02 - - -8.4126733243465424e-02 3.1721648573875427e-01 - <_> - - 0 -1 300 2.0438270270824432e-01 - - -9.0963877737522125e-02 2.7314299345016479e-01 - <_> - - 0 -1 301 -2.1871099306736141e-04 - - 1.2994079291820526e-01 -1.9457989931106567e-01 - <_> - - 0 -1 302 -9.3532271683216095e-02 - - 4.6456810832023621e-01 -6.9762058556079865e-02 - <_> - - 0 -1 303 2.3594809696078300e-02 - - -1.6312980651855469e-01 1.5879690647125244e-01 - <_> - - 0 -1 304 2.3572299629449844e-02 - - 3.4230828285217285e-02 -3.9106941223144531e-01 - <_> - - 0 -1 305 -2.8218850493431091e-02 - - 4.9798300862312317e-01 -5.4106999188661575e-02 - <_> - - 0 -1 306 -4.6584788709878922e-02 - - -4.2779120802879333e-01 4.1826229542493820e-02 - <_> - - 0 -1 307 1.1646820232272148e-02 - - 6.8037100136280060e-02 -3.5714611411094666e-01 - <_> - - 0 -1 308 -1.9526390731334686e-01 - - 2.1971330046653748e-01 -1.0934519767761230e-01 - <_> - 70 - -1.5406730175018311e+00 - - <_> - - 0 -1 309 -6.0963228344917297e-02 - - 2.6233229041099548e-01 -3.9964640140533447e-01 - <_> - - 0 -1 310 3.1858150032348931e-04 - - -1.8744090199470520e-01 1.2887619435787201e-01 - <_> - - 0 -1 311 -1.7338279634714127e-02 - - 1.5848200023174286e-01 -4.1080018877983093e-01 - <_> - - 0 -1 312 1.9554449617862701e-01 - - -4.1255399584770203e-01 1.6843290627002716e-01 - <_> - - 0 -1 313 -1.6848340630531311e-02 - - 1.5632760524749756e-01 -4.2258378863334656e-01 - <_> - - 0 -1 314 6.7765302956104279e-02 - - 8.8457070291042328e-02 -4.5746278762817383e-01 - <_> - - 0 -1 315 -2.1593479439616203e-02 - - 4.3105560541152954e-01 -1.1188620328903198e-01 - <_> - - 0 -1 316 2.2325530648231506e-02 - - -1.7106969654560089e-01 1.1900480091571808e-01 - <_> - - 0 -1 317 4.1217468678951263e-02 - - 1.1528480052947998e-01 -4.2701280117034912e-01 - <_> - - 0 -1 318 -2.0137800311204046e-04 - - 1.7593939602375031e-01 -2.0617599785327911e-01 - <_> - - 0 -1 319 2.0204859902150929e-04 - - -5.6596899032592773e-01 8.9145816862583160e-02 - <_> - - 0 -1 320 -3.0921408534049988e-01 - - 3.4555140137672424e-01 -1.0850270092487335e-01 - <_> - - 0 -1 321 -6.1448230408132076e-03 - - 1.8596710264682770e-01 -2.0050209760665894e-01 - <_> - - 0 -1 322 -1.2021329998970032e-01 - - -3.4771358966827393e-01 5.4678130894899368e-02 - <_> - - 0 -1 323 -1.4376080036163330e-01 - - -5.4118317365646362e-01 6.1214160174131393e-02 - <_> - - 0 -1 324 -1.2037059664726257e-01 - - -6.1475539207458496e-01 1.6389599069952965e-02 - <_> - - 0 -1 325 4.2673919349908829e-02 - - 6.1599899083375931e-02 -4.8987519741058350e-01 - <_> - - 0 -1 326 2.0105950534343719e-01 - - 1.9135080277919769e-02 -4.4107690453529358e-01 - <_> - - 0 -1 327 2.0882239937782288e-01 - - 6.1363980174064636e-02 -5.6655067205429077e-01 - <_> - - 0 -1 328 3.4317639074288309e-04 - - -3.7903869152069092e-01 8.0770552158355713e-02 - <_> - - 0 -1 329 1.1899280361831188e-02 - - 5.1373660564422607e-02 -5.1244020462036133e-01 - <_> - - 0 -1 330 -1.5274089761078358e-02 - - -6.5564781427383423e-01 3.1176609918475151e-02 - <_> - - 0 -1 331 2.0450940355658531e-02 - - -1.1008310317993164e-01 2.4426600337028503e-01 - <_> - - 0 -1 332 1.0915989987552166e-02 - - -3.0113309621810913e-01 8.4650352597236633e-02 - <_> - - 0 -1 333 6.5979440696537495e-03 - - -2.3539529740810394e-01 1.1103770136833191e-01 - <_> - - 0 -1 334 7.4403129518032074e-02 - - 2.6583429425954819e-02 -5.2900832891464233e-01 - <_> - - 0 -1 335 9.6808141097426414e-03 - - -3.1914350390434265e-01 9.1770917177200317e-02 - <_> - - 0 -1 336 2.9621220892295241e-04 - - -2.4492859840393066e-01 2.6193821430206299e-01 - <_> - - 0 -1 337 9.8016488552093506e-01 - - 4.3550208210945129e-02 -5.0767660140991211e-01 - <_> - - 0 -1 338 -3.1622480601072311e-02 - - -8.4246248006820679e-01 3.8115619681775570e-03 - <_> - - 0 -1 339 -2.3534629493951797e-02 - - -4.1606828570365906e-01 5.6047659367322922e-02 - <_> - - 0 -1 340 -2.7265268727205694e-04 - - 7.3260016739368439e-02 -1.2437839806079865e-01 - <_> - - 0 -1 341 3.2802440226078033e-02 - - 4.6918708831071854e-02 -5.4838627576828003e-01 - <_> - - 0 -1 342 2.9037919011898339e-04 - - -7.6424241065979004e-02 7.5254246592521667e-02 - <_> - - 0 -1 343 -2.0024979487061501e-02 - - -6.4532381296157837e-01 3.3612970262765884e-02 - <_> - - 0 -1 344 -2.7752740425057709e-04 - - 8.7540581822395325e-02 -9.9770903587341309e-02 - <_> - - 0 -1 345 7.7714829239994287e-04 - - -1.1906430125236511e-01 2.0813730359077454e-01 - <_> - - 0 -1 346 -3.3943509333766997e-04 - - 1.0715380311012268e-01 -3.6650410294532776e-01 - <_> - - 0 -1 347 -3.1033109873533249e-02 - - -3.9916810393333435e-01 8.1188216805458069e-02 - <_> - - 0 -1 348 -1.7289260402321815e-02 - - 3.8013750314712524e-01 -6.0977298766374588e-02 - <_> - - 0 -1 349 -1.5011649578809738e-02 - - -3.3468168973922729e-01 6.8933099508285522e-02 - <_> - - 0 -1 350 6.4567357301712036e-02 - - 6.5394707024097443e-02 -4.7988981008529663e-01 - <_> - - 0 -1 351 1.2624289840459824e-02 - - -2.0736390352249146e-01 1.0337830334901810e-01 - <_> - - 0 -1 352 2.3402009159326553e-02 - - 1.9422940909862518e-02 -2.9609990119934082e-01 - <_> - - 0 -1 353 1.0855530202388763e-01 - - 3.5537008196115494e-02 -5.5214291810989380e-01 - <_> - - 0 -1 354 4.5320361852645874e-02 - - 5.1564838737249374e-02 -2.5036799907684326e-01 - <_> - - 0 -1 355 -5.7765920646488667e-03 - - -3.6300620436668396e-01 6.0400400310754776e-02 - <_> - - 0 -1 356 4.2834520339965820e-02 - - -1.0816460102796555e-01 5.9968799352645874e-02 - <_> - - 0 -1 357 -6.7743198014795780e-03 - - 2.1504840254783630e-01 -9.3404106795787811e-02 - <_> - - 0 -1 358 1.1993249878287315e-02 - - 1.7558900639414787e-02 -7.4426478147506714e-01 - <_> - - 0 -1 359 -7.5555630028247833e-03 - - -3.8360419869422913e-01 4.8056539148092270e-02 - <_> - - 0 -1 360 5.1661770790815353e-02 - - -4.0535770356655121e-02 2.7973321080207825e-01 - <_> - - 0 -1 361 -3.4890910610556602e-03 - - 1.1065530031919479e-01 -1.8241560459136963e-01 - <_> - - 0 -1 362 -1.7821760475635529e-01 - - 4.6676158905029297e-01 -4.5715868473052979e-02 - <_> - - 0 -1 363 -3.9882469922304153e-02 - - -3.6969459056854248e-01 6.6279433667659760e-02 - <_> - - 0 -1 364 8.6848186329007149e-03 - - -9.0845301747322083e-02 2.9390209913253784e-01 - <_> - - 0 -1 365 -9.8893903195858002e-03 - - -5.9415078163146973e-01 3.5158470273017883e-02 - <_> - - 0 -1 366 1.2979790568351746e-01 - - -6.3968099653720856e-02 3.1669330596923828e-01 - <_> - - 0 -1 367 -2.2091900929808617e-02 - - -7.3574930429458618e-01 3.4748189151287079e-02 - <_> - - 0 -1 368 6.3688866794109344e-02 - - -4.8844788223505020e-02 1.8822559714317322e-01 - <_> - - 0 -1 369 -2.8462480986490846e-04 - - 1.4634150266647339e-01 -1.2434139847755432e-01 - <_> - - 0 -1 370 8.7389163672924042e-03 - - -8.8357016444206238e-02 3.6513170599937439e-01 - <_> - - 0 -1 371 -8.5483584553003311e-03 - - -3.7375131249427795e-01 4.9242861568927765e-02 - <_> - - 0 -1 372 -4.8324568197131157e-03 - - 3.0512019991874695e-01 -8.7134227156639099e-02 - <_> - - 0 -1 373 9.0768225491046906e-03 - - 5.4005049169063568e-02 -3.6545351147651672e-01 - <_> - - 0 -1 374 -4.1476011276245117e-02 - - -2.6398089528083801e-01 3.6431320011615753e-02 - <_> - - 0 -1 375 -1.7926920205354691e-02 - - -2.0585890114307404e-01 9.5735296607017517e-02 - <_> - - 0 -1 376 1.3466989621520042e-02 - - 4.0114641189575195e-02 -2.6507300138473511e-01 - <_> - - 0 -1 377 -1.0521490126848221e-02 - - 3.3944410085678101e-01 -6.2721483409404755e-02 - <_> - - 0 -1 378 9.0459967032074928e-03 - - -1.1153969913721085e-01 3.6552271246910095e-01 - <_> - 77 - -1.5132089853286743e+00 - - <_> - - 0 -1 379 2.9219689965248108e-01 - - -3.0517441034317017e-01 3.1100711226463318e-01 - <_> - - 0 -1 380 4.8884529620409012e-02 - - -4.3176358938217163e-01 9.0919703245162964e-02 - <_> - - 0 -1 381 -8.6104847490787506e-02 - - 2.3504100739955902e-01 -2.4588750302791595e-01 - <_> - - 0 -1 382 -3.7824749946594238e-02 - - 1.1865279823541641e-01 -1.6027280688285828e-01 - <_> - - 0 -1 383 5.1638111472129822e-03 - - -3.0879729986190796e-01 1.6927860677242279e-01 - <_> - - 0 -1 384 1.0608089715242386e-01 - - -3.2493358850479126e-01 2.0097799599170685e-01 - <_> - - 0 -1 385 -1.7758550122380257e-02 - - 1.1281190067529678e-01 -3.5320740938186646e-01 - <_> - - 0 -1 386 -4.9341689795255661e-02 - - 1.4547340571880341e-01 -2.6537749171257019e-01 - <_> - - 0 -1 387 2.5910969823598862e-02 - - 1.2290839850902557e-01 -4.1275170445442200e-01 - <_> - - 0 -1 388 5.6900721974670887e-03 - - -4.1842108964920044e-01 9.8855160176753998e-02 - <_> - - 0 -1 389 -1.0024379938840866e-01 - - 3.8681399822235107e-01 -9.5526076853275299e-02 - <_> - - 0 -1 390 -2.0592489454429597e-04 - - 1.0861500352621078e-01 -1.1460640281438828e-01 - <_> - - 0 -1 391 -2.4438640684820712e-04 - - 1.3918270170688629e-01 -2.2799800336360931e-01 - <_> - - 0 -1 392 -2.2062960488256067e-04 - - 2.0565949380397797e-01 -2.7677100896835327e-01 - <_> - - 0 -1 393 -9.5974102616310120e-02 - - 3.0785810947418213e-01 -1.1823830008506775e-01 - <_> - - 0 -1 394 -1.5439930558204651e-01 - - 4.4712421298027039e-01 -1.7546219751238823e-02 - <_> - - 0 -1 395 6.2385208904743195e-02 - - -1.2762880325317383e-01 2.6652419567108154e-01 - <_> - - 0 -1 396 -2.1663220599293709e-02 - - -5.5112272500991821e-01 7.8566007316112518e-02 - <_> - - 0 -1 397 2.4211770296096802e-01 - - -8.1605702638626099e-02 4.1426479816436768e-01 - <_> - - 0 -1 398 4.3407708406448364e-02 - - 2.9027709737420082e-02 -6.5751147270202637e-01 - <_> - - 0 -1 399 -2.5835740962065756e-04 - - 1.4794899523258209e-01 -1.8168459832668304e-01 - <_> - - 0 -1 400 -2.0531630143523216e-02 - - -3.0385929346084595e-01 5.8148749172687531e-02 - <_> - - 0 -1 401 -3.5120129585266113e-02 - - -7.7284640073776245e-01 3.3544670790433884e-02 - <_> - - 0 -1 402 9.0519672632217407e-01 - - 5.8951519429683685e-02 -4.0955621004104614e-01 - <_> - - 0 -1 403 -2.9139410704374313e-02 - - -4.9474939703941345e-01 4.9022089689970016e-02 - <_> - - 0 -1 404 -8.9205689728260040e-03 - - 1.7033359408378601e-01 -1.2763510644435883e-01 - <_> - - 0 -1 405 -6.8206740543246269e-03 - - -4.4272041320800781e-01 6.4747646450996399e-02 - <_> - - 0 -1 406 -1.1916610412299633e-02 - - -4.2080488801002502e-01 1.4589769765734673e-02 - <_> - - 0 -1 407 1.4910879544913769e-02 - - -2.6192238926887512e-01 9.8739542067050934e-02 - <_> - - 0 -1 408 -3.9695478975772858e-02 - - -5.7163047790527344e-01 1.5096279792487621e-02 - <_> - - 0 -1 409 -2.1801660477649420e-04 - - 1.2833200395107269e-01 -2.1621960401535034e-01 - <_> - - 0 -1 410 -4.5885100960731506e-02 - - -5.8307892084121704e-01 2.3085020482540131e-02 - <_> - - 0 -1 411 -3.7609770894050598e-02 - - -4.7697749733924866e-01 4.9783270806074142e-02 - <_> - - 0 -1 412 -7.9078450798988342e-03 - - 2.8025069832801819e-01 -8.0540910363197327e-02 - <_> - - 0 -1 413 3.9813838899135590e-02 - - -6.3936218619346619e-02 4.0940278768539429e-01 - <_> - - 0 -1 414 4.4679851271212101e-03 - - -6.8359166383743286e-02 1.8522049486637115e-01 - <_> - - 0 -1 415 -7.4347038753330708e-03 - - 2.9873400926589966e-01 -9.6865907311439514e-02 - <_> - - 0 -1 416 -2.6862850063480437e-04 - - 8.8527821004390717e-02 -1.4215320348739624e-01 - <_> - - 0 -1 417 -1.6553189605474472e-02 - - -4.9239259958267212e-01 4.9005638808012009e-02 - <_> - - 0 -1 418 9.2472568154335022e-02 - - 3.3866059035062790e-02 -4.1273859143257141e-01 - <_> - - 0 -1 419 2.5774519890546799e-02 - - -2.2871309518814087e-01 1.2359119951725006e-01 - <_> - - 0 -1 420 -2.7509099245071411e-01 - - -6.7499440908432007e-01 3.4330759197473526e-02 - <_> - - 0 -1 421 7.1902588009834290e-02 - - 4.1956070810556412e-02 -4.7635290026664734e-01 - <_> - - 0 -1 422 3.1190859153866768e-02 - - 2.7266679331660271e-02 -3.0001860857009888e-01 - <_> - - 0 -1 423 -1.7863180488348007e-02 - - -3.7337848544120789e-01 6.1663690954446793e-02 - <_> - - 0 -1 424 1.5114569664001465e-01 - - 5.1791738718748093e-02 -2.1886229515075684e-01 - <_> - - 0 -1 425 2.1793439984321594e-01 - - 6.1016459017992020e-02 -4.1775038838386536e-01 - <_> - - 0 -1 426 1.1218019761145115e-02 - - 3.4812860190868378e-02 -5.2636182308197021e-01 - <_> - - 0 -1 427 -1.8883459270000458e-01 - - 5.2004408836364746e-01 -4.3031368404626846e-02 - <_> - - 0 -1 428 -1.4107990078628063e-02 - - -6.1068981885910034e-01 4.0028609335422516e-02 - <_> - - 0 -1 429 -1.8044840544462204e-02 - - -2.6319840550422668e-01 7.3012411594390869e-02 - <_> - - 0 -1 430 6.5544890239834785e-03 - - -8.5429012775421143e-02 2.2411470115184784e-01 - <_> - - 0 -1 431 -1.2311659753322601e-02 - - -4.4297298789024353e-01 4.6654261648654938e-02 - <_> - - 0 -1 432 -7.6358742080628872e-03 - - 1.9960640370845795e-01 -5.2228130400180817e-02 - <_> - - 0 -1 433 -1.9270919263362885e-02 - - -7.6859807968139648e-01 2.4350909516215324e-02 - <_> - - 0 -1 434 9.6641881391406059e-03 - - -1.3469670712947845e-01 1.3244539499282837e-01 - <_> - - 0 -1 435 -1.2020190246403217e-02 - - 3.5538628697395325e-01 -5.2558019757270813e-02 - <_> - - 0 -1 436 -2.2079790011048317e-02 - - -6.7542260885238647e-01 1.2419540435075760e-02 - <_> - - 0 -1 437 -3.0078861163929105e-04 - - 1.2276499718427658e-01 -1.7497499287128448e-01 - <_> - - 0 -1 438 -3.7308711558580399e-02 - - 1.8548089265823364e-01 -9.7975112497806549e-02 - <_> - - 0 -1 439 4.5999120920896530e-02 - - 1.1436489969491959e-01 -2.4614730477333069e-01 - <_> - - 0 -1 440 8.2224510610103607e-02 - - -2.4108020588755608e-02 2.6900330185890198e-01 - <_> - - 0 -1 441 8.1898719072341919e-02 - - -3.9654031395912170e-02 5.0478577613830566e-01 - <_> - - 0 -1 442 4.6143731474876404e-01 - - -4.4239178299903870e-02 4.1229158639907837e-01 - <_> - - 0 -1 443 2.5755251408554614e-04 - - -1.7785720527172089e-01 1.2050230056047440e-01 - <_> - - 0 -1 444 1.5665199607610703e-02 - - -4.8571150749921799e-02 8.1546753644943237e-02 - <_> - - 0 -1 445 4.9880009144544601e-02 - - 4.2151898145675659e-02 -5.3030568361282349e-01 - <_> - - 0 -1 446 -2.7810079045593739e-03 - - 1.1986789852380753e-01 -1.9060449302196503e-01 - <_> - - 0 -1 447 -1.7600769177079201e-02 - - 1.8970359861850739e-01 -8.8979102671146393e-02 - <_> - - 0 -1 448 5.0103738903999329e-03 - - -3.1680819392204285e-01 6.1706308275461197e-02 - <_> - - 0 -1 449 5.5831652134656906e-03 - - -2.0722299814224243e-01 8.9394062757492065e-02 - <_> - - 0 -1 450 1.0134370066225529e-02 - - -7.0040181279182434e-02 4.8694871366024017e-02 - <_> - - 0 -1 451 1.7011690139770508e-01 - - 2.5866439566016197e-02 -7.2743201255798340e-01 - <_> - - 0 -1 452 1.2832039967179298e-02 - - -3.2375771552324295e-02 2.8207421302795410e-01 - <_> - - 0 -1 453 -2.1063549502287060e-04 - - 9.8073638975620270e-02 -1.7797160148620605e-01 - <_> - - 0 -1 454 -1.5745580196380615e-02 - - -3.9818260073661804e-01 2.1284950897097588e-02 - <_> - - 0 -1 455 5.3099099546670914e-02 - - 4.7397170215845108e-02 -3.5792729258537292e-01 - <_> - 67 - -1.5654580593109131e+00 - - <_> - - 0 -1 456 -1.2607829645276070e-02 - - 3.2892930507659912e-01 -2.8717321157455444e-01 - <_> - - 0 -1 457 6.9764256477355957e-02 - - -2.1456170082092285e-01 2.6850989460945129e-01 - <_> - - 0 -1 458 -4.1743788868188858e-02 - - 1.5136370062828064e-01 -3.8764739036560059e-01 - <_> - - 0 -1 459 1.0303430259227753e-01 - - -2.8481671214103699e-01 1.2986589968204498e-01 - <_> - - 0 -1 460 -9.6640773117542267e-02 - - -5.2456647157669067e-01 1.0953909903764725e-01 - <_> - - 0 -1 461 8.0958474427461624e-03 - - 5.1381088793277740e-02 -2.6674580574035645e-01 - <_> - - 0 -1 462 -2.2447129595093429e-04 - - 2.0919109880924225e-01 -2.4358089268207550e-01 - <_> - - 0 -1 463 1.2414649873971939e-01 - - -3.0061379075050354e-01 1.5729129314422607e-01 - <_> - - 0 -1 464 4.7367930412292480e-02 - - -8.4176316857337952e-02 4.1426560282707214e-01 - <_> - - 0 -1 465 -1.9609710201621056e-02 - - 3.4175410866737366e-01 -1.6074979305267334e-01 - <_> - - 0 -1 466 3.4829009324312210e-02 - - 7.5592942535877228e-02 -4.5084610581398010e-01 - <_> - - 0 -1 467 3.1012278795242310e-01 - - -3.9134029299020767e-02 1.4436219632625580e-01 - <_> - - 0 -1 468 2.9249370098114014e-01 - - -6.4225807785987854e-02 4.3533229827880859e-01 - <_> - - 0 -1 469 -2.3114589974284172e-02 - - 3.0709230899810791e-01 -8.9011840522289276e-02 - <_> - - 0 -1 470 2.7578460867516696e-04 - - -3.0701848864555359e-01 9.3834467232227325e-02 - <_> - - 0 -1 471 4.5587219297885895e-02 - - 3.8235291838645935e-02 -3.3477979898452759e-01 - <_> - - 0 -1 472 -2.4057110771536827e-02 - - -4.4573658704757690e-01 6.7070230841636658e-02 - <_> - - 0 -1 473 1.3616659678518772e-02 - - -6.1480499804019928e-02 4.2142671346664429e-01 - <_> - - 0 -1 474 -2.2992959246039391e-02 - - 3.6616420745849609e-01 -8.7241843342781067e-02 - <_> - - 0 -1 475 1.2585769593715668e-01 - - 3.7163209170103073e-02 -3.5607740283012390e-01 - <_> - - 0 -1 476 -8.1533789634704590e-02 - - -4.6987119317054749e-01 6.1010621488094330e-02 - <_> - - 0 -1 477 -2.4753381148912013e-04 - - 1.9363069534301758e-01 -1.8168680369853973e-01 - <_> - - 0 -1 478 -2.6028539286926389e-04 - - 8.4685117006301880e-02 -3.2848459482192993e-01 - <_> - - 0 -1 479 -2.2039060422684997e-04 - - 1.2290880084037781e-01 -1.5494909882545471e-01 - <_> - - 0 -1 480 1.9603030383586884e-01 - - 5.8126050978899002e-02 -4.5621550083160400e-01 - <_> - - 0 -1 481 1.4078690111637115e-01 - - 4.4675320386886597e-02 -5.6197601556777954e-01 - <_> - - 0 -1 482 -2.2961759532336146e-04 - - 1.1912509799003601e-01 -2.1606180071830750e-01 - <_> - - 0 -1 483 -1.9533330574631691e-02 - - -3.9051491022109985e-01 7.0104159414768219e-02 - <_> - - 0 -1 484 1.3873109593987465e-02 - - -7.2445243597030640e-02 3.7747910618782043e-01 - <_> - - 0 -1 485 -1.2634480663109571e-04 - - 9.5786243677139282e-02 -1.2607480585575104e-01 - <_> - - 0 -1 486 -2.4178609251976013e-02 - - -5.3298008441925049e-01 5.0309620797634125e-02 - <_> - - 0 -1 487 -1.4559309929609299e-02 - - 3.9040461182594299e-01 -1.1877249926328659e-01 - <_> - - 0 -1 488 -2.2580049699172378e-04 - - 1.9512599706649780e-01 -1.4849540591239929e-01 - <_> - - 0 -1 489 -2.1493160724639893e-01 - - -6.0010147094726562e-01 2.9111139476299286e-02 - <_> - - 0 -1 490 -1.2839700095355511e-02 - - 3.1576830148696899e-01 -7.2001501917839050e-02 - <_> - - 0 -1 491 -1.9878910854458809e-02 - - 3.2251578569412231e-01 -1.3537259399890900e-01 - <_> - - 0 -1 492 1.0035489685833454e-02 - - -5.6822560727596283e-02 4.6567371487617493e-01 - <_> - - 0 -1 493 -3.7623681128025055e-02 - - -4.2677378654479980e-01 6.4819470047950745e-02 - <_> - - 0 -1 494 1.1324769729981199e-04 - - -1.5958139300346375e-01 1.4778269827365875e-01 - <_> - - 0 -1 495 3.7978328764438629e-02 - - -6.5907582640647888e-02 4.0129879117012024e-01 - <_> - - 0 -1 496 3.9439778774976730e-02 - - -8.4525480866432190e-02 3.5665979981422424e-01 - <_> - - 0 -1 497 -8.9516127482056618e-03 - - -4.3341609835624695e-01 6.1983428895473480e-02 - <_> - - 0 -1 498 8.3888713270425797e-03 - - 4.6857211738824844e-02 -4.7389200329780579e-01 - <_> - - 0 -1 499 7.4398089200258255e-03 - - 4.2178198695182800e-02 -5.1433807611465454e-01 - <_> - - 0 -1 500 -1.0792319662868977e-02 - - -5.8029949665069580e-01 3.2290369272232056e-02 - <_> - - 0 -1 501 -1.7495209351181984e-02 - - -3.0535429716110229e-01 6.2918312847614288e-02 - <_> - - 0 -1 502 -2.0570710301399231e-02 - - 1.8253210186958313e-01 -1.2104229629039764e-01 - <_> - - 0 -1 503 -1.1084279685746878e-04 - - 1.0002639889717102e-01 -1.4502419531345367e-01 - <_> - - 0 -1 504 -1.1143789626657963e-02 - - -3.4728500247001648e-01 6.5074883401393890e-02 - <_> - - 0 -1 505 -9.1553200036287308e-03 - - 3.3986049890518188e-01 -1.3546380400657654e-01 - <_> - - 0 -1 506 -2.1860719425603747e-04 - - 1.4218950271606445e-01 -1.6001039743423462e-01 - <_> - - 0 -1 507 -8.7175592780113220e-02 - - 3.0803269147872925e-01 -7.5192652642726898e-02 - <_> - - 0 -1 508 7.8020721673965454e-02 - - -9.8369129002094269e-02 2.5249159336090088e-01 - <_> - - 0 -1 509 2.8408560319803655e-04 - - -3.8713818788528442e-01 4.7610171139240265e-02 - <_> - - 0 -1 510 -1.2072480283677578e-02 - - 2.1239200234413147e-01 -1.0058870166540146e-01 - <_> - - 0 -1 511 9.9354498088359833e-02 - - 2.4916980415582657e-02 -5.6729847192764282e-01 - <_> - - 0 -1 512 1.9157710485160351e-03 - - -5.0840312242507935e-01 4.1036780923604965e-02 - <_> - - 0 -1 513 -1.2407809845171869e-04 - - 7.8671306371688843e-02 -1.3265369832515717e-01 - <_> - - 0 -1 514 -5.2246060222387314e-02 - - 1.1491920053958893e-01 -1.7707020044326782e-01 - <_> - - 0 -1 515 -1.8520159937907010e-04 - - 7.4766620993614197e-02 -1.2861029803752899e-01 - <_> - - 0 -1 516 1.2496319599449635e-02 - - -3.7268429994583130e-02 5.8338952064514160e-01 - <_> - - 0 -1 517 -2.0702749490737915e-02 - - -4.5835781097412109e-01 2.9882829636335373e-02 - <_> - - 0 -1 518 -1.0285720054525882e-04 - - 1.1698140203952789e-01 -1.7797960340976715e-01 - <_> - - 0 -1 519 -2.9295669868588448e-02 - - -4.7592011094093323e-01 5.5395901203155518e-02 - <_> - - 0 -1 520 2.6850448921322823e-03 - - 9.5413416624069214e-02 -2.3697119951248169e-01 - <_> - - 0 -1 521 3.6398479342460632e-01 - - 2.4766860529780388e-02 -7.3781871795654297e-01 - <_> - - 0 -1 522 3.4822531044483185e-02 - - -3.7149909883737564e-02 5.8010172843933105e-01 - <_> - 99 - -1.5075240135192871e+00 - - <_> - - 0 -1 523 -6.6602258011698723e-03 - - 3.1043940782546997e-01 -1.9141380488872528e-01 - <_> - - 0 -1 524 8.8032007217407227e-02 - - -2.8957960009574890e-01 1.2161549925804138e-01 - <_> - - 0 -1 525 -8.2375640049576759e-03 - - 1.9459870457649231e-01 -2.7759641408920288e-01 - <_> - - 0 -1 526 4.1018098592758179e-01 - - 5.4545659571886063e-02 -6.9322890043258667e-01 - <_> - - 0 -1 527 -7.9229446128010750e-03 - - 1.3063080608844757e-01 -3.8455259799957275e-01 - <_> - - 0 -1 528 7.8757777810096741e-02 - - -1.8611170351505280e-01 1.0287279635667801e-01 - <_> - - 0 -1 529 1.0222750157117844e-01 - - -2.9705610871315002e-01 1.5016749501228333e-01 - <_> - - 0 -1 530 -6.4451918005943298e-02 - - -4.1343700885772705e-01 1.0809410363435745e-01 - <_> - - 0 -1 531 -3.6805730313062668e-02 - - 3.6842620372772217e-01 -1.1410260200500488e-01 - <_> - - 0 -1 532 -2.9369849711656570e-02 - - 3.2764801383018494e-01 -8.0264106392860413e-02 - <_> - - 0 -1 533 6.7123891785740852e-03 - - 8.8286422193050385e-02 -4.4459021091461182e-01 - <_> - - 0 -1 534 -1.5381410717964172e-01 - - -4.5621570944786072e-01 1.8093600869178772e-02 - <_> - - 0 -1 535 -2.5389369577169418e-02 - - -4.6903249621391296e-01 6.1550658196210861e-02 - <_> - - 0 -1 536 -2.9891099780797958e-02 - - -2.8205209970474243e-01 2.7893319725990295e-02 - <_> - - 0 -1 537 -2.3889240401331335e-04 - - 8.6677610874176025e-02 -3.5725289583206177e-01 - <_> - - 0 -1 538 9.6705302596092224e-02 - - 3.3406659960746765e-02 -2.0783829689025879e-01 - <_> - - 0 -1 539 9.1295214369893074e-03 - - -9.9172890186309814e-02 3.0859309434890747e-01 - <_> - - 0 -1 540 2.9348930716514587e-01 - - 8.1442613154649734e-03 -5.0951921939849854e-01 - <_> - - 0 -1 541 -8.3247363567352295e-02 - - -4.8498851060867310e-01 6.0873661190271378e-02 - <_> - - 0 -1 542 -8.3527393639087677e-02 - - -1.0333900153636932e-01 1.5871569514274597e-02 - <_> - - 0 -1 543 -1.2028300017118454e-01 - - -4.3540289998054504e-01 6.3313230872154236e-02 - <_> - - 0 -1 544 3.3538970351219177e-01 - - 1.3954630121588707e-02 -4.4239100813865662e-01 - <_> - - 0 -1 545 -1.6432419419288635e-02 - - -4.2601698637008667e-01 5.8607041835784912e-02 - <_> - - 0 -1 546 -1.9124349637422711e-04 - - 6.0554228723049164e-02 -7.7583022415637970e-02 - <_> - - 0 -1 547 2.3965220316313207e-04 - - -1.2831470370292664e-01 2.0453229546546936e-01 - <_> - - 0 -1 548 1.4102800190448761e-01 - - 4.2550500482320786e-02 -5.2618932723999023e-01 - <_> - - 0 -1 549 1.6046499833464622e-02 - - -2.4661840498447418e-01 8.1378452479839325e-02 - <_> - - 0 -1 550 5.3162779659032822e-02 - - 3.5204000771045685e-02 -2.8310409188270569e-01 - <_> - - 0 -1 551 -4.1723258793354034e-02 - - -2.9830178618431091e-01 8.0123953521251678e-02 - <_> - - 0 -1 552 -5.5392801761627197e-02 - - 2.2191530466079712e-01 -8.9730821549892426e-02 - <_> - - 0 -1 553 1.7957370728254318e-02 - - -9.2552073299884796e-02 2.5006940960884094e-01 - <_> - - 0 -1 554 -4.0468379855155945e-01 - - 1.8231350183486938e-01 -1.1424650251865387e-01 - <_> - - 0 -1 555 -1.2040740251541138e-01 - - 4.0144130587577820e-01 -4.9775429069995880e-02 - <_> - - 0 -1 556 1.2747700512409210e-01 - - 2.8634460642933846e-02 -3.6931669712066650e-01 - <_> - - 0 -1 557 -2.1081299928482622e-04 - - 1.0899789631366730e-01 -1.8358060717582703e-01 - <_> - - 0 -1 558 2.0266290754079819e-02 - - -1.1471740156412125e-01 2.3657630383968353e-01 - <_> - - 0 -1 559 -9.3857832252979279e-02 - - -4.4467198848724365e-01 4.6323359012603760e-02 - <_> - - 0 -1 560 -3.9089050143957138e-02 - - 9.0057179331779480e-02 -2.4328909814357758e-01 - <_> - - 0 -1 561 1.1693879961967468e-02 - - -1.3434140384197235e-01 1.5598419308662415e-01 - <_> - - 0 -1 562 -2.3392560251522809e-04 - - 1.0660090297460556e-01 -1.5031139552593231e-01 - <_> - - 0 -1 563 7.6654240489006042e-02 - - 4.6630710363388062e-02 -4.4846519827842712e-01 - <_> - - 0 -1 564 -6.6552842035889626e-03 - - 2.9908859729766846e-01 -1.4496180415153503e-01 - <_> - - 0 -1 565 6.4779841341078281e-03 - - 5.7015229016542435e-02 -3.5907289385795593e-01 - <_> - - 0 -1 566 -7.7762663364410400e-02 - - 5.0252002477645874e-01 -4.3528381735086441e-02 - <_> - - 0 -1 567 -1.3975870609283447e-01 - - 3.4654599428176880e-01 -5.2005261182785034e-02 - <_> - - 0 -1 568 -1.2759920209646225e-02 - - -6.6591322422027588e-01 2.0983880385756493e-02 - <_> - - 0 -1 569 1.1362520046532154e-02 - - 2.2282190620899200e-02 -6.6851091384887695e-01 - <_> - - 0 -1 570 -2.2312329709529877e-01 - - -4.6105810999870300e-01 6.2970318831503391e-03 - <_> - - 0 -1 571 2.2931410057935864e-04 - - -2.1111820638179779e-01 8.1771172583103180e-02 - <_> - - 0 -1 572 -6.0226261615753174e-02 - - 3.2546809315681458e-01 -2.1682400256395340e-02 - <_> - - 0 -1 573 3.0173239065334201e-04 - - -3.2320269942283630e-01 7.0820853114128113e-02 - <_> - - 0 -1 574 -2.6154008810408413e-04 - - 6.8223357200622559e-02 -1.0242590308189392e-01 - <_> - - 0 -1 575 -7.4847848154604435e-03 - - 2.2404240071773529e-01 -8.1188187003135681e-02 - <_> - - 0 -1 576 -1.8517110496759415e-02 - - -5.5280369520187378e-01 3.5704329609870911e-02 - <_> - - 0 -1 577 8.1348747014999390e-02 - - -7.7756702899932861e-02 2.3968160152435303e-01 - <_> - - 0 -1 578 -3.1357801053673029e-03 - - -3.5508909821510315e-01 3.3410448580980301e-02 - <_> - - 0 -1 579 -2.6459500077180564e-04 - - 1.0398519784212112e-01 -1.5494589507579803e-01 - <_> - - 0 -1 580 -7.7518890611827374e-03 - - 3.0721589922904968e-01 -1.4710199832916260e-01 - <_> - - 0 -1 581 -1.8430210184305906e-03 - - -3.9274838566780090e-01 4.6835970133543015e-02 - <_> - - 0 -1 582 2.1122969337739050e-04 - - -2.1824510395526886e-01 1.2243290245532990e-01 - <_> - - 0 -1 583 2.2105030075181276e-04 - - -1.8396340310573578e-01 8.9410737156867981e-02 - <_> - - 0 -1 584 -1.5965649485588074e-01 - - 9.6163272857666016e-02 -8.5151679813861847e-02 - <_> - - 0 -1 585 3.0088219791650772e-02 - - -3.9590418338775635e-02 4.7149899601936340e-01 - <_> - - 0 -1 586 -6.0294209979474545e-03 - - 1.9853250682353973e-01 -1.0366839915513992e-01 - <_> - - 0 -1 587 1.2534939683973789e-02 - - -4.6515099704265594e-02 3.7293449044227600e-01 - <_> - - 0 -1 588 2.4954970926046371e-02 - - 3.7810660898685455e-02 -2.1269759535789490e-01 - <_> - - 0 -1 589 9.9147337675094604e-01 - - 4.0480270981788635e-02 -4.2342019081115723e-01 - <_> - - 0 -1 590 5.2983271889388561e-03 - - 8.7228961288928986e-02 -2.7821278572082520e-01 - <_> - - 0 -1 591 1.9360490143299103e-01 - - -9.5363870263099670e-02 1.9188280403614044e-01 - <_> - - 0 -1 592 -7.6572492718696594e-02 - - 6.6240328550338745e-01 -4.9499049782752991e-03 - <_> - - 0 -1 593 2.8880339115858078e-02 - - -5.7680319994688034e-02 3.2165309786796570e-01 - <_> - - 0 -1 594 -1.4741529710590839e-02 - - -8.6476959288120270e-02 3.2484710216522217e-02 - <_> - - 0 -1 595 2.1824369207024574e-02 - - 5.7392548769712448e-02 -3.4417140483856201e-01 - <_> - - 0 -1 596 -2.2812260687351227e-01 - - -5.2481979131698608e-01 6.9780298508703709e-03 - <_> - - 0 -1 597 2.8111049532890320e-01 - - 2.4345170706510544e-02 -6.4987301826477051e-01 - <_> - - 0 -1 598 -2.2957239300012589e-02 - - -4.5815429091453552e-01 3.0206430703401566e-02 - <_> - - 0 -1 599 -6.0340039432048798e-02 - - 4.6401140093803406e-01 -3.7225980311632156e-02 - <_> - - 0 -1 600 2.7569150552153587e-02 - - 2.0976860076189041e-02 -6.9014948606491089e-01 - <_> - - 0 -1 601 2.6252120733261108e-04 - - -2.3853969573974609e-01 7.9771563410758972e-02 - <_> - - 0 -1 602 1.8969880416989326e-02 - - 3.1024020165205002e-02 -2.7818429470062256e-01 - <_> - - 0 -1 603 5.2282828092575073e-01 - - 1.7105970531702042e-02 -7.9434311389923096e-01 - <_> - - 0 -1 604 -3.1894691288471222e-02 - - 2.7892321348190308e-01 -5.4069779813289642e-02 - <_> - - 0 -1 605 1.5336290001869202e-02 - - 4.7054331749677658e-02 -3.6111220717430115e-01 - <_> - - 0 -1 606 -4.1970831155776978e-01 - - -5.9871810674667358e-01 1.1463830247521400e-02 - <_> - - 0 -1 607 -6.7562819458544254e-03 - - 2.2962200641632080e-01 -6.4722940325737000e-02 - <_> - - 0 -1 608 9.8668280988931656e-03 - - -3.7844020873308182e-02 3.3086231350898743e-01 - <_> - - 0 -1 609 -2.1733099594712257e-02 - - 1.0951089859008789e-01 -1.4006720483303070e-01 - <_> - - 0 -1 610 3.0340809375047684e-02 - - 5.3396178409457207e-03 -6.6312831640243530e-01 - <_> - - 0 -1 611 2.7025368763133883e-04 - - -1.5671209990978241e-01 9.8605990409851074e-02 - <_> - - 0 -1 612 -4.1527550667524338e-02 - - 2.3302739858627319e-01 -6.2329120934009552e-02 - <_> - - 0 -1 613 -6.1723008751869202e-02 - - 2.4158929288387299e-01 -9.5591858029365540e-02 - <_> - - 0 -1 614 5.9920018538832664e-03 - - 6.7654989659786224e-02 -3.3483079075813293e-01 - <_> - - 0 -1 615 1.0782639682292938e-01 - - -3.6601308733224869e-02 4.4913661479949951e-01 - <_> - - 0 -1 616 1.6222659498453140e-02 - - 1.7488269135355949e-02 -5.8311402797698975e-01 - <_> - - 0 -1 617 -1.0378819890320301e-02 - - -3.5658320784568787e-01 3.7005800753831863e-02 - <_> - - 0 -1 618 -8.4412395954132080e-03 - - 1.4305970072746277e-01 -5.0731118768453598e-02 - <_> - - 0 -1 619 1.4600029587745667e-01 - - 3.2515849918127060e-02 -4.5058611035346985e-01 - <_> - - 0 -1 620 9.8124182224273682e-01 - - 4.8845731653273106e-03 -6.5059781074523926e-01 - <_> - - 0 -1 621 -3.6866790056228638e-01 - - -7.3445898294448853e-01 1.8663220107555389e-02 - <_> - 105 - -1.4267690181732178e+00 - - <_> - - 0 -1 622 -3.5519830882549286e-02 - - 1.6178520023822784e-01 -3.5573509335517883e-01 - <_> - - 0 -1 623 9.1728484258055687e-03 - - -1.2603040039539337e-01 1.0709279775619507e-01 - <_> - - 0 -1 624 2.2142989933490753e-01 - - -7.7310669439611956e-06 -1.2306490478515625e+03 - <_> - - 0 -1 625 1.1212819814682007e-01 - - 9.6115162596106529e-03 -5.5913168191909790e-01 - <_> - - 0 -1 626 2.1457310765981674e-02 - - -3.3965739607810974e-01 1.6609320044517517e-01 - <_> - - 0 -1 627 -1.2972610071301460e-02 - - 2.3398900032043457e-01 -1.6110679507255554e-01 - <_> - - 0 -1 628 -6.6818781197071075e-03 - - 1.3475750386714935e-01 -2.7443009614944458e-01 - <_> - - 0 -1 629 2.5116768665611744e-04 - - -2.6400479674339294e-01 1.1184839904308319e-01 - <_> - - 0 -1 630 1.0441780090332031e-01 - - -2.7721598744392395e-01 1.2263719737529755e-01 - <_> - - 0 -1 631 -1.0307639837265015e-02 - - 4.3872699141502380e-01 -2.2572900354862213e-01 - <_> - - 0 -1 632 -6.5756477415561676e-02 - - -5.4897660017013550e-01 4.4870328158140182e-02 - <_> - - 0 -1 633 -2.3242520168423653e-02 - - 1.6870069503784180e-01 -2.0397870242595673e-01 - <_> - - 0 -1 634 5.6840728968381882e-02 - - -3.5381639003753662e-01 7.3760658502578735e-02 - <_> - - 0 -1 635 -2.8088671388104558e-04 - - 8.4769926965236664e-02 -8.9089483022689819e-02 - <_> - - 0 -1 636 -2.8891719877719879e-02 - - -5.3877258300781250e-01 4.8199739307165146e-02 - <_> - - 0 -1 637 4.8813000321388245e-03 - - -1.0961809754371643e-01 2.2785060107707977e-01 - <_> - - 0 -1 638 -2.2791069932281971e-04 - - 1.5159299969673157e-01 -1.5361729264259338e-01 - <_> - - 0 -1 639 1.7224539071321487e-02 - - 2.6369249448180199e-02 -3.9274901151657104e-01 - <_> - - 0 -1 640 1.9276510924100876e-02 - - 3.9136718958616257e-02 -5.3360277414321899e-01 - <_> - - 0 -1 641 -3.5349979996681213e-02 - - 1.6892379522323608e-01 -4.4725980609655380e-02 - <_> - - 0 -1 642 -2.4690220016054809e-04 - - 9.7651146352291107e-02 -2.2523930668830872e-01 - <_> - - 0 -1 643 -2.3808020341675729e-04 - - 9.1873168945312500e-02 -2.1025580167770386e-01 - <_> - - 0 -1 644 2.2629360319115222e-04 - - -1.3016159832477570e-01 1.7468020319938660e-01 - <_> - - 0 -1 645 -6.8512886762619019e-02 - - 2.2338220477104187e-01 -2.0693479478359222e-01 - <_> - - 0 -1 646 -2.2960439324378967e-02 - - -4.1528278589248657e-01 5.5889990180730820e-02 - <_> - - 0 -1 647 1.2331800162792206e-01 - - -7.2814382612705231e-02 3.2672670483589172e-01 - <_> - - 0 -1 648 -1.5494500100612640e-01 - - -7.8871738910675049e-01 3.1006429344415665e-02 - <_> - - 0 -1 649 -3.1475860625505447e-02 - - -5.5896019935607910e-01 3.1761251389980316e-02 - <_> - - 0 -1 650 -2.5482099503278732e-02 - - 2.5390678644180298e-01 -8.7028287351131439e-02 - <_> - - 0 -1 651 -2.5384381297044456e-04 - - 5.3705450147390366e-02 -1.2352950125932693e-01 - <_> - - 0 -1 652 -2.7292590588331223e-02 - - -5.1358467340469360e-01 3.6035798490047455e-02 - <_> - - 0 -1 653 5.0733588635921478e-02 - - -5.1689028739929199e-02 3.9950218796730042e-01 - <_> - - 0 -1 654 1.0531689971685410e-01 - - 3.4946650266647339e-02 -5.7199978828430176e-01 - <_> - - 0 -1 655 7.6800240203738213e-03 - - 4.9117371439933777e-02 -4.7948908805847168e-01 - <_> - - 0 -1 656 -2.7255711029283702e-04 - - 9.2809818685054779e-02 -1.9553889334201813e-01 - <_> - - 0 -1 657 -1.0534330271184444e-02 - - -5.1635378599166870e-01 3.9697758853435516e-02 - <_> - - 0 -1 658 -1.4953180216252804e-02 - - 1.6262400150299072e-01 -1.2715120613574982e-01 - <_> - - 0 -1 659 -6.0432821512222290e-02 - - 1.6455219686031342e-01 -3.7964299321174622e-02 - <_> - - 0 -1 660 -1.3054289855062962e-02 - - -6.0740822553634644e-01 3.1696751713752747e-02 - <_> - - 0 -1 661 1.6081769764423370e-01 - - -6.5205618739128113e-04 -4.5857870578765869e-01 - <_> - - 0 -1 662 3.4118819981813431e-02 - - -1.1646260321140289e-01 1.5788400173187256e-01 - <_> - - 0 -1 663 3.7732940167188644e-02 - - -3.8753949105739594e-02 1.3495290279388428e-01 - <_> - - 0 -1 664 3.0711879953742027e-02 - - 4.7742258757352829e-02 -4.3035370111465454e-01 - <_> - - 0 -1 665 -3.7949949502944946e-02 - - 1.1755629628896713e-01 -1.4889590442180634e-01 - <_> - - 0 -1 666 2.9360290616750717e-02 - - -7.5253017246723175e-02 2.9323920607566833e-01 - <_> - - 0 -1 667 2.5319901108741760e-01 - - -1.6658699512481689e-01 8.9499808847904205e-02 - <_> - - 0 -1 668 1.2959289550781250e-01 - - -5.5784460157155991e-02 3.4918808937072754e-01 - <_> - - 0 -1 669 -8.8244248181581497e-03 - - 2.7902889251708984e-01 -6.8206131458282471e-02 - <_> - - 0 -1 670 7.8791379928588867e-02 - - -1.5620680153369904e-01 1.1304420232772827e-01 - <_> - - 0 -1 671 -1.2836029753088951e-02 - - -2.3410409688949585e-01 6.8805016577243805e-02 - <_> - - 0 -1 672 -7.9522699117660522e-02 - - -2.5314009189605713e-01 6.0897290706634521e-02 - <_> - - 0 -1 673 3.9636820554733276e-02 - - -2.6448011398315430e-01 8.2383483648300171e-02 - <_> - - 0 -1 674 -2.4699120223522186e-01 - - 3.5435560345649719e-01 -6.6888548433780670e-02 - <_> - - 0 -1 675 -2.2949569392949343e-04 - - 1.1360239982604980e-01 -1.4772799611091614e-01 - <_> - - 0 -1 676 -1.3312259688973427e-02 - - 3.1586068868637085e-01 -5.5901419371366501e-02 - <_> - - 0 -1 677 1.3203780166804790e-02 - - 3.1486440449953079e-02 -2.6412960886955261e-01 - <_> - - 0 -1 678 -1.2269199825823307e-02 - - -5.9234237670898438e-01 2.4248689413070679e-02 - <_> - - 0 -1 679 -1.8059220165014267e-02 - - 3.3865630626678467e-01 -8.0696828663349152e-02 - <_> - - 0 -1 680 2.5429509696550667e-04 - - -2.2284899652004242e-01 7.4211597442626953e-02 - <_> - - 0 -1 681 7.8134778887033463e-03 - - -4.2979419231414795e-02 1.5614709258079529e-01 - <_> - - 0 -1 682 -1.0979229584336281e-02 - - 2.7910730242729187e-01 -5.6510798633098602e-02 - <_> - - 0 -1 683 -1.7990529537200928e-02 - - -6.0465961694717407e-01 3.1155569478869438e-02 - <_> - - 0 -1 684 1.1254849843680859e-02 - - 4.8717640340328217e-02 -3.3757600188255310e-01 - <_> - - 0 -1 685 -2.6132029597647488e-04 - - 1.0562919825315475e-01 -1.3438390195369720e-01 - <_> - - 0 -1 686 -5.1210080273449421e-03 - - -5.5222177505493164e-01 2.6566710323095322e-02 - <_> - - 0 -1 687 2.4672409519553185e-02 - - 9.7258696332573891e-03 -6.1605077981948853e-01 - <_> - - 0 -1 688 -6.7694962024688721e-02 - - -7.3660212755203247e-01 1.9528219476342201e-02 - <_> - - 0 -1 689 -2.8008190914988518e-02 - - -5.0814652442932129e-01 1.0170410387217999e-02 - <_> - - 0 -1 690 -7.1907560341060162e-03 - - 1.4633940160274506e-01 -1.0106740146875381e-01 - <_> - - 0 -1 691 -1.5178619883954525e-02 - - 2.2530260682106018e-01 -7.1203649044036865e-02 - <_> - - 0 -1 692 -1.7735399305820465e-02 - - 1.8737579882144928e-01 -9.3150086700916290e-02 - <_> - - 0 -1 693 2.6827311376109719e-04 - - -5.0975449383258820e-02 7.8092053532600403e-02 - <_> - - 0 -1 694 1.5329830348491669e-02 - - 3.1708821654319763e-02 -4.8529189825057983e-01 - <_> - - 0 -1 695 2.8564469539560378e-04 - - -7.4729010462760925e-02 7.3530480265617371e-02 - <_> - - 0 -1 696 -2.2120429202914238e-02 - - 2.7287200093269348e-01 -6.4062908291816711e-02 - <_> - - 0 -1 697 -2.1887499315198511e-04 - - 6.3031002879142761e-02 -9.6845053136348724e-02 - <_> - - 0 -1 698 -2.1083210594952106e-04 - - 1.0389020293951035e-01 -1.6525639593601227e-01 - <_> - - 0 -1 699 -6.2754601240158081e-03 - - 2.4225880205631256e-01 -7.5907923281192780e-02 - <_> - - 0 -1 700 -2.3757809773087502e-02 - - -3.8318058848381042e-01 4.0133509784936905e-02 - <_> - - 0 -1 701 1.1325069703161716e-02 - - -3.5525530576705933e-02 2.1164399385452271e-01 - <_> - - 0 -1 702 -7.2220653295516968e-02 - - -6.2676852941513062e-01 2.2165909409523010e-02 - <_> - - 0 -1 703 -4.5017611235380173e-02 - - -7.7151697874069214e-01 7.7348982449620962e-04 - <_> - - 0 -1 704 -6.2360418960452080e-03 - - 2.6456978917121887e-01 -5.3363479673862457e-02 - <_> - - 0 -1 705 -2.5355370598845184e-04 - - 4.0398750454187393e-02 -1.5795269608497620e-01 - <_> - - 0 -1 706 -4.6271558851003647e-02 - - -4.0787988901138306e-01 3.8921471685171127e-02 - <_> - - 0 -1 707 -1.1218659579753876e-02 - - 7.4395492672920227e-02 -1.3349680602550507e-01 - <_> - - 0 -1 708 4.2274970561265945e-02 - - 3.7559799849987030e-02 -3.5659119486808777e-01 - <_> - - 0 -1 709 7.1554719470441341e-03 - - 3.2838869839906693e-02 -3.9694920182228088e-01 - <_> - - 0 -1 710 2.8899949789047241e-01 - - 2.1863840520381927e-02 -5.6416589021682739e-01 - <_> - - 0 -1 711 -1.9863760098814964e-02 - - 2.2337679564952850e-01 -3.1122479587793350e-02 - <_> - - 0 -1 712 2.0147679373621941e-02 - - -1.3183030486106873e-01 1.0647880285978317e-01 - <_> - - 0 -1 713 2.1021129563450813e-02 - - -2.7941459789872169e-02 1.4968049526214600e-01 - <_> - - 0 -1 714 9.0801073238253593e-03 - - -7.1428433060646057e-02 2.1569679677486420e-01 - <_> - - 0 -1 715 -2.1075110882520676e-02 - - -6.3554888963699341e-01 1.4859089627861977e-02 - <_> - - 0 -1 716 -2.6902920217253268e-04 - - 1.0863730311393738e-01 -1.5047989785671234e-01 - <_> - - 0 -1 717 -3.1716268858872354e-04 - - 8.5656993091106415e-02 -1.2388020008802414e-01 - <_> - - 0 -1 718 2.5432288646697998e-01 - - -9.9662892520427704e-02 1.3793380558490753e-01 - <_> - - 0 -1 719 3.5156611353158951e-02 - - 2.7607070282101631e-02 -3.0855798721313477e-01 - <_> - - 0 -1 720 -3.1319420668296516e-04 - - 9.3362413346767426e-02 -1.5827369689941406e-01 - <_> - - 0 -1 721 2.2236700169742107e-04 - - -2.6805540546774864e-02 4.1680369526147842e-02 - <_> - - 0 -1 722 -2.2599179646931589e-04 - - 1.0316269844770432e-01 -1.5537780523300171e-01 - <_> - - 0 -1 723 1.3176410458981991e-02 - - 4.8204571008682251e-02 -1.6340050101280212e-01 - <_> - - 0 -1 724 -3.6689240485429764e-02 - - -5.6660032272338867e-01 2.1624589338898659e-02 - <_> - - 0 -1 725 2.5496680289506912e-02 - - -4.6478029340505600e-02 1.2218680232763290e-01 - <_> - - 0 -1 726 1.2762719765305519e-02 - - -1.1676809936761856e-01 1.2351939827203751e-01 - <_> - 133 - -1.4611779451370239e+00 - - <_> - - 0 -1 727 -1.2680550105869770e-02 - - 2.1946400403976440e-01 -3.0342951416969299e-01 - <_> - - 0 -1 728 2.0277220010757446e-01 - - -3.5292989015579224e-01 8.1888578832149506e-02 - <_> - - 0 -1 729 -4.2049158364534378e-02 - - 2.4808460474014282e-01 -1.7897559702396393e-01 - <_> - - 0 -1 730 3.7381589412689209e-02 - - -1.0807169973850250e-01 1.3556699454784393e-01 - <_> - - 0 -1 731 8.9879266917705536e-02 - - -3.1441110372543335e-01 1.1649979650974274e-01 - <_> - - 0 -1 732 -2.2849619563203305e-04 - - 1.2044479697942734e-01 -1.5876269340515137e-01 - <_> - - 0 -1 733 1.9768830388784409e-02 - - -1.0055690258741379e-01 3.5981228947639465e-01 - <_> - - 0 -1 734 -4.6854061074554920e-03 - - -2.2157269716262817e-01 9.4031356275081635e-02 - <_> - - 0 -1 735 -2.6115920627489686e-04 - - 7.3836371302604675e-02 -2.8550630807876587e-01 - <_> - - 0 -1 736 5.3100939840078354e-02 - - -5.6667480617761612e-02 2.3984040319919586e-01 - <_> - - 0 -1 737 -1.0975299665005878e-04 - - 1.1553339660167694e-01 -2.1104870736598969e-01 - <_> - - 0 -1 738 -3.0807471275329590e-01 - - -4.9161750078201294e-01 5.2133060991764069e-02 - <_> - - 0 -1 739 9.5257293432950974e-03 - - -9.3975499272346497e-02 3.0003049969673157e-01 - <_> - - 0 -1 740 4.7906499356031418e-02 - - 5.1006641238927841e-02 -4.5330038666725159e-01 - <_> - - 0 -1 741 8.1151742488145828e-03 - - 5.3590521216392517e-02 -3.8580769300460815e-01 - <_> - - 0 -1 742 1.1523259803652763e-02 - - -2.2294430434703827e-01 9.0755969285964966e-02 - <_> - - 0 -1 743 -5.7037029415369034e-02 - - 1.1402489989995956e-01 -1.7938560247421265e-01 - <_> - - 0 -1 744 -9.6343189477920532e-02 - - 2.5996109843254089e-01 -6.7842021584510803e-02 - <_> - - 0 -1 745 5.3852960467338562e-02 - - -8.2555137574672699e-02 3.7209570407867432e-01 - <_> - - 0 -1 746 3.2167631434276700e-04 - - -3.5077500343322754e-01 8.2111962139606476e-02 - <_> - - 0 -1 747 -5.6490749120712280e-02 - - -3.2298418879508972e-01 5.3876388818025589e-02 - <_> - - 0 -1 748 -2.7906559989787638e-04 - - 1.5583470463752747e-01 -2.5733149051666260e-01 - <_> - - 0 -1 749 -3.8215760141611099e-02 - - -4.8694840073585510e-01 3.7561759352684021e-02 - <_> - - 0 -1 750 7.6500251889228821e-03 - - -6.2206029891967773e-02 2.7779549360275269e-01 - <_> - - 0 -1 751 2.2391989827156067e-02 - - 5.6726191192865372e-02 -3.0967220664024353e-01 - <_> - - 0 -1 752 -2.8860570862889290e-02 - - 2.1716390550136566e-01 -5.9519559144973755e-02 - <_> - - 0 -1 753 6.9423289969563484e-03 - - -5.1059830933809280e-02 4.0468141436576843e-01 - <_> - - 0 -1 754 1.4006449840962887e-02 - - 4.9552779644727707e-02 -1.9979630410671234e-01 - <_> - - 0 -1 755 2.7382301050238311e-04 - - -3.0520731210708618e-01 6.9563962519168854e-02 - <_> - - 0 -1 756 -1.5174309723079205e-02 - - -3.8258409500122070e-01 2.1974159404635429e-02 - <_> - - 0 -1 757 -1.9322619482409209e-04 - - 1.1859290301799774e-01 -1.7502920329570770e-01 - <_> - - 0 -1 758 -5.8987581729888916e-01 - - -6.4281332492828369e-01 1.7073450610041618e-02 - <_> - - 0 -1 759 2.5915939477272332e-04 - - -2.3254489898681641e-01 6.4852282404899597e-02 - <_> - - 0 -1 760 5.7087451219558716e-01 - - 7.8144967555999756e-03 -6.5341699123382568e-01 - <_> - - 0 -1 761 8.8011100888252258e-02 - - -6.5030708909034729e-02 2.5226131081581116e-01 - <_> - - 0 -1 762 -1.1537440121173859e-02 - - 2.5898069143295288e-02 -4.8579961061477661e-02 - <_> - - 0 -1 763 -4.6533951163291931e-01 - - -4.9289149045944214e-01 3.6602970212697983e-02 - <_> - - 0 -1 764 6.1871910095214844e-01 - - -2.2136380430310965e-03 -7.4808281660079956e-01 - <_> - - 0 -1 765 5.3780531883239746e-01 - - 2.9165390878915787e-02 -5.1737898588180542e-01 - <_> - - 0 -1 766 2.5194421410560608e-01 - - -2.8567619621753693e-02 4.2214900255203247e-01 - <_> - - 0 -1 767 2.7490830048918724e-02 - - -1.2498860061168671e-01 1.5622389316558838e-01 - <_> - - 0 -1 768 1.8063139915466309e-01 - - -1.6325049102306366e-02 1.3234290480613708e-01 - <_> - - 0 -1 769 1.7386689782142639e-01 - - -4.8918601125478745e-02 4.1473680734634399e-01 - <_> - - 0 -1 770 -4.9942150712013245e-02 - - -4.7142308950424194e-01 3.7892449647188187e-02 - <_> - - 0 -1 771 8.2021749019622803e-01 - - 2.3966159671545029e-02 -5.4350042343139648e-01 - <_> - - 0 -1 772 2.5848631048575044e-04 - - -1.0571960359811783e-01 4.8736020922660828e-02 - <_> - - 0 -1 773 -8.0050835385918617e-03 - - 1.9601759314537048e-01 -7.0734307169914246e-02 - <_> - - 0 -1 774 3.1249779462814331e-01 - - -3.4612491726875305e-02 2.0727220177650452e-01 - <_> - - 0 -1 775 1.6595009714365005e-02 - - -5.5334791541099548e-02 3.2362830638885498e-01 - <_> - - 0 -1 776 6.6122892312705517e-03 - - 6.4811848104000092e-02 -1.0377670079469681e-01 - <_> - - 0 -1 777 -5.5534038692712784e-02 - - 9.1052807867527008e-02 -1.9427829980850220e-01 - <_> - - 0 -1 778 -4.2657270096242428e-03 - - -3.7216100096702576e-01 3.5128928720951080e-02 - <_> - - 0 -1 779 -7.1315821260213852e-03 - - -4.0014240145683289e-01 3.6378540098667145e-02 - <_> - - 0 -1 780 -1.5466910600662231e-01 - - 2.2419099509716034e-01 -6.4514227211475372e-02 - <_> - - 0 -1 781 -5.6720200926065445e-02 - - -2.7846959233283997e-01 6.5108783543109894e-02 - <_> - - 0 -1 782 -1.1758569628000259e-02 - - 1.9500179588794708e-01 -8.0316439270973206e-02 - <_> - - 0 -1 783 6.2118507921695709e-03 - - 4.8729728907346725e-02 -2.9427778720855713e-01 - <_> - - 0 -1 784 3.1163550913333893e-02 - - -3.9649609476327896e-02 1.0872240364551544e-01 - <_> - - 0 -1 785 -1.8731789663434029e-02 - - 2.5498849153518677e-01 -5.7060658931732178e-02 - <_> - - 0 -1 786 -1.9629219605121762e-04 - - 6.0982689261436462e-02 -1.0565000027418137e-01 - <_> - - 0 -1 787 -1.1253469623625278e-02 - - 2.4102079868316650e-01 -5.4933529347181320e-02 - <_> - - 0 -1 788 -1.8418630585074425e-02 - - -2.1543020009994507e-01 4.1859380900859833e-02 - <_> - - 0 -1 789 -2.6979470625519753e-02 - - -4.4044798612594604e-01 2.8259810060262680e-02 - <_> - - 0 -1 790 -3.1812430825084448e-04 - - 1.1263129860162735e-01 -1.5612870454788208e-01 - <_> - - 0 -1 791 -1.4269050210714340e-02 - - -2.2047680616378784e-01 6.3962973654270172e-02 - <_> - - 0 -1 792 4.1097350418567657e-02 - - -1.4404140412807465e-02 4.5113658905029297e-01 - <_> - - 0 -1 793 3.4184981137514114e-02 - - -2.3943960666656494e-02 5.3346621990203857e-01 - <_> - - 0 -1 794 -5.5098719894886017e-02 - - -4.4178238511085510e-01 1.4475960284471512e-02 - <_> - - 0 -1 795 1.5465440228581429e-02 - - 1.8221130594611168e-02 -6.2355637550354004e-01 - <_> - - 0 -1 796 5.3496570326387882e-03 - - -1.3820479810237885e-01 2.1783879399299622e-01 - <_> - - 0 -1 797 4.9904521554708481e-02 - - 2.7466949075460434e-02 -5.2732229232788086e-01 - <_> - - 0 -1 798 -5.7295501232147217e-01 - - -8.2962232828140259e-01 5.5375328520312905e-04 - <_> - - 0 -1 799 2.4806600064039230e-02 - - 1.0250580310821533e-01 -1.4922580122947693e-01 - <_> - - 0 -1 800 8.6801443248987198e-03 - - -7.5809933245182037e-02 2.3664160072803497e-01 - <_> - - 0 -1 801 -4.2660851031541824e-02 - - -4.8471969366073608e-01 3.0310539528727531e-02 - <_> - - 0 -1 802 2.7838671207427979e-01 - - -3.0852980911731720e-02 4.8810139298439026e-01 - <_> - - 0 -1 803 -1.0872329585254192e-02 - - -2.7875050902366638e-01 4.6971909701824188e-02 - <_> - - 0 -1 804 2.8905799263156950e-04 - - -9.7713083028793335e-02 1.0453590005636215e-01 - <_> - - 0 -1 805 8.3399498835206032e-03 - - -5.6789729744195938e-02 2.1990999579429626e-01 - <_> - - 0 -1 806 -4.5025609433650970e-03 - - 1.6819390654563904e-01 -4.7182761132717133e-02 - <_> - - 0 -1 807 9.1141611337661743e-03 - - -5.3859930485486984e-02 2.4945180118083954e-01 - <_> - - 0 -1 808 3.3482279628515244e-02 - - 3.9698779582977295e-02 -1.7840039730072021e-01 - <_> - - 0 -1 809 -1.6845509409904480e-02 - - -2.6923018693923950e-01 5.5552460253238678e-02 - <_> - - 0 -1 810 4.3367617763578892e-03 - - 4.5756489038467407e-02 -2.2537319362163544e-01 - <_> - - 0 -1 811 -1.2159480154514313e-01 - - 6.1395758390426636e-01 -2.2958070039749146e-02 - <_> - - 0 -1 812 -1.8687279894948006e-02 - - -3.6422011256217957e-01 2.3655790835618973e-02 - <_> - - 0 -1 813 -2.9130980372428894e-01 - - -6.2919682264328003e-01 1.7662050202488899e-02 - <_> - - 0 -1 814 -3.0170090030878782e-04 - - 7.9020306468009949e-02 -7.3823727667331696e-02 - <_> - - 0 -1 815 2.3048979346640408e-04 - - -1.1339560151100159e-01 1.2542079389095306e-01 - <_> - - 0 -1 816 3.1774640083312988e-02 - - 2.4091020226478577e-02 -2.3947270214557648e-01 - <_> - - 0 -1 817 -6.7688718438148499e-02 - - 2.0689809322357178e-01 -6.2361769378185272e-02 - <_> - - 0 -1 818 3.9785809814929962e-02 - - 1.3510519638657570e-02 -6.3863390684127808e-01 - <_> - - 0 -1 819 -2.0020859315991402e-02 - - -1.9689780473709106e-01 6.7728810012340546e-02 - <_> - - 0 -1 820 9.4509087502956390e-02 - - 1.8017550930380821e-02 -6.4405238628387451e-01 - <_> - - 0 -1 821 6.2699890695512295e-03 - - 3.1439051032066345e-02 -3.6409479379653931e-01 - <_> - - 0 -1 822 -1.3047580420970917e-01 - - -5.4852211475372314e-01 5.9488588012754917e-03 - <_> - - 0 -1 823 -2.7846038574352860e-04 - - 8.6191080510616302e-02 -1.2902879714965820e-01 - <_> - - 0 -1 824 -2.1837399899959564e-01 - - 1.2890920042991638e-01 -5.6212250143289566e-02 - <_> - - 0 -1 825 1.8505910038948059e-01 - - -4.7193650156259537e-02 2.9544681310653687e-01 - <_> - - 0 -1 826 1.6650650650262833e-02 - - -2.2515360265970230e-02 1.7831179499626160e-01 - <_> - - 0 -1 827 -2.3978849640116096e-04 - - 7.9010076820850372e-02 -1.5592630207538605e-01 - <_> - - 0 -1 828 5.8377008885145187e-02 - - -2.4694869294762611e-02 3.0555808544158936e-01 - <_> - - 0 -1 829 -5.8459650725126266e-02 - - 1.4798119664192200e-01 -8.9378252625465393e-02 - <_> - - 0 -1 830 -1.8526349216699600e-02 - - 9.2129699885845184e-02 -8.9743256568908691e-02 - <_> - - 0 -1 831 8.5416868329048157e-02 - - -2.6397809386253357e-02 4.8908311128616333e-01 - <_> - - 0 -1 832 -1.2663799524307251e-01 - - 4.7291919589042664e-02 -6.7399129271507263e-02 - <_> - - 0 -1 833 -1.9496470689773560e-01 - - 2.0691619813442230e-01 -6.1493389308452606e-02 - <_> - - 0 -1 834 1.2037090025842190e-02 - - 2.9463229700922966e-02 -6.0213238000869751e-01 - <_> - - 0 -1 835 -2.7944779139943421e-04 - - 8.1097796559333801e-02 -1.3745759427547455e-01 - <_> - - 0 -1 836 9.7354073077440262e-03 - - 4.1789319366216660e-02 -1.6302450001239777e-01 - <_> - - 0 -1 837 7.4306771159172058e-02 - - -1.4938850700855255e-01 7.8325100243091583e-02 - <_> - - 0 -1 838 1.4471059665083885e-02 - - -2.6114590466022491e-02 1.4204360544681549e-01 - <_> - - 0 -1 839 1.1855339631438255e-02 - - -5.1672890782356262e-02 2.6997640728950500e-01 - <_> - - 0 -1 840 2.1346539258956909e-02 - - -3.3866148442029953e-02 2.3027729988098145e-01 - <_> - - 0 -1 841 -4.9045171588659286e-02 - - 2.6968359947204590e-01 -5.4896000772714615e-02 - <_> - - 0 -1 842 -3.5839710384607315e-02 - - -2.9921030998229980e-01 2.2631939500570297e-02 - <_> - - 0 -1 843 -2.8866980574093759e-04 - - 6.0674369335174561e-02 -2.0742860436439514e-01 - <_> - - 0 -1 844 -3.1162720173597336e-02 - - -2.4761599302291870e-01 5.0196789205074310e-02 - <_> - - 0 -1 845 2.8370518703013659e-04 - - -1.9594480097293854e-01 5.6619770824909210e-02 - <_> - - 0 -1 846 -4.9621321260929108e-02 - - 8.6675882339477539e-01 -3.4514570143073797e-03 - <_> - - 0 -1 847 2.5349689531140029e-04 - - -1.3878400623798370e-01 8.2779698073863983e-02 - <_> - - 0 -1 848 5.7967979460954666e-02 - - -3.9648130536079407e-02 1.8818469345569611e-01 - <_> - - 0 -1 849 1.8554650247097015e-02 - - -1.9192659854888916e-01 6.3079372048377991e-02 - <_> - - 0 -1 850 1.9615100696682930e-02 - - 1.9008159637451172e-02 -1.9076730310916901e-01 - <_> - - 0 -1 851 -3.3448349684476852e-02 - - -2.9587069153785706e-01 4.4361710548400879e-02 - <_> - - 0 -1 852 -7.5647640042006969e-03 - - 2.5295218825340271e-01 -1.0904899984598160e-01 - <_> - - 0 -1 853 -1.8039060756564140e-02 - - 2.8772088885307312e-01 -3.8489419966936111e-02 - <_> - - 0 -1 854 -1.9565680122468621e-04 - - 9.4928987324237823e-02 -1.0129210352897644e-01 - <_> - - 0 -1 855 -2.0392619073390961e-02 - - -8.0093258619308472e-01 1.3064869679510593e-02 - <_> - - 0 -1 856 -9.0366922318935394e-02 - - 3.9404270052909851e-01 -1.9085280597209930e-02 - <_> - - 0 -1 857 -1.5236979722976685e-01 - - -6.4189267158508301e-01 1.7520749941468239e-02 - <_> - - 0 -1 858 -7.7142767608165741e-02 - - 3.0866208672523499e-01 -1.4502109959721565e-02 - <_> - - 0 -1 859 -8.8981278240680695e-03 - - -3.3481961488723755e-01 3.0804989859461784e-02 - - <_> - - <_> - 3 1 15 2 -1. - <_> - 8 1 5 2 3. - <_> - - <_> - 17 3 5 2 -1. - <_> - 17 4 5 1 2. - <_> - - <_> - 8 0 6 5 -1. - <_> - 10 0 2 5 3. - <_> - - <_> - 16 1 3 3 -1. - <_> - 17 2 1 1 9. - <_> - - <_> - 1 2 20 2 -1. - <_> - 1 2 10 1 2. - <_> - 11 3 10 1 2. - <_> - - <_> - 16 2 5 2 -1. - <_> - 16 3 5 1 2. - <_> - - <_> - 1 3 1 2 -1. - <_> - 1 4 1 1 2. - <_> - - <_> - 3 1 15 2 -1. - <_> - 8 1 5 2 3. - <_> - - <_> - 16 2 5 2 -1. - <_> - 16 3 5 1 2. - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 1 9. - <_> - - <_> - 10 0 4 5 -1. - <_> - 10 0 2 5 2. - <_> - - <_> - 0 3 3 2 -1. - <_> - 0 4 3 1 2. - <_> - - <_> - 10 0 4 5 -1. - <_> - 10 0 2 5 2. - <_> - - <_> - 8 0 4 5 -1. - <_> - 10 0 2 5 2. - <_> - - <_> - 5 0 12 3 -1. - <_> - 9 0 4 3 3. - <_> - - <_> - 16 1 3 4 -1. - <_> - 16 3 3 2 2. - <_> - - <_> - 3 0 4 1 -1. - <_> - 4 1 2 1 2. - 1 - <_> - - <_> - 8 0 6 5 -1. - <_> - 10 0 2 5 3. - <_> - - <_> - 0 2 5 2 -1. - <_> - 0 3 5 1 2. - <_> - - <_> - 20 3 1 2 -1. - <_> - 20 4 1 1 2. - <_> - - <_> - 4 4 3 1 -1. - <_> - 5 4 1 1 3. - <_> - - <_> - 17 3 5 2 -1. - <_> - 17 4 5 1 2. - <_> - - <_> - 2 1 12 1 -1. - <_> - 8 1 6 1 2. - <_> - - <_> - 20 3 1 2 -1. - <_> - 20 4 1 1 2. - <_> - - <_> - 1 3 1 2 -1. - <_> - 1 4 1 1 2. - <_> - - <_> - 4 2 16 2 -1. - <_> - 8 2 8 2 2. - <_> - - <_> - 7 3 8 2 -1. - <_> - 7 3 4 1 2. - <_> - 11 4 4 1 2. - <_> - - <_> - 13 3 5 2 -1. - <_> - 13 4 5 1 2. - <_> - - <_> - 3 1 15 2 -1. - <_> - 8 1 5 2 3. - <_> - - <_> - 17 2 1 2 -1. - <_> - 17 2 1 1 2. - 1 - <_> - - <_> - 5 2 2 1 -1. - <_> - 5 2 1 1 2. - 1 - <_> - - <_> - 8 0 6 5 -1. - <_> - 10 0 2 5 3. - <_> - - <_> - 5 2 1 2 -1. - <_> - 5 2 1 1 2. - 1 - <_> - - <_> - 20 2 2 2 -1. - <_> - 20 2 1 2 2. - <_> - - <_> - 0 2 2 2 -1. - <_> - 1 2 1 2 2. - <_> - - <_> - 12 0 2 1 -1. - <_> - 12 0 1 1 2. - <_> - - <_> - 3 4 3 1 -1. - <_> - 4 4 1 1 3. - <_> - - <_> - 6 2 10 2 -1. - <_> - 11 2 5 1 2. - <_> - 6 3 5 1 2. - <_> - - <_> - 4 2 1 2 -1. - <_> - 4 2 1 1 2. - 1 - <_> - - <_> - 20 3 2 2 -1. - <_> - 20 4 2 1 2. - <_> - - <_> - 8 0 2 1 -1. - <_> - 9 0 1 1 2. - <_> - - <_> - 20 3 2 2 -1. - <_> - 20 4 2 1 2. - <_> - - <_> - 0 3 2 2 -1. - <_> - 0 4 2 1 2. - <_> - - <_> - 2 1 20 4 -1. - <_> - 12 1 10 2 2. - <_> - 2 3 10 2 2. - <_> - - <_> - 1 0 5 4 -1. - <_> - 1 1 5 2 2. - <_> - - <_> - 10 4 12 1 -1. - <_> - 10 4 6 1 2. - <_> - - <_> - 0 4 12 1 -1. - <_> - 6 4 6 1 2. - <_> - - <_> - 10 2 6 3 -1. - <_> - 12 2 2 3 3. - <_> - - <_> - 8 2 6 3 -1. - <_> - 10 2 2 3 3. - <_> - - <_> - 2 1 16 2 -1. - <_> - 6 1 8 2 2. - <_> - - <_> - 13 1 5 4 -1. - <_> - 13 3 5 2 2. - <_> - - <_> - 7 0 4 3 -1. - <_> - 9 0 2 3 2. - <_> - - <_> - 16 1 3 3 -1. - <_> - 17 2 1 1 9. - <_> - - <_> - 5 2 1 2 -1. - <_> - 5 2 1 1 2. - 1 - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 2 2 3 2. - <_> - - <_> - 1 3 2 2 -1. - <_> - 1 4 2 1 2. - <_> - - <_> - 17 4 3 1 -1. - <_> - 18 4 1 1 3. - <_> - - <_> - 2 4 3 1 -1. - <_> - 3 4 1 1 3. - <_> - - <_> - 13 0 6 1 -1. - <_> - 15 0 2 1 3. - <_> - - <_> - 4 0 5 2 -1. - <_> - 4 1 5 1 2. - <_> - - <_> - 13 0 6 1 -1. - <_> - 15 0 2 1 3. - <_> - - <_> - 3 0 6 1 -1. - <_> - 5 0 2 1 3. - <_> - - <_> - 9 0 4 1 -1. - <_> - 10 0 2 1 2. - <_> - - <_> - 3 2 3 1 -1. - <_> - 4 2 1 1 3. - <_> - - <_> - 18 4 3 1 -1. - <_> - 19 4 1 1 3. - <_> - - <_> - 1 4 3 1 -1. - <_> - 2 4 1 1 3. - <_> - - <_> - 9 0 4 5 -1. - <_> - 9 0 2 5 2. - <_> - - <_> - 6 2 10 2 -1. - <_> - 6 2 5 1 2. - <_> - 11 3 5 1 2. - <_> - - <_> - 8 2 8 2 -1. - <_> - 12 2 4 1 2. - <_> - 8 3 4 1 2. - <_> - - <_> - 6 2 8 2 -1. - <_> - 6 2 4 1 2. - <_> - 10 3 4 1 2. - <_> - - <_> - 16 1 5 3 -1. - <_> - 16 2 5 1 3. - <_> - - <_> - 0 1 21 3 -1. - <_> - 7 2 7 1 9. - <_> - - <_> - 8 2 6 2 -1. - <_> - 10 2 2 2 3. - <_> - - <_> - 5 0 12 3 -1. - <_> - 8 0 6 3 2. - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 1 9. - <_> - - <_> - 14 2 2 1 -1. - <_> - 14 2 1 1 2. - 1 - <_> - - <_> - 9 1 2 3 -1. - <_> - 10 1 1 3 2. - <_> - - <_> - 17 1 5 4 -1. - <_> - 17 3 5 2 2. - <_> - - <_> - 2 2 16 2 -1. - <_> - 6 2 8 2 2. - <_> - - <_> - 20 2 2 1 -1. - <_> - 20 2 1 1 2. - <_> - - <_> - 0 2 2 1 -1. - <_> - 1 2 1 1 2. - <_> - - <_> - 17 1 5 4 -1. - <_> - 17 3 5 2 2. - <_> - - <_> - 0 1 5 4 -1. - <_> - 0 3 5 2 2. - <_> - - <_> - 12 0 4 1 -1. - <_> - 13 1 2 1 2. - 1 - <_> - - <_> - 7 3 8 2 -1. - <_> - 7 3 4 1 2. - <_> - 11 4 4 1 2. - <_> - - <_> - 5 0 12 4 -1. - <_> - 11 0 6 2 2. - <_> - 5 2 6 2 2. - <_> - - <_> - 10 3 2 2 -1. - <_> - 10 3 1 1 2. - <_> - 11 4 1 1 2. - <_> - - <_> - 20 3 2 2 -1. - <_> - 20 4 2 1 2. - <_> - - <_> - 8 0 2 1 -1. - <_> - 9 0 1 1 2. - <_> - - <_> - 15 0 4 3 -1. - <_> - 15 1 4 1 3. - <_> - - <_> - 10 0 2 5 -1. - <_> - 11 0 1 5 2. - <_> - - <_> - 9 1 6 4 -1. - <_> - 11 1 2 4 3. - <_> - - <_> - 6 1 9 4 -1. - <_> - 9 1 3 4 3. - <_> - - <_> - 20 3 2 2 -1. - <_> - 20 4 2 1 2. - <_> - - <_> - 0 3 2 2 -1. - <_> - 0 4 2 1 2. - <_> - - <_> - 2 3 20 2 -1. - <_> - 12 3 10 1 2. - <_> - 2 4 10 1 2. - <_> - - <_> - 4 0 2 1 -1. - <_> - 4 0 1 1 2. - 1 - <_> - - <_> - 17 4 3 1 -1. - <_> - 18 4 1 1 3. - <_> - - <_> - 3 1 5 4 -1. - <_> - 3 3 5 2 2. - <_> - - <_> - 8 1 6 3 -1. - <_> - 10 1 2 3 3. - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 1 9. - <_> - - <_> - 2 1 18 4 -1. - <_> - 11 1 9 2 2. - <_> - 2 3 9 2 2. - <_> - - <_> - 2 1 18 2 -1. - <_> - 8 1 6 2 3. - <_> - - <_> - 14 2 2 1 -1. - <_> - 14 2 1 1 2. - 1 - <_> - - <_> - 4 0 1 4 -1. - <_> - 3 1 1 2 2. - 1 - <_> - - <_> - 14 2 2 1 -1. - <_> - 14 2 1 1 2. - 1 - <_> - - <_> - 8 2 1 2 -1. - <_> - 8 2 1 1 2. - 1 - <_> - - <_> - 16 4 2 1 -1. - <_> - 16 4 1 1 2. - <_> - - <_> - 4 4 2 1 -1. - <_> - 5 4 1 1 2. - <_> - - <_> - 16 2 3 3 -1. - <_> - 17 2 1 3 3. - <_> - - <_> - 5 0 12 4 -1. - <_> - 5 0 6 2 2. - <_> - 11 2 6 2 2. - <_> - - <_> - 6 1 16 4 -1. - <_> - 10 1 8 4 2. - <_> - - <_> - 3 4 3 1 -1. - <_> - 4 4 1 1 3. - <_> - - <_> - 15 0 5 3 -1. - <_> - 15 1 5 1 3. - <_> - - <_> - 9 1 4 4 -1. - <_> - 11 1 2 4 2. - <_> - - <_> - 13 3 5 2 -1. - <_> - 13 4 5 1 2. - <_> - - <_> - 6 0 9 1 -1. - <_> - 9 0 3 1 3. - <_> - - <_> - 16 0 4 3 -1. - <_> - 16 1 4 1 3. - <_> - - <_> - 7 0 1 4 -1. - <_> - 6 1 1 2 2. - 1 - <_> - - <_> - 14 2 2 2 -1. - <_> - 15 2 1 1 2. - <_> - 14 3 1 1 2. - <_> - - <_> - 0 4 12 1 -1. - <_> - 6 4 6 1 2. - <_> - - <_> - 3 3 16 2 -1. - <_> - 11 3 8 1 2. - <_> - 3 4 8 1 2. - <_> - - <_> - 3 0 4 3 -1. - <_> - 3 1 4 1 3. - <_> - - <_> - 16 0 4 3 -1. - <_> - 16 1 4 1 3. - <_> - - <_> - 2 0 4 3 -1. - <_> - 2 1 4 1 3. - <_> - - <_> - 7 2 9 3 -1. - <_> - 10 2 3 3 3. - <_> - - <_> - 9 0 4 5 -1. - <_> - 11 0 2 5 2. - <_> - - <_> - 10 3 4 2 -1. - <_> - 12 3 2 1 2. - <_> - 10 4 2 1 2. - <_> - - <_> - 2 1 16 2 -1. - <_> - 6 1 8 2 2. - <_> - - <_> - 13 0 5 4 -1. - <_> - 13 1 5 2 2. - <_> - - <_> - 0 3 3 2 -1. - <_> - 0 4 3 1 2. - <_> - - <_> - 10 0 6 5 -1. - <_> - 10 0 3 5 2. - <_> - - <_> - 3 2 3 1 -1. - <_> - 4 2 1 1 3. - <_> - - <_> - 10 0 6 4 -1. - <_> - 10 0 3 4 2. - <_> - - <_> - 4 2 12 1 -1. - <_> - 10 2 6 1 2. - <_> - - <_> - 21 2 1 2 -1. - <_> - 21 3 1 1 2. - <_> - - <_> - 4 0 2 1 -1. - <_> - 5 0 1 1 2. - <_> - - <_> - 16 4 3 1 -1. - <_> - 17 4 1 1 3. - <_> - - <_> - 0 2 5 2 -1. - <_> - 0 3 5 1 2. - <_> - - <_> - 0 3 22 2 -1. - <_> - 11 3 11 1 2. - <_> - 0 4 11 1 2. - <_> - - <_> - 9 1 3 4 -1. - <_> - 10 1 1 4 3. - <_> - - <_> - 13 3 5 2 -1. - <_> - 13 4 5 1 2. - <_> - - <_> - 6 0 10 2 -1. - <_> - 6 0 5 1 2. - <_> - 11 1 5 1 2. - <_> - - <_> - 16 0 5 3 -1. - <_> - 16 1 5 1 3. - <_> - - <_> - 1 0 5 3 -1. - <_> - 1 1 5 1 3. - <_> - - <_> - 16 4 3 1 -1. - <_> - 17 4 1 1 3. - <_> - - <_> - 0 2 2 3 -1. - <_> - 1 2 1 3 2. - <_> - - <_> - 16 4 3 1 -1. - <_> - 17 4 1 1 3. - <_> - - <_> - 9 1 4 4 -1. - <_> - 11 1 2 4 2. - <_> - - <_> - 16 4 3 1 -1. - <_> - 17 4 1 1 3. - <_> - - <_> - 3 4 3 1 -1. - <_> - 4 4 1 1 3. - <_> - - <_> - 12 0 2 1 -1. - <_> - 12 0 1 1 2. - <_> - - <_> - 4 4 3 1 -1. - <_> - 5 4 1 1 3. - <_> - - <_> - 13 3 5 2 -1. - <_> - 13 4 5 1 2. - <_> - - <_> - 4 3 5 2 -1. - <_> - 4 4 5 1 2. - <_> - - <_> - 14 2 3 1 -1. - <_> - 15 2 1 1 3. - <_> - - <_> - 8 0 6 5 -1. - <_> - 11 0 3 5 2. - <_> - - <_> - 16 4 6 1 -1. - <_> - 18 4 2 1 3. - <_> - - <_> - 0 4 6 1 -1. - <_> - 2 4 2 1 3. - <_> - - <_> - 18 0 4 2 -1. - <_> - 20 0 2 1 2. - <_> - 18 1 2 1 2. - <_> - - <_> - 8 4 6 1 -1. - <_> - 10 4 2 1 3. - <_> - - <_> - 4 0 3 1 -1. - <_> - 5 1 1 1 3. - 1 - <_> - - <_> - 6 2 14 1 -1. - <_> - 6 2 7 1 2. - <_> - - <_> - 2 2 14 1 -1. - <_> - 9 2 7 1 2. - <_> - - <_> - 20 2 2 1 -1. - <_> - 20 2 1 1 2. - <_> - - <_> - 3 1 2 2 -1. - <_> - 3 1 1 1 2. - <_> - 4 2 1 1 2. - <_> - - <_> - 13 1 5 4 -1. - <_> - 13 3 5 2 2. - <_> - - <_> - 9 0 4 5 -1. - <_> - 10 0 2 5 2. - <_> - - <_> - 20 3 1 2 -1. - <_> - 20 4 1 1 2. - <_> - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - <_> - - <_> - 13 0 2 1 -1. - <_> - 13 0 1 1 2. - <_> - - <_> - 8 0 4 1 -1. - <_> - 9 0 2 1 2. - <_> - - <_> - 19 3 3 2 -1. - <_> - 19 4 3 1 2. - <_> - - <_> - 0 3 3 2 -1. - <_> - 0 4 3 1 2. - <_> - - <_> - 5 0 12 4 -1. - <_> - 11 0 6 2 2. - <_> - 5 2 6 2 2. - <_> - - <_> - 4 0 5 4 -1. - <_> - 4 1 5 2 2. - <_> - - <_> - 16 0 3 3 -1. - <_> - 16 1 3 1 3. - <_> - - <_> - 3 0 3 3 -1. - <_> - 3 1 3 1 3. - <_> - - <_> - 7 2 10 2 -1. - <_> - 12 2 5 1 2. - <_> - 7 3 5 1 2. - <_> - - <_> - 5 2 10 2 -1. - <_> - 5 2 5 1 2. - <_> - 10 3 5 1 2. - <_> - - <_> - 14 0 4 1 -1. - <_> - 15 0 2 1 2. - <_> - - <_> - 3 4 3 1 -1. - <_> - 4 4 1 1 3. - <_> - - <_> - 14 0 4 1 -1. - <_> - 15 0 2 1 2. - <_> - - <_> - 4 1 5 4 -1. - <_> - 4 3 5 2 2. - <_> - - <_> - 16 0 4 3 -1. - <_> - 16 1 4 1 3. - <_> - - <_> - 2 0 4 3 -1. - <_> - 2 1 4 1 3. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 0 1 1 3. - <_> - - <_> - 4 0 4 1 -1. - <_> - 5 0 2 1 2. - <_> - - <_> - 16 4 3 1 -1. - <_> - 17 4 1 1 3. - <_> - - <_> - 0 1 18 1 -1. - <_> - 9 1 9 1 2. - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 0 1 1 3. - <_> - - <_> - 5 2 3 1 -1. - <_> - 6 2 1 1 3. - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 0 1 1 3. - <_> - - <_> - 4 0 3 1 -1. - <_> - 5 0 1 1 3. - <_> - - <_> - 19 2 2 2 -1. - <_> - 20 2 1 1 2. - <_> - 19 3 1 1 2. - <_> - - <_> - 1 2 3 1 -1. - <_> - 2 2 1 1 3. - <_> - - <_> - 17 4 3 1 -1. - <_> - 18 4 1 1 3. - <_> - - <_> - 9 0 4 1 -1. - <_> - 10 0 2 1 2. - <_> - - <_> - 10 1 6 3 -1. - <_> - 12 1 2 3 3. - <_> - - <_> - 6 1 6 3 -1. - <_> - 8 1 2 3 3. - <_> - - <_> - 1 1 21 3 -1. - <_> - 8 2 7 1 9. - <_> - - <_> - 9 0 3 2 -1. - <_> - 9 0 3 1 2. - 1 - <_> - - <_> - 17 4 3 1 -1. - <_> - 18 4 1 1 3. - <_> - - <_> - 4 3 5 2 -1. - <_> - 4 4 5 1 2. - <_> - - <_> - 3 1 10 2 -1. - <_> - 8 1 5 2 2. - <_> - - <_> - 16 2 3 3 -1. - <_> - 17 2 1 3 3. - <_> - - <_> - 3 2 3 3 -1. - <_> - 4 2 1 3 3. - <_> - - <_> - 11 1 2 3 -1. - <_> - 11 1 1 3 2. - <_> - - <_> - 8 2 1 2 -1. - <_> - 8 2 1 1 2. - 1 - <_> - - <_> - 1 2 20 1 -1. - <_> - 6 2 10 1 2. - <_> - - <_> - 7 1 4 4 -1. - <_> - 8 1 2 4 2. - <_> - - <_> - 13 0 2 1 -1. - <_> - 13 0 1 1 2. - <_> - - <_> - 0 1 5 3 -1. - <_> - 0 2 5 1 3. - <_> - - <_> - 13 0 2 1 -1. - <_> - 13 0 1 1 2. - <_> - - <_> - 7 0 2 1 -1. - <_> - 8 0 1 1 2. - <_> - - <_> - 2 1 20 4 -1. - <_> - 12 1 10 2 2. - <_> - 2 3 10 2 2. - <_> - - <_> - 0 3 2 2 -1. - <_> - 0 3 1 1 2. - <_> - 1 4 1 1 2. - <_> - - <_> - 21 3 1 2 -1. - <_> - 21 4 1 1 2. - <_> - - <_> - 0 3 1 2 -1. - <_> - 0 4 1 1 2. - <_> - - <_> - 15 0 5 3 -1. - <_> - 15 1 5 1 3. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 2 1 2 2. - <_> - - <_> - 21 1 1 4 -1. - <_> - 21 3 1 2 2. - <_> - - <_> - 5 3 10 2 -1. - <_> - 5 3 5 1 2. - <_> - 10 4 5 1 2. - <_> - - <_> - 15 0 1 2 -1. - <_> - 15 0 1 1 2. - 1 - <_> - - <_> - 5 0 4 2 -1. - <_> - 6 0 2 2 2. - <_> - - <_> - 1 0 21 3 -1. - <_> - 8 1 7 1 9. - <_> - - <_> - 1 3 6 2 -1. - <_> - 3 3 2 2 3. - <_> - - <_> - 6 2 16 1 -1. - <_> - 10 2 8 1 2. - <_> - - <_> - 0 2 16 1 -1. - <_> - 4 2 8 1 2. - <_> - - <_> - 2 1 18 3 -1. - <_> - 8 2 6 1 9. - <_> - - <_> - 2 4 3 1 -1. - <_> - 3 4 1 1 3. - <_> - - <_> - 6 0 10 4 -1. - <_> - 11 0 5 2 2. - <_> - 6 2 5 2 2. - <_> - - <_> - 5 0 12 4 -1. - <_> - 5 0 6 2 2. - <_> - 11 2 6 2 2. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 0 1 1 3. - <_> - - <_> - 9 1 4 4 -1. - <_> - 11 1 2 4 2. - <_> - - <_> - 9 0 4 5 -1. - <_> - 9 0 2 5 2. - <_> - - <_> - 0 2 3 1 -1. - <_> - 1 2 1 1 3. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 0 1 1 3. - <_> - - <_> - 1 2 3 1 -1. - <_> - 2 2 1 1 3. - <_> - - <_> - 16 0 4 3 -1. - <_> - 16 1 4 1 3. - <_> - - <_> - 5 0 3 1 -1. - <_> - 6 0 1 1 3. - <_> - - <_> - 15 0 1 2 -1. - <_> - 15 0 1 1 2. - 1 - <_> - - <_> - 7 0 2 1 -1. - <_> - 7 0 1 1 2. - 1 - <_> - - <_> - 8 3 6 2 -1. - <_> - 11 3 3 1 2. - <_> - 8 4 3 1 2. - <_> - - <_> - 6 1 2 2 -1. - <_> - 6 1 1 1 2. - <_> - 7 2 1 1 2. - <_> - - <_> - 4 2 18 3 -1. - <_> - 10 3 6 1 9. - <_> - - <_> - 8 2 1 2 -1. - <_> - 8 2 1 1 2. - 1 - <_> - - <_> - 16 0 4 3 -1. - <_> - 16 1 4 1 3. - <_> - - <_> - 2 0 4 3 -1. - <_> - 2 1 4 1 3. - <_> - - <_> - 10 0 12 5 -1. - <_> - 13 0 6 5 2. - <_> - - <_> - 3 1 5 4 -1. - <_> - 3 3 5 2 2. - <_> - - <_> - 4 2 18 2 -1. - <_> - 13 2 9 1 2. - <_> - 4 3 9 1 2. - <_> - - <_> - 1 4 10 1 -1. - <_> - 6 4 5 1 2. - <_> - - <_> - 2 1 18 2 -1. - <_> - 8 1 6 2 3. - <_> - - <_> - 16 2 3 2 -1. - <_> - 17 2 1 2 3. - <_> - - <_> - 8 0 2 1 -1. - <_> - 9 0 1 1 2. - <_> - - <_> - 16 1 3 3 -1. - <_> - 17 2 1 1 9. - <_> - - <_> - 0 2 2 1 -1. - <_> - 1 2 1 1 2. - <_> - - <_> - 8 4 6 1 -1. - <_> - 10 4 2 1 3. - <_> - - <_> - 4 2 1 2 -1. - <_> - 4 3 1 1 2. - <_> - - <_> - 11 0 3 1 -1. - <_> - 12 0 1 1 3. - <_> - - <_> - 9 0 4 1 -1. - <_> - 10 0 2 1 2. - <_> - - <_> - 16 2 3 3 -1. - <_> - 17 2 1 3 3. - <_> - - <_> - 3 2 3 3 -1. - <_> - 4 2 1 3 3. - <_> - - <_> - 16 0 3 1 -1. - <_> - 17 0 1 1 3. - <_> - - <_> - 2 0 16 4 -1. - <_> - 2 0 8 2 2. - <_> - 10 2 8 2 2. - <_> - - <_> - 16 0 3 1 -1. - <_> - 17 0 1 1 3. - <_> - - <_> - 0 3 4 2 -1. - <_> - 0 4 4 1 2. - <_> - - <_> - 13 2 3 1 -1. - <_> - 14 2 1 1 3. - <_> - - <_> - 3 0 3 1 -1. - <_> - 4 0 1 1 3. - <_> - - <_> - 0 3 22 2 -1. - <_> - 11 3 11 1 2. - <_> - 0 4 11 1 2. - <_> - - <_> - 3 0 2 1 -1. - <_> - 4 0 1 1 2. - <_> - - <_> - 11 0 2 2 -1. - <_> - 12 0 1 1 2. - <_> - 11 1 1 1 2. - <_> - - <_> - 7 0 8 2 -1. - <_> - 7 0 4 1 2. - <_> - 11 1 4 1 2. - <_> - - <_> - 14 1 2 2 -1. - <_> - 15 1 1 1 2. - <_> - 14 2 1 1 2. - <_> - - <_> - 6 1 8 4 -1. - <_> - 8 1 4 4 2. - <_> - - <_> - 21 1 1 4 -1. - <_> - 21 3 1 2 2. - <_> - - <_> - 5 0 3 2 -1. - <_> - 6 0 1 2 3. - <_> - - <_> - 14 1 2 2 -1. - <_> - 15 1 1 1 2. - <_> - 14 2 1 1 2. - <_> - - <_> - 6 1 2 2 -1. - <_> - 6 1 1 1 2. - <_> - 7 2 1 1 2. - <_> - - <_> - 9 1 9 4 -1. - <_> - 12 1 3 4 3. - <_> - - <_> - 4 1 9 4 -1. - <_> - 7 1 3 4 3. - <_> - - <_> - 11 3 2 2 -1. - <_> - 12 3 1 1 2. - <_> - 11 4 1 1 2. - <_> - - <_> - 2 4 3 1 -1. - <_> - 3 4 1 1 3. - <_> - - <_> - 16 4 3 1 -1. - <_> - 17 4 1 1 3. - <_> - - <_> - 5 0 4 1 -1. - <_> - 6 0 2 1 2. - <_> - - <_> - 14 0 1 2 -1. - <_> - 14 0 1 1 2. - 1 - <_> - - <_> - 8 0 2 1 -1. - <_> - 8 0 1 1 2. - 1 - <_> - - <_> - 3 1 18 3 -1. - <_> - 9 2 6 1 9. - <_> - - <_> - 1 2 2 2 -1. - <_> - 1 2 1 1 2. - <_> - 2 3 1 1 2. - <_> - - <_> - 16 4 3 1 -1. - <_> - 17 4 1 1 3. - <_> - - <_> - 3 4 3 1 -1. - <_> - 4 4 1 1 3. - <_> - - <_> - 6 2 16 2 -1. - <_> - 10 2 8 2 2. - <_> - - <_> - 0 2 16 2 -1. - <_> - 4 2 8 2 2. - <_> - - <_> - 21 0 1 3 -1. - <_> - 21 1 1 1 3. - <_> - - <_> - 0 1 18 4 -1. - <_> - 0 1 9 2 2. - <_> - 9 3 9 2 2. - <_> - - <_> - 13 3 5 2 -1. - <_> - 13 4 5 1 2. - <_> - - <_> - 4 3 5 2 -1. - <_> - 4 4 5 1 2. - <_> - - <_> - 11 4 4 1 -1. - <_> - 12 4 2 1 2. - <_> - - <_> - 10 0 2 5 -1. - <_> - 11 0 1 5 2. - <_> - - <_> - 1 2 20 1 -1. - <_> - 6 2 10 1 2. - <_> - - <_> - 6 2 3 1 -1. - <_> - 7 2 1 1 3. - <_> - - <_> - 16 0 3 3 -1. - <_> - 16 1 3 1 3. - <_> - - <_> - 9 1 3 3 -1. - <_> - 10 1 1 3 3. - <_> - - <_> - 15 0 1 2 -1. - <_> - 15 0 1 1 2. - 1 - <_> - - <_> - 9 1 2 4 -1. - <_> - 10 1 1 4 2. - <_> - - <_> - 21 2 1 2 -1. - <_> - 21 2 1 1 2. - 1 - <_> - - <_> - 1 2 2 1 -1. - <_> - 1 2 1 1 2. - 1 - <_> - - <_> - 0 3 22 2 -1. - <_> - 0 3 11 2 2. - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 1 9. - <_> - - <_> - 11 0 2 2 -1. - <_> - 12 0 1 1 2. - <_> - 11 1 1 1 2. - <_> - - <_> - 10 0 1 4 -1. - <_> - 9 1 1 2 2. - 1 - <_> - - <_> - 4 1 16 2 -1. - <_> - 8 1 8 2 2. - <_> - - <_> - 7 0 2 3 -1. - <_> - 7 0 1 3 2. - 1 - <_> - - <_> - 4 1 14 4 -1. - <_> - 11 1 7 2 2. - <_> - 4 3 7 2 2. - <_> - - <_> - 3 0 1 3 -1. - <_> - 3 1 1 1 3. - <_> - - <_> - 11 0 2 4 -1. - <_> - 11 0 1 4 2. - <_> - - <_> - 8 0 3 3 -1. - <_> - 9 1 1 1 9. - <_> - - <_> - 20 1 1 2 -1. - <_> - 20 2 1 1 2. - <_> - - <_> - 1 3 1 2 -1. - <_> - 1 4 1 1 2. - <_> - - <_> - 0 3 22 2 -1. - <_> - 0 3 11 2 2. - <_> - - <_> - 0 2 2 1 -1. - <_> - 1 2 1 1 2. - <_> - - <_> - 16 0 6 5 -1. - <_> - 18 0 2 5 3. - <_> - - <_> - 0 0 6 5 -1. - <_> - 2 0 2 5 3. - <_> - - <_> - 4 2 18 1 -1. - <_> - 4 2 9 1 2. - <_> - - <_> - 6 2 10 2 -1. - <_> - 6 2 5 1 2. - <_> - 11 3 5 1 2. - <_> - - <_> - 4 2 18 1 -1. - <_> - 4 2 9 1 2. - <_> - - <_> - 0 2 18 1 -1. - <_> - 9 2 9 1 2. - <_> - - <_> - 21 1 1 4 -1. - <_> - 21 3 1 2 2. - <_> - - <_> - 1 4 4 1 -1. - <_> - 2 4 2 1 2. - <_> - - <_> - 16 0 3 1 -1. - <_> - 17 0 1 1 3. - <_> - - <_> - 1 0 4 3 -1. - <_> - 1 1 4 1 3. - <_> - - <_> - 18 1 1 4 -1. - <_> - 18 3 1 2 2. - <_> - - <_> - 10 1 2 2 -1. - <_> - 10 1 2 1 2. - 1 - <_> - - <_> - 18 1 1 4 -1. - <_> - 18 3 1 2 2. - <_> - - <_> - 3 1 1 4 -1. - <_> - 3 3 1 2 2. - <_> - - <_> - 14 2 2 2 -1. - <_> - 15 2 1 1 2. - <_> - 14 3 1 1 2. - <_> - - <_> - 1 0 18 3 -1. - <_> - 7 1 6 1 9. - <_> - - <_> - 16 0 3 1 -1. - <_> - 17 0 1 1 3. - <_> - - <_> - 8 3 4 2 -1. - <_> - 8 3 2 1 2. - <_> - 10 4 2 1 2. - <_> - - <_> - 11 3 2 2 -1. - <_> - 12 3 1 1 2. - <_> - 11 4 1 1 2. - <_> - - <_> - 8 3 6 2 -1. - <_> - 8 3 3 1 2. - <_> - 11 4 3 1 2. - <_> - - <_> - 16 0 3 1 -1. - <_> - 17 0 1 1 3. - <_> - - <_> - 3 0 3 1 -1. - <_> - 4 0 1 1 3. - <_> - - <_> - 15 3 2 2 -1. - <_> - 16 3 1 1 2. - <_> - 15 4 1 1 2. - <_> - - <_> - 5 3 2 2 -1. - <_> - 5 3 1 1 2. - <_> - 6 4 1 1 2. - <_> - - <_> - 15 2 2 1 -1. - <_> - 15 2 1 1 2. - 1 - <_> - - <_> - 7 2 1 2 -1. - <_> - 7 2 1 1 2. - 1 - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 2 2 3 2. - <_> - - <_> - 0 0 1 3 -1. - <_> - 0 1 1 1 3. - <_> - - <_> - 12 4 10 1 -1. - <_> - 12 4 5 1 2. - <_> - - <_> - 9 0 2 3 -1. - <_> - 10 0 1 3 2. - <_> - - <_> - 14 0 1 2 -1. - <_> - 14 0 1 1 2. - 1 - <_> - - <_> - 8 0 6 1 -1. - <_> - 10 0 2 1 3. - <_> - - <_> - 21 1 1 4 -1. - <_> - 21 3 1 2 2. - <_> - - <_> - 0 1 1 4 -1. - <_> - 0 3 1 2 2. - <_> - - <_> - 4 1 16 2 -1. - <_> - 4 1 8 2 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - <_> - - <_> - 16 4 3 1 -1. - <_> - 17 4 1 1 3. - <_> - - <_> - 3 4 3 1 -1. - <_> - 4 4 1 1 3. - <_> - - <_> - 14 0 5 3 -1. - <_> - 14 1 5 1 3. - <_> - - <_> - 1 1 4 3 -1. - <_> - 3 1 2 3 2. - <_> - - <_> - 9 1 4 4 -1. - <_> - 9 1 2 4 2. - <_> - - <_> - 1 3 16 2 -1. - <_> - 5 3 8 2 2. - <_> - - <_> - 19 2 2 2 -1. - <_> - 20 2 1 1 2. - <_> - 19 3 1 1 2. - <_> - - <_> - 10 3 2 2 -1. - <_> - 10 3 1 1 2. - <_> - 11 4 1 1 2. - <_> - - <_> - 9 1 4 4 -1. - <_> - 9 1 2 4 2. - <_> - - <_> - 10 0 2 1 -1. - <_> - 11 0 1 1 2. - <_> - - <_> - 10 3 6 2 -1. - <_> - 12 3 2 2 3. - <_> - - <_> - 2 3 2 2 -1. - <_> - 2 3 1 1 2. - <_> - 3 4 1 1 2. - <_> - - <_> - 18 1 2 2 -1. - <_> - 19 1 1 1 2. - <_> - 18 2 1 1 2. - <_> - - <_> - 2 4 3 1 -1. - <_> - 3 4 1 1 3. - <_> - - <_> - 19 2 2 2 -1. - <_> - 20 2 1 1 2. - <_> - 19 3 1 1 2. - <_> - - <_> - 6 0 3 1 -1. - <_> - 7 0 1 1 3. - <_> - - <_> - 14 0 1 2 -1. - <_> - 14 0 1 1 2. - 1 - <_> - - <_> - 8 0 2 1 -1. - <_> - 8 0 1 1 2. - 1 - <_> - - <_> - 15 0 1 2 -1. - <_> - 15 0 1 1 2. - 1 - <_> - - <_> - 5 2 3 1 -1. - <_> - 6 2 1 1 3. - <_> - - <_> - 15 1 2 2 -1. - <_> - 16 1 1 1 2. - <_> - 15 2 1 1 2. - <_> - - <_> - 2 1 16 2 -1. - <_> - 6 1 8 2 2. - <_> - - <_> - 10 0 6 2 -1. - <_> - 10 0 3 2 2. - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 1 9. - <_> - - <_> - 11 0 9 1 -1. - <_> - 14 0 3 1 3. - <_> - - <_> - 8 4 4 1 -1. - <_> - 10 4 2 1 2. - <_> - - <_> - 13 1 5 4 -1. - <_> - 13 3 5 2 2. - <_> - - <_> - 2 0 9 1 -1. - <_> - 5 0 3 1 3. - <_> - - <_> - 13 0 5 4 -1. - <_> - 13 1 5 2 2. - <_> - - <_> - 6 2 10 2 -1. - <_> - 6 2 5 1 2. - <_> - 11 3 5 1 2. - <_> - - <_> - 19 3 3 2 -1. - <_> - 19 4 3 1 2. - <_> - - <_> - 2 0 5 3 -1. - <_> - 2 1 5 1 3. - <_> - - <_> - 20 1 1 2 -1. - <_> - 20 2 1 1 2. - <_> - - <_> - 1 1 1 2 -1. - <_> - 1 2 1 1 2. - <_> - - <_> - 17 1 2 2 -1. - <_> - 18 1 1 1 2. - <_> - 17 2 1 1 2. - <_> - - <_> - 9 0 4 5 -1. - <_> - 11 0 2 5 2. - <_> - - <_> - 9 2 6 3 -1. - <_> - 9 2 3 3 2. - <_> - - <_> - 8 3 4 2 -1. - <_> - 10 3 2 2 2. - <_> - - <_> - 21 0 1 4 -1. - <_> - 21 2 1 2 2. - <_> - - <_> - 1 2 20 1 -1. - <_> - 6 2 10 1 2. - <_> - - <_> - 20 0 2 1 -1. - <_> - 20 0 1 1 2. - 1 - <_> - - <_> - 3 1 2 2 -1. - <_> - 3 1 1 1 2. - <_> - 4 2 1 1 2. - <_> - - <_> - 17 0 4 2 -1. - <_> - 18 0 2 2 2. - <_> - - <_> - 5 0 3 2 -1. - <_> - 6 0 1 2 3. - <_> - - <_> - 1 1 21 3 -1. - <_> - 8 2 7 1 9. - <_> - - <_> - 6 0 3 2 -1. - <_> - 7 0 1 2 3. - <_> - - <_> - 13 2 3 1 -1. - <_> - 14 2 1 1 3. - <_> - - <_> - 10 2 2 2 -1. - <_> - 10 2 1 1 2. - <_> - 11 3 1 1 2. - <_> - - <_> - 19 3 3 2 -1. - <_> - 19 4 3 1 2. - <_> - - <_> - 0 3 3 2 -1. - <_> - 0 4 3 1 2. - <_> - - <_> - 13 2 3 1 -1. - <_> - 14 2 1 1 3. - <_> - - <_> - 6 2 3 1 -1. - <_> - 7 2 1 1 3. - <_> - - <_> - 14 2 2 1 -1. - <_> - 14 2 1 1 2. - 1 - <_> - - <_> - 8 2 1 2 -1. - <_> - 8 2 1 1 2. - 1 - <_> - - <_> - 19 1 2 2 -1. - <_> - 20 1 1 1 2. - <_> - 19 2 1 1 2. - <_> - - <_> - 2 1 4 2 -1. - <_> - 2 2 4 1 2. - <_> - - <_> - 19 1 2 2 -1. - <_> - 20 1 1 1 2. - <_> - 19 2 1 1 2. - <_> - - <_> - 1 1 2 2 -1. - <_> - 1 1 1 1 2. - <_> - 2 2 1 1 2. - <_> - - <_> - 11 3 2 2 -1. - <_> - 12 3 1 1 2. - <_> - 11 4 1 1 2. - <_> - - <_> - 4 0 3 1 -1. - <_> - 5 0 1 1 3. - <_> - - <_> - 13 3 5 2 -1. - <_> - 13 4 5 1 2. - <_> - - <_> - 4 3 5 2 -1. - <_> - 4 4 5 1 2. - <_> - - <_> - 3 0 16 4 -1. - <_> - 11 0 8 2 2. - <_> - 3 2 8 2 2. - <_> - - <_> - 0 0 2 4 -1. - <_> - 0 2 2 2 2. - <_> - - <_> - 17 0 4 2 -1. - <_> - 18 0 2 2 2. - <_> - - <_> - 1 0 4 2 -1. - <_> - 2 0 2 2 2. - <_> - - <_> - 6 2 16 2 -1. - <_> - 10 2 8 2 2. - <_> - - <_> - 0 2 16 2 -1. - <_> - 4 2 8 2 2. - <_> - - <_> - 15 4 3 1 -1. - <_> - 16 4 1 1 3. - <_> - - <_> - 9 1 4 4 -1. - <_> - 11 1 2 4 2. - <_> - - <_> - 15 4 3 1 -1. - <_> - 16 4 1 1 3. - <_> - - <_> - 7 0 8 2 -1. - <_> - 7 0 4 1 2. - <_> - 11 1 4 1 2. - <_> - - <_> - 18 1 2 2 -1. - <_> - 19 1 1 1 2. - <_> - 18 2 1 1 2. - <_> - - <_> - 3 0 3 1 -1. - <_> - 4 0 1 1 3. - <_> - - <_> - 18 1 2 2 -1. - <_> - 19 1 1 1 2. - <_> - 18 2 1 1 2. - <_> - - <_> - 4 4 3 1 -1. - <_> - 5 4 1 1 3. - <_> - - <_> - 9 4 4 1 -1. - <_> - 10 4 2 1 2. - <_> - - <_> - 2 1 2 2 -1. - <_> - 2 1 1 1 2. - <_> - 3 2 1 1 2. - <_> - - <_> - 11 3 2 2 -1. - <_> - 12 3 1 1 2. - <_> - 11 4 1 1 2. - <_> - - <_> - 9 3 2 2 -1. - <_> - 9 3 1 1 2. - <_> - 10 4 1 1 2. - <_> - - <_> - 11 1 4 4 -1. - <_> - 12 1 2 4 2. - <_> - - <_> - 9 0 3 3 -1. - <_> - 10 1 1 1 9. - <_> - - <_> - 11 1 4 4 -1. - <_> - 12 1 2 4 2. - <_> - - <_> - 7 1 4 4 -1. - <_> - 8 1 2 4 2. - <_> - - <_> - 1 1 20 2 -1. - <_> - 6 1 10 2 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 1 1 2. - <_> - 10 1 1 1 2. - <_> - - <_> - 9 0 6 2 -1. - <_> - 12 0 3 1 2. - <_> - 9 1 3 1 2. - <_> - - <_> - 7 0 6 2 -1. - <_> - 7 0 3 1 2. - <_> - 10 1 3 1 2. - <_> - - <_> - 20 2 2 2 -1. - <_> - 20 2 1 2 2. - <_> - - <_> - 3 2 3 1 -1. - <_> - 4 2 1 1 3. - <_> - - <_> - 8 0 6 1 -1. - <_> - 10 0 2 1 3. - <_> - - <_> - 3 2 1 2 -1. - <_> - 3 3 1 1 2. - <_> - - <_> - 16 1 6 4 -1. - <_> - 19 1 3 2 2. - <_> - 16 3 3 2 2. - <_> - - <_> - 0 1 6 4 -1. - <_> - 0 1 3 2 2. - <_> - 3 3 3 2 2. - <_> - - <_> - 20 3 2 1 -1. - <_> - 20 3 1 1 2. - <_> - - <_> - 0 3 2 1 -1. - <_> - 1 3 1 1 2. - <_> - - <_> - 21 1 1 4 -1. - <_> - 21 3 1 2 2. - <_> - - <_> - 0 1 1 4 -1. - <_> - 0 3 1 2 2. - <_> - - <_> - 1 1 1 3 -1. - <_> - 1 2 1 1 3. - <_> - - <_> - 9 1 4 4 -1. - <_> - 10 1 2 4 2. - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 1 9. - <_> - - <_> - 9 0 8 2 -1. - <_> - 9 0 4 2 2. - <_> - - <_> - 3 0 16 1 -1. - <_> - 11 0 8 1 2. - <_> - - <_> - 14 2 2 1 -1. - <_> - 14 2 1 1 2. - 1 - <_> - - <_> - 6 1 2 2 -1. - <_> - 6 1 1 1 2. - <_> - 7 2 1 1 2. - <_> - - <_> - 13 1 5 4 -1. - <_> - 13 3 5 2 2. - <_> - - <_> - 2 0 4 3 -1. - <_> - 2 1 4 1 3. - <_> - - <_> - 18 0 4 2 -1. - <_> - 20 0 2 1 2. - <_> - 18 1 2 1 2. - <_> - - <_> - 6 2 10 2 -1. - <_> - 6 2 5 1 2. - <_> - 11 3 5 1 2. - <_> - - <_> - 8 2 8 3 -1. - <_> - 8 2 4 3 2. - <_> - - <_> - 6 2 8 3 -1. - <_> - 10 2 4 3 2. - <_> - - <_> - 18 0 1 3 -1. - <_> - 18 1 1 1 3. - <_> - - <_> - 9 0 3 1 -1. - <_> - 10 0 1 1 3. - <_> - - <_> - 21 0 1 4 -1. - <_> - 21 2 1 2 2. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 2 1 2 2. - <_> - - <_> - 18 0 1 3 -1. - <_> - 18 1 1 1 3. - <_> - - <_> - 3 0 1 3 -1. - <_> - 3 1 1 1 3. - <_> - - <_> - 16 0 6 5 -1. - <_> - 18 0 2 5 3. - <_> - - <_> - 0 1 8 4 -1. - <_> - 0 1 4 2 2. - <_> - 4 3 4 2 2. - <_> - - <_> - 18 3 2 2 -1. - <_> - 19 3 1 1 2. - <_> - 18 4 1 1 2. - <_> - - <_> - 2 2 2 1 -1. - <_> - 2 2 1 1 2. - 1 - <_> - - <_> - 19 4 2 1 -1. - <_> - 19 4 1 1 2. - <_> - - <_> - 0 2 18 1 -1. - <_> - 9 2 9 1 2. - <_> - - <_> - 3 0 16 4 -1. - <_> - 11 0 8 2 2. - <_> - 3 2 8 2 2. - <_> - - <_> - 5 0 3 1 -1. - <_> - 6 0 1 1 3. - <_> - - <_> - 14 0 3 2 -1. - <_> - 15 0 1 2 3. - <_> - - <_> - 5 1 2 2 -1. - <_> - 5 1 1 1 2. - <_> - 6 2 1 1 2. - <_> - - <_> - 14 0 3 2 -1. - <_> - 15 0 1 2 3. - <_> - - <_> - 5 0 3 2 -1. - <_> - 6 0 1 2 3. - <_> - - <_> - 15 2 3 1 -1. - <_> - 16 2 1 1 3. - <_> - - <_> - 5 3 3 1 -1. - <_> - 6 3 1 1 3. - <_> - - <_> - 1 1 21 3 -1. - <_> - 8 2 7 1 9. - <_> - - <_> - 1 2 3 1 -1. - <_> - 2 2 1 1 3. - <_> - - <_> - 19 1 1 3 -1. - <_> - 19 2 1 1 3. - <_> - - <_> - 2 1 1 3 -1. - <_> - 2 2 1 1 3. - <_> - - <_> - 7 1 8 2 -1. - <_> - 11 1 4 1 2. - <_> - 7 2 4 1 2. - <_> - - <_> - 9 1 2 2 -1. - <_> - 9 1 1 1 2. - <_> - 10 2 1 1 2. - <_> - - <_> - 11 2 3 3 -1. - <_> - 12 2 1 3 3. - <_> - - <_> - 8 1 3 4 -1. - <_> - 9 1 1 4 3. - <_> - - <_> - 16 4 3 1 -1. - <_> - 17 4 1 1 3. - <_> - - <_> - 3 4 3 1 -1. - <_> - 4 4 1 1 3. - <_> - - <_> - 16 4 3 1 -1. - <_> - 17 4 1 1 3. - <_> - - <_> - 3 4 3 1 -1. - <_> - 4 4 1 1 3. - <_> - - <_> - 8 3 6 2 -1. - <_> - 11 3 3 1 2. - <_> - 8 4 3 1 2. - <_> - - <_> - 3 2 3 2 -1. - <_> - 4 2 1 2 3. - <_> - - <_> - 13 3 2 2 -1. - <_> - 14 3 1 1 2. - <_> - 13 4 1 1 2. - <_> - - <_> - 9 3 4 2 -1. - <_> - 9 3 2 1 2. - <_> - 11 4 2 1 2. - <_> - - <_> - 15 2 2 2 -1. - <_> - 16 2 1 1 2. - <_> - 15 3 1 1 2. - <_> - - <_> - 1 4 2 1 -1. - <_> - 2 4 1 1 2. - <_> - - <_> - 9 1 4 3 -1. - <_> - 9 1 2 3 2. - <_> - - <_> - 6 2 8 1 -1. - <_> - 8 2 4 1 2. - <_> - - <_> - 18 3 4 2 -1. - <_> - 18 4 4 1 2. - <_> - - <_> - 7 4 4 1 -1. - <_> - 8 4 2 1 2. - <_> - - <_> - 18 3 4 2 -1. - <_> - 18 4 4 1 2. - <_> - - <_> - 0 3 4 2 -1. - <_> - 0 4 4 1 2. - <_> - - <_> - 15 1 3 1 -1. - <_> - 16 1 1 1 3. - <_> - - <_> - 4 0 5 4 -1. - <_> - 4 1 5 2 2. - <_> - - <_> - 15 2 2 2 -1. - <_> - 16 2 1 1 2. - <_> - 15 3 1 1 2. - <_> - - <_> - 5 2 2 2 -1. - <_> - 5 2 1 1 2. - <_> - 6 3 1 1 2. - <_> - - <_> - 13 0 3 1 -1. - <_> - 14 0 1 1 3. - <_> - - <_> - 6 0 3 1 -1. - <_> - 7 0 1 1 3. - <_> - - <_> - 15 0 3 2 -1. - <_> - 16 0 1 2 3. - <_> - - <_> - 4 0 3 2 -1. - <_> - 5 0 1 2 3. - <_> - - <_> - 15 1 5 4 -1. - <_> - 15 3 5 2 2. - <_> - - <_> - 4 1 3 3 -1. - <_> - 4 2 3 1 3. - <_> - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - <_> - - <_> - 10 0 6 2 -1. - <_> - 10 0 3 2 2. - <_> - - <_> - 3 2 3 1 -1. - <_> - 4 2 1 1 3. - <_> - - <_> - 6 1 14 2 -1. - <_> - 6 1 7 2 2. - <_> - - <_> - 1 0 4 1 -1. - <_> - 2 1 2 1 2. - 1 - <_> - - <_> - 10 0 4 5 -1. - <_> - 10 0 2 5 2. - <_> - - <_> - 4 1 12 2 -1. - <_> - 10 1 6 2 2. - <_> - - <_> - 0 0 22 2 -1. - <_> - 11 0 11 1 2. - <_> - 0 1 11 1 2. - <_> - - <_> - 2 0 2 3 -1. - <_> - 2 1 2 1 3. - <_> - - <_> - 18 1 1 3 -1. - <_> - 18 2 1 1 3. - <_> - - <_> - 2 4 3 1 -1. - <_> - 3 4 1 1 3. - <_> - - <_> - 16 0 6 5 -1. - <_> - 18 0 2 5 3. - <_> - - <_> - 7 3 8 2 -1. - <_> - 7 3 4 1 2. - <_> - 11 4 4 1 2. - <_> - - <_> - 14 2 2 1 -1. - <_> - 14 2 1 1 2. - 1 - <_> - - <_> - 8 2 1 2 -1. - <_> - 8 2 1 1 2. - 1 - <_> - - <_> - 16 0 6 5 -1. - <_> - 18 0 2 5 3. - <_> - - <_> - 5 1 2 2 -1. - <_> - 5 1 1 1 2. - <_> - 6 2 1 1 2. - <_> - - <_> - 16 0 6 5 -1. - <_> - 18 0 2 5 3. - <_> - - <_> - 6 0 10 4 -1. - <_> - 6 0 5 2 2. - <_> - 11 2 5 2 2. - <_> - - <_> - 16 0 6 5 -1. - <_> - 18 0 2 5 3. - <_> - - <_> - 0 0 6 5 -1. - <_> - 2 0 2 5 3. - <_> - - <_> - 5 2 16 2 -1. - <_> - 9 2 8 2 2. - <_> - - <_> - 1 2 10 3 -1. - <_> - 6 2 5 3 2. - <_> - - <_> - 15 3 2 2 -1. - <_> - 16 3 1 1 2. - <_> - 15 4 1 1 2. - <_> - - <_> - 5 3 2 2 -1. - <_> - 5 3 1 1 2. - <_> - 6 4 1 1 2. - <_> - - <_> - 14 1 8 4 -1. - <_> - 18 1 4 2 2. - <_> - 14 3 4 2 2. - <_> - - <_> - 3 1 1 4 -1. - <_> - 3 3 1 2 2. - <_> - - <_> - 21 1 1 4 -1. - <_> - 21 3 1 2 2. - <_> - - <_> - 0 2 22 2 -1. - <_> - 0 2 11 1 2. - <_> - 11 3 11 1 2. - <_> - - <_> - 17 0 3 3 -1. - <_> - 17 1 3 1 3. - <_> - - <_> - 2 0 3 3 -1. - <_> - 2 1 3 1 3. - <_> - - <_> - 10 0 12 5 -1. - <_> - 13 0 6 5 2. - <_> - - <_> - 9 2 4 3 -1. - <_> - 11 2 2 3 2. - <_> - - <_> - 11 0 4 1 -1. - <_> - 11 0 2 1 2. - 1 - <_> - - <_> - 9 3 2 2 -1. - <_> - 9 3 1 1 2. - <_> - 10 4 1 1 2. - <_> - - <_> - 14 0 4 2 -1. - <_> - 16 0 2 1 2. - <_> - 14 1 2 1 2. - <_> - - <_> - 0 3 20 2 -1. - <_> - 0 3 10 1 2. - <_> - 10 4 10 1 2. - <_> - - <_> - 13 1 9 2 -1. - <_> - 16 1 3 2 3. - <_> - - <_> - 9 4 4 1 -1. - <_> - 10 4 2 1 2. - <_> - - <_> - 11 2 2 2 -1. - <_> - 12 2 1 1 2. - <_> - 11 3 1 1 2. - <_> - - <_> - 10 1 2 2 -1. - <_> - 10 1 2 1 2. - 1 - <_> - - <_> - 14 1 2 2 -1. - <_> - 15 1 1 1 2. - <_> - 14 2 1 1 2. - <_> - - <_> - 5 0 3 1 -1. - <_> - 6 0 1 1 3. - <_> - - <_> - 8 2 6 1 -1. - <_> - 8 2 3 1 2. - <_> - - <_> - 0 4 22 1 -1. - <_> - 11 4 11 1 2. - <_> - - <_> - 16 4 2 1 -1. - <_> - 16 4 1 1 2. - <_> - - <_> - 4 4 2 1 -1. - <_> - 5 4 1 1 2. - <_> - - <_> - 15 1 6 3 -1. - <_> - 17 1 2 3 3. - <_> - - <_> - 6 0 1 2 -1. - <_> - 6 0 1 1 2. - 1 - <_> - - <_> - 10 0 4 4 -1. - <_> - 10 0 2 4 2. - <_> - - <_> - 8 0 2 1 -1. - <_> - 9 0 1 1 2. - <_> - - <_> - 14 1 2 2 -1. - <_> - 15 1 1 1 2. - <_> - 14 2 1 1 2. - <_> - - <_> - 6 1 2 2 -1. - <_> - 6 1 1 1 2. - <_> - 7 2 1 1 2. - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 0 1 1 3. - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 2 2 3 2. - <_> - - <_> - 20 3 2 2 -1. - <_> - 20 4 2 1 2. - <_> - - <_> - 4 0 3 1 -1. - <_> - 5 0 1 1 3. - <_> - - <_> - 18 2 3 1 -1. - <_> - 19 2 1 1 3. - <_> - - <_> - 0 3 1 2 -1. - <_> - 0 4 1 1 2. - <_> - - <_> - 20 3 2 2 -1. - <_> - 21 3 1 1 2. - <_> - 20 4 1 1 2. - <_> - - <_> - 0 3 2 2 -1. - <_> - 0 3 1 1 2. - <_> - 1 4 1 1 2. - <_> - - <_> - 10 2 12 2 -1. - <_> - 13 2 6 2 2. - <_> - - <_> - 1 2 3 1 -1. - <_> - 2 2 1 1 3. - <_> - - <_> - 19 2 3 1 -1. - <_> - 20 2 1 1 3. - <_> - - <_> - 0 2 3 1 -1. - <_> - 1 2 1 1 3. - <_> - - <_> - 20 0 2 1 -1. - <_> - 20 0 1 1 2. - 1 - <_> - - <_> - 2 0 18 3 -1. - <_> - 8 1 6 1 9. - <_> - - <_> - 13 0 3 2 -1. - <_> - 14 0 1 2 3. - <_> - - <_> - 1 2 20 1 -1. - <_> - 6 2 10 1 2. - <_> - - <_> - 20 0 2 1 -1. - <_> - 20 0 1 1 2. - 1 - <_> - - <_> - 8 2 3 2 -1. - <_> - 9 2 1 2 3. - <_> - - <_> - 20 0 2 1 -1. - <_> - 20 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 6 2 16 2 -1. - <_> - 10 2 8 2 2. - <_> - - <_> - 0 2 16 2 -1. - <_> - 4 2 8 2 2. - <_> - - <_> - 9 3 4 2 -1. - <_> - 11 3 2 1 2. - <_> - 9 4 2 1 2. - <_> - - <_> - 8 0 4 4 -1. - <_> - 10 0 2 4 2. - <_> - - <_> - 11 0 3 1 -1. - <_> - 12 0 1 1 3. - <_> - - <_> - 9 0 2 1 -1. - <_> - 10 0 1 1 2. - <_> - - <_> - 11 0 2 1 -1. - <_> - 11 0 1 1 2. - <_> - - <_> - 2 0 16 3 -1. - <_> - 10 0 8 3 2. - <_> - - <_> - 5 4 12 1 -1. - <_> - 8 4 6 1 2. - <_> - - <_> - 6 0 3 2 -1. - <_> - 7 0 1 2 3. - <_> - - <_> - 4 2 18 3 -1. - <_> - 10 3 6 1 9. - <_> - - <_> - 1 2 2 2 -1. - <_> - 1 2 1 1 2. - <_> - 2 3 1 1 2. - <_> - - <_> - 19 1 1 3 -1. - <_> - 19 2 1 1 3. - <_> - - <_> - 5 0 4 1 -1. - <_> - 6 1 2 1 2. - 1 - <_> - - <_> - 11 0 2 2 -1. - <_> - 12 0 1 1 2. - <_> - 11 1 1 1 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 1 1 2. - <_> - 10 1 1 1 2. - <_> - - <_> - 10 0 2 5 -1. - <_> - 10 0 1 5 2. - <_> - - <_> - 9 1 4 4 -1. - <_> - 11 1 2 4 2. - <_> - - <_> - 15 4 3 1 -1. - <_> - 16 4 1 1 3. - <_> - - <_> - 2 0 4 3 -1. - <_> - 2 1 4 1 3. - <_> - - <_> - 15 4 3 1 -1. - <_> - 16 4 1 1 3. - <_> - - <_> - 4 4 3 1 -1. - <_> - 5 4 1 1 3. - <_> - - <_> - 20 0 2 2 -1. - <_> - 21 0 1 1 2. - <_> - 20 1 1 1 2. - <_> - - <_> - 0 1 8 4 -1. - <_> - 0 1 4 2 2. - <_> - 4 3 4 2 2. - <_> - - <_> - 4 2 18 3 -1. - <_> - 10 3 6 1 9. - <_> - - <_> - 0 2 18 3 -1. - <_> - 6 3 6 1 9. - <_> - - <_> - 7 0 2 3 -1. - <_> - 7 0 1 3 2. - 1 - <_> - - <_> - 12 1 2 2 -1. - <_> - 12 1 1 2 2. - 1 - <_> - - <_> - 11 0 1 3 -1. - <_> - 10 1 1 1 3. - 1 - <_> - - <_> - 12 0 2 2 -1. - <_> - 12 0 1 2 2. - 1 - <_> - - <_> - 10 0 2 2 -1. - <_> - 10 0 2 1 2. - 1 - <_> - - <_> - 18 0 4 2 -1. - <_> - 20 0 2 1 2. - <_> - 18 1 2 1 2. - <_> - - <_> - 0 2 2 2 -1. - <_> - 1 2 1 2 2. - <_> - - <_> - 21 3 1 2 -1. - <_> - 21 4 1 1 2. - <_> - - <_> - 0 2 16 1 -1. - <_> - 8 2 8 1 2. - <_> - - <_> - 17 2 2 1 -1. - <_> - 17 2 1 1 2. - <_> - - <_> - 0 0 4 5 -1. - <_> - 1 0 2 5 2. - <_> - - <_> - 13 1 3 3 -1. - <_> - 14 2 1 1 9. - <_> - - <_> - 4 1 5 4 -1. - <_> - 4 3 5 2 2. - <_> - - <_> - 18 3 2 2 -1. - <_> - 19 3 1 1 2. - <_> - 18 4 1 1 2. - <_> - - <_> - 8 2 4 2 -1. - <_> - 8 2 2 1 2. - <_> - 10 3 2 1 2. - <_> - - <_> - 14 2 2 2 -1. - <_> - 15 2 1 1 2. - <_> - 14 3 1 1 2. - <_> - - <_> - 2 3 2 2 -1. - <_> - 2 3 1 1 2. - <_> - 3 4 1 1 2. - <_> - - <_> - 11 0 3 1 -1. - <_> - 12 0 1 1 3. - <_> - - <_> - 8 0 3 1 -1. - <_> - 9 0 1 1 3. - <_> - - <_> - 18 0 4 2 -1. - <_> - 20 0 2 1 2. - <_> - 18 1 2 1 2. - <_> - - <_> - 4 0 4 1 -1. - <_> - 5 0 2 1 2. - <_> - - <_> - 14 0 4 2 -1. - <_> - 15 0 2 2 2. - <_> - - <_> - 6 2 2 2 -1. - <_> - 6 2 1 1 2. - <_> - 7 3 1 1 2. - <_> - - <_> - 16 1 3 3 -1. - <_> - 17 2 1 1 9. - <_> - - <_> - 4 0 3 2 -1. - <_> - 5 0 1 2 3. - <_> - - <_> - 9 1 4 4 -1. - <_> - 9 1 2 4 2. - <_> - - <_> - 6 1 3 3 -1. - <_> - 7 2 1 1 9. - <_> - - <_> - 14 0 3 2 -1. - <_> - 15 0 1 2 3. - <_> - - <_> - 0 0 4 2 -1. - <_> - 0 0 2 1 2. - <_> - 2 1 2 1 2. - <_> - - <_> - 17 2 2 1 -1. - <_> - 17 2 1 1 2. - <_> - - <_> - 5 0 3 2 -1. - <_> - 6 0 1 2 3. - <_> - - <_> - 16 0 4 3 -1. - <_> - 16 1 4 1 3. - <_> - - <_> - 4 3 5 2 -1. - <_> - 4 4 5 1 2. - <_> - - <_> - 17 4 3 1 -1. - <_> - 18 4 1 1 3. - <_> - - <_> - 3 2 2 1 -1. - <_> - 4 2 1 1 2. - <_> - - <_> - 17 4 3 1 -1. - <_> - 18 4 1 1 3. - <_> - - <_> - 6 4 6 1 -1. - <_> - 8 4 2 1 3. - <_> - - <_> - 5 1 16 2 -1. - <_> - 13 1 8 1 2. - <_> - 5 2 8 1 2. - <_> - - <_> - 2 4 3 1 -1. - <_> - 3 4 1 1 3. - <_> - - <_> - 6 1 14 2 -1. - <_> - 13 1 7 1 2. - <_> - 6 2 7 1 2. - <_> - - <_> - 2 1 14 2 -1. - <_> - 2 1 7 1 2. - <_> - 9 2 7 1 2. - <_> - - <_> - 16 1 4 2 -1. - <_> - 16 2 4 1 2. - <_> - - <_> - 8 1 6 2 -1. - <_> - 8 1 3 1 2. - <_> - 11 2 3 1 2. - <_> - - <_> - 16 1 4 3 -1. - <_> - 16 2 4 1 3. - <_> - - <_> - 2 1 4 2 -1. - <_> - 2 2 4 1 2. - <_> - - <_> - 10 0 8 5 -1. - <_> - 10 0 4 5 2. - <_> - - <_> - 6 1 6 3 -1. - <_> - 8 1 2 3 3. - <_> - - <_> - 19 1 2 2 -1. - <_> - 20 1 1 1 2. - <_> - 19 2 1 1 2. - <_> - - <_> - 8 0 4 4 -1. - <_> - 10 0 2 4 2. - <_> - - <_> - 19 0 2 1 -1. - <_> - 19 0 1 1 2. - 1 - <_> - - <_> - 0 0 20 4 -1. - <_> - 0 0 10 2 2. - <_> - 10 2 10 2 2. - <_> - - <_> - 19 1 3 4 -1. - <_> - 19 3 3 2 2. - <_> - - <_> - 0 3 22 2 -1. - <_> - 11 3 11 2 2. - <_> - - <_> - 14 1 2 2 -1. - <_> - 15 1 1 1 2. - <_> - 14 2 1 1 2. - <_> - - <_> - 6 1 2 2 -1. - <_> - 6 1 1 1 2. - <_> - 7 2 1 1 2. - <_> - - <_> - 14 0 1 2 -1. - <_> - 14 0 1 1 2. - 1 - <_> - - <_> - 3 4 3 1 -1. - <_> - 4 4 1 1 3. - <_> - - <_> - 15 2 3 1 -1. - <_> - 16 2 1 1 3. - <_> - - <_> - 7 0 2 1 -1. - <_> - 8 0 1 1 2. - <_> - - <_> - 19 1 2 2 -1. - <_> - 20 1 1 1 2. - <_> - 19 2 1 1 2. - <_> - - <_> - 1 1 2 2 -1. - <_> - 1 1 1 1 2. - <_> - 2 2 1 1 2. - <_> - - <_> - 21 1 1 2 -1. - <_> - 21 2 1 1 2. - <_> - - <_> - 0 1 1 2 -1. - <_> - 0 2 1 1 2. - <_> - - <_> - 12 0 3 1 -1. - <_> - 13 0 1 1 3. - <_> - - <_> - 0 3 2 2 -1. - <_> - 0 4 2 1 2. - <_> - - <_> - 12 0 3 1 -1. - <_> - 13 0 1 1 3. - <_> - - <_> - 6 3 8 2 -1. - <_> - 6 3 4 1 2. - <_> - 10 4 4 1 2. - <_> - - <_> - 12 0 3 1 -1. - <_> - 13 0 1 1 3. - <_> - - <_> - 0 2 3 1 -1. - <_> - 1 2 1 1 3. - <_> - - <_> - 10 2 2 2 -1. - <_> - 10 2 1 2 2. - <_> - - <_> - 10 1 2 4 -1. - <_> - 11 1 1 4 2. - <_> - - <_> - 12 0 3 1 -1. - <_> - 13 0 1 1 3. - <_> - - <_> - 7 0 3 1 -1. - <_> - 8 0 1 1 3. - <_> - - <_> - 17 1 4 2 -1. - <_> - 19 1 2 1 2. - <_> - 17 2 2 1 2. - <_> - - <_> - 1 1 4 2 -1. - <_> - 1 1 2 1 2. - <_> - 3 2 2 1 2. - <_> - - <_> - 18 1 2 1 -1. - <_> - 18 1 1 1 2. - <_> - - <_> - 2 1 2 1 -1. - <_> - 3 1 1 1 2. - <_> - - <_> - 18 2 2 2 -1. - <_> - 19 2 1 1 2. - <_> - 18 3 1 1 2. - <_> - - <_> - 2 0 2 2 -1. - <_> - 3 0 1 2 2. - <_> - - <_> - 18 2 2 2 -1. - <_> - 19 2 1 1 2. - <_> - 18 3 1 1 2. - <_> - - <_> - 7 0 3 1 -1. - <_> - 8 1 1 1 3. - 1 - <_> - - <_> - 18 2 2 2 -1. - <_> - 19 2 1 1 2. - <_> - 18 3 1 1 2. - <_> - - <_> - 2 2 2 2 -1. - <_> - 2 2 1 1 2. - <_> - 3 3 1 1 2. - <_> - - <_> - 20 2 1 2 -1. - <_> - 20 2 1 1 2. - 1 - <_> - - <_> - 2 2 2 1 -1. - <_> - 2 2 1 1 2. - 1 - <_> - - <_> - 13 0 5 2 -1. - <_> - 13 1 5 1 2. - <_> - - <_> - 6 3 10 2 -1. - <_> - 6 3 5 1 2. - <_> - 11 4 5 1 2. - <_> - - <_> - 10 3 2 2 -1. - <_> - 11 3 1 1 2. - <_> - 10 4 1 1 2. - <_> - - <_> - 2 2 8 3 -1. - <_> - 6 2 4 3 2. - <_> - - <_> - 12 3 3 1 -1. - <_> - 13 3 1 1 3. - <_> - - <_> - 2 4 16 1 -1. - <_> - 10 4 8 1 2. - <_> - - <_> - 12 2 3 2 -1. - <_> - 13 2 1 2 3. - <_> - - <_> - 7 2 3 2 -1. - <_> - 8 2 1 2 3. - <_> - - <_> - 11 2 2 2 -1. - <_> - 12 2 1 1 2. - <_> - 11 3 1 1 2. - <_> - - <_> - 9 2 2 2 -1. - <_> - 9 2 1 1 2. - <_> - 10 3 1 1 2. - <_> - - <_> - 15 2 4 2 -1. - <_> - 17 2 2 1 2. - <_> - 15 3 2 1 2. - <_> - - <_> - 6 0 8 5 -1. - <_> - 8 0 4 5 2. - <_> - - <_> - 13 2 2 1 -1. - <_> - 13 2 1 1 2. - 1 - <_> - - <_> - 9 2 1 2 -1. - <_> - 9 2 1 1 2. - 1 - <_> - - <_> - 15 2 4 2 -1. - <_> - 17 2 2 1 2. - <_> - 15 3 2 1 2. - <_> - - <_> - 3 2 4 2 -1. - <_> - 3 2 2 1 2. - <_> - 5 3 2 1 2. - <_> - - <_> - 17 0 4 2 -1. - <_> - 18 0 2 2 2. - <_> - - <_> - 1 0 4 2 -1. - <_> - 2 0 2 2 2. - <_> - - <_> - 14 0 4 2 -1. - <_> - 16 0 2 1 2. - <_> - 14 1 2 1 2. - <_> - - <_> - 11 1 3 1 -1. - <_> - 12 2 1 1 3. - 1 - <_> - - <_> - 3 2 3 2 -1. - <_> - 4 2 1 2 3. - <_> - - <_> - 9 0 10 3 -1. - <_> - 9 0 5 3 2. - <_> - - <_> - 2 0 3 2 -1. - <_> - 3 1 1 2 3. - 1 - <_> - - <_> - 11 1 2 4 -1. - <_> - 11 1 1 4 2. - <_> - - <_> - 1 2 16 1 -1. - <_> - 9 2 8 1 2. - <_> - - <_> - 14 2 2 1 -1. - <_> - 14 2 1 1 2. - 1 - <_> - - <_> - 5 2 3 1 -1. - <_> - 6 2 1 1 3. - <_> - - <_> - 21 0 1 4 -1. - <_> - 21 2 1 2 2. - <_> - - <_> - 7 2 1 2 -1. - <_> - 7 2 1 1 2. - 1 - <_> - - <_> - 10 3 6 2 -1. - <_> - 12 3 2 2 3. - <_> - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - <_> - - <_> - 0 0 22 4 -1. - <_> - 11 0 11 2 2. - <_> - 0 2 11 2 2. - <_> - - <_> - 2 2 2 2 -1. - <_> - 2 2 1 1 2. - <_> - 3 3 1 1 2. - <_> - - <_> - 4 2 14 2 -1. - <_> - 11 2 7 1 2. - <_> - 4 3 7 1 2. - <_> - - <_> - 1 4 4 1 -1. - <_> - 2 4 2 1 2. - <_> - - <_> - 8 4 6 1 -1. - <_> - 10 4 2 1 3. - <_> - - <_> - 4 0 5 4 -1. - <_> - 4 1 5 2 2. - <_> - - <_> - 16 0 4 3 -1. - <_> - 16 1 4 1 3. - <_> - - <_> - 2 0 4 3 -1. - <_> - 2 1 4 1 3. - <_> - - <_> - 12 0 2 1 -1. - <_> - 12 0 1 1 2. - <_> - - <_> - 0 3 22 2 -1. - <_> - 0 3 11 1 2. - <_> - 11 4 11 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - <_> - - <_> - 0 4 6 1 -1. - <_> - 2 4 2 1 3. - <_> - - <_> - 18 1 1 3 -1. - <_> - 18 2 1 1 3. - <_> - - <_> - 1 2 6 3 -1. - <_> - 3 2 2 3 3. - <_> - - <_> - 18 1 1 3 -1. - <_> - 18 2 1 1 3. - <_> - - <_> - 3 1 1 3 -1. - <_> - 3 2 1 1 3. - <_> - - <_> - 21 3 1 2 -1. - <_> - 21 4 1 1 2. - <_> - - <_> - 0 3 1 2 -1. - <_> - 0 4 1 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - <_> - - <_> - 4 0 2 1 -1. - <_> - 5 0 1 1 2. - <_> - - <_> - 8 0 12 3 -1. - <_> - 12 1 4 1 9. - <_> - - <_> - 8 0 4 1 -1. - <_> - 9 0 2 1 2. - <_> - - <_> - 10 0 8 4 -1. - <_> - 10 0 4 4 2. - <_> - - <_> - 9 0 4 4 -1. - <_> - 11 0 2 4 2. - <_> - - <_> - 8 0 12 3 -1. - <_> - 12 1 4 1 9. - <_> - - <_> - 2 0 12 3 -1. - <_> - 6 1 4 1 9. - <_> - - <_> - 10 0 8 4 -1. - <_> - 10 0 4 4 2. - <_> - - <_> - 4 0 8 4 -1. - <_> - 8 0 4 4 2. - <_> - - <_> - 10 1 6 4 -1. - <_> - 12 1 2 4 3. - <_> - - <_> - 9 2 3 3 -1. - <_> - 10 2 1 3 3. - <_> - - <_> - 10 1 6 4 -1. - <_> - 12 1 2 4 3. - <_> - - <_> - 6 1 6 4 -1. - <_> - 8 1 2 4 3. - <_> - - <_> - 6 2 10 2 -1. - <_> - 11 2 5 1 2. - <_> - 6 3 5 1 2. - <_> - - <_> - 2 1 15 3 -1. - <_> - 7 2 5 1 9. - <_> - - <_> - 14 1 2 1 -1. - <_> - 14 1 1 1 2. - <_> - - <_> - 1 2 3 1 -1. - <_> - 2 2 1 1 3. - <_> - - <_> - 4 2 15 1 -1. - <_> - 9 2 5 1 3. - <_> - - <_> - 4 2 3 1 -1. - <_> - 5 2 1 1 3. - <_> - - <_> - 14 1 2 1 -1. - <_> - 14 1 1 1 2. - <_> - - <_> - 0 1 9 2 -1. - <_> - 3 1 3 2 3. - <_> - - <_> - 21 2 1 2 -1. - <_> - 21 3 1 1 2. - <_> - - <_> - 0 2 1 2 -1. - <_> - 0 3 1 1 2. - <_> - - <_> - 0 3 22 1 -1. - <_> - 0 3 11 1 2. - <_> - - <_> - 0 3 16 2 -1. - <_> - 4 3 8 2 2. - <_> - - <_> - 15 2 3 1 -1. - <_> - 16 2 1 1 3. - <_> - - <_> - 4 4 3 1 -1. - <_> - 5 4 1 1 3. - <_> - - <_> - 14 0 6 2 -1. - <_> - 17 0 3 1 2. - <_> - 14 1 3 1 2. - <_> - - <_> - 2 0 6 2 -1. - <_> - 2 0 3 1 2. - <_> - 5 1 3 1 2. - <_> - - <_> - 11 3 2 2 -1. - <_> - 12 3 1 1 2. - <_> - 11 4 1 1 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - <_> - - <_> - 17 0 4 2 -1. - <_> - 18 0 2 2 2. - <_> - - <_> - 1 0 4 2 -1. - <_> - 2 0 2 2 2. - <_> - - <_> - 16 0 3 2 -1. - <_> - 17 0 1 2 3. - <_> - - <_> - 3 0 3 2 -1. - <_> - 4 0 1 2 3. - <_> - - <_> - 12 1 2 4 -1. - <_> - 13 1 1 2 2. - <_> - 12 3 1 2 2. - <_> - - <_> - 8 1 2 4 -1. - <_> - 8 1 1 2 2. - <_> - 9 3 1 2 2. - <_> - - <_> - 14 0 4 2 -1. - <_> - 15 0 2 2 2. - <_> - - <_> - 10 0 2 2 -1. - <_> - 10 0 1 1 2. - <_> - 11 1 1 1 2. - <_> - - <_> - 15 1 2 2 -1. - <_> - 16 1 1 1 2. - <_> - 15 2 1 1 2. - <_> - - <_> - 7 1 8 2 -1. - <_> - 7 1 4 1 2. - <_> - 11 2 4 1 2. - <_> - - <_> - 9 2 9 3 -1. - <_> - 12 3 3 1 9. - <_> - - <_> - 4 2 9 3 -1. - <_> - 7 3 3 1 9. - <_> - - <_> - 19 2 2 2 -1. - <_> - 20 2 1 1 2. - <_> - 19 3 1 1 2. - <_> - - <_> - 9 2 1 2 -1. - <_> - 9 2 1 1 2. - 1 - <_> - - <_> - 7 2 8 3 -1. - <_> - 7 2 4 3 2. - <_> - - <_> - 4 0 3 1 -1. - <_> - 5 0 1 1 3. - <_> - - <_> - 13 4 3 1 -1. - <_> - 14 4 1 1 3. - <_> - - <_> - 1 2 2 2 -1. - <_> - 1 2 1 1 2. - <_> - 2 3 1 1 2. - <_> - - <_> - 19 2 2 2 -1. - <_> - 20 2 1 1 2. - <_> - 19 3 1 1 2. - <_> - - <_> - 1 1 2 2 -1. - <_> - 1 1 1 1 2. - <_> - 2 2 1 1 2. - <_> - - <_> - 21 0 1 4 -1. - <_> - 21 2 1 2 2. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 2 1 2 2. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 0 1 1 3. - <_> - - <_> - 2 0 16 2 -1. - <_> - 6 0 8 2 2. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 0 1 1 3. - <_> - - <_> - 3 1 16 2 -1. - <_> - 11 1 8 2 2. - <_> - - <_> - 13 4 3 1 -1. - <_> - 14 4 1 1 3. - <_> - - <_> - 6 4 3 1 -1. - <_> - 7 4 1 1 3. - <_> - - <_> - 11 2 2 1 -1. - <_> - 11 2 1 1 2. - 1 - <_> - - <_> - 9 0 4 3 -1. - <_> - 11 0 2 3 2. - <_> - - <_> - 14 2 2 1 -1. - <_> - 14 2 1 1 2. - 1 - <_> - - <_> - 8 0 2 1 -1. - <_> - 8 0 1 1 2. - 1 - <_> - - <_> - 12 1 2 2 -1. - <_> - 12 1 1 2 2. - 1 - <_> - - <_> - 9 3 2 2 -1. - <_> - 9 3 1 1 2. - <_> - 10 4 1 1 2. - <_> - - <_> - 4 2 16 1 -1. - <_> - 4 2 8 1 2. - <_> - - <_> - 3 0 2 1 -1. - <_> - 4 0 1 1 2. - <_> - - <_> - 14 0 8 5 -1. - <_> - 14 0 4 5 2. - <_> - - <_> - 0 0 8 5 -1. - <_> - 4 0 4 5 2. - <_> - - <_> - 15 1 2 2 -1. - <_> - 16 1 1 1 2. - <_> - 15 2 1 1 2. - <_> - - <_> - 6 1 3 2 -1. - <_> - 7 1 1 2 3. - <_> - - <_> - 15 1 3 3 -1. - <_> - 16 2 1 1 9. - <_> - - <_> - 4 1 3 3 -1. - <_> - 5 2 1 1 9. - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 1 2 1 3. - <_> - - <_> - 8 2 6 1 -1. - <_> - 11 2 3 1 2. - <_> - - <_> - 10 0 12 2 -1. - <_> - 13 0 6 2 2. - <_> - - <_> - 0 2 22 3 -1. - <_> - 11 2 11 3 2. - <_> - - <_> - 15 4 2 1 -1. - <_> - 15 4 1 1 2. - <_> - - <_> - 0 0 3 3 -1. - <_> - 1 0 1 3 3. - <_> - - <_> - 15 1 6 2 -1. - <_> - 17 1 2 2 3. - <_> - - <_> - 8 0 4 5 -1. - <_> - 10 0 2 5 2. - <_> - - <_> - 11 3 4 1 -1. - <_> - 12 3 2 1 2. - <_> - - <_> - 7 3 4 1 -1. - <_> - 8 3 2 1 2. - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 1 2 1 3. - <_> - - <_> - 4 0 2 3 -1. - <_> - 4 1 2 1 3. - <_> - - <_> - 14 2 2 1 -1. - <_> - 14 2 1 1 2. - 1 - <_> - - <_> - 1 2 6 1 -1. - <_> - 3 2 2 1 3. - <_> - - <_> - 7 0 8 2 -1. - <_> - 11 0 4 1 2. - <_> - 7 1 4 1 2. - <_> - - <_> - 9 0 3 1 -1. - <_> - 10 0 1 1 3. - <_> - - <_> - 11 0 2 2 -1. - <_> - 12 0 1 1 2. - <_> - 11 1 1 1 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 1 1 2. - <_> - 10 1 1 1 2. - <_> - - <_> - 10 1 3 3 -1. - <_> - 11 1 1 3 3. - <_> - - <_> - 4 3 5 2 -1. - <_> - 4 4 5 1 2. - <_> - - <_> - 14 2 2 1 -1. - <_> - 14 2 1 1 2. - 1 - <_> - - <_> - 8 2 1 2 -1. - <_> - 8 2 1 1 2. - 1 - <_> - - <_> - 14 1 2 2 -1. - <_> - 15 1 1 1 2. - <_> - 14 2 1 1 2. - <_> - - <_> - 9 1 3 4 -1. - <_> - 10 1 1 4 3. - <_> - - <_> - 15 4 3 1 -1. - <_> - 16 4 1 1 3. - <_> - - <_> - 4 4 3 1 -1. - <_> - 5 4 1 1 3. - <_> - - <_> - 8 0 12 2 -1. - <_> - 14 0 6 1 2. - <_> - 8 1 6 1 2. - <_> - - <_> - 7 0 3 3 -1. - <_> - 8 1 1 1 9. - <_> - - <_> - 13 2 1 2 -1. - <_> - 13 2 1 1 2. - 1 - <_> - - <_> - 3 4 3 1 -1. - <_> - 4 4 1 1 3. - diff --git a/data/haarcascades/haarcascade_mcs_leftear.xml b/data/haarcascades/haarcascade_mcs_leftear.xml deleted file mode 100644 index 3598515165..0000000000 --- a/data/haarcascades/haarcascade_mcs_leftear.xml +++ /dev/null @@ -1,7633 +0,0 @@ - - - -BOOST - HAAR - 12 - 20 - - 65 - - 0 - 20 - - <_> - 7 - -1.6897829771041870e+00 - - <_> - - 0 -1 0 1.2798480689525604e-01 - - -7.1108317375183105e-01 8.3952748775482178e-01 - <_> - - 0 -1 1 5.0366270443191752e-05 - - -7.7958387136459351e-01 4.1161769628524780e-01 - <_> - - 0 -1 2 -1.1398220434784889e-02 - - 5.5991190671920776e-01 -5.2993881702423096e-01 - <_> - - 0 -1 3 2.8897399082779884e-02 - - -9.6023030579090118e-02 1.8446889519691467e-01 - <_> - - 0 -1 4 -5.7543441653251648e-03 - - 3.9083909988403320e-01 -7.0798218250274658e-01 - <_> - - 0 -1 5 1.2758660130202770e-02 - - -7.6031517982482910e-01 2.6452711224555969e-01 - <_> - - 0 -1 6 -4.1698651330079883e-05 - - 3.2332289218902588e-01 -5.7402020692825317e-01 - <_> - 12 - -1.6203830242156982e+00 - - <_> - - 0 -1 7 1.7598830163478851e-01 - - -5.9234100580215454e-01 7.8493958711624146e-01 - <_> - - 0 -1 8 3.8594089448451996e-02 - - -6.8187582492828369e-01 3.8166061043739319e-01 - <_> - - 0 -1 9 1.2052910029888153e-01 - - -3.7438058853149414e-01 5.2112519741058350e-01 - <_> - - 0 -1 10 2.1304990351200104e-01 - - 9.7819166257977486e-03 -6.5798282623291016e-01 - <_> - - 0 -1 11 -1.9179080426692963e-01 - - 8.8993859291076660e-01 -2.3742930591106415e-01 - <_> - - 0 -1 12 3.7649259902536869e-03 - - -9.2071659862995148e-02 1.5995720028877258e-01 - <_> - - 0 -1 13 -7.4397800490260124e-03 - - 3.5091850161552429e-01 -5.2880358695983887e-01 - <_> - - 0 -1 14 8.1300012767314911e-02 - - 4.7027029097080231e-02 -4.8141419887542725e-01 - <_> - - 0 -1 15 7.9818956553936005e-02 - - -3.0336898565292358e-01 5.7992082834243774e-01 - <_> - - 0 -1 16 3.9260480552911758e-02 - - -6.1189621686935425e-01 2.4700529873371124e-01 - <_> - - 0 -1 17 -8.6981123313307762e-03 - - 3.0427950620651245e-01 -4.3165320158004761e-01 - <_> - - 0 -1 18 5.5766489822417498e-05 - - -5.4995632171630859e-01 2.4196259677410126e-01 - <_> - 20 - -2.1234118938446045e+00 - - <_> - - 0 -1 19 1.9991339743137360e-01 - - -5.1076048612594604e-01 7.2653311491012573e-01 - <_> - - 0 -1 20 -1.6032690473366529e-04 - - 1.1732880026102066e-01 -1.9851410388946533e-01 - <_> - - 0 -1 21 6.2459441833198071e-03 - - -6.2454998493194580e-01 4.1317841410636902e-01 - <_> - - 0 -1 22 5.5343401618301868e-03 - - -8.2238370180130005e-01 2.2600589692592621e-01 - <_> - - 0 -1 23 1.0757610201835632e-01 - - -5.5525738000869751e-01 4.3564280867576599e-01 - <_> - - 0 -1 24 -9.9556613713502884e-03 - - 2.9808950424194336e-01 -3.0220919847488403e-01 - <_> - - 0 -1 25 -4.8354369937442243e-05 - - 4.4047379493713379e-01 -6.6946560144424438e-01 - <_> - - 0 -1 26 1.9743980374187231e-04 - - -2.5094148516654968e-01 1.9814400374889374e-01 - <_> - - 0 -1 27 -4.4098760554334149e-05 - - 3.0689230561256409e-01 -6.6775608062744141e-01 - <_> - - 0 -1 28 -1.7941730096936226e-02 - - 2.7399578690528870e-01 -2.9671499133110046e-01 - <_> - - 0 -1 29 5.3291041695047170e-05 - - -6.7100298404693604e-01 2.4690890312194824e-01 - <_> - - 0 -1 30 6.4407112076878548e-03 - - -5.2723282575607300e-01 2.4782879650592804e-01 - <_> - - 0 -1 31 -4.9925990402698517e-02 - - 8.2168322801589966e-01 -2.4012729525566101e-01 - <_> - - 0 -1 32 2.4148030206561089e-03 - - -3.8689721375703812e-02 1.9318090379238129e-01 - <_> - - 0 -1 33 6.2534123659133911e-02 - - -4.1077169775962830e-01 6.0665780305862427e-01 - <_> - - 0 -1 34 8.8917986431624740e-05 - - -6.7601591348648071e-01 3.1252190470695496e-01 - <_> - - 0 -1 35 -2.2447909577749670e-04 - - 1.8520550429821014e-01 -7.7942901849746704e-01 - <_> - - 0 -1 36 1.8156330042984337e-04 - - -6.6956442594528198e-01 1.5837380290031433e-01 - <_> - - 0 -1 37 5.0366270443191752e-05 - - -4.6770051121711731e-01 2.4539180099964142e-01 - <_> - - 0 -1 38 6.0776848840760067e-05 - - -6.8354898691177368e-01 1.8664689362049103e-01 - <_> - 12 - -1.4351799488067627e+00 - - <_> - - 0 -1 39 1.5990820527076721e-01 - - -6.2714368104934692e-01 7.2424608469009399e-01 - <_> - - 0 -1 40 7.6372842304408550e-03 - - 8.7740488350391388e-02 -5.2430278062820435e-01 - <_> - - 0 -1 41 6.0625150799751282e-03 - - -4.3119868636131287e-01 4.6857520937919617e-01 - <_> - - 0 -1 42 2.5897640734910965e-02 - - 1.5866510570049286e-02 -6.5979748964309692e-01 - <_> - - 0 -1 43 5.8885440230369568e-02 - - -2.1157009899616241e-01 6.7942970991134644e-01 - <_> - - 0 -1 44 1.1850179731845856e-01 - - -1.0366249829530716e-01 7.4645912647247314e-01 - <_> - - 0 -1 45 -1.6655250219628215e-03 - - -6.7015552520751953e-01 2.2192029654979706e-01 - <_> - - 0 -1 46 -4.4783479097532108e-05 - - 2.5404050946235657e-01 -4.9562969803810120e-01 - <_> - - 0 -1 47 -8.3481962792575359e-04 - - -7.3370438814163208e-01 2.0266470313072205e-01 - <_> - - 0 -1 48 -9.3157468363642693e-03 - - -7.3412007093429565e-01 7.2000503540039062e-02 - <_> - - 0 -1 49 -2.9555149376392365e-02 - - 5.1195901632308960e-01 -2.5446298718452454e-01 - <_> - - 0 -1 50 -7.9029072076082230e-03 - - -5.3299552202224731e-01 8.8295362889766693e-02 - <_> - 12 - -1.3800990581512451e+00 - - <_> - - 0 -1 51 9.8843306303024292e-02 - - -5.0631648302078247e-01 6.3027667999267578e-01 - <_> - - 0 -1 52 -4.2210938408970833e-03 - - 1.7837150394916534e-01 -3.3268490433692932e-01 - <_> - - 0 -1 53 2.9967099428176880e-02 - - -4.5201331377029419e-01 4.6473979949951172e-01 - <_> - - 0 -1 54 -1.6702869534492493e-01 - - 8.0514347553253174e-01 -4.0616780519485474e-02 - <_> - - 0 -1 55 1.9976759329438210e-02 - - 2.0976160466670990e-01 -7.3149591684341431e-01 - <_> - - 0 -1 56 8.1860616803169250e-02 - - -5.4268407821655273e-01 2.1634259819984436e-01 - <_> - - 0 -1 57 1.2709829956293106e-02 - - -2.4989350140094757e-01 4.7262668609619141e-01 - <_> - - 0 -1 58 -3.4979879856109619e-02 - - 3.0420958995819092e-01 -3.5224550962448120e-01 - <_> - - 0 -1 59 -1.3223739806562662e-03 - - -6.9712251424789429e-01 1.6912660002708435e-01 - <_> - - 0 -1 60 -2.3282319307327271e-02 - - 3.3972018957138062e-01 -3.6639729142189026e-01 - <_> - - 0 -1 61 -1.5517599880695343e-01 - - 7.3445862531661987e-01 -1.8277870118618011e-01 - <_> - - 0 -1 62 -3.9222039282321930e-02 - - 3.5923731327056885e-01 -1.1233209818601608e-01 - <_> - 37 - -2.0749111175537109e+00 - - <_> - - 0 -1 63 6.2616936862468719e-02 - - -4.8533481359481812e-01 6.1538851261138916e-01 - <_> - - 0 -1 64 1.1619539931416512e-02 - - -5.7667458057403564e-01 3.8557919859886169e-01 - <_> - - 0 -1 65 -5.7566948235034943e-03 - - 2.6634719967842102e-01 -8.2090580463409424e-01 - <_> - - 0 -1 66 9.2315487563610077e-03 - - -8.0720931291580200e-01 2.0323330163955688e-01 - <_> - - 0 -1 67 -3.3656319137662649e-03 - - 2.0334909856319427e-01 -7.4802142381668091e-01 - <_> - - 0 -1 68 1.2655390310101211e-04 - - -5.8880287408828735e-01 1.7631030082702637e-01 - <_> - - 0 -1 69 1.0345769673585892e-01 - - -4.2211589217185974e-01 3.3677190542221069e-01 - <_> - - 0 -1 70 -1.7050839960575104e-04 - - 1.8885380029678345e-01 -2.6626259088516235e-01 - <_> - - 0 -1 71 1.1793050362030044e-04 - - -7.1056002378463745e-01 2.2684849798679352e-01 - <_> - - 0 -1 72 -9.7460933029651642e-02 - - 4.2451021075248718e-01 -3.9501309394836426e-01 - <_> - - 0 -1 73 -1.7512679100036621e-02 - - 3.6552980542182922e-01 -3.5724669694900513e-01 - <_> - - 0 -1 74 1.7156290414277464e-04 - - -3.1259360909461975e-01 1.1446060240268707e-01 - <_> - - 0 -1 75 8.5574887692928314e-02 - - -2.0559160411357880e-01 8.9941620826721191e-01 - <_> - - 0 -1 76 1.1759579647332430e-03 - - -7.5939810276031494e-01 2.1389579772949219e-01 - <_> - - 0 -1 77 8.8068292825482786e-05 - - -6.0090541839599609e-01 2.5762718915939331e-01 - <_> - - 0 -1 78 2.3003520618658513e-04 - - -4.1466540098190308e-01 2.3084460198879242e-01 - <_> - - 0 -1 79 -3.4361891448497772e-04 - - 3.2730078697204590e-01 -7.4609941244125366e-01 - <_> - - 0 -1 80 1.5595999546349049e-02 - - -3.6050570011138916e-01 1.9414800405502319e-01 - <_> - - 0 -1 81 -6.5029867982957512e-05 - - 3.4985640645027161e-01 -5.5353438854217529e-01 - <_> - - 0 -1 82 8.0799087299965322e-05 - - -4.1298541426658630e-01 2.9194280505180359e-01 - <_> - - 0 -1 83 -1.7670560628175735e-02 - - 5.6811487674713135e-01 -3.0118390917778015e-01 - <_> - - 0 -1 84 5.2467430941760540e-03 - - -3.9970070123672485e-01 2.5405979156494141e-01 - <_> - - 0 -1 85 2.7624730137176812e-04 - - -4.6306419372558594e-01 2.7200910449028015e-01 - <_> - - 0 -1 86 -7.6283427188172936e-04 - - 4.7710940241813660e-01 -2.8456479310989380e-01 - <_> - - 0 -1 87 5.4720909247407690e-05 - - -5.9415602684020996e-01 2.8456559777259827e-01 - <_> - - 0 -1 88 -5.8523961342871189e-05 - - 1.8699720501899719e-01 -2.9498028755187988e-01 - <_> - - 0 -1 89 -2.3030990269035101e-04 - - 3.1419369578361511e-01 -5.2966248989105225e-01 - <_> - - 0 -1 90 1.2743050465360284e-03 - - -3.4386789798736572e-01 2.7126389741897583e-01 - <_> - - 0 -1 91 1.1066290317103267e-03 - - -4.5228588581085205e-01 2.4860590696334839e-01 - <_> - - 0 -1 92 -1.4225989580154419e-03 - - 3.3848088979721069e-01 -4.1214609146118164e-01 - <_> - - 0 -1 93 1.8614599481225014e-02 - - -1.9110870361328125e-01 6.4115452766418457e-01 - <_> - - 0 -1 94 4.5832890464225784e-05 - - -5.8493572473526001e-01 2.5314238667488098e-01 - <_> - - 0 -1 95 -9.9875287560280412e-05 - - 3.6051398515701294e-01 -5.3231191635131836e-01 - <_> - - 0 -1 96 -1.1277929879724979e-02 - - 2.7766379714012146e-01 -2.4176590144634247e-01 - <_> - - 0 -1 97 -1.5279600024223328e-01 - - 8.3433318138122559e-01 -1.8692030012607574e-01 - <_> - - 0 -1 98 -3.6294270306825638e-02 - - 3.9919948577880859e-01 -4.1119259595870972e-01 - <_> - - 0 -1 99 -4.5436818152666092e-02 - - 6.8093067407608032e-01 -1.4669400453567505e-01 - <_> - 13 - -1.8404649496078491e+00 - - <_> - - 0 -1 100 1.6328740119934082e-01 - - -6.0435330867767334e-01 5.5052411556243896e-01 - <_> - - 0 -1 101 9.7092619398608804e-05 - - -9.0228801965713501e-01 2.6281669735908508e-01 - <_> - - 0 -1 102 -2.7205731021240354e-04 - - 2.8341010212898254e-01 -8.1372922658920288e-01 - <_> - - 0 -1 103 1.8128680530935526e-03 - - -8.3362382650375366e-01 2.1307690441608429e-01 - <_> - - 0 -1 104 -8.7052993476390839e-03 - - 2.8303650021553040e-01 -7.2392731904983521e-01 - <_> - - 0 -1 105 -5.6872398999985307e-05 - - 1.3844889402389526e-01 -5.0287842750549316e-01 - <_> - - 0 -1 106 3.7435539066791534e-02 - - -1.0564589872956276e-02 -1.5556719970703125e+03 - <_> - - 0 -1 107 1.5324270352721214e-02 - - 1.3988590240478516e-01 -6.1316817998886108e-01 - <_> - - 0 -1 108 2.1410979330539703e-02 - - -2.2393199801445007e-01 5.6233572959899902e-01 - <_> - - 0 -1 109 1.9795040134340525e-04 - - -2.3459529876708984e-01 1.3877849280834198e-01 - <_> - - 0 -1 110 -5.1461639814078808e-03 - - -8.9666271209716797e-01 1.4354419708251953e-01 - <_> - - 0 -1 111 -3.3491749316453934e-02 - - 8.1797057390213013e-01 -8.1737898290157318e-02 - <_> - - 0 -1 112 -7.3674921877682209e-03 - - -6.5259951353073120e-01 1.7211680114269257e-01 - <_> - 20 - -1.3563539981842041e+00 - - <_> - - 0 -1 113 7.3508180677890778e-02 - - -4.6614921092987061e-01 5.0694358348846436e-01 - <_> - - 0 -1 114 8.5386466234922409e-03 - - -2.4482139945030212e-01 6.0921180248260498e-01 - <_> - - 0 -1 115 2.2265550494194031e-01 - - -2.3087610304355621e-01 4.4181710481643677e-01 - <_> - - 0 -1 116 7.4994042515754700e-02 - - 1.1506160348653793e-01 -5.5417829751968384e-01 - <_> - - 0 -1 117 -1.6755120456218719e-01 - - 7.4653017520904541e-01 -1.3431079685688019e-01 - <_> - - 0 -1 118 -2.4138720706105232e-02 - - -4.9592089653015137e-01 6.2578730285167694e-02 - <_> - - 0 -1 119 1.1620320379734039e-02 - - -1.7977459728717804e-01 5.6873577833175659e-01 - <_> - - 0 -1 120 4.8821419477462769e-02 - - 4.2774148285388947e-02 -6.0440838336944580e-01 - <_> - - 0 -1 121 3.5715501755475998e-02 - - -2.0169410109519958e-01 5.1855558156967163e-01 - <_> - - 0 -1 122 -1.7011469230055809e-02 - - -6.6163742542266846e-01 4.5137479901313782e-02 - <_> - - 0 -1 123 -1.6027579084038734e-02 - - 5.4205197095870972e-01 -1.8311430513858795e-01 - <_> - - 0 -1 124 9.6712950617074966e-03 - - 3.4085698425769806e-02 -3.6544409394264221e-01 - <_> - - 0 -1 125 -1.0325650218874216e-03 - - -7.0559221506118774e-01 1.2839829921722412e-01 - <_> - - 0 -1 126 -5.7438347721472383e-04 - - 2.0413300395011902e-01 -4.6021059155464172e-01 - <_> - - 0 -1 127 1.2579349568113685e-03 - - 1.9696569442749023e-01 -4.9659618735313416e-01 - <_> - - 0 -1 128 -2.3272659629583359e-02 - - -6.4083862304687500e-01 -1.3145440258085728e-02 - <_> - - 0 -1 129 -4.8163738101720810e-03 - - -7.4635922908782959e-01 1.1569319665431976e-01 - <_> - - 0 -1 130 2.6880908990278840e-04 - - -1.7020240426063538e-01 1.0989090055227280e-01 - <_> - - 0 -1 131 -9.1302618384361267e-03 - - -8.6084252595901489e-01 1.0507579892873764e-01 - <_> - - 0 -1 132 1.5290869772434235e-01 - - -3.0442950129508972e-01 2.9691061377525330e-01 - <_> - 27 - -1.4800649881362915e+00 - - <_> - - 0 -1 133 1.0870260000228882e-01 - - -3.9208391308784485e-01 4.2441639304161072e-01 - <_> - - 0 -1 134 -8.5436011431738734e-05 - - 1.1648490279912949e-01 -1.2261509895324707e-01 - <_> - - 0 -1 135 8.7897274643182755e-03 - - -2.2223709523677826e-01 5.8239942789077759e-01 - <_> - - 0 -1 136 1.9092390313744545e-02 - - -2.8222650289535522e-01 3.4780630469322205e-01 - <_> - - 0 -1 137 -1.4692190103232861e-02 - - 2.4436180293560028e-01 -4.4442260265350342e-01 - <_> - - 0 -1 138 1.7424240708351135e-02 - - 3.9642699062824249e-02 -5.0866502523422241e-01 - <_> - - 0 -1 139 6.9210886955261230e-02 - - -1.5061080455780029e-01 5.4918211698532104e-01 - <_> - - 0 -1 140 1.1516460031270981e-01 - - 4.7058542259037495e-03 -6.0872167348861694e-01 - <_> - - 0 -1 141 -9.0783968567848206e-02 - - 7.6661890745162964e-01 -1.1532770097255707e-01 - <_> - - 0 -1 142 9.3459866940975189e-02 - - 7.7324211597442627e-02 -7.2869849205017090e-01 - <_> - - 0 -1 143 1.4063410460948944e-01 - - -3.0280780792236328e-01 2.9996991157531738e-01 - <_> - - 0 -1 144 7.5702848844230175e-03 - - -2.5590381026268005e-01 3.4416630864143372e-01 - <_> - - 0 -1 145 8.1542655825614929e-03 - - 1.2018810212612152e-01 -8.5254168510437012e-01 - <_> - - 0 -1 146 8.7357666343450546e-03 - - -1.2177339941263199e-01 8.2226127386093140e-02 - <_> - - 0 -1 147 -6.9444780237972736e-03 - - -6.1111962795257568e-01 1.3486449420452118e-01 - <_> - - 0 -1 148 -4.3000229634344578e-03 - - -3.4730020165443420e-01 4.4554490596055984e-02 - <_> - - 0 -1 149 4.0720161050558090e-02 - - -1.2618629634380341e-01 6.0286152362823486e-01 - <_> - - 0 -1 150 -1.0009969584643841e-02 - - -4.5014089345932007e-01 1.8092009425163269e-01 - <_> - - 0 -1 151 1.1742020025849342e-02 - - 8.1721372902393341e-02 -8.0739098787307739e-01 - <_> - - 0 -1 152 -9.7789859864860773e-04 - - 6.6041916608810425e-02 -1.4142000675201416e-01 - <_> - - 0 -1 153 3.4487970173358917e-02 - - 1.0488150268793106e-01 -7.1635431051254272e-01 - <_> - - 0 -1 154 -2.4215620011091232e-02 - - -5.9454482793807983e-01 1.2400969862937927e-02 - <_> - - 0 -1 155 -3.7082370370626450e-02 - - 6.5830427408218384e-01 -1.2158200144767761e-01 - <_> - - 0 -1 156 -4.3632909655570984e-03 - - -6.5290719270706177e-01 1.2228529900312424e-01 - <_> - - 0 -1 157 -4.1692638769745827e-03 - - -7.3107779026031494e-01 7.7946297824382782e-02 - <_> - - 0 -1 158 6.0636870563030243e-02 - - -1.3061979785561562e-02 -8.0408149957656860e-01 - <_> - - 0 -1 159 1.5371589921414852e-02 - - 7.9872779548168182e-02 -8.5363340377807617e-01 - <_> - 25 - -1.3590339422225952e+00 - - <_> - - 0 -1 160 1.5033720061182976e-02 - - -5.3333657979965210e-01 3.4096190333366394e-01 - <_> - - 0 -1 161 -8.9624240994453430e-02 - - 1.8991500139236450e-01 -2.1448349952697754e-01 - <_> - - 0 -1 162 -5.1495251245796680e-03 - - 3.6764401197433472e-01 -3.1621339917182922e-01 - <_> - - 0 -1 163 5.6887358427047729e-02 - - -2.7120190858840942e-01 3.4590399265289307e-01 - <_> - - 0 -1 164 -1.2673810124397278e-01 - - 8.4647309780120850e-01 -6.7630723118782043e-02 - <_> - - 0 -1 165 -1.0681120306253433e-01 - - -2.8982621431350708e-01 8.3181828260421753e-02 - <_> - - 0 -1 166 1.7475779354572296e-01 - - -3.5948398709297180e-01 3.1073129177093506e-01 - <_> - - 0 -1 167 -2.4629090912640095e-03 - - -6.7824071645736694e-01 1.1908339709043503e-01 - <_> - - 0 -1 168 6.6053359769284725e-03 - - -2.4560730159282684e-01 3.7791371345520020e-01 - <_> - - 0 -1 169 1.0148379806196317e-04 - - -1.0097169876098633e-01 8.2711093127727509e-02 - <_> - - 0 -1 170 -1.8523789942264557e-02 - - -4.4592261314392090e-01 1.6946080327033997e-01 - <_> - - 0 -1 171 3.6602010950446129e-03 - - -1.0477670282125473e-01 9.4992779195308685e-02 - <_> - - 0 -1 172 -1.0257829912006855e-02 - - 4.3351659178733826e-01 -1.6978879272937775e-01 - <_> - - 0 -1 173 -9.8685777629725635e-05 - - 1.7843760550022125e-01 -2.6428279280662537e-01 - <_> - - 0 -1 174 -1.2446290347725153e-03 - - -7.2253531217575073e-01 1.0615690052509308e-01 - <_> - - 0 -1 175 1.1974680091952905e-04 - - -3.0318620800971985e-01 1.4623160660266876e-01 - <_> - - 0 -1 176 1.2079760199412704e-03 - - 1.3531659543514252e-01 -5.0457692146301270e-01 - <_> - - 0 -1 177 -1.9425910711288452e-01 - - -7.1733701229095459e-01 8.0573573708534241e-02 - <_> - - 0 -1 178 1.8599320203065872e-02 - - -1.6972489655017853e-01 4.2669999599456787e-01 - <_> - - 0 -1 179 3.0704800039529800e-02 - - 3.2838109880685806e-02 -7.2923952341079712e-01 - <_> - - 0 -1 180 2.1680949255824089e-02 - - -1.6750890016555786e-01 4.4789049029350281e-01 - <_> - - 0 -1 181 5.5604660883545876e-03 - - 9.6391409635543823e-02 -6.6830247640609741e-01 - <_> - - 0 -1 182 -5.6784078478813171e-03 - - -8.2064878940582275e-01 6.2949016690254211e-02 - <_> - - 0 -1 183 -3.0219739302992821e-02 - - 3.3288109302520752e-01 -8.1444039940834045e-02 - <_> - - 0 -1 184 2.4341929703950882e-02 - - 9.3220241367816925e-02 -6.9502758979797363e-01 - <_> - 32 - -1.4373550415039062e+00 - - <_> - - 0 -1 185 -3.9169401861727238e-03 - - 4.5325928926467896e-01 -3.0284589529037476e-01 - <_> - - 0 -1 186 1.0800900310277939e-01 - - 3.6738589406013489e-02 -7.2782218456268311e-01 - <_> - - 0 -1 187 1.5356090664863586e-01 - - -3.8900190591812134e-01 3.1287321448326111e-01 - <_> - - 0 -1 188 8.7726805359125137e-03 - - -1.5705280005931854e-01 8.2666940987110138e-02 - <_> - - 0 -1 189 -1.0571720078587532e-02 - - 2.4971100687980652e-01 -4.7014111280441284e-01 - <_> - - 0 -1 190 2.7240550145506859e-02 - - 6.0097638517618179e-02 -6.6213667392730713e-01 - <_> - - 0 -1 191 -3.6633450537919998e-02 - - 5.1044297218322754e-01 -1.7766149342060089e-01 - <_> - - 0 -1 192 1.3806289434432983e-01 - - -4.0644191205501556e-02 7.8849452733993530e-01 - <_> - - 0 -1 193 9.4720393419265747e-02 - - -4.3654170632362366e-01 1.9054649770259857e-01 - <_> - - 0 -1 194 -3.3387150615453720e-03 - - -6.8457669019699097e-01 9.6802540123462677e-02 - <_> - - 0 -1 195 1.1899480159627274e-04 - - -3.5843661427497864e-01 2.2279889881610870e-01 - <_> - - 0 -1 196 2.9007149860262871e-03 - - -1.5845039486885071e-01 6.6679857671260834e-02 - <_> - - 0 -1 197 1.2376639991998672e-02 - - -1.4206279814243317e-01 4.9320921301841736e-01 - <_> - - 0 -1 198 6.0215988196432590e-03 - - -1.4971609413623810e-01 2.1797719597816467e-01 - <_> - - 0 -1 199 -1.6887940466403961e-01 - - 7.1833407878875732e-01 -1.1091569811105728e-01 - <_> - - 0 -1 200 -7.4033271521329880e-03 - - 2.2573550045490265e-01 -3.2993030548095703e-01 - <_> - - 0 -1 201 -6.5029351972043514e-03 - - 4.7018998861312866e-01 -1.5201370418071747e-01 - <_> - - 0 -1 202 1.7706790240481496e-03 - - -1.4644999802112579e-01 9.4745017588138580e-02 - <_> - - 0 -1 203 1.7085459083318710e-02 - - 8.5357367992401123e-02 -8.2599818706512451e-01 - <_> - - 0 -1 204 -5.3032718598842621e-02 - - -6.5861982107162476e-01 -1.3727230252698064e-03 - <_> - - 0 -1 205 2.7725089341402054e-02 - - -1.4935420453548431e-01 4.4009518623352051e-01 - <_> - - 0 -1 206 5.8685488998889923e-02 - - 7.8679984435439110e-03 -4.4109138846397400e-01 - <_> - - 0 -1 207 -1.0465820319950581e-02 - - -5.8385229110717773e-01 1.0567150264978409e-01 - <_> - - 0 -1 208 -4.4063638895750046e-02 - - -5.9246909618377686e-01 5.7151052169501781e-03 - <_> - - 0 -1 209 -1.1932180263102055e-02 - - 2.3818169534206390e-01 -2.8293299674987793e-01 - <_> - - 0 -1 210 -1.2644910020753741e-03 - - 1.0124749690294266e-01 -3.3939999341964722e-01 - <_> - - 0 -1 211 -1.8404610455036163e-03 - - -6.7492902278900146e-01 9.5524467527866364e-02 - <_> - - 0 -1 212 -7.9289656132459641e-03 - - -6.7770427465438843e-01 3.4221731126308441e-02 - <_> - - 0 -1 213 5.7004559785127640e-03 - - -1.3198739290237427e-01 4.2710319161415100e-01 - <_> - - 0 -1 214 1.8237680196762085e-02 - - 3.0692299827933311e-02 -8.6847299337387085e-01 - <_> - - 0 -1 215 3.2086670398712158e-03 - - -1.3335919380187988e-01 4.3883138895034790e-01 - <_> - - 0 -1 216 1.2446580454707146e-02 - - 2.9371360316872597e-02 -7.8926819562911987e-01 - <_> - 34 - -1.3898090124130249e+00 - - <_> - - 0 -1 217 -1.2674730271100998e-02 - - 5.0484418869018555e-01 -2.5669950246810913e-01 - <_> - - 0 -1 218 1.1808129958808422e-02 - - 6.3001699745655060e-02 -4.0641498565673828e-01 - <_> - - 0 -1 219 2.5127220433205366e-03 - - -3.2253271341323853e-01 3.6614939570426941e-01 - <_> - - 0 -1 220 -3.5469220019876957e-03 - - 1.9579920172691345e-01 -1.5416850149631500e-01 - <_> - - 0 -1 221 3.9148680865764618e-02 - - -2.5791868567466736e-01 3.3852350711822510e-01 - <_> - - 0 -1 222 1.3151739537715912e-01 - - 2.7472509071230888e-02 -5.5891007184982300e-01 - <_> - - 0 -1 223 -1.6689460724592209e-02 - - 1.4658740162849426e-01 -5.2727991342544556e-01 - <_> - - 0 -1 224 6.4351540058851242e-03 - - -1.2016840279102325e-01 1.8379710614681244e-01 - <_> - - 0 -1 225 -6.3846178352832794e-02 - - 7.5390338897705078e-01 -1.0603629797697067e-01 - <_> - - 0 -1 226 -4.6943090856075287e-03 - - 2.0730340480804443e-01 -1.6408169269561768e-01 - <_> - - 0 -1 227 1.1263520456850529e-02 - - 1.0285060107707977e-01 -7.2724348306655884e-01 - <_> - - 0 -1 228 1.0440419428050518e-03 - - 1.3197229802608490e-01 -6.4476031064987183e-01 - <_> - - 0 -1 229 2.9053710401058197e-02 - - -3.2099440693855286e-01 1.9499249756336212e-01 - <_> - - 0 -1 230 1.2985640205442905e-02 - - -6.2498811632394791e-02 2.6551690697669983e-01 - <_> - - 0 -1 231 1.4938330277800560e-02 - - 8.0150052905082703e-02 -7.6676148176193237e-01 - <_> - - 0 -1 232 -3.4180350601673126e-02 - - -5.1320338249206543e-01 -3.6074419040232897e-03 - <_> - - 0 -1 233 4.3761111795902252e-02 - - -1.4384460449218750e-01 4.2616510391235352e-01 - <_> - - 0 -1 234 -1.1876770295202732e-03 - - 1.4837500452995300e-01 -5.0197489559650421e-02 - <_> - - 0 -1 235 -1.3196719810366631e-02 - - -7.6232409477233887e-01 7.9683482646942139e-02 - <_> - - 0 -1 236 -1.4940570108592510e-03 - - 2.2585479915142059e-01 -1.0884329676628113e-01 - <_> - - 0 -1 237 9.9800303578376770e-03 - - 7.7047176659107208e-02 -8.1608718633651733e-01 - <_> - - 0 -1 238 1.3630810426548123e-03 - - -1.0334450006484985e-01 2.0994339883327484e-01 - <_> - - 0 -1 239 -2.6497698854655027e-03 - - 4.8666700720787048e-01 -1.2183590233325958e-01 - <_> - - 0 -1 240 2.9017059132456779e-02 - - 3.0331170186400414e-02 -5.4417270421981812e-01 - <_> - - 0 -1 241 1.7291629686951637e-02 - - -1.3578090071678162e-01 4.4251319766044617e-01 - <_> - - 0 -1 242 1.9144080579280853e-03 - - -8.2041606307029724e-02 1.1203309893608093e-01 - <_> - - 0 -1 243 9.2138089239597321e-03 - - 9.5674678683280945e-02 -7.1387839317321777e-01 - <_> - - 0 -1 244 1.9401769340038300e-01 - - -3.3527439832687378e-01 1.6470989584922791e-01 - <_> - - 0 -1 245 -8.9092198759317398e-03 - - 4.5958560705184937e-01 -1.3180640339851379e-01 - <_> - - 0 -1 246 -1.6158509999513626e-02 - - -8.8425397872924805e-01 3.6370448768138885e-02 - <_> - - 0 -1 247 -4.3315120041370392e-02 - - 3.5693758726119995e-01 -1.4853119850158691e-01 - <_> - - 0 -1 248 -6.0759939253330231e-02 - - 3.1768760085105896e-01 -1.8056009709835052e-01 - <_> - - 0 -1 249 -2.8645009733736515e-03 - - 5.3059607744216919e-01 -1.1261919885873795e-01 - <_> - - 0 -1 250 1.1360960081219673e-02 - - 3.5099871456623077e-02 -4.7815018892288208e-01 - <_> - 37 - -1.3544019460678101e+00 - - <_> - - 0 -1 251 1.3970459811389446e-02 - - -3.0530300736427307e-01 4.1125300526618958e-01 - <_> - - 0 -1 252 -1.1679069697856903e-01 - - 1.4812999963760376e-01 -7.0709809660911560e-02 - <_> - - 0 -1 253 1.6397690400481224e-02 - - -3.0543169379234314e-01 3.0162781476974487e-01 - <_> - - 0 -1 254 -2.0286109298467636e-02 - - -2.3618179559707642e-01 1.2187310308218002e-01 - <_> - - 0 -1 255 3.3962181210517883e-01 - - -2.3415289819240570e-01 3.7955328822135925e-01 - <_> - - 0 -1 256 8.0632884055376053e-03 - - -5.6521987915039062e-01 1.2719720602035522e-01 - <_> - - 0 -1 257 -1.4234139816835523e-03 - - -5.8998572826385498e-01 1.1668500304222107e-01 - <_> - - 0 -1 258 3.9983680471777916e-03 - - -9.9398262798786163e-02 1.2795600295066833e-01 - <_> - - 0 -1 259 -9.4549506902694702e-03 - - -5.6156420707702637e-01 9.9381953477859497e-02 - <_> - - 0 -1 260 3.7270709872245789e-02 - - 8.4691196680068970e-02 -6.5302717685699463e-01 - <_> - - 0 -1 261 8.1806071102619171e-03 - - 6.4047202467918396e-02 -7.3235487937927246e-01 - <_> - - 0 -1 262 6.7418292164802551e-02 - - 4.3028471991419792e-03 -6.2574678659439087e-01 - <_> - - 0 -1 263 1.8985599279403687e-02 - - 7.0422857999801636e-02 -7.7566891908645630e-01 - <_> - - 0 -1 264 -3.0685300589539111e-04 - - 6.0799881815910339e-02 -7.3534972965717316e-02 - <_> - - 0 -1 265 1.0786009952425957e-02 - - -1.2505950033664703e-01 4.8208248615264893e-01 - <_> - - 0 -1 266 6.9674388505518436e-03 - - 8.3264723420143127e-02 -6.9356048107147217e-01 - <_> - - 0 -1 267 1.2767270207405090e-02 - - 6.4788013696670532e-02 -7.0968890190124512e-01 - <_> - - 0 -1 268 -1.4131699688732624e-02 - - -7.5622642040252686e-01 2.0618569105863571e-02 - <_> - - 0 -1 269 -1.5918679535388947e-02 - - 1.9603510200977325e-01 -2.7034899592399597e-01 - <_> - - 0 -1 270 9.9455211311578751e-03 - - -4.3780571222305298e-01 1.1859329789876938e-01 - <_> - - 0 -1 271 1.5286459587514400e-02 - - -1.9513919949531555e-01 2.6915138959884644e-01 - <_> - - 0 -1 272 5.9025101363658905e-03 - - -1.6288129985332489e-01 3.6743709444999695e-01 - <_> - - 0 -1 273 -6.9729480892419815e-03 - - 4.6202778816223145e-01 -1.5376560389995575e-01 - <_> - - 0 -1 274 -1.9449390470981598e-02 - - -5.3632599115371704e-01 3.1576488167047501e-02 - <_> - - 0 -1 275 -4.7259521670639515e-03 - - -7.3517972230911255e-01 7.3678806424140930e-02 - <_> - - 0 -1 276 -8.5517195984721184e-03 - - 3.5986369848251343e-01 -1.2420760095119476e-01 - <_> - - 0 -1 277 -9.8964512348175049e-02 - - 6.2507808208465576e-01 -8.6647883057594299e-02 - <_> - - 0 -1 278 -1.7731260508298874e-02 - - -5.7925891876220703e-01 2.5198649615049362e-02 - <_> - - 0 -1 279 -2.9190430417656898e-02 - - 5.7298821210861206e-01 -1.0151000320911407e-01 - <_> - - 0 -1 280 5.4621109738945961e-03 - - 4.4515479356050491e-02 -6.6922581195831299e-01 - <_> - - 0 -1 281 -6.8695018999278545e-03 - - -5.8384990692138672e-01 8.7239846587181091e-02 - <_> - - 0 -1 282 -1.7049070447683334e-03 - - 2.2694580256938934e-01 -8.1620521843433380e-02 - <_> - - 0 -1 283 5.8957659639418125e-03 - - -1.1778759956359863e-01 4.2724978923797607e-01 - <_> - - 0 -1 284 8.5842777043581009e-03 - - -5.4629139602184296e-02 1.0813979804515839e-01 - <_> - - 0 -1 285 1.2934260070323944e-02 - - 7.0849359035491943e-02 -7.3857682943344116e-01 - <_> - - 0 -1 286 1.9973270595073700e-02 - - 1.6626559663563967e-03 -7.6631492376327515e-01 - <_> - - 0 -1 287 5.5011189542710781e-03 - - 8.9468717575073242e-02 -5.3985279798507690e-01 - <_> - 38 - -1.3085269927978516e+00 - - <_> - - 0 -1 288 7.9501233994960785e-03 - - -2.7952459454536438e-01 4.3506631255149841e-01 - <_> - - 0 -1 289 -1.5085919760167599e-02 - - 5.9209001064300537e-01 -1.6481369733810425e-01 - <_> - - 0 -1 290 1.9475109875202179e-01 - - -3.1889539957046509e-01 2.8196701407432556e-01 - <_> - - 0 -1 291 -2.4689928977750242e-04 - - 9.6763692796230316e-02 -1.8406489491462708e-01 - <_> - - 0 -1 292 5.2499058656394482e-03 - - 1.5704880654811859e-01 -5.2710950374603271e-01 - <_> - - 0 -1 293 -1.2732569302897900e-04 - - 5.3218118846416473e-02 -1.6152860224246979e-01 - <_> - - 0 -1 294 -6.5984549000859261e-03 - - 2.1844869852066040e-01 -3.7529769539833069e-01 - <_> - - 0 -1 295 -1.2836559675633907e-02 - - 6.1008229851722717e-02 -1.1862020194530487e-01 - <_> - - 0 -1 296 -1.4707820117473602e-01 - - 7.9065358638763428e-01 -9.4447426497936249e-02 - <_> - - 0 -1 297 4.8533070832490921e-02 - - 4.9431171268224716e-02 -5.9807902574539185e-01 - <_> - - 0 -1 298 4.1398849338293076e-02 - - -3.1118649244308472e-01 2.4850000441074371e-01 - <_> - - 0 -1 299 5.9322831220924854e-03 - - -1.9105120003223419e-01 2.6189088821411133e-01 - <_> - - 0 -1 300 6.1201062053442001e-03 - - -1.4400300383567810e-01 3.8592028617858887e-01 - <_> - - 0 -1 301 -1.2118129990994930e-02 - - -5.7840502262115479e-01 3.1328909099102020e-02 - <_> - - 0 -1 302 7.5321048498153687e-03 - - 7.6200783252716064e-02 -7.1263229846954346e-01 - <_> - - 0 -1 303 9.4633679836988449e-03 - - -8.1573672592639923e-02 1.5981380641460419e-01 - <_> - - 0 -1 304 -6.4435349777340889e-03 - - -8.9533412456512451e-01 6.0908339917659760e-02 - <_> - - 0 -1 305 -1.3353319838643074e-02 - - 5.0735729932785034e-01 -1.4220820367336273e-01 - <_> - - 0 -1 306 -4.8206631094217300e-02 - - -7.0776158571243286e-01 8.7017923593521118e-02 - <_> - - 0 -1 307 -8.6862186435610056e-05 - - 9.2491082847118378e-02 -1.9064180552959442e-01 - <_> - - 0 -1 308 3.5890119615942240e-03 - - -1.1369240283966064e-01 4.5717659592628479e-01 - <_> - - 0 -1 309 2.5103650987148285e-03 - - -9.6626877784729004e-02 2.8315341472625732e-01 - <_> - - 0 -1 310 -1.6438219463452697e-03 - - -6.8512988090515137e-01 8.4855683147907257e-02 - <_> - - 0 -1 311 -1.1147640179842710e-03 - - 2.0340760052204132e-01 -9.5162183046340942e-02 - <_> - - 0 -1 312 3.3129220828413963e-03 - - -1.2348870187997818e-01 4.5109578967094421e-01 - <_> - - 0 -1 313 1.2473019771277905e-02 - - 8.5647627711296082e-02 -1.7752259969711304e-01 - <_> - - 0 -1 314 1.1887500062584877e-02 - - 7.9497292637825012e-02 -7.1333557367324829e-01 - <_> - - 0 -1 315 4.6640802174806595e-03 - - -1.1890850216150284e-01 1.6375760734081268e-01 - <_> - - 0 -1 316 -7.5049358420073986e-03 - - 4.5544099807739258e-01 -1.2412810325622559e-01 - <_> - - 0 -1 317 1.7780659720301628e-02 - - -1.0757599771022797e-01 1.6240009665489197e-01 - <_> - - 0 -1 318 -6.5337750129401684e-03 - - 4.3141070008277893e-01 -1.2603540718555450e-01 - <_> - - 0 -1 319 -2.4446230381727219e-02 - - -6.6479730606079102e-01 1.9722750410437584e-02 - <_> - - 0 -1 320 6.8284119479358196e-03 - - 8.7926700711250305e-02 -5.4765981435775757e-01 - <_> - - 0 -1 321 -1.7527850344777107e-02 - - -4.7350269556045532e-01 1.8452549353241920e-02 - <_> - - 0 -1 322 -5.6044701486825943e-03 - - 1.6700869798660278e-01 -2.8558060526847839e-01 - <_> - - 0 -1 323 5.6587088853120804e-02 - - 9.8792626522481441e-04 -9.0761202573776245e-01 - <_> - - 0 -1 324 -9.1678956523537636e-03 - - -5.7369470596313477e-01 8.6971327662467957e-02 - <_> - - 0 -1 325 -7.9324431717395782e-03 - - -7.1619319915771484e-01 4.7531701624393463e-02 - <_> - 44 - -1.3564130067825317e+00 - - <_> - - 0 -1 326 1.1259860359132290e-02 - - -3.2671540975570679e-01 3.7448620796203613e-01 - <_> - - 0 -1 327 -8.0411562521476299e-05 - - 1.3456510007381439e-01 -3.5597088932991028e-01 - <_> - - 0 -1 328 -1.0097360238432884e-02 - - 4.2515400052070618e-01 -2.0356260240077972e-01 - <_> - - 0 -1 329 -9.5205657184123993e-02 - - -2.6214841008186340e-01 4.4497821480035782e-02 - <_> - - 0 -1 330 2.1976239979267120e-01 - - -2.6376900076866150e-01 2.7963450551033020e-01 - <_> - - 0 -1 331 -1.4373429585248232e-03 - - 1.9384309649467468e-01 -6.6377736628055573e-02 - <_> - - 0 -1 332 -2.1600460633635521e-02 - - 5.2735280990600586e-01 -1.1125139892101288e-01 - <_> - - 0 -1 333 8.8454764336347580e-03 - - -1.6414600610733032e-01 1.7835170030593872e-01 - <_> - - 0 -1 334 3.5627551376819611e-02 - - -5.0226557254791260e-01 1.2036989629268646e-01 - <_> - - 0 -1 335 1.9948599860072136e-02 - - -2.4443860352039337e-01 2.0503400266170502e-01 - <_> - - 0 -1 336 -3.0674149747937918e-03 - - -5.3477287292480469e-01 1.1543580144643784e-01 - <_> - - 0 -1 337 -1.2012269580736756e-03 - - 1.2676300108432770e-01 -1.3938720524311066e-01 - <_> - - 0 -1 338 1.7143359407782555e-02 - - -1.0488930344581604e-01 4.8458871245384216e-01 - <_> - - 0 -1 339 7.7037338633090258e-04 - - -2.6416009664535522e-01 1.3753029704093933e-01 - <_> - - 0 -1 340 1.9928140100091696e-03 - - 1.0820219665765762e-01 -4.6027541160583496e-01 - <_> - - 0 -1 341 8.1858411431312561e-03 - - -1.1870039999485016e-01 1.8429510295391083e-01 - <_> - - 0 -1 342 2.0016850531101227e-01 - - -7.7433213591575623e-02 6.7445492744445801e-01 - <_> - - 0 -1 343 -1.2134050019085407e-02 - - 4.5361760258674622e-01 -3.2230481505393982e-02 - <_> - - 0 -1 344 1.1809550225734711e-02 - - -1.5140220522880554e-01 4.1091579198837280e-01 - <_> - - 0 -1 345 -5.3903311491012573e-02 - - 2.4644249677658081e-01 -1.6336809843778610e-02 - <_> - - 0 -1 346 2.5369100272655487e-02 - - 5.7606618851423264e-02 -8.1810200214385986e-01 - <_> - - 0 -1 347 4.0477071888744831e-03 - - 3.4279700368642807e-02 -3.8912689685821533e-01 - <_> - - 0 -1 348 2.3273769766092300e-03 - - -2.6318120956420898e-01 2.0111019909381866e-01 - <_> - - 0 -1 349 -1.4055520296096802e-02 - - -4.5798641443252563e-01 1.0322000086307526e-01 - <_> - - 0 -1 350 4.1040539741516113e-02 - - -1.0665339976549149e-01 4.9921628832817078e-01 - <_> - - 0 -1 351 1.7403350211679935e-03 - - -3.0963689088821411e-02 9.0507246553897858e-02 - <_> - - 0 -1 352 -5.9111667796969414e-03 - - -6.9301342964172363e-01 7.1324340999126434e-02 - <_> - - 0 -1 353 -8.4086872637271881e-02 - - 4.6972590684890747e-01 -4.9859449267387390e-02 - <_> - - 0 -1 354 1.2733220355585217e-03 - - -3.5704851150512695e-01 1.3806779682636261e-01 - <_> - - 0 -1 355 5.9486827813088894e-03 - - -1.5816900134086609e-01 2.8468400239944458e-01 - <_> - - 0 -1 356 -8.6815077811479568e-03 - - -7.6587718725204468e-01 6.2390629202127457e-02 - <_> - - 0 -1 357 -1.0674200020730495e-02 - - -5.5144512653350830e-01 5.6196320801973343e-02 - <_> - - 0 -1 358 1.7951499670743942e-02 - - 6.1362300068140030e-02 -6.4841997623443604e-01 - <_> - - 0 -1 359 1.9660689576994628e-04 - - -1.4563970267772675e-01 9.5173902809619904e-02 - <_> - - 0 -1 360 -1.3475000159814954e-03 - - -3.9846318960189819e-01 1.0717230290174484e-01 - <_> - - 0 -1 361 1.3271289644762874e-03 - - -7.6305247843265533e-02 1.5964789688587189e-01 - <_> - - 0 -1 362 3.9857891388237476e-03 - - -1.0918959975242615e-01 3.6956569552421570e-01 - <_> - - 0 -1 363 1.7747710226103663e-03 - - -5.8550398796796799e-02 7.1181796491146088e-02 - <_> - - 0 -1 364 -6.9627179764211178e-03 - - 3.6977839469909668e-01 -1.1677960306406021e-01 - <_> - - 0 -1 365 -9.0530123561620712e-03 - - -5.3131139278411865e-01 4.2773369699716568e-02 - <_> - - 0 -1 366 -5.0673801451921463e-02 - - 6.5122097730636597e-01 -6.6222466528415680e-02 - <_> - - 0 -1 367 -9.9803637713193893e-03 - - 1.7810410261154175e-01 -4.8675179481506348e-02 - <_> - - 0 -1 368 1.0967300273478031e-02 - - 6.3715361058712006e-02 -7.0216029882431030e-01 - <_> - - 0 -1 369 7.1746408939361572e-03 - - -9.5948472619056702e-02 1.5818059444427490e-01 - <_> - 45 - -1.2748670578002930e+00 - - <_> - - 0 -1 370 -1.4637179672718048e-02 - - 4.5756229758262634e-01 -2.5793579220771790e-01 - <_> - - 0 -1 371 -1.1372080189175904e-04 - - 1.4856390655040741e-01 -1.3528409600257874e-01 - <_> - - 0 -1 372 6.3527049496769905e-03 - - -1.8282939493656158e-01 5.0529718399047852e-01 - <_> - - 0 -1 373 2.4946528719738126e-04 - - -3.5463958978652954e-01 1.1956059932708740e-01 - <_> - - 0 -1 374 8.5882786661386490e-03 - - -3.6795818805694580e-01 1.9289310276508331e-01 - <_> - - 0 -1 375 -5.3795471787452698e-02 - - -9.2534601688385010e-01 -3.0407099984586239e-03 - <_> - - 0 -1 376 -1.2914909981191158e-02 - - 2.0769760012626648e-01 -2.8073310852050781e-01 - <_> - - 0 -1 377 6.5217018127441406e-02 - - 9.1229602694511414e-02 -3.9509040117263794e-01 - <_> - - 0 -1 378 -1.5482950024306774e-02 - - 5.5492401123046875e-01 -1.0178919881582260e-01 - <_> - - 0 -1 379 -7.0964470505714417e-02 - - -6.0590541362762451e-01 3.3235780894756317e-02 - <_> - - 0 -1 380 -1.4792110025882721e-01 - - 6.8140488862991333e-01 -9.2882059514522552e-02 - <_> - - 0 -1 381 3.2156299799680710e-02 - - -1.3000990450382233e-01 1.6143409907817841e-01 - <_> - - 0 -1 382 -5.5202730000019073e-03 - - 1.8147900700569153e-01 -3.2928371429443359e-01 - <_> - - 0 -1 383 1.7749259248375893e-02 - - -6.7472197115421295e-02 2.4095970392227173e-01 - <_> - - 0 -1 384 -1.4773460105061531e-02 - - -7.1976912021636963e-01 7.0244252681732178e-02 - <_> - - 0 -1 385 -2.1384380757808685e-02 - - -6.6300392150878906e-01 6.1542339622974396e-02 - <_> - - 0 -1 386 1.1285319924354553e-02 - - -1.1147149652242661e-01 4.2070099711418152e-01 - <_> - - 0 -1 387 5.3818488959223032e-04 - - 1.3580459356307983e-01 -3.6389431357383728e-01 - <_> - - 0 -1 388 -4.5372340828180313e-03 - - -6.2848389148712158e-01 7.5644947588443756e-02 - <_> - - 0 -1 389 -5.8880869299173355e-02 - - -4.4123521447181702e-01 5.2693258039653301e-03 - <_> - - 0 -1 390 3.7623539566993713e-02 - - 6.0741778463125229e-02 -7.3273491859436035e-01 - <_> - - 0 -1 391 4.9864239990711212e-03 - - -9.5100089907646179e-02 1.3218070566654205e-01 - <_> - - 0 -1 392 1.5848229825496674e-01 - - -2.3477560281753540e-01 2.0766119658946991e-01 - <_> - - 0 -1 393 -2.2148280404508114e-03 - - 1.3150349259376526e-01 -7.2531886398792267e-02 - <_> - - 0 -1 394 -2.4197169113904238e-03 - - 3.4369221329689026e-01 -1.3603129982948303e-01 - <_> - - 0 -1 395 1.3667210005223751e-02 - - -1.1352819949388504e-01 1.8905560672283173e-01 - <_> - - 0 -1 396 3.4907150268554688e-01 - - -2.0564649999141693e-01 2.0814339816570282e-01 - <_> - - 0 -1 397 -2.3180799558758736e-02 - - -7.0410561561584473e-01 6.5354611724615097e-03 - <_> - - 0 -1 398 -2.4704890325665474e-02 - - 4.3212160468101501e-01 -1.0485579818487167e-01 - <_> - - 0 -1 399 3.5061739385128021e-02 - - -5.6936308741569519e-02 2.4053120613098145e-01 - <_> - - 0 -1 400 -2.8482209891080856e-02 - - -6.4425909519195557e-01 6.7065469920635223e-02 - <_> - - 0 -1 401 9.4022173434495926e-03 - - -8.7327830493450165e-02 1.0236190259456635e-01 - <_> - - 0 -1 402 1.2662390246987343e-02 - - 6.4649492502212524e-02 -6.6464841365814209e-01 - <_> - - 0 -1 403 -1.8630980048328638e-04 - - 8.8812537491321564e-02 -1.4801080524921417e-01 - <_> - - 0 -1 404 -6.3631217926740646e-03 - - -6.1257928609848022e-01 7.0822767913341522e-02 - <_> - - 0 -1 405 -3.2741650938987732e-03 - - 1.6412730515003204e-01 -1.3364849984645844e-01 - <_> - - 0 -1 406 3.4096399322152138e-03 - - -1.2046200037002563e-01 3.2251781225204468e-01 - <_> - - 0 -1 407 -2.0664960611611605e-03 - - 8.0544687807559967e-02 -3.9290331304073334e-02 - <_> - - 0 -1 408 -7.1488898247480392e-03 - - 3.5944211483001709e-01 -1.1370600014925003e-01 - <_> - - 0 -1 409 1.4608979690819979e-03 - - -1.4393359422683716e-01 1.0468409955501556e-01 - <_> - - 0 -1 410 -1.2510320171713829e-02 - - 3.0024001002311707e-01 -1.3041430711746216e-01 - <_> - - 0 -1 411 -1.6470119357109070e-02 - - -3.4044870734214783e-01 2.2476559504866600e-02 - <_> - - 0 -1 412 -1.3765309937298298e-02 - - 4.4677600264549255e-01 -9.7284018993377686e-02 - <_> - - 0 -1 413 1.0946969996439293e-04 - - -2.0872430503368378e-01 1.5401780605316162e-01 - <_> - - 0 -1 414 -6.9605209864675999e-03 - - -8.2299548387527466e-01 4.8897851258516312e-02 - <_> - 50 - -1.2878630161285400e+00 - - <_> - - 0 -1 415 4.9184081144630909e-03 - - -3.2976099848747253e-01 3.1599700450897217e-01 - <_> - - 0 -1 416 -8.4240734577178955e-03 - - 3.2350379228591919e-01 -2.4553489685058594e-01 - <_> - - 0 -1 417 2.0760910212993622e-01 - - -2.7401238679885864e-01 2.4197450280189514e-01 - <_> - - 0 -1 418 -1.5002899803221226e-02 - - 8.3533883094787598e-02 -2.5596448779106140e-01 - <_> - - 0 -1 419 2.2144610993564129e-03 - - -2.2534610331058502e-01 2.2740550339221954e-01 - <_> - - 0 -1 420 -6.0699690133333206e-02 - - 1.8549209833145142e-01 -1.9505530595779419e-02 - <_> - - 0 -1 421 -5.6538339704275131e-02 - - 6.1330437660217285e-01 -8.7735809385776520e-02 - <_> - - 0 -1 422 -1.4412499964237213e-02 - - 2.4093009531497955e-01 -2.7344560623168945e-01 - <_> - - 0 -1 423 -1.4219420263543725e-03 - - -6.0177552700042725e-01 1.0058429837226868e-01 - <_> - - 0 -1 424 1.6331190243363380e-02 - - 2.1288860589265823e-02 -5.0142019987106323e-01 - <_> - - 0 -1 425 1.4106729999184608e-02 - - -1.8390950560569763e-01 2.6597890257835388e-01 - <_> - - 0 -1 426 -4.9360690172761679e-04 - - 3.0524199828505516e-02 -2.0498749613761902e-01 - <_> - - 0 -1 427 -7.0101441815495491e-03 - - 4.0488889813423157e-01 -1.1826159805059433e-01 - <_> - - 0 -1 428 6.4736358821392059e-02 - - 9.0163238346576691e-02 -4.8485979437828064e-01 - <_> - - 0 -1 429 -6.7224488593637943e-03 - - -5.4630178213119507e-01 7.3308691382408142e-02 - <_> - - 0 -1 430 -1.2748160399496555e-02 - - -6.7641848325729370e-01 3.2798580825328827e-02 - <_> - - 0 -1 431 -7.3234830051660538e-03 - - -6.3869500160217285e-01 5.4413169622421265e-02 - <_> - - 0 -1 432 -1.7713790759444237e-02 - - -7.4989777803421021e-01 6.3041099347174168e-03 - <_> - - 0 -1 433 -1.1022159829735756e-02 - - 4.7562441229820251e-01 -8.7812356650829315e-02 - <_> - - 0 -1 434 -7.2062062099575996e-03 - - -5.1175302267074585e-01 3.8222119212150574e-02 - <_> - - 0 -1 435 7.8669954091310501e-03 - - -1.0822050273418427e-01 4.3007129430770874e-01 - <_> - - 0 -1 436 1.4753219671547413e-02 - - 3.0923029407858849e-02 -5.8399969339370728e-01 - <_> - - 0 -1 437 -8.7396129965782166e-03 - - -5.5709302425384521e-01 6.5057590603828430e-02 - <_> - - 0 -1 438 -1.8765570130199194e-03 - - 2.0753450691699982e-01 -1.0404630005359650e-01 - <_> - - 0 -1 439 6.1403261497616768e-03 - - -8.8196322321891785e-02 5.0393581390380859e-01 - <_> - - 0 -1 440 -6.2455530278384686e-03 - - 4.5692878961563110e-01 -8.8871538639068604e-02 - <_> - - 0 -1 441 -6.5213078632950783e-03 - - -7.3358172178268433e-01 6.1022911220788956e-02 - <_> - - 0 -1 442 8.4276527166366577e-02 - - -5.1953801885247231e-03 -7.2847050428390503e-01 - <_> - - 0 -1 443 1.2186209671199322e-02 - - 8.0246433615684509e-02 -4.9406829476356506e-01 - <_> - - 0 -1 444 -5.2070740610361099e-02 - - 5.3785991668701172e-01 -2.6184149086475372e-02 - <_> - - 0 -1 445 -1.8056540284305811e-03 - - 1.2499610334634781e-01 -3.1014269590377808e-01 - <_> - - 0 -1 446 3.5525551065802574e-03 - - -1.4355179667472839e-01 9.3508958816528320e-02 - <_> - - 0 -1 447 2.1722750738263130e-02 - - 5.4289009422063828e-02 -6.9004470109939575e-01 - <_> - - 0 -1 448 1.5696860849857330e-02 - - -6.2646992504596710e-02 5.2328252792358398e-01 - <_> - - 0 -1 449 1.1486239731311798e-02 - - -1.7067709565162659e-01 2.5379261374473572e-01 - <_> - - 0 -1 450 -7.0110350847244263e-02 - - 2.1845239400863647e-01 -3.2540921121835709e-02 - <_> - - 0 -1 451 -2.3832129314541817e-02 - - -7.2852367162704468e-01 5.6103359907865524e-02 - <_> - - 0 -1 452 1.8152900040149689e-02 - - 7.9692779108881950e-03 -5.0108677148818970e-01 - <_> - - 0 -1 453 -4.9337781965732574e-03 - - -5.4861277341842651e-01 7.4599482119083405e-02 - <_> - - 0 -1 454 -2.8721539303660393e-02 - - -5.0967568159103394e-01 1.3899230398237705e-02 - <_> - - 0 -1 455 6.0404408723115921e-03 - - 8.0196216702461243e-02 -4.5811289548873901e-01 - <_> - - 0 -1 456 -1.7407380044460297e-02 - - -6.7178148031234741e-01 7.8524583950638771e-03 - <_> - - 0 -1 457 1.8755920231342316e-02 - - -7.0715762674808502e-02 5.2900022268295288e-01 - <_> - - 0 -1 458 7.5297430157661438e-03 - - -5.4971348494291306e-02 1.2586890161037445e-01 - <_> - - 0 -1 459 2.7714699506759644e-02 - - -9.4051122665405273e-02 3.9269289374351501e-01 - <_> - - 0 -1 460 -1.9136169925332069e-02 - - -6.1292767524719238e-01 4.3676119297742844e-02 - <_> - - 0 -1 461 -1.1729629710316658e-02 - - 4.0649351477622986e-01 -1.0054980218410492e-01 - <_> - - 0 -1 462 2.6842709630727768e-03 - - 6.1806179583072662e-02 -2.6040008664131165e-01 - <_> - - 0 -1 463 1.3504150323569775e-02 - - 6.3247829675674438e-02 -6.1916601657867432e-01 - <_> - - 0 -1 464 -4.8922952264547348e-03 - - -7.3288178443908691e-01 4.1912440210580826e-02 - <_> - 56 - -1.3936669826507568e+00 - - <_> - - 0 -1 465 1.0124780237674713e-02 - - -2.2478839755058289e-01 4.9562188982963562e-01 - <_> - - 0 -1 466 2.0572949945926666e-01 - - 2.6126179844141006e-02 -7.9092139005661011e-01 - <_> - - 0 -1 467 1.7348840832710266e-02 - - -3.8796889781951904e-01 2.0708920061588287e-01 - <_> - - 0 -1 468 -2.5478509068489075e-01 - - -5.7850080728530884e-01 1.2234980240464211e-02 - <_> - - 0 -1 469 -2.8602819889783859e-02 - - 1.7568160593509674e-01 -3.7877011299133301e-01 - <_> - - 0 -1 470 9.1557251289486885e-03 - - 5.8734539896249771e-02 -5.3387188911437988e-01 - <_> - - 0 -1 471 -6.7997328005731106e-03 - - 4.2286089062690735e-01 -1.5031290054321289e-01 - <_> - - 0 -1 472 -9.0167991816997528e-02 - - -4.7068008780479431e-01 1.9146749749779701e-02 - <_> - - 0 -1 473 -2.0075060427188873e-02 - - 1.5215730667114258e-01 -3.0286580324172974e-01 - <_> - - 0 -1 474 -1.5905030071735382e-01 - - 4.8262810707092285e-01 -5.5345159024000168e-02 - <_> - - 0 -1 475 1.0053060203790665e-01 - - -3.1768739223480225e-01 1.8654659390449524e-01 - <_> - - 0 -1 476 2.9778450261801481e-03 - - -4.3355960398912430e-02 3.0445128679275513e-01 - <_> - - 0 -1 477 -6.8455971777439117e-03 - - -6.5422862768173218e-01 5.7101141661405563e-02 - <_> - - 0 -1 478 -2.3462900891900063e-02 - - -7.4357628822326660e-01 1.1618070304393768e-02 - <_> - - 0 -1 479 8.4667708724737167e-03 - - -1.1318150162696838e-01 3.4910741448402405e-01 - <_> - - 0 -1 480 2.9225839301943779e-02 - - -3.8572481274604797e-01 2.5479009747505188e-01 - <_> - - 0 -1 481 1.1265130341053009e-01 - - -9.8677836358547211e-02 7.0809727907180786e-01 - <_> - - 0 -1 482 1.0059010237455368e-01 - - 3.9431888610124588e-02 -2.0872689783573151e-01 - <_> - - 0 -1 483 -1.4622969552874565e-02 - - 1.0739020258188248e-01 -4.4337108731269836e-01 - <_> - - 0 -1 484 5.9183081611990929e-03 - - 2.2479789331555367e-02 -4.7095221281051636e-01 - <_> - - 0 -1 485 -1.1137289926409721e-02 - - -5.3821432590484619e-01 7.1250103414058685e-02 - <_> - - 0 -1 486 2.0612619817256927e-01 - - 2.5029089301824570e-03 -5.5134499073028564e-01 - <_> - - 0 -1 487 1.9606389105319977e-02 - - 6.8830899894237518e-02 -5.8748298883438110e-01 - <_> - - 0 -1 488 1.4237780123949051e-02 - - -1.0993599891662598e-01 2.2019009292125702e-01 - <_> - - 0 -1 489 -1.1579900048673153e-02 - - -6.0401040315628052e-01 6.1112940311431885e-02 - <_> - - 0 -1 490 2.7201389893889427e-03 - - -8.6882777512073517e-02 2.1160760521888733e-01 - <_> - - 0 -1 491 4.3311892077326775e-03 - - -8.5722766816616058e-02 4.3251448869705200e-01 - <_> - - 0 -1 492 1.4856910565868020e-03 - - -3.5430859774351120e-02 1.4321969449520111e-01 - <_> - - 0 -1 493 -2.4972909595817327e-03 - - 4.2610010504722595e-01 -1.0974500328302383e-01 - <_> - - 0 -1 494 1.3857520185410976e-02 - - 2.1762149408459663e-02 -4.7706019878387451e-01 - <_> - - 0 -1 495 -2.3594869300723076e-02 - - -4.6244761347770691e-01 7.9718932509422302e-02 - <_> - - 0 -1 496 -3.0481400899589062e-03 - - 1.7503540217876434e-01 -2.9865878820419312e-01 - <_> - - 0 -1 497 -1.3127359561622143e-03 - - -5.5913221836090088e-01 7.1896396577358246e-02 - <_> - - 0 -1 498 -4.3319691903889179e-03 - - -8.0651438236236572e-01 1.5199059620499611e-02 - <_> - - 0 -1 499 -3.6742340307682753e-03 - - 4.2407768964767456e-01 -9.2443756759166718e-02 - <_> - - 0 -1 500 2.5564959272742271e-02 - - 2.9059829190373421e-02 -4.8274171352386475e-01 - <_> - - 0 -1 501 2.8129860758781433e-02 - - -8.0184653401374817e-02 5.2279758453369141e-01 - <_> - - 0 -1 502 8.8039072579704225e-05 - - -7.4344098567962646e-02 9.4045989215373993e-02 - <_> - - 0 -1 503 -4.6100970357656479e-03 - - -5.1046329736709595e-01 7.0259310305118561e-02 - <_> - - 0 -1 504 2.4607360828667879e-03 - - -7.3687382042407990e-02 1.7185910046100616e-01 - <_> - - 0 -1 505 -1.8461809959262609e-03 - - 3.2514411211013794e-01 -1.2517750263214111e-01 - <_> - - 0 -1 506 2.6498539955355227e-04 - - -1.0129640251398087e-01 5.4491110146045685e-02 - <_> - - 0 -1 507 1.3974959962069988e-02 - - 1.0203190147876740e-01 -3.9044409990310669e-01 - <_> - - 0 -1 508 3.3575310371816158e-03 - - -6.4226530492305756e-02 5.4202359169721603e-02 - <_> - - 0 -1 509 7.3201949708163738e-03 - - 5.9934031218290329e-02 -6.0588258504867554e-01 - <_> - - 0 -1 510 -1.2428000336512923e-03 - - 1.1665280163288116e-01 -7.2288237512111664e-02 - <_> - - 0 -1 511 -1.8044740427285433e-03 - - 3.4149900078773499e-01 -9.8468907177448273e-02 - <_> - - 0 -1 512 -4.8408531583845615e-03 - - -5.3094178438186646e-01 3.1446449458599091e-02 - <_> - - 0 -1 513 4.5861881226301193e-03 - - -1.6896879673004150e-01 1.9897870719432831e-01 - <_> - - 0 -1 514 1.3223010115325451e-02 - - 2.6502050459384918e-02 -6.1782538890838623e-01 - <_> - - 0 -1 515 -1.3310019858181477e-03 - - -3.7018761038780212e-01 8.9922286570072174e-02 - <_> - - 0 -1 516 -1.4923400012776256e-03 - - -3.2771658897399902e-01 6.3753470778465271e-02 - <_> - - 0 -1 517 2.3128539323806763e-03 - - 5.8098889887332916e-02 -5.7217907905578613e-01 - <_> - - 0 -1 518 -3.9470911026000977e-02 - - -5.9376251697540283e-01 2.4938920978456736e-03 - <_> - - 0 -1 519 1.1061299592256546e-02 - - -9.7631797194480896e-02 3.4335118532180786e-01 - <_> - - 0 -1 520 1.7588209593668580e-03 - - -3.3723760396242142e-02 1.8667000532150269e-01 - <_> - 53 - -1.3580759763717651e+00 - - <_> - - 0 -1 521 -4.3175318278372288e-03 - - 2.6701891422271729e-01 -3.5374870896339417e-01 - <_> - - 0 -1 522 1.3007350265979767e-02 - - 8.7024876847863197e-03 -7.5992470979690552e-01 - <_> - - 0 -1 523 4.8762829974293709e-03 - - -2.0284099876880646e-01 4.1433459520339966e-01 - <_> - - 0 -1 524 -1.0705440305173397e-02 - - 2.0144259929656982e-01 -2.9292601346969604e-01 - <_> - - 0 -1 525 -4.4717481359839439e-03 - - 2.9785239696502686e-01 -2.1515479683876038e-01 - <_> - - 0 -1 526 -1.0971710085868835e-01 - - -9.0043932199478149e-01 4.1688669472932816e-02 - <_> - - 0 -1 527 2.4193130433559418e-02 - - -1.7109879851341248e-01 3.1211599707603455e-01 - <_> - - 0 -1 528 2.4174679070711136e-02 - - 2.8407519683241844e-02 -5.3422790765762329e-01 - <_> - - 0 -1 529 2.1222220733761787e-02 - - -1.1979670077562332e-01 4.4222798943519592e-01 - <_> - - 0 -1 530 2.6180870831012726e-02 - - -5.3708368539810181e-01 8.5554197430610657e-02 - <_> - - 0 -1 531 -4.6309800818562508e-03 - - -6.3450610637664795e-01 7.8415229916572571e-02 - <_> - - 0 -1 532 -6.1208908446133137e-03 - - -5.8184450864791870e-01 5.6262150406837463e-02 - <_> - - 0 -1 533 2.4345550686120987e-02 - - -8.2362763583660126e-02 5.2085632085800171e-01 - <_> - - 0 -1 534 -1.0590479709208012e-02 - - -5.8450412750244141e-01 3.7550948560237885e-02 - <_> - - 0 -1 535 -8.4336008876562119e-03 - - -7.2815698385238647e-01 4.3281048536300659e-02 - <_> - - 0 -1 536 2.5999199599027634e-02 - - 2.3103030398488045e-02 -4.7821858525276184e-01 - <_> - - 0 -1 537 2.5073610246181488e-02 - - -1.0790230333805084e-01 3.5499471426010132e-01 - <_> - - 0 -1 538 2.9070028662681580e-01 - - 6.3703400082886219e-03 -8.6412417888641357e-01 - <_> - - 0 -1 539 1.7590269446372986e-01 - - -2.5589939951896667e-01 1.6987270116806030e-01 - <_> - - 0 -1 540 -3.2584410160779953e-02 - - -6.2721168994903564e-01 1.8344789743423462e-02 - <_> - - 0 -1 541 -4.1382450610399246e-02 - - 5.4475349187850952e-01 -1.0436189919710159e-01 - <_> - - 0 -1 542 -8.6197769269347191e-03 - - 1.4069239795207977e-01 -4.0490731596946716e-02 - <_> - - 0 -1 543 2.0080020185559988e-03 - - 9.3814283609390259e-02 -4.5978298783302307e-01 - <_> - - 0 -1 544 1.1478760279715061e-02 - - -2.3005740344524384e-01 1.8548269569873810e-01 - <_> - - 0 -1 545 -9.1993194073438644e-03 - - 4.3196168541908264e-01 -8.4990806877613068e-02 - <_> - - 0 -1 546 3.2873731106519699e-04 - - -3.2470309734344482e-01 1.2502589821815491e-01 - <_> - - 0 -1 547 1.6286820173263550e-02 - - -1.6808439791202545e-01 2.0208799839019775e-01 - <_> - - 0 -1 548 -8.8326708646491170e-04 - - 1.3341540098190308e-01 -8.0567203462123871e-02 - <_> - - 0 -1 549 -2.2098519839346409e-03 - - 3.2481029629707336e-01 -1.1913210153579712e-01 - <_> - - 0 -1 550 3.3911340869963169e-03 - - -6.4360022544860840e-01 9.3070819973945618e-02 - <_> - - 0 -1 551 -2.1501209586858749e-02 - - 1.2166000157594681e-01 -2.8132438659667969e-01 - <_> - - 0 -1 552 1.3594830408692360e-02 - - -7.4954092502593994e-02 1.1320699751377106e-01 - <_> - - 0 -1 553 -5.9626200236380100e-03 - - -6.0876357555389404e-01 5.5802300572395325e-02 - <_> - - 0 -1 554 -7.1367057971656322e-03 - - 1.3753290474414825e-01 -5.4944049566984177e-02 - <_> - - 0 -1 555 3.7937159650027752e-03 - - -9.7331270575523376e-02 3.5290411114692688e-01 - <_> - - 0 -1 556 4.2037001252174377e-01 - - -6.0830309987068176e-02 6.2353998422622681e-01 - <_> - - 0 -1 557 -1.3953109737485647e-03 - - -4.5005550980567932e-01 8.5933342576026917e-02 - <_> - - 0 -1 558 -9.1760727809742093e-04 - - -2.7361738681793213e-01 4.9933131784200668e-02 - <_> - - 0 -1 559 2.6983609423041344e-03 - - -9.6326000988483429e-02 4.4493889808654785e-01 - <_> - - 0 -1 560 1.8104390474036336e-03 - - 5.8886051177978516e-02 -2.8511041402816772e-01 - <_> - - 0 -1 561 -5.2683739922940731e-03 - - 5.0250577926635742e-01 -1.0216759890317917e-01 - <_> - - 0 -1 562 3.4583848901093006e-03 - - 5.8127861469984055e-02 -5.9851872920989990e-01 - <_> - - 0 -1 563 -3.5791560076177120e-03 - - -7.3496657609939575e-01 4.1422609239816666e-02 - <_> - - 0 -1 564 5.1315352320671082e-03 - - -9.3608200550079346e-02 1.7093980312347412e-01 - <_> - - 0 -1 565 -4.2571019381284714e-02 - - 4.8374500870704651e-01 -7.8032270073890686e-02 - <_> - - 0 -1 566 -1.4648390002548695e-02 - - -4.8706358671188354e-01 2.5201629847288132e-02 - <_> - - 0 -1 567 9.3548959121108055e-03 - - 3.9141140878200531e-02 -8.5132300853729248e-01 - <_> - - 0 -1 568 -7.7046807855367661e-03 - - 2.7295690774917603e-01 -1.0840819776058197e-01 - <_> - - 0 -1 569 -6.4468376338481903e-02 - - -8.0510532855987549e-01 4.7053340822458267e-02 - <_> - - 0 -1 570 -7.9486463218927383e-03 - - 3.0840569734573364e-01 -1.3387249410152435e-01 - <_> - - 0 -1 571 -3.9265598170459270e-03 - - 3.6305388808250427e-01 -1.0540190339088440e-01 - <_> - - 0 -1 572 -3.6044888198375702e-02 - - 5.8140981197357178e-01 -2.9684588662348688e-04 - <_> - - 0 -1 573 -7.6920147985219955e-03 - - 3.3190870285034180e-01 -1.0925249755382538e-01 - <_> - 65 - -1.3411600589752197e+00 - - <_> - - 0 -1 574 -4.9766711890697479e-03 - - 3.7934410572052002e-01 -2.4959290027618408e-01 - <_> - - 0 -1 575 -3.4589890390634537e-02 - - -4.4946050643920898e-01 3.9635330438613892e-02 - <_> - - 0 -1 576 1.9461639225482941e-02 - - -2.6357260346412659e-01 2.7247101068496704e-01 - <_> - - 0 -1 577 4.2663760483264923e-02 - - 2.9581360518932343e-02 -3.4751391410827637e-01 - <_> - - 0 -1 578 5.8530770242214203e-02 - - -3.0708679556846619e-01 2.0082889497280121e-01 - <_> - - 0 -1 579 -2.9736598953604698e-03 - - -5.4576981067657471e-01 2.3220159113407135e-02 - <_> - - 0 -1 580 7.7464492060244083e-03 - - -1.4597670733928680e-01 3.5159158706665039e-01 - <_> - - 0 -1 581 7.0320582017302513e-04 - - -3.5477969050407410e-01 1.4947199821472168e-01 - <_> - - 0 -1 582 -1.3183569535613060e-02 - - 4.9795240163803101e-01 -9.5576412975788116e-02 - <_> - - 0 -1 583 1.1360269971191883e-02 - - 4.4859439134597778e-02 -7.7702391147613525e-01 - <_> - - 0 -1 584 -5.3752749226987362e-03 - - -6.0436600446701050e-01 6.3452452421188354e-02 - <_> - - 0 -1 585 2.6277059223502874e-03 - - -5.9781100600957870e-02 1.6431820392608643e-01 - <_> - - 0 -1 586 -1.9063310464844108e-03 - - 3.4500768780708313e-01 -1.1078260093927383e-01 - <_> - - 0 -1 587 -5.5438909679651260e-02 - - 5.3140318393707275e-01 -3.9117269217967987e-02 - <_> - - 0 -1 588 2.2990850731730461e-02 - - -1.1105979979038239e-01 3.4139779210090637e-01 - <_> - - 0 -1 589 2.3013869300484657e-02 - - 1.9403599202632904e-02 -3.0652850866317749e-01 - <_> - - 0 -1 590 -3.2346909865736961e-03 - - 1.8446859717369080e-01 -2.1846550703048706e-01 - <_> - - 0 -1 591 1.9735300447791815e-03 - - -6.4886763691902161e-02 6.2509037554264069e-02 - <_> - - 0 -1 592 -1.0755480267107487e-02 - - 3.5955241322517395e-01 -1.1030949652194977e-01 - <_> - - 0 -1 593 -2.6936439797282219e-02 - - -7.0569419860839844e-01 1.5028079971671104e-02 - <_> - - 0 -1 594 2.8886420652270317e-02 - - 5.0576541572809219e-02 -7.2815430164337158e-01 - <_> - - 0 -1 595 5.7200351729989052e-03 - - -1.0274200141429901e-01 8.0553196370601654e-02 - <_> - - 0 -1 596 -1.7981380224227905e-02 - - -7.0609301328659058e-01 5.8095961809158325e-02 - <_> - - 0 -1 597 1.6353320097550750e-03 - - -9.0820826590061188e-02 1.2195230275392532e-01 - <_> - - 0 -1 598 -1.8810540204867721e-03 - - 3.1368181109428406e-01 -1.1835079640150070e-01 - <_> - - 0 -1 599 -1.6305189579725266e-02 - - -3.4470620751380920e-01 1.0644529946148396e-02 - <_> - - 0 -1 600 -1.6981370281428099e-03 - - 3.6481419205665588e-01 -1.0638120025396347e-01 - <_> - - 0 -1 601 2.1174369379878044e-02 - - 3.1025370582938194e-02 -2.7620419859886169e-01 - <_> - - 0 -1 602 -8.8443253189325333e-03 - - -6.9870138168334961e-01 5.1486968994140625e-02 - <_> - - 0 -1 603 3.6929589696228504e-03 - - -6.5479710698127747e-02 2.2728489711880684e-02 - <_> - - 0 -1 604 1.0892639867961407e-02 - - 6.1733219772577286e-02 -6.7477071285247803e-01 - <_> - - 0 -1 605 -1.2833529710769653e-01 - - 2.1409809589385986e-01 -3.3962771296501160e-02 - <_> - - 0 -1 606 -5.1236700266599655e-02 - - 1.5942020714282990e-01 -2.4341639876365662e-01 - <_> - - 0 -1 607 1.2321960180997849e-01 - - 2.5586610659956932e-02 -4.7473230957984924e-01 - <_> - - 0 -1 608 -1.9274000078439713e-03 - - 1.0943879932165146e-01 -3.3568400144577026e-01 - <_> - - 0 -1 609 -2.0102979615330696e-02 - - -5.1650160551071167e-01 2.9315050691366196e-02 - <_> - - 0 -1 610 1.8281549215316772e-02 - - -6.4036741852760315e-02 6.2557631731033325e-01 - <_> - - 0 -1 611 1.4739660546183586e-03 - - -1.6827440261840820e-01 1.0941269993782043e-01 - <_> - - 0 -1 612 -9.0881707146763802e-03 - - 2.4175269901752472e-01 -1.4523309469223022e-01 - <_> - - 0 -1 613 -4.5073218643665314e-02 - - -7.3592007160186768e-01 5.9004039503633976e-03 - <_> - - 0 -1 614 1.9067279994487762e-02 - - -1.0756839811801910e-01 3.3758550882339478e-01 - <_> - - 0 -1 615 -9.0190932154655457e-02 - - 3.0061250925064087e-01 -4.3286528438329697e-02 - <_> - - 0 -1 616 -2.4107230827212334e-02 - - 1.4867919683456421e-01 -2.2179369628429413e-01 - <_> - - 0 -1 617 4.2285379022359848e-02 - - -2.0657710731029510e-01 2.4372029304504395e-01 - <_> - - 0 -1 618 -1.9224429503083229e-02 - - -4.1109448671340942e-01 8.8076941668987274e-02 - <_> - - 0 -1 619 -1.8713049590587616e-02 - - -5.5512428283691406e-01 -3.5010900319321081e-05 - <_> - - 0 -1 620 -1.1740639805793762e-02 - - -7.4573528766632080e-01 4.6473011374473572e-02 - <_> - - 0 -1 621 3.5142578184604645e-02 - - 2.7216039597988129e-03 -4.9953749775886536e-01 - <_> - - 0 -1 622 -6.6481479443609715e-03 - - 1.9559350609779358e-01 -1.6296459734439850e-01 - <_> - - 0 -1 623 7.3291230946779251e-03 - - -5.7543341070413589e-02 8.1424511969089508e-02 - <_> - - 0 -1 624 -5.4579051211476326e-03 - - -5.4347038269042969e-01 5.7771220803260803e-02 - <_> - - 0 -1 625 1.0465289960848168e-04 - - -1.1724419891834259e-01 1.3367609679698944e-01 - <_> - - 0 -1 626 -1.7040430102497339e-03 - - 3.2203149795532227e-01 -1.0900110006332397e-01 - <_> - - 0 -1 627 -7.5647421181201935e-03 - - 4.4239428639411926e-01 -6.8382248282432556e-02 - <_> - - 0 -1 628 8.0183129757642746e-03 - - -1.5239569544792175e-01 2.4483230710029602e-01 - <_> - - 0 -1 629 -1.0649990290403366e-02 - - -6.2405461072921753e-01 2.1711019799113274e-02 - <_> - - 0 -1 630 -1.4240309828892350e-03 - - 8.9519590139389038e-02 -3.5850891470909119e-01 - <_> - - 0 -1 631 5.9712692163884640e-03 - - -4.6914869546890259e-01 5.2607439458370209e-02 - <_> - - 0 -1 632 1.6963120549917221e-02 - - -6.1023771762847900e-02 5.7392549514770508e-01 - <_> - - 0 -1 633 7.1414969861507416e-03 - - 2.8966020792722702e-02 -3.2176148891448975e-01 - <_> - - 0 -1 634 -9.5924977213144302e-03 - - -7.2410070896148682e-01 4.0414128452539444e-02 - <_> - - 0 -1 635 -4.1343858465552330e-03 - - -6.6965389251708984e-01 3.3574569970369339e-02 - <_> - - 0 -1 636 -4.4302479363977909e-03 - - -6.3991087675094604e-01 3.9288960397243500e-02 - <_> - - 0 -1 637 -2.6460499502718449e-03 - - 1.0181919671595097e-02 -1.8428249657154083e-01 - <_> - - 0 -1 638 -3.3010810613632202e-02 - - -6.4822387695312500e-01 4.6115010976791382e-02 - - <_> - - <_> - 1 6 8 12 -1. - <_> - 1 6 4 6 2. - <_> - 5 12 4 6 2. - <_> - - <_> - 0 3 12 2 -1. - <_> - 0 4 12 1 2. - <_> - - <_> - 0 18 12 2 -1. - <_> - 0 18 6 1 2. - <_> - 6 19 6 1 2. - <_> - - <_> - 6 3 3 6 -1. - <_> - 4 5 3 2 3. - 1 - <_> - - <_> - 6 3 6 3 -1. - <_> - 8 5 2 3 3. - 1 - <_> - - <_> - 0 0 12 16 -1. - <_> - 0 8 12 8 2. - <_> - - <_> - 4 0 4 1 -1. - <_> - 6 0 2 1 2. - <_> - - <_> - 1 6 8 12 -1. - <_> - 1 6 4 6 2. - <_> - 5 12 4 6 2. - <_> - - <_> - 0 0 12 8 -1. - <_> - 0 4 12 4 2. - <_> - - <_> - 6 8 6 6 -1. - <_> - 4 10 6 2 3. - 1 - <_> - - <_> - 4 12 8 8 -1. - <_> - 4 12 4 8 2. - <_> - - <_> - 0 12 8 8 -1. - <_> - 4 12 4 8 2. - <_> - - <_> - 6 3 3 6 -1. - <_> - 4 5 3 2 3. - 1 - <_> - - <_> - 3 4 6 12 -1. - <_> - 3 7 6 6 2. - <_> - - <_> - 8 0 4 18 -1. - <_> - 8 0 2 18 2. - <_> - - <_> - 0 0 4 18 -1. - <_> - 2 0 2 18 2. - <_> - - <_> - 1 0 10 16 -1. - <_> - 1 8 10 8 2. - <_> - - <_> - 0 18 12 2 -1. - <_> - 0 18 6 1 2. - <_> - 6 19 6 1 2. - <_> - - <_> - 3 0 6 1 -1. - <_> - 3 0 3 1 2. - <_> - - <_> - 1 6 8 12 -1. - <_> - 1 6 4 6 2. - <_> - 5 12 4 6 2. - <_> - - <_> - 8 3 2 4 -1. - <_> - 7 4 2 2 2. - 1 - <_> - - <_> - 3 3 4 6 -1. - <_> - 3 5 4 2 3. - <_> - - <_> - 0 0 12 12 -1. - <_> - 0 6 12 6 2. - <_> - - <_> - 6 8 6 6 -1. - <_> - 4 10 6 2 3. - 1 - <_> - - <_> - 8 3 1 8 -1. - <_> - 6 5 1 4 2. - 1 - <_> - - <_> - 2 0 8 1 -1. - <_> - 6 0 4 1 2. - <_> - - <_> - 11 0 1 8 -1. - <_> - 9 2 1 4 2. - 1 - <_> - - <_> - 4 3 8 1 -1. - <_> - 6 5 4 1 2. - 1 - <_> - - <_> - 8 4 4 13 -1. - <_> - 8 4 2 13 2. - <_> - - <_> - 3 0 1 8 -1. - <_> - 3 4 1 4 2. - <_> - - <_> - 0 18 12 2 -1. - <_> - 6 18 6 1 2. - <_> - 0 19 6 1 2. - <_> - - <_> - 6 11 1 6 -1. - <_> - 6 11 1 3 2. - 1 - <_> - - <_> - 8 0 4 17 -1. - <_> - 8 0 2 17 2. - <_> - - <_> - 0 0 4 17 -1. - <_> - 2 0 2 17 2. - <_> - - <_> - 0 12 12 8 -1. - <_> - 0 14 12 4 2. - <_> - - <_> - 2 7 6 2 -1. - <_> - 5 7 3 2 2. - <_> - - <_> - 3 0 7 16 -1. - <_> - 3 8 7 8 2. - <_> - - <_> - 0 0 3 2 -1. - <_> - 0 1 3 1 2. - <_> - - <_> - 3 8 6 8 -1. - <_> - 3 12 6 4 2. - <_> - - <_> - 1 7 8 12 -1. - <_> - 1 7 4 6 2. - <_> - 5 13 4 6 2. - <_> - - <_> - 6 5 2 2 -1. - <_> - 6 5 2 1 2. - 1 - <_> - - <_> - 5 3 1 6 -1. - <_> - 5 5 1 2 3. - <_> - - <_> - 10 11 2 7 -1. - <_> - 10 11 1 7 2. - 1 - <_> - - <_> - 2 11 7 2 -1. - <_> - 2 11 7 1 2. - 1 - <_> - - <_> - 2 16 10 4 -1. - <_> - 2 16 5 4 2. - <_> - - <_> - 0 17 1 3 -1. - <_> - 0 18 1 1 3. - <_> - - <_> - 11 18 1 2 -1. - <_> - 11 19 1 1 2. - <_> - - <_> - 0 18 1 2 -1. - <_> - 0 19 1 1 2. - <_> - - <_> - 9 7 3 3 -1. - <_> - 9 8 3 1 3. - <_> - - <_> - 6 4 4 3 -1. - <_> - 7 5 2 3 2. - 1 - <_> - - <_> - 8 4 4 3 -1. - <_> - 8 5 4 1 3. - <_> - - <_> - 4 11 5 4 -1. - <_> - 4 11 5 2 2. - 1 - <_> - - <_> - 7 4 2 4 -1. - <_> - 7 4 2 2 2. - 1 - <_> - - <_> - 5 4 4 2 -1. - <_> - 5 4 2 2 2. - 1 - <_> - - <_> - 8 9 2 8 -1. - <_> - 8 9 2 4 2. - 1 - <_> - - <_> - 4 9 8 2 -1. - <_> - 4 9 4 2 2. - 1 - <_> - - <_> - 0 0 12 8 -1. - <_> - 0 4 12 4 2. - <_> - - <_> - 0 0 8 1 -1. - <_> - 2 0 4 1 2. - <_> - - <_> - 0 7 12 4 -1. - <_> - 3 7 6 4 2. - <_> - - <_> - 0 16 1 2 -1. - <_> - 0 17 1 1 2. - <_> - - <_> - 3 16 6 4 -1. - <_> - 3 18 6 2 2. - <_> - - <_> - 0 16 10 4 -1. - <_> - 5 16 5 4 2. - <_> - - <_> - 8 6 4 12 -1. - <_> - 8 6 2 12 2. - <_> - - <_> - 0 5 4 11 -1. - <_> - 2 5 2 11 2. - <_> - - <_> - 0 18 12 2 -1. - <_> - 6 18 6 1 2. - <_> - 0 19 6 1 2. - <_> - - <_> - 1 7 8 1 -1. - <_> - 5 7 4 1 2. - <_> - - <_> - 0 0 12 10 -1. - <_> - 0 5 12 5 2. - <_> - - <_> - 3 3 6 12 -1. - <_> - 3 7 6 4 3. - <_> - - <_> - 1 0 10 1 -1. - <_> - 1 0 5 1 2. - <_> - - <_> - 6 7 6 6 -1. - <_> - 4 9 6 2 3. - 1 - <_> - - <_> - 7 2 1 8 -1. - <_> - 7 4 1 4 2. - <_> - - <_> - 2 2 8 4 -1. - <_> - 2 4 8 2 2. - <_> - - <_> - 0 7 12 7 -1. - <_> - 3 7 6 7 2. - <_> - - <_> - 3 16 6 4 -1. - <_> - 3 18 6 2 2. - <_> - - <_> - 10 2 1 18 -1. - <_> - 10 11 1 9 2. - <_> - - <_> - 1 4 1 16 -1. - <_> - 1 12 1 8 2. - <_> - - <_> - 4 0 4 18 -1. - <_> - 4 9 4 9 2. - <_> - - <_> - 0 0 4 1 -1. - <_> - 2 0 2 1 2. - <_> - - <_> - 7 2 1 8 -1. - <_> - 7 4 1 4 2. - <_> - - <_> - 6 3 6 2 -1. - <_> - 8 5 2 2 3. - 1 - <_> - - <_> - 7 11 2 6 -1. - <_> - 7 11 2 3 2. - 1 - <_> - - <_> - 4 8 6 4 -1. - <_> - 6 10 2 4 3. - 1 - <_> - - <_> - 2 0 8 2 -1. - <_> - 2 1 8 1 2. - <_> - - <_> - 0 3 3 7 -1. - <_> - 1 3 1 7 3. - <_> - - <_> - 8 1 4 8 -1. - <_> - 8 5 4 4 2. - <_> - - <_> - 0 16 12 4 -1. - <_> - 0 17 12 2 2. - <_> - - <_> - 8 1 3 8 -1. - <_> - 8 5 3 4 2. - <_> - - <_> - 3 1 1 8 -1. - <_> - 3 5 1 4 2. - <_> - - <_> - 8 0 1 8 -1. - <_> - 6 2 1 4 2. - 1 - <_> - - <_> - 4 1 2 7 -1. - <_> - 5 1 1 7 2. - <_> - - <_> - 9 6 3 5 -1. - <_> - 10 6 1 5 3. - <_> - - <_> - 0 13 12 6 -1. - <_> - 0 15 12 2 3. - <_> - - <_> - 0 0 12 10 -1. - <_> - 6 0 6 5 2. - <_> - 0 5 6 5 2. - <_> - - <_> - 0 4 3 7 -1. - <_> - 1 4 1 7 3. - <_> - - <_> - 2 2 8 2 -1. - <_> - 2 3 8 1 2. - <_> - - <_> - 5 1 1 6 -1. - <_> - 5 3 1 2 3. - <_> - - <_> - 7 5 4 7 -1. - <_> - 7 5 2 7 2. - 1 - <_> - - <_> - 0 17 12 3 -1. - <_> - 6 17 6 3 2. - <_> - - <_> - 2 10 8 10 -1. - <_> - 6 10 4 5 2. - <_> - 2 15 4 5 2. - <_> - - <_> - 3 0 2 20 -1. - <_> - 3 5 2 10 2. - <_> - - <_> - 1 6 8 12 -1. - <_> - 1 6 4 6 2. - <_> - 5 12 4 6 2. - <_> - - <_> - 0 3 12 2 -1. - <_> - 0 4 12 1 2. - <_> - - <_> - 1 5 7 6 -1. - <_> - 1 7 7 2 3. - <_> - - <_> - 0 0 12 14 -1. - <_> - 0 7 12 7 2. - <_> - - <_> - 0 18 12 2 -1. - <_> - 0 18 6 1 2. - <_> - 6 19 6 1 2. - <_> - - <_> - 10 10 2 4 -1. - <_> - 10 10 2 2 2. - 1 - <_> - - <_> - 3 4 2 1 -1. - <_> - 3 4 1 1 2. - 1 - <_> - - <_> - 9 7 2 3 -1. - <_> - 9 8 2 1 3. - <_> - - <_> - 0 0 10 2 -1. - <_> - 0 1 10 1 2. - <_> - - <_> - 7 8 5 4 -1. - <_> - 7 9 5 2 2. - <_> - - <_> - 1 7 2 3 -1. - <_> - 1 8 2 1 3. - <_> - - <_> - 6 16 2 2 -1. - <_> - 6 16 2 1 2. - 1 - <_> - - <_> - 6 16 2 2 -1. - <_> - 6 16 1 2 2. - 1 - <_> - - <_> - 0 0 4 16 -1. - <_> - 2 0 2 16 2. - <_> - - <_> - 5 0 2 3 -1. - <_> - 5 1 2 1 3. - <_> - - <_> - 1 6 8 12 -1. - <_> - 1 6 4 6 2. - <_> - 5 12 4 6 2. - <_> - - <_> - 6 11 6 9 -1. - <_> - 6 11 3 9 2. - <_> - - <_> - 0 11 6 9 -1. - <_> - 3 11 3 9 2. - <_> - - <_> - 9 11 3 5 -1. - <_> - 10 12 1 5 3. - 1 - <_> - - <_> - 1 0 3 1 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 9 11 3 5 -1. - <_> - 10 12 1 5 3. - 1 - <_> - - <_> - 3 11 5 3 -1. - <_> - 2 12 5 1 3. - 1 - <_> - - <_> - 6 6 1 3 -1. - <_> - 5 7 1 1 3. - 1 - <_> - - <_> - 6 6 3 1 -1. - <_> - 7 7 1 1 3. - 1 - <_> - - <_> - 7 9 3 2 -1. - <_> - 7 10 3 1 2. - <_> - - <_> - 1 18 1 2 -1. - <_> - 1 19 1 1 2. - <_> - - <_> - 10 18 1 2 -1. - <_> - 10 19 1 1 2. - <_> - - <_> - 1 18 1 2 -1. - <_> - 1 19 1 1 2. - <_> - - <_> - 7 9 3 2 -1. - <_> - 7 10 3 1 2. - <_> - - <_> - 2 9 3 2 -1. - <_> - 2 10 3 1 2. - <_> - - <_> - 8 8 4 3 -1. - <_> - 8 9 4 1 3. - <_> - - <_> - 0 8 4 3 -1. - <_> - 0 9 4 1 3. - <_> - - <_> - 0 0 12 8 -1. - <_> - 0 4 12 4 2. - <_> - - <_> - 0 4 8 11 -1. - <_> - 2 4 4 11 2. - <_> - - <_> - 9 0 1 3 -1. - <_> - 9 1 1 1 3. - <_> - - <_> - 1 0 2 3 -1. - <_> - 1 1 2 1 3. - <_> - - <_> - 0 18 12 2 -1. - <_> - 6 18 6 1 2. - <_> - 0 19 6 1 2. - <_> - - <_> - 6 3 6 6 -1. - <_> - 8 5 2 6 3. - 1 - <_> - - <_> - 10 12 2 6 -1. - <_> - 10 12 1 6 2. - 1 - <_> - - <_> - 2 12 6 2 -1. - <_> - 2 12 6 1 2. - 1 - <_> - - <_> - 4 14 8 5 -1. - <_> - 4 14 4 5 2. - <_> - - <_> - 0 15 8 3 -1. - <_> - 4 15 4 3 2. - <_> - - <_> - 6 7 6 6 -1. - <_> - 8 9 2 6 3. - 1 - <_> - - <_> - 6 7 6 6 -1. - <_> - 4 9 6 2 3. - 1 - <_> - - <_> - 5 4 2 4 -1. - <_> - 5 5 2 2 2. - <_> - - <_> - 0 8 3 3 -1. - <_> - 0 9 3 1 3. - <_> - - <_> - 8 15 2 3 -1. - <_> - 7 16 2 1 3. - 1 - <_> - - <_> - 4 15 3 2 -1. - <_> - 5 16 1 2 3. - 1 - <_> - - <_> - 9 14 3 3 -1. - <_> - 8 15 3 1 3. - 1 - <_> - - <_> - 3 12 5 3 -1. - <_> - 2 13 5 1 3. - 1 - <_> - - <_> - 0 0 12 2 -1. - <_> - 3 0 6 2 2. - <_> - - <_> - 0 9 3 4 -1. - <_> - 0 10 3 2 2. - <_> - - <_> - 8 10 4 6 -1. - <_> - 8 12 4 2 3. - <_> - - <_> - 0 10 4 6 -1. - <_> - 0 12 4 2 3. - <_> - - <_> - 6 5 2 3 -1. - <_> - 5 6 2 1 3. - 1 - <_> - - <_> - 6 5 3 2 -1. - <_> - 7 6 1 2 3. - 1 - <_> - - <_> - 2 0 8 1 -1. - <_> - 2 0 4 1 2. - <_> - - <_> - 0 5 3 2 -1. - <_> - 0 6 3 1 2. - <_> - - <_> - 8 14 2 3 -1. - <_> - 7 15 2 1 3. - 1 - <_> - - <_> - 4 14 3 2 -1. - <_> - 5 15 1 2 3. - 1 - <_> - - <_> - 3 2 3 8 -1. - <_> - 3 4 3 4 2. - <_> - - <_> - 3 7 8 12 -1. - <_> - 7 7 4 6 2. - <_> - 3 13 4 6 2. - <_> - - <_> - 4 6 4 3 -1. - <_> - 4 7 4 1 3. - <_> - - <_> - 3 11 6 8 -1. - <_> - 3 13 6 4 2. - <_> - - <_> - 6 12 2 6 -1. - <_> - 6 12 2 3 2. - 1 - <_> - - <_> - 4 3 8 16 -1. - <_> - 8 3 4 8 2. - <_> - 4 11 4 8 2. - <_> - - <_> - 0 2 8 16 -1. - <_> - 0 2 4 8 2. - <_> - 4 10 4 8 2. - <_> - - <_> - 9 0 3 2 -1. - <_> - 9 1 3 1 2. - <_> - - <_> - 0 0 3 2 -1. - <_> - 0 1 3 1 2. - <_> - - <_> - 9 6 1 2 -1. - <_> - 9 6 1 1 2. - 1 - <_> - - <_> - 0 1 12 2 -1. - <_> - 4 1 4 2 3. - <_> - - <_> - 9 4 3 5 -1. - <_> - 10 4 1 5 3. - <_> - - <_> - 0 3 4 6 -1. - <_> - 1 3 2 6 2. - <_> - - <_> - 11 17 1 2 -1. - <_> - 11 18 1 1 2. - <_> - - <_> - 0 17 1 2 -1. - <_> - 0 18 1 1 2. - <_> - - <_> - 11 17 1 3 -1. - <_> - 11 18 1 1 3. - <_> - - <_> - 0 17 1 3 -1. - <_> - 0 18 1 1 3. - <_> - - <_> - 0 4 12 12 -1. - <_> - 0 8 12 4 3. - <_> - - <_> - 1 5 3 6 -1. - <_> - 2 5 1 6 3. - <_> - - <_> - 6 4 4 3 -1. - <_> - 5 5 4 1 3. - 1 - <_> - - <_> - 6 4 3 4 -1. - <_> - 7 5 1 4 3. - 1 - <_> - - <_> - 10 4 2 3 -1. - <_> - 10 5 2 1 3. - <_> - - <_> - 0 4 2 3 -1. - <_> - 0 5 2 1 3. - <_> - - <_> - 9 10 3 3 -1. - <_> - 8 11 3 1 3. - 1 - <_> - - <_> - 6 10 6 3 -1. - <_> - 6 10 3 3 2. - 1 - <_> - - <_> - 3 2 4 2 -1. - <_> - 3 2 2 1 2. - <_> - 5 3 2 1 2. - <_> - - <_> - 6 8 6 6 -1. - <_> - 8 10 2 6 3. - 1 - <_> - - <_> - 6 8 6 6 -1. - <_> - 4 10 6 2 3. - 1 - <_> - - <_> - 6 4 1 6 -1. - <_> - 4 6 1 2 3. - 1 - <_> - - <_> - 6 4 6 1 -1. - <_> - 8 6 2 1 3. - 1 - <_> - - <_> - 6 5 3 3 -1. - <_> - 5 6 3 1 3. - 1 - <_> - - <_> - 6 5 3 3 -1. - <_> - 7 6 1 3 3. - 1 - <_> - - <_> - 2 16 10 4 -1. - <_> - 2 16 5 4 2. - <_> - - <_> - 0 0 12 10 -1. - <_> - 0 5 12 5 2. - <_> - - <_> - 10 0 2 2 -1. - <_> - 10 0 1 2 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 1 0 1 2 2. - <_> - - <_> - 7 15 2 2 -1. - <_> - 7 15 2 1 2. - 1 - <_> - - <_> - 0 8 2 6 -1. - <_> - 0 8 1 3 2. - <_> - 1 11 1 3 2. - <_> - - <_> - 10 11 2 4 -1. - <_> - 9 12 2 2 2. - 1 - <_> - - <_> - 0 16 10 4 -1. - <_> - 5 16 5 4 2. - <_> - - <_> - 1 18 10 2 -1. - <_> - 1 19 10 1 2. - <_> - - <_> - 0 9 2 4 -1. - <_> - 0 9 1 2 2. - <_> - 1 11 1 2 2. - <_> - - <_> - 9 12 3 3 -1. - <_> - 8 13 3 1 3. - 1 - <_> - - <_> - 3 12 3 3 -1. - <_> - 4 13 1 3 3. - 1 - <_> - - <_> - 6 4 4 3 -1. - <_> - 5 5 4 1 3. - 1 - <_> - - <_> - 6 4 3 4 -1. - <_> - 7 5 1 4 3. - 1 - <_> - - <_> - 9 12 3 3 -1. - <_> - 8 13 3 1 3. - 1 - <_> - - <_> - 3 12 3 3 -1. - <_> - 4 13 1 3 3. - 1 - <_> - - <_> - 6 4 3 4 -1. - <_> - 5 5 3 2 2. - 1 - <_> - - <_> - 6 4 4 3 -1. - <_> - 7 5 2 3 2. - 1 - <_> - - <_> - 9 18 2 2 -1. - <_> - 9 19 2 1 2. - <_> - - <_> - 1 18 2 2 -1. - <_> - 1 19 2 1 2. - <_> - - <_> - 10 6 2 3 -1. - <_> - 10 7 2 1 3. - <_> - - <_> - 0 1 2 4 -1. - <_> - 0 1 1 2 2. - <_> - 1 3 1 2 2. - <_> - - <_> - 6 0 2 3 -1. - <_> - 6 0 1 3 2. - <_> - - <_> - 2 13 2 2 -1. - <_> - 2 13 1 1 2. - <_> - 3 14 1 1 2. - <_> - - <_> - 10 6 2 3 -1. - <_> - 10 7 2 1 3. - <_> - - <_> - 2 1 4 3 -1. - <_> - 2 2 4 1 3. - <_> - - <_> - 7 4 3 3 -1. - <_> - 6 5 3 1 3. - 1 - <_> - - <_> - 5 4 2 2 -1. - <_> - 5 5 2 1 2. - <_> - - <_> - 10 10 2 6 -1. - <_> - 10 10 1 6 2. - <_> - - <_> - 0 12 4 4 -1. - <_> - 2 12 2 4 2. - <_> - - <_> - 6 3 3 6 -1. - <_> - 4 5 3 2 3. - 1 - <_> - - <_> - 6 3 6 3 -1. - <_> - 8 5 2 3 3. - 1 - <_> - - <_> - 9 12 2 3 -1. - <_> - 8 13 2 1 3. - 1 - <_> - - <_> - 6 12 1 6 -1. - <_> - 6 12 1 3 2. - 1 - <_> - - <_> - 5 16 3 2 -1. - <_> - 5 17 3 1 2. - <_> - - <_> - 3 12 3 2 -1. - <_> - 4 13 1 2 3. - 1 - <_> - - <_> - 11 0 1 2 -1. - <_> - 11 0 1 1 2. - 1 - <_> - - <_> - 0 0 4 11 -1. - <_> - 2 0 2 11 2. - <_> - - <_> - 10 11 2 3 -1. - <_> - 9 12 2 1 3. - 1 - <_> - - <_> - 2 11 3 2 -1. - <_> - 3 12 1 2 3. - 1 - <_> - - <_> - 9 11 3 5 -1. - <_> - 10 12 1 5 3. - 1 - <_> - - <_> - 3 11 5 3 -1. - <_> - 2 12 5 1 3. - 1 - <_> - - <_> - 8 12 4 2 -1. - <_> - 8 13 4 1 2. - <_> - - <_> - 0 12 4 2 -1. - <_> - 0 13 4 1 2. - <_> - - <_> - 8 13 2 2 -1. - <_> - 9 13 1 1 2. - <_> - 8 14 1 1 2. - <_> - - <_> - 0 7 5 3 -1. - <_> - 0 8 5 1 3. - <_> - - <_> - 8 13 2 2 -1. - <_> - 9 13 1 1 2. - <_> - 8 14 1 1 2. - <_> - - <_> - 2 13 2 2 -1. - <_> - 2 13 1 1 2. - <_> - 3 14 1 1 2. - <_> - - <_> - 7 8 5 4 -1. - <_> - 7 9 5 2 2. - <_> - - <_> - 0 5 2 8 -1. - <_> - 0 5 1 4 2. - <_> - 1 9 1 4 2. - <_> - - <_> - 8 8 3 4 -1. - <_> - 8 9 3 2 2. - <_> - - <_> - 1 8 3 4 -1. - <_> - 1 9 3 2 2. - <_> - - <_> - 0 0 12 16 -1. - <_> - 0 8 12 8 2. - <_> - - <_> - 0 0 4 2 -1. - <_> - 0 0 2 1 2. - <_> - 2 1 2 1 2. - <_> - - <_> - 7 0 3 3 -1. - <_> - 8 0 1 3 3. - <_> - - <_> - 3 12 5 3 -1. - <_> - 2 13 5 1 3. - 1 - <_> - - <_> - 0 8 12 4 -1. - <_> - 3 8 6 4 2. - <_> - - <_> - 2 12 2 2 -1. - <_> - 2 12 1 1 2. - <_> - 3 13 1 1 2. - <_> - - <_> - 10 15 2 3 -1. - <_> - 10 16 2 1 3. - <_> - - <_> - 0 0 8 1 -1. - <_> - 2 0 4 1 2. - <_> - - <_> - 3 6 8 12 -1. - <_> - 7 6 4 6 2. - <_> - 3 12 4 6 2. - <_> - - <_> - 5 4 3 3 -1. - <_> - 6 5 1 3 3. - 1 - <_> - - <_> - 4 6 8 12 -1. - <_> - 8 6 4 6 2. - <_> - 4 12 4 6 2. - <_> - - <_> - 0 5 10 14 -1. - <_> - 0 5 5 7 2. - <_> - 5 12 5 7 2. - <_> - - <_> - 1 2 10 4 -1. - <_> - 1 4 10 2 2. - <_> - - <_> - 0 15 1 2 -1. - <_> - 0 16 1 1 2. - <_> - - <_> - 6 0 4 3 -1. - <_> - 6 1 4 1 3. - <_> - - <_> - 5 14 2 2 -1. - <_> - 5 14 1 2 2. - 1 - <_> - - <_> - 0 9 12 1 -1. - <_> - 0 9 6 1 2. - <_> - - <_> - 0 5 3 3 -1. - <_> - 0 6 3 1 3. - <_> - - <_> - 8 12 4 3 -1. - <_> - 7 13 4 1 3. - 1 - <_> - - <_> - 4 12 3 4 -1. - <_> - 5 13 1 4 3. - 1 - <_> - - <_> - 7 0 2 3 -1. - <_> - 7 1 2 1 3. - <_> - - <_> - 3 0 2 3 -1. - <_> - 3 1 2 1 3. - <_> - - <_> - 10 0 2 2 -1. - <_> - 10 0 1 2 2. - 1 - <_> - - <_> - 2 0 2 2 -1. - <_> - 2 0 2 1 2. - 1 - <_> - - <_> - 10 0 2 1 -1. - <_> - 10 0 1 1 2. - 1 - <_> - - <_> - 0 18 12 2 -1. - <_> - 0 18 6 1 2. - <_> - 6 19 6 1 2. - <_> - - <_> - 2 7 8 10 -1. - <_> - 2 12 8 5 2. - <_> - - <_> - 0 9 2 10 -1. - <_> - 1 9 1 10 2. - <_> - - <_> - 9 9 3 2 -1. - <_> - 10 9 1 2 3. - <_> - - <_> - 0 9 3 2 -1. - <_> - 1 9 1 2 3. - <_> - - <_> - 8 6 4 3 -1. - <_> - 8 7 4 1 3. - <_> - - <_> - 0 5 2 3 -1. - <_> - 0 6 2 1 3. - <_> - - <_> - 8 8 3 3 -1. - <_> - 9 8 1 3 3. - <_> - - <_> - 0 8 4 12 -1. - <_> - 2 8 2 12 2. - <_> - - <_> - 6 7 1 3 -1. - <_> - 5 8 1 1 3. - 1 - <_> - - <_> - 6 4 3 3 -1. - <_> - 7 5 1 3 3. - 1 - <_> - - <_> - 10 0 2 1 -1. - <_> - 10 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 9 10 3 1 -1. - <_> - 10 10 1 1 3. - <_> - - <_> - 0 10 3 1 -1. - <_> - 1 10 1 1 3. - <_> - - <_> - 10 12 2 3 -1. - <_> - 9 13 2 1 3. - 1 - <_> - - <_> - 2 12 3 2 -1. - <_> - 3 13 1 2 3. - 1 - <_> - - <_> - 9 10 3 3 -1. - <_> - 9 11 3 1 3. - <_> - - <_> - 0 10 3 3 -1. - <_> - 0 11 3 1 3. - <_> - - <_> - 0 0 3 2 -1. - <_> - 0 1 3 1 2. - <_> - - <_> - 3 0 6 2 -1. - <_> - 6 0 3 1 2. - <_> - 3 1 3 1 2. - <_> - - <_> - 1 7 8 12 -1. - <_> - 1 7 4 6 2. - <_> - 5 13 4 6 2. - <_> - - <_> - 7 6 4 1 -1. - <_> - 7 6 2 1 2. - <_> - - <_> - 1 0 10 2 -1. - <_> - 6 0 5 2 2. - <_> - - <_> - 10 2 1 4 -1. - <_> - 10 2 1 2 2. - 1 - <_> - - <_> - 2 2 4 1 -1. - <_> - 2 2 2 1 2. - 1 - <_> - - <_> - 4 15 8 4 -1. - <_> - 4 15 4 4 2. - <_> - - <_> - 0 14 8 5 -1. - <_> - 4 14 4 5 2. - <_> - - <_> - 8 12 4 5 -1. - <_> - 8 12 2 5 2. - <_> - - <_> - 0 10 4 7 -1. - <_> - 2 10 2 7 2. - <_> - - <_> - 5 0 3 3 -1. - <_> - 5 1 3 1 3. - <_> - - <_> - 6 8 3 1 -1. - <_> - 7 9 1 1 3. - 1 - <_> - - <_> - 9 6 3 3 -1. - <_> - 9 7 3 1 3. - <_> - - <_> - 0 6 3 3 -1. - <_> - 0 7 3 1 3. - <_> - - <_> - 8 13 4 2 -1. - <_> - 8 14 4 1 2. - <_> - - <_> - 0 6 2 3 -1. - <_> - 0 7 2 1 3. - <_> - - <_> - 8 8 3 3 -1. - <_> - 9 8 1 3 3. - <_> - - <_> - 0 12 5 4 -1. - <_> - 0 14 5 2 2. - <_> - - <_> - 6 16 4 2 -1. - <_> - 8 16 2 1 2. - <_> - 6 17 2 1 2. - <_> - - <_> - 1 12 2 2 -1. - <_> - 1 12 1 1 2. - <_> - 2 13 1 1 2. - <_> - - <_> - 8 12 2 2 -1. - <_> - 9 12 1 1 2. - <_> - 8 13 1 1 2. - <_> - - <_> - 0 16 1 2 -1. - <_> - 0 17 1 1 2. - <_> - - <_> - 8 12 2 2 -1. - <_> - 9 12 1 1 2. - <_> - 8 13 1 1 2. - <_> - - <_> - 2 12 2 2 -1. - <_> - 2 12 1 1 2. - <_> - 3 13 1 1 2. - <_> - - <_> - 8 13 2 3 -1. - <_> - 7 14 2 1 3. - 1 - <_> - - <_> - 4 13 3 2 -1. - <_> - 5 14 1 2 3. - 1 - <_> - - <_> - 9 10 2 4 -1. - <_> - 10 10 1 2 2. - <_> - 9 12 1 2 2. - <_> - - <_> - 1 10 2 4 -1. - <_> - 1 10 1 2 2. - <_> - 2 12 1 2 2. - <_> - - <_> - 7 16 2 2 -1. - <_> - 7 16 2 1 2. - 1 - <_> - - <_> - 1 8 3 3 -1. - <_> - 2 8 1 3 3. - <_> - - <_> - 8 10 3 3 -1. - <_> - 8 11 3 1 3. - <_> - - <_> - 4 0 3 3 -1. - <_> - 5 0 1 3 3. - <_> - - <_> - 5 8 4 6 -1. - <_> - 5 11 4 3 2. - <_> - - <_> - 6 5 6 1 -1. - <_> - 6 5 3 1 2. - 1 - <_> - - <_> - 7 15 2 2 -1. - <_> - 7 15 2 1 2. - 1 - <_> - - <_> - 5 15 2 2 -1. - <_> - 5 15 1 2 2. - 1 - <_> - - <_> - 9 3 3 3 -1. - <_> - 9 4 3 1 3. - <_> - - <_> - 4 4 3 4 -1. - <_> - 4 5 3 2 2. - <_> - - <_> - 11 0 1 2 -1. - <_> - 11 0 1 1 2. - 1 - <_> - - <_> - 1 0 2 1 -1. - <_> - 1 0 1 1 2. - 1 - <_> - - <_> - 4 6 8 12 -1. - <_> - 8 6 4 6 2. - <_> - 4 12 4 6 2. - <_> - - <_> - 1 6 8 12 -1. - <_> - 1 6 4 6 2. - <_> - 5 12 4 6 2. - <_> - - <_> - 10 0 2 3 -1. - <_> - 9 1 2 1 3. - 1 - <_> - - <_> - 2 0 3 2 -1. - <_> - 3 1 1 2 3. - 1 - <_> - - <_> - 8 10 4 3 -1. - <_> - 7 11 4 1 3. - 1 - <_> - - <_> - 0 0 12 14 -1. - <_> - 0 7 12 7 2. - <_> - - <_> - 0 18 12 2 -1. - <_> - 6 18 6 1 2. - <_> - 0 19 6 1 2. - <_> - - <_> - 0 17 2 3 -1. - <_> - 0 18 2 1 3. - <_> - - <_> - 10 8 2 6 -1. - <_> - 11 8 1 3 2. - <_> - 10 11 1 3 2. - <_> - - <_> - 0 8 2 6 -1. - <_> - 0 8 1 3 2. - <_> - 1 11 1 3 2. - <_> - - <_> - 10 17 2 3 -1. - <_> - 10 18 2 1 3. - <_> - - <_> - 0 17 2 3 -1. - <_> - 0 18 2 1 3. - <_> - - <_> - 9 8 3 3 -1. - <_> - 10 8 1 3 3. - <_> - - <_> - 0 6 3 14 -1. - <_> - 0 13 3 7 2. - <_> - - <_> - 9 8 3 3 -1. - <_> - 10 8 1 3 3. - <_> - - <_> - 0 8 3 3 -1. - <_> - 1 8 1 3 3. - <_> - - <_> - 9 9 3 3 -1. - <_> - 8 10 3 1 3. - 1 - <_> - - <_> - 3 9 3 3 -1. - <_> - 4 10 1 3 3. - 1 - <_> - - <_> - 8 7 4 1 -1. - <_> - 8 7 2 1 2. - <_> - - <_> - 0 7 4 1 -1. - <_> - 2 7 2 1 2. - <_> - - <_> - 0 0 12 7 -1. - <_> - 0 0 6 7 2. - <_> - - <_> - 3 12 4 3 -1. - <_> - 2 13 4 1 3. - 1 - <_> - - <_> - 8 10 3 3 -1. - <_> - 8 11 3 1 3. - <_> - - <_> - 1 10 3 3 -1. - <_> - 1 11 3 1 3. - <_> - - <_> - 6 13 1 6 -1. - <_> - 4 15 1 2 3. - 1 - <_> - - <_> - 6 13 6 1 -1. - <_> - 8 15 2 1 3. - 1 - <_> - - <_> - 5 0 2 3 -1. - <_> - 5 1 2 1 3. - <_> - - <_> - 1 8 3 4 -1. - <_> - 1 9 3 2 2. - <_> - - <_> - 9 0 3 2 -1. - <_> - 10 1 1 2 3. - 1 - <_> - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - <_> - - <_> - 10 17 2 1 -1. - <_> - 10 17 1 1 2. - <_> - - <_> - 0 17 2 1 -1. - <_> - 1 17 1 1 2. - <_> - - <_> - 8 13 2 2 -1. - <_> - 9 13 1 1 2. - <_> - 8 14 1 1 2. - <_> - - <_> - 2 13 2 2 -1. - <_> - 2 13 1 1 2. - <_> - 3 14 1 1 2. - <_> - - <_> - 9 10 3 2 -1. - <_> - 10 10 1 2 3. - <_> - - <_> - 0 10 3 2 -1. - <_> - 1 10 1 2 3. - <_> - - <_> - 9 7 3 3 -1. - <_> - 9 8 3 1 3. - <_> - - <_> - 6 4 3 4 -1. - <_> - 7 5 1 4 3. - 1 - <_> - - <_> - 8 4 3 7 -1. - <_> - 9 4 1 7 3. - <_> - - <_> - 2 9 3 4 -1. - <_> - 2 10 3 2 2. - <_> - - <_> - 8 4 3 7 -1. - <_> - 9 4 1 7 3. - <_> - - <_> - 6 6 3 1 -1. - <_> - 7 7 1 1 3. - 1 - <_> - - <_> - 9 0 1 3 -1. - <_> - 9 1 1 1 3. - <_> - - <_> - 2 0 1 3 -1. - <_> - 2 1 1 1 3. - <_> - - <_> - 9 11 1 8 -1. - <_> - 9 15 1 4 2. - <_> - - <_> - 0 3 12 2 -1. - <_> - 0 4 12 1 2. - <_> - - <_> - 10 11 2 5 -1. - <_> - 10 11 1 5 2. - 1 - <_> - - <_> - 2 11 1 8 -1. - <_> - 2 15 1 4 2. - <_> - - <_> - 6 12 6 7 -1. - <_> - 6 12 3 7 2. - <_> - - <_> - 0 0 4 2 -1. - <_> - 0 0 2 1 2. - <_> - 2 1 2 1 2. - <_> - - <_> - 6 12 6 7 -1. - <_> - 6 12 3 7 2. - <_> - - <_> - 0 12 6 7 -1. - <_> - 3 12 3 7 2. - <_> - - <_> - 8 2 1 8 -1. - <_> - 6 4 1 4 2. - 1 - <_> - - <_> - 4 2 8 1 -1. - <_> - 6 4 4 1 2. - 1 - <_> - - <_> - 9 10 3 3 -1. - <_> - 8 11 3 1 3. - 1 - <_> - - <_> - 3 10 3 3 -1. - <_> - 4 11 1 3 3. - 1 - <_> - - <_> - 2 0 8 2 -1. - <_> - 4 0 4 2 2. - <_> - - <_> - 6 7 3 2 -1. - <_> - 7 8 1 2 3. - 1 - <_> - - <_> - 3 4 6 12 -1. - <_> - 3 8 6 4 3. - <_> - - <_> - 0 7 3 3 -1. - <_> - 0 8 3 1 3. - <_> - - <_> - 8 11 4 6 -1. - <_> - 8 13 4 2 3. - <_> - - <_> - 0 11 4 6 -1. - <_> - 0 13 4 2 3. - <_> - - <_> - 3 17 8 2 -1. - <_> - 7 17 4 1 2. - <_> - 3 18 4 1 2. - <_> - - <_> - 0 14 10 5 -1. - <_> - 5 14 5 5 2. - <_> - - <_> - 8 11 3 1 -1. - <_> - 9 11 1 1 3. - <_> - - <_> - 1 11 3 1 -1. - <_> - 2 11 1 1 3. - <_> - - <_> - 9 1 3 6 -1. - <_> - 10 2 1 6 3. - 1 - <_> - - <_> - 0 0 12 18 -1. - <_> - 0 9 12 9 2. - <_> - - <_> - 8 6 1 2 -1. - <_> - 8 6 1 1 2. - 1 - <_> - - <_> - 6 4 3 3 -1. - <_> - 7 5 1 3 3. - 1 - <_> - - <_> - 9 1 3 6 -1. - <_> - 10 2 1 6 3. - 1 - <_> - - <_> - 3 1 6 3 -1. - <_> - 2 2 6 1 3. - 1 - <_> - - <_> - 9 11 2 3 -1. - <_> - 8 12 2 1 3. - 1 - <_> - - <_> - 3 11 3 2 -1. - <_> - 4 12 1 2 3. - 1 - <_> - - <_> - 8 5 4 4 -1. - <_> - 8 6 4 2 2. - <_> - - <_> - 0 5 4 4 -1. - <_> - 0 6 4 2 2. - <_> - - <_> - 5 17 3 3 -1. - <_> - 5 18 3 1 3. - <_> - - <_> - 4 15 1 3 -1. - <_> - 4 16 1 1 3. - <_> - - <_> - 10 10 2 4 -1. - <_> - 11 10 1 2 2. - <_> - 10 12 1 2 2. - <_> - - <_> - 0 10 2 4 -1. - <_> - 0 10 1 2 2. - <_> - 1 12 1 2 2. - <_> - - <_> - 9 4 3 6 -1. - <_> - 10 4 1 6 3. - <_> - - <_> - 0 4 3 6 -1. - <_> - 1 4 1 6 3. - <_> - - <_> - 10 7 2 6 -1. - <_> - 11 7 1 3 2. - <_> - 10 10 1 3 2. - <_> - - <_> - 0 7 2 6 -1. - <_> - 0 7 1 3 2. - <_> - 1 10 1 3 2. - <_> - - <_> - 10 8 2 3 -1. - <_> - 10 9 2 1 3. - <_> - - <_> - 0 8 3 3 -1. - <_> - 0 9 3 1 3. - <_> - - <_> - 0 0 4 1 -1. - <_> - 2 0 2 1 2. - <_> - - <_> - 4 6 4 3 -1. - <_> - 4 7 4 1 3. - <_> - - <_> - 0 8 10 10 -1. - <_> - 0 8 5 5 2. - <_> - 5 13 5 5 2. - <_> - - <_> - 8 0 1 8 -1. - <_> - 8 0 1 4 2. - 1 - <_> - - <_> - 1 6 4 1 -1. - <_> - 3 6 2 1 2. - <_> - - <_> - 8 0 1 8 -1. - <_> - 8 0 1 4 2. - 1 - <_> - - <_> - 6 13 1 6 -1. - <_> - 6 13 1 3 2. - 1 - <_> - - <_> - 0 18 12 2 -1. - <_> - 0 19 12 1 2. - <_> - - <_> - 3 18 1 2 -1. - <_> - 3 19 1 1 2. - <_> - - <_> - 10 10 2 6 -1. - <_> - 10 10 1 6 2. - <_> - - <_> - 0 10 2 6 -1. - <_> - 1 10 1 6 2. - <_> - - <_> - 8 0 1 8 -1. - <_> - 8 0 1 4 2. - 1 - <_> - - <_> - 4 2 4 2 -1. - <_> - 4 2 2 1 2. - <_> - 6 3 2 1 2. - <_> - - <_> - 0 8 12 2 -1. - <_> - 0 8 6 2 2. - <_> - - <_> - 4 0 4 2 -1. - <_> - 5 0 2 2 2. - <_> - - <_> - 6 0 3 3 -1. - <_> - 7 0 1 3 3. - <_> - - <_> - 3 0 3 3 -1. - <_> - 4 0 1 3 3. - <_> - - <_> - 6 5 1 3 -1. - <_> - 5 6 1 1 3. - 1 - <_> - - <_> - 0 1 2 4 -1. - <_> - 0 1 1 2 2. - <_> - 1 3 1 2 2. - <_> - - <_> - 10 1 2 4 -1. - <_> - 11 1 1 2 2. - <_> - 10 3 1 2 2. - <_> - - <_> - 0 1 2 4 -1. - <_> - 0 1 1 2 2. - <_> - 1 3 1 2 2. - <_> - - <_> - 9 8 3 3 -1. - <_> - 9 9 3 1 3. - <_> - - <_> - 6 16 2 2 -1. - <_> - 6 16 1 2 2. - 1 - <_> - - <_> - 6 8 2 1 -1. - <_> - 6 8 1 1 2. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 6 1 1 3. - 1 - <_> - - <_> - 5 5 2 3 -1. - <_> - 5 6 2 1 3. - <_> - - <_> - 1 6 3 3 -1. - <_> - 1 7 3 1 3. - <_> - - <_> - 8 1 1 8 -1. - <_> - 6 3 1 4 2. - 1 - <_> - - <_> - 4 1 8 1 -1. - <_> - 6 3 4 1 2. - 1 - <_> - - <_> - 8 13 3 4 -1. - <_> - 7 14 3 2 2. - 1 - <_> - - <_> - 5 5 1 8 -1. - <_> - 5 7 1 4 2. - <_> - - <_> - 9 11 3 3 -1. - <_> - 8 12 3 1 3. - 1 - <_> - - <_> - 4 13 4 3 -1. - <_> - 5 14 2 3 2. - 1 - <_> - - <_> - 8 4 3 4 -1. - <_> - 9 5 1 4 3. - 1 - <_> - - <_> - 6 4 3 4 -1. - <_> - 7 5 1 4 3. - 1 - <_> - - <_> - 8 4 3 4 -1. - <_> - 9 5 1 4 3. - 1 - <_> - - <_> - 4 4 4 3 -1. - <_> - 3 5 4 1 3. - 1 - <_> - - <_> - 6 8 4 2 -1. - <_> - 6 9 4 1 2. - <_> - - <_> - 2 8 5 2 -1. - <_> - 2 9 5 1 2. - <_> - - <_> - 6 13 6 4 -1. - <_> - 6 15 6 2 2. - <_> - - <_> - 0 0 12 1 -1. - <_> - 6 0 6 1 2. - <_> - - <_> - 11 1 1 3 -1. - <_> - 10 2 1 1 3. - 1 - <_> - - <_> - 1 1 3 1 -1. - <_> - 2 2 1 1 3. - 1 - <_> - - <_> - 8 4 3 7 -1. - <_> - 9 4 1 7 3. - <_> - - <_> - 1 4 3 7 -1. - <_> - 2 4 1 7 3. - <_> - - <_> - 10 0 2 2 -1. - <_> - 10 0 1 2 2. - 1 - <_> - - <_> - 1 6 3 4 -1. - <_> - 2 6 1 4 3. - <_> - - <_> - 10 0 2 3 -1. - <_> - 10 0 1 3 2. - 1 - <_> - - <_> - 2 0 3 2 -1. - <_> - 2 0 3 1 2. - 1 - <_> - - <_> - 10 5 1 3 -1. - <_> - 10 6 1 1 3. - <_> - - <_> - 5 0 2 3 -1. - <_> - 5 1 2 1 3. - <_> - - <_> - 6 1 6 9 -1. - <_> - 6 4 6 3 3. - <_> - - <_> - 4 1 2 9 -1. - <_> - 4 4 2 3 3. - <_> - - <_> - 4 1 8 18 -1. - <_> - 8 1 4 9 2. - <_> - 4 10 4 9 2. - <_> - - <_> - 4 14 4 6 -1. - <_> - 4 17 4 3 2. - <_> - - <_> - 10 1 2 4 -1. - <_> - 11 1 1 2 2. - <_> - 10 3 1 2 2. - <_> - - <_> - 0 1 2 4 -1. - <_> - 0 1 1 2 2. - <_> - 1 3 1 2 2. - <_> - - <_> - 5 0 4 17 -1. - <_> - 5 0 2 17 2. - <_> - - <_> - 3 0 4 17 -1. - <_> - 5 0 2 17 2. - <_> - - <_> - 8 9 2 8 -1. - <_> - 8 9 2 4 2. - 1 - <_> - - <_> - 0 8 12 12 -1. - <_> - 6 8 6 12 2. - <_> - - <_> - 7 12 2 2 -1. - <_> - 8 12 1 1 2. - <_> - 7 13 1 1 2. - <_> - - <_> - 0 9 4 3 -1. - <_> - 0 10 4 1 3. - <_> - - <_> - 6 4 2 3 -1. - <_> - 5 5 2 1 3. - 1 - <_> - - <_> - 4 0 4 2 -1. - <_> - 4 0 2 1 2. - <_> - 6 1 2 1 2. - <_> - - <_> - 11 0 1 12 -1. - <_> - 11 6 1 6 2. - <_> - - <_> - 1 2 1 18 -1. - <_> - 1 11 1 9 2. - <_> - - <_> - 6 5 4 5 -1. - <_> - 6 5 2 5 2. - 1 - <_> - - <_> - 1 7 8 2 -1. - <_> - 5 7 4 2 2. - <_> - - <_> - 10 0 2 2 -1. - <_> - 10 0 1 2 2. - 1 - <_> - - <_> - 2 0 2 2 -1. - <_> - 2 0 2 1 2. - 1 - <_> - - <_> - 8 9 2 8 -1. - <_> - 8 9 2 4 2. - 1 - <_> - - <_> - 4 9 8 2 -1. - <_> - 4 9 4 2 2. - 1 - <_> - - <_> - 9 11 2 3 -1. - <_> - 8 12 2 1 3. - 1 - <_> - - <_> - 3 11 3 2 -1. - <_> - 4 12 1 2 3. - 1 - <_> - - <_> - 8 12 2 2 -1. - <_> - 9 12 1 1 2. - <_> - 8 13 1 1 2. - <_> - - <_> - 2 12 2 2 -1. - <_> - 2 12 1 1 2. - <_> - 3 13 1 1 2. - <_> - - <_> - 7 13 2 2 -1. - <_> - 8 13 1 1 2. - <_> - 7 14 1 1 2. - <_> - - <_> - 3 13 2 2 -1. - <_> - 3 13 1 1 2. - <_> - 4 14 1 1 2. - <_> - - <_> - 9 10 3 3 -1. - <_> - 9 11 3 1 3. - <_> - - <_> - 3 2 7 3 -1. - <_> - 2 3 7 1 3. - 1 - <_> - - <_> - 10 18 2 2 -1. - <_> - 10 19 2 1 2. - <_> - - <_> - 0 18 2 2 -1. - <_> - 0 19 2 1 2. - <_> - - <_> - 10 2 2 1 -1. - <_> - 10 2 1 1 2. - <_> - - <_> - 0 2 2 1 -1. - <_> - 1 2 1 1 2. - <_> - - <_> - 9 3 3 6 -1. - <_> - 10 3 1 6 3. - <_> - - <_> - 0 3 3 6 -1. - <_> - 1 3 1 6 3. - <_> - - <_> - 9 10 3 3 -1. - <_> - 9 11 3 1 3. - <_> - - <_> - 0 10 3 3 -1. - <_> - 0 11 3 1 3. - <_> - - <_> - 9 11 2 2 -1. - <_> - 10 11 1 1 2. - <_> - 9 12 1 1 2. - <_> - - <_> - 1 11 2 2 -1. - <_> - 1 11 1 1 2. - <_> - 2 12 1 1 2. - <_> - - <_> - 9 12 1 3 -1. - <_> - 8 13 1 1 3. - 1 - <_> - - <_> - 6 12 4 2 -1. - <_> - 6 12 4 1 2. - 1 - <_> - - <_> - 9 12 1 3 -1. - <_> - 8 13 1 1 3. - 1 - <_> - - <_> - 3 12 3 1 -1. - <_> - 4 13 1 1 3. - 1 - <_> - - <_> - 7 12 2 2 -1. - <_> - 8 12 1 1 2. - <_> - 7 13 1 1 2. - <_> - - <_> - 3 12 2 2 -1. - <_> - 3 12 1 1 2. - <_> - 4 13 1 1 2. - <_> - - <_> - 10 6 1 3 -1. - <_> - 10 7 1 1 3. - <_> - - <_> - 0 0 3 2 -1. - <_> - 0 1 3 1 2. - <_> - - <_> - 11 16 1 4 -1. - <_> - 11 17 1 2 2. - <_> - - <_> - 0 16 1 4 -1. - <_> - 0 17 1 2 2. - <_> - - <_> - 11 16 1 3 -1. - <_> - 11 17 1 1 3. - <_> - - <_> - 0 16 1 3 -1. - <_> - 0 17 1 1 3. - <_> - - <_> - 6 8 2 3 -1. - <_> - 5 9 2 1 3. - 1 - <_> - - <_> - 6 8 3 2 -1. - <_> - 7 9 1 2 3. - 1 - <_> - - <_> - 8 14 2 2 -1. - <_> - 9 14 1 1 2. - <_> - 8 15 1 1 2. - <_> - - <_> - 3 6 5 3 -1. - <_> - 3 7 5 1 3. - <_> - - <_> - 9 0 1 3 -1. - <_> - 9 1 1 1 3. - <_> - - <_> - 2 0 1 3 -1. - <_> - 2 1 1 1 3. - <_> - - <_> - 8 5 4 11 -1. - <_> - 8 5 2 11 2. - <_> - - <_> - 1 15 4 2 -1. - <_> - 1 15 2 1 2. - <_> - 3 16 2 1 2. - <_> - - <_> - 7 3 3 10 -1. - <_> - 8 3 1 10 3. - <_> - - <_> - 2 3 3 10 -1. - <_> - 3 3 1 10 3. - <_> - - <_> - 8 13 3 2 -1. - <_> - 9 14 1 2 3. - 1 - <_> - - <_> - 4 13 2 3 -1. - <_> - 3 14 2 1 3. - 1 - <_> - - <_> - 0 1 12 6 -1. - <_> - 0 4 12 3 2. - <_> - - <_> - 1 6 2 4 -1. - <_> - 1 7 2 2 2. - <_> - - <_> - 10 4 2 3 -1. - <_> - 10 5 2 1 3. - <_> - - <_> - 3 0 6 2 -1. - <_> - 3 0 3 1 2. - <_> - 6 1 3 1 2. - <_> - - <_> - 7 0 3 3 -1. - <_> - 8 0 1 3 3. - <_> - - <_> - 2 0 3 3 -1. - <_> - 3 0 1 3 3. - <_> - - <_> - 6 4 3 3 -1. - <_> - 5 5 3 1 3. - 1 - <_> - - <_> - 6 4 3 3 -1. - <_> - 7 5 1 3 3. - 1 - <_> - - <_> - 4 2 8 16 -1. - <_> - 8 2 4 8 2. - <_> - 4 10 4 8 2. - <_> - - <_> - 0 2 8 16 -1. - <_> - 0 2 4 8 2. - <_> - 4 10 4 8 2. - <_> - - <_> - 6 13 6 1 -1. - <_> - 6 13 3 1 2. - 1 - <_> - - <_> - 6 13 1 6 -1. - <_> - 6 13 1 3 2. - 1 - <_> - - <_> - 10 9 2 7 -1. - <_> - 10 9 1 7 2. - <_> - - <_> - 3 18 1 2 -1. - <_> - 3 19 1 1 2. - <_> - - <_> - 2 18 8 2 -1. - <_> - 6 18 4 1 2. - <_> - 2 19 4 1 2. - <_> - - <_> - 4 5 4 3 -1. - <_> - 4 6 4 1 3. - <_> - - <_> - 4 4 4 2 -1. - <_> - 4 5 4 1 2. - <_> - - <_> - 0 9 2 9 -1. - <_> - 1 9 1 9 2. - <_> - - <_> - 8 13 2 2 -1. - <_> - 9 13 1 1 2. - <_> - 8 14 1 1 2. - <_> - - <_> - 2 13 2 2 -1. - <_> - 2 13 1 1 2. - <_> - 3 14 1 1 2. - <_> - - <_> - 11 0 1 12 -1. - <_> - 11 6 1 6 2. - <_> - - <_> - 4 5 8 4 -1. - <_> - 6 7 4 4 2. - 1 - <_> - - <_> - 8 10 3 3 -1. - <_> - 7 11 3 1 3. - 1 - <_> - - <_> - 4 0 3 2 -1. - <_> - 5 0 1 2 3. - <_> - - <_> - 9 11 3 3 -1. - <_> - 9 12 3 1 3. - <_> - - <_> - 3 14 2 2 -1. - <_> - 3 14 1 1 2. - <_> - 4 15 1 1 2. - <_> - - <_> - 0 13 12 7 -1. - <_> - 0 13 6 7 2. - <_> - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - <_> - - <_> - 10 1 2 2 -1. - <_> - 11 1 1 1 2. - <_> - 10 2 1 1 2. - <_> - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - <_> - - <_> - 10 1 2 2 -1. - <_> - 11 1 1 1 2. - <_> - 10 2 1 1 2. - <_> - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - <_> - - <_> - 10 5 1 3 -1. - <_> - 10 6 1 1 3. - <_> - - <_> - 1 5 1 3 -1. - <_> - 1 6 1 1 3. - <_> - - <_> - 6 0 2 3 -1. - <_> - 6 1 2 1 3. - <_> - - <_> - 4 2 8 1 -1. - <_> - 4 2 4 1 2. - 1 - <_> - - <_> - 8 8 4 3 -1. - <_> - 8 9 4 1 3. - <_> - - <_> - 0 8 4 3 -1. - <_> - 0 9 4 1 3. - <_> - - <_> - 8 9 3 2 -1. - <_> - 9 9 1 2 3. - <_> - - <_> - 4 9 3 9 -1. - <_> - 5 12 1 3 9. - <_> - - <_> - 7 9 3 2 -1. - <_> - 8 9 1 2 3. - <_> - - <_> - 2 9 3 2 -1. - <_> - 3 9 1 2 3. - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 7 1 1 3. - 1 - <_> - - <_> - 3 6 1 3 -1. - <_> - 2 7 1 1 3. - 1 - <_> - - <_> - 3 2 4 2 -1. - <_> - 3 2 2 1 2. - <_> - 5 3 2 1 2. - <_> - - <_> - 6 3 4 3 -1. - <_> - 5 4 4 1 3. - 1 - <_> - - <_> - 6 3 3 4 -1. - <_> - 7 4 1 4 3. - 1 - <_> - - <_> - 8 0 4 16 -1. - <_> - 8 0 2 16 2. - <_> - - <_> - 0 13 12 4 -1. - <_> - 3 13 6 4 2. - <_> - - <_> - 9 0 3 2 -1. - <_> - 9 1 3 1 2. - <_> - - <_> - 2 0 2 3 -1. - <_> - 2 1 2 1 3. - <_> - - <_> - 3 0 6 1 -1. - <_> - 3 0 3 1 2. - <_> - - <_> - 3 0 2 3 -1. - <_> - 3 1 2 1 3. - <_> - - <_> - 9 4 3 3 -1. - <_> - 9 5 3 1 3. - <_> - - <_> - 0 4 3 3 -1. - <_> - 0 5 3 1 3. - <_> - - <_> - 8 11 2 2 -1. - <_> - 9 11 1 1 2. - <_> - 8 12 1 1 2. - <_> - - <_> - 2 11 2 2 -1. - <_> - 2 11 1 1 2. - <_> - 3 12 1 1 2. - <_> - - <_> - 9 10 1 8 -1. - <_> - 7 12 1 4 2. - 1 - <_> - - <_> - 1 3 3 8 -1. - <_> - 2 3 1 8 3. - <_> - - <_> - 8 8 2 4 -1. - <_> - 8 10 2 2 2. - <_> - - <_> - 2 15 3 4 -1. - <_> - 2 16 3 2 2. - <_> - - <_> - 8 4 3 6 -1. - <_> - 9 4 1 6 3. - <_> - - <_> - 1 4 3 6 -1. - <_> - 2 4 1 6 3. - <_> - - <_> - 8 12 2 3 -1. - <_> - 7 13 2 1 3. - 1 - <_> - - <_> - 3 10 8 1 -1. - <_> - 5 12 4 1 2. - 1 - <_> - - <_> - 8 15 1 3 -1. - <_> - 7 16 1 1 3. - 1 - <_> - - <_> - 0 16 6 3 -1. - <_> - 0 17 6 1 3. - <_> - - <_> - 8 12 2 2 -1. - <_> - 9 12 1 1 2. - <_> - 8 13 1 1 2. - <_> - - <_> - 2 12 2 2 -1. - <_> - 2 12 1 1 2. - <_> - 3 13 1 1 2. - <_> - - <_> - 9 12 1 3 -1. - <_> - 8 13 1 1 3. - 1 - <_> - - <_> - 3 11 2 2 -1. - <_> - 3 11 1 1 2. - <_> - 4 12 1 1 2. - <_> - - <_> - 8 15 1 3 -1. - <_> - 7 16 1 1 3. - 1 - <_> - - <_> - 3 12 3 1 -1. - <_> - 4 13 1 1 3. - 1 - <_> - - <_> - 9 12 2 3 -1. - <_> - 8 13 2 1 3. - 1 - <_> - - <_> - 3 12 3 2 -1. - <_> - 4 13 1 2 3. - 1 - <_> - - <_> - 6 9 2 6 -1. - <_> - 6 9 2 3 2. - 1 - <_> - - <_> - 0 14 12 6 -1. - <_> - 0 17 12 3 2. - <_> - - <_> - 6 3 3 6 -1. - <_> - 4 5 3 2 3. - 1 - <_> - - <_> - 4 5 2 3 -1. - <_> - 5 5 1 3 2. - <_> - - <_> - 6 5 2 3 -1. - <_> - 5 6 2 1 3. - 1 - <_> - - <_> - 6 5 3 2 -1. - <_> - 7 6 1 2 3. - 1 - <_> - - <_> - 4 8 5 2 -1. - <_> - 4 9 5 1 2. - <_> - - <_> - 0 4 3 5 -1. - <_> - 1 4 1 5 3. - <_> - - <_> - 9 2 3 8 -1. - <_> - 10 2 1 8 3. - <_> - - <_> - 0 2 3 8 -1. - <_> - 1 2 1 8 3. - <_> - - <_> - 6 9 2 6 -1. - <_> - 6 9 2 3 2. - 1 - <_> - - <_> - 6 9 6 5 -1. - <_> - 6 9 3 5 2. - 1 - <_> - - <_> - 11 0 1 12 -1. - <_> - 11 6 1 6 2. - <_> - - <_> - 6 1 6 1 -1. - <_> - 8 3 2 1 3. - 1 - <_> - - <_> - 8 12 1 3 -1. - <_> - 7 13 1 1 3. - 1 - <_> - - <_> - 4 12 3 1 -1. - <_> - 5 13 1 1 3. - 1 - <_> - - <_> - 7 2 2 18 -1. - <_> - 7 2 1 18 2. - <_> - - <_> - 3 2 2 18 -1. - <_> - 4 2 1 18 2. - <_> - - <_> - 8 15 1 3 -1. - <_> - 7 16 1 1 3. - 1 - <_> - - <_> - 4 15 3 1 -1. - <_> - 5 16 1 1 3. - 1 - <_> - - <_> - 7 14 2 2 -1. - <_> - 8 14 1 1 2. - <_> - 7 15 1 1 2. - <_> - - <_> - 3 14 2 2 -1. - <_> - 3 14 1 1 2. - <_> - 4 15 1 1 2. - <_> - - <_> - 5 5 2 3 -1. - <_> - 5 6 2 1 3. - <_> - - <_> - 6 4 3 2 -1. - <_> - 7 5 1 2 3. - 1 - <_> - - <_> - 6 0 3 2 -1. - <_> - 7 0 1 2 3. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 2 1 2. - 1 - <_> - - <_> - 11 0 1 12 -1. - <_> - 11 6 1 6 2. - <_> - - <_> - 6 6 4 2 -1. - <_> - 7 7 2 2 2. - 1 - <_> - - <_> - 6 0 3 2 -1. - <_> - 7 0 1 2 3. - <_> - - <_> - 3 0 3 3 -1. - <_> - 4 0 1 3 3. - <_> - - <_> - 11 4 1 3 -1. - <_> - 11 5 1 1 3. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 8 2 1 2. - <_> - - <_> - 9 1 1 6 -1. - <_> - 9 1 1 3 2. - 1 - <_> - - <_> - 3 1 6 1 -1. - <_> - 3 1 3 1 2. - 1 - diff --git a/data/haarcascades/haarcascade_mcs_lefteye.xml b/data/haarcascades/haarcascade_mcs_lefteye.xml deleted file mode 100644 index d745e0593d..0000000000 --- a/data/haarcascades/haarcascade_mcs_lefteye.xml +++ /dev/null @@ -1,19209 +0,0 @@ - - - -BOOST - HAAR - 18 - 12 - - 279 - - 0 - 14 - - <_> - 16 - -1.7205799818038940e+00 - - <_> - - 0 -1 0 -2.2981660068035126e-01 - - 7.4487930536270142e-01 -6.7343497276306152e-01 - <_> - - 0 -1 1 1.5345169603824615e-01 - - -6.0078161954879761e-01 4.4485649466514587e-01 - <_> - - 0 -1 2 -6.0938559472560883e-02 - - 5.6126379966735840e-01 -3.1992331147193909e-01 - <_> - - 0 -1 3 1.0585549898678437e-04 - - -3.6046960949897766e-01 2.6835951209068298e-01 - <_> - - 0 -1 4 -2.3147630691528320e-01 - - 4.6166300773620605e-01 -2.0830430090427399e-01 - <_> - - 0 -1 5 1.7983419820666313e-02 - - 6.3770942389965057e-02 -5.2076548337936401e-01 - <_> - - 0 -1 6 3.9604099583812058e-05 - - -5.2314782142639160e-01 1.9505259394645691e-01 - <_> - - 0 -1 7 4.0414137765765190e-03 - - 1.0874629765748978e-01 -5.9878420829772949e-01 - <_> - - 0 -1 8 -7.6422527432441711e-02 - - 4.4672968983650208e-01 -1.5376919507980347e-01 - <_> - - 0 -1 9 9.0553581714630127e-02 - - -1.1280190199613571e-01 6.2832731008529663e-01 - <_> - - 0 -1 10 4.9092499539256096e-03 - - 1.0375600308179855e-01 -6.8671178817749023e-01 - <_> - - 0 -1 11 3.9859231561422348e-02 - - 5.3353060036897659e-02 -2.4778179824352264e-01 - <_> - - 0 -1 12 -1.4214900322258472e-02 - - -4.9093028903007507e-01 1.4295159280300140e-01 - <_> - - 0 -1 13 -5.9114010073244572e-03 - - 1.6157889366149902e-01 -1.5571700036525726e-01 - <_> - - 0 -1 14 -2.2955809533596039e-01 - - -3.0875959992408752e-01 2.2363129258155823e-01 - <_> - - 0 -1 15 -9.3946291599422693e-05 - - 2.8994649648666382e-01 -2.9955458641052246e-01 - <_> - 21 - -1.7609959840774536e+00 - - <_> - - 0 -1 16 1.2731809914112091e-01 - - -6.5400719642639160e-01 5.6866347789764404e-01 - <_> - - 0 -1 17 -7.4433487653732300e-01 - - 6.8870407342910767e-01 -3.4810429811477661e-01 - <_> - - 0 -1 18 6.2184786656871438e-05 - - -6.4049887657165527e-01 2.2681689262390137e-01 - <_> - - 0 -1 19 -7.6157607138156891e-02 - - 4.0833848714828491e-01 -6.9403909146785736e-02 - <_> - - 0 -1 20 -6.9555312395095825e-02 - - 4.6690088510513306e-01 -2.0247919857501984e-01 - <_> - - 0 -1 21 -1.0931000113487244e-01 - - 5.9584200382232666e-01 -2.1001909673213959e-01 - <_> - - 0 -1 22 3.5818720789393410e-05 - - -4.6520969271659851e-01 2.0896120369434357e-01 - <_> - - 0 -1 23 -8.0066677182912827e-03 - - -6.9932198524475098e-01 9.4288356602191925e-02 - <_> - - 0 -1 24 2.9570680111646652e-02 - - -1.5442650020122528e-01 4.6668368577957153e-01 - <_> - - 0 -1 25 7.4920160695910454e-03 - - 8.8588356971740723e-02 -6.7084282636642456e-01 - <_> - - 0 -1 26 -3.7168670445680618e-02 - - 2.5477749109268188e-01 -2.5164219737052917e-01 - <_> - - 0 -1 27 -1.2057279795408249e-01 - - 4.6008300781250000e-01 -1.1891700327396393e-01 - <_> - - 0 -1 28 -3.7710228934884071e-03 - - -6.1380928754806519e-01 8.6544543504714966e-02 - <_> - - 0 -1 29 3.5496661439538002e-05 - - -1.8688809871673584e-01 1.3584940135478973e-01 - <_> - - 0 -1 30 -1.6192409675568342e-03 - - -5.4013711214065552e-01 9.7694486379623413e-02 - <_> - - 0 -1 31 3.6828289012191817e-05 - - -1.5715110301971436e-01 1.7512370645999908e-01 - <_> - - 0 -1 32 4.0976690797833726e-05 - - -2.2035799920558929e-01 2.4334849417209625e-01 - <_> - - 0 -1 33 -7.0347607135772705e-02 - - 4.3083029985427856e-01 -1.2281300127506256e-01 - <_> - - 0 -1 34 9.4469271600246429e-02 - - -1.2159319967031479e-01 4.4967180490493774e-01 - <_> - - 0 -1 35 -1.1442740447819233e-02 - - -6.5516471862792969e-01 7.4961602687835693e-02 - <_> - - 0 -1 36 -5.3098648786544800e-03 - - -6.5974301099777222e-01 5.8748938143253326e-02 - <_> - 39 - -1.7233569622039795e+00 - - <_> - - 0 -1 37 2.4442139267921448e-01 - - -6.0776811838150024e-01 5.2004802227020264e-01 - <_> - - 0 -1 38 -6.6421680152416229e-02 - - 2.1783240139484406e-01 -2.1949340403079987e-01 - <_> - - 0 -1 39 3.8141721487045288e-01 - - 1.3418859907687875e-06 -4.1691070312500000e+04 - <_> - - 0 -1 40 -1.5484209358692169e-01 - - 1.4261369407176971e-01 -1.1163700371980667e-02 - <_> - - 0 -1 41 -7.9247541725635529e-02 - - 4.4047749042510986e-01 -3.5259070992469788e-01 - <_> - - 0 -1 42 -6.3354419544339180e-03 - - -6.7467969655990601e-01 1.1945989727973938e-01 - <_> - - 0 -1 43 5.4770321585237980e-03 - - -5.2936810255050659e-01 1.6708360612392426e-01 - <_> - - 0 -1 44 -1.8857400119304657e-01 - - 2.9692548513412476e-01 -2.7923458814620972e-01 - <_> - - 0 -1 45 -3.4621960949152708e-03 - - -5.9800887107849121e-01 1.0177610069513321e-01 - <_> - - 0 -1 46 3.3069919794797897e-02 - - -5.9684868901968002e-02 4.0516778826713562e-01 - <_> - - 0 -1 47 -3.0843779444694519e-02 - - 4.9073100090026855e-01 -1.1531980335712433e-01 - <_> - - 0 -1 48 -2.5913240388035774e-02 - - -4.9610319733619690e-01 4.5165680348873138e-02 - <_> - - 0 -1 49 -2.1639840677380562e-02 - - -7.2788608074188232e-01 5.8623861521482468e-02 - <_> - - 0 -1 50 4.8874882049858570e-03 - - 7.6803073287010193e-02 -5.8085972070693970e-01 - <_> - - 0 -1 51 -8.4114465862512589e-03 - - -4.4291898608207703e-01 9.5190443098545074e-02 - <_> - - 0 -1 52 -1.3218490406870842e-02 - - 3.1048420071601868e-01 -1.3905000686645508e-01 - <_> - - 0 -1 53 -3.2631229609251022e-02 - - -5.9402441978454590e-01 6.6915199160575867e-02 - <_> - - 0 -1 54 -4.8389490693807602e-03 - - 3.8958698511123657e-01 -7.7219173312187195e-02 - <_> - - 0 -1 55 -2.3557199165225029e-02 - - 3.6475318670272827e-01 -1.0228029638528824e-01 - <_> - - 0 -1 56 -1.6823610290884972e-02 - - -7.0283937454223633e-01 6.9169528782367706e-02 - <_> - - 0 -1 57 -1.2528980150818825e-02 - - -5.9154832363128662e-01 5.8638110756874084e-02 - <_> - - 0 -1 58 1.2736950069665909e-02 - - -7.8018456697463989e-02 4.6064260601997375e-01 - <_> - - 0 -1 59 -2.7947379276156425e-02 - - 2.6103180646896362e-01 -1.4536960422992706e-01 - <_> - - 0 -1 60 1.9469179213047028e-02 - - -1.0853669792413712e-01 2.9472211003303528e-01 - <_> - - 0 -1 61 1.0143560357391834e-02 - - 8.1535376608371735e-02 -3.9271530508995056e-01 - <_> - - 0 -1 62 1.6037160158157349e-01 - - -4.3566469103097916e-02 4.4445919990539551e-01 - <_> - - 0 -1 63 -3.1675389036536217e-03 - - 3.6521100997924805e-01 -8.6025007069110870e-02 - <_> - - 0 -1 64 1.2811190448701382e-02 - - 7.0604227483272552e-02 -5.2132707834243774e-01 - <_> - - 0 -1 65 -1.8773640692234039e-01 - - -5.3620547056198120e-01 4.9741908907890320e-02 - <_> - - 0 -1 66 -1.5811489894986153e-02 - - -5.6798452138900757e-01 4.5133739709854126e-02 - <_> - - 0 -1 67 8.5352314636111259e-03 - - 6.0936510562896729e-02 -4.3938818573951721e-01 - <_> - - 0 -1 68 -4.6653081662952900e-03 - - 5.1755487918853760e-01 -5.9410251677036285e-02 - <_> - - 0 -1 69 -7.9853478819131851e-03 - - -4.8022431135177612e-01 6.3563920557498932e-02 - <_> - - 0 -1 70 -1.5439819544553757e-02 - - 3.1821200251579285e-01 -1.5712760388851166e-01 - <_> - - 0 -1 71 2.2927390411496162e-02 - - 6.2798082828521729e-02 -5.4242467880249023e-01 - <_> - - 0 -1 72 -2.7168919332325459e-03 - - 2.7621048688888550e-01 -6.9310307502746582e-02 - <_> - - 0 -1 73 3.0373970512300730e-03 - - -7.2820127010345459e-02 4.1934990882873535e-01 - <_> - - 0 -1 74 9.4063878059387207e-03 - - 5.5666621774435043e-02 -4.3957179784774780e-01 - <_> - - 0 -1 75 -1.5984019264578819e-02 - - -6.0156708955764771e-01 4.4137120246887207e-02 - <_> - 47 - -1.7742869853973389e+00 - - <_> - - 0 -1 76 -1.0876799821853638e+00 - - 6.2948262691497803e-01 -4.1793939471244812e-01 - <_> - - 0 -1 77 1.1644390225410461e-01 - - -4.7279620170593262e-01 2.3814930021762848e-01 - <_> - - 0 -1 78 -1.6084710136055946e-02 - - 3.3747270703315735e-01 -2.7527529001235962e-01 - <_> - - 0 -1 79 -1.9196059554815292e-02 - - -5.5098891258239746e-01 5.5942028760910034e-02 - <_> - - 0 -1 80 -3.4257121384143829e-02 - - 3.0613619089126587e-01 -2.4234640598297119e-01 - <_> - - 0 -1 81 1.0649270378053188e-02 - - 9.3416690826416016e-02 -4.8975810408592224e-01 - <_> - - 0 -1 82 -2.2133740130811930e-03 - - -6.3952380418777466e-01 7.9130217432975769e-02 - <_> - - 0 -1 83 4.6288450248539448e-03 - - 5.3504310548305511e-02 -4.7028800845146179e-01 - <_> - - 0 -1 84 -4.1199862025678158e-03 - - -6.3564997911453247e-01 1.1187440156936646e-01 - <_> - - 0 -1 85 -7.0232590660452843e-03 - - -4.8968398571014404e-01 5.0502099096775055e-02 - <_> - - 0 -1 86 -4.6173902228474617e-03 - - -6.4962810277938843e-01 6.4744323492050171e-02 - <_> - - 0 -1 87 2.6568479835987091e-02 - - -8.1361226737499237e-02 1.0126339644193649e-01 - <_> - - 0 -1 88 1.4256539940834045e-01 - - 3.6757100373506546e-02 -8.6994658203125000e+03 - <_> - - 0 -1 89 -7.9922098666429520e-03 - - -6.2543541193008423e-01 5.8449558913707733e-02 - <_> - - 0 -1 90 3.2453221082687378e-01 - - -3.4219488501548767e-02 -7.6455332031250000e+03 - <_> - - 0 -1 91 -1.0454299859702587e-02 - - -4.6488571166992188e-01 8.2005582749843597e-02 - <_> - - 0 -1 92 4.8047330230474472e-02 - - -1.0950919985771179e-01 5.1447147130966187e-01 - <_> - - 0 -1 93 -1.3674950227141380e-02 - - 3.0582040548324585e-01 -2.5325518846511841e-01 - <_> - - 0 -1 94 -1.1149489879608154e-01 - - 3.4372371435165405e-01 -1.5271799266338348e-01 - <_> - - 0 -1 95 1.0649849660694599e-02 - - 5.3320560604333878e-02 -5.1434922218322754e-01 - <_> - - 0 -1 96 -1.3529709540307522e-02 - - -7.8338938951492310e-01 5.5736631155014038e-02 - <_> - - 0 -1 97 -1.2369109690189362e-01 - - 2.8146159648895264e-01 -1.6000339388847351e-01 - <_> - - 0 -1 98 -7.5496039353311062e-03 - - -6.1416012048721313e-01 7.6050773262977600e-02 - <_> - - 0 -1 99 3.1816150993108749e-02 - - 1.8631579354405403e-02 -5.5372542142868042e-01 - <_> - - 0 -1 100 1.4937350153923035e-01 - - -1.6261310083791614e-03 -4.7522329101562500e+03 - <_> - - 0 -1 101 4.6974778175354004e-02 - - 5.1585468463599682e-03 -6.3808971643447876e-01 - <_> - - 0 -1 102 1.3677899551112205e-04 - - -3.0559220910072327e-01 1.3623510301113129e-01 - <_> - - 0 -1 103 -3.2228238880634308e-02 - - 2.7725520730018616e-01 -1.2864060699939728e-01 - <_> - - 0 -1 104 -6.5994630567729473e-03 - - -4.7502130270004272e-01 7.8723862767219543e-02 - <_> - - 0 -1 105 2.0983880385756493e-02 - - -7.5561553239822388e-02 4.3078139424324036e-01 - <_> - - 0 -1 106 -1.0513519868254662e-02 - - 3.7563210725784302e-01 -8.3151116967201233e-02 - <_> - - 0 -1 107 -9.5620742067694664e-03 - - -4.2333251237869263e-01 4.3954260647296906e-02 - <_> - - 0 -1 108 1.4352190191857517e-04 - - -2.4214309453964233e-01 1.1349590122699738e-01 - <_> - - 0 -1 109 -3.2147951424121857e-02 - - 3.5538539290428162e-01 -7.4846312403678894e-02 - <_> - - 0 -1 110 1.7489150166511536e-02 - - -1.3482190668582916e-01 3.0287909507751465e-01 - <_> - - 0 -1 111 1.0752109810709953e-02 - - 2.5839660316705704e-02 -5.4003512859344482e-01 - <_> - - 0 -1 112 -1.1907819658517838e-01 - - 2.6561680436134338e-01 -1.0140880197286606e-01 - <_> - - 0 -1 113 6.6588749177753925e-03 - - 4.1985969990491867e-02 -2.9074609279632568e-01 - <_> - - 0 -1 114 8.3990991115570068e-03 - - 5.0455510616302490e-02 -4.8288908600807190e-01 - <_> - - 0 -1 115 6.0084648430347443e-02 - - -7.5537391006946564e-02 2.4068169295787811e-01 - <_> - - 0 -1 116 -7.4602258391678333e-03 - - -4.1957080364227295e-01 5.9073001146316528e-02 - <_> - - 0 -1 117 -6.0259260237216949e-02 - - 5.4446572065353394e-01 -2.6235830038785934e-02 - <_> - - 0 -1 118 -2.2176120430231094e-02 - - 3.2678040862083435e-01 -6.7592807114124298e-02 - <_> - - 0 -1 119 -8.3690620958805084e-02 - - 2.9330858588218689e-01 -6.7425176501274109e-02 - <_> - - 0 -1 120 1.7420809715986252e-02 - - -1.2961159646511078e-01 1.8764109909534454e-01 - <_> - - 0 -1 121 1.6660489141941071e-02 - - 4.7573059797286987e-02 -4.1587299108505249e-01 - <_> - - 0 -1 122 -2.0243639126420021e-02 - - -4.2727139592170715e-01 5.2154850214719772e-02 - <_> - 57 - -1.7197259664535522e+00 - - <_> - - 0 -1 123 -1.8867099285125732e-01 - - 5.1517981290817261e-01 -4.7023481130599976e-01 - <_> - - 0 -1 124 -1.6401160508394241e-02 - - 3.1213858723640442e-01 -2.1334600448608398e-01 - <_> - - 0 -1 125 9.6895441412925720e-02 - - -5.3204542398452759e-01 2.1343940496444702e-01 - <_> - - 0 -1 126 1.6825560480356216e-02 - - -1.7309989780187607e-02 2.9270818829536438e-01 - <_> - - 0 -1 127 -1.4376440085470676e-02 - - 3.2592949271202087e-01 -2.9534721374511719e-01 - <_> - - 0 -1 128 -2.5749910622835159e-02 - - 3.0064630508422852e-01 -1.2857210636138916e-01 - <_> - - 0 -1 129 -1.9781269133090973e-02 - - 4.6485328674316406e-01 -1.5703229606151581e-01 - <_> - - 0 -1 130 1.6008919104933739e-02 - - -3.1360808759927750e-02 4.0341329574584961e-01 - <_> - - 0 -1 131 6.0088648460805416e-03 - - -1.5660379827022552e-01 4.1428649425506592e-01 - <_> - - 0 -1 132 -2.9546849429607391e-02 - - 3.1660610437393188e-01 -1.0003100335597992e-01 - <_> - - 0 -1 133 -3.3541951328516006e-02 - - 2.7851161360740662e-01 -1.9055849313735962e-01 - <_> - - 0 -1 134 -5.6599538773298264e-02 - - 3.0037561058998108e-01 -8.3546951413154602e-02 - <_> - - 0 -1 135 -2.1559219807386398e-02 - - -5.5598390102386475e-01 8.8822707533836365e-02 - <_> - - 0 -1 136 1.5560880303382874e-02 - - -1.1910039931535721e-01 3.9585340023040771e-01 - <_> - - 0 -1 137 4.7825528308749199e-03 - - 8.7345741689205170e-02 -4.7982570528984070e-01 - <_> - - 0 -1 138 2.0485429093241692e-02 - - -3.5323940217494965e-02 3.6914229393005371e-01 - <_> - - 0 -1 139 -2.2292459383606911e-02 - - 4.0305820107460022e-01 -9.0521141886711121e-02 - <_> - - 0 -1 140 -3.6758739501237869e-02 - - 4.4758310914039612e-01 -7.4373558163642883e-02 - <_> - - 0 -1 141 9.3364156782627106e-05 - - -2.6075458526611328e-01 1.4131860435009003e-01 - <_> - - 0 -1 142 2.5202730670571327e-02 - - -9.2907711863517761e-02 2.2109919786453247e-01 - <_> - - 0 -1 143 7.8968331217765808e-03 - - 7.6843470335006714e-02 -5.0535291433334351e-01 - <_> - - 0 -1 144 9.2414859682321548e-03 - - 4.2619429528713226e-02 -5.8421218395233154e-01 - <_> - - 0 -1 145 -2.9902940988540649e-01 - - -6.1761599779129028e-01 3.8994479924440384e-02 - <_> - - 0 -1 146 -1.6395589336752892e-02 - - 1.6099959611892700e-01 -1.7298650741577148e-01 - <_> - - 0 -1 147 -8.5750846192240715e-03 - - -4.7212529182434082e-01 6.2937706708908081e-02 - <_> - - 0 -1 148 -2.9535809531807899e-02 - - -4.9239841103553772e-01 5.1177121698856354e-02 - <_> - - 0 -1 149 -3.2347880303859711e-02 - - 4.0244650840759277e-01 -7.1692280471324921e-02 - <_> - - 0 -1 150 -9.8570148111321032e-05 - - 1.1238799989223480e-01 -1.1841180175542831e-01 - <_> - - 0 -1 151 -6.0801780782639980e-03 - - 3.0995729565620422e-01 -8.0562673509120941e-02 - <_> - - 0 -1 152 -9.9669457995332778e-05 - - 1.0579430311918259e-01 -1.4792940020561218e-01 - <_> - - 0 -1 153 -2.1383209154009819e-02 - - -5.4032498598098755e-01 4.6587809920310974e-02 - <_> - - 0 -1 154 -3.6912590730935335e-03 - - 1.6310860216617584e-01 -1.0495279729366302e-01 - <_> - - 0 -1 155 -5.3881132043898106e-03 - - 2.3987619578838348e-01 -9.9885337054729462e-02 - <_> - - 0 -1 156 8.0342441797256470e-03 - - 8.5697777569293976e-02 -4.3955859541893005e-01 - <_> - - 0 -1 157 1.3848580420017242e-02 - - 4.9855940043926239e-02 -4.0910118818283081e-01 - <_> - - 0 -1 158 8.5337793279904872e-05 - - -1.0749509930610657e-01 1.1259689927101135e-01 - <_> - - 0 -1 159 8.9258137450087816e-05 - - -1.5447759628295898e-01 1.4948590099811554e-01 - <_> - - 0 -1 160 -3.5984220448881388e-03 - - 3.2772010564804077e-01 -1.0665640234947205e-01 - <_> - - 0 -1 161 -4.4713199138641357e-02 - - 3.8490360975265503e-01 -5.2156228572130203e-02 - <_> - - 0 -1 162 2.5462699122726917e-03 - - 9.3764789402484894e-02 -3.1739538908004761e-01 - <_> - - 0 -1 163 5.4153460077941418e-03 - - 4.4747829437255859e-02 -4.5446330308914185e-01 - <_> - - 0 -1 164 -3.8136299699544907e-02 - - 1.1968670040369034e-01 -2.8659410774707794e-02 - <_> - - 0 -1 165 3.9066441357135773e-02 - - -5.9036519378423691e-02 3.7312299013137817e-01 - <_> - - 0 -1 166 -7.3346862336620688e-05 - - 1.1904189735651016e-01 -8.6984328925609589e-02 - <_> - - 0 -1 167 8.6998203187249601e-05 - - -1.2818220257759094e-01 1.7282059788703918e-01 - <_> - - 0 -1 168 8.5675828158855438e-03 - - 8.4652923047542572e-02 -3.1986621022224426e-01 - <_> - - 0 -1 169 2.1785700693726540e-02 - - -9.5438472926616669e-02 2.6069849729537964e-01 - <_> - - 0 -1 170 -1.3853549957275391e-02 - - -4.2176169157028198e-01 6.7462787032127380e-02 - <_> - - 0 -1 171 1.3838020153343678e-02 - - 4.6685520559549332e-02 -4.1521659493446350e-01 - <_> - - 0 -1 172 6.4620330929756165e-02 - - 4.5818310230970383e-02 -4.2234459519386292e-01 - <_> - - 0 -1 173 -7.7921353280544281e-02 - - 1.3241249322891235e-01 -1.7063279449939728e-01 - <_> - - 0 -1 174 -1.3160440139472485e-03 - - -2.4945159256458282e-01 5.8696459978818893e-02 - <_> - - 0 -1 175 -8.0401099694427103e-05 - - 1.6288639605045319e-01 -1.3877080380916595e-01 - <_> - - 0 -1 176 -1.5328170359134674e-01 - - 8.4274210035800934e-02 -6.3795030117034912e-02 - <_> - - 0 -1 177 -3.7534290552139282e-01 - - -4.7942790389060974e-01 5.0034828484058380e-02 - <_> - - 0 -1 178 -6.5958919003605843e-03 - - -5.4609411954879761e-01 2.1260960027575493e-02 - <_> - - 0 -1 179 -2.6368419639766216e-03 - - 2.0740880072116852e-01 -9.0863786637783051e-02 - <_> - 87 - -1.5970319509506226e+00 - - <_> - - 0 -1 180 -1.3923250138759613e-01 - - 3.9778509736061096e-01 -4.2140689492225647e-01 - <_> - - 0 -1 181 -2.1697379648685455e-02 - - 3.5074549913406372e-01 -2.7210709452629089e-01 - <_> - - 0 -1 182 -1.6921959817409515e-02 - - 3.0072468519210815e-01 -2.0905600488185883e-01 - <_> - - 0 -1 183 -1.2638090550899506e-01 - - 2.7693378925323486e-01 -1.5910360217094421e-01 - <_> - - 0 -1 184 7.9917982220649719e-02 - - 1.9333909731358290e-03 -4.4651162109375000e+03 - <_> - - 0 -1 185 2.3830069229006767e-02 - - -8.2632936537265778e-02 4.6384599804878235e-01 - <_> - - 0 -1 186 2.7771110180765390e-03 - - -3.1618759036064148e-01 1.3602599501609802e-01 - <_> - - 0 -1 187 2.0749870687723160e-02 - - -7.9823397099971771e-02 4.0180650353431702e-01 - <_> - - 0 -1 188 -1.1794520169496536e-01 - - 1.3564899563789368e-01 -2.5304868817329407e-01 - <_> - - 0 -1 189 -1.0733289644122124e-02 - - -4.2779821157455444e-01 7.4749030172824860e-02 - <_> - - 0 -1 190 -4.8003909178078175e-03 - - -4.5992958545684814e-01 8.4859356284141541e-02 - <_> - - 0 -1 191 2.1411910653114319e-01 - - -3.9827909320592880e-02 5.4082971811294556e-01 - <_> - - 0 -1 192 1.8059259280562401e-02 - - -6.2530867755413055e-02 4.3062299489974976e-01 - <_> - - 0 -1 193 -4.3898928910493851e-02 - - -6.8367981910705566e-01 4.5472368597984314e-02 - <_> - - 0 -1 194 -3.3046580851078033e-02 - - -6.3071948289871216e-01 5.5151920765638351e-02 - <_> - - 0 -1 195 -6.1799539253115654e-03 - - -5.7958608865737915e-01 2.4057779461145401e-02 - <_> - - 0 -1 196 -3.7160899955779314e-03 - - 3.4918940067291260e-01 -9.0143196284770966e-02 - <_> - - 0 -1 197 -2.0229220390319824e-03 - - 2.5062409043312073e-01 -1.1073890328407288e-01 - <_> - - 0 -1 198 -2.9851049184799194e-03 - - -4.9283251166343689e-01 6.1420619487762451e-02 - <_> - - 0 -1 199 -2.1937670186161995e-02 - - -6.4279460906982422e-01 3.6441151052713394e-02 - <_> - - 0 -1 200 -2.9425110667943954e-02 - - 3.7635400891304016e-01 -8.1937380135059357e-02 - <_> - - 0 -1 201 2.8613150119781494e-02 - - -1.0507760196924210e-01 2.6363629102706909e-01 - <_> - - 0 -1 202 -3.1147850677371025e-02 - - 2.1914839744567871e-01 -1.3096660375595093e-01 - <_> - - 0 -1 203 1.5485489740967751e-02 - - 4.6385299414396286e-02 -5.3420221805572510e-01 - <_> - - 0 -1 204 3.5835360176861286e-03 - - -8.6932182312011719e-02 3.4212189912796021e-01 - <_> - - 0 -1 205 -4.2567998170852661e-02 - - -5.5589598417282104e-01 3.7941809743642807e-02 - <_> - - 0 -1 206 -2.7038659900426865e-02 - - -4.6420338749885559e-01 4.7554321587085724e-02 - <_> - - 0 -1 207 -2.4411270394921303e-02 - - 2.5650748610496521e-01 -4.9011740833520889e-02 - <_> - - 0 -1 208 -2.2230079397559166e-02 - - 1.4793260395526886e-01 -1.8224009871482849e-01 - <_> - - 0 -1 209 -3.2013750169426203e-03 - - -4.2445948719978333e-01 5.6803259998559952e-02 - <_> - - 0 -1 210 1.9253490492701530e-02 - - -9.1576658189296722e-02 2.6069998741149902e-01 - <_> - - 0 -1 211 -3.0006920918822289e-02 - - 3.1864610314369202e-01 -4.5917291194200516e-02 - <_> - - 0 -1 212 3.3000361174345016e-02 - - 4.2162541300058365e-02 -5.9096622467041016e-01 - <_> - - 0 -1 213 -2.3642620071768761e-02 - - -2.6040360331535339e-01 1.1056790128350258e-02 - <_> - - 0 -1 214 4.7398939728736877e-02 - - -4.0648590773344040e-02 5.2747577428817749e-01 - <_> - - 0 -1 215 5.8793718926608562e-03 - - 3.1395949423313141e-02 -5.6056851148605347e-01 - <_> - - 0 -1 216 -5.0995089113712311e-03 - - 1.6041420400142670e-01 -1.2821219861507416e-01 - <_> - - 0 -1 217 8.3196107298135757e-03 - - 6.2852732837200165e-02 -3.3706670999526978e-01 - <_> - - 0 -1 218 -1.0153040289878845e-02 - - -4.0614789724349976e-01 4.9781490117311478e-02 - <_> - - 0 -1 219 -1.4680469757877290e-04 - - 5.0883788615465164e-02 -1.3009959459304810e-01 - <_> - - 0 -1 220 -8.2523627497721463e-05 - - 9.2607311904430389e-02 -2.4926769733428955e-01 - <_> - - 0 -1 221 3.2566609978675842e-01 - - 1.7539579421281815e-02 -4.3454650044441223e-01 - <_> - - 0 -1 222 -1.7673589289188385e-01 - - 2.5083240866661072e-01 -7.6596006751060486e-02 - <_> - - 0 -1 223 -2.3230949416756630e-02 - - -8.7154947221279144e-02 4.1584961116313934e-02 - <_> - - 0 -1 224 -3.4149870276451111e-02 - - -5.3139698505401611e-01 3.1369328498840332e-02 - <_> - - 0 -1 225 7.6567879877984524e-03 - - 3.3216360956430435e-02 -4.6255061030387878e-01 - <_> - - 0 -1 226 -2.3248200304806232e-03 - - 2.8282898664474487e-01 -6.4993821084499359e-02 - <_> - - 0 -1 227 4.7129541635513306e-03 - - -5.6760489940643311e-02 4.7958448529243469e-01 - <_> - - 0 -1 228 1.2744029518216848e-03 - - -9.1237403452396393e-02 2.0502130687236786e-01 - <_> - - 0 -1 229 4.6741148829460144e-01 - - -8.2844244316220284e-03 6.4706552028656006e-01 - <_> - - 0 -1 230 2.2155679762363434e-01 - - 4.7312051057815552e-02 -4.3190020322799683e-01 - <_> - - 0 -1 231 -4.1782769560813904e-01 - - 2.3462800681591034e-01 -9.6403822302818298e-02 - <_> - - 0 -1 232 -6.9181760773062706e-03 - - -6.5903311967849731e-01 2.7876710519194603e-02 - <_> - - 0 -1 233 -9.3640871345996857e-03 - - -5.3879237174987793e-01 7.2180288843810558e-03 - <_> - - 0 -1 234 -5.8122459799051285e-02 - - -3.2751038670539856e-01 4.8486240208148956e-02 - <_> - - 0 -1 235 2.1331639587879181e-01 - - 3.8768779486417770e-02 -4.3802970647811890e-01 - <_> - - 0 -1 236 -1.3960640132427216e-01 - - -1.5554350614547729e-01 1.1561460047960281e-01 - <_> - - 0 -1 237 7.5554853538051248e-05 - - -6.5331228077411652e-02 6.6364876925945282e-02 - <_> - - 0 -1 238 -2.7876798994839191e-03 - - -3.4007069468498230e-01 4.9547281116247177e-02 - <_> - - 0 -1 239 8.9983027428388596e-03 - - -6.9725103676319122e-02 1.4761850237846375e-01 - <_> - - 0 -1 240 -1.1999090202152729e-02 - - -5.6046062707901001e-01 2.8065089136362076e-02 - <_> - - 0 -1 241 6.0021178796887398e-04 - - -1.0572089999914169e-01 1.5775670111179352e-01 - <_> - - 0 -1 242 9.2567745596170425e-03 - - 3.8413699716329575e-02 -3.8968989253044128e-01 - <_> - - 0 -1 243 3.4195061773061752e-02 - - -4.3271619826555252e-02 3.2461801171302795e-01 - <_> - - 0 -1 244 8.9471039245836437e-05 - - -1.2697300314903259e-01 1.1217790096998215e-01 - <_> - - 0 -1 245 -1.4595150016248226e-02 - - -4.6333798766136169e-01 2.1406309679150581e-02 - <_> - - 0 -1 246 -1.7585840076208115e-02 - - -6.9478857517242432e-01 1.9910650327801704e-02 - <_> - - 0 -1 247 -1.0673370212316513e-01 - - 2.2440390288829803e-01 -8.3739936351776123e-02 - <_> - - 0 -1 248 1.5211959835141897e-03 - - -7.0772707462310791e-02 2.1141250431537628e-01 - <_> - - 0 -1 249 4.4221947900950909e-03 - - -4.4280070811510086e-02 6.9831520318984985e-02 - <_> - - 0 -1 250 1.4256490394473076e-02 - - -7.4920579791069031e-02 1.8968519568443298e-01 - <_> - - 0 -1 251 -1.8462610244750977e-01 - - 4.4100850820541382e-01 -1.2149159796535969e-02 - <_> - - 0 -1 252 -3.7447769194841385e-02 - - 2.0523670315742493e-01 -6.5888322889804840e-02 - <_> - - 0 -1 253 -4.0164001286029816e-02 - - 1.1740049719810486e-01 -4.5672550797462463e-02 - <_> - - 0 -1 254 1.6907710582017899e-02 - - 3.6988031119108200e-02 -3.8368159532546997e-01 - <_> - - 0 -1 255 -2.0021539181470871e-02 - - 1.7874790728092194e-01 -6.1599351465702057e-02 - <_> - - 0 -1 256 -1.6288159787654877e-01 - - 1.2341959774494171e-01 -1.2213180214166641e-01 - <_> - - 0 -1 257 -3.4911129623651505e-02 - - -4.9633871763944626e-02 1.9904270768165588e-02 - <_> - - 0 -1 258 1.4563520252704620e-01 - - 3.0545150861144066e-02 -4.8735851049423218e-01 - <_> - - 0 -1 259 -5.5962290614843369e-02 - - 1.9134880602359772e-01 -1.5231589786708355e-02 - <_> - - 0 -1 260 4.5775189995765686e-02 - - -3.9633229374885559e-02 3.8051769137382507e-01 - <_> - - 0 -1 261 -8.0509930849075317e-03 - - -4.3102619051933289e-01 3.6386191844940186e-02 - <_> - - 0 -1 262 -2.2925350815057755e-02 - - -3.4417879581451416e-01 3.8492590188980103e-02 - <_> - - 0 -1 263 6.1498250812292099e-02 - - -1.6033710911870003e-02 5.0832337141036987e-01 - <_> - - 0 -1 264 -3.6888670176267624e-02 - - 3.9321890473365784e-01 -4.0520060807466507e-02 - <_> - - 0 -1 265 -5.3545171394944191e-03 - - 2.5463691353797913e-01 -1.1604879796504974e-01 - <_> - - 0 -1 266 -2.8639370575547218e-03 - - -4.9273601174354553e-01 2.9153689742088318e-02 - <_> - 105 - -1.6688350439071655e+00 - - <_> - - 0 -1 267 -1.4266750216484070e-01 - - 4.3372631072998047e-01 -3.4658440947532654e-01 - <_> - - 0 -1 268 1.2835499644279480e-01 - - -4.6544489264488220e-01 1.2816609442234039e-01 - <_> - - 0 -1 269 -3.6054801195859909e-02 - - 4.2594429850578308e-01 -1.7720609903335571e-01 - <_> - - 0 -1 270 -2.0345430821180344e-02 - - 1.5119360387325287e-01 -1.2275329977273941e-01 - <_> - - 0 -1 271 1.7666049301624298e-01 - - 1.5241350233554840e-01 -4.2538949847221375e-01 - <_> - - 0 -1 272 -1.6737949848175049e-01 - - 1.9125799834728241e-01 -1.8758560717105865e-01 - <_> - - 0 -1 273 2.9252300038933754e-02 - - -1.7955209314823151e-01 2.1316510438919067e-01 - <_> - - 0 -1 274 -1.5593099594116211e-01 - - 3.9090821146965027e-01 -6.6500350832939148e-02 - <_> - - 0 -1 275 1.6342889517545700e-02 - - -8.5122779011726379e-02 4.2280659079551697e-01 - <_> - - 0 -1 276 8.9803266746457666e-05 - - -2.4278439581394196e-01 1.0720120370388031e-01 - <_> - - 0 -1 277 1.1503130197525024e-01 - - -2.8022350743412971e-03 -2.7832890625000000e+03 - <_> - - 0 -1 278 2.8660349926212803e-05 - - -1.6912069916725159e-01 8.9088812470436096e-02 - <_> - - 0 -1 279 2.8660349926212803e-05 - - -2.9618909955024719e-01 9.9382899701595306e-02 - <_> - - 0 -1 280 -1.0209850035607815e-02 - - -4.8395550251007080e-01 5.6625138968229294e-02 - <_> - - 0 -1 281 -1.4060369692742825e-02 - - -4.1411420702934265e-01 6.3427872955799103e-02 - <_> - - 0 -1 282 -1.3348869979381561e-02 - - -4.6387439966201782e-01 2.8384190052747726e-02 - <_> - - 0 -1 283 -1.2555249966681004e-02 - - -6.1879467964172363e-01 4.2754668742418289e-02 - <_> - - 0 -1 284 2.7381330728530884e-02 - - -5.2704811096191406e-02 4.1978329420089722e-01 - <_> - - 0 -1 285 -4.6162471175193787e-02 - - 3.6497661471366882e-01 -7.2426289319992065e-02 - <_> - - 0 -1 286 -1.3097880408167839e-02 - - -5.7633280754089355e-01 4.7891929745674133e-02 - <_> - - 0 -1 287 -2.8415530920028687e-02 - - -6.0065191984176636e-01 4.4460929930210114e-02 - <_> - - 0 -1 288 -6.3479221425950527e-03 - - 3.4814509749412537e-01 -8.9059613645076752e-02 - <_> - - 0 -1 289 -9.7118411213159561e-03 - - -5.1781427860260010e-01 5.6316409260034561e-02 - <_> - - 0 -1 290 -2.1698420867323875e-02 - - 3.0704519152641296e-01 -9.7163833677768707e-02 - <_> - - 0 -1 291 -4.4276248663663864e-02 - - 2.5823259353637695e-01 -1.0374239832162857e-01 - <_> - - 0 -1 292 1.5846580266952515e-02 - - -1.1106160283088684e-01 1.7839249968528748e-01 - <_> - - 0 -1 293 -2.1498650312423706e-02 - - 3.4927240014076233e-01 -7.4306637048721313e-02 - <_> - - 0 -1 294 -2.9085460118949413e-03 - - -3.6909541487693787e-01 6.8516843020915985e-02 - <_> - - 0 -1 295 -3.1789109110832214e-02 - - 2.3799909651279449e-01 -1.1433179676532745e-01 - <_> - - 0 -1 296 1.0769370011985302e-02 - - 3.7151031196117401e-02 -2.5693479180335999e-01 - <_> - - 0 -1 297 -4.5090089552104473e-03 - - -5.7896959781646729e-01 4.4200599193572998e-02 - <_> - - 0 -1 298 -5.3212768398225307e-03 - - 8.4435231983661652e-02 -6.3949279487133026e-02 - <_> - - 0 -1 299 2.2673929110169411e-02 - - 5.1544409245252609e-02 -4.2098081111907959e-01 - <_> - - 0 -1 300 6.8509699776768684e-03 - - -3.7454128265380859e-02 4.5131939649581909e-01 - <_> - - 0 -1 301 9.6230360213667154e-05 - - -2.0744919776916504e-01 1.0465460270643234e-01 - <_> - - 0 -1 302 -2.1092059090733528e-02 - - 2.9160910844802856e-01 -6.2598362565040588e-02 - <_> - - 0 -1 303 -1.3403449952602386e-01 - - 2.1969069540500641e-01 -8.8791713118553162e-02 - <_> - - 0 -1 304 -2.5435289368033409e-02 - - 4.0824308991432190e-01 -2.4545410647988319e-02 - <_> - - 0 -1 305 1.0543379932641983e-02 - - -8.7642289698123932e-02 2.7179768681526184e-01 - <_> - - 0 -1 306 9.4132553786039352e-03 - - 1.4178940095007420e-02 -4.5865899324417114e-01 - <_> - - 0 -1 307 8.5997307905927300e-05 - - -2.3912850022315979e-01 9.1947212815284729e-02 - <_> - - 0 -1 308 1.0819079761859030e-04 - - -1.0928899794816971e-01 1.1509460210800171e-01 - <_> - - 0 -1 309 2.4240869283676147e-01 - - -6.7185372114181519e-02 2.8136798739433289e-01 - <_> - - 0 -1 310 -4.4038531184196472e-01 - - -4.3575769662857056e-01 2.1214749664068222e-02 - <_> - - 0 -1 311 -8.7453149259090424e-02 - - 1.1308129876852036e-01 -1.8478089570999146e-01 - <_> - - 0 -1 312 -4.1170339100062847e-03 - - 2.5076529383659363e-01 -3.2897919416427612e-02 - <_> - - 0 -1 313 -2.6375779882073402e-02 - - 3.1278228759765625e-01 -5.9065271168947220e-02 - <_> - - 0 -1 314 -7.3441797867417336e-03 - - -4.7725179791450500e-01 3.7147458642721176e-02 - <_> - - 0 -1 315 3.6828289012191817e-05 - - -1.3358670473098755e-01 1.3294130563735962e-01 - <_> - - 0 -1 316 1.0050609707832336e-02 - - -4.6177990734577179e-02 2.8381499648094177e-01 - <_> - - 0 -1 317 -1.0713540017604828e-02 - - -4.3290948867797852e-01 4.2332980781793594e-02 - <_> - - 0 -1 318 -1.0501730255782604e-02 - - -2.1639239788055420e-01 4.1059028357267380e-02 - <_> - - 0 -1 319 -1.7940669786185026e-03 - - 1.2304940074682236e-01 -1.3850529491901398e-01 - <_> - - 0 -1 320 1.5323059633374214e-02 - - 2.8011020272970200e-02 -3.7447929382324219e-01 - <_> - - 0 -1 321 -8.3098020404577255e-03 - - -5.2052259445190430e-01 2.8341950848698616e-02 - <_> - - 0 -1 322 3.0231740325689316e-02 - - -6.6902980208396912e-02 2.5790691375732422e-01 - <_> - - 0 -1 323 1.0883569717407227e-02 - - 6.2571577727794647e-02 -2.6860889792442322e-01 - <_> - - 0 -1 324 9.5374789088964462e-03 - - 2.9198259115219116e-02 -4.7998219728469849e-01 - <_> - - 0 -1 325 -3.9999200962483883e-03 - - 2.4949370324611664e-01 -6.5544649958610535e-02 - <_> - - 0 -1 326 9.2205414548516273e-03 - - 3.9968650788068771e-02 -3.7524449825286865e-01 - <_> - - 0 -1 327 -3.2748740166425705e-02 - - 2.6545938849449158e-01 -6.3016481697559357e-02 - <_> - - 0 -1 328 -2.3801359347999096e-03 - - 1.2308929860591888e-01 -2.7479890733957291e-02 - <_> - - 0 -1 329 1.6849349485710263e-03 - - -7.6166503131389618e-02 2.2750720381736755e-01 - <_> - - 0 -1 330 7.1630808524787426e-03 - - 3.9477579295635223e-02 -4.4354990124702454e-01 - <_> - - 0 -1 331 1.6813669353723526e-02 - - 3.3588510006666183e-02 -3.9953568577766418e-01 - <_> - - 0 -1 332 3.2795818697195500e-05 - - -1.5435990691184998e-01 9.5962576568126678e-02 - <_> - - 0 -1 333 -1.9717039540410042e-03 - - 2.3365209996700287e-01 -5.9957198798656464e-02 - <_> - - 0 -1 334 -2.6993690058588982e-02 - - -4.1374289989471436e-01 4.2008690536022186e-02 - <_> - - 0 -1 335 1.4177109301090240e-01 - - 3.9520148187875748e-02 -3.4029808640480042e-01 - <_> - - 0 -1 336 -1.3679260388016701e-02 - - -1.6057309508323669e-01 3.4863740205764771e-02 - <_> - - 0 -1 337 2.9184529557824135e-02 - - 4.3370950967073441e-02 -4.0030288696289062e-01 - <_> - - 0 -1 338 1.1129399761557579e-02 - - -7.8534290194511414e-02 1.7960290610790253e-01 - <_> - - 0 -1 339 -1.0935500264167786e-02 - - -3.6025050282478333e-01 4.2995098978281021e-02 - <_> - - 0 -1 340 -3.0513479941873811e-05 - - 8.9370213449001312e-02 -4.1889280080795288e-02 - <_> - - 0 -1 341 3.2795818697195500e-05 - - -1.8075449764728546e-01 9.5909386873245239e-02 - <_> - - 0 -1 342 -2.3117760196328163e-02 - - -2.6796799898147583e-01 1.0017570108175278e-02 - <_> - - 0 -1 343 1.3803930021822453e-02 - - 3.0247809365391731e-02 -4.1577160358428955e-01 - <_> - - 0 -1 344 1.4790579676628113e-02 - - -6.2628433108329773e-02 1.7893029749393463e-01 - <_> - - 0 -1 345 -1.4307799935340881e-01 - - -1.6115669906139374e-01 8.9231662452220917e-02 - <_> - - 0 -1 346 1.9987529143691063e-02 - - -4.7062009572982788e-02 1.6109189391136169e-01 - <_> - - 0 -1 347 1.4205900020897388e-02 - - 2.3043379187583923e-02 -5.4757040739059448e-01 - <_> - - 0 -1 348 -1.7248879885300994e-03 - - 9.4482786953449249e-02 -4.8485349863767624e-02 - <_> - - 0 -1 349 -1.3548379763960838e-02 - - 1.2788389623165131e-01 -9.9656976759433746e-02 - <_> - - 0 -1 350 6.2871202826499939e-02 - - 4.1690871119499207e-02 -3.6751130223274231e-01 - <_> - - 0 -1 351 -6.9153852760791779e-02 - - 2.7378571033477783e-01 -6.2963612377643585e-02 - <_> - - 0 -1 352 -2.1734459698200226e-01 - - 1.8304589390754700e-01 -9.9257007241249084e-02 - <_> - - 0 -1 353 2.7469780296087265e-02 - - -1.9286830723285675e-01 7.5987569987773895e-02 - <_> - - 0 -1 354 4.6957340091466904e-02 - - -1.8775250762701035e-02 4.6314349770545959e-01 - <_> - - 0 -1 355 1.8086720257997513e-02 - - -5.2328471094369888e-02 2.8864291310310364e-01 - <_> - - 0 -1 356 -1.3927269726991653e-02 - - 2.5085431337356567e-01 -1.9651040434837341e-01 - <_> - - 0 -1 357 -1.2526209652423859e-01 - - 1.4717139303684235e-01 -9.1146282851696014e-02 - <_> - - 0 -1 358 -1.0891130194067955e-02 - - -1.2665599584579468e-01 1.0399430058896542e-02 - <_> - - 0 -1 359 1.0924959555268288e-02 - - -3.5003058612346649e-02 4.4608950614929199e-01 - <_> - - 0 -1 360 3.2539550215005875e-02 - - 1.8497619777917862e-02 -5.9167790412902832e-01 - <_> - - 0 -1 361 -2.0845759660005569e-02 - - -3.9082339406013489e-01 3.4703880548477173e-02 - <_> - - 0 -1 362 -2.3641270399093628e-01 - - 4.8828721046447754e-01 -3.0029779300093651e-02 - <_> - - 0 -1 363 -1.5634840726852417e-01 - - -3.3450639247894287e-01 4.0134359151124954e-02 - <_> - - 0 -1 364 -4.2001541703939438e-02 - - 8.6142227053642273e-02 -2.4942040443420410e-02 - <_> - - 0 -1 365 2.5715960655361414e-03 - - -4.8461031168699265e-02 2.3894819617271423e-01 - <_> - - 0 -1 366 -1.7130700871348381e-02 - - -3.2887008786201477e-01 4.8260189592838287e-02 - <_> - - 0 -1 367 1.1991130188107491e-02 - - 3.7000309675931931e-02 -3.0085611343383789e-01 - <_> - - 0 -1 368 -1.0165110230445862e-02 - - 2.1159230172634125e-01 -1.3456389307975769e-01 - <_> - - 0 -1 369 3.1752940267324448e-02 - - -2.5855910032987595e-02 5.6194078922271729e-01 - <_> - - 0 -1 370 3.5542049445211887e-03 - - 7.7353782951831818e-02 -2.3569710552692413e-01 - <_> - - 0 -1 371 1.5985440462827682e-02 - - 3.7367980927228928e-02 -3.2395151257514954e-01 - <_> - 126 - -1.6429220438003540e+00 - - <_> - - 0 -1 372 -8.3694636821746826e-02 - - 3.4100440144538879e-01 -3.7553939223289490e-01 - <_> - - 0 -1 373 -1.3659610413014889e-02 - - 2.7409899234771729e-01 -2.1383710205554962e-01 - <_> - - 0 -1 374 -1.2971660122275352e-02 - - 2.8143510222434998e-01 -2.6921510696411133e-01 - <_> - - 0 -1 375 -2.4979710578918457e-02 - - 1.7793020606040955e-01 -1.1710070073604584e-01 - <_> - - 0 -1 376 -4.0136750787496567e-02 - - 2.8855401277542114e-01 -1.9427180290222168e-01 - <_> - - 0 -1 377 -6.0740387998521328e-03 - - 1.5903720259666443e-01 -1.4931740239262581e-02 - <_> - - 0 -1 378 2.8471080586314201e-02 - - -4.4332811236381531e-01 7.4799977242946625e-02 - <_> - - 0 -1 379 1.6766659915447235e-02 - - -6.0499768704175949e-02 4.2109870910644531e-01 - <_> - - 0 -1 380 -7.2914727032184601e-02 - - 2.0749080181121826e-01 -1.4727330207824707e-01 - <_> - - 0 -1 381 1.7743000760674477e-02 - - -4.8589050769805908e-02 1.1596550047397614e-01 - <_> - - 0 -1 382 -2.9501529410481453e-02 - - 2.9439669847488403e-01 -9.6627213060855865e-02 - <_> - - 0 -1 383 4.0625121444463730e-02 - - -2.6239100843667984e-02 4.6830970048904419e-01 - <_> - - 0 -1 384 -2.1779349073767662e-02 - - 3.1120860576629639e-01 -1.0223499685525894e-01 - <_> - - 0 -1 385 3.4435780253261328e-03 - - 5.6111920624971390e-02 -4.1161030530929565e-01 - <_> - - 0 -1 386 -5.5878269486129284e-03 - - 2.9298371076583862e-01 -9.6122913062572479e-02 - <_> - - 0 -1 387 -4.7618029639124870e-03 - - -4.6502849459648132e-01 5.9193320572376251e-02 - <_> - - 0 -1 388 -5.9781860560178757e-02 - - 3.5532829165458679e-01 -8.0377146601676941e-02 - <_> - - 0 -1 389 6.0978909023106098e-03 - - -1.6692450270056725e-02 1.6469989717006683e-01 - <_> - - 0 -1 390 -2.7368629351258278e-02 - - 2.6564338803291321e-01 -1.0004770010709763e-01 - <_> - - 0 -1 391 8.0997692421078682e-03 - - 1.8760479986667633e-02 -4.7523689270019531e-01 - <_> - - 0 -1 392 -2.5963999796658754e-03 - - -3.5978320240974426e-01 6.4545221626758575e-02 - <_> - - 0 -1 393 3.1593199819326401e-02 - - -3.7798259407281876e-02 2.3075990378856659e-01 - <_> - - 0 -1 394 1.0456099698785692e-04 - - -2.8685820102691650e-01 8.7096959352493286e-02 - <_> - - 0 -1 395 -5.1906198263168335e-02 - - 8.3963796496391296e-02 -2.0532630383968353e-02 - <_> - - 0 -1 396 2.4498499929904938e-02 - - -8.2814618945121765e-02 2.8475210070610046e-01 - <_> - - 0 -1 397 1.2566380202770233e-02 - - -4.5279160141944885e-02 2.1674649417400360e-01 - <_> - - 0 -1 398 -9.1318622231483459e-02 - - -4.4230499863624573e-01 4.7104880213737488e-02 - <_> - - 0 -1 399 6.6391900181770325e-03 - - 2.9059579595923424e-02 -5.2252948284149170e-01 - <_> - - 0 -1 400 1.7127700150012970e-02 - - 2.7933819219470024e-02 -5.7958590984344482e-01 - <_> - - 0 -1 401 -6.0757698520319536e-05 - - 1.0102690011262894e-01 -9.3878470361232758e-02 - <_> - - 0 -1 402 7.7282187703531235e-05 - - -1.3995659351348877e-01 1.4235240221023560e-01 - <_> - - 0 -1 403 -4.5266721397638321e-02 - - -1.5958879888057709e-01 1.3019920326769352e-02 - <_> - - 0 -1 404 -1.2739590369164944e-02 - - -4.1836729645729065e-01 4.6371258795261383e-02 - <_> - - 0 -1 405 4.7306739725172520e-03 - - -1.4719159901142120e-01 1.2549529969692230e-01 - <_> - - 0 -1 406 -6.8478072062134743e-03 - - -2.8655201196670532e-01 6.4936019480228424e-02 - <_> - - 0 -1 407 -1.4478339813649654e-02 - - -5.5746442079544067e-01 3.1902320683002472e-02 - <_> - - 0 -1 408 2.5321850553154945e-02 - - -5.1969718188047409e-02 4.0317040681838989e-01 - <_> - - 0 -1 409 1.4498929958790541e-03 - - -7.1278862655162811e-02 2.0445279777050018e-01 - <_> - - 0 -1 410 9.1836787760257721e-05 - - -1.3836619257926941e-01 1.3376340270042419e-01 - <_> - - 0 -1 411 8.9083143393509090e-05 - - -7.5781263411045074e-02 1.0304410010576248e-01 - <_> - - 0 -1 412 -8.0758632975630462e-05 - - 1.6445839405059814e-01 -1.1202610284090042e-01 - <_> - - 0 -1 413 8.9285433292388916e-02 - - 3.0930649489164352e-02 -5.7430011034011841e-01 - <_> - - 0 -1 414 1.5883229672908783e-02 - - -4.3224731087684631e-01 3.4075301140546799e-02 - <_> - - 0 -1 415 -1.4171909540891647e-02 - - 2.0276209712028503e-01 -7.9184897243976593e-02 - <_> - - 0 -1 416 3.5720940679311752e-02 - - -9.0391501784324646e-02 2.1999590098857880e-01 - <_> - - 0 -1 417 5.3087039850652218e-03 - - 2.1282069385051727e-02 -5.3097438812255859e-01 - <_> - - 0 -1 418 1.0967809706926346e-02 - - 3.4793078899383545e-02 -4.3127518892288208e-01 - <_> - - 0 -1 419 3.3630009740591049e-02 - - -6.4378000795841217e-02 2.2569869458675385e-01 - <_> - - 0 -1 420 1.1750670149922371e-02 - - 3.3364009112119675e-02 -4.9996230006217957e-01 - <_> - - 0 -1 421 -1.4994719531387091e-03 - - 2.1139480173587799e-01 -7.8302331268787384e-02 - <_> - - 0 -1 422 -1.8384349346160889e-01 - - 2.9695770144462585e-01 -5.3062479943037033e-02 - <_> - - 0 -1 423 -2.6374959945678711e-01 - - 2.0995129644870758e-01 -7.6504513621330261e-02 - <_> - - 0 -1 424 -4.7229680418968201e-01 - - -6.0007989406585693e-01 2.5197599083185196e-02 - <_> - - 0 -1 425 4.8492550849914551e-02 - - -3.1335938721895218e-02 2.7855190634727478e-01 - <_> - - 0 -1 426 -3.4002509713172913e-01 - - 2.3851110041141510e-01 -6.6435709595680237e-02 - <_> - - 0 -1 427 -1.1414799839258194e-02 - - -2.5477099418640137e-01 6.8611912429332733e-02 - <_> - - 0 -1 428 2.1057009696960449e-02 - - -4.4789239764213562e-02 3.5822269320487976e-01 - <_> - - 0 -1 429 -1.3073880109004676e-04 - - 1.0799950361251831e-01 -1.4292159676551819e-01 - <_> - - 0 -1 430 -1.6146369278430939e-02 - - -4.4975531101226807e-01 3.1903188675642014e-02 - <_> - - 0 -1 431 2.6404859498143196e-02 - - 3.0780889093875885e-02 -2.3807209730148315e-01 - <_> - - 0 -1 432 -1.4983680099248886e-02 - - -3.1624558568000793e-01 5.2957501262426376e-02 - <_> - - 0 -1 433 -6.6260308958590031e-03 - - 9.4783961772918701e-02 -3.7947028875350952e-02 - <_> - - 0 -1 434 9.4577856361865997e-03 - - -6.3235759735107422e-02 2.7814188599586487e-01 - <_> - - 0 -1 435 2.8465919196605682e-02 - - -4.0209379047155380e-02 2.9379189014434814e-01 - <_> - - 0 -1 436 3.2882608473300934e-02 - - -4.1350640356540680e-02 3.3133140206336975e-01 - <_> - - 0 -1 437 -8.3604697138071060e-03 - - -4.0812259912490845e-01 3.3069811761379242e-02 - <_> - - 0 -1 438 -3.0450399965047836e-02 - - 2.1827210485935211e-01 -7.1721799671649933e-02 - <_> - - 0 -1 439 -5.8005149476230145e-03 - - -2.9562330245971680e-01 3.7087250500917435e-02 - <_> - - 0 -1 440 4.8168208450078964e-03 - - 3.2777469605207443e-02 -4.2083171010017395e-01 - <_> - - 0 -1 441 1.5842430293560028e-03 - - -6.9716259837150574e-02 1.9365569949150085e-01 - <_> - - 0 -1 442 8.4104435518383980e-03 - - 2.9692530632019043e-02 -5.0313138961791992e-01 - <_> - - 0 -1 443 -1.0347180068492889e-04 - - 9.8363690078258514e-02 -8.6907006800174713e-02 - <_> - - 0 -1 444 8.2377959042787552e-03 - - 3.6999549716711044e-02 -3.8527131080627441e-01 - <_> - - 0 -1 445 1.1734689906006679e-04 - - -6.5492406487464905e-02 6.2266398221254349e-02 - <_> - - 0 -1 446 -9.8627153784036636e-04 - - 1.8917119503021240e-01 -8.0425269901752472e-02 - <_> - - 0 -1 447 -8.6078172898851335e-05 - - 8.2447282969951630e-02 -9.5376200973987579e-02 - <_> - - 0 -1 448 5.6891320273280144e-03 - - 3.3346530050039291e-02 -4.0205308794975281e-01 - <_> - - 0 -1 449 1.0112339805345982e-04 - - -1.0284639894962311e-01 1.1317410320043564e-01 - <_> - - 0 -1 450 -1.5918860211968422e-02 - - 1.3964639604091644e-01 -1.0537520051002502e-01 - <_> - - 0 -1 451 -1.0231309715891257e-04 - - 1.1990199983119965e-01 -2.0759420096874237e-01 - <_> - - 0 -1 452 -9.1397319920361042e-04 - - 1.6179299354553223e-01 -7.5580276548862457e-02 - <_> - - 0 -1 453 6.6993040964007378e-03 - - 2.5001080706715584e-02 -1.6416229307651520e-01 - <_> - - 0 -1 454 1.2699300423264503e-02 - - 2.2695040330290794e-02 -5.2739512920379639e-01 - <_> - - 0 -1 455 -1.3283169828355312e-02 - - -4.1160929203033447e-01 2.7053929865360260e-02 - <_> - - 0 -1 456 1.0245139710605145e-03 - - -8.0925337970256805e-02 1.6091230511665344e-01 - <_> - - 0 -1 457 8.1607067841105163e-05 - - -6.5392106771469116e-02 9.4981692731380463e-02 - <_> - - 0 -1 458 -2.1534129045903683e-03 - - 2.3994359374046326e-01 -6.9839999079704285e-02 - <_> - - 0 -1 459 -2.9751509428024292e-02 - - -6.1123019456863403e-01 1.7478989437222481e-02 - <_> - - 0 -1 460 -1.3032819330692291e-01 - - -2.5296679139137268e-01 4.5886538922786713e-02 - <_> - - 0 -1 461 -3.8392931222915649e-02 - - 1.5026639401912689e-01 -8.3300203084945679e-02 - <_> - - 0 -1 462 -2.0637670531868935e-02 - - -4.7749769687652588e-01 2.7316639199852943e-02 - <_> - - 0 -1 463 -9.2679895460605621e-03 - - 1.4952409267425537e-01 -5.3084261715412140e-02 - <_> - - 0 -1 464 1.2076119892299175e-02 - - -7.3878012597560883e-02 1.7311289906501770e-01 - <_> - - 0 -1 465 1.4252300374209881e-02 - - 1.0700870305299759e-02 -4.8483529686927795e-01 - <_> - - 0 -1 466 7.9848906025290489e-03 - - 3.1557928770780563e-02 -3.9823979139328003e-01 - <_> - - 0 -1 467 -7.6416457886807621e-05 - - 9.5197781920433044e-02 -6.6096171736717224e-02 - <_> - - 0 -1 468 9.6317751740571111e-05 - - -1.0664629936218262e-01 1.2682129442691803e-01 - <_> - - 0 -1 469 3.1491980189457536e-04 - - -5.2514318376779556e-02 2.4523379281163216e-02 - <_> - - 0 -1 470 5.1320712082087994e-03 - - -9.4310060143470764e-02 1.1926410347223282e-01 - <_> - - 0 -1 471 -7.8906886279582977e-02 - - 1.8964789807796478e-01 -6.1664801090955734e-02 - <_> - - 0 -1 472 -1.4321829658001661e-03 - - 1.4567589759826660e-01 -7.5513087213039398e-02 - <_> - - 0 -1 473 -4.5103628188371658e-02 - - -4.8482489585876465e-01 8.3793140947818756e-03 - <_> - - 0 -1 474 3.9267681131605059e-05 - - -9.8394133150577545e-02 1.1265549808740616e-01 - <_> - - 0 -1 475 -1.7501650378108025e-02 - - -4.4661688804626465e-01 5.6442890316247940e-02 - <_> - - 0 -1 476 2.5849869474768639e-02 - - 2.2946629673242569e-02 -4.1963219642639160e-01 - <_> - - 0 -1 477 -5.6344410404562950e-03 - - 3.7022929638624191e-02 -9.1434329748153687e-02 - <_> - - 0 -1 478 -1.6525749862194061e-01 - - -3.2120141386985779e-01 3.3446568995714188e-02 - <_> - - 0 -1 479 -7.4969837442040443e-05 - - 1.0247570276260376e-01 -1.3333749771118164e-01 - <_> - - 0 -1 480 -1.6051430255174637e-02 - - -2.6871579885482788e-01 3.8832820951938629e-02 - <_> - - 0 -1 481 4.8495661467313766e-02 - - -1.7611419782042503e-02 4.3210458755493164e-01 - <_> - - 0 -1 482 -5.8027990162372589e-02 - - 5.6749457120895386e-01 -1.8929490819573402e-02 - <_> - - 0 -1 483 9.3509042635560036e-03 - - -8.1999160349369049e-02 1.2645019590854645e-01 - <_> - - 0 -1 484 7.2834091261029243e-03 - - 3.6080401390790939e-02 -3.0698621273040771e-01 - <_> - - 0 -1 485 -3.6525551229715347e-02 - - 5.9447780251502991e-02 -6.5544642508029938e-02 - <_> - - 0 -1 486 -2.2749549243599176e-03 - - 2.0536370575428009e-01 -5.0366468727588654e-02 - <_> - - 0 -1 487 -4.5571658760309219e-02 - - -3.6782819032669067e-01 2.9857050627470016e-02 - <_> - - 0 -1 488 7.8613593359477818e-05 - - -1.0129989683628082e-01 9.8839581012725830e-02 - <_> - - 0 -1 489 7.4493337888270617e-04 - - 1.0422939807176590e-01 -2.8243300318717957e-01 - <_> - - 0 -1 490 6.7769076849799603e-05 - - -1.0194019973278046e-01 1.0684160143136978e-01 - <_> - - 0 -1 491 1.4976429753005505e-02 - - -5.4828610271215439e-02 1.1241599917411804e-01 - <_> - - 0 -1 492 -1.6552510205656290e-03 - - -2.5917539000511169e-01 4.0221069008111954e-02 - <_> - - 0 -1 493 -1.4255680143833160e-02 - - -3.6706781387329102e-01 1.6172470524907112e-02 - <_> - - 0 -1 494 -2.0518230739980936e-03 - - 1.9269070029258728e-01 -4.7873228788375854e-02 - <_> - - 0 -1 495 1.3053719699382782e-01 - - 6.2902332283556461e-03 -3.7563058733940125e-01 - <_> - - 0 -1 496 -8.3324328064918518e-02 - - -1.1892479658126831e-01 9.3024402856826782e-02 - <_> - - 0 -1 497 2.4922129511833191e-01 - - 7.7079031616449356e-03 -7.7056437730789185e-01 - <_> - 133 - -1.5156250000000000e+00 - - <_> - - 0 -1 498 -1.4404890127480030e-02 - - 3.4178748726844788e-01 -3.0290880799293518e-01 - <_> - - 0 -1 499 2.2667409479618073e-01 - - -3.3072739839553833e-01 1.6360230743885040e-01 - <_> - - 0 -1 500 -4.6934150159358978e-02 - - 2.7088809013366699e-01 -2.5283458828926086e-01 - <_> - - 0 -1 501 -7.4530718848109245e-03 - - 4.4813731312751770e-01 -6.0667719691991806e-02 - <_> - - 0 -1 502 -2.1492090076208115e-02 - - 1.8971429765224457e-01 -2.2000360488891602e-01 - <_> - - 0 -1 503 -5.7815029285848141e-03 - - 8.8426098227500916e-02 -3.0627530068159103e-02 - <_> - - 0 -1 504 3.9674431085586548e-02 - - -5.4195029661059380e-03 -1.4207619628906250e+03 - <_> - - 0 -1 505 1.3627589680254459e-02 - - -9.1195777058601379e-02 4.8344880342483521e-01 - <_> - - 0 -1 506 -6.5549151040613651e-03 - - 3.4027290344238281e-01 -1.1481580138206482e-01 - <_> - - 0 -1 507 5.1418822258710861e-03 - - -2.1465690433979034e-01 1.5631480515003204e-01 - <_> - - 0 -1 508 -7.1714469231665134e-03 - - 2.8908538818359375e-01 -1.1485029757022858e-01 - <_> - - 0 -1 509 -5.5360728874802589e-03 - - 2.1668159961700439e-01 -8.3817251026630402e-02 - <_> - - 0 -1 510 2.2245529294013977e-01 - - -6.5196859650313854e-03 -4.8679741210937500e+03 - <_> - - 0 -1 511 1.1557079851627350e-02 - - -4.5459240674972534e-02 3.0394679307937622e-01 - <_> - - 0 -1 512 -2.4631500244140625e-01 - - -5.1887249946594238e-01 5.1175419241189957e-02 - <_> - - 0 -1 513 -1.7819709610193968e-03 - - 3.4486059099435806e-02 -3.9163861423730850e-02 - <_> - - 0 -1 514 -8.7224133312702179e-03 - - 3.2543098926544189e-01 -7.6574653387069702e-02 - <_> - - 0 -1 515 -3.5658270120620728e-02 - - -5.9835660457611084e-01 3.8316339254379272e-02 - <_> - - 0 -1 516 -2.8903679922223091e-02 - - -6.3530182838439941e-01 2.4730689823627472e-02 - <_> - - 0 -1 517 -1.1647170037031174e-01 - - 1.8075680732727051e-01 -1.6352340579032898e-01 - <_> - - 0 -1 518 2.5810129940509796e-02 - - -1.0886339843273163e-01 2.3793080449104309e-01 - <_> - - 0 -1 519 -7.3603908531367779e-03 - - 1.9048359990119934e-01 -8.0013617873191833e-02 - <_> - - 0 -1 520 1.0619719978421926e-04 - - -2.4556909501552582e-01 9.5219768583774567e-02 - <_> - - 0 -1 521 -1.9719420000910759e-02 - - -4.7572961449623108e-01 3.7367928773164749e-02 - <_> - - 0 -1 522 -7.4374658288434148e-04 - - 9.1585151851177216e-02 -2.5668498873710632e-01 - <_> - - 0 -1 523 9.8219022154808044e-02 - - -7.0228829979896545e-02 3.3574399352073669e-01 - <_> - - 0 -1 524 5.3615029901266098e-03 - - 3.1214090064167976e-02 -6.7753881216049194e-01 - <_> - - 0 -1 525 -1.4868759550154209e-02 - - -5.8096957206726074e-01 4.2814828455448151e-02 - <_> - - 0 -1 526 -9.6412852406501770e-02 - - 1.3004289567470551e-01 -1.2678889930248260e-01 - <_> - - 0 -1 527 3.7894989363849163e-03 - - -6.5598629415035248e-02 1.5579770505428314e-01 - <_> - - 0 -1 528 -3.4858610015362501e-03 - - 2.1834029257297516e-01 -1.2221299856901169e-01 - <_> - - 0 -1 529 3.3498299121856689e-01 - - -2.4588150903582573e-02 1.7631460726261139e-01 - <_> - - 0 -1 530 -2.5738729164004326e-02 - - 1.4332139492034912e-01 -1.1177980154752731e-01 - <_> - - 0 -1 531 3.8507148623466492e-01 - - 1.4525639824569225e-02 -3.6296150088310242e-01 - <_> - - 0 -1 532 -2.8105419129133224e-02 - - -3.4287661314010620e-01 4.9306400120258331e-02 - <_> - - 0 -1 533 -1.8473409116268158e-02 - - -5.8932191133499146e-01 2.3863330483436584e-02 - <_> - - 0 -1 534 -1.3536689803004265e-02 - - -4.2912280559539795e-01 3.1943909823894501e-02 - <_> - - 0 -1 535 -2.3122949525713921e-02 - - 2.0142209529876709e-01 -5.0353039056062698e-02 - <_> - - 0 -1 536 2.1139409393072128e-02 - - -6.3899256289005280e-02 2.6525649428367615e-01 - <_> - - 0 -1 537 9.0067520737648010e-02 - - 1.1227900162339211e-02 -1.0319119691848755e-01 - <_> - - 0 -1 538 1.0382729582488537e-02 - - 3.5720501095056534e-02 -4.9541878700256348e-01 - <_> - - 0 -1 539 1.4825740363448858e-03 - - -2.4888260290026665e-02 2.3713339120149612e-02 - <_> - - 0 -1 540 1.2378430366516113e-01 - - 3.2288201153278351e-02 -5.3732192516326904e-01 - <_> - - 0 -1 541 -1.6116470098495483e-02 - - -4.8570340871810913e-01 2.7461700141429901e-02 - <_> - - 0 -1 542 1.5906639397144318e-02 - - 2.9240200296044350e-02 -4.5423740148544312e-01 - <_> - - 0 -1 543 -9.1634020209312439e-03 - - 1.0625120252370834e-01 -1.0080440342426300e-01 - <_> - - 0 -1 544 -1.9347349181771278e-02 - - 2.1739059686660767e-01 -6.9000512361526489e-02 - <_> - - 0 -1 545 -1.0325609706342220e-02 - - -4.0617129206657410e-01 2.8300719335675240e-02 - <_> - - 0 -1 546 -4.4596269726753235e-03 - - 1.3881349563598633e-01 -1.0167139768600464e-01 - <_> - - 0 -1 547 -1.3331240043044090e-02 - - 1.1168389767408371e-01 -5.7018160820007324e-02 - <_> - - 0 -1 548 1.4038089662790298e-02 - - -6.5833032131195068e-02 2.8126591444015503e-01 - <_> - - 0 -1 549 8.6190225556492805e-03 - - 3.1586680561304092e-02 -2.8932869434356689e-01 - <_> - - 0 -1 550 2.9386770725250244e-01 - - -4.6890590339899063e-02 3.0614718794822693e-01 - <_> - - 0 -1 551 -1.4868940226733685e-02 - - 1.7502120137214661e-01 -1.0025910101830959e-02 - <_> - - 0 -1 552 -4.3284989893436432e-02 - - 1.7161160707473755e-01 -9.6792109310626984e-02 - <_> - - 0 -1 553 1.2888509780168533e-02 - - -2.2928550839424133e-02 2.4185520410537720e-01 - <_> - - 0 -1 554 -3.4358419943600893e-03 - - 1.3518199324607849e-01 -1.0388469696044922e-01 - <_> - - 0 -1 555 -3.4035958349704742e-02 - - 2.5674760341644287e-01 -5.2028700709342957e-02 - <_> - - 0 -1 556 5.0311200320720673e-03 - - -8.4477551281452179e-02 1.6237409412860870e-01 - <_> - - 0 -1 557 -1.2706579582300037e-04 - - 1.0559009760618210e-01 -2.1253530681133270e-01 - <_> - - 0 -1 558 1.1165560223162174e-02 - - 2.6308910921216011e-02 -4.8655390739440918e-01 - <_> - - 0 -1 559 -5.2559740841388702e-02 - - 1.0851469635963440e-01 -1.1396080255508423e-01 - <_> - - 0 -1 560 -9.1416407376527786e-03 - - -4.0663948655128479e-01 3.4957569092512131e-02 - <_> - - 0 -1 561 -1.1083520203828812e-01 - - 4.1294351220130920e-01 -3.3939100801944733e-02 - <_> - - 0 -1 562 -5.7494291104376316e-03 - - 1.0465209931135178e-01 -1.1080049723386765e-01 - <_> - - 0 -1 563 -3.3833560347557068e-01 - - -4.2555201053619385e-01 2.9249390587210655e-02 - <_> - - 0 -1 564 -9.9934339523315430e-03 - - -5.3766322135925293e-01 1.9428819417953491e-02 - <_> - - 0 -1 565 -4.4573689810931683e-03 - - 1.8140719830989838e-01 -6.1098061501979828e-02 - <_> - - 0 -1 566 1.1739180423319340e-02 - - 2.7691790834069252e-02 -4.1605970263481140e-01 - <_> - - 0 -1 567 -2.0730029791593552e-03 - - 2.1511830389499664e-01 -4.4588111340999603e-02 - <_> - - 0 -1 568 4.3844608590006828e-03 - - 3.0381720513105392e-02 -3.9061251282691956e-01 - <_> - - 0 -1 569 8.9646214619278908e-03 - - 3.2070860266685486e-02 -3.7139549851417542e-01 - <_> - - 0 -1 570 4.3689231388270855e-03 - - -6.2611937522888184e-02 1.8630330264568329e-01 - <_> - - 0 -1 571 -2.2206110879778862e-02 - - -2.5213471055030823e-01 1.7384979873895645e-02 - <_> - - 0 -1 572 2.6817120611667633e-02 - - 1.8778100609779358e-02 -6.3347727060317993e-01 - <_> - - 0 -1 573 1.0099010250996798e-04 - - -8.9882403612136841e-02 9.2971943318843842e-02 - <_> - - 0 -1 574 -3.7158210761845112e-03 - - -4.4987940788269043e-01 2.5029459968209267e-02 - <_> - - 0 -1 575 -2.7535969857126474e-03 - - 2.6070469617843628e-01 -7.0969417691230774e-02 - <_> - - 0 -1 576 -2.1922899410128593e-02 - - -5.0777751207351685e-01 2.5180419906973839e-02 - <_> - - 0 -1 577 -7.0883962325751781e-04 - - -3.4276500344276428e-01 8.2241162657737732e-02 - <_> - - 0 -1 578 -1.6273240325972438e-03 - - 1.9682820141315460e-01 -6.2403131276369095e-02 - <_> - - 0 -1 579 1.4539799885824323e-03 - - 5.2250798791646957e-02 -2.9100200533866882e-01 - <_> - - 0 -1 580 1.2582080671563745e-04 - - -1.1654359847307205e-01 1.1046759784221649e-01 - <_> - - 0 -1 581 8.3695871580857784e-05 - - -5.2289471030235291e-02 6.1870351433753967e-02 - <_> - - 0 -1 582 -1.1398050264688209e-04 - - 1.5396890044212341e-01 -8.9202009141445160e-02 - <_> - - 0 -1 583 1.5188050456345081e-03 - - -6.1207320541143417e-02 1.2907339632511139e-01 - <_> - - 0 -1 584 1.5405760146677494e-02 - - 2.5000110268592834e-02 -4.4077640771865845e-01 - <_> - - 0 -1 585 -1.1019539670087397e-04 - - 1.0112199932336807e-01 -6.7201070487499237e-02 - <_> - - 0 -1 586 -1.9675830379128456e-02 - - -6.5486162900924683e-01 1.6996009275317192e-02 - <_> - - 0 -1 587 -9.9909037817269564e-04 - - 1.0255189985036850e-01 -5.9289220720529556e-02 - <_> - - 0 -1 588 1.2456219701562077e-04 - - -1.1078929901123047e-01 1.0348449647426605e-01 - <_> - - 0 -1 589 1.2445759784895927e-04 - - -9.5743909478187561e-02 8.3002902567386627e-02 - <_> - - 0 -1 590 -1.9823738839477301e-03 - - 2.1431520581245422e-01 -5.5398739874362946e-02 - <_> - - 0 -1 591 1.9654269516468048e-01 - - 3.1826499849557877e-02 -2.1685199439525604e-01 - <_> - - 0 -1 592 3.5871278960257769e-03 - - -7.4322208762168884e-02 1.4974950253963470e-01 - <_> - - 0 -1 593 1.0668500326573849e-02 - - 1.3024830259382725e-02 -3.1633579730987549e-01 - <_> - - 0 -1 594 -1.5692969784140587e-02 - - 1.8123820424079895e-01 -6.1613950878381729e-02 - <_> - - 0 -1 595 2.0100619643926620e-02 - - 4.4974848628044128e-02 -4.3339860439300537e-01 - <_> - - 0 -1 596 -9.3011429999023676e-04 - - 1.4157989621162415e-01 -7.2623051702976227e-02 - <_> - - 0 -1 597 1.2854380474891514e-04 - - -5.1621709018945694e-02 4.8192240297794342e-02 - <_> - - 0 -1 598 -1.0598390363156796e-02 - - -5.1592952013015747e-01 1.9994650036096573e-02 - <_> - - 0 -1 599 -3.3873081207275391e-02 - - -3.1708028912544250e-01 1.4665069989860058e-02 - <_> - - 0 -1 600 2.1664079278707504e-02 - - 2.8066530823707581e-02 -3.4886899590492249e-01 - <_> - - 0 -1 601 -1.6297819092869759e-02 - - 9.3040592968463898e-02 -3.0490709468722343e-02 - <_> - - 0 -1 602 -7.2641119360923767e-02 - - -4.7985389828681946e-01 2.1925760433077812e-02 - <_> - - 0 -1 603 5.9341657906770706e-03 - - -6.3595272600650787e-02 1.6068579256534576e-01 - <_> - - 0 -1 604 -1.2448200024664402e-02 - - -4.3582621216773987e-01 2.2979419678449631e-02 - <_> - - 0 -1 605 -1.4221160381566733e-04 - - 6.3076533377170563e-02 -5.0078488886356354e-02 - <_> - - 0 -1 606 1.4810540014877915e-03 - - -5.7667218148708344e-02 1.8284930288791656e-01 - <_> - - 0 -1 607 1.1081660341005772e-04 - - -4.7888830304145813e-02 6.6992476582527161e-02 - <_> - - 0 -1 608 1.5491439960896969e-02 - - 2.0301489159464836e-02 -4.8583671450614929e-01 - <_> - - 0 -1 609 8.7960972450673580e-05 - - -7.7099032700061798e-02 8.2995250821113586e-02 - <_> - - 0 -1 610 -8.1268692156299949e-04 - - 1.4406390488147736e-01 -7.3275357484817505e-02 - <_> - - 0 -1 611 2.4501960724592209e-02 - - 1.9293539226055145e-02 -2.7041348814964294e-01 - <_> - - 0 -1 612 1.5673150122165680e-01 - - 2.5848250836133957e-02 -4.0575191378593445e-01 - <_> - - 0 -1 613 -1.0019519925117493e-01 - - -1.7280450463294983e-01 2.8971340507268906e-02 - <_> - - 0 -1 614 1.6180109977722168e-01 - - 1.9680919125676155e-02 -5.0539332628250122e-01 - <_> - - 0 -1 615 -3.7529520690441132e-02 - - -3.0859738588333130e-01 2.8489660471677780e-03 - <_> - - 0 -1 616 -1.2014319747686386e-01 - - -3.2182079553604126e-01 2.8841979801654816e-02 - <_> - - 0 -1 617 -1.3690150342881680e-02 - - -1.2315540015697479e-01 3.3444989472627640e-02 - <_> - - 0 -1 618 -9.2323787510395050e-02 - - -4.9614500999450684e-01 1.8543859943747520e-02 - <_> - - 0 -1 619 5.1788990385830402e-03 - - 2.0374979823827744e-02 -1.4786289632320404e-01 - <_> - - 0 -1 620 6.2319580465555191e-03 - - -7.4262887239456177e-02 1.2185510247945786e-01 - <_> - - 0 -1 621 -7.8213810920715332e-03 - - 1.7759530246257782e-01 -5.1386699080467224e-02 - <_> - - 0 -1 622 -2.9573980718851089e-02 - - -5.0756359100341797e-01 1.9399100914597511e-02 - <_> - - 0 -1 623 -2.0324679091572762e-02 - - 1.2613779306411743e-01 -5.3594090044498444e-02 - <_> - - 0 -1 624 -1.2350369989871979e-01 - - 1.1639419943094254e-01 -8.7905816733837128e-02 - <_> - - 0 -1 625 1.0089900344610214e-01 - - -3.7132319994270802e-03 6.7068278789520264e-01 - <_> - - 0 -1 626 -3.3012818545103073e-02 - - 3.0562469363212585e-01 -3.8450431078672409e-02 - <_> - - 0 -1 627 -9.6318349242210388e-02 - - 9.8391599953174591e-02 -1.0821569710969925e-01 - <_> - - 0 -1 628 2.5214108824729919e-01 - - -2.1154910326004028e-02 4.7930648922920227e-01 - <_> - - 0 -1 629 -1.8898699432611465e-02 - - 9.6985623240470886e-02 -5.0776910036802292e-02 - <_> - - 0 -1 630 1.9470909610390663e-02 - - -6.6984340548515320e-02 1.8598070740699768e-01 - <_> - 129 - -1.5292299985885620e+00 - - <_> - - 0 -1 631 -5.1301288604736328e-01 - - 3.3763039112091064e-01 -2.2183430194854736e-01 - <_> - - 0 -1 632 7.8631602227687836e-03 - - -3.0860590934753418e-01 1.5021920204162598e-01 - <_> - - 0 -1 633 -2.0650109276175499e-02 - - 2.4393220245838165e-01 -2.7323541045188904e-01 - <_> - - 0 -1 634 3.9594681002199650e-03 - - -1.5568819642066956e-01 1.0008449852466583e-01 - <_> - - 0 -1 635 4.6596791595220566e-02 - - 1.2480390258133411e-02 -1.1247110595703125e+03 - <_> - - 0 -1 636 1.0768139734864235e-02 - - -7.4103012681007385e-02 1.0300619900226593e-01 - <_> - - 0 -1 637 8.1597883254289627e-03 - - -2.4266499280929565e-01 1.9986270368099213e-01 - <_> - - 0 -1 638 -6.2675480730831623e-03 - - 1.4820539951324463e-01 -2.9992321133613586e-01 - <_> - - 0 -1 639 5.9478268958628178e-03 - - -2.5873249769210815e-01 1.5703390538692474e-01 - <_> - - 0 -1 640 1.0514389723539352e-02 - - -1.6781389713287354e-01 2.4174839258193970e-01 - <_> - - 0 -1 641 1.2243539839982986e-01 - - -1.0682729631662369e-01 3.4612360596656799e-01 - <_> - - 0 -1 642 -1.2968529760837555e-01 - - 1.7437599599361420e-01 -9.9371053278446198e-02 - <_> - - 0 -1 643 1.0830949759110808e-04 - - -2.4865290522575378e-01 1.1169169843196869e-01 - <_> - - 0 -1 644 -3.2252158969640732e-02 - - 4.9016430974006653e-01 -4.2964339256286621e-02 - <_> - - 0 -1 645 -2.5078749284148216e-02 - - 3.1889361143112183e-01 -7.7969953417778015e-02 - <_> - - 0 -1 646 4.5832060277462006e-02 - - -1.3419570028781891e-01 1.7994479835033417e-01 - <_> - - 0 -1 647 8.3064418286085129e-03 - - 4.0255438536405563e-02 -4.5553040504455566e-01 - <_> - - 0 -1 648 4.2619768530130386e-02 - - -2.5493569672107697e-02 1.3568879663944244e-01 - <_> - - 0 -1 649 9.1548979980871081e-05 - - -1.4997710287570953e-01 1.4062370359897614e-01 - <_> - - 0 -1 650 3.5599898546934128e-02 - - -1.0049650073051453e-01 2.1603369712829590e-01 - <_> - - 0 -1 651 -1.6404399648308754e-02 - - -5.2405780553817749e-01 3.6675389856100082e-02 - <_> - - 0 -1 652 2.1164799109101295e-02 - - -3.7107881158590317e-02 1.4676739275455475e-01 - <_> - - 0 -1 653 -3.9462938904762268e-02 - - 2.6762869954109192e-01 -7.5594186782836914e-02 - <_> - - 0 -1 654 -1.7847089096903801e-02 - - 2.7940970659255981e-01 -1.5671769157052040e-02 - <_> - - 0 -1 655 3.4505259245634079e-03 - - -1.2894910573959351e-01 1.6325439512729645e-01 - <_> - - 0 -1 656 4.5687720179557800e-02 - - -2.0606290549039841e-02 2.2645039856433868e-01 - <_> - - 0 -1 657 2.1002419292926788e-02 - - -6.2005609273910522e-02 3.2014068961143494e-01 - <_> - - 0 -1 658 -3.5569739993661642e-03 - - 1.2843169271945953e-01 -8.8760308921337128e-02 - <_> - - 0 -1 659 -3.3646691590547562e-02 - - -6.8887227773666382e-01 3.4305639564990997e-02 - <_> - - 0 -1 660 1.3083280064165592e-02 - - 4.2031999677419662e-02 -5.2689850330352783e-01 - <_> - - 0 -1 661 1.6660310328006744e-02 - - 3.0601609498262405e-02 -5.3826010227203369e-01 - <_> - - 0 -1 662 -2.0924070850014687e-02 - - 1.4591710269451141e-01 -1.2979130446910858e-01 - <_> - - 0 -1 663 -6.1694860458374023e-02 - - 4.4396570324897766e-01 -3.8369540125131607e-02 - <_> - - 0 -1 664 -1.1972390115261078e-02 - - -5.6048041582107544e-01 2.3270620033144951e-02 - <_> - - 0 -1 665 1.7969259992241859e-02 - - 2.5026360526680946e-02 -5.7432591915130615e-01 - <_> - - 0 -1 666 1.5994659624993801e-03 - - -1.2418950349092484e-01 5.0742890685796738e-02 - <_> - - 0 -1 667 1.1695439927279949e-02 - - -7.6160527765750885e-02 2.0521469414234161e-01 - <_> - - 0 -1 668 -1.8982479814440012e-03 - - 8.0279447138309479e-02 -5.7309560477733612e-02 - <_> - - 0 -1 669 -1.4634410035796463e-04 - - 1.3708490133285522e-01 -1.2562429904937744e-01 - <_> - - 0 -1 670 7.8092161566019058e-03 - - 7.9615786671638489e-02 -3.4894898533821106e-01 - <_> - - 0 -1 671 -1.0443309694528580e-01 - - 2.3222529888153076e-01 -6.3237018883228302e-02 - <_> - - 0 -1 672 -2.1482400596141815e-02 - - 1.7266969382762909e-01 -5.5806308984756470e-02 - <_> - - 0 -1 673 -1.0828889906406403e-02 - - 1.2797969579696655e-01 -1.1637309938669205e-01 - <_> - - 0 -1 674 -4.2471490800380707e-02 - - -6.1273592710494995e-01 2.4606749415397644e-02 - <_> - - 0 -1 675 -3.9633461274206638e-03 - - 1.8390260636806488e-01 -8.8654592633247375e-02 - <_> - - 0 -1 676 3.5160180181264877e-02 - - -4.3068870902061462e-02 9.6340909600257874e-02 - <_> - - 0 -1 677 3.4553930163383484e-03 - - -6.2918446958065033e-02 2.4171499907970428e-01 - <_> - - 0 -1 678 -1.7584810033440590e-02 - - -6.1676180362701416e-01 1.7409879714250565e-02 - <_> - - 0 -1 679 -4.4287440180778503e-01 - - 3.0737930536270142e-01 -4.9208190292119980e-02 - <_> - - 0 -1 680 1.1836509656859562e-04 - - -5.3511910140514374e-02 8.2968451082706451e-02 - <_> - - 0 -1 681 1.2763170525431633e-04 - - -1.0692539811134338e-01 1.5963360667228699e-01 - <_> - - 0 -1 682 1.4990289928391576e-03 - - -1.0284440219402313e-01 5.9363570064306259e-02 - <_> - - 0 -1 683 -1.4185680076479912e-02 - - 1.6787010431289673e-01 -8.2064323127269745e-02 - <_> - - 0 -1 684 2.6423510164022446e-02 - - 1.5141439624130726e-02 -2.1549950540065765e-01 - <_> - - 0 -1 685 1.2152690032962710e-04 - - -2.1429139375686646e-01 6.7536190152168274e-02 - <_> - - 0 -1 686 -4.4034000486135483e-02 - - -3.8516381382942200e-01 2.7985649183392525e-02 - <_> - - 0 -1 687 2.3079359903931618e-02 - - 3.9007559418678284e-02 -3.5704460740089417e-01 - <_> - - 0 -1 688 -1.6983019188046455e-02 - - 6.1767920851707458e-02 -6.1761811375617981e-02 - <_> - - 0 -1 689 -3.9452780038118362e-02 - - -5.4356932640075684e-01 2.4140410125255585e-02 - <_> - - 0 -1 690 4.0568120777606964e-02 - - -2.8023310005664825e-02 3.5063418745994568e-01 - <_> - - 0 -1 691 -5.1757961511611938e-02 - - 3.3024019002914429e-01 -4.0171168744564056e-02 - <_> - - 0 -1 692 4.5709200203418732e-02 - - 7.3070619255304337e-03 -5.9012347459793091e-01 - <_> - - 0 -1 693 -1.5325520187616348e-02 - - -4.6291810274124146e-01 2.6863809674978256e-02 - <_> - - 0 -1 694 -3.0978990718722343e-02 - - -1.9480030238628387e-01 7.2842082008719444e-03 - <_> - - 0 -1 695 -8.9987199753522873e-03 - - -3.5020849108695984e-01 3.4169800579547882e-02 - <_> - - 0 -1 696 -2.3777019232511520e-02 - - 1.4519110321998596e-01 -9.0197078883647919e-02 - <_> - - 0 -1 697 2.7441870421171188e-02 - - -5.9784799814224243e-02 2.1248030662536621e-01 - <_> - - 0 -1 698 -1.6080979257822037e-02 - - 1.2772220373153687e-01 -1.1560890078544617e-01 - <_> - - 0 -1 699 -1.8815989606082439e-03 - - 1.8263660371303558e-01 -6.9723732769489288e-02 - <_> - - 0 -1 700 -2.0570179447531700e-02 - - 1.3511329889297485e-01 -5.6678831577301025e-02 - <_> - - 0 -1 701 2.1246779710054398e-02 - - 2.7247950434684753e-02 -4.5481869578361511e-01 - <_> - - 0 -1 702 -1.8843259662389755e-02 - - 2.0364369451999664e-01 -3.9924360811710358e-02 - <_> - - 0 -1 703 -3.1697001308202744e-02 - - 1.4882990717887878e-01 -7.5314097106456757e-02 - <_> - - 0 -1 704 -3.9388950914144516e-02 - - -4.0445148944854736e-01 3.7166859954595566e-02 - <_> - - 0 -1 705 1.6863539814949036e-02 - - 3.7964358925819397e-02 -2.9315468668937683e-01 - <_> - - 0 -1 706 -5.8874640613794327e-02 - - 2.9816859960556030e-01 -3.0451029539108276e-02 - <_> - - 0 -1 707 -1.0891259647905827e-02 - - -4.0626329183578491e-01 2.7517719194293022e-02 - <_> - - 0 -1 708 -1.0890879639191553e-04 - - 1.0424339771270752e-01 -9.9079273641109467e-02 - <_> - - 0 -1 709 -9.3655682576354593e-05 - - 1.1488509923219681e-01 -1.0301840305328369e-01 - <_> - - 0 -1 710 3.8378849625587463e-02 - - -6.6913731396198273e-02 1.5582619607448578e-01 - <_> - - 0 -1 711 -1.3334819674491882e-01 - - 1.7475730180740356e-01 -8.1824399530887604e-02 - <_> - - 0 -1 712 -2.3333270102739334e-02 - - -3.1016799807548523e-01 2.8489509597420692e-02 - <_> - - 0 -1 713 3.2015360891819000e-02 - - 3.0259899795055389e-02 -3.9357221126556396e-01 - <_> - - 0 -1 714 4.2134500108659267e-03 - - -3.0290320515632629e-02 1.9074229896068573e-01 - <_> - - 0 -1 715 1.4553000219166279e-02 - - 2.1159080788493156e-02 -4.7899720072746277e-01 - <_> - - 0 -1 716 1.6254920046776533e-04 - - -4.1702289134263992e-02 6.6818341612815857e-02 - <_> - - 0 -1 717 5.1241990178823471e-02 - - -2.5901550427079201e-02 3.8924860954284668e-01 - <_> - - 0 -1 718 -1.9014719873666763e-02 - - -6.8240302801132202e-01 7.9030347988009453e-03 - <_> - - 0 -1 719 -1.1731980339391157e-04 - - 1.0345830023288727e-01 -9.2772170901298523e-02 - <_> - - 0 -1 720 -1.2399390339851379e-02 - - -4.8494198918342590e-01 2.2405119612812996e-02 - <_> - - 0 -1 721 1.1162629816681147e-03 - - -6.2404781579971313e-02 1.5988099575042725e-01 - <_> - - 0 -1 722 -2.3414581082761288e-03 - - -5.0930368900299072e-01 5.6651391088962555e-02 - <_> - - 0 -1 723 -1.1256740253884345e-04 - - 1.0419259965419769e-01 -9.9077150225639343e-02 - <_> - - 0 -1 724 1.4960099942982197e-03 - - 5.8264009654521942e-02 -3.1069689989089966e-01 - <_> - - 0 -1 725 1.1897009972017258e-04 - - -9.6467606723308563e-02 1.1709649860858917e-01 - <_> - - 0 -1 726 -1.1693680426105857e-03 - - 1.5217749774456024e-01 -7.0818759500980377e-02 - <_> - - 0 -1 727 7.4839929584413767e-04 - - -6.9360353052616119e-02 1.5075220167636871e-01 - <_> - - 0 -1 728 -4.1113719344139099e-03 - - -2.8900811076164246e-01 1.1448180302977562e-02 - <_> - - 0 -1 729 -1.4193469542078674e-04 - - 1.1926650255918503e-01 -9.4971269369125366e-02 - <_> - - 0 -1 730 -1.1901040124939755e-04 - - 6.4288787543773651e-02 -4.7796919941902161e-02 - <_> - - 0 -1 731 1.0498589836061001e-04 - - -9.6632666885852814e-02 1.1538989841938019e-01 - <_> - - 0 -1 732 -8.3408653736114502e-03 - - 4.4604659080505371e-02 -4.0829408913850784e-02 - <_> - - 0 -1 733 8.9393332600593567e-03 - - -4.0271699428558350e-02 3.0788379907608032e-01 - <_> - - 0 -1 734 -1.0168400331167504e-04 - - 8.3439879119396210e-02 -2.9669430106878281e-02 - <_> - - 0 -1 735 1.0159109660889953e-04 - - -1.6794000566005707e-01 6.1446961015462875e-02 - <_> - - 0 -1 736 -2.0380979403853416e-02 - - -4.6373328566551208e-01 1.0819310322403908e-02 - <_> - - 0 -1 737 -1.4813670422881842e-03 - - 1.4306089282035828e-01 -6.7024730145931244e-02 - <_> - - 0 -1 738 1.0961569845676422e-02 - - -1.0202170163393021e-01 5.0610020756721497e-02 - <_> - - 0 -1 739 2.2087350953370333e-03 - - -5.7063940912485123e-02 1.7626209557056427e-01 - <_> - - 0 -1 740 1.6278350725769997e-02 - - 1.6349399462342262e-02 -2.6355540752410889e-01 - <_> - - 0 -1 741 -4.9292189069092274e-03 - - -4.0084150433540344e-01 2.4711510166525841e-02 - <_> - - 0 -1 742 -1.1716609587892890e-03 - - 8.4607273340225220e-02 -7.5489796698093414e-02 - <_> - - 0 -1 743 -2.2133199498057365e-02 - - -7.9881209135055542e-01 1.3015880249440670e-02 - <_> - - 0 -1 744 6.0050230473279953e-02 - - -3.0599929392337799e-02 6.5180040895938873e-02 - <_> - - 0 -1 745 -8.2345595583319664e-03 - - 1.3700689375400543e-01 -7.2879850864410400e-02 - <_> - - 0 -1 746 1.8302880227565765e-02 - - 3.8170479238033295e-02 -3.0564299225807190e-01 - <_> - - 0 -1 747 -1.6368640353903174e-03 - - -2.9228380322456360e-01 3.1695071607828140e-02 - <_> - - 0 -1 748 -3.6952439695596695e-02 - - -5.2291387319564819e-01 6.8037798628211021e-03 - <_> - - 0 -1 749 -2.5132870301604271e-02 - - -4.9405440688133240e-01 1.8722509965300560e-02 - <_> - - 0 -1 750 8.7387202074751258e-04 - - -6.0590930283069611e-02 1.1999309808015823e-01 - <_> - - 0 -1 751 9.7723852377384901e-05 - - -9.9694482982158661e-02 9.9611878395080566e-02 - <_> - - 0 -1 752 -3.6560039967298508e-02 - - -3.4698799252510071e-02 2.3705899715423584e-02 - <_> - - 0 -1 753 -1.4096960425376892e-01 - - -5.1033538579940796e-01 1.7134699970483780e-02 - <_> - - 0 -1 754 -1.8492950126528740e-02 - - 1.3546580076217651e-01 -3.7599481642246246e-02 - <_> - - 0 -1 755 5.4302928037941456e-03 - - -7.4597582221031189e-02 1.3267649710178375e-01 - <_> - - 0 -1 756 -2.8979010879993439e-02 - - -5.6868058443069458e-01 1.4711700379848480e-02 - <_> - - 0 -1 757 -4.1912179440259933e-03 - - 1.4587999880313873e-01 -7.6463460922241211e-02 - <_> - - 0 -1 758 9.9395290017127991e-02 - - 7.5935330241918564e-03 -3.0430629849433899e-01 - <_> - - 0 -1 759 3.4069079905748367e-02 - - -6.6836699843406677e-02 1.5439170598983765e-01 - <_> - 170 - -1.5202269554138184e+00 - - <_> - - 0 -1 760 -1.0689979791641235e-01 - - 3.0658951401710510e-01 -2.4631050229072571e-01 - <_> - - 0 -1 761 -3.0084479600191116e-02 - - 1.4610590040683746e-01 -4.8218939453363419e-02 - <_> - - 0 -1 762 -3.5000830888748169e-02 - - 3.1755268573760986e-01 -1.4478039741516113e-01 - <_> - - 0 -1 763 1.1025959998369217e-01 - - 2.1238500252366066e-02 -1.6012300550937653e-01 - <_> - - 0 -1 764 1.2484409846365452e-02 - - -2.7466261386871338e-01 1.8460549414157867e-01 - <_> - - 0 -1 765 1.5061490237712860e-02 - - -1.3149070739746094e-01 1.6390870511531830e-01 - <_> - - 0 -1 766 -2.2057349979877472e-01 - - 1.9639089703559875e-01 -2.3069189488887787e-01 - <_> - - 0 -1 767 -3.2599259167909622e-02 - - 1.2439730018377304e-01 -8.7648376822471619e-02 - <_> - - 0 -1 768 6.1759902164340019e-03 - - -3.8324919342994690e-01 9.4517536461353302e-02 - <_> - - 0 -1 769 3.0340310186147690e-02 - - -2.1559499204158783e-02 2.3994560539722443e-01 - <_> - - 0 -1 770 -2.6346590369939804e-02 - - 2.5143679976463318e-01 -1.2570610642433167e-01 - <_> - - 0 -1 771 4.7478739172220230e-02 - - -2.3006409406661987e-02 2.8789579868316650e-01 - <_> - - 0 -1 772 -3.3347800374031067e-02 - - 2.8133860230445862e-01 -1.0144259780645370e-01 - <_> - - 0 -1 773 -2.9174150899052620e-02 - - 1.7805859446525574e-01 -1.1817619949579239e-01 - <_> - - 0 -1 774 -2.8386740013957024e-02 - - 3.9562720060348511e-01 -4.9916889518499374e-02 - <_> - - 0 -1 775 1.8951019272208214e-02 - - 2.5329099968075752e-02 -5.3371077775955200e-01 - <_> - - 0 -1 776 1.4761690050363541e-02 - - 3.4711509943008423e-02 -5.0349467992782593e-01 - <_> - - 0 -1 777 -2.7541309595108032e-02 - - 2.5491359829902649e-01 -7.7761203050613403e-02 - <_> - - 0 -1 778 1.1286890134215355e-02 - - 2.7794640511274338e-02 -6.3489568233489990e-01 - <_> - - 0 -1 779 -7.1040529012680054e-01 - - -4.6786320209503174e-01 3.7275071372278035e-04 - <_> - - 0 -1 780 1.6402329504489899e-01 - - -6.7450031638145447e-02 2.5602969527244568e-01 - <_> - - 0 -1 781 8.4193330258131027e-03 - - -9.0232700109481812e-02 2.0609809458255768e-01 - <_> - - 0 -1 782 -1.4688509702682495e-01 - - 3.6004349589347839e-01 -4.9512550234794617e-02 - <_> - - 0 -1 783 -1.9554210826754570e-02 - - 3.0653059482574463e-01 -6.3451543450355530e-02 - <_> - - 0 -1 784 -1.0444919578731060e-02 - - 1.3290570676326752e-01 -1.2827059626579285e-01 - <_> - - 0 -1 785 1.1062329635024071e-02 - - 4.0686979889869690e-02 -6.2988758087158203e-01 - <_> - - 0 -1 786 -1.5040210448205471e-02 - - -5.8461701869964600e-01 2.3117769509553909e-02 - <_> - - 0 -1 787 -1.0194590140599757e-04 - - 1.1996640264987946e-01 -7.9124547541141510e-02 - <_> - - 0 -1 788 9.0414949227124453e-05 - - -1.3601270318031311e-01 1.1836279928684235e-01 - <_> - - 0 -1 789 1.6496310010552406e-02 - - 1.5407649800181389e-02 -3.3741968870162964e-01 - <_> - - 0 -1 790 1.1918049858650193e-04 - - -1.3498629629611969e-01 1.2214670330286026e-01 - <_> - - 0 -1 791 4.4636961072683334e-02 - - -3.5782538354396820e-02 3.5916471481323242e-01 - <_> - - 0 -1 792 8.9213429018855095e-03 - - -1.7042760550975800e-01 9.7737736999988556e-02 - <_> - - 0 -1 793 -2.0977169275283813e-02 - - 9.9603489041328430e-02 -4.4926621019840240e-02 - <_> - - 0 -1 794 -3.7320230156183243e-02 - - 3.2442098855972290e-01 -4.5821111649274826e-02 - <_> - - 0 -1 795 -1.9962401129305363e-03 - - 8.7733283638954163e-02 -6.3953131437301636e-02 - <_> - - 0 -1 796 1.8080769106745720e-02 - - 3.3306188881397247e-02 -4.8791229724884033e-01 - <_> - - 0 -1 797 1.8776309490203857e-01 - - -1.0865679942071438e-03 -4.6595638990402222e-01 - <_> - - 0 -1 798 2.3192439228296280e-02 - - 3.2641470432281494e-02 -4.3289509415626526e-01 - <_> - - 0 -1 799 1.0338190011680126e-02 - - -8.7577022612094879e-02 1.5071089565753937e-01 - <_> - - 0 -1 800 1.9133120775222778e-02 - - 2.5895679369568825e-02 -5.3015732765197754e-01 - <_> - - 0 -1 801 -8.1426696851849556e-05 - - 8.0925822257995605e-02 -9.6267983317375183e-02 - <_> - - 0 -1 802 1.8560849130153656e-02 - - -7.0968322455883026e-02 1.6962639987468719e-01 - <_> - - 0 -1 803 -5.5964579805731773e-03 - - -4.1663470864295959e-01 3.0378060415387154e-02 - <_> - - 0 -1 804 1.7773959785699844e-02 - - -5.4257538169622421e-02 2.2561490535736084e-01 - <_> - - 0 -1 805 -5.9832010418176651e-02 - - 2.2946140170097351e-01 -1.5503049828112125e-02 - <_> - - 0 -1 806 1.1668549850583076e-02 - - 2.5527859106659889e-02 -4.8873430490493774e-01 - <_> - - 0 -1 807 1.7624149098992348e-02 - - -3.2836209982633591e-02 4.1528310626745224e-02 - <_> - - 0 -1 808 -5.2833881229162216e-02 - - -2.8491690754890442e-01 4.6531789004802704e-02 - <_> - - 0 -1 809 -2.0954129286110401e-03 - - -4.8794639110565186e-01 5.3593020886182785e-02 - <_> - - 0 -1 810 -1.0130889859283343e-04 - - 1.1240509897470474e-01 -1.0334850102663040e-01 - <_> - - 0 -1 811 1.9346430199220777e-03 - - 4.9751780927181244e-02 -3.7111181020736694e-01 - <_> - - 0 -1 812 1.1420589726185426e-04 - - -1.2482249736785889e-01 1.6466249525547028e-01 - <_> - - 0 -1 813 -8.1585953012108803e-05 - - 9.6103258430957794e-02 -7.6807789504528046e-02 - <_> - - 0 -1 814 -2.5518139824271202e-02 - - 2.0780040323734283e-01 -6.0223940759897232e-02 - <_> - - 0 -1 815 -5.0616629421710968e-02 - - -6.6633218526840210e-01 1.2990869581699371e-02 - <_> - - 0 -1 816 -1.1321919737383723e-04 - - 1.1620879918336868e-01 -1.0486110299825668e-01 - <_> - - 0 -1 817 -4.8787519335746765e-03 - - 1.5851399302482605e-01 -9.6751511096954346e-02 - <_> - - 0 -1 818 1.2007780373096466e-02 - - 3.2958209514617920e-02 -3.6023509502410889e-01 - <_> - - 0 -1 819 -3.9686369709670544e-03 - - 5.8895830065011978e-02 -2.0575989782810211e-01 - <_> - - 0 -1 820 1.1987470090389252e-01 - - -9.4282791018486023e-02 1.2716309726238251e-01 - <_> - - 0 -1 821 -1.5101430006325245e-02 - - 1.5447859466075897e-01 -9.8814398050308228e-02 - <_> - - 0 -1 822 -3.5253658890724182e-02 - - 1.9022279977798462e-01 -6.3464179635047913e-02 - <_> - - 0 -1 823 -8.2858894020318985e-03 - - 1.9287189841270447e-01 -2.4786539375782013e-02 - <_> - - 0 -1 824 -2.7197180315852165e-03 - - 1.7318749427795410e-01 -7.0693030953407288e-02 - <_> - - 0 -1 825 -1.1073380301240832e-04 - - 7.6669231057167053e-02 -7.7580787241458893e-02 - <_> - - 0 -1 826 -1.2925160117447376e-02 - - -5.0933468341827393e-01 2.3266840726137161e-02 - <_> - - 0 -1 827 -1.0003760457038879e-02 - - 2.0728209614753723e-01 -1.1720780283212662e-01 - <_> - - 0 -1 828 -1.6457470133900642e-02 - - -4.5447981357574463e-01 2.3052949458360672e-02 - <_> - - 0 -1 829 -1.5172669664025307e-02 - - -2.0384129881858826e-01 2.0879639312624931e-02 - <_> - - 0 -1 830 -4.1150279343128204e-02 - - -4.8526081442832947e-01 2.3375000804662704e-02 - <_> - - 0 -1 831 8.7554886704310775e-05 - - -8.3170637488365173e-02 1.1491040140390396e-01 - <_> - - 0 -1 832 -1.4003519900143147e-03 - - 1.7052119970321655e-01 -7.9897612333297729e-02 - <_> - - 0 -1 833 -1.4320029877126217e-02 - - -2.7978140115737915e-01 2.7644220739603043e-02 - <_> - - 0 -1 834 1.0536990128457546e-02 - - 3.2726321369409561e-02 -3.0974090099334717e-01 - <_> - - 0 -1 835 1.0322839953005314e-02 - - -2.2037370130419731e-02 1.5700039267539978e-01 - <_> - - 0 -1 836 -2.9464110266417265e-03 - - 9.5506630837917328e-02 -1.1159860342741013e-01 - <_> - - 0 -1 837 -4.6543750911951065e-02 - - 5.2395242452621460e-01 -1.0266710072755814e-02 - <_> - - 0 -1 838 2.7587810531258583e-02 - - 1.7757529392838478e-02 -6.0755622386932373e-01 - <_> - - 0 -1 839 1.2779200077056885e-01 - - -2.9550189152359962e-02 1.9193689525127411e-01 - <_> - - 0 -1 840 -2.7071989607065916e-03 - - 1.3288849592208862e-01 -7.5121462345123291e-02 - <_> - - 0 -1 841 4.0517508983612061e-02 - - -1.8285209313035011e-02 2.3398989439010620e-01 - <_> - - 0 -1 842 -2.3226549848914146e-02 - - 1.1037539690732956e-01 -9.5945753157138824e-02 - <_> - - 0 -1 843 7.4146009981632233e-02 - - -2.4014929309487343e-02 2.1431709825992584e-01 - <_> - - 0 -1 844 -6.0976808890700340e-03 - - 2.0429180562496185e-01 -5.2113000303506851e-02 - <_> - - 0 -1 845 -1.5246089547872543e-02 - - 1.8430249392986298e-01 -5.7474389672279358e-02 - <_> - - 0 -1 846 2.0064720883965492e-03 - - -1.5901429951190948e-01 6.6750071942806244e-02 - <_> - - 0 -1 847 1.3912119902670383e-03 - - -6.6726118326187134e-02 1.6028690338134766e-01 - <_> - - 0 -1 848 9.6176161605399102e-05 - - -1.0783439874649048e-01 9.7965776920318604e-02 - <_> - - 0 -1 849 8.7600788101553917e-03 - - -2.6547059416770935e-02 1.6017149388790131e-01 - <_> - - 0 -1 850 -2.5330010801553726e-02 - - -4.5312818884849548e-01 2.3176750168204308e-02 - <_> - - 0 -1 851 9.3010559794493020e-05 - - -7.4414081871509552e-02 3.9705768227577209e-02 - <_> - - 0 -1 852 1.2664360110647976e-04 - - -8.8862143456935883e-02 1.0938200354576111e-01 - <_> - - 0 -1 853 1.0378329898230731e-04 - - -7.9622171819210052e-02 7.4162423610687256e-02 - <_> - - 0 -1 854 -1.1490810429677367e-03 - - -2.8735539317131042e-01 3.2963339239358902e-02 - <_> - - 0 -1 855 -3.7716159131377935e-03 - - 1.6333040595054626e-01 -5.5975660681724548e-02 - <_> - - 0 -1 856 -6.6916510462760925e-02 - - -3.2906571030616760e-01 3.0911309644579887e-02 - <_> - - 0 -1 857 -4.6153448522090912e-02 - - 3.1598469614982605e-01 -1.0006040334701538e-02 - <_> - - 0 -1 858 -1.4114130288362503e-02 - - 1.9118440151214600e-01 -5.4341658949851990e-02 - <_> - - 0 -1 859 -6.7449989728629589e-03 - - -4.3027278780937195e-01 1.7616849392652512e-02 - <_> - - 0 -1 860 -1.2470459565520287e-02 - - -6.0290211439132690e-01 1.4293249696493149e-02 - <_> - - 0 -1 861 -1.8420180305838585e-02 - - -3.8589200377464294e-01 2.0133590325713158e-02 - <_> - - 0 -1 862 -9.0734250843524933e-03 - - -4.3166559934616089e-01 1.8881799653172493e-02 - <_> - - 0 -1 863 -1.0161520185647532e-04 - - 6.7857377231121063e-02 -5.7537410408258438e-02 - <_> - - 0 -1 864 -1.2353780039120466e-04 - - 9.7375743091106415e-02 -9.2362031340599060e-02 - <_> - - 0 -1 865 9.8377313406672329e-05 - - -5.8235950767993927e-02 9.5380887389183044e-02 - <_> - - 0 -1 866 -1.0639090090990067e-01 - - -2.8306511044502258e-01 3.2923609018325806e-02 - <_> - - 0 -1 867 -6.3616447150707245e-02 - - 1.6447669267654419e-01 -6.0573101043701172e-02 - <_> - - 0 -1 868 1.7245480790734291e-02 - - -6.3979178667068481e-02 1.5430940687656403e-01 - <_> - - 0 -1 869 -6.7837438546121120e-03 - - -6.7650020122528076e-01 1.3685920275747776e-02 - <_> - - 0 -1 870 1.9993700087070465e-02 - - -8.1984132528305054e-02 1.0957500338554382e-01 - <_> - - 0 -1 871 -1.0575350373983383e-02 - - 1.0185450315475464e-01 -3.5512648522853851e-02 - <_> - - 0 -1 872 -1.1901520338142291e-04 - - 1.0208100080490112e-01 -9.6003718674182892e-02 - <_> - - 0 -1 873 6.7127197980880737e-03 - - -2.5669310241937637e-02 1.2060379981994629e-01 - <_> - - 0 -1 874 -1.9734390079975128e-02 - - 9.2925436794757843e-02 -1.0922320187091827e-01 - <_> - - 0 -1 875 5.9160222299396992e-03 - - -5.6094389408826828e-02 4.0212169289588928e-02 - <_> - - 0 -1 876 1.6886599361896515e-02 - - 2.5720449164509773e-02 -3.1899920105934143e-01 - <_> - - 0 -1 877 -8.1426696851849556e-05 - - 4.8319049179553986e-02 -5.6603148579597473e-02 - <_> - - 0 -1 878 9.8076612630393356e-05 - - -8.0048993229866028e-02 1.1017669737339020e-01 - <_> - - 0 -1 879 2.1393799688667059e-03 - - 2.7048120275139809e-02 -1.7649430036544800e-01 - <_> - - 0 -1 880 -1.1872709728777409e-03 - - 1.5653279423713684e-01 -5.3677041083574295e-02 - <_> - - 0 -1 881 9.3500297516584396e-03 - - 2.2035079076886177e-02 -3.8529750704765320e-01 - <_> - - 0 -1 882 -1.2907490134239197e-02 - - 8.5855528712272644e-02 -9.4352141022682190e-02 - <_> - - 0 -1 883 -8.6925812065601349e-03 - - 8.2323811948299408e-02 -1.1261750012636185e-01 - <_> - - 0 -1 884 2.6225339621305466e-02 - - -7.9598203301429749e-02 2.1438419818878174e-01 - <_> - - 0 -1 885 5.5324658751487732e-02 - - -3.4370798617601395e-02 6.1817649751901627e-02 - <_> - - 0 -1 886 -1.3645890355110168e-01 - - -3.9608588814735413e-01 2.2642590105533600e-02 - <_> - - 0 -1 887 4.3763849139213562e-01 - - -2.1257020533084869e-02 4.2141160368919373e-01 - <_> - - 0 -1 888 4.0124261379241943e-01 - - 1.3478119857609272e-02 -6.4437031745910645e-01 - <_> - - 0 -1 889 5.1928348839282990e-02 - - 1.6244180500507355e-02 -1.4291189610958099e-01 - <_> - - 0 -1 890 2.2155599668622017e-02 - - -7.8738972544670105e-02 1.1867050081491470e-01 - <_> - - 0 -1 891 -1.7905909568071365e-02 - - 1.0405159741640091e-01 -4.2793579399585724e-02 - <_> - - 0 -1 892 -2.6157870888710022e-02 - - 1.9521349668502808e-01 -4.7064788639545441e-02 - <_> - - 0 -1 893 7.9303726553916931e-02 - - -5.7728658430278301e-03 5.2964019775390625e-01 - <_> - - 0 -1 894 9.9063310772180557e-03 - - -5.4969910532236099e-02 1.7010359466075897e-01 - <_> - - 0 -1 895 -1.4349560660775751e-04 - - 7.5154699385166168e-02 -6.8524919450283051e-02 - <_> - - 0 -1 896 -1.0576599743217230e-04 - - 8.9321687817573547e-02 -1.1271840333938599e-01 - <_> - - 0 -1 897 1.2682359665632248e-02 - - 5.6463040411472321e-02 -4.3287089467048645e-01 - <_> - - 0 -1 898 -5.5023408494889736e-03 - - -4.4382581114768982e-01 1.5241930261254311e-02 - <_> - - 0 -1 899 2.9810098931193352e-03 - - 1.8084000796079636e-02 -1.3332369923591614e-01 - <_> - - 0 -1 900 3.4131971001625061e-01 - - -2.1042600274085999e-02 3.8421440124511719e-01 - <_> - - 0 -1 901 -2.4069199338555336e-02 - - 1.0723180323839188e-01 -8.4255319088697433e-03 - <_> - - 0 -1 902 2.8575219213962555e-02 - - 1.8834419548511505e-02 -4.4038540124893188e-01 - <_> - - 0 -1 903 1.1502469715196639e-04 - - -5.5220138281583786e-02 5.1889371126890182e-02 - <_> - - 0 -1 904 -6.2718510162085295e-04 - - 1.2168680131435394e-01 -6.9152280688285828e-02 - <_> - - 0 -1 905 -4.9285031855106354e-03 - - 1.1893810331821442e-01 -1.8929530680179596e-01 - <_> - - 0 -1 906 9.6798430604394525e-05 - - -8.4179729223251343e-02 9.3380309641361237e-02 - <_> - - 0 -1 907 -8.0068537499755621e-05 - - 9.5557212829589844e-02 -6.4218439161777496e-02 - <_> - - 0 -1 908 -9.6070143627002835e-05 - - 7.3091097176074982e-02 -1.0720100253820419e-01 - <_> - - 0 -1 909 -9.3654278316535056e-05 - - 6.4983196556568146e-02 -8.2975886762142181e-02 - <_> - - 0 -1 910 -2.9613949358463287e-02 - - -3.4413290023803711e-01 2.1603949368000031e-02 - <_> - - 0 -1 911 1.9738359376788139e-02 - - -7.4910469353199005e-02 1.6203530132770538e-01 - <_> - - 0 -1 912 -5.4622910916805267e-02 - - -5.3843551874160767e-01 1.5826219692826271e-02 - <_> - - 0 -1 913 2.5406960397958755e-02 - - -3.2018769532442093e-02 1.3851889967918396e-01 - <_> - - 0 -1 914 -1.5373529866337776e-02 - - 1.3621629774570465e-01 -6.8222098052501678e-02 - <_> - - 0 -1 915 9.0687759220600128e-02 - - -4.4694212265312672e-03 3.5965418815612793e-01 - <_> - - 0 -1 916 -2.5126760825514793e-02 - - 1.7240080237388611e-01 -5.1155138760805130e-02 - <_> - - 0 -1 917 3.0066540930420160e-03 - - -3.8472808897495270e-02 1.0702560096979141e-01 - <_> - - 0 -1 918 8.4653347730636597e-03 - - 2.3478979244828224e-02 -3.7509509921073914e-01 - <_> - - 0 -1 919 9.7920412372332066e-05 - - -5.0908301025629044e-02 4.6732418239116669e-02 - <_> - - 0 -1 920 -8.7232358055189252e-05 - - 9.9191993474960327e-02 -8.3799272775650024e-02 - <_> - - 0 -1 921 4.9487859942018986e-03 - - -4.5264169573783875e-02 9.2176407575607300e-02 - <_> - - 0 -1 922 -2.6660770177841187e-02 - - -3.8041749596595764e-01 1.9671360030770302e-02 - <_> - - 0 -1 923 8.6467640358023345e-05 - - -7.9427041113376617e-02 9.1969177126884460e-02 - <_> - - 0 -1 924 -1.8532250542193651e-03 - - 1.7682300508022308e-01 -4.7148969024419785e-02 - <_> - - 0 -1 925 -1.4915529638528824e-02 - - -3.3692631125450134e-01 2.3903379216790199e-02 - <_> - - 0 -1 926 -1.0222809761762619e-01 - - -5.5827599763870239e-01 1.2426029890775681e-02 - <_> - - 0 -1 927 5.2015138790011406e-03 - - 3.2800421118736267e-02 -1.4631250500679016e-01 - <_> - - 0 -1 928 9.3680468853563070e-04 - - -6.0438130050897598e-02 1.3095420598983765e-01 - <_> - - 0 -1 929 -7.4108080007135868e-03 - - -3.4674128890037537e-01 2.6007879525423050e-02 - <_> - 193 - -1.4360860586166382e+00 - - <_> - - 0 -1 930 -1.8665779381990433e-02 - - 2.9802250862121582e-01 -2.0164360105991364e-01 - <_> - - 0 -1 931 1.7876209318637848e-01 - - -2.8841730952262878e-01 8.5440836846828461e-02 - <_> - - 0 -1 932 -2.4368170648813248e-02 - - 2.9561281204223633e-01 -1.7508549988269806e-01 - <_> - - 0 -1 933 1.5175679326057434e-01 - - 5.5181410163640976e-02 -8.0556839704513550e-02 - <_> - - 0 -1 934 4.3565638363361359e-02 - - -3.0507868528366089e-01 9.0460099279880524e-02 - <_> - - 0 -1 935 -2.8217849321663380e-03 - - 1.3479979336261749e-01 -4.5820970088243484e-02 - <_> - - 0 -1 936 2.9153481125831604e-01 - - -2.5042079389095306e-02 -5.2862347412109375e+02 - <_> - - 0 -1 937 5.6751398369669914e-03 - - -2.0208150148391724e-01 1.3647970557212830e-01 - <_> - - 0 -1 938 -5.4361000657081604e-02 - - 2.1826750040054321e-01 -1.1021830141544342e-01 - <_> - - 0 -1 939 -1.8514929339289665e-02 - - 9.9700883030891418e-02 -8.7660886347293854e-02 - <_> - - 0 -1 940 1.0826139710843563e-02 - - -9.0239629149436951e-02 2.3028810322284698e-01 - <_> - - 0 -1 941 -5.4915390908718109e-02 - - 1.4848540723323822e-01 -1.5246839821338654e-01 - <_> - - 0 -1 942 -1.0018239915370941e-01 - - 3.1870540976524353e-01 -5.9569828212261200e-02 - <_> - - 0 -1 943 -1.2449700385332108e-02 - - 1.9122719764709473e-01 -8.6464017629623413e-02 - <_> - - 0 -1 944 -2.4818619713187218e-02 - - -4.2524629831314087e-01 4.8842970281839371e-02 - <_> - - 0 -1 945 -1.0368289798498154e-01 - - -3.7893599271774292e-01 -2.5603040121495724e-03 - <_> - - 0 -1 946 -2.7756340801715851e-02 - - 2.0152160525321960e-01 -9.3846760690212250e-02 - <_> - - 0 -1 947 1.2664039968512952e-04 - - -1.0433270037174225e-01 5.8694850653409958e-02 - <_> - - 0 -1 948 1.0114379983860999e-04 - - -2.1999250352382660e-01 7.4510157108306885e-02 - <_> - - 0 -1 949 -2.2384760901331902e-02 - - -5.4830861091613770e-01 3.2939050346612930e-02 - <_> - - 0 -1 950 1.2907509692013264e-02 - - 3.2581768929958344e-02 -4.3887349963188171e-01 - <_> - - 0 -1 951 -2.8063610196113586e-02 - - 2.8911450505256653e-01 -6.3902527093887329e-02 - <_> - - 0 -1 952 1.5816820785403252e-02 - - -7.7197156846523285e-02 2.3951299488544464e-01 - <_> - - 0 -1 953 1.1950709857046604e-02 - - 1.5830170363187790e-02 -5.3843390941619873e-01 - <_> - - 0 -1 954 -8.8720219209790230e-03 - - -4.2367440462112427e-01 3.3000521361827850e-02 - <_> - - 0 -1 955 3.6972928792238235e-02 - - -7.0859201252460480e-02 3.5152399539947510e-01 - <_> - - 0 -1 956 3.9606958627700806e-02 - - -4.6960968524217606e-02 3.6596560478210449e-01 - <_> - - 0 -1 957 -6.6295927762985229e-01 - - -3.0152958631515503e-01 9.6956668421626091e-03 - <_> - - 0 -1 958 2.4906129110604525e-03 - - 4.4226419180631638e-02 -3.2908758521080017e-01 - <_> - - 0 -1 959 -1.3971859589219093e-02 - - 1.5589240193367004e-01 -1.1601889878511429e-01 - <_> - - 0 -1 960 -1.1375070363283157e-01 - - 1.1485689878463745e-01 -1.3213649392127991e-01 - <_> - - 0 -1 961 2.9911810159683228e-01 - - 6.8873511627316475e-03 -3.8814491033554077e-01 - <_> - - 0 -1 962 1.7687779664993286e-01 - - -5.3250420838594437e-02 3.0713948607444763e-01 - <_> - - 0 -1 963 1.1000049859285355e-01 - - -6.1691209673881531e-02 2.2423219680786133e-01 - <_> - - 0 -1 964 1.1481890454888344e-02 - - -3.6849450320005417e-02 3.6994668841362000e-01 - <_> - - 0 -1 965 -4.3482281267642975e-02 - - 6.6759057343006134e-02 -8.2093171775341034e-02 - <_> - - 0 -1 966 -3.2705739140510559e-03 - - -3.1203529238700867e-01 3.6861110478639603e-02 - <_> - - 0 -1 967 -1.9539929926395416e-02 - - 2.0876990258693695e-01 -6.3567101955413818e-02 - <_> - - 0 -1 968 1.1419560015201569e-01 - - 3.7483099848031998e-02 -3.3699938654899597e-01 - <_> - - 0 -1 969 -5.4715350270271301e-02 - - -6.4842391014099121e-01 5.5782468989491463e-03 - <_> - - 0 -1 970 -2.0697079598903656e-02 - - -4.0871649980545044e-01 2.7801020070910454e-02 - <_> - - 0 -1 971 1.6291709616780281e-02 - - -3.0260639265179634e-02 2.3359869420528412e-01 - <_> - - 0 -1 972 1.5691660344600677e-02 - - 3.3188868314027786e-02 -3.6992970108985901e-01 - <_> - - 0 -1 973 -1.4982360415160656e-02 - - -5.0467449426651001e-01 2.6605149731040001e-02 - <_> - - 0 -1 974 1.6306430101394653e-01 - - 2.4150509387254715e-02 -4.5440959930419922e-01 - <_> - - 0 -1 975 -2.9636370018124580e-02 - - 3.2348120212554932e-01 -1.9519040361046791e-02 - <_> - - 0 -1 976 -2.1226789802312851e-02 - - 3.5008680820465088e-01 -3.6894138902425766e-02 - <_> - - 0 -1 977 -1.8383020162582397e-01 - - 1.1249549686908722e-01 -1.2387230247259140e-01 - <_> - - 0 -1 978 -1.9727550446987152e-02 - - 2.2184500098228455e-01 -5.3758859634399414e-02 - <_> - - 0 -1 979 -5.5899647995829582e-03 - - 8.0602303147315979e-02 -7.4731111526489258e-02 - <_> - - 0 -1 980 -2.0963780581951141e-02 - - -3.9255261421203613e-01 2.8758550062775612e-02 - <_> - - 0 -1 981 -1.6138730570673943e-02 - - 1.1986479908227921e-01 -1.2855109572410583e-01 - <_> - - 0 -1 982 -7.6363878324627876e-03 - - 1.7836730182170868e-01 -6.4110390841960907e-02 - <_> - - 0 -1 983 2.8579769656062126e-02 - - -7.4946638196706772e-03 1.2914970517158508e-01 - <_> - - 0 -1 984 -2.0712960511445999e-02 - - 9.4717502593994141e-02 -1.3751709461212158e-01 - <_> - - 0 -1 985 3.3245470840483904e-03 - - 4.3691419064998627e-02 -4.3515149503946304e-02 - <_> - - 0 -1 986 -1.5657799318432808e-02 - - 1.1052600294351578e-01 -9.3203462660312653e-02 - <_> - - 0 -1 987 -8.9033246040344238e-03 - - 2.1368870139122009e-01 -5.7228211313486099e-02 - <_> - - 0 -1 988 -2.2517060860991478e-02 - - -5.4505091905593872e-01 2.4187430739402771e-02 - <_> - - 0 -1 989 -9.1859940439462662e-03 - - 5.9040650725364685e-02 -6.6338866949081421e-02 - <_> - - 0 -1 990 -1.9304599612951279e-02 - - -3.4585410356521606e-01 2.9562819749116898e-02 - <_> - - 0 -1 991 5.9454459697008133e-03 - - -3.1828779727220535e-02 1.5746699273586273e-01 - <_> - - 0 -1 992 -2.1486129611730576e-02 - - -5.1556599140167236e-01 1.9380800426006317e-02 - <_> - - 0 -1 993 -1.4807850122451782e-02 - - -4.4625368714332581e-01 2.5272980332374573e-02 - <_> - - 0 -1 994 4.1915681213140488e-02 - - 4.0864139795303345e-02 -2.2498999536037445e-01 - <_> - - 0 -1 995 1.8542360514402390e-02 - - -4.5628201216459274e-02 1.2479899823665619e-01 - <_> - - 0 -1 996 -2.1978599950671196e-02 - - 1.6626510024070740e-01 -6.8181529641151428e-02 - <_> - - 0 -1 997 -2.2305909544229507e-02 - - 1.2176349759101868e-01 -4.6996518969535828e-02 - <_> - - 0 -1 998 2.7781110256910324e-02 - - -3.6972120404243469e-02 2.8523659706115723e-01 - <_> - - 0 -1 999 -1.7994759604334831e-02 - - 1.0447979718446732e-01 -9.9000662565231323e-02 - <_> - - 0 -1 1000 1.4754800125956535e-02 - - 2.1869139745831490e-02 -4.3043890595436096e-01 - <_> - - 0 -1 1001 -7.7450848184525967e-03 - - 3.2999970018863678e-02 -9.8474316298961639e-02 - <_> - - 0 -1 1002 -2.7451539412140846e-02 - - 1.9599549472332001e-01 -5.0378508865833282e-02 - <_> - - 0 -1 1003 -3.0835710931569338e-03 - - -3.3752480149269104e-01 3.3910509198904037e-02 - <_> - - 0 -1 1004 -7.1450988762080669e-03 - - -6.7807298898696899e-01 1.1928509920835495e-02 - <_> - - 0 -1 1005 -1.1973819928243756e-03 - - 1.2777930498123169e-01 -5.5520929396152496e-02 - <_> - - 0 -1 1006 1.2104130291845649e-04 - - -9.7394056618213654e-02 9.9989913403987885e-02 - <_> - - 0 -1 1007 1.1540119885466993e-04 - - -3.8101248443126678e-02 5.3142480552196503e-02 - <_> - - 0 -1 1008 -1.0320250294171274e-04 - - 1.1880250275135040e-01 -8.2887932658195496e-02 - <_> - - 0 -1 1009 3.0217070132493973e-02 - - 1.3077120296657085e-02 -4.2511129379272461e-01 - <_> - - 0 -1 1010 1.4480530284345150e-02 - - -6.4665600657463074e-02 1.3651260733604431e-01 - <_> - - 0 -1 1011 7.6259230263531208e-03 - - 2.1206660196185112e-02 -4.8069199919700623e-01 - <_> - - 0 -1 1012 1.2706779874861240e-02 - - 2.0432170480489731e-02 -3.8036710023880005e-01 - <_> - - 0 -1 1013 -7.0849858224391937e-02 - - -6.7007941007614136e-01 5.8502932079136372e-03 - <_> - - 0 -1 1014 -3.6607089638710022e-01 - - -6.5651381015777588e-01 1.1938090436160564e-02 - <_> - - 0 -1 1015 6.7676370963454247e-03 - - -5.4737601429224014e-02 1.3349209725856781e-01 - <_> - - 0 -1 1016 -5.8495830744504929e-03 - - 5.5006939917802811e-02 -1.7087200284004211e-01 - <_> - - 0 -1 1017 -1.3192510232329369e-02 - - 2.0252169668674469e-01 -4.6748850494623184e-02 - <_> - - 0 -1 1018 -2.6243979111313820e-02 - - 1.7131200432777405e-01 -5.1742289215326309e-02 - <_> - - 0 -1 1019 -1.9836300611495972e-01 - - 6.8348598480224609e-01 -5.4989140480756760e-03 - <_> - - 0 -1 1020 -9.1264583170413971e-02 - - -3.8122451305389404e-01 2.4656090885400772e-02 - <_> - - 0 -1 1021 5.1045559346675873e-02 - - 4.7809281386435032e-03 -5.1388448476791382e-01 - <_> - - 0 -1 1022 -6.2677852809429169e-02 - - 1.6051210463047028e-01 -6.9291412830352783e-02 - <_> - - 0 -1 1023 2.1998759359121323e-02 - - -6.3557699322700500e-02 1.0258419811725616e-01 - <_> - - 0 -1 1024 -9.8559096455574036e-02 - - 4.1666871309280396e-01 -2.2982550784945488e-02 - <_> - - 0 -1 1025 -7.8866537660360336e-03 - - 1.4133100211620331e-01 -6.2746547162532806e-02 - <_> - - 0 -1 1026 5.7192011736333370e-03 - - 1.4939470216631889e-02 -5.6794857978820801e-01 - <_> - - 0 -1 1027 -1.2656320177484304e-04 - - 1.5409049391746521e-01 -2.7226370573043823e-01 - <_> - - 0 -1 1028 -1.5363659709692001e-02 - - -5.5752921104431152e-01 1.6629980877041817e-02 - <_> - - 0 -1 1029 1.1747309938073158e-02 - - -2.8669150546193123e-02 8.4919847548007965e-02 - <_> - - 0 -1 1030 -6.6546360030770302e-03 - - 1.5057440102100372e-01 -5.8735769242048264e-02 - <_> - - 0 -1 1031 -8.2943234592676163e-03 - - -4.9023759365081787e-01 1.1976949870586395e-02 - <_> - - 0 -1 1032 -1.9957730174064636e-01 - - -3.2048851251602173e-01 2.4448549374938011e-02 - <_> - - 0 -1 1033 9.1623470187187195e-02 - - -1.1565860360860825e-02 1.2121780216693878e-01 - <_> - - 0 -1 1034 6.1579290777444839e-03 - - 2.3432880640029907e-02 -3.4702080488204956e-01 - <_> - - 0 -1 1035 -6.6728810779750347e-03 - - 1.3372699916362762e-01 -6.0459390282630920e-02 - <_> - - 0 -1 1036 1.1792629811679944e-04 - - -1.1258299648761749e-01 6.9133318960666656e-02 - <_> - - 0 -1 1037 -1.1926449835300446e-02 - - 1.3051030039787292e-01 -3.8503900170326233e-02 - <_> - - 0 -1 1038 6.1339139938354492e-03 - - 1.7326330766081810e-02 -4.5990580320358276e-01 - <_> - - 0 -1 1039 -3.7309920787811279e-01 - - -3.4024098515510559e-01 2.0620759576559067e-02 - <_> - - 0 -1 1040 3.2631669193506241e-02 - - 1.4541059732437134e-02 -5.0915217399597168e-01 - <_> - - 0 -1 1041 -3.3705669920891523e-03 - - 1.6251499950885773e-01 -2.7433190494775772e-02 - <_> - - 0 -1 1042 9.6422692877240479e-05 - - -8.0862849950790405e-02 8.7025731801986694e-02 - <_> - - 0 -1 1043 -1.3675920665264130e-01 - - 4.6943631023168564e-02 -5.4120488464832306e-02 - <_> - - 0 -1 1044 -1.8601629883050919e-02 - - 1.1531089991331100e-01 -7.5560040771961212e-02 - <_> - - 0 -1 1045 -3.9706271141767502e-02 - - -4.1564889252185822e-02 3.4207019954919815e-02 - <_> - - 0 -1 1046 -9.7793333232402802e-02 - - -2.5549450516700745e-01 3.2621458172798157e-02 - <_> - - 0 -1 1047 -1.2463969737291336e-01 - - 1.3530750572681427e-01 -5.6000139564275742e-02 - <_> - - 0 -1 1048 -7.3466179892420769e-03 - - 1.3280290365219116e-01 -5.9977211058139801e-02 - <_> - - 0 -1 1049 -9.1007994487881660e-03 - - 8.4215812385082245e-02 -9.5823230221867561e-03 - <_> - - 0 -1 1050 -5.4712329059839249e-02 - - -7.4970638751983643e-01 9.1644506901502609e-03 - <_> - - 0 -1 1051 7.8011681325733662e-03 - - -5.8472141623497009e-02 7.5802512466907501e-02 - <_> - - 0 -1 1052 1.1504740454256535e-02 - - -5.4455708712339401e-02 1.3103820383548737e-01 - <_> - - 0 -1 1053 -3.0265720561146736e-03 - - 4.3595738708972931e-02 -3.9831820875406265e-02 - <_> - - 0 -1 1054 3.9084558375179768e-03 - - -7.0230223238468170e-02 1.1850009858608246e-01 - <_> - - 0 -1 1055 -1.7115350812673569e-02 - - -4.8753368854522705e-01 4.2606718838214874e-02 - <_> - - 0 -1 1056 7.2391182184219360e-02 - - -3.0713820829987526e-02 2.8776410222053528e-01 - <_> - - 0 -1 1057 2.0542759448289871e-02 - - -7.5590826570987701e-02 1.0416489839553833e-01 - <_> - - 0 -1 1058 1.2337979860603809e-02 - - 3.3167198300361633e-02 -2.3291139304637909e-01 - <_> - - 0 -1 1059 -4.0956601500511169e-02 - - 2.4578510224819183e-01 -3.2600268721580505e-02 - <_> - - 0 -1 1060 2.2755319252610207e-02 - - 2.3990869522094727e-02 -3.3137750625610352e-01 - <_> - - 0 -1 1061 -2.6924870908260345e-03 - - 6.6952548921108246e-02 -1.1627510190010071e-01 - <_> - - 0 -1 1062 1.0185319930315018e-02 - - -6.4380377531051636e-02 1.7856849730014801e-01 - <_> - - 0 -1 1063 2.1892699878662825e-03 - - 2.8202280402183533e-02 -1.9460220634937286e-01 - <_> - - 0 -1 1064 1.7614009976387024e-01 - - 1.6212200745940208e-02 -4.5734050869941711e-01 - <_> - - 0 -1 1065 -2.4204170331358910e-03 - - 1.7359940707683563e-01 -3.7762571126222610e-02 - <_> - - 0 -1 1066 -1.4709460083395243e-03 - - 1.4086340367794037e-01 -5.3505048155784607e-02 - <_> - - 0 -1 1067 -1.7629310488700867e-02 - - -4.3374711275100708e-01 1.7910350114107132e-02 - <_> - - 0 -1 1068 5.3175981156527996e-03 - - 2.6618450880050659e-02 -2.9816010594367981e-01 - <_> - - 0 -1 1069 1.8915910040959716e-03 - - 3.5916399210691452e-02 -2.0904560387134552e-01 - <_> - - 0 -1 1070 1.3355260016396642e-03 - - 4.0930848568677902e-02 -1.8434959650039673e-01 - <_> - - 0 -1 1071 -6.9594341330230236e-03 - - 1.7677329480648041e-01 -1.7047759145498276e-02 - <_> - - 0 -1 1072 9.1313078883104026e-05 - - -7.4369266629219055e-02 9.6271850168704987e-02 - <_> - - 0 -1 1073 -4.2544947937130928e-03 - - 4.4604320079088211e-02 -6.3106119632720947e-02 - <_> - - 0 -1 1074 -1.0578350338619202e-04 - - 9.1437682509422302e-02 -8.2973442971706390e-02 - <_> - - 0 -1 1075 -1.0263289732392877e-04 - - 1.0793939977884293e-01 -7.9892612993717194e-02 - <_> - - 0 -1 1076 -2.4791778996586800e-03 - - -2.5868308544158936e-01 2.6286249980330467e-02 - <_> - - 0 -1 1077 -1.6074670478701591e-02 - - 1.0526800155639648e-01 -6.5673381090164185e-02 - <_> - - 0 -1 1078 -1.4310239814221859e-02 - - -4.9289679527282715e-01 1.5973109751939774e-02 - <_> - - 0 -1 1079 -8.8974033133126795e-05 - - 5.8744948357343674e-02 -4.5313041657209396e-02 - <_> - - 0 -1 1080 1.0300390422344208e-03 - - -5.5908720940351486e-02 1.4394310116767883e-01 - <_> - - 0 -1 1081 3.9175990968942642e-03 - - 2.9270060360431671e-02 -1.9770559668540955e-01 - <_> - - 0 -1 1082 1.0633670171955600e-04 - - -1.0704860091209412e-01 9.6238046884536743e-02 - <_> - - 0 -1 1083 4.2181659489870071e-02 - - -1.0299479588866234e-02 5.1465499401092529e-01 - <_> - - 0 -1 1084 -1.2948510237038136e-02 - - 1.9178110361099243e-01 -3.9072200655937195e-02 - <_> - - 0 -1 1085 -1.1697240173816681e-02 - - 6.8906992673873901e-02 -2.0180009305477142e-02 - <_> - - 0 -1 1086 1.4815540052950382e-02 - - -6.4537003636360168e-02 1.1534599959850311e-01 - <_> - - 0 -1 1087 1.2253019667696208e-04 - - -1.3507540524005890e-01 6.0662679374217987e-02 - <_> - - 0 -1 1088 -3.1337419059127569e-03 - - 1.1237639933824539e-01 -6.6894769668579102e-02 - <_> - - 0 -1 1089 -6.8492516875267029e-02 - - 3.1228348612785339e-01 -1.0049100033938885e-02 - <_> - - 0 -1 1090 2.8148779645562172e-02 - - 1.1834469623863697e-02 -5.9781688451766968e-01 - <_> - - 0 -1 1091 3.8532231003046036e-02 - - -2.2291859611868858e-02 1.8402780592441559e-01 - <_> - - 0 -1 1092 7.2883451357483864e-03 - - -4.7932468354701996e-02 1.4016370475292206e-01 - <_> - - 0 -1 1093 -6.5842391923069954e-03 - - -4.4751879572868347e-01 1.1767829768359661e-02 - <_> - - 0 -1 1094 -1.1306579835945740e-04 - - 6.5438106656074524e-02 -1.0187850147485733e-01 - <_> - - 0 -1 1095 -4.1586891748011112e-03 - - -2.5771650671958923e-01 2.0321190357208252e-02 - <_> - - 0 -1 1096 3.0523419380187988e-02 - - 1.7388790845870972e-02 -3.7316098809242249e-01 - <_> - - 0 -1 1097 -8.5078412666916847e-04 - - -3.9039680361747742e-01 8.0188266932964325e-02 - <_> - - 0 -1 1098 -1.0892679711105302e-04 - - 8.3534307777881622e-02 -8.1396430730819702e-02 - <_> - - 0 -1 1099 -1.9891309738159180e-01 - - -4.6180391311645508e-01 5.7829180732369423e-03 - <_> - - 0 -1 1100 -3.1243480741977692e-02 - - 2.5022289156913757e-01 -3.0032670125365257e-02 - <_> - - 0 -1 1101 2.3447209969162941e-02 - - -2.5061629712581635e-02 1.9670550525188446e-01 - <_> - - 0 -1 1102 1.1578369885683060e-02 - - 1.7265379428863525e-02 -3.8913309574127197e-01 - <_> - - 0 -1 1103 -2.6445279363542795e-03 - - 6.9367542862892151e-02 -4.0608219802379608e-02 - <_> - - 0 -1 1104 3.5718798637390137e-02 - - -3.0876770615577698e-02 2.2570140659809113e-01 - <_> - - 0 -1 1105 -3.2863069325685501e-02 - - -5.2084881067276001e-01 1.5310989692807198e-02 - <_> - - 0 -1 1106 1.2007729709148407e-01 - - 9.3891620635986328e-03 -5.9657102823257446e-01 - <_> - - 0 -1 1107 -6.8977959454059601e-03 - - 7.1826606988906860e-02 -3.8691330701112747e-02 - <_> - - 0 -1 1108 -1.1164099851157516e-04 - - 9.0559646487236023e-02 -7.4175752699375153e-02 - <_> - - 0 -1 1109 -8.6451061069965363e-03 - - -4.6491929888725281e-01 1.1580149643123150e-02 - <_> - - 0 -1 1110 1.1185959738213569e-04 - - -7.8282259404659271e-02 8.7556958198547363e-02 - <_> - - 0 -1 1111 -3.3530138898640871e-03 - - 6.3597083091735840e-02 -8.3768010139465332e-02 - <_> - - 0 -1 1112 -4.3913818895816803e-02 - - -7.4856078624725342e-01 8.7825870141386986e-03 - <_> - - 0 -1 1113 -3.0952990055084229e-03 - - 1.6955019533634186e-01 -3.9198450744152069e-02 - <_> - - 0 -1 1114 3.2301219180226326e-03 - - -1.2238019704818726e-01 6.1057928949594498e-02 - <_> - - 0 -1 1115 -4.5945771038532257e-02 - - -3.0185928940773010e-01 8.8831810280680656e-03 - <_> - - 0 -1 1116 3.7468101829290390e-02 - - 1.5233550220727921e-02 -4.4433480501174927e-01 - <_> - - 0 -1 1117 -9.6279982244595885e-04 - - 1.4550130069255829e-01 -5.5346839129924774e-02 - <_> - - 0 -1 1118 9.5942807092797011e-05 - - -8.0140501260757446e-02 8.4200643002986908e-02 - <_> - - 0 -1 1119 1.2208779808133841e-03 - - -6.0854949057102203e-02 1.3992980122566223e-01 - <_> - - 0 -1 1120 1.0304830357199535e-04 - - -9.1390810906887054e-02 9.0698756277561188e-02 - <_> - - 0 -1 1121 6.7147910594940186e-03 - - 1.7061460763216019e-02 -4.7845649719238281e-01 - <_> - - 0 -1 1122 1.1389680003048852e-04 - - -1.2051180005073547e-01 6.1523791402578354e-02 - <_> - 246 - -1.5257749557495117e+00 - - <_> - - 0 -1 1123 -2.4859240278601646e-02 - - 3.2212960720062256e-01 -1.7630000412464142e-01 - <_> - - 0 -1 1124 -2.5715090334415436e-02 - - 2.1644030511379242e-01 -2.0330239832401276e-01 - <_> - - 0 -1 1125 1.0584949702024460e-01 - - 1.0783869947772473e-04 5.5255950927734375e+02 - <_> - - 0 -1 1126 -8.6654294282197952e-03 - - 8.9402712881565094e-02 -8.5205726325511932e-02 - <_> - - 0 -1 1127 -1.1314759962260723e-02 - - 1.7304340004920959e-01 -1.8126599490642548e-01 - <_> - - 0 -1 1128 -5.1866549998521805e-02 - - 2.4890810251235962e-01 -8.6208656430244446e-02 - <_> - - 0 -1 1129 -4.5156660489737988e-03 - - 2.8406441211700439e-01 -1.1907359957695007e-01 - <_> - - 0 -1 1130 -1.5003410167992115e-02 - - 1.8889980018138885e-01 -8.7035499513149261e-02 - <_> - - 0 -1 1131 -1.0107509791851044e-02 - - 2.6107978820800781e-01 -9.6679881215095520e-02 - <_> - - 0 -1 1132 -3.4547690302133560e-02 - - 1.9014529883861542e-01 -9.6255972981452942e-02 - <_> - - 0 -1 1133 -4.4875599443912506e-02 - - 2.4909320473670959e-01 -8.9669972658157349e-02 - <_> - - 0 -1 1134 2.1081630140542984e-02 - - -2.1065710484981537e-01 5.6633379310369492e-02 - <_> - - 0 -1 1135 -4.0543689392507076e-03 - - 2.0171619951725006e-01 -7.8482761979103088e-02 - <_> - - 0 -1 1136 -2.4460731074213982e-03 - - -2.7655521035194397e-01 2.7891060337424278e-02 - <_> - - 0 -1 1137 1.0416610166430473e-04 - - -2.1726490557193756e-01 6.8724997341632843e-02 - <_> - - 0 -1 1138 -7.0905950851738453e-03 - - 3.9171610027551651e-02 -7.2237558662891388e-02 - <_> - - 0 -1 1139 4.2705261148512363e-03 - - 3.4430060535669327e-02 -4.5147350430488586e-01 - <_> - - 0 -1 1140 2.1259069442749023e-02 - - 4.3162569403648376e-02 -4.9452671408653259e-01 - <_> - - 0 -1 1141 -2.9957989230751991e-02 - - 1.6304069757461548e-01 -9.0024642646312714e-02 - <_> - - 0 -1 1142 -4.7675549983978271e-02 - - -5.6908601522445679e-01 3.1040430068969727e-02 - <_> - - 0 -1 1143 -2.1358959376811981e-02 - - -3.6729431152343750e-01 2.9709909111261368e-02 - <_> - - 0 -1 1144 -1.7130080610513687e-02 - - 1.9964259862899780e-01 -6.1701580882072449e-02 - <_> - - 0 -1 1145 2.6973700150847435e-02 - - -9.1998912394046783e-02 1.4968660473823547e-01 - <_> - - 0 -1 1146 1.5395210124552250e-02 - - 5.8998059481382370e-02 -4.0311428904533386e-01 - <_> - - 0 -1 1147 -1.3613039627671242e-02 - - -3.9532521367073059e-01 2.6161760091781616e-02 - <_> - - 0 -1 1148 -1.0206910222768784e-01 - - -1.6730350255966187e-01 2.6923289522528648e-02 - <_> - - 0 -1 1149 -4.5802921056747437e-02 - - 1.1230929940938950e-01 -9.9279657006263733e-02 - <_> - - 0 -1 1150 -5.1968779414892197e-02 - - 1.9432289898395538e-01 -5.0929531455039978e-02 - <_> - - 0 -1 1151 -4.2487609386444092e-01 - - 3.5886010527610779e-01 -3.4976560622453690e-02 - <_> - - 0 -1 1152 7.9517379403114319e-02 - - 2.0976619794964790e-02 -1.9810600578784943e-01 - <_> - - 0 -1 1153 -4.5309830456972122e-02 - - 2.5174209475517273e-01 -4.7164641320705414e-02 - <_> - - 0 -1 1154 4.0600001811981201e-02 - - 5.9903971850872040e-03 -5.0524187088012695e-01 - <_> - - 0 -1 1155 -2.8276300057768822e-02 - - -4.4258609414100647e-01 2.4936830624938011e-02 - <_> - - 0 -1 1156 9.3841962516307831e-02 - - 1.7748980317264795e-03 -4.3988320231437683e-01 - <_> - - 0 -1 1157 -1.1791589856147766e-01 - - -3.4417560696601868e-01 3.3724360167980194e-02 - <_> - - 0 -1 1158 -1.5139310061931610e-01 - - 6.0411769896745682e-02 -5.3201220929622650e-02 - <_> - - 0 -1 1159 -2.2562649846076965e-01 - - -3.2119071483612061e-01 3.5429101437330246e-02 - <_> - - 0 -1 1160 1.2930350378155708e-02 - - 3.3611949533224106e-02 -3.9412268996238708e-01 - <_> - - 0 -1 1161 -2.4919810239225626e-03 - - 1.7061330378055573e-01 -6.2898688018321991e-02 - <_> - - 0 -1 1162 -2.4559959769248962e-02 - - -4.1337108612060547e-01 1.7610160633921623e-02 - <_> - - 0 -1 1163 4.1320499777793884e-01 - - -3.9126798510551453e-02 2.6587060093879700e-01 - <_> - - 0 -1 1164 -3.0522849410772324e-02 - - -3.8158100843429565e-01 3.6273371428251266e-02 - <_> - - 0 -1 1165 -9.8860889673233032e-02 - - -2.6913830637931824e-01 3.9270389825105667e-02 - <_> - - 0 -1 1166 1.1311320122331381e-04 - - -1.4554770290851593e-01 5.6427501142024994e-02 - <_> - - 0 -1 1167 7.7236247307155281e-05 - - -1.0340359807014465e-01 8.8167242705821991e-02 - <_> - - 0 -1 1168 1.9930439069867134e-02 - - 8.3390101790428162e-03 -4.1726669669151306e-01 - <_> - - 0 -1 1169 -3.3970959484577179e-02 - - 2.3175339400768280e-01 -4.0641728788614273e-02 - <_> - - 0 -1 1170 -2.8630539774894714e-02 - - -5.5509167909622192e-01 1.6257530078291893e-02 - <_> - - 0 -1 1171 4.9788239412009716e-03 - - 3.1474281102418900e-02 -2.8877478837966919e-01 - <_> - - 0 -1 1172 -5.6940698996186256e-03 - - 2.3032620549201965e-01 -2.0171329379081726e-02 - <_> - - 0 -1 1173 1.9577480852603912e-03 - - -5.6104071438312531e-02 1.6390749812126160e-01 - <_> - - 0 -1 1174 -1.0736430063843727e-02 - - 1.3881990313529968e-01 -5.9501811861991882e-02 - <_> - - 0 -1 1175 -3.9446078240871429e-02 - - -5.3395891189575195e-01 1.8544889986515045e-02 - <_> - - 0 -1 1176 -2.5590090081095695e-02 - - -3.0474209785461426e-01 2.0556690171360970e-02 - <_> - - 0 -1 1177 -2.9707629233598709e-02 - - -4.3856319785118103e-01 2.0257510244846344e-02 - <_> - - 0 -1 1178 1.1870719754369929e-04 - - -5.5606078356504440e-02 5.5818539112806320e-02 - <_> - - 0 -1 1179 6.0403849929571152e-03 - - -6.2561951577663422e-02 1.4033129811286926e-01 - <_> - - 0 -1 1180 -2.3701060563325882e-03 - - 1.0411810129880905e-01 -4.6637579798698425e-02 - <_> - - 0 -1 1181 -5.6802731007337570e-02 - - 1.4273630082607269e-01 -6.4138323068618774e-02 - <_> - - 0 -1 1182 1.2178280390799046e-02 - - -5.7620238512754440e-02 1.5788230299949646e-01 - <_> - - 0 -1 1183 -4.0311398915946484e-03 - - -3.2791781425476074e-01 2.9163230210542679e-02 - <_> - - 0 -1 1184 5.4544620215892792e-03 - - -3.4765560179948807e-02 2.2650560736656189e-01 - <_> - - 0 -1 1185 -1.2505230307579041e-01 - - 1.1683230102062225e-01 -7.3438726365566254e-02 - <_> - - 0 -1 1186 -1.6150200366973877e-01 - - 1.4328670501708984e-01 -7.7370628714561462e-03 - <_> - - 0 -1 1187 -1.5369510650634766e-01 - - -4.0407729148864746e-01 2.5253390893340111e-02 - <_> - - 0 -1 1188 1.3832460157573223e-02 - - -9.6680596470832825e-03 2.2449059784412384e-01 - <_> - - 0 -1 1189 -1.9752800464630127e-02 - - -2.7250349521636963e-01 3.1350579112768173e-02 - <_> - - 0 -1 1190 -1.0762990452349186e-02 - - -3.8410690426826477e-01 1.3031579554080963e-02 - <_> - - 0 -1 1191 2.1228760480880737e-02 - - 2.6058429852128029e-02 -3.0802738666534424e-01 - <_> - - 0 -1 1192 -9.2247471911832690e-05 - - 4.5628391206264496e-02 -5.6000810116529465e-02 - <_> - - 0 -1 1193 -1.9652589689940214e-03 - - 1.3385680317878723e-01 -6.4132191240787506e-02 - <_> - - 0 -1 1194 2.8215510770678520e-02 - - 1.5388909727334976e-02 -2.1875369548797607e-01 - <_> - - 0 -1 1195 1.2585399963427335e-04 - - -1.3956110179424286e-01 5.9270460158586502e-02 - <_> - - 0 -1 1196 -6.9362311623990536e-03 - - 2.1816599369049072e-01 -2.0222889259457588e-02 - <_> - - 0 -1 1197 -1.7958630342036486e-03 - - 1.5875579416751862e-01 -4.6382639557123184e-02 - <_> - - 0 -1 1198 9.5576168969273567e-03 - - -3.9091229438781738e-02 1.3414810597896576e-01 - <_> - - 0 -1 1199 -6.2396150082349777e-02 - - -4.6752119064331055e-01 1.8674060702323914e-02 - <_> - - 0 -1 1200 -1.0964560351567343e-04 - - 3.8066919893026352e-02 -5.3127989172935486e-02 - <_> - - 0 -1 1201 -1.9344469532370567e-02 - - -4.7804948687553406e-01 1.6591800376772881e-02 - <_> - - 0 -1 1202 7.8327268362045288e-02 - - 1.8126649782061577e-02 -3.9800310134887695e-01 - <_> - - 0 -1 1203 -3.6987459659576416e-01 - - 1.5705190598964691e-01 -5.0288591533899307e-02 - <_> - - 0 -1 1204 -4.6618398278951645e-02 - - 1.8562039732933044e-01 -4.7500848770141602e-02 - <_> - - 0 -1 1205 -2.2177870571613312e-01 - - 3.6903271079063416e-01 -2.1891359239816666e-02 - <_> - - 0 -1 1206 1.0199939832091331e-02 - - -2.0008459687232971e-02 1.8920080363750458e-01 - <_> - - 0 -1 1207 -1.3876829762011766e-03 - - 1.3981680572032928e-01 -5.5062200874090195e-02 - <_> - - 0 -1 1208 1.0204740101471543e-04 - - -1.5539169311523438e-01 9.1232098639011383e-02 - <_> - - 0 -1 1209 9.5603638328611851e-05 - - -9.6878476440906525e-02 8.0248139798641205e-02 - <_> - - 0 -1 1210 -5.3494791500270367e-03 - - 7.3209710419178009e-02 -5.5011261254549026e-02 - <_> - - 0 -1 1211 1.3007720001041889e-02 - - 2.4103149771690369e-02 -3.1236580014228821e-01 - <_> - - 0 -1 1212 2.9070049524307251e-02 - - -3.7642810493707657e-02 2.0871339738368988e-01 - <_> - - 0 -1 1213 2.1258399647194892e-04 - - -1.9390119612216949e-01 4.2593110352754593e-02 - <_> - - 0 -1 1214 1.2767249718308449e-02 - - 3.7468269467353821e-02 -3.4924089908599854e-01 - <_> - - 0 -1 1215 -3.5076010972261429e-02 - - 2.3502109944820404e-01 -3.6161709576845169e-02 - <_> - - 0 -1 1216 8.1403086369391531e-05 - - -3.2067000865936279e-02 5.0400421023368835e-02 - <_> - - 0 -1 1217 -1.7410600557923317e-02 - - 9.9460333585739136e-02 -7.5129806995391846e-02 - <_> - - 0 -1 1218 -5.4158121347427368e-03 - - 1.5448880195617676e-01 -5.9565600007772446e-02 - <_> - - 0 -1 1219 -2.7247680351138115e-02 - - -3.5382598638534546e-01 2.4235310032963753e-02 - <_> - - 0 -1 1220 -2.2197259590029716e-02 - - -2.9720589518547058e-01 2.1416569128632545e-02 - <_> - - 0 -1 1221 -8.5453793406486511e-02 - - 7.3914438486099243e-02 -9.8143801093101501e-02 - <_> - - 0 -1 1222 -2.6743279770016670e-02 - - -3.8940310478210449e-01 5.3767771460115910e-03 - <_> - - 0 -1 1223 -8.2498956471681595e-03 - - 1.9860340654850006e-01 -3.9557371288537979e-02 - <_> - - 0 -1 1224 -2.2797500714659691e-02 - - 9.9678412079811096e-02 -6.2613576650619507e-02 - <_> - - 0 -1 1225 9.7113639640156180e-05 - - -8.4188252687454224e-02 9.3866080045700073e-02 - <_> - - 0 -1 1226 2.9884429648518562e-02 - - -2.3356929421424866e-02 1.4618140459060669e-01 - <_> - - 0 -1 1227 -2.6803839951753616e-02 - - 1.4178399741649628e-01 -6.2550060451030731e-02 - <_> - - 0 -1 1228 -1.9411399960517883e-02 - - -6.3382750749588013e-01 1.6149589791893959e-02 - <_> - - 0 -1 1229 1.2110219895839691e-01 - - 2.3238999769091606e-02 -3.4702530503273010e-01 - <_> - - 0 -1 1230 9.2202579253353179e-05 - - -7.8421503305435181e-02 4.3959248811006546e-02 - <_> - - 0 -1 1231 1.7242589965462685e-02 - - 2.6261070743203163e-02 -2.9944649338722229e-01 - <_> - - 0 -1 1232 -1.1420710012316704e-02 - - -3.6522969603538513e-01 7.9645831137895584e-03 - <_> - - 0 -1 1233 -2.0810069516301155e-02 - - 1.3638339936733246e-01 -5.4033048450946808e-02 - <_> - - 0 -1 1234 -1.4103479683399200e-02 - - -3.7893921136856079e-01 1.3394010253250599e-02 - <_> - - 0 -1 1235 -4.7581768594682217e-03 - - -3.3748060464859009e-01 2.0751159638166428e-02 - <_> - - 0 -1 1236 1.6709830611944199e-02 - - -2.8125260025262833e-02 7.9117581248283386e-02 - <_> - - 0 -1 1237 -7.5444072484970093e-02 - - 3.5082611441612244e-01 -1.9444769248366356e-02 - <_> - - 0 -1 1238 1.7338210344314575e-01 - - -3.3310770522803068e-03 4.4801530241966248e-01 - <_> - - 0 -1 1239 -1.4232039451599121e-01 - - -2.2757869958877563e-01 3.3073060214519501e-02 - <_> - - 0 -1 1240 -2.2956749889999628e-03 - - 6.3606172800064087e-02 -3.3936798572540283e-02 - <_> - - 0 -1 1241 -1.0921280045295134e-04 - - 8.7956167757511139e-02 -9.4514213502407074e-02 - <_> - - 0 -1 1242 -1.5123720280826092e-02 - - 1.1071979999542236e-01 -2.7487419545650482e-02 - <_> - - 0 -1 1243 2.1835550665855408e-02 - - -4.8312459141016006e-02 1.4729049801826477e-01 - <_> - - 0 -1 1244 8.3796076476573944e-02 - - 1.6879159957170486e-02 -2.2147430479526520e-01 - <_> - - 0 -1 1245 -3.8371179252862930e-02 - - -5.2152740955352783e-01 1.4304329641163349e-02 - <_> - - 0 -1 1246 1.7588760238140821e-03 - - -4.3274711817502975e-02 4.0150411427021027e-02 - <_> - - 0 -1 1247 -1.6422629356384277e-02 - - -5.8441460132598877e-01 1.0517139919102192e-02 - <_> - - 0 -1 1248 1.2245160341262817e-01 - - -9.6191419288516045e-03 1.8290150165557861e-01 - <_> - - 0 -1 1249 -2.7571219950914383e-02 - - -5.1605522632598877e-01 1.2647570110857487e-02 - <_> - - 0 -1 1250 -2.2236290574073792e-01 - - 3.4756079316139221e-01 -1.0084490291774273e-02 - <_> - - 0 -1 1251 -2.2003330290317535e-02 - - -2.8134641051292419e-01 2.2772060707211494e-02 - <_> - - 0 -1 1252 -4.2912889271974564e-02 - - -4.7846621274948120e-01 1.2552970089018345e-02 - <_> - - 0 -1 1253 -1.4352230355143547e-02 - - 1.6642050445079803e-01 -4.6472709625959396e-02 - <_> - - 0 -1 1254 -4.1513590258546174e-04 - - -2.5722318887710571e-01 7.7890746295452118e-02 - <_> - - 0 -1 1255 1.2504369951784611e-03 - - -4.4778529554605484e-02 1.6678680479526520e-01 - <_> - - 0 -1 1256 1.7647480592131615e-02 - - 7.0636598393321037e-03 -3.3736529946327209e-01 - <_> - - 0 -1 1257 -3.4471070393919945e-03 - - 7.5172327458858490e-02 -8.8124260306358337e-02 - <_> - - 0 -1 1258 -5.0494200550019741e-03 - - 1.0575070232152939e-01 -8.7237127125263214e-02 - <_> - - 0 -1 1259 -3.4959301352500916e-02 - - -4.6849849820137024e-01 1.5208450146019459e-02 - <_> - - 0 -1 1260 1.3161719776690006e-02 - - -5.8647651225328445e-02 7.0248216390609741e-02 - <_> - - 0 -1 1261 -3.0560119077563286e-02 - - 2.3170590400695801e-01 -4.3255310505628586e-02 - <_> - - 0 -1 1262 1.0238910093903542e-02 - - 3.1525779515504837e-02 -2.3876720666885376e-01 - <_> - - 0 -1 1263 2.4965599179267883e-02 - - 1.8794050440192223e-02 -3.6637490987777710e-01 - <_> - - 0 -1 1264 -3.2253500074148178e-02 - - 1.1270649731159210e-01 -2.9213100671768188e-02 - <_> - - 0 -1 1265 7.8411642462015152e-03 - - -7.2421632707118988e-02 1.4066340029239655e-01 - <_> - - 0 -1 1266 -1.4276880538091063e-03 - - 1.5807349979877472e-01 -6.6449962556362152e-02 - <_> - - 0 -1 1267 1.1470150202512741e-03 - - 4.9573831260204315e-02 -1.4308080077171326e-01 - <_> - - 0 -1 1268 -8.6412113159894943e-03 - - 7.2913803160190582e-02 -5.3943529725074768e-02 - <_> - - 0 -1 1269 1.1576799442991614e-03 - - -5.4953150451183319e-02 1.2435220181941986e-01 - <_> - - 0 -1 1270 1.1792180157499388e-04 - - -4.8270799219608307e-02 5.9082880616188049e-02 - <_> - - 0 -1 1271 6.5883439965546131e-03 - - 2.6230650022625923e-02 -2.6026728749275208e-01 - <_> - - 0 -1 1272 2.1313619799911976e-03 - - -5.6807540357112885e-02 2.5055360794067383e-01 - <_> - - 0 -1 1273 1.1035949923098087e-02 - - 2.8926210477948189e-02 -2.4025170505046844e-01 - <_> - - 0 -1 1274 9.8337702453136444e-02 - - -1.6552689485251904e-03 9.9841469526290894e-01 - <_> - - 0 -1 1275 -3.6867920309305191e-02 - - 3.0115479230880737e-01 -1.9335890188813210e-02 - <_> - - 0 -1 1276 -2.2431310266256332e-02 - - 3.6680039763450623e-01 -8.6105773225426674e-03 - <_> - - 0 -1 1277 9.2809292254969478e-05 - - -1.1851680278778076e-01 7.0009030401706696e-02 - <_> - - 0 -1 1278 6.0986801981925964e-03 - - 1.9825110211968422e-02 -5.1059758663177490e-01 - <_> - - 0 -1 1279 -1.0700259736040607e-04 - - 8.6945056915283203e-02 -7.9039849340915680e-02 - <_> - - 0 -1 1280 -1.1850359849631786e-02 - - -3.4886360168457031e-01 2.8463730588555336e-02 - <_> - - 0 -1 1281 -1.0024739895015955e-03 - - 1.2310550361871719e-01 -5.6302350014448166e-02 - <_> - - 0 -1 1282 -9.6648662292864174e-05 - - 5.9419918805360794e-02 -5.0511650741100311e-02 - <_> - - 0 -1 1283 -1.2687359936535358e-02 - - 1.6123920679092407e-01 -4.1998729109764099e-02 - <_> - - 0 -1 1284 2.0934140309691429e-02 - - 1.3292470015585423e-02 -2.5384590029716492e-01 - <_> - - 0 -1 1285 -8.7683666497468948e-03 - - -2.2354759275913239e-01 2.7231190353631973e-02 - <_> - - 0 -1 1286 -7.8724078775849193e-05 - - 5.1653359085321426e-02 -3.4923698753118515e-02 - <_> - - 0 -1 1287 -4.5617809519171715e-03 - - 1.8845909833908081e-01 -3.6218199878931046e-02 - <_> - - 0 -1 1288 2.0101569592952728e-02 - - -1.2270460277795792e-01 5.8831069618463516e-02 - <_> - - 0 -1 1289 -3.1801089644432068e-03 - - 1.2960070371627808e-01 -6.7920677363872528e-02 - <_> - - 0 -1 1290 5.7645021006464958e-03 - - 1.8351480364799500e-02 -2.4903400242328644e-01 - <_> - - 0 -1 1291 1.0693079791963100e-02 - - 9.6924025565385818e-03 -5.9504520893096924e-01 - <_> - - 0 -1 1292 2.8986420948058367e-03 - - 5.1718991249799728e-02 -1.0468599945306778e-01 - <_> - - 0 -1 1293 1.3929660618305206e-01 - - -1.7674539238214493e-02 3.9723560214042664e-01 - <_> - - 0 -1 1294 1.1850619921460748e-04 - - -4.4557079672813416e-02 5.6994900107383728e-02 - <_> - - 0 -1 1295 -1.8981580436229706e-01 - - -2.1773189306259155e-01 2.9134890064597130e-02 - <_> - - 0 -1 1296 -5.5389281362295151e-02 - - -2.5266540050506592e-01 1.0798510164022446e-02 - <_> - - 0 -1 1297 -1.0122820094693452e-04 - - 8.2761690020561218e-02 -7.4456267058849335e-02 - <_> - - 0 -1 1298 5.2048019133508205e-03 - - -2.6181850582361221e-02 7.8894980251789093e-02 - <_> - - 0 -1 1299 -5.3310650400817394e-03 - - 1.0743349790573120e-01 -7.3078803718090057e-02 - <_> - - 0 -1 1300 3.1986359506845474e-02 - - -4.6606259420514107e-03 3.6849200725555420e-01 - <_> - - 0 -1 1301 6.1502759344875813e-03 - - 3.5163421183824539e-02 -1.9803290069103241e-01 - <_> - - 0 -1 1302 -7.9923700541257858e-03 - - 4.9680449068546295e-02 -4.3847151100635529e-02 - <_> - - 0 -1 1303 7.9515464603900909e-03 - - -5.0392020493745804e-02 1.3661290705204010e-01 - <_> - - 0 -1 1304 6.9977752864360809e-02 - - -8.1138126552104950e-03 3.4194231033325195e-01 - <_> - - 0 -1 1305 5.3981081582605839e-03 - - 3.4939639270305634e-02 -1.8219280242919922e-01 - <_> - - 0 -1 1306 7.9396478831768036e-02 - - 2.4603689089417458e-02 -2.8492900729179382e-01 - <_> - - 0 -1 1307 2.5731830392032862e-03 - - -3.3786009997129440e-02 1.9118849933147430e-01 - <_> - - 0 -1 1308 1.5055339783430099e-02 - - 1.5328220091760159e-02 -4.0066361427307129e-01 - <_> - - 0 -1 1309 -7.9386271536350250e-03 - - 1.2507259845733643e-01 -4.7316979616880417e-02 - <_> - - 0 -1 1310 -1.1256839934503660e-04 - - 8.2493722438812256e-02 -6.8745993077754974e-02 - <_> - - 0 -1 1311 -1.0478479816811159e-04 - - 8.4922343492507935e-02 -7.9465553164482117e-02 - <_> - - 0 -1 1312 1.0192309855483472e-04 - - -5.1062118262052536e-02 6.2753282487392426e-02 - <_> - - 0 -1 1313 1.2042010348523036e-04 - - -7.9890377819538116e-02 1.0798239707946777e-01 - <_> - - 0 -1 1314 -3.0539339408278465e-02 - - -4.6622350811958313e-01 8.6310431361198425e-03 - <_> - - 0 -1 1315 -1.4449549838900566e-02 - - -2.3427480459213257e-01 2.6667300611734390e-02 - <_> - - 0 -1 1316 5.5837441235780716e-02 - - 1.5657029580324888e-03 -5.9545511007308960e-01 - <_> - - 0 -1 1317 1.1898560449481010e-02 - - -4.8378799110651016e-02 1.1720660328865051e-01 - <_> - - 0 -1 1318 2.3296780884265900e-02 - - 3.9587449282407761e-03 -2.4597780406475067e-01 - <_> - - 0 -1 1319 -9.4626396894454956e-02 - - 5.1669899374246597e-02 -1.2657889723777771e-01 - <_> - - 0 -1 1320 -1.1996289715170860e-02 - - 5.7097338140010834e-02 -1.0790690034627914e-01 - <_> - - 0 -1 1321 3.3058781176805496e-02 - - -4.4020261615514755e-02 2.2163359820842743e-01 - <_> - - 0 -1 1322 6.1287730932235718e-02 - - 1.3820749707520008e-02 -3.8039529323577881e-01 - <_> - - 0 -1 1323 -8.0876126885414124e-02 - - 2.1562319993972778e-01 -3.4390449523925781e-02 - <_> - - 0 -1 1324 -1.1805639951489866e-04 - - 3.8330901414155960e-02 -3.7074659019708633e-02 - <_> - - 0 -1 1325 -8.8057601824402809e-03 - - 7.8959703445434570e-02 -7.9623617231845856e-02 - <_> - - 0 -1 1326 2.3725049570202827e-02 - - -2.6400180533528328e-02 1.3833920657634735e-01 - <_> - - 0 -1 1327 -1.3849999755620956e-02 - - 1.8637719750404358e-01 -4.6536069363355637e-02 - <_> - - 0 -1 1328 -1.6478329896926880e-02 - - -4.7374120354652405e-01 2.0242879167199135e-02 - <_> - - 0 -1 1329 4.9397401511669159e-02 - - 1.4704129658639431e-02 -4.0255519747734070e-01 - <_> - - 0 -1 1330 -9.9877286702394485e-03 - - 6.6189177334308624e-02 -2.5849020108580589e-02 - <_> - - 0 -1 1331 -4.5243981294333935e-03 - - 9.7362592816352844e-02 -6.8595573306083679e-02 - <_> - - 0 -1 1332 -2.5442579761147499e-02 - - -1.0062149912118912e-01 7.2136692702770233e-02 - <_> - - 0 -1 1333 -1.9979789853096008e-02 - - 1.2334229797124863e-01 -4.8690248280763626e-02 - <_> - - 0 -1 1334 8.5907518863677979e-02 - - 1.7899649217724800e-02 -1.2917029857635498e-01 - <_> - - 0 -1 1335 2.4627919774502516e-03 - - 2.1522510796785355e-02 -2.7410501241683960e-01 - <_> - - 0 -1 1336 -9.7198048024438322e-05 - - 1.8001170456409454e-01 -3.0150210857391357e-01 - <_> - - 0 -1 1337 1.0423920117318630e-02 - - -5.4001849144697189e-02 1.2072809785604477e-01 - <_> - - 0 -1 1338 -1.3543060049414635e-02 - - -4.4932109117507935e-01 2.1867370232939720e-02 - <_> - - 0 -1 1339 -1.2225230224430561e-02 - - 1.0308980196714401e-01 -6.8183869123458862e-02 - <_> - - 0 -1 1340 -5.4508589208126068e-02 - - -3.1953170895576477e-01 1.8314510583877563e-02 - <_> - - 0 -1 1341 1.1417720088502392e-04 - - -7.2025686502456665e-02 8.4036201238632202e-02 - <_> - - 0 -1 1342 3.3673789352178574e-02 - - 1.7297180369496346e-02 -3.4836369752883911e-01 - <_> - - 0 -1 1343 -1.6943500377237797e-03 - - 1.9118130207061768e-01 -3.8169119507074356e-02 - <_> - - 0 -1 1344 4.3568409979343414e-02 - - 3.3935939427465200e-03 -2.2542549669742584e-01 - <_> - - 0 -1 1345 -1.5978990122675896e-02 - - -1.7443810403347015e-01 3.3246420323848724e-02 - <_> - - 0 -1 1346 -1.7225230112671852e-03 - - 6.4159378409385681e-02 -2.8688399121165276e-02 - <_> - - 0 -1 1347 -1.1562029831111431e-02 - - -2.5792458653450012e-01 2.6155490428209305e-02 - <_> - - 0 -1 1348 8.8590721134096384e-05 - - -5.9500779956579208e-02 8.7054483592510223e-02 - <_> - - 0 -1 1349 1.8556630238890648e-03 - - -4.5497611165046692e-02 1.4414270222187042e-01 - <_> - - 0 -1 1350 -1.1980470299022272e-04 - - 4.4530108571052551e-02 -6.0078341513872147e-02 - <_> - - 0 -1 1351 -9.8948839877266437e-05 - - 8.0990999937057495e-02 -7.4739851057529449e-02 - <_> - - 0 -1 1352 -9.8720411187969148e-05 - - 1.0564380139112473e-01 -8.1821396946907043e-02 - <_> - - 0 -1 1353 8.2602314651012421e-03 - - 2.4992190301418304e-02 -2.4782909452915192e-01 - <_> - - 0 -1 1354 9.8948839877266437e-05 - - -7.5029492378234863e-02 7.9507932066917419e-02 - <_> - - 0 -1 1355 4.7536417841911316e-03 - - 4.3906200677156448e-02 -1.2667590379714966e-01 - <_> - - 0 -1 1356 -7.1766801178455353e-02 - - -7.3415267467498779e-01 2.7243639342486858e-03 - <_> - - 0 -1 1357 2.7130648959428072e-03 - - -7.5170762836933136e-02 7.5650051236152649e-02 - <_> - - 0 -1 1358 -2.5248030200600624e-02 - - 2.0795029401779175e-01 -2.9544029384851456e-02 - <_> - - 0 -1 1359 -3.2913060858845711e-03 - - 1.3707050681114197e-01 -4.0945030748844147e-02 - <_> - - 0 -1 1360 -1.1903030099347234e-04 - - 7.7548287808895111e-02 -1.7951180040836334e-01 - <_> - - 0 -1 1361 -1.7214129911735654e-03 - - 1.2350810319185257e-01 -4.7916881740093231e-02 - <_> - - 0 -1 1362 1.9237160682678223e-02 - - -6.1758807860314846e-03 4.0595421195030212e-01 - <_> - - 0 -1 1363 -1.6620019450783730e-03 - - -1.8583220243453979e-01 3.3767789602279663e-02 - <_> - - 0 -1 1364 -7.1353819221258163e-03 - - 1.6217699646949768e-01 -1.4994939789175987e-02 - <_> - - 0 -1 1365 -1.0784330079331994e-03 - - 1.0595580190420151e-01 -6.8027436733245850e-02 - <_> - - 0 -1 1366 1.3168440200388432e-02 - - 2.5256929919123650e-02 -2.4681550264358521e-01 - <_> - - 0 -1 1367 4.3766219168901443e-02 - - 8.1717539578676224e-03 -6.8213367462158203e-01 - <_> - - 0 -1 1368 9.7744129598140717e-03 - - -8.9659281075000763e-03 3.3161351084709167e-01 - <_> - 279 - -1.4309279918670654e+00 - - <_> - - 0 -1 1369 -1.8712989985942841e-02 - - 3.1699758768081665e-01 -1.7198270559310913e-01 - <_> - - 0 -1 1370 1.3795300037600100e-04 - - -2.1540990471839905e-01 6.6136591136455536e-02 - <_> - - 0 -1 1371 6.7428596317768097e-02 - - -5.2226951811462641e-04 -3.5010319824218750e+03 - <_> - - 0 -1 1372 -2.4965980648994446e-01 - - -2.7784270048141479e-01 5.9022889472544193e-03 - <_> - - 0 -1 1373 -2.6605049148201942e-02 - - 2.6684170961380005e-01 -1.3904400169849396e-01 - <_> - - 0 -1 1374 -2.3173440247774124e-02 - - 1.3601189851760864e-01 -1.0871589928865433e-01 - <_> - - 0 -1 1375 -5.5514220148324966e-03 - - 1.9473889470100403e-01 -1.4551539719104767e-01 - <_> - - 0 -1 1376 7.0825159549713135e-02 - - -2.6063209772109985e-01 7.9021461308002472e-02 - <_> - - 0 -1 1377 -2.3554509505629539e-02 - - 2.9026520252227783e-01 -7.8398458659648895e-02 - <_> - - 0 -1 1378 -4.3396450579166412e-02 - - 2.4802340567111969e-01 -4.1862510144710541e-02 - <_> - - 0 -1 1379 3.9755448698997498e-02 - - -8.2383207976818085e-02 2.5565001368522644e-01 - <_> - - 0 -1 1380 -4.7884290106594563e-03 - - 9.1564856469631195e-02 -8.8997103273868561e-02 - <_> - - 0 -1 1381 1.1186640040250495e-04 - - -1.7876160144805908e-01 9.3426421284675598e-02 - <_> - - 0 -1 1382 1.8653420731425285e-02 - - -6.4205586910247803e-02 3.7113490700721741e-01 - <_> - - 0 -1 1383 4.3760719709098339e-03 - - -1.9954790174961090e-01 7.6214671134948730e-02 - <_> - - 0 -1 1384 -1.4996459707617760e-02 - - 1.8930730223655701e-01 -2.2424779832363129e-02 - <_> - - 0 -1 1385 5.5244299583137035e-03 - - -7.4144102632999420e-02 2.5318071246147156e-01 - <_> - - 0 -1 1386 -5.6609991006553173e-03 - - -3.3977329730987549e-01 3.1114479526877403e-02 - <_> - - 0 -1 1387 -5.7609830982983112e-03 - - 1.1648339778184891e-01 -1.1574240028858185e-01 - <_> - - 0 -1 1388 -2.6480090618133545e-01 - - 1.8164689838886261e-01 -7.6448231935501099e-02 - <_> - - 0 -1 1389 -3.2054901123046875e-02 - - 2.7392259240150452e-01 -4.6557001769542694e-02 - <_> - - 0 -1 1390 5.6860670447349548e-03 - - -2.5537090376019478e-02 1.2572510540485382e-01 - <_> - - 0 -1 1391 -4.1426587849855423e-03 - - 9.9965266883373260e-02 -1.3714949786663055e-01 - <_> - - 0 -1 1392 -2.5222830474376678e-02 - - -2.1590410172939301e-01 3.3361118286848068e-02 - <_> - - 0 -1 1393 -1.0513579763937742e-04 - - 5.9993639588356018e-02 -2.2432969510555267e-01 - <_> - - 0 -1 1394 3.2108161598443985e-02 - - -4.5822519809007645e-02 2.6781380176544189e-01 - <_> - - 0 -1 1395 -1.0873610153794289e-02 - - -3.4296339750289917e-01 3.7043921649456024e-02 - <_> - - 0 -1 1396 -1.0672210156917572e-01 - - -1.8248610198497772e-01 2.3051809519529343e-02 - <_> - - 0 -1 1397 9.5376763492822647e-03 - - 3.3178020268678665e-02 -3.1444761157035828e-01 - <_> - - 0 -1 1398 -1.5397969633340836e-02 - - -4.4942921400070190e-01 2.5554839521646500e-02 - <_> - - 0 -1 1399 -1.8874239176511765e-02 - - 8.9738510549068451e-02 -1.1818610131740570e-01 - <_> - - 0 -1 1400 -1.3807339593768120e-02 - - -4.0170770883560181e-01 3.7115719169378281e-03 - <_> - - 0 -1 1401 -4.8676962032914162e-03 - - -3.6395189166069031e-01 2.8655750676989555e-02 - <_> - - 0 -1 1402 1.1547089554369450e-02 - - -4.3462570756673813e-02 2.4953410029411316e-01 - <_> - - 0 -1 1403 1.8631519749760628e-02 - - -5.1945161074399948e-02 2.0126770436763763e-01 - <_> - - 0 -1 1404 2.2162059321999550e-02 - - -2.8367469087243080e-02 1.8125070631504059e-01 - <_> - - 0 -1 1405 -1.3282280415296555e-02 - - -4.3967109918594360e-01 2.3154130205512047e-02 - <_> - - 0 -1 1406 -4.7818228602409363e-02 - - 1.5270139276981354e-01 -6.4764626324176788e-02 - <_> - - 0 -1 1407 -7.0768646895885468e-02 - - 2.2559310495853424e-01 -4.6383719891309738e-02 - <_> - - 0 -1 1408 2.4587990716099739e-02 - - -7.9800963401794434e-02 1.2262780219316483e-01 - <_> - - 0 -1 1409 -2.9572639614343643e-03 - - -2.5401321053504944e-01 3.7109810858964920e-02 - <_> - - 0 -1 1410 7.7164188027381897e-02 - - 3.1731691211462021e-02 -2.7239298820495605e-01 - <_> - - 0 -1 1411 3.5500440746545792e-02 - - -4.7737870365381241e-02 2.3480390012264252e-01 - <_> - - 0 -1 1412 2.4486819282174110e-02 - - -2.2118499502539635e-02 1.6140830516815186e-01 - <_> - - 0 -1 1413 2.2626599296927452e-02 - - -5.0503190606832504e-02 2.0568129420280457e-01 - <_> - - 0 -1 1414 7.3773749172687531e-03 - - 3.1938448548316956e-02 -1.6982619464397430e-01 - <_> - - 0 -1 1415 -1.2515950016677380e-02 - - 1.2577000260353088e-01 -7.3859736323356628e-02 - <_> - - 0 -1 1416 2.1496510598808527e-03 - - 6.6499963402748108e-02 -1.5948709845542908e-01 - <_> - - 0 -1 1417 3.2783868908882141e-01 - - -3.5387851297855377e-02 2.9959291219711304e-01 - <_> - - 0 -1 1418 -1.2928809970617294e-02 - - -4.2437180876731873e-01 1.4925819821655750e-02 - <_> - - 0 -1 1419 -2.9543310403823853e-02 - - -2.5968870520591736e-01 3.0672630295157433e-02 - <_> - - 0 -1 1420 1.3888539746403694e-02 - - -2.9191760346293449e-02 2.6650959253311157e-01 - <_> - - 0 -1 1421 -1.4243409968912601e-02 - - 1.1419390141963959e-01 -7.5002923607826233e-02 - <_> - - 0 -1 1422 -2.4950960651040077e-02 - - -4.4170901179313660e-01 1.2046439573168755e-02 - <_> - - 0 -1 1423 -1.3908210210502148e-02 - - -2.9652971029281616e-01 3.4981660544872284e-02 - <_> - - 0 -1 1424 1.2620849534869194e-02 - - 3.8449760526418686e-02 -3.2533881068229675e-01 - <_> - - 0 -1 1425 -7.8615900129079819e-03 - - 1.6396899521350861e-01 -5.0281271338462830e-02 - <_> - - 0 -1 1426 1.3247850351035595e-02 - - -4.8171751201152802e-02 1.3091330230236053e-01 - <_> - - 0 -1 1427 -1.9628429785370827e-02 - - -3.0828440189361572e-01 2.6105429977178574e-02 - <_> - - 0 -1 1428 -1.1116229870822281e-04 - - 4.9499809741973877e-02 -6.9948449730873108e-02 - <_> - - 0 -1 1429 -6.2212720513343811e-03 - - 2.5001430511474609e-01 -3.9167519658803940e-02 - <_> - - 0 -1 1430 -7.5383752118796110e-05 - - 6.1046328395605087e-02 -7.2739817202091217e-02 - <_> - - 0 -1 1431 -3.9724968373775482e-03 - - 1.8301470577716827e-01 -4.4407390058040619e-02 - <_> - - 0 -1 1432 -4.9981191754341125e-02 - - -8.9163497090339661e-02 1.4388060197234154e-02 - <_> - - 0 -1 1433 2.9629090800881386e-02 - - 2.6251930743455887e-02 -3.2541900873184204e-01 - <_> - - 0 -1 1434 3.1110059469938278e-02 - - -3.3575788140296936e-02 4.5157098770141602e-01 - <_> - - 0 -1 1435 -7.4198678135871887e-02 - - 1.0326889902353287e-01 -7.6938740909099579e-02 - <_> - - 0 -1 1436 3.9898898452520370e-02 - - -2.5839729234576225e-02 1.5435829758644104e-01 - <_> - - 0 -1 1437 -6.2805712223052979e-03 - - -2.6195061206817627e-01 2.7357010170817375e-02 - <_> - - 0 -1 1438 -4.1073351167142391e-03 - - 1.4708800613880157e-01 -5.0326839089393616e-02 - <_> - - 0 -1 1439 -4.9765571020543575e-03 - - 8.6656570434570312e-02 -8.3321280777454376e-02 - <_> - - 0 -1 1440 5.6225311011075974e-02 - - -9.0561211109161377e-03 1.3645470142364502e-01 - <_> - - 0 -1 1441 -6.7956328392028809e-02 - - 2.2713039815425873e-01 -3.3235240727663040e-02 - <_> - - 0 -1 1442 8.5731752216815948e-02 - - 3.3442281186580658e-02 -2.3163549602031708e-01 - <_> - - 0 -1 1443 1.7541209235787392e-02 - - -6.9512091577053070e-02 1.1899550259113312e-01 - <_> - - 0 -1 1444 -1.7374299932271242e-03 - - 9.2172093689441681e-02 -2.2669219970703125e-01 - <_> - - 0 -1 1445 2.1910879760980606e-02 - - -4.3604359030723572e-02 2.0508739352226257e-01 - <_> - - 0 -1 1446 -7.7593423426151276e-02 - - -3.1961518526077271e-01 7.1907751262187958e-03 - <_> - - 0 -1 1447 9.2180138453841209e-03 - - -7.5073778629302979e-02 1.0250449925661087e-01 - <_> - - 0 -1 1448 2.6055829599499702e-02 - - 1.3381079770624638e-02 -2.5850158929824829e-01 - <_> - - 0 -1 1449 2.8278680518269539e-02 - - 2.4392090737819672e-02 -3.4649389982223511e-01 - <_> - - 0 -1 1450 -2.8839879669249058e-03 - - 4.6307310461997986e-02 -3.9890531450510025e-02 - <_> - - 0 -1 1451 -3.2021909952163696e-02 - - -4.2234519124031067e-01 1.6014119610190392e-02 - <_> - - 0 -1 1452 8.2102023065090179e-02 - - 1.8811950460076332e-02 -3.5674419999122620e-01 - <_> - - 0 -1 1453 -1.6890240833163261e-02 - - 1.8055370450019836e-01 -3.9605740457773209e-02 - <_> - - 0 -1 1454 3.9422731846570969e-02 - - -4.7247570008039474e-02 1.5648010373115540e-01 - <_> - - 0 -1 1455 -3.4644010011106730e-03 - - 1.0405050218105316e-01 -8.3477586507797241e-02 - <_> - - 0 -1 1456 8.5640960605815053e-05 - - -6.7565880715847015e-02 6.6931001842021942e-02 - <_> - - 0 -1 1457 -2.3889070376753807e-02 - - 1.9076910614967346e-01 -3.8808900862932205e-02 - <_> - - 0 -1 1458 1.0652880184352398e-02 - - -6.8672597408294678e-02 1.1517660319805145e-01 - <_> - - 0 -1 1459 4.0198648348450661e-03 - - 4.3745230883359909e-02 -1.7597760260105133e-01 - <_> - - 0 -1 1460 2.8608399443328381e-03 - - 4.2260829359292984e-02 -2.9830691218376160e-01 - <_> - - 0 -1 1461 -1.3064390420913696e-01 - - -3.3777090907096863e-01 1.9081590697169304e-02 - <_> - - 0 -1 1462 8.4700539708137512e-02 - - 2.7477950789034367e-03 -6.2895822525024414e-01 - <_> - - 0 -1 1463 1.0658860264811665e-04 - - -9.3349710106849670e-02 7.5861856341362000e-02 - <_> - - 0 -1 1464 -6.0290478169918060e-02 - - -2.0990860462188721e-01 5.9476150199770927e-03 - <_> - - 0 -1 1465 2.5699030607938766e-02 - - 2.2030049934983253e-02 -3.1111681461334229e-01 - <_> - - 0 -1 1466 -9.2062582552898675e-05 - - 5.0981931388378143e-02 -4.3970961123704910e-02 - <_> - - 0 -1 1467 -1.6737770056352019e-03 - - -2.6017209887504578e-01 2.4308089166879654e-02 - <_> - - 0 -1 1468 -2.1178390830755234e-02 - - 1.5146270394325256e-01 -6.5389521420001984e-02 - <_> - - 0 -1 1469 2.3533850908279419e-03 - - 2.2910179570317268e-02 -2.8287449479103088e-01 - <_> - - 0 -1 1470 5.3083989769220352e-02 - - -1.6384899616241455e-02 3.8097709417343140e-01 - <_> - - 0 -1 1471 3.9989359676837921e-02 - - -2.1868970245122910e-02 3.1823658943176270e-01 - <_> - - 0 -1 1472 -6.6623869352042675e-03 - - 1.5217649936676025e-01 -2.1288560703396797e-02 - <_> - - 0 -1 1473 -4.5556358993053436e-02 - - -7.7857428789138794e-01 8.6588803678750992e-03 - <_> - - 0 -1 1474 3.0047509353607893e-03 - - -5.2169818431138992e-02 7.0881247520446777e-02 - <_> - - 0 -1 1475 -7.3779281228780746e-03 - - 1.9265919923782349e-01 -3.5522188991308212e-02 - <_> - - 0 -1 1476 9.5453477115370333e-05 - - -9.7466319799423218e-02 9.6455052495002747e-02 - <_> - - 0 -1 1477 -1.0967990383505821e-02 - - 8.8278792798519135e-02 -7.3955200612545013e-02 - <_> - - 0 -1 1478 -8.9160412549972534e-01 - - -3.5863798856735229e-01 3.7620719522237778e-03 - <_> - - 0 -1 1479 -1.0846470296382904e-01 - - -3.3631581068038940e-01 1.9724899902939796e-02 - <_> - - 0 -1 1480 -1.0542329982854426e-04 - - 9.7968801856040955e-02 -6.4257159829139709e-02 - <_> - - 0 -1 1481 -9.3890920281410217e-02 - - 8.7082400918006897e-02 -7.8961193561553955e-02 - <_> - - 0 -1 1482 9.5453477115370333e-05 - - -5.9822808951139450e-02 5.6823138147592545e-02 - <_> - - 0 -1 1483 -9.8177138715982437e-03 - - 1.6365979611873627e-01 -4.4457729905843735e-02 - <_> - - 0 -1 1484 -9.3185197329148650e-05 - - 5.6417450308799744e-02 -3.6796100437641144e-02 - <_> - - 0 -1 1485 9.4171933596953750e-05 - - -8.0542407929897308e-02 8.3805859088897705e-02 - <_> - - 0 -1 1486 8.7554886704310775e-05 - - -4.0428161621093750e-02 5.6475739926099777e-02 - <_> - - 0 -1 1487 -2.7950000017881393e-02 - - -6.4220017194747925e-01 9.8489876836538315e-03 - <_> - - 0 -1 1488 -2.2207939997315407e-02 - - 1.1385910212993622e-01 -7.4823513627052307e-02 - <_> - - 0 -1 1489 -3.5269840154796839e-03 - - 5.6313350796699524e-02 -1.1280319839715958e-01 - <_> - - 0 -1 1490 9.3353092670440674e-03 - - 1.5176270157098770e-02 -1.7910550534725189e-01 - <_> - - 0 -1 1491 7.9498797655105591e-02 - - -4.1115999221801758e-02 2.0831950008869171e-01 - <_> - - 0 -1 1492 -6.4745172858238220e-02 - - 5.9019170701503754e-02 -5.9164099395275116e-02 - <_> - - 0 -1 1493 -3.7454050779342651e-01 - - -3.1103798747062683e-01 2.5050660595297813e-02 - <_> - - 0 -1 1494 -1.4513680071104318e-04 - - 3.6691628396511078e-02 -4.0914330631494522e-02 - <_> - - 0 -1 1495 7.7395797707140446e-03 - - 2.5194179266691208e-02 -2.8290599584579468e-01 - <_> - - 0 -1 1496 4.1609802283346653e-03 - - -6.7230418324470520e-02 1.1040230095386505e-01 - <_> - - 0 -1 1497 -1.0994499549269676e-02 - - -2.7069330215454102e-01 2.5201620534062386e-02 - <_> - - 0 -1 1498 -7.6759129762649536e-02 - - -1.7894430458545685e-01 1.5741320326924324e-02 - <_> - - 0 -1 1499 -2.9416190460324287e-02 - - 1.4778959751129150e-01 -6.1628758907318115e-02 - <_> - - 0 -1 1500 2.8790929913520813e-01 - - 1.5145620331168175e-02 -4.0490359067916870e-01 - <_> - - 0 -1 1501 -1.0059560008812696e-04 - - 7.6832540333271027e-02 -8.3564698696136475e-02 - <_> - - 0 -1 1502 4.2243651114404202e-03 - - -2.9256410896778107e-02 1.2022250145673752e-01 - <_> - - 0 -1 1503 -2.5259390473365784e-02 - - -2.8604280948638916e-01 2.1992789581418037e-02 - <_> - - 0 -1 1504 -6.4038828015327454e-02 - - -2.1891179680824280e-01 1.0843659751117229e-02 - <_> - - 0 -1 1505 -7.0518881082534790e-02 - - 4.5709618926048279e-01 -1.6392199322581291e-02 - <_> - - 0 -1 1506 -7.0195732405409217e-05 - - 3.6932911723852158e-02 -3.7064079195261002e-02 - <_> - - 0 -1 1507 2.9889319557696581e-03 - - -3.7548080086708069e-02 1.8391540646553040e-01 - <_> - - 0 -1 1508 -3.4994310699403286e-03 - - 1.1269920319318771e-01 -5.1340840756893158e-02 - <_> - - 0 -1 1509 2.4127110838890076e-02 - - -4.1499000042676926e-02 1.7326690256595612e-01 - <_> - - 0 -1 1510 5.6061740033328533e-03 - - 1.2599259614944458e-02 -4.9376100301742554e-01 - <_> - - 0 -1 1511 -6.8790130317211151e-03 - - 1.2688520550727844e-01 -4.7930359840393066e-02 - <_> - - 0 -1 1512 -9.9475309252738953e-03 - - -3.0533370375633240e-01 3.5668209195137024e-02 - <_> - - 0 -1 1513 -6.0581211000680923e-03 - - 1.0993719846010208e-01 -5.5137481540441513e-02 - <_> - - 0 -1 1514 -8.6769327521324158e-02 - - 5.6110959500074387e-02 -9.3765012919902802e-02 - <_> - - 0 -1 1515 -1.0192230343818665e-01 - - 5.9622108936309814e-01 -1.1424260213971138e-02 - <_> - - 0 -1 1516 1.6004019975662231e-01 - - 7.1362429298460484e-03 -4.4572108983993530e-01 - <_> - - 0 -1 1517 3.9025470614433289e-03 - - -4.5999579131603241e-02 1.2214680016040802e-01 - <_> - - 0 -1 1518 1.1425039730966091e-02 - - 3.5727649927139282e-02 -4.2463791370391846e-01 - <_> - - 0 -1 1519 4.8979889601469040e-02 - - -3.1489778310060501e-02 2.0362310111522675e-01 - <_> - - 0 -1 1520 -1.3469650410115719e-02 - - -1.7559459805488586e-01 1.9817389547824860e-02 - <_> - - 0 -1 1521 1.0275639593601227e-02 - - 2.7038760483264923e-02 -2.3310990631580353e-01 - <_> - - 0 -1 1522 6.2424209900200367e-03 - - 3.4217160195112228e-02 -3.3560711145401001e-01 - <_> - - 0 -1 1523 -1.8931780010461807e-02 - - 1.2230350077152252e-01 -5.0813648849725723e-02 - <_> - - 0 -1 1524 1.9672000408172607e-01 - - 2.1031980868428946e-03 -3.7800818681716919e-01 - <_> - - 0 -1 1525 1.3458089902997017e-02 - - 1.8042970448732376e-02 -3.0950629711151123e-01 - <_> - - 0 -1 1526 -1.0042759822681546e-04 - - 3.4072581678628922e-02 -4.0977768599987030e-02 - <_> - - 0 -1 1527 -1.0216310329269618e-04 - - 7.3899388313293457e-02 -7.5234226882457733e-02 - <_> - - 0 -1 1528 -1.2140619568526745e-02 - - 1.2632420659065247e-01 -3.7841018289327621e-02 - <_> - - 0 -1 1529 -1.1189839802682400e-02 - - 1.6342529654502869e-01 -3.5992480814456940e-02 - <_> - - 0 -1 1530 -8.0074174329638481e-03 - - 3.0394570901989937e-02 -4.6366918832063675e-02 - <_> - - 0 -1 1531 -1.3145169941708446e-03 - - 1.1306670308113098e-01 -5.6612670421600342e-02 - <_> - - 0 -1 1532 -1.1575019918382168e-02 - - -7.0984877645969391e-02 2.3284029215574265e-02 - <_> - - 0 -1 1533 1.3627949357032776e-01 - - 1.2413679622113705e-02 -5.0667232275009155e-01 - <_> - - 0 -1 1534 -3.9589088410139084e-02 - - -9.5774747431278229e-02 8.6489180102944374e-03 - <_> - - 0 -1 1535 -1.6751129180192947e-02 - - -2.5233340263366699e-01 2.2889090701937675e-02 - <_> - - 0 -1 1536 -9.3176960945129395e-05 - - 8.7076880037784576e-02 -6.7520499229431152e-02 - <_> - - 0 -1 1537 -2.8843290638178587e-03 - - 1.1290279775857925e-01 -5.2280839532613754e-02 - <_> - - 0 -1 1538 3.0579629819840193e-03 - - 3.5874661058187485e-02 -1.8656499683856964e-01 - <_> - - 0 -1 1539 9.7428957815282047e-05 - - -1.1454830318689346e-01 5.5013570934534073e-02 - <_> - - 0 -1 1540 1.2528899824246764e-03 - - -5.5488720536231995e-02 1.4234280586242676e-01 - <_> - - 0 -1 1541 -1.0249209590256214e-03 - - -1.7321769893169403e-01 3.8605920970439911e-02 - <_> - - 0 -1 1542 -9.3161962926387787e-02 - - -5.7080817222595215e-01 7.1864281781017780e-03 - <_> - - 0 -1 1543 -1.1855579941766337e-04 - - 7.3641091585159302e-02 -7.7750876545906067e-02 - <_> - - 0 -1 1544 -1.0393650154583156e-04 - - 4.2040091007947922e-02 -3.4394789487123489e-02 - <_> - - 0 -1 1545 1.0028410179074854e-04 - - -7.0151716470718384e-02 1.0055100172758102e-01 - <_> - - 0 -1 1546 9.8116062581539154e-03 - - -5.7586219161748886e-02 1.2543989717960358e-01 - <_> - - 0 -1 1547 -1.6187250614166260e-02 - - -2.1058849990367889e-01 2.9680129140615463e-02 - <_> - - 0 -1 1548 -7.9579830169677734e-02 - - 2.7109518647193909e-01 -8.4382239729166031e-03 - <_> - - 0 -1 1549 -1.1105289449915290e-03 - - -1.0552699863910675e-01 5.2781209349632263e-02 - <_> - - 0 -1 1550 -1.4178539626300335e-02 - - 7.4876338243484497e-02 -3.7788759917020798e-02 - <_> - - 0 -1 1551 -3.7608280777931213e-02 - - 3.1014311313629150e-01 -1.9222050905227661e-02 - <_> - - 0 -1 1552 7.7960239723324776e-03 - - 2.0659619942307472e-02 -2.0293909311294556e-01 - <_> - - 0 -1 1553 -3.7200350780040026e-03 - - -1.5401360392570496e-01 3.6573860794305801e-02 - <_> - - 0 -1 1554 2.3217389360070229e-02 - - 1.3617049902677536e-02 -1.3466610014438629e-01 - <_> - - 0 -1 1555 1.6200500540435314e-03 - - -4.9910828471183777e-02 1.3622540235519409e-01 - <_> - - 0 -1 1556 -1.4102110266685486e-01 - - 6.7398101091384888e-02 -3.9583180099725723e-02 - <_> - - 0 -1 1557 4.9663311801850796e-03 - - 2.7015270665287971e-02 -2.0322099328041077e-01 - <_> - - 0 -1 1558 6.2545441091060638e-02 - - -2.0299300551414490e-02 2.7076178789138794e-01 - <_> - - 0 -1 1559 3.5370729863643646e-02 - - 1.4647419564425945e-02 -4.1517329216003418e-01 - <_> - - 0 -1 1560 1.1029910296201706e-02 - - 3.1699210405349731e-02 -2.4132180213928223e-01 - <_> - - 0 -1 1561 6.4016189426183701e-03 - - -4.8948030918836594e-02 1.1326249688863754e-01 - <_> - - 0 -1 1562 -4.9354950897395611e-03 - - 1.4654329419136047e-01 -4.8041410744190216e-02 - <_> - - 0 -1 1563 1.1353639885783195e-02 - - 1.7729170620441437e-02 -3.4834858775138855e-01 - <_> - - 0 -1 1564 1.7991849454119802e-03 - - 3.1500369310379028e-02 -1.1007600277662277e-01 - <_> - - 0 -1 1565 -2.0583570003509521e-03 - - 1.3763889670372009e-01 -3.8278561085462570e-02 - <_> - - 0 -1 1566 -1.1583940126001835e-02 - - -1.9790500402450562e-01 2.1540040150284767e-02 - <_> - - 0 -1 1567 -1.7315410077571869e-03 - - 1.4173020422458649e-01 -3.8997210562229156e-02 - <_> - - 0 -1 1568 -8.4372592391446233e-04 - - 1.3655510544776917e-01 -8.0693908035755157e-02 - <_> - - 0 -1 1569 -9.1473877429962158e-02 - - -4.4754090905189514e-01 1.1962350457906723e-02 - <_> - - 0 -1 1570 -1.8104219809174538e-02 - - 7.7289618551731110e-02 -2.3545600473880768e-02 - <_> - - 0 -1 1571 -1.1535269732121378e-04 - - 7.6836310327053070e-02 -6.8134322762489319e-02 - <_> - - 0 -1 1572 1.0906109586358070e-02 - - 7.2263278998434544e-03 -6.9704157114028931e-01 - <_> - - 0 -1 1573 1.7245879862457514e-03 - - -5.0353311002254486e-02 1.2810109555721283e-01 - <_> - - 0 -1 1574 2.0589210093021393e-01 - - -1.3300600461661816e-02 2.7169388532638550e-01 - <_> - - 0 -1 1575 -3.1669791787862778e-02 - - -3.3548399806022644e-01 1.5808839350938797e-02 - <_> - - 0 -1 1576 1.2097669765353203e-02 - - -7.1846768260002136e-02 1.8981289118528366e-02 - <_> - - 0 -1 1577 -9.8784686997532845e-05 - - 6.6305041313171387e-02 -7.9649433493614197e-02 - <_> - - 0 -1 1578 3.4662809222936630e-02 - - -2.4243790656328201e-02 2.2660750150680542e-01 - <_> - - 0 -1 1579 4.1574249044060707e-03 - - -2.3725839331746101e-02 2.2775200009346008e-01 - <_> - - 0 -1 1580 1.3625459372997284e-01 - - 1.2545660138130188e-02 -1.8698890507221222e-01 - <_> - - 0 -1 1581 -1.8796479701995850e-01 - - -4.9749028682708740e-01 1.0914600454270840e-02 - <_> - - 0 -1 1582 -6.8078853189945221e-02 - - 6.5818381309509277e-01 -4.3843579478561878e-03 - <_> - - 0 -1 1583 4.1167731396853924e-03 - - 4.0211249142885208e-02 -1.4137159287929535e-01 - <_> - - 0 -1 1584 1.2222830206155777e-02 - - 1.7555380240082741e-02 -1.2423080205917358e-01 - <_> - - 0 -1 1585 -3.0194509774446487e-02 - - 2.8969380259513855e-01 -2.0085370168089867e-02 - <_> - - 0 -1 1586 -1.3630479574203491e-02 - - -7.2930537164211273e-02 2.0471939817070961e-02 - <_> - - 0 -1 1587 -4.9170460551977158e-02 - - 1.4496059715747833e-01 -4.1022989898920059e-02 - <_> - - 0 -1 1588 -1.8805779516696930e-02 - - -3.0851051211357117e-01 2.8086919337511063e-02 - <_> - - 0 -1 1589 3.0058639124035835e-02 - - 1.2547640129923820e-02 -4.4722351431846619e-01 - <_> - - 0 -1 1590 1.1746119707822800e-02 - - -5.7717248797416687e-02 8.7828032672405243e-02 - <_> - - 0 -1 1591 1.0928919911384583e-01 - - -6.8391263484954834e-02 9.7572147846221924e-02 - <_> - - 0 -1 1592 9.1915056109428406e-03 - - -7.4181012809276581e-02 7.3394171893596649e-02 - <_> - - 0 -1 1593 1.8468169867992401e-01 - - 9.3096662312746048e-03 -5.8784562349319458e-01 - <_> - - 0 -1 1594 6.8637598305940628e-03 - - 3.0968079343438148e-02 -1.7277500033378601e-01 - <_> - - 0 -1 1595 -1.9742390140891075e-03 - - 1.3069419562816620e-01 -3.8030050694942474e-02 - <_> - - 0 -1 1596 -2.6963930577039719e-03 - - 1.6244409978389740e-01 -3.5481378436088562e-02 - <_> - - 0 -1 1597 -5.8013908565044403e-02 - - -4.3749481439590454e-01 1.2770510278642178e-02 - <_> - - 0 -1 1598 8.9008668437600136e-03 - - 4.3059259653091431e-02 -3.7901559472084045e-01 - <_> - - 0 -1 1599 -1.6740450635552406e-02 - - -4.0966311097145081e-01 1.0411660186946392e-02 - <_> - - 0 -1 1600 2.6413789018988609e-03 - - -4.0057808160781860e-02 2.1676640212535858e-01 - <_> - - 0 -1 1601 -8.0486387014389038e-03 - - -2.7881771326065063e-01 1.9777970388531685e-02 - <_> - - 0 -1 1602 -6.0376349836587906e-02 - - 5.3534799814224243e-01 -1.1424889788031578e-02 - <_> - - 0 -1 1603 2.3124070838093758e-02 - - 1.6458159312605858e-02 -3.2125988602638245e-01 - <_> - - 0 -1 1604 2.0322829484939575e-01 - - -2.3145940154790878e-02 2.3903259634971619e-01 - <_> - - 0 -1 1605 9.2585664242506027e-03 - - 1.1980939656496048e-02 -4.3842160701751709e-01 - <_> - - 0 -1 1606 -9.3168877356220037e-05 - - 3.8687478750944138e-02 -3.7797808647155762e-02 - <_> - - 0 -1 1607 -3.0643379688262939e-01 - - -5.5774372816085815e-01 9.6901366487145424e-03 - <_> - - 0 -1 1608 9.9146942375227809e-05 - - -5.5330239236354828e-02 6.6835246980190277e-02 - <_> - - 0 -1 1609 -2.0753950811922550e-03 - - 1.5105390548706055e-01 -3.7970088422298431e-02 - <_> - - 0 -1 1610 1.7292000120505691e-03 - - 3.7206560373306274e-02 -1.2662950158119202e-01 - <_> - - 0 -1 1611 4.1486289352178574e-02 - - -7.8654065728187561e-03 5.9286290407180786e-01 - <_> - - 0 -1 1612 -2.1392209455370903e-03 - - -2.1703329682350159e-01 2.5509839877486229e-02 - <_> - - 0 -1 1613 -1.2593599967658520e-03 - - -1.5436570346355438e-01 3.1676661223173141e-02 - <_> - - 0 -1 1614 -5.2773267962038517e-03 - - 4.0892910212278366e-02 -2.8415739536285400e-02 - <_> - - 0 -1 1615 -1.1125040240585804e-02 - - 1.6232059895992279e-01 -3.0745169147849083e-02 - <_> - - 0 -1 1616 -1.6761909937486053e-03 - - -3.3090171217918396e-01 1.7768569290637970e-02 - <_> - - 0 -1 1617 -1.0530459985602647e-04 - - 7.5438939034938812e-02 -6.6933870315551758e-02 - <_> - - 0 -1 1618 7.3067108169198036e-03 - - 5.1727588288486004e-03 -5.5249291658401489e-01 - <_> - - 0 -1 1619 9.5791132480371743e-05 - - -7.4921347200870514e-02 8.6354851722717285e-02 - <_> - - 0 -1 1620 -9.3413247668650001e-05 - - 4.8558268696069717e-02 -4.0378730744123459e-02 - <_> - - 0 -1 1621 4.6156500466167927e-03 - - -3.7532798945903778e-02 1.3340139389038086e-01 - <_> - - 0 -1 1622 -4.1042149066925049e-02 - - 2.9821568727493286e-01 -6.6182389855384827e-03 - <_> - - 0 -1 1623 7.1153012104332447e-03 - - -2.1631240844726562e-02 2.3582610487937927e-01 - <_> - - 0 -1 1624 -3.1066430732607841e-02 - - -5.8610522747039795e-01 3.6739821080118418e-03 - <_> - - 0 -1 1625 4.5988909900188446e-02 - - 1.6935029998421669e-02 -3.1026428937911987e-01 - <_> - - 0 -1 1626 -1.1326739937067032e-01 - - 1.5654860436916351e-01 -5.0538508221507072e-03 - <_> - - 0 -1 1627 6.4136488363146782e-03 - - -5.3936250507831573e-02 1.0013920068740845e-01 - <_> - - 0 -1 1628 3.6615829914808273e-02 - - 8.5446005687117577e-03 -1.5964660048484802e-01 - <_> - - 0 -1 1629 -1.7147939652204514e-02 - - 1.4192830026149750e-01 -5.3749438375234604e-02 - <_> - - 0 -1 1630 5.3531897719949484e-04 - - 1.1440339684486389e-01 -2.3302769660949707e-01 - <_> - - 0 -1 1631 1.1444079689681530e-02 - - 1.2468489818274975e-02 -3.9174211025238037e-01 - <_> - - 0 -1 1632 8.3751561760436743e-05 - - -4.9933150410652161e-02 5.4828610271215439e-02 - <_> - - 0 -1 1633 -1.8420179840177298e-03 - - 1.4353500306606293e-01 -3.7544708698987961e-02 - <_> - - 0 -1 1634 4.5310789719223976e-03 - - 1.0783690027892590e-02 -1.8584489822387695e-01 - <_> - - 0 -1 1635 -6.4388299360871315e-03 - - -3.6381769180297852e-01 1.2662259861826897e-02 - <_> - - 0 -1 1636 5.8657680638134480e-03 - - -5.0155811011791229e-02 9.5346279442310333e-02 - <_> - - 0 -1 1637 7.2214446961879730e-02 - - 2.0769899711012840e-02 -2.3239180445671082e-01 - <_> - - 0 -1 1638 1.1799850035458803e-03 - - 3.0479110777378082e-02 -1.0156790167093277e-01 - <_> - - 0 -1 1639 -9.1386884450912476e-03 - - 1.4592429995536804e-01 -3.5100910812616348e-02 - <_> - - 0 -1 1640 -1.1487520299851894e-02 - - 6.6731408238410950e-02 -4.0960971266031265e-02 - <_> - - 0 -1 1641 5.9421849437057972e-03 - - 2.6715600863099098e-02 -2.0938999950885773e-01 - <_> - - 0 -1 1642 1.5967000275850296e-02 - - -2.5690900161862373e-02 1.6294980049133301e-01 - <_> - - 0 -1 1643 -1.0477179894223809e-03 - - 1.1148150265216827e-01 -4.4679220765829086e-02 - <_> - - 0 -1 1644 -1.7775410087779164e-03 - - 5.1736749708652496e-02 -3.4007608890533447e-02 - <_> - - 0 -1 1645 2.2314190864562988e-02 - - 1.1056879535317421e-02 -4.7578111290931702e-01 - <_> - - 0 -1 1646 -1.2075630016624928e-02 - - 7.8382678329944611e-02 -3.8613840937614441e-02 - <_> - - 0 -1 1647 5.9365699999034405e-03 - - -4.0792420506477356e-02 1.2774890661239624e-01 - - <_> - - <_> - 2 0 9 12 -1. - <_> - 2 4 9 4 3. - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 8 12 4 2. - <_> - - <_> - 8 2 6 2 -1. - <_> - 10 4 2 2 3. - 1 - <_> - - <_> - 13 9 4 2 -1. - <_> - 13 10 4 1 2. - <_> - - <_> - 0 0 18 10 -1. - <_> - 6 0 6 10 3. - <_> - - <_> - 13 9 4 2 -1. - <_> - 13 10 4 1 2. - <_> - - <_> - 1 9 4 2 -1. - <_> - 1 10 4 1 2. - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 5 1 8 6 -1. - <_> - 5 3 8 2 3. - <_> - - <_> - 7 1 7 6 -1. - <_> - 7 3 7 2 3. - <_> - - <_> - 1 9 1 3 -1. - <_> - 1 10 1 1 3. - <_> - - <_> - 17 0 1 12 -1. - <_> - 17 6 1 6 2. - <_> - - <_> - 0 0 1 12 -1. - <_> - 0 6 1 6 2. - <_> - - <_> - 13 1 5 4 -1. - <_> - 13 3 5 2 2. - <_> - - <_> - 2 0 9 12 -1. - <_> - 2 4 9 4 3. - <_> - - <_> - 16 6 2 1 -1. - <_> - 16 6 1 1 2. - <_> - - <_> - 1 5 10 6 -1. - <_> - 1 8 10 3 2. - <_> - - <_> - 0 1 18 9 -1. - <_> - 6 4 6 3 9. - <_> - - <_> - 0 8 5 4 -1. - <_> - 0 10 5 2 2. - <_> - - <_> - 10 2 2 6 -1. - <_> - 8 4 2 2 3. - 1 - <_> - - <_> - 8 2 6 2 -1. - <_> - 10 4 2 2 3. - 1 - <_> - - <_> - 4 1 10 6 -1. - <_> - 4 3 10 2 3. - <_> - - <_> - 3 10 12 2 -1. - <_> - 3 11 12 1 2. - <_> - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - <_> - - <_> - 8 3 4 2 -1. - <_> - 8 3 2 2 2. - 1 - <_> - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - <_> - - <_> - 0 0 18 2 -1. - <_> - 6 0 6 2 3. - <_> - - <_> - 4 2 10 6 -1. - <_> - 4 4 10 2 3. - <_> - - <_> - 1 9 1 3 -1. - <_> - 1 10 1 1 3. - <_> - - <_> - 15 10 1 2 -1. - <_> - 15 11 1 1 2. - <_> - - <_> - 2 10 1 2 -1. - <_> - 2 11 1 1 2. - <_> - - <_> - 15 9 2 2 -1. - <_> - 16 9 1 1 2. - <_> - 15 10 1 1 2. - <_> - - <_> - 1 9 2 2 -1. - <_> - 1 9 1 1 2. - <_> - 2 10 1 1 2. - <_> - - <_> - 5 0 8 6 -1. - <_> - 5 2 8 2 3. - <_> - - <_> - 2 0 11 6 -1. - <_> - 2 2 11 2 3. - <_> - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - <_> - - <_> - 4 11 4 1 -1. - <_> - 5 11 2 1 2. - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 8 12 4 2. - <_> - - <_> - 9 1 4 6 -1. - <_> - 7 3 4 2 3. - 1 - <_> - - <_> - 0 5 12 6 -1. - <_> - 0 5 6 3 2. - <_> - 6 8 6 3 2. - <_> - - <_> - 9 1 3 6 -1. - <_> - 7 3 3 2 3. - 1 - <_> - - <_> - 9 1 6 3 -1. - <_> - 11 3 2 3 3. - 1 - <_> - - <_> - 12 10 6 2 -1. - <_> - 12 11 6 1 2. - <_> - - <_> - 0 8 7 4 -1. - <_> - 0 10 7 2 2. - <_> - - <_> - 0 0 18 11 -1. - <_> - 6 0 6 11 3. - <_> - - <_> - 0 10 4 2 -1. - <_> - 0 11 4 1 2. - <_> - - <_> - 13 3 3 3 -1. - <_> - 12 4 3 1 3. - 1 - <_> - - <_> - 5 3 3 3 -1. - <_> - 6 4 1 3 3. - 1 - <_> - - <_> - 9 10 6 2 -1. - <_> - 11 10 2 2 3. - <_> - - <_> - 5 10 6 2 -1. - <_> - 7 10 2 2 3. - <_> - - <_> - 8 10 2 2 -1. - <_> - 8 10 1 2 2. - <_> - - <_> - 0 8 3 4 -1. - <_> - 0 9 3 2 2. - <_> - - <_> - 7 4 4 5 -1. - <_> - 8 4 2 5 2. - <_> - - <_> - 3 0 6 4 -1. - <_> - 5 0 2 4 3. - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - <_> - - <_> - 4 0 10 2 -1. - <_> - 4 1 10 1 2. - <_> - - <_> - 8 0 4 4 -1. - <_> - 9 0 2 4 2. - <_> - - <_> - 6 0 4 4 -1. - <_> - 7 0 2 4 2. - <_> - - <_> - 9 5 3 3 -1. - <_> - 10 5 1 3 3. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 5 0 9 3 -1. - <_> - 5 1 9 1 3. - <_> - - <_> - 3 2 2 3 -1. - <_> - 2 3 2 1 3. - 1 - <_> - - <_> - 7 0 8 8 -1. - <_> - 7 2 8 4 2. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 5 1 1 3. - <_> - - <_> - 15 5 3 4 -1. - <_> - 15 6 3 2 2. - <_> - - <_> - 0 3 16 8 -1. - <_> - 0 3 8 4 2. - <_> - 8 7 8 4 2. - <_> - - <_> - 16 4 2 4 -1. - <_> - 16 5 2 2 2. - <_> - - <_> - 0 4 2 4 -1. - <_> - 0 5 2 2 2. - <_> - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - <_> - - <_> - 7 9 4 2 -1. - <_> - 8 9 2 2 2. - <_> - - <_> - 14 6 4 3 -1. - <_> - 14 6 2 3 2. - <_> - - <_> - 6 9 6 3 -1. - <_> - 8 9 2 3 3. - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 15 3 3 2 -1. - <_> - 15 4 3 1 2. - <_> - - <_> - 0 3 3 2 -1. - <_> - 0 4 3 1 2. - <_> - - <_> - 0 0 18 12 -1. - <_> - 6 4 6 4 9. - <_> - - <_> - 8 4 10 8 -1. - <_> - 8 8 10 4 2. - <_> - - <_> - 0 5 4 4 -1. - <_> - 2 5 2 4 2. - <_> - - <_> - 14 7 4 4 -1. - <_> - 14 9 4 2 2. - <_> - - <_> - 7 2 6 1 -1. - <_> - 9 4 2 1 3. - 1 - <_> - - <_> - 16 8 2 2 -1. - <_> - 16 9 2 1 2. - <_> - - <_> - 0 8 2 2 -1. - <_> - 0 9 2 1 2. - <_> - - <_> - 13 2 4 1 -1. - <_> - 14 2 2 1 2. - <_> - - <_> - 0 10 6 2 -1. - <_> - 0 11 6 1 2. - <_> - - <_> - 14 9 4 2 -1. - <_> - 14 10 4 1 2. - <_> - - <_> - 0 9 4 2 -1. - <_> - 0 10 4 1 2. - <_> - - <_> - 9 0 4 7 -1. - <_> - 10 1 2 7 2. - 1 - <_> - - <_> - 0 4 2 6 -1. - <_> - 0 7 2 3 2. - <_> - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - <_> - - <_> - 6 0 8 4 -1. - <_> - 6 0 8 2 2. - 1 - <_> - - <_> - 13 9 1 2 -1. - <_> - 13 9 1 1 2. - 1 - <_> - - <_> - 9 0 6 4 -1. - <_> - 8 1 6 2 2. - 1 - <_> - - <_> - 6 0 12 2 -1. - <_> - 9 0 6 2 2. - <_> - - <_> - 4 0 9 8 -1. - <_> - 4 2 9 4 2. - <_> - - <_> - 9 0 2 4 -1. - <_> - 9 0 1 4 2. - <_> - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - <_> - - <_> - 6 4 6 6 -1. - <_> - 8 6 2 2 9. - <_> - - <_> - 6 10 4 2 -1. - <_> - 7 10 2 2 2. - <_> - - <_> - 13 7 5 2 -1. - <_> - 13 8 5 1 2. - <_> - - <_> - 7 4 4 4 -1. - <_> - 7 5 4 2 2. - <_> - - <_> - 13 7 5 2 -1. - <_> - 13 8 5 1 2. - <_> - - <_> - 0 7 5 2 -1. - <_> - 0 8 5 1 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 0 0 9 1 2. - <_> - - <_> - 4 10 4 2 -1. - <_> - 5 10 2 2 2. - <_> - - <_> - 10 5 4 3 -1. - <_> - 11 5 2 3 2. - <_> - - <_> - 4 5 4 3 -1. - <_> - 5 5 2 3 2. - <_> - - <_> - 9 0 4 2 -1. - <_> - 10 0 2 2 2. - <_> - - <_> - 4 9 1 2 -1. - <_> - 4 10 1 1 2. - <_> - - <_> - 5 0 8 4 -1. - <_> - 5 1 8 2 2. - <_> - - <_> - 6 0 5 4 -1. - <_> - 6 1 5 2 2. - <_> - - <_> - 9 0 3 2 -1. - <_> - 10 0 1 2 3. - <_> - - <_> - 0 8 18 4 -1. - <_> - 6 8 6 4 3. - <_> - - <_> - 9 0 4 2 -1. - <_> - 10 0 2 2 2. - <_> - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - <_> - - <_> - 6 1 8 6 -1. - <_> - 6 3 8 2 3. - <_> - - <_> - 5 0 4 2 -1. - <_> - 6 0 2 2 2. - <_> - - <_> - 7 6 8 2 -1. - <_> - 9 6 4 2 2. - <_> - - <_> - 6 4 2 3 -1. - <_> - 6 4 1 3 2. - 1 - <_> - - <_> - 5 0 9 6 -1. - <_> - 5 2 9 2 3. - <_> - - <_> - 2 1 11 4 -1. - <_> - 2 2 11 2 2. - <_> - - <_> - 14 2 2 2 -1. - <_> - 14 2 1 2 2. - 1 - <_> - - <_> - 4 2 2 3 -1. - <_> - 3 3 2 1 3. - 1 - <_> - - <_> - 6 1 6 9 -1. - <_> - 8 4 2 3 9. - <_> - - <_> - 14 5 4 4 -1. - <_> - 14 5 2 4 2. - <_> - - <_> - 1 6 10 6 -1. - <_> - 1 9 10 3 2. - <_> - - <_> - 14 5 4 5 -1. - <_> - 14 5 2 5 2. - <_> - - <_> - 0 5 4 5 -1. - <_> - 2 5 2 5 2. - <_> - - <_> - 10 3 3 3 -1. - <_> - 11 4 1 3 3. - 1 - <_> - - <_> - 8 4 2 3 -1. - <_> - 7 5 2 1 3. - 1 - <_> - - <_> - 9 5 3 2 -1. - <_> - 9 6 3 1 2. - <_> - - <_> - 6 5 2 2 -1. - <_> - 6 6 2 1 2. - <_> - - <_> - 6 2 8 4 -1. - <_> - 6 3 8 2 2. - <_> - - <_> - 1 0 16 2 -1. - <_> - 5 0 8 2 2. - <_> - - <_> - 9 3 2 6 -1. - <_> - 7 5 2 2 3. - 1 - <_> - - <_> - 0 0 1 12 -1. - <_> - 0 6 1 6 2. - <_> - - <_> - 7 5 4 3 -1. - <_> - 7 5 2 3 2. - <_> - - <_> - 2 8 2 2 -1. - <_> - 2 8 1 2 2. - 1 - <_> - - <_> - 9 4 3 2 -1. - <_> - 10 5 1 2 3. - 1 - <_> - - <_> - 9 4 2 3 -1. - <_> - 8 5 2 1 3. - 1 - <_> - - <_> - 5 0 8 4 -1. - <_> - 5 1 8 2 2. - <_> - - <_> - 6 10 1 2 -1. - <_> - 6 11 1 1 2. - <_> - - <_> - 7 0 8 4 -1. - <_> - 7 1 8 2 2. - <_> - - <_> - 4 11 6 1 -1. - <_> - 6 11 2 1 3. - <_> - - <_> - 6 11 6 1 -1. - <_> - 8 11 2 1 3. - <_> - - <_> - 0 2 18 10 -1. - <_> - 0 2 9 5 2. - <_> - 9 7 9 5 2. - <_> - - <_> - 6 0 6 9 -1. - <_> - 8 0 2 9 3. - <_> - - <_> - 5 11 6 1 -1. - <_> - 7 11 2 1 3. - <_> - - <_> - 6 0 6 4 -1. - <_> - 8 0 2 4 3. - <_> - - <_> - 5 1 7 4 -1. - <_> - 5 2 7 2 2. - <_> - - <_> - 12 3 1 2 -1. - <_> - 12 4 1 1 2. - <_> - - <_> - 4 5 3 3 -1. - <_> - 5 5 1 3 3. - <_> - - <_> - 9 0 6 2 -1. - <_> - 11 0 2 2 3. - <_> - - <_> - 3 0 6 2 -1. - <_> - 5 0 2 2 3. - <_> - - <_> - 9 5 3 5 -1. - <_> - 10 5 1 5 3. - <_> - - <_> - 6 5 3 5 -1. - <_> - 7 5 1 5 3. - <_> - - <_> - 17 4 1 6 -1. - <_> - 17 6 1 2 3. - <_> - - <_> - 0 2 1 9 -1. - <_> - 0 5 1 3 3. - <_> - - <_> - 15 9 2 2 -1. - <_> - 16 9 1 1 2. - <_> - 15 10 1 1 2. - <_> - - <_> - 1 9 2 2 -1. - <_> - 1 9 1 1 2. - <_> - 2 10 1 1 2. - <_> - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - <_> - - <_> - 3 2 4 3 -1. - <_> - 4 3 2 3 2. - 1 - <_> - - <_> - 17 7 1 4 -1. - <_> - 17 8 1 2 2. - <_> - - <_> - 0 7 1 4 -1. - <_> - 0 8 1 2 2. - <_> - - <_> - 9 0 3 7 -1. - <_> - 10 1 1 7 3. - 1 - <_> - - <_> - 9 0 7 3 -1. - <_> - 8 1 7 1 3. - 1 - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - <_> - - <_> - 4 2 10 3 -1. - <_> - 4 3 10 1 3. - <_> - - <_> - 16 2 2 2 -1. - <_> - 16 2 1 2 2. - 1 - <_> - - <_> - 2 2 2 2 -1. - <_> - 2 2 2 1 2. - 1 - <_> - - <_> - 0 11 18 1 -1. - <_> - 0 11 9 1 2. - <_> - - <_> - 1 1 16 10 -1. - <_> - 5 1 8 10 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 2 0 16 10 -1. - <_> - 6 0 8 10 2. - <_> - - <_> - 0 0 16 10 -1. - <_> - 4 0 8 10 2. - <_> - - <_> - 14 10 2 2 -1. - <_> - 14 11 2 1 2. - <_> - - <_> - 5 6 3 2 -1. - <_> - 6 6 1 2 3. - <_> - - <_> - 0 2 11 8 -1. - <_> - 0 4 11 4 2. - <_> - - <_> - 6 5 6 3 -1. - <_> - 8 5 2 3 3. - <_> - - <_> - 0 5 4 3 -1. - <_> - 2 5 2 3 2. - <_> - - <_> - 3 2 12 6 -1. - <_> - 3 4 12 2 3. - <_> - - <_> - 0 9 3 3 -1. - <_> - 0 10 3 1 3. - <_> - - <_> - 6 3 7 3 -1. - <_> - 6 4 7 1 3. - <_> - - <_> - 4 10 10 2 -1. - <_> - 4 11 10 1 2. - <_> - - <_> - 5 4 10 2 -1. - <_> - 5 5 10 1 2. - <_> - - <_> - 0 0 18 8 -1. - <_> - 6 0 6 8 3. - <_> - - <_> - 17 4 1 8 -1. - <_> - 17 8 1 4 2. - <_> - - <_> - 0 4 1 8 -1. - <_> - 0 8 1 4 2. - <_> - - <_> - 5 7 12 3 -1. - <_> - 9 7 4 3 3. - <_> - - <_> - 3 2 4 2 -1. - <_> - 4 3 2 2 2. - 1 - <_> - - <_> - 7 0 6 4 -1. - <_> - 9 0 2 4 3. - <_> - - <_> - 5 0 6 4 -1. - <_> - 7 0 2 4 3. - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - <_> - - <_> - 0 10 3 2 -1. - <_> - 0 11 3 1 2. - <_> - - <_> - 6 10 6 2 -1. - <_> - 8 10 2 2 3. - <_> - - <_> - 4 0 7 4 -1. - <_> - 4 1 7 2 2. - <_> - - <_> - 5 0 10 4 -1. - <_> - 5 1 10 2 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 6 10 6 2 -1. - <_> - 8 10 2 2 3. - <_> - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - <_> - - <_> - 9 1 6 3 -1. - <_> - 11 1 2 3 3. - <_> - - <_> - 3 1 6 3 -1. - <_> - 5 1 2 3 3. - <_> - - <_> - 8 1 5 4 -1. - <_> - 8 2 5 2 2. - <_> - - <_> - 9 1 9 1 -1. - <_> - 12 4 3 1 3. - 1 - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - <_> - - <_> - 7 2 7 3 -1. - <_> - 7 3 7 1 3. - <_> - - <_> - 2 0 4 2 -1. - <_> - 2 0 4 1 2. - 1 - <_> - - <_> - 14 1 4 4 -1. - <_> - 16 1 2 2 2. - <_> - 14 3 2 2 2. - <_> - - <_> - 2 6 6 2 -1. - <_> - 4 6 2 2 3. - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 0 1 4 4 -1. - <_> - 0 1 2 2 2. - <_> - 2 3 2 2 2. - <_> - - <_> - 17 3 1 4 -1. - <_> - 17 5 1 2 2. - <_> - - <_> - 0 3 1 4 -1. - <_> - 0 5 1 2 2. - <_> - - <_> - 17 7 1 4 -1. - <_> - 17 7 1 2 2. - 1 - <_> - - <_> - 1 7 4 1 -1. - <_> - 1 7 2 1 2. - 1 - <_> - - <_> - 2 2 16 10 -1. - <_> - 10 2 8 5 2. - <_> - 2 7 8 5 2. - <_> - - <_> - 0 0 18 3 -1. - <_> - 6 1 6 1 9. - <_> - - <_> - 9 0 1 8 -1. - <_> - 9 0 1 4 2. - 1 - <_> - - <_> - 4 9 6 3 -1. - <_> - 6 9 2 3 3. - <_> - - <_> - 8 9 2 3 -1. - <_> - 8 9 1 3 2. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 11 7 2 2 -1. - <_> - 12 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 6 0 12 12 -1. - <_> - 12 0 6 6 2. - <_> - 6 6 6 6 2. - <_> - - <_> - 0 0 12 12 -1. - <_> - 0 0 6 6 2. - <_> - 6 6 6 6 2. - <_> - - <_> - 0 1 18 6 -1. - <_> - 6 3 6 2 9. - <_> - - <_> - 3 11 4 1 -1. - <_> - 4 11 2 1 2. - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 9 0 8 1 -1. - <_> - 9 0 4 1 2. - 1 - <_> - - <_> - 0 1 18 8 -1. - <_> - 9 1 9 4 2. - <_> - 0 5 9 4 2. - <_> - - <_> - 0 2 11 8 -1. - <_> - 0 4 11 4 2. - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 1 9 1 3 -1. - <_> - 1 10 1 1 3. - <_> - - <_> - 8 7 4 3 -1. - <_> - 8 8 4 1 3. - <_> - - <_> - 3 0 4 2 -1. - <_> - 4 0 2 2 2. - <_> - - <_> - 15 9 2 2 -1. - <_> - 16 9 1 1 2. - <_> - 15 10 1 1 2. - <_> - - <_> - 0 4 2 4 -1. - <_> - 0 5 2 2 2. - <_> - - <_> - 5 8 9 3 -1. - <_> - 5 9 9 1 3. - <_> - - <_> - 1 9 2 2 -1. - <_> - 1 9 1 1 2. - <_> - 2 10 1 1 2. - <_> - - <_> - 7 11 6 1 -1. - <_> - 9 11 2 1 3. - <_> - - <_> - 5 11 6 1 -1. - <_> - 7 11 2 1 3. - <_> - - <_> - 0 9 18 3 -1. - <_> - 6 9 6 3 3. - <_> - - <_> - 0 7 2 2 -1. - <_> - 0 7 1 1 2. - <_> - 1 8 1 1 2. - <_> - - <_> - 6 10 12 1 -1. - <_> - 6 10 6 1 2. - <_> - - <_> - 0 10 12 1 -1. - <_> - 6 10 6 1 2. - <_> - - <_> - 7 2 8 10 -1. - <_> - 11 2 4 5 2. - <_> - 7 7 4 5 2. - <_> - - <_> - 5 3 2 6 -1. - <_> - 5 5 2 2 3. - <_> - - <_> - 8 0 6 6 -1. - <_> - 8 2 6 2 3. - <_> - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - <_> - - <_> - 14 1 4 3 -1. - <_> - 13 2 4 1 3. - 1 - <_> - - <_> - 0 4 18 7 -1. - <_> - 6 4 6 7 3. - <_> - - <_> - 7 2 8 10 -1. - <_> - 11 2 4 5 2. - <_> - 7 7 4 5 2. - <_> - - <_> - 3 2 8 10 -1. - <_> - 3 2 4 5 2. - <_> - 7 7 4 5 2. - <_> - - <_> - 9 4 1 6 -1. - <_> - 7 6 1 2 3. - 1 - <_> - - <_> - 9 4 6 1 -1. - <_> - 11 6 2 1 3. - 1 - <_> - - <_> - 7 9 4 2 -1. - <_> - 8 9 2 2 2. - <_> - - <_> - 3 0 3 3 -1. - <_> - 2 1 3 1 3. - 1 - <_> - - <_> - 14 1 4 3 -1. - <_> - 13 2 4 1 3. - 1 - <_> - - <_> - 4 1 3 4 -1. - <_> - 5 2 1 4 3. - 1 - <_> - - <_> - 14 5 4 3 -1. - <_> - 15 5 2 3 2. - <_> - - <_> - 3 10 1 2 -1. - <_> - 3 11 1 1 2. - <_> - - <_> - 6 0 9 2 -1. - <_> - 9 3 3 2 3. - 1 - <_> - - <_> - 7 4 11 8 -1. - <_> - 7 8 11 4 2. - <_> - - <_> - 4 3 4 3 -1. - <_> - 5 4 2 3 2. - 1 - <_> - - <_> - 10 3 3 4 -1. - <_> - 11 4 1 4 3. - 1 - <_> - - <_> - 0 2 14 10 -1. - <_> - 0 2 7 5 2. - <_> - 7 7 7 5 2. - <_> - - <_> - 0 0 18 6 -1. - <_> - 6 0 6 6 3. - <_> - - <_> - 1 1 12 4 -1. - <_> - 1 2 12 2 2. - <_> - - <_> - 5 1 10 6 -1. - <_> - 5 3 10 2 3. - <_> - - <_> - 6 3 5 3 -1. - <_> - 6 4 5 1 3. - <_> - - <_> - 14 8 4 2 -1. - <_> - 14 9 4 1 2. - <_> - - <_> - 9 6 4 2 -1. - <_> - 9 6 4 1 2. - 1 - <_> - - <_> - 14 9 1 2 -1. - <_> - 14 10 1 1 2. - <_> - - <_> - 3 9 1 2 -1. - <_> - 3 10 1 1 2. - <_> - - <_> - 15 9 1 2 -1. - <_> - 15 9 1 1 2. - 1 - <_> - - <_> - 0 0 1 12 -1. - <_> - 0 6 1 6 2. - <_> - - <_> - 9 11 6 1 -1. - <_> - 11 11 2 1 3. - <_> - - <_> - 3 11 6 1 -1. - <_> - 5 11 2 1 3. - <_> - - <_> - 13 4 2 3 -1. - <_> - 12 5 2 1 3. - 1 - <_> - - <_> - 4 1 4 4 -1. - <_> - 5 2 2 4 2. - 1 - <_> - - <_> - 9 0 4 3 -1. - <_> - 10 0 2 3 2. - <_> - - <_> - 6 0 6 3 -1. - <_> - 8 0 2 3 3. - <_> - - <_> - 10 6 4 2 -1. - <_> - 11 6 2 2 2. - <_> - - <_> - 5 0 4 3 -1. - <_> - 6 0 2 3 2. - <_> - - <_> - 6 0 6 4 -1. - <_> - 6 1 6 2 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 6 0 9 4 -1. - <_> - 6 1 9 2 2. - <_> - - <_> - 2 6 6 2 -1. - <_> - 4 6 2 2 3. - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 9 3 3 4 -1. - <_> - 8 4 3 2 2. - 1 - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 0 10 3 2 -1. - <_> - 0 11 3 1 2. - <_> - - <_> - 9 9 6 3 -1. - <_> - 11 9 2 3 3. - <_> - - <_> - 3 9 6 3 -1. - <_> - 5 9 2 3 3. - <_> - - <_> - 10 7 2 2 -1. - <_> - 11 7 1 1 2. - <_> - 10 8 1 1 2. - <_> - - <_> - 8 10 2 2 -1. - <_> - 8 11 2 1 2. - <_> - - <_> - 10 5 3 2 -1. - <_> - 11 6 1 2 3. - 1 - <_> - - <_> - 2 0 11 8 -1. - <_> - 2 2 11 4 2. - <_> - - <_> - 12 4 2 2 -1. - <_> - 12 4 2 1 2. - 1 - <_> - - <_> - 6 4 2 2 -1. - <_> - 6 4 1 2 2. - 1 - <_> - - <_> - 15 8 1 2 -1. - <_> - 15 9 1 1 2. - <_> - - <_> - 2 8 1 2 -1. - <_> - 2 9 1 1 2. - <_> - - <_> - 15 10 2 2 -1. - <_> - 16 10 1 1 2. - <_> - 15 11 1 1 2. - <_> - - <_> - 0 0 14 12 -1. - <_> - 7 0 7 12 2. - <_> - - <_> - 3 2 14 8 -1. - <_> - 3 2 7 8 2. - <_> - - <_> - 0 4 18 6 -1. - <_> - 6 4 6 6 3. - <_> - - <_> - 9 6 2 2 -1. - <_> - 10 6 1 1 2. - <_> - 9 7 1 1 2. - <_> - - <_> - 9 4 3 2 -1. - <_> - 9 4 3 1 2. - 1 - <_> - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - <_> - - <_> - 1 10 2 2 -1. - <_> - 1 10 1 1 2. - <_> - 2 11 1 1 2. - <_> - - <_> - 8 4 3 3 -1. - <_> - 8 5 3 1 3. - <_> - - <_> - 5 9 4 3 -1. - <_> - 6 9 2 3 2. - <_> - - <_> - 17 5 1 6 -1. - <_> - 17 7 1 2 3. - <_> - - <_> - 0 0 18 2 -1. - <_> - 0 0 9 1 2. - <_> - 9 1 9 1 2. - <_> - - <_> - 17 5 1 6 -1. - <_> - 17 7 1 2 3. - <_> - - <_> - 1 4 1 3 -1. - <_> - 1 5 1 1 3. - <_> - - <_> - 5 2 8 3 -1. - <_> - 5 3 8 1 3. - <_> - - <_> - 5 9 6 3 -1. - <_> - 7 9 2 3 3. - <_> - - <_> - 8 0 2 3 -1. - <_> - 8 0 1 3 2. - <_> - - <_> - 7 6 3 1 -1. - <_> - 8 6 1 1 3. - <_> - - <_> - 8 0 4 3 -1. - <_> - 9 0 2 3 2. - <_> - - <_> - 3 0 10 2 -1. - <_> - 3 1 10 1 2. - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - <_> - - <_> - 4 1 2 3 -1. - <_> - 3 2 2 1 3. - 1 - <_> - - <_> - 16 10 1 2 -1. - <_> - 16 11 1 1 2. - <_> - - <_> - 3 7 2 2 -1. - <_> - 3 7 1 1 2. - <_> - 4 8 1 1 2. - <_> - - <_> - 14 0 3 3 -1. - <_> - 15 1 1 3 3. - 1 - <_> - - <_> - 0 0 10 8 -1. - <_> - 0 4 10 4 2. - <_> - - <_> - 14 0 2 4 -1. - <_> - 14 0 1 4 2. - 1 - <_> - - <_> - 4 0 4 2 -1. - <_> - 4 0 4 1 2. - 1 - <_> - - <_> - 1 11 16 1 -1. - <_> - 5 11 8 1 2. - <_> - - <_> - 3 9 2 1 -1. - <_> - 3 9 1 1 2. - 1 - <_> - - <_> - 16 10 1 2 -1. - <_> - 16 11 1 1 2. - <_> - - <_> - 1 10 1 2 -1. - <_> - 1 11 1 1 2. - <_> - - <_> - 17 5 1 6 -1. - <_> - 17 7 1 2 3. - <_> - - <_> - 0 5 1 6 -1. - <_> - 0 7 1 2 3. - <_> - - <_> - 6 0 7 3 -1. - <_> - 6 1 7 1 3. - <_> - - <_> - 6 0 9 2 -1. - <_> - 9 3 3 2 3. - 1 - <_> - - <_> - 7 1 7 3 -1. - <_> - 7 2 7 1 3. - <_> - - <_> - 0 4 2 4 -1. - <_> - 0 5 2 2 2. - <_> - - <_> - 9 5 3 1 -1. - <_> - 10 5 1 1 3. - <_> - - <_> - 4 1 10 2 -1. - <_> - 9 1 5 2 2. - <_> - - <_> - 0 11 18 1 -1. - <_> - 0 11 9 1 2. - <_> - - <_> - 1 9 12 2 -1. - <_> - 7 9 6 2 2. - <_> - - <_> - 0 0 18 12 -1. - <_> - 0 0 9 12 2. - <_> - - <_> - 5 4 5 6 -1. - <_> - 5 7 5 3 2. - <_> - - <_> - 14 3 3 3 -1. - <_> - 13 4 3 1 3. - 1 - <_> - - <_> - 4 3 3 3 -1. - <_> - 5 4 1 3 3. - 1 - <_> - - <_> - 12 4 6 5 -1. - <_> - 14 4 2 5 3. - <_> - - <_> - 3 3 12 6 -1. - <_> - 3 5 12 2 3. - <_> - - <_> - 12 4 2 2 -1. - <_> - 12 5 2 1 2. - <_> - - <_> - 4 4 2 2 -1. - <_> - 4 5 2 1 2. - <_> - - <_> - 12 1 3 2 -1. - <_> - 13 2 1 2 3. - 1 - <_> - - <_> - 6 1 2 3 -1. - <_> - 5 2 2 1 3. - 1 - <_> - - <_> - 3 0 12 6 -1. - <_> - 3 2 12 2 3. - <_> - - <_> - 4 3 6 3 -1. - <_> - 4 3 3 3 2. - 1 - <_> - - <_> - 12 4 6 5 -1. - <_> - 14 4 2 5 3. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 15 2 3 2 -1. - <_> - 16 3 1 2 3. - 1 - <_> - - <_> - 3 2 2 3 -1. - <_> - 2 3 2 1 3. - 1 - <_> - - <_> - 16 2 2 10 -1. - <_> - 16 2 1 10 2. - <_> - - <_> - 0 2 2 10 -1. - <_> - 1 2 1 10 2. - <_> - - <_> - 16 1 2 1 -1. - <_> - 16 1 1 1 2. - 1 - <_> - - <_> - 5 0 2 3 -1. - <_> - 4 1 2 1 3. - 1 - <_> - - <_> - 9 1 6 3 -1. - <_> - 11 3 2 3 3. - 1 - <_> - - <_> - 14 5 4 3 -1. - <_> - 14 5 2 3 2. - <_> - - <_> - 0 5 4 3 -1. - <_> - 2 5 2 3 2. - <_> - - <_> - 10 3 3 4 -1. - <_> - 11 4 1 4 3. - 1 - <_> - - <_> - 5 2 3 6 -1. - <_> - 5 4 3 2 3. - <_> - - <_> - 13 7 4 1 -1. - <_> - 13 7 2 1 2. - <_> - - <_> - 0 6 6 6 -1. - <_> - 0 9 6 3 2. - <_> - - <_> - 9 5 4 3 -1. - <_> - 10 5 2 3 2. - <_> - - <_> - 0 0 18 3 -1. - <_> - 6 0 6 3 3. - <_> - - <_> - 10 1 3 6 -1. - <_> - 11 2 1 6 3. - 1 - <_> - - <_> - 8 1 6 3 -1. - <_> - 7 2 6 1 3. - 1 - <_> - - <_> - 10 4 3 3 -1. - <_> - 11 5 1 3 3. - 1 - <_> - - <_> - 8 4 3 3 -1. - <_> - 7 5 3 1 3. - 1 - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - <_> - - <_> - 16 8 1 4 -1. - <_> - 16 9 1 2 2. - <_> - - <_> - 5 0 5 6 -1. - <_> - 5 2 5 2 3. - <_> - - <_> - 10 5 2 3 -1. - <_> - 10 5 1 3 2. - 1 - <_> - - <_> - 8 5 3 2 -1. - <_> - 8 5 3 1 2. - 1 - <_> - - <_> - 16 8 1 4 -1. - <_> - 16 9 1 2 2. - <_> - - <_> - 1 8 1 4 -1. - <_> - 1 9 1 2 2. - <_> - - <_> - 14 1 4 4 -1. - <_> - 13 2 4 2 2. - 1 - <_> - - <_> - 0 10 7 2 -1. - <_> - 0 11 7 1 2. - <_> - - <_> - 14 1 4 4 -1. - <_> - 13 2 4 2 2. - 1 - <_> - - <_> - 4 1 4 4 -1. - <_> - 5 2 2 4 2. - 1 - <_> - - <_> - 8 4 5 2 -1. - <_> - 8 5 5 1 2. - <_> - - <_> - 5 2 8 10 -1. - <_> - 5 2 4 5 2. - <_> - 9 7 4 5 2. - <_> - - <_> - 17 5 1 4 -1. - <_> - 17 6 1 2 2. - <_> - - <_> - 4 0 4 4 -1. - <_> - 5 0 2 4 2. - <_> - - <_> - 16 11 2 1 -1. - <_> - 16 11 1 1 2. - <_> - - <_> - 0 11 2 1 -1. - <_> - 1 11 1 1 2. - <_> - - <_> - 17 0 1 12 -1. - <_> - 17 6 1 6 2. - <_> - - <_> - 0 2 1 10 -1. - <_> - 0 7 1 5 2. - <_> - - <_> - 6 0 6 3 -1. - <_> - 6 0 3 3 2. - <_> - - <_> - 0 2 2 4 -1. - <_> - 0 3 2 2 2. - <_> - - <_> - 8 0 4 4 -1. - <_> - 9 0 2 4 2. - <_> - - <_> - 5 4 3 3 -1. - <_> - 6 5 1 3 3. - 1 - <_> - - <_> - 15 8 2 2 -1. - <_> - 16 8 1 1 2. - <_> - 15 9 1 1 2. - <_> - - <_> - 1 8 2 2 -1. - <_> - 1 8 1 1 2. - <_> - 2 9 1 1 2. - <_> - - <_> - 16 11 2 1 -1. - <_> - 16 11 1 1 2. - <_> - - <_> - 0 11 2 1 -1. - <_> - 1 11 1 1 2. - <_> - - <_> - 0 11 18 1 -1. - <_> - 0 11 9 1 2. - <_> - - <_> - 5 4 6 8 -1. - <_> - 5 8 6 4 2. - <_> - - <_> - 6 0 8 3 -1. - <_> - 6 1 8 1 3. - <_> - - <_> - 3 0 12 4 -1. - <_> - 3 1 12 2 2. - <_> - - <_> - 8 11 4 1 -1. - <_> - 9 11 2 1 2. - <_> - - <_> - 5 3 1 2 -1. - <_> - 5 3 1 1 2. - 1 - <_> - - <_> - 5 2 10 4 -1. - <_> - 5 3 10 2 2. - <_> - - <_> - 1 8 2 3 -1. - <_> - 1 9 2 1 3. - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 9 2 2 8 -1. - <_> - 9 2 2 4 2. - 1 - <_> - - <_> - 0 0 18 9 -1. - <_> - 0 0 9 9 2. - <_> - - <_> - 0 4 15 8 -1. - <_> - 5 4 5 8 3. - <_> - - <_> - 12 5 3 3 -1. - <_> - 13 6 1 3 3. - 1 - <_> - - <_> - 0 2 14 10 -1. - <_> - 7 2 7 10 2. - <_> - - <_> - 14 0 2 4 -1. - <_> - 14 0 1 4 2. - 1 - <_> - - <_> - 5 3 8 2 -1. - <_> - 5 4 8 1 2. - <_> - - <_> - 12 3 6 2 -1. - <_> - 12 4 6 1 2. - <_> - - <_> - 5 0 1 4 -1. - <_> - 4 1 1 2 2. - 1 - <_> - - <_> - 14 0 2 4 -1. - <_> - 14 0 1 4 2. - 1 - <_> - - <_> - 4 0 4 2 -1. - <_> - 4 0 4 1 2. - 1 - <_> - - <_> - 10 4 3 2 -1. - <_> - 10 5 3 1 2. - <_> - - <_> - 5 4 4 2 -1. - <_> - 5 5 4 1 2. - <_> - - <_> - 13 2 4 3 -1. - <_> - 12 3 4 1 3. - 1 - <_> - - <_> - 5 2 3 4 -1. - <_> - 6 3 1 4 3. - 1 - <_> - - <_> - 17 5 1 4 -1. - <_> - 17 6 1 2 2. - <_> - - <_> - 3 0 12 2 -1. - <_> - 3 1 12 1 2. - <_> - - <_> - 15 9 2 3 -1. - <_> - 15 10 2 1 3. - <_> - - <_> - 1 9 1 3 -1. - <_> - 1 10 1 1 3. - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 7 9 4 2 -1. - <_> - 8 9 2 2 2. - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 5 9 4 3 -1. - <_> - 6 9 2 3 2. - <_> - - <_> - 9 8 2 2 -1. - <_> - 10 8 1 1 2. - <_> - 9 9 1 1 2. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 17 5 1 4 -1. - <_> - 17 6 1 2 2. - <_> - - <_> - 0 5 1 4 -1. - <_> - 0 6 1 2 2. - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 9 3 6 3 -1. - <_> - 8 4 6 1 3. - 1 - <_> - - <_> - 16 6 2 1 -1. - <_> - 16 6 1 1 2. - <_> - - <_> - 4 7 2 2 -1. - <_> - 4 7 1 1 2. - <_> - 5 8 1 1 2. - <_> - - <_> - 16 7 2 3 -1. - <_> - 16 8 2 1 3. - <_> - - <_> - 0 7 2 3 -1. - <_> - 0 8 2 1 3. - <_> - - <_> - 7 0 4 4 -1. - <_> - 8 0 2 4 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 7 10 6 2 -1. - <_> - 9 10 2 2 3. - <_> - - <_> - 0 2 18 8 -1. - <_> - 0 2 9 4 2. - <_> - 9 6 9 4 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 5 10 6 2 -1. - <_> - 7 10 2 2 3. - <_> - - <_> - 8 8 4 4 -1. - <_> - 8 9 4 2 2. - <_> - - <_> - 5 0 6 3 -1. - <_> - 5 1 6 1 3. - <_> - - <_> - 8 1 4 2 -1. - <_> - 9 1 2 2 2. - <_> - - <_> - 6 1 4 2 -1. - <_> - 7 1 2 2 2. - <_> - - <_> - 9 8 2 2 -1. - <_> - 10 8 1 1 2. - <_> - 9 9 1 1 2. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 11 7 2 2 -1. - <_> - 11 8 2 1 2. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 8 2 1 2. - <_> - - <_> - 0 10 18 2 -1. - <_> - 6 10 6 2 3. - <_> - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - <_> - - <_> - 10 1 4 3 -1. - <_> - 10 1 2 3 2. - <_> - - <_> - 3 0 2 1 -1. - <_> - 4 0 1 1 2. - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 0 1 3 2. - 1 - <_> - - <_> - 2 0 3 2 -1. - <_> - 2 0 3 1 2. - 1 - <_> - - <_> - 7 4 10 4 -1. - <_> - 7 4 5 4 2. - <_> - - <_> - 1 4 10 4 -1. - <_> - 6 4 5 4 2. - <_> - - <_> - 13 0 2 1 -1. - <_> - 13 0 1 1 2. - <_> - - <_> - 0 3 1 6 -1. - <_> - 0 5 1 2 3. - <_> - - <_> - 14 0 4 3 -1. - <_> - 13 1 4 1 3. - 1 - <_> - - <_> - 4 0 3 4 -1. - <_> - 5 1 1 4 3. - 1 - <_> - - <_> - 4 2 10 1 -1. - <_> - 4 2 5 1 2. - <_> - - <_> - 3 0 4 2 -1. - <_> - 4 0 2 2 2. - <_> - - <_> - 9 0 5 8 -1. - <_> - 9 2 5 4 2. - <_> - - <_> - 7 3 2 2 -1. - <_> - 7 3 1 1 2. - <_> - 8 4 1 1 2. - <_> - - <_> - 0 5 18 2 -1. - <_> - 9 5 9 1 2. - <_> - 0 6 9 1 2. - <_> - - <_> - 0 9 3 1 -1. - <_> - 1 9 1 1 3. - <_> - - <_> - 16 9 2 2 -1. - <_> - 17 9 1 1 2. - <_> - 16 10 1 1 2. - <_> - - <_> - 0 10 2 2 -1. - <_> - 0 10 1 1 2. - <_> - 1 11 1 1 2. - <_> - - <_> - 5 2 12 3 -1. - <_> - 5 3 12 1 3. - <_> - - <_> - 0 9 2 2 -1. - <_> - 0 9 1 1 2. - <_> - 1 10 1 1 2. - <_> - - <_> - 10 9 4 3 -1. - <_> - 11 9 2 3 2. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 1 2. - <_> - 8 3 1 1 2. - <_> - - <_> - 9 1 3 6 -1. - <_> - 7 3 3 2 3. - 1 - <_> - - <_> - 9 1 6 3 -1. - <_> - 11 3 2 3 3. - 1 - <_> - - <_> - 14 0 4 10 -1. - <_> - 14 5 4 5 2. - <_> - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - <_> - - <_> - 6 4 11 8 -1. - <_> - 6 8 11 4 2. - <_> - - <_> - 3 2 2 9 -1. - <_> - 3 5 2 3 3. - <_> - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - <_> - - <_> - 0 4 4 7 -1. - <_> - 2 4 2 7 2. - <_> - - <_> - 15 7 3 3 -1. - <_> - 16 8 1 1 9. - <_> - - <_> - 0 3 3 1 -1. - <_> - 1 3 1 1 3. - <_> - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - <_> - - <_> - 5 5 3 3 -1. - <_> - 6 5 1 3 3. - <_> - - <_> - 3 10 12 2 -1. - <_> - 3 11 12 1 2. - <_> - - <_> - 4 5 3 3 -1. - <_> - 5 5 1 3 3. - <_> - - <_> - 9 5 3 3 -1. - <_> - 10 5 1 3 3. - <_> - - <_> - 0 4 10 3 -1. - <_> - 0 5 10 1 3. - <_> - - <_> - 9 5 3 3 -1. - <_> - 10 5 1 3 3. - <_> - - <_> - 0 0 12 11 -1. - <_> - 4 0 4 11 3. - <_> - - <_> - 9 5 3 3 -1. - <_> - 10 5 1 3 3. - <_> - - <_> - 6 5 3 3 -1. - <_> - 7 5 1 3 3. - <_> - - <_> - 7 0 6 3 -1. - <_> - 9 0 2 3 3. - <_> - - <_> - 5 0 6 3 -1. - <_> - 7 0 2 3 3. - <_> - - <_> - 0 0 18 5 -1. - <_> - 6 0 6 5 3. - <_> - - <_> - 4 0 7 4 -1. - <_> - 4 1 7 2 2. - <_> - - <_> - 10 0 3 2 -1. - <_> - 10 1 3 1 2. - <_> - - <_> - 0 0 1 12 -1. - <_> - 0 6 1 6 2. - <_> - - <_> - 16 8 2 2 -1. - <_> - 16 8 2 1 2. - 1 - <_> - - <_> - 1 7 4 1 -1. - <_> - 1 7 2 1 2. - 1 - <_> - - <_> - 6 1 6 6 -1. - <_> - 6 3 6 2 3. - <_> - - <_> - 7 11 4 1 -1. - <_> - 8 11 2 1 2. - <_> - - <_> - 16 3 2 4 -1. - <_> - 16 4 2 2 2. - <_> - - <_> - 3 2 11 6 -1. - <_> - 3 4 11 2 3. - <_> - - <_> - 10 0 3 2 -1. - <_> - 10 1 3 1 2. - <_> - - <_> - 5 0 3 2 -1. - <_> - 5 1 3 1 2. - <_> - - <_> - 2 0 16 11 -1. - <_> - 2 0 8 11 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 4 0 14 12 -1. - <_> - 4 0 7 12 2. - <_> - - <_> - 4 0 6 5 -1. - <_> - 6 0 2 5 3. - <_> - - <_> - 16 5 2 4 -1. - <_> - 16 6 2 2 2. - <_> - - <_> - 0 1 2 4 -1. - <_> - 0 2 2 2 2. - <_> - - <_> - 7 1 6 4 -1. - <_> - 7 2 6 2 2. - <_> - - <_> - 3 2 4 3 -1. - <_> - 4 3 2 3 2. - 1 - <_> - - <_> - 7 2 8 8 -1. - <_> - 11 2 4 4 2. - <_> - 7 6 4 4 2. - <_> - - <_> - 0 5 2 4 -1. - <_> - 0 6 2 2 2. - <_> - - <_> - 7 2 8 8 -1. - <_> - 11 2 4 4 2. - <_> - 7 6 4 4 2. - <_> - - <_> - 3 2 8 8 -1. - <_> - 3 2 4 4 2. - <_> - 7 6 4 4 2. - <_> - - <_> - 17 6 1 6 -1. - <_> - 17 8 1 2 3. - <_> - - <_> - 0 6 1 6 -1. - <_> - 0 8 1 2 3. - <_> - - <_> - 8 4 3 3 -1. - <_> - 9 5 1 1 9. - <_> - - <_> - 6 3 5 3 -1. - <_> - 6 4 5 1 3. - <_> - - <_> - 8 9 4 3 -1. - <_> - 9 9 2 3 2. - <_> - - <_> - 2 4 4 5 -1. - <_> - 3 4 2 5 2. - <_> - - <_> - 13 3 3 3 -1. - <_> - 12 4 3 1 3. - 1 - <_> - - <_> - 5 3 3 3 -1. - <_> - 6 4 1 3 3. - 1 - <_> - - <_> - 7 10 6 1 -1. - <_> - 9 10 2 1 3. - <_> - - <_> - 0 0 14 12 -1. - <_> - 7 0 7 12 2. - <_> - - <_> - 14 4 1 2 -1. - <_> - 14 4 1 1 2. - 1 - <_> - - <_> - 9 2 9 1 -1. - <_> - 12 5 3 1 3. - 1 - <_> - - <_> - 8 4 3 4 -1. - <_> - 9 4 1 4 3. - <_> - - <_> - 0 5 2 3 -1. - <_> - 1 5 1 3 2. - <_> - - <_> - 4 2 11 3 -1. - <_> - 4 3 11 1 3. - <_> - - <_> - 4 4 2 1 -1. - <_> - 4 4 1 1 2. - 1 - <_> - - <_> - 17 1 1 8 -1. - <_> - 17 3 1 4 2. - <_> - - <_> - 0 4 2 3 -1. - <_> - 0 5 2 1 3. - <_> - - <_> - 5 2 9 10 -1. - <_> - 8 2 3 10 3. - <_> - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - <_> - - <_> - 6 1 6 8 -1. - <_> - 6 1 3 8 2. - <_> - - <_> - 3 0 10 2 -1. - <_> - 8 0 5 2 2. - <_> - - <_> - 0 0 18 10 -1. - <_> - 9 0 9 5 2. - <_> - 0 5 9 5 2. - <_> - - <_> - 7 1 4 2 -1. - <_> - 8 1 2 2 2. - <_> - - <_> - 9 6 1 3 -1. - <_> - 9 7 1 1 3. - <_> - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - <_> - - <_> - 10 7 2 2 -1. - <_> - 11 7 1 1 2. - <_> - 10 8 1 1 2. - <_> - - <_> - 6 9 4 1 -1. - <_> - 7 9 2 1 2. - <_> - - <_> - 16 1 2 3 -1. - <_> - 16 2 2 1 3. - <_> - - <_> - 7 2 1 3 -1. - <_> - 7 3 1 1 3. - <_> - - <_> - 12 3 4 1 -1. - <_> - 13 4 2 1 2. - 1 - <_> - - <_> - 5 2 2 2 -1. - <_> - 5 2 2 1 2. - 1 - <_> - - <_> - 14 10 2 2 -1. - <_> - 15 10 1 1 2. - <_> - 14 11 1 1 2. - <_> - - <_> - 2 10 2 2 -1. - <_> - 2 11 2 1 2. - <_> - - <_> - 14 10 4 1 -1. - <_> - 15 10 2 1 2. - <_> - - <_> - 5 10 6 2 -1. - <_> - 7 10 2 2 3. - <_> - - <_> - 16 9 2 2 -1. - <_> - 17 9 1 1 2. - <_> - 16 10 1 1 2. - <_> - - <_> - 3 7 2 2 -1. - <_> - 3 7 1 1 2. - <_> - 4 8 1 1 2. - <_> - - <_> - 16 9 2 2 -1. - <_> - 17 9 1 1 2. - <_> - 16 10 1 1 2. - <_> - - <_> - 0 9 2 2 -1. - <_> - 0 9 1 1 2. - <_> - 1 10 1 1 2. - <_> - - <_> - 16 9 2 2 -1. - <_> - 17 9 1 1 2. - <_> - 16 10 1 1 2. - <_> - - <_> - 0 9 2 2 -1. - <_> - 0 9 1 1 2. - <_> - 1 10 1 1 2. - <_> - - <_> - 10 7 2 2 -1. - <_> - 11 7 1 1 2. - <_> - 10 8 1 1 2. - <_> - - <_> - 0 2 2 4 -1. - <_> - 0 3 2 2 2. - <_> - - <_> - 10 7 2 2 -1. - <_> - 11 7 1 1 2. - <_> - 10 8 1 1 2. - <_> - - <_> - 2 11 6 1 -1. - <_> - 4 11 2 1 3. - <_> - - <_> - 14 10 4 1 -1. - <_> - 15 10 2 1 2. - <_> - - <_> - 0 10 4 1 -1. - <_> - 1 10 2 1 2. - <_> - - <_> - 10 7 2 2 -1. - <_> - 11 7 1 1 2. - <_> - 10 8 1 1 2. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 2 4 16 8 -1. - <_> - 10 4 8 4 2. - <_> - 2 8 8 4 2. - <_> - - <_> - 6 0 1 4 -1. - <_> - 6 1 1 2 2. - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - <_> - - <_> - 3 0 9 3 -1. - <_> - 3 1 9 1 3. - <_> - - <_> - 14 0 3 3 -1. - <_> - 15 1 1 3 3. - 1 - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - <_> - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - <_> - - <_> - 14 0 3 3 -1. - <_> - 15 1 1 3 3. - 1 - <_> - - <_> - 4 0 3 3 -1. - <_> - 3 1 3 1 3. - 1 - <_> - - <_> - 10 4 1 4 -1. - <_> - 9 5 1 2 2. - 1 - <_> - - <_> - 5 4 6 8 -1. - <_> - 5 4 3 4 2. - <_> - 8 8 3 4 2. - <_> - - <_> - 8 0 2 3 -1. - <_> - 8 1 2 1 3. - <_> - - <_> - 6 0 4 1 -1. - <_> - 8 0 2 1 2. - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 9 1 3 1 -1. - <_> - 10 1 1 1 3. - <_> - - <_> - 0 1 2 3 -1. - <_> - 0 2 2 1 3. - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 8 0 4 4 -1. - <_> - 10 0 2 2 2. - <_> - 8 2 2 2 2. - <_> - - <_> - 9 0 4 8 -1. - <_> - 9 0 2 8 2. - 1 - <_> - - <_> - 14 4 2 6 -1. - <_> - 14 4 2 3 2. - 1 - <_> - - <_> - 0 0 6 8 -1. - <_> - 0 4 6 4 2. - <_> - - <_> - 8 0 4 4 -1. - <_> - 10 0 2 2 2. - <_> - 8 2 2 2 2. - <_> - - <_> - 4 4 6 2 -1. - <_> - 4 4 3 2 2. - 1 - <_> - - <_> - 12 1 3 2 -1. - <_> - 13 2 1 2 3. - 1 - <_> - - <_> - 5 3 8 6 -1. - <_> - 5 3 4 3 2. - <_> - 9 6 4 3 2. - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - <_> - - <_> - 2 1 3 2 -1. - <_> - 3 2 1 2 3. - 1 - <_> - - <_> - 17 2 1 3 -1. - <_> - 16 3 1 1 3. - 1 - <_> - - <_> - 6 0 4 4 -1. - <_> - 6 0 2 2 2. - <_> - 8 2 2 2 2. - <_> - - <_> - 15 0 3 4 -1. - <_> - 14 1 3 2 2. - 1 - <_> - - <_> - 3 3 12 6 -1. - <_> - 3 5 12 2 3. - <_> - - <_> - 15 0 3 4 -1. - <_> - 14 1 3 2 2. - 1 - <_> - - <_> - 3 0 4 3 -1. - <_> - 4 1 2 3 2. - 1 - <_> - - <_> - 0 3 18 3 -1. - <_> - 6 3 6 3 3. - <_> - - <_> - 4 0 10 8 -1. - <_> - 4 2 10 4 2. - <_> - - <_> - 8 10 10 2 -1. - <_> - 8 10 5 2 2. - <_> - - <_> - 0 10 10 2 -1. - <_> - 5 10 5 2 2. - <_> - - <_> - 0 2 18 6 -1. - <_> - 6 4 6 2 9. - <_> - - <_> - 12 8 6 4 -1. - <_> - 12 10 6 2 2. - <_> - - <_> - 6 5 6 4 -1. - <_> - 8 5 2 4 3. - <_> - - <_> - 14 6 1 6 -1. - <_> - 14 9 1 3 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 10 2 1 2. - <_> - - <_> - 14 6 4 6 -1. - <_> - 16 6 2 3 2. - <_> - 14 9 2 3 2. - <_> - - <_> - 0 6 4 6 -1. - <_> - 0 6 2 3 2. - <_> - 2 9 2 3 2. - <_> - - <_> - 13 1 4 4 -1. - <_> - 13 1 2 4 2. - <_> - - <_> - 0 0 1 12 -1. - <_> - 0 6 1 6 2. - <_> - - <_> - 5 0 8 2 -1. - <_> - 5 0 4 2 2. - <_> - - <_> - 1 4 14 6 -1. - <_> - 8 4 7 6 2. - <_> - - <_> - 6 3 9 6 -1. - <_> - 6 5 9 2 3. - <_> - - <_> - 1 9 1 2 -1. - <_> - 1 10 1 1 2. - <_> - - <_> - 6 7 8 1 -1. - <_> - 8 7 4 1 2. - <_> - - <_> - 7 4 3 3 -1. - <_> - 6 5 3 1 3. - 1 - <_> - - <_> - 5 4 9 4 -1. - <_> - 5 6 9 2 2. - <_> - - <_> - 2 3 1 2 -1. - <_> - 2 3 1 1 2. - 1 - <_> - - <_> - 9 0 6 4 -1. - <_> - 9 2 6 2 2. - <_> - - <_> - 1 8 1 3 -1. - <_> - 1 9 1 1 3. - <_> - - <_> - 1 0 16 4 -1. - <_> - 9 0 8 2 2. - <_> - 1 2 8 2 2. - <_> - - <_> - 3 3 1 3 -1. - <_> - 2 4 1 1 3. - 1 - <_> - - <_> - 14 1 4 4 -1. - <_> - 13 2 4 2 2. - 1 - <_> - - <_> - 4 1 4 4 -1. - <_> - 5 2 2 4 2. - 1 - <_> - - <_> - 14 4 1 2 -1. - <_> - 14 4 1 1 2. - 1 - <_> - - <_> - 4 4 2 1 -1. - <_> - 4 4 1 1 2. - 1 - <_> - - <_> - 13 3 5 3 -1. - <_> - 12 4 5 1 3. - 1 - <_> - - <_> - 5 3 3 5 -1. - <_> - 6 4 1 5 3. - 1 - <_> - - <_> - 14 4 3 5 -1. - <_> - 15 4 1 5 3. - <_> - - <_> - 1 4 3 5 -1. - <_> - 2 4 1 5 3. - <_> - - <_> - 11 0 3 5 -1. - <_> - 12 0 1 5 3. - <_> - - <_> - 4 0 3 5 -1. - <_> - 5 0 1 5 3. - <_> - - <_> - 12 0 6 10 -1. - <_> - 14 0 2 10 3. - <_> - - <_> - 4 6 8 2 -1. - <_> - 6 6 4 2 2. - <_> - - <_> - 12 10 6 2 -1. - <_> - 12 11 6 1 2. - <_> - - <_> - 5 0 4 4 -1. - <_> - 6 0 2 4 2. - <_> - - <_> - 13 7 5 2 -1. - <_> - 13 8 5 1 2. - <_> - - <_> - 1 11 16 1 -1. - <_> - 5 11 8 1 2. - <_> - - <_> - 8 11 8 1 -1. - <_> - 8 11 4 1 2. - <_> - - <_> - 5 11 2 1 -1. - <_> - 6 11 1 1 2. - <_> - - <_> - 17 0 1 9 -1. - <_> - 17 3 1 3 3. - <_> - - <_> - 9 2 6 2 -1. - <_> - 11 4 2 2 3. - 1 - <_> - - <_> - 8 2 4 4 -1. - <_> - 8 3 4 2 2. - <_> - - <_> - 0 1 6 9 -1. - <_> - 2 1 2 9 3. - <_> - - <_> - 13 1 3 10 -1. - <_> - 14 1 1 10 3. - <_> - - <_> - 3 6 4 2 -1. - <_> - 4 6 2 2 2. - <_> - - <_> - 2 3 16 6 -1. - <_> - 10 3 8 3 2. - <_> - 2 6 8 3 2. - <_> - - <_> - 8 2 2 2 -1. - <_> - 8 3 2 1 2. - <_> - - <_> - 8 11 6 1 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 1 0 14 12 -1. - <_> - 8 0 7 12 2. - <_> - - <_> - 11 11 2 1 -1. - <_> - 11 11 1 1 2. - <_> - - <_> - 5 11 2 1 -1. - <_> - 6 11 1 1 2. - <_> - - <_> - 12 10 6 2 -1. - <_> - 12 11 6 1 2. - <_> - - <_> - 8 4 2 3 -1. - <_> - 7 5 2 1 3. - 1 - <_> - - <_> - 12 10 6 2 -1. - <_> - 12 11 6 1 2. - <_> - - <_> - 0 10 6 2 -1. - <_> - 0 11 6 1 2. - <_> - - <_> - 17 0 1 9 -1. - <_> - 17 3 1 3 3. - <_> - - <_> - 0 0 1 9 -1. - <_> - 0 3 1 3 3. - <_> - - <_> - 9 1 4 6 -1. - <_> - 9 3 4 2 3. - <_> - - <_> - 2 1 3 10 -1. - <_> - 3 1 1 10 3. - <_> - - <_> - 14 3 4 3 -1. - <_> - 13 4 4 1 3. - 1 - <_> - - <_> - 4 3 3 4 -1. - <_> - 5 4 1 4 3. - 1 - <_> - - <_> - 13 6 5 3 -1. - <_> - 13 7 5 1 3. - <_> - - <_> - 4 0 4 4 -1. - <_> - 5 0 2 4 2. - <_> - - <_> - 13 6 5 3 -1. - <_> - 13 7 5 1 3. - <_> - - <_> - 6 9 4 3 -1. - <_> - 7 9 2 3 2. - <_> - - <_> - 3 9 12 3 -1. - <_> - 7 9 4 3 3. - <_> - - <_> - 0 0 8 2 -1. - <_> - 4 0 4 2 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 8 4 3 3 -1. - <_> - 9 5 1 1 9. - <_> - - <_> - 0 6 5 3 -1. - <_> - 0 7 5 1 3. - <_> - - <_> - 8 2 4 3 -1. - <_> - 8 3 4 1 3. - <_> - - <_> - 3 5 8 4 -1. - <_> - 3 6 8 2 2. - <_> - - <_> - 16 3 2 6 -1. - <_> - 16 5 2 2 3. - <_> - - <_> - 0 3 2 6 -1. - <_> - 0 5 2 2 3. - <_> - - <_> - 6 0 8 4 -1. - <_> - 6 1 8 2 2. - <_> - - <_> - 4 11 6 1 -1. - <_> - 6 11 2 1 3. - <_> - - <_> - 9 11 4 1 -1. - <_> - 10 11 2 1 2. - <_> - - <_> - 5 11 4 1 -1. - <_> - 6 11 2 1 2. - <_> - - <_> - 4 1 11 4 -1. - <_> - 4 2 11 2 2. - <_> - - <_> - 0 0 12 8 -1. - <_> - 0 2 12 4 2. - <_> - - <_> - 14 0 2 4 -1. - <_> - 14 0 1 4 2. - 1 - <_> - - <_> - 4 0 4 2 -1. - <_> - 4 0 4 1 2. - 1 - <_> - - <_> - 8 5 3 1 -1. - <_> - 9 5 1 1 3. - <_> - - <_> - 0 0 2 3 -1. - <_> - 0 1 2 1 3. - <_> - - <_> - 11 4 2 1 -1. - <_> - 11 4 1 1 2. - 1 - <_> - - <_> - 9 3 8 1 -1. - <_> - 11 5 4 1 2. - 1 - <_> - - <_> - 14 9 4 2 -1. - <_> - 14 10 4 1 2. - <_> - - <_> - 7 11 4 1 -1. - <_> - 8 11 2 1 2. - <_> - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - <_> - - <_> - 8 7 2 2 -1. - <_> - 9 7 1 1 2. - <_> - 8 8 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 8 3 5 2 -1. - <_> - 8 4 5 1 2. - <_> - - <_> - 6 3 3 2 -1. - <_> - 6 4 3 1 2. - <_> - - <_> - 14 9 1 2 -1. - <_> - 14 10 1 1 2. - <_> - - <_> - 3 9 1 2 -1. - <_> - 3 10 1 1 2. - <_> - - <_> - 10 3 4 2 -1. - <_> - 11 3 2 2 2. - <_> - - <_> - 5 7 3 1 -1. - <_> - 6 7 1 1 3. - <_> - - <_> - 11 5 4 4 -1. - <_> - 11 7 4 2 2. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 15 8 3 2 -1. - <_> - 15 9 3 1 2. - <_> - - <_> - 0 8 3 2 -1. - <_> - 0 9 3 1 2. - <_> - - <_> - 10 3 4 2 -1. - <_> - 11 3 2 2 2. - <_> - - <_> - 4 3 4 2 -1. - <_> - 5 3 2 2 2. - <_> - - <_> - 4 2 14 8 -1. - <_> - 11 2 7 4 2. - <_> - 4 6 7 4 2. - <_> - - <_> - 1 3 4 4 -1. - <_> - 1 3 2 2 2. - <_> - 3 5 2 2 2. - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 0 1 3 2. - 1 - <_> - - <_> - 0 10 1 2 -1. - <_> - 0 11 1 1 2. - <_> - - <_> - 7 1 6 2 -1. - <_> - 9 1 2 2 3. - <_> - - <_> - 5 1 6 2 -1. - <_> - 7 1 2 2 3. - <_> - - <_> - 15 10 2 2 -1. - <_> - 16 10 1 1 2. - <_> - 15 11 1 1 2. - <_> - - <_> - 1 10 2 2 -1. - <_> - 1 10 1 1 2. - <_> - 2 11 1 1 2. - <_> - - <_> - 4 2 14 8 -1. - <_> - 11 2 7 4 2. - <_> - 4 6 7 4 2. - <_> - - <_> - 5 4 4 4 -1. - <_> - 5 4 2 4 2. - 1 - <_> - - <_> - 12 4 6 6 -1. - <_> - 15 4 3 3 2. - <_> - 12 7 3 3 2. - <_> - - <_> - 0 11 12 1 -1. - <_> - 6 11 6 1 2. - <_> - - <_> - 11 8 2 2 -1. - <_> - 11 8 2 1 2. - 1 - <_> - - <_> - 0 3 2 3 -1. - <_> - 1 3 1 3 2. - <_> - - <_> - 11 4 6 6 -1. - <_> - 14 4 3 3 2. - <_> - 11 7 3 3 2. - <_> - - <_> - 1 4 6 6 -1. - <_> - 1 4 3 3 2. - <_> - 4 7 3 3 2. - <_> - - <_> - 9 1 6 3 -1. - <_> - 11 3 2 3 3. - 1 - <_> - - <_> - 14 2 3 4 -1. - <_> - 13 3 3 2 2. - 1 - <_> - - <_> - 4 2 4 3 -1. - <_> - 5 3 2 3 2. - 1 - <_> - - <_> - 16 0 2 12 -1. - <_> - 16 6 2 6 2. - <_> - - <_> - 0 0 2 12 -1. - <_> - 0 6 2 6 2. - <_> - - <_> - 6 0 8 3 -1. - <_> - 6 0 4 3 2. - <_> - - <_> - 0 0 18 9 -1. - <_> - 6 0 6 9 3. - <_> - - <_> - 10 3 3 4 -1. - <_> - 11 4 1 4 3. - 1 - <_> - - <_> - 0 8 6 4 -1. - <_> - 0 10 6 2 2. - <_> - - <_> - 10 3 3 4 -1. - <_> - 11 4 1 4 3. - 1 - <_> - - <_> - 8 3 4 3 -1. - <_> - 7 4 4 1 3. - 1 - <_> - - <_> - 12 3 4 3 -1. - <_> - 11 4 4 1 3. - 1 - <_> - - <_> - 6 3 3 4 -1. - <_> - 7 4 1 4 3. - 1 - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 5 3 2 4 -1. - <_> - 5 3 1 4 2. - 1 - <_> - - <_> - 8 0 3 5 -1. - <_> - 9 0 1 5 3. - <_> - - <_> - 7 0 3 5 -1. - <_> - 8 0 1 5 3. - <_> - - <_> - 11 4 3 3 -1. - <_> - 12 5 1 3 3. - 1 - <_> - - <_> - 6 9 4 3 -1. - <_> - 7 9 2 3 2. - <_> - - <_> - 6 0 12 12 -1. - <_> - 6 0 6 12 2. - <_> - - <_> - 0 0 14 12 -1. - <_> - 7 0 7 12 2. - <_> - - <_> - 5 9 8 1 -1. - <_> - 5 9 4 1 2. - <_> - - <_> - 5 1 7 6 -1. - <_> - 5 3 7 2 3. - <_> - - <_> - 7 0 4 4 -1. - <_> - 7 1 4 2 2. - <_> - - <_> - 0 2 6 4 -1. - <_> - 0 2 3 2 2. - <_> - 3 4 3 2 2. - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 15 9 2 2 -1. - <_> - 16 9 1 1 2. - <_> - 15 10 1 1 2. - <_> - - <_> - 1 9 2 2 -1. - <_> - 1 9 1 1 2. - <_> - 2 10 1 1 2. - <_> - - <_> - 14 7 2 4 -1. - <_> - 14 8 2 2 2. - <_> - - <_> - 2 7 2 4 -1. - <_> - 2 8 2 2 2. - <_> - - <_> - 11 4 3 4 -1. - <_> - 12 5 1 4 3. - 1 - <_> - - <_> - 3 10 12 2 -1. - <_> - 3 11 12 1 2. - <_> - - <_> - 11 4 3 4 -1. - <_> - 12 5 1 4 3. - 1 - <_> - - <_> - 7 4 4 3 -1. - <_> - 6 5 4 1 3. - 1 - <_> - - <_> - 9 10 6 2 -1. - <_> - 11 10 2 2 3. - <_> - - <_> - 3 10 6 2 -1. - <_> - 5 10 2 2 3. - <_> - - <_> - 6 3 8 8 -1. - <_> - 10 3 4 4 2. - <_> - 6 7 4 4 2. - <_> - - <_> - 2 1 3 2 -1. - <_> - 2 1 3 1 2. - 1 - <_> - - <_> - 7 7 5 3 -1. - <_> - 7 8 5 1 3. - <_> - - <_> - 0 3 3 3 -1. - <_> - 0 4 3 1 3. - <_> - - <_> - 10 3 2 2 -1. - <_> - 11 3 1 1 2. - <_> - 10 4 1 1 2. - <_> - - <_> - 3 0 9 3 -1. - <_> - 3 1 9 1 3. - <_> - - <_> - 17 8 1 4 -1. - <_> - 17 10 1 2 2. - <_> - - <_> - 5 1 7 2 -1. - <_> - 5 2 7 1 2. - <_> - - <_> - 7 1 8 4 -1. - <_> - 7 2 8 2 2. - <_> - - <_> - 0 4 2 3 -1. - <_> - 0 5 2 1 3. - <_> - - <_> - 5 2 12 8 -1. - <_> - 11 2 6 4 2. - <_> - 5 6 6 4 2. - <_> - - <_> - 4 3 8 8 -1. - <_> - 4 3 4 4 2. - <_> - 8 7 4 4 2. - <_> - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - <_> - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - <_> - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - <_> - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - <_> - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - <_> - - <_> - 7 4 3 3 -1. - <_> - 8 5 1 1 9. - <_> - - <_> - 12 0 3 12 -1. - <_> - 13 0 1 12 3. - <_> - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - <_> - - <_> - 12 0 3 10 -1. - <_> - 13 0 1 10 3. - <_> - - <_> - 6 2 1 2 -1. - <_> - 6 2 1 1 2. - 1 - <_> - - <_> - 16 5 1 6 -1. - <_> - 16 5 1 3 2. - 1 - <_> - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 12 2. - <_> - - <_> - 3 10 12 2 -1. - <_> - 7 10 4 2 3. - <_> - - <_> - 9 2 7 3 -1. - <_> - 8 3 7 1 3. - 1 - <_> - - <_> - 9 6 4 1 -1. - <_> - 10 6 2 1 2. - <_> - - <_> - 5 6 4 1 -1. - <_> - 6 6 2 1 2. - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 4 11 6 1 -1. - <_> - 6 11 2 1 3. - <_> - - <_> - 16 4 2 7 -1. - <_> - 16 4 1 7 2. - <_> - - <_> - 3 0 4 4 -1. - <_> - 4 0 2 4 2. - <_> - - <_> - 11 0 2 6 -1. - <_> - 11 0 1 6 2. - <_> - - <_> - 4 1 4 4 -1. - <_> - 6 1 2 4 2. - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 17 5 1 6 -1. - <_> - 17 7 1 2 3. - <_> - - <_> - 0 5 1 6 -1. - <_> - 0 7 1 2 3. - <_> - - <_> - 16 4 2 7 -1. - <_> - 16 4 1 7 2. - <_> - - <_> - 0 4 2 7 -1. - <_> - 1 4 1 7 2. - <_> - - <_> - 13 3 2 2 -1. - <_> - 13 3 1 2 2. - 1 - <_> - - <_> - 5 3 2 2 -1. - <_> - 5 3 2 1 2. - 1 - <_> - - <_> - 3 1 15 3 -1. - <_> - 8 2 5 1 9. - <_> - - <_> - 5 0 2 2 -1. - <_> - 5 1 2 1 2. - <_> - - <_> - 11 5 3 2 -1. - <_> - 12 6 1 2 3. - 1 - <_> - - <_> - 2 1 10 3 -1. - <_> - 7 1 5 3 2. - <_> - - <_> - 2 1 16 3 -1. - <_> - 6 1 8 3 2. - <_> - - <_> - 8 7 2 3 -1. - <_> - 8 8 2 1 3. - <_> - - <_> - 11 5 3 3 -1. - <_> - 12 6 1 1 9. - <_> - - <_> - 0 6 8 2 -1. - <_> - 0 7 8 1 2. - <_> - - <_> - 15 8 2 2 -1. - <_> - 16 8 1 1 2. - <_> - 15 9 1 1 2. - <_> - - <_> - 1 8 2 2 -1. - <_> - 1 8 1 1 2. - <_> - 2 9 1 1 2. - <_> - - <_> - 15 5 2 6 -1. - <_> - 15 5 1 6 2. - <_> - - <_> - 1 5 2 6 -1. - <_> - 2 5 1 6 2. - <_> - - <_> - 15 10 1 2 -1. - <_> - 15 11 1 1 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 9 7 2 2 -1. - <_> - 10 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 2 10 1 2 -1. - <_> - 2 11 1 1 2. - <_> - - <_> - 11 6 3 2 -1. - <_> - 12 6 1 2 3. - <_> - - <_> - 4 6 8 6 -1. - <_> - 4 6 4 3 2. - <_> - 8 9 4 3 2. - <_> - - <_> - 11 5 3 2 -1. - <_> - 12 6 1 2 3. - 1 - <_> - - <_> - 7 5 2 3 -1. - <_> - 6 6 2 1 3. - 1 - <_> - - <_> - 15 9 1 3 -1. - <_> - 15 10 1 1 3. - <_> - - <_> - 5 0 4 2 -1. - <_> - 6 0 2 2 2. - <_> - - <_> - 7 0 4 5 -1. - <_> - 8 0 2 5 2. - <_> - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 6 3 2 2 -1. - <_> - 6 3 1 1 2. - <_> - 7 4 1 1 2. - <_> - - <_> - 10 3 2 2 -1. - <_> - 11 3 1 1 2. - <_> - 10 4 1 1 2. - <_> - - <_> - 1 2 12 8 -1. - <_> - 1 2 6 4 2. - <_> - 7 6 6 4 2. - <_> - - <_> - 1 9 16 3 -1. - <_> - 5 9 8 3 2. - <_> - - <_> - 1 10 16 2 -1. - <_> - 5 10 8 2 2. - <_> - - <_> - 7 11 4 1 -1. - <_> - 8 11 2 1 2. - <_> - - <_> - 0 1 11 4 -1. - <_> - 0 2 11 2 2. - <_> - - <_> - 9 1 4 4 -1. - <_> - 9 2 4 2 2. - <_> - - <_> - 8 5 2 1 -1. - <_> - 9 5 1 1 2. - <_> - - <_> - 8 4 3 4 -1. - <_> - 9 4 1 4 3. - <_> - - <_> - 6 1 6 11 -1. - <_> - 8 1 2 11 3. - <_> - - <_> - 16 2 2 8 -1. - <_> - 16 6 2 4 2. - <_> - - <_> - 0 1 1 6 -1. - <_> - 0 3 1 2 3. - <_> - - <_> - 10 3 2 2 -1. - <_> - 11 3 1 1 2. - <_> - 10 4 1 1 2. - <_> - - <_> - 6 3 2 2 -1. - <_> - 6 3 1 1 2. - <_> - 7 4 1 1 2. - <_> - - <_> - 9 9 2 2 -1. - <_> - 10 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 7 8 4 2 -1. - <_> - 8 8 2 2 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 10 0 8 2 -1. - <_> - 10 0 4 2 2. - <_> - - <_> - 0 0 16 2 -1. - <_> - 4 0 8 2 2. - <_> - - <_> - 4 0 14 12 -1. - <_> - 11 0 7 6 2. - <_> - 4 6 7 6 2. - <_> - - <_> - 9 0 4 8 -1. - <_> - 9 0 2 8 2. - 1 - <_> - - <_> - 3 1 12 6 -1. - <_> - 7 3 4 2 9. - <_> - - <_> - 0 0 14 12 -1. - <_> - 0 0 7 6 2. - <_> - 7 6 7 6 2. - <_> - - <_> - 10 5 8 4 -1. - <_> - 14 5 4 2 2. - <_> - 10 7 4 2 2. - <_> - - <_> - 0 5 8 4 -1. - <_> - 0 5 4 2 2. - <_> - 4 7 4 2 2. - <_> - - <_> - 13 1 4 3 -1. - <_> - 12 2 4 1 3. - 1 - <_> - - <_> - 5 1 3 4 -1. - <_> - 6 2 1 4 3. - 1 - <_> - - <_> - 14 3 4 3 -1. - <_> - 13 4 4 1 3. - 1 - <_> - - <_> - 4 3 3 4 -1. - <_> - 5 4 1 4 3. - 1 - <_> - - <_> - 14 4 1 2 -1. - <_> - 14 5 1 1 2. - <_> - - <_> - 3 4 1 2 -1. - <_> - 3 5 1 1 2. - <_> - - <_> - 15 1 3 2 -1. - <_> - 16 2 1 2 3. - 1 - <_> - - <_> - 3 11 4 1 -1. - <_> - 4 11 2 1 2. - <_> - - <_> - 9 8 2 2 -1. - <_> - 10 8 1 1 2. - <_> - 9 9 1 1 2. - <_> - - <_> - 0 2 14 9 -1. - <_> - 7 2 7 9 2. - <_> - - <_> - 11 3 2 2 -1. - <_> - 11 3 1 2 2. - 1 - <_> - - <_> - 7 3 2 2 -1. - <_> - 7 3 2 1 2. - 1 - <_> - - <_> - 9 8 2 2 -1. - <_> - 10 8 1 1 2. - <_> - 9 9 1 1 2. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 12 0 6 2 -1. - <_> - 12 0 3 2 2. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 9 8 2 2 -1. - <_> - 10 8 1 1 2. - <_> - 9 9 1 1 2. - <_> - - <_> - 3 5 2 1 -1. - <_> - 4 5 1 1 2. - <_> - - <_> - 15 2 1 2 -1. - <_> - 15 3 1 1 2. - <_> - - <_> - 3 0 2 11 -1. - <_> - 4 0 1 11 2. - <_> - - <_> - 13 4 3 4 -1. - <_> - 14 5 1 4 3. - 1 - <_> - - <_> - 4 6 10 6 -1. - <_> - 4 9 10 3 2. - <_> - - <_> - 14 0 4 4 -1. - <_> - 13 1 4 2 2. - 1 - <_> - - <_> - 0 10 8 2 -1. - <_> - 4 10 4 2 2. - <_> - - <_> - 14 0 4 4 -1. - <_> - 13 1 4 2 2. - 1 - <_> - - <_> - 4 0 4 4 -1. - <_> - 5 1 2 4 2. - 1 - <_> - - <_> - 14 10 4 2 -1. - <_> - 16 10 2 1 2. - <_> - 14 11 2 1 2. - <_> - - <_> - 0 10 4 2 -1. - <_> - 0 10 2 1 2. - <_> - 2 11 2 1 2. - <_> - - <_> - 9 8 2 2 -1. - <_> - 10 8 1 1 2. - <_> - 9 9 1 1 2. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 10 9 8 2 -1. - <_> - 14 9 4 1 2. - <_> - 10 10 4 1 2. - <_> - - <_> - 3 2 2 3 -1. - <_> - 2 3 2 1 3. - 1 - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 2 2 3 2. - <_> - - <_> - 0 11 18 1 -1. - <_> - 9 11 9 1 2. - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 2 2 3 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - <_> - - <_> - 0 1 4 6 -1. - <_> - 0 1 2 3 2. - <_> - 2 4 2 3 2. - <_> - - <_> - 7 4 11 8 -1. - <_> - 7 8 11 4 2. - <_> - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - <_> - - <_> - 12 5 6 6 -1. - <_> - 12 8 6 3 2. - <_> - - <_> - 0 5 6 6 -1. - <_> - 0 8 6 3 2. - <_> - - <_> - 9 0 2 1 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 6 4 6 8 -1. - <_> - 9 4 3 8 2. - <_> - - <_> - 3 10 12 2 -1. - <_> - 3 11 12 1 2. - <_> - - <_> - 5 3 8 4 -1. - <_> - 5 4 8 2 2. - <_> - - <_> - 15 2 3 4 -1. - <_> - 14 3 3 2 2. - 1 - <_> - - <_> - 5 4 2 2 -1. - <_> - 5 4 1 2 2. - 1 - <_> - - <_> - 0 0 18 3 -1. - <_> - 6 0 6 3 3. - <_> - - <_> - 4 1 6 6 -1. - <_> - 4 3 6 2 3. - <_> - - <_> - 9 4 1 4 -1. - <_> - 8 5 1 2 2. - 1 - <_> - - <_> - 4 0 6 4 -1. - <_> - 6 0 2 4 3. - <_> - - <_> - 11 0 3 7 -1. - <_> - 12 1 1 7 3. - 1 - <_> - - <_> - 7 0 7 3 -1. - <_> - 6 1 7 1 3. - 1 - <_> - - <_> - 15 9 1 2 -1. - <_> - 15 10 1 1 2. - <_> - - <_> - 2 9 1 2 -1. - <_> - 2 10 1 1 2. - <_> - - <_> - 17 3 1 6 -1. - <_> - 17 5 1 2 3. - <_> - - <_> - 0 3 1 6 -1. - <_> - 0 5 1 2 3. - <_> - - <_> - 6 0 6 4 -1. - <_> - 6 1 6 2 2. - <_> - - <_> - 3 0 9 2 -1. - <_> - 3 1 9 1 2. - <_> - - <_> - 8 0 3 3 -1. - <_> - 9 0 1 3 3. - <_> - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - <_> - - <_> - 10 6 6 2 -1. - <_> - 12 6 2 2 3. - <_> - - <_> - 2 6 6 2 -1. - <_> - 4 6 2 2 3. - <_> - - <_> - 4 0 14 12 -1. - <_> - 4 0 7 12 2. - <_> - - <_> - 1 9 2 2 -1. - <_> - 1 9 1 1 2. - <_> - 2 10 1 1 2. - <_> - - <_> - 11 5 6 5 -1. - <_> - 13 5 2 5 3. - <_> - - <_> - 0 3 16 9 -1. - <_> - 4 3 8 9 2. - <_> - - <_> - 6 0 12 12 -1. - <_> - 6 0 6 12 2. - <_> - - <_> - 0 0 12 12 -1. - <_> - 6 0 6 12 2. - <_> - - <_> - 5 1 8 10 -1. - <_> - 5 1 4 10 2. - <_> - - <_> - 6 3 3 2 -1. - <_> - 6 4 3 1 2. - <_> - - <_> - 12 2 2 6 -1. - <_> - 10 4 2 2 3. - 1 - <_> - - <_> - 1 8 1 3 -1. - <_> - 1 9 1 1 3. - <_> - - <_> - 5 0 8 3 -1. - <_> - 5 1 8 1 3. - <_> - - <_> - 0 5 12 5 -1. - <_> - 4 5 4 5 3. - <_> - - <_> - 9 9 6 3 -1. - <_> - 11 9 2 3 3. - <_> - - <_> - 4 9 6 2 -1. - <_> - 6 9 2 2 3. - <_> - - <_> - 8 5 4 4 -1. - <_> - 9 5 2 4 2. - <_> - - <_> - 3 1 2 3 -1. - <_> - 2 2 2 1 3. - 1 - <_> - - <_> - 14 2 3 1 -1. - <_> - 15 3 1 1 3. - 1 - <_> - - <_> - 0 0 4 10 -1. - <_> - 0 5 4 5 2. - <_> - - <_> - 14 1 4 2 -1. - <_> - 14 1 4 1 2. - 1 - <_> - - <_> - 4 1 2 4 -1. - <_> - 4 1 1 4 2. - 1 - <_> - - <_> - 3 0 12 9 -1. - <_> - 3 3 12 3 3. - <_> - - <_> - 6 5 4 3 -1. - <_> - 5 6 4 1 3. - 1 - <_> - - <_> - 9 5 3 1 -1. - <_> - 10 6 1 1 3. - 1 - <_> - - <_> - 3 1 2 3 -1. - <_> - 2 2 2 1 3. - 1 - <_> - - <_> - 12 1 6 9 -1. - <_> - 14 1 2 9 3. - <_> - - <_> - 6 5 3 4 -1. - <_> - 7 5 1 4 3. - <_> - - <_> - 9 1 1 8 -1. - <_> - 7 3 1 4 2. - 1 - <_> - - <_> - 9 1 8 1 -1. - <_> - 11 3 4 1 2. - 1 - <_> - - <_> - 9 0 1 8 -1. - <_> - 9 0 1 4 2. - 1 - <_> - - <_> - 0 1 6 9 -1. - <_> - 2 1 2 9 3. - <_> - - <_> - 10 5 4 3 -1. - <_> - 11 5 2 3 2. - <_> - - <_> - 5 4 1 3 -1. - <_> - 4 5 1 1 3. - 1 - <_> - - <_> - 8 4 3 3 -1. - <_> - 9 5 1 1 9. - <_> - - <_> - 6 9 6 2 -1. - <_> - 8 9 2 2 3. - <_> - - <_> - 8 5 3 2 -1. - <_> - 9 5 1 2 3. - <_> - - <_> - 6 0 4 5 -1. - <_> - 7 0 2 5 2. - <_> - - <_> - 8 0 4 4 -1. - <_> - 9 0 2 4 2. - <_> - - <_> - 9 0 8 1 -1. - <_> - 9 0 4 1 2. - 1 - <_> - - <_> - 12 3 6 4 -1. - <_> - 15 3 3 2 2. - <_> - 12 5 3 2 2. - <_> - - <_> - 0 3 6 4 -1. - <_> - 0 3 3 2 2. - <_> - 3 5 3 2 2. - <_> - - <_> - 13 3 4 3 -1. - <_> - 12 4 4 1 3. - 1 - <_> - - <_> - 5 3 3 4 -1. - <_> - 6 4 1 4 3. - 1 - <_> - - <_> - 3 8 12 4 -1. - <_> - 7 8 4 4 3. - <_> - - <_> - 6 1 1 3 -1. - <_> - 5 2 1 1 3. - 1 - <_> - - <_> - 14 5 3 4 -1. - <_> - 14 5 3 2 2. - 1 - <_> - - <_> - 5 2 3 3 -1. - <_> - 6 3 1 3 3. - 1 - <_> - - <_> - 16 10 2 2 -1. - <_> - 16 11 2 1 2. - <_> - - <_> - 0 10 2 2 -1. - <_> - 0 11 2 1 2. - <_> - - <_> - 16 11 2 1 -1. - <_> - 16 11 1 1 2. - <_> - - <_> - 0 11 2 1 -1. - <_> - 1 11 1 1 2. - <_> - - <_> - 16 11 2 1 -1. - <_> - 16 11 1 1 2. - <_> - - <_> - 0 11 2 1 -1. - <_> - 1 11 1 1 2. - <_> - - <_> - 9 10 6 2 -1. - <_> - 11 10 2 2 3. - <_> - - <_> - 1 10 16 2 -1. - <_> - 5 10 8 2 2. - <_> - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - <_> - - <_> - 2 2 3 3 -1. - <_> - 3 2 1 3 3. - <_> - - <_> - 8 4 3 5 -1. - <_> - 9 4 1 5 3. - <_> - - <_> - 0 1 18 10 -1. - <_> - 0 1 9 5 2. - <_> - 9 6 9 5 2. - <_> - - <_> - 14 7 4 1 -1. - <_> - 15 8 2 1 2. - 1 - <_> - - <_> - 2 4 12 4 -1. - <_> - 5 4 6 4 2. - <_> - - <_> - 7 1 4 3 -1. - <_> - 7 2 4 1 3. - <_> - - <_> - 1 6 6 3 -1. - <_> - 3 6 2 3 3. - <_> - - <_> - 13 3 4 9 -1. - <_> - 13 3 2 9 2. - <_> - - <_> - 1 3 4 9 -1. - <_> - 3 3 2 9 2. - <_> - - <_> - 7 11 10 1 -1. - <_> - 7 11 5 1 2. - <_> - - <_> - 0 9 14 3 -1. - <_> - 7 9 7 3 2. - <_> - - <_> - 5 0 12 4 -1. - <_> - 5 1 12 2 2. - <_> - - <_> - 9 2 4 3 -1. - <_> - 9 2 2 3 2. - 1 - <_> - - <_> - 10 5 3 1 -1. - <_> - 11 6 1 1 3. - 1 - <_> - - <_> - 5 11 4 1 -1. - <_> - 6 11 2 1 2. - <_> - - <_> - 15 0 3 2 -1. - <_> - 15 1 3 1 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 1 2 1 2. - <_> - - <_> - 10 5 4 3 -1. - <_> - 11 5 2 3 2. - <_> - - <_> - 4 5 4 3 -1. - <_> - 5 5 2 3 2. - <_> - - <_> - 11 11 4 1 -1. - <_> - 12 11 2 1 2. - <_> - - <_> - 0 4 12 6 -1. - <_> - 4 4 4 6 3. - <_> - - <_> - 9 2 4 4 -1. - <_> - 9 2 2 4 2. - 1 - <_> - - <_> - 0 5 1 4 -1. - <_> - 0 6 1 2 2. - <_> - - <_> - 2 0 14 2 -1. - <_> - 9 0 7 1 2. - <_> - 2 1 7 1 2. - <_> - - <_> - 6 2 1 2 -1. - <_> - 6 2 1 1 2. - 1 - <_> - - <_> - 7 8 5 4 -1. - <_> - 7 9 5 2 2. - <_> - - <_> - 3 11 4 1 -1. - <_> - 4 11 2 1 2. - <_> - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - <_> - - <_> - 0 7 5 3 -1. - <_> - 0 8 5 1 3. - <_> - - <_> - 8 10 4 2 -1. - <_> - 8 11 4 1 2. - <_> - - <_> - 2 9 2 2 -1. - <_> - 2 9 1 1 2. - <_> - 3 10 1 1 2. - <_> - - <_> - 6 3 9 6 -1. - <_> - 9 5 3 2 9. - <_> - - <_> - 5 4 6 4 -1. - <_> - 7 4 2 4 3. - <_> - - <_> - 8 5 8 3 -1. - <_> - 8 5 4 3 2. - <_> - - <_> - 2 5 8 3 -1. - <_> - 6 5 4 3 2. - <_> - - <_> - 0 0 18 3 -1. - <_> - 6 0 6 3 3. - <_> - - <_> - 8 5 1 3 -1. - <_> - 7 6 1 1 3. - 1 - <_> - - <_> - 15 0 2 2 -1. - <_> - 15 0 2 1 2. - 1 - <_> - - <_> - 5 3 3 7 -1. - <_> - 6 3 1 7 3. - <_> - - <_> - 10 5 4 4 -1. - <_> - 12 5 2 2 2. - <_> - 10 7 2 2 2. - <_> - - <_> - 4 5 4 4 -1. - <_> - 4 5 2 2 2. - <_> - 6 7 2 2 2. - <_> - - <_> - 13 5 3 3 -1. - <_> - 12 6 3 1 3. - 1 - <_> - - <_> - 5 5 3 3 -1. - <_> - 6 6 1 3 3. - 1 - <_> - - <_> - 10 1 4 4 -1. - <_> - 11 1 2 4 2. - <_> - - <_> - 9 1 3 8 -1. - <_> - 9 1 3 4 2. - 1 - <_> - - <_> - 5 1 8 3 -1. - <_> - 5 1 4 3 2. - <_> - - <_> - 4 0 4 5 -1. - <_> - 5 0 2 5 2. - <_> - - <_> - 5 2 8 3 -1. - <_> - 5 3 8 1 3. - <_> - - <_> - 5 0 6 2 -1. - <_> - 7 0 2 2 3. - <_> - - <_> - 10 0 8 1 -1. - <_> - 10 0 4 1 2. - <_> - - <_> - 1 0 16 1 -1. - <_> - 5 0 8 1 2. - <_> - - <_> - 10 9 2 2 -1. - <_> - 11 9 1 1 2. - <_> - 10 10 1 1 2. - <_> - - <_> - 0 2 10 8 -1. - <_> - 0 2 5 4 2. - <_> - 5 6 5 4 2. - <_> - - <_> - 11 7 2 2 -1. - <_> - 12 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 7 4 6 8 -1. - <_> - 7 8 6 4 2. - <_> - - <_> - 0 7 1 4 -1. - <_> - 0 8 1 2 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 9 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 9 9 3 2 -1. - <_> - 9 10 3 1 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 9 8 2 2 -1. - <_> - 9 8 1 2 2. - 1 - <_> - - <_> - 8 10 2 1 -1. - <_> - 9 10 1 1 2. - <_> - - <_> - 8 10 2 1 -1. - <_> - 8 10 1 1 2. - <_> - - <_> - 6 9 2 2 -1. - <_> - 6 9 1 1 2. - <_> - 7 10 1 1 2. - <_> - - <_> - 0 11 18 1 -1. - <_> - 6 11 6 1 3. - <_> - - <_> - 3 11 6 1 -1. - <_> - 5 11 2 1 3. - <_> - - <_> - 9 9 2 2 -1. - <_> - 10 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 11 9 1 3 -1. - <_> - 11 10 1 1 3. - <_> - - <_> - 6 9 1 3 -1. - <_> - 6 10 1 1 3. - <_> - - <_> - 12 7 3 2 -1. - <_> - 13 8 1 2 3. - 1 - <_> - - <_> - 6 7 2 3 -1. - <_> - 5 8 2 1 3. - 1 - <_> - - <_> - 12 4 4 6 -1. - <_> - 14 4 2 3 2. - <_> - 12 7 2 3 2. - <_> - - <_> - 2 4 4 6 -1. - <_> - 2 4 2 3 2. - <_> - 4 7 2 3 2. - <_> - - <_> - 11 10 1 2 -1. - <_> - 11 11 1 1 2. - <_> - - <_> - 7 5 3 2 -1. - <_> - 8 5 1 2 3. - <_> - - <_> - 13 3 4 3 -1. - <_> - 12 4 4 1 3. - 1 - <_> - - <_> - 0 0 3 3 -1. - <_> - 0 1 3 1 3. - <_> - - <_> - 13 2 5 3 -1. - <_> - 12 3 5 1 3. - 1 - <_> - - <_> - 5 3 3 4 -1. - <_> - 6 4 1 4 3. - 1 - <_> - - <_> - 10 10 3 1 -1. - <_> - 11 10 1 1 3. - <_> - - <_> - 3 4 3 2 -1. - <_> - 3 5 3 1 2. - <_> - - <_> - 10 9 3 1 -1. - <_> - 11 9 1 1 3. - <_> - - <_> - 5 2 3 2 -1. - <_> - 5 2 3 1 2. - 1 - <_> - - <_> - 16 9 2 2 -1. - <_> - 17 9 1 1 2. - <_> - 16 10 1 1 2. - <_> - - <_> - 5 10 3 1 -1. - <_> - 6 10 1 1 3. - <_> - - <_> - 9 0 8 4 -1. - <_> - 9 0 8 2 2. - 1 - <_> - - <_> - 9 3 4 2 -1. - <_> - 9 3 4 1 2. - 1 - <_> - - <_> - 8 2 3 3 -1. - <_> - 8 3 3 1 3. - <_> - - <_> - 7 2 4 2 -1. - <_> - 8 2 2 2 2. - <_> - - <_> - 9 6 1 3 -1. - <_> - 9 7 1 1 3. - <_> - - <_> - 9 3 8 1 -1. - <_> - 11 5 4 1 2. - 1 - <_> - - <_> - 6 2 6 2 -1. - <_> - 8 2 2 2 3. - <_> - - <_> - 3 4 10 4 -1. - <_> - 3 4 5 2 2. - <_> - 8 6 5 2 2. - <_> - - <_> - 16 0 2 3 -1. - <_> - 15 1 2 1 3. - 1 - <_> - - <_> - 4 0 3 1 -1. - <_> - 5 0 1 1 3. - <_> - - <_> - 11 0 3 1 -1. - <_> - 12 0 1 1 3. - <_> - - <_> - 4 0 3 1 -1. - <_> - 5 0 1 1 3. - <_> - - <_> - 16 4 2 6 -1. - <_> - 16 4 1 6 2. - <_> - - <_> - 5 10 8 2 -1. - <_> - 7 10 4 2 2. - <_> - - <_> - 8 6 2 2 -1. - <_> - 9 6 1 1 2. - <_> - 8 7 1 1 2. - <_> - - <_> - 5 6 4 2 -1. - <_> - 5 7 4 1 2. - <_> - - <_> - 11 6 7 3 -1. - <_> - 11 7 7 1 3. - <_> - - <_> - 0 6 7 3 -1. - <_> - 0 7 7 1 3. - <_> - - <_> - 15 9 2 2 -1. - <_> - 16 9 1 1 2. - <_> - 15 10 1 1 2. - <_> - - <_> - 2 10 2 2 -1. - <_> - 2 10 1 1 2. - <_> - 3 11 1 1 2. - <_> - - <_> - 14 11 3 1 -1. - <_> - 15 11 1 1 3. - <_> - - <_> - 1 11 3 1 -1. - <_> - 2 11 1 1 3. - <_> - - <_> - 16 10 1 2 -1. - <_> - 16 11 1 1 2. - <_> - - <_> - 1 10 1 2 -1. - <_> - 1 11 1 1 2. - <_> - - <_> - 5 3 3 3 -1. - <_> - 6 4 1 3 3. - 1 - <_> - - <_> - 6 4 6 4 -1. - <_> - 8 4 2 4 3. - <_> - - <_> - 2 3 4 4 -1. - <_> - 2 3 2 2 2. - <_> - 4 5 2 2 2. - <_> - - <_> - 15 6 2 2 -1. - <_> - 15 6 1 2 2. - 1 - <_> - - <_> - 3 6 2 2 -1. - <_> - 3 6 2 1 2. - 1 - <_> - - <_> - 4 3 12 4 -1. - <_> - 4 4 12 2 2. - <_> - - <_> - 2 5 4 2 -1. - <_> - 2 5 2 1 2. - <_> - 4 6 2 1 2. - <_> - - <_> - 10 4 3 2 -1. - <_> - 11 5 1 2 3. - 1 - <_> - - <_> - 5 5 4 3 -1. - <_> - 6 5 2 3 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 3 2 10 4 -1. - <_> - 3 3 10 2 2. - <_> - - <_> - 12 6 6 6 -1. - <_> - 12 9 6 3 2. - <_> - - <_> - 4 6 3 2 -1. - <_> - 5 6 1 2 3. - <_> - - <_> - 16 8 1 2 -1. - <_> - 16 9 1 1 2. - <_> - - <_> - 1 8 1 2 -1. - <_> - 1 9 1 1 2. - <_> - - <_> - 9 4 3 2 -1. - <_> - 10 5 1 2 3. - 1 - <_> - - <_> - 3 9 2 1 -1. - <_> - 3 9 1 1 2. - 1 - <_> - - <_> - 9 0 6 4 -1. - <_> - 11 0 2 4 3. - <_> - - <_> - 9 3 6 3 -1. - <_> - 8 4 6 1 3. - 1 - <_> - - <_> - 9 0 6 4 -1. - <_> - 11 0 2 4 3. - <_> - - <_> - 0 0 1 12 -1. - <_> - 0 6 1 6 2. - <_> - - <_> - 6 0 6 4 -1. - <_> - 6 1 6 2 2. - <_> - - <_> - 1 0 10 4 -1. - <_> - 1 1 10 2 2. - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 0 1 3 2. - 1 - <_> - - <_> - 0 3 2 4 -1. - <_> - 0 4 2 2 2. - <_> - - <_> - 14 4 2 6 -1. - <_> - 14 4 2 3 2. - 1 - <_> - - <_> - 5 3 3 6 -1. - <_> - 6 5 1 2 9. - <_> - - <_> - 7 0 6 6 -1. - <_> - 7 2 6 2 3. - <_> - - <_> - 0 4 16 7 -1. - <_> - 8 4 8 7 2. - <_> - - <_> - 6 4 8 6 -1. - <_> - 10 4 4 3 2. - <_> - 6 7 4 3 2. - <_> - - <_> - 3 2 4 3 -1. - <_> - 4 3 2 3 2. - 1 - <_> - - <_> - 10 0 4 3 -1. - <_> - 10 0 2 3 2. - <_> - - <_> - 4 0 4 3 -1. - <_> - 6 0 2 3 2. - <_> - - <_> - 15 4 2 6 -1. - <_> - 15 4 2 3 2. - 1 - <_> - - <_> - 3 4 6 2 -1. - <_> - 3 4 3 2 2. - 1 - <_> - - <_> - 4 0 14 12 -1. - <_> - 4 0 7 12 2. - <_> - - <_> - 0 0 12 12 -1. - <_> - 4 0 4 12 3. - <_> - - <_> - 15 2 3 3 -1. - <_> - 15 3 3 1 3. - <_> - - <_> - 3 7 3 1 -1. - <_> - 4 7 1 1 3. - <_> - - <_> - 14 2 4 3 -1. - <_> - 14 3 4 1 3. - <_> - - <_> - 0 0 15 6 -1. - <_> - 5 2 5 2 9. - <_> - - <_> - 8 1 6 3 -1. - <_> - 10 1 2 3 3. - <_> - - <_> - 0 2 14 8 -1. - <_> - 0 2 7 4 2. - <_> - 7 6 7 4 2. - <_> - - <_> - 11 10 1 2 -1. - <_> - 11 11 1 1 2. - <_> - - <_> - 0 9 2 2 -1. - <_> - 0 9 1 1 2. - <_> - 1 10 1 1 2. - <_> - - <_> - 13 9 3 3 -1. - <_> - 13 10 3 1 3. - <_> - - <_> - 8 4 3 3 -1. - <_> - 7 5 3 1 3. - 1 - <_> - - <_> - 8 9 6 2 -1. - <_> - 10 9 2 2 3. - <_> - - <_> - 0 3 1 4 -1. - <_> - 0 4 1 2 2. - <_> - - <_> - 9 6 2 2 -1. - <_> - 10 6 1 1 2. - <_> - 9 7 1 1 2. - <_> - - <_> - 7 6 2 2 -1. - <_> - 7 6 1 1 2. - <_> - 8 7 1 1 2. - <_> - - <_> - 7 0 5 2 -1. - <_> - 7 1 5 1 2. - <_> - - <_> - 3 0 3 12 -1. - <_> - 4 0 1 12 3. - <_> - - <_> - 7 9 6 3 -1. - <_> - 9 9 2 3 3. - <_> - - <_> - 5 9 6 3 -1. - <_> - 7 9 2 3 3. - <_> - - <_> - 9 0 2 2 -1. - <_> - 10 0 1 1 2. - <_> - 9 1 1 1 2. - <_> - - <_> - 3 0 10 2 -1. - <_> - 3 0 5 1 2. - <_> - 8 1 5 1 2. - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - <_> - - <_> - 0 10 18 2 -1. - <_> - 6 10 6 2 3. - <_> - - <_> - 2 11 16 1 -1. - <_> - 6 11 8 1 2. - <_> - - <_> - 4 10 4 1 -1. - <_> - 5 10 2 1 2. - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - <_> - - <_> - 2 2 10 10 -1. - <_> - 7 2 5 10 2. - <_> - - <_> - 7 2 8 5 -1. - <_> - 7 2 4 5 2. - <_> - - <_> - 3 2 8 5 -1. - <_> - 7 2 4 5 2. - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - <_> - - <_> - 2 0 4 2 -1. - <_> - 2 0 4 1 2. - 1 - <_> - - <_> - 12 10 6 2 -1. - <_> - 12 11 6 1 2. - <_> - - <_> - 2 0 3 2 -1. - <_> - 2 0 3 1 2. - 1 - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - <_> - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - <_> - - <_> - 12 10 6 2 -1. - <_> - 12 11 6 1 2. - <_> - - <_> - 6 10 1 2 -1. - <_> - 6 11 1 1 2. - <_> - - <_> - 8 10 4 2 -1. - <_> - 8 11 4 1 2. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 9 7 2 3 -1. - <_> - 9 8 2 1 3. - <_> - - <_> - 0 6 9 3 -1. - <_> - 0 7 9 1 3. - <_> - - <_> - 11 0 3 5 -1. - <_> - 12 0 1 5 3. - <_> - - <_> - 4 0 3 5 -1. - <_> - 5 0 1 5 3. - <_> - - <_> - 0 11 18 1 -1. - <_> - 0 11 9 1 2. - <_> - - <_> - 0 1 14 11 -1. - <_> - 7 1 7 11 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 0 0 9 1 2. - <_> - - <_> - 3 1 9 6 -1. - <_> - 3 3 9 2 3. - <_> - - <_> - 11 4 2 1 -1. - <_> - 11 4 1 1 2. - 1 - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 17 9 1 2 -1. - <_> - 17 10 1 1 2. - <_> - - <_> - 1 8 2 2 -1. - <_> - 1 8 1 1 2. - <_> - 2 9 1 1 2. - <_> - - <_> - 9 4 2 3 -1. - <_> - 9 5 2 1 3. - <_> - - <_> - 2 9 3 3 -1. - <_> - 2 10 3 1 3. - <_> - - <_> - 5 8 8 3 -1. - <_> - 5 9 8 1 3. - <_> - - <_> - 0 9 6 2 -1. - <_> - 0 10 6 1 2. - <_> - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - <_> - - <_> - 6 3 5 3 -1. - <_> - 6 4 5 1 3. - <_> - - <_> - 11 4 2 1 -1. - <_> - 11 4 1 1 2. - 1 - <_> - - <_> - 4 0 10 2 -1. - <_> - 9 0 5 2 2. - <_> - - <_> - 17 0 1 3 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 7 0 4 3 -1. - <_> - 9 0 2 3 2. - <_> - - <_> - 14 2 3 2 -1. - <_> - 15 3 1 2 3. - 1 - <_> - - <_> - 9 0 6 4 -1. - <_> - 11 2 2 4 3. - 1 - <_> - - <_> - 17 0 1 3 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 1 0 3 1 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 2 2 16 1 -1. - <_> - 6 2 8 1 2. - <_> - - <_> - 7 4 1 2 -1. - <_> - 7 4 1 1 2. - 1 - <_> - - <_> - 13 4 5 3 -1. - <_> - 12 5 5 1 3. - 1 - <_> - - <_> - 4 1 4 4 -1. - <_> - 5 2 2 4 2. - 1 - <_> - - <_> - 15 4 3 2 -1. - <_> - 15 5 3 1 2. - <_> - - <_> - 0 2 18 4 -1. - <_> - 0 2 9 2 2. - <_> - 9 4 9 2 2. - <_> - - <_> - 10 3 2 1 -1. - <_> - 10 3 1 1 2. - 1 - <_> - - <_> - 5 3 2 2 -1. - <_> - 5 3 2 1 2. - 1 - <_> - - <_> - 17 7 1 4 -1. - <_> - 17 9 1 2 2. - <_> - - <_> - 7 4 3 3 -1. - <_> - 8 5 1 1 9. - <_> - - <_> - 16 6 2 3 -1. - <_> - 16 7 2 1 3. - <_> - - <_> - 0 7 1 4 -1. - <_> - 0 9 1 2 2. - <_> - - <_> - 10 10 8 2 -1. - <_> - 10 10 4 2 2. - <_> - - <_> - 8 3 1 6 -1. - <_> - 8 3 1 3 2. - 1 - <_> - - <_> - 9 4 8 5 -1. - <_> - 9 4 4 5 2. - <_> - - <_> - 1 4 8 5 -1. - <_> - 5 4 4 5 2. - <_> - - <_> - 9 5 4 1 -1. - <_> - 10 5 2 1 2. - <_> - - <_> - 5 5 4 1 -1. - <_> - 6 5 2 1 2. - <_> - - <_> - 13 6 4 6 -1. - <_> - 15 6 2 3 2. - <_> - 13 9 2 3 2. - <_> - - <_> - 1 6 4 6 -1. - <_> - 1 6 2 3 2. - <_> - 3 9 2 3 2. - <_> - - <_> - 5 6 10 4 -1. - <_> - 10 6 5 2 2. - <_> - 5 8 5 2 2. - <_> - - <_> - 2 3 3 7 -1. - <_> - 3 3 1 7 3. - <_> - - <_> - 9 7 2 3 -1. - <_> - 9 8 2 1 3. - <_> - - <_> - 6 11 6 1 -1. - <_> - 8 11 2 1 3. - <_> - - <_> - 16 1 2 9 -1. - <_> - 13 4 2 3 3. - 1 - <_> - - <_> - 0 0 3 3 -1. - <_> - 0 1 3 1 3. - <_> - - <_> - 6 3 9 6 -1. - <_> - 6 6 9 3 2. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 2 2. - 1 - <_> - - <_> - 4 6 10 6 -1. - <_> - 4 9 10 3 2. - <_> - - <_> - 5 6 2 4 -1. - <_> - 4 7 2 2 2. - 1 - <_> - - <_> - 16 9 2 2 -1. - <_> - 17 9 1 1 2. - <_> - 16 10 1 1 2. - <_> - - <_> - 2 8 1 2 -1. - <_> - 2 8 1 1 2. - 1 - <_> - - <_> - 16 6 2 3 -1. - <_> - 16 7 2 1 3. - <_> - - <_> - 0 3 2 9 -1. - <_> - 1 3 1 9 2. - <_> - - <_> - 15 4 3 2 -1. - <_> - 16 5 1 2 3. - 1 - <_> - - <_> - 3 4 2 3 -1. - <_> - 2 5 2 1 3. - 1 - <_> - - <_> - 6 1 12 4 -1. - <_> - 6 2 12 2 2. - <_> - - <_> - 5 2 8 3 -1. - <_> - 5 3 8 1 3. - <_> - - <_> - 12 1 2 1 -1. - <_> - 12 1 1 1 2. - 1 - <_> - - <_> - 6 1 2 2 -1. - <_> - 6 1 2 1 2. - 1 - <_> - - <_> - 8 1 10 1 -1. - <_> - 8 1 5 1 2. - <_> - - <_> - 0 1 10 1 -1. - <_> - 5 1 5 1 2. - <_> - - <_> - 13 7 2 2 -1. - <_> - 14 7 1 1 2. - <_> - 13 8 1 1 2. - <_> - - <_> - 0 9 2 2 -1. - <_> - 0 9 1 1 2. - <_> - 1 10 1 1 2. - <_> - - <_> - 16 1 2 4 -1. - <_> - 15 2 2 2 2. - 1 - <_> - - <_> - 0 0 3 1 -1. - <_> - 1 0 1 1 3. - <_> - - <_> - 9 10 2 1 -1. - <_> - 9 10 1 1 2. - <_> - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - <_> - - <_> - 13 7 2 2 -1. - <_> - 14 7 1 1 2. - <_> - 13 8 1 1 2. - <_> - - <_> - 3 0 6 1 -1. - <_> - 5 0 2 1 3. - <_> - - <_> - 16 1 2 4 -1. - <_> - 15 2 2 2 2. - 1 - <_> - - <_> - 2 1 4 2 -1. - <_> - 3 2 2 2 2. - 1 - <_> - - <_> - 15 4 1 2 -1. - <_> - 15 4 1 1 2. - 1 - <_> - - <_> - 3 4 2 1 -1. - <_> - 3 4 1 1 2. - 1 - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 0 1 1 3. - <_> - - <_> - 0 0 3 1 -1. - <_> - 1 0 1 1 3. - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 6 11 3 1 -1. - <_> - 7 11 1 1 3. - <_> - - <_> - 11 9 2 2 -1. - <_> - 12 9 1 1 2. - <_> - 11 10 1 1 2. - <_> - - <_> - 6 8 6 3 -1. - <_> - 6 9 6 1 3. - <_> - - <_> - 8 10 6 2 -1. - <_> - 10 10 2 2 3. - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 9 8 2 2 -1. - <_> - 10 8 1 1 2. - <_> - 9 9 1 1 2. - <_> - - <_> - 8 7 1 3 -1. - <_> - 8 8 1 1 3. - <_> - - <_> - 8 4 2 6 -1. - <_> - 8 7 2 3 2. - <_> - - <_> - 8 6 1 3 -1. - <_> - 8 7 1 1 3. - <_> - - <_> - 14 8 1 3 -1. - <_> - 14 9 1 1 3. - <_> - - <_> - 3 8 1 3 -1. - <_> - 3 9 1 1 3. - <_> - - <_> - 13 2 4 3 -1. - <_> - 14 3 2 3 2. - 1 - <_> - - <_> - 6 4 6 8 -1. - <_> - 9 4 3 8 2. - <_> - - <_> - 9 11 2 1 -1. - <_> - 9 11 1 1 2. - <_> - - <_> - 2 1 9 2 -1. - <_> - 5 4 3 2 3. - 1 - <_> - - <_> - 10 5 8 3 -1. - <_> - 10 6 8 1 3. - <_> - - <_> - 3 5 1 2 -1. - <_> - 3 6 1 1 2. - <_> - - <_> - 11 1 4 2 -1. - <_> - 11 2 4 1 2. - <_> - - <_> - 4 1 4 2 -1. - <_> - 4 2 4 1 2. - <_> - - <_> - 12 3 3 1 -1. - <_> - 13 4 1 1 3. - 1 - <_> - - <_> - 6 3 1 3 -1. - <_> - 5 4 1 1 3. - 1 - <_> - - <_> - 13 4 5 3 -1. - <_> - 12 5 5 1 3. - 1 - <_> - - <_> - 5 4 3 5 -1. - <_> - 6 5 1 5 3. - 1 - <_> - - <_> - 13 1 4 3 -1. - <_> - 12 2 4 1 3. - 1 - <_> - - <_> - 8 7 2 2 -1. - <_> - 9 7 1 2 2. - <_> - - <_> - 0 4 18 4 -1. - <_> - 9 4 9 2 2. - <_> - 0 6 9 2 2. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 1 2. - <_> - 8 3 1 1 2. - <_> - - <_> - 6 0 6 1 -1. - <_> - 8 0 2 1 3. - <_> - - <_> - 6 0 4 3 -1. - <_> - 6 1 4 1 3. - <_> - - <_> - 9 11 2 1 -1. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 11 2 1 -1. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 11 2 1 -1. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 11 2 1 -1. - <_> - 8 11 1 1 2. - <_> - - <_> - 8 10 6 2 -1. - <_> - 10 10 2 2 3. - <_> - - <_> - 4 10 6 2 -1. - <_> - 6 10 2 2 3. - <_> - - <_> - 14 2 4 3 -1. - <_> - 14 3 4 1 3. - <_> - - <_> - 3 6 11 3 -1. - <_> - 3 7 11 1 3. - <_> - - <_> - 9 7 2 3 -1. - <_> - 9 7 1 3 2. - 1 - <_> - - <_> - 0 2 18 7 -1. - <_> - 6 2 6 7 3. - <_> - - <_> - 12 1 6 4 -1. - <_> - 12 1 3 4 2. - <_> - - <_> - 0 1 6 4 -1. - <_> - 3 1 3 4 2. - <_> - - <_> - 11 1 2 7 -1. - <_> - 11 1 1 7 2. - 1 - <_> - - <_> - 2 4 9 4 -1. - <_> - 2 6 9 2 2. - <_> - - <_> - 9 3 3 1 -1. - <_> - 10 3 1 1 3. - <_> - - <_> - 0 0 6 10 -1. - <_> - 2 0 2 10 3. - <_> - - <_> - 10 4 4 6 -1. - <_> - 11 4 2 6 2. - <_> - - <_> - 4 4 4 6 -1. - <_> - 5 4 2 6 2. - <_> - - <_> - 11 0 4 3 -1. - <_> - 12 0 2 3 2. - <_> - - <_> - 2 0 6 4 -1. - <_> - 4 0 2 4 3. - <_> - - <_> - 8 3 3 5 -1. - <_> - 9 3 1 5 3. - <_> - - <_> - 7 3 3 5 -1. - <_> - 8 3 1 5 3. - <_> - - <_> - 6 4 6 4 -1. - <_> - 8 4 2 4 3. - <_> - - <_> - 8 5 2 2 -1. - <_> - 8 5 2 1 2. - 1 - <_> - - <_> - 9 4 8 6 -1. - <_> - 13 4 4 3 2. - <_> - 9 7 4 3 2. - <_> - - <_> - 5 10 2 2 -1. - <_> - 5 10 1 1 2. - <_> - 6 11 1 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - <_> - - <_> - 0 11 16 1 -1. - <_> - 4 11 8 1 2. - <_> - - <_> - 14 9 1 2 -1. - <_> - 14 9 1 1 2. - 1 - <_> - - <_> - 1 10 12 2 -1. - <_> - 5 10 4 2 3. - <_> - - <_> - 1 11 16 1 -1. - <_> - 1 11 8 1 2. - <_> - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - <_> - - <_> - 0 10 18 2 -1. - <_> - 9 10 9 1 2. - <_> - 0 11 9 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 8 4 4 4 -1. - <_> - 10 4 2 2 2. - <_> - 8 6 2 2 2. - <_> - - <_> - 6 4 4 4 -1. - <_> - 6 4 2 2 2. - <_> - 8 6 2 2 2. - <_> - - <_> - 8 4 3 1 -1. - <_> - 9 4 1 1 3. - <_> - - <_> - 7 2 4 3 -1. - <_> - 8 2 2 3 2. - <_> - - <_> - 9 3 2 2 -1. - <_> - 10 3 1 1 2. - <_> - 9 4 1 1 2. - <_> - - <_> - 6 3 3 1 -1. - <_> - 7 3 1 1 3. - <_> - - <_> - 12 3 1 2 -1. - <_> - 12 4 1 1 2. - <_> - - <_> - 8 0 2 2 -1. - <_> - 8 0 1 1 2. - <_> - 9 1 1 1 2. - <_> - - <_> - 8 0 2 2 -1. - <_> - 9 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 3 2 1 3 -1. - <_> - 2 3 1 1 3. - 1 - <_> - - <_> - 8 0 2 2 -1. - <_> - 9 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 1 8 2 4 -1. - <_> - 1 9 2 2 2. - <_> - - <_> - 10 9 6 3 -1. - <_> - 10 10 6 1 3. - <_> - - <_> - 2 9 6 3 -1. - <_> - 2 10 6 1 3. - <_> - - <_> - 6 9 10 3 -1. - <_> - 6 10 10 1 3. - <_> - - <_> - 7 5 3 1 -1. - <_> - 8 5 1 1 3. - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 0 1 3 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 9 7 3 1 -1. - <_> - 10 7 1 1 3. - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 9 7 3 1 -1. - <_> - 10 7 1 1 3. - <_> - - <_> - 6 7 3 1 -1. - <_> - 7 7 1 1 3. - <_> - - <_> - 7 1 4 5 -1. - <_> - 8 1 2 5 2. - <_> - - <_> - 0 6 6 3 -1. - <_> - 0 7 6 1 3. - <_> - - <_> - 12 3 1 2 -1. - <_> - 12 4 1 1 2. - <_> - - <_> - 5 3 3 4 -1. - <_> - 5 4 3 2 2. - <_> - - <_> - 11 1 2 3 -1. - <_> - 11 1 1 3 2. - 1 - <_> - - <_> - 8 6 2 6 -1. - <_> - 9 6 1 6 2. - <_> - - <_> - 0 0 18 6 -1. - <_> - 9 0 9 3 2. - <_> - 0 3 9 3 2. - <_> - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - <_> - - <_> - 14 5 4 6 -1. - <_> - 14 5 2 6 2. - <_> - - <_> - 6 4 1 4 -1. - <_> - 5 5 1 2 2. - 1 - <_> - - <_> - 4 0 10 12 -1. - <_> - 4 6 10 6 2. - <_> - - <_> - 8 4 2 3 -1. - <_> - 7 5 2 1 3. - 1 - <_> - - <_> - 7 0 8 4 -1. - <_> - 7 1 8 2 2. - <_> - - <_> - 2 0 9 4 -1. - <_> - 2 1 9 2 2. - <_> - - <_> - 16 5 2 4 -1. - <_> - 16 5 1 4 2. - <_> - - <_> - 0 6 2 6 -1. - <_> - 0 6 1 3 2. - <_> - 1 9 1 3 2. - <_> - - <_> - 11 5 3 3 -1. - <_> - 12 5 1 3 3. - <_> - - <_> - 0 2 1 10 -1. - <_> - 0 7 1 5 2. - <_> - - <_> - 13 5 1 2 -1. - <_> - 13 5 1 1 2. - 1 - <_> - - <_> - 5 5 2 1 -1. - <_> - 5 5 1 1 2. - 1 - <_> - - <_> - 12 10 6 2 -1. - <_> - 12 11 6 1 2. - <_> - - <_> - 5 0 6 2 -1. - <_> - 8 0 3 2 2. - <_> - - <_> - 0 0 18 11 -1. - <_> - 0 0 9 11 2. - <_> - - <_> - 8 3 4 2 -1. - <_> - 8 3 4 1 2. - 1 - <_> - - <_> - 15 4 2 6 -1. - <_> - 15 4 1 6 2. - <_> - - <_> - 1 4 2 6 -1. - <_> - 2 4 1 6 2. - <_> - - <_> - 17 7 1 4 -1. - <_> - 17 7 1 2 2. - 1 - <_> - - <_> - 1 7 4 1 -1. - <_> - 1 7 2 1 2. - 1 - <_> - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - <_> - - <_> - 0 2 2 4 -1. - <_> - 0 3 2 2 2. - <_> - - <_> - 14 4 2 6 -1. - <_> - 14 4 2 3 2. - 1 - <_> - - <_> - 3 0 4 3 -1. - <_> - 4 0 2 3 2. - <_> - - <_> - 9 0 4 4 -1. - <_> - 10 0 2 4 2. - <_> - - <_> - 2 2 10 3 -1. - <_> - 7 2 5 3 2. - <_> - - <_> - 12 10 6 2 -1. - <_> - 12 11 6 1 2. - <_> - - <_> - 0 10 6 2 -1. - <_> - 0 11 6 1 2. - <_> - - <_> - 8 8 2 3 -1. - <_> - 8 9 2 1 3. - <_> - - <_> - 7 7 4 3 -1. - <_> - 7 8 4 1 3. - <_> - - <_> - 7 4 7 2 -1. - <_> - 7 5 7 1 2. - <_> - - <_> - 7 0 4 4 -1. - <_> - 8 0 2 4 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 3 0 7 6 -1. - <_> - 3 2 7 2 3. - <_> - - <_> - 4 1 12 4 -1. - <_> - 4 2 12 2 2. - <_> - - <_> - 0 8 1 4 -1. - <_> - 0 9 1 2 2. - <_> - - <_> - 6 4 6 8 -1. - <_> - 6 6 6 4 2. - <_> - - <_> - 3 4 3 4 -1. - <_> - 3 6 3 2 2. - <_> - - <_> - 14 2 4 3 -1. - <_> - 13 3 4 1 3. - 1 - <_> - - <_> - 4 2 3 4 -1. - <_> - 5 3 1 4 3. - 1 - <_> - - <_> - 13 3 3 1 -1. - <_> - 14 4 1 1 3. - 1 - <_> - - <_> - 0 0 6 4 -1. - <_> - 0 0 3 2 2. - <_> - 3 2 3 2 2. - <_> - - <_> - 9 0 6 5 -1. - <_> - 11 0 2 5 3. - <_> - - <_> - 0 0 14 12 -1. - <_> - 7 0 7 12 2. - <_> - - <_> - 9 9 4 3 -1. - <_> - 10 9 2 3 2. - <_> - - <_> - 3 0 6 5 -1. - <_> - 5 0 2 5 3. - <_> - - <_> - 10 6 4 2 -1. - <_> - 12 6 2 1 2. - <_> - 10 7 2 1 2. - <_> - - <_> - 3 9 12 2 -1. - <_> - 6 9 6 2 2. - <_> - - <_> - 7 10 6 2 -1. - <_> - 9 10 2 2 3. - <_> - - <_> - 5 10 6 2 -1. - <_> - 7 10 2 2 3. - <_> - - <_> - 14 1 3 2 -1. - <_> - 15 2 1 2 3. - 1 - <_> - - <_> - 5 0 3 3 -1. - <_> - 5 1 3 1 3. - <_> - - <_> - 8 0 6 3 -1. - <_> - 8 1 6 1 3. - <_> - - <_> - 4 1 2 3 -1. - <_> - 3 2 2 1 3. - 1 - <_> - - <_> - 8 5 3 1 -1. - <_> - 9 5 1 1 3. - <_> - - <_> - 7 5 3 1 -1. - <_> - 8 5 1 1 3. - <_> - - <_> - 9 5 3 1 -1. - <_> - 10 5 1 1 3. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 5 1 1 3. - <_> - - <_> - 13 0 4 4 -1. - <_> - 14 1 2 4 2. - 1 - <_> - - <_> - 5 0 4 4 -1. - <_> - 4 1 4 2 2. - 1 - <_> - - <_> - 10 7 6 1 -1. - <_> - 12 7 2 1 3. - <_> - - <_> - 0 0 18 3 -1. - <_> - 6 0 6 3 3. - <_> - - <_> - 2 1 16 2 -1. - <_> - 6 1 8 2 2. - <_> - - <_> - 6 0 4 2 -1. - <_> - 7 0 2 2 2. - <_> - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - <_> - - <_> - 0 4 2 6 -1. - <_> - 1 4 1 6 2. - <_> - - <_> - 9 3 2 4 -1. - <_> - 9 3 2 2 2. - 1 - <_> - - <_> - 9 3 4 2 -1. - <_> - 9 3 2 2 2. - 1 - <_> - - <_> - 0 7 18 4 -1. - <_> - 9 7 9 2 2. - <_> - 0 9 9 2 2. - <_> - - <_> - 0 6 6 4 -1. - <_> - 0 6 3 2 2. - <_> - 3 8 3 2 2. - <_> - - <_> - 17 0 1 12 -1. - <_> - 17 4 1 4 3. - <_> - - <_> - 5 4 3 5 -1. - <_> - 6 5 1 5 3. - 1 - <_> - - <_> - 15 1 3 4 -1. - <_> - 14 2 3 2 2. - 1 - <_> - - <_> - 3 1 4 3 -1. - <_> - 4 2 2 3 2. - 1 - <_> - - <_> - 17 0 1 12 -1. - <_> - 17 4 1 4 3. - <_> - - <_> - 0 0 1 12 -1. - <_> - 0 4 1 4 3. - <_> - - <_> - 9 9 6 3 -1. - <_> - 11 9 2 3 3. - <_> - - <_> - 3 9 6 3 -1. - <_> - 5 9 2 3 3. - <_> - - <_> - 3 5 12 4 -1. - <_> - 9 5 6 2 2. - <_> - 3 7 6 2 2. - <_> - - <_> - 3 9 9 3 -1. - <_> - 3 10 9 1 3. - <_> - - <_> - 0 10 18 2 -1. - <_> - 6 10 6 2 3. - <_> - - <_> - 2 11 12 1 -1. - <_> - 5 11 6 1 2. - <_> - - <_> - 13 9 1 3 -1. - <_> - 13 10 1 1 3. - <_> - - <_> - 5 2 6 3 -1. - <_> - 5 3 6 1 3. - <_> - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - <_> - - <_> - 5 2 1 4 -1. - <_> - 4 3 1 2 2. - 1 - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 4 4 6 2 -1. - <_> - 4 4 3 2 2. - 1 - <_> - - <_> - 10 5 8 3 -1. - <_> - 10 6 8 1 3. - <_> - - <_> - 4 9 1 3 -1. - <_> - 4 10 1 1 3. - <_> - - <_> - 10 5 8 3 -1. - <_> - 10 6 8 1 3. - <_> - - <_> - 0 5 8 3 -1. - <_> - 0 6 8 1 3. - <_> - - <_> - 10 10 2 2 -1. - <_> - 11 10 1 1 2. - <_> - 10 11 1 1 2. - <_> - - <_> - 0 10 1 2 -1. - <_> - 0 11 1 1 2. - <_> - - <_> - 14 3 4 3 -1. - <_> - 13 4 4 1 3. - 1 - <_> - - <_> - 6 10 2 2 -1. - <_> - 6 10 1 1 2. - <_> - 7 11 1 1 2. - <_> - - <_> - 14 3 4 3 -1. - <_> - 13 4 4 1 3. - 1 - <_> - - <_> - 4 3 3 4 -1. - <_> - 5 4 1 4 3. - 1 - <_> - - <_> - 10 6 4 2 -1. - <_> - 12 6 2 1 2. - <_> - 10 7 2 1 2. - <_> - - <_> - 4 5 3 4 -1. - <_> - 5 5 1 4 3. - <_> - - <_> - 10 6 4 2 -1. - <_> - 12 6 2 1 2. - <_> - 10 7 2 1 2. - <_> - - <_> - 4 6 4 2 -1. - <_> - 4 6 2 1 2. - <_> - 6 7 2 1 2. - <_> - - <_> - 14 10 2 2 -1. - <_> - 15 10 1 1 2. - <_> - 14 11 1 1 2. - <_> - - <_> - 9 4 2 3 -1. - <_> - 8 5 2 1 3. - 1 - <_> - - <_> - 3 4 15 6 -1. - <_> - 8 6 5 2 9. - <_> - - <_> - 0 6 12 2 -1. - <_> - 4 6 4 2 3. - <_> - - <_> - 14 10 2 2 -1. - <_> - 15 10 1 1 2. - <_> - 14 11 1 1 2. - <_> - - <_> - 0 2 18 3 -1. - <_> - 6 2 6 3 3. - <_> - - <_> - 14 10 2 2 -1. - <_> - 15 10 1 1 2. - <_> - 14 11 1 1 2. - <_> - - <_> - 2 7 6 1 -1. - <_> - 4 7 2 1 3. - <_> - - <_> - 14 10 2 2 -1. - <_> - 15 10 1 1 2. - <_> - 14 11 1 1 2. - <_> - - <_> - 2 10 2 2 -1. - <_> - 2 10 1 1 2. - <_> - 3 11 1 1 2. - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 4 4 1 3 -1. - <_> - 3 5 1 1 3. - 1 - <_> - - <_> - 12 5 6 5 -1. - <_> - 14 5 2 5 3. - <_> - - <_> - 9 8 2 2 -1. - <_> - 9 8 2 1 2. - 1 - <_> - - <_> - 9 9 4 3 -1. - <_> - 10 9 2 3 2. - <_> - - <_> - 6 2 6 10 -1. - <_> - 9 2 3 10 2. - <_> - - <_> - 5 3 12 9 -1. - <_> - 8 3 6 9 2. - <_> - - <_> - 0 1 16 9 -1. - <_> - 4 1 8 9 2. - <_> - - <_> - 9 9 4 3 -1. - <_> - 10 9 2 3 2. - <_> - - <_> - 5 9 4 3 -1. - <_> - 6 9 2 3 2. - <_> - - <_> - 1 11 16 1 -1. - <_> - 5 11 8 1 2. - <_> - - <_> - 4 9 2 1 -1. - <_> - 4 9 1 1 2. - 1 - <_> - - <_> - 12 5 6 5 -1. - <_> - 14 5 2 5 3. - <_> - - <_> - 0 5 6 5 -1. - <_> - 2 5 2 5 3. - <_> - - <_> - 0 1 18 10 -1. - <_> - 9 1 9 5 2. - <_> - 0 6 9 5 2. - <_> - - <_> - 6 10 2 1 -1. - <_> - 7 10 1 1 2. - <_> - - <_> - 10 7 3 1 -1. - <_> - 11 7 1 1 3. - <_> - - <_> - 2 1 4 6 -1. - <_> - 3 1 2 6 2. - <_> - - <_> - 12 2 6 1 -1. - <_> - 12 2 3 1 2. - 1 - <_> - - <_> - 6 2 1 6 -1. - <_> - 6 2 1 3 2. - 1 - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 8 0 2 3 -1. - <_> - 8 1 2 1 3. - <_> - - <_> - 0 1 16 1 -1. - <_> - 4 1 8 1 2. - <_> - - <_> - 8 0 2 1 -1. - <_> - 8 0 1 1 2. - <_> - - <_> - 6 1 4 3 -1. - <_> - 6 2 4 1 3. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - <_> - - <_> - 0 0 12 1 -1. - <_> - 3 0 6 1 2. - <_> - - <_> - 6 1 9 8 -1. - <_> - 6 3 9 4 2. - <_> - - <_> - 3 5 7 4 -1. - <_> - 3 7 7 2 2. - <_> - - <_> - 9 4 8 6 -1. - <_> - 13 4 4 3 2. - <_> - 9 7 4 3 2. - <_> - - <_> - 0 1 4 1 -1. - <_> - 2 1 2 1 2. - <_> - - <_> - 14 0 4 1 -1. - <_> - 15 1 2 1 2. - 1 - <_> - - <_> - 4 1 9 3 -1. - <_> - 4 2 9 1 3. - <_> - - <_> - 14 0 4 1 -1. - <_> - 15 1 2 1 2. - 1 - <_> - - <_> - 4 0 1 4 -1. - <_> - 3 1 1 2 2. - 1 - <_> - - <_> - 12 0 4 2 -1. - <_> - 13 0 2 2 2. - <_> - - <_> - 0 0 18 2 -1. - <_> - 0 0 9 1 2. - <_> - 9 1 9 1 2. - <_> - - <_> - 7 3 10 6 -1. - <_> - 12 3 5 3 2. - <_> - 7 6 5 3 2. - <_> - - <_> - 2 0 4 3 -1. - <_> - 3 0 2 3 2. - <_> - - <_> - 12 2 2 1 -1. - <_> - 12 2 1 1 2. - <_> - - <_> - 4 2 2 1 -1. - <_> - 5 2 1 1 2. - <_> - - <_> - 16 0 2 3 -1. - <_> - 15 1 2 1 3. - 1 - <_> - - <_> - 2 0 3 2 -1. - <_> - 3 1 1 2 3. - 1 - <_> - - <_> - 9 3 3 3 -1. - <_> - 10 4 1 3 3. - 1 - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 9 4 8 6 -1. - <_> - 13 4 4 3 2. - <_> - 9 7 4 3 2. - <_> - - <_> - 1 4 8 6 -1. - <_> - 1 4 4 3 2. - <_> - 5 7 4 3 2. - <_> - - <_> - 10 5 4 3 -1. - <_> - 9 6 4 1 3. - 1 - <_> - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - <_> - - <_> - 8 8 2 2 -1. - <_> - 9 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 5 6 3 2 -1. - <_> - 6 6 1 2 3. - <_> - - <_> - 16 10 1 2 -1. - <_> - 16 11 1 1 2. - <_> - - <_> - 1 10 1 2 -1. - <_> - 1 11 1 1 2. - <_> - - <_> - 15 10 2 2 -1. - <_> - 16 10 1 1 2. - <_> - 15 11 1 1 2. - <_> - - <_> - 1 10 2 2 -1. - <_> - 1 10 1 1 2. - <_> - 2 11 1 1 2. - <_> - - <_> - 5 4 11 8 -1. - <_> - 5 8 11 4 2. - <_> - - <_> - 7 10 2 1 -1. - <_> - 8 10 1 1 2. - <_> - - <_> - 9 10 2 1 -1. - <_> - 9 10 1 1 2. - <_> - - <_> - 7 10 2 1 -1. - <_> - 8 10 1 1 2. - <_> - - <_> - 6 9 6 2 -1. - <_> - 6 9 3 2 2. - <_> - - <_> - 6 2 4 2 -1. - <_> - 8 2 2 2 2. - <_> - - <_> - 9 2 2 4 -1. - <_> - 9 2 2 2 2. - 1 - <_> - - <_> - 7 3 1 2 -1. - <_> - 7 3 1 1 2. - 1 - <_> - - <_> - 16 1 2 4 -1. - <_> - 15 2 2 2 2. - 1 - <_> - - <_> - 2 1 4 2 -1. - <_> - 3 2 2 2 2. - 1 - <_> - - <_> - 16 6 2 3 -1. - <_> - 16 7 2 1 3. - <_> - - <_> - 0 4 1 4 -1. - <_> - 0 5 1 2 2. - <_> - - <_> - 10 6 3 3 -1. - <_> - 9 7 3 1 3. - 1 - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 7 3 6 6 -1. - <_> - 9 5 2 2 9. - <_> - - <_> - 8 8 2 2 -1. - <_> - 9 8 1 2 2. - <_> - - <_> - 7 4 6 6 -1. - <_> - 9 4 2 6 3. - <_> - - <_> - 8 6 3 3 -1. - <_> - 9 7 1 3 3. - 1 - <_> - - <_> - 15 2 3 2 -1. - <_> - 16 3 1 2 3. - 1 - <_> - - <_> - 7 7 2 3 -1. - <_> - 7 8 2 1 3. - <_> - - <_> - 8 7 2 3 -1. - <_> - 8 8 2 1 3. - <_> - - <_> - 1 5 2 3 -1. - <_> - 1 6 2 1 3. - <_> - - <_> - 9 8 2 2 -1. - <_> - 10 8 1 1 2. - <_> - 9 9 1 1 2. - <_> - - <_> - 0 0 3 1 -1. - <_> - 1 0 1 1 3. - <_> - - <_> - 15 2 3 1 -1. - <_> - 16 3 1 1 3. - 1 - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 0 1 1 3. - <_> - - <_> - 0 11 18 1 -1. - <_> - 9 11 9 1 2. - <_> - - <_> - 8 11 10 1 -1. - <_> - 8 11 5 1 2. - <_> - - <_> - 1 0 3 1 -1. - <_> - 2 0 1 1 3. - <_> - - <_> - 14 0 4 1 -1. - <_> - 15 0 2 1 2. - <_> - - <_> - 0 0 4 1 -1. - <_> - 1 0 2 1 2. - <_> - - <_> - 6 4 12 4 -1. - <_> - 10 4 4 4 3. - <_> - - <_> - 4 3 6 2 -1. - <_> - 6 3 2 2 3. - <_> - - <_> - 10 4 2 6 -1. - <_> - 10 7 2 3 2. - <_> - - <_> - 5 3 2 1 -1. - <_> - 6 3 1 1 2. - <_> - - <_> - 7 2 4 3 -1. - <_> - 7 3 4 1 3. - <_> - - <_> - 8 3 1 2 -1. - <_> - 8 4 1 1 2. - <_> - - <_> - 10 0 4 8 -1. - <_> - 10 0 2 8 2. - 1 - <_> - - <_> - 8 0 8 4 -1. - <_> - 8 0 8 2 2. - 1 - <_> - - <_> - 9 4 4 2 -1. - <_> - 9 4 2 2 2. - <_> - - <_> - 5 4 4 2 -1. - <_> - 7 4 2 2 2. - <_> - - <_> - 12 1 3 2 -1. - <_> - 13 2 1 2 3. - 1 - <_> - - <_> - 8 3 1 6 -1. - <_> - 8 6 1 3 2. - <_> - - <_> - 12 1 3 2 -1. - <_> - 13 2 1 2 3. - 1 - <_> - - <_> - 2 2 12 4 -1. - <_> - 2 3 12 2 2. - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 0 1 3 2. - 1 - <_> - - <_> - 2 0 3 2 -1. - <_> - 2 0 3 1 2. - 1 - <_> - - <_> - 3 0 12 1 -1. - <_> - 3 0 6 1 2. - <_> - - <_> - 0 0 18 10 -1. - <_> - 9 0 9 10 2. - <_> - - <_> - 5 2 8 2 -1. - <_> - 5 2 4 2 2. - <_> - - <_> - 1 2 12 6 -1. - <_> - 1 2 6 3 2. - <_> - 7 5 6 3 2. - <_> - - <_> - 15 8 3 3 -1. - <_> - 15 9 3 1 3. - <_> - - <_> - 3 7 2 2 -1. - <_> - 3 7 1 1 2. - <_> - 4 8 1 1 2. - <_> - - <_> - 13 7 2 2 -1. - <_> - 14 7 1 1 2. - <_> - 13 8 1 1 2. - <_> - - <_> - 8 5 3 4 -1. - <_> - 9 6 1 4 3. - 1 - <_> - - <_> - 16 0 2 4 -1. - <_> - 16 1 2 2 2. - <_> - - <_> - 0 8 3 3 -1. - <_> - 0 9 3 1 3. - <_> - - <_> - 13 7 2 2 -1. - <_> - 14 7 1 1 2. - <_> - 13 8 1 1 2. - <_> - - <_> - 7 9 4 2 -1. - <_> - 8 9 2 2 2. - <_> - - <_> - 6 8 6 2 -1. - <_> - 8 8 2 2 3. - <_> - - <_> - 6 1 2 3 -1. - <_> - 5 2 2 1 3. - 1 - <_> - - <_> - 5 0 8 6 -1. - <_> - 5 2 8 2 3. - <_> - - <_> - 5 2 2 2 -1. - <_> - 6 2 1 2 2. - <_> - - <_> - 9 2 2 2 -1. - <_> - 10 2 1 1 2. - <_> - 9 3 1 1 2. - <_> - - <_> - 2 4 12 4 -1. - <_> - 6 4 4 4 3. - <_> - - <_> - 9 2 2 2 -1. - <_> - 10 2 1 1 2. - <_> - 9 3 1 1 2. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 1 2. - <_> - 8 3 1 1 2. - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 6 7 2 3 -1. - <_> - 5 8 2 1 3. - 1 - <_> - - <_> - 13 10 2 2 -1. - <_> - 14 10 1 1 2. - <_> - 13 11 1 1 2. - <_> - - <_> - 3 10 2 2 -1. - <_> - 3 10 1 1 2. - <_> - 4 11 1 1 2. - <_> - - <_> - 8 11 10 1 -1. - <_> - 8 11 5 1 2. - <_> - - <_> - 4 7 2 3 -1. - <_> - 3 8 2 1 3. - 1 - <_> - - <_> - 4 6 10 6 -1. - <_> - 4 9 10 3 2. - <_> - - <_> - 4 11 4 1 -1. - <_> - 5 11 2 1 2. - <_> - - <_> - 12 10 2 2 -1. - <_> - 13 10 1 1 2. - <_> - 12 11 1 1 2. - <_> - - <_> - 4 10 2 2 -1. - <_> - 4 10 1 1 2. - <_> - 5 11 1 1 2. - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 7 8 1 4 -1. - <_> - 7 9 1 2 2. - <_> - - <_> - 11 7 2 2 -1. - <_> - 11 7 1 2 2. - 1 - <_> - - <_> - 7 7 2 2 -1. - <_> - 7 7 2 1 2. - 1 - <_> - - <_> - 10 7 1 3 -1. - <_> - 9 8 1 1 3. - 1 - <_> - - <_> - 2 11 14 1 -1. - <_> - 9 11 7 1 2. - <_> - - <_> - 8 10 10 2 -1. - <_> - 8 10 5 2 2. - <_> - - <_> - 0 10 10 2 -1. - <_> - 5 10 5 2 2. - <_> - - <_> - 8 11 10 1 -1. - <_> - 8 11 5 1 2. - <_> - - <_> - 0 11 10 1 -1. - <_> - 5 11 5 1 2. - <_> - - <_> - 16 9 2 2 -1. - <_> - 17 9 1 1 2. - <_> - 16 10 1 1 2. - <_> - - <_> - 3 4 1 2 -1. - <_> - 3 4 1 1 2. - 1 - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 9 10 4 1 -1. - <_> - 10 10 2 1 2. - <_> - - <_> - 0 9 4 2 -1. - <_> - 0 10 4 1 2. - <_> - - <_> - 2 11 16 1 -1. - <_> - 6 11 8 1 2. - <_> - - <_> - 0 8 18 1 -1. - <_> - 9 8 9 1 2. - <_> - - <_> - 9 9 2 2 -1. - <_> - 10 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 7 8 4 3 -1. - <_> - 7 9 4 1 3. - <_> - - <_> - 8 6 3 3 -1. - <_> - 9 7 1 1 9. - <_> - - <_> - 8 7 2 4 -1. - <_> - 8 7 1 2 2. - <_> - 9 9 1 2 2. - <_> - - <_> - 15 4 2 3 -1. - <_> - 14 5 2 1 3. - 1 - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 16 0 2 4 -1. - <_> - 16 1 2 2 2. - <_> - - <_> - 0 0 2 4 -1. - <_> - 0 1 2 2 2. - <_> - - <_> - 15 4 2 3 -1. - <_> - 14 5 2 1 3. - 1 - <_> - - <_> - 3 4 3 2 -1. - <_> - 4 5 1 2 3. - 1 - diff --git a/data/haarcascades/haarcascade_mcs_lefteye_alt.xml b/data/haarcascades/haarcascade_mcs_lefteye_alt.xml deleted file mode 100644 index 085875218b..0000000000 --- a/data/haarcascades/haarcascade_mcs_lefteye_alt.xml +++ /dev/null @@ -1,24071 +0,0 @@ - - - - - - 18 12 - - <_> - - - <_> - - <_> - - - - <_> - 3 0 12 12 -1. - <_> - 7 4 4 4 9. - 0 - -5.4611408710479736e-001 - 8.2068818807601929e-001 - -7.5621801614761353e-001 - <_> - - <_> - - - - <_> - 0 4 18 8 -1. - <_> - 0 8 18 4 2. - 0 - 1.9197000563144684e-001 - -7.4652588367462158e-001 - 5.0908601284027100e-001 - <_> - - <_> - - - - <_> - 1 6 2 1 -1. - <_> - 2 6 1 1 2. - 0 - -1.0090269643114880e-004 - 4.2689380049705505e-001 - -5.5786168575286865e-001 - <_> - - <_> - - - - <_> - 9 1 3 6 -1. - <_> - 7 3 3 2 3. - 1 - -9.2340409755706787e-002 - 4.4454950094223022e-001 - -1.2654660642147064e-001 - <_> - - <_> - - - - <_> - 9 2 6 2 -1. - <_> - 11 4 2 2 3. - 1 - -7.1513116359710693e-002 - 6.0273522138595581e-001 - -2.4365329742431641e-001 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - 0 - 5.8654979511629790e-005 - -5.7338011264801025e-001 - 2.3801539838314056e-001 - <_> - - <_> - - - - <_> - 1 8 4 2 -1. - <_> - 1 9 4 1 2. - 0 - 4.3697938963305205e-005 - -4.0486478805541992e-001 - 2.1698260307312012e-001 - <_> - - <_> - - - - <_> - 15 6 2 1 -1. - <_> - 15 6 1 1 2. - 0 - -1.0192039917455986e-004 - 1.9003869593143463e-001 - -2.0315149426460266e-001 - <_> - - <_> - - - - <_> - 1 6 2 1 -1. - <_> - 2 6 1 1 2. - 0 - 1.0126679990207776e-004 - -2.1862569451332092e-001 - 4.6297249197959900e-001 - -1.9446439743041992e+000 - -1 - -1 - <_> - - - <_> - - <_> - - - - <_> - 3 0 12 12 -1. - <_> - 7 4 4 4 9. - 0 - -7.0576202869415283e-001 - 8.1088548898696899e-001 - -6.3504821062088013e-001 - <_> - - <_> - - - - <_> - 1 4 17 8 -1. - <_> - 1 8 17 4 2. - 0 - 2.8249558806419373e-001 - -6.3604378700256348e-001 - 5.8339637517929077e-001 - <_> - - <_> - - - - <_> - 3 2 10 9 -1. - <_> - 3 5 10 3 3. - 0 - 4.9681571125984192e-001 - -2.7583679184317589e-002 - -2.0745629882812500e+003 - <_> - - <_> - - - - <_> - 9 1 2 6 -1. - <_> - 7 3 2 2 3. - 1 - -5.2082080394029617e-002 - 2.6939961314201355e-001 - -5.1909279078245163e-002 - <_> - - <_> - - - - <_> - 0 2 12 10 -1. - <_> - 0 7 12 5 2. - 0 - 8.6202162504196167e-001 - 1.9688610918819904e-003 - -2.0273730468750000e+003 - <_> - - <_> - - - - <_> - 14 5 4 4 -1. - <_> - 14 5 2 4 2. - 0 - -6.9935750216245651e-003 - 1.8710659444332123e-001 - -1.7539620399475098e-001 - <_> - - <_> - - - - <_> - 1 5 6 4 -1. - <_> - 3 5 2 4 3. - 0 - -1.8909620121121407e-002 - 3.9160171151161194e-001 - -3.6989161372184753e-001 - <_> - - <_> - - - - <_> - 9 1 2 6 -1. - <_> - 7 3 2 2 3. - 1 - -2.5043029338121414e-002 - 5.7452820241451263e-002 - -5.9267260134220123e-002 - <_> - - <_> - - - - <_> - 9 1 6 2 -1. - <_> - 11 3 2 2 3. - 1 - -5.7229399681091309e-002 - 4.6264800429344177e-001 - -2.2969110310077667e-001 - <_> - - <_> - - - - <_> - 12 9 5 2 -1. - <_> - 12 10 5 1 2. - 0 - 4.6097549784462899e-005 - -3.5773921012878418e-001 - 1.4059029519557953e-001 - <_> - - <_> - - - - <_> - 1 9 5 2 -1. - <_> - 1 10 5 1 2. - 0 - 5.8821111451834440e-005 - -4.8682320117950439e-001 - 2.3461140692234039e-001 - <_> - - <_> - - - - <_> - 6 1 6 6 -1. - <_> - 6 3 6 2 3. - 0 - 8.3586022257804871e-002 - -1.5363390743732452e-001 - 7.1024411916732788e-001 - <_> - - <_> - - - - <_> - 7 11 4 1 -1. - <_> - 8 11 2 1 2. - 0 - -4.7323051840066910e-003 - -8.1375300884246826e-001 - 1.5069650113582611e-001 - <_> - - <_> - - - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - 0 - 5.7054250501096249e-003 - 1.2084300071001053e-001 - -7.2984558343887329e-001 - <_> - - <_> - - - - <_> - 6 11 4 1 -1. - <_> - 7 11 2 1 2. - 0 - 4.2972271330654621e-003 - 7.5880967080593109e-002 - -8.0118077993392944e-001 - -1.7692639827728271e+000 - 0 - -1 - <_> - - - <_> - - <_> - - - - <_> - 8 4 2 8 -1. - <_> - 8 8 2 4 2. - 0 - 6.2623426318168640e-002 - -6.7264968156814575e-001 - 6.5457260608673096e-001 - <_> - - <_> - - - - <_> - 0 1 18 9 -1. - <_> - 6 4 6 3 9. - 0 - -7.4647617340087891e-001 - 5.7469171285629272e-001 - -4.3637180328369141e-001 - <_> - - <_> - - - - <_> - 0 5 4 4 -1. - <_> - 2 5 2 4 2. - 0 - -1.7294099554419518e-002 - 4.6898889541625977e-001 - -3.9281249046325684e-001 - <_> - - <_> - - - - <_> - 1 8 17 4 -1. - <_> - 1 10 17 2 2. - 0 - 2.1398400887846947e-002 - -5.9292298555374146e-001 - 1.9770659506320953e-001 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -3.5737060010433197e-002 - 5.5622661113739014e-001 - -2.0223970711231232e-001 - <_> - - <_> - - - - <_> - 7 11 4 1 -1. - <_> - 8 11 2 1 2. - 0 - 3.2078200019896030e-003 - 7.4256651103496552e-002 - -7.2774058580398560e-001 - <_> - - <_> - - - - <_> - 0 7 1 4 -1. - <_> - 0 9 1 2 2. - 0 - -3.8174460642039776e-003 - -6.7518317699432373e-001 - 1.1311540007591248e-001 - <_> - - <_> - - - - <_> - 9 11 4 1 -1. - <_> - 10 11 2 1 2. - 0 - 3.7939909379929304e-003 - 8.9654907584190369e-002 - -7.3344737291336060e-001 - <_> - - <_> - - - - <_> - 7 5 4 3 -1. - <_> - 9 5 2 3 2. - 0 - -1.8273390829563141e-002 - 4.4436338543891907e-001 - -1.8418380618095398e-001 - <_> - - <_> - - - - <_> - 9 11 4 1 -1. - <_> - 10 11 2 1 2. - 0 - -5.3060338832437992e-003 - -7.0876628160476685e-001 - 7.8580521047115326e-002 - <_> - - <_> - - - - <_> - 0 9 3 3 -1. - <_> - 0 10 3 1 3. - 0 - 1.1829390190541744e-002 - 8.9572936296463013e-002 - -7.3483431339263916e-001 - <_> - - <_> - - - - <_> - 9 10 4 2 -1. - <_> - 10 10 2 2 2. - 0 - 4.8425127752125263e-003 - 4.7504398971796036e-002 - -3.6813148856163025e-001 - <_> - - <_> - - - - <_> - 5 10 4 2 -1. - <_> - 6 10 2 2 2. - 0 - 5.3384378552436829e-003 - 1.0396180301904678e-001 - -6.1680471897125244e-001 - <_> - - <_> - - - - <_> - 9 0 3 7 -1. - <_> - 10 1 1 7 3. - 1 - -2.8934059664607048e-002 - 2.3010690510272980e-001 - -9.5079377293586731e-002 - <_> - - <_> - - - - <_> - 9 0 7 3 -1. - <_> - 8 1 7 1 3. - 1 - 2.0601950585842133e-002 - -1.4737619459629059e-001 - 3.8007509708404541e-001 - <_> - - <_> - - - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - 0 - -1.0493800044059753e-002 - -6.4840590953826904e-001 - 9.1139681637287140e-002 - <_> - - <_> - - - - <_> - 8 4 2 8 -1. - <_> - 8 8 2 4 2. - 0 - 6.2527976930141449e-002 - 1.6974839568138123e-001 - -2.9701429605484009e-001 - <_> - - <_> - - - - <_> - 9 2 3 6 -1. - <_> - 7 4 3 2 3. - 1 - -9.4582162797451019e-002 - 1.9255830347537994e-001 - -2.5837939232587814e-002 - -1.7514940500259399e+000 - 1 - -1 - <_> - - - <_> - - <_> - - - - <_> - 6 0 9 2 -1. - <_> - 9 3 3 2 3. - 1 - -1.5237879753112793e-001 - 7.1485751867294312e-001 - -5.8257007598876953e-001 - <_> - - <_> - - - - <_> - 6 4 11 8 -1. - <_> - 6 8 11 4 2. - 0 - 1.9623799622058868e-001 - -5.0717341899871826e-001 - 3.0529379844665527e-001 - <_> - - <_> - - - - <_> - 4 5 2 4 -1. - <_> - 4 5 2 2 2. - 1 - -3.5102769732475281e-002 - 3.8133320212364197e-001 - -4.4005489349365234e-001 - <_> - - <_> - - - - <_> - 12 2 6 2 -1. - <_> - 14 4 2 2 3. - 1 - 8.6640313267707825e-002 - -3.1253110617399216e-002 - 4.1132459044456482e-001 - <_> - - <_> - - - - <_> - 0 2 18 4 -1. - <_> - 0 4 18 2 2. - 0 - 3.6519891023635864e-001 - -1.7459569498896599e-003 - -2.0211540527343750e+003 - <_> - - <_> - - - - <_> - 7 6 6 2 -1. - <_> - 7 6 3 2 2. - 0 - -5.2979141473770142e-002 - 5.6572532653808594e-001 - -9.0168356895446777e-002 - <_> - - <_> - - - - <_> - 5 6 6 2 -1. - <_> - 8 6 3 2 2. - 0 - -1.3122299686074257e-002 - 2.8803709149360657e-001 - -3.0250340700149536e-001 - <_> - - <_> - - - - <_> - 1 10 16 2 -1. - <_> - 1 11 16 1 2. - 0 - 1.3766849588137120e-004 - -5.2591192722320557e-001 - 1.6913980245590210e-001 - <_> - - <_> - - - - <_> - 1 5 2 6 -1. - <_> - 2 5 1 6 2. - 0 - 1.3008220493793488e-001 - -4.6197711490094662e-003 - -1.0582030029296875e+003 - <_> - - <_> - - - - <_> - 14 9 4 3 -1. - <_> - 14 10 4 1 3. - 0 - -1.5327390283346176e-002 - -6.9445407390594482e-001 - 7.1856021881103516e-002 - <_> - - <_> - - - - <_> - 0 9 4 3 -1. - <_> - 0 10 4 1 3. - 0 - -9.6624903380870819e-003 - -6.1284822225570679e-001 - 9.1272346675395966e-002 - <_> - - <_> - - - - <_> - 5 0 10 6 -1. - <_> - 5 2 10 2 3. - 0 - 8.8566377758979797e-002 - -1.5997810661792755e-001 - 3.6896151304244995e-001 - <_> - - <_> - - - - <_> - 0 10 3 2 -1. - <_> - 0 11 3 1 2. - 0 - -3.7188939750194550e-003 - -6.3978141546249390e-001 - 9.2079572379589081e-002 - <_> - - <_> - - - - <_> - 4 0 11 8 -1. - <_> - 4 2 11 4 2. - 0 - -1.4510180056095123e-001 - 4.1528600454330444e-001 - -1.4322389662265778e-001 - <_> - - <_> - - - - <_> - 9 3 4 2 -1. - <_> - 9 3 2 2 2. - 1 - 1.7310230061411858e-002 - -1.5397289395332336e-001 - 4.0401691198348999e-001 - <_> - - <_> - - - - <_> - 13 8 5 2 -1. - <_> - 13 9 5 1 2. - 0 - 2.3151350615080446e-004 - -2.0172169804573059e-001 - 1.2100940197706223e-001 - <_> - - <_> - - - - <_> - 0 8 5 2 -1. - <_> - 0 9 5 1 2. - 0 - 4.4627388706430793e-004 - -3.9083960652351379e-001 - 1.2552070617675781e-001 - <_> - - <_> - - - - <_> - 12 5 4 3 -1. - <_> - 12 5 2 3 2. - 0 - 1.3271129690110683e-002 - -1.0739839822053909e-001 - 2.6234090328216553e-001 - <_> - - <_> - - - - <_> - 1 0 16 9 -1. - <_> - 5 0 8 9 2. - 0 - -1.1344719678163528e-001 - 2.6222631335258484e-001 - -2.0850320160388947e-001 - <_> - - <_> - - - - <_> - 8 11 6 1 -1. - <_> - 10 11 2 1 3. - 0 - 8.8979126885533333e-003 - 4.9091130495071411e-002 - -5.0896888971328735e-001 - <_> - - <_> - - - - <_> - 4 10 6 2 -1. - <_> - 6 10 2 2 3. - 0 - -2.4719990789890289e-002 - -7.5905930995941162e-001 - 4.9361631274223328e-002 - <_> - - <_> - - - - <_> - 12 4 3 3 -1. - <_> - 13 5 1 3 3. - 1 - -3.3265918493270874e-002 - 3.4829610586166382e-001 - -5.9630129486322403e-002 - <_> - - <_> - - - - <_> - 6 1 6 2 -1. - <_> - 8 1 2 2 3. - 0 - -2.2988099604845047e-002 - -6.5046131610870361e-001 - 6.4039543271064758e-002 - <_> - - <_> - - - - <_> - 13 0 4 4 -1. - <_> - 12 1 4 2 2. - 1 - -3.1392410397529602e-002 - 2.1976619958877563e-001 - -6.0772381722927094e-002 - <_> - - <_> - - - - <_> - 5 0 4 4 -1. - <_> - 6 1 2 4 2. - 1 - -4.7737959772348404e-002 - 5.1002371311187744e-001 - -7.2028681635856628e-002 - <_> - - <_> - - - - <_> - 10 5 6 3 -1. - <_> - 12 5 2 3 3. - 0 - 3.2071519643068314e-002 - -7.6109372079372406e-002 - 2.5640499591827393e-001 - <_> - - <_> - - - - <_> - 1 0 15 6 -1. - <_> - 6 2 5 2 9. - 0 - 4.4289338588714600e-001 - -6.8526968359947205e-002 - 5.6304061412811279e-001 - <_> - - <_> - - - - <_> - 10 5 6 3 -1. - <_> - 12 5 2 3 3. - 0 - -1.1486619710922241e-002 - 1.5239420533180237e-001 - -4.0200568735599518e-002 - <_> - - <_> - - - - <_> - 2 5 6 3 -1. - <_> - 4 5 2 3 3. - 0 - -1.9018840044736862e-002 - 3.1413850188255310e-001 - -1.2248709797859192e-001 - <_> - - <_> - - - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - 0 - -6.8585639819502831e-003 - -6.6252797842025757e-001 - 5.7304140180349350e-002 - <_> - - <_> - - - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - 0 - 9.8197776824235916e-003 - 4.3627310544252396e-002 - -6.7724108695983887e-001 - <_> - - <_> - - - - <_> - 2 0 14 4 -1. - <_> - 2 1 14 2 2. - 0 - -7.0927143096923828e-002 - 5.4129147529602051e-001 - -7.2669401764869690e-002 - <_> - - <_> - - - - <_> - 5 0 7 4 -1. - <_> - 5 1 7 2 2. - 0 - 2.3212930187582970e-002 - -1.1495050042867661e-001 - 2.9792940616607666e-001 - <_> - - <_> - - - - <_> - 9 0 4 1 -1. - <_> - 10 0 2 1 2. - 0 - -6.4186761155724525e-003 - -4.9147358536720276e-001 - 3.9359170943498611e-002 - <_> - - <_> - - - - <_> - 1 8 3 3 -1. - <_> - 1 9 3 1 3. - 0 - 1.4896850101649761e-002 - 4.8360548913478851e-002 - -5.7956790924072266e-001 - <_> - - <_> - - - - <_> - 10 7 7 2 -1. - <_> - 10 8 7 1 2. - 0 - 3.0226260423660278e-003 - -1.1061940342187881e-001 - 5.2919808775186539e-002 - <_> - - <_> - - - - <_> - 5 0 4 2 -1. - <_> - 6 0 2 2 2. - 0 - -6.6905869171023369e-003 - -4.3806540966033936e-001 - 6.6940046846866608e-002 - <_> - - <_> - - - - <_> - 10 5 3 2 -1. - <_> - 11 5 1 2 3. - 0 - 7.2806091047823429e-003 - -6.5536737442016602e-002 - 2.7438428997993469e-001 - -1.9025980234146118e+000 - 2 - -1 - <_> - - - <_> - - <_> - - - - <_> - 9 1 6 3 -1. - <_> - 11 3 2 3 3. - 1 - -1.0395430028438568e-001 - 6.2448638677597046e-001 - -5.9380972385406494e-001 - <_> - - <_> - - - - <_> - 14 5 4 3 -1. - <_> - 14 5 2 3 2. - 0 - -9.0995300561189651e-003 - 2.8107839822769165e-001 - -2.3319789767265320e-001 - <_> - - <_> - - - - <_> - 0 0 15 12 -1. - <_> - 0 4 15 4 3. - 0 - 1.1043469905853271e+000 - 1.3428430538624525e-003 - -1.8338730468750000e+003 - <_> - - <_> - - - - <_> - 7 4 10 8 -1. - <_> - 7 8 10 4 2. - 0 - 1.5152810513973236e-001 - -5.4776471853256226e-001 - 1.7032749950885773e-001 - <_> - - <_> - - - - <_> - 0 5 4 3 -1. - <_> - 2 5 2 3 2. - 0 - -1.8869370222091675e-002 - 5.1096087694168091e-001 - -3.8751450181007385e-001 - <_> - - <_> - - - - <_> - 9 2 4 6 -1. - <_> - 10 3 2 6 2. - 1 - -2.5966409593820572e-002 - 5.9833060950040817e-002 - -8.0629907548427582e-002 - <_> - - <_> - - - - <_> - 9 2 6 4 -1. - <_> - 8 3 6 2 2. - 1 - -3.3599171787500381e-002 - 4.0842789411544800e-001 - -3.2333779335021973e-001 - <_> - - <_> - - - - <_> - 7 2 6 4 -1. - <_> - 7 3 6 2 2. - 0 - -3.8244638592004776e-002 - 4.9302589893341064e-001 - -1.6094090044498444e-001 - <_> - - <_> - - - - <_> - 0 6 6 6 -1. - <_> - 0 9 6 3 2. - 0 - 2.1556170657277107e-002 - -5.7558798789978027e-001 - 1.5593230724334717e-001 - <_> - - <_> - - - - <_> - 0 0 18 3 -1. - <_> - 6 0 6 3 3. - 0 - -5.5178638547658920e-002 - 3.1259340047836304e-001 - -2.3921109735965729e-001 - <_> - - <_> - - - - <_> - 6 6 2 2 -1. - <_> - 6 6 1 1 2. - <_> - 7 7 1 1 2. - 0 - -3.8735559210181236e-003 - 5.4549610614776611e-001 - -1.0063389688730240e-001 - <_> - - <_> - - - - <_> - 9 11 6 1 -1. - <_> - 11 11 2 1 3. - 0 - -1.4108420349657536e-002 - -7.3762410879135132e-001 - 5.7357121258974075e-002 - <_> - - <_> - - - - <_> - 0 6 2 4 -1. - <_> - 0 8 2 2 2. - 0 - -6.0528269968926907e-003 - -5.5406332015991211e-001 - 7.6832607388496399e-002 - <_> - - <_> - - - - <_> - 8 10 6 2 -1. - <_> - 10 10 2 2 3. - 0 - 1.8572619184851646e-002 - 3.2866738736629486e-002 - -6.4792937040328979e-001 - <_> - - <_> - - - - <_> - 4 10 6 2 -1. - <_> - 6 10 2 2 3. - 0 - 1.2845859862864017e-002 - 7.3656037449836731e-002 - -5.7360821962356567e-001 - <_> - - <_> - - - - <_> - 11 5 4 3 -1. - <_> - 12 5 2 3 2. - 0 - 1.0417309589684010e-002 - -1.0239619761705399e-001 - 2.5212439894676208e-001 - <_> - - <_> - - - - <_> - 0 10 5 2 -1. - <_> - 0 11 5 1 2. - 0 - -5.2642878144979477e-003 - -5.9819197654724121e-001 - 6.9865286350250244e-002 - <_> - - <_> - - - - <_> - 2 10 16 2 -1. - <_> - 10 10 8 1 2. - <_> - 2 11 8 1 2. - 0 - 2.7880489826202393e-002 - 4.3994851410388947e-002 - -5.0984817743301392e-001 - <_> - - <_> - - - - <_> - 4 2 9 3 -1. - <_> - 4 3 9 1 3. - 0 - 2.3825490847229958e-002 - -1.2183369696140289e-001 - 3.1688851118087769e-001 - <_> - - <_> - - - - <_> - 6 1 8 4 -1. - <_> - 6 2 8 2 2. - 0 - -2.0250659435987473e-002 - 3.3406090736389160e-001 - -1.0055329650640488e-001 - <_> - - <_> - - - - <_> - 3 0 9 4 -1. - <_> - 3 1 9 2 2. - 0 - 3.2774340361356735e-002 - -1.2221919745206833e-001 - 3.1050428748130798e-001 - <_> - - <_> - - - - <_> - 9 9 2 1 -1. - <_> - 9 9 1 1 2. - 1 - -1.1297949822619557e-004 - 1.0250750184059143e-001 - -2.0995940268039703e-001 - <_> - - <_> - - - - <_> - 2 4 12 5 -1. - <_> - 8 4 6 5 2. - 0 - -9.5565170049667358e-002 - 3.0095851421356201e-001 - -1.3452769815921783e-001 - <_> - - <_> - - - - <_> - 10 0 4 2 -1. - <_> - 11 0 2 2 2. - 0 - 6.3593629747629166e-003 - 6.4052909612655640e-002 - -4.9904870986938477e-001 - <_> - - <_> - - - - <_> - 3 5 4 3 -1. - <_> - 4 5 2 3 2. - 0 - -7.0063141174614429e-003 - 3.0243200063705444e-001 - -1.1930730193853378e-001 - <_> - - <_> - - - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - 0 - 1.7500750720500946e-002 - -5.7251829653978348e-002 - 4.4421580433845520e-001 - <_> - - <_> - - - - <_> - 6 10 4 2 -1. - <_> - 7 10 2 2 2. - 0 - -7.2048557922244072e-003 - -6.1189258098602295e-001 - 6.4432121813297272e-002 - <_> - - <_> - - - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - 0 - -5.6282947771251202e-003 - 2.4128329753875732e-001 - -8.9441202580928802e-002 - <_> - - <_> - - - - <_> - 4 11 4 1 -1. - <_> - 5 11 2 1 2. - 0 - -4.9876999109983444e-003 - -6.7359071969985962e-001 - 5.8322191238403320e-002 - <_> - - <_> - - - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - 0 - 2.3166439495980740e-003 - -8.9238733053207397e-002 - 1.2162160128355026e-001 - <_> - - <_> - - - - <_> - 5 5 3 3 -1. - <_> - 6 5 1 3 3. - 0 - -6.7102159373462200e-003 - 3.7631779909133911e-001 - -9.5407336950302124e-002 - <_> - - <_> - - - - <_> - 11 0 4 2 -1. - <_> - 12 0 2 2 2. - 0 - 5.0830701366066933e-003 - 7.4287436902523041e-002 - -3.9065170288085938e-001 - <_> - - <_> - - - - <_> - 4 0 8 9 -1. - <_> - 4 3 8 3 3. - 0 - 1.8377199769020081e-001 - -6.3876979053020477e-002 - 5.6611680984497070e-001 - <_> - - <_> - - - - <_> - 0 0 18 6 -1. - <_> - 0 3 18 3 2. - 0 - -6.0653341934084892e-003 - 1.4651310443878174e-001 - -2.5797340273857117e-001 - <_> - - <_> - - - - <_> - 3 0 6 2 -1. - <_> - 5 0 2 2 3. - 0 - -2.0235970616340637e-002 - -5.4194480180740356e-001 - 5.7601358741521835e-002 - <_> - - <_> - - - - <_> - 14 7 4 3 -1. - <_> - 14 8 4 1 3. - 0 - -2.6110339909791946e-002 - -6.0285919904708862e-001 - 1.7485620453953743e-002 - <_> - - <_> - - - - <_> - 9 1 6 3 -1. - <_> - 11 3 2 3 3. - 1 - -1.0403200238943100e-001 - -2.4455690383911133e-001 - 1.2605750560760498e-001 - <_> - - <_> - - - - <_> - 7 5 6 3 -1. - <_> - 9 6 2 1 9. - 0 - -5.3566411137580872e-002 - 2.5159069895744324e-001 - -1.0152529925107956e-001 - <_> - - <_> - - - - <_> - 6 5 4 2 -1. - <_> - 7 5 2 2 2. - 0 - -6.7835198715329170e-003 - 3.3641210198402405e-001 - -9.6368037164211273e-002 - <_> - - <_> - - - - <_> - 14 7 4 3 -1. - <_> - 14 8 4 1 3. - 0 - 3.0316449701786041e-002 - 1.7477709800004959e-002 - -6.0695719718933105e-001 - <_> - - <_> - - - - <_> - 0 7 4 3 -1. - <_> - 0 8 4 1 3. - 0 - 2.0985240116715431e-002 - 4.0398400276899338e-002 - -7.3442429304122925e-001 - <_> - - <_> - - - - <_> - 6 10 6 2 -1. - <_> - 8 10 2 2 3. - 0 - 1.9706780090928078e-002 - 3.1928699463605881e-002 - -7.5477129220962524e-001 - -1.8514059782028198e+000 - 3 - -1 - <_> - - - <_> - - <_> - - - - <_> - 2 2 9 8 -1. - <_> - 2 4 9 4 2. - 0 - -1.7423079907894135e-001 - 6.1390841007232666e-001 - -4.7894141077995300e-001 - <_> - - <_> - - - - <_> - 9 6 6 2 -1. - <_> - 11 6 2 2 3. - 0 - 3.7291038781404495e-002 - -2.7487620711326599e-001 - 6.9311857223510742e-001 - <_> - - <_> - - - - <_> - 7 2 2 2 -1. - <_> - 7 2 2 1 2. - 1 - 7.1578949689865112e-002 - 3.4122820943593979e-002 - -1.7707500000000000e+003 - <_> - - <_> - - - - <_> - 9 3 4 3 -1. - <_> - 9 3 2 3 2. - 1 - -5.8419991284608841e-002 - 9.5094732940196991e-002 - -3.5735588520765305e-002 - <_> - - <_> - - - - <_> - 9 3 3 4 -1. - <_> - 9 3 3 2 2. - 1 - -6.8234533071517944e-002 - 4.3610438704490662e-001 - -2.7024009823799133e-001 - <_> - - <_> - - - - <_> - 0 8 18 4 -1. - <_> - 0 10 18 2 2. - 0 - 4.6446189284324646e-002 - -5.3858101367950439e-001 - 1.2908129394054413e-001 - <_> - - <_> - - - - <_> - 1 4 4 6 -1. - <_> - 3 4 2 6 2. - 0 - -1.8313050270080566e-002 - 2.4637509882450104e-001 - -2.9880639910697937e-001 - <_> - - <_> - - - - <_> - 9 2 1 6 -1. - <_> - 7 4 1 2 3. - 1 - 4.5683261007070541e-002 - -1.9792109727859497e-002 - 2.9861330986022949e-001 - <_> - - <_> - - - - <_> - 9 2 6 1 -1. - <_> - 11 4 2 1 3. - 1 - -3.8607221096754074e-002 - 3.2478851079940796e-001 - -1.9968329370021820e-001 - <_> - - <_> - - - - <_> - 4 2 10 4 -1. - <_> - 4 3 10 2 2. - 0 - -5.3359329700469971e-002 - 5.1778447628021240e-001 - -1.1112260073423386e-001 - <_> - - <_> - - - - <_> - 5 3 7 3 -1. - <_> - 5 4 7 1 3. - 0 - 2.5140959769487381e-002 - -9.0483076870441437e-002 - 5.9572058916091919e-001 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 6 0 6 12 3. - 0 - -2.1597529947757721e-001 - 2.0755149424076080e-001 - -2.4115790426731110e-001 - <_> - - <_> - - - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - 0 - 2.9019270092248917e-002 - -1.0131660103797913e-001 - 4.7087991237640381e-001 - <_> - - <_> - - - - <_> - 14 2 4 10 -1. - <_> - 14 7 4 5 2. - 0 - 1.4864710159599781e-002 - -2.8045138716697693e-001 - 1.1898139864206314e-001 - <_> - - <_> - - - - <_> - 6 6 2 2 -1. - <_> - 6 6 1 1 2. - <_> - 7 7 1 1 2. - 0 - -3.2239339780062437e-003 - 4.2325741052627563e-001 - -1.0377889871597290e-001 - <_> - - <_> - - - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - 0 - -5.6671360507607460e-003 - -5.9137248992919922e-001 - 9.7125522792339325e-002 - <_> - - <_> - - - - <_> - 0 7 4 4 -1. - <_> - 0 9 4 2 2. - 0 - 1.0033809667220339e-004 - -4.6385771036148071e-001 - 7.2615653276443481e-002 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - 0 - -3.6071398854255676e-001 - -6.1538481712341309e-001 - 5.5276088416576385e-002 - <_> - - <_> - - - - <_> - 0 10 2 2 -1. - <_> - 0 11 2 1 2. - 0 - -3.1085009686648846e-003 - -5.7536369562149048e-001 - 6.0731589794158936e-002 - <_> - - <_> - - - - <_> - 7 11 6 1 -1. - <_> - 9 11 2 1 3. - 0 - 6.1288890428841114e-003 - 7.4672959744930267e-002 - -5.2534508705139160e-001 - <_> - - <_> - - - - <_> - 7 5 3 3 -1. - <_> - 8 6 1 1 9. - 0 - -2.2192759439349174e-002 - 3.2507351040840149e-001 - -1.1742109805345535e-001 - <_> - - <_> - - - - <_> - 6 0 6 3 -1. - <_> - 8 0 2 3 3. - 0 - -2.9342940077185631e-002 - -6.4161187410354614e-001 - 4.9035649746656418e-002 - <_> - - <_> - - - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - 0 - 7.7600688673555851e-003 - 6.9918327033519745e-002 - -4.5949921011924744e-001 - <_> - - <_> - - - - <_> - 6 0 7 3 -1. - <_> - 6 1 7 1 3. - 0 - 1.7340639606118202e-002 - -1.0505460202693939e-001 - 2.8804540634155273e-001 - <_> - - <_> - - - - <_> - 2 2 9 8 -1. - <_> - 2 4 9 4 2. - 0 - -1.7411990463733673e-001 - -2.7445599436759949e-001 - 1.2657789885997772e-001 - <_> - - <_> - - - - <_> - 5 0 10 6 -1. - <_> - 5 2 10 2 3. - 0 - 1.1415860056877136e-001 - -9.0350322425365448e-002 - 2.8193458914756775e-001 - <_> - - <_> - - - - <_> - 4 0 10 2 -1. - <_> - 4 1 10 1 2. - 0 - -3.4428309649229050e-002 - 4.5843648910522461e-001 - -7.3989093303680420e-002 - <_> - - <_> - - - - <_> - 12 10 6 2 -1. - <_> - 15 10 3 1 2. - <_> - 12 11 3 1 2. - 0 - 9.6141622634604573e-005 - -1.2745319306850433e-001 - 1.1268970370292664e-001 - <_> - - <_> - - - - <_> - 4 5 3 3 -1. - <_> - 5 5 1 3 3. - 0 - -4.9724201671779156e-003 - 2.7802708745002747e-001 - -1.0591570287942886e-001 - <_> - - <_> - - - - <_> - 13 4 3 2 -1. - <_> - 13 4 3 1 2. - 1 - -6.3664510846138000e-002 - 5.5961591005325317e-001 - -2.6394790038466454e-003 - <_> - - <_> - - - - <_> - 5 4 2 3 -1. - <_> - 5 4 1 3 2. - 1 - -2.6674149557948112e-002 - 4.9559178948402405e-001 - -6.9073468446731567e-002 - <_> - - <_> - - - - <_> - 12 10 6 2 -1. - <_> - 15 10 3 1 2. - <_> - 12 11 3 1 2. - 0 - 1.4223149977624416e-002 - 3.5259280353784561e-002 - -4.1093349456787109e-001 - <_> - - <_> - - - - <_> - 0 10 6 2 -1. - <_> - 0 10 3 1 2. - <_> - 3 11 3 1 2. - 0 - 3.2638079574098811e-005 - -1.8650929629802704e-001 - 1.4809480309486389e-001 - <_> - - <_> - - - - <_> - 1 10 16 2 -1. - <_> - 9 10 8 1 2. - <_> - 1 11 8 1 2. - 0 - 2.3983500897884369e-002 - 4.9719810485839844e-002 - -5.1264011859893799e-001 - <_> - - <_> - - - - <_> - 7 0 9 2 -1. - <_> - 10 3 3 2 3. - 1 - -5.0319589674472809e-002 - 8.3218432962894440e-002 - -2.9233419895172119e-001 - <_> - - <_> - - - - <_> - 8 0 4 2 -1. - <_> - 9 0 2 2 2. - 0 - -1.1278240010142326e-002 - -6.7043042182922363e-001 - 3.4270301461219788e-002 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - 0 - -3.5662490874528885e-002 - 2.2888509929180145e-001 - -1.3197310268878937e-001 - <_> - - <_> - - - - <_> - 8 0 6 2 -1. - <_> - 10 0 2 2 3. - 0 - 2.1419739350676537e-002 - 3.7937160581350327e-002 - -4.5889899134635925e-001 - <_> - - <_> - - - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - 0 - -3.4534449223428965e-003 - 3.3343398571014404e-001 - -7.5317703187465668e-002 - <_> - - <_> - - - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - 0 - 5.8356970548629761e-003 - 3.6585651338100433e-002 - -3.8631778955459595e-001 - <_> - - <_> - - - - <_> - 6 10 4 2 -1. - <_> - 7 10 2 2 2. - 0 - 5.0293467938899994e-003 - 5.2214898169040680e-002 - -5.0938832759857178e-001 - <_> - - <_> - - - - <_> - 9 5 2 3 -1. - <_> - 8 6 2 1 3. - 1 - 3.3139381557703018e-002 - -2.7443800121545792e-002 - 3.2198739051818848e-001 - <_> - - <_> - - - - <_> - 9 5 3 2 -1. - <_> - 10 6 1 2 3. - 1 - -8.7034106254577637e-003 - 1.7421320080757141e-001 - -1.4240099489688873e-001 - <_> - - <_> - - - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - 0 - -8.2512637600302696e-003 - -6.9030272960662842e-001 - 3.4187458455562592e-002 - <_> - - <_> - - - - <_> - 0 3 1 4 -1. - <_> - 0 5 1 2 2. - 0 - -1.4581499621272087e-002 - -6.0555249452590942e-001 - 3.1542379409074783e-002 - <_> - - <_> - - - - <_> - 9 3 4 3 -1. - <_> - 9 3 2 3 2. - 1 - -1.1998149752616882e-001 - 3.4346449375152588e-001 - -1.8667690455913544e-002 - <_> - - <_> - - - - <_> - 9 3 3 4 -1. - <_> - 9 3 3 2 2. - 1 - -6.8040207028388977e-002 - -2.2389249503612518e-001 - 9.7281388938426971e-002 - <_> - - <_> - - - - <_> - 10 0 3 7 -1. - <_> - 11 1 1 7 3. - 1 - -3.5576358437538147e-002 - 9.8187446594238281e-002 - -2.1791150793433189e-002 - <_> - - <_> - - - - <_> - 8 0 7 3 -1. - <_> - 7 1 7 1 3. - 1 - -3.0443429946899414e-002 - 2.4923379719257355e-001 - -9.3816317617893219e-002 - <_> - - <_> - - - - <_> - 12 5 4 4 -1. - <_> - 13 5 2 4 2. - 0 - -5.6799547746777534e-003 - 2.1073240041732788e-001 - -1.0627429932355881e-001 - <_> - - <_> - - - - <_> - 0 4 2 4 -1. - <_> - 0 5 2 2 2. - 0 - 9.0224146842956543e-003 - 4.8349138349294662e-002 - -4.5440268516540527e-001 - <_> - - <_> - - - - <_> - 0 4 18 8 -1. - <_> - 9 4 9 4 2. - <_> - 0 8 9 4 2. - 0 - 2.6591160893440247e-001 - 2.9608080163598061e-002 - -6.3526999950408936e-001 - <_> - - <_> - - - - <_> - 2 4 4 5 -1. - <_> - 3 4 2 5 2. - 0 - -3.5959859378635883e-003 - 1.3883949816226959e-001 - -1.4947269856929779e-001 - -1.7941249608993530e+000 - 4 - -1 - <_> - - - <_> - - <_> - - - - <_> - 6 0 9 2 -1. - <_> - 9 3 3 2 3. - 1 - -1.8246339261531830e-001 - 6.5487307310104370e-001 - -4.6831071376800537e-001 - <_> - - <_> - - - - <_> - 2 4 15 3 -1. - <_> - 7 4 5 3 3. - 0 - -6.9158546626567841e-002 - 2.5979688763618469e-001 - -3.5439720749855042e-001 - <_> - - <_> - - - - <_> - 4 2 4 4 -1. - <_> - 5 3 2 4 2. - 1 - -5.1030728965997696e-002 - 6.5509510040283203e-001 - -2.4366210401058197e-001 - <_> - - <_> - - - - <_> - 14 6 4 6 -1. - <_> - 16 6 2 3 2. - <_> - 14 9 2 3 2. - 0 - 6.6160508431494236e-003 - -1.4317570626735687e-001 - 1.9473850727081299e-001 - <_> - - <_> - - - - <_> - 0 6 4 6 -1. - <_> - 0 6 2 3 2. - <_> - 2 9 2 3 2. - 0 - 4.6910191886126995e-003 - -3.7824809551239014e-001 - 1.7687709629535675e-001 - <_> - - <_> - - - - <_> - 16 2 2 10 -1. - <_> - 16 7 2 5 2. - 0 - -2.8749920427799225e-002 - -3.2157620787620544e-001 - 1.8641479313373566e-002 - <_> - - <_> - - - - <_> - 0 2 2 10 -1. - <_> - 0 7 2 5 2. - 0 - 1.0602179827401415e-004 - -4.5742839574813843e-001 - 1.3976849615573883e-001 - <_> - - <_> - - - - <_> - 12 3 3 3 -1. - <_> - 11 4 3 1 3. - 1 - 1.1274269782006741e-002 - -9.0355128049850464e-002 - 2.1887609362602234e-001 - <_> - - <_> - - - - <_> - 6 3 3 3 -1. - <_> - 7 4 1 3 3. - 1 - -2.7582680806517601e-002 - 4.1455930471420288e-001 - -1.3666220009326935e-001 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - 0 - 2.3641479492653161e-004 - -4.6728670597076416e-001 - 1.1781200021505356e-001 - <_> - - <_> - - - - <_> - 9 2 6 3 -1. - <_> - 11 4 2 3 3. - 1 - -1.1871670186519623e-001 - 3.1791681051254272e-001 - -1.6469870507717133e-001 - <_> - - <_> - - - - <_> - 12 0 2 9 -1. - <_> - 9 3 2 3 3. - 1 - 1.9392369687557220e-001 - 5.0983601249754429e-003 - -8.0679917335510254e-001 - <_> - - <_> - - - - <_> - 6 0 9 2 -1. - <_> - 9 3 3 2 3. - 1 - -1.8230450153350830e-001 - -3.8811311125755310e-001 - 1.5172429382801056e-001 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 0 4 18 4 3. - 0 - -2.5526711344718933e-001 - 1.5723639726638794e-001 - -4.0902090072631836e-001 - <_> - - <_> - - - - <_> - 4 4 10 2 -1. - <_> - 4 5 10 1 2. - 0 - 2.4411959573626518e-002 - -1.1094090342521667e-001 - 4.6774199604988098e-001 - <_> - - <_> - - - - <_> - 8 0 2 2 -1. - <_> - 8 0 1 2 2. - 0 - 2.8254329663468525e-005 - -2.1161890029907227e-001 - 2.0330640673637390e-001 - <_> - - <_> - - - - <_> - 5 2 8 4 -1. - <_> - 5 3 8 2 2. - 0 - 2.8164679184556007e-002 - -1.1879099905490875e-001 - 3.5778549313545227e-001 - <_> - - <_> - - - - <_> - 16 8 2 4 -1. - <_> - 16 9 2 2 2. - 0 - -1.2130060233175755e-002 - -6.4840310811996460e-001 - 6.2937177717685699e-002 - <_> - - <_> - - - - <_> - 5 11 6 1 -1. - <_> - 7 11 2 1 3. - 0 - -9.7364839166402817e-003 - -6.3039177656173706e-001 - 5.1388788968324661e-002 - <_> - - <_> - - - - <_> - 0 0 18 6 -1. - <_> - 6 0 6 6 3. - 0 - -1.6935800015926361e-001 - 2.0276680588722229e-001 - -1.8470560014247894e-001 - <_> - - <_> - - - - <_> - 4 0 10 4 -1. - <_> - 4 1 10 2 2. - 0 - 3.0143039301037788e-002 - -1.2960250675678253e-001 - 2.7041170001029968e-001 - <_> - - <_> - - - - <_> - 16 8 2 4 -1. - <_> - 16 9 2 2 2. - 0 - 1.2918629683554173e-002 - 3.7680979818105698e-002 - -4.9257808923721313e-001 - <_> - - <_> - - - - <_> - 3 5 6 2 -1. - <_> - 3 5 3 1 2. - <_> - 6 6 3 1 2. - 0 - -7.4791330844163895e-003 - 3.2607930898666382e-001 - -1.0927549749612808e-001 - <_> - - <_> - - - - <_> - 8 0 3 2 -1. - <_> - 9 0 1 2 3. - 0 - -6.3150310888886452e-003 - -5.7017749547958374e-001 - 5.1293510943651199e-002 - <_> - - <_> - - - - <_> - 0 8 2 4 -1. - <_> - 0 9 2 2 2. - 0 - -5.5133788846433163e-003 - -4.2573130130767822e-001 - 6.7410148680210114e-002 - <_> - - <_> - - - - <_> - 4 0 10 3 -1. - <_> - 4 1 10 1 3. - 0 - -2.5038039311766624e-002 - 3.4961760044097900e-001 - -1.0028000175952911e-001 - <_> - - <_> - - - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - 1.5786489471793175e-002 - 6.5336212515830994e-002 - -4.7719699144363403e-001 - <_> - - <_> - - - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - 0 - -2.0188970956951380e-003 - 2.0141409337520599e-001 - -1.3781909644603729e-001 - <_> - - <_> - - - - <_> - 0 3 3 3 -1. - <_> - 0 4 3 1 3. - 0 - 1.5845090150833130e-002 - 4.6465918421745300e-002 - -6.0951578617095947e-001 - <_> - - <_> - - - - <_> - 9 10 2 1 -1. - <_> - 9 10 1 1 2. - 0 - 4.4102370738983154e-003 - 1.5361309982836246e-002 - -6.8296772241592407e-001 - <_> - - <_> - - - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - 0 - 5.4094279184937477e-003 - -7.9418838024139404e-002 - 3.7774890661239624e-001 - <_> - - <_> - - - - <_> - 10 9 3 3 -1. - <_> - 11 9 1 3 3. - 0 - -9.1723483055830002e-003 - -5.0129491090774536e-001 - 4.2223211377859116e-002 - <_> - - <_> - - - - <_> - 5 5 2 4 -1. - <_> - 5 5 1 2 2. - <_> - 6 7 1 2 2. - 0 - 5.8078318834304810e-003 - -9.7935520112514496e-002 - 3.0242648720741272e-001 - <_> - - <_> - - - - <_> - 9 10 2 1 -1. - <_> - 9 10 1 1 2. - 0 - 9.6367846708744764e-005 - -1.2192639708518982e-001 - 1.6515390574932098e-001 - <_> - - <_> - - - - <_> - 7 10 4 1 -1. - <_> - 8 10 2 1 2. - 0 - -9.0094821644015610e-005 - 1.8640710413455963e-001 - -1.6429470479488373e-001 - <_> - - <_> - - - - <_> - 5 1 9 4 -1. - <_> - 5 2 9 2 2. - 0 - -4.2277779430150986e-002 - 4.2195519804954529e-001 - -5.8824878185987473e-002 - <_> - - <_> - - - - <_> - 6 3 6 4 -1. - <_> - 6 4 6 2 2. - 0 - -2.1149210631847382e-002 - 2.0251630246639252e-001 - -1.3794210553169250e-001 - <_> - - <_> - - - - <_> - 16 10 2 2 -1. - <_> - 16 11 2 1 2. - 0 - 8.2650636613834649e-005 - -1.9383859634399414e-001 - 1.1907099932432175e-001 - <_> - - <_> - - - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - 0 - 8.7700327858328819e-003 - 4.4557921588420868e-002 - -5.6677401065826416e-001 - <_> - - <_> - - - - <_> - 7 0 7 8 -1. - <_> - 7 2 7 4 2. - 0 - 1.1755479872226715e-001 - -4.2800500988960266e-002 - 3.6108881235122681e-001 - <_> - - <_> - - - - <_> - 0 5 2 4 -1. - <_> - 0 6 2 2 2. - 0 - 9.6330074593424797e-003 - 5.1822990179061890e-002 - -5.2042788267135620e-001 - <_> - - <_> - - - - <_> - 13 8 5 3 -1. - <_> - 13 9 5 1 3. - 0 - -2.0586889237165451e-002 - -4.0654578804969788e-001 - 2.5355400517582893e-002 - <_> - - <_> - - - - <_> - 5 3 5 3 -1. - <_> - 4 4 5 1 3. - 1 - -2.6531819254159927e-002 - 3.0200049281120300e-001 - -7.8816160559654236e-002 - <_> - - <_> - - - - <_> - 10 6 2 4 -1. - <_> - 11 6 1 2 2. - <_> - 10 8 1 2 2. - 0 - 1.0697710327804089e-002 - -3.5472430288791656e-002 - 2.2002260386943817e-001 - <_> - - <_> - - - - <_> - 0 8 5 3 -1. - <_> - 0 9 5 1 3. - 0 - 2.2925930097699165e-002 - 3.5583890974521637e-002 - -6.5233951807022095e-001 - <_> - - <_> - - - - <_> - 15 0 2 2 -1. - <_> - 15 0 1 2 2. - 1 - -1.6979500651359558e-002 - -3.5206571221351624e-001 - 2.8009910136461258e-002 - <_> - - <_> - - - - <_> - 3 0 2 2 -1. - <_> - 3 0 2 1 2. - 1 - 1.8478220328688622e-002 - 4.4543039053678513e-002 - -5.0304412841796875e-001 - <_> - - <_> - - - - <_> - 10 6 2 4 -1. - <_> - 11 6 1 2 2. - <_> - 10 8 1 2 2. - 0 - -4.4793421402573586e-003 - 2.5836798548698425e-001 - -4.2940050363540649e-002 - <_> - - <_> - - - - <_> - 6 6 2 4 -1. - <_> - 6 6 1 2 2. - <_> - 7 8 1 2 2. - 0 - 5.6482921354472637e-003 - -8.1515468657016754e-002 - 2.7649441361427307e-001 - <_> - - <_> - - - - <_> - 10 9 3 3 -1. - <_> - 11 9 1 3 3. - 0 - 7.8102410770952702e-003 - 3.8798350840806961e-002 - -4.4269979000091553e-001 - <_> - - <_> - - - - <_> - 5 9 3 3 -1. - <_> - 6 9 1 3 3. - 0 - -9.2882793396711349e-003 - -5.6610691547393799e-001 - 3.7403721362352371e-002 - <_> - - <_> - - - - <_> - 11 11 2 1 -1. - <_> - 11 11 1 1 2. - 0 - -9.3019756604917347e-005 - 1.2570169568061829e-001 - -1.2166970223188400e-001 - <_> - - <_> - - - - <_> - 0 1 4 11 -1. - <_> - 2 1 2 11 2. - 0 - 1.2011100351810455e-001 - -2.8434859588742256e-002 - 7.4229037761688232e-001 - -1.7087210416793823e+000 - 5 - -1 - <_> - - - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.5502790957689285e-002 - 7.6810652017593384e-001 - -3.4562450647354126e-001 - <_> - - <_> - - - - <_> - 6 1 10 9 -1. - <_> - 6 4 10 3 3. - 0 - -2.0711760222911835e-001 - 3.3520048856735229e-001 - -3.5342261195182800e-001 - <_> - - <_> - - - - <_> - 5 3 3 3 -1. - <_> - 6 4 1 3 3. - 1 - -3.8090940564870834e-002 - 6.4589887857437134e-001 - -1.9888919591903687e-001 - <_> - - <_> - - - - <_> - 14 5 4 3 -1. - <_> - 14 5 2 3 2. - 1 - -1.1236749589443207e-002 - 1.9605120643973351e-002 - -1.3818189501762390e-001 - <_> - - <_> - - - - <_> - 1 4 2 5 -1. - <_> - 2 4 1 5 2. - 0 - -4.5111398212611675e-003 - 2.2876060009002686e-001 - -3.1510901451110840e-001 - <_> - - <_> - - - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - 0 - -1.9242960261180997e-003 - 2.1156929433345795e-001 - -1.3428880274295807e-001 - <_> - - <_> - - - - <_> - 0 6 7 6 -1. - <_> - 0 9 7 3 2. - 0 - 4.1934859007596970e-002 - -4.9654480814933777e-001 - 1.0631070286035538e-001 - <_> - - <_> - - - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - 0 - 3.3527929335832596e-003 - -7.7351443469524384e-002 - 3.3729350566864014e-001 - <_> - - <_> - - - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - 0 - 5.6215040385723114e-003 - -8.1691898405551910e-002 - 4.6233668923377991e-001 - <_> - - <_> - - - - <_> - 3 5 12 6 -1. - <_> - 7 5 4 6 3. - 0 - -2.0378379151225090e-002 - 1.3168209791183472e-001 - -3.5178178548812866e-001 - <_> - - <_> - - - - <_> - 5 9 8 3 -1. - <_> - 7 9 4 3 2. - 0 - -3.2714441418647766e-002 - -6.3405597209930420e-001 - 7.7019467949867249e-002 - <_> - - <_> - - - - <_> - 4 0 10 3 -1. - <_> - 4 0 5 3 2. - 0 - 1.9768450409173965e-002 - -2.1647900342941284e-001 - 1.9565519690513611e-001 - <_> - - <_> - - - - <_> - 3 10 12 2 -1. - <_> - 3 11 12 1 2. - 0 - 2.9163479339331388e-003 - -3.5658559203147888e-001 - 9.7441449761390686e-002 - <_> - - <_> - - - - <_> - 12 4 2 3 -1. - <_> - 11 5 2 1 3. - 1 - -1.1110129766166210e-002 - 1.6842029988765717e-001 - -1.1107269674539566e-001 - <_> - - <_> - - - - <_> - 4 4 10 2 -1. - <_> - 4 5 10 1 2. - 0 - 2.0324539393186569e-002 - -9.7157396376132965e-002 - 3.7280368804931641e-001 - <_> - - <_> - - - - <_> - 12 4 2 3 -1. - <_> - 11 5 2 1 3. - 1 - -4.3062889017164707e-003 - 3.4338738769292831e-002 - -3.7133701145648956e-002 - <_> - - <_> - - - - <_> - 6 4 3 2 -1. - <_> - 7 5 1 2 3. - 1 - -2.1981669589877129e-002 - 3.8905361294746399e-001 - -1.0749849677085876e-001 - <_> - - <_> - - - - <_> - 15 9 3 3 -1. - <_> - 15 10 3 1 3. - 0 - 1.0463249869644642e-002 - 5.8108348399400711e-002 - -4.9651509523391724e-001 - <_> - - <_> - - - - <_> - 0 0 2 12 -1. - <_> - 0 6 2 6 2. - 0 - -3.6034088581800461e-002 - -4.9659618735313416e-001 - 6.0606569051742554e-002 - <_> - - <_> - - - - <_> - 8 9 6 3 -1. - <_> - 10 9 2 3 3. - 0 - -2.8891820460557938e-002 - -5.7386201620101929e-001 - 3.3857319504022598e-002 - <_> - - <_> - - - - <_> - 0 9 3 3 -1. - <_> - 0 10 3 1 3. - 0 - 1.1050649918615818e-002 - 4.5335989445447922e-002 - -5.9945368766784668e-001 - <_> - - <_> - - - - <_> - 14 9 4 3 -1. - <_> - 14 10 4 1 3. - 0 - -1.1056279763579369e-002 - -4.3665930628776550e-001 - 4.1093189269304276e-002 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -1.7272779718041420e-002 - 1.7343489825725555e-001 - -1.7528730630874634e-001 - <_> - - <_> - - - - <_> - 4 0 10 4 -1. - <_> - 4 1 10 2 2. - 0 - -3.6496959626674652e-002 - 3.9858031272888184e-001 - -8.1219650804996490e-002 - <_> - - <_> - - - - <_> - 0 9 4 3 -1. - <_> - 0 10 4 1 3. - 0 - -8.0351969227194786e-003 - -5.2099347114562988e-001 - 6.8034321069717407e-002 - <_> - - <_> - - - - <_> - 6 0 7 4 -1. - <_> - 6 1 7 2 2. - 0 - 3.9475150406360626e-002 - -9.3318670988082886e-002 - 3.1671538949012756e-001 - <_> - - <_> - - - - <_> - 4 0 4 3 -1. - <_> - 5 0 2 3 2. - 0 - 9.7668059170246124e-003 - 6.1611980199813843e-002 - -4.7003281116485596e-001 - <_> - - <_> - - - - <_> - 10 3 2 3 -1. - <_> - 10 4 2 1 3. - 0 - 1.4267800375819206e-002 - -4.1417431086301804e-002 - 3.2682031393051147e-001 - <_> - - <_> - - - - <_> - 6 5 3 3 -1. - <_> - 5 6 3 1 3. - 1 - -1.4627629891037941e-002 - 2.5459268689155579e-001 - -9.2211320996284485e-002 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - 0 - -3.7443440407514572e-002 - 2.1452540159225464e-001 - -1.1371590197086334e-001 - <_> - - <_> - - - - <_> - 4 0 4 3 -1. - <_> - 5 0 2 3 2. - 0 - -7.8959967941045761e-003 - -4.2572760581970215e-001 - 6.0067750513553619e-002 - <_> - - <_> - - - - <_> - 0 11 18 1 -1. - <_> - 0 11 9 1 2. - 0 - 7.7234968543052673e-002 - 3.8733281195163727e-002 - -5.4066091775894165e-001 - <_> - - <_> - - - - <_> - 0 7 1 4 -1. - <_> - 0 8 1 2 2. - 0 - 5.0929659046232700e-003 - 4.5729279518127441e-002 - -4.5329090952873230e-001 - <_> - - <_> - - - - <_> - 7 2 4 3 -1. - <_> - 7 3 4 1 3. - 0 - 8.4982849657535553e-003 - -1.1133170127868652e-001 - 1.9510190188884735e-001 - <_> - - <_> - - - - <_> - 2 0 11 8 -1. - <_> - 2 2 11 4 2. - 0 - -1.3983149826526642e-001 - 2.7004420757293701e-001 - -1.1368890106678009e-001 - <_> - - <_> - - - - <_> - 4 1 12 11 -1. - <_> - 4 1 6 11 2. - 0 - 2.3544949293136597e-001 - -3.8515809923410416e-002 - 2.3026439547538757e-001 - <_> - - <_> - - - - <_> - 3 11 8 1 -1. - <_> - 5 11 4 1 2. - 0 - 1.0409420356154442e-002 - 4.4020529836416245e-002 - -5.2599149942398071e-001 - <_> - - <_> - - - - <_> - 10 3 2 4 -1. - <_> - 10 4 2 2 2. - 0 - -4.2654508724808693e-003 - 1.0057310014963150e-001 - -1.2344259768724442e-001 - <_> - - <_> - - - - <_> - 6 3 4 4 -1. - <_> - 6 4 4 2 2. - 0 - 1.1060579679906368e-002 - -8.1759817898273468e-002 - 3.6806258559226990e-001 - <_> - - <_> - - - - <_> - 15 2 3 4 -1. - <_> - 15 3 3 2 2. - 0 - -1.7567450180649757e-002 - -3.7257051467895508e-001 - 4.9060110002756119e-002 - <_> - - <_> - - - - <_> - 0 6 2 3 -1. - <_> - 0 7 2 1 3. - 0 - 1.1153019964694977e-002 - 3.1007820740342140e-002 - -6.5017551183700562e-001 - <_> - - <_> - - - - <_> - 15 0 3 3 -1. - <_> - 16 1 1 3 3. - 1 - 1.4512670226395130e-002 - 4.9902249127626419e-002 - -3.2837110757827759e-001 - <_> - - <_> - - - - <_> - 3 0 3 3 -1. - <_> - 2 1 3 1 3. - 1 - -2.2447660565376282e-002 - -4.2730820178985596e-001 - 5.1438558846712112e-002 - <_> - - <_> - - - - <_> - 7 9 8 3 -1. - <_> - 9 9 4 3 2. - 0 - -1.1137849651277065e-004 - 1.0777100175619125e-001 - -1.4144800603389740e-001 - <_> - - <_> - - - - <_> - 6 4 3 5 -1. - <_> - 7 4 1 5 3. - 0 - -6.8043689243495464e-003 - 2.5245690345764160e-001 - -8.8355191051959991e-002 - <_> - - <_> - - - - <_> - 14 8 2 2 -1. - <_> - 15 8 1 1 2. - <_> - 14 9 1 1 2. - 0 - 1.1319419718347490e-004 - -9.0738296508789063e-002 - 1.1057420074939728e-001 - <_> - - <_> - - - - <_> - 2 8 2 2 -1. - <_> - 2 8 1 1 2. - <_> - 3 9 1 1 2. - 0 - 9.8332180641591549e-005 - -1.4923529326915741e-001 - 1.4092969894409180e-001 - <_> - - <_> - - - - <_> - 5 0 8 3 -1. - <_> - 7 0 4 3 2. - 0 - -4.1529871523380280e-002 - -5.3849858045578003e-001 - 3.7263870239257813e-002 - <_> - - <_> - - - - <_> - 2 8 2 2 -1. - <_> - 2 8 1 1 2. - <_> - 3 9 1 1 2. - 0 - -8.4064602560829371e-005 - 1.7529909312725067e-001 - -1.1037810146808624e-001 - <_> - - <_> - - - - <_> - 3 7 15 4 -1. - <_> - 8 7 5 4 3. - 0 - -6.0910630971193314e-002 - 6.7305542528629303e-002 - -5.1418140530586243e-002 - <_> - - <_> - - - - <_> - 0 0 14 12 -1. - <_> - 7 0 7 12 2. - 0 - 2.8795659542083740e-001 - -4.7617539763450623e-002 - 4.4013059139251709e-001 - <_> - - <_> - - - - <_> - 12 1 4 6 -1. - <_> - 14 1 2 3 2. - <_> - 12 4 2 3 2. - 0 - 6.4567220397293568e-003 - -1.1678449809551239e-001 - 1.9663040339946747e-001 - <_> - - <_> - - - - <_> - 1 1 14 4 -1. - <_> - 1 2 14 2 2. - 0 - 3.3024981617927551e-002 - -1.1936070024967194e-001 - 2.1602100133895874e-001 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.5381961166858673e-002 - -3.8685059547424316e-001 - 5.3844269365072250e-002 - <_> - - <_> - - - - <_> - 0 3 3 3 -1. - <_> - 0 4 3 1 3. - 0 - -2.0128320902585983e-002 - -6.3146728277206421e-001 - 3.5852450877428055e-002 - <_> - - <_> - - - - <_> - 5 2 9 3 -1. - <_> - 5 3 9 1 3. - 0 - -2.9262129217386246e-002 - 3.1658959388732910e-001 - -7.7322661876678467e-002 - <_> - - <_> - - - - <_> - 6 0 2 3 -1. - <_> - 5 1 2 1 3. - 1 - -2.1860150620341301e-002 - -5.4143399000167847e-001 - 3.9601378142833710e-002 - <_> - - <_> - - - - <_> - 7 5 4 4 -1. - <_> - 8 5 2 4 2. - 0 - -7.7890069223940372e-003 - 1.6942089796066284e-001 - -1.2422429770231247e-001 - <_> - - <_> - - - - <_> - 3 9 8 3 -1. - <_> - 5 9 4 3 2. - 0 - -3.8938779383897781e-002 - -5.5230420827865601e-001 - 3.6004111170768738e-002 - <_> - - <_> - - - - <_> - 8 9 6 3 -1. - <_> - 10 9 2 3 3. - 0 - 2.9549999162554741e-002 - 1.2396270409226418e-002 - -4.6334400773048401e-001 - <_> - - <_> - - - - <_> - 7 6 3 1 -1. - <_> - 8 6 1 1 3. - 0 - 5.7805092073976994e-003 - -4.6647120267152786e-002 - 4.0929031372070313e-001 - <_> - - <_> - - - - <_> - 8 9 6 3 -1. - <_> - 10 9 2 3 3. - 0 - -1.6484359279274940e-002 - -1.6388489305973053e-001 - 3.5984411835670471e-002 - <_> - - <_> - - - - <_> - 4 10 2 1 -1. - <_> - 5 10 1 1 2. - 0 - -7.8519893577322364e-005 - 1.3505099713802338e-001 - -1.4988400042057037e-001 - <_> - - <_> - - - - <_> - 14 0 4 4 -1. - <_> - 13 1 4 2 2. - 1 - 5.7466499507427216e-002 - -1.0657619684934616e-002 - 2.4209600687026978e-001 - <_> - - <_> - - - - <_> - 4 0 4 4 -1. - <_> - 5 1 2 4 2. - 1 - -4.9877569079399109e-002 - 4.3212598562240601e-001 - -3.9752040058374405e-002 - -1.6544970273971558e+000 - 6 - -1 - <_> - - - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 1.3002170249819756e-002 - -3.5921901464462280e-001 - 7.2445052862167358e-001 - <_> - - <_> - - - - <_> - 6 4 11 8 -1. - <_> - 6 8 11 4 2. - 0 - 2.8081539273262024e-001 - -3.1760689616203308e-001 - 2.8313899040222168e-001 - <_> - - <_> - - - - <_> - 0 4 16 8 -1. - <_> - 4 4 8 8 2. - 0 - -1.0230190306901932e-001 - 2.7121749520301819e-001 - -4.0805050730705261e-001 - <_> - - <_> - - - - <_> - 14 2 1 9 -1. - <_> - 14 5 1 3 3. - 0 - -7.0124780759215355e-003 - 9.5718100666999817e-002 - -1.6140650212764740e-001 - <_> - - <_> - - - - <_> - 0 6 15 2 -1. - <_> - 5 6 5 2 3. - 0 - 2.9238969087600708e-001 - -2.9914049082435668e-004 - -1.5149759521484375e+003 - <_> - - <_> - - - - <_> - 10 4 3 4 -1. - <_> - 9 5 3 2 2. - 1 - -2.8283270075917244e-002 - 2.6549229025840759e-001 - -1.3133880496025085e-001 - <_> - - <_> - - - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - 0 - 3.6253510043025017e-003 - -2.3768079280853271e-001 - 4.5994341373443604e-001 - <_> - - <_> - - - - <_> - 10 1 1 6 -1. - <_> - 8 3 1 2 3. - 1 - -2.9781410470604897e-002 - 2.1161870658397675e-001 - -1.3860809616744518e-002 - <_> - - <_> - - - - <_> - 3 2 1 9 -1. - <_> - 3 5 1 3 3. - 0 - -1.6370929777622223e-002 - 1.9874550402164459e-001 - -3.2648208737373352e-001 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - 0 - 6.4193690195679665e-003 - -3.6268979310989380e-001 - 1.1069930344820023e-001 - <_> - - <_> - - - - <_> - 9 1 6 2 -1. - <_> - 11 3 2 2 3. - 1 - -5.7248339056968689e-002 - 1.9361220300197601e-001 - -2.6778540015220642e-001 - <_> - - <_> - - - - <_> - 11 5 3 3 -1. - <_> - 12 5 1 3 3. - 0 - 8.4205381572246552e-003 - -1.3904230296611786e-001 - 2.9838430881500244e-001 - <_> - - <_> - - - - <_> - 4 5 3 3 -1. - <_> - 5 5 1 3 3. - 0 - -5.7426397688686848e-003 - 3.2052099704742432e-001 - -1.0433880239725113e-001 - <_> - - <_> - - - - <_> - 9 6 4 1 -1. - <_> - 10 6 2 1 2. - 0 - -3.6206389777362347e-003 - 1.6167849302291870e-001 - -6.5803676843643188e-002 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - 0 - -1.8714519217610359e-002 - 1.9818380475044250e-001 - -1.6230210661888123e-001 - <_> - - <_> - - - - <_> - 8 0 6 3 -1. - <_> - 10 0 2 3 3. - 0 - -4.3710019439458847e-002 - -7.4743181467056274e-001 - 4.9251399934291840e-002 - <_> - - <_> - - - - <_> - 5 0 6 6 -1. - <_> - 5 2 6 2 3. - 0 - -7.1742817759513855e-002 - 4.3014928698539734e-001 - -8.6288601160049438e-002 - <_> - - <_> - - - - <_> - 8 0 6 4 -1. - <_> - 10 0 2 4 3. - 0 - -3.6524080205708742e-003 - 1.3674829900264740e-001 - -1.4051650464534760e-001 - <_> - - <_> - - - - <_> - 5 6 4 1 -1. - <_> - 6 6 2 1 2. - 0 - -3.2031999435275793e-003 - 3.3417999744415283e-001 - -1.0332349687814713e-001 - <_> - - <_> - - - - <_> - 8 0 6 3 -1. - <_> - 10 0 2 3 3. - 0 - -2.8293890878558159e-002 - -3.2057279348373413e-001 - 4.5155089348554611e-002 - <_> - - <_> - - - - <_> - 4 0 6 4 -1. - <_> - 6 0 2 4 3. - 0 - -2.3787179961800575e-002 - -4.5069369673728943e-001 - 6.9767661392688751e-002 - <_> - - <_> - - - - <_> - 9 10 6 2 -1. - <_> - 11 10 2 2 3. - 0 - -3.1126540154218674e-002 - -7.7986258268356323e-001 - 1.2120390310883522e-002 - <_> - - <_> - - - - <_> - 3 10 6 2 -1. - <_> - 5 10 2 2 3. - 0 - -1.9434019923210144e-002 - -6.2219220399856567e-001 - 3.9394930005073547e-002 - <_> - - <_> - - - - <_> - 6 0 6 3 -1. - <_> - 6 1 6 1 3. - 0 - -2.0646529272198677e-002 - 3.6222419142723083e-001 - -8.2135513424873352e-002 - <_> - - <_> - - - - <_> - 4 0 7 3 -1. - <_> - 4 1 7 1 3. - 0 - 1.6532849520444870e-002 - -1.1575960367918015e-001 - 2.7401360869407654e-001 - <_> - - <_> - - - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - 0 - -9.4688721001148224e-003 - -6.1177402734756470e-001 - 4.4638238847255707e-002 - <_> - - <_> - - - - <_> - 3 9 1 2 -1. - <_> - 3 10 1 1 2. - 0 - 1.5371610061265528e-004 - -2.5191861391067505e-001 - 9.6505373716354370e-002 - <_> - - <_> - - - - <_> - 2 3 16 9 -1. - <_> - 2 3 8 9 2. - 0 - 2.5918158888816833e-001 - -4.7843091189861298e-002 - 2.3324379324913025e-001 - <_> - - <_> - - - - <_> - 6 4 6 6 -1. - <_> - 8 4 2 6 3. - 0 - -2.5841780006885529e-002 - 1.7269480228424072e-001 - -1.4205309748649597e-001 - <_> - - <_> - - - - <_> - 6 0 12 11 -1. - <_> - 6 0 6 11 2. - 0 - -3.9961761236190796e-001 - -2.4384410679340363e-001 - 1.7345370724797249e-002 - <_> - - <_> - - - - <_> - 0 0 14 12 -1. - <_> - 7 0 7 12 2. - 0 - 2.1105909347534180e-001 - -6.1212010681629181e-002 - 4.1000100970268250e-001 - <_> - - <_> - - - - <_> - 16 3 2 4 -1. - <_> - 16 4 2 2 2. - 0 - -1.6058450564742088e-002 - -6.0403078794479370e-001 - 5.7624060660600662e-002 - <_> - - <_> - - - - <_> - 1 3 6 4 -1. - <_> - 1 3 3 2 2. - <_> - 4 5 3 2 2. - 0 - -1.6918450593948364e-002 - 1.9921250641345978e-001 - -1.2271139770746231e-001 - <_> - - <_> - - - - <_> - 15 2 3 4 -1. - <_> - 15 3 3 2 2. - 0 - 1.4193099923431873e-002 - 5.4869029670953751e-002 - -3.7617999315261841e-001 - <_> - - <_> - - - - <_> - 0 2 3 4 -1. - <_> - 0 3 3 2 2. - 0 - -2.4758260697126389e-002 - -7.1052777767181396e-001 - 3.3381890505552292e-002 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - 0 - -3.8228559494018555e-001 - -6.2711232900619507e-001 - 3.2499440014362335e-002 - <_> - - <_> - - - - <_> - 6 3 2 5 -1. - <_> - 6 3 1 5 2. - 1 - -2.6878060773015022e-002 - 3.0796620249748230e-001 - -7.3240749537944794e-002 - <_> - - <_> - - - - <_> - 14 0 3 2 -1. - <_> - 15 1 1 2 3. - 1 - 1.3228660449385643e-002 - 6.9501012563705444e-002 - -4.0926951169967651e-001 - <_> - - <_> - - - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - 0 - 2.9470060020685196e-002 - -8.1747382879257202e-002 - 2.9929721355438232e-001 - <_> - - <_> - - - - <_> - 4 0 10 1 -1. - <_> - 4 0 5 1 2. - 0 - 6.3013629987835884e-003 - -1.4912730455398560e-001 - 1.6093279421329498e-001 - <_> - - <_> - - - - <_> - 4 0 2 3 -1. - <_> - 3 1 2 1 3. - 1 - -2.0139260217547417e-002 - -5.0678992271423340e-001 - 4.0891159325838089e-002 - <_> - - <_> - - - - <_> - 3 2 13 4 -1. - <_> - 3 3 13 2 2. - 0 - -4.9374740570783615e-002 - 2.5256040692329407e-001 - -8.5726343095302582e-002 - <_> - - <_> - - - - <_> - 5 2 3 4 -1. - <_> - 6 3 1 4 3. - 1 - 1.9452260807156563e-002 - -7.3688283562660217e-002 - 3.0949079990386963e-001 - <_> - - <_> - - - - <_> - 13 4 4 7 -1. - <_> - 13 4 2 7 2. - 0 - -3.2352220267057419e-002 - 2.1833789348602295e-001 - -6.8243682384490967e-002 - <_> - - <_> - - - - <_> - 0 8 7 2 -1. - <_> - 0 9 7 1 2. - 0 - 1.5072959649842232e-004 - -3.2836580276489258e-001 - 6.6381722688674927e-002 - <_> - - <_> - - - - <_> - 13 6 2 6 -1. - <_> - 13 8 2 2 3. - 0 - -6.1889938078820705e-003 - 1.3249829411506653e-001 - -7.4239932000637054e-002 - <_> - - <_> - - - - <_> - 3 6 2 6 -1. - <_> - 3 8 2 2 3. - 0 - 6.3619641587138176e-003 - -1.2829330563545227e-001 - 1.5975730121135712e-001 - <_> - - <_> - - - - <_> - 2 5 16 4 -1. - <_> - 10 5 8 2 2. - <_> - 2 7 8 2 2. - 0 - 1.2205489724874496e-001 - 3.1172819435596466e-002 - -5.6808418035507202e-001 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 0 10 9 1 2. - <_> - 9 11 9 1 2. - 0 - 2.7129599824547768e-002 - 3.4967660903930664e-002 - -5.5332547426223755e-001 - <_> - - <_> - - - - <_> - 14 10 2 2 -1. - <_> - 15 10 1 1 2. - <_> - 14 11 1 1 2. - 0 - 1.5683429955970496e-004 - -1.0362909734249115e-001 - 1.1349440366029739e-001 - <_> - - <_> - - - - <_> - 2 4 2 7 -1. - <_> - 3 4 1 7 2. - 0 - -5.7905660942196846e-003 - 1.3157980144023895e-001 - -1.3856770098209381e-001 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - 1.8190830014646053e-003 - -7.3361650109291077e-002 - 1.6932620108127594e-001 - <_> - - <_> - - - - <_> - 3 0 4 4 -1. - <_> - 4 0 2 4 2. - 0 - -1.8002679571509361e-002 - -5.8490717411041260e-001 - 3.2903790473937988e-002 - <_> - - <_> - - - - <_> - 7 0 4 4 -1. - <_> - 7 1 4 2 2. - 0 - -1.8526639789342880e-002 - 3.2005688548088074e-001 - -6.2653139233589172e-002 - <_> - - <_> - - - - <_> - 6 1 5 3 -1. - <_> - 6 2 5 1 3. - 0 - 2.0345499739050865e-002 - -8.0804906785488129e-002 - 2.5780761241912842e-001 - <_> - - <_> - - - - <_> - 16 5 2 3 -1. - <_> - 16 6 2 1 3. - 0 - -1.6274280846118927e-002 - -5.7635939121246338e-001 - 2.5872429832816124e-002 - <_> - - <_> - - - - <_> - 0 5 2 3 -1. - <_> - 0 6 2 1 3. - 0 - 8.5418839007616043e-003 - 3.3990539610385895e-002 - -4.9847429990768433e-001 - <_> - - <_> - - - - <_> - 6 0 6 2 -1. - <_> - 8 0 2 2 3. - 0 - -2.0960260182619095e-002 - -4.7946169972419739e-001 - 3.4324679523706436e-002 - <_> - - <_> - - - - <_> - 5 3 3 3 -1. - <_> - 6 4 1 3 3. - 1 - 1.5699770301580429e-002 - -6.5722920000553131e-002 - 2.9684039950370789e-001 - <_> - - <_> - - - - <_> - 12 6 2 4 -1. - <_> - 12 7 2 2 2. - 0 - 1.7905479762703180e-003 - -6.5733380615711212e-002 - 9.4904549419879913e-002 - <_> - - <_> - - - - <_> - 0 3 1 4 -1. - <_> - 0 4 1 2 2. - 0 - 5.4030250757932663e-003 - 3.9892349392175674e-002 - -4.1660529375076294e-001 - <_> - - <_> - - - - <_> - 16 5 2 4 -1. - <_> - 16 5 1 4 2. - 0 - -4.7734947875142097e-003 - 2.7001398801803589e-001 - -1.5953589975833893e-001 - <_> - - <_> - - - - <_> - 4 6 2 4 -1. - <_> - 4 7 2 2 2. - 0 - 2.9232229571789503e-003 - -1.0599870234727859e-001 - 1.8253239989280701e-001 - <_> - - <_> - - - - <_> - 16 5 2 4 -1. - <_> - 16 5 1 4 2. - 0 - 3.9620529860258102e-003 - -5.7123549282550812e-002 - 2.0644719898700714e-001 - <_> - - <_> - - - - <_> - 4 8 4 4 -1. - <_> - 5 8 2 4 2. - 0 - 1.2356759980320930e-002 - 4.0755268186330795e-002 - -4.4443848729133606e-001 - <_> - - <_> - - - - <_> - 16 5 2 4 -1. - <_> - 16 5 1 4 2. - 0 - -1.2156190350651741e-002 - 1.8296989798545837e-001 - -3.4999419003725052e-002 - <_> - - <_> - - - - <_> - 0 5 2 4 -1. - <_> - 1 5 1 4 2. - 0 - -3.7678279913961887e-003 - 1.4462789893150330e-001 - -1.2491580098867416e-001 - <_> - - <_> - - - - <_> - 15 0 3 2 -1. - <_> - 15 0 3 1 2. - 1 - 1.9276840612292290e-002 - -6.2840022146701813e-002 - 1.9151060283184052e-001 - <_> - - <_> - - - - <_> - 2 0 2 2 -1. - <_> - 2 0 1 2 2. - 1 - -5.4216519929468632e-003 - 2.1568669378757477e-001 - -8.9786492288112640e-002 - <_> - - <_> - - - - <_> - 16 6 2 4 -1. - <_> - 16 7 2 2 2. - 0 - -2.0339300855994225e-002 - -5.9200441837310791e-001 - 1.6503969207406044e-002 - <_> - - <_> - - - - <_> - 0 6 2 4 -1. - <_> - 0 7 2 2 2. - 0 - 1.1275880038738251e-002 - 3.1583100557327271e-002 - -5.1892447471618652e-001 - <_> - - <_> - - - - <_> - 14 0 3 2 -1. - <_> - 15 0 1 2 3. - 0 - -9.7946176538243890e-005 - 1.4691540598869324e-001 - -1.6081510484218597e-001 - <_> - - <_> - - - - <_> - 1 0 3 2 -1. - <_> - 2 0 1 2 3. - 0 - -1.6277630347758532e-003 - 1.8870960175991058e-001 - -9.3803331255912781e-002 - <_> - - <_> - - - - <_> - 16 0 2 12 -1. - <_> - 16 6 2 6 2. - 0 - 8.7238460779190063e-002 - 5.5480118840932846e-002 - -2.6414340734481812e-001 - -1.7957290410995483e+000 - 7 - -1 - <_> - - - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.7292431592941284e-002 - 6.6972970962524414e-001 - -3.2153728604316711e-001 - <_> - - <_> - - - - <_> - 0 2 18 6 -1. - <_> - 6 4 6 2 9. - 0 - -5.4918038845062256e-001 - 4.3484970927238464e-001 - -2.9871198534965515e-001 - <_> - - <_> - - - - <_> - 0 5 4 3 -1. - <_> - 2 5 2 3 2. - 0 - -1.2416520155966282e-002 - 2.6745811104774475e-001 - -3.9999490976333618e-001 - <_> - - <_> - - - - <_> - 2 10 14 2 -1. - <_> - 2 11 14 1 2. - 0 - 7.2453971952199936e-003 - -4.2438769340515137e-001 - 2.0234079658985138e-001 - <_> - - <_> - - - - <_> - 0 4 16 8 -1. - <_> - 0 8 16 4 2. - 0 - 3.6846119165420532e-001 - -3.5139828920364380e-001 - 2.0377729833126068e-001 - <_> - - <_> - - - - <_> - 11 6 4 2 -1. - <_> - 12 6 2 2 2. - 0 - 1.1723440140485764e-002 - -1.8664820492267609e-001 - 3.3893829584121704e-001 - <_> - - <_> - - - - <_> - 5 1 8 1 -1. - <_> - 9 1 4 1 2. - 0 - -5.2209510467946529e-003 - 2.1541909873485565e-001 - -2.0584990084171295e-001 - <_> - - <_> - - - - <_> - 3 1 15 6 -1. - <_> - 8 3 5 2 9. - 0 - 5.2216267585754395e-001 - -7.7104539377614856e-004 - 5.6350582838058472e-001 - <_> - - <_> - - - - <_> - 2 8 2 4 -1. - <_> - 2 9 2 2 2. - 0 - 1.0613870108500123e-004 - -2.3261800408363342e-001 - 1.3210240006446838e-001 - <_> - - <_> - - - - <_> - 14 3 3 1 -1. - <_> - 15 4 1 1 3. - 1 - -1.8034329637885094e-002 - -6.0396319627761841e-001 - 3.4430969506502151e-002 - <_> - - <_> - - - - <_> - 0 4 10 2 -1. - <_> - 0 4 5 1 2. - <_> - 5 5 5 1 2. - 0 - -2.3259000852704048e-002 - 3.5783469676971436e-001 - -8.5259757936000824e-002 - <_> - - <_> - - - - <_> - 9 4 3 2 -1. - <_> - 9 5 3 1 2. - 0 - 1.0407639667391777e-002 - -5.1958288997411728e-002 - 3.1198269128799438e-001 - <_> - - <_> - - - - <_> - 4 2 1 3 -1. - <_> - 3 3 1 1 3. - 1 - -1.1971450410783291e-002 - -4.9050408601760864e-001 - 5.4528221487998962e-002 - <_> - - <_> - - - - <_> - 10 3 2 4 -1. - <_> - 10 5 2 2 2. - 0 - -3.7426669150590897e-003 - 4.4125020503997803e-002 - -5.3650841116905212e-002 - <_> - - <_> - - - - <_> - 6 3 2 4 -1. - <_> - 6 5 2 2 2. - 0 - 1.8917659297585487e-002 - -8.1747300922870636e-002 - 4.1203048825263977e-001 - <_> - - <_> - - - - <_> - 14 10 1 2 -1. - <_> - 14 11 1 1 2. - 0 - 1.1007690045516938e-004 - -1.3551560044288635e-001 - 8.5857532918453217e-002 - <_> - - <_> - - - - <_> - 0 9 4 3 -1. - <_> - 0 10 4 1 3. - 0 - 1.3918640092015266e-002 - 4.8517379909753799e-002 - -5.8116322755813599e-001 - <_> - - <_> - - - - <_> - 9 5 1 3 -1. - <_> - 8 6 1 1 3. - 1 - -1.0104410350322723e-002 - 1.5834890305995941e-001 - -6.0111179947853088e-002 - <_> - - <_> - - - - <_> - 2 6 6 2 -1. - <_> - 4 6 2 2 3. - 0 - -1.8620710819959641e-002 - 2.7867808938026428e-001 - -1.0338810086250305e-001 - <_> - - <_> - - - - <_> - 15 9 1 2 -1. - <_> - 15 10 1 1 2. - 0 - 5.7289921678602695e-003 - 2.8767310082912445e-002 - -3.4044471383094788e-001 - <_> - - <_> - - - - <_> - 2 9 1 2 -1. - <_> - 2 10 1 1 2. - 0 - 9.1226633230689913e-005 - -2.5967589020729065e-001 - 1.1362390220165253e-001 - <_> - - <_> - - - - <_> - 9 3 2 4 -1. - <_> - 8 4 2 2 2. - 1 - -1.7600089311599731e-002 - 8.0204762518405914e-002 - -6.6199533641338348e-002 - <_> - - <_> - - - - <_> - 6 5 4 6 -1. - <_> - 6 5 2 3 2. - <_> - 8 8 2 3 2. - 0 - 5.6003769859671593e-003 - -1.7382130026817322e-001 - 1.4224979281425476e-001 - <_> - - <_> - - - - <_> - 5 1 8 3 -1. - <_> - 7 1 4 3 2. - 0 - -4.1345998644828796e-002 - -6.0982871055603027e-001 - 3.9992429316043854e-002 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 9 0 9 1 2. - 0 - 3.1171320006251335e-002 - -8.9795216917991638e-002 - 2.6572328805923462e-001 - <_> - - <_> - - - - <_> - 4 0 10 1 -1. - <_> - 4 0 5 1 2. - 0 - 9.2339180409908295e-003 - -1.3240410387516022e-001 - 1.7500220239162445e-001 - <_> - - <_> - - - - <_> - 5 6 3 1 -1. - <_> - 6 6 1 1 3. - 0 - -2.9637310653924942e-003 - 2.7044069766998291e-001 - -8.2514546811580658e-002 - <_> - - <_> - - - - <_> - 13 0 3 12 -1. - <_> - 14 0 1 12 3. - 0 - -1.0435279691591859e-003 - 1.2740360200405121e-001 - -1.4733490347862244e-001 - <_> - - <_> - - - - <_> - 2 0 3 12 -1. - <_> - 3 0 1 12 3. - 0 - -3.6916971206665039e-002 - -5.5704081058502197e-001 - 4.0161561220884323e-002 - <_> - - <_> - - - - <_> - 12 5 3 7 -1. - <_> - 13 5 1 7 3. - 0 - -3.4235499333590269e-003 - 1.6954079270362854e-001 - -1.0382679849863052e-001 - <_> - - <_> - - - - <_> - 3 5 3 7 -1. - <_> - 4 5 1 7 3. - 0 - -3.4884609282016754e-002 - -7.6003962755203247e-001 - 2.8784649446606636e-002 - <_> - - <_> - - - - <_> - 12 3 4 1 -1. - <_> - 13 4 2 1 2. - 1 - -1.4949830074328929e-004 - 5.8567389845848083e-002 - -8.6837686598300934e-002 - <_> - - <_> - - - - <_> - 0 3 2 2 -1. - <_> - 0 4 2 1 2. - 0 - -8.4154512733221054e-003 - -4.5848670601844788e-001 - 4.6183209866285324e-002 - <_> - - <_> - - - - <_> - 12 3 4 1 -1. - <_> - 13 4 2 1 2. - 1 - 2.5011990219354630e-002 - -1.2734670192003250e-002 - 1.5709209442138672e-001 - <_> - - <_> - - - - <_> - 6 3 1 4 -1. - <_> - 5 4 1 2 2. - 1 - -9.9370932730380446e-005 - 9.6763700246810913e-002 - -2.2434939444065094e-001 - <_> - - <_> - - - - <_> - 8 3 5 2 -1. - <_> - 8 4 5 1 2. - 0 - 2.1338040009140968e-002 - -2.7949279174208641e-002 - 4.5690038800239563e-001 - <_> - - <_> - - - - <_> - 6 4 6 5 -1. - <_> - 8 4 2 5 3. - 0 - -1.9381210207939148e-002 - 1.3209809362888336e-001 - -1.5854920446872711e-001 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.7130910456180573e-002 - -4.0985769033432007e-001 - 6.9916889071464539e-002 - <_> - - <_> - - - - <_> - 6 3 3 5 -1. - <_> - 7 4 1 5 3. - 1 - 3.7448350340127945e-002 - -4.7214321792125702e-002 - 4.6269690990447998e-001 - <_> - - <_> - - - - <_> - 14 2 3 3 -1. - <_> - 13 3 3 1 3. - 1 - -1.6145069152116776e-002 - 1.5716019272804260e-001 - -6.5406262874603271e-002 - <_> - - <_> - - - - <_> - 4 2 3 3 -1. - <_> - 5 3 1 3 3. - 1 - 1.3192090205848217e-002 - -9.3616731464862823e-002 - 2.3192650079727173e-001 - <_> - - <_> - - - - <_> - 8 9 3 3 -1. - <_> - 9 9 1 3 3. - 0 - 7.4546551331877708e-003 - 3.3262088894844055e-002 - -4.8058581352233887e-001 - <_> - - <_> - - - - <_> - 7 9 3 3 -1. - <_> - 8 9 1 3 3. - 0 - 6.5358411520719528e-003 - 3.9861779659986496e-002 - -5.2071362733840942e-001 - <_> - - <_> - - - - <_> - 17 4 1 4 -1. - <_> - 17 5 1 2 2. - 0 - -1.1007690045516938e-004 - 1.0615369677543640e-001 - -1.4794890582561493e-001 - <_> - - <_> - - - - <_> - 6 4 6 5 -1. - <_> - 9 4 3 5 2. - 0 - -5.4008360952138901e-002 - 2.6703369617462158e-001 - -7.9568542540073395e-002 - <_> - - <_> - - - - <_> - 2 1 16 11 -1. - <_> - 2 1 8 11 2. - 0 - -2.1774560213088989e-001 - 1.6545580327510834e-001 - -5.5510718375444412e-002 - <_> - - <_> - - - - <_> - 6 0 4 3 -1. - <_> - 7 0 2 3 2. - 0 - 1.2961000204086304e-002 - 3.8905121386051178e-002 - -5.3931367397308350e-001 - <_> - - <_> - - - - <_> - 8 3 2 3 -1. - <_> - 8 4 2 1 3. - 0 - -1.4969130046665668e-002 - 3.0878359079360962e-001 - -7.2156012058258057e-002 - <_> - - <_> - - - - <_> - 0 4 1 4 -1. - <_> - 0 5 1 2 2. - 0 - 5.1595158874988556e-003 - 4.1552640497684479e-002 - -4.4410169124603271e-001 - <_> - - <_> - - - - <_> - 11 11 2 1 -1. - <_> - 11 11 1 1 2. - 0 - -1.0106719855684787e-004 - 1.3232690095901489e-001 - -1.2352719902992249e-001 - <_> - - <_> - - - - <_> - 9 4 4 1 -1. - <_> - 10 5 2 1 2. - 1 - -1.2458950281143188e-002 - 1.4162090420722961e-001 - -1.2240760028362274e-001 - <_> - - <_> - - - - <_> - 7 2 4 3 -1. - <_> - 7 3 4 1 3. - 0 - -1.8788089975714684e-002 - 2.9809600114822388e-001 - -6.1062760651111603e-002 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - 0 - -2.9027970507740974e-002 - 1.8160690367221832e-001 - -1.0429889708757401e-001 - <_> - - <_> - - - - <_> - 6 1 6 3 -1. - <_> - 6 2 6 1 3. - 0 - -1.2969439849257469e-002 - 2.6630058884620667e-001 - -7.0843391120433807e-002 - <_> - - <_> - - - - <_> - 0 3 16 4 -1. - <_> - 0 4 16 2 2. - 0 - -4.8657860606908798e-002 - 1.8037420511245728e-001 - -1.1353269964456558e-001 - <_> - - <_> - - - - <_> - 11 11 2 1 -1. - <_> - 11 11 1 1 2. - 0 - 1.0443449718877673e-004 - -1.1833500117063522e-001 - 1.7454829812049866e-001 - <_> - - <_> - - - - <_> - 5 11 2 1 -1. - <_> - 6 11 1 1 2. - 0 - -1.3140009832568467e-004 - 1.4330400526523590e-001 - -1.4002929627895355e-001 - <_> - - <_> - - - - <_> - 4 0 14 12 -1. - <_> - 4 0 7 12 2. - 0 - -7.7764278650283813e-001 - -8.1180518865585327e-001 - 4.8811929300427437e-003 - <_> - - <_> - - - - <_> - 0 0 14 12 -1. - <_> - 7 0 7 12 2. - 0 - 3.0272060632705688e-001 - -4.6920161694288254e-002 - 4.6565508842468262e-001 - <_> - - <_> - - - - <_> - 15 7 1 4 -1. - <_> - 15 8 1 2 2. - 0 - 1.2083619832992554e-002 - 1.3714229688048363e-002 - -4.8584228754043579e-001 - <_> - - <_> - - - - <_> - 2 7 1 4 -1. - <_> - 2 8 1 2 2. - 0 - 8.3657556388061494e-005 - -1.4557360112667084e-001 - 1.2107980251312256e-001 - <_> - - <_> - - - - <_> - 1 8 17 4 -1. - <_> - 1 10 17 2 2. - 0 - 1.2459480203688145e-002 - -3.1913518905639648e-001 - 4.5050200074911118e-002 - <_> - - <_> - - - - <_> - 1 8 12 3 -1. - <_> - 5 8 4 3 3. - 0 - -9.6598379313945770e-002 - -4.7412630915641785e-001 - 3.4393358975648880e-002 - <_> - - <_> - - - - <_> - 13 2 4 3 -1. - <_> - 12 3 4 1 3. - 1 - 8.3489827811717987e-003 - -6.4854227006435394e-002 - 1.3588410615921021e-001 - <_> - - <_> - - - - <_> - 5 1 4 3 -1. - <_> - 6 1 2 3 2. - 0 - -9.6687171608209610e-003 - -3.8394901156425476e-001 - 4.5654650777578354e-002 - <_> - - <_> - - - - <_> - 13 2 4 3 -1. - <_> - 12 3 4 1 3. - 1 - -2.0871540531516075e-002 - 1.1647360026836395e-001 - -4.6159781515598297e-002 - <_> - - <_> - - - - <_> - 5 2 3 4 -1. - <_> - 6 3 1 4 3. - 1 - 2.4644650518894196e-002 - -6.0594830662012100e-002 - 2.8827700018882751e-001 - <_> - - <_> - - - - <_> - 0 11 18 1 -1. - <_> - 6 11 6 1 3. - 0 - -1.3068989850580692e-002 - 1.7769919335842133e-001 - -1.0170739889144897e-001 - <_> - - <_> - - - - <_> - 0 5 2 4 -1. - <_> - 0 6 2 2 2. - 0 - 1.0740649886429310e-002 - 3.3637721091508865e-002 - -5.8304959535598755e-001 - <_> - - <_> - - - - <_> - 11 11 2 1 -1. - <_> - 11 11 1 1 2. - 0 - -5.6638391688466072e-003 - -8.2890021800994873e-001 - 1.0463479906320572e-002 - <_> - - <_> - - - - <_> - 5 11 2 1 -1. - <_> - 6 11 1 1 2. - 0 - 1.3703710283152759e-004 - -1.0685860365629196e-001 - 1.6701389849185944e-001 - <_> - - <_> - - - - <_> - 9 10 4 2 -1. - <_> - 10 10 2 2 2. - 0 - 7.2855940088629723e-003 - 2.0125189796090126e-002 - -4.8965498805046082e-001 - <_> - - <_> - - - - <_> - 1 10 2 2 -1. - <_> - 1 10 1 1 2. - <_> - 2 11 1 1 2. - 0 - 1.0730550275184214e-004 - -1.1978050321340561e-001 - 1.2677900493144989e-001 - <_> - - <_> - - - - <_> - 15 10 2 2 -1. - <_> - 16 10 1 1 2. - <_> - 15 11 1 1 2. - 0 - -1.1701670155161992e-004 - 1.2513719499111176e-001 - -8.4742642939090729e-002 - <_> - - <_> - - - - <_> - 1 10 2 2 -1. - <_> - 1 10 1 1 2. - <_> - 2 11 1 1 2. - 0 - -1.0570519953034818e-004 - 1.5671330690383911e-001 - -1.0472840070724487e-001 - <_> - - <_> - - - - <_> - 9 10 4 2 -1. - <_> - 10 10 2 2 2. - 0 - -9.8277851939201355e-003 - -4.2486619949340820e-001 - 1.2776750139892101e-002 - <_> - - <_> - - - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - 0 - -1.0262790136039257e-002 - -4.7308981418609619e-001 - 3.1395319849252701e-002 - <_> - - <_> - - - - <_> - 3 6 12 2 -1. - <_> - 7 6 4 2 3. - 0 - -1.1773769743740559e-002 - 7.4253700673580170e-002 - -1.9689300656318665e-001 - <_> - - <_> - - - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - 0 - -3.9177751168608665e-003 - -3.1191331148147583e-001 - 4.5671850442886353e-002 - <_> - - <_> - - - - <_> - 5 0 11 2 -1. - <_> - 5 1 11 1 2. - 0 - 2.3346070200204849e-002 - -5.2008550614118576e-002 - 1.7973770201206207e-001 - <_> - - <_> - - - - <_> - 6 0 3 2 -1. - <_> - 6 1 3 1 2. - 0 - -2.2126040421426296e-003 - 1.5479539334774017e-001 - -1.0545700043439865e-001 - <_> - - <_> - - - - <_> - 8 0 10 4 -1. - <_> - 8 1 10 2 2. - 0 - 1.4761550724506378e-001 - 7.4690231122076511e-003 - -8.0544400215148926e-001 - <_> - - <_> - - - - <_> - 0 0 10 4 -1. - <_> - 0 1 10 2 2. - 0 - 7.2484388947486877e-003 - -1.5604910254478455e-001 - 1.2632860243320465e-001 - <_> - - <_> - - - - <_> - 6 0 8 3 -1. - <_> - 6 1 8 1 3. - 0 - -2.1801209077239037e-002 - 2.4090659618377686e-001 - -6.4087331295013428e-002 - <_> - - <_> - - - - <_> - 0 10 3 2 -1. - <_> - 0 11 3 1 2. - 0 - -3.1350140925496817e-003 - -3.7679758667945862e-001 - 4.4631399214267731e-002 - <_> - - <_> - - - - <_> - 0 4 18 8 -1. - <_> - 9 4 9 4 2. - <_> - 0 8 9 4 2. - 0 - 2.9509729146957397e-001 - 1.6203410923480988e-002 - -8.1572759151458740e-001 - <_> - - <_> - - - - <_> - 0 2 18 8 -1. - <_> - 0 4 18 4 2. - 0 - -5.1936417818069458e-001 - -6.4044600725173950e-001 - 1.7519079148769379e-002 - -1.6902129650115967e+000 - 8 - -1 - <_> - - - <_> - - <_> - - - - <_> - 7 4 3 2 -1. - <_> - 7 4 3 1 2. - 1 - -3.4664139151573181e-002 - 6.5977567434310913e-001 - -3.1582540273666382e-001 - <_> - - <_> - - - - <_> - 10 4 7 3 -1. - <_> - 10 5 7 1 3. - 0 - -1.1273490265011787e-002 - 2.3457850515842438e-001 - -1.5769450366497040e-001 - <_> - - <_> - - - - <_> - 5 2 4 4 -1. - <_> - 6 3 2 4 2. - 1 - -4.1530959308147430e-002 - 4.2379489541053772e-001 - -2.8518509864807129e-001 - <_> - - <_> - - - - <_> - 0 4 18 7 -1. - <_> - 6 4 6 7 3. - 0 - -2.0448620617389679e-001 - 1.8061810731887817e-001 - -3.2812160253524780e-001 - <_> - - <_> - - - - <_> - 4 2 3 4 -1. - <_> - 3 3 3 2 2. - 1 - -4.1392319835722446e-003 - 1.4234000444412231e-001 - -3.6734649538993835e-001 - <_> - - <_> - - - - <_> - 3 0 12 8 -1. - <_> - 6 0 6 8 2. - 0 - -1.1119210161268711e-002 - 7.2978653013706207e-002 - -1.3348829746246338e-001 - <_> - - <_> - - - - <_> - 0 8 8 4 -1. - <_> - 0 10 8 2 2. - 0 - 6.3189188949763775e-003 - -5.1101410388946533e-001 - 6.5231300890445709e-002 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - -2.7547220233827829e-003 - 3.2231101393699646e-001 - -7.8560419380664825e-002 - <_> - - <_> - - - - <_> - 4 4 10 2 -1. - <_> - 4 5 10 1 2. - 0 - 1.5909250825643539e-002 - -1.1302089691162109e-001 - 3.5444441437721252e-001 - <_> - - <_> - - - - <_> - 9 3 2 4 -1. - <_> - 8 4 2 2 2. - 1 - -3.4309048205614090e-002 - 1.4863179624080658e-001 - -5.9663631021976471e-002 - <_> - - <_> - - - - <_> - 7 4 1 2 -1. - <_> - 7 4 1 1 2. - 1 - 9.5747098384890705e-005 - -2.0395369827747345e-001 - 2.1945419907569885e-001 - <_> - - <_> - - - - <_> - 2 0 16 12 -1. - <_> - 2 6 16 6 2. - 0 - 1.2961600720882416e-001 - -2.5850468873977661e-001 - 1.4311419427394867e-001 - <_> - - <_> - - - - <_> - 9 5 3 1 -1. - <_> - 10 6 1 1 3. - 1 - -3.7369730416685343e-003 - 1.5821619331836700e-001 - -2.3684109747409821e-001 - <_> - - <_> - - - - <_> - 6 0 6 3 -1. - <_> - 6 0 3 3 2. - 0 - 5.9748939238488674e-003 - -2.0868189632892609e-001 - 1.5647380053997040e-001 - <_> - - <_> - - - - <_> - 0 2 10 4 -1. - <_> - 0 2 5 2 2. - <_> - 5 4 5 2 2. - 0 - -6.5518669784069061e-002 - 2.7740669250488281e-001 - -9.4154737889766693e-002 - <_> - - <_> - - - - <_> - 9 0 4 4 -1. - <_> - 10 0 2 4 2. - 0 - -1.5643499791622162e-002 - -6.5276598930358887e-001 - 5.8415610343217850e-002 - <_> - - <_> - - - - <_> - 3 5 4 2 -1. - <_> - 3 5 2 1 2. - <_> - 5 6 2 1 2. - 0 - -5.3621069528162479e-003 - 3.0472820997238159e-001 - -9.0583823621273041e-002 - <_> - - <_> - - - - <_> - 15 1 3 2 -1. - <_> - 16 2 1 2 3. - 1 - 8.4986742585897446e-003 - 9.4854839146137238e-002 - -3.7641200423240662e-001 - <_> - - <_> - - - - <_> - 3 1 2 3 -1. - <_> - 2 2 2 1 3. - 1 - -2.2054940462112427e-002 - -5.6978279352188110e-001 - 4.1174288839101791e-002 - <_> - - <_> - - - - <_> - 9 10 4 2 -1. - <_> - 10 10 2 2 2. - 0 - 8.9925974607467651e-003 - 1.1008080095052719e-002 - -6.8029582500457764e-001 - <_> - - <_> - - - - <_> - 7 6 2 2 -1. - <_> - 7 6 1 1 2. - <_> - 8 7 1 1 2. - 0 - 2.6960580144077539e-003 - -8.6102768778800964e-002 - 2.7503418922424316e-001 - <_> - - <_> - - - - <_> - 9 10 4 2 -1. - <_> - 10 10 2 2 2. - 0 - -7.4433060362935066e-003 - -4.6109339594841003e-001 - 2.5336729362607002e-002 - <_> - - <_> - - - - <_> - 0 6 2 6 -1. - <_> - 0 6 1 3 2. - <_> - 1 9 1 3 2. - 0 - 1.1906769941560924e-004 - -2.0586380362510681e-001 - 1.0493390262126923e-001 - <_> - - <_> - - - - <_> - 17 4 1 8 -1. - <_> - 17 8 1 4 2. - 0 - 3.6572828888893127e-002 - 4.1884351521730423e-002 - -2.6558640599250793e-001 - <_> - - <_> - - - - <_> - 0 4 1 8 -1. - <_> - 0 8 1 4 2. - 0 - 1.0328489588573575e-003 - -2.8002429008483887e-001 - 8.4565736353397369e-002 - <_> - - <_> - - - - <_> - 11 4 6 2 -1. - <_> - 14 4 3 1 2. - <_> - 11 5 3 1 2. - 0 - 5.5017122067511082e-003 - -8.3080992102622986e-002 - 1.7881210148334503e-001 - <_> - - <_> - - - - <_> - 1 4 6 2 -1. - <_> - 1 4 3 1 2. - <_> - 4 5 3 1 2. - 0 - -4.2574931867420673e-003 - 1.8285669386386871e-001 - -1.2856319546699524e-001 - <_> - - <_> - - - - <_> - 10 0 4 4 -1. - <_> - 11 0 2 4 2. - 0 - -1.0948719864245504e-004 - 1.1554790288209915e-001 - -1.7279610037803650e-001 - <_> - - <_> - - - - <_> - 4 0 4 4 -1. - <_> - 5 0 2 4 2. - 0 - 1.3575569726526737e-002 - 4.7628160566091537e-002 - -4.7959300875663757e-001 - <_> - - <_> - - - - <_> - 16 4 2 3 -1. - <_> - 16 5 2 1 3. - 0 - -1.3205070048570633e-002 - -5.5575007200241089e-001 - 2.9028749093413353e-002 - <_> - - <_> - - - - <_> - 0 4 2 3 -1. - <_> - 0 5 2 1 3. - 0 - 9.1635938733816147e-003 - 3.5378590226173401e-002 - -5.2760952711105347e-001 - <_> - - <_> - - - - <_> - 17 0 1 12 -1. - <_> - 17 4 1 4 3. - 0 - -3.6201209295541048e-003 - 1.2984579801559448e-001 - -2.5827971100807190e-001 - <_> - - <_> - - - - <_> - 9 2 6 3 -1. - <_> - 8 3 6 1 3. - 1 - -2.8150960803031921e-002 - 1.8013629317283630e-001 - -1.2052509933710098e-001 - <_> - - <_> - - - - <_> - 17 0 1 12 -1. - <_> - 17 4 1 4 3. - 0 - -7.5367003679275513e-002 - -2.5096911191940308e-001 - 1.4794659800827503e-002 - <_> - - <_> - - - - <_> - 5 4 2 2 -1. - <_> - 5 4 1 1 2. - <_> - 6 5 1 1 2. - 0 - -1.0179110104218125e-003 - 1.9308570027351379e-001 - -1.0838530212640762e-001 - <_> - - <_> - - - - <_> - 4 0 14 12 -1. - <_> - 4 0 7 12 2. - 0 - -2.0971980690956116e-001 - 7.4706457555294037e-002 - -3.4369520843029022e-002 - <_> - - <_> - - - - <_> - 0 0 1 12 -1. - <_> - 0 4 1 4 3. - 0 - -4.5241750776767731e-002 - -3.0122849345207214e-001 - 6.1180669814348221e-002 - <_> - - <_> - - - - <_> - 17 5 1 4 -1. - <_> - 17 6 1 2 2. - 0 - -1.0068370029330254e-002 - -3.1977829337120056e-001 - 1.5929570421576500e-002 - <_> - - <_> - - - - <_> - 0 5 1 4 -1. - <_> - 0 6 1 2 2. - 0 - 3.3460659906268120e-003 - 5.1246169954538345e-002 - -3.5894161462783813e-001 - <_> - - <_> - - - - <_> - 9 2 1 3 -1. - <_> - 9 3 1 1 3. - 0 - -4.8623997718095779e-003 - 2.8305920958518982e-001 - -6.4877010881900787e-002 - <_> - - <_> - - - - <_> - 6 2 5 2 -1. - <_> - 6 3 5 1 2. - 0 - 9.2780962586402893e-003 - -6.8402752280235291e-002 - 3.2526910305023193e-001 - <_> - - <_> - - - - <_> - 6 0 11 4 -1. - <_> - 6 1 11 2 2. - 0 - 2.8777100145816803e-002 - -7.4719488620758057e-002 - 1.4238749444484711e-001 - <_> - - <_> - - - - <_> - 5 10 4 2 -1. - <_> - 6 10 2 2 2. - 0 - 5.2759349346160889e-003 - 4.1597399860620499e-002 - -4.2687159776687622e-001 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - 0 - -3.6956008523702621e-002 - 1.8709599971771240e-001 - -9.9286213517189026e-002 - <_> - - <_> - - - - <_> - 4 0 2 1 -1. - <_> - 5 0 1 1 2. - 0 - 1.1527239985298365e-004 - -1.2309949845075607e-001 - 1.6146050393581390e-001 - <_> - - <_> - - - - <_> - 2 1 16 10 -1. - <_> - 2 1 8 10 2. - 0 - 1.0096299648284912e-001 - -6.3704922795295715e-002 - 1.3727569580078125e-001 - <_> - - <_> - - - - <_> - 0 0 14 12 -1. - <_> - 7 0 7 12 2. - 0 - 1.7564980685710907e-001 - -5.5898111313581467e-002 - 3.2327750325202942e-001 - <_> - - <_> - - - - <_> - 12 0 2 1 -1. - <_> - 12 0 1 1 2. - 0 - -7.0847300812602043e-003 - -6.1462122201919556e-001 - 1.9988279789686203e-002 - <_> - - <_> - - - - <_> - 2 6 4 4 -1. - <_> - 3 6 2 4 2. - 0 - -5.4999678395688534e-003 - 1.5109080076217651e-001 - -1.2012190371751785e-001 - <_> - - <_> - - - - <_> - 12 0 2 1 -1. - <_> - 12 0 1 1 2. - 0 - 1.1683329648803920e-004 - -6.3201643526554108e-002 - 1.0248489677906036e-001 - <_> - - <_> - - - - <_> - 4 0 2 1 -1. - <_> - 5 0 1 1 2. - 0 - -1.2892209633719176e-004 - 1.5073929727077484e-001 - -1.2984649837017059e-001 - <_> - - <_> - - - - <_> - 12 0 3 4 -1. - <_> - 13 0 1 4 3. - 0 - 1.0021899826824665e-002 - 4.4182330369949341e-002 - -4.2501309514045715e-001 - <_> - - <_> - - - - <_> - 2 2 8 1 -1. - <_> - 4 4 4 1 2. - 1 - -6.4188748598098755e-002 - -4.0792858600616455e-001 - 4.2033798992633820e-002 - <_> - - <_> - - - - <_> - 12 0 3 4 -1. - <_> - 13 0 1 4 3. - 0 - -1.6842419281601906e-002 - -5.1279681921005249e-001 - 2.1104399114847183e-002 - <_> - - <_> - - - - <_> - 3 0 3 4 -1. - <_> - 4 0 1 4 3. - 0 - 7.4764918535947800e-003 - 4.9902040511369705e-002 - -3.2437339425086975e-001 - <_> - - <_> - - - - <_> - 13 1 4 4 -1. - <_> - 15 1 2 2 2. - <_> - 13 3 2 2 2. - 0 - 7.5663411989808083e-003 - -6.9152683019638062e-002 - 1.9746780395507813e-001 - <_> - - <_> - - - - <_> - 1 1 6 4 -1. - <_> - 1 1 3 2 2. - <_> - 4 3 3 2 2. - 0 - -1.8151780590415001e-002 - 1.8264299631118774e-001 - -9.8603516817092896e-002 - <_> - - <_> - - - - <_> - 8 0 4 2 -1. - <_> - 8 1 4 1 2. - 0 - -1.5309340320527554e-002 - 2.5585418939590454e-001 - -5.7670980691909790e-002 - <_> - - <_> - - - - <_> - 4 10 6 1 -1. - <_> - 6 10 2 1 3. - 0 - -1.2537280097603798e-002 - -6.0015022754669189e-001 - 3.1305689364671707e-002 - <_> - - <_> - - - - <_> - 10 2 1 6 -1. - <_> - 8 4 1 2 3. - 1 - -1.1186859756708145e-001 - -7.3224097490310669e-001 - 5.4572842782363296e-004 - <_> - - <_> - - - - <_> - 8 2 6 1 -1. - <_> - 10 4 2 1 3. - 1 - -1.6405830159783363e-002 - 7.0568412542343140e-002 - -2.3586690425872803e-001 - <_> - - <_> - - - - <_> - 10 5 4 3 -1. - <_> - 11 5 2 3 2. - 0 - -1.1206840164959431e-002 - 2.9805409908294678e-001 - -4.6159930527210236e-002 - <_> - - <_> - - - - <_> - 5 0 4 3 -1. - <_> - 6 0 2 3 2. - 0 - 9.1227758675813675e-003 - 4.7872390598058701e-002 - -3.7525078654289246e-001 - <_> - - <_> - - - - <_> - 9 6 2 2 -1. - <_> - 10 6 1 1 2. - <_> - 9 7 1 1 2. - 0 - -2.4092409876175225e-004 - 1.4520640671253204e-001 - -1.2162090092897415e-001 - <_> - - <_> - - - - <_> - 4 10 10 2 -1. - <_> - 4 11 10 1 2. - 0 - 3.3112149685621262e-003 - -2.1473629772663116e-001 - 7.5015850365161896e-002 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - 1.0689670452848077e-003 - -8.6991913616657257e-002 - 1.4234369993209839e-001 - <_> - - <_> - - - - <_> - 3 2 3 10 -1. - <_> - 4 2 1 10 3. - 0 - -4.2576111853122711e-002 - -7.0083147287368774e-001 - 2.2004570811986923e-002 - <_> - - <_> - - - - <_> - 0 3 18 6 -1. - <_> - 9 3 9 3 2. - <_> - 0 6 9 3 2. - 0 - -2.2859150171279907e-001 - -6.2275588512420654e-001 - 2.0604349672794342e-002 - <_> - - <_> - - - - <_> - 5 4 2 2 -1. - <_> - 5 4 1 2 2. - 1 - 1.1048560030758381e-002 - -8.8343963027000427e-002 - 2.0929630100727081e-001 - <_> - - <_> - - - - <_> - 12 4 4 3 -1. - <_> - 11 5 4 1 3. - 1 - 2.6190899312496185e-002 - -3.0436459928750992e-002 - 2.1788010001182556e-001 - <_> - - <_> - - - - <_> - 6 4 3 4 -1. - <_> - 7 5 1 4 3. - 1 - 1.1006950400769711e-002 - -9.0961061418056488e-002 - 2.2373570501804352e-001 - <_> - - <_> - - - - <_> - 13 8 2 2 -1. - <_> - 14 8 1 1 2. - <_> - 13 9 1 1 2. - 0 - -1.1149870260851458e-004 - 1.0055939853191376e-001 - -8.2711242139339447e-002 - <_> - - <_> - - - - <_> - 3 8 2 2 -1. - <_> - 3 8 1 1 2. - <_> - 4 9 1 1 2. - 0 - 1.1044929851777852e-004 - -1.1131429672241211e-001 - 1.4033970236778259e-001 - <_> - - <_> - - - - <_> - 5 6 12 4 -1. - <_> - 8 6 6 4 2. - 0 - -5.2578408271074295e-002 - 7.1729972958564758e-002 - -4.0962688624858856e-002 - <_> - - <_> - - - - <_> - 0 7 15 3 -1. - <_> - 5 7 5 3 3. - 0 - -1.9955919682979584e-001 - -5.7830357551574707e-001 - 2.8734490275382996e-002 - <_> - - <_> - - - - <_> - 12 1 3 2 -1. - <_> - 13 2 1 2 3. - 1 - 1.7149249091744423e-002 - 1.4304569922387600e-002 - -1.8541809916496277e-001 - <_> - - <_> - - - - <_> - 6 1 2 3 -1. - <_> - 5 2 2 1 3. - 1 - -2.4047069251537323e-002 - -4.6827080845832825e-001 - 3.2377708703279495e-002 - <_> - - <_> - - - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - 0 - -4.2632492259144783e-003 - 1.4178739488124847e-001 - -7.2884447872638702e-002 - <_> - - <_> - - - - <_> - 5 5 3 3 -1. - <_> - 6 5 1 3 3. - 0 - -3.3538329880684614e-003 - 1.9119140505790710e-001 - -8.2784809172153473e-002 - <_> - - <_> - - - - <_> - 10 6 8 3 -1. - <_> - 10 7 8 1 3. - 0 - 7.0240199565887451e-002 - 9.9507197737693787e-003 - -6.9990187883377075e-001 - <_> - - <_> - - - - <_> - 2 0 10 3 -1. - <_> - 2 1 10 1 3. - 0 - 1.6852239146828651e-002 - -8.8816717267036438e-002 - 1.6883240640163422e-001 - <_> - - <_> - - - - <_> - 8 0 4 3 -1. - <_> - 8 1 4 1 3. - 0 - -1.3070680201053619e-002 - 2.4888229370117188e-001 - -6.2759302556514740e-002 - <_> - - <_> - - - - <_> - 2 5 3 7 -1. - <_> - 3 5 1 7 3. - 0 - -3.5220220685005188e-002 - -6.2048029899597168e-001 - 2.4633679538965225e-002 - <_> - - <_> - - - - <_> - 16 0 2 3 -1. - <_> - 16 0 1 3 2. - 1 - -1.7316380515694618e-002 - -3.3864679932594299e-001 - 3.6917239427566528e-002 - <_> - - <_> - - - - <_> - 2 0 3 2 -1. - <_> - 2 0 3 1 2. - 1 - 2.2072130814194679e-002 - 3.8453228771686554e-002 - -4.1064238548278809e-001 - <_> - - <_> - - - - <_> - 5 0 10 1 -1. - <_> - 5 0 5 1 2. - 0 - 1.0351699776947498e-002 - -1.0224519670009613e-001 - 1.5435679256916046e-001 - <_> - - <_> - - - - <_> - 6 6 3 2 -1. - <_> - 7 6 1 2 3. - 0 - -3.6150650121271610e-003 - 2.0694419741630554e-001 - -8.1435896456241608e-002 - <_> - - <_> - - - - <_> - 0 0 18 4 -1. - <_> - 6 0 6 4 3. - 0 - -1.0313490033149719e-001 - 1.6327729821205139e-001 - -9.8083086311817169e-002 - <_> - - <_> - - - - <_> - 5 7 2 1 -1. - <_> - 6 7 1 1 2. - 0 - 7.9715962056070566e-004 - -1.0221719741821289e-001 - 1.7463779449462891e-001 - <_> - - <_> - - - - <_> - 9 7 2 3 -1. - <_> - 9 7 1 3 2. - 1 - 2.6026399806141853e-002 - 6.9349119439721107e-003 - -7.0387297868728638e-001 - <_> - - <_> - - - - <_> - 9 7 3 2 -1. - <_> - 9 7 3 1 2. - 1 - -3.2695080153644085e-003 - 5.7468920946121216e-002 - -2.6737850904464722e-001 - <_> - - <_> - - - - <_> - 11 4 2 3 -1. - <_> - 11 4 1 3 2. - 1 - -3.0334599316120148e-002 - 1.6826699674129486e-001 - -4.4392518699169159e-002 - <_> - - <_> - - - - <_> - 7 4 3 2 -1. - <_> - 7 4 3 1 2. - 1 - -3.4671649336814880e-002 - -3.3905708789825439e-001 - 6.1771869659423828e-002 - <_> - - <_> - - - - <_> - 13 8 2 2 -1. - <_> - 14 8 1 1 2. - <_> - 13 9 1 1 2. - 0 - 8.4309016529005021e-005 - -1.1972939968109131e-001 - 1.5170879662036896e-001 - <_> - - <_> - - - - <_> - 3 8 2 2 -1. - <_> - 3 8 1 1 2. - <_> - 4 9 1 1 2. - 0 - -1.0392320109531283e-004 - 1.4664840698242188e-001 - -1.1560360342264175e-001 - <_> - - <_> - - - - <_> - 16 7 2 3 -1. - <_> - 16 7 1 3 2. - 1 - -1.0691150091588497e-002 - 1.1423820257186890e-001 - -1.0983390361070633e-001 - -1.6809680461883545e+000 - 9 - -1 - <_> - - - <_> - - <_> - - - - <_> - 3 6 6 2 -1. - <_> - 5 6 2 2 3. - 0 - 4.0128160268068314e-002 - -3.1783500313758850e-001 - 6.2470978498458862e-001 - <_> - - <_> - - - - <_> - 7 4 9 8 -1. - <_> - 7 8 9 4 2. - 0 - 2.5893148779869080e-001 - -2.7941200137138367e-001 - 2.5360828638076782e-001 - <_> - - <_> - - - - <_> - 9 1 6 2 -1. - <_> - 11 3 2 2 3. - 1 - -8.1663876771926880e-002 - 3.0437821149826050e-001 - -3.2352921366691589e-001 - <_> - - <_> - - - - <_> - 14 5 4 2 -1. - <_> - 14 5 2 2 2. - 1 - 1.7201349139213562e-002 - -1.6664890572428703e-002 - 1.2985409796237946e-001 - <_> - - <_> - - - - <_> - 4 5 2 4 -1. - <_> - 4 5 2 2 2. - 1 - -4.2179729789495468e-002 - 2.4032059311866760e-001 - -3.2194539904594421e-001 - <_> - - <_> - - - - <_> - 7 2 9 6 -1. - <_> - 7 4 9 2 3. - 0 - -6.1821538954973221e-002 - 6.6948533058166504e-002 - -1.1838900297880173e-001 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - 0 - 4.1967527940869331e-003 - -4.2374908924102783e-001 - 1.1120550334453583e-001 - <_> - - <_> - - - - <_> - 11 5 3 2 -1. - <_> - 12 6 1 2 3. - 1 - -2.2552030161023140e-002 - 2.6725378632545471e-001 - -9.9779993295669556e-002 - <_> - - <_> - - - - <_> - 6 7 6 1 -1. - <_> - 8 7 2 1 3. - 0 - 8.3527207374572754e-002 - 4.9182821065187454e-002 - 9.3193750000000000e+002 - <_> - - <_> - - - - <_> - 9 3 3 4 -1. - <_> - 10 4 1 4 3. - 1 - -6.6923439502716064e-002 - -4.3197348713874817e-001 - 2.2907970473170280e-002 - <_> - - <_> - - - - <_> - 9 3 4 3 -1. - <_> - 8 4 4 1 3. - 1 - -2.4421349167823792e-002 - 2.3052230477333069e-001 - -1.9583049416542053e-001 - <_> - - <_> - - - - <_> - 10 5 3 1 -1. - <_> - 11 6 1 1 3. - 1 - -4.8728468827903271e-003 - 9.6525266766548157e-002 - -1.5255169570446014e-001 - <_> - - <_> - - - - <_> - 8 5 1 3 -1. - <_> - 7 6 1 1 3. - 1 - -1.1779139749705791e-002 - 3.8318601250648499e-001 - -9.9813573062419891e-002 - <_> - - <_> - - - - <_> - 5 3 8 4 -1. - <_> - 5 5 8 2 2. - 0 - 5.5238891392946243e-002 - -8.1039026379585266e-002 - 4.2088559269905090e-001 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - 0 - -1.6514550894498825e-002 - 1.9347189366817474e-001 - -1.6414490342140198e-001 - <_> - - <_> - - - - <_> - 12 1 6 6 -1. - <_> - 15 1 3 3 2. - <_> - 12 4 3 3 2. - 0 - 2.9398869723081589e-002 - -4.0197629481554031e-002 - 1.6494549810886383e-001 - <_> - - <_> - - - - <_> - 1 1 6 6 -1. - <_> - 1 1 3 3 2. - <_> - 4 4 3 3 2. - 0 - -2.7306059375405312e-002 - 2.1020489931106567e-001 - -1.5619710087776184e-001 - <_> - - <_> - - - - <_> - 8 9 4 3 -1. - <_> - 9 9 2 3 2. - 0 - -1.1370140127837658e-002 - -6.3955801725387573e-001 - 3.8152929395437241e-002 - <_> - - <_> - - - - <_> - 3 10 12 2 -1. - <_> - 7 10 4 2 3. - 0 - -9.6206590533256531e-003 - 1.7184859514236450e-001 - -1.4077569544315338e-001 - <_> - - <_> - - - - <_> - 7 0 8 9 -1. - <_> - 7 3 8 3 3. - 0 - -2.4804919958114624e-001 - 9.6059650182723999e-002 - -3.5033728927373886e-002 - <_> - - <_> - - - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - 0 - 1.9431810826063156e-002 - -8.1926092505455017e-002 - 2.9813900589942932e-001 - <_> - - <_> - - - - <_> - 14 1 4 4 -1. - <_> - 16 1 2 2 2. - <_> - 14 3 2 2 2. - 0 - 9.2512750998139381e-003 - -2.8675759211182594e-002 - 1.2367840111255646e-001 - <_> - - <_> - - - - <_> - 0 1 4 4 -1. - <_> - 0 1 2 2 2. - <_> - 2 3 2 2 2. - 0 - -7.5025227852165699e-003 - 1.9024680554866791e-001 - -1.4312489330768585e-001 - <_> - - <_> - - - - <_> - 15 0 3 3 -1. - <_> - 16 1 1 3 3. - 1 - 1.8332319334149361e-002 - 5.1443781703710556e-002 - -4.5784160494804382e-001 - <_> - - <_> - - - - <_> - 3 0 3 3 -1. - <_> - 2 1 3 1 3. - 1 - -2.4709559977054596e-002 - -5.5311012268066406e-001 - 4.3773401528596878e-002 - <_> - - <_> - - - - <_> - 13 7 5 3 -1. - <_> - 13 8 5 1 3. - 0 - 3.5510540008544922e-002 - 5.7641528546810150e-003 - -5.0709831714630127e-001 - <_> - - <_> - - - - <_> - 0 7 4 4 -1. - <_> - 0 8 4 2 2. - 0 - 2.0895810797810555e-002 - 4.5377410948276520e-002 - -4.9842038750648499e-001 - <_> - - <_> - - - - <_> - 6 4 6 6 -1. - <_> - 8 4 2 6 3. - 0 - -3.5481620579957962e-002 - 1.5418830513954163e-001 - -1.4000199735164642e-001 - <_> - - <_> - - - - <_> - 6 9 6 2 -1. - <_> - 8 9 2 2 3. - 0 - -1.7126219347119331e-002 - -4.8520579934120178e-001 - 4.5199479907751083e-002 - <_> - - <_> - - - - <_> - 5 6 10 6 -1. - <_> - 10 6 5 3 2. - <_> - 5 9 5 3 2. - 0 - -4.3498359620571136e-002 - -2.1836410462856293e-001 - 2.4818979203701019e-002 - <_> - - <_> - - - - <_> - 9 9 1 2 -1. - <_> - 9 9 1 1 2. - 1 - -9.6786877838894725e-004 - 9.3692511320114136e-002 - -2.0849959552288055e-001 - <_> - - <_> - - - - <_> - 3 2 12 3 -1. - <_> - 3 3 12 1 3. - 0 - 2.8028149157762527e-002 - -9.8437979817390442e-002 - 2.1405869722366333e-001 - <_> - - <_> - - - - <_> - 3 0 7 8 -1. - <_> - 3 2 7 4 2. - 0 - -1.1709540337324142e-001 - 2.7563339471817017e-001 - -8.0759562551975250e-002 - <_> - - <_> - - - - <_> - 2 0 16 11 -1. - <_> - 2 0 8 11 2. - 0 - 3.1854110956192017e-001 - -3.7302598357200623e-002 - 2.0321239531040192e-001 - <_> - - <_> - - - - <_> - 0 0 12 11 -1. - <_> - 6 0 6 11 2. - 0 - 1.8708510696887970e-001 - -4.2003840208053589e-002 - 4.5461919903755188e-001 - <_> - - <_> - - - - <_> - 9 0 6 4 -1. - <_> - 11 0 2 4 3. - 0 - -1.1449670273577794e-004 - 1.1597789824008942e-001 - -2.3541730642318726e-001 - <_> - - <_> - - - - <_> - 4 1 4 4 -1. - <_> - 5 2 2 4 2. - 1 - 3.5649940371513367e-002 - -6.6509492695331573e-002 - 2.8327891230583191e-001 - <_> - - <_> - - - - <_> - 4 2 14 10 -1. - <_> - 11 2 7 5 2. - <_> - 4 7 7 5 2. - 0 - 3.8561020046472549e-002 - -9.1676719486713409e-002 - 9.5089800655841827e-002 - <_> - - <_> - - - - <_> - 0 6 1 3 -1. - <_> - 0 7 1 1 3. - 0 - 2.9842848889529705e-003 - 4.8733729869127274e-002 - -3.4843000769615173e-001 - <_> - - <_> - - - - <_> - 16 7 2 2 -1. - <_> - 17 7 1 1 2. - <_> - 16 8 1 1 2. - 0 - 1.2221869837958366e-004 - -1.0448929667472839e-001 - 1.0433969646692276e-001 - <_> - - <_> - - - - <_> - 5 4 3 3 -1. - <_> - 6 5 1 3 3. - 1 - 1.7984049394726753e-002 - -5.5451318621635437e-002 - 2.8990921378135681e-001 - <_> - - <_> - - - - <_> - 11 4 4 1 -1. - <_> - 12 5 2 1 2. - 1 - -3.0522119253873825e-002 - 3.2600420713424683e-001 - -1.2342750094830990e-002 - <_> - - <_> - - - - <_> - 7 4 1 4 -1. - <_> - 6 5 1 2 2. - 1 - -8.8787982240319252e-003 - 1.8352979421615601e-001 - -1.2553639709949493e-001 - <_> - - <_> - - - - <_> - 10 0 3 3 -1. - <_> - 11 0 1 3 3. - 0 - -8.1907752901315689e-003 - -4.6439141035079956e-001 - 5.7022649794816971e-002 - <_> - - <_> - - - - <_> - 7 8 4 2 -1. - <_> - 8 8 2 2 2. - 0 - 7.2757308371365070e-003 - 2.9556749388575554e-002 - -4.8011448979377747e-001 - <_> - - <_> - - - - <_> - 8 10 2 1 -1. - <_> - 8 10 1 1 2. - 0 - 1.0632930207066238e-004 - -1.1848829686641693e-001 - 1.2452460080385208e-001 - <_> - - <_> - - - - <_> - 1 0 14 4 -1. - <_> - 1 1 14 2 2. - 0 - 4.3366391211748123e-002 - -8.5436671972274780e-002 - 1.7945680022239685e-001 - <_> - - <_> - - - - <_> - 6 0 8 3 -1. - <_> - 6 1 8 1 3. - 0 - -1.7917420715093613e-002 - 2.2749659419059753e-001 - -7.3550216853618622e-002 - <_> - - <_> - - - - <_> - 6 1 6 3 -1. - <_> - 6 2 6 1 3. - 0 - -2.4122040718793869e-002 - 3.2454338669776917e-001 - -4.7602940350770950e-002 - <_> - - <_> - - - - <_> - 9 0 6 4 -1. - <_> - 11 0 2 4 3. - 0 - 4.5866120606660843e-002 - 1.6963159665465355e-002 - -6.1907947063446045e-001 - <_> - - <_> - - - - <_> - 3 0 6 4 -1. - <_> - 5 0 2 4 3. - 0 - -2.6154519990086555e-002 - -3.7108859419822693e-001 - 3.9997719228267670e-002 - <_> - - <_> - - - - <_> - 12 3 2 2 -1. - <_> - 12 3 1 2 2. - 1 - -2.3461949080228806e-002 - 1.2756420671939850e-001 - -2.2292949259281158e-002 - <_> - - <_> - - - - <_> - 6 2 1 2 -1. - <_> - 6 2 1 1 2. - 1 - 1.5133329667150974e-002 - 2.7855740860104561e-002 - -5.6463587284088135e-001 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 9 10 9 1 2. - <_> - 0 11 9 1 2. - 0 - -3.8169771432876587e-002 - -6.7978310585021973e-001 - 1.9624669104814529e-002 - <_> - - <_> - - - - <_> - 6 0 3 1 -1. - <_> - 7 0 1 1 3. - 0 - -6.0274768620729446e-003 - -6.0235649347305298e-001 - 1.9473260268568993e-002 - <_> - - <_> - - - - <_> - 0 2 18 6 -1. - <_> - 9 2 9 3 2. - <_> - 0 5 9 3 2. - 0 - -2.0226030051708221e-001 - -4.1042789816856384e-001 - 3.3139400184154510e-002 - <_> - - <_> - - - - <_> - 0 0 2 12 -1. - <_> - 0 6 2 6 2. - 0 - 1.3556970655918121e-001 - 3.2679639756679535e-002 - -4.9395999312400818e-001 - <_> - - <_> - - - - <_> - 16 7 2 2 -1. - <_> - 17 7 1 1 2. - <_> - 16 8 1 1 2. - 0 - -1.0420950275147334e-004 - 1.7653250694274902e-001 - -1.2747409939765930e-001 - <_> - - <_> - - - - <_> - 0 7 2 2 -1. - <_> - 0 7 1 1 2. - <_> - 1 8 1 1 2. - 0 - 1.2260209769010544e-004 - -1.2935620546340942e-001 - 1.2286009639501572e-001 - <_> - - <_> - - - - <_> - 16 8 2 1 -1. - <_> - 16 8 1 1 2. - 0 - -1.8132160184904933e-003 - 2.1865940093994141e-001 - -8.7909542024135590e-002 - <_> - - <_> - - - - <_> - 5 0 8 2 -1. - <_> - 5 1 8 1 2. - 0 - 1.4558799564838409e-002 - -7.1452066302299500e-002 - 2.0318900048732758e-001 - <_> - - <_> - - - - <_> - 17 2 1 6 -1. - <_> - 17 4 1 2 3. - 0 - -2.2111190482974052e-002 - -5.1411151885986328e-001 - 3.8326159119606018e-002 - <_> - - <_> - - - - <_> - 0 2 1 6 -1. - <_> - 0 4 1 2 3. - 0 - 1.2102689594030380e-002 - 3.4980859607458115e-002 - -3.5819360613822937e-001 - <_> - - <_> - - - - <_> - 10 9 4 3 -1. - <_> - 11 9 2 3 2. - 0 - -1.6234850510954857e-002 - -6.7572712898254395e-001 - 1.3337399810552597e-002 - <_> - - <_> - - - - <_> - 8 10 2 1 -1. - <_> - 9 10 1 1 2. - 0 - 1.2108719965908676e-004 - -9.7839273512363434e-002 - 1.3967449963092804e-001 - <_> - - <_> - - - - <_> - 10 9 4 3 -1. - <_> - 11 9 2 3 2. - 0 - 6.9925719872117043e-003 - 3.2864410430192947e-002 - -2.6933521032333374e-001 - <_> - - <_> - - - - <_> - 0 7 2 2 -1. - <_> - 0 7 1 1 2. - <_> - 1 8 1 1 2. - 0 - -1.1492669727886096e-004 - 1.5019279718399048e-001 - -9.2902913689613342e-002 - <_> - - <_> - - - - <_> - 15 4 2 6 -1. - <_> - 15 4 1 6 2. - 0 - -6.2735271640121937e-003 - 1.9764299690723419e-001 - -1.4036740362644196e-001 - <_> - - <_> - - - - <_> - 5 6 2 2 -1. - <_> - 5 6 1 1 2. - <_> - 6 7 1 1 2. - 0 - 3.4272519405931234e-003 - -5.6488610804080963e-002 - 2.3865149915218353e-001 - <_> - - <_> - - - - <_> - 12 6 2 2 -1. - <_> - 12 7 2 1 2. - 0 - 6.5099778585135937e-003 - -3.5633251070976257e-002 - 7.3461838066577911e-002 - <_> - - <_> - - - - <_> - 4 6 2 2 -1. - <_> - 4 7 2 1 2. - 0 - 4.3461588211357594e-003 - -1.1661099642515182e-001 - 1.2772659957408905e-001 - <_> - - <_> - - - - <_> - 11 6 7 3 -1. - <_> - 11 7 7 1 3. - 0 - -6.7506477236747742e-002 - -6.3980489969253540e-001 - 6.2549579888582230e-003 - <_> - - <_> - - - - <_> - 0 6 7 3 -1. - <_> - 0 7 7 1 3. - 0 - 2.7710430324077606e-002 - 3.0216189101338387e-002 - -4.6095389127731323e-001 - <_> - - <_> - - - - <_> - 9 0 2 3 -1. - <_> - 9 0 1 3 2. - 0 - 8.6712799966335297e-003 - 1.9897650927305222e-002 - -2.8020209074020386e-001 - <_> - - <_> - - - - <_> - 9 3 4 2 -1. - <_> - 9 3 4 1 2. - 1 - -3.3389169722795486e-002 - 3.4334081411361694e-001 - -3.8698211312294006e-002 - <_> - - <_> - - - - <_> - 15 4 2 6 -1. - <_> - 15 4 1 6 2. - 0 - -5.2936229854822159e-002 - -7.2460907697677612e-001 - 6.3011539168655872e-003 - <_> - - <_> - - - - <_> - 1 4 2 6 -1. - <_> - 2 4 1 6 2. - 0 - -4.5043029822409153e-003 - 9.2780143022537231e-002 - -1.4180530607700348e-001 - <_> - - <_> - - - - <_> - 14 0 4 4 -1. - <_> - 14 0 2 4 2. - 0 - -3.1233350746333599e-003 - 1.7233259975910187e-001 - -2.9970449209213257e-001 - <_> - - <_> - - - - <_> - 0 0 4 3 -1. - <_> - 2 0 2 3 2. - 0 - 6.6139260306954384e-003 - -9.9938079714775085e-002 - 1.9661809504032135e-001 - <_> - - <_> - - - - <_> - 16 0 2 3 -1. - <_> - 16 0 1 3 2. - 1 - -1.7207840457558632e-002 - -4.2743620276451111e-001 - 4.8802521079778671e-002 - <_> - - <_> - - - - <_> - 2 0 3 2 -1. - <_> - 2 0 3 1 2. - 1 - 2.2534899413585663e-002 - 3.0614370480179787e-002 - -5.1239258050918579e-001 - <_> - - <_> - - - - <_> - 12 2 6 3 -1. - <_> - 11 3 6 1 3. - 1 - 1.5610080212354660e-002 - -6.8048216402530670e-002 - 1.4999119937419891e-001 - <_> - - <_> - - - - <_> - 6 2 3 6 -1. - <_> - 7 3 1 6 3. - 1 - 2.0428750663995743e-002 - -5.9653080999851227e-002 - 2.4934889376163483e-001 - <_> - - <_> - - - - <_> - 11 11 4 1 -1. - <_> - 12 11 2 1 2. - 0 - 6.6278302110731602e-003 - 1.2023109942674637e-002 - -3.2418128848075867e-001 - <_> - - <_> - - - - <_> - 7 0 2 4 -1. - <_> - 8 0 1 4 2. - 0 - -1.1010710150003433e-002 - -4.1893360018730164e-001 - 3.2063160091638565e-002 - <_> - - <_> - - - - <_> - 10 5 2 2 -1. - <_> - 11 5 1 1 2. - <_> - 10 6 1 1 2. - 0 - -2.5190298911184072e-003 - 1.9416549801826477e-001 - -7.9592078924179077e-002 - <_> - - <_> - - - - <_> - 3 11 4 1 -1. - <_> - 4 11 2 1 2. - 0 - 4.5439349487423897e-003 - 2.7912829071283340e-002 - -4.7302699089050293e-001 - <_> - - <_> - - - - <_> - 11 11 2 1 -1. - <_> - 11 11 1 1 2. - 0 - -1.0793250112328678e-004 - 1.0455460101366043e-001 - -9.8342873156070709e-002 - <_> - - <_> - - - - <_> - 5 8 3 1 -1. - <_> - 6 9 1 1 3. - 1 - -1.1960390023887157e-002 - -5.5645018815994263e-001 - 2.4031320586800575e-002 - <_> - - <_> - - - - <_> - 14 4 3 1 -1. - <_> - 15 5 1 1 3. - 1 - -1.2221559882164001e-004 - 9.5023281872272491e-002 - -1.3685759902000427e-001 - <_> - - <_> - - - - <_> - 6 2 3 3 -1. - <_> - 7 3 1 3 3. - 1 - -2.0170589908957481e-002 - 1.6795089840888977e-001 - -7.6120890676975250e-002 - <_> - - <_> - - - - <_> - 12 4 3 8 -1. - <_> - 13 4 1 8 3. - 0 - -8.3070956170558929e-003 - 1.7039400339126587e-001 - -6.0343630611896515e-002 - <_> - - <_> - - - - <_> - 3 4 3 8 -1. - <_> - 4 4 1 8 3. - 0 - -3.4953389316797256e-002 - -6.3390421867370605e-001 - 2.3547450080513954e-002 - <_> - - <_> - - - - <_> - 9 0 4 6 -1. - <_> - 10 1 2 6 2. - 1 - -1.2870649993419647e-001 - -5.5947631597518921e-001 - 1.0227069724351168e-003 - <_> - - <_> - - - - <_> - 9 0 6 4 -1. - <_> - 8 1 6 2 2. - 1 - -5.2872750908136368e-002 - 2.0933540165424347e-001 - -6.2754176557064056e-002 - <_> - - <_> - - - - <_> - 13 4 3 1 -1. - <_> - 14 5 1 1 3. - 1 - 2.1988220512866974e-002 - -2.8742890805006027e-002 - 3.2623329758644104e-001 - <_> - - <_> - - - - <_> - 5 4 1 3 -1. - <_> - 4 5 1 1 3. - 1 - -2.7929820120334625e-002 - -8.0376791954040527e-001 - 1.8866369500756264e-002 - <_> - - <_> - - - - <_> - 13 0 3 2 -1. - <_> - 14 1 1 2 3. - 1 - 1.6517540439963341e-002 - 3.4300331026315689e-002 - -3.3194449543952942e-001 - <_> - - <_> - - - - <_> - 6 0 6 6 -1. - <_> - 6 2 6 2 3. - 0 - 1.2578460574150085e-001 - -6.5953016281127930e-002 - 2.7026090025901794e-001 - <_> - - <_> - - - - <_> - 17 9 1 2 -1. - <_> - 17 10 1 1 2. - 0 - 1.2017370318062603e-004 - -1.2451259791851044e-001 - 8.0808043479919434e-002 - <_> - - <_> - - - - <_> - 0 2 1 4 -1. - <_> - 0 3 1 2 2. - 0 - 3.7558379117399454e-003 - 4.6920169144868851e-002 - -2.4560800194740295e-001 - <_> - - <_> - - - - <_> - 17 4 1 4 -1. - <_> - 17 5 1 2 2. - 0 - -6.4232251606881618e-003 - -3.0731809139251709e-001 - 3.6565799266099930e-002 - <_> - - <_> - - - - <_> - 0 4 1 4 -1. - <_> - 0 5 1 2 2. - 0 - 3.4200940281152725e-003 - 4.0808930993080139e-002 - -2.8372159600257874e-001 - <_> - - <_> - - - - <_> - 13 5 1 2 -1. - <_> - 13 6 1 1 2. - 0 - -2.1825190633535385e-003 - 1.1226759850978851e-001 - -2.4832399562001228e-002 - <_> - - <_> - - - - <_> - 1 0 3 1 -1. - <_> - 2 1 1 1 3. - 1 - -5.2442201413214207e-003 - 1.9796860218048096e-001 - -6.2690652906894684e-002 - -1.6043150424957275e+000 - 10 - -1 - <_> - - - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -6.5449662506580353e-002 - 6.5984207391738892e-001 - -2.8083300590515137e-001 - <_> - - <_> - - - - <_> - 13 2 2 8 -1. - <_> - 13 4 2 4 2. - 0 - -5.5504930205643177e-003 - 1.3949079811573029e-001 - -1.9948430359363556e-001 - <_> - - <_> - - - - <_> - 1 3 6 6 -1. - <_> - 3 5 2 2 9. - 0 - -1.2023960053920746e-001 - 3.5877311229705811e-001 - -3.1004118919372559e-001 - <_> - - <_> - - - - <_> - 11 0 2 8 -1. - <_> - 9 2 2 4 2. - 1 - 2.0659500733017921e-002 - 2.4529699236154556e-002 - -1.6617469489574432e-001 - <_> - - <_> - - - - <_> - 7 0 8 2 -1. - <_> - 9 2 4 2 2. - 1 - -1.4058920741081238e-001 - 4.2553600668907166e-001 - -1.3463549315929413e-001 - <_> - - <_> - - - - <_> - 13 8 5 2 -1. - <_> - 13 9 5 1 2. - 0 - 1.3962809462100267e-003 - -1.6868929564952850e-001 - 4.4305529445409775e-002 - <_> - - <_> - - - - <_> - 0 8 5 2 -1. - <_> - 0 9 5 1 2. - 0 - 9.3446177197620273e-004 - -4.8740088939666748e-001 - 9.9577173590660095e-002 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - 0 - -3.8250170648097992e-002 - 2.6871618628501892e-001 - -1.5085490047931671e-001 - <_> - - <_> - - - - <_> - 4 5 4 2 -1. - <_> - 4 5 2 1 2. - <_> - 6 6 2 1 2. - 0 - 1.1073240078985691e-002 - -9.0580292046070099e-002 - 3.9891949295997620e-001 - <_> - - <_> - - - - <_> - 7 0 6 4 -1. - <_> - 9 0 2 4 3. - 0 - -3.4222271293401718e-002 - -5.4190230369567871e-001 - 5.8256920427083969e-002 - <_> - - <_> - - - - <_> - 7 0 4 3 -1. - <_> - 9 0 2 3 2. - 0 - -1.6340370057150722e-003 - 1.5135709941387177e-001 - -2.5593858957290649e-001 - <_> - - <_> - - - - <_> - 17 0 1 12 -1. - <_> - 17 6 1 6 2. - 0 - 5.6902751326560974e-002 - 2.4959880858659744e-002 - -2.5529161095619202e-001 - <_> - - <_> - - - - <_> - 0 0 1 12 -1. - <_> - 0 6 1 6 2. - 0 - 5.4659740999341011e-003 - -2.6191771030426025e-001 - 1.2557169795036316e-001 - <_> - - <_> - - - - <_> - 11 6 2 2 -1. - <_> - 12 6 1 1 2. - <_> - 11 7 1 1 2. - 0 - 3.7860060110688210e-003 - -9.2318423092365265e-002 - 3.1680619716644287e-001 - <_> - - <_> - - - - <_> - 4 10 10 2 -1. - <_> - 4 11 10 1 2. - 0 - 6.2198941595852375e-003 - -2.4663870036602020e-001 - 1.0715399682521820e-001 - <_> - - <_> - - - - <_> - 11 6 2 2 -1. - <_> - 12 6 1 1 2. - <_> - 11 7 1 1 2. - 0 - -3.3108259085565805e-003 - 2.6593479514122009e-001 - -4.2567960917949677e-002 - <_> - - <_> - - - - <_> - 9 1 6 2 -1. - <_> - 11 3 2 2 3. - 1 - -2.4268100038170815e-002 - 7.8301817178726196e-002 - -3.3432251214981079e-001 - <_> - - <_> - - - - <_> - 17 8 1 4 -1. - <_> - 17 9 1 2 2. - 0 - 4.4654891826212406e-003 - 4.4951941817998886e-002 - -3.6068201065063477e-001 - <_> - - <_> - - - - <_> - 0 8 1 4 -1. - <_> - 0 9 1 2 2. - 0 - 5.0136880017817020e-003 - 4.8014611005783081e-002 - -4.8307308554649353e-001 - <_> - - <_> - - - - <_> - 10 6 3 1 -1. - <_> - 11 6 1 1 3. - 0 - -3.6905671004205942e-003 - 2.3733210563659668e-001 - -7.7101498842239380e-002 - <_> - - <_> - - - - <_> - 4 4 2 4 -1. - <_> - 4 6 2 2 2. - 0 - 2.6699999347329140e-002 - -7.0286177098751068e-002 - 3.1604859232902527e-001 - <_> - - <_> - - - - <_> - 13 5 1 2 -1. - <_> - 13 5 1 1 2. - 1 - -1.4216369949281216e-002 - 1.9163979589939117e-001 - -1.4565619640052319e-002 - <_> - - <_> - - - - <_> - 5 5 2 1 -1. - <_> - 5 5 1 1 2. - 1 - 4.9798311665654182e-003 - -9.3808017671108246e-002 - 3.3386421203613281e-001 - <_> - - <_> - - - - <_> - 8 0 4 4 -1. - <_> - 9 0 2 4 2. - 0 - 1.0780889540910721e-002 - 4.4129341840744019e-002 - -3.5146710276603699e-001 - <_> - - <_> - - - - <_> - 6 9 4 3 -1. - <_> - 7 9 2 3 2. - 0 - -8.0803576856851578e-003 - -4.5045539736747742e-001 - 4.2515419423580170e-002 - <_> - - <_> - - - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - 0 - -6.2959468923509121e-003 - -5.0585079193115234e-001 - 2.6853339746594429e-002 - <_> - - <_> - - - - <_> - 0 6 1 4 -1. - <_> - 0 7 1 2 2. - 0 - 4.2930860072374344e-003 - 4.4392760843038559e-002 - -4.2409139871597290e-001 - <_> - - <_> - - - - <_> - 6 0 6 4 -1. - <_> - 6 1 6 2 2. - 0 - -3.6001540720462799e-002 - 3.6739090085029602e-001 - -5.6275039911270142e-002 - <_> - - <_> - - - - <_> - 2 4 2 7 -1. - <_> - 3 4 1 7 2. - 0 - -3.6325119435787201e-003 - 1.0696999728679657e-001 - -1.7666119337081909e-001 - <_> - - <_> - - - - <_> - 6 6 6 1 -1. - <_> - 8 6 2 1 3. - 0 - -7.6885600574314594e-003 - 1.3644680380821228e-001 - -1.4830610156059265e-001 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -6.5619632601737976e-002 - -3.6476480960845947e-001 - 5.2671018987894058e-002 - <_> - - <_> - - - - <_> - 10 4 3 2 -1. - <_> - 11 5 1 2 3. - 1 - -1.3787600211799145e-002 - 1.4529299736022949e-001 - -1.4805309474468231e-001 - <_> - - <_> - - - - <_> - 4 1 9 6 -1. - <_> - 4 3 9 2 3. - 0 - -1.6259980201721191e-001 - 3.4896880388259888e-001 - -7.1005232632160187e-002 - <_> - - <_> - - - - <_> - 10 4 3 2 -1. - <_> - 11 5 1 2 3. - 1 - -9.7861498594284058e-002 - -6.8113172054290771e-001 - 6.0920282267034054e-003 - <_> - - <_> - - - - <_> - 8 4 2 3 -1. - <_> - 7 5 2 1 3. - 1 - -1.5198419801890850e-002 - 2.3462030291557312e-001 - -1.0035049915313721e-001 - <_> - - <_> - - - - <_> - 1 9 17 2 -1. - <_> - 1 10 17 1 2. - 0 - 9.0543217957019806e-003 - -2.2936539351940155e-001 - 7.7951073646545410e-002 - <_> - - <_> - - - - <_> - 6 11 6 1 -1. - <_> - 8 11 2 1 3. - 0 - 7.3727401904761791e-003 - 3.9879500865936279e-002 - -4.8354309797286987e-001 - <_> - - <_> - - - - <_> - 8 4 3 3 -1. - <_> - 9 5 1 1 9. - 0 - -1.8954079598188400e-002 - 9.6944183111190796e-002 - -5.5643040686845779e-002 - <_> - - <_> - - - - <_> - 7 0 3 5 -1. - <_> - 8 0 1 5 3. - 0 - 1.2283699586987495e-002 - 4.3389499187469482e-002 - -4.2138868570327759e-001 - <_> - - <_> - - - - <_> - 15 5 3 3 -1. - <_> - 15 6 3 1 3. - 0 - -1.8302969634532928e-002 - -4.2719489336013794e-001 - 2.2162979468703270e-002 - <_> - - <_> - - - - <_> - 1 0 15 6 -1. - <_> - 6 2 5 2 9. - 0 - 4.3101060390472412e-001 - -5.1615860313177109e-002 - 3.4026700258255005e-001 - <_> - - <_> - - - - <_> - 8 5 3 2 -1. - <_> - 9 5 1 2 3. - 0 - 1.1051310226321220e-002 - -2.4313559755682945e-002 - 3.2357591390609741e-001 - <_> - - <_> - - - - <_> - 0 1 14 11 -1. - <_> - 7 1 7 11 2. - 0 - -4.4691780209541321e-001 - 2.7657490968704224e-001 - -6.6980779170989990e-002 - <_> - - <_> - - - - <_> - 14 3 3 6 -1. - <_> - 14 3 3 3 2. - 1 - 5.9630710631608963e-002 - 2.8453519567847252e-002 - -3.4650930762290955e-001 - <_> - - <_> - - - - <_> - 0 1 14 11 -1. - <_> - 7 1 7 11 2. - 0 - 2.0880649983882904e-001 - -4.9901269376277924e-002 - 3.6606788635253906e-001 - <_> - - <_> - - - - <_> - 16 4 2 8 -1. - <_> - 17 4 1 4 2. - <_> - 16 8 1 4 2. - 0 - 5.6081339716911316e-003 - -7.8487291932106018e-002 - 1.3186110556125641e-001 - <_> - - <_> - - - - <_> - 3 1 4 3 -1. - <_> - 4 2 2 3 2. - 1 - -5.5167000740766525e-002 - 5.1011168956756592e-001 - -3.3664189279079437e-002 - <_> - - <_> - - - - <_> - 12 3 3 3 -1. - <_> - 11 4 3 1 3. - 1 - 1.1171470396220684e-002 - -3.7235900759696960e-002 - 1.1104430258274078e-001 - <_> - - <_> - - - - <_> - 7 5 2 3 -1. - <_> - 6 6 2 1 3. - 1 - -1.5330309979617596e-002 - 2.4683140218257904e-001 - -7.2548203170299530e-002 - <_> - - <_> - - - - <_> - 3 4 12 3 -1. - <_> - 6 4 6 3 2. - 0 - -3.9592171087861061e-003 - 7.2863176465034485e-002 - -2.8057581186294556e-001 - <_> - - <_> - - - - <_> - 0 5 3 3 -1. - <_> - 0 6 3 1 3. - 0 - 8.4626460447907448e-003 - 3.6698680371046066e-002 - -3.9774340391159058e-001 - <_> - - <_> - - - - <_> - 7 3 5 2 -1. - <_> - 7 4 5 1 2. - 0 - 1.6352999955415726e-002 - -3.7106141448020935e-002 - 4.3486309051513672e-001 - <_> - - <_> - - - - <_> - 5 4 3 2 -1. - <_> - 6 5 1 2 3. - 1 - -2.0322609692811966e-002 - 1.9888140261173248e-001 - -8.6129508912563324e-002 - <_> - - <_> - - - - <_> - 11 11 2 1 -1. - <_> - 11 11 1 1 2. - 0 - -9.3476366600953043e-005 - 8.8922351598739624e-002 - -8.2700327038764954e-002 - <_> - - <_> - - - - <_> - 5 5 3 3 -1. - <_> - 6 6 1 3 3. - 1 - 9.6907848492264748e-003 - -8.2258842885494232e-002 - 1.9518549740314484e-001 - <_> - - <_> - - - - <_> - 11 0 4 5 -1. - <_> - 12 0 2 5 2. - 0 - 7.2766090743243694e-003 - 5.5776178836822510e-002 - -2.9502439498901367e-001 - <_> - - <_> - - - - <_> - 5 11 2 1 -1. - <_> - 6 11 1 1 2. - 0 - -1.1845510016428307e-004 - 1.2008129805326462e-001 - -1.3027560710906982e-001 - <_> - - <_> - - - - <_> - 11 0 4 4 -1. - <_> - 12 0 2 4 2. - 0 - -1.1836069636046886e-002 - -3.0786681175231934e-001 - 5.2134670317173004e-002 - <_> - - <_> - - - - <_> - 0 11 10 1 -1. - <_> - 5 11 5 1 2. - 0 - 1.1582080274820328e-002 - -6.4603932201862335e-002 - 2.4226869642734528e-001 - <_> - - <_> - - - - <_> - 12 7 2 3 -1. - <_> - 11 8 2 1 3. - 1 - 1.6641300171613693e-002 - 2.3613739758729935e-002 - -3.2030880451202393e-001 - <_> - - <_> - - - - <_> - 6 7 3 2 -1. - <_> - 7 8 1 2 3. - 1 - -1.4670539647340775e-002 - -4.1521430015563965e-001 - 3.6382548511028290e-002 - <_> - - <_> - - - - <_> - 7 0 6 8 -1. - <_> - 10 0 3 4 2. - <_> - 7 4 3 4 2. - 0 - -7.1266278624534607e-002 - 8.8978268206119537e-002 - -2.7521649375557899e-002 - <_> - - <_> - - - - <_> - 5 0 6 8 -1. - <_> - 5 0 3 4 2. - <_> - 8 4 3 4 2. - 0 - -4.5930789783596992e-003 - 1.0312590003013611e-001 - -1.5684939920902252e-001 - <_> - - <_> - - - - <_> - 13 2 4 1 -1. - <_> - 14 3 2 1 2. - 1 - -2.1038690581917763e-002 - -4.1231220960617065e-001 - 2.6362419128417969e-002 - <_> - - <_> - - - - <_> - 5 2 1 4 -1. - <_> - 4 3 1 2 2. - 1 - -1.1634599650278687e-004 - 8.8270559906959534e-002 - -1.7683100700378418e-001 - <_> - - <_> - - - - <_> - 13 3 2 1 -1. - <_> - 13 3 1 1 2. - 1 - 1.0351010132580996e-004 - -4.0812540799379349e-002 - 4.4485118240118027e-002 - <_> - - <_> - - - - <_> - 5 3 1 2 -1. - <_> - 5 3 1 1 2. - 1 - 1.1750919744372368e-002 - 3.7474468350410461e-002 - -4.4839090108871460e-001 - <_> - - <_> - - - - <_> - 7 1 5 2 -1. - <_> - 7 2 5 1 2. - 0 - 1.6365600749850273e-002 - -5.3337760269641876e-002 - 2.3957200348377228e-001 - <_> - - <_> - - - - <_> - 3 0 4 5 -1. - <_> - 4 0 2 5 2. - 0 - -1.4152539893984795e-002 - -3.4904539585113525e-001 - 4.0583450347185135e-002 - <_> - - <_> - - - - <_> - 5 0 8 3 -1. - <_> - 5 1 8 1 3. - 0 - 1.8640389665961266e-002 - -7.8919850289821625e-002 - 1.7504720389842987e-001 - <_> - - <_> - - - - <_> - 4 0 2 2 -1. - <_> - 4 0 2 1 2. - 1 - 1.7988409847021103e-002 - 3.3721260726451874e-002 - -4.2088210582733154e-001 - <_> - - <_> - - - - <_> - 6 0 8 2 -1. - <_> - 6 1 8 1 2. - 0 - -1.4597839675843716e-002 - 1.7850220203399658e-001 - -7.9207688570022583e-002 - <_> - - <_> - - - - <_> - 6 6 2 3 -1. - <_> - 5 7 2 1 3. - 1 - -1.1776429601013660e-002 - 2.0177559554576874e-001 - -6.4572930335998535e-002 - <_> - - <_> - - - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - 0 - -3.0500749126076698e-003 - 1.7109319567680359e-001 - -8.1359818577766418e-002 - <_> - - <_> - - - - <_> - 2 0 4 9 -1. - <_> - 3 0 2 9 2. - 0 - -5.5906981229782104e-002 - -6.9485092163085938e-001 - 1.9316319376230240e-002 - <_> - - <_> - - - - <_> - 0 11 18 1 -1. - <_> - 0 11 9 1 2. - 0 - 8.7083891034126282e-002 - 1.9366340711712837e-002 - -5.7769888639450073e-001 - <_> - - <_> - - - - <_> - 0 3 2 5 -1. - <_> - 1 3 1 5 2. - 0 - -4.5398990623652935e-003 - 1.1768320202827454e-001 - -1.1205779761075974e-001 - <_> - - <_> - - - - <_> - 16 7 2 2 -1. - <_> - 16 7 1 2 2. - 1 - -1.5185469761490822e-002 - 1.2016219645738602e-001 - -4.3419301509857178e-002 - <_> - - <_> - - - - <_> - 2 7 2 2 -1. - <_> - 2 7 2 1 2. - 1 - 7.1984431706368923e-003 - -3.5740990191698074e-002 - 3.8612338900566101e-001 - <_> - - <_> - - - - <_> - 14 10 1 2 -1. - <_> - 14 11 1 1 2. - 0 - 1.0633750207489356e-004 - -1.0959289968013763e-001 - 5.4616861045360565e-002 - <_> - - <_> - - - - <_> - 1 8 12 3 -1. - <_> - 5 8 4 3 3. - 0 - -1.0189989954233170e-001 - -4.9526950716972351e-001 - 2.5969929993152618e-002 - <_> - - <_> - - - - <_> - 14 10 1 2 -1. - <_> - 14 11 1 1 2. - 0 - -1.2038920249324292e-004 - 1.2273380160331726e-001 - -4.1162900626659393e-002 - <_> - - <_> - - - - <_> - 3 10 1 2 -1. - <_> - 3 11 1 1 2. - 0 - 1.0814509732881561e-004 - -1.6402480006217957e-001 - 8.0438762903213501e-002 - <_> - - <_> - - - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - 0 - 1.0482760146260262e-002 - 3.9343621581792831e-002 - -2.6814600825309753e-001 - <_> - - <_> - - - - <_> - 0 9 3 3 -1. - <_> - 0 10 3 1 3. - 0 - -7.9093724489212036e-003 - -4.1322740912437439e-001 - 3.0046500265598297e-002 - <_> - - <_> - - - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - 0 - 1.3081150129437447e-002 - -3.3539541065692902e-002 - 2.3053109645843506e-001 - <_> - - <_> - - - - <_> - 4 4 1 3 -1. - <_> - 3 5 1 1 3. - 1 - -1.9690599292516708e-002 - -5.0715428590774536e-001 - 2.3815410211682320e-002 - <_> - - <_> - - - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - 0 - -1.0433509945869446e-002 - 1.2601679563522339e-001 - -1.9142389297485352e-002 - <_> - - <_> - - - - <_> - 6 0 4 1 -1. - <_> - 7 0 2 1 2. - 0 - 6.1845351010560989e-003 - 2.4645360186696053e-002 - -5.0535571575164795e-001 - <_> - - <_> - - - - <_> - 14 11 4 1 -1. - <_> - 15 11 2 1 2. - 0 - -2.0149839110672474e-003 - 1.5200349688529968e-001 - -5.0570148974657059e-002 - <_> - - <_> - - - - <_> - 0 11 4 1 -1. - <_> - 1 11 2 1 2. - 0 - 1.0860039765248075e-004 - -1.1278349906206131e-001 - 1.1125960201025009e-001 - <_> - - <_> - - - - <_> - 9 11 3 1 -1. - <_> - 10 11 1 1 3. - 0 - -8.9575027232058346e-005 - 1.1708500236272812e-001 - -1.0333900153636932e-001 - <_> - - <_> - - - - <_> - 6 11 3 1 -1. - <_> - 7 11 1 1 3. - 0 - 5.3389421664178371e-003 - 1.8005790188908577e-002 - -7.1671330928802490e-001 - <_> - - <_> - - - - <_> - 7 0 6 1 -1. - <_> - 9 0 2 1 3. - 0 - 1.1697039939463139e-002 - 1.3067330233752728e-002 - -2.3360380530357361e-001 - <_> - - <_> - - - - <_> - 1 0 15 2 -1. - <_> - 6 0 5 2 3. - 0 - 3.2932709902524948e-002 - -7.0233866572380066e-002 - 1.7548230290412903e-001 - <_> - - <_> - - - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - 0 - -4.5324359089136124e-002 - -8.2326531410217285e-001 - 3.6954008974134922e-003 - <_> - - <_> - - - - <_> - 5 6 3 2 -1. - <_> - 6 6 1 2 3. - 0 - -3.7475579883903265e-003 - 1.8588210642337799e-001 - -6.2639318406581879e-002 - <_> - - <_> - - - - <_> - 12 0 3 3 -1. - <_> - 13 1 1 3 3. - 1 - -3.2647240906953812e-002 - -2.0567889511585236e-001 - 1.8942670896649361e-002 - <_> - - <_> - - - - <_> - 6 5 3 2 -1. - <_> - 7 6 1 2 3. - 1 - 1.1062870034947991e-003 - -1.0367350280284882e-001 - 1.1428149789571762e-001 - <_> - - <_> - - - - <_> - 10 5 6 2 -1. - <_> - 13 5 3 1 2. - <_> - 10 6 3 1 2. - 0 - 5.4914089851081371e-003 - -3.9914030581712723e-002 - 7.6856799423694611e-002 - <_> - - <_> - - - - <_> - 2 5 6 2 -1. - <_> - 2 5 3 1 2. - <_> - 5 6 3 1 2. - 0 - -8.2964627072215080e-003 - 2.3060120642185211e-001 - -6.2546901404857635e-002 - <_> - - <_> - - - - <_> - 14 3 3 6 -1. - <_> - 14 3 3 3 2. - 1 - 3.8128688931465149e-002 - 1.9407819956541061e-002 - -1.4901480078697205e-001 - <_> - - <_> - - - - <_> - 4 3 6 3 -1. - <_> - 4 3 3 3 2. - 1 - -1.4787280559539795e-001 - -3.2149869203567505e-001 - 3.7092790007591248e-002 - <_> - - <_> - - - - <_> - 12 0 3 3 -1. - <_> - 13 1 1 3 3. - 1 - 6.4178421162068844e-003 - 3.7069149315357208e-002 - -9.5326058566570282e-002 - <_> - - <_> - - - - <_> - 5 4 2 2 -1. - <_> - 5 5 2 1 2. - 0 - -3.7382061127573252e-003 - 1.1806769669055939e-001 - -9.5922879874706268e-002 - <_> - - <_> - - - - <_> - 11 3 2 2 -1. - <_> - 11 3 1 2 2. - 1 - -2.5352180004119873e-002 - 2.7664989233016968e-001 - -1.6709599643945694e-002 - <_> - - <_> - - - - <_> - 7 3 2 2 -1. - <_> - 7 3 2 1 2. - 1 - 2.7535870671272278e-002 - 2.2979779168963432e-002 - -5.0430482625961304e-001 - <_> - - <_> - - - - <_> - 15 7 1 4 -1. - <_> - 15 8 1 2 2. - 0 - -7.9183047637343407e-003 - -3.1630870699882507e-001 - 1.2571889907121658e-002 - <_> - - <_> - - - - <_> - 2 7 1 4 -1. - <_> - 2 8 1 2 2. - 0 - 1.0292990191373974e-004 - -1.1330749839544296e-001 - 9.1955177485942841e-002 - <_> - - <_> - - - - <_> - 15 9 2 2 -1. - <_> - 16 9 1 1 2. - <_> - 15 10 1 1 2. - 0 - 9.0557747171260417e-005 - -6.9846302270889282e-002 - 7.2148926556110382e-002 - <_> - - <_> - - - - <_> - 1 9 2 2 -1. - <_> - 1 9 1 1 2. - <_> - 2 10 1 1 2. - 0 - 1.1734660074580461e-004 - -1.1082249879837036e-001 - 1.0122229903936386e-001 - <_> - - <_> - - - - <_> - 15 9 2 2 -1. - <_> - 16 9 1 1 2. - <_> - 15 10 1 1 2. - 0 - -1.1783619993366301e-004 - 1.4102859795093536e-001 - -9.9544271826744080e-002 - <_> - - <_> - - - - <_> - 0 3 3 3 -1. - <_> - 0 4 3 1 3. - 0 - -1.4811719767749310e-002 - -4.0603488683700562e-001 - 2.6852559298276901e-002 - <_> - - <_> - - - - <_> - 15 9 2 2 -1. - <_> - 16 9 1 1 2. - <_> - 15 10 1 1 2. - 0 - 8.3802377048414201e-005 - -9.3584023416042328e-002 - 9.4989858567714691e-002 - <_> - - <_> - - - - <_> - 1 9 2 2 -1. - <_> - 1 9 1 1 2. - <_> - 2 10 1 1 2. - 0 - -9.0464636741671711e-005 - 1.3583730161190033e-001 - -8.0927208065986633e-002 - <_> - - <_> - - - - <_> - 0 0 18 3 -1. - <_> - 6 0 6 3 3. - 0 - -6.3471987843513489e-002 - 1.2211640179157257e-001 - -8.2948893308639526e-002 - <_> - - <_> - - - - <_> - 3 3 12 3 -1. - <_> - 3 4 12 1 3. - 0 - -5.0417210906744003e-002 - 2.3326510190963745e-001 - -5.5467769503593445e-002 - <_> - - <_> - - - - <_> - 7 3 5 3 -1. - <_> - 7 4 5 1 3. - 0 - 2.5994319468736649e-002 - -4.3605301529169083e-002 - 2.7403908967971802e-001 - <_> - - <_> - - - - <_> - 5 0 2 5 -1. - <_> - 6 0 1 5 2. - 0 - -1.2084789574146271e-002 - -3.1832659244537354e-001 - 3.7234660238027573e-002 - <_> - - <_> - - - - <_> - 5 9 12 2 -1. - <_> - 5 9 6 2 2. - 0 - 1.7179569229483604e-002 - -6.3782699406147003e-002 - 1.1758829653263092e-001 - <_> - - <_> - - - - <_> - 0 5 7 3 -1. - <_> - 0 6 7 1 3. - 0 - -5.8567680418491364e-002 - -5.9245938062667847e-001 - 1.9378069788217545e-002 - <_> - - <_> - - - - <_> - 11 5 2 4 -1. - <_> - 12 5 1 2 2. - <_> - 11 7 1 2 2. - 0 - -8.1442911177873611e-003 - 1.8517829477787018e-001 - -2.3492490872740746e-002 - <_> - - <_> - - - - <_> - 8 8 2 4 -1. - <_> - 8 8 1 2 2. - <_> - 9 10 1 2 2. - 0 - 8.7976995855569839e-003 - 2.1573910489678383e-002 - -5.3710401058197021e-001 - <_> - - <_> - - - - <_> - 11 5 2 4 -1. - <_> - 12 5 1 2 2. - <_> - 11 7 1 2 2. - 0 - 5.8270487934350967e-003 - -3.1742990016937256e-002 - 7.7318146824836731e-002 - <_> - - <_> - - - - <_> - 5 5 2 4 -1. - <_> - 5 5 1 2 2. - <_> - 6 7 1 2 2. - 0 - 4.2799380607903004e-003 - -6.8623512983322144e-002 - 1.5985569357872009e-001 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 6 10 6 2 3. - 0 - -4.7798909246921539e-002 - 1.6202180087566376e-001 - -7.1953997015953064e-002 - <_> - - <_> - - - - <_> - 0 0 6 8 -1. - <_> - 0 4 6 4 2. - 0 - 1.5101620554924011e-001 - 2.1610440686345100e-002 - -5.1186197996139526e-001 - <_> - - <_> - - - - <_> - 17 10 1 2 -1. - <_> - 17 11 1 1 2. - 0 - 1.3851689873263240e-003 - 5.1120720803737640e-002 - -1.0381700098514557e-001 - <_> - - <_> - - - - <_> - 0 10 1 2 -1. - <_> - 0 11 1 1 2. - 0 - -1.0411830153316259e-003 - -2.4396219849586487e-001 - 4.4499509036540985e-002 - <_> - - <_> - - - - <_> - 13 6 4 6 -1. - <_> - 15 6 2 3 2. - <_> - 13 9 2 3 2. - 0 - -1.3037609867751598e-002 - 1.8388019502162933e-001 - -5.6118920445442200e-002 - <_> - - <_> - - - - <_> - 4 6 10 6 -1. - <_> - 4 9 10 3 2. - 0 - -1.9242310896515846e-002 - -6.6036051511764526e-001 - 1.8416849896311760e-002 - <_> - - <_> - - - - <_> - 12 2 6 4 -1. - <_> - 12 2 3 4 2. - 0 - -2.0210029557347298e-002 - 8.8172823190689087e-002 - -1.2076240032911301e-001 - <_> - - <_> - - - - <_> - 0 3 18 1 -1. - <_> - 6 3 6 1 3. - 0 - 3.0882719904184341e-002 - -5.6851759552955627e-002 - 2.4138830602169037e-001 - -1.6223280429840088e+000 - 11 - -1 - <_> - - - <_> - - <_> - - - - <_> - 4 6 2 2 -1. - <_> - 5 6 1 2 2. - 0 - 6.2742438167333603e-003 - -3.5164728760719299e-001 - 6.6317689418792725e-001 - <_> - - <_> - - - - <_> - 5 2 10 6 -1. - <_> - 5 4 10 2 3. - 0 - -1.5394939482212067e-001 - 3.9916568994522095e-001 - -2.2923450171947479e-001 - <_> - - <_> - - - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - 0 - -2.3952860385179520e-002 - 3.0574640631675720e-001 - -2.3735469579696655e-001 - <_> - - <_> - - - - <_> - 11 5 7 6 -1. - <_> - 11 8 7 3 2. - 0 - 2.6925180107355118e-002 - -2.9053428769111633e-001 - 6.1234891414642334e-002 - <_> - - <_> - - - - <_> - 3 3 12 3 -1. - <_> - 6 3 6 3 2. - 0 - 2.4537709355354309e-001 - -1.2837280519306660e-003 - -9.9616601562500000e+002 - <_> - - <_> - - - - <_> - 10 4 6 3 -1. - <_> - 10 5 6 1 3. - 0 - -1.7590580508112907e-002 - 8.4333486855030060e-002 - -4.2432200163602829e-002 - <_> - - <_> - - - - <_> - 7 5 1 3 -1. - <_> - 6 6 1 1 3. - 1 - -6.7204791121184826e-003 - 2.9420810937881470e-001 - -1.7958919703960419e-001 - <_> - - <_> - - - - <_> - 3 2 15 6 -1. - <_> - 3 4 15 2 3. - 0 - -1.0374490171670914e-001 - 4.9512971192598343e-002 - -6.5407678484916687e-002 - <_> - - <_> - - - - <_> - 0 4 4 6 -1. - <_> - 2 4 2 6 2. - 0 - -2.3250220343470573e-002 - 1.6588999330997467e-001 - -2.5045189261436462e-001 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - -3.7479000166058540e-003 - 2.8132739663124084e-001 - -5.3847521543502808e-002 - <_> - - <_> - - - - <_> - 5 6 3 1 -1. - <_> - 6 6 1 1 3. - 0 - -2.5907990057021379e-003 - 2.8163778781890869e-001 - -1.1151909828186035e-001 - <_> - - <_> - - - - <_> - 15 2 3 10 -1. - <_> - 15 7 3 5 2. - 0 - 1.4214930124580860e-002 - -1.9974599778652191e-001 - 7.9408131539821625e-002 - <_> - - <_> - - - - <_> - 9 4 2 3 -1. - <_> - 8 5 2 1 3. - 1 - -2.7745040133595467e-002 - 3.2554331421852112e-001 - -8.1984512507915497e-002 - <_> - - <_> - - - - <_> - 12 6 2 2 -1. - <_> - 12 6 1 2 2. - 0 - 4.1590719483792782e-003 - -1.0548809915781021e-001 - 2.7419880032539368e-001 - <_> - - <_> - - - - <_> - 4 6 2 2 -1. - <_> - 5 6 1 2 2. - 0 - 6.2689487822353840e-003 - 1.1671839654445648e-001 - -4.6409261226654053e-001 - <_> - - <_> - - - - <_> - 9 4 4 2 -1. - <_> - 9 5 4 1 2. - 0 - 1.3945819810032845e-002 - -3.6791551858186722e-002 - 3.2415330410003662e-001 - <_> - - <_> - - - - <_> - 0 1 12 11 -1. - <_> - 4 1 4 11 3. - 0 - -2.2212809324264526e-001 - -5.3910827636718750e-001 - 5.5958230048418045e-002 - <_> - - <_> - - - - <_> - 9 2 3 7 -1. - <_> - 10 3 1 7 3. - 1 - -2.3864409886300564e-003 - -7.8881077468395233e-002 - 9.0365253388881683e-002 - <_> - - <_> - - - - <_> - 9 2 7 3 -1. - <_> - 8 3 7 1 3. - 1 - -3.1010150909423828e-002 - 1.8916240334510803e-001 - -1.3666459918022156e-001 - <_> - - <_> - - - - <_> - 12 9 2 1 -1. - <_> - 12 9 1 1 2. - 1 - -1.5247239498421550e-003 - 7.9918026924133301e-002 - -1.2402609735727310e-001 - <_> - - <_> - - - - <_> - 0 8 3 4 -1. - <_> - 0 9 3 2 2. - 0 - -4.4612451456487179e-003 - -3.5095998644828796e-001 - 6.1154339462518692e-002 - <_> - - <_> - - - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - 0 - -3.6754929460585117e-003 - -3.6432039737701416e-001 - 3.5381581634283066e-002 - <_> - - <_> - - - - <_> - 0 10 3 2 -1. - <_> - 0 11 3 1 2. - 0 - -3.1164109241217375e-003 - -4.8517960309982300e-001 - 4.2554508894681931e-002 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - 0 - -2.4400090798735619e-002 - 1.5710610151290894e-001 - -1.2803450226783752e-001 - <_> - - <_> - - - - <_> - 5 0 6 4 -1. - <_> - 7 0 2 4 3. - 0 - -3.1188679859042168e-002 - -5.2750992774963379e-001 - 3.5487588495016098e-002 - <_> - - <_> - - - - <_> - 9 1 2 4 -1. - <_> - 9 2 2 2 2. - 0 - -1.3291889801621437e-002 - 2.8033518791198730e-001 - -3.7135049700737000e-002 - <_> - - <_> - - - - <_> - 0 4 18 4 -1. - <_> - 6 4 6 4 3. - 0 - -1.0183650255203247e-001 - 8.5829548537731171e-002 - -2.5175920128822327e-001 - <_> - - <_> - - - - <_> - 12 3 3 6 -1. - <_> - 13 3 1 6 3. - 0 - 2.4131929501891136e-002 - -5.3279381245374680e-002 - 3.5114678740501404e-001 - <_> - - <_> - - - - <_> - 3 3 3 6 -1. - <_> - 4 3 1 6 3. - 0 - -1.0242820280836895e-004 - 1.2026040256023407e-001 - -1.6874420642852783e-001 - <_> - - <_> - - - - <_> - 14 1 2 4 -1. - <_> - 13 2 2 2 2. - 1 - -2.9411478899419308e-003 - -1.2087970227003098e-001 - 8.8245153427124023e-002 - <_> - - <_> - - - - <_> - 6 0 5 4 -1. - <_> - 6 1 5 2 2. - 0 - -2.4746619164943695e-002 - 3.2455161213874817e-001 - -5.1918510347604752e-002 - <_> - - <_> - - - - <_> - 8 0 7 4 -1. - <_> - 8 1 7 2 2. - 0 - 1.8161980435252190e-002 - -9.7702257335186005e-002 - 1.5214580297470093e-001 - <_> - - <_> - - - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - 0 - -7.9903062433004379e-003 - -4.3365329504013062e-001 - 3.9535731077194214e-002 - <_> - - <_> - - - - <_> - 3 1 12 2 -1. - <_> - 3 1 6 2 2. - 0 - 1.8511410802602768e-002 - -1.3791340589523315e-001 - 1.2306600064039230e-001 - <_> - - <_> - - - - <_> - 0 0 16 12 -1. - <_> - 8 0 8 12 2. - 0 - 1.8645690381526947e-001 - -7.2554931044578552e-002 - 3.1433451175689697e-001 - <_> - - <_> - - - - <_> - 9 3 3 2 -1. - <_> - 9 4 3 1 2. - 0 - 9.2281810939311981e-003 - -1.0550970211625099e-002 - 1.6694310307502747e-001 - <_> - - <_> - - - - <_> - 8 0 2 4 -1. - <_> - 9 0 1 4 2. - 0 - -9.0786498039960861e-003 - -3.6311098933219910e-001 - 4.1659221053123474e-002 - <_> - - <_> - - - - <_> - 12 9 2 1 -1. - <_> - 12 9 1 1 2. - 1 - -1.7083000391721725e-002 - -3.8664668798446655e-001 - 6.8237301893532276e-003 - <_> - - <_> - - - - <_> - 6 9 1 2 -1. - <_> - 6 9 1 1 2. - 1 - -7.1345129981637001e-004 - 7.3019772768020630e-002 - -2.0337800681591034e-001 - <_> - - <_> - - - - <_> - 9 5 3 1 -1. - <_> - 10 6 1 1 3. - 1 - -7.2595099918544292e-003 - 7.5123466551303864e-002 - -7.3528602719306946e-002 - <_> - - <_> - - - - <_> - 4 1 4 2 -1. - <_> - 5 2 2 2 2. - 1 - 1.2274079956114292e-002 - -9.0814672410488129e-002 - 1.5959280729293823e-001 - <_> - - <_> - - - - <_> - 10 3 4 4 -1. - <_> - 10 5 4 2 2. - 0 - 1.0794389992952347e-002 - -6.5551146864891052e-002 - 1.2086050212383270e-001 - <_> - - <_> - - - - <_> - 4 4 2 4 -1. - <_> - 4 6 2 2 2. - 0 - 2.4046689271926880e-002 - -6.6829457879066467e-002 - 2.6401260495185852e-001 - <_> - - <_> - - - - <_> - 16 5 2 3 -1. - <_> - 16 6 2 1 3. - 0 - -1.6337579116225243e-002 - -6.0672587156295776e-001 - 1.6483150422573090e-002 - <_> - - <_> - - - - <_> - 0 2 14 8 -1. - <_> - 0 2 7 4 2. - <_> - 7 6 7 4 2. - 0 - 2.0875459909439087e-001 - 3.0014140531420708e-002 - -4.3378108739852905e-001 - <_> - - <_> - - - - <_> - 15 0 3 4 -1. - <_> - 16 1 1 4 3. - 1 - 1.7724540084600449e-002 - 3.5838410258293152e-002 - -2.7149319648742676e-001 - <_> - - <_> - - - - <_> - 3 0 4 3 -1. - <_> - 2 1 4 1 3. - 1 - -3.3346381038427353e-002 - -4.2977070808410645e-001 - 3.1222699210047722e-002 - <_> - - <_> - - - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - 0 - 1.1433180043241009e-004 - -7.5262703001499176e-002 - 1.0365139693021774e-001 - <_> - - <_> - - - - <_> - 3 6 10 6 -1. - <_> - 3 6 5 3 2. - <_> - 8 9 5 3 2. - 0 - 5.8417830616235733e-002 - 5.5789869278669357e-002 - -2.5008231401443481e-001 - <_> - - <_> - - - - <_> - 9 3 3 2 -1. - <_> - 9 4 3 1 2. - 0 - -3.0410559847950935e-002 - 1.2386819720268250e-001 - -1.1707239784300327e-002 - <_> - - <_> - - - - <_> - 6 3 3 2 -1. - <_> - 6 4 3 1 2. - 0 - 8.6924238130450249e-003 - -4.1130390018224716e-002 - 3.5336831212043762e-001 - <_> - - <_> - - - - <_> - 9 1 2 1 -1. - <_> - 9 1 1 1 2. - 0 - 1.0731499787652865e-004 - -1.2875890731811523e-001 - 1.0753930360078812e-001 - <_> - - <_> - - - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - 0 - 7.6319379732012749e-003 - 3.1681880354881287e-002 - -4.6472150087356567e-001 - <_> - - <_> - - - - <_> - 8 0 3 3 -1. - <_> - 8 1 3 1 3. - 0 - -7.4789589270949364e-003 - 1.9505509734153748e-001 - -7.2351843118667603e-002 - <_> - - <_> - - - - <_> - 0 5 2 3 -1. - <_> - 0 6 2 1 3. - 0 - 8.6427042260766029e-003 - 3.1191099435091019e-002 - -4.9181848764419556e-001 - <_> - - <_> - - - - <_> - 5 0 12 3 -1. - <_> - 5 1 12 1 3. - 0 - 1.7501849681138992e-002 - -5.8864939957857132e-002 - 9.5755502581596375e-002 - <_> - - <_> - - - - <_> - 6 2 3 3 -1. - <_> - 7 3 1 3 3. - 1 - 1.6813769936561584e-002 - -5.8993399143218994e-002 - 2.1193510293960571e-001 - <_> - - <_> - - - - <_> - 13 4 1 3 -1. - <_> - 12 5 1 1 3. - 1 - -6.4404280856251717e-003 - 1.1298300325870514e-001 - -5.3965609520673752e-002 - <_> - - <_> - - - - <_> - 6 9 4 3 -1. - <_> - 7 9 2 3 2. - 0 - 6.1326851136982441e-003 - 3.7554848939180374e-002 - -3.5011461377143860e-001 - <_> - - <_> - - - - <_> - 16 10 2 2 -1. - <_> - 17 10 1 1 2. - <_> - 16 11 1 1 2. - 0 - 7.9694160376675427e-005 - -1.1506149917840958e-001 - 1.1556260287761688e-001 - <_> - - <_> - - - - <_> - 5 4 3 1 -1. - <_> - 6 5 1 1 3. - 1 - -9.7881779074668884e-003 - 1.5670649707317352e-001 - -8.1091910600662231e-002 - <_> - - <_> - - - - <_> - 13 2 3 3 -1. - <_> - 12 3 3 1 3. - 1 - 6.8345926702022552e-002 - -6.8403100594878197e-003 - 4.5982140302658081e-001 - <_> - - <_> - - - - <_> - 0 3 6 3 -1. - <_> - 0 4 6 1 3. - 0 - 2.8495989739894867e-002 - 3.0876770615577698e-002 - -4.4429719448089600e-001 - <_> - - <_> - - - - <_> - 16 10 2 2 -1. - <_> - 17 10 1 1 2. - <_> - 16 11 1 1 2. - 0 - -1.0740839934442192e-004 - 1.3578890264034271e-001 - -9.5775328576564789e-002 - <_> - - <_> - - - - <_> - 5 5 4 3 -1. - <_> - 4 6 4 1 3. - 1 - -2.5251049548387527e-002 - 2.1702249348163605e-001 - -5.6038159877061844e-002 - <_> - - <_> - - - - <_> - 8 10 6 2 -1. - <_> - 10 10 2 2 3. - 0 - -2.6355799287557602e-002 - -6.2069612741470337e-001 - 1.1239909566938877e-002 - <_> - - <_> - - - - <_> - 4 10 6 2 -1. - <_> - 6 10 2 2 3. - 0 - -1.7481319606304169e-002 - -4.6592488884925842e-001 - 2.7867669239640236e-002 - <_> - - <_> - - - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - -1.3110379688441753e-002 - -4.2753320932388306e-001 - 2.7280420064926147e-002 - <_> - - <_> - - - - <_> - 5 9 7 3 -1. - <_> - 5 10 7 1 3. - 0 - -1.4925089664757252e-002 - 2.6826688647270203e-001 - -5.1737930625677109e-002 - <_> - - <_> - - - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - 6.1949039809405804e-003 - 5.6169319897890091e-002 - -2.9064020514488220e-001 - <_> - - <_> - - - - <_> - 0 2 3 2 -1. - <_> - 0 3 3 1 2. - 0 - -1.3175229541957378e-002 - -4.2517969012260437e-001 - 2.5214929133653641e-002 - <_> - - <_> - - - - <_> - 15 2 3 3 -1. - <_> - 15 3 3 1 3. - 0 - -1.8924409523606300e-002 - -4.2502859234809875e-001 - 1.8218439072370529e-002 - <_> - - <_> - - - - <_> - 0 2 3 3 -1. - <_> - 0 3 3 1 3. - 0 - 1.3100420124828815e-002 - 3.1988378614187241e-002 - -3.6357548832893372e-001 - <_> - - <_> - - - - <_> - 16 0 2 2 -1. - <_> - 16 0 2 1 2. - 1 - 1.0436940006911755e-002 - -8.0210663378238678e-002 - 1.3946530222892761e-001 - <_> - - <_> - - - - <_> - 2 0 2 2 -1. - <_> - 2 0 1 2 2. - 1 - -7.9071624204516411e-003 - 2.0094929635524750e-001 - -6.7795939743518829e-002 - <_> - - <_> - - - - <_> - 2 0 16 1 -1. - <_> - 2 0 8 1 2. - 0 - 1.3043300248682499e-002 - -7.3729388415813446e-002 - 1.0887020081281662e-001 - <_> - - <_> - - - - <_> - 2 0 3 2 -1. - <_> - 3 1 1 2 3. - 1 - -2.2031240165233612e-002 - 3.7282109260559082e-001 - -3.5342540591955185e-002 - <_> - - <_> - - - - <_> - 15 1 3 4 -1. - <_> - 14 2 3 2 2. - 1 - -1.8900850787758827e-002 - 1.3418090343475342e-001 - -7.4449099600315094e-002 - <_> - - <_> - - - - <_> - 9 5 1 3 -1. - <_> - 8 6 1 1 3. - 1 - -1.1057750321924686e-002 - 2.1446719765663147e-001 - -6.2393780797719955e-002 - <_> - - <_> - - - - <_> - 15 1 3 4 -1. - <_> - 14 2 3 2 2. - 1 - -9.3442380428314209e-002 - -3.8823649287223816e-001 - 2.2986009716987610e-003 - <_> - - <_> - - - - <_> - 3 1 4 3 -1. - <_> - 4 2 2 3 2. - 1 - -3.4701049327850342e-002 - 2.8782969713211060e-001 - -4.2191769927740097e-002 - <_> - - <_> - - - - <_> - 13 0 3 3 -1. - <_> - 14 1 1 3 3. - 1 - 1.2548220343887806e-002 - 3.6994919180870056e-002 - -2.0595429837703705e-001 - <_> - - <_> - - - - <_> - 2 1 14 2 -1. - <_> - 2 2 14 1 2. - 0 - 3.3881239593029022e-002 - -4.9688011407852173e-002 - 2.8468221426010132e-001 - <_> - - <_> - - - - <_> - 12 1 3 10 -1. - <_> - 13 1 1 10 3. - 0 - -4.0402419865131378e-002 - -5.4226320981979370e-001 - 1.7669109627604485e-002 - <_> - - <_> - - - - <_> - 8 6 1 3 -1. - <_> - 7 7 1 1 3. - 1 - -8.7337046861648560e-003 - 2.2132049500942230e-001 - -5.3990170359611511e-002 - <_> - - <_> - - - - <_> - 3 6 15 3 -1. - <_> - 8 7 5 1 9. - 0 - -5.9824731200933456e-002 - 4.8347260802984238e-002 - -5.7685390114784241e-002 - <_> - - <_> - - - - <_> - 0 6 15 3 -1. - <_> - 5 7 5 1 9. - 0 - -2.9451259970664978e-001 - -4.5838949084281921e-001 - 2.7871569618582726e-002 - <_> - - <_> - - - - <_> - 3 3 12 6 -1. - <_> - 7 5 4 2 9. - 0 - -2.6713800430297852e-001 - 9.2300467193126678e-002 - -1.3205750286579132e-001 - <_> - - <_> - - - - <_> - 3 1 8 6 -1. - <_> - 3 3 8 2 3. - 0 - -1.2219720333814621e-001 - 2.4488289654254913e-001 - -5.3463630378246307e-002 - <_> - - <_> - - - - <_> - 11 2 3 1 -1. - <_> - 12 3 1 1 3. - 1 - -1.5119279734790325e-002 - -1.0751979798078537e-001 - 2.1027600392699242e-002 - <_> - - <_> - - - - <_> - 7 2 1 3 -1. - <_> - 6 3 1 1 3. - 1 - -1.5298509970307350e-002 - -4.4954741001129150e-001 - 2.7843480929732323e-002 - <_> - - <_> - - - - <_> - 7 0 4 1 -1. - <_> - 8 0 2 1 2. - 0 - -3.9626029320061207e-003 - -3.3244648575782776e-001 - 2.9125649482011795e-002 - <_> - - <_> - - - - <_> - 0 10 2 2 -1. - <_> - 0 10 1 1 2. - <_> - 1 11 1 1 2. - 0 - 8.6580650531686842e-005 - -9.9431760609149933e-002 - 1.0358399897813797e-001 - <_> - - <_> - - - - <_> - 16 10 2 2 -1. - <_> - 17 10 1 1 2. - <_> - 16 11 1 1 2. - 0 - 7.9694160376675427e-005 - -8.4918417036533356e-002 - 8.7375417351722717e-002 - <_> - - <_> - - - - <_> - 0 10 2 2 -1. - <_> - 0 10 1 1 2. - <_> - 1 11 1 1 2. - 0 - -1.1532790085766464e-004 - 1.3404299318790436e-001 - -8.5288509726524353e-002 - <_> - - <_> - - - - <_> - 12 1 3 10 -1. - <_> - 13 1 1 10 3. - 0 - -5.7475361973047256e-003 - 9.7248457372188568e-002 - -5.3111761808395386e-002 - <_> - - <_> - - - - <_> - 4 2 4 3 -1. - <_> - 5 2 2 3 2. - 0 - 8.7824072688817978e-003 - 4.3460998684167862e-002 - -2.4040910601615906e-001 - <_> - - <_> - - - - <_> - 13 9 4 3 -1. - <_> - 13 10 4 1 3. - 0 - 1.8991909921169281e-002 - 1.5963919460773468e-002 - -5.0120067596435547e-001 - <_> - - <_> - - - - <_> - 0 10 12 2 -1. - <_> - 6 10 6 2 2. - 0 - 3.8471799343824387e-002 - -4.3374348431825638e-002 - 2.4480819702148438e-001 - <_> - - <_> - - - - <_> - 9 11 6 1 -1. - <_> - 11 11 2 1 3. - 0 - 8.7654506787657738e-003 - 2.1779999136924744e-002 - -2.5518739223480225e-001 - <_> - - <_> - - - - <_> - 3 11 2 1 -1. - <_> - 4 11 1 1 2. - 0 - -1.1589690257096663e-004 - 1.0173690319061279e-001 - -1.0155139863491058e-001 - <_> - - <_> - - - - <_> - 13 10 2 2 -1. - <_> - 14 10 1 1 2. - <_> - 13 11 1 1 2. - 0 - 1.0908189869951457e-004 - -9.1913960874080658e-002 - 9.1868981719017029e-002 - <_> - - <_> - - - - <_> - 3 10 2 2 -1. - <_> - 3 10 1 1 2. - <_> - 4 11 1 1 2. - 0 - 8.5531923105008900e-005 - -1.0584980249404907e-001 - 1.1017540097236633e-001 - <_> - - <_> - - - - <_> - 13 10 2 2 -1. - <_> - 14 10 1 1 2. - <_> - 13 11 1 1 2. - 0 - -1.0539990034885705e-004 - 1.4530989527702332e-001 - -9.5378302037715912e-002 - <_> - - <_> - - - - <_> - 7 0 4 2 -1. - <_> - 7 1 4 1 2. - 0 - 1.2168530374765396e-002 - -5.1483400166034698e-002 - 1.9467009603977203e-001 - <_> - - <_> - - - - <_> - 14 0 3 2 -1. - <_> - 15 1 1 2 3. - 1 - 1.3115240260958672e-002 - 4.1314240545034409e-002 - -3.1291571259498596e-001 - <_> - - <_> - - - - <_> - 1 10 2 2 -1. - <_> - 1 10 1 1 2. - <_> - 2 11 1 1 2. - 0 - 9.6014147857204080e-005 - -9.9624000489711761e-002 - 1.0027159750461578e-001 - <_> - - <_> - - - - <_> - 9 0 3 4 -1. - <_> - 10 1 1 4 3. - 1 - -2.5422589853405952e-002 - 1.1692500114440918e-001 - -1.8570020794868469e-002 - <_> - - <_> - - - - <_> - 7 4 3 3 -1. - <_> - 8 5 1 1 9. - 0 - -1.9213970750570297e-002 - 1.4327329397201538e-001 - -6.9922059774398804e-002 - <_> - - <_> - - - - <_> - 9 0 3 4 -1. - <_> - 10 1 1 4 3. - 1 - 4.7866098582744598e-002 - 1.1692809872329235e-002 - -1.2271200120449066e-001 - <_> - - <_> - - - - <_> - 6 4 6 2 -1. - <_> - 9 4 3 2 2. - 0 - -1.1262509971857071e-002 - 1.1598969995975494e-001 - -9.3254141509532928e-002 - <_> - - <_> - - - - <_> - 8 3 2 3 -1. - <_> - 8 4 2 1 3. - 0 - -1.6207929700613022e-002 - 2.4618209898471832e-001 - -4.3379079550504684e-002 - <_> - - <_> - - - - <_> - 0 7 7 2 -1. - <_> - 0 8 7 1 2. - 0 - 1.4976999955251813e-004 - -2.4557319283485413e-001 - 4.6069670468568802e-002 - <_> - - <_> - - - - <_> - 16 10 2 2 -1. - <_> - 16 11 2 1 2. - 0 - 1.4740769751369953e-002 - 1.0909680277109146e-002 - -6.3333719968795776e-001 - <_> - - <_> - - - - <_> - 0 10 2 2 -1. - <_> - 0 11 2 1 2. - 0 - 9.7150652436539531e-005 - -1.5137399733066559e-001 - 7.5497470796108246e-002 - <_> - - <_> - - - - <_> - 14 0 3 2 -1. - <_> - 15 1 1 2 3. - 1 - -1.2693350203335285e-002 - -2.3802100121974945e-001 - 4.0871001780033112e-002 - <_> - - <_> - - - - <_> - 3 5 12 3 -1. - <_> - 6 5 6 3 2. - 0 - 7.0101968944072723e-002 - 1.5777869150042534e-002 - -6.2344980239868164e-001 - <_> - - <_> - - - - <_> - 7 8 4 3 -1. - <_> - 7 9 4 1 3. - 0 - -9.0956473723053932e-003 - 2.2302170097827911e-001 - -5.0494540482759476e-002 - <_> - - <_> - - - - <_> - 4 0 2 3 -1. - <_> - 3 1 2 1 3. - 1 - 1.0229200124740601e-002 - 4.6729099005460739e-002 - -2.4563209712505341e-001 - <_> - - <_> - - - - <_> - 6 1 7 3 -1. - <_> - 6 2 7 1 3. - 0 - -1.9207410514354706e-002 - 2.1942460536956787e-001 - -4.6960771083831787e-002 - <_> - - <_> - - - - <_> - 5 8 1 4 -1. - <_> - 5 9 1 2 2. - 0 - 1.0802529868669808e-004 - -1.0915499925613403e-001 - 8.9894726872444153e-002 - <_> - - <_> - - - - <_> - 16 2 1 9 -1. - <_> - 13 5 1 3 3. - 1 - 5.9888280928134918e-002 - -1.2375240214169025e-002 - 3.0649530887603760e-001 - <_> - - <_> - - - - <_> - 2 2 9 1 -1. - <_> - 5 5 3 1 3. - 1 - -1.2133570015430450e-001 - -4.4181579351425171e-001 - 2.2245900705456734e-002 - <_> - - <_> - - - - <_> - 14 10 2 2 -1. - <_> - 15 10 1 1 2. - <_> - 14 11 1 1 2. - 0 - 1.0026310337707400e-004 - -7.5078979134559631e-002 - 7.0171989500522614e-002 - <_> - - <_> - - - - <_> - 2 10 2 2 -1. - <_> - 2 10 1 1 2. - <_> - 3 11 1 1 2. - 0 - 1.0822709737112746e-004 - -9.5590889453887939e-002 - 9.7991749644279480e-002 - <_> - - <_> - - - - <_> - 16 10 2 2 -1. - <_> - 17 10 1 1 2. - <_> - 16 11 1 1 2. - 0 - -1.0740839934442192e-004 - 8.9312888681888580e-002 - -5.8937720954418182e-002 - <_> - - <_> - - - - <_> - 4 9 4 3 -1. - <_> - 5 9 2 3 2. - 0 - 8.1779044121503830e-003 - 2.8866490349173546e-002 - -3.2336440682411194e-001 - <_> - - <_> - - - - <_> - 10 5 3 2 -1. - <_> - 11 6 1 2 3. - 1 - -1.2426340021193027e-002 - 1.5125119686126709e-001 - -8.9751720428466797e-002 - <_> - - <_> - - - - <_> - 4 2 10 3 -1. - <_> - 4 3 10 1 3. - 0 - -1.6673840582370758e-002 - 1.6337050497531891e-001 - -6.1544839292764664e-002 - <_> - - <_> - - - - <_> - 11 2 2 3 -1. - <_> - 11 3 2 1 3. - 0 - 1.1108940234407783e-003 - -4.4395659118890762e-002 - 5.8737680315971375e-002 - <_> - - <_> - - - - <_> - 5 2 2 3 -1. - <_> - 5 3 2 1 3. - 0 - 6.3430960290133953e-003 - -6.7445211112499237e-002 - 1.5874649584293365e-001 - <_> - - <_> - - - - <_> - 1 1 16 3 -1. - <_> - 5 1 8 3 2. - 0 - -4.5497350394725800e-002 - 1.2980030477046967e-001 - -9.6899092197418213e-002 - <_> - - <_> - - - - <_> - 3 4 8 4 -1. - <_> - 3 5 8 2 2. - 0 - -2.6433700695633888e-002 - 9.4376727938652039e-002 - -1.0849659889936447e-001 - <_> - - <_> - - - - <_> - 15 3 3 3 -1. - <_> - 15 4 3 1 3. - 0 - -2.1796820685267448e-002 - -5.6385380029678345e-001 - 2.1219300106167793e-002 - <_> - - <_> - - - - <_> - 0 3 3 3 -1. - <_> - 0 4 3 1 3. - 0 - 8.7439846247434616e-003 - 3.2976679503917694e-002 - -2.8045099973678589e-001 - <_> - - <_> - - - - <_> - 16 10 2 2 -1. - <_> - 17 10 1 1 2. - <_> - 16 11 1 1 2. - 0 - 7.8902099630795419e-005 - -6.3391529023647308e-002 - 5.9122908860445023e-002 - <_> - - <_> - - - - <_> - 0 10 2 2 -1. - <_> - 0 10 1 1 2. - <_> - 1 11 1 1 2. - 0 - 8.6580650531686842e-005 - -9.6938036382198334e-002 - 1.0047750174999237e-001 - -1.6293729543685913e+000 - 12 - -1 - <_> - - - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 1.1782609857618809e-002 - -4.1238281130790710e-001 - 8.6988270282745361e-001 - <_> - - <_> - - - - <_> - 8 3 3 3 -1. - <_> - 8 4 3 1 3. - 0 - -1.7742900177836418e-002 - 7.5632858276367188e-001 - -1.5877389907836914e-001 - <_> - - <_> - - - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - 0 - 4.3491688556969166e-003 - -1.3528199493885040e-001 - 7.0891678333282471e-001 - <_> - - <_> - - - - <_> - 7 7 4 3 -1. - <_> - 7 8 4 1 3. - 0 - 1.4091270044445992e-002 - -1.6412720084190369e-001 - 6.1424720287322998e-001 - <_> - - <_> - - - - <_> - 4 6 3 2 -1. - <_> - 5 6 1 2 3. - 0 - -5.7054432108998299e-003 - 5.4331731796264648e-001 - -1.6219259798526764e-001 - <_> - - <_> - - - - <_> - 9 0 3 7 -1. - <_> - 10 1 1 7 3. - 1 - 1.5776239335536957e-002 - -3.4152381122112274e-002 - 1.8973289430141449e-001 - <_> - - <_> - - - - <_> - 9 0 7 3 -1. - <_> - 8 1 7 1 3. - 1 - 8.0932863056659698e-003 - -1.9709299504756927e-001 - 3.2210728526115417e-001 - <_> - - <_> - - - - <_> - 9 2 1 3 -1. - <_> - 9 3 1 1 3. - 0 - -5.9854150749742985e-003 - 5.6217777729034424e-001 - -6.9357901811599731e-002 - <_> - - <_> - - - - <_> - 5 4 3 3 -1. - <_> - 6 5 1 1 9. - 0 - -1.8062319606542587e-002 - 3.7098649144172668e-001 - -1.2705039978027344e-001 - <_> - - <_> - - - - <_> - 11 5 2 2 -1. - <_> - 12 5 1 1 2. - <_> - 11 6 1 1 2. - 0 - -3.6759639624506235e-003 - 4.1142329573631287e-001 - -7.1537837386131287e-002 - <_> - - <_> - - - - <_> - 5 5 2 2 -1. - <_> - 5 5 1 1 2. - <_> - 6 6 1 1 2. - 0 - -2.1540250163525343e-003 - 3.7564289569854736e-001 - -9.1973446309566498e-002 - <_> - - <_> - - - - <_> - 11 5 6 3 -1. - <_> - 13 6 2 1 9. - 0 - -3.0050940811634064e-002 - 3.1198319792747498e-001 - -9.8297983407974243e-002 - <_> - - <_> - - - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - 0 - -5.1365699619054794e-005 - 2.3951590061187744e-001 - -1.6076980531215668e-001 - <_> - - <_> - - - - <_> - 11 5 6 3 -1. - <_> - 13 6 2 1 9. - 0 - 7.7373638749122620e-002 - -2.3487670347094536e-002 - 5.5488550662994385e-001 - <_> - - <_> - - - - <_> - 1 5 6 3 -1. - <_> - 3 6 2 1 9. - 0 - -4.0747709572315216e-002 - 2.6812228560447693e-001 - -1.4000350236892700e-001 - <_> - - <_> - - - - <_> - 8 3 6 4 -1. - <_> - 8 3 3 4 2. - 0 - 4.0594231337308884e-002 - 2.7258900925517082e-002 - -2.6374179124832153e-001 - <_> - - <_> - - - - <_> - 3 4 8 3 -1. - <_> - 7 4 4 3 2. - 0 - -4.7825898946030065e-005 - 9.3977712094783783e-002 - -3.5795810818672180e-001 - <_> - - <_> - - - - <_> - 6 2 6 4 -1. - <_> - 6 3 6 2 2. - 0 - 4.4379208236932755e-002 - -7.2088733315467834e-002 - 4.6868190169334412e-001 - <_> - - <_> - - - - <_> - 0 2 2 10 -1. - <_> - 0 7 2 5 2. - 0 - 5.8061368763446808e-003 - -3.3395549654960632e-001 - 1.0214909911155701e-001 - <_> - - <_> - - - - <_> - 8 5 3 2 -1. - <_> - 9 5 1 2 3. - 0 - 8.8028358295559883e-003 - -2.5739600881934166e-002 - 4.3644779920578003e-001 - <_> - - <_> - - - - <_> - 7 5 3 2 -1. - <_> - 8 5 1 2 3. - 0 - 9.0131545439362526e-003 - -5.1000531762838364e-002 - 5.7023537158966064e-001 - <_> - - <_> - - - - <_> - 7 0 6 4 -1. - <_> - 9 0 2 4 3. - 0 - -2.5290340185165405e-002 - -3.5979458689689636e-001 - 7.1303091943264008e-002 - <_> - - <_> - - - - <_> - 0 0 14 12 -1. - <_> - 0 0 7 6 2. - <_> - 7 6 7 6 2. - 0 - -1.9525140523910522e-001 - -4.8977100849151611e-001 - 5.6384291499853134e-002 - <_> - - <_> - - - - <_> - 11 10 2 1 -1. - <_> - 11 10 1 1 2. - 0 - -2.6473659090697765e-003 - -3.3710619807243347e-001 - 3.4158378839492798e-002 - <_> - - <_> - - - - <_> - 5 10 2 1 -1. - <_> - 6 10 1 1 2. - 0 - -3.9261409256141633e-005 - 1.5813310444355011e-001 - -2.0216089487075806e-001 - <_> - - <_> - - - - <_> - 6 8 6 3 -1. - <_> - 6 9 6 1 3. - 0 - 2.2714860737323761e-002 - -6.4444392919540405e-002 - 4.4198501110076904e-001 - <_> - - <_> - - - - <_> - 4 1 4 3 -1. - <_> - 5 2 2 3 2. - 1 - -3.9951600134372711e-002 - 3.7973031401634216e-001 - -6.2915429472923279e-002 - <_> - - <_> - - - - <_> - 6 3 12 6 -1. - <_> - 10 3 4 6 3. - 0 - -2.4356140196323395e-001 - -3.0749571323394775e-001 - 3.1852040439844131e-002 - <_> - - <_> - - - - <_> - 0 4 16 7 -1. - <_> - 8 4 8 7 2. - 0 - -4.3897500634193420e-001 - 3.9641711115837097e-001 - -6.5206609666347504e-002 - <_> - - <_> - - - - <_> - 11 10 2 1 -1. - <_> - 11 10 1 1 2. - 0 - -4.0617240301799029e-005 - 1.3962450623512268e-001 - -1.2550500035285950e-001 - <_> - - <_> - - - - <_> - 5 10 2 1 -1. - <_> - 6 10 1 1 2. - 0 - 4.3697938963305205e-005 - -1.2014800310134888e-001 - 2.5546219944953918e-001 - <_> - - <_> - - - - <_> - 0 8 18 4 -1. - <_> - 0 10 18 2 2. - 0 - 3.3634141087532043e-002 - -4.5507898926734924e-001 - 5.1609288901090622e-002 - <_> - - <_> - - - - <_> - 5 0 5 4 -1. - <_> - 5 1 5 2 2. - 0 - 3.1138129532337189e-002 - -8.3802923560142517e-002 - 2.9366040229797363e-001 - <_> - - <_> - - - - <_> - 6 11 8 1 -1. - <_> - 8 11 4 1 2. - 0 - 1.5724230557680130e-002 - 1.6777889803051949e-002 - -7.4661827087402344e-001 - <_> - - <_> - - - - <_> - 3 0 11 3 -1. - <_> - 3 1 11 1 3. - 0 - -2.2827949374914169e-002 - 3.1140440702438354e-001 - -7.4142500758171082e-002 - <_> - - <_> - - - - <_> - 6 11 8 1 -1. - <_> - 8 11 4 1 2. - 0 - 6.6454121842980385e-003 - 2.6253340765833855e-002 - -2.1291309595108032e-001 - <_> - - <_> - - - - <_> - 4 10 6 2 -1. - <_> - 6 10 2 2 3. - 0 - 1.2331400066614151e-002 - 4.0855400264263153e-002 - -5.2558171749114990e-001 - <_> - - <_> - - - - <_> - 7 0 6 4 -1. - <_> - 9 0 2 4 3. - 0 - 2.4869399145245552e-002 - 1.6519179567694664e-002 - -2.4012239277362823e-001 - <_> - - <_> - - - - <_> - 0 1 1 4 -1. - <_> - 0 3 1 2 2. - 0 - -7.0881461724638939e-003 - -3.2228660583496094e-001 - 6.2019370496273041e-002 - <_> - - <_> - - - - <_> - 6 1 6 4 -1. - <_> - 6 2 6 2 2. - 0 - -3.4650731831789017e-002 - 4.3350049853324890e-001 - -4.8822090029716492e-002 - <_> - - <_> - - - - <_> - 6 0 4 4 -1. - <_> - 7 0 2 4 2. - 0 - 7.6578720472753048e-003 - 6.4763158559799194e-002 - -3.2527589797973633e-001 - <_> - - <_> - - - - <_> - 6 4 6 3 -1. - <_> - 8 5 2 1 9. - 0 - -3.9454981684684753e-002 - 1.6538539528846741e-001 - -1.3421210646629333e-001 - <_> - - <_> - - - - <_> - 3 4 12 7 -1. - <_> - 6 4 6 7 2. - 0 - -1.9214299321174622e-001 - -3.7593689560890198e-001 - 6.3063777983188629e-002 - -1.7363870143890381e+000 - 13 - -1 - <_> - - - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 1.5497770160436630e-002 - -3.6309579014778137e-001 - 8.4555262327194214e-001 - <_> - - <_> - - - - <_> - 9 0 3 8 -1. - <_> - 9 0 3 4 2. - 1 - -2.0898319780826569e-001 - -2.8083321452140808e-001 - 1.0766410082578659e-001 - <_> - - <_> - - - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - 0 - -3.6195109132677317e-003 - 6.7817902565002441e-001 - -1.9760650396347046e-001 - <_> - - <_> - - - - <_> - 10 3 1 3 -1. - <_> - 10 4 1 1 3. - 0 - -7.8276582062244415e-003 - 5.6059402227401733e-001 - -1.3372389972209930e-001 - <_> - - <_> - - - - <_> - 6 5 3 3 -1. - <_> - 7 5 1 3 3. - 0 - 1.3660199940204620e-002 - -1.0383050143718719e-001 - 6.4858847856521606e-001 - <_> - - <_> - - - - <_> - 11 6 2 2 -1. - <_> - 12 6 1 1 2. - <_> - 11 7 1 1 2. - 0 - 3.1465899664908648e-003 - -1.2784099578857422e-001 - 4.7746801376342773e-001 - <_> - - <_> - - - - <_> - 5 6 2 2 -1. - <_> - 5 6 1 1 2. - <_> - 6 7 1 1 2. - 0 - 4.9735051579773426e-003 - -6.6067576408386230e-002 - 5.3896760940551758e-001 - <_> - - <_> - - - - <_> - 13 4 2 3 -1. - <_> - 12 5 2 1 3. - 1 - 1.8216289579868317e-002 - -8.9344531297683716e-002 - 4.2037069797515869e-001 - <_> - - <_> - - - - <_> - 4 5 3 3 -1. - <_> - 5 6 1 1 9. - 0 - -1.4441680163145065e-002 - 2.7944031357765198e-001 - -1.3541069626808167e-001 - <_> - - <_> - - - - <_> - 9 5 1 2 -1. - <_> - 9 6 1 1 2. - 0 - 3.9981860027182847e-005 - -1.3476949930191040e-001 - 1.3061609864234924e-001 - <_> - - <_> - - - - <_> - 5 6 4 2 -1. - <_> - 6 6 2 2 2. - 0 - -1.1218409985303879e-002 - 5.5477607250213623e-001 - -5.4050721228122711e-002 - <_> - - <_> - - - - <_> - 13 3 2 3 -1. - <_> - 12 4 2 1 3. - 1 - 3.8257170468568802e-002 - -2.9511810280382633e-003 - 3.5025680065155029e-001 - <_> - - <_> - - - - <_> - 5 3 3 2 -1. - <_> - 6 4 1 2 3. - 1 - -3.1136209145188332e-002 - 3.9581200480461121e-001 - -7.7712006866931915e-002 - <_> - - <_> - - - - <_> - 5 3 8 8 -1. - <_> - 9 3 4 4 2. - <_> - 5 7 4 4 2. - 0 - 5.6127890944480896e-002 - 6.5231159329414368e-002 - -4.5123818516731262e-001 - <_> - - <_> - - - - <_> - 8 5 2 2 -1. - <_> - 8 5 1 1 2. - <_> - 9 6 1 1 2. - 0 - -4.6596338506788015e-005 - 1.9990539550781250e-001 - -1.5452989935874939e-001 - <_> - - <_> - - - - <_> - 4 5 12 7 -1. - <_> - 7 5 6 7 2. - 0 - -1.2514979578554630e-002 - 4.8256270587444305e-002 - -1.9997639954090118e-001 - <_> - - <_> - - - - <_> - 0 0 12 10 -1. - <_> - 4 0 4 10 3. - 0 - 1.7952239513397217e-001 - 6.5345346927642822e-002 - -5.0162881612777710e-001 - <_> - - <_> - - - - <_> - 9 0 2 1 -1. - <_> - 9 0 1 1 2. - 0 - 4.3697938963305205e-005 - -1.4098809659481049e-001 - 1.1703769862651825e-001 - <_> - - <_> - - - - <_> - 0 0 1 12 -1. - <_> - 0 6 1 6 2. - 0 - -4.6865958720445633e-003 - -3.5993480682373047e-001 - 7.2028510272502899e-002 - <_> - - <_> - - - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - 0 - 3.5626258701086044e-002 - -6.4041122794151306e-002 - 4.4865629076957703e-001 - <_> - - <_> - - - - <_> - 5 4 3 2 -1. - <_> - 6 5 1 2 3. - 1 - 1.3676189817488194e-002 - -5.7538058608770370e-002 - 4.1195538640022278e-001 - <_> - - <_> - - - - <_> - 6 1 7 3 -1. - <_> - 6 2 7 1 3. - 0 - 2.8455330058932304e-002 - -8.2572557032108307e-002 - 3.0728879570960999e-001 - <_> - - <_> - - - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - 0 - 3.9930879138410091e-003 - 7.9742781817913055e-002 - -3.5738870501518250e-001 - <_> - - <_> - - - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - 0 - 4.0958970785140991e-002 - -6.2663957476615906e-002 - 4.1727420687675476e-001 - <_> - - <_> - - - - <_> - 1 11 6 1 -1. - <_> - 3 11 2 1 3. - 0 - -5.7679559104144573e-003 - -4.0190890431404114e-001 - 6.0980260372161865e-002 - <_> - - <_> - - - - <_> - 11 1 6 8 -1. - <_> - 13 1 2 8 3. - 0 - -1.6978530213236809e-002 - 1.5577870607376099e-001 - -1.2832540273666382e-001 - <_> - - <_> - - - - <_> - 1 1 6 8 -1. - <_> - 3 1 2 8 3. - 0 - -8.0770384520292282e-003 - 1.2041939795017242e-001 - -1.6271419823169708e-001 - <_> - - <_> - - - - <_> - 4 2 12 7 -1. - <_> - 7 2 6 7 2. - 0 - 1.8030419945716858e-002 - 3.4709710627794266e-002 - -2.6759231090545654e-001 - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 1.5382760204374790e-002 - 5.6882061064243317e-002 - -3.9767611026763916e-001 - <_> - - <_> - - - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - 0 - -9.9336765706539154e-003 - 3.6032059788703918e-001 - -6.6026233136653900e-002 - <_> - - <_> - - - - <_> - 0 10 2 2 -1. - <_> - 0 11 2 1 2. - 0 - -2.8156090993434191e-003 - -5.1109760999679565e-001 - 4.4887579977512360e-002 - <_> - - <_> - - - - <_> - 5 0 8 3 -1. - <_> - 5 1 8 1 3. - 0 - 2.9914719983935356e-002 - -7.5402297079563141e-002 - 3.0369639396667480e-001 - <_> - - <_> - - - - <_> - 0 10 16 2 -1. - <_> - 0 10 8 1 2. - <_> - 8 11 8 1 2. - 0 - -9.0450989082455635e-003 - -2.8374141454696655e-001 - 7.8973956406116486e-002 - <_> - - <_> - - - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - 0 - 1.5734959393739700e-002 - -5.7694129645824432e-002 - 5.4260098934173584e-001 - <_> - - <_> - - - - <_> - 0 11 2 1 -1. - <_> - 1 11 1 1 2. - 0 - 4.1617371607571840e-005 - -1.3004170358181000e-001 - 1.5200050175189972e-001 - <_> - - <_> - - - - <_> - 6 0 12 12 -1. - <_> - 6 0 6 12 2. - 0 - 2.3746499419212341e-001 - 1.7602339386940002e-002 - -4.4681221246719360e-001 - <_> - - <_> - - - - <_> - 0 1 16 11 -1. - <_> - 8 1 8 11 2. - 0 - -6.0572451353073120e-001 - 3.2846671342849731e-001 - -7.1565687656402588e-002 - <_> - - <_> - - - - <_> - 7 8 4 3 -1. - <_> - 7 9 4 1 3. - 0 - 1.4338710345327854e-002 - -6.4759388566017151e-002 - 3.0051338672637939e-001 - <_> - - <_> - - - - <_> - 7 7 2 3 -1. - <_> - 7 8 2 1 3. - 0 - 6.4899460412561893e-003 - -8.5719607770442963e-002 - 2.4065899848937988e-001 - <_> - - <_> - - - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - 0 - -3.9261409256141633e-005 - 9.5390006899833679e-002 - -9.0216562151908875e-002 - <_> - - <_> - - - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - 0 - -3.6325189284980297e-003 - -3.5685008764266968e-001 - 5.8603391051292419e-002 - <_> - - <_> - - - - <_> - 12 5 3 3 -1. - <_> - 11 6 3 1 3. - 1 - -3.4756339155137539e-003 - 5.5268160998821259e-002 - -8.1110060214996338e-002 - <_> - - <_> - - - - <_> - 6 5 3 3 -1. - <_> - 7 6 1 3 3. - 1 - 5.3725110774394125e-005 - -1.5239860117435455e-001 - 1.4978319406509399e-001 - <_> - - <_> - - - - <_> - 8 5 2 2 -1. - <_> - 9 5 1 1 2. - <_> - 8 6 1 1 2. - 0 - -3.9981860027182847e-005 - 1.6690729558467865e-001 - -1.3983109593391418e-001 - <_> - - <_> - - - - <_> - 7 6 3 1 -1. - <_> - 8 6 1 1 3. - 0 - 6.6550569608807564e-003 - -3.4786760807037354e-002 - 4.9454191327095032e-001 - <_> - - <_> - - - - <_> - 12 10 1 2 -1. - <_> - 12 11 1 1 2. - 0 - 3.6582579923560843e-005 - -1.8221789598464966e-001 - 7.0058353245258331e-002 - <_> - - <_> - - - - <_> - 0 9 14 1 -1. - <_> - 7 9 7 1 2. - 0 - 2.4936700239777565e-002 - -5.5899091064929962e-002 - 3.3210518956184387e-001 - <_> - - <_> - - - - <_> - 8 11 2 1 -1. - <_> - 8 11 1 1 2. - 0 - -2.2233650088310242e-003 - -4.7210049629211426e-001 - 3.9656650274991989e-002 - <_> - - <_> - - - - <_> - 4 0 6 4 -1. - <_> - 6 0 2 4 3. - 0 - 3.0253460630774498e-002 - 3.7779778242111206e-002 - -3.8744398951530457e-001 - <_> - - <_> - - - - <_> - 4 0 10 3 -1. - <_> - 4 1 10 1 3. - 0 - -2.5146869942545891e-002 - 2.5839841365814209e-001 - -6.3479728996753693e-002 - <_> - - <_> - - - - <_> - 8 1 2 1 -1. - <_> - 9 1 1 1 2. - 0 - -3.9261409256141633e-005 - 1.1035069823265076e-001 - -1.5140140056610107e-001 - <_> - - <_> - - - - <_> - 7 2 4 3 -1. - <_> - 7 3 4 1 3. - 0 - -2.5253789499402046e-002 - 4.0381500124931335e-001 - -4.1429519653320313e-002 - <_> - - <_> - - - - <_> - 0 3 1 2 -1. - <_> - 0 4 1 1 2. - 0 - -2.6092969346791506e-003 - -2.9758319258689880e-001 - 5.6268099695444107e-002 - <_> - - <_> - - - - <_> - 9 3 3 2 -1. - <_> - 10 4 1 2 3. - 1 - -5.0167189911007881e-003 - 4.0989220142364502e-002 - -9.0509623289108276e-002 - <_> - - <_> - - - - <_> - 5 7 2 1 -1. - <_> - 6 7 1 1 2. - 0 - 5.5015629186527804e-005 - -1.0549169778823853e-001 - 1.4567929506301880e-001 - <_> - - <_> - - - - <_> - 4 6 12 5 -1. - <_> - 7 6 6 5 2. - 0 - -2.1134430170059204e-001 - -3.9282271265983582e-001 - 6.5089040435850620e-003 - <_> - - <_> - - - - <_> - 2 6 12 5 -1. - <_> - 5 6 6 5 2. - 0 - 5.2607029676437378e-002 - 3.4969959408044815e-002 - -4.7080901265144348e-001 - <_> - - <_> - - - - <_> - 12 0 6 12 -1. - <_> - 14 0 2 12 3. - 0 - -2.3675639182329178e-002 - 2.1920250356197357e-001 - -1.7777769267559052e-001 - <_> - - <_> - - - - <_> - 0 9 3 3 -1. - <_> - 0 10 3 1 3. - 0 - -8.3744488656520844e-003 - -4.8220250010490417e-001 - 3.3246569335460663e-002 - <_> - - <_> - - - - <_> - 12 0 6 12 -1. - <_> - 14 0 2 12 3. - 0 - -1.8032009899616241e-001 - -5.0746428966522217e-001 - 4.7727171331644058e-003 - <_> - - <_> - - - - <_> - 0 0 6 12 -1. - <_> - 2 0 2 12 3. - 0 - -8.0522168427705765e-003 - 1.3129340112209320e-001 - -1.2621930241584778e-001 - <_> - - <_> - - - - <_> - 16 5 2 6 -1. - <_> - 16 5 1 6 2. - 0 - -1.3076379895210266e-002 - 1.8919549882411957e-001 - -5.6553479284048080e-002 - <_> - - <_> - - - - <_> - 0 5 2 6 -1. - <_> - 1 5 1 6 2. - 0 - 1.9346589222550392e-002 - -3.0950130894780159e-002 - 5.7245761156082153e-001 - <_> - - <_> - - - - <_> - 12 5 4 1 -1. - <_> - 13 5 2 1 2. - 0 - 6.9990791380405426e-003 - -3.7769541144371033e-002 - 4.1835439205169678e-001 - <_> - - <_> - - - - <_> - 9 3 4 3 -1. - <_> - 8 4 4 1 3. - 1 - -1.4297800138592720e-002 - 1.0722269862890244e-001 - -1.4301869273185730e-001 - <_> - - <_> - - - - <_> - 10 7 3 1 -1. - <_> - 11 7 1 1 3. - 0 - -5.0943519454449415e-005 - 9.8646506667137146e-002 - -8.9524149894714355e-002 - <_> - - <_> - - - - <_> - 5 6 3 3 -1. - <_> - 6 7 1 1 9. - 0 - -1.4215099625289440e-002 - 2.3867559432983398e-001 - -6.0889568179845810e-002 - <_> - - <_> - - - - <_> - 10 5 1 2 -1. - <_> - 10 6 1 1 2. - 0 - 4.4006508687743917e-005 - -1.2491259723901749e-001 - 9.6516169607639313e-002 - <_> - - <_> - - - - <_> - 0 3 1 4 -1. - <_> - 0 4 1 2 2. - 0 - 2.8896171133965254e-003 - 5.1770750433206558e-002 - -2.7633678913116455e-001 - <_> - - <_> - - - - <_> - 16 1 2 8 -1. - <_> - 14 3 2 4 2. - 1 - -1.4485709369182587e-001 - -3.9524438977241516e-001 - 1.4283739961683750e-002 - <_> - - <_> - - - - <_> - 3 6 10 6 -1. - <_> - 3 6 5 3 2. - <_> - 8 9 5 3 2. - 0 - -7.4485607445240021e-002 - -3.5406059026718140e-001 - 3.9224278181791306e-002 - <_> - - <_> - - - - <_> - 14 3 2 3 -1. - <_> - 13 4 2 1 3. - 1 - -2.4072000756859779e-002 - 2.3231640458106995e-001 - -3.2994810491800308e-002 - <_> - - <_> - - - - <_> - 5 2 3 3 -1. - <_> - 6 3 1 3 3. - 1 - 1.9683260470628738e-002 - -5.4490741342306137e-002 - 2.5256949663162231e-001 - <_> - - <_> - - - - <_> - 13 4 3 4 -1. - <_> - 13 4 3 2 2. - 1 - 1.7556510865688324e-002 - 3.3798649907112122e-002 - -1.7246970534324646e-001 - <_> - - <_> - - - - <_> - 1 4 12 6 -1. - <_> - 1 4 6 3 2. - <_> - 7 7 6 3 2. - 0 - 1.5962730348110199e-001 - 3.2824710011482239e-002 - -4.9014711380004883e-001 - <_> - - <_> - - - - <_> - 13 3 2 3 -1. - <_> - 12 4 2 1 3. - 1 - 1.5168360434472561e-002 - -3.1594321131706238e-002 - 1.3700030744075775e-001 - <_> - - <_> - - - - <_> - 5 3 3 2 -1. - <_> - 6 4 1 2 3. - 1 - -1.8054259940981865e-002 - 1.8131910264492035e-001 - -7.3166027665138245e-002 - -1.7063260078430176e+000 - 14 - -1 - <_> - - - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.5180639028549194e-002 - 6.9966208934783936e-001 - -3.5598480701446533e-001 - <_> - - <_> - - - - <_> - 8 3 3 3 -1. - <_> - 8 4 3 1 3. - 0 - -2.4972269311547279e-002 - 6.5660268068313599e-001 - -1.3398469984531403e-001 - <_> - - <_> - - - - <_> - 5 3 3 3 -1. - <_> - 6 4 1 3 3. - 1 - -4.5527230948209763e-002 - 5.7874792814254761e-001 - -1.2656690180301666e-001 - <_> - - <_> - - - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - 0 - -6.7877001129090786e-003 - 3.2121130824089050e-001 - -9.2314563691616058e-002 - <_> - - <_> - - - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - 0 - 1.0429969988763332e-002 - -8.6593657732009888e-002 - 6.6687929630279541e-001 - <_> - - <_> - - - - <_> - 10 4 6 6 -1. - <_> - 12 6 2 2 9. - 0 - 1.9914349913597107e-001 - -1.1814249679446220e-002 - 2.8926709294319153e-001 - <_> - - <_> - - - - <_> - 2 4 6 6 -1. - <_> - 4 6 2 2 9. - 0 - -1.3934800028800964e-001 - 2.7977100014686584e-001 - -1.1972069740295410e-001 - <_> - - <_> - - - - <_> - 8 2 4 3 -1. - <_> - 8 3 4 1 3. - 0 - -3.4900620579719543e-002 - 6.0853272676467896e-001 - -3.3297471702098846e-002 - <_> - - <_> - - - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - 0 - 4.1045788675546646e-003 - 7.4957266449928284e-002 - -5.1426941156387329e-001 - <_> - - <_> - - - - <_> - 11 5 2 4 -1. - <_> - 12 5 1 2 2. - <_> - 11 7 1 2 2. - 0 - 1.1164579540491104e-002 - -4.2139139026403427e-002 - 3.2087740302085876e-001 - <_> - - <_> - - - - <_> - 4 11 6 1 -1. - <_> - 6 11 2 1 3. - 0 - 5.9737460687756538e-003 - 5.8269631117582321e-002 - -5.2123707532882690e-001 - <_> - - <_> - - - - <_> - 11 5 2 4 -1. - <_> - 12 5 1 2 2. - <_> - 11 7 1 2 2. - 0 - -1.0200380347669125e-002 - 2.6471599936485291e-001 - -4.6848529018461704e-003 - <_> - - <_> - - - - <_> - 5 5 2 4 -1. - <_> - 5 5 1 2 2. - <_> - 6 7 1 2 2. - 0 - 6.4758108928799629e-003 - -1.0912910103797913e-001 - 3.3013060688972473e-001 - <_> - - <_> - - - - <_> - 5 5 12 4 -1. - <_> - 5 7 12 2 2. - 0 - 4.2913921177387238e-002 - -2.7027499675750732e-001 - 5.7806611061096191e-002 - <_> - - <_> - - - - <_> - 2 3 2 2 -1. - <_> - 2 3 2 1 2. - 1 - 7.2694900445640087e-003 - 6.7417383193969727e-002 - -3.9489638805389404e-001 - <_> - - <_> - - - - <_> - 7 11 6 1 -1. - <_> - 9 11 2 1 3. - 0 - 5.2788378670811653e-003 - 4.4355489313602448e-002 - -4.2548438906669617e-001 - <_> - - <_> - - - - <_> - 3 5 4 4 -1. - <_> - 3 5 2 2 2. - <_> - 5 7 2 2 2. - 0 - -2.2712450474500656e-002 - 4.3758571147918701e-001 - -5.6706890463829041e-002 - <_> - - <_> - - - - <_> - 6 10 6 2 -1. - <_> - 8 10 2 2 3. - 0 - -1.8580600619316101e-002 - -6.1528331041336060e-001 - 4.0651239454746246e-002 - <_> - - <_> - - - - <_> - 6 4 6 3 -1. - <_> - 6 5 6 1 3. - 0 - -5.2815988659858704e-002 - 3.9717459678649902e-001 - -5.5707391351461411e-002 - <_> - - <_> - - - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - 0 - 2.7739210054278374e-003 - 7.1527756750583649e-002 - -3.6739039421081543e-001 - <_> - - <_> - - - - <_> - 2 0 12 2 -1. - <_> - 8 0 6 2 2. - 0 - -2.1746100857853889e-002 - 1.3615989685058594e-001 - -1.5944430232048035e-001 - <_> - - <_> - - - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - 0 - -1.6994749894365668e-003 - -2.8949651122093201e-001 - 7.2794176638126373e-002 - <_> - - <_> - - - - <_> - 6 4 5 8 -1. - <_> - 6 6 5 4 2. - 0 - 7.4074663221836090e-002 - 3.6687631160020828e-002 - -4.8284009099006653e-001 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.5314641445875168e-002 - -2.9834219813346863e-001 - 6.0024339705705643e-002 - <_> - - <_> - - - - <_> - 7 5 2 3 -1. - <_> - 6 6 2 1 3. - 1 - 4.3436840176582336e-002 - -3.6994270980358124e-002 - 6.1292910575866699e-001 - <_> - - <_> - - - - <_> - 10 5 3 2 -1. - <_> - 11 6 1 2 3. - 1 - -9.1329999268054962e-003 - 9.7552441060543060e-002 - -8.2057207822799683e-002 - <_> - - <_> - - - - <_> - 6 3 6 6 -1. - <_> - 8 5 2 2 9. - 0 - -9.7359552979469299e-002 - 1.0101430118083954e-001 - -1.9310599565505981e-001 - <_> - - <_> - - - - <_> - 10 5 3 2 -1. - <_> - 11 6 1 2 3. - 1 - 3.7818439304828644e-002 - -8.6803017184138298e-003 - 4.1474840044975281e-001 - <_> - - <_> - - - - <_> - 8 5 2 3 -1. - <_> - 7 6 2 1 3. - 1 - -2.5347029790282249e-002 - 4.2153739929199219e-001 - -4.4529590755701065e-002 - <_> - - <_> - - - - <_> - 10 11 4 1 -1. - <_> - 11 11 2 1 2. - 0 - 2.7832679916173220e-003 - 4.8425801098346710e-002 - -3.4922879934310913e-001 - <_> - - <_> - - - - <_> - 8 5 2 3 -1. - <_> - 7 6 2 1 3. - 1 - 2.3268889635801315e-002 - -6.6568560898303986e-002 - 2.6760068535804749e-001 - <_> - - <_> - - - - <_> - 11 0 4 3 -1. - <_> - 12 0 2 3 2. - 0 - 3.1013819389045238e-003 - 7.8247211873531342e-002 - -3.5030668973922729e-001 - <_> - - <_> - - - - <_> - 3 0 4 3 -1. - <_> - 4 0 2 3 2. - 0 - 1.1671819724142551e-002 - 3.1337831169366837e-002 - -4.9763050675392151e-001 - <_> - - <_> - - - - <_> - 17 0 1 10 -1. - <_> - 17 5 1 5 2. - 0 - 4.7239661216735840e-002 - 2.2004479542374611e-002 - -5.3065848350524902e-001 - <_> - - <_> - - - - <_> - 0 0 1 10 -1. - <_> - 0 5 1 5 2. - 0 - -1.4776130206882954e-002 - -3.2586520910263062e-001 - 5.5654410272836685e-002 - <_> - - <_> - - - - <_> - 2 5 15 2 -1. - <_> - 7 5 5 2 3. - 0 - -1.9921749830245972e-001 - -5.2553087472915649e-001 - 3.2468371093273163e-002 - <_> - - <_> - - - - <_> - 4 11 4 1 -1. - <_> - 5 11 2 1 2. - 0 - -4.0785730816423893e-003 - -4.8107388615608215e-001 - 2.9926039278507233e-002 - <_> - - <_> - - - - <_> - 5 9 8 3 -1. - <_> - 5 10 8 1 3. - 0 - -7.1787680499255657e-003 - 1.9346639513969421e-001 - -8.5371166467666626e-002 - <_> - - <_> - - - - <_> - 3 0 1 2 -1. - <_> - 3 0 1 1 2. - 1 - 6.9532832130789757e-003 - 4.7720771282911301e-002 - -3.3479538559913635e-001 - <_> - - <_> - - - - <_> - 9 2 3 3 -1. - <_> - 9 3 3 1 3. - 0 - -1.2821669690310955e-002 - 2.1228149533271790e-001 - -4.3001249432563782e-002 - <_> - - <_> - - - - <_> - 0 8 1 4 -1. - <_> - 0 10 1 2 2. - 0 - -4.7380151227116585e-003 - -4.9310049414634705e-001 - 3.3275339752435684e-002 - <_> - - <_> - - - - <_> - 16 1 1 9 -1. - <_> - 13 4 1 3 3. - 1 - -5.1670171320438385e-002 - 6.1839159578084946e-002 - -8.9411988854408264e-002 - <_> - - <_> - - - - <_> - 2 1 9 1 -1. - <_> - 5 4 3 1 3. - 1 - -1.2189070135354996e-001 - -5.4505228996276855e-001 - 3.2852120697498322e-002 - <_> - - <_> - - - - <_> - 14 8 4 3 -1. - <_> - 14 9 4 1 3. - 0 - -1.5401430428028107e-002 - -3.1807848811149597e-001 - 1.4967699535191059e-002 - <_> - - <_> - - - - <_> - 0 0 2 11 -1. - <_> - 1 0 1 11 2. - 0 - 3.3675070852041245e-002 - -2.7233030647039413e-002 - 5.3073042631149292e-001 - <_> - - <_> - - - - <_> - 16 6 2 6 -1. - <_> - 17 6 1 3 2. - <_> - 16 9 1 3 2. - 0 - 5.6405509822070599e-003 - -3.3072780817747116e-002 - 8.4785066545009613e-002 - <_> - - <_> - - - - <_> - 0 6 2 6 -1. - <_> - 0 6 1 3 2. - <_> - 1 9 1 3 2. - 0 - 5.1956089009763673e-005 - -2.0156539976596832e-001 - 8.2180216908454895e-002 - <_> - - <_> - - - - <_> - 8 6 3 1 -1. - <_> - 9 6 1 1 3. - 0 - -2.8447040822356939e-003 - 1.3294629752635956e-001 - -7.7659137547016144e-002 - <_> - - <_> - - - - <_> - 0 3 12 6 -1. - <_> - 4 3 4 6 3. - 0 - 1.4447699487209320e-001 - 3.8755510002374649e-002 - -3.7729701399803162e-001 - <_> - - <_> - - - - <_> - 10 5 2 4 -1. - <_> - 11 5 1 2 2. - <_> - 10 7 1 2 2. - 0 - 1.5187789686024189e-002 - -1.8020100891590118e-002 - 3.1634598970413208e-001 - <_> - - <_> - - - - <_> - 5 0 8 3 -1. - <_> - 5 1 8 1 3. - 0 - -3.1923990696668625e-002 - 2.9422530531883240e-001 - -4.8749800771474838e-002 - <_> - - <_> - - - - <_> - 8 0 5 3 -1. - <_> - 8 1 5 1 3. - 0 - 1.8610840663313866e-002 - -5.6667249649763107e-002 - 2.1379719674587250e-001 - <_> - - <_> - - - - <_> - 0 4 2 3 -1. - <_> - 0 5 2 1 3. - 0 - 4.9478588625788689e-003 - 4.7943778336048126e-002 - -3.1509420275688171e-001 - <_> - - <_> - - - - <_> - 9 0 6 4 -1. - <_> - 11 0 2 4 3. - 0 - -4.6161081641912460e-002 - -4.7610089182853699e-001 - 2.9308699071407318e-002 - <_> - - <_> - - - - <_> - 6 5 2 4 -1. - <_> - 6 5 1 2 2. - <_> - 7 7 1 2 2. - 0 - 1.1872449889779091e-002 - -3.6026339977979660e-002 - 4.1018471121788025e-001 - <_> - - <_> - - - - <_> - 17 5 1 4 -1. - <_> - 17 6 1 2 2. - 0 - -6.2818480655550957e-003 - -2.1089139580726624e-001 - 2.9605450108647346e-002 - <_> - - <_> - - - - <_> - 0 5 1 4 -1. - <_> - 0 6 1 2 2. - 0 - 3.4704189747571945e-003 - 4.0655650198459625e-002 - -3.3085140585899353e-001 - <_> - - <_> - - - - <_> - 12 3 4 3 -1. - <_> - 11 4 4 1 3. - 1 - 7.5958840548992157e-002 - 3.6941869184374809e-003 - -3.6771050095558167e-001 - <_> - - <_> - - - - <_> - 6 3 3 4 -1. - <_> - 7 4 1 4 3. - 1 - -4.2840991169214249e-002 - 2.3720830678939819e-001 - -6.0800980776548386e-002 - <_> - - <_> - - - - <_> - 13 4 1 4 -1. - <_> - 13 6 1 2 2. - 0 - -1.1817189864814281e-002 - -2.4793669581413269e-001 - 1.3696460053324699e-002 - <_> - - <_> - - - - <_> - 4 4 1 4 -1. - <_> - 4 6 1 2 2. - 0 - 1.2998480349779129e-002 - -6.2347020953893661e-002 - 2.9573059082031250e-001 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - 0 - -5.3825829178094864e-002 - 2.1070300042629242e-001 - -6.8099439144134521e-002 - <_> - - <_> - - - - <_> - 4 0 2 4 -1. - <_> - 5 0 1 4 2. - 0 - -1.0883940383791924e-002 - -4.7151368856430054e-001 - 3.1116139143705368e-002 - <_> - - <_> - - - - <_> - 6 1 6 3 -1. - <_> - 6 2 6 1 3. - 0 - -3.0772840604186058e-002 - 4.0928280353546143e-001 - -4.0188588201999664e-002 - <_> - - <_> - - - - <_> - 0 10 12 2 -1. - <_> - 6 10 6 2 2. - 0 - 2.6424789801239967e-002 - -5.2670851349830627e-002 - 2.5522339344024658e-001 - <_> - - <_> - - - - <_> - 4 1 10 4 -1. - <_> - 4 1 5 4 2. - 0 - 4.2143590748310089e-002 - -1.1854399740695953e-001 - 1.2375999987125397e-001 - <_> - - <_> - - - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - 0 - -6.8667740561068058e-003 - -3.4111011028289795e-001 - 3.9649881422519684e-002 - <_> - - <_> - - - - <_> - 12 4 1 3 -1. - <_> - 12 5 1 1 3. - 0 - -7.9784085974097252e-003 - 2.3357069492340088e-001 - -4.1538249701261520e-002 - <_> - - <_> - - - - <_> - 0 4 12 6 -1. - <_> - 0 4 6 3 2. - <_> - 6 7 6 3 2. - 0 - 1.5251199901103973e-001 - 3.2831441611051559e-002 - -3.8840961456298828e-001 - <_> - - <_> - - - - <_> - 17 7 1 3 -1. - <_> - 17 8 1 1 3. - 0 - -5.2495389245450497e-003 - -2.9752320051193237e-001 - 1.9470980390906334e-002 - <_> - - <_> - - - - <_> - 5 4 1 3 -1. - <_> - 5 5 1 1 3. - 0 - 6.6419220529496670e-003 - -3.4735631197690964e-002 - 3.4990420937538147e-001 - <_> - - <_> - - - - <_> - 13 0 4 4 -1. - <_> - 12 1 4 2 2. - 1 - 1.7110049724578857e-002 - -3.3298000693321228e-002 - 9.1474249958992004e-002 - <_> - - <_> - - - - <_> - 3 8 3 1 -1. - <_> - 4 9 1 1 3. - 1 - -9.7776986658573151e-003 - -4.3720889091491699e-001 - 2.9044499620795250e-002 - <_> - - <_> - - - - <_> - 17 0 1 3 -1. - <_> - 16 1 1 1 3. - 1 - -2.5141129735857248e-003 - 1.2397520244121552e-001 - -7.6406501233577728e-002 - <_> - - <_> - - - - <_> - 7 6 3 1 -1. - <_> - 8 6 1 1 3. - 0 - 6.4081619493663311e-003 - -3.2332200556993484e-002 - 3.6264058947563171e-001 - <_> - - <_> - - - - <_> - 5 6 8 1 -1. - <_> - 7 6 4 1 2. - 0 - -8.7686367332935333e-003 - 1.0199560225009918e-001 - -1.2560969591140747e-001 - <_> - - <_> - - - - <_> - 1 2 4 4 -1. - <_> - 1 2 2 2 2. - <_> - 3 4 2 2 2. - 0 - -6.6744568757712841e-003 - 1.0714609920978546e-001 - -1.1194419860839844e-001 - <_> - - <_> - - - - <_> - 12 3 2 1 -1. - <_> - 12 3 1 1 2. - 1 - -2.5654099881649017e-002 - 6.4865481853485107e-001 - -7.8786844387650490e-003 - <_> - - <_> - - - - <_> - 5 2 2 2 -1. - <_> - 5 2 2 1 2. - 1 - 1.9749540835618973e-002 - 3.7323061376810074e-002 - -3.4825590252876282e-001 - <_> - - <_> - - - - <_> - 12 1 6 3 -1. - <_> - 11 2 6 1 3. - 1 - -2.0802859216928482e-002 - 8.4190078079700470e-002 - -3.6445919424295425e-002 - <_> - - <_> - - - - <_> - 6 1 3 6 -1. - <_> - 7 2 1 6 3. - 1 - 2.2063199430704117e-002 - -5.9582170099020004e-002 - 2.1152189373970032e-001 - <_> - - <_> - - - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - 0 - 5.3523709066212177e-003 - 2.7724659070372581e-002 - -4.0503290295600891e-001 - <_> - - <_> - - - - <_> - 6 10 4 2 -1. - <_> - 7 10 2 2 2. - 0 - 2.5603959802538157e-003 - 5.0967320799827576e-002 - -2.6350560784339905e-001 - <_> - - <_> - - - - <_> - 12 0 4 5 -1. - <_> - 13 1 2 5 2. - 1 - -3.0307959765195847e-002 - 5.4715231060981750e-002 - -9.5685377717018127e-002 - <_> - - <_> - - - - <_> - 3 5 12 7 -1. - <_> - 7 5 4 7 3. - 0 - -2.6106768846511841e-001 - -3.2228010892868042e-001 - 3.1508989632129669e-002 - <_> - - <_> - - - - <_> - 12 5 3 4 -1. - <_> - 13 6 1 4 3. - 1 - -2.8650289401412010e-002 - 3.4172570705413818e-001 - -2.2077450528740883e-002 - <_> - - <_> - - - - <_> - 6 5 4 3 -1. - <_> - 5 6 4 1 3. - 1 - 6.1903461813926697e-002 - -1.6342630609869957e-002 - 6.5226632356643677e-001 - <_> - - <_> - - - - <_> - 5 8 8 4 -1. - <_> - 9 8 4 2 2. - <_> - 5 10 4 2 2. - 0 - -3.1047720462083817e-002 - -3.6522111296653748e-001 - 3.4920029342174530e-002 - <_> - - <_> - - - - <_> - 2 9 12 1 -1. - <_> - 8 9 6 1 2. - 0 - -3.5979911684989929e-002 - 2.1591410040855408e-001 - -5.5970121175050735e-002 - <_> - - <_> - - - - <_> - 0 11 18 1 -1. - <_> - 0 11 9 1 2. - 0 - 5.9886161237955093e-002 - 4.4573429971933365e-002 - -3.0152690410614014e-001 - <_> - - <_> - - - - <_> - 0 7 1 3 -1. - <_> - 0 8 1 1 3. - 0 - 3.9145331829786301e-003 - 3.1792480498552322e-002 - -3.2067620754241943e-001 - <_> - - <_> - - - - <_> - 14 6 1 4 -1. - <_> - 14 6 1 2 2. - 1 - -2.9716869816184044e-002 - -2.5787210464477539e-001 - 3.7697579711675644e-002 - <_> - - <_> - - - - <_> - 5 0 3 3 -1. - <_> - 4 1 3 1 3. - 1 - -2.2731749340891838e-002 - -3.6135891079902649e-001 - 2.9329940676689148e-002 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - 0 - -4.0700128674507141e-001 - -5.6401658058166504e-001 - 1.7949940636754036e-002 - <_> - - <_> - - - - <_> - 4 4 4 4 -1. - <_> - 3 5 4 2 2. - 1 - -1.9415460526943207e-002 - 1.4522629976272583e-001 - -7.1183227002620697e-002 - <_> - - <_> - - - - <_> - 14 6 1 4 -1. - <_> - 14 6 1 2 2. - 1 - -5.8602709032129496e-005 - 2.3447860032320023e-002 - -7.4233293533325195e-002 - <_> - - <_> - - - - <_> - 4 6 4 1 -1. - <_> - 4 6 2 1 2. - 1 - -4.1794691234827042e-002 - -4.3648260831832886e-001 - 3.1634360551834106e-002 - <_> - - <_> - - - - <_> - 1 10 16 1 -1. - <_> - 5 10 8 1 2. - 0 - 3.1113259494304657e-002 - -2.8742879629135132e-002 - 4.2367678880691528e-001 - <_> - - <_> - - - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - 0 - 4.9094129353761673e-003 - 2.8096439316868782e-002 - -3.5525271296501160e-001 - <_> - - <_> - - - - <_> - 2 0 16 4 -1. - <_> - 2 1 16 2 2. - 0 - 4.3127149343490601e-002 - -6.3333027064800262e-002 - 1.2167730182409286e-001 - <_> - - <_> - - - - <_> - 6 0 4 3 -1. - <_> - 6 1 4 1 3. - 0 - -6.1103478074073792e-003 - 1.5755009651184082e-001 - -6.5233632922172546e-002 - <_> - - <_> - - - - <_> - 13 1 3 1 -1. - <_> - 14 2 1 1 3. - 1 - -8.4811979904770851e-003 - -3.1289771199226379e-001 - 4.7166388481855392e-002 - <_> - - <_> - - - - <_> - 4 1 1 8 -1. - <_> - 4 3 1 4 2. - 0 - -1.6476139426231384e-002 - 1.1513979732990265e-001 - -8.6872749030590057e-002 - <_> - - <_> - - - - <_> - 0 2 18 4 -1. - <_> - 0 4 18 2 2. - 0 - -2.7051448822021484e-001 - -4.4175881147384644e-001 - 2.5920050218701363e-002 - <_> - - <_> - - - - <_> - 3 0 3 3 -1. - <_> - 4 1 1 3 3. - 1 - -3.1307939440011978e-002 - 4.0796020627021790e-001 - -2.7346299961209297e-002 - <_> - - <_> - - - - <_> - 15 2 3 3 -1. - <_> - 15 3 3 1 3. - 0 - -8.5358042269945145e-003 - -2.1038420498371124e-001 - 3.9202261716127396e-002 - <_> - - <_> - - - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - 4.6511092223227024e-003 - 4.8896100372076035e-002 - -2.0760509371757507e-001 - <_> - - <_> - - - - <_> - 16 2 2 1 -1. - <_> - 16 2 1 1 2. - 0 - -1.0118389764102176e-004 - 1.2528030574321747e-001 - -2.1875940263271332e-001 - <_> - - <_> - - - - <_> - 9 1 7 3 -1. - <_> - 8 2 7 1 3. - 1 - -2.7405759319663048e-002 - 1.5803159773349762e-001 - -7.3161102831363678e-002 - <_> - - <_> - - - - <_> - 14 5 2 2 -1. - <_> - 14 6 2 1 2. - 0 - 1.3358670286834240e-002 - -1.0327829979360104e-002 - 1.9837729632854462e-001 - <_> - - <_> - - - - <_> - 9 4 2 3 -1. - <_> - 8 5 2 1 3. - 1 - -1.6863640397787094e-002 - 1.5782469511032104e-001 - -8.3013407886028290e-002 - <_> - - <_> - - - - <_> - 10 0 6 5 -1. - <_> - 12 2 2 5 3. - 1 - -4.6753689646720886e-002 - 2.1774150431156158e-002 - -1.2496709823608398e-001 - <_> - - <_> - - - - <_> - 8 0 5 6 -1. - <_> - 6 2 5 2 3. - 1 - -2.4787309765815735e-001 - -5.5887281894683838e-001 - 1.9629070535302162e-002 - <_> - - <_> - - - - <_> - 11 5 3 2 -1. - <_> - 12 5 1 2 3. - 0 - 1.5863390639424324e-002 - -4.4667821377515793e-002 - 3.5529270768165588e-001 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.4960109293460846e-002 - -2.6829180121421814e-001 - 4.8722568899393082e-002 - <_> - - <_> - - - - <_> - 16 4 2 2 -1. - <_> - 17 4 1 1 2. - <_> - 16 5 1 1 2. - 0 - -4.2794410546775907e-005 - 8.3423823118209839e-002 - -7.9932630062103271e-002 - <_> - - <_> - - - - <_> - 4 2 1 3 -1. - <_> - 3 3 1 1 3. - 1 - -1.7223030328750610e-002 - -5.3263998031616211e-001 - 1.9519500434398651e-002 - <_> - - <_> - - - - <_> - 14 0 4 2 -1. - <_> - 14 0 2 2 2. - 0 - -1.3742740266025066e-003 - 7.8433223068714142e-002 - -1.6823059320449829e-001 - <_> - - <_> - - - - <_> - 0 0 4 2 -1. - <_> - 2 0 2 2 2. - 0 - 9.1677848249673843e-003 - -5.8949600905179977e-002 - 1.9434289634227753e-001 - <_> - - <_> - - - - <_> - 1 10 17 2 -1. - <_> - 1 11 17 1 2. - 0 - -2.4254640564322472e-002 - -5.3892469406127930e-001 - 1.2915720231831074e-002 - -1.6296470165252686e+000 - 15 - -1 - <_> - - - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -6.9386109709739685e-002 - 6.7190408706665039e-001 - -2.7040511369705200e-001 - <_> - - <_> - - - - <_> - 14 5 4 3 -1. - <_> - 14 5 2 3 2. - 0 - -9.8521290346980095e-003 - 1.5782390534877777e-001 - -1.1456169933080673e-001 - <_> - - <_> - - - - <_> - 0 5 4 3 -1. - <_> - 2 5 2 3 2. - 0 - -2.3724600672721863e-002 - 3.0622988939285278e-001 - -3.1042310595512390e-001 - <_> - - <_> - - - - <_> - 7 4 11 8 -1. - <_> - 7 8 11 4 2. - 0 - 1.8008269369602203e-001 - -4.3263959884643555e-001 - 3.6715991795063019e-002 - <_> - - <_> - - - - <_> - 7 3 1 3 -1. - <_> - 7 4 1 1 3. - 0 - -7.8437011688947678e-003 - 3.9657589793205261e-001 - -1.3096019625663757e-001 - <_> - - <_> - - - - <_> - 11 6 7 6 -1. - <_> - 11 9 7 3 2. - 0 - 1.4490400254726410e-001 - 6.3096016645431519e-002 - -1.8521189689636230e-001 - <_> - - <_> - - - - <_> - 0 6 7 6 -1. - <_> - 0 9 7 3 2. - 0 - 5.7838220149278641e-002 - -4.3671241402626038e-001 - 9.5829539000988007e-002 - <_> - - <_> - - - - <_> - 6 0 6 3 -1. - <_> - 6 0 3 3 2. - 0 - 8.6507797241210938e-003 - -1.9749960303306580e-001 - 1.3382530212402344e-001 - <_> - - <_> - - - - <_> - 1 10 13 2 -1. - <_> - 1 11 13 1 2. - 0 - 4.4434559531509876e-003 - -2.8863328695297241e-001 - 8.0679617822170258e-002 - <_> - - <_> - - - - <_> - 10 4 1 3 -1. - <_> - 10 5 1 1 3. - 0 - -1.1448189616203308e-002 - 2.0668460428714752e-001 - -2.9727399349212646e-002 - <_> - - <_> - - - - <_> - 4 3 1 3 -1. - <_> - 3 4 1 1 3. - 1 - -1.5179160051047802e-002 - -5.1914721727371216e-001 - 3.8224801421165466e-002 - <_> - - <_> - - - - <_> - 9 3 3 6 -1. - <_> - 10 4 1 6 3. - 1 - -7.7604092657566071e-002 - -4.6431368589401245e-001 - 1.1916999705135822e-002 - <_> - - <_> - - - - <_> - 6 5 6 4 -1. - <_> - 8 5 2 4 3. - 0 - -1.8936419859528542e-002 - 1.1738669872283936e-001 - -1.8909810483455658e-001 - <_> - - <_> - - - - <_> - 7 0 4 4 -1. - <_> - 8 0 2 4 2. - 0 - -1.0080969892442226e-002 - -4.3171709775924683e-001 - 4.2613830417394638e-002 - <_> - - <_> - - - - <_> - 3 0 10 4 -1. - <_> - 3 1 10 2 2. - 0 - 5.0424810498952866e-002 - -8.4850631654262543e-002 - 2.1506150066852570e-001 - <_> - - <_> - - - - <_> - 0 0 18 2 -1. - <_> - 6 0 6 2 3. - 0 - -6.4389303326606750e-002 - 1.7555430531501770e-001 - -1.0601290315389633e-001 - <_> - - <_> - - - - <_> - 2 6 6 2 -1. - <_> - 4 6 2 2 3. - 0 - -2.1437110379338264e-002 - 2.1907110512256622e-001 - -8.4247410297393799e-002 - <_> - - <_> - - - - <_> - 9 0 4 3 -1. - <_> - 10 0 2 3 2. - 0 - -9.1345440596342087e-003 - -4.1084781289100647e-001 - 5.6968819350004196e-002 - <_> - - <_> - - - - <_> - 4 6 3 1 -1. - <_> - 5 6 1 1 3. - 0 - 9.5703564584255219e-003 - -5.5861141532659531e-002 - 3.6446011066436768e-001 - <_> - - <_> - - - - <_> - 14 5 4 3 -1. - <_> - 14 5 2 3 2. - 0 - 9.4563569873571396e-003 - -3.7393100559711456e-002 - 1.3930140435695648e-001 - <_> - - <_> - - - - <_> - 0 5 4 3 -1. - <_> - 2 5 2 3 2. - 0 - -2.3805219680070877e-002 - -1.5813879668712616e-001 - 1.2095350027084351e-001 - <_> - - <_> - - - - <_> - 14 8 4 4 -1. - <_> - 14 9 4 2 2. - 0 - 2.3389449343085289e-002 - 2.1982479840517044e-002 - -4.8894658684730530e-001 - <_> - - <_> - - - - <_> - 4 0 6 2 -1. - <_> - 6 0 2 2 3. - 0 - -1.4841769821941853e-002 - -4.2008030414581299e-001 - 4.2827770113945007e-002 - <_> - - <_> - - - - <_> - 14 8 4 4 -1. - <_> - 14 9 4 2 2. - 0 - -1.9951960071921349e-002 - -3.8262298703193665e-001 - 1.7620539292693138e-002 - <_> - - <_> - - - - <_> - 0 8 4 4 -1. - <_> - 0 9 4 2 2. - 0 - -5.5557182058691978e-003 - -3.3374428749084473e-001 - 4.9041308462619781e-002 - <_> - - <_> - - - - <_> - 14 9 4 3 -1. - <_> - 14 10 4 1 3. - 0 - 7.5748967938125134e-003 - 2.9259499162435532e-002 - -1.7972069978713989e-001 - <_> - - <_> - - - - <_> - 0 9 4 3 -1. - <_> - 0 10 4 1 3. - 0 - 1.0564279742538929e-002 - 3.8666039705276489e-002 - -3.8292339444160461e-001 - <_> - - <_> - - - - <_> - 10 4 1 3 -1. - <_> - 10 5 1 1 3. - 0 - 8.7607624009251595e-003 - -1.6946149989962578e-002 - 1.9596639275550842e-001 - <_> - - <_> - - - - <_> - 9 2 6 2 -1. - <_> - 11 4 2 2 3. - 1 - -8.9941717684268951e-002 - 1.3279989361763000e-001 - -1.0967929661273956e-001 - <_> - - <_> - - - - <_> - 8 0 4 6 -1. - <_> - 8 2 4 2 3. - 0 - -3.2798118889331818e-002 - 2.1123570203781128e-001 - -5.2206270396709442e-002 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -6.9366537034511566e-002 - -3.1673339009284973e-001 - 5.1063869148492813e-002 - <_> - - <_> - - - - <_> - 10 7 2 2 -1. - <_> - 11 7 1 1 2. - <_> - 10 8 1 1 2. - 0 - 4.8841950483620167e-003 - -5.1112260669469833e-002 - 2.8360730409622192e-001 - <_> - - <_> - - - - <_> - 0 7 7 4 -1. - <_> - 0 8 7 2 2. - 0 - 3.5134568810462952e-002 - 3.0124710872769356e-002 - -4.3692100048065186e-001 - <_> - - <_> - - - - <_> - 13 2 3 1 -1. - <_> - 14 3 1 1 3. - 1 - 8.8909007608890533e-003 - 4.1621170938014984e-002 - -3.7158828973770142e-001 - <_> - - <_> - - - - <_> - 5 2 1 3 -1. - <_> - 4 3 1 1 3. - 1 - -1.5983669087290764e-002 - -5.1140671968460083e-001 - 2.4840809404850006e-002 - <_> - - <_> - - - - <_> - 12 3 4 3 -1. - <_> - 11 4 4 1 3. - 1 - -6.4470201730728149e-002 - -2.1385170519351959e-001 - 1.8365900032222271e-003 - <_> - - <_> - - - - <_> - 6 3 3 4 -1. - <_> - 7 4 1 4 3. - 1 - 3.3956471830606461e-002 - -4.1229560971260071e-002 - 3.3696550130844116e-001 - <_> - - <_> - - - - <_> - 10 4 1 3 -1. - <_> - 10 5 1 1 3. - 0 - -2.0578580442816019e-003 - 6.2026239931583405e-002 - -6.6379219293594360e-002 - <_> - - <_> - - - - <_> - 2 5 2 5 -1. - <_> - 3 5 1 5 2. - 0 - -1.9420420285314322e-003 - 7.9117313027381897e-002 - -1.9388359785079956e-001 - <_> - - <_> - - - - <_> - 5 0 10 3 -1. - <_> - 5 1 10 1 3. - 0 - -2.0667409524321556e-002 - 1.7511230707168579e-001 - -5.5765930563211441e-002 - <_> - - <_> - - - - <_> - 5 0 5 3 -1. - <_> - 5 1 5 1 3. - 0 - 1.1788690462708473e-002 - -8.2900352776050568e-002 - 1.5535129606723785e-001 - <_> - - <_> - - - - <_> - 14 0 4 3 -1. - <_> - 14 1 4 1 3. - 0 - 1.8824249505996704e-002 - 3.0222170054912567e-002 - -4.0415239334106445e-001 - <_> - - <_> - - - - <_> - 7 4 1 3 -1. - <_> - 7 5 1 1 3. - 0 - -8.3997547626495361e-003 - 2.0664639770984650e-001 - -6.2480248510837555e-002 - <_> - - <_> - - - - <_> - 6 5 6 4 -1. - <_> - 6 5 3 4 2. - 0 - 5.8516681194305420e-002 - -5.4968580603599548e-002 - 2.5411149859428406e-001 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 12 2. - 0 - 2.0517799258232117e-001 - -6.1518680304288864e-002 - 2.1540619432926178e-001 - <_> - - <_> - - - - <_> - 1 10 16 2 -1. - <_> - 5 10 8 2 2. - 0 - -4.0942661464214325e-002 - 2.0580589771270752e-001 - -6.6298596560955048e-002 - <_> - - <_> - - - - <_> - 5 9 6 3 -1. - <_> - 7 9 2 3 3. - 0 - -2.0694980397820473e-002 - -3.8925689458847046e-001 - 3.6689650267362595e-002 - <_> - - <_> - - - - <_> - 12 0 3 10 -1. - <_> - 13 0 1 10 3. - 0 - 2.5016449391841888e-002 - -3.2912530004978180e-002 - 2.2270810604095459e-001 - <_> - - <_> - - - - <_> - 3 0 3 10 -1. - <_> - 4 0 1 10 3. - 0 - -3.4674070775508881e-002 - -5.1711809635162354e-001 - 2.5168089196085930e-002 - <_> - - <_> - - - - <_> - 9 6 3 2 -1. - <_> - 10 6 1 2 3. - 0 - -3.4877469297498465e-003 - 1.1860589683055878e-001 - -1.0493949800729752e-001 - <_> - - <_> - - - - <_> - 5 0 3 2 -1. - <_> - 6 0 1 2 3. - 0 - 6.0133477672934532e-003 - 3.0495999380946159e-002 - -3.5960870981216431e-001 - <_> - - <_> - - - - <_> - 9 0 6 5 -1. - <_> - 11 0 2 5 3. - 0 - 8.6038149893283844e-003 - 6.1225108802318573e-002 - -2.3886460065841675e-001 - <_> - - <_> - - - - <_> - 6 0 4 4 -1. - <_> - 7 0 2 4 2. - 0 - 7.0930928923189640e-003 - 5.0354178994894028e-002 - -2.4130879342556000e-001 - <_> - - <_> - - - - <_> - 3 0 12 2 -1. - <_> - 9 0 6 1 2. - <_> - 3 1 6 1 2. - 0 - -8.2711968570947647e-003 - 1.7760099470615387e-001 - -6.8700566887855530e-002 - <_> - - <_> - - - - <_> - 7 5 3 3 -1. - <_> - 8 5 1 3 3. - 0 - -7.6021431013941765e-003 - 1.5871450304985046e-001 - -7.1639142930507660e-002 - <_> - - <_> - - - - <_> - 9 6 3 2 -1. - <_> - 10 6 1 2 3. - 0 - -2.9862489551305771e-002 - -3.8224980235099792e-001 - 8.9862719178199768e-003 - <_> - - <_> - - - - <_> - 6 6 3 2 -1. - <_> - 7 6 1 2 3. - 0 - -6.5749119967222214e-003 - 2.2762650251388550e-001 - -6.0182739049196243e-002 - <_> - - <_> - - - - <_> - 10 5 2 3 -1. - <_> - 9 6 2 1 3. - 1 - 2.6771429926156998e-002 - -1.8169719725847244e-002 - 2.0630699396133423e-001 - <_> - - <_> - - - - <_> - 0 5 18 2 -1. - <_> - 6 5 6 2 3. - 0 - -2.6554858684539795e-001 - -4.8712089657783508e-001 - 2.7063539251685143e-002 - <_> - - <_> - - - - <_> - 11 3 4 4 -1. - <_> - 13 3 2 2 2. - <_> - 11 5 2 2 2. - 0 - -2.6141930371522903e-002 - 1.9213640689849854e-001 - -2.7676820755004883e-002 - <_> - - <_> - - - - <_> - 8 5 3 2 -1. - <_> - 9 6 1 2 3. - 1 - -3.9902370423078537e-002 - -4.2627981305122375e-001 - 2.9879650101065636e-002 - <_> - - <_> - - - - <_> - 10 8 6 2 -1. - <_> - 13 8 3 1 2. - <_> - 10 9 3 1 2. - 0 - -3.6611340474337339e-003 - 1.0172230005264282e-001 - -4.3250489979982376e-002 - <_> - - <_> - - - - <_> - 2 8 6 2 -1. - <_> - 2 8 3 1 2. - <_> - 5 9 3 1 2. - 0 - 4.8367520794272423e-003 - -6.7465707659721375e-002 - 1.9671800732612610e-001 - <_> - - <_> - - - - <_> - 8 9 6 2 -1. - <_> - 10 9 2 2 3. - 0 - -1.6790149733424187e-002 - -3.9753469824790955e-001 - 3.7431109696626663e-002 - <_> - - <_> - - - - <_> - 9 6 4 2 -1. - <_> - 9 6 4 1 2. - 1 - -1.2243920005857944e-002 - 5.5608421564102173e-002 - -2.0048050582408905e-001 - <_> - - <_> - - - - <_> - 13 2 3 3 -1. - <_> - 12 3 3 1 3. - 1 - 6.1686821281909943e-002 - -1.0107450187206268e-002 - 2.9090631008148193e-001 - <_> - - <_> - - - - <_> - 5 4 8 4 -1. - <_> - 5 4 4 2 2. - <_> - 9 6 4 2 2. - 0 - -7.1395501494407654e-002 - -6.0413521528244019e-001 - 1.9080249592661858e-002 - <_> - - <_> - - - - <_> - 13 2 3 3 -1. - <_> - 12 3 3 1 3. - 1 - 9.5230207080021501e-005 - -4.3509960174560547e-002 - 4.5345060527324677e-002 - <_> - - <_> - - - - <_> - 6 8 5 4 -1. - <_> - 6 9 5 2 2. - 0 - -1.0757230222225189e-002 - 1.9926990568637848e-001 - -5.0487600266933441e-002 - <_> - - <_> - - - - <_> - 13 4 3 1 -1. - <_> - 14 5 1 1 3. - 1 - 2.2588269785046577e-002 - -1.5318900346755981e-002 - 1.7491130530834198e-001 - <_> - - <_> - - - - <_> - 5 4 1 3 -1. - <_> - 4 5 1 1 3. - 1 - -2.1975219249725342e-002 - -4.5546808838844299e-001 - 2.2921970114111900e-002 - <_> - - <_> - - - - <_> - 13 2 3 3 -1. - <_> - 12 3 3 1 3. - 1 - -1.8598889932036400e-002 - 6.3289977610111237e-002 - -2.2360650822520256e-002 - <_> - - <_> - - - - <_> - 5 2 3 3 -1. - <_> - 6 3 1 3 3. - 1 - 4.1398629546165466e-002 - -2.9707899317145348e-002 - 3.4164550900459290e-001 - <_> - - <_> - - - - <_> - 14 0 4 3 -1. - <_> - 13 1 4 1 3. - 1 - -1.5574470162391663e-002 - 1.1719810217618942e-001 - -5.0286509096622467e-002 - <_> - - <_> - - - - <_> - 3 3 3 2 -1. - <_> - 3 4 3 1 2. - 0 - -2.9469770379364491e-003 - 9.2899397015571594e-002 - -1.4018329977989197e-001 - <_> - - <_> - - - - <_> - 4 3 14 6 -1. - <_> - 11 3 7 3 2. - <_> - 4 6 7 3 2. - 0 - 1.5679700300097466e-003 - -4.5396000146865845e-002 - 5.7984590530395508e-002 - <_> - - <_> - - - - <_> - 2 3 8 6 -1. - <_> - 2 3 4 3 2. - <_> - 6 6 4 3 2. - 0 - 1.2352210283279419e-001 - 1.8805639818310738e-002 - -5.6560719013214111e-001 - <_> - - <_> - - - - <_> - 16 4 2 3 -1. - <_> - 16 5 2 1 3. - 0 - -1.0430569818709046e-004 - 8.0288991332054138e-002 - -1.1547219753265381e-001 - <_> - - <_> - - - - <_> - 0 4 2 3 -1. - <_> - 0 5 2 1 3. - 0 - -9.7123868763446808e-003 - -3.7258410453796387e-001 - 3.0633870512247086e-002 - <_> - - <_> - - - - <_> - 12 4 2 1 -1. - <_> - 12 4 1 1 2. - 1 - -1.7766250297427177e-002 - 1.8392249941825867e-001 - -3.2872468233108521e-002 - <_> - - <_> - - - - <_> - 6 4 1 2 -1. - <_> - 6 4 1 1 2. - 1 - 1.5392260684166104e-004 - -1.1578179895877838e-001 - 9.7096182405948639e-002 - <_> - - <_> - - - - <_> - 17 4 1 3 -1. - <_> - 17 5 1 1 3. - 0 - -3.6866529844701290e-003 - -2.7469968795776367e-001 - 5.0014968961477280e-002 - <_> - - <_> - - - - <_> - 9 2 2 8 -1. - <_> - 9 2 2 4 2. - 1 - -1.6139489412307739e-001 - 1.6754530370235443e-001 - -6.5458148717880249e-002 - <_> - - <_> - - - - <_> - 2 0 16 12 -1. - <_> - 2 0 8 12 2. - 0 - -2.0767639577388763e-001 - 5.1562719047069550e-002 - -1.7276130616664886e-002 - <_> - - <_> - - - - <_> - 4 3 10 3 -1. - <_> - 4 4 10 1 3. - 0 - 3.3081259578466415e-002 - -4.6209480613470078e-002 - 2.2093529999256134e-001 - <_> - - <_> - - - - <_> - 7 3 4 3 -1. - <_> - 7 4 4 1 3. - 0 - -1.0417399927973747e-002 - 1.2907770276069641e-001 - -8.3780996501445770e-002 - <_> - - <_> - - - - <_> - 0 4 1 3 -1. - <_> - 0 5 1 1 3. - 0 - 3.3997350838035345e-003 - 3.1802389770746231e-002 - -2.9635548591613770e-001 - <_> - - <_> - - - - <_> - 13 1 5 3 -1. - <_> - 12 2 5 1 3. - 1 - -1.5930660068988800e-002 - 1.0412970185279846e-001 - -6.9342762231826782e-002 - <_> - - <_> - - - - <_> - 0 4 12 7 -1. - <_> - 4 4 4 7 3. - 0 - -2.3908320069313049e-001 - -5.0697857141494751e-001 - 2.0860239863395691e-002 - <_> - - <_> - - - - <_> - 12 4 2 2 -1. - <_> - 13 4 1 1 2. - <_> - 12 5 1 1 2. - 0 - 4.0117949247360229e-003 - -2.8569610789418221e-002 - 1.7320330440998077e-001 - <_> - - <_> - - - - <_> - 6 2 4 3 -1. - <_> - 7 2 2 3 2. - 0 - -5.7363999076187611e-003 - -1.8128049373626709e-001 - 5.3030159324407578e-002 - <_> - - <_> - - - - <_> - 12 4 2 2 -1. - <_> - 13 4 1 1 2. - <_> - 12 5 1 1 2. - 0 - -2.1724679972976446e-003 - 1.4318360388278961e-001 - -4.6536020934581757e-002 - <_> - - <_> - - - - <_> - 6 2 3 3 -1. - <_> - 6 3 3 1 3. - 0 - -1.1111910454928875e-002 - 2.0232780277729034e-001 - -4.8444561660289764e-002 - <_> - - <_> - - - - <_> - 11 4 1 2 -1. - <_> - 11 5 1 1 2. - 0 - -1.0085949907079339e-004 - 5.5502779781818390e-002 - -6.3348926603794098e-002 - <_> - - <_> - - - - <_> - 6 4 1 6 -1. - <_> - 4 6 1 2 3. - 1 - -2.1863000467419624e-002 - 1.3861429691314697e-001 - -7.0301473140716553e-002 - <_> - - <_> - - - - <_> - 4 5 14 7 -1. - <_> - 4 5 7 7 2. - 0 - 2.9870280623435974e-001 - 5.3018219769001007e-003 - -4.9552699923515320e-001 - <_> - - <_> - - - - <_> - 0 5 16 7 -1. - <_> - 8 5 8 7 2. - 0 - -2.9273781180381775e-001 - 2.2202910482883453e-001 - -5.9545800089836121e-002 - <_> - - <_> - - - - <_> - 4 11 14 1 -1. - <_> - 4 11 7 1 2. - 0 - 5.7936239987611771e-002 - 1.7134670168161392e-002 - -6.2441098690032959e-001 - <_> - - <_> - - - - <_> - 0 11 12 1 -1. - <_> - 6 11 6 1 2. - 0 - 8.2372408360242844e-003 - -6.5199822187423706e-002 - 1.7533220350742340e-001 - <_> - - <_> - - - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - 1 - 1.0964090004563332e-002 - 2.3662520572543144e-002 - -3.8045209646224976e-001 - <_> - - <_> - - - - <_> - 4 4 2 2 -1. - <_> - 4 4 1 1 2. - <_> - 5 5 1 1 2. - 0 - -1.9963670056313276e-003 - 1.6336169838905334e-001 - -6.1245940625667572e-002 - <_> - - <_> - - - - <_> - 12 3 2 2 -1. - <_> - 12 3 1 2 2. - 1 - -2.6385689154267311e-002 - 1.3814860582351685e-001 - -1.7998920753598213e-002 - <_> - - <_> - - - - <_> - 6 3 2 2 -1. - <_> - 6 3 2 1 2. - 1 - 2.4890769273042679e-002 - 2.2105880081653595e-002 - -4.3824601173400879e-001 - <_> - - <_> - - - - <_> - 7 2 5 3 -1. - <_> - 7 3 5 1 3. - 0 - 3.3625978976488113e-002 - -4.6475131064653397e-002 - 1.9136969745159149e-001 - <_> - - <_> - - - - <_> - 1 2 2 7 -1. - <_> - 2 2 1 7 2. - 0 - -2.6936049107462168e-003 - 6.9527350366115570e-002 - -1.3958020508289337e-001 - <_> - - <_> - - - - <_> - 14 0 4 2 -1. - <_> - 14 0 4 1 2. - 1 - -1.6001410782337189e-002 - 1.7003299295902252e-001 - -2.2912779822945595e-002 - <_> - - <_> - - - - <_> - 4 0 2 4 -1. - <_> - 4 0 1 4 2. - 1 - -2.2382080554962158e-002 - 2.7026671171188354e-001 - -4.0354069322347641e-002 - <_> - - <_> - - - - <_> - 11 3 5 8 -1. - <_> - 11 7 5 4 2. - 0 - -9.0552508831024170e-002 - -7.1423888206481934e-001 - 8.3871074020862579e-003 - <_> - - <_> - - - - <_> - 1 6 2 6 -1. - <_> - 1 6 1 3 2. - <_> - 2 9 1 3 2. - 0 - 1.9464749842882156e-002 - 2.0357880741357803e-002 - -5.0658088922500610e-001 - <_> - - <_> - - - - <_> - 13 1 5 3 -1. - <_> - 12 2 5 1 3. - 1 - -8.7326802313327789e-003 - 4.5126538723707199e-002 - -4.7429598867893219e-002 - <_> - - <_> - - - - <_> - 0 10 8 2 -1. - <_> - 2 10 4 2 2. - 0 - 2.2775048855692148e-003 - -1.0658310353755951e-001 - 1.0186749696731567e-001 - <_> - - <_> - - - - <_> - 13 1 5 3 -1. - <_> - 12 2 5 1 3. - 1 - 3.3961221575737000e-002 - -9.4395978376269341e-003 - 8.8545367121696472e-002 - <_> - - <_> - - - - <_> - 5 1 3 5 -1. - <_> - 6 2 1 5 3. - 1 - -3.6761499941349030e-002 - 2.4322110414505005e-001 - -4.4136319309473038e-002 - <_> - - <_> - - - - <_> - 12 3 2 2 -1. - <_> - 13 3 1 1 2. - <_> - 12 4 1 1 2. - 0 - -1.1103870201623067e-004 - 4.3608471751213074e-002 - -4.5845959335565567e-002 - <_> - - <_> - - - - <_> - 4 3 2 2 -1. - <_> - 4 3 1 1 2. - <_> - 5 4 1 1 2. - 0 - -1.0285600001225248e-004 - 9.3662150204181671e-002 - -1.0273990035057068e-001 - <_> - - <_> - - - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - 1.0630009695887566e-002 - 3.1317610293626785e-002 - -4.0388751029968262e-001 - <_> - - <_> - - - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - -1.8916089087724686e-002 - -6.6609549522399902e-001 - 1.2026290409266949e-002 - <_> - - <_> - - - - <_> - 14 1 3 6 -1. - <_> - 15 2 1 6 3. - 1 - 4.4989351183176041e-002 - -2.2083500400185585e-002 - 3.1624680757522583e-001 - <_> - - <_> - - - - <_> - 8 7 2 3 -1. - <_> - 8 8 2 1 3. - 0 - -9.3135945498943329e-003 - 2.4396809935569763e-001 - -3.4472171217203140e-002 - <_> - - <_> - - - - <_> - 13 10 2 1 -1. - <_> - 13 10 1 1 2. - 0 - -1.1829029972432181e-004 - 7.6737791299819946e-002 - -7.4983909726142883e-002 - <_> - - <_> - - - - <_> - 0 6 15 4 -1. - <_> - 0 8 15 2 2. - 0 - -3.6458101123571396e-002 - -6.8958371877670288e-001 - 1.3191980309784412e-002 - <_> - - <_> - - - - <_> - 9 11 6 1 -1. - <_> - 11 11 2 1 3. - 0 - -1.8806230509653687e-003 - 7.5947493314743042e-002 - -4.7749940305948257e-002 - <_> - - <_> - - - - <_> - 3 11 6 1 -1. - <_> - 5 11 2 1 3. - 0 - 8.1947557628154755e-003 - 2.6319609954953194e-002 - -3.6540159583091736e-001 - <_> - - <_> - - - - <_> - 8 11 4 1 -1. - <_> - 9 11 2 1 2. - 0 - -4.3926942162215710e-003 - -4.3237671256065369e-001 - 1.5065680257976055e-002 - <_> - - <_> - - - - <_> - 7 5 3 3 -1. - <_> - 8 6 1 1 9. - 0 - -2.3078089579939842e-002 - 1.3706269860267639e-001 - -6.0588121414184570e-002 - <_> - - <_> - - - - <_> - 0 4 18 4 -1. - <_> - 9 4 9 2 2. - <_> - 0 6 9 2 2. - 0 - -1.5273529291152954e-001 - -4.8930040001869202e-001 - 1.8007790669798851e-002 - <_> - - <_> - - - - <_> - 0 0 16 12 -1. - <_> - 8 0 8 12 2. - 0 - 5.0859832763671875e-001 - -1.8213309347629547e-002 - 5.0210291147232056e-001 - <_> - - <_> - - - - <_> - 2 2 16 2 -1. - <_> - 2 2 8 2 2. - 0 - 5.1210429519414902e-003 - -9.2683613300323486e-002 - 7.1713283658027649e-002 - <_> - - <_> - - - - <_> - 3 0 9 6 -1. - <_> - 3 2 9 2 3. - 0 - -1.5781129896640778e-001 - 4.0578329563140869e-001 - -2.4888839572668076e-002 - <_> - - <_> - - - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - 1 - -1.0054220445454121e-002 - -2.6102149486541748e-001 - 2.1513199433684349e-002 - <_> - - <_> - - - - <_> - 3 0 1 2 -1. - <_> - 3 0 1 1 2. - 1 - 1.0722960345447063e-002 - 2.1149590611457825e-002 - -4.4449388980865479e-001 - <_> - - <_> - - - - <_> - 17 0 1 3 -1. - <_> - 16 1 1 1 3. - 1 - -4.4461651705205441e-003 - 1.4982509613037109e-001 - -6.8097911775112152e-002 - <_> - - <_> - - - - <_> - 4 2 2 2 -1. - <_> - 4 2 1 1 2. - <_> - 5 3 1 1 2. - 0 - -1.0270509665133432e-004 - 9.1675288975238800e-002 - -9.6970669925212860e-002 - <_> - - <_> - - - - <_> - 13 0 3 3 -1. - <_> - 14 1 1 3 3. - 1 - -2.3320950567722321e-002 - -1.9236829876899719e-001 - 3.7209238857030869e-002 - <_> - - <_> - - - - <_> - 5 3 5 3 -1. - <_> - 4 4 5 1 3. - 1 - -2.6009110733866692e-002 - 1.7083279788494110e-001 - -5.8662418276071548e-002 - <_> - - <_> - - - - <_> - 12 5 6 7 -1. - <_> - 14 5 2 7 3. - 0 - -1.3390360400080681e-002 - 1.3289719820022583e-001 - -1.0905700176954269e-001 - <_> - - <_> - - - - <_> - 0 0 4 2 -1. - <_> - 2 0 2 2 2. - 0 - 1.1657520197331905e-002 - -4.7384869307279587e-002 - 1.9837440550327301e-001 - <_> - - <_> - - - - <_> - 3 1 15 1 -1. - <_> - 8 1 5 1 3. - 0 - -1.5216249972581863e-002 - 9.0810291469097137e-002 - -8.1595033407211304e-002 - <_> - - <_> - - - - <_> - 4 2 8 2 -1. - <_> - 4 2 4 1 2. - <_> - 8 3 4 1 2. - 0 - -5.0137271173298359e-003 - 1.3411369919776917e-001 - -8.9783012866973877e-002 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - -2.8997131157666445e-003 - 1.3354049623012543e-001 - -2.7490219101309776e-002 - <_> - - <_> - - - - <_> - 3 4 12 8 -1. - <_> - 3 8 12 4 2. - 0 - 4.5744711160659790e-001 - -6.3561663031578064e-002 - 1.5566839277744293e-001 - <_> - - <_> - - - - <_> - 12 5 6 6 -1. - <_> - 14 5 2 6 3. - 0 - -1.3599389791488647e-001 - -4.9014529585838318e-001 - 9.3379104509949684e-003 - <_> - - <_> - - - - <_> - 0 5 6 6 -1. - <_> - 2 5 2 6 3. - 0 - -3.2645169645547867e-002 - 1.6510139405727386e-001 - -6.5266229212284088e-002 - <_> - - <_> - - - - <_> - 10 2 6 1 -1. - <_> - 10 2 3 1 2. - 1 - 8.3665400743484497e-002 - -4.8871468752622604e-003 - 7.4069589376449585e-001 - <_> - - <_> - - - - <_> - 8 2 1 6 -1. - <_> - 8 2 1 3 2. - 1 - -6.5547451376914978e-002 - 4.9933698773384094e-001 - -1.6801070421934128e-002 - <_> - - <_> - - - - <_> - 9 5 4 2 -1. - <_> - 11 5 2 1 2. - <_> - 9 6 2 1 2. - 0 - -7.5683398172259331e-003 - 9.0739540755748749e-002 - -3.3331640064716339e-002 - <_> - - <_> - - - - <_> - 5 5 4 2 -1. - <_> - 5 5 2 1 2. - <_> - 7 6 2 1 2. - 0 - 1.2663889676332474e-002 - -3.5381950438022614e-002 - 2.8114819526672363e-001 - <_> - - <_> - - - - <_> - 13 10 2 1 -1. - <_> - 13 10 1 1 2. - 0 - 1.0308570199413225e-004 - -6.0301329940557480e-002 - 9.2195279896259308e-002 - <_> - - <_> - - - - <_> - 3 10 2 1 -1. - <_> - 4 10 1 1 2. - 0 - -8.6807813204359263e-005 - 9.1417297720909119e-002 - -1.0815770179033279e-001 - <_> - - <_> - - - - <_> - 17 4 1 6 -1. - <_> - 17 6 1 2 3. - 0 - 7.5817271135747433e-003 - 2.9872510582208633e-002 - -1.7231559753417969e-001 - <_> - - <_> - - - - <_> - 0 0 1 8 -1. - <_> - 0 4 1 4 2. - 0 - 2.0975960418581963e-002 - 4.0259808301925659e-002 - -2.1657769381999969e-001 - <_> - - <_> - - - - <_> - 16 0 2 4 -1. - <_> - 16 1 2 2 2. - 0 - 1.2732270173728466e-002 - 2.3903559893369675e-002 - -3.2514059543609619e-001 - <_> - - <_> - - - - <_> - 1 0 3 1 -1. - <_> - 2 1 1 1 3. - 1 - -8.6572989821434021e-003 - 2.0860520005226135e-001 - -4.3289590626955032e-002 - <_> - - <_> - - - - <_> - 15 2 3 3 -1. - <_> - 15 3 3 1 3. - 0 - 9.5848739147186279e-003 - 4.0576349943876266e-002 - -2.5737819075584412e-001 - <_> - - <_> - - - - <_> - 2 0 14 4 -1. - <_> - 2 1 14 2 2. - 0 - 2.6772130280733109e-002 - -8.6598917841911316e-002 - 1.0538879781961441e-001 - <_> - - <_> - - - - <_> - 6 1 6 3 -1. - <_> - 6 2 6 1 3. - 0 - -1.4040360227227211e-002 - 1.9790090620517731e-001 - -5.0357129424810410e-002 - <_> - - <_> - - - - <_> - 4 10 2 2 -1. - <_> - 4 10 1 1 2. - <_> - 5 11 1 1 2. - 0 - 9.7764357633423060e-005 - -9.0779386460781097e-002 - 9.9890656769275665e-002 - <_> - - <_> - - - - <_> - 11 0 3 3 -1. - <_> - 12 0 1 3 3. - 0 - -6.4859418198466301e-003 - -2.3571990430355072e-001 - 4.4631820172071457e-002 - <_> - - <_> - - - - <_> - 4 10 2 2 -1. - <_> - 4 10 1 1 2. - <_> - 5 11 1 1 2. - 0 - -1.1004119733115658e-004 - 1.1131180077791214e-001 - -8.0598853528499603e-002 - <_> - - <_> - - - - <_> - 12 3 3 1 -1. - <_> - 13 4 1 1 3. - 1 - 3.5401768982410431e-002 - -4.6270359307527542e-003 - 3.5879731178283691e-001 - <_> - - <_> - - - - <_> - 6 3 1 3 -1. - <_> - 5 4 1 1 3. - 1 - 3.8854090962558985e-003 - 4.6248920261859894e-002 - -1.9142200052738190e-001 - <_> - - <_> - - - - <_> - 15 2 3 3 -1. - <_> - 15 3 3 1 3. - 0 - -2.7548590674996376e-002 - -4.6502590179443359e-001 - 6.3705849461257458e-003 - <_> - - <_> - - - - <_> - 1 3 2 2 -1. - <_> - 1 3 1 1 2. - <_> - 2 4 1 1 2. - 0 - 1.2218310439493507e-004 - -6.8593278527259827e-002 - 1.2230750173330307e-001 - <_> - - <_> - - - - <_> - 15 2 3 3 -1. - <_> - 15 3 3 1 3. - 0 - -1.0193839989369735e-004 - 4.5737609267234802e-002 - -4.4129759073257446e-002 - <_> - - <_> - - - - <_> - 0 2 3 3 -1. - <_> - 0 3 3 1 3. - 0 - 1.4042990282177925e-002 - 2.5051740929484367e-002 - -3.3193638920783997e-001 - <_> - - <_> - - - - <_> - 15 3 2 2 -1. - <_> - 16 3 1 1 2. - <_> - 15 4 1 1 2. - 0 - -9.1185698693152517e-005 - 4.5867718756198883e-002 - -4.8201519995927811e-002 - <_> - - <_> - - - - <_> - 0 2 4 4 -1. - <_> - 0 3 4 2 2. - 0 - -1.3652809895575047e-002 - -2.2167709469795227e-001 - 3.6618560552597046e-002 - <_> - - <_> - - - - <_> - 14 4 3 1 -1. - <_> - 15 4 1 1 3. - 0 - -1.3016860000789165e-002 - -6.6395550966262817e-001 - 6.4530200324952602e-003 - <_> - - <_> - - - - <_> - 1 4 3 1 -1. - <_> - 2 4 1 1 3. - 0 - -3.0348210129886866e-003 - 1.9975389540195465e-001 - -4.4125560671091080e-002 - -1.5289800167083740e+000 - 16 - -1 - <_> - - - <_> - - <_> - - - - <_> - 4 7 4 1 -1. - <_> - 5 7 2 1 2. - 0 - 8.8687296956777573e-003 - -3.2520338892936707e-001 - 7.5342357158660889e-001 - <_> - - <_> - - - - <_> - 7 3 5 3 -1. - <_> - 7 4 5 1 3. - 0 - -2.8394820168614388e-002 - 5.3487628698348999e-001 - -1.6648720204830170e-001 - <_> - - <_> - - - - <_> - 9 3 4 3 -1. - <_> - 8 4 4 1 3. - 1 - -3.0085170641541481e-002 - 3.2912710309028625e-001 - -2.3674790561199188e-001 - <_> - - <_> - - - - <_> - 9 5 3 2 -1. - <_> - 10 5 1 2 3. - 0 - -8.8486373424530029e-003 - 3.1169471144676208e-001 - -1.4142170548439026e-001 - <_> - - <_> - - - - <_> - 6 5 3 3 -1. - <_> - 7 5 1 3 3. - 0 - 1.4256549999117851e-002 - -1.0750769823789597e-001 - 4.5222070813179016e-001 - <_> - - <_> - - - - <_> - 5 6 10 6 -1. - <_> - 10 6 5 3 2. - <_> - 5 9 5 3 2. - 0 - -2.0950550213456154e-002 - -1.9999259710311890e-001 - 5.3246650844812393e-002 - <_> - - <_> - - - - <_> - 4 2 8 8 -1. - <_> - 4 2 4 4 2. - <_> - 8 6 4 4 2. - 0 - -6.9642797112464905e-002 - -4.6795380115509033e-001 - 5.3968351334333420e-002 - <_> - - <_> - - - - <_> - 14 2 3 4 -1. - <_> - 13 3 3 2 2. - 1 - -6.3666269183158875e-002 - -2.7843418717384338e-001 - 1.0408580303192139e-002 - <_> - - <_> - - - - <_> - 4 2 4 3 -1. - <_> - 5 3 2 3 2. - 1 - -4.7214139252901077e-002 - 2.9560580849647522e-001 - -9.3614630401134491e-002 - <_> - - <_> - - - - <_> - 10 3 2 3 -1. - <_> - 10 4 2 1 3. - 0 - 1.4078790321946144e-002 - -4.5739430934190750e-002 - 3.3025279641151428e-001 - <_> - - <_> - - - - <_> - 5 4 3 4 -1. - <_> - 6 4 1 4 3. - 0 - -1.0570909827947617e-002 - 3.6789980530738831e-001 - -5.9032700955867767e-002 - <_> - - <_> - - - - <_> - 11 5 3 3 -1. - <_> - 12 5 1 3 3. - 0 - 1.2845669873058796e-002 - -1.1354859918355942e-001 - 3.0396461486816406e-001 - <_> - - <_> - - - - <_> - 4 7 4 1 -1. - <_> - 5 7 2 1 2. - 0 - 8.8591687381267548e-003 - 7.5328573584556580e-002 - -3.4735369682312012e-001 - <_> - - <_> - - - - <_> - 10 7 3 1 -1. - <_> - 11 7 1 1 3. - 0 - 8.7100565433502197e-003 - -2.5546409189701080e-002 - 3.1419700384140015e-001 - <_> - - <_> - - - - <_> - 1 5 4 3 -1. - <_> - 3 5 2 3 2. - 0 - -2.4336729198694229e-002 - 1.5685400366783142e-001 - -1.4091870188713074e-001 - <_> - - <_> - - - - <_> - 16 2 2 10 -1. - <_> - 16 7 2 5 2. - 0 - 2.0705789327621460e-002 - -1.3573260605335236e-001 - 9.9381998181343079e-002 - <_> - - <_> - - - - <_> - 6 3 2 3 -1. - <_> - 6 4 2 1 3. - 0 - 6.4271190203726292e-003 - -8.6527682840824127e-002 - 2.5319969654083252e-001 - <_> - - <_> - - - - <_> - 3 5 12 2 -1. - <_> - 3 6 12 1 2. - 0 - 1.4646859839558601e-002 - -1.3291080296039581e-001 - 1.4640970528125763e-001 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - 0 - -2.0743489265441895e-002 - 1.4069710671901703e-001 - -1.3886369764804840e-001 - <_> - - <_> - - - - <_> - 8 0 4 3 -1. - <_> - 9 0 2 3 2. - 0 - -9.7419740632176399e-003 - -5.1748061180114746e-001 - 4.0649030357599258e-002 - <_> - - <_> - - - - <_> - 6 0 4 3 -1. - <_> - 7 0 2 3 2. - 0 - -6.0930829495191574e-003 - -4.0435808897018433e-001 - 4.6360980719327927e-002 - <_> - - <_> - - - - <_> - 8 2 4 3 -1. - <_> - 8 3 4 1 3. - 0 - -2.5379290804266930e-002 - 3.0655589699745178e-001 - -3.5374239087104797e-002 - <_> - - <_> - - - - <_> - 2 1 8 1 -1. - <_> - 4 3 4 1 2. - 1 - -6.1475291848182678e-002 - -3.8354039192199707e-001 - 4.7201968729496002e-002 - <_> - - <_> - - - - <_> - 6 10 6 2 -1. - <_> - 8 10 2 2 3. - 0 - 1.2456119991838932e-002 - 3.3344469964504242e-002 - -4.9855390191078186e-001 - <_> - - <_> - - - - <_> - 6 7 6 3 -1. - <_> - 6 8 6 1 3. - 0 - 2.1596459671854973e-002 - -7.4448928236961365e-002 - 2.3217280209064484e-001 - <_> - - <_> - - - - <_> - 0 8 18 4 -1. - <_> - 0 10 18 2 2. - 0 - 3.2071918249130249e-002 - -3.6879450082778931e-001 - 5.1230560988187790e-002 - <_> - - <_> - - - - <_> - 5 4 3 1 -1. - <_> - 6 5 1 1 3. - 1 - -1.7727240920066833e-002 - 2.6015728712081909e-001 - -6.7504949867725372e-002 - <_> - - <_> - - - - <_> - 10 5 4 2 -1. - <_> - 12 5 2 1 2. - <_> - 10 6 2 1 2. - 0 - -1.2539019808173180e-002 - 2.1004550158977509e-001 - -2.3079540580511093e-002 - <_> - - <_> - - - - <_> - 6 4 3 3 -1. - <_> - 7 5 1 3 3. - 1 - 1.5370660461485386e-002 - -7.7269732952117920e-002 - 2.3955790698528290e-001 - <_> - - <_> - - - - <_> - 16 10 2 2 -1. - <_> - 16 11 2 1 2. - 0 - -5.0980560481548309e-003 - -4.3999078869819641e-001 - 1.7386879771947861e-002 - <_> - - <_> - - - - <_> - 0 10 2 2 -1. - <_> - 0 11 2 1 2. - 0 - -2.8011109679937363e-003 - -4.4160670042037964e-001 - 3.2729189842939377e-002 - <_> - - <_> - - - - <_> - 17 8 1 4 -1. - <_> - 17 9 1 2 2. - 0 - -1.5965040074661374e-003 - -1.4084090292453766e-001 - 4.0539931505918503e-002 - <_> - - <_> - - - - <_> - 0 8 1 4 -1. - <_> - 0 9 1 2 2. - 0 - -1.9109409768134356e-003 - -2.8206449747085571e-001 - 5.5733498185873032e-002 - <_> - - <_> - - - - <_> - 12 5 6 2 -1. - <_> - 15 5 3 1 2. - <_> - 12 6 3 1 2. - 0 - 5.7939320802688599e-002 - -1.5600599581375718e-003 - -7.8283268213272095e-001 - <_> - - <_> - - - - <_> - 0 5 6 2 -1. - <_> - 0 5 3 1 2. - <_> - 3 6 3 1 2. - 0 - -7.5398529879748821e-003 - 2.0363679528236389e-001 - -7.2035230696201324e-002 - <_> - - <_> - - - - <_> - 10 0 4 4 -1. - <_> - 11 0 2 4 2. - 0 - 4.2799189686775208e-003 - 5.1637120544910431e-002 - -2.6890641450881958e-001 - <_> - - <_> - - - - <_> - 7 6 2 2 -1. - <_> - 7 6 1 1 2. - <_> - 8 7 1 1 2. - 0 - -3.8095400668680668e-003 - 3.0433818697929382e-001 - -4.3821170926094055e-002 - <_> - - <_> - - - - <_> - 16 3 2 3 -1. - <_> - 16 4 2 1 3. - 0 - 6.6761439666152000e-003 - 4.3164499104022980e-002 - -3.7114360928535461e-001 - <_> - - <_> - - - - <_> - 3 5 4 2 -1. - <_> - 3 5 2 1 2. - <_> - 5 6 2 1 2. - 0 - -7.2293779812753201e-003 - 2.7686190605163574e-001 - -5.2161470055580139e-002 - <_> - - <_> - - - - <_> - 3 1 15 4 -1. - <_> - 3 2 15 2 2. - 0 - 4.3478921055793762e-002 - -7.0697076618671417e-002 - 1.4227619767189026e-001 - <_> - - <_> - - - - <_> - 7 1 4 3 -1. - <_> - 8 1 2 3 2. - 0 - 8.6060278117656708e-003 - 3.9228759706020355e-002 - -3.4136408567428589e-001 - <_> - - <_> - - - - <_> - 7 0 6 3 -1. - <_> - 7 1 6 1 3. - 0 - 1.6463410109281540e-002 - -7.1609079837799072e-002 - 1.5261730551719666e-001 - <_> - - <_> - - - - <_> - 0 0 13 3 -1. - <_> - 0 1 13 1 3. - 0 - -2.6798190549015999e-002 - 2.5057008862495422e-001 - -6.0030229389667511e-002 - <_> - - <_> - - - - <_> - 16 3 2 3 -1. - <_> - 16 4 2 1 3. - 0 - -1.3578269630670547e-002 - -5.7186329364776611e-001 - 2.3683719336986542e-002 - <_> - - <_> - - - - <_> - 3 2 3 2 -1. - <_> - 3 3 3 1 2. - 0 - -5.4585109464824200e-003 - 1.3189469277858734e-001 - -1.0400889813899994e-001 - <_> - - <_> - - - - <_> - 17 4 1 2 -1. - <_> - 17 5 1 1 2. - 0 - -1.0323669994249940e-004 - 8.6108498275279999e-002 - -7.8769676387310028e-002 - <_> - - <_> - - - - <_> - 0 4 1 2 -1. - <_> - 0 5 1 1 2. - 0 - -4.0363529697060585e-003 - -4.4107070565223694e-001 - 3.1886640936136246e-002 - <_> - - <_> - - - - <_> - 6 5 12 3 -1. - <_> - 9 5 6 3 2. - 0 - -2.5648690760135651e-002 - 7.3849938809871674e-002 - -9.3154169619083405e-002 - <_> - - <_> - - - - <_> - 5 9 8 3 -1. - <_> - 5 10 8 1 3. - 0 - -6.7097870633006096e-003 - 1.6499599814414978e-001 - -7.4880279600620270e-002 - <_> - - <_> - - - - <_> - 16 6 2 6 -1. - <_> - 16 6 1 6 2. - 0 - -9.9235828965902328e-003 - 1.8079340457916260e-001 - -6.5171472728252411e-002 - <_> - - <_> - - - - <_> - 4 10 3 2 -1. - <_> - 5 10 1 2 3. - 0 - -6.9562699645757675e-003 - -5.2876442670822144e-001 - 2.5368360802531242e-002 - <_> - - <_> - - - - <_> - 16 7 2 4 -1. - <_> - 16 7 1 4 2. - 0 - 8.2617141306400299e-003 - -5.0331529229879379e-002 - 2.9480621218681335e-001 - <_> - - <_> - - - - <_> - 0 6 2 6 -1. - <_> - 1 6 1 6 2. - 0 - 3.3671088516712189e-002 - -1.6121190041303635e-002 - 6.7309892177581787e-001 - <_> - - <_> - - - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - 0 - 6.3832988962531090e-003 - 2.5124080479145050e-002 - -4.9571260809898376e-001 - <_> - - <_> - - - - <_> - 4 3 6 3 -1. - <_> - 4 3 3 3 2. - 1 - 1.1697970330715179e-002 - 4.3101280927658081e-002 - -2.4264599382877350e-001 - <_> - - <_> - - - - <_> - 16 1 2 2 -1. - <_> - 16 1 1 2 2. - 1 - -1.2845739722251892e-002 - -3.6139601469039917e-001 - 4.5609131455421448e-002 - <_> - - <_> - - - - <_> - 2 1 2 2 -1. - <_> - 2 1 2 1 2. - 1 - 1.3638010248541832e-002 - 3.0973179265856743e-002 - -3.6637219786643982e-001 - <_> - - <_> - - - - <_> - 4 0 10 1 -1. - <_> - 4 0 5 1 2. - 0 - 8.9795887470245361e-003 - -1.0917530208826065e-001 - 1.0718029737472534e-001 - <_> - - <_> - - - - <_> - 1 0 16 4 -1. - <_> - 1 1 16 2 2. - 0 - -7.2535842657089233e-002 - 3.0982971191406250e-001 - -3.4692220389842987e-002 - <_> - - <_> - - - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - 1.1674970388412476e-002 - 3.3513750880956650e-002 - -2.6671060919761658e-001 - <_> - - <_> - - - - <_> - 3 0 7 2 -1. - <_> - 3 1 7 1 2. - 0 - 1.4128520153462887e-002 - -7.4317902326583862e-002 - 1.9508810341358185e-001 - <_> - - <_> - - - - <_> - 9 9 6 3 -1. - <_> - 11 9 2 3 3. - 0 - -3.2944388687610626e-002 - -3.3596301078796387e-001 - 1.2414090335369110e-002 - <_> - - <_> - - - - <_> - 3 9 6 3 -1. - <_> - 5 9 2 3 3. - 0 - 1.3753149658441544e-002 - 4.0032509714365005e-002 - -2.6519769430160522e-001 - <_> - - <_> - - - - <_> - 13 3 4 3 -1. - <_> - 12 4 4 1 3. - 1 - -3.3233430236577988e-002 - 1.6016100347042084e-001 - -2.2260909900069237e-002 - <_> - - <_> - - - - <_> - 9 0 1 2 -1. - <_> - 9 0 1 1 2. - 1 - 6.1078928411006927e-003 - -4.8795029520988464e-002 - 2.0597800612449646e-001 - <_> - - <_> - - - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - -1.0937879793345928e-002 - -2.0160789787769318e-001 - 4.1750270873308182e-002 - <_> - - <_> - - - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - -1.0795599780976772e-002 - -2.4597220122814178e-001 - 4.4583730399608612e-002 - <_> - - <_> - - - - <_> - 15 0 3 4 -1. - <_> - 14 1 3 2 2. - 1 - -1.4712370000779629e-002 - 8.2067541778087616e-002 - -4.7636579722166061e-002 - <_> - - <_> - - - - <_> - 3 0 4 3 -1. - <_> - 4 1 2 3 2. - 1 - -3.1026970595121384e-002 - 3.1423869729042053e-001 - -3.3792741596698761e-002 - <_> - - <_> - - - - <_> - 0 4 18 3 -1. - <_> - 6 4 6 3 3. - 0 - -7.8690350055694580e-002 - 5.8236971497535706e-002 - -2.0244419574737549e-001 - <_> - - <_> - - - - <_> - 0 0 12 12 -1. - <_> - 6 0 6 12 2. - 0 - 1.0032179951667786e-001 - -4.5807100832462311e-002 - 2.7768740057945251e-001 - <_> - - <_> - - - - <_> - 9 5 4 2 -1. - <_> - 11 5 2 1 2. - <_> - 9 6 2 1 2. - 0 - -4.2365980334579945e-005 - 5.0709828734397888e-002 - -7.6038338243961334e-002 - <_> - - <_> - - - - <_> - 8 8 2 3 -1. - <_> - 8 9 2 1 3. - 0 - -5.2146702073514462e-003 - 2.2490769624710083e-001 - -4.9134440720081329e-002 - <_> - - <_> - - - - <_> - 16 5 2 3 -1. - <_> - 16 6 2 1 3. - 0 - -1.0706060129450634e-004 - 6.7870803177356720e-002 - -8.7166316807270050e-002 - <_> - - <_> - - - - <_> - 5 5 2 2 -1. - <_> - 5 5 1 1 2. - <_> - 6 6 1 1 2. - 0 - -3.8535310886800289e-003 - 2.6514551043510437e-001 - -3.8151159882545471e-002 - <_> - - <_> - - - - <_> - 16 5 2 3 -1. - <_> - 16 6 2 1 3. - 0 - -6.6675869747996330e-003 - -1.8696850538253784e-001 - 3.4325890243053436e-002 - <_> - - <_> - - - - <_> - 5 4 3 3 -1. - <_> - 6 5 1 1 9. - 0 - -7.2776339948177338e-003 - 9.9364303052425385e-002 - -9.7539342939853668e-002 - <_> - - <_> - - - - <_> - 6 5 6 7 -1. - <_> - 6 5 3 7 2. - 0 - 8.5002653300762177e-002 - -4.4809039682149887e-002 - 2.5511339306831360e-001 - <_> - - <_> - - - - <_> - 1 7 12 2 -1. - <_> - 4 7 6 2 2. - 0 - 2.2640319541096687e-002 - 3.7417881190776825e-002 - -2.6542389392852783e-001 - <_> - - <_> - - - - <_> - 9 5 3 3 -1. - <_> - 10 5 1 3 3. - 0 - -1.4759110286831856e-002 - -1.4441870152950287e-001 - 2.6218270882964134e-002 - <_> - - <_> - - - - <_> - 6 5 3 3 -1. - <_> - 7 5 1 3 3. - 0 - -6.9840638898313046e-003 - 1.9986990094184875e-001 - -5.5323310196399689e-002 - <_> - - <_> - - - - <_> - 11 3 3 5 -1. - <_> - 12 3 1 5 3. - 0 - -1.2002780102193356e-002 - 2.7846589684486389e-001 - -3.5339098423719406e-002 - <_> - - <_> - - - - <_> - 0 4 12 8 -1. - <_> - 4 4 4 8 3. - 0 - -1.9566120207309723e-001 - -3.2644128799438477e-001 - 3.1533479690551758e-002 - <_> - - <_> - - - - <_> - 11 2 3 6 -1. - <_> - 12 2 1 6 3. - 0 - 2.8940979391336441e-002 - -2.4071710184216499e-002 - 2.0041519403457642e-001 - <_> - - <_> - - - - <_> - 4 2 3 6 -1. - <_> - 5 2 1 6 3. - 0 - -4.9572459829505533e-005 - 1.0405100136995316e-001 - -1.0776259750127792e-001 - <_> - - <_> - - - - <_> - 13 4 4 1 -1. - <_> - 14 5 2 1 2. - 1 - -3.3607240766286850e-003 - 9.9615901708602905e-002 - -8.3951607346534729e-002 - <_> - - <_> - - - - <_> - 6 10 3 1 -1. - <_> - 7 10 1 1 3. - 0 - -9.8188247648067772e-005 - 1.0282000154256821e-001 - -9.2874817550182343e-002 - <_> - - <_> - - - - <_> - 9 2 4 3 -1. - <_> - 10 2 2 3 2. - 0 - -1.1810559779405594e-002 - -2.9324960708618164e-001 - 3.6554131656885147e-002 - <_> - - <_> - - - - <_> - 8 2 2 3 -1. - <_> - 8 3 2 1 3. - 0 - -6.8092541769146919e-003 - 1.9611120223999023e-001 - -5.6822441518306732e-002 - <_> - - <_> - - - - <_> - 13 4 4 1 -1. - <_> - 14 5 2 1 2. - 1 - 3.2623611390590668e-002 - -9.4473883509635925e-003 - 5.0844651460647583e-001 - <_> - - <_> - - - - <_> - 5 4 1 4 -1. - <_> - 4 5 1 2 2. - 1 - -4.2930259369313717e-003 - 9.2036433517932892e-002 - -1.1842270195484161e-001 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 0 3 18 6 2. - 0 - -8.6469340324401855e-001 - -3.9508619904518127e-001 - 2.5425970554351807e-002 - <_> - - <_> - - - - <_> - 6 2 1 3 -1. - <_> - 5 3 1 1 3. - 1 - 1.0441480204463005e-002 - 2.7400210499763489e-002 - -3.3969599008560181e-001 - <_> - - <_> - - - - <_> - 8 10 6 2 -1. - <_> - 10 10 2 2 3. - 0 - 2.1257670596241951e-002 - 1.0770229622721672e-002 - -5.4437619447708130e-001 - <_> - - <_> - - - - <_> - 3 0 2 1 -1. - <_> - 4 0 1 1 2. - 0 - 8.5998326539993286e-005 - -8.6119651794433594e-002 - 1.0474950075149536e-001 - <_> - - <_> - - - - <_> - 16 0 2 2 -1. - <_> - 16 1 2 1 2. - 0 - -1.1877079668920487e-004 - 1.3329850137233734e-001 - -2.2571019828319550e-001 - <_> - - <_> - - - - <_> - 7 4 3 3 -1. - <_> - 8 5 1 1 9. - 0 - -1.2582539580762386e-002 - 1.0203540325164795e-001 - -9.2602252960205078e-002 - <_> - - <_> - - - - <_> - 8 5 2 1 -1. - <_> - 8 5 1 1 2. - 0 - 8.5820167441852391e-005 - -1.1563900113105774e-001 - 8.9998990297317505e-002 - <_> - - <_> - - - - <_> - 5 2 4 3 -1. - <_> - 6 2 2 3 2. - 0 - 9.5666181296110153e-003 - 3.7725161761045456e-002 - -2.4878449738025665e-001 - <_> - - <_> - - - - <_> - 9 11 4 1 -1. - <_> - 10 11 2 1 2. - 0 - -5.7672890834510326e-003 - -5.6385320425033569e-001 - 1.1175219900906086e-002 - <_> - - <_> - - - - <_> - 1 0 6 10 -1. - <_> - 3 0 2 10 3. - 0 - -3.7847689818590879e-003 - 6.8087071180343628e-002 - -1.2581770122051239e-001 - <_> - - <_> - - - - <_> - 12 3 6 9 -1. - <_> - 14 6 2 3 9. - 0 - -2.5486249476671219e-002 - 5.7677350938320160e-002 - -9.9549897015094757e-002 - <_> - - <_> - - - - <_> - 0 3 6 9 -1. - <_> - 2 6 2 3 9. - 0 - 7.5713947415351868e-002 - -3.6518439650535583e-002 - 2.8699418902397156e-001 - <_> - - <_> - - - - <_> - 14 1 2 4 -1. - <_> - 13 2 2 2 2. - 1 - -9.0637598186731339e-003 - -7.7375017106533051e-002 - 4.0799569338560104e-002 - <_> - - <_> - - - - <_> - 0 4 14 4 -1. - <_> - 0 4 7 2 2. - <_> - 7 6 7 2 2. - 0 - 1.0294229723513126e-002 - -1.1247719824314117e-001 - 8.7451197206974030e-002 - <_> - - <_> - - - - <_> - 9 5 3 2 -1. - <_> - 10 6 1 2 3. - 1 - -6.5298741683363914e-003 - 7.0183053612709045e-002 - -8.9181199669837952e-002 - <_> - - <_> - - - - <_> - 0 1 8 10 -1. - <_> - 2 1 4 10 2. - 0 - -9.5547690987586975e-002 - -2.7765339612960815e-001 - 3.4830510616302490e-002 - <_> - - <_> - - - - <_> - 16 4 2 3 -1. - <_> - 16 5 2 1 3. - 0 - -1.1343659833073616e-002 - -3.5542330145835876e-001 - 2.3554539307951927e-002 - <_> - - <_> - - - - <_> - 1 1 2 2 -1. - <_> - 1 1 1 1 2. - <_> - 2 2 1 1 2. - 0 - -1.0126819688593969e-004 - 9.1516196727752686e-002 - -9.3038432300090790e-002 - <_> - - <_> - - - - <_> - 16 0 2 3 -1. - <_> - 15 1 2 1 3. - 1 - -1.8029360100626945e-002 - 1.9349269568920135e-001 - -2.5129379704594612e-002 - <_> - - <_> - - - - <_> - 2 0 3 2 -1. - <_> - 3 1 1 2 3. - 1 - -1.7232729122042656e-002 - 2.7890768647193909e-001 - -3.8710448890924454e-002 - <_> - - <_> - - - - <_> - 16 4 2 4 -1. - <_> - 16 5 2 2 2. - 0 - -1.1195029946975410e-004 - 5.0033789128065109e-002 - -8.3999648690223694e-002 - <_> - - <_> - - - - <_> - 0 4 2 4 -1. - <_> - 0 5 2 2 2. - 0 - 5.9721581637859344e-003 - 3.3347249031066895e-002 - -2.6903629302978516e-001 - <_> - - <_> - - - - <_> - 8 10 6 2 -1. - <_> - 10 10 2 2 3. - 0 - -2.3551829508505762e-004 - 6.8747326731681824e-002 - -9.7762331366539001e-002 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 6 10 6 2 3. - 0 - 4.1608728468418121e-002 - -4.2120318859815598e-002 - 2.1496939659118652e-001 - <_> - - <_> - - - - <_> - 8 10 3 1 -1. - <_> - 9 10 1 1 3. - 0 - -3.4065970685333014e-003 - -2.2874389588832855e-001 - 1.5017420053482056e-002 - <_> - - <_> - - - - <_> - 7 10 2 1 -1. - <_> - 8 10 1 1 2. - 0 - -1.0731370275607333e-004 - 8.7367862462997437e-002 - -9.8653607070446014e-002 - <_> - - <_> - - - - <_> - 9 10 2 1 -1. - <_> - 9 10 1 1 2. - 0 - -4.6097549784462899e-005 - 9.9156707525253296e-002 - -7.0301808416843414e-002 - <_> - - <_> - - - - <_> - 7 10 2 1 -1. - <_> - 8 10 1 1 2. - 0 - 9.1741916548926383e-005 - -7.4249409139156342e-002 - 1.2826450169086456e-001 - <_> - - <_> - - - - <_> - 8 9 2 1 -1. - <_> - 8 9 1 1 2. - 0 - 1.1397949856473133e-004 - -9.6481591463088989e-002 - 9.6139311790466309e-002 - <_> - - <_> - - - - <_> - 3 8 10 4 -1. - <_> - 3 8 5 2 2. - <_> - 8 10 5 2 2. - 0 - 5.6666661053895950e-002 - 1.8062859773635864e-002 - -5.1227068901062012e-001 - <_> - - <_> - - - - <_> - 11 6 3 3 -1. - <_> - 12 7 1 3 3. - 1 - -1.8091689795255661e-002 - 1.6024060547351837e-001 - -1.6382170841097832e-002 - <_> - - <_> - - - - <_> - 7 6 3 3 -1. - <_> - 6 7 3 1 3. - 1 - 4.2913880199193954e-002 - -1.9014870747923851e-002 - 4.5053559541702271e-001 - <_> - - <_> - - - - <_> - 8 9 6 2 -1. - <_> - 10 9 2 2 3. - 0 - -1.5276740305125713e-002 - -2.7582061290740967e-001 - 2.9354600235819817e-002 - <_> - - <_> - - - - <_> - 6 9 6 1 -1. - <_> - 8 9 2 1 3. - 0 - -9.3131810426712036e-003 - -2.5190541148185730e-001 - 3.3755309879779816e-002 - <_> - - <_> - - - - <_> - 10 3 4 4 -1. - <_> - 10 5 4 2 2. - 0 - 3.0541479587554932e-002 - -3.3350829035043716e-002 - 1.2646000087261200e-001 - <_> - - <_> - - - - <_> - 0 4 18 8 -1. - <_> - 6 4 6 8 3. - 0 - -1.9827249646186829e-001 - 7.0513941347599030e-002 - -1.3399259746074677e-001 - <_> - - <_> - - - - <_> - 12 5 6 5 -1. - <_> - 14 5 2 5 3. - 0 - -2.1315490826964378e-002 - 1.2407120317220688e-001 - -9.3437470495700836e-002 - <_> - - <_> - - - - <_> - 5 5 4 2 -1. - <_> - 5 5 2 1 2. - <_> - 7 6 2 1 2. - 0 - -5.5536180734634399e-003 - 1.6640309989452362e-001 - -5.1540210843086243e-002 - <_> - - <_> - - - - <_> - 6 6 6 3 -1. - <_> - 8 7 2 1 9. - 0 - 2.9454020783305168e-002 - -4.1273329406976700e-002 - 2.5026160478591919e-001 - <_> - - <_> - - - - <_> - 0 8 2 2 -1. - <_> - 0 8 1 1 2. - <_> - 1 9 1 1 2. - 0 - 1.0502000077394769e-004 - -1.0847820341587067e-001 - 8.3983741700649261e-002 - <_> - - <_> - - - - <_> - 16 8 2 2 -1. - <_> - 17 8 1 1 2. - <_> - 16 9 1 1 2. - 0 - -1.0733069939306006e-004 - 8.3531558513641357e-002 - -5.6373700499534607e-002 - <_> - - <_> - - - - <_> - 0 8 2 2 -1. - <_> - 0 8 1 1 2. - <_> - 1 9 1 1 2. - 0 - -4.6264020056696609e-005 - 1.3745079934597015e-001 - -6.8600043654441833e-002 - <_> - - <_> - - - - <_> - 12 0 3 2 -1. - <_> - 13 1 1 2 3. - 1 - -1.5310499817132950e-002 - -1.9469089806079865e-001 - 2.8970900923013687e-002 - <_> - - <_> - - - - <_> - 0 8 18 4 -1. - <_> - 0 10 18 2 2. - 0 - -3.3486049622297287e-002 - -6.2618911266326904e-001 - 1.2297869659960270e-002 - <_> - - <_> - - - - <_> - 6 6 10 6 -1. - <_> - 11 6 5 3 2. - <_> - 6 9 5 3 2. - 0 - -1.1582080274820328e-001 - -4.2694661021232605e-001 - 1.9071470014750957e-003 - <_> - - <_> - - - - <_> - 4 3 4 4 -1. - <_> - 4 5 4 2 2. - 0 - 3.2180320471525192e-002 - -3.6031588912010193e-002 - 2.1900460124015808e-001 - <_> - - <_> - - - - <_> - 12 3 2 2 -1. - <_> - 12 3 1 2 2. - 1 - 9.9619124084711075e-003 - -2.2418439388275146e-002 - 8.1508889794349670e-002 - <_> - - <_> - - - - <_> - 6 0 2 3 -1. - <_> - 5 1 2 1 3. - 1 - -2.3083880543708801e-002 - -4.9076971411705017e-001 - 1.7307329922914505e-002 - <_> - - <_> - - - - <_> - 16 2 2 1 -1. - <_> - 16 2 1 1 2. - 0 - -1.1683529737638310e-004 - 1.0331380367279053e-001 - -2.0561179518699646e-001 - <_> - - <_> - - - - <_> - 1 0 16 2 -1. - <_> - 1 0 8 1 2. - <_> - 9 1 8 1 2. - 0 - 7.8267622739076614e-003 - -6.6107340157032013e-002 - 1.5025080740451813e-001 - <_> - - <_> - - - - <_> - 16 2 2 1 -1. - <_> - 16 2 1 1 2. - 0 - -6.3460809178650379e-003 - -3.0913439393043518e-001 - 1.4155699871480465e-002 - <_> - - <_> - - - - <_> - 0 2 2 1 -1. - <_> - 1 2 1 1 2. - 0 - 2.0096169319003820e-003 - -4.6867091208696365e-002 - 2.0841519534587860e-001 - <_> - - <_> - - - - <_> - 12 4 2 1 -1. - <_> - 12 4 1 1 2. - 1 - -3.3369109034538269e-002 - 4.1900089383125305e-001 - -3.8494879845529795e-003 - <_> - - <_> - - - - <_> - 6 4 1 2 -1. - <_> - 6 4 1 1 2. - 1 - -2.6893829926848412e-003 - -1.3875140249729156e-001 - 6.3448376953601837e-002 - -1.5681409835815430e+000 - 17 - -1 - <_> - - - <_> - - <_> - - - - <_> - 7 5 2 3 -1. - <_> - 6 6 2 1 3. - 1 - 3.3631179481744766e-002 - -2.7505779266357422e-001 - 7.1009528636932373e-001 - <_> - - <_> - - - - <_> - 8 1 9 9 -1. - <_> - 8 4 9 3 3. - 0 - -1.2867219746112823e-001 - 1.1402829736471176e-001 - -2.5071978569030762e-001 - <_> - - <_> - - - - <_> - 5 1 9 1 -1. - <_> - 8 4 3 1 3. - 1 - 1.8553440272808075e-001 - -7.1051809936761856e-004 - -2.0411979980468750e+003 - <_> - - <_> - - - - <_> - 8 5 4 2 -1. - <_> - 10 5 2 1 2. - <_> - 8 6 2 1 2. - 0 - -1.0022269561886787e-002 - 3.6850100755691528e-001 - -1.1276180297136307e-001 - <_> - - <_> - - - - <_> - 5 2 4 4 -1. - <_> - 6 3 2 4 2. - 1 - -4.8808779567480087e-002 - 3.3759531378746033e-001 - -2.0759710669517517e-001 - <_> - - <_> - - - - <_> - 12 5 3 2 -1. - <_> - 13 6 1 2 3. - 1 - 2.6742409914731979e-002 - -1.8537110090255737e-001 - 2.4919350445270538e-001 - <_> - - <_> - - - - <_> - 6 5 2 3 -1. - <_> - 5 6 2 1 3. - 1 - -1.0245149955153465e-002 - 2.5566178560256958e-001 - -1.6401439905166626e-001 - <_> - - <_> - - - - <_> - 15 2 3 10 -1. - <_> - 15 7 3 5 2. - 0 - 2.8364270925521851e-002 - -1.3210600614547729e-001 - 1.0085999965667725e-001 - <_> - - <_> - - - - <_> - 9 2 5 3 -1. - <_> - 8 3 5 1 3. - 1 - -1.9492400810122490e-002 - 1.1866439878940582e-001 - -2.2919100522994995e-001 - <_> - - <_> - - - - <_> - 16 2 2 10 -1. - <_> - 16 7 2 5 2. - 0 - 6.5401881933212280e-002 - 3.9086669683456421e-002 - -4.4828139245510101e-002 - <_> - - <_> - - - - <_> - 0 2 2 10 -1. - <_> - 0 7 2 5 2. - 0 - 9.7863655537366867e-003 - -2.8531849384307861e-001 - 9.7677417099475861e-002 - <_> - - <_> - - - - <_> - 1 0 16 9 -1. - <_> - 5 0 8 9 2. - 0 - -5.3927909582853317e-002 - 9.3449726700782776e-002 - -2.7780878543853760e-001 - <_> - - <_> - - - - <_> - 9 0 1 2 -1. - <_> - 9 0 1 1 2. - 1 - -4.8246569931507111e-003 - 2.2555319964885712e-001 - -1.0125789791345596e-001 - <_> - - <_> - - - - <_> - 5 4 8 2 -1. - <_> - 5 5 8 1 2. - 0 - 1.5018019825220108e-002 - -8.2751229405403137e-002 - 2.6553609967231750e-001 - <_> - - <_> - - - - <_> - 2 4 6 2 -1. - <_> - 2 4 3 1 2. - <_> - 5 5 3 1 2. - 0 - -9.9249351769685745e-003 - 2.6004979014396667e-001 - -9.1353721916675568e-002 - <_> - - <_> - - - - <_> - 16 4 2 6 -1. - <_> - 16 4 1 6 2. - 0 - -6.5024420619010925e-003 - 9.9367111921310425e-002 - -7.1672402322292328e-002 - <_> - - <_> - - - - <_> - 0 4 2 6 -1. - <_> - 1 4 1 6 2. - 0 - -3.4381379373371601e-003 - 1.2497270107269287e-001 - -1.8109659850597382e-001 - <_> - - <_> - - - - <_> - 10 6 4 1 -1. - <_> - 11 6 2 1 2. - 0 - -6.3433339819312096e-003 - 3.7100249528884888e-001 - -5.0013199448585510e-002 - <_> - - <_> - - - - <_> - 0 8 18 4 -1. - <_> - 0 10 18 2 2. - 0 - 2.4360060691833496e-002 - -3.6683601140975952e-001 - 5.0595879554748535e-002 - <_> - - <_> - - - - <_> - 9 0 4 4 -1. - <_> - 10 0 2 4 2. - 0 - 8.0591458827257156e-003 - 3.8355801254510880e-002 - -3.9722838997840881e-001 - <_> - - <_> - - - - <_> - 6 6 2 2 -1. - <_> - 6 6 1 1 2. - <_> - 7 7 1 1 2. - 0 - -4.4672801159322262e-003 - 2.8062960505485535e-001 - -5.8162041008472443e-002 - <_> - - <_> - - - - <_> - 11 5 3 2 -1. - <_> - 12 6 1 2 3. - 1 - 3.4330900758504868e-002 - -3.9409149438142776e-002 - 2.3248769342899323e-001 - <_> - - <_> - - - - <_> - 7 5 2 3 -1. - <_> - 6 6 2 1 3. - 1 - 3.3590178936719894e-002 - 5.8214940130710602e-002 - -3.7649789452552795e-001 - <_> - - <_> - - - - <_> - 9 4 3 2 -1. - <_> - 10 5 1 2 3. - 1 - -4.8359300941228867e-002 - -3.1998670101165771e-001 - 3.7257380783557892e-002 - <_> - - <_> - - - - <_> - 9 4 2 3 -1. - <_> - 8 5 2 1 3. - 1 - -1.6094490885734558e-002 - 1.6750979423522949e-001 - -1.1763060092926025e-001 - <_> - - <_> - - - - <_> - 15 8 3 3 -1. - <_> - 15 9 3 1 3. - 0 - 1.2275910004973412e-002 - 1.5325929969549179e-002 - -2.7663159370422363e-001 - <_> - - <_> - - - - <_> - 0 8 3 3 -1. - <_> - 0 9 3 1 3. - 0 - 9.4588464125990868e-003 - 4.2470309883356094e-002 - -3.5148349404335022e-001 - <_> - - <_> - - - - <_> - 11 6 2 2 -1. - <_> - 12 6 1 1 2. - <_> - 11 7 1 1 2. - 0 - 5.2011879161000252e-003 - -4.8598669469356537e-002 - 2.2258450090885162e-001 - <_> - - <_> - - - - <_> - 3 0 6 5 -1. - <_> - 5 0 2 5 3. - 0 - -3.6433428525924683e-002 - -4.5761460065841675e-001 - 2.9529940336942673e-002 - <_> - - <_> - - - - <_> - 11 6 2 2 -1. - <_> - 12 6 1 1 2. - <_> - 11 7 1 1 2. - 0 - -3.7194520700722933e-003 - 2.8547590970993042e-001 - -3.9135500788688660e-002 - <_> - - <_> - - - - <_> - 5 6 2 2 -1. - <_> - 5 6 1 1 2. - <_> - 6 7 1 1 2. - 0 - -2.4795390199869871e-003 - 2.2883270680904388e-001 - -6.0576260089874268e-002 - <_> - - <_> - - - - <_> - 17 6 1 3 -1. - <_> - 17 7 1 1 3. - 0 - -5.4941270500421524e-003 - -3.0932080745697021e-001 - 2.9831670224666595e-002 - <_> - - <_> - - - - <_> - 4 5 1 2 -1. - <_> - 4 6 1 1 2. - 0 - 4.2734388262033463e-003 - -5.9098191559314728e-002 - 2.2960080206394196e-001 - <_> - - <_> - - - - <_> - 17 6 1 3 -1. - <_> - 17 7 1 1 3. - 0 - 2.8899749740958214e-003 - 3.2622959464788437e-002 - -2.0528559386730194e-001 - <_> - - <_> - - - - <_> - 1 3 10 2 -1. - <_> - 1 3 5 1 2. - <_> - 6 4 5 1 2. - 0 - -2.1825909614562988e-002 - 1.9279049336910248e-001 - -7.3136076331138611e-002 - <_> - - <_> - - - - <_> - 9 3 3 2 -1. - <_> - 9 4 3 1 2. - 0 - 1.3574689626693726e-002 - -1.6170579940080643e-002 - 2.6534038782119751e-001 - <_> - - <_> - - - - <_> - 0 6 1 3 -1. - <_> - 0 7 1 1 3. - 0 - 4.0199640206992626e-003 - 3.2929629087448120e-002 - -4.1653159260749817e-001 - <_> - - <_> - - - - <_> - 15 0 3 4 -1. - <_> - 16 1 1 4 3. - 1 - -3.7281829863786697e-002 - -2.7529978752136230e-001 - 2.0595779642462730e-002 - <_> - - <_> - - - - <_> - 0 1 16 1 -1. - <_> - 4 1 8 1 2. - 0 - 2.8378039598464966e-002 - -5.6658681482076645e-002 - 2.2680400311946869e-001 - <_> - - <_> - - - - <_> - 7 0 4 4 -1. - <_> - 7 1 4 2 2. - 0 - -1.8549919128417969e-002 - 2.8250589966773987e-001 - -5.3727861493825912e-002 - <_> - - <_> - - - - <_> - 3 0 4 3 -1. - <_> - 4 0 2 3 2. - 0 - 8.8881962001323700e-003 - 4.3956100940704346e-002 - -3.6961129307746887e-001 - <_> - - <_> - - - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - 0 - -6.3639208674430847e-003 - -3.8934838771820068e-001 - 1.6238860785961151e-002 - <_> - - <_> - - - - <_> - 3 4 8 6 -1. - <_> - 5 4 4 6 2. - 0 - -2.3416770622134209e-002 - -1.8020549416542053e-001 - 6.5479606389999390e-002 - <_> - - <_> - - - - <_> - 10 6 3 1 -1. - <_> - 11 6 1 1 3. - 0 - -2.0741058979183435e-003 - 1.5390050411224365e-001 - -8.0369636416435242e-002 - <_> - - <_> - - - - <_> - 2 4 12 8 -1. - <_> - 5 4 6 8 2. - 0 - -3.9896711707115173e-002 - 8.4819942712783813e-002 - -1.8152259290218353e-001 - <_> - - <_> - - - - <_> - 4 2 14 9 -1. - <_> - 4 2 7 9 2. - 0 - -5.8487498760223389e-001 - -5.4407620429992676e-001 - -2.0537020172923803e-003 - <_> - - <_> - - - - <_> - 2 3 12 9 -1. - <_> - 8 3 6 9 2. - 0 - 1.8590870499610901e-001 - -3.4733101725578308e-002 - 3.7966889142990112e-001 - <_> - - <_> - - - - <_> - 3 1 12 3 -1. - <_> - 3 1 6 3 2. - 0 - 4.4944491237401962e-002 - -1.0628589987754822e-001 - 1.2806500494480133e-001 - <_> - - <_> - - - - <_> - 6 2 3 3 -1. - <_> - 6 3 3 1 3. - 0 - -2.2796489298343658e-002 - 3.6542838811874390e-001 - -4.0509790182113647e-002 - <_> - - <_> - - - - <_> - 8 1 6 2 -1. - <_> - 10 1 2 2 3. - 0 - -2.6358839124441147e-002 - -5.2112942934036255e-001 - 3.0187880620360374e-002 - <_> - - <_> - - - - <_> - 5 6 3 1 -1. - <_> - 6 6 1 1 3. - 0 - -2.3396210744976997e-003 - 1.8814109265804291e-001 - -7.4049197137355804e-002 - <_> - - <_> - - - - <_> - 15 8 1 4 -1. - <_> - 15 9 1 2 2. - 0 - -1.2243230594322085e-004 - 5.7484649121761322e-002 - -3.9915520697832108e-002 - <_> - - <_> - - - - <_> - 2 8 1 4 -1. - <_> - 2 9 1 2 2. - 0 - 1.1718519817804918e-004 - -1.4954920113086700e-001 - 8.1642888486385345e-002 - <_> - - <_> - - - - <_> - 15 10 1 2 -1. - <_> - 15 11 1 1 2. - 0 - 4.4519607909023762e-003 - 1.6601830720901489e-002 - -1.5385159850120544e-001 - <_> - - <_> - - - - <_> - 2 10 1 2 -1. - <_> - 2 11 1 1 2. - 0 - 1.0932450095424429e-004 - -1.7002880573272705e-001 - 8.5956446826457977e-002 - <_> - - <_> - - - - <_> - 6 2 6 6 -1. - <_> - 8 4 2 2 9. - 0 - -8.5179023444652557e-002 - 8.5408963263034821e-002 - -1.3447010517120361e-001 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - 0 - -5.0164520740509033e-002 - 1.8779170513153076e-001 - -6.7191623151302338e-002 - <_> - - <_> - - - - <_> - 6 0 6 3 -1. - <_> - 8 0 2 3 3. - 0 - -3.1386420130729675e-002 - -6.1028450727462769e-001 - 1.9187970086932182e-002 - <_> - - <_> - - - - <_> - 2 8 2 2 -1. - <_> - 2 8 2 1 2. - 1 - 1.9179229857400060e-003 - -5.8911509811878204e-002 - 2.1525830030441284e-001 - <_> - - <_> - - - - <_> - 9 10 6 2 -1. - <_> - 11 10 2 2 3. - 0 - 2.4344459176063538e-002 - 1.1284279637038708e-002 - -3.6955431103706360e-001 - <_> - - <_> - - - - <_> - 6 9 5 2 -1. - <_> - 6 10 5 1 2. - 0 - -7.3110237717628479e-003 - 3.1973779201507568e-001 - -3.3365249633789063e-002 - <_> - - <_> - - - - <_> - 9 10 6 2 -1. - <_> - 11 10 2 2 3. - 0 - -2.2101389244198799e-002 - -2.7678531408309937e-001 - 1.2874299660325050e-002 - <_> - - <_> - - - - <_> - 3 10 6 2 -1. - <_> - 5 10 2 2 3. - 0 - -2.0385779440402985e-002 - -5.1266109943389893e-001 - 2.0121119916439056e-002 - <_> - - <_> - - - - <_> - 16 1 1 9 -1. - <_> - 13 4 1 3 3. - 1 - -1.1750890314579010e-001 - -1.9588080048561096e-001 - 2.0088920369744301e-002 - <_> - - <_> - - - - <_> - 6 2 1 3 -1. - <_> - 5 3 1 1 3. - 1 - -1.2457219883799553e-002 - -3.6020371317863464e-001 - 2.8396470472216606e-002 - <_> - - <_> - - - - <_> - 9 1 2 3 -1. - <_> - 9 2 2 1 3. - 0 - -6.5784770995378494e-003 - 1.8908539414405823e-001 - -4.3369468301534653e-002 - <_> - - <_> - - - - <_> - 0 2 18 4 -1. - <_> - 0 2 9 2 2. - <_> - 9 4 9 2 2. - 0 - 1.3688610494136810e-001 - 1.9999820739030838e-002 - -5.4874652624130249e-001 - <_> - - <_> - - - - <_> - 15 3 3 4 -1. - <_> - 15 4 3 2 2. - 0 - -2.8810320422053337e-002 - -5.5651491880416870e-001 - 1.0983499698340893e-002 - <_> - - <_> - - - - <_> - 0 3 3 4 -1. - <_> - 0 4 3 2 2. - 0 - 1.5747509896755219e-002 - 2.4598199874162674e-002 - -4.0236338973045349e-001 - <_> - - <_> - - - - <_> - 10 4 2 2 -1. - <_> - 11 4 1 1 2. - <_> - 10 5 1 1 2. - 0 - -7.6313503086566925e-005 - 5.5196251720190048e-002 - -8.7640739977359772e-002 - <_> - - <_> - - - - <_> - 4 4 3 4 -1. - <_> - 5 4 1 4 3. - 0 - -5.6491168215870857e-003 - 1.4749449491500854e-001 - -6.3069596886634827e-002 - <_> - - <_> - - - - <_> - 16 1 1 9 -1. - <_> - 13 4 1 3 3. - 1 - -1.7864599823951721e-001 - -7.5675052404403687e-001 - 3.4561890643090010e-003 - <_> - - <_> - - - - <_> - 2 1 9 1 -1. - <_> - 5 4 3 1 3. - 1 - -1.1177310347557068e-001 - -3.3842530846595764e-001 - 2.9908629134297371e-002 - <_> - - <_> - - - - <_> - 12 1 6 4 -1. - <_> - 15 1 3 2 2. - <_> - 12 3 3 2 2. - 0 - 1.7611680552363396e-002 - -2.5893269106745720e-002 - 1.0236769914627075e-001 - <_> - - <_> - - - - <_> - 1 0 14 4 -1. - <_> - 1 1 14 2 2. - 0 - 2.5229709222912788e-002 - -1.0067760199308395e-001 - 1.1171419918537140e-001 - <_> - - <_> - - - - <_> - 12 0 4 9 -1. - <_> - 13 0 2 9 2. - 0 - -7.2196209803223610e-003 - 1.3222789764404297e-001 - -1.1153940111398697e-001 - <_> - - <_> - - - - <_> - 0 10 3 2 -1. - <_> - 0 11 3 1 2. - 0 - -7.0246332325041294e-003 - -6.2780529260635376e-001 - 1.3513820245862007e-002 - <_> - - <_> - - - - <_> - 3 4 12 4 -1. - <_> - 6 4 6 4 2. - 0 - 5.8054771274328232e-002 - 1.9251599907875061e-002 - -4.7624149918556213e-001 - <_> - - <_> - - - - <_> - 7 0 4 3 -1. - <_> - 7 1 4 1 3. - 0 - -1.0157009586691856e-002 - 1.8371550738811493e-001 - -5.8640699833631516e-002 - <_> - - <_> - - - - <_> - 12 0 4 9 -1. - <_> - 13 0 2 9 2. - 0 - -4.5374549925327301e-002 - -4.7950971126556396e-001 - 1.7445040866732597e-002 - <_> - - <_> - - - - <_> - 2 0 4 9 -1. - <_> - 3 0 2 9 2. - 0 - -1.0695769742596895e-004 - 6.9972157478332520e-002 - -1.4726209640502930e-001 - <_> - - <_> - - - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - -8.7402779608964920e-003 - -1.8943889439105988e-001 - 4.4850360602140427e-002 - <_> - - <_> - - - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - 1.4455690048635006e-002 - 2.9286550357937813e-002 - -3.3406850695610046e-001 - <_> - - <_> - - - - <_> - 10 3 4 5 -1. - <_> - 11 3 2 5 2. - 0 - -1.1007389985024929e-002 - 1.6767920553684235e-001 - -4.5263808220624924e-002 - <_> - - <_> - - - - <_> - 3 10 3 2 -1. - <_> - 4 10 1 2 3. - 0 - -8.1059811636805534e-003 - -5.3664588928222656e-001 - 1.8926989287137985e-002 - <_> - - <_> - - - - <_> - 1 11 16 1 -1. - <_> - 5 11 8 1 2. - 0 - 9.3566756695508957e-003 - -5.6550279259681702e-002 - 1.6391740739345551e-001 - <_> - - <_> - - - - <_> - 1 10 16 2 -1. - <_> - 5 10 8 2 2. - 0 - -1.1989709921181202e-002 - 9.8681986331939697e-002 - -9.3427039682865143e-002 - <_> - - <_> - - - - <_> - 15 1 3 3 -1. - <_> - 14 2 3 1 3. - 1 - -1.8332680687308311e-002 - 1.5537080168724060e-001 - -4.7529440373182297e-002 - <_> - - <_> - - - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 3 3. - 1 - 2.2228980436921120e-002 - -5.3477160632610321e-002 - 1.7177890241146088e-001 - <_> - - <_> - - - - <_> - 8 2 2 2 -1. - <_> - 9 2 1 1 2. - <_> - 8 3 1 1 2. - 0 - 9.7822019597515464e-005 - -8.8446229696273804e-002 - 1.0630639642477036e-001 - <_> - - <_> - - - - <_> - 8 2 2 2 -1. - <_> - 8 2 1 1 2. - <_> - 9 3 1 1 2. - 0 - 9.5454830443486571e-005 - -8.7844558060169220e-002 - 1.0228630155324936e-001 - <_> - - <_> - - - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - 0 - 8.2959644496440887e-003 - 7.7602830715477467e-003 - -5.8247411251068115e-001 - <_> - - <_> - - - - <_> - 1 8 2 1 -1. - <_> - 1 8 1 1 2. - 1 - -8.2757556810975075e-005 - 6.4984649419784546e-002 - -1.3101190328598022e-001 - <_> - - <_> - - - - <_> - 2 6 16 6 -1. - <_> - 10 6 8 3 2. - <_> - 2 9 8 3 2. - 0 - 1.9920749962329865e-001 - 1.6709130257368088e-002 - -3.1872358918190002e-001 - <_> - - <_> - - - - <_> - 2 6 4 4 -1. - <_> - 2 6 2 2 2. - <_> - 4 8 2 2 2. - 0 - 1.3613670133054256e-002 - -6.2816083431243896e-002 - 1.7845809459686279e-001 - <_> - - <_> - - - - <_> - 13 0 4 10 -1. - <_> - 14 0 2 10 2. - 0 - -3.4157780464738607e-003 - 6.6462337970733643e-002 - -8.9528001844882965e-002 - <_> - - <_> - - - - <_> - 1 0 4 10 -1. - <_> - 2 0 2 10 2. - 0 - 8.7696220725774765e-003 - 5.9173680841922760e-002 - -1.9932749867439270e-001 - <_> - - <_> - - - - <_> - 9 5 3 2 -1. - <_> - 10 5 1 2 3. - 0 - -3.2113050110638142e-003 - 8.9376598596572876e-002 - -8.6342461407184601e-002 - <_> - - <_> - - - - <_> - 6 5 3 2 -1. - <_> - 7 5 1 2 3. - 0 - -6.0520251281559467e-003 - 1.8127410113811493e-001 - -4.9871731549501419e-002 - <_> - - <_> - - - - <_> - 10 7 3 1 -1. - <_> - 11 7 1 1 3. - 0 - -2.3850060533732176e-003 - 1.0447499901056290e-001 - -3.4482009708881378e-002 - <_> - - <_> - - - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - -2.1687719970941544e-002 - -4.5468750596046448e-001 - 2.1641310304403305e-002 - <_> - - <_> - - - - <_> - 10 7 3 1 -1. - <_> - 11 7 1 1 3. - 0 - 9.2866670456714928e-005 - -5.9006929397583008e-002 - 5.5168408900499344e-002 - <_> - - <_> - - - - <_> - 5 7 3 1 -1. - <_> - 6 7 1 1 3. - 0 - -1.4913419727236032e-003 - 1.6070629656314850e-001 - -5.8827608823776245e-002 - <_> - - <_> - - - - <_> - 10 10 8 2 -1. - <_> - 14 10 4 1 2. - <_> - 10 11 4 1 2. - 0 - 3.9107990451157093e-003 - -5.9656649827957153e-002 - 9.3852207064628601e-002 - <_> - - <_> - - - - <_> - 2 6 2 6 -1. - <_> - 2 8 2 2 3. - 0 - 3.5528650041669607e-003 - -1.0640110075473785e-001 - 9.0040393173694611e-002 - <_> - - <_> - - - - <_> - 13 9 3 2 -1. - <_> - 13 10 3 1 2. - 0 - 1.2945669703185558e-002 - 1.9677519798278809e-002 - -1.7321330308914185e-001 - <_> - - <_> - - - - <_> - 2 9 3 2 -1. - <_> - 2 10 3 1 2. - 0 - 8.4259969298727810e-005 - -2.3065930604934692e-001 - 5.5004071444272995e-002 - <_> - - <_> - - - - <_> - 14 4 2 6 -1. - <_> - 14 4 2 3 2. - 1 - -1.6149960458278656e-002 - 3.1157720834016800e-002 - -9.7619056701660156e-002 - <_> - - <_> - - - - <_> - 4 4 6 2 -1. - <_> - 4 4 3 2 2. - 1 - -1.3370880484580994e-001 - -4.6099790930747986e-001 - 2.0583210512995720e-002 - <_> - - <_> - - - - <_> - 11 7 2 1 -1. - <_> - 11 7 1 1 2. - 0 - -8.7964879348874092e-003 - 3.0732661485671997e-001 - -2.7057770639657974e-002 - <_> - - <_> - - - - <_> - 0 10 10 1 -1. - <_> - 5 10 5 1 2. - 0 - 5.8513940311968327e-003 - -5.1156919449567795e-002 - 1.6160629689693451e-001 - <_> - - <_> - - - - <_> - 4 3 12 9 -1. - <_> - 4 3 6 9 2. - 0 - 9.2029757797718048e-002 - -4.0357459336519241e-002 - 1.0516119748353958e-001 - <_> - - <_> - - - - <_> - 2 10 2 2 -1. - <_> - 2 10 1 1 2. - <_> - 3 11 1 1 2. - 0 - 1.0794289846671745e-004 - -9.3203842639923096e-002 - 9.3569189310073853e-002 - <_> - - <_> - - - - <_> - 15 8 1 3 -1. - <_> - 14 9 1 1 3. - 1 - -9.2651713639497757e-003 - -3.9545240998268127e-001 - 2.5677639991044998e-002 - <_> - - <_> - - - - <_> - 3 8 3 1 -1. - <_> - 4 9 1 1 3. - 1 - -1.4052440412342548e-002 - -5.9753012657165527e-001 - 1.5152829699218273e-002 - <_> - - <_> - - - - <_> - 7 5 4 4 -1. - <_> - 8 5 2 4 2. - 0 - -8.1634595990180969e-003 - 9.5714226365089417e-002 - -9.5124170184135437e-002 - <_> - - <_> - - - - <_> - 7 3 1 6 -1. - <_> - 7 3 1 3 2. - 1 - -7.2123326361179352e-002 - 3.2383221387863159e-001 - -2.8505349531769753e-002 - <_> - - <_> - - - - <_> - 15 2 2 4 -1. - <_> - 14 3 2 2 2. - 1 - -1.4225790277123451e-002 - 7.5030997395515442e-002 - -4.6096429228782654e-002 - <_> - - <_> - - - - <_> - 3 2 4 2 -1. - <_> - 4 3 2 2 2. - 1 - 4.9291448667645454e-003 - -7.9523496329784393e-002 - 1.3036440312862396e-001 - <_> - - <_> - - - - <_> - 6 4 12 6 -1. - <_> - 12 4 6 3 2. - <_> - 6 7 6 3 2. - 0 - -1.2931670062243938e-002 - -1.2009199708700180e-001 - 4.2189829051494598e-002 - <_> - - <_> - - - - <_> - 0 4 12 6 -1. - <_> - 0 4 6 3 2. - <_> - 6 7 6 3 2. - 0 - 1.8171440064907074e-001 - 2.2706279531121254e-002 - -4.8832720518112183e-001 - <_> - - <_> - - - - <_> - 10 3 1 4 -1. - <_> - 10 4 1 2 2. - 0 - -2.9113100841641426e-002 - -6.3608497381210327e-001 - 8.8415952632203698e-004 - <_> - - <_> - - - - <_> - 7 3 1 4 -1. - <_> - 7 4 1 2 2. - 0 - 5.7110278867185116e-003 - -3.9759650826454163e-002 - 2.3626869916915894e-001 - <_> - - <_> - - - - <_> - 17 3 1 4 -1. - <_> - 17 5 1 2 2. - 0 - 9.4733629375696182e-003 - 2.2379960864782333e-002 - -1.7788839340209961e-001 - <_> - - <_> - - - - <_> - 0 3 1 4 -1. - <_> - 0 5 1 2 2. - 0 - 9.1282920911908150e-003 - 3.3228699117898941e-002 - -2.5719881057739258e-001 - <_> - - <_> - - - - <_> - 11 4 2 1 -1. - <_> - 11 4 1 1 2. - 1 - -1.7273770645260811e-002 - 1.6270759701728821e-001 - -2.1705560386180878e-002 - <_> - - <_> - - - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - 0 - 5.9155421331524849e-003 - 2.9015779495239258e-002 - -2.9269620776176453e-001 - <_> - - <_> - - - - <_> - 1 2 16 1 -1. - <_> - 5 2 8 1 2. - 0 - 3.2589450478553772e-002 - -3.7038650363683701e-002 - 2.3939940333366394e-001 - <_> - - <_> - - - - <_> - 5 0 4 3 -1. - <_> - 6 0 2 3 2. - 0 - 6.0267271474003792e-003 - 4.7315951436758041e-002 - -2.2438630461692810e-001 - <_> - - <_> - - - - <_> - 16 0 2 3 -1. - <_> - 15 1 2 1 3. - 1 - -1.1691940017044544e-002 - 1.1056809872388840e-001 - -3.3759210258722305e-002 - <_> - - <_> - - - - <_> - 5 1 3 2 -1. - <_> - 5 2 3 1 2. - 0 - -4.0161567740142345e-003 - 1.0859990119934082e-001 - -7.9750627279281616e-002 - <_> - - <_> - - - - <_> - 7 3 9 1 -1. - <_> - 10 3 3 1 3. - 0 - -2.7831029146909714e-003 - 6.5243370831012726e-002 - -1.0473190248012543e-001 - <_> - - <_> - - - - <_> - 5 7 2 1 -1. - <_> - 6 7 1 1 2. - 0 - 1.0584440315142274e-004 - -8.9639373123645782e-002 - 9.8210841417312622e-002 - <_> - - <_> - - - - <_> - 9 2 6 2 -1. - <_> - 9 2 6 1 2. - 1 - -1.5233529731631279e-002 - -6.2021549791097641e-002 - 1.6327550634741783e-002 - <_> - - <_> - - - - <_> - 9 2 2 6 -1. - <_> - 9 2 1 6 2. - 1 - -5.0070729106664658e-002 - -4.4011878967285156e-001 - 2.0913720130920410e-002 - <_> - - <_> - - - - <_> - 11 4 2 1 -1. - <_> - 11 4 1 1 2. - 1 - -5.1066437736153603e-003 - -5.4624948650598526e-002 - 3.3620700240135193e-002 - <_> - - <_> - - - - <_> - 2 5 3 6 -1. - <_> - 2 7 3 2 3. - 0 - 1.1259020306169987e-002 - -6.2500476837158203e-002 - 1.5815970301628113e-001 - <_> - - <_> - - - - <_> - 12 3 4 2 -1. - <_> - 13 4 2 2 2. - 1 - -2.9940709471702576e-002 - 9.9289081990718842e-002 - -1.5471179969608784e-002 - <_> - - <_> - - - - <_> - 6 3 2 4 -1. - <_> - 5 4 2 2 2. - 1 - -5.5130548775196075e-002 - -6.7135852575302124e-001 - 1.5666810795664787e-002 - <_> - - <_> - - - - <_> - 16 8 2 4 -1. - <_> - 17 8 1 2 2. - <_> - 16 10 1 2 2. - 0 - -5.5883829481899738e-003 - 1.7980380356311798e-001 - -2.3508859798312187e-002 - <_> - - <_> - - - - <_> - 0 8 2 4 -1. - <_> - 0 8 1 2 2. - <_> - 1 10 1 2 2. - 0 - 1.0726720211096108e-004 - -1.2116920202970505e-001 - 7.4779331684112549e-002 - <_> - - <_> - - - - <_> - 17 0 1 3 -1. - <_> - 16 1 1 1 3. - 1 - -5.8314870111644268e-003 - 1.4616240561008453e-001 - -5.4507091641426086e-002 - <_> - - <_> - - - - <_> - 7 2 3 2 -1. - <_> - 8 2 1 2 3. - 0 - 8.7257036939263344e-003 - 1.9625810906291008e-002 - -4.1208940744400024e-001 - <_> - - <_> - - - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - 0 - -2.4206570815294981e-003 - 1.5835359692573547e-001 - -3.8983419537544250e-002 - <_> - - <_> - - - - <_> - 8 5 2 3 -1. - <_> - 7 6 2 1 3. - 1 - -2.1286660805344582e-002 - 2.2240610420703888e-001 - -3.5136040300130844e-002 - <_> - - <_> - - - - <_> - 10 4 2 1 -1. - <_> - 10 4 1 1 2. - 1 - 3.1091319397091866e-002 - 4.7937040217220783e-003 - -7.7131432294845581e-001 - <_> - - <_> - - - - <_> - 8 4 1 2 -1. - <_> - 8 4 1 1 2. - 1 - 1.7936730757355690e-002 - 1.5124980360269547e-002 - -5.3765070438385010e-001 - <_> - - <_> - - - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - 0 - 2.1349859889596701e-003 - -5.1612630486488342e-002 - 1.4234930276870728e-001 - <_> - - <_> - - - - <_> - 7 6 3 3 -1. - <_> - 8 7 1 3 3. - 1 - -3.0158199369907379e-002 - -3.8654580712318420e-001 - 2.1317519247531891e-002 - <_> - - <_> - - - - <_> - 16 0 2 3 -1. - <_> - 15 1 2 1 3. - 1 - 1.3773770071566105e-002 - -2.7151010930538177e-002 - 1.3596110045909882e-001 - <_> - - <_> - - - - <_> - 0 0 2 4 -1. - <_> - 0 2 2 2 2. - 0 - 4.1484188288450241e-002 - 1.2364120222628117e-002 - -6.0026621818542480e-001 - <_> - - <_> - - - - <_> - 16 0 2 3 -1. - <_> - 15 1 2 1 3. - 1 - 6.5589502453804016e-002 - -3.6776699125766754e-003 - 7.8460097312927246e-001 - <_> - - <_> - - - - <_> - 2 0 3 2 -1. - <_> - 3 1 1 2 3. - 1 - 1.1003009974956512e-002 - -6.3236251473426819e-002 - 1.5475340187549591e-001 - <_> - - <_> - - - - <_> - 17 0 1 3 -1. - <_> - 16 1 1 1 3. - 1 - -2.8239460662007332e-002 - -5.1131701469421387e-001 - 4.6110339462757111e-003 - <_> - - <_> - - - - <_> - 1 0 3 1 -1. - <_> - 2 1 1 1 3. - 1 - -1.2187300249934196e-002 - 2.7354350686073303e-001 - -3.5504270344972610e-002 - <_> - - <_> - - - - <_> - 15 2 3 3 -1. - <_> - 15 3 3 1 3. - 0 - 8.2632675766944885e-003 - 2.6573730632662773e-002 - -1.7602869868278503e-001 - <_> - - <_> - - - - <_> - 0 2 3 3 -1. - <_> - 0 3 3 1 3. - 0 - 5.9086610563099384e-003 - 4.5535139739513397e-002 - -1.7905420064926147e-001 - <_> - - <_> - - - - <_> - 0 2 18 3 -1. - <_> - 0 3 18 1 3. - 0 - 3.0929259955883026e-002 - -6.4203962683677673e-002 - 1.4781139791011810e-001 - <_> - - <_> - - - - <_> - 0 0 18 10 -1. - <_> - 9 0 9 10 2. - 0 - -6.3848549127578735e-001 - 3.0681729316711426e-001 - -2.5509320199489594e-002 - <_> - - <_> - - - - <_> - 0 11 18 1 -1. - <_> - 0 11 9 1 2. - 0 - 7.2267033159732819e-002 - 2.5428939610719681e-002 - -3.7467381358146667e-001 - <_> - - <_> - - - - <_> - 6 6 2 4 -1. - <_> - 5 7 2 2 2. - 1 - -1.5226610004901886e-002 - 1.6329860687255859e-001 - -4.9246568232774734e-002 - <_> - - <_> - - - - <_> - 4 9 14 1 -1. - <_> - 4 9 7 1 2. - 0 - 1.2331340461969376e-002 - -4.1064839810132980e-002 - 8.4209568798542023e-002 - <_> - - <_> - - - - <_> - 4 9 6 2 -1. - <_> - 6 9 2 2 3. - 0 - 1.0107300244271755e-002 - 3.6028161644935608e-002 - -2.2353689372539520e-001 - <_> - - <_> - - - - <_> - 12 9 6 3 -1. - <_> - 12 10 6 1 3. - 0 - 2.2511450573801994e-002 - 1.1696700006723404e-002 - -3.9479258656501770e-001 - <_> - - <_> - - - - <_> - 0 9 2 2 -1. - <_> - 0 9 1 1 2. - <_> - 1 10 1 1 2. - 0 - -8.2349717558827251e-005 - 1.1120089888572693e-001 - -6.8608567118644714e-002 - <_> - - <_> - - - - <_> - 16 9 2 2 -1. - <_> - 17 9 1 1 2. - <_> - 16 10 1 1 2. - 0 - 1.0324839968234301e-004 - -6.6275127232074738e-002 - 6.7079029977321625e-002 - <_> - - <_> - - - - <_> - 0 9 2 2 -1. - <_> - 0 9 1 1 2. - <_> - 1 10 1 1 2. - 0 - 8.9090077381115407e-005 - -1.0303229838609695e-001 - 9.4525799155235291e-002 - <_> - - <_> - - - - <_> - 12 9 6 3 -1. - <_> - 12 10 6 1 3. - 0 - -4.1240658611059189e-002 - -7.6241451501846313e-001 - 4.3533057905733585e-003 - <_> - - <_> - - - - <_> - 0 9 1 2 -1. - <_> - 0 10 1 1 2. - 0 - 9.7355383331887424e-005 - -1.1680190265178680e-001 - 6.3053049147129059e-002 - <_> - - <_> - - - - <_> - 12 9 6 3 -1. - <_> - 12 10 6 1 3. - 0 - -1.0743820166680962e-004 - 6.4560279250144958e-002 - -5.4237850010395050e-002 - <_> - - <_> - - - - <_> - 0 9 3 3 -1. - <_> - 0 10 3 1 3. - 0 - 7.5144548900425434e-003 - 3.3215470612049103e-002 - -2.5936529040336609e-001 - <_> - - <_> - - - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - 0 - -1.2152430135756731e-003 - 7.2427697479724884e-002 - -3.1113930046558380e-002 - <_> - - <_> - - - - <_> - 4 6 2 2 -1. - <_> - 4 6 1 1 2. - <_> - 5 7 1 1 2. - 0 - 1.8813109491020441e-003 - -5.5175848305225372e-002 - 1.3634249567985535e-001 - <_> - - <_> - - - - <_> - 11 0 2 1 -1. - <_> - 11 0 1 1 2. - 0 - -5.5010379292070866e-003 - -4.3706288933753967e-001 - 1.2440679594874382e-002 - <_> - - <_> - - - - <_> - 5 0 2 1 -1. - <_> - 6 0 1 1 2. - 0 - -5.6884759105741978e-003 - -5.7385152578353882e-001 - 1.2120500206947327e-002 - <_> - - <_> - - - - <_> - 0 2 18 8 -1. - <_> - 9 2 9 4 2. - <_> - 0 6 9 4 2. - 0 - -3.1402000784873962e-001 - -5.8456861972808838e-001 - 1.0485970415174961e-002 - <_> - - <_> - - - - <_> - 2 5 14 6 -1. - <_> - 2 8 14 3 2. - 0 - -5.1054090261459351e-002 - -8.1812131404876709e-001 - 7.2916587814688683e-003 - <_> - - <_> - - - - <_> - 9 8 1 3 -1. - <_> - 9 9 1 1 3. - 0 - -3.5786549560725689e-003 - 1.6817580163478851e-001 - -3.0429689213633537e-002 - <_> - - <_> - - - - <_> - 8 9 2 2 -1. - <_> - 8 9 1 1 2. - <_> - 9 10 1 1 2. - 0 - -8.9935383584816009e-005 - 9.6470743417739868e-002 - -7.6730802655220032e-002 - <_> - - <_> - - - - <_> - 8 9 2 2 -1. - <_> - 9 9 1 1 2. - <_> - 8 10 1 1 2. - 0 - -9.1117057309020311e-005 - 1.1266720294952393e-001 - -9.5239438116550446e-002 - <_> - - <_> - - - - <_> - 4 4 1 3 -1. - <_> - 3 5 1 1 3. - 1 - -2.6042489334940910e-002 - -7.2348618507385254e-001 - 1.0882630012929440e-002 - <_> - - <_> - - - - <_> - 8 9 2 2 -1. - <_> - 9 9 1 1 2. - <_> - 8 10 1 1 2. - 0 - 8.9935383584816009e-005 - -8.0347903072834015e-002 - 9.3099772930145264e-002 - <_> - - <_> - - - - <_> - 8 8 2 1 -1. - <_> - 9 8 1 1 2. - 0 - 3.9171269163489342e-003 - 2.3305200040340424e-002 - -3.5824480652809143e-001 - <_> - - <_> - - - - <_> - 4 9 14 2 -1. - <_> - 4 9 7 2 2. - 0 - 1.1886080354452133e-001 - 4.6478789299726486e-003 - -5.0907981395721436e-001 - <_> - - <_> - - - - <_> - 0 9 14 2 -1. - <_> - 7 9 7 2 2. - 0 - 1.2497439980506897e-001 - -1.1920450255274773e-002 - 6.2223482131958008e-001 - <_> - - <_> - - - - <_> - 16 8 2 2 -1. - <_> - 16 9 2 1 2. - 0 - 3.2638079574098811e-005 - -5.9718921780586243e-002 - 2.8372069820761681e-002 - <_> - - <_> - - - - <_> - 0 8 2 2 -1. - <_> - 0 9 2 1 2. - 0 - -3.3235920127481222e-003 - -3.6871388554573059e-001 - 1.8724299967288971e-002 - <_> - - <_> - - - - <_> - 7 3 5 3 -1. - <_> - 7 4 5 1 3. - 0 - 3.6250781267881393e-002 - -2.9849739745259285e-002 - 2.6220449805259705e-001 - <_> - - <_> - - - - <_> - 5 5 3 2 -1. - <_> - 6 6 1 2 3. - 1 - 4.5288298279047012e-003 - -5.9577301144599915e-002 - 1.1369310319423676e-001 - <_> - - <_> - - - - <_> - 14 8 2 2 -1. - <_> - 15 8 1 1 2. - <_> - 14 9 1 1 2. - 0 - -1.1289530084468424e-004 - 6.7611873149871826e-002 - -5.3027831017971039e-002 - <_> - - <_> - - - - <_> - 2 8 2 2 -1. - <_> - 2 8 1 1 2. - <_> - 3 9 1 1 2. - 0 - 9.4089351478032768e-005 - -9.8176851868629456e-002 - 8.5162512958049774e-002 - <_> - - <_> - - - - <_> - 13 4 3 5 -1. - <_> - 14 4 1 5 3. - 0 - -5.3257388062775135e-003 - 1.2211889773607254e-001 - -9.0576842427253723e-002 - <_> - - <_> - - - - <_> - 2 1 3 7 -1. - <_> - 3 1 1 7 3. - 0 - -2.8568990528583527e-002 - -4.1049700975418091e-001 - 2.1933330222964287e-002 - <_> - - <_> - - - - <_> - 12 7 3 1 -1. - <_> - 13 7 1 1 3. - 0 - -1.9717009272426367e-003 - 1.6750890016555786e-001 - -6.1077561229467392e-002 - -1.5810970067977905e+000 - 18 - -1 - diff --git a/data/haarcascades/haarcascade_mcs_mouth.xml b/data/haarcascades/haarcascade_mcs_mouth.xml deleted file mode 100644 index 277a2eb678..0000000000 --- a/data/haarcascades/haarcascade_mcs_mouth.xml +++ /dev/null @@ -1,17680 +0,0 @@ - - - -BOOST - HAAR - 25 - 15 - - 218 - - 0 - 17 - - <_> - 13 - -1.4372119903564453e+00 - - <_> - - 0 -1 0 -1.1928550153970718e-01 - - 7.8541821241378784e-01 -4.5413601398468018e-01 - <_> - - 0 -1 1 -6.4164772629737854e-02 - - -7.4076807498931885e-01 2.6520359516143799e-01 - <_> - - 0 -1 2 9.1076180338859558e-02 - - -2.0633709430694580e-01 8.4009462594985962e-01 - <_> - - 0 -1 3 -1.1293300241231918e-01 - - 8.2841217517852783e-01 -1.8663629889488220e-01 - <_> - - 0 -1 4 -7.4193343520164490e-02 - - 8.3546602725982666e-01 -1.5277010202407837e-01 - <_> - - 0 -1 5 2.1404659491963685e-05 - - -7.1694560348987579e-02 1.8583349883556366e-01 - <_> - - 0 -1 6 -9.9697530269622803e-02 - - 6.8704581260681152e-01 -1.7217309772968292e-01 - <_> - - 0 -1 7 -9.0041361749172211e-02 - - 7.3102378845214844e-01 -1.3687719404697418e-01 - <_> - - 0 -1 8 2.5138311320915818e-04 - - -3.4698268771171570e-01 3.6477771401405334e-01 - <_> - - 0 -1 9 1.6144449546118267e-05 - - -3.0854660272598267e-01 2.3200240731239319e-01 - <_> - - 0 -1 10 1.9363909814273939e-05 - - -3.8198560476303101e-01 2.4041070044040680e-01 - <_> - - 0 -1 11 6.9673648104071617e-03 - - 5.4587811231613159e-02 -7.4870657920837402e-01 - <_> - - 0 -1 12 -4.7189309261739254e-03 - - -7.4766868352890015e-01 1.2058690190315247e-01 - <_> - 13 - -1.5416599512100220e+00 - - <_> - - 0 -1 13 -1.0063350200653076e-01 - - 7.8480839729309082e-01 -3.8668298721313477e-01 - <_> - - 0 -1 14 -3.6676760762929916e-02 - - 5.4532337188720703e-01 -4.0126779675483704e-01 - <_> - - 0 -1 15 8.1556223332881927e-02 - - -1.3153980672359467e-01 8.0849581956863403e-01 - <_> - - 0 -1 16 -1.0641860216856003e-01 - - 6.7823898792266846e-01 -2.0833569765090942e-01 - <_> - - 0 -1 17 1.5630740672349930e-02 - - -3.7497881054878235e-01 3.1505098938941956e-01 - <_> - - 0 -1 18 7.1129046380519867e-02 - - -1.5573850274085999e-01 7.0505428314208984e-01 - <_> - - 0 -1 19 7.3663912713527679e-02 - - -1.5476830303668976e-01 6.7158848047256470e-01 - <_> - - 0 -1 20 -1.0592950275167823e-04 - - 1.3653880357742310e-01 -2.6701828837394714e-01 - <_> - - 0 -1 21 -1.9239520188421011e-03 - - -7.2614389657974243e-01 1.3645769655704498e-01 - <_> - - 0 -1 22 2.3057300131767988e-03 - - 7.0613697171211243e-02 -6.4231842756271362e-01 - <_> - - 0 -1 23 1.8073299434036016e-03 - - 1.3556429743766785e-01 -7.0507860183715820e-01 - <_> - - 0 -1 24 -6.6433362662792206e-02 - - 6.1587882041931152e-01 -1.4002630114555359e-01 - <_> - - 0 -1 25 -6.8927720189094543e-02 - - 6.7659240961074829e-01 -1.2249880284070969e-01 - <_> - 29 - -1.5324319601058960e+00 - - <_> - - 0 -1 26 -1.8226550519466400e-01 - - 5.9615147113800049e-01 -3.1954830884933472e-01 - <_> - - 0 -1 27 2.8932818770408630e-01 - - -2.4015160277485847e-02 3.7627071142196655e-01 - <_> - - 0 -1 28 -4.2456621304154396e-03 - - -7.1173977851867676e-01 1.2147200107574463e-01 - <_> - - 0 -1 29 5.4568149149417877e-02 - - -1.8221180140972137e-01 4.5972719788551331e-01 - <_> - - 0 -1 30 -4.4434829615056515e-03 - - -5.3546768426895142e-01 1.6558359563350677e-01 - <_> - - 0 -1 31 -2.0492389798164368e-02 - - -8.7706089019775391e-01 -1.5163989737629890e-02 - <_> - - 0 -1 32 -4.8007471486926079e-03 - - -5.4314231872558594e-01 1.3561309874057770e-01 - <_> - - 0 -1 33 1.2266600131988525e-01 - - 1.1244720220565796e-01 -6.5744018554687500e-01 - <_> - - 0 -1 34 -5.5254979088203982e-05 - - 1.5367390215396881e-01 -3.8419818878173828e-01 - <_> - - 0 -1 35 -1.1318609863519669e-01 - - 4.9271959066390991e-01 -1.0942760109901428e-01 - <_> - - 0 -1 36 7.9295687377452850e-02 - - -1.6474610567092896e-01 4.7205179929733276e-01 - <_> - - 0 -1 37 1.4872930012643337e-02 - - 7.4014373123645782e-02 -5.9262758493423462e-01 - <_> - - 0 -1 38 5.3839791566133499e-02 - - -2.1115440130233765e-01 3.5378909111022949e-01 - <_> - - 0 -1 39 -7.5959272682666779e-02 - - 5.9318017959594727e-01 -1.0900689661502838e-01 - <_> - - 0 -1 40 1.1581660062074661e-01 - - -9.8490521311759949e-02 5.9403347969055176e-01 - <_> - - 0 -1 41 -1.6082640737295151e-02 - - 3.7941950559616089e-01 -1.6540519893169403e-01 - <_> - - 0 -1 42 6.7254770547151566e-03 - - 9.3757107853889465e-02 -7.0609378814697266e-01 - <_> - - 0 -1 43 -6.1188410967588425e-02 - - -4.3810299038887024e-01 7.9622969031333923e-02 - <_> - - 0 -1 44 -5.5152038112282753e-03 - - -7.0193570852279663e-01 7.8178927302360535e-02 - <_> - - 0 -1 45 -1.9885340332984924e-01 - - -6.7261308431625366e-01 5.6049771606922150e-02 - <_> - - 0 -1 46 1.9447319209575653e-02 - - -1.1651100218296051e-01 4.1515278816223145e-01 - <_> - - 0 -1 47 -4.6706218272447586e-03 - - -6.0901588201522827e-01 1.0499799996614456e-01 - <_> - - 0 -1 48 4.0827528573572636e-03 - - 6.8996846675872803e-02 -5.4908710718154907e-01 - <_> - - 0 -1 49 -2.0197959616780281e-02 - - 2.8849300742149353e-01 -1.8048889935016632e-01 - <_> - - 0 -1 50 5.0443068146705627e-02 - - -8.9770630002021790e-02 4.6099209785461426e-01 - <_> - - 0 -1 51 -5.0139562226831913e-03 - - -4.8208698630332947e-01 5.8809980750083923e-02 - <_> - - 0 -1 52 8.5741933435201645e-03 - - 5.6864671409130096e-02 -5.9790831804275513e-01 - <_> - - 0 -1 53 -1.2162449769675732e-02 - - 1.4463059604167938e-01 -1.1683259904384613e-01 - <_> - - 0 -1 54 -1.9329390488564968e-03 - - -5.4508608579635620e-01 6.0978390276432037e-02 - <_> - 34 - -1.4849940538406372e+00 - - <_> - - 0 -1 55 -3.2055098563432693e-02 - - 4.2800301313400269e-01 -4.2589429020881653e-01 - <_> - - 0 -1 56 -1.2310340255498886e-01 - - 5.1212418079376221e-01 -2.0555849373340607e-01 - <_> - - 0 -1 57 -5.8588259853422642e-03 - - -7.1018207073211670e-01 1.0759060084819794e-01 - <_> - - 0 -1 58 9.7714133560657501e-02 - - -1.4779579639434814e-01 4.5711749792098999e-01 - <_> - - 0 -1 59 -5.2739460021257401e-02 - - 3.7437671422958374e-01 -2.1838270127773285e-01 - <_> - - 0 -1 60 5.8418910950422287e-02 - - -1.3862940669059753e-01 4.9932828545570374e-01 - <_> - - 0 -1 61 8.8756918907165527e-02 - - -1.3158950209617615e-01 6.2165617942810059e-01 - <_> - - 0 -1 62 1.4587669633328915e-02 - - 9.1569669544696808e-02 -5.8156752586364746e-01 - <_> - - 0 -1 63 1.0446000099182129e-01 - - 5.2740359678864479e-03 -5.6644519531250000e+04 - <_> - - 0 -1 64 -8.4322784096002579e-03 - - -4.8660460114479065e-01 9.7961761057376862e-02 - <_> - - 0 -1 65 4.0655929595232010e-02 - - 1.3915790617465973e-01 -3.6560159921646118e-01 - <_> - - 0 -1 66 6.3366899266839027e-03 - - 6.4174547791481018e-02 -6.2454712390899658e-01 - <_> - - 0 -1 67 1.5845589339733124e-02 - - -1.7919149994850159e-01 2.8899058699607849e-01 - <_> - - 0 -1 68 -7.4686333537101746e-02 - - 5.4240232706069946e-01 -1.3147279620170593e-01 - <_> - - 0 -1 69 4.7695250250399113e-03 - - 9.6534043550491333e-02 -6.5611547231674194e-01 - <_> - - 0 -1 70 -5.3522668778896332e-02 - - 4.6368008852005005e-01 -1.3534300029277802e-01 - <_> - - 0 -1 71 -6.3648750074207783e-03 - - -6.6245639324188232e-01 6.8485736846923828e-02 - <_> - - 0 -1 72 -2.4473370611667633e-01 - - -8.1813371181488037e-01 4.5079968869686127e-02 - <_> - - 0 -1 73 -2.4634969886392355e-03 - - -7.6818048954010010e-01 4.9584589898586273e-02 - <_> - - 0 -1 74 -3.5803489387035370e-02 - - 3.7496039271354675e-01 -1.4479289948940277e-01 - <_> - - 0 -1 75 -5.6720529682934284e-03 - - -6.1275362968444824e-01 9.3584716320037842e-02 - <_> - - 0 -1 76 -1.3268710114061832e-02 - - 2.8637841343879700e-01 -2.5518891215324402e-01 - <_> - - 0 -1 77 -6.2518939375877380e-03 - - -5.8967739343643188e-01 6.7711167037487030e-02 - <_> - - 0 -1 78 7.3092570528388023e-03 - - 2.7219809591770172e-02 -5.7148611545562744e-01 - <_> - - 0 -1 79 2.5819439440965652e-02 - - -1.3260079920291901e-01 3.0502519011497498e-01 - <_> - - 0 -1 80 -2.1107880398631096e-02 - - 1.2006290256977081e-01 -1.4752650260925293e-01 - <_> - - 0 -1 81 4.0848340839147568e-02 - - -1.7368830740451813e-01 2.5304460525512695e-01 - <_> - - 0 -1 82 -1.7947599291801453e-02 - - -7.1176171302795410e-01 5.8369800448417664e-02 - <_> - - 0 -1 83 -1.3889590278267860e-02 - - -6.7781329154968262e-01 4.3563000857830048e-02 - <_> - - 0 -1 84 -9.8488982766866684e-03 - - 1.4792129397392273e-01 -8.9746527373790741e-02 - <_> - - 0 -1 85 -6.5984703600406647e-02 - - 5.6838017702102661e-01 -6.8174257874488831e-02 - <_> - - 0 -1 86 -1.8370660254731774e-03 - - -4.9869379401206970e-01 7.7964358031749725e-02 - <_> - - 0 -1 87 -2.7765180915594101e-02 - - 2.6799491047859192e-01 -1.3826249539852142e-01 - <_> - - 0 -1 88 9.9889356642961502e-03 - - 4.4561941176652908e-02 -7.3173791170120239e-01 - <_> - 42 - -1.5437099933624268e+00 - - <_> - - 0 -1 89 -4.5638348907232285e-02 - - 6.2754231691360474e-01 -2.4949370324611664e-01 - <_> - - 0 -1 90 -3.1067680567502975e-02 - - 6.4278161525726318e-01 -1.6719000041484833e-01 - <_> - - 0 -1 91 3.0193419661372900e-03 - - -2.3993469774723053e-01 3.6768180131912231e-01 - <_> - - 0 -1 92 3.1567640602588654e-02 - - -1.1476919800043106e-01 5.7501727342605591e-01 - <_> - - 0 -1 93 -6.4146341755986214e-03 - - 2.1546250581741333e-01 -3.7687700986862183e-01 - <_> - - 0 -1 94 -5.7010860182344913e-03 - - -4.5338240265846252e-01 9.4688847661018372e-02 - <_> - - 0 -1 95 1.8903000652790070e-01 - - 8.0115526914596558e-02 -7.1848851442337036e-01 - <_> - - 0 -1 96 1.2939789891242981e-01 - - 1.0937190055847168e-01 -5.1970487833023071e-01 - <_> - - 0 -1 97 -6.5768390893936157e-02 - - 5.0031042098999023e-01 -1.2387350201606750e-01 - <_> - - 0 -1 98 -4.0884059853851795e-03 - - -5.1180112361907959e-01 5.9422370046377182e-02 - <_> - - 0 -1 99 -3.0664270743727684e-02 - - 2.9646489024162292e-01 -1.7412480711936951e-01 - <_> - - 0 -1 100 2.7700960636138916e-03 - - 8.4690727293491364e-02 -4.0095150470733643e-01 - <_> - - 0 -1 101 -6.2402039766311646e-03 - - -5.5609232187271118e-01 8.0085046589374542e-02 - <_> - - 0 -1 102 1.0515259578824043e-02 - - -1.3094049692153931e-01 3.6127111315727234e-01 - <_> - - 0 -1 103 1.8179269507527351e-02 - - -1.2451809644699097e-01 3.5565629601478577e-01 - <_> - - 0 -1 104 5.3037698380649090e-03 - - 6.3822023570537567e-02 -6.1784660816192627e-01 - <_> - - 0 -1 105 -1.9478060305118561e-01 - - -7.2289019823074341e-01 4.7576818615198135e-02 - <_> - - 0 -1 106 7.2230421938002110e-03 - - 4.5338228344917297e-02 -5.4608362913131714e-01 - <_> - - 0 -1 107 5.0375838764011860e-03 - - 8.0446831881999969e-02 -4.8174721002578735e-01 - <_> - - 0 -1 108 -7.1934829466044903e-03 - - -5.0189918279647827e-01 1.2870029546320438e-02 - <_> - - 0 -1 109 -4.4941599480807781e-03 - - -5.8627098798751831e-01 6.3467502593994141e-02 - <_> - - 0 -1 110 8.7413139641284943e-02 - - -6.7620240151882172e-02 4.7970318794250488e-01 - <_> - - 0 -1 111 -3.7701569497585297e-02 - - 3.9133429527282715e-01 -9.7880929708480835e-02 - <_> - - 0 -1 112 3.0070370994508266e-03 - - 4.8492491245269775e-02 -2.4722249805927277e-01 - <_> - - 0 -1 113 9.7409866750240326e-02 - - -6.6901072859764099e-02 5.8135199546813965e-01 - <_> - - 0 -1 114 -4.0166568942368031e-03 - - -5.4565542936325073e-01 3.6392461508512497e-02 - <_> - - 0 -1 115 1.0492489673197269e-02 - - -1.0874660313129425e-01 3.2534250617027283e-01 - <_> - - 0 -1 116 2.4965999647974968e-02 - - -1.1378960311412811e-01 3.0565109848976135e-01 - <_> - - 0 -1 117 1.3010300695896149e-01 - - -1.2204769998788834e-01 3.0353659391403198e-01 - <_> - - 0 -1 118 -8.4372088313102722e-02 - - -6.9431221485137939e-01 1.7885660752654076e-02 - <_> - - 0 -1 119 -2.9267850331962109e-03 - - -5.4018348455429077e-01 5.6407321244478226e-02 - <_> - - 0 -1 120 -2.0674509927630424e-02 - - 4.1809210181236267e-01 -6.8534046411514282e-02 - <_> - - 0 -1 121 -5.1450639963150024e-02 - - -6.2890982627868652e-01 5.2987698465585709e-02 - <_> - - 0 -1 122 -8.9261196553707123e-03 - - -4.6443560719490051e-01 2.3655079305171967e-02 - <_> - - 0 -1 123 -8.3048470318317413e-02 - - 3.3041968941688538e-01 -9.3869760632514954e-02 - <_> - - 0 -1 124 1.1336999945342541e-02 - - -9.7960032522678375e-02 3.4840530157089233e-01 - <_> - - 0 -1 125 8.2777902483940125e-02 - - -1.1593910306692123e-01 2.6809579133987427e-01 - <_> - - 0 -1 126 -4.7884881496429443e-02 - - -6.0792112350463867e-01 2.2236289456486702e-02 - <_> - - 0 -1 127 -3.8582698907703161e-03 - - -4.6889010071754456e-01 5.5454041808843613e-02 - <_> - - 0 -1 128 -3.3453129231929779e-02 - - 4.1926679015159607e-01 -6.3108846545219421e-02 - <_> - - 0 -1 129 1.2603639625012875e-02 - - -1.2276329845190048e-01 2.1752209961414337e-01 - <_> - - 0 -1 130 2.6260089129209518e-02 - - 1.6289670020341873e-02 -5.6887590885162354e-01 - <_> - 64 - -1.5637760162353516e+00 - - <_> - - 0 -1 131 -1.9779309630393982e-02 - - 4.4720950722694397e-01 -2.5737971067428589e-01 - <_> - - 0 -1 132 -9.1997236013412476e-03 - - 4.3978941440582275e-01 -1.3823099434375763e-01 - <_> - - 0 -1 133 2.2242579609155655e-02 - - -1.7611500620841980e-01 3.4068119525909424e-01 - <_> - - 0 -1 134 5.3650550544261932e-03 - - -1.0874909907579422e-01 1.6310940682888031e-01 - <_> - - 0 -1 135 7.4250137805938721e-01 - - 4.6233131433837116e-04 -1.4172740478515625e+03 - <_> - - 0 -1 136 -1.2899990379810333e-01 - - 4.2209368944168091e-01 -1.2642090022563934e-01 - <_> - - 0 -1 137 4.2140239477157593e-01 - - 3.0299068894237280e-03 1.2071870117187500e+03 - <_> - - 0 -1 138 -1.4317120611667633e-01 - - 5.0700122117996216e-01 -1.0911709815263748e-01 - <_> - - 0 -1 139 4.4366121292114258e-03 - - -2.2188140451908112e-01 2.4461059272289276e-01 - <_> - - 0 -1 140 3.0177310109138489e-03 - - 1.0722339898347855e-01 -3.4702050685882568e-01 - <_> - - 0 -1 141 -4.8220949247479439e-03 - - -6.5341192483901978e-01 8.0343447625637054e-02 - <_> - - 0 -1 142 3.6278828978538513e-02 - - -2.2070750594139099e-01 2.2424909472465515e-01 - <_> - - 0 -1 143 -1.6759949922561646e-01 - - 4.0590721368789673e-01 -1.0541699826717377e-01 - <_> - - 0 -1 144 -5.0991941243410110e-02 - - 3.4522831439971924e-01 -1.2064740061759949e-01 - <_> - - 0 -1 145 1.6163529828190804e-02 - - -1.4651750028133392e-01 3.6967509984970093e-01 - <_> - - 0 -1 146 8.3268675953149796e-03 - - 6.4239829778671265e-02 -5.4906690120697021e-01 - <_> - - 0 -1 147 -7.2614871896803379e-03 - - -6.1058157682418823e-01 5.3833089768886566e-02 - <_> - - 0 -1 148 -4.2785529047250748e-02 - - 3.4355071187019348e-01 -1.0584419965744019e-01 - <_> - - 0 -1 149 -5.5888559669256210e-02 - - -4.2134630680084229e-01 8.5534237325191498e-02 - <_> - - 0 -1 150 1.0770390182733536e-01 - - 7.9667679965496063e-02 -5.1052689552307129e-01 - <_> - - 0 -1 151 -4.8622798203723505e-05 - - 1.1649709939956665e-01 -3.0223610997200012e-01 - <_> - - 0 -1 152 2.7271810919046402e-02 - - -8.3197653293609619e-02 3.4107041358947754e-01 - <_> - - 0 -1 153 2.7942128945142031e-03 - - 8.3613917231559753e-02 -4.5217469334602356e-01 - <_> - - 0 -1 154 -5.9649557806551456e-03 - - -5.8149677515029907e-01 5.8847118169069290e-02 - <_> - - 0 -1 155 -3.6455120891332626e-02 - - 2.9876148700714111e-01 -1.1639650166034698e-01 - <_> - - 0 -1 156 5.6035928428173065e-02 - - -1.1897490173578262e-01 3.4904998540878296e-01 - <_> - - 0 -1 157 1.9068910041823983e-03 - - 6.2339980155229568e-02 -5.2227342128753662e-01 - <_> - - 0 -1 158 -3.1480301171541214e-02 - - -5.9882801771163940e-01 2.2110050544142723e-02 - <_> - - 0 -1 159 -2.9177989810705185e-02 - - -7.6283282041549683e-01 3.7851981818675995e-02 - <_> - - 0 -1 160 9.3441819772124290e-03 - - 2.9378799721598625e-02 -5.4641848802566528e-01 - <_> - - 0 -1 161 1.2941689928993583e-03 - - -2.1526190638542175e-01 1.2930710613727570e-01 - <_> - - 0 -1 162 3.9952751249074936e-02 - - -8.1563241779804230e-02 3.4403279423713684e-01 - <_> - - 0 -1 163 2.5796899199485779e-01 - - -8.2971312105655670e-02 2.9717591404914856e-01 - <_> - - 0 -1 164 8.3975978195667267e-03 - - -1.2357590347528458e-01 3.1307429075241089e-01 - <_> - - 0 -1 165 -2.1048100665211678e-02 - - 2.5538909435272217e-01 -1.0775920003652573e-01 - <_> - - 0 -1 166 1.8419239670038223e-02 - - -3.4885831177234650e-02 4.6130049228668213e-01 - <_> - - 0 -1 167 -3.3599320799112320e-02 - - -6.3856261968612671e-01 4.3235760182142258e-02 - <_> - - 0 -1 168 -5.9369178488850594e-03 - - -3.3812350034713745e-01 2.6138810440897942e-02 - <_> - - 0 -1 169 7.4244509451091290e-03 - - 4.1649479418992996e-02 -6.0131359100341797e-01 - <_> - - 0 -1 170 -3.8341500330716372e-03 - - -3.1479349732398987e-01 2.2726090624928474e-02 - <_> - - 0 -1 171 5.9263929724693298e-03 - - -8.4517963230609894e-02 2.9861259460449219e-01 - <_> - - 0 -1 172 -1.9444419071078300e-02 - - 2.2137579321861267e-01 -5.1358368247747421e-02 - <_> - - 0 -1 173 1.8775269389152527e-02 - - -1.2233640253543854e-01 2.6476910710334778e-01 - <_> - - 0 -1 174 6.4857508987188339e-03 - - 2.0563449710607529e-02 -5.2469062805175781e-01 - <_> - - 0 -1 175 -2.5987258553504944e-01 - - -6.5701937675476074e-01 3.4549690783023834e-02 - <_> - - 0 -1 176 -5.8150831609964371e-03 - - -6.5954607725143433e-01 3.0244240537285805e-02 - <_> - - 0 -1 177 -2.6121940463781357e-02 - - 1.8704070150852203e-01 -1.2529240548610687e-01 - <_> - - 0 -1 178 -5.7821800000965595e-03 - - 2.3285099864006042e-01 -1.1824960261583328e-01 - <_> - - 0 -1 179 -2.9595640953630209e-03 - - -4.5799380540847778e-01 5.6465540081262589e-02 - <_> - - 0 -1 180 -1.2088200077414513e-02 - - -5.1893490552902222e-01 2.4499660357832909e-02 - <_> - - 0 -1 181 -8.8109169155359268e-03 - - 2.5700250267982483e-01 -9.2767156660556793e-02 - <_> - - 0 -1 182 -4.5942850410938263e-02 - - -4.4797191023826599e-01 2.9946230351924896e-02 - <_> - - 0 -1 183 -1.0004140436649323e-02 - - -6.1496341228485107e-01 3.6421269178390503e-02 - <_> - - 0 -1 184 -1.1675399728119373e-02 - - 1.1728770285844803e-01 -6.1347480863332748e-02 - <_> - - 0 -1 185 -5.2466850727796555e-02 - - -7.6136529445648193e-01 3.0689470469951630e-02 - <_> - - 0 -1 186 1.8226340413093567e-02 - - -8.5480183362960815e-02 2.6953738927841187e-01 - <_> - - 0 -1 187 -4.5268420130014420e-02 - - 3.2644701004028320e-01 -7.7375642955303192e-02 - <_> - - 0 -1 188 -8.1426883116364479e-03 - - -4.5829379558563232e-01 9.3973511829972267e-03 - <_> - - 0 -1 189 -5.3349281661212444e-03 - - -5.7754981517791748e-01 3.5252388566732407e-02 - <_> - - 0 -1 190 -1.0754769900813699e-03 - - 1.4347539842128754e-01 -1.0157629847526550e-01 - <_> - - 0 -1 191 -3.5198600962758064e-03 - - -6.0820412635803223e-01 3.2888069748878479e-02 - <_> - - 0 -1 192 1.1248350143432617e-02 - - -9.0550042688846588e-02 2.3237830400466919e-01 - <_> - - 0 -1 193 -1.1992019601166248e-02 - - -5.7053321599960327e-01 3.6703631281852722e-02 - <_> - - 0 -1 194 -1.2105530127882957e-02 - - -7.0862692594528198e-01 4.4598700478672981e-03 - <_> - 57 - -1.5267670154571533e+00 - - <_> - - 0 -1 195 -1.1128909885883331e-01 - - 5.2144467830657959e-01 -2.7625268697738647e-01 - <_> - - 0 -1 196 -3.1310080084949732e-03 - - -6.0733932256698608e-01 2.4398099631071091e-02 - <_> - - 0 -1 197 -9.7501352429389954e-02 - - 5.4892867803573608e-01 -1.6524270176887512e-01 - <_> - - 0 -1 198 -6.5224707126617432e-02 - - 3.4020069241523743e-01 -2.6939308643341064e-01 - <_> - - 0 -1 199 1.1918029934167862e-01 - - -1.1235760152339935e-01 6.3959801197052002e-01 - <_> - - 0 -1 200 -1.4062980189919472e-02 - - 3.3427619934082031e-01 -1.2845389544963837e-01 - <_> - - 0 -1 201 -5.6402500718832016e-02 - - 3.7906289100646973e-01 -1.5541569888591766e-01 - <_> - - 0 -1 202 7.1742408908903599e-03 - - -1.1330889910459518e-01 1.8250890076160431e-01 - <_> - - 0 -1 203 1.2597529590129852e-01 - - 9.4548553228378296e-02 -4.8534440994262695e-01 - <_> - - 0 -1 204 5.9177991934120655e-03 - - 7.0132136344909668e-02 -5.3770399093627930e-01 - <_> - - 0 -1 205 -4.3927740305662155e-02 - - 3.9507418870925903e-01 -1.0801859945058823e-01 - <_> - - 0 -1 206 -9.8314704373478889e-03 - - 9.5960617065429688e-02 -4.6807598322629929e-02 - <_> - - 0 -1 207 5.6353402324020863e-03 - - 9.4341628253459930e-02 -5.2477169036865234e-01 - <_> - - 0 -1 208 -1.1538280174136162e-02 - - -5.1548802852630615e-01 1.3805530034005642e-02 - <_> - - 0 -1 209 2.8646249324083328e-02 - - -1.3827019929885864e-01 2.7504378557205200e-01 - <_> - - 0 -1 210 1.3867979869246483e-02 - - -1.2035869807004929e-01 3.5214358568191528e-01 - <_> - - 0 -1 211 -4.0469371015205979e-04 - - 1.5226370096206665e-01 -2.5900840759277344e-01 - <_> - - 0 -1 212 -1.5945810079574585e-01 - - -6.3918548822402954e-01 5.1464989781379700e-02 - <_> - - 0 -1 213 -2.7928699273616076e-03 - - -5.8401507139205933e-01 5.4279379546642303e-02 - <_> - - 0 -1 214 1.8353210762143135e-02 - - -1.0511510074138641e-01 3.5298159718513489e-01 - <_> - - 0 -1 215 -5.1810559816658497e-03 - - -4.7417679429054260e-01 7.9851232469081879e-02 - <_> - - 0 -1 216 9.2321299016475677e-03 - - -7.5932718813419342e-02 1.8528139591217041e-01 - <_> - - 0 -1 217 1.2117110192775726e-02 - - -1.1175289750099182e-01 2.8536349534988403e-01 - <_> - - 0 -1 218 -7.2612818330526352e-03 - - -5.8851087093353271e-01 5.2688319236040115e-02 - <_> - - 0 -1 219 5.6134900078177452e-03 - - 4.7468490898609161e-02 -5.3945899009704590e-01 - <_> - - 0 -1 220 -1.9451679289340973e-01 - - -5.6342220306396484e-01 3.0210889875888824e-02 - <_> - - 0 -1 221 3.5509431362152100e-01 - - 6.3089452683925629e-02 -4.9805879592895508e-01 - <_> - - 0 -1 222 3.3111970871686935e-02 - - 3.4632470458745956e-02 -5.2464848756790161e-01 - <_> - - 0 -1 223 3.4281808882951736e-02 - - 4.3143980205059052e-02 -6.4707130193710327e-01 - <_> - - 0 -1 224 -7.8256614506244659e-03 - - -4.6880009770393372e-01 4.0239371359348297e-02 - <_> - - 0 -1 225 1.1156049557030201e-02 - - 4.0150500833988190e-02 -6.0955387353897095e-01 - <_> - - 0 -1 226 1.1363060213625431e-02 - - -8.2748986780643463e-02 3.8116890192031860e-01 - <_> - - 0 -1 227 2.0405100658535957e-02 - - 4.2575638741254807e-02 -7.4677741527557373e-01 - <_> - - 0 -1 228 1.9111629575490952e-02 - - -1.2391970306634903e-01 2.2265200316905975e-01 - <_> - - 0 -1 229 -7.3364898562431335e-03 - - 3.0342069268226624e-01 -9.2695690691471100e-02 - <_> - - 0 -1 230 -8.6538922041654587e-03 - - -3.3517450094223022e-01 5.8540578931570053e-02 - <_> - - 0 -1 231 3.4789599478244781e-02 - - 3.3757809549570084e-02 -7.4834531545639038e-01 - <_> - - 0 -1 232 -1.7418829724192619e-02 - - 2.4453639984130859e-01 -6.9878697395324707e-02 - <_> - - 0 -1 233 3.5119079984724522e-03 - - -1.2778869271278381e-01 2.4033150076866150e-01 - <_> - - 0 -1 234 5.0669797929003835e-04 - - -1.1697790026664734e-01 1.4393800497055054e-01 - <_> - - 0 -1 235 -5.9512741863727570e-03 - - -5.0781607627868652e-01 4.7852229326963425e-02 - <_> - - 0 -1 236 5.0377801060676575e-02 - - 2.9282520990818739e-03 -7.7516961097717285e-01 - <_> - - 0 -1 237 3.8862510118633509e-03 - - -1.5504209697246552e-01 1.5709200501441956e-01 - <_> - - 0 -1 238 3.8511630147695541e-02 - - 2.3097040131688118e-02 -6.2916171550750732e-01 - <_> - - 0 -1 239 -5.5746049620211124e-03 - - 1.8070709705352783e-01 -1.2980529665946960e-01 - <_> - - 0 -1 240 1.2664760649204254e-01 - - -8.6559399962425232e-02 2.9573258757591248e-01 - <_> - - 0 -1 241 5.4126111790537834e-03 - - -1.5283249318599701e-01 1.6629169881343842e-01 - <_> - - 0 -1 242 -3.6153081804513931e-02 - - 2.7973130345344543e-01 -1.0398860275745392e-01 - <_> - - 0 -1 243 7.1673998609185219e-03 - - -9.4564221799373627e-02 2.7785280346870422e-01 - <_> - - 0 -1 244 -6.7790350876748562e-03 - - 1.6790680587291718e-01 -8.3954311907291412e-02 - <_> - - 0 -1 245 -2.9867609962821007e-02 - - -7.2361171245574951e-01 3.4631069749593735e-02 - <_> - - 0 -1 246 6.5265512093901634e-03 - - -1.1737609654664993e-01 1.3460339605808258e-01 - <_> - - 0 -1 247 3.4080960176652297e-05 - - -1.7531760036945343e-01 1.3222040235996246e-01 - <_> - - 0 -1 248 -1.7629459500312805e-02 - - -5.1608538627624512e-01 2.5386190041899681e-02 - <_> - - 0 -1 249 -1.5446309698745608e-03 - - -4.1421860456466675e-01 5.1330089569091797e-02 - <_> - - 0 -1 250 1.1520429980009794e-03 - - 3.6615949124097824e-02 -3.6928009986877441e-01 - <_> - - 0 -1 251 -2.9612779617309570e-03 - - 2.4461880326271057e-01 -8.4271423518657684e-02 - <_> - 64 - -1.4507639408111572e+00 - - <_> - - 0 -1 252 -1.4103169552981853e-02 - - 2.6997908949851990e-01 -3.9283180236816406e-01 - <_> - - 0 -1 253 5.4714400321245193e-03 - - -2.2691699862480164e-01 2.7490520477294922e-01 - <_> - - 0 -1 254 1.6635479405522346e-02 - - -1.5479080379009247e-01 3.2242020964622498e-01 - <_> - - 0 -1 255 -8.4477178752422333e-03 - - 3.3207809925079346e-01 -1.2496549636125565e-01 - <_> - - 0 -1 256 -2.4904569145292044e-03 - - 2.9002049565315247e-01 -1.4602980017662048e-01 - <_> - - 0 -1 257 2.8210440650582314e-02 - - -8.3193711936473846e-02 4.8053979873657227e-01 - <_> - - 0 -1 258 9.3179903924465179e-03 - - -1.6924269497394562e-01 3.4820309281349182e-01 - <_> - - 0 -1 259 -5.7910289615392685e-02 - - -5.0403988361358643e-01 8.4093488752841949e-02 - <_> - - 0 -1 260 8.8212646543979645e-02 - - 7.3309987783432007e-02 -4.8833951354026794e-01 - <_> - - 0 -1 261 6.0974380176048726e-05 - - -1.5945079922676086e-01 1.4732779562473297e-01 - <_> - - 0 -1 262 -1.4206360094249249e-02 - - -6.3656848669052124e-01 5.0715360790491104e-02 - <_> - - 0 -1 263 -7.7181900851428509e-03 - - -6.3300287723541260e-01 3.2868899405002594e-02 - <_> - - 0 -1 264 1.2007170356810093e-02 - - -1.2545250356197357e-01 2.8936991095542908e-01 - <_> - - 0 -1 265 7.0782616734504700e-02 - - 3.0565660446882248e-02 -5.6666982173919678e-01 - <_> - - 0 -1 266 -5.0412330776453018e-02 - - -5.0897938013076782e-01 7.1004882454872131e-02 - <_> - - 0 -1 267 2.2072799503803253e-02 - - -1.4448410272598267e-01 2.7811849117279053e-01 - <_> - - 0 -1 268 1.4764940366148949e-02 - - -1.2839899957180023e-01 3.2901859283447266e-01 - <_> - - 0 -1 269 6.8206568248569965e-03 - - 6.5479546785354614e-02 -5.4632657766342163e-01 - <_> - - 0 -1 270 2.0179790444672108e-03 - - -2.0283429324626923e-01 1.6796590387821198e-01 - <_> - - 0 -1 271 2.5081219151616096e-02 - - -1.1049439758062363e-01 3.1918600201606750e-01 - <_> - - 0 -1 272 8.9391358196735382e-03 - - 7.3413208127021790e-02 -5.5383992195129395e-01 - <_> - - 0 -1 273 -4.6396959805861115e-04 - - 1.1230310052633286e-01 -1.6971270740032196e-01 - <_> - - 0 -1 274 -8.5602197796106339e-03 - - -7.3473477363586426e-01 4.1716948151588440e-02 - <_> - - 0 -1 275 -3.8934718817472458e-02 - - 2.2926269471645355e-01 -7.9229943454265594e-02 - <_> - - 0 -1 276 -2.1541599184274673e-02 - - 3.0071720480918884e-01 -1.1523400247097015e-01 - <_> - - 0 -1 277 4.9337721429765224e-03 - - -1.0028380155563354e-01 1.3485729694366455e-01 - <_> - - 0 -1 278 1.6150669753551483e-01 - - 5.8817189186811447e-02 -5.6567448377609253e-01 - <_> - - 0 -1 279 -1.2326019816100597e-02 - - -2.8233280777931213e-01 1.8759630620479584e-02 - <_> - - 0 -1 280 5.2987951785326004e-03 - - 5.2406348288059235e-02 -5.7190322875976562e-01 - <_> - - 0 -1 281 2.8904320672154427e-02 - - 4.7710869461297989e-02 -4.8545840382575989e-01 - <_> - - 0 -1 282 1.5569729730486870e-02 - - 4.9317851662635803e-02 -5.1000517606735229e-01 - <_> - - 0 -1 283 -9.3812070786952972e-02 - - 2.5648090243339539e-01 -1.0570690035820007e-01 - <_> - - 0 -1 284 -2.8693329542875290e-02 - - 5.2470439672470093e-01 -5.0950251519680023e-02 - <_> - - 0 -1 285 7.2301640175282955e-03 - - 5.8365300297737122e-02 -4.8943120241165161e-01 - <_> - - 0 -1 286 8.2664839283097535e-05 - - -1.4372180402278900e-01 1.8202689290046692e-01 - <_> - - 0 -1 287 1.5241750515997410e-03 - - 2.0126799121499062e-02 -3.8845899701118469e-01 - <_> - - 0 -1 288 -6.5512307628523558e-05 - - 2.2803540527820587e-01 -1.5812060236930847e-01 - <_> - - 0 -1 289 2.4175599683076143e-03 - - -8.9045077562332153e-02 2.8392508625984192e-01 - <_> - - 0 -1 290 3.4308489412069321e-02 - - 3.9130479097366333e-02 -6.2633931636810303e-01 - <_> - - 0 -1 291 1.2766799889504910e-02 - - -9.8429419100284576e-02 2.8574278950691223e-01 - <_> - - 0 -1 292 -2.7450299821794033e-03 - - 2.0907869935035706e-01 -1.2679450213909149e-01 - <_> - - 0 -1 293 -7.0629850961267948e-03 - - -4.7847199440002441e-01 2.2974679246544838e-02 - <_> - - 0 -1 294 1.0967410169541836e-02 - - -1.3107410073280334e-01 1.7128570377826691e-01 - <_> - - 0 -1 295 -1.5306890010833740e-01 - - 2.3610730469226837e-01 -9.6540167927742004e-02 - <_> - - 0 -1 296 2.1676090545952320e-03 - - -1.0288040339946747e-01 2.5375840067863464e-01 - <_> - - 0 -1 297 1.0705149732530117e-02 - - 1.6089269891381264e-02 -5.8685261011123657e-01 - <_> - - 0 -1 298 -6.1142919585108757e-03 - - -6.1467981338500977e-01 3.4404631704092026e-02 - <_> - - 0 -1 299 -1.6005769371986389e-02 - - 9.5413319766521454e-02 -6.5781168639659882e-02 - <_> - - 0 -1 300 8.5541699081659317e-03 - - 4.2579360306262970e-02 -5.4903411865234375e-01 - <_> - - 0 -1 301 -5.5742941185599193e-05 - - 1.5058469772338867e-01 -9.7832597792148590e-02 - <_> - - 0 -1 302 4.9888480134541169e-05 - - -1.5222179889678955e-01 1.4647099375724792e-01 - <_> - - 0 -1 303 9.3986131250858307e-03 - - -7.9301856458187103e-02 2.2228449583053589e-01 - <_> - - 0 -1 304 -4.4594589620828629e-02 - - 3.2170730829238892e-01 -7.1259953081607819e-02 - <_> - - 0 -1 305 2.7630710601806641e-01 - - -3.1289439648389816e-02 4.6367809176445007e-01 - <_> - - 0 -1 306 -4.5924279838800430e-02 - - 2.6855510473251343e-01 -9.4698183238506317e-02 - <_> - - 0 -1 307 3.2828450202941895e-02 - - 4.2008858174085617e-02 -1.9091799855232239e-01 - <_> - - 0 -1 308 5.8416211977601051e-03 - - 4.4382080435752869e-02 -5.0172328948974609e-01 - <_> - - 0 -1 309 2.5312770158052444e-02 - - 7.6768198050558567e-03 -4.5246911048889160e-01 - <_> - - 0 -1 310 -2.0680379122495651e-02 - - -7.0823311805725098e-01 2.7752710506320000e-02 - <_> - - 0 -1 311 1.9456259906291962e-03 - - -1.7256410419940948e-01 8.8524073362350464e-02 - <_> - - 0 -1 312 1.3182780146598816e-01 - - 3.7875670939683914e-02 -5.2365738153457642e-01 - <_> - - 0 -1 313 -4.8449821770191193e-03 - - -3.8318011164665222e-01 2.9552109539508820e-02 - <_> - - 0 -1 314 5.3295581601560116e-03 - - -1.1728160083293915e-01 1.7122170329093933e-01 - <_> - - 0 -1 315 -3.5328458994626999e-02 - - 3.7315499782562256e-01 -6.5027341246604919e-02 - <_> - 77 - -1.3936280012130737e+00 - - <_> - - 0 -1 316 1.3647849671542645e-02 - - -2.8023689985275269e-01 3.5753351449966431e-01 - <_> - - 0 -1 317 1.2307819910347462e-02 - - -1.4846450090408325e-01 2.7148860692977905e-01 - <_> - - 0 -1 318 4.6594038605690002e-01 - - -7.0500850677490234e-02 5.8680188655853271e-01 - <_> - - 0 -1 319 1.5693339519202709e-03 - - -1.1502370238304138e-01 1.3755360245704651e-01 - <_> - - 0 -1 320 2.5176738854497671e-03 - - -1.7788909375667572e-01 2.1724070608615875e-01 - <_> - - 0 -1 321 4.5299702323973179e-03 - - 4.5860350131988525e-02 -5.3767031431198120e-01 - <_> - - 0 -1 322 4.0295510552823544e-03 - - 5.9907138347625732e-02 -5.8030951023101807e-01 - <_> - - 0 -1 323 9.0281656011939049e-03 - - -8.8961161673069000e-02 3.4740069508552551e-01 - <_> - - 0 -1 324 -7.1099460124969482e-02 - - 4.0032050013542175e-01 -8.7675258517265320e-02 - <_> - - 0 -1 325 -9.0507879853248596e-02 - - 3.2023850083351135e-01 -1.1072800308465958e-01 - <_> - - 0 -1 326 3.9499148726463318e-01 - - -5.4482270032167435e-02 4.3765610456466675e-01 - <_> - - 0 -1 327 6.0021281242370605e-03 - - 4.1296858340501785e-02 -6.2775158882141113e-01 - <_> - - 0 -1 328 -1.2675330042839050e-02 - - 1.8643060326576233e-01 -1.5865950286388397e-01 - <_> - - 0 -1 329 5.2523188060149550e-04 - - -7.3780946433544159e-02 1.1318250000476837e-01 - <_> - - 0 -1 330 1.5198530256748199e-01 - - -6.9850206375122070e-02 5.5264592170715332e-01 - <_> - - 0 -1 331 -5.9174448251724243e-03 - - -4.2243769764900208e-01 2.3429270833730698e-02 - <_> - - 0 -1 332 5.1085697486996651e-04 - - -1.7821140587329865e-01 1.7475420236587524e-01 - <_> - - 0 -1 333 -2.8626650571823120e-02 - - -7.8067898750305176e-01 4.3033521622419357e-02 - <_> - - 0 -1 334 3.2388539984822273e-03 - - -1.1748749762773514e-01 2.3013429343700409e-01 - <_> - - 0 -1 335 -6.8310899659991264e-03 - - -5.1702737808227539e-01 2.2477060556411743e-02 - <_> - - 0 -1 336 -1.3818129897117615e-01 - - -6.7183071374893188e-01 3.3945839852094650e-02 - <_> - - 0 -1 337 1.2902930378913879e-02 - - 1.9041150808334351e-02 -4.7392490506172180e-01 - <_> - - 0 -1 338 6.3398052006959915e-03 - - 4.1281130164861679e-02 -5.8211308717727661e-01 - <_> - - 0 -1 339 8.4067512943875045e-05 - - -2.3016390204429626e-01 1.2408539652824402e-01 - <_> - - 0 -1 340 1.7238859087228775e-02 - - 5.3966581821441650e-02 -5.8185648918151855e-01 - <_> - - 0 -1 341 -7.8677326440811157e-02 - - -4.0611150860786438e-01 5.6923508644104004e-02 - <_> - - 0 -1 342 5.5859591811895370e-03 - - 3.6842439323663712e-02 -5.6468677520751953e-01 - <_> - - 0 -1 343 -6.1322399415075779e-04 - - 1.7850470542907715e-01 -6.6888310015201569e-02 - <_> - - 0 -1 344 7.9400849062949419e-04 - - -7.8397832810878754e-02 3.0545571446418762e-01 - <_> - - 0 -1 345 1.2827199883759022e-02 - - 4.0437459945678711e-02 -6.4795708656311035e-01 - <_> - - 0 -1 346 1.1977979913353920e-02 - - -9.9379159510135651e-02 2.2672760486602783e-01 - <_> - - 0 -1 347 -4.9378769472241402e-03 - - 2.7063280344009399e-01 -8.3922103047370911e-02 - <_> - - 0 -1 348 2.0337730646133423e-02 - - 4.0057111531496048e-02 -6.1709612607955933e-01 - <_> - - 0 -1 349 -1.5826310217380524e-01 - - 3.7180110812187195e-01 -7.7644877135753632e-02 - <_> - - 0 -1 350 4.5150578953325748e-03 - - -1.4245720207691193e-01 1.9468970596790314e-01 - <_> - - 0 -1 351 -1.7942169681191444e-02 - - -7.2584807872772217e-01 2.9234779998660088e-02 - <_> - - 0 -1 352 5.2153151482343674e-03 - - 4.6004150062799454e-02 -4.5367568731307983e-01 - <_> - - 0 -1 353 -7.7863838523626328e-03 - - 1.7464269697666168e-01 -1.0989809781312943e-01 - <_> - - 0 -1 354 9.4133447855710983e-03 - - 3.4647628664970398e-02 -5.9836661815643311e-01 - <_> - - 0 -1 355 7.6218741014599800e-03 - - -1.0570260137319565e-01 2.0373369753360748e-01 - <_> - - 0 -1 356 2.1601879969239235e-02 - - -9.0930342674255371e-02 2.8870388865470886e-01 - <_> - - 0 -1 357 -1.1823089793324471e-02 - - -6.3036149740219116e-01 2.4082619696855545e-02 - <_> - - 0 -1 358 -2.0232979208230972e-02 - - -7.4202787876129150e-01 2.3521220311522484e-02 - <_> - - 0 -1 359 6.4510147785767913e-04 - - -5.5255789309740067e-02 1.6501660645008087e-01 - <_> - - 0 -1 360 -8.1876022741198540e-03 - - -5.7709318399429321e-01 3.5234641283750534e-02 - <_> - - 0 -1 361 -4.5044958824291825e-04 - - 1.8597809970378876e-01 -8.2436777651309967e-02 - <_> - - 0 -1 362 -2.7309779077768326e-02 - - -7.2045487165451050e-01 2.7683850377798080e-02 - <_> - - 0 -1 363 7.3051019571721554e-03 - - -7.5815990567207336e-02 1.2281800061464310e-01 - <_> - - 0 -1 364 7.2118180105462670e-04 - - -8.4706626832485199e-02 2.2123050689697266e-01 - <_> - - 0 -1 365 -5.5794708896428347e-04 - - 9.2200443148612976e-02 -5.1267310976982117e-02 - <_> - - 0 -1 366 -1.2906070332974195e-03 - - 2.3648509383201599e-01 -8.5636742413043976e-02 - <_> - - 0 -1 367 -2.3440949618816376e-02 - - -3.4175920486450195e-01 3.0355690047144890e-02 - <_> - - 0 -1 368 6.7003733420278877e-05 - - -1.7783120274543762e-01 1.0983660072088242e-01 - <_> - - 0 -1 369 -2.0913260523229837e-03 - - -3.2965481281280518e-01 4.8821929842233658e-02 - <_> - - 0 -1 370 5.2883368916809559e-03 - - 4.7602079808712006e-02 -4.2296901345252991e-01 - <_> - - 0 -1 371 1.0467220097780228e-01 - - 1.4557709917426109e-02 -5.1639598608016968e-01 - <_> - - 0 -1 372 4.1093688458204269e-02 - - 2.5569459423422813e-02 -6.7345750331878662e-01 - <_> - - 0 -1 373 4.5452991127967834e-01 - - -4.7321271151304245e-02 4.6472591161727905e-01 - <_> - - 0 -1 374 -4.4200271368026733e-03 - - 2.1729059517383575e-01 -8.0523736774921417e-02 - <_> - - 0 -1 375 -3.3253689762204885e-03 - - 1.1963640153408051e-01 -8.4737166762351990e-02 - <_> - - 0 -1 376 1.5223690308630466e-02 - - -8.9243628084659576e-02 2.2841119766235352e-01 - <_> - - 0 -1 377 -3.1223909929394722e-02 - - 1.4642609655857086e-01 -1.0129989683628082e-01 - <_> - - 0 -1 378 -7.2967536747455597e-02 - - 1.9779099524021149e-01 -9.9804528057575226e-02 - <_> - - 0 -1 379 4.3468710035085678e-02 - - -7.3893286287784576e-02 1.5711790323257446e-01 - <_> - - 0 -1 380 7.7427257783710957e-03 - - -9.0792253613471985e-02 2.4496759474277496e-01 - <_> - - 0 -1 381 -8.3488449454307556e-02 - - 1.7328590154647827e-01 -1.2881289422512054e-01 - <_> - - 0 -1 382 4.2111508548259735e-02 - - -1.4753210544586182e-01 1.3734489679336548e-01 - <_> - - 0 -1 383 9.6673727035522461e-02 - - -5.5196139961481094e-02 3.5633039474487305e-01 - <_> - - 0 -1 384 -8.8993981480598450e-03 - - -5.2619308233261108e-01 3.8890600204467773e-02 - <_> - - 0 -1 385 -2.3850830271840096e-02 - - 1.9245590269565582e-01 -1.0501539707183838e-01 - <_> - - 0 -1 386 -7.4902130290865898e-04 - - 2.4767409265041351e-01 -7.3859728872776031e-02 - <_> - - 0 -1 387 -2.3048849776387215e-02 - - -5.2203482389450073e-01 2.9538379982113838e-02 - <_> - - 0 -1 388 5.7920900871977210e-04 - - -8.0705501139163971e-02 2.4939849972724915e-01 - <_> - - 0 -1 389 -2.5435430929064751e-02 - - -6.5204900503158569e-01 1.6328070312738419e-02 - <_> - - 0 -1 390 1.7639160156250000e-02 - - 2.4694919586181641e-02 -6.8505227565765381e-01 - <_> - - 0 -1 391 2.0535739138722420e-02 - - 1.6518220305442810e-02 -4.2852258682250977e-01 - <_> - - 0 -1 392 1.1113280430436134e-02 - - -8.7159179151058197e-02 2.0620019733905792e-01 - <_> - 73 - -1.3217060565948486e+00 - - <_> - - 0 -1 393 1.4061849564313889e-02 - - -2.7372831106185913e-01 4.0178298950195312e-01 - <_> - - 0 -1 394 -3.3424530178308487e-02 - - 3.4338641166687012e-01 -1.5240709483623505e-01 - <_> - - 0 -1 395 -3.3982729073613882e-03 - - 3.0461141467094421e-01 -2.1628560125827789e-01 - <_> - - 0 -1 396 6.7393951117992401e-02 - - -5.3956210613250732e-02 3.3049640059471130e-01 - <_> - - 0 -1 397 -5.1544748246669769e-02 - - 3.8040369749069214e-01 -1.3342610001564026e-01 - <_> - - 0 -1 398 3.6630779504776001e-03 - - -1.7602029442787170e-01 2.1399669349193573e-01 - <_> - - 0 -1 399 7.8836623579263687e-03 - - 5.7061620056629181e-02 -5.1507431268692017e-01 - <_> - - 0 -1 400 -8.9480048045516014e-03 - - 2.2309969365596771e-01 -1.1905369907617569e-01 - <_> - - 0 -1 401 -5.5760587565600872e-04 - - 9.9965967237949371e-02 -2.5582858920097351e-01 - <_> - - 0 -1 402 9.5389392226934433e-03 - - -6.5531507134437561e-02 3.2462659478187561e-01 - <_> - - 0 -1 403 7.7904132194817066e-03 - - 4.5026030391454697e-02 -6.0688591003417969e-01 - <_> - - 0 -1 404 4.0692770853638649e-03 - - -6.2474351376295090e-02 1.5706950426101685e-01 - <_> - - 0 -1 405 3.1110940035432577e-03 - - -7.4468009173870087e-02 2.6008018851280212e-01 - <_> - - 0 -1 406 1.5651449561119080e-02 - - 2.5566350668668747e-02 -5.1725232601165771e-01 - <_> - - 0 -1 407 2.0446130633354187e-01 - - -7.6343096792697906e-02 3.3239069581031799e-01 - <_> - - 0 -1 408 -1.0169159621000290e-02 - - 1.6066810488700867e-01 -1.0915979743003845e-01 - <_> - - 0 -1 409 1.8947809934616089e-01 - - 5.3859941661357880e-02 -5.3987598419189453e-01 - <_> - - 0 -1 410 -1.4792400598526001e-01 - - 2.3854659497737885e-01 -1.1328209936618805e-01 - <_> - - 0 -1 411 -1.4830310642719269e-01 - - 3.6465111374855042e-01 -7.5315676629543304e-02 - <_> - - 0 -1 412 -1.3255329430103302e-01 - - 2.9195559024810791e-01 -9.4944156706333160e-02 - <_> - - 0 -1 413 -1.6390170902013779e-02 - - 3.9205119013786316e-01 -6.8502128124237061e-02 - <_> - - 0 -1 414 -6.3240979798138142e-03 - - -6.6337722539901733e-01 3.3776801079511642e-02 - <_> - - 0 -1 415 1.4740950427949429e-02 - - 4.3142370879650116e-02 -5.0169318914413452e-01 - <_> - - 0 -1 416 1.7102040350437164e-02 - - -1.7399680614471436e-01 2.0360749959945679e-01 - <_> - - 0 -1 417 -7.5232060626149178e-03 - - 2.6142400503158569e-01 -8.9473031461238861e-02 - <_> - - 0 -1 418 8.0899456515908241e-03 - - 4.9131639301776886e-02 -3.8692459464073181e-01 - <_> - - 0 -1 419 -1.1191490106284618e-02 - - -7.1513938903808594e-01 2.9279340058565140e-02 - <_> - - 0 -1 420 -6.4855492382775992e-05 - - 1.1478959769010544e-01 -1.1958249658346176e-01 - <_> - - 0 -1 421 2.6316290721297264e-02 - - 2.6085929945111275e-02 -8.0710291862487793e-01 - <_> - - 0 -1 422 -1.3249419629573822e-02 - - -3.2114431262016296e-01 7.5486088171601295e-03 - <_> - - 0 -1 423 6.2180599197745323e-03 - - 5.5559240281581879e-02 -4.0652489662170410e-01 - <_> - - 0 -1 424 1.7249800264835358e-01 - - 4.0750358253717422e-02 -5.0563377141952515e-01 - <_> - - 0 -1 425 -2.1679839119315147e-02 - - -6.2354528903961182e-01 2.6478029787540436e-02 - <_> - - 0 -1 426 1.6703149303793907e-02 - - -1.3794849812984467e-01 1.3749359548091888e-01 - <_> - - 0 -1 427 -9.0457811951637268e-02 - - 2.3645150661468506e-01 -8.2285732030868530e-02 - <_> - - 0 -1 428 -3.1922020018100739e-02 - - 2.5785401463508606e-01 -4.7243330627679825e-02 - <_> - - 0 -1 429 -1.0785860009491444e-02 - - 1.9156840443611145e-01 -1.0926260054111481e-01 - <_> - - 0 -1 430 1.5356860123574734e-02 - - -9.1598026454448700e-02 1.4929470419883728e-01 - <_> - - 0 -1 431 -2.9838619753718376e-02 - - 3.6931860446929932e-01 -6.9861568510532379e-02 - <_> - - 0 -1 432 1.5088700456544757e-03 - - -6.8405367434024811e-02 1.1674939841032028e-01 - <_> - - 0 -1 433 -3.9159361273050308e-02 - - -5.1392030715942383e-01 3.7696298211812973e-02 - <_> - - 0 -1 434 9.6957627683877945e-03 - - 1.7815299332141876e-02 -4.6859109401702881e-01 - <_> - - 0 -1 435 7.2683161124587059e-04 - - -1.3107830286026001e-01 1.5749000012874603e-01 - <_> - - 0 -1 436 3.9894571527838707e-03 - - 4.5223500579595566e-02 -4.2377158999443054e-01 - <_> - - 0 -1 437 -5.1600970327854156e-03 - - -5.1509988307952881e-01 3.4805640578269958e-02 - <_> - - 0 -1 438 -2.3738930001854897e-02 - - 2.2136999666690826e-01 -8.4229230880737305e-02 - <_> - - 0 -1 439 1.4563770033419132e-02 - - -8.9808702468872070e-02 2.1864689886569977e-01 - <_> - - 0 -1 440 7.2849658317863941e-04 - - -7.0903539657592773e-02 1.2049960345029831e-01 - <_> - - 0 -1 441 -3.1149860471487045e-02 - - -6.0673481225967407e-01 2.9479870572686195e-02 - <_> - - 0 -1 442 1.6768559813499451e-02 - - 2.3652590811252594e-02 -4.1640669107437134e-01 - <_> - - 0 -1 443 -8.9033348485827446e-03 - - -5.5360221862792969e-01 3.0212569981813431e-02 - <_> - - 0 -1 444 5.3961132653057575e-04 - - -5.8847390115261078e-02 1.5313039720058441e-01 - <_> - - 0 -1 445 -8.3886012434959412e-03 - - -7.0527809858322144e-01 2.5097940117120743e-02 - <_> - - 0 -1 446 -3.4085000515915453e-04 - - 1.7718690633773804e-01 -1.0484679788351059e-01 - <_> - - 0 -1 447 6.1828009784221649e-03 - - 3.3038828521966934e-02 -4.9485749006271362e-01 - <_> - - 0 -1 448 8.2702568033710122e-04 - - -1.8448309600353241e-01 7.7788598835468292e-02 - <_> - - 0 -1 449 -6.0980831040069461e-04 - - 1.9595789909362793e-01 -8.3752043545246124e-02 - <_> - - 0 -1 450 1.2273030006326735e-04 - - -8.1470809876918793e-02 1.2093000113964081e-01 - <_> - - 0 -1 451 4.6565610682591796e-04 - - -9.5331951975822449e-02 2.2882999479770660e-01 - <_> - - 0 -1 452 -2.1647799760103226e-02 - - -6.9338059425354004e-01 1.7061540856957436e-02 - <_> - - 0 -1 453 5.9500660747289658e-02 - - 5.2603170275688171e-02 -2.7821978926658630e-01 - <_> - - 0 -1 454 2.5365199893712997e-02 - - 8.9954538270831108e-03 -6.3834899663925171e-01 - <_> - - 0 -1 455 -3.9667091332376003e-03 - - -3.1752720475196838e-01 4.7011289745569229e-02 - <_> - - 0 -1 456 8.2784779369831085e-03 - - -5.4444059729576111e-02 2.2199389338493347e-01 - <_> - - 0 -1 457 -2.2125450894236565e-02 - - -6.7381507158279419e-01 2.2545639425516129e-02 - <_> - - 0 -1 458 -1.8015919253230095e-02 - - 1.9720579683780670e-01 -4.1927978396415710e-02 - <_> - - 0 -1 459 8.4426235407590866e-03 - - -6.0547191649675369e-02 2.6492148637771606e-01 - <_> - - 0 -1 460 -3.2566841691732407e-02 - - -7.1072858572006226e-01 1.1840609833598137e-02 - <_> - - 0 -1 461 -4.7655492089688778e-03 - - 1.3843970000743866e-01 -1.1505319923162460e-01 - <_> - - 0 -1 462 5.6936290115118027e-02 - - -6.1339709907770157e-02 2.6656940579414368e-01 - <_> - - 0 -1 463 1.3741460442543030e-01 - - -1.1396790295839310e-01 1.7893630266189575e-01 - <_> - - 0 -1 464 3.4123009536415339e-03 - - -6.6894076764583588e-02 2.5956168770790100e-01 - <_> - - 0 -1 465 1.1629019863903522e-02 - - -1.3462069630622864e-01 1.5184959769248962e-01 - <_> - 102 - -1.4393190145492554e+00 - - <_> - - 0 -1 466 -3.0265800654888153e-02 - - 3.8096681237220764e-01 -1.3377699255943298e-01 - <_> - - 0 -1 467 -1.8889939785003662e-01 - - 3.4722200036048889e-01 -1.1434909701347351e-01 - <_> - - 0 -1 468 4.4756601564586163e-03 - - -1.7790019512176514e-01 1.9837200641632080e-01 - <_> - - 0 -1 469 -9.2559102922677994e-03 - - 2.5532960891723633e-01 -9.5685683190822601e-02 - <_> - - 0 -1 470 1.0375189594924450e-02 - - -1.2901009619235992e-01 2.0472739636898041e-01 - <_> - - 0 -1 471 2.5273600220680237e-01 - - -7.7913478016853333e-02 3.4137108922004700e-01 - <_> - - 0 -1 472 7.9952310770750046e-03 - - 1.1916679888963699e-01 -4.1383698582649231e-01 - <_> - - 0 -1 473 6.6510503529570997e-05 - - -2.3053060472011566e-01 1.3289320468902588e-01 - <_> - - 0 -1 474 1.0429739952087402e-02 - - -6.2206111848354340e-02 2.9351210594177246e-01 - <_> - - 0 -1 475 -9.4513092190027237e-03 - - 1.6715039312839508e-01 -1.1613100022077560e-01 - <_> - - 0 -1 476 -1.3863059878349304e-01 - - -4.5146858692169189e-01 7.2572976350784302e-02 - <_> - - 0 -1 477 -1.5423299744725227e-02 - - -4.2771181464195251e-01 2.4840919300913811e-02 - <_> - - 0 -1 478 -6.5782992169260979e-03 - - -6.5407878160476685e-01 4.0261831134557724e-02 - <_> - - 0 -1 479 -6.8917557655368000e-05 - - 2.0682600140571594e-01 -1.1952479928731918e-01 - <_> - - 0 -1 480 7.1416288847103715e-05 - - -1.6258999705314636e-01 1.5189890563488007e-01 - <_> - - 0 -1 481 1.3548660278320312e-01 - - -5.0455428659915924e-02 4.7124901413917542e-01 - <_> - - 0 -1 482 1.1286230292171240e-03 - - -1.9349409639835358e-01 1.4920289814472198e-01 - <_> - - 0 -1 483 3.7687130272388458e-02 - - -6.5130472648888826e-04 -5.5662167072296143e-01 - <_> - - 0 -1 484 -1.7772499471902847e-02 - - -5.7330471277236938e-01 4.6251270920038223e-02 - <_> - - 0 -1 485 -1.4152459800243378e-02 - - -7.9059988260269165e-01 1.5357020311057568e-02 - <_> - - 0 -1 486 -1.9447410479187965e-02 - - 2.1232390403747559e-01 -1.0219439864158630e-01 - <_> - - 0 -1 487 1.2915019877254963e-02 - - -7.8864462673664093e-02 1.4578649401664734e-01 - <_> - - 0 -1 488 7.7283121645450592e-03 - - -1.3381069898605347e-01 2.0553180575370789e-01 - <_> - - 0 -1 489 -2.6421029120683670e-02 - - 2.7290409803390503e-01 -8.4103830158710480e-02 - <_> - - 0 -1 490 -2.1642580628395081e-02 - - 2.1656160056591034e-01 -9.9797606468200684e-02 - <_> - - 0 -1 491 -1.8604170531034470e-02 - - 3.1678178906440735e-01 -6.8464621901512146e-02 - <_> - - 0 -1 492 7.9184472560882568e-03 - - 3.8932591676712036e-02 -5.8496218919754028e-01 - <_> - - 0 -1 493 -9.0868779807351530e-05 - - 1.1835379898548126e-01 -2.6939970254898071e-01 - <_> - - 0 -1 494 -6.3271610997617245e-05 - - 1.4836210012435913e-01 -1.4140149950981140e-01 - <_> - - 0 -1 495 3.0123859178274870e-03 - - 4.7559700906276703e-02 -3.1680768728256226e-01 - <_> - - 0 -1 496 2.0202860236167908e-02 - - 3.6336939781904221e-02 -4.9587869644165039e-01 - <_> - - 0 -1 497 6.8112947046756744e-02 - - -6.3601806759834290e-02 3.7456488609313965e-01 - <_> - - 0 -1 498 -6.1344921588897705e-02 - - 3.7039840221405029e-01 -6.2690317630767822e-02 - <_> - - 0 -1 499 -2.3922309279441833e-02 - - -3.4753319621086121e-01 5.6829240173101425e-02 - <_> - - 0 -1 500 4.4279401190578938e-03 - - 3.1897440552711487e-02 -5.0859087705612183e-01 - <_> - - 0 -1 501 -9.2366456985473633e-02 - - -4.8896598815917969e-01 9.9938698112964630e-03 - <_> - - 0 -1 502 -3.1878310255706310e-03 - - 8.5749432444572449e-02 -2.3823440074920654e-01 - <_> - - 0 -1 503 6.2605291604995728e-03 - - 2.4412810802459717e-02 -5.5001372098922729e-01 - <_> - - 0 -1 504 2.1717049181461334e-02 - - -8.4798701107501984e-02 2.1824799478054047e-01 - <_> - - 0 -1 505 1.0295960120856762e-02 - - -1.0329149663448334e-01 1.9458709657192230e-01 - <_> - - 0 -1 506 1.2149630114436150e-02 - - 3.2223898917436600e-02 -5.9328657388687134e-01 - <_> - - 0 -1 507 1.9116830080747604e-02 - - 3.0940750613808632e-02 -4.5388719439506531e-01 - <_> - - 0 -1 508 7.1067700628191233e-04 - - -1.5458069741725922e-01 1.2622979283332825e-01 - <_> - - 0 -1 509 -2.9427420347929001e-02 - - 2.0704819262027740e-01 -8.6181886494159698e-02 - <_> - - 0 -1 510 -3.7067469675093889e-03 - - -5.1559269428253174e-01 3.8358908146619797e-02 - <_> - - 0 -1 511 6.0146670875838026e-05 - - -1.0236179828643799e-01 8.8405437767505646e-02 - <_> - - 0 -1 512 -6.8713612563442439e-05 - - 1.9844369590282440e-01 -9.9444359540939331e-02 - <_> - - 0 -1 513 -8.4833398461341858e-02 - - -3.9009338617324829e-01 3.9758160710334778e-02 - <_> - - 0 -1 514 1.1545339599251747e-02 - - 2.9910489916801453e-02 -5.0215488672256470e-01 - <_> - - 0 -1 515 1.2721769744530320e-03 - - 3.5788349807262421e-02 -3.8562840223312378e-01 - <_> - - 0 -1 516 3.7894061207771301e-01 - - 4.2915120720863342e-02 -3.7268239259719849e-01 - <_> - - 0 -1 517 5.8728668838739395e-02 - - 1.7506660893559456e-02 -7.1293348073959351e-01 - <_> - - 0 -1 518 -7.2667418862693012e-05 - - 8.5237413644790649e-02 -1.7960679531097412e-01 - <_> - - 0 -1 519 -2.5661939289420843e-03 - - -4.9419000744819641e-01 2.1106749773025513e-02 - <_> - - 0 -1 520 -6.2544771935790777e-05 - - 1.2607279419898987e-01 -1.3581070303916931e-01 - <_> - - 0 -1 521 -3.3382088877260685e-03 - - -3.4254759550094604e-01 3.1329080462455750e-02 - <_> - - 0 -1 522 4.0032588876783848e-03 - - 3.5334181040525436e-02 -4.7854140400886536e-01 - <_> - - 0 -1 523 7.8725446655880660e-05 - - -8.6509391665458679e-02 1.0980690270662308e-01 - <_> - - 0 -1 524 3.5411381395533681e-04 - - -8.6622327566146851e-02 1.8158109486103058e-01 - <_> - - 0 -1 525 -1.0032930225133896e-01 - - -4.1181001067161560e-01 4.0799010545015335e-02 - <_> - - 0 -1 526 4.5734178274869919e-02 - - 2.5063000619411469e-02 -5.8010631799697876e-01 - <_> - - 0 -1 527 1.4357109554111958e-02 - - 2.7373999357223511e-02 -3.1119069457054138e-01 - <_> - - 0 -1 528 4.2823958210647106e-03 - - -1.2122060358524323e-01 1.3006800413131714e-01 - <_> - - 0 -1 529 -1.9169269129633904e-02 - - 3.5471150279045105e-01 -5.8697901666164398e-02 - <_> - - 0 -1 530 2.0371939986944199e-02 - - 2.7047039940953255e-02 -6.2161028385162354e-01 - <_> - - 0 -1 531 -1.1981659568846226e-02 - - 1.7628869414329529e-01 -9.4315692782402039e-02 - <_> - - 0 -1 532 -9.4278322649188340e-05 - - 1.5070499479770660e-01 -1.0712909698486328e-01 - <_> - - 0 -1 533 1.0182280093431473e-02 - - 1.6143349930644035e-02 -3.5039150714874268e-01 - <_> - - 0 -1 534 -5.2059080451726913e-02 - - -3.1214600801467896e-01 4.7784190624952316e-02 - <_> - - 0 -1 535 -2.4943469092249870e-02 - - -7.9333961009979248e-01 -4.0430951048620045e-04 - <_> - - 0 -1 536 -6.2259827973321080e-04 - - 2.0438310503959656e-01 -7.1274451911449432e-02 - <_> - - 0 -1 537 -5.6859298638300970e-05 - - 8.6150057613849640e-02 -6.5871208906173706e-02 - <_> - - 0 -1 538 4.0834350511431694e-04 - - -1.0517060011625290e-01 2.2246970236301422e-01 - <_> - - 0 -1 539 -1.1075460352003574e-03 - - 4.6430539339780807e-02 -3.1908679753541946e-02 - <_> - - 0 -1 540 -1.2366239912807941e-02 - - -6.2071430683135986e-01 2.6164690032601357e-02 - <_> - - 0 -1 541 -3.5476218909025192e-02 - - 1.2305829674005508e-01 -5.1929820328950882e-02 - <_> - - 0 -1 542 -2.3794448934495449e-03 - - -3.7954199314117432e-01 4.1748851537704468e-02 - <_> - - 0 -1 543 1.3966970145702362e-03 - - -8.5148677229881287e-02 1.5120379626750946e-01 - <_> - - 0 -1 544 5.1437891088426113e-03 - - -8.1664428114891052e-02 1.7895880341529846e-01 - <_> - - 0 -1 545 -1.2399390339851379e-01 - - -6.6589808464050293e-01 9.5204189419746399e-03 - <_> - - 0 -1 546 3.9390850812196732e-02 - - 1.8253650516271591e-02 -7.6372909545898438e-01 - <_> - - 0 -1 547 2.9372270219027996e-03 - - 2.2626129910349846e-02 -3.2338750362396240e-01 - <_> - - 0 -1 548 1.8166509270668030e-01 - - -6.1867389827966690e-02 2.2989329695701599e-01 - <_> - - 0 -1 549 8.9275211095809937e-02 - - -8.4801591932773590e-02 2.1090969443321228e-01 - <_> - - 0 -1 550 1.7920130863785744e-02 - - -6.6390097141265869e-02 2.2434620559215546e-01 - <_> - - 0 -1 551 5.5024111643433571e-03 - - -5.5913619697093964e-02 1.0791579633951187e-01 - <_> - - 0 -1 552 -1.2631840072572231e-02 - - 3.3521848917007446e-01 -4.7069478780031204e-02 - <_> - - 0 -1 553 8.2040186971426010e-03 - - 5.2167478948831558e-02 -5.8306807279586792e-01 - <_> - - 0 -1 554 2.1543860435485840e-02 - - 1.0371980257332325e-02 -8.1690818071365356e-01 - <_> - - 0 -1 555 -4.2779878713190556e-03 - - -3.4370610117912292e-01 3.4835658967494965e-02 - <_> - - 0 -1 556 9.5721762627363205e-03 - - 1.6037449240684509e-02 -7.5921469926834106e-01 - <_> - - 0 -1 557 5.9499992057681084e-03 - - -8.3513863384723663e-02 9.3756176531314850e-02 - <_> - - 0 -1 558 -8.6880378425121307e-02 - - 1.9779199361801147e-01 -7.3568522930145264e-02 - <_> - - 0 -1 559 5.7690730318427086e-03 - - -6.1134330928325653e-02 8.2671441137790680e-02 - <_> - - 0 -1 560 1.4806459844112396e-01 - - 3.9653290063142776e-02 -4.0852621197700500e-01 - <_> - - 0 -1 561 -1.8668269738554955e-02 - - -6.6713011264801025e-01 1.5644509345293045e-02 - <_> - - 0 -1 562 1.0142670013010502e-02 - - 2.1148789674043655e-02 -5.6108218431472778e-01 - <_> - - 0 -1 563 -2.6263110339641571e-03 - - 8.8142313063144684e-02 -5.8600831776857376e-02 - <_> - - 0 -1 564 3.0406240839511156e-03 - - -6.9973178207874298e-02 1.9421130418777466e-01 - <_> - - 0 -1 565 -4.0523111820220947e-03 - - -3.9898431301116943e-01 2.8451900929212570e-02 - <_> - - 0 -1 566 3.3293411252088845e-04 - - -9.2018708586692810e-02 1.5213729441165924e-01 - <_> - - 0 -1 567 -1.4471479516942054e-04 - - 1.3288819789886475e-01 -8.6978733539581299e-02 - <_> - 115 - -1.3500690460205078e+00 - - <_> - - 0 -1 568 -3.0528889968991280e-02 - - 3.3611279726028442e-01 -1.6058790683746338e-01 - <_> - - 0 -1 569 -6.8238358944654465e-03 - - 2.5108391046524048e-01 -2.5783839821815491e-01 - <_> - - 0 -1 570 -2.6070050895214081e-02 - - 3.1767010688781738e-01 -1.1115620285272598e-01 - <_> - - 0 -1 571 1.6021650517359376e-03 - - -1.0961770266294479e-01 1.5613310039043427e-01 - <_> - - 0 -1 572 -3.4617539495229721e-02 - - 2.6143959164619446e-01 -9.5556437969207764e-02 - <_> - - 0 -1 573 8.2549892365932465e-02 - - -3.5977210849523544e-02 3.1897369027137756e-01 - <_> - - 0 -1 574 -1.0799080133438110e-01 - - -4.6619871258735657e-01 9.6537977457046509e-02 - <_> - - 0 -1 575 -7.1096293628215790e-02 - - -3.2909411191940308e-01 2.0170759409666061e-02 - <_> - - 0 -1 576 6.1022722721099854e-01 - - -4.1085191071033478e-02 5.9197807312011719e-01 - <_> - - 0 -1 577 -9.6180485561490059e-03 - - 1.8453270196914673e-01 -1.2569570541381836e-01 - <_> - - 0 -1 578 -2.1656749770045280e-02 - - 3.5588631033897400e-01 -6.5419547259807587e-02 - <_> - - 0 -1 579 3.2288730144500732e-03 - - -1.5971140563488007e-01 1.4421769976615906e-01 - <_> - - 0 -1 580 3.6023850552737713e-03 - - -1.3012659549713135e-01 1.8485300242900848e-01 - <_> - - 0 -1 581 1.2242549657821655e-01 - - -5.0962008535861969e-02 4.7872740030288696e-01 - <_> - - 0 -1 582 -3.9816841483116150e-02 - - 1.9110150635242462e-01 -1.4904150366783142e-01 - <_> - - 0 -1 583 1.6565460711717606e-02 - - 2.5038570165634155e-02 -2.6608109474182129e-01 - <_> - - 0 -1 584 6.7314971238374710e-03 - - 3.6166220903396606e-02 -5.7512372732162476e-01 - <_> - - 0 -1 585 -2.3882629349827766e-02 - - 1.8172420561313629e-01 -1.0134089738130569e-01 - <_> - - 0 -1 586 1.6876630485057831e-02 - - 4.9995709210634232e-02 -4.9644881486892700e-01 - <_> - - 0 -1 587 8.1463292241096497e-02 - - 5.0819691270589828e-02 -3.0929270386695862e-01 - <_> - - 0 -1 588 1.5678660571575165e-01 - - -8.4641791880130768e-02 2.0975899696350098e-01 - <_> - - 0 -1 589 1.0736989788711071e-02 - - -5.8876618742942810e-02 2.6735648512840271e-01 - <_> - - 0 -1 590 -1.6250779852271080e-02 - - 2.1858249604701996e-01 -1.2752789258956909e-01 - <_> - - 0 -1 591 -5.1399830728769302e-02 - - 1.7071659862995148e-01 -5.6497618556022644e-02 - <_> - - 0 -1 592 1.8661050125956535e-03 - - 4.0338598191738129e-02 -4.7404500842094421e-01 - <_> - - 0 -1 593 -4.9435410648584366e-02 - - 1.5376000106334686e-01 -4.1785929352045059e-02 - <_> - - 0 -1 594 6.9667182862758636e-02 - - -5.8853909373283386e-02 3.0999648571014404e-01 - <_> - - 0 -1 595 -7.8118540346622467e-02 - - -4.1095170378684998e-01 5.2306879311800003e-02 - <_> - - 0 -1 596 -8.6161941289901733e-03 - - -5.6689429283142090e-01 2.8680460527539253e-02 - <_> - - 0 -1 597 6.8916371092200279e-03 - - -9.5778420567512512e-02 1.6806310415267944e-01 - <_> - - 0 -1 598 8.4734419942833483e-05 - - -1.4760659635066986e-01 1.2780749797821045e-01 - <_> - - 0 -1 599 -6.5460228361189365e-03 - - -5.3539127111434937e-01 2.1142380312085152e-02 - <_> - - 0 -1 600 -1.1936970055103302e-02 - - 2.4896189570426941e-01 -6.5905913710594177e-02 - <_> - - 0 -1 601 1.6013499349355698e-02 - - -7.5163930654525757e-02 9.2000097036361694e-02 - <_> - - 0 -1 602 -1.7978820204734802e-01 - - 3.1222209334373474e-01 -5.4680030792951584e-02 - <_> - - 0 -1 603 4.2936030030250549e-01 - - -4.6744249761104584e-02 4.6717110276222229e-01 - <_> - - 0 -1 604 1.7629809677600861e-01 - - -1.1967620253562927e-01 2.3036129772663116e-01 - <_> - - 0 -1 605 4.3498061597347260e-02 - - 2.1376779302954674e-02 -3.4026959538459778e-01 - <_> - - 0 -1 606 1.6895519569516182e-02 - - -1.3055689632892609e-01 1.8340429663658142e-01 - <_> - - 0 -1 607 1.8535379320383072e-02 - - -7.5424313545227051e-02 2.3549360036849976e-01 - <_> - - 0 -1 608 1.7329430207610130e-02 - - -8.5383981466293335e-02 2.0364040136337280e-01 - <_> - - 0 -1 609 8.6630741134285927e-03 - - 3.8591001182794571e-02 -6.2014609575271606e-01 - <_> - - 0 -1 610 5.7052681222558022e-03 - - 3.1247280538082123e-02 -4.0705290436744690e-01 - <_> - - 0 -1 611 -1.8030379433184862e-03 - - 1.9578510522842407e-01 -1.4333669841289520e-01 - <_> - - 0 -1 612 -1.8787920475006104e-02 - - -8.6914187669754028e-01 1.6981970518827438e-02 - <_> - - 0 -1 613 1.8600920215249062e-02 - - -8.1815309822559357e-02 1.8913879990577698e-01 - <_> - - 0 -1 614 8.4120598330628127e-05 - - -1.2899120151996613e-01 1.2110509723424911e-01 - <_> - - 0 -1 615 -5.6057129986584187e-03 - - -4.6983009576797485e-01 1.5989070758223534e-02 - <_> - - 0 -1 616 3.5192570649087429e-03 - - 3.6193020641803741e-02 -4.4841128587722778e-01 - <_> - - 0 -1 617 1.7741440096870065e-03 - - -4.3303471058607101e-02 1.3955749571323395e-01 - <_> - - 0 -1 618 -1.6350420191884041e-03 - - 1.3950680196285248e-01 -1.1241529881954193e-01 - <_> - - 0 -1 619 6.4794770441949368e-03 - - -6.0051560401916504e-02 7.2894193232059479e-02 - <_> - - 0 -1 620 -2.0324749872088432e-02 - - 4.2978158593177795e-01 -3.9684608578681946e-02 - <_> - - 0 -1 621 -6.3453041948378086e-03 - - -2.5338429212570190e-01 2.4293940514326096e-02 - <_> - - 0 -1 622 9.0959975495934486e-03 - - 3.4088779240846634e-02 -4.5187300443649292e-01 - <_> - - 0 -1 623 1.6163580119609833e-02 - - 6.8225921131670475e-03 -7.2057378292083740e-01 - <_> - - 0 -1 624 -1.1229310184717178e-02 - - -6.1919862031936646e-01 2.2291479632258415e-02 - <_> - - 0 -1 625 -1.7633280158042908e-01 - - -6.8191158771514893e-01 8.8407555595040321e-03 - <_> - - 0 -1 626 1.9296240061521530e-02 - - -7.9629048705101013e-02 2.0130670070648193e-01 - <_> - - 0 -1 627 1.0565440170466900e-02 - - -8.3298452198505402e-02 1.8727609515190125e-01 - <_> - - 0 -1 628 -6.7616738379001617e-03 - - 2.0695839822292328e-01 -8.1318996846675873e-02 - <_> - - 0 -1 629 -2.3086878936737776e-03 - - -2.7981218695640564e-01 2.9389770701527596e-02 - <_> - - 0 -1 630 -6.9189318455755711e-03 - - -5.0955861806869507e-01 2.9100190848112106e-02 - <_> - - 0 -1 631 -1.9592609256505966e-02 - - 1.2486959993839264e-01 -6.6669858992099762e-02 - <_> - - 0 -1 632 -5.6698801927268505e-04 - - 1.7725250124931335e-01 -7.5555630028247833e-02 - <_> - - 0 -1 633 6.5187108702957630e-04 - - -4.6831708401441574e-02 1.3773879408836365e-01 - <_> - - 0 -1 634 -4.3244438711553812e-04 - - 1.7505480349063873e-01 -8.2217328250408173e-02 - <_> - - 0 -1 635 3.2091289758682251e-03 - - 2.5890430435538292e-02 -3.5460329055786133e-01 - <_> - - 0 -1 636 -2.8899360448122025e-02 - - -7.3152142763137817e-01 1.8054809421300888e-02 - <_> - - 0 -1 637 9.8803699074778706e-05 - - -3.8318630307912827e-02 3.4345138818025589e-02 - <_> - - 0 -1 638 -2.2848090156912804e-03 - - -3.6034908890724182e-01 3.8051728159189224e-02 - <_> - - 0 -1 639 2.2300830483436584e-01 - - -3.5387709736824036e-02 4.1186928749084473e-01 - <_> - - 0 -1 640 3.8663020823150873e-03 - - -1.1479409784078598e-01 1.1966259777545929e-01 - <_> - - 0 -1 641 3.6781090311706066e-03 - - -8.8786207139492035e-02 2.0931220054626465e-01 - <_> - - 0 -1 642 3.6886930465698242e-03 - - 4.2065251618623734e-02 -3.3116719126701355e-01 - <_> - - 0 -1 643 -5.0008428096771240e-01 - - 4.5823198556900024e-01 -3.0016450211405754e-02 - <_> - - 0 -1 644 3.2457590568810701e-03 - - -5.8139480650424957e-02 2.2444559633731842e-01 - <_> - - 0 -1 645 -7.2515371721237898e-04 - - 8.5745699703693390e-02 -2.1644710004329681e-01 - <_> - - 0 -1 646 7.5624123215675354e-02 - - -7.2869867086410522e-02 1.8093410134315491e-01 - <_> - - 0 -1 647 -1.4011479914188385e-01 - - -3.0494970083236694e-01 3.2226338982582092e-02 - <_> - - 0 -1 648 1.2914249673485756e-03 - - -1.6519309580326080e-01 7.9698972404003143e-02 - <_> - - 0 -1 649 4.8063062131404877e-03 - - -5.1163140684366226e-02 1.5284930169582367e-01 - <_> - - 0 -1 650 1.9700510427355766e-02 - - -2.1467920392751694e-02 5.8986312150955200e-01 - <_> - - 0 -1 651 -2.8246549889445305e-02 - - -3.6110070347785950e-01 2.1594600751996040e-02 - <_> - - 0 -1 652 3.1838800758123398e-02 - - 2.1388119086623192e-02 -5.5919158458709717e-01 - <_> - - 0 -1 653 5.2926959469914436e-03 - - 1.7141470685601234e-02 -3.2453680038452148e-01 - <_> - - 0 -1 654 9.3176206573843956e-03 - - -6.9147951900959015e-02 1.8778069317340851e-01 - <_> - - 0 -1 655 1.9812679965980351e-04 - - -7.1025170385837555e-02 1.1662720143795013e-01 - <_> - - 0 -1 656 1.7203340306878090e-02 - - -8.3476826548576355e-02 1.4484919607639313e-01 - <_> - - 0 -1 657 8.0548562109470367e-03 - - 2.1444449201226234e-02 -2.7631008625030518e-01 - <_> - - 0 -1 658 6.7419088445603848e-03 - - 3.4134138375520706e-02 -3.5553708672523499e-01 - <_> - - 0 -1 659 5.7136920077027753e-05 - - -6.9932900369167328e-02 8.2227133214473724e-02 - <_> - - 0 -1 660 -6.0014430346200243e-05 - - 1.5333159267902374e-01 -8.0194279551506042e-02 - <_> - - 0 -1 661 -6.6377622715663165e-05 - - 7.4058532714843750e-02 -4.3576911091804504e-02 - <_> - - 0 -1 662 7.0605492510367185e-05 - - -1.1924110352993011e-01 1.1573670059442520e-01 - <_> - - 0 -1 663 7.2301438194699585e-05 - - -7.0231847465038300e-02 7.9363830387592316e-02 - <_> - - 0 -1 664 -1.4867830323055387e-03 - - 1.2457609921693802e-01 -1.0762879997491837e-01 - <_> - - 0 -1 665 -5.2434820681810379e-03 - - 1.1167749762535095e-01 -6.1491239815950394e-02 - <_> - - 0 -1 666 7.8055239282548428e-03 - - -4.9680050462484360e-02 3.0463930964469910e-01 - <_> - - 0 -1 667 1.6715789213776588e-02 - - 2.4268470704555511e-02 -5.6414997577667236e-01 - <_> - - 0 -1 668 -1.9779430702328682e-02 - - 1.2931020557880402e-01 -1.0140080004930496e-01 - <_> - - 0 -1 669 -6.7752218456007540e-05 - - 7.7363066375255585e-02 -8.7603732943534851e-02 - <_> - - 0 -1 670 -1.2943330220878124e-02 - - -8.6929148435592651e-01 1.5804219990968704e-02 - <_> - - 0 -1 671 -1.2546810321509838e-02 - - -1.3507589697837830e-01 4.5630618929862976e-02 - <_> - - 0 -1 672 7.9727862030267715e-03 - - 4.0577929466962814e-02 -3.4091338515281677e-01 - <_> - - 0 -1 673 -6.3152899965643883e-03 - - 1.3729919493198395e-01 -5.6167159229516983e-02 - <_> - - 0 -1 674 -3.6897659301757812e-03 - - 1.6393260657787323e-01 -9.1416403651237488e-02 - <_> - - 0 -1 675 5.0578881055116653e-03 - - -8.0079726874828339e-02 1.4337129890918732e-01 - <_> - - 0 -1 676 -2.9933569952845573e-02 - - -5.3267621994018555e-01 2.2731220349669456e-02 - <_> - - 0 -1 677 7.0810988545417786e-03 - - -7.3218218982219696e-02 1.0275089740753174e-01 - <_> - - 0 -1 678 5.0813790410757065e-02 - - 5.1686890423297882e-02 -2.5446221232414246e-01 - <_> - - 0 -1 679 4.7044758684933186e-03 - - -5.7290758937597275e-02 7.6064832508563995e-02 - <_> - - 0 -1 680 4.6408819034695625e-03 - - 5.5998690426349640e-02 -2.1722699701786041e-01 - <_> - - 0 -1 681 -9.5121748745441437e-03 - - 1.8128600716590881e-01 -3.7724230438470840e-02 - <_> - - 0 -1 682 2.5726249441504478e-03 - - -1.2384580075740814e-01 1.4219340682029724e-01 - <_> - 128 - -1.3960490226745605e+00 - - <_> - - 0 -1 683 1.8433019518852234e-02 - - -1.6187410056591034e-01 3.3512639999389648e-01 - <_> - - 0 -1 684 4.8202150501310825e-03 - - -9.7200833261013031e-02 2.7556920051574707e-01 - <_> - - 0 -1 685 2.1450810134410858e-02 - - -1.0136549919843674e-01 3.9221191406250000e-01 - <_> - - 0 -1 686 2.0199500024318695e-02 - - -1.0415519773960114e-01 3.4857091307640076e-01 - <_> - - 0 -1 687 1.5460439957678318e-02 - - -1.8147130310535431e-01 2.2965760529041290e-01 - <_> - - 0 -1 688 1.2114670127630234e-02 - - -9.5579452812671661e-02 3.3212649822235107e-01 - <_> - - 0 -1 689 1.6616169363260269e-02 - - -7.5106747448444366e-02 3.4756600856781006e-01 - <_> - - 0 -1 690 -1.5129039995372295e-02 - - 1.3962389528751373e-01 -1.1505120247602463e-01 - <_> - - 0 -1 691 -7.0729628205299377e-02 - - 2.6836109161376953e-01 -1.0165339708328247e-01 - <_> - - 0 -1 692 2.2831759415566921e-03 - - 4.4351879507303238e-02 -4.6322458982467651e-01 - <_> - - 0 -1 693 5.5853649973869324e-03 - - 9.1951683163642883e-02 -3.1472569704055786e-01 - <_> - - 0 -1 694 -4.0678508579730988e-02 - - 1.4710660278797150e-01 -7.2650589048862457e-02 - <_> - - 0 -1 695 -1.3589780032634735e-01 - - -5.0535297393798828e-01 4.6995479613542557e-02 - <_> - - 0 -1 696 -3.8497470319271088e-02 - - -3.7170431017875671e-01 5.5208358913660049e-02 - <_> - - 0 -1 697 2.7928350027650595e-03 - - -1.1620769649744034e-01 1.9377970695495605e-01 - <_> - - 0 -1 698 5.3412551060318947e-03 - - 1.2964010238647461e-02 -4.9244490265846252e-01 - <_> - - 0 -1 699 -2.6604509912431240e-03 - - -4.5641270279884338e-01 4.3775539845228195e-02 - <_> - - 0 -1 700 3.2098871469497681e-01 - - 4.8456329852342606e-02 -3.9300969243049622e-01 - <_> - - 0 -1 701 -7.2495201602578163e-03 - - -4.1889420151710510e-01 4.1088439524173737e-02 - <_> - - 0 -1 702 2.3353239521384239e-02 - - 3.0208099633455276e-02 -3.7579280138015747e-01 - <_> - - 0 -1 703 -2.2498020902276039e-02 - - -4.5240750908851624e-01 3.8922939449548721e-02 - <_> - - 0 -1 704 -2.3866670206189156e-02 - - -5.2881467342376709e-01 1.3815529644489288e-02 - <_> - - 0 -1 705 -3.3641930669546127e-02 - - 4.4367140531539917e-01 -4.0341619402170181e-02 - <_> - - 0 -1 706 2.2140879184007645e-02 - - -4.9545429646968842e-02 2.0518389344215393e-01 - <_> - - 0 -1 707 1.0603429749608040e-02 - - 3.1996849924325943e-02 -5.1487600803375244e-01 - <_> - - 0 -1 708 9.6357148140668869e-03 - - -1.2373799830675125e-01 1.5278430283069611e-01 - <_> - - 0 -1 709 2.9718749225139618e-02 - - -5.6785408407449722e-02 2.9045888781547546e-01 - <_> - - 0 -1 710 2.0548420434352010e-04 - - -2.7184659242630005e-01 1.0707840323448181e-01 - <_> - - 0 -1 711 -4.8672650009393692e-02 - - 4.2357748746871948e-01 -4.5685999095439911e-02 - <_> - - 0 -1 712 2.5377809070050716e-03 - - -7.2734832763671875e-02 2.1036009490489960e-01 - <_> - - 0 -1 713 -3.3941529691219330e-03 - - -3.8152369856834412e-01 4.4548328965902328e-02 - <_> - - 0 -1 714 -2.3745149374008179e-02 - - -4.4136199355125427e-01 2.4941470474004745e-02 - <_> - - 0 -1 715 -2.0092299208045006e-02 - - 1.6946069896221161e-01 -9.5334596931934357e-02 - <_> - - 0 -1 716 1.1026510037481785e-02 - - -7.2176292538642883e-02 2.4846449494361877e-01 - <_> - - 0 -1 717 -1.5806879848241806e-02 - - 2.2417180240154266e-01 -7.2446040809154510e-02 - <_> - - 0 -1 718 4.9007359892129898e-02 - - -5.5121738463640213e-02 2.5839251279830933e-01 - <_> - - 0 -1 719 2.8871610760688782e-02 - - -1.1530119925737381e-01 1.9248460233211517e-01 - <_> - - 0 -1 720 7.3990179225802422e-03 - - 5.2299588918685913e-02 -2.1918569505214691e-01 - <_> - - 0 -1 721 -6.1737848445773125e-03 - - 2.0380969345569611e-01 -6.9669328629970551e-02 - <_> - - 0 -1 722 9.4332564622163773e-03 - - -5.3407169878482819e-02 2.5862839818000793e-01 - <_> - - 0 -1 723 1.4321080408990383e-02 - - 3.3642519265413284e-02 -4.6795940399169922e-01 - <_> - - 0 -1 724 2.2487280890345573e-02 - - -4.3100748211145401e-02 1.1230559647083282e-01 - <_> - - 0 -1 725 -8.8018830865621567e-03 - - -5.9977447986602783e-01 2.3850029334425926e-02 - <_> - - 0 -1 726 -9.2824921011924744e-03 - - -3.7928500771522522e-01 2.4739539250731468e-02 - <_> - - 0 -1 727 -3.8288799260044470e-05 - - 1.0945019870996475e-01 -1.2705920636653900e-01 - <_> - - 0 -1 728 -1.0607670247554779e-01 - - 1.2239170074462891e-01 -1.7970660701394081e-02 - <_> - - 0 -1 729 1.4501119963824749e-02 - - 2.5438580662012100e-02 -5.4995167255401611e-01 - <_> - - 0 -1 730 -2.9425490647554398e-02 - - -4.4079890847206116e-01 1.6329530626535416e-02 - <_> - - 0 -1 731 -2.1412479877471924e-01 - - -5.8171492815017700e-01 2.2408049553632736e-02 - <_> - - 0 -1 732 -1.5937929973006248e-02 - - 4.4771928340196609e-02 -4.7021768987178802e-02 - <_> - - 0 -1 733 3.5832289606332779e-02 - - 2.5715630501508713e-02 -5.4305112361907959e-01 - <_> - - 0 -1 734 -1.1497899889945984e-02 - - -4.1323921084403992e-01 2.4659259244799614e-02 - <_> - - 0 -1 735 7.6680490747094154e-03 - - -5.9614498168230057e-02 2.4197499454021454e-01 - <_> - - 0 -1 736 1.2335750274360180e-02 - - 3.7500880658626556e-02 -4.7769561409950256e-01 - <_> - - 0 -1 737 1.3047469779849052e-02 - - -6.0925539582967758e-02 2.4198959767818451e-01 - <_> - - 0 -1 738 5.2074559789616615e-05 - - -9.8182268440723419e-02 8.9188173413276672e-02 - <_> - - 0 -1 739 3.2866070978343487e-03 - - -9.4105660915374756e-02 1.4411650598049164e-01 - <_> - - 0 -1 740 -4.1732661426067352e-02 - - -6.4058172702789307e-01 2.2133890539407730e-02 - <_> - - 0 -1 741 9.7638191655278206e-03 - - 4.1278161108493805e-02 -3.3542799949645996e-01 - <_> - - 0 -1 742 1.0774569958448410e-01 - - 8.1762494519352913e-03 -4.3478840589523315e-01 - <_> - - 0 -1 743 1.1196990311145782e-01 - - 1.9971510395407677e-02 -6.5035951137542725e-01 - <_> - - 0 -1 744 6.8043068051338196e-02 - - -6.0273509472608566e-02 1.3844910264015198e-01 - <_> - - 0 -1 745 1.2061929702758789e-01 - - -6.6626183688640594e-02 2.1289399266242981e-01 - <_> - - 0 -1 746 -2.7089789509773254e-03 - - -4.2147681117057800e-01 7.0062931627035141e-03 - <_> - - 0 -1 747 -9.8798991530202329e-05 - - 1.2873309850692749e-01 -1.1781200021505356e-01 - <_> - - 0 -1 748 1.7797689884901047e-02 - - -3.9807539433240891e-02 2.5822418928146362e-01 - <_> - - 0 -1 749 -1.5526750124990940e-02 - - -5.3756171464920044e-01 2.5428580120205879e-02 - <_> - - 0 -1 750 -1.1374800233170390e-03 - - 1.4971290528774261e-01 -3.1790051609277725e-02 - <_> - - 0 -1 751 2.1987389773130417e-02 - - 3.0267579481005669e-02 -4.1569280624389648e-01 - <_> - - 0 -1 752 5.9880971093662083e-05 - - -6.4167313277721405e-02 7.9953707754611969e-02 - <_> - - 0 -1 753 7.6966080814599991e-03 - - -7.2746522724628448e-02 1.7084559798240662e-01 - <_> - - 0 -1 754 6.2799488659948111e-04 - - 3.4155208617448807e-02 -1.3791529834270477e-01 - <_> - - 0 -1 755 -1.2622140347957611e-03 - - 1.6152350604534149e-01 -7.5557827949523926e-02 - <_> - - 0 -1 756 -1.1005929671227932e-02 - - -4.8230040073394775e-01 2.6834029704332352e-02 - <_> - - 0 -1 757 -9.5793791115283966e-03 - - 1.9468879699707031e-01 -6.6964037716388702e-02 - <_> - - 0 -1 758 -9.1821959358640015e-05 - - 7.9375706613063812e-02 -6.7449547350406647e-02 - <_> - - 0 -1 759 1.2134959688410163e-03 - - -5.1114071160554886e-02 2.7757808566093445e-01 - <_> - - 0 -1 760 7.9206802183762193e-04 - - -2.8480930253863335e-02 1.1306119710206985e-01 - <_> - - 0 -1 761 2.7196949813514948e-03 - - 3.6205168813467026e-02 -3.8228958845138550e-01 - <_> - - 0 -1 762 -7.0203691720962524e-03 - - -7.0844250917434692e-01 9.6215400844812393e-05 - <_> - - 0 -1 763 -7.4910762486979365e-04 - - 1.8996599316596985e-01 -7.0758841931819916e-02 - <_> - - 0 -1 764 -3.0010089278221130e-02 - - 1.4095950126647949e-01 -8.3362892270088196e-02 - <_> - - 0 -1 765 2.1152449771761894e-02 - - 2.5880130007863045e-02 -4.6976161003112793e-01 - <_> - - 0 -1 766 -3.1970590353012085e-02 - - -5.1240712404251099e-01 1.2115829624235630e-02 - <_> - - 0 -1 767 1.0507719591259956e-02 - - 3.8660790771245956e-02 -3.0986440181732178e-01 - <_> - - 0 -1 768 4.8152811359614134e-05 - - -6.1655979603528976e-02 6.7806392908096313e-02 - <_> - - 0 -1 769 9.6495117759332061e-04 - - -6.1358559876680374e-02 1.9916859269142151e-01 - <_> - - 0 -1 770 -4.0412139147520065e-02 - - 1.3414110243320465e-01 -7.1774438023567200e-02 - <_> - - 0 -1 771 5.8856019750237465e-03 - - 3.5979349166154861e-02 -3.3323070406913757e-01 - <_> - - 0 -1 772 5.3272489458322525e-03 - - 3.2898910343647003e-02 -5.1538711786270142e-01 - <_> - - 0 -1 773 5.3272798657417297e-02 - - -7.8457422554492950e-02 1.5826569497585297e-01 - <_> - - 0 -1 774 1.7442900687456131e-02 - - 1.3395839929580688e-01 -1.1861749738454819e-01 - <_> - - 0 -1 775 -4.3359059840440750e-02 - - -2.2697900235652924e-01 4.6703130006790161e-02 - <_> - - 0 -1 776 -2.3120639845728874e-02 - - 1.6340319812297821e-01 -6.8516552448272705e-02 - <_> - - 0 -1 777 -9.3796178698539734e-03 - - 1.5827399492263794e-01 -7.7110826969146729e-02 - <_> - - 0 -1 778 -1.4122249558568001e-02 - - -5.6915611028671265e-01 2.3201670497655869e-02 - <_> - - 0 -1 779 -1.5595779754221439e-02 - - -7.1999537944793701e-01 1.1182960122823715e-02 - <_> - - 0 -1 780 7.4529898120090365e-04 - - -7.6692558825016022e-02 5.8296941220760345e-02 - <_> - - 0 -1 781 -5.1220599561929703e-03 - - -4.1475170850753784e-01 2.5212420150637627e-02 - <_> - - 0 -1 782 -5.7267909141955897e-05 - - 9.0584710240364075e-02 -6.6890686750411987e-02 - <_> - - 0 -1 783 8.8431767653673887e-04 - - -5.7051338255405426e-02 2.4205550551414490e-01 - <_> - - 0 -1 784 -6.3992529176175594e-03 - - -4.7669911384582520e-01 1.7223160713911057e-02 - <_> - - 0 -1 785 3.4215620253235102e-03 - - 3.3065941184759140e-02 -3.5055148601531982e-01 - <_> - - 0 -1 786 6.0761801432818174e-04 - - -6.3330791890621185e-02 1.8019370734691620e-01 - <_> - - 0 -1 787 -2.7124559506773949e-02 - - 1.3474200665950775e-01 -8.4303401410579681e-02 - <_> - - 0 -1 788 3.2038338482379913e-02 - - -6.7669242620468140e-02 1.7966659367084503e-01 - <_> - - 0 -1 789 7.2583961300551891e-03 - - -9.8616771399974823e-02 1.1662179976701736e-01 - <_> - - 0 -1 790 -3.7803640589118004e-03 - - 1.2330210208892822e-01 -4.7761891037225723e-02 - <_> - - 0 -1 791 3.9241630584001541e-02 - - 1.6770560294389725e-02 -7.3297500610351562e-01 - <_> - - 0 -1 792 -5.3865249356022105e-05 - - 8.5012666881084442e-02 -7.5102739036083221e-02 - <_> - - 0 -1 793 8.2592968828976154e-04 - - -5.5150531232357025e-02 2.0594260096549988e-01 - <_> - - 0 -1 794 -5.6403529015369713e-05 - - 7.6255522668361664e-02 -6.9994620978832245e-02 - <_> - - 0 -1 795 -5.6928332196548581e-04 - - -2.4831940233707428e-01 4.6885799616575241e-02 - <_> - - 0 -1 796 4.2482689023017883e-02 - - -3.4421678632497787e-02 1.4847649633884430e-01 - <_> - - 0 -1 797 -3.3953409641981125e-02 - - 2.8434708714485168e-01 -4.3108358979225159e-02 - <_> - - 0 -1 798 1.8899820744991302e-02 - - 1.4299860224127769e-02 -4.1920700669288635e-01 - <_> - - 0 -1 799 1.9765710458159447e-03 - - 6.2193240970373154e-02 -1.7860250174999237e-01 - <_> - - 0 -1 800 -5.0894439482362941e-05 - - 9.4885483384132385e-02 -6.8978622555732727e-02 - <_> - - 0 -1 801 1.1491550132632256e-02 - - 3.3188611268997192e-02 -3.6289590597152710e-01 - <_> - - 0 -1 802 -2.1510679274797440e-02 - - 2.7597379684448242e-01 -3.1749140471220016e-02 - <_> - - 0 -1 803 1.3055199757218361e-02 - - -8.3081558346748352e-02 1.4498490095138550e-01 - <_> - - 0 -1 804 6.6747581586241722e-03 - - -4.6190250664949417e-02 1.3833600282669067e-01 - <_> - - 0 -1 805 -7.0616300217807293e-03 - - 1.9687490165233612e-01 -8.3798579871654510e-02 - <_> - - 0 -1 806 6.1481661396101117e-04 - - 5.4201129823923111e-02 -1.9812339544296265e-01 - <_> - - 0 -1 807 2.8601831197738647e-01 - - 2.3295460268855095e-02 -4.1733700037002563e-01 - <_> - - 0 -1 808 4.6371720731258392e-02 - - -2.9012339189648628e-02 1.8080130219459534e-01 - <_> - - 0 -1 809 -5.5724751204252243e-02 - - 1.3581469655036926e-01 -1.0612230002880096e-01 - <_> - - 0 -1 810 -2.5843968987464905e-01 - - -4.9107319116592407e-01 1.5150199644267559e-02 - <_> - 113 - -1.3937480449676514e+00 - - <_> - - 0 -1 811 -4.1740439832210541e-02 - - 4.2029929161071777e-01 -1.3865880668163300e-01 - <_> - - 0 -1 812 2.7438610792160034e-02 - - -6.9185562431812286e-02 6.3781380653381348e-01 - <_> - - 0 -1 813 -3.1923361122608185e-02 - - 5.5629998445510864e-01 -5.8802250772714615e-02 - <_> - - 0 -1 814 -4.2633909732103348e-02 - - 3.9570361375808716e-01 -9.2322356998920441e-02 - <_> - - 0 -1 815 -4.5332979410886765e-02 - - 4.8316720128059387e-01 -9.9028460681438446e-02 - <_> - - 0 -1 816 1.4149550115689635e-03 - - -3.8321029394865036e-02 3.7827879190444946e-01 - <_> - - 0 -1 817 3.1844570767134428e-03 - - 8.4587417542934418e-02 -3.6293488740921021e-01 - <_> - - 0 -1 818 7.9865548759698868e-03 - - 6.6024526953697205e-02 -4.9909490346908569e-01 - <_> - - 0 -1 819 8.3637079223990440e-03 - - -1.5688340365886688e-01 1.7327819764614105e-01 - <_> - - 0 -1 820 1.6616169363260269e-02 - - -1.0921569913625717e-01 3.2081720232963562e-01 - <_> - - 0 -1 821 -1.0837230086326599e-01 - - -3.1443148851394653e-01 9.6088737249374390e-02 - <_> - - 0 -1 822 -5.5264160037040710e-02 - - -3.2385888695716858e-01 7.6004527509212494e-02 - <_> - - 0 -1 823 1.2632569670677185e-01 - - 6.5257273614406586e-02 -4.0118929743766785e-01 - <_> - - 0 -1 824 3.8804560899734497e-01 - - 2.9047280550003052e-02 -2.8504198789596558e-01 - <_> - - 0 -1 825 2.1647498942911625e-03 - - 5.6638881564140320e-02 -4.4831070303916931e-01 - <_> - - 0 -1 826 -8.5035830736160278e-02 - - 2.3742489516735077e-01 -1.1276420205831528e-01 - <_> - - 0 -1 827 2.9713720083236694e-02 - - -4.0369931608438492e-02 4.7471740841865540e-01 - <_> - - 0 -1 828 1.8948830664157867e-02 - - -7.9447157680988312e-02 2.7210989594459534e-01 - <_> - - 0 -1 829 -5.4433820769190788e-03 - - -4.0186598896980286e-01 5.7357691228389740e-02 - <_> - - 0 -1 830 -7.4416291899979115e-03 - - -4.6421709656715393e-01 3.4328330308198929e-02 - <_> - - 0 -1 831 3.1745829619467258e-03 - - -7.1994602680206299e-02 2.8998330235481262e-01 - <_> - - 0 -1 832 -4.6435040421783924e-03 - - -4.2195430397987366e-01 3.9487071335315704e-02 - <_> - - 0 -1 833 -2.2597080096602440e-02 - - 2.7456980943679810e-01 -7.7242776751518250e-02 - <_> - - 0 -1 834 1.7568180337548256e-02 - - 6.0469850897789001e-02 -2.7558389306068420e-01 - <_> - - 0 -1 835 2.2853609919548035e-01 - - 3.7277411669492722e-02 -5.3754311800003052e-01 - <_> - - 0 -1 836 3.2330639660358429e-02 - - 4.5896150171756744e-02 -3.8448250293731689e-01 - <_> - - 0 -1 837 -2.8539650142192841e-02 - - 5.8917909860610962e-01 -3.4072808921337128e-02 - <_> - - 0 -1 838 2.8611959889531136e-02 - - 2.4174140766263008e-02 -2.3255120217800140e-01 - <_> - - 0 -1 839 1.9021460786461830e-02 - - 5.6291140615940094e-02 -3.4046700596809387e-01 - <_> - - 0 -1 840 -5.7942080311477184e-03 - - 2.3920939862728119e-01 -6.3862636685371399e-02 - <_> - - 0 -1 841 1.9857540726661682e-02 - - 5.1371630281209946e-02 -3.4053778648376465e-01 - <_> - - 0 -1 842 -2.2779459133744240e-02 - - 2.9225811362266541e-01 -6.0494560748338699e-02 - <_> - - 0 -1 843 1.4801420271396637e-01 - - -3.4383419901132584e-02 4.6671169996261597e-01 - <_> - - 0 -1 844 -3.3703971654176712e-02 - - -3.7704831361770630e-01 2.6303650811314583e-02 - <_> - - 0 -1 845 -1.6228390857577324e-02 - - -3.3824568986892700e-01 5.7086139917373657e-02 - <_> - - 0 -1 846 -4.2941919527947903e-03 - - -3.2951489090919495e-01 4.3417800217866898e-02 - <_> - - 0 -1 847 -2.3574110120534897e-02 - - -3.9452001452445984e-01 3.9823610335588455e-02 - <_> - - 0 -1 848 2.1848749369382858e-02 - - 2.6808669790625572e-02 -2.5965699553489685e-01 - <_> - - 0 -1 849 -2.0930990576744080e-02 - - -3.6419558525085449e-01 4.3782789260149002e-02 - <_> - - 0 -1 850 1.6019339673221111e-03 - - -2.4020690470933914e-02 2.1828800439834595e-01 - <_> - - 0 -1 851 -5.4896557331085205e-01 - - -5.6733721494674683e-01 2.8684079647064209e-02 - <_> - - 0 -1 852 1.5187090262770653e-02 - - -8.1696130335330963e-02 2.1070739626884460e-01 - <_> - - 0 -1 853 -3.0653451103717089e-03 - - -3.7013870477676392e-01 4.7142639756202698e-02 - <_> - - 0 -1 854 -2.2847671061754227e-03 - - 1.8132969737052917e-01 -4.1904181241989136e-02 - <_> - - 0 -1 855 1.3886080123484135e-03 - - -4.7716971486806870e-02 3.1205159425735474e-01 - <_> - - 0 -1 856 -4.2354268953204155e-03 - - -3.1207269430160522e-01 3.6572430282831192e-02 - <_> - - 0 -1 857 4.9234707839787006e-03 - - -1.1051789671182632e-01 1.3647459447383881e-01 - <_> - - 0 -1 858 -9.7824353724718094e-04 - - 1.0191129893064499e-01 -3.9698559790849686e-02 - <_> - - 0 -1 859 2.3952899500727654e-03 - - 3.4585561603307724e-02 -4.6207970380783081e-01 - <_> - - 0 -1 860 -2.7391599360271357e-05 - - 4.7003678977489471e-02 -5.7648900896310806e-02 - <_> - - 0 -1 861 -3.7895010318607092e-03 - - -3.9044469594955444e-01 3.9270818233489990e-02 - <_> - - 0 -1 862 2.5150740519165993e-02 - - -3.1348060816526413e-02 4.7427290678024292e-01 - <_> - - 0 -1 863 -5.4564148187637329e-02 - - 1.4945609867572784e-01 -9.8201327025890350e-02 - <_> - - 0 -1 864 -4.1662190109491348e-02 - - -4.2450940608978271e-01 1.5298790298402309e-02 - <_> - - 0 -1 865 -2.0739400759339333e-02 - - -3.2189819216728210e-01 4.7922980040311813e-02 - <_> - - 0 -1 866 -9.7902817651629448e-04 - - 2.3306930065155029e-01 -5.9799421578645706e-02 - <_> - - 0 -1 867 -4.1547799482941628e-03 - - -3.0402511358261108e-01 4.5693140476942062e-02 - <_> - - 0 -1 868 -2.6045470804092474e-05 - - 5.5388018488883972e-02 -5.4097719490528107e-02 - <_> - - 0 -1 869 1.0567409917712212e-03 - - -5.2676759660243988e-02 2.4732929468154907e-01 - <_> - - 0 -1 870 1.8429230153560638e-01 - - 1.6558110713958740e-02 -5.7896447181701660e-01 - <_> - - 0 -1 871 1.4177090488374233e-03 - - -5.2407130599021912e-02 2.5247898697853088e-01 - <_> - - 0 -1 872 -4.0882350876927376e-03 - - -3.0666339397430420e-01 2.6950219646096230e-02 - <_> - - 0 -1 873 8.5421912372112274e-03 - - -4.8116620630025864e-02 2.7163261175155640e-01 - <_> - - 0 -1 874 1.9569039344787598e-02 - - 2.5119980797171593e-02 -3.3716028928756714e-01 - <_> - - 0 -1 875 2.6773509383201599e-01 - - 2.3119339719414711e-02 -5.0757241249084473e-01 - <_> - - 0 -1 876 -3.2680608332157135e-02 - - 2.7736881375312805e-01 -4.8139289021492004e-02 - <_> - - 0 -1 877 -5.0574508495628834e-03 - - -3.6395868659019470e-01 3.6307089030742645e-02 - <_> - - 0 -1 878 7.9170227050781250e-02 - - -2.9553070664405823e-02 1.6328190267086029e-01 - <_> - - 0 -1 879 2.2955629974603653e-03 - - -6.4419128000736237e-02 1.9216349720954895e-01 - <_> - - 0 -1 880 2.1744619880337268e-04 - - -1.2481279671192169e-01 5.1342830061912537e-02 - <_> - - 0 -1 881 -5.9793200343847275e-03 - - -5.4004061222076416e-01 2.3657269775867462e-02 - <_> - - 0 -1 882 -2.1830040216445923e-01 - - -3.0027130246162415e-01 1.8829640001058578e-02 - <_> - - 0 -1 883 -2.5782659649848938e-03 - - -2.9368001222610474e-01 4.3735310435295105e-02 - <_> - - 0 -1 884 -1.3443179428577423e-01 - - -2.9820311069488525e-01 2.1951649338006973e-02 - <_> - - 0 -1 885 3.3298340439796448e-01 - - 4.1799660772085190e-02 -3.4646728634834290e-01 - <_> - - 0 -1 886 -2.7604660019278526e-02 - - -3.1696259975433350e-01 1.5039809979498386e-02 - <_> - - 0 -1 887 2.8459940105676651e-02 - - 3.1132759526371956e-02 -4.1158550977706909e-01 - <_> - - 0 -1 888 5.6875180453062057e-02 - - 3.1998890917748213e-03 -8.4963297843933105e-01 - <_> - - 0 -1 889 -2.6414059102535248e-02 - - -4.0303400158882141e-01 2.8532799333333969e-02 - <_> - - 0 -1 890 8.2670920528471470e-04 - - -4.7888670116662979e-02 2.0834739506244659e-01 - <_> - - 0 -1 891 -1.7481200397014618e-02 - - -4.7842741012573242e-01 2.6197340339422226e-02 - <_> - - 0 -1 892 1.0209370404481888e-02 - - -3.2349199056625366e-02 3.3332398533821106e-01 - <_> - - 0 -1 893 -9.0442842338234186e-04 - - 2.2529889643192291e-01 -5.0218481570482254e-02 - <_> - - 0 -1 894 -5.5155509471660480e-05 - - 8.5416309535503387e-02 -9.2255666851997375e-02 - <_> - - 0 -1 895 -7.5864349491894245e-03 - - -2.7453339099884033e-01 4.2833179235458374e-02 - <_> - - 0 -1 896 6.8936333060264587e-02 - - -3.6221239715814590e-02 2.2021399438381195e-01 - <_> - - 0 -1 897 1.0017789900302887e-03 - - -4.6468019485473633e-02 2.6032060384750366e-01 - <_> - - 0 -1 898 -1.5333900228142738e-03 - - 2.8312671184539795e-01 -3.2194979488849640e-02 - <_> - - 0 -1 899 5.0275481771677732e-04 - - 5.4722610861063004e-02 -2.3836499452590942e-01 - <_> - - 0 -1 900 6.7827408201992512e-05 - - -3.9139021188020706e-02 5.0138108432292938e-02 - <_> - - 0 -1 901 -9.6863682847470045e-04 - - 2.1087090671062469e-01 -6.0840670019388199e-02 - <_> - - 0 -1 902 1.5726730227470398e-02 - - 1.1550820432603359e-02 -8.9771991968154907e-01 - <_> - - 0 -1 903 -6.1983527848497033e-04 - - -2.8654229640960693e-01 3.8063231855630875e-02 - <_> - - 0 -1 904 -1.4889890328049660e-02 - - 2.1888859570026398e-01 -5.3425349295139313e-02 - <_> - - 0 -1 905 9.1423774138092995e-03 - - 2.8971910476684570e-02 -4.3313831090927124e-01 - <_> - - 0 -1 906 4.4567110307980329e-05 - - -4.9350600689649582e-02 8.2990236580371857e-02 - <_> - - 0 -1 907 -4.6295441279653460e-05 - - 1.1451739817857742e-01 -1.1541579663753510e-01 - <_> - - 0 -1 908 -9.5154307782649994e-02 - - -3.6218079924583435e-01 3.8963958621025085e-02 - <_> - - 0 -1 909 1.1447920463979244e-02 - - -6.3377149403095245e-02 1.7998909950256348e-01 - <_> - - 0 -1 910 1.6846949234604836e-02 - - -7.9555906355381012e-02 2.0804320275783539e-01 - <_> - - 0 -1 911 -1.9532829523086548e-02 - - 3.3066600561141968e-01 -3.6887980997562408e-02 - <_> - - 0 -1 912 -9.9951513111591339e-03 - - -2.6018738746643066e-01 2.0032050088047981e-02 - <_> - - 0 -1 913 5.5966150015592575e-02 - - 2.9873110353946686e-02 -3.7979680299758911e-01 - <_> - - 0 -1 914 2.2398930042982101e-02 - - 9.4442693516612053e-03 -3.0707120895385742e-01 - <_> - - 0 -1 915 -1.1130659841001034e-02 - - -4.5474618673324585e-01 2.3782089352607727e-02 - <_> - - 0 -1 916 1.0391449555754662e-02 - - -8.0150999128818512e-02 1.0174000263214111e-01 - <_> - - 0 -1 917 -9.7076389938592911e-03 - - 3.2200449705123901e-01 -4.7525040805339813e-02 - <_> - - 0 -1 918 1.9170529412804171e-05 - - -6.1904601752758026e-02 7.5871497392654419e-02 - <_> - - 0 -1 919 -5.7660471647977829e-03 - - -2.8932619094848633e-01 3.5711359232664108e-02 - <_> - - 0 -1 920 -8.0189562868326902e-04 - - 1.4876769483089447e-01 -3.3799510449171066e-02 - <_> - - 0 -1 921 -4.5168989896774292e-01 - - -5.8006447553634644e-01 1.8294280394911766e-02 - <_> - - 0 -1 922 7.1167000569403172e-03 - - 2.2195219993591309e-02 -4.3420061469078064e-01 - <_> - - 0 -1 923 2.1432479843497276e-02 - - -4.2519841343164444e-02 2.7117589116096497e-01 - <_> - 172 - -1.3605639934539795e+00 - - <_> - - 0 -1 924 8.8465185835957527e-03 - - -2.0597270131111145e-01 2.1589750051498413e-01 - <_> - - 0 -1 925 -1.1486900039017200e-02 - - 1.4502839744091034e-01 -2.5122788548469543e-01 - <_> - - 0 -1 926 6.1377901583909988e-02 - - -1.2108889967203140e-01 2.8931090235710144e-01 - <_> - - 0 -1 927 -5.1466740667819977e-02 - - 7.7043011784553528e-02 -1.4475989341735840e-01 - <_> - - 0 -1 928 9.9043287336826324e-02 - - 8.7946407496929169e-02 -3.6684900522232056e-01 - <_> - - 0 -1 929 6.0240789316594601e-03 - - 5.5971618741750717e-02 -4.2305350303649902e-01 - <_> - - 0 -1 930 9.3228947371244431e-03 - - -1.4887219667434692e-01 1.4235040545463562e-01 - <_> - - 0 -1 931 -8.3782836794853210e-02 - - -5.0623029470443726e-02 6.7185766994953156e-02 - <_> - - 0 -1 932 -1.4369570417329669e-03 - - 1.6699740290641785e-01 -1.1847949773073196e-01 - <_> - - 0 -1 933 -8.4923747926950455e-03 - - -5.7465082406997681e-01 4.6952918171882629e-02 - <_> - - 0 -1 934 6.1581619083881378e-03 - - 3.8783859461545944e-02 -4.1793778538703918e-01 - <_> - - 0 -1 935 3.8826680183410645e-01 - - -3.4158889204263687e-02 3.8834908604621887e-01 - <_> - - 0 -1 936 -6.2880381010472775e-03 - - 1.8779429793357849e-01 -1.0967569798231125e-01 - <_> - - 0 -1 937 -8.8647350668907166e-02 - - 2.9610741138458252e-01 -4.9650270491838455e-02 - <_> - - 0 -1 938 5.7384949177503586e-02 - - -6.2142979353666306e-02 4.0399539470672607e-01 - <_> - - 0 -1 939 6.3049891032278538e-03 - - 3.0240859836339951e-02 -2.5532779097557068e-01 - <_> - - 0 -1 940 -1.2817610055208206e-02 - - -7.4915027618408203e-01 1.8835680559277534e-02 - <_> - - 0 -1 941 6.5159690566360950e-03 - - -7.4971511960029602e-02 1.9758880138397217e-01 - <_> - - 0 -1 942 8.2992920652031898e-03 - - 3.2989550381898880e-02 -4.3466570973396301e-01 - <_> - - 0 -1 943 6.3911718316376209e-03 - - 2.9757190495729446e-02 -3.0728459358215332e-01 - <_> - - 0 -1 944 6.8949637352488935e-05 - - -1.7294059693813324e-01 9.2702791094779968e-02 - <_> - - 0 -1 945 4.1354808956384659e-02 - - -2.7904760092496872e-02 1.6296459734439850e-01 - <_> - - 0 -1 946 1.8999379873275757e-01 - - -3.1295470893383026e-02 4.8351749777793884e-01 - <_> - - 0 -1 947 -1.2732900679111481e-01 - - -4.3095651268959045e-01 4.1448518633842468e-02 - <_> - - 0 -1 948 -3.5605970770120621e-02 - - -2.0096629858016968e-01 7.7555581927299500e-02 - <_> - - 0 -1 949 -7.2760661132633686e-03 - - 1.1694429814815521e-01 -5.6488901376724243e-02 - <_> - - 0 -1 950 -1.6728280112147331e-02 - - -5.5824387073516846e-01 2.4678710848093033e-02 - <_> - - 0 -1 951 3.5163350403308868e-03 - - -1.3123939931392670e-01 6.3867613673210144e-02 - <_> - - 0 -1 952 -3.7709469906985760e-03 - - -3.3209028840065002e-01 4.1377659887075424e-02 - <_> - - 0 -1 953 -1.3886960223317146e-02 - - -3.1274241209030151e-01 4.2570248246192932e-02 - <_> - - 0 -1 954 9.3537326902151108e-03 - - -6.6785670816898346e-02 1.9074550271034241e-01 - <_> - - 0 -1 955 -1.9434669986367226e-02 - - 3.1526941061019897e-01 -4.7358151525259018e-02 - <_> - - 0 -1 956 6.2511018477380276e-03 - - 3.0958879739046097e-02 -3.8309469819068909e-01 - <_> - - 0 -1 957 -2.5296900421380997e-02 - - -2.9622459411621094e-01 1.5191599726676941e-02 - <_> - - 0 -1 958 -3.0754129402339458e-03 - - 7.2913318872451782e-02 -1.7640450596809387e-01 - <_> - - 0 -1 959 7.8001008369028568e-03 - - -5.0157550722360611e-02 1.1628890037536621e-01 - <_> - - 0 -1 960 -7.7680540271103382e-03 - - 2.4157559871673584e-01 -7.7894441783428192e-02 - <_> - - 0 -1 961 -8.8092312216758728e-02 - - 2.5150829553604126e-01 -4.8299308866262436e-02 - <_> - - 0 -1 962 -1.7023129621520638e-03 - - 1.7975769937038422e-01 -9.7071669995784760e-02 - <_> - - 0 -1 963 -9.9703423678874969e-02 - - -4.7000929713249207e-01 1.5582949854433537e-02 - <_> - - 0 -1 964 4.6657170169055462e-03 - - 2.9513580724596977e-02 -4.0181469917297363e-01 - <_> - - 0 -1 965 -1.7661379650235176e-02 - - -5.4495137929916382e-01 1.6858519986271858e-02 - <_> - - 0 -1 966 -2.2309330105781555e-01 - - 1.8432730436325073e-01 -6.3223339617252350e-02 - <_> - - 0 -1 967 5.2850779145956039e-02 - - -7.3477171361446381e-02 1.9944219291210175e-01 - <_> - - 0 -1 968 -2.4665659293532372e-02 - - 2.6995450258255005e-01 -5.2351549267768860e-02 - <_> - - 0 -1 969 -4.9799769185483456e-03 - - -4.4958519935607910e-01 2.6983380317687988e-02 - <_> - - 0 -1 970 3.0535869300365448e-03 - - 3.7507511675357819e-02 -3.4648960828781128e-01 - <_> - - 0 -1 971 -2.6310039684176445e-02 - - -1.7662410438060760e-01 2.5613600388169289e-02 - <_> - - 0 -1 972 -4.8684021458029747e-03 - - 1.8770970404148102e-01 -6.0557551681995392e-02 - <_> - - 0 -1 973 4.5840580016374588e-02 - - 3.3042129129171371e-02 -2.0266860723495483e-01 - <_> - - 0 -1 974 6.7487969063222408e-03 - - -1.3846549391746521e-01 1.1449229717254639e-01 - <_> - - 0 -1 975 1.0793830268085003e-02 - - -5.5047448724508286e-02 1.8106620013713837e-01 - <_> - - 0 -1 976 -1.3201650232076645e-02 - - -4.6548879146575928e-01 2.5808539241552353e-02 - <_> - - 0 -1 977 -4.9963342025876045e-03 - - 1.1389660090208054e-01 -1.1401399970054626e-01 - <_> - - 0 -1 978 -1.5819359570741653e-02 - - -4.8535621166229248e-01 2.2087620571255684e-02 - <_> - - 0 -1 979 6.8264620495028794e-05 - - -8.1919372081756592e-02 8.4099397063255310e-02 - <_> - - 0 -1 980 -1.5637379139661789e-02 - - -4.5156350731849670e-01 2.2735800594091415e-02 - <_> - - 0 -1 981 8.3005577325820923e-03 - - -5.1414210349321365e-02 2.2123479843139648e-01 - <_> - - 0 -1 982 6.6999751143157482e-03 - - 2.9789600521326065e-02 -3.5434889793395996e-01 - <_> - - 0 -1 983 5.1744161173701286e-03 - - -4.9688689410686493e-02 2.2029140591621399e-01 - <_> - - 0 -1 984 6.1278040520846844e-03 - - -6.3075892627239227e-02 1.7833660542964935e-01 - <_> - - 0 -1 985 6.8791587837040424e-03 - - 2.8441529721021652e-02 -2.9938548803329468e-01 - <_> - - 0 -1 986 -2.1736100316047668e-02 - - 1.7913189530372620e-01 -6.0287751257419586e-02 - <_> - - 0 -1 987 1.4009020291268826e-02 - - -1.0601969808340073e-01 1.5481740236282349e-01 - <_> - - 0 -1 988 2.1868139505386353e-01 - - -4.8351760953664780e-02 2.5734689831733704e-01 - <_> - - 0 -1 989 2.8380098938941956e-01 - - -5.0905589014291763e-02 2.9360538721084595e-01 - <_> - - 0 -1 990 1.2093160301446915e-01 - - 1.7309570685029030e-02 -6.9268721342086792e-01 - <_> - - 0 -1 991 5.6961830705404282e-02 - - -1.8678819760680199e-02 3.2275679707527161e-01 - <_> - - 0 -1 992 -9.0500963851809502e-03 - - -4.2406618595123291e-01 2.6841519400477409e-02 - <_> - - 0 -1 993 2.3118279874324799e-02 - - 1.0546280071139336e-02 -5.2286899089813232e-01 - <_> - - 0 -1 994 1.1480690445750952e-03 - - -4.5985739678144455e-02 2.3199149966239929e-01 - <_> - - 0 -1 995 -9.8909307271242142e-03 - - -5.4075521230697632e-01 1.4261700212955475e-02 - <_> - - 0 -1 996 7.0599978789687157e-04 - - -6.4954958856105804e-02 1.6775579750537872e-01 - <_> - - 0 -1 997 -8.2311293226666749e-05 - - 7.2767913341522217e-02 -5.4248239845037460e-02 - <_> - - 0 -1 998 5.3380471654236317e-03 - - 3.2092440873384476e-02 -3.1868579983711243e-01 - <_> - - 0 -1 999 5.9835889260284603e-05 - - -4.9297779798507690e-02 5.7114310562610626e-02 - <_> - - 0 -1 1000 4.0741640987107530e-05 - - -9.9226392805576324e-02 1.1056730151176453e-01 - <_> - - 0 -1 1001 -2.7114659547805786e-02 - - 2.4599009752273560e-01 -6.2148950994014740e-02 - <_> - - 0 -1 1002 -8.8477227836847305e-04 - - 2.0234499871730804e-01 -5.2926119416952133e-02 - <_> - - 0 -1 1003 -1.9263679161667824e-02 - - 1.5162590146064758e-01 -7.1536980569362640e-02 - <_> - - 0 -1 1004 9.6891522407531738e-03 - - 3.5710871219635010e-02 -3.2550829648971558e-01 - <_> - - 0 -1 1005 -2.2841900587081909e-02 - - -3.4999141097068787e-01 1.7189299687743187e-02 - <_> - - 0 -1 1006 -1.4777970314025879e-01 - - -4.3190780282020569e-01 2.1629950031638145e-02 - <_> - - 0 -1 1007 2.3399880155920982e-03 - - -4.4266819953918457e-02 9.6337772905826569e-02 - <_> - - 0 -1 1008 -7.2832189500331879e-02 - - -8.1861889362335205e-01 1.1799000203609467e-02 - <_> - - 0 -1 1009 -3.0727210640907288e-01 - - -7.0073091983795166e-01 3.5564110148698092e-03 - <_> - - 0 -1 1010 -2.0766649395227432e-02 - - -3.9139050245285034e-01 2.4622289463877678e-02 - <_> - - 0 -1 1011 -3.6341920495033264e-03 - - -4.5010888576507568e-01 5.5562350898981094e-03 - <_> - - 0 -1 1012 -7.0794070779811591e-05 - - 1.0878349840641022e-01 -9.0500459074974060e-02 - <_> - - 0 -1 1013 -8.8314860477112234e-05 - - 6.4176410436630249e-02 -4.9464631825685501e-02 - <_> - - 0 -1 1014 -1.1070650070905685e-02 - - 1.4730830490589142e-01 -6.7049317061901093e-02 - <_> - - 0 -1 1015 6.3626351766288280e-03 - - -4.0033329278230667e-02 9.2663377523422241e-02 - <_> - - 0 -1 1016 -7.7499519102275372e-03 - - 1.3924610614776611e-01 -7.7478073537349701e-02 - <_> - - 0 -1 1017 4.7532729804515839e-03 - - -7.2917170822620392e-02 1.7065620422363281e-01 - <_> - - 0 -1 1018 -1.6807980835437775e-02 - - 1.3080079853534698e-01 -8.0180667340755463e-02 - <_> - - 0 -1 1019 1.2794940173625946e-01 - - -1.9922649487853050e-02 3.7117990851402283e-01 - <_> - - 0 -1 1020 -1.8189599737524986e-02 - - 1.2358730286359787e-01 -8.3040617406368256e-02 - <_> - - 0 -1 1021 -1.6172589734196663e-02 - - -4.4906508922576904e-01 2.2756649181246758e-02 - <_> - - 0 -1 1022 6.8046152591705322e-05 - - -1.0118240118026733e-01 9.3573577702045441e-02 - <_> - - 0 -1 1023 1.1714019638020545e-04 - - -8.1081606447696686e-02 1.0626289993524551e-01 - <_> - - 0 -1 1024 5.4521678976016119e-05 - - -9.3289181590080261e-02 1.1599899828433990e-01 - <_> - - 0 -1 1025 -9.5095802098512650e-03 - - -5.0519037246704102e-01 1.4159279875457287e-02 - <_> - - 0 -1 1026 -2.8461390174925327e-03 - - -1.9915759563446045e-01 4.7365210950374603e-02 - <_> - - 0 -1 1027 2.3286240175366402e-02 - - -4.0329229086637497e-02 8.0515727400779724e-02 - <_> - - 0 -1 1028 -4.2605649679899216e-02 - - 3.3448079228401184e-01 -3.8372710347175598e-02 - <_> - - 0 -1 1029 4.5101181603968143e-03 - - 2.6354929432272911e-02 -2.3492150008678436e-01 - <_> - - 0 -1 1030 6.1817811802029610e-03 - - 2.1172510460019112e-02 -4.4205141067504883e-01 - <_> - - 0 -1 1031 -1.0606969706714153e-02 - - 6.5457493066787720e-02 -3.2472599297761917e-02 - <_> - - 0 -1 1032 -8.5813581943511963e-02 - - -3.4062311053276062e-01 3.0151499435305595e-02 - <_> - - 0 -1 1033 6.2758061103522778e-03 - - -6.1991188675165176e-02 1.5030339360237122e-01 - <_> - - 0 -1 1034 -3.0965260230004787e-03 - - 1.4812999963760376e-01 -8.1336267292499542e-02 - <_> - - 0 -1 1035 -1.1123980395495892e-02 - - -4.6381580829620361e-01 1.5213469974696636e-02 - <_> - - 0 -1 1036 -1.1103980243206024e-02 - - -6.0053801536560059e-01 1.3585429638624191e-02 - <_> - - 0 -1 1037 -3.2944830600172281e-03 - - -4.6413660049438477e-01 2.6226969435811043e-02 - <_> - - 0 -1 1038 1.1376610025763512e-02 - - -5.6543599814176559e-02 1.5750829875469208e-01 - <_> - - 0 -1 1039 -2.9465200379490852e-02 - - 1.4864230155944824e-01 -6.5188251435756683e-02 - <_> - - 0 -1 1040 4.9167301505804062e-02 - - -9.2225171625614166e-02 1.0154259949922562e-01 - <_> - - 0 -1 1041 -2.0959099754691124e-02 - - 1.7496380209922791e-01 -2.5550199672579765e-02 - <_> - - 0 -1 1042 5.4627470672130585e-03 - - -6.2659218907356262e-02 1.6952160000801086e-01 - <_> - - 0 -1 1043 -4.3515427969396114e-03 - - 8.2261569797992706e-02 -5.9839021414518356e-02 - <_> - - 0 -1 1044 7.4772499501705170e-03 - - -4.9545519053936005e-02 2.4696870148181915e-01 - <_> - - 0 -1 1045 -3.7427861243486404e-02 - - -9.1783320903778076e-01 3.5620180424302816e-03 - <_> - - 0 -1 1046 -2.4843990802764893e-02 - - -4.8939180374145508e-01 1.7182579264044762e-02 - <_> - - 0 -1 1047 8.0120442435145378e-03 - - 2.1742369979619980e-02 -6.4817667007446289e-02 - <_> - - 0 -1 1048 5.7306028902530670e-03 - - -7.0788390934467316e-02 1.3909959793090820e-01 - <_> - - 0 -1 1049 1.0989320464432240e-02 - - 7.0361187681555748e-03 -3.5568338632583618e-01 - <_> - - 0 -1 1050 -3.5342550836503506e-03 - - -2.3039029538631439e-01 3.9539441466331482e-02 - <_> - - 0 -1 1051 3.2612178474664688e-02 - - -8.3450950682163239e-02 9.6162289381027222e-02 - <_> - - 0 -1 1052 -5.1919098943471909e-02 - - -3.5974389314651489e-01 2.3558309301733971e-02 - <_> - - 0 -1 1053 2.8027060627937317e-01 - - 1.9102599471807480e-02 -2.7387228608131409e-01 - <_> - - 0 -1 1054 -1.8680640496313572e-03 - - 1.5570870041847229e-01 -5.9242039918899536e-02 - <_> - - 0 -1 1055 4.1271179914474487e-02 - - 9.2102894559502602e-03 -6.2253618240356445e-01 - <_> - - 0 -1 1056 -3.4157458692789078e-02 - - -6.9106769561767578e-01 1.4058819971978664e-02 - <_> - - 0 -1 1057 2.8111249208450317e-02 - - 6.3892039470374584e-03 -6.0164892673492432e-01 - <_> - - 0 -1 1058 -9.7675784491002560e-04 - - 1.6638219356536865e-01 -5.3310938179492950e-02 - <_> - - 0 -1 1059 -2.8404109179973602e-02 - - -8.4311908483505249e-01 4.9202498048543930e-03 - <_> - - 0 -1 1060 9.7658135928213596e-04 - - -5.2436660975217819e-02 1.6968539357185364e-01 - <_> - - 0 -1 1061 -7.9386442899703979e-02 - - -7.4181222915649414e-01 4.5842900872230530e-03 - <_> - - 0 -1 1062 2.9205000028014183e-03 - - -4.9970790743827820e-02 1.7052419483661652e-01 - <_> - - 0 -1 1063 -4.9792099744081497e-03 - - -4.2470470070838928e-01 1.1333269998431206e-02 - <_> - - 0 -1 1064 7.5309360399842262e-03 - - 2.0063450559973717e-02 -4.8175561428070068e-01 - <_> - - 0 -1 1065 -1.2063170224428177e-01 - - 1.7838390171527863e-01 -4.0402330458164215e-02 - <_> - - 0 -1 1066 6.4506952185183764e-05 - - -8.5854247212409973e-02 1.0695320367813110e-01 - <_> - - 0 -1 1067 1.4073869585990906e-01 - - -2.2774249315261841e-02 4.2583781480789185e-01 - <_> - - 0 -1 1068 5.8708712458610535e-04 - - -5.8570150285959244e-02 1.5563260018825531e-01 - <_> - - 0 -1 1069 4.2137140553677455e-05 - - -5.7670820504426956e-02 6.4898878335952759e-02 - <_> - - 0 -1 1070 -5.4859159718034789e-05 - - 1.3831870257854462e-01 -9.3551620841026306e-02 - <_> - - 0 -1 1071 -8.1318263255525380e-05 - - 7.8673712909221649e-02 -5.8452989906072617e-02 - <_> - - 0 -1 1072 1.0710170317906886e-04 - - -1.0360690206289291e-01 1.1052910238504410e-01 - <_> - - 0 -1 1073 5.9485197998583317e-03 - - 1.2473990209400654e-02 -6.0467267036437988e-01 - <_> - - 0 -1 1074 -3.8341151084750891e-03 - - -5.6510668992996216e-01 1.3957980088889599e-02 - <_> - - 0 -1 1075 4.8183299601078033e-02 - - 6.8787620402872562e-03 -2.2651989758014679e-01 - <_> - - 0 -1 1076 9.8468521609902382e-03 - - 1.4920420013368130e-02 -5.4084217548370361e-01 - <_> - - 0 -1 1077 7.0795980282127857e-03 - - -7.4058413505554199e-02 1.2125100195407867e-01 - <_> - - 0 -1 1078 -1.7187669873237610e-03 - - 1.1502750217914581e-01 -7.6794423162937164e-02 - <_> - - 0 -1 1079 1.4132119715213776e-02 - - 2.2234810516238213e-02 -3.7139910459518433e-01 - <_> - - 0 -1 1080 -8.0704037100076675e-03 - - -2.5363108515739441e-01 3.0734410509467125e-02 - <_> - - 0 -1 1081 2.2837559878826141e-01 - - 1.6856970265507698e-02 -5.4566478729248047e-01 - <_> - - 0 -1 1082 -1.0697550140321255e-02 - - 1.7055040597915649e-01 -4.8232439905405045e-02 - <_> - - 0 -1 1083 6.1057992279529572e-03 - - -7.4780799448490143e-02 1.2449649721384048e-01 - <_> - - 0 -1 1084 3.5825320519506931e-03 - - 3.4310609102249146e-02 -2.5292119383811951e-01 - <_> - - 0 -1 1085 8.7969396263360977e-03 - - 2.2731840610504150e-02 -2.0921200513839722e-01 - <_> - - 0 -1 1086 -1.1760019697248936e-02 - - -5.7893252372741699e-01 1.5020879916846752e-02 - <_> - - 0 -1 1087 1.4420140068978071e-03 - - 1.0806700214743614e-02 -1.7435030639171600e-01 - <_> - - 0 -1 1088 -4.9062469770433381e-05 - - 8.9151002466678619e-02 -9.4639152288436890e-02 - <_> - - 0 -1 1089 3.3054608851671219e-02 - - -5.0297331064939499e-02 7.2425939142704010e-02 - <_> - - 0 -1 1090 -4.4932190328836441e-02 - - 7.1401320397853851e-02 -1.2465400248765945e-01 - <_> - - 0 -1 1091 -1.2327450327575207e-02 - - 2.2164380550384521e-01 -1.6039999201893806e-02 - <_> - - 0 -1 1092 -3.7249261140823364e-01 - - -3.6931529641151428e-01 2.6002220809459686e-02 - <_> - - 0 -1 1093 1.5276310034096241e-02 - - 5.3399899043142796e-03 -5.4567837715148926e-01 - <_> - - 0 -1 1094 -1.4568739570677280e-02 - - -5.8832311630249023e-01 1.3987700454890728e-02 - <_> - - 0 -1 1095 9.9890248384326696e-04 - - -3.5881079733371735e-02 1.7432570457458496e-01 - <_> - 201 - -1.2964390516281128e+00 - - <_> - - 0 -1 1096 5.7295080274343491e-02 - - -1.7686650156974792e-01 2.4482910335063934e-01 - <_> - - 0 -1 1097 -1.0082540102303028e-02 - - 1.3789190351963043e-01 -2.0311470329761505e-01 - <_> - - 0 -1 1098 -1.8525039777159691e-02 - - 1.6239729523658752e-01 -1.6761909425258636e-01 - <_> - - 0 -1 1099 -5.2754491567611694e-02 - - 1.3471050560474396e-01 -1.4288149774074554e-01 - <_> - - 0 -1 1100 2.4354750290513039e-02 - - -2.6654679328203201e-02 4.3264889717102051e-01 - <_> - - 0 -1 1101 6.3417963683605194e-02 - - 4.2261090129613876e-02 -4.0131768584251404e-01 - <_> - - 0 -1 1102 3.8921029772609472e-03 - - -1.9067509472370148e-01 1.2673160433769226e-01 - <_> - - 0 -1 1103 1.5238909982144833e-03 - - -1.3715469837188721e-01 1.2464399635791779e-01 - <_> - - 0 -1 1104 -6.7657418549060822e-03 - - 2.5582429766654968e-01 -6.0715261846780777e-02 - <_> - - 0 -1 1105 -2.4176370352506638e-02 - - 2.8598898649215698e-01 -6.4212836325168610e-02 - <_> - - 0 -1 1106 -9.1761918738484383e-03 - - 1.0218480229377747e-01 -1.9994470477104187e-01 - <_> - - 0 -1 1107 -1.5783999860286713e-01 - - 2.3983080685138702e-01 -7.8578352928161621e-02 - <_> - - 0 -1 1108 4.8740189522504807e-02 - - -1.1009140312671661e-01 1.5583530068397522e-01 - <_> - - 0 -1 1109 1.9117979332804680e-02 - - 1.9706699997186661e-02 -3.7202331423759460e-01 - <_> - - 0 -1 1110 -1.2778160162270069e-02 - - -4.1600129008293152e-01 3.5378720611333847e-02 - <_> - - 0 -1 1111 2.6996301021426916e-03 - - -9.8559737205505371e-02 1.1491440236568451e-01 - <_> - - 0 -1 1112 2.4502199143171310e-02 - - 4.3092079460620880e-02 -3.6632940173149109e-01 - <_> - - 0 -1 1113 8.5003130137920380e-02 - - 4.3011400848627090e-02 -2.8862899541854858e-01 - <_> - - 0 -1 1114 3.1647530850023031e-03 - - -1.1429309844970703e-01 1.2794250249862671e-01 - <_> - - 0 -1 1115 1.1657790280878544e-02 - - -5.1525581628084183e-02 1.4223769307136536e-01 - <_> - - 0 -1 1116 -6.6801449283957481e-03 - - -4.7431039810180664e-01 2.8730580583214760e-02 - <_> - - 0 -1 1117 -3.8820769637823105e-02 - - 9.5313400030136108e-02 -4.7390919178724289e-02 - <_> - - 0 -1 1118 -2.5421770289540291e-02 - - -4.2198818922042847e-01 2.8437789529561996e-02 - <_> - - 0 -1 1119 -1.2146069668233395e-02 - - 1.8300829827785492e-01 -7.6282076537609100e-02 - <_> - - 0 -1 1120 -2.6787219569087029e-02 - - 2.8593730926513672e-01 -5.2229799330234528e-02 - <_> - - 0 -1 1121 -1.1614990420639515e-02 - - 1.1385949701070786e-01 -6.6350683569908142e-02 - <_> - - 0 -1 1122 -5.9956889599561691e-02 - - 2.7779400348663330e-01 -4.7004148364067078e-02 - <_> - - 0 -1 1123 -8.6737014353275299e-03 - - 2.1291969716548920e-01 -2.8776409104466438e-02 - <_> - - 0 -1 1124 2.8543549124151468e-03 - - -1.2216369807720184e-01 1.4215940237045288e-01 - <_> - - 0 -1 1125 2.2713060025125742e-03 - - 1.8237510696053505e-02 -4.1043540835380554e-01 - <_> - - 0 -1 1126 -1.2334890197962523e-03 - - -3.7727451324462891e-01 3.5043578594923019e-02 - <_> - - 0 -1 1127 -2.6904400438070297e-03 - - -4.1960981488227844e-01 1.0044580325484276e-02 - <_> - - 0 -1 1128 -2.6551370974630117e-03 - - 1.1507959663867950e-01 -1.0722310096025467e-01 - <_> - - 0 -1 1129 -5.6895318266469985e-05 - - 4.1630361229181290e-02 -3.1723231077194214e-02 - <_> - - 0 -1 1130 9.8731368780136108e-04 - - 4.2971551418304443e-02 -2.8150218725204468e-01 - <_> - - 0 -1 1131 1.8213579431176186e-02 - - -4.5183058828115463e-02 1.9148880243301392e-01 - <_> - - 0 -1 1132 -8.7277270853519440e-02 - - 1.7189629375934601e-01 -1.2195999920368195e-01 - <_> - - 0 -1 1133 -5.3898650221526623e-03 - - -3.8666540384292603e-01 1.5535250306129456e-02 - <_> - - 0 -1 1134 1.0853979736566544e-02 - - 3.6484178155660629e-02 -3.9597511291503906e-01 - <_> - - 0 -1 1135 -4.1801291517913342e-03 - - -4.8202338814735413e-01 1.7042439430952072e-02 - <_> - - 0 -1 1136 -2.3451769724488258e-02 - - 4.9864768981933594e-01 -2.2096080705523491e-02 - <_> - - 0 -1 1137 2.9061511158943176e-03 - - 2.6948669925332069e-02 -3.2566240429878235e-01 - <_> - - 0 -1 1138 4.6364609152078629e-02 - - 2.6882030069828033e-02 -3.7629741430282593e-01 - <_> - - 0 -1 1139 -2.1972910326439887e-04 - - 7.0536717772483826e-02 -1.0895930230617523e-01 - <_> - - 0 -1 1140 -3.7804399617016315e-03 - - -4.8879170417785645e-01 1.9993200898170471e-02 - <_> - - 0 -1 1141 6.0642170865321532e-05 - - -7.5357668101787567e-02 8.1142887473106384e-02 - <_> - - 0 -1 1142 -1.0688889771699905e-02 - - 2.2067229449748993e-01 -5.6204140186309814e-02 - <_> - - 0 -1 1143 4.3683178722858429e-02 - - -6.1082210391759872e-02 1.7125819623470306e-01 - <_> - - 0 -1 1144 -2.0247129723429680e-02 - - 1.5655870735645294e-01 -7.7006831765174866e-02 - <_> - - 0 -1 1145 -5.9285280294716358e-03 - - -4.3693101406097412e-01 2.0276429131627083e-02 - <_> - - 0 -1 1146 1.1349200271070004e-02 - - -5.9775028377771378e-02 1.6517449915409088e-01 - <_> - - 0 -1 1147 -1.3657160103321075e-01 - - -8.7073618173599243e-01 4.2868419550359249e-03 - <_> - - 0 -1 1148 6.6304646432399750e-02 - - -3.8869779556989670e-02 2.6494520902633667e-01 - <_> - - 0 -1 1149 1.9591119140386581e-02 - - -8.0344326794147491e-02 1.6651239991188049e-01 - <_> - - 0 -1 1150 3.4093219786882401e-02 - - 2.6182109490036964e-02 -4.5268338918685913e-01 - <_> - - 0 -1 1151 -2.0616619288921356e-01 - - -4.2545890808105469e-01 1.5678849071264267e-02 - <_> - - 0 -1 1152 -7.6675140298902988e-03 - - -3.5133340954780579e-01 2.7434019371867180e-02 - <_> - - 0 -1 1153 -1.2914510443806648e-02 - - 1.3598570227622986e-01 -6.3368737697601318e-02 - <_> - - 0 -1 1154 1.6074230894446373e-02 - - 2.1521290764212608e-02 -4.6437129378318787e-01 - <_> - - 0 -1 1155 3.6943029612302780e-02 - - 2.7475500479340553e-02 -3.0736088752746582e-01 - <_> - - 0 -1 1156 -7.5521357357501984e-02 - - -4.2419311404228210e-01 2.3781700059771538e-02 - <_> - - 0 -1 1157 2.4398239329457283e-02 - - -4.9387931823730469e-02 1.6724020242691040e-01 - <_> - - 0 -1 1158 1.1577049642801285e-01 - - 1.6644010320305824e-02 -6.9280111789703369e-01 - <_> - - 0 -1 1159 9.1529998462647200e-04 - - -5.0280008465051651e-02 1.3285259902477264e-01 - <_> - - 0 -1 1160 -3.6248450633138418e-03 - - -3.0668339133262634e-01 2.8492359444499016e-02 - <_> - - 0 -1 1161 -7.3581631295382977e-04 - - 5.5988568812608719e-02 -3.9279788732528687e-02 - <_> - - 0 -1 1162 2.0004369318485260e-01 - - -5.6840810924768448e-02 1.6850389540195465e-01 - <_> - - 0 -1 1163 -1.7877690494060516e-02 - - 1.9317519664764404e-01 -5.1463939249515533e-02 - <_> - - 0 -1 1164 1.1350380256772041e-02 - - -4.8964411020278931e-02 2.1819390356540680e-01 - <_> - - 0 -1 1165 1.2502909637987614e-02 - - -4.1984878480434418e-02 2.7138620615005493e-01 - <_> - - 0 -1 1166 -9.3033276498317719e-03 - - 1.5904520452022552e-01 -6.2697403132915497e-02 - <_> - - 0 -1 1167 9.8205171525478363e-03 - - 1.5533110126852989e-02 -3.3040758967399597e-01 - <_> - - 0 -1 1168 4.4993069022893906e-03 - - 3.7670239806175232e-02 -3.1121370196342468e-01 - <_> - - 0 -1 1169 1.4046450145542622e-02 - - -4.3426249176263809e-02 1.0327199846506119e-01 - <_> - - 0 -1 1170 -4.1117519140243530e-02 - - 1.8679919838905334e-01 -6.6434368491172791e-02 - <_> - - 0 -1 1171 -1.0714519768953323e-02 - - 1.2443839758634567e-01 -6.6358536481857300e-02 - <_> - - 0 -1 1172 9.2895422130823135e-03 - - -8.2169853150844574e-02 1.2243539839982986e-01 - <_> - - 0 -1 1173 -1.3050800189375877e-02 - - -4.0033888816833496e-01 1.6636909916996956e-02 - <_> - - 0 -1 1174 -3.6468189209699631e-02 - - -5.4737377166748047e-01 1.4817729592323303e-02 - <_> - - 0 -1 1175 -7.5372940045781434e-05 - - 5.9471640735864639e-02 -5.7879000902175903e-02 - <_> - - 0 -1 1176 1.4252290129661560e-02 - - 2.5297269225120544e-02 -3.3364731073379517e-01 - <_> - - 0 -1 1177 3.3469200134277344e-03 - - -7.0736803114414215e-02 7.4501320719718933e-02 - <_> - - 0 -1 1178 4.4445958919823170e-03 - - -6.7245952785015106e-02 1.4518859982490540e-01 - <_> - - 0 -1 1179 -8.7205823510885239e-03 - - -2.0213529467582703e-01 2.7520239353179932e-02 - <_> - - 0 -1 1180 4.6921689063310623e-02 - - 1.6156850382685661e-02 -5.3119277954101562e-01 - <_> - - 0 -1 1181 5.8387980971019715e-05 - - -5.5716171860694885e-02 7.2010621428489685e-02 - <_> - - 0 -1 1182 -4.6103101340122521e-05 - - 9.5903009176254272e-02 -9.7147382795810699e-02 - <_> - - 0 -1 1183 6.0657761059701443e-03 - - 2.4071209132671356e-02 -2.3760910332202911e-01 - <_> - - 0 -1 1184 -5.5520370602607727e-02 - - 3.0745118856430054e-01 -2.9971180483698845e-02 - <_> - - 0 -1 1185 -3.6553900688886642e-02 - - 3.2812029123306274e-02 -5.7015221565961838e-02 - <_> - - 0 -1 1186 1.8784699495881796e-03 - - -6.5326198935508728e-02 1.3909830152988434e-01 - <_> - - 0 -1 1187 -7.4822120368480682e-03 - - -7.7482169866561890e-01 5.9286328032612801e-03 - <_> - - 0 -1 1188 -3.3365150447934866e-03 - - -3.6160850524902344e-01 2.2673750296235085e-02 - <_> - - 0 -1 1189 -1.2254999950528145e-02 - - -6.5802180767059326e-01 4.3241591192781925e-03 - <_> - - 0 -1 1190 -2.5022740010172129e-04 - - 1.3684910535812378e-01 -6.1310190707445145e-02 - <_> - - 0 -1 1191 1.1895839869976044e-01 - - 2.4467010051012039e-02 -3.0819290876388550e-01 - <_> - - 0 -1 1192 1.8534749979153275e-03 - - -6.5717779099941254e-02 1.3805060088634491e-01 - <_> - - 0 -1 1193 -1.3966379687190056e-02 - - -4.2816719412803650e-01 1.6665250062942505e-02 - <_> - - 0 -1 1194 -1.2011890299618244e-02 - - -4.5466750860214233e-01 1.7481390386819839e-02 - <_> - - 0 -1 1195 8.6380320135504007e-04 - - 2.6830639690160751e-02 -1.9495770335197449e-01 - <_> - - 0 -1 1196 -5.4863549303263426e-04 - - 1.7281720042228699e-01 -5.1925048232078552e-02 - <_> - - 0 -1 1197 3.5642020404338837e-02 - - 1.1997340247035027e-02 -2.6362249255180359e-01 - <_> - - 0 -1 1198 9.2830741778016090e-03 - - 1.5381329692900181e-02 -5.2768671512603760e-01 - <_> - - 0 -1 1199 3.3444799482822418e-03 - - -4.4816508889198303e-02 1.5563699603080750e-01 - <_> - - 0 -1 1200 -3.4852489829063416e-02 - - -6.1446517705917358e-01 1.4714409597218037e-02 - <_> - - 0 -1 1201 -3.6836538929492235e-03 - - 6.7999623715877533e-02 -4.0318191051483154e-02 - <_> - - 0 -1 1202 2.6370671112090349e-03 - - -5.2716590464115143e-02 1.6502730548381805e-01 - <_> - - 0 -1 1203 -1.1408380232751369e-03 - - -1.4956669509410858e-01 1.5529209747910500e-02 - <_> - - 0 -1 1204 -5.5604642257094383e-03 - - 1.0151620209217072e-01 -7.8308418393135071e-02 - <_> - - 0 -1 1205 3.1304020434617996e-02 - - -5.1962178200483322e-02 1.0363990068435669e-01 - <_> - - 0 -1 1206 9.2903850600123405e-03 - - -5.3988721221685410e-02 1.6530619561672211e-01 - <_> - - 0 -1 1207 -1.0893030092120171e-02 - - 1.2810139358043671e-01 -7.3412962257862091e-02 - <_> - - 0 -1 1208 -4.9190609715878963e-03 - - -3.5075309872627258e-01 2.4489160627126694e-02 - <_> - - 0 -1 1209 8.1175416707992554e-02 - - 2.0940639078617096e-02 -3.7765330076217651e-01 - <_> - - 0 -1 1210 -7.1189319714903831e-03 - - 1.3209669291973114e-01 -7.4379600584506989e-02 - <_> - - 0 -1 1211 2.9033590108156204e-02 - - -6.0153428465127945e-02 1.6865250468254089e-01 - <_> - - 0 -1 1212 2.6668590307235718e-01 - - 3.0215110629796982e-02 -3.3363750576972961e-01 - <_> - - 0 -1 1213 1.3437710003927350e-03 - - 2.4461960420012474e-02 -3.4976521134376526e-01 - <_> - - 0 -1 1214 -6.4065970946103334e-05 - - 6.8185970187187195e-02 -1.2182369828224182e-01 - <_> - - 0 -1 1215 -2.2273659706115723e-03 - - 5.9166438877582550e-02 -5.6960988789796829e-02 - <_> - - 0 -1 1216 1.0822839976754040e-04 - - -1.1836750060319901e-01 6.9902807474136353e-02 - <_> - - 0 -1 1217 7.7762501314282417e-03 - - 1.8266340717673302e-02 -3.2388371229171753e-01 - <_> - - 0 -1 1218 -8.5627898806706071e-04 - - 1.5964969992637634e-01 -5.2340108901262283e-02 - <_> - - 0 -1 1219 3.9805951528251171e-03 - - 5.6993248872458935e-03 -6.3849228620529175e-01 - <_> - - 0 -1 1220 -4.9052381655201316e-04 - - 1.6294740140438080e-01 -7.4230141937732697e-02 - <_> - - 0 -1 1221 -1.8403500318527222e-02 - - -6.7734432220458984e-01 1.0705940425395966e-02 - <_> - - 0 -1 1222 -8.9714571367949247e-04 - - 1.6919730603694916e-01 -4.7718539834022522e-02 - <_> - - 0 -1 1223 -1.6734110191464424e-02 - - -3.1512379646301270e-01 1.2442049570381641e-02 - <_> - - 0 -1 1224 -1.1976989917457104e-02 - - -5.2932238578796387e-01 1.4436270110309124e-02 - <_> - - 0 -1 1225 7.0368088781833649e-03 - - 2.6491589844226837e-02 -2.4709920585155487e-01 - <_> - - 0 -1 1226 -1.0579899884760380e-02 - - -4.0928080677986145e-01 1.8759179860353470e-02 - <_> - - 0 -1 1227 6.0849997680634260e-04 - - -3.3409450203180313e-02 8.4388449788093567e-02 - <_> - - 0 -1 1228 -5.9445307124406099e-04 - - 1.4124199748039246e-01 -5.5558290332555771e-02 - <_> - - 0 -1 1229 -1.5759410336613655e-02 - - -3.8335001468658447e-01 1.5663359314203262e-02 - <_> - - 0 -1 1230 -1.0108030401170254e-02 - - -3.3914390206336975e-01 2.0997010171413422e-02 - <_> - - 0 -1 1231 8.8242385536432266e-03 - - 4.6882901340723038e-02 -3.4558109939098358e-02 - <_> - - 0 -1 1232 1.6952809691429138e-01 - - -2.9788380488753319e-02 2.9782000184059143e-01 - <_> - - 0 -1 1233 1.4175090473145247e-03 - - 1.4550680294632912e-02 -2.5577118992805481e-01 - <_> - - 0 -1 1234 -6.2455357983708382e-03 - - 1.7031440138816833e-01 -4.5718509703874588e-02 - <_> - - 0 -1 1235 8.2971990108489990e-02 - - -1.0885650292038918e-02 2.3585709929466248e-01 - <_> - - 0 -1 1236 -3.6387961357831955e-02 - - 7.2063557803630829e-02 -1.3514919579029083e-01 - <_> - - 0 -1 1237 2.6058170199394226e-01 - - 3.0760489404201508e-02 -2.0818600058555603e-01 - <_> - - 0 -1 1238 -1.8370869755744934e-01 - - -4.6199840307235718e-01 1.7690069973468781e-02 - <_> - - 0 -1 1239 -3.9726989343762398e-03 - - -1.6608929634094238e-01 2.0946720615029335e-02 - <_> - - 0 -1 1240 2.1455910056829453e-02 - - 2.3147830739617348e-02 -3.6254659295082092e-01 - <_> - - 0 -1 1241 1.4431820251047611e-02 - - 4.4689280912280083e-03 -2.4459290504455566e-01 - <_> - - 0 -1 1242 -3.3524229656904936e-03 - - -2.4808409810066223e-01 3.1635299324989319e-02 - <_> - - 0 -1 1243 -1.5669470652937889e-02 - - 3.1724831461906433e-01 -3.7489920854568481e-02 - <_> - - 0 -1 1244 -4.0077429264783859e-02 - - -2.5897759199142456e-01 3.2734971493482590e-02 - <_> - - 0 -1 1245 1.2361209839582443e-02 - - -4.5074861496686935e-02 1.6906499862670898e-01 - <_> - - 0 -1 1246 1.0967889800667763e-02 - - 1.8792109563946724e-02 -4.3848529458045959e-01 - <_> - - 0 -1 1247 -1.3743470422923565e-02 - - -4.6097651124000549e-01 1.2236960232257843e-02 - <_> - - 0 -1 1248 -1.0322439484298229e-03 - - 1.6485999524593353e-01 -5.1658768206834793e-02 - <_> - - 0 -1 1249 8.8313361629843712e-03 - - 1.5935530886054039e-02 -2.0159539580345154e-01 - <_> - - 0 -1 1250 1.4420679770410061e-02 - - 1.6077350825071335e-02 -4.6416330337524414e-01 - <_> - - 0 -1 1251 -1.8205989617854357e-03 - - 4.3313421308994293e-02 -2.8083719313144684e-02 - <_> - - 0 -1 1252 3.9304671809077263e-03 - - 4.9701198935508728e-02 -1.5147739648818970e-01 - <_> - - 0 -1 1253 -8.3210691809654236e-03 - - -1.0299280285835266e-01 1.7981389537453651e-02 - <_> - - 0 -1 1254 -1.1277500307187438e-03 - - 1.6595210134983063e-01 -4.8344310373067856e-02 - <_> - - 0 -1 1255 -7.8385067172348499e-04 - - -1.9464610517024994e-01 2.5084519758820534e-02 - <_> - - 0 -1 1256 -8.5464341100305319e-04 - - 1.4730739593505859e-01 -5.2989389747381210e-02 - <_> - - 0 -1 1257 -6.1449417844414711e-03 - - 9.5158338546752930e-02 -3.2354518771171570e-02 - <_> - - 0 -1 1258 5.3742229938507080e-02 - - -1.6013909131288528e-02 5.1783877611160278e-01 - <_> - - 0 -1 1259 -9.1773690655827522e-03 - - 6.5873071551322937e-02 -2.8698600828647614e-02 - <_> - - 0 -1 1260 -1.6262140125036240e-03 - - 1.1650130152702332e-01 -6.6200569272041321e-02 - <_> - - 0 -1 1261 -7.0246770977973938e-02 - - -5.5616712570190430e-01 3.3650770783424377e-03 - <_> - - 0 -1 1262 -4.5713048428297043e-02 - - -5.5543631315231323e-01 1.4523830264806747e-02 - <_> - - 0 -1 1263 -1.6252630157396197e-03 - - 7.7445946633815765e-02 -4.7753591090440750e-02 - <_> - - 0 -1 1264 -8.7784547358751297e-03 - - -6.6605579853057861e-01 1.1499799787998199e-02 - <_> - - 0 -1 1265 5.8178059756755829e-02 - - -1.2690190225839615e-02 2.4311649799346924e-01 - <_> - - 0 -1 1266 -1.0166700230911374e-03 - - 1.7018359899520874e-01 -4.3462678790092468e-02 - <_> - - 0 -1 1267 -8.3186908159404993e-04 - - -1.5544170141220093e-01 2.7767969295382500e-02 - <_> - - 0 -1 1268 1.0635660146363080e-04 - - -7.9961076378822327e-02 9.7552523016929626e-02 - <_> - - 0 -1 1269 7.7358598355203867e-04 - - 2.8019739314913750e-02 -1.6409790515899658e-01 - <_> - - 0 -1 1270 -5.1288288086652756e-03 - - 1.4355009794235229e-01 -5.2181150764226913e-02 - <_> - - 0 -1 1271 -2.9623789712786674e-02 - - 1.2567119300365448e-01 -7.2701826691627502e-02 - <_> - - 0 -1 1272 4.7920320183038712e-02 - - -6.2750786542892456e-02 1.4967499673366547e-01 - <_> - - 0 -1 1273 2.9907789081335068e-02 - - 3.3279890194535255e-03 -5.3522837162017822e-01 - <_> - - 0 -1 1274 -3.1103161163628101e-03 - - -1.8463380634784698e-01 4.0260940790176392e-02 - <_> - - 0 -1 1275 1.1777599574998021e-03 - - -4.2148880660533905e-02 1.8332019448280334e-01 - <_> - - 0 -1 1276 1.4972169883549213e-02 - - -5.0178010016679764e-02 1.4795599877834320e-01 - <_> - - 0 -1 1277 2.2697489708662033e-02 - - 8.8858045637607574e-03 -3.5102608799934387e-01 - <_> - - 0 -1 1278 1.2884129770100117e-02 - - 3.4654911607503891e-02 -2.4061930179595947e-01 - <_> - - 0 -1 1279 -1.1240700259804726e-03 - - 1.3145309686660767e-01 -2.8843039646744728e-02 - <_> - - 0 -1 1280 -1.3627869775518775e-03 - - 2.0138439536094666e-01 -3.7955548614263535e-02 - <_> - - 0 -1 1281 5.3557957289740443e-04 - - 2.7959279716014862e-02 -1.1965149641036987e-01 - <_> - - 0 -1 1282 -1.5280179679393768e-02 - - -4.8518699407577515e-01 1.5622369945049286e-02 - <_> - - 0 -1 1283 4.6412500523729250e-05 - - -5.8938909322023392e-02 6.0108929872512817e-02 - <_> - - 0 -1 1284 9.6553878393024206e-05 - - -9.6594870090484619e-02 7.7917523682117462e-02 - <_> - - 0 -1 1285 3.8991239853203297e-03 - - -2.6182200759649277e-02 1.9023859500885010e-01 - <_> - - 0 -1 1286 2.3785470053553581e-02 - - 4.0359679609537125e-02 -1.7933170497417450e-01 - <_> - - 0 -1 1287 5.9117228374816477e-05 - - -6.7694537341594696e-02 7.8966610133647919e-02 - <_> - - 0 -1 1288 5.8535519987344742e-02 - - -2.7913320809602737e-02 2.6359620690345764e-01 - <_> - - 0 -1 1289 -6.7125670611858368e-03 - - -8.2460111379623413e-01 3.6960430443286896e-03 - <_> - - 0 -1 1290 -4.6747662127017975e-03 - - -7.6254647970199585e-01 9.2743840068578720e-03 - <_> - - 0 -1 1291 5.3981528617441654e-03 - - 1.9147379789501429e-03 -8.0577397346496582e-01 - <_> - - 0 -1 1292 7.7252141200006008e-03 - - -8.2200609147548676e-02 9.2598602175712585e-02 - <_> - - 0 -1 1293 -1.1672140099108219e-03 - - 1.1479389667510986e-01 -4.5965019613504410e-02 - <_> - - 0 -1 1294 -7.4022258631885052e-03 - - -4.2622160911560059e-01 1.7451889812946320e-02 - <_> - - 0 -1 1295 6.5430802351329476e-05 - - -4.4547699391841888e-02 4.9818251281976700e-02 - <_> - - 0 -1 1296 4.6353430661838502e-05 - - -8.2009993493556976e-02 9.2233128845691681e-02 - <_> - 218 - -1.2540320158004761e+00 - - <_> - - 0 -1 1297 1.0560779832303524e-02 - - -1.7285460233688354e-01 2.0729510486125946e-01 - <_> - - 0 -1 1298 -3.8237389177083969e-02 - - 1.7711129784584045e-01 -1.5853039920330048e-01 - <_> - - 0 -1 1299 -5.4120671004056931e-02 - - 2.5644430518150330e-01 -8.8433571159839630e-02 - <_> - - 0 -1 1300 -2.2004460915923119e-03 - - 2.0103460550308228e-01 -1.1016409844160080e-01 - <_> - - 0 -1 1301 6.5438866615295410e-02 - - 7.8213139204308391e-04 -4.3508232421875000e+03 - <_> - - 0 -1 1302 -1.3564580120146275e-02 - - -5.4078108072280884e-01 4.8653590492904186e-03 - <_> - - 0 -1 1303 -1.8708320567384362e-03 - - 1.6335619986057281e-01 -1.2285909801721573e-01 - <_> - - 0 -1 1304 1.6992689669132233e-01 - - -4.5410599559545517e-03 4.8108500242233276e-01 - <_> - - 0 -1 1305 3.5981500986963511e-03 - - 3.5675730556249619e-02 -4.2361581325531006e-01 - <_> - - 0 -1 1306 5.4489761590957642e-01 - - -1.9873559474945068e-02 5.4604721069335938e-01 - <_> - - 0 -1 1307 -6.2775306403636932e-02 - - 1.7221370339393616e-01 -1.1438000202178955e-01 - <_> - - 0 -1 1308 -4.5944411307573318e-02 - - 2.5957840681076050e-01 -7.3221608996391296e-02 - <_> - - 0 -1 1309 2.1809421014040709e-03 - - 4.9543481320142746e-02 -3.1750869750976562e-01 - <_> - - 0 -1 1310 -9.6566081047058105e-03 - - 1.5817630290985107e-01 -8.9046843349933624e-02 - <_> - - 0 -1 1311 8.0804243683815002e-02 - - 5.0327628850936890e-02 -2.8871178627014160e-01 - <_> - - 0 -1 1312 9.8778933286666870e-02 - - -3.8188338279724121e-02 3.1198310852050781e-01 - <_> - - 0 -1 1313 8.4114018827676773e-03 - - -9.4993650913238525e-02 1.3448500633239746e-01 - <_> - - 0 -1 1314 -1.4770099893212318e-02 - - 1.7157199978828430e-01 -7.5040556490421295e-02 - <_> - - 0 -1 1315 1.0575640201568604e-01 - - -4.4023178517818451e-02 3.4951940178871155e-01 - <_> - - 0 -1 1316 4.0104389190673828e-02 - - -5.7279150933027267e-02 2.7639150619506836e-01 - <_> - - 0 -1 1317 1.3599339872598648e-02 - - -8.8640242815017700e-02 1.5966300666332245e-01 - <_> - - 0 -1 1318 -3.3378789667040110e-03 - - -4.9908700585365295e-01 7.1760369464755058e-03 - <_> - - 0 -1 1319 6.5490198321640491e-03 - - -5.9780698269605637e-02 2.1105900406837463e-01 - <_> - - 0 -1 1320 -6.2758670537732542e-05 - - 6.5547652542591095e-02 -5.4199248552322388e-02 - <_> - - 0 -1 1321 9.0889551211148500e-04 - - 4.2570099234580994e-02 -2.8287160396575928e-01 - <_> - - 0 -1 1322 8.8103182613849640e-02 - - 4.0662709623575211e-02 -2.9837289452552795e-01 - <_> - - 0 -1 1323 -1.3515380024909973e-01 - - -4.0110760927200317e-01 2.5998929515480995e-02 - <_> - - 0 -1 1324 1.0549680329859257e-02 - - 2.6560230180621147e-02 -3.5546660423278809e-01 - <_> - - 0 -1 1325 -1.0974519886076450e-02 - - 1.5402090549468994e-01 -7.1584962308406830e-02 - <_> - - 0 -1 1326 -1.2810549698770046e-02 - - -2.6804751157760620e-01 2.0543249323964119e-02 - <_> - - 0 -1 1327 -6.7375123500823975e-02 - - -5.2991771697998047e-01 1.9250020384788513e-02 - <_> - - 0 -1 1328 1.3328590430319309e-02 - - 1.4192479662597179e-02 -2.6928961277008057e-01 - <_> - - 0 -1 1329 -3.4924790263175964e-02 - - 2.8777620196342468e-01 -3.6692250519990921e-02 - <_> - - 0 -1 1330 -2.5960700586438179e-02 - - -5.2505880594253540e-01 4.2013241909444332e-03 - <_> - - 0 -1 1331 -1.4432610012590885e-02 - - -4.4046211242675781e-01 2.3941269144415855e-02 - <_> - - 0 -1 1332 1.0242980206385255e-03 - - -8.1329412758350372e-02 1.0900759696960449e-01 - <_> - - 0 -1 1333 -3.3913699444383383e-03 - - -2.7442601323127747e-01 3.5398051142692566e-02 - <_> - - 0 -1 1334 -2.5459110736846924e-02 - - 1.8842819333076477e-01 -5.0521291792392731e-02 - <_> - - 0 -1 1335 -2.5063930079340935e-02 - - 1.5833060443401337e-01 -6.7982017993927002e-02 - <_> - - 0 -1 1336 4.5757358893752098e-03 - - -5.1283899694681168e-02 1.1465849727392197e-01 - <_> - - 0 -1 1337 -1.5383529663085938e-01 - - 4.2741459608078003e-01 -2.3353850468993187e-02 - <_> - - 0 -1 1338 6.7441980354487896e-03 - - 1.1636420153081417e-02 -1.9906160235404968e-01 - <_> - - 0 -1 1339 4.9857632257044315e-04 - - -1.1122179776430130e-01 9.1327317059040070e-02 - <_> - - 0 -1 1340 4.1650209575891495e-02 - - -3.4230709075927734e-02 1.3409090042114258e-01 - <_> - - 0 -1 1341 -4.8686578869819641e-02 - - 3.8406088948249817e-01 -3.6709271371364594e-02 - <_> - - 0 -1 1342 -1.4266110025346279e-02 - - 1.9041019678115845e-01 -3.7326261401176453e-02 - <_> - - 0 -1 1343 2.0738251041620970e-03 - - -9.4080023467540741e-02 1.3675460219383240e-01 - <_> - - 0 -1 1344 -1.2780539691448212e-02 - - 7.9020939767360687e-02 -3.2141771167516708e-02 - <_> - - 0 -1 1345 8.7420884519815445e-03 - - -8.0583378672599792e-02 1.4332190155982971e-01 - <_> - - 0 -1 1346 6.9780537160113454e-05 - - -1.5397520363330841e-01 6.9408260285854340e-02 - <_> - - 0 -1 1347 -7.9981610178947449e-03 - - -4.4979119300842285e-01 2.3229770362377167e-02 - <_> - - 0 -1 1348 5.3804512135684490e-03 - - 2.4654839187860489e-02 -1.7253589630126953e-01 - <_> - - 0 -1 1349 -2.0006939768791199e-02 - - 1.6526390612125397e-01 -6.2598757445812225e-02 - <_> - - 0 -1 1350 -4.4656409882009029e-03 - - -3.7304630875587463e-01 1.0551270097494125e-02 - <_> - - 0 -1 1351 -3.1919090542942286e-03 - - -4.4115498661994934e-01 2.0958809182047844e-02 - <_> - - 0 -1 1352 -6.2270428985357285e-02 - - -5.4134678840637207e-01 1.3220540247857571e-02 - <_> - - 0 -1 1353 -4.4956348836421967e-02 - - -4.3312940001487732e-01 2.0668320357799530e-02 - <_> - - 0 -1 1354 1.1595709947869182e-03 - - -2.3692440241575241e-02 1.0879980027675629e-01 - <_> - - 0 -1 1355 -8.8405620772391558e-04 - - 1.6496179997920990e-01 -5.2494730800390244e-02 - <_> - - 0 -1 1356 2.6691770181059837e-02 - - 1.4845820143818855e-02 -5.5716449022293091e-01 - <_> - - 0 -1 1357 1.8276730552315712e-02 - - -6.6286213696002960e-02 1.2577010691165924e-01 - <_> - - 0 -1 1358 -8.0911338329315186e-02 - - 1.1313769966363907e-01 -4.9807820469141006e-02 - <_> - - 0 -1 1359 -3.6403700709342957e-02 - - 2.3366059362888336e-01 -3.8333971053361893e-02 - <_> - - 0 -1 1360 -1.3947879895567894e-02 - - 9.9164612591266632e-02 -6.7826092243194580e-02 - <_> - - 0 -1 1361 -2.2420510649681091e-02 - - 1.9045069813728333e-01 -4.8424690961837769e-02 - <_> - - 0 -1 1362 9.9516332149505615e-02 - - -4.8220060765743256e-02 2.0561240613460541e-01 - <_> - - 0 -1 1363 1.4956299960613251e-01 - - 1.4172339811921120e-02 -6.4508867263793945e-01 - <_> - - 0 -1 1364 9.6693442901596427e-04 - - -3.7843611091375351e-02 6.3549898564815521e-02 - <_> - - 0 -1 1365 1.2041750364005566e-02 - - 1.8035089597105980e-02 -4.7741371393203735e-01 - <_> - - 0 -1 1366 2.3097700905054808e-03 - - -4.1533429175615311e-02 1.3027940690517426e-01 - <_> - - 0 -1 1367 2.2019869647920132e-03 - - -5.1468931138515472e-02 1.7361460626125336e-01 - <_> - - 0 -1 1368 2.7255890890955925e-02 - - -1.5339000150561333e-02 3.6252358555793762e-01 - <_> - - 0 -1 1369 8.8747506961226463e-03 - - -4.2691629379987717e-02 2.0767800509929657e-01 - <_> - - 0 -1 1370 4.7241621650755405e-03 - - -5.0056781619787216e-02 8.7361179292201996e-02 - <_> - - 0 -1 1371 7.3167313530575484e-05 - - -1.2441310286521912e-01 7.2677783668041229e-02 - <_> - - 0 -1 1372 -1.2639940250664949e-03 - - 7.7619902789592743e-02 -4.0498621761798859e-02 - <_> - - 0 -1 1373 3.6909559275954962e-03 - - 3.1138850376009941e-02 -3.0862191319465637e-01 - <_> - - 0 -1 1374 -2.8352240100502968e-02 - - -3.5501840710639954e-01 1.3532860204577446e-02 - <_> - - 0 -1 1375 -9.6667202888056636e-04 - - 6.7602843046188354e-02 -1.4329749345779419e-01 - <_> - - 0 -1 1376 -5.8740310370922089e-02 - - -5.5063128471374512e-01 4.2741261422634125e-03 - <_> - - 0 -1 1377 -2.7275739237666130e-02 - - -6.4931607246398926e-01 1.2534529902040958e-02 - <_> - - 0 -1 1378 -1.1755879968404770e-02 - - -5.6485652923583984e-01 1.3763760216534138e-02 - <_> - - 0 -1 1379 7.5923758558928967e-03 - - -4.3114069849252701e-02 2.0055860280990601e-01 - <_> - - 0 -1 1380 -7.1979401400312781e-04 - - -1.3741749525070190e-01 3.4067109227180481e-02 - <_> - - 0 -1 1381 4.1190441697835922e-03 - - 3.6710578948259354e-02 -2.4774970114231110e-01 - <_> - - 0 -1 1382 7.5443051755428314e-03 - - 7.2344779036939144e-03 -4.4737368822097778e-01 - <_> - - 0 -1 1383 -5.2358289249241352e-03 - - 2.1731640398502350e-01 -3.8680329918861389e-02 - <_> - - 0 -1 1384 7.4686598964035511e-04 - - -3.7170719355344772e-02 3.8519371300935745e-02 - <_> - - 0 -1 1385 8.8468490866944194e-04 - - -1.0209800302982330e-01 9.2614941298961639e-02 - <_> - - 0 -1 1386 -1.1738609755411744e-03 - - 1.1087919771671295e-01 -8.5696041584014893e-02 - <_> - - 0 -1 1387 -9.8959967494010925e-02 - - -4.4991499185562134e-01 2.1242130547761917e-02 - <_> - - 0 -1 1388 8.8248471729457378e-04 - - 2.2897589951753616e-02 -1.9950489699840546e-01 - <_> - - 0 -1 1389 -4.1377689689397812e-02 - - 1.5493899583816528e-01 -5.9139370918273926e-02 - <_> - - 0 -1 1390 6.7946789786219597e-03 - - -7.8361012041568756e-02 1.7395700514316559e-01 - <_> - - 0 -1 1391 4.4758509844541550e-02 - - 2.6089010760188103e-02 -3.3111590147018433e-01 - <_> - - 0 -1 1392 2.9978479724377394e-03 - - 4.5928150415420532e-02 -1.4914700388908386e-01 - <_> - - 0 -1 1393 -5.9589359909296036e-02 - - -2.4853509664535522e-01 3.2523650676012039e-02 - <_> - - 0 -1 1394 9.4199320301413536e-04 - - -4.2554680258035660e-02 1.3448560237884521e-01 - <_> - - 0 -1 1395 -2.3947510868310928e-02 - - -4.5831909775733948e-01 1.7818130552768707e-02 - <_> - - 0 -1 1396 7.4462359771132469e-03 - - -4.2358528822660446e-02 5.8031070977449417e-02 - <_> - - 0 -1 1397 -1.2909569777548313e-02 - - 1.9730390608310699e-01 -4.4523268938064575e-02 - <_> - - 0 -1 1398 2.8930921107530594e-03 - - 4.2881060391664505e-02 -1.3717460632324219e-01 - <_> - - 0 -1 1399 -6.8186258431524038e-04 - - 1.3378690183162689e-01 -5.6549690663814545e-02 - <_> - - 0 -1 1400 9.0884382370859385e-04 - - -3.6167509853839874e-02 1.2201189994812012e-01 - <_> - - 0 -1 1401 4.2305429815314710e-04 - - -6.9509476423263550e-02 1.3025139272212982e-01 - <_> - - 0 -1 1402 -1.6460029873996973e-03 - - -1.3005359470844269e-01 3.2738208770751953e-02 - <_> - - 0 -1 1403 7.2493818588554859e-03 - - 1.2288839556276798e-02 -6.2278699874877930e-01 - <_> - - 0 -1 1404 7.8207803890109062e-03 - - 7.4369488283991814e-03 -1.4869819581508636e-01 - <_> - - 0 -1 1405 3.5927280783653259e-02 - - 1.8867580220103264e-02 -3.9214968681335449e-01 - <_> - - 0 -1 1406 -6.1618811741936952e-05 - - 5.6887779384851456e-02 -6.7739218473434448e-02 - <_> - - 0 -1 1407 3.7408068776130676e-02 - - -3.8547120988368988e-02 2.2187900543212891e-01 - <_> - - 0 -1 1408 -5.2155661396682262e-03 - - 1.3633349537849426e-01 -6.7394860088825226e-02 - <_> - - 0 -1 1409 -9.3568190932273865e-02 - - 1.7437450587749481e-01 -4.8774711787700653e-02 - <_> - - 0 -1 1410 7.6228141784667969e-02 - - -5.7475849986076355e-02 1.4711800217628479e-01 - <_> - - 0 -1 1411 -2.0037770271301270e-02 - - -4.1577899456024170e-01 1.7923019826412201e-02 - <_> - - 0 -1 1412 -1.1824379675090313e-02 - - 1.1446230113506317e-01 -7.0048220455646515e-02 - <_> - - 0 -1 1413 -1.6057320171967149e-03 - - 1.6788209974765778e-01 -4.9946658313274384e-02 - <_> - - 0 -1 1414 -2.5517439935356379e-03 - - -3.8285169005393982e-01 1.1361270211637020e-02 - <_> - - 0 -1 1415 -9.9515629699453712e-05 - - 9.2549681663513184e-02 -9.0349666774272919e-02 - <_> - - 0 -1 1416 -1.6710499301552773e-02 - - 1.7871430516242981e-01 -4.1317749768495560e-02 - <_> - - 0 -1 1417 -9.6687301993370056e-04 - - -2.5220069289207458e-01 3.0552810057997704e-02 - <_> - - 0 -1 1418 -6.0828930145362392e-05 - - 5.4259378463029861e-02 -4.7438140958547592e-02 - <_> - - 0 -1 1419 -8.6335372179746628e-04 - - 1.7799940705299377e-01 -4.2312078177928925e-02 - <_> - - 0 -1 1420 -8.9218461653217673e-04 - - -1.8458789587020874e-01 2.5141609832644463e-02 - <_> - - 0 -1 1421 -3.4870179370045662e-03 - - 1.6776649653911591e-01 -4.6044059097766876e-02 - <_> - - 0 -1 1422 1.9598890095949173e-02 - - 1.8055850639939308e-02 -3.0225679278373718e-01 - <_> - - 0 -1 1423 -1.0987210087478161e-02 - - -3.7276530265808105e-01 1.9768150523304939e-02 - <_> - - 0 -1 1424 -6.6390639403834939e-05 - - 7.6856963336467743e-02 -1.2683600187301636e-01 - <_> - - 0 -1 1425 -4.2606238275766373e-03 - - 1.1328200250864029e-01 -6.9660402834415436e-02 - <_> - - 0 -1 1426 7.3147160001099110e-03 - - 3.2997671514749527e-02 -2.6462730765342712e-01 - <_> - - 0 -1 1427 -1.0119480080902576e-02 - - -4.7061848640441895e-01 1.3846470043063164e-02 - <_> - - 0 -1 1428 9.2144332826137543e-02 - - -8.8630668818950653e-02 8.0828502774238586e-02 - <_> - - 0 -1 1429 1.1842589825391769e-02 - - -5.4271340370178223e-02 1.5906229615211487e-01 - <_> - - 0 -1 1430 2.6060450822114944e-02 - - 2.0219080150127411e-02 -3.7096428871154785e-01 - <_> - - 0 -1 1431 2.8632500767707825e-01 - - 1.7163900658488274e-02 -3.9469349384307861e-01 - <_> - - 0 -1 1432 -1.9337460398674011e-02 - - -2.1738919615745544e-01 1.4887879602611065e-02 - <_> - - 0 -1 1433 6.8996037589386106e-04 - - -6.4250953495502472e-02 1.0741239786148071e-01 - <_> - - 0 -1 1434 2.7315480634570122e-02 - - 5.0893737934529781e-03 -5.5414777994155884e-01 - <_> - - 0 -1 1435 -7.3149320669472218e-03 - - -5.7884562015533447e-01 1.1422660201787949e-02 - <_> - - 0 -1 1436 1.3492980040609837e-02 - - 6.9531891494989395e-03 -3.3597940206527710e-01 - <_> - - 0 -1 1437 1.7034929245710373e-02 - - 9.6587073057889938e-03 -6.6380858421325684e-01 - <_> - - 0 -1 1438 -4.9536321312189102e-02 - - -1.0995940119028091e-01 7.1444557979702950e-03 - <_> - - 0 -1 1439 -3.2623220235109329e-02 - - 1.8881709873676300e-01 -4.1656959801912308e-02 - <_> - - 0 -1 1440 2.5752598885446787e-03 - - -5.1026009023189545e-02 1.0571180284023285e-01 - <_> - - 0 -1 1441 2.4968909565359354e-03 - - -5.5985808372497559e-02 1.3470019400119781e-01 - <_> - - 0 -1 1442 -1.1691699735820293e-02 - - 6.9479256868362427e-02 -4.9810849130153656e-02 - <_> - - 0 -1 1443 5.0966278649866581e-03 - - -7.1984186768531799e-02 1.2013410031795502e-01 - <_> - - 0 -1 1444 8.6429098155349493e-04 - - -2.8091590851545334e-02 1.1059089750051498e-01 - <_> - - 0 -1 1445 -3.0658349860459566e-03 - - -4.0703940391540527e-01 1.8710559234023094e-02 - <_> - - 0 -1 1446 -5.5272910685744137e-05 - - 7.0791281759738922e-02 -7.0031739771366119e-02 - <_> - - 0 -1 1447 6.5698497928678989e-04 - - -4.9295708537101746e-02 1.5482489764690399e-01 - <_> - - 0 -1 1448 5.3707341430708766e-04 - - 3.0296180397272110e-02 -1.2385109812021255e-01 - <_> - - 0 -1 1449 -2.7268910780549049e-02 - - -4.6740248799324036e-01 1.4987439848482609e-02 - <_> - - 0 -1 1450 -2.6138951070606709e-03 - - 1.1666820198297501e-01 -6.1536878347396851e-02 - <_> - - 0 -1 1451 -2.7707589790225029e-02 - - -6.4345467090606689e-01 1.2005249969661236e-02 - <_> - - 0 -1 1452 -2.0054269582033157e-02 - - -3.4935790300369263e-01 1.0976320132613182e-02 - <_> - - 0 -1 1453 6.9170317146927118e-04 - - 4.4264778494834900e-02 -1.4918880164623260e-01 - <_> - - 0 -1 1454 6.4560663304291666e-05 - - -4.2204160243272781e-02 4.7343600541353226e-02 - <_> - - 0 -1 1455 -8.8378103100694716e-05 - - 1.0160549730062485e-01 -7.4064172804355621e-02 - <_> - - 0 -1 1456 -6.6106527810916305e-05 - - 7.5940653681755066e-02 -4.9520809203386307e-02 - <_> - - 0 -1 1457 4.2288508848287165e-04 - - -5.8860011398792267e-02 1.3856880366802216e-01 - <_> - - 0 -1 1458 2.5251980405300856e-03 - - -3.0284479260444641e-02 1.6436590254306793e-01 - <_> - - 0 -1 1459 -9.0347938239574432e-03 - - -6.5022891759872437e-01 1.1707929894328117e-02 - <_> - - 0 -1 1460 -4.2698681354522705e-03 - - 1.2133090198040009e-01 -6.0833681374788284e-02 - <_> - - 0 -1 1461 1.6653979197144508e-02 - - 1.4557110145688057e-02 -5.0316780805587769e-01 - <_> - - 0 -1 1462 -1.1785580217838287e-01 - - -3.4865391254425049e-01 5.8299610391259193e-03 - <_> - - 0 -1 1463 -3.8989041000604630e-02 - - 1.0821299999952316e-01 -8.2435406744480133e-02 - <_> - - 0 -1 1464 -6.9744870997965336e-03 - - 9.2099390923976898e-02 -4.4741760939359665e-02 - <_> - - 0 -1 1465 1.5437410213053226e-02 - - 2.9481740668416023e-02 -2.4086919426918030e-01 - <_> - - 0 -1 1466 -5.9599988162517548e-03 - - -2.2541530430316925e-01 2.5642080232501030e-02 - <_> - - 0 -1 1467 -5.3358142031356692e-04 - - 1.1838089674711227e-01 -5.7124208658933640e-02 - <_> - - 0 -1 1468 1.7693769186735153e-02 - - 2.6607789099216461e-02 -3.0558571219444275e-01 - <_> - - 0 -1 1469 5.3599448874592781e-03 - - -5.6949790567159653e-02 1.2108889967203140e-01 - <_> - - 0 -1 1470 1.5854809433221817e-02 - - 2.1557219326496124e-02 -2.5214201211929321e-01 - <_> - - 0 -1 1471 5.4963350296020508e-02 - - 1.0636219754815102e-02 -5.7305997610092163e-01 - <_> - - 0 -1 1472 -3.7383600138127804e-03 - - 7.7441543340682983e-02 -3.0604809522628784e-02 - <_> - - 0 -1 1473 1.8262390047311783e-02 - - -5.4902829229831696e-02 1.1765880137681961e-01 - <_> - - 0 -1 1474 -3.1827870756387711e-02 - - -9.1100317239761353e-01 1.3938200427219272e-03 - <_> - - 0 -1 1475 -3.6466179881244898e-03 - - 1.0852409899234772e-01 -7.2252616286277771e-02 - <_> - - 0 -1 1476 -5.1743179559707642e-02 - - -9.1869431734085083e-01 1.8797840457409620e-03 - <_> - - 0 -1 1477 -9.0449545532464981e-03 - - 1.7876809835433960e-01 -3.8844209164381027e-02 - <_> - - 0 -1 1478 -4.5340228825807571e-03 - - -2.4725730717182159e-01 2.9726779088377953e-02 - <_> - - 0 -1 1479 6.8734101951122284e-03 - - -6.7521482706069946e-02 1.0654129832983017e-01 - <_> - - 0 -1 1480 7.7327789040282369e-04 - - 2.2192569449543953e-02 -1.3983079791069031e-01 - <_> - - 0 -1 1481 -8.5252941062208265e-05 - - 9.0302497148513794e-02 -7.8618973493576050e-02 - <_> - - 0 -1 1482 4.8931739293038845e-03 - - 3.1124200671911240e-02 -1.6171300411224365e-01 - <_> - - 0 -1 1483 -3.5761829465627670e-02 - - -3.4062370657920837e-01 2.0185910165309906e-02 - <_> - - 0 -1 1484 -1.1069890111684799e-02 - - 1.1651419848203659e-01 -3.4033469855785370e-02 - <_> - - 0 -1 1485 3.4201510716229677e-03 - - -5.3016118705272675e-02 1.3394360244274139e-01 - <_> - - 0 -1 1486 -4.9969270825386047e-02 - - -8.4932959079742432e-01 2.7547380886971951e-03 - <_> - - 0 -1 1487 -1.1221430031582713e-03 - - -1.6294130682945251e-01 4.1338101029396057e-02 - <_> - - 0 -1 1488 3.7148129194974899e-02 - - 1.7175029963254929e-02 -2.8404331207275391e-01 - <_> - - 0 -1 1489 2.3847341071814299e-03 - - 3.4838210791349411e-02 -1.8447269499301910e-01 - <_> - - 0 -1 1490 1.4311249554157257e-01 - - 2.5221729651093483e-02 -2.5437259674072266e-01 - <_> - - 0 -1 1491 -1.1918859556317329e-02 - - 1.6557849943637848e-01 -4.4744271785020828e-02 - <_> - - 0 -1 1492 6.4779450185596943e-03 - - -2.5023799389600754e-02 7.9913288354873657e-02 - <_> - - 0 -1 1493 1.4581739669665694e-03 - - -7.9792372882366180e-02 8.2918867468833923e-02 - <_> - - 0 -1 1494 6.2418850138783455e-03 - - 1.3290929608047009e-02 -2.9951110482215881e-01 - <_> - - 0 -1 1495 -2.2714590653777122e-02 - - 4.3989849090576172e-01 -1.5037129633128643e-02 - <_> - - 0 -1 1496 -4.3001482263207436e-03 - - -3.5465851426124573e-01 7.9521266743540764e-03 - <_> - - 0 -1 1497 1.0604769922792912e-03 - - 3.8593769073486328e-02 -1.7629230022430420e-01 - <_> - - 0 -1 1498 4.3205441907048225e-03 - - 1.7124539241194725e-02 -1.0750160366296768e-01 - <_> - - 0 -1 1499 -3.8217399269342422e-03 - - -4.5892098546028137e-01 1.4125829562544823e-02 - <_> - - 0 -1 1500 9.7336847102269530e-04 - - -3.6155119538307190e-02 1.2680569291114807e-01 - <_> - - 0 -1 1501 -7.9081847798079252e-04 - - 1.7071470618247986e-01 -3.7614621222019196e-02 - <_> - - 0 -1 1502 -7.6159887248650193e-04 - - 2.3113989830017090e-01 -6.0362979769706726e-02 - <_> - - 0 -1 1503 -2.1031539887189865e-02 - - -4.9185648560523987e-01 1.5601299703121185e-02 - <_> - - 0 -1 1504 1.8097320571541786e-02 - - -4.6735849231481552e-02 1.0506930202245712e-01 - <_> - - 0 -1 1505 -1.3120859861373901e-02 - - 1.0183440148830414e-01 -8.5726559162139893e-02 - <_> - - 0 -1 1506 2.0128190517425537e-01 - - -9.4874696806073189e-03 5.4181897640228271e-01 - <_> - - 0 -1 1507 7.3326090350747108e-03 - - 2.8244720771908760e-02 -2.4529810249805450e-01 - <_> - - 0 -1 1508 9.0540642850100994e-04 - - -5.5965088307857513e-02 2.3225949704647064e-01 - <_> - - 0 -1 1509 5.3532002493739128e-04 - - 4.3219450861215591e-02 -1.6520470380783081e-01 - <_> - - 0 -1 1510 -8.0239711678586900e-05 - - 5.8853890746831894e-02 -4.7541521489620209e-02 - <_> - - 0 -1 1511 4.8403399996459484e-03 - - -5.4115850478410721e-02 1.3033269345760345e-01 - <_> - - 0 -1 1512 6.6192197799682617e-01 - - -1.4795269817113876e-02 5.7857227325439453e-01 - <_> - - 0 -1 1513 -8.5441237315535545e-03 - - 1.1657439917325974e-01 -6.2898837029933929e-02 - <_> - - 0 -1 1514 5.4021849791752174e-05 - - -6.0200899839401245e-02 6.9971673190593719e-02 - - <_> - - <_> - 0 0 14 9 -1. - <_> - 0 3 14 3 3. - <_> - - <_> - 17 1 8 14 -1. - <_> - 17 8 8 7 2. - <_> - - <_> - 7 3 11 6 -1. - <_> - 7 5 11 2 3. - <_> - - <_> - 5 2 15 6 -1. - <_> - 5 4 15 2 3. - <_> - - <_> - 6 4 11 6 -1. - <_> - 6 6 11 2 3. - <_> - - <_> - 17 1 6 3 -1. - <_> - 19 1 2 3 3. - <_> - - <_> - 5 0 15 6 -1. - <_> - 5 2 15 2 3. - <_> - - <_> - 7 3 13 6 -1. - <_> - 7 5 13 2 3. - <_> - - <_> - 5 3 6 5 -1. - <_> - 8 3 3 5 2. - <_> - - <_> - 21 14 4 1 -1. - <_> - 21 14 2 1 2. - <_> - - <_> - 0 3 3 12 -1. - <_> - 0 7 3 4 3. - <_> - - <_> - 22 10 3 4 -1. - <_> - 22 11 3 2 2. - <_> - - <_> - 0 10 3 4 -1. - <_> - 0 11 3 2 2. - <_> - - <_> - 5 0 15 8 -1. - <_> - 5 2 15 4 2. - <_> - - <_> - 20 0 5 9 -1. - <_> - 20 3 5 3 3. - <_> - - <_> - 6 2 13 4 -1. - <_> - 6 4 13 2 2. - <_> - - <_> - 7 2 15 6 -1. - <_> - 7 4 15 2 3. - <_> - - <_> - 2 3 4 12 -1. - <_> - 2 9 4 6 2. - <_> - - <_> - 6 1 14 6 -1. - <_> - 6 3 14 2 3. - <_> - - <_> - 8 3 9 6 -1. - <_> - 8 5 9 2 3. - <_> - - <_> - 21 0 4 6 -1. - <_> - 21 3 4 3 2. - <_> - - <_> - 1 12 1 3 -1. - <_> - 1 13 1 1 3. - <_> - - <_> - 23 12 1 3 -1. - <_> - 23 13 1 1 3. - <_> - - <_> - 1 12 1 3 -1. - <_> - 1 13 1 1 3. - <_> - - <_> - 7 7 11 8 -1. - <_> - 7 9 11 4 2. - <_> - - <_> - 8 4 9 6 -1. - <_> - 8 6 9 2 3. - <_> - - <_> - 1 0 15 9 -1. - <_> - 1 3 15 3 3. - <_> - - <_> - 9 0 11 15 -1. - <_> - 9 5 11 5 3. - <_> - - <_> - 0 8 3 4 -1. - <_> - 0 9 3 2 2. - <_> - - <_> - 7 9 12 6 -1. - <_> - 7 12 12 3 2. - <_> - - <_> - 0 5 2 6 -1. - <_> - 0 7 2 2 3. - <_> - - <_> - 14 0 2 11 -1. - <_> - 14 0 1 11 2. - <_> - - <_> - 0 9 2 6 -1. - <_> - 0 11 2 2 3. - <_> - - <_> - 1 0 24 12 -1. - <_> - 13 0 12 6 2. - <_> - 1 6 12 6 2. - <_> - - <_> - 0 0 3 4 -1. - <_> - 0 2 3 2 2. - <_> - - <_> - 7 3 14 6 -1. - <_> - 7 5 14 2 3. - <_> - - <_> - 5 3 15 4 -1. - <_> - 5 5 15 2 2. - <_> - - <_> - 8 13 12 1 -1. - <_> - 12 13 4 1 3. - <_> - - <_> - 2 3 12 6 -1. - <_> - 8 3 6 6 2. - <_> - - <_> - 21 2 4 9 -1. - <_> - 21 2 2 9 2. - 1 - <_> - - <_> - 6 2 13 6 -1. - <_> - 6 4 13 2 3. - <_> - - <_> - 5 3 15 2 -1. - <_> - 5 4 15 1 2. - <_> - - <_> - 0 11 5 3 -1. - <_> - 0 12 5 1 3. - <_> - - <_> - 14 0 11 14 -1. - <_> - 14 7 11 7 2. - <_> - - <_> - 2 10 4 1 -1. - <_> - 3 11 2 1 2. - 1 - <_> - - <_> - 1 0 24 12 -1. - <_> - 13 0 12 6 2. - <_> - 1 6 12 6 2. - <_> - - <_> - 0 4 6 6 -1. - <_> - 0 4 3 3 2. - <_> - 3 7 3 3 2. - <_> - - <_> - 23 9 1 4 -1. - <_> - 22 10 1 2 2. - 1 - <_> - - <_> - 2 9 4 1 -1. - <_> - 3 10 2 1 2. - 1 - <_> - - <_> - 16 4 8 10 -1. - <_> - 20 4 4 5 2. - <_> - 16 9 4 5 2. - <_> - - <_> - 8 7 9 6 -1. - <_> - 8 9 9 2 3. - <_> - - <_> - 11 12 4 3 -1. - <_> - 12 12 2 3 2. - <_> - - <_> - 0 0 3 3 -1. - <_> - 0 1 3 1 3. - <_> - - <_> - 11 9 14 2 -1. - <_> - 11 9 7 2 2. - <_> - - <_> - 9 13 4 1 -1. - <_> - 10 13 2 1 2. - <_> - - <_> - 0 0 8 6 -1. - <_> - 0 3 8 3 2. - <_> - - <_> - 5 1 15 6 -1. - <_> - 5 3 15 2 3. - <_> - - <_> - 0 7 4 3 -1. - <_> - 0 8 4 1 3. - <_> - - <_> - 3 3 20 6 -1. - <_> - 8 3 10 6 2. - <_> - - <_> - 0 6 24 5 -1. - <_> - 6 6 12 5 2. - <_> - - <_> - 8 5 9 6 -1. - <_> - 8 7 9 2 3. - <_> - - <_> - 5 2 14 4 -1. - <_> - 5 4 14 2 2. - <_> - - <_> - 22 8 3 6 -1. - <_> - 22 10 3 2 3. - <_> - - <_> - 3 9 18 2 -1. - <_> - 3 9 9 1 2. - <_> - 12 10 9 1 2. - <_> - - <_> - 22 8 3 6 -1. - <_> - 22 10 3 2 3. - <_> - - <_> - 0 0 24 6 -1. - <_> - 0 0 12 3 2. - <_> - 12 3 12 3 2. - <_> - - <_> - 14 11 4 4 -1. - <_> - 15 11 2 4 2. - <_> - - <_> - 5 5 15 2 -1. - <_> - 5 6 15 1 2. - <_> - - <_> - 5 4 15 6 -1. - <_> - 5 6 15 2 3. - <_> - - <_> - 0 7 2 3 -1. - <_> - 0 8 2 1 3. - <_> - - <_> - 6 6 13 6 -1. - <_> - 6 8 13 2 3. - <_> - - <_> - 0 11 6 3 -1. - <_> - 0 12 6 1 3. - <_> - - <_> - 11 0 14 14 -1. - <_> - 11 7 14 7 2. - <_> - - <_> - 7 13 4 1 -1. - <_> - 8 13 2 1 2. - <_> - - <_> - 6 9 13 6 -1. - <_> - 6 11 13 2 3. - <_> - - <_> - 0 9 4 4 -1. - <_> - 0 10 4 2 2. - <_> - - <_> - 21 0 4 6 -1. - <_> - 21 3 4 3 2. - <_> - - <_> - 0 12 6 3 -1. - <_> - 0 13 6 1 3. - <_> - - <_> - 16 11 4 3 -1. - <_> - 17 11 2 3 2. - <_> - - <_> - 0 7 10 8 -1. - <_> - 0 7 5 4 2. - <_> - 5 11 5 4 2. - <_> - - <_> - 22 2 3 8 -1. - <_> - 22 2 3 4 2. - 1 - <_> - - <_> - 1 3 16 4 -1. - <_> - 9 3 8 4 2. - <_> - - <_> - 1 13 24 2 -1. - <_> - 13 13 12 1 2. - <_> - 1 14 12 1 2. - <_> - - <_> - 5 5 4 10 -1. - <_> - 6 5 2 10 2. - <_> - - <_> - 13 7 2 6 -1. - <_> - 11 9 2 2 3. - 1 - <_> - - <_> - 8 9 8 6 -1. - <_> - 8 12 8 3 2. - <_> - - <_> - 24 7 1 4 -1. - <_> - 24 8 1 2 2. - <_> - - <_> - 5 7 15 6 -1. - <_> - 5 9 15 2 3. - <_> - - <_> - 21 8 4 3 -1. - <_> - 21 9 4 1 3. - <_> - - <_> - 5 2 15 4 -1. - <_> - 5 3 15 2 2. - <_> - - <_> - 6 4 15 3 -1. - <_> - 6 5 15 1 3. - <_> - - <_> - 0 3 2 12 -1. - <_> - 0 3 1 6 2. - <_> - 1 9 1 6 2. - <_> - - <_> - 7 3 11 4 -1. - <_> - 7 4 11 2 2. - <_> - - <_> - 0 0 6 6 -1. - <_> - 0 3 6 3 2. - <_> - - <_> - 24 3 1 12 -1. - <_> - 24 7 1 4 3. - <_> - - <_> - 0 0 24 12 -1. - <_> - 0 0 12 6 2. - <_> - 12 6 12 6 2. - <_> - - <_> - 1 1 24 14 -1. - <_> - 13 1 12 7 2. - <_> - 1 8 12 7 2. - <_> - - <_> - 5 3 8 4 -1. - <_> - 5 3 8 2 2. - 1 - <_> - - <_> - 24 9 1 4 -1. - <_> - 23 10 1 2 2. - 1 - <_> - - <_> - 7 7 11 8 -1. - <_> - 7 9 11 4 2. - <_> - - <_> - 24 9 1 4 -1. - <_> - 23 10 1 2 2. - 1 - <_> - - <_> - 0 6 1 9 -1. - <_> - 0 9 1 3 3. - <_> - - <_> - 8 2 9 3 -1. - <_> - 8 3 9 1 3. - <_> - - <_> - 9 4 7 4 -1. - <_> - 9 5 7 2 2. - <_> - - <_> - 22 0 3 2 -1. - <_> - 22 1 3 1 2. - <_> - - <_> - 0 0 13 14 -1. - <_> - 0 7 13 7 2. - <_> - - <_> - 21 9 4 4 -1. - <_> - 21 10 4 2 2. - <_> - - <_> - 0 9 4 4 -1. - <_> - 0 10 4 2 2. - <_> - - <_> - 22 9 1 4 -1. - <_> - 21 10 1 2 2. - 1 - <_> - - <_> - 3 9 4 1 -1. - <_> - 4 10 2 1 2. - 1 - <_> - - <_> - 15 3 10 12 -1. - <_> - 20 3 5 6 2. - <_> - 15 9 5 6 2. - <_> - - <_> - 0 8 14 6 -1. - <_> - 0 8 7 3 2. - <_> - 7 11 7 3 2. - <_> - - <_> - 23 10 1 4 -1. - <_> - 22 11 1 2 2. - 1 - <_> - - <_> - 0 3 10 12 -1. - <_> - 0 3 5 6 2. - <_> - 5 9 5 6 2. - <_> - - <_> - 23 0 2 1 -1. - <_> - 23 0 1 1 2. - 1 - <_> - - <_> - 8 3 9 3 -1. - <_> - 8 4 9 1 3. - <_> - - <_> - 7 5 11 4 -1. - <_> - 7 6 11 2 2. - <_> - - <_> - 2 7 20 8 -1. - <_> - 12 7 10 8 2. - <_> - - <_> - 12 5 9 8 -1. - <_> - 15 5 3 8 3. - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 21 3 4 4 -1. - <_> - 22 4 2 4 2. - 1 - <_> - - <_> - 4 5 9 8 -1. - <_> - 7 5 3 8 3. - <_> - - <_> - 22 10 3 2 -1. - <_> - 22 10 3 1 2. - 1 - <_> - - <_> - 0 5 24 5 -1. - <_> - 6 5 12 5 2. - <_> - - <_> - 9 7 7 3 -1. - <_> - 9 8 7 1 3. - <_> - - <_> - 2 0 20 9 -1. - <_> - 7 0 10 9 2. - <_> - - <_> - 11 2 8 9 -1. - <_> - 13 2 4 9 2. - <_> - - <_> - 1 8 4 1 -1. - <_> - 2 9 2 1 2. - 1 - <_> - - <_> - 19 5 6 10 -1. - <_> - 22 5 3 5 2. - <_> - 19 10 3 5 2. - <_> - - <_> - 0 5 6 10 -1. - <_> - 0 5 3 5 2. - <_> - 3 10 3 5 2. - <_> - - <_> - 10 10 9 2 -1. - <_> - 13 10 3 2 3. - <_> - - <_> - 5 2 15 2 -1. - <_> - 5 3 15 1 2. - <_> - - <_> - 21 4 4 3 -1. - <_> - 21 4 2 3 2. - <_> - - <_> - 1 5 15 4 -1. - <_> - 1 6 15 2 2. - <_> - - <_> - 21 5 4 10 -1. - <_> - 23 5 2 5 2. - <_> - 21 10 2 5 2. - <_> - - <_> - 0 0 21 8 -1. - <_> - 7 0 7 8 3. - <_> - - <_> - 5 0 15 6 -1. - <_> - 5 2 15 2 3. - <_> - - <_> - 2 2 21 3 -1. - <_> - 9 2 7 3 3. - <_> - - <_> - 6 3 15 6 -1. - <_> - 6 5 15 2 3. - <_> - - <_> - 0 5 4 10 -1. - <_> - 0 5 2 5 2. - <_> - 2 10 2 5 2. - <_> - - <_> - 22 10 1 4 -1. - <_> - 21 11 1 2 2. - 1 - <_> - - <_> - 0 7 3 4 -1. - <_> - 0 8 3 2 2. - <_> - - <_> - 1 3 24 3 -1. - <_> - 7 3 12 3 2. - <_> - - <_> - 0 0 24 13 -1. - <_> - 6 0 12 13 2. - <_> - - <_> - 5 3 15 4 -1. - <_> - 5 4 15 2 2. - <_> - - <_> - 5 4 14 3 -1. - <_> - 5 5 14 1 3. - <_> - - <_> - 23 8 2 4 -1. - <_> - 22 9 2 2 2. - 1 - <_> - - <_> - 2 8 4 2 -1. - <_> - 3 9 2 2 2. - 1 - <_> - - <_> - 9 8 9 6 -1. - <_> - 9 10 9 2 3. - <_> - - <_> - 0 0 11 14 -1. - <_> - 0 7 11 7 2. - <_> - - <_> - 1 0 24 12 -1. - <_> - 13 0 12 6 2. - <_> - 1 6 12 6 2. - <_> - - <_> - 0 0 3 4 -1. - <_> - 0 2 3 2 2. - <_> - - <_> - 7 2 15 4 -1. - <_> - 7 3 15 2 2. - <_> - - <_> - 2 10 4 1 -1. - <_> - 3 11 2 1 2. - 1 - <_> - - <_> - 21 11 4 4 -1. - <_> - 21 12 4 2 2. - <_> - - <_> - 1 7 12 8 -1. - <_> - 1 7 6 4 2. - <_> - 7 11 6 4 2. - <_> - - <_> - 7 8 11 6 -1. - <_> - 7 11 11 3 2. - <_> - - <_> - 0 13 2 2 -1. - <_> - 0 14 2 1 2. - <_> - - <_> - 10 3 8 6 -1. - <_> - 12 3 4 6 2. - <_> - - <_> - 7 3 8 6 -1. - <_> - 9 3 4 6 2. - <_> - - <_> - 22 6 3 3 -1. - <_> - 22 7 3 1 3. - <_> - - <_> - 0 5 5 6 -1. - <_> - 0 7 5 2 3. - <_> - - <_> - 8 7 9 6 -1. - <_> - 8 9 9 2 3. - <_> - - <_> - 2 0 20 13 -1. - <_> - 12 0 10 13 2. - <_> - - <_> - 19 3 6 4 -1. - <_> - 22 3 3 2 2. - <_> - 19 5 3 2 2. - <_> - - <_> - 3 8 12 3 -1. - <_> - 9 8 6 3 2. - <_> - - <_> - 22 3 2 5 -1. - <_> - 22 3 1 5 2. - 1 - <_> - - <_> - 6 7 8 8 -1. - <_> - 8 7 4 8 2. - <_> - - <_> - 20 0 3 1 -1. - <_> - 21 1 1 1 3. - 1 - <_> - - <_> - 5 0 1 3 -1. - <_> - 4 1 1 1 3. - 1 - <_> - - <_> - 22 11 1 3 -1. - <_> - 21 12 1 1 3. - 1 - <_> - - <_> - 1 4 4 3 -1. - <_> - 3 4 2 3 2. - <_> - - <_> - 19 4 6 8 -1. - <_> - 22 4 3 4 2. - <_> - 19 8 3 4 2. - <_> - - <_> - 0 4 8 8 -1. - <_> - 0 4 4 4 2. - <_> - 4 8 4 4 2. - <_> - - <_> - 22 11 1 3 -1. - <_> - 21 12 1 1 3. - 1 - <_> - - <_> - 0 1 24 14 -1. - <_> - 0 1 12 7 2. - <_> - 12 8 12 7 2. - <_> - - <_> - 23 8 2 4 -1. - <_> - 23 9 2 2 2. - <_> - - <_> - 5 3 15 4 -1. - <_> - 5 4 15 2 2. - <_> - - <_> - 8 1 9 3 -1. - <_> - 8 2 9 1 3. - <_> - - <_> - 0 8 2 4 -1. - <_> - 0 9 2 2 2. - <_> - - <_> - 18 10 7 2 -1. - <_> - 18 11 7 1 2. - <_> - - <_> - 6 11 12 4 -1. - <_> - 6 12 12 2 2. - <_> - - <_> - 14 0 6 15 -1. - <_> - 16 0 2 15 3. - <_> - - <_> - 0 10 7 2 -1. - <_> - 0 11 7 1 2. - <_> - - <_> - 15 5 6 6 -1. - <_> - 18 5 3 3 2. - <_> - 15 8 3 3 2. - <_> - - <_> - 5 0 6 15 -1. - <_> - 7 0 2 15 3. - <_> - - <_> - 8 7 9 4 -1. - <_> - 8 8 9 2 2. - <_> - - <_> - 7 6 10 6 -1. - <_> - 7 8 10 2 3. - <_> - - <_> - 19 11 1 3 -1. - <_> - 18 12 1 1 3. - 1 - <_> - - <_> - 6 11 3 1 -1. - <_> - 7 12 1 1 3. - 1 - <_> - - <_> - 16 10 4 1 -1. - <_> - 16 10 2 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 8 1 9 3 -1. - <_> - 8 2 9 1 3. - <_> - - <_> - 0 6 5 3 -1. - <_> - 0 7 5 1 3. - <_> - - <_> - 21 8 1 4 -1. - <_> - 20 9 1 2 2. - 1 - <_> - - <_> - 5 1 15 6 -1. - <_> - 5 3 15 2 3. - <_> - - <_> - 23 0 2 2 -1. - <_> - 24 0 1 1 2. - <_> - 23 1 1 1 2. - <_> - - <_> - 3 3 15 6 -1. - <_> - 3 5 15 2 3. - <_> - - <_> - 19 0 6 9 -1. - <_> - 19 3 6 3 3. - <_> - - <_> - 5 2 15 6 -1. - <_> - 5 4 15 2 3. - <_> - - <_> - 17 3 8 3 -1. - <_> - 17 4 8 1 3. - <_> - - <_> - 4 3 8 4 -1. - <_> - 4 3 8 2 2. - 1 - <_> - - <_> - 16 4 6 2 -1. - <_> - 16 5 6 1 2. - <_> - - <_> - 0 0 24 12 -1. - <_> - 0 0 12 6 2. - <_> - 12 6 12 6 2. - <_> - - <_> - 22 10 3 2 -1. - <_> - 22 10 3 1 2. - 1 - <_> - - <_> - 6 3 6 6 -1. - <_> - 4 5 6 2 3. - 1 - <_> - - <_> - 14 4 9 1 -1. - <_> - 17 7 3 1 3. - 1 - <_> - - <_> - 3 10 2 3 -1. - <_> - 3 10 1 3 2. - 1 - <_> - - <_> - 20 8 5 2 -1. - <_> - 20 8 5 1 2. - 1 - <_> - - <_> - 0 9 16 6 -1. - <_> - 0 9 8 3 2. - <_> - 8 12 8 3 2. - <_> - - <_> - 6 2 13 3 -1. - <_> - 6 3 13 1 3. - <_> - - <_> - 0 1 3 4 -1. - <_> - 0 3 3 2 2. - <_> - - <_> - 8 0 9 12 -1. - <_> - 8 6 9 6 2. - <_> - - <_> - 4 0 1 2 -1. - <_> - 4 0 1 1 2. - 1 - <_> - - <_> - 5 3 15 3 -1. - <_> - 5 4 15 1 3. - <_> - - <_> - 3 10 2 3 -1. - <_> - 3 10 1 3 2. - 1 - <_> - - <_> - 19 4 6 4 -1. - <_> - 22 4 3 2 2. - <_> - 19 6 3 2 2. - <_> - - <_> - 0 3 8 4 -1. - <_> - 0 3 4 2 2. - <_> - 4 5 4 2 2. - <_> - - <_> - 19 10 5 3 -1. - <_> - 19 11 5 1 3. - <_> - - <_> - 1 10 5 3 -1. - <_> - 1 11 5 1 3. - <_> - - <_> - 12 1 13 14 -1. - <_> - 12 8 13 7 2. - <_> - - <_> - 0 1 13 14 -1. - <_> - 0 8 13 7 2. - <_> - - <_> - 11 3 6 12 -1. - <_> - 14 3 3 6 2. - <_> - 11 9 3 6 2. - <_> - - <_> - 9 5 6 10 -1. - <_> - 9 5 3 5 2. - <_> - 12 10 3 5 2. - <_> - - <_> - 20 8 5 4 -1. - <_> - 20 9 5 2 2. - <_> - - <_> - 0 8 5 4 -1. - <_> - 0 9 5 2 2. - <_> - - <_> - 8 9 9 3 -1. - <_> - 8 10 9 1 3. - <_> - - <_> - 7 10 6 4 -1. - <_> - 9 10 2 4 3. - <_> - - <_> - 6 6 14 4 -1. - <_> - 6 7 14 2 2. - <_> - - <_> - 9 6 5 4 -1. - <_> - 9 7 5 2 2. - <_> - - <_> - 22 5 3 6 -1. - <_> - 22 7 3 2 3. - <_> - - <_> - 0 5 3 6 -1. - <_> - 0 7 3 2 3. - <_> - - <_> - 17 1 5 4 -1. - <_> - 17 2 5 2 2. - <_> - - <_> - 3 1 6 4 -1. - <_> - 3 2 6 2 2. - <_> - - <_> - 21 14 4 1 -1. - <_> - 21 14 2 1 2. - <_> - - <_> - 4 8 3 2 -1. - <_> - 5 9 1 2 3. - 1 - <_> - - <_> - 14 2 4 7 -1. - <_> - 14 2 2 7 2. - <_> - - <_> - 7 2 4 7 -1. - <_> - 9 2 2 7 2. - <_> - - <_> - 9 3 8 5 -1. - <_> - 11 3 4 5 2. - <_> - - <_> - 5 10 15 1 -1. - <_> - 10 10 5 1 3. - <_> - - <_> - 2 6 21 9 -1. - <_> - 9 6 7 9 3. - <_> - - <_> - 0 4 6 6 -1. - <_> - 0 6 6 2 3. - <_> - - <_> - 1 12 24 3 -1. - <_> - 7 12 12 3 2. - <_> - - <_> - 6 7 6 2 -1. - <_> - 6 8 6 1 2. - <_> - - <_> - 13 8 2 4 -1. - <_> - 13 8 2 2 2. - 1 - <_> - - <_> - 8 6 8 5 -1. - <_> - 10 6 4 5 2. - <_> - - <_> - 11 5 6 4 -1. - <_> - 11 6 6 2 2. - <_> - - <_> - 0 14 4 1 -1. - <_> - 2 14 2 1 2. - <_> - - <_> - 16 2 4 13 -1. - <_> - 17 2 2 13 2. - <_> - - <_> - 0 7 1 4 -1. - <_> - 0 8 1 2 2. - <_> - - <_> - 24 0 1 2 -1. - <_> - 24 1 1 1 2. - <_> - - <_> - 0 5 2 4 -1. - <_> - 1 5 1 4 2. - <_> - - <_> - 0 1 8 4 -1. - <_> - 0 3 8 2 2. - <_> - - <_> - 15 11 10 4 -1. - <_> - 20 11 5 2 2. - <_> - 15 13 5 2 2. - <_> - - <_> - 7 5 11 3 -1. - <_> - 7 6 11 1 3. - <_> - - <_> - 21 4 4 3 -1. - <_> - 21 4 2 3 2. - <_> - - <_> - 0 5 4 1 -1. - <_> - 2 5 2 1 2. - <_> - - <_> - 7 3 12 4 -1. - <_> - 7 4 12 2 2. - <_> - - <_> - 8 6 7 3 -1. - <_> - 8 7 7 1 3. - <_> - - <_> - 16 0 9 14 -1. - <_> - 16 7 9 7 2. - <_> - - <_> - 0 0 24 6 -1. - <_> - 0 0 12 3 2. - <_> - 12 3 12 3 2. - <_> - - <_> - 23 13 2 1 -1. - <_> - 23 13 1 1 2. - <_> - - <_> - 0 13 24 2 -1. - <_> - 0 13 12 1 2. - <_> - 12 14 12 1 2. - <_> - - <_> - 19 12 5 3 -1. - <_> - 19 13 5 1 3. - <_> - - <_> - 9 7 7 4 -1. - <_> - 9 8 7 2 2. - <_> - - <_> - 14 0 4 7 -1. - <_> - 14 0 2 7 2. - 1 - <_> - - <_> - 11 0 7 4 -1. - <_> - 11 0 7 2 2. - 1 - <_> - - <_> - 9 4 14 2 -1. - <_> - 9 5 14 1 2. - <_> - - <_> - 3 2 15 4 -1. - <_> - 3 3 15 2 2. - <_> - - <_> - 19 12 5 3 -1. - <_> - 19 13 5 1 3. - <_> - - <_> - 0 11 8 4 -1. - <_> - 0 11 4 2 2. - <_> - 4 13 4 2 2. - <_> - - <_> - 7 9 11 6 -1. - <_> - 7 11 11 2 3. - <_> - - <_> - 0 11 7 4 -1. - <_> - 0 12 7 2 2. - <_> - - <_> - 20 0 5 2 -1. - <_> - 20 1 5 1 2. - <_> - - <_> - 5 10 3 2 -1. - <_> - 6 11 1 2 3. - 1 - <_> - - <_> - 17 4 8 10 -1. - <_> - 21 4 4 5 2. - <_> - 17 9 4 5 2. - <_> - - <_> - 5 3 15 2 -1. - <_> - 5 4 15 1 2. - <_> - - <_> - 16 4 5 2 -1. - <_> - 16 5 5 1 2. - <_> - - <_> - 1 0 22 10 -1. - <_> - 1 0 11 5 2. - <_> - 12 5 11 5 2. - <_> - - <_> - 20 0 5 2 -1. - <_> - 20 1 5 1 2. - <_> - - <_> - 0 0 5 2 -1. - <_> - 0 1 5 1 2. - <_> - - <_> - 10 1 6 12 -1. - <_> - 13 1 3 6 2. - <_> - 10 7 3 6 2. - <_> - - <_> - 0 0 1 8 -1. - <_> - 0 4 1 4 2. - <_> - - <_> - 6 0 13 6 -1. - <_> - 6 2 13 2 3. - <_> - - <_> - 4 3 4 4 -1. - <_> - 3 4 4 2 2. - 1 - <_> - - <_> - 20 8 5 3 -1. - <_> - 20 9 5 1 3. - <_> - - <_> - 7 13 2 2 -1. - <_> - 7 13 1 1 2. - <_> - 8 14 1 1 2. - <_> - - <_> - 16 13 2 2 -1. - <_> - 17 13 1 1 2. - <_> - 16 14 1 1 2. - <_> - - <_> - 7 13 2 2 -1. - <_> - 7 13 1 1 2. - <_> - 8 14 1 1 2. - <_> - - <_> - 19 5 6 1 -1. - <_> - 21 5 2 1 3. - <_> - - <_> - 0 8 6 6 -1. - <_> - 0 10 6 2 3. - <_> - - <_> - 6 8 13 4 -1. - <_> - 6 9 13 2 2. - <_> - - <_> - 3 10 8 1 -1. - <_> - 7 10 4 1 2. - <_> - - <_> - 16 11 4 4 -1. - <_> - 17 11 2 4 2. - <_> - - <_> - 5 6 15 2 -1. - <_> - 5 7 15 1 2. - <_> - - <_> - 3 1 20 10 -1. - <_> - 3 1 10 10 2. - <_> - - <_> - 2 4 3 3 -1. - <_> - 2 5 3 1 3. - <_> - - <_> - 16 11 4 4 -1. - <_> - 17 11 2 4 2. - <_> - - <_> - 5 11 4 4 -1. - <_> - 6 11 2 4 2. - <_> - - <_> - 17 4 8 10 -1. - <_> - 21 4 4 5 2. - <_> - 17 9 4 5 2. - <_> - - <_> - 0 8 5 3 -1. - <_> - 0 9 5 1 3. - <_> - - <_> - 23 13 2 1 -1. - <_> - 23 13 1 1 2. - <_> - - <_> - 0 13 2 1 -1. - <_> - 1 13 1 1 2. - <_> - - <_> - 10 1 7 3 -1. - <_> - 10 2 7 1 3. - <_> - - <_> - 0 3 8 12 -1. - <_> - 0 3 4 6 2. - <_> - 4 9 4 6 2. - <_> - - <_> - 6 0 16 11 -1. - <_> - 6 0 8 11 2. - <_> - - <_> - 2 0 21 3 -1. - <_> - 9 0 7 3 3. - <_> - - <_> - 23 1 2 12 -1. - <_> - 23 1 2 6 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 15 0 6 3 -1. - <_> - 17 0 2 3 3. - <_> - - <_> - 8 9 6 4 -1. - <_> - 10 9 2 4 3. - <_> - - <_> - 20 5 5 6 -1. - <_> - 20 7 5 2 3. - <_> - - <_> - 0 4 24 8 -1. - <_> - 0 4 12 4 2. - <_> - 12 8 12 4 2. - <_> - - <_> - 22 10 1 4 -1. - <_> - 21 11 1 2 2. - 1 - <_> - - <_> - 7 0 11 3 -1. - <_> - 7 1 11 1 3. - <_> - - <_> - 6 0 13 4 -1. - <_> - 6 1 13 2 2. - <_> - - <_> - 7 11 11 4 -1. - <_> - 7 13 11 2 2. - <_> - - <_> - 21 3 4 12 -1. - <_> - 23 3 2 6 2. - <_> - 21 9 2 6 2. - <_> - - <_> - 2 4 21 6 -1. - <_> - 9 6 7 2 9. - <_> - - <_> - 23 3 2 10 -1. - <_> - 24 3 1 5 2. - <_> - 23 8 1 5 2. - <_> - - <_> - 0 3 2 10 -1. - <_> - 0 3 1 5 2. - <_> - 1 8 1 5 2. - <_> - - <_> - 24 10 1 4 -1. - <_> - 23 11 1 2 2. - 1 - <_> - - <_> - 1 10 4 1 -1. - <_> - 2 11 2 1 2. - 1 - <_> - - <_> - 8 10 9 4 -1. - <_> - 8 11 9 2 2. - <_> - - <_> - 5 8 13 6 -1. - <_> - 5 11 13 3 2. - <_> - - <_> - 5 0 15 4 -1. - <_> - 5 2 15 2 2. - <_> - - <_> - 1 0 22 15 -1. - <_> - 12 0 11 15 2. - <_> - - <_> - 10 14 8 1 -1. - <_> - 12 14 4 1 2. - <_> - - <_> - 1 3 8 4 -1. - <_> - 1 4 8 2 2. - <_> - - <_> - 15 13 1 2 -1. - <_> - 15 14 1 1 2. - <_> - - <_> - 5 2 15 6 -1. - <_> - 5 4 15 2 3. - <_> - - <_> - 23 12 2 1 -1. - <_> - 23 12 1 1 2. - 1 - <_> - - <_> - 2 12 1 2 -1. - <_> - 2 12 1 1 2. - 1 - <_> - - <_> - 8 13 9 2 -1. - <_> - 11 13 3 2 3. - <_> - - <_> - 8 0 8 2 -1. - <_> - 8 1 8 1 2. - <_> - - <_> - 20 12 4 3 -1. - <_> - 20 13 4 1 3. - <_> - - <_> - 3 0 18 10 -1. - <_> - 3 0 9 5 2. - <_> - 12 5 9 5 2. - <_> - - <_> - 10 12 6 3 -1. - <_> - 12 12 2 3 3. - <_> - - <_> - 0 0 1 8 -1. - <_> - 0 2 1 4 2. - <_> - - <_> - 22 5 3 4 -1. - <_> - 22 6 3 2 2. - <_> - - <_> - 0 5 4 4 -1. - <_> - 0 6 4 2 2. - <_> - - <_> - 6 0 14 10 -1. - <_> - 13 0 7 5 2. - <_> - 6 5 7 5 2. - <_> - - <_> - 1 12 4 3 -1. - <_> - 1 13 4 1 3. - <_> - - <_> - 20 7 2 2 -1. - <_> - 21 7 1 1 2. - <_> - 20 8 1 1 2. - <_> - - <_> - 3 7 2 2 -1. - <_> - 3 7 1 1 2. - <_> - 4 8 1 1 2. - <_> - - <_> - 22 6 3 4 -1. - <_> - 22 7 3 2 2. - <_> - - <_> - 9 6 7 3 -1. - <_> - 9 7 7 1 3. - <_> - - <_> - 11 6 4 2 -1. - <_> - 11 7 4 1 2. - <_> - - <_> - 0 6 5 4 -1. - <_> - 0 7 5 2 2. - <_> - - <_> - 5 3 15 6 -1. - <_> - 5 5 15 2 3. - <_> - - <_> - 4 4 5 2 -1. - <_> - 4 5 5 1 2. - <_> - - <_> - 11 12 6 3 -1. - <_> - 13 12 2 3 3. - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 7 11 12 2 -1. - <_> - 11 11 4 2 3. - <_> - - <_> - 0 8 4 4 -1. - <_> - 0 9 4 2 2. - <_> - - <_> - 8 7 9 3 -1. - <_> - 8 8 9 1 3. - <_> - - <_> - 8 8 9 6 -1. - <_> - 8 10 9 2 3. - <_> - - <_> - 20 11 5 4 -1. - <_> - 20 12 5 2 2. - <_> - - <_> - 7 5 8 3 -1. - <_> - 9 5 4 3 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 0 11 5 4 -1. - <_> - 0 12 5 2 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 5 9 6 6 -1. - <_> - 7 9 2 6 3. - <_> - - <_> - 14 10 10 4 -1. - <_> - 19 10 5 2 2. - <_> - 14 12 5 2 2. - <_> - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - <_> - - <_> - 16 6 3 2 -1. - <_> - 17 6 1 2 3. - <_> - - <_> - 6 6 3 2 -1. - <_> - 7 6 1 2 3. - <_> - - <_> - 13 3 8 4 -1. - <_> - 12 4 8 2 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 21 0 2 1 -1. - <_> - 21 0 1 1 2. - 1 - <_> - - <_> - 4 0 1 2 -1. - <_> - 4 0 1 1 2. - 1 - <_> - - <_> - 13 1 8 6 -1. - <_> - 11 3 8 2 3. - 1 - <_> - - <_> - 12 3 4 8 -1. - <_> - 13 4 2 8 2. - 1 - <_> - - <_> - 3 0 20 15 -1. - <_> - 3 0 10 15 2. - <_> - - <_> - 9 0 7 3 -1. - <_> - 9 1 7 1 3. - <_> - - <_> - 12 1 5 2 -1. - <_> - 12 2 5 1 2. - <_> - - <_> - 6 1 13 3 -1. - <_> - 6 2 13 1 3. - <_> - - <_> - 14 3 10 12 -1. - <_> - 19 3 5 6 2. - <_> - 14 9 5 6 2. - <_> - - <_> - 1 6 21 6 -1. - <_> - 8 6 7 6 3. - <_> - - <_> - 12 0 10 12 -1. - <_> - 12 0 5 12 2. - <_> - - <_> - 7 8 11 3 -1. - <_> - 7 9 11 1 3. - <_> - - <_> - 2 5 22 10 -1. - <_> - 2 5 11 10 2. - <_> - - <_> - 5 4 15 4 -1. - <_> - 5 6 15 2 2. - <_> - - <_> - 7 1 15 6 -1. - <_> - 7 3 15 2 3. - <_> - - <_> - 0 8 2 6 -1. - <_> - 0 10 2 2 3. - <_> - - <_> - 5 1 15 4 -1. - <_> - 5 2 15 2 2. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 11 9 9 2 -1. - <_> - 14 9 3 2 3. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 17 10 8 4 -1. - <_> - 17 11 8 2 2. - <_> - - <_> - 0 10 8 4 -1. - <_> - 0 11 8 2 2. - <_> - - <_> - 16 11 6 4 -1. - <_> - 18 11 2 4 3. - <_> - - <_> - 0 13 24 1 -1. - <_> - 6 13 12 1 2. - <_> - - <_> - 0 9 10 6 -1. - <_> - 0 9 5 3 2. - <_> - 5 12 5 3 2. - <_> - - <_> - 13 5 10 10 -1. - <_> - 18 5 5 5 2. - <_> - 13 10 5 5 2. - <_> - - <_> - 0 4 4 2 -1. - <_> - 2 4 2 2 2. - <_> - - <_> - 13 5 12 10 -1. - <_> - 19 5 6 5 2. - <_> - 13 10 6 5 2. - <_> - - <_> - 0 5 12 10 -1. - <_> - 0 5 6 5 2. - <_> - 6 10 6 5 2. - <_> - - <_> - 11 11 3 4 -1. - <_> - 11 13 3 2 2. - <_> - - <_> - 5 8 2 5 -1. - <_> - 5 8 1 5 2. - 1 - <_> - - <_> - 4 14 18 1 -1. - <_> - 4 14 9 1 2. - <_> - - <_> - 1 0 1 6 -1. - <_> - 1 3 1 3 2. - <_> - - <_> - 8 9 9 4 -1. - <_> - 8 10 9 2 2. - <_> - - <_> - 0 9 5 4 -1. - <_> - 0 10 5 2 2. - <_> - - <_> - 19 5 6 2 -1. - <_> - 21 5 2 2 3. - <_> - - <_> - 0 5 6 2 -1. - <_> - 2 5 2 2 3. - <_> - - <_> - 13 9 6 3 -1. - <_> - 15 9 2 3 3. - <_> - - <_> - 2 3 21 9 -1. - <_> - 9 3 7 9 3. - <_> - - <_> - 11 9 10 2 -1. - <_> - 11 9 5 2 2. - <_> - - <_> - 0 0 24 14 -1. - <_> - 0 0 12 7 2. - <_> - 12 7 12 7 2. - <_> - - <_> - 5 2 15 6 -1. - <_> - 5 4 15 2 3. - <_> - - <_> - 2 0 16 11 -1. - <_> - 10 0 8 11 2. - <_> - - <_> - 5 0 15 6 -1. - <_> - 5 2 15 2 3. - <_> - - <_> - 10 5 5 4 -1. - <_> - 10 6 5 2 2. - <_> - - <_> - 23 0 2 3 -1. - <_> - 23 1 2 1 3. - <_> - - <_> - 0 0 6 3 -1. - <_> - 0 1 6 1 3. - <_> - - <_> - 10 5 15 2 -1. - <_> - 10 6 15 1 2. - <_> - - <_> - 0 4 6 4 -1. - <_> - 0 4 3 2 2. - <_> - 3 6 3 2 2. - <_> - - <_> - 21 7 2 4 -1. - <_> - 20 8 2 2 2. - 1 - <_> - - <_> - 4 7 4 2 -1. - <_> - 5 8 2 2 2. - 1 - <_> - - <_> - 24 13 1 2 -1. - <_> - 24 14 1 1 2. - <_> - - <_> - 2 0 4 15 -1. - <_> - 3 0 2 15 2. - <_> - - <_> - 21 0 4 1 -1. - <_> - 22 1 2 1 2. - 1 - <_> - - <_> - 4 0 1 4 -1. - <_> - 3 1 1 2 2. - 1 - <_> - - <_> - 1 1 24 14 -1. - <_> - 13 1 12 7 2. - <_> - 1 8 12 7 2. - <_> - - <_> - 6 9 6 6 -1. - <_> - 8 9 2 6 3. - <_> - - <_> - 5 3 15 4 -1. - <_> - 10 3 5 4 3. - <_> - - <_> - 0 0 20 10 -1. - <_> - 5 0 10 10 2. - <_> - - <_> - 19 3 6 12 -1. - <_> - 22 3 3 6 2. - <_> - 19 9 3 6 2. - <_> - - <_> - 3 2 7 2 -1. - <_> - 3 3 7 1 2. - <_> - - <_> - 19 3 6 12 -1. - <_> - 22 3 3 6 2. - <_> - 19 9 3 6 2. - <_> - - <_> - 0 3 6 12 -1. - <_> - 0 3 3 6 2. - <_> - 3 9 3 6 2. - <_> - - <_> - 19 14 6 1 -1. - <_> - 19 14 3 1 2. - <_> - - <_> - 4 2 6 13 -1. - <_> - 6 2 2 13 3. - <_> - - <_> - 17 14 8 1 -1. - <_> - 19 14 4 1 2. - <_> - - <_> - 0 14 8 1 -1. - <_> - 2 14 4 1 2. - <_> - - <_> - 23 11 2 2 -1. - <_> - 23 11 2 1 2. - 1 - <_> - - <_> - 2 11 2 2 -1. - <_> - 2 11 1 2 2. - 1 - <_> - - <_> - 8 4 9 4 -1. - <_> - 8 5 9 2 2. - <_> - - <_> - 8 4 9 3 -1. - <_> - 8 5 9 1 3. - <_> - - <_> - 22 6 2 4 -1. - <_> - 23 6 1 2 2. - <_> - 22 8 1 2 2. - <_> - - <_> - 7 3 6 8 -1. - <_> - 9 3 2 8 3. - <_> - - <_> - 22 4 3 4 -1. - <_> - 22 5 3 2 2. - <_> - - <_> - 3 9 4 2 -1. - <_> - 4 10 2 2 2. - 1 - <_> - - <_> - 17 7 2 2 -1. - <_> - 18 7 1 1 2. - <_> - 17 8 1 1 2. - <_> - - <_> - 9 11 6 1 -1. - <_> - 11 11 2 1 3. - <_> - - <_> - 17 7 2 2 -1. - <_> - 18 7 1 1 2. - <_> - 17 8 1 1 2. - <_> - - <_> - 0 7 2 4 -1. - <_> - 0 8 2 2 2. - <_> - - <_> - 20 5 5 6 -1. - <_> - 20 7 5 2 3. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 17 7 2 2 -1. - <_> - 18 7 1 1 2. - <_> - 17 8 1 1 2. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 15 0 4 9 -1. - <_> - 16 0 2 9 2. - <_> - - <_> - 5 1 14 14 -1. - <_> - 5 1 7 7 2. - <_> - 12 8 7 7 2. - <_> - - <_> - 15 0 4 9 -1. - <_> - 16 0 2 9 2. - <_> - - <_> - 0 7 5 3 -1. - <_> - 0 8 5 1 3. - <_> - - <_> - 21 2 3 4 -1. - <_> - 22 3 1 4 3. - 1 - <_> - - <_> - 6 0 4 15 -1. - <_> - 7 0 2 15 2. - <_> - - <_> - 21 2 3 4 -1. - <_> - 22 3 1 4 3. - 1 - <_> - - <_> - 4 2 4 3 -1. - <_> - 3 3 4 1 3. - 1 - <_> - - <_> - 13 5 3 7 -1. - <_> - 14 6 1 7 3. - 1 - <_> - - <_> - 4 10 15 1 -1. - <_> - 9 10 5 1 3. - <_> - - <_> - 12 6 10 9 -1. - <_> - 12 6 5 9 2. - <_> - - <_> - 1 1 22 14 -1. - <_> - 12 1 11 14 2. - <_> - - <_> - 11 8 3 2 -1. - <_> - 11 9 3 1 2. - <_> - - <_> - 2 5 11 2 -1. - <_> - 2 6 11 1 2. - <_> - - <_> - 4 1 10 4 -1. - <_> - 3 2 10 2 2. - 1 - <_> - - <_> - 5 1 15 6 -1. - <_> - 5 3 15 2 3. - <_> - - <_> - 0 9 6 6 -1. - <_> - 0 9 3 3 2. - <_> - 3 12 3 3 2. - <_> - - <_> - 19 3 5 2 -1. - <_> - 19 4 5 1 2. - <_> - - <_> - 2 10 14 4 -1. - <_> - 2 10 7 2 2. - <_> - 9 12 7 2 2. - <_> - - <_> - 1 3 24 8 -1. - <_> - 9 3 8 8 3. - <_> - - <_> - 0 8 2 6 -1. - <_> - 0 10 2 2 3. - <_> - - <_> - 23 14 2 1 -1. - <_> - 23 14 1 1 2. - <_> - - <_> - 0 4 6 4 -1. - <_> - 0 4 3 2 2. - <_> - 3 6 3 2 2. - <_> - - <_> - 3 13 21 1 -1. - <_> - 10 13 7 1 3. - <_> - - <_> - 0 0 24 14 -1. - <_> - 0 0 12 7 2. - <_> - 12 7 12 7 2. - <_> - - <_> - 24 0 1 10 -1. - <_> - 24 5 1 5 2. - <_> - - <_> - 4 11 2 2 -1. - <_> - 4 11 1 2 2. - 1 - <_> - - <_> - 23 14 2 1 -1. - <_> - 23 14 1 1 2. - <_> - - <_> - 0 14 2 1 -1. - <_> - 1 14 1 1 2. - <_> - - <_> - 7 2 11 6 -1. - <_> - 7 4 11 2 3. - <_> - - <_> - 2 2 2 2 -1. - <_> - 2 2 1 2 2. - 1 - <_> - - <_> - 24 0 1 10 -1. - <_> - 24 5 1 5 2. - <_> - - <_> - 0 0 1 10 -1. - <_> - 0 5 1 5 2. - <_> - - <_> - 12 11 6 2 -1. - <_> - 14 11 2 2 3. - <_> - - <_> - 2 0 20 2 -1. - <_> - 7 0 10 2 2. - <_> - - <_> - 10 0 10 4 -1. - <_> - 10 0 5 4 2. - <_> - - <_> - 0 0 20 1 -1. - <_> - 10 0 10 1 2. - <_> - - <_> - 8 4 10 3 -1. - <_> - 8 5 10 1 3. - <_> - - <_> - 9 6 7 6 -1. - <_> - 9 8 7 2 3. - <_> - - <_> - 8 5 9 3 -1. - <_> - 8 6 9 1 3. - <_> - - <_> - 6 0 1 3 -1. - <_> - 5 1 1 1 3. - 1 - <_> - - <_> - 24 0 1 4 -1. - <_> - 24 2 1 2 2. - <_> - - <_> - 9 10 2 1 -1. - <_> - 10 10 1 1 2. - <_> - - <_> - 22 10 1 4 -1. - <_> - 21 11 1 2 2. - 1 - <_> - - <_> - 4 0 6 5 -1. - <_> - 6 0 2 5 3. - <_> - - <_> - 17 3 8 12 -1. - <_> - 21 3 4 6 2. - <_> - 17 9 4 6 2. - <_> - - <_> - 0 3 8 12 -1. - <_> - 0 3 4 6 2. - <_> - 4 9 4 6 2. - <_> - - <_> - 10 3 6 10 -1. - <_> - 13 3 3 5 2. - <_> - 10 8 3 5 2. - <_> - - <_> - 3 10 4 1 -1. - <_> - 4 11 2 1 2. - 1 - <_> - - <_> - 16 2 9 4 -1. - <_> - 16 2 9 2 2. - 1 - <_> - - <_> - 9 2 4 9 -1. - <_> - 9 2 2 9 2. - 1 - <_> - - <_> - 20 9 3 3 -1. - <_> - 20 10 3 1 3. - <_> - - <_> - 6 1 13 4 -1. - <_> - 6 2 13 2 2. - <_> - - <_> - 10 4 5 4 -1. - <_> - 10 5 5 2 2. - <_> - - <_> - 0 5 3 3 -1. - <_> - 0 6 3 1 3. - <_> - - <_> - 21 5 4 4 -1. - <_> - 21 6 4 2 2. - <_> - - <_> - 0 5 4 4 -1. - <_> - 0 6 4 2 2. - <_> - - <_> - 8 9 9 6 -1. - <_> - 8 11 9 2 3. - <_> - - <_> - 4 11 3 1 -1. - <_> - 5 12 1 1 3. - 1 - <_> - - <_> - 23 14 2 1 -1. - <_> - 23 14 1 1 2. - <_> - - <_> - 0 14 2 1 -1. - <_> - 1 14 1 1 2. - <_> - - <_> - 11 1 4 14 -1. - <_> - 11 8 4 7 2. - <_> - - <_> - 4 0 2 3 -1. - <_> - 3 1 2 1 3. - 1 - <_> - - <_> - 24 12 1 2 -1. - <_> - 24 13 1 1 2. - <_> - - <_> - 0 1 14 14 -1. - <_> - 0 8 14 7 2. - <_> - - <_> - 13 0 6 15 -1. - <_> - 15 0 2 15 3. - <_> - - <_> - 0 1 1 4 -1. - <_> - 0 3 1 2 2. - <_> - - <_> - 24 13 1 2 -1. - <_> - 24 14 1 1 2. - <_> - - <_> - 0 13 1 2 -1. - <_> - 0 14 1 1 2. - <_> - - <_> - 23 11 2 4 -1. - <_> - 23 12 2 2 2. - <_> - - <_> - 0 11 2 4 -1. - <_> - 0 12 2 2 2. - <_> - - <_> - 16 10 2 2 -1. - <_> - 17 10 1 1 2. - <_> - 16 11 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 1 0 24 6 -1. - <_> - 13 0 12 3 2. - <_> - 1 3 12 3 2. - <_> - - <_> - 6 1 6 12 -1. - <_> - 8 1 2 12 3. - <_> - - <_> - 19 6 6 3 -1. - <_> - 19 7 6 1 3. - <_> - - <_> - 5 6 7 2 -1. - <_> - 5 7 7 1 2. - <_> - - <_> - 9 6 7 4 -1. - <_> - 9 7 7 2 2. - <_> - - <_> - 0 6 6 3 -1. - <_> - 0 7 6 1 3. - <_> - - <_> - 6 8 13 4 -1. - <_> - 6 9 13 2 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 12 11 6 2 -1. - <_> - 14 11 2 2 3. - <_> - - <_> - 6 0 12 10 -1. - <_> - 6 0 6 5 2. - <_> - 12 5 6 5 2. - <_> - - <_> - 12 11 6 2 -1. - <_> - 14 11 2 2 3. - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 12 11 6 2 -1. - <_> - 14 11 2 2 3. - <_> - - <_> - 7 11 6 2 -1. - <_> - 9 11 2 2 3. - <_> - - <_> - 5 12 18 3 -1. - <_> - 11 12 6 3 3. - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 21 4 4 2 -1. - <_> - 23 4 2 1 2. - <_> - 21 5 2 1 2. - <_> - - <_> - 9 3 7 3 -1. - <_> - 9 4 7 1 3. - <_> - - <_> - 13 2 8 5 -1. - <_> - 15 4 4 5 2. - 1 - <_> - - <_> - 12 1 6 4 -1. - <_> - 11 2 6 2 2. - 1 - <_> - - <_> - 22 0 2 2 -1. - <_> - 22 1 2 1 2. - <_> - - <_> - 4 1 16 12 -1. - <_> - 12 1 8 12 2. - <_> - - <_> - 3 0 20 10 -1. - <_> - 3 0 10 10 2. - <_> - - <_> - 0 4 6 6 -1. - <_> - 0 4 3 3 2. - <_> - 3 7 3 3 2. - <_> - - <_> - 22 4 3 3 -1. - <_> - 23 5 1 3 3. - 1 - <_> - - <_> - 3 4 3 3 -1. - <_> - 2 5 3 1 3. - 1 - <_> - - <_> - 22 7 3 4 -1. - <_> - 22 8 3 2 2. - <_> - - <_> - 3 1 4 7 -1. - <_> - 4 1 2 7 2. - <_> - - <_> - 22 7 3 4 -1. - <_> - 22 8 3 2 2. - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 18 4 6 2 -1. - <_> - 18 5 6 1 2. - <_> - - <_> - 5 3 15 6 -1. - <_> - 5 5 15 2 3. - <_> - - <_> - 16 4 8 4 -1. - <_> - 16 5 8 2 2. - <_> - - <_> - 0 1 24 10 -1. - <_> - 0 1 12 5 2. - <_> - 12 6 12 5 2. - <_> - - <_> - 14 0 4 7 -1. - <_> - 15 0 2 7 2. - <_> - - <_> - 0 7 3 4 -1. - <_> - 0 8 3 2 2. - <_> - - <_> - 18 5 4 4 -1. - <_> - 20 5 2 2 2. - <_> - 18 7 2 2 2. - <_> - - <_> - 5 5 6 2 -1. - <_> - 5 5 3 1 2. - <_> - 8 6 3 1 2. - <_> - - <_> - 21 9 2 3 -1. - <_> - 21 10 2 1 3. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - <_> - - <_> - 9 7 7 6 -1. - <_> - 9 9 7 2 3. - <_> - - <_> - 17 2 7 2 -1. - <_> - 17 3 7 1 2. - <_> - - <_> - 4 2 9 4 -1. - <_> - 3 3 9 2 2. - 1 - <_> - - <_> - 19 14 6 1 -1. - <_> - 19 14 3 1 2. - <_> - - <_> - 6 9 11 6 -1. - <_> - 6 11 11 2 3. - <_> - - <_> - 17 3 8 12 -1. - <_> - 21 3 4 6 2. - <_> - 17 9 4 6 2. - <_> - - <_> - 0 7 24 8 -1. - <_> - 0 7 12 4 2. - <_> - 12 11 12 4 2. - <_> - - <_> - 5 3 16 12 -1. - <_> - 13 3 8 6 2. - <_> - 5 9 8 6 2. - <_> - - <_> - 0 3 24 6 -1. - <_> - 8 5 8 2 9. - <_> - - <_> - 1 8 24 1 -1. - <_> - 7 8 12 1 2. - <_> - - <_> - 1 9 14 6 -1. - <_> - 1 9 7 3 2. - <_> - 8 12 7 3 2. - <_> - - <_> - 19 5 3 2 -1. - <_> - 19 6 3 1 2. - <_> - - <_> - 0 14 10 1 -1. - <_> - 5 14 5 1 2. - <_> - - <_> - 5 1 15 6 -1. - <_> - 5 3 15 2 3. - <_> - - <_> - 1 1 7 6 -1. - <_> - 1 3 7 2 3. - <_> - - <_> - 15 12 6 3 -1. - <_> - 17 13 2 1 9. - <_> - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - <_> - - <_> - 1 12 24 3 -1. - <_> - 7 12 12 3 2. - <_> - - <_> - 3 12 6 3 -1. - <_> - 5 13 2 1 9. - <_> - - <_> - 1 0 24 12 -1. - <_> - 13 0 12 6 2. - <_> - 1 6 12 6 2. - <_> - - <_> - 2 0 21 15 -1. - <_> - 9 0 7 15 3. - <_> - - <_> - 17 3 6 2 -1. - <_> - 17 4 6 1 2. - <_> - - <_> - 3 3 14 2 -1. - <_> - 3 4 14 1 2. - <_> - - <_> - 4 0 21 4 -1. - <_> - 11 0 7 4 3. - <_> - - <_> - 6 13 4 1 -1. - <_> - 7 13 2 1 2. - <_> - - <_> - 17 3 8 12 -1. - <_> - 21 3 4 6 2. - <_> - 17 9 4 6 2. - <_> - - <_> - 0 3 8 12 -1. - <_> - 0 3 4 6 2. - <_> - 4 9 4 6 2. - <_> - - <_> - 5 0 16 8 -1. - <_> - 13 0 8 4 2. - <_> - 5 4 8 4 2. - <_> - - <_> - 3 7 4 2 -1. - <_> - 4 8 2 2 2. - 1 - <_> - - <_> - 5 11 15 4 -1. - <_> - 5 12 15 2 2. - <_> - - <_> - 10 13 1 2 -1. - <_> - 10 14 1 1 2. - <_> - - <_> - 12 14 6 1 -1. - <_> - 14 14 2 1 3. - <_> - - <_> - 9 5 6 4 -1. - <_> - 9 6 6 2 2. - <_> - - <_> - 12 5 13 2 -1. - <_> - 12 6 13 1 2. - <_> - - <_> - 5 0 15 6 -1. - <_> - 5 2 15 2 3. - <_> - - <_> - 3 0 20 15 -1. - <_> - 3 0 10 15 2. - <_> - - <_> - 1 1 22 14 -1. - <_> - 12 1 11 14 2. - <_> - - <_> - 15 5 10 2 -1. - <_> - 15 6 10 1 2. - <_> - - <_> - 0 5 13 2 -1. - <_> - 0 6 13 1 2. - <_> - - <_> - 5 2 15 4 -1. - <_> - 5 3 15 2 2. - <_> - - <_> - 5 4 15 3 -1. - <_> - 5 5 15 1 3. - <_> - - <_> - 21 11 4 4 -1. - <_> - 21 12 4 2 2. - <_> - - <_> - 5 0 1 2 -1. - <_> - 5 0 1 1 2. - 1 - <_> - - <_> - 23 3 2 4 -1. - <_> - 23 3 1 4 2. - <_> - - <_> - 7 1 4 6 -1. - <_> - 8 1 2 6 2. - <_> - - <_> - 8 6 11 3 -1. - <_> - 8 7 11 1 3. - <_> - - <_> - 0 13 2 1 -1. - <_> - 1 13 1 1 2. - <_> - - <_> - 21 12 3 3 -1. - <_> - 21 13 3 1 3. - <_> - - <_> - 1 12 3 3 -1. - <_> - 1 13 3 1 3. - <_> - - <_> - 23 3 2 4 -1. - <_> - 23 3 1 4 2. - <_> - - <_> - 0 3 2 4 -1. - <_> - 1 3 1 4 2. - <_> - - <_> - 21 3 4 10 -1. - <_> - 23 3 2 5 2. - <_> - 21 8 2 5 2. - <_> - - <_> - 0 3 4 10 -1. - <_> - 0 3 2 5 2. - <_> - 2 8 2 5 2. - <_> - - <_> - 24 1 1 4 -1. - <_> - 24 2 1 2 2. - <_> - - <_> - 0 0 1 6 -1. - <_> - 0 2 1 2 3. - <_> - - <_> - 16 1 4 4 -1. - <_> - 17 1 2 4 2. - <_> - - <_> - 5 1 4 4 -1. - <_> - 6 1 2 4 2. - <_> - - <_> - 15 2 10 12 -1. - <_> - 15 8 10 6 2. - <_> - - <_> - 8 5 9 3 -1. - <_> - 8 6 9 1 3. - <_> - - <_> - 6 7 14 2 -1. - <_> - 6 8 14 1 2. - <_> - - <_> - 10 7 5 4 -1. - <_> - 10 8 5 2 2. - <_> - - <_> - 23 12 2 3 -1. - <_> - 23 13 2 1 3. - <_> - - <_> - 0 7 4 4 -1. - <_> - 0 8 4 2 2. - <_> - - <_> - 3 13 21 2 -1. - <_> - 10 13 7 2 3. - <_> - - <_> - 6 1 3 1 -1. - <_> - 7 1 1 1 3. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 23 12 2 3 -1. - <_> - 23 13 2 1 3. - <_> - - <_> - 8 8 9 2 -1. - <_> - 11 8 3 2 3. - <_> - - <_> - 23 12 2 3 -1. - <_> - 23 13 2 1 3. - <_> - - <_> - 0 12 2 3 -1. - <_> - 0 13 2 1 3. - <_> - - <_> - 8 4 9 9 -1. - <_> - 8 7 9 3 3. - <_> - - <_> - 3 11 12 4 -1. - <_> - 3 11 6 2 2. - <_> - 9 13 6 2 2. - <_> - - <_> - 10 10 5 4 -1. - <_> - 10 11 5 2 2. - <_> - - <_> - 7 14 6 1 -1. - <_> - 9 14 2 1 3. - <_> - - <_> - 4 0 18 15 -1. - <_> - 4 0 9 15 2. - <_> - - <_> - 0 3 4 4 -1. - <_> - 1 3 2 4 2. - <_> - - <_> - 22 0 3 4 -1. - <_> - 22 2 3 2 2. - <_> - - <_> - 0 0 20 8 -1. - <_> - 5 0 10 8 2. - <_> - - <_> - 1 5 24 10 -1. - <_> - 13 5 12 5 2. - <_> - 1 10 12 5 2. - <_> - - <_> - 0 5 5 6 -1. - <_> - 0 7 5 2 3. - <_> - - <_> - 18 3 4 2 -1. - <_> - 18 4 4 1 2. - <_> - - <_> - 2 3 4 2 -1. - <_> - 2 3 4 1 2. - 1 - <_> - - <_> - 14 1 6 6 -1. - <_> - 16 1 2 6 3. - <_> - - <_> - 5 1 6 6 -1. - <_> - 7 1 2 6 3. - <_> - - <_> - 11 10 6 1 -1. - <_> - 13 10 2 1 3. - <_> - - <_> - 6 8 11 4 -1. - <_> - 6 9 11 2 2. - <_> - - <_> - 23 13 2 2 -1. - <_> - 24 13 1 1 2. - <_> - 23 14 1 1 2. - <_> - - <_> - 6 0 13 4 -1. - <_> - 6 1 13 2 2. - <_> - - <_> - 17 0 3 1 -1. - <_> - 18 1 1 1 3. - 1 - <_> - - <_> - 8 0 1 3 -1. - <_> - 7 1 1 1 3. - 1 - <_> - - <_> - 22 12 2 2 -1. - <_> - 23 12 1 1 2. - <_> - 22 13 1 1 2. - <_> - - <_> - 0 13 2 1 -1. - <_> - 1 13 1 1 2. - <_> - - <_> - 22 13 2 1 -1. - <_> - 22 13 1 1 2. - <_> - - <_> - 1 13 2 1 -1. - <_> - 2 13 1 1 2. - <_> - - <_> - 22 13 3 1 -1. - <_> - 23 13 1 1 3. - <_> - - <_> - 1 2 2 12 -1. - <_> - 2 2 1 12 2. - <_> - - <_> - 18 3 4 2 -1. - <_> - 18 4 4 1 2. - <_> - - <_> - 3 3 4 2 -1. - <_> - 3 4 4 1 2. - <_> - - <_> - 24 0 1 12 -1. - <_> - 24 3 1 6 2. - <_> - - <_> - 5 8 15 6 -1. - <_> - 5 10 15 2 3. - <_> - - <_> - 19 7 6 2 -1. - <_> - 19 7 6 1 2. - 1 - <_> - - <_> - 1 10 5 3 -1. - <_> - 1 11 5 1 3. - <_> - - <_> - 24 0 1 12 -1. - <_> - 24 3 1 6 2. - <_> - - <_> - 0 0 1 12 -1. - <_> - 0 3 1 6 2. - <_> - - <_> - 9 0 12 1 -1. - <_> - 13 0 4 1 3. - <_> - - <_> - 4 0 12 1 -1. - <_> - 8 0 4 1 3. - <_> - - <_> - 3 0 20 1 -1. - <_> - 8 0 10 1 2. - <_> - - <_> - 1 0 9 2 -1. - <_> - 4 0 3 2 3. - <_> - - <_> - 11 6 8 2 -1. - <_> - 11 7 8 1 2. - <_> - - <_> - 11 3 3 8 -1. - <_> - 11 7 3 4 2. - <_> - - <_> - 20 4 4 2 -1. - <_> - 21 5 2 2 2. - 1 - <_> - - <_> - 6 7 2 6 -1. - <_> - 6 7 1 6 2. - 1 - <_> - - <_> - 20 4 4 2 -1. - <_> - 21 5 2 2 2. - 1 - <_> - - <_> - 5 4 2 4 -1. - <_> - 4 5 2 2 2. - 1 - <_> - - <_> - 7 5 11 3 -1. - <_> - 7 6 11 1 3. - <_> - - <_> - 20 1 3 4 -1. - <_> - 20 2 3 2 2. - <_> - - <_> - 8 4 9 3 -1. - <_> - 8 5 9 1 3. - <_> - - <_> - 9 6 9 3 -1. - <_> - 9 7 9 1 3. - <_> - - <_> - 0 7 8 8 -1. - <_> - 0 7 4 4 2. - <_> - 4 11 4 4 2. - <_> - - <_> - 9 7 7 3 -1. - <_> - 9 8 7 1 3. - <_> - - <_> - 8 3 9 3 -1. - <_> - 8 4 9 1 3. - <_> - - <_> - 21 1 1 6 -1. - <_> - 19 3 1 2 3. - 1 - <_> - - <_> - 0 7 24 5 -1. - <_> - 6 7 12 5 2. - <_> - - <_> - 24 11 1 2 -1. - <_> - 24 11 1 1 2. - 1 - <_> - - <_> - 5 2 8 5 -1. - <_> - 5 2 4 5 2. - 1 - <_> - - <_> - 16 3 8 12 -1. - <_> - 20 3 4 6 2. - <_> - 16 9 4 6 2. - <_> - - <_> - 0 0 24 12 -1. - <_> - 0 0 12 6 2. - <_> - 12 6 12 6 2. - <_> - - <_> - 8 2 10 8 -1. - <_> - 13 2 5 4 2. - <_> - 8 6 5 4 2. - <_> - - <_> - 0 3 2 8 -1. - <_> - 0 3 1 4 2. - <_> - 1 7 1 4 2. - <_> - - <_> - 22 11 2 4 -1. - <_> - 22 12 2 2 2. - <_> - - <_> - 1 11 2 4 -1. - <_> - 1 12 2 2 2. - <_> - - <_> - 12 2 13 12 -1. - <_> - 12 8 13 6 2. - <_> - - <_> - 5 8 2 4 -1. - <_> - 5 8 1 4 2. - 1 - <_> - - <_> - 15 6 6 7 -1. - <_> - 17 6 2 7 3. - <_> - - <_> - 4 6 6 6 -1. - <_> - 6 6 2 6 3. - <_> - - <_> - 13 13 9 2 -1. - <_> - 16 13 3 2 3. - <_> - - <_> - 4 4 7 4 -1. - <_> - 3 5 7 2 2. - 1 - <_> - - <_> - 18 4 6 8 -1. - <_> - 21 4 3 4 2. - <_> - 18 8 3 4 2. - <_> - - <_> - 3 14 9 1 -1. - <_> - 6 14 3 1 3. - <_> - - <_> - 11 11 14 4 -1. - <_> - 18 11 7 2 2. - <_> - 11 13 7 2 2. - <_> - - <_> - 1 4 6 8 -1. - <_> - 1 4 3 4 2. - <_> - 4 8 3 4 2. - <_> - - <_> - 23 0 2 2 -1. - <_> - 23 0 1 2 2. - 1 - <_> - - <_> - 6 0 13 4 -1. - <_> - 6 1 13 2 2. - <_> - - <_> - 11 0 4 2 -1. - <_> - 11 1 4 1 2. - <_> - - <_> - 2 0 2 2 -1. - <_> - 2 0 2 1 2. - 1 - <_> - - <_> - 20 9 5 6 -1. - <_> - 20 11 5 2 3. - <_> - - <_> - 5 2 15 3 -1. - <_> - 5 3 15 1 3. - <_> - - <_> - 9 2 7 3 -1. - <_> - 9 3 7 1 3. - <_> - - <_> - 2 14 21 1 -1. - <_> - 9 14 7 1 3. - <_> - - <_> - 8 11 16 4 -1. - <_> - 8 11 8 4 2. - <_> - - <_> - 0 12 24 2 -1. - <_> - 12 12 12 2 2. - <_> - - <_> - 22 9 3 6 -1. - <_> - 22 11 3 2 3. - <_> - - <_> - 0 1 12 2 -1. - <_> - 0 1 6 1 2. - <_> - 6 2 6 1 2. - <_> - - <_> - 8 9 9 3 -1. - <_> - 8 10 9 1 3. - <_> - - <_> - 0 9 3 6 -1. - <_> - 0 11 3 2 3. - <_> - - <_> - 11 11 14 4 -1. - <_> - 18 11 7 2 2. - <_> - 11 13 7 2 2. - <_> - - <_> - 7 9 4 6 -1. - <_> - 8 9 2 6 2. - <_> - - <_> - 10 12 6 2 -1. - <_> - 12 12 2 2 3. - <_> - - <_> - 0 12 1 2 -1. - <_> - 0 13 1 1 2. - <_> - - <_> - 15 3 10 12 -1. - <_> - 20 3 5 6 2. - <_> - 15 9 5 6 2. - <_> - - <_> - 10 9 4 6 -1. - <_> - 10 9 2 3 2. - <_> - 12 12 2 3 2. - <_> - - <_> - 11 3 6 4 -1. - <_> - 11 3 3 4 2. - <_> - - <_> - 0 0 14 14 -1. - <_> - 0 7 14 7 2. - <_> - - <_> - 15 2 10 12 -1. - <_> - 20 2 5 6 2. - <_> - 15 8 5 6 2. - <_> - - <_> - 8 3 6 4 -1. - <_> - 11 3 3 4 2. - <_> - - <_> - 23 5 2 6 -1. - <_> - 23 7 2 2 3. - <_> - - <_> - 10 8 5 3 -1. - <_> - 10 9 5 1 3. - <_> - - <_> - 20 7 5 4 -1. - <_> - 20 8 5 2 2. - <_> - - <_> - 7 10 11 4 -1. - <_> - 7 11 11 2 2. - <_> - - <_> - 16 13 1 2 -1. - <_> - 16 14 1 1 2. - <_> - - <_> - 3 1 5 4 -1. - <_> - 3 2 5 2 2. - <_> - - <_> - 17 3 8 2 -1. - <_> - 17 4 8 1 2. - <_> - - <_> - 0 7 5 4 -1. - <_> - 0 8 5 2 2. - <_> - - <_> - 9 4 12 6 -1. - <_> - 13 4 4 6 3. - <_> - - <_> - 4 4 12 6 -1. - <_> - 8 4 4 6 3. - <_> - - <_> - 11 0 12 9 -1. - <_> - 11 0 6 9 2. - <_> - - <_> - 4 5 16 8 -1. - <_> - 12 5 8 8 2. - <_> - - <_> - 16 12 2 1 -1. - <_> - 16 12 1 1 2. - <_> - - <_> - 7 12 2 1 -1. - <_> - 8 12 1 1 2. - <_> - - <_> - 19 3 6 4 -1. - <_> - 22 3 3 2 2. - <_> - 19 5 3 2 2. - <_> - - <_> - 8 10 6 3 -1. - <_> - 10 10 2 3 3. - <_> - - <_> - 16 6 2 2 -1. - <_> - 17 6 1 1 2. - <_> - 16 7 1 1 2. - <_> - - <_> - 0 0 24 2 -1. - <_> - 0 0 12 1 2. - <_> - 12 1 12 1 2. - <_> - - <_> - 16 6 2 2 -1. - <_> - 17 6 1 1 2. - <_> - 16 7 1 1 2. - <_> - - <_> - 0 3 6 4 -1. - <_> - 0 3 3 2 2. - <_> - 3 5 3 2 2. - <_> - - <_> - 22 0 3 4 -1. - <_> - 22 2 3 2 2. - <_> - - <_> - 11 0 2 3 -1. - <_> - 11 1 2 1 3. - <_> - - <_> - 21 7 2 4 -1. - <_> - 20 8 2 2 2. - 1 - <_> - - <_> - 4 9 10 1 -1. - <_> - 9 9 5 1 2. - <_> - - <_> - 16 6 2 2 -1. - <_> - 17 6 1 1 2. - <_> - 16 7 1 1 2. - <_> - - <_> - 7 6 2 2 -1. - <_> - 7 6 1 1 2. - <_> - 8 7 1 1 2. - <_> - - <_> - 16 6 2 2 -1. - <_> - 17 6 1 1 2. - <_> - 16 7 1 1 2. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 2 1 2 2. - <_> - - <_> - 16 6 2 2 -1. - <_> - 17 6 1 1 2. - <_> - 16 7 1 1 2. - <_> - - <_> - 7 6 2 2 -1. - <_> - 7 6 1 1 2. - <_> - 8 7 1 1 2. - <_> - - <_> - 8 9 9 6 -1. - <_> - 11 11 3 2 9. - <_> - - <_> - 0 5 2 6 -1. - <_> - 0 7 2 2 3. - <_> - - <_> - 14 4 4 7 -1. - <_> - 15 5 2 7 2. - 1 - <_> - - <_> - 2 13 20 2 -1. - <_> - 2 13 10 1 2. - <_> - 12 14 10 1 2. - <_> - - <_> - 23 7 2 2 -1. - <_> - 24 7 1 1 2. - <_> - 23 8 1 1 2. - <_> - - <_> - 3 2 1 4 -1. - <_> - 3 3 1 2 2. - <_> - - <_> - 11 2 14 4 -1. - <_> - 11 3 14 2 2. - <_> - - <_> - 5 7 4 5 -1. - <_> - 6 7 2 5 2. - <_> - - <_> - 23 8 1 4 -1. - <_> - 22 9 1 2 2. - 1 - <_> - - <_> - 2 0 10 8 -1. - <_> - 7 0 5 8 2. - <_> - - <_> - 1 5 24 3 -1. - <_> - 9 6 8 1 9. - <_> - - <_> - 10 0 4 10 -1. - <_> - 10 5 4 5 2. - <_> - - <_> - 5 4 15 3 -1. - <_> - 5 5 15 1 3. - <_> - - <_> - 11 6 3 6 -1. - <_> - 11 8 3 2 3. - <_> - - <_> - 18 8 7 3 -1. - <_> - 18 9 7 1 3. - <_> - - <_> - 0 0 4 2 -1. - <_> - 0 1 4 1 2. - <_> - - <_> - 20 0 2 1 -1. - <_> - 20 0 1 1 2. - 1 - <_> - - <_> - 0 6 1 8 -1. - <_> - 0 8 1 4 2. - <_> - - <_> - 23 7 2 2 -1. - <_> - 24 7 1 1 2. - <_> - 23 8 1 1 2. - <_> - - <_> - 0 7 2 2 -1. - <_> - 0 7 1 1 2. - <_> - 1 8 1 1 2. - <_> - - <_> - 24 8 1 4 -1. - <_> - 23 9 1 2 2. - 1 - <_> - - <_> - 1 8 3 1 -1. - <_> - 2 9 1 1 3. - 1 - <_> - - <_> - 21 7 2 2 -1. - <_> - 22 7 1 1 2. - <_> - 21 8 1 1 2. - <_> - - <_> - 5 8 15 6 -1. - <_> - 5 10 15 2 3. - <_> - - <_> - 6 7 14 8 -1. - <_> - 6 9 14 4 2. - <_> - - <_> - 1 4 10 2 -1. - <_> - 1 5 10 1 2. - <_> - - <_> - 12 5 3 3 -1. - <_> - 13 6 1 1 9. - <_> - - <_> - 0 4 7 3 -1. - <_> - 0 5 7 1 3. - <_> - - <_> - 21 7 2 2 -1. - <_> - 22 7 1 1 2. - <_> - 21 8 1 1 2. - <_> - - <_> - 2 7 2 2 -1. - <_> - 2 7 1 1 2. - <_> - 3 8 1 1 2. - <_> - - <_> - 22 9 1 3 -1. - <_> - 21 10 1 1 3. - 1 - <_> - - <_> - 11 13 2 2 -1. - <_> - 11 13 1 1 2. - <_> - 12 14 1 1 2. - <_> - - <_> - 19 3 6 12 -1. - <_> - 22 3 3 6 2. - <_> - 19 9 3 6 2. - <_> - - <_> - 0 3 6 12 -1. - <_> - 0 3 3 6 2. - <_> - 3 9 3 6 2. - <_> - - <_> - 17 1 4 11 -1. - <_> - 18 1 2 11 2. - <_> - - <_> - 0 10 6 3 -1. - <_> - 0 11 6 1 3. - <_> - - <_> - 23 11 2 1 -1. - <_> - 23 11 1 1 2. - <_> - - <_> - 4 1 4 11 -1. - <_> - 5 1 2 11 2. - <_> - - <_> - 21 3 4 12 -1. - <_> - 23 3 2 6 2. - <_> - 21 9 2 6 2. - <_> - - <_> - 0 3 4 12 -1. - <_> - 0 3 2 6 2. - <_> - 2 9 2 6 2. - <_> - - <_> - 11 11 6 4 -1. - <_> - 11 12 6 2 2. - <_> - - <_> - 6 11 13 4 -1. - <_> - 6 12 13 2 2. - <_> - - <_> - 11 10 3 1 -1. - <_> - 12 10 1 1 3. - <_> - - <_> - 5 2 13 8 -1. - <_> - 5 6 13 4 2. - <_> - - <_> - 15 2 10 6 -1. - <_> - 15 4 10 2 3. - <_> - - <_> - 0 2 10 6 -1. - <_> - 0 4 10 2 3. - <_> - - <_> - 12 1 13 8 -1. - <_> - 12 3 13 4 2. - <_> - - <_> - 5 3 15 3 -1. - <_> - 5 4 15 1 3. - <_> - - <_> - 9 3 9 3 -1. - <_> - 9 4 9 1 3. - <_> - - <_> - 3 2 7 3 -1. - <_> - 2 3 7 1 3. - 1 - <_> - - <_> - 5 2 15 3 -1. - <_> - 5 3 15 1 3. - <_> - - <_> - 5 4 15 3 -1. - <_> - 5 5 15 1 3. - <_> - - <_> - 17 6 2 2 -1. - <_> - 18 6 1 1 2. - <_> - 17 7 1 1 2. - <_> - - <_> - 5 10 2 3 -1. - <_> - 5 10 1 3 2. - 1 - <_> - - <_> - 23 11 2 4 -1. - <_> - 23 13 2 2 2. - <_> - - <_> - 0 11 14 4 -1. - <_> - 0 11 7 2 2. - <_> - 7 13 7 2 2. - <_> - - <_> - 10 4 6 3 -1. - <_> - 10 5 6 1 3. - <_> - - <_> - 0 1 24 14 -1. - <_> - 0 1 12 7 2. - <_> - 12 8 12 7 2. - <_> - - <_> - 1 5 24 8 -1. - <_> - 13 5 12 4 2. - <_> - 1 9 12 4 2. - <_> - - <_> - 0 0 24 12 -1. - <_> - 0 0 12 6 2. - <_> - 12 6 12 6 2. - <_> - - <_> - 10 0 15 14 -1. - <_> - 10 7 15 7 2. - <_> - - <_> - 1 11 2 1 -1. - <_> - 1 11 1 1 2. - 1 - <_> - - <_> - 1 11 24 4 -1. - <_> - 1 11 12 4 2. - <_> - - <_> - 7 7 10 3 -1. - <_> - 7 8 10 1 3. - <_> - - <_> - 9 5 7 3 -1. - <_> - 9 6 7 1 3. - <_> - - <_> - 0 9 2 6 -1. - <_> - 0 11 2 2 3. - <_> - - <_> - 22 8 3 2 -1. - <_> - 22 8 3 1 2. - 1 - <_> - - <_> - 12 6 1 3 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 24 6 1 6 -1. - <_> - 24 8 1 2 3. - <_> - - <_> - 3 3 7 2 -1. - <_> - 3 3 7 1 2. - 1 - <_> - - <_> - 10 4 6 10 -1. - <_> - 13 4 3 5 2. - <_> - 10 9 3 5 2. - <_> - - <_> - 0 3 14 6 -1. - <_> - 0 6 14 3 2. - <_> - - <_> - 9 0 8 8 -1. - <_> - 13 0 4 4 2. - <_> - 9 4 4 4 2. - <_> - - <_> - 3 4 5 3 -1. - <_> - 2 5 5 1 3. - 1 - <_> - - <_> - 18 9 7 6 -1. - <_> - 18 11 7 2 3. - <_> - - <_> - 0 9 7 6 -1. - <_> - 0 11 7 2 3. - <_> - - <_> - 12 1 3 3 -1. - <_> - 12 2 3 1 3. - <_> - - <_> - 9 2 6 8 -1. - <_> - 9 2 3 4 2. - <_> - 12 6 3 4 2. - <_> - - <_> - 1 14 24 1 -1. - <_> - 7 14 12 1 2. - <_> - - <_> - 0 3 12 12 -1. - <_> - 0 3 6 6 2. - <_> - 6 9 6 6 2. - <_> - - <_> - 11 3 9 4 -1. - <_> - 14 3 3 4 3. - <_> - - <_> - 9 4 6 6 -1. - <_> - 9 4 3 3 2. - <_> - 12 7 3 3 2. - <_> - - <_> - 20 0 4 1 -1. - <_> - 20 0 2 1 2. - 1 - <_> - - <_> - 8 3 9 4 -1. - <_> - 11 3 3 4 3. - <_> - - <_> - 14 4 6 9 -1. - <_> - 16 4 2 9 3. - <_> - - <_> - 5 4 6 9 -1. - <_> - 7 4 2 9 3. - <_> - - <_> - 16 5 2 2 -1. - <_> - 17 5 1 1 2. - <_> - 16 6 1 1 2. - <_> - - <_> - 0 0 15 12 -1. - <_> - 0 4 15 4 3. - <_> - - <_> - 8 1 11 3 -1. - <_> - 8 2 11 1 3. - <_> - - <_> - 0 6 1 6 -1. - <_> - 0 8 1 2 3. - <_> - - <_> - 14 5 1 3 -1. - <_> - 14 6 1 1 3. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 1 2. - <_> - 8 3 1 1 2. - <_> - - <_> - 22 9 1 4 -1. - <_> - 21 10 1 2 2. - 1 - <_> - - <_> - 10 5 5 3 -1. - <_> - 10 6 5 1 3. - <_> - - <_> - 14 5 1 3 -1. - <_> - 14 6 1 1 3. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 1 2 1 2. - <_> - - <_> - 22 9 1 4 -1. - <_> - 21 10 1 2 2. - 1 - <_> - - <_> - 3 9 4 1 -1. - <_> - 4 10 2 1 2. - 1 - <_> - - <_> - 8 8 9 3 -1. - <_> - 8 9 9 1 3. - <_> - - <_> - 2 8 21 3 -1. - <_> - 9 9 7 1 9. - <_> - - <_> - 10 6 8 8 -1. - <_> - 12 6 4 8 2. - <_> - - <_> - 7 3 6 12 -1. - <_> - 9 3 2 12 3. - <_> - - <_> - 11 0 3 1 -1. - <_> - 12 0 1 1 3. - <_> - - <_> - 10 10 4 4 -1. - <_> - 11 10 2 4 2. - <_> - - <_> - 16 5 2 2 -1. - <_> - 17 5 1 1 2. - <_> - 16 6 1 1 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 1 0 24 8 -1. - <_> - 13 0 12 4 2. - <_> - 1 4 12 4 2. - <_> - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - <_> - - <_> - 21 12 4 3 -1. - <_> - 21 13 4 1 3. - <_> - - <_> - 0 3 4 4 -1. - <_> - 0 3 2 2 2. - <_> - 2 5 2 2 2. - <_> - - <_> - 19 0 2 3 -1. - <_> - 19 0 1 3 2. - 1 - <_> - - <_> - 2 2 15 6 -1. - <_> - 2 5 15 3 2. - <_> - - <_> - 5 0 15 2 -1. - <_> - 5 1 15 1 2. - <_> - - <_> - 0 0 2 4 -1. - <_> - 0 1 2 2 2. - <_> - - <_> - 23 1 2 12 -1. - <_> - 20 4 2 6 2. - 1 - <_> - - <_> - 4 2 2 3 -1. - <_> - 4 3 2 1 3. - <_> - - <_> - 20 0 2 2 -1. - <_> - 20 0 1 2 2. - 1 - <_> - - <_> - 0 12 4 3 -1. - <_> - 0 13 4 1 3. - <_> - - <_> - 13 1 12 8 -1. - <_> - 13 3 12 4 2. - <_> - - <_> - 5 0 2 2 -1. - <_> - 5 0 2 1 2. - 1 - <_> - - <_> - 11 2 14 12 -1. - <_> - 11 8 14 6 2. - <_> - - <_> - 0 2 14 12 -1. - <_> - 0 8 14 6 2. - <_> - - <_> - 16 7 6 8 -1. - <_> - 18 7 2 8 3. - <_> - - <_> - 7 0 13 2 -1. - <_> - 7 0 13 1 2. - 1 - <_> - - <_> - 16 7 6 8 -1. - <_> - 18 7 2 8 3. - <_> - - <_> - 3 7 6 8 -1. - <_> - 5 7 2 8 3. - <_> - - <_> - 17 7 2 2 -1. - <_> - 18 7 1 1 2. - <_> - 17 8 1 1 2. - <_> - - <_> - 12 5 3 6 -1. - <_> - 13 6 1 6 3. - 1 - <_> - - <_> - 20 2 1 6 -1. - <_> - 20 4 1 2 3. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 1 2. - <_> - 8 3 1 1 2. - <_> - - <_> - 19 10 2 1 -1. - <_> - 19 10 1 1 2. - <_> - - <_> - 6 4 8 2 -1. - <_> - 8 4 4 2 2. - <_> - - <_> - 9 5 16 7 -1. - <_> - 13 5 8 7 2. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 17 7 2 2 -1. - <_> - 18 7 1 1 2. - <_> - 17 8 1 1 2. - <_> - - <_> - 11 13 2 2 -1. - <_> - 11 13 1 1 2. - <_> - 12 14 1 1 2. - <_> - - <_> - 17 7 2 2 -1. - <_> - 18 7 1 1 2. - <_> - 17 8 1 1 2. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 20 8 5 3 -1. - <_> - 20 9 5 1 3. - <_> - - <_> - 11 13 2 2 -1. - <_> - 11 13 1 1 2. - <_> - 12 14 1 1 2. - <_> - - <_> - 5 11 15 4 -1. - <_> - 5 12 15 2 2. - <_> - - <_> - 0 8 6 3 -1. - <_> - 0 9 6 1 3. - <_> - - <_> - 19 10 2 1 -1. - <_> - 19 10 1 1 2. - <_> - - <_> - 4 10 2 1 -1. - <_> - 5 10 1 1 2. - <_> - - <_> - 1 0 24 6 -1. - <_> - 13 0 12 3 2. - <_> - 1 3 12 3 2. - <_> - - <_> - 5 1 2 5 -1. - <_> - 5 1 1 5 2. - 1 - <_> - - <_> - 21 3 4 12 -1. - <_> - 23 3 2 6 2. - <_> - 21 9 2 6 2. - <_> - - <_> - 0 3 4 12 -1. - <_> - 0 3 2 6 2. - <_> - 2 9 2 6 2. - <_> - - <_> - 24 2 1 6 -1. - <_> - 24 5 1 3 2. - <_> - - <_> - 5 2 9 8 -1. - <_> - 8 2 3 8 3. - <_> - - <_> - 24 2 1 6 -1. - <_> - 24 5 1 3 2. - <_> - - <_> - 0 2 1 6 -1. - <_> - 0 5 1 3 2. - <_> - - <_> - 9 6 9 4 -1. - <_> - 9 7 9 2 2. - <_> - - <_> - 11 6 3 4 -1. - <_> - 11 7 3 2 2. - <_> - - <_> - 20 14 2 1 -1. - <_> - 20 14 1 1 2. - <_> - - <_> - 0 8 6 4 -1. - <_> - 0 9 6 2 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 8 0 9 15 -1. - <_> - 11 5 3 5 9. - <_> - - <_> - 13 9 4 6 -1. - <_> - 14 9 2 6 2. - <_> - - <_> - 8 2 9 3 -1. - <_> - 8 3 9 1 3. - <_> - - <_> - 0 9 8 6 -1. - <_> - 0 9 4 3 2. - <_> - 4 12 4 3 2. - <_> - - <_> - 20 1 5 4 -1. - <_> - 20 3 5 2 2. - <_> - - <_> - 4 3 16 7 -1. - <_> - 8 3 8 7 2. - <_> - - <_> - 15 0 10 8 -1. - <_> - 15 2 10 4 2. - <_> - - <_> - 0 2 24 10 -1. - <_> - 0 2 12 5 2. - <_> - 12 7 12 5 2. - <_> - - <_> - 20 9 5 4 -1. - <_> - 20 10 5 2 2. - <_> - - <_> - 0 14 22 1 -1. - <_> - 11 14 11 1 2. - <_> - - <_> - 22 0 3 12 -1. - <_> - 22 0 3 6 2. - 1 - <_> - - <_> - 0 4 2 2 -1. - <_> - 1 4 1 2 2. - <_> - - <_> - 20 9 5 4 -1. - <_> - 20 10 5 2 2. - <_> - - <_> - 0 9 5 4 -1. - <_> - 0 10 5 2 2. - <_> - - <_> - 7 3 18 6 -1. - <_> - 13 5 6 2 9. - <_> - - <_> - 4 10 10 1 -1. - <_> - 9 10 5 1 2. - <_> - - <_> - 21 1 4 10 -1. - <_> - 21 1 2 10 2. - 1 - <_> - - <_> - 4 1 10 4 -1. - <_> - 4 1 10 2 2. - 1 - <_> - - <_> - 16 8 4 7 -1. - <_> - 17 8 2 7 2. - <_> - - <_> - 5 8 4 7 -1. - <_> - 6 8 2 7 2. - <_> - - <_> - 6 0 13 2 -1. - <_> - 6 1 13 1 2. - <_> - - <_> - 0 12 8 3 -1. - <_> - 0 13 8 1 3. - <_> - - <_> - 22 0 2 1 -1. - <_> - 22 0 1 1 2. - 1 - <_> - - <_> - 3 0 1 2 -1. - <_> - 3 0 1 1 2. - 1 - <_> - - <_> - 17 3 8 8 -1. - <_> - 21 3 4 4 2. - <_> - 17 7 4 4 2. - <_> - - <_> - 6 2 13 6 -1. - <_> - 6 4 13 2 3. - <_> - - <_> - 10 0 15 14 -1. - <_> - 10 7 15 7 2. - <_> - - <_> - 1 1 12 1 -1. - <_> - 1 1 6 1 2. - 1 - <_> - - <_> - 18 3 4 2 -1. - <_> - 18 4 4 1 2. - <_> - - <_> - 7 11 6 4 -1. - <_> - 9 11 2 4 3. - <_> - - <_> - 20 4 5 6 -1. - <_> - 20 6 5 2 3. - <_> - - <_> - 1 12 5 3 -1. - <_> - 1 13 5 1 3. - <_> - - <_> - 1 0 24 2 -1. - <_> - 13 0 12 1 2. - <_> - 1 1 12 1 2. - <_> - - <_> - 3 3 5 3 -1. - <_> - 2 4 5 1 3. - 1 - <_> - - <_> - 17 6 8 4 -1. - <_> - 19 6 4 4 2. - <_> - - <_> - 5 0 1 3 -1. - <_> - 4 1 1 1 3. - 1 - <_> - - <_> - 23 0 2 4 -1. - <_> - 23 2 2 2 2. - <_> - - <_> - 0 0 3 6 -1. - <_> - 0 3 3 3 2. - <_> - - <_> - 11 1 14 2 -1. - <_> - 18 1 7 1 2. - <_> - 11 2 7 1 2. - <_> - - <_> - 0 1 14 2 -1. - <_> - 0 1 7 1 2. - <_> - 7 2 7 1 2. - <_> - - <_> - 5 4 15 6 -1. - <_> - 5 6 15 2 3. - <_> - - <_> - 10 7 2 2 -1. - <_> - 10 8 2 1 2. - <_> - - <_> - 13 2 8 5 -1. - <_> - 15 4 4 5 2. - 1 - <_> - - <_> - 2 9 2 2 -1. - <_> - 2 9 1 2 2. - 1 - <_> - - <_> - 12 8 6 3 -1. - <_> - 14 8 2 3 3. - <_> - - <_> - 0 9 24 6 -1. - <_> - 8 11 8 2 9. - <_> - - <_> - 1 12 24 3 -1. - <_> - 9 13 8 1 9. - <_> - - <_> - 5 11 15 4 -1. - <_> - 5 13 15 2 2. - <_> - - <_> - 24 10 1 4 -1. - <_> - 23 11 1 2 2. - 1 - <_> - - <_> - 1 10 4 1 -1. - <_> - 2 11 2 1 2. - 1 - <_> - - <_> - 15 1 10 14 -1. - <_> - 15 8 10 7 2. - <_> - - <_> - 0 7 4 2 -1. - <_> - 2 7 2 2 2. - <_> - - <_> - 20 4 5 6 -1. - <_> - 20 6 5 2 3. - <_> - - <_> - 0 4 7 6 -1. - <_> - 0 6 7 2 3. - <_> - - <_> - 11 7 6 3 -1. - <_> - 11 8 6 1 3. - <_> - - <_> - 8 10 9 1 -1. - <_> - 11 10 3 1 3. - <_> - - <_> - 5 10 15 1 -1. - <_> - 10 10 5 1 3. - <_> - - <_> - 7 8 6 3 -1. - <_> - 9 8 2 3 3. - <_> - - <_> - 23 12 2 1 -1. - <_> - 23 12 1 1 2. - <_> - - <_> - 0 13 24 2 -1. - <_> - 0 13 12 1 2. - <_> - 12 14 12 1 2. - <_> - - <_> - 9 9 7 3 -1. - <_> - 9 10 7 1 3. - <_> - - <_> - 0 6 2 4 -1. - <_> - 0 7 2 2 2. - <_> - - <_> - 18 2 5 4 -1. - <_> - 18 3 5 2 2. - <_> - - <_> - 1 4 8 2 -1. - <_> - 1 4 4 1 2. - <_> - 5 5 4 1 2. - <_> - - <_> - 21 8 4 4 -1. - <_> - 21 9 4 2 2. - <_> - - <_> - 4 4 8 4 -1. - <_> - 4 5 8 2 2. - <_> - - <_> - 11 4 14 4 -1. - <_> - 11 5 14 2 2. - <_> - - <_> - 3 0 18 9 -1. - <_> - 12 0 9 9 2. - <_> - - <_> - 3 0 20 15 -1. - <_> - 3 0 10 15 2. - <_> - - <_> - 12 1 6 8 -1. - <_> - 14 3 2 8 3. - 1 - <_> - - <_> - 17 4 1 9 -1. - <_> - 14 7 1 3 3. - 1 - <_> - - <_> - 6 7 4 8 -1. - <_> - 7 7 2 8 2. - <_> - - <_> - 21 5 4 3 -1. - <_> - 21 6 4 1 3. - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 21 8 4 3 -1. - <_> - 21 9 4 1 3. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - <_> - - <_> - 0 8 4 3 -1. - <_> - 0 9 4 1 3. - <_> - - <_> - 20 9 2 2 -1. - <_> - 21 9 1 1 2. - <_> - 20 10 1 1 2. - <_> - - <_> - 3 9 2 2 -1. - <_> - 3 9 1 1 2. - <_> - 4 10 1 1 2. - <_> - - <_> - 19 3 6 12 -1. - <_> - 22 3 3 6 2. - <_> - 19 9 3 6 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 7 4 12 3 -1. - <_> - 7 5 12 1 3. - <_> - - <_> - 0 0 11 2 -1. - <_> - 0 1 11 1 2. - <_> - - <_> - 13 2 6 5 -1. - <_> - 15 2 2 5 3. - <_> - - <_> - 0 0 24 10 -1. - <_> - 0 0 12 5 2. - <_> - 12 5 12 5 2. - <_> - - <_> - 20 4 2 3 -1. - <_> - 20 5 2 1 3. - <_> - - <_> - 0 3 7 4 -1. - <_> - 0 4 7 2 2. - <_> - - <_> - 11 1 14 14 -1. - <_> - 11 8 14 7 2. - <_> - - <_> - 6 2 6 5 -1. - <_> - 8 2 2 5 3. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 2 0 20 1 -1. - <_> - 7 0 10 1 2. - <_> - - <_> - 11 0 14 1 -1. - <_> - 11 0 7 1 2. - <_> - - <_> - 9 3 6 2 -1. - <_> - 9 4 6 1 2. - <_> - - <_> - 11 3 3 4 -1. - <_> - 11 4 3 2 2. - <_> - - <_> - 0 11 18 3 -1. - <_> - 6 12 6 1 9. - <_> - - <_> - 15 3 10 12 -1. - <_> - 20 3 5 6 2. - <_> - 15 9 5 6 2. - <_> - - <_> - 0 3 14 3 -1. - <_> - 0 4 14 1 3. - <_> - - <_> - 9 4 8 3 -1. - <_> - 11 4 4 3 2. - <_> - - <_> - 0 12 2 1 -1. - <_> - 1 12 1 1 2. - <_> - - <_> - 23 13 2 2 -1. - <_> - 24 13 1 1 2. - <_> - 23 14 1 1 2. - <_> - - <_> - 0 13 2 2 -1. - <_> - 0 13 1 1 2. - <_> - 1 14 1 1 2. - <_> - - <_> - 9 12 8 1 -1. - <_> - 11 12 4 1 2. - <_> - - <_> - 0 7 6 4 -1. - <_> - 0 8 6 2 2. - <_> - - <_> - 19 3 6 12 -1. - <_> - 22 3 3 6 2. - <_> - 19 9 3 6 2. - <_> - - <_> - 0 3 6 12 -1. - <_> - 0 3 3 6 2. - <_> - 3 9 3 6 2. - <_> - - <_> - 23 7 2 4 -1. - <_> - 23 8 2 2 2. - <_> - - <_> - 0 7 2 4 -1. - <_> - 0 8 2 2 2. - <_> - - <_> - 13 7 8 4 -1. - <_> - 17 7 4 2 2. - <_> - 13 9 4 2 2. - <_> - - <_> - 0 1 10 14 -1. - <_> - 0 8 10 7 2. - <_> - - <_> - 9 8 7 3 -1. - <_> - 9 9 7 1 3. - <_> - - <_> - 9 8 3 4 -1. - <_> - 9 9 3 2 2. - <_> - - <_> - 18 10 2 3 -1. - <_> - 17 11 2 1 3. - 1 - <_> - - <_> - 7 10 3 2 -1. - <_> - 8 11 1 2 3. - 1 - <_> - - <_> - 23 0 2 1 -1. - <_> - 23 0 1 1 2. - 1 - <_> - - <_> - 12 8 4 3 -1. - <_> - 12 8 2 3 2. - 1 - <_> - - <_> - 5 7 15 3 -1. - <_> - 10 8 5 1 9. - <_> - - <_> - 0 0 20 8 -1. - <_> - 10 0 10 8 2. - <_> - - <_> - 21 0 4 3 -1. - <_> - 20 1 4 1 3. - 1 - <_> - - <_> - 4 0 3 4 -1. - <_> - 5 1 1 4 3. - 1 - <_> - - <_> - 18 3 5 2 -1. - <_> - 18 4 5 1 2. - <_> - - <_> - 2 3 5 2 -1. - <_> - 2 4 5 1 2. - <_> - - <_> - 13 0 2 5 -1. - <_> - 13 0 1 5 2. - 1 - <_> - - <_> - 5 12 6 3 -1. - <_> - 7 13 2 1 9. - <_> - - <_> - 13 0 2 5 -1. - <_> - 13 0 1 5 2. - 1 - <_> - - <_> - 9 6 4 2 -1. - <_> - 9 7 4 1 2. - <_> - - <_> - 18 9 4 3 -1. - <_> - 18 10 4 1 3. - <_> - - <_> - 3 9 4 3 -1. - <_> - 3 10 4 1 3. - <_> - - <_> - 7 9 15 6 -1. - <_> - 7 12 15 3 2. - <_> - - <_> - 4 1 12 6 -1. - <_> - 4 1 6 3 2. - <_> - 10 4 6 3 2. - <_> - - <_> - 10 5 14 10 -1. - <_> - 10 10 14 5 2. - <_> - - <_> - 10 6 2 3 -1. - <_> - 10 7 2 1 3. - <_> - - <_> - 13 4 4 6 -1. - <_> - 14 5 2 6 2. - 1 - <_> - - <_> - 12 4 6 4 -1. - <_> - 11 5 6 2 2. - 1 - <_> - - <_> - 19 0 5 3 -1. - <_> - 19 1 5 1 3. - <_> - - <_> - 6 7 3 1 -1. - <_> - 7 7 1 1 3. - <_> - - <_> - 19 0 5 3 -1. - <_> - 19 1 5 1 3. - <_> - - <_> - 6 7 3 1 -1. - <_> - 7 7 1 1 3. - <_> - - <_> - 11 0 6 15 -1. - <_> - 13 0 2 15 3. - <_> - - <_> - 0 2 2 6 -1. - <_> - 0 2 1 3 2. - <_> - 1 5 1 3 2. - <_> - - <_> - 21 0 2 1 -1. - <_> - 21 0 1 1 2. - 1 - <_> - - <_> - 4 0 1 2 -1. - <_> - 4 0 1 1 2. - 1 - <_> - - <_> - 9 0 14 8 -1. - <_> - 9 0 7 8 2. - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 4 6 18 4 -1. - <_> - 4 6 9 4 2. - <_> - - <_> - 0 7 2 2 -1. - <_> - 0 7 1 1 2. - <_> - 1 8 1 1 2. - <_> - - <_> - 23 7 2 2 -1. - <_> - 24 7 1 1 2. - <_> - 23 8 1 1 2. - <_> - - <_> - 0 7 2 2 -1. - <_> - 0 7 1 1 2. - <_> - 1 8 1 1 2. - <_> - - <_> - 23 7 2 2 -1. - <_> - 24 7 1 1 2. - <_> - 23 8 1 1 2. - <_> - - <_> - 0 7 2 2 -1. - <_> - 0 7 1 1 2. - <_> - 1 8 1 1 2. - <_> - - <_> - 24 6 1 4 -1. - <_> - 24 7 1 2 2. - <_> - - <_> - 0 6 1 4 -1. - <_> - 0 7 1 2 2. - <_> - - <_> - 11 0 6 15 -1. - <_> - 13 0 2 15 3. - <_> - - <_> - 0 1 2 3 -1. - <_> - 0 2 2 1 3. - <_> - - <_> - 8 1 9 3 -1. - <_> - 8 2 9 1 3. - <_> - - <_> - 8 1 3 3 -1. - <_> - 9 2 1 1 9. - <_> - - <_> - 19 7 5 3 -1. - <_> - 18 8 5 1 3. - 1 - <_> - - <_> - 6 7 3 5 -1. - <_> - 7 8 1 5 3. - 1 - <_> - - <_> - 1 0 24 14 -1. - <_> - 13 0 12 7 2. - <_> - 1 7 12 7 2. - <_> - - <_> - 8 11 9 4 -1. - <_> - 8 12 9 2 2. - <_> - - <_> - 6 11 14 4 -1. - <_> - 6 12 14 2 2. - <_> - - <_> - 0 11 3 4 -1. - <_> - 0 12 3 2 2. - <_> - - <_> - 17 11 8 2 -1. - <_> - 17 12 8 1 2. - <_> - - <_> - 0 11 8 2 -1. - <_> - 0 12 8 1 2. - <_> - - <_> - 23 13 1 2 -1. - <_> - 23 14 1 1 2. - <_> - - <_> - 1 13 1 2 -1. - <_> - 1 14 1 1 2. - <_> - - <_> - 9 0 14 8 -1. - <_> - 9 0 7 8 2. - <_> - - <_> - 0 1 14 8 -1. - <_> - 0 3 14 4 2. - <_> - - <_> - 20 4 2 3 -1. - <_> - 20 5 2 1 3. - <_> - - <_> - 0 1 14 9 -1. - <_> - 0 4 14 3 3. - <_> - - <_> - 9 13 9 1 -1. - <_> - 12 13 3 1 3. - <_> - - <_> - 7 13 9 1 -1. - <_> - 10 13 3 1 3. - <_> - - <_> - 20 7 2 2 -1. - <_> - 21 7 1 1 2. - <_> - 20 8 1 1 2. - <_> - - <_> - 5 9 15 6 -1. - <_> - 5 12 15 3 2. - <_> - - <_> - 21 0 2 6 -1. - <_> - 21 3 2 3 2. - <_> - - <_> - 4 4 8 10 -1. - <_> - 4 4 4 5 2. - <_> - 8 9 4 5 2. - <_> - - <_> - 16 1 8 6 -1. - <_> - 16 3 8 2 3. - <_> - - <_> - 2 1 11 2 -1. - <_> - 2 1 11 1 2. - 1 - <_> - - <_> - 20 4 5 6 -1. - <_> - 20 6 5 2 3. - <_> - - <_> - 0 4 5 6 -1. - <_> - 0 6 5 2 3. - <_> - - <_> - 19 11 6 4 -1. - <_> - 22 11 3 2 2. - <_> - 19 13 3 2 2. - <_> - - <_> - 10 4 5 2 -1. - <_> - 10 5 5 1 2. - <_> - - <_> - 7 6 11 4 -1. - <_> - 7 7 11 2 2. - <_> - - <_> - 9 2 4 4 -1. - <_> - 9 2 2 4 2. - 1 - <_> - - <_> - 1 0 24 11 -1. - <_> - 7 0 12 11 2. - <_> - - <_> - 4 0 10 10 -1. - <_> - 9 0 5 10 2. - <_> - - <_> - 23 8 2 4 -1. - <_> - 23 8 2 2 2. - 1 - <_> - - <_> - 2 8 4 2 -1. - <_> - 2 8 2 2 2. - 1 - <_> - - <_> - 23 3 2 12 -1. - <_> - 24 3 1 6 2. - <_> - 23 9 1 6 2. - <_> - - <_> - 9 3 6 12 -1. - <_> - 9 3 3 6 2. - <_> - 12 9 3 6 2. - <_> - - <_> - 1 0 24 12 -1. - <_> - 13 0 12 6 2. - <_> - 1 6 12 6 2. - <_> - - <_> - 0 3 2 12 -1. - <_> - 0 3 1 6 2. - <_> - 1 9 1 6 2. - <_> - - <_> - 14 8 3 4 -1. - <_> - 14 8 3 2 2. - 1 - <_> - - <_> - 0 0 6 1 -1. - <_> - 2 0 2 1 3. - <_> - - <_> - 9 2 16 7 -1. - <_> - 13 2 8 7 2. - <_> - - <_> - 8 7 1 6 -1. - <_> - 8 7 1 3 2. - 1 - <_> - - <_> - 8 7 9 4 -1. - <_> - 8 8 9 2 2. - <_> - - <_> - 7 5 10 4 -1. - <_> - 7 6 10 2 2. - <_> - - <_> - 14 2 1 6 -1. - <_> - 12 4 1 2 3. - 1 - <_> - - <_> - 0 3 8 12 -1. - <_> - 0 3 4 6 2. - <_> - 4 9 4 6 2. - <_> - - <_> - 19 13 6 2 -1. - <_> - 19 13 3 2 2. - <_> - - <_> - 0 13 6 2 -1. - <_> - 3 13 3 2 2. - <_> - - <_> - 23 12 1 3 -1. - <_> - 23 13 1 1 3. - <_> - - <_> - 1 12 1 3 -1. - <_> - 1 13 1 1 3. - <_> - - <_> - 23 12 1 3 -1. - <_> - 23 13 1 1 3. - <_> - - <_> - 4 10 10 1 -1. - <_> - 9 10 5 1 2. - <_> - - <_> - 23 12 1 3 -1. - <_> - 23 13 1 1 3. - <_> - - <_> - 1 12 1 3 -1. - <_> - 1 13 1 1 3. - <_> - - <_> - 11 2 12 4 -1. - <_> - 11 3 12 2 2. - <_> - - <_> - 3 1 12 6 -1. - <_> - 3 3 12 2 3. - <_> - - <_> - 23 0 2 2 -1. - <_> - 23 0 1 2 2. - 1 - <_> - - <_> - 2 0 2 2 -1. - <_> - 2 0 2 1 2. - 1 - <_> - - <_> - 14 13 4 2 -1. - <_> - 15 13 2 2 2. - <_> - - <_> - 3 6 6 3 -1. - <_> - 2 7 6 1 3. - 1 - <_> - - <_> - 14 13 4 2 -1. - <_> - 15 13 2 2 2. - <_> - - <_> - 0 7 24 4 -1. - <_> - 0 7 12 2 2. - <_> - 12 9 12 2 2. - <_> - - <_> - 23 0 2 2 -1. - <_> - 23 1 2 1 2. - <_> - - <_> - 7 13 4 2 -1. - <_> - 8 13 2 2 2. - <_> - - <_> - 16 11 2 2 -1. - <_> - 17 11 1 1 2. - <_> - 16 12 1 1 2. - <_> - - <_> - 8 11 9 4 -1. - <_> - 8 12 9 2 2. - <_> - - <_> - 2 12 21 3 -1. - <_> - 9 13 7 1 9. - <_> - - <_> - 1 13 21 2 -1. - <_> - 8 13 7 2 3. - <_> - - <_> - 22 10 1 4 -1. - <_> - 21 11 1 2 2. - 1 - <_> - - <_> - 3 5 6 3 -1. - <_> - 2 6 6 1 3. - 1 - <_> - - <_> - 13 2 8 5 -1. - <_> - 15 4 4 5 2. - 1 - <_> - - <_> - 4 2 8 6 -1. - <_> - 4 4 8 2 3. - <_> - - <_> - 5 1 15 4 -1. - <_> - 5 2 15 2 2. - <_> - - <_> - 0 1 8 4 -1. - <_> - 0 2 8 2 2. - <_> - - <_> - 10 0 15 14 -1. - <_> - 10 7 15 7 2. - <_> - - <_> - 9 13 6 2 -1. - <_> - 11 13 2 2 3. - <_> - - <_> - 8 9 11 4 -1. - <_> - 8 10 11 2 2. - <_> - - <_> - 8 6 3 3 -1. - <_> - 9 7 1 3 3. - 1 - <_> - - <_> - 21 5 4 6 -1. - <_> - 21 7 4 2 3. - <_> - - <_> - 12 3 6 6 -1. - <_> - 10 5 6 2 3. - 1 - <_> - - <_> - 12 9 10 6 -1. - <_> - 12 9 5 6 2. - <_> - - <_> - 3 9 10 6 -1. - <_> - 8 9 5 6 2. - <_> - - <_> - 12 0 4 1 -1. - <_> - 13 0 2 1 2. - <_> - - <_> - 3 10 4 1 -1. - <_> - 4 11 2 1 2. - 1 - <_> - - <_> - 18 12 1 2 -1. - <_> - 18 12 1 1 2. - 1 - <_> - - <_> - 2 0 20 10 -1. - <_> - 12 0 10 10 2. - <_> - - <_> - 22 2 3 6 -1. - <_> - 23 3 1 6 3. - 1 - <_> - - <_> - 3 2 6 3 -1. - <_> - 2 3 6 1 3. - 1 - <_> - - <_> - 21 1 4 6 -1. - <_> - 23 1 2 3 2. - <_> - 21 4 2 3 2. - <_> - - <_> - 0 1 4 6 -1. - <_> - 0 1 2 3 2. - <_> - 2 4 2 3 2. - <_> - - <_> - 24 0 1 6 -1. - <_> - 24 3 1 3 2. - <_> - - <_> - 0 0 1 6 -1. - <_> - 0 3 1 3 2. - <_> - - <_> - 18 0 6 6 -1. - <_> - 18 2 6 2 3. - <_> - - <_> - 5 1 15 4 -1. - <_> - 5 2 15 2 2. - <_> - - <_> - 4 8 18 1 -1. - <_> - 10 8 6 1 3. - <_> - - <_> - 8 6 6 4 -1. - <_> - 8 7 6 2 2. - <_> - - <_> - 9 5 8 2 -1. - <_> - 11 5 4 2 2. - <_> - - <_> - 5 0 6 6 -1. - <_> - 7 0 2 6 3. - <_> - - <_> - 21 8 2 1 -1. - <_> - 21 8 1 1 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 2 1 2. - 1 - <_> - - <_> - 17 4 8 4 -1. - <_> - 17 5 8 2 2. - <_> - - <_> - 6 0 13 2 -1. - <_> - 6 1 13 1 2. - <_> - - <_> - 21 5 4 6 -1. - <_> - 21 7 4 2 3. - <_> - - <_> - 0 5 4 6 -1. - <_> - 0 7 4 2 3. - <_> - - <_> - 21 8 2 1 -1. - <_> - 21 8 1 1 2. - <_> - - <_> - 2 8 2 1 -1. - <_> - 3 8 1 1 2. - <_> - - <_> - 23 0 2 1 -1. - <_> - 23 0 1 1 2. - 1 - <_> - - <_> - 4 0 15 4 -1. - <_> - 4 1 15 2 2. - <_> - - <_> - 15 1 10 8 -1. - <_> - 15 3 10 4 2. - <_> - - <_> - 0 5 4 2 -1. - <_> - 0 5 2 1 2. - <_> - 2 6 2 1 2. - <_> - - <_> - 23 0 2 1 -1. - <_> - 23 0 1 1 2. - 1 - <_> - - <_> - 0 5 1 4 -1. - <_> - 0 6 1 2 2. - <_> - - <_> - 19 13 4 2 -1. - <_> - 19 14 4 1 2. - <_> - - <_> - 7 12 2 2 -1. - <_> - 7 12 1 1 2. - <_> - 8 13 1 1 2. - <_> - - <_> - 1 0 24 8 -1. - <_> - 13 0 12 4 2. - <_> - 1 4 12 4 2. - <_> - - <_> - 2 4 3 3 -1. - <_> - 2 5 3 1 3. - <_> - - <_> - 20 6 4 3 -1. - <_> - 19 7 4 1 3. - 1 - <_> - - <_> - 5 6 3 4 -1. - <_> - 6 7 1 4 3. - 1 - <_> - - <_> - 16 11 2 2 -1. - <_> - 17 11 1 1 2. - <_> - 16 12 1 1 2. - <_> - - <_> - 7 11 2 2 -1. - <_> - 7 11 1 1 2. - <_> - 8 12 1 1 2. - <_> - - <_> - 9 5 9 3 -1. - <_> - 12 5 3 3 3. - <_> - - <_> - 0 0 6 1 -1. - <_> - 2 0 2 1 3. - <_> - - <_> - 17 4 8 1 -1. - <_> - 19 4 4 1 2. - <_> - - <_> - 7 5 9 3 -1. - <_> - 10 5 3 3 3. - <_> - - <_> - 17 4 8 1 -1. - <_> - 19 4 4 1 2. - <_> - - <_> - 0 4 8 1 -1. - <_> - 2 4 4 1 2. - <_> - - <_> - 16 11 2 2 -1. - <_> - 17 11 1 1 2. - <_> - 16 12 1 1 2. - <_> - - <_> - 6 11 12 2 -1. - <_> - 9 11 6 2 2. - <_> - - <_> - 4 6 20 9 -1. - <_> - 9 6 10 9 2. - <_> - - <_> - 6 8 12 2 -1. - <_> - 6 9 12 1 2. - <_> - - <_> - 6 8 13 4 -1. - <_> - 6 9 13 2 2. - <_> - - <_> - 2 13 4 2 -1. - <_> - 2 14 4 1 2. - <_> - - <_> - 11 1 3 12 -1. - <_> - 11 4 3 6 2. - <_> - - <_> - 7 10 11 4 -1. - <_> - 7 11 11 2 2. - <_> - - <_> - 5 9 15 6 -1. - <_> - 5 11 15 2 3. - <_> - - <_> - 1 5 14 10 -1. - <_> - 1 10 14 5 2. - <_> - - <_> - 13 10 2 2 -1. - <_> - 14 10 1 1 2. - <_> - 13 11 1 1 2. - <_> - - <_> - 0 0 4 2 -1. - <_> - 0 1 4 1 2. - <_> - - <_> - 18 3 4 2 -1. - <_> - 18 4 4 1 2. - <_> - - <_> - 0 7 4 4 -1. - <_> - 0 8 4 2 2. - <_> - - <_> - 12 12 6 2 -1. - <_> - 14 12 2 2 3. - <_> - - <_> - 7 0 3 1 -1. - <_> - 8 0 1 1 3. - <_> - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - <_> - - <_> - 8 0 2 1 -1. - <_> - 9 0 1 1 2. - <_> - - <_> - 18 3 2 10 -1. - <_> - 18 3 1 10 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 18 0 7 3 -1. - <_> - 18 1 7 1 3. - <_> - - <_> - 7 12 6 2 -1. - <_> - 9 12 2 2 3. - <_> - - <_> - 20 7 4 3 -1. - <_> - 20 8 4 1 3. - <_> - - <_> - 5 3 2 10 -1. - <_> - 6 3 1 10 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 15 0 6 2 -1. - <_> - 17 0 2 2 3. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 2 1 2 2. - <_> - - <_> - 22 1 2 12 -1. - <_> - 18 5 2 4 3. - 1 - <_> - - <_> - 4 0 12 3 -1. - <_> - 8 4 4 3 3. - 1 - <_> - - <_> - 14 13 2 2 -1. - <_> - 15 13 1 1 2. - <_> - 14 14 1 1 2. - <_> - - <_> - 11 6 3 3 -1. - <_> - 12 7 1 1 9. - <_> - - <_> - 15 1 10 8 -1. - <_> - 15 3 10 4 2. - <_> - - <_> - 0 1 10 8 -1. - <_> - 0 3 10 4 2. - <_> - - <_> - 11 3 14 10 -1. - <_> - 11 8 14 5 2. - <_> - - <_> - 0 0 24 12 -1. - <_> - 0 0 12 6 2. - <_> - 12 6 12 6 2. - <_> - - <_> - 20 7 4 3 -1. - <_> - 20 8 4 1 3. - <_> - - <_> - 0 1 7 3 -1. - <_> - 0 2 7 1 3. - <_> - - <_> - 20 7 4 3 -1. - <_> - 20 8 4 1 3. - <_> - - <_> - 0 7 1 8 -1. - <_> - 0 9 1 4 2. - <_> - - <_> - 22 4 3 4 -1. - <_> - 23 5 1 4 3. - 1 - <_> - - <_> - 11 2 12 1 -1. - <_> - 15 6 4 1 3. - 1 - <_> - - <_> - 22 4 3 4 -1. - <_> - 23 5 1 4 3. - 1 - <_> - - <_> - 1 7 4 3 -1. - <_> - 1 8 4 1 3. - <_> - - <_> - 13 9 6 2 -1. - <_> - 15 9 2 2 3. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 13 9 6 2 -1. - <_> - 15 9 2 2 3. - <_> - - <_> - 4 0 6 2 -1. - <_> - 6 0 2 2 3. - <_> - - <_> - 13 9 6 2 -1. - <_> - 15 9 2 2 3. - <_> - - <_> - 7 7 2 6 -1. - <_> - 7 7 1 6 2. - 1 - <_> - - <_> - 24 0 1 10 -1. - <_> - 24 5 1 5 2. - <_> - - <_> - 6 7 3 1 -1. - <_> - 7 7 1 1 3. - <_> - - <_> - 14 13 2 2 -1. - <_> - 15 13 1 1 2. - <_> - 14 14 1 1 2. - <_> - - <_> - 8 7 4 1 -1. - <_> - 9 7 2 1 2. - <_> - - <_> - 24 4 1 9 -1. - <_> - 21 7 1 3 3. - 1 - <_> - - <_> - 1 4 9 1 -1. - <_> - 4 7 3 1 3. - 1 - <_> - - <_> - 11 1 6 13 -1. - <_> - 13 1 2 13 3. - <_> - - <_> - 10 2 4 7 -1. - <_> - 11 2 2 7 2. - <_> - - <_> - 11 1 6 13 -1. - <_> - 13 1 2 13 3. - <_> - - <_> - 8 1 6 13 -1. - <_> - 10 1 2 13 3. - <_> - - <_> - 16 9 4 1 -1. - <_> - 16 9 2 1 2. - <_> - - <_> - 5 9 4 1 -1. - <_> - 7 9 2 1 2. - <_> - - <_> - 17 4 1 9 -1. - <_> - 14 7 1 3 3. - 1 - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 13 9 2 2 -1. - <_> - 14 9 1 1 2. - <_> - 13 10 1 1 2. - <_> - - <_> - 7 11 2 2 -1. - <_> - 7 11 1 1 2. - <_> - 8 12 1 1 2. - <_> - - <_> - 13 9 2 2 -1. - <_> - 14 9 1 1 2. - <_> - 13 10 1 1 2. - <_> - - <_> - 6 13 10 1 -1. - <_> - 11 13 5 1 2. - <_> - - <_> - 9 8 10 7 -1. - <_> - 9 8 5 7 2. - <_> - - <_> - 4 5 15 10 -1. - <_> - 9 5 5 10 3. - <_> - - <_> - 20 6 5 4 -1. - <_> - 20 7 5 2 2. - <_> - - <_> - 0 6 5 4 -1. - <_> - 0 7 5 2 2. - <_> - - <_> - 11 7 3 1 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 9 4 7 3 -1. - <_> - 9 5 7 1 3. - <_> - - <_> - 15 4 4 3 -1. - <_> - 15 4 2 3 2. - <_> - - <_> - 6 4 4 3 -1. - <_> - 8 4 2 3 2. - <_> - - <_> - 16 6 2 2 -1. - <_> - 17 6 1 1 2. - <_> - 16 7 1 1 2. - <_> - - <_> - 7 6 2 2 -1. - <_> - 7 6 1 1 2. - <_> - 8 7 1 1 2. - <_> - - <_> - 14 13 2 2 -1. - <_> - 15 13 1 1 2. - <_> - 14 14 1 1 2. - <_> - - <_> - 6 0 4 2 -1. - <_> - 6 0 4 1 2. - 1 - <_> - - <_> - 20 14 2 1 -1. - <_> - 20 14 1 1 2. - <_> - - <_> - 1 13 6 2 -1. - <_> - 1 13 3 1 2. - <_> - 4 14 3 1 2. - <_> - - <_> - 12 1 2 2 -1. - <_> - 12 2 2 1 2. - <_> - - <_> - 8 0 8 8 -1. - <_> - 8 0 4 4 2. - <_> - 12 4 4 4 2. - <_> - - <_> - 16 12 2 2 -1. - <_> - 17 12 1 1 2. - <_> - 16 13 1 1 2. - <_> - - <_> - 0 4 8 8 -1. - <_> - 0 4 4 4 2. - <_> - 4 8 4 4 2. - <_> - - <_> - 19 4 2 1 -1. - <_> - 19 4 1 1 2. - <_> - - <_> - 4 4 2 1 -1. - <_> - 5 4 1 1 2. - <_> - - <_> - 20 0 2 2 -1. - <_> - 21 0 1 1 2. - <_> - 20 1 1 1 2. - <_> - - <_> - 0 5 15 3 -1. - <_> - 0 6 15 1 3. - <_> - - <_> - 13 5 1 3 -1. - <_> - 13 6 1 1 3. - <_> - - <_> - 4 9 3 2 -1. - <_> - 5 10 1 2 3. - 1 - <_> - - <_> - 20 0 2 2 -1. - <_> - 21 0 1 1 2. - <_> - 20 1 1 1 2. - <_> - - <_> - 3 0 2 2 -1. - <_> - 3 0 1 1 2. - <_> - 4 1 1 1 2. - <_> - - <_> - 0 11 12 4 -1. - <_> - 0 11 6 2 2. - <_> - 6 13 6 2 2. - <_> - - <_> - 17 1 8 4 -1. - <_> - 17 3 8 2 2. - <_> - - <_> - 6 6 13 6 -1. - <_> - 6 8 13 2 3. - <_> - - <_> - 23 4 2 3 -1. - <_> - 23 4 1 3 2. - <_> - - <_> - 2 13 10 2 -1. - <_> - 2 14 10 1 2. - <_> - - <_> - 23 4 2 3 -1. - <_> - 23 4 1 3 2. - <_> - - <_> - 0 4 2 3 -1. - <_> - 1 4 1 3 2. - <_> - - <_> - 2 7 21 3 -1. - <_> - 9 8 7 1 9. - <_> - - <_> - 2 11 2 2 -1. - <_> - 2 11 1 2 2. - 1 - <_> - - <_> - 2 2 21 6 -1. - <_> - 9 4 7 2 9. - <_> - - <_> - 1 1 8 6 -1. - <_> - 1 3 8 2 3. - <_> - - <_> - 6 4 15 4 -1. - <_> - 6 5 15 2 2. - <_> - - <_> - 2 10 4 1 -1. - <_> - 3 11 2 1 2. - 1 - <_> - - <_> - 4 14 18 1 -1. - <_> - 4 14 9 1 2. - <_> - - <_> - 0 3 24 10 -1. - <_> - 0 3 12 5 2. - <_> - 12 8 12 5 2. - <_> - - <_> - 15 3 10 12 -1. - <_> - 20 3 5 6 2. - <_> - 15 9 5 6 2. - <_> - - <_> - 9 5 6 3 -1. - <_> - 9 6 6 1 3. - <_> - - <_> - 2 13 21 1 -1. - <_> - 9 13 7 1 3. - <_> - - <_> - 0 3 10 12 -1. - <_> - 0 3 5 6 2. - <_> - 5 9 5 6 2. - <_> - - <_> - 5 3 15 4 -1. - <_> - 5 4 15 2 2. - <_> - - <_> - 8 6 9 3 -1. - <_> - 8 7 9 1 3. - <_> - - <_> - 14 13 3 1 -1. - <_> - 15 13 1 1 3. - <_> - - <_> - 7 1 10 2 -1. - <_> - 7 2 10 1 2. - <_> - - <_> - 14 13 3 1 -1. - <_> - 15 13 1 1 3. - <_> - - <_> - 8 13 3 1 -1. - <_> - 9 13 1 1 3. - <_> - - <_> - 1 0 24 12 -1. - <_> - 13 0 12 6 2. - <_> - 1 6 12 6 2. - <_> - - <_> - 0 0 13 14 -1. - <_> - 0 7 13 7 2. - <_> - - <_> - 21 6 3 3 -1. - <_> - 20 7 3 1 3. - 1 - <_> - - <_> - 8 9 8 4 -1. - <_> - 8 10 8 2 2. - <_> - - <_> - 13 10 6 4 -1. - <_> - 15 10 2 4 3. - <_> - - <_> - 11 3 4 4 -1. - <_> - 11 3 2 4 2. - 1 - <_> - - <_> - 13 10 6 4 -1. - <_> - 15 10 2 4 3. - <_> - - <_> - 7 10 10 4 -1. - <_> - 7 12 10 2 2. - <_> - - <_> - 13 10 6 4 -1. - <_> - 15 10 2 4 3. - <_> - - <_> - 6 10 6 4 -1. - <_> - 8 10 2 4 3. - <_> - - <_> - 21 14 4 1 -1. - <_> - 21 14 2 1 2. - <_> - - <_> - 0 7 4 4 -1. - <_> - 0 8 4 2 2. - <_> - - <_> - 19 3 6 12 -1. - <_> - 22 3 3 6 2. - <_> - 19 9 3 6 2. - <_> - - <_> - 5 1 15 2 -1. - <_> - 5 2 15 1 2. - <_> - - <_> - 19 1 3 4 -1. - <_> - 19 2 3 2 2. - <_> - - <_> - 2 5 20 4 -1. - <_> - 12 5 10 4 2. - <_> - - <_> - 21 14 4 1 -1. - <_> - 21 14 2 1 2. - <_> - - <_> - 0 14 4 1 -1. - <_> - 2 14 2 1 2. - <_> - - <_> - 19 3 6 12 -1. - <_> - 22 3 3 6 2. - <_> - 19 9 3 6 2. - <_> - - <_> - 0 3 6 12 -1. - <_> - 0 3 3 6 2. - <_> - 3 9 3 6 2. - <_> - - <_> - 19 1 3 4 -1. - <_> - 19 2 3 2 2. - <_> - - <_> - 3 1 3 4 -1. - <_> - 3 2 3 2 2. - <_> - - <_> - 10 1 10 2 -1. - <_> - 10 1 5 2 2. - <_> - - <_> - 5 0 8 3 -1. - <_> - 9 0 4 3 2. - <_> - - <_> - 21 0 2 1 -1. - <_> - 21 0 1 1 2. - 1 - <_> - - <_> - 2 8 4 2 -1. - <_> - 3 9 2 2 2. - 1 - <_> - - <_> - 21 0 2 1 -1. - <_> - 21 0 1 1 2. - 1 - <_> - - <_> - 2 0 21 1 -1. - <_> - 9 0 7 1 3. - <_> - - <_> - 21 0 2 1 -1. - <_> - 21 0 1 1 2. - 1 - <_> - - <_> - 4 0 1 2 -1. - <_> - 4 0 1 1 2. - 1 - <_> - - <_> - 1 11 24 4 -1. - <_> - 13 11 12 2 2. - <_> - 1 13 12 2 2. - <_> - - <_> - 0 11 24 4 -1. - <_> - 0 11 12 2 2. - <_> - 12 13 12 2 2. - <_> - - <_> - 16 5 2 2 -1. - <_> - 17 5 1 1 2. - <_> - 16 6 1 1 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 18 1 6 2 -1. - <_> - 18 1 3 2 2. - <_> - - <_> - 2 0 21 2 -1. - <_> - 9 0 7 2 3. - <_> - - <_> - 13 0 10 15 -1. - <_> - 13 0 5 15 2. - <_> - - <_> - 6 0 13 4 -1. - <_> - 6 1 13 2 2. - <_> - - <_> - 11 3 9 3 -1. - <_> - 11 4 9 1 3. - <_> - - <_> - 3 2 10 3 -1. - <_> - 2 3 10 1 3. - 1 - <_> - - <_> - 6 6 16 8 -1. - <_> - 6 6 8 8 2. - <_> - - <_> - 5 0 12 15 -1. - <_> - 8 0 6 15 2. - <_> - - <_> - 23 8 2 4 -1. - <_> - 23 8 1 4 2. - <_> - - <_> - 0 5 3 3 -1. - <_> - 0 6 3 1 3. - <_> - - <_> - 21 5 4 2 -1. - <_> - 22 5 2 2 2. - <_> - - <_> - 0 5 4 2 -1. - <_> - 1 5 2 2 2. - <_> - - <_> - 21 2 3 4 -1. - <_> - 22 3 1 4 3. - 1 - <_> - - <_> - 4 2 4 3 -1. - <_> - 3 3 4 1 3. - 1 - <_> - - <_> - 23 2 2 2 -1. - <_> - 23 2 2 1 2. - 1 - <_> - - <_> - 0 5 4 4 -1. - <_> - 0 6 4 2 2. - <_> - - <_> - 23 7 2 5 -1. - <_> - 23 7 1 5 2. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 1 1 2 2. - <_> - - <_> - 23 1 2 4 -1. - <_> - 23 3 2 2 2. - <_> - - <_> - 0 1 2 4 -1. - <_> - 0 3 2 2 2. - <_> - - <_> - 19 3 5 4 -1. - <_> - 19 4 5 2 2. - <_> - - <_> - 12 1 6 2 -1. - <_> - 12 1 6 1 2. - 1 - <_> - - <_> - 19 11 6 4 -1. - <_> - 19 12 6 2 2. - <_> - - <_> - 1 3 6 4 -1. - <_> - 1 4 6 2 2. - <_> - - <_> - 23 0 2 1 -1. - <_> - 23 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 19 0 4 2 -1. - <_> - 20 0 2 2 2. - <_> - - <_> - 0 0 2 12 -1. - <_> - 0 0 1 6 2. - <_> - 1 6 1 6 2. - <_> - - <_> - 22 4 2 8 -1. - <_> - 23 4 1 4 2. - <_> - 22 8 1 4 2. - <_> - - <_> - 1 4 2 8 -1. - <_> - 1 4 1 4 2. - <_> - 2 8 1 4 2. - <_> - - <_> - 17 9 4 1 -1. - <_> - 17 9 2 1 2. - <_> - - <_> - 12 2 5 8 -1. - <_> - 10 4 5 4 2. - 1 - <_> - - <_> - 18 13 2 2 -1. - <_> - 19 13 1 1 2. - <_> - 18 14 1 1 2. - <_> - - <_> - 6 9 13 6 -1. - <_> - 6 11 13 2 3. - <_> - - <_> - 6 10 13 4 -1. - <_> - 6 11 13 2 2. - <_> - - <_> - 0 8 24 4 -1. - <_> - 0 8 12 2 2. - <_> - 12 10 12 2 2. - <_> - - <_> - 17 10 8 3 -1. - <_> - 17 11 8 1 3. - <_> - - <_> - 4 0 16 8 -1. - <_> - 4 0 8 4 2. - <_> - 12 4 8 4 2. - <_> - - <_> - 14 0 1 2 -1. - <_> - 14 1 1 1 2. - <_> - - <_> - 3 9 6 6 -1. - <_> - 5 9 2 6 3. - <_> - - <_> - 13 10 12 3 -1. - <_> - 16 10 6 3 2. - <_> - - <_> - 0 10 12 3 -1. - <_> - 3 10 6 3 2. - <_> - - <_> - 19 8 5 3 -1. - <_> - 19 9 5 1 3. - <_> - - <_> - 7 1 3 1 -1. - <_> - 8 1 1 1 3. - <_> - - <_> - 15 1 3 1 -1. - <_> - 16 1 1 1 3. - <_> - - <_> - 7 1 3 1 -1. - <_> - 8 1 1 1 3. - <_> - - <_> - 20 8 2 3 -1. - <_> - 20 9 2 1 3. - <_> - - <_> - 2 0 4 2 -1. - <_> - 3 0 2 2 2. - <_> - - <_> - 19 8 5 3 -1. - <_> - 19 9 5 1 3. - <_> - - <_> - 4 1 6 11 -1. - <_> - 6 1 2 11 3. - <_> - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - <_> - - <_> - 5 2 15 4 -1. - <_> - 5 3 15 2 2. - <_> - - <_> - 11 2 3 3 -1. - <_> - 11 3 3 1 3. - <_> - - <_> - 2 7 18 6 -1. - <_> - 11 7 9 6 2. - <_> - - <_> - 1 6 24 9 -1. - <_> - 7 6 12 9 2. - <_> - - <_> - 0 0 1 10 -1. - <_> - 0 5 1 5 2. - <_> - - <_> - 9 3 10 2 -1. - <_> - 9 4 10 1 2. - <_> - - <_> - 12 6 1 3 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - <_> - - <_> - 7 9 2 1 -1. - <_> - 8 9 1 1 2. - <_> - - <_> - 16 7 6 6 -1. - <_> - 19 7 3 3 2. - <_> - 16 10 3 3 2. - <_> - - <_> - 10 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 11 11 1 1 2. - <_> - - <_> - 16 9 2 2 -1. - <_> - 17 9 1 1 2. - <_> - 16 10 1 1 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 13 10 2 2 -1. - <_> - 14 10 1 1 2. - <_> - 13 11 1 1 2. - <_> - - <_> - 11 7 2 3 -1. - <_> - 11 8 2 1 3. - <_> - - <_> - 19 0 6 3 -1. - <_> - 19 1 6 1 3. - <_> - - <_> - 0 0 6 3 -1. - <_> - 0 1 6 1 3. - <_> - - <_> - 24 0 1 2 -1. - <_> - 24 1 1 1 2. - <_> - - <_> - 0 0 16 1 -1. - <_> - 4 0 8 1 2. - <_> - - <_> - 19 11 6 4 -1. - <_> - 19 12 6 2 2. - <_> - - <_> - 0 11 6 4 -1. - <_> - 0 12 6 2 2. - <_> - - <_> - 5 3 15 6 -1. - <_> - 5 6 15 3 2. - <_> - - <_> - 8 3 9 3 -1. - <_> - 8 4 9 1 3. - <_> - - <_> - 12 0 1 12 -1. - <_> - 12 3 1 6 2. - <_> - - <_> - 1 3 14 8 -1. - <_> - 1 7 14 4 2. - <_> - - <_> - 15 0 6 4 -1. - <_> - 17 0 2 4 3. - <_> - - <_> - 3 7 4 2 -1. - <_> - 3 7 2 1 2. - <_> - 5 8 2 1 2. - <_> - - <_> - 14 5 1 8 -1. - <_> - 14 9 1 4 2. - <_> - - <_> - 0 7 3 3 -1. - <_> - 0 8 3 1 3. - <_> - - <_> - 11 12 6 3 -1. - <_> - 13 12 2 3 3. - <_> - - <_> - 8 12 6 3 -1. - <_> - 10 12 2 3 3. - <_> - - <_> - 16 5 6 10 -1. - <_> - 19 5 3 5 2. - <_> - 16 10 3 5 2. - <_> - - <_> - 3 5 6 10 -1. - <_> - 3 5 3 5 2. - <_> - 6 10 3 5 2. - <_> - - <_> - 17 8 8 1 -1. - <_> - 19 8 4 1 2. - <_> - - <_> - 0 8 8 1 -1. - <_> - 2 8 4 1 2. - <_> - - <_> - 9 13 14 2 -1. - <_> - 9 13 7 2 2. - <_> - - <_> - 1 14 20 1 -1. - <_> - 6 14 10 1 2. - <_> - - <_> - 17 7 2 2 -1. - <_> - 18 7 1 1 2. - <_> - 17 8 1 1 2. - <_> - - <_> - 0 8 2 2 -1. - <_> - 0 9 2 1 2. - <_> - - <_> - 17 7 2 2 -1. - <_> - 18 7 1 1 2. - <_> - 17 8 1 1 2. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 13 10 2 2 -1. - <_> - 14 10 1 1 2. - <_> - 13 11 1 1 2. - <_> - - <_> - 4 0 6 4 -1. - <_> - 6 0 2 4 3. - <_> - - <_> - 10 0 6 2 -1. - <_> - 12 0 2 2 3. - <_> - - <_> - 8 1 8 3 -1. - <_> - 10 1 4 3 2. - <_> - - <_> - 14 6 7 2 -1. - <_> - 14 6 7 1 2. - 1 - <_> - - <_> - 8 10 4 1 -1. - <_> - 9 10 2 1 2. - <_> - - <_> - 16 11 2 2 -1. - <_> - 17 11 1 1 2. - <_> - 16 12 1 1 2. - <_> - - <_> - 7 11 2 2 -1. - <_> - 7 11 1 1 2. - <_> - 8 12 1 1 2. - <_> - - <_> - 16 11 2 2 -1. - <_> - 17 11 1 1 2. - <_> - 16 12 1 1 2. - <_> - - <_> - 7 11 2 2 -1. - <_> - 7 11 1 1 2. - <_> - 8 12 1 1 2. - <_> - - <_> - 17 9 4 1 -1. - <_> - 17 9 2 1 2. - <_> - - <_> - 4 9 4 1 -1. - <_> - 6 9 2 1 2. - <_> - - <_> - 11 8 3 4 -1. - <_> - 11 9 3 2 2. - <_> - - <_> - 9 6 3 2 -1. - <_> - 10 7 1 2 3. - 1 - <_> - - <_> - 21 0 4 8 -1. - <_> - 19 2 4 4 2. - 1 - <_> - - <_> - 4 0 8 4 -1. - <_> - 6 2 4 4 2. - 1 - <_> - - <_> - 20 1 5 2 -1. - <_> - 20 1 5 1 2. - 1 - <_> - - <_> - 0 6 6 4 -1. - <_> - 0 7 6 2 2. - <_> - - <_> - 20 6 5 4 -1. - <_> - 20 7 5 2 2. - <_> - - <_> - 6 8 3 1 -1. - <_> - 7 8 1 1 3. - <_> - - <_> - 1 8 24 2 -1. - <_> - 13 8 12 1 2. - <_> - 1 9 12 1 2. - <_> - - <_> - 8 8 8 3 -1. - <_> - 8 9 8 1 3. - <_> - - <_> - 17 11 6 4 -1. - <_> - 19 11 2 4 3. - <_> - - <_> - 0 0 18 1 -1. - <_> - 9 0 9 1 2. - <_> - - <_> - 14 6 3 2 -1. - <_> - 15 7 1 2 3. - 1 - <_> - - <_> - 5 6 13 2 -1. - <_> - 5 7 13 1 2. - <_> - - <_> - 14 6 3 2 -1. - <_> - 15 7 1 2 3. - 1 - <_> - - <_> - 10 6 2 6 -1. - <_> - 10 8 2 2 3. - <_> - - <_> - 20 1 5 2 -1. - <_> - 20 1 5 1 2. - 1 - <_> - - <_> - 5 1 2 5 -1. - <_> - 5 1 1 5 2. - 1 - <_> - - <_> - 24 7 1 8 -1. - <_> - 24 9 1 4 2. - <_> - - <_> - 7 7 11 3 -1. - <_> - 7 8 11 1 3. - <_> - - <_> - 13 11 2 2 -1. - <_> - 14 11 1 1 2. - <_> - 13 12 1 1 2. - <_> - - <_> - 10 11 3 1 -1. - <_> - 11 11 1 1 3. - <_> - - <_> - 24 7 1 8 -1. - <_> - 24 9 1 4 2. - <_> - - <_> - 10 5 2 4 -1. - <_> - 10 5 2 2 2. - 1 - <_> - - <_> - 22 1 2 3 -1. - <_> - 21 2 2 1 3. - 1 - <_> - - <_> - 3 1 3 2 -1. - <_> - 4 2 1 2 3. - 1 - <_> - - <_> - 16 4 3 3 -1. - <_> - 17 5 1 1 9. - <_> - - <_> - 3 0 3 2 -1. - <_> - 3 0 3 1 2. - 1 - <_> - - <_> - 17 0 8 3 -1. - <_> - 17 0 4 3 2. - <_> - - <_> - 0 12 4 3 -1. - <_> - 0 13 4 1 3. - <_> - - <_> - 2 3 21 3 -1. - <_> - 9 3 7 3 3. - <_> - - <_> - 8 1 2 5 -1. - <_> - 8 1 1 5 2. - 1 - <_> - - <_> - 19 7 6 4 -1. - <_> - 22 7 3 2 2. - <_> - 19 9 3 2 2. - <_> - - <_> - 0 7 6 4 -1. - <_> - 0 7 3 2 2. - <_> - 3 9 3 2 2. - <_> - - <_> - 24 4 1 4 -1. - <_> - 24 5 1 2 2. - <_> - - <_> - 4 7 3 4 -1. - <_> - 3 8 3 2 2. - 1 - <_> - - <_> - 17 9 4 1 -1. - <_> - 18 9 2 1 2. - <_> - - <_> - 4 9 4 1 -1. - <_> - 5 9 2 1 2. - <_> - - <_> - 23 6 2 2 -1. - <_> - 23 7 2 1 2. - <_> - - <_> - 0 6 2 2 -1. - <_> - 0 7 2 1 2. - <_> - - <_> - 12 0 3 1 -1. - <_> - 13 0 1 1 3. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 22 7 2 2 -1. - <_> - 23 7 1 1 2. - <_> - 22 8 1 1 2. - <_> - - <_> - 2 11 6 4 -1. - <_> - 4 11 2 4 3. - <_> - - <_> - 14 1 10 4 -1. - <_> - 19 1 5 2 2. - <_> - 14 3 5 2 2. - <_> - - <_> - 6 2 12 2 -1. - <_> - 6 3 12 1 2. - <_> - - <_> - 9 6 8 9 -1. - <_> - 9 9 8 3 3. - <_> - - <_> - 3 8 3 3 -1. - <_> - 4 9 1 1 9. - <_> - - <_> - 22 7 2 2 -1. - <_> - 23 7 1 1 2. - <_> - 22 8 1 1 2. - <_> - - <_> - 11 10 2 2 -1. - <_> - 11 10 1 1 2. - <_> - 12 11 1 1 2. - <_> - - <_> - 22 7 2 2 -1. - <_> - 23 7 1 1 2. - <_> - 22 8 1 1 2. - <_> - - <_> - 4 13 10 1 -1. - <_> - 9 13 5 1 2. - <_> - - <_> - 3 0 20 15 -1. - <_> - 3 0 10 15 2. - <_> - - <_> - 0 13 24 1 -1. - <_> - 6 13 12 1 2. - <_> - - <_> - 22 7 2 2 -1. - <_> - 23 7 1 1 2. - <_> - 22 8 1 1 2. - diff --git a/data/haarcascades/haarcascade_mcs_nose.xml b/data/haarcascades/haarcascade_mcs_nose.xml deleted file mode 100644 index d196df1307..0000000000 --- a/data/haarcascades/haarcascade_mcs_nose.xml +++ /dev/null @@ -1,39332 +0,0 @@ - - - -BOOST - HAAR - 18 - 15 - - 377 - - 0 - 20 - - <_> - 16 - -1.8310650587081909e+00 - - <_> - - 0 -1 0 3.6321789026260376e-02 - - -6.7726498842239380e-01 6.6873461008071899e-01 - <_> - - 0 -1 1 5.4485928267240524e-02 - - -4.4031769037246704e-01 4.8918509483337402e-01 - <_> - - 0 -1 2 -1.5089729428291321e-01 - - 6.3702392578125000e-01 -2.8146758675575256e-01 - <_> - - 0 -1 3 -7.9493917524814606e-02 - - 6.3470429182052612e-01 -1.6119189560413361e-01 - <_> - - 0 -1 4 -6.7041739821434021e-02 - - 5.9565997123718262e-01 -1.6454219818115234e-01 - <_> - - 0 -1 5 1.6542470455169678e-01 - - -2.9165010899305344e-02 2.7849620580673218e-01 - <_> - - 0 -1 6 1.4491100609302521e-01 - - -1.5930549800395966e-01 5.6260192394256592e-01 - <_> - - 0 -1 7 -1.2696940451860428e-02 - - -6.9244408607482910e-01 1.0427670180797577e-01 - <_> - - 0 -1 8 5.2858339622616768e-03 - - 7.3600113391876221e-02 -8.1359738111495972e-01 - <_> - - 0 -1 9 1.3196030259132385e-01 - - -8.5236929357051849e-02 6.4642858505249023e-01 - <_> - - 0 -1 10 2.6259789592586458e-05 - - -2.5225260853767395e-01 2.7700841426849365e-01 - <_> - - 0 -1 11 8.9456392743159086e-05 - - -1.5982529520988464e-01 1.7960309982299805e-01 - <_> - - 0 -1 12 -1.8172040581703186e-02 - - 4.6623438596725464e-01 -1.5989740192890167e-01 - <_> - - 0 -1 13 -1.1940079927444458e-01 - - 5.8289611339569092e-01 -1.2482699751853943e-01 - <_> - - 0 -1 14 -4.9619960784912109e-01 - - 7.5930988788604736e-01 -9.3943662941455841e-02 - <_> - - 0 -1 15 -1.8309399485588074e-01 - - 5.8175492286682129e-01 -8.8393591344356537e-02 - <_> - 24 - -1.7070330381393433e+00 - - <_> - - 0 -1 16 4.8528000712394714e-02 - - 1.5333959890995175e-04 -2.6736979980468750e+03 - <_> - - 0 -1 17 1.1161860078573227e-01 - - -1.3917839527130127e-01 4.7061970829963684e-01 - <_> - - 0 -1 18 1.4094239473342896e-01 - - -4.5902550220489502e-01 6.8740749359130859e-01 - <_> - - 0 -1 19 -1.5287929773330688e-01 - - 2.5948369503021240e-01 -4.5264568179845810e-02 - <_> - - 0 -1 20 5.7879261672496796e-02 - - -3.7455689907073975e-01 4.6996209025382996e-01 - <_> - - 0 -1 21 5.9482799842953682e-03 - - -3.3294659852981567e-01 2.7539891004562378e-01 - <_> - - 0 -1 22 -1.8460640311241150e-01 - - 4.8681849241256714e-01 -1.6400709748268127e-01 - <_> - - 0 -1 23 -6.6531449556350708e-03 - - -6.5238291025161743e-01 1.1169300228357315e-01 - <_> - - 0 -1 24 8.0141983926296234e-03 - - 1.1979129910469055e-01 -7.1780908107757568e-01 - <_> - - 0 -1 25 1.3707329332828522e-01 - - -1.4187979698181152e-01 3.2952371239662170e-01 - <_> - - 0 -1 26 9.0329283848404884e-03 - - 1.0413199663162231e-01 -7.3359811305999756e-01 - <_> - - 0 -1 27 -1.8033640086650848e-01 - - -5.4879492521286011e-01 7.1061477065086365e-02 - <_> - - 0 -1 28 -7.8154532238841057e-03 - - -6.8952822685241699e-01 1.0636539757251740e-01 - <_> - - 0 -1 29 -1.0885799676179886e-01 - - 7.0592081546783447e-01 -1.0026659816503525e-01 - <_> - - 0 -1 30 -1.7265169322490692e-01 - - 4.8955410718917847e-01 -1.3769739866256714e-01 - <_> - - 0 -1 31 5.7466980069875717e-02 - - 4.7874748706817627e-02 -3.3611130714416504e-01 - <_> - - 0 -1 32 -1.2948019802570343e-01 - - -6.7898839712142944e-01 1.0975400358438492e-01 - <_> - - 0 -1 33 -5.8118398301303387e-03 - - -5.0810492038726807e-01 5.3020551800727844e-02 - <_> - - 0 -1 34 -5.2181649953126907e-03 - - -7.4403452873229980e-01 7.3957882821559906e-02 - <_> - - 0 -1 35 -1.4101220294833183e-02 - - -5.1200342178344727e-01 2.9416909441351891e-02 - <_> - - 0 -1 36 -2.3739310563541949e-05 - - 2.0708249509334564e-01 -2.1835790574550629e-01 - <_> - - 0 -1 37 6.6746207885444164e-03 - - 7.8219272196292877e-02 -5.8582967519760132e-01 - <_> - - 0 -1 38 -6.5912399441003799e-03 - - -6.5275472402572632e-01 5.5090259760618210e-02 - <_> - - 0 -1 39 2.6057091355323792e-01 - - 2.0925529301166534e-02 -6.4536881446838379e-01 - <_> - 32 - -1.5818140506744385e+00 - - <_> - - 0 -1 40 -8.9073367416858673e-02 - - 5.4986131191253662e-01 -5.0310492515563965e-01 - <_> - - 0 -1 41 -4.7085169702768326e-02 - - 3.8556599617004395e-01 -1.6194720566272736e-01 - <_> - - 0 -1 42 1.3444259762763977e-01 - - -3.1617870926856995e-01 5.6394141912460327e-01 - <_> - - 0 -1 43 4.2632790282368660e-03 - - -2.2349369525909424e-01 9.7776100039482117e-02 - <_> - - 0 -1 44 1.2148299813270569e-01 - - -1.3394290208816528e-01 5.3553748130798340e-01 - <_> - - 0 -1 45 -3.3225349616259336e-03 - - -6.8287009000778198e-01 8.3227276802062988e-02 - <_> - - 0 -1 46 -7.7031590044498444e-03 - - -6.8243968486785889e-01 1.0678689926862717e-01 - <_> - - 0 -1 47 -3.5309780389070511e-02 - - -6.5210008621215820e-01 9.8716266453266144e-02 - <_> - - 0 -1 48 -3.0447470024228096e-02 - - 2.4795380234718323e-01 -2.5818860530853271e-01 - <_> - - 0 -1 49 4.8874127678573132e-03 - - 8.0552853643894196e-02 -6.3403171300888062e-01 - <_> - - 0 -1 50 -1.4157949388027191e-01 - - 6.3742321729660034e-01 -9.2166163027286530e-02 - <_> - - 0 -1 51 1.4565919339656830e-01 - - -1.0329990088939667e-01 5.8382421731948853e-01 - <_> - - 0 -1 52 -1.1624179780483246e-02 - - -6.8889158964157104e-01 8.2864850759506226e-02 - <_> - - 0 -1 53 -2.1747549995779991e-02 - - -6.2138390541076660e-01 4.7698199748992920e-02 - <_> - - 0 -1 54 1.8483079969882965e-02 - - -2.0105470716953278e-01 2.6797088980674744e-01 - <_> - - 0 -1 55 3.6982730031013489e-02 - - -1.6930599510669708e-01 2.2727000713348389e-01 - <_> - - 0 -1 56 1.6890119761228561e-02 - - 7.7417492866516113e-02 -7.6188772916793823e-01 - <_> - - 0 -1 57 -2.3899060487747192e-01 - - 4.3991729617118835e-01 -1.3199730217456818e-01 - <_> - - 0 -1 58 -1.8494910001754761e-01 - - 7.3120379447937012e-01 -7.2184756398200989e-02 - <_> - - 0 -1 59 9.1745406389236450e-03 - - 4.9446281045675278e-02 -5.7036292552947998e-01 - <_> - - 0 -1 60 7.2624902240931988e-03 - - 5.9888068586587906e-02 -7.0289182662963867e-01 - <_> - - 0 -1 61 5.2557058632373810e-02 - - -9.8877280950546265e-02 1.7423820495605469e-01 - <_> - - 0 -1 62 -3.0039260163903236e-02 - - 4.9870780110359192e-01 -7.9483807086944580e-02 - <_> - - 0 -1 63 -1.0927859693765640e-02 - - -4.5372459292411804e-01 4.9035139381885529e-02 - <_> - - 0 -1 64 -8.5020083934068680e-03 - - -7.3869508504867554e-01 5.1413938403129578e-02 - <_> - - 0 -1 65 5.5216949433088303e-02 - - -1.2393470108509064e-01 3.2208061218261719e-01 - <_> - - 0 -1 66 -8.8366940617561340e-02 - - 4.8289158940315247e-01 -8.4041692316532135e-02 - <_> - - 0 -1 67 1.7165759578347206e-02 - - -1.3141620159149170e-01 2.6804590225219727e-01 - <_> - - 0 -1 68 9.0517058968544006e-02 - - -9.3023687601089478e-02 4.0674149990081787e-01 - <_> - - 0 -1 69 1.5297899954020977e-02 - - -1.1356069892644882e-01 9.7625277936458588e-02 - <_> - - 0 -1 70 -3.0629519373178482e-02 - - 4.2534521222114563e-01 -8.6539477109909058e-02 - <_> - - 0 -1 71 7.9888060688972473e-02 - - 9.2437528073787689e-02 -3.9891800284385681e-01 - <_> - 46 - -1.5400149822235107e+00 - - <_> - - 0 -1 72 6.1446119099855423e-02 - - -4.5049899816513062e-01 4.8542028665542603e-01 - <_> - - 0 -1 73 1.8957859277725220e-01 - - -6.7046932876110077e-02 4.1977021098136902e-01 - <_> - - 0 -1 74 1.7365670204162598e-01 - - -2.8913810849189758e-01 5.2919161319732666e-01 - <_> - - 0 -1 75 -1.6413420438766479e-02 - - 2.8622248768806458e-01 -1.7473380267620087e-01 - <_> - - 0 -1 76 -1.0728030465543270e-02 - - 3.1400930881500244e-01 -2.8309330344200134e-01 - <_> - - 0 -1 77 7.7994461171329021e-03 - - -2.8578609228134155e-01 2.2502979636192322e-01 - <_> - - 0 -1 78 1.1308079585433006e-02 - - 1.0458890348672867e-01 -7.4274301528930664e-01 - <_> - - 0 -1 79 1.0321979969739914e-01 - - -1.1678420007228851e-01 4.9274420738220215e-01 - <_> - - 0 -1 80 5.6132972240447998e-03 - - 8.9059703052043915e-02 -5.3440308570861816e-01 - <_> - - 0 -1 81 -6.0694269835948944e-02 - - 5.5840307474136353e-01 -2.2769929841160774e-02 - <_> - - 0 -1 82 6.2487940303981304e-03 - - 7.5867779552936554e-02 -5.8721762895584106e-01 - <_> - - 0 -1 83 -4.0023289620876312e-02 - - 1.4124380052089691e-01 -1.7217030748724937e-02 - <_> - - 0 -1 84 -4.1220769286155701e-02 - - 5.1341092586517334e-01 -8.5405632853507996e-02 - <_> - - 0 -1 85 -3.5766770597547293e-03 - - -6.0522651672363281e-01 4.0932849049568176e-02 - <_> - - 0 -1 86 -9.9679548293352127e-03 - - -6.0633981227874756e-01 6.7360512912273407e-02 - <_> - - 0 -1 87 -6.7802299745380878e-03 - - 2.7804800868034363e-01 -1.7987030744552612e-01 - <_> - - 0 -1 88 -2.0799320191144943e-02 - - 4.8167890310287476e-01 -1.2403880059719086e-01 - <_> - - 0 -1 89 1.3915869593620300e-01 - - -4.4727511703968048e-02 5.8631712198257446e-01 - <_> - - 0 -1 90 -5.3711780346930027e-03 - - 2.0390869677066803e-01 -2.3393230140209198e-01 - <_> - - 0 -1 91 1.6477100551128387e-02 - - 4.0445160120725632e-02 -6.2500530481338501e-01 - <_> - - 0 -1 92 1.1078979820013046e-02 - - 5.7671349495649338e-02 -5.4169511795043945e-01 - <_> - - 0 -1 93 1.6222869977355003e-02 - - -1.6634809970855713e-01 2.0724619925022125e-01 - <_> - - 0 -1 94 -7.1675870567560196e-03 - - -4.7880691289901733e-01 7.5772762298583984e-02 - <_> - - 0 -1 95 5.8906380087137222e-02 - - -8.6781859397888184e-02 3.9148110151290894e-01 - <_> - - 0 -1 96 9.3187667429447174e-02 - - 6.1930160969495773e-02 -5.7390558719635010e-01 - <_> - - 0 -1 97 -2.0346969831734896e-03 - - -1.3607080280780792e-01 4.5008528977632523e-02 - <_> - - 0 -1 98 5.2366578020155430e-03 - - -1.8271179497241974e-01 1.6897720098495483e-01 - <_> - - 0 -1 99 -1.0588670149445534e-02 - - -5.5421608686447144e-01 4.9204610288143158e-02 - <_> - - 0 -1 100 1.0035210289061069e-02 - - 4.0936209261417389e-02 -6.8710482120513916e-01 - <_> - - 0 -1 101 -3.4406900405883789e-02 - - 3.5165968537330627e-01 -4.2896948754787445e-02 - <_> - - 0 -1 102 7.4508260004222393e-03 - - 4.9808371812105179e-02 -6.1689341068267822e-01 - <_> - - 0 -1 103 8.2342803478240967e-02 - - 8.3641491830348969e-02 -8.1014506518840790e-02 - <_> - - 0 -1 104 -6.1770621687173843e-02 - - 3.2327979803085327e-01 -7.9227820038795471e-02 - <_> - - 0 -1 105 3.6459080874919891e-02 - - -1.5961149334907532e-01 1.2324509769678116e-01 - <_> - - 0 -1 106 4.7497428953647614e-02 - - -1.6593399643898010e-01 2.9666280746459961e-01 - <_> - - 0 -1 107 -9.6670873463153839e-03 - - -5.8818382024765015e-01 3.3668398857116699e-02 - <_> - - 0 -1 108 6.9817090407013893e-03 - - 5.8536108583211899e-02 -4.7672748565673828e-01 - <_> - - 0 -1 109 -1.0325170308351517e-01 - - 2.2064709663391113e-01 -1.2364889681339264e-01 - <_> - - 0 -1 110 6.9648057222366333e-02 - - -1.0253950208425522e-01 3.7149900197982788e-01 - <_> - - 0 -1 111 -5.8889530599117279e-02 - - 3.2488629221916199e-01 -9.6266001462936401e-02 - <_> - - 0 -1 112 -2.9939830303192139e-02 - - 1.7989009618759155e-01 -1.5311330556869507e-01 - <_> - - 0 -1 113 8.5012055933475494e-03 - - 4.2618699371814728e-02 -5.1194471120834351e-01 - <_> - - 0 -1 114 -5.8030229993164539e-03 - - -4.9628180265426636e-01 5.9898991137742996e-02 - <_> - - 0 -1 115 2.2724280133843422e-02 - - -9.5675282180309296e-02 2.3382890224456787e-01 - <_> - - 0 -1 116 -3.7230949848890305e-02 - - 3.2164341211318970e-01 -9.2149853706359863e-02 - <_> - - 0 -1 117 1.6675420105457306e-02 - - 6.1764750629663467e-02 -4.7197958827018738e-01 - <_> - 56 - -1.5587489604949951e+00 - - <_> - - 0 -1 118 5.6446779519319534e-02 - - -4.7918748855590820e-01 4.9137350916862488e-01 - <_> - - 0 -1 119 1.0642809793353081e-02 - - -1.4483550190925598e-01 3.1846639513969421e-01 - <_> - - 0 -1 120 5.9832781553268433e-02 - - -3.6746969819068909e-01 2.7132889628410339e-01 - <_> - - 0 -1 121 -1.2132249772548676e-02 - - 1.2309090048074722e-01 -8.9722618460655212e-02 - <_> - - 0 -1 122 3.1117030885070562e-03 - - -3.5122260451316833e-01 2.2136250138282776e-01 - <_> - - 0 -1 123 -3.9773698896169662e-02 - - 2.0415990054607391e-01 -4.3302271515130997e-02 - <_> - - 0 -1 124 -1.8394950777292252e-02 - - 1.9368380308151245e-01 -2.2873930633068085e-01 - <_> - - 0 -1 125 9.2628989368677139e-03 - - -2.2149570286273956e-01 2.0678040385246277e-01 - <_> - - 0 -1 126 9.8584238439798355e-03 - - 5.5731959640979767e-02 -6.4374917745590210e-01 - <_> - - 0 -1 127 -7.9286862164735794e-03 - - -6.2890440225601196e-01 5.2759759128093719e-02 - <_> - - 0 -1 128 6.5443426370620728e-02 - - -1.0315559804439545e-01 4.4659650325775146e-01 - <_> - - 0 -1 129 3.2274659723043442e-02 - - -1.7194040119647980e-01 3.6625158786773682e-01 - <_> - - 0 -1 130 4.8025429248809814e-02 - - 8.4739521145820618e-02 -5.1354151964187622e-01 - <_> - - 0 -1 131 -1.1461510322988033e-02 - - -6.5055489540100098e-01 5.5119000375270844e-02 - <_> - - 0 -1 132 3.4770029596984386e-03 - - -1.6373869776725769e-01 2.6408019661903381e-01 - <_> - - 0 -1 133 -4.1784349828958511e-02 - - -7.4961292743682861e-01 3.7305548787117004e-02 - <_> - - 0 -1 134 -3.1991851329803467e-01 - - 4.0143400430679321e-01 -1.0337690263986588e-01 - <_> - - 0 -1 135 -1.2783069908618927e-01 - - 2.7113029360771179e-01 -9.5342872664332390e-03 - <_> - - 0 -1 136 6.3939742743968964e-02 - - -1.3559409976005554e-01 3.1885480880737305e-01 - <_> - - 0 -1 137 1.4868929982185364e-01 - - -7.4743010103702545e-02 5.0650840997695923e-01 - <_> - - 0 -1 138 1.0867480188608170e-02 - - 6.7860342562198639e-02 -5.6486707925796509e-01 - <_> - - 0 -1 139 -1.1102750152349472e-01 - - 3.6937940120697021e-01 -1.0240530222654343e-01 - <_> - - 0 -1 140 5.5490661412477493e-02 - - -1.3388429582118988e-01 3.2509210705757141e-01 - <_> - - 0 -1 141 -1.2321200221776962e-01 - - -4.4768521189689636e-01 7.3690727353096008e-02 - <_> - - 0 -1 142 -2.0375039428472519e-02 - - -6.6259127855300903e-01 4.2243398725986481e-02 - <_> - - 0 -1 143 -3.0578291043639183e-03 - - 1.8292440474033356e-01 -1.2179119884967804e-01 - <_> - - 0 -1 144 -1.6195779666304588e-02 - - -6.3178831338882446e-01 4.0226891636848450e-02 - <_> - - 0 -1 145 5.0967220216989517e-02 - - -7.7404953539371490e-02 2.4355340003967285e-01 - <_> - - 0 -1 146 5.8094091713428497e-02 - - -1.2381289899349213e-01 2.5356009602546692e-01 - <_> - - 0 -1 147 -4.2313118465244770e-03 - - -5.3830701112747192e-01 2.3571109399199486e-02 - <_> - - 0 -1 148 -1.8701169639825821e-02 - - 3.7818440794944763e-01 -8.0060847103595734e-02 - <_> - - 0 -1 149 2.5685389991849661e-03 - - -1.6534459590911865e-01 1.6206049919128418e-01 - <_> - - 0 -1 150 1.9677819218486547e-03 - - -1.7564539611339569e-01 1.5307140350341797e-01 - <_> - - 0 -1 151 3.5487169027328491e-01 - - -1.3613759540021420e-02 3.6016708612442017e-01 - <_> - - 0 -1 152 2.6808801293373108e-01 - - -8.0943092703819275e-02 3.6912909150123596e-01 - <_> - - 0 -1 153 6.2880717217922211e-02 - - -9.1311313211917877e-02 3.2952618598937988e-01 - <_> - - 0 -1 154 2.4154469370841980e-02 - - -6.8631373345851898e-02 4.5747300982475281e-01 - <_> - - 0 -1 155 9.1738719493150711e-03 - - 5.4542269557714462e-02 -5.1373308897018433e-01 - <_> - - 0 -1 156 -1.3073369860649109e-02 - - -5.9702301025390625e-01 3.6591410636901855e-02 - <_> - - 0 -1 157 6.8077309988439083e-03 - - -3.5432789474725723e-02 2.5199410319328308e-01 - <_> - - 0 -1 158 4.5149110257625580e-02 - - 6.3889928162097931e-02 -3.8367250561714172e-01 - <_> - - 0 -1 159 9.9950553849339485e-03 - - 1.3209559954702854e-02 -4.5377358794212341e-01 - <_> - - 0 -1 160 7.9643689095973969e-03 - - 3.3718310296535492e-02 -6.5334022045135498e-01 - <_> - - 0 -1 161 3.5672768950462341e-01 - - 3.2221440225839615e-02 -5.8003139495849609e-01 - <_> - - 0 -1 162 -3.6269061267375946e-02 - - 2.4694380164146423e-01 -1.0495760291814804e-01 - <_> - - 0 -1 163 4.2786229401826859e-02 - - -7.0717707276344299e-02 3.6938878893852234e-01 - <_> - - 0 -1 164 -1.1904439888894558e-03 - - -3.8284510374069214e-01 6.1551358550786972e-02 - <_> - - 0 -1 165 1.0740149766206741e-01 - - -2.1972050890326500e-02 1.8137590587139130e-01 - <_> - - 0 -1 166 7.7441677451133728e-02 - - -2.0107130706310272e-01 1.1222709715366364e-01 - <_> - - 0 -1 167 7.1143552660942078e-02 - - -3.1009899452328682e-02 7.3064021766185760e-02 - <_> - - 0 -1 168 -5.7338759303092957e-02 - - 4.0864440798759460e-01 -6.1444051563739777e-02 - <_> - - 0 -1 169 -7.2106160223484039e-02 - - 3.3982399106025696e-01 -8.6813166737556458e-02 - <_> - - 0 -1 170 -5.8580391108989716e-02 - - -4.9610468745231628e-01 6.1556190252304077e-02 - <_> - - 0 -1 171 4.4991881586611271e-03 - - 3.9484139531850815e-02 -4.6022048592567444e-01 - <_> - - 0 -1 172 5.7972371578216553e-02 - - -1.1365810036659241e-01 1.8178419768810272e-01 - <_> - - 0 -1 173 4.1217011213302612e-01 - - 1.7291519790887833e-02 -8.0449968576431274e-01 - <_> - 84 - -1.5197360515594482e+00 - - <_> - - 0 -1 174 -4.9232240766286850e-02 - - 4.0377280116081238e-01 -4.2361000180244446e-01 - <_> - - 0 -1 175 2.7331050485372543e-02 - - -1.3277700543403625e-01 2.0733749866485596e-01 - <_> - - 0 -1 176 -4.5100759714841843e-02 - - 3.1615048646926880e-01 -4.2044240236282349e-01 - <_> - - 0 -1 177 -2.5283211469650269e-01 - - -5.7497388124465942e-01 6.4437933266162872e-02 - <_> - - 0 -1 178 -4.2795531451702118e-02 - - 1.2526020407676697e-01 -3.6320659518241882e-01 - <_> - - 0 -1 179 -1.0599119961261749e-01 - - -5.9337782859802246e-01 1.1679250001907349e-01 - <_> - - 0 -1 180 7.1173040196299553e-03 - - -2.0296379923820496e-01 2.1597969532012939e-01 - <_> - - 0 -1 181 -1.1543310247361660e-02 - - -5.6954711675643921e-01 6.9512702524662018e-02 - <_> - - 0 -1 182 2.5941779837012291e-02 - - 4.0675889700651169e-02 -5.9662687778472900e-01 - <_> - - 0 -1 183 -1.1117800325155258e-01 - - 3.9230749011039734e-01 -8.5263282060623169e-02 - <_> - - 0 -1 184 1.3980209827423096e-01 - - -2.0322300493717194e-01 2.5884169340133667e-01 - <_> - - 0 -1 185 2.2344760596752167e-02 - - -2.2175629436969757e-01 1.5351130068302155e-01 - <_> - - 0 -1 186 3.5640481859445572e-02 - - -1.1393369734287262e-01 2.9229050874710083e-01 - <_> - - 0 -1 187 8.0998390913009644e-03 - - 3.9572209119796753e-02 -6.6712599992752075e-01 - <_> - - 0 -1 188 5.3474139422178268e-02 - - -7.6794572174549103e-02 4.3219769001007080e-01 - <_> - - 0 -1 189 -1.3862100429832935e-02 - - 8.4603689610958099e-02 -1.6059190034866333e-01 - <_> - - 0 -1 190 -7.7099740505218506e-02 - - 5.4772442579269409e-01 -6.6370002925395966e-02 - <_> - - 0 -1 191 -1.2801369652152061e-02 - - -5.5477362871170044e-01 5.6784640997648239e-02 - <_> - - 0 -1 192 -1.0235139779979363e-04 - - 1.4509449899196625e-01 -1.9509540498256683e-01 - <_> - - 0 -1 193 7.0487200282514095e-03 - - 4.0054310113191605e-02 -4.4429570436477661e-01 - <_> - - 0 -1 194 -4.5558041892945766e-03 - - -4.3548169732093811e-01 6.0629911720752716e-02 - <_> - - 0 -1 195 1.9300010055303574e-02 - - -7.1191310882568359e-02 8.1069536507129669e-02 - <_> - - 0 -1 196 5.4058600217103958e-03 - - -1.4167229831218719e-01 1.9680340588092804e-01 - <_> - - 0 -1 197 -8.6945146322250366e-03 - - -1.3133870065212250e-01 2.0501429215073586e-02 - <_> - - 0 -1 198 9.7174253314733505e-03 - - -1.8720309436321259e-01 1.8761770427227020e-01 - <_> - - 0 -1 199 -1.1155830323696136e-01 - - 4.0864959359169006e-01 -6.9993183016777039e-02 - <_> - - 0 -1 200 9.7640797495841980e-02 - - -1.2449839711189270e-01 2.1617740392684937e-01 - <_> - - 0 -1 201 -1.5061390399932861e-01 - - -3.8674619793891907e-01 5.4316818714141846e-02 - <_> - - 0 -1 202 4.9472171813249588e-03 - - 4.3653231114149094e-02 -5.1559001207351685e-01 - <_> - - 0 -1 203 -2.0495539531111717e-02 - - -5.4416948556900024e-01 7.6605947688221931e-03 - <_> - - 0 -1 204 -2.7278669178485870e-02 - - 4.2674958705902100e-01 -5.6518279016017914e-02 - <_> - - 0 -1 205 1.3524649664759636e-02 - - -5.0716150552034378e-02 1.8381009995937347e-01 - <_> - - 0 -1 206 -9.4986647367477417e-02 - - -4.2324599623680115e-01 5.2298299968242645e-02 - <_> - - 0 -1 207 1.1051560193300247e-01 - - 3.5527960862964392e-03 -4.1661360859870911e-01 - <_> - - 0 -1 208 -1.3192519545555115e-01 - - -6.2827968597412109e-01 3.9149269461631775e-02 - <_> - - 0 -1 209 1.9424719735980034e-02 - - 6.5935368184000254e-04 -5.7528150081634521e-01 - <_> - - 0 -1 210 1.4707759954035282e-02 - - 3.9024401456117630e-02 -5.6517869234085083e-01 - <_> - - 0 -1 211 2.9291698592714965e-04 - - -1.2926730513572693e-01 1.2589070200920105e-01 - <_> - - 0 -1 212 2.1614220459014177e-03 - - -1.3799719512462616e-01 1.6510820388793945e-01 - <_> - - 0 -1 213 -4.8753958940505981e-01 - - 4.3802809715270996e-01 -6.0623701661825180e-02 - <_> - - 0 -1 214 5.0596840679645538e-02 - - -4.3501000851392746e-02 5.1223617792129517e-01 - <_> - - 0 -1 215 1.9822390377521515e-01 - - 1.6843929886817932e-02 -4.5089399814605713e-01 - <_> - - 0 -1 216 -5.2561469376087189e-02 - - 6.1911600828170776e-01 -3.3245678991079330e-02 - <_> - - 0 -1 217 3.9434649050235748e-02 - - -1.3324570655822754e-01 1.5556560456752777e-01 - <_> - - 0 -1 218 -8.2802558317780495e-03 - - -4.6491861343383789e-01 4.6377800405025482e-02 - <_> - - 0 -1 219 1.8781690299510956e-01 - - -7.3843918740749359e-02 2.0355209708213806e-01 - <_> - - 0 -1 220 5.9288300573825836e-02 - - -1.0040319710969925e-01 2.9306849837303162e-01 - <_> - - 0 -1 221 4.8330631107091904e-03 - - -1.2360379844903946e-01 1.8227760493755341e-01 - <_> - - 0 -1 222 1.3462300412356853e-02 - - -8.6501419544219971e-02 2.5453040003776550e-01 - <_> - - 0 -1 223 1.1278780177235603e-02 - - 3.5953551530838013e-02 -3.6370408535003662e-01 - <_> - - 0 -1 224 1.1120849847793579e-01 - - 4.1156098246574402e-02 -4.9355891346931458e-01 - <_> - - 0 -1 225 5.8954879641532898e-03 - - 8.6054708808660507e-03 -5.7748162746429443e-01 - <_> - - 0 -1 226 7.0609137765131891e-05 - - -1.9438520073890686e-01 1.0896600037813187e-01 - <_> - - 0 -1 227 1.1162689886987209e-02 - - -1.0524000227451324e-01 1.7699919641017914e-01 - <_> - - 0 -1 228 1.4758500270545483e-02 - - 3.3827111124992371e-02 -5.7838040590286255e-01 - <_> - - 0 -1 229 6.5100449137389660e-03 - - 1.2222490273416042e-02 -6.8323171138763428e-01 - <_> - - 0 -1 230 1.3240260072052479e-02 - - 3.1728319823741913e-02 -4.9623319506645203e-01 - <_> - - 0 -1 231 -2.1011430025100708e-01 - - -4.9222511053085327e-01 5.4596872068941593e-03 - <_> - - 0 -1 232 2.4140250682830811e-01 - - 3.1461920589208603e-02 -5.6909531354904175e-01 - <_> - - 0 -1 233 3.8006789982318878e-03 - - -6.5067090094089508e-02 3.7642251700162888e-02 - <_> - - 0 -1 234 1.2624409794807434e-01 - - 3.9377398788928986e-02 -4.5900979638099670e-01 - <_> - - 0 -1 235 1.3010799884796143e-02 - - -5.7910811156034470e-02 2.9622611403465271e-01 - <_> - - 0 -1 236 7.1800998412072659e-03 - - 3.4249510616064072e-02 -5.6361818313598633e-01 - <_> - - 0 -1 237 2.4246750399470329e-02 - - -1.0864839702844620e-01 1.0131549835205078e-01 - <_> - - 0 -1 238 -1.6966859996318817e-01 - - -3.4119209647178650e-01 4.9988009035587311e-02 - <_> - - 0 -1 239 -2.0461060106754303e-02 - - -2.0795580744743347e-01 3.4589329734444618e-03 - <_> - - 0 -1 240 -2.1308129653334618e-02 - - 5.0270938873291016e-01 -4.0076468139886856e-02 - <_> - - 0 -1 241 -1.0930839926004410e-02 - - 1.5635550022125244e-01 -7.5159102678298950e-02 - <_> - - 0 -1 242 9.9652167409658432e-03 - - 3.6286398768424988e-02 -5.0529891252517700e-01 - <_> - - 0 -1 243 -3.3498809207230806e-03 - - -2.7242329716682434e-01 2.7380689978599548e-02 - <_> - - 0 -1 244 5.9739351272583008e-02 - - 2.6872010901570320e-02 -6.3886368274688721e-01 - <_> - - 0 -1 245 1.2781299650669098e-01 - - 1.4498339733108878e-03 -3.8336989283561707e-01 - <_> - - 0 -1 246 2.9313340783119202e-03 - - -1.3099479675292969e-01 1.2987799942493439e-01 - <_> - - 0 -1 247 6.1392742209136486e-03 - - 1.0834789834916592e-02 -3.1701850891113281e-01 - <_> - - 0 -1 248 -8.1134513020515442e-02 - - -3.5706749558448792e-01 4.9477528780698776e-02 - <_> - - 0 -1 249 -6.0443039983510971e-02 - - 4.0889498591423035e-01 -2.2163810208439827e-02 - <_> - - 0 -1 250 5.9390361420810223e-03 - - -1.0460360348224640e-01 1.9445130228996277e-01 - <_> - - 0 -1 251 7.8998396929819137e-05 - - -4.7956719994544983e-02 5.7118128985166550e-02 - <_> - - 0 -1 252 -1.8057189881801605e-03 - - -2.9241380095481873e-01 5.8119218796491623e-02 - <_> - - 0 -1 253 6.7375837825238705e-03 - - -8.8656462728977203e-02 4.4145271182060242e-02 - <_> - - 0 -1 254 5.5221098591573536e-05 - - -1.2490449845790863e-01 1.2661279737949371e-01 - <_> - - 0 -1 255 2.4163089692592621e-02 - - -1.3393550179898739e-02 3.4677559137344360e-01 - <_> - - 0 -1 256 1.2786190025508404e-02 - - -5.6848809123039246e-02 2.7275329828262329e-01 - <_> - - 0 -1 257 -1.3572210446000099e-03 - - 6.5408997237682343e-02 -1.4144480228424072e-01 - <_> - 99 - -1.5084979534149170e+00 - - <_> - - 0 -1 258 1.2013850361108780e-01 - - -3.6573138833045959e-01 3.6293190717697144e-01 - <_> - - 0 -1 259 -1.4620110392570496e-01 - - 3.9655679464340210e-01 -1.9461369514465332e-01 - <_> - - 0 -1 260 1.2343060225248337e-02 - - -2.4749830365180969e-01 2.2562310099601746e-01 - <_> - - 0 -1 261 3.2748850062489510e-03 - - 7.2104498744010925e-02 -3.8964301347732544e-01 - <_> - - 0 -1 262 2.4311800301074982e-01 - - 9.4664301723241806e-03 1.0626879882812500e+03 - <_> - - 0 -1 263 3.9923518896102905e-02 - - -1.2903560698032379e-01 1.9358199834823608e-01 - <_> - - 0 -1 264 -7.0425998419523239e-03 - - 1.5446980297565460e-01 -2.6546320319175720e-01 - <_> - - 0 -1 265 6.5724221058189869e-03 - - 7.3708683252334595e-02 -5.8167362213134766e-01 - <_> - - 0 -1 266 -2.3335739970207214e-02 - - -4.2724540829658508e-01 8.8655106723308563e-02 - <_> - - 0 -1 267 -2.6215979829430580e-02 - - 3.5602480173110962e-01 -1.0141780227422714e-01 - <_> - - 0 -1 268 1.1400490067899227e-02 - - -1.1014410108327866e-01 3.6441218852996826e-01 - <_> - - 0 -1 269 1.4520609751343727e-02 - - 2.1424520760774612e-02 -4.9028620123863220e-01 - <_> - - 0 -1 270 -8.5834655910730362e-03 - - -6.5257197618484497e-01 5.4663181304931641e-02 - <_> - - 0 -1 271 -1.3745459914207458e-01 - - -5.0492751598358154e-01 5.2730988711118698e-02 - <_> - - 0 -1 272 -1.2615700252354145e-02 - - -6.2455308437347412e-01 3.1615808606147766e-02 - <_> - - 0 -1 273 -2.3604110538144596e-05 - - 9.8741486668586731e-02 -9.4690948724746704e-02 - <_> - - 0 -1 274 -5.8249959693057463e-05 - - 1.4451199769973755e-01 -1.6137890517711639e-01 - <_> - - 0 -1 275 -1.9951239228248596e-02 - - -3.7731361389160156e-01 2.4471480399370193e-02 - <_> - - 0 -1 276 -5.4968569427728653e-02 - - -4.4058069586753845e-01 5.3490400314331055e-02 - <_> - - 0 -1 277 -1.6939230263233185e-02 - - -6.6650348901748657e-01 3.1559631228446960e-02 - <_> - - 0 -1 278 1.1090139858424664e-02 - - 3.1197320669889450e-02 -5.4754877090454102e-01 - <_> - - 0 -1 279 2.8986210003495216e-02 - - -1.2510849535465240e-01 9.1882318258285522e-02 - <_> - - 0 -1 280 -1.0453460365533829e-01 - - 4.3575459718704224e-01 -6.0676250606775284e-02 - <_> - - 0 -1 281 -4.6273069456219673e-03 - - 9.7388513386249542e-02 -9.1208413243293762e-02 - <_> - - 0 -1 282 5.1698398590087891e-01 - - -6.0991138219833374e-02 4.8797199130058289e-01 - <_> - - 0 -1 283 -6.6743656992912292e-02 - - 3.7274169921875000e-01 -6.3504636287689209e-02 - <_> - - 0 -1 284 1.5470350161194801e-02 - - 6.1050411313772202e-02 -4.8717978596687317e-01 - <_> - - 0 -1 285 -3.5926289856433868e-03 - - 1.4211909472942352e-01 -1.5088430047035217e-01 - <_> - - 0 -1 286 -2.0565569400787354e-01 - - -4.7814959287643433e-01 4.3618928641080856e-02 - <_> - - 0 -1 287 2.9654990881681442e-02 - - -3.5474069416522980e-02 1.8964229524135590e-01 - <_> - - 0 -1 288 1.3284200429916382e-01 - - 5.5517818778753281e-02 -3.9714470505714417e-01 - <_> - - 0 -1 289 3.3759230282157660e-03 - - 4.1567429900169373e-02 -3.6205479502677917e-01 - <_> - - 0 -1 290 5.4163701133802533e-04 - - -1.8664340674877167e-01 1.0409829765558243e-01 - <_> - - 0 -1 291 -5.2731011062860489e-02 - - 2.7602180838584900e-01 -2.7059659361839294e-02 - <_> - - 0 -1 292 -6.2107551842927933e-02 - - 3.1340470910072327e-01 -6.9655612111091614e-02 - <_> - - 0 -1 293 -1.3962079770863056e-02 - - 4.1585158556699753e-02 -1.0574489831924438e-01 - <_> - - 0 -1 294 5.9113580733537674e-02 - - -1.1327149718999863e-01 2.1400369703769684e-01 - <_> - - 0 -1 295 -3.2472780346870422e-01 - - -2.1028089523315430e-01 1.4781720004975796e-02 - <_> - - 0 -1 296 -9.5277121290564537e-03 - - 1.0578139871358871e-01 -2.1662670373916626e-01 - <_> - - 0 -1 297 -5.5769551545381546e-02 - - 2.7192020416259766e-01 -2.1369809284806252e-02 - <_> - - 0 -1 298 1.3918150216341019e-02 - - -8.8893227279186249e-02 2.5558671355247498e-01 - <_> - - 0 -1 299 2.3373179137706757e-03 - - -1.1573249846696854e-01 1.5424209833145142e-01 - <_> - - 0 -1 300 7.1918689645826817e-03 - - 4.1037619113922119e-02 -5.0523638725280762e-01 - <_> - - 0 -1 301 8.5471794009208679e-03 - - 1.4381350018084049e-02 -2.3163309693336487e-01 - <_> - - 0 -1 302 -3.2956521026790142e-03 - - -2.8280371427536011e-01 6.1899840831756592e-02 - <_> - - 0 -1 303 -2.2070689126849174e-02 - - 1.4894370734691620e-01 -9.4912350177764893e-02 - <_> - - 0 -1 304 1.6646440327167511e-01 - - -5.9046350419521332e-02 4.5291060209274292e-01 - <_> - - 0 -1 305 7.9817809164524078e-03 - - -7.0236042141914368e-02 1.2004370242357254e-01 - <_> - - 0 -1 306 7.7218217775225639e-03 - - 4.7613430768251419e-02 -4.1645199060440063e-01 - <_> - - 0 -1 307 2.8179560104035772e-05 - - -1.1355110257863998e-01 9.9581547081470490e-02 - <_> - - 0 -1 308 1.1535449884831905e-02 - - 4.7971371561288834e-02 -4.7012269496917725e-01 - <_> - - 0 -1 309 -4.1789751499891281e-02 - - 1.8016649782657623e-01 -9.2361323535442352e-02 - <_> - - 0 -1 310 7.5845858082175255e-03 - - -1.1702799797058105e-01 1.5177269279956818e-01 - <_> - - 0 -1 311 1.1714509688317776e-02 - - -3.9957709610462189e-02 5.6379120796918869e-02 - <_> - - 0 -1 312 8.0904200673103333e-02 - - -5.8665640652179718e-02 3.2547131180763245e-01 - <_> - - 0 -1 313 1.1185820214450359e-02 - - -1.5692700445652008e-01 1.0740319639444351e-01 - <_> - - 0 -1 314 2.0746290683746338e-02 - - -7.2714947164058685e-02 2.9882580041885376e-01 - <_> - - 0 -1 315 7.1547999978065491e-03 - - 5.0220601260662079e-02 -3.8929650187492371e-01 - <_> - - 0 -1 316 -4.7662649303674698e-03 - - 1.0623099654912949e-01 -1.6408999264240265e-01 - <_> - - 0 -1 317 1.3244680128991604e-02 - - -3.4063499420881271e-02 3.1890881061553955e-01 - <_> - - 0 -1 318 2.0384900271892548e-03 - - 3.9936680346727371e-02 -4.6564960479736328e-01 - <_> - - 0 -1 319 2.2383779287338257e-02 - - 1.9574180245399475e-02 -3.1799200177192688e-01 - <_> - - 0 -1 320 -6.0196588747203350e-03 - - -4.0058508515357971e-01 4.1111808270215988e-02 - <_> - - 0 -1 321 1.3340399600565434e-02 - - 7.2229830548167229e-03 -3.5855838656425476e-01 - <_> - - 0 -1 322 1.6548049449920654e-01 - - 3.6020029336214066e-02 -4.4204410910606384e-01 - <_> - - 0 -1 323 -1.7267789691686630e-02 - - 9.5772877335548401e-02 -3.0379680916666985e-02 - <_> - - 0 -1 324 3.7873580586165190e-03 - - -1.3409850001335144e-01 1.2926609814167023e-01 - <_> - - 0 -1 325 5.5727548897266388e-03 - - -6.6907882690429688e-02 1.7382170259952545e-01 - <_> - - 0 -1 326 8.5729602724313736e-03 - - 3.0721880495548248e-02 -5.8534258604049683e-01 - <_> - - 0 -1 327 -2.6385819539427757e-02 - - 1.7780029773712158e-01 -3.9368398487567902e-02 - <_> - - 0 -1 328 1.1899930424988270e-02 - - -5.7148940861225128e-02 3.0101099610328674e-01 - <_> - - 0 -1 329 6.8353079259395599e-02 - - 2.9185149818658829e-02 -1.5513670444488525e-01 - <_> - - 0 -1 330 1.0824030265212059e-02 - - -1.3470290601253510e-01 1.3852770626544952e-01 - <_> - - 0 -1 331 8.8032193481922150e-02 - - -3.6536350846290588e-02 2.3603020608425140e-01 - <_> - - 0 -1 332 -2.5776170194149017e-02 - - 1.8358540534973145e-01 -1.3343839347362518e-01 - <_> - - 0 -1 333 8.2010023295879364e-02 - - 1.1817749589681625e-02 -3.1878089904785156e-01 - <_> - - 0 -1 334 -2.0370729267597198e-02 - - 2.5035229325294495e-01 -7.0230402052402496e-02 - <_> - - 0 -1 335 7.8417092561721802e-02 - - 2.5404049083590508e-02 -2.1633470058441162e-01 - <_> - - 0 -1 336 5.4000681266188622e-03 - - 3.9877630770206451e-02 -3.8197609782218933e-01 - <_> - - 0 -1 337 1.1655789799988270e-02 - - 8.5724918171763420e-03 -4.6817851066589355e-01 - <_> - - 0 -1 338 6.1775790527462959e-05 - - -1.7354169487953186e-01 9.0420998632907867e-02 - <_> - - 0 -1 339 -1.8026469275355339e-02 - - -7.9275929927825928e-01 9.2333797365427017e-03 - <_> - - 0 -1 340 2.1709210705012083e-03 - - -8.4628887474536896e-02 1.6544300317764282e-01 - <_> - - 0 -1 341 -8.2279697060585022e-02 - - 2.1551139652729034e-01 -9.1900646686553955e-02 - <_> - - 0 -1 342 1.0293359868228436e-02 - - 2.3490300402045250e-02 -6.7681080102920532e-01 - <_> - - 0 -1 343 -2.1881979703903198e-01 - - 5.0478667020797729e-01 -3.1892780214548111e-02 - <_> - - 0 -1 344 -2.2118939086794853e-02 - - -6.3159322738647461e-01 2.5988319888710976e-02 - <_> - - 0 -1 345 2.2942360490560532e-02 - - -4.0672279894351959e-02 3.5672950744628906e-01 - <_> - - 0 -1 346 -5.6763160973787308e-02 - - 3.5523039102554321e-01 -3.8303978741168976e-02 - <_> - - 0 -1 347 -7.5660292059183121e-03 - - -3.7110349535942078e-01 1.9238779321312904e-02 - <_> - - 0 -1 348 1.2348339706659317e-01 - - 2.1532310172915459e-02 -6.3291150331497192e-01 - <_> - - 0 -1 349 2.7259990019956604e-05 - - -1.2036570161581039e-01 1.0520099848508835e-01 - <_> - - 0 -1 350 8.5555076599121094e-02 - - 3.4211669117212296e-02 -4.8727419972419739e-01 - <_> - - 0 -1 351 -1.4981040358543396e-01 - - 4.2568850517272949e-01 -4.0688131004571915e-02 - <_> - - 0 -1 352 2.4900440126657486e-02 - - -4.6901259571313858e-02 2.8062260150909424e-01 - <_> - - 0 -1 353 7.8607350587844849e-03 - - 5.2375709637999535e-03 -9.7636777162551880e-01 - <_> - - 0 -1 354 7.3002476710826159e-05 - - -1.6680990159511566e-01 1.0618969798088074e-01 - <_> - - 0 -1 355 1.7788860201835632e-01 - - -1.6729630529880524e-02 1.7790630459785461e-01 - <_> - - 0 -1 356 1.2957760132849216e-02 - - 3.2777778804302216e-02 -4.4296708703041077e-01 - <_> - 107 - -1.4449690580368042e+00 - - <_> - - 0 -1 357 -6.7150183022022247e-02 - - 3.9577248692512512e-01 -3.1510940194129944e-01 - <_> - - 0 -1 358 4.8962850123643875e-02 - - -2.6961261034011841e-01 1.6869769990444183e-01 - <_> - - 0 -1 359 2.7194418944418430e-03 - - -3.5195991396903992e-01 2.2836600244045258e-01 - <_> - - 0 -1 360 -5.1611121743917465e-03 - - 2.4076780676841736e-01 -2.2074960172176361e-01 - <_> - - 0 -1 361 2.3630170524120331e-01 - - -1.6534950584173203e-02 -7.9190631103515625e+02 - <_> - - 0 -1 362 -1.9205499440431595e-02 - - 3.6792600154876709e-01 -5.1191650331020355e-02 - <_> - - 0 -1 363 3.8221171125769615e-03 - - -1.4513429999351501e-01 3.2845288515090942e-01 - <_> - - 0 -1 364 -1.1440079659223557e-02 - - -3.5804128646850586e-01 1.1914189904928207e-01 - <_> - - 0 -1 365 8.8761039078235626e-03 - - -2.1450379490852356e-01 1.7957879602909088e-01 - <_> - - 0 -1 366 8.4572024643421173e-03 - - -6.9746732711791992e-02 1.6367790102958679e-01 - <_> - - 0 -1 367 -1.2689580023288727e-01 - - 2.4832360446453094e-01 -1.2166699767112732e-01 - <_> - - 0 -1 368 4.6295030042529106e-03 - - -5.6057151407003403e-02 3.5743680596351624e-01 - <_> - - 0 -1 369 -7.5959236710332334e-05 - - 1.4901199936866760e-01 -1.8527039885520935e-01 - <_> - - 0 -1 370 1.3179309666156769e-01 - - 3.1471058726310730e-02 -6.5023940801620483e-01 - <_> - - 0 -1 371 1.3506829738616943e-02 - - 4.9855500459671021e-02 -5.2044898271560669e-01 - <_> - - 0 -1 372 -1.3922819495201111e-01 - - -4.2741641402244568e-01 2.2189699113368988e-02 - <_> - - 0 -1 373 6.0221530497074127e-02 - - 5.5732671171426773e-02 -4.3182530999183655e-01 - <_> - - 0 -1 374 -1.3498260080814362e-01 - - -7.1942609548568726e-01 6.5442471532151103e-04 - <_> - - 0 -1 375 -3.9722030051052570e-03 - - 1.1103550344705582e-01 -2.0654919743537903e-01 - <_> - - 0 -1 376 -2.1884329617023468e-02 - - -2.5028410553932190e-01 4.5227419584989548e-02 - <_> - - 0 -1 377 5.6294221431016922e-02 - - 3.7377629429101944e-02 -6.2178802490234375e-01 - <_> - - 0 -1 378 -4.1612509638071060e-02 - - -5.8709871768951416e-01 3.2716508954763412e-02 - <_> - - 0 -1 379 7.3085748590528965e-03 - - -1.3444009423255920e-01 1.8418920040130615e-01 - <_> - - 0 -1 380 -3.9157591760158539e-02 - - -7.2376221418380737e-02 3.7419971078634262e-02 - <_> - - 0 -1 381 8.2146301865577698e-03 - - -2.0513060688972473e-01 1.1532980203628540e-01 - <_> - - 0 -1 382 -3.4585020039230585e-03 - - 5.0050161778926849e-02 -5.7895500212907791e-02 - <_> - - 0 -1 383 4.0681189857423306e-03 - - -9.4465941190719604e-02 2.9207259416580200e-01 - <_> - - 0 -1 384 -5.4911449551582336e-02 - - -3.5309541225433350e-01 7.0034377276897430e-02 - <_> - - 0 -1 385 6.9372743368148804e-02 - - 2.2225400432944298e-02 -7.1920287609100342e-01 - <_> - - 0 -1 386 7.9585537314414978e-02 - - -3.8074009120464325e-02 3.0334910750389099e-01 - <_> - - 0 -1 387 5.4406329989433289e-02 - - 4.4882718473672867e-02 -4.4952940940856934e-01 - <_> - - 0 -1 388 2.6906138658523560e-01 - - -3.6008980125188828e-02 5.3076601028442383e-01 - <_> - - 0 -1 389 4.1156299412250519e-03 - - -1.0036530345678329e-01 1.8043400347232819e-01 - <_> - - 0 -1 390 -1.4385980367660522e-01 - - -6.2012898921966553e-01 1.1513910256326199e-02 - <_> - - 0 -1 391 1.4403319917619228e-02 - - -7.6877258718013763e-02 2.6086720824241638e-01 - <_> - - 0 -1 392 3.9774607867002487e-03 - - 4.2533420026302338e-02 -4.6169069409370422e-01 - <_> - - 0 -1 393 -4.6856269240379333e-02 - - 4.8750248551368713e-01 -4.3399021029472351e-02 - <_> - - 0 -1 394 -5.2139908075332642e-03 - - 1.1039640009403229e-01 -1.8073910474777222e-01 - <_> - - 0 -1 395 -6.7679318599402905e-03 - - -5.2303707599639893e-01 3.0777219682931900e-02 - <_> - - 0 -1 396 -7.1862619370222092e-03 - - 1.8328289687633514e-01 -5.6999340653419495e-02 - <_> - - 0 -1 397 -9.6733449026942253e-04 - - 1.5355390310287476e-01 -1.0831949859857559e-01 - <_> - - 0 -1 398 2.9203139245510101e-02 - - -3.7776630371809006e-02 1.0933200269937515e-01 - <_> - - 0 -1 399 9.8407091572880745e-03 - - -1.0926169902086258e-01 1.6795679926872253e-01 - <_> - - 0 -1 400 4.4505208730697632e-01 - - 2.6825889945030212e-02 -7.8063780069351196e-01 - <_> - - 0 -1 401 -6.1639058403670788e-03 - - -4.9384048581123352e-01 3.1130479648709297e-02 - <_> - - 0 -1 402 -4.9183439463376999e-02 - - -3.2318601012229919e-01 4.6904429793357849e-02 - <_> - - 0 -1 403 2.6128649551537819e-05 - - -1.0635109990835190e-01 1.5446029603481293e-01 - <_> - - 0 -1 404 -3.6831300705671310e-02 - - 2.8206101059913635e-01 -1.2601600028574467e-02 - <_> - - 0 -1 405 -7.1884751319885254e-02 - - 2.3140460252761841e-01 -7.3330886662006378e-02 - <_> - - 0 -1 406 5.7498589158058167e-02 - - -9.6435636281967163e-02 2.0507499575614929e-01 - <_> - - 0 -1 407 3.9720349013805389e-03 - - 3.6001030355691910e-02 -5.4572492837905884e-01 - <_> - - 0 -1 408 2.6467780116945505e-03 - - -4.4131889939308167e-02 7.5650222599506378e-02 - <_> - - 0 -1 409 -8.8836792856454849e-03 - - -4.6108219027519226e-01 3.2768789678812027e-02 - <_> - - 0 -1 410 -1.2856270186603069e-02 - - 7.2195157408714294e-02 -2.9732180759310722e-02 - <_> - - 0 -1 411 1.2072769924998283e-02 - - -5.0588879734277725e-02 2.9055860638618469e-01 - <_> - - 0 -1 412 1.8108480435330421e-04 - - -7.1461439132690430e-02 7.9823851585388184e-02 - <_> - - 0 -1 413 1.6076380386948586e-02 - - 4.7663111239671707e-02 -3.2759100198745728e-01 - <_> - - 0 -1 414 -9.5250606536865234e-03 - - -1.8988420069217682e-01 7.0858187973499298e-03 - <_> - - 0 -1 415 -6.2362798489630222e-03 - - -4.2836889624595642e-01 3.3970601856708527e-02 - <_> - - 0 -1 416 2.4684870368218981e-05 - - -8.0308698117733002e-02 1.1084640026092529e-01 - <_> - - 0 -1 417 -1.1949270265176892e-03 - - 2.2565570473670959e-01 -6.2634393572807312e-02 - <_> - - 0 -1 418 7.5406976975500584e-05 - - -1.2379209697246552e-01 8.9499987661838531e-02 - <_> - - 0 -1 419 -1.5506739728152752e-02 - - 3.1002271175384521e-01 -6.5474428236484528e-02 - <_> - - 0 -1 420 5.1327929832041264e-03 - - 2.0446259528398514e-02 -4.9159330129623413e-01 - <_> - - 0 -1 421 4.8783698730403557e-05 - - -1.7229010164737701e-01 1.0885129868984222e-01 - <_> - - 0 -1 422 6.1788759194314480e-03 - - 1.9519099965691566e-02 -3.1397709250450134e-01 - <_> - - 0 -1 423 1.7130610346794128e-01 - - 1.7246689647436142e-02 -7.7260631322860718e-01 - <_> - - 0 -1 424 -4.2986709624528885e-02 - - 1.5775360167026520e-01 -4.8268649727106094e-02 - <_> - - 0 -1 425 -5.2703949622809887e-03 - - -4.6245059370994568e-01 3.9202030748128891e-02 - <_> - - 0 -1 426 2.0323780179023743e-01 - - 3.5771671682596207e-02 -3.9400190114974976e-01 - <_> - - 0 -1 427 1.8217949196696281e-02 - - -4.0734618902206421e-02 3.7419110536575317e-01 - <_> - - 0 -1 428 -1.0606779687805101e-04 - - 1.0123260319232941e-01 -9.1124363243579865e-02 - <_> - - 0 -1 429 3.8906659465283155e-03 - - -1.5201710164546967e-01 9.3479022383689880e-02 - <_> - - 0 -1 430 1.2537229806184769e-02 - - -6.0158051550388336e-02 2.5583261251449585e-01 - <_> - - 0 -1 431 -9.9574513733386993e-03 - - 1.3798029720783234e-01 -1.2496340274810791e-01 - <_> - - 0 -1 432 3.6789269652217627e-03 - - 4.2771819978952408e-02 -3.0630341172218323e-01 - <_> - - 0 -1 433 3.7803261075168848e-03 - - 3.2370451837778091e-02 -4.1383808851242065e-01 - <_> - - 0 -1 434 6.8372930400073528e-05 - - -6.4546667039394379e-02 7.9466506838798523e-02 - <_> - - 0 -1 435 -6.3996631070040166e-05 - - 1.3556569814682007e-01 -1.1014910042285919e-01 - <_> - - 0 -1 436 -8.3484519564080983e-05 - - 1.2857739627361298e-01 -9.3731433153152466e-02 - <_> - - 0 -1 437 -1.0072399862110615e-02 - - -3.8280281424522400e-01 3.4546609967947006e-02 - <_> - - 0 -1 438 -1.0316800326108932e-02 - - 1.2971499562263489e-01 -1.0244529694318771e-01 - <_> - - 0 -1 439 1.0713770054280758e-02 - - -7.0452913641929626e-02 2.3588269948959351e-01 - <_> - - 0 -1 440 2.6279760524630547e-02 - - -1.2427800148725510e-01 8.1192903220653534e-02 - <_> - - 0 -1 441 5.5222269147634506e-03 - - 6.1467431485652924e-02 -2.6426988840103149e-01 - <_> - - 0 -1 442 7.4345488101243973e-03 - - -8.8471248745918274e-02 1.4741429686546326e-01 - <_> - - 0 -1 443 -5.8172550052404404e-03 - - -3.1304401159286499e-01 4.3700240552425385e-02 - <_> - - 0 -1 444 -3.6513719707727432e-02 - - 3.2511061429977417e-01 -3.3389080315828323e-02 - <_> - - 0 -1 445 -4.6333879232406616e-02 - - 5.0428932905197144e-01 -2.5547180324792862e-02 - <_> - - 0 -1 446 1.5593919670209289e-04 - - -5.6827340275049210e-02 7.7660933136940002e-02 - <_> - - 0 -1 447 8.2058515399694443e-03 - - 3.2184999436140060e-02 -4.2038908600807190e-01 - <_> - - 0 -1 448 -4.4285461306571960e-02 - - -3.8966551423072815e-01 1.1912340298295021e-02 - <_> - - 0 -1 449 2.5834020227193832e-02 - - 4.1731890290975571e-02 -3.3182808756828308e-01 - <_> - - 0 -1 450 3.0991230159997940e-02 - - 1.7353070899844170e-02 -6.6546082496643066e-01 - <_> - - 0 -1 451 1.1223349720239639e-02 - - -6.4317956566810608e-02 2.1755810081958771e-01 - <_> - - 0 -1 452 -1.0795110138133168e-03 - - 6.0490209609270096e-02 -1.2580770254135132e-01 - <_> - - 0 -1 453 1.5915779769420624e-01 - - 3.2363180071115494e-02 -4.0798279643058777e-01 - <_> - - 0 -1 454 2.5649809686001390e-05 - - -7.4427329003810883e-02 8.9588217437267303e-02 - <_> - - 0 -1 455 2.3739310563541949e-05 - - -9.3008317053318024e-02 1.3343870639801025e-01 - <_> - - 0 -1 456 1.4618090353906155e-02 - - 1.9154099747538567e-02 -6.4152318239212036e-01 - <_> - - 0 -1 457 2.3532200604677200e-02 - - -6.0358211398124695e-02 2.1782620251178741e-01 - <_> - - 0 -1 458 1.5804159920662642e-03 - - -1.0721720010042191e-01 9.3893371522426605e-02 - <_> - - 0 -1 459 1.0986100137233734e-01 - - 6.0271378606557846e-02 -2.3471720516681671e-01 - <_> - - 0 -1 460 -9.9525712430477142e-03 - - -5.9630388021469116e-01 2.2674830630421638e-02 - <_> - - 0 -1 461 -2.7224500663578510e-03 - - -3.4362030029296875e-01 3.1717851758003235e-02 - <_> - - 0 -1 462 -3.2594770193099976e-02 - - 2.0315499603748322e-01 -7.1107327938079834e-02 - <_> - - 0 -1 463 3.1989789567887783e-03 - - 4.0066048502922058e-02 -3.1384450197219849e-01 - <_> - 141 - -1.4003620147705078e+00 - - <_> - - 0 -1 464 7.7838331460952759e-02 - - -2.8954571485519409e-01 3.3590829372406006e-01 - <_> - - 0 -1 465 -1.8956370651721954e-02 - - 1.3711029291152954e-01 -1.1915580183267593e-01 - <_> - - 0 -1 466 -2.9012229293584824e-02 - - 2.6803770661354065e-01 -2.8188169002532959e-01 - <_> - - 0 -1 467 9.8552741110324860e-04 - - -8.1531323492527008e-02 1.5281049907207489e-01 - <_> - - 0 -1 468 1.0328469943488017e-04 - - -2.4661579728126526e-01 1.7609159648418427e-01 - <_> - - 0 -1 469 -4.5671691186726093e-03 - - -4.8002299666404724e-01 6.5878503024578094e-02 - <_> - - 0 -1 470 2.3546300828456879e-02 - - -1.6119800508022308e-01 1.7704969644546509e-01 - <_> - - 0 -1 471 1.0163839906454086e-01 - - 2.4753339588642120e-02 -5.6535172462463379e-01 - <_> - - 0 -1 472 -1.1764950118958950e-02 - - 5.7793740183115005e-02 -3.6047691106796265e-01 - <_> - - 0 -1 473 2.9407900292426348e-03 - - -5.6864451617002487e-02 3.2670629024505615e-01 - <_> - - 0 -1 474 1.2036000378429890e-02 - - 5.0029050558805466e-02 -4.3046820163726807e-01 - <_> - - 0 -1 475 -6.2945342506282032e-05 - - 1.4414469897747040e-01 -1.2317640334367752e-01 - <_> - - 0 -1 476 -1.0069269686937332e-01 - - -4.2357030510902405e-01 4.9802679568529129e-02 - <_> - - 0 -1 477 1.4581729657948017e-02 - - 3.0177220702171326e-02 -6.6406387090682983e-01 - <_> - - 0 -1 478 -6.5432410337962210e-05 - - 1.2506960332393646e-01 -1.6383630037307739e-01 - <_> - - 0 -1 479 -9.9888555705547333e-03 - - -3.9762818813323975e-01 3.1741239130496979e-02 - <_> - - 0 -1 480 1.4515570364892483e-02 - - -6.7560233175754547e-02 3.2044398784637451e-01 - <_> - - 0 -1 481 4.4144429266452789e-03 - - -1.1010450124740601e-01 1.0620170086622238e-01 - <_> - - 0 -1 482 -1.9047720357775688e-02 - - 4.3591830134391785e-01 -5.6705459952354431e-02 - <_> - - 0 -1 483 1.1922540143132210e-02 - - 2.2601209580898285e-02 -3.4638860821723938e-01 - <_> - - 0 -1 484 3.1663820147514343e-02 - - -6.9747507572174072e-02 3.3460348844528198e-01 - <_> - - 0 -1 485 -4.0487637743353844e-03 - - -3.7775671482086182e-01 4.1244998574256897e-02 - <_> - - 0 -1 486 8.5836304351687431e-03 - - 4.0586728602647781e-02 -4.6596848964691162e-01 - <_> - - 0 -1 487 2.5460028648376465e-01 - - 2.9270550236105919e-02 -6.1891537904739380e-01 - <_> - - 0 -1 488 -2.7734090108424425e-03 - - 1.4600990712642670e-01 -1.2482350319623947e-01 - <_> - - 0 -1 489 -9.1764237731695175e-03 - - 2.4817289412021637e-01 -5.5748548358678818e-02 - <_> - - 0 -1 490 7.4874111451208591e-03 - - -1.0712330043315887e-01 1.6646879911422729e-01 - <_> - - 0 -1 491 5.0387311726808548e-02 - - -5.0489690154790878e-02 1.2678450345993042e-01 - <_> - - 0 -1 492 7.7575668692588806e-02 - - 1.2100619822740555e-01 -1.7718310654163361e-01 - <_> - - 0 -1 493 1.0453660041093826e-02 - - -3.0459070578217506e-02 2.4667170643806458e-01 - <_> - - 0 -1 494 -1.1940089985728264e-02 - - 1.4313019812107086e-01 -1.4006079733371735e-01 - <_> - - 0 -1 495 -2.1164349745959044e-03 - - 5.4504208266735077e-02 -9.2412821948528290e-02 - <_> - - 0 -1 496 4.8259901814162731e-03 - - -7.9584978520870209e-02 4.2220059037208557e-01 - <_> - - 0 -1 497 8.0155059695243835e-03 - - 1.9714679569005966e-02 -4.7956329584121704e-01 - <_> - - 0 -1 498 -7.2104120627045631e-03 - - -4.6714499592781067e-01 3.2550580799579620e-02 - <_> - - 0 -1 499 -3.1670030206441879e-02 - - 3.7553250789642334e-01 -1.0949539951980114e-02 - <_> - - 0 -1 500 6.3463337719440460e-03 - - -6.5203480422496796e-02 2.4626299738883972e-01 - <_> - - 0 -1 501 -3.6191360559314489e-03 - - -1.7093889415264130e-01 3.1114179641008377e-02 - <_> - - 0 -1 502 4.3581780046224594e-03 - - 3.6647301167249680e-02 -4.2374929785728455e-01 - <_> - - 0 -1 503 7.1306470781564713e-03 - - 3.6186341196298599e-02 -3.5813450813293457e-01 - <_> - - 0 -1 504 2.0273950695991516e-01 - - -4.6457529067993164e-02 3.2370680570602417e-01 - <_> - - 0 -1 505 -6.8010999821126461e-03 - - 1.7033079266548157e-01 -9.0368293225765228e-02 - <_> - - 0 -1 506 1.9894709810614586e-02 - - 3.1671468168497086e-02 -6.2594968080520630e-01 - <_> - - 0 -1 507 7.2822818765416741e-04 - - -7.0317156612873077e-02 9.6888661384582520e-02 - <_> - - 0 -1 508 3.6959239840507507e-01 - - 1.8628669902682304e-02 -7.7441781759262085e-01 - <_> - - 0 -1 509 1.0125909931957722e-02 - - -6.6889248788356781e-02 1.5247039496898651e-01 - <_> - - 0 -1 510 -1.2455949932336807e-01 - - 2.8963080048561096e-01 -4.8562891781330109e-02 - <_> - - 0 -1 511 2.5091960560530424e-03 - - -3.5043649375438690e-02 1.1125019937753677e-01 - <_> - - 0 -1 512 -2.8475138545036316e-01 - - 3.5674199461936951e-01 -4.2815480381250381e-02 - <_> - - 0 -1 513 -1.6454169526696205e-03 - - 1.9690880179405212e-01 -4.3971408158540726e-02 - <_> - - 0 -1 514 1.5759950038045645e-03 - - -1.5584190189838409e-01 1.0929670184850693e-01 - <_> - - 0 -1 515 6.7018110712524503e-05 - - -9.3722403049468994e-02 7.9448983073234558e-02 - <_> - - 0 -1 516 4.5426278375089169e-03 - - 3.8276840001344681e-02 -4.2568549513816833e-01 - <_> - - 0 -1 517 -5.8855221141129732e-04 - - 6.0305360704660416e-02 -1.4615760743618011e-01 - <_> - - 0 -1 518 -1.3436630368232727e-02 - - -2.3946529626846313e-01 6.3380107283592224e-02 - <_> - - 0 -1 519 -4.6623498201370239e-03 - - -4.1108340024948120e-02 3.8609981536865234e-02 - <_> - - 0 -1 520 1.9660739228129387e-02 - - -3.7687391042709351e-02 3.9592269062995911e-01 - <_> - - 0 -1 521 -8.2754753530025482e-03 - - 1.0256180167198181e-01 -4.2751040309667587e-02 - <_> - - 0 -1 522 -3.1780879944562912e-02 - - 3.6264151334762573e-01 -4.0603369474411011e-02 - <_> - - 0 -1 523 2.1684650331735611e-02 - - 2.2938560694456100e-02 -3.5124549269676208e-01 - <_> - - 0 -1 524 -1.5403999947011471e-02 - - 2.9343938827514648e-01 -4.8390299081802368e-02 - <_> - - 0 -1 525 -8.1902230158448219e-03 - - -3.2770949602127075e-01 4.1368559002876282e-02 - <_> - - 0 -1 526 -7.9587763175368309e-03 - - -5.8493942022323608e-01 1.9722139462828636e-02 - <_> - - 0 -1 527 2.2349890321493149e-02 - - 6.3248360529541969e-03 -6.7023582756519318e-02 - <_> - - 0 -1 528 1.8036609981209040e-03 - - -7.2210237383842468e-02 2.0629370212554932e-01 - <_> - - 0 -1 529 -2.0462639629840851e-02 - - -3.4459498524665833e-01 2.6240190491080284e-02 - <_> - - 0 -1 530 9.1937501565553248e-05 - - -1.1172589659690857e-01 1.1403390020132065e-01 - <_> - - 0 -1 531 -2.0170810166746378e-03 - - 5.8695279061794281e-02 -4.3408349156379700e-02 - <_> - - 0 -1 532 1.6941629583016038e-03 - - 6.6092863678932190e-02 -2.0478239655494690e-01 - <_> - - 0 -1 533 1.1209110170602798e-01 - - -3.9467259193770587e-04 -5.1060438156127930e-01 - <_> - - 0 -1 534 7.2903931140899658e-02 - - -3.9906460791826248e-02 3.3780521154403687e-01 - <_> - - 0 -1 535 -3.0249240808188915e-03 - - 1.1249010264873505e-01 -1.4893929660320282e-01 - <_> - - 0 -1 536 -1.7990779131650925e-02 - - -2.4895049631595612e-01 5.2208401262760162e-02 - <_> - - 0 -1 537 -2.8163999319076538e-02 - - 3.4624269604682922e-01 -4.6813420951366425e-02 - <_> - - 0 -1 538 1.4555190503597260e-01 - - -1.3727329671382904e-01 9.9273979663848877e-02 - <_> - - 0 -1 539 1.9026039540767670e-01 - - 1.7888879403471947e-02 -7.1033167839050293e-01 - <_> - - 0 -1 540 1.7087809741497040e-01 - - 2.1454460918903351e-02 -5.6766891479492188e-01 - <_> - - 0 -1 541 -4.9392290413379669e-02 - - 4.6601650118827820e-01 -2.8405459597706795e-02 - <_> - - 0 -1 542 3.9778267964720726e-03 - - -1.0497090220451355e-01 1.2071380019187927e-01 - <_> - - 0 -1 543 -1.8006129562854767e-01 - - 3.8309639692306519e-01 -1.4102069661021233e-02 - <_> - - 0 -1 544 3.3417791128158569e-03 - - -1.0533019900321960e-01 1.2955980002880096e-01 - <_> - - 0 -1 545 -2.8957970440387726e-02 - - -3.2808870077133179e-01 8.5954880341887474e-03 - <_> - - 0 -1 546 1.2989169918000698e-02 - - 4.0657699108123779e-02 -3.4399700164794922e-01 - <_> - - 0 -1 547 9.3189179897308350e-03 - - 2.0000560209155083e-02 -3.0933129787445068e-01 - <_> - - 0 -1 548 -5.2429470088100061e-05 - - 1.2686310708522797e-01 -9.5152713358402252e-02 - <_> - - 0 -1 549 5.6926601246232167e-05 - - -6.9777466356754303e-02 1.0061009973287582e-01 - <_> - - 0 -1 550 -6.6324290819466114e-03 - - -3.7384641170501709e-01 3.2925400882959366e-02 - <_> - - 0 -1 551 -1.8024910241365433e-03 - - 8.3397291600704193e-02 -7.6452530920505524e-02 - <_> - - 0 -1 552 6.5196603536605835e-02 - - 3.1775739043951035e-02 -3.6805319786071777e-01 - <_> - - 0 -1 553 -1.7499100416898727e-02 - - -2.5744670629501343e-01 2.0698830485343933e-02 - <_> - - 0 -1 554 8.7240803986787796e-03 - - -5.1745019853115082e-02 2.2648270428180695e-01 - <_> - - 0 -1 555 -2.4927619379013777e-03 - - 9.7427107393741608e-02 -8.4230922162532806e-02 - <_> - - 0 -1 556 -4.4600460678339005e-02 - - -7.6867169141769409e-01 1.4703400433063507e-02 - <_> - - 0 -1 557 3.2505799084901810e-02 - - 3.0005859211087227e-02 -4.9162200093269348e-01 - <_> - - 0 -1 558 -2.5649809686001390e-05 - - 1.1314590275287628e-01 -9.4056800007820129e-02 - <_> - - 0 -1 559 -2.3604110538144596e-05 - - 8.8364727795124054e-02 -6.8058848381042480e-02 - <_> - - 0 -1 560 2.6216499463771470e-05 - - -9.1394290328025818e-02 1.2277369946241379e-01 - <_> - - 0 -1 561 -2.9017529450356960e-03 - - -1.5153430402278900e-01 3.0693180859088898e-02 - <_> - - 0 -1 562 6.8409377709031105e-03 - - 2.8549060225486755e-02 -3.7030708789825439e-01 - <_> - - 0 -1 563 1.2914350628852844e-01 - - 5.2656780928373337e-02 -2.0276160538196564e-01 - <_> - - 0 -1 564 -1.1380250006914139e-01 - - 2.2251050174236298e-01 -5.1625229418277740e-02 - <_> - - 0 -1 565 8.2800639793276787e-03 - - -6.5930999815464020e-02 6.0252968221902847e-02 - <_> - - 0 -1 566 -5.3036700934171677e-02 - - -4.6652480959892273e-01 2.7602789923548698e-02 - <_> - - 0 -1 567 1.1862640082836151e-01 - - -3.3534578979015350e-02 3.7986829876899719e-01 - <_> - - 0 -1 568 3.0761719681322575e-03 - - -1.2260209769010544e-01 1.1537180095911026e-01 - <_> - - 0 -1 569 -1.7530350305605680e-04 - - 8.5038073360919952e-02 -9.2355959117412567e-02 - <_> - - 0 -1 570 6.6797256469726562e-02 - - 2.7040729299187660e-02 -4.5982721447944641e-01 - <_> - - 0 -1 571 2.3379459977149963e-02 - - -6.2042251229286194e-02 1.7584429681301117e-01 - <_> - - 0 -1 572 1.0949910210911185e-04 - - -1.2381599843502045e-01 9.6813596785068512e-02 - <_> - - 0 -1 573 3.3863238990306854e-02 - - 1.3947179540991783e-02 -1.8364569544792175e-01 - <_> - - 0 -1 574 -3.4967120736837387e-02 - - -8.0809932947158813e-01 1.4799409545958042e-02 - <_> - - 0 -1 575 4.5521798729896545e-01 - - 1.3605389744043350e-02 -6.0478818416595459e-01 - <_> - - 0 -1 576 1.6087630763649940e-02 - - 5.8055009692907333e-02 -1.9826529920101166e-01 - <_> - - 0 -1 577 1.7235469818115234e-01 - - 7.4058459140360355e-03 -5.1899272203445435e-01 - <_> - - 0 -1 578 1.5957270516082644e-03 - - -4.2893920093774796e-02 2.6449468731880188e-01 - <_> - - 0 -1 579 -7.6875099912285805e-03 - - -2.7318629622459412e-01 1.3109279796481133e-02 - <_> - - 0 -1 580 -1.5951599925756454e-03 - - 2.0967930555343628e-01 -4.9833789467811584e-02 - <_> - - 0 -1 581 1.0349789634346962e-02 - - 7.2593181394040585e-03 -4.4166409969329834e-01 - <_> - - 0 -1 582 6.9909151643514633e-03 - - 2.4994520470499992e-02 -4.0138208866119385e-01 - <_> - - 0 -1 583 4.7854268923401833e-03 - - 2.3502610623836517e-02 -9.9097803235054016e-02 - <_> - - 0 -1 584 -4.3787118047475815e-03 - - -3.6183780431747437e-01 2.6457339525222778e-02 - <_> - - 0 -1 585 3.1168339774012566e-03 - - -4.5762591063976288e-02 1.1177150160074234e-01 - <_> - - 0 -1 586 -1.1843509972095490e-02 - - 2.7435851097106934e-01 -3.5070378333330154e-02 - <_> - - 0 -1 587 -1.5275570331141353e-04 - - 8.4554448723793030e-02 -7.5316190719604492e-02 - <_> - - 0 -1 588 -8.6214318871498108e-02 - - 1.3820220530033112e-01 -7.1106247603893280e-02 - <_> - - 0 -1 589 3.6304339766502380e-02 - - -3.8147788494825363e-02 1.1627230048179626e-01 - <_> - - 0 -1 590 1.4807139523327351e-03 - - -1.0411299765110016e-01 1.1228249967098236e-01 - <_> - - 0 -1 591 7.3545570485293865e-03 - - 3.3374588936567307e-02 -3.5831621289253235e-01 - <_> - - 0 -1 592 3.4468159079551697e-02 - - -5.4936081171035767e-02 2.0390030741691589e-01 - <_> - - 0 -1 593 -5.9239879250526428e-02 - - 4.3228080868721008e-01 -2.4707719683647156e-02 - <_> - - 0 -1 594 2.4270419776439667e-01 - - 2.2037450224161148e-02 -5.4193401336669922e-01 - <_> - - 0 -1 595 -1.2284790165722370e-02 - - -3.7384429574012756e-01 9.2992689460515976e-03 - <_> - - 0 -1 596 -1.1619590222835541e-02 - - -5.8757847547531128e-01 1.7577210441231728e-02 - <_> - - 0 -1 597 2.1228510886430740e-02 - - 5.6798839941620827e-03 -3.1449121236801147e-01 - <_> - - 0 -1 598 1.5732479514554143e-03 - - -7.9905793070793152e-02 1.3976779580116272e-01 - <_> - - 0 -1 599 6.1120092868804932e-01 - - 1.3321190141141415e-02 -5.5098742246627808e-01 - <_> - - 0 -1 600 -2.0905339624732733e-04 - - 1.0304620116949081e-01 -9.4890147447586060e-02 - <_> - - 0 -1 601 7.5772361014969647e-05 - - -8.5623927414417267e-02 8.7449163198471069e-02 - <_> - - 0 -1 602 -4.8126399517059326e-02 - - 2.1198000013828278e-01 -4.7644909471273422e-02 - <_> - - 0 -1 603 -8.6747817695140839e-03 - - -4.2384940385818481e-01 2.1367609500885010e-02 - <_> - - 0 -1 604 8.1669818609952927e-03 - - -5.2588619291782379e-02 2.0056459307670593e-01 - <_> - 111 - -1.4018720388412476e+00 - - <_> - - 0 -1 605 8.5009383037686348e-03 - - -4.2771288752555847e-01 2.8500860929489136e-01 - <_> - - 0 -1 606 -3.6675720475614071e-03 - - 1.8305620551109314e-01 -4.3906581401824951e-01 - <_> - - 0 -1 607 1.5451109968125820e-02 - - -2.5173941254615784e-01 1.8866589665412903e-01 - <_> - - 0 -1 608 3.0046209692955017e-01 - - -5.4038830101490021e-02 4.8624160885810852e-01 - <_> - - 0 -1 609 3.6772501468658447e-01 - - 2.5102959945797920e-02 -9.5871881103515625e+02 - <_> - - 0 -1 610 -4.0474338456988335e-03 - - 2.1335700154304504e-01 -9.7891986370086670e-02 - <_> - - 0 -1 611 -5.3314119577407837e-02 - - -6.1614441871643066e-01 5.5987618863582611e-02 - <_> - - 0 -1 612 -2.7916610240936279e-01 - - 4.0783798694610596e-01 -1.1853860318660736e-01 - <_> - - 0 -1 613 -3.6125730257481337e-03 - - 2.3250600695610046e-01 -1.5664309263229370e-01 - <_> - - 0 -1 614 -2.6726289652287960e-03 - - 1.7571009695529938e-01 -1.5493810176849365e-01 - <_> - - 0 -1 615 -1.1829179711639881e-02 - - -6.6747820377349854e-01 4.5493591576814651e-02 - <_> - - 0 -1 616 4.4169160537421703e-03 - - -2.2939409315586090e-01 1.0542789846658707e-01 - <_> - - 0 -1 617 -1.0357840359210968e-01 - - 3.4294271469116211e-01 -6.9909207522869110e-02 - <_> - - 0 -1 618 3.4325949382036924e-03 - - -1.8468430638313293e-01 1.6796229779720306e-01 - <_> - - 0 -1 619 -2.2001469507813454e-02 - - -4.4479998946189880e-01 4.7688841819763184e-02 - <_> - - 0 -1 620 3.4049700479954481e-03 - - -6.1201151460409164e-02 1.3493420183658600e-01 - <_> - - 0 -1 621 -1.6375419497489929e-01 - - -4.9726039171218872e-01 4.3114218860864639e-02 - <_> - - 0 -1 622 4.2683139443397522e-02 - - 1.9057090580463409e-01 -4.5245770364999771e-02 - <_> - - 0 -1 623 -5.8941352181136608e-03 - - 1.2556779384613037e-01 -1.5506540238857269e-01 - <_> - - 0 -1 624 1.6873490065336227e-02 - - -6.6119313240051270e-02 3.4744951128959656e-01 - <_> - - 0 -1 625 4.3099578469991684e-02 - - 5.7583600282669067e-02 -3.3952900767326355e-01 - <_> - - 0 -1 626 -1.9477229565382004e-02 - - -8.0392777919769287e-01 2.4795620702207088e-03 - <_> - - 0 -1 627 -4.6851670049363747e-05 - - 1.1619050055742264e-01 -1.7257040739059448e-01 - <_> - - 0 -1 628 -6.1807930469512939e-02 - - 4.0565249323844910e-01 -5.5282030254602432e-02 - <_> - - 0 -1 629 -3.9889659732580185e-02 - - -2.8519150614738464e-01 7.1040973067283630e-02 - <_> - - 0 -1 630 5.1790241152048111e-02 - - 1.0264960117638111e-02 -3.3244749903678894e-01 - <_> - - 0 -1 631 5.5987639352679253e-03 - - -2.3741720616817474e-01 7.6081469655036926e-02 - <_> - - 0 -1 632 3.7294030189514160e-01 - - -1.4457600191235542e-02 2.7664330601692200e-01 - <_> - - 0 -1 633 2.8402900695800781e-01 - - -6.6569052636623383e-02 3.0555289983749390e-01 - <_> - - 0 -1 634 -3.3610709011554718e-02 - - 3.7678858637809753e-01 -3.8632158190011978e-02 - <_> - - 0 -1 635 4.1422769427299500e-03 - - -1.1140339821577072e-01 1.6079390048980713e-01 - <_> - - 0 -1 636 -7.8478157520294189e-02 - - 5.2872437238693237e-01 -3.0871439725160599e-02 - <_> - - 0 -1 637 7.3427408933639526e-03 - - -8.8620431721210480e-02 1.7578239738941193e-01 - <_> - - 0 -1 638 3.6650819238275290e-03 - - -1.4013199508190155e-01 8.8994570076465607e-02 - <_> - - 0 -1 639 2.4947609752416611e-02 - - -5.7245790958404541e-02 2.9098680615425110e-01 - <_> - - 0 -1 640 -9.5206424593925476e-03 - - -5.0748902559280396e-01 2.9920989647507668e-02 - <_> - - 0 -1 641 -5.2697858773171902e-03 - - -3.3674290776252747e-01 4.2487990111112595e-02 - <_> - - 0 -1 642 -5.2029830403625965e-03 - - -3.8729768991470337e-01 3.9070878177881241e-02 - <_> - - 0 -1 643 1.5543039888143539e-02 - - -8.1509388983249664e-02 1.8083870410919189e-01 - <_> - - 0 -1 644 -5.2419401705265045e-02 - - -5.5317038297653198e-01 1.8499359488487244e-02 - <_> - - 0 -1 645 -1.1110330000519753e-02 - - -7.0344591140747070e-01 1.8182870000600815e-02 - <_> - - 0 -1 646 2.4250999558717012e-03 - - -4.5725211501121521e-02 5.1940329372882843e-02 - <_> - - 0 -1 647 -8.0726835876703262e-03 - - -2.2301289439201355e-01 5.9184651821851730e-02 - <_> - - 0 -1 648 8.3049550652503967e-02 - - -7.7934071421623230e-02 3.9087869226932526e-02 - <_> - - 0 -1 649 -8.3224788308143616e-02 - - 2.9764831066131592e-01 -5.5352561175823212e-02 - <_> - - 0 -1 650 -2.8794119134545326e-02 - - 1.7857789993286133e-01 -2.2039219737052917e-02 - <_> - - 0 -1 651 5.6489530950784683e-02 - - -6.9890931248664856e-02 2.1076519787311554e-01 - <_> - - 0 -1 652 -6.1607591807842255e-02 - - -6.7098802328109741e-01 2.5408720597624779e-02 - <_> - - 0 -1 653 4.0430251508951187e-02 - - -4.3006941676139832e-02 3.6125731468200684e-01 - <_> - - 0 -1 654 8.1663697957992554e-02 - - 3.7107840180397034e-02 -4.0147781372070312e-01 - <_> - - 0 -1 655 2.0060269162058830e-02 - - 2.8394110500812531e-02 -4.5096978545188904e-01 - <_> - - 0 -1 656 4.4809231162071228e-01 - - -2.8863489627838135e-02 5.4432421922683716e-01 - <_> - - 0 -1 657 9.4997808337211609e-03 - - -6.3185006380081177e-02 2.0143640041351318e-01 - <_> - - 0 -1 658 -2.3604110538144596e-05 - - 8.5501417517662048e-02 -6.2585182487964630e-02 - <_> - - 0 -1 659 -8.9380017016083002e-05 - - 1.2780819833278656e-01 -1.0212580114603043e-01 - <_> - - 0 -1 660 -3.0439419788308442e-04 - - 1.3623830676078796e-01 -9.6396081149578094e-02 - <_> - - 0 -1 661 -7.1386282797902822e-05 - - 1.2020439654588699e-01 -1.1520940065383911e-01 - <_> - - 0 -1 662 -7.4278670363128185e-03 - - -1.1765129864215851e-01 2.5646839290857315e-02 - <_> - - 0 -1 663 9.1655907453969121e-05 - - -1.0665830224752426e-01 1.1622580140829086e-01 - <_> - - 0 -1 664 -8.8285116362385452e-05 - - 1.0202009975910187e-01 -9.4773791730403900e-02 - <_> - - 0 -1 665 1.7160010337829590e-01 - - -9.6324786543846130e-02 1.3936719298362732e-01 - <_> - - 0 -1 666 6.1614410951733589e-03 - - -7.8339770436286926e-02 1.9864350557327271e-01 - <_> - - 0 -1 667 1.0488010011613369e-02 - - 2.2472979500889778e-02 -5.8889657258987427e-01 - <_> - - 0 -1 668 4.2389098554849625e-02 - - 3.2426279503852129e-03 -3.8179519772529602e-01 - <_> - - 0 -1 669 1.8942179158329964e-02 - - -3.8592588156461716e-02 3.4485790133476257e-01 - <_> - - 0 -1 670 -1.8505830084905028e-03 - - 6.2117058783769608e-02 -1.4222989976406097e-01 - <_> - - 0 -1 671 3.4762551076710224e-03 - - -6.3081473112106323e-02 2.0072069764137268e-01 - <_> - - 0 -1 672 8.2640787586569786e-03 - - -4.6010430902242661e-02 1.1308149993419647e-01 - <_> - - 0 -1 673 -8.4993377327919006e-02 - - 2.1542909741401672e-01 -6.5986298024654388e-02 - <_> - - 0 -1 674 -2.3180700838565826e-02 - - -3.4274458885192871e-01 2.3565940558910370e-02 - <_> - - 0 -1 675 1.7291529104113579e-02 - - 3.1432639807462692e-02 -3.9180231094360352e-01 - <_> - - 0 -1 676 3.1471049878746271e-03 - - -1.2125449627637863e-01 9.5088116824626923e-02 - <_> - - 0 -1 677 -9.5794200897216797e-02 - - 3.7472879886627197e-01 -4.2680621147155762e-02 - <_> - - 0 -1 678 -2.6557369157671928e-02 - - -4.7922921180725098e-01 2.6146400719881058e-02 - <_> - - 0 -1 679 -8.1971433246508241e-05 - - 1.0347779840230942e-01 -1.1757999658584595e-01 - <_> - - 0 -1 680 -6.4540100283920765e-03 - - -5.2700281143188477e-01 3.4957159310579300e-02 - <_> - - 0 -1 681 -3.3087339252233505e-02 - - -3.9793440699577332e-01 2.5454800575971603e-02 - <_> - - 0 -1 682 7.0128366351127625e-02 - - -2.9464110732078552e-02 4.1201031208038330e-01 - <_> - - 0 -1 683 -9.6940301591530442e-04 - - 1.2894269824028015e-01 -8.4787413477897644e-02 - <_> - - 0 -1 684 1.8660759553313255e-02 - - -6.2266499735414982e-03 3.6698341369628906e-01 - <_> - - 0 -1 685 1.3513430021703243e-02 - - 1.7080739140510559e-02 -7.1084249019622803e-01 - <_> - - 0 -1 686 -7.1627681609243155e-04 - - 9.5187976956367493e-02 -4.6339459717273712e-02 - <_> - - 0 -1 687 5.4968800395727158e-03 - - 1.9017050042748451e-02 -5.6606787443161011e-01 - <_> - - 0 -1 688 -3.3988431096076965e-02 - - 2.0532059669494629e-01 -5.3730130195617676e-02 - <_> - - 0 -1 689 -9.4949705526232719e-03 - - -4.7799149155616760e-01 2.6109879836440086e-02 - <_> - - 0 -1 690 8.8990468066185713e-04 - - -5.3878299891948700e-02 1.5298619866371155e-01 - <_> - - 0 -1 691 6.1590311815962195e-05 - - -1.2033499777317047e-01 8.7442100048065186e-02 - <_> - - 0 -1 692 -5.8384079486131668e-02 - - 1.9574840366840363e-01 -6.6920563578605652e-02 - <_> - - 0 -1 693 1.6286900499835610e-03 - - -1.0631299763917923e-01 1.2674750387668610e-01 - <_> - - 0 -1 694 7.9788036644458771e-02 - - 1.2167329899966717e-02 -5.1673012971878052e-01 - <_> - - 0 -1 695 5.3892009891569614e-03 - - -1.2911440432071686e-01 8.8783398270606995e-02 - <_> - - 0 -1 696 2.5091820955276489e-01 - - 3.2179851084947586e-02 -3.7686109542846680e-01 - <_> - - 0 -1 697 1.7209710553288460e-02 - - 1.2379400432109833e-02 -7.8753459453582764e-01 - <_> - - 0 -1 698 1.8916660547256470e-01 - - -3.3356759697198868e-02 1.8951129913330078e-01 - <_> - - 0 -1 699 -4.8115151003003120e-03 - - 2.0501169562339783e-01 -5.3161811083555222e-02 - <_> - - 0 -1 700 2.0269770175218582e-02 - - -2.8937749564647675e-02 2.1850499510765076e-01 - <_> - - 0 -1 701 -7.8484037658199668e-05 - - 5.7575121521949768e-02 -1.8328189849853516e-01 - <_> - - 0 -1 702 2.2350680083036423e-03 - - -3.2419610768556595e-02 8.6609072983264923e-02 - <_> - - 0 -1 703 -1.6989709809422493e-02 - - 2.8270080685615540e-01 -3.8365218788385391e-02 - <_> - - 0 -1 704 -6.4167408272624016e-03 - - 1.3134069740772247e-01 -4.3611731380224228e-02 - <_> - - 0 -1 705 7.4191158637404442e-03 - - -7.0633463561534882e-02 1.7600670456886292e-01 - <_> - - 0 -1 706 6.3850679434835911e-03 - - 3.2175671309232712e-02 -3.9056539535522461e-01 - <_> - - 0 -1 707 -1.2516930699348450e-01 - - -8.1828737258911133e-01 1.0883989743888378e-02 - <_> - - 0 -1 708 -4.4671529904007912e-03 - - -5.0346201658248901e-01 4.6763787977397442e-03 - <_> - - 0 -1 709 -7.7330769272521138e-05 - - 1.1231110244989395e-01 -9.6118189394474030e-02 - <_> - - 0 -1 710 4.8749379813671112e-02 - - 1.5394289977848530e-02 -1.3794970512390137e-01 - <_> - - 0 -1 711 -1.5057959593832493e-02 - - 9.6794217824935913e-02 -1.0408320277929306e-01 - <_> - - 0 -1 712 -1.2867139652371407e-02 - - -5.5943179130554199e-01 8.0226631835103035e-03 - <_> - - 0 -1 713 4.0156361460685730e-01 - - 1.4450309798121452e-02 -6.9868141412734985e-01 - <_> - - 0 -1 714 1.4811520231887698e-03 - - -6.0255978256464005e-02 6.1738591641187668e-02 - <_> - - 0 -1 715 -3.6016408354043961e-02 - - -7.6666152477264404e-01 1.4014800079166889e-02 - <_> - 157 - -1.4323190450668335e+00 - - <_> - - 0 -1 716 9.1756142675876617e-02 - - -2.3866780102252960e-01 4.1412800550460815e-01 - <_> - - 0 -1 717 -6.3968323171138763e-02 - - 2.3543690145015717e-01 -2.2721849381923676e-01 - <_> - - 0 -1 718 -1.0061279870569706e-02 - - 1.9033129513263702e-01 -2.6683130860328674e-01 - <_> - - 0 -1 719 -1.3561559841036797e-02 - - 1.4927579462528229e-01 -1.8083690106868744e-01 - <_> - - 0 -1 720 -1.5076830051839352e-02 - - 2.0609399676322937e-01 -1.8534150719642639e-01 - <_> - - 0 -1 721 -6.1514219269156456e-03 - - -5.2573877573013306e-01 1.7555620521306992e-02 - <_> - - 0 -1 722 5.2476930432021618e-04 - - -1.4588220417499542e-01 1.5166099369525909e-01 - <_> - - 0 -1 723 2.4739510845392942e-03 - - -1.8805119395256042e-01 9.5694698393344879e-02 - <_> - - 0 -1 724 5.1760678179562092e-03 - - 5.2032090723514557e-02 -4.9382910132408142e-01 - <_> - - 0 -1 725 7.1702478453516960e-03 - - -9.4142921268939972e-02 1.1217010021209717e-01 - <_> - - 0 -1 726 -2.0057760179042816e-02 - - -5.9458369016647339e-01 3.6551840603351593e-02 - <_> - - 0 -1 727 -2.0991469919681549e-01 - - 2.6298180222511292e-01 -1.0240700095891953e-01 - <_> - - 0 -1 728 -4.2166719213128090e-03 - - 1.3226920366287231e-01 -1.5037320554256439e-01 - <_> - - 0 -1 729 -1.4944000169634819e-02 - - 6.5007939934730530e-02 -3.1482189893722534e-02 - <_> - - 0 -1 730 9.1618977487087250e-02 - - 1.1459749937057495e-01 -2.1580819785594940e-01 - <_> - - 0 -1 731 1.3998460490256548e-03 - - -1.5135070681571960e-01 1.3515089452266693e-01 - <_> - - 0 -1 732 6.2787801027297974e-02 - - -1.0663919895887375e-01 2.0777790248394012e-01 - <_> - - 0 -1 733 1.6034470498561859e-01 - - -6.7444883286952972e-02 3.0661910772323608e-01 - <_> - - 0 -1 734 -1.0080800391733646e-02 - - 2.2366729378700256e-01 -8.8719040155410767e-02 - <_> - - 0 -1 735 2.1805059164762497e-02 - - -5.5670421570539474e-02 1.3599489629268646e-01 - <_> - - 0 -1 736 -6.2400531023740768e-02 - - -4.4345939159393311e-01 3.1536590307950974e-02 - <_> - - 0 -1 737 -3.3827558159828186e-02 - - 2.5352260470390320e-01 -1.4237060211598873e-02 - <_> - - 0 -1 738 2.4944260716438293e-02 - - -5.6528169661760330e-02 2.6071038842201233e-01 - <_> - - 0 -1 739 2.8674729168415070e-02 - - -2.9934270307421684e-02 3.9638450741767883e-01 - <_> - - 0 -1 740 9.0782970190048218e-02 - - 4.7861438244581223e-02 -3.9084589481353760e-01 - <_> - - 0 -1 741 -9.8480619490146637e-03 - - -5.3130447864532471e-01 1.5104659833014011e-02 - <_> - - 0 -1 742 7.7331489883363247e-03 - - 2.4212060496211052e-02 -5.6011068820953369e-01 - <_> - - 0 -1 743 9.7148418426513672e-03 - - -7.7339023351669312e-02 2.0035690069198608e-01 - <_> - - 0 -1 744 -3.8716041017323732e-03 - - 9.3583829700946808e-02 -1.6308769583702087e-01 - <_> - - 0 -1 745 4.5740120112895966e-03 - - -7.4100360274314880e-02 1.8673260509967804e-01 - <_> - - 0 -1 746 3.5367589443922043e-03 - - -1.3378569483757019e-01 1.3118870556354523e-01 - <_> - - 0 -1 747 6.7387451417744160e-03 - - 1.9104549661278725e-02 -2.6714089512825012e-01 - <_> - - 0 -1 748 9.2638395726680756e-03 - - 3.8944028317928314e-02 -3.8115268945693970e-01 - <_> - - 0 -1 749 1.8035650253295898e-02 - - -5.6313838809728622e-02 2.6199018955230713e-01 - <_> - - 0 -1 750 6.1390590853989124e-03 - - 6.6768251359462738e-02 -2.4741740524768829e-01 - <_> - - 0 -1 751 -2.0742289721965790e-02 - - 1.5816679596900940e-01 -3.7055108696222305e-02 - <_> - - 0 -1 752 7.1745091117918491e-03 - - -6.2723852694034576e-02 2.4000909924507141e-01 - <_> - - 0 -1 753 -1.3980129733681679e-02 - - -2.5686889886856079e-01 2.4408269673585892e-02 - <_> - - 0 -1 754 5.0162561237812042e-03 - - 3.4693509340286255e-02 -3.6940971016883850e-01 - <_> - - 0 -1 755 6.2731141224503517e-03 - - -9.3136273324489594e-02 8.9128710329532623e-02 - <_> - - 0 -1 756 -6.1432798393070698e-03 - - -3.8624298572540283e-01 3.2790008932352066e-02 - <_> - - 0 -1 757 -5.4340949282050133e-03 - - 1.2529590725898743e-01 -7.3308877646923065e-02 - <_> - - 0 -1 758 2.6476379483938217e-02 - - 1.9692519679665565e-02 -6.5207397937774658e-01 - <_> - - 0 -1 759 5.3198561072349548e-02 - - -3.8907509297132492e-02 3.4459230303764343e-01 - <_> - - 0 -1 760 6.8159057991579175e-04 - - -1.4296619594097137e-01 1.1051479727029800e-01 - <_> - - 0 -1 761 2.7321189641952515e-02 - - -2.3013580590486526e-02 3.8668289780616760e-01 - <_> - - 0 -1 762 1.6437519341707230e-02 - - -5.0356149673461914e-02 2.5431129336357117e-01 - <_> - - 0 -1 763 -1.1353069916367531e-02 - - -3.8533338904380798e-01 2.3351570591330528e-02 - <_> - - 0 -1 764 -5.6346738710999489e-03 - - 1.8512620031833649e-01 -7.8567862510681152e-02 - <_> - - 0 -1 765 6.9470210000872612e-03 - - 3.6982610821723938e-02 -1.7629860341548920e-01 - <_> - - 0 -1 766 -1.6561519354581833e-02 - - -4.9848580360412598e-01 2.8883419930934906e-02 - <_> - - 0 -1 767 -7.6849356293678284e-02 - - -3.1578719615936279e-01 4.3519400060176849e-02 - <_> - - 0 -1 768 -1.5181129798293114e-02 - - 2.3423460125923157e-01 -6.2591478228569031e-02 - <_> - - 0 -1 769 1.9489860162138939e-02 - - 9.9025378003716469e-03 -3.8761860132217407e-01 - <_> - - 0 -1 770 1.8050599843263626e-02 - - -4.3930709362030029e-02 3.3341428637504578e-01 - <_> - - 0 -1 771 -2.9345480725169182e-03 - - 8.0954536795616150e-02 -4.9914769828319550e-02 - <_> - - 0 -1 772 2.6363410055637360e-02 - - 2.9126759618520737e-02 -5.0750941038131714e-01 - <_> - - 0 -1 773 2.4248650297522545e-03 - - 3.4961428493261337e-02 -2.8733271360397339e-01 - <_> - - 0 -1 774 4.9459808506071568e-03 - - 2.3161210119724274e-02 -5.0714761018753052e-01 - <_> - - 0 -1 775 -1.5279249846935272e-01 - - -3.2881578803062439e-01 2.5182789191603661e-02 - <_> - - 0 -1 776 -1.4403219392988831e-04 - - 7.5519256293773651e-02 -1.8179009854793549e-01 - <_> - - 0 -1 777 2.8954431414604187e-01 - - 1.1204889975488186e-02 -3.8397979736328125e-01 - <_> - - 0 -1 778 -4.8776458948850632e-02 - - -3.8399431109428406e-01 3.3249679952859879e-02 - <_> - - 0 -1 779 -3.2626438885927200e-02 - - 3.1781470775604248e-01 -4.7008451074361801e-02 - <_> - - 0 -1 780 7.5620561838150024e-03 - - -1.6391299664974213e-01 8.8394619524478912e-02 - <_> - - 0 -1 781 5.5116498842835426e-03 - - -4.5366939157247543e-02 1.0359580069780350e-01 - <_> - - 0 -1 782 7.8960359096527100e-03 - - 2.5835210457444191e-02 -4.1176858544349670e-01 - <_> - - 0 -1 783 2.5515830144286156e-02 - - 2.3357940837740898e-02 -1.0157670080661774e-01 - <_> - - 0 -1 784 2.7663391083478928e-03 - - -8.3083488047122955e-02 1.4612929522991180e-01 - <_> - - 0 -1 785 -3.0674580484628677e-03 - - 9.2135928571224213e-02 -5.7146791368722916e-02 - <_> - - 0 -1 786 9.2945564538240433e-03 - - 3.8736391812562943e-02 -3.5326778888702393e-01 - <_> - - 0 -1 787 6.7423127591609955e-02 - - -7.5241766870021820e-02 1.7596650123596191e-01 - <_> - - 0 -1 788 -4.4064600951969624e-03 - - 9.7793661057949066e-02 -1.5189309418201447e-01 - <_> - - 0 -1 789 -4.9828600138425827e-02 - - -4.5790219306945801e-01 6.8976799957454205e-03 - <_> - - 0 -1 790 3.6543350666761398e-02 - - 5.1439449191093445e-02 -2.6903149485588074e-01 - <_> - - 0 -1 791 -6.4155302941799164e-02 - - -3.7688180804252625e-02 3.5685088485479355e-02 - <_> - - 0 -1 792 1.6559410141780972e-03 - - -7.8454039990901947e-02 1.4457669854164124e-01 - <_> - - 0 -1 793 -4.3586108833551407e-02 - - -6.8510597944259644e-01 1.3048769906163216e-02 - <_> - - 0 -1 794 -2.2230669856071472e-01 - - -5.7761538028717041e-01 1.7124939709901810e-02 - <_> - - 0 -1 795 2.4673160165548325e-02 - - 1.1898159980773926e-02 -4.0522110462188721e-01 - <_> - - 0 -1 796 -1.1929229833185673e-02 - - 3.3518779277801514e-01 -3.3670309931039810e-02 - <_> - - 0 -1 797 1.2319719826336950e-04 - - -8.5718862712383270e-02 8.3713091909885406e-02 - <_> - - 0 -1 798 -9.3408823013305664e-03 - - -2.8543150424957275e-01 4.0737889707088470e-02 - <_> - - 0 -1 799 -7.4626510031521320e-03 - - 1.1191319674253464e-01 -3.4012328833341599e-02 - <_> - - 0 -1 800 -1.3723709620535374e-02 - - 2.4986229836940765e-01 -4.5033760368824005e-02 - <_> - - 0 -1 801 1.5219870209693909e-01 - - -9.1021090745925903e-02 9.0961046516895294e-02 - <_> - - 0 -1 802 7.7259603131096810e-05 - - -1.0590860247612000e-01 1.1055749654769897e-01 - <_> - - 0 -1 803 4.9416758120059967e-03 - - 2.4189069867134094e-02 -3.0954331159591675e-01 - <_> - - 0 -1 804 -8.4537155926227570e-03 - - -4.9883198738098145e-01 1.9790159538388252e-02 - <_> - - 0 -1 805 -1.5807019372005016e-04 - - 8.1088282167911530e-02 -9.6961513161659241e-02 - <_> - - 0 -1 806 -3.7125058472156525e-02 - - -6.6581451892852783e-01 1.4882969669997692e-02 - <_> - - 0 -1 807 2.6830319315195084e-02 - - -1.4309049583971500e-02 1.8943400681018829e-01 - <_> - - 0 -1 808 -5.0245620310306549e-02 - - 2.9321768879890442e-01 -3.4267731010913849e-02 - <_> - - 0 -1 809 -6.9950302131474018e-03 - - -3.6339738965034485e-01 2.4558270350098610e-02 - <_> - - 0 -1 810 6.5877571702003479e-02 - - -6.9623842835426331e-02 1.6893179714679718e-01 - <_> - - 0 -1 811 -1.3468010351061821e-02 - - -5.7445019483566284e-01 7.6498151756823063e-03 - <_> - - 0 -1 812 6.5795979462563992e-03 - - 4.6871460974216461e-02 -2.6042988896369934e-01 - <_> - - 0 -1 813 8.3702273666858673e-02 - - -2.6280758902430534e-03 9.5396530628204346e-01 - <_> - - 0 -1 814 -2.6914669200778008e-02 - - 4.3413200974464417e-01 -2.5187220424413681e-02 - <_> - - 0 -1 815 6.8170771002769470e-02 - - 1.1355379596352577e-02 -1.9769650697708130e-01 - <_> - - 0 -1 816 -1.8386699259281158e-02 - - -3.0161228775978088e-01 4.0068160742521286e-02 - <_> - - 0 -1 817 -4.8888311721384525e-03 - - -4.7499518841505051e-02 2.7949759736657143e-02 - <_> - - 0 -1 818 1.2031979858875275e-02 - - -4.1758809238672256e-02 2.5678071379661560e-01 - <_> - - 0 -1 819 4.5282568782567978e-02 - - -1.2090729549527168e-02 5.9624272584915161e-01 - <_> - - 0 -1 820 1.6428649425506592e-02 - - 3.1723149120807648e-02 -3.4151419997215271e-01 - <_> - - 0 -1 821 1.5807289630174637e-02 - - -8.7692633271217346e-02 7.3399387300014496e-02 - <_> - - 0 -1 822 7.3865547776222229e-02 - - 1.7566639930009842e-02 -5.8591890335083008e-01 - <_> - - 0 -1 823 8.1742003560066223e-02 - - -1.4694429934024811e-02 3.8172268867492676e-01 - <_> - - 0 -1 824 1.6201290418393910e-04 - - -1.0157629847526550e-01 1.0071060061454773e-01 - <_> - - 0 -1 825 9.6514606848359108e-03 - - -3.9196711033582687e-02 1.5712510049343109e-01 - <_> - - 0 -1 826 1.1394619941711426e-01 - - 2.1624019369482994e-02 -4.9949270486831665e-01 - <_> - - 0 -1 827 -3.1548771075904369e-03 - - 5.0318129360675812e-02 -4.3619360774755478e-02 - <_> - - 0 -1 828 -4.4351350516080856e-02 - - 3.0843031406402588e-01 -3.2389428466558456e-02 - <_> - - 0 -1 829 5.9337329119443893e-02 - - 8.8634816929697990e-03 -4.3402770161628723e-01 - <_> - - 0 -1 830 8.4961997345089912e-03 - - -1.6435340046882629e-01 7.2020038962364197e-02 - <_> - - 0 -1 831 1.2611909769475460e-02 - - -5.4733909666538239e-02 2.6740849018096924e-01 - <_> - - 0 -1 832 1.0056140273809433e-01 - - 9.6470691263675690e-02 -1.2373570352792740e-01 - <_> - - 0 -1 833 2.4684870368218981e-05 - - -6.5468028187751770e-02 7.5764216482639313e-02 - <_> - - 0 -1 834 1.7325380817055702e-02 - - 4.9385469406843185e-02 -2.0938959717750549e-01 - <_> - - 0 -1 835 -8.1096980720758438e-03 - - -2.3129729926586151e-01 1.3806460425257683e-02 - <_> - - 0 -1 836 7.0394109934568405e-03 - - -4.8593230545520782e-02 2.1045120060443878e-01 - <_> - - 0 -1 837 -1.0678370017558336e-03 - - 9.8571203649044037e-02 -4.5679539442062378e-02 - <_> - - 0 -1 838 7.9888887703418732e-03 - - 2.2722730413079262e-02 -4.7305500507354736e-01 - <_> - - 0 -1 839 -2.8562550432980061e-03 - - -1.2667450308799744e-01 2.6346899569034576e-02 - <_> - - 0 -1 840 -2.8239099308848381e-02 - - -4.8173430562019348e-01 2.0280279219150543e-02 - <_> - - 0 -1 841 -3.5814680159091949e-03 - - 1.3375559449195862e-01 -7.5176857411861420e-02 - <_> - - 0 -1 842 -1.4436709880828857e-01 - - -3.1298300623893738e-01 3.8588508963584900e-02 - <_> - - 0 -1 843 1.2504559755325317e-01 - - 6.5982979722321033e-03 -8.1579452753067017e-01 - <_> - - 0 -1 844 -1.3011660426855087e-02 - - 1.2922100722789764e-01 -7.9708762466907501e-02 - <_> - - 0 -1 845 -1.7209460493177176e-03 - - 1.8410180509090424e-01 -3.8158390671014786e-02 - <_> - - 0 -1 846 8.2962076703552157e-05 - - -8.0844506621360779e-02 1.2401849776506424e-01 - <_> - - 0 -1 847 6.5386621281504631e-03 - - 2.5721050798892975e-02 -3.4728491306304932e-01 - <_> - - 0 -1 848 -7.6022120192646980e-03 - - -1.3279519975185394e-01 6.9503903388977051e-02 - <_> - - 0 -1 849 -1.2741329555865377e-04 - - 7.3461078107357025e-02 -5.6750301271677017e-02 - <_> - - 0 -1 850 -8.7483227252960205e-03 - - -3.8747811317443848e-01 2.5242859497666359e-02 - <_> - - 0 -1 851 1.8606209778226912e-04 - - -8.0794073641300201e-02 1.1124949902296066e-01 - <_> - - 0 -1 852 -2.3457060160581023e-04 - - 1.3575780391693115e-01 -8.0513857305049896e-02 - <_> - - 0 -1 853 1.7333909636363387e-03 - - -4.0824349969625473e-02 7.0485733449459076e-02 - <_> - - 0 -1 854 2.5763779412955046e-03 - - -1.0582429915666580e-01 8.8251203298568726e-02 - <_> - - 0 -1 855 3.1439519952982664e-03 - - 2.2850390523672104e-02 -2.2878000140190125e-01 - <_> - - 0 -1 856 -6.6810711286962032e-03 - - -5.5194759368896484e-01 1.6644019633531570e-02 - <_> - - 0 -1 857 -1.0215619578957558e-02 - - 1.1516509950160980e-01 -3.0920639634132385e-02 - <_> - - 0 -1 858 6.8375351838767529e-03 - - 3.5597868263721466e-02 -2.5795739889144897e-01 - <_> - - 0 -1 859 3.1667288858443499e-03 - - -1.1311589926481247e-01 5.9377081692218781e-02 - <_> - - 0 -1 860 1.7846110463142395e-01 - - -9.1090977191925049e-02 1.0215540230274200e-01 - <_> - - 0 -1 861 -2.3922319523990154e-03 - - 1.0548549890518188e-01 -4.0941018611192703e-02 - <_> - - 0 -1 862 8.2479801494628191e-04 - - -9.2547960579395294e-02 1.0704030096530914e-01 - <_> - - 0 -1 863 -2.3213559761643410e-03 - - 4.7483701258897781e-02 -4.4801708310842514e-02 - <_> - - 0 -1 864 9.9881906062364578e-03 - - -5.3101241588592529e-02 1.8933349847793579e-01 - <_> - - 0 -1 865 7.2582447901368141e-03 - - 1.5470819547772408e-02 -1.6273790597915649e-01 - <_> - - 0 -1 866 -1.2209150195121765e-01 - - -6.5882581472396851e-01 1.4432240277528763e-02 - <_> - - 0 -1 867 4.2930290102958679e-02 - - -8.9507391676306725e-03 7.0037537813186646e-01 - <_> - - 0 -1 868 -1.4183740131556988e-02 - - 2.8738090395927429e-01 -3.2423838973045349e-02 - <_> - - 0 -1 869 6.5566753619350493e-05 - - -6.0012109577655792e-02 7.2343066334724426e-02 - <_> - - 0 -1 870 -9.1673799033742398e-05 - - 1.2412530183792114e-01 -8.8637173175811768e-02 - <_> - - 0 -1 871 1.0451570153236389e-02 - - 1.9897699356079102e-02 -5.4859578609466553e-01 - <_> - - 0 -1 872 7.1406508795917034e-03 - - 2.1871440112590790e-02 -3.9959570765495300e-01 - <_> - 166 - -1.3140599727630615e+00 - - <_> - - 0 -1 873 -7.9002313315868378e-02 - - 3.2428950071334839e-01 -2.5313940644264221e-01 - <_> - - 0 -1 874 2.2337300702929497e-02 - - -9.4131506979465485e-02 1.3784369826316833e-01 - <_> - - 0 -1 875 -6.6611483693122864e-02 - - 1.7535580694675446e-01 -2.6326939463615417e-01 - <_> - - 0 -1 876 1.8115570768713951e-02 - - 1.0016679763793945e-01 -2.5084051489830017e-01 - <_> - - 0 -1 877 4.2208299040794373e-02 - - -4.6460118144750595e-02 5.0753402709960938e-01 - <_> - - 0 -1 878 2.1947380155324936e-02 - - -3.5192631185054779e-02 2.9413568973541260e-01 - <_> - - 0 -1 879 3.9068479090929031e-02 - - 3.4318011254072189e-02 -5.9637278318405151e-01 - <_> - - 0 -1 880 -1.7158839851617813e-02 - - 2.2071230411529541e-01 -6.2802940607070923e-02 - <_> - - 0 -1 881 -5.5410808272426948e-05 - - 1.9250670075416565e-01 -9.7911693155765533e-02 - <_> - - 0 -1 882 5.7713039219379425e-02 - - -1.7752349376678467e-02 3.9690899848937988e-01 - <_> - - 0 -1 883 -2.7670299634337425e-02 - - 2.7309200167655945e-01 -6.9922827184200287e-02 - <_> - - 0 -1 884 4.1078277863562107e-03 - - -4.9098778516054153e-02 2.4907429516315460e-01 - <_> - - 0 -1 885 4.8231639084406197e-05 - - -1.2422840297222137e-01 1.7488770186901093e-01 - <_> - - 0 -1 886 5.4101468995213509e-03 - - -1.1635100096464157e-01 1.1202619969844818e-01 - <_> - - 0 -1 887 1.2156780064105988e-01 - - 3.5816799849271774e-02 -4.2390239238739014e-01 - <_> - - 0 -1 888 -4.5798659324645996e-02 - - -3.9612388610839844e-01 2.6914669200778008e-02 - <_> - - 0 -1 889 -4.3434510007500648e-03 - - 1.5174229443073273e-01 -1.5247189998626709e-01 - <_> - - 0 -1 890 5.4885639110580087e-04 - - -1.0398910194635391e-01 1.0211019963026047e-01 - <_> - - 0 -1 891 2.4605579674243927e-03 - - -9.2063240706920624e-02 2.0085799694061279e-01 - <_> - - 0 -1 892 -2.0400179550051689e-02 - - 3.9317831397056580e-01 5.8226548135280609e-03 - <_> - - 0 -1 893 2.3037819482851774e-04 - - -1.5047320723533630e-01 1.0606130212545395e-01 - <_> - - 0 -1 894 -4.2928410694003105e-03 - - 7.2660259902477264e-02 -7.9356543719768524e-02 - <_> - - 0 -1 895 1.8637800216674805e-01 - - -1.1249560117721558e-01 1.5694859623908997e-01 - <_> - - 0 -1 896 -2.6433460414409637e-02 - - -3.9095601439476013e-01 4.9486149102449417e-02 - <_> - - 0 -1 897 -2.4137930572032928e-01 - - -6.7887061834335327e-01 1.8050249665975571e-02 - <_> - - 0 -1 898 3.0466640368103981e-02 - - 2.7202309574931860e-03 -6.3896268606185913e-01 - <_> - - 0 -1 899 2.7874959632754326e-03 - - -8.3127573132514954e-02 1.7751370370388031e-01 - <_> - - 0 -1 900 1.2827770411968231e-01 - - -9.3625776469707489e-02 1.6796620190143585e-01 - <_> - - 0 -1 901 -3.7217219360172749e-03 - - 1.6798649728298187e-01 -1.0740660130977631e-01 - <_> - - 0 -1 902 2.5106329470872879e-02 - - 1.7044939100742340e-02 -4.9812939763069153e-01 - <_> - - 0 -1 903 8.5740294307470322e-03 - - 3.8930539041757584e-02 -3.3503991365432739e-01 - <_> - - 0 -1 904 -1.6299229115247726e-02 - - -1.7728500068187714e-01 5.9367809444665909e-03 - <_> - - 0 -1 905 1.3755589723587036e-02 - - 4.9292150884866714e-02 -2.9905700683593750e-01 - <_> - - 0 -1 906 1.0170560330152512e-02 - - 1.2569320388138294e-02 -3.2717370986938477e-01 - <_> - - 0 -1 907 -1.1838880181312561e-01 - - -3.0642750859260559e-01 4.0406189858913422e-02 - <_> - - 0 -1 908 2.8778460621833801e-01 - - 8.6266417056322098e-03 -5.8403861522674561e-01 - <_> - - 0 -1 909 -1.0709369555115700e-02 - - -4.5812180638313293e-01 2.6710700243711472e-02 - <_> - - 0 -1 910 -1.6836540773510933e-02 - - -4.8346018791198730e-01 1.4101839624345303e-03 - <_> - - 0 -1 911 -2.6871969923377037e-02 - - 3.0236101150512695e-01 -4.0173869580030441e-02 - <_> - - 0 -1 912 2.0822209771722555e-03 - - 2.6397850364446640e-02 -7.1128167212009430e-02 - <_> - - 0 -1 913 1.8307130038738251e-01 - - 3.1573470681905746e-02 -4.3112158775329590e-01 - <_> - - 0 -1 914 -5.3969710133969784e-03 - - -9.9910236895084381e-02 1.3491000048816204e-02 - <_> - - 0 -1 915 6.5924688242375851e-03 - - 3.4465100616216660e-02 -4.0542820096015930e-01 - <_> - - 0 -1 916 7.6914830133318901e-03 - - -3.9300210773944855e-02 1.6817179322242737e-01 - <_> - - 0 -1 917 -1.3487709686160088e-02 - - 3.1880301237106323e-01 -3.8503371179103851e-02 - <_> - - 0 -1 918 -1.3206779956817627e-02 - - 1.1506190150976181e-01 -2.6123069226741791e-02 - <_> - - 0 -1 919 9.5766428858041763e-03 - - -5.6236121803522110e-02 2.2048389911651611e-01 - <_> - - 0 -1 920 3.0655260197818279e-03 - - -8.0174110829830170e-02 1.0322000086307526e-01 - <_> - - 0 -1 921 8.6779087723698467e-05 - - -1.7224429547786713e-01 6.9087728857994080e-02 - <_> - - 0 -1 922 9.6185833215713501e-02 - - 1.5162150375545025e-03 -5.5438750982284546e-01 - <_> - - 0 -1 923 3.8120381534099579e-02 - - 5.1593549549579620e-02 -2.6273688673973083e-01 - <_> - - 0 -1 924 5.0568342208862305e-01 - - 1.0466909967362881e-02 -5.1577657461166382e-01 - <_> - - 0 -1 925 -1.2192579917609692e-02 - - 3.0584090948104858e-01 -4.0013160556554794e-02 - <_> - - 0 -1 926 1.2820640206336975e-01 - - 2.2402040660381317e-02 -2.7763271331787109e-01 - <_> - - 0 -1 927 1.2943449616432190e-01 - - -6.1534829437732697e-02 2.1345520019531250e-01 - <_> - - 0 -1 928 -7.5714521110057831e-02 - - 1.5290339291095734e-01 -1.1667010188102722e-01 - <_> - - 0 -1 929 -5.3732179367216304e-05 - - 1.2800370156764984e-01 -9.7825959324836731e-02 - <_> - - 0 -1 930 7.5803599320352077e-03 - - -9.7915172576904297e-02 1.2620359659194946e-01 - <_> - - 0 -1 931 6.8636022508144379e-02 - - 4.0432218462228775e-02 -3.1329730153083801e-01 - <_> - - 0 -1 932 1.1460750363767147e-02 - - 2.5361500680446625e-02 -4.8540189862251282e-01 - <_> - - 0 -1 933 2.6128649551537819e-05 - - -1.0432030260562897e-01 1.1333329975605011e-01 - <_> - - 0 -1 934 8.4630657511297613e-05 - - -1.0487859696149826e-01 1.2740099430084229e-01 - <_> - - 0 -1 935 -2.3739310563541949e-05 - - 1.5114049613475800e-01 -1.0252150148153305e-01 - <_> - - 0 -1 936 1.1611119844019413e-02 - - 1.4886969700455666e-02 -2.8674951195716858e-01 - <_> - - 0 -1 937 1.2420720420777798e-02 - - -6.2066860496997833e-02 1.7772339284420013e-01 - <_> - - 0 -1 938 2.3426260799169540e-02 - - -8.4759250283241272e-02 1.4415900409221649e-01 - <_> - - 0 -1 939 1.4368200302124023e-01 - - 2.5768509134650230e-02 -4.9598070979118347e-01 - <_> - - 0 -1 940 -3.6740589421242476e-03 - - -3.4700030088424683e-01 1.2800060212612152e-02 - <_> - - 0 -1 941 5.1495590014383197e-05 - - -1.0679510235786438e-01 9.9959939718246460e-02 - <_> - - 0 -1 942 9.9259437993168831e-03 - - 3.2620970159769058e-02 -3.5369759798049927e-01 - <_> - - 0 -1 943 -5.1487040764186531e-05 - - 1.2531200051307678e-01 -9.5278233289718628e-02 - <_> - - 0 -1 944 2.7326600626111031e-02 - - -8.9491289108991623e-03 6.4724721014499664e-02 - <_> - - 0 -1 945 2.2325750440359116e-02 - - 1.4013900421559811e-02 -7.4047172069549561e-01 - <_> - - 0 -1 946 4.0280960500240326e-02 - - 1.0004050564020872e-03 -1.1777099967002869e-01 - <_> - - 0 -1 947 2.1893329918384552e-02 - - -5.0884321331977844e-02 2.2789579629898071e-01 - <_> - - 0 -1 948 -7.1642571128904819e-03 - - 1.2857060134410858e-01 -5.3552430123090744e-02 - <_> - - 0 -1 949 -8.0841138958930969e-02 - - 2.0653660595417023e-01 -6.6617228090763092e-02 - <_> - - 0 -1 950 5.1331298891454935e-04 - - -5.4442800581455231e-02 1.4963160455226898e-01 - <_> - - 0 -1 951 8.6274370551109314e-03 - - 3.0817959457635880e-02 -3.6723139882087708e-01 - <_> - - 0 -1 952 -8.7373692076653242e-04 - - 1.3902780413627625e-01 -6.3252650201320648e-02 - <_> - - 0 -1 953 -1.1720039881765842e-02 - - -4.7670018672943115e-01 2.4412320926785469e-02 - <_> - - 0 -1 954 4.8860989511013031e-02 - - 1.0085090063512325e-02 -4.6592590212821960e-01 - <_> - - 0 -1 955 1.8693100661039352e-02 - - -7.1992039680480957e-02 1.7693880200386047e-01 - <_> - - 0 -1 956 -5.3908649832010269e-02 - - 1.4675259590148926e-01 -9.0455517172813416e-02 - <_> - - 0 -1 957 8.3356387913227081e-03 - - 2.2398740053176880e-02 -4.9412518739700317e-01 - <_> - - 0 -1 958 2.7100899387733079e-05 - - -5.3562410175800323e-02 7.7102899551391602e-02 - <_> - - 0 -1 959 4.9839400162454695e-05 - - -8.7917067110538483e-02 1.2769749760627747e-01 - <_> - - 0 -1 960 -2.5873789127217606e-05 - - 8.6240112781524658e-02 -9.1946959495544434e-02 - <_> - - 0 -1 961 -4.5616321585839614e-05 - - 1.0863859951496124e-01 -9.9706746637821198e-02 - <_> - - 0 -1 962 3.4546090755611658e-03 - - 3.3691279590129852e-02 -2.5994610786437988e-01 - <_> - - 0 -1 963 -3.0438970774412155e-02 - - 3.6962929368019104e-01 -2.9208270832896233e-02 - <_> - - 0 -1 964 4.3956300616264343e-01 - - -2.3035079240798950e-02 4.4141438603401184e-01 - <_> - - 0 -1 965 5.8688350691227242e-05 - - -1.0969989746809006e-01 9.8768897354602814e-02 - <_> - - 0 -1 966 8.4090819582343102e-03 - - -4.9145638942718506e-02 1.7818750441074371e-01 - <_> - - 0 -1 967 -1.4912109822034836e-02 - - -4.2131778597831726e-01 2.6400730013847351e-02 - <_> - - 0 -1 968 -2.0906489342451096e-02 - - -2.9467320442199707e-01 1.5055189840495586e-02 - <_> - - 0 -1 969 5.3503939852816984e-05 - - -8.0975167453289032e-02 1.2568619847297668e-01 - <_> - - 0 -1 970 -1.0656829690560699e-03 - - 5.3799871355295181e-02 -1.4916649460792542e-01 - <_> - - 0 -1 971 1.4879689551889896e-02 - - 2.0114380866289139e-02 -4.7147929668426514e-01 - <_> - - 0 -1 972 1.8449500203132629e-02 - - 1.6212660819292068e-02 -2.6070928573608398e-01 - <_> - - 0 -1 973 1.1283960193395615e-03 - - -6.1842311173677444e-02 1.5736180543899536e-01 - <_> - - 0 -1 974 4.1768390685319901e-02 - - 4.5171868987381458e-03 -5.2301770448684692e-01 - <_> - - 0 -1 975 -4.6589840203523636e-03 - - -2.4603700637817383e-01 3.8989998400211334e-02 - <_> - - 0 -1 976 1.2120570056140423e-02 - - 1.2968990020453930e-02 -6.7711579799652100e-01 - <_> - - 0 -1 977 5.1322788931429386e-03 - - 1.5230550430715084e-02 -5.5883342027664185e-01 - <_> - - 0 -1 978 8.5264481604099274e-02 - - 1.7884389963001013e-03 -5.7048821449279785e-01 - <_> - - 0 -1 979 2.7729919180274010e-02 - - -3.7531539797782898e-02 3.1022569537162781e-01 - <_> - - 0 -1 980 4.1674780659377575e-03 - - -9.5324076712131500e-02 9.6109919250011444e-02 - <_> - - 0 -1 981 -3.5056591033935547e-02 - - -3.7690278887748718e-01 2.4474700912833214e-02 - <_> - - 0 -1 982 1.7184760421514511e-02 - - -7.0347599685192108e-03 4.8588299751281738e-01 - <_> - - 0 -1 983 3.7842839956283569e-03 - - 4.3908059597015381e-02 -2.5237309932708740e-01 - <_> - - 0 -1 984 8.2066917419433594e-01 - - 1.5171869657933712e-02 -5.3948462009429932e-01 - <_> - - 0 -1 985 1.0091160424053669e-02 - - -9.6920862793922424e-02 1.1189579963684082e-01 - <_> - - 0 -1 986 -1.6029510647058487e-02 - - -2.3441310226917267e-01 2.3455519229173660e-02 - <_> - - 0 -1 987 1.0849679820239544e-02 - - 4.4147640466690063e-02 -2.6963528990745544e-01 - <_> - - 0 -1 988 1.3045299798250198e-02 - - 2.2153200116008520e-03 -7.9784917831420898e-01 - <_> - - 0 -1 989 1.1236639693379402e-02 - - -4.3046820908784866e-02 2.4014919996261597e-01 - <_> - - 0 -1 990 -7.7543058432638645e-03 - - -3.5501450300216675e-01 1.1025140061974525e-02 - <_> - - 0 -1 991 3.3010800834745169e-03 - - 3.0340820550918579e-02 -3.7136289477348328e-01 - <_> - - 0 -1 992 6.5340842120349407e-03 - - -8.5805252194404602e-02 9.1638848185539246e-02 - <_> - - 0 -1 993 -4.7619681805372238e-02 - - 4.0863269567489624e-01 -2.6420159265398979e-02 - <_> - - 0 -1 994 6.8403937621042132e-04 - - -3.2312858849763870e-02 8.8080801069736481e-02 - <_> - - 0 -1 995 -7.6149452070239931e-05 - - 1.1525599658489227e-01 -8.9074932038784027e-02 - <_> - - 0 -1 996 2.4684870368218981e-05 - - -6.0994371771812439e-02 8.1846691668033600e-02 - <_> - - 0 -1 997 -8.2685357483569533e-05 - - 1.1239729821681976e-01 -8.7840661406517029e-02 - <_> - - 0 -1 998 -5.1181959861423820e-05 - - 1.2418139725923538e-01 -9.6157982945442200e-02 - <_> - - 0 -1 999 -8.0426130443811417e-03 - - -4.0603759884834290e-01 2.5093160569667816e-02 - <_> - - 0 -1 1000 2.4684870368218981e-05 - - -7.3493182659149170e-02 9.0214557945728302e-02 - <_> - - 0 -1 1001 5.0119768275180832e-05 - - -8.2994453608989716e-02 1.1394649744033813e-01 - <_> - - 0 -1 1002 -9.5925288042053580e-04 - - -7.1206063032150269e-02 4.2806431651115417e-02 - <_> - - 0 -1 1003 2.0211040973663330e-03 - - 2.5516960769891739e-02 -3.5512170195579529e-01 - <_> - - 0 -1 1004 1.2242579832673073e-02 - - 1.8769890069961548e-02 -1.9807919859886169e-01 - <_> - - 0 -1 1005 -1.4281050302088261e-02 - - 1.9607509672641754e-01 -5.0247050821781158e-02 - <_> - - 0 -1 1006 4.0956941246986389e-01 - - 1.3107390142977238e-02 -7.2472369670867920e-01 - <_> - - 0 -1 1007 2.6600460842018947e-05 - - -8.7076403200626373e-02 1.1106210201978683e-01 - <_> - - 0 -1 1008 -1.1234419653192163e-03 - - 7.7456079423427582e-02 -1.3284559547901154e-01 - <_> - - 0 -1 1009 5.6427060626447201e-03 - - 4.8446040600538254e-02 -2.1871030330657959e-01 - <_> - - 0 -1 1010 -1.3591510243713856e-02 - - 8.2535639405250549e-02 -2.2708360105752945e-02 - <_> - - 0 -1 1011 1.1591419577598572e-02 - - -4.8790689557790756e-02 1.9490590691566467e-01 - <_> - - 0 -1 1012 -1.2608569860458374e-01 - - 4.1815188527107239e-01 -9.5796259120106697e-03 - <_> - - 0 -1 1013 2.6331260800361633e-02 - - 1.6726149246096611e-02 -5.7491612434387207e-01 - <_> - - 0 -1 1014 4.1054669767618179e-02 - - -1.0885179974138737e-02 3.4100100398063660e-01 - <_> - - 0 -1 1015 7.1040436625480652e-02 - - -1.3916869647800922e-02 6.0548651218414307e-01 - <_> - - 0 -1 1016 -1.6813749447464943e-02 - - -4.1529890894889832e-01 2.3168940097093582e-02 - <_> - - 0 -1 1017 -1.6978330910205841e-02 - - 2.2032840549945831e-01 -3.9898801594972610e-02 - <_> - - 0 -1 1018 -9.5234332547988743e-05 - - 8.1150002777576447e-02 -1.3438819348812103e-01 - <_> - - 0 -1 1019 -1.7120620235800743e-02 - - -4.2468288540840149e-01 2.0317260175943375e-02 - <_> - - 0 -1 1020 2.1241260692477226e-02 - - 1.4055900275707245e-02 -5.4326081275939941e-01 - <_> - - 0 -1 1021 -4.6816341578960419e-02 - - 3.9923959970474243e-01 -2.2853419184684753e-02 - <_> - - 0 -1 1022 -2.2095210850238800e-02 - - -4.1975128650665283e-01 1.1670240201056004e-02 - <_> - - 0 -1 1023 2.2133700549602509e-01 - - 1.3368880376219749e-02 -5.8491647243499756e-01 - <_> - - 0 -1 1024 5.7718330062925816e-03 - - -3.9301060140132904e-02 7.6248377561569214e-02 - <_> - - 0 -1 1025 9.2696389183402061e-03 - - -4.0809009224176407e-02 2.0580360293388367e-01 - <_> - - 0 -1 1026 1.6822699690237641e-03 - - -6.0559730976819992e-02 8.9423552155494690e-02 - <_> - - 0 -1 1027 -1.5279100276529789e-02 - - -3.9893868565559387e-01 2.2799460217356682e-02 - <_> - - 0 -1 1028 -3.1749838963150978e-03 - - 1.3225950300693512e-01 -4.6028770506381989e-02 - <_> - - 0 -1 1029 2.8258180245757103e-03 - - -1.0630449652671814e-01 9.6875302493572235e-02 - <_> - - 0 -1 1030 -5.4384778195526451e-05 - - 5.1282491534948349e-02 -8.4274142980575562e-02 - <_> - - 0 -1 1031 1.4561800286173820e-02 - - -4.3352860957384109e-02 1.9777399301528931e-01 - <_> - - 0 -1 1032 4.3724558781832457e-04 - - -5.0819009542465210e-02 1.0387989878654480e-01 - <_> - - 0 -1 1033 -1.0908489674329758e-01 - - -3.3270779252052307e-01 2.6828980073332787e-02 - <_> - - 0 -1 1034 -7.0241180947050452e-04 - - 7.6168522238731384e-02 -6.4519211649894714e-02 - <_> - - 0 -1 1035 -1.5636570751667023e-02 - - -4.4809681177139282e-01 2.0276250317692757e-02 - <_> - - 0 -1 1036 -1.1897999793291092e-02 - - -4.9537119269371033e-01 4.4984170235693455e-03 - <_> - - 0 -1 1037 -1.5789919998496771e-03 - - 1.2958030402660370e-01 -7.2660639882087708e-02 - <_> - - 0 -1 1038 -4.9960118532180786e-01 - - -6.6730189323425293e-01 7.9309539869427681e-03 - <_> - 200 - -1.2872380018234253e+00 - - <_> - - 0 -1 1039 -7.8940317034721375e-02 - - 3.2988879084587097e-01 -1.9701880216598511e-01 - <_> - - 0 -1 1040 -1.7321130260825157e-02 - - 2.1981470286846161e-01 -8.1192083656787872e-02 - <_> - - 0 -1 1041 1.2355250306427479e-02 - - -3.0988898873329163e-01 1.4423920214176178e-01 - <_> - - 0 -1 1042 -1.0426779836416245e-01 - - 1.5626840293407440e-01 -1.8359909951686859e-01 - <_> - - 0 -1 1043 -8.5183881223201752e-02 - - -2.9022741317749023e-01 1.2742319703102112e-01 - <_> - - 0 -1 1044 -1.3357129693031311e-01 - - -3.0198419094085693e-01 -1.6821650788187981e-02 - <_> - - 0 -1 1045 2.2293360531330109e-01 - - 1.8408309668302536e-02 -9.1678131103515625e+02 - <_> - - 0 -1 1046 -2.7723070234060287e-02 - - 9.9666483700275421e-02 -1.1882440000772476e-01 - <_> - - 0 -1 1047 1.8182699382305145e-01 - - -5.7261440902948380e-02 4.6252810955047607e-01 - <_> - - 0 -1 1048 2.4684790521860123e-02 - - 6.8861052393913269e-02 -1.9284169375896454e-01 - <_> - - 0 -1 1049 1.3814649544656277e-02 - - -7.8058518469333649e-02 3.0780151486396790e-01 - <_> - - 0 -1 1050 -2.4524500593543053e-02 - - -2.6867350935935974e-01 6.8230986595153809e-02 - <_> - - 0 -1 1051 7.0112771354615688e-03 - - -1.8542979657649994e-01 1.1322949826717377e-01 - <_> - - 0 -1 1052 -1.0548190027475357e-01 - - -3.4024599194526672e-01 1.0903449729084969e-02 - <_> - - 0 -1 1053 -6.3391570001840591e-03 - - 1.0419529676437378e-01 -2.0516459643840790e-01 - <_> - - 0 -1 1054 7.8947477042675018e-02 - - 1.6118109226226807e-02 -4.1540539264678955e-01 - <_> - - 0 -1 1055 4.8509850166738033e-03 - - 4.8841159790754318e-02 -3.8384801149368286e-01 - <_> - - 0 -1 1056 4.5862730592489243e-02 - - -1.5829730033874512e-01 1.0200840234756470e-01 - <_> - - 0 -1 1057 1.3429409824311733e-02 - - 5.4573111236095428e-02 -3.6586639285087585e-01 - <_> - - 0 -1 1058 1.9151210784912109e-02 - - 1.1911420151591301e-02 -4.3721321225166321e-01 - <_> - - 0 -1 1059 -2.2035999596118927e-01 - - 3.8328599929809570e-01 -5.7721391320228577e-02 - <_> - - 0 -1 1060 4.2383451014757156e-02 - - -6.5342620015144348e-02 7.8451372683048248e-02 - <_> - - 0 -1 1061 3.0524730682373047e-02 - - 4.9622170627117157e-02 -3.4946510195732117e-01 - <_> - - 0 -1 1062 1.9504040479660034e-02 - - -6.8343728780746460e-02 2.6461350917816162e-01 - <_> - - 0 -1 1063 9.8469397053122520e-03 - - -7.7927976846694946e-02 2.0894029736518860e-01 - <_> - - 0 -1 1064 -3.2195370644330978e-02 - - 2.6800119876861572e-01 -7.0054799318313599e-02 - <_> - - 0 -1 1065 -9.8907537758350372e-03 - - 1.2193089723587036e-01 -1.3975459337234497e-01 - <_> - - 0 -1 1066 1.6434019431471825e-02 - - 2.9636459425091743e-02 -2.3874099552631378e-01 - <_> - - 0 -1 1067 -8.7646512838546187e-05 - - 1.0851290076971054e-01 -1.3716340065002441e-01 - <_> - - 0 -1 1068 -1.4536869712173939e-02 - - -3.8466268777847290e-01 2.3676240816712379e-02 - <_> - - 0 -1 1069 1.1710939928889275e-02 - - 4.1695669293403625e-02 -3.1956040859222412e-01 - <_> - - 0 -1 1070 -1.1641769669950008e-02 - - -2.8680109977722168e-01 1.4557749964296818e-02 - <_> - - 0 -1 1071 2.1298279985785484e-02 - - 2.5519400835037231e-02 -4.8966890573501587e-01 - <_> - - 0 -1 1072 -9.2027969658374786e-03 - - -6.2252938747406006e-01 8.7586138397455215e-03 - <_> - - 0 -1 1073 -2.0174520090222359e-02 - - 3.0807420611381531e-01 -3.9538878947496414e-02 - <_> - - 0 -1 1074 1.0657950304448605e-02 - - 1.0425630025565624e-02 -3.7197288870811462e-01 - <_> - - 0 -1 1075 4.5577301643788815e-03 - - -1.1608000099658966e-01 1.0506209731101990e-01 - <_> - - 0 -1 1076 5.9895858168601990e-02 - - -8.2911262288689613e-03 7.5710900127887726e-02 - <_> - - 0 -1 1077 -9.2518046498298645e-02 - - -3.9722099900245667e-01 3.5415899008512497e-02 - <_> - - 0 -1 1078 5.3780227899551392e-03 - - -4.5169800519943237e-02 1.0165379941463470e-01 - <_> - - 0 -1 1079 -2.1006090100854635e-03 - - 7.3628917336463928e-02 -1.8362529575824738e-01 - <_> - - 0 -1 1080 8.4413066506385803e-03 - - -5.0623130053281784e-02 2.7132049202919006e-01 - <_> - - 0 -1 1081 -2.8913110494613647e-02 - - -2.3330889642238617e-01 5.6141868233680725e-02 - <_> - - 0 -1 1082 8.9428931474685669e-02 - - 4.2139500379562378e-02 -2.9663449525833130e-01 - <_> - - 0 -1 1083 -2.2211730480194092e-02 - - 3.2237181067466736e-01 -4.1160151362419128e-02 - <_> - - 0 -1 1084 3.7851219531148672e-03 - - -7.0737093687057495e-02 1.0991329699754715e-01 - <_> - - 0 -1 1085 8.3305174484848976e-03 - - -1.9362829625606537e-01 6.6261023283004761e-02 - <_> - - 0 -1 1086 -2.3463189601898193e-02 - - -2.2869169712066650e-01 5.3898990154266357e-02 - <_> - - 0 -1 1087 1.0604270501062274e-03 - - -7.2537548840045929e-02 1.5869510173797607e-01 - <_> - - 0 -1 1088 6.5959356725215912e-02 - - 5.6216111406683922e-03 -3.9239290356636047e-01 - <_> - - 0 -1 1089 -5.4879009723663330e-02 - - 2.8525480628013611e-01 -4.4418711215257645e-02 - <_> - - 0 -1 1090 3.4504090435802937e-03 - - 1.3675140216946602e-02 -4.4305860996246338e-01 - <_> - - 0 -1 1091 7.9733468592166901e-03 - - 2.0884349942207336e-02 -5.0481712818145752e-01 - <_> - - 0 -1 1092 1.8430359661579132e-02 - - -3.7965130060911179e-02 2.1417169272899628e-01 - <_> - - 0 -1 1093 -6.0115829110145569e-03 - - -3.4198600053787231e-01 2.9979920014739037e-02 - <_> - - 0 -1 1094 -4.0763098746538162e-02 - - 2.4182400107383728e-01 -3.2476250082254410e-02 - <_> - - 0 -1 1095 -4.5631989836692810e-02 - - 1.9471660256385803e-01 -8.9865140616893768e-02 - <_> - - 0 -1 1096 -1.3024959713220596e-02 - - 1.8374669551849365e-01 -3.9763871580362320e-02 - <_> - - 0 -1 1097 3.5364780575037003e-02 - - -9.9338017404079437e-02 1.3468970358371735e-01 - <_> - - 0 -1 1098 1.8771320581436157e-01 - - 1.1638140305876732e-02 -3.4229630231857300e-01 - <_> - - 0 -1 1099 -7.5244922190904617e-03 - - -2.0901820063591003e-01 6.4269833266735077e-02 - <_> - - 0 -1 1100 -3.4522291272878647e-02 - - 3.5216939449310303e-01 -3.6898851394653320e-02 - <_> - - 0 -1 1101 -1.1451860191300511e-03 - - 7.2152033448219299e-02 -2.0841260254383087e-01 - <_> - - 0 -1 1102 -1.0812779888510704e-02 - - -3.3911031484603882e-01 1.0240299627184868e-02 - <_> - - 0 -1 1103 4.4051618315279484e-03 - - 4.4835019856691360e-02 -2.3211100697517395e-01 - <_> - - 0 -1 1104 -6.1400611884891987e-03 - - -2.6839160919189453e-01 3.9040140807628632e-02 - <_> - - 0 -1 1105 -2.5988669221987948e-05 - - 1.1040650308132172e-01 -9.7347527742385864e-02 - <_> - - 0 -1 1106 -9.7707603126764297e-03 - - 1.3180179893970490e-01 -4.2217381298542023e-02 - <_> - - 0 -1 1107 1.4637519605457783e-02 - - -3.9937119930982590e-02 2.6679611206054688e-01 - <_> - - 0 -1 1108 1.7369400709867477e-02 - - 4.3008368462324142e-02 -2.6838469505310059e-01 - <_> - - 0 -1 1109 2.0715700462460518e-02 - - -4.4139068573713303e-02 2.5288510322570801e-01 - <_> - - 0 -1 1110 4.4260770082473755e-03 - - -1.8148280680179596e-02 6.3740082085132599e-02 - <_> - - 0 -1 1111 -2.1819660440087318e-02 - - -4.5305460691452026e-01 2.4142699316143990e-02 - <_> - - 0 -1 1112 4.8437709920108318e-03 - - 1.2343520298600197e-02 -1.5617559850215912e-01 - <_> - - 0 -1 1113 -2.7822460979223251e-03 - - -3.0781841278076172e-01 3.3887200057506561e-02 - <_> - - 0 -1 1114 -1.4766600215807557e-03 - - 3.7661001086235046e-02 -3.7117090076208115e-02 - <_> - - 0 -1 1115 2.0395090803503990e-02 - - 1.3521149754524231e-02 -7.2870039939880371e-01 - <_> - - 0 -1 1116 1.4377470361068845e-03 - - -5.5464219301939011e-02 5.5265650153160095e-02 - <_> - - 0 -1 1117 -2.9832549393177032e-02 - - 4.2611280083656311e-01 -2.1838100627064705e-02 - <_> - - 0 -1 1118 3.0555859208106995e-02 - - 1.7631899565458298e-02 -6.0954070091247559e-01 - <_> - - 0 -1 1119 1.2299589812755585e-01 - - -2.6662720367312431e-02 3.6958339810371399e-01 - <_> - - 0 -1 1120 -2.2958520799875259e-02 - - -4.6332129836082458e-01 1.8426449969410896e-02 - <_> - - 0 -1 1121 -1.3268290087580681e-02 - - -4.3808931112289429e-01 1.9012859091162682e-02 - <_> - - 0 -1 1122 -4.6182751655578613e-02 - - -7.0005071163177490e-01 1.1527130380272865e-02 - <_> - - 0 -1 1123 2.6312459260225296e-02 - - -7.1522757411003113e-02 1.2768800556659698e-01 - <_> - - 0 -1 1124 6.8344743340276182e-05 - - -7.1661248803138733e-02 6.4936593174934387e-02 - <_> - - 0 -1 1125 -3.7463910877704620e-02 - - -3.1653049588203430e-01 3.0787749215960503e-02 - <_> - - 0 -1 1126 5.6358661502599716e-02 - - 8.4295487031340599e-03 -6.0672062635421753e-01 - <_> - - 0 -1 1127 -7.3837172240018845e-03 - - 9.7772389650344849e-02 -9.9168926477432251e-02 - <_> - - 0 -1 1128 2.9623919544974342e-05 - - -5.4954130202531815e-02 7.5745277106761932e-02 - <_> - - 0 -1 1129 1.6535919904708862e-01 - - 2.6091169565916061e-02 -3.5252508521080017e-01 - <_> - - 0 -1 1130 -8.3075620234012604e-02 - - -5.3609657287597656e-01 1.5322240069508553e-02 - <_> - - 0 -1 1131 1.3314849929884076e-03 - - -4.3492630124092102e-02 2.1460059285163879e-01 - <_> - - 0 -1 1132 -2.4037649855017662e-02 - - 3.3584278821945190e-01 -2.4913089349865913e-02 - <_> - - 0 -1 1133 6.2097259797155857e-03 - - 4.9151420593261719e-02 -1.9901290535926819e-01 - <_> - - 0 -1 1134 7.3641598224639893e-02 - - -8.7231457233428955e-02 1.0949330031871796e-01 - <_> - - 0 -1 1135 2.8918519616127014e-02 - - 5.1056448370218277e-02 -2.0575879514217377e-01 - <_> - - 0 -1 1136 3.7253550253808498e-03 - - -3.6701608449220657e-02 1.0511349886655807e-01 - <_> - - 0 -1 1137 8.2107484340667725e-03 - - 2.3830300197005272e-02 -3.5800701379776001e-01 - <_> - - 0 -1 1138 1.8392279744148254e-03 - - -4.4707790017127991e-02 1.1898309737443924e-01 - <_> - - 0 -1 1139 -6.8104080855846405e-03 - - -1.6840079426765442e-01 4.8348199576139450e-02 - <_> - - 0 -1 1140 3.3966489136219025e-03 - - -3.0804419890046120e-02 1.3462269306182861e-01 - <_> - - 0 -1 1141 3.3915819949470460e-04 - - -7.7528692781925201e-02 1.1303810030221939e-01 - <_> - - 0 -1 1142 -1.8353240191936493e-01 - - 9.5320522785186768e-02 -3.2496929168701172e-02 - <_> - - 0 -1 1143 4.4860368967056274e-01 - - 1.3921190053224564e-02 -7.2890061140060425e-01 - <_> - - 0 -1 1144 8.8801890611648560e-02 - - -6.4020909368991852e-02 3.6400448530912399e-02 - <_> - - 0 -1 1145 1.0808440297842026e-01 - - -6.4322993159294128e-02 1.9376879930496216e-01 - <_> - - 0 -1 1146 -6.9059031084179878e-03 - - -3.1092429161071777e-01 2.0556580275297165e-02 - <_> - - 0 -1 1147 2.5598949287086725e-03 - - -9.1550342738628387e-02 9.2027373611927032e-02 - <_> - - 0 -1 1148 4.9356167437508702e-04 - - -2.4271320551633835e-02 6.5760858356952667e-02 - <_> - - 0 -1 1149 1.5352670103311539e-02 - - 1.7310719937086105e-02 -4.8900419473648071e-01 - <_> - - 0 -1 1150 9.7035951912403107e-03 - - 8.9735705405473709e-03 -4.1271901130676270e-01 - <_> - - 0 -1 1151 -2.1431730128824711e-03 - - -1.9551250338554382e-01 3.8025110960006714e-02 - <_> - - 0 -1 1152 -5.3084579121787101e-05 - - 7.0507623255252838e-02 -4.7128938138484955e-02 - <_> - - 0 -1 1153 8.6803667247295380e-02 - - -1.6351899132132530e-02 4.7820520401000977e-01 - <_> - - 0 -1 1154 1.1078939773142338e-02 - - -2.5524420663714409e-02 1.0990680009126663e-01 - <_> - - 0 -1 1155 -6.1349938623607159e-03 - - -3.5728418827056885e-01 2.2397089749574661e-02 - <_> - - 0 -1 1156 -4.7654299996793270e-03 - - -8.5008271038532257e-02 2.2307649254798889e-02 - <_> - - 0 -1 1157 1.2252650223672390e-02 - - 1.7857609316706657e-02 -4.1976860165596008e-01 - <_> - - 0 -1 1158 1.1971440166234970e-02 - - -2.1071229130029678e-02 2.3789730668067932e-01 - <_> - - 0 -1 1159 3.2991201151162386e-03 - - -6.1564899981021881e-02 1.3292570412158966e-01 - <_> - - 0 -1 1160 -1.8449019640684128e-02 - - 1.4298330247402191e-01 -2.5206809863448143e-02 - <_> - - 0 -1 1161 -7.4155619367957115e-03 - - 1.7994129657745361e-01 -4.9833629280328751e-02 - <_> - - 0 -1 1162 4.8206571489572525e-02 - - 2.7245989069342613e-02 -3.8131779432296753e-01 - <_> - - 0 -1 1163 1.1687170481309295e-03 - - 4.6957340091466904e-02 -1.8173030018806458e-01 - <_> - - 0 -1 1164 -1.3616660237312317e-01 - - 4.0798899531364441e-01 -2.2476859390735626e-02 - <_> - - 0 -1 1165 -2.3739310563541949e-05 - - 1.0147339850664139e-01 -8.4523528814315796e-02 - <_> - - 0 -1 1166 7.6772958040237427e-02 - - 6.4514591358602047e-03 -4.6041280031204224e-01 - <_> - - 0 -1 1167 6.3457563519477844e-02 - - -2.0250169560313225e-02 3.9726629853248596e-01 - <_> - - 0 -1 1168 -3.3444589935243130e-03 - - 1.5261699259281158e-01 -5.2653640508651733e-02 - <_> - - 0 -1 1169 5.7241220027208328e-02 - - -1.3445749878883362e-01 8.0746330320835114e-02 - <_> - - 0 -1 1170 -4.1631441563367844e-02 - - -1.0822279751300812e-01 2.2437069565057755e-02 - <_> - - 0 -1 1171 1.4903079718351364e-02 - - 4.5007079839706421e-02 -2.2001840174198151e-01 - <_> - - 0 -1 1172 2.2303420305252075e-01 - - 1.2495860457420349e-02 -6.0045099258422852e-01 - <_> - - 0 -1 1173 1.6906030476093292e-02 - - 1.2750269845128059e-02 -5.3238618373870850e-01 - <_> - - 0 -1 1174 2.4477340281009674e-01 - - 3.1138889025896788e-03 -5.7128059864044189e-01 - <_> - - 0 -1 1175 -1.8740040063858032e-01 - - 4.3744760751724243e-01 -1.9650889560580254e-02 - <_> - - 0 -1 1176 5.0131231546401978e-03 - - -6.7403636872768402e-02 1.0132519900798798e-01 - <_> - - 0 -1 1177 1.2101340107619762e-03 - - 3.4509558230638504e-02 -2.1935179829597473e-01 - <_> - - 0 -1 1178 -1.0921210050582886e-02 - - -1.5897870063781738e-01 6.7669888958334923e-03 - <_> - - 0 -1 1179 1.0091220028698444e-03 - - -8.0816611647605896e-02 9.0216286480426788e-02 - <_> - - 0 -1 1180 -7.9159833490848541e-02 - - -4.9557760357856750e-01 9.0577276423573494e-03 - <_> - - 0 -1 1181 2.3125790059566498e-02 - - 2.6155060157179832e-02 -2.6404741406440735e-01 - <_> - - 0 -1 1182 2.5399661064147949e-01 - - -4.1755758225917816e-02 8.4267638623714447e-02 - <_> - - 0 -1 1183 4.1338570415973663e-02 - - -5.4307978600263596e-02 1.6323280334472656e-01 - <_> - - 0 -1 1184 7.9801427200436592e-03 - - -5.6379988789558411e-02 8.5087403655052185e-02 - <_> - - 0 -1 1185 -2.2182149812579155e-02 - - 1.5680639445781708e-01 -5.2673079073429108e-02 - <_> - - 0 -1 1186 8.8383043475914747e-05 - - -1.1258769780397415e-01 7.1022190153598785e-02 - <_> - - 0 -1 1187 -5.0613721832633018e-03 - - -3.7599068880081177e-01 2.2983800619840622e-02 - <_> - - 0 -1 1188 6.3651002943515778e-02 - - 4.1155992075800896e-03 -4.1837128996849060e-01 - <_> - - 0 -1 1189 1.9820030778646469e-02 - - -8.2667507231235504e-02 9.7538232803344727e-02 - <_> - - 0 -1 1190 1.2445739703252912e-03 - - -3.3446729183197021e-02 1.4538469910621643e-01 - <_> - - 0 -1 1191 -1.1178659647703171e-01 - - 2.5024509429931641e-01 -3.5332940518856049e-02 - <_> - - 0 -1 1192 -2.4203520733863115e-03 - - 1.7330379784107208e-01 -2.2793199867010117e-02 - <_> - - 0 -1 1193 1.2127320223953575e-04 - - -7.4290402233600616e-02 1.1935789883136749e-01 - <_> - - 0 -1 1194 8.6516663432121277e-03 - - 1.1963260360062122e-02 -2.8482851386070251e-01 - <_> - - 0 -1 1195 2.5779709176276810e-05 - - -1.1878810077905655e-01 8.3679713308811188e-02 - <_> - - 0 -1 1196 6.6892090253531933e-03 - - -2.5949949398636818e-02 9.8636366426944733e-02 - <_> - - 0 -1 1197 7.3373341001570225e-03 - - -5.6868050247430801e-02 1.3806000351905823e-01 - <_> - - 0 -1 1198 -4.8734410665929317e-03 - - 7.7433526515960693e-02 -3.5236679017543793e-02 - <_> - - 0 -1 1199 6.4124629716388881e-05 - - -1.2456929683685303e-01 7.1608223021030426e-02 - <_> - - 0 -1 1200 -3.0315749347209930e-02 - - -1.9579620659351349e-01 3.0857350677251816e-02 - <_> - - 0 -1 1201 -3.5041071474552155e-02 - - 1.7880150675773621e-01 -4.8966780304908752e-02 - <_> - - 0 -1 1202 4.1970908641815186e-02 - - -4.0191859006881714e-02 1.2946340441703796e-01 - <_> - - 0 -1 1203 -4.0881849825382233e-02 - - 1.3018250465393066e-01 -7.8276343643665314e-02 - <_> - - 0 -1 1204 -5.2412762306630611e-03 - - -1.8295650184154510e-01 3.7169050425291061e-02 - <_> - - 0 -1 1205 5.0555911002447829e-05 - - -8.3728358149528503e-02 9.3980863690376282e-02 - <_> - - 0 -1 1206 1.6592690721154213e-02 - - 5.7793757878243923e-03 -8.1482458114624023e-01 - <_> - - 0 -1 1207 6.3152369111776352e-03 - - 2.1336369216442108e-02 -3.2484549283981323e-01 - <_> - - 0 -1 1208 -5.6888211518526077e-02 - - -4.1595301032066345e-01 3.6880860570818186e-03 - <_> - - 0 -1 1209 3.4150490537285805e-03 - - -5.3596410900354385e-02 1.4040400087833405e-01 - <_> - - 0 -1 1210 1.4779959619045258e-01 - - 4.9799410626292229e-03 -6.2260872125625610e-01 - <_> - - 0 -1 1211 -6.9511711597442627e-02 - - -4.3304800987243652e-01 1.8926220014691353e-02 - <_> - - 0 -1 1212 1.6076939646154642e-03 - - -3.6794148385524750e-02 6.8327270448207855e-02 - <_> - - 0 -1 1213 1.5456780092790723e-03 - - -6.6803686320781708e-02 1.3351519405841827e-01 - <_> - - 0 -1 1214 1.5967389568686485e-02 - - 6.9505311548709869e-03 -4.7136560082435608e-01 - <_> - - 0 -1 1215 2.8711509704589844e-01 - - -1.5348769724369049e-02 4.7458758950233459e-01 - <_> - - 0 -1 1216 3.4093499183654785e-01 - - 5.4452791810035706e-03 -7.9175651073455811e-01 - <_> - - 0 -1 1217 6.6727129742503166e-03 - - 2.9457410797476768e-02 -2.5477468967437744e-01 - <_> - - 0 -1 1218 -2.6719029992818832e-03 - - -1.7070059478282928e-01 3.5767339169979095e-02 - <_> - - 0 -1 1219 5.2617820911109447e-03 - - -3.3655051141977310e-02 2.1332639455795288e-01 - <_> - - 0 -1 1220 8.1078894436359406e-03 - - 3.0109869316220284e-02 -4.6023748815059662e-02 - <_> - - 0 -1 1221 1.6731999814510345e-02 - - -4.3719969689846039e-02 1.9436429440975189e-01 - <_> - - 0 -1 1222 1.9152810797095299e-02 - - 1.7497120425105095e-02 -4.2827600240707397e-01 - <_> - - 0 -1 1223 -1.4171889424324036e-01 - - -3.8993918895721436e-01 1.7089590430259705e-02 - <_> - - 0 -1 1224 3.8122260011732578e-03 - - -1.1586090177297592e-01 5.0662569701671600e-02 - <_> - - 0 -1 1225 -1.7030799761414528e-02 - - -5.3991311788558960e-01 1.1941430158913136e-02 - <_> - - 0 -1 1226 -8.8250916451215744e-03 - - -3.3240219950675964e-01 8.3178747445344925e-03 - <_> - - 0 -1 1227 -5.9308991767466068e-03 - - 2.2111830115318298e-01 -3.1433571130037308e-02 - <_> - - 0 -1 1228 -3.7457819562405348e-03 - - -1.0303570330142975e-01 2.4099970236420631e-02 - <_> - - 0 -1 1229 4.8495861701667309e-03 - - 2.5730669498443604e-02 -2.6656630635261536e-01 - <_> - - 0 -1 1230 3.0769100785255432e-01 - - 2.6101889088749886e-02 -1.8695330619812012e-01 - <_> - - 0 -1 1231 1.1795950122177601e-02 - - -1.1187969893217087e-01 6.8893343210220337e-02 - <_> - - 0 -1 1232 -1.0205689817667007e-01 - - 1.6410979628562927e-01 -3.9911000058054924e-03 - <_> - - 0 -1 1233 1.0506930202245712e-01 - - -1.7098480835556984e-02 4.2889660596847534e-01 - <_> - - 0 -1 1234 4.8301670176442713e-05 - - -4.1623938828706741e-02 4.9571871757507324e-02 - <_> - - 0 -1 1235 2.2682799026370049e-03 - - -6.8807549774646759e-02 1.0216739773750305e-01 - <_> - - 0 -1 1236 -6.0366461984813213e-03 - - -1.7388309538364410e-01 1.9866410642862320e-02 - <_> - - 0 -1 1237 4.9747680313885212e-03 - - 3.3109340816736221e-02 -2.3262310028076172e-01 - <_> - - 0 -1 1238 -3.4262079745531082e-02 - - -2.1563960611820221e-01 1.1507480405271053e-02 - <_> - 205 - -1.2998509407043457e+00 - - <_> - - 0 -1 1239 8.8293753564357758e-02 - - -2.4894049763679504e-01 2.6465269923210144e-01 - <_> - - 0 -1 1240 -1.6517499461770058e-02 - - 1.3087649643421173e-01 -4.8301700502634048e-02 - <_> - - 0 -1 1241 2.4295739829540253e-01 - - 2.4608039529994130e-04 -1.2118969726562500e+03 - <_> - - 0 -1 1242 1.7855629324913025e-02 - - -2.1882280707359314e-02 6.2913432717323303e-02 - <_> - - 0 -1 1243 -1.1276870034635067e-02 - - 1.8169599771499634e-01 -2.3071660101413727e-01 - <_> - - 0 -1 1244 2.3212030529975891e-02 - - 1.0888969898223877e-01 -2.8105589747428894e-01 - <_> - - 0 -1 1245 -3.3462621271610260e-02 - - 4.2646810412406921e-01 -1.1283230036497116e-01 - <_> - - 0 -1 1246 3.0994430184364319e-02 - - 5.7805508375167847e-02 -3.9169758558273315e-01 - <_> - - 0 -1 1247 -1.5080560743808746e-01 - - -4.4636020064353943e-01 6.8994842469692230e-02 - <_> - - 0 -1 1248 1.9667649269104004e-01 - - 5.0415519624948502e-02 -5.1629501581192017e-01 - <_> - - 0 -1 1249 2.2066079545766115e-03 - - -7.0726096630096436e-02 2.7825760841369629e-01 - <_> - - 0 -1 1250 -1.0757049918174744e-01 - - 2.4468080699443817e-01 -7.2584472596645355e-02 - <_> - - 0 -1 1251 6.0178998857736588e-02 - - -9.3773849308490753e-02 2.0907169580459595e-01 - <_> - - 0 -1 1252 7.2164356708526611e-02 - - 2.4619700387120247e-02 -3.7749460339546204e-01 - <_> - - 0 -1 1253 -1.8397889798507094e-03 - - -3.6595511436462402e-01 3.5692859441041946e-02 - <_> - - 0 -1 1254 3.3323359675705433e-03 - - 2.7419339865446091e-02 -2.1830609440803528e-01 - <_> - - 0 -1 1255 2.5542399287223816e-01 - - 4.2471811175346375e-02 -4.0455558896064758e-01 - <_> - - 0 -1 1256 8.3238910883665085e-03 - - -3.8298089057207108e-02 1.9972600042819977e-01 - <_> - - 0 -1 1257 3.6837169900536537e-03 - - 5.1650788635015488e-02 -3.1488728523254395e-01 - <_> - - 0 -1 1258 1.5801090002059937e-01 - - 7.9839415848255157e-03 -6.4591610431671143e-01 - <_> - - 0 -1 1259 1.1954840272665024e-01 - - 3.0364699661731720e-02 -4.8359268903732300e-01 - <_> - - 0 -1 1260 -8.1479396612849087e-05 - - 9.1914586722850800e-02 -1.0646209865808487e-01 - <_> - - 0 -1 1261 2.5267980527132750e-03 - - 4.5257300138473511e-02 -3.4382629394531250e-01 - <_> - - 0 -1 1262 1.7898750305175781e-01 - - 1.4417519792914391e-02 -5.0265449285507202e-01 - <_> - - 0 -1 1263 -3.9555188268423080e-02 - - -3.5880690813064575e-01 3.4250080585479736e-02 - <_> - - 0 -1 1264 7.6789730228483677e-03 - - -1.1144369840621948e-01 1.3516369462013245e-01 - <_> - - 0 -1 1265 1.0572779923677444e-02 - - -4.3757978826761246e-02 3.1598579883575439e-01 - <_> - - 0 -1 1266 3.5706758499145508e-02 - - -1.5924380719661713e-01 8.3367466926574707e-02 - <_> - - 0 -1 1267 1.5176620334386826e-02 - - -1.0966440290212631e-01 1.4354470372200012e-01 - <_> - - 0 -1 1268 -5.1909979432821274e-02 - - 1.3713189959526062e-01 -2.8933400288224220e-02 - <_> - - 0 -1 1269 -2.4980900809168816e-02 - - 1.2819109857082367e-01 -1.0164009779691696e-01 - <_> - - 0 -1 1270 5.1697930321097374e-03 - - 3.9700139313936234e-02 -1.6936889290809631e-01 - <_> - - 0 -1 1271 -4.7851498238742352e-03 - - -2.8047218918800354e-01 4.2479898780584335e-02 - <_> - - 0 -1 1272 -1.1434390209615231e-02 - - -3.0073690414428711e-01 2.7911560609936714e-02 - <_> - - 0 -1 1273 3.1038429588079453e-02 - - -3.8415629416704178e-02 3.1910240650177002e-01 - <_> - - 0 -1 1274 1.9539990462362766e-03 - - 4.9008220434188843e-02 -2.4340090155601501e-01 - <_> - - 0 -1 1275 1.5783209819346666e-03 - - 4.9061909317970276e-02 -2.1728959679603577e-01 - <_> - - 0 -1 1276 -1.4102280139923096e-01 - - 1.2385349720716476e-01 -1.9456090405583382e-02 - <_> - - 0 -1 1277 2.5759469717741013e-02 - - -5.7730589061975479e-02 2.2352460026741028e-01 - <_> - - 0 -1 1278 -1.3943019509315491e-01 - - -4.3312790989875793e-01 5.1124738529324532e-03 - <_> - - 0 -1 1279 -9.7004458308219910e-02 - - -5.8657991886138916e-01 1.7181839793920517e-02 - <_> - - 0 -1 1280 9.5027927309274673e-03 - - -2.8794759884476662e-02 2.9738929867744446e-01 - <_> - - 0 -1 1281 -2.6246929541230202e-02 - - -2.1234120428562164e-01 4.9407571554183960e-02 - <_> - - 0 -1 1282 -2.8517890721559525e-02 - - -4.1019749641418457e-01 1.0724140331149101e-02 - <_> - - 0 -1 1283 -7.9501066356897354e-03 - - 2.9748660326004028e-01 -3.5765208303928375e-02 - <_> - - 0 -1 1284 -2.9474299401044846e-02 - - -2.7445879578590393e-01 3.7858150899410248e-02 - <_> - - 0 -1 1285 -1.9700409844517708e-02 - - -3.7312510609626770e-01 2.4606190621852875e-02 - <_> - - 0 -1 1286 2.0297240465879440e-02 - - -1.1456100270152092e-02 1.3001470267772675e-01 - <_> - - 0 -1 1287 -7.3365420103073120e-02 - - -3.3396759629249573e-01 2.8859499841928482e-02 - <_> - - 0 -1 1288 6.3272351399064064e-03 - - -7.6731666922569275e-02 1.5083900094032288e-01 - <_> - - 0 -1 1289 -1.3661600649356842e-01 - - 1.6243369877338409e-01 -9.5643773674964905e-02 - <_> - - 0 -1 1290 -1.0758030228316784e-02 - - -2.3738150298595428e-01 3.1558960676193237e-02 - <_> - - 0 -1 1291 6.6685132682323456e-02 - - 1.5413840301334858e-02 -6.2513381242752075e-01 - <_> - - 0 -1 1292 3.0325201153755188e-01 - - -2.9134880751371384e-02 3.6113429069519043e-01 - <_> - - 0 -1 1293 -1.5823159366846085e-02 - - -4.0985879302024841e-01 2.3118449375033379e-02 - <_> - - 0 -1 1294 2.5374559685587883e-02 - - -2.0472100004553795e-02 2.7052029967308044e-01 - <_> - - 0 -1 1295 1.6346940770745277e-02 - - -3.5330820828676224e-02 2.8036290407180786e-01 - <_> - - 0 -1 1296 3.4061360638588667e-03 - - -1.1166790127754211e-01 9.2086836695671082e-02 - <_> - - 0 -1 1297 2.3185899853706360e-01 - - -5.3374111652374268e-02 2.2651399672031403e-01 - <_> - - 0 -1 1298 8.7358150631189346e-03 - - 6.2240570783615112e-02 -1.6097889840602875e-01 - <_> - - 0 -1 1299 4.7981638461351395e-02 - - 3.2530840486288071e-02 -2.7026590704917908e-01 - <_> - - 0 -1 1300 3.2552659511566162e-02 - - -2.6799609884619713e-02 3.6133301258087158e-01 - <_> - - 0 -1 1301 -5.2017602138221264e-03 - - -2.2696959972381592e-01 5.3690869361162186e-02 - <_> - - 0 -1 1302 -5.2009779959917068e-02 - - 5.1674157381057739e-01 -2.0591339096426964e-02 - <_> - - 0 -1 1303 -5.0841891206800938e-03 - - 8.3876252174377441e-02 -1.2154210358858109e-01 - <_> - - 0 -1 1304 5.3035072050988674e-03 - - 3.1446810811758041e-02 -1.2339060008525848e-01 - <_> - - 0 -1 1305 4.5940061099827290e-03 - - -6.2744297087192535e-02 1.4181789755821228e-01 - <_> - - 0 -1 1306 6.9754808209836483e-03 - - 2.7987610548734665e-02 -3.0492180585861206e-01 - <_> - - 0 -1 1307 -3.3900879789143801e-03 - - -2.1763899922370911e-01 3.6219488829374313e-02 - <_> - - 0 -1 1308 9.5793427899479866e-03 - - -4.3325878679752350e-02 1.6427470743656158e-01 - <_> - - 0 -1 1309 -5.5032961070537567e-02 - - -2.6936888694763184e-01 3.2055959105491638e-02 - <_> - - 0 -1 1310 -9.5517598092556000e-02 - - 2.1610739827156067e-01 -5.8239780366420746e-02 - <_> - - 0 -1 1311 -8.8512140791863203e-04 - - 7.5295902788639069e-02 -1.2177939713001251e-01 - <_> - - 0 -1 1312 8.4586488083004951e-03 - - -4.5572049915790558e-02 2.8566330671310425e-01 - <_> - - 0 -1 1313 1.3831759989261627e-01 - - -3.0347919091582298e-02 2.8037178516387939e-01 - <_> - - 0 -1 1314 -8.5889035835862160e-03 - - 2.5955429673194885e-01 -2.4801440536975861e-02 - <_> - - 0 -1 1315 2.6830460410565138e-03 - - -1.3567750155925751e-01 7.5019992887973785e-02 - <_> - - 0 -1 1316 5.6114759296178818e-02 - - -1.3314700126647949e-01 6.7530378699302673e-02 - <_> - - 0 -1 1317 6.4768209122121334e-03 - - -4.2834509164094925e-02 2.2837740182876587e-01 - <_> - - 0 -1 1318 7.5396071188151836e-03 - - 1.7571780830621719e-02 -4.7123318910598755e-01 - <_> - - 0 -1 1319 -3.2276589423418045e-02 - - 1.6673429310321808e-01 -5.7283289730548859e-02 - <_> - - 0 -1 1320 8.1356316804885864e-03 - - 2.7268510311841965e-02 -1.1111909896135330e-01 - <_> - - 0 -1 1321 1.0477039963006973e-02 - - 2.6003930717706680e-02 -3.6761531233787537e-01 - <_> - - 0 -1 1322 3.0995670706033707e-02 - - -2.8645429760217667e-02 3.3150678873062134e-01 - <_> - - 0 -1 1323 -7.0666121318936348e-03 - - -4.0544331073760986e-01 2.5192549452185631e-02 - <_> - - 0 -1 1324 -3.6987180355936289e-03 - - 6.3140757381916046e-02 -3.2778479158878326e-02 - <_> - - 0 -1 1325 -3.0666269361972809e-02 - - 3.2546588778495789e-01 -2.7702359482645988e-02 - <_> - - 0 -1 1326 7.8880243003368378e-02 - - 1.5338109806180000e-02 -2.2066299617290497e-01 - <_> - - 0 -1 1327 -3.2662380486726761e-02 - - -2.6111158728599548e-01 3.9614301174879074e-02 - <_> - - 0 -1 1328 -2.0299869775772095e-01 - - 4.6856230497360229e-01 -2.1190289407968521e-02 - <_> - - 0 -1 1329 -1.3156479690223932e-03 - - 5.1139071583747864e-02 -1.7780220508575439e-01 - <_> - - 0 -1 1330 2.4586269259452820e-01 - - 2.0771999843418598e-03 -7.2302591800689697e-01 - <_> - - 0 -1 1331 9.6061620861291885e-03 - - -4.3856609612703323e-02 2.0256240665912628e-01 - <_> - - 0 -1 1332 9.2888638377189636e-02 - - 2.5762340053915977e-02 -8.1829749047756195e-02 - <_> - - 0 -1 1333 1.8360089743509889e-03 - - -1.0658069700002670e-01 7.7832147479057312e-02 - <_> - - 0 -1 1334 -1.0181380435824394e-02 - - -7.0450127124786377e-02 2.1115120500326157e-02 - <_> - - 0 -1 1335 2.2913800179958344e-01 - - 1.0578580200672150e-02 -8.1552761793136597e-01 - <_> - - 0 -1 1336 -2.1260060369968414e-02 - - -2.3754499852657318e-01 1.2737980112433434e-02 - <_> - - 0 -1 1337 1.9725849851965904e-03 - - 5.7212870568037033e-02 -1.3770629465579987e-01 - <_> - - 0 -1 1338 -4.6411700168391690e-05 - - 5.0291039049625397e-02 -5.7502999901771545e-02 - <_> - - 0 -1 1339 -3.6206799745559692e-01 - - -7.7337008714675903e-01 1.0174609720706940e-02 - <_> - - 0 -1 1340 -1.4286839962005615e-01 - - 3.6285620927810669e-01 -2.9650410637259483e-02 - <_> - - 0 -1 1341 -6.0175389051437378e-02 - - 1.0930059850215912e-01 -9.0728648006916046e-02 - <_> - - 0 -1 1342 4.7640471166232601e-05 - - -5.5577810853719711e-02 7.7917866408824921e-02 - <_> - - 0 -1 1343 -5.4806099797133356e-05 - - 8.5094630718231201e-02 -9.0222798287868500e-02 - <_> - - 0 -1 1344 -8.2555618137121201e-03 - - 1.6778500378131866e-01 -3.9129231125116348e-02 - <_> - - 0 -1 1345 -2.4975580163300037e-03 - - -2.5427588820457458e-01 3.1008599326014519e-02 - <_> - - 0 -1 1346 1.6913549602031708e-01 - - 7.6711731962859631e-03 -4.7778978943824768e-01 - <_> - - 0 -1 1347 8.0642458051443100e-03 - - 3.2001681625843048e-02 -2.2016289830207825e-01 - <_> - - 0 -1 1348 5.8364861615700647e-05 - - -9.2706032097339630e-02 9.2668697237968445e-02 - <_> - - 0 -1 1349 -2.4263940751552582e-02 - - 3.0613300204277039e-01 -2.3674689233303070e-02 - <_> - - 0 -1 1350 1.2453939765691757e-01 - - -1.1398720089346170e-03 6.5001028776168823e-01 - <_> - - 0 -1 1351 -3.0860610306262970e-02 - - -2.3400309681892395e-01 3.4316759556531906e-02 - <_> - - 0 -1 1352 1.2754309922456741e-02 - - -3.9132729172706604e-02 9.4901800155639648e-02 - <_> - - 0 -1 1353 3.7656739354133606e-02 - - 2.6196390390396118e-02 -3.0910909175872803e-01 - <_> - - 0 -1 1354 -3.1221879646182060e-02 - - -2.8618350625038147e-01 5.0922371447086334e-03 - <_> - - 0 -1 1355 -1.3468950055539608e-02 - - 2.1257250010967255e-01 -3.5957340151071548e-02 - <_> - - 0 -1 1356 -7.5858170166611671e-03 - - -1.4510390162467957e-01 2.8400380164384842e-02 - <_> - - 0 -1 1357 -3.2564129680395126e-02 - - 2.1210159361362457e-01 -3.3740561455488205e-02 - <_> - - 0 -1 1358 -4.7857668250799179e-02 - - -2.8939861059188843e-01 8.2710552960634232e-03 - <_> - - 0 -1 1359 4.0885780006647110e-02 - - 1.5406140126287937e-02 -5.2735280990600586e-01 - <_> - - 0 -1 1360 -1.1155439540743828e-02 - - 2.0481599867343903e-01 -3.8578160107135773e-02 - <_> - - 0 -1 1361 -4.3652538210153580e-02 - - -5.6057322025299072e-01 1.5544040128588676e-02 - <_> - - 0 -1 1362 -2.3742709308862686e-02 - - -7.8456741571426392e-01 3.1750639900565147e-03 - <_> - - 0 -1 1363 1.0698919743299484e-01 - - -2.6180049404501915e-02 2.7015981078147888e-01 - <_> - - 0 -1 1364 3.7855070084333420e-02 - - 6.5697189420461655e-03 -4.0291649103164673e-01 - <_> - - 0 -1 1365 -3.0002340674400330e-02 - - -3.6409360170364380e-01 1.9139550626277924e-02 - <_> - - 0 -1 1366 1.7724040895700455e-02 - - 1.2176860123872757e-02 -3.6743289232254028e-01 - <_> - - 0 -1 1367 -7.9289022833108902e-03 - - -2.3455849289894104e-01 3.1265281140804291e-02 - <_> - - 0 -1 1368 -4.1190151125192642e-02 - - 1.7809179425239563e-01 -2.8660740703344345e-02 - <_> - - 0 -1 1369 1.0414299555122852e-02 - - -4.6135619282722473e-02 2.2065189480781555e-01 - <_> - - 0 -1 1370 -6.2351129949092865e-02 - - -6.0133552551269531e-01 1.1970040388405323e-02 - <_> - - 0 -1 1371 1.0768829844892025e-02 - - -3.7883501499891281e-02 1.9194099307060242e-01 - <_> - - 0 -1 1372 -1.5350959729403257e-03 - - 1.3435329496860504e-01 -5.9909719973802567e-02 - <_> - - 0 -1 1373 -4.9390122294425964e-03 - - -2.2644749283790588e-01 3.3138100057840347e-02 - <_> - - 0 -1 1374 2.9866439290344715e-03 - - 3.9536539465188980e-02 -1.7985729873180389e-01 - <_> - - 0 -1 1375 7.1302180003840476e-05 - - -1.2174189835786819e-01 5.7866320013999939e-02 - <_> - - 0 -1 1376 1.4132769778370857e-02 - - -6.9726303219795227e-02 1.0778389871120453e-01 - <_> - - 0 -1 1377 -8.7037831544876099e-03 - - 1.3537360727787018e-01 -6.1749380081892014e-02 - <_> - - 0 -1 1378 -3.9659719914197922e-02 - - 2.8668469190597534e-01 -4.0120128542184830e-03 - <_> - - 0 -1 1379 1.6550280153751373e-02 - - -5.4914530366659164e-02 1.5019510686397552e-01 - <_> - - 0 -1 1380 1.8208170309662819e-02 - - -7.1605183184146881e-02 1.9685640931129456e-02 - <_> - - 0 -1 1381 -2.9519250616431236e-02 - - 2.0991930365562439e-01 -4.3216299265623093e-02 - <_> - - 0 -1 1382 -2.1285060793161392e-02 - - 1.8691639602184296e-01 -2.3788860067725182e-02 - <_> - - 0 -1 1383 3.7830621004104614e-02 - - -1.2754780054092407e-01 7.2359248995780945e-02 - <_> - - 0 -1 1384 1.1643759906291962e-02 - - -4.6442810446023941e-02 1.3790960609912872e-01 - <_> - - 0 -1 1385 -5.9127039276063442e-03 - - -1.6960899531841278e-01 4.4999938458204269e-02 - <_> - - 0 -1 1386 -5.7644449174404144e-02 - - -2.9772061109542847e-01 8.5106249898672104e-03 - <_> - - 0 -1 1387 -5.3929239511489868e-02 - - -3.4829708933830261e-01 2.0777279511094093e-02 - <_> - - 0 -1 1388 7.7844387851655483e-04 - - -1.0678429901599884e-01 6.3128329813480377e-02 - <_> - - 0 -1 1389 2.1701509132981300e-02 - - -4.3070908635854721e-02 2.0515139400959015e-01 - <_> - - 0 -1 1390 1.4290180057287216e-02 - - 4.0106780827045441e-02 -1.9636610150337219e-01 - <_> - - 0 -1 1391 4.7906510531902313e-02 - - 2.6682909578084946e-02 -2.6081061363220215e-01 - <_> - - 0 -1 1392 2.0704690366983414e-02 - - 8.2300165668129921e-03 -1.7172940075397491e-01 - <_> - - 0 -1 1393 -2.2899899631738663e-02 - - -3.7081000208854675e-01 1.8541749566793442e-02 - <_> - - 0 -1 1394 -1.9879220053553581e-03 - - 1.6436809301376343e-01 -2.1798299625515938e-02 - <_> - - 0 -1 1395 5.4986838222248480e-05 - - -6.4901493489742279e-02 1.0623300075531006e-01 - <_> - - 0 -1 1396 1.3559920480474830e-03 - - -2.4597849696874619e-02 1.4361660182476044e-01 - <_> - - 0 -1 1397 -2.6802290449268185e-05 - - 7.7275946736335754e-02 -9.1653436422348022e-02 - <_> - - 0 -1 1398 -7.1620233356952667e-02 - - -2.4552260339260101e-01 2.9534120112657547e-02 - <_> - - 0 -1 1399 2.4330910295248032e-02 - - 4.1399519890546799e-02 -1.5903189778327942e-01 - <_> - - 0 -1 1400 2.7946570888161659e-02 - - 2.2586109116673470e-03 -6.7318201065063477e-01 - <_> - - 0 -1 1401 -1.4360989443957806e-03 - - 1.0648050159215927e-01 -6.4426578581333160e-02 - <_> - - 0 -1 1402 4.7291368246078491e-03 - - 1.9701540470123291e-02 -2.8576970100402832e-01 - <_> - - 0 -1 1403 -9.9202662706375122e-02 - - -3.5200428962707520e-01 1.6816059127449989e-02 - <_> - - 0 -1 1404 -8.9718345552682877e-03 - - 9.1350711882114410e-02 -2.3734020069241524e-02 - <_> - - 0 -1 1405 3.2134570647031069e-03 - - -4.9445088952779770e-02 1.4231130480766296e-01 - <_> - - 0 -1 1406 -1.0166129795834422e-03 - - 6.4581580460071564e-02 -1.9129069522023201e-02 - <_> - - 0 -1 1407 -6.1253100284375250e-05 - - 8.3547137677669525e-02 -9.0619690716266632e-02 - <_> - - 0 -1 1408 -1.1647429782897234e-03 - - -1.7997290194034576e-01 4.0095169097185135e-02 - <_> - - 0 -1 1409 -6.4332097768783569e-02 - - -3.8692688941955566e-01 1.7440609633922577e-02 - <_> - - 0 -1 1410 -1.3757969439029694e-01 - - 2.2808580100536346e-01 -3.2859951257705688e-02 - <_> - - 0 -1 1411 7.3165339417755604e-03 - - 4.2987760156393051e-02 -1.5990610420703888e-01 - <_> - - 0 -1 1412 2.1075239405035973e-02 - - 1.3760750181972980e-02 -9.7436219453811646e-02 - <_> - - 0 -1 1413 4.7083821147680283e-02 - - -7.1691006422042847e-02 1.0700540244579315e-01 - <_> - - 0 -1 1414 5.9396019205451012e-03 - - -6.3396736979484558e-02 3.8722541183233261e-02 - <_> - - 0 -1 1415 5.8197128772735596e-01 - - 2.1600350737571716e-02 -3.7873318791389465e-01 - <_> - - 0 -1 1416 1.6042120754718781e-02 - - -4.6681709587574005e-02 1.4364209771156311e-01 - <_> - - 0 -1 1417 -3.8316261023283005e-02 - - -6.2408488988876343e-01 1.0848820209503174e-02 - <_> - - 0 -1 1418 1.2451539933681488e-01 - - -9.1985529288649559e-03 1.1172670125961304e-01 - <_> - - 0 -1 1419 1.2287569791078568e-01 - - -1.3092120178043842e-02 5.2221369743347168e-01 - <_> - - 0 -1 1420 -9.1833565384149551e-03 - - -7.5866103172302246e-02 2.5587979704141617e-02 - <_> - - 0 -1 1421 1.6818720847368240e-02 - - -3.0961170792579651e-02 2.3137600719928741e-01 - <_> - - 0 -1 1422 6.6163040173705667e-05 - - -5.9390440583229065e-02 7.4203498661518097e-02 - <_> - - 0 -1 1423 -5.4877910763025284e-02 - - 2.5981691479682922e-01 -2.6993019506335258e-02 - <_> - - 0 -1 1424 -7.6188119128346443e-03 - - 1.3379520177841187e-01 -5.5999118834733963e-02 - <_> - - 0 -1 1425 -2.3362420499324799e-01 - - 3.2755351066589355e-01 -2.1469429135322571e-02 - <_> - - 0 -1 1426 -1.1149320006370544e-01 - - -2.4463839828968048e-01 3.6242511123418808e-02 - <_> - - 0 -1 1427 -4.4157028198242188e-02 - - 4.3402171134948730e-01 -1.6649100929498672e-02 - <_> - - 0 -1 1428 -5.7168701459886506e-05 - - 6.6894836723804474e-02 -5.0718188285827637e-02 - <_> - - 0 -1 1429 5.3646868764190003e-05 - - -8.0378301441669464e-02 8.1809766590595245e-02 - <_> - - 0 -1 1430 1.0595089942216873e-01 - - 5.0716297701001167e-03 -6.4737159013748169e-01 - <_> - - 0 -1 1431 8.3668403327465057e-02 - - 8.6071500554680824e-03 -6.5093028545379639e-01 - <_> - - 0 -1 1432 8.3153052255511284e-03 - - -4.7283139079809189e-02 1.9029919803142548e-01 - <_> - - 0 -1 1433 -6.2146518379449844e-02 - - -1.8513560295104980e-01 4.3402440845966339e-02 - <_> - - 0 -1 1434 -1.5061040176078677e-03 - - -4.2554888874292374e-02 4.7270778566598892e-02 - <_> - - 0 -1 1435 -1.2630449607968330e-02 - - 1.0056299716234207e-01 -7.0035003125667572e-02 - <_> - - 0 -1 1436 -7.2226561605930328e-03 - - -1.3512469828128815e-01 1.6519190743565559e-02 - <_> - - 0 -1 1437 3.9844110608100891e-02 - - 6.1076539568603039e-03 -1.0002349615097046e+00 - <_> - - 0 -1 1438 5.3863292932510376e-01 - - 4.2299588676542044e-04 -9.8810201883316040e-01 - <_> - - 0 -1 1439 -2.4347769096493721e-02 - - -9.8886072635650635e-01 4.6373298391699791e-03 - <_> - - 0 -1 1440 4.4827940873801708e-03 - - -5.4137490689754486e-02 1.3800579309463501e-01 - <_> - - 0 -1 1441 7.9640939831733704e-02 - - -5.7961471378803253e-02 1.0780200362205505e-01 - <_> - - 0 -1 1442 6.5154298208653927e-03 - - -9.5109693706035614e-02 7.6177991926670074e-02 - <_> - - 0 -1 1443 6.3926346600055695e-02 - - 2.2149670869112015e-02 -3.6810970306396484e-01 - <_> - 211 - -1.2603249549865723e+00 - - <_> - - 0 -1 1444 -2.2702280431985855e-02 - - 3.4584361314773560e-01 -1.4961080253124237e-01 - <_> - - 0 -1 1445 -1.1325979605317116e-02 - - 9.4636216759681702e-02 -1.4820310473442078e-01 - <_> - - 0 -1 1446 -1.0080899810418487e-03 - - 1.4881299436092377e-01 -2.3232239484786987e-01 - <_> - - 0 -1 1447 -1.0500989854335785e-01 - - -2.1537660062313080e-01 8.9450702071189880e-02 - <_> - - 0 -1 1448 -1.2677620165050030e-02 - - 2.7584138512611389e-01 -1.1488199979066849e-01 - <_> - - 0 -1 1449 4.9704289995133877e-03 - - 4.4038921594619751e-02 -1.6276310384273529e-01 - <_> - - 0 -1 1450 6.1556040309369564e-03 - - 7.4212923645973206e-02 -3.2477781176567078e-01 - <_> - - 0 -1 1451 -7.2180028073489666e-03 - - 4.2525339126586914e-01 -2.7641389518976212e-02 - <_> - - 0 -1 1452 2.9266420751810074e-03 - - -5.2912838757038116e-02 3.9208140969276428e-01 - <_> - - 0 -1 1453 7.9688094556331635e-03 - - 3.3333700150251389e-02 -4.1967239975929260e-01 - <_> - - 0 -1 1454 4.5101311989128590e-03 - - -4.7721531242132187e-02 4.4400349259376526e-01 - <_> - - 0 -1 1455 -7.2346827946603298e-03 - - -4.2018109560012817e-01 5.5328268557786942e-02 - <_> - - 0 -1 1456 5.4523041471838951e-03 - - 4.2710270732641220e-02 -4.0073931217193604e-01 - <_> - - 0 -1 1457 1.3547390699386597e-01 - - 1.3275199569761753e-02 -4.1893950104713440e-01 - <_> - - 0 -1 1458 -2.8521999716758728e-02 - - 7.1237042546272278e-02 -2.3564490675926208e-01 - <_> - - 0 -1 1459 -6.7890807986259460e-02 - - -6.0827171802520752e-01 2.7981699531665072e-05 - <_> - - 0 -1 1460 -2.7107769710710272e-05 - - 1.0022850334644318e-01 -1.3644769787788391e-01 - <_> - - 0 -1 1461 -2.5962561368942261e-01 - - -1.3785040378570557e-01 2.6653099805116653e-02 - <_> - - 0 -1 1462 1.1885579675436020e-01 - - 2.7489190921187401e-02 -5.4295271635055542e-01 - <_> - - 0 -1 1463 5.6852251291275024e-02 - - -1.1255219578742981e-02 3.8339531421661377e-01 - <_> - - 0 -1 1464 4.1569471359252930e-02 - - -4.1771259158849716e-02 3.4204569458961487e-01 - <_> - - 0 -1 1465 4.4139921665191650e-02 - - -2.2549359127879143e-02 4.6690988540649414e-01 - <_> - - 0 -1 1466 1.0635829716920853e-01 - - 2.9710769653320312e-02 -4.5093208551406860e-01 - <_> - - 0 -1 1467 -8.2869287580251694e-03 - - -1.2223249673843384e-01 5.3247738629579544e-02 - <_> - - 0 -1 1468 3.6731671541929245e-02 - - 4.2036790400743484e-02 -4.4834709167480469e-01 - <_> - - 0 -1 1469 -5.7765528559684753e-02 - - -5.4591369628906250e-01 7.4861990287899971e-03 - <_> - - 0 -1 1470 1.7487849295139313e-01 - - 2.8172209858894348e-02 -4.3244078755378723e-01 - <_> - - 0 -1 1471 -2.5779709176276810e-05 - - 8.4961481392383575e-02 -9.3616262078285217e-02 - <_> - - 0 -1 1472 4.4103060645284131e-05 - - -1.5745340287685394e-01 7.8559979796409607e-02 - <_> - - 0 -1 1473 -2.5306469760835171e-03 - - -1.8604919314384460e-01 1.3255439698696136e-02 - <_> - - 0 -1 1474 -2.5649809686001390e-05 - - 1.0800860077142715e-01 -1.1497180163860321e-01 - <_> - - 0 -1 1475 -5.4274487495422363e-01 - - -6.5146768093109131e-01 1.9872210919857025e-02 - <_> - - 0 -1 1476 1.0453820228576660e-02 - - -5.7684049010276794e-02 2.1809279918670654e-01 - <_> - - 0 -1 1477 -2.4684870368218981e-05 - - 7.0307686924934387e-02 -6.8771660327911377e-02 - <_> - - 0 -1 1478 -3.8687910884618759e-02 - - -2.3570249974727631e-01 5.9372939169406891e-02 - <_> - - 0 -1 1479 1.4677809551358223e-02 - - -4.5802700333297253e-03 6.6445422172546387e-01 - <_> - - 0 -1 1480 -1.0180200450122356e-02 - - 5.2202922105789185e-01 -2.3886220529675484e-02 - <_> - - 0 -1 1481 2.5779709176276810e-05 - - -7.5542762875556946e-02 1.0763020068407059e-01 - <_> - - 0 -1 1482 -2.3739310563541949e-05 - - 1.1347659677267075e-01 -1.1764179915189743e-01 - <_> - - 0 -1 1483 -1.1001049540936947e-02 - - -4.1635859012603760e-01 2.9155520722270012e-02 - <_> - - 0 -1 1484 -1.0040359571576118e-02 - - 5.0152337551116943e-01 -2.4473249912261963e-02 - <_> - - 0 -1 1485 1.1051800101995468e-02 - - 3.7960179150104523e-02 -2.9772630333900452e-01 - <_> - - 0 -1 1486 -1.2089540250599384e-02 - - -5.1634800434112549e-01 2.1521920338273048e-02 - <_> - - 0 -1 1487 -8.4410563111305237e-02 - - 4.9133801460266113e-01 -1.4603810384869576e-02 - <_> - - 0 -1 1488 2.2714000195264816e-02 - - -4.8863139003515244e-02 2.3572869598865509e-01 - <_> - - 0 -1 1489 2.3879110813140869e-05 - - -6.4245767891407013e-02 6.5696552395820618e-02 - <_> - - 0 -1 1490 2.5649809686001390e-05 - - -1.0076279938220978e-01 1.0067179799079895e-01 - <_> - - 0 -1 1491 1.0682299733161926e-02 - - 1.1979729868471622e-02 -4.7588628530502319e-01 - <_> - - 0 -1 1492 1.4251710474491119e-01 - - 2.6978740468621254e-02 -3.5890379548072815e-01 - <_> - - 0 -1 1493 2.6178720872849226e-05 - - -5.1943808794021606e-02 5.9698838740587234e-02 - <_> - - 0 -1 1494 1.5015379758551717e-03 - - 4.2682919651269913e-02 -2.4742330610752106e-01 - <_> - - 0 -1 1495 2.7750380468205549e-05 - - -6.5969876945018768e-02 9.5235317945480347e-02 - <_> - - 0 -1 1496 -2.3739310563541949e-05 - - 9.1440632939338684e-02 -1.1401320248842239e-01 - <_> - - 0 -1 1497 1.8318339716643095e-03 - - -3.5802870988845825e-02 2.8000190854072571e-01 - <_> - - 0 -1 1498 -2.6216499463771470e-05 - - 1.1927170306444168e-01 -9.0051122009754181e-02 - <_> - - 0 -1 1499 1.8415799364447594e-02 - - 2.8677040711045265e-02 -3.4597221016883850e-01 - <_> - - 0 -1 1500 -2.5649809686001390e-05 - - 1.0555200278759003e-01 -9.3961820006370544e-02 - <_> - - 0 -1 1501 -4.4283028692007065e-02 - - -3.9377251267433167e-01 2.4995140731334686e-02 - <_> - - 0 -1 1502 -3.7492141127586365e-02 - - 4.0750551223754883e-01 -2.4686330929398537e-02 - <_> - - 0 -1 1503 -2.4684870368218981e-05 - - 5.9588670730590820e-02 -4.2587179690599442e-02 - <_> - - 0 -1 1504 -2.3879110813140869e-05 - - 1.1652469635009766e-01 -8.1122256815433502e-02 - <_> - - 0 -1 1505 -3.9012550842016935e-03 - - -2.5430038571357727e-01 3.8077041506767273e-02 - <_> - - 0 -1 1506 -2.6903450489044189e-03 - - 3.0911579728126526e-01 -3.1062390655279160e-02 - <_> - - 0 -1 1507 -7.0722219534218311e-03 - - -2.1491000056266785e-01 3.0251279473304749e-02 - <_> - - 0 -1 1508 2.1917349658906460e-03 - - 5.5682230740785599e-02 -1.6676320135593414e-01 - <_> - - 0 -1 1509 2.5904899302986450e-05 - - -1.2242270261049271e-01 8.2701347768306732e-02 - <_> - - 0 -1 1510 -8.6123133078217506e-03 - - 1.5256710350513458e-01 -7.0295087993144989e-02 - <_> - - 0 -1 1511 -3.2312501221895218e-02 - - 1.0563810169696808e-01 -8.8757291436195374e-02 - <_> - - 0 -1 1512 -2.4041660130023956e-01 - - -5.6874710321426392e-01 1.5582700259983540e-02 - <_> - - 0 -1 1513 -3.6818000953644514e-03 - - 3.9008429646492004e-01 -2.4482680484652519e-02 - <_> - - 0 -1 1514 -3.7560980767011642e-02 - - -5.9190589189529419e-01 1.4883680269122124e-02 - <_> - - 0 -1 1515 -2.6046231389045715e-01 - - -8.0789750814437866e-01 8.0495169386267662e-03 - <_> - - 0 -1 1516 2.2003079950809479e-01 - - 1.1459389701485634e-02 -6.6569620370864868e-01 - <_> - - 0 -1 1517 1.4207080006599426e-02 - - 1.1487069539725780e-02 -4.3284940719604492e-01 - <_> - - 0 -1 1518 1.9708760082721710e-03 - - -3.1346779316663742e-02 2.8304418921470642e-01 - <_> - - 0 -1 1519 -1.6858950257301331e-02 - - -6.4982718229293823e-01 9.0222535654902458e-03 - <_> - - 0 -1 1520 1.1876899749040604e-01 - - 2.9948050156235695e-02 -2.9692101478576660e-01 - <_> - - 0 -1 1521 3.5489429719746113e-03 - - 2.2447990253567696e-02 -1.1885970085859299e-01 - <_> - - 0 -1 1522 3.2591039780527353e-03 - - 4.3978188186883926e-02 -2.0008519291877747e-01 - <_> - - 0 -1 1523 -6.9489958696067333e-03 - - 1.0979989916086197e-01 -5.1372870802879333e-02 - <_> - - 0 -1 1524 1.1651299893856049e-02 - - -3.9162278175354004e-02 2.3111459612846375e-01 - <_> - - 0 -1 1525 -2.0093740895390511e-03 - - 6.5508507192134857e-02 -3.6176491528749466e-02 - <_> - - 0 -1 1526 4.4954619370400906e-03 - - -7.4295833706855774e-02 1.4806370437145233e-01 - <_> - - 0 -1 1527 4.0165609680116177e-03 - - 1.9205560907721519e-02 -1.3202959299087524e-01 - <_> - - 0 -1 1528 5.1109711639583111e-03 - - 3.0545530840754509e-02 -3.2131591439247131e-01 - <_> - - 0 -1 1529 2.6829841081053019e-03 - - 2.5536099448800087e-02 -1.1544889956712723e-01 - <_> - - 0 -1 1530 -3.2579500693827868e-03 - - -2.5272831320762634e-01 3.9438471198081970e-02 - <_> - - 0 -1 1531 -1.9859049934893847e-03 - - 2.6658049225807190e-01 -4.6847358345985413e-02 - <_> - - 0 -1 1532 -1.2540949881076813e-01 - - -4.0570110082626343e-01 2.3068020120263100e-02 - <_> - - 0 -1 1533 5.4464139975607395e-03 - - -3.3851519227027893e-02 1.0910320281982422e-01 - <_> - - 0 -1 1534 -2.9129069298505783e-02 - - 8.2942448556423187e-02 -1.0390459746122360e-01 - <_> - - 0 -1 1535 -5.3342789411544800e-02 - - 1.4234119653701782e-01 -6.3767828047275543e-02 - <_> - - 0 -1 1536 -6.9826036691665649e-02 - - -2.9960519075393677e-01 3.8142379373311996e-02 - <_> - - 0 -1 1537 1.0430120164528489e-03 - - -4.8670019954442978e-02 2.2043199837207794e-01 - <_> - - 0 -1 1538 4.8559759743511677e-03 - - -9.1000363230705261e-02 9.7604036331176758e-02 - <_> - - 0 -1 1539 -5.6559829972684383e-03 - - 5.0467990338802338e-02 -8.2895793020725250e-02 - <_> - - 0 -1 1540 -3.9691910147666931e-01 - - -5.9703147411346436e-01 1.7244290560483932e-02 - <_> - - 0 -1 1541 -5.4687079042196274e-02 - - 3.9003100991249084e-01 -2.5155629962682724e-02 - <_> - - 0 -1 1542 -6.4253779128193855e-03 - - -2.5506249070167542e-01 3.9406619966030121e-02 - <_> - - 0 -1 1543 8.5719041526317596e-03 - - 1.8664859235286713e-02 -2.2203260660171509e-01 - <_> - - 0 -1 1544 1.2086849892511964e-03 - - -7.2148896753787994e-02 1.1844079941511154e-01 - <_> - - 0 -1 1545 -1.3033949770033360e-02 - - 2.0586760342121124e-01 -1.5820149332284927e-02 - <_> - - 0 -1 1546 7.2425887919962406e-03 - - -6.3072256743907928e-02 1.4706359803676605e-01 - <_> - - 0 -1 1547 -1.5267370268702507e-02 - - -2.6799020171165466e-01 6.9345328956842422e-03 - <_> - - 0 -1 1548 5.9866169467568398e-03 - - 3.3543970435857773e-02 -2.6078468561172485e-01 - <_> - - 0 -1 1549 -1.0885690338909626e-02 - - 8.5525132715702057e-02 -2.1214239299297333e-02 - <_> - - 0 -1 1550 4.8979911953210831e-03 - - -4.5136060565710068e-02 2.2412009537220001e-01 - <_> - - 0 -1 1551 -1.9256390631198883e-01 - - -6.3481587171554565e-01 4.2262570932507515e-03 - <_> - - 0 -1 1552 1.0860689729452133e-01 - - 1.7091739922761917e-02 -5.4510730504989624e-01 - <_> - - 0 -1 1553 -5.4836701601743698e-02 - - -3.5489219427108765e-01 4.5531531795859337e-03 - <_> - - 0 -1 1554 5.8792168274521828e-03 - - 1.5520109795033932e-02 -5.4079991579055786e-01 - <_> - - 0 -1 1555 7.5071100145578384e-03 - - -1.5854269266128540e-02 6.6651731729507446e-02 - <_> - - 0 -1 1556 1.6902120783925056e-02 - - 2.2205380722880363e-02 -3.7370339035987854e-01 - <_> - - 0 -1 1557 -3.1124811357585713e-05 - - 3.3728368580341339e-02 -6.2124319374561310e-02 - <_> - - 0 -1 1558 -7.8268267214298248e-02 - - 4.3044888973236084e-01 -1.9318610429763794e-02 - <_> - - 0 -1 1559 2.2108739241957664e-02 - - 1.3979909941554070e-02 -4.2325040698051453e-01 - <_> - - 0 -1 1560 5.4141050204634666e-03 - - 4.2009621858596802e-02 -1.8368819355964661e-01 - <_> - - 0 -1 1561 2.6600460842018947e-05 - - -5.3144950419664383e-02 6.6343963146209717e-02 - <_> - - 0 -1 1562 2.4684870368218981e-05 - - -8.5169032216072083e-02 1.0345680266618729e-01 - <_> - - 0 -1 1563 9.6517298370599747e-03 - - -6.7758128046989441e-02 1.2381830066442490e-01 - <_> - - 0 -1 1564 2.3739310563541949e-05 - - -1.0852000117301941e-01 8.2693062722682953e-02 - <_> - - 0 -1 1565 2.5218860246241093e-03 - - -1.0458250343799591e-01 6.6328182816505432e-02 - <_> - - 0 -1 1566 -5.2996139973402023e-02 - - 2.3921950161457062e-01 -4.1141789406538010e-02 - <_> - - 0 -1 1567 2.9717630241066217e-03 - - 3.5355281084775925e-02 -1.5361009538173676e-01 - <_> - - 0 -1 1568 -5.0528207793831825e-03 - - -2.8384080529212952e-01 2.9197370633482933e-02 - <_> - - 0 -1 1569 -1.4023650437593460e-03 - - 1.9387529790401459e-01 -2.3465460166335106e-02 - <_> - - 0 -1 1570 2.6361160053056665e-05 - - -1.3175390660762787e-01 6.1764400452375412e-02 - <_> - - 0 -1 1571 5.7318392209708691e-03 - - -3.7673819810152054e-02 1.4864000678062439e-01 - <_> - - 0 -1 1572 4.6025160700082779e-03 - - -6.0082349926233292e-02 1.4757469296455383e-01 - <_> - - 0 -1 1573 4.9826940521597862e-03 - - 5.0217468291521072e-02 -1.7708259820938110e-01 - <_> - - 0 -1 1574 -7.3296032845973969e-02 - - -4.9743050336837769e-01 1.6706680878996849e-02 - <_> - - 0 -1 1575 -1.4238869771361351e-02 - - 5.2175557613372803e-01 -1.1300929822027683e-02 - <_> - - 0 -1 1576 1.8155459314584732e-02 - - -3.8824878633022308e-02 2.0927000045776367e-01 - <_> - - 0 -1 1577 -2.5779709176276810e-05 - - 6.4905673265457153e-02 -7.3861442506313324e-02 - <_> - - 0 -1 1578 2.9359169275267050e-05 - - -7.5759023427963257e-02 1.1070480197668076e-01 - <_> - - 0 -1 1579 2.5904899302986450e-05 - - -5.6690879166126251e-02 7.0565029978752136e-02 - <_> - - 0 -1 1580 2.5659629609435797e-03 - - -2.2681709378957748e-02 3.2642030715942383e-01 - <_> - - 0 -1 1581 -4.3134070932865143e-02 - - 9.1313943266868591e-02 -7.7684916555881500e-02 - <_> - - 0 -1 1582 1.1505100131034851e-01 - - -5.3883530199527740e-02 1.7382779717445374e-01 - <_> - - 0 -1 1583 3.7683431059122086e-02 - - 1.1911179870367050e-02 -1.6320049762725830e-01 - <_> - - 0 -1 1584 2.8705120086669922e-02 - - 2.3064490407705307e-02 -3.4346461296081543e-01 - <_> - - 0 -1 1585 7.4174538254737854e-02 - - -3.6453459411859512e-02 2.2265499830245972e-01 - <_> - - 0 -1 1586 3.8726661354303360e-02 - - -8.6111679673194885e-02 9.4164192676544189e-02 - <_> - - 0 -1 1587 -4.1428101249039173e-03 - - -1.2223830074071884e-01 3.4176569432020187e-02 - <_> - - 0 -1 1588 2.4673599749803543e-02 - - 5.6583188474178314e-02 -1.4888830482959747e-01 - <_> - - 0 -1 1589 9.9808704107999802e-03 - - -1.9759509712457657e-02 3.0300268530845642e-01 - <_> - - 0 -1 1590 -6.6217122366651893e-05 - - 8.9724272489547729e-02 -8.9633807539939880e-02 - <_> - - 0 -1 1591 1.9440250471234322e-03 - - 4.5923989266157150e-02 -1.6087460517883301e-01 - <_> - - 0 -1 1592 -9.9218348041176796e-03 - - -3.3827519416809082e-01 2.3345960304141045e-02 - <_> - - 0 -1 1593 2.7032099751522765e-05 - - -7.1613729000091553e-02 1.4374250173568726e-01 - <_> - - 0 -1 1594 -1.1575380340218544e-02 - - 7.2989538311958313e-02 -1.1206659674644470e-01 - <_> - - 0 -1 1595 3.8227710127830505e-01 - - 4.3869050568901002e-04 -9.6936649084091187e-01 - <_> - - 0 -1 1596 2.5604510679841042e-02 - - -5.3209688514471054e-02 1.6056999564170837e-01 - <_> - - 0 -1 1597 6.5232798457145691e-02 - - -5.0901030190289021e-03 1.0526590049266815e-01 - <_> - - 0 -1 1598 -7.6533563435077667e-02 - - -2.7622249722480774e-01 2.9837079346179962e-02 - <_> - - 0 -1 1599 -3.0668321414850652e-05 - - 4.9761619418859482e-02 -6.4698956906795502e-02 - <_> - - 0 -1 1600 -7.1437079459428787e-03 - - 4.2741951346397400e-01 -1.7721550539135933e-02 - <_> - - 0 -1 1601 -7.0699103176593781e-02 - - -3.1640189886093140e-01 2.4211840704083443e-02 - <_> - - 0 -1 1602 8.3971813321113586e-02 - - 7.6198792085051537e-03 -8.0655181407928467e-01 - <_> - - 0 -1 1603 4.9757468700408936e-01 - - 6.2387259677052498e-03 -8.3056390285491943e-01 - <_> - - 0 -1 1604 5.4929931648075581e-03 - - 2.6602910831570625e-02 -2.2599579393863678e-01 - <_> - - 0 -1 1605 -2.7536999434232712e-02 - - 1.8433550000190735e-01 -7.0537109859287739e-03 - <_> - - 0 -1 1606 4.5211901888251305e-03 - - -5.4292399436235428e-02 1.2545329332351685e-01 - <_> - - 0 -1 1607 3.8641680032014847e-02 - - 8.4282690659165382e-03 -2.1961739659309387e-01 - <_> - - 0 -1 1608 -2.1654170006513596e-02 - - -2.8082931041717529e-01 2.4411179125308990e-02 - <_> - - 0 -1 1609 -2.9021130874752998e-02 - - -3.1314170360565186e-01 2.2386759519577026e-02 - <_> - - 0 -1 1610 -4.4424049556255341e-03 - - 6.4938491582870483e-01 -1.1466369964182377e-02 - <_> - - 0 -1 1611 1.4012949541211128e-02 - - -5.6059911847114563e-02 1.2263079732656479e-01 - <_> - - 0 -1 1612 7.5773880816996098e-03 - - -7.3808819055557251e-02 9.7556889057159424e-02 - <_> - - 0 -1 1613 -2.6077621150761843e-03 - - -9.1106370091438293e-02 2.9852710664272308e-02 - <_> - - 0 -1 1614 2.3739310563541949e-05 - - -7.3772080242633820e-02 9.1605342924594879e-02 - <_> - - 0 -1 1615 2.4684870368218981e-05 - - -6.9059409201145172e-02 1.3202320039272308e-01 - <_> - - 0 -1 1616 -5.7401981204748154e-02 - - 1.4494429528713226e-01 -6.0069218277931213e-02 - <_> - - 0 -1 1617 -9.3912649899721146e-03 - - 5.0085651874542236e-01 -4.1706929914653301e-03 - <_> - - 0 -1 1618 2.6128649551537819e-05 - - -7.6227553188800812e-02 1.2607720494270325e-01 - <_> - - 0 -1 1619 5.0317928194999695e-02 - - 1.0360590182244778e-02 -3.1897589564323425e-01 - <_> - - 0 -1 1620 5.1848609000444412e-03 - - -6.4724229276180267e-02 1.2341039627790451e-01 - <_> - - 0 -1 1621 -3.3910661004483700e-03 - - -1.0288400202989578e-01 4.4040981680154800e-02 - <_> - - 0 -1 1622 6.0285101644694805e-03 - - 3.7052210420370102e-02 -2.1273019909858704e-01 - <_> - - 0 -1 1623 -2.4773539975285530e-02 - - 3.0380809307098389e-01 -1.4165430329740047e-02 - <_> - - 0 -1 1624 1.6291119158267975e-02 - - -6.7963749170303345e-02 1.0207100212574005e-01 - <_> - - 0 -1 1625 8.6468607187271118e-02 - - 4.0547042153775692e-03 -4.7402960062026978e-01 - <_> - - 0 -1 1626 3.6333149764686823e-03 - - -3.5381391644477844e-02 2.0167960226535797e-01 - <_> - - 0 -1 1627 1.8694689497351646e-03 - - 2.2365350276231766e-02 -5.7087961584329605e-02 - <_> - - 0 -1 1628 -3.7068868987262249e-03 - - -1.6035629808902740e-01 4.5690719038248062e-02 - <_> - - 0 -1 1629 -3.0651168344775215e-05 - - 3.5478990525007248e-02 -3.4492049366235733e-02 - <_> - - 0 -1 1630 -4.0897028520703316e-03 - - -2.6812940835952759e-01 2.7717530727386475e-02 - <_> - - 0 -1 1631 -9.0142004191875458e-03 - - 1.2767490744590759e-01 -2.5871720165014267e-02 - <_> - - 0 -1 1632 1.0104560293257236e-02 - - 4.1761290282011032e-02 -1.6333200037479401e-01 - <_> - - 0 -1 1633 2.3208620026707649e-02 - - -1.5451289713382721e-02 2.6844790577888489e-01 - <_> - - 0 -1 1634 1.1345080286264420e-01 - - -7.4470281600952148e-02 1.1021339893341064e-01 - <_> - - 0 -1 1635 -1.1667109793052077e-03 - - -6.8658977746963501e-02 9.7963117063045502e-02 - <_> - - 0 -1 1636 6.1848782934248447e-05 - - -8.0737061798572540e-02 8.1719793379306793e-02 - <_> - - 0 -1 1637 2.7750380468205549e-05 - - -8.1860013306140900e-02 8.6313776671886444e-02 - <_> - - 0 -1 1638 2.7259990019956604e-05 - - -8.0956377089023590e-02 8.2103863358497620e-02 - <_> - - 0 -1 1639 -2.9359169275267050e-05 - - 1.0450900346040726e-01 -7.2645798325538635e-02 - <_> - - 0 -1 1640 -2.5649809686001390e-05 - - 1.0629419982433319e-01 -6.7989073693752289e-02 - <_> - - 0 -1 1641 -1.6393380239605904e-02 - - -1.7156420648097992e-01 2.7696609497070312e-02 - <_> - - 0 -1 1642 -2.3359790444374084e-02 - - 3.8850760459899902e-01 -1.6645319759845734e-02 - <_> - - 0 -1 1643 2.2364470642060041e-03 - - -1.7200240865349770e-02 2.1048629283905029e-01 - <_> - - 0 -1 1644 -1.2738189660012722e-02 - - -2.5325098633766174e-01 2.8455469757318497e-02 - <_> - - 0 -1 1645 1.3035169802606106e-02 - - -3.6639489233493805e-02 5.0902638584375381e-02 - <_> - - 0 -1 1646 2.8332999136182480e-05 - - -8.3791807293891907e-02 8.3851858973503113e-02 - <_> - - 0 -1 1647 1.2336200103163719e-02 - - -5.1417160779237747e-02 5.3230680525302887e-02 - <_> - - 0 -1 1648 -3.2792810350656509e-02 - - 2.3273399472236633e-01 -3.7388250231742859e-02 - <_> - - 0 -1 1649 2.0052760373800993e-03 - - 2.7813620865345001e-02 -2.9500991106033325e-01 - <_> - - 0 -1 1650 1.3906819745898247e-02 - - -5.4373260587453842e-02 1.2525920569896698e-01 - <_> - - 0 -1 1651 2.1737889945507050e-01 - - 4.1637279093265533e-02 -1.7800329625606537e-01 - <_> - - 0 -1 1652 6.7987501621246338e-01 - - -1.8981909379363060e-02 3.5123589634895325e-01 - <_> - - 0 -1 1653 -4.9756500869989395e-02 - - -8.0023968219757080e-01 9.7657497972249985e-03 - <_> - - 0 -1 1654 4.5796870253980160e-03 - - 2.1078180521726608e-02 -2.8444689512252808e-01 - <_> - 289 - -1.2427099943161011e+00 - - <_> - - 0 -1 1655 1.0514260083436966e-01 - - -1.0304620116949081e-01 5.2641832828521729e-01 - <_> - - 0 -1 1656 2.1874869242310524e-02 - - -1.1491969972848892e-01 8.7951011955738068e-02 - <_> - - 0 -1 1657 2.5913900136947632e-01 - - -1.8469070710125379e-05 -7.8960552978515625e+02 - <_> - - 0 -1 1658 -8.2329362630844116e-03 - - 1.2152519822120667e-01 -2.1997219324111938e-01 - <_> - - 0 -1 1659 -7.4537489563226700e-03 - - 1.1699049919843674e-01 -1.9874709844589233e-01 - <_> - - 0 -1 1660 5.0783991813659668e-02 - - 3.4344758838415146e-02 -1.9979280233383179e-01 - <_> - - 0 -1 1661 -5.3065801039338112e-03 - - 1.0219410061836243e-01 -2.3248760402202606e-01 - <_> - - 0 -1 1662 -1.9852140918374062e-02 - - -5.7735747098922729e-01 1.0748630389571190e-02 - <_> - - 0 -1 1663 2.5102009996771812e-02 - - 3.3516518771648407e-02 -5.1891112327575684e-01 - <_> - - 0 -1 1664 3.9596240967512131e-03 - - -1.5465679764747620e-01 1.0011819750070572e-01 - <_> - - 0 -1 1665 -5.9100659564137459e-03 - - -3.3589190244674683e-01 6.0344338417053223e-02 - <_> - - 0 -1 1666 9.0328548103570938e-03 - - -1.0467969812452793e-02 -3.5610088706016541e-01 - <_> - - 0 -1 1667 8.5141025483608246e-03 - - 3.3426739275455475e-02 -4.1499960422515869e-01 - <_> - - 0 -1 1668 1.4581300318241119e-02 - - -1.1947499960660934e-01 1.0586699843406677e-01 - <_> - - 0 -1 1669 1.1524210125207901e-01 - - -2.3419320583343506e-02 3.9515259861946106e-01 - <_> - - 0 -1 1670 -2.1557710133492947e-03 - - 1.1369600147008896e-01 -1.1491960287094116e-01 - <_> - - 0 -1 1671 -1.3152989745140076e-01 - - -4.0761440992355347e-01 2.8095500543713570e-02 - <_> - - 0 -1 1672 8.7718963623046875e-02 - - 1.1915800161659718e-02 -6.2395787239074707e-01 - <_> - - 0 -1 1673 5.1810648292303085e-03 - - -1.0937149822711945e-01 1.1196020245552063e-01 - <_> - - 0 -1 1674 -3.5339239984750748e-03 - - 1.2084960192441940e-01 -5.4252031259238720e-03 - <_> - - 0 -1 1675 1.1804329697042704e-03 - - -1.2307350337505341e-01 1.2815740704536438e-01 - <_> - - 0 -1 1676 5.6288531050086021e-03 - - 3.1606510281562805e-02 -2.8103598952293396e-01 - <_> - - 0 -1 1677 9.9457567557692528e-04 - - -6.5978333353996277e-02 1.4891250431537628e-01 - <_> - - 0 -1 1678 -3.7337269168347120e-03 - - 5.9899568557739258e-02 -1.8003620207309723e-01 - <_> - - 0 -1 1679 1.0250649938825518e-04 - - -8.6224079132080078e-02 1.3904710114002228e-01 - <_> - - 0 -1 1680 4.1721882298588753e-03 - - -2.4659799411892891e-02 7.9436056315898895e-02 - <_> - - 0 -1 1681 4.8526689410209656e-02 - - 3.8152199238538742e-02 -3.3759069442749023e-01 - <_> - - 0 -1 1682 8.4143159911036491e-03 - - 5.1525980234146118e-03 -1.6511310636997223e-01 - <_> - - 0 -1 1683 -3.5702888853847980e-03 - - -2.3562599718570709e-01 4.1760321706533432e-02 - <_> - - 0 -1 1684 2.2256400436162949e-02 - - -2.8121219947934151e-02 1.3493560254573822e-01 - <_> - - 0 -1 1685 3.8191271014511585e-03 - - -1.1853609979152679e-01 8.4350273013114929e-02 - <_> - - 0 -1 1686 1.4533999562263489e-01 - - -2.8631420806050301e-02 3.5683318972587585e-01 - <_> - - 0 -1 1687 -8.9769659098237753e-04 - - 5.4901029914617538e-02 -1.7856329679489136e-01 - <_> - - 0 -1 1688 4.1682600975036621e-02 - - -1.8363239243626595e-02 1.6168589890003204e-01 - <_> - - 0 -1 1689 5.0139758735895157e-02 - - -4.4928468763828278e-02 2.1465340256690979e-01 - <_> - - 0 -1 1690 3.0929069034755230e-03 - - 3.0171500518918037e-02 -3.5135638713836670e-01 - <_> - - 0 -1 1691 1.8156090751290321e-02 - - -5.5261798202991486e-02 1.9471189379692078e-01 - <_> - - 0 -1 1692 2.0246930420398712e-02 - - 3.7365719676017761e-02 -3.0078509449958801e-01 - <_> - - 0 -1 1693 1.1716090142726898e-02 - - -6.1458099633455276e-02 1.6397699713706970e-01 - <_> - - 0 -1 1694 -8.1182513386011124e-03 - - -8.8726110756397247e-02 3.2724000513553619e-02 - <_> - - 0 -1 1695 -1.4681640267372131e-01 - - -4.9301609396934509e-01 2.0158279687166214e-02 - <_> - - 0 -1 1696 -5.2891620434820652e-03 - - -2.5142368674278259e-01 9.5387678593397141e-03 - <_> - - 0 -1 1697 -1.4862219803035259e-02 - - 2.5943711400032043e-01 -3.1378541141748428e-02 - <_> - - 0 -1 1698 -1.7715459689497948e-02 - - -5.1138341426849365e-01 7.5401309877634048e-03 - <_> - - 0 -1 1699 -9.5196522306650877e-04 - - 6.9236308336257935e-02 -1.2581700086593628e-01 - <_> - - 0 -1 1700 6.6216342151165009e-02 - - -9.8208645358681679e-03 3.6082351207733154e-01 - <_> - - 0 -1 1701 8.2799885421991348e-03 - - -7.4818223714828491e-02 1.5120029449462891e-01 - <_> - - 0 -1 1702 1.2625900097191334e-02 - - 6.2517106533050537e-02 -1.5846930444240570e-01 - <_> - - 0 -1 1703 -5.0610590726137161e-02 - - 4.3044748902320862e-01 -1.9521590322256088e-02 - <_> - - 0 -1 1704 6.4415240287780762e-01 - - 1.9606480374932289e-02 -3.7122789025306702e-01 - <_> - - 0 -1 1705 6.2919452786445618e-02 - - -1.2445899844169617e-01 6.8127602338790894e-02 - <_> - - 0 -1 1706 1.5886759385466576e-02 - - 3.7582379300147295e-03 -2.5132799148559570e-01 - <_> - - 0 -1 1707 -2.3676711134612560e-03 - - -1.8140539526939392e-01 4.5303210616111755e-02 - <_> - - 0 -1 1708 2.5242239236831665e-02 - - 1.6800789162516594e-02 -3.1515631079673767e-01 - <_> - - 0 -1 1709 1.3737349770963192e-02 - - -3.2908398658037186e-02 2.3093259334564209e-01 - <_> - - 0 -1 1710 -2.1248359698802233e-03 - - 6.4555563032627106e-02 -1.4124630391597748e-01 - <_> - - 0 -1 1711 -6.0910829342901707e-03 - - -4.6051791310310364e-01 1.6628300771117210e-02 - <_> - - 0 -1 1712 4.0456880815327168e-03 - - 8.3615174517035484e-03 -2.6965349912643433e-01 - <_> - - 0 -1 1713 -3.4469161182641983e-02 - - 2.1582040190696716e-01 -3.4924760460853577e-02 - <_> - - 0 -1 1714 8.9153727458324283e-05 - - -5.1043938845396042e-02 3.4690521657466888e-02 - <_> - - 0 -1 1715 -6.6213719546794891e-03 - - -4.1585859656333923e-01 1.9391119480133057e-02 - <_> - - 0 -1 1716 1.3638250529766083e-01 - - -4.4547390192747116e-02 1.7608410120010376e-01 - <_> - - 0 -1 1717 2.5193500332534313e-03 - - -9.0518496930599213e-02 8.7540969252586365e-02 - <_> - - 0 -1 1718 -7.8399538993835449e-02 - - 2.6488780975341797e-01 -3.2434631139039993e-02 - <_> - - 0 -1 1719 7.1002319455146790e-03 - - -1.1403769999742508e-01 1.0402719676494598e-01 - <_> - - 0 -1 1720 -6.2689207494258881e-02 - - -5.6851968169212341e-02 1.4763230457901955e-02 - <_> - - 0 -1 1721 6.9820493459701538e-02 - - 1.6728859394788742e-02 -5.0399231910705566e-01 - <_> - - 0 -1 1722 1.0238329879939556e-02 - - -2.8636269271373749e-02 1.8522030115127563e-01 - <_> - - 0 -1 1723 -1.4994280412793159e-02 - - 2.2429679334163666e-01 -3.3266838639974594e-02 - <_> - - 0 -1 1724 5.2933390252292156e-03 - - 2.9912209138274193e-02 -2.1737770736217499e-01 - <_> - - 0 -1 1725 8.0084912478923798e-03 - - 3.4174129366874695e-02 -2.6237648725509644e-01 - <_> - - 0 -1 1726 1.1461140215396881e-01 - - -2.4488439783453941e-02 9.7091667354106903e-02 - <_> - - 0 -1 1727 -5.2127178758382797e-02 - - -6.4139938354492188e-01 1.1557060293853283e-02 - <_> - - 0 -1 1728 7.4813142418861389e-02 - - -5.0265830010175705e-02 5.0224021077156067e-02 - <_> - - 0 -1 1729 -1.9123209640383720e-02 - - -3.1091290712356567e-01 2.2727809846401215e-02 - <_> - - 0 -1 1730 5.4096881300210953e-02 - - -9.0643512085080147e-03 2.5074291229248047e-01 - <_> - - 0 -1 1731 -2.5658370926976204e-02 - - 2.1216529607772827e-01 -3.5177871584892273e-02 - <_> - - 0 -1 1732 1.5096050500869751e-01 - - 1.8668990582227707e-02 -2.1598240733146667e-01 - <_> - - 0 -1 1733 1.1122240126132965e-01 - - 3.4245200455188751e-02 -2.1573379635810852e-01 - <_> - - 0 -1 1734 6.0547110479092225e-05 - - -3.7213701754808426e-02 3.7215270102024078e-02 - <_> - - 0 -1 1735 5.8619431219995022e-03 - - -7.7396132051944733e-02 9.3063041567802429e-02 - <_> - - 0 -1 1736 -3.4194190055131912e-02 - - 3.4479939937591553e-01 -3.3559378236532211e-02 - <_> - - 0 -1 1737 -7.2817560285329819e-03 - - -2.9600289463996887e-01 2.6088409125804901e-02 - <_> - - 0 -1 1738 1.0952579788863659e-02 - - -5.8721199631690979e-02 1.3843379914760590e-01 - <_> - - 0 -1 1739 8.1078127026557922e-02 - - -7.2938360273838043e-02 9.6455402672290802e-02 - <_> - - 0 -1 1740 1.0665360093116760e-01 - - -1.2848479673266411e-02 1.8970890343189240e-01 - <_> - - 0 -1 1741 -6.8527236580848694e-02 - - -3.2469791173934937e-01 2.3436879739165306e-02 - <_> - - 0 -1 1742 3.6735620349645615e-02 - - -5.8335401117801666e-02 8.4354646503925323e-02 - <_> - - 0 -1 1743 8.4685698151588440e-02 - - -6.4503356814384460e-02 1.6065360605716705e-01 - <_> - - 0 -1 1744 3.6365711130201817e-03 - - -4.9595098942518234e-02 1.7173859477043152e-01 - <_> - - 0 -1 1745 -4.8055797815322876e-03 - - -2.7324178814888000e-01 2.7532469481229782e-02 - <_> - - 0 -1 1746 -9.6100764349102974e-03 - - -2.3277230560779572e-01 2.0290989428758621e-02 - <_> - - 0 -1 1747 7.8186683356761932e-02 - - 1.1925170198082924e-02 -5.6188392639160156e-01 - <_> - - 0 -1 1748 7.4945122003555298e-02 - - 2.2771470248699188e-03 -6.7497521638870239e-01 - <_> - - 0 -1 1749 -3.6618590354919434e-02 - - 1.9563549757003784e-01 -4.4303759932518005e-02 - <_> - - 0 -1 1750 2.5921240448951721e-03 - - 4.1194058954715729e-02 -1.1646830290555954e-01 - <_> - - 0 -1 1751 6.7376391962170601e-03 - - 3.1075129285454750e-02 -2.5548139214515686e-01 - <_> - - 0 -1 1752 2.8166980482637882e-03 - - -4.1387278586626053e-02 2.0167019963264465e-01 - <_> - - 0 -1 1753 6.5882243216037750e-02 - - 1.3007510453462601e-02 -5.5459141731262207e-01 - <_> - - 0 -1 1754 1.5577779849991202e-03 - - -2.3746419697999954e-02 4.1367299854755402e-02 - <_> - - 0 -1 1755 -5.4769590497016907e-03 - - -2.6814338564872742e-01 2.4470189586281776e-02 - <_> - - 0 -1 1756 -5.5535528808832169e-03 - - 2.0323030650615692e-01 -3.5721950232982635e-02 - <_> - - 0 -1 1757 -6.6988892853260040e-02 - - -5.1838552951812744e-01 1.0844370350241661e-02 - <_> - - 0 -1 1758 4.1470538824796677e-02 - - 2.7333609759807587e-03 -3.5633009672164917e-01 - <_> - - 0 -1 1759 -3.4693330526351929e-03 - - 9.8271742463111877e-02 -7.2967939078807831e-02 - <_> - - 0 -1 1760 -8.2196565344929695e-03 - - 1.0828279703855515e-01 -4.7256238758563995e-02 - <_> - - 0 -1 1761 9.9876541644334793e-03 - - -4.7037940472364426e-02 1.7513559758663177e-01 - <_> - - 0 -1 1762 -2.8357180953025818e-01 - - 1.1804939806461334e-01 -5.6662421673536301e-02 - <_> - - 0 -1 1763 -3.1115990132093430e-02 - - 3.8079530000686646e-01 -1.9796870648860931e-02 - <_> - - 0 -1 1764 1.0992879979312420e-02 - - 2.2017719224095345e-02 -8.0382846295833588e-02 - <_> - - 0 -1 1765 -1.6561850905418396e-02 - - -4.3999090790748596e-01 1.5166619792580605e-02 - <_> - - 0 -1 1766 1.8488729838281870e-03 - - -1.9684309139847755e-02 1.6026680171489716e-01 - <_> - - 0 -1 1767 -6.8709079641848803e-05 - - 8.9373558759689331e-02 -7.0307746529579163e-02 - <_> - - 0 -1 1768 -5.3440540796145797e-05 - - 1.0770639777183533e-01 -7.9271383583545685e-02 - <_> - - 0 -1 1769 5.1137150876456872e-05 - - -7.4268989264965057e-02 9.2868506908416748e-02 - <_> - - 0 -1 1770 -1.0940999723970890e-02 - - -6.0954278707504272e-01 7.1117929182946682e-03 - <_> - - 0 -1 1771 1.6700969636440277e-01 - - 1.7398620024323463e-02 -3.4830319881439209e-01 - <_> - - 0 -1 1772 -5.3627010434865952e-02 - - -2.5175419449806213e-01 3.0668680556118488e-03 - <_> - - 0 -1 1773 -1.6854789108037949e-02 - - -2.3226660490036011e-01 2.9541799798607826e-02 - <_> - - 0 -1 1774 -6.6016108030453324e-04 - - 8.4474369883537292e-02 -2.9211960732936859e-02 - <_> - - 0 -1 1775 5.8979410823667422e-05 - - -7.1650400757789612e-02 8.9446447789669037e-02 - <_> - - 0 -1 1776 -2.9099199920892715e-02 - - 1.5133389830589294e-01 -4.4302191585302353e-02 - <_> - - 0 -1 1777 6.0370288789272308e-02 - - 2.3916089907288551e-02 -2.8696390986442566e-01 - <_> - - 0 -1 1778 5.2198538469383493e-05 - - -5.5224779993295670e-02 6.3085198402404785e-02 - <_> - - 0 -1 1779 -5.3573388868244365e-05 - - 9.1779157519340515e-02 -7.3383733630180359e-02 - <_> - - 0 -1 1780 -9.2194221913814545e-02 - - 8.4590747952461243e-02 -4.3549880385398865e-02 - <_> - - 0 -1 1781 6.8016350269317627e-03 - - -3.9529308676719666e-02 1.7724280059337616e-01 - <_> - - 0 -1 1782 1.3659190386533737e-02 - - -3.1453400850296021e-02 9.2184126377105713e-02 - <_> - - 0 -1 1783 -2.0240260288119316e-02 - - 1.2939970195293427e-01 -7.2216689586639404e-02 - <_> - - 0 -1 1784 -3.3109420537948608e-01 - - -5.6844151020050049e-01 4.8965080641210079e-03 - <_> - - 0 -1 1785 -3.5590109229087830e-01 - - -6.0889261960983276e-01 1.2166419997811317e-02 - <_> - - 0 -1 1786 3.2671329379081726e-01 - - 1.1408380232751369e-02 -5.4270422458648682e-01 - <_> - - 0 -1 1787 -6.3796848058700562e-02 - - -8.0737471580505371e-01 7.3937238194048405e-03 - <_> - - 0 -1 1788 4.1656321845948696e-03 - - 1.8647879362106323e-02 -6.3343852758407593e-02 - <_> - - 0 -1 1789 6.2817978858947754e-01 - - -2.2962320595979691e-02 2.8442010283470154e-01 - <_> - - 0 -1 1790 5.7043769629672170e-05 - - -5.8396600186824799e-02 2.7118930593132973e-02 - <_> - - 0 -1 1791 -8.2484260201454163e-03 - - -3.6744558811187744e-01 1.7963869497179985e-02 - <_> - - 0 -1 1792 2.1319560706615448e-01 - - 4.8015988431870937e-03 -2.5128981471061707e-01 - <_> - - 0 -1 1793 -9.2648178339004517e-02 - - 4.0808829665184021e-01 -1.6961680725216866e-02 - <_> - - 0 -1 1794 6.7387576564215124e-05 - - -1.1430130153894424e-01 6.2709592282772064e-02 - <_> - - 0 -1 1795 -5.2264030091464520e-03 - - -3.8103449344635010e-01 1.8856620416045189e-02 - <_> - - 0 -1 1796 -4.5156818814575672e-03 - - -3.2349079847335815e-01 1.5758650377392769e-02 - <_> - - 0 -1 1797 3.1322699505835772e-03 - - 3.7116400897502899e-02 -1.6313099861145020e-01 - <_> - - 0 -1 1798 -3.0949179083108902e-02 - - -2.2487780451774597e-01 1.5935560688376427e-02 - <_> - - 0 -1 1799 -1.1999710462987423e-02 - - 1.0604210197925568e-01 -5.6003518402576447e-02 - <_> - - 0 -1 1800 3.3642560243606567e-02 - - 9.4332182779908180e-03 -2.4610279500484467e-01 - <_> - - 0 -1 1801 1.1973080225288868e-02 - - -4.5692600309848785e-02 1.5212790668010712e-01 - <_> - - 0 -1 1802 -1.4105269312858582e-01 - - -4.0252068638801575e-01 1.6124870628118515e-02 - <_> - - 0 -1 1803 -5.8696339838206768e-03 - - 1.2235599756240845e-01 -4.8751059919595718e-02 - <_> - - 0 -1 1804 2.1555710118263960e-03 - - -1.8416309729218483e-02 1.4515219628810883e-01 - <_> - - 0 -1 1805 2.4534349795430899e-03 - - -9.0565666556358337e-02 6.3355736434459686e-02 - <_> - - 0 -1 1806 5.2382410503923893e-03 - - -4.1047159582376480e-02 7.2730809450149536e-02 - <_> - - 0 -1 1807 -1.4319210313260555e-02 - - -1.7929619550704956e-01 3.6573551595211029e-02 - <_> - - 0 -1 1808 -1.0585630312561989e-02 - - -3.8849338889122009e-01 7.9265926033258438e-03 - <_> - - 0 -1 1809 8.9276917278766632e-03 - - -5.7579260319471359e-02 1.0150779783725739e-01 - <_> - - 0 -1 1810 5.7917978614568710e-02 - - 1.3735010288655758e-02 -1.9172470271587372e-01 - <_> - - 0 -1 1811 -9.2071853578090668e-03 - - -2.0012189447879791e-01 3.3192038536071777e-02 - <_> - - 0 -1 1812 -8.3500929176807404e-02 - - 2.9251980781555176e-01 -2.2903669625520706e-02 - <_> - - 0 -1 1813 -4.5707109384238720e-03 - - -1.9109779596328735e-01 4.0867939591407776e-02 - <_> - - 0 -1 1814 -2.8107669204473495e-02 - - -1.3955590128898621e-01 2.2897839546203613e-02 - <_> - - 0 -1 1815 -2.2816540673375130e-02 - - -2.5770029425621033e-01 2.2989239543676376e-02 - <_> - - 0 -1 1816 -5.2285268902778625e-03 - - -6.1747290194034576e-02 3.7713401019573212e-02 - <_> - - 0 -1 1817 6.0513508506119251e-03 - - -4.1627131402492523e-02 1.5567490458488464e-01 - <_> - - 0 -1 1818 -4.0782008320093155e-02 - - 2.5596979260444641e-01 -2.5189070031046867e-02 - <_> - - 0 -1 1819 6.2671699561178684e-03 - - -9.7672566771507263e-02 7.2752490639686584e-02 - <_> - - 0 -1 1820 -1.1280509643256664e-03 - - 7.3656037449836731e-02 -1.1387579888105392e-01 - <_> - - 0 -1 1821 6.8747308105230331e-03 - - -6.6789150238037109e-02 1.3151079416275024e-01 - <_> - - 0 -1 1822 -3.3762790262699127e-02 - - -1.8931210041046143e-01 3.4766618162393570e-02 - <_> - - 0 -1 1823 5.1757418987108395e-05 - - -7.8098617494106293e-02 7.9830199480056763e-02 - <_> - - 0 -1 1824 1.0175850242376328e-01 - - 1.7523359507322311e-02 -2.1947909891605377e-01 - <_> - - 0 -1 1825 1.1764559894800186e-01 - - 1.4738990366458893e-01 -4.2805839329957962e-02 - <_> - - 0 -1 1826 -1.9031679630279541e-01 - - -3.7623789906501770e-01 3.8982050027698278e-03 - <_> - - 0 -1 1827 2.1824610233306885e-01 - - 7.8864647075533867e-03 -6.4516901969909668e-01 - <_> - - 0 -1 1828 6.1720587837044150e-05 - - -6.8813540041446686e-02 7.8313410282135010e-02 - <_> - - 0 -1 1829 7.6815136708319187e-05 - - -6.9198243319988251e-02 9.8149210214614868e-02 - <_> - - 0 -1 1830 -1.5573709970340133e-03 - - 4.5510411262512207e-02 -1.1858870089054108e-01 - <_> - - 0 -1 1831 1.5356070362031460e-02 - - -3.7732329219579697e-02 1.6196539998054504e-01 - <_> - - 0 -1 1832 -6.4422818832099438e-04 - - -4.9214340746402740e-02 3.8596581667661667e-02 - <_> - - 0 -1 1833 3.0240670312196016e-03 - - 1.9877310842275620e-02 -2.7352470159530640e-01 - <_> - - 0 -1 1834 -2.4049060046672821e-01 - - -3.2233241200447083e-01 9.9804811179637909e-03 - <_> - - 0 -1 1835 -6.8453960120677948e-03 - - -2.6824951171875000e-01 2.0093979313969612e-02 - <_> - - 0 -1 1836 -9.8221071064472198e-02 - - 3.6731448769569397e-01 -1.6751440241932869e-02 - <_> - - 0 -1 1837 -3.3398460596799850e-02 - - -7.5862818956375122e-01 9.9286399781703949e-03 - <_> - - 0 -1 1838 -3.2237220555543900e-02 - - 2.2383579611778259e-01 -1.2614809907972813e-02 - <_> - - 0 -1 1839 -3.3283960074186325e-02 - - 2.9738378524780273e-01 -1.9648900255560875e-02 - <_> - - 0 -1 1840 -6.3496932853013277e-05 - - 5.7933460921049118e-02 -4.3885860592126846e-02 - <_> - - 0 -1 1841 7.6012212957721204e-05 - - -7.1816489100456238e-02 8.6936511099338531e-02 - <_> - - 0 -1 1842 2.7044719085097313e-02 - - 7.5920550152659416e-03 -5.4519557952880859e-01 - <_> - - 0 -1 1843 9.8314275965094566e-03 - - 2.3584580048918724e-02 -2.4372850358486176e-01 - <_> - - 0 -1 1844 -1.4273289591073990e-02 - - 1.2024249881505966e-01 -2.0805019885301590e-02 - <_> - - 0 -1 1845 3.4047421067953110e-03 - - 2.4277240037918091e-02 -2.4346110224723816e-01 - <_> - - 0 -1 1846 -2.1703050006181002e-03 - - 4.7682531177997589e-02 -2.8576539829373360e-02 - <_> - - 0 -1 1847 6.4616702497005463e-02 - - -7.2562202811241150e-02 9.5571190118789673e-02 - <_> - - 0 -1 1848 -3.6136131733655930e-02 - - -2.2917810082435608e-01 2.1050409413874149e-03 - <_> - - 0 -1 1849 -1.9167549908161163e-02 - - 3.0063459277153015e-01 -2.2639019414782524e-02 - <_> - - 0 -1 1850 1.0301499627530575e-02 - - 1.9979899749159813e-02 -1.1853440105915070e-01 - <_> - - 0 -1 1851 2.5042060762643814e-02 - - 1.3732859864830971e-02 -4.4012320041656494e-01 - <_> - - 0 -1 1852 1.1802879720926285e-01 - - -2.3824589326977730e-02 9.6127033233642578e-02 - <_> - - 0 -1 1853 -8.2905329763889313e-03 - - -8.1776067614555359e-02 6.8393409252166748e-02 - <_> - - 0 -1 1854 -1.0710770264267921e-02 - - 4.3334428220987320e-02 -7.5097911059856415e-02 - <_> - - 0 -1 1855 2.6918289065361023e-01 - - -3.9503660053014755e-02 1.4504730701446533e-01 - <_> - - 0 -1 1856 -2.2763809189200401e-02 - - 9.9672622978687286e-02 -7.7555380761623383e-02 - <_> - - 0 -1 1857 -1.2115190178155899e-01 - - -3.9497470855712891e-01 1.6640119254589081e-02 - <_> - - 0 -1 1858 7.1451293479185551e-05 - - -5.3211521357297897e-02 3.6570221185684204e-02 - <_> - - 0 -1 1859 3.8077360950410366e-03 - - -9.1341376304626465e-02 7.4727490544319153e-02 - <_> - - 0 -1 1860 -6.2283109873533249e-02 - - 4.4904568791389465e-01 -1.4291680417954922e-02 - <_> - - 0 -1 1861 -1.6545509919524193e-02 - - 2.1537640690803528e-01 -2.6689510792493820e-02 - <_> - - 0 -1 1862 -9.5320530235767365e-03 - - -1.5028700232505798e-01 8.1632016226649284e-03 - <_> - - 0 -1 1863 -5.1539638661779463e-05 - - 7.7702187001705170e-02 -7.4435219168663025e-02 - <_> - - 0 -1 1864 8.1616528332233429e-03 - - 1.2540699914097786e-02 -4.7263838350772858e-02 - <_> - - 0 -1 1865 -1.6064610332250595e-02 - - -6.3055968284606934e-01 8.5211051627993584e-03 - <_> - - 0 -1 1866 -9.4421818852424622e-02 - - 1.3808089494705200e-01 -3.9954699575901031e-02 - <_> - - 0 -1 1867 -7.0128433406352997e-02 - - -2.7507200837135315e-01 2.6419319212436676e-02 - <_> - - 0 -1 1868 -1.4281000010669231e-02 - - 8.4090739488601685e-02 -4.2029079049825668e-02 - <_> - - 0 -1 1869 -2.0523479208350182e-02 - - 1.5208010375499725e-01 -3.8674451410770416e-02 - <_> - - 0 -1 1870 3.1574970483779907e-01 - - 8.8831735774874687e-03 -6.8551319837570190e-01 - <_> - - 0 -1 1871 5.9291431680321693e-03 - - 6.9111599586904049e-03 -6.0731059312820435e-01 - <_> - - 0 -1 1872 6.0803038650192320e-05 - - -6.6974677145481110e-02 7.5997337698936462e-02 - <_> - - 0 -1 1873 8.9074257994070649e-04 - - -5.7422380894422531e-02 8.9614070951938629e-02 - <_> - - 0 -1 1874 7.5585566461086273e-02 - - 5.4939449764788151e-03 -5.0682210922241211e-01 - <_> - - 0 -1 1875 1.7032520845532417e-02 - - -7.0099852979183197e-02 8.4323048591613770e-02 - <_> - - 0 -1 1876 1.2238330207765102e-02 - - 3.3506508916616440e-02 -1.5453749895095825e-01 - <_> - - 0 -1 1877 1.2650569900870323e-02 - - -3.4498661756515503e-02 1.7358370125293732e-01 - <_> - - 0 -1 1878 3.9281910285353661e-03 - - 3.3152848482131958e-02 -1.2065990269184113e-01 - <_> - - 0 -1 1879 -1.8485839664936066e-01 - - -4.4308841228485107e-01 1.2247050181031227e-02 - <_> - - 0 -1 1880 -6.5704691223800182e-03 - - -2.8371539711952209e-01 1.1953360401093960e-02 - <_> - - 0 -1 1881 -5.8720408560475335e-05 - - 6.0625560581684113e-02 -9.0594232082366943e-02 - <_> - - 0 -1 1882 -2.1587649825960398e-03 - - 7.1897417306900024e-02 -7.1638710796833038e-02 - <_> - - 0 -1 1883 -4.2619958519935608e-02 - - -6.3012677431106567e-01 9.0704262256622314e-03 - <_> - - 0 -1 1884 -2.1494319662451744e-03 - - 7.0125512778759003e-02 -3.0237630009651184e-02 - <_> - - 0 -1 1885 -9.0273208916187286e-03 - - -2.0843930542469025e-01 2.5662729516625404e-02 - <_> - - 0 -1 1886 -1.9365029409527779e-02 - - -2.1868449449539185e-01 3.9497479796409607e-02 - <_> - - 0 -1 1887 -1.4133329689502716e-01 - - 1.7587089538574219e-01 -3.0029740184545517e-02 - <_> - - 0 -1 1888 -7.0533920079469681e-03 - - 1.2578339874744415e-01 -4.2285289615392685e-02 - <_> - - 0 -1 1889 9.1119036369491369e-05 - - -8.0194853246212006e-02 6.9832347333431244e-02 - <_> - - 0 -1 1890 5.6941218674182892e-02 - - 1.6689090058207512e-02 -5.2839207649230957e-01 - <_> - - 0 -1 1891 -5.4684251546859741e-02 - - -2.0393149554729462e-01 2.8620930388569832e-02 - <_> - - 0 -1 1892 -5.8811619965126738e-05 - - 4.1804101318120956e-02 -4.7025229781866074e-02 - <_> - - 0 -1 1893 1.7949440516531467e-03 - - -7.5684927403926849e-02 6.9111049175262451e-02 - <_> - - 0 -1 1894 2.9679369181394577e-03 - - -3.7506360560655594e-02 1.6561579704284668e-01 - <_> - - 0 -1 1895 2.8809459879994392e-02 - - -1.2360650300979614e-01 4.9675479531288147e-02 - <_> - - 0 -1 1896 4.0495251305401325e-03 - - -3.1962219625711441e-02 1.9525900483131409e-01 - <_> - - 0 -1 1897 -6.2003359198570251e-02 - - -3.8278189301490784e-01 1.5061319805681705e-02 - <_> - - 0 -1 1898 -5.1115748647134751e-05 - - 6.7757539451122284e-02 -5.2631400525569916e-02 - <_> - - 0 -1 1899 -8.5218940512277186e-05 - - 8.6446836590766907e-02 -6.7225173115730286e-02 - <_> - - 0 -1 1900 5.5194161832332611e-03 - - -1.7245279625058174e-02 1.6542769968509674e-01 - <_> - - 0 -1 1901 -1.0302600450813770e-02 - - -2.3677019774913788e-01 2.2329760715365410e-02 - <_> - - 0 -1 1902 4.1106292046606541e-03 - - -2.0237570628523827e-02 8.8973782956600189e-02 - <_> - - 0 -1 1903 2.2337420377880335e-03 - - -4.6158008277416229e-02 1.1012540012598038e-01 - <_> - - 0 -1 1904 -7.5415097177028656e-02 - - -4.3671968579292297e-01 7.0562111213803291e-03 - <_> - - 0 -1 1905 -3.5641689319163561e-03 - - -2.0360149443149567e-01 2.6056429371237755e-02 - <_> - - 0 -1 1906 -7.5477738864719868e-03 - - 6.8226106464862823e-02 -2.2757640108466148e-02 - <_> - - 0 -1 1907 3.1273330096155405e-03 - - -5.1596619188785553e-02 1.1045560240745544e-01 - <_> - - 0 -1 1908 -7.2469911538064480e-03 - - -2.8128591179847717e-01 3.2531570177525282e-03 - <_> - - 0 -1 1909 -5.2346920710988343e-05 - - 7.0106193423271179e-02 -9.4152770936489105e-02 - <_> - - 0 -1 1910 -2.4612979963421822e-02 - - -8.7304252386093140e-01 1.3450640253722668e-03 - <_> - - 0 -1 1911 -3.5978900268673897e-03 - - -1.7041720449924469e-01 3.1998220831155777e-02 - <_> - - 0 -1 1912 7.2957523167133331e-02 - - 5.0021768547594547e-03 -4.6821400523185730e-01 - <_> - - 0 -1 1913 -8.2925416529178619e-02 - - -6.8254911899566650e-01 6.8542738445103168e-03 - <_> - - 0 -1 1914 1.4584979414939880e-01 - - 4.4581899419426918e-03 -9.1366928815841675e-01 - <_> - - 0 -1 1915 1.2101789936423302e-02 - - 2.4414170533418655e-02 -1.8117509782314301e-01 - <_> - - 0 -1 1916 -6.0667369514703751e-02 - - 2.2934840619564056e-01 -1.4323459938168526e-02 - <_> - - 0 -1 1917 2.0745540037751198e-02 - - -2.6910720393061638e-02 1.9334229826927185e-01 - <_> - - 0 -1 1918 7.7412481186911464e-04 - - -2.9913529753684998e-02 4.5873280614614487e-02 - <_> - - 0 -1 1919 1.3549369759857655e-02 - - 3.4433681517839432e-02 -1.8116979300975800e-01 - <_> - - 0 -1 1920 1.2264180183410645e-01 - - 8.5802376270294189e-03 -3.5567748546600342e-01 - <_> - - 0 -1 1921 6.7160837352275848e-02 - - 1.5259440056979656e-02 -3.3480858802795410e-01 - <_> - - 0 -1 1922 -2.4647530168294907e-02 - - 1.9604270160198212e-01 -2.5130519643425941e-02 - <_> - - 0 -1 1923 1.6193950548768044e-02 - - 2.5508690625429153e-02 -2.1010090410709381e-01 - <_> - - 0 -1 1924 4.4934380054473877e-01 - - -1.0850709863007069e-02 2.6361268758773804e-01 - <_> - - 0 -1 1925 1.0006000287830830e-02 - - 1.6283020377159119e-02 -3.3978369832038879e-01 - <_> - - 0 -1 1926 -3.3295390312559903e-04 - - 4.8216179013252258e-02 -3.3164579421281815e-02 - <_> - - 0 -1 1927 -2.8556359931826591e-02 - - -1.4011450111865997e-01 3.5931900143623352e-02 - <_> - - 0 -1 1928 6.8772169761359692e-03 - - -1.2332179583609104e-02 1.5525570511817932e-01 - <_> - - 0 -1 1929 2.6129318866878748e-03 - - -4.3558120727539062e-02 1.2221980094909668e-01 - <_> - - 0 -1 1930 3.2784798741340637e-01 - - 1.3112389715388417e-03 -8.1634020805358887e-01 - <_> - - 0 -1 1931 1.5350890159606934e-01 - - 1.5348929911851883e-02 -3.3603930473327637e-01 - <_> - - 0 -1 1932 9.0102507965639234e-04 - - -3.2568939030170441e-02 6.3755579292774200e-02 - <_> - - 0 -1 1933 -7.4206269346177578e-05 - - 8.1737652420997620e-02 -6.6912956535816193e-02 - <_> - - 0 -1 1934 -3.3565158955752850e-03 - - -1.2600690126419067e-01 2.2333910688757896e-02 - <_> - - 0 -1 1935 6.5229997038841248e-02 - - -3.2034210860729218e-02 1.7820569872856140e-01 - <_> - - 0 -1 1936 -2.0175189711153507e-03 - - 2.4484390392899513e-02 -5.7224631309509277e-02 - <_> - - 0 -1 1937 7.0746080018579960e-03 - - 9.8791662603616714e-03 -5.4220247268676758e-01 - <_> - - 0 -1 1938 6.5917898609768599e-05 - - -5.1658220589160919e-02 5.6762930005788803e-02 - <_> - - 0 -1 1939 3.0828830599784851e-01 - - -9.5853386446833611e-03 5.3433179855346680e-01 - <_> - - 0 -1 1940 1.0255790315568447e-02 - - 2.4838339537382126e-02 -1.6516630351543427e-01 - <_> - - 0 -1 1941 -5.3460840717889369e-05 - - 7.9820998013019562e-02 -6.5021842718124390e-02 - <_> - - 0 -1 1942 -2.3789680562913418e-03 - - 4.7830250114202499e-02 -5.2991490811109543e-02 - <_> - - 0 -1 1943 -5.6755929253995419e-03 - - 1.2446220219135284e-01 -4.4751990586519241e-02 - <_> - 317 - -1.1628010272979736e+00 - - <_> - - 0 -1 1944 -1.0756739974021912e-01 - - 3.4051141142845154e-01 -1.5209180116653442e-01 - <_> - - 0 -1 1945 4.3516431003808975e-02 - - -1.3533400371670723e-02 2.8570750355720520e-01 - <_> - - 0 -1 1946 1.5090970695018768e-01 - - 5.0420017214491963e-04 -5.6076660156250000e+02 - <_> - - 0 -1 1947 8.1543149426579475e-03 - - -5.7393770664930344e-02 1.6381829977035522e-01 - <_> - - 0 -1 1948 -1.0340789705514908e-01 - - 2.2989919781684875e-01 -1.2858000397682190e-01 - <_> - - 0 -1 1949 -7.5287488289177418e-03 - - 7.1470782160758972e-02 -2.5789029896259308e-02 - <_> - - 0 -1 1950 3.6443499848246574e-03 - - -2.2227230668067932e-01 1.2411169707775116e-01 - <_> - - 0 -1 1951 5.3749978542327881e-01 - - 1.3947029598057270e-02 5.2125108242034912e-01 - <_> - - 0 -1 1952 2.7013081312179565e-01 - - -1.9904779270291328e-02 -6.3081250000000000e+02 - <_> - - 0 -1 1953 -1.0368769988417625e-02 - - 1.0527289658784866e-01 -1.2945720553398132e-01 - <_> - - 0 -1 1954 -1.5604550018906593e-02 - - 2.1595460176467896e-01 -9.8842203617095947e-02 - <_> - - 0 -1 1955 -2.0287589728832245e-01 - - -2.7739518880844116e-01 3.4634380135685205e-03 - <_> - - 0 -1 1956 -2.7160419151186943e-02 - - 1.0022699832916260e-01 -2.0542170107364655e-01 - <_> - - 0 -1 1957 -5.2366848103702068e-03 - - 1.2705439329147339e-01 -1.2547770142555237e-01 - <_> - - 0 -1 1958 4.6215238980948925e-03 - - 4.4826891273260117e-02 -2.7245700359344482e-01 - <_> - - 0 -1 1959 -6.7956638522446156e-03 - - -1.3386589288711548e-01 2.7177840471267700e-02 - <_> - - 0 -1 1960 -2.1976660192012787e-01 - - -2.5276950001716614e-01 4.6465039253234863e-02 - <_> - - 0 -1 1961 4.6517988666892052e-03 - - 1.0934700258076191e-02 -3.5598039627075195e-01 - <_> - - 0 -1 1962 -1.5317969955503941e-03 - - -2.4999429285526276e-01 4.4351290911436081e-02 - <_> - - 0 -1 1963 4.6969428658485413e-03 - - 2.1836619824171066e-02 -2.8716519474983215e-01 - <_> - - 0 -1 1964 4.8189409077167511e-02 - - 2.8869369998574257e-02 -3.6160790920257568e-01 - <_> - - 0 -1 1965 -7.6267770491540432e-03 - - 1.3116089999675751e-01 -3.7187561392784119e-02 - <_> - - 0 -1 1966 -4.5027391024632379e-05 - - 7.1991510689258575e-02 -1.2496870011091232e-01 - <_> - - 0 -1 1967 -5.3772819228470325e-05 - - 7.9510539770126343e-02 -7.9604126513004303e-02 - <_> - - 0 -1 1968 9.2382878065109253e-03 - - -4.5949440449476242e-02 2.0551459491252899e-01 - <_> - - 0 -1 1969 3.3600959926843643e-02 - - 2.3966940119862556e-02 -2.2747719287872314e-01 - <_> - - 0 -1 1970 -4.1857630014419556e-02 - - -2.5670358538627625e-01 4.3388199061155319e-02 - <_> - - 0 -1 1971 4.3434980325400829e-03 - - -3.6065939813852310e-02 1.3354070484638214e-01 - <_> - - 0 -1 1972 8.7262392044067383e-03 - - -2.8033399954438210e-02 2.9659709334373474e-01 - <_> - - 0 -1 1973 7.2506397962570190e-02 - - 3.3931098878383636e-02 -2.6456800103187561e-01 - <_> - - 0 -1 1974 6.9837369956076145e-03 - - 2.3075399920344353e-02 -3.6719548702239990e-01 - <_> - - 0 -1 1975 9.3958720564842224e-02 - - 5.1443470874801278e-04 -6.9157868623733521e-01 - <_> - - 0 -1 1976 -5.4611168801784515e-02 - - 3.5633870959281921e-01 -2.5591190904378891e-02 - <_> - - 0 -1 1977 8.3599044010043144e-03 - - -1.1838919669389725e-01 5.4096020758152008e-02 - <_> - - 0 -1 1978 -8.5311960428953171e-03 - - 2.5801640748977661e-01 -4.3296508491039276e-02 - <_> - - 0 -1 1979 5.3095761686563492e-02 - - 1.3446169905364513e-02 -2.0017629861831665e-01 - <_> - - 0 -1 1980 7.1099922060966492e-03 - - -1.7173579335212708e-01 6.6415287554264069e-02 - <_> - - 0 -1 1981 -1.2145659886300564e-02 - - -3.4982419013977051e-01 1.5253229998052120e-02 - <_> - - 0 -1 1982 4.9184050410985947e-02 - - -1.4627310633659363e-01 7.6635338366031647e-02 - <_> - - 0 -1 1983 6.4207926392555237e-02 - - -4.2698029428720474e-02 8.9895337820053101e-02 - <_> - - 0 -1 1984 5.0567109137773514e-02 - - -3.4271400421857834e-02 3.2117810845375061e-01 - <_> - - 0 -1 1985 3.8187500834465027e-01 - - 5.9737069532275200e-03 -4.1509181261062622e-01 - <_> - - 0 -1 1986 2.4141989648342133e-01 - - 4.2892090976238251e-02 -2.5744560360908508e-01 - <_> - - 0 -1 1987 8.7335016578435898e-03 - - 2.1523810923099518e-02 -2.5816148519515991e-01 - <_> - - 0 -1 1988 5.5905920453369617e-03 - - 3.6882549524307251e-02 -2.6805239915847778e-01 - <_> - - 0 -1 1989 1.4510929584503174e-02 - - -1.0920179635286331e-01 9.9173150956630707e-02 - <_> - - 0 -1 1990 -2.7428429573774338e-02 - - -2.5048801302909851e-01 4.5212849974632263e-02 - <_> - - 0 -1 1991 -1.2336769700050354e-01 - - 2.2557680308818817e-01 -4.2895268648862839e-02 - <_> - - 0 -1 1992 -6.1607718467712402e-02 - - -2.7772828936576843e-01 3.2521318644285202e-02 - <_> - - 0 -1 1993 -7.6216891407966614e-02 - - 3.6572670936584473e-01 -2.5518480688333511e-02 - <_> - - 0 -1 1994 4.3231542222201824e-03 - - -5.9951819479465485e-02 1.2853649258613586e-01 - <_> - - 0 -1 1995 -7.2015187470242381e-05 - - 6.6845960915088654e-02 -6.5362177789211273e-02 - <_> - - 0 -1 1996 3.8772630505263805e-03 - - -7.4681833386421204e-02 1.4904339611530304e-01 - <_> - - 0 -1 1997 -3.0842460691928864e-02 - - 4.6776279807090759e-02 -7.9269908368587494e-02 - <_> - - 0 -1 1998 2.9754610732197762e-03 - - -6.3138246536254883e-02 1.2994049489498138e-01 - <_> - - 0 -1 1999 -4.3571940623223782e-03 - - 1.7601740360260010e-01 -2.0950280129909515e-02 - <_> - - 0 -1 2000 2.5649809686001390e-05 - - -9.3459837138652802e-02 1.0563880205154419e-01 - <_> - - 0 -1 2001 -1.9046630710363388e-02 - - 3.7896901369094849e-02 -2.0427240431308746e-01 - <_> - - 0 -1 2002 -5.9084378182888031e-02 - - -2.6028269529342651e-01 3.1877409666776657e-02 - <_> - - 0 -1 2003 -3.9950340986251831e-02 - - -3.5063821077346802e-01 9.2909233644604683e-03 - <_> - - 0 -1 2004 5.0834741443395615e-02 - - 2.1912310272455215e-02 -3.8032969832420349e-01 - <_> - - 0 -1 2005 -1.3603189960122108e-02 - - 2.0380680263042450e-01 -2.1299460902810097e-02 - <_> - - 0 -1 2006 -6.7439332604408264e-02 - - -4.7569081187248230e-01 1.6315059736371040e-02 - <_> - - 0 -1 2007 1.7744049429893494e-02 - - -2.6215350255370140e-02 1.7312249541282654e-01 - <_> - - 0 -1 2008 4.0822949260473251e-02 - - 2.6971889659762383e-02 -2.5315660238265991e-01 - <_> - - 0 -1 2009 -3.5472789313644171e-03 - - -1.9389900565147400e-01 1.5181340277194977e-02 - <_> - - 0 -1 2010 1.3450950384140015e-02 - - -5.6016638875007629e-02 1.3361880183219910e-01 - <_> - - 0 -1 2011 7.0215687155723572e-02 - - 1.2199330143630505e-02 -2.9756540060043335e-01 - <_> - - 0 -1 2012 1.5829039737582207e-02 - - -8.7111897766590118e-02 8.8955126702785492e-02 - <_> - - 0 -1 2013 -2.0391130819916725e-02 - - 1.7829939723014832e-01 -3.7198159843683243e-02 - <_> - - 0 -1 2014 3.6189330276101828e-03 - - -7.6297633349895477e-02 9.6968129277229309e-02 - <_> - - 0 -1 2015 1.0060019558295608e-03 - - -4.9890179187059402e-02 6.5894342958927155e-02 - <_> - - 0 -1 2016 2.9275720007717609e-03 - - 2.9817380011081696e-02 -2.4240310490131378e-01 - <_> - - 0 -1 2017 -1.2258989736437798e-02 - - 1.9031849503517151e-01 -7.5331269763410091e-03 - <_> - - 0 -1 2018 2.3739310563541949e-05 - - -8.8776819407939911e-02 8.0645427107810974e-02 - <_> - - 0 -1 2019 -1.2860990129411221e-02 - - 6.9567993283271790e-02 -2.9768820852041245e-02 - <_> - - 0 -1 2020 -4.9192551523447037e-02 - - 1.5113650262355804e-01 -5.4699920117855072e-02 - <_> - - 0 -1 2021 -1.9440440461039543e-02 - - -1.7859379947185516e-01 1.7632320523262024e-02 - <_> - - 0 -1 2022 2.5363420136272907e-03 - - 3.0099060386419296e-02 -2.1704940497875214e-01 - <_> - - 0 -1 2023 -2.0927110686898232e-02 - - 1.5293440222740173e-01 -2.6591630652546883e-02 - <_> - - 0 -1 2024 2.1768060978502035e-03 - - -8.0131806433200836e-02 8.7036617100238800e-02 - <_> - - 0 -1 2025 3.2644919119775295e-03 - - -5.0661858171224594e-02 5.0410520285367966e-02 - <_> - - 0 -1 2026 5.3135089576244354e-02 - - 3.1357381492853165e-02 -2.4327489733695984e-01 - <_> - - 0 -1 2027 6.5658721141517162e-03 - - -3.1448438763618469e-02 1.3142390549182892e-01 - <_> - - 0 -1 2028 -1.6994590405374765e-03 - - 7.8728817403316498e-02 -9.3054726719856262e-02 - <_> - - 0 -1 2029 -2.3196509107947350e-02 - - 2.0170910656452179e-01 -1.5233940444886684e-02 - <_> - - 0 -1 2030 7.1990801952779293e-03 - - -4.3634898960590363e-02 2.1300609409809113e-01 - <_> - - 0 -1 2031 6.9829211570322514e-03 - - 3.1767521053552628e-02 -2.1285930275917053e-01 - <_> - - 0 -1 2032 -4.4900798238813877e-03 - - -1.7512929439544678e-01 4.4021461158990860e-02 - <_> - - 0 -1 2033 -1.2099999934434891e-01 - - -3.6906799674034119e-01 4.4225710444152355e-03 - <_> - - 0 -1 2034 -3.8008268922567368e-02 - - 5.2773797512054443e-01 -1.4740760438144207e-02 - <_> - - 0 -1 2035 -1.1132000014185905e-02 - - 6.3405543565750122e-02 -1.1063119769096375e-01 - <_> - - 0 -1 2036 1.2125620245933533e-01 - - 1.1243700236082077e-01 -6.7125849425792694e-02 - <_> - - 0 -1 2037 -5.8873560279607773e-02 - - 1.9491989910602570e-01 -7.9787842696532607e-04 - <_> - - 0 -1 2038 -1.2328930199146271e-02 - - -1.8806469440460205e-01 3.9350580424070358e-02 - <_> - - 0 -1 2039 -4.4250390492379665e-03 - - 1.1267340183258057e-01 -6.8100236356258392e-02 - <_> - - 0 -1 2040 -5.0966828130185604e-03 - - -1.7945580184459686e-01 4.7573208808898926e-02 - <_> - - 0 -1 2041 -4.0345240384340286e-02 - - -5.7044768333435059e-01 5.5092480033636093e-03 - <_> - - 0 -1 2042 1.1254940181970596e-01 - - -2.6945270597934723e-02 2.5808990001678467e-01 - <_> - - 0 -1 2043 6.9978296756744385e-02 - - -1.1665009660646319e-03 8.6768251657485962e-01 - <_> - - 0 -1 2044 1.6544900834560394e-02 - - 2.4307189509272575e-02 -2.5596928596496582e-01 - <_> - - 0 -1 2045 8.2277417182922363e-02 - - -2.6873949915170670e-02 2.4098409712314606e-01 - <_> - - 0 -1 2046 -4.6195117756724358e-03 - - -1.6582019627094269e-01 4.0042418986558914e-02 - <_> - - 0 -1 2047 -2.4694160092622042e-03 - - 9.2771060764789581e-02 -2.7375319972634315e-02 - <_> - - 0 -1 2048 1.0857389861484990e-04 - - -1.3484829664230347e-01 4.3606601655483246e-02 - <_> - - 0 -1 2049 -1.6490770503878593e-02 - - -1.6668060421943665e-01 1.7749810591340065e-02 - <_> - - 0 -1 2050 -4.7164629213511944e-03 - - 1.7804649472236633e-01 -3.6563079804182053e-02 - <_> - - 0 -1 2051 9.0624459087848663e-02 - - 1.7400879412889481e-02 -4.8980259895324707e-01 - <_> - - 0 -1 2052 2.7714879252016544e-03 - - -6.5938666462898254e-02 9.6407622098922729e-02 - <_> - - 0 -1 2053 4.3489869683980942e-02 - - 1.3916529715061188e-02 -2.7095559239387512e-01 - <_> - - 0 -1 2054 6.3884491100907326e-03 - - -5.8143090456724167e-02 1.0462710261344910e-01 - <_> - - 0 -1 2055 -1.4263800345361233e-02 - - 1.4017640054225922e-01 -2.6916030794382095e-02 - <_> - - 0 -1 2056 -5.6627448648214340e-03 - - -1.8962329626083374e-01 3.1633749604225159e-02 - <_> - - 0 -1 2057 7.5204060412943363e-03 - - -4.3590031564235687e-02 1.0007920116186142e-01 - <_> - - 0 -1 2058 -1.1097979731857777e-02 - - 3.0840259790420532e-01 -2.1208239719271660e-02 - <_> - - 0 -1 2059 -6.1832141131162643e-02 - - 1.8315550684928894e-01 -7.7433600090444088e-03 - <_> - - 0 -1 2060 3.4768159966915846e-03 - - 5.0638139247894287e-02 -1.3400410115718842e-01 - <_> - - 0 -1 2061 9.7783863544464111e-02 - - 2.0544449798762798e-03 -6.8779617547988892e-01 - <_> - - 0 -1 2062 -9.1820947825908661e-02 - - -2.5586891174316406e-01 2.5108650326728821e-02 - <_> - - 0 -1 2063 -1.4008830301463604e-02 - - -3.6381798982620239e-01 1.5536899678409100e-02 - <_> - - 0 -1 2064 -4.7098949551582336e-02 - - 4.1200450062751770e-01 -1.4785699546337128e-02 - <_> - - 0 -1 2065 -2.4077659472823143e-02 - - -2.6497179269790649e-01 4.3284958228468895e-03 - <_> - - 0 -1 2066 -3.0720019713044167e-03 - - 1.1348199844360352e-01 -5.2723880857229233e-02 - <_> - - 0 -1 2067 -2.3235319182276726e-02 - - -1.6182410717010498e-01 1.3907140120863914e-02 - <_> - - 0 -1 2068 2.1753229200839996e-02 - - 3.2046329230070114e-02 -1.8150269985198975e-01 - <_> - - 0 -1 2069 -2.8419379144906998e-02 - - 7.3599129915237427e-02 -1.2185299769043922e-02 - <_> - - 0 -1 2070 -9.9035337567329407e-02 - - -8.0039161443710327e-01 7.5543550774455070e-03 - <_> - - 0 -1 2071 3.6745260003954172e-03 - - -4.2538471519947052e-02 1.3135530054569244e-01 - <_> - - 0 -1 2072 -2.4902099370956421e-01 - - 5.7097381353378296e-01 -1.0065279901027679e-02 - <_> - - 0 -1 2073 -2.5670630857348442e-03 - - 1.0045439749956131e-01 -4.3844770640134811e-02 - <_> - - 0 -1 2074 6.2725669704377651e-03 - - 2.8288219124078751e-02 -1.9911240041255951e-01 - <_> - - 0 -1 2075 1.2186019681394100e-02 - - -8.9298561215400696e-03 1.7236189544200897e-01 - <_> - - 0 -1 2076 -8.4080873057246208e-03 - - 2.2059670090675354e-01 -2.5424160063266754e-02 - <_> - - 0 -1 2077 7.6226810924708843e-03 - - 2.2617619484663010e-02 -3.5040241479873657e-01 - <_> - - 0 -1 2078 -3.5278380382806063e-03 - - -2.1290290355682373e-01 3.3766809850931168e-02 - <_> - - 0 -1 2079 -4.8759128898382187e-02 - - 2.6399469375610352e-01 -2.2728230804204941e-02 - <_> - - 0 -1 2080 4.2163010686635971e-02 - - 1.6483969986438751e-02 -3.7255099415779114e-01 - <_> - - 0 -1 2081 4.1251659393310547e-02 - - -5.6340959854424000e-03 1.0747420042753220e-01 - <_> - - 0 -1 2082 -3.3506590873003006e-02 - - 3.2449829578399658e-01 -1.9830549135804176e-02 - <_> - - 0 -1 2083 -4.0785958990454674e-03 - - 7.1264110505580902e-02 -8.6405247449874878e-02 - <_> - - 0 -1 2084 -3.9688128978013992e-02 - - -3.5533818602561951e-01 1.6811089590191841e-02 - <_> - - 0 -1 2085 2.6250740885734558e-01 - - 3.3027199096977711e-03 -3.0452561378479004e-01 - <_> - - 0 -1 2086 -1.0336879640817642e-01 - - -4.4277548789978027e-01 1.5268780291080475e-02 - <_> - - 0 -1 2087 2.5352418888360262e-03 - - 2.2626899182796478e-02 -1.9356669485569000e-01 - <_> - - 0 -1 2088 1.3277910184115171e-03 - - -8.4263376891613007e-02 6.5771676599979401e-02 - <_> - - 0 -1 2089 -6.9261603057384491e-02 - - 1.9142749905586243e-01 -1.4814269728958607e-02 - <_> - - 0 -1 2090 -3.1945269554853439e-02 - - -3.0996501445770264e-01 1.8099319189786911e-02 - <_> - - 0 -1 2091 7.1500530466437340e-03 - - -7.5515069067478180e-02 7.1342557668685913e-02 - <_> - - 0 -1 2092 2.4518880527466536e-03 - - -5.2676178514957428e-02 1.1914870142936707e-01 - <_> - - 0 -1 2093 2.5479370728135109e-02 - - -2.1526889875531197e-02 1.1254230141639709e-01 - <_> - - 0 -1 2094 8.3662307588383555e-05 - - -1.2372410297393799e-01 4.4758491218090057e-02 - <_> - - 0 -1 2095 5.2631269209086895e-03 - - 1.6644699499011040e-02 -2.7927619218826294e-01 - <_> - - 0 -1 2096 5.9906251408392563e-05 - - -5.9021618217229843e-02 9.0707242488861084e-02 - <_> - - 0 -1 2097 4.0492799878120422e-01 - - 9.8951030522584915e-03 -5.3900748491287231e-01 - <_> - - 0 -1 2098 4.5421868562698364e-03 - - -8.3042033016681671e-02 5.7933621108531952e-02 - <_> - - 0 -1 2099 -2.8602469712495804e-02 - - 9.8798967897891998e-02 -4.1183408349752426e-02 - <_> - - 0 -1 2100 6.0981088317930698e-03 - - -4.9600891768932343e-02 1.0823159664869308e-01 - <_> - - 0 -1 2101 2.4081019219011068e-03 - - 3.1793300062417984e-02 -8.9700646698474884e-02 - <_> - - 0 -1 2102 -1.0493289679288864e-01 - - -1.8384000658988953e-01 2.9272029176354408e-02 - <_> - - 0 -1 2103 -7.2810851270332932e-04 - - 3.4607950598001480e-02 -1.8057569861412048e-01 - <_> - - 0 -1 2104 2.3983051069080830e-03 - - -3.6649569869041443e-02 1.4693680405616760e-01 - <_> - - 0 -1 2105 4.4842050410807133e-03 - - 2.5456009432673454e-02 -1.7060090601444244e-01 - <_> - - 0 -1 2106 5.5928908288478851e-02 - - 6.9079152308404446e-03 -7.4263191223144531e-01 - <_> - - 0 -1 2107 -1.1314620263874531e-02 - - -6.5691602230072021e-01 3.0682450160384178e-03 - <_> - - 0 -1 2108 5.2855871617794037e-03 - - 1.2209150008857250e-02 -4.1138368844985962e-01 - <_> - - 0 -1 2109 -3.5499120131134987e-03 - - 1.5674009919166565e-01 -1.3673329725861549e-02 - <_> - - 0 -1 2110 -1.6200989484786987e-02 - - -4.5118838548660278e-01 1.0513720102608204e-02 - <_> - - 0 -1 2111 -6.3212178647518158e-03 - - 2.4671469628810883e-01 -2.2179229184985161e-02 - <_> - - 0 -1 2112 6.7806281149387360e-02 - - 1.4192859642207623e-02 -4.5575699210166931e-01 - <_> - - 0 -1 2113 4.4995149970054626e-01 - - -2.0509930327534676e-02 2.3841699957847595e-01 - <_> - - 0 -1 2114 -1.6068010032176971e-01 - - -7.9124170541763306e-01 5.4184817709028721e-03 - <_> - - 0 -1 2115 -9.4610815867781639e-03 - - -2.4211630225181580e-01 9.1182524338364601e-03 - <_> - - 0 -1 2116 1.4758739620447159e-02 - - -4.1610460728406906e-02 1.3534289598464966e-01 - <_> - - 0 -1 2117 6.5756370313465595e-03 - - 9.3746017664670944e-03 -8.3214268088340759e-02 - <_> - - 0 -1 2118 5.7711522094905376e-03 - - 2.6692569255828857e-02 -1.9803330302238464e-01 - <_> - - 0 -1 2119 -5.0913479179143906e-02 - - 3.2146498560905457e-01 -1.6986150294542313e-02 - <_> - - 0 -1 2120 6.3694868003949523e-05 - - -8.4535129368305206e-02 6.8501226603984833e-02 - <_> - - 0 -1 2121 -2.1522149909287691e-03 - - 5.4858829826116562e-02 -4.8125740140676498e-02 - <_> - - 0 -1 2122 -4.0621249936521053e-03 - - 3.1572619080543518e-01 -1.7434440553188324e-02 - <_> - - 0 -1 2123 -3.5119060426950455e-02 - - -4.5856899023056030e-01 1.4954689890146255e-02 - <_> - - 0 -1 2124 -1.2798880226910114e-02 - - -1.5211139619350433e-01 3.4501589834690094e-02 - <_> - - 0 -1 2125 -5.3432481363415718e-03 - - -2.0269839465618134e-01 1.3967310078442097e-02 - <_> - - 0 -1 2126 -3.0109770596027374e-03 - - 2.3964940011501312e-01 -2.1433170884847641e-02 - <_> - - 0 -1 2127 7.9564087092876434e-02 - - 1.6967510804533958e-02 -3.1260809302330017e-01 - <_> - - 0 -1 2128 -1.6894670203328133e-02 - - 1.4590300619602203e-01 -3.4819670021533966e-02 - <_> - - 0 -1 2129 6.5786761045455933e-01 - - -1.3023089617490768e-02 4.1044768691062927e-01 - <_> - - 0 -1 2130 -1.1272220313549042e-01 - - -3.7772709131240845e-01 1.5922689810395241e-02 - <_> - - 0 -1 2131 1.7792880535125732e-02 - - 1.1819509789347649e-02 -2.4668039381504059e-01 - <_> - - 0 -1 2132 3.3843109849840403e-03 - - 4.2096659541130066e-02 -1.3628929853439331e-01 - <_> - - 0 -1 2133 1.2930380180478096e-02 - - 1.5634240582585335e-02 -3.1559720635414124e-01 - <_> - - 0 -1 2134 1.9866120070219040e-02 - - -1.9867179915308952e-02 2.7292838692665100e-01 - <_> - - 0 -1 2135 -2.0256979390978813e-02 - - -7.5079268217086792e-01 3.6987708881497383e-03 - <_> - - 0 -1 2136 -6.8132500164210796e-03 - - -1.8717190623283386e-01 2.9125010594725609e-02 - <_> - - 0 -1 2137 -1.3450549915432930e-02 - - 2.4198499321937561e-01 -1.1136880144476891e-02 - <_> - - 0 -1 2138 -5.3866169764660299e-05 - - 7.5190216302871704e-02 -7.5837813317775726e-02 - <_> - - 0 -1 2139 5.0485909014241770e-05 - - -4.7988038510084152e-02 5.0790980458259583e-02 - <_> - - 0 -1 2140 -6.4496016420889646e-05 - - 8.6316317319869995e-02 -6.7659139633178711e-02 - <_> - - 0 -1 2141 -4.8561800213064998e-05 - - 9.5296271145343781e-02 -7.2032049298286438e-02 - <_> - - 0 -1 2142 5.0147060392191634e-05 - - -7.0621952414512634e-02 9.1684870421886444e-02 - <_> - - 0 -1 2143 7.7007611980661750e-04 - - -3.1202390789985657e-02 5.4991550743579865e-02 - <_> - - 0 -1 2144 9.6719879657030106e-03 - - -4.3330889195203781e-02 1.1517649888992310e-01 - <_> - - 0 -1 2145 7.5680748559534550e-03 - - -2.3294750601053238e-02 2.0603770017623901e-01 - <_> - - 0 -1 2146 5.0460308557376266e-04 - - 5.1032479852437973e-02 -1.1277139931917191e-01 - <_> - - 0 -1 2147 -3.7291790358722210e-03 - - 7.9139657318592072e-02 -2.0108159631490707e-02 - <_> - - 0 -1 2148 1.5590510331094265e-02 - - 1.7876299098134041e-02 -3.2968211174011230e-01 - <_> - - 0 -1 2149 -5.4314311593770981e-02 - - -5.6021261215209961e-01 1.0424769716337323e-03 - <_> - - 0 -1 2150 7.8423749655485153e-03 - - -3.4334991127252579e-02 1.7766019701957703e-01 - <_> - - 0 -1 2151 6.9496310316026211e-03 - - 1.1910869739949703e-02 -2.8336969017982483e-01 - <_> - - 0 -1 2152 -4.2853900231420994e-03 - - -2.3308420181274414e-01 2.2341530770063400e-02 - <_> - - 0 -1 2153 4.8665860958863050e-05 - - -4.3898120522499084e-02 4.3758340179920197e-02 - <_> - - 0 -1 2154 -5.6118220527423546e-05 - - 8.0828711390495300e-02 -6.9480091333389282e-02 - <_> - - 0 -1 2155 -4.8432860523462296e-02 - - -7.9129552841186523e-01 6.5139750950038433e-03 - <_> - - 0 -1 2156 1.5224199742078781e-02 - - -4.0089219808578491e-02 1.3455769419670105e-01 - <_> - - 0 -1 2157 -1.2872340157628059e-02 - - 5.6049060076475143e-02 -2.4543890729546547e-02 - <_> - - 0 -1 2158 2.8247250244021416e-02 - - -3.9471641182899475e-02 1.5137889981269836e-01 - <_> - - 0 -1 2159 7.4682589620351791e-03 - - 1.3042449951171875e-02 -2.0481270551681519e-01 - <_> - - 0 -1 2160 -4.6974901109933853e-02 - - 8.0171698331832886e-01 -7.1750162169337273e-03 - <_> - - 0 -1 2161 1.3225469738245010e-02 - - -1.3960069976747036e-02 1.7298750579357147e-01 - <_> - - 0 -1 2162 2.1193178836256266e-03 - - 4.6903520822525024e-02 -1.5726210176944733e-01 - <_> - - 0 -1 2163 2.1487170457839966e-01 - - 3.7922300398349762e-03 -3.8143840432167053e-01 - <_> - - 0 -1 2164 1.5091340243816376e-01 - - -1.3922699727118015e-02 4.0974789857864380e-01 - <_> - - 0 -1 2165 -2.3029349744319916e-01 - - -5.8206570148468018e-01 1.1216839775443077e-03 - <_> - - 0 -1 2166 1.4030410349369049e-01 - - 1.6904490068554878e-02 -3.6825358867645264e-01 - <_> - - 0 -1 2167 7.0036112447269261e-05 - - -5.5154349654912949e-02 7.2621561586856842e-02 - <_> - - 0 -1 2168 4.9608469009399414e-01 - - 7.3583098128437996e-03 -7.0183300971984863e-01 - <_> - - 0 -1 2169 -2.3255969863384962e-03 - - -1.4822499454021454e-01 3.2614789903163910e-02 - <_> - - 0 -1 2170 -1.3885440304875374e-02 - - 1.6097649931907654e-01 -3.3147368580102921e-02 - <_> - - 0 -1 2171 -7.6077110134065151e-03 - - -5.0956517457962036e-01 5.0284918397665024e-03 - <_> - - 0 -1 2172 2.9671129304915667e-03 - - 3.1977619975805283e-02 -1.9695889949798584e-01 - <_> - - 0 -1 2173 5.5358321405947208e-03 - - -5.6520581245422363e-02 1.0753619670867920e-01 - <_> - - 0 -1 2174 -7.1021996438503265e-02 - - 7.9194337129592896e-02 -8.1384330987930298e-02 - <_> - - 0 -1 2175 4.5800071209669113e-02 - - -3.0750399455428123e-02 1.5652079880237579e-01 - <_> - - 0 -1 2176 6.7807468585669994e-03 - - 1.8944440409541130e-02 -3.0112281441688538e-01 - <_> - - 0 -1 2177 -1.9455070141702890e-03 - - 1.2722960114479065e-01 -2.5484839454293251e-02 - <_> - - 0 -1 2178 1.8618459999561310e-01 - - 9.0244021266698837e-03 -5.4486262798309326e-01 - <_> - - 0 -1 2179 -5.9605968999676406e-05 - - 6.2663361430168152e-02 -5.3432390093803406e-02 - <_> - - 0 -1 2180 -2.3714829236268997e-02 - - -6.0180211067199707e-01 7.9368790611624718e-03 - <_> - - 0 -1 2181 -3.1358301639556885e-02 - - -1.7721989750862122e-01 9.2706838622689247e-03 - <_> - - 0 -1 2182 -3.4968998283147812e-02 - - 3.7945351004600525e-01 -1.6990920528769493e-02 - <_> - - 0 -1 2183 -6.2416650354862213e-02 - - -4.1591739654541016e-01 4.8467209562659264e-03 - <_> - - 0 -1 2184 4.2283751070499420e-02 - - 9.8220221698284149e-03 -4.7655558586120605e-01 - <_> - - 0 -1 2185 5.1127527840435505e-03 - - -3.6782070994377136e-02 1.6474020481109619e-01 - <_> - - 0 -1 2186 -1.1211450211703777e-02 - - 1.8803590536117554e-01 -2.7652859687805176e-02 - <_> - - 0 -1 2187 5.2367132157087326e-03 - - 2.8679000213742256e-02 -1.7751020193099976e-01 - <_> - - 0 -1 2188 -5.3686140745412558e-05 - - 7.5371779501438141e-02 -6.6665068268775940e-02 - <_> - - 0 -1 2189 1.2840200215578079e-02 - - 2.1807890385389328e-02 -1.2720319628715515e-01 - <_> - - 0 -1 2190 4.2792808264493942e-02 - - 7.5381440110504627e-03 -7.1861362457275391e-01 - <_> - - 0 -1 2191 -5.2706589922308922e-03 - - 9.8822019994258881e-02 -4.4858880341053009e-02 - <_> - - 0 -1 2192 -8.2180468598380685e-04 - - -1.0595670342445374e-01 4.4027641415596008e-02 - <_> - - 0 -1 2193 -1.9295280799269676e-02 - - -4.1217219829559326e-01 2.9048579744994640e-03 - <_> - - 0 -1 2194 -2.0072490442544222e-03 - - 1.1491479724645615e-01 -4.5590780675411224e-02 - <_> - - 0 -1 2195 -5.5046308785676956e-02 - - 1.8940329551696777e-01 -1.1900239624083042e-02 - <_> - - 0 -1 2196 -1.1249479651451111e-01 - - 2.4269099533557892e-01 -2.2053480148315430e-02 - <_> - - 0 -1 2197 9.5265945419669151e-03 - - -3.8553819060325623e-02 3.0138580128550529e-02 - <_> - - 0 -1 2198 8.8573405519127846e-03 - - -6.4660146832466125e-02 8.5030071437358856e-02 - <_> - - 0 -1 2199 -5.3099901415407658e-03 - - -7.7924527227878571e-02 5.1822390407323837e-02 - <_> - - 0 -1 2200 1.5247969329357147e-01 - - 1.7019810155034065e-02 -2.8019899129867554e-01 - <_> - - 0 -1 2201 -5.1454458385705948e-02 - - -2.2231650352478027e-01 8.8541666045784950e-03 - <_> - - 0 -1 2202 2.5466380640864372e-02 - - -5.4948728531599045e-02 8.9072257280349731e-02 - <_> - - 0 -1 2203 2.5437718629837036e-01 - - 2.0636660046875477e-03 -8.7088710069656372e-01 - <_> - - 0 -1 2204 -2.2862739861011505e-01 - - 2.0034660398960114e-01 -2.5318780913949013e-02 - <_> - - 0 -1 2205 -1.1813339777290821e-02 - - 1.3387170433998108e-01 -3.6503531038761139e-02 - <_> - - 0 -1 2206 -2.0118320360779762e-02 - - -2.0123849809169769e-01 2.8073679655790329e-02 - <_> - - 0 -1 2207 2.1774079650640488e-02 - - -6.5130768343806267e-03 2.8022170066833496e-01 - <_> - - 0 -1 2208 4.8404871486127377e-03 - - -2.9814250767230988e-02 1.5977649390697479e-01 - <_> - - 0 -1 2209 -1.1922290286747739e-04 - - 3.4044638276100159e-02 -1.6057680547237396e-01 - <_> - - 0 -1 2210 -7.2792158462107182e-03 - - -4.8334380984306335e-01 9.9527724087238312e-03 - <_> - - 0 -1 2211 2.5904899302986450e-05 - - -3.8143690675497055e-02 4.7028180211782455e-02 - <_> - - 0 -1 2212 -9.0986102819442749e-02 - - 2.6971128582954407e-01 -1.7947979271411896e-02 - <_> - - 0 -1 2213 -2.0878769457340240e-01 - - 2.3006640374660492e-01 -2.1609179675579071e-02 - <_> - - 0 -1 2214 -7.0507721975445747e-03 - - -2.5048211216926575e-01 2.0052019506692886e-02 - <_> - - 0 -1 2215 8.9825186878442764e-03 - - -1.8023729324340820e-02 2.9516848921775818e-01 - <_> - - 0 -1 2216 5.9706211090087891e-02 - - -1.2844909913837910e-02 3.5593861341476440e-01 - <_> - - 0 -1 2217 -1.0364769957959652e-02 - - -2.0093110203742981e-01 2.7827220037579536e-02 - <_> - - 0 -1 2218 -1.9454259425401688e-02 - - -5.3035300970077515e-01 9.0706236660480499e-03 - <_> - - 0 -1 2219 -2.1027070470154285e-03 - - 8.8599607348442078e-02 -3.6157719790935516e-02 - <_> - - 0 -1 2220 7.5333649292588234e-03 - - -2.4457870051264763e-02 1.9365130364894867e-01 - <_> - - 0 -1 2221 5.1182601600885391e-03 - - 1.7408149316906929e-02 -2.2554570436477661e-01 - <_> - - 0 -1 2222 2.1947720088064671e-03 - - 2.9690459370613098e-02 -1.9585029780864716e-01 - <_> - - 0 -1 2223 4.1202981024980545e-02 - - -1.3297099620103836e-02 1.0000280290842056e-01 - <_> - - 0 -1 2224 1.6161680221557617e-02 - - 4.0170218795537949e-02 -1.3210490345954895e-01 - <_> - - 0 -1 2225 1.2740600109100342e-01 - - 9.2737795785069466e-03 -2.3941579461097717e-01 - <_> - - 0 -1 2226 -2.6743640191853046e-03 - - 2.3251029849052429e-01 -2.3273019120097160e-02 - <_> - - 0 -1 2227 -1.1705280095338821e-01 - - -2.1834470331668854e-01 1.3516159728169441e-02 - <_> - - 0 -1 2228 6.6700777970254421e-03 - - -4.3667081743478775e-02 1.0799729824066162e-01 - <_> - - 0 -1 2229 4.0056079626083374e-02 - - -6.8564810790121555e-03 2.9377210140228271e-01 - <_> - - 0 -1 2230 -4.5556342229247093e-03 - - 1.1046539992094040e-01 -4.6572249382734299e-02 - <_> - - 0 -1 2231 3.1573511660099030e-02 - - 9.8816202953457832e-03 -4.1573968529701233e-01 - <_> - - 0 -1 2232 -2.4809420108795166e-02 - - -3.3196479082107544e-01 1.4033090323209763e-02 - <_> - - 0 -1 2233 -2.8404951444827020e-04 - - -9.7788289189338684e-02 2.3671500384807587e-02 - <_> - - 0 -1 2234 4.0798787958920002e-03 - - 6.7953333258628845e-02 -9.0779386460781097e-02 - <_> - - 0 -1 2235 -2.2680750116705894e-02 - - -8.0813902616500854e-01 3.1646140851080418e-03 - <_> - - 0 -1 2236 -1.6572299646213651e-03 - - 1.4296419918537140e-01 -3.2175339758396149e-02 - <_> - - 0 -1 2237 -2.0962789654731750e-02 - - -7.5405949354171753e-01 3.1872680410742760e-03 - <_> - - 0 -1 2238 -1.0227429447695613e-03 - - 8.3290070295333862e-02 -5.5208690464496613e-02 - <_> - - 0 -1 2239 -3.0178760644048452e-03 - - -4.1023060679435730e-02 1.9629580900073051e-02 - <_> - - 0 -1 2240 1.9140060245990753e-01 - - 1.7543679103255272e-02 -2.5566551089286804e-01 - <_> - - 0 -1 2241 -1.8952760845422745e-02 - - 3.2863160967826843e-01 -4.8918230459094048e-03 - <_> - - 0 -1 2242 -4.5249331742525101e-03 - - -1.5619170665740967e-01 2.9538759961724281e-02 - <_> - - 0 -1 2243 -4.9335299991071224e-03 - - -1.5361049771308899e-01 1.2712599709630013e-02 - <_> - - 0 -1 2244 1.8985930830240250e-02 - - -3.9585389196872711e-02 1.2031179666519165e-01 - <_> - - 0 -1 2245 -1.5369809698313475e-03 - - 5.1183801144361496e-02 -1.9807800650596619e-02 - <_> - - 0 -1 2246 3.1302288174629211e-02 - - 7.9048639163374901e-03 -5.4225182533264160e-01 - <_> - - 0 -1 2247 -7.9099438153207302e-04 - - 7.3334179818630219e-02 -2.4761039763689041e-02 - <_> - - 0 -1 2248 4.5027391024632379e-05 - - -6.7761823534965515e-02 6.7263968288898468e-02 - <_> - - 0 -1 2249 5.1923059800174087e-05 - - -3.4273158758878708e-02 3.8594700396060944e-02 - <_> - - 0 -1 2250 -5.7095869124168530e-05 - - 8.3823829889297485e-02 -6.6085226833820343e-02 - <_> - - 0 -1 2251 -1.2159290164709091e-01 - - -7.0010262727737427e-01 1.8631670391187072e-03 - <_> - - 0 -1 2252 1.7494540661573410e-02 - - 2.5959860533475876e-02 -1.8100750446319580e-01 - <_> - - 0 -1 2253 -6.3360072672367096e-02 - - 1.3021109998226166e-01 -8.8773788884282112e-03 - <_> - - 0 -1 2254 -3.9351868629455566e-01 - - -6.3525807857513428e-01 8.2348221912980080e-03 - <_> - - 0 -1 2255 -1.4749130234122276e-02 - - 5.7367369532585144e-02 -7.7454112470149994e-02 - <_> - - 0 -1 2256 7.4586831033229828e-03 - - -7.3831513524055481e-02 7.2971351444721222e-02 - <_> - - 0 -1 2257 6.0465059505077079e-05 - - -6.8741306662559509e-02 8.3382681012153625e-02 - <_> - - 0 -1 2258 6.3182349549606442e-05 - - -6.4837761223316193e-02 7.9487666487693787e-02 - <_> - - 0 -1 2259 -1.7990749329328537e-02 - - -3.4188538789749146e-01 8.2358242943882942e-03 - <_> - - 0 -1 2260 -1.7810800345614552e-03 - - 8.3142079412937164e-02 -6.6293247044086456e-02 - <_> - 356 - -1.1554880142211914e+00 - - <_> - - 0 -1 2261 5.2821958065032959e-01 - - -1.1207380145788193e-01 4.6492001414299011e-01 - <_> - - 0 -1 2262 -8.3934608846902847e-03 - - 1.2420009821653366e-01 -9.8423361778259277e-02 - <_> - - 0 -1 2263 -1.2533710338175297e-02 - - 1.2940670549869537e-01 -2.1826070547103882e-01 - <_> - - 0 -1 2264 -2.6514590717852116e-03 - - 1.0746669769287109e-01 -6.5223596990108490e-02 - <_> - - 0 -1 2265 -1.2469879584386945e-03 - - 9.4827726483345032e-02 -1.9725410640239716e-01 - <_> - - 0 -1 2266 -1.0506220161914825e-02 - - -1.7862290143966675e-01 7.0718586444854736e-02 - <_> - - 0 -1 2267 -1.4628679491579533e-03 - - 7.7305212616920471e-02 -1.5881679952144623e-01 - <_> - - 0 -1 2268 1.1747170239686966e-02 - - 4.1279338300228119e-02 -1.6574889421463013e-01 - <_> - - 0 -1 2269 2.1636099554598331e-03 - - -8.1736542284488678e-02 1.8447269499301910e-01 - <_> - - 0 -1 2270 -1.5604849904775620e-02 - - 1.8409819900989532e-01 9.1587323695421219e-03 - <_> - - 0 -1 2271 -6.7909010685980320e-03 - - 1.9271300733089447e-01 -6.1005659401416779e-02 - <_> - - 0 -1 2272 -4.6382728032767773e-03 - - 7.2124399244785309e-02 -1.5475249290466309e-01 - <_> - - 0 -1 2273 -1.0595080256462097e-01 - - 1.6988320648670197e-01 -7.7400818467140198e-02 - <_> - - 0 -1 2274 2.2278100252151489e-02 - - 3.0081849545240402e-02 -3.1891208887100220e-01 - <_> - - 0 -1 2275 3.8351129740476608e-02 - - -2.9357129707932472e-02 3.7845009565353394e-01 - <_> - - 0 -1 2276 1.2740549631416798e-02 - - 1.2108690105378628e-02 -2.8980401158332825e-01 - <_> - - 0 -1 2277 -1.1967839673161507e-02 - - -2.7529829740524292e-01 3.3420279622077942e-02 - <_> - - 0 -1 2278 6.2382412143051624e-03 - - 2.3227069526910782e-02 -2.8768861293792725e-01 - <_> - - 0 -1 2279 1.2571290135383606e-03 - - -1.2283419817686081e-01 7.7545933425426483e-02 - <_> - - 0 -1 2280 9.7746416926383972e-02 - - 1.2077139690518379e-02 -3.2092699408531189e-01 - <_> - - 0 -1 2281 -5.9180860407650471e-03 - - -2.2756209969520569e-01 4.4753268361091614e-02 - <_> - - 0 -1 2282 6.4139030873775482e-03 - - 4.0146928280591965e-02 -5.0460521131753922e-02 - <_> - - 0 -1 2283 9.2285759747028351e-03 - - 2.3475490510463715e-02 -3.7728920578956604e-01 - <_> - - 0 -1 2284 -2.6009760331362486e-03 - - 5.8036070317029953e-02 -3.9748001843690872e-02 - <_> - - 0 -1 2285 4.5100939460098743e-03 - - -1.5007099509239197e-01 6.4765617251396179e-02 - <_> - - 0 -1 2286 -3.0929979681968689e-01 - - -3.6162209510803223e-01 5.2778669632971287e-03 - <_> - - 0 -1 2287 1.6643610596656799e-01 - - 5.8025740087032318e-02 -1.6670639812946320e-01 - <_> - - 0 -1 2288 -2.9249170795083046e-02 - - -1.0418120026588440e-01 4.7381941229104996e-02 - <_> - - 0 -1 2289 5.7897690683603287e-02 - - -8.2713462412357330e-02 1.2301749736070633e-01 - <_> - - 0 -1 2290 4.3999850749969482e-02 - - 3.1090460252016783e-03 -3.8884210586547852e-01 - <_> - - 0 -1 2291 -1.3344550132751465e-01 - - -2.7564039826393127e-01 3.0734259635210037e-02 - <_> - - 0 -1 2292 8.4765329957008362e-03 - - 2.6562379673123360e-02 -2.8648358583450317e-01 - <_> - - 0 -1 2293 6.2942858785390854e-03 - - 1.9861690700054169e-02 -3.6465620994567871e-01 - <_> - - 0 -1 2294 1.1854199692606926e-02 - - -4.8169068992137909e-02 1.5777969360351562e-01 - <_> - - 0 -1 2295 -1.0978949815034866e-01 - - -2.1610009670257568e-01 3.5239979624748230e-02 - <_> - - 0 -1 2296 1.2859810376539826e-03 - - -7.6805353164672852e-02 9.9000319838523865e-02 - <_> - - 0 -1 2297 1.0880099982023239e-01 - - -9.8220370709896088e-02 1.1628390103578568e-01 - <_> - - 0 -1 2298 1.4206060208380222e-02 - - 4.8896879889070988e-03 -3.8383349776268005e-01 - <_> - - 0 -1 2299 1.3263390399515629e-02 - - 2.2176699712872505e-02 -3.8806360960006714e-01 - <_> - - 0 -1 2300 7.9566845670342445e-03 - - -7.1314819157123566e-02 7.4114650487899780e-02 - <_> - - 0 -1 2301 7.6957657933235168e-02 - - -3.6166220903396606e-02 2.5757679343223572e-01 - <_> - - 0 -1 2302 1.0020350106060505e-02 - - -7.8531332314014435e-02 6.3383802771568298e-02 - <_> - - 0 -1 2303 9.2017520219087601e-03 - - 2.9391989111900330e-02 -2.5732880830764771e-01 - <_> - - 0 -1 2304 3.0723180621862411e-02 - - -1.8738139420747757e-02 2.2832340002059937e-01 - <_> - - 0 -1 2305 1.1019960045814514e-02 - - -5.3296729922294617e-02 1.7494520545005798e-01 - <_> - - 0 -1 2306 -2.7454070746898651e-02 - - 1.7024679481983185e-01 -8.2028387114405632e-03 - <_> - - 0 -1 2307 -1.3689819723367691e-02 - - 2.0019780099391937e-01 -4.1991960257291794e-02 - <_> - - 0 -1 2308 -8.1678535789251328e-03 - - -2.6262301206588745e-01 1.0354639962315559e-02 - <_> - - 0 -1 2309 1.0099980048835278e-02 - - -4.4948261231184006e-02 1.8523730337619781e-01 - <_> - - 0 -1 2310 2.0024929940700531e-01 - - -3.6824479699134827e-02 2.4072830379009247e-01 - <_> - - 0 -1 2311 3.7789789494127035e-03 - - -1.3910900056362152e-01 7.6126843690872192e-02 - <_> - - 0 -1 2312 -1.1101000010967255e-02 - - 2.3991499841213226e-01 -3.6410998553037643e-02 - <_> - - 0 -1 2313 6.2072020024061203e-02 - - 2.7602510526776314e-02 -2.9762440919876099e-01 - <_> - - 0 -1 2314 -4.9415021203458309e-04 - - 4.3032951653003693e-02 -1.6109019517898560e-01 - <_> - - 0 -1 2315 -3.5258450079709291e-03 - - -1.7413130402565002e-01 5.7513698935508728e-02 - <_> - - 0 -1 2316 5.6127668358385563e-03 - - -2.4234469980001450e-02 9.8788991570472717e-02 - <_> - - 0 -1 2317 3.7660789676010609e-03 - - -3.6623299121856689e-02 2.0090830326080322e-01 - <_> - - 0 -1 2318 1.5459409914910793e-02 - - 7.6649021357297897e-03 -2.0163559913635254e-01 - <_> - - 0 -1 2319 -1.0357989929616451e-02 - - -4.2395240068435669e-01 1.7005009576678276e-02 - <_> - - 0 -1 2320 -1.3180119916796684e-02 - - -2.8122058510780334e-01 2.5302259251475334e-02 - <_> - - 0 -1 2321 3.6393520236015320e-01 - - 1.0694099590182304e-02 -6.5183037519454956e-01 - <_> - - 0 -1 2322 4.5797090977430344e-02 - - -1.0829409584403038e-03 -6.0917937755584717e-01 - <_> - - 0 -1 2323 -1.6817899420857430e-02 - - 2.4067279696464539e-01 -2.8841640800237656e-02 - <_> - - 0 -1 2324 -6.9932773709297180e-02 - - -2.4569059908390045e-01 1.4374910097103566e-04 - <_> - - 0 -1 2325 3.7072949111461639e-02 - - 1.2047279626131058e-02 -6.1824947595596313e-01 - <_> - - 0 -1 2326 -2.2509139962494373e-03 - - -1.3868570327758789e-01 2.3441780358552933e-02 - <_> - - 0 -1 2327 -4.1130598634481430e-02 - - -4.9580198526382446e-01 1.2616300024092197e-02 - <_> - - 0 -1 2328 2.3879110813140869e-05 - - -7.0274658501148224e-02 6.5245926380157471e-02 - <_> - - 0 -1 2329 -3.2828738912940025e-03 - - -2.1801410615444183e-01 2.8452510014176369e-02 - <_> - - 0 -1 2330 -5.8957811444997787e-02 - - -1.1310169845819473e-01 3.5647820681333542e-02 - <_> - - 0 -1 2331 3.2863670639926568e-05 - - -6.9775812327861786e-02 9.4940163195133209e-02 - <_> - - 0 -1 2332 -7.3036700487136841e-02 - - 1.0691460222005844e-01 -8.9681193232536316e-02 - <_> - - 0 -1 2333 -1.0581959784030914e-01 - - 1.8230620026588440e-01 -3.8819670677185059e-02 - <_> - - 0 -1 2334 4.6694820048287511e-04 - - -1.0075339674949646e-01 6.5119899809360504e-02 - <_> - - 0 -1 2335 -2.5920490734279156e-03 - - -2.5448209047317505e-01 2.3101860657334328e-02 - <_> - - 0 -1 2336 1.0439500212669373e-02 - - 4.0941308252513409e-03 -5.8273357152938843e-01 - <_> - - 0 -1 2337 -2.3739310563541949e-05 - - 6.0636729001998901e-02 -1.0014739632606506e-01 - <_> - - 0 -1 2338 -2.2808990906924009e-03 - - 1.8519909679889679e-01 -2.5434119626879692e-02 - <_> - - 0 -1 2339 -2.0937379449605942e-03 - - -1.9199110567569733e-01 3.3368378877639771e-02 - <_> - - 0 -1 2340 -2.1821799874305725e-01 - - 3.0659881234169006e-01 -2.1840380504727364e-02 - <_> - - 0 -1 2341 1.1518020182847977e-02 - - -1.0706210136413574e-01 5.8232858777046204e-02 - <_> - - 0 -1 2342 -3.1504388898611069e-02 - - 1.1767739802598953e-01 -4.5906491577625275e-02 - <_> - - 0 -1 2343 -2.9461419209837914e-02 - - -2.2960099577903748e-01 2.8894580900669098e-02 - <_> - - 0 -1 2344 -7.9243192449212074e-03 - - 1.4196249842643738e-01 -1.2565449811518192e-02 - <_> - - 0 -1 2345 4.1360300965607166e-03 - - -2.8592340648174286e-02 2.0373730361461639e-01 - <_> - - 0 -1 2346 1.0430599562823772e-02 - - -4.2332988232374191e-02 5.2509099245071411e-02 - <_> - - 0 -1 2347 -2.4384139478206635e-01 - - 3.3615669608116150e-01 -1.8990069627761841e-02 - <_> - - 0 -1 2348 7.5686741620302200e-03 - - 6.4027151092886925e-03 -3.0588310956954956e-01 - <_> - - 0 -1 2349 1.2688450515270233e-03 - - -9.0141750872135162e-02 7.2941012680530548e-02 - <_> - - 0 -1 2350 3.0815709382295609e-02 - - 2.9594700317829847e-03 -2.4351659417152405e-01 - <_> - - 0 -1 2351 2.1978209260851145e-03 - - -6.3376732170581818e-02 1.0065200179815292e-01 - <_> - - 0 -1 2352 6.1282119713723660e-03 - - -3.8386259227991104e-02 6.6562168300151825e-02 - <_> - - 0 -1 2353 2.8037100564688444e-03 - - 3.5719309002161026e-02 -1.5420930087566376e-01 - <_> - - 0 -1 2354 -3.9568650536239147e-03 - - 7.0916712284088135e-02 -3.9958059787750244e-02 - <_> - - 0 -1 2355 1.3929230161011219e-02 - - -2.3392310366034508e-02 2.8147700428962708e-01 - <_> - - 0 -1 2356 -1.0155060328543186e-02 - - -1.4042359590530396e-01 1.8515620380640030e-02 - <_> - - 0 -1 2357 1.4601370319724083e-02 - - 1.2359219603240490e-02 -5.4975450038909912e-01 - <_> - - 0 -1 2358 5.3091858717380092e-05 - - -4.3967559933662415e-02 3.4709561616182327e-02 - <_> - - 0 -1 2359 -2.1016378886997700e-03 - - 2.2752889990806580e-01 -2.8702080249786377e-02 - <_> - - 0 -1 2360 6.4648198895156384e-03 - - 1.8192790448665619e-02 -2.2275130450725555e-01 - <_> - - 0 -1 2361 -2.6089660823345184e-03 - - -1.4833129942417145e-01 4.2162369936704636e-02 - <_> - - 0 -1 2362 -4.9172870814800262e-02 - - 1.8216049671173096e-01 -3.4944381564855576e-02 - <_> - - 0 -1 2363 -1.7964000580832362e-03 - - 4.8824101686477661e-02 -1.8214319646358490e-01 - <_> - - 0 -1 2364 7.3850047774612904e-03 - - -4.1866000741720200e-02 1.8619979918003082e-01 - <_> - - 0 -1 2365 2.0502610132098198e-02 - - -5.8134358376264572e-02 1.3789500296115875e-01 - <_> - - 0 -1 2366 1.1636819690465927e-01 - - -5.5159669369459152e-02 6.7019522190093994e-02 - <_> - - 0 -1 2367 -5.8732312172651291e-03 - - 2.3400300741195679e-01 -2.7389379218220711e-02 - <_> - - 0 -1 2368 2.8881600499153137e-01 - - 1.9362909719347954e-02 -1.6190120577812195e-01 - <_> - - 0 -1 2369 -1.1966419965028763e-01 - - 2.4559150636196136e-01 -2.5993959978222847e-02 - <_> - - 0 -1 2370 3.8372459821403027e-03 - - -1.3896790146827698e-01 5.6779049336910248e-02 - <_> - - 0 -1 2371 -1.1065569706261158e-03 - - -1.6209499537944794e-01 3.6041721701622009e-02 - <_> - - 0 -1 2372 8.6359567940235138e-02 - - -1.0209360159933567e-02 2.5007158517837524e-01 - <_> - - 0 -1 2373 -3.5953361541032791e-02 - - -7.5698071718215942e-01 8.1533808261156082e-03 - <_> - - 0 -1 2374 8.2757696509361267e-02 - - -1.1972229927778244e-02 1.3151499629020691e-01 - <_> - - 0 -1 2375 1.4555160701274872e-01 - - 2.5669520720839500e-02 -2.3377719521522522e-01 - <_> - - 0 -1 2376 6.6698692739009857e-02 - - 1.8229909241199493e-02 -1.2386269867420197e-01 - <_> - - 0 -1 2377 9.8781272768974304e-02 - - -1.9738260656595230e-02 3.2106879353523254e-01 - <_> - - 0 -1 2378 -2.8243279457092285e-01 - - -5.4694139957427979e-01 2.3887760471552610e-03 - <_> - - 0 -1 2379 2.1013429760932922e-01 - - 1.8199119716882706e-02 -3.6248031258583069e-01 - <_> - - 0 -1 2380 -6.5322709269821644e-04 - - 5.5216301232576370e-02 -3.0892439186573029e-02 - <_> - - 0 -1 2381 -3.4593738615512848e-02 - - 3.3557349443435669e-01 -1.5504119917750359e-02 - <_> - - 0 -1 2382 -5.2095651626586914e-03 - - -2.5957450270652771e-01 1.2371880002319813e-02 - <_> - - 0 -1 2383 6.7268118262290955e-02 - - -6.2751926481723785e-02 9.1558992862701416e-02 - <_> - - 0 -1 2384 4.0582818910479546e-03 - - 4.1073631495237350e-02 -1.5675480663776398e-01 - <_> - - 0 -1 2385 -4.4469390064477921e-02 - - -1.9344259798526764e-01 3.1193459406495094e-02 - <_> - - 0 -1 2386 -2.8536471072584391e-03 - - -7.4204660952091217e-02 8.2652583718299866e-02 - <_> - - 0 -1 2387 1.2151960283517838e-01 - - -1.7220549285411835e-02 3.7725690007209778e-01 - <_> - - 0 -1 2388 5.2743978798389435e-02 - - 7.3638479225337505e-03 -3.9580649137496948e-01 - <_> - - 0 -1 2389 1.3366829603910446e-02 - - 3.0281009152531624e-02 -1.7159000039100647e-01 - <_> - - 0 -1 2390 7.8486632555723190e-03 - - -2.2395020350813866e-02 1.5052449703216553e-01 - <_> - - 0 -1 2391 -3.8255099207162857e-03 - - 1.3788110017776489e-01 -3.9005029946565628e-02 - <_> - - 0 -1 2392 -1.4737069606781006e-01 - - 9.8498381674289703e-02 -1.7566099762916565e-02 - <_> - - 0 -1 2393 7.1411043405532837e-02 - - 2.3220099508762360e-02 -2.6759588718414307e-01 - <_> - - 0 -1 2394 1.6689129173755646e-02 - - -2.1761840209364891e-02 1.4617420732975006e-01 - <_> - - 0 -1 2395 -3.2251640222966671e-03 - - 1.1931479722261429e-01 -5.4029799997806549e-02 - <_> - - 0 -1 2396 7.9702045768499374e-03 - - -5.4389618337154388e-02 7.2950288653373718e-02 - <_> - - 0 -1 2397 1.1626689694821835e-02 - - 3.2414920628070831e-02 -1.7057350277900696e-01 - <_> - - 0 -1 2398 -3.3233501017093658e-02 - - -1.5321509540081024e-01 2.7658430859446526e-02 - <_> - - 0 -1 2399 1.6202520579099655e-02 - - -7.9839676618576050e-02 8.0415137112140656e-02 - <_> - - 0 -1 2400 -1.6993099823594093e-02 - - 1.0708849877119064e-01 -2.7095580473542213e-02 - <_> - - 0 -1 2401 5.2699539810419083e-03 - - -7.7671408653259277e-02 9.0478442609310150e-02 - <_> - - 0 -1 2402 -1.1230699717998505e-02 - - -3.6888670921325684e-01 1.4764210209250450e-02 - <_> - - 0 -1 2403 2.1683340892195702e-02 - - 2.1191939711570740e-02 -2.4312150478363037e-01 - <_> - - 0 -1 2404 -2.7136749122291803e-03 - - 1.2931990623474121e-01 -1.8054159358143806e-02 - <_> - - 0 -1 2405 3.8232649676501751e-03 - - -6.7757181823253632e-02 7.9043537378311157e-02 - <_> - - 0 -1 2406 1.2926490046083927e-02 - - 2.2853519767522812e-02 -2.5793269276618958e-01 - <_> - - 0 -1 2407 -2.6950810570269823e-03 - - 2.1666090190410614e-01 -2.7097690850496292e-02 - <_> - - 0 -1 2408 2.1591490507125854e-01 - - 4.6611670404672623e-03 -8.6887371540069580e-01 - <_> - - 0 -1 2409 1.6816329956054688e-01 - - 1.4129919931292534e-02 -3.5010749101638794e-01 - <_> - - 0 -1 2410 -4.9199439585208893e-02 - - -7.7299457788467407e-01 6.0964501462876797e-03 - <_> - - 0 -1 2411 2.6104740798473358e-02 - - 6.1850231140851974e-03 -6.6869372129440308e-01 - <_> - - 0 -1 2412 1.4541350305080414e-02 - - 5.0752838142216206e-03 -7.4292498826980591e-01 - <_> - - 0 -1 2413 1.1107119498774409e-03 - - -3.4112259745597839e-02 1.5071749687194824e-01 - <_> - - 0 -1 2414 -1.0770659893751144e-02 - - -9.3431137502193451e-02 1.0186879895627499e-02 - <_> - - 0 -1 2415 9.4277620315551758e-02 - - -6.0080580413341522e-02 8.3786897361278534e-02 - <_> - - 0 -1 2416 1.2355080246925354e-01 - - -4.1992601007223129e-02 9.3132473528385162e-02 - <_> - - 0 -1 2417 8.3645677566528320e-01 - - 1.1344860307872295e-02 -5.4795432090759277e-01 - <_> - - 0 -1 2418 3.5250179469585419e-02 - - -1.0818820446729660e-02 9.0401187539100647e-02 - <_> - - 0 -1 2419 -5.1221748435636982e-05 - - 7.9516053199768066e-02 -6.6719420254230499e-02 - <_> - - 0 -1 2420 6.7162756749894470e-05 - - -4.4288840144872665e-02 5.3668409585952759e-02 - <_> - - 0 -1 2421 4.6395221725106239e-03 - - -8.4727346897125244e-02 6.2100611627101898e-02 - <_> - - 0 -1 2422 -1.3368109939619899e-03 - - -8.0351352691650391e-02 2.7986800298094749e-02 - <_> - - 0 -1 2423 -3.3781651407480240e-02 - - 3.2461521029472351e-01 -1.6312640160322189e-02 - <_> - - 0 -1 2424 -1.7830280121415854e-03 - - -1.6490410268306732e-01 2.1757079288363457e-02 - <_> - - 0 -1 2425 2.0984211005270481e-03 - - 2.9534770175814629e-02 -1.7951250076293945e-01 - <_> - - 0 -1 2426 -5.3364270570455119e-05 - - 4.4331740587949753e-02 -3.6765310913324356e-02 - <_> - - 0 -1 2427 1.2269259989261627e-01 - - 1.2407179921865463e-02 -4.0553379058837891e-01 - <_> - - 0 -1 2428 9.4987526535987854e-02 - - -3.5644270246848464e-04 -9.9994051456451416e-01 - <_> - - 0 -1 2429 -6.3772678375244141e-02 - - 7.4163448810577393e-01 -6.8990588188171387e-03 - <_> - - 0 -1 2430 5.5591128766536713e-02 - - -3.5102190449833870e-03 2.1648910641670227e-01 - <_> - - 0 -1 2431 -1.5703400596976280e-02 - - -2.3365770280361176e-01 2.3516980931162834e-02 - <_> - - 0 -1 2432 -1.1627990007400513e-01 - - -1. 5.0003651995211840e-04 - <_> - - 0 -1 2433 6.3939712941646576e-02 - - 8.5324635729193687e-03 -5.6500917673110962e-01 - <_> - - 0 -1 2434 1.8591650296002626e-03 - - -2.1516749635338783e-02 4.3187011033296585e-02 - <_> - - 0 -1 2435 2.3360128980129957e-03 - - 4.5124590396881104e-02 -1.0887669771909714e-01 - <_> - - 0 -1 2436 -5.8738891035318375e-02 - - -5.6496912240982056e-01 5.2059069275856018e-03 - <_> - - 0 -1 2437 3.7132750730961561e-03 - - -1.3463160023093224e-02 3.7635311484336853e-01 - <_> - - 0 -1 2438 2.0255730487406254e-03 - - 3.1444959342479706e-02 -1.2322609871625900e-01 - <_> - - 0 -1 2439 -6.3382161897607148e-05 - - 7.7033013105392456e-02 -6.6739097237586975e-02 - <_> - - 0 -1 2440 1.2969060242176056e-01 - - 3.6417250521481037e-03 -4.1131299734115601e-01 - <_> - - 0 -1 2441 -1.1913739889860153e-01 - - -6.0263478755950928e-01 7.9903472214937210e-03 - <_> - - 0 -1 2442 -1.2801880016922951e-02 - - -5.9771001338958740e-01 1.0519300121814013e-03 - <_> - - 0 -1 2443 -1.9107370078563690e-01 - - -8.1298089027404785e-01 5.7100728154182434e-03 - <_> - - 0 -1 2444 2.2893320769071579e-02 - - 1.9452519714832306e-02 -1.6321709752082825e-01 - <_> - - 0 -1 2445 1.7033159732818604e-01 - - -1.9810710102319717e-02 2.4343749880790710e-01 - <_> - - 0 -1 2446 3.8168561458587646e-01 - - 7.4787861667573452e-03 -8.3872407674789429e-01 - <_> - - 0 -1 2447 -6.2416237778961658e-03 - - -1.4228279888629913e-01 3.3278539776802063e-02 - <_> - - 0 -1 2448 8.4588013589382172e-02 - - 1.6765499487519264e-02 -9.2857971787452698e-02 - <_> - - 0 -1 2449 2.2514959797263145e-02 - - 8.7925590574741364e-02 -7.1550369262695312e-02 - <_> - - 0 -1 2450 -1.9668120145797729e-01 - - 8.3321869373321533e-02 -2.0352829247713089e-02 - <_> - - 0 -1 2451 -2.1616910398006439e-01 - - 2.9649278521537781e-01 -1.6111530363559723e-02 - <_> - - 0 -1 2452 -8.8920090347528458e-03 - - 1.3778349757194519e-01 -3.5843171179294586e-02 - <_> - - 0 -1 2453 -1.2084799818694592e-02 - - -4.3843948841094971e-01 1.2365490198135376e-02 - <_> - - 0 -1 2454 2.5806298851966858e-01 - - -5.2921390160918236e-03 3.7774148583412170e-01 - <_> - - 0 -1 2455 1.4883230440318584e-02 - - 9.0738674625754356e-03 -5.5208402872085571e-01 - <_> - - 0 -1 2456 6.6914242506027222e-01 - - -1.4938499778509140e-02 1.7851120233535767e-01 - <_> - - 0 -1 2457 -4.9930079840123653e-03 - - -2.3148590326309204e-01 2.3481570184230804e-02 - <_> - - 0 -1 2458 2.0315469801425934e-01 - - 2.1833679638803005e-03 -4.9344301223754883e-01 - <_> - - 0 -1 2459 -5.6780078448355198e-03 - - 1.9343170523643494e-01 -2.7786340564489365e-02 - <_> - - 0 -1 2460 5.9304530732333660e-03 - - -2.0089559257030487e-02 1.0909699648618698e-01 - <_> - - 0 -1 2461 -2.3739310563541949e-05 - - 6.9419682025909424e-02 -8.3425432443618774e-02 - <_> - - 0 -1 2462 -6.2176208011806011e-03 - - 7.8689947724342346e-02 -1.3951480388641357e-02 - <_> - - 0 -1 2463 5.5320560932159424e-03 - - -6.6315047442913055e-02 7.9847618937492371e-02 - <_> - - 0 -1 2464 -3.6959160119295120e-02 - - -2.9380309581756592e-01 1.5764990821480751e-02 - <_> - - 0 -1 2465 1.6365250572562218e-02 - - -3.2235268503427505e-02 1.4612549543380737e-01 - <_> - - 0 -1 2466 -7.8597873449325562e-02 - - -1.9322140514850616e-01 9.7729396075010300e-03 - <_> - - 0 -1 2467 -3.7147980183362961e-02 - - -8.0554589629173279e-02 6.5781079232692719e-02 - <_> - - 0 -1 2468 1.1728459969162941e-02 - - 2.7243109419941902e-02 -1.4649729430675507e-01 - <_> - - 0 -1 2469 -1.0335040278732777e-02 - - 6.2767356634140015e-02 -8.1577852368354797e-02 - <_> - - 0 -1 2470 -2.2553969174623489e-02 - - -5.3455010056495667e-02 2.6032449677586555e-02 - <_> - - 0 -1 2471 -2.0984159782528877e-02 - - -7.0430137217044830e-02 7.9067058861255646e-02 - <_> - - 0 -1 2472 -7.0778899826109409e-03 - - 6.8095311522483826e-02 -2.1682029590010643e-02 - <_> - - 0 -1 2473 -1.9395829876884818e-03 - - 6.1789739876985550e-02 -1.0044089704751968e-01 - <_> - - 0 -1 2474 1.5511269448325038e-03 - - -2.3770300671458244e-02 1.0483939945697784e-01 - <_> - - 0 -1 2475 -8.7477812485303730e-05 - - 7.3554880917072296e-02 -6.8933039903640747e-02 - <_> - - 0 -1 2476 -4.8028680612333119e-04 - - 4.4728521257638931e-02 -4.3513979762792587e-02 - <_> - - 0 -1 2477 -1.7207010090351105e-01 - - -5.9279191493988037e-01 8.8808601722121239e-03 - <_> - - 0 -1 2478 1.5847340226173401e-01 - - 3.0388650484383106e-03 -2.7436259388923645e-01 - <_> - - 0 -1 2479 -1.4971689879894257e-01 - - -7.6002198457717896e-01 6.4801289699971676e-03 - <_> - - 0 -1 2480 -2.0640289876610041e-03 - - 1.5531200170516968e-01 -3.0484480783343315e-02 - <_> - - 0 -1 2481 -7.7108487486839294e-02 - - 4.3029859662055969e-01 -1.1647719889879227e-02 - <_> - - 0 -1 2482 -3.4328561276197433e-02 - - -2.3154769837856293e-01 1.6160769388079643e-02 - <_> - - 0 -1 2483 4.3574009090662003e-02 - - -2.8146019205451012e-02 1.6973729431629181e-01 - <_> - - 0 -1 2484 7.4282230343669653e-05 - - -6.5261639654636383e-02 3.5262048244476318e-02 - <_> - - 0 -1 2485 2.1579340100288391e-03 - - 4.3165851384401321e-02 -1.1010999977588654e-01 - <_> - - 0 -1 2486 2.0436691120266914e-03 - - 2.9586719349026680e-02 -6.1997979879379272e-02 - <_> - - 0 -1 2487 1.8425910174846649e-01 - - 5.3550167940557003e-03 -9.2895787954330444e-01 - <_> - - 0 -1 2488 1.9119750708341599e-02 - - 5.3580361418426037e-03 -6.5347892045974731e-01 - <_> - - 0 -1 2489 6.4144372940063477e-02 - - -1.0330500081181526e-02 4.6719509363174438e-01 - <_> - - 0 -1 2490 -4.3394681997597218e-03 - - -1.5378740429878235e-01 1.1142870411276817e-02 - <_> - - 0 -1 2491 -2.2321179509162903e-01 - - -9.4697248935699463e-01 4.8918798565864563e-03 - <_> - - 0 -1 2492 -5.6038159527815878e-05 - - 7.0976890623569489e-02 -6.2353119254112244e-02 - <_> - - 0 -1 2493 1.3452749699354172e-03 - - -2.8609760105609894e-02 1.5549249947071075e-01 - <_> - - 0 -1 2494 1.3946880353614688e-03 - - -4.0270540863275528e-02 5.8612279593944550e-02 - <_> - - 0 -1 2495 1.5620330348610878e-02 - - 7.3195630684494972e-03 -6.3210958242416382e-01 - <_> - - 0 -1 2496 -5.5555468861712143e-05 - - 4.5023500919342041e-02 -2.8714200481772423e-02 - <_> - - 0 -1 2497 1.1142860166728497e-02 - - 1.5724860131740570e-02 -2.8536120057106018e-01 - <_> - - 0 -1 2498 1.3101319782435894e-02 - - -3.5583950579166412e-02 1.0512710362672806e-01 - <_> - - 0 -1 2499 8.7957009673118591e-03 - - 2.4417439475655556e-02 -1.8935090303421021e-01 - <_> - - 0 -1 2500 -4.9927979707717896e-02 - - 7.8737221658229828e-02 -2.7785409241914749e-02 - <_> - - 0 -1 2501 3.9871338754892349e-02 - - -2.9802389442920685e-02 1.9444610178470612e-01 - <_> - - 0 -1 2502 -1.5781600028276443e-02 - - -7.6653957366943359e-01 9.5044961199164391e-04 - <_> - - 0 -1 2503 -6.1174961738288403e-03 - - -2.6769641041755676e-01 1.7127420753240585e-02 - <_> - - 0 -1 2504 4.4994831085205078e-01 - - -1.9066739827394485e-02 2.3485369980335236e-01 - <_> - - 0 -1 2505 -4.3342880904674530e-02 - - -7.1883791685104370e-01 6.2806149944663048e-03 - <_> - - 0 -1 2506 -3.0128860846161842e-02 - - -6.5766400098800659e-01 4.9726511351764202e-03 - <_> - - 0 -1 2507 -2.2716969251632690e-02 - - -1.9271560013294220e-01 2.2421309724450111e-02 - <_> - - 0 -1 2508 -1.0098509956151247e-03 - - 7.8559018671512604e-02 -3.5671528428792953e-02 - <_> - - 0 -1 2509 -1.0692490031942725e-03 - - 1.2817870080471039e-01 -5.1395080983638763e-02 - <_> - - 0 -1 2510 -5.7365992106497288e-03 - - -4.5711138844490051e-01 4.0395711548626423e-03 - <_> - - 0 -1 2511 -5.0038979679811746e-05 - - 6.9684647023677826e-02 -7.4391268193721771e-02 - <_> - - 0 -1 2512 3.3675018697977066e-02 - - 3.2588799949735403e-03 -8.0500680208206177e-01 - <_> - - 0 -1 2513 1.5914790332317352e-02 - - 1.0776109993457794e-02 -4.0246000885963440e-01 - <_> - - 0 -1 2514 -4.2607940849848092e-04 - - -4.7198060899972916e-02 2.3349309340119362e-02 - <_> - - 0 -1 2515 2.2485710680484772e-01 - - -3.9887890219688416e-02 1.0685189813375473e-01 - <_> - - 0 -1 2516 -2.9953860212117434e-03 - - 9.1609388589859009e-02 -7.4848413467407227e-02 - <_> - - 0 -1 2517 -4.1523170657455921e-03 - - 1.1539760231971741e-01 -4.2511921375989914e-02 - <_> - - 0 -1 2518 4.9836929887533188e-02 - - -3.9297798648476601e-03 5.1817202568054199e-01 - <_> - - 0 -1 2519 -2.0023329183459282e-02 - - 1.9128979742527008e-01 -2.3151049390435219e-02 - <_> - - 0 -1 2520 -6.2091718427836895e-03 - - 1.0139790177345276e-01 -3.2446511089801788e-02 - <_> - - 0 -1 2521 -5.2683670073747635e-03 - - -1.8189090490341187e-01 3.0742220580577850e-02 - <_> - - 0 -1 2522 2.5454410351812840e-03 - - 1.5531339682638645e-02 -7.6035097241401672e-02 - <_> - - 0 -1 2523 -3.3172550611197948e-03 - - -1.3509359955787659e-01 3.5959109663963318e-02 - <_> - - 0 -1 2524 -2.6110820472240448e-02 - - 8.7283633649349213e-02 -2.1770549938082695e-02 - <_> - - 0 -1 2525 2.4312630295753479e-01 - - 3.6142878234386444e-02 -1.4625130593776703e-01 - <_> - - 0 -1 2526 1.9041310250759125e-01 - - 7.3239780031144619e-03 -2.7729520201683044e-01 - <_> - - 0 -1 2527 1.6359759494662285e-02 - - -1.0685429722070694e-01 4.9114670604467392e-02 - <_> - - 0 -1 2528 -6.8857766687870026e-02 - - -4.2388990521430969e-01 8.5399514064192772e-03 - <_> - - 0 -1 2529 2.0329190418124199e-02 - - -3.9603959769010544e-02 1.6347900032997131e-01 - <_> - - 0 -1 2530 1.2973019853234291e-02 - - -1.9561119377613068e-02 1.1104790121316910e-01 - <_> - - 0 -1 2531 6.2990398146212101e-03 - - -3.8755550980567932e-02 1.6495589911937714e-01 - <_> - - 0 -1 2532 4.6493619447574019e-04 - - -7.0398978888988495e-02 5.9166688472032547e-02 - <_> - - 0 -1 2533 -1.1437010020017624e-02 - - -2.5582531094551086e-01 2.2561600431799889e-02 - <_> - - 0 -1 2534 -6.0563441365957260e-02 - - -1.5025900304317474e-01 3.5881530493497849e-02 - <_> - - 0 -1 2535 -5.7170469313859940e-02 - - -5.5165249109268188e-01 8.8588111102581024e-03 - <_> - - 0 -1 2536 -3.7495139986276627e-03 - - -1.0633470118045807e-01 1.6566360369324684e-02 - <_> - - 0 -1 2537 3.6156480200588703e-03 - - -4.6951588243246078e-02 9.8432987928390503e-02 - <_> - - 0 -1 2538 3.9375461637973785e-03 - - 1.5857139602303505e-02 -1.2761549651622772e-01 - <_> - - 0 -1 2539 6.9156679091975093e-04 - - -9.6932567656040192e-02 4.6035420149564743e-02 - <_> - - 0 -1 2540 -1.7139660194516182e-02 - - 1.8325529992580414e-01 -2.9744260013103485e-02 - <_> - - 0 -1 2541 -2.1130971144884825e-03 - - -1.4694969356060028e-01 3.7141200155019760e-02 - <_> - - 0 -1 2542 -6.3239036535378546e-05 - - 5.6094359606504440e-02 -4.5251309871673584e-02 - <_> - - 0 -1 2543 5.2524639613693580e-05 - - -6.6079467535018921e-02 8.4846131503582001e-02 - <_> - - 0 -1 2544 2.2989229764789343e-03 - - -6.2885507941246033e-02 7.2458572685718536e-02 - <_> - - 0 -1 2545 8.5239242762327194e-03 - - 2.4598589166998863e-02 -2.0404249429702759e-01 - <_> - - 0 -1 2546 1.5247499570250511e-02 - - -4.6305138617753983e-02 9.2680208384990692e-02 - <_> - - 0 -1 2547 -4.1115559637546539e-02 - - -1.6479089856147766e-01 3.2052058726549149e-02 - <_> - - 0 -1 2548 -5.7012498378753662e-02 - - 1.7691320180892944e-01 -2.8910059481859207e-02 - <_> - - 0 -1 2549 -3.6141950637102127e-02 - - 3.3573868870735168e-01 -1.4668149873614311e-02 - <_> - - 0 -1 2550 -4.7342400997877121e-02 - - -3.6468461155891418e-01 9.7021097317337990e-03 - <_> - - 0 -1 2551 1.5224410162772983e-04 - - -8.5566259920597076e-02 5.6335821747779846e-02 - <_> - - 0 -1 2552 -1.0744449682533741e-03 - - 6.7602880299091339e-02 -4.4944599270820618e-02 - <_> - - 0 -1 2553 2.4688818957656622e-03 - - 3.9391770958900452e-02 -1.1436650156974792e-01 - <_> - - 0 -1 2554 -2.2395079955458641e-02 - - -4.1499689221382141e-01 3.3534979447722435e-03 - <_> - - 0 -1 2555 1.4145880006253719e-02 - - 7.8060040250420570e-03 -5.6246250867843628e-01 - <_> - - 0 -1 2556 -5.6172739277826622e-05 - - 4.2239628732204437e-02 -3.9982240647077560e-02 - <_> - - 0 -1 2557 -4.6720141544938087e-03 - - -3.0066668987274170e-01 1.5984399244189262e-02 - <_> - - 0 -1 2558 5.9289661294315010e-05 - - -4.1034109890460968e-02 5.2692588418722153e-02 - <_> - - 0 -1 2559 -1.9730681087821722e-03 - - 1.5118849277496338e-01 -3.2511081546545029e-02 - <_> - - 0 -1 2560 -2.3879110813140869e-05 - - 4.1403569281101227e-02 -4.2990118265151978e-02 - <_> - - 0 -1 2561 5.1802700909320265e-05 - - -5.8342479169368744e-02 9.3940071761608124e-02 - <_> - - 0 -1 2562 2.2840979509055614e-03 - - 1.8507080152630806e-02 -4.5831311494112015e-02 - <_> - - 0 -1 2563 -1.3125069439411163e-01 - - -1.7687280476093292e-01 2.6014940813183784e-02 - <_> - - 0 -1 2564 -1.1948959436267614e-03 - - 4.1936729103326797e-02 -5.5546648800373077e-02 - <_> - - 0 -1 2565 7.2234630584716797e-02 - - 1.0688959620893002e-02 -4.0127620100975037e-01 - <_> - - 0 -1 2566 -5.6396931409835815e-02 - - -8.8491988182067871e-01 3.6692508729174733e-04 - <_> - - 0 -1 2567 -5.4153650999069214e-02 - - -2.2496509552001953e-01 1.7923209816217422e-02 - <_> - - 0 -1 2568 -2.5167329236865044e-02 - - 1.3002359867095947e-01 -3.6686159670352936e-02 - <_> - - 0 -1 2569 1.3710210099816322e-02 - - -4.0513981133699417e-02 1.1201860010623932e-01 - <_> - - 0 -1 2570 -2.7890820056200027e-02 - - -7.3137658834457397e-01 3.7337029352784157e-03 - <_> - - 0 -1 2571 -7.5335809960961342e-03 - - -2.3119840025901794e-01 1.7614539712667465e-02 - <_> - - 0 -1 2572 3.2403611112385988e-03 - - -8.7237963452935219e-03 2.0382650196552277e-01 - <_> - - 0 -1 2573 8.4408961236476898e-02 - - 5.1954388618469238e-03 -8.2454532384872437e-01 - <_> - - 0 -1 2574 -8.2196877337992191e-04 - - -8.1715703010559082e-02 2.1830869838595390e-02 - <_> - - 0 -1 2575 2.9956221114844084e-03 - - -2.8032269328832626e-02 1.5127840638160706e-01 - <_> - - 0 -1 2576 -7.0376463234424591e-02 - - -1.3520090281963348e-01 3.9681098423898220e-03 - <_> - - 0 -1 2577 3.2191380858421326e-02 - - 1.3135899789631367e-02 -3.3470198512077332e-01 - <_> - - 0 -1 2578 5.4974909871816635e-03 - - -2.6549790054559708e-02 1.1709090322256088e-01 - <_> - - 0 -1 2579 1.6429390758275986e-02 - - -5.3361341357231140e-02 8.2119062542915344e-02 - <_> - - 0 -1 2580 -7.4506900273263454e-03 - - 8.0858200788497925e-02 -2.2392859682440758e-02 - <_> - - 0 -1 2581 4.9851150251924992e-03 - - -2.0572969689965248e-02 2.5987860560417175e-01 - <_> - - 0 -1 2582 2.9100670944899321e-03 - - -2.3105369880795479e-02 4.5229300856590271e-02 - <_> - - 0 -1 2583 -1.3522300124168396e-01 - - 1.1169719696044922e-01 -4.3613661080598831e-02 - <_> - - 0 -1 2584 -9.8680844530463219e-03 - - -1.8346819281578064e-01 3.8948319852352142e-03 - <_> - - 0 -1 2585 4.0301959961652756e-03 - - 2.3375049233436584e-02 -2.0566239953041077e-01 - <_> - - 0 -1 2586 3.9632450789213181e-02 - - 7.7001759782433510e-03 -1.6639390587806702e-01 - <_> - - 0 -1 2587 -1.2742499820888042e-02 - - 1.4852410554885864e-01 -3.0606770887970924e-02 - <_> - - 0 -1 2588 3.7017830181866884e-03 - - 2.0922090858221054e-02 -1.1472299695014954e-01 - <_> - - 0 -1 2589 2.2704519797116518e-03 - - 2.7025869116187096e-02 -1.6540579497814178e-01 - <_> - - 0 -1 2590 1.4953289926052094e-01 - - -2.0300289615988731e-03 5.9815090894699097e-01 - <_> - - 0 -1 2591 -5.1417769864201546e-03 - - 3.8440889120101929e-01 -1.1284800246357918e-02 - <_> - - 0 -1 2592 -6.3616367988288403e-03 - - -3.1090161204338074e-01 1.4351840130984783e-02 - <_> - - 0 -1 2593 -5.9813860803842545e-02 - - -7.0378690958023071e-01 5.7968678884208202e-03 - <_> - - 0 -1 2594 3.5357210040092468e-01 - - 1.1212659999728203e-02 -3.3229699730873108e-01 - <_> - - 0 -1 2595 6.8999081850051880e-01 - - -1.0586109943687916e-02 3.8376569747924805e-01 - <_> - - 0 -1 2596 4.8297038301825523e-03 - - 2.1038129925727844e-02 -5.7353559881448746e-02 - <_> - - 0 -1 2597 1.7828490585088730e-02 - - -1.0605059564113617e-02 3.9563548564910889e-01 - <_> - - 0 -1 2598 6.4284101128578186e-02 - - -6.3842877745628357e-02 2.6795409619808197e-02 - <_> - - 0 -1 2599 2.5491470098495483e-01 - - 1.9327409565448761e-02 -2.4302749335765839e-01 - <_> - - 0 -1 2600 5.1334970630705357e-03 - - 1.1508010327816010e-02 -2.3830899596214294e-01 - <_> - - 0 -1 2601 -3.9797872304916382e-03 - - -2.0426890254020691e-01 2.0390080288052559e-02 - <_> - - 0 -1 2602 2.7258729096502066e-03 - - -4.6508461236953735e-02 7.9410687088966370e-02 - <_> - - 0 -1 2603 -1.4983859844505787e-02 - - 3.9586919546127319e-01 -1.1343169957399368e-02 - <_> - - 0 -1 2604 2.9130540788173676e-03 - - 3.6371629685163498e-02 -9.0614721179008484e-02 - <_> - - 0 -1 2605 -9.0548500884324312e-04 - - 6.2091920524835587e-02 -6.8425096571445465e-02 - <_> - - 0 -1 2606 -1.1654829978942871e-01 - - 1.1569529771804810e-01 -1.3268720358610153e-02 - <_> - - 0 -1 2607 1.0781300254166126e-02 - - 1.7420019954442978e-02 -2.8036078810691833e-01 - <_> - - 0 -1 2608 -5.3447848558425903e-01 - - -4.7411590814590454e-01 8.6649907752871513e-03 - <_> - - 0 -1 2609 5.6615539506310597e-05 - - -5.8638270944356918e-02 7.5020261108875275e-02 - <_> - - 0 -1 2610 6.2536040786653757e-05 - - -4.9846608191728592e-02 5.9350069612264633e-02 - <_> - - 0 -1 2611 7.3054343461990356e-02 - - -1.4036689884960651e-02 3.5884460806846619e-01 - <_> - - 0 -1 2612 -1.6530159860849380e-02 - - -3.4632420539855957e-01 6.7927599884569645e-03 - <_> - - 0 -1 2613 -6.3628758653067052e-05 - - 7.1638368070125580e-02 -5.9216059744358063e-02 - <_> - - 0 -1 2614 -1.9453760236501694e-02 - - -5.1694720983505249e-01 6.2814089469611645e-03 - <_> - - 0 -1 2615 2.1202109754085541e-01 - - 7.6583931222558022e-03 -5.0985842943191528e-01 - <_> - - 0 -1 2616 1.9657649099826813e-02 - - -4.3143048882484436e-02 5.1890939474105835e-02 - <_> - 371 - -1.1236120462417603e+00 - - <_> - - 0 -1 2617 8.6894199252128601e-02 - - -1.8969950079917908e-01 2.2035740315914154e-01 - <_> - - 0 -1 2618 -9.6704717725515366e-03 - - 1.1851350218057632e-01 -8.6339563131332397e-02 - <_> - - 0 -1 2619 -8.1467948853969574e-02 - - 1.4990839362144470e-01 -1.2963719666004181e-01 - <_> - - 0 -1 2620 -1.7537999665364623e-03 - - 1.7750880122184753e-01 -1.0693369805812836e-01 - <_> - - 0 -1 2621 -7.4387797212693840e-05 - - 9.6010386943817139e-02 -1.6225080192089081e-01 - <_> - - 0 -1 2622 8.0011058598756790e-03 - - -1.8540080636739731e-02 2.4660170078277588e-01 - <_> - - 0 -1 2623 1.7090819776058197e-02 - - 3.2561480998992920e-02 -2.6181620359420776e-01 - <_> - - 0 -1 2624 9.9246148020029068e-03 - - -1.9358970224857330e-02 1.2542679905891418e-01 - <_> - - 0 -1 2625 1.2290390208363533e-02 - - 3.4330211579799652e-02 -3.2864710688591003e-01 - <_> - - 0 -1 2626 2.1256268955767155e-03 - - -7.1797981858253479e-02 6.9216072559356689e-02 - <_> - - 0 -1 2627 2.4960160255432129e-01 - - -1.1238349974155426e-01 1.4298430085182190e-01 - <_> - - 0 -1 2628 -4.9557890743017197e-03 - - 1.3797929883003235e-01 -5.8330990374088287e-02 - <_> - - 0 -1 2629 6.9741107523441315e-02 - - 2.9714699834585190e-02 -3.4425801038742065e-01 - <_> - - 0 -1 2630 8.1527782604098320e-03 - - -4.6951010823249817e-02 7.8247062861919403e-02 - <_> - - 0 -1 2631 1.0349320247769356e-02 - - -6.9432802498340607e-02 1.5855890512466431e-01 - <_> - - 0 -1 2632 6.3299350440502167e-03 - - -3.9910208433866501e-02 1.5249839425086975e-01 - <_> - - 0 -1 2633 3.0955720692873001e-02 - - 4.1943959891796112e-02 -2.3227399587631226e-01 - <_> - - 0 -1 2634 1.2504469603300095e-02 - - -1.8312249332666397e-02 9.9652856588363647e-02 - <_> - - 0 -1 2635 7.4256081134080887e-03 - - -6.2183279544115067e-02 1.6638119518756866e-01 - <_> - - 0 -1 2636 2.0066989585757256e-02 - - 2.2657990455627441e-02 -3.4708911180496216e-01 - <_> - - 0 -1 2637 -5.8288997411727905e-01 - - 2.8628429770469666e-01 -2.9674390330910683e-02 - <_> - - 0 -1 2638 -1.4278849586844444e-02 - - 1.7780199646949768e-01 -2.9107179492712021e-02 - <_> - - 0 -1 2639 5.9483898803591728e-03 - - -5.1461439579725266e-02 2.1336910128593445e-01 - <_> - - 0 -1 2640 -3.7677738815546036e-02 - - -3.6932611465454102e-01 5.7723309844732285e-02 - <_> - - 0 -1 2641 6.5808892250061035e-02 - - 4.0651790797710419e-02 -2.1074700355529785e-01 - <_> - - 0 -1 2642 -2.3132109642028809e-01 - - 4.1835370659828186e-01 -1.2195900082588196e-02 - <_> - - 0 -1 2643 9.2640687944367528e-04 - - -1.4468879997730255e-01 5.8539729565382004e-02 - <_> - - 0 -1 2644 1.0040670167654753e-03 - - -4.4056508690118790e-02 3.3918689936399460e-02 - <_> - - 0 -1 2645 -1.6178250312805176e-02 - - -2.5373190641403198e-01 2.8968360275030136e-02 - <_> - - 0 -1 2646 -6.0239218873903155e-04 - - 4.1323728859424591e-02 -4.0084209293127060e-02 - <_> - - 0 -1 2647 -6.0449438169598579e-03 - - 1.4372240006923676e-01 -4.7170829027891159e-02 - <_> - - 0 -1 2648 2.2208129521459341e-03 - - 4.5135390013456345e-02 -1.6863340139389038e-01 - <_> - - 0 -1 2649 -2.5435380637645721e-02 - - 2.7486249804496765e-01 -2.5021070614457130e-02 - <_> - - 0 -1 2650 -9.7569217905402184e-03 - - -3.5105359554290771e-01 6.7487931810319424e-03 - <_> - - 0 -1 2651 -5.8798119425773621e-03 - - -2.3652760684490204e-01 2.9202800244092941e-02 - <_> - - 0 -1 2652 1.7566860187798738e-03 - - -9.9007412791252136e-02 5.2369870245456696e-02 - <_> - - 0 -1 2653 -7.4273318052291870e-02 - - -2.6232570409774780e-01 3.2476898282766342e-02 - <_> - - 0 -1 2654 3.1107749789953232e-02 - - -3.1739011406898499e-02 1.9744929671287537e-01 - <_> - - 0 -1 2655 6.3703872263431549e-02 - - 2.6871459558606148e-02 -2.7673950791358948e-01 - <_> - - 0 -1 2656 -4.7539241611957550e-02 - - -4.0510261058807373e-01 1.2222040444612503e-02 - <_> - - 0 -1 2657 -3.5632580984383821e-03 - - -1.9992919266223907e-01 3.3539909869432449e-02 - <_> - - 0 -1 2658 -2.6527589187026024e-02 - - -1.6290059685707092e-01 2.7833169326186180e-02 - <_> - - 0 -1 2659 2.8048178553581238e-01 - - 2.8810590505599976e-02 -2.2711829841136932e-01 - <_> - - 0 -1 2660 4.5591941475868225e-01 - - -2.2757180035114288e-02 3.1029689311981201e-01 - <_> - - 0 -1 2661 8.6748532950878143e-02 - - 7.2686396539211273e-02 -1.0276269912719727e-01 - <_> - - 0 -1 2662 1.6994470497593284e-03 - - -3.1809408217668533e-02 8.7146088480949402e-02 - <_> - - 0 -1 2663 -1.1253879638388753e-03 - - 6.8066433072090149e-02 -1.2390069663524628e-01 - <_> - - 0 -1 2664 5.0872150808572769e-02 - - -8.7517164647579193e-03 3.1184211373329163e-01 - <_> - - 0 -1 2665 1.9961729645729065e-01 - - -3.0910549685359001e-02 2.1652880311012268e-01 - <_> - - 0 -1 2666 -6.3838690519332886e-02 - - -6.0265827178955078e-01 1.3233360368758440e-03 - <_> - - 0 -1 2667 6.3007958233356476e-03 - - -5.2063349634408951e-02 1.2607939541339874e-01 - <_> - - 0 -1 2668 5.6697470135986805e-03 - - 9.0780286118388176e-03 -1.9445329904556274e-01 - <_> - - 0 -1 2669 1.4293550048023462e-03 - - -8.5781432688236237e-02 7.1289457380771637e-02 - <_> - - 0 -1 2670 1.3812010176479816e-02 - - 8.0618355423212051e-03 -3.8797891139984131e-01 - <_> - - 0 -1 2671 2.3739310563541949e-05 - - -6.2491171061992645e-02 1.0920929908752441e-01 - <_> - - 0 -1 2672 -3.9398381486535072e-03 - - 5.0932329148054123e-02 -1.4980320632457733e-01 - <_> - - 0 -1 2673 -1.2358880043029785e-01 - - 3.1476518511772156e-01 -2.5759879499673843e-02 - <_> - - 0 -1 2674 -1.0957430116832256e-02 - - -2.6074820756912231e-01 1.5849729999899864e-02 - <_> - - 0 -1 2675 -7.6301600784063339e-03 - - 2.6100659370422363e-01 -2.4329889565706253e-02 - <_> - - 0 -1 2676 -6.7839071154594421e-02 - - 1.9691309332847595e-01 -8.3496840670704842e-03 - <_> - - 0 -1 2677 1.8607309088110924e-02 - - 2.5603959336876869e-02 -2.5413629412651062e-01 - <_> - - 0 -1 2678 -5.8711939345812425e-05 - - 3.5625811666250229e-02 -4.1084211319684982e-02 - <_> - - 0 -1 2679 8.3914608694612980e-05 - - -1.3061410188674927e-01 4.9393389374017715e-02 - <_> - - 0 -1 2680 1.7734190449118614e-02 - - -3.4273520112037659e-02 1.2126860022544861e-01 - <_> - - 0 -1 2681 6.8113701418042183e-03 - - 2.2671220824122429e-02 -2.6590269804000854e-01 - <_> - - 0 -1 2682 4.5482560992240906e-02 - - -6.1395200900733471e-03 4.7231659293174744e-01 - <_> - - 0 -1 2683 -7.0767141878604889e-03 - - -3.1650930643081665e-01 2.0036390051245689e-02 - <_> - - 0 -1 2684 7.3222210630774498e-04 - - -2.2880610078573227e-02 6.4724266529083252e-02 - <_> - - 0 -1 2685 -3.2817400060594082e-03 - - 2.5166231393814087e-01 -2.3168640211224556e-02 - <_> - - 0 -1 2686 -4.6115890145301819e-02 - - -3.5920459032058716e-01 1.5987880527973175e-02 - <_> - - 0 -1 2687 1.0526889935135841e-02 - - 9.6597811207175255e-03 -5.8308398723602295e-01 - <_> - - 0 -1 2688 2.1888600662350655e-02 - - 2.8070888947695494e-03 -2.9022130370140076e-01 - <_> - - 0 -1 2689 -3.7969578988850117e-03 - - 2.6823088526725769e-01 -2.2035770118236542e-02 - <_> - - 0 -1 2690 2.9150590300559998e-02 - - 3.7061858922243118e-02 -9.7243040800094604e-02 - <_> - - 0 -1 2691 7.9669371247291565e-02 - - -6.1300739645957947e-02 1.0794749855995178e-01 - <_> - - 0 -1 2692 -2.7629170566797256e-02 - - 2.2528949379920959e-01 -3.2572429627180099e-02 - <_> - - 0 -1 2693 -1.2017980217933655e-02 - - 1.0100489854812622e-01 -6.6461361944675446e-02 - <_> - - 0 -1 2694 -1.1925140395760536e-02 - - -1.8590609729290009e-01 3.2485559582710266e-02 - <_> - - 0 -1 2695 2.5123509764671326e-01 - - -2.4892140179872513e-02 2.8030058741569519e-01 - <_> - - 0 -1 2696 6.9036600179970264e-03 - - -6.2898851931095123e-02 3.1777821481227875e-02 - <_> - - 0 -1 2697 5.3575318306684494e-02 - - -1.2439640238881111e-02 4.6091410517692566e-01 - <_> - - 0 -1 2698 -9.4652660191059113e-03 - - 8.4103047847747803e-02 -1.1300220340490341e-01 - <_> - - 0 -1 2699 1.8469220399856567e-01 - - 2.1576140075922012e-02 -2.6910570263862610e-01 - <_> - - 0 -1 2700 -1.1816070228815079e-01 - - -4.7206339240074158e-01 9.0096276253461838e-03 - <_> - - 0 -1 2701 3.6900841223541647e-05 - - -5.8833159506320953e-02 9.9453382194042206e-02 - <_> - - 0 -1 2702 -1.6330610215663910e-01 - - -6.0990130901336670e-01 1.3118899660184979e-03 - <_> - - 0 -1 2703 -9.6555590629577637e-02 - - -5.2723962068557739e-01 1.1668589897453785e-02 - <_> - - 0 -1 2704 4.0162451565265656e-02 - - -3.2783899456262589e-02 1.8107770383358002e-01 - <_> - - 0 -1 2705 -2.9686940833926201e-02 - - 1.0548429936170578e-01 -6.1513308435678482e-02 - <_> - - 0 -1 2706 7.5436946644913405e-05 - - -3.5980768501758575e-02 4.9934450536966324e-02 - <_> - - 0 -1 2707 2.0552529022097588e-03 - - 2.7518209069967270e-02 -2.4573980271816254e-01 - <_> - - 0 -1 2708 2.3879110813140869e-05 - - -2.5809049606323242e-02 2.9950719326734543e-02 - <_> - - 0 -1 2709 -5.0713717937469482e-03 - - -2.0639109611511230e-01 3.2002601772546768e-02 - <_> - - 0 -1 2710 -4.8216218128800392e-03 - - -9.7566813230514526e-02 5.5109240114688873e-02 - <_> - - 0 -1 2711 6.5210692584514618e-02 - - 6.3420450314879417e-03 -7.8828340768814087e-01 - <_> - - 0 -1 2712 1.5821969136595726e-02 - - -2.1475680172443390e-02 1.2227129936218262e-01 - <_> - - 0 -1 2713 -3.0075939372181892e-02 - - 3.7011429667472839e-01 -1.5476689673960209e-02 - <_> - - 0 -1 2714 -5.5496598361060023e-04 - - 4.1431929916143417e-02 -1.2144719809293747e-01 - <_> - - 0 -1 2715 -2.4754840880632401e-02 - - -3.5262298583984375e-01 1.5344849787652493e-02 - <_> - - 0 -1 2716 -8.7477359920740128e-03 - - 1.9155359268188477e-01 -2.2537950426340103e-02 - <_> - - 0 -1 2717 -3.5500800004228950e-04 - - -8.4604002535343170e-02 6.5341651439666748e-02 - <_> - - 0 -1 2718 -5.7884451001882553e-02 - - 2.5973668694496155e-01 -2.1083710715174675e-02 - <_> - - 0 -1 2719 3.7522350903600454e-03 - - 3.1614970415830612e-02 -1.8795000016689301e-01 - <_> - - 0 -1 2720 2.0266280625946820e-04 - - -4.8824269324541092e-02 4.7762241214513779e-02 - <_> - - 0 -1 2721 -1.7959989607334137e-02 - - -1.8358300626277924e-01 2.7057379484176636e-02 - <_> - - 0 -1 2722 -5.1200438290834427e-02 - - 2.7234628796577454e-01 -1.9954629242420197e-02 - <_> - - 0 -1 2723 -7.3698651976883411e-03 - - -1.2299379706382751e-01 4.5279439538717270e-02 - <_> - - 0 -1 2724 -8.1579107791185379e-04 - - 4.6081308275461197e-02 -2.1206410601735115e-02 - <_> - - 0 -1 2725 7.7019751188345253e-05 - - -1.1223869770765305e-01 4.6719830483198166e-02 - <_> - - 0 -1 2726 3.3753409981727600e-02 - - -2.9694780707359314e-02 3.0958639457821846e-02 - <_> - - 0 -1 2727 2.8879839926958084e-02 - - -4.7609180212020874e-02 1.6370640695095062e-01 - <_> - - 0 -1 2728 -1.3803930580615997e-01 - - -7.4509102106094360e-01 2.3958049714565277e-03 - <_> - - 0 -1 2729 9.0306542813777924e-02 - - 2.8410099446773529e-02 -2.0606000721454620e-01 - <_> - - 0 -1 2730 1.3130649924278259e-01 - - 5.8837989345192909e-03 -2.5894629955291748e-01 - <_> - - 0 -1 2731 1.3623699545860291e-01 - - 1.8490679562091827e-02 -2.9096630215644836e-01 - <_> - - 0 -1 2732 1.1483960552141070e-03 - - -2.5334190577268600e-02 8.1962920725345612e-02 - <_> - - 0 -1 2733 7.0390116889029741e-05 - - -6.5080173313617706e-02 8.2337766885757446e-02 - <_> - - 0 -1 2734 -5.8111059479415417e-03 - - -2.0126000046730042e-01 1.4183170162141323e-02 - <_> - - 0 -1 2735 -1.2150090187788010e-02 - - 2.1021689474582672e-01 -2.9711810871958733e-02 - <_> - - 0 -1 2736 4.3220389634370804e-03 - - 2.2152660414576530e-02 -1.9705900549888611e-01 - <_> - - 0 -1 2737 4.6673179604113102e-03 - - 2.2342119365930557e-02 -2.6342189311981201e-01 - <_> - - 0 -1 2738 -1.3583960244432092e-03 - - 7.3765449225902557e-02 -1.7833979800343513e-02 - <_> - - 0 -1 2739 -5.0764158368110657e-03 - - -1.7490370571613312e-01 2.9997769743204117e-02 - <_> - - 0 -1 2740 1.9497750326991081e-03 - - -2.7114750817418098e-02 1.6166089475154877e-01 - <_> - - 0 -1 2741 -2.5937429163604975e-03 - - 1.8078009784221649e-01 -2.7191480621695518e-02 - <_> - - 0 -1 2742 -2.1715890616178513e-02 - - 9.6041858196258545e-02 -5.2243158221244812e-02 - <_> - - 0 -1 2743 -2.5649809686001390e-05 - - 8.3050042390823364e-02 -6.1770558357238770e-02 - <_> - - 0 -1 2744 9.8641996737569571e-04 - - -2.4684209376573563e-02 9.7191460430622101e-02 - <_> - - 0 -1 2745 2.3739310563541949e-05 - - -6.9555416703224182e-02 7.7152892947196960e-02 - <_> - - 0 -1 2746 -1.0910170152783394e-02 - - -2.5444790720939636e-01 1.6135040670633316e-02 - <_> - - 0 -1 2747 5.6066219258354977e-05 - - -7.6400838792324066e-02 7.0996761322021484e-02 - <_> - - 0 -1 2748 2.7718160301446915e-02 - - 7.7127898111939430e-03 -3.0201679468154907e-01 - <_> - - 0 -1 2749 4.3827071785926819e-03 - - -3.4336760640144348e-02 1.3955120742321014e-01 - <_> - - 0 -1 2750 -3.7561710923910141e-02 - - -4.5689418911933899e-01 1.1854999698698521e-02 - <_> - - 0 -1 2751 1.3753259554505348e-02 - - -8.3447448909282684e-02 5.9472300112247467e-02 - <_> - - 0 -1 2752 -2.7579799294471741e-02 - - 2.1291820704936981e-01 -2.3054409772157669e-02 - <_> - - 0 -1 2753 -4.0822759270668030e-02 - - -5.0263231992721558e-01 1.0639879852533340e-02 - <_> - - 0 -1 2754 1.4743439853191376e-01 - - 7.7440468594431877e-03 -1.8454490602016449e-01 - <_> - - 0 -1 2755 -1.9371560215950012e-01 - - 4.6490699052810669e-01 -1.4074579812586308e-02 - <_> - - 0 -1 2756 -4.1467480361461639e-02 - - -1.3331499695777893e-01 3.1722411513328552e-02 - <_> - - 0 -1 2757 2.1617549937218428e-03 - - 3.4888401627540588e-02 -1.1983960121870041e-01 - <_> - - 0 -1 2758 -2.8305849991738796e-03 - - -2.1483750641345978e-01 2.5539120659232140e-02 - <_> - - 0 -1 2759 -1.0838639922440052e-02 - - 3.3803048729896545e-01 -1.3591179624199867e-02 - <_> - - 0 -1 2760 2.1821239497512579e-03 - - -3.1135229393839836e-02 8.3679892122745514e-02 - <_> - - 0 -1 2761 6.8489680415950716e-05 - - -1.5453560650348663e-01 3.3053979277610779e-02 - <_> - - 0 -1 2762 5.2545121870934963e-03 - - -2.9414970427751541e-02 1.6506220400333405e-01 - <_> - - 0 -1 2763 7.5199748389422894e-03 - - 2.3363400250673294e-02 -2.1771569550037384e-01 - <_> - - 0 -1 2764 -4.5123990625143051e-02 - - -3.2536029815673828e-01 1.3281660154461861e-02 - <_> - - 0 -1 2765 -2.0451450254768133e-03 - - 9.5804646611213684e-02 -5.0993110984563828e-02 - <_> - - 0 -1 2766 2.9070109594613314e-03 - - -2.7690220624208450e-02 1.9595550000667572e-01 - <_> - - 0 -1 2767 -2.5558389723300934e-02 - - -2.7625438570976257e-01 2.1147929131984711e-02 - <_> - - 0 -1 2768 2.6447090785950422e-03 - - -3.2627500593662262e-02 4.1240271180868149e-02 - <_> - - 0 -1 2769 2.8334530725260265e-05 - - -8.4877587854862213e-02 5.5865898728370667e-02 - <_> - - 0 -1 2770 6.6109612816944718e-04 - - -3.2827850431203842e-02 7.4010983109474182e-02 - <_> - - 0 -1 2771 2.0918789505958557e-01 - - 1.0018980130553246e-02 -4.7411561012268066e-01 - <_> - - 0 -1 2772 -6.0340400523273274e-05 - - 4.8323448747396469e-02 -3.2779499888420105e-02 - <_> - - 0 -1 2773 6.6149746999144554e-05 - - -7.4969246983528137e-02 6.1952129006385803e-02 - <_> - - 0 -1 2774 -5.1479000831022859e-04 - - -9.4924032688140869e-02 3.5300780087709427e-02 - <_> - - 0 -1 2775 7.3261340148746967e-03 - - 3.8502220064401627e-02 -1.4840659499168396e-01 - <_> - - 0 -1 2776 2.4439459666609764e-02 - - -1.3411019928753376e-02 1.8843680620193481e-01 - <_> - - 0 -1 2777 4.1021420620381832e-03 - - -4.9980189651250839e-02 1.0747750103473663e-01 - <_> - - 0 -1 2778 -2.2003119811415672e-03 - - 1.5202569961547852e-01 -1.0413169860839844e-02 - <_> - - 0 -1 2779 -6.3748419051989913e-05 - - 8.3184726536273956e-02 -7.3027476668357849e-02 - <_> - - 0 -1 2780 1.6917420551180840e-02 - - 2.2687980905175209e-02 -1.7060829699039459e-01 - <_> - - 0 -1 2781 2.3382799699902534e-03 - - -5.9908460825681686e-02 8.6580373346805573e-02 - <_> - - 0 -1 2782 3.5319819580763578e-03 - - 3.3012930303812027e-02 -1.5926639735698700e-01 - <_> - - 0 -1 2783 8.2293795421719551e-03 - - -7.6026521623134613e-02 7.5319997966289520e-02 - <_> - - 0 -1 2784 -4.1300300508737564e-02 - - -6.1095607280731201e-01 2.1895230747759342e-03 - <_> - - 0 -1 2785 -4.3179420754313469e-03 - - 1.4404989778995514e-01 -3.8870800286531448e-02 - <_> - - 0 -1 2786 4.7153229388641194e-05 - - -4.9817599356174469e-02 4.8768520355224609e-02 - <_> - - 0 -1 2787 7.9003963037393987e-05 - - -6.8322107195854187e-02 6.8077176809310913e-02 - <_> - - 0 -1 2788 -6.0340400523273274e-05 - - 5.1328659057617188e-02 -3.5550858825445175e-02 - <_> - - 0 -1 2789 -5.1807070121867582e-05 - - 8.4212273359298706e-02 -5.4924808442592621e-02 - <_> - - 0 -1 2790 4.7213859856128693e-02 - - 2.3352450225502253e-03 -3.4417921304702759e-01 - <_> - - 0 -1 2791 -4.0626591071486473e-03 - - -1.8419119715690613e-01 2.5720769539475441e-02 - <_> - - 0 -1 2792 -2.2785339504480362e-02 - - -1.3962119817733765e-01 1.2151359580457211e-02 - <_> - - 0 -1 2793 -7.5854226946830750e-02 - - 1.1256880313158035e-01 -3.9203669875860214e-02 - <_> - - 0 -1 2794 7.5154039077460766e-03 - - -1.9784659147262573e-02 5.8735560625791550e-02 - <_> - - 0 -1 2795 3.1700478866696358e-03 - - -5.4245430976152420e-02 9.0264856815338135e-02 - <_> - - 0 -1 2796 3.2852489966899157e-03 - - -5.4539371281862259e-02 9.0909533202648163e-02 - <_> - - 0 -1 2797 -9.3818716704845428e-02 - - -4.8168069124221802e-01 9.7587006166577339e-03 - <_> - - 0 -1 2798 -6.3132712966762483e-05 - - 4.1089840233325958e-02 -3.6543939262628555e-02 - <_> - - 0 -1 2799 -1.9857510924339294e-02 - - -1.1721470206975937e-01 4.0564559400081635e-02 - <_> - - 0 -1 2800 6.7911748774349689e-03 - - 6.4080609008669853e-03 -3.2277610898017883e-01 - <_> - - 0 -1 2801 -8.9469276368618011e-02 - - -3.5741510987281799e-01 1.2498370371758938e-02 - <_> - - 0 -1 2802 7.4639841914176941e-03 - - -1.9977200776338577e-02 1.8343879282474518e-01 - <_> - - 0 -1 2803 3.5889059305191040e-01 - - 1.1032329872250557e-02 -5.5673301219940186e-01 - <_> - - 0 -1 2804 -2.8839880600571632e-02 - - 1.9993069767951965e-01 -8.9885722845792770e-03 - <_> - - 0 -1 2805 1.3966220431029797e-03 - - -4.3905839323997498e-02 1.1055959761142731e-01 - <_> - - 0 -1 2806 -8.6227077990770340e-03 - - -4.3030598759651184e-01 4.9329511821269989e-03 - <_> - - 0 -1 2807 8.1372596323490143e-03 - - 6.1173681169748306e-03 -7.0870321989059448e-01 - <_> - - 0 -1 2808 -5.2080889872740954e-05 - - 5.4686058312654495e-02 -4.8987131565809250e-02 - <_> - - 0 -1 2809 -6.2907347455620766e-05 - - 7.7754616737365723e-02 -5.9795960783958435e-02 - <_> - - 0 -1 2810 -2.2601069882512093e-02 - - -1.1791110038757324e-01 7.3637152090668678e-03 - <_> - - 0 -1 2811 -4.6634320169687271e-03 - - 7.5231060385704041e-02 -5.7572990655899048e-02 - <_> - - 0 -1 2812 -4.7270618379116058e-03 - - 7.1065858006477356e-02 -8.5967883467674255e-02 - <_> - - 0 -1 2813 7.2711610794067383e-01 - - 1.0272890329360962e-02 -4.6845859289169312e-01 - <_> - - 0 -1 2814 -3.0634279828518629e-03 - - 1.0827480256557465e-01 -2.3178070783615112e-02 - <_> - - 0 -1 2815 5.1220320165157318e-02 - - 1.0082930326461792e-02 -4.6223670244216919e-01 - <_> - - 0 -1 2816 -2.3362249135971069e-02 - - 2.2211229801177979e-01 -2.0499259233474731e-02 - <_> - - 0 -1 2817 2.2698229178786278e-02 - - -1.1409649997949600e-01 4.1347719728946686e-02 - <_> - - 0 -1 2818 3.2806419767439365e-03 - - -2.2716879844665527e-02 1.0286050289869308e-01 - <_> - - 0 -1 2819 3.5968020092695951e-03 - - 2.1161420270800591e-02 -2.0680260658264160e-01 - <_> - - 0 -1 2820 -1.2049609795212746e-02 - - -2.6006719470024109e-01 2.0481001120060682e-03 - <_> - - 0 -1 2821 -2.6617539115250111e-03 - - 1.5578770637512207e-01 -3.2414011657238007e-02 - <_> - - 0 -1 2822 -1.4739999547600746e-02 - - -1.6306230425834656e-01 7.1668480522930622e-03 - <_> - - 0 -1 2823 -7.0214703679084778e-02 - - 3.6760380864143372e-01 -1.2261849828064442e-02 - <_> - - 0 -1 2824 -1.1493829637765884e-01 - - -4.1006609797477722e-01 1.1137899942696095e-02 - <_> - - 0 -1 2825 -1.6535300761461258e-02 - - -4.9331170320510864e-01 8.9259371161460876e-03 - <_> - - 0 -1 2826 -6.8457737565040588e-02 - - -6.2944388389587402e-01 1.3810090022161603e-03 - <_> - - 0 -1 2827 1.7950909677892923e-03 - - 4.3995179235935211e-02 -9.8123088479042053e-02 - <_> - - 0 -1 2828 9.2409765347838402e-03 - - -3.1927980482578278e-02 7.8624442219734192e-02 - <_> - - 0 -1 2829 1.5084880404174328e-02 - - -6.5231107175350189e-02 8.3552867174148560e-02 - <_> - - 0 -1 2830 -1.4755530282855034e-02 - - 5.9695459902286530e-02 -2.4628980085253716e-02 - <_> - - 0 -1 2831 1.3870550319552422e-02 - - 6.8354210816323757e-03 -6.6978019475936890e-01 - <_> - - 0 -1 2832 8.4027196862734854e-05 - - -3.8849148899316788e-02 5.0546988844871521e-02 - <_> - - 0 -1 2833 -2.3879110813140869e-05 - - 7.7616319060325623e-02 -5.7069089263677597e-02 - <_> - - 0 -1 2834 -3.7118638865649700e-03 - - 5.7683859020471573e-02 -3.6430291831493378e-02 - <_> - - 0 -1 2835 2.9378160834312439e-02 - - 1.1657239869236946e-02 -3.7504649162292480e-01 - <_> - - 0 -1 2836 7.5752860307693481e-01 - - -1.2491280212998390e-02 3.0145660042762756e-01 - <_> - - 0 -1 2837 2.8497090563178062e-02 - - -7.3959968984127045e-02 6.2593862414360046e-02 - <_> - - 0 -1 2838 3.0728369951248169e-02 - - 8.5481833666563034e-03 -2.5127428770065308e-01 - <_> - - 0 -1 2839 3.3614620566368103e-02 - - -1.1441719718277454e-02 4.9361410737037659e-01 - <_> - - 0 -1 2840 -2.2651510313153267e-02 - - 2.0686359703540802e-01 -9.4910562038421631e-03 - <_> - - 0 -1 2841 -5.5092899856390432e-05 - - 6.4360730350017548e-02 -7.2689138352870941e-02 - <_> - - 0 -1 2842 -6.5959710627794266e-03 - - -1.7541189491748810e-01 1.6160210594534874e-02 - <_> - - 0 -1 2843 -6.0941398260183632e-05 - - 7.5048670172691345e-02 -5.2823100239038467e-02 - <_> - - 0 -1 2844 2.5904899302986450e-05 - - -4.9739658832550049e-02 5.8573901653289795e-02 - <_> - - 0 -1 2845 5.0394570280332118e-05 - - -6.1880309134721756e-02 6.6674813628196716e-02 - <_> - - 0 -1 2846 1.2553679756820202e-02 - - 2.4910740554332733e-02 -1.2772439420223236e-01 - <_> - - 0 -1 2847 5.8084350079298019e-02 - - -1.7822250723838806e-02 2.2898909449577332e-01 - <_> - - 0 -1 2848 8.0750687047839165e-03 - - -2.2753600031137466e-02 1.4363150298595428e-01 - <_> - - 0 -1 2849 1.2163340114057064e-02 - - 2.6754619553685188e-02 -1.8255999684333801e-01 - <_> - - 0 -1 2850 -1.5941649908199906e-03 - - 9.9438779056072235e-02 -2.3783439770340919e-02 - <_> - - 0 -1 2851 -1.2085849791765213e-01 - - -5.9585529565811157e-01 6.8441159091889858e-03 - <_> - - 0 -1 2852 8.7481532245874405e-03 - - -2.2079860791563988e-02 2.6656690239906311e-01 - <_> - - 0 -1 2853 1.6135359182953835e-02 - - 6.7850813269615173e-02 -7.7386163175106049e-02 - <_> - - 0 -1 2854 2.2907149791717529e-01 - - -3.5378839820623398e-02 4.8707369714975357e-02 - <_> - - 0 -1 2855 5.0671470165252686e-01 - - 5.8341762050986290e-03 -6.6830587387084961e-01 - <_> - - 0 -1 2856 -3.5818759351968765e-02 - - -2.6823309063911438e-01 1.7747150268405676e-03 - <_> - - 0 -1 2857 -2.6501350104808807e-02 - - -3.0137398838996887e-01 1.3973710127174854e-02 - <_> - - 0 -1 2858 2.4797840043902397e-02 - - 2.4552580434828997e-03 -5.9522122144699097e-01 - <_> - - 0 -1 2859 1.6543349483981729e-03 - - -2.5125969201326370e-02 1.9396910071372986e-01 - <_> - - 0 -1 2860 7.0274528115987778e-03 - - 2.0404130220413208e-02 -5.3175788372755051e-02 - <_> - - 0 -1 2861 7.4207589030265808e-02 - - 1.2462070211768150e-02 -3.3352059125900269e-01 - <_> - - 0 -1 2862 -2.3010969161987305e-03 - - -1.4958749711513519e-01 2.0109549164772034e-02 - <_> - - 0 -1 2863 1.3790120137855411e-03 - - 3.3377520740032196e-02 -1.2395989894866943e-01 - <_> - - 0 -1 2864 8.2677090167999268e-01 - - 4.6560140326619148e-03 -7.6405769586563110e-01 - <_> - - 0 -1 2865 2.9461461305618286e-01 - - -1.5230939723551273e-02 3.1044191122055054e-01 - <_> - - 0 -1 2866 7.4683561921119690e-02 - - 8.8676074519753456e-03 -5.2286827564239502e-01 - <_> - - 0 -1 2867 8.8000342249870300e-02 - - -1.1935940012335777e-02 4.0419429540634155e-01 - <_> - - 0 -1 2868 5.3336159326136112e-03 - - 1.3640279881656170e-02 -2.4479709565639496e-01 - <_> - - 0 -1 2869 -5.4324131458997726e-02 - - -3.3548229932785034e-01 1.1758499778807163e-02 - <_> - - 0 -1 2870 3.2561250030994415e-02 - - 1.3724969467148185e-03 -3.3259418606758118e-01 - <_> - - 0 -1 2871 4.8455069772899151e-03 - - -3.6367859691381454e-02 1.3941270112991333e-01 - <_> - - 0 -1 2872 -9.4578228890895844e-03 - - -1.5179359912872314e-01 7.1280989795923233e-03 - <_> - - 0 -1 2873 6.5718130208551884e-03 - - 1.6051219776272774e-02 -2.5226241350173950e-01 - <_> - - 0 -1 2874 2.3467710241675377e-02 - - 6.1246878467500210e-03 -2.3419499397277832e-01 - <_> - - 0 -1 2875 1.7358670011162758e-03 - - -3.9614859968423843e-02 1.2166520208120346e-01 - <_> - - 0 -1 2876 8.0753577640280128e-04 - - -2.6527570560574532e-02 3.9102729409933090e-02 - <_> - - 0 -1 2877 -5.5824369192123413e-03 - - -1.0073930025100708e-01 3.7261690944433212e-02 - <_> - - 0 -1 2878 -2.6079979725182056e-03 - - 7.4016816914081573e-02 -1.0955180041491985e-02 - <_> - - 0 -1 2879 6.9571033236570656e-05 - - -8.5262916982173920e-02 6.4489983022212982e-02 - <_> - - 0 -1 2880 8.1941768527030945e-02 - - 2.0980359986424446e-03 -6.1844950914382935e-01 - <_> - - 0 -1 2881 1.9427090883255005e-02 - - -2.2283710539340973e-02 1.9918359816074371e-01 - <_> - - 0 -1 2882 -1.5077610313892365e-01 - - -6.4394700527191162e-01 7.0817708037793636e-03 - <_> - - 0 -1 2883 -1.5093310503289104e-03 - - -1.0650269687175751e-01 3.7576910108327866e-02 - <_> - - 0 -1 2884 3.6287561058998108e-02 - - 6.2272557988762856e-04 -1.0000269412994385e+00 - <_> - - 0 -1 2885 -1.7432459862902761e-03 - - 8.2987606525421143e-02 -5.1900088787078857e-02 - <_> - - 0 -1 2886 -6.1345883295871317e-05 - - 4.1130200028419495e-02 -3.9763219654560089e-02 - <_> - - 0 -1 2887 2.6694999178289436e-05 - - -5.7489451020956039e-02 7.6786473393440247e-02 - <_> - - 0 -1 2888 2.4684870368218981e-05 - - -3.3249299973249435e-02 6.0841768980026245e-02 - <_> - - 0 -1 2889 -2.1666070446372032e-02 - - -4.2399600148200989e-01 9.5887510105967522e-03 - <_> - - 0 -1 2890 6.5124082565307617e-01 - - -1.3923630118370056e-02 2.0358699560165405e-01 - <_> - - 0 -1 2891 -8.1125432625412941e-03 - - 4.7284670174121857e-02 -8.7794028222560883e-02 - <_> - - 0 -1 2892 8.7661407887935638e-03 - - 3.6122149322181940e-04 -4.6132668852806091e-01 - <_> - - 0 -1 2893 5.6974760809680447e-05 - - -5.4080601781606674e-02 8.7679319083690643e-02 - <_> - - 0 -1 2894 8.2681202911771834e-05 - - -3.6107949912548065e-02 4.0353108197450638e-02 - <_> - - 0 -1 2895 3.6902779247611761e-03 - - 3.2845668494701385e-02 -1.7654460668563843e-01 - <_> - - 0 -1 2896 -2.4884620215743780e-03 - - -1.1169090121984482e-01 3.8092769682407379e-02 - <_> - - 0 -1 2897 6.1029191128909588e-03 - - -2.1872300654649734e-02 2.1474809944629669e-01 - <_> - - 0 -1 2898 8.4216389805078506e-03 - - 2.5033319368958473e-02 -1.0524729639291763e-01 - <_> - - 0 -1 2899 -1.1277659796178341e-02 - - -1.2068639695644379e-01 3.6691870540380478e-02 - <_> - - 0 -1 2900 -2.5908139068633318e-03 - - 4.8961970955133438e-02 -2.7112780138850212e-02 - <_> - - 0 -1 2901 3.9354357868432999e-03 - - -4.8803329467773438e-02 9.1594167053699493e-02 - <_> - - 0 -1 2902 -5.7140849530696869e-03 - - 6.5281033515930176e-02 -5.4428141564130783e-02 - <_> - - 0 -1 2903 7.5044799596071243e-03 - - 4.0455900132656097e-02 -1.0016919672489166e-01 - <_> - - 0 -1 2904 3.6039410624653101e-03 - - -4.8441201448440552e-02 4.4366039335727692e-02 - <_> - - 0 -1 2905 -1.4248499646782875e-02 - - -1.8958659470081329e-01 2.2379109635949135e-02 - <_> - - 0 -1 2906 1.0746859759092331e-01 - - -1.4573340304195881e-02 1.8533800542354584e-01 - <_> - - 0 -1 2907 6.5448340028524399e-03 - - 3.0963949859142303e-02 -1.5456229448318481e-01 - <_> - - 0 -1 2908 4.0558791160583496e-01 - - -1.0606770403683186e-02 9.3066513538360596e-02 - <_> - - 0 -1 2909 4.5041620731353760e-01 - - -1.1917609721422195e-02 3.7239480018615723e-01 - <_> - - 0 -1 2910 1.0484869480133057e+00 - - 2.4846600368618965e-02 -2.0550209283828735e-01 - <_> - - 0 -1 2911 -3.1736500561237335e-02 - - 1.8238979578018188e-01 -2.0837070420384407e-02 - <_> - - 0 -1 2912 1.0162170231342316e-01 - - 1.5214960090816021e-02 -2.8738000988960266e-01 - <_> - - 0 -1 2913 1.6911029815673828e-03 - - -2.7203610166907310e-02 1.5361389517784119e-01 - <_> - - 0 -1 2914 -5.5090200155973434e-02 - - 4.0182009339332581e-01 -2.6924409903585911e-03 - <_> - - 0 -1 2915 -6.6355741582810879e-03 - - -1.0399519652128220e-01 3.9930969476699829e-02 - <_> - - 0 -1 2916 -2.8234618902206421e-01 - - -6.5735298395156860e-01 2.2085180971771479e-03 - <_> - - 0 -1 2917 3.5606080293655396e-01 - - 8.8273994624614716e-03 -4.1840550303459167e-01 - <_> - - 0 -1 2918 2.8794088866561651e-03 - - -4.7702580690383911e-02 4.8619240522384644e-02 - <_> - - 0 -1 2919 -3.4571390599012375e-02 - - -1.6541080176830292e-01 3.2450839877128601e-02 - <_> - - 0 -1 2920 7.0021182298660278e-02 - - 7.1347500197589397e-03 -5.1421910524368286e-01 - <_> - - 0 -1 2921 -2.5386309251189232e-02 - - -1.2876220047473907e-01 2.9181970283389091e-02 - <_> - - 0 -1 2922 7.7927471138536930e-03 - - 3.8529869168996811e-02 -4.9483839422464371e-02 - <_> - - 0 -1 2923 1.4281559735536575e-02 - - 5.6447219103574753e-03 -7.0385247468948364e-01 - <_> - - 0 -1 2924 2.3879110813140869e-05 - - -4.2018178850412369e-02 4.4230289757251740e-02 - <_> - - 0 -1 2925 -3.5789560060948133e-03 - - 4.6143290400505066e-01 -9.7652971744537354e-03 - <_> - - 0 -1 2926 -6.9024448748677969e-05 - - 5.0133138895034790e-02 -5.8964539319276810e-02 - <_> - - 0 -1 2927 -3.0192299745976925e-03 - - -1.9493819773197174e-01 2.4710690602660179e-02 - <_> - - 0 -1 2928 -2.5278010871261358e-03 - - 8.3505026996135712e-02 -2.5268739089369774e-02 - <_> - - 0 -1 2929 1.7980269622057676e-03 - - -4.8482459038496017e-02 9.4311736524105072e-02 - <_> - - 0 -1 2930 -2.2690620273351669e-02 - - -2.9978820681571960e-01 2.2890099789947271e-03 - <_> - - 0 -1 2931 1.4375130413100123e-03 - - -6.2439408153295517e-02 7.5290091335773468e-02 - <_> - - 0 -1 2932 8.2696974277496338e-03 - - -3.0353950336575508e-02 8.8089391589164734e-02 - <_> - - 0 -1 2933 -1.5055939555168152e-01 - - 1.9413860142230988e-01 -2.2772220894694328e-02 - <_> - - 0 -1 2934 1.7811149591580033e-03 - - -6.0310248285531998e-02 2.0073890686035156e-02 - <_> - - 0 -1 2935 4.7450647689402103e-03 - - -5.1879990845918655e-02 7.4092343449592590e-02 - <_> - - 0 -1 2936 -3.9645358920097351e-03 - - -1.2223859876394272e-01 1.8484760075807571e-02 - <_> - - 0 -1 2937 2.1129579842090607e-01 - - 6.9678751751780510e-03 -6.3405531644821167e-01 - <_> - - 0 -1 2938 6.7932292819023132e-02 - - 1.1238300241529942e-02 -2.9897838830947876e-01 - <_> - - 0 -1 2939 3.5460498929023743e-01 - - 1.0820729658007622e-02 -4.0180310606956482e-01 - <_> - - 0 -1 2940 6.7880570888519287e-02 - - -9.0837832540273666e-03 2.8558140993118286e-01 - <_> - - 0 -1 2941 2.3179009556770325e-02 - - 1.2033659964799881e-02 -3.4283030033111572e-01 - <_> - - 0 -1 2942 -2.5018129497766495e-02 - - 1.6851060092449188e-01 -1.4854829758405685e-02 - <_> - - 0 -1 2943 1.0846500284969807e-02 - - -4.9866069108247757e-02 9.1330289840698242e-02 - <_> - - 0 -1 2944 6.7432790994644165e-02 - - -6.7176923155784607e-02 5.2287008613348007e-02 - <_> - - 0 -1 2945 -1.0400989651679993e-01 - - 2.1269090473651886e-01 -1.9635310396552086e-02 - <_> - - 0 -1 2946 -1.9552459940314293e-02 - - -8.5949383676052094e-02 1.0878560133278370e-02 - <_> - - 0 -1 2947 -1.0041260393336415e-03 - - -8.8146753609180450e-02 5.3349688649177551e-02 - <_> - - 0 -1 2948 3.1779510900378227e-03 - - -2.5708079338073730e-02 1.2620189785957336e-01 - <_> - - 0 -1 2949 -5.1974221132695675e-03 - - -1.4909990131855011e-01 2.5734230875968933e-02 - <_> - - 0 -1 2950 -8.4385536611080170e-03 - - 1.7627319693565369e-01 -1.7336180433630943e-02 - <_> - - 0 -1 2951 6.3723679631948471e-03 - - -2.8829930350184441e-02 1.6014620661735535e-01 - <_> - - 0 -1 2952 6.4913480309769511e-04 - - 2.5060750544071198e-02 -6.8481996655464172e-02 - <_> - - 0 -1 2953 -2.3739310563541949e-05 - - 5.9776719659566879e-02 -6.9079458713531494e-02 - <_> - - 0 -1 2954 2.1902309730648994e-02 - - 1.5800049528479576e-02 -2.5902339816093445e-01 - <_> - - 0 -1 2955 -2.3225650191307068e-02 - - -1.5240189433097839e-01 3.4358970820903778e-02 - <_> - - 0 -1 2956 1.7396999523043633e-02 - - -4.4514410197734833e-02 8.6146168410778046e-02 - <_> - - 0 -1 2957 -4.3821102008223534e-03 - - -6.5594673156738281e-02 7.0031292736530304e-02 - <_> - - 0 -1 2958 -5.2271839231252670e-02 - - -8.4593230485916138e-01 4.0736538358032703e-03 - <_> - - 0 -1 2959 -2.6945039280690253e-05 - - 7.1103386580944061e-02 -5.6970071047544479e-02 - <_> - - 0 -1 2960 7.3246699757874012e-03 - - 1.0148160159587860e-02 -1.6495819389820099e-01 - <_> - - 0 -1 2961 7.9648941755294800e-02 - - 4.9309800378978252e-03 -7.3935991525650024e-01 - <_> - - 0 -1 2962 2.5645719841122627e-02 - - -9.9361119791865349e-03 1.9573490321636200e-01 - <_> - - 0 -1 2963 -2.1517710760235786e-02 - - -3.7398171424865723e-01 1.0564680211246014e-02 - <_> - - 0 -1 2964 3.1084879301488400e-03 - - -2.3289280012249947e-02 4.4452898204326630e-02 - <_> - - 0 -1 2965 -2.0305790007114410e-02 - - 1.8450389802455902e-01 -2.2041650488972664e-02 - <_> - - 0 -1 2966 -2.3073209740687162e-04 - - -4.2533028870820999e-02 4.0534239262342453e-02 - <_> - - 0 -1 2967 5.1654567942023277e-03 - - 1.9550900906324387e-02 -2.7522230148315430e-01 - <_> - - 0 -1 2968 -1.3373889960348606e-02 - - -1.0676769912242889e-01 1.5713090077042580e-02 - <_> - - 0 -1 2969 -3.0557509511709213e-02 - - -4.9036020040512085e-01 8.4824627265334129e-03 - <_> - - 0 -1 2970 -4.4938637875020504e-03 - - 2.4587419629096985e-01 -7.3765181005001068e-03 - <_> - - 0 -1 2971 1.5328789595514536e-03 - - -2.1998360753059387e-02 1.7105750739574432e-01 - <_> - - 0 -1 2972 2.8464570641517639e-02 - - -4.4271750375628471e-03 3.7864500284194946e-01 - <_> - - 0 -1 2973 -3.6278439220041037e-03 - - -1.1943010240793228e-01 3.6387339234352112e-02 - <_> - - 0 -1 2974 6.5880590118467808e-03 - - 4.7421031631529331e-03 -2.3040629923343658e-01 - <_> - - 0 -1 2975 -1.7257609870284796e-03 - - -1.5124620497226715e-01 2.4530509486794472e-02 - <_> - - 0 -1 2976 -4.0079229511320591e-03 - - 1.1795750260353088e-01 -2.8455309569835663e-02 - <_> - - 0 -1 2977 6.0597620904445648e-03 - - -1.5942880883812904e-02 2.6349261403083801e-01 - <_> - - 0 -1 2978 1.0206180065870285e-01 - - 2.2873809561133385e-02 -1.7569309473037720e-01 - <_> - - 0 -1 2979 -5.3605949506163597e-03 - - -2.8432789444923401e-01 1.3539279811084270e-02 - <_> - - 0 -1 2980 1.3634009519591928e-03 - - 1.5016339719295502e-02 -2.1692469716072083e-01 - <_> - - 0 -1 2981 -5.1867151341866702e-05 - - 7.1595683693885803e-02 -5.9194121509790421e-02 - <_> - - 0 -1 2982 5.5599510669708252e-03 - - -5.0443381071090698e-02 2.4631209671497345e-02 - <_> - - 0 -1 2983 -8.1721879541873932e-03 - - 1.4858539402484894e-01 -3.2055098563432693e-02 - <_> - - 0 -1 2984 -5.1187299191951752e-02 - - -2.5399059057235718e-01 6.8093240261077881e-03 - <_> - - 0 -1 2985 4.0242701768875122e-02 - - 7.3603428900241852e-03 -5.3896129131317139e-01 - <_> - - 0 -1 2986 -8.6354929953813553e-03 - - 2.0159240067005157e-01 -1.6828190535306931e-02 - <_> - - 0 -1 2987 6.2959326896816492e-05 - - -5.4412890225648880e-02 7.3297880589962006e-02 - <_> - 377 - -1.0771520137786865e+00 - - <_> - - 0 -1 2988 -4.6584438532590866e-02 - - 3.9758908748626709e-01 -1.0487789660692215e-01 - <_> - - 0 -1 2989 -1.3546080328524113e-02 - - 1.0160709917545319e-01 -6.0582119971513748e-02 - <_> - - 0 -1 2990 2.1240619942545891e-02 - - -2.1520909667015076e-01 9.9192880094051361e-02 - <_> - - 0 -1 2991 -6.8675312213599682e-03 - - 3.4559080004692078e-01 -2.7297310531139374e-02 - <_> - - 0 -1 2992 1.8874719971790910e-03 - - -6.2646366655826569e-02 2.2028639912605286e-01 - <_> - - 0 -1 2993 -9.6648931503295898e-03 - - 1.2642039358615875e-01 -2.9440899379551411e-03 - <_> - - 0 -1 2994 5.7599171996116638e-03 - - -6.4545191824436188e-02 2.1166889369487762e-01 - <_> - - 0 -1 2995 4.2604688555002213e-02 - - 8.1665478646755219e-02 -2.2115150094032288e-01 - <_> - - 0 -1 2996 1.1809020070359111e-03 - - 5.3782589733600616e-02 -2.1832549571990967e-01 - <_> - - 0 -1 2997 2.5866830721497536e-02 - - -3.4579040948301554e-03 -2.2809159755706787e-01 - <_> - - 0 -1 2998 -1.3024089857935905e-02 - - -2.3362639546394348e-01 4.5519679784774780e-02 - <_> - - 0 -1 2999 -2.6178720872849226e-05 - - 6.3058510422706604e-02 -3.5777151584625244e-02 - <_> - - 0 -1 3000 3.8649858906865120e-03 - - 4.1308909654617310e-02 -2.1261259913444519e-01 - <_> - - 0 -1 3001 -4.3429462239146233e-03 - - 1.0967259854078293e-01 -6.7377433180809021e-02 - <_> - - 0 -1 3002 3.2463369425386190e-03 - - -5.9912640601396561e-02 2.4788300693035126e-01 - <_> - - 0 -1 3003 -4.4672209769487381e-02 - - -1.3787649571895599e-01 7.5812488794326782e-03 - <_> - - 0 -1 3004 -5.9697840362787247e-02 - - -3.7201279401779175e-01 2.4332780390977859e-02 - <_> - - 0 -1 3005 -9.9666267633438110e-03 - - 7.4087321758270264e-02 -1.2867400050163269e-01 - <_> - - 0 -1 3006 1.1090090265497565e-03 - - -4.5063789933919907e-02 1.9852949678897858e-01 - <_> - - 0 -1 3007 1.9137640297412872e-01 - - 1.6608469188213348e-02 -4.0662389993667603e-01 - <_> - - 0 -1 3008 2.9130840674042702e-02 - - 3.6106731742620468e-02 -2.1135319769382477e-01 - <_> - - 0 -1 3009 -3.9123510941863060e-03 - - -1.3715060055255890e-01 3.1154200434684753e-02 - <_> - - 0 -1 3010 1.0206189937889576e-02 - - 2.9056249186396599e-02 -2.5032269954681396e-01 - <_> - - 0 -1 3011 -5.4421171545982361e-02 - - -3.6787760257720947e-01 4.9542388878762722e-03 - <_> - - 0 -1 3012 1.0504369623959064e-02 - - -3.9119478315114975e-02 1.7866680026054382e-01 - <_> - - 0 -1 3013 -3.8903228938579559e-02 - - -1.1156520247459412e-01 4.9485109746456146e-02 - <_> - - 0 -1 3014 -3.0581050086766481e-03 - - 1.1854489892721176e-01 -6.5253503620624542e-02 - <_> - - 0 -1 3015 1.2071110308170319e-02 - - 1.6908379271626472e-02 -4.6089250594377518e-02 - <_> - - 0 -1 3016 -3.6121580749750137e-02 - - -2.8585109114646912e-01 2.7392070740461349e-02 - <_> - - 0 -1 3017 -7.0450740167871118e-05 - - 8.1192217767238617e-02 -8.5339479148387909e-02 - <_> - - 0 -1 3018 -6.1475399881601334e-02 - - -3.0502641201019287e-01 2.1672610193490982e-02 - <_> - - 0 -1 3019 1.2384360283613205e-01 - - -8.6616817861795425e-03 9.5883563160896301e-02 - <_> - - 0 -1 3020 -1.3729789853096008e-01 - - 3.2487779855728149e-01 -2.7384700253605843e-02 - <_> - - 0 -1 3021 -3.7660130858421326e-01 - - 6.9512300193309784e-02 -8.7510026991367340e-02 - <_> - - 0 -1 3022 -1.0428489744663239e-01 - - -1.7433910071849823e-01 4.6572308987379074e-02 - <_> - - 0 -1 3023 1.5377249568700790e-02 - - 7.2437077760696411e-03 -3.7064689397811890e-01 - <_> - - 0 -1 3024 1.0340980254113674e-02 - - 1.9599150866270065e-02 -3.5058119893074036e-01 - <_> - - 0 -1 3025 2.6178720872849226e-05 - - -3.7143740803003311e-02 4.6319041401147842e-02 - <_> - - 0 -1 3026 -5.1104918384226039e-05 - - 7.5019650161266327e-02 -9.5568731427192688e-02 - <_> - - 0 -1 3027 1.2594480067491531e-03 - - -3.6140341311693192e-02 1.4024050533771515e-01 - <_> - - 0 -1 3028 -4.4775051064789295e-03 - - 1.1984299868345261e-01 -5.5974781513214111e-02 - <_> - - 0 -1 3029 -2.5892409030348063e-03 - - 2.0983800292015076e-01 -2.1606909111142159e-02 - <_> - - 0 -1 3030 2.8334530725260265e-05 - - -6.4645819365978241e-02 1.1007639765739441e-01 - <_> - - 0 -1 3031 4.9330651760101318e-02 - - -3.4308250993490219e-02 1.0559219866991043e-01 - <_> - - 0 -1 3032 -3.1046869116835296e-04 - - 3.8028620183467865e-02 -2.0678110420703888e-01 - <_> - - 0 -1 3033 1.1290919966995716e-02 - - -4.3023418635129929e-02 1.6977259516716003e-01 - <_> - - 0 -1 3034 -1.9364829640835524e-03 - - -1.0826709866523743e-01 6.4394846558570862e-02 - <_> - - 0 -1 3035 1.3304199278354645e-01 - - -1.0764880105853081e-02 3.0249550938606262e-01 - <_> - - 0 -1 3036 -1.2178049981594086e-01 - - -4.0108850598335266e-01 1.9901329651474953e-02 - <_> - - 0 -1 3037 -4.8507350584259257e-05 - - 5.7830650359392166e-02 -5.5416390299797058e-02 - <_> - - 0 -1 3038 8.1427283585071564e-03 - - -1.3038429617881775e-01 5.0446111708879471e-02 - <_> - - 0 -1 3039 2.5049310922622681e-01 - - 4.9552097916603088e-03 -8.4521442651748657e-01 - <_> - - 0 -1 3040 2.9000479262322187e-03 - - -4.8634160310029984e-02 1.3975860178470612e-01 - <_> - - 0 -1 3041 -9.5292963087558746e-03 - - -4.8227089643478394e-01 8.9182211086153984e-03 - <_> - - 0 -1 3042 -1.2608580291271210e-03 - - -1.4396399259567261e-01 4.4625461101531982e-02 - <_> - - 0 -1 3043 6.9864251418039203e-04 - - -5.3468879312276840e-02 4.4480290263891220e-02 - <_> - - 0 -1 3044 5.0955888582393527e-05 - - -9.1091223061084747e-02 6.1559129506349564e-02 - <_> - - 0 -1 3045 -4.2289011180400848e-02 - - -1.4529189467430115e-01 2.2947659716010094e-02 - <_> - - 0 -1 3046 8.3977341651916504e-02 - - 3.7113729864358902e-02 -1.6206559538841248e-01 - <_> - - 0 -1 3047 9.1143082827329636e-03 - - -8.4407972171902657e-03 1.0362890362739563e-01 - <_> - - 0 -1 3048 4.6319790271809325e-05 - - -6.7505158483982086e-02 8.5311636328697205e-02 - <_> - - 0 -1 3049 5.2136087417602539e-01 - - -1.4404560439288616e-02 4.4966968894004822e-01 - <_> - - 0 -1 3050 1.5858359634876251e-02 - - 2.4507109075784683e-02 -2.8061380982398987e-01 - <_> - - 0 -1 3051 9.0295937843620777e-04 - - -1.9777469336986542e-02 5.8223951607942581e-02 - <_> - - 0 -1 3052 -1.6763530438765883e-03 - - -1.5801259875297546e-01 3.4012299031019211e-02 - <_> - - 0 -1 3053 -2.4684870368218981e-05 - - 5.1980741322040558e-02 -3.5259820520877838e-02 - <_> - - 0 -1 3054 2.3879110813140869e-05 - - -7.7739536762237549e-02 7.5770601630210876e-02 - <_> - - 0 -1 3055 5.9450380504131317e-03 - - -1.0767629742622375e-01 4.7342531383037567e-02 - <_> - - 0 -1 3056 -3.3886708319187164e-02 - - 2.5395831465721130e-01 -2.6396760717034340e-02 - <_> - - 0 -1 3057 5.5312961339950562e-03 - - -2.7721639722585678e-02 2.3233540356159210e-01 - <_> - - 0 -1 3058 -6.0472032055258751e-03 - - -1.7387150228023529e-01 3.4561499953269958e-02 - <_> - - 0 -1 3059 -3.1955521553754807e-02 - - -1.9199980422854424e-02 3.0842060223221779e-02 - <_> - - 0 -1 3060 9.0737096965312958e-02 - - 7.7871060930192471e-03 -7.5864750146865845e-01 - <_> - - 0 -1 3061 -1.2445859611034393e-02 - - 1.4370959997177124e-01 -1.0477649979293346e-02 - <_> - - 0 -1 3062 1.1301520280539989e-02 - - -1.3221940398216248e-01 4.0967330336570740e-02 - <_> - - 0 -1 3063 -1.0558320209383965e-02 - - -3.3963328599929810e-01 1.2630919925868511e-02 - <_> - - 0 -1 3064 4.6060150489211082e-03 - - -3.5319130867719650e-02 1.5813319385051727e-01 - <_> - - 0 -1 3065 -3.0661260709166527e-02 - - -5.8793282508850098e-01 9.6826143562793732e-03 - <_> - - 0 -1 3066 -6.2674311921000481e-03 - - -1.9762620329856873e-01 2.6928830891847610e-02 - <_> - - 0 -1 3067 1.2989880051463842e-03 - - -2.9124230146408081e-02 7.6282523572444916e-02 - <_> - - 0 -1 3068 4.8161852173507214e-03 - - 1.8022129312157631e-02 -2.9259270429611206e-01 - <_> - - 0 -1 3069 -4.4622411951422691e-03 - - 4.8554401844739914e-02 -4.6847470104694366e-02 - <_> - - 0 -1 3070 -4.9135680455947295e-05 - - 8.1215217709541321e-02 -6.3379563391208649e-02 - <_> - - 0 -1 3071 5.0573139451444149e-03 - - 1.4097140170633793e-02 -2.0685930550098419e-01 - <_> - - 0 -1 3072 1.3823669869452715e-03 - - -4.2655818164348602e-02 1.1541669815778732e-01 - <_> - - 0 -1 3073 -4.0184449404478073e-02 - - -2.9843661189079285e-01 1.7463730648159981e-02 - <_> - - 0 -1 3074 7.0384680293500423e-03 - - -5.2195250988006592e-02 9.4690658152103424e-02 - <_> - - 0 -1 3075 -5.6935990869533271e-05 - - 5.0736121833324432e-02 -1.2229949980974197e-01 - <_> - - 0 -1 3076 5.9834190324181691e-05 - - -6.1534628272056580e-02 8.2193866372108459e-02 - <_> - - 0 -1 3077 2.3980330675840378e-02 - - 8.9948609471321106e-02 -5.3157258778810501e-02 - <_> - - 0 -1 3078 1.9857319071888924e-02 - - -2.9017150402069092e-02 1.9026429951190948e-01 - <_> - - 0 -1 3079 -1.8872609734535217e-01 - - -1.8916009366512299e-01 9.1472929343581200e-03 - <_> - - 0 -1 3080 -5.3056180477142334e-03 - - 5.9502270072698593e-02 -1.1066360026597977e-01 - <_> - - 0 -1 3081 1.7961669713258743e-02 - - 6.9341547787189484e-03 -2.9351618885993958e-01 - <_> - - 0 -1 3082 4.4897631742060184e-03 - - 3.4544911235570908e-02 -1.4389620721340179e-01 - <_> - - 0 -1 3083 -1.3780979812145233e-01 - - 6.6656690835952759e-01 -7.6799020171165466e-03 - <_> - - 0 -1 3084 2.5066170841455460e-02 - - 2.7024639770388603e-02 -1.8130689859390259e-01 - <_> - - 0 -1 3085 -6.6011329181492329e-03 - - -4.7107979655265808e-02 5.3564820438623428e-02 - <_> - - 0 -1 3086 4.4634088873863220e-02 - - -5.8299250900745392e-02 8.5404127836227417e-02 - <_> - - 0 -1 3087 -2.0959110930562019e-02 - - 1.7154890298843384e-01 -3.0249819159507751e-02 - <_> - - 0 -1 3088 4.8691190779209137e-02 - - 2.1405220031738281e-02 -2.3135960102081299e-01 - <_> - - 0 -1 3089 3.3477138727903366e-02 - - -1.7535399645566940e-02 2.0705880224704742e-01 - <_> - - 0 -1 3090 -1.5782449394464493e-02 - - 2.0446999371051788e-01 -2.9454570263624191e-02 - <_> - - 0 -1 3091 2.1625500172376633e-02 - - -1.2141889892518520e-02 2.5204500555992126e-01 - <_> - - 0 -1 3092 -5.1940139383077621e-03 - - -1.2218979746103287e-01 4.5143280178308487e-02 - <_> - - 0 -1 3093 -3.1310278922319412e-02 - - 2.8687921166419983e-01 -8.2902582362294197e-03 - <_> - - 0 -1 3094 1.5542740002274513e-02 - - 2.7400100603699684e-02 -2.0353409647941589e-01 - <_> - - 0 -1 3095 -5.2836928516626358e-03 - - 5.4194588214159012e-02 -2.4016149342060089e-02 - <_> - - 0 -1 3096 -6.4056441187858582e-03 - - 1.3316440582275391e-01 -4.6583179384469986e-02 - <_> - - 0 -1 3097 -4.7195679508149624e-03 - - -1.0466440021991730e-01 2.9198190197348595e-02 - <_> - - 0 -1 3098 -1.2241840362548828e-02 - - -3.5400021076202393e-01 1.5616860240697861e-02 - <_> - - 0 -1 3099 -3.4770739730447531e-03 - - 4.7154370695352554e-02 -3.7254210561513901e-02 - <_> - - 0 -1 3100 1.8311959505081177e-01 - - -4.9684889614582062e-02 1.2035690248012543e-01 - <_> - - 0 -1 3101 -1.3658869266510010e-01 - - -2.2701020538806915e-01 8.3362739533185959e-03 - <_> - - 0 -1 3102 -4.4932749122381210e-02 - - 7.9606711864471436e-02 -6.9477088749408722e-02 - <_> - - 0 -1 3103 -1.0785179911181331e-03 - - 1.1147390305995941e-01 -3.0282339081168175e-02 - <_> - - 0 -1 3104 -8.6406682385131717e-04 - - -1.4347119629383087e-01 3.7838041782379150e-02 - <_> - - 0 -1 3105 1.4584630262106657e-03 - - -2.7251800522208214e-02 1.5474230051040649e-01 - <_> - - 0 -1 3106 -1.8864479660987854e-01 - - 1.7952759563922882e-01 -3.0425619333982468e-02 - <_> - - 0 -1 3107 -9.0535402705427259e-05 - - 3.7944830954074860e-02 -3.4926921129226685e-02 - <_> - - 0 -1 3108 -9.8015682306140661e-04 - - 1.4717060327529907e-01 -3.5082500427961349e-02 - <_> - - 0 -1 3109 -1.2613929808139801e-02 - - -2.3039579391479492e-01 2.6101479306817055e-02 - <_> - - 0 -1 3110 5.1353210437810048e-05 - - -7.3191367089748383e-02 7.0723876357078552e-02 - <_> - - 0 -1 3111 -1.1017440119758248e-03 - - 1.0001300275325775e-01 -1.9991559907793999e-02 - <_> - - 0 -1 3112 2.3879110813140869e-05 - - -7.3069721460342407e-02 7.6998889446258545e-02 - <_> - - 0 -1 3113 -8.5628936067223549e-03 - - 5.3870048373937607e-02 -8.1171043217182159e-02 - <_> - - 0 -1 3114 2.4042169749736786e-01 - - -1.4012940227985382e-02 5.0366157293319702e-01 - <_> - - 0 -1 3115 5.4416628554463387e-03 - - 2.5490989908576012e-02 -1.2167359888553619e-01 - <_> - - 0 -1 3116 1.2384300120174885e-02 - - 1.2509509921073914e-02 -3.8121658563613892e-01 - <_> - - 0 -1 3117 9.6918210387229919e-02 - - -1.2539669871330261e-02 1.0202600061893463e-01 - <_> - - 0 -1 3118 1.2472909688949585e-01 - - 8.6807161569595337e-03 -6.0219871997833252e-01 - <_> - - 0 -1 3119 5.1862320106010884e-05 - - -6.0201589018106461e-02 6.4894728362560272e-02 - <_> - - 0 -1 3120 -5.2220391808077693e-05 - - 7.8609548509120941e-02 -6.0117799788713455e-02 - <_> - - 0 -1 3121 -2.3879110813140869e-05 - - 7.9572148621082306e-02 -5.4761201143264771e-02 - <_> - - 0 -1 3122 2.4684870368218981e-05 - - -7.5995661318302155e-02 8.9526608586311340e-02 - <_> - - 0 -1 3123 6.6632673144340515e-02 - - 1.1696009896695614e-02 -3.8171160221099854e-01 - <_> - - 0 -1 3124 2.0522400736808777e-03 - - -3.4895081073045731e-02 1.3413290679454803e-01 - <_> - - 0 -1 3125 -3.9307191036641598e-03 - - -6.6283293068408966e-02 2.9610849916934967e-02 - <_> - - 0 -1 3126 1.2441479600965977e-02 - - 1.5905169770121574e-02 -3.2050350308418274e-01 - <_> - - 0 -1 3127 3.8802489638328552e-02 - - -1.5245269984006882e-02 6.3629612326622009e-02 - <_> - - 0 -1 3128 -6.3351631979458034e-05 - - 6.1788670718669891e-02 -7.1749016642570496e-02 - <_> - - 0 -1 3129 -2.4020129814743996e-02 - - 2.4262709915637970e-01 -8.7506501004099846e-03 - <_> - - 0 -1 3130 6.7699998617172241e-03 - - -3.3120978623628616e-02 1.4404219388961792e-01 - <_> - - 0 -1 3131 -1.6888360679149628e-01 - - 3.5152590274810791e-01 -7.1931672282516956e-03 - <_> - - 0 -1 3132 -6.7578062415122986e-02 - - -2.2686310112476349e-01 2.5602210313081741e-02 - <_> - - 0 -1 3133 -1.1355879716575146e-02 - - -6.2450700998306274e-01 2.5642369873821735e-03 - <_> - - 0 -1 3134 7.7880248427391052e-02 - - 7.9159401357173920e-03 -5.6059461832046509e-01 - <_> - - 0 -1 3135 -2.9031829908490181e-03 - - 9.4153687357902527e-02 -4.9611900001764297e-02 - <_> - - 0 -1 3136 -2.4730090517550707e-03 - - 1.0858210176229477e-01 -5.3893819451332092e-02 - <_> - - 0 -1 3137 3.8511860184371471e-03 - - 2.3423779755830765e-02 -1.3090899586677551e-01 - <_> - - 0 -1 3138 -2.2390179801732302e-03 - - -2.1743249893188477e-01 2.4435719475150108e-02 - <_> - - 0 -1 3139 7.3695750907063484e-03 - - -2.4774579331278801e-02 1.1588659882545471e-01 - <_> - - 0 -1 3140 -4.6323970891535282e-03 - - 1.2989379465579987e-01 -3.8149699568748474e-02 - <_> - - 0 -1 3141 1.9922649487853050e-02 - - 1.5869069844484329e-02 -1.8562960624694824e-01 - <_> - - 0 -1 3142 1.6726849600672722e-02 - - 1.6922770440578461e-01 -3.2117698341608047e-02 - <_> - - 0 -1 3143 -1.4559989795088768e-03 - - 7.2710826992988586e-02 -5.3102489560842514e-02 - <_> - - 0 -1 3144 1.4368960261344910e-01 - - -1.0999070107936859e-01 6.3211508095264435e-02 - <_> - - 0 -1 3145 -5.9681031852960587e-03 - - 8.5351467132568359e-02 -3.1996998935937881e-02 - <_> - - 0 -1 3146 8.6067931260913610e-04 - - -6.7739866673946381e-02 7.8335791826248169e-02 - <_> - - 0 -1 3147 2.2462129127234221e-03 - - 4.2138159275054932e-02 -1.5379780530929565e-01 - <_> - - 0 -1 3148 -2.3184010758996010e-02 - - 2.3559680581092834e-01 -2.2087629884481430e-02 - <_> - - 0 -1 3149 8.3518847532104701e-05 - - -4.9133669584989548e-02 3.5325560718774796e-02 - <_> - - 0 -1 3150 -2.2380428854376078e-03 - - 1.7978920042514801e-01 -2.4958169087767601e-02 - <_> - - 0 -1 3151 -3.6487199831753969e-03 - - -4.8889059573411942e-02 1.5720760449767113e-02 - <_> - - 0 -1 3152 2.4686430115252733e-03 - - 3.4214280545711517e-02 -1.3692939281463623e-01 - <_> - - 0 -1 3153 -1.7901340499520302e-02 - - 2.0170210301876068e-01 -5.8616171590983868e-03 - <_> - - 0 -1 3154 5.4372870363295078e-04 - - -8.1766016781330109e-02 5.7825129479169846e-02 - <_> - - 0 -1 3155 7.2202371666207910e-04 - - 2.4502370506525040e-02 -6.1022099107503891e-02 - <_> - - 0 -1 3156 -3.6474859807640314e-03 - - -1.4141079783439636e-01 3.6404989659786224e-02 - <_> - - 0 -1 3157 7.3206011438742280e-04 - - -4.3659660965204239e-02 4.8195239156484604e-02 - <_> - - 0 -1 3158 3.1086079776287079e-02 - - 3.6769669502973557e-02 -1.4276769757270813e-01 - <_> - - 0 -1 3159 -6.9447411224246025e-03 - - 3.5043680667877197e-01 -7.0687229745090008e-03 - <_> - - 0 -1 3160 6.0204358305782080e-05 - - -1.2189149856567383e-01 4.1316650807857513e-02 - <_> - - 0 -1 3161 3.6609929054975510e-02 - - 1.9925929605960846e-02 -9.8471991717815399e-02 - <_> - - 0 -1 3162 -1.0960429906845093e-02 - - 1.2811520695686340e-01 -3.8388188928365707e-02 - <_> - - 0 -1 3163 -2.3295450955629349e-03 - - 7.0760749280452728e-02 -2.8919460251927376e-02 - <_> - - 0 -1 3164 6.1855830252170563e-02 - - -4.7587100416421890e-02 9.8586358129978180e-02 - <_> - - 0 -1 3165 -2.3475209251046181e-02 - - 8.6964562535285950e-02 -1.2254109606146812e-02 - <_> - - 0 -1 3166 -9.3669712077826262e-04 - - 8.1251077353954315e-02 -5.4221849888563156e-02 - <_> - - 0 -1 3167 -1.3151890039443970e-01 - - -1.5397280454635620e-01 1.0072549805045128e-02 - <_> - - 0 -1 3168 8.8957380503416061e-03 - - 3.1962350010871887e-02 -1.3615429401397705e-01 - <_> - - 0 -1 3169 -8.2765902334358543e-05 - - 5.3280740976333618e-02 -5.5038310587406158e-02 - <_> - - 0 -1 3170 2.0361710339784622e-03 - - 3.5483650863170624e-02 -1.2068919837474823e-01 - <_> - - 0 -1 3171 2.8764940798282623e-03 - - -2.7869360521435738e-02 1.0440739989280701e-01 - <_> - - 0 -1 3172 -9.9125062115490437e-04 - - 9.7983770072460175e-02 -5.9333961457014084e-02 - <_> - - 0 -1 3173 3.0070789158344269e-02 - - 1.6433039680123329e-02 -9.3353606760501862e-02 - <_> - - 0 -1 3174 -5.2220391808077693e-05 - - 7.5220681726932526e-02 -5.7729821652173996e-02 - <_> - - 0 -1 3175 -1.4955939352512360e-01 - - -5.7173091173171997e-01 7.4865440838038921e-03 - <_> - - 0 -1 3176 -1.0101850144565105e-02 - - 1.8661679327487946e-01 -2.6581920683383942e-02 - <_> - - 0 -1 3177 -2.3593820631504059e-02 - - -3.6165231466293335e-01 8.6832279339432716e-03 - <_> - - 0 -1 3178 -5.6298989802598953e-02 - - 3.8091570138931274e-01 -1.2540389783680439e-02 - <_> - - 0 -1 3179 4.8374498874181882e-05 - - -3.7239558994770050e-02 4.3505970388650894e-02 - <_> - - 0 -1 3180 7.3194838478229940e-05 - - -5.7480230927467346e-02 8.0166891217231750e-02 - <_> - - 0 -1 3181 -2.2648379206657410e-02 - - -9.1465108096599579e-02 6.0311011038720608e-03 - <_> - - 0 -1 3182 7.5446818955242634e-03 - - 2.7741640806198120e-02 -1.7181250452995300e-01 - <_> - - 0 -1 3183 -1.0577409714460373e-01 - - 5.3441429138183594e-01 -5.1590129733085632e-03 - <_> - - 0 -1 3184 4.4444771483540535e-03 - - 3.4301549196243286e-02 -1.4514839649200439e-01 - <_> - - 0 -1 3185 5.6781400926411152e-03 - - -4.3091170489788055e-02 1.4633339643478394e-01 - <_> - - 0 -1 3186 -1.0109309852123260e-01 - - -1.7478010058403015e-01 2.8068430721759796e-02 - <_> - - 0 -1 3187 -4.7357238829135895e-02 - - 1.6704539954662323e-01 -1.5818670392036438e-02 - <_> - - 0 -1 3188 -5.7674032449722290e-01 - - -6.2243127822875977e-01 7.9542007297277451e-03 - <_> - - 0 -1 3189 1.8059749854728580e-03 - - -1.6442989930510521e-02 4.6261239796876907e-02 - <_> - - 0 -1 3190 1.4680040068924427e-02 - - 8.1173582002520561e-03 -5.5666857957839966e-01 - <_> - - 0 -1 3191 -1.6897849738597870e-01 - - -3.1401479244232178e-01 1.2572989799082279e-02 - <_> - - 0 -1 3192 -1.9389929249882698e-02 - - 1.5510299801826477e-01 -2.7996309101581573e-02 - <_> - - 0 -1 3193 -2.6446670293807983e-02 - - -3.1462061405181885e-01 1.7393559217453003e-02 - <_> - - 0 -1 3194 -4.5732469297945499e-03 - - -1.3583140075206757e-01 3.7665959447622299e-02 - <_> - - 0 -1 3195 7.8531084582209587e-03 - - -3.6102959420531988e-03 1.8964889645576477e-01 - <_> - - 0 -1 3196 2.7107769710710272e-05 - - -8.4309861063957214e-02 5.4540161043405533e-02 - <_> - - 0 -1 3197 -2.0377049222588539e-02 - - 1.1659640073776245e-01 -1.3695999979972839e-02 - <_> - - 0 -1 3198 1.7351469397544861e-01 - - -1.2655749917030334e-02 3.5746860504150391e-01 - <_> - - 0 -1 3199 5.4228559136390686e-02 - - 9.2725036665797234e-03 -1.7699269950389862e-01 - <_> - - 0 -1 3200 5.4582608863711357e-03 - - -4.3747000396251678e-02 1.0337469726800919e-01 - <_> - - 0 -1 3201 6.3768923282623291e-02 - - 2.1960640326142311e-02 -2.0528109371662140e-01 - <_> - - 0 -1 3202 1.1216020211577415e-02 - - -6.0158800333738327e-02 7.7689386904239655e-02 - <_> - - 0 -1 3203 3.9365720003843307e-02 - - -2.0138410851359367e-02 1.2760840356349945e-01 - <_> - - 0 -1 3204 -1.6133710741996765e-02 - - 1.1279760301113129e-01 -6.0140721499919891e-02 - <_> - - 0 -1 3205 -1.6923110233619809e-03 - - 2.8056159615516663e-02 -4.9229931086301804e-02 - <_> - - 0 -1 3206 -4.9907790526049212e-05 - - 7.2209537029266357e-02 -5.7712871581315994e-02 - <_> - - 0 -1 3207 8.3856992423534393e-03 - - 4.2978320270776749e-03 -4.8725709319114685e-01 - <_> - - 0 -1 3208 -6.8764640018343925e-03 - - -3.5551750659942627e-01 1.0993010364472866e-02 - <_> - - 0 -1 3209 -7.4763470329344273e-03 - - 1.6195739805698395e-01 -2.6884159073233604e-02 - <_> - - 0 -1 3210 3.8878160994499922e-03 - - -1.1019629985094070e-01 4.0942940860986710e-02 - <_> - - 0 -1 3211 -6.3231296837329865e-02 - - 4.9099159240722656e-01 -5.1781800575554371e-03 - <_> - - 0 -1 3212 -5.6607749313116074e-02 - - 3.7937331199645996e-01 -1.0820900090038776e-02 - <_> - - 0 -1 3213 -2.6267269253730774e-01 - - -4.4802859425544739e-01 1.0556190274655819e-02 - <_> - - 0 -1 3214 -5.4856478527653962e-05 - - 6.5392680466175079e-02 -6.2045000493526459e-02 - <_> - - 0 -1 3215 4.7022080252645537e-05 - - -3.5339221358299255e-02 4.8449590802192688e-02 - <_> - - 0 -1 3216 7.6384996646083891e-05 - - -5.5468279868364334e-02 8.1199139356613159e-02 - <_> - - 0 -1 3217 -1.3491000235080719e-01 - - -5.6497681140899658e-01 5.8416058309376240e-03 - <_> - - 0 -1 3218 -1.7328690737485886e-02 - - 6.8611651659011841e-02 -6.2486048787832260e-02 - <_> - - 0 -1 3219 -1.1590039730072021e-01 - - 3.5991528630256653e-01 -7.0457011461257935e-03 - <_> - - 0 -1 3220 -2.5972709991037846e-03 - - -6.1048980802297592e-02 7.2908006608486176e-02 - <_> - - 0 -1 3221 -5.8517122268676758e-01 - - 1.7067320644855499e-01 -2.7490269392728806e-02 - <_> - - 0 -1 3222 -1.6476539894938469e-02 - - 1.3038930296897888e-01 -3.3192738890647888e-02 - <_> - - 0 -1 3223 -4.7457408159971237e-02 - - 9.3888796865940094e-02 -4.7779250890016556e-02 - <_> - - 0 -1 3224 -7.1776830591261387e-03 - - -1.9722719490528107e-01 2.3815890774130821e-02 - <_> - - 0 -1 3225 8.9368229964748025e-04 - - -3.8510698825120926e-02 1.2537740170955658e-01 - <_> - - 0 -1 3226 -1.5897080302238464e-01 - - 4.2691999673843384e-01 -1.1353019624948502e-02 - <_> - - 0 -1 3227 -1.5724339755252004e-03 - - 1.3034050166606903e-01 -2.9230359941720963e-02 - <_> - - 0 -1 3228 6.2912302382756025e-05 - - -5.3911529481410980e-02 8.9420966804027557e-02 - <_> - - 0 -1 3229 7.9537890851497650e-03 - - 2.9220320284366608e-02 -1.6147419810295105e-01 - <_> - - 0 -1 3230 2.7854310348629951e-02 - - 8.1461891531944275e-03 -5.0107979774475098e-01 - <_> - - 0 -1 3231 -3.0726810917258263e-02 - - -3.9195880293846130e-01 6.9215041585266590e-03 - <_> - - 0 -1 3232 -3.5664699971675873e-02 - - -7.5857192277908325e-01 5.3641172125935555e-03 - <_> - - 0 -1 3233 3.6027681082487106e-02 - - -1.9103139638900757e-02 2.4392929673194885e-01 - <_> - - 0 -1 3234 6.5820151939988136e-04 - - -8.8687792420387268e-02 5.6508339941501617e-02 - <_> - - 0 -1 3235 -1.2858919799327850e-01 - - -1.3470490276813507e-01 1.5026190318167210e-02 - <_> - - 0 -1 3236 -2.5442369282245636e-02 - - -1.9021469354629517e-01 2.1260490640997887e-02 - <_> - - 0 -1 3237 5.1264330744743347e-02 - - -3.6050491034984589e-03 3.7001758813858032e-01 - <_> - - 0 -1 3238 3.2650150358676910e-02 - - -1.3591149821877480e-02 3.2766878604888916e-01 - <_> - - 0 -1 3239 5.5878241546452045e-03 - - -8.4945466369390488e-03 8.9727967977523804e-02 - <_> - - 0 -1 3240 -4.5875091105699539e-02 - - 4.1267889738082886e-01 -9.8934909328818321e-03 - <_> - - 0 -1 3241 5.4674488492310047e-03 - - -3.0802270397543907e-02 6.0756050050258636e-02 - <_> - - 0 -1 3242 1.0691279917955399e-01 - - -3.0546620488166809e-02 1.4703939855098724e-01 - <_> - - 0 -1 3243 5.8234319090843201e-02 - - 1.7207229975610971e-03 -6.0017997026443481e-01 - <_> - - 0 -1 3244 5.4181519895792007e-02 - - 1.1113340035080910e-02 -4.2601078748703003e-01 - <_> - - 0 -1 3245 1.9892099499702454e-01 - - 1.5127729857340455e-03 -6.6665178537368774e-01 - <_> - - 0 -1 3246 -8.3669811487197876e-02 - - -1.5974959731101990e-01 2.5830730795860291e-02 - <_> - - 0 -1 3247 -3.8393560796976089e-02 - - -4.1582900285720825e-01 9.7704501822590828e-03 - <_> - - 0 -1 3248 5.7619191706180573e-02 - - 9.3507859855890274e-03 -4.1870141029357910e-01 - <_> - - 0 -1 3249 4.4033560901880264e-02 - - -4.6378269791603088e-02 9.1974459588527679e-02 - <_> - - 0 -1 3250 2.6608958840370178e-01 - - 1.0085210204124451e-02 -3.8973841071128845e-01 - <_> - - 0 -1 3251 -5.3618479520082474e-02 - - -5.0888961553573608e-01 4.0682330727577209e-03 - <_> - - 0 -1 3252 -6.6047519794665277e-05 - - 6.9126643240451813e-02 -5.9194508939981461e-02 - <_> - - 0 -1 3253 5.5685410188743845e-05 - - -4.0055848658084869e-02 5.4304640740156174e-02 - <_> - - 0 -1 3254 -5.3049330745125189e-05 - - 7.3174417018890381e-02 -5.9858329594135284e-02 - <_> - - 0 -1 3255 -1.2469390407204628e-02 - - -3.1522521376609802e-01 1.1735130101442337e-02 - <_> - - 0 -1 3256 -9.2733606696128845e-02 - - 3.2328981161117554e-01 -1.2764150276780128e-02 - <_> - - 0 -1 3257 5.9549742937088013e-01 - - 8.3142714574933052e-03 -5.6721991300582886e-01 - <_> - - 0 -1 3258 5.3787451982498169e-01 - - -1.4138909988105297e-02 3.2671380043029785e-01 - <_> - - 0 -1 3259 -1.9027920067310333e-01 - - -6.6162157058715820e-01 7.4805710464715958e-03 - <_> - - 0 -1 3260 6.7436046898365021e-02 - - 5.3405929356813431e-03 -5.7537007331848145e-01 - <_> - - 0 -1 3261 -1.7849049763754010e-03 - - 3.4301608800888062e-02 -1.2449859827756882e-01 - <_> - - 0 -1 3262 -1.7916489392518997e-02 - - 2.1311169862747192e-01 -2.1878639236092567e-02 - <_> - - 0 -1 3263 3.4813389647752047e-03 - - 2.6820680126547813e-02 -1.0166029632091522e-01 - <_> - - 0 -1 3264 1.6392209799960256e-03 - - -2.2629670798778534e-02 1.6795350611209869e-01 - <_> - - 0 -1 3265 5.8717228966997936e-05 - - -9.6914820373058319e-02 5.4079819470643997e-02 - <_> - - 0 -1 3266 -1.1430910089984536e-03 - - -9.1304652392864227e-02 4.7841008752584457e-02 - <_> - - 0 -1 3267 -1.2747140228748322e-01 - - 1.2315750122070312e-01 -3.9322629570960999e-02 - <_> - - 0 -1 3268 5.0409889809088781e-05 - - -4.6518798917531967e-02 9.3584999442100525e-02 - <_> - - 0 -1 3269 -7.7158221974968910e-03 - - -6.5466707944869995e-01 3.9967028424143791e-03 - <_> - - 0 -1 3270 2.7107769710710272e-05 - - -6.4025022089481354e-02 6.3265442848205566e-02 - <_> - - 0 -1 3271 1.5383179998025298e-03 - - 2.2635150700807571e-02 -1.9351179897785187e-01 - <_> - - 0 -1 3272 -6.4936917624436319e-05 - - 5.7882208377122879e-02 -7.3858819901943207e-02 - <_> - - 0 -1 3273 1.3653080165386200e-01 - - -1.4967570081353188e-02 2.6669740676879883e-01 - <_> - - 0 -1 3274 1.8993720412254333e-01 - - 1.2506790459156036e-02 -3.5344779491424561e-01 - <_> - - 0 -1 3275 3.1455919146537781e-02 - - 1.8380979076027870e-02 -6.0388348996639252e-02 - <_> - - 0 -1 3276 -2.6903549209237099e-02 - - -2.2182409465312958e-01 1.8634779378771782e-02 - <_> - - 0 -1 3277 -2.5814530253410339e-01 - - -8.0185538530349731e-01 3.8440190837718546e-04 - <_> - - 0 -1 3278 1.5139740705490112e-01 - - 2.6706179603934288e-02 -1.5360879898071289e-01 - <_> - - 0 -1 3279 4.4095158576965332e-02 - - 4.9483109265565872e-02 -1.3220359571278095e-02 - <_> - - 0 -1 3280 1.7376670148223639e-03 - - -2.9610499739646912e-02 1.2741160392761230e-01 - <_> - - 0 -1 3281 6.7472518421709538e-03 - - 3.6909829825162888e-02 -1.8634669482707977e-01 - <_> - - 0 -1 3282 -2.7132511138916016e-01 - - 4.3453308939933777e-01 -9.0847145766019821e-03 - <_> - - 0 -1 3283 4.7428919933736324e-03 - - 1.6645729541778564e-02 -9.9810160696506500e-02 - <_> - - 0 -1 3284 9.8173134028911591e-03 - - -5.5774748325347900e-02 7.1195892989635468e-02 - <_> - - 0 -1 3285 1.1679739691317081e-03 - - -6.7695029079914093e-02 4.1236151009798050e-02 - <_> - - 0 -1 3286 -3.1285739969462156e-03 - - 7.9346306622028351e-02 -6.4487002789974213e-02 - <_> - - 0 -1 3287 -2.1147250663489103e-03 - - -1.0483580082654953e-01 1.4968249946832657e-02 - <_> - - 0 -1 3288 -1.7796000465750694e-03 - - 2.8925609588623047e-01 -1.3443579897284508e-02 - <_> - - 0 -1 3289 -2.1853840351104736e-01 - - -5.6218802928924561e-01 2.4572419933974743e-03 - <_> - - 0 -1 3290 -5.4242029786109924e-02 - - -2.1208059787750244e-01 1.9283739849925041e-02 - <_> - - 0 -1 3291 2.2505840752273798e-03 - - 8.7050450965762138e-03 -4.6989489346742630e-02 - <_> - - 0 -1 3292 2.7368739247322083e-02 - - 5.3823711350560188e-03 -7.3394852876663208e-01 - <_> - - 0 -1 3293 -1.7120830714702606e-02 - - 1.7836299538612366e-01 -7.9886056482791901e-03 - <_> - - 0 -1 3294 5.8321221731603146e-03 - - 1.9390260800719261e-02 -2.0578180253505707e-01 - <_> - - 0 -1 3295 -6.9258757866919041e-04 - - 5.2536159753799438e-02 -3.4893590956926346e-02 - <_> - - 0 -1 3296 2.1873079240322113e-03 - - -3.0892930924892426e-02 1.1824580281972885e-01 - <_> - - 0 -1 3297 -2.6870400179177523e-03 - - -4.7888439148664474e-02 1.0966289788484573e-02 - <_> - - 0 -1 3298 1.7761799972504377e-03 - - 2.8323309496045113e-02 -1.3571000099182129e-01 - <_> - - 0 -1 3299 2.6876769959926605e-02 - - 1.0936670005321503e-02 -1.3214470446109772e-01 - <_> - - 0 -1 3300 -3.9743751287460327e-02 - - -2.7749490737915039e-01 1.4792799949645996e-02 - <_> - - 0 -1 3301 5.1912020891904831e-02 - - -3.0621079728007317e-02 1.3863949477672577e-01 - <_> - - 0 -1 3302 -4.9659938667900860e-05 - - 6.5223008394241333e-02 -6.1120528727769852e-02 - <_> - - 0 -1 3303 2.0899269729852676e-02 - - 1.0013979859650135e-02 -3.7899270653724670e-01 - <_> - - 0 -1 3304 3.4640848636627197e-02 - - -2.3631630465388298e-02 1.6691960394382477e-01 - <_> - - 0 -1 3305 2.8383019380271435e-03 - - 2.2854080423712730e-02 -5.9783868491649628e-02 - <_> - - 0 -1 3306 2.1739569492638111e-03 - - -1.8679669126868248e-02 1.9977539777755737e-01 - <_> - - 0 -1 3307 -1.5048719942569733e-02 - - -3.1850379705429077e-01 3.2470070291310549e-03 - <_> - - 0 -1 3308 -7.0679760538041592e-03 - - -3.4946501255035400e-01 1.1351609602570534e-02 - <_> - - 0 -1 3309 2.0126479864120483e-01 - - -1.5343960374593735e-02 2.7069568634033203e-01 - <_> - - 0 -1 3310 -4.5434191823005676e-02 - - -1.5440119802951813e-01 2.6735989376902580e-02 - <_> - - 0 -1 3311 5.0224931328557432e-05 - - -4.5412018895149231e-02 5.8358419686555862e-02 - <_> - - 0 -1 3312 2.8120330534875393e-03 - - -3.5226300358772278e-02 1.2060999870300293e-01 - <_> - - 0 -1 3313 1.0989969968795776e-01 - - -8.2655288279056549e-03 2.7113300561904907e-01 - <_> - - 0 -1 3314 3.5002671182155609e-02 - - 4.1824929416179657e-02 -1.4443680644035339e-01 - <_> - - 0 -1 3315 5.6986298412084579e-02 - - -4.4864691793918610e-02 9.4764657318592072e-02 - <_> - - 0 -1 3316 -1.9248030148446560e-03 - - 4.3857198208570480e-02 -1.1556690186262131e-01 - <_> - - 0 -1 3317 3.6413230001926422e-02 - - -2.5924969464540482e-02 8.7799377739429474e-02 - <_> - - 0 -1 3318 4.9817138351500034e-03 - - -6.2499199062585831e-02 6.2983013689517975e-02 - <_> - - 0 -1 3319 -1.5732439234852791e-02 - - 1.0918200016021729e-01 -3.5442460328340530e-02 - <_> - - 0 -1 3320 -3.2386161386966705e-02 - - -6.1410897970199585e-01 6.1990139074623585e-03 - <_> - - 0 -1 3321 1.9163029268383980e-02 - - -3.0063120648264885e-03 4.8029029369354248e-01 - <_> - - 0 -1 3322 -6.6093212808482349e-05 - - 5.7336781173944473e-02 -7.1615733206272125e-02 - <_> - - 0 -1 3323 1.1779610067605972e-03 - - 4.7181140631437302e-02 -9.4607576727867126e-02 - <_> - - 0 -1 3324 -1.4855359680950642e-02 - - -1.3877260684967041e-01 3.3843901008367538e-02 - <_> - - 0 -1 3325 -2.3859990760684013e-02 - - 1.9980570673942566e-01 -1.2243060395121574e-02 - <_> - - 0 -1 3326 -7.8580729663372040e-02 - - -4.9618101119995117e-01 9.5836250111460686e-03 - <_> - - 0 -1 3327 -2.8969749808311462e-02 - - 2.0147210359573364e-01 -2.1185049787163734e-02 - <_> - - 0 -1 3328 4.5099250972270966e-02 - - 7.2327218949794769e-03 -5.7577252388000488e-01 - <_> - - 0 -1 3329 3.9302468299865723e-02 - - 2.5572910904884338e-02 -1.4938560128211975e-01 - <_> - - 0 -1 3330 3.8417819887399673e-02 - - 4.3327999301254749e-03 -8.4697937965393066e-01 - <_> - - 0 -1 3331 1.5752380713820457e-02 - - 2.1558489650487900e-02 -9.4584867358207703e-02 - <_> - - 0 -1 3332 6.5488961990922689e-04 - - -1.1371400207281113e-01 3.4283000975847244e-02 - <_> - - 0 -1 3333 6.0493252240121365e-03 - - -1.5399529598653316e-02 1.0828500241041183e-01 - <_> - - 0 -1 3334 3.8006659597158432e-02 - - 8.7194433435797691e-03 -4.5662951469421387e-01 - <_> - - 0 -1 3335 2.2284449078142643e-03 - - -5.4057799279689789e-02 2.0597549155354500e-02 - <_> - - 0 -1 3336 -1.1698610149323940e-02 - - 1.8344320356845856e-01 -2.3553410544991493e-02 - <_> - - 0 -1 3337 -2.3577509447932243e-02 - - -3.3778700232505798e-01 4.2076371610164642e-03 - <_> - - 0 -1 3338 -1.7685960046947002e-03 - - -1.0340850055217743e-01 3.9750009775161743e-02 - <_> - - 0 -1 3339 -6.2674082815647125e-02 - - 2.5634589791297913e-01 -2.6633420493453741e-03 - <_> - - 0 -1 3340 4.9983179196715355e-03 - - -5.9610750526189804e-02 6.8351902067661285e-02 - <_> - - 0 -1 3341 -1.3796079903841019e-02 - - -1.2925280630588531e-01 1.3147160410881042e-02 - <_> - - 0 -1 3342 7.3155229911208153e-03 - - 2.3670859634876251e-02 -1.7314620316028595e-01 - <_> - - 0 -1 3343 1.6057699918746948e-02 - - 2.1099910140037537e-02 -3.6534700542688370e-02 - <_> - - 0 -1 3344 -1.3640339672565460e-01 - - 3.2520669698715210e-01 -1.2592249549925327e-02 - <_> - - 0 -1 3345 -4.3760128319263458e-03 - - -6.8926952779293060e-02 1.2655669823288918e-02 - <_> - - 0 -1 3346 -2.5193709880113602e-02 - - 6.3607120513916016e-01 -6.9624311290681362e-03 - <_> - - 0 -1 3347 -9.9254563450813293e-02 - - -1.6383069753646851e-01 4.0242899209260941e-02 - <_> - - 0 -1 3348 -4.1403169743716717e-03 - - 4.5324161648750305e-02 -9.0439721941947937e-02 - <_> - - 0 -1 3349 -9.2972591519355774e-03 - - 7.3006376624107361e-02 -2.1570960059762001e-02 - <_> - - 0 -1 3350 -6.5849390812218189e-03 - - -1.4133420586585999e-01 3.4721940755844116e-02 - <_> - - 0 -1 3351 8.2593657076358795e-02 - - 2.2461370099335909e-03 -3.3250170946121216e-01 - <_> - - 0 -1 3352 4.4785510748624802e-02 - - -1.6393229365348816e-02 3.1968909502029419e-01 - <_> - - 0 -1 3353 1.4941610395908356e-02 - - -1.3618029654026031e-02 9.1183677315711975e-02 - <_> - - 0 -1 3354 -4.8578871064819396e-04 - - 4.5027341693639755e-02 -9.9143527448177338e-02 - <_> - - 0 -1 3355 -1.0591340251266956e-03 - - 4.3794080615043640e-02 -4.6322930604219437e-02 - <_> - - 0 -1 3356 -1.2409189715981483e-02 - - -1.1891479790210724e-01 4.1725698858499527e-02 - <_> - - 0 -1 3357 -2.0622629672288895e-03 - - 1.3315789401531219e-01 -2.3993510752916336e-02 - <_> - - 0 -1 3358 8.8945101015269756e-04 - - -3.2941568642854691e-02 1.3120089471340179e-01 - <_> - - 0 -1 3359 -1.6302269650623202e-03 - - -5.3911749273538589e-02 1.4448829926550388e-02 - <_> - - 0 -1 3360 7.9654958099126816e-03 - - 1.4407279901206493e-02 -2.6187309622764587e-01 - <_> - - 0 -1 3361 -6.1501268646679819e-05 - - 3.3002119511365891e-02 -2.9767390340566635e-02 - <_> - - 0 -1 3362 -2.0129390060901642e-01 - - -4.9312359094619751e-01 7.3236711323261261e-03 - <_> - - 0 -1 3363 1.2285460252314806e-03 - - 3.4660179167985916e-02 -9.4074666500091553e-02 - <_> - - 0 -1 3364 1.0491379536688328e-02 - - -3.8984928280115128e-02 1.2683519721031189e-01 - - <_> - - <_> - 8 4 4 4 -1. - <_> - 8 4 4 2 2. - 1 - <_> - - <_> - 3 0 12 7 -1. - <_> - 6 0 6 7 2. - <_> - - <_> - 3 5 12 9 -1. - <_> - 3 8 12 3 3. - <_> - - <_> - 6 0 6 8 -1. - <_> - 6 0 3 8 2. - <_> - - <_> - 3 8 12 4 -1. - <_> - 3 10 12 2 2. - <_> - - <_> - 10 1 3 8 -1. - <_> - 10 1 3 4 2. - 1 - <_> - - <_> - 8 1 8 3 -1. - <_> - 8 1 4 3 2. - 1 - <_> - - <_> - 3 0 12 3 -1. - <_> - 3 1 12 1 3. - <_> - - <_> - 8 0 2 3 -1. - <_> - 8 1 2 1 3. - <_> - - <_> - 5 6 11 9 -1. - <_> - 5 9 11 3 3. - <_> - - <_> - 7 1 2 1 -1. - <_> - 8 1 1 1 2. - <_> - - <_> - 9 1 2 1 -1. - <_> - 9 1 1 1 2. - <_> - - <_> - 4 0 9 7 -1. - <_> - 7 0 3 7 3. - <_> - - <_> - 3 7 12 8 -1. - <_> - 3 9 12 4 2. - <_> - - <_> - 2 0 14 14 -1. - <_> - 9 0 7 14 2. - <_> - - <_> - 3 4 12 9 -1. - <_> - 3 7 12 3 3. - <_> - - <_> - 5 3 6 1 -1. - <_> - 8 3 3 1 2. - <_> - - <_> - 9 2 6 4 -1. - <_> - 9 2 3 4 2. - 1 - <_> - - <_> - 9 2 5 6 -1. - <_> - 9 2 5 3 2. - 1 - <_> - - <_> - 10 0 4 9 -1. - <_> - 7 3 4 3 3. - 1 - <_> - - <_> - 8 0 8 4 -1. - <_> - 10 2 4 4 2. - 1 - <_> - - <_> - 3 0 12 1 -1. - <_> - 7 0 4 1 3. - <_> - - <_> - 2 6 14 9 -1. - <_> - 2 9 14 3 3. - <_> - - <_> - 9 0 5 3 -1. - <_> - 9 1 5 1 3. - <_> - - <_> - 4 0 10 2 -1. - <_> - 4 0 5 1 2. - <_> - 9 1 5 1 2. - <_> - - <_> - 6 0 12 14 -1. - <_> - 9 0 6 14 2. - <_> - - <_> - 5 0 6 3 -1. - <_> - 5 1 6 1 3. - <_> - - <_> - 14 0 4 14 -1. - <_> - 14 7 4 7 2. - <_> - - <_> - 4 1 10 2 -1. - <_> - 4 1 5 1 2. - <_> - 9 2 5 1 2. - <_> - - <_> - 2 9 14 4 -1. - <_> - 2 11 14 2 2. - <_> - - <_> - 2 4 14 9 -1. - <_> - 2 7 14 3 3. - <_> - - <_> - 14 0 4 12 -1. - <_> - 14 6 4 6 2. - <_> - - <_> - 0 0 4 12 -1. - <_> - 0 6 4 6 2. - <_> - - <_> - 11 1 3 3 -1. - <_> - 11 2 3 1 3. - <_> - - <_> - 6 3 4 2 -1. - <_> - 6 3 2 1 2. - <_> - 8 4 2 1 2. - <_> - - <_> - 8 0 6 4 -1. - <_> - 8 1 6 2 2. - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 7 1 4 3 -1. - <_> - 7 2 4 1 3. - <_> - - <_> - 4 1 3 3 -1. - <_> - 4 2 3 1 3. - <_> - - <_> - 10 1 8 14 -1. - <_> - 10 8 8 7 2. - <_> - - <_> - 5 5 8 6 -1. - <_> - 5 8 8 3 2. - <_> - - <_> - 9 0 8 12 -1. - <_> - 11 0 4 12 2. - <_> - - <_> - 4 0 8 10 -1. - <_> - 8 0 4 10 2. - <_> - - <_> - 9 2 2 8 -1. - <_> - 9 2 2 4 2. - 1 - <_> - - <_> - 9 3 8 2 -1. - <_> - 9 3 4 2 2. - 1 - <_> - - <_> - 10 0 1 4 -1. - <_> - 10 1 1 2 2. - <_> - - <_> - 4 2 10 2 -1. - <_> - 4 2 5 1 2. - <_> - 9 3 5 1 2. - <_> - - <_> - 0 0 18 4 -1. - <_> - 9 0 9 2 2. - <_> - 0 2 9 2 2. - <_> - - <_> - 1 0 8 14 -1. - <_> - 3 0 4 14 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 7 1 4 1 2. - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 6 12 4 2. - <_> - - <_> - 4 4 10 9 -1. - <_> - 4 7 10 3 3. - <_> - - <_> - 1 0 8 3 -1. - <_> - 1 1 8 1 3. - <_> - - <_> - 8 0 6 4 -1. - <_> - 8 2 6 2 2. - <_> - - <_> - 3 0 12 2 -1. - <_> - 6 0 6 2 2. - <_> - - <_> - 5 0 12 4 -1. - <_> - 8 0 6 4 2. - <_> - - <_> - 7 0 3 2 -1. - <_> - 7 0 3 1 2. - 1 - <_> - - <_> - 2 6 14 9 -1. - <_> - 2 9 14 3 3. - <_> - - <_> - 4 0 10 7 -1. - <_> - 9 0 5 7 2. - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 5 0 12 4 -1. - <_> - 8 0 6 4 2. - <_> - - <_> - 5 0 8 7 -1. - <_> - 7 0 4 7 2. - <_> - - <_> - 9 0 3 2 -1. - <_> - 10 1 1 2 3. - 1 - <_> - - <_> - 9 0 1 3 -1. - <_> - 8 1 1 1 3. - 1 - <_> - - <_> - 1 9 16 6 -1. - <_> - 1 11 16 2 3. - <_> - - <_> - 1 9 14 4 -1. - <_> - 1 11 14 2 2. - <_> - - <_> - 5 11 8 4 -1. - <_> - 5 13 8 2 2. - <_> - - <_> - 8 0 8 2 -1. - <_> - 8 0 4 2 2. - 1 - <_> - - <_> - 5 0 12 4 -1. - <_> - 8 0 6 4 2. - <_> - - <_> - 0 1 16 2 -1. - <_> - 4 1 8 2 2. - <_> - - <_> - 0 0 18 8 -1. - <_> - 9 0 9 4 2. - <_> - 0 4 9 4 2. - <_> - - <_> - 8 0 8 3 -1. - <_> - 10 2 4 3 2. - 1 - <_> - - <_> - 10 0 6 7 -1. - <_> - 10 0 3 7 2. - 1 - <_> - - <_> - 8 0 7 6 -1. - <_> - 8 0 7 3 2. - 1 - <_> - - <_> - 12 9 6 4 -1. - <_> - 12 9 3 4 2. - <_> - - <_> - 0 9 6 4 -1. - <_> - 3 9 3 4 2. - <_> - - <_> - 3 1 12 1 -1. - <_> - 7 1 4 1 3. - <_> - - <_> - 4 1 8 3 -1. - <_> - 4 2 8 1 3. - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 6 12 4 2. - <_> - - <_> - 6 0 6 3 -1. - <_> - 6 1 6 1 3. - <_> - - <_> - 11 5 4 4 -1. - <_> - 12 6 2 4 2. - 1 - <_> - - <_> - 9 1 1 3 -1. - <_> - 8 2 1 1 3. - 1 - <_> - - <_> - 11 5 4 4 -1. - <_> - 12 6 2 4 2. - 1 - <_> - - <_> - 7 5 4 4 -1. - <_> - 6 6 4 2 2. - 1 - <_> - - <_> - 10 0 2 2 -1. - <_> - 10 1 2 1 2. - <_> - - <_> - 8 0 2 3 -1. - <_> - 7 1 2 1 3. - 1 - <_> - - <_> - 6 0 6 1 -1. - <_> - 6 0 3 1 2. - <_> - - <_> - 6 0 6 3 -1. - <_> - 9 0 3 3 2. - <_> - - <_> - 5 6 10 9 -1. - <_> - 5 9 10 3 3. - <_> - - <_> - 6 8 6 2 -1. - <_> - 6 9 6 1 2. - <_> - - <_> - 15 10 3 5 -1. - <_> - 16 10 1 5 3. - <_> - - <_> - 0 10 3 5 -1. - <_> - 1 10 1 5 3. - <_> - - <_> - 1 11 16 4 -1. - <_> - 1 13 16 2 2. - <_> - - <_> - 0 10 3 3 -1. - <_> - 0 11 3 1 3. - <_> - - <_> - 3 7 12 8 -1. - <_> - 3 9 12 4 2. - <_> - - <_> - 0 1 4 14 -1. - <_> - 0 8 4 7 2. - <_> - - <_> - 15 11 3 1 -1. - <_> - 16 12 1 1 3. - 1 - <_> - - <_> - 3 0 8 1 -1. - <_> - 7 0 4 1 2. - <_> - - <_> - 12 0 3 2 -1. - <_> - 13 1 1 2 3. - 1 - <_> - - <_> - 4 0 1 4 -1. - <_> - 3 1 1 2 2. - 1 - <_> - - <_> - 4 1 12 4 -1. - <_> - 7 1 6 4 2. - <_> - - <_> - 5 0 1 3 -1. - <_> - 4 1 1 1 3. - 1 - <_> - - <_> - 12 0 2 12 -1. - <_> - 12 0 2 6 2. - 1 - <_> - - <_> - 1 0 12 5 -1. - <_> - 4 0 6 5 2. - <_> - - <_> - 5 0 12 7 -1. - <_> - 8 0 6 7 2. - <_> - - <_> - 1 0 12 7 -1. - <_> - 4 0 6 7 2. - <_> - - <_> - 9 1 1 3 -1. - <_> - 8 2 1 1 3. - 1 - <_> - - <_> - 9 1 3 1 -1. - <_> - 10 2 1 1 3. - 1 - <_> - - <_> - 1 6 16 8 -1. - <_> - 1 8 16 4 2. - <_> - - <_> - 3 5 12 8 -1. - <_> - 3 7 12 4 2. - <_> - - <_> - 3 4 12 4 -1. - <_> - 3 6 12 2 2. - <_> - - <_> - 1 0 8 11 -1. - <_> - 3 0 4 11 2. - <_> - - <_> - 11 1 3 1 -1. - <_> - 12 2 1 1 3. - 1 - <_> - - <_> - 7 1 1 3 -1. - <_> - 6 2 1 1 3. - 1 - <_> - - <_> - 5 12 12 2 -1. - <_> - 5 12 6 2 2. - <_> - - <_> - 2 0 12 5 -1. - <_> - 6 0 4 5 3. - <_> - - <_> - 1 2 17 2 -1. - <_> - 1 3 17 1 2. - <_> - - <_> - 8 4 4 4 -1. - <_> - 8 4 4 2 2. - 1 - <_> - - <_> - 10 1 2 11 -1. - <_> - 10 1 1 11 2. - <_> - - <_> - 3 1 12 9 -1. - <_> - 3 4 12 3 3. - <_> - - <_> - 9 0 4 2 -1. - <_> - 9 0 2 2 2. - 1 - <_> - - <_> - 8 0 2 4 -1. - <_> - 8 0 2 2 2. - 1 - <_> - - <_> - 10 8 8 7 -1. - <_> - 10 8 4 7 2. - <_> - - <_> - 0 9 8 5 -1. - <_> - 4 9 4 5 2. - <_> - - <_> - 3 0 12 1 -1. - <_> - 7 0 4 1 3. - <_> - - <_> - 5 0 8 2 -1. - <_> - 5 1 8 1 2. - <_> - - <_> - 8 0 8 2 -1. - <_> - 8 1 8 1 2. - <_> - - <_> - 2 6 14 6 -1. - <_> - 2 8 14 2 3. - <_> - - <_> - 3 9 12 4 -1. - <_> - 3 11 12 2 2. - <_> - - <_> - 0 1 3 14 -1. - <_> - 0 8 3 7 2. - <_> - - <_> - 2 0 14 2 -1. - <_> - 9 0 7 1 2. - <_> - 2 1 7 1 2. - <_> - - <_> - 8 0 2 4 -1. - <_> - 9 0 1 4 2. - <_> - - <_> - 8 0 3 6 -1. - <_> - 9 2 1 2 9. - <_> - - <_> - 2 1 14 14 -1. - <_> - 9 1 7 14 2. - <_> - - <_> - 9 1 2 9 -1. - <_> - 6 4 2 3 3. - 1 - <_> - - <_> - 9 1 9 2 -1. - <_> - 12 4 3 2 3. - 1 - <_> - - <_> - 1 6 16 9 -1. - <_> - 1 9 16 3 3. - <_> - - <_> - 9 1 4 1 -1. - <_> - 10 2 2 1 2. - 1 - <_> - - <_> - 5 3 8 6 -1. - <_> - 5 6 8 3 2. - <_> - - <_> - 2 5 14 6 -1. - <_> - 2 7 14 2 3. - <_> - - <_> - 0 0 18 10 -1. - <_> - 9 0 9 5 2. - <_> - 0 5 9 5 2. - <_> - - <_> - 0 4 18 2 -1. - <_> - 0 4 9 1 2. - <_> - 9 5 9 1 2. - <_> - - <_> - 16 0 2 10 -1. - <_> - 16 0 1 10 2. - <_> - - <_> - 6 0 2 4 -1. - <_> - 5 1 2 2 2. - 1 - <_> - - <_> - 6 0 12 3 -1. - <_> - 9 0 6 3 2. - <_> - - <_> - 3 0 9 9 -1. - <_> - 6 0 3 9 3. - <_> - - <_> - 9 4 3 1 -1. - <_> - 10 4 1 1 3. - <_> - - <_> - 5 0 8 8 -1. - <_> - 7 0 4 8 2. - <_> - - <_> - 3 12 12 2 -1. - <_> - 3 13 12 1 2. - <_> - - <_> - 7 0 2 5 -1. - <_> - 8 0 1 5 2. - <_> - - <_> - 12 0 3 12 -1. - <_> - 12 0 3 6 2. - 1 - <_> - - <_> - 6 0 12 3 -1. - <_> - 6 0 6 3 2. - 1 - <_> - - <_> - 2 9 15 6 -1. - <_> - 2 11 15 2 3. - <_> - - <_> - 6 7 4 2 -1. - <_> - 6 7 4 1 2. - 1 - <_> - - <_> - 3 1 12 2 -1. - <_> - 9 1 6 1 2. - <_> - 3 2 6 1 2. - <_> - - <_> - 6 1 3 3 -1. - <_> - 7 2 1 1 9. - <_> - - <_> - 11 8 3 2 -1. - <_> - 11 9 3 1 2. - <_> - - <_> - 0 7 18 4 -1. - <_> - 0 7 9 2 2. - <_> - 9 9 9 2 2. - <_> - - <_> - 9 0 3 1 -1. - <_> - 10 1 1 1 3. - 1 - <_> - - <_> - 9 0 1 3 -1. - <_> - 8 1 1 1 3. - 1 - <_> - - <_> - 0 1 18 14 -1. - <_> - 9 1 9 7 2. - <_> - 0 8 9 7 2. - <_> - - <_> - 0 0 12 3 -1. - <_> - 3 0 6 3 2. - <_> - - <_> - 5 0 8 3 -1. - <_> - 5 0 4 3 2. - <_> - - <_> - 8 1 1 2 -1. - <_> - 8 2 1 1 2. - <_> - - <_> - 17 2 1 12 -1. - <_> - 17 2 1 6 2. - 1 - <_> - - <_> - 0 0 18 8 -1. - <_> - 6 0 6 8 3. - <_> - - <_> - 17 2 1 12 -1. - <_> - 17 2 1 6 2. - 1 - <_> - - <_> - 2 1 14 8 -1. - <_> - 2 3 14 4 2. - <_> - - <_> - 2 5 14 6 -1. - <_> - 2 7 14 2 3. - <_> - - <_> - 1 2 12 1 -1. - <_> - 1 2 6 1 2. - 1 - <_> - - <_> - 7 5 4 2 -1. - <_> - 9 5 2 1 2. - <_> - 7 6 2 1 2. - <_> - - <_> - 1 4 16 6 -1. - <_> - 1 6 16 2 3. - <_> - - <_> - 5 0 13 12 -1. - <_> - 5 3 13 6 2. - <_> - - <_> - 5 6 8 4 -1. - <_> - 5 8 8 2 2. - <_> - - <_> - 9 0 4 10 -1. - <_> - 9 0 2 10 2. - <_> - - <_> - 1 0 9 12 -1. - <_> - 4 0 3 12 3. - <_> - - <_> - 4 4 14 10 -1. - <_> - 11 4 7 5 2. - <_> - 4 9 7 5 2. - <_> - - <_> - 0 4 12 10 -1. - <_> - 0 4 6 5 2. - <_> - 6 9 6 5 2. - <_> - - <_> - 0 0 18 8 -1. - <_> - 9 0 9 4 2. - <_> - 0 4 9 4 2. - <_> - - <_> - 1 11 15 2 -1. - <_> - 1 12 15 1 2. - <_> - - <_> - 3 0 14 2 -1. - <_> - 3 1 14 1 2. - <_> - - <_> - 3 0 7 4 -1. - <_> - 3 2 7 2 2. - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 6 12 4 2. - <_> - - <_> - 2 1 13 12 -1. - <_> - 2 5 13 4 3. - <_> - - <_> - 3 0 12 4 -1. - <_> - 6 0 6 4 2. - <_> - - <_> - 7 0 4 7 -1. - <_> - 9 0 2 7 2. - <_> - - <_> - 7 0 4 4 -1. - <_> - 7 1 4 2 2. - <_> - - <_> - 2 7 14 6 -1. - <_> - 2 9 14 2 3. - <_> - - <_> - 11 1 7 10 -1. - <_> - 11 6 7 5 2. - <_> - - <_> - 4 0 10 3 -1. - <_> - 9 0 5 3 2. - <_> - - <_> - 0 1 18 2 -1. - <_> - 9 1 9 1 2. - <_> - 0 2 9 1 2. - <_> - - <_> - 0 2 2 2 -1. - <_> - 1 2 1 2 2. - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 14 4 2 7 -1. - <_> - 14 4 1 7 2. - 1 - <_> - - <_> - 1 10 16 2 -1. - <_> - 1 11 16 1 2. - <_> - - <_> - 13 6 2 6 -1. - <_> - 13 6 1 6 2. - 1 - <_> - - <_> - 4 9 8 4 -1. - <_> - 8 9 4 4 2. - <_> - - <_> - 2 8 14 4 -1. - <_> - 2 10 14 2 2. - <_> - - <_> - 3 0 12 9 -1. - <_> - 3 3 12 3 3. - <_> - - <_> - 14 1 4 12 -1. - <_> - 14 7 4 6 2. - <_> - - <_> - 6 0 6 2 -1. - <_> - 6 0 3 1 2. - <_> - 9 1 3 1 2. - <_> - - <_> - 10 2 2 2 -1. - <_> - 10 2 1 2 2. - 1 - <_> - - <_> - 5 0 8 6 -1. - <_> - 7 0 4 6 2. - <_> - - <_> - 11 8 4 6 -1. - <_> - 11 10 4 2 3. - <_> - - <_> - 0 0 18 8 -1. - <_> - 0 0 9 4 2. - <_> - 9 4 9 4 2. - <_> - - <_> - 14 1 4 10 -1. - <_> - 14 6 4 5 2. - <_> - - <_> - 0 1 4 10 -1. - <_> - 0 6 4 5 2. - <_> - - <_> - 10 2 2 2 -1. - <_> - 10 2 1 2 2. - 1 - <_> - - <_> - 8 2 2 2 -1. - <_> - 8 2 2 1 2. - 1 - <_> - - <_> - 10 2 2 1 -1. - <_> - 10 2 1 1 2. - <_> - - <_> - 7 0 2 3 -1. - <_> - 8 0 1 3 2. - <_> - - <_> - 3 0 12 12 -1. - <_> - 3 6 12 6 2. - <_> - - <_> - 3 5 12 4 -1. - <_> - 3 7 12 2 2. - <_> - - <_> - 12 1 6 14 -1. - <_> - 12 8 6 7 2. - <_> - - <_> - 2 13 14 2 -1. - <_> - 2 14 14 1 2. - <_> - - <_> - 0 4 18 6 -1. - <_> - 0 6 18 2 3. - <_> - - <_> - 0 8 2 4 -1. - <_> - 0 9 2 2 2. - <_> - - <_> - 6 0 12 10 -1. - <_> - 10 0 4 10 3. - <_> - - <_> - 0 0 12 10 -1. - <_> - 4 0 4 10 3. - <_> - - <_> - 3 13 12 2 -1. - <_> - 3 14 12 1 2. - <_> - - <_> - 3 8 4 6 -1. - <_> - 3 10 4 2 3. - <_> - - <_> - 13 11 4 4 -1. - <_> - 14 11 2 4 2. - <_> - - <_> - 0 1 5 14 -1. - <_> - 0 8 5 7 2. - <_> - - <_> - 10 5 2 1 -1. - <_> - 10 5 1 1 2. - <_> - - <_> - 6 5 2 1 -1. - <_> - 7 5 1 1 2. - <_> - - <_> - 1 11 17 4 -1. - <_> - 1 12 17 2 2. - <_> - - <_> - 7 0 3 3 -1. - <_> - 8 1 1 1 9. - <_> - - <_> - 9 1 2 2 -1. - <_> - 9 2 2 1 2. - <_> - - <_> - 1 11 4 4 -1. - <_> - 2 11 2 4 2. - <_> - - <_> - 8 3 10 8 -1. - <_> - 8 3 5 8 2. - <_> - - <_> - 0 3 10 8 -1. - <_> - 5 3 5 8 2. - <_> - - <_> - 12 7 2 4 -1. - <_> - 12 7 1 4 2. - 1 - <_> - - <_> - 0 9 18 6 -1. - <_> - 0 9 9 3 2. - <_> - 9 12 9 3 2. - <_> - - <_> - 10 7 6 4 -1. - <_> - 13 7 3 2 2. - <_> - 10 9 3 2 2. - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 4 0 12 2 -1. - <_> - 8 0 4 2 3. - <_> - - <_> - 1 5 16 10 -1. - <_> - 1 5 8 5 2. - <_> - 9 10 8 5 2. - <_> - - <_> - 12 6 2 4 -1. - <_> - 12 6 1 4 2. - 1 - <_> - - <_> - 6 6 4 2 -1. - <_> - 6 6 4 1 2. - 1 - <_> - - <_> - 10 8 6 4 -1. - <_> - 13 8 3 2 2. - <_> - 10 10 3 2 2. - <_> - - <_> - 9 0 4 1 -1. - <_> - 10 1 2 1 2. - 1 - <_> - - <_> - 17 10 1 3 -1. - <_> - 17 11 1 1 3. - <_> - - <_> - 3 0 11 2 -1. - <_> - 3 0 11 1 2. - 1 - <_> - - <_> - 8 6 10 8 -1. - <_> - 13 6 5 4 2. - <_> - 8 10 5 4 2. - <_> - - <_> - 2 12 14 2 -1. - <_> - 2 13 14 1 2. - <_> - - <_> - 17 10 1 3 -1. - <_> - 17 11 1 1 3. - <_> - - <_> - 7 4 8 3 -1. - <_> - 9 6 4 3 2. - 1 - <_> - - <_> - 13 9 3 6 -1. - <_> - 13 11 3 2 3. - <_> - - <_> - 2 9 3 6 -1. - <_> - 2 11 3 2 3. - <_> - - <_> - 17 10 1 3 -1. - <_> - 17 11 1 1 3. - <_> - - <_> - 0 10 1 3 -1. - <_> - 0 11 1 1 3. - <_> - - <_> - 11 1 6 6 -1. - <_> - 11 1 3 6 2. - <_> - - <_> - 3 6 2 1 -1. - <_> - 4 6 1 1 2. - <_> - - <_> - 15 0 3 3 -1. - <_> - 14 1 3 1 3. - 1 - <_> - - <_> - 1 7 8 4 -1. - <_> - 1 7 4 2 2. - <_> - 5 9 4 2 2. - <_> - - <_> - 8 8 4 2 -1. - <_> - 8 9 4 1 2. - <_> - - <_> - 9 2 4 6 -1. - <_> - 9 2 4 3 2. - 1 - <_> - - <_> - 2 6 14 8 -1. - <_> - 2 8 14 4 2. - <_> - - <_> - 5 0 8 3 -1. - <_> - 7 0 4 3 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 8 3 3 6 -1. - <_> - 8 3 3 3 2. - 1 - <_> - - <_> - 6 0 12 4 -1. - <_> - 9 0 6 4 2. - <_> - - <_> - 0 8 6 7 -1. - <_> - 3 8 3 7 2. - <_> - - <_> - 4 1 10 2 -1. - <_> - 9 1 5 1 2. - <_> - 4 2 5 1 2. - <_> - - <_> - 3 0 6 6 -1. - <_> - 3 3 6 3 2. - <_> - - <_> - 3 9 12 2 -1. - <_> - 3 10 12 1 2. - <_> - - <_> - 1 9 16 2 -1. - <_> - 1 10 16 1 2. - <_> - - <_> - 9 3 3 3 -1. - <_> - 10 4 1 1 9. - <_> - - <_> - 5 3 8 2 -1. - <_> - 5 3 4 1 2. - <_> - 9 4 4 1 2. - <_> - - <_> - 2 0 14 12 -1. - <_> - 9 0 7 6 2. - <_> - 2 6 7 6 2. - <_> - - <_> - 7 0 2 3 -1. - <_> - 6 1 2 1 3. - 1 - <_> - - <_> - 15 2 2 1 -1. - <_> - 15 2 1 1 2. - <_> - - <_> - 1 2 2 1 -1. - <_> - 2 2 1 1 2. - <_> - - <_> - 13 0 4 4 -1. - <_> - 14 1 2 4 2. - 1 - <_> - - <_> - 8 5 4 5 -1. - <_> - 8 5 2 5 2. - 1 - <_> - - <_> - 5 0 8 4 -1. - <_> - 5 1 8 2 2. - <_> - - <_> - 3 1 2 3 -1. - <_> - 2 2 2 1 3. - 1 - <_> - - <_> - 5 0 12 4 -1. - <_> - 8 0 6 4 2. - <_> - - <_> - 5 0 8 7 -1. - <_> - 9 0 4 7 2. - <_> - - <_> - 11 3 1 8 -1. - <_> - 9 5 1 4 2. - 1 - <_> - - <_> - 3 3 12 9 -1. - <_> - 7 6 4 3 9. - <_> - - <_> - 1 4 16 6 -1. - <_> - 1 6 16 2 3. - <_> - - <_> - 6 1 3 2 -1. - <_> - 6 1 3 1 2. - 1 - <_> - - <_> - 7 9 4 2 -1. - <_> - 7 10 4 1 2. - <_> - - <_> - 1 5 14 10 -1. - <_> - 1 5 7 5 2. - <_> - 8 10 7 5 2. - <_> - - <_> - 10 9 3 6 -1. - <_> - 10 11 3 2 3. - <_> - - <_> - 0 5 18 10 -1. - <_> - 0 5 9 5 2. - <_> - 9 10 9 5 2. - <_> - - <_> - 8 0 3 2 -1. - <_> - 8 1 3 1 2. - <_> - - <_> - 5 1 2 5 -1. - <_> - 6 1 1 5 2. - <_> - - <_> - 4 0 12 7 -1. - <_> - 8 0 4 7 3. - <_> - - <_> - 1 0 12 4 -1. - <_> - 4 0 6 4 2. - <_> - - <_> - 12 0 6 14 -1. - <_> - 12 7 6 7 2. - <_> - - <_> - 2 0 12 5 -1. - <_> - 5 0 6 5 2. - <_> - - <_> - 12 0 6 14 -1. - <_> - 12 7 6 7 2. - <_> - - <_> - 0 0 6 14 -1. - <_> - 0 7 6 7 2. - <_> - - <_> - 10 9 3 6 -1. - <_> - 10 11 3 2 3. - <_> - - <_> - 5 9 3 6 -1. - <_> - 5 11 3 2 3. - <_> - - <_> - 7 13 6 2 -1. - <_> - 7 14 6 1 2. - <_> - - <_> - 8 2 1 3 -1. - <_> - 7 3 1 1 3. - 1 - <_> - - <_> - 15 3 3 1 -1. - <_> - 16 4 1 1 3. - 1 - <_> - - <_> - 3 11 1 3 -1. - <_> - 2 12 1 1 3. - 1 - <_> - - <_> - 11 6 3 4 -1. - <_> - 11 8 3 2 2. - <_> - - <_> - 2 5 14 9 -1. - <_> - 2 8 14 3 3. - <_> - - <_> - 10 10 8 4 -1. - <_> - 14 10 4 2 2. - <_> - 10 12 4 2 2. - <_> - - <_> - 0 12 4 3 -1. - <_> - 1 12 2 3 2. - <_> - - <_> - 8 0 8 2 -1. - <_> - 8 1 8 1 2. - <_> - - <_> - 0 0 18 2 -1. - <_> - 0 0 9 1 2. - <_> - 9 1 9 1 2. - <_> - - <_> - 7 1 4 12 -1. - <_> - 7 1 2 12 2. - <_> - - <_> - 0 11 18 4 -1. - <_> - 0 12 18 2 2. - <_> - - <_> - 12 7 2 4 -1. - <_> - 12 7 1 4 2. - 1 - <_> - - <_> - 0 8 18 6 -1. - <_> - 0 10 18 2 3. - <_> - - <_> - 11 0 6 6 -1. - <_> - 11 0 3 6 2. - <_> - - <_> - 6 7 4 2 -1. - <_> - 6 7 4 1 2. - 1 - <_> - - <_> - 6 6 6 2 -1. - <_> - 9 6 3 1 2. - <_> - 6 7 3 1 2. - <_> - - <_> - 6 7 5 2 -1. - <_> - 6 8 5 1 2. - <_> - - <_> - 11 6 3 4 -1. - <_> - 11 8 3 2 2. - <_> - - <_> - 7 0 1 2 -1. - <_> - 7 1 1 1 2. - <_> - - <_> - 9 13 6 2 -1. - <_> - 11 13 2 2 3. - <_> - - <_> - 8 2 2 6 -1. - <_> - 8 2 1 3 2. - <_> - 9 5 1 3 2. - <_> - - <_> - 16 8 2 3 -1. - <_> - 16 9 2 1 3. - <_> - - <_> - 6 1 10 4 -1. - <_> - 6 1 10 2 2. - 1 - <_> - - <_> - 10 10 8 4 -1. - <_> - 14 10 4 2 2. - <_> - 10 12 4 2 2. - <_> - - <_> - 0 10 8 4 -1. - <_> - 0 10 4 2 2. - <_> - 4 12 4 2 2. - <_> - - <_> - 13 6 3 4 -1. - <_> - 14 7 1 4 3. - 1 - <_> - - <_> - 0 8 2 3 -1. - <_> - 0 9 2 1 3. - <_> - - <_> - 13 6 3 4 -1. - <_> - 14 7 1 4 3. - 1 - <_> - - <_> - 5 6 4 3 -1. - <_> - 4 7 4 1 3. - 1 - <_> - - <_> - 10 3 8 3 -1. - <_> - 10 3 4 3 2. - <_> - - <_> - 0 3 8 3 -1. - <_> - 4 3 4 3 2. - <_> - - <_> - 4 2 14 2 -1. - <_> - 4 2 7 2 2. - <_> - - <_> - 0 1 12 4 -1. - <_> - 3 1 6 4 2. - <_> - - <_> - 13 1 4 10 -1. - <_> - 13 6 4 5 2. - <_> - - <_> - 0 2 14 2 -1. - <_> - 7 2 7 2 2. - <_> - - <_> - 4 12 12 3 -1. - <_> - 8 12 4 3 3. - <_> - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - <_> - - <_> - 10 6 2 2 -1. - <_> - 10 6 1 2 2. - <_> - - <_> - 6 6 2 2 -1. - <_> - 7 6 1 2 2. - <_> - - <_> - 15 2 3 1 -1. - <_> - 16 3 1 1 3. - 1 - <_> - - <_> - 4 7 3 3 -1. - <_> - 4 8 3 1 3. - <_> - - <_> - 3 5 12 4 -1. - <_> - 3 7 12 2 2. - <_> - - <_> - 3 2 1 3 -1. - <_> - 2 3 1 1 3. - 1 - <_> - - <_> - 0 9 18 6 -1. - <_> - 0 11 18 2 3. - <_> - - <_> - 0 4 18 2 -1. - <_> - 0 4 9 1 2. - <_> - 9 5 9 1 2. - <_> - - <_> - 15 3 3 3 -1. - <_> - 14 4 3 1 3. - 1 - <_> - - <_> - 2 2 14 6 -1. - <_> - 2 4 14 2 3. - <_> - - <_> - 9 2 1 3 -1. - <_> - 8 3 1 1 3. - 1 - <_> - - <_> - 0 1 6 10 -1. - <_> - 0 6 6 5 2. - <_> - - <_> - 9 3 6 2 -1. - <_> - 9 4 6 1 2. - <_> - - <_> - 0 0 18 6 -1. - <_> - 0 0 9 3 2. - <_> - 9 3 9 3 2. - <_> - - <_> - 4 2 10 6 -1. - <_> - 4 5 10 3 2. - <_> - - <_> - 0 5 9 3 -1. - <_> - 3 5 3 3 3. - <_> - - <_> - 9 3 2 1 -1. - <_> - 9 3 1 1 2. - <_> - - <_> - 7 3 2 1 -1. - <_> - 8 3 1 1 2. - <_> - - <_> - 9 2 6 4 -1. - <_> - 9 2 3 4 2. - 1 - <_> - - <_> - 7 2 3 3 -1. - <_> - 8 3 1 1 9. - <_> - - <_> - 7 4 4 6 -1. - <_> - 5 6 4 2 3. - 1 - <_> - - <_> - 4 2 14 8 -1. - <_> - 4 4 14 4 2. - <_> - - <_> - 9 0 1 4 -1. - <_> - 9 0 1 2 2. - 1 - <_> - - <_> - 12 7 6 7 -1. - <_> - 12 7 3 7 2. - <_> - - <_> - 2 9 8 4 -1. - <_> - 2 11 8 2 2. - <_> - - <_> - 13 6 1 6 -1. - <_> - 13 8 1 2 3. - <_> - - <_> - 4 6 1 6 -1. - <_> - 4 8 1 2 3. - <_> - - <_> - 8 0 6 4 -1. - <_> - 8 2 6 2 2. - <_> - - <_> - 9 0 6 1 -1. - <_> - 9 0 3 1 2. - 1 - <_> - - <_> - 6 0 12 1 -1. - <_> - 9 0 6 1 2. - <_> - - <_> - 2 7 14 8 -1. - <_> - 2 9 14 4 2. - <_> - - <_> - 11 8 3 2 -1. - <_> - 11 9 3 1 2. - <_> - - <_> - 0 0 2 3 -1. - <_> - 1 0 1 3 2. - <_> - - <_> - 10 0 6 8 -1. - <_> - 10 4 6 4 2. - <_> - - <_> - 6 0 3 2 -1. - <_> - 6 0 3 1 2. - 1 - <_> - - <_> - 14 5 4 10 -1. - <_> - 14 10 4 5 2. - <_> - - <_> - 0 5 4 10 -1. - <_> - 0 10 4 5 2. - <_> - - <_> - 12 8 6 6 -1. - <_> - 12 8 3 6 2. - <_> - - <_> - 0 8 6 6 -1. - <_> - 3 8 3 6 2. - <_> - - <_> - 10 0 6 6 -1. - <_> - 10 3 6 3 2. - <_> - - <_> - 2 0 6 6 -1. - <_> - 2 3 6 3 2. - <_> - - <_> - 0 0 18 4 -1. - <_> - 9 0 9 2 2. - <_> - 0 2 9 2 2. - <_> - - <_> - 2 10 14 2 -1. - <_> - 2 11 14 1 2. - <_> - - <_> - 11 5 3 6 -1. - <_> - 9 7 3 2 3. - 1 - <_> - - <_> - 1 4 16 1 -1. - <_> - 5 4 8 1 2. - <_> - - <_> - 10 8 4 4 -1. - <_> - 10 9 4 2 2. - <_> - - <_> - 4 8 4 4 -1. - <_> - 4 9 4 2 2. - <_> - - <_> - 3 6 12 8 -1. - <_> - 9 6 6 4 2. - <_> - 3 10 6 4 2. - <_> - - <_> - 3 12 9 3 -1. - <_> - 6 12 3 3 3. - <_> - - <_> - 11 4 6 4 -1. - <_> - 13 6 2 4 3. - 1 - <_> - - <_> - 0 0 3 12 -1. - <_> - 0 6 3 6 2. - <_> - - <_> - 4 0 10 9 -1. - <_> - 4 0 5 9 2. - <_> - - <_> - 7 0 4 1 -1. - <_> - 9 0 2 1 2. - <_> - - <_> - 6 9 8 5 -1. - <_> - 6 9 4 5 2. - <_> - - <_> - 5 3 3 5 -1. - <_> - 6 4 1 5 3. - 1 - <_> - - <_> - 8 0 2 4 -1. - <_> - 8 1 2 2 2. - <_> - - <_> - 0 13 18 2 -1. - <_> - 0 14 18 1 2. - <_> - - <_> - 6 8 6 2 -1. - <_> - 6 9 6 1 2. - <_> - - <_> - 4 0 6 2 -1. - <_> - 4 1 6 1 2. - <_> - - <_> - 15 4 3 3 -1. - <_> - 14 5 3 1 3. - 1 - <_> - - <_> - 0 8 2 2 -1. - <_> - 1 8 1 2 2. - <_> - - <_> - 11 4 6 4 -1. - <_> - 13 6 2 4 3. - 1 - <_> - - <_> - 2 0 12 1 -1. - <_> - 5 0 6 1 2. - <_> - - <_> - 1 1 16 11 -1. - <_> - 5 1 8 11 2. - <_> - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - <_> - - <_> - 4 3 10 8 -1. - <_> - 9 3 5 4 2. - <_> - 4 7 5 4 2. - <_> - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 1 2. - <_> - 6 9 1 1 2. - <_> - - <_> - 12 8 3 3 -1. - <_> - 13 9 1 3 3. - 1 - <_> - - <_> - 1 5 16 6 -1. - <_> - 1 7 16 2 3. - <_> - - <_> - 0 5 18 6 -1. - <_> - 0 7 18 2 3. - <_> - - <_> - 0 7 1 3 -1. - <_> - 0 8 1 1 3. - <_> - - <_> - 12 8 3 3 -1. - <_> - 13 9 1 3 3. - 1 - <_> - - <_> - 8 6 3 1 -1. - <_> - 9 7 1 1 3. - 1 - <_> - - <_> - 12 8 3 3 -1. - <_> - 13 9 1 3 3. - 1 - <_> - - <_> - 6 8 3 3 -1. - <_> - 5 9 3 1 3. - 1 - <_> - - <_> - 11 13 1 2 -1. - <_> - 11 14 1 1 2. - <_> - - <_> - 1 13 16 2 -1. - <_> - 1 13 8 1 2. - <_> - 9 14 8 1 2. - <_> - - <_> - 16 12 2 1 -1. - <_> - 16 12 1 1 2. - 1 - <_> - - <_> - 2 12 1 2 -1. - <_> - 2 12 1 1 2. - 1 - <_> - - <_> - 12 9 2 2 -1. - <_> - 13 9 1 1 2. - <_> - 12 10 1 1 2. - <_> - - <_> - 4 9 2 2 -1. - <_> - 4 9 1 1 2. - <_> - 5 10 1 1 2. - <_> - - <_> - 11 2 2 1 -1. - <_> - 11 2 1 1 2. - <_> - - <_> - 5 0 8 9 -1. - <_> - 7 0 4 9 2. - <_> - - <_> - 11 2 2 1 -1. - <_> - 11 2 1 1 2. - <_> - - <_> - 5 2 2 1 -1. - <_> - 6 2 1 1 2. - <_> - - <_> - 9 1 1 3 -1. - <_> - 8 2 1 1 3. - 1 - <_> - - <_> - 4 9 8 6 -1. - <_> - 8 9 4 6 2. - <_> - - <_> - 8 1 4 10 -1. - <_> - 8 1 2 10 2. - <_> - - <_> - 9 1 3 1 -1. - <_> - 10 2 1 1 3. - 1 - <_> - - <_> - 0 5 18 10 -1. - <_> - 9 5 9 5 2. - <_> - 0 10 9 5 2. - <_> - - <_> - 3 2 3 3 -1. - <_> - 4 3 1 3 3. - 1 - <_> - - <_> - 17 4 1 2 -1. - <_> - 17 5 1 1 2. - <_> - - <_> - 0 6 10 1 -1. - <_> - 5 6 5 1 2. - <_> - - <_> - 7 0 4 4 -1. - <_> - 7 0 2 4 2. - <_> - - <_> - 3 5 6 5 -1. - <_> - 5 5 2 5 3. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 16 2 2 2 -1. - <_> - 17 2 1 1 2. - <_> - 16 3 1 1 2. - <_> - - <_> - 0 2 2 2 -1. - <_> - 0 2 1 1 2. - <_> - 1 3 1 1 2. - <_> - - <_> - 16 2 2 2 -1. - <_> - 17 2 1 1 2. - <_> - 16 3 1 1 2. - <_> - - <_> - 7 3 4 4 -1. - <_> - 7 3 2 2 2. - <_> - 9 5 2 2 2. - <_> - - <_> - 5 6 8 2 -1. - <_> - 5 7 8 1 2. - <_> - - <_> - 7 4 5 4 -1. - <_> - 6 5 5 2 2. - 1 - <_> - - <_> - 5 0 12 4 -1. - <_> - 8 0 6 4 2. - <_> - - <_> - 5 0 8 2 -1. - <_> - 5 1 8 1 2. - <_> - - <_> - 0 12 18 3 -1. - <_> - 0 13 18 1 3. - <_> - - <_> - 8 4 2 6 -1. - <_> - 8 4 1 3 2. - <_> - 9 7 1 3 2. - <_> - - <_> - 5 0 9 4 -1. - <_> - 8 0 3 4 3. - <_> - - <_> - 1 12 15 3 -1. - <_> - 1 13 15 1 3. - <_> - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - <_> - - <_> - 1 11 3 1 -1. - <_> - 2 12 1 1 3. - 1 - <_> - - <_> - 12 7 6 1 -1. - <_> - 12 7 3 1 2. - 1 - <_> - - <_> - 6 7 1 6 -1. - <_> - 6 7 1 3 2. - 1 - <_> - - <_> - 7 7 4 6 -1. - <_> - 8 7 2 6 2. - <_> - - <_> - 1 8 16 3 -1. - <_> - 1 9 16 1 3. - <_> - - <_> - 9 7 2 2 -1. - <_> - 9 8 2 1 2. - <_> - - <_> - 5 0 10 4 -1. - <_> - 5 0 10 2 2. - 1 - <_> - - <_> - 16 2 2 2 -1. - <_> - 17 2 1 1 2. - <_> - 16 3 1 1 2. - <_> - - <_> - 0 2 2 2 -1. - <_> - 0 2 1 1 2. - <_> - 1 3 1 1 2. - <_> - - <_> - 7 1 4 4 -1. - <_> - 9 1 2 2 2. - <_> - 7 3 2 2 2. - <_> - - <_> - 4 9 4 6 -1. - <_> - 4 11 4 2 3. - <_> - - <_> - 5 12 9 2 -1. - <_> - 5 13 9 1 2. - <_> - - <_> - 2 1 10 2 -1. - <_> - 2 1 5 2 2. - 1 - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 0 9 1 3 -1. - <_> - 0 10 1 1 3. - <_> - - <_> - 0 8 18 2 -1. - <_> - 0 9 18 1 2. - <_> - - <_> - 0 5 1 4 -1. - <_> - 0 6 1 2 2. - <_> - - <_> - 8 0 8 3 -1. - <_> - 10 2 4 3 2. - 1 - <_> - - <_> - 8 7 9 7 -1. - <_> - 11 7 3 7 3. - <_> - - <_> - 0 8 12 4 -1. - <_> - 3 8 6 4 2. - <_> - - <_> - 10 0 2 1 -1. - <_> - 10 0 1 1 2. - 1 - <_> - - <_> - 8 0 1 2 -1. - <_> - 8 0 1 1 2. - 1 - <_> - - <_> - 6 0 7 2 -1. - <_> - 6 1 7 1 2. - <_> - - <_> - 1 10 15 4 -1. - <_> - 1 12 15 2 2. - <_> - - <_> - 0 0 18 8 -1. - <_> - 9 0 9 4 2. - <_> - 0 4 9 4 2. - <_> - - <_> - 8 3 2 12 -1. - <_> - 8 9 2 6 2. - <_> - - <_> - 12 8 2 2 -1. - <_> - 12 9 2 1 2. - <_> - - <_> - 9 0 3 3 -1. - <_> - 8 1 3 1 3. - 1 - <_> - - <_> - 15 1 2 1 -1. - <_> - 15 1 1 1 2. - <_> - - <_> - 0 1 4 10 -1. - <_> - 0 6 4 5 2. - <_> - - <_> - 4 0 10 2 -1. - <_> - 4 1 10 1 2. - <_> - - <_> - 3 0 1 2 -1. - <_> - 3 0 1 1 2. - 1 - <_> - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - <_> - - <_> - 4 2 3 4 -1. - <_> - 5 3 1 4 3. - 1 - <_> - - <_> - 10 0 6 1 -1. - <_> - 10 0 3 1 2. - 1 - <_> - - <_> - 3 3 3 3 -1. - <_> - 4 4 1 3 3. - 1 - <_> - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - <_> - - <_> - 9 0 9 2 -1. - <_> - 9 0 9 1 2. - 1 - <_> - - <_> - 8 1 4 2 -1. - <_> - 8 2 4 1 2. - <_> - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - <_> - - <_> - 0 5 18 10 -1. - <_> - 9 5 9 5 2. - <_> - 0 10 9 5 2. - <_> - - <_> - 0 0 2 6 -1. - <_> - 0 3 2 3 2. - <_> - - <_> - 16 2 2 3 -1. - <_> - 15 3 2 1 3. - 1 - <_> - - <_> - 6 0 6 1 -1. - <_> - 9 0 3 1 2. - <_> - - <_> - 10 0 3 8 -1. - <_> - 8 2 3 4 2. - 1 - <_> - - <_> - 8 0 8 3 -1. - <_> - 10 2 4 3 2. - 1 - <_> - - <_> - 16 2 2 3 -1. - <_> - 15 3 2 1 3. - 1 - <_> - - <_> - 5 8 8 2 -1. - <_> - 5 9 8 1 2. - <_> - - <_> - 11 8 3 2 -1. - <_> - 11 9 3 1 2. - <_> - - <_> - 4 8 3 2 -1. - <_> - 4 9 3 1 2. - <_> - - <_> - 10 2 3 2 -1. - <_> - 10 3 3 1 2. - <_> - - <_> - 2 0 8 2 -1. - <_> - 2 1 8 1 2. - <_> - - <_> - 16 2 2 3 -1. - <_> - 15 3 2 1 3. - 1 - <_> - - <_> - 2 2 3 2 -1. - <_> - 3 3 1 2 3. - 1 - <_> - - <_> - 17 8 1 4 -1. - <_> - 17 9 1 2 2. - <_> - - <_> - 0 8 1 4 -1. - <_> - 0 9 1 2 2. - <_> - - <_> - 3 0 12 2 -1. - <_> - 9 0 6 1 2. - <_> - 3 1 6 1 2. - <_> - - <_> - 9 1 8 3 -1. - <_> - 9 1 4 3 2. - 1 - <_> - - <_> - 8 0 2 6 -1. - <_> - 8 0 1 6 2. - <_> - - <_> - 8 0 3 2 -1. - <_> - 8 0 3 1 2. - 1 - <_> - - <_> - 8 8 6 2 -1. - <_> - 11 8 3 1 2. - <_> - 8 9 3 1 2. - <_> - - <_> - 0 3 18 12 -1. - <_> - 0 9 18 6 2. - <_> - - <_> - 13 8 3 6 -1. - <_> - 14 10 1 2 9. - <_> - - <_> - 2 8 14 4 -1. - <_> - 2 10 14 2 2. - <_> - - <_> - 13 9 3 1 -1. - <_> - 14 10 1 1 3. - 1 - <_> - - <_> - 4 0 10 15 -1. - <_> - 9 0 5 15 2. - <_> - - <_> - 9 0 2 1 -1. - <_> - 9 0 1 1 2. - <_> - - <_> - 5 0 4 1 -1. - <_> - 7 0 2 1 2. - <_> - - <_> - 10 2 3 2 -1. - <_> - 10 3 3 1 2. - <_> - - <_> - 5 2 3 2 -1. - <_> - 5 3 3 1 2. - <_> - - <_> - 10 7 1 2 -1. - <_> - 10 8 1 1 2. - <_> - - <_> - 6 6 6 4 -1. - <_> - 6 6 3 2 2. - <_> - 9 8 3 2 2. - <_> - - <_> - 10 7 4 3 -1. - <_> - 11 8 2 3 2. - 1 - <_> - - <_> - 8 7 3 4 -1. - <_> - 7 8 3 2 2. - 1 - <_> - - <_> - 11 9 4 1 -1. - <_> - 11 9 2 1 2. - 1 - <_> - - <_> - 7 7 3 3 -1. - <_> - 6 8 3 1 3. - 1 - <_> - - <_> - 11 13 6 2 -1. - <_> - 13 13 2 2 3. - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 3 3. - 1 - <_> - - <_> - 2 1 14 2 -1. - <_> - 9 1 7 1 2. - <_> - 2 2 7 1 2. - <_> - - <_> - 9 2 3 1 -1. - <_> - 10 3 1 1 3. - 1 - <_> - - <_> - 9 3 2 8 -1. - <_> - 7 5 2 4 2. - 1 - <_> - - <_> - 5 7 1 4 -1. - <_> - 5 8 1 2 2. - <_> - - <_> - 11 13 6 2 -1. - <_> - 13 13 2 2 3. - <_> - - <_> - 5 9 1 3 -1. - <_> - 4 10 1 1 3. - 1 - <_> - - <_> - 11 13 6 2 -1. - <_> - 13 13 2 2 3. - <_> - - <_> - 4 11 1 2 -1. - <_> - 4 11 1 1 2. - 1 - <_> - - <_> - 9 3 2 8 -1. - <_> - 7 5 2 4 2. - 1 - <_> - - <_> - 9 3 8 2 -1. - <_> - 11 5 4 2 2. - 1 - <_> - - <_> - 7 6 4 2 -1. - <_> - 7 7 4 1 2. - <_> - - <_> - 6 7 6 3 -1. - <_> - 8 8 2 1 9. - <_> - - <_> - 5 0 8 8 -1. - <_> - 7 0 4 8 2. - <_> - - <_> - 0 0 18 8 -1. - <_> - 6 0 6 8 3. - <_> - - <_> - 14 0 4 9 -1. - <_> - 14 0 2 9 2. - 1 - <_> - - <_> - 4 0 9 4 -1. - <_> - 4 0 9 2 2. - 1 - <_> - - <_> - 3 13 13 2 -1. - <_> - 3 14 13 1 2. - <_> - - <_> - 1 13 16 2 -1. - <_> - 1 14 16 1 2. - <_> - - <_> - 11 9 6 6 -1. - <_> - 13 11 2 2 9. - <_> - - <_> - 1 9 6 6 -1. - <_> - 3 11 2 2 9. - <_> - - <_> - 11 13 6 2 -1. - <_> - 13 13 2 2 3. - <_> - - <_> - 1 13 6 2 -1. - <_> - 3 13 2 2 3. - <_> - - <_> - 11 3 5 2 -1. - <_> - 11 4 5 1 2. - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 10 0 1 1 2. - <_> - 9 1 1 1 2. - <_> - - <_> - 7 2 1 3 -1. - <_> - 6 3 1 1 3. - 1 - <_> - - <_> - 13 0 3 8 -1. - <_> - 14 0 1 8 3. - <_> - - <_> - 1 11 16 4 -1. - <_> - 1 11 8 2 2. - <_> - 9 13 8 2 2. - <_> - - <_> - 13 0 3 8 -1. - <_> - 14 0 1 8 3. - <_> - - <_> - 3 0 3 3 -1. - <_> - 4 1 1 3 3. - 1 - <_> - - <_> - 12 2 3 13 -1. - <_> - 13 2 1 13 3. - <_> - - <_> - 3 0 3 15 -1. - <_> - 4 0 1 15 3. - <_> - - <_> - 17 1 1 14 -1. - <_> - 17 8 1 7 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - <_> - - <_> - 10 1 5 2 -1. - <_> - 10 2 5 1 2. - <_> - - <_> - 3 1 5 2 -1. - <_> - 3 2 5 1 2. - <_> - - <_> - 0 5 18 10 -1. - <_> - 9 5 9 5 2. - <_> - 0 10 9 5 2. - <_> - - <_> - 8 3 5 6 -1. - <_> - 6 5 5 2 3. - 1 - <_> - - <_> - 11 4 3 6 -1. - <_> - 12 6 1 2 9. - <_> - - <_> - 8 6 1 8 -1. - <_> - 8 6 1 4 2. - 1 - <_> - - <_> - 1 7 16 6 -1. - <_> - 1 9 16 2 3. - <_> - - <_> - 4 4 3 6 -1. - <_> - 5 6 1 2 9. - <_> - - <_> - 16 8 2 2 -1. - <_> - 16 8 1 2 2. - 1 - <_> - - <_> - 1 8 16 4 -1. - <_> - 1 8 8 2 2. - <_> - 9 10 8 2 2. - <_> - - <_> - 1 11 17 4 -1. - <_> - 1 12 17 2 2. - <_> - - <_> - 0 13 6 2 -1. - <_> - 0 13 3 1 2. - <_> - 3 14 3 1 2. - <_> - - <_> - 12 6 1 4 -1. - <_> - 12 6 1 2 2. - 1 - <_> - - <_> - 2 0 3 8 -1. - <_> - 3 0 1 8 3. - <_> - - <_> - 0 4 18 6 -1. - <_> - 6 4 6 6 3. - <_> - - <_> - 6 6 4 1 -1. - <_> - 6 6 2 1 2. - 1 - <_> - - <_> - 8 0 6 10 -1. - <_> - 10 0 2 10 3. - <_> - - <_> - 6 9 2 2 -1. - <_> - 6 9 1 1 2. - <_> - 7 10 1 1 2. - <_> - - <_> - 17 9 1 4 -1. - <_> - 17 10 1 2 2. - <_> - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 1 2. - <_> - 6 9 1 1 2. - <_> - - <_> - 17 9 1 4 -1. - <_> - 17 10 1 2 2. - <_> - - <_> - 3 2 1 3 -1. - <_> - 2 3 1 1 3. - 1 - <_> - - <_> - 15 1 3 2 -1. - <_> - 16 2 1 2 3. - 1 - <_> - - <_> - 0 9 1 4 -1. - <_> - 0 10 1 2 2. - <_> - - <_> - 12 7 3 3 -1. - <_> - 12 8 3 1 3. - <_> - - <_> - 7 0 4 2 -1. - <_> - 9 0 2 2 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 1 2 2. - <_> - - <_> - 1 5 15 4 -1. - <_> - 1 7 15 2 2. - <_> - - <_> - 9 4 4 8 -1. - <_> - 9 6 4 4 2. - <_> - - <_> - 7 0 2 2 -1. - <_> - 8 0 1 2 2. - <_> - - <_> - 4 3 10 2 -1. - <_> - 9 3 5 1 2. - <_> - 4 4 5 1 2. - <_> - - <_> - 4 0 6 11 -1. - <_> - 6 0 2 11 3. - <_> - - <_> - 3 11 12 4 -1. - <_> - 3 12 12 2 2. - <_> - - <_> - 1 7 12 6 -1. - <_> - 5 9 4 2 9. - <_> - - <_> - 14 0 4 1 -1. - <_> - 15 1 2 1 2. - 1 - <_> - - <_> - 4 0 1 4 -1. - <_> - 3 1 1 2 2. - 1 - <_> - - <_> - 12 7 3 3 -1. - <_> - 12 8 3 1 3. - <_> - - <_> - 3 7 3 3 -1. - <_> - 3 8 3 1 3. - <_> - - <_> - 5 0 12 15 -1. - <_> - 5 5 12 5 3. - <_> - - <_> - 6 9 2 2 -1. - <_> - 6 9 1 1 2. - <_> - 7 10 1 1 2. - <_> - - <_> - 13 3 2 2 -1. - <_> - 13 4 2 1 2. - <_> - - <_> - 1 3 15 8 -1. - <_> - 1 5 15 4 2. - <_> - - <_> - 9 6 2 3 -1. - <_> - 9 7 2 1 3. - <_> - - <_> - 6 5 4 3 -1. - <_> - 5 6 4 1 3. - 1 - <_> - - <_> - 5 2 4 4 -1. - <_> - 7 2 2 4 2. - <_> - - <_> - 8 7 4 2 -1. - <_> - 8 8 4 1 2. - <_> - - <_> - 4 3 8 2 -1. - <_> - 4 3 8 1 2. - 1 - <_> - - <_> - 2 3 16 10 -1. - <_> - 2 3 8 10 2. - <_> - - <_> - 2 2 12 8 -1. - <_> - 2 4 12 4 2. - <_> - - <_> - 14 2 4 2 -1. - <_> - 14 2 2 2 2. - <_> - - <_> - 0 4 2 9 -1. - <_> - 0 7 2 3 3. - <_> - - <_> - 4 3 10 8 -1. - <_> - 4 7 10 4 2. - <_> - - <_> - 0 2 4 3 -1. - <_> - 2 2 2 3 2. - <_> - - <_> - 8 1 2 4 -1. - <_> - 8 1 1 4 2. - <_> - - <_> - 7 0 1 4 -1. - <_> - 6 1 1 2 2. - 1 - <_> - - <_> - 3 0 12 1 -1. - <_> - 6 0 6 1 2. - <_> - - <_> - 2 8 14 4 -1. - <_> - 2 10 14 2 2. - <_> - - <_> - 1 10 16 2 -1. - <_> - 1 11 16 1 2. - <_> - - <_> - 2 9 4 2 -1. - <_> - 2 9 2 2 2. - 1 - <_> - - <_> - 7 7 8 2 -1. - <_> - 11 7 4 1 2. - <_> - 7 8 4 1 2. - <_> - - <_> - 0 0 18 10 -1. - <_> - 0 0 9 5 2. - <_> - 9 5 9 5 2. - <_> - - <_> - 11 0 5 10 -1. - <_> - 11 0 5 5 2. - 1 - <_> - - <_> - 6 6 6 2 -1. - <_> - 6 7 6 1 2. - <_> - - <_> - 7 3 4 6 -1. - <_> - 7 6 4 3 2. - <_> - - <_> - 0 1 4 14 -1. - <_> - 0 8 4 7 2. - <_> - - <_> - 12 11 2 1 -1. - <_> - 12 11 1 1 2. - 1 - <_> - - <_> - 6 11 1 2 -1. - <_> - 6 11 1 1 2. - 1 - <_> - - <_> - 3 4 12 6 -1. - <_> - 3 6 12 2 3. - <_> - - <_> - 2 0 4 8 -1. - <_> - 2 4 4 4 2. - <_> - - <_> - 15 0 2 10 -1. - <_> - 15 0 1 10 2. - 1 - <_> - - <_> - 3 0 10 2 -1. - <_> - 3 0 10 1 2. - 1 - <_> - - <_> - 11 1 4 10 -1. - <_> - 11 1 4 5 2. - 1 - <_> - - <_> - 7 1 10 4 -1. - <_> - 7 1 5 4 2. - 1 - <_> - - <_> - 5 0 9 7 -1. - <_> - 8 0 3 7 3. - <_> - - <_> - 7 2 2 4 -1. - <_> - 8 2 1 4 2. - <_> - - <_> - 3 2 12 8 -1. - <_> - 3 4 12 4 2. - <_> - - <_> - 0 9 18 2 -1. - <_> - 0 10 18 1 2. - <_> - - <_> - 12 7 2 4 -1. - <_> - 12 7 1 4 2. - 1 - <_> - - <_> - 6 7 5 2 -1. - <_> - 6 7 5 1 2. - 1 - <_> - - <_> - 11 13 4 2 -1. - <_> - 12 13 2 2 2. - <_> - - <_> - 4 0 10 2 -1. - <_> - 4 0 5 1 2. - <_> - 9 1 5 1 2. - <_> - - <_> - 5 0 8 2 -1. - <_> - 9 0 4 1 2. - <_> - 5 1 4 1 2. - <_> - - <_> - 3 9 6 6 -1. - <_> - 3 9 3 3 2. - <_> - 6 12 3 3 2. - <_> - - <_> - 6 13 9 2 -1. - <_> - 9 13 3 2 3. - <_> - - <_> - 8 0 1 3 -1. - <_> - 7 1 1 1 3. - 1 - <_> - - <_> - 14 10 3 2 -1. - <_> - 15 11 1 2 3. - 1 - <_> - - <_> - 5 0 3 6 -1. - <_> - 5 3 3 3 2. - <_> - - <_> - 4 0 12 8 -1. - <_> - 8 0 4 8 3. - <_> - - <_> - 2 0 12 8 -1. - <_> - 6 0 4 8 3. - <_> - - <_> - 5 0 12 5 -1. - <_> - 8 0 6 5 2. - <_> - - <_> - 1 0 12 5 -1. - <_> - 4 0 6 5 2. - <_> - - <_> - 7 0 4 14 -1. - <_> - 9 0 2 7 2. - <_> - 7 7 2 7 2. - <_> - - <_> - 9 0 9 2 -1. - <_> - 9 0 9 1 2. - 1 - <_> - - <_> - 0 6 18 4 -1. - <_> - 9 6 9 2 2. - <_> - 0 8 9 2 2. - <_> - - <_> - 9 0 4 2 -1. - <_> - 10 1 2 2 2. - 1 - <_> - - <_> - 3 3 12 6 -1. - <_> - 7 5 4 2 9. - <_> - - <_> - 4 1 3 4 -1. - <_> - 5 2 1 4 3. - 1 - <_> - - <_> - 16 2 2 2 -1. - <_> - 17 2 1 1 2. - <_> - 16 3 1 1 2. - <_> - - <_> - 0 2 2 2 -1. - <_> - 0 2 1 1 2. - <_> - 1 3 1 1 2. - <_> - - <_> - 17 2 1 2 -1. - <_> - 17 3 1 1 2. - <_> - - <_> - 0 2 1 2 -1. - <_> - 0 3 1 1 2. - <_> - - <_> - 10 7 1 3 -1. - <_> - 9 8 1 1 3. - 1 - <_> - - <_> - 1 2 1 4 -1. - <_> - 1 3 1 2 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - <_> - - <_> - 9 0 8 6 -1. - <_> - 9 0 8 3 2. - 1 - <_> - - <_> - 12 6 3 4 -1. - <_> - 13 7 1 4 3. - 1 - <_> - - <_> - 3 3 1 3 -1. - <_> - 2 4 1 1 3. - 1 - <_> - - <_> - 11 7 3 4 -1. - <_> - 12 8 1 4 3. - 1 - <_> - - <_> - 7 7 4 3 -1. - <_> - 6 8 4 1 3. - 1 - <_> - - <_> - 8 8 3 2 -1. - <_> - 8 9 3 1 2. - <_> - - <_> - 3 8 8 2 -1. - <_> - 3 8 4 1 2. - <_> - 7 9 4 1 2. - <_> - - <_> - 11 8 4 6 -1. - <_> - 11 10 4 2 3. - <_> - - <_> - 1 11 14 4 -1. - <_> - 8 11 7 4 2. - <_> - - <_> - 9 13 6 2 -1. - <_> - 11 13 2 2 3. - <_> - - <_> - 3 13 6 2 -1. - <_> - 5 13 2 2 3. - <_> - - <_> - 1 11 16 2 -1. - <_> - 1 12 16 1 2. - <_> - - <_> - 1 10 16 4 -1. - <_> - 1 12 16 2 2. - <_> - - <_> - 12 13 6 2 -1. - <_> - 14 13 2 2 3. - <_> - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 1 14 12 1 -1. - <_> - 5 14 4 1 3. - <_> - - <_> - 6 3 6 6 -1. - <_> - 6 6 6 3 2. - <_> - - <_> - 7 12 4 3 -1. - <_> - 8 12 2 3 2. - <_> - - <_> - 9 9 1 2 -1. - <_> - 9 9 1 1 2. - 1 - <_> - - <_> - 9 9 2 1 -1. - <_> - 9 9 1 1 2. - 1 - <_> - - <_> - 12 10 2 2 -1. - <_> - 13 10 1 1 2. - <_> - 12 11 1 1 2. - <_> - - <_> - 0 6 1 3 -1. - <_> - 0 7 1 1 3. - <_> - - <_> - 1 6 16 4 -1. - <_> - 1 7 16 2 2. - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 7 1 1 3. - 1 - <_> - - <_> - 12 10 2 2 -1. - <_> - 13 10 1 1 2. - <_> - 12 11 1 1 2. - <_> - - <_> - 4 2 2 2 -1. - <_> - 5 2 1 2 2. - <_> - - <_> - 7 0 4 11 -1. - <_> - 7 0 2 11 2. - <_> - - <_> - 8 5 3 3 -1. - <_> - 7 6 3 1 3. - 1 - <_> - - <_> - 14 1 2 14 -1. - <_> - 14 8 2 7 2. - <_> - - <_> - 5 0 8 2 -1. - <_> - 7 0 4 2 2. - <_> - - <_> - 1 3 16 7 -1. - <_> - 5 3 8 7 2. - <_> - - <_> - 4 1 9 3 -1. - <_> - 4 2 9 1 3. - <_> - - <_> - 6 2 8 13 -1. - <_> - 6 2 4 13 2. - <_> - - <_> - 4 0 9 1 -1. - <_> - 7 0 3 1 3. - <_> - - <_> - 15 4 3 3 -1. - <_> - 14 5 3 1 3. - 1 - <_> - - <_> - 8 7 1 2 -1. - <_> - 8 8 1 1 2. - <_> - - <_> - 11 8 3 3 -1. - <_> - 11 9 3 1 3. - <_> - - <_> - 3 4 3 3 -1. - <_> - 4 5 1 3 3. - 1 - <_> - - <_> - 15 3 3 3 -1. - <_> - 14 4 3 1 3. - 1 - <_> - - <_> - 3 3 3 3 -1. - <_> - 4 4 1 3 3. - 1 - <_> - - <_> - 7 0 8 2 -1. - <_> - 11 0 4 1 2. - <_> - 7 1 4 1 2. - <_> - - <_> - 1 6 6 9 -1. - <_> - 3 6 2 9 3. - <_> - - <_> - 11 5 2 2 -1. - <_> - 12 5 1 1 2. - <_> - 11 6 1 1 2. - <_> - - <_> - 5 5 2 2 -1. - <_> - 5 5 1 1 2. - <_> - 6 6 1 1 2. - <_> - - <_> - 14 1 3 14 -1. - <_> - 14 8 3 7 2. - <_> - - <_> - 2 5 6 8 -1. - <_> - 4 5 2 8 3. - <_> - - <_> - 9 4 4 2 -1. - <_> - 10 4 2 2 2. - <_> - - <_> - 4 1 8 14 -1. - <_> - 8 1 4 14 2. - <_> - - <_> - 9 4 4 2 -1. - <_> - 10 4 2 2 2. - <_> - - <_> - 4 7 3 7 -1. - <_> - 5 7 1 7 3. - <_> - - <_> - 8 0 8 3 -1. - <_> - 10 2 4 3 2. - 1 - <_> - - <_> - 8 3 10 10 -1. - <_> - 13 3 5 5 2. - <_> - 8 8 5 5 2. - <_> - - <_> - 0 0 8 5 -1. - <_> - 2 0 4 5 2. - <_> - - <_> - 12 8 6 6 -1. - <_> - 12 8 3 6 2. - <_> - - <_> - 0 8 6 6 -1. - <_> - 3 8 3 6 2. - <_> - - <_> - 10 0 3 1 -1. - <_> - 11 1 1 1 3. - 1 - <_> - - <_> - 5 0 11 4 -1. - <_> - 4 1 11 2 2. - 1 - <_> - - <_> - 2 12 16 2 -1. - <_> - 2 13 16 1 2. - <_> - - <_> - 8 0 1 3 -1. - <_> - 7 1 1 1 3. - 1 - <_> - - <_> - 11 0 4 2 -1. - <_> - 11 0 2 2 2. - 1 - <_> - - <_> - 8 0 3 4 -1. - <_> - 7 1 3 2 2. - 1 - <_> - - <_> - 5 0 8 14 -1. - <_> - 5 0 4 14 2. - <_> - - <_> - 6 7 3 2 -1. - <_> - 6 8 3 1 2. - <_> - - <_> - 10 0 3 8 -1. - <_> - 8 2 3 4 2. - 1 - <_> - - <_> - 8 0 8 3 -1. - <_> - 10 2 4 3 2. - 1 - <_> - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - <_> - - <_> - 9 1 9 2 -1. - <_> - 12 4 3 2 3. - 1 - <_> - - <_> - 3 6 12 9 -1. - <_> - 3 6 6 9 2. - <_> - - <_> - 5 5 8 2 -1. - <_> - 5 6 8 1 2. - <_> - - <_> - 13 6 2 6 -1. - <_> - 13 6 1 6 2. - 1 - <_> - - <_> - 0 0 18 6 -1. - <_> - 0 0 9 3 2. - <_> - 9 3 9 3 2. - <_> - - <_> - 13 6 2 6 -1. - <_> - 13 6 1 6 2. - 1 - <_> - - <_> - 5 6 6 2 -1. - <_> - 5 6 6 1 2. - 1 - <_> - - <_> - 12 8 4 3 -1. - <_> - 13 9 2 3 2. - 1 - <_> - - <_> - 0 5 18 8 -1. - <_> - 0 5 9 4 2. - <_> - 9 9 9 4 2. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - <_> - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - <_> - - <_> - 13 0 5 3 -1. - <_> - 12 1 5 1 3. - 1 - <_> - - <_> - 7 8 4 2 -1. - <_> - 7 9 4 1 2. - <_> - - <_> - 12 7 3 3 -1. - <_> - 13 8 1 3 3. - 1 - <_> - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - <_> - - <_> - 16 10 2 2 -1. - <_> - 16 11 2 1 2. - <_> - - <_> - 8 7 2 1 -1. - <_> - 8 7 1 1 2. - 1 - <_> - - <_> - 6 4 6 4 -1. - <_> - 6 6 6 2 2. - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 7 1 1 3. - 1 - <_> - - <_> - 12 7 3 3 -1. - <_> - 13 8 1 3 3. - 1 - <_> - - <_> - 6 7 3 3 -1. - <_> - 5 8 3 1 3. - 1 - <_> - - <_> - 14 0 4 2 -1. - <_> - 15 1 2 2 2. - 1 - <_> - - <_> - 0 10 2 2 -1. - <_> - 0 11 2 1 2. - <_> - - <_> - 12 4 2 6 -1. - <_> - 12 6 2 2 3. - <_> - - <_> - 2 12 1 2 -1. - <_> - 2 12 1 1 2. - 1 - <_> - - <_> - 14 0 4 3 -1. - <_> - 13 1 4 1 3. - 1 - <_> - - <_> - 7 5 3 7 -1. - <_> - 8 5 1 7 3. - <_> - - <_> - 7 0 4 11 -1. - <_> - 7 0 2 11 2. - <_> - - <_> - 9 2 1 2 -1. - <_> - 9 2 1 1 2. - 1 - <_> - - <_> - 14 0 4 3 -1. - <_> - 13 1 4 1 3. - 1 - <_> - - <_> - 4 3 3 4 -1. - <_> - 5 4 1 4 3. - 1 - <_> - - <_> - 3 0 14 2 -1. - <_> - 10 0 7 1 2. - <_> - 3 1 7 1 2. - <_> - - <_> - 0 0 4 6 -1. - <_> - 0 0 2 3 2. - <_> - 2 3 2 3 2. - <_> - - <_> - 14 0 4 2 -1. - <_> - 15 1 2 2 2. - 1 - <_> - - <_> - 4 0 2 4 -1. - <_> - 3 1 2 2 2. - 1 - <_> - - <_> - 0 0 18 8 -1. - <_> - 9 0 9 4 2. - <_> - 0 4 9 4 2. - <_> - - <_> - 3 0 4 3 -1. - <_> - 4 1 2 3 2. - 1 - <_> - - <_> - 12 5 6 2 -1. - <_> - 12 6 6 1 2. - <_> - - <_> - 4 0 3 4 -1. - <_> - 5 1 1 4 3. - 1 - <_> - - <_> - 15 0 3 15 -1. - <_> - 16 0 1 15 3. - <_> - - <_> - 0 0 3 15 -1. - <_> - 1 0 1 15 3. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 1 2 1 2. - <_> - - <_> - 7 0 2 1 -1. - <_> - 8 0 1 1 2. - <_> - - <_> - 15 1 3 14 -1. - <_> - 15 8 3 7 2. - <_> - - <_> - 0 1 4 12 -1. - <_> - 0 7 4 6 2. - <_> - - <_> - 8 2 10 7 -1. - <_> - 8 2 5 7 2. - <_> - - <_> - 2 0 9 6 -1. - <_> - 2 3 9 3 2. - <_> - - <_> - 3 3 12 6 -1. - <_> - 3 5 12 2 3. - <_> - - <_> - 0 5 10 2 -1. - <_> - 5 5 5 2 2. - <_> - - <_> - 13 9 3 3 -1. - <_> - 14 10 1 3 3. - 1 - <_> - - <_> - 1 11 3 3 -1. - <_> - 2 11 1 3 3. - <_> - - <_> - 13 3 5 12 -1. - <_> - 13 9 5 6 2. - <_> - - <_> - 0 8 4 4 -1. - <_> - 0 8 2 2 2. - <_> - 2 10 2 2 2. - <_> - - <_> - 12 8 6 1 -1. - <_> - 14 8 2 1 3. - <_> - - <_> - 0 5 1 6 -1. - <_> - 0 7 1 2 3. - <_> - - <_> - 1 5 16 6 -1. - <_> - 1 7 16 2 3. - <_> - - <_> - 6 6 6 2 -1. - <_> - 6 7 6 1 2. - <_> - - <_> - 10 3 3 6 -1. - <_> - 11 5 1 2 9. - <_> - - <_> - 5 3 3 6 -1. - <_> - 6 5 1 2 9. - <_> - - <_> - 13 3 5 12 -1. - <_> - 13 9 5 6 2. - <_> - - <_> - 1 8 4 2 -1. - <_> - 2 8 2 2 2. - <_> - - <_> - 12 4 3 11 -1. - <_> - 13 4 1 11 3. - <_> - - <_> - 0 3 5 12 -1. - <_> - 0 9 5 6 2. - <_> - - <_> - 12 4 3 11 -1. - <_> - 13 4 1 11 3. - <_> - - <_> - 5 13 4 2 -1. - <_> - 5 14 4 1 2. - <_> - - <_> - 11 13 1 2 -1. - <_> - 11 14 1 1 2. - <_> - - <_> - 0 4 7 2 -1. - <_> - 0 5 7 1 2. - <_> - - <_> - 14 4 3 3 -1. - <_> - 13 5 3 1 3. - 1 - <_> - - <_> - 5 0 8 7 -1. - <_> - 7 0 4 7 2. - <_> - - <_> - 4 0 12 15 -1. - <_> - 8 0 4 15 3. - <_> - - <_> - 0 0 1 3 -1. - <_> - 0 1 1 1 3. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 16 10 2 1 -1. - <_> - 16 10 1 1 2. - <_> - - <_> - 3 2 3 13 -1. - <_> - 4 2 1 13 3. - <_> - - <_> - 14 4 3 3 -1. - <_> - 13 5 3 1 3. - 1 - <_> - - <_> - 5 3 8 4 -1. - <_> - 5 5 8 2 2. - <_> - - <_> - 12 0 3 1 -1. - <_> - 13 1 1 1 3. - 1 - <_> - - <_> - 4 0 8 13 -1. - <_> - 6 0 4 13 2. - <_> - - <_> - 11 1 1 4 -1. - <_> - 10 2 1 2 2. - 1 - <_> - - <_> - 7 1 4 1 -1. - <_> - 8 2 2 1 2. - 1 - <_> - - <_> - 14 4 3 3 -1. - <_> - 13 5 3 1 3. - 1 - <_> - - <_> - 4 4 3 3 -1. - <_> - 5 5 1 3 3. - 1 - <_> - - <_> - 17 2 1 8 -1. - <_> - 17 2 1 4 2. - 1 - <_> - - <_> - 1 2 8 1 -1. - <_> - 1 2 4 1 2. - 1 - <_> - - <_> - 11 6 3 4 -1. - <_> - 12 7 1 4 3. - 1 - <_> - - <_> - 7 6 4 3 -1. - <_> - 6 7 4 1 3. - 1 - <_> - - <_> - 14 1 4 3 -1. - <_> - 13 2 4 1 3. - 1 - <_> - - <_> - 0 4 8 3 -1. - <_> - 0 5 8 1 3. - <_> - - <_> - 10 3 6 6 -1. - <_> - 10 5 6 2 3. - <_> - - <_> - 4 1 6 8 -1. - <_> - 4 1 3 4 2. - <_> - 7 5 3 4 2. - <_> - - <_> - 10 4 4 2 -1. - <_> - 10 4 2 2 2. - 1 - <_> - - <_> - 6 13 1 2 -1. - <_> - 6 14 1 1 2. - <_> - - <_> - 9 11 3 4 -1. - <_> - 9 12 3 2 2. - <_> - - <_> - 1 11 10 4 -1. - <_> - 1 13 10 2 2. - <_> - - <_> - 14 1 4 2 -1. - <_> - 14 1 4 1 2. - 1 - <_> - - <_> - 3 1 12 8 -1. - <_> - 3 3 12 4 2. - <_> - - <_> - 12 4 2 8 -1. - <_> - 12 4 1 8 2. - 1 - <_> - - <_> - 6 4 8 2 -1. - <_> - 6 4 8 1 2. - 1 - <_> - - <_> - 7 0 6 1 -1. - <_> - 7 0 3 1 2. - <_> - - <_> - 3 5 12 6 -1. - <_> - 7 7 4 2 9. - <_> - - <_> - 10 3 1 2 -1. - <_> - 10 4 1 1 2. - <_> - - <_> - 9 0 6 3 -1. - <_> - 8 1 6 1 3. - 1 - <_> - - <_> - 16 5 2 3 -1. - <_> - 16 6 2 1 3. - <_> - - <_> - 2 7 4 4 -1. - <_> - 2 7 2 2 2. - <_> - 4 9 2 2 2. - <_> - - <_> - 16 5 2 3 -1. - <_> - 16 6 2 1 3. - <_> - - <_> - 0 5 2 3 -1. - <_> - 0 6 2 1 3. - <_> - - <_> - 12 6 2 4 -1. - <_> - 12 6 1 4 2. - 1 - <_> - - <_> - 4 13 8 2 -1. - <_> - 6 13 4 2 2. - <_> - - <_> - 8 0 2 3 -1. - <_> - 8 0 1 3 2. - <_> - - <_> - 4 3 10 12 -1. - <_> - 4 3 5 6 2. - <_> - 9 9 5 6 2. - <_> - - <_> - 7 11 8 4 -1. - <_> - 7 11 4 4 2. - <_> - - <_> - 3 11 8 4 -1. - <_> - 7 11 4 4 2. - <_> - - <_> - 13 6 2 2 -1. - <_> - 14 6 1 1 2. - <_> - 13 7 1 1 2. - <_> - - <_> - 3 6 2 2 -1. - <_> - 3 6 1 1 2. - <_> - 4 7 1 1 2. - <_> - - <_> - 12 0 3 1 -1. - <_> - 13 1 1 1 3. - 1 - <_> - - <_> - 4 1 4 6 -1. - <_> - 4 4 4 3 2. - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 5 0 7 3 -1. - <_> - 5 1 7 1 3. - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 17 0 1 6 -1. - <_> - 17 2 1 2 3. - <_> - - <_> - 3 11 12 2 -1. - <_> - 3 12 12 1 2. - <_> - - <_> - 17 11 1 2 -1. - <_> - 17 12 1 1 2. - <_> - - <_> - 7 1 4 2 -1. - <_> - 7 2 4 1 2. - <_> - - <_> - 15 2 3 3 -1. - <_> - 14 3 3 1 3. - 1 - <_> - - <_> - 5 0 8 2 -1. - <_> - 5 1 8 1 2. - <_> - - <_> - 9 2 8 2 -1. - <_> - 9 2 4 2 2. - <_> - - <_> - 1 0 12 15 -1. - <_> - 7 0 6 15 2. - <_> - - <_> - 17 0 1 6 -1. - <_> - 17 2 1 2 3. - <_> - - <_> - 0 0 1 6 -1. - <_> - 0 2 1 2 3. - <_> - - <_> - 14 0 4 2 -1. - <_> - 14 0 4 1 2. - 1 - <_> - - <_> - 5 0 3 5 -1. - <_> - 6 1 1 5 3. - 1 - <_> - - <_> - 13 0 3 4 -1. - <_> - 14 0 1 4 3. - <_> - - <_> - 9 3 4 8 -1. - <_> - 9 3 2 8 2. - 1 - <_> - - <_> - 15 3 2 3 -1. - <_> - 14 4 2 1 3. - 1 - <_> - - <_> - 3 3 3 2 -1. - <_> - 4 4 1 2 3. - 1 - <_> - - <_> - 12 3 2 2 -1. - <_> - 13 3 1 1 2. - <_> - 12 4 1 1 2. - <_> - - <_> - 4 3 2 2 -1. - <_> - 4 3 1 1 2. - <_> - 5 4 1 1 2. - <_> - - <_> - 15 0 3 3 -1. - <_> - 16 0 1 3 3. - <_> - - <_> - 0 0 3 3 -1. - <_> - 1 0 1 3 3. - <_> - - <_> - 4 6 10 4 -1. - <_> - 4 8 10 2 2. - <_> - - <_> - 9 2 4 8 -1. - <_> - 9 2 2 8 2. - <_> - - <_> - 1 0 9 12 -1. - <_> - 4 0 3 12 3. - <_> - - <_> - 6 4 12 10 -1. - <_> - 12 4 6 5 2. - <_> - 6 9 6 5 2. - <_> - - <_> - 9 0 9 2 -1. - <_> - 9 0 9 1 2. - 1 - <_> - - <_> - 14 1 4 3 -1. - <_> - 13 2 4 1 3. - 1 - <_> - - <_> - 2 0 10 4 -1. - <_> - 2 2 10 2 2. - <_> - - <_> - 14 1 4 3 -1. - <_> - 13 2 4 1 3. - 1 - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 14 1 4 3 -1. - <_> - 13 2 4 1 3. - 1 - <_> - - <_> - 6 6 4 3 -1. - <_> - 5 7 4 1 3. - 1 - <_> - - <_> - 12 7 2 4 -1. - <_> - 12 8 2 2 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 10 0 8 6 -1. - <_> - 14 0 4 3 2. - <_> - 10 3 4 3 2. - <_> - - <_> - 0 0 18 10 -1. - <_> - 0 0 9 5 2. - <_> - 9 5 9 5 2. - <_> - - <_> - 16 0 2 8 -1. - <_> - 16 4 2 4 2. - <_> - - <_> - 0 0 2 8 -1. - <_> - 0 4 2 4 2. - <_> - - <_> - 14 10 4 1 -1. - <_> - 15 11 2 1 2. - 1 - <_> - - <_> - 4 7 2 4 -1. - <_> - 4 8 2 2 2. - <_> - - <_> - 14 10 4 1 -1. - <_> - 15 11 2 1 2. - 1 - <_> - - <_> - 4 10 1 4 -1. - <_> - 3 11 1 2 2. - 1 - <_> - - <_> - 13 0 1 4 -1. - <_> - 13 0 1 2 2. - 1 - <_> - - <_> - 9 0 8 6 -1. - <_> - 9 0 8 3 2. - 1 - <_> - - <_> - 1 0 16 4 -1. - <_> - 9 0 8 2 2. - <_> - 1 2 8 2 2. - <_> - - <_> - 1 3 16 11 -1. - <_> - 5 3 8 11 2. - <_> - - <_> - 9 1 4 1 -1. - <_> - 9 1 2 1 2. - 1 - <_> - - <_> - 3 9 4 4 -1. - <_> - 3 10 4 2 2. - <_> - - <_> - 2 3 14 9 -1. - <_> - 2 6 14 3 3. - <_> - - <_> - 7 5 4 2 -1. - <_> - 7 6 4 1 2. - <_> - - <_> - 13 0 2 4 -1. - <_> - 13 0 1 4 2. - 1 - <_> - - <_> - 0 11 4 4 -1. - <_> - 1 11 2 4 2. - <_> - - <_> - 13 0 2 4 -1. - <_> - 13 0 1 4 2. - 1 - <_> - - <_> - 5 0 4 2 -1. - <_> - 5 0 4 1 2. - 1 - <_> - - <_> - 13 0 4 1 -1. - <_> - 14 1 2 1 2. - 1 - <_> - - <_> - 0 1 4 12 -1. - <_> - 0 7 4 6 2. - <_> - - <_> - 2 3 16 12 -1. - <_> - 10 3 8 6 2. - <_> - 2 9 8 6 2. - <_> - - <_> - 5 5 8 2 -1. - <_> - 5 5 4 1 2. - <_> - 9 6 4 1 2. - <_> - - <_> - 13 0 4 1 -1. - <_> - 14 1 2 1 2. - 1 - <_> - - <_> - 6 0 3 6 -1. - <_> - 7 1 1 6 3. - 1 - <_> - - <_> - 13 0 4 1 -1. - <_> - 14 1 2 1 2. - 1 - <_> - - <_> - 7 0 8 7 -1. - <_> - 9 2 4 7 2. - 1 - <_> - - <_> - 13 0 4 1 -1. - <_> - 14 1 2 1 2. - 1 - <_> - - <_> - 5 0 1 4 -1. - <_> - 4 1 1 2 2. - 1 - <_> - - <_> - 16 2 2 3 -1. - <_> - 15 3 2 1 3. - 1 - <_> - - <_> - 2 2 3 2 -1. - <_> - 3 3 1 2 3. - 1 - <_> - - <_> - 14 0 4 3 -1. - <_> - 13 1 4 1 3. - 1 - <_> - - <_> - 4 0 3 4 -1. - <_> - 5 1 1 4 3. - 1 - <_> - - <_> - 8 13 7 2 -1. - <_> - 8 14 7 1 2. - <_> - - <_> - 8 3 1 2 -1. - <_> - 8 3 1 1 2. - 1 - <_> - - <_> - 9 0 4 8 -1. - <_> - 10 1 2 8 2. - 1 - <_> - - <_> - 9 0 8 4 -1. - <_> - 8 1 8 2 2. - 1 - <_> - - <_> - 5 0 12 10 -1. - <_> - 9 0 4 10 3. - <_> - - <_> - 7 7 3 2 -1. - <_> - 7 7 3 1 2. - 1 - <_> - - <_> - 9 5 9 10 -1. - <_> - 9 10 9 5 2. - <_> - - <_> - 1 0 12 10 -1. - <_> - 5 0 4 10 3. - <_> - - <_> - 5 0 8 7 -1. - <_> - 5 0 4 7 2. - <_> - - <_> - 6 0 2 2 -1. - <_> - 6 0 1 1 2. - <_> - 7 1 1 1 2. - <_> - - <_> - 0 11 18 4 -1. - <_> - 0 12 18 2 2. - <_> - - <_> - 0 5 5 10 -1. - <_> - 0 10 5 5 2. - <_> - - <_> - 8 9 3 3 -1. - <_> - 9 9 1 3 3. - <_> - - <_> - 0 13 2 2 -1. - <_> - 0 13 1 1 2. - <_> - 1 14 1 1 2. - <_> - - <_> - 16 13 2 2 -1. - <_> - 17 13 1 1 2. - <_> - 16 14 1 1 2. - <_> - - <_> - 0 13 2 2 -1. - <_> - 0 13 1 1 2. - <_> - 1 14 1 1 2. - <_> - - <_> - 9 0 4 1 -1. - <_> - 10 1 2 1 2. - 1 - <_> - - <_> - 0 9 18 2 -1. - <_> - 0 10 18 1 2. - <_> - - <_> - 14 5 2 6 -1. - <_> - 14 5 1 6 2. - 1 - <_> - - <_> - 0 9 18 6 -1. - <_> - 0 9 9 3 2. - <_> - 9 12 9 3 2. - <_> - - <_> - 9 1 1 4 -1. - <_> - 9 2 1 2 2. - <_> - - <_> - 1 0 1 4 -1. - <_> - 1 1 1 2 2. - <_> - - <_> - 1 0 16 2 -1. - <_> - 9 0 8 1 2. - <_> - 1 1 8 1 2. - <_> - - <_> - 8 0 2 2 -1. - <_> - 8 0 1 1 2. - <_> - 9 1 1 1 2. - <_> - - <_> - 12 7 2 4 -1. - <_> - 12 7 1 4 2. - 1 - <_> - - <_> - 6 8 3 4 -1. - <_> - 7 8 1 4 3. - <_> - - <_> - 12 7 2 4 -1. - <_> - 12 7 1 4 2. - 1 - <_> - - <_> - 6 7 4 2 -1. - <_> - 6 7 4 1 2. - 1 - <_> - - <_> - 12 8 3 2 -1. - <_> - 12 9 3 1 2. - <_> - - <_> - 0 5 17 6 -1. - <_> - 0 7 17 2 3. - <_> - - <_> - 14 6 2 2 -1. - <_> - 15 6 1 1 2. - <_> - 14 7 1 1 2. - <_> - - <_> - 8 8 3 1 -1. - <_> - 9 9 1 1 3. - 1 - <_> - - <_> - 14 6 2 2 -1. - <_> - 15 6 1 1 2. - <_> - 14 7 1 1 2. - <_> - - <_> - 9 7 3 1 -1. - <_> - 10 8 1 1 3. - 1 - <_> - - <_> - 9 0 1 6 -1. - <_> - 9 0 1 3 2. - 1 - <_> - - <_> - 9 0 6 1 -1. - <_> - 9 0 3 1 2. - 1 - <_> - - <_> - 6 5 6 10 -1. - <_> - 6 5 3 10 2. - <_> - - <_> - 9 1 1 2 -1. - <_> - 9 1 1 1 2. - 1 - <_> - - <_> - 14 6 2 2 -1. - <_> - 15 6 1 1 2. - <_> - 14 7 1 1 2. - <_> - - <_> - 2 6 2 2 -1. - <_> - 2 6 1 1 2. - <_> - 3 7 1 1 2. - <_> - - <_> - 14 6 2 2 -1. - <_> - 15 6 1 1 2. - <_> - 14 7 1 1 2. - <_> - - <_> - 2 6 2 2 -1. - <_> - 2 6 1 1 2. - <_> - 3 7 1 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 5 0 8 5 -1. - <_> - 7 0 4 5 2. - <_> - - <_> - 3 3 12 6 -1. - <_> - 7 5 4 2 9. - <_> - - <_> - 4 6 1 3 -1. - <_> - 4 7 1 1 3. - <_> - - <_> - 13 7 2 6 -1. - <_> - 13 9 2 2 3. - <_> - - <_> - 1 4 16 2 -1. - <_> - 1 4 8 1 2. - <_> - 9 5 8 1 2. - <_> - - <_> - 10 13 6 2 -1. - <_> - 12 13 2 2 3. - <_> - - <_> - 3 7 2 2 -1. - <_> - 3 7 1 1 2. - <_> - 4 8 1 1 2. - <_> - - <_> - 9 7 2 2 -1. - <_> - 9 8 2 1 2. - <_> - - <_> - 7 4 4 4 -1. - <_> - 7 4 2 2 2. - <_> - 9 6 2 2 2. - <_> - - <_> - 10 13 6 2 -1. - <_> - 12 13 2 2 3. - <_> - - <_> - 3 6 1 4 -1. - <_> - 3 8 1 2 2. - <_> - - <_> - 10 13 6 2 -1. - <_> - 12 13 2 2 3. - <_> - - <_> - 3 0 11 2 -1. - <_> - 3 1 11 1 2. - <_> - - <_> - 6 0 6 2 -1. - <_> - 6 1 6 1 2. - <_> - - <_> - 0 9 1 3 -1. - <_> - 0 10 1 1 3. - <_> - - <_> - 6 5 12 4 -1. - <_> - 12 5 6 2 2. - <_> - 6 7 6 2 2. - <_> - - <_> - 0 5 12 4 -1. - <_> - 0 5 6 2 2. - <_> - 6 7 6 2 2. - <_> - - <_> - 10 3 4 2 -1. - <_> - 10 3 2 2 2. - <_> - - <_> - 0 4 4 4 -1. - <_> - 0 6 4 2 2. - <_> - - <_> - 16 8 2 1 -1. - <_> - 16 8 1 1 2. - 1 - <_> - - <_> - 2 8 1 2 -1. - <_> - 2 8 1 1 2. - 1 - <_> - - <_> - 0 0 18 15 -1. - <_> - 6 0 6 15 3. - <_> - - <_> - 1 2 6 4 -1. - <_> - 4 2 3 4 2. - <_> - - <_> - 13 2 2 13 -1. - <_> - 13 2 1 13 2. - <_> - - <_> - 3 2 2 13 -1. - <_> - 4 2 1 13 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 3 0 3 3 -1. - <_> - 4 1 1 3 3. - 1 - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 2 12 16 2 -1. - <_> - 2 13 16 1 2. - <_> - - <_> - 2 13 14 2 -1. - <_> - 2 14 14 1 2. - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 1 0 1 2 -1. - <_> - 1 1 1 1 2. - <_> - - <_> - 15 0 2 2 -1. - <_> - 16 0 1 1 2. - <_> - 15 1 1 1 2. - <_> - - <_> - 1 0 2 2 -1. - <_> - 1 0 1 1 2. - <_> - 2 1 1 1 2. - <_> - - <_> - 15 0 2 2 -1. - <_> - 16 0 1 1 2. - <_> - 15 1 1 1 2. - <_> - - <_> - 4 0 1 4 -1. - <_> - 3 1 1 2 2. - 1 - <_> - - <_> - 15 0 2 2 -1. - <_> - 16 0 1 1 2. - <_> - 15 1 1 1 2. - <_> - - <_> - 1 0 2 2 -1. - <_> - 1 0 1 1 2. - <_> - 2 1 1 1 2. - <_> - - <_> - 8 3 8 2 -1. - <_> - 8 4 8 1 2. - <_> - - <_> - 6 0 1 3 -1. - <_> - 6 1 1 1 3. - <_> - - <_> - 8 6 4 4 -1. - <_> - 10 6 2 2 2. - <_> - 8 8 2 2 2. - <_> - - <_> - 5 1 7 6 -1. - <_> - 5 3 7 2 3. - <_> - - <_> - 7 0 6 15 -1. - <_> - 7 5 6 5 3. - <_> - - <_> - 6 6 4 4 -1. - <_> - 6 6 2 2 2. - <_> - 8 8 2 2 2. - <_> - - <_> - 8 6 2 2 -1. - <_> - 8 7 2 1 2. - <_> - - <_> - 7 7 2 1 -1. - <_> - 7 7 1 1 2. - 1 - <_> - - <_> - 13 6 4 3 -1. - <_> - 12 7 4 1 3. - 1 - <_> - - <_> - 5 6 3 4 -1. - <_> - 6 7 1 4 3. - 1 - <_> - - <_> - 13 0 2 12 -1. - <_> - 13 6 2 6 2. - <_> - - <_> - 3 1 1 10 -1. - <_> - 3 6 1 5 2. - <_> - - <_> - 10 3 1 8 -1. - <_> - 8 5 1 4 2. - 1 - <_> - - <_> - 8 3 8 1 -1. - <_> - 10 5 4 1 2. - 1 - <_> - - <_> - 0 3 18 2 -1. - <_> - 9 3 9 1 2. - <_> - 0 4 9 1 2. - <_> - - <_> - 4 1 3 4 -1. - <_> - 5 2 1 4 3. - 1 - <_> - - <_> - 15 9 2 6 -1. - <_> - 15 9 1 6 2. - <_> - - <_> - 1 9 2 6 -1. - <_> - 2 9 1 6 2. - <_> - - <_> - 15 9 3 6 -1. - <_> - 16 9 1 6 3. - <_> - - <_> - 1 12 14 3 -1. - <_> - 1 13 14 1 3. - <_> - - <_> - 15 9 3 6 -1. - <_> - 16 9 1 6 3. - <_> - - <_> - 0 3 9 12 -1. - <_> - 0 6 9 6 2. - <_> - - <_> - 11 6 3 4 -1. - <_> - 12 7 1 4 3. - 1 - <_> - - <_> - 7 6 4 3 -1. - <_> - 6 7 4 1 3. - 1 - <_> - - <_> - 10 10 8 2 -1. - <_> - 14 10 4 1 2. - <_> - 10 11 4 1 2. - <_> - - <_> - 7 6 3 3 -1. - <_> - 8 7 1 1 9. - <_> - - <_> - 9 2 2 3 -1. - <_> - 9 2 1 3 2. - <_> - - <_> - 7 1 4 4 -1. - <_> - 8 1 2 4 2. - <_> - - <_> - 14 1 4 2 -1. - <_> - 14 1 4 1 2. - 1 - <_> - - <_> - 4 2 3 4 -1. - <_> - 5 3 1 4 3. - 1 - <_> - - <_> - 10 11 2 2 -1. - <_> - 11 11 1 1 2. - <_> - 10 12 1 1 2. - <_> - - <_> - 1 8 16 6 -1. - <_> - 1 8 8 3 2. - <_> - 9 11 8 3 2. - <_> - - <_> - 15 8 3 7 -1. - <_> - 16 8 1 7 3. - <_> - - <_> - 0 8 3 7 -1. - <_> - 1 8 1 7 3. - <_> - - <_> - 9 9 2 4 -1. - <_> - 10 9 1 2 2. - <_> - 9 11 1 2 2. - <_> - - <_> - 7 9 2 4 -1. - <_> - 7 9 1 2 2. - <_> - 8 11 1 2 2. - <_> - - <_> - 3 6 14 9 -1. - <_> - 3 6 7 9 2. - <_> - - <_> - 8 5 3 6 -1. - <_> - 6 7 3 2 3. - 1 - <_> - - <_> - 9 0 8 3 -1. - <_> - 11 0 4 3 2. - <_> - - <_> - 3 3 8 2 -1. - <_> - 7 3 4 2 2. - <_> - - <_> - 1 6 16 8 -1. - <_> - 1 8 16 4 2. - <_> - - <_> - 2 7 14 8 -1. - <_> - 2 7 7 4 2. - <_> - 9 11 7 4 2. - <_> - - <_> - 9 7 4 6 -1. - <_> - 9 9 4 2 3. - <_> - - <_> - 5 6 3 9 -1. - <_> - 5 9 3 3 3. - <_> - - <_> - 12 7 6 8 -1. - <_> - 12 7 3 8 2. - <_> - - <_> - 9 2 9 4 -1. - <_> - 12 5 3 4 3. - 1 - <_> - - <_> - 12 7 6 8 -1. - <_> - 12 7 3 8 2. - <_> - - <_> - 4 7 3 4 -1. - <_> - 4 9 3 2 2. - <_> - - <_> - 8 0 8 6 -1. - <_> - 8 3 8 3 2. - <_> - - <_> - 3 0 12 1 -1. - <_> - 6 0 6 1 2. - <_> - - <_> - 12 9 6 6 -1. - <_> - 12 9 3 6 2. - <_> - - <_> - 0 9 6 6 -1. - <_> - 3 9 3 6 2. - <_> - - <_> - 15 1 3 14 -1. - <_> - 15 8 3 7 2. - <_> - - <_> - 5 1 8 2 -1. - <_> - 5 1 4 1 2. - <_> - 9 2 4 1 2. - <_> - - <_> - 5 0 12 5 -1. - <_> - 8 0 6 5 2. - <_> - - <_> - 5 0 4 4 -1. - <_> - 5 2 4 2 2. - <_> - - <_> - 12 0 2 3 -1. - <_> - 12 0 1 3 2. - 1 - <_> - - <_> - 4 0 10 15 -1. - <_> - 9 0 5 15 2. - <_> - - <_> - 5 0 12 3 -1. - <_> - 8 0 6 3 2. - <_> - - <_> - 0 1 2 14 -1. - <_> - 0 8 2 7 2. - <_> - - <_> - 5 4 8 4 -1. - <_> - 5 6 8 2 2. - <_> - - <_> - 2 9 14 2 -1. - <_> - 2 10 14 1 2. - <_> - - <_> - 0 9 18 2 -1. - <_> - 0 10 18 1 2. - <_> - - <_> - 5 6 8 2 -1. - <_> - 5 7 8 1 2. - <_> - - <_> - 10 5 3 3 -1. - <_> - 11 6 1 1 9. - <_> - - <_> - 0 2 2 1 -1. - <_> - 1 2 1 1 2. - <_> - - <_> - 12 0 4 2 -1. - <_> - 13 1 2 2 2. - 1 - <_> - - <_> - 6 0 3 2 -1. - <_> - 6 0 3 1 2. - 1 - <_> - - <_> - 10 5 3 3 -1. - <_> - 11 6 1 1 9. - <_> - - <_> - 5 5 3 3 -1. - <_> - 6 6 1 1 9. - <_> - - <_> - 10 0 3 1 -1. - <_> - 11 1 1 1 3. - 1 - <_> - - <_> - 4 13 10 2 -1. - <_> - 4 14 10 1 2. - <_> - - <_> - 10 0 3 1 -1. - <_> - 11 1 1 1 3. - 1 - <_> - - <_> - 1 12 14 2 -1. - <_> - 1 13 14 1 2. - <_> - - <_> - 10 5 4 6 -1. - <_> - 8 7 4 2 3. - 1 - <_> - - <_> - 8 5 6 4 -1. - <_> - 10 7 2 4 3. - 1 - <_> - - <_> - 15 6 3 6 -1. - <_> - 15 9 3 3 2. - <_> - - <_> - 7 8 3 2 -1. - <_> - 7 9 3 1 2. - <_> - - <_> - 2 8 14 2 -1. - <_> - 2 9 14 1 2. - <_> - - <_> - 3 0 3 8 -1. - <_> - 3 4 3 4 2. - <_> - - <_> - 0 1 18 8 -1. - <_> - 9 1 9 4 2. - <_> - 0 5 9 4 2. - <_> - - <_> - 5 0 8 7 -1. - <_> - 7 0 4 7 2. - <_> - - <_> - 10 1 4 1 -1. - <_> - 10 1 2 1 2. - 1 - <_> - - <_> - 2 0 10 2 -1. - <_> - 2 0 10 1 2. - 1 - <_> - - <_> - 4 4 10 6 -1. - <_> - 9 4 5 3 2. - <_> - 4 7 5 3 2. - <_> - - <_> - 5 8 4 2 -1. - <_> - 5 8 2 1 2. - <_> - 7 9 2 1 2. - <_> - - <_> - 15 6 3 6 -1. - <_> - 15 9 3 3 2. - <_> - - <_> - 1 4 16 6 -1. - <_> - 1 6 16 2 3. - <_> - - <_> - 9 0 1 4 -1. - <_> - 9 1 1 2 2. - <_> - - <_> - 0 7 2 3 -1. - <_> - 0 8 2 1 3. - <_> - - <_> - 15 5 3 3 -1. - <_> - 14 6 3 1 3. - 1 - <_> - - <_> - 8 0 1 3 -1. - <_> - 7 1 1 1 3. - 1 - <_> - - <_> - 6 1 12 3 -1. - <_> - 9 1 6 3 2. - <_> - - <_> - 0 1 12 3 -1. - <_> - 3 1 6 3 2. - <_> - - <_> - 15 5 3 3 -1. - <_> - 14 6 3 1 3. - 1 - <_> - - <_> - 0 0 8 7 -1. - <_> - 4 0 4 7 2. - <_> - - <_> - 14 4 4 6 -1. - <_> - 14 4 4 3 2. - 1 - <_> - - <_> - 4 4 6 4 -1. - <_> - 4 4 3 4 2. - 1 - <_> - - <_> - 4 1 10 8 -1. - <_> - 4 3 10 4 2. - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 8 2 1 2. - <_> - - <_> - 11 0 3 2 -1. - <_> - 12 1 1 2 3. - 1 - <_> - - <_> - 7 0 2 3 -1. - <_> - 6 1 2 1 3. - 1 - <_> - - <_> - 3 0 12 2 -1. - <_> - 9 0 6 1 2. - <_> - 3 1 6 1 2. - <_> - - <_> - 0 2 2 2 -1. - <_> - 0 2 1 1 2. - <_> - 1 3 1 1 2. - <_> - - <_> - 15 1 3 3 -1. - <_> - 14 2 3 1 3. - 1 - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 3 3. - 1 - <_> - - <_> - 2 0 14 4 -1. - <_> - 9 0 7 2 2. - <_> - 2 2 7 2 2. - <_> - - <_> - 6 1 3 6 -1. - <_> - 7 2 1 6 3. - 1 - <_> - - <_> - 16 6 2 4 -1. - <_> - 16 8 2 2 2. - <_> - - <_> - 0 6 2 4 -1. - <_> - 0 8 2 2 2. - <_> - - <_> - 9 2 3 2 -1. - <_> - 9 3 3 1 2. - <_> - - <_> - 6 2 3 2 -1. - <_> - 6 3 3 1 2. - <_> - - <_> - 13 0 4 4 -1. - <_> - 14 0 2 4 2. - <_> - - <_> - 1 0 4 4 -1. - <_> - 2 0 2 4 2. - <_> - - <_> - 8 13 10 2 -1. - <_> - 13 13 5 1 2. - <_> - 8 14 5 1 2. - <_> - - <_> - 4 4 3 3 -1. - <_> - 5 5 1 3 3. - 1 - <_> - - <_> - 7 7 4 6 -1. - <_> - 8 7 2 6 2. - <_> - - <_> - 7 1 8 2 -1. - <_> - 9 3 4 2 2. - 1 - <_> - - <_> - 4 1 11 4 -1. - <_> - 4 2 11 2 2. - <_> - - <_> - 4 12 4 3 -1. - <_> - 5 12 2 3 2. - <_> - - <_> - 6 7 6 2 -1. - <_> - 6 8 6 1 2. - <_> - - <_> - 0 9 18 6 -1. - <_> - 0 11 18 2 3. - <_> - - <_> - 12 13 1 2 -1. - <_> - 12 14 1 1 2. - <_> - - <_> - 8 5 1 8 -1. - <_> - 8 5 1 4 2. - 1 - <_> - - <_> - 10 2 4 13 -1. - <_> - 11 2 2 13 2. - <_> - - <_> - 4 2 4 13 -1. - <_> - 5 2 2 13 2. - <_> - - <_> - 11 8 3 3 -1. - <_> - 12 9 1 1 9. - <_> - - <_> - 5 0 10 4 -1. - <_> - 5 0 10 2 2. - 1 - <_> - - <_> - 0 7 18 4 -1. - <_> - 9 7 9 2 2. - <_> - 0 9 9 2 2. - <_> - - <_> - 4 8 2 2 -1. - <_> - 4 8 1 1 2. - <_> - 5 9 1 1 2. - <_> - - <_> - 7 0 8 3 -1. - <_> - 9 0 4 3 2. - <_> - - <_> - 8 6 3 1 -1. - <_> - 9 7 1 1 3. - 1 - <_> - - <_> - 2 3 14 8 -1. - <_> - 2 5 14 4 2. - <_> - - <_> - 8 6 1 8 -1. - <_> - 8 6 1 4 2. - 1 - <_> - - <_> - 11 8 4 4 -1. - <_> - 11 9 4 2 2. - <_> - - <_> - 1 11 4 2 -1. - <_> - 2 11 2 2 2. - <_> - - <_> - 10 8 4 2 -1. - <_> - 12 8 2 1 2. - <_> - 10 9 2 1 2. - <_> - - <_> - 7 7 3 3 -1. - <_> - 8 8 1 1 9. - <_> - - <_> - 13 8 4 2 -1. - <_> - 15 8 2 1 2. - <_> - 13 9 2 1 2. - <_> - - <_> - 1 8 4 2 -1. - <_> - 1 8 2 1 2. - <_> - 3 9 2 1 2. - <_> - - <_> - 5 3 10 12 -1. - <_> - 5 3 5 12 2. - <_> - - <_> - 3 3 10 12 -1. - <_> - 8 3 5 12 2. - <_> - - <_> - 5 0 12 8 -1. - <_> - 9 0 4 8 3. - <_> - - <_> - 1 0 12 8 -1. - <_> - 5 0 4 8 3. - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 2 1 2. - 1 - <_> - - <_> - 9 1 2 2 -1. - <_> - 9 1 1 2 2. - 1 - <_> - - <_> - 9 1 2 2 -1. - <_> - 9 1 2 1 2. - 1 - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 6 0 4 2 -1. - <_> - 6 1 4 1 2. - <_> - - <_> - 9 0 1 2 -1. - <_> - 9 1 1 1 2. - <_> - - <_> - 9 5 2 4 -1. - <_> - 9 5 2 2 2. - 1 - <_> - - <_> - 8 8 6 4 -1. - <_> - 11 8 3 2 2. - <_> - 8 10 3 2 2. - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 15 1 3 2 -1. - <_> - 16 2 1 2 3. - 1 - <_> - - <_> - 3 1 2 3 -1. - <_> - 2 2 2 1 3. - 1 - <_> - - <_> - 16 1 2 3 -1. - <_> - 15 2 2 1 3. - 1 - <_> - - <_> - 2 1 3 2 -1. - <_> - 3 2 1 2 3. - 1 - <_> - - <_> - 14 1 4 2 -1. - <_> - 14 1 4 1 2. - 1 - <_> - - <_> - 4 1 2 4 -1. - <_> - 4 1 1 4 2. - 1 - <_> - - <_> - 13 2 5 6 -1. - <_> - 13 5 5 3 2. - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 2 0 14 9 -1. - <_> - 2 3 14 3 3. - <_> - - <_> - 2 1 1 2 -1. - <_> - 2 2 1 1 2. - <_> - - <_> - 13 2 5 6 -1. - <_> - 13 5 5 3 2. - <_> - - <_> - 0 0 8 9 -1. - <_> - 2 0 4 9 2. - <_> - - <_> - 8 5 2 2 -1. - <_> - 8 6 2 1 2. - <_> - - <_> - 9 0 8 5 -1. - <_> - 11 2 4 5 2. - 1 - <_> - - <_> - 13 2 5 6 -1. - <_> - 13 5 5 3 2. - <_> - - <_> - 0 2 5 6 -1. - <_> - 0 5 5 3 2. - <_> - - <_> - 3 4 12 10 -1. - <_> - 9 4 6 5 2. - <_> - 3 9 6 5 2. - <_> - - <_> - 6 6 2 3 -1. - <_> - 7 6 1 3 2. - <_> - - <_> - 11 1 6 6 -1. - <_> - 13 3 2 6 3. - 1 - <_> - - <_> - 7 1 6 6 -1. - <_> - 5 3 6 2 3. - 1 - <_> - - <_> - 13 4 1 6 -1. - <_> - 13 6 1 2 3. - <_> - - <_> - 8 0 1 2 -1. - <_> - 8 1 1 1 2. - <_> - - <_> - 10 13 6 2 -1. - <_> - 13 13 3 1 2. - <_> - 10 14 3 1 2. - <_> - - <_> - 2 13 6 2 -1. - <_> - 2 13 3 1 2. - <_> - 5 14 3 1 2. - <_> - - <_> - 5 12 9 3 -1. - <_> - 8 12 3 3 3. - <_> - - <_> - 1 14 12 1 -1. - <_> - 5 14 4 1 3. - <_> - - <_> - 4 0 12 15 -1. - <_> - 8 0 4 15 3. - <_> - - <_> - 3 0 8 14 -1. - <_> - 5 0 4 14 2. - <_> - - <_> - 10 10 8 4 -1. - <_> - 14 10 4 2 2. - <_> - 10 12 4 2 2. - <_> - - <_> - 2 0 12 5 -1. - <_> - 6 0 4 5 3. - <_> - - <_> - 12 0 2 1 -1. - <_> - 12 0 1 1 2. - 1 - <_> - - <_> - 6 0 1 2 -1. - <_> - 6 0 1 1 2. - 1 - <_> - - <_> - 12 5 2 8 -1. - <_> - 12 5 1 8 2. - 1 - <_> - - <_> - 6 5 8 2 -1. - <_> - 6 5 8 1 2. - 1 - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 2 4 14 4 -1. - <_> - 2 6 14 2 2. - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 4 7 2 2 -1. - <_> - 4 7 1 1 2. - <_> - 5 8 1 1 2. - <_> - - <_> - 12 5 1 4 -1. - <_> - 12 6 1 2 2. - <_> - - <_> - 5 5 1 4 -1. - <_> - 5 6 1 2 2. - <_> - - <_> - 12 7 3 2 -1. - <_> - 13 8 1 2 3. - 1 - <_> - - <_> - 3 9 6 4 -1. - <_> - 3 9 3 2 2. - <_> - 6 11 3 2 2. - <_> - - <_> - 9 12 6 1 -1. - <_> - 9 12 3 1 2. - <_> - - <_> - 7 3 4 1 -1. - <_> - 8 3 2 1 2. - <_> - - <_> - 6 13 8 2 -1. - <_> - 6 13 4 2 2. - <_> - - <_> - 9 0 6 2 -1. - <_> - 9 0 3 2 2. - 1 - <_> - - <_> - 7 11 10 4 -1. - <_> - 7 11 5 4 2. - <_> - - <_> - 1 11 15 4 -1. - <_> - 6 11 5 4 3. - <_> - - <_> - 7 0 6 4 -1. - <_> - 7 1 6 2 2. - <_> - - <_> - 1 10 2 2 -1. - <_> - 1 10 1 1 2. - <_> - 2 11 1 1 2. - <_> - - <_> - 8 10 3 2 -1. - <_> - 9 10 1 2 3. - <_> - - <_> - 0 8 2 3 -1. - <_> - 0 9 2 1 3. - <_> - - <_> - 11 8 4 4 -1. - <_> - 11 9 4 2 2. - <_> - - <_> - 3 8 4 4 -1. - <_> - 3 9 4 2 2. - <_> - - <_> - 2 7 16 2 -1. - <_> - 6 7 8 2 2. - <_> - - <_> - 0 7 16 2 -1. - <_> - 4 7 8 2 2. - <_> - - <_> - 12 10 4 2 -1. - <_> - 14 10 2 1 2. - <_> - 12 11 2 1 2. - <_> - - <_> - 2 10 4 2 -1. - <_> - 2 10 2 1 2. - <_> - 4 11 2 1 2. - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - <_> - - <_> - 6 4 6 9 -1. - <_> - 8 7 2 3 9. - <_> - - <_> - 8 0 4 15 -1. - <_> - 8 5 4 5 3. - <_> - - <_> - 8 7 2 3 -1. - <_> - 8 8 2 1 3. - <_> - - <_> - 6 1 7 2 -1. - <_> - 6 2 7 1 2. - <_> - - <_> - 0 7 6 2 -1. - <_> - 0 7 3 1 2. - <_> - 3 8 3 1 2. - <_> - - <_> - 12 3 5 3 -1. - <_> - 11 4 5 1 3. - 1 - <_> - - <_> - 6 3 3 5 -1. - <_> - 7 4 1 5 3. - 1 - <_> - - <_> - 7 8 4 3 -1. - <_> - 7 9 4 1 3. - <_> - - <_> - 2 1 6 14 -1. - <_> - 2 1 3 7 2. - <_> - 5 8 3 7 2. - <_> - - <_> - 10 1 8 9 -1. - <_> - 10 1 4 9 2. - <_> - - <_> - 7 7 4 4 -1. - <_> - 8 7 2 4 2. - <_> - - <_> - 9 9 2 4 -1. - <_> - 10 9 1 2 2. - <_> - 9 11 1 2 2. - <_> - - <_> - 3 9 4 2 -1. - <_> - 3 9 2 1 2. - <_> - 5 10 2 1 2. - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - <_> - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - <_> - - <_> - 2 0 16 9 -1. - <_> - 6 0 8 9 2. - <_> - - <_> - 1 1 8 4 -1. - <_> - 5 1 4 4 2. - <_> - - <_> - 9 3 2 6 -1. - <_> - 7 5 2 2 3. - 1 - <_> - - <_> - 9 3 6 2 -1. - <_> - 11 5 2 2 3. - 1 - <_> - - <_> - 14 1 2 2 -1. - <_> - 15 1 1 1 2. - <_> - 14 2 1 1 2. - <_> - - <_> - 2 3 3 2 -1. - <_> - 3 4 1 2 3. - 1 - <_> - - <_> - 15 0 2 2 -1. - <_> - 15 0 1 2 2. - 1 - <_> - - <_> - 3 0 2 2 -1. - <_> - 3 0 2 1 2. - 1 - <_> - - <_> - 10 0 1 8 -1. - <_> - 8 2 1 4 2. - 1 - <_> - - <_> - 3 2 12 8 -1. - <_> - 3 4 12 4 2. - <_> - - <_> - 8 0 9 2 -1. - <_> - 11 0 3 2 3. - <_> - - <_> - 4 5 9 6 -1. - <_> - 4 8 9 3 2. - <_> - - <_> - 8 0 9 2 -1. - <_> - 11 0 3 2 3. - <_> - - <_> - 1 0 9 2 -1. - <_> - 4 0 3 2 3. - <_> - - <_> - 7 0 8 4 -1. - <_> - 7 2 8 2 2. - <_> - - <_> - 7 6 3 3 -1. - <_> - 6 7 3 1 3. - 1 - <_> - - <_> - 2 0 14 6 -1. - <_> - 9 0 7 3 2. - <_> - 2 3 7 3 2. - <_> - - <_> - 0 0 4 14 -1. - <_> - 0 7 4 7 2. - <_> - - <_> - 0 5 18 10 -1. - <_> - 9 5 9 5 2. - <_> - 0 10 9 5 2. - <_> - - <_> - 5 7 1 3 -1. - <_> - 5 8 1 1 3. - <_> - - <_> - 3 5 12 4 -1. - <_> - 3 7 12 2 2. - <_> - - <_> - 2 5 14 6 -1. - <_> - 2 7 14 2 3. - <_> - - <_> - 11 2 6 6 -1. - <_> - 11 5 6 3 2. - <_> - - <_> - 6 0 2 2 -1. - <_> - 6 1 2 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 0 0 9 15 -1. - <_> - 3 5 3 5 9. - <_> - - <_> - 10 8 5 3 -1. - <_> - 10 9 5 1 3. - <_> - - <_> - 6 0 3 4 -1. - <_> - 6 1 3 2 2. - <_> - - <_> - 7 9 8 6 -1. - <_> - 7 9 4 6 2. - <_> - - <_> - 4 9 8 5 -1. - <_> - 8 9 4 5 2. - <_> - - <_> - 16 1 2 1 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 9 0 6 8 -1. - <_> - 11 2 2 8 3. - 1 - <_> - - <_> - 9 8 1 6 -1. - <_> - 9 8 1 3 2. - 1 - <_> - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - <_> - - <_> - 3 8 5 3 -1. - <_> - 3 9 5 1 3. - <_> - - <_> - 1 1 16 4 -1. - <_> - 5 1 8 4 2. - <_> - - <_> - 6 0 6 2 -1. - <_> - 9 0 3 2 2. - <_> - - <_> - 14 4 4 7 -1. - <_> - 15 5 2 7 2. - 1 - <_> - - <_> - 4 4 7 4 -1. - <_> - 3 5 7 2 2. - 1 - <_> - - <_> - 8 2 6 2 -1. - <_> - 8 3 6 1 2. - <_> - - <_> - 4 2 10 2 -1. - <_> - 4 2 5 1 2. - <_> - 9 3 5 1 2. - <_> - - <_> - 16 11 2 2 -1. - <_> - 16 11 2 1 2. - 1 - <_> - - <_> - 2 12 14 3 -1. - <_> - 2 13 14 1 3. - <_> - - <_> - 16 12 2 2 -1. - <_> - 16 12 1 2 2. - <_> - - <_> - 0 12 2 2 -1. - <_> - 1 12 1 2 2. - <_> - - <_> - 10 7 6 6 -1. - <_> - 12 9 2 2 9. - <_> - - <_> - 2 7 6 6 -1. - <_> - 4 9 2 2 9. - <_> - - <_> - 11 5 1 9 -1. - <_> - 8 8 1 3 3. - 1 - <_> - - <_> - 0 5 18 4 -1. - <_> - 0 5 9 2 2. - <_> - 9 7 9 2 2. - <_> - - <_> - 17 3 1 3 -1. - <_> - 16 4 1 1 3. - 1 - <_> - - <_> - 4 5 6 4 -1. - <_> - 4 5 3 4 2. - 1 - <_> - - <_> - 11 13 6 2 -1. - <_> - 13 13 2 2 3. - <_> - - <_> - 1 3 3 1 -1. - <_> - 2 4 1 1 3. - 1 - <_> - - <_> - 0 1 18 4 -1. - <_> - 9 1 9 2 2. - <_> - 0 3 9 2 2. - <_> - - <_> - 1 13 6 2 -1. - <_> - 3 13 2 2 3. - <_> - - <_> - 11 5 1 9 -1. - <_> - 8 8 1 3 3. - 1 - <_> - - <_> - 7 5 9 1 -1. - <_> - 10 8 3 1 3. - 1 - <_> - - <_> - 1 9 16 2 -1. - <_> - 1 10 16 1 2. - <_> - - <_> - 1 7 16 8 -1. - <_> - 1 9 16 4 2. - <_> - - <_> - 14 0 4 2 -1. - <_> - 15 1 2 2 2. - 1 - <_> - - <_> - 3 1 11 2 -1. - <_> - 3 1 11 1 2. - 1 - <_> - - <_> - 5 3 9 6 -1. - <_> - 8 5 3 2 9. - <_> - - <_> - 6 0 2 4 -1. - <_> - 5 1 2 2 2. - 1 - <_> - - <_> - 15 2 3 3 -1. - <_> - 14 3 3 1 3. - 1 - <_> - - <_> - 3 2 3 3 -1. - <_> - 4 3 1 3 3. - 1 - <_> - - <_> - 10 3 4 2 -1. - <_> - 10 3 2 2 2. - <_> - - <_> - 3 1 12 6 -1. - <_> - 9 1 6 6 2. - <_> - - <_> - 7 5 4 6 -1. - <_> - 9 5 2 3 2. - <_> - 7 8 2 3 2. - <_> - - <_> - 3 6 12 6 -1. - <_> - 3 6 6 3 2. - <_> - 9 9 6 3 2. - <_> - - <_> - 7 4 4 6 -1. - <_> - 7 7 4 3 2. - <_> - - <_> - 8 6 2 2 -1. - <_> - 8 6 1 2 2. - 1 - <_> - - <_> - 2 12 14 2 -1. - <_> - 2 13 14 1 2. - <_> - - <_> - 2 8 6 7 -1. - <_> - 4 8 2 7 3. - <_> - - <_> - 14 0 4 2 -1. - <_> - 15 1 2 2 2. - 1 - <_> - - <_> - 3 6 3 3 -1. - <_> - 4 7 1 1 9. - <_> - - <_> - 3 0 12 2 -1. - <_> - 9 0 6 1 2. - <_> - 3 1 6 1 2. - <_> - - <_> - 0 13 4 2 -1. - <_> - 1 13 2 2 2. - <_> - - <_> - 13 6 3 5 -1. - <_> - 14 7 1 5 3. - 1 - <_> - - <_> - 7 4 6 3 -1. - <_> - 9 6 2 3 3. - 1 - <_> - - <_> - 1 5 16 6 -1. - <_> - 1 7 16 2 3. - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 10 2 1 2. - <_> - - <_> - 8 9 8 2 -1. - <_> - 12 9 4 1 2. - <_> - 8 10 4 1 2. - <_> - - <_> - 0 0 12 15 -1. - <_> - 3 0 6 15 2. - <_> - - <_> - 10 3 4 2 -1. - <_> - 10 3 2 2 2. - <_> - - <_> - 4 3 4 2 -1. - <_> - 6 3 2 2 2. - <_> - - <_> - 6 0 9 9 -1. - <_> - 9 0 3 9 3. - <_> - - <_> - 0 2 8 2 -1. - <_> - 2 2 4 2 2. - <_> - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - 1 - <_> - - <_> - 8 1 2 8 -1. - <_> - 8 5 2 4 2. - <_> - - <_> - 16 3 2 2 -1. - <_> - 16 3 1 2 2. - 1 - <_> - - <_> - 2 3 2 2 -1. - <_> - 2 3 2 1 2. - 1 - <_> - - <_> - 14 2 4 3 -1. - <_> - 13 3 4 1 3. - 1 - <_> - - <_> - 5 3 8 2 -1. - <_> - 5 3 4 1 2. - <_> - 9 4 4 1 2. - <_> - - <_> - 13 1 5 3 -1. - <_> - 12 2 5 1 3. - 1 - <_> - - <_> - 5 1 3 5 -1. - <_> - 6 2 1 5 3. - 1 - <_> - - <_> - 7 0 9 6 -1. - <_> - 7 3 9 3 2. - <_> - - <_> - 2 0 9 6 -1. - <_> - 2 3 9 3 2. - <_> - - <_> - 4 0 10 8 -1. - <_> - 4 4 10 4 2. - <_> - - <_> - 7 8 4 2 -1. - <_> - 7 9 4 1 2. - <_> - - <_> - 9 0 6 8 -1. - <_> - 11 2 2 8 3. - 1 - <_> - - <_> - 5 6 4 3 -1. - <_> - 4 7 4 1 3. - 1 - <_> - - <_> - 9 0 6 8 -1. - <_> - 11 2 2 8 3. - 1 - <_> - - <_> - 1 11 6 4 -1. - <_> - 1 11 3 2 2. - <_> - 4 13 3 2 2. - <_> - - <_> - 9 0 6 8 -1. - <_> - 11 2 2 8 3. - 1 - <_> - - <_> - 9 0 8 6 -1. - <_> - 7 2 8 2 3. - 1 - <_> - - <_> - 14 0 4 4 -1. - <_> - 15 1 2 4 2. - 1 - <_> - - <_> - 4 1 3 4 -1. - <_> - 4 2 3 2 2. - <_> - - <_> - 13 0 3 1 -1. - <_> - 14 0 1 1 3. - <_> - - <_> - 0 7 11 8 -1. - <_> - 0 11 11 4 2. - <_> - - <_> - 1 9 17 4 -1. - <_> - 1 11 17 2 2. - <_> - - <_> - 1 6 16 6 -1. - <_> - 1 8 16 2 3. - <_> - - <_> - 13 0 3 1 -1. - <_> - 14 0 1 1 3. - <_> - - <_> - 2 0 3 1 -1. - <_> - 3 0 1 1 3. - <_> - - <_> - 5 2 9 6 -1. - <_> - 5 4 9 2 3. - <_> - - <_> - 7 1 3 2 -1. - <_> - 7 2 3 1 2. - <_> - - <_> - 6 11 12 4 -1. - <_> - 6 13 12 2 2. - <_> - - <_> - 0 0 16 2 -1. - <_> - 0 0 8 1 2. - <_> - 8 1 8 1 2. - <_> - - <_> - 16 11 2 2 -1. - <_> - 17 11 1 1 2. - <_> - 16 12 1 1 2. - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 3 3. - 1 - <_> - - <_> - 12 0 6 2 -1. - <_> - 14 2 2 2 3. - 1 - <_> - - <_> - 6 0 2 6 -1. - <_> - 4 2 2 2 3. - 1 - <_> - - <_> - 15 8 3 6 -1. - <_> - 16 10 1 2 9. - <_> - - <_> - 0 8 3 6 -1. - <_> - 1 10 1 2 9. - <_> - - <_> - 14 4 3 3 -1. - <_> - 13 5 3 1 3. - 1 - <_> - - <_> - 4 4 3 3 -1. - <_> - 5 5 1 3 3. - 1 - <_> - - <_> - 11 9 3 6 -1. - <_> - 12 9 1 6 3. - <_> - - <_> - 9 0 9 2 -1. - <_> - 12 3 3 2 3. - 1 - <_> - - <_> - 15 4 1 8 -1. - <_> - 13 6 1 4 2. - 1 - <_> - - <_> - 3 4 8 1 -1. - <_> - 5 6 4 1 2. - 1 - <_> - - <_> - 6 0 6 6 -1. - <_> - 8 0 2 6 3. - <_> - - <_> - 8 3 10 1 -1. - <_> - 8 3 5 1 2. - 1 - <_> - - <_> - 8 8 3 5 -1. - <_> - 9 8 1 5 3. - <_> - - <_> - 7 2 8 2 -1. - <_> - 9 4 4 2 2. - 1 - <_> - - <_> - 11 2 3 13 -1. - <_> - 12 2 1 13 3. - <_> - - <_> - 4 2 3 13 -1. - <_> - 5 2 1 13 3. - <_> - - <_> - 17 7 1 6 -1. - <_> - 17 9 1 2 3. - <_> - - <_> - 0 7 1 6 -1. - <_> - 0 9 1 2 3. - <_> - - <_> - 8 7 8 4 -1. - <_> - 12 7 4 2 2. - <_> - 8 9 4 2 2. - <_> - - <_> - 2 7 8 4 -1. - <_> - 2 7 4 2 2. - <_> - 6 9 4 2 2. - <_> - - <_> - 3 5 12 4 -1. - <_> - 9 5 6 2 2. - <_> - 3 7 6 2 2. - <_> - - <_> - 7 12 3 3 -1. - <_> - 8 13 1 1 9. - <_> - - <_> - 8 12 2 3 -1. - <_> - 8 13 2 1 3. - <_> - - <_> - 5 0 6 3 -1. - <_> - 5 1 6 1 3. - <_> - - <_> - 7 0 4 2 -1. - <_> - 7 1 4 1 2. - <_> - - <_> - 3 4 4 1 -1. - <_> - 5 4 2 1 2. - <_> - - <_> - 6 0 9 1 -1. - <_> - 9 0 3 1 3. - <_> - - <_> - 6 8 4 2 -1. - <_> - 6 8 4 1 2. - 1 - <_> - - <_> - 12 7 2 4 -1. - <_> - 12 7 1 4 2. - 1 - <_> - - <_> - 6 7 4 2 -1. - <_> - 6 7 4 1 2. - 1 - <_> - - <_> - 4 1 12 4 -1. - <_> - 7 1 6 4 2. - <_> - - <_> - 2 1 12 4 -1. - <_> - 5 1 6 4 2. - <_> - - <_> - 5 1 12 3 -1. - <_> - 9 1 4 3 3. - <_> - - <_> - 3 1 11 8 -1. - <_> - 3 3 11 4 2. - <_> - - <_> - 2 7 15 4 -1. - <_> - 2 8 15 2 2. - <_> - - <_> - 5 11 2 2 -1. - <_> - 5 11 1 2 2. - 1 - <_> - - <_> - 6 10 8 5 -1. - <_> - 8 10 4 5 2. - <_> - - <_> - 4 10 8 5 -1. - <_> - 6 10 4 5 2. - <_> - - <_> - 1 11 17 2 -1. - <_> - 1 12 17 1 2. - <_> - - <_> - 0 9 17 4 -1. - <_> - 0 10 17 2 2. - <_> - - <_> - 0 6 18 2 -1. - <_> - 9 6 9 1 2. - <_> - 0 7 9 1 2. - <_> - - <_> - 7 1 3 6 -1. - <_> - 5 3 3 2 3. - 1 - <_> - - <_> - 9 13 6 2 -1. - <_> - 11 13 2 2 3. - <_> - - <_> - 3 13 6 2 -1. - <_> - 5 13 2 2 3. - <_> - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - <_> - - <_> - 4 6 2 2 -1. - <_> - 4 6 1 1 2. - <_> - 5 7 1 1 2. - <_> - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - <_> - - <_> - 4 6 2 2 -1. - <_> - 4 6 1 1 2. - <_> - 5 7 1 1 2. - <_> - - <_> - 13 0 5 8 -1. - <_> - 13 4 5 4 2. - <_> - - <_> - 8 6 6 3 -1. - <_> - 10 8 2 3 3. - 1 - <_> - - <_> - 9 11 1 3 -1. - <_> - 8 12 1 1 3. - 1 - <_> - - <_> - 9 11 3 1 -1. - <_> - 10 12 1 1 3. - 1 - <_> - - <_> - 7 1 6 2 -1. - <_> - 10 1 3 1 2. - <_> - 7 2 3 1 2. - <_> - - <_> - 1 5 16 5 -1. - <_> - 5 5 8 5 2. - <_> - - <_> - 12 6 6 1 -1. - <_> - 14 6 2 1 3. - <_> - - <_> - 0 6 6 1 -1. - <_> - 2 6 2 1 3. - <_> - - <_> - 15 4 2 1 -1. - <_> - 15 4 1 1 2. - <_> - - <_> - 1 4 2 1 -1. - <_> - 2 4 1 1 2. - <_> - - <_> - 8 0 2 2 -1. - <_> - 8 1 2 1 2. - <_> - - <_> - 0 0 2 10 -1. - <_> - 0 5 2 5 2. - <_> - - <_> - 3 2 12 6 -1. - <_> - 3 5 12 3 2. - <_> - - <_> - 6 0 4 3 -1. - <_> - 5 1 4 1 3. - 1 - <_> - - <_> - 9 0 3 6 -1. - <_> - 10 1 1 6 3. - 1 - <_> - - <_> - 0 0 8 8 -1. - <_> - 4 0 4 8 2. - <_> - - <_> - 6 0 9 1 -1. - <_> - 9 0 3 1 3. - <_> - - <_> - 0 0 18 9 -1. - <_> - 6 0 6 9 3. - <_> - - <_> - 5 11 9 4 -1. - <_> - 5 12 9 2 2. - <_> - - <_> - 3 2 3 13 -1. - <_> - 4 2 1 13 3. - <_> - - <_> - 10 3 6 2 -1. - <_> - 10 3 3 2 2. - 1 - <_> - - <_> - 8 3 2 6 -1. - <_> - 8 3 2 3 2. - 1 - <_> - - <_> - 13 6 3 3 -1. - <_> - 12 7 3 1 3. - 1 - <_> - - <_> - 5 6 3 3 -1. - <_> - 6 7 1 3 3. - 1 - <_> - - <_> - 11 6 2 2 -1. - <_> - 12 6 1 1 2. - <_> - 11 7 1 1 2. - <_> - - <_> - 7 0 4 11 -1. - <_> - 9 0 2 11 2. - <_> - - <_> - 8 0 2 5 -1. - <_> - 8 0 1 5 2. - <_> - - <_> - 2 2 5 12 -1. - <_> - 2 8 5 6 2. - <_> - - <_> - 0 5 18 10 -1. - <_> - 9 5 9 5 2. - <_> - 0 10 9 5 2. - <_> - - <_> - 0 10 8 4 -1. - <_> - 0 10 4 2 2. - <_> - 4 12 4 2 2. - <_> - - <_> - 9 0 1 3 -1. - <_> - 9 1 1 1 3. - <_> - - <_> - 2 11 2 2 -1. - <_> - 2 11 1 1 2. - <_> - 3 12 1 1 2. - <_> - - <_> - 14 1 2 14 -1. - <_> - 14 8 2 7 2. - <_> - - <_> - 2 1 2 14 -1. - <_> - 2 8 2 7 2. - <_> - - <_> - 14 7 3 4 -1. - <_> - 15 8 1 4 3. - 1 - <_> - - <_> - 0 9 18 6 -1. - <_> - 0 9 9 3 2. - <_> - 9 12 9 3 2. - <_> - - <_> - 11 7 3 5 -1. - <_> - 12 8 1 5 3. - 1 - <_> - - <_> - 7 7 5 3 -1. - <_> - 6 8 5 1 3. - 1 - <_> - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - <_> - - <_> - 7 8 4 5 -1. - <_> - 8 8 2 5 2. - <_> - - <_> - 8 1 10 12 -1. - <_> - 8 5 10 4 3. - <_> - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - <_> - - <_> - 17 5 1 3 -1. - <_> - 16 6 1 1 3. - 1 - <_> - - <_> - 0 0 15 4 -1. - <_> - 5 0 5 4 3. - <_> - - <_> - 12 0 6 5 -1. - <_> - 12 0 3 5 2. - <_> - - <_> - 0 0 6 5 -1. - <_> - 3 0 3 5 2. - <_> - - <_> - 8 6 2 4 -1. - <_> - 7 7 2 2 2. - 1 - <_> - - <_> - 6 3 10 12 -1. - <_> - 11 3 5 6 2. - <_> - 6 9 5 6 2. - <_> - - <_> - 3 0 6 1 -1. - <_> - 5 0 2 1 3. - <_> - - <_> - 2 4 16 8 -1. - <_> - 10 4 8 4 2. - <_> - 2 8 8 4 2. - <_> - - <_> - 1 6 4 4 -1. - <_> - 1 6 2 2 2. - <_> - 3 8 2 2 2. - <_> - - <_> - 13 0 4 2 -1. - <_> - 14 1 2 2 2. - 1 - <_> - - <_> - 5 0 2 4 -1. - <_> - 4 1 2 2 2. - 1 - <_> - - <_> - 12 8 1 3 -1. - <_> - 12 9 1 1 3. - <_> - - <_> - 5 8 1 3 -1. - <_> - 5 9 1 1 3. - <_> - - <_> - 10 0 4 4 -1. - <_> - 10 1 4 2 2. - <_> - - <_> - 5 7 1 3 -1. - <_> - 5 8 1 1 3. - <_> - - <_> - 3 0 12 2 -1. - <_> - 3 1 12 1 2. - <_> - - <_> - 4 0 4 4 -1. - <_> - 4 1 4 2 2. - <_> - - <_> - 6 3 10 12 -1. - <_> - 11 3 5 6 2. - <_> - 6 9 5 6 2. - <_> - - <_> - 2 3 10 12 -1. - <_> - 2 3 5 6 2. - <_> - 7 9 5 6 2. - <_> - - <_> - 9 0 2 9 -1. - <_> - 9 0 1 9 2. - 1 - <_> - - <_> - 0 3 2 1 -1. - <_> - 1 3 1 1 2. - <_> - - <_> - 12 1 6 14 -1. - <_> - 12 8 6 7 2. - <_> - - <_> - 0 1 6 14 -1. - <_> - 0 8 6 7 2. - <_> - - <_> - 9 0 2 9 -1. - <_> - 9 0 1 9 2. - 1 - <_> - - <_> - 9 0 9 2 -1. - <_> - 9 0 9 1 2. - 1 - <_> - - <_> - 2 12 14 3 -1. - <_> - 2 13 14 1 3. - <_> - - <_> - 0 0 18 8 -1. - <_> - 0 0 9 4 2. - <_> - 9 4 9 4 2. - <_> - - <_> - 11 1 5 6 -1. - <_> - 11 4 5 3 2. - <_> - - <_> - 2 1 5 6 -1. - <_> - 2 4 5 3 2. - <_> - - <_> - 6 10 8 5 -1. - <_> - 8 10 4 5 2. - <_> - - <_> - 4 9 10 6 -1. - <_> - 9 9 5 6 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - <_> - - <_> - 0 11 6 4 -1. - <_> - 0 11 3 2 2. - <_> - 3 13 3 2 2. - <_> - - <_> - 14 14 2 1 -1. - <_> - 14 14 1 1 2. - <_> - - <_> - 2 14 2 1 -1. - <_> - 3 14 1 1 2. - <_> - - <_> - 0 3 18 8 -1. - <_> - 0 7 18 4 2. - <_> - - <_> - 3 2 3 3 -1. - <_> - 4 3 1 3 3. - 1 - <_> - - <_> - 16 3 1 2 -1. - <_> - 16 4 1 1 2. - <_> - - <_> - 2 4 6 8 -1. - <_> - 5 4 3 8 2. - <_> - - <_> - 8 9 4 2 -1. - <_> - 10 9 2 1 2. - <_> - 8 10 2 1 2. - <_> - - <_> - 6 9 4 2 -1. - <_> - 6 9 2 1 2. - <_> - 8 10 2 1 2. - <_> - - <_> - 16 3 1 2 -1. - <_> - 16 4 1 1 2. - <_> - - <_> - 1 3 1 2 -1. - <_> - 1 4 1 1 2. - <_> - - <_> - 1 1 16 2 -1. - <_> - 9 1 8 1 2. - <_> - 1 2 8 1 2. - <_> - - <_> - 6 10 4 2 -1. - <_> - 6 10 2 1 2. - <_> - 8 11 2 1 2. - <_> - - <_> - 7 7 4 3 -1. - <_> - 8 7 2 3 2. - <_> - - <_> - 6 0 4 4 -1. - <_> - 6 0 2 2 2. - <_> - 8 2 2 2 2. - <_> - - <_> - 12 6 6 3 -1. - <_> - 14 7 2 1 9. - <_> - - <_> - 0 6 6 3 -1. - <_> - 2 7 2 1 9. - <_> - - <_> - 14 13 2 2 -1. - <_> - 15 13 1 1 2. - <_> - 14 14 1 1 2. - <_> - - <_> - 2 13 2 2 -1. - <_> - 2 13 1 1 2. - <_> - 3 14 1 1 2. - <_> - - <_> - 14 12 4 2 -1. - <_> - 15 12 2 2 2. - <_> - - <_> - 9 4 7 4 -1. - <_> - 9 4 7 2 2. - 1 - <_> - - <_> - 17 9 1 2 -1. - <_> - 17 10 1 1 2. - <_> - - <_> - 0 9 1 2 -1. - <_> - 0 10 1 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - <_> - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - <_> - - <_> - 16 4 2 2 -1. - <_> - 17 4 1 1 2. - <_> - 16 5 1 1 2. - <_> - - <_> - 0 4 2 2 -1. - <_> - 0 4 1 1 2. - <_> - 1 5 1 1 2. - <_> - - <_> - 7 3 4 6 -1. - <_> - 9 3 2 3 2. - <_> - 7 6 2 3 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - <_> - - <_> - 1 3 16 4 -1. - <_> - 9 3 8 2 2. - <_> - 1 5 8 2 2. - <_> - - <_> - 2 12 14 2 -1. - <_> - 2 13 14 1 2. - <_> - - <_> - 12 0 2 2 -1. - <_> - 13 0 1 1 2. - <_> - 12 1 1 1 2. - <_> - - <_> - 4 0 2 2 -1. - <_> - 4 0 1 1 2. - <_> - 5 1 1 1 2. - <_> - - <_> - 5 1 8 2 -1. - <_> - 5 2 8 1 2. - <_> - - <_> - 4 7 2 2 -1. - <_> - 4 7 1 1 2. - <_> - 5 8 1 1 2. - <_> - - <_> - 12 14 6 1 -1. - <_> - 14 14 2 1 3. - <_> - - <_> - 7 0 4 2 -1. - <_> - 7 1 4 1 2. - <_> - - <_> - 5 0 8 2 -1. - <_> - 5 1 8 1 2. - <_> - - <_> - 1 1 16 6 -1. - <_> - 1 3 16 2 3. - <_> - - <_> - 8 7 10 8 -1. - <_> - 8 7 5 8 2. - <_> - - <_> - 0 7 11 8 -1. - <_> - 0 9 11 4 2. - <_> - - <_> - 11 8 2 2 -1. - <_> - 12 8 1 1 2. - <_> - 11 9 1 1 2. - <_> - - <_> - 0 7 16 1 -1. - <_> - 4 7 8 1 2. - <_> - - <_> - 8 7 10 8 -1. - <_> - 8 7 5 8 2. - <_> - - <_> - 0 7 10 8 -1. - <_> - 5 7 5 8 2. - <_> - - <_> - 12 0 3 2 -1. - <_> - 13 1 1 2 3. - 1 - <_> - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 1 2. - <_> - 6 9 1 1 2. - <_> - - <_> - 12 0 3 2 -1. - <_> - 13 1 1 2 3. - 1 - <_> - - <_> - 0 7 18 8 -1. - <_> - 0 7 9 4 2. - <_> - 9 11 9 4 2. - <_> - - <_> - 14 12 4 2 -1. - <_> - 15 12 2 2 2. - <_> - - <_> - 0 12 4 2 -1. - <_> - 1 12 2 2 2. - <_> - - <_> - 15 0 3 3 -1. - <_> - 14 1 3 1 3. - 1 - <_> - - <_> - 3 0 3 3 -1. - <_> - 4 1 1 3 3. - 1 - <_> - - <_> - 14 2 3 3 -1. - <_> - 13 3 3 1 3. - 1 - <_> - - <_> - 4 2 3 3 -1. - <_> - 5 3 1 3 3. - 1 - <_> - - <_> - 15 1 3 1 -1. - <_> - 16 2 1 1 3. - 1 - <_> - - <_> - 3 1 1 3 -1. - <_> - 2 2 1 1 3. - 1 - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 6 4 6 5 -1. - <_> - 8 6 2 5 3. - 1 - <_> - - <_> - 6 9 10 2 -1. - <_> - 11 9 5 1 2. - <_> - 6 10 5 1 2. - <_> - - <_> - 4 7 5 8 -1. - <_> - 4 9 5 4 2. - <_> - - <_> - 2 5 15 6 -1. - <_> - 2 7 15 2 3. - <_> - - <_> - 3 0 2 15 -1. - <_> - 3 5 2 5 3. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - <_> - - <_> - 9 8 2 4 -1. - <_> - 9 10 2 2 2. - <_> - - <_> - 0 5 18 6 -1. - <_> - 0 8 18 3 2. - <_> - - <_> - 3 11 12 4 -1. - <_> - 3 12 12 2 2. - <_> - - <_> - 0 14 6 1 -1. - <_> - 2 14 2 1 3. - <_> - - <_> - 12 14 6 1 -1. - <_> - 14 14 2 1 3. - <_> - - <_> - 8 0 2 1 -1. - <_> - 9 0 1 1 2. - <_> - - <_> - 5 0 12 1 -1. - <_> - 8 0 6 1 2. - <_> - - <_> - 4 0 8 1 -1. - <_> - 6 0 4 1 2. - <_> - - <_> - 12 14 6 1 -1. - <_> - 14 14 2 1 3. - <_> - - <_> - 0 14 6 1 -1. - <_> - 2 14 2 1 3. - <_> - - <_> - 6 9 10 2 -1. - <_> - 11 9 5 1 2. - <_> - 6 10 5 1 2. - <_> - - <_> - 4 9 6 2 -1. - <_> - 4 9 3 1 2. - <_> - 7 10 3 1 2. - <_> - - <_> - 16 3 2 9 -1. - <_> - 13 6 2 3 3. - 1 - <_> - - <_> - 2 3 9 2 -1. - <_> - 5 6 3 2 3. - 1 - <_> - - <_> - 11 0 6 2 -1. - <_> - 13 2 2 2 3. - 1 - <_> - - <_> - 7 0 3 2 -1. - <_> - 7 1 3 1 2. - <_> - - <_> - 11 0 2 3 -1. - <_> - 11 0 1 3 2. - 1 - <_> - - <_> - 7 0 3 2 -1. - <_> - 7 0 3 1 2. - 1 - <_> - - <_> - 9 2 2 1 -1. - <_> - 9 2 1 1 2. - 1 - <_> - - <_> - 4 2 10 8 -1. - <_> - 4 4 10 4 2. - <_> - - <_> - 11 0 3 3 -1. - <_> - 12 1 1 3 3. - 1 - <_> - - <_> - 7 0 3 3 -1. - <_> - 6 1 3 1 3. - 1 - <_> - - <_> - 12 0 2 2 -1. - <_> - 13 0 1 1 2. - <_> - 12 1 1 1 2. - <_> - - <_> - 4 0 2 2 -1. - <_> - 4 0 1 1 2. - <_> - 5 1 1 1 2. - <_> - - <_> - 0 12 18 3 -1. - <_> - 0 13 18 1 3. - <_> - - <_> - 4 0 2 1 -1. - <_> - 5 0 1 1 2. - <_> - - <_> - 11 1 4 2 -1. - <_> - 11 1 2 2 2. - <_> - - <_> - 0 0 15 2 -1. - <_> - 5 0 5 2 3. - <_> - - <_> - 12 0 3 1 -1. - <_> - 13 1 1 1 3. - 1 - <_> - - <_> - 6 0 1 3 -1. - <_> - 5 1 1 1 3. - 1 - <_> - - <_> - 11 3 2 1 -1. - <_> - 11 3 1 1 2. - <_> - - <_> - 5 3 2 1 -1. - <_> - 6 3 1 1 2. - <_> - - <_> - 16 0 2 4 -1. - <_> - 15 1 2 2 2. - 1 - <_> - - <_> - 2 0 4 2 -1. - <_> - 3 1 2 2 2. - 1 - <_> - - <_> - 0 0 18 2 -1. - <_> - 9 0 9 1 2. - <_> - 0 1 9 1 2. - <_> - - <_> - 0 4 18 4 -1. - <_> - 0 4 9 2 2. - <_> - 9 6 9 2 2. - <_> - - <_> - 10 7 4 2 -1. - <_> - 12 7 2 1 2. - <_> - 10 8 2 1 2. - <_> - - <_> - 4 3 3 4 -1. - <_> - 5 4 1 4 3. - 1 - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 10 7 4 2 -1. - <_> - 12 7 2 1 2. - <_> - 10 8 2 1 2. - <_> - - <_> - 6 8 2 2 -1. - <_> - 6 8 1 1 2. - <_> - 7 9 1 1 2. - <_> - - <_> - 8 3 2 8 -1. - <_> - 8 7 2 4 2. - <_> - - <_> - 1 4 16 9 -1. - <_> - 1 7 16 3 3. - <_> - - <_> - 15 6 3 6 -1. - <_> - 15 8 3 2 3. - <_> - - <_> - 0 6 3 6 -1. - <_> - 0 8 3 2 3. - <_> - - <_> - 6 0 6 11 -1. - <_> - 6 0 3 11 2. - <_> - - <_> - 6 0 4 10 -1. - <_> - 8 0 2 10 2. - <_> - - <_> - 13 0 4 4 -1. - <_> - 14 1 2 4 2. - 1 - <_> - - <_> - 9 5 6 2 -1. - <_> - 9 5 6 1 2. - 1 - <_> - - <_> - 8 10 6 2 -1. - <_> - 11 10 3 1 2. - <_> - 8 11 3 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 10 0 3 3 -1. - <_> - 10 1 3 1 3. - <_> - - <_> - 4 0 10 3 -1. - <_> - 4 1 10 1 3. - <_> - - <_> - 15 7 1 2 -1. - <_> - 15 8 1 1 2. - <_> - - <_> - 5 7 8 2 -1. - <_> - 5 8 8 1 2. - <_> - - <_> - 11 5 6 9 -1. - <_> - 13 8 2 3 9. - <_> - - <_> - 1 5 6 9 -1. - <_> - 3 8 2 3 9. - <_> - - <_> - 11 6 3 6 -1. - <_> - 9 8 3 2 3. - 1 - <_> - - <_> - 7 6 6 3 -1. - <_> - 9 8 2 3 3. - 1 - <_> - - <_> - 10 10 1 3 -1. - <_> - 10 11 1 1 3. - <_> - - <_> - 7 10 1 3 -1. - <_> - 7 11 1 1 3. - <_> - - <_> - 0 11 18 4 -1. - <_> - 9 11 9 2 2. - <_> - 0 13 9 2 2. - <_> - - <_> - 4 11 6 4 -1. - <_> - 7 11 3 4 2. - <_> - - <_> - 0 2 18 12 -1. - <_> - 0 5 18 6 2. - <_> - - <_> - 0 10 1 4 -1. - <_> - 0 12 1 2 2. - <_> - - <_> - 12 6 3 3 -1. - <_> - 13 7 1 1 9. - <_> - - <_> - 3 6 3 3 -1. - <_> - 4 7 1 1 9. - <_> - - <_> - 13 0 4 4 -1. - <_> - 14 1 2 4 2. - 1 - <_> - - <_> - 5 0 4 4 -1. - <_> - 4 1 4 2 2. - 1 - <_> - - <_> - 5 6 8 4 -1. - <_> - 9 6 4 2 2. - <_> - 5 8 4 2 2. - <_> - - <_> - 3 11 2 2 -1. - <_> - 3 11 1 1 2. - <_> - 4 12 1 1 2. - <_> - - <_> - 1 10 16 2 -1. - <_> - 1 11 16 1 2. - <_> - - <_> - 1 13 15 2 -1. - <_> - 1 14 15 1 2. - <_> - - <_> - 16 12 1 2 -1. - <_> - 16 12 1 1 2. - 1 - <_> - - <_> - 0 8 4 2 -1. - <_> - 0 8 2 1 2. - <_> - 2 9 2 1 2. - <_> - - <_> - 13 5 1 2 -1. - <_> - 13 6 1 1 2. - <_> - - <_> - 4 4 10 4 -1. - <_> - 4 6 10 2 2. - <_> - - <_> - 13 5 1 2 -1. - <_> - 13 6 1 1 2. - <_> - - <_> - 4 5 1 2 -1. - <_> - 4 6 1 1 2. - <_> - - <_> - 13 2 3 7 -1. - <_> - 14 3 1 7 3. - 1 - <_> - - <_> - 5 2 7 3 -1. - <_> - 4 3 7 1 3. - 1 - <_> - - <_> - 13 5 2 7 -1. - <_> - 13 5 1 7 2. - <_> - - <_> - 3 5 2 7 -1. - <_> - 4 5 1 7 2. - <_> - - <_> - 9 2 6 2 -1. - <_> - 9 2 3 2 2. - <_> - - <_> - 3 2 6 2 -1. - <_> - 6 2 3 2 2. - <_> - - <_> - 13 3 5 6 -1. - <_> - 13 6 5 3 2. - <_> - - <_> - 5 10 4 2 -1. - <_> - 5 10 2 1 2. - <_> - 7 11 2 1 2. - <_> - - <_> - 11 11 4 2 -1. - <_> - 12 11 2 2 2. - <_> - - <_> - 3 11 4 2 -1. - <_> - 4 11 2 2 2. - <_> - - <_> - 16 12 1 2 -1. - <_> - 16 12 1 1 2. - 1 - <_> - - <_> - 2 12 2 1 -1. - <_> - 2 12 1 1 2. - 1 - <_> - - <_> - 16 3 2 3 -1. - <_> - 15 4 2 1 3. - 1 - <_> - - <_> - 0 3 5 6 -1. - <_> - 0 6 5 3 2. - <_> - - <_> - 16 3 2 3 -1. - <_> - 15 4 2 1 3. - 1 - <_> - - <_> - 1 3 16 9 -1. - <_> - 1 6 16 3 3. - <_> - - <_> - 0 9 18 2 -1. - <_> - 0 10 18 1 2. - <_> - - <_> - 1 11 2 2 -1. - <_> - 1 11 1 1 2. - <_> - 2 12 1 1 2. - <_> - - <_> - 15 13 2 2 -1. - <_> - 16 13 1 1 2. - <_> - 15 14 1 1 2. - <_> - - <_> - 1 13 2 2 -1. - <_> - 1 13 1 1 2. - <_> - 2 14 1 1 2. - <_> - - <_> - 15 13 2 2 -1. - <_> - 16 13 1 1 2. - <_> - 15 14 1 1 2. - <_> - - <_> - 1 13 2 2 -1. - <_> - 1 13 1 1 2. - <_> - 2 14 1 1 2. - <_> - - <_> - 11 6 2 4 -1. - <_> - 10 7 2 2 2. - 1 - <_> - - <_> - 2 3 3 2 -1. - <_> - 3 4 1 2 3. - 1 - <_> - - <_> - 14 3 2 2 -1. - <_> - 15 3 1 1 2. - <_> - 14 4 1 1 2. - <_> - - <_> - 6 2 6 4 -1. - <_> - 6 2 3 2 2. - <_> - 9 4 3 2 2. - <_> - - <_> - 8 1 6 3 -1. - <_> - 10 2 2 1 9. - <_> - - <_> - 7 3 1 2 -1. - <_> - 7 4 1 1 2. - <_> - - <_> - 12 1 6 4 -1. - <_> - 12 1 3 4 2. - <_> - - <_> - 9 0 9 2 -1. - <_> - 12 3 3 2 3. - 1 - <_> - - <_> - 8 7 2 1 -1. - <_> - 8 7 1 1 2. - <_> - - <_> - 0 1 6 4 -1. - <_> - 3 1 3 4 2. - <_> - - <_> - 1 1 16 7 -1. - <_> - 5 1 8 7 2. - <_> - - <_> - 3 3 12 9 -1. - <_> - 7 6 4 3 9. - <_> - - <_> - 6 8 7 2 -1. - <_> - 6 9 7 1 2. - <_> - - <_> - 4 0 3 3 -1. - <_> - 4 1 3 1 3. - <_> - - <_> - 7 1 8 2 -1. - <_> - 9 3 4 2 2. - 1 - <_> - - <_> - 6 5 8 5 -1. - <_> - 8 5 4 5 2. - <_> - - <_> - 6 0 4 11 -1. - <_> - 8 0 2 11 2. - <_> - - <_> - 12 8 6 5 -1. - <_> - 12 8 3 5 2. - <_> - - <_> - 0 1 9 2 -1. - <_> - 3 1 3 2 3. - <_> - - <_> - 12 8 6 5 -1. - <_> - 12 8 3 5 2. - <_> - - <_> - 0 8 6 5 -1. - <_> - 3 8 3 5 2. - <_> - - <_> - 10 2 2 2 -1. - <_> - 10 2 1 2 2. - 1 - <_> - - <_> - 9 1 1 4 -1. - <_> - 9 1 1 2 2. - 1 - <_> - - <_> - 1 10 16 2 -1. - <_> - 1 11 16 1 2. - <_> - - <_> - 3 2 12 2 -1. - <_> - 3 2 6 1 2. - <_> - 9 3 6 1 2. - <_> - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - <_> - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - <_> - - <_> - 3 0 12 1 -1. - <_> - 7 0 4 1 3. - <_> - - <_> - 9 2 9 2 -1. - <_> - 12 5 3 2 3. - 1 - <_> - - <_> - 16 0 2 6 -1. - <_> - 16 3 2 3 2. - <_> - - <_> - 0 6 18 6 -1. - <_> - 0 6 9 3 2. - <_> - 9 9 9 3 2. - <_> - - <_> - 0 1 18 6 -1. - <_> - 9 1 9 3 2. - <_> - 0 4 9 3 2. - <_> - - <_> - 6 0 6 1 -1. - <_> - 9 0 3 1 2. - <_> - - <_> - 9 5 1 2 -1. - <_> - 9 5 1 1 2. - 1 - <_> - - <_> - 9 5 2 1 -1. - <_> - 9 5 1 1 2. - 1 - <_> - - <_> - 7 1 5 2 -1. - <_> - 7 2 5 1 2. - <_> - - <_> - 5 8 1 3 -1. - <_> - 5 9 1 1 3. - <_> - - <_> - 7 7 5 2 -1. - <_> - 7 8 5 1 2. - <_> - - <_> - 8 6 3 3 -1. - <_> - 7 7 3 1 3. - 1 - <_> - - <_> - 11 9 3 2 -1. - <_> - 11 10 3 1 2. - <_> - - <_> - 0 8 18 4 -1. - <_> - 0 8 9 2 2. - <_> - 9 10 9 2 2. - <_> - - <_> - 16 8 2 3 -1. - <_> - 16 9 2 1 3. - <_> - - <_> - 0 8 2 3 -1. - <_> - 0 9 2 1 3. - <_> - - <_> - 11 8 4 6 -1. - <_> - 11 10 4 2 3. - <_> - - <_> - 0 11 18 2 -1. - <_> - 0 12 18 1 2. - <_> - - <_> - 2 5 14 8 -1. - <_> - 2 7 14 4 2. - <_> - - <_> - 8 8 2 2 -1. - <_> - 8 9 2 1 2. - <_> - - <_> - 11 8 4 6 -1. - <_> - 11 10 4 2 3. - <_> - - <_> - 6 0 6 3 -1. - <_> - 9 0 3 3 2. - <_> - - <_> - 7 1 4 2 -1. - <_> - 9 1 2 1 2. - <_> - 7 2 2 1 2. - <_> - - <_> - 3 8 4 6 -1. - <_> - 3 10 4 2 3. - <_> - - <_> - 6 6 6 4 -1. - <_> - 9 6 3 2 2. - <_> - 6 8 3 2 2. - <_> - - <_> - 1 7 6 3 -1. - <_> - 3 8 2 1 9. - <_> - - <_> - 10 7 2 3 -1. - <_> - 9 8 2 1 3. - 1 - <_> - - <_> - 0 8 18 6 -1. - <_> - 0 8 9 3 2. - <_> - 9 11 9 3 2. - <_> - - <_> - 9 1 3 1 -1. - <_> - 10 2 1 1 3. - 1 - <_> - - <_> - 5 0 8 5 -1. - <_> - 7 0 4 5 2. - <_> - - <_> - 9 2 3 2 -1. - <_> - 10 3 1 2 3. - 1 - <_> - - <_> - 7 2 2 1 -1. - <_> - 7 2 1 1 2. - 1 - <_> - - <_> - 12 1 6 3 -1. - <_> - 11 2 6 1 3. - 1 - <_> - - <_> - 6 1 3 6 -1. - <_> - 7 2 1 6 3. - 1 - <_> - - <_> - 1 3 16 4 -1. - <_> - 9 3 8 2 2. - <_> - 1 5 8 2 2. - <_> - - <_> - 9 4 4 4 -1. - <_> - 8 5 4 2 2. - 1 - <_> - - <_> - 3 0 15 14 -1. - <_> - 8 0 5 14 3. - <_> - - <_> - 3 1 12 10 -1. - <_> - 6 1 6 10 2. - <_> - - <_> - 15 11 3 1 -1. - <_> - 16 12 1 1 3. - 1 - <_> - - <_> - 3 11 1 3 -1. - <_> - 2 12 1 1 3. - 1 - <_> - - <_> - 15 0 1 14 -1. - <_> - 15 7 1 7 2. - <_> - - <_> - 8 3 2 6 -1. - <_> - 8 6 2 3 2. - <_> - - <_> - 7 6 4 2 -1. - <_> - 7 7 4 1 2. - <_> - - <_> - 8 0 2 4 -1. - <_> - 8 1 2 2 2. - <_> - - <_> - 12 3 1 3 -1. - <_> - 12 4 1 1 3. - <_> - - <_> - 4 0 9 9 -1. - <_> - 7 0 3 9 3. - <_> - - <_> - 9 1 3 1 -1. - <_> - 10 2 1 1 3. - 1 - <_> - - <_> - 9 1 1 3 -1. - <_> - 8 2 1 1 3. - 1 - <_> - - <_> - 6 7 12 8 -1. - <_> - 6 7 6 8 2. - <_> - - <_> - 7 1 2 3 -1. - <_> - 8 1 1 3 2. - <_> - - <_> - 2 4 14 6 -1. - <_> - 2 6 14 2 3. - <_> - - <_> - 4 4 3 6 -1. - <_> - 4 6 3 2 3. - <_> - - <_> - 12 1 5 8 -1. - <_> - 12 5 5 4 2. - <_> - - <_> - 1 1 5 8 -1. - <_> - 1 5 5 4 2. - <_> - - <_> - 15 0 3 3 -1. - <_> - 14 1 3 1 3. - 1 - <_> - - <_> - 3 0 3 3 -1. - <_> - 4 1 1 3 3. - 1 - <_> - - <_> - 6 0 10 2 -1. - <_> - 11 0 5 1 2. - <_> - 6 1 5 1 2. - <_> - - <_> - 1 0 16 2 -1. - <_> - 1 0 8 1 2. - <_> - 9 1 8 1 2. - <_> - - <_> - 6 3 12 6 -1. - <_> - 9 3 6 6 2. - <_> - - <_> - 6 6 6 3 -1. - <_> - 8 7 2 1 9. - <_> - - <_> - 6 1 12 10 -1. - <_> - 6 1 6 10 2. - <_> - - <_> - 2 13 6 2 -1. - <_> - 4 13 2 2 3. - <_> - - <_> - 12 0 6 3 -1. - <_> - 11 1 6 1 3. - 1 - <_> - - <_> - 6 0 3 6 -1. - <_> - 7 1 1 6 3. - 1 - <_> - - <_> - 8 4 10 4 -1. - <_> - 8 4 5 4 2. - <_> - - <_> - 0 4 10 4 -1. - <_> - 5 4 5 4 2. - <_> - - <_> - 16 9 2 4 -1. - <_> - 16 10 2 2 2. - <_> - - <_> - 1 13 16 2 -1. - <_> - 1 14 16 1 2. - <_> - - <_> - 2 13 14 2 -1. - <_> - 2 14 14 1 2. - <_> - - <_> - 0 9 2 4 -1. - <_> - 0 10 2 2 2. - <_> - - <_> - 2 7 15 3 -1. - <_> - 2 8 15 1 3. - <_> - - <_> - 3 1 12 8 -1. - <_> - 3 3 12 4 2. - <_> - - <_> - 11 4 3 6 -1. - <_> - 9 6 3 2 3. - 1 - <_> - - <_> - 7 4 6 3 -1. - <_> - 9 6 2 3 3. - 1 - <_> - - <_> - 8 0 8 13 -1. - <_> - 10 0 4 13 2. - <_> - - <_> - 1 0 12 7 -1. - <_> - 5 0 4 7 3. - <_> - - <_> - 10 9 6 2 -1. - <_> - 13 9 3 1 2. - <_> - 10 10 3 1 2. - <_> - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - <_> - - <_> - 14 0 3 2 -1. - <_> - 15 1 1 2 3. - 1 - <_> - - <_> - 6 1 10 4 -1. - <_> - 5 2 10 2 2. - 1 - <_> - - <_> - 15 2 3 8 -1. - <_> - 16 3 1 8 3. - 1 - <_> - - <_> - 3 2 8 3 -1. - <_> - 2 3 8 1 3. - 1 - <_> - - <_> - 14 0 3 2 -1. - <_> - 15 1 1 2 3. - 1 - <_> - - <_> - 4 0 2 3 -1. - <_> - 3 1 2 1 3. - 1 - <_> - - <_> - 15 5 2 4 -1. - <_> - 16 5 1 2 2. - <_> - 15 7 1 2 2. - <_> - - <_> - 3 0 2 14 -1. - <_> - 3 7 2 7 2. - <_> - - <_> - 16 6 2 3 -1. - <_> - 16 7 2 1 3. - <_> - - <_> - 0 6 2 3 -1. - <_> - 0 7 2 1 3. - <_> - - <_> - 15 5 2 4 -1. - <_> - 16 5 1 2 2. - <_> - 15 7 1 2 2. - <_> - - <_> - 1 0 8 6 -1. - <_> - 1 3 8 3 2. - <_> - - <_> - 16 0 2 6 -1. - <_> - 16 3 2 3 2. - <_> - - <_> - 0 0 2 6 -1. - <_> - 0 3 2 3 2. - <_> - - <_> - 14 0 4 3 -1. - <_> - 13 1 4 1 3. - 1 - <_> - - <_> - 4 0 3 4 -1. - <_> - 5 1 1 4 3. - 1 - <_> - - <_> - 3 0 12 15 -1. - <_> - 3 0 6 15 2. - <_> - - <_> - 6 1 4 7 -1. - <_> - 8 1 2 7 2. - <_> - - <_> - 9 0 3 4 -1. - <_> - 10 1 1 4 3. - 1 - <_> - - <_> - 9 0 4 3 -1. - <_> - 8 1 4 1 3. - 1 - <_> - - <_> - 16 3 2 2 -1. - <_> - 17 3 1 1 2. - <_> - 16 4 1 1 2. - <_> - - <_> - 1 2 2 2 -1. - <_> - 1 2 1 1 2. - <_> - 2 3 1 1 2. - <_> - - <_> - 15 2 2 2 -1. - <_> - 16 2 1 1 2. - <_> - 15 3 1 1 2. - <_> - - <_> - 1 2 2 2 -1. - <_> - 1 2 1 1 2. - <_> - 2 3 1 1 2. - <_> - - <_> - 10 3 3 1 -1. - <_> - 11 4 1 1 3. - 1 - <_> - - <_> - 5 0 9 4 -1. - <_> - 5 0 9 2 2. - 1 - <_> - - <_> - 10 2 3 7 -1. - <_> - 11 3 1 7 3. - 1 - <_> - - <_> - 8 2 7 3 -1. - <_> - 7 3 7 1 3. - 1 - <_> - - <_> - 16 3 2 2 -1. - <_> - 17 3 1 1 2. - <_> - 16 4 1 1 2. - <_> - - <_> - 6 6 2 2 -1. - <_> - 6 6 1 1 2. - <_> - 7 7 1 1 2. - <_> - - <_> - 7 4 4 4 -1. - <_> - 7 6 4 2 2. - <_> - - <_> - 0 1 10 6 -1. - <_> - 0 3 10 2 3. - <_> - - <_> - 16 3 2 2 -1. - <_> - 17 3 1 1 2. - <_> - 16 4 1 1 2. - <_> - - <_> - 0 3 2 2 -1. - <_> - 0 3 1 1 2. - <_> - 1 4 1 1 2. - <_> - - <_> - 6 7 12 8 -1. - <_> - 6 7 6 8 2. - <_> - - <_> - 7 6 3 3 -1. - <_> - 6 7 3 1 3. - 1 - <_> - - <_> - 13 8 2 5 -1. - <_> - 13 8 1 5 2. - 1 - <_> - - <_> - 7 7 4 4 -1. - <_> - 7 7 4 2 2. - 1 - <_> - - <_> - 6 7 12 8 -1. - <_> - 6 7 6 8 2. - <_> - - <_> - 0 2 12 13 -1. - <_> - 6 2 6 13 2. - <_> - - <_> - 0 8 18 6 -1. - <_> - 0 11 18 3 2. - <_> - - <_> - 2 2 4 13 -1. - <_> - 3 2 2 13 2. - <_> - - <_> - 10 3 3 1 -1. - <_> - 11 4 1 1 3. - 1 - <_> - - <_> - 3 2 12 9 -1. - <_> - 7 5 4 3 9. - <_> - - <_> - 10 3 3 1 -1. - <_> - 11 4 1 1 3. - 1 - <_> - - <_> - 8 3 1 3 -1. - <_> - 7 4 1 1 3. - 1 - <_> - - <_> - 9 2 8 6 -1. - <_> - 9 2 4 6 2. - <_> - - <_> - 1 2 8 6 -1. - <_> - 5 2 4 6 2. - <_> - - <_> - 12 0 2 1 -1. - <_> - 12 0 1 1 2. - 1 - <_> - - <_> - 6 0 1 2 -1. - <_> - 6 0 1 1 2. - 1 - <_> - - <_> - 10 0 4 2 -1. - <_> - 10 1 4 1 2. - <_> - - <_> - 4 0 8 2 -1. - <_> - 4 0 4 1 2. - <_> - 8 1 4 1 2. - <_> - - <_> - 7 12 8 3 -1. - <_> - 9 12 4 3 2. - <_> - - <_> - 1 13 16 1 -1. - <_> - 5 13 8 1 2. - <_> - - <_> - 7 13 10 1 -1. - <_> - 7 13 5 1 2. - <_> - - <_> - 1 13 10 1 -1. - <_> - 6 13 5 1 2. - <_> - - <_> - 0 13 18 2 -1. - <_> - 0 13 9 2 2. - <_> - - <_> - 4 6 3 2 -1. - <_> - 5 7 1 2 3. - 1 - <_> - - <_> - 11 9 2 2 -1. - <_> - 12 9 1 1 2. - <_> - 11 10 1 1 2. - <_> - - <_> - 1 12 13 2 -1. - <_> - 1 13 13 1 2. - <_> - - <_> - 11 9 3 6 -1. - <_> - 11 11 3 2 3. - <_> - - <_> - 8 7 4 2 -1. - <_> - 9 8 2 2 2. - 1 - <_> - - <_> - 11 5 1 3 -1. - <_> - 10 6 1 1 3. - 1 - <_> - - <_> - 1 9 8 4 -1. - <_> - 1 9 4 2 2. - <_> - 5 11 4 2 2. - <_> - - <_> - 10 5 8 10 -1. - <_> - 14 5 4 5 2. - <_> - 10 10 4 5 2. - <_> - - <_> - 2 10 3 2 -1. - <_> - 3 11 1 2 3. - 1 - <_> - - <_> - 1 1 16 9 -1. - <_> - 1 4 16 3 3. - <_> - - <_> - 7 4 4 2 -1. - <_> - 8 5 2 2 2. - 1 - <_> - - <_> - 12 0 6 3 -1. - <_> - 14 2 2 3 3. - 1 - <_> - - <_> - 1 12 6 3 -1. - <_> - 3 12 2 3 3. - <_> - - <_> - 11 7 3 2 -1. - <_> - 12 8 1 2 3. - 1 - <_> - - <_> - 4 8 4 4 -1. - <_> - 4 8 2 2 2. - <_> - 6 10 2 2 2. - <_> - - <_> - 6 0 9 11 -1. - <_> - 9 0 3 11 3. - <_> - - <_> - 8 0 6 1 -1. - <_> - 10 2 2 1 3. - 1 - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 10 2 1 2. - <_> - - <_> - 0 9 17 2 -1. - <_> - 0 10 17 1 2. - <_> - - <_> - 2 0 14 6 -1. - <_> - 2 3 14 3 2. - <_> - - <_> - 0 13 2 2 -1. - <_> - 0 13 1 1 2. - <_> - 1 14 1 1 2. - <_> - - <_> - 5 4 10 10 -1. - <_> - 10 4 5 5 2. - <_> - 5 9 5 5 2. - <_> - - <_> - 3 1 12 9 -1. - <_> - 7 4 4 3 9. - <_> - - <_> - 12 4 5 6 -1. - <_> - 12 4 5 3 2. - 1 - <_> - - <_> - 6 4 6 5 -1. - <_> - 6 4 3 5 2. - 1 - <_> - - <_> - 8 1 2 2 -1. - <_> - 9 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 8 1 2 2 -1. - <_> - 8 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 8 2 1 2. - <_> - - <_> - 0 8 18 3 -1. - <_> - 0 9 18 1 3. - <_> - - <_> - 9 6 1 3 -1. - <_> - 8 7 1 1 3. - 1 - <_> - - <_> - 6 0 2 3 -1. - <_> - 6 1 2 1 3. - <_> - - <_> - 12 5 6 10 -1. - <_> - 12 10 6 5 2. - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 7 1 1 3. - 1 - <_> - - <_> - 3 3 12 4 -1. - <_> - 3 5 12 2 2. - <_> - - <_> - 5 5 7 3 -1. - <_> - 5 6 7 1 3. - <_> - - <_> - 14 1 4 3 -1. - <_> - 13 2 4 1 3. - 1 - <_> - - <_> - 4 1 3 4 -1. - <_> - 5 2 1 4 3. - 1 - <_> - - <_> - 16 3 2 2 -1. - <_> - 17 3 1 1 2. - <_> - 16 4 1 1 2. - <_> - - <_> - 0 3 2 2 -1. - <_> - 0 3 1 1 2. - <_> - 1 4 1 1 2. - <_> - - <_> - 10 0 4 2 -1. - <_> - 11 1 2 2 2. - 1 - <_> - - <_> - 8 0 2 4 -1. - <_> - 7 1 2 2 2. - 1 - <_> - - <_> - 14 3 4 3 -1. - <_> - 13 4 4 1 3. - 1 - <_> - - <_> - 0 5 1 4 -1. - <_> - 0 6 1 2 2. - <_> - - <_> - 15 5 2 3 -1. - <_> - 14 6 2 1 3. - 1 - <_> - - <_> - 0 4 18 6 -1. - <_> - 0 6 18 2 3. - <_> - - <_> - 15 5 2 3 -1. - <_> - 14 6 2 1 3. - 1 - <_> - - <_> - 3 5 3 2 -1. - <_> - 4 6 1 2 3. - 1 - <_> - - <_> - 11 6 1 4 -1. - <_> - 10 7 1 2 2. - 1 - <_> - - <_> - 2 8 4 7 -1. - <_> - 3 8 2 7 2. - <_> - - <_> - 9 0 9 4 -1. - <_> - 9 0 9 2 2. - 1 - <_> - - <_> - 1 9 6 6 -1. - <_> - 3 11 2 2 9. - <_> - - <_> - 12 5 6 10 -1. - <_> - 12 10 6 5 2. - <_> - - <_> - 0 0 15 14 -1. - <_> - 5 0 5 14 3. - <_> - - <_> - 7 3 4 9 -1. - <_> - 7 3 2 9 2. - <_> - - <_> - 9 0 4 9 -1. - <_> - 9 0 2 9 2. - 1 - <_> - - <_> - 9 5 3 1 -1. - <_> - 10 5 1 1 3. - <_> - - <_> - 5 4 6 3 -1. - <_> - 7 4 2 3 3. - <_> - - <_> - 5 0 8 8 -1. - <_> - 7 0 4 8 2. - <_> - - <_> - 3 4 3 3 -1. - <_> - 4 5 1 3 3. - 1 - <_> - - <_> - 9 2 3 2 -1. - <_> - 10 3 1 2 3. - 1 - <_> - - <_> - 3 14 2 1 -1. - <_> - 4 14 1 1 2. - <_> - - <_> - 9 2 3 2 -1. - <_> - 10 3 1 2 3. - 1 - <_> - - <_> - 9 2 2 3 -1. - <_> - 8 3 2 1 3. - 1 - <_> - - <_> - 1 5 16 6 -1. - <_> - 1 7 16 2 3. - <_> - - <_> - 0 3 4 9 -1. - <_> - 0 6 4 3 3. - <_> - - <_> - 10 8 6 4 -1. - <_> - 13 8 3 2 2. - <_> - 10 10 3 2 2. - <_> - - <_> - 2 8 6 4 -1. - <_> - 2 8 3 2 2. - <_> - 5 10 3 2 2. - <_> - - <_> - 1 4 16 6 -1. - <_> - 5 4 8 6 2. - <_> - - <_> - 6 2 2 1 -1. - <_> - 7 2 1 1 2. - <_> - - <_> - 8 1 2 2 -1. - <_> - 9 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 2 8 6 4 -1. - <_> - 2 8 3 2 2. - <_> - 5 10 3 2 2. - <_> - - <_> - 15 3 2 10 -1. - <_> - 15 3 1 10 2. - 1 - <_> - - <_> - 3 3 10 2 -1. - <_> - 3 3 10 1 2. - 1 - <_> - - <_> - 0 12 18 2 -1. - <_> - 9 12 9 1 2. - <_> - 0 13 9 1 2. - <_> - - <_> - 5 9 6 4 -1. - <_> - 5 9 3 2 2. - <_> - 8 11 3 2 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 16 0 1 2 2. - 1 - <_> - - <_> - 0 7 7 8 -1. - <_> - 0 11 7 4 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 2 0 2 2 -1. - <_> - 2 0 2 1 2. - 1 - <_> - - <_> - 14 0 3 15 -1. - <_> - 15 0 1 15 3. - <_> - - <_> - 1 0 3 15 -1. - <_> - 2 0 1 15 3. - <_> - - <_> - 17 0 1 4 -1. - <_> - 17 2 1 2 2. - <_> - - <_> - 3 14 8 1 -1. - <_> - 5 14 4 1 2. - <_> - - <_> - 17 3 1 8 -1. - <_> - 17 7 1 4 2. - <_> - - <_> - 0 9 18 6 -1. - <_> - 0 11 18 2 3. - <_> - - <_> - 8 3 2 4 -1. - <_> - 8 5 2 2 2. - <_> - - <_> - 1 0 10 8 -1. - <_> - 1 0 5 4 2. - <_> - 6 4 5 4 2. - <_> - - <_> - 16 0 2 12 -1. - <_> - 16 6 2 6 2. - <_> - - <_> - 0 0 2 12 -1. - <_> - 0 6 2 6 2. - <_> - - <_> - 17 6 1 2 -1. - <_> - 17 7 1 1 2. - <_> - - <_> - 9 1 2 2 -1. - <_> - 9 1 2 1 2. - 1 - <_> - - <_> - 7 2 4 1 -1. - <_> - 7 2 2 1 2. - <_> - - <_> - 3 2 10 8 -1. - <_> - 3 4 10 4 2. - <_> - - <_> - 1 7 16 2 -1. - <_> - 1 8 16 1 2. - <_> - - <_> - 3 0 2 12 -1. - <_> - 3 4 2 4 3. - <_> - - <_> - 15 3 2 2 -1. - <_> - 16 3 1 1 2. - <_> - 15 4 1 1 2. - <_> - - <_> - 1 3 2 2 -1. - <_> - 1 3 1 1 2. - <_> - 2 4 1 1 2. - <_> - - <_> - 15 3 2 4 -1. - <_> - 16 3 1 2 2. - <_> - 15 5 1 2 2. - <_> - - <_> - 0 1 18 2 -1. - <_> - 0 1 9 1 2. - <_> - 9 2 9 1 2. - <_> - - <_> - 14 5 3 3 -1. - <_> - 15 5 1 3 3. - <_> - - <_> - 1 5 3 3 -1. - <_> - 2 5 1 3 3. - <_> - - <_> - 13 8 4 7 -1. - <_> - 13 8 2 7 2. - <_> - - <_> - 1 12 2 1 -1. - <_> - 1 12 1 1 2. - 1 - <_> - - <_> - 16 4 2 10 -1. - <_> - 17 4 1 5 2. - <_> - 16 9 1 5 2. - <_> - - <_> - 0 4 2 10 -1. - <_> - 0 4 1 5 2. - <_> - 1 9 1 5 2. - <_> - - <_> - 16 10 2 1 -1. - <_> - 16 10 1 1 2. - <_> - - <_> - 0 10 2 1 -1. - <_> - 1 10 1 1 2. - <_> - - <_> - 16 6 2 1 -1. - <_> - 16 6 1 1 2. - 1 - <_> - - <_> - 2 6 1 2 -1. - <_> - 2 6 1 1 2. - 1 - <_> - - <_> - 13 8 4 7 -1. - <_> - 13 8 2 7 2. - <_> - - <_> - 1 8 4 7 -1. - <_> - 3 8 2 7 2. - <_> - - <_> - 0 9 18 4 -1. - <_> - 9 9 9 2 2. - <_> - 0 11 9 2 2. - <_> - - <_> - 8 6 3 2 -1. - <_> - 9 7 1 2 3. - 1 - <_> - - <_> - 8 7 8 4 -1. - <_> - 12 7 4 2 2. - <_> - 8 9 4 2 2. - <_> - - <_> - 1 12 9 3 -1. - <_> - 1 13 9 1 3. - <_> - - <_> - 13 13 1 2 -1. - <_> - 13 14 1 1 2. - <_> - - <_> - 0 13 18 2 -1. - <_> - 0 13 9 1 2. - <_> - 9 14 9 1 2. - <_> - - <_> - 7 11 8 4 -1. - <_> - 7 13 8 2 2. - <_> - - <_> - 0 7 18 4 -1. - <_> - 0 7 9 2 2. - <_> - 9 9 9 2 2. - <_> - - <_> - 5 2 9 6 -1. - <_> - 5 4 9 2 3. - <_> - - <_> - 6 5 6 4 -1. - <_> - 6 5 3 2 2. - <_> - 9 7 3 2 2. - <_> - - <_> - 6 0 9 9 -1. - <_> - 9 3 3 3 9. - <_> - - <_> - 7 0 4 4 -1. - <_> - 7 0 2 2 2. - <_> - 9 2 2 2 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 6 0 3 6 -1. - <_> - 4 2 3 2 3. - 1 - <_> - - <_> - 17 0 1 3 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 1 0 3 1 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 10 0 3 15 -1. - <_> - 11 5 1 5 9. - <_> - - <_> - 5 0 3 15 -1. - <_> - 6 5 1 5 9. - <_> - - <_> - 16 0 1 4 -1. - <_> - 16 1 1 2 2. - <_> - - <_> - 1 0 1 2 -1. - <_> - 1 1 1 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 0 0 17 10 -1. - <_> - 0 5 17 5 2. - <_> - - <_> - 12 0 3 10 -1. - <_> - 12 5 3 5 2. - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 15 2 2 2 -1. - <_> - 16 2 1 1 2. - <_> - 15 3 1 1 2. - <_> - - <_> - 3 3 9 6 -1. - <_> - 6 5 3 2 9. - <_> - - <_> - 6 3 11 2 -1. - <_> - 6 4 11 1 2. - <_> - - <_> - 1 2 2 2 -1. - <_> - 1 2 1 1 2. - <_> - 2 3 1 1 2. - <_> - - <_> - 14 1 4 2 -1. - <_> - 14 1 4 1 2. - 1 - <_> - - <_> - 4 1 2 4 -1. - <_> - 4 1 1 4 2. - 1 - <_> - - <_> - 8 4 4 6 -1. - <_> - 6 6 4 2 3. - 1 - <_> - - <_> - 14 0 4 4 -1. - <_> - 13 1 4 2 2. - 1 - <_> - - <_> - 0 9 8 4 -1. - <_> - 0 9 4 2 2. - <_> - 4 11 4 2 2. - <_> - - <_> - 15 8 3 3 -1. - <_> - 16 9 1 3 3. - 1 - <_> - - <_> - 2 7 14 4 -1. - <_> - 2 9 14 2 2. - <_> - - <_> - 9 0 4 1 -1. - <_> - 9 0 2 1 2. - 1 - <_> - - <_> - 9 0 1 4 -1. - <_> - 9 0 1 2 2. - 1 - <_> - - <_> - 2 0 14 15 -1. - <_> - 2 0 7 15 2. - <_> - - <_> - 1 7 14 4 -1. - <_> - 1 9 14 2 2. - <_> - - <_> - 9 8 8 7 -1. - <_> - 11 8 4 7 2. - <_> - - <_> - 4 0 4 4 -1. - <_> - 5 1 2 4 2. - 1 - <_> - - <_> - 8 6 9 8 -1. - <_> - 11 6 3 8 3. - <_> - - <_> - 1 6 9 8 -1. - <_> - 4 6 3 8 3. - <_> - - <_> - 7 6 4 2 -1. - <_> - 7 7 4 1 2. - <_> - - <_> - 8 0 2 3 -1. - <_> - 7 1 2 1 3. - 1 - <_> - - <_> - 10 6 3 2 -1. - <_> - 11 7 1 2 3. - 1 - <_> - - <_> - 0 1 18 14 -1. - <_> - 0 1 9 7 2. - <_> - 9 8 9 7 2. - <_> - - <_> - 11 0 2 2 -1. - <_> - 11 1 2 1 2. - <_> - - <_> - 5 0 2 2 -1. - <_> - 5 1 2 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 4 4 10 6 -1. - <_> - 4 4 5 3 2. - <_> - 9 7 5 3 2. - <_> - - <_> - 8 9 6 2 -1. - <_> - 11 9 3 1 2. - <_> - 8 10 3 1 2. - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 16 1 1 2 -1. - <_> - 16 2 1 1 2. - <_> - - <_> - 2 3 3 2 -1. - <_> - 3 4 1 2 3. - 1 - <_> - - <_> - 16 3 2 10 -1. - <_> - 16 8 2 5 2. - <_> - - <_> - 0 3 2 10 -1. - <_> - 0 8 2 5 2. - <_> - - <_> - 8 9 6 2 -1. - <_> - 11 9 3 1 2. - <_> - 8 10 3 1 2. - <_> - - <_> - 1 7 10 2 -1. - <_> - 1 7 5 1 2. - <_> - 6 8 5 1 2. - <_> - - <_> - 0 0 18 8 -1. - <_> - 9 0 9 4 2. - <_> - 0 4 9 4 2. - <_> - - <_> - 4 0 1 4 -1. - <_> - 3 1 1 2 2. - 1 - <_> - - <_> - 10 4 4 4 -1. - <_> - 11 5 2 4 2. - 1 - <_> - - <_> - 8 4 4 4 -1. - <_> - 7 5 4 2 2. - 1 - <_> - - <_> - 16 1 2 10 -1. - <_> - 16 1 1 10 2. - 1 - <_> - - <_> - 5 0 8 9 -1. - <_> - 7 0 4 9 2. - <_> - - <_> - 16 1 2 10 -1. - <_> - 16 1 1 10 2. - 1 - <_> - - <_> - 2 1 10 2 -1. - <_> - 2 1 10 1 2. - 1 - <_> - - <_> - 13 0 3 2 -1. - <_> - 14 1 1 2 3. - 1 - <_> - - <_> - 3 0 12 6 -1. - <_> - 6 0 6 6 2. - <_> - - <_> - 6 0 12 4 -1. - <_> - 9 0 6 4 2. - <_> - - <_> - 6 3 6 6 -1. - <_> - 6 6 6 3 2. - <_> - - <_> - 6 3 12 7 -1. - <_> - 6 3 6 7 2. - <_> - - <_> - 0 3 12 7 -1. - <_> - 6 3 6 7 2. - <_> - - <_> - 13 0 3 2 -1. - <_> - 14 1 1 2 3. - 1 - <_> - - <_> - 5 0 2 3 -1. - <_> - 4 1 2 1 3. - 1 - <_> - - <_> - 0 9 18 4 -1. - <_> - 0 11 18 2 2. - <_> - - <_> - 9 6 1 8 -1. - <_> - 9 6 1 4 2. - 1 - <_> - - <_> - 2 5 14 6 -1. - <_> - 2 7 14 2 3. - <_> - - <_> - 2 0 5 8 -1. - <_> - 2 4 5 4 2. - <_> - - <_> - 4 3 10 4 -1. - <_> - 4 5 10 2 2. - <_> - - <_> - 8 0 2 3 -1. - <_> - 9 0 1 3 2. - <_> - - <_> - 15 6 1 3 -1. - <_> - 14 7 1 1 3. - 1 - <_> - - <_> - 3 6 3 4 -1. - <_> - 3 7 3 2 2. - <_> - - <_> - 9 4 8 10 -1. - <_> - 13 4 4 5 2. - <_> - 9 9 4 5 2. - <_> - - <_> - 3 8 3 3 -1. - <_> - 4 9 1 1 9. - <_> - - <_> - 13 9 1 2 -1. - <_> - 13 10 1 1 2. - <_> - - <_> - 4 9 1 2 -1. - <_> - 4 10 1 1 2. - <_> - - <_> - 8 4 2 10 -1. - <_> - 8 9 2 5 2. - <_> - - <_> - 7 7 4 4 -1. - <_> - 7 9 4 2 2. - <_> - - <_> - 14 0 2 10 -1. - <_> - 14 0 1 10 2. - 1 - <_> - - <_> - 4 0 10 2 -1. - <_> - 4 0 10 1 2. - 1 - <_> - - <_> - 16 4 2 3 -1. - <_> - 15 5 2 1 3. - 1 - <_> - - <_> - 4 12 9 3 -1. - <_> - 7 12 3 3 3. - <_> - - <_> - 16 4 2 3 -1. - <_> - 15 5 2 1 3. - 1 - <_> - - <_> - 2 1 14 4 -1. - <_> - 2 3 14 2 2. - <_> - - <_> - 9 1 4 2 -1. - <_> - 9 2 4 1 2. - <_> - - <_> - 1 3 12 4 -1. - <_> - 1 3 6 2 2. - <_> - 7 5 6 2 2. - <_> - - <_> - 9 3 8 2 -1. - <_> - 9 3 4 2 2. - <_> - - <_> - 1 3 8 2 -1. - <_> - 5 3 4 2 2. - <_> - - <_> - 15 8 3 4 -1. - <_> - 16 9 1 4 3. - 1 - <_> - - <_> - 3 8 4 3 -1. - <_> - 2 9 4 1 3. - 1 - <_> - - <_> - 15 12 2 3 -1. - <_> - 15 13 2 1 3. - <_> - - <_> - 0 7 1 4 -1. - <_> - 0 8 1 2 2. - <_> - - <_> - 15 12 2 3 -1. - <_> - 15 13 2 1 3. - <_> - - <_> - 1 12 2 3 -1. - <_> - 1 13 2 1 3. - <_> - - <_> - 10 0 3 8 -1. - <_> - 8 2 3 4 2. - 1 - <_> - - <_> - 3 0 12 8 -1. - <_> - 9 0 6 8 2. - <_> - - <_> - 5 14 12 1 -1. - <_> - 8 14 6 1 2. - <_> - - <_> - 8 0 2 4 -1. - <_> - 8 1 2 2 2. - <_> - - <_> - 8 0 4 3 -1. - <_> - 8 0 2 3 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - <_> - - <_> - 8 13 8 2 -1. - <_> - 8 14 8 1 2. - <_> - - <_> - 0 11 18 4 -1. - <_> - 0 11 9 2 2. - <_> - 9 13 9 2 2. - <_> - - <_> - 9 9 8 2 -1. - <_> - 13 9 4 1 2. - <_> - 9 10 4 1 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 10 2 1 2. - <_> - - <_> - 9 9 8 2 -1. - <_> - 13 9 4 1 2. - <_> - 9 10 4 1 2. - <_> - - <_> - 1 9 8 2 -1. - <_> - 1 9 4 1 2. - <_> - 5 10 4 1 2. - <_> - - <_> - 11 7 1 3 -1. - <_> - 10 8 1 1 3. - 1 - <_> - - <_> - 7 7 3 1 -1. - <_> - 8 8 1 1 3. - 1 - <_> - - <_> - 10 0 3 8 -1. - <_> - 8 2 3 4 2. - 1 - <_> - - <_> - 8 0 8 3 -1. - <_> - 10 2 4 3 2. - 1 - <_> - - <_> - 5 7 8 2 -1. - <_> - 5 8 8 1 2. - <_> - - <_> - 4 1 9 9 -1. - <_> - 7 4 3 3 9. - <_> - - <_> - 10 3 3 7 -1. - <_> - 11 4 1 7 3. - 1 - <_> - - <_> - 8 3 7 3 -1. - <_> - 7 4 7 1 3. - 1 - <_> - - <_> - 7 5 4 2 -1. - <_> - 7 6 4 1 2. - <_> - - <_> - 7 0 2 6 -1. - <_> - 7 3 2 3 2. - <_> - - <_> - 8 0 3 6 -1. - <_> - 9 2 1 2 9. - <_> - - <_> - 9 3 6 3 -1. - <_> - 11 5 2 3 3. - 1 - <_> - - <_> - 5 14 12 1 -1. - <_> - 8 14 6 1 2. - <_> - - <_> - 1 14 12 1 -1. - <_> - 4 14 6 1 2. - <_> - - <_> - 1 7 16 6 -1. - <_> - 1 9 16 2 3. - <_> - - <_> - 0 10 3 4 -1. - <_> - 0 11 3 2 2. - <_> - - <_> - 14 7 4 1 -1. - <_> - 15 7 2 1 2. - <_> - - <_> - 8 1 1 4 -1. - <_> - 8 1 1 2 2. - 1 - <_> - - <_> - 14 1 4 3 -1. - <_> - 15 2 2 3 2. - 1 - <_> - - <_> - 2 6 2 4 -1. - <_> - 2 6 1 2 2. - <_> - 3 8 1 2 2. - <_> - - <_> - 15 5 3 10 -1. - <_> - 15 10 3 5 2. - <_> - - <_> - 3 9 6 4 -1. - <_> - 3 9 3 2 2. - <_> - 6 11 3 2 2. - <_> - - <_> - 13 3 3 7 -1. - <_> - 14 4 1 7 3. - 1 - <_> - - <_> - 6 2 7 4 -1. - <_> - 5 3 7 2 2. - 1 - <_> - - <_> - 15 1 3 3 -1. - <_> - 14 2 3 1 3. - 1 - <_> - - <_> - 0 4 8 3 -1. - <_> - 0 5 8 1 3. - <_> - - <_> - 14 4 3 5 -1. - <_> - 15 5 1 5 3. - 1 - <_> - - <_> - 5 4 5 2 -1. - <_> - 5 4 5 1 2. - 1 - <_> - - <_> - 10 7 1 6 -1. - <_> - 8 9 1 2 3. - 1 - <_> - - <_> - 8 7 6 1 -1. - <_> - 10 9 2 1 3. - 1 - <_> - - <_> - 10 4 6 10 -1. - <_> - 13 4 3 5 2. - <_> - 10 9 3 5 2. - <_> - - <_> - 2 4 6 10 -1. - <_> - 2 4 3 5 2. - <_> - 5 9 3 5 2. - <_> - - <_> - 4 5 10 2 -1. - <_> - 9 5 5 1 2. - <_> - 4 6 5 1 2. - <_> - - <_> - 6 2 3 6 -1. - <_> - 7 3 1 6 3. - 1 - <_> - - <_> - 16 0 2 4 -1. - <_> - 16 2 2 2 2. - <_> - - <_> - 0 0 2 4 -1. - <_> - 0 2 2 2 2. - <_> - - <_> - 8 0 10 4 -1. - <_> - 8 2 10 2 2. - <_> - - <_> - 0 0 18 4 -1. - <_> - 0 0 9 2 2. - <_> - 9 2 9 2 2. - <_> - - <_> - 6 0 12 2 -1. - <_> - 9 0 6 2 2. - <_> - - <_> - 0 0 12 2 -1. - <_> - 3 0 6 2 2. - <_> - - <_> - 17 3 1 3 -1. - <_> - 16 4 1 1 3. - 1 - <_> - - <_> - 0 4 12 6 -1. - <_> - 3 4 6 6 2. - <_> - - <_> - 17 3 1 3 -1. - <_> - 16 4 1 1 3. - 1 - <_> - - <_> - 8 7 3 1 -1. - <_> - 9 8 1 1 3. - 1 - <_> - - <_> - 17 3 1 3 -1. - <_> - 16 4 1 1 3. - 1 - <_> - - <_> - 1 3 3 1 -1. - <_> - 2 4 1 1 3. - 1 - <_> - - <_> - 15 2 3 1 -1. - <_> - 16 3 1 1 3. - 1 - <_> - - <_> - 3 2 1 3 -1. - <_> - 2 3 1 1 3. - 1 - <_> - - <_> - 2 3 14 6 -1. - <_> - 2 5 14 2 3. - <_> - - <_> - 4 2 3 8 -1. - <_> - 4 6 3 4 2. - <_> - - <_> - 14 2 4 3 -1. - <_> - 13 3 4 1 3. - 1 - <_> - - <_> - 4 2 3 4 -1. - <_> - 5 3 1 4 3. - 1 - <_> - - <_> - 12 2 4 13 -1. - <_> - 13 2 2 13 2. - <_> - - <_> - 2 2 4 13 -1. - <_> - 3 2 2 13 2. - <_> - - <_> - 9 4 8 3 -1. - <_> - 9 4 4 3 2. - 1 - <_> - - <_> - 9 4 3 8 -1. - <_> - 9 4 3 4 2. - 1 - <_> - - <_> - 17 10 1 2 -1. - <_> - 17 11 1 1 2. - <_> - - <_> - 7 0 4 1 -1. - <_> - 9 0 2 1 2. - <_> - - <_> - 6 0 9 13 -1. - <_> - 9 0 3 13 3. - <_> - - <_> - 0 1 1 10 -1. - <_> - 0 6 1 5 2. - <_> - - <_> - 0 11 18 2 -1. - <_> - 0 12 18 1 2. - <_> - - <_> - 4 7 3 6 -1. - <_> - 5 9 1 2 9. - <_> - - <_> - 12 7 2 5 -1. - <_> - 12 7 1 5 2. - 1 - <_> - - <_> - 6 5 2 1 -1. - <_> - 7 5 1 1 2. - <_> - - <_> - 8 2 6 2 -1. - <_> - 11 2 3 1 2. - <_> - 8 3 3 1 2. - <_> - - <_> - 4 6 3 1 -1. - <_> - 5 6 1 1 3. - <_> - - <_> - 0 1 18 14 -1. - <_> - 9 1 9 7 2. - <_> - 0 8 9 7 2. - <_> - - <_> - 0 9 6 6 -1. - <_> - 0 9 3 3 2. - <_> - 3 12 3 3 2. - <_> - - <_> - 8 9 10 6 -1. - <_> - 13 9 5 3 2. - <_> - 8 12 5 3 2. - <_> - - <_> - 1 10 15 3 -1. - <_> - 1 11 15 1 3. - <_> - - <_> - 16 11 1 2 -1. - <_> - 16 11 1 1 2. - 1 - <_> - - <_> - 4 4 9 2 -1. - <_> - 7 7 3 2 3. - 1 - <_> - - <_> - 7 7 4 2 -1. - <_> - 7 8 4 1 2. - <_> - - <_> - 2 7 4 2 -1. - <_> - 2 7 2 1 2. - <_> - 4 8 2 1 2. - <_> - - <_> - 8 0 5 2 -1. - <_> - 8 1 5 1 2. - <_> - - <_> - 6 2 4 11 -1. - <_> - 7 2 2 11 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 11 9 2 2 -1. - <_> - 12 9 1 1 2. - <_> - 11 10 1 1 2. - <_> - - <_> - 7 8 4 4 -1. - <_> - 8 8 2 4 2. - <_> - - <_> - 5 0 8 1 -1. - <_> - 7 0 4 1 2. - <_> - - <_> - 4 0 6 8 -1. - <_> - 4 0 3 4 2. - <_> - 7 4 3 4 2. - <_> - - <_> - 5 1 9 9 -1. - <_> - 8 4 3 3 9. - <_> - - <_> - 0 4 4 10 -1. - <_> - 0 9 4 5 2. - <_> - - <_> - 16 11 1 2 -1. - <_> - 16 11 1 1 2. - 1 - <_> - - <_> - 1 7 16 4 -1. - <_> - 1 8 16 2 2. - <_> - - <_> - 16 11 1 2 -1. - <_> - 16 11 1 1 2. - 1 - <_> - - <_> - 2 11 2 1 -1. - <_> - 2 11 1 1 2. - 1 - <_> - - <_> - 2 13 14 2 -1. - <_> - 2 14 14 1 2. - <_> - - <_> - 0 13 4 2 -1. - <_> - 0 13 2 1 2. - <_> - 2 14 2 1 2. - <_> - - <_> - 15 1 3 2 -1. - <_> - 15 1 3 1 2. - 1 - <_> - - <_> - 5 9 2 2 -1. - <_> - 5 9 1 1 2. - <_> - 6 10 1 1 2. - <_> - - <_> - 6 9 6 2 -1. - <_> - 6 10 6 1 2. - <_> - - <_> - 0 6 18 2 -1. - <_> - 0 6 9 1 2. - <_> - 9 7 9 1 2. - <_> - - <_> - 15 13 2 2 -1. - <_> - 15 13 1 2 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 0 8 18 4 -1. - <_> - 9 8 9 2 2. - <_> - 0 10 9 2 2. - <_> - - <_> - 8 4 2 4 -1. - <_> - 8 6 2 2 2. - <_> - - <_> - 3 4 12 9 -1. - <_> - 7 7 4 3 9. - <_> - - <_> - 9 1 4 7 -1. - <_> - 9 1 2 7 2. - 1 - <_> - - <_> - 11 0 4 2 -1. - <_> - 12 1 2 2 2. - 1 - <_> - - <_> - 7 0 2 4 -1. - <_> - 6 1 2 2 2. - 1 - <_> - - <_> - 12 0 2 2 -1. - <_> - 12 0 1 2 2. - 1 - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 3 3. - 1 - <_> - - <_> - 12 0 3 2 -1. - <_> - 13 1 1 2 3. - 1 - <_> - - <_> - 6 0 2 3 -1. - <_> - 5 1 2 1 3. - 1 - <_> - - <_> - 13 1 4 4 -1. - <_> - 15 1 2 2 2. - <_> - 13 3 2 2 2. - <_> - - <_> - 2 0 2 1 -1. - <_> - 3 0 1 1 2. - <_> - - <_> - 14 0 2 2 -1. - <_> - 15 0 1 1 2. - <_> - 14 1 1 1 2. - <_> - - <_> - 2 0 2 2 -1. - <_> - 2 0 1 1 2. - <_> - 3 1 1 1 2. - <_> - - <_> - 14 0 2 2 -1. - <_> - 15 0 1 1 2. - <_> - 14 1 1 1 2. - <_> - - <_> - 2 0 2 2 -1. - <_> - 2 0 1 1 2. - <_> - 3 1 1 1 2. - <_> - - <_> - 16 0 1 4 -1. - <_> - 16 1 1 2 2. - <_> - - <_> - 0 3 6 2 -1. - <_> - 3 3 3 2 2. - <_> - - <_> - 16 1 2 6 -1. - <_> - 17 1 1 3 2. - <_> - 16 4 1 3 2. - <_> - - <_> - 1 13 2 2 -1. - <_> - 2 13 1 2 2. - <_> - - <_> - 16 1 2 6 -1. - <_> - 17 1 1 3 2. - <_> - 16 4 1 3 2. - <_> - - <_> - 5 0 3 4 -1. - <_> - 5 2 3 2 2. - <_> - - <_> - 16 0 2 3 -1. - <_> - 15 1 2 1 3. - 1 - <_> - - <_> - 2 0 3 2 -1. - <_> - 3 1 1 2 3. - 1 - <_> - - <_> - 11 2 3 3 -1. - <_> - 11 3 3 1 3. - <_> - - <_> - 4 2 3 3 -1. - <_> - 4 3 3 1 3. - <_> - - <_> - 10 3 1 2 -1. - <_> - 10 4 1 1 2. - <_> - - <_> - 7 3 2 2 -1. - <_> - 7 3 1 1 2. - <_> - 8 4 1 1 2. - <_> - - <_> - 6 8 6 2 -1. - <_> - 6 9 6 1 2. - <_> - - <_> - 0 10 9 3 -1. - <_> - 3 10 3 3 3. - <_> - - <_> - 6 12 10 1 -1. - <_> - 6 12 5 1 2. - <_> - - <_> - 2 12 8 3 -1. - <_> - 6 12 4 3 2. - <_> - - <_> - 13 12 4 2 -1. - <_> - 14 12 2 2 2. - <_> - - <_> - 4 11 3 4 -1. - <_> - 4 12 3 2 2. - <_> - - <_> - 13 10 2 2 -1. - <_> - 13 10 1 2 2. - 1 - <_> - - <_> - 5 10 2 2 -1. - <_> - 5 10 2 1 2. - 1 - <_> - - <_> - 11 0 6 9 -1. - <_> - 13 2 2 9 3. - 1 - <_> - - <_> - 6 2 8 3 -1. - <_> - 8 4 4 3 2. - 1 - <_> - - <_> - 11 0 6 9 -1. - <_> - 13 2 2 9 3. - 1 - <_> - - <_> - 7 0 9 6 -1. - <_> - 5 2 9 2 3. - 1 - <_> - - <_> - 9 3 2 2 -1. - <_> - 10 3 1 1 2. - <_> - 9 4 1 1 2. - <_> - - <_> - 3 2 10 13 -1. - <_> - 8 2 5 13 2. - <_> - - <_> - 5 0 8 2 -1. - <_> - 5 1 8 1 2. - <_> - - <_> - 5 0 7 8 -1. - <_> - 5 2 7 4 2. - <_> - - <_> - 9 6 1 3 -1. - <_> - 9 7 1 1 3. - <_> - - <_> - 8 6 1 3 -1. - <_> - 8 7 1 1 3. - <_> - - <_> - 0 9 18 2 -1. - <_> - 0 10 18 1 2. - <_> - - <_> - 0 7 17 4 -1. - <_> - 0 9 17 2 2. - <_> - - <_> - 12 6 6 9 -1. - <_> - 12 9 6 3 3. - <_> - - <_> - 1 0 3 3 -1. - <_> - 2 0 1 3 3. - <_> - - <_> - 11 8 2 2 -1. - <_> - 12 8 1 1 2. - <_> - 11 9 1 1 2. - <_> - - <_> - 0 8 18 4 -1. - <_> - 0 10 18 2 2. - <_> - - <_> - 9 0 1 3 -1. - <_> - 9 1 1 1 3. - <_> - - <_> - 0 4 18 2 -1. - <_> - 0 4 9 1 2. - <_> - 9 5 9 1 2. - <_> - - <_> - 5 2 12 4 -1. - <_> - 11 2 6 2 2. - <_> - 5 4 6 2 2. - <_> - - <_> - 1 2 12 4 -1. - <_> - 1 2 6 2 2. - <_> - 7 4 6 2 2. - <_> - - <_> - 15 4 1 8 -1. - <_> - 13 6 1 4 2. - 1 - <_> - - <_> - 3 4 8 1 -1. - <_> - 5 6 4 1 2. - 1 - <_> - - <_> - 9 8 8 2 -1. - <_> - 13 8 4 1 2. - <_> - 9 9 4 1 2. - <_> - - <_> - 4 8 6 2 -1. - <_> - 4 8 3 1 2. - <_> - 7 9 3 1 2. - <_> - - <_> - 3 3 12 2 -1. - <_> - 9 3 6 1 2. - <_> - 3 4 6 1 2. - <_> - - <_> - 4 1 1 4 -1. - <_> - 4 2 1 2 2. - <_> - - <_> - 9 5 3 3 -1. - <_> - 10 6 1 1 9. - <_> - - <_> - 0 1 3 14 -1. - <_> - 1 1 1 14 3. - <_> - - <_> - 16 6 2 3 -1. - <_> - 15 7 2 1 3. - 1 - <_> - - <_> - 4 1 3 2 -1. - <_> - 4 2 3 1 2. - <_> - - <_> - 16 1 2 6 -1. - <_> - 17 1 1 3 2. - <_> - 16 4 1 3 2. - <_> - - <_> - 0 1 2 6 -1. - <_> - 0 1 1 3 2. - <_> - 1 4 1 3 2. - <_> - - <_> - 6 0 9 7 -1. - <_> - 9 0 3 7 3. - <_> - - <_> - 3 0 9 7 -1. - <_> - 6 0 3 7 3. - <_> - - <_> - 9 0 1 6 -1. - <_> - 9 0 1 3 2. - 1 - <_> - - <_> - 9 0 6 1 -1. - <_> - 9 0 3 1 2. - 1 - <_> - - <_> - 11 3 5 4 -1. - <_> - 11 5 5 2 2. - <_> - - <_> - 9 0 9 6 -1. - <_> - 7 2 9 2 3. - 1 - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 6 2 3 2. - 1 - <_> - - <_> - 7 3 4 7 -1. - <_> - 9 3 2 7 2. - <_> - - <_> - 12 1 4 6 -1. - <_> - 10 3 4 2 3. - 1 - <_> - - <_> - 4 1 4 14 -1. - <_> - 4 8 4 7 2. - <_> - - <_> - 1 6 16 3 -1. - <_> - 1 7 16 1 3. - <_> - - <_> - 5 6 6 3 -1. - <_> - 7 7 2 1 9. - <_> - - <_> - 9 8 8 2 -1. - <_> - 13 8 4 1 2. - <_> - 9 9 4 1 2. - <_> - - <_> - 1 8 8 2 -1. - <_> - 1 8 4 1 2. - <_> - 5 9 4 1 2. - <_> - - <_> - 7 8 4 2 -1. - <_> - 7 9 4 1 2. - <_> - - <_> - 0 9 1 4 -1. - <_> - 0 10 1 2 2. - <_> - - <_> - 10 8 2 2 -1. - <_> - 11 8 1 1 2. - <_> - 10 9 1 1 2. - <_> - - <_> - 6 4 5 8 -1. - <_> - 6 6 5 4 2. - <_> - - <_> - 1 8 16 6 -1. - <_> - 1 10 16 2 3. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 6 1 1 3. - 1 - <_> - - <_> - 6 7 6 2 -1. - <_> - 6 8 6 1 2. - <_> - - <_> - 8 3 6 1 -1. - <_> - 10 5 2 1 3. - 1 - <_> - - <_> - 0 4 18 2 -1. - <_> - 9 4 9 1 2. - <_> - 0 5 9 1 2. - <_> - - <_> - 0 9 2 5 -1. - <_> - 1 9 1 5 2. - <_> - - <_> - 17 5 1 3 -1. - <_> - 16 6 1 1 3. - 1 - <_> - - <_> - 1 5 3 1 -1. - <_> - 2 6 1 1 3. - 1 - <_> - - <_> - 17 6 1 4 -1. - <_> - 17 7 1 2 2. - <_> - - <_> - 0 6 1 4 -1. - <_> - 0 7 1 2 2. - <_> - - <_> - 14 3 4 6 -1. - <_> - 14 5 4 2 3. - <_> - - <_> - 0 3 4 6 -1. - <_> - 0 5 4 2 3. - <_> - - <_> - 7 7 6 6 -1. - <_> - 9 9 2 2 9. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 2 9 16 3 -1. - <_> - 6 9 8 3 2. - <_> - - <_> - 3 4 3 2 -1. - <_> - 4 5 1 2 3. - 1 - <_> - - <_> - 15 5 3 3 -1. - <_> - 14 6 3 1 3. - 1 - <_> - - <_> - 3 5 3 3 -1. - <_> - 4 6 1 3 3. - 1 - <_> - - <_> - 10 2 3 10 -1. - <_> - 11 2 1 10 3. - <_> - - <_> - 3 2 4 5 -1. - <_> - 4 2 2 5 2. - <_> - - <_> - 13 4 2 2 -1. - <_> - 13 4 1 2 2. - 1 - <_> - - <_> - 5 4 2 2 -1. - <_> - 5 4 2 1 2. - 1 - <_> - - <_> - 9 2 1 6 -1. - <_> - 9 4 1 2 3. - <_> - - <_> - 6 13 3 1 -1. - <_> - 7 13 1 1 3. - <_> - - <_> - 9 8 2 6 -1. - <_> - 10 8 1 3 2. - <_> - 9 11 1 3 2. - <_> - - <_> - 7 12 4 2 -1. - <_> - 8 12 2 2 2. - <_> - - <_> - 9 0 3 7 -1. - <_> - 10 1 1 7 3. - 1 - <_> - - <_> - 6 3 6 6 -1. - <_> - 6 3 3 6 2. - 1 - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 0 8 3 3 -1. - <_> - 0 9 3 1 3. - <_> - - <_> - 9 2 1 3 -1. - <_> - 8 3 1 1 3. - 1 - <_> - - <_> - 1 6 16 3 -1. - <_> - 1 7 16 1 3. - <_> - - <_> - 9 9 1 2 -1. - <_> - 9 9 1 1 2. - 1 - <_> - - <_> - 7 9 3 3 -1. - <_> - 8 10 1 1 9. - <_> - - <_> - 17 0 1 3 -1. - <_> - 17 1 1 1 3. - <_> - - <_> - 0 0 1 3 -1. - <_> - 0 1 1 1 3. - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 13 2 4 6 -1. - <_> - 13 5 4 3 2. - <_> - - <_> - 1 2 4 6 -1. - <_> - 1 5 4 3 2. - <_> - - <_> - 4 0 12 11 -1. - <_> - 8 0 4 11 3. - <_> - - <_> - 0 1 12 14 -1. - <_> - 6 1 6 14 2. - <_> - - <_> - 10 5 8 9 -1. - <_> - 12 5 4 9 2. - <_> - - <_> - 0 12 18 2 -1. - <_> - 9 12 9 2 2. - <_> - - <_> - 8 14 2 1 -1. - <_> - 8 14 1 1 2. - <_> - - <_> - 8 13 2 2 -1. - <_> - 8 13 1 1 2. - <_> - 9 14 1 1 2. - <_> - - <_> - 9 11 4 4 -1. - <_> - 10 11 2 4 2. - <_> - - <_> - 5 11 4 4 -1. - <_> - 6 11 2 4 2. - <_> - - <_> - 3 2 12 9 -1. - <_> - 7 5 4 3 9. - <_> - - <_> - 11 8 6 3 -1. - <_> - 11 8 3 3 2. - <_> - - <_> - 2 7 8 4 -1. - <_> - 4 7 4 4 2. - <_> - - <_> - 14 2 4 2 -1. - <_> - 14 2 2 2 2. - <_> - - <_> - 8 6 2 2 -1. - <_> - 8 7 2 1 2. - <_> - - <_> - 9 5 4 2 -1. - <_> - 10 6 2 2 2. - 1 - <_> - - <_> - 0 2 4 2 -1. - <_> - 2 2 2 2 2. - <_> - - <_> - 10 6 3 2 -1. - <_> - 11 7 1 2 3. - 1 - <_> - - <_> - 8 6 2 3 -1. - <_> - 7 7 2 1 3. - 1 - <_> - - <_> - 11 8 2 2 -1. - <_> - 11 8 1 2 2. - 1 - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 2 1 2. - 1 - <_> - - <_> - 8 8 2 4 -1. - <_> - 8 10 2 2 2. - <_> - - <_> - 5 3 8 6 -1. - <_> - 5 6 8 3 2. - <_> - - <_> - 13 0 2 4 -1. - <_> - 13 0 1 4 2. - 1 - <_> - - <_> - 4 5 10 4 -1. - <_> - 4 7 10 2 2. - <_> - - <_> - 10 14 6 1 -1. - <_> - 12 14 2 1 3. - <_> - - <_> - 5 0 3 6 -1. - <_> - 5 3 3 3 2. - <_> - - <_> - 7 0 6 2 -1. - <_> - 7 1 6 1 2. - <_> - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - <_> - - <_> - 14 3 4 12 -1. - <_> - 14 9 4 6 2. - <_> - - <_> - 3 0 12 3 -1. - <_> - 3 1 12 1 3. - <_> - - <_> - 9 7 1 2 -1. - <_> - 9 7 1 1 2. - 1 - <_> - - <_> - 2 14 6 1 -1. - <_> - 4 14 2 1 3. - <_> - - <_> - 9 0 2 1 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 3 0 12 1 -1. - <_> - 6 0 6 1 2. - <_> - - <_> - 8 0 10 15 -1. - <_> - 8 0 5 15 2. - <_> - - <_> - 0 0 10 15 -1. - <_> - 5 0 5 15 2. - <_> - - <_> - 15 0 1 14 -1. - <_> - 15 7 1 7 2. - <_> - - <_> - 9 1 9 2 -1. - <_> - 12 4 3 2 3. - 1 - <_> - - <_> - 15 0 1 14 -1. - <_> - 15 7 1 7 2. - <_> - - <_> - 3 5 12 10 -1. - <_> - 3 5 6 5 2. - <_> - 9 10 6 5 2. - <_> - - <_> - 1 0 16 2 -1. - <_> - 9 0 8 1 2. - <_> - 1 1 8 1 2. - <_> - - <_> - 0 6 2 3 -1. - <_> - 0 7 2 1 3. - <_> - - <_> - 14 1 4 3 -1. - <_> - 13 2 4 1 3. - 1 - <_> - - <_> - 0 0 18 10 -1. - <_> - 0 0 9 5 2. - <_> - 9 5 9 5 2. - <_> - - <_> - 10 2 2 2 -1. - <_> - 10 2 1 2 2. - <_> - - <_> - 4 0 10 8 -1. - <_> - 9 0 5 8 2. - <_> - - <_> - 8 3 4 1 -1. - <_> - 8 3 2 1 2. - <_> - - <_> - 6 3 4 1 -1. - <_> - 8 3 2 1 2. - <_> - - <_> - 3 12 15 2 -1. - <_> - 3 13 15 1 2. - <_> - - <_> - 0 7 18 8 -1. - <_> - 0 9 18 4 2. - <_> - - <_> - 11 4 3 6 -1. - <_> - 11 6 3 2 3. - <_> - - <_> - 3 3 2 3 -1. - <_> - 2 4 2 1 3. - 1 - <_> - - <_> - 15 3 3 3 -1. - <_> - 14 4 3 1 3. - 1 - <_> - - <_> - 3 3 3 3 -1. - <_> - 4 4 1 3 3. - 1 - <_> - - <_> - 15 2 3 3 -1. - <_> - 14 3 3 1 3. - 1 - <_> - - <_> - 3 2 3 3 -1. - <_> - 4 3 1 3 3. - 1 - <_> - - <_> - 9 0 3 2 -1. - <_> - 10 1 1 2 3. - 1 - <_> - - <_> - 4 0 3 4 -1. - <_> - 5 1 1 4 3. - 1 - <_> - - <_> - 3 5 12 10 -1. - <_> - 3 5 6 10 2. - <_> - - <_> - 9 1 1 4 -1. - <_> - 9 1 1 2 2. - 1 - <_> - - <_> - 6 0 6 5 -1. - <_> - 8 0 2 5 3. - <_> - - <_> - 0 1 18 6 -1. - <_> - 0 1 9 3 2. - <_> - 9 4 9 3 2. - <_> - - <_> - 10 7 1 2 -1. - <_> - 10 8 1 1 2. - <_> - - <_> - 6 7 6 2 -1. - <_> - 6 7 3 1 2. - <_> - 9 8 3 1 2. - <_> - - <_> - 12 6 1 6 -1. - <_> - 12 8 1 2 3. - <_> - - <_> - 5 9 4 2 -1. - <_> - 5 9 2 1 2. - <_> - 7 10 2 1 2. - <_> - - <_> - 9 0 3 2 -1. - <_> - 10 1 1 2 3. - 1 - <_> - - <_> - 9 0 2 3 -1. - <_> - 8 1 2 1 3. - 1 - <_> - - <_> - 14 0 4 2 -1. - <_> - 15 1 2 2 2. - 1 - <_> - - <_> - 8 0 9 6 -1. - <_> - 8 0 9 3 2. - 1 - <_> - - <_> - 6 9 8 2 -1. - <_> - 10 9 4 1 2. - <_> - 6 10 4 1 2. - <_> - - <_> - 4 9 8 2 -1. - <_> - 4 9 4 1 2. - <_> - 8 10 4 1 2. - <_> - - <_> - 15 0 1 14 -1. - <_> - 15 7 1 7 2. - <_> - - <_> - 2 0 1 14 -1. - <_> - 2 7 1 7 2. - <_> - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - <_> - - <_> - 6 7 6 2 -1. - <_> - 6 8 6 1 2. - <_> - - <_> - 17 10 1 4 -1. - <_> - 17 11 1 2 2. - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 14 2 4 8 -1. - <_> - 14 6 4 4 2. - <_> - - <_> - 1 9 16 2 -1. - <_> - 1 10 16 1 2. - <_> - - <_> - 5 7 8 6 -1. - <_> - 5 10 8 3 2. - <_> - - <_> - 0 2 16 8 -1. - <_> - 0 2 8 4 2. - <_> - 8 6 8 4 2. - <_> - - <_> - 14 10 4 4 -1. - <_> - 16 10 2 2 2. - <_> - 14 12 2 2 2. - <_> - - <_> - 0 9 1 3 -1. - <_> - 0 10 1 1 3. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 16 0 1 4 -1. - <_> - 16 1 1 2 2. - <_> - - <_> - 0 10 1 4 -1. - <_> - 0 11 1 2 2. - <_> - - <_> - 0 9 18 6 -1. - <_> - 0 11 18 2 3. - <_> - - <_> - 3 0 8 2 -1. - <_> - 3 0 8 1 2. - 1 - <_> - - <_> - 8 9 10 6 -1. - <_> - 13 9 5 3 2. - <_> - 8 12 5 3 2. - <_> - - <_> - 1 12 12 1 -1. - <_> - 5 12 4 1 3. - <_> - - <_> - 13 0 2 8 -1. - <_> - 11 2 2 4 2. - 1 - <_> - - <_> - 1 8 4 2 -1. - <_> - 1 8 2 1 2. - <_> - 3 9 2 1 2. - <_> - - <_> - 12 4 2 6 -1. - <_> - 12 6 2 2 3. - <_> - - <_> - 4 0 10 8 -1. - <_> - 9 0 5 8 2. - <_> - - <_> - 9 0 2 1 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 9 0 1 2 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 13 11 3 4 -1. - <_> - 13 12 3 2 2. - <_> - - <_> - 2 11 3 4 -1. - <_> - 2 12 3 2 2. - <_> - - <_> - 8 13 7 2 -1. - <_> - 8 14 7 1 2. - <_> - - <_> - 3 1 1 3 -1. - <_> - 2 2 1 1 3. - 1 - <_> - - <_> - 16 0 2 3 -1. - <_> - 15 1 2 1 3. - 1 - <_> - - <_> - 2 0 3 2 -1. - <_> - 3 1 1 2 3. - 1 - <_> - - <_> - 13 0 4 3 -1. - <_> - 14 0 2 3 2. - <_> - - <_> - 1 0 4 3 -1. - <_> - 2 0 2 3 2. - <_> - - <_> - 16 0 1 4 -1. - <_> - 16 1 1 2 2. - <_> - - <_> - 1 0 1 4 -1. - <_> - 1 1 1 2 2. - <_> - - <_> - 14 0 4 1 -1. - <_> - 15 1 2 1 2. - 1 - <_> - - <_> - 4 0 1 4 -1. - <_> - 3 1 1 2 2. - 1 - <_> - - <_> - 0 4 18 6 -1. - <_> - 0 6 18 2 3. - <_> - - <_> - 7 8 4 2 -1. - <_> - 7 9 4 1 2. - <_> - - <_> - 1 8 16 2 -1. - <_> - 1 9 16 1 2. - <_> - - <_> - 3 4 8 2 -1. - <_> - 3 4 8 1 2. - 1 - <_> - - <_> - 6 0 9 11 -1. - <_> - 9 0 3 11 3. - <_> - - <_> - 7 0 4 1 -1. - <_> - 9 0 2 1 2. - <_> - - <_> - 4 0 12 11 -1. - <_> - 7 0 6 11 2. - <_> - - <_> - 2 0 12 11 -1. - <_> - 5 0 6 11 2. - <_> - - <_> - 11 2 6 4 -1. - <_> - 11 2 3 4 2. - <_> - - <_> - 5 1 2 2 -1. - <_> - 5 2 2 1 2. - <_> - - <_> - 10 3 2 6 -1. - <_> - 8 5 2 2 3. - 1 - <_> - - <_> - 4 2 8 4 -1. - <_> - 4 3 8 2 2. - <_> - - <_> - 11 1 2 8 -1. - <_> - 9 3 2 4 2. - 1 - <_> - - <_> - 0 1 18 14 -1. - <_> - 0 1 9 7 2. - <_> - 9 8 9 7 2. - <_> - - <_> - 13 5 5 10 -1. - <_> - 13 10 5 5 2. - <_> - - <_> - 9 3 6 2 -1. - <_> - 11 5 2 2 3. - 1 - <_> - - <_> - 9 0 7 8 -1. - <_> - 7 2 7 4 2. - 1 - <_> - - <_> - 9 0 8 7 -1. - <_> - 11 2 4 7 2. - 1 - <_> - - <_> - 13 2 4 3 -1. - <_> - 12 3 4 1 3. - 1 - <_> - - <_> - 5 2 3 4 -1. - <_> - 6 3 1 4 3. - 1 - <_> - - <_> - 10 0 3 3 -1. - <_> - 10 1 3 1 3. - <_> - - <_> - 2 3 13 6 -1. - <_> - 2 5 13 2 3. - <_> - - <_> - 8 5 2 3 -1. - <_> - 8 6 2 1 3. - <_> - - <_> - 0 3 4 6 -1. - <_> - 0 6 4 3 2. - <_> - - <_> - 1 9 16 2 -1. - <_> - 1 10 16 1 2. - <_> - - <_> - 5 5 6 4 -1. - <_> - 5 5 6 2 2. - 1 - <_> - - <_> - 13 0 2 8 -1. - <_> - 13 4 2 4 2. - <_> - - <_> - 3 0 2 8 -1. - <_> - 3 4 2 4 2. - <_> - - <_> - 16 1 2 3 -1. - <_> - 15 2 2 1 3. - 1 - <_> - - <_> - 1 3 3 1 -1. - <_> - 2 4 1 1 3. - 1 - <_> - - <_> - 13 4 5 10 -1. - <_> - 13 9 5 5 2. - <_> - - <_> - 0 4 5 10 -1. - <_> - 0 9 5 5 2. - <_> - - <_> - 16 5 2 3 -1. - <_> - 15 6 2 1 3. - 1 - <_> - - <_> - 2 5 3 2 -1. - <_> - 3 6 1 2 3. - 1 - <_> - - <_> - 10 10 8 4 -1. - <_> - 14 10 4 2 2. - <_> - 10 12 4 2 2. - <_> - - <_> - 1 5 4 9 -1. - <_> - 3 5 2 9 2. - <_> - - <_> - 10 1 8 9 -1. - <_> - 10 1 4 9 2. - <_> - - <_> - 0 1 8 9 -1. - <_> - 4 1 4 9 2. - <_> - - <_> - 10 10 8 4 -1. - <_> - 14 10 4 2 2. - <_> - 10 12 4 2 2. - <_> - - <_> - 0 9 8 4 -1. - <_> - 0 9 4 2 2. - <_> - 4 11 4 2 2. - <_> - - <_> - 3 0 14 2 -1. - <_> - 10 0 7 1 2. - <_> - 3 1 7 1 2. - <_> - - <_> - 0 13 18 2 -1. - <_> - 0 13 9 1 2. - <_> - 9 14 9 1 2. - <_> - - <_> - 11 13 1 2 -1. - <_> - 11 14 1 1 2. - <_> - - <_> - 3 13 8 2 -1. - <_> - 3 14 8 1 2. - <_> - - <_> - 4 13 10 2 -1. - <_> - 9 13 5 1 2. - <_> - 4 14 5 1 2. - <_> - - <_> - 6 13 1 2 -1. - <_> - 6 14 1 1 2. - <_> - - <_> - 14 0 4 9 -1. - <_> - 14 0 2 9 2. - 1 - <_> - - <_> - 4 0 9 4 -1. - <_> - 4 0 9 2 2. - 1 - <_> - - <_> - 6 5 6 3 -1. - <_> - 8 6 2 1 9. - <_> - - <_> - 2 9 3 2 -1. - <_> - 3 10 1 2 3. - 1 - <_> - - <_> - 6 0 7 2 -1. - <_> - 6 1 7 1 2. - <_> - - <_> - 4 7 1 2 -1. - <_> - 4 8 1 1 2. - <_> - - <_> - 9 4 4 3 -1. - <_> - 10 5 2 3 2. - 1 - <_> - - <_> - 0 0 15 6 -1. - <_> - 5 0 5 6 3. - <_> - - <_> - 7 0 9 14 -1. - <_> - 10 0 3 14 3. - <_> - - <_> - 0 0 18 15 -1. - <_> - 6 0 6 15 3. - <_> - - <_> - 9 4 4 3 -1. - <_> - 10 5 2 3 2. - 1 - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 9 4 2 2 -1. - <_> - 10 4 1 1 2. - <_> - 9 5 1 1 2. - <_> - - <_> - 0 11 8 4 -1. - <_> - 0 11 4 2 2. - <_> - 4 13 4 2 2. - <_> - - <_> - 16 12 2 3 -1. - <_> - 16 13 2 1 3. - <_> - - <_> - 0 10 8 4 -1. - <_> - 0 10 4 2 2. - <_> - 4 12 4 2 2. - <_> - - <_> - 12 0 2 2 -1. - <_> - 12 1 2 1 2. - <_> - - <_> - 4 0 2 2 -1. - <_> - 4 1 2 1 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 10 0 1 1 2. - <_> - 9 1 1 1 2. - <_> - - <_> - 0 11 11 4 -1. - <_> - 0 13 11 2 2. - <_> - - <_> - 9 4 4 3 -1. - <_> - 10 5 2 3 2. - 1 - <_> - - <_> - 9 4 3 4 -1. - <_> - 8 5 3 2 2. - 1 - <_> - - <_> - 9 3 4 3 -1. - <_> - 10 4 2 3 2. - 1 - <_> - - <_> - 6 4 6 4 -1. - <_> - 6 4 3 2 2. - <_> - 9 6 3 2 2. - <_> - - <_> - 9 3 3 9 -1. - <_> - 10 4 1 9 3. - 1 - <_> - - <_> - 9 3 9 3 -1. - <_> - 8 4 9 1 3. - 1 - <_> - - <_> - 16 12 2 3 -1. - <_> - 16 13 2 1 3. - <_> - - <_> - 3 0 10 2 -1. - <_> - 3 0 5 1 2. - <_> - 8 1 5 1 2. - <_> - - <_> - 13 1 3 13 -1. - <_> - 14 1 1 13 3. - <_> - - <_> - 1 0 1 2 -1. - <_> - 1 1 1 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 3 0 1 2 -1. - <_> - 3 1 1 1 2. - <_> - - <_> - 14 6 4 8 -1. - <_> - 14 10 4 4 2. - <_> - - <_> - 0 6 4 8 -1. - <_> - 0 10 4 4 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 0 0 6 13 -1. - <_> - 2 0 2 13 3. - <_> - - <_> - 5 14 12 1 -1. - <_> - 9 14 4 1 3. - <_> - - <_> - 7 2 9 2 -1. - <_> - 10 5 3 2 3. - 1 - <_> - - <_> - 6 1 6 12 -1. - <_> - 6 5 6 4 3. - <_> - - <_> - 9 5 2 4 -1. - <_> - 9 5 1 4 2. - 1 - <_> - - <_> - 11 5 4 4 -1. - <_> - 11 5 4 2 2. - 1 - <_> - - <_> - 4 0 12 1 -1. - <_> - 4 0 6 1 2. - 1 - <_> - - <_> - 10 2 5 10 -1. - <_> - 10 7 5 5 2. - <_> - - <_> - 3 2 5 10 -1. - <_> - 3 7 5 5 2. - <_> - - <_> - 2 2 14 6 -1. - <_> - 2 4 14 2 3. - <_> - - <_> - 4 4 5 3 -1. - <_> - 4 5 5 1 3. - <_> - - <_> - 2 1 15 3 -1. - <_> - 7 2 5 1 9. - <_> - - <_> - 5 2 2 3 -1. - <_> - 6 2 1 3 2. - <_> - - <_> - 4 2 12 9 -1. - <_> - 8 5 4 3 9. - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 8 0 6 11 -1. - <_> - 10 0 2 11 3. - <_> - - <_> - 1 1 3 1 -1. - <_> - 2 2 1 1 3. - 1 - <_> - - <_> - 16 0 1 6 -1. - <_> - 16 2 1 2 3. - <_> - - <_> - 0 4 1 2 -1. - <_> - 0 5 1 1 2. - <_> - - <_> - 15 6 3 2 -1. - <_> - 15 6 3 1 2. - 1 - <_> - - <_> - 3 6 2 3 -1. - <_> - 3 6 1 3 2. - 1 - <_> - - <_> - 0 0 18 4 -1. - <_> - 9 0 9 2 2. - <_> - 0 2 9 2 2. - <_> - - <_> - 4 5 3 4 -1. - <_> - 5 6 1 4 3. - 1 - <_> - - <_> - 13 1 4 12 -1. - <_> - 15 1 2 6 2. - <_> - 13 7 2 6 2. - <_> - - <_> - 3 1 2 14 -1. - <_> - 3 8 2 7 2. - <_> - - <_> - 7 6 5 3 -1. - <_> - 7 7 5 1 3. - <_> - - <_> - 6 7 6 2 -1. - <_> - 6 8 6 1 2. - <_> - - <_> - 7 8 9 3 -1. - <_> - 10 9 3 1 9. - <_> - - <_> - 2 8 9 3 -1. - <_> - 5 9 3 1 9. - <_> - - <_> - 10 4 4 7 -1. - <_> - 11 4 2 7 2. - <_> - - <_> - 4 4 4 7 -1. - <_> - 5 4 2 7 2. - <_> - - <_> - 10 14 3 1 -1. - <_> - 11 14 1 1 3. - <_> - - <_> - 5 14 3 1 -1. - <_> - 6 14 1 1 3. - <_> - - <_> - 5 14 12 1 -1. - <_> - 9 14 4 1 3. - <_> - - <_> - 0 1 18 8 -1. - <_> - 0 1 9 4 2. - <_> - 9 5 9 4 2. - <_> - - <_> - 9 1 6 4 -1. - <_> - 9 1 6 2 2. - 1 - <_> - - <_> - 9 1 4 6 -1. - <_> - 9 1 2 6 2. - 1 - <_> - - <_> - 11 8 2 2 -1. - <_> - 12 8 1 1 2. - <_> - 11 9 1 1 2. - <_> - - <_> - 5 0 8 11 -1. - <_> - 7 0 4 11 2. - <_> - - <_> - 7 7 6 3 -1. - <_> - 9 8 2 1 9. - <_> - - <_> - 4 0 6 9 -1. - <_> - 6 0 2 9 3. - <_> - - <_> - 10 0 3 2 -1. - <_> - 11 1 1 2 3. - 1 - <_> - - <_> - 8 0 2 3 -1. - <_> - 7 1 2 1 3. - 1 - <_> - - <_> - 10 0 3 1 -1. - <_> - 11 1 1 1 3. - 1 - <_> - - <_> - 6 4 6 11 -1. - <_> - 8 4 2 11 3. - <_> - - <_> - 10 8 3 3 -1. - <_> - 11 8 1 3 3. - <_> - - <_> - 8 1 9 2 -1. - <_> - 8 1 9 1 2. - 1 - <_> - - <_> - 10 0 3 1 -1. - <_> - 11 1 1 1 3. - 1 - <_> - - <_> - 0 9 18 6 -1. - <_> - 0 9 9 3 2. - <_> - 9 12 9 3 2. - <_> - - <_> - 8 8 2 2 -1. - <_> - 9 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 4 7 2 2 -1. - <_> - 4 7 1 1 2. - <_> - 5 8 1 1 2. - <_> - - <_> - 10 8 3 3 -1. - <_> - 11 8 1 3 3. - <_> - - <_> - 5 8 3 3 -1. - <_> - 6 8 1 3 3. - <_> - - <_> - 10 0 3 1 -1. - <_> - 11 1 1 1 3. - 1 - <_> - - <_> - 0 6 1 6 -1. - <_> - 0 8 1 2 3. - <_> - - <_> - 11 8 5 6 -1. - <_> - 11 10 5 2 3. - <_> - - <_> - 0 8 1 6 -1. - <_> - 0 10 1 2 3. - <_> - - <_> - 11 8 6 6 -1. - <_> - 11 10 6 2 3. - <_> - - <_> - 1 8 6 6 -1. - <_> - 1 10 6 2 3. - <_> - - <_> - 10 0 3 1 -1. - <_> - 11 1 1 1 3. - 1 - <_> - - <_> - 8 0 1 3 -1. - <_> - 7 1 1 1 3. - 1 - <_> - - <_> - 5 3 9 9 -1. - <_> - 8 6 3 3 9. - <_> - - <_> - 7 0 8 2 -1. - <_> - 7 0 8 1 2. - 1 - <_> - - <_> - 11 9 3 6 -1. - <_> - 12 9 1 6 3. - <_> - - <_> - 1 14 12 1 -1. - <_> - 5 14 4 1 3. - <_> - - <_> - 8 14 4 1 -1. - <_> - 9 14 2 1 2. - <_> - - <_> - 6 14 4 1 -1. - <_> - 7 14 2 1 2. - <_> - - <_> - 14 14 2 1 -1. - <_> - 14 14 1 1 2. - <_> - - <_> - 2 14 2 1 -1. - <_> - 3 14 1 1 2. - <_> - - <_> - 11 9 3 6 -1. - <_> - 12 9 1 6 3. - <_> - - <_> - 4 9 3 6 -1. - <_> - 5 9 1 6 3. - <_> - - <_> - 5 12 12 2 -1. - <_> - 5 13 12 1 2. - <_> - - <_> - 0 0 15 15 -1. - <_> - 5 0 5 15 3. - <_> - - <_> - 8 1 2 4 -1. - <_> - 8 1 1 4 2. - <_> - - <_> - 0 3 2 8 -1. - <_> - 0 3 1 4 2. - <_> - 1 7 1 4 2. - <_> - - <_> - 15 1 3 3 -1. - <_> - 14 2 3 1 3. - 1 - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 3 3. - 1 - <_> - - <_> - 14 0 4 6 -1. - <_> - 16 0 2 3 2. - <_> - 14 3 2 3 2. - <_> - - <_> - 3 3 12 2 -1. - <_> - 3 3 6 1 2. - <_> - 9 4 6 1 2. - <_> - - <_> - 16 10 2 1 -1. - <_> - 16 10 1 1 2. - 1 - <_> - - <_> - 2 10 1 2 -1. - <_> - 2 10 1 1 2. - 1 - <_> - - <_> - 10 7 6 4 -1. - <_> - 13 7 3 2 2. - <_> - 10 9 3 2 2. - <_> - - <_> - 0 4 18 5 -1. - <_> - 6 4 6 5 3. - <_> - - <_> - 11 1 5 6 -1. - <_> - 9 3 5 2 3. - 1 - <_> - - <_> - 8 0 6 6 -1. - <_> - 10 2 2 6 3. - 1 - <_> - - <_> - 4 4 14 4 -1. - <_> - 11 4 7 2 2. - <_> - 4 6 7 2 2. - <_> - - <_> - 0 4 14 4 -1. - <_> - 0 4 7 2 2. - <_> - 7 6 7 2 2. - <_> - - <_> - 10 7 6 4 -1. - <_> - 13 7 3 2 2. - <_> - 10 9 3 2 2. - <_> - - <_> - 2 7 6 4 -1. - <_> - 2 7 3 2 2. - <_> - 5 9 3 2 2. - <_> - - <_> - 10 2 2 2 -1. - <_> - 10 2 1 2 2. - <_> - - <_> - 6 14 6 1 -1. - <_> - 9 14 3 1 2. - <_> - - <_> - 0 9 18 6 -1. - <_> - 9 9 9 3 2. - <_> - 0 12 9 3 2. - <_> - - <_> - 1 0 1 14 -1. - <_> - 1 7 1 7 2. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - <_> - - <_> - 4 7 3 3 -1. - <_> - 3 8 3 1 3. - 1 - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - <_> - - <_> - 6 2 2 2 -1. - <_> - 7 2 1 2 2. - <_> - - <_> - 5 0 8 12 -1. - <_> - 7 0 4 12 2. - <_> - - <_> - 9 8 2 1 -1. - <_> - 9 8 1 1 2. - 1 - <_> - - <_> - 9 4 2 2 -1. - <_> - 10 4 1 1 2. - <_> - 9 5 1 1 2. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 7 8 4 4 -1. - <_> - 8 8 2 4 2. - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 7 1 1 3. - 1 - <_> - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - <_> - - <_> - 8 5 2 8 -1. - <_> - 8 5 2 4 2. - 1 - <_> - - <_> - 3 3 12 4 -1. - <_> - 3 5 12 2 2. - <_> - - <_> - 4 0 8 1 -1. - <_> - 6 2 4 1 2. - 1 - <_> - - <_> - 9 0 4 10 -1. - <_> - 11 0 2 5 2. - <_> - 9 5 2 5 2. - <_> - - <_> - 4 2 10 2 -1. - <_> - 4 3 10 1 2. - <_> - - <_> - 11 0 3 4 -1. - <_> - 12 0 1 4 3. - <_> - - <_> - 6 0 5 2 -1. - <_> - 6 1 5 1 2. - <_> - - <_> - 11 0 3 4 -1. - <_> - 12 0 1 4 3. - <_> - - <_> - 4 0 3 4 -1. - <_> - 5 0 1 4 3. - <_> - - <_> - 10 0 3 3 -1. - <_> - 10 1 3 1 3. - <_> - - <_> - 5 0 3 3 -1. - <_> - 5 1 3 1 3. - <_> - - <_> - 11 8 2 2 -1. - <_> - 12 8 1 1 2. - <_> - 11 9 1 1 2. - <_> - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 1 2. - <_> - 6 9 1 1 2. - <_> - - <_> - 11 8 2 2 -1. - <_> - 12 8 1 1 2. - <_> - 11 9 1 1 2. - <_> - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 1 2. - <_> - 6 9 1 1 2. - <_> - - <_> - 11 7 1 4 -1. - <_> - 10 8 1 2 2. - 1 - <_> - - <_> - 3 3 5 12 -1. - <_> - 3 6 5 6 2. - <_> - - <_> - 11 10 4 1 -1. - <_> - 11 10 2 1 2. - 1 - <_> - - <_> - 6 1 3 6 -1. - <_> - 4 3 3 2 3. - 1 - <_> - - <_> - 2 1 16 1 -1. - <_> - 6 1 8 1 2. - <_> - - <_> - 3 6 12 4 -1. - <_> - 3 6 6 2 2. - <_> - 9 8 6 2 2. - <_> - - <_> - 1 7 16 3 -1. - <_> - 1 8 16 1 3. - <_> - - <_> - 2 6 6 6 -1. - <_> - 4 8 2 2 9. - <_> - - <_> - 14 4 4 3 -1. - <_> - 14 5 4 1 3. - <_> - - <_> - 0 4 4 3 -1. - <_> - 0 5 4 1 3. - <_> - - <_> - 14 1 1 3 -1. - <_> - 14 2 1 1 3. - <_> - - <_> - 1 9 9 3 -1. - <_> - 4 9 3 3 3. - <_> - - <_> - 14 2 2 3 -1. - <_> - 14 2 1 3 2. - 1 - <_> - - <_> - 3 2 2 4 -1. - <_> - 3 2 1 2 2. - <_> - 4 4 1 2 2. - <_> - - <_> - 10 5 4 10 -1. - <_> - 12 5 2 5 2. - <_> - 10 10 2 5 2. - <_> - - <_> - 4 5 4 10 -1. - <_> - 4 5 2 5 2. - <_> - 6 10 2 5 2. - <_> - - <_> - 11 2 2 2 -1. - <_> - 11 2 2 1 2. - 1 - <_> - - <_> - 5 4 3 6 -1. - <_> - 5 6 3 2 3. - <_> - - <_> - 11 2 2 2 -1. - <_> - 11 2 2 1 2. - 1 - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 2 2. - 1 - <_> - - <_> - 9 5 2 1 -1. - <_> - 9 5 1 1 2. - 1 - <_> - - <_> - 2 0 9 14 -1. - <_> - 5 0 3 14 3. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - <_> - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - <_> - - <_> - 9 0 4 10 -1. - <_> - 11 0 2 5 2. - <_> - 9 5 2 5 2. - <_> - - <_> - 5 0 2 5 -1. - <_> - 5 0 1 5 2. - 1 - <_> - - <_> - 14 0 2 1 -1. - <_> - 14 0 1 1 2. - 1 - <_> - - <_> - 4 0 1 2 -1. - <_> - 4 0 1 1 2. - 1 - <_> - - <_> - 12 1 4 4 -1. - <_> - 12 1 2 4 2. - 1 - <_> - - <_> - 0 1 1 4 -1. - <_> - 0 2 1 2 2. - <_> - - <_> - 8 7 2 4 -1. - <_> - 9 7 1 2 2. - <_> - 8 9 1 2 2. - <_> - - <_> - 1 5 16 2 -1. - <_> - 5 5 8 2 2. - <_> - - <_> - 5 0 8 12 -1. - <_> - 5 4 8 4 3. - <_> - - <_> - 2 2 12 9 -1. - <_> - 6 5 4 3 9. - <_> - - <_> - 13 0 3 3 -1. - <_> - 14 1 1 3 3. - 1 - <_> - - <_> - 5 0 3 3 -1. - <_> - 4 1 3 1 3. - 1 - <_> - - <_> - 2 2 16 7 -1. - <_> - 6 2 8 7 2. - <_> - - <_> - 0 2 16 7 -1. - <_> - 4 2 8 7 2. - <_> - - <_> - 16 13 2 2 -1. - <_> - 16 13 1 2 2. - <_> - - <_> - 0 13 2 2 -1. - <_> - 1 13 1 2 2. - <_> - - <_> - 16 7 2 8 -1. - <_> - 17 7 1 4 2. - <_> - 16 11 1 4 2. - <_> - - <_> - 0 7 2 8 -1. - <_> - 0 7 1 4 2. - <_> - 1 11 1 4 2. - <_> - - <_> - 11 2 7 3 -1. - <_> - 11 3 7 1 3. - <_> - - <_> - 0 8 2 3 -1. - <_> - 1 8 1 3 2. - <_> - - <_> - 10 5 6 4 -1. - <_> - 12 7 2 4 3. - 1 - <_> - - <_> - 9 7 2 1 -1. - <_> - 9 7 1 1 2. - 1 - <_> - - <_> - 0 3 18 8 -1. - <_> - 0 7 18 4 2. - <_> - - <_> - 7 6 2 2 -1. - <_> - 7 6 1 1 2. - <_> - 8 7 1 1 2. - <_> - - <_> - 11 6 2 2 -1. - <_> - 12 6 1 1 2. - <_> - 11 7 1 1 2. - <_> - - <_> - 8 5 4 6 -1. - <_> - 6 7 4 2 3. - 1 - <_> - - <_> - 16 3 2 2 -1. - <_> - 16 3 1 2 2. - 1 - <_> - - <_> - 8 14 2 1 -1. - <_> - 9 14 1 1 2. - <_> - - <_> - 11 2 7 3 -1. - <_> - 11 3 7 1 3. - <_> - - <_> - 0 2 9 12 -1. - <_> - 0 5 9 6 2. - <_> - - <_> - 16 0 2 11 -1. - <_> - 16 0 1 11 2. - 1 - <_> - - <_> - 8 0 8 3 -1. - <_> - 10 2 4 3 2. - 1 - <_> - - <_> - 12 8 4 2 -1. - <_> - 12 8 2 2 2. - 1 - <_> - - <_> - 6 4 5 6 -1. - <_> - 4 6 5 2 3. - 1 - <_> - - <_> - 16 2 2 3 -1. - <_> - 16 2 1 3 2. - <_> - - <_> - 0 2 2 3 -1. - <_> - 1 2 1 3 2. - <_> - - <_> - 13 7 3 3 -1. - <_> - 14 8 1 1 9. - <_> - - <_> - 2 4 4 9 -1. - <_> - 4 4 2 9 2. - <_> - - <_> - 10 0 4 1 -1. - <_> - 10 0 2 1 2. - 1 - <_> - - <_> - 8 2 2 2 -1. - <_> - 8 2 2 1 2. - 1 - <_> - - <_> - 9 0 4 1 -1. - <_> - 9 0 2 1 2. - <_> - - <_> - 2 0 14 15 -1. - <_> - 9 0 7 15 2. - <_> - - <_> - 13 4 4 3 -1. - <_> - 12 5 4 1 3. - 1 - <_> - - <_> - 3 6 12 8 -1. - <_> - 3 6 6 4 2. - <_> - 9 10 6 4 2. - <_> - - <_> - 12 5 3 6 -1. - <_> - 13 7 1 2 9. - <_> - - <_> - 5 4 3 4 -1. - <_> - 6 5 1 4 3. - 1 - <_> - - <_> - 12 7 3 3 -1. - <_> - 13 8 1 3 3. - 1 - <_> - - <_> - 0 1 4 14 -1. - <_> - 0 8 4 7 2. - <_> - - <_> - 12 8 3 4 -1. - <_> - 13 9 1 4 3. - 1 - <_> - - <_> - 6 8 4 3 -1. - <_> - 5 9 4 1 3. - 1 - <_> - - <_> - 3 0 12 4 -1. - <_> - 9 0 6 2 2. - <_> - 3 2 6 2 2. - <_> - - <_> - 3 2 12 12 -1. - <_> - 3 8 12 6 2. - <_> - - <_> - 12 7 2 4 -1. - <_> - 12 8 2 2 2. - <_> - - <_> - 5 6 1 6 -1. - <_> - 5 8 1 2 3. - <_> - - <_> - 17 1 1 14 -1. - <_> - 17 8 1 7 2. - <_> - - <_> - 0 0 18 10 -1. - <_> - 0 0 9 5 2. - <_> - 9 5 9 5 2. - <_> - - <_> - 5 0 12 11 -1. - <_> - 9 0 4 11 3. - <_> - - <_> - 7 0 2 4 -1. - <_> - 7 0 2 2 2. - 1 - <_> - - <_> - 8 13 10 2 -1. - <_> - 13 13 5 1 2. - <_> - 8 14 5 1 2. - <_> - - <_> - 4 1 3 4 -1. - <_> - 3 2 3 2 2. - 1 - <_> - - <_> - 13 8 4 1 -1. - <_> - 14 8 2 1 2. - <_> - - <_> - 3 6 3 2 -1. - <_> - 4 7 1 2 3. - 1 - <_> - - <_> - 13 0 3 1 -1. - <_> - 14 1 1 1 3. - 1 - <_> - - <_> - 3 2 3 3 -1. - <_> - 4 3 1 3 3. - 1 - <_> - - <_> - 13 0 3 1 -1. - <_> - 14 1 1 1 3. - 1 - <_> - - <_> - 2 11 2 2 -1. - <_> - 2 11 1 2 2. - 1 - <_> - - <_> - 2 11 16 2 -1. - <_> - 2 12 16 1 2. - <_> - - <_> - 8 6 6 3 -1. - <_> - 10 8 2 3 3. - 1 - <_> - - <_> - 2 12 16 3 -1. - <_> - 2 13 16 1 3. - <_> - - <_> - 0 10 18 4 -1. - <_> - 0 10 9 2 2. - <_> - 9 12 9 2 2. - <_> - - <_> - 6 12 9 2 -1. - <_> - 9 12 3 2 3. - <_> - - <_> - 5 0 1 3 -1. - <_> - 4 1 1 1 3. - 1 - <_> - - <_> - 8 0 9 6 -1. - <_> - 8 3 9 3 2. - <_> - - <_> - 0 3 12 9 -1. - <_> - 6 3 6 9 2. - <_> - - <_> - 3 4 12 6 -1. - <_> - 7 6 4 2 9. - <_> - - <_> - 8 0 8 3 -1. - <_> - 10 2 4 3 2. - 1 - <_> - - <_> - 11 1 1 2 -1. - <_> - 11 1 1 1 2. - 1 - <_> - - <_> - 7 1 2 1 -1. - <_> - 7 1 1 1 2. - 1 - <_> - - <_> - 13 1 4 3 -1. - <_> - 12 2 4 1 3. - 1 - <_> - - <_> - 1 0 12 11 -1. - <_> - 5 0 4 11 3. - <_> - - <_> - 13 1 4 3 -1. - <_> - 12 2 4 1 3. - 1 - <_> - - <_> - 5 1 3 4 -1. - <_> - 6 2 1 4 3. - 1 - <_> - - <_> - 9 0 2 1 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 0 13 10 2 -1. - <_> - 0 13 5 1 2. - <_> - 5 14 5 1 2. - <_> - - <_> - 12 12 4 3 -1. - <_> - 13 12 2 3 2. - <_> - - <_> - 3 6 1 2 -1. - <_> - 3 7 1 1 2. - <_> - - <_> - 7 7 4 2 -1. - <_> - 7 8 4 1 2. - <_> - - <_> - 0 10 18 4 -1. - <_> - 0 12 18 2 2. - <_> - - <_> - 12 12 4 3 -1. - <_> - 13 12 2 3 2. - <_> - - <_> - 5 10 4 2 -1. - <_> - 5 10 2 1 2. - <_> - 7 11 2 1 2. - <_> - - <_> - 13 1 2 8 -1. - <_> - 13 5 2 4 2. - <_> - - <_> - 3 1 2 8 -1. - <_> - 3 5 2 4 2. - <_> - - <_> - 12 12 4 3 -1. - <_> - 13 12 2 3 2. - <_> - - <_> - 9 0 1 2 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 8 0 4 4 -1. - <_> - 8 0 2 4 2. - <_> - - <_> - 2 12 4 3 -1. - <_> - 3 12 2 3 2. - <_> - - <_> - 9 5 1 6 -1. - <_> - 7 7 1 2 3. - 1 - <_> - - <_> - 8 0 2 4 -1. - <_> - 8 2 2 2 2. - <_> - - <_> - 10 9 2 2 -1. - <_> - 11 9 1 1 2. - <_> - 10 10 1 1 2. - <_> - - <_> - 6 9 2 2 -1. - <_> - 6 9 1 1 2. - <_> - 7 10 1 1 2. - <_> - - <_> - 3 6 12 4 -1. - <_> - 9 6 6 2 2. - <_> - 3 8 6 2 2. - <_> - - <_> - 6 1 2 2 -1. - <_> - 7 1 1 2 2. - <_> - - <_> - 17 7 1 6 -1. - <_> - 17 9 1 2 3. - <_> - - <_> - 6 8 2 2 -1. - <_> - 6 8 1 1 2. - <_> - 7 9 1 1 2. - <_> - - <_> - 7 6 6 3 -1. - <_> - 9 7 2 1 9. - <_> - - <_> - 0 4 17 6 -1. - <_> - 0 6 17 2 3. - <_> - - <_> - 1 6 16 3 -1. - <_> - 1 7 16 1 3. - <_> - - <_> - 0 0 12 1 -1. - <_> - 3 0 6 1 2. - <_> - - <_> - 11 5 3 4 -1. - <_> - 12 6 1 4 3. - 1 - <_> - - <_> - 7 1 8 4 -1. - <_> - 7 1 4 4 2. - 1 - <_> - - <_> - 2 0 16 1 -1. - <_> - 6 0 8 1 2. - <_> - - <_> - 9 5 6 1 -1. - <_> - 11 7 2 1 3. - 1 - <_> - - <_> - 11 6 6 8 -1. - <_> - 13 6 2 8 3. - <_> - - <_> - 9 0 8 7 -1. - <_> - 11 2 4 7 2. - 1 - <_> - - <_> - 11 6 6 8 -1. - <_> - 13 6 2 8 3. - <_> - - <_> - 7 5 4 3 -1. - <_> - 6 6 4 1 3. - 1 - <_> - - <_> - 11 6 6 8 -1. - <_> - 13 6 2 8 3. - <_> - - <_> - 1 6 6 8 -1. - <_> - 3 6 2 8 3. - <_> - - <_> - 6 2 6 6 -1. - <_> - 6 5 6 3 2. - <_> - - <_> - 6 4 6 4 -1. - <_> - 6 6 6 2 2. - <_> - - <_> - 17 8 1 2 -1. - <_> - 17 9 1 1 2. - <_> - - <_> - 0 8 1 2 -1. - <_> - 0 9 1 1 2. - <_> - - <_> - 16 8 2 4 -1. - <_> - 16 9 2 2 2. - <_> - - <_> - 0 8 2 4 -1. - <_> - 0 9 2 2 2. - <_> - - <_> - 1 4 17 2 -1. - <_> - 1 5 17 1 2. - <_> - - <_> - 0 0 18 4 -1. - <_> - 0 0 9 2 2. - <_> - 9 2 9 2 2. - <_> - - <_> - 12 9 4 2 -1. - <_> - 13 10 2 2 2. - 1 - <_> - - <_> - 6 9 2 4 -1. - <_> - 5 10 2 2 2. - 1 - <_> - - <_> - 9 8 1 2 -1. - <_> - 9 9 1 1 2. - <_> - - <_> - 7 8 4 2 -1. - <_> - 7 9 4 1 2. - <_> - - <_> - 17 3 1 3 -1. - <_> - 16 4 1 1 3. - 1 - <_> - - <_> - 5 9 2 3 -1. - <_> - 4 10 2 1 3. - 1 - <_> - - <_> - 1 3 16 6 -1. - <_> - 1 5 16 2 3. - <_> - - <_> - 2 12 1 2 -1. - <_> - 2 12 1 1 2. - 1 - <_> - - <_> - 17 0 1 4 -1. - <_> - 17 1 1 2 2. - <_> - - <_> - 6 5 4 2 -1. - <_> - 6 5 2 2 2. - 1 - <_> - - <_> - 0 13 18 2 -1. - <_> - 0 14 18 1 2. - <_> - - <_> - 8 4 6 3 -1. - <_> - 7 5 6 1 3. - 1 - <_> - - <_> - 9 4 2 1 -1. - <_> - 9 4 1 1 2. - <_> - - <_> - 7 4 2 1 -1. - <_> - 8 4 1 1 2. - <_> - - <_> - 8 0 6 10 -1. - <_> - 10 0 2 10 3. - <_> - - <_> - 4 0 6 10 -1. - <_> - 6 0 2 10 3. - <_> - - <_> - 8 3 6 6 -1. - <_> - 10 5 2 2 9. - <_> - - <_> - 4 3 6 6 -1. - <_> - 6 5 2 2 9. - <_> - - <_> - 9 5 4 6 -1. - <_> - 9 5 2 6 2. - 1 - <_> - - <_> - 9 5 6 4 -1. - <_> - 9 5 6 2 2. - 1 - <_> - - <_> - 14 3 4 1 -1. - <_> - 15 3 2 1 2. - <_> - - <_> - 0 3 4 1 -1. - <_> - 1 3 2 1 2. - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 2 1 3 2 -1. - <_> - 3 2 1 2 3. - 1 - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 17 0 1 4 -1. - <_> - 17 1 1 2 2. - <_> - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - <_> - - <_> - 14 5 3 1 -1. - <_> - 15 5 1 1 3. - <_> - - <_> - 1 5 3 1 -1. - <_> - 2 5 1 1 3. - <_> - - <_> - 1 13 16 2 -1. - <_> - 5 13 8 2 2. - <_> - - <_> - 2 3 2 2 -1. - <_> - 2 3 1 1 2. - <_> - 3 4 1 1 2. - <_> - - <_> - 14 3 2 2 -1. - <_> - 15 3 1 1 2. - <_> - 14 4 1 1 2. - <_> - - <_> - 2 3 2 2 -1. - <_> - 2 3 1 1 2. - <_> - 3 4 1 1 2. - <_> - - <_> - 4 1 11 3 -1. - <_> - 4 2 11 1 3. - <_> - - <_> - 7 3 1 2 -1. - <_> - 7 4 1 1 2. - <_> - - <_> - 7 14 9 1 -1. - <_> - 10 14 3 1 3. - <_> - - <_> - 5 10 6 2 -1. - <_> - 5 10 3 1 2. - <_> - 8 11 3 1 2. - <_> - - <_> - 0 10 18 2 -1. - <_> - 9 10 9 1 2. - <_> - 0 11 9 1 2. - <_> - - <_> - 0 11 15 4 -1. - <_> - 0 13 15 2 2. - <_> - - <_> - 2 12 16 3 -1. - <_> - 2 13 16 1 3. - <_> - - <_> - 0 0 16 1 -1. - <_> - 4 0 8 1 2. - <_> - - <_> - 6 5 12 5 -1. - <_> - 9 5 6 5 2. - <_> - - <_> - 0 5 12 5 -1. - <_> - 3 5 6 5 2. - <_> - - <_> - 8 11 9 3 -1. - <_> - 11 12 3 1 9. - <_> - - <_> - 7 0 4 2 -1. - <_> - 7 1 4 1 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 7 1 4 1 2. - <_> - - <_> - 5 1 4 3 -1. - <_> - 7 1 2 3 2. - <_> - - <_> - 9 0 4 1 -1. - <_> - 10 0 2 1 2. - <_> - - <_> - 3 0 7 2 -1. - <_> - 3 0 7 1 2. - 1 - <_> - - <_> - 3 5 12 4 -1. - <_> - 3 7 12 2 2. - <_> - - <_> - 8 7 3 1 -1. - <_> - 9 8 1 1 3. - 1 - <_> - - <_> - 5 11 8 4 -1. - <_> - 7 11 4 4 2. - <_> - - <_> - 6 14 6 1 -1. - <_> - 8 14 2 1 3. - <_> - - <_> - 7 13 4 1 -1. - <_> - 8 13 2 1 2. - <_> - - <_> - 2 12 8 2 -1. - <_> - 4 12 4 2 2. - <_> - - <_> - 15 10 3 2 -1. - <_> - 16 11 1 2 3. - 1 - <_> - - <_> - 3 10 2 3 -1. - <_> - 2 11 2 1 3. - 1 - <_> - - <_> - 16 12 2 2 -1. - <_> - 17 12 1 1 2. - <_> - 16 13 1 1 2. - <_> - - <_> - 0 10 18 4 -1. - <_> - 0 12 18 2 2. - <_> - - <_> - 16 12 2 2 -1. - <_> - 17 12 1 1 2. - <_> - 16 13 1 1 2. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 1 1 2 2. - <_> - - <_> - 16 1 2 4 -1. - <_> - 16 1 1 4 2. - 1 - <_> - - <_> - 2 1 4 2 -1. - <_> - 2 1 4 1 2. - 1 - <_> - - <_> - 14 0 4 3 -1. - <_> - 13 1 4 1 3. - 1 - <_> - - <_> - 4 0 3 4 -1. - <_> - 5 1 1 4 3. - 1 - <_> - - <_> - 16 2 2 2 -1. - <_> - 17 2 1 1 2. - <_> - 16 3 1 1 2. - <_> - - <_> - 0 2 2 2 -1. - <_> - 0 2 1 1 2. - <_> - 1 3 1 1 2. - <_> - - <_> - 12 5 6 1 -1. - <_> - 12 5 3 1 2. - <_> - - <_> - 0 5 6 1 -1. - <_> - 3 5 3 1 2. - <_> - - <_> - 5 3 8 2 -1. - <_> - 9 3 4 1 2. - <_> - 5 4 4 1 2. - <_> - - <_> - 7 0 2 8 -1. - <_> - 8 0 1 8 2. - <_> - - <_> - 9 2 2 3 -1. - <_> - 9 2 1 3 2. - 1 - <_> - - <_> - 9 2 3 2 -1. - <_> - 9 2 3 1 2. - 1 - <_> - - <_> - 16 12 2 2 -1. - <_> - 17 12 1 1 2. - <_> - 16 13 1 1 2. - <_> - - <_> - 0 12 2 2 -1. - <_> - 0 12 1 1 2. - <_> - 1 13 1 1 2. - <_> - - <_> - 16 12 2 2 -1. - <_> - 17 12 1 1 2. - <_> - 16 13 1 1 2. - <_> - - <_> - 0 12 2 2 -1. - <_> - 0 12 1 1 2. - <_> - 1 13 1 1 2. - <_> - - <_> - 6 13 8 2 -1. - <_> - 8 13 4 2 2. - <_> - - <_> - 5 0 8 2 -1. - <_> - 5 0 4 1 2. - <_> - 9 1 4 1 2. - <_> - - <_> - 13 8 1 4 -1. - <_> - 13 8 1 2 2. - 1 - <_> - - <_> - 0 5 16 6 -1. - <_> - 0 7 16 2 3. - <_> - - <_> - 12 5 1 6 -1. - <_> - 12 7 1 2 3. - <_> - - <_> - 5 5 1 6 -1. - <_> - 5 7 1 2 3. - <_> - - <_> - 12 8 6 4 -1. - <_> - 15 8 3 2 2. - <_> - 12 10 3 2 2. - <_> - - <_> - 0 5 18 4 -1. - <_> - 0 5 9 2 2. - <_> - 9 7 9 2 2. - <_> - - <_> - 10 3 2 2 -1. - <_> - 11 3 1 1 2. - <_> - 10 4 1 1 2. - <_> - - <_> - 2 10 6 3 -1. - <_> - 4 11 2 1 9. - <_> - - <_> - 17 5 1 3 -1. - <_> - 17 6 1 1 3. - <_> - - <_> - 8 3 3 8 -1. - <_> - 8 3 3 4 2. - 1 - <_> - - <_> - 12 7 4 1 -1. - <_> - 13 8 2 1 2. - 1 - <_> - - <_> - 1 3 9 12 -1. - <_> - 4 7 3 4 9. - <_> - - <_> - 12 7 4 1 -1. - <_> - 13 8 2 1 2. - 1 - <_> - - <_> - 6 7 1 4 -1. - <_> - 5 8 1 2 2. - 1 - <_> - - <_> - 17 5 1 3 -1. - <_> - 17 6 1 1 3. - <_> - - <_> - 0 5 1 3 -1. - <_> - 0 6 1 1 3. - <_> - - <_> - 13 1 1 3 -1. - <_> - 13 2 1 1 3. - <_> - - <_> - 6 3 2 2 -1. - <_> - 6 3 1 1 2. - <_> - 7 4 1 1 2. - <_> - - <_> - 6 13 8 2 -1. - <_> - 8 13 4 2 2. - <_> - - <_> - 5 5 4 3 -1. - <_> - 6 6 2 3 2. - 1 - <_> - - <_> - 6 9 6 2 -1. - <_> - 6 10 6 1 2. - <_> - - <_> - 0 0 18 11 -1. - <_> - 6 0 6 11 3. - <_> - - <_> - 16 3 2 4 -1. - <_> - 17 3 1 2 2. - <_> - 16 5 1 2 2. - <_> - - <_> - 5 3 6 6 -1. - <_> - 5 3 3 3 2. - <_> - 8 6 3 3 2. - <_> - - <_> - 5 2 8 6 -1. - <_> - 7 2 4 6 2. - <_> - - <_> - 3 2 12 4 -1. - <_> - 6 2 6 4 2. - <_> - - <_> - 16 3 2 4 -1. - <_> - 17 3 1 2 2. - <_> - 16 5 1 2 2. - <_> - - <_> - 1 0 3 2 -1. - <_> - 2 0 1 2 3. - <_> - - <_> - 16 3 2 4 -1. - <_> - 17 3 1 2 2. - <_> - 16 5 1 2 2. - <_> - - <_> - 0 3 2 4 -1. - <_> - 0 3 1 2 2. - <_> - 1 5 1 2 2. - <_> - - <_> - 14 3 4 1 -1. - <_> - 15 4 2 1 2. - 1 - <_> - - <_> - 5 5 6 6 -1. - <_> - 5 5 3 3 2. - <_> - 8 8 3 3 2. - <_> - - <_> - 8 3 2 10 -1. - <_> - 8 8 2 5 2. - <_> - - <_> - 4 3 1 4 -1. - <_> - 3 4 1 2 2. - 1 - <_> - - <_> - 11 8 6 1 -1. - <_> - 11 8 3 1 2. - 1 - <_> - - <_> - 7 8 1 6 -1. - <_> - 7 8 1 3 2. - 1 - <_> - - <_> - 6 13 12 1 -1. - <_> - 6 13 6 1 2. - <_> - - <_> - 0 13 16 2 -1. - <_> - 8 13 8 2 2. - <_> - - <_> - 10 9 4 4 -1. - <_> - 10 11 4 2 2. - <_> - - <_> - 4 1 7 3 -1. - <_> - 4 2 7 1 3. - <_> - - <_> - 11 2 2 2 -1. - <_> - 12 2 1 1 2. - <_> - 11 3 1 1 2. - <_> - - <_> - 5 2 2 2 -1. - <_> - 5 2 1 1 2. - <_> - 6 3 1 1 2. - <_> - - <_> - 6 13 8 2 -1. - <_> - 8 13 4 2 2. - <_> - - <_> - 4 13 8 2 -1. - <_> - 6 13 4 2 2. - <_> - - <_> - 4 3 12 9 -1. - <_> - 8 6 4 3 9. - <_> - - <_> - 7 0 6 4 -1. - <_> - 9 2 2 4 3. - 1 - <_> - - <_> - 13 8 1 4 -1. - <_> - 13 8 1 2 2. - 1 - <_> - - <_> - 5 8 4 1 -1. - <_> - 5 8 2 1 2. - 1 - <_> - - <_> - 4 1 12 5 -1. - <_> - 7 1 6 5 2. - <_> - - <_> - 5 0 4 1 -1. - <_> - 6 0 2 1 2. - <_> - - <_> - 9 0 1 4 -1. - <_> - 8 1 1 2 2. - 1 - <_> - - <_> - 4 2 2 2 -1. - <_> - 4 2 1 1 2. - <_> - 5 3 1 1 2. - <_> - - <_> - 12 2 2 2 -1. - <_> - 13 2 1 1 2. - <_> - 12 3 1 1 2. - <_> - - <_> - 4 2 2 2 -1. - <_> - 4 2 1 1 2. - <_> - 5 3 1 1 2. - <_> - - <_> - 7 0 5 4 -1. - <_> - 7 2 5 2 2. - <_> - - <_> - 9 3 1 6 -1. - <_> - 9 3 1 3 2. - 1 - <_> - - <_> - 15 6 2 4 -1. - <_> - 15 7 2 2 2. - <_> - - <_> - 0 6 18 2 -1. - <_> - 0 6 9 1 2. - <_> - 9 7 9 1 2. - <_> - - <_> - 13 6 2 2 -1. - <_> - 14 6 1 1 2. - <_> - 13 7 1 1 2. - <_> - - <_> - 0 0 5 8 -1. - <_> - 0 4 5 4 2. - <_> - - <_> - 12 2 2 2 -1. - <_> - 12 2 2 1 2. - 1 - <_> - - <_> - 8 0 10 2 -1. - <_> - 8 0 10 1 2. - 1 - <_> - - <_> - 5 0 11 12 -1. - <_> - 5 4 11 4 3. - <_> - - <_> - 2 0 11 12 -1. - <_> - 2 4 11 4 3. - <_> - - <_> - 11 1 2 14 -1. - <_> - 12 1 1 7 2. - <_> - 11 8 1 7 2. - <_> - - <_> - 5 1 2 14 -1. - <_> - 5 1 1 7 2. - <_> - 6 8 1 7 2. - <_> - - <_> - 11 8 2 1 -1. - <_> - 11 8 1 1 2. - 1 - <_> - - <_> - 3 6 2 2 -1. - <_> - 3 6 1 1 2. - <_> - 4 7 1 1 2. - <_> - - <_> - 11 8 2 1 -1. - <_> - 11 8 1 1 2. - 1 - <_> - - <_> - 0 8 18 4 -1. - <_> - 0 8 9 2 2. - <_> - 9 10 9 2 2. - <_> - - <_> - 14 0 2 1 -1. - <_> - 14 0 1 1 2. - 1 - <_> - - <_> - 4 0 1 2 -1. - <_> - 4 0 1 1 2. - 1 - <_> - - <_> - 3 0 15 14 -1. - <_> - 8 0 5 14 3. - <_> - - <_> - 4 0 9 13 -1. - <_> - 7 0 3 13 3. - <_> - - <_> - 7 5 4 9 -1. - <_> - 7 5 2 9 2. - <_> - - <_> - 9 1 4 4 -1. - <_> - 9 1 2 4 2. - 1 - <_> - - <_> - 7 2 6 2 -1. - <_> - 10 2 3 1 2. - <_> - 7 3 3 1 2. - <_> - - <_> - 7 4 6 2 -1. - <_> - 9 6 2 2 3. - 1 - <_> - - <_> - 11 8 3 2 -1. - <_> - 12 9 1 2 3. - 1 - <_> - - <_> - 7 8 2 3 -1. - <_> - 6 9 2 1 3. - 1 - <_> - - <_> - 12 14 4 1 -1. - <_> - 12 14 2 1 2. - <_> - - <_> - 2 14 4 1 -1. - <_> - 4 14 2 1 2. - <_> - - <_> - 12 11 4 4 -1. - <_> - 14 11 2 2 2. - <_> - 12 13 2 2 2. - <_> - - <_> - 6 12 1 3 -1. - <_> - 6 13 1 1 3. - <_> - - <_> - 11 13 1 2 -1. - <_> - 11 14 1 1 2. - <_> - - <_> - 3 10 4 4 -1. - <_> - 3 11 4 2 2. - <_> - - <_> - 11 13 1 2 -1. - <_> - 11 14 1 1 2. - <_> - - <_> - 6 13 1 2 -1. - <_> - 6 14 1 1 2. - <_> - - <_> - 7 7 10 4 -1. - <_> - 12 7 5 2 2. - <_> - 7 9 5 2 2. - <_> - - <_> - 1 7 10 4 -1. - <_> - 1 7 5 2 2. - <_> - 6 9 5 2 2. - <_> - - <_> - 0 4 18 4 -1. - <_> - 6 4 6 4 3. - <_> - - <_> - 2 11 4 4 -1. - <_> - 2 11 2 2 2. - <_> - 4 13 2 2 2. - <_> - - <_> - 9 14 6 1 -1. - <_> - 11 14 2 1 3. - <_> - - <_> - 3 14 6 1 -1. - <_> - 5 14 2 1 3. - <_> - - <_> - 11 12 3 1 -1. - <_> - 12 12 1 1 3. - <_> - - <_> - 4 12 3 1 -1. - <_> - 5 12 1 1 3. - <_> - - <_> - 13 5 1 2 -1. - <_> - 13 6 1 1 2. - <_> - - <_> - 5 3 6 4 -1. - <_> - 5 4 6 2 2. - <_> - - <_> - 4 3 12 9 -1. - <_> - 8 6 4 3 9. - <_> - - <_> - 4 6 10 2 -1. - <_> - 4 7 10 1 2. - <_> - - <_> - 13 5 1 2 -1. - <_> - 13 6 1 1 2. - <_> - - <_> - 4 5 1 2 -1. - <_> - 4 6 1 1 2. - <_> - - <_> - 11 4 4 2 -1. - <_> - 11 5 4 1 2. - <_> - - <_> - 3 4 4 2 -1. - <_> - 3 5 4 1 2. - <_> - - <_> - 5 4 8 2 -1. - <_> - 9 4 4 1 2. - <_> - 5 5 4 1 2. - <_> - - <_> - 6 2 2 2 -1. - <_> - 6 2 1 2 2. - 1 - <_> - - <_> - 14 3 2 11 -1. - <_> - 14 3 1 11 2. - <_> - - <_> - 2 3 2 11 -1. - <_> - 3 3 1 11 2. - <_> - - <_> - 14 6 4 3 -1. - <_> - 15 6 2 3 2. - <_> - - <_> - 0 6 4 5 -1. - <_> - 1 6 2 5 2. - <_> - - <_> - 11 0 6 3 -1. - <_> - 13 0 2 3 3. - <_> - - <_> - 7 6 2 2 -1. - <_> - 7 6 1 2 2. - 1 - <_> - - <_> - 13 3 1 6 -1. - <_> - 13 5 1 2 3. - <_> - - <_> - 4 4 4 4 -1. - <_> - 5 4 2 4 2. - <_> - - <_> - 8 1 3 9 -1. - <_> - 9 4 1 3 9. - <_> - - <_> - 9 4 3 1 -1. - <_> - 10 5 1 1 3. - 1 - <_> - - <_> - 6 2 9 9 -1. - <_> - 9 5 3 3 9. - <_> - - <_> - 3 2 9 9 -1. - <_> - 6 5 3 3 9. - <_> - - <_> - 0 0 18 12 -1. - <_> - 6 4 6 4 9. - <_> - - <_> - 1 3 14 4 -1. - <_> - 1 3 7 2 2. - <_> - 8 5 7 2 2. - <_> - - <_> - 0 0 18 8 -1. - <_> - 9 0 9 4 2. - <_> - 0 4 9 4 2. - <_> - - <_> - 5 10 2 2 -1. - <_> - 5 10 1 1 2. - <_> - 6 11 1 1 2. - <_> - - <_> - 9 8 2 3 -1. - <_> - 8 9 2 1 3. - 1 - <_> - - <_> - 9 8 3 2 -1. - <_> - 10 9 1 2 3. - 1 - <_> - - <_> - 9 0 6 9 -1. - <_> - 9 0 3 9 2. - 1 - <_> - - <_> - 9 0 9 6 -1. - <_> - 9 0 9 3 2. - 1 - <_> - - <_> - 9 4 4 2 -1. - <_> - 9 4 2 2 2. - <_> - - <_> - 0 2 18 1 -1. - <_> - 9 2 9 1 2. - <_> - - <_> - 9 10 6 3 -1. - <_> - 11 11 2 1 9. - <_> - - <_> - 0 3 8 4 -1. - <_> - 0 5 8 2 2. - <_> - - <_> - 14 3 3 8 -1. - <_> - 14 5 3 4 2. - <_> - - <_> - 5 0 2 1 -1. - <_> - 5 0 1 1 2. - 1 - <_> - - <_> - 13 1 2 2 -1. - <_> - 14 1 1 1 2. - <_> - 13 2 1 1 2. - <_> - - <_> - 3 1 2 2 -1. - <_> - 3 1 1 1 2. - <_> - 4 2 1 1 2. - <_> - - <_> - 13 0 4 1 -1. - <_> - 14 0 2 1 2. - <_> - - <_> - 1 0 4 1 -1. - <_> - 2 0 2 1 2. - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 0 1 1 2. - 1 - <_> - - <_> - 1 0 2 1 -1. - <_> - 1 0 1 1 2. - 1 - <_> - - <_> - 16 0 1 8 -1. - <_> - 16 2 1 4 2. - <_> - - <_> - 1 0 1 8 -1. - <_> - 1 2 1 4 2. - <_> - - <_> - 8 0 4 2 -1. - <_> - 8 0 2 2 2. - <_> - - <_> - 2 0 12 15 -1. - <_> - 5 0 6 15 2. - <_> - - <_> - 11 2 6 4 -1. - <_> - 11 2 3 4 2. - <_> - - <_> - 4 2 8 6 -1. - <_> - 4 2 4 3 2. - <_> - 8 5 4 3 2. - <_> - - <_> - 10 1 1 4 -1. - <_> - 9 2 1 2 2. - 1 - <_> - - <_> - 9 0 7 6 -1. - <_> - 7 2 7 2 3. - 1 - <_> - - <_> - 10 6 8 2 -1. - <_> - 10 6 4 2 2. - <_> - - <_> - 0 0 17 9 -1. - <_> - 0 3 17 3 3. - <_> - - <_> - 7 0 5 6 -1. - <_> - 7 3 5 3 2. - <_> - - <_> - 5 1 8 4 -1. - <_> - 5 1 4 2 2. - <_> - 9 3 4 2 2. - <_> - - <_> - 9 0 3 9 -1. - <_> - 9 3 3 3 3. - <_> - - <_> - 9 2 4 2 -1. - <_> - 9 2 4 1 2. - 1 - <_> - - <_> - 4 2 11 8 -1. - <_> - 4 4 11 4 2. - <_> - - <_> - 1 4 16 6 -1. - <_> - 1 6 16 2 3. - <_> - - <_> - 10 6 8 2 -1. - <_> - 10 6 4 2 2. - <_> - - <_> - 0 6 8 2 -1. - <_> - 4 6 4 2 2. - <_> - - <_> - 13 8 4 2 -1. - <_> - 15 8 2 1 2. - <_> - 13 9 2 1 2. - <_> - - <_> - 0 7 3 3 -1. - <_> - 0 8 3 1 3. - <_> - - <_> - 17 5 1 3 -1. - <_> - 16 6 1 1 3. - 1 - <_> - - <_> - 1 5 3 1 -1. - <_> - 2 6 1 1 3. - 1 - <_> - - <_> - 17 6 1 2 -1. - <_> - 17 7 1 1 2. - <_> - - <_> - 0 6 1 2 -1. - <_> - 0 7 1 1 2. - <_> - - <_> - 17 1 1 12 -1. - <_> - 17 7 1 6 2. - <_> - - <_> - 0 1 1 12 -1. - <_> - 0 7 1 6 2. - <_> - - <_> - 0 6 18 4 -1. - <_> - 0 7 18 2 2. - <_> - - <_> - 0 9 18 2 -1. - <_> - 0 10 18 1 2. - <_> - - <_> - 6 7 6 2 -1. - <_> - 6 8 6 1 2. - <_> - - <_> - 0 9 3 1 -1. - <_> - 1 9 1 1 3. - <_> - - <_> - 16 9 2 2 -1. - <_> - 16 10 2 1 2. - <_> - - <_> - 3 10 6 3 -1. - <_> - 5 11 2 1 9. - <_> - - <_> - 15 1 3 3 -1. - <_> - 14 2 3 1 3. - 1 - <_> - - <_> - 2 5 14 2 -1. - <_> - 2 5 7 1 2. - <_> - 9 6 7 1 2. - <_> - - <_> - 15 1 3 3 -1. - <_> - 14 2 3 1 3. - 1 - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 3 3. - 1 - <_> - - <_> - 14 4 3 2 -1. - <_> - 14 5 3 1 2. - <_> - - <_> - 1 4 3 2 -1. - <_> - 1 5 3 1 2. - <_> - - <_> - 15 3 3 11 -1. - <_> - 16 3 1 11 3. - <_> - - <_> - 0 3 3 11 -1. - <_> - 1 3 1 11 3. - <_> - - <_> - 14 5 2 2 -1. - <_> - 15 5 1 1 2. - <_> - 14 6 1 1 2. - <_> - - <_> - 2 5 2 2 -1. - <_> - 2 5 1 1 2. - <_> - 3 6 1 1 2. - <_> - - <_> - 15 5 3 4 -1. - <_> - 15 6 3 2 2. - <_> - - <_> - 0 5 3 4 -1. - <_> - 0 6 3 2 2. - <_> - - <_> - 17 8 1 3 -1. - <_> - 17 9 1 1 3. - <_> - - <_> - 0 8 1 3 -1. - <_> - 0 9 1 1 3. - <_> - - <_> - 16 6 2 4 -1. - <_> - 17 6 1 2 2. - <_> - 16 8 1 2 2. - <_> - - <_> - 0 6 2 4 -1. - <_> - 0 6 1 2 2. - <_> - 1 8 1 2 2. - <_> - - <_> - 0 6 18 6 -1. - <_> - 9 6 9 3 2. - <_> - 0 9 9 3 2. - <_> - - <_> - 5 1 6 2 -1. - <_> - 5 1 3 1 2. - <_> - 8 2 3 1 2. - <_> - - <_> - 10 1 2 2 -1. - <_> - 11 1 1 1 2. - <_> - 10 2 1 1 2. - <_> - - <_> - 6 1 2 2 -1. - <_> - 6 1 1 1 2. - <_> - 7 2 1 1 2. - <_> - - <_> - 10 1 6 3 -1. - <_> - 10 1 3 3 2. - <_> - - <_> - 2 1 6 3 -1. - <_> - 5 1 3 3 2. - <_> - - <_> - 12 0 6 3 -1. - <_> - 14 0 2 3 3. - <_> - - <_> - 0 0 6 3 -1. - <_> - 2 0 2 3 3. - <_> - - <_> - 13 8 4 2 -1. - <_> - 15 8 2 1 2. - <_> - 13 9 2 1 2. - <_> - - <_> - 1 8 4 2 -1. - <_> - 1 8 2 1 2. - <_> - 3 9 2 1 2. - <_> - - <_> - 9 6 1 6 -1. - <_> - 7 8 1 2 3. - 1 - <_> - - <_> - 10 0 6 6 -1. - <_> - 12 2 2 2 9. - <_> - - <_> - 5 0 4 8 -1. - <_> - 7 0 2 8 2. - <_> - - <_> - 12 7 1 3 -1. - <_> - 12 8 1 1 3. - <_> - - <_> - 4 7 1 3 -1. - <_> - 4 8 1 1 3. - <_> - - <_> - 15 5 1 3 -1. - <_> - 14 6 1 1 3. - 1 - <_> - - <_> - 3 5 3 1 -1. - <_> - 4 6 1 1 3. - 1 - <_> - - <_> - 0 9 18 4 -1. - <_> - 9 9 9 2 2. - <_> - 0 11 9 2 2. - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 8 0 7 4 -1. - <_> - 8 2 7 2 2. - <_> - - <_> - 3 0 12 4 -1. - <_> - 3 0 6 2 2. - <_> - 9 2 6 2 2. - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 7 0 4 4 -1. - <_> - 7 0 2 2 2. - <_> - 9 2 2 2 2. - <_> - - <_> - 12 8 2 2 -1. - <_> - 12 9 2 1 2. - <_> - - <_> - 4 8 2 2 -1. - <_> - 4 9 2 1 2. - <_> - - <_> - 11 5 4 10 -1. - <_> - 11 5 2 10 2. - <_> - - <_> - 3 5 4 10 -1. - <_> - 5 5 2 10 2. - <_> - - <_> - 1 10 16 3 -1. - <_> - 5 10 8 3 2. - <_> - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 1 2. - <_> - 6 9 1 1 2. - <_> - - <_> - 0 5 18 8 -1. - <_> - 9 5 9 4 2. - <_> - 0 9 9 4 2. - <_> - - <_> - 0 3 3 9 -1. - <_> - 0 6 3 3 3. - <_> - - <_> - 9 3 8 2 -1. - <_> - 9 4 8 1 2. - <_> - - <_> - 0 3 18 2 -1. - <_> - 0 3 9 1 2. - <_> - 9 4 9 1 2. - <_> - - <_> - 6 11 8 4 -1. - <_> - 8 11 4 4 2. - <_> - - <_> - 2 4 3 2 -1. - <_> - 3 5 1 2 3. - 1 - <_> - - <_> - 14 4 4 6 -1. - <_> - 14 7 4 3 2. - <_> - - <_> - 9 0 9 3 -1. - <_> - 8 1 9 1 3. - 1 - <_> - - <_> - 6 11 8 4 -1. - <_> - 8 11 4 4 2. - <_> - - <_> - 4 11 8 4 -1. - <_> - 6 11 4 4 2. - <_> - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - <_> - - <_> - 4 4 6 2 -1. - <_> - 6 6 2 2 3. - 1 - <_> - - <_> - 9 3 6 4 -1. - <_> - 11 5 2 4 3. - 1 - <_> - - <_> - 9 3 4 6 -1. - <_> - 7 5 4 2 3. - 1 - <_> - - <_> - 3 1 15 14 -1. - <_> - 3 8 15 7 2. - <_> - - <_> - 0 1 4 14 -1. - <_> - 0 8 4 7 2. - <_> - - <_> - 12 0 2 2 -1. - <_> - 12 0 1 2 2. - 1 - <_> - - <_> - 6 0 2 2 -1. - <_> - 6 0 2 1 2. - 1 - <_> - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - <_> - - <_> - 1 0 2 1 -1. - <_> - 2 0 1 1 2. - <_> - - <_> - 11 7 2 2 -1. - <_> - 12 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 0 0 4 6 -1. - <_> - 0 0 2 3 2. - <_> - 2 3 2 3 2. - <_> - - <_> - 11 7 2 2 -1. - <_> - 12 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 14 6 4 5 -1. - <_> - 14 6 2 5 2. - 1 - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 8 2 1 2. - <_> - - <_> - 1 8 16 3 -1. - <_> - 1 9 16 1 3. - <_> - - <_> - 1 10 16 2 -1. - <_> - 1 11 16 1 2. - <_> - - <_> - 14 6 4 5 -1. - <_> - 14 6 2 5 2. - 1 - <_> - - <_> - 4 6 5 4 -1. - <_> - 4 6 5 2 2. - 1 - <_> - - <_> - 15 1 1 2 -1. - <_> - 15 2 1 1 2. - <_> - - <_> - 2 1 10 2 -1. - <_> - 2 1 10 1 2. - 1 - <_> - - <_> - 10 0 6 9 -1. - <_> - 12 2 2 9 3. - 1 - <_> - - <_> - 4 9 3 3 -1. - <_> - 4 10 3 1 3. - <_> - - <_> - 10 0 3 4 -1. - <_> - 10 1 3 2 2. - <_> - - <_> - 1 10 2 1 -1. - <_> - 1 10 1 1 2. - 1 - <_> - - <_> - 15 11 3 1 -1. - <_> - 16 12 1 1 3. - 1 - <_> - - <_> - 3 11 1 3 -1. - <_> - 2 12 1 1 3. - 1 - <_> - - <_> - 10 0 6 9 -1. - <_> - 12 2 2 9 3. - 1 - <_> - - <_> - 8 0 9 6 -1. - <_> - 6 2 9 2 3. - 1 - <_> - - <_> - 7 10 6 2 -1. - <_> - 10 10 3 1 2. - <_> - 7 11 3 1 2. - <_> - - <_> - 7 7 2 2 -1. - <_> - 7 7 1 1 2. - <_> - 8 8 1 1 2. - <_> - - <_> - 3 3 12 6 -1. - <_> - 7 5 4 2 9. - <_> - - <_> - 6 3 1 6 -1. - <_> - 6 5 1 2 3. - <_> - - <_> - 16 0 1 3 -1. - <_> - 16 1 1 1 3. - <_> - - <_> - 4 0 3 2 -1. - <_> - 4 1 3 1 2. - <_> - - <_> - 16 0 1 3 -1. - <_> - 16 1 1 1 3. - <_> - - <_> - 1 0 1 3 -1. - <_> - 1 1 1 1 3. - <_> - - <_> - 10 3 8 2 -1. - <_> - 10 3 4 2 2. - <_> - - <_> - 0 3 8 2 -1. - <_> - 4 3 4 2 2. - <_> - - <_> - 7 0 4 1 -1. - <_> - 7 0 2 1 2. - <_> - - <_> - 0 0 18 2 -1. - <_> - 0 0 9 1 2. - <_> - 9 1 9 1 2. - <_> - - <_> - 12 3 2 12 -1. - <_> - 12 9 2 6 2. - <_> - - <_> - 4 3 2 12 -1. - <_> - 4 9 2 6 2. - <_> - - <_> - 7 10 6 2 -1. - <_> - 10 10 3 1 2. - <_> - 7 11 3 1 2. - <_> - - <_> - 6 4 7 2 -1. - <_> - 6 4 7 1 2. - 1 - <_> - - <_> - 13 13 4 1 -1. - <_> - 13 13 2 1 2. - <_> - - <_> - 4 9 6 2 -1. - <_> - 4 9 3 1 2. - <_> - 7 10 3 1 2. - <_> - - <_> - 7 8 4 2 -1. - <_> - 7 9 4 1 2. - <_> - - <_> - 1 13 4 1 -1. - <_> - 3 13 2 1 2. - <_> - - <_> - 12 10 1 3 -1. - <_> - 12 11 1 1 3. - <_> - - <_> - 6 0 6 2 -1. - <_> - 6 0 3 1 2. - <_> - 9 1 3 1 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 1 2 2. - 1 - <_> - - <_> - 6 2 2 2 -1. - <_> - 6 2 1 1 2. - <_> - 7 3 1 1 2. - <_> - - <_> - 8 0 3 4 -1. - <_> - 8 1 3 2 2. - <_> - - <_> - 6 7 1 3 -1. - <_> - 6 8 1 1 3. - <_> - - <_> - 4 8 10 4 -1. - <_> - 9 8 5 2 2. - <_> - 4 10 5 2 2. - <_> - - <_> - 0 9 18 2 -1. - <_> - 0 10 18 1 2. - <_> - - <_> - 9 9 1 2 -1. - <_> - 9 10 1 1 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 3 5 12 6 -1. - <_> - 7 7 4 2 9. - <_> - - <_> - 6 4 6 4 -1. - <_> - 6 6 6 2 2. - <_> - - <_> - 9 0 7 8 -1. - <_> - 7 2 7 4 2. - 1 - <_> - - <_> - 6 6 6 2 -1. - <_> - 6 7 6 1 2. - <_> - - <_> - 12 0 3 3 -1. - <_> - 13 1 1 3 3. - 1 - <_> - - <_> - 6 0 3 3 -1. - <_> - 5 1 3 1 3. - 1 - <_> - - <_> - 5 1 8 6 -1. - <_> - 5 4 8 3 2. - <_> - - <_> - 9 0 7 3 -1. - <_> - 8 1 7 1 3. - 1 - <_> - - <_> - 14 5 4 4 -1. - <_> - 14 7 4 2 2. - <_> - - <_> - 0 11 18 4 -1. - <_> - 0 13 18 2 2. - <_> - - <_> - 1 13 16 2 -1. - <_> - 1 14 16 1 2. - <_> - - <_> - 2 0 6 10 -1. - <_> - 2 0 3 5 2. - <_> - 5 5 3 5 2. - <_> - - <_> - 14 3 4 3 -1. - <_> - 13 4 4 1 3. - 1 - <_> - - <_> - 4 3 3 3 -1. - <_> - 5 4 1 3 3. - 1 - <_> - - <_> - 16 2 2 3 -1. - <_> - 15 3 2 1 3. - 1 - <_> - - <_> - 7 7 4 1 -1. - <_> - 8 8 2 1 2. - 1 - <_> - - <_> - 16 2 2 3 -1. - <_> - 15 3 2 1 3. - 1 - <_> - - <_> - 4 0 2 10 -1. - <_> - 4 5 2 5 2. - <_> - - <_> - 16 2 2 3 -1. - <_> - 15 3 2 1 3. - 1 - <_> - - <_> - 2 2 3 2 -1. - <_> - 3 3 1 2 3. - 1 - <_> - - <_> - 15 1 3 2 -1. - <_> - 16 2 1 2 3. - 1 - <_> - - <_> - 3 1 2 3 -1. - <_> - 2 2 2 1 3. - 1 - <_> - - <_> - 10 0 2 8 -1. - <_> - 8 2 2 4 2. - 1 - <_> - - <_> - 0 0 15 13 -1. - <_> - 5 0 5 13 3. - <_> - - <_> - 5 6 12 9 -1. - <_> - 8 6 6 9 2. - <_> - - <_> - 1 6 12 9 -1. - <_> - 4 6 6 9 2. - <_> - - <_> - 16 5 2 2 -1. - <_> - 17 5 1 1 2. - <_> - 16 6 1 1 2. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 3 2 1 2. - <_> - - <_> - 16 5 2 2 -1. - <_> - 17 5 1 1 2. - <_> - 16 6 1 1 2. - <_> - - <_> - 4 0 10 13 -1. - <_> - 9 0 5 13 2. - <_> - - <_> - 16 5 2 2 -1. - <_> - 17 5 1 1 2. - <_> - 16 6 1 1 2. - <_> - - <_> - 0 5 2 2 -1. - <_> - 0 5 1 1 2. - <_> - 1 6 1 1 2. - <_> - - <_> - 0 5 18 2 -1. - <_> - 9 5 9 1 2. - <_> - 0 6 9 1 2. - <_> - - <_> - 0 13 2 2 -1. - <_> - 0 13 1 1 2. - <_> - 1 14 1 1 2. - <_> - - <_> - 16 10 2 2 -1. - <_> - 17 10 1 1 2. - <_> - 16 11 1 1 2. - <_> - - <_> - 0 10 2 2 -1. - <_> - 0 10 1 1 2. - <_> - 1 11 1 1 2. - <_> - - <_> - 7 7 5 2 -1. - <_> - 7 8 5 1 2. - <_> - - <_> - 8 3 9 3 -1. - <_> - 11 6 3 3 3. - 1 - <_> - - <_> - 15 1 3 2 -1. - <_> - 16 2 1 2 3. - 1 - <_> - - <_> - 3 1 2 3 -1. - <_> - 2 2 2 1 3. - 1 - <_> - - <_> - 11 2 1 10 -1. - <_> - 11 2 1 5 2. - 1 - <_> - - <_> - 7 2 10 1 -1. - <_> - 7 2 5 1 2. - 1 - <_> - - <_> - 13 0 2 2 -1. - <_> - 14 0 1 1 2. - <_> - 13 1 1 1 2. - <_> - - <_> - 3 0 2 2 -1. - <_> - 3 0 1 1 2. - <_> - 4 1 1 1 2. - <_> - - <_> - 13 0 2 2 -1. - <_> - 14 0 1 1 2. - <_> - 13 1 1 1 2. - <_> - - <_> - 3 0 2 2 -1. - <_> - 3 0 1 1 2. - <_> - 4 1 1 1 2. - <_> - - <_> - 6 8 6 3 -1. - <_> - 8 9 2 1 9. - <_> - - <_> - 5 10 1 3 -1. - <_> - 5 11 1 1 3. - <_> - - <_> - 17 7 1 6 -1. - <_> - 17 9 1 2 3. - <_> - - <_> - 0 7 1 6 -1. - <_> - 0 9 1 2 3. - <_> - - <_> - 11 4 3 9 -1. - <_> - 12 7 1 3 9. - <_> - - <_> - 0 5 1 2 -1. - <_> - 0 6 1 1 2. - <_> - - <_> - 7 10 8 2 -1. - <_> - 11 10 4 1 2. - <_> - 7 11 4 1 2. - <_> - - <_> - 3 10 8 2 -1. - <_> - 3 10 4 1 2. - <_> - 7 11 4 1 2. - <_> - - <_> - 10 5 3 6 -1. - <_> - 8 7 3 2 3. - 1 - <_> - - <_> - 8 5 6 3 -1. - <_> - 10 7 2 3 3. - 1 - <_> - - <_> - 12 11 1 2 -1. - <_> - 12 12 1 1 2. - <_> - - <_> - 8 0 9 4 -1. - <_> - 7 1 9 2 2. - 1 - <_> - - <_> - 8 5 2 2 -1. - <_> - 8 6 2 1 2. - <_> - - <_> - 4 1 10 6 -1. - <_> - 4 3 10 2 3. - <_> - - <_> - 6 0 7 3 -1. - <_> - 6 1 7 1 3. - <_> - - <_> - 7 0 3 2 -1. - <_> - 7 1 3 1 2. - <_> - - <_> - 15 2 3 2 -1. - <_> - 15 2 3 1 2. - 1 - <_> - - <_> - 3 2 2 3 -1. - <_> - 3 2 1 3 2. - 1 - <_> - - <_> - 14 0 2 14 -1. - <_> - 14 0 1 14 2. - <_> - - <_> - 3 3 12 6 -1. - <_> - 7 5 4 2 9. - <_> - - <_> - 12 3 1 2 -1. - <_> - 12 3 1 1 2. - 1 - <_> - - <_> - 8 0 9 6 -1. - <_> - 8 0 9 3 2. - 1 - <_> - - <_> - 16 0 2 3 -1. - <_> - 15 1 2 1 3. - 1 - <_> - - <_> - 2 0 3 2 -1. - <_> - 3 1 1 2 3. - 1 - <_> - - <_> - 16 12 2 1 -1. - <_> - 16 12 1 1 2. - 1 - <_> - - <_> - 3 12 12 2 -1. - <_> - 3 13 12 1 2. - <_> - - <_> - 12 11 1 2 -1. - <_> - 12 12 1 1 2. - <_> - - <_> - 4 9 2 2 -1. - <_> - 4 9 1 1 2. - <_> - 5 10 1 1 2. - <_> - - <_> - 16 12 2 1 -1. - <_> - 16 12 1 1 2. - 1 - <_> - - <_> - 2 12 1 2 -1. - <_> - 2 12 1 1 2. - 1 - <_> - - <_> - 14 10 4 1 -1. - <_> - 15 11 2 1 2. - 1 - <_> - - <_> - 4 10 1 4 -1. - <_> - 3 11 1 2 2. - 1 - <_> - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - 1 - <_> - - <_> - 2 9 1 2 -1. - <_> - 2 9 1 1 2. - 1 - <_> - - <_> - 11 5 2 1 -1. - <_> - 11 5 1 1 2. - <_> - - <_> - 9 0 7 4 -1. - <_> - 8 1 7 2 2. - 1 - <_> - - <_> - 11 4 2 2 -1. - <_> - 11 4 1 2 2. - <_> - - <_> - 5 4 2 2 -1. - <_> - 6 4 1 2 2. - <_> - - <_> - 7 4 6 3 -1. - <_> - 9 5 2 1 9. - <_> - - <_> - 5 4 4 7 -1. - <_> - 6 4 2 7 2. - <_> - - <_> - 17 0 1 4 -1. - <_> - 17 2 1 2 2. - <_> - - <_> - 4 3 8 4 -1. - <_> - 4 3 8 2 2. - 1 - <_> - - <_> - 9 7 4 2 -1. - <_> - 9 7 2 2 2. - 1 - <_> - - <_> - 7 8 3 2 -1. - <_> - 7 8 3 1 2. - 1 - <_> - - <_> - 8 3 6 9 -1. - <_> - 10 6 2 3 9. - <_> - - <_> - 7 4 4 6 -1. - <_> - 7 4 2 3 2. - <_> - 9 7 2 3 2. - <_> - - <_> - 16 1 2 1 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 17 0 1 4 -1. - <_> - 17 2 1 2 2. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 2 1 2 2. - <_> - - <_> - 13 3 4 10 -1. - <_> - 13 3 2 10 2. - <_> - - <_> - 3 0 2 2 -1. - <_> - 3 0 1 1 2. - <_> - 4 1 1 1 2. - <_> - - <_> - 0 0 18 6 -1. - <_> - 0 3 18 3 2. - <_> - - <_> - 4 3 2 6 -1. - <_> - 4 5 2 2 3. - <_> - - <_> - 14 3 1 6 -1. - <_> - 12 5 1 2 3. - 1 - <_> - - <_> - 9 0 8 4 -1. - <_> - 11 2 4 4 2. - 1 - <_> - - <_> - 12 4 2 2 -1. - <_> - 12 5 2 1 2. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 14 0 2 15 -1. - <_> - 14 0 1 15 2. - <_> - - <_> - 2 0 2 15 -1. - <_> - 3 0 1 15 2. - <_> - - <_> - 11 1 6 6 -1. - <_> - 11 1 3 6 2. - <_> - - <_> - 8 7 3 1 -1. - <_> - 9 8 1 1 3. - 1 - <_> - - <_> - 13 9 3 3 -1. - <_> - 14 10 1 1 9. - <_> - - <_> - 0 5 16 6 -1. - <_> - 4 5 8 6 2. - <_> - - <_> - 4 0 12 15 -1. - <_> - 7 0 6 15 2. - <_> - - <_> - 0 5 16 10 -1. - <_> - 8 5 8 10 2. - <_> - - <_> - 9 9 1 3 -1. - <_> - 8 10 1 1 3. - 1 - <_> - - <_> - 9 9 3 1 -1. - <_> - 10 10 1 1 3. - 1 - <_> - - <_> - 13 0 5 10 -1. - <_> - 13 5 5 5 2. - <_> - - <_> - 2 6 14 3 -1. - <_> - 2 7 14 1 3. - <_> - - <_> - 6 6 6 3 -1. - <_> - 8 7 2 1 9. - <_> - - <_> - 0 6 3 4 -1. - <_> - 0 7 3 2 2. - <_> - - <_> - 12 11 1 2 -1. - <_> - 12 12 1 1 2. - <_> - - <_> - 5 11 1 2 -1. - <_> - 5 12 1 1 2. - <_> - - <_> - 13 9 3 3 -1. - <_> - 14 10 1 1 9. - <_> - - <_> - 0 3 12 11 -1. - <_> - 3 3 6 11 2. - <_> - - <_> - 7 12 9 3 -1. - <_> - 10 12 3 3 3. - <_> - - <_> - 3 8 2 6 -1. - <_> - 3 10 2 2 3. - <_> - - <_> - 12 3 6 12 -1. - <_> - 12 9 6 6 2. - <_> - - <_> - 2 13 12 2 -1. - <_> - 8 13 6 2 2. - <_> - - <_> - 8 12 8 3 -1. - <_> - 8 12 4 3 2. - <_> - - <_> - 2 12 8 3 -1. - <_> - 6 12 4 3 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 1 2 2. - 1 - <_> - - <_> - 5 4 2 2 -1. - <_> - 5 4 1 1 2. - <_> - 6 5 1 1 2. - <_> - - <_> - 11 0 2 4 -1. - <_> - 11 1 2 2 2. - <_> - - <_> - 8 0 2 2 -1. - <_> - 8 0 2 1 2. - 1 - <_> - - <_> - 5 0 8 4 -1. - <_> - 7 0 4 4 2. - <_> - - <_> - 3 1 12 1 -1. - <_> - 6 1 6 1 2. - <_> - - <_> - 10 3 6 4 -1. - <_> - 10 3 3 4 2. - <_> - - <_> - 2 3 6 4 -1. - <_> - 5 3 3 4 2. - <_> - - <_> - 1 2 16 13 -1. - <_> - 5 2 8 13 2. - <_> - - <_> - 1 0 2 2 -1. - <_> - 1 0 1 1 2. - <_> - 2 1 1 1 2. - <_> - - <_> - 15 0 2 2 -1. - <_> - 16 0 1 1 2. - <_> - 15 1 1 1 2. - <_> - - <_> - 1 0 2 2 -1. - <_> - 1 0 1 1 2. - <_> - 2 1 1 1 2. - <_> - - <_> - 10 8 8 7 -1. - <_> - 12 8 4 7 2. - <_> - - <_> - 0 8 8 7 -1. - <_> - 2 8 4 7 2. - <_> - - <_> - 11 8 6 3 -1. - <_> - 13 9 2 1 9. - <_> - - <_> - 1 8 6 3 -1. - <_> - 3 9 2 1 9. - <_> - - <_> - 1 0 16 12 -1. - <_> - 1 6 16 6 2. - <_> - - <_> - 9 0 5 4 -1. - <_> - 9 0 5 2 2. - 1 - <_> - - <_> - 7 0 4 10 -1. - <_> - 7 0 2 10 2. - <_> - - <_> - 7 4 3 2 -1. - <_> - 8 5 1 2 3. - 1 - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 0 6 9 3 -1. - <_> - 3 7 3 1 9. - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 4 7 2 2 -1. - <_> - 4 7 1 1 2. - <_> - 5 8 1 1 2. - <_> - - <_> - 5 7 8 2 -1. - <_> - 9 7 4 1 2. - <_> - 5 8 4 1 2. - <_> - - <_> - 6 4 3 9 -1. - <_> - 7 4 1 9 3. - <_> - - <_> - 12 4 3 7 -1. - <_> - 13 4 1 7 3. - <_> - - <_> - 3 4 3 7 -1. - <_> - 4 4 1 7 3. - <_> - - <_> - 4 12 10 3 -1. - <_> - 4 13 10 1 3. - <_> - - <_> - 4 13 8 2 -1. - <_> - 4 14 8 1 2. - <_> - - <_> - 13 3 5 12 -1. - <_> - 13 6 5 6 2. - <_> - - <_> - 0 0 6 8 -1. - <_> - 0 2 6 4 2. - <_> - - <_> - 14 5 3 3 -1. - <_> - 13 6 3 1 3. - 1 - <_> - - <_> - 4 5 3 3 -1. - <_> - 5 6 1 3 3. - 1 - <_> - - <_> - 17 0 1 3 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 9 4 3 4 -1. - <_> - 8 5 3 2 2. - 1 - <_> - - <_> - 7 3 6 2 -1. - <_> - 7 3 3 2 2. - <_> - - <_> - 9 0 9 2 -1. - <_> - 12 3 3 2 3. - 1 - <_> - - <_> - 7 3 6 2 -1. - <_> - 7 3 3 2 2. - <_> - - <_> - 5 3 6 2 -1. - <_> - 8 3 3 2 2. - <_> - - <_> - 13 3 5 12 -1. - <_> - 13 6 5 6 2. - <_> - - <_> - 0 3 5 12 -1. - <_> - 0 6 5 6 2. - <_> - - <_> - 4 14 10 1 -1. - <_> - 4 14 5 1 2. - <_> - - <_> - 2 12 9 3 -1. - <_> - 5 12 3 3 3. - <_> - - <_> - 2 9 14 4 -1. - <_> - 2 11 14 2 2. - <_> - - <_> - 0 2 18 8 -1. - <_> - 0 4 18 4 2. - <_> - - <_> - 7 6 6 3 -1. - <_> - 9 7 2 1 9. - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 10 0 1 1 2. - <_> - 9 1 1 1 2. - <_> - - <_> - 7 0 1 3 -1. - <_> - 7 1 1 1 3. - <_> - - <_> - 4 0 11 3 -1. - <_> - 4 1 11 1 3. - <_> - - <_> - 0 9 10 6 -1. - <_> - 0 9 5 3 2. - <_> - 5 12 5 3 2. - <_> - - <_> - 0 4 18 9 -1. - <_> - 6 4 6 9 3. - <_> - - <_> - 2 4 12 9 -1. - <_> - 6 7 4 3 9. - <_> - - <_> - 6 7 6 6 -1. - <_> - 6 10 6 3 2. - <_> - - <_> - 0 9 3 6 -1. - <_> - 0 12 3 3 2. - <_> - - <_> - 8 8 3 2 -1. - <_> - 8 9 3 1 2. - <_> - - <_> - 4 4 10 2 -1. - <_> - 4 5 10 1 2. - <_> - - <_> - 8 2 5 3 -1. - <_> - 8 3 5 1 3. - <_> - - <_> - 8 13 2 2 -1. - <_> - 8 13 1 1 2. - <_> - 9 14 1 1 2. - <_> - - <_> - 14 0 2 2 -1. - <_> - 14 0 1 2 2. - 1 - <_> - - <_> - 4 4 3 2 -1. - <_> - 4 5 3 1 2. - <_> - - <_> - 1 5 16 4 -1. - <_> - 1 7 16 2 2. - <_> - - <_> - 4 6 1 2 -1. - <_> - 4 7 1 1 2. - <_> - - <_> - 16 11 2 2 -1. - <_> - 17 11 1 1 2. - <_> - 16 12 1 1 2. - <_> - - <_> - 0 11 2 2 -1. - <_> - 0 11 1 1 2. - <_> - 1 12 1 1 2. - <_> - - <_> - 16 12 2 1 -1. - <_> - 16 12 1 1 2. - <_> - - <_> - 0 12 2 1 -1. - <_> - 1 12 1 1 2. - <_> - - <_> - 0 7 18 6 -1. - <_> - 0 9 18 2 3. - <_> - - <_> - 4 2 7 12 -1. - <_> - 4 5 7 6 2. - <_> - - <_> - 7 6 6 3 -1. - <_> - 9 7 2 1 9. - <_> - - <_> - 5 6 6 3 -1. - <_> - 7 7 2 1 9. - <_> - - <_> - 12 3 6 6 -1. - <_> - 12 3 6 3 2. - 1 - <_> - - <_> - 6 3 6 6 -1. - <_> - 6 3 3 6 2. - 1 - <_> - - <_> - 4 2 12 9 -1. - <_> - 8 2 4 9 3. - <_> - - <_> - 1 7 3 1 -1. - <_> - 2 7 1 1 3. - <_> - - <_> - 14 0 2 2 -1. - <_> - 14 0 1 2 2. - 1 - <_> - - <_> - 2 2 12 9 -1. - <_> - 6 2 4 9 3. - <_> - - <_> - 9 1 1 4 -1. - <_> - 8 2 1 2 2. - 1 - <_> - - <_> - 2 0 12 1 -1. - <_> - 5 0 6 1 2. - <_> - - <_> - 11 0 4 1 -1. - <_> - 11 0 2 1 2. - 1 - <_> - - <_> - 9 0 4 1 -1. - <_> - 9 0 2 1 2. - 1 - <_> - - <_> - 9 3 2 1 -1. - <_> - 9 3 1 1 2. - <_> - - <_> - 7 3 2 1 -1. - <_> - 8 3 1 1 2. - <_> - - <_> - 9 2 8 4 -1. - <_> - 9 2 4 4 2. - 1 - <_> - - <_> - 0 3 18 1 -1. - <_> - 9 3 9 1 2. - <_> - - <_> - 13 13 2 2 -1. - <_> - 13 13 1 2 2. - <_> - - <_> - 7 0 1 4 -1. - <_> - 7 0 1 2 2. - 1 - <_> - - <_> - 16 7 2 4 -1. - <_> - 16 8 2 2 2. - <_> - - <_> - 0 7 2 4 -1. - <_> - 0 8 2 2 2. - <_> - - <_> - 9 13 3 2 -1. - <_> - 10 13 1 2 3. - <_> - - <_> - 6 13 3 2 -1. - <_> - 7 13 1 2 3. - <_> - - <_> - 13 13 2 2 -1. - <_> - 13 13 1 2 2. - <_> - - <_> - 3 13 2 2 -1. - <_> - 4 13 1 2 2. - <_> - - <_> - 10 11 6 4 -1. - <_> - 12 11 2 4 3. - <_> - - <_> - 2 11 6 4 -1. - <_> - 4 11 2 4 3. - <_> - - <_> - 0 11 18 3 -1. - <_> - 6 11 6 3 3. - <_> - - <_> - 6 13 4 1 -1. - <_> - 7 13 2 1 2. - <_> - - <_> - 7 9 4 3 -1. - <_> - 7 10 4 1 3. - <_> - - <_> - 5 5 4 9 -1. - <_> - 5 8 4 3 3. - <_> - - <_> - 13 5 2 8 -1. - <_> - 11 7 2 4 2. - 1 - <_> - - <_> - 6 8 2 2 -1. - <_> - 6 8 1 1 2. - <_> - 7 9 1 1 2. - <_> - - <_> - 9 1 1 4 -1. - <_> - 8 2 1 2 2. - 1 - <_> - - <_> - 9 1 4 1 -1. - <_> - 10 2 2 1 2. - 1 - <_> - - <_> - 6 2 6 9 -1. - <_> - 6 5 6 3 3. - <_> - - <_> - 9 6 1 6 -1. - <_> - 7 8 1 2 3. - 1 - <_> - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - <_> - - <_> - 6 7 3 2 -1. - <_> - 7 7 1 2 3. - <_> - - <_> - 12 4 2 6 -1. - <_> - 10 6 2 2 3. - 1 - <_> - - <_> - 6 4 6 2 -1. - <_> - 8 6 2 2 3. - 1 - <_> - - <_> - 0 5 18 6 -1. - <_> - 0 7 18 2 3. - <_> - - <_> - 7 6 4 2 -1. - <_> - 7 7 4 1 2. - <_> - - <_> - 12 6 6 9 -1. - <_> - 14 9 2 3 9. - <_> - - <_> - 4 6 10 3 -1. - <_> - 4 7 10 1 3. - <_> - - <_> - 13 3 4 8 -1. - <_> - 13 5 4 4 2. - <_> - - <_> - 0 4 11 2 -1. - <_> - 0 5 11 1 2. - <_> - - <_> - 16 5 2 2 -1. - <_> - 16 5 1 2 2. - <_> - - <_> - 0 5 2 2 -1. - <_> - 1 5 1 2 2. - <_> - - <_> - 16 0 2 13 -1. - <_> - 16 0 1 13 2. - <_> - - <_> - 0 0 2 13 -1. - <_> - 1 0 1 13 2. - <_> - - <_> - 6 1 9 3 -1. - <_> - 9 1 3 3 3. - <_> - - <_> - 9 2 4 8 -1. - <_> - 9 2 4 4 2. - 1 - <_> - - <_> - 3 1 12 9 -1. - <_> - 3 4 12 3 3. - <_> - - <_> - 0 10 8 3 -1. - <_> - 0 11 8 1 3. - <_> - - <_> - 0 11 18 4 -1. - <_> - 9 11 9 2 2. - <_> - 0 13 9 2 2. - <_> - - <_> - 5 5 2 4 -1. - <_> - 4 6 2 2 2. - 1 - <_> - - <_> - 8 0 3 6 -1. - <_> - 9 2 1 2 9. - <_> - - <_> - 6 1 4 2 -1. - <_> - 6 1 4 1 2. - 1 - <_> - - <_> - 13 12 2 3 -1. - <_> - 13 13 2 1 3. - <_> - - <_> - 6 0 4 8 -1. - <_> - 6 0 2 4 2. - <_> - 8 4 2 4 2. - <_> - - <_> - 10 2 6 2 -1. - <_> - 10 2 3 2 2. - <_> - - <_> - 2 2 6 2 -1. - <_> - 5 2 3 2 2. - <_> - - <_> - 13 0 4 3 -1. - <_> - 14 0 2 3 2. - <_> - - <_> - 2 3 5 2 -1. - <_> - 2 4 5 1 2. - <_> - - <_> - 13 0 3 11 -1. - <_> - 14 1 1 11 3. - 1 - <_> - - <_> - 5 0 11 3 -1. - <_> - 4 1 11 1 3. - 1 - <_> - - <_> - 11 0 2 12 -1. - <_> - 12 0 1 6 2. - <_> - 11 6 1 6 2. - <_> - - <_> - 5 0 2 12 -1. - <_> - 5 0 1 6 2. - <_> - 6 6 1 6 2. - <_> - - <_> - 11 5 2 4 -1. - <_> - 11 5 1 4 2. - 1 - <_> - - <_> - 1 3 3 12 -1. - <_> - 1 7 3 4 3. - <_> - - <_> - 11 5 2 4 -1. - <_> - 11 5 1 4 2. - 1 - <_> - - <_> - 7 5 4 2 -1. - <_> - 7 5 4 1 2. - 1 - <_> - - <_> - 13 0 5 10 -1. - <_> - 13 5 5 5 2. - <_> - - <_> - 0 1 6 8 -1. - <_> - 0 5 6 4 2. - <_> - - <_> - 14 7 4 2 -1. - <_> - 14 8 4 1 2. - <_> - - <_> - 0 7 4 2 -1. - <_> - 0 8 4 1 2. - <_> - - <_> - 14 3 3 8 -1. - <_> - 14 5 3 4 2. - <_> - - <_> - 1 3 3 8 -1. - <_> - 1 5 3 4 2. - <_> - - <_> - 11 3 4 10 -1. - <_> - 12 3 2 10 2. - <_> - - <_> - 3 3 4 10 -1. - <_> - 4 3 2 10 2. - <_> - - <_> - 11 2 4 7 -1. - <_> - 12 2 2 7 2. - <_> - - <_> - 3 2 4 7 -1. - <_> - 4 2 2 7 2. - <_> - - <_> - 13 7 2 2 -1. - <_> - 14 7 1 1 2. - <_> - 13 8 1 1 2. - <_> - - <_> - 3 7 2 2 -1. - <_> - 3 7 1 1 2. - <_> - 4 8 1 1 2. - <_> - - <_> - 14 0 2 2 -1. - <_> - 14 0 1 2 2. - 1 - <_> - - <_> - 4 0 2 2 -1. - <_> - 4 0 2 1 2. - 1 - <_> - - <_> - 12 4 2 2 -1. - <_> - 13 4 1 1 2. - <_> - 12 5 1 1 2. - <_> - - <_> - 5 1 8 14 -1. - <_> - 5 1 4 7 2. - <_> - 9 8 4 7 2. - <_> - - <_> - 13 0 5 10 -1. - <_> - 13 5 5 5 2. - <_> - - <_> - 1 4 16 4 -1. - <_> - 1 6 16 2 2. - diff --git a/data/haarcascades/haarcascade_mcs_rightear.xml b/data/haarcascades/haarcascade_mcs_rightear.xml deleted file mode 100644 index 61adf1692d..0000000000 --- a/data/haarcascades/haarcascade_mcs_rightear.xml +++ /dev/null @@ -1,7931 +0,0 @@ - - - -BOOST - HAAR - 12 - 20 - - 61 - - 0 - 20 - - <_> - 7 - -1.3802499771118164e+00 - - <_> - - 0 -1 0 -1.2393590062856674e-01 - - 8.2578802108764648e-01 -6.7602032423019409e-01 - <_> - - 0 -1 1 9.4228880479931831e-03 - - -1.2722210586071014e-01 3.3211699128150940e-01 - <_> - - 0 -1 2 -1.1084940284490585e-02 - - 5.6749510765075684e-01 -5.6716197729110718e-01 - <_> - - 0 -1 3 -2.0189690589904785e-01 - - -7.6717972755432129e-01 1.9637049734592438e-01 - <_> - - 0 -1 4 -4.7402849304489791e-05 - - 3.8455748558044434e-01 -6.7010718584060669e-01 - <_> - - 0 -1 5 -8.6445426568388939e-03 - - -6.9345837831497192e-01 1.0593380033969879e-01 - <_> - - 0 -1 6 5.0770420784829184e-05 - - -6.8352818489074707e-01 3.5795739293098450e-01 - <_> - 9 - -1.4652169942855835e+00 - - <_> - - 0 -1 7 -1.8316349387168884e-01 - - 7.8830862045288086e-01 -5.8876812458038330e-01 - <_> - - 0 -1 8 2.5380790233612061e-02 - - -7.4764448404312134e-01 4.1486009955406189e-01 - <_> - - 0 -1 9 1.4207419939339161e-02 - - -7.8411531448364258e-01 2.7354270219802856e-01 - <_> - - 0 -1 10 8.6809601634740829e-03 - - -1.0974329710006714e-01 9.4718709588050842e-02 - <_> - - 0 -1 11 -4.1219559498131275e-03 - - 3.1739580631256104e-01 -5.4334312677383423e-01 - <_> - - 0 -1 12 -1.1700070463120937e-02 - - 3.9653539657592773e-01 -3.7434050440788269e-01 - <_> - - 0 -1 13 2.8762829303741455e-01 - - -1.7733460664749146e-01 8.8516682386398315e-01 - <_> - - 0 -1 14 -4.8463501036167145e-02 - - -6.0947227478027344e-01 1.3633400201797485e-01 - <_> - - 0 -1 15 7.6523773372173309e-02 - - -2.9950559139251709e-01 6.1522072553634644e-01 - <_> - 18 - -2.0372869968414307e+00 - - <_> - - 0 -1 16 1.1777380108833313e-01 - - -5.8754861354827881e-01 6.1994218826293945e-01 - <_> - - 0 -1 17 2.9533330351114273e-02 - - -4.2420691251754761e-01 3.6524820327758789e-01 - <_> - - 0 -1 18 6.1603458598256111e-03 - - -7.9607379436492920e-01 3.2861700654029846e-01 - <_> - - 0 -1 19 -5.9753831010311842e-05 - - 1.0398519784212112e-01 -4.5819509029388428e-01 - <_> - - 0 -1 20 -3.6190438549965620e-04 - - 5.3506380319595337e-01 -6.4719748497009277e-01 - <_> - - 0 -1 21 2.0906500518321991e-02 - - -1.6793949902057648e-01 2.4539050459861755e-01 - <_> - - 0 -1 22 8.2527771592140198e-03 - - -8.5986042022705078e-01 2.2863869369029999e-01 - <_> - - 0 -1 23 5.9341029264032841e-03 - - -4.6319939196109772e-02 -6.0758531093597412e-01 - <_> - - 0 -1 24 1.8554080452304333e-04 - - -5.7996147871017456e-01 3.7694430351257324e-01 - <_> - - 0 -1 25 -7.2531788609921932e-03 - - -5.6681227684020996e-01 -1.9910290837287903e-02 - <_> - - 0 -1 26 4.0826769691193476e-05 - - -6.2813758850097656e-01 4.0546119213104248e-01 - <_> - - 0 -1 27 -1.0268500074744225e-02 - - 4.5032399892807007e-01 -2.7399060130119324e-01 - <_> - - 0 -1 28 -3.5408639814704657e-03 - - 3.4393149614334106e-01 -6.7639619112014771e-01 - <_> - - 0 -1 29 -6.9421626627445221e-02 - - 6.5173202753067017e-01 -7.4326410889625549e-02 - <_> - - 0 -1 30 7.1986039984039962e-05 - - -4.5737218856811523e-01 3.0109271407127380e-01 - <_> - - 0 -1 31 6.3741732446942478e-05 - - -5.5820369720458984e-01 1.9148319959640503e-01 - <_> - - 0 -1 32 4.4920871005160734e-05 - - -5.7379388809204102e-01 2.1276189386844635e-01 - <_> - - 0 -1 33 1.3159319758415222e-01 - - -2.2754240036010742e-01 2.8766331076622009e-01 - <_> - 13 - -1.5061739683151245e+00 - - <_> - - 0 -1 34 -1.5496319532394409e-01 - - 7.2985649108886719e-01 -5.9489607810974121e-01 - <_> - - 0 -1 35 8.4833214059472084e-03 - - 1.3606220483779907e-01 -4.3773031234741211e-01 - <_> - - 0 -1 36 -3.2831680029630661e-02 - - 6.7158091068267822e-01 -2.8739199042320251e-01 - <_> - - 0 -1 37 -2.8853790834546089e-02 - - 4.5923650264739990e-01 -4.9327030777931213e-02 - <_> - - 0 -1 38 1.7052419483661652e-01 - - -1.6527549922466278e-01 8.4507262706756592e-01 - <_> - - 0 -1 39 1.0879129916429520e-01 - - -2.8913050889968872e-01 5.3111201524734497e-01 - <_> - - 0 -1 40 3.0960019212216139e-03 - - -5.5323868989944458e-01 2.6134639978408813e-01 - <_> - - 0 -1 41 -3.3618099987506866e-02 - - 2.2911429405212402e-01 -5.5924427509307861e-01 - <_> - - 0 -1 42 -1.1074040085077286e-03 - - -6.3096380233764648e-01 1.5855440497398376e-01 - <_> - - 0 -1 43 -4.4385627843439579e-03 - - -6.3817399740219116e-01 1.2779480218887329e-01 - <_> - - 0 -1 44 -9.4127003103494644e-03 - - 3.5108420252799988e-01 -3.4738400578498840e-01 - <_> - - 0 -1 45 -3.2499480992555618e-02 - - 6.7672997713088989e-01 -5.5984470993280411e-02 - <_> - - 0 -1 46 -1.3464169576764107e-02 - - -7.5412607192993164e-01 1.5986099839210510e-01 - <_> - 17 - -1.5266020298004150e+00 - - <_> - - 0 -1 47 -1.8050560355186462e-01 - - 7.1835839748382568e-01 -5.2469527721405029e-01 - <_> - - 0 -1 48 -1.5271560288965702e-02 - - 3.2215949892997742e-01 -1.5855640172958374e-01 - <_> - - 0 -1 49 -3.4879799932241440e-02 - - 3.2105189561843872e-01 -5.3338629007339478e-01 - <_> - - 0 -1 50 -3.1743600964546204e-02 - - 4.1040870547294617e-01 -3.7935909628868103e-01 - <_> - - 0 -1 51 4.8427619040012360e-03 - - -6.9584208726882935e-01 2.4080069363117218e-01 - <_> - - 0 -1 52 4.9639631062746048e-02 - - 8.0581977963447571e-03 -5.4770648479461670e-01 - <_> - - 0 -1 53 1.1154930293560028e-01 - - -2.4036459624767303e-01 5.6387817859649658e-01 - <_> - - 0 -1 54 -2.6947790756821632e-02 - - -4.5162969827651978e-01 6.0060828924179077e-02 - <_> - - 0 -1 55 -4.9296129494905472e-02 - - 8.3912831544876099e-01 -1.8871270120143890e-01 - <_> - - 0 -1 56 2.8315439820289612e-02 - - 6.9766468368470669e-03 1.8534269928932190e-01 - <_> - - 0 -1 57 3.3421538770198822e-02 - - -3.1101679801940918e-01 4.0044930577278137e-01 - <_> - - 0 -1 58 -6.2644667923450470e-03 - - -4.4615790247917175e-01 6.6276572644710541e-02 - <_> - - 0 -1 59 2.5548560079187155e-03 - - 1.3413320481777191e-01 -7.4927258491516113e-01 - <_> - - 0 -1 60 2.9710179194808006e-02 - - 6.1377300880849361e-04 -7.7615362405776978e-01 - <_> - - 0 -1 61 -4.1485700756311417e-02 - - 5.9405767917633057e-01 -1.6889290511608124e-01 - <_> - - 0 -1 62 1.2231590226292610e-02 - - 5.1312480121850967e-02 -7.5303572416305542e-01 - <_> - - 0 -1 63 -4.3153190053999424e-03 - - -6.4812111854553223e-01 1.3281610608100891e-01 - <_> - 17 - -1.4295140504837036e+00 - - <_> - - 0 -1 64 1.1714699864387512e-01 - - -5.1155489683151245e-01 5.4587250947952271e-01 - <_> - - 0 -1 65 5.2537951618432999e-02 - - -2.6988661289215088e-01 3.4098041057586670e-01 - <_> - - 0 -1 66 -1.9980749115347862e-02 - - 3.5662230849266052e-01 -4.4640049338340759e-01 - <_> - - 0 -1 67 -1.2166350334882736e-01 - - 4.5662569999694824e-01 -6.7647598683834076e-02 - <_> - - 0 -1 68 1.6176940873265266e-02 - - -4.8407769203186035e-01 2.5647491216659546e-01 - <_> - - 0 -1 69 -1.2731030583381653e-01 - - 7.8568279743194580e-01 -7.6182372868061066e-02 - <_> - - 0 -1 70 -3.7296859081834555e-03 - - 2.7144059538841248e-01 -4.8822438716888428e-01 - <_> - - 0 -1 71 -1.7392159998416901e-01 - - 7.3156762123107910e-01 -4.0217950940132141e-02 - <_> - - 0 -1 72 -9.4516716897487640e-02 - - 4.9297851324081421e-01 -2.1850970387458801e-01 - <_> - - 0 -1 73 7.9759500920772552e-02 - - -1.0667549818754196e-01 2.1722890436649323e-01 - <_> - - 0 -1 74 2.9159070923924446e-02 - - 1.5513190627098083e-01 -7.9432719945907593e-01 - <_> - - 0 -1 75 6.8567609414458275e-03 - - -7.7142190933227539e-01 1.0970850288867950e-01 - <_> - - 0 -1 76 2.6352910790592432e-03 - - 9.6235923469066620e-02 -7.4925291538238525e-01 - <_> - - 0 -1 77 -4.1161300614476204e-03 - - 1.7448060214519501e-01 -4.6480000019073486e-01 - <_> - - 0 -1 78 -2.7307260315865278e-03 - - -5.8561611175537109e-01 1.1779639869928360e-01 - <_> - - 0 -1 79 -1.9059289246797562e-02 - - -6.8809962272644043e-01 1.0283970087766647e-01 - <_> - - 0 -1 80 -2.9182219877839088e-03 - - -6.6901868581771851e-01 8.3721928298473358e-02 - <_> - 26 - -1.5588049888610840e+00 - - <_> - - 0 -1 81 8.1108748912811279e-02 - - -3.9180481433868408e-01 5.3625607490539551e-01 - <_> - - 0 -1 82 9.1598061844706535e-03 - - -4.6528929471969604e-01 3.3383831381797791e-01 - <_> - - 0 -1 83 8.0795027315616608e-04 - - -7.5230997800827026e-01 1.4381100237369537e-01 - <_> - - 0 -1 84 2.4406640231609344e-01 - - -2.2846619784832001e-01 5.0088721513748169e-01 - <_> - - 0 -1 85 9.9084907560609281e-05 - - -4.9552011489868164e-01 2.3163549602031708e-01 - <_> - - 0 -1 86 -1.6304260492324829e-01 - - 8.0807077884674072e-01 -1.4503139257431030e-01 - <_> - - 0 -1 87 9.9489316344261169e-03 - - -1.3804569840431213e-01 6.0897988080978394e-01 - <_> - - 0 -1 88 7.6701432466506958e-02 - - 3.7772629410028458e-02 -5.3447282314300537e-01 - <_> - - 0 -1 89 4.7309949994087219e-02 - - -3.6191630363464355e-01 2.8269779682159424e-01 - <_> - - 0 -1 90 -2.2022439166903496e-02 - - -5.2068692445755005e-01 9.4968706369400024e-02 - <_> - - 0 -1 91 1.3980070129036903e-02 - - 1.1217589676380157e-01 -6.8278092145919800e-01 - <_> - - 0 -1 92 -6.6961131989955902e-02 - - 8.7730789184570312e-01 -2.7844179421663284e-02 - <_> - - 0 -1 93 1.1592600494623184e-03 - - -3.4661638736724854e-01 2.0498119294643402e-01 - <_> - - 0 -1 94 1.9640380516648293e-02 - - -1.2608189880847931e-01 2.8791791200637817e-01 - <_> - - 0 -1 95 -1.0507949627935886e-02 - - -6.1253058910369873e-01 1.2488999962806702e-01 - <_> - - 0 -1 96 1.7976740375161171e-02 - - -1.2991739809513092e-01 1.4235779643058777e-01 - <_> - - 0 -1 97 -3.1597379595041275e-02 - - 3.3326789736747742e-01 -2.4774129688739777e-01 - <_> - - 0 -1 98 -1.8917859997600317e-03 - - -5.3087908029556274e-01 8.8928163051605225e-02 - <_> - - 0 -1 99 -1.7453400418162346e-02 - - -6.4604520797729492e-01 1.1086379736661911e-01 - <_> - - 0 -1 100 1.0619490407407284e-02 - - 1.4190349727869034e-02 -2.1650099754333496e-01 - <_> - - 0 -1 101 -1.1998750269412994e-03 - - -6.4023351669311523e-01 1.0543160140514374e-01 - <_> - - 0 -1 102 9.0056620538234711e-03 - - 6.6442847251892090e-02 -3.8506388664245605e-01 - <_> - - 0 -1 103 -3.1365811824798584e-02 - - 4.9019768834114075e-01 -1.3340839743614197e-01 - <_> - - 0 -1 104 8.8146664202213287e-03 - - -7.5805522501468658e-02 5.1142227649688721e-01 - <_> - - 0 -1 105 -2.4432060308754444e-03 - - -5.3494578599929810e-01 1.3186639547348022e-01 - <_> - - 0 -1 106 3.3595509827136993e-02 - - 1.8829340115189552e-02 -8.7616902589797974e-01 - <_> - 25 - -1.5198639631271362e+00 - - <_> - - 0 -1 107 -1.9901029765605927e-01 - - 4.1589239239692688e-01 -4.6403810381889343e-01 - <_> - - 0 -1 108 1.0957729537039995e-03 - - -2.7428150177001953e-01 2.1992009878158569e-01 - <_> - - 0 -1 109 3.5783050116151571e-03 - - -2.5449270009994507e-01 5.4316788911819458e-01 - <_> - - 0 -1 110 3.5569820553064346e-02 - - 4.2951688170433044e-02 -6.6588342189788818e-01 - <_> - - 0 -1 111 -3.8403531070798635e-03 - - 1.9703429937362671e-01 -5.4586201906204224e-01 - <_> - - 0 -1 112 3.9690821431577206e-03 - - -5.1554411649703979e-01 2.2360439598560333e-01 - <_> - - 0 -1 113 7.4965478852391243e-03 - - 1.5371499955654144e-01 -6.1535251140594482e-01 - <_> - - 0 -1 114 -8.9704096317291260e-03 - - 1.8355900049209595e-01 -2.8429880738258362e-01 - <_> - - 0 -1 115 -5.6080069392919540e-02 - - 7.7755087614059448e-01 -9.8359443247318268e-02 - <_> - - 0 -1 116 1.0908209718763828e-02 - - 6.3484668731689453e-02 -6.9791257381439209e-01 - <_> - - 0 -1 117 -9.8930671811103821e-03 - - 4.0726318955421448e-01 -2.5781801342964172e-01 - <_> - - 0 -1 118 1.8678830564022064e-01 - - -2.7086579799652100e-01 3.6147558689117432e-01 - <_> - - 0 -1 119 -9.4373157480731606e-04 - - -5.8118808269500732e-01 1.5266190469264984e-01 - <_> - - 0 -1 120 -2.6823019608855247e-02 - - 7.3039489984512329e-01 -5.7183459401130676e-02 - <_> - - 0 -1 121 -8.4266774356365204e-03 - - -6.9740217924118042e-01 1.1783199757337570e-01 - <_> - - 0 -1 122 4.4732030481100082e-02 - - -6.6901608370244503e-03 -3.9551690220832825e-01 - <_> - - 0 -1 123 1.9846759736537933e-02 - - -2.5491309165954590e-01 2.6959219574928284e-01 - <_> - - 0 -1 124 -1.1466080322861671e-03 - - -4.7784709930419922e-01 1.4147639274597168e-01 - <_> - - 0 -1 125 9.8631740547716618e-04 - - -2.9782509803771973e-01 2.1989880502223969e-01 - <_> - - 0 -1 126 -1.3526080548763275e-01 - - 7.3641002178192139e-01 -3.6679711192846298e-02 - <_> - - 0 -1 127 -1.4555889647454023e-03 - - -4.9741968512535095e-01 1.4351129531860352e-01 - <_> - - 0 -1 128 -1.3439180329442024e-02 - - 4.4307011365890503e-01 -6.1504751443862915e-02 - <_> - - 0 -1 129 5.8535612188279629e-03 - - 8.6272820830345154e-02 -6.9572478532791138e-01 - <_> - - 0 -1 130 -3.6728219129145145e-03 - - -2.4009980261325836e-01 7.2359912097454071e-02 - <_> - - 0 -1 131 2.8104060329496861e-03 - - -2.8405401110649109e-01 2.0643989741802216e-01 - <_> - 23 - -1.2744859457015991e+00 - - <_> - - 0 -1 132 1.6374010592699051e-02 - - -3.7089619040489197e-01 5.0737190246582031e-01 - <_> - - 0 -1 133 9.4187058508396149e-02 - - -3.1576469540596008e-01 4.0862488746643066e-01 - <_> - - 0 -1 134 1.1773589998483658e-02 - - -3.5064500570297241e-01 3.1217798590660095e-01 - <_> - - 0 -1 135 1.0922340303659439e-01 - - -1.2247060239315033e-01 2.5683128833770752e-01 - <_> - - 0 -1 136 -6.6653150133788586e-03 - - 2.3083719611167908e-01 -4.8135739564895630e-01 - <_> - - 0 -1 137 -4.5095751993358135e-03 - - 1.6601459681987762e-01 -1.2917369604110718e-01 - <_> - - 0 -1 138 -1.1136589571833611e-02 - - 3.8687920570373535e-01 -2.2618110477924347e-01 - <_> - - 0 -1 139 -1.5101970732212067e-01 - - 7.8407418727874756e-01 -5.6705389171838760e-02 - <_> - - 0 -1 140 3.5842441022396088e-02 - - -3.3353409171104431e-01 2.6884201169013977e-01 - <_> - - 0 -1 141 6.0237798839807510e-02 - - 6.6777043044567108e-02 -5.8397102355957031e-01 - <_> - - 0 -1 142 6.8902626633644104e-02 - - -3.2930138707160950e-01 2.3172050714492798e-01 - <_> - - 0 -1 143 -1.1977110058069229e-01 - - 7.2716677188873291e-01 -1.0525380074977875e-01 - <_> - - 0 -1 144 1.8936740234494209e-02 - - -1.3431450724601746e-01 5.6203877925872803e-01 - <_> - - 0 -1 145 8.3808198571205139e-02 - - -4.9557849764823914e-02 1.0450640320777893e-01 - <_> - - 0 -1 146 3.3902268856763840e-02 - - 9.9094279110431671e-02 -7.6239812374114990e-01 - <_> - - 0 -1 147 -8.1007126718759537e-03 - - -4.3555849790573120e-01 2.2304659709334373e-02 - <_> - - 0 -1 148 2.4974169209599495e-03 - - 9.3714617192745209e-02 -6.8376600742340088e-01 - <_> - - 0 -1 149 1.0426550172269344e-02 - - -1.1307760328054428e-01 4.3951630592346191e-01 - <_> - - 0 -1 150 -2.4919810239225626e-03 - - -4.9109318852424622e-01 1.2399309873580933e-01 - <_> - - 0 -1 151 -4.4614528305828571e-03 - - 3.4285509586334229e-01 -1.3288980722427368e-01 - <_> - - 0 -1 152 -6.9255861453711987e-03 - - 4.0674179792404175e-01 -1.4747169613838196e-01 - <_> - - 0 -1 153 1.4747819863259792e-02 - - -1.7921010032296181e-02 1.5927059948444366e-01 - <_> - - 0 -1 154 9.8200701177120209e-03 - - 8.6944580078125000e-02 -6.7220121622085571e-01 - <_> - 29 - -1.3562519550323486e+00 - - <_> - - 0 -1 155 3.0345980077981949e-02 - - -5.6813991069793701e-01 2.7571758627891541e-01 - <_> - - 0 -1 156 -4.5385681092739105e-02 - - -5.6568390130996704e-01 4.2446270585060120e-02 - <_> - - 0 -1 157 -2.4006670713424683e-01 - - 3.9162129163742065e-01 -3.0378338694572449e-01 - <_> - - 0 -1 158 -1.0817600414156914e-03 - - -7.0329940319061279e-01 1.1626099795103073e-01 - <_> - - 0 -1 159 -1.6060429625213146e-03 - - 2.2388499975204468e-01 -4.8557040095329285e-01 - <_> - - 0 -1 160 -1.0570240020751953e-01 - - -7.4889171123504639e-01 2.8992230072617531e-02 - <_> - - 0 -1 161 -2.3500300012528896e-03 - - 2.3428779840469360e-01 -4.2647179961204529e-01 - <_> - - 0 -1 162 -6.1817590147256851e-02 - - -8.9189022779464722e-01 -1.0216370224952698e-02 - <_> - - 0 -1 163 5.4469848982989788e-03 - - -2.6281470060348511e-01 3.1677961349487305e-01 - <_> - - 0 -1 164 -6.7602698691189289e-03 - - -7.9144752025604248e-01 1.2072199955582619e-02 - <_> - - 0 -1 165 7.8887082054279745e-05 - - -4.4443818926811218e-01 1.9887650012969971e-01 - <_> - - 0 -1 166 6.4817398786544800e-02 - - -2.3440040647983551e-01 2.8372839093208313e-01 - <_> - - 0 -1 167 2.9690501093864441e-01 - - -1.1379630118608475e-01 8.4734469652175903e-01 - <_> - - 0 -1 168 -1.2669449672102928e-02 - - -5.3791618347167969e-01 5.0364010035991669e-02 - <_> - - 0 -1 169 3.2963419798761606e-03 - - 9.5009326934814453e-02 -6.9295811653137207e-01 - <_> - - 0 -1 170 8.1940039992332458e-02 - - 6.4861620776355267e-03 -4.8242160677909851e-01 - <_> - - 0 -1 171 4.5874840579926968e-03 - - 7.4269242584705353e-02 -8.5056728124618530e-01 - <_> - - 0 -1 172 1.3228190131485462e-02 - - -1.8141390383243561e-01 5.5488282442092896e-01 - <_> - - 0 -1 173 8.3280639955773950e-05 - - -3.5342589020729065e-01 1.6182580590248108e-01 - <_> - - 0 -1 174 9.3232236802577972e-02 - - 3.6166220903396606e-02 -3.9560291171073914e-01 - <_> - - 0 -1 175 -1.7989000305533409e-02 - - 1.8585060536861420e-01 -2.9997050762176514e-01 - <_> - - 0 -1 176 8.5582181811332703e-02 - - -2.3212260566651821e-03 -7.5706237554550171e-01 - <_> - - 0 -1 177 1.4874819666147232e-02 - - -2.1825970709323883e-01 2.7366569638252258e-01 - <_> - - 0 -1 178 2.0184369757771492e-02 - - 3.5116590559482574e-02 -4.5619380474090576e-01 - <_> - - 0 -1 179 1.4273890294134617e-02 - - -1.2478730082511902e-01 6.1065578460693359e-01 - <_> - - 0 -1 180 2.6945620775222778e-02 - - -5.6217260658740997e-02 4.3960160017013550e-01 - <_> - - 0 -1 181 -1.4722250401973724e-02 - - -7.0504772663116455e-01 8.9823968708515167e-02 - <_> - - 0 -1 182 -3.9676232263445854e-03 - - -2.0258559286594391e-01 2.4594809859991074e-02 - <_> - - 0 -1 183 -6.9255158305168152e-02 - - 7.7862018346786499e-01 -8.2329802215099335e-02 - <_> - 34 - -1.4609309434890747e+00 - - <_> - - 0 -1 184 4.2280860245227814e-02 - - -4.3323940038681030e-01 3.1084230542182922e-01 - <_> - - 0 -1 185 3.2466039061546326e-02 - - -2.5457349419593811e-01 2.8453230857849121e-01 - <_> - - 0 -1 186 3.9204079657793045e-03 - - -2.4197019636631012e-01 3.8850378990173340e-01 - <_> - - 0 -1 187 1.4881529845297337e-02 - - -2.0224849879741669e-01 2.0803029835224152e-01 - <_> - - 0 -1 188 -4.8258059541694820e-04 - - 2.0644129812717438e-01 -4.6135428547859192e-01 - <_> - - 0 -1 189 1.0871110111474991e-01 - - -1.1968149803578854e-02 -8.3505737781524658e-01 - <_> - - 0 -1 190 1.1553530202945694e-04 - - -6.2181282043457031e-01 1.2894719839096069e-01 - <_> - - 0 -1 191 1.9984820391982794e-03 - - 1.2071420252323151e-01 -5.1865231990814209e-01 - <_> - - 0 -1 192 -1.9442409393377602e-04 - - 1.5316960215568542e-01 -4.6682178974151611e-01 - <_> - - 0 -1 193 3.4691508859395981e-02 - - 5.2325479686260223e-02 -5.6493771076202393e-01 - <_> - - 0 -1 194 1.2708869576454163e-01 - - -1.1623410135507584e-01 6.6390967369079590e-01 - <_> - - 0 -1 195 1.8425850570201874e-01 - - -2.9410699009895325e-01 2.7760609984397888e-01 - <_> - - 0 -1 196 -1.0079169645905495e-02 - - 2.0110170543193817e-01 -3.7747490406036377e-01 - <_> - - 0 -1 197 2.3211309686303139e-02 - - -1.5770949423313141e-01 4.1628879308700562e-01 - <_> - - 0 -1 198 -8.5837738588452339e-03 - - -6.4297300577163696e-01 9.1064400970935822e-02 - <_> - - 0 -1 199 3.0105128884315491e-01 - - 1.8554370850324631e-02 -3.6014398932456970e-01 - <_> - - 0 -1 200 5.5468631908297539e-03 - - 1.1459550261497498e-01 -5.0818997621536255e-01 - <_> - - 0 -1 201 -3.2614849042147398e-03 - - -6.5068858861923218e-01 7.1761913597583771e-02 - <_> - - 0 -1 202 -2.1482119336724281e-03 - - 1.3169400393962860e-01 -3.7837469577789307e-01 - <_> - - 0 -1 203 4.2770840227603912e-03 - - 4.9258850514888763e-02 -5.8316987752914429e-01 - <_> - - 0 -1 204 -2.8884320054203272e-03 - - 3.1445708870887756e-01 -1.6602359712123871e-01 - <_> - - 0 -1 205 -4.7958120703697205e-02 - - -7.2590202093124390e-01 1.5948530286550522e-02 - <_> - - 0 -1 206 2.6324709877371788e-02 - - 7.4111200869083405e-02 -6.6733390092849731e-01 - <_> - - 0 -1 207 1.3688339851796627e-02 - - 4.7244258224964142e-02 -3.2059279084205627e-01 - <_> - - 0 -1 208 1.5577600337564945e-02 - - -9.6644677221775055e-02 5.0794398784637451e-01 - <_> - - 0 -1 209 -8.4227044135332108e-03 - - -9.9238747358322144e-01 2.0270830020308495e-02 - <_> - - 0 -1 210 3.8861939683556557e-03 - - 7.3856048285961151e-02 -6.7188322544097900e-01 - <_> - - 0 -1 211 -3.3598121255636215e-02 - - -7.3445242643356323e-01 5.7080879807472229e-02 - <_> - - 0 -1 212 1.7251629382371902e-02 - - -1.3607659935951233e-01 4.2951139807701111e-01 - <_> - - 0 -1 213 -3.1715810298919678e-02 - - -7.4400889873504639e-01 3.3651608973741531e-02 - <_> - - 0 -1 214 1.0187040083110332e-02 - - -1.6512380540370941e-01 3.5162070393562317e-01 - <_> - - 0 -1 215 3.7060850299894810e-03 - - 6.8452596664428711e-02 -1.8737269937992096e-01 - <_> - - 0 -1 216 -9.5564024522900581e-03 - - -5.8053100109100342e-01 8.2600042223930359e-02 - <_> - - 0 -1 217 -1.4073489606380463e-01 - - -1. -6.1561721377074718e-03 - <_> - 43 - -1.4843599796295166e+00 - - <_> - - 0 -1 218 8.2872863858938217e-03 - - -3.3240118622779846e-01 4.0866941213607788e-01 - <_> - - 0 -1 219 -5.3943969309329987e-02 - - 2.7990311384201050e-01 -3.5782578587532043e-01 - <_> - - 0 -1 220 -1.1539819650352001e-02 - - 2.1358589828014374e-01 -4.5100399851799011e-01 - <_> - - 0 -1 221 -1.5745559707283974e-02 - - 2.1471889317035675e-01 -9.9175170063972473e-02 - <_> - - 0 -1 222 -1.3527829432860017e-03 - - 1.5119549632072449e-01 -5.2674210071563721e-01 - <_> - - 0 -1 223 -1.1468210257589817e-02 - - 1.3523469865322113e-01 -3.7286050617694855e-02 - <_> - - 0 -1 224 8.5535906255245209e-03 - - -2.5730869174003601e-01 2.4693550169467926e-01 - <_> - - 0 -1 225 5.6266319006681442e-02 - - -2.1571849286556244e-01 1.8734970688819885e-01 - <_> - - 0 -1 226 2.0349300466477871e-03 - - 8.9395299553871155e-02 -6.2484967708587646e-01 - <_> - - 0 -1 227 -1.0920839849859476e-03 - - -3.2366481423377991e-01 6.9054901599884033e-02 - <_> - - 0 -1 228 -5.1597058773040771e-02 - - 6.1383968591690063e-01 -9.5396347343921661e-02 - <_> - - 0 -1 229 1.7433969303965569e-02 - - -2.5729641318321228e-01 2.5275719165802002e-01 - <_> - - 0 -1 230 7.6819643378257751e-02 - - 8.7492428719997406e-02 -6.7382502555847168e-01 - <_> - - 0 -1 231 8.0648958683013916e-02 - - -5.7000648230314255e-02 4.2771929502487183e-01 - <_> - - 0 -1 232 7.0360638201236725e-03 - - -4.2870849370956421e-01 1.4574399590492249e-01 - <_> - - 0 -1 233 4.9487157957628369e-04 - - -4.4867759943008423e-01 8.7952293455600739e-02 - <_> - - 0 -1 234 -2.0319919567555189e-03 - - -6.9378471374511719e-01 7.9090960323810577e-02 - <_> - - 0 -1 235 1.5986919403076172e-02 - - -1.8177279829978943e-01 3.3544349670410156e-01 - <_> - - 0 -1 236 1.0031439887825400e-04 - - -2.8036159276962280e-01 1.8939669430255890e-01 - <_> - - 0 -1 237 -2.0664870738983154e-01 - - -7.0004421472549438e-01 6.2915571033954620e-02 - <_> - - 0 -1 238 1.0939550120383501e-03 - - -5.6122779846191406e-01 7.9117156565189362e-02 - <_> - - 0 -1 239 1.0714650154113770e-02 - - 3.6672711372375488e-02 -4.8171210289001465e-01 - <_> - - 0 -1 240 1.2993469834327698e-02 - - -1.3089600205421448e-01 3.2844379544258118e-01 - <_> - - 0 -1 241 5.4268362000584602e-03 - - 4.6886149793863297e-02 -5.8115488290786743e-01 - <_> - - 0 -1 242 1.0718739591538906e-02 - - 5.9297699481248856e-02 -6.6856807470321655e-01 - <_> - - 0 -1 243 -3.1285220757126808e-03 - - -3.5857740044593811e-01 2.8134709224104881e-02 - <_> - - 0 -1 244 5.2357040112838149e-04 - - -3.4198528528213501e-01 1.2199939787387848e-01 - <_> - - 0 -1 245 1.0644399560987949e-02 - - 3.9803087711334229e-03 -6.9705927371978760e-01 - <_> - - 0 -1 246 1.5901770442724228e-02 - - -7.6809287071228027e-02 5.2953928709030151e-01 - <_> - - 0 -1 247 -1.0395360179245472e-02 - - -6.4491081237792969e-01 1.0781600140035152e-02 - <_> - - 0 -1 248 3.7131321150809526e-03 - - 6.6979996860027313e-02 -6.2111258506774902e-01 - <_> - - 0 -1 249 2.3174570873379707e-02 - - 1.6732679679989815e-02 -4.5888119935989380e-01 - <_> - - 0 -1 250 1.1146579869091511e-02 - - -1.1638499796390533e-01 4.3002909421920776e-01 - <_> - - 0 -1 251 1.2715480290353298e-02 - - 1.6517929732799530e-02 -6.6795057058334351e-01 - <_> - - 0 -1 252 -1.2653400190174580e-02 - - 1.1365109682083130e-01 -3.7035998702049255e-01 - <_> - - 0 -1 253 -7.1139880456030369e-03 - - 1.7468209564685822e-01 -1.2769439816474915e-01 - <_> - - 0 -1 254 -1.3703290373086929e-02 - - 4.2330458760261536e-01 -9.5448397099971771e-02 - <_> - - 0 -1 255 7.5888428837060928e-03 - - -8.7192570790648460e-03 3.0307659506797791e-01 - <_> - - 0 -1 256 -5.7711452245712280e-04 - - -5.0375598669052124e-01 9.0188682079315186e-02 - <_> - - 0 -1 257 -6.1391671188175678e-03 - - -6.0663592815399170e-01 4.6589769423007965e-02 - <_> - - 0 -1 258 9.4300412456505001e-05 - - -2.6559790968894958e-01 1.5030109882354736e-01 - <_> - - 0 -1 259 -2.4399429559707642e-01 - - 6.4060389995574951e-01 -6.8897739052772522e-02 - <_> - - 0 -1 260 -1.2823240458965302e-01 - - 2.1190899610519409e-01 -2.7341139316558838e-01 - <_> - 42 - -1.4225620031356812e+00 - - <_> - - 0 -1 261 -9.8697589710354805e-03 - - 4.8807978630065918e-01 -2.6589471101760864e-01 - <_> - - 0 -1 262 3.3131919801235199e-02 - - 3.2597500830888748e-02 -6.3295251131057739e-01 - <_> - - 0 -1 263 1.7511799931526184e-02 - - -3.5473251342773438e-01 2.8011149168014526e-01 - <_> - - 0 -1 264 -7.3885500431060791e-02 - - 4.7378170490264893e-01 -1.1292530223727226e-02 - <_> - - 0 -1 265 1.8212760332971811e-03 - - -4.6179610490798950e-01 1.4266149699687958e-01 - <_> - - 0 -1 266 -8.5360601544380188e-02 - - -6.6754668951034546e-01 7.5132578611373901e-02 - <_> - - 0 -1 267 -2.7539798617362976e-01 - - 3.8147959113121033e-01 -2.3665140569210052e-01 - <_> - - 0 -1 268 3.0699970200657845e-02 - - 5.1691979169845581e-02 -2.4286730587482452e-01 - <_> - - 0 -1 269 -9.6332989633083344e-03 - - 3.3072310686111450e-01 -2.0818190276622772e-01 - <_> - - 0 -1 270 1.6330240294337273e-02 - - 3.4118140320060775e-05 -8.0960237979888916e-01 - <_> - - 0 -1 271 8.6133222794160247e-05 - - -3.7730661034584045e-01 1.3947279751300812e-01 - <_> - - 0 -1 272 -3.0760519206523895e-02 - - 6.7611587047576904e-01 -1.4665770344436169e-02 - <_> - - 0 -1 273 6.8717780523002148e-03 - - -1.6677060723304749e-01 3.0840030312538147e-01 - <_> - - 0 -1 274 1.7696250230073929e-02 - - 3.8468770682811737e-02 -5.9128028154373169e-01 - <_> - - 0 -1 275 1.4457659795880318e-02 - - 7.1180373430252075e-02 -6.8788748979568481e-01 - <_> - - 0 -1 276 4.4003669172525406e-03 - - -1.7107939720153809e-01 3.3334150910377502e-01 - <_> - - 0 -1 277 -1.9785019103437662e-03 - - -6.3402158021926880e-01 8.5248172283172607e-02 - <_> - - 0 -1 278 -3.5506778955459595e-01 - - 6.9163411855697632e-01 -8.7763786315917969e-02 - <_> - - 0 -1 279 1.2596770189702511e-02 - - -2.0116379857063293e-01 3.4040948748588562e-01 - <_> - - 0 -1 280 -2.3926040157675743e-03 - - -6.2525659799575806e-01 1.1060170084238052e-01 - <_> - - 0 -1 281 -8.7672837253194302e-05 - - 1.4002850651741028e-01 -3.9103108644485474e-01 - <_> - - 0 -1 282 5.4524061270058155e-03 - - -3.1052809953689575e-01 6.3757672905921936e-02 - <_> - - 0 -1 283 1.2568219564855099e-02 - - -1.3675519824028015e-01 3.2680550217628479e-01 - <_> - - 0 -1 284 3.7843358516693115e-01 - - -3.7364691495895386e-02 3.7789309024810791e-01 - <_> - - 0 -1 285 -3.3601790200918913e-03 - - 2.9605069756507874e-01 -1.5206739306449890e-01 - <_> - - 0 -1 286 -4.3185380101203918e-01 - - -6.8029761314392090e-01 1.2745309621095657e-02 - <_> - - 0 -1 287 7.3479618877172470e-03 - - -6.6707527637481689e-01 6.7926846444606781e-02 - <_> - - 0 -1 288 7.5943907722830772e-03 - - -1.1112800240516663e-01 2.2462299466133118e-01 - <_> - - 0 -1 289 -7.3589297244325280e-05 - - 1.3988719880580902e-01 -3.4220328927040100e-01 - <_> - - 0 -1 290 -1.0304169700248167e-04 - - 8.2018472254276276e-02 -1.0476870089769363e-01 - <_> - - 0 -1 291 -5.4624290205538273e-03 - - -5.1264250278472900e-01 9.2095062136650085e-02 - <_> - - 0 -1 292 1.9663229584693909e-02 - - 6.1935991048812866e-02 -6.1648821830749512e-01 - <_> - - 0 -1 293 -1.1055600043619052e-04 - - 1.4308770000934601e-01 -2.7447059750556946e-01 - <_> - - 0 -1 294 3.8737419527024031e-03 - - -1.0690200328826904e-01 2.0657220482826233e-01 - <_> - - 0 -1 295 -4.5131230726838112e-03 - - 3.4341660141944885e-01 -1.2317349761724472e-01 - <_> - - 0 -1 296 -6.1594668775796890e-02 - - 9.3623742461204529e-02 -4.5765519142150879e-02 - <_> - - 0 -1 297 1.2142979539930820e-03 - - -1.3058850169181824e-01 3.0691918730735779e-01 - <_> - - 0 -1 298 1.3168719410896301e-01 - - 1.1348670348525047e-02 -3.6062520742416382e-01 - <_> - - 0 -1 299 -9.8962578922510147e-03 - - 9.7268536686897278e-02 -4.5470228791236877e-01 - <_> - - 0 -1 300 -4.3822340667247772e-03 - - -6.9014567136764526e-01 7.1008093655109406e-02 - <_> - - 0 -1 301 -2.4433590471744537e-02 - - 5.0112801790237427e-01 -9.8408728837966919e-02 - <_> - - 0 -1 302 -8.6958734318614006e-03 - - -1.4006440341472626e-01 3.6845669150352478e-02 - <_> - 37 - -1.3051190376281738e+00 - - <_> - - 0 -1 303 -1.7152750864624977e-02 - - 4.7029718756675720e-01 -2.2067089378833771e-01 - <_> - - 0 -1 304 8.3040937781333923e-02 - - 5.5113639682531357e-02 -5.5488407611846924e-01 - <_> - - 0 -1 305 1.2245059758424759e-01 - - -2.8312590718269348e-01 3.4973090887069702e-01 - <_> - - 0 -1 306 7.3496531695127487e-03 - - -1.3282130658626556e-01 4.8876601457595825e-01 - <_> - - 0 -1 307 -9.3082878738641739e-03 - - 4.5475938916206360e-01 -1.4194749295711517e-01 - <_> - - 0 -1 308 1.7290420830249786e-02 - - 9.8470740020275116e-02 -6.8155962228775024e-01 - <_> - - 0 -1 309 6.8027682602405548e-02 - - 1.2287759780883789e-01 -5.8085542917251587e-01 - <_> - - 0 -1 310 -2.5710109621286392e-03 - - -2.8932929039001465e-01 9.2327423393726349e-02 - <_> - - 0 -1 311 -2.7197790332138538e-03 - - -4.8277780413627625e-01 1.2942260503768921e-01 - <_> - - 0 -1 312 3.6168839782476425e-02 - - -3.3225961029529572e-02 2.8994488716125488e-01 - <_> - - 0 -1 313 -4.5704417861998081e-03 - - -5.9805792570114136e-01 1.0446850210428238e-01 - <_> - - 0 -1 314 3.7568379193544388e-03 - - 1.2488850206136703e-01 -5.7084852457046509e-01 - <_> - - 0 -1 315 3.0054030939936638e-03 - - -3.2693040370941162e-01 1.9752669334411621e-01 - <_> - - 0 -1 316 -1.0322710126638412e-01 - - 5.9689277410507202e-01 -9.9626749753952026e-02 - <_> - - 0 -1 317 8.5584551095962524e-02 - - -2.3595149815082550e-01 2.7769410610198975e-01 - <_> - - 0 -1 318 -1.7628820613026619e-02 - - 2.3300230503082275e-01 -3.8094460964202881e-02 - <_> - - 0 -1 319 -7.3259319178760052e-03 - - 1.5533800423145294e-01 -3.4289830923080444e-01 - <_> - - 0 -1 320 1.6643910109996796e-01 - - 1.3593060430139303e-04 -6.0628050565719604e-01 - <_> - - 0 -1 321 1.3041920028626919e-02 - - 1.0876829922199249e-01 -4.7265630960464478e-01 - <_> - - 0 -1 322 -1.3597619719803333e-02 - - -5.8280581235885620e-01 7.2698637843132019e-02 - <_> - - 0 -1 323 6.8220919929444790e-03 - - -1.4359709620475769e-01 3.4434759616851807e-01 - <_> - - 0 -1 324 -1.3025919906795025e-04 - - 7.5394742190837860e-02 -6.7537508904933929e-02 - <_> - - 0 -1 325 -2.4602119810879230e-03 - - -5.1882988214492798e-01 8.0956049263477325e-02 - <_> - - 0 -1 326 -3.2538071274757385e-02 - - -5.8500260114669800e-01 5.7338178157806396e-03 - <_> - - 0 -1 327 2.0106420852243900e-03 - - -1.0640989989042282e-01 4.0276700258255005e-01 - <_> - - 0 -1 328 -4.6432539820671082e-02 - - -4.2023709416389465e-01 4.2063061147928238e-02 - <_> - - 0 -1 329 -1.2824350036680698e-02 - - 4.8449409008026123e-01 -9.4362497329711914e-02 - <_> - - 0 -1 330 3.4120719879865646e-02 - - 2.7428179979324341e-02 -5.6730318069458008e-01 - <_> - - 0 -1 331 -4.4012650847434998e-02 - - 3.7047350406646729e-01 -1.3064679503440857e-01 - <_> - - 0 -1 332 -3.7362610455602407e-03 - - -6.1717242002487183e-01 4.6860579401254654e-02 - <_> - - 0 -1 333 -5.2141821943223476e-03 - - -6.5322470664978027e-01 5.3996030241250992e-02 - <_> - - 0 -1 334 6.4924731850624084e-03 - - 4.4800970703363419e-02 -4.3987420201301575e-01 - <_> - - 0 -1 335 -4.2384970001876354e-03 - - -7.1687930822372437e-01 5.4430369287729263e-02 - <_> - - 0 -1 336 -3.1804300379008055e-03 - - 2.4815900623798370e-01 -8.9008152484893799e-02 - <_> - - 0 -1 337 2.9277798603288829e-04 - - -2.1440739929676056e-01 2.0239150524139404e-01 - <_> - - 0 -1 338 -1.1838439851999283e-02 - - 6.8225288391113281e-01 -5.6109890341758728e-02 - <_> - - 0 -1 339 -2.0604960620403290e-02 - - -6.4495718479156494e-01 6.5811157226562500e-02 - <_> - 45 - -1.2928479909896851e+00 - - <_> - - 0 -1 340 -5.7252319529652596e-03 - - 3.4108111262321472e-01 -3.3441230654716492e-01 - <_> - - 0 -1 341 1.5814049541950226e-01 - - -2.9555070400238037e-01 2.9280221462249756e-01 - <_> - - 0 -1 342 3.5558689851313829e-03 - - -2.8485581278800964e-01 2.4933080375194550e-01 - <_> - - 0 -1 343 -3.1524680089205503e-03 - - -4.6672669053077698e-01 7.6127722859382629e-02 - <_> - - 0 -1 344 -1.4493550173938274e-02 - - 2.5777289271354675e-01 -2.4369129538536072e-01 - <_> - - 0 -1 345 -6.8386606872081757e-02 - - 5.2669358253479004e-01 8.9219277724623680e-03 - <_> - - 0 -1 346 1.0660409461706877e-03 - - -4.9784231185913086e-01 1.1696430295705795e-01 - <_> - - 0 -1 347 1.6208799555897713e-02 - - -3.0983239412307739e-01 9.5886580646038055e-02 - <_> - - 0 -1 348 2.8249868750572205e-01 - - -7.3715627193450928e-02 6.4200782775878906e-01 - <_> - - 0 -1 349 8.6361259222030640e-02 - - 4.0710549801588058e-02 -5.0559818744659424e-01 - <_> - - 0 -1 350 5.1451180130243301e-02 - - -3.3384099602699280e-01 1.6614030301570892e-01 - <_> - - 0 -1 351 -6.9037936627864838e-02 - - -3.1987860798835754e-01 3.4255299717187881e-02 - <_> - - 0 -1 352 -5.6569739244878292e-03 - - -6.1266559362411499e-01 8.3148159086704254e-02 - <_> - - 0 -1 353 -7.1886749938130379e-03 - - 4.2386818677186966e-02 -9.7789242863655090e-02 - <_> - - 0 -1 354 -2.6780599728226662e-02 - - 1.2735369801521301e-01 -3.4852239489555359e-01 - <_> - - 0 -1 355 -6.9346590898931026e-03 - - 4.4443860650062561e-02 -2.6666578650474548e-01 - <_> - - 0 -1 356 1.2057109922170639e-01 - - 9.1515138745307922e-02 -5.5102181434631348e-01 - <_> - - 0 -1 357 1.0571300052106380e-02 - - -1.1927139759063721e-01 1.5043540298938751e-01 - <_> - - 0 -1 358 -1.4446419663727283e-02 - - 3.2619118690490723e-01 -1.3021939992904663e-01 - <_> - - 0 -1 359 4.9188970588147640e-03 - - 2.4317760020494461e-02 -5.8825939893722534e-01 - <_> - - 0 -1 360 -3.8240209687501192e-03 - - -6.5660482645034790e-01 6.3337683677673340e-02 - <_> - - 0 -1 361 -1.7404669523239136e-01 - - -5.4772597551345825e-01 6.0019370168447495e-02 - <_> - - 0 -1 362 4.5922618359327316e-02 - - 5.0438169389963150e-02 -6.9467681646347046e-01 - <_> - - 0 -1 363 -3.9035470690578222e-03 - - 2.2018410265445709e-01 -1.8376649916172028e-01 - <_> - - 0 -1 364 1.7436769558116794e-03 - - 6.1212658882141113e-02 -5.7988357543945312e-01 - <_> - - 0 -1 365 -9.7301546484231949e-03 - - -5.1599711179733276e-01 4.9021121114492416e-02 - <_> - - 0 -1 366 -5.0866428762674332e-02 - - 4.3118700385093689e-01 -9.5599338412284851e-02 - <_> - - 0 -1 367 1.5334750059992075e-04 - - -8.4842063486576080e-02 5.3982339799404144e-02 - <_> - - 0 -1 368 -7.9509448260068893e-03 - - 4.7792288661003113e-01 -9.3340940773487091e-02 - <_> - - 0 -1 369 -4.4662738218903542e-03 - - -6.6406428813934326e-01 7.0635370910167694e-02 - <_> - - 0 -1 370 6.7459428682923317e-03 - - -9.5945097506046295e-02 4.5204031467437744e-01 - <_> - - 0 -1 371 -4.8576910048723221e-02 - - -2.5402069091796875e-01 3.5480510443449020e-02 - <_> - - 0 -1 372 -8.1895291805267334e-03 - - -6.9631862640380859e-01 5.4189778864383698e-02 - <_> - - 0 -1 373 -1.3830559328198433e-04 - - 7.7265933156013489e-02 -4.3882951140403748e-01 - <_> - - 0 -1 374 -2.9827160760760307e-02 - - 5.1934647560119629e-01 -7.4816159904003143e-02 - <_> - - 0 -1 375 1.9728230312466621e-02 - - 4.6895399689674377e-02 -5.6989020109176636e-01 - <_> - - 0 -1 376 1.2107780203223228e-02 - - -1.3739739358425140e-01 3.2666760683059692e-01 - <_> - - 0 -1 377 6.9206808693706989e-03 - - 4.6539328992366791e-02 -4.9861478805541992e-01 - <_> - - 0 -1 378 7.5631309300661087e-03 - - -1.0235120356082916e-01 3.9567971229553223e-01 - <_> - - 0 -1 379 -2.3844289779663086e-01 - - -7.1881687641143799e-01 4.9742348492145538e-02 - <_> - - 0 -1 380 -9.2327659949660301e-03 - - 4.8625311255455017e-01 -7.8327029943466187e-02 - <_> - - 0 -1 381 1.2344529852271080e-02 - - -4.5567270368337631e-02 1.6513639688491821e-01 - <_> - - 0 -1 382 -1.0889769764617085e-03 - - 2.3016020655632019e-01 -1.4696329832077026e-01 - <_> - - 0 -1 383 -5.1214238628745079e-03 - - 1.7787009477615356e-01 -1.9967870414257050e-01 - <_> - - 0 -1 384 2.3381220176815987e-02 - - 3.9966959506273270e-02 -7.6583552360534668e-01 - <_> - 49 - -1.3127609491348267e+00 - - <_> - - 0 -1 385 5.8875479735434055e-03 - - -2.6197949051856995e-01 3.9267268776893616e-01 - <_> - - 0 -1 386 -2.0563710480928421e-02 - - 2.3240800201892853e-01 -3.6058109253644943e-02 - <_> - - 0 -1 387 2.4195060133934021e-02 - - -1.7246599495410919e-01 4.0554100275039673e-01 - <_> - - 0 -1 388 2.2053229808807373e-01 - - -2.4937939643859863e-01 2.4980540573596954e-01 - <_> - - 0 -1 389 8.1213507801294327e-03 - - 9.8432846367359161e-02 -5.0667357444763184e-01 - <_> - - 0 -1 390 -1.5637070173397660e-03 - - -4.1526609659194946e-01 1.3340100646018982e-01 - <_> - - 0 -1 391 1.2210609856992960e-03 - - -2.5663951039314270e-01 2.1268320083618164e-01 - <_> - - 0 -1 392 4.5655488967895508e-02 - - 8.5712976753711700e-02 -5.5701047182083130e-01 - <_> - - 0 -1 393 -1.7322370782494545e-02 - - 1.0083419829607010e-01 -4.3052899837493896e-01 - <_> - - 0 -1 394 2.7879169210791588e-02 - - 4.4392268173396587e-03 -5.7203328609466553e-01 - <_> - - 0 -1 395 -4.7942388802766800e-02 - - 4.9971351027488708e-01 -1.0569220036268234e-01 - <_> - - 0 -1 396 -9.0003162622451782e-02 - - 7.7226841449737549e-01 -3.5037949681282043e-02 - <_> - - 0 -1 397 2.1878979168832302e-03 - - -4.3980291485786438e-01 1.0962349921464920e-01 - <_> - - 0 -1 398 -1.1160460300743580e-02 - - -6.0748499631881714e-01 2.5118330493569374e-02 - <_> - - 0 -1 399 2.3293609265238047e-03 - - 7.4755467474460602e-02 -5.6645327806472778e-01 - <_> - - 0 -1 400 -3.2051369547843933e-02 - - 1.3710969686508179e-01 -1.4014610648155212e-01 - <_> - - 0 -1 401 -1.0117290169000626e-01 - - 6.2204962968826294e-01 -6.4412176609039307e-02 - <_> - - 0 -1 402 4.2040869593620300e-02 - - -8.5930466651916504e-02 4.9315661191940308e-01 - <_> - - 0 -1 403 2.5582410395145416e-02 - - 6.1051581054925919e-02 -6.5449321269989014e-01 - <_> - - 0 -1 404 1.0514019988477230e-02 - - -1.0234809666872025e-01 2.6112779974937439e-01 - <_> - - 0 -1 405 1.1631770030362532e-04 - - -3.1768348813056946e-01 1.2542060017585754e-01 - <_> - - 0 -1 406 -4.4300020672380924e-03 - - 1.9109399616718292e-01 -5.2662618458271027e-02 - <_> - - 0 -1 407 2.0806640386581421e-03 - - -1.4428110420703888e-01 3.0112838745117188e-01 - <_> - - 0 -1 408 5.4104570299386978e-03 - - -5.4554589092731476e-02 3.5240170359611511e-01 - <_> - - 0 -1 409 1.0801830329000950e-02 - - 5.5018458515405655e-02 -7.4443417787551880e-01 - <_> - - 0 -1 410 4.2296931147575378e-02 - - 6.1844110488891602e-02 -3.3144399523735046e-01 - <_> - - 0 -1 411 5.9895617887377739e-03 - - 6.4745798707008362e-02 -5.6030327081680298e-01 - <_> - - 0 -1 412 -9.4227874651551247e-03 - - -3.0067789554595947e-01 4.3195281177759171e-02 - <_> - - 0 -1 413 -2.0783370360732079e-02 - - 3.7524980306625366e-01 -1.0968690365552902e-01 - <_> - - 0 -1 414 -5.2015861729159951e-04 - - -1.1337819695472717e-01 3.7144880741834641e-02 - <_> - - 0 -1 415 -8.0162001540884376e-04 - - -5.2545320987701416e-01 6.6209748387336731e-02 - <_> - - 0 -1 416 -2.5214110501110554e-03 - - -1.5936410427093506e-01 5.1849711686372757e-02 - <_> - - 0 -1 417 9.0704779722727835e-05 - - -3.3334940671920776e-01 1.0919860005378723e-01 - <_> - - 0 -1 418 -1.8114539561793208e-03 - - 1.1214060336351395e-01 -9.0960927307605743e-02 - <_> - - 0 -1 419 -1.9519029557704926e-01 - - -7.2080957889556885e-01 5.0182379782199860e-02 - <_> - - 0 -1 420 -1.4884449541568756e-02 - - -6.0010558366775513e-01 9.1695934534072876e-03 - <_> - - 0 -1 421 -9.3493862077593803e-03 - - 4.8005661368370056e-01 -7.6954081654548645e-02 - <_> - - 0 -1 422 7.1461386978626251e-02 - - -5.7781968265771866e-02 2.6106640696525574e-01 - <_> - - 0 -1 423 5.1590640097856522e-02 - - 7.1806840598583221e-02 -4.6015501022338867e-01 - <_> - - 0 -1 424 3.0857140664011240e-03 - - -9.2065691947937012e-02 1.1266019940376282e-01 - <_> - - 0 -1 425 1.7517179949209094e-03 - - -1.9908079504966736e-01 1.9879740476608276e-01 - <_> - - 0 -1 426 6.3493461348116398e-03 - - -1.0544289648532867e-01 4.3338119983673096e-02 - <_> - - 0 -1 427 4.2910311371088028e-02 - - 5.2926450967788696e-02 -6.6493779420852661e-01 - <_> - - 0 -1 428 -2.8933840990066528e-01 - - -5.9245282411575317e-01 5.0023719668388367e-02 - <_> - - 0 -1 429 1.9839199259877205e-02 - - 4.1037648916244507e-02 -6.7570680379867554e-01 - <_> - - 0 -1 430 -2.9357530176639557e-02 - - -6.5960741043090820e-01 4.1811358183622360e-02 - <_> - - 0 -1 431 8.8180392980575562e-02 - - 6.5817430615425110e-02 -4.4950678944587708e-01 - <_> - - 0 -1 432 -1.3282440602779388e-01 - - -2.1098449826240540e-01 3.9650738239288330e-02 - <_> - - 0 -1 433 8.0266319855581969e-05 - - -2.5888821482658386e-01 1.1488880217075348e-01 - <_> - 55 - -1.3777979612350464e+00 - - <_> - - 0 -1 434 6.5426998771727085e-03 - - -2.2366699576377869e-01 4.7720021009445190e-01 - <_> - - 0 -1 435 -2.2333480592351407e-04 - - 1.0184849798679352e-01 -1.8614460527896881e-01 - <_> - - 0 -1 436 -6.0191731899976730e-03 - - 3.1382268667221069e-01 -2.3328569531440735e-01 - <_> - - 0 -1 437 1.7179940640926361e-01 - - -2.9191988706588745e-01 2.1794080734252930e-01 - <_> - - 0 -1 438 1.6310229897499084e-02 - - -1.4051440358161926e-01 3.2606941461563110e-01 - <_> - - 0 -1 439 -1.5107460319995880e-01 - - 6.4690059423446655e-01 -5.2486609667539597e-02 - <_> - - 0 -1 440 4.6439900994300842e-02 - - -2.4340909719467163e-01 2.6854258775711060e-01 - <_> - - 0 -1 441 -4.3716500513255596e-03 - - -2.9228550195693970e-01 9.8407112061977386e-02 - <_> - - 0 -1 442 1.6864160075783730e-02 - - -2.8363880515098572e-01 1.9571739435195923e-01 - <_> - - 0 -1 443 2.5575649924576283e-03 - - 4.4347479939460754e-02 -1.3447460532188416e-01 - <_> - - 0 -1 444 2.0957190543413162e-02 - - -1.8374939262866974e-01 2.6384368538856506e-01 - <_> - - 0 -1 445 4.1607948951423168e-03 - - 4.9291279166936874e-02 -6.1921811103820801e-01 - <_> - - 0 -1 446 4.1489768773317337e-03 - - 4.1641891002655029e-02 -7.3988562822341919e-01 - <_> - - 0 -1 447 2.1313559263944626e-02 - - 2.3694250732660294e-02 -5.6835669279098511e-01 - <_> - - 0 -1 448 1.2101300060749054e-02 - - -9.5187656581401825e-02 4.6901950240135193e-01 - <_> - - 0 -1 449 1.8083410104736686e-03 - - 4.7500770539045334e-02 -3.0990800261497498e-01 - <_> - - 0 -1 450 -1.0990530252456665e-02 - - 6.7560458183288574e-01 -6.0268498957157135e-02 - <_> - - 0 -1 451 -8.9888361981138587e-04 - - 1.6142509877681732e-01 -8.0034710466861725e-02 - <_> - - 0 -1 452 8.5803032561670989e-05 - - -2.5957980751991272e-01 1.5043449401855469e-01 - <_> - - 0 -1 453 -1.0529270395636559e-02 - - 4.8798549175262451e-01 -1.0572060197591782e-01 - <_> - - 0 -1 454 -2.5140570942312479e-03 - - -5.9965860843658447e-01 7.1445137262344360e-02 - <_> - - 0 -1 455 -2.0928360521793365e-02 - - -6.3737767934799194e-01 1.1195439845323563e-02 - <_> - - 0 -1 456 8.4567293524742126e-03 - - 1.0487599670886993e-01 -3.3027571439743042e-01 - <_> - - 0 -1 457 1.1649870127439499e-01 - - 4.9215629696846008e-02 -7.1875381469726562e-01 - <_> - - 0 -1 458 1.0911310091614723e-02 - - 4.0617398917675018e-02 -7.1910649538040161e-01 - <_> - - 0 -1 459 -2.4141639471054077e-02 - - 4.6759098768234253e-01 -3.2959330826997757e-02 - <_> - - 0 -1 460 1.2029770296066999e-03 - - -3.1624960899353027e-01 1.1505530029535294e-01 - <_> - - 0 -1 461 9.8068173974752426e-03 - - -3.6025181412696838e-02 1.7123579978942871e-01 - <_> - - 0 -1 462 6.7418841645121574e-03 - - 6.2854416668415070e-02 -5.5376541614532471e-01 - <_> - - 0 -1 463 -1.3345720246434212e-02 - - -7.5741612911224365e-01 9.3524847179651260e-03 - <_> - - 0 -1 464 8.8471651077270508e-02 - - 5.5774558335542679e-02 -5.2644717693328857e-01 - <_> - - 0 -1 465 -1.4308050274848938e-02 - - -5.0163388252258301e-01 6.1552900820970535e-02 - <_> - - 0 -1 466 2.3234330583363771e-03 - - -8.7273299694061279e-02 3.7597200274467468e-01 - <_> - - 0 -1 467 -6.6605149768292904e-03 - - -5.6011527776718140e-01 4.5979429036378860e-02 - <_> - - 0 -1 468 -2.3684150073677301e-04 - - 9.2453077435493469e-02 -3.4188869595527649e-01 - <_> - - 0 -1 469 5.2499719895422459e-03 - - -1.0243079811334610e-01 3.8211381435394287e-01 - <_> - - 0 -1 470 9.6710777143016458e-05 - - -1.4891329407691956e-01 2.4878869950771332e-01 - <_> - - 0 -1 471 -3.1435599084943533e-03 - - 2.0501570403575897e-01 -5.9435389935970306e-02 - <_> - - 0 -1 472 -1.9189229351468384e-04 - - 1.2612619996070862e-01 -3.2496848702430725e-01 - <_> - - 0 -1 473 -4.6893218532204628e-03 - - 3.2404568791389465e-01 -3.2848190516233444e-02 - <_> - - 0 -1 474 3.0783370602875948e-03 - - 5.5750191211700439e-02 -5.7443851232528687e-01 - <_> - - 0 -1 475 1.3539710082113743e-02 - - -3.2638911157846451e-02 4.8875731229782104e-01 - <_> - - 0 -1 476 8.2393882621545345e-05 - - -2.2491760551929474e-01 1.5178939700126648e-01 - <_> - - 0 -1 477 -9.3342671170830727e-03 - - -5.7278221845626831e-01 4.6149488538503647e-02 - <_> - - 0 -1 478 4.5541571453213692e-03 - - -2.0548130571842194e-01 1.4704200625419617e-01 - <_> - - 0 -1 479 2.4691719561815262e-02 - - 2.0886249840259552e-02 -5.6028658151626587e-01 - <_> - - 0 -1 480 9.7412186732981354e-05 - - -1.5648730099201202e-01 1.9009509682655334e-01 - <_> - - 0 -1 481 5.7823117822408676e-03 - - -1.2173660099506378e-01 2.1024130284786224e-01 - <_> - - 0 -1 482 -6.4938321709632874e-02 - - 5.5764448642730713e-01 -6.1514221131801605e-02 - <_> - - 0 -1 483 -5.9424177743494511e-03 - - -4.4680491089820862e-01 5.5648550391197205e-02 - <_> - - 0 -1 484 -5.0992597825825214e-03 - - 1.9794790446758270e-01 -1.8055149912834167e-01 - <_> - - 0 -1 485 -1.5280229970812798e-02 - - -8.6270570755004883e-02 3.5552538931369781e-02 - <_> - - 0 -1 486 -7.4432790279388428e-03 - - 1.7408570647239685e-01 -1.8400490283966064e-01 - <_> - - 0 -1 487 5.1331128925085068e-03 - - -8.8491149246692657e-02 3.1532418727874756e-01 - <_> - - 0 -1 488 2.4648790713399649e-03 - - -8.3607397973537445e-02 3.5939309000968933e-01 - <_> - 57 - -1.2673230171203613e+00 - - <_> - - 0 -1 489 3.2584890723228455e-02 - - -2.9446709156036377e-01 3.8783320784568787e-01 - <_> - - 0 -1 490 -1.5954829752445221e-02 - - -8.7387222051620483e-01 1.3140209950506687e-02 - <_> - - 0 -1 491 6.5294029191136360e-03 - - -1.8746000528335571e-01 3.4920379519462585e-01 - <_> - - 0 -1 492 -6.9139063358306885e-02 - - -3.2066041231155396e-01 2.1070230752229691e-02 - <_> - - 0 -1 493 -2.7401080355048180e-02 - - 1.6137300431728363e-01 -3.3988159894943237e-01 - <_> - - 0 -1 494 5.4834091663360596e-01 - - -1.1290470138192177e-02 -1.0005040168762207e+00 - <_> - - 0 -1 495 4.6463169157505035e-02 - - -7.0668822526931763e-01 5.8523610234260559e-02 - <_> - - 0 -1 496 3.5692781209945679e-02 - - -1.2722860090434551e-02 5.1669907569885254e-01 - <_> - - 0 -1 497 -8.8253971189260483e-03 - - 3.5113370418548584e-01 -1.2264049798250198e-01 - <_> - - 0 -1 498 -2.4928439408540726e-02 - - -4.1226190328598022e-01 8.2819983363151550e-03 - <_> - - 0 -1 499 8.3438487490639091e-04 - - -3.1004768610000610e-01 1.2824219465255737e-01 - <_> - - 0 -1 500 4.3677380308508873e-03 - - 8.7895832955837250e-02 -5.5109828710556030e-01 - <_> - - 0 -1 501 -6.0594570823013783e-03 - - 2.3694829642772675e-01 -1.6963149607181549e-01 - <_> - - 0 -1 502 -1.3386299833655357e-02 - - -2.9353159666061401e-01 3.3642090857028961e-02 - <_> - - 0 -1 503 5.5047020316123962e-02 - - 9.9271617829799652e-02 -4.0973669290542603e-01 - <_> - - 0 -1 504 1.7345769330859184e-02 - - -1.0950370132923126e-01 4.2251870036125183e-01 - <_> - - 0 -1 505 5.1694452762603760e-01 - - -5.7410959154367447e-02 6.4137631654739380e-01 - <_> - - 0 -1 506 6.5628431737422943e-02 - - 3.3641148358583450e-02 -6.0003411769866943e-01 - <_> - - 0 -1 507 1.0161089897155762e-01 - - -2.5070580840110779e-01 1.8186099827289581e-01 - <_> - - 0 -1 508 2.9830370098352432e-02 - - -1.1608160287141800e-01 3.5246831178665161e-01 - <_> - - 0 -1 509 -6.6538550890982151e-04 - - -5.6480127573013306e-01 6.4513862133026123e-02 - <_> - - 0 -1 510 8.9011844247579575e-03 - - 3.7113070487976074e-02 -6.2943869829177856e-01 - <_> - - 0 -1 511 -5.7988148182630539e-03 - - 3.3002421259880066e-01 -1.1569269746541977e-01 - <_> - - 0 -1 512 1.8202450126409531e-02 - - 2.2297389805316925e-02 -6.8679827451705933e-01 - <_> - - 0 -1 513 -6.3430098816752434e-03 - - -5.9504687786102295e-01 5.3902018815279007e-02 - <_> - - 0 -1 514 1.0256610065698624e-01 - - 1.1425909586250782e-02 -3.4088680148124695e-01 - <_> - - 0 -1 515 -2.1729130297899246e-02 - - 1.0024060308933258e-01 -3.6016431450843811e-01 - <_> - - 0 -1 516 -4.0402188897132874e-02 - - -7.9971337318420410e-01 1.0374830104410648e-02 - <_> - - 0 -1 517 -1.1156830005347729e-02 - - 4.1818261146545410e-01 -1.0622619837522507e-01 - <_> - - 0 -1 518 1.0242810240015388e-03 - - -7.2071209549903870e-02 9.9886089563369751e-02 - <_> - - 0 -1 519 9.5549278194084764e-04 - - -1.6656149923801422e-01 2.7860009670257568e-01 - <_> - - 0 -1 520 1.3702700380235910e-04 - - -3.1575959920883179e-01 1.1808790266513824e-01 - <_> - - 0 -1 521 -1.9174149632453918e-01 - - 5.2235382795333862e-01 -7.6672300696372986e-02 - <_> - - 0 -1 522 2.5123620871454477e-03 - - -8.5517987608909607e-02 2.7882871031761169e-01 - <_> - - 0 -1 523 3.6384440027177334e-03 - - -1.0173840075731277e-01 3.6575859785079956e-01 - <_> - - 0 -1 524 -9.1068800538778305e-03 - - -1.9999110698699951e-01 3.5431660711765289e-02 - <_> - - 0 -1 525 -2.5456059724092484e-02 - - -6.6976618766784668e-01 5.1672291010618210e-02 - <_> - - 0 -1 526 -2.5856729596853256e-02 - - -7.3498648405075073e-01 2.7689380571246147e-02 - <_> - - 0 -1 527 8.5871294140815735e-03 - - -1.1443380266427994e-01 2.7319890260696411e-01 - <_> - - 0 -1 528 3.5716209094971418e-03 - - 6.0280900448560715e-02 -2.6631888747215271e-01 - <_> - - 0 -1 529 1.0332760401070118e-02 - - 3.8581959903240204e-02 -6.7532962560653687e-01 - <_> - - 0 -1 530 -8.3224009722471237e-03 - - 2.5268268585205078e-01 -6.8770729005336761e-02 - <_> - - 0 -1 531 -1.8182119820266962e-03 - - -3.1761169433593750e-01 9.2666782438755035e-02 - <_> - - 0 -1 532 -1.3169780373573303e-02 - - -5.3651332855224609e-01 2.8106879442930222e-02 - <_> - - 0 -1 533 2.0408600568771362e-02 - - -6.0603220015764236e-02 5.0572431087493896e-01 - <_> - - 0 -1 534 1.7321230471134186e-01 - - 2.1015009842813015e-03 3.2260191440582275e-01 - <_> - - 0 -1 535 -5.8910921216011047e-02 - - 1.4044930040836334e-01 -2.0362600684165955e-01 - <_> - - 0 -1 536 4.9123559147119522e-03 - - 7.1367353200912476e-02 -5.0733560323715210e-01 - <_> - - 0 -1 537 -1.3819620653521270e-04 - - 7.6624020934104919e-02 -3.4903231263160706e-01 - <_> - - 0 -1 538 1.2017219560220838e-03 - - -5.1169282197952271e-01 5.4793931543827057e-02 - <_> - - 0 -1 539 -5.4135429672896862e-03 - - -5.0181478261947632e-01 5.0226181745529175e-02 - <_> - - 0 -1 540 -3.3707648515701294e-02 - - -8.5764700174331665e-01 4.7642397694289684e-03 - <_> - - 0 -1 541 1.2718940153717995e-02 - - -1.0830610245466232e-01 2.8867751359939575e-01 - <_> - - 0 -1 542 -2.0672269165515900e-02 - - -3.0906811356544495e-01 2.1581029519438744e-02 - <_> - - 0 -1 543 1.5933969989418983e-02 - - -8.3755359053611755e-02 4.1743949055671692e-01 - <_> - - 0 -1 544 9.3405526131391525e-03 - - 4.7591928392648697e-02 -6.5143817663192749e-01 - <_> - - 0 -1 545 1.3016579672694206e-02 - - 5.3528260439634323e-02 -4.8644289374351501e-01 - <_> - 61 - -1.3531359434127808e+00 - - <_> - - 0 -1 546 5.0423052161931992e-03 - - -2.2111539542675018e-01 4.3673288822174072e-01 - <_> - - 0 -1 547 3.3594230189919472e-03 - - -1.7003799974918365e-01 1.2387859821319580e-01 - <_> - - 0 -1 548 -2.2854709997773170e-02 - - 3.0707350373268127e-01 -1.9186529517173767e-01 - <_> - - 0 -1 549 4.3850108049809933e-03 - - 3.2038759440183640e-02 -1.4620819687843323e-01 - <_> - - 0 -1 550 -5.3011639975011349e-03 - - 1.6375949978828430e-01 -2.8174880146980286e-01 - <_> - - 0 -1 551 4.9680870026350021e-02 - - 4.2250480502843857e-02 -6.0391640663146973e-01 - <_> - - 0 -1 552 -5.1453109830617905e-02 - - 6.5720152854919434e-01 -7.0812806487083435e-02 - <_> - - 0 -1 553 2.7113489806652069e-02 - - 2.9805190861225128e-02 -4.0825900435447693e-01 - <_> - - 0 -1 554 2.3578230291604996e-02 - - -3.0918011069297791e-01 2.1382910013198853e-01 - <_> - - 0 -1 555 2.9583559371531010e-03 - - 2.3970389738678932e-02 -1.6768220067024231e-01 - <_> - - 0 -1 556 -2.8374159592203796e-04 - - 1.9550369679927826e-01 -2.6317828893661499e-01 - <_> - - 0 -1 557 3.8295589387416840e-02 - - -8.1490896642208099e-02 4.1922101378440857e-01 - <_> - - 0 -1 558 -1.0575760155916214e-02 - - -5.5699461698532104e-01 6.0772120952606201e-02 - <_> - - 0 -1 559 -1.3283690204843879e-03 - - 9.2958763241767883e-02 -3.3554950356483459e-01 - <_> - - 0 -1 560 1.8217159667983651e-03 - - -9.9800482392311096e-02 3.8015770912170410e-01 - <_> - - 0 -1 561 -1.8067359924316406e-03 - - -5.1108711957931519e-01 6.8366326391696930e-02 - <_> - - 0 -1 562 6.6835001111030579e-02 - - 3.1457249075174332e-02 -6.9415211677551270e-01 - <_> - - 0 -1 563 -1.3109239749610424e-02 - - 6.0284411907196045e-01 -8.0423787236213684e-02 - <_> - - 0 -1 564 -1.9930349662899971e-03 - - -4.1979709267616272e-01 8.9367941021919250e-02 - <_> - - 0 -1 565 -1.0855719447135925e-03 - - -2.4703420698642731e-01 5.2764680236577988e-02 - <_> - - 0 -1 566 -2.0320110488682985e-03 - - -6.1820042133331299e-01 5.1938790827989578e-02 - <_> - - 0 -1 567 1.6026819124817848e-02 - - -8.5486106574535370e-02 5.8234047889709473e-01 - <_> - - 0 -1 568 1.7896020784974098e-02 - - 6.8894177675247192e-02 -5.8082962036132812e-01 - <_> - - 0 -1 569 -2.4853560607880354e-03 - - 2.0646420121192932e-01 -6.0466051101684570e-02 - <_> - - 0 -1 570 -1.8073250539600849e-03 - - 2.5038561224937439e-01 -1.3862800598144531e-01 - <_> - - 0 -1 571 -1.1800680309534073e-02 - - -5.5517327785491943e-01 2.3907609283924103e-02 - <_> - - 0 -1 572 5.3180782124400139e-03 - - -1.0365380346775055e-01 3.5622540116310120e-01 - <_> - - 0 -1 573 -1.9885929941665381e-04 - - 7.9137459397315979e-02 -7.1248553693294525e-02 - <_> - - 0 -1 574 1.2722889892756939e-02 - - 3.6043450236320496e-02 -7.7585661411285400e-01 - <_> - - 0 -1 575 5.4894611239433289e-03 - - -1.1198099702596664e-01 2.9539060592651367e-01 - <_> - - 0 -1 576 3.1117599457502365e-02 - - 6.8027697503566742e-02 -4.7621628642082214e-01 - <_> - - 0 -1 577 -1.0922919958829880e-02 - - 3.7011030316352844e-01 -1.5059700608253479e-01 - <_> - - 0 -1 578 -1.7167469486594200e-03 - - 2.7644971013069153e-01 -1.1304590106010437e-01 - <_> - - 0 -1 579 -1.3501050416380167e-03 - - -3.5303080081939697e-01 9.9187247455120087e-02 - <_> - - 0 -1 580 1.9909780472517014e-02 - - 6.5169408917427063e-02 -4.9353629350662231e-01 - <_> - - 0 -1 581 2.3044180124998093e-02 - - 1.7247360199689865e-02 -3.9788180589675903e-01 - <_> - - 0 -1 582 9.6177039667963982e-03 - - -1.1394459754228592e-01 3.1357648968696594e-01 - <_> - - 0 -1 583 -7.6275239698588848e-03 - - -9.2318731546401978e-01 7.8877164050936699e-03 - <_> - - 0 -1 584 8.7190303020179272e-05 - - -3.0970078706741333e-01 9.5611982047557831e-02 - <_> - - 0 -1 585 -1.1889990419149399e-02 - - 4.7901371121406555e-01 -3.5577189177274704e-02 - <_> - - 0 -1 586 8.4557365626096725e-03 - - 5.2709650248289108e-02 -5.7321697473526001e-01 - <_> - - 0 -1 587 1.1996040120720863e-02 - - 1.9709009677171707e-02 -6.9532912969589233e-01 - <_> - - 0 -1 588 -2.7005810290575027e-02 - - 5.9652292728424072e-01 -5.1673818379640579e-02 - <_> - - 0 -1 589 1.8543410114943981e-03 - - 7.2791919112205505e-02 -5.0846791267395020e-01 - <_> - - 0 -1 590 7.5675587868317962e-04 - - -3.8867241144180298e-01 6.5925061702728271e-02 - <_> - - 0 -1 591 -3.8905180990695953e-02 - - -6.0740387439727783e-01 3.5101689863950014e-03 - <_> - - 0 -1 592 -5.7714940048754215e-03 - - 1.7274090647697449e-01 -1.7644210159778595e-01 - <_> - - 0 -1 593 -9.1350553557276726e-03 - - -2.8621628880500793e-01 3.0258299782872200e-02 - <_> - - 0 -1 594 4.5439298264682293e-03 - - -8.5076972842216492e-02 4.1360539197921753e-01 - <_> - - 0 -1 595 1.5785360708832741e-02 - - -9.6528999507427216e-02 2.8125289082527161e-01 - <_> - - 0 -1 596 1.7944289371371269e-02 - - 5.0230890512466431e-02 -6.4134520292282104e-01 - <_> - - 0 -1 597 -3.8975570350885391e-02 - - -2.5966680049896240e-01 3.0592629685997963e-02 - <_> - - 0 -1 598 5.2373361540958285e-04 - - 1.0446350276470184e-01 -3.1365889310836792e-01 - <_> - - 0 -1 599 -2.5457229465246201e-02 - - -1.6731269657611847e-01 3.7427790462970734e-02 - <_> - - 0 -1 600 -4.2908679693937302e-02 - - -4.0295800566673279e-01 6.5455727279186249e-02 - <_> - - 0 -1 601 -5.1728109829127789e-03 - - 3.1299790740013123e-01 -7.0367880165576935e-02 - <_> - - 0 -1 602 -1.8753990298137069e-04 - - 1.5299630165100098e-01 -2.0695990324020386e-01 - <_> - - 0 -1 603 -1.9984589889645576e-03 - - 2.6436290144920349e-01 -1.0118020325899124e-01 - <_> - - 0 -1 604 -3.7929560057818890e-03 - - 2.8518161177635193e-01 -1.0743419826030731e-01 - <_> - - 0 -1 605 4.5540980994701385e-02 - - 4.5009840279817581e-02 -2.0425949990749359e-01 - <_> - - 0 -1 606 2.4831600487232208e-02 - - 4.9255561083555222e-02 -6.0236537456512451e-01 - <_> - 59 - -1.1971529722213745e+00 - - <_> - - 0 -1 607 3.9991321973502636e-03 - - -2.6711270213127136e-01 3.5392650961875916e-01 - <_> - - 0 -1 608 1.1023290455341339e-02 - - -1.0786689817905426e-01 1.0729049891233444e-01 - <_> - - 0 -1 609 -3.7521351128816605e-02 - - 3.0647391080856323e-01 -2.1749919652938843e-01 - <_> - - 0 -1 610 -2.7670729905366898e-03 - - -3.9869681000709534e-01 8.7402120232582092e-02 - <_> - - 0 -1 611 1.9890109542757273e-03 - - -3.2719919085502625e-01 2.0264029502868652e-01 - <_> - - 0 -1 612 1.9364669919013977e-02 - - -5.1705140620470047e-02 1.2021850049495697e-01 - <_> - - 0 -1 613 -1.1918369680643082e-02 - - 1.2546530365943909e-01 -3.7106749415397644e-01 - <_> - - 0 -1 614 9.5910847187042236e-02 - - -1.7389330267906189e-01 2.2600440680980682e-01 - <_> - - 0 -1 615 1.0751710087060928e-01 - - -7.8588336706161499e-02 5.7250618934631348e-01 - <_> - - 0 -1 616 -3.1022340059280396e-02 - - 1.4575169980525970e-01 -3.2396531105041504e-01 - <_> - - 0 -1 617 1.6883790493011475e-02 - - -1.6565980017185211e-01 2.9082998633384705e-01 - <_> - - 0 -1 618 5.0262849981663749e-05 - - -5.7035660743713379e-01 6.2110569328069687e-02 - <_> - - 0 -1 619 9.1006923466920853e-03 - - 5.5405318737030029e-02 -4.9272969365119934e-01 - <_> - - 0 -1 620 -1.6937600076198578e-01 - - 5.4915368556976318e-01 -3.9581310003995895e-02 - <_> - - 0 -1 621 1.9913749769330025e-02 - - 9.4958506524562836e-02 -5.1041561365127563e-01 - <_> - - 0 -1 622 3.0223759822547436e-03 - - -6.3331179320812225e-02 2.0407359302043915e-01 - <_> - - 0 -1 623 -4.5423391275107861e-03 - - 4.2783120274543762e-01 -7.8888073563575745e-02 - <_> - - 0 -1 624 -3.5147000104188919e-02 - - -6.1061471700668335e-01 2.5506079196929932e-02 - <_> - - 0 -1 625 2.0077088847756386e-03 - - 6.3804052770137787e-02 -4.4934588670730591e-01 - <_> - - 0 -1 626 -1.5540630556643009e-03 - - -4.0192028880119324e-01 3.1636688858270645e-02 - <_> - - 0 -1 627 1.4254899695515633e-02 - - -7.9566307365894318e-02 3.8706529140472412e-01 - <_> - - 0 -1 628 1.1024920269846916e-02 - - 6.7027233541011810e-02 -2.8063619136810303e-01 - <_> - - 0 -1 629 -5.1981899887323380e-03 - - 3.6570119857788086e-01 -1.1679860204458237e-01 - <_> - - 0 -1 630 4.9434448592364788e-03 - - 4.9997199326753616e-02 -1.4642210304737091e-01 - <_> - - 0 -1 631 -1.6670800745487213e-02 - - -4.9238750338554382e-01 6.1317440122365952e-02 - <_> - - 0 -1 632 7.7939140610396862e-03 - - -2.9953140765428543e-02 2.3316749930381775e-01 - <_> - - 0 -1 633 -1.4590610517188907e-03 - - -5.7006311416625977e-01 5.3406499326229095e-02 - <_> - - 0 -1 634 -2.2517830133438110e-02 - - 1.1464659869670868e-01 -1.2585699558258057e-01 - <_> - - 0 -1 635 1.4919370412826538e-02 - - 5.2204128354787827e-02 -5.6187790632247925e-01 - <_> - - 0 -1 636 -1.8656760454177856e-01 - - 6.0989791154861450e-01 -5.0142709165811539e-02 - <_> - - 0 -1 637 1.2466400221455842e-04 - - -3.2725819945335388e-01 8.6407169699668884e-02 - <_> - - 0 -1 638 -8.5008898749947548e-03 - - 4.0898931026458740e-01 -8.6464531719684601e-02 - <_> - - 0 -1 639 1.4465590007603168e-02 - - 5.5936750024557114e-02 -5.2939140796661377e-01 - <_> - - 0 -1 640 1.1536439880728722e-02 - - -9.3967936933040619e-02 4.0461421012878418e-01 - <_> - - 0 -1 641 1.6789000481367111e-02 - - 4.9098148941993713e-02 -6.1509531736373901e-01 - <_> - - 0 -1 642 -2.9727790970355272e-03 - - 1.5688349306583405e-01 -7.9878687858581543e-02 - <_> - - 0 -1 643 2.7876989915966988e-03 - - -1.1298049986362457e-01 2.3814339935779572e-01 - <_> - - 0 -1 644 2.6815771125257015e-03 - - -6.3131898641586304e-02 1.7341490089893341e-01 - <_> - - 0 -1 645 -1.6932430444285274e-03 - - 2.9134979844093323e-01 -9.7688913345336914e-02 - <_> - - 0 -1 646 -2.1838879212737083e-02 - - 2.2410179674625397e-01 -6.3271783292293549e-02 - <_> - - 0 -1 647 -4.6455059200525284e-02 - - -6.6729080677032471e-01 4.1569691151380539e-02 - <_> - - 0 -1 648 3.4257268905639648e-01 - - -4.3775469064712524e-02 4.2250889539718628e-01 - <_> - - 0 -1 649 -9.7134057432413101e-03 - - 2.8876009583473206e-01 -1.0904739797115326e-01 - <_> - - 0 -1 650 -1.9520539790391922e-03 - - 1.1463859677314758e-01 -1.0175020247697830e-01 - <_> - - 0 -1 651 -1.8771419301629066e-02 - - 6.2400698661804199e-01 -5.0913780927658081e-02 - <_> - - 0 -1 652 2.5264939665794373e-01 - - -2.2805340588092804e-01 1.4274069666862488e-01 - <_> - - 0 -1 653 -7.8301310539245605e-02 - - -4.9581411480903625e-01 5.4817609488964081e-02 - <_> - - 0 -1 654 -1.6115349531173706e-01 - - -5.7617807388305664e-01 4.2033191770315170e-02 - <_> - - 0 -1 655 1.3769039884209633e-02 - - 4.6666219830513000e-02 -5.0551378726959229e-01 - <_> - - 0 -1 656 -1.8329080194234848e-02 - - -7.9812979698181152e-01 -6.3357828184962273e-04 - <_> - - 0 -1 657 -3.9759539067745209e-03 - - 2.6330900192260742e-01 -1.0175059735774994e-01 - <_> - - 0 -1 658 1.9660349935293198e-02 - - 3.9909198880195618e-02 -6.7467451095581055e-01 - <_> - - 0 -1 659 -8.9697521179914474e-03 - - 5.5054008960723877e-02 -4.3380209803581238e-01 - <_> - - 0 -1 660 1.7052260041236877e-01 - - -8.9983023703098297e-02 1.5587039291858673e-01 - <_> - - 0 -1 661 -6.7584879696369171e-02 - - 1.8699319660663605e-01 -1.3449880480766296e-01 - <_> - - 0 -1 662 -4.9654832109808922e-03 - - 2.1740439534187317e-01 -6.8494133651256561e-02 - <_> - - 0 -1 663 -3.6419339012354612e-03 - - 2.2659860551357269e-01 -1.1511819809675217e-01 - <_> - - 0 -1 664 3.0941639095544815e-02 - - 9.5881456509232521e-03 -4.3764260411262512e-01 - <_> - - 0 -1 665 2.0714900456368923e-03 - - -6.9400407373905182e-02 3.5815268754959106e-01 - - <_> - - <_> - 2 7 8 12 -1. - <_> - 2 7 4 6 2. - <_> - 6 13 4 6 2. - <_> - - <_> - 3 7 8 2 -1. - <_> - 5 7 4 2 2. - <_> - - <_> - 6 4 3 4 -1. - <_> - 5 5 3 2 2. - 1 - <_> - - <_> - 4 0 8 18 -1. - <_> - 4 9 8 9 2. - <_> - - <_> - 0 18 3 2 -1. - <_> - 0 19 3 1 2. - <_> - - <_> - 11 0 1 10 -1. - <_> - 11 5 1 5 2. - <_> - - <_> - 0 0 10 1 -1. - <_> - 5 0 5 1 2. - <_> - - <_> - 2 5 8 14 -1. - <_> - 2 5 4 7 2. - <_> - 6 12 4 7 2. - <_> - - <_> - 0 0 12 8 -1. - <_> - 0 4 12 4 2. - <_> - - <_> - 2 7 6 10 -1. - <_> - 2 12 6 5 2. - <_> - - <_> - 8 2 4 8 -1. - <_> - 10 2 2 4 2. - <_> - 8 6 2 4 2. - <_> - - <_> - 0 2 4 8 -1. - <_> - 0 2 2 4 2. - <_> - 2 6 2 4 2. - <_> - - <_> - 0 18 12 2 -1. - <_> - 6 18 6 1 2. - <_> - 0 19 6 1 2. - <_> - - <_> - 0 14 12 6 -1. - <_> - 6 14 6 6 2. - <_> - - <_> - 6 12 2 6 -1. - <_> - 6 12 2 3 2. - 1 - <_> - - <_> - 6 12 6 2 -1. - <_> - 6 12 3 2 2. - 1 - <_> - - <_> - 6 8 6 6 -1. - <_> - 8 10 2 6 3. - 1 - <_> - - <_> - 3 6 9 3 -1. - <_> - 6 7 3 1 9. - <_> - - <_> - 0 0 1 12 -1. - <_> - 0 6 1 6 2. - <_> - - <_> - 6 2 4 5 -1. - <_> - 6 2 2 5 2. - 1 - <_> - - <_> - 4 5 4 4 -1. - <_> - 4 7 4 2 2. - <_> - - <_> - 8 0 4 4 -1. - <_> - 8 2 4 2 2. - <_> - - <_> - 3 0 3 20 -1. - <_> - 3 10 3 10 2. - <_> - - <_> - 9 16 3 4 -1. - <_> - 9 17 3 2 2. - <_> - - <_> - 0 0 4 4 -1. - <_> - 0 2 4 2 2. - <_> - - <_> - 9 16 3 4 -1. - <_> - 9 17 3 2 2. - <_> - - <_> - 0 16 3 4 -1. - <_> - 0 17 3 2 2. - <_> - - <_> - 3 7 8 1 -1. - <_> - 5 7 4 1 2. - <_> - - <_> - 0 4 9 6 -1. - <_> - 3 6 3 2 9. - <_> - - <_> - 6 13 6 1 -1. - <_> - 8 15 2 1 3. - 1 - <_> - - <_> - 6 13 1 6 -1. - <_> - 4 15 1 2 3. - 1 - <_> - - <_> - 2 3 9 2 -1. - <_> - 2 4 9 1 2. - <_> - - <_> - 0 6 1 4 -1. - <_> - 0 8 1 2 2. - <_> - - <_> - 4 8 7 10 -1. - <_> - 4 13 7 5 2. - <_> - - <_> - 2 7 8 12 -1. - <_> - 2 7 4 6 2. - <_> - 6 13 4 6 2. - <_> - - <_> - 6 5 3 3 -1. - <_> - 7 6 1 3 3. - 1 - <_> - - <_> - 6 5 3 3 -1. - <_> - 5 6 3 1 3. - 1 - <_> - - <_> - 5 16 4 4 -1. - <_> - 5 18 4 2 2. - <_> - - <_> - 0 17 12 3 -1. - <_> - 6 17 6 3 2. - <_> - - <_> - 0 15 12 3 -1. - <_> - 0 15 6 3 2. - <_> - - <_> - 0 0 2 16 -1. - <_> - 0 4 2 8 2. - <_> - - <_> - 2 0 8 13 -1. - <_> - 2 0 4 13 2. - <_> - - <_> - 0 0 6 2 -1. - <_> - 0 1 6 1 2. - <_> - - <_> - 7 18 5 2 -1. - <_> - 7 19 5 1 2. - <_> - - <_> - 0 18 5 2 -1. - <_> - 0 19 5 1 2. - <_> - - <_> - 6 15 2 3 -1. - <_> - 6 15 1 3 2. - 1 - <_> - - <_> - 6 15 3 2 -1. - <_> - 6 15 3 1 2. - 1 - <_> - - <_> - 2 7 8 12 -1. - <_> - 2 7 4 6 2. - <_> - 6 13 4 6 2. - <_> - - <_> - 5 16 4 4 -1. - <_> - 5 18 4 2 2. - <_> - - <_> - 6 3 6 6 -1. - <_> - 4 5 6 2 3. - 1 - <_> - - <_> - 0 16 12 4 -1. - <_> - 6 16 6 2 2. - <_> - 0 18 6 2 2. - <_> - - <_> - 0 2 10 4 -1. - <_> - 0 4 10 2 2. - <_> - - <_> - 8 9 2 8 -1. - <_> - 6 11 2 4 2. - 1 - <_> - - <_> - 4 9 8 3 -1. - <_> - 6 11 4 3 2. - 1 - <_> - - <_> - 6 12 1 6 -1. - <_> - 6 12 1 3 2. - 1 - <_> - - <_> - 6 12 6 1 -1. - <_> - 6 12 3 1 2. - 1 - <_> - - <_> - 8 1 4 10 -1. - <_> - 10 1 2 5 2. - <_> - 8 6 2 5 2. - <_> - - <_> - 0 0 1 12 -1. - <_> - 0 6 1 6 2. - <_> - - <_> - 9 0 2 1 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 3 0 1 2 -1. - <_> - 3 0 1 1 2. - 1 - <_> - - <_> - 6 4 3 3 -1. - <_> - 7 5 1 3 3. - 1 - <_> - - <_> - 6 5 3 3 -1. - <_> - 5 6 3 1 3. - 1 - <_> - - <_> - 10 2 2 3 -1. - <_> - 10 3 2 1 3. - <_> - - <_> - 0 2 2 3 -1. - <_> - 0 3 2 1 3. - <_> - - <_> - 4 8 8 4 -1. - <_> - 6 10 4 4 2. - 1 - <_> - - <_> - 3 6 9 3 -1. - <_> - 6 7 3 1 9. - <_> - - <_> - 0 1 4 10 -1. - <_> - 0 1 2 5 2. - <_> - 2 6 2 5 2. - <_> - - <_> - 3 3 8 17 -1. - <_> - 5 3 4 17 2. - <_> - - <_> - 4 0 4 8 -1. - <_> - 6 0 2 8 2. - <_> - - <_> - 6 10 6 3 -1. - <_> - 6 10 3 3 2. - 1 - <_> - - <_> - 0 18 4 2 -1. - <_> - 0 19 4 1 2. - <_> - - <_> - 6 10 6 3 -1. - <_> - 6 10 3 3 2. - 1 - <_> - - <_> - 1 6 9 3 -1. - <_> - 4 7 3 1 9. - <_> - - <_> - 6 10 6 3 -1. - <_> - 6 10 3 3 2. - 1 - <_> - - <_> - 6 10 3 6 -1. - <_> - 6 10 3 3 2. - 1 - <_> - - <_> - 0 0 12 10 -1. - <_> - 0 5 12 5 2. - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 4 5 4 8 -1. - <_> - 4 7 4 4 2. - <_> - - <_> - 0 0 2 3 -1. - <_> - 1 0 1 3 2. - <_> - - <_> - 0 8 12 4 -1. - <_> - 0 9 12 2 2. - <_> - - <_> - 1 3 1 3 -1. - <_> - 1 4 1 1 3. - <_> - - <_> - 4 9 8 2 -1. - <_> - 6 11 4 2 2. - 1 - <_> - - <_> - 5 3 2 6 -1. - <_> - 5 5 2 2 3. - <_> - - <_> - 0 0 1 8 -1. - <_> - 0 4 1 4 2. - <_> - - <_> - 2 5 8 14 -1. - <_> - 6 5 4 7 2. - <_> - 2 12 4 7 2. - <_> - - <_> - 0 6 1 8 -1. - <_> - 0 8 1 4 2. - <_> - - <_> - 0 17 12 3 -1. - <_> - 0 17 6 3 2. - <_> - - <_> - 4 0 2 3 -1. - <_> - 4 1 2 1 3. - <_> - - <_> - 5 12 6 8 -1. - <_> - 5 14 6 4 2. - <_> - - <_> - 3 11 4 9 -1. - <_> - 3 14 4 3 3. - <_> - - <_> - 2 0 10 16 -1. - <_> - 2 8 10 8 2. - <_> - - <_> - 5 15 3 2 -1. - <_> - 5 15 3 1 2. - 1 - <_> - - <_> - 8 15 4 1 -1. - <_> - 9 16 2 1 2. - 1 - <_> - - <_> - 4 15 1 4 -1. - <_> - 3 16 1 2 2. - 1 - <_> - - <_> - 6 14 3 3 -1. - <_> - 7 15 1 3 3. - 1 - <_> - - <_> - 6 14 3 3 -1. - <_> - 5 15 3 1 3. - 1 - <_> - - <_> - 3 6 8 2 -1. - <_> - 5 6 4 2 2. - <_> - - <_> - 3 2 6 17 -1. - <_> - 5 2 2 17 3. - <_> - - <_> - 11 0 1 2 -1. - <_> - 11 1 1 1 2. - <_> - - <_> - 6 14 4 2 -1. - <_> - 6 14 4 1 2. - 1 - <_> - - <_> - 3 0 8 1 -1. - <_> - 3 0 4 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 6 4 3 3 -1. - <_> - 7 5 1 3 3. - 1 - <_> - - <_> - 6 4 3 3 -1. - <_> - 5 5 3 1 3. - 1 - <_> - - <_> - 8 0 4 2 -1. - <_> - 10 0 2 1 2. - <_> - 8 1 2 1 2. - <_> - - <_> - 0 0 4 2 -1. - <_> - 0 0 2 1 2. - <_> - 2 1 2 1 2. - <_> - - <_> - 7 5 3 3 -1. - <_> - 8 6 1 3 3. - 1 - <_> - - <_> - 2 5 8 14 -1. - <_> - 2 5 4 7 2. - <_> - 6 12 4 7 2. - <_> - - <_> - 7 7 4 1 -1. - <_> - 7 7 2 1 2. - <_> - - <_> - 5 0 1 3 -1. - <_> - 5 1 1 1 3. - <_> - - <_> - 8 6 4 1 -1. - <_> - 8 6 2 1 2. - 1 - <_> - - <_> - 4 6 1 4 -1. - <_> - 4 6 1 2 2. - 1 - <_> - - <_> - 3 1 7 9 -1. - <_> - 3 4 7 3 3. - <_> - - <_> - 3 9 6 3 -1. - <_> - 3 9 3 3 2. - 1 - <_> - - <_> - 2 18 10 2 -1. - <_> - 7 18 5 1 2. - <_> - 2 19 5 1 2. - <_> - - <_> - 6 13 6 1 -1. - <_> - 6 13 3 1 2. - 1 - <_> - - <_> - 8 5 2 3 -1. - <_> - 8 5 1 3 2. - 1 - <_> - - <_> - 4 5 3 2 -1. - <_> - 4 5 3 1 2. - 1 - <_> - - <_> - 0 14 12 5 -1. - <_> - 0 14 6 5 2. - <_> - - <_> - 1 0 8 2 -1. - <_> - 5 0 4 2 2. - <_> - - <_> - 6 16 2 2 -1. - <_> - 6 16 1 2 2. - 1 - <_> - - <_> - 6 16 2 2 -1. - <_> - 6 16 2 1 2. - 1 - <_> - - <_> - 6 9 1 6 -1. - <_> - 4 11 1 2 3. - 1 - <_> - - <_> - 6 9 6 1 -1. - <_> - 8 11 2 1 3. - 1 - <_> - - <_> - 10 17 1 3 -1. - <_> - 10 18 1 1 3. - <_> - - <_> - 1 17 1 3 -1. - <_> - 1 18 1 1 3. - <_> - - <_> - 11 2 1 18 -1. - <_> - 11 8 1 6 3. - <_> - - <_> - 0 0 1 20 -1. - <_> - 0 5 1 10 2. - <_> - - <_> - 4 0 6 2 -1. - <_> - 7 0 3 1 2. - <_> - 4 1 3 1 2. - <_> - - <_> - 0 5 2 3 -1. - <_> - 0 6 2 1 3. - <_> - - <_> - 8 0 2 1 -1. - <_> - 8 0 1 1 2. - 1 - <_> - - <_> - 2 3 4 2 -1. - <_> - 3 4 2 2 2. - 1 - <_> - - <_> - 6 5 2 2 -1. - <_> - 6 5 2 1 2. - 1 - <_> - - <_> - 0 12 12 5 -1. - <_> - 3 12 6 5 2. - <_> - - <_> - 0 18 10 2 -1. - <_> - 0 18 5 1 2. - <_> - 5 19 5 1 2. - <_> - - <_> - 3 3 8 13 -1. - <_> - 5 3 4 13 2. - <_> - - <_> - 1 3 8 13 -1. - <_> - 3 3 4 13 2. - <_> - - <_> - 11 0 1 4 -1. - <_> - 11 0 1 2 2. - 1 - <_> - - <_> - 0 1 10 2 -1. - <_> - 0 1 5 1 2. - <_> - 5 2 5 1 2. - <_> - - <_> - 4 11 8 5 -1. - <_> - 4 11 4 5 2. - <_> - - <_> - 0 0 1 14 -1. - <_> - 0 7 1 7 2. - <_> - - <_> - 8 10 4 6 -1. - <_> - 6 12 4 2 3. - 1 - <_> - - <_> - 4 10 6 4 -1. - <_> - 6 12 2 4 3. - 1 - <_> - - <_> - 0 17 12 2 -1. - <_> - 0 17 6 2 2. - <_> - - <_> - 5 6 3 3 -1. - <_> - 4 7 3 1 3. - 1 - <_> - - <_> - 6 9 6 4 -1. - <_> - 6 9 3 4 2. - 1 - <_> - - <_> - 6 9 4 6 -1. - <_> - 6 9 4 3 2. - 1 - <_> - - <_> - 10 0 2 1 -1. - <_> - 10 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 8 9 3 2 -1. - <_> - 9 9 1 2 3. - <_> - - <_> - 0 0 2 4 -1. - <_> - 1 0 1 4 2. - <_> - - <_> - 8 9 3 2 -1. - <_> - 9 9 1 2 3. - <_> - - <_> - 1 9 3 2 -1. - <_> - 2 9 1 2 3. - <_> - - <_> - 8 1 4 1 -1. - <_> - 9 2 2 1 2. - 1 - <_> - - <_> - 4 1 1 4 -1. - <_> - 3 2 1 2 2. - 1 - <_> - - <_> - 0 2 12 4 -1. - <_> - 0 4 12 2 2. - <_> - - <_> - 8 9 3 8 -1. - <_> - 6 11 3 4 2. - 1 - <_> - - <_> - 2 6 8 14 -1. - <_> - 2 6 4 7 2. - <_> - 6 13 4 7 2. - <_> - - <_> - 11 18 1 2 -1. - <_> - 11 19 1 1 2. - <_> - - <_> - 0 18 2 2 -1. - <_> - 0 19 2 1 2. - <_> - - <_> - 6 3 6 3 -1. - <_> - 8 5 2 3 3. - 1 - <_> - - <_> - 4 6 4 4 -1. - <_> - 4 7 4 2 2. - <_> - - <_> - 8 0 2 3 -1. - <_> - 7 1 2 1 3. - 1 - <_> - - <_> - 4 0 3 2 -1. - <_> - 5 1 1 2 3. - 1 - <_> - - <_> - 11 7 1 2 -1. - <_> - 11 8 1 1 2. - <_> - - <_> - 0 7 1 2 -1. - <_> - 0 8 1 1 2. - <_> - - <_> - 4 0 8 8 -1. - <_> - 6 0 4 8 2. - <_> - - <_> - 0 12 12 7 -1. - <_> - 6 12 6 7 2. - <_> - - <_> - 8 0 2 1 -1. - <_> - 8 0 1 1 2. - 1 - <_> - - <_> - 4 0 1 2 -1. - <_> - 4 0 1 1 2. - 1 - <_> - - <_> - 6 10 2 6 -1. - <_> - 4 12 2 2 3. - 1 - <_> - - <_> - 0 4 1 3 -1. - <_> - 0 5 1 1 3. - <_> - - <_> - 9 8 3 4 -1. - <_> - 10 8 1 4 3. - <_> - - <_> - 0 6 1 2 -1. - <_> - 0 7 1 1 2. - <_> - - <_> - 4 4 6 12 -1. - <_> - 4 7 6 6 2. - <_> - - <_> - 3 16 4 4 -1. - <_> - 3 18 4 2 2. - <_> - - <_> - 6 3 3 6 -1. - <_> - 7 4 1 6 3. - 1 - <_> - - <_> - 6 3 6 3 -1. - <_> - 5 4 6 1 3. - 1 - <_> - - <_> - 7 5 3 3 -1. - <_> - 8 6 1 3 3. - 1 - <_> - - <_> - 5 5 3 3 -1. - <_> - 4 6 3 1 3. - 1 - <_> - - <_> - 11 0 1 6 -1. - <_> - 11 3 1 3 2. - <_> - - <_> - 0 4 6 16 -1. - <_> - 0 12 6 8 2. - <_> - - <_> - 11 0 1 6 -1. - <_> - 11 3 1 3 2. - <_> - - <_> - 6 12 6 1 -1. - <_> - 6 12 3 1 2. - 1 - <_> - - <_> - 0 13 12 3 -1. - <_> - 3 13 6 3 2. - <_> - - <_> - 4 6 8 2 -1. - <_> - 6 6 4 2 2. - <_> - - <_> - 4 2 4 2 -1. - <_> - 4 2 2 1 2. - <_> - 6 3 2 1 2. - <_> - - <_> - 10 0 2 6 -1. - <_> - 10 3 2 3 2. - <_> - - <_> - 0 4 4 4 -1. - <_> - 0 4 2 2 2. - <_> - 2 6 2 2 2. - <_> - - <_> - 10 0 2 6 -1. - <_> - 10 3 2 3 2. - <_> - - <_> - 0 0 2 6 -1. - <_> - 0 3 2 3 2. - <_> - - <_> - 11 18 1 2 -1. - <_> - 11 19 1 1 2. - <_> - - <_> - 0 18 1 2 -1. - <_> - 0 19 1 1 2. - <_> - - <_> - 6 13 1 6 -1. - <_> - 6 13 1 3 2. - 1 - <_> - - <_> - 0 17 12 3 -1. - <_> - 6 17 6 3 2. - <_> - - <_> - 0 13 12 6 -1. - <_> - 0 13 6 6 2. - <_> - - <_> - 0 5 8 4 -1. - <_> - 0 5 4 2 2. - <_> - 4 7 4 2 2. - <_> - - <_> - 1 0 10 3 -1. - <_> - 1 1 10 1 3. - <_> - - <_> - 0 2 12 6 -1. - <_> - 0 5 12 3 2. - <_> - - <_> - 5 0 5 18 -1. - <_> - 5 6 5 6 3. - <_> - - <_> - 0 0 9 9 -1. - <_> - 3 0 3 9 3. - <_> - - <_> - 11 6 1 3 -1. - <_> - 11 7 1 1 3. - <_> - - <_> - 2 12 4 2 -1. - <_> - 2 12 2 2 2. - 1 - <_> - - <_> - 11 6 1 3 -1. - <_> - 11 7 1 1 3. - <_> - - <_> - 1 10 3 1 -1. - <_> - 2 10 1 1 3. - <_> - - <_> - 9 14 3 4 -1. - <_> - 9 16 3 2 2. - <_> - - <_> - 0 14 3 4 -1. - <_> - 0 16 3 2 2. - <_> - - <_> - 7 5 3 3 -1. - <_> - 8 6 1 3 3. - 1 - <_> - - <_> - 5 5 3 3 -1. - <_> - 4 6 3 1 3. - 1 - <_> - - <_> - 11 6 1 3 -1. - <_> - 11 7 1 1 3. - <_> - - <_> - 0 6 1 3 -1. - <_> - 0 7 1 1 3. - <_> - - <_> - 3 6 6 8 -1. - <_> - 3 10 6 4 2. - <_> - - <_> - 6 4 4 3 -1. - <_> - 5 5 4 1 3. - 1 - <_> - - <_> - 8 5 3 4 -1. - <_> - 9 6 1 4 3. - 1 - <_> - - <_> - 4 5 4 3 -1. - <_> - 3 6 4 1 3. - 1 - <_> - - <_> - 7 0 3 1 -1. - <_> - 8 1 1 1 3. - 1 - <_> - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - <_> - - <_> - 6 3 6 3 -1. - <_> - 8 5 2 3 3. - 1 - <_> - - <_> - 5 4 2 4 -1. - <_> - 5 5 2 2 2. - <_> - - <_> - 3 14 6 6 -1. - <_> - 3 17 6 3 2. - <_> - - <_> - 0 5 8 12 -1. - <_> - 2 5 4 12 2. - <_> - - <_> - 11 0 1 4 -1. - <_> - 11 0 1 2 2. - 1 - <_> - - <_> - 1 0 4 1 -1. - <_> - 1 0 2 1 2. - 1 - <_> - - <_> - 4 18 6 2 -1. - <_> - 7 18 3 1 2. - <_> - 4 19 3 1 2. - <_> - - <_> - 0 18 8 2 -1. - <_> - 0 18 4 1 2. - <_> - 4 19 4 1 2. - <_> - - <_> - 4 0 8 8 -1. - <_> - 6 0 4 8 2. - <_> - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - <_> - - <_> - 10 0 2 1 -1. - <_> - 10 0 1 1 2. - <_> - - <_> - 6 13 6 1 -1. - <_> - 6 13 3 1 2. - 1 - <_> - - <_> - 0 13 12 1 -1. - <_> - 3 13 6 1 2. - <_> - - <_> - 0 11 8 5 -1. - <_> - 4 11 4 5 2. - <_> - - <_> - 8 6 4 14 -1. - <_> - 10 6 2 7 2. - <_> - 8 13 2 7 2. - <_> - - <_> - 0 6 4 14 -1. - <_> - 0 6 2 7 2. - <_> - 2 13 2 7 2. - <_> - - <_> - 4 3 8 2 -1. - <_> - 4 4 8 1 2. - <_> - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - <_> - - <_> - 1 0 10 3 -1. - <_> - 1 1 10 1 3. - <_> - - <_> - 0 18 3 2 -1. - <_> - 1 18 1 2 3. - <_> - - <_> - 0 4 12 12 -1. - <_> - 0 8 12 4 3. - <_> - - <_> - 0 6 6 14 -1. - <_> - 0 13 6 7 2. - <_> - - <_> - 8 0 3 1 -1. - <_> - 9 1 1 1 3. - 1 - <_> - - <_> - 5 7 2 3 -1. - <_> - 4 8 2 1 3. - 1 - <_> - - <_> - 11 3 1 3 -1. - <_> - 11 4 1 1 3. - <_> - - <_> - 2 1 3 2 -1. - <_> - 2 1 3 1 2. - 1 - <_> - - <_> - 11 3 1 3 -1. - <_> - 11 4 1 1 3. - <_> - - <_> - 3 17 1 2 -1. - <_> - 3 17 1 1 2. - 1 - <_> - - <_> - 11 3 1 3 -1. - <_> - 11 4 1 1 3. - <_> - - <_> - 6 6 2 3 -1. - <_> - 5 7 2 1 3. - 1 - <_> - - <_> - 11 3 1 3 -1. - <_> - 11 4 1 1 3. - <_> - - <_> - 0 3 1 3 -1. - <_> - 0 4 1 1 3. - <_> - - <_> - 6 4 3 2 -1. - <_> - 7 5 1 2 3. - 1 - <_> - - <_> - 6 4 2 3 -1. - <_> - 5 5 2 1 3. - 1 - <_> - - <_> - 11 8 1 4 -1. - <_> - 11 9 1 2 2. - <_> - - <_> - 6 2 4 6 -1. - <_> - 4 4 4 2 3. - 1 - <_> - - <_> - 5 17 6 2 -1. - <_> - 8 17 3 1 2. - <_> - 5 18 3 1 2. - <_> - - <_> - 3 0 6 2 -1. - <_> - 3 0 3 1 2. - <_> - 6 1 3 1 2. - <_> - - <_> - 11 3 1 2 -1. - <_> - 11 4 1 1 2. - <_> - - <_> - 0 3 1 2 -1. - <_> - 0 4 1 1 2. - <_> - - <_> - 10 4 2 4 -1. - <_> - 10 5 2 2 2. - <_> - - <_> - 0 8 1 4 -1. - <_> - 0 9 1 2 2. - <_> - - <_> - 0 13 12 5 -1. - <_> - 0 13 6 5 2. - <_> - - <_> - 1 9 10 10 -1. - <_> - 1 9 5 5 2. - <_> - 6 14 5 5 2. - <_> - - <_> - 1 1 6 2 -1. - <_> - 1 1 3 1 2. - <_> - 4 2 3 1 2. - <_> - - <_> - 7 4 3 5 -1. - <_> - 8 5 1 5 3. - 1 - <_> - - <_> - 6 3 6 1 -1. - <_> - 8 5 2 1 3. - 1 - <_> - - <_> - 11 4 1 12 -1. - <_> - 11 8 1 4 3. - <_> - - <_> - 0 4 1 12 -1. - <_> - 0 8 1 4 3. - <_> - - <_> - 8 8 4 8 -1. - <_> - 6 10 4 4 2. - 1 - <_> - - <_> - 1 7 10 12 -1. - <_> - 1 7 5 6 2. - <_> - 6 13 5 6 2. - <_> - - <_> - 6 3 6 6 -1. - <_> - 8 5 2 6 3. - 1 - <_> - - <_> - 3 6 4 4 -1. - <_> - 3 6 2 2 2. - <_> - 5 8 2 2 2. - <_> - - <_> - 10 2 2 2 -1. - <_> - 10 3 2 1 2. - <_> - - <_> - 0 2 2 2 -1. - <_> - 0 3 2 1 2. - <_> - - <_> - 8 17 2 1 -1. - <_> - 8 17 1 1 2. - 1 - <_> - - <_> - 0 8 3 3 -1. - <_> - 1 8 1 3 3. - <_> - - <_> - 5 14 3 6 -1. - <_> - 6 14 1 6 3. - <_> - - <_> - 4 14 3 5 -1. - <_> - 5 14 1 5 3. - <_> - - <_> - 10 0 2 2 -1. - <_> - 10 1 2 1 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 1 2 1 2. - <_> - - <_> - 0 12 12 7 -1. - <_> - 0 12 6 7 2. - <_> - - <_> - 6 14 3 2 -1. - <_> - 7 15 1 2 3. - 1 - <_> - - <_> - 11 16 1 4 -1. - <_> - 11 18 1 2 2. - <_> - - <_> - 0 16 1 4 -1. - <_> - 0 18 1 2 2. - <_> - - <_> - 4 2 6 4 -1. - <_> - 4 4 6 2 2. - <_> - - <_> - 5 6 3 3 -1. - <_> - 4 7 3 1 3. - 1 - <_> - - <_> - 8 0 4 20 -1. - <_> - 8 10 4 10 2. - <_> - - <_> - 3 11 2 3 -1. - <_> - 3 12 2 1 3. - <_> - - <_> - 8 0 4 20 -1. - <_> - 8 10 4 10 2. - <_> - - <_> - 0 0 4 20 -1. - <_> - 0 10 4 10 2. - <_> - - <_> - 7 5 3 3 -1. - <_> - 6 6 3 1 3. - 1 - <_> - - <_> - 5 5 3 3 -1. - <_> - 6 6 1 3 3. - 1 - <_> - - <_> - 7 0 3 1 -1. - <_> - 8 1 1 1 3. - 1 - <_> - - <_> - 5 0 1 3 -1. - <_> - 4 1 1 1 3. - 1 - <_> - - <_> - 0 9 12 3 -1. - <_> - 0 10 12 1 3. - <_> - - <_> - 0 0 8 1 -1. - <_> - 2 0 4 1 2. - <_> - - <_> - 7 13 4 2 -1. - <_> - 9 13 2 1 2. - <_> - 7 14 2 1 2. - <_> - - <_> - 1 13 4 2 -1. - <_> - 1 13 2 1 2. - <_> - 3 14 2 1 2. - <_> - - <_> - 6 3 6 6 -1. - <_> - 8 5 2 6 3. - 1 - <_> - - <_> - 2 9 2 1 -1. - <_> - 3 9 1 1 2. - <_> - - <_> - 6 3 6 6 -1. - <_> - 8 5 2 6 3. - 1 - <_> - - <_> - 6 3 3 6 -1. - <_> - 4 5 3 2 3. - 1 - <_> - - <_> - 10 6 2 3 -1. - <_> - 10 7 2 1 3. - <_> - - <_> - 6 3 4 3 -1. - <_> - 5 4 4 1 3. - 1 - <_> - - <_> - 7 0 3 1 -1. - <_> - 8 1 1 1 3. - 1 - <_> - - <_> - 6 5 1 3 -1. - <_> - 5 6 1 1 3. - 1 - <_> - - <_> - 8 9 3 8 -1. - <_> - 6 11 3 4 2. - 1 - <_> - - <_> - 4 9 8 3 -1. - <_> - 6 11 4 3 2. - 1 - <_> - - <_> - 6 0 1 3 -1. - <_> - 6 1 1 1 3. - <_> - - <_> - 4 0 4 2 -1. - <_> - 4 0 2 1 2. - <_> - 6 1 2 1 2. - <_> - - <_> - 0 10 12 2 -1. - <_> - 0 11 12 1 2. - <_> - - <_> - 0 11 8 5 -1. - <_> - 4 11 4 5 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 7 0 2 2 2. - <_> - - <_> - 2 2 7 8 -1. - <_> - 2 4 7 4 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 7 0 2 2 2. - <_> - - <_> - 1 0 4 2 -1. - <_> - 3 0 2 2 2. - <_> - - <_> - 9 17 3 3 -1. - <_> - 9 18 3 1 3. - <_> - - <_> - 0 17 3 3 -1. - <_> - 0 18 3 1 3. - <_> - - <_> - 0 18 12 2 -1. - <_> - 0 18 6 2 2. - <_> - - <_> - 0 11 12 5 -1. - <_> - 3 11 6 5 2. - <_> - - <_> - 8 7 4 1 -1. - <_> - 8 7 2 1 2. - 1 - <_> - - <_> - 4 7 1 4 -1. - <_> - 4 7 1 2 2. - 1 - <_> - - <_> - 4 0 6 7 -1. - <_> - 6 0 2 7 3. - <_> - - <_> - 2 0 6 7 -1. - <_> - 4 0 2 7 3. - <_> - - <_> - 0 16 12 3 -1. - <_> - 0 17 12 1 3. - <_> - - <_> - 4 17 4 2 -1. - <_> - 4 17 2 1 2. - <_> - 6 18 2 1 2. - <_> - - <_> - 9 0 3 1 -1. - <_> - 10 0 1 1 3. - <_> - - <_> - 0 0 3 1 -1. - <_> - 1 0 1 1 3. - <_> - - <_> - 6 4 3 2 -1. - <_> - 7 5 1 2 3. - 1 - <_> - - <_> - 3 6 3 1 -1. - <_> - 4 6 1 1 3. - <_> - - <_> - 9 2 3 7 -1. - <_> - 10 3 1 7 3. - 1 - <_> - - <_> - 5 5 2 2 -1. - <_> - 5 5 2 1 2. - 1 - <_> - - <_> - 7 5 3 4 -1. - <_> - 8 6 1 4 3. - 1 - <_> - - <_> - 5 5 4 3 -1. - <_> - 4 6 4 1 3. - 1 - <_> - - <_> - 10 4 2 2 -1. - <_> - 10 5 2 1 2. - <_> - - <_> - 0 3 2 3 -1. - <_> - 0 4 2 1 3. - <_> - - <_> - 10 4 2 2 -1. - <_> - 10 5 2 1 2. - <_> - - <_> - 0 4 2 2 -1. - <_> - 0 5 2 1 2. - <_> - - <_> - 7 10 2 1 -1. - <_> - 7 10 1 1 2. - <_> - - <_> - 3 10 2 1 -1. - <_> - 4 10 1 1 2. - <_> - - <_> - 5 0 2 2 -1. - <_> - 5 1 2 1 2. - <_> - - <_> - 5 14 4 2 -1. - <_> - 5 14 4 1 2. - 1 - <_> - - <_> - 4 6 3 3 -1. - <_> - 4 7 3 1 3. - <_> - - <_> - 3 5 6 14 -1. - <_> - 6 5 3 7 2. - <_> - 3 12 3 7 2. - <_> - - <_> - 3 0 3 2 -1. - <_> - 3 1 3 1 2. - <_> - - <_> - 7 18 5 2 -1. - <_> - 7 19 5 1 2. - <_> - - <_> - 0 18 10 2 -1. - <_> - 0 19 10 1 2. - <_> - - <_> - 11 2 1 15 -1. - <_> - 11 7 1 5 3. - <_> - - <_> - 0 4 1 6 -1. - <_> - 0 7 1 3 2. - <_> - - <_> - 3 2 9 8 -1. - <_> - 3 4 9 4 2. - <_> - - <_> - 0 15 12 5 -1. - <_> - 6 15 6 5 2. - <_> - - <_> - 6 9 3 6 -1. - <_> - 4 11 3 2 3. - 1 - <_> - - <_> - 6 9 6 3 -1. - <_> - 8 11 2 3 3. - 1 - <_> - - <_> - 2 0 10 2 -1. - <_> - 2 0 5 2 2. - <_> - - <_> - 0 0 10 2 -1. - <_> - 5 0 5 2 2. - <_> - - <_> - 6 3 6 6 -1. - <_> - 8 5 2 6 3. - 1 - <_> - - <_> - 6 3 6 6 -1. - <_> - 4 5 6 2 3. - 1 - <_> - - <_> - 6 0 6 5 -1. - <_> - 6 0 3 5 2. - 1 - <_> - - <_> - 6 0 5 6 -1. - <_> - 6 0 5 3 2. - 1 - <_> - - <_> - 8 8 3 2 -1. - <_> - 9 9 1 2 3. - 1 - <_> - - <_> - 4 8 2 3 -1. - <_> - 3 9 2 1 3. - 1 - <_> - - <_> - 11 6 1 3 -1. - <_> - 11 7 1 1 3. - <_> - - <_> - 0 6 1 3 -1. - <_> - 0 7 1 1 3. - <_> - - <_> - 0 11 12 8 -1. - <_> - 0 15 12 4 2. - <_> - - <_> - 3 13 6 3 -1. - <_> - 5 13 2 3 3. - <_> - - <_> - 5 16 2 4 -1. - <_> - 5 17 2 2 2. - <_> - - <_> - 1 1 2 1 -1. - <_> - 1 1 1 1 2. - 1 - <_> - - <_> - 6 15 2 3 -1. - <_> - 5 16 2 1 3. - 1 - <_> - - <_> - 5 5 3 3 -1. - <_> - 4 6 3 1 3. - 1 - <_> - - <_> - 6 5 2 3 -1. - <_> - 6 6 2 1 3. - <_> - - <_> - 4 5 2 3 -1. - <_> - 4 6 2 1 3. - <_> - - <_> - 10 5 2 3 -1. - <_> - 10 6 2 1 3. - <_> - - <_> - 6 5 2 3 -1. - <_> - 5 6 2 1 3. - 1 - <_> - - <_> - 8 7 1 8 -1. - <_> - 6 9 1 4 2. - 1 - <_> - - <_> - 0 5 2 3 -1. - <_> - 0 6 2 1 3. - <_> - - <_> - 5 5 2 3 -1. - <_> - 5 5 1 3 2. - <_> - - <_> - 4 7 8 1 -1. - <_> - 6 9 4 1 2. - 1 - <_> - - <_> - 6 15 2 3 -1. - <_> - 5 16 2 1 3. - 1 - <_> - - <_> - 6 15 3 2 -1. - <_> - 7 16 1 2 3. - 1 - <_> - - <_> - 9 13 2 3 -1. - <_> - 9 14 2 1 3. - <_> - - <_> - 1 13 2 3 -1. - <_> - 1 14 2 1 3. - <_> - - <_> - 0 5 12 12 -1. - <_> - 0 9 12 4 3. - <_> - - <_> - 0 9 3 2 -1. - <_> - 1 9 1 2 3. - <_> - - <_> - 6 13 6 1 -1. - <_> - 8 15 2 1 3. - 1 - <_> - - <_> - 0 9 2 4 -1. - <_> - 0 9 1 2 2. - <_> - 1 11 1 2 2. - <_> - - <_> - 2 17 8 2 -1. - <_> - 6 17 4 1 2. - <_> - 2 18 4 1 2. - <_> - - <_> - 1 8 9 2 -1. - <_> - 1 9 9 1 2. - <_> - - <_> - 5 4 1 4 -1. - <_> - 5 5 1 2 2. - <_> - - <_> - 8 0 3 3 -1. - <_> - 7 1 3 1 3. - 1 - <_> - - <_> - 4 0 3 3 -1. - <_> - 5 1 1 3 3. - 1 - <_> - - <_> - 0 13 12 6 -1. - <_> - 0 13 6 6 2. - <_> - - <_> - 5 4 3 3 -1. - <_> - 6 5 1 3 3. - 1 - <_> - - <_> - 9 17 1 3 -1. - <_> - 9 18 1 1 3. - <_> - - <_> - 2 17 1 3 -1. - <_> - 2 18 1 1 3. - <_> - - <_> - 0 9 12 6 -1. - <_> - 0 11 12 2 3. - <_> - - <_> - 5 6 6 2 -1. - <_> - 5 6 3 2 2. - 1 - <_> - - <_> - 6 4 3 4 -1. - <_> - 7 5 1 4 3. - 1 - <_> - - <_> - 6 4 4 3 -1. - <_> - 5 5 4 1 3. - 1 - <_> - - <_> - 11 4 1 16 -1. - <_> - 11 8 1 8 2. - <_> - - <_> - 0 0 1 20 -1. - <_> - 0 5 1 10 2. - <_> - - <_> - 9 0 2 1 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 3 0 1 2 -1. - <_> - 3 0 1 1 2. - 1 - <_> - - <_> - 6 13 6 6 -1. - <_> - 9 13 3 3 2. - <_> - 6 16 3 3 2. - <_> - - <_> - 6 10 6 4 -1. - <_> - 8 12 2 4 3. - 1 - <_> - - <_> - 1 0 10 3 -1. - <_> - 1 1 10 1 3. - <_> - - <_> - 0 13 6 6 -1. - <_> - 0 13 3 3 2. - <_> - 3 16 3 3 2. - <_> - - <_> - 8 8 3 1 -1. - <_> - 9 9 1 1 3. - 1 - <_> - - <_> - 0 7 2 2 -1. - <_> - 0 8 2 1 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 9 1 2 2. - <_> - - <_> - 2 9 2 2 -1. - <_> - 3 9 1 2 2. - <_> - - <_> - 11 1 1 2 -1. - <_> - 11 2 1 1 2. - <_> - - <_> - 5 0 1 3 -1. - <_> - 4 1 1 1 3. - 1 - <_> - - <_> - 4 4 5 12 -1. - <_> - 4 8 5 4 3. - <_> - - <_> - 0 0 3 3 -1. - <_> - 1 0 1 3 3. - <_> - - <_> - 8 7 3 3 -1. - <_> - 9 8 1 3 3. - 1 - <_> - - <_> - 4 7 3 3 -1. - <_> - 3 8 3 1 3. - 1 - <_> - - <_> - 11 1 1 2 -1. - <_> - 11 2 1 1 2. - <_> - - <_> - 0 1 1 2 -1. - <_> - 0 2 1 1 2. - <_> - - <_> - 8 17 2 1 -1. - <_> - 8 17 1 1 2. - 1 - <_> - - <_> - 4 17 1 2 -1. - <_> - 4 17 1 1 2. - 1 - <_> - - <_> - 7 6 2 4 -1. - <_> - 8 6 1 2 2. - <_> - 7 8 1 2 2. - <_> - - <_> - 6 8 6 6 -1. - <_> - 6 8 6 3 2. - 1 - <_> - - <_> - 7 6 2 4 -1. - <_> - 8 6 1 2 2. - <_> - 7 8 1 2 2. - <_> - - <_> - 3 6 2 4 -1. - <_> - 3 6 1 2 2. - <_> - 4 8 1 2 2. - <_> - - <_> - 6 1 6 2 -1. - <_> - 8 3 2 2 3. - 1 - <_> - - <_> - 0 11 6 5 -1. - <_> - 3 11 3 5 2. - <_> - - <_> - 7 13 3 3 -1. - <_> - 8 13 1 3 3. - <_> - - <_> - 2 13 3 3 -1. - <_> - 3 13 1 3 3. - <_> - - <_> - 6 1 6 2 -1. - <_> - 8 3 2 2 3. - 1 - <_> - - <_> - 6 1 2 6 -1. - <_> - 4 3 2 2 3. - 1 - <_> - - <_> - 0 0 12 7 -1. - <_> - 0 0 6 7 2. - <_> - - <_> - 1 9 10 3 -1. - <_> - 1 10 10 1 3. - <_> - - <_> - 0 9 12 4 -1. - <_> - 0 10 12 2 2. - <_> - - <_> - 0 5 3 15 -1. - <_> - 0 10 3 5 3. - <_> - - <_> - 5 0 7 18 -1. - <_> - 5 9 7 9 2. - <_> - - <_> - 0 0 4 5 -1. - <_> - 2 0 2 5 2. - <_> - - <_> - 4 2 4 2 -1. - <_> - 4 2 2 1 2. - <_> - 6 3 2 1 2. - <_> - - <_> - 6 5 3 3 -1. - <_> - 7 6 1 3 3. - 1 - <_> - - <_> - 3 7 6 2 -1. - <_> - 3 7 3 1 2. - <_> - 6 8 3 1 2. - <_> - - <_> - 1 8 10 10 -1. - <_> - 6 8 5 5 2. - <_> - 1 13 5 5 2. - <_> - - <_> - 1 0 10 3 -1. - <_> - 1 1 10 1 3. - <_> - - <_> - 0 17 12 3 -1. - <_> - 0 17 6 3 2. - <_> - - <_> - 0 0 1 12 -1. - <_> - 0 6 1 6 2. - <_> - - <_> - 10 17 2 1 -1. - <_> - 10 17 1 1 2. - 1 - <_> - - <_> - 0 18 12 2 -1. - <_> - 0 18 6 1 2. - <_> - 6 19 6 1 2. - <_> - - <_> - 6 3 3 5 -1. - <_> - 7 4 1 5 3. - 1 - <_> - - <_> - 6 3 5 3 -1. - <_> - 5 4 5 1 3. - 1 - <_> - - <_> - 11 5 1 3 -1. - <_> - 11 6 1 1 3. - <_> - - <_> - 0 5 1 3 -1. - <_> - 0 6 1 1 3. - <_> - - <_> - 7 5 3 2 -1. - <_> - 8 6 1 2 3. - 1 - <_> - - <_> - 5 5 2 3 -1. - <_> - 4 6 2 1 3. - 1 - <_> - - <_> - 6 0 2 1 -1. - <_> - 6 0 1 1 2. - <_> - - <_> - 5 0 2 2 -1. - <_> - 5 1 2 1 2. - <_> - - <_> - 11 8 1 2 -1. - <_> - 11 9 1 1 2. - <_> - - <_> - 0 8 1 2 -1. - <_> - 0 9 1 1 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 9 0 2 1 2. - <_> - 7 1 2 1 2. - <_> - - <_> - 4 0 2 2 -1. - <_> - 5 0 1 2 2. - <_> - - <_> - 8 0 3 1 -1. - <_> - 9 1 1 1 3. - 1 - <_> - - <_> - 0 4 8 12 -1. - <_> - 0 7 8 6 2. - <_> - - <_> - 0 14 12 6 -1. - <_> - 0 16 12 2 3. - <_> - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - <_> - - <_> - 10 17 2 1 -1. - <_> - 10 17 1 1 2. - 1 - <_> - - <_> - 2 17 1 2 -1. - <_> - 2 17 1 1 2. - 1 - <_> - - <_> - 9 2 3 1 -1. - <_> - 10 3 1 1 3. - 1 - <_> - - <_> - 3 2 1 3 -1. - <_> - 2 3 1 1 3. - 1 - <_> - - <_> - 10 11 2 2 -1. - <_> - 10 12 2 1 2. - <_> - - <_> - 0 9 12 8 -1. - <_> - 0 11 12 4 2. - <_> - - <_> - 5 8 2 8 -1. - <_> - 5 10 2 4 2. - <_> - - <_> - 5 5 1 2 -1. - <_> - 5 6 1 1 2. - <_> - - <_> - 9 4 3 4 -1. - <_> - 9 5 3 2 2. - <_> - - <_> - 1 7 4 1 -1. - <_> - 3 7 2 1 2. - <_> - - <_> - 10 9 2 1 -1. - <_> - 10 9 1 1 2. - <_> - - <_> - 0 9 2 1 -1. - <_> - 1 9 1 1 2. - <_> - - <_> - 10 6 2 1 -1. - <_> - 10 6 1 1 2. - 1 - <_> - - <_> - 2 6 1 2 -1. - <_> - 2 6 1 1 2. - 1 - <_> - - <_> - 6 5 1 3 -1. - <_> - 6 6 1 1 3. - <_> - - <_> - 0 4 1 3 -1. - <_> - 0 5 1 1 3. - <_> - - <_> - 7 0 4 2 -1. - <_> - 9 0 2 1 2. - <_> - 7 1 2 1 2. - <_> - - <_> - 1 0 4 2 -1. - <_> - 1 0 2 1 2. - <_> - 3 1 2 1 2. - <_> - - <_> - 5 0 3 3 -1. - <_> - 6 0 1 3 3. - <_> - - <_> - 4 11 3 3 -1. - <_> - 5 12 1 3 3. - 1 - <_> - - <_> - 6 10 1 6 -1. - <_> - 6 10 1 3 2. - 1 - <_> - - <_> - 2 9 2 1 -1. - <_> - 3 9 1 1 2. - <_> - - <_> - 9 0 3 2 -1. - <_> - 9 1 3 1 2. - <_> - - <_> - 6 11 6 1 -1. - <_> - 6 11 3 1 2. - 1 - <_> - - <_> - 7 15 1 3 -1. - <_> - 6 16 1 1 3. - 1 - <_> - - <_> - 2 16 6 2 -1. - <_> - 2 16 3 1 2. - <_> - 5 17 3 1 2. - <_> - - <_> - 6 1 2 6 -1. - <_> - 6 1 1 6 2. - 1 - <_> - - <_> - 6 1 6 2 -1. - <_> - 6 1 6 1 2. - 1 - <_> - - <_> - 8 9 3 1 -1. - <_> - 9 9 1 1 3. - <_> - - <_> - 1 9 3 1 -1. - <_> - 2 9 1 1 3. - <_> - - <_> - 6 2 6 1 -1. - <_> - 8 4 2 1 3. - 1 - <_> - - <_> - 7 7 2 4 -1. - <_> - 8 7 1 2 2. - <_> - 7 9 1 2 2. - <_> - - <_> - 3 7 2 4 -1. - <_> - 3 7 1 2 2. - <_> - 4 9 1 2 2. - <_> - - <_> - 6 3 6 3 -1. - <_> - 8 5 2 3 3. - 1 - <_> - - <_> - 2 4 5 12 -1. - <_> - 2 7 5 6 2. - <_> - - <_> - 5 0 7 18 -1. - <_> - 5 9 7 9 2. - <_> - - <_> - 0 0 7 18 -1. - <_> - 0 9 7 9 2. - <_> - - <_> - 11 9 1 6 -1. - <_> - 11 12 1 3 2. - <_> - - <_> - 4 0 4 2 -1. - <_> - 4 0 2 1 2. - <_> - 6 1 2 1 2. - <_> - - <_> - 11 7 1 6 -1. - <_> - 11 9 1 2 3. - <_> - - <_> - 0 7 1 6 -1. - <_> - 0 9 1 2 3. - <_> - - <_> - 5 0 2 3 -1. - <_> - 5 0 1 3 2. - <_> - - <_> - 3 15 6 2 -1. - <_> - 3 15 3 1 2. - <_> - 6 16 3 1 2. - <_> - - <_> - 6 13 1 6 -1. - <_> - 6 13 1 3 2. - 1 - <_> - - <_> - 0 11 8 5 -1. - <_> - 4 11 4 5 2. - <_> - - <_> - 10 1 2 5 -1. - <_> - 10 1 1 5 2. - <_> - - <_> - 0 7 12 13 -1. - <_> - 6 7 6 13 2. - <_> - - <_> - 8 8 3 8 -1. - <_> - 6 10 3 4 2. - 1 - <_> - - <_> - 4 8 8 3 -1. - <_> - 6 10 4 3 2. - 1 - <_> - - <_> - 1 0 10 3 -1. - <_> - 1 1 10 1 3. - <_> - - <_> - 0 2 1 2 -1. - <_> - 0 3 1 1 2. - <_> - - <_> - 9 12 2 3 -1. - <_> - 9 13 2 1 3. - <_> - - <_> - 1 12 2 3 -1. - <_> - 1 13 2 1 3. - <_> - - <_> - 9 0 3 1 -1. - <_> - 10 1 1 1 3. - 1 - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 6 3 6 3 -1. - <_> - 8 5 2 3 3. - 1 - <_> - - <_> - 6 3 3 6 -1. - <_> - 4 5 3 2 3. - 1 - <_> - - <_> - 7 5 2 3 -1. - <_> - 7 5 1 3 2. - 1 - <_> - - <_> - 5 5 3 2 -1. - <_> - 5 5 3 1 2. - 1 - <_> - - <_> - 8 10 2 1 -1. - <_> - 8 10 1 1 2. - <_> - - <_> - 2 10 2 1 -1. - <_> - 3 10 1 1 2. - <_> - - <_> - 4 4 4 2 -1. - <_> - 4 5 4 1 2. - <_> - - <_> - 0 9 12 9 -1. - <_> - 3 9 6 9 2. - <_> - - <_> - 9 12 1 3 -1. - <_> - 9 13 1 1 3. - <_> - - <_> - 2 12 1 3 -1. - <_> - 2 13 1 1 3. - <_> - - <_> - 6 12 3 5 -1. - <_> - 7 13 1 5 3. - 1 - <_> - - <_> - 6 12 5 3 -1. - <_> - 5 13 5 1 3. - 1 - <_> - - <_> - 3 17 6 3 -1. - <_> - 3 18 6 1 3. - <_> - - <_> - 5 15 2 4 -1. - <_> - 5 16 2 2 2. - <_> - - <_> - 7 18 3 2 -1. - <_> - 8 18 1 2 3. - <_> - - <_> - 1 4 2 4 -1. - <_> - 1 5 2 2 2. - <_> - - <_> - 10 4 2 3 -1. - <_> - 9 5 2 1 3. - 1 - <_> - - <_> - 2 4 3 2 -1. - <_> - 3 5 1 2 3. - 1 - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 6 1 1 3. - 1 - <_> - - <_> - 6 6 2 3 -1. - <_> - 5 7 2 1 3. - 1 - <_> - - <_> - 6 3 6 6 -1. - <_> - 8 5 2 6 3. - 1 - <_> - - <_> - 6 3 6 6 -1. - <_> - 4 5 6 2 3. - 1 - <_> - - <_> - 10 4 2 3 -1. - <_> - 10 5 2 1 3. - <_> - - <_> - 0 18 1 2 -1. - <_> - 0 19 1 1 2. - <_> - - <_> - 0 1 12 8 -1. - <_> - 0 5 12 4 2. - <_> - - <_> - 0 4 2 3 -1. - <_> - 0 5 2 1 3. - <_> - - <_> - 7 6 3 2 -1. - <_> - 8 7 1 2 3. - 1 - <_> - - <_> - 5 6 2 3 -1. - <_> - 4 7 2 1 3. - 1 - <_> - - <_> - 6 4 3 2 -1. - <_> - 7 5 1 2 3. - 1 - <_> - - <_> - 6 4 2 3 -1. - <_> - 5 5 2 1 3. - 1 - <_> - - <_> - 5 0 3 2 -1. - <_> - 6 0 1 2 3. - <_> - - <_> - 5 15 3 2 -1. - <_> - 5 15 3 1 2. - 1 - <_> - - <_> - 5 0 1 3 -1. - <_> - 5 1 1 1 3. - <_> - - <_> - 5 4 4 3 -1. - <_> - 5 5 4 1 3. - <_> - - <_> - 3 6 3 3 -1. - <_> - 4 7 1 1 9. - <_> - - <_> - 7 16 1 4 -1. - <_> - 7 18 1 2 2. - <_> - - <_> - 4 16 1 4 -1. - <_> - 4 18 1 2 2. - <_> - - <_> - 6 13 1 6 -1. - <_> - 6 13 1 3 2. - 1 - <_> - - <_> - 6 13 6 1 -1. - <_> - 6 13 3 1 2. - 1 - <_> - - <_> - 6 7 1 6 -1. - <_> - 4 9 1 2 3. - 1 - <_> - - <_> - 6 7 6 1 -1. - <_> - 8 9 2 1 3. - 1 - <_> - - <_> - 11 9 1 6 -1. - <_> - 11 12 1 3 2. - <_> - - <_> - 0 9 1 6 -1. - <_> - 0 12 1 3 2. - <_> - - <_> - 0 0 12 1 -1. - <_> - 3 0 6 1 2. - <_> - - <_> - 3 0 6 8 -1. - <_> - 3 4 6 4 2. - <_> - - <_> - 3 3 6 12 -1. - <_> - 3 7 6 4 3. - <_> - - <_> - 4 6 1 2 -1. - <_> - 4 7 1 1 2. - <_> - - <_> - 11 0 1 2 -1. - <_> - 11 1 1 1 2. - <_> - - <_> - 0 12 8 3 -1. - <_> - 4 12 4 3 2. - <_> - - <_> - 10 0 2 4 -1. - <_> - 11 0 1 2 2. - <_> - 10 2 1 2 2. - <_> - - <_> - 0 0 2 4 -1. - <_> - 0 0 1 2 2. - <_> - 1 2 1 2 2. - <_> - - <_> - 10 0 2 1 -1. - <_> - 10 0 1 1 2. - <_> - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - <_> - - <_> - 10 9 2 6 -1. - <_> - 11 9 1 3 2. - <_> - 10 12 1 3 2. - <_> - - <_> - 0 10 12 3 -1. - <_> - 0 11 12 1 3. - <_> - - <_> - 7 11 1 3 -1. - <_> - 7 12 1 1 3. - <_> - - <_> - 4 11 1 3 -1. - <_> - 4 12 1 1 3. - <_> - - <_> - 6 11 2 3 -1. - <_> - 6 12 2 1 3. - <_> - - <_> - 4 11 2 3 -1. - <_> - 4 12 2 1 3. - <_> - - <_> - 6 0 3 1 -1. - <_> - 7 1 1 1 3. - 1 - <_> - - <_> - 6 0 1 3 -1. - <_> - 5 1 1 1 3. - 1 - <_> - - <_> - 4 1 4 2 -1. - <_> - 6 1 2 1 2. - <_> - 4 2 2 1 2. - <_> - - <_> - 6 0 2 6 -1. - <_> - 4 2 2 2 3. - 1 - <_> - - <_> - 10 9 2 6 -1. - <_> - 11 9 1 3 2. - <_> - 10 12 1 3 2. - <_> - - <_> - 0 9 2 6 -1. - <_> - 0 9 1 3 2. - <_> - 1 12 1 3 2. - <_> - - <_> - 3 8 6 2 -1. - <_> - 3 9 6 1 2. - <_> - - <_> - 0 8 12 3 -1. - <_> - 0 9 12 1 3. - <_> - - <_> - 6 4 3 2 -1. - <_> - 7 5 1 2 3. - 1 - <_> - - <_> - 6 4 2 3 -1. - <_> - 5 5 2 1 3. - 1 - <_> - - <_> - 11 7 1 2 -1. - <_> - 11 8 1 1 2. - <_> - - <_> - 0 7 1 2 -1. - <_> - 0 8 1 1 2. - <_> - - <_> - 5 0 4 2 -1. - <_> - 7 0 2 1 2. - <_> - 5 1 2 1 2. - <_> - - <_> - 4 0 3 3 -1. - <_> - 5 0 1 3 3. - <_> - - <_> - 8 5 2 3 -1. - <_> - 8 5 1 3 2. - 1 - <_> - - <_> - 2 0 6 2 -1. - <_> - 2 0 3 1 2. - <_> - 5 1 3 1 2. - <_> - - <_> - 10 17 1 3 -1. - <_> - 10 18 1 1 3. - <_> - - <_> - 0 0 4 4 -1. - <_> - 0 2 4 2 2. - <_> - - <_> - 8 5 2 3 -1. - <_> - 8 5 1 3 2. - 1 - <_> - - <_> - 4 5 3 2 -1. - <_> - 4 5 3 1 2. - 1 - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 6 1 1 3. - 1 - <_> - - <_> - 6 5 1 3 -1. - <_> - 5 6 1 1 3. - 1 - <_> - - <_> - 10 1 2 7 -1. - <_> - 10 1 1 7 2. - <_> - - <_> - 0 1 2 8 -1. - <_> - 1 1 1 8 2. - <_> - - <_> - 11 11 1 6 -1. - <_> - 11 11 1 3 2. - 1 - <_> - - <_> - 1 11 6 1 -1. - <_> - 1 11 3 1 2. - 1 - <_> - - <_> - 6 3 6 3 -1. - <_> - 8 5 2 3 3. - 1 - <_> - - <_> - 0 2 6 6 -1. - <_> - 2 4 2 2 9. - <_> - - <_> - 8 3 4 1 -1. - <_> - 9 4 2 1 2. - 1 - <_> - - <_> - 4 3 1 4 -1. - <_> - 3 4 1 2 2. - 1 - <_> - - <_> - 4 14 4 2 -1. - <_> - 6 14 2 1 2. - <_> - 4 15 2 1 2. - <_> - - <_> - 5 16 1 4 -1. - <_> - 5 17 1 2 2. - <_> - - <_> - 6 12 3 5 -1. - <_> - 7 13 1 5 3. - 1 - <_> - - <_> - 6 12 5 3 -1. - <_> - 5 13 5 1 3. - 1 - <_> - - <_> - 4 2 4 2 -1. - <_> - 4 2 2 1 2. - <_> - 6 3 2 1 2. - <_> - - <_> - 8 8 3 3 -1. - <_> - 9 9 1 3 3. - 1 - <_> - - <_> - 5 4 5 3 -1. - <_> - 4 5 5 1 3. - 1 - <_> - - <_> - 9 17 2 3 -1. - <_> - 9 18 2 1 3. - <_> - - <_> - 1 17 2 3 -1. - <_> - 1 18 2 1 3. - <_> - - <_> - 8 2 4 10 -1. - <_> - 10 2 2 5 2. - <_> - 8 7 2 5 2. - <_> - - <_> - 0 2 4 10 -1. - <_> - 0 2 2 5 2. - <_> - 2 7 2 5 2. - <_> - - <_> - 0 13 12 5 -1. - <_> - 3 13 6 5 2. - <_> - - <_> - 0 18 12 2 -1. - <_> - 6 18 6 2 2. - <_> - - <_> - 4 14 5 6 -1. - <_> - 4 17 5 3 2. - <_> - - <_> - 0 0 12 3 -1. - <_> - 0 1 12 1 3. - <_> - - <_> - 0 3 12 2 -1. - <_> - 0 4 12 1 2. - <_> - - <_> - 0 0 8 8 -1. - <_> - 2 0 4 8 2. - <_> - - <_> - 6 10 6 3 -1. - <_> - 6 10 3 3 2. - 1 - <_> - - <_> - 4 10 6 4 -1. - <_> - 4 10 6 2 2. - 1 - <_> - - <_> - 6 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 6 1 1 1 2. - <_> - - <_> - 4 0 2 2 -1. - <_> - 4 0 1 1 2. - <_> - 5 1 1 1 2. - <_> - - <_> - 7 13 5 2 -1. - <_> - 7 13 5 1 2. - 1 - <_> - - <_> - 0 0 1 3 -1. - <_> - 0 1 1 1 3. - <_> - - <_> - 11 0 1 2 -1. - <_> - 11 1 1 1 2. - <_> - - <_> - 5 5 3 3 -1. - <_> - 4 6 3 1 3. - 1 - <_> - - <_> - 6 3 3 4 -1. - <_> - 7 4 1 4 3. - 1 - <_> - - <_> - 3 6 2 4 -1. - <_> - 3 6 1 2 2. - <_> - 4 8 1 2 2. - <_> - - <_> - 7 13 5 2 -1. - <_> - 7 13 5 1 2. - 1 - <_> - - <_> - 5 13 2 5 -1. - <_> - 5 13 1 5 2. - 1 - <_> - - <_> - 11 0 1 2 -1. - <_> - 11 1 1 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 6 5 3 3 -1. - <_> - 5 6 3 1 3. - 1 - <_> - - <_> - 6 5 3 3 -1. - <_> - 7 6 1 3 3. - 1 - <_> - - <_> - 0 15 12 5 -1. - <_> - 3 15 6 5 2. - <_> - - <_> - 3 17 1 2 -1. - <_> - 3 17 1 1 2. - 1 - <_> - - <_> - 8 9 3 2 -1. - <_> - 9 9 1 2 3. - <_> - - <_> - 1 14 4 6 -1. - <_> - 1 14 2 3 2. - <_> - 3 17 2 3 2. - <_> - - <_> - 8 9 3 2 -1. - <_> - 9 9 1 2 3. - <_> - - <_> - 2 9 8 3 -1. - <_> - 2 10 8 1 3. - <_> - - <_> - 8 9 3 2 -1. - <_> - 9 9 1 2 3. - <_> - - <_> - 3 12 1 3 -1. - <_> - 3 13 1 1 3. - <_> - - <_> - 8 12 1 3 -1. - <_> - 8 13 1 1 3. - <_> - - <_> - 3 12 1 3 -1. - <_> - 3 13 1 1 3. - <_> - - <_> - 9 3 3 6 -1. - <_> - 10 5 1 2 9. - <_> - - <_> - 0 3 3 6 -1. - <_> - 1 5 1 2 9. - <_> - - <_> - 6 4 6 16 -1. - <_> - 6 12 6 8 2. - <_> - - <_> - 1 9 3 2 -1. - <_> - 2 9 1 2 3. - <_> - - <_> - 8 5 2 6 -1. - <_> - 9 5 1 3 2. - <_> - 8 8 1 3 2. - <_> - - <_> - 2 5 2 6 -1. - <_> - 2 5 1 3 2. - <_> - 3 8 1 3 2. - <_> - - <_> - 0 2 12 18 -1. - <_> - 6 2 6 9 2. - <_> - 0 11 6 9 2. - <_> - - <_> - 0 13 12 4 -1. - <_> - 0 13 6 2 2. - <_> - 6 15 6 2 2. - <_> - - <_> - 0 4 12 12 -1. - <_> - 0 7 12 6 2. - <_> - - <_> - 4 14 3 6 -1. - <_> - 5 14 1 6 3. - <_> - - <_> - 6 11 2 3 -1. - <_> - 6 12 2 1 3. - <_> - - <_> - 4 11 2 3 -1. - <_> - 4 12 2 1 3. - <_> - - <_> - 1 9 10 2 -1. - <_> - 6 9 5 1 2. - <_> - 1 10 5 1 2. - <_> - - <_> - 6 3 3 6 -1. - <_> - 4 5 3 2 3. - 1 - <_> - - <_> - 4 10 8 7 -1. - <_> - 4 10 4 7 2. - <_> - - <_> - 6 7 6 4 -1. - <_> - 6 7 3 4 2. - 1 - <_> - - <_> - 7 13 4 2 -1. - <_> - 9 13 2 1 2. - <_> - 7 14 2 1 2. - <_> - - <_> - 1 13 4 2 -1. - <_> - 1 13 2 1 2. - <_> - 3 14 2 1 2. - <_> - - <_> - 9 8 2 3 -1. - <_> - 9 8 1 3 2. - <_> - - <_> - 1 8 2 3 -1. - <_> - 2 8 1 3 2. - diff --git a/data/haarcascades/haarcascade_mcs_righteye.xml b/data/haarcascades/haarcascade_mcs_righteye.xml deleted file mode 100644 index 8db288d262..0000000000 --- a/data/haarcascades/haarcascade_mcs_righteye.xml +++ /dev/null @@ -1,34105 +0,0 @@ - - - -BOOST - HAAR - 18 - 12 - - 415 - - 0 - 18 - - <_> - 14 - -1.8531819581985474e+00 - - <_> - - 0 -1 0 -2.4424770474433899e-01 - - 6.9875770807266235e-01 -6.8658047914505005e-01 - <_> - - 0 -1 1 -7.8023127571213990e-05 - - 1.8409989774227142e-01 -1.5867869555950165e-01 - <_> - - 0 -1 2 6.1863329261541367e-02 - - -5.8069580793380737e-01 4.2429021000862122e-01 - <_> - - 0 -1 3 1.0108880087500438e-04 - - -2.1480329334735870e-01 2.5654569268226624e-01 - <_> - - 0 -1 4 -9.1220928879920393e-05 - - 3.8367459177970886e-01 -6.1654907464981079e-01 - <_> - - 0 -1 5 -3.0509479343891144e-02 - - 3.9360129833221436e-01 -1.3422299921512604e-01 - <_> - - 0 -1 6 -9.1780202637892216e-05 - - 2.7786558866500854e-01 -4.3007740378379822e-01 - <_> - - 0 -1 7 2.7771899476647377e-02 - - -8.0776482820510864e-02 2.8311640024185181e-01 - <_> - - 0 -1 8 -2.9620470479130745e-02 - - 4.8583909869194031e-01 -1.9754469394683838e-01 - <_> - - 0 -1 9 2.2866599261760712e-02 - - 1.0636190325021744e-01 -7.5176268815994263e-01 - <_> - - 0 -1 10 -4.1282488964498043e-03 - - -6.7065757513046265e-01 1.0479719936847687e-01 - <_> - - 0 -1 11 4.9167869292432442e-05 - - -4.3471860885620117e-01 1.9802249968051910e-01 - <_> - - 0 -1 12 1.0719999670982361e-01 - - -8.9806847274303436e-02 7.4682819843292236e-01 - <_> - - 0 -1 13 -1.0073629766702652e-01 - - 5.0939172506332397e-01 -1.3393540680408478e-01 - <_> - 18 - -1.7752469778060913e+00 - - <_> - - 0 -1 14 1.7802350223064423e-01 - - -7.5870281457901001e-01 5.3465932607650757e-01 - <_> - - 0 -1 15 -6.5577399730682373e-01 - - 6.4692652225494385e-01 -4.3502590060234070e-01 - <_> - - 0 -1 16 -4.0021299355430529e-05 - - 2.9965978860855103e-01 -5.6885862350463867e-01 - <_> - - 0 -1 17 -3.7154618650674820e-02 - - 3.4918901324272156e-01 -2.5589430704712868e-02 - <_> - - 0 -1 18 -1.2173940241336823e-01 - - 6.1586397886276245e-01 -2.0626740157604218e-01 - <_> - - 0 -1 19 5.2311879699118435e-05 - - -4.3647938966751099e-01 2.1958270668983459e-01 - <_> - - 0 -1 20 8.0859176814556122e-02 - - -1.9945010542869568e-01 6.7326688766479492e-01 - <_> - - 0 -1 21 4.0166039980249479e-05 - - -4.5640110969543457e-02 1.9430699944496155e-01 - <_> - - 0 -1 22 -3.1046951335156336e-05 - - 2.7887210249900818e-01 -3.9368268847465515e-01 - <_> - - 0 -1 23 4.4764861464500427e-02 - - 1.5304270200431347e-02 -5.4978501796722412e-01 - <_> - - 0 -1 24 4.1439689084654674e-05 - - -4.0887549519538879e-01 2.4293379485607147e-01 - <_> - - 0 -1 25 -6.8109878338873386e-03 - - 2.0475849509239197e-01 -1.7610409855842590e-01 - <_> - - 0 -1 26 -1.1959940195083618e-02 - - 3.2010918855667114e-01 -2.4382120370864868e-01 - <_> - - 0 -1 27 4.1247010231018066e-03 - - 1.0142499953508377e-01 -6.7148768901824951e-01 - <_> - - 0 -1 28 4.8378468491137028e-03 - - 1.0296879708766937e-01 -7.6776862144470215e-01 - <_> - - 0 -1 29 -6.9100200198590755e-03 - - -5.3126591444015503e-01 1.0427720099687576e-01 - <_> - - 0 -1 30 -1.0080339759588242e-01 - - 5.0777941942214966e-01 -1.3023640215396881e-01 - <_> - - 0 -1 31 -1.9967159628868103e-01 - - 3.8986781239509583e-01 -1.6772779822349548e-01 - <_> - 28 - -1.6665699481964111e+00 - - <_> - - 0 -1 32 2.5776880979537964e-01 - - -5.8348870277404785e-01 5.5340260267257690e-01 - <_> - - 0 -1 33 -7.3068267107009888e-01 - - 5.5796027183532715e-01 -3.2565701007843018e-01 - <_> - - 0 -1 34 -2.7534509077668190e-02 - - 4.8059350252151489e-01 -2.3844310641288757e-01 - <_> - - 0 -1 35 -2.3275651037693024e-03 - - -3.6521190404891968e-01 4.5028999447822571e-02 - <_> - - 0 -1 36 1.1417310452088714e-03 - - -3.4956368803977966e-01 2.9769980907440186e-01 - <_> - - 0 -1 37 -3.3687320537865162e-03 - - -7.0289838314056396e-01 1.2980960309505463e-01 - <_> - - 0 -1 38 2.4614449590444565e-02 - - 1.3107569515705109e-01 -5.4708969593048096e-01 - <_> - - 0 -1 39 -5.8426922187209129e-03 - - -5.8647221326828003e-01 9.7731806337833405e-02 - <_> - - 0 -1 40 -5.4343082010746002e-03 - - -5.7326608896255493e-01 1.1278089880943298e-01 - <_> - - 0 -1 41 2.2054079920053482e-02 - - -9.2888571321964264e-02 1.3657820224761963e-01 - <_> - - 0 -1 42 -1.5347589738667011e-02 - - -6.4429342746734619e-01 7.4354633688926697e-02 - <_> - - 0 -1 43 5.0572961568832397e-02 - - 5.6103519164025784e-03 -5.0079947710037231e-01 - <_> - - 0 -1 44 -1.3261740095913410e-02 - - -7.3392891883850098e-01 6.5433360636234283e-02 - <_> - - 0 -1 45 -3.8969300221651793e-03 - - 3.1489849090576172e-01 -8.1432163715362549e-02 - <_> - - 0 -1 46 -2.4822659790515900e-02 - - 3.8604599237442017e-01 -1.2266899645328522e-01 - <_> - - 0 -1 47 -1.1084429919719696e-02 - - -5.6293141841888428e-01 5.4145891219377518e-02 - <_> - - 0 -1 48 1.8387300893664360e-02 - - 6.0027949512004852e-02 -6.5090698003768921e-01 - <_> - - 0 -1 49 -2.7180250734090805e-02 - - 2.1603550016880035e-01 -9.3256972730159760e-02 - <_> - - 0 -1 50 -1.8154690042138100e-02 - - 2.4887280166149139e-01 -1.7248439788818359e-01 - <_> - - 0 -1 51 -7.4400618672370911e-02 - - 2.2635079920291901e-01 -1.9566230475902557e-01 - <_> - - 0 -1 52 2.5560980662703514e-02 - - -1.1583790183067322e-01 3.8171079754829407e-01 - <_> - - 0 -1 53 -1.4836280047893524e-01 - - 4.4178679585456848e-01 -9.0950436890125275e-02 - <_> - - 0 -1 54 2.7006680611521006e-03 - - 7.7947027981281281e-02 -5.5427479743957520e-01 - <_> - - 0 -1 55 -8.6278393864631653e-03 - - -6.9937318563461304e-01 4.9830928444862366e-02 - <_> - - 0 -1 56 6.8439252674579620e-02 - - -7.5978577136993408e-02 6.2046712636947632e-01 - <_> - - 0 -1 57 -1.0975140146911144e-02 - - -6.0147458314895630e-01 7.1278177201747894e-02 - <_> - - 0 -1 58 1.8099289387464523e-02 - - 5.1625069230794907e-02 -6.1827600002288818e-01 - <_> - - 0 -1 59 -3.3489301800727844e-02 - - -4.7863158583641052e-01 1.8769619986414909e-02 - <_> - 42 - -1.6865210533142090e+00 - - <_> - - 0 -1 60 -1.0777440071105957e+00 - - 6.4120662212371826e-01 -4.2570671439170837e-01 - <_> - - 0 -1 61 -9.1444328427314758e-02 - - -4.7957998514175415e-01 5.7769209146499634e-02 - <_> - - 0 -1 62 -7.4071469716727734e-03 - - 2.8621929883956909e-01 -4.1994690895080566e-01 - <_> - - 0 -1 63 4.7062758356332779e-02 - - -4.3619200587272644e-01 2.6828920841217041e-01 - <_> - - 0 -1 64 -3.6404181271791458e-02 - - 3.5899761319160461e-01 -2.1427430212497711e-01 - <_> - - 0 -1 65 8.6630545556545258e-03 - - 1.4662440121173859e-01 -6.7707377672195435e-01 - <_> - - 0 -1 66 9.3371979892253876e-03 - - 5.1249351352453232e-02 -6.2359398603439331e-01 - <_> - - 0 -1 67 -8.9909201487898827e-03 - - 1.8665479496121407e-02 -1.2940050661563873e-01 - <_> - - 0 -1 68 6.0002477839589119e-03 - - 1.2412460148334503e-01 -4.5031398534774780e-01 - <_> - - 0 -1 69 -4.1527119465172291e-03 - - -6.1313831806182861e-01 1.0697679966688156e-01 - <_> - - 0 -1 70 -9.4439463282469660e-05 - - 1.6724079847335815e-01 -2.9332458972930908e-01 - <_> - - 0 -1 71 7.7140098437666893e-03 - - 9.1794438660144806e-02 -5.2451968193054199e-01 - <_> - - 0 -1 72 2.9233409091830254e-02 - - -1.5653559565544128e-01 3.0735900998115540e-01 - <_> - - 0 -1 73 -2.8729479759931564e-02 - - 2.0408889651298523e-01 -1.5190300345420837e-01 - <_> - - 0 -1 74 -9.4922380521893501e-03 - - -6.5572720766067505e-01 8.0031089484691620e-02 - <_> - - 0 -1 75 1.5254859812557697e-02 - - -7.0718497037887573e-02 1.8037749826908112e-01 - <_> - - 0 -1 76 8.5085026919841766e-02 - - -8.7161593139171600e-02 5.4529631137847900e-01 - <_> - - 0 -1 77 -1.2432079762220383e-02 - - -6.0595548152923584e-01 6.3416220247745514e-02 - <_> - - 0 -1 78 7.8379884362220764e-03 - - 8.5878178477287292e-02 -4.8387068510055542e-01 - <_> - - 0 -1 79 3.0610410496592522e-02 - - -8.5991300642490387e-02 1.2778289616107941e-01 - <_> - - 0 -1 80 -7.8582251444458961e-03 - - -4.7124311327934265e-01 8.1875868141651154e-02 - <_> - - 0 -1 81 -4.0620751678943634e-02 - - 3.4080961346626282e-01 -6.9700337946414948e-02 - <_> - - 0 -1 82 3.8473328948020935e-01 - - 9.9060591310262680e-04 -4.8748442382812500e+03 - <_> - - 0 -1 83 8.8061448186635971e-03 - - 2.1548839285969734e-02 -3.8199108839035034e-01 - <_> - - 0 -1 84 -9.8602060461416841e-05 - - 1.4345769584178925e-01 -2.5611689686775208e-01 - <_> - - 0 -1 85 4.4175058603286743e-02 - - -3.5266518592834473e-02 5.0838309526443481e-01 - <_> - - 0 -1 86 1.6760559519752860e-03 - - 9.2227913439273834e-02 -4.0895891189575195e-01 - <_> - - 0 -1 87 -2.0384270697832108e-02 - - 1.1310269683599472e-01 -6.7171029746532440e-02 - <_> - - 0 -1 88 -2.8324460610747337e-02 - - 3.2514190673828125e-01 -1.1220960319042206e-01 - <_> - - 0 -1 89 1.1148240417242050e-02 - - 4.3706391006708145e-02 -5.6290757656097412e-01 - <_> - - 0 -1 90 -6.1231020838022232e-02 - - 3.2292550802230835e-01 -1.1842100322246552e-01 - <_> - - 0 -1 91 -2.5340579450130463e-03 - - -2.8566569089889526e-01 9.7137562930583954e-02 - <_> - - 0 -1 92 9.4344420358538628e-03 - - 5.5838178843259811e-02 -6.1303967237472534e-01 - <_> - - 0 -1 93 -2.4996360763907433e-02 - - 3.7379479408264160e-01 -9.5438957214355469e-02 - <_> - - 0 -1 94 -1.5579929575324059e-02 - - -4.3321099877357483e-01 8.2081481814384460e-02 - <_> - - 0 -1 95 -7.4995987117290497e-02 - - 2.2193589806556702e-01 -1.5627489984035492e-01 - <_> - - 0 -1 96 -1.0779550075531006e+00 - - -2.7007299661636353e-01 1.3836389780044556e-01 - <_> - - 0 -1 97 5.9222001582384109e-02 - - -3.7382701039314270e-01 1.1695600301027298e-01 - <_> - - 0 -1 98 -8.6024785414338112e-03 - - 2.7681049704551697e-01 -1.2526260316371918e-01 - <_> - - 0 -1 99 -9.9356677383184433e-03 - - -5.1475620269775391e-01 6.3418559730052948e-02 - <_> - - 0 -1 100 1.2248200178146362e-01 - - -8.3492033183574677e-02 3.8797920942306519e-01 - <_> - - 0 -1 101 1.2311439961194992e-02 - - 5.4995030164718628e-02 -3.6952498555183411e-01 - <_> - 56 - -1.6953380107879639e+00 - - <_> - - 0 -1 102 -6.7200362682342529e-02 - - 4.5108181238174438e-01 -5.3534239530563354e-01 - <_> - - 0 -1 103 -8.2662038505077362e-02 - - 3.4775099158287048e-01 -1.2517650425434113e-01 - <_> - - 0 -1 104 -2.5940420106053352e-02 - - 3.1833609938621521e-01 -3.6004140973091125e-01 - <_> - - 0 -1 105 5.3580861538648605e-02 - - -6.5426699817180634e-02 1.6147750616073608e-01 - <_> - - 0 -1 106 -5.7038158178329468e-02 - - 3.7935408949851990e-01 -2.5456818938255310e-01 - <_> - - 0 -1 107 1.3242330402135849e-02 - - -4.4407260417938232e-01 2.3491750657558441e-01 - <_> - - 0 -1 108 -3.9509739726781845e-02 - - 4.3274340033531189e-01 -1.9499629735946655e-01 - <_> - - 0 -1 109 -2.8298990800976753e-02 - - 2.0397779345512390e-01 -8.9589469134807587e-02 - <_> - - 0 -1 110 6.3852379098534584e-03 - - -3.5488009452819824e-01 1.9138309359550476e-01 - <_> - - 0 -1 111 1.1374940164387226e-02 - - -1.3457709550857544e-01 1.2404730170965195e-01 - <_> - - 0 -1 112 6.5829078666865826e-03 - - 9.5501258969306946e-02 -4.7210261225700378e-01 - <_> - - 0 -1 113 -8.6454320698976517e-03 - - 3.2122609019279480e-01 -8.4004022181034088e-02 - <_> - - 0 -1 114 -6.4918738789856434e-03 - - 3.7122198939323425e-01 -1.4155159890651703e-01 - <_> - - 0 -1 115 9.4650797545909882e-03 - - 4.8017621040344238e-02 -4.9044439196586609e-01 - <_> - - 0 -1 116 2.2820439189672470e-02 - - -1.2555100023746490e-01 3.2097619771957397e-01 - <_> - - 0 -1 117 5.9925079345703125e-02 - - 8.4711313247680664e-02 -4.5627591013908386e-01 - <_> - - 0 -1 118 8.8552264496684074e-03 - - 6.0358591377735138e-02 -6.0775542259216309e-01 - <_> - - 0 -1 119 -1.7045319080352783e-02 - - 9.4534762203693390e-02 -1.0723099857568741e-01 - <_> - - 0 -1 120 -3.8314480334520340e-02 - - -5.7877939939498901e-01 6.7216247320175171e-02 - <_> - - 0 -1 121 -6.9333538413047791e-02 - - -3.3919590711593628e-01 1.9480850547552109e-02 - <_> - - 0 -1 122 -1.8777130171656609e-02 - - 1.6830919682979584e-01 -2.0851990580558777e-01 - <_> - - 0 -1 123 3.2719969749450684e-02 - - 3.0514130368828773e-02 -4.5696869492530823e-01 - <_> - - 0 -1 124 -2.1114969626069069e-02 - - -4.8196780681610107e-01 7.8218683600425720e-02 - <_> - - 0 -1 125 4.8785269260406494e-02 - - 2.0097790285944939e-02 -3.5147210955619812e-01 - <_> - - 0 -1 126 5.9009779244661331e-02 - - 5.0008200109004974e-02 -7.1498161554336548e-01 - <_> - - 0 -1 127 -1.3095900416374207e-02 - - -2.0079830288887024e-01 7.4462093412876129e-02 - <_> - - 0 -1 128 4.8975921235978603e-03 - - 5.5243130773305893e-02 -5.7409340143203735e-01 - <_> - - 0 -1 129 -5.4940162226557732e-03 - - 3.5677149891853333e-01 -8.6807981133460999e-02 - <_> - - 0 -1 130 -3.1561508774757385e-02 - - -4.6615409851074219e-01 7.0244632661342621e-02 - <_> - - 0 -1 131 2.2134589962661266e-03 - - -6.8283282220363617e-02 7.9536527395248413e-02 - <_> - - 0 -1 132 -8.2062073051929474e-03 - - 2.7306330204010010e-01 -1.1220429837703705e-01 - <_> - - 0 -1 133 -4.2711659334599972e-03 - - 2.0383749902248383e-01 -1.1134400218725204e-01 - <_> - - 0 -1 134 -4.5153028331696987e-03 - - 2.1680480241775513e-01 -1.4698010683059692e-01 - <_> - - 0 -1 135 -6.8448767997324467e-03 - - -5.1700651645660400e-01 5.7613730430603027e-02 - <_> - - 0 -1 136 -9.3936352059245110e-03 - - -7.0918929576873779e-01 4.1451569646596909e-02 - <_> - - 0 -1 137 -3.5494949668645859e-02 - - 4.1316780447959900e-01 -6.1823520809412003e-02 - <_> - - 0 -1 138 -3.0114190652966499e-02 - - 4.9658629298210144e-01 -5.9313420206308365e-02 - <_> - - 0 -1 139 -2.8231500182300806e-03 - - -4.2436400055885315e-01 7.1718901395797729e-02 - <_> - - 0 -1 140 -5.4673277772963047e-03 - - -5.5095481872558594e-01 4.6391129493713379e-02 - <_> - - 0 -1 141 1.0120819933945313e-04 - - -5.8151338249444962e-02 5.8602251112461090e-02 - <_> - - 0 -1 142 -9.6490257419645786e-05 - - 1.2582179903984070e-01 -2.2901579737663269e-01 - <_> - - 0 -1 143 -6.1294160783290863e-02 - - 2.9266101121902466e-01 -9.5403976738452911e-02 - <_> - - 0 -1 144 2.8102770447731018e-02 - - -1.1171860247850418e-01 2.8479880094528198e-01 - <_> - - 0 -1 145 8.5702445358037949e-03 - - 3.3816758543252945e-02 -2.5395581126213074e-01 - <_> - - 0 -1 146 -1.0708959773182869e-02 - - -4.0251371264457703e-01 6.1992008239030838e-02 - <_> - - 0 -1 147 7.7682421542704105e-03 - - 4.5514889061450958e-02 -4.4539490342140198e-01 - <_> - - 0 -1 148 -3.9436880499124527e-02 - - -5.9126931428909302e-01 3.6915950477123260e-02 - <_> - - 0 -1 149 -8.3061866462230682e-03 - - 4.1907790303230286e-01 -3.8043338805437088e-02 - <_> - - 0 -1 150 -2.6948580052703619e-03 - - 2.6846599578857422e-01 -1.0144890099763870e-01 - <_> - - 0 -1 151 -5.0465110689401627e-02 - - 1.2373439967632294e-01 -1.2334769964218140e-01 - <_> - - 0 -1 152 -1.0141739767277613e-04 - - 1.0864509642124176e-01 -2.4142740666866302e-01 - <_> - - 0 -1 153 1.2928189709782600e-02 - - -7.8642763197422028e-02 2.5868999958038330e-01 - <_> - - 0 -1 154 -1.6396190039813519e-03 - - -2.5857350230216980e-01 8.3787269890308380e-02 - <_> - - 0 -1 155 6.9712791591882706e-03 - - -2.5677189230918884e-02 2.0356319844722748e-01 - <_> - - 0 -1 156 3.9361029863357544e-02 - - -5.5376350879669189e-02 3.9945369958877563e-01 - <_> - - 0 -1 157 -3.0988039448857307e-02 - - 3.2057970762252808e-01 -6.4473606646060944e-02 - <_> - 72 - -1.6599390506744385e+00 - - <_> - - 0 -1 158 -2.4494670331478119e-01 - - 4.0746760368347168e-01 -4.0469241142272949e-01 - <_> - - 0 -1 159 -1.8972739577293396e-02 - - 3.4485670924186707e-01 -3.0548089742660522e-01 - <_> - - 0 -1 160 -2.9695449396967888e-02 - - 2.4475049972534180e-01 -3.6786770820617676e-01 - <_> - - 0 -1 161 1.2069249898195267e-01 - - -3.3793058991432190e-01 2.0322279632091522e-01 - <_> - - 0 -1 162 -5.4062519222497940e-02 - - 4.5939388871192932e-01 -1.1671090126037598e-01 - <_> - - 0 -1 163 -7.3384187999181449e-05 - - 1.8353730440139771e-02 -1.0902920365333557e-01 - <_> - - 0 -1 164 -7.9208686656784266e-05 - - 1.5077480673789978e-01 -3.7546008825302124e-01 - <_> - - 0 -1 165 2.6447780430316925e-02 - - -4.1112259030342102e-02 5.3516292572021484e-01 - <_> - - 0 -1 166 -8.7839355692267418e-03 - - 3.7664881348609924e-01 -1.3378149271011353e-01 - <_> - - 0 -1 167 1.5802720189094543e-01 - - -7.5865842401981354e-02 5.6553637981414795e-01 - <_> - - 0 -1 168 -2.3577159270644188e-02 - - 5.0584560632705688e-01 -6.5434440970420837e-02 - <_> - - 0 -1 169 3.5952448844909668e-02 - - 6.8231552839279175e-02 -5.3152531385421753e-01 - <_> - - 0 -1 170 -8.6752548813819885e-03 - - 2.1871459484100342e-01 -1.8592439591884613e-01 - <_> - - 0 -1 171 -3.1334798783063889e-02 - - -5.2554857730865479e-01 6.3401840627193451e-02 - <_> - - 0 -1 172 -4.4468481093645096e-02 - - -6.1970520019531250e-01 4.7379858791828156e-02 - <_> - - 0 -1 173 1.0566320270299911e-02 - - 1.9362540915608406e-02 -3.8206431269645691e-01 - <_> - - 0 -1 174 -9.7126147011294961e-05 - - 1.4222820103168488e-01 -2.2819939255714417e-01 - <_> - - 0 -1 175 4.3628368526697159e-02 - - 9.2759296298027039e-02 -3.6083820462226868e-01 - <_> - - 0 -1 176 1.0665970330592245e-04 - - -2.5239759683609009e-01 1.2652850151062012e-01 - <_> - - 0 -1 177 -3.2759020105004311e-03 - - -5.0014287233352661e-01 5.5411998182535172e-02 - <_> - - 0 -1 178 -5.1345061510801315e-03 - - -4.9917379021644592e-01 5.3027190268039703e-02 - <_> - - 0 -1 179 -2.3086380679160357e-03 - - 1.4560249447822571e-01 -1.5677399933338165e-01 - <_> - - 0 -1 180 -1.1395690031349659e-02 - - -5.6590718030929565e-01 4.8358190804719925e-02 - <_> - - 0 -1 181 2.1377710625529289e-02 - - -2.0428450778126717e-02 3.3207640051841736e-01 - <_> - - 0 -1 182 -5.4581598378717899e-03 - - 1.8875059485435486e-01 -1.6000190377235413e-01 - <_> - - 0 -1 183 -6.5560699440538883e-03 - - 3.9806428551673889e-01 -5.0772599875926971e-02 - <_> - - 0 -1 184 -3.0029900372028351e-02 - - -6.3900482654571533e-01 4.8738751560449600e-02 - <_> - - 0 -1 185 1.7660830169916153e-02 - - -5.9581778943538666e-02 3.6284449696540833e-01 - <_> - - 0 -1 186 7.7252220362424850e-03 - - 4.8472359776496887e-02 -5.8043122291564941e-01 - <_> - - 0 -1 187 -3.8417279720306396e-03 - - 1.3482269644737244e-01 -6.1082180589437485e-02 - <_> - - 0 -1 188 1.6697360202670097e-02 - - -6.1526499688625336e-02 4.5710238814353943e-01 - <_> - - 0 -1 189 -4.7411560080945492e-03 - - -4.1636040806770325e-01 5.9805721044540405e-02 - <_> - - 0 -1 190 -6.6320500336587429e-03 - - 2.9735830426216125e-01 -8.8206142187118530e-02 - <_> - - 0 -1 191 1.1486539617180824e-02 - - 5.0168808549642563e-02 -5.0688809156417847e-01 - <_> - - 0 -1 192 -2.1305510774254799e-02 - - -5.8062469959259033e-01 4.1004549711942673e-02 - <_> - - 0 -1 193 -4.7006089240312576e-02 - - 3.6068481206893921e-01 -7.2690792381763458e-02 - <_> - - 0 -1 194 1.7832050099968910e-02 - - -7.4530497193336487e-02 4.0493220090866089e-01 - <_> - - 0 -1 195 -1.5592209994792938e-01 - - 1.7431819438934326e-01 -1.7088210582733154e-01 - <_> - - 0 -1 196 5.4303607903420925e-03 - - 7.9587250947952271e-02 -3.6683198809623718e-01 - <_> - - 0 -1 197 3.0937120318412781e-02 - - -6.5279401838779449e-02 4.5822051167488098e-01 - <_> - - 0 -1 198 -1.0075340047478676e-02 - - -3.8206771016120911e-01 5.8533921837806702e-02 - <_> - - 0 -1 199 -2.4391389451920986e-03 - - 1.6461110115051270e-01 -1.2688189744949341e-01 - <_> - - 0 -1 200 2.7846049517393112e-02 - - -6.8525552749633789e-02 2.9142960906028748e-01 - <_> - - 0 -1 201 -2.5113900192081928e-03 - - 7.9238571226596832e-02 -4.3009191751480103e-02 - <_> - - 0 -1 202 5.5342530831694603e-03 - - 3.6389451473951340e-02 -4.9398460984230042e-01 - <_> - - 0 -1 203 -1.1999580077826977e-02 - - -5.2778410911560059e-01 3.4849070012569427e-02 - <_> - - 0 -1 204 -3.9921961724758148e-03 - - 2.1965460479259491e-01 -9.6781797707080841e-02 - <_> - - 0 -1 205 -1.3837540149688721e-01 - - -2.2437030076980591e-01 1.5038269571959972e-02 - <_> - - 0 -1 206 3.9730938151478767e-03 - - 4.8632390797138214e-02 -3.8494649529457092e-01 - <_> - - 0 -1 207 -2.7530850842595100e-02 - - 9.1857790946960449e-02 -1.1331369727849960e-01 - <_> - - 0 -1 208 -4.8373710364103317e-02 - - 2.3593319952487946e-01 -8.9034907519817352e-02 - <_> - - 0 -1 209 -1.5814600046724081e-03 - - 1.0996560007333755e-01 -6.9286808371543884e-02 - <_> - - 0 -1 210 -8.7159816175699234e-03 - - 3.0356439948081970e-01 -6.6869571805000305e-02 - <_> - - 0 -1 211 1.8994549289345741e-02 - - 1.7783800140023232e-02 -5.1624137163162231e-01 - <_> - - 0 -1 212 9.0731251984834671e-03 - - 4.3918740004301071e-02 -4.1843789815902710e-01 - <_> - - 0 -1 213 1.5486050397157669e-02 - - -5.8535698801279068e-02 2.7429381012916565e-01 - <_> - - 0 -1 214 2.7820859104394913e-02 - - 2.9692919924855232e-02 -6.2087607383728027e-01 - <_> - - 0 -1 215 -1.3044780353084207e-03 - - 1.6318100690841675e-01 -5.9719368815422058e-02 - <_> - - 0 -1 216 8.5032671689987183e-02 - - -6.4964443445205688e-02 2.7426218986511230e-01 - <_> - - 0 -1 217 1.7395729199051857e-02 - - 3.8472320884466171e-02 -3.1618699431419373e-01 - <_> - - 0 -1 218 -2.1765150129795074e-02 - - -5.2773088216781616e-01 3.4570030868053436e-02 - <_> - - 0 -1 219 -9.7448393702507019e-02 - - 2.5861459970474243e-01 -7.4092611670494080e-02 - <_> - - 0 -1 220 -1.5628200490027666e-03 - - 2.5666180253028870e-01 -7.2598278522491455e-02 - <_> - - 0 -1 221 -3.7647458910942078e-01 - - 2.6231971383094788e-01 -7.1217708289623260e-02 - <_> - - 0 -1 222 -2.1947529166936874e-02 - - -5.5471789836883545e-01 3.2997239381074905e-02 - <_> - - 0 -1 223 3.8632971048355103e-01 - - 2.5074239820241928e-02 -6.0832667350769043e-01 - <_> - - 0 -1 224 -3.1041959300637245e-03 - - 1.6470110416412354e-01 -1.0676909983158112e-01 - <_> - - 0 -1 225 -3.4860908985137939e-02 - - -5.7921218872070312e-01 1.2084069661796093e-02 - <_> - - 0 -1 226 1.1423420161008835e-02 - - 5.6263469159603119e-02 -2.9407739639282227e-01 - <_> - - 0 -1 227 5.8854189701378345e-03 - - 1.7714949324727058e-02 -6.4319449663162231e-01 - <_> - - 0 -1 228 -6.7278537899255753e-03 - - 2.2641740739345551e-01 -7.9366579651832581e-02 - <_> - - 0 -1 229 -1.5968179330229759e-02 - - 8.4905549883842468e-02 -6.6024817526340485e-02 - <_> - 97 - -1.7070800065994263e+00 - - <_> - - 0 -1 230 -3.6784499883651733e-01 - - 4.5800340175628662e-01 -3.3849748969078064e-01 - <_> - - 0 -1 231 -9.4871893525123596e-02 - - -4.5669031143188477e-01 3.2879181206226349e-02 - <_> - - 0 -1 232 -1.8604120239615440e-02 - - 2.0924760401248932e-01 -3.6567929387092590e-01 - <_> - - 0 -1 233 2.9974810779094696e-02 - - -1.9289420545101166e-01 3.2448410987854004e-01 - <_> - - 0 -1 234 5.8208271861076355e-02 - - 1.3660140102729201e-03 -1.2704019775390625e+03 - <_> - - 0 -1 235 -2.8189869597554207e-02 - - 9.7124092280864716e-02 -1.7665229737758636e-01 - <_> - - 0 -1 236 3.6802981048822403e-02 - - -5.7311378419399261e-02 5.5507022142410278e-01 - <_> - - 0 -1 237 5.0173830240964890e-02 - - 6.7918449640274048e-02 -5.5383729934692383e-01 - <_> - - 0 -1 238 1.2276550114620477e-04 - - -3.6698448657989502e-01 1.1779980361461639e-01 - <_> - - 0 -1 239 -1.2047369964420795e-02 - - 2.8118661046028137e-01 -9.1286137700080872e-02 - <_> - - 0 -1 240 -1.3500650227069855e-01 - - 4.0587979555130005e-01 -1.1283899843692780e-01 - <_> - - 0 -1 241 -1.4946890063583851e-02 - - 1.1184260249137878e-01 -6.9855831563472748e-02 - <_> - - 0 -1 242 -2.8080230578780174e-02 - - 3.7134361267089844e-01 -1.1335489898920059e-01 - <_> - - 0 -1 243 8.9532906713429838e-05 - - -2.4021409451961517e-01 1.5452569723129272e-01 - <_> - - 0 -1 244 3.3625299111008644e-03 - - 7.6281696557998657e-02 -4.2249780893325806e-01 - <_> - - 0 -1 245 7.7109010890126228e-03 - - 6.4429573714733124e-02 -5.2580958604812622e-01 - <_> - - 0 -1 246 -4.0021299355430529e-05 - - 1.2313339859247208e-01 -2.5762450695037842e-01 - <_> - - 0 -1 247 -3.1202889513224363e-03 - - -4.6036028861999512e-01 5.1612310111522675e-02 - <_> - - 0 -1 248 -1.0011930018663406e-02 - - -5.9611922502517700e-01 4.7229800373315811e-02 - <_> - - 0 -1 249 1.7205670475959778e-02 - - -8.7691828608512878e-02 3.6531248688697815e-01 - <_> - - 0 -1 250 -8.0158591270446777e-02 - - 1.7942880094051361e-01 -1.8761360645294189e-01 - <_> - - 0 -1 251 -3.0895389616489410e-02 - - -5.3028690814971924e-01 6.2362041324377060e-02 - <_> - - 0 -1 252 -4.0663570165634155e-02 - - -6.5177547931671143e-01 4.2615588754415512e-02 - <_> - - 0 -1 253 1.3517879880964756e-02 - - -6.4104713499546051e-02 3.9314290881156921e-01 - <_> - - 0 -1 254 2.0111180841922760e-02 - - -1.7060810327529907e-01 1.8481850624084473e-01 - <_> - - 0 -1 255 1.0260569863021374e-02 - - 3.3398948609828949e-02 -4.3841761350631714e-01 - <_> - - 0 -1 256 -1.0485230013728142e-02 - - 1.9740979373455048e-01 -1.4588220417499542e-01 - <_> - - 0 -1 257 4.0648399590281770e-05 - - -7.9994283616542816e-02 4.1719149798154831e-02 - <_> - - 0 -1 258 -3.8299830630421638e-03 - - -5.3327178955078125e-01 5.3281601518392563e-02 - <_> - - 0 -1 259 1.7642440274357796e-02 - - -9.9251352250576019e-02 2.7189201116561890e-01 - <_> - - 0 -1 260 -2.4608120322227478e-02 - - 3.0124360322952271e-01 -8.6540237069129944e-02 - <_> - - 0 -1 261 1.3368680141866207e-02 - - 4.3695349246263504e-02 -6.1414361000061035e-01 - <_> - - 0 -1 262 -1.0268009646097198e-04 - - 8.9721798896789551e-02 -2.5240990519523621e-01 - <_> - - 0 -1 263 -2.8268070891499519e-02 - - -4.5758980512619019e-01 2.6957040652632713e-02 - <_> - - 0 -1 264 4.5313038863241673e-03 - - 6.2346488237380981e-02 -3.8223439455032349e-01 - <_> - - 0 -1 265 -1.4729249477386475e-01 - - 1.5171539783477783e-01 -1.7683920264244080e-01 - <_> - - 0 -1 266 -1.5091559849679470e-02 - - -3.2118791341781616e-01 8.1255659461021423e-02 - <_> - - 0 -1 267 -7.1740341372787952e-03 - - 1.7002619802951813e-01 -6.0686178505420685e-02 - <_> - - 0 -1 268 -8.0513395369052887e-03 - - 2.9498210549354553e-01 -9.3280687928199768e-02 - <_> - - 0 -1 269 -1.8630200624465942e-01 - - -4.4096079468727112e-01 5.3429558873176575e-02 - <_> - - 0 -1 270 -1.2388650327920914e-02 - - -5.8523058891296387e-01 3.1196039170026779e-02 - <_> - - 0 -1 271 -5.3622801788151264e-03 - - 1.0439769923686981e-01 -1.0434389859437943e-01 - <_> - - 0 -1 272 -1.9562510773539543e-02 - - -5.7829868793487549e-01 3.2233841717243195e-02 - <_> - - 0 -1 273 -1.4553970098495483e-01 - - -4.1880708932876587e-01 1.1629059445112944e-03 - <_> - - 0 -1 274 -7.3159099556505680e-03 - - 2.4218960106372833e-01 -7.8386463224887848e-02 - <_> - - 0 -1 275 9.5743779093027115e-03 - - 3.2800838351249695e-02 -3.5083159804344177e-01 - <_> - - 0 -1 276 2.4385999888181686e-02 - - 3.5847108811140060e-02 -4.7145798802375793e-01 - <_> - - 0 -1 277 1.5609519556164742e-02 - - -9.0331830084323883e-02 2.0074969530105591e-01 - <_> - - 0 -1 278 1.8569679930806160e-02 - - 3.5404149442911148e-02 -5.2113038301467896e-01 - <_> - - 0 -1 279 1.3852110505104065e-01 - - 1.9737629219889641e-02 -2.7352941036224365e-01 - <_> - - 0 -1 280 -2.0759139209985733e-02 - - 1.9612009823322296e-01 -9.6768572926521301e-02 - <_> - - 0 -1 281 -2.6231709867715836e-02 - - 5.5649291723966599e-02 -5.8627698570489883e-02 - <_> - - 0 -1 282 1.1033529788255692e-01 - - -6.5192982554435730e-02 3.2797458767890930e-01 - <_> - - 0 -1 283 8.1975180655717850e-03 - - -3.6720771342515945e-02 1.8983750045299530e-01 - <_> - - 0 -1 284 1.1925240047276020e-02 - - -4.7182181477546692e-01 3.9609570056200027e-02 - <_> - - 0 -1 285 -1.0444080084562302e-01 - - 3.0608791112899780e-01 -6.9167442619800568e-02 - <_> - - 0 -1 286 9.1293286532163620e-03 - - -9.6449576318264008e-02 2.2882050275802612e-01 - <_> - - 0 -1 287 3.5521490644896403e-05 - - -1.3747419416904449e-01 1.2723550200462341e-01 - <_> - - 0 -1 288 -6.4568631350994110e-03 - - -4.1703549027442932e-01 4.7209650278091431e-02 - <_> - - 0 -1 289 -3.6431129556149244e-03 - - 1.4550060033798218e-01 -7.9281456768512726e-02 - <_> - - 0 -1 290 -5.1797907799482346e-03 - - 2.0312570035457611e-01 -8.3984777331352234e-02 - <_> - - 0 -1 291 1.4643589965999126e-02 - - 3.9659328758716583e-02 -4.4028940796852112e-01 - <_> - - 0 -1 292 -8.0946777015924454e-03 - - -4.5905250310897827e-01 3.3486161381006241e-02 - <_> - - 0 -1 293 1.0767610371112823e-01 - - -1.4604750322178006e-03 -9.7961211204528809e-01 - <_> - - 0 -1 294 -6.4884279854595661e-03 - - 1.8487909436225891e-01 -9.3405902385711670e-02 - <_> - - 0 -1 295 -1.6400039196014404e-02 - - -4.0006530284881592e-01 3.2618328928947449e-02 - <_> - - 0 -1 296 3.0795740894973278e-03 - - 6.3936926424503326e-02 -2.4403099715709686e-01 - <_> - - 0 -1 297 2.3928020149469376e-02 - - -7.4498817324638367e-02 1.5541020035743713e-01 - <_> - - 0 -1 298 -8.8588669896125793e-03 - - -4.5777368545532227e-01 3.2278370112180710e-02 - <_> - - 0 -1 299 -3.0064169317483902e-02 - - 2.0335829257965088e-01 -4.4844739139080048e-02 - <_> - - 0 -1 300 -4.7341538593173027e-03 - - 1.2229750305414200e-01 -1.2873139977455139e-01 - <_> - - 0 -1 301 -8.5981301963329315e-02 - - 4.3083581328392029e-01 -6.3731619156897068e-03 - <_> - - 0 -1 302 -2.1685559302568436e-02 - - 2.8727719187736511e-01 -6.0343831777572632e-02 - <_> - - 0 -1 303 -1.3941359706223011e-02 - - -5.1329857110977173e-01 1.8201520666480064e-02 - <_> - - 0 -1 304 2.4440600536763668e-03 - - -8.6260870099067688e-02 1.6634729504585266e-01 - <_> - - 0 -1 305 1.7512999475002289e-02 - - 1.9067149609327316e-02 -4.1144749522209167e-01 - <_> - - 0 -1 306 1.1205240298295394e-04 - - -1.9769529998302460e-01 7.5256332755088806e-02 - <_> - - 0 -1 307 2.4711890518665314e-01 - - -8.4033057093620300e-02 1.7387530207633972e-01 - <_> - - 0 -1 308 9.2011861852370203e-05 - - -1.0857179760932922e-01 1.3808019459247589e-01 - <_> - - 0 -1 309 -9.0258494019508362e-03 - - -4.7819659113883972e-01 3.2357428222894669e-02 - <_> - - 0 -1 310 -3.6494661122560501e-02 - - 1.1401130259037018e-01 -1.3022980093955994e-01 - <_> - - 0 -1 311 -1.2746749818325043e-01 - - 5.1732218265533447e-01 -2.9527239501476288e-02 - <_> - - 0 -1 312 -1.4561279676854610e-02 - - 1.1064620316028595e-01 -1.4923259615898132e-01 - <_> - - 0 -1 313 -1.3745570322498679e-04 - - 5.8987621217966080e-02 -9.3671269714832306e-02 - <_> - - 0 -1 314 1.0125709697604179e-02 - - -4.6942770481109619e-02 3.4779500961303711e-01 - <_> - - 0 -1 315 -1.4763530343770981e-03 - - 6.7057438194751740e-02 -1.5268740057945251e-01 - <_> - - 0 -1 316 -5.1781561225652695e-02 - - 3.2812559604644775e-01 -4.9428470432758331e-02 - <_> - - 0 -1 317 -8.7604322470724583e-04 - - 9.5243208110332489e-02 -4.9483429640531540e-02 - <_> - - 0 -1 318 -2.2923199459910393e-02 - - -6.0710781812667847e-01 2.1902529522776604e-02 - <_> - - 0 -1 319 3.9328118873527274e-05 - - -7.6403297483921051e-02 9.5908410847187042e-02 - <_> - - 0 -1 320 -2.6600218843668699e-03 - - 2.4431939423084259e-01 -6.4098820090293884e-02 - <_> - - 0 -1 321 7.9669617116451263e-02 - - -1.1213810183107853e-02 1.5940660238265991e-01 - <_> - - 0 -1 322 -2.8348390012979507e-02 - - 1.5259909629821777e-01 -8.8062129914760590e-02 - <_> - - 0 -1 323 7.4440040625631809e-03 - - 2.1669639274477959e-02 -4.0132689476013184e-01 - <_> - - 0 -1 324 -1.1087640188634396e-02 - - -3.9004370570182800e-01 3.5446919500827789e-02 - <_> - - 0 -1 325 1.4261420071125031e-01 - - -3.9467811584472656e-02 3.4237340092658997e-01 - <_> - - 0 -1 326 1.0709280148148537e-02 - - 3.9296310395002365e-02 -3.3758899569511414e-01 - <_> - 116 - -1.6312040090560913e+00 - - <_> - - 0 -1 327 -4.9442949891090393e-01 - - 4.4323670864105225e-01 -2.7319180965423584e-01 - <_> - - 0 -1 328 -1.2554959952831268e-01 - - 4.0862751007080078e-01 -2.2868640720844269e-01 - <_> - - 0 -1 329 -5.2924221381545067e-03 - - 1.6534030437469482e-01 -4.3098509311676025e-01 - <_> - - 0 -1 330 -1.0192809998989105e-01 - - 2.6754850149154663e-01 -1.8038110435009003e-01 - <_> - - 0 -1 331 1.8004419803619385e+00 - - -2.1841609850525856e-02 -1.4260159912109375e+03 - <_> - - 0 -1 332 1.0608100332319736e-02 - - -5.9960059821605682e-02 3.4709489345550537e-01 - <_> - - 0 -1 333 -1.6630759928375483e-03 - - 2.8806871175765991e-01 -1.5445019304752350e-01 - <_> - - 0 -1 334 -1.1193910177098587e-04 - - 9.8864771425724030e-02 -1.1795780062675476e-01 - <_> - - 0 -1 335 -4.2859889566898346e-02 - - 1.6759259998798370e-01 -2.1457959711551666e-01 - <_> - - 0 -1 336 -9.3869988631922752e-05 - - 9.6965126693248749e-02 -8.3837963640689850e-02 - <_> - - 0 -1 337 1.1530930176377296e-02 - - 5.7559680193662643e-02 -5.2718931436538696e-01 - <_> - - 0 -1 338 1.9106600433588028e-02 - - -4.5117460191249847e-02 3.8243150711059570e-01 - <_> - - 0 -1 339 1.7600689083337784e-02 - - -8.8198132812976837e-02 4.3440911173820496e-01 - <_> - - 0 -1 340 -1.3769839890301228e-02 - - -4.3921610713005066e-01 2.8345840051770210e-02 - <_> - - 0 -1 341 -8.7673062807880342e-05 - - 1.2015280127525330e-01 -2.9294851422309875e-01 - <_> - - 0 -1 342 -7.6127682405058295e-05 - - 1.5655809640884399e-01 -1.5530920028686523e-01 - <_> - - 0 -1 343 8.4909036755561829e-02 - - -9.1236896812915802e-02 3.2453578710556030e-01 - <_> - - 0 -1 344 -1.5367859974503517e-02 - - -2.9729259014129639e-01 4.7699470072984695e-02 - <_> - - 0 -1 345 9.9366791546344757e-03 - - 5.7912901043891907e-02 -5.0259292125701904e-01 - <_> - - 0 -1 346 7.6439202530309558e-05 - - -9.9498890340328217e-02 1.3198280334472656e-01 - <_> - - 0 -1 347 -8.2395068602636456e-05 - - 1.7732089757919312e-01 -1.6241380572319031e-01 - <_> - - 0 -1 348 1.5879699960350990e-02 - - -7.5514368712902069e-02 3.5822570323944092e-01 - <_> - - 0 -1 349 -3.0790620949119329e-03 - - 1.1570940166711807e-01 -2.1889360249042511e-01 - <_> - - 0 -1 350 -1.4905449934303761e-02 - - -3.9039888978004456e-01 1.7254609614610672e-02 - <_> - - 0 -1 351 8.6873043328523636e-03 - - 4.4716950505971909e-02 -4.9758139252662659e-01 - <_> - - 0 -1 352 3.2028879970312119e-02 - - -8.2974523305892944e-02 2.8257378935813904e-01 - <_> - - 0 -1 353 -3.1918611377477646e-02 - - 3.5842159390449524e-01 -6.8592041730880737e-02 - <_> - - 0 -1 354 -9.8993210121989250e-03 - - -4.5753958821296692e-01 4.3285790830850601e-02 - <_> - - 0 -1 355 -9.1577637940645218e-03 - - 3.2826730608940125e-01 -6.6698208451271057e-02 - <_> - - 0 -1 356 -1.0106399655342102e-02 - - 9.1073133051395416e-02 -2.0907290279865265e-01 - <_> - - 0 -1 357 -1.0402830317616463e-02 - - -4.8874959349632263e-01 3.8931101560592651e-02 - <_> - - 0 -1 358 2.0562000572681427e-02 - - 3.9995308965444565e-02 -4.7452241182327271e-01 - <_> - - 0 -1 359 -3.8352191448211670e-02 - - -4.7058039903640747e-01 3.7908799946308136e-02 - <_> - - 0 -1 360 -6.9335498847067356e-03 - - 2.4987019598484039e-01 -5.6883011013269424e-02 - <_> - - 0 -1 361 -1.9851999357342720e-02 - - 1.8991729617118835e-01 -1.1510910093784332e-01 - <_> - - 0 -1 362 -9.5688046712893993e-05 - - 1.3111490011215210e-01 -2.0739020407199860e-01 - <_> - - 0 -1 363 -4.5679330825805664e-02 - - 1.4726249873638153e-01 -1.2605570256710052e-01 - <_> - - 0 -1 364 -4.4255409389734268e-02 - - 3.9286181330680847e-01 -5.6143738329410553e-02 - <_> - - 0 -1 365 -7.7998407185077667e-02 - - 1.7947210371494293e-01 -1.1833500117063522e-01 - <_> - - 0 -1 366 8.4853731095790863e-03 - - 2.5496419519186020e-02 -2.2068339586257935e-01 - <_> - - 0 -1 367 -1.7047259956598282e-02 - - 2.7297979593276978e-01 -7.0188298821449280e-02 - <_> - - 0 -1 368 7.9200501204468310e-05 - - -6.7605443298816681e-02 7.1529977023601532e-02 - <_> - - 0 -1 369 6.2673659995198250e-03 - - 5.4571509361267090e-02 -3.6617699265480042e-01 - <_> - - 0 -1 370 7.8682642197236419e-05 - - -7.1166932582855225e-02 7.9210631549358368e-02 - <_> - - 0 -1 371 -1.0391850082669407e-04 - - 1.1487320065498352e-01 -2.0163500308990479e-01 - <_> - - 0 -1 372 3.4147119149565697e-03 - - 4.0455348789691925e-02 -2.3108960688114166e-01 - <_> - - 0 -1 373 8.3642201498150826e-03 - - -4.5927461236715317e-02 4.0529310703277588e-01 - <_> - - 0 -1 374 3.6362249404191971e-02 - - 7.8255804255604744e-03 -7.4479711055755615e-01 - <_> - - 0 -1 375 -4.0266428142786026e-02 - - -2.9234629869461060e-01 5.7985309511423111e-02 - <_> - - 0 -1 376 -3.6416169255971909e-02 - - -5.7923018932342529e-01 5.2343257702887058e-03 - <_> - - 0 -1 377 1.4502329751849174e-02 - - 3.7191450595855713e-02 -4.7790169715881348e-01 - <_> - - 0 -1 378 7.1894600987434387e-02 - - 1.3680050149559975e-02 -4.2053639888763428e-01 - <_> - - 0 -1 379 4.7077611088752747e-02 - - 3.7311609834432602e-02 -4.4205638766288757e-01 - <_> - - 0 -1 380 -2.0691620185971260e-02 - - 9.2584423720836639e-02 -5.4656080901622772e-02 - <_> - - 0 -1 381 5.8702230453491211e-02 - - 4.2894300073385239e-02 -3.9461919665336609e-01 - <_> - - 0 -1 382 2.6266539469361305e-02 - - -1.6368310898542404e-02 4.1084641218185425e-01 - <_> - - 0 -1 383 -6.7523908801376820e-03 - - 1.4126999676227570e-01 -1.1122710257768631e-01 - <_> - - 0 -1 384 -3.0624749138951302e-02 - - 3.3001619577407837e-01 -2.4412149563431740e-02 - <_> - - 0 -1 385 -2.0111929625272751e-02 - - 3.6708730459213257e-01 -4.4314250349998474e-02 - <_> - - 0 -1 386 2.3419620469212532e-02 - - -3.7601488828659058e-01 4.3635338544845581e-02 - <_> - - 0 -1 387 -3.6192089319229126e-03 - - 2.9460039734840393e-01 -5.8415818959474564e-02 - <_> - - 0 -1 388 -4.6485148370265961e-02 - - 2.2718380391597748e-01 -7.9986602067947388e-02 - <_> - - 0 -1 389 -2.7961090207099915e-02 - - -4.8854830861091614e-01 4.0761001408100128e-02 - <_> - - 0 -1 390 -8.8993441313505173e-03 - - -6.1056411266326904e-01 3.1436510384082794e-02 - <_> - - 0 -1 391 -4.7756999731063843e-02 - - 3.5695630311965942e-01 -4.7706581652164459e-02 - <_> - - 0 -1 392 1.5203200280666351e-02 - - 3.2397348433732986e-02 -5.1129198074340820e-01 - <_> - - 0 -1 393 -2.6603629812598228e-02 - - -4.5528748631477356e-01 3.0705869197845459e-02 - <_> - - 0 -1 394 -2.0662199240177870e-03 - - 1.9821240007877350e-01 -5.1250338554382324e-02 - <_> - - 0 -1 395 6.8433540873229504e-03 - - 4.2817000299692154e-02 -3.4796771407127380e-01 - <_> - - 0 -1 396 1.3943660305812955e-03 - - -7.6624289155006409e-02 1.7947790026664734e-01 - <_> - - 0 -1 397 -1.5453259402420372e-04 - - 9.4035491347312927e-02 -1.5089119970798492e-01 - <_> - - 0 -1 398 -1.6063340008258820e-01 - - 1.8896080553531647e-01 -7.5927153229713440e-02 - <_> - - 0 -1 399 1.6323490440845490e-01 - - -3.5981848835945129e-02 3.8546431064605713e-01 - <_> - - 0 -1 400 -2.1562659740447998e-01 - - -3.0063590407371521e-01 1.0327990166842937e-02 - <_> - - 0 -1 401 -1.8259340897202492e-02 - - -3.5089141130447388e-01 3.8606669753789902e-02 - <_> - - 0 -1 402 8.7421722128055990e-05 - - -8.4997348487377167e-02 8.9438356459140778e-02 - <_> - - 0 -1 403 9.1984707978554070e-05 - - -1.2029039859771729e-01 1.2935799360275269e-01 - <_> - - 0 -1 404 -9.7184813057538122e-05 - - 1.5226499736309052e-01 -1.0576970130205154e-01 - <_> - - 0 -1 405 -8.1813501310534775e-05 - - 1.5129140019416809e-01 -1.0089760273694992e-01 - <_> - - 0 -1 406 3.6952689290046692e-01 - - 3.3503640443086624e-02 -4.0417960286140442e-01 - <_> - - 0 -1 407 2.2105079144239426e-02 - - -2.1560800075531006e-01 6.4489699900150299e-02 - <_> - - 0 -1 408 1.3170000165700912e-02 - - 3.2980829477310181e-02 -2.8448399901390076e-01 - <_> - - 0 -1 409 1.3640720397233963e-02 - - -5.6598719209432602e-02 2.4039690196514130e-01 - <_> - - 0 -1 410 1.2301489710807800e-02 - - 1.9816080108284950e-02 -4.6144211292266846e-01 - <_> - - 0 -1 411 -9.5483958721160889e-02 - - -3.4973609447479248e-01 3.5531830042600632e-02 - <_> - - 0 -1 412 -1.0081489570438862e-02 - - -3.1359091401100159e-01 2.1178700029850006e-02 - <_> - - 0 -1 413 8.1625310704112053e-03 - - 3.2066490501165390e-02 -4.2840909957885742e-01 - <_> - - 0 -1 414 5.9994839131832123e-02 - - 4.8301668721251190e-04 -2.8568148612976074e-01 - <_> - - 0 -1 415 -5.8298230171203613e-02 - - 2.8866380453109741e-01 -4.5333638787269592e-02 - <_> - - 0 -1 416 8.0641999375075102e-04 - - -2.7502080425620079e-02 5.5130850523710251e-02 - <_> - - 0 -1 417 9.2612383014056832e-05 - - -9.0724922716617584e-02 1.6268420219421387e-01 - <_> - - 0 -1 418 -1.4031870290637016e-02 - - -1.7377139627933502e-01 2.7589490637183189e-02 - <_> - - 0 -1 419 -2.1856749430298805e-02 - - 1.1253879964351654e-01 -1.1328639835119247e-01 - <_> - - 0 -1 420 -4.2751420289278030e-02 - - -5.2992081642150879e-01 4.2229499667882919e-03 - <_> - - 0 -1 421 -3.0375849455595016e-02 - - -7.1178191900253296e-01 1.7570890486240387e-02 - <_> - - 0 -1 422 3.7499099969863892e-02 - - 6.9999499246478081e-03 -3.7006160616874695e-01 - <_> - - 0 -1 423 1.1432570172473788e-03 - - -6.2220100313425064e-02 1.7703770101070404e-01 - <_> - - 0 -1 424 -8.5832587501499802e-05 - - 6.0030180960893631e-02 -5.1105540245771408e-02 - <_> - - 0 -1 425 -9.4309507403522730e-05 - - 1.0625579953193665e-01 -1.1291199922561646e-01 - <_> - - 0 -1 426 3.9328118873527274e-05 - - -6.4681328833103180e-02 7.1846023201942444e-02 - <_> - - 0 -1 427 1.8130460754036903e-02 - - 3.4265581518411636e-02 -3.6213138699531555e-01 - <_> - - 0 -1 428 -3.4514781087636948e-02 - - 3.1022149324417114e-01 -4.1098561137914658e-02 - <_> - - 0 -1 429 2.7974370867013931e-02 - - -3.9424188435077667e-02 3.0851641297340393e-01 - <_> - - 0 -1 430 -2.8201080858707428e-02 - - 1.1525700241327286e-01 -7.4511423707008362e-02 - <_> - - 0 -1 431 -3.0379800125956535e-02 - - -5.2470958232879639e-01 2.6152899488806725e-02 - <_> - - 0 -1 432 -3.2038960605859756e-02 - - 1.9343900680541992e-01 -6.1670139431953430e-02 - <_> - - 0 -1 433 1.1998290196061134e-02 - - -7.5464673340320587e-02 1.9255849719047546e-01 - <_> - - 0 -1 434 -3.5314068198204041e-02 - - -5.0705671310424805e-01 1.0585010051727295e-02 - <_> - - 0 -1 435 -1.8655620515346527e-02 - - -3.6211800575256348e-01 3.6405950784683228e-02 - <_> - - 0 -1 436 -2.8076169546693563e-03 - - 5.3241610527038574e-02 -6.1510920524597168e-02 - <_> - - 0 -1 437 6.1249658465385437e-02 - - -4.6230819076299667e-02 2.6103648543357849e-01 - <_> - - 0 -1 438 3.8007500115782022e-03 - - -3.3608149737119675e-02 6.3185527920722961e-02 - <_> - - 0 -1 439 -6.8106069229543209e-03 - - 1.3896889984607697e-01 -9.1367863118648529e-02 - <_> - - 0 -1 440 -1.4018400106579065e-03 - - 5.0228320062160492e-02 -6.7810513079166412e-02 - <_> - - 0 -1 441 4.1776038706302643e-03 - - 3.1617678701877594e-02 -3.8861921429634094e-01 - <_> - - 0 -1 442 -3.3317681401968002e-02 - - 1.5129630267620087e-01 -8.0862723290920258e-02 - <_> - 126 - -1.5601739883422852e+00 - - <_> - - 0 -1 443 -1.7488760873675346e-02 - - 3.2901680469512939e-01 -2.5890278816223145e-01 - <_> - - 0 -1 444 -7.6176282018423080e-03 - - 7.1541152894496918e-02 -2.3951459676027298e-02 - <_> - - 0 -1 445 2.7712950110435486e-01 - - -3.4845480322837830e-01 1.8256700038909912e-01 - <_> - - 0 -1 446 -6.2221560627222061e-02 - - 1.0674960166215897e-01 -1.4201539754867554e-01 - <_> - - 0 -1 447 -2.7581760659813881e-03 - - 2.0689900219440460e-01 -3.4231829643249512e-01 - <_> - - 0 -1 448 2.4392189458012581e-02 - - -1.8963119387626648e-01 2.5946459174156189e-01 - <_> - - 0 -1 449 -4.5020319521427155e-03 - - 4.0866190195083618e-01 -1.1621879786252975e-01 - <_> - - 0 -1 450 -3.3270670101046562e-03 - - 2.8641051054000854e-01 -7.0059493184089661e-02 - <_> - - 0 -1 451 3.1234470661729574e-03 - - -3.1795001029968262e-01 1.1268649995326996e-01 - <_> - - 0 -1 452 4.7244699671864510e-03 - - -7.4922777712345123e-02 3.2988309860229492e-01 - <_> - - 0 -1 453 -5.5989590473473072e-03 - - 1.4106449484825134e-01 -2.1870850026607513e-01 - <_> - - 0 -1 454 -1.3673740439116955e-02 - - -2.9188311100006104e-01 5.1885809749364853e-02 - <_> - - 0 -1 455 -1.5710070729255676e-02 - - -4.7450101375579834e-01 7.2411507368087769e-02 - <_> - - 0 -1 456 -6.2331659719347954e-03 - - 1.5145640075206757e-01 -4.7863069921731949e-02 - <_> - - 0 -1 457 -5.9798290021717548e-03 - - 3.0300670862197876e-01 -1.0020550340414047e-01 - <_> - - 0 -1 458 -1.9614109769463539e-02 - - 2.3906539380550385e-01 -1.2380470335483551e-01 - <_> - - 0 -1 459 -9.7658529877662659e-02 - - 3.3550170063972473e-01 -8.4931187331676483e-02 - <_> - - 0 -1 460 5.5993441492319107e-02 - - -1.5721499919891357e-02 4.0024089813232422e-01 - <_> - - 0 -1 461 -9.7235292196273804e-03 - - 2.1756379306316376e-01 -1.1435779929161072e-01 - <_> - - 0 -1 462 -1.4722860418260098e-02 - - -5.5747538805007935e-01 3.6078389734029770e-02 - <_> - - 0 -1 463 2.5517370551824570e-02 - - -8.2256257534027100e-02 3.1335538625717163e-01 - <_> - - 0 -1 464 1.3567660003900528e-02 - - 2.3133050650358200e-02 -4.1297689080238342e-01 - <_> - - 0 -1 465 -1.7204899340867996e-02 - - -4.4162181019783020e-01 5.2605498582124710e-02 - <_> - - 0 -1 466 3.4919459372758865e-02 - - 1.4397609978914261e-02 -3.9569649100303650e-01 - <_> - - 0 -1 467 -1.7781810835003853e-02 - - -5.8534961938858032e-01 3.7046588957309723e-02 - <_> - - 0 -1 468 6.0122098773717880e-02 - - 1.4435539953410625e-02 -3.3743178844451904e-01 - <_> - - 0 -1 469 -5.4228208027780056e-03 - - 2.5677248835563660e-01 -7.9253107309341431e-02 - <_> - - 0 -1 470 -1.2484540231525898e-02 - - 1.1836159974336624e-01 -8.1720106303691864e-02 - <_> - - 0 -1 471 -1.6004320234060287e-02 - - 1.6762499511241913e-01 -1.4247520267963409e-01 - <_> - - 0 -1 472 1.8744349479675293e-02 - - -7.5924798846244812e-02 2.7398949861526489e-01 - <_> - - 0 -1 473 1.1467009782791138e-02 - - 5.8074008673429489e-02 -3.7608700990676880e-01 - <_> - - 0 -1 474 2.0451270043849945e-01 - - -5.2543081343173981e-02 5.0651127099990845e-01 - <_> - - 0 -1 475 -1.5374840237200260e-02 - - 2.8505790233612061e-01 -8.5190899670124054e-02 - <_> - - 0 -1 476 8.3877835422754288e-03 - - 5.0722919404506683e-02 -2.4024839699268341e-01 - <_> - - 0 -1 477 1.9463960081338882e-02 - - 4.7701448202133179e-02 -4.0168151259422302e-01 - <_> - - 0 -1 478 -9.6702417067717761e-05 - - 8.0057263374328613e-02 -1.0148379951715469e-01 - <_> - - 0 -1 479 -2.8271209448575974e-02 - - -6.6573107242584229e-01 2.7066949754953384e-02 - <_> - - 0 -1 480 4.0985859930515289e-02 - - 2.3980900645256042e-02 -2.8985351324081421e-01 - <_> - - 0 -1 481 -2.4697459302842617e-03 - - 9.0631358325481415e-02 -2.1575699746608734e-01 - <_> - - 0 -1 482 -3.6953210830688477e-02 - - -6.1706972122192383e-01 2.4969769641757011e-02 - <_> - - 0 -1 483 -1.4313410036265850e-02 - - -4.3720778822898865e-01 3.4561868757009506e-02 - <_> - - 0 -1 484 1.5469809994101524e-02 - - -5.5725499987602234e-02 2.9458519816398621e-01 - <_> - - 0 -1 485 1.5401760116219521e-02 - - -1.2555029988288879e-01 1.7011690139770508e-01 - <_> - - 0 -1 486 2.0449940115213394e-02 - - 1.3330750167369843e-02 -3.5554531216621399e-01 - <_> - - 0 -1 487 -1.1459179950179532e-04 - - 1.0097809880971909e-01 -1.7902599275112152e-01 - <_> - - 0 -1 488 2.1345940232276917e-01 - - -6.0278929769992828e-02 2.4713979661464691e-01 - <_> - - 0 -1 489 -7.6341837644577026e-02 - - 1.0174889862537384e-01 -1.7403389513492584e-01 - <_> - - 0 -1 490 -2.7297199703752995e-03 - - 7.9033032059669495e-02 -4.8074871301651001e-02 - <_> - - 0 -1 491 -3.9923721924424171e-03 - - 1.9130119681358337e-01 -8.8253356516361237e-02 - <_> - - 0 -1 492 8.8855503126978874e-03 - - -7.5035899877548218e-02 2.4043780565261841e-01 - <_> - - 0 -1 493 -9.9884327501058578e-03 - - 1.9008040428161621e-01 -1.0136889666318893e-01 - <_> - - 0 -1 494 -2.7102470397949219e-02 - - -5.5960011482238770e-01 8.8603552430868149e-03 - <_> - - 0 -1 495 1.0957789607346058e-02 - - 4.1825290769338608e-02 -4.5446240901947021e-01 - <_> - - 0 -1 496 -1.7460700124502182e-02 - - -2.3399209976196289e-01 1.6339760273694992e-02 - <_> - - 0 -1 497 -1.9853349775075912e-02 - - -4.8932269215583801e-01 3.2708961516618729e-02 - <_> - - 0 -1 498 -6.1350357718765736e-03 - - -5.1191371679306030e-01 2.7723550796508789e-02 - <_> - - 0 -1 499 -4.8992279917001724e-02 - - -3.6576160788536072e-01 4.0420729666948318e-02 - <_> - - 0 -1 500 -3.3459690213203430e-01 - - -5.9153968095779419e-01 2.1460810676217079e-02 - <_> - - 0 -1 501 -2.8862519189715385e-02 - - -5.9815990924835205e-01 1.9781190901994705e-02 - <_> - - 0 -1 502 -1.1251099640503526e-03 - - 2.0122319459915161e-01 -8.7745033204555511e-02 - <_> - - 0 -1 503 -6.4093400724232197e-03 - - -6.1948382854461670e-01 2.3344030603766441e-02 - <_> - - 0 -1 504 1.1830270523205400e-03 - - -6.9342859089374542e-02 1.4039330184459686e-01 - <_> - - 0 -1 505 -1.0599560337141156e-03 - - 1.7260709404945374e-01 -8.1097446382045746e-02 - <_> - - 0 -1 506 -8.5180420428514481e-03 - - -5.3051722049713135e-01 2.6180759072303772e-02 - <_> - - 0 -1 507 -2.3521099239587784e-02 - - 2.5432139635086060e-01 -5.6951168924570084e-02 - <_> - - 0 -1 508 7.3622940108180046e-03 - - 3.0450310558080673e-02 -2.6797720789909363e-01 - <_> - - 0 -1 509 -2.1439490839838982e-02 - - -3.3608379960060120e-01 4.3043609708547592e-02 - <_> - - 0 -1 510 -1.1769459582865238e-02 - - 1.0212860256433487e-01 -1.0810419917106628e-01 - <_> - - 0 -1 511 2.8588879853487015e-02 - - -6.0787688940763474e-02 3.1145519018173218e-01 - <_> - - 0 -1 512 -1.1894520372152328e-02 - - -4.5586681365966797e-01 3.2649289816617966e-02 - <_> - - 0 -1 513 8.9476241555530578e-05 - - -1.7755030095577240e-01 7.9232156276702881e-02 - <_> - - 0 -1 514 1.0587619617581367e-02 - - -2.4411190301179886e-02 2.2775959968566895e-01 - <_> - - 0 -1 515 -1.3677559792995453e-02 - - 1.0863789916038513e-01 -1.2193650007247925e-01 - <_> - - 0 -1 516 1.3244390487670898e-01 - - -3.3203829079866409e-02 4.5417618751525879e-01 - <_> - - 0 -1 517 -3.4419998526573181e-02 - - -4.4876348972320557e-01 3.3680748194456100e-02 - <_> - - 0 -1 518 1.4392529614269733e-02 - - 1.7250670120120049e-02 -2.8750520944595337e-01 - <_> - - 0 -1 519 -1.5969440340995789e-02 - - -5.4419952630996704e-01 2.2490320727229118e-02 - <_> - - 0 -1 520 1.7835280159488320e-03 - - 2.8877379372715950e-02 -2.2269259393215179e-01 - <_> - - 0 -1 521 -4.9637211486697197e-03 - - 1.5367990732192993e-01 -8.0054156482219696e-02 - <_> - - 0 -1 522 3.7779840640723705e-03 - - -4.9544081091880798e-02 8.9024871587753296e-02 - <_> - - 0 -1 523 7.8981714323163033e-03 - - -7.4866697192192078e-02 2.0431950688362122e-01 - <_> - - 0 -1 524 -8.0553352832794189e-02 - - -5.6442260742187500e-01 9.1366795822978020e-03 - <_> - - 0 -1 525 -3.0759580433368683e-02 - - -4.4340169429779053e-01 2.4137599393725395e-02 - <_> - - 0 -1 526 -9.2535447329282761e-03 - - -5.6261157989501953e-01 9.2792203649878502e-03 - <_> - - 0 -1 527 -1.2369129399303347e-04 - - 1.0645399987697601e-01 -1.2000100314617157e-01 - <_> - - 0 -1 528 3.2567538321018219e-02 - - -4.0003869682550430e-02 1.9980829954147339e-01 - <_> - - 0 -1 529 -1.1247079819440842e-02 - - 1.8409490585327148e-01 -6.8117700517177582e-02 - <_> - - 0 -1 530 -2.9179789125919342e-02 - - 4.8721261322498322e-02 -4.7425370663404465e-02 - <_> - - 0 -1 531 4.9517739564180374e-02 - - 3.2707910984754562e-02 -3.8871440291404724e-01 - <_> - - 0 -1 532 -7.7525358647108078e-03 - - -4.0735891461372375e-01 2.7974059805274010e-02 - <_> - - 0 -1 533 2.0060930401086807e-02 - - -7.0303089916706085e-02 1.7212529480457306e-01 - <_> - - 0 -1 534 -6.1907349154353142e-03 - - 2.6576110720634460e-01 -6.0436088591814041e-02 - <_> - - 0 -1 535 -3.2592790666967630e-03 - - -4.4088658690452576e-01 2.9936179518699646e-02 - <_> - - 0 -1 536 6.9727632217109203e-03 - - 2.2902229800820351e-02 -3.0562791228294373e-01 - <_> - - 0 -1 537 -3.1218219548463821e-02 - - 1.3678680360317230e-01 -8.6494326591491699e-02 - <_> - - 0 -1 538 -2.1239029243588448e-02 - - 9.2500463128089905e-02 -1.4436760544776917e-01 - <_> - - 0 -1 539 -1.1203570291399956e-02 - - 1.7076200246810913e-01 -7.0275321602821350e-02 - <_> - - 0 -1 540 -2.5859309360384941e-02 - - 1.4182479679584503e-01 -3.3001139760017395e-02 - <_> - - 0 -1 541 1.2670049909502268e-04 - - -1.3006690144538879e-01 9.2362843453884125e-02 - <_> - - 0 -1 542 4.3577109463512897e-03 - - -3.5865459591150284e-02 4.4456228613853455e-02 - <_> - - 0 -1 543 2.7678349614143372e-01 - - 1.2988999485969543e-01 -9.0131908655166626e-02 - <_> - - 0 -1 544 -2.5398649275302887e-02 - - -8.2552421092987061e-01 3.6853079218417406e-03 - <_> - - 0 -1 545 -1.2352040037512779e-02 - - -5.6349527835845947e-01 1.8808899447321892e-02 - <_> - - 0 -1 546 8.2362545654177666e-03 - - 7.0837750099599361e-03 -5.5061972141265869e-01 - <_> - - 0 -1 547 1.1910520261153579e-03 - - -7.4929133057594299e-02 1.6042159497737885e-01 - <_> - - 0 -1 548 1.3469549594447017e-04 - - -5.1338870078325272e-02 5.3888119757175446e-02 - <_> - - 0 -1 549 -1.7835580511018634e-03 - - 2.1617199480533600e-01 -5.3082071244716644e-02 - <_> - - 0 -1 550 2.3661980405449867e-02 - - 5.9997271746397018e-03 -6.8889677524566650e-01 - <_> - - 0 -1 551 -9.9182292819023132e-02 - - 3.4148588776588440e-01 -3.3521678298711777e-02 - <_> - - 0 -1 552 1.6663040220737457e-01 - - -8.2063250243663788e-02 1.5505069494247437e-01 - <_> - - 0 -1 553 -3.2383298967033625e-03 - - 9.4989769160747528e-02 -1.3713200390338898e-01 - <_> - - 0 -1 554 -4.0861237794160843e-03 - - -2.9612249135971069e-01 1.4876189641654491e-02 - <_> - - 0 -1 555 -7.7778939157724380e-04 - - 1.5173420310020447e-01 -7.8519538044929504e-02 - <_> - - 0 -1 556 7.2721489705145359e-03 - - 2.4271810427308083e-02 -4.9869158864021301e-01 - <_> - - 0 -1 557 -1.1204819747945294e-04 - - 1.0622479766607285e-01 -1.0977140069007874e-01 - <_> - - 0 -1 558 -9.0798959136009216e-02 - - -2.7696010470390320e-01 1.6883529722690582e-02 - <_> - - 0 -1 559 1.7063830047845840e-02 - - -9.4675257802009583e-02 1.5047849714756012e-01 - <_> - - 0 -1 560 4.2208808660507202e-01 - - 2.2498339414596558e-02 -4.6997109055519104e-01 - <_> - - 0 -1 561 8.2323037087917328e-02 - - -2.4581270292401314e-02 4.4949281215667725e-01 - <_> - - 0 -1 562 -1.3997350470162928e-04 - - 1.0967099666595459e-01 -1.0202780365943909e-01 - <_> - - 0 -1 563 5.4491691291332245e-02 - - 2.7186699211597443e-02 -3.5525378584861755e-01 - <_> - - 0 -1 564 8.6169438436627388e-03 - - -2.3389210924506187e-02 8.4641262888908386e-02 - <_> - - 0 -1 565 -2.6372019201517105e-02 - - -4.8046991229057312e-01 2.0224269479513168e-02 - <_> - - 0 -1 566 -2.0510379690676928e-03 - - 6.4058199524879456e-02 -5.3157251328229904e-02 - <_> - - 0 -1 567 -2.8355750255286694e-03 - - 1.0579310357570648e-01 -1.0183099657297134e-01 - <_> - - 0 -1 568 -3.5882219672203064e-03 - - 4.1550219058990479e-02 -8.8538073003292084e-02 - <_> - 113 - -1.5219190120697021e+00 - - <_> - - 0 -1 569 -2.9585899785161018e-02 - - 2.3680339753627777e-01 -4.2841690778732300e-01 - <_> - - 0 -1 570 4.3837837874889374e-03 - - -1.0966610163450241e-01 2.1417999267578125e-01 - <_> - - 0 -1 571 -3.3207288943231106e-03 - - 2.0494979619979858e-01 -3.5999551415443420e-01 - <_> - - 0 -1 572 -1.3062369823455811e-01 - - 1.9599080085754395e-01 -5.5496081709861755e-02 - <_> - - 0 -1 573 -4.0074709802865982e-02 - - 3.5060319304466248e-01 -1.4514569938182831e-01 - <_> - - 0 -1 574 -9.1901496052742004e-03 - - 1.9584690034389496e-01 -1.8307019770145416e-01 - <_> - - 0 -1 575 3.1390838325023651e-02 - - -1.2538769841194153e-01 3.5840180516242981e-01 - <_> - - 0 -1 576 -2.8154529631137848e-02 - - 2.4045500159263611e-01 -1.0665749758481979e-01 - <_> - - 0 -1 577 -3.1386429909616709e-03 - - 1.0872109979391098e-01 -2.8648340702056885e-01 - <_> - - 0 -1 578 3.7445150315761566e-02 - - -1.9261129200458527e-02 2.9213270545005798e-01 - <_> - - 0 -1 579 -2.3726930841803551e-02 - - 2.1073000133037567e-01 -1.5662379562854767e-01 - <_> - - 0 -1 580 -1.2667299597524107e-04 - - 6.5764471888542175e-02 -8.8266886770725250e-02 - <_> - - 0 -1 581 -1.1386990081518888e-04 - - 1.2571960687637329e-01 -2.5380450487136841e-01 - <_> - - 0 -1 582 1.7410060390830040e-02 - - 2.1554760634899139e-02 -3.7880858778953552e-01 - <_> - - 0 -1 583 -2.0424669608473778e-02 - - -6.2727987766265869e-01 4.4566430151462555e-02 - <_> - - 0 -1 584 -1.9522489979863167e-02 - - 3.0573040246963501e-01 -7.4159696698188782e-02 - <_> - - 0 -1 585 -1.4893850684165955e-01 - - 2.1615840494632721e-01 -1.3478299975395203e-01 - <_> - - 0 -1 586 -1.8726779147982597e-02 - - -4.2101779580116272e-01 1.8423220142722130e-02 - <_> - - 0 -1 587 1.1000379920005798e-02 - - 4.8627670854330063e-02 -4.8832741379737854e-01 - <_> - - 0 -1 588 1.8614949658513069e-03 - - 5.4186780005693436e-02 -4.0128099918365479e-01 - <_> - - 0 -1 589 -9.9544697150122374e-05 - - 1.5979149937629700e-01 -1.5368139743804932e-01 - <_> - - 0 -1 590 -4.5718628913164139e-02 - - 1.9089759886264801e-01 -6.7994199693202972e-02 - <_> - - 0 -1 591 1.9421679899096489e-02 - - -7.1206711232662201e-02 3.1886649131774902e-01 - <_> - - 0 -1 592 1.3375740672927350e-04 - - -1.9609630107879639e-01 9.8393999040126801e-02 - <_> - - 0 -1 593 5.6271668523550034e-02 - - -7.0181913673877716e-02 2.9178839921951294e-01 - <_> - - 0 -1 594 -9.5227472484111786e-03 - - 1.2545530498027802e-01 -5.6728851050138474e-02 - <_> - - 0 -1 595 -8.3248773589730263e-03 - - 2.1773670613765717e-01 -9.0510971844196320e-02 - <_> - - 0 -1 596 -1.3861699961125851e-02 - - -5.0754171609878540e-01 3.4201409667730331e-02 - <_> - - 0 -1 597 -1.7032949253916740e-02 - - -6.0418641567230225e-01 2.9236070811748505e-02 - <_> - - 0 -1 598 1.8115249695256352e-03 - - 5.3599029779434204e-02 -3.8502350449562073e-01 - <_> - - 0 -1 599 -1.0465639934409410e-04 - - 1.4829610288143158e-01 -1.3145260512828827e-01 - <_> - - 0 -1 600 -4.5165838673710823e-03 - - 1.6519570350646973e-01 -8.2269832491874695e-02 - <_> - - 0 -1 601 -5.8911121450364590e-03 - - 2.3836469650268555e-01 -9.6064627170562744e-02 - <_> - - 0 -1 602 1.0750669753178954e-04 - - -1.0889690369367599e-01 8.3729512989521027e-02 - <_> - - 0 -1 603 -2.1406659856438637e-02 - - -5.7400590181350708e-01 3.4402690827846527e-02 - <_> - - 0 -1 604 -3.3456799574196339e-03 - - 1.7945970594882965e-01 -8.2998618483543396e-02 - <_> - - 0 -1 605 2.7489429339766502e-02 - - 3.0824439600110054e-02 -5.8022832870483398e-01 - <_> - - 0 -1 606 2.1110640373080969e-03 - - -6.6623561084270477e-02 1.1231890320777893e-01 - <_> - - 0 -1 607 -1.0807989747263491e-04 - - 8.9796923100948334e-02 -1.7956060171127319e-01 - <_> - - 0 -1 608 -1.1436110362410545e-02 - - -2.8840988874435425e-01 1.4820040203630924e-02 - <_> - - 0 -1 609 -1.1947689577937126e-02 - - -6.1322289705276489e-01 3.0310040339827538e-02 - <_> - - 0 -1 610 -1.1076559894718230e-04 - - 6.2256809324026108e-02 -6.6575892269611359e-02 - <_> - - 0 -1 611 -3.4022140316665173e-03 - - 2.0614670217037201e-01 -8.2437336444854736e-02 - <_> - - 0 -1 612 -2.1814549341797829e-02 - - -5.2821779251098633e-01 1.9165750592947006e-02 - <_> - - 0 -1 613 -5.7069370523095131e-03 - - 1.6021859645843506e-01 -1.0214129835367203e-01 - <_> - - 0 -1 614 -4.5757409185171127e-02 - - -5.9256380796432495e-01 1.5681680291891098e-02 - <_> - - 0 -1 615 -6.1292409896850586e-02 - - -6.0241961479187012e-01 2.3671669885516167e-02 - <_> - - 0 -1 616 -3.3792359754443169e-03 - - 1.3549880683422089e-01 -1.1183329671621323e-01 - <_> - - 0 -1 617 -1.3138949871063232e-02 - - 2.5460991263389587e-01 -6.0035631060600281e-02 - <_> - - 0 -1 618 1.3603650033473969e-02 - - -6.6929057240486145e-02 2.5394749641418457e-01 - <_> - - 0 -1 619 3.9979619905352592e-03 - - 4.5510061085224152e-02 -3.4562489390373230e-01 - <_> - - 0 -1 620 7.2696888819336891e-03 - - 1.4675630256533623e-02 -4.9067720770835876e-01 - <_> - - 0 -1 621 -1.9900960614904761e-04 - - 9.5301151275634766e-02 -1.6552710533142090e-01 - <_> - - 0 -1 622 -1.1526229977607727e-01 - - -1.9299569725990295e-01 2.6505190879106522e-02 - <_> - - 0 -1 623 1.5108739957213402e-02 - - -1.2415219843387604e-01 1.3125440478324890e-01 - <_> - - 0 -1 624 -3.7075690925121307e-02 - - 2.3687429726123810e-01 -4.0280740708112717e-02 - <_> - - 0 -1 625 -2.6980770751833916e-02 - - 2.8977629542350769e-01 -5.6271400302648544e-02 - <_> - - 0 -1 626 2.7761999517679214e-02 - - 2.1243380382657051e-02 -3.1720191240310669e-01 - <_> - - 0 -1 627 -2.3027699440717697e-02 - - 1.7699679732322693e-01 -8.7042309343814850e-02 - <_> - - 0 -1 628 5.4088570177555084e-02 - - -6.1808630824089050e-02 2.9303619265556335e-01 - <_> - - 0 -1 629 -5.8628612896427512e-04 - - 8.5848852992057800e-02 -1.6957600414752960e-01 - <_> - - 0 -1 630 -1.5223369933664799e-02 - - -3.7147569656372070e-01 1.1803089641034603e-02 - <_> - - 0 -1 631 -1.1488939635455608e-02 - - -4.5097041130065918e-01 3.1614851206541061e-02 - <_> - - 0 -1 632 2.0920310635119677e-03 - - -6.1659429222345352e-02 8.8506996631622314e-02 - <_> - - 0 -1 633 -4.0617170743644238e-03 - - 1.5518330037593842e-01 -9.1991297900676727e-02 - <_> - - 0 -1 634 1.1135039676446468e-04 - - -8.7840989232063293e-02 1.0133089870214462e-01 - <_> - - 0 -1 635 1.1977129906881601e-04 - - -1.1713469773530960e-01 1.2503969669342041e-01 - <_> - - 0 -1 636 -3.2901849597692490e-02 - - 9.3008488416671753e-02 -2.6525959372520447e-02 - <_> - - 0 -1 637 -4.8292260617017746e-02 - - 2.5879448652267456e-01 -5.9369418770074844e-02 - <_> - - 0 -1 638 -5.4056089371442795e-02 - - 1.0135240107774734e-01 -1.0452730208635330e-01 - <_> - - 0 -1 639 9.4745680689811707e-03 - - 3.4919779747724533e-02 -3.6243519186973572e-01 - <_> - - 0 -1 640 1.2838640250265598e-02 - - -3.3247381448745728e-02 8.1635028123855591e-02 - <_> - - 0 -1 641 5.8513090014457703e-02 - - 2.2172549739480019e-02 -6.3187897205352783e-01 - <_> - - 0 -1 642 3.1740390695631504e-03 - - 2.1843500435352325e-02 -4.1793620586395264e-01 - <_> - - 0 -1 643 -8.3488157542888075e-05 - - 1.3983680307865143e-01 -9.4738103449344635e-02 - <_> - - 0 -1 644 -2.4147950112819672e-01 - - -2.9803830385208130e-01 1.0715509764850140e-02 - <_> - - 0 -1 645 -1.5269799530506134e-01 - - 2.1027280390262604e-01 -6.2791332602500916e-02 - <_> - - 0 -1 646 8.1526712165214121e-05 - - -1.2688499689102173e-01 1.4064699411392212e-01 - <_> - - 0 -1 647 2.8918751049786806e-03 - - -5.3787451237440109e-02 2.5723600387573242e-01 - <_> - - 0 -1 648 1.0334750264883041e-01 - - -4.5310858637094498e-02 2.9249981045722961e-01 - <_> - - 0 -1 649 -4.4316049665212631e-02 - - 2.2686310112476349e-01 -7.3259286582469940e-02 - <_> - - 0 -1 650 1.0020990157499909e-04 - - -1.9540700316429138e-01 9.6934191882610321e-02 - <_> - - 0 -1 651 -5.4574098438024521e-02 - - -4.8137459158897400e-01 2.4985810741782188e-02 - <_> - - 0 -1 652 7.3195910081267357e-03 - - 3.1002139672636986e-02 -2.7970591187477112e-01 - <_> - - 0 -1 653 1.0135199874639511e-02 - - 4.3817508965730667e-02 -2.9374900460243225e-01 - <_> - - 0 -1 654 1.0032069985754788e-04 - - -7.1889169514179230e-02 5.5231738835573196e-02 - <_> - - 0 -1 655 -1.0669980198144913e-02 - - -5.4181689023971558e-01 2.2745499387383461e-02 - <_> - - 0 -1 656 1.3994649634696543e-04 - - -1.7900389432907104e-01 5.5582638829946518e-02 - <_> - - 0 -1 657 -1.9100980833172798e-02 - - 2.1325789391994476e-01 -5.5573090910911560e-02 - <_> - - 0 -1 658 -3.7138879299163818e-02 - - 1.0222770273685455e-01 -1.3214519619941711e-01 - <_> - - 0 -1 659 -3.0081560835242271e-02 - - -9.2211201786994934e-02 1.3682609796524048e-01 - <_> - - 0 -1 660 8.4205687046051025e-02 - - -8.9014582335948944e-03 4.9819019436836243e-01 - <_> - - 0 -1 661 5.4196681827306747e-02 - - -3.6897160112857819e-02 3.0469229817390442e-01 - <_> - - 0 -1 662 -3.0808220617473125e-03 - - -2.1802039444446564e-01 2.5868140161037445e-02 - <_> - - 0 -1 663 -3.8952209055423737e-02 - - -5.6945180892944336e-01 1.8307609483599663e-02 - <_> - - 0 -1 664 -2.0182169973850250e-03 - - 9.0408429503440857e-02 -3.9514921605587006e-02 - <_> - - 0 -1 665 1.2030619836878031e-04 - - -8.8653340935707092e-02 1.2966379523277283e-01 - <_> - - 0 -1 666 -3.4868849907070398e-03 - - -4.6177589893341064e-01 3.2781731337308884e-02 - <_> - - 0 -1 667 1.9827641081064939e-03 - - -5.7257439941167831e-02 2.0264209806919098e-01 - <_> - - 0 -1 668 -6.5655857324600220e-02 - - -6.0540872812271118e-01 9.3178926035761833e-03 - <_> - - 0 -1 669 -6.7180477082729340e-02 - - -7.7103197574615479e-01 1.4232809655368328e-02 - <_> - - 0 -1 670 -1.0016120359068736e-04 - - 7.7105052769184113e-02 -7.5750999152660370e-02 - <_> - - 0 -1 671 1.0698969708755612e-04 - - -9.5489822328090668e-02 1.1988189816474915e-01 - <_> - - 0 -1 672 -7.9930722713470459e-02 - - -1.6380259394645691e-01 1.3423699885606766e-02 - <_> - - 0 -1 673 -8.4473669528961182e-02 - - -4.8431029915809631e-01 2.2637430578470230e-02 - <_> - - 0 -1 674 -1.2981670442968607e-04 - - 8.6959727108478546e-02 -7.9428322613239288e-02 - <_> - - 0 -1 675 1.0976740159094334e-03 - - -7.1204371750354767e-02 1.7087329924106598e-01 - <_> - - 0 -1 676 1.6371599631384015e-03 - - -5.5209361016750336e-02 6.0871999710798264e-02 - <_> - - 0 -1 677 1.6619920730590820e-02 - - 2.4160409346222878e-02 -4.5807400345802307e-01 - <_> - - 0 -1 678 -4.8507770895957947e-01 - - -6.8080270290374756e-01 1.4013550244271755e-02 - <_> - - 0 -1 679 -2.2336160764098167e-03 - - 9.1761179268360138e-02 -1.2991249561309814e-01 - <_> - - 0 -1 680 -4.0087301284074783e-02 - - 2.5663140416145325e-01 -5.2874509245157242e-02 - <_> - - 0 -1 681 -2.0479310303926468e-02 - - 1.3254520297050476e-01 -1.1415109783411026e-01 - <_> - 165 - -1.5396820306777954e+00 - - <_> - - 0 -1 682 -3.0279869213700294e-02 - - 2.6074808835983276e-01 -2.9911878705024719e-01 - <_> - - 0 -1 683 2.5544969365000725e-02 - - -7.6168537139892578e-02 1.4981770515441895e-01 - <_> - - 0 -1 684 -3.0233090743422508e-02 - - 1.9648909568786621e-01 -2.8406110405921936e-01 - <_> - - 0 -1 685 -3.1364429742097855e-02 - - 1.3312689960002899e-01 -6.8049967288970947e-02 - <_> - - 0 -1 686 -6.6530257463455200e-02 - - 2.3011529445648193e-01 -1.5324029326438904e-01 - <_> - - 0 -1 687 -1.6842380166053772e-02 - - 3.3064040541648865e-01 -1.0679270327091217e-01 - <_> - - 0 -1 688 3.0633020401000977e-01 - - -5.1862299442291260e-03 -1.7709560546875000e+03 - <_> - - 0 -1 689 8.6503643542528152e-03 - - 4.1600249707698822e-02 -3.9576560258865356e-01 - <_> - - 0 -1 690 1.1161570250988007e-01 - - 6.7927487194538116e-02 -4.8279160261154175e-01 - <_> - - 0 -1 691 1.8374849110841751e-02 - - -1.4926449954509735e-01 1.6236560046672821e-01 - <_> - - 0 -1 692 1.1767529940698296e-04 - - -2.5731500983238220e-01 8.8558197021484375e-02 - <_> - - 0 -1 693 4.1459160856902599e-03 - - -1.2687800452113152e-02 7.7366776764392853e-02 - <_> - - 0 -1 694 1.9385030493140221e-02 - - 3.8660649210214615e-02 -5.6522101163864136e-01 - <_> - - 0 -1 695 -4.7151502221822739e-03 - - 1.7933480441570282e-01 -1.0190699994564056e-01 - <_> - - 0 -1 696 -6.3565477728843689e-02 - - 3.7969771027565002e-01 -6.1266478151082993e-02 - <_> - - 0 -1 697 -2.1264329552650452e-02 - - 1.7494979500770569e-01 -6.1323810368776321e-02 - <_> - - 0 -1 698 -1.5541970729827881e-01 - - 3.7420210242271423e-01 -5.9625931084156036e-02 - <_> - - 0 -1 699 -1.5928709506988525e-01 - - -2.0913429558277130e-01 9.9482368677854538e-03 - <_> - - 0 -1 700 -4.8500150442123413e-02 - - 2.0101189613342285e-01 -1.1658769845962524e-01 - <_> - - 0 -1 701 2.7365760877728462e-02 - - 1.7961660400032997e-02 -5.0528198480606079e-01 - <_> - - 0 -1 702 1.3842820189893246e-02 - - 4.5227438211441040e-02 -4.1571640968322754e-01 - <_> - - 0 -1 703 -7.3072552680969238e-02 - - -2.4777120351791382e-01 1.1063029989600182e-02 - <_> - - 0 -1 704 -3.2598939724266529e-03 - - 8.0251343548297882e-02 -2.9581651091575623e-01 - <_> - - 0 -1 705 2.5017689913511276e-02 - - 1.9366070628166199e-02 -3.5857200622558594e-01 - <_> - - 0 -1 706 1.6677830368280411e-02 - - 4.1564568877220154e-02 -4.3558189272880554e-01 - <_> - - 0 -1 707 -4.7600651159882545e-03 - - 2.5715979933738708e-01 -1.0322690010070801e-01 - <_> - - 0 -1 708 -5.4333410225808620e-03 - - 2.3189009726047516e-01 -8.1801012158393860e-02 - <_> - - 0 -1 709 -3.3548839855939150e-03 - - 1.9780829548835754e-01 -3.0241459608078003e-02 - <_> - - 0 -1 710 1.1623079888522625e-02 - - 3.4616850316524506e-02 -4.6493241190910339e-01 - <_> - - 0 -1 711 -3.2393898814916611e-02 - - 1.1313209682703018e-01 -3.5140689462423325e-02 - <_> - - 0 -1 712 -4.8913709819316864e-02 - - 4.8904749751091003e-01 -3.4122288227081299e-02 - <_> - - 0 -1 713 -1.8474429845809937e-02 - - 2.6580730080604553e-01 -5.8163199573755264e-02 - <_> - - 0 -1 714 5.4383978247642517e-02 - - -6.6510722041130066e-02 2.5590199232101440e-01 - <_> - - 0 -1 715 -9.6155777573585510e-03 - - 2.1052959561347961e-01 -7.2851337492465973e-02 - <_> - - 0 -1 716 -1.0688910260796547e-02 - - -5.1457118988037109e-01 3.7727449089288712e-02 - <_> - - 0 -1 717 -9.2319631949067116e-03 - - -3.8744360208511353e-01 3.1080190092325211e-02 - <_> - - 0 -1 718 -1.4203519560396671e-02 - - -5.2725839614868164e-01 2.8752619400620461e-02 - <_> - - 0 -1 719 -1.1013289913535118e-02 - - 1.8653820455074310e-01 -1.1610689759254456e-01 - <_> - - 0 -1 720 -8.6668403819203377e-03 - - -3.8775750994682312e-01 3.8770258426666260e-02 - <_> - - 0 -1 721 6.2698893249034882e-02 - - 3.0983440577983856e-02 -3.3265390992164612e-01 - <_> - - 0 -1 722 -8.5753016173839569e-03 - - -5.7140302658081055e-01 2.5879889726638794e-02 - <_> - - 0 -1 723 -4.7201640903949738e-02 - - -6.9058227539062500e-01 2.5752310175448656e-03 - <_> - - 0 -1 724 -4.5456448569893837e-03 - - 1.4207980036735535e-01 -1.0768160223960876e-01 - <_> - - 0 -1 725 6.5161921083927155e-03 - - -6.4744740724563599e-02 6.8756408989429474e-02 - <_> - - 0 -1 726 5.9258960187435150e-02 - - 3.5610690712928772e-02 -4.2347010970115662e-01 - <_> - - 0 -1 727 -1.0237420065095648e-04 - - 8.9698426425457001e-02 -1.1640360206365585e-01 - <_> - - 0 -1 728 -1.3284040323924273e-04 - - 8.1888839602470398e-02 -1.6856490075588226e-01 - <_> - - 0 -1 729 1.1395310139050707e-04 - - -6.6531307995319366e-02 6.2950029969215393e-02 - <_> - - 0 -1 730 -7.9775685444474220e-03 - - -3.6961629986763000e-01 3.9622299373149872e-02 - <_> - - 0 -1 731 1.1280580423772335e-02 - - 2.0512890070676804e-02 -3.2650449872016907e-01 - <_> - - 0 -1 732 -2.8830489609390497e-03 - - 1.7990750074386597e-01 -8.9808806777000427e-02 - <_> - - 0 -1 733 4.2662010528147221e-03 - - -4.1640471667051315e-02 3.2371160387992859e-01 - <_> - - 0 -1 734 -1.3183150440454483e-04 - - 1.3967730104923248e-01 -1.1727079749107361e-01 - <_> - - 0 -1 735 -2.2476160898804665e-02 - - -6.2844127416610718e-01 2.9074009507894516e-02 - <_> - - 0 -1 736 -1.4370390214025974e-02 - - 1.5368999540805817e-01 -1.0520540177822113e-01 - <_> - - 0 -1 737 1.1654799891402945e-04 - - -8.3058603107929230e-02 9.2904143035411835e-02 - <_> - - 0 -1 738 2.2677709348499775e-03 - - -7.2462536394596100e-02 2.1309800446033478e-01 - <_> - - 0 -1 739 2.3946949839591980e-01 - - -5.9451188892126083e-02 2.3515209555625916e-01 - <_> - - 0 -1 740 1.7877299338579178e-02 - - -1.1026129871606827e-01 1.4158380031585693e-01 - <_> - - 0 -1 741 -1.5361069701611996e-02 - - -4.9897781014442444e-01 2.3761089891195297e-02 - <_> - - 0 -1 742 7.5403959490358829e-03 - - -8.1947498023509979e-02 1.4900860190391541e-01 - <_> - - 0 -1 743 8.1448331475257874e-03 - - 3.5342019051313400e-02 -3.7091499567031860e-01 - <_> - - 0 -1 744 1.3363580219447613e-03 - - -7.6095156371593475e-02 1.6213759779930115e-01 - <_> - - 0 -1 745 -1.2043320020893589e-04 - - 9.0054206550121307e-02 -5.5159721523523331e-02 - <_> - - 0 -1 746 -1.2009990314254537e-04 - - 1.4145790040493011e-01 -9.4803117215633392e-02 - <_> - - 0 -1 747 1.0903520160354674e-04 - - -1.2242019921541214e-01 1.1741840094327927e-01 - <_> - - 0 -1 748 9.7870870376937091e-05 - - -1.2043909728527069e-01 1.1508560180664062e-01 - <_> - - 0 -1 749 -2.3091919720172882e-02 - - 1.3310079276561737e-01 -9.9734462797641754e-02 - <_> - - 0 -1 750 -3.9068670012056828e-03 - - 2.4054819345474243e-01 -5.9338040649890900e-02 - <_> - - 0 -1 751 -5.9686671011149883e-03 - - -4.9683380126953125e-01 2.9891790822148323e-02 - <_> - - 0 -1 752 -1.5916809439659119e-02 - - -3.4195870161056519e-01 3.1308840960264206e-02 - <_> - - 0 -1 753 2.3104140534996986e-02 - - -3.6324020475149155e-02 3.5032561421394348e-01 - <_> - - 0 -1 754 -1.1559560149908066e-01 - - 1.4629890024662018e-01 -8.7614320218563080e-02 - <_> - - 0 -1 755 3.3450409770011902e-02 - - 2.4819390848278999e-02 -2.5611048936843872e-01 - <_> - - 0 -1 756 -7.0857969112694263e-03 - - 7.8206166625022888e-02 -1.5480500459671021e-01 - <_> - - 0 -1 757 -6.6877126693725586e-02 - - 7.9394780099391937e-02 -1.6149780154228210e-01 - <_> - - 0 -1 758 3.8874439895153046e-02 - - -6.1855491250753403e-02 2.0676539838314056e-01 - <_> - - 0 -1 759 2.8544560074806213e-02 - - 5.5605778470635414e-03 -3.8904601335525513e-01 - <_> - - 0 -1 760 -5.5549708195030689e-03 - - 1.6296879947185516e-01 -6.9366142153739929e-02 - <_> - - 0 -1 761 -8.0097168684005737e-03 - - 1.4130909740924835e-01 -4.7679040580987930e-02 - <_> - - 0 -1 762 -5.1694051362574100e-03 - - 2.1644559502601624e-01 -5.8431811630725861e-02 - <_> - - 0 -1 763 5.8240639045834541e-03 - - 3.4278281033039093e-02 -3.1473830342292786e-01 - <_> - - 0 -1 764 1.0263649892294779e-04 - - -1.5524019300937653e-01 9.1399282217025757e-02 - <_> - - 0 -1 765 -1.2985959649085999e-02 - - -3.6545321345329285e-01 1.2820590287446976e-02 - <_> - - 0 -1 766 8.9552644640207291e-03 - - 2.9396979138255119e-02 -4.4281241297721863e-01 - <_> - - 0 -1 767 1.8870230764150620e-02 - - 2.0487939938902855e-02 -5.3079450130462646e-01 - <_> - - 0 -1 768 -4.4253231026232243e-03 - - 1.6098490357398987e-01 -7.0962816476821899e-02 - <_> - - 0 -1 769 -8.5866253357380629e-05 - - 7.3070809245109558e-02 -7.1717053651809692e-02 - <_> - - 0 -1 770 1.0140320286154747e-02 - - 3.5248361527919769e-02 -3.2715541124343872e-01 - <_> - - 0 -1 771 2.2763259708881378e-01 - - -2.6924060657620430e-02 4.1793221235275269e-01 - <_> - - 0 -1 772 -8.8044107542373240e-05 - - 9.1143772006034851e-02 -1.2312269955873489e-01 - <_> - - 0 -1 773 -1.0645220056176186e-02 - - -4.3658348917961121e-01 2.3624230176210403e-02 - <_> - - 0 -1 774 4.6525610378012061e-04 - - -7.9812757670879364e-02 1.3412840664386749e-01 - <_> - - 0 -1 775 -3.3041620627045631e-03 - - -3.8255479931831360e-01 1.6996940597891808e-02 - <_> - - 0 -1 776 -1.0777499846881256e-04 - - 1.6754819452762604e-01 -1.2961159646511078e-01 - <_> - - 0 -1 777 3.1904759816825390e-03 - - 1.7584459856152534e-02 -3.3535620570182800e-01 - <_> - - 0 -1 778 9.7345822723582387e-05 - - -1.2326420098543167e-01 1.4727219939231873e-01 - <_> - - 0 -1 779 9.7421427199151367e-05 - - -6.0977838933467865e-02 7.9623550176620483e-02 - <_> - - 0 -1 780 -7.4847228825092316e-04 - - 1.0238070040941238e-01 -1.1906520277261734e-01 - <_> - - 0 -1 781 -1.5704490244388580e-02 - - 9.3455828726291656e-02 -6.0468971729278564e-02 - <_> - - 0 -1 782 -8.1626698374748230e-05 - - 1.1332800239324570e-01 -8.8222980499267578e-02 - <_> - - 0 -1 783 -6.9608110934495926e-03 - - 1.1039009690284729e-01 -4.0659449994564056e-02 - <_> - - 0 -1 784 -4.4434489682316780e-03 - - 1.2838089466094971e-01 -8.1361807882785797e-02 - <_> - - 0 -1 785 -1.6160740051418543e-03 - - -3.3738899230957031e-01 3.5158511251211166e-02 - <_> - - 0 -1 786 1.0108389687957242e-04 - - -1.2524829804897308e-01 7.9936161637306213e-02 - <_> - - 0 -1 787 9.9391723051667213e-04 - - -8.4492728114128113e-02 1.9661809504032135e-01 - <_> - - 0 -1 788 -8.4912832826375961e-03 - - -2.9578000307083130e-01 4.2739611119031906e-02 - <_> - - 0 -1 789 9.5672323368489742e-05 - - -6.4625412225723267e-02 6.3440762460231781e-02 - <_> - - 0 -1 790 1.1625020124483854e-04 - - -9.1274477541446686e-02 1.1936099827289581e-01 - <_> - - 0 -1 791 -1.7826290568336844e-03 - - 9.5706947147846222e-02 -8.4634251892566681e-02 - <_> - - 0 -1 792 -6.2756668776273727e-03 - - 1.3744869828224182e-01 -9.1167822480201721e-02 - <_> - - 0 -1 793 -8.2775605842471123e-03 - - -1.3923400640487671e-01 3.6440789699554443e-02 - <_> - - 0 -1 794 3.0183959752321243e-03 - - -4.6180319041013718e-02 2.2055029869079590e-01 - <_> - - 0 -1 795 1.7405690625309944e-02 - - 8.9857252314686775e-03 -4.9438339471817017e-01 - <_> - - 0 -1 796 -1.2369710020720959e-04 - - 6.2267590314149857e-02 -1.5967980027198792e-01 - <_> - - 0 -1 797 -5.8059301227331161e-03 - - 4.9442801624536514e-02 -4.6539600938558578e-02 - <_> - - 0 -1 798 -1.0530239902436733e-02 - - -1.9742619991302490e-01 6.9146141409873962e-02 - <_> - - 0 -1 799 -2.9337439686059952e-02 - - -6.4315217733383179e-01 4.9710599705576897e-03 - <_> - - 0 -1 800 -5.6665588170289993e-02 - - -7.8389710187911987e-01 1.0764749720692635e-02 - <_> - - 0 -1 801 -5.8364521712064743e-02 - - -7.5414752960205078e-01 2.7036149986088276e-03 - <_> - - 0 -1 802 -6.0695819556713104e-03 - - 1.5555210411548615e-01 -6.3514240086078644e-02 - <_> - - 0 -1 803 -4.9055949784815311e-03 - - 1.5411140024662018e-01 -6.0024090111255646e-02 - <_> - - 0 -1 804 -2.4349590763449669e-02 - - 1.1066699773073196e-01 -8.9354656636714935e-02 - <_> - - 0 -1 805 -2.0510459318757057e-02 - - -1.7066219449043274e-01 1.8875259906053543e-02 - <_> - - 0 -1 806 -4.0406160056591034e-02 - - -5.1201337575912476e-01 1.8266160041093826e-02 - <_> - - 0 -1 807 1.1639139614999294e-02 - - -2.6663990691304207e-02 1.5386949479579926e-01 - <_> - - 0 -1 808 8.9536290615797043e-03 - - 2.2930210456252098e-02 -4.0166389942169189e-01 - <_> - - 0 -1 809 2.2256279364228249e-02 - - -4.9168240278959274e-02 1.8879279494285583e-01 - <_> - - 0 -1 810 -2.3009749129414558e-02 - - 1.8750759959220886e-01 -6.2172628939151764e-02 - <_> - - 0 -1 811 -1.1061690002679825e-01 - - -2.1010109782218933e-01 7.2418609634041786e-03 - <_> - - 0 -1 812 -1.0646130144596100e-01 - - 3.7617880105972290e-01 -2.4961100891232491e-02 - <_> - - 0 -1 813 -3.5521229729056358e-03 - - 1.1204829812049866e-01 -3.1895328313112259e-02 - <_> - - 0 -1 814 -4.2262352071702480e-03 - - -3.7392550706863403e-01 2.4184040725231171e-02 - <_> - - 0 -1 815 6.2988628633320332e-03 - - 8.1449449062347412e-03 -1.8559670448303223e-01 - <_> - - 0 -1 816 2.7100159786641598e-03 - - -4.7996520996093750e-02 2.3121020197868347e-01 - <_> - - 0 -1 817 3.3773749601095915e-03 - - -9.4845660030841827e-02 5.0685029476881027e-02 - <_> - - 0 -1 818 -2.8979899361729622e-03 - - 1.2751890718936920e-01 -7.5084179639816284e-02 - <_> - - 0 -1 819 2.3524831049144268e-03 - - -4.1102841496467590e-02 5.9530649334192276e-02 - <_> - - 0 -1 820 7.7729858458042145e-03 - - 4.5494630932807922e-02 -2.1120029687881470e-01 - <_> - - 0 -1 821 -3.6903400905430317e-03 - - 1.1549659818410873e-01 -4.9121920019388199e-02 - <_> - - 0 -1 822 -9.3724876642227173e-03 - - -3.5917419195175171e-01 2.6274360716342926e-02 - <_> - - 0 -1 823 -1.7983719590120018e-04 - - 5.4064981639385223e-02 -5.1320828497409821e-02 - <_> - - 0 -1 824 -5.0172610208392143e-03 - - 1.3417109847068787e-01 -6.9252252578735352e-02 - <_> - - 0 -1 825 1.0011839913204312e-04 - - -4.9067988991737366e-02 6.4117558300495148e-02 - <_> - - 0 -1 826 8.1611080095171928e-03 - - 2.4682909250259399e-02 -3.8521420955657959e-01 - <_> - - 0 -1 827 -9.0656030806712806e-05 - - 9.8888702690601349e-02 -8.8233307003974915e-02 - <_> - - 0 -1 828 -4.5008701272308826e-03 - - 1.5800720453262329e-01 -5.7534229010343552e-02 - <_> - - 0 -1 829 1.9587080925703049e-02 - - -1.7980769276618958e-02 2.6230278611183167e-01 - <_> - - 0 -1 830 -2.9633310623466969e-03 - - 8.2995072007179260e-02 -1.2231569737195969e-01 - <_> - - 0 -1 831 1.0743290185928345e-02 - - 1.2482419610023499e-02 -3.4274709224700928e-01 - <_> - - 0 -1 832 -4.9855629913508892e-03 - - 1.3816909492015839e-01 -6.4010940492153168e-02 - <_> - - 0 -1 833 1.2566439807415009e-01 - - -1.7671900568529963e-03 1.0003019571304321e+00 - <_> - - 0 -1 834 2.3738740012049675e-02 - - 2.7755569666624069e-02 -3.6009928584098816e-01 - <_> - - 0 -1 835 -1.4753870200365782e-03 - - 1.5723270177841187e-01 -4.7080140560865402e-02 - <_> - - 0 -1 836 -1.2558279559016228e-04 - - 1.0315959900617599e-01 -8.4792517125606537e-02 - <_> - - 0 -1 837 1.2353599595371634e-04 - - -1.0267879813909531e-01 1.0298290103673935e-01 - <_> - - 0 -1 838 1.0993010364472866e-03 - - -7.2144910693168640e-02 1.6145619750022888e-01 - <_> - - 0 -1 839 -4.3352600932121277e-01 - - 2.6333650946617126e-01 -3.7169009447097778e-02 - <_> - - 0 -1 840 5.0879339687526226e-03 - - 3.4845910966396332e-02 -3.0750349164009094e-01 - <_> - - 0 -1 841 -1.3961529731750488e-01 - - 1.0710100084543228e-01 -4.6853039413690567e-02 - <_> - - 0 -1 842 9.6808090806007385e-02 - - 4.7895569354295731e-02 -2.0780010521411896e-01 - <_> - - 0 -1 843 -3.8298558443784714e-02 - - 3.2057020068168640e-01 -4.3165210634469986e-02 - <_> - - 0 -1 844 1.0037220083177090e-02 - - 3.0110519379377365e-02 -3.1479340791702271e-01 - <_> - - 0 -1 845 4.8312591388821602e-03 - - -5.7667169719934464e-02 1.4061050117015839e-01 - <_> - - 0 -1 846 -2.1472699940204620e-02 - - 1.5234650671482086e-01 -6.5562672913074493e-02 - <_> - 211 - -1.4944460391998291e+00 - - <_> - - 0 -1 847 -2.2243140637874603e-01 - - 2.2312499582767487e-01 -2.6396349072456360e-01 - <_> - - 0 -1 848 3.2376810908317566e-02 - - -5.1940750330686569e-02 1.0894130170345306e-01 - <_> - - 0 -1 849 -4.4717159122228622e-02 - - 2.0623689889907837e-01 -2.3611530661582947e-01 - <_> - - 0 -1 850 -3.2623540610074997e-02 - - 2.7237409353256226e-01 -6.6274151206016541e-02 - <_> - - 0 -1 851 -2.6925209909677505e-02 - - 3.1263470649719238e-01 -1.2983320653438568e-01 - <_> - - 0 -1 852 5.2859159186482430e-03 - - -1.9235099852085114e-01 1.6803570091724396e-01 - <_> - - 0 -1 853 2.2291530668735504e-01 - - -3.4413149952888489e-01 5.6544858962297440e-02 - <_> - - 0 -1 854 -1.7159320414066315e-02 - - 1.7324289679527283e-01 -5.5152550339698792e-02 - <_> - - 0 -1 855 -9.4694783911108971e-03 - - 1.8445380032062531e-01 -1.2914590537548065e-01 - <_> - - 0 -1 856 -1.2710930313915014e-03 - - 9.0124821290373802e-03 -2.7641639113426208e-02 - <_> - - 0 -1 857 8.4737753495573997e-03 - - 4.9679640680551529e-02 -4.6019071340560913e-01 - <_> - - 0 -1 858 4.5989021658897400e-02 - - -1.0000479966402054e-01 2.3884369432926178e-01 - <_> - - 0 -1 859 -1.0296510299667716e-04 - - 9.8898597061634064e-02 -1.9507980346679688e-01 - <_> - - 0 -1 860 -3.0870530754327774e-02 - - 3.7806090712547302e-01 -5.2301649004220963e-02 - <_> - - 0 -1 861 1.0105510242283344e-02 - - 4.1510879993438721e-02 -4.5916628837585449e-01 - <_> - - 0 -1 862 -3.2147150486707687e-03 - - -2.8180390596389771e-01 6.4971752464771271e-02 - <_> - - 0 -1 863 9.1434055939316750e-03 - - -6.3290692865848541e-02 3.1076049804687500e-01 - <_> - - 0 -1 864 1.3100530020892620e-02 - - 3.1325671821832657e-02 -4.4022560119628906e-01 - <_> - - 0 -1 865 -1.5001240186393261e-02 - - -3.3287960290908813e-01 4.4980511069297791e-02 - <_> - - 0 -1 866 1.3146589696407318e-01 - - 4.6440351754426956e-02 -3.9830890297889709e-01 - <_> - - 0 -1 867 -7.5358957983553410e-03 - - -3.9559870958328247e-01 3.6384049803018570e-02 - <_> - - 0 -1 868 1.1706859804689884e-02 - - 2.5723859667778015e-02 -3.8717350363731384e-01 - <_> - - 0 -1 869 1.1505650356411934e-02 - - -6.2695182859897614e-02 2.3504909873008728e-01 - <_> - - 0 -1 870 3.8508679717779160e-02 - - 1.3529039919376373e-02 -4.6797460317611694e-01 - <_> - - 0 -1 871 1.3592040166258812e-02 - - 4.7803930938243866e-02 -3.5141488909721375e-01 - <_> - - 0 -1 872 -1.9229929894208908e-02 - - 1.7745910584926605e-01 -5.9988129884004593e-02 - <_> - - 0 -1 873 -6.2505668029189110e-03 - - 2.0134179294109344e-01 -8.1581160426139832e-02 - <_> - - 0 -1 874 -1.8178259953856468e-02 - - 5.4905299097299576e-02 -4.3673731386661530e-02 - <_> - - 0 -1 875 -5.6842509657144547e-02 - - 1.4393079280853271e-01 -1.1943359673023224e-01 - <_> - - 0 -1 876 -2.4953780695796013e-02 - - 1.2545959651470184e-01 -6.5463587641716003e-02 - <_> - - 0 -1 877 -2.6323249563574791e-02 - - 2.2335560619831085e-01 -9.6750900149345398e-02 - <_> - - 0 -1 878 -2.7933349832892418e-02 - - 1.3253739476203918e-01 -1.2293589860200882e-01 - <_> - - 0 -1 879 -1.2998450256418437e-04 - - 7.1499042212963104e-02 -2.0235860347747803e-01 - <_> - - 0 -1 880 -9.2149457486812025e-05 - - 5.9155948460102081e-02 -1.4431430399417877e-01 - <_> - - 0 -1 881 -1.7388040199875832e-02 - - -3.3351859450340271e-01 3.9699219167232513e-02 - <_> - - 0 -1 882 -8.6862171883694828e-05 - - 5.7397030293941498e-02 -7.0616796612739563e-02 - <_> - - 0 -1 883 8.9044791820924729e-05 - - -1.0670109838247299e-01 1.4415599405765533e-01 - <_> - - 0 -1 884 9.6210632473230362e-03 - - 2.9006609693169594e-02 -4.2044961452484131e-01 - <_> - - 0 -1 885 -1.3927029795013368e-04 - - 7.7079556882381439e-02 -1.6374519467353821e-01 - <_> - - 0 -1 886 -3.0657060444355011e-02 - - -6.1427122354507446e-01 1.4103920198976994e-02 - <_> - - 0 -1 887 -4.7086398117244244e-03 - - 1.6230380535125732e-01 -8.8489651679992676e-02 - <_> - - 0 -1 888 1.0449769906699657e-02 - - 2.0908510312438011e-02 -5.7801717519760132e-01 - <_> - - 0 -1 889 -1.6580440104007721e-02 - - -3.2363709807395935e-01 3.6240901798009872e-02 - <_> - - 0 -1 890 -1.8138250336050987e-02 - - 1.0105939954519272e-01 -1.7580989748239517e-02 - <_> - - 0 -1 891 -7.6911728829145432e-03 - - 1.4427539706230164e-01 -9.5350138843059540e-02 - <_> - - 0 -1 892 -9.3184299767017365e-03 - - 8.8270977139472961e-02 -1.1901699751615524e-01 - <_> - - 0 -1 893 2.7095710858702660e-02 - - -6.6773496568202972e-02 2.2551900148391724e-01 - <_> - - 0 -1 894 2.5444820057600737e-03 - - 5.2423369139432907e-02 -1.5915879607200623e-01 - <_> - - 0 -1 895 -5.9284839779138565e-02 - - 2.7843329310417175e-01 -4.8978719860315323e-02 - <_> - - 0 -1 896 2.2457299754023552e-02 - - -6.6214859485626221e-02 1.9962659478187561e-01 - <_> - - 0 -1 897 3.1462030019611120e-03 - - -1.8244290351867676e-01 8.5549309849739075e-02 - <_> - - 0 -1 898 -7.0586092770099640e-02 - - -2.7667859196662903e-01 1.4894080348312855e-02 - <_> - - 0 -1 899 -8.0054822319652885e-05 - - 1.0879600048065186e-01 -1.0610870271921158e-01 - <_> - - 0 -1 900 -3.0580060556530952e-02 - - 1.0778079926967621e-01 -2.0585630089044571e-02 - <_> - - 0 -1 901 9.1068223118782043e-03 - - -4.5717220753431320e-02 3.2543709874153137e-01 - <_> - - 0 -1 902 5.0897640176117420e-03 - - 3.4051191061735153e-02 -3.5899510979652405e-01 - <_> - - 0 -1 903 -5.0143159925937653e-02 - - 3.1396710872650146e-01 -4.0979839861392975e-02 - <_> - - 0 -1 904 -1.0316399857401848e-02 - - -4.3923801183700562e-01 2.9322719201445580e-02 - <_> - - 0 -1 905 -5.7999929413199425e-03 - - 2.0461860299110413e-01 -5.8188889175653458e-02 - <_> - - 0 -1 906 3.5368890967220068e-03 - - 5.3520288318395615e-02 -2.1615199744701385e-01 - <_> - - 0 -1 907 -2.6618309784680605e-03 - - -3.8629740476608276e-01 3.1471978873014450e-02 - <_> - - 0 -1 908 3.1112500000745058e-03 - - -3.3582359552383423e-02 1.4472900331020355e-01 - <_> - - 0 -1 909 -6.1837960965931416e-03 - - -3.9847150444984436e-01 2.6712730526924133e-02 - <_> - - 0 -1 910 -9.6736097475513816e-05 - - 9.6591942012310028e-02 -7.6616533100605011e-02 - <_> - - 0 -1 911 9.8329477012157440e-02 - - 4.3741971254348755e-02 -2.5856900215148926e-01 - <_> - - 0 -1 912 2.0389869809150696e-02 - - -5.5230699479579926e-02 2.1881949901580811e-01 - <_> - - 0 -1 913 -7.8190360218286514e-03 - - -3.0988308787345886e-01 3.4586869180202484e-02 - <_> - - 0 -1 914 -5.9094849973917007e-02 - - 1.6294850409030914e-01 -6.3798002898693085e-02 - <_> - - 0 -1 915 -2.4365609884262085e-01 - - 1.7031520605087280e-01 -6.8715758621692657e-02 - <_> - - 0 -1 916 -3.0184438824653625e-01 - - -3.4642049670219421e-01 2.5085069239139557e-02 - <_> - - 0 -1 917 -1.2000049464404583e-03 - - 1.7887699604034424e-01 -6.0992758721113205e-02 - <_> - - 0 -1 918 -1.0535799711942673e-01 - - 5.4462939500808716e-02 -6.4320951700210571e-02 - <_> - - 0 -1 919 -2.4108510464429855e-02 - - -4.7865489125251770e-01 2.0613849163055420e-02 - <_> - - 0 -1 920 1.1989559978246689e-01 - - -1.3448059558868408e-02 4.8987388610839844e-01 - <_> - - 0 -1 921 -2.5708250701427460e-02 - - 1.3927629590034485e-01 -7.3621720075607300e-02 - <_> - - 0 -1 922 -4.3719869852066040e-01 - - -7.3239421844482422e-01 4.4073038734495640e-03 - <_> - - 0 -1 923 -7.9788602888584137e-02 - - 1.0349279642105103e-01 -1.0366749763488770e-01 - <_> - - 0 -1 924 -3.5169530659914017e-02 - - 5.8486729860305786e-02 -4.2844671756029129e-02 - <_> - - 0 -1 925 -1.7630029469728470e-02 - - 1.0138259828090668e-01 -1.0425739735364914e-01 - <_> - - 0 -1 926 -8.3025526255369186e-03 - - -4.4066068530082703e-01 2.1682849153876305e-02 - <_> - - 0 -1 927 -8.2851955667138100e-03 - - -4.8541179299354553e-01 2.0918089896440506e-02 - <_> - - 0 -1 928 7.9370345920324326e-03 - - 5.9423311613500118e-03 -4.1828221082687378e-01 - <_> - - 0 -1 929 -1.0507660044822842e-04 - - 7.6169930398464203e-02 -1.4411410689353943e-01 - <_> - - 0 -1 930 -2.1757930517196655e-02 - - 1.7152060568332672e-01 -2.9704490676522255e-02 - <_> - - 0 -1 931 1.2922010384500027e-02 - - 2.9204640537500381e-02 -3.2309919595718384e-01 - <_> - - 0 -1 932 1.6168419271707535e-02 - - -7.6147191226482391e-02 2.6088440418243408e-01 - <_> - - 0 -1 933 -1.5057939291000366e-01 - - 1.4852869510650635e-01 -7.0202209055423737e-02 - <_> - - 0 -1 934 -6.3427072763442993e-01 - - 3.4904581308364868e-01 -2.9892899096012115e-02 - <_> - - 0 -1 935 -1.1482870206236839e-02 - - 1.5068680047988892e-01 -6.9276407361030579e-02 - <_> - - 0 -1 936 -6.2928773462772369e-02 - - -5.9944522380828857e-01 6.5263039432466030e-03 - <_> - - 0 -1 937 -2.7896769344806671e-02 - - 3.1232240796089172e-01 -3.0732870101928711e-02 - <_> - - 0 -1 938 1.1286689899861813e-02 - - 1.4317009598016739e-02 -2.2894239425659180e-01 - <_> - - 0 -1 939 -3.8705959450453520e-03 - - 8.5102573037147522e-02 -1.1673109978437424e-01 - <_> - - 0 -1 940 -1.4275030232965946e-02 - - -2.0762340724468231e-01 1.8262609839439392e-02 - <_> - - 0 -1 941 -1.2816109694540501e-02 - - -2.8642359375953674e-01 3.5254720598459244e-02 - <_> - - 0 -1 942 4.9328650347888470e-03 - - -4.9868829548358917e-02 8.1233069300651550e-02 - <_> - - 0 -1 943 -8.6533632129430771e-03 - - 2.1703800559043884e-01 -4.6255528926849365e-02 - <_> - - 0 -1 944 1.3576580211520195e-02 - - -1.0879430174827576e-01 8.3670340478420258e-02 - <_> - - 0 -1 945 -4.2641188949346542e-02 - - -4.9992290139198303e-01 1.9083680585026741e-02 - <_> - - 0 -1 946 -3.7867110222578049e-02 - - -5.3069418668746948e-01 -2.1276540064718574e-04 - <_> - - 0 -1 947 -1.1035409756004810e-02 - - 2.2670739889144897e-01 -4.3859541416168213e-02 - <_> - - 0 -1 948 2.4298341013491154e-03 - - -3.4560989588499069e-02 1.5052950382232666e-01 - <_> - - 0 -1 949 1.3272870332002640e-02 - - 1.8622349947690964e-02 -4.7048270702362061e-01 - <_> - - 0 -1 950 -1.1064320278819650e-04 - - 9.6265792846679688e-02 -8.1750109791755676e-02 - <_> - - 0 -1 951 -2.3866009432822466e-03 - - 1.8094350397586823e-01 -4.9262270331382751e-02 - <_> - - 0 -1 952 -7.9415831714868546e-04 - - -1.6565640270709991e-01 2.4288009852170944e-02 - <_> - - 0 -1 953 -2.2455830127000809e-02 - - 1.9843299686908722e-01 -4.4509500265121460e-02 - <_> - - 0 -1 954 3.0328119173645973e-03 - - 2.7753420174121857e-02 -3.9394208788871765e-01 - <_> - - 0 -1 955 -9.1960644349455833e-03 - - -5.9172922372817993e-01 1.2525149621069431e-02 - <_> - - 0 -1 956 -3.9500650018453598e-02 - - -9.8541247844696045e-01 1.5248659765347838e-03 - <_> - - 0 -1 957 1.2567999772727489e-02 - - 2.0022910088300705e-02 -3.8397899270057678e-01 - <_> - - 0 -1 958 -9.2911832325626165e-05 - - 7.3141880333423615e-02 -6.7897647619247437e-02 - <_> - - 0 -1 959 3.2143931835889816e-02 - - -6.4257197082042694e-02 1.3723790645599365e-01 - <_> - - 0 -1 960 -1.8411510391160846e-03 - - -2.6820561289787292e-01 4.4881530106067657e-02 - <_> - - 0 -1 961 -5.5849379859864712e-03 - - 1.6651730239391327e-01 -5.5644121021032333e-02 - <_> - - 0 -1 962 1.2912580277770758e-03 - - 6.2142610549926758e-02 -2.7014490962028503e-01 - <_> - - 0 -1 963 1.0070719872601330e-04 - - -8.8493198156356812e-02 1.0002399981021881e-01 - <_> - - 0 -1 964 -4.2259409092366695e-03 - - -3.2037448883056641e-01 1.2218790128827095e-02 - <_> - - 0 -1 965 -1.4590879436582327e-04 - - 1.1364399641752243e-01 -9.4178639352321625e-02 - <_> - - 0 -1 966 5.3230789490044117e-03 - - 1.7175100743770599e-02 -2.2011129558086395e-01 - <_> - - 0 -1 967 -1.7821589484810829e-02 - - 1.4161479473114014e-01 -6.1871610581874847e-02 - <_> - - 0 -1 968 -3.5818900913000107e-02 - - 8.7859541177749634e-02 -3.8827799260616302e-02 - <_> - - 0 -1 969 4.9706641584634781e-03 - - -1.7065429687500000e-01 5.0853051245212555e-02 - <_> - - 0 -1 970 6.6589623689651489e-02 - - -2.3590439930558205e-02 3.6133819818496704e-01 - <_> - - 0 -1 971 -3.2721939682960510e-01 - - -3.5842499136924744e-01 2.5435820221900940e-02 - <_> - - 0 -1 972 -3.9326760917901993e-02 - - 4.7284521162509918e-02 -6.2605947256088257e-02 - <_> - - 0 -1 973 2.8017789125442505e-02 - - -3.3617768436670303e-02 2.7131238579750061e-01 - <_> - - 0 -1 974 -1.2500650249421597e-02 - - -4.7937780618667603e-01 7.0343599654734135e-03 - <_> - - 0 -1 975 5.7694758288562298e-03 - - 3.1953860074281693e-02 -2.6032549142837524e-01 - <_> - - 0 -1 976 -4.7707721590995789e-02 - - -4.9741709232330322e-01 1.3043950311839581e-02 - <_> - - 0 -1 977 3.5443119704723358e-02 - - -3.1736850738525391e-02 3.1976988911628723e-01 - <_> - - 0 -1 978 1.4040179550647736e-02 - - -3.3049471676349640e-02 7.0506528019905090e-02 - <_> - - 0 -1 979 2.3037919402122498e-01 - - 1.8883729353547096e-02 -4.3587929010391235e-01 - <_> - - 0 -1 980 -9.6582166850566864e-02 - - -7.1832108497619629e-01 9.9819665774703026e-04 - <_> - - 0 -1 981 -1.4366320334374905e-02 - - 1.4567980170249939e-01 -6.5572626888751984e-02 - <_> - - 0 -1 982 -7.1069528348743916e-03 - - 6.6373258829116821e-02 -2.0451290532946587e-02 - <_> - - 0 -1 983 8.4905643016099930e-03 - - -6.3891783356666565e-02 1.5739880502223969e-01 - <_> - - 0 -1 984 1.1191760003566742e-01 - - -2.8282059356570244e-02 2.9970058798789978e-01 - <_> - - 0 -1 985 1.2471539957914501e-04 - - -8.4956198930740356e-02 9.8341517150402069e-02 - <_> - - 0 -1 986 -1.3551780022680759e-02 - - -3.5027718544006348e-01 1.1073109693825245e-02 - <_> - - 0 -1 987 -1.2808430008590221e-02 - - -4.5078259706497192e-01 1.9789749756455421e-02 - <_> - - 0 -1 988 -3.9998371154069901e-02 - - -6.8415868282318115e-01 2.3409149143844843e-03 - <_> - - 0 -1 989 -1.4464680571109056e-03 - - 1.4939129352569580e-01 -5.2095100283622742e-02 - <_> - - 0 -1 990 -1.2429339811205864e-02 - - -1.5857979655265808e-01 8.9363977313041687e-03 - <_> - - 0 -1 991 -2.9783550649881363e-02 - - -6.9471049308776855e-01 1.1115159839391708e-02 - <_> - - 0 -1 992 -5.6329318322241306e-03 - - 1.4112220704555511e-01 -5.2758459001779556e-02 - <_> - - 0 -1 993 -6.5792538225650787e-03 - - -3.4625589847564697e-01 2.3270340636372566e-02 - <_> - - 0 -1 994 -9.0057790279388428e-02 - - 7.5973026454448700e-02 -2.9642039909958839e-02 - <_> - - 0 -1 995 -1.3072340190410614e-01 - - -3.2420840859413147e-01 2.7410000562667847e-02 - <_> - - 0 -1 996 9.8338117823004723e-03 - - -6.0853008180856705e-02 1.0065329819917679e-01 - <_> - - 0 -1 997 -1.2233830057084560e-02 - - 1.5252889692783356e-01 -5.2607860416173935e-02 - <_> - - 0 -1 998 -2.3421589285135269e-02 - - 1.0870900005102158e-01 -9.1985270380973816e-02 - <_> - - 0 -1 999 -8.4613403305411339e-03 - - 1.8257629871368408e-01 -4.7872170805931091e-02 - <_> - - 0 -1 1000 -5.2086021751165390e-03 - - -7.0401079952716827e-02 1.6041789203882217e-02 - <_> - - 0 -1 1001 -1.4447170309722424e-02 - - -4.1489130258560181e-01 1.9600320607423782e-02 - <_> - - 0 -1 1002 -1.7468390287831426e-03 - - -1.9475990533828735e-01 3.0956840142607689e-02 - <_> - - 0 -1 1003 -2.9236089903861284e-03 - - 1.6618309915065765e-01 -4.5732278376817703e-02 - <_> - - 0 -1 1004 -1.1378220515325665e-03 - - 1.3497720658779144e-01 -5.7737439870834351e-02 - <_> - - 0 -1 1005 -2.2203589323908091e-03 - - 9.6290342509746552e-02 -7.8362621366977692e-02 - <_> - - 0 -1 1006 7.3363608680665493e-04 - - -8.0939002335071564e-02 1.6864289343357086e-01 - <_> - - 0 -1 1007 -1.0410290269646794e-04 - - 9.7535729408264160e-02 -8.3381116390228271e-02 - <_> - - 0 -1 1008 -2.9475050978362560e-03 - - -2.1080949902534485e-01 2.0222319290041924e-02 - <_> - - 0 -1 1009 -8.3546721725724638e-05 - - 7.0981398224830627e-02 -1.0542409867048264e-01 - <_> - - 0 -1 1010 -3.2032128423452377e-02 - - 1.0082499682903290e-01 -3.6564670503139496e-02 - <_> - - 0 -1 1011 -2.7375599741935730e-01 - - -4.7556069493293762e-01 1.6102559864521027e-02 - <_> - - 0 -1 1012 1.1218780418857932e-03 - - 2.7350509539246559e-02 -9.6968427300453186e-02 - <_> - - 0 -1 1013 4.0910821408033371e-02 - - 2.0444039255380630e-02 -3.8385981321334839e-01 - <_> - - 0 -1 1014 1.0185709834331647e-04 - - -6.2665432691574097e-02 8.6711652576923370e-02 - <_> - - 0 -1 1015 8.8024331489577889e-05 - - -9.0517483651638031e-02 8.3377197384834290e-02 - <_> - - 0 -1 1016 -2.3895479738712311e-02 - - 1.2739649415016174e-01 -8.3965286612510681e-02 - <_> - - 0 -1 1017 2.2485909983515739e-02 - - -5.5055338889360428e-02 1.3913129270076752e-01 - <_> - - 0 -1 1018 4.1692931205034256e-02 - - -1.6963820904493332e-02 1.8453200161457062e-01 - <_> - - 0 -1 1019 -2.6616320013999939e-02 - - 1.5978839993476868e-01 -5.5901341140270233e-02 - <_> - - 0 -1 1020 -3.7673220038414001e-02 - - -5.6011748313903809e-01 7.0831510238349438e-03 - <_> - - 0 -1 1021 8.7794396677054465e-05 - - -8.2011356949806213e-02 9.4610482454299927e-02 - <_> - - 0 -1 1022 1.1703169438987970e-03 - - 3.3138789236545563e-02 -1.2254939973354340e-01 - <_> - - 0 -1 1023 -1.8461579456925392e-02 - - 1.1984329670667648e-01 -7.3555886745452881e-02 - <_> - - 0 -1 1024 -4.9685002304613590e-03 - - 1.5291570127010345e-01 -4.5049760490655899e-02 - <_> - - 0 -1 1025 9.4893397763371468e-03 - - 3.8226161152124405e-02 -2.0697419345378876e-01 - <_> - - 0 -1 1026 4.2636949568986893e-02 - - 4.7441869974136353e-03 -2.4128800630569458e-01 - <_> - - 0 -1 1027 1.2260899879038334e-02 - - -5.2345231175422668e-02 1.5391710400581360e-01 - <_> - - 0 -1 1028 -3.6220869515091181e-03 - - -3.1135520339012146e-01 2.7554929256439209e-02 - <_> - - 0 -1 1029 1.8543130136094987e-04 - - -1.3158130645751953e-01 5.8432999998331070e-02 - <_> - - 0 -1 1030 1.9817280117422342e-03 - - -1.5591939911246300e-02 7.9335182905197144e-02 - <_> - - 0 -1 1031 3.0786939896643162e-03 - - -3.9832580834627151e-02 2.0168849825859070e-01 - <_> - - 0 -1 1032 -4.9620792269706726e-03 - - 4.3630041182041168e-02 -1.6167530789971352e-02 - <_> - - 0 -1 1033 1.0100869985762984e-04 - - -1.0894899815320969e-01 6.6285558044910431e-02 - <_> - - 0 -1 1034 4.5535610988736153e-03 - - -2.5678759440779686e-02 2.5574589148163795e-02 - <_> - - 0 -1 1035 1.8472580239176750e-02 - - 4.5276731252670288e-02 -1.8895520269870758e-01 - <_> - - 0 -1 1036 -1.2821660493500531e-04 - - 6.5693907439708710e-02 -6.1557758599519730e-02 - <_> - - 0 -1 1037 -9.1399750090204179e-05 - - 9.4862386584281921e-02 -7.9766832292079926e-02 - <_> - - 0 -1 1038 1.9103009253740311e-02 - - -1.5823919326066971e-02 2.0067700743675232e-01 - <_> - - 0 -1 1039 3.2626159489154816e-02 - - 1.1280800215899944e-02 -6.2056678533554077e-01 - <_> - - 0 -1 1040 -3.7017529830336571e-03 - - 6.2841519713401794e-02 -2.3586150258779526e-02 - <_> - - 0 -1 1041 -1.7747739329934120e-02 - - -5.6140452623367310e-01 1.2981880456209183e-02 - <_> - - 0 -1 1042 5.9074100106954575e-02 - - -3.3294579479843378e-03 8.4481179714202881e-01 - <_> - - 0 -1 1043 -5.4828140884637833e-02 - - 5.5514711141586304e-01 -1.1694990098476410e-02 - <_> - - 0 -1 1044 1.0296080290572718e-04 - - -4.5484889298677444e-02 5.8925010263919830e-02 - <_> - - 0 -1 1045 -9.7072806966025382e-05 - - 9.6935607492923737e-02 -8.0250047147274017e-02 - <_> - - 0 -1 1046 5.8545041829347610e-03 - - 1.4835690148174763e-02 -3.5753148794174194e-01 - <_> - - 0 -1 1047 1.6329690115526319e-03 - - -4.4237900525331497e-02 1.6755719482898712e-01 - <_> - - 0 -1 1048 1.5812419354915619e-02 - - 7.1729267947375774e-03 -7.8497059643268585e-02 - <_> - - 0 -1 1049 -4.3562431819736958e-03 - - 2.5313070416450500e-01 -2.8974350541830063e-02 - <_> - - 0 -1 1050 3.5560280084609985e-02 - - 1.7037480138242245e-03 -4.0621849894523621e-01 - <_> - - 0 -1 1051 1.0531170293688774e-02 - - 2.9233150184154510e-02 -2.6782780885696411e-01 - <_> - - 0 -1 1052 3.1187709420919418e-02 - - 4.4837938621640205e-03 -1.9009509682655334e-01 - <_> - - 0 -1 1053 -2.3982839658856392e-02 - - -4.6067911386489868e-01 1.5553499571979046e-02 - <_> - - 0 -1 1054 4.7000840306282043e-02 - - -1.8269939348101616e-02 8.1415437161922455e-02 - <_> - - 0 -1 1055 2.6086059212684631e-01 - - -1.1339389719069004e-02 5.6355899572372437e-01 - <_> - - 0 -1 1056 -8.8318936526775360e-02 - - -7.1698242425918579e-01 5.8255391195416451e-03 - <_> - - 0 -1 1057 -3.1121359206736088e-03 - - 5.7725358754396439e-02 -1.2493800371885300e-01 - <_> - 209 - -1.5047789812088013e+00 - - <_> - - 0 -1 1058 2.8087180107831955e-02 - - -1.5413700044155121e-01 4.5727699995040894e-01 - <_> - - 0 -1 1059 -5.5903568863868713e-02 - - 3.6255109310150146e-01 -1.4866210520267487e-01 - <_> - - 0 -1 1060 -5.3916401229798794e-03 - - 1.1215359717607498e-01 -3.0657169222831726e-01 - <_> - - 0 -1 1061 -5.7490311563014984e-02 - - -3.7761840224266052e-01 6.6982932388782501e-02 - <_> - - 0 -1 1062 3.3081531524658203e-02 - - 8.9242622256278992e-02 -4.1101458668708801e-01 - <_> - - 0 -1 1063 -3.3971451222896576e-02 - - 1.7306150496006012e-01 -1.7985619604587555e-01 - <_> - - 0 -1 1064 6.0396149754524231e-02 - - -5.2139468491077423e-02 4.2019769549369812e-01 - <_> - - 0 -1 1065 -1.5026940032839775e-02 - - 3.3774340152740479e-01 -9.3563601374626160e-02 - <_> - - 0 -1 1066 1.1687699705362320e-02 - - 8.5324212908744812e-02 -3.3287081122398376e-01 - <_> - - 0 -1 1067 -4.4202590361237526e-03 - - 3.0262300372123718e-01 -7.3225647211074829e-02 - <_> - - 0 -1 1068 9.8442351445555687e-03 - - 6.7588306963443756e-02 -3.6280980706214905e-01 - <_> - - 0 -1 1069 6.5739490091800690e-03 - - -6.6520340740680695e-02 3.6753880977630615e-01 - <_> - - 0 -1 1070 -1.2470779940485954e-02 - - 1.3371619582176208e-01 -1.3606360554695129e-01 - <_> - - 0 -1 1071 -8.7947519205044955e-05 - - 7.0185787975788116e-02 -7.1383133530616760e-02 - <_> - - 0 -1 1072 -4.1784630157053471e-03 - - 3.3897310495376587e-01 -6.0283429920673370e-02 - <_> - - 0 -1 1073 -1.0158100165426731e-02 - - -4.3232920765876770e-01 2.9709020629525185e-02 - <_> - - 0 -1 1074 -2.5939870625734329e-02 - - 2.9187950491905212e-01 -5.8434039354324341e-02 - <_> - - 0 -1 1075 1.6638180240988731e-02 - - -7.7353350818157196e-02 2.3780930042266846e-01 - <_> - - 0 -1 1076 1.4849379658699036e-03 - - 8.9698158204555511e-02 -2.0726980268955231e-01 - <_> - - 0 -1 1077 2.4323889985680580e-02 - - 4.6134989708662033e-02 -2.3631970584392548e-01 - <_> - - 0 -1 1078 7.4536320753395557e-03 - - 5.6870579719543457e-02 -2.9884359240531921e-01 - <_> - - 0 -1 1079 2.7136409655213356e-02 - - 3.3143240958452225e-02 -2.6137140393257141e-01 - <_> - - 0 -1 1080 -3.9215758442878723e-02 - - -4.2938810586929321e-01 3.9842639118432999e-02 - <_> - - 0 -1 1081 2.6724360883235931e-02 - - -1.0130269825458527e-01 1.5306079387664795e-01 - <_> - - 0 -1 1082 -7.7838180586695671e-03 - - -5.0431340932846069e-01 3.2204821705818176e-02 - <_> - - 0 -1 1083 3.1347721815109253e-02 - - -5.2811268717050552e-02 3.2771229743957520e-01 - <_> - - 0 -1 1084 5.1572020165622234e-03 - - 3.9264280349016190e-02 -4.0240189433097839e-01 - <_> - - 0 -1 1085 1.9256999716162682e-02 - - 3.3628650009632111e-02 -3.6241069436073303e-01 - <_> - - 0 -1 1086 1.7587229609489441e-02 - - -5.1554750651121140e-02 2.7599188685417175e-01 - <_> - - 0 -1 1087 -9.7410473972558975e-03 - - 2.3560559749603271e-01 -6.0343839228153229e-02 - <_> - - 0 -1 1088 -1.1508379975566640e-04 - - 6.9393739104270935e-02 -2.0505240559577942e-01 - <_> - - 0 -1 1089 -1.3304370641708374e-01 - - -3.9202588796615601e-01 3.1970690935850143e-02 - <_> - - 0 -1 1090 -4.7447659075260162e-02 - - -3.5722380876541138e-01 3.7217479199171066e-02 - <_> - - 0 -1 1091 -4.1948170401155949e-03 - - 1.3637860119342804e-01 -6.9371573626995087e-02 - <_> - - 0 -1 1092 -3.9906660094857216e-03 - - 1.4928449690341949e-01 -8.0571353435516357e-02 - <_> - - 0 -1 1093 -8.4894258179701865e-05 - - 8.8759668171405792e-02 -7.9379200935363770e-02 - <_> - - 0 -1 1094 -4.1100149246631190e-05 - - 1.2289889901876450e-01 -1.0322090238332748e-01 - <_> - - 0 -1 1095 1.4727080240845680e-02 - - 1.9744509831070900e-02 -3.6746519804000854e-01 - <_> - - 0 -1 1096 -8.5327234119176865e-03 - - -3.6299398541450500e-01 3.1131930649280548e-02 - <_> - - 0 -1 1097 -1.6553919762372971e-02 - - 1.0105790197849274e-01 -1.5329389274120331e-01 - <_> - - 0 -1 1098 -1.2337979860603809e-02 - - -4.6292439103126526e-01 2.2736590355634689e-02 - <_> - - 0 -1 1099 -3.6450990010052919e-03 - - 4.2629018425941467e-02 -1.3781179487705231e-01 - <_> - - 0 -1 1100 1.2839140370488167e-02 - - -4.1048280894756317e-02 4.3761840462684631e-01 - <_> - - 0 -1 1101 -9.3080453574657440e-02 - - 2.2917859256267548e-01 -5.0032921135425568e-02 - <_> - - 0 -1 1102 2.1762320771813393e-02 - - -5.0271000713109970e-02 2.2881449759006500e-01 - <_> - - 0 -1 1103 1.7361560836434364e-02 - - 2.5310549885034561e-02 -2.6760739088058472e-01 - <_> - - 0 -1 1104 -1.3084709644317627e-02 - - -2.9774340987205505e-01 4.3805930763483047e-02 - <_> - - 0 -1 1105 -8.4787927335128188e-05 - - 7.4056796729564667e-02 -1.1382059752941132e-01 - <_> - - 0 -1 1106 -5.2169840782880783e-03 - - 1.2962180376052856e-01 -8.9122071862220764e-02 - <_> - - 0 -1 1107 5.5256679654121399e-02 - - -1.6715130209922791e-01 4.9011368304491043e-02 - <_> - - 0 -1 1108 -1.0899559594690800e-02 - - 1.7473630607128143e-01 -6.5568633377552032e-02 - <_> - - 0 -1 1109 1.4722730033099651e-02 - - 2.1222619339823723e-02 -3.6853900551795959e-01 - <_> - - 0 -1 1110 3.0714910477399826e-02 - - -4.7032870352268219e-02 2.2777770459651947e-01 - <_> - - 0 -1 1111 -6.8415720015764236e-03 - - -2.5939539074897766e-01 2.4496970698237419e-02 - <_> - - 0 -1 1112 1.7822159454226494e-02 - - -7.9186916351318359e-02 1.4894349873065948e-01 - <_> - - 0 -1 1113 2.8468179516494274e-03 - - -3.7116099148988724e-02 1.6393619775772095e-01 - <_> - - 0 -1 1114 -1.3656679540872574e-02 - - -3.9892640709877014e-01 2.6514330878853798e-02 - <_> - - 0 -1 1115 -1.2483780086040497e-01 - - -3.8755100965499878e-01 8.9756725355982780e-03 - <_> - - 0 -1 1116 -4.3433021346572787e-05 - - 1.1973830312490463e-01 -8.5467711091041565e-02 - <_> - - 0 -1 1117 -2.1456810645759106e-03 - - 2.0692780613899231e-01 -5.0187058746814728e-02 - <_> - - 0 -1 1118 -9.6643620054237545e-05 - - 1.0034500062465668e-01 -1.1663100123405457e-01 - <_> - - 0 -1 1119 -4.7470871359109879e-03 - - -4.4494819641113281e-01 1.9583249464631081e-02 - <_> - - 0 -1 1120 -2.2244181018322706e-03 - - 1.9856449961662292e-01 -5.5820390582084656e-02 - <_> - - 0 -1 1121 3.7989660631865263e-03 - - 3.6714699119329453e-02 -2.9941511154174805e-01 - <_> - - 0 -1 1122 -5.7312021963298321e-03 - - -5.2832037210464478e-01 1.8550330772995949e-02 - <_> - - 0 -1 1123 -2.5910209864377975e-02 - - 2.8764611482620239e-01 -3.8489770144224167e-02 - <_> - - 0 -1 1124 -9.6947006881237030e-02 - - -5.9902548789978027e-01 1.8979549407958984e-02 - <_> - - 0 -1 1125 -5.4922740906476974e-02 - - 7.1482129395008087e-02 -1.0858479887247086e-01 - <_> - - 0 -1 1126 -2.7080800384283066e-02 - - 1.8649069964885712e-01 -5.9568218886852264e-02 - <_> - - 0 -1 1127 5.0297360867261887e-03 - - 3.3363129943609238e-02 -3.0831581354141235e-01 - <_> - - 0 -1 1128 3.3542269375175238e-03 - - -5.4571229964494705e-02 2.2534120082855225e-01 - <_> - - 0 -1 1129 1.2667280388996005e-03 - - -1.7840330302715302e-01 3.4346438944339752e-02 - <_> - - 0 -1 1130 1.1339919641613960e-02 - - 2.6406589895486832e-02 -3.8119348883628845e-01 - <_> - - 0 -1 1131 9.1608919319696724e-05 - - -1.0066139698028564e-01 8.7170496582984924e-02 - <_> - - 0 -1 1132 7.8464552643708885e-05 - - -1.0216680169105530e-01 1.0109920054674149e-01 - <_> - - 0 -1 1133 7.5286210631020367e-05 - - -5.6061439216136932e-02 5.8424450457096100e-02 - <_> - - 0 -1 1134 -2.6337830349802971e-03 - - 1.7215870320796967e-01 -5.7880070060491562e-02 - <_> - - 0 -1 1135 6.3031561672687531e-02 - - -1.9201409071683884e-02 2.7799960970878601e-01 - <_> - - 0 -1 1136 -2.3219529539346695e-02 - - 1.0284779965877533e-01 -9.8239988088607788e-02 - <_> - - 0 -1 1137 -9.0258438140153885e-03 - - 2.2167690098285675e-02 -8.2948818802833557e-02 - <_> - - 0 -1 1138 3.8732189685106277e-02 - - -2.8826160356402397e-02 3.4773069620132446e-01 - <_> - - 0 -1 1139 -4.7702491283416748e-02 - - -6.7103427648544312e-01 1.6573669388890266e-02 - <_> - - 0 -1 1140 -1.2847820296883583e-02 - - -3.8643950223922729e-01 2.0033469423651695e-02 - <_> - - 0 -1 1141 5.7381160557270050e-02 - - -1.1463870294392109e-02 2.6734361052513123e-01 - <_> - - 0 -1 1142 -1.0621190071105957e-02 - - -3.1218948960304260e-01 2.8248360380530357e-02 - <_> - - 0 -1 1143 -1.3676609843969345e-02 - - -1.2689730525016785e-01 8.6436048150062561e-03 - <_> - - 0 -1 1144 4.3348008766770363e-03 - - 5.1033958792686462e-02 -1.7394079267978668e-01 - <_> - - 0 -1 1145 7.5991630554199219e-02 - - -2.3328589275479317e-02 4.2845860123634338e-01 - <_> - - 0 -1 1146 1.3098600320518017e-02 - - -2.4747660383582115e-02 3.3785021305084229e-01 - <_> - - 0 -1 1147 -3.5736020654439926e-02 - - 3.7913449108600616e-02 -5.3559090942144394e-02 - <_> - - 0 -1 1148 1.0628229938447475e-04 - - -8.4522321820259094e-02 1.0640759766101837e-01 - <_> - - 0 -1 1149 2.1813490893691778e-03 - - 4.0383778512477875e-02 -1.9148570299148560e-01 - <_> - - 0 -1 1150 -9.4492107629776001e-02 - - 2.0704220235347748e-01 -4.4048219919204712e-02 - <_> - - 0 -1 1151 -1.3529360294342041e-01 - - -2.6852059364318848e-01 5.2231121808290482e-03 - <_> - - 0 -1 1152 -1.2129560112953186e-01 - - 9.0266220271587372e-02 -9.2542663216590881e-02 - <_> - - 0 -1 1153 -2.3765969090163708e-03 - - 8.2525849342346191e-02 -3.1835190951824188e-02 - <_> - - 0 -1 1154 1.2632180005311966e-02 - - -4.9935780465602875e-02 1.8270030617713928e-01 - <_> - - 0 -1 1155 3.7632249295711517e-03 - - 1.4996149577200413e-02 -1.3626490533351898e-01 - <_> - - 0 -1 1156 -4.1556770156603307e-05 - - 7.4878826737403870e-02 -1.1227519810199738e-01 - <_> - - 0 -1 1157 -6.9654630497097969e-03 - - 1.6071209311485291e-01 -5.4801609367132187e-02 - <_> - - 0 -1 1158 -4.2004981078207493e-03 - - -2.9972600936889648e-01 2.8893660753965378e-02 - <_> - - 0 -1 1159 -1.9440690521150827e-03 - - 1.2529659271240234e-01 -3.5508431494235992e-02 - <_> - - 0 -1 1160 -8.9434572146274149e-05 - - 9.8911896347999573e-02 -8.5844233632087708e-02 - <_> - - 0 -1 1161 9.9513839813880622e-05 - - -4.1452258825302124e-02 5.4522711783647537e-02 - <_> - - 0 -1 1162 -8.9198641944676638e-05 - - 7.3228873312473297e-02 -1.2978109717369080e-01 - <_> - - 0 -1 1163 5.7081338018178940e-03 - - -7.0425257086753845e-02 1.4262980222702026e-01 - <_> - - 0 -1 1164 -9.4857633113861084e-02 - - 2.3310409486293793e-01 -3.7148199975490570e-02 - <_> - - 0 -1 1165 2.8471320867538452e-02 - - -4.8538058996200562e-02 3.5143539309501648e-01 - <_> - - 0 -1 1166 4.1401110589504242e-02 - - -1.8223199993371964e-02 3.9729571342468262e-01 - <_> - - 0 -1 1167 -2.8941810131072998e-02 - - -2.2416530549526215e-01 1.4477049931883812e-02 - <_> - - 0 -1 1168 4.3586310930550098e-03 - - 4.5635841786861420e-02 -1.8632480502128601e-01 - <_> - - 0 -1 1169 -7.3322281241416931e-02 - - -1.9238489866256714e-01 1.2455330230295658e-02 - <_> - - 0 -1 1170 1.9518200308084488e-02 - - -2.0500229671597481e-02 4.1983589529991150e-01 - <_> - - 0 -1 1171 3.9780829101800919e-03 - - -4.5975688844919205e-02 1.0321869701147079e-01 - <_> - - 0 -1 1172 -9.7237170848529786e-05 - - 1.0506830364465714e-01 -8.7533041834831238e-02 - <_> - - 0 -1 1173 8.7185493612196296e-05 - - -6.2952272593975067e-02 7.8699469566345215e-02 - <_> - - 0 -1 1174 2.6201619766652584e-03 - - 2.9076900333166122e-02 -3.1879830360412598e-01 - <_> - - 0 -1 1175 6.8807557225227356e-02 - - -6.5168988658115268e-04 -7.2238290309906006e-01 - <_> - - 0 -1 1176 -6.4465478062629700e-02 - - 4.3315869569778442e-01 -2.1786129102110863e-02 - <_> - - 0 -1 1177 8.7852329015731812e-03 - - -5.7266969233751297e-02 7.7373459935188293e-02 - <_> - - 0 -1 1178 -1.5497979708015919e-02 - - 1.7337580025196075e-01 -5.8008719235658646e-02 - <_> - - 0 -1 1179 -2.2943260148167610e-02 - - 6.9100983440876007e-02 -4.1808031499385834e-02 - <_> - - 0 -1 1180 -8.2105891779065132e-03 - - -2.7963161468505859e-01 2.9525220394134521e-02 - <_> - - 0 -1 1181 -3.3475670963525772e-02 - - 1.1038400232791901e-01 -3.3238198608160019e-02 - <_> - - 0 -1 1182 8.7814498692750931e-03 - - -8.9171886444091797e-02 8.7001636624336243e-02 - <_> - - 0 -1 1183 3.4709158539772034e-01 - - -4.8120681196451187e-02 1.8035539984703064e-01 - <_> - - 0 -1 1184 -1.0401030158391222e-04 - - 9.4648033380508423e-02 -8.3219513297080994e-02 - <_> - - 0 -1 1185 -2.7705188840627670e-03 - - 1.5773800015449524e-01 -2.5001129135489464e-02 - <_> - - 0 -1 1186 -8.6398613348137587e-05 - - 7.1280792355537415e-02 -1.4600040018558502e-01 - <_> - - 0 -1 1187 -2.6759049296379089e-01 - - 1.2558859586715698e-01 -3.8995288312435150e-02 - <_> - - 0 -1 1188 -2.4231130257248878e-02 - - 8.8422782719135284e-02 -9.3978613615036011e-02 - <_> - - 0 -1 1189 1.0885329917073250e-02 - - -4.1272029280662537e-02 2.5976330041885376e-01 - <_> - - 0 -1 1190 2.1032560616731644e-02 - - -4.3483361601829529e-02 1.8442779779434204e-01 - <_> - - 0 -1 1191 -4.2315269820392132e-03 - - 1.2188120186328888e-01 -7.7749006450176239e-02 - <_> - - 0 -1 1192 -1.5873130410909653e-02 - - 1.0431399941444397e-01 -8.4082178771495819e-02 - <_> - - 0 -1 1193 -1.9862418994307518e-03 - - 3.7543788552284241e-02 -4.8584461212158203e-02 - <_> - - 0 -1 1194 7.8583601862192154e-05 - - -8.0581262707710266e-02 1.0911089926958084e-01 - <_> - - 0 -1 1195 2.9601699206978083e-03 - - 2.4551110342144966e-02 -3.3558800816535950e-01 - <_> - - 0 -1 1196 -9.5016136765480042e-02 - - -5.9915632009506226e-01 1.1551329866051674e-02 - <_> - - 0 -1 1197 1.1362539953552186e-04 - - -8.6923167109489441e-02 9.3489281833171844e-02 - <_> - - 0 -1 1198 -9.8137762397527695e-03 - - 7.6431483030319214e-02 -1.0938859730958939e-01 - <_> - - 0 -1 1199 9.8380893177818507e-05 - - -6.6263832151889801e-02 8.1618256866931915e-02 - <_> - - 0 -1 1200 2.2226599976420403e-03 - - 3.1717978417873383e-02 -2.4636030197143555e-01 - <_> - - 0 -1 1201 2.3853180464357138e-03 - - -2.7855399996042252e-02 1.2080640345811844e-01 - <_> - - 0 -1 1202 -3.9457518607378006e-02 - - -3.5027569532394409e-01 2.1213570609688759e-02 - <_> - - 0 -1 1203 -7.9605240898672491e-05 - - 8.8247403502464294e-02 -5.9798751026391983e-02 - <_> - - 0 -1 1204 -2.2772089578211308e-03 - - 1.8961960077285767e-01 -3.7514250725507736e-02 - <_> - - 0 -1 1205 2.0586390048265457e-02 - - 2.7481140568852425e-02 -8.0342061817646027e-02 - <_> - - 0 -1 1206 -7.4273057281970978e-02 - - -3.3686059713363647e-01 2.1948199719190598e-02 - <_> - - 0 -1 1207 1.8075270578265190e-02 - - -2.1912610158324242e-02 2.0319029688835144e-01 - <_> - - 0 -1 1208 -1.4953720383346081e-02 - - -2.6559591293334961e-01 2.6371410116553307e-02 - <_> - - 0 -1 1209 -4.8192208632826805e-03 - - 1.6707129776477814e-01 -1.4215789735317230e-02 - <_> - - 0 -1 1210 3.6314369936008006e-05 - - -7.7198803424835205e-02 1.0186760127544403e-01 - <_> - - 0 -1 1211 -8.3623798564076424e-03 - - -1.6067409515380859e-01 1.5523280017077923e-02 - <_> - - 0 -1 1212 2.3804600350558758e-03 - - 5.8899540454149246e-02 -1.3108530640602112e-01 - <_> - - 0 -1 1213 1.6680910484865308e-03 - - 3.0969940125942230e-02 -2.2598870098590851e-01 - <_> - - 0 -1 1214 1.5265520196408033e-03 - - -4.9240689724683762e-02 2.0791269838809967e-01 - <_> - - 0 -1 1215 1.4575149863958359e-02 - - -3.6837290972471237e-02 1.0154440253973007e-01 - <_> - - 0 -1 1216 -7.6943649910390377e-03 - - 1.5710060298442841e-01 -5.7826489210128784e-02 - <_> - - 0 -1 1217 -9.0497516794130206e-05 - - 4.7573201358318329e-02 -1.6521500051021576e-01 - <_> - - 0 -1 1218 -2.2794010117650032e-02 - - -2.5973218679428101e-01 2.6559799909591675e-02 - <_> - - 0 -1 1219 -9.0023465454578400e-03 - - 4.1206229478120804e-02 -2.2416520863771439e-02 - <_> - - 0 -1 1220 6.7992340773344040e-03 - - -3.9371181279420853e-02 1.7100240290164948e-01 - <_> - - 0 -1 1221 -4.3460330925881863e-03 - - 6.0964401811361313e-02 -2.0817179232835770e-02 - <_> - - 0 -1 1222 -3.7276789080351591e-03 - - 1.2307090312242508e-01 -5.8938860893249512e-02 - <_> - - 0 -1 1223 -8.4070830780547112e-05 - - 1.3861919939517975e-01 -8.2764759659767151e-02 - <_> - - 0 -1 1224 1.1763629736378789e-03 - - 5.0358530133962631e-02 -1.5933729708194733e-01 - <_> - - 0 -1 1225 5.5893128737807274e-03 - - 7.0979949086904526e-03 -5.8028382062911987e-01 - <_> - - 0 -1 1226 -1.0127289715455845e-04 - - 8.3265759050846100e-02 -8.2378573715686798e-02 - <_> - - 0 -1 1227 -2.4464890360832214e-02 - - -8.7221837043762207e-01 1.3292940566316247e-03 - <_> - - 0 -1 1228 -4.4401640479918569e-05 - - 5.6002810597419739e-02 -1.5147769451141357e-01 - <_> - - 0 -1 1229 5.7037789374589920e-02 - - 5.0832000561058521e-03 -1.1047369986772537e-01 - <_> - - 0 -1 1230 2.0243139937520027e-02 - - -4.9084380269050598e-02 1.5443739295005798e-01 - <_> - - 0 -1 1231 9.7376257181167603e-03 - - -1.9700789824128151e-02 5.2151169627904892e-02 - <_> - - 0 -1 1232 -1.5008449554443359e-02 - - 1.4697140455245972e-01 -5.0271861255168915e-02 - <_> - - 0 -1 1233 -2.1046690642833710e-02 - - -3.6531120538711548e-01 1.7672160640358925e-02 - <_> - - 0 -1 1234 9.5258541405200958e-03 - - 1.5648230910301208e-02 -4.0153148770332336e-01 - <_> - - 0 -1 1235 -2.2794330492615700e-02 - - 2.9926788806915283e-01 -2.3447409272193909e-02 - <_> - - 0 -1 1236 -7.8630357980728149e-02 - - -6.5496569871902466e-01 1.0836719535291195e-02 - <_> - - 0 -1 1237 9.5926318317651749e-03 - - 1.5389059670269489e-02 -3.6421850323677063e-01 - <_> - - 0 -1 1238 -2.7699070051312447e-03 - - 1.9490230083465576e-01 -3.2363388687372208e-02 - <_> - - 0 -1 1239 -1.1783170339185745e-04 - - 6.4062900841236115e-02 -4.3425600975751877e-02 - <_> - - 0 -1 1240 -2.1889989729970694e-03 - - -2.6822608709335327e-01 2.5960480794310570e-02 - <_> - - 0 -1 1241 -5.6854140013456345e-02 - - -6.9606697559356689e-01 5.1044360734522343e-03 - <_> - - 0 -1 1242 2.1522639691829681e-01 - - -1.1709770187735558e-02 5.6467902660369873e-01 - <_> - - 0 -1 1243 -2.0456990227103233e-02 - - 3.6347669363021851e-01 -3.6606830544769764e-03 - <_> - - 0 -1 1244 7.7381962910294533e-05 - - -1.1122140288352966e-01 5.8982748538255692e-02 - <_> - - 0 -1 1245 4.1361998766660690e-02 - - -5.1151089370250702e-02 3.9524771273136139e-02 - <_> - - 0 -1 1246 -9.8949691164307296e-05 - - 1.0554169863462448e-01 -7.2439141571521759e-02 - <_> - - 0 -1 1247 1.8021840602159500e-02 - - 1.4994920231401920e-02 -1.4176709949970245e-01 - <_> - - 0 -1 1248 8.2080148160457611e-02 - - 2.3314690217375755e-02 -2.8175860643386841e-01 - <_> - - 0 -1 1249 -1.0621119872666895e-04 - - 6.2869526445865631e-02 -6.1158828437328339e-02 - <_> - - 0 -1 1250 -7.9379147791769356e-05 - - 8.7550431489944458e-02 -8.2194067537784576e-02 - <_> - - 0 -1 1251 5.5925888009369373e-03 - - 3.7611849606037140e-02 -1.9585789740085602e-01 - <_> - - 0 -1 1252 2.2940209601074457e-03 - - -4.4044021517038345e-02 1.6968269646167755e-01 - <_> - - 0 -1 1253 -4.0604019165039062e-01 - - 1.7274110019207001e-01 -1.6850609332323074e-02 - <_> - - 0 -1 1254 4.1022609919309616e-02 - - -4.5638781040906906e-02 1.5800049901008606e-01 - <_> - - 0 -1 1255 -1.4138690195977688e-02 - - 6.5703168511390686e-02 -5.7085040956735611e-02 - <_> - - 0 -1 1256 6.9438129663467407e-02 - - 2.2782269865274429e-02 -3.2717821002006531e-01 - <_> - - 0 -1 1257 4.5383367687463760e-03 - - -1.6410829499363899e-02 1.9021320343017578e-01 - <_> - - 0 -1 1258 -7.3475250974297523e-03 - - 1.5832969546318054e-01 -4.1667878627777100e-02 - <_> - - 0 -1 1259 -2.8285540174692869e-03 - - 6.7029163241386414e-02 -4.5508660376071930e-02 - <_> - - 0 -1 1260 9.2704901471734047e-03 - - -5.2456460893154144e-02 1.5916010737419128e-01 - <_> - - 0 -1 1261 7.3743790388107300e-02 - - 2.7622079942375422e-03 -5.8930927515029907e-01 - <_> - - 0 -1 1262 -7.9017343523446470e-05 - - 5.8952510356903076e-02 -1.0288809984922409e-01 - <_> - - 0 -1 1263 -1.1446610005805269e-04 - - 6.6440522670745850e-02 -6.6069446504116058e-02 - <_> - - 0 -1 1264 -8.8836946815717965e-05 - - 8.7505243718624115e-02 -7.1942538022994995e-02 - <_> - - 0 -1 1265 8.6307860328815877e-05 - - -6.2407039105892181e-02 8.5861496627330780e-02 - <_> - - 0 -1 1266 2.8763279260601848e-05 - - -7.2714872658252716e-02 8.1864006817340851e-02 - <_> - 300 - -1.4390770196914673e+00 - - <_> - - 0 -1 1267 -2.7320239692926407e-02 - - 3.2964909076690674e-01 -1.7424769699573517e-01 - <_> - - 0 -1 1268 -1.2693449854850769e-01 - - 1.9988879561424255e-01 -1.8093200027942657e-01 - <_> - - 0 -1 1269 -5.8230119757354259e-03 - - 1.3379770517349243e-01 -2.9584899544715881e-01 - <_> - - 0 -1 1270 -1.0102219879627228e-02 - - 3.0932119488716125e-01 -1.0596410371363163e-02 - <_> - - 0 -1 1271 -6.1621540226042271e-03 - - 2.6765128970146179e-01 -1.1746490001678467e-01 - <_> - - 0 -1 1272 1.5751619637012482e-01 - - -4.4081759452819824e-01 2.5278929620981216e-02 - <_> - - 0 -1 1273 -1.1121460236608982e-02 - - 2.2672709822654724e-01 -1.2998679280281067e-01 - <_> - - 0 -1 1274 1.8185679614543915e-01 - - 2.7329839766025543e-02 -2.9153040051460266e-01 - <_> - - 0 -1 1275 -1.2944860383868217e-02 - - 9.6943646669387817e-02 -1.6887310147285461e-01 - <_> - - 0 -1 1276 -2.1488919854164124e-02 - - -2.9174751043319702e-01 2.2947270423173904e-02 - <_> - - 0 -1 1277 1.9648829475045204e-02 - - -1.5948629379272461e-01 1.0274410247802734e-01 - <_> - - 0 -1 1278 -2.0773630589246750e-02 - - 3.1656980514526367e-02 -2.1503049880266190e-02 - <_> - - 0 -1 1279 3.9682849310338497e-03 - - -2.1936699748039246e-01 7.8478358685970306e-02 - <_> - - 0 -1 1280 3.0420809984207153e-02 - - 1.0165469720959663e-02 -3.0965119600296021e-01 - <_> - - 0 -1 1281 -1.0891959816217422e-01 - - 1.2353190034627914e-01 -1.2826040387153625e-01 - <_> - - 0 -1 1282 7.3761628009378910e-03 - - -7.4341319501399994e-02 1.8419550359249115e-01 - <_> - - 0 -1 1283 8.1076346337795258e-02 - - -7.7455572783946991e-02 2.2572399675846100e-01 - <_> - - 0 -1 1284 -1.1007470078766346e-02 - - -2.9864379763603210e-01 3.6562368273735046e-02 - <_> - - 0 -1 1285 7.6382579281926155e-03 - - 3.0265279114246368e-02 -4.0436980128288269e-01 - <_> - - 0 -1 1286 -3.9173129945993423e-02 - - 3.6285480856895447e-01 -3.6153119057416916e-02 - <_> - - 0 -1 1287 -3.8692470639944077e-02 - - -3.6894500255584717e-01 4.1328370571136475e-02 - <_> - - 0 -1 1288 7.3556299321353436e-03 - - 1.4625470153987408e-02 -4.2549151182174683e-01 - <_> - - 0 -1 1289 -3.3073050435632467e-03 - - 1.8068400025367737e-01 -6.9157406687736511e-02 - <_> - - 0 -1 1290 1.6253300418611616e-04 - - -6.8862676620483398e-02 5.1595509052276611e-02 - <_> - - 0 -1 1291 -9.4225285574793816e-03 - - -5.4762011766433716e-01 2.1833010017871857e-02 - <_> - - 0 -1 1292 -8.5778563516214490e-05 - - 3.3158481121063232e-02 -2.9057880863547325e-02 - <_> - - 0 -1 1293 -1.2468020431697369e-02 - - -4.0364319086074829e-01 3.3987078815698624e-02 - <_> - - 0 -1 1294 3.3008489757776260e-02 - - 7.6816817745566368e-03 -5.0423312187194824e-01 - <_> - - 0 -1 1295 1.0868630371987820e-02 - - 4.5615401118993759e-02 -2.5677078962326050e-01 - <_> - - 0 -1 1296 -8.4409132599830627e-02 - - -3.1029421091079712e-01 4.6273539774119854e-03 - <_> - - 0 -1 1297 -9.3027371913194656e-03 - - 8.4993101656436920e-02 -1.4124239981174469e-01 - <_> - - 0 -1 1298 9.2303037643432617e-02 - - 7.9931216314435005e-03 -4.2582070827484131e-01 - <_> - - 0 -1 1299 -1.0815899819135666e-02 - - 2.1468059718608856e-01 -5.2153371274471283e-02 - <_> - - 0 -1 1300 -1.1681180330924690e-04 - - 4.8450410366058350e-02 -3.9833851158618927e-02 - <_> - - 0 -1 1301 -4.0612979792058468e-03 - - 1.6646389663219452e-01 -6.9063633680343628e-02 - <_> - - 0 -1 1302 5.7951388880610466e-03 - - -9.0683251619338989e-02 8.3746202290058136e-02 - <_> - - 0 -1 1303 4.9339048564434052e-02 - - 3.9173539727926254e-02 -3.3289939165115356e-01 - <_> - - 0 -1 1304 1.1971060303039849e-04 - - -5.3018629550933838e-02 5.9675298631191254e-02 - <_> - - 0 -1 1305 -1.0609890159685165e-04 - - 8.0995649099349976e-02 -1.6321890056133270e-01 - <_> - - 0 -1 1306 -3.0870910733938217e-02 - - -9.5257751643657684e-02 1.1297959834337234e-02 - <_> - - 0 -1 1307 1.2120340019464493e-01 - - -3.6473531275987625e-02 2.9850721359252930e-01 - <_> - - 0 -1 1308 -2.0626220107078552e-01 - - -2.3698499798774719e-01 1.0814179666340351e-02 - <_> - - 0 -1 1309 4.5673310756683350e-02 - - 4.6200390905141830e-02 -2.8622150421142578e-01 - <_> - - 0 -1 1310 -4.6554979681968689e-01 - - 2.3931290209293365e-01 -4.3889150023460388e-02 - <_> - - 0 -1 1311 -2.7247559279203415e-02 - - 2.2010290622711182e-01 -4.7335881739854813e-02 - <_> - - 0 -1 1312 6.7061851732432842e-03 - - -8.0964729189872742e-02 1.9794599711894989e-01 - <_> - - 0 -1 1313 1.0068929754197598e-02 - - 2.1472670137882233e-02 -4.2355400323867798e-01 - <_> - - 0 -1 1314 -2.0853739231824875e-02 - - 8.8176608085632324e-02 -1.1373549699783325e-01 - <_> - - 0 -1 1315 -1.6856560483574867e-02 - - -3.3476999402046204e-01 2.8114089742302895e-02 - <_> - - 0 -1 1316 1.0779639706015587e-02 - - 2.2091429680585861e-02 -2.6592388749122620e-01 - <_> - - 0 -1 1317 -1.4492620527744293e-01 - - -4.1471031308174133e-01 2.0235959440469742e-02 - <_> - - 0 -1 1318 -1.4222270250320435e-01 - - -5.0898122787475586e-01 1.4417699538171291e-02 - <_> - - 0 -1 1319 -2.6127409189939499e-02 - - -3.6849400401115417e-01 2.1076979115605354e-02 - <_> - - 0 -1 1320 -4.4306788593530655e-02 - - 2.4365669488906860e-01 -3.3151701092720032e-02 - <_> - - 0 -1 1321 -4.7106731683015823e-02 - - 2.2794100642204285e-01 -3.7193849682807922e-02 - <_> - - 0 -1 1322 -1.3220019638538361e-02 - - 9.2124797403812408e-02 -4.0445350110530853e-02 - <_> - - 0 -1 1323 -2.2011219989508390e-03 - - 1.1649300158023834e-01 -7.2288736701011658e-02 - <_> - - 0 -1 1324 -1.3163460418581963e-02 - - -2.7950811386108398e-01 1.8101029098033905e-02 - <_> - - 0 -1 1325 1.3168309815227985e-02 - - -4.7634720802307129e-02 1.8659350275993347e-01 - <_> - - 0 -1 1326 -3.1536500900983810e-03 - - -3.4663060307502747e-01 3.5029809921979904e-02 - <_> - - 0 -1 1327 -6.2986309640109539e-03 - - -4.4517099857330322e-01 1.6394890844821930e-02 - <_> - - 0 -1 1328 1.0520889918552712e-04 - - -1.2221650034189224e-01 9.1529771685600281e-02 - <_> - - 0 -1 1329 6.7712259478867054e-03 - - -6.2910549342632294e-02 1.3665160536766052e-01 - <_> - - 0 -1 1330 1.0879420442506671e-03 - - 5.4720260202884674e-02 -9.9656596779823303e-02 - <_> - - 0 -1 1331 -3.3788580913096666e-03 - - -2.9915699362754822e-01 2.9105750843882561e-02 - <_> - - 0 -1 1332 -4.8709530383348465e-03 - - 8.2811303436756134e-02 -1.3028509914875031e-01 - <_> - - 0 -1 1333 5.3894789889454842e-03 - - -4.2147580534219742e-02 2.2190959751605988e-01 - <_> - - 0 -1 1334 1.7554419115185738e-02 - - 2.4383009877055883e-03 -7.2084337472915649e-01 - <_> - - 0 -1 1335 -8.7206506577786058e-05 - - 5.3330589085817337e-02 -1.5196210145950317e-01 - <_> - - 0 -1 1336 1.5179510228335857e-02 - - -5.7497899979352951e-02 1.6275669634342194e-01 - <_> - - 0 -1 1337 -2.5617830455303192e-02 - - -2.2136710584163666e-01 4.4065218418836594e-02 - <_> - - 0 -1 1338 -8.7506044656038284e-03 - - 1.8021699786186218e-01 -4.8347599804401398e-02 - <_> - - 0 -1 1339 1.2497880379669368e-04 - - -1.3058370351791382e-01 6.3506737351417542e-02 - <_> - - 0 -1 1340 5.6294607929885387e-03 - - 2.2644480690360069e-02 -8.5971117019653320e-02 - <_> - - 0 -1 1341 -7.9026613384485245e-03 - - 1.5518979728221893e-01 -5.8897480368614197e-02 - <_> - - 0 -1 1342 -2.4716140702366829e-02 - - -4.9796000123023987e-01 1.8713599070906639e-02 - <_> - - 0 -1 1343 7.5827902182936668e-03 - - 1.3807909563183784e-02 -4.6953529119491577e-01 - <_> - - 0 -1 1344 1.5213450416922569e-02 - - -6.1865940690040588e-02 3.3661410212516785e-01 - <_> - - 0 -1 1345 5.6500758975744247e-02 - - 2.3028869181871414e-02 -3.8726210594177246e-01 - <_> - - 0 -1 1346 -1.2669079937040806e-02 - - 1.1255340278148651e-01 -7.1737729012966156e-02 - <_> - - 0 -1 1347 8.1679318100214005e-03 - - 3.0598040670156479e-02 -2.7574780583381653e-01 - <_> - - 0 -1 1348 2.4625749886035919e-01 - - -3.1543320510536432e-03 4.1911658644676208e-01 - <_> - - 0 -1 1349 -6.3956580124795437e-03 - - 1.2454889714717865e-01 -5.9035938233137131e-02 - <_> - - 0 -1 1350 2.5588089600205421e-02 - - 1.6577800735831261e-02 -7.5359277427196503e-02 - <_> - - 0 -1 1351 -7.4204497039318085e-02 - - -2.2262080013751984e-01 4.0606889873743057e-02 - <_> - - 0 -1 1352 -3.4715060144662857e-02 - - -4.0411248803138733e-01 1.5808880329132080e-02 - <_> - - 0 -1 1353 -1.1728240177035332e-02 - - 1.3309819996356964e-01 -5.6337751448154449e-02 - <_> - - 0 -1 1354 1.2831239961087704e-02 - - 1.9909920170903206e-02 -3.7757879495620728e-01 - <_> - - 0 -1 1355 -1.0563439689576626e-02 - - -3.2508909702301025e-01 2.3221909999847412e-02 - <_> - - 0 -1 1356 -3.5942891240119934e-01 - - -3.7527939677238464e-01 1.9600039348006248e-02 - <_> - - 0 -1 1357 -3.7011738866567612e-02 - - -5.4136317968368530e-01 1.2847639620304108e-02 - <_> - - 0 -1 1358 -2.5081379339098930e-02 - - -3.7354961037635803e-01 1.8088519573211670e-03 - <_> - - 0 -1 1359 -4.7535188496112823e-03 - - 1.9727499783039093e-01 -4.1774708777666092e-02 - <_> - - 0 -1 1360 -3.4907329827547073e-02 - - -7.2574031352996826e-01 1.4851300511509180e-03 - <_> - - 0 -1 1361 -7.4698338285088539e-03 - - -2.4860990047454834e-01 2.9280329123139381e-02 - <_> - - 0 -1 1362 -8.5913809016346931e-03 - - 6.7347623407840729e-02 -4.0358699858188629e-02 - <_> - - 0 -1 1363 -2.2700410336256027e-02 - - 8.9239656925201416e-02 -7.8781761229038239e-02 - <_> - - 0 -1 1364 2.2053509019315243e-03 - - -2.9912160709500313e-02 1.0977400094270706e-01 - <_> - - 0 -1 1365 -9.8910197615623474e-02 - - 1.8266810476779938e-01 -5.4516408592462540e-02 - <_> - - 0 -1 1366 1.8624879419803619e-02 - - -2.8659839183092117e-02 1.8234199285507202e-01 - <_> - - 0 -1 1367 2.1846349537372589e-01 - - -2.1460210904479027e-02 3.5764479637145996e-01 - <_> - - 0 -1 1368 -8.7592922151088715e-02 - - -1.3817930221557617e-01 5.3657878190279007e-02 - <_> - - 0 -1 1369 -5.9761269949376583e-03 - - -4.6034899353981018e-01 1.3340939767658710e-02 - <_> - - 0 -1 1370 -1.2421079911291599e-02 - - -3.3196499943733215e-01 1.2879449874162674e-02 - <_> - - 0 -1 1371 -1.3781080488115549e-03 - - 8.6616329848766327e-02 -7.4349276721477509e-02 - <_> - - 0 -1 1372 -1.4621959999203682e-02 - - 1.3001319766044617e-01 -6.7598417401313782e-02 - <_> - - 0 -1 1373 -2.4735030531883240e-01 - - 8.5237301886081696e-02 -8.4645196795463562e-02 - <_> - - 0 -1 1374 5.9308610856533051e-02 - - 1.3260659761726856e-02 -1.9157089293003082e-01 - <_> - - 0 -1 1375 2.7013169601559639e-02 - - -5.4349761456251144e-02 1.4400729537010193e-01 - <_> - - 0 -1 1376 -1.0043109767138958e-02 - - 9.7532339394092560e-02 -6.7870423197746277e-02 - <_> - - 0 -1 1377 1.6333710402250290e-02 - - -3.4645229578018188e-02 2.1960219740867615e-01 - <_> - - 0 -1 1378 -1.2308630160987377e-02 - - 8.2006506621837616e-02 -4.1976820677518845e-02 - <_> - - 0 -1 1379 1.0485749691724777e-02 - - -5.1224850118160248e-02 1.4488840103149414e-01 - <_> - - 0 -1 1380 -1.3628990564029664e-04 - - 6.1384610831737518e-02 -5.8191310614347458e-02 - <_> - - 0 -1 1381 8.5936411051079631e-04 - - -5.9147980064153671e-02 1.3367150723934174e-01 - <_> - - 0 -1 1382 8.3236678619869053e-05 - - -2.4901889264583588e-02 2.5403380393981934e-02 - <_> - - 0 -1 1383 1.3244279660284519e-02 - - 2.3201990872621536e-02 -3.1300029158592224e-01 - <_> - - 0 -1 1384 5.1960810087621212e-03 - - -2.0643370226025581e-02 1.6936659812927246e-01 - <_> - - 0 -1 1385 -1.0730049689300358e-04 - - 7.5357936322689056e-02 -8.5676707327365875e-02 - <_> - - 0 -1 1386 1.9123459234833717e-02 - - 7.9347174614667892e-03 -4.0754169225692749e-01 - <_> - - 0 -1 1387 1.5554900281131268e-02 - - 1.1862790212035179e-02 -5.2963471412658691e-01 - <_> - - 0 -1 1388 1.2289740145206451e-02 - - -4.7180838882923126e-02 1.5157990157604218e-01 - <_> - - 0 -1 1389 -1.4573910273611546e-02 - - -3.6669370532035828e-01 1.7396919429302216e-02 - <_> - - 0 -1 1390 9.7942277789115906e-03 - - 2.2446950897574425e-02 -1.9372400641441345e-01 - <_> - - 0 -1 1391 -1.1129249818623066e-02 - - 1.2022449821233749e-01 -5.0490919500589371e-02 - <_> - - 0 -1 1392 -2.8478259220719337e-02 - - -1.5742279589176178e-01 1.5236110426485538e-02 - <_> - - 0 -1 1393 1.7496680840849876e-02 - - 2.5690859183669090e-02 -2.3409870266914368e-01 - <_> - - 0 -1 1394 1.5521899797022343e-02 - - -5.5130939930677414e-02 1.3458259403705597e-01 - <_> - - 0 -1 1395 -7.6961889863014221e-02 - - 1.4820179343223572e-01 -5.2654728293418884e-02 - <_> - - 0 -1 1396 1.2541759759187698e-02 - - 1.9928690046072006e-02 -1.9568939507007599e-01 - <_> - - 0 -1 1397 1.4891889877617359e-03 - - -5.2284549921751022e-02 1.2443289905786514e-01 - <_> - - 0 -1 1398 -8.7659856944810599e-05 - - 5.6242011487483978e-02 -3.5084269940853119e-02 - <_> - - 0 -1 1399 -7.8899807704146951e-05 - - 1.0030300170183182e-01 -7.2244107723236084e-02 - <_> - - 0 -1 1400 1.0928830306511372e-04 - - -6.8274326622486115e-02 6.1526838690042496e-02 - <_> - - 0 -1 1401 9.7802199888974428e-05 - - -8.4941998124122620e-02 7.9070352017879486e-02 - <_> - - 0 -1 1402 -3.6586909554898739e-03 - - 8.4576956927776337e-02 -6.1979670077562332e-02 - <_> - - 0 -1 1403 -2.7165230363607407e-02 - - -1.3254989683628082e-01 4.7547008842229843e-02 - <_> - - 0 -1 1404 -2.4415540695190430e-01 - - -2.8779751062393188e-01 1.0103769600391388e-02 - <_> - - 0 -1 1405 2.1893939375877380e-01 - - -1.9153190776705742e-02 4.3883860111236572e-01 - <_> - - 0 -1 1406 -3.7663489580154419e-02 - - -5.3167599439620972e-01 8.6589939892292023e-03 - <_> - - 0 -1 1407 9.8570194095373154e-03 - - 3.5411339253187180e-02 -1.7533619701862335e-01 - <_> - - 0 -1 1408 -1.1069320142269135e-02 - - 8.7674133479595184e-02 -2.3971110582351685e-02 - <_> - - 0 -1 1409 -3.2092579640448093e-03 - - 1.1677669733762741e-01 -5.2938070148229599e-02 - <_> - - 0 -1 1410 3.1299121677875519e-02 - - 5.0855642184615135e-03 -1.6072839498519897e-01 - <_> - - 0 -1 1411 -1.6410440439358354e-03 - - -1.9995410740375519e-01 3.2194938510656357e-02 - <_> - - 0 -1 1412 -8.7659856944810599e-05 - - 7.1497410535812378e-02 -4.5898139476776123e-02 - <_> - - 0 -1 1413 -2.0864999387413263e-03 - - 1.7110210657119751e-01 -3.5948559641838074e-02 - <_> - - 0 -1 1414 -6.0527279973030090e-02 - - -7.6273518800735474e-01 1.3608309673145413e-03 - <_> - - 0 -1 1415 1.2230159714818001e-02 - - 2.8595050796866417e-02 -2.2392280399799347e-01 - <_> - - 0 -1 1416 -1.7876380681991577e-01 - - -3.5213679075241089e-01 1.7496939748525620e-02 - <_> - - 0 -1 1417 -9.4217322766780853e-03 - - 7.6749376952648163e-02 -7.8374743461608887e-02 - <_> - - 0 -1 1418 5.1809968426823616e-03 - - 3.2549921423196793e-02 -1.0737700015306473e-01 - <_> - - 0 -1 1419 1.2300110422074795e-02 - - 1.5902930870652199e-02 -3.8703128695487976e-01 - <_> - - 0 -1 1420 -1.2951259850524366e-04 - - 5.2656628191471100e-02 -6.0614999383687973e-02 - <_> - - 0 -1 1421 -1.0170210152864456e-01 - - -7.7593147754669189e-01 6.8476120941340923e-03 - <_> - - 0 -1 1422 -3.6904220469295979e-03 - - 1.9035929441452026e-01 -2.3995259776711464e-02 - <_> - - 0 -1 1423 1.5722079202532768e-02 - - 2.0075650885701180e-02 -2.8484240174293518e-01 - <_> - - 0 -1 1424 1.5800909604877234e-03 - - 1.4534479938447475e-02 -4.6087890863418579e-02 - <_> - - 0 -1 1425 1.9083570223301649e-03 - - -4.3277118355035782e-02 1.4814759790897369e-01 - <_> - - 0 -1 1426 4.5368049293756485e-02 - - 1.2600870104506612e-03 -1.0040459632873535e+00 - <_> - - 0 -1 1427 -3.1613200902938843e-02 - - 1.9041140377521515e-01 -3.0077679082751274e-02 - <_> - - 0 -1 1428 -5.9592720121145248e-02 - - 5.9635359793901443e-02 -6.2979087233543396e-02 - <_> - - 0 -1 1429 -2.2434289753437042e-01 - - -4.1175138950347900e-01 1.5641730278730392e-02 - <_> - - 0 -1 1430 -6.5899849869310856e-03 - - 1.9443179666996002e-01 -3.1694628298282623e-02 - <_> - - 0 -1 1431 7.9618580639362335e-03 - - -5.1823440939188004e-02 1.1943539977073669e-01 - <_> - - 0 -1 1432 2.4097269400954247e-02 - - 2.5083899963647127e-03 -5.8389508724212646e-01 - <_> - - 0 -1 1433 -1.9797749817371368e-02 - - -2.4893710017204285e-01 2.3319810628890991e-02 - <_> - - 0 -1 1434 3.0359720811247826e-02 - - -2.2299349308013916e-02 8.5980042815208435e-02 - <_> - - 0 -1 1435 -8.3497361629270017e-05 - - 6.4343743026256561e-02 -8.9677549898624420e-02 - <_> - - 0 -1 1436 -2.3914920166134834e-02 - - 1.2109059840440750e-01 -2.5260699912905693e-02 - <_> - - 0 -1 1437 -8.6520854383707047e-03 - - -4.7165429592132568e-01 1.2948970310389996e-02 - <_> - - 0 -1 1438 -1.8689059652388096e-03 - - -1.8584649264812469e-01 2.8544230386614799e-02 - <_> - - 0 -1 1439 -1.4712030068039894e-02 - - 7.3833480477333069e-02 -7.9545512795448303e-02 - <_> - - 0 -1 1440 9.6776559075806290e-05 - - -5.3808450698852539e-02 6.7052409052848816e-02 - <_> - - 0 -1 1441 -4.0881600230932236e-02 - - 1.5709510445594788e-01 -3.9720211178064346e-02 - <_> - - 0 -1 1442 4.3581537902355194e-03 - - -6.8891957402229309e-02 5.4509818553924561e-02 - <_> - - 0 -1 1443 -7.9926364123821259e-03 - - 9.5844186842441559e-02 -6.9580480456352234e-02 - <_> - - 0 -1 1444 1.0333009995520115e-02 - - -5.4686669260263443e-02 1.3011549413204193e-01 - <_> - - 0 -1 1445 -1.1435869964770973e-04 - - 6.7426279187202454e-02 -9.8393097519874573e-02 - <_> - - 0 -1 1446 -2.0709419623017311e-02 - - 2.0106869935989380e-01 -2.6080749928951263e-02 - <_> - - 0 -1 1447 -1.6621459508314729e-03 - - -2.2376410663127899e-01 2.6049429550766945e-02 - <_> - - 0 -1 1448 1.9625460263341665e-03 - - -4.3015338480472565e-02 1.2084879726171494e-01 - <_> - - 0 -1 1449 -4.7995131462812424e-02 - - -5.9408020973205566e-01 9.8937414586544037e-03 - <_> - - 0 -1 1450 -8.1422913353890181e-05 - - 6.3267372548580170e-02 -4.6790290623903275e-02 - <_> - - 0 -1 1451 -3.5077799111604691e-03 - - 2.0965479314327240e-01 -2.5860479101538658e-02 - <_> - - 0 -1 1452 6.1466880142688751e-03 - - 2.1389920264482498e-02 -1.5767499804496765e-01 - <_> - - 0 -1 1453 -2.2475130856037140e-02 - - -3.8649868965148926e-01 1.3500030152499676e-02 - <_> - - 0 -1 1454 -1.2854509986937046e-02 - - -3.1043541431427002e-01 1.6851799562573433e-02 - <_> - - 0 -1 1455 -3.2944459468126297e-02 - - -2.4135130643844604e-01 2.1218579262495041e-02 - <_> - - 0 -1 1456 -4.2211711406707764e-03 - - 5.4983090609312057e-02 -3.6255910992622375e-02 - <_> - - 0 -1 1457 -2.5159320794045925e-03 - - 6.7240409553050995e-02 -1.0563170164823532e-01 - <_> - - 0 -1 1458 1.2536929920315742e-02 - - -3.1297560781240463e-02 4.4635839760303497e-02 - <_> - - 0 -1 1459 -1.2544070370495319e-02 - - 2.4844449758529663e-01 -3.0549539253115654e-02 - <_> - - 0 -1 1460 -4.6609319746494293e-02 - - -4.1198849678039551e-01 7.2858459316194057e-03 - <_> - - 0 -1 1461 -1.3294920325279236e-02 - - 1.6136699914932251e-01 -4.0562149137258530e-02 - <_> - - 0 -1 1462 -2.8895901050418615e-03 - - 6.9220848381519318e-02 -3.4948769956827164e-02 - <_> - - 0 -1 1463 9.2754911747761071e-05 - - -6.2799602746963501e-02 9.0230673551559448e-02 - <_> - - 0 -1 1464 1.2964129447937012e-01 - - -8.1927813589572906e-03 3.8863879442214966e-01 - <_> - - 0 -1 1465 -2.8936140239238739e-02 - - 8.4075257182121277e-02 -6.7740783095359802e-02 - <_> - - 0 -1 1466 -1.4308850513771176e-03 - - -5.4857030510902405e-02 2.9219489544630051e-02 - <_> - - 0 -1 1467 2.3652089294046164e-03 - - -4.8029679805040359e-02 1.3704180717468262e-01 - <_> - - 0 -1 1468 1.5420720446854830e-03 - - -4.9499150365591049e-02 6.5847739577293396e-02 - <_> - - 0 -1 1469 -1.8509089713916183e-03 - - -2.3544579744338989e-01 2.5507390499114990e-02 - <_> - - 0 -1 1470 -6.0786440735682845e-04 - - 4.0977660566568375e-02 -3.0832519754767418e-02 - <_> - - 0 -1 1471 -4.1273389942944050e-03 - - 1.1393050104379654e-01 -5.2464749664068222e-02 - <_> - - 0 -1 1472 -2.1144140511751175e-02 - - -2.8581771254539490e-01 1.9020890817046165e-02 - <_> - - 0 -1 1473 -6.8623408675193787e-02 - - 5.2402520179748535e-01 -1.3370789587497711e-02 - <_> - - 0 -1 1474 -2.3273609578609467e-02 - - -1.9590279459953308e-01 1.5390779823064804e-02 - <_> - - 0 -1 1475 1.1729559861123562e-02 - - 1.2804569676518440e-02 -3.9975368976593018e-01 - <_> - - 0 -1 1476 -1.9197949441149831e-03 - - -2.5994110107421875e-01 2.8458990156650543e-02 - <_> - - 0 -1 1477 1.1447600554674864e-03 - - -4.5072000473737717e-02 1.3860389590263367e-01 - <_> - - 0 -1 1478 -1.0227440361632034e-04 - - 5.5592600256204605e-02 -4.9113009124994278e-02 - <_> - - 0 -1 1479 -1.0123359970748425e-04 - - 9.4505466520786285e-02 -8.8237293064594269e-02 - <_> - - 0 -1 1480 1.0893570288317278e-04 - - -4.5741818845272064e-02 5.8658581227064133e-02 - <_> - - 0 -1 1481 7.4765441240742803e-05 - - -8.0418758094310760e-02 1.0517989844083786e-01 - <_> - - 0 -1 1482 -1.0043049696832895e-03 - - 3.7291228771209717e-02 -9.5728866755962372e-02 - <_> - - 0 -1 1483 -1.3605220243334770e-02 - - -1.7957609891891479e-01 3.2971139997243881e-02 - <_> - - 0 -1 1484 2.8680460527539253e-03 - - 1.2185310013592243e-02 -2.6212790608406067e-01 - <_> - - 0 -1 1485 -1.2858140689786524e-04 - - 8.6011983454227448e-02 -6.9080702960491180e-02 - <_> - - 0 -1 1486 1.2469210196286440e-03 - - 2.2270040586590767e-02 -1.1044169962406158e-01 - <_> - - 0 -1 1487 8.2425161963328719e-04 - - -5.4833728820085526e-02 1.2498649954795837e-01 - <_> - - 0 -1 1488 7.8583601862192154e-05 - - -5.4548110812902451e-02 6.6198967397212982e-02 - <_> - - 0 -1 1489 -8.3637831266969442e-04 - - 1.3395069539546967e-01 -5.7126030325889587e-02 - <_> - - 0 -1 1490 1.0339979780837893e-04 - - -3.7374898791313171e-02 5.5564608424901962e-02 - <_> - - 0 -1 1491 1.1284360289573669e-01 - - -4.7857798635959625e-02 1.4919960498809814e-01 - <_> - - 0 -1 1492 -2.1991500630974770e-02 - - 7.4098996818065643e-02 -1.5654139220714569e-02 - <_> - - 0 -1 1493 -5.8295959606766701e-03 - - -1.2228869646787643e-01 4.6361729502677917e-02 - <_> - - 0 -1 1494 -4.7616049647331238e-01 - - 2.9897591471672058e-01 -1.9476199522614479e-02 - <_> - - 0 -1 1495 -9.6184182912111282e-03 - - 6.5632872283458710e-02 -9.7764529287815094e-02 - <_> - - 0 -1 1496 -9.8459348082542419e-03 - - 2.9953660443425179e-02 -4.1783228516578674e-02 - <_> - - 0 -1 1497 -3.4493058919906616e-02 - - 1.4814029633998871e-01 -5.2295818924903870e-02 - <_> - - 0 -1 1498 -2.7170699089765549e-02 - - -1.8757429718971252e-01 1.2358410283923149e-02 - <_> - - 0 -1 1499 3.2725300639867783e-02 - - 1.3365229591727257e-02 -4.1139039397239685e-01 - <_> - - 0 -1 1500 8.4677049017045647e-05 - - -3.6508630961179733e-02 4.4863410294055939e-02 - <_> - - 0 -1 1501 4.8961658030748367e-03 - - -4.9906510859727859e-02 1.1985769867897034e-01 - <_> - - 0 -1 1502 -9.8173961043357849e-02 - - -4.0475818514823914e-01 2.2186879068613052e-03 - <_> - - 0 -1 1503 -2.9190620407462120e-02 - - 2.0124709606170654e-01 -3.4556761384010315e-02 - <_> - - 0 -1 1504 1.6377819702029228e-03 - - 4.8856548964977264e-02 -1.1524800211191177e-01 - <_> - - 0 -1 1505 -1.1581239959923550e-04 - - 5.7624600827693939e-02 -9.5245189964771271e-02 - <_> - - 0 -1 1506 -1.2790900655090809e-04 - - 6.4437143504619598e-02 -6.1183791607618332e-02 - <_> - - 0 -1 1507 1.8525200430303812e-03 - - -3.9117921143770218e-02 1.5792779624462128e-01 - <_> - - 0 -1 1508 -1.6371360048651695e-02 - - -2.7185299992561340e-01 1.6307469457387924e-02 - <_> - - 0 -1 1509 9.7776018083095551e-04 - - -5.2038270980119705e-02 1.1381710320711136e-01 - <_> - - 0 -1 1510 1.5415719710290432e-02 - - 1.3977140188217163e-02 -3.4197929501533508e-01 - <_> - - 0 -1 1511 1.4122789725661278e-03 - - -4.9484260380268097e-02 1.1596909910440445e-01 - <_> - - 0 -1 1512 1.0917360335588455e-01 - - 4.8475428484380245e-03 -5.3975361585617065e-01 - <_> - - 0 -1 1513 6.0521319508552551e-02 - - 2.1077200770378113e-02 -2.8005740046501160e-01 - <_> - - 0 -1 1514 2.5193318724632263e-01 - - -7.9183783382177353e-03 4.0918448567390442e-01 - <_> - - 0 -1 1515 2.7253168821334839e-01 - - -1.2983440421521664e-02 4.2010658979415894e-01 - <_> - - 0 -1 1516 3.7246018648147583e-02 - - 8.6529608815908432e-03 -5.9303051233291626e-01 - <_> - - 0 -1 1517 -2.1589249372482300e-02 - - -3.1377330422401428e-01 1.6977600753307343e-02 - <_> - - 0 -1 1518 -2.6934880763292313e-02 - - -3.6965128779411316e-01 2.5225139688700438e-03 - <_> - - 0 -1 1519 1.0230350308120251e-02 - - 2.0219080150127411e-02 -2.8223741054534912e-01 - <_> - - 0 -1 1520 -2.4981389287859201e-03 - - 2.8802009299397469e-02 -4.1332159191370010e-02 - <_> - - 0 -1 1521 6.1933491379022598e-02 - - -2.1436979994177818e-02 2.8102350234985352e-01 - <_> - - 0 -1 1522 -1.5541249513626099e-01 - - 9.4182349741458893e-02 -5.3503081202507019e-02 - <_> - - 0 -1 1523 1.4328320324420929e-01 - - 1.8958590924739838e-02 -3.2329851388931274e-01 - <_> - - 0 -1 1524 1.0829309467226267e-03 - - -3.9980951696634293e-02 8.4950529038906097e-02 - <_> - - 0 -1 1525 4.2623549699783325e-02 - - 2.5714209303259850e-02 -2.0262250304222107e-01 - <_> - - 0 -1 1526 -9.4770672149024904e-05 - - 7.2402693331241608e-02 -7.2625011205673218e-02 - <_> - - 0 -1 1527 -4.9279178492724895e-03 - - -2.1339289844036102e-01 2.8035620227456093e-02 - <_> - - 0 -1 1528 2.2998640779405832e-03 - - 1.7618950456380844e-02 -1.7477869987487793e-01 - <_> - - 0 -1 1529 -1.8047069897875190e-03 - - 1.5262520313262939e-01 -3.3268321305513382e-02 - <_> - - 0 -1 1530 6.3559878617525101e-03 - - 2.4536989629268646e-02 -2.5021979212760925e-01 - <_> - - 0 -1 1531 1.7984479665756226e-02 - - -4.4790919870138168e-02 1.1593340337276459e-01 - <_> - - 0 -1 1532 -1.3372869789600372e-01 - - 3.0456998944282532e-01 -1.9601140171289444e-02 - <_> - - 0 -1 1533 -7.6566986739635468e-02 - - 3.2627278566360474e-01 -1.6411129385232925e-02 - <_> - - 0 -1 1534 5.7867518626153469e-04 - - -5.3845439106225967e-02 8.0281347036361694e-02 - <_> - - 0 -1 1535 -1.0546330304350704e-04 - - 5.7120978832244873e-02 -8.6317531764507294e-02 - <_> - - 0 -1 1536 6.7152240080758929e-04 - - -3.0404970049858093e-02 3.0943179503083229e-02 - <_> - - 0 -1 1537 -1.8690660595893860e-02 - - 1.0812710225582123e-01 -5.5201351642608643e-02 - <_> - - 0 -1 1538 -3.6627850495278835e-03 - - 1.0792650282382965e-01 -3.5584200173616409e-02 - <_> - - 0 -1 1539 1.9153920002281666e-03 - - -5.5652879178524017e-02 1.0891920328140259e-01 - <_> - - 0 -1 1540 -5.8281961828470230e-02 - - 9.2221289873123169e-02 -5.9672281146049500e-02 - <_> - - 0 -1 1541 2.0880669355392456e-02 - - -4.4841628521680832e-02 1.4994530379772186e-01 - <_> - - 0 -1 1542 -1.2872450053691864e-02 - - -1.8297229707241058e-01 1.2131419964134693e-02 - <_> - - 0 -1 1543 -1.5816009545233101e-04 - - 6.7625537514686584e-02 -7.4934296309947968e-02 - <_> - - 0 -1 1544 -3.6091450601816177e-03 - - 6.2888123095035553e-02 -6.1180680990219116e-02 - <_> - - 0 -1 1545 1.5257050283253193e-02 - - 4.0386959910392761e-02 -1.3029590249061584e-01 - <_> - - 0 -1 1546 7.2127310559153557e-03 - - -2.4583019316196442e-02 9.6449322998523712e-02 - <_> - - 0 -1 1547 -6.6937888041138649e-03 - - 1.2095390260219574e-01 -5.6884378194808960e-02 - <_> - - 0 -1 1548 -2.9697069898247719e-02 - - -4.4960159063339233e-01 2.3813890293240547e-03 - <_> - - 0 -1 1549 1.4415530022233725e-03 - - 3.7733301520347595e-02 -1.2737789750099182e-01 - <_> - - 0 -1 1550 1.4221980236470699e-03 - - -2.1170429885387421e-01 1.6940960660576820e-02 - <_> - - 0 -1 1551 -1.5120590105652809e-03 - - 1.2285920232534409e-01 -4.1854929178953171e-02 - <_> - - 0 -1 1552 2.0304210484027863e-02 - - 1.3554779812693596e-02 -1.9578050076961517e-01 - <_> - - 0 -1 1553 -2.0062210038304329e-02 - - -2.1793180704116821e-01 2.1363889798521996e-02 - <_> - - 0 -1 1554 -8.2440199330449104e-03 - - 2.9835399985313416e-01 -1.6030140221118927e-02 - <_> - - 0 -1 1555 -1.2381359934806824e-01 - - -7.2187852859497070e-01 7.2500761598348618e-03 - <_> - - 0 -1 1556 1.4663189649581909e-01 - - 1.0929410345852375e-02 -3.8258919119834900e-01 - <_> - - 0 -1 1557 -1.0277800261974335e-02 - - 1.1528860032558441e-01 -4.0658649057149887e-02 - <_> - - 0 -1 1558 3.3496099058538675e-03 - - -3.0865129083395004e-02 6.3714809715747833e-02 - <_> - - 0 -1 1559 -1.4789789915084839e-02 - - -2.6894780993461609e-01 2.2147249430418015e-02 - <_> - - 0 -1 1560 5.2639901638031006e-02 - - -1.1888500303030014e-03 8.4306770563125610e-01 - <_> - - 0 -1 1561 -2.2687960416078568e-02 - - -5.0103509426116943e-01 1.0603000409901142e-02 - <_> - - 0 -1 1562 1.3357940129935741e-02 - - 1.3358240015804768e-02 -3.4407868981361389e-01 - <_> - - 0 -1 1563 4.0347680449485779e-02 - - -2.2541839629411697e-02 2.1424660086631775e-01 - <_> - - 0 -1 1564 2.0399050787091255e-02 - - 5.7352068834006786e-03 -8.1542342901229858e-01 - <_> - - 0 -1 1565 -2.0794410258531570e-02 - - 2.8139808773994446e-01 -1.7350850626826286e-02 - <_> - - 0 -1 1566 -2.2991070523858070e-02 - - -2.3115499317646027e-01 1.0062159970402718e-02 - <_> - 278 - -1.4224710464477539e+00 - - <_> - - 0 -1 1567 -3.2529558986425400e-02 - - 3.8044160604476929e-01 -1.5227490663528442e-01 - <_> - - 0 -1 1568 -9.6866730600595474e-03 - - 1.7110300064086914e-01 -6.4435392618179321e-02 - <_> - - 0 -1 1569 -4.2818721383810043e-02 - - 3.5909658670425415e-01 -8.2244172692298889e-02 - <_> - - 0 -1 1570 4.7356471419334412e-02 - - -4.5057401061058044e-02 1.1725539714097977e-01 - <_> - - 0 -1 1571 -3.3883251249790192e-02 - - 1.5656350553035736e-01 -1.9660830497741699e-01 - <_> - - 0 -1 1572 1.6506519168615341e-02 - - -3.7829719483852386e-02 4.3533229827880859e-01 - <_> - - 0 -1 1573 1.4033010229468346e-02 - - -8.4303461015224457e-02 3.9072498679161072e-01 - <_> - - 0 -1 1574 -4.3674569576978683e-02 - - 3.5789701342582703e-01 -5.6618168950080872e-02 - <_> - - 0 -1 1575 3.9390970021486282e-02 - - 7.4526593089103699e-02 -2.8721511363983154e-01 - <_> - - 0 -1 1576 2.7967539429664612e-01 - - -1.7927689850330353e-01 9.5716983079910278e-02 - <_> - - 0 -1 1577 -2.7309380471706390e-02 - - 2.0642340183258057e-01 -9.6997790038585663e-02 - <_> - - 0 -1 1578 8.1798024475574493e-03 - - -4.3230161070823669e-02 1.0153889656066895e-01 - <_> - - 0 -1 1579 4.8562590964138508e-03 - - -6.6235437989234924e-02 2.2371730208396912e-01 - <_> - - 0 -1 1580 -2.1111050620675087e-02 - - -2.3597380518913269e-01 2.0980730652809143e-02 - <_> - - 0 -1 1581 2.9689490329474211e-03 - - 5.5319551378488541e-02 -3.1421989202499390e-01 - <_> - - 0 -1 1582 -1.4177729608491063e-03 - - -9.9316902458667755e-02 4.0930420160293579e-02 - <_> - - 0 -1 1583 1.8895609537139535e-03 - - 4.7736670821905136e-02 -3.3560028672218323e-01 - <_> - - 0 -1 1584 -3.2547879964113235e-02 - - -4.6100369095802307e-01 2.2066680714488029e-02 - <_> - - 0 -1 1585 -3.2047629356384277e-02 - - -3.7099909782409668e-01 3.5771168768405914e-02 - <_> - - 0 -1 1586 -1.0906500369310379e-01 - - 2.7380779385566711e-01 -5.1245860755443573e-02 - <_> - - 0 -1 1587 4.5085761696100235e-02 - - -8.0376937985420227e-02 2.0190399885177612e-01 - <_> - - 0 -1 1588 9.6619682153686881e-05 - - -3.8644108921289444e-02 4.5012358576059341e-02 - <_> - - 0 -1 1589 -1.2527930084615946e-04 - - 6.0821618884801865e-02 -2.3440569639205933e-01 - <_> - - 0 -1 1590 -7.6730418950319290e-03 - - -2.5697150826454163e-01 3.0136449262499809e-02 - <_> - - 0 -1 1591 -2.4111960083246231e-03 - - 1.3455359637737274e-01 -9.4123587012290955e-02 - <_> - - 0 -1 1592 -3.5480279475450516e-03 - - 1.6368620097637177e-01 -6.5735898911952972e-02 - <_> - - 0 -1 1593 -7.4420678429305553e-03 - - 4.3583691120147705e-01 -3.4085851162672043e-02 - <_> - - 0 -1 1594 6.9531807675957680e-03 - - 3.4082211554050446e-02 -1.5552860498428345e-01 - <_> - - 0 -1 1595 -1.1566810309886932e-02 - - -3.7222158908843994e-01 3.1968921422958374e-02 - <_> - - 0 -1 1596 7.3271869041491300e-05 - - -4.7866608947515488e-02 3.9341930299997330e-02 - <_> - - 0 -1 1597 -4.7459648922085762e-03 - - 1.8686290085315704e-01 -6.2216449528932571e-02 - <_> - - 0 -1 1598 -2.4754500016570091e-02 - - -5.0596177577972412e-01 1.3228390365839005e-02 - <_> - - 0 -1 1599 1.1549480259418488e-02 - - 4.1499558836221695e-02 -2.6305711269378662e-01 - <_> - - 0 -1 1600 7.6468382030725479e-03 - - 1.4065190218389034e-02 -3.6097638309001923e-02 - <_> - - 0 -1 1601 2.9371369630098343e-02 - - -5.6847479194402695e-02 1.8845230340957642e-01 - <_> - - 0 -1 1602 -6.5610869787633419e-03 - - 2.4409130215644836e-01 -7.4077129364013672e-02 - <_> - - 0 -1 1603 -1.7362499609589577e-02 - - -2.6955080032348633e-01 4.5806050300598145e-02 - <_> - - 0 -1 1604 -6.4328663051128387e-02 - - -6.7359542846679688e-01 8.9323017746210098e-03 - <_> - - 0 -1 1605 -2.5860529392957687e-02 - - -2.8402230143547058e-01 3.7698548287153244e-02 - <_> - - 0 -1 1606 -3.9703961461782455e-02 - - -4.8480059951543808e-02 1.0969489812850952e-02 - <_> - - 0 -1 1607 -3.3141750842332840e-02 - - 1.4789700508117676e-01 -8.2552701234817505e-02 - <_> - - 0 -1 1608 -3.9032109081745148e-02 - - 9.3282796442508698e-02 -5.6148871779441833e-02 - <_> - - 0 -1 1609 -1.1510000331327319e-04 - - 7.6830253005027771e-02 -1.4591589570045471e-01 - <_> - - 0 -1 1610 2.8774080798029900e-02 - - 1.4245410449802876e-02 -4.2927891016006470e-01 - <_> - - 0 -1 1611 -1.7967380583286285e-02 - - -2.8555288910865784e-01 3.5016119480133057e-02 - <_> - - 0 -1 1612 -1.4183930121362209e-02 - - -2.0557439327239990e-01 2.4191029369831085e-02 - <_> - - 0 -1 1613 9.5999464392662048e-03 - - 3.8848869502544403e-02 -2.5329971313476562e-01 - <_> - - 0 -1 1614 2.8658700175583363e-03 - - -3.8897961378097534e-02 2.1641039848327637e-01 - <_> - - 0 -1 1615 9.8942127078771591e-03 - - -2.2040490061044693e-02 4.1194090247154236e-01 - <_> - - 0 -1 1616 5.3157331421971321e-03 - - 3.4069050103425980e-02 -1.9336779415607452e-01 - <_> - - 0 -1 1617 1.1667669750750065e-02 - - 2.8704559430480003e-02 -3.2336559891700745e-01 - <_> - - 0 -1 1618 7.9165054485201836e-03 - - -2.1710209548473358e-02 2.7279400825500488e-01 - <_> - - 0 -1 1619 1.4896179549396038e-02 - - -2.8705410659313202e-02 2.9993739724159241e-01 - <_> - - 0 -1 1620 -4.6051971614360809e-02 - - -7.1714037656784058e-01 1.6391549725085497e-03 - <_> - - 0 -1 1621 1.2525349855422974e-02 - - -2.4171119555830956e-02 3.4617099165916443e-01 - <_> - - 0 -1 1622 -7.3274560272693634e-03 - - -1.2797740101814270e-01 4.1265968233346939e-02 - <_> - - 0 -1 1623 -1.0679940169211477e-04 - - 5.8594450354576111e-02 -1.5463119745254517e-01 - <_> - - 0 -1 1624 1.1660600081086159e-02 - - 1.1693470180034637e-02 -4.9165180325508118e-01 - <_> - - 0 -1 1625 -1.6170109808444977e-01 - - -3.9669001102447510e-01 2.2492909803986549e-02 - <_> - - 0 -1 1626 -2.1332919597625732e-02 - - 1.0327749699354172e-01 -7.7664600685238838e-03 - <_> - - 0 -1 1627 2.2397670894861221e-02 - - -3.1559981405735016e-02 2.6935219764709473e-01 - <_> - - 0 -1 1628 -9.1192683612462133e-05 - - 7.7337473630905151e-02 -7.5700417160987854e-02 - <_> - - 0 -1 1629 -2.4261020123958588e-02 - - 1.0713250190019608e-01 -8.2371480762958527e-02 - <_> - - 0 -1 1630 8.2271397113800049e-03 - - -2.9786510393023491e-02 1.6342550516128540e-01 - <_> - - 0 -1 1631 1.4093330129981041e-02 - - -2.8404369950294495e-02 3.5299220681190491e-01 - <_> - - 0 -1 1632 -1.0918209701776505e-01 - - 1.7027379572391510e-01 -6.2282849103212357e-02 - <_> - - 0 -1 1633 -3.2730210572481155e-02 - - -1.7788340151309967e-01 5.2962359040975571e-02 - <_> - - 0 -1 1634 -1.2067790143191814e-02 - - 1.1206190288066864e-01 -6.1255540698766708e-02 - <_> - - 0 -1 1635 1.0436809808015823e-01 - - -3.2521981745958328e-02 2.8920689225196838e-01 - <_> - - 0 -1 1636 5.5702589452266693e-03 - - 3.2705459743738174e-02 -1.8883390724658966e-01 - <_> - - 0 -1 1637 -7.4505289085209370e-03 - - 1.1109550297260284e-01 -7.6065346598625183e-02 - <_> - - 0 -1 1638 1.8507199361920357e-02 - - 5.1278448663651943e-03 -3.2454928755760193e-01 - <_> - - 0 -1 1639 -1.3000619946978986e-04 - - 6.5906368196010590e-02 -1.1608509719371796e-01 - <_> - - 0 -1 1640 -1.0110549919772893e-04 - - 6.6874466836452484e-02 -6.1187278479337692e-02 - <_> - - 0 -1 1641 -8.2355996710248291e-05 - - 5.6198339909315109e-02 -1.3230879604816437e-01 - <_> - - 0 -1 1642 6.7807449959218502e-03 - - -3.2801959663629532e-02 2.2695629298686981e-01 - <_> - - 0 -1 1643 -1.0289719700813293e-01 - - -3.2038938999176025e-01 2.5616079568862915e-02 - <_> - - 0 -1 1644 1.0858030145755038e-04 - - -2.3970989510416985e-02 3.6143548786640167e-02 - <_> - - 0 -1 1645 3.4920300822705030e-03 - - 4.0521498769521713e-02 -2.0743690431118011e-01 - <_> - - 0 -1 1646 8.4493216127157211e-03 - - 2.7343379333615303e-02 -8.0973640084266663e-02 - <_> - - 0 -1 1647 -5.8201588690280914e-03 - - 1.4030739665031433e-01 -5.3014609962701797e-02 - <_> - - 0 -1 1648 -2.0276790019124746e-03 - - -2.3815169930458069e-01 2.8206869959831238e-02 - <_> - - 0 -1 1649 -6.2650619074702263e-03 - - 1.0950689762830734e-01 -7.1786336600780487e-02 - <_> - - 0 -1 1650 1.8329780548810959e-02 - - 3.2881149090826511e-03 -2.4403749406337738e-01 - <_> - - 0 -1 1651 -1.4055710285902023e-02 - - -2.0988300442695618e-01 3.7349730730056763e-02 - <_> - - 0 -1 1652 1.6436750069260597e-02 - - -2.0020410418510437e-02 1.7581729590892792e-01 - <_> - - 0 -1 1653 -7.6040881685912609e-03 - - 1.1120659857988358e-01 -6.6377982497215271e-02 - <_> - - 0 -1 1654 -1.7437810311093926e-03 - - -1.1763899773359299e-01 2.0920079201459885e-02 - <_> - - 0 -1 1655 2.0605439785867929e-03 - - 3.0492970719933510e-02 -2.3323950171470642e-01 - <_> - - 0 -1 1656 -4.7545689158141613e-03 - - 1.5850760042667389e-01 -4.9032289534807205e-02 - <_> - - 0 -1 1657 1.0362310335040092e-02 - - -1.0725220292806625e-01 7.2945110499858856e-02 - <_> - - 0 -1 1658 1.9581569358706474e-02 - - -3.0178340151906013e-02 1.2788949906826019e-01 - <_> - - 0 -1 1659 -3.7324108183383942e-02 - - 2.5007569789886475e-01 -3.4548711031675339e-02 - <_> - - 0 -1 1660 -2.2115129977464676e-02 - - -3.5684010386466980e-01 1.4295370317995548e-02 - <_> - - 0 -1 1661 -1.7337020486593246e-02 - - 1.5191890299320221e-01 -5.3740900009870529e-02 - <_> - - 0 -1 1662 -1.1369160376489162e-02 - - -1.5406270325183868e-01 1.4785549603402615e-02 - <_> - - 0 -1 1663 -1.4761550351977348e-02 - - -3.7672498822212219e-01 2.3018039762973785e-02 - <_> - - 0 -1 1664 -1.1766609735786915e-02 - - 1.4722760021686554e-01 -3.5164430737495422e-02 - <_> - - 0 -1 1665 -5.1778471097350121e-03 - - -1.5880860388278961e-01 5.5203009396791458e-02 - <_> - - 0 -1 1666 1.8116280436515808e-01 - - 5.9258830733597279e-03 -3.4079378843307495e-01 - <_> - - 0 -1 1667 -2.8401340823620558e-03 - - -2.5190570950508118e-01 2.9740760102868080e-02 - <_> - - 0 -1 1668 -5.6462749838829041e-02 - - -4.2315030097961426e-01 9.2743232380598783e-04 - <_> - - 0 -1 1669 -3.3624221105128527e-03 - - 6.5666697919368744e-02 -1.0826759785413742e-01 - <_> - - 0 -1 1670 8.3388388156890869e-03 - - 1.0488309897482395e-02 -7.4981592595577240e-02 - <_> - - 0 -1 1671 -1.5665130689740181e-02 - - -3.9219671487808228e-01 1.8510419875383377e-02 - <_> - - 0 -1 1672 -1.7687210347503424e-03 - - 1.5860289335250854e-01 -3.9618719369173050e-02 - <_> - - 0 -1 1673 -6.9300839677453041e-03 - - -2.1337039768695831e-01 3.1901270151138306e-02 - <_> - - 0 -1 1674 -6.2634617090225220e-02 - - 4.6897390484809875e-01 -1.0887789539992809e-02 - <_> - - 0 -1 1675 3.6505470052361488e-03 - - -2.6130320504307747e-02 2.3748870193958282e-01 - <_> - - 0 -1 1676 1.1151240207254887e-02 - - 5.3229848854243755e-03 -3.2130768895149231e-01 - <_> - - 0 -1 1677 -4.5365858823060989e-03 - - 8.2844547927379608e-02 -8.0115981400012970e-02 - <_> - - 0 -1 1678 -4.3989070691168308e-03 - - -2.2062489390373230e-01 2.3956889286637306e-02 - <_> - - 0 -1 1679 -8.0931422417052090e-05 - - 8.3183720707893372e-02 -7.6105080544948578e-02 - <_> - - 0 -1 1680 1.7180040478706360e-02 - - 3.0891239643096924e-02 -2.1150709688663483e-01 - <_> - - 0 -1 1681 -1.9628280773758888e-02 - - 1.8306790292263031e-01 -3.8707170635461807e-02 - <_> - - 0 -1 1682 2.4444239214062691e-02 - - -2.6723939180374146e-01 2.7812579646706581e-02 - <_> - - 0 -1 1683 -3.6335210315883160e-03 - - 1.2941999733448029e-01 -6.0854408890008926e-02 - <_> - - 0 -1 1684 -1.5583789348602295e-01 - - 2.9201939702033997e-01 -2.2044450044631958e-02 - <_> - - 0 -1 1685 1.2645959854125977e-02 - - -5.7956811040639877e-02 1.2000530213117599e-01 - <_> - - 0 -1 1686 -1.8256660550832748e-02 - - 1.1456149816513062e-01 -6.6880658268928528e-02 - <_> - - 0 -1 1687 7.8691470623016357e-01 - - -1.9597550854086876e-02 3.9855471253395081e-01 - <_> - - 0 -1 1688 -2.6444930117577314e-03 - - -2.0646509528160095e-01 2.4280549958348274e-02 - <_> - - 0 -1 1689 -1.0909110278589651e-04 - - 9.3177713453769684e-02 -8.4980867803096771e-02 - <_> - - 0 -1 1690 -9.1609297669492662e-05 - - 6.3885338604450226e-02 -7.0593856275081635e-02 - <_> - - 0 -1 1691 1.0280970309395343e-04 - - -8.3767838776111603e-02 1.1355379968881607e-01 - <_> - - 0 -1 1692 6.5171226859092712e-02 - - -2.1008869633078575e-02 1.6222980618476868e-01 - <_> - - 0 -1 1693 -3.3189691603183746e-02 - - 1.4846749603748322e-01 -5.2959389984607697e-02 - <_> - - 0 -1 1694 -4.0189391374588013e-01 - - -4.9486890435218811e-01 1.5633370727300644e-02 - <_> - - 0 -1 1695 7.2733121924102306e-03 - - 2.7792690321803093e-02 -2.3128899931907654e-01 - <_> - - 0 -1 1696 -1.3244659639894962e-02 - - -2.8102970123291016e-01 2.6572089642286301e-02 - <_> - - 0 -1 1697 -2.2069490514695644e-03 - - -1.3499380648136139e-01 5.3295578807592392e-02 - <_> - - 0 -1 1698 6.3389358110725880e-03 - - -2.9710570350289345e-02 1.2620060145854950e-01 - <_> - - 0 -1 1699 -1.9882840570062399e-03 - - 1.4089819788932800e-01 -6.4480878412723541e-02 - <_> - - 0 -1 1700 1.1109679937362671e-02 - - 3.6036681383848190e-02 -2.0155589282512665e-01 - <_> - - 0 -1 1701 -1.5754520893096924e-02 - - -3.8578459620475769e-01 1.7101729288697243e-02 - <_> - - 0 -1 1702 -2.0075829233974218e-03 - - 1.0723750293254852e-01 -3.2845478504896164e-02 - <_> - - 0 -1 1703 -1.0277600085828453e-04 - - 8.9651212096214294e-02 -7.3453463613986969e-02 - <_> - - 0 -1 1704 -1.2877609580755234e-02 - - 1.1867459863424301e-01 -8.1963732838630676e-02 - <_> - - 0 -1 1705 2.2134140133857727e-02 - - -3.8634710013866425e-02 2.0064100623130798e-01 - <_> - - 0 -1 1706 -1.4158019796013832e-02 - - -1.3553419709205627e-01 2.2455710917711258e-02 - <_> - - 0 -1 1707 3.5068059805780649e-03 - - 4.1640508919954300e-02 -1.7104309797286987e-01 - <_> - - 0 -1 1708 3.4302179701626301e-03 - - -3.8643669337034225e-02 1.3460919260978699e-01 - <_> - - 0 -1 1709 -2.5867659132927656e-03 - - -3.3378678560256958e-01 2.0394440740346909e-02 - <_> - - 0 -1 1710 -8.3075952716171741e-05 - - 4.3186109513044357e-02 -3.6894761025905609e-02 - <_> - - 0 -1 1711 -2.9514790512621403e-03 - - 1.6360920667648315e-01 -4.0991440415382385e-02 - <_> - - 0 -1 1712 -6.6972076892852783e-02 - - 7.9344272613525391e-02 -1.7339119687676430e-02 - <_> - - 0 -1 1713 -8.7736167013645172e-02 - - -2.7998620271682739e-01 2.3209020495414734e-02 - <_> - - 0 -1 1714 2.8925359249114990e-02 - - -3.2643690705299377e-02 6.9175571203231812e-02 - <_> - - 0 -1 1715 1.3697390444576740e-02 - - -3.4412618726491928e-02 1.8311390280723572e-01 - <_> - - 0 -1 1716 -5.0847078673541546e-03 - - 9.3848191201686859e-02 -4.2314790189266205e-02 - <_> - - 0 -1 1717 3.8608049508184195e-03 - - -8.7915137410163879e-02 7.9263538122177124e-02 - <_> - - 0 -1 1718 1.0344120115041733e-01 - - 1.4294220134615898e-02 -1.7824479937553406e-01 - <_> - - 0 -1 1719 5.3322589956223965e-03 - - -1.9811069965362549e-01 3.3467840403318405e-02 - <_> - - 0 -1 1720 2.4972399696707726e-02 - - -2.9970880597829819e-02 2.5031089782714844e-01 - <_> - - 0 -1 1721 8.0840502050705254e-05 - - -8.1262156367301941e-02 7.6767727732658386e-02 - <_> - - 0 -1 1722 -9.6944597316905856e-05 - - 6.8264253437519073e-02 -4.7088030725717545e-02 - <_> - - 0 -1 1723 1.6829340020194650e-03 - - 3.8623999804258347e-02 -1.6512230038642883e-01 - <_> - - 0 -1 1724 2.5296229869127274e-02 - - 2.4244319647550583e-03 -4.9479418992996216e-01 - <_> - - 0 -1 1725 7.7065881341695786e-03 - - -4.0091071277856827e-02 1.7837360501289368e-01 - <_> - - 0 -1 1726 -6.3551932573318481e-02 - - -9.6359908580780029e-01 1.2983690248802304e-03 - <_> - - 0 -1 1727 1.2043629772961140e-02 - - 3.2327480614185333e-02 -2.0570349693298340e-01 - <_> - - 0 -1 1728 -5.1777001470327377e-02 - - 1.2718230485916138e-01 -2.5768250226974487e-02 - <_> - - 0 -1 1729 -5.2279248833656311e-02 - - 5.9088861942291260e-01 -1.0696710087358952e-02 - <_> - - 0 -1 1730 -2.8587870765477419e-03 - - -2.1566559374332428e-01 2.1160630509257317e-02 - <_> - - 0 -1 1731 -2.2894500289112329e-03 - - 1.4047910273075104e-01 -4.5665130019187927e-02 - <_> - - 0 -1 1732 4.4600428082048893e-03 - - 4.1558738797903061e-02 -1.1571829766035080e-01 - <_> - - 0 -1 1733 -2.5135470554232597e-02 - - 3.2584500312805176e-01 -1.9654629752039909e-02 - <_> - - 0 -1 1734 -4.1408590041100979e-03 - - -2.4931840598583221e-01 2.4890620261430740e-02 - <_> - - 0 -1 1735 2.5323050096631050e-02 - - -4.0092781186103821e-02 1.6539059579372406e-01 - <_> - - 0 -1 1736 -3.0261930078268051e-03 - - 1.3259239494800568e-01 -3.6744181066751480e-02 - <_> - - 0 -1 1737 -2.0923390984535217e-03 - - -2.3182089626789093e-01 2.6503330096602440e-02 - <_> - - 0 -1 1738 1.1389939754735678e-04 - - -8.6492210626602173e-02 3.3153928816318512e-02 - <_> - - 0 -1 1739 4.1002789512276649e-03 - - 2.8531620278954506e-02 -1.8766659498214722e-01 - <_> - - 0 -1 1740 -1.0652170021785423e-04 - - 7.3864407837390900e-02 -1.0641259700059891e-01 - <_> - - 0 -1 1741 -1.1209140211576596e-04 - - 7.4941687285900116e-02 -7.3481239378452301e-02 - <_> - - 0 -1 1742 -1.0086740076076239e-04 - - 5.8873329311609268e-02 -5.0781998783349991e-02 - <_> - - 0 -1 1743 8.7035987235140055e-05 - - -6.9829471409320831e-02 8.2421161234378815e-02 - <_> - - 0 -1 1744 9.9490047432482243e-05 - - -5.0873178988695145e-02 6.2739193439483643e-02 - <_> - - 0 -1 1745 -9.9564917036332190e-05 - - 9.5691867172718048e-02 -8.1678442656993866e-02 - <_> - - 0 -1 1746 3.5038128495216370e-02 - - 2.4704539682716131e-03 -7.5103992223739624e-01 - <_> - - 0 -1 1747 -2.2841310128569603e-02 - - -3.8842248916625977e-01 1.2580679729580879e-02 - <_> - - 0 -1 1748 -1.0086740076076239e-04 - - 4.8513848334550858e-02 -4.4357851147651672e-02 - <_> - - 0 -1 1749 8.7035987235140055e-05 - - -6.9275371730327606e-02 8.0701768398284912e-02 - <_> - - 0 -1 1750 8.4506031125783920e-03 - - 2.8818279504776001e-02 -2.3520529270172119e-01 - <_> - - 0 -1 1751 3.3874511718750000e-02 - - -1.8710069358348846e-02 2.9156479239463806e-01 - <_> - - 0 -1 1752 3.0527070164680481e-02 - - 2.8566541150212288e-03 -6.2721562385559082e-01 - <_> - - 0 -1 1753 4.5102681033313274e-03 - - -2.1763099357485771e-02 2.4781370162963867e-01 - <_> - - 0 -1 1754 -1.1711950413882732e-02 - - -8.2332722842693329e-02 7.1632838808000088e-03 - <_> - - 0 -1 1755 -1.9293600693345070e-02 - - -5.4533201456069946e-01 9.4053568318486214e-03 - <_> - - 0 -1 1756 -2.7695020660758018e-02 - - 1.2569870054721832e-01 -2.4778019636869431e-02 - <_> - - 0 -1 1757 6.4738709479570389e-03 - - -4.0420930832624435e-02 1.3924980163574219e-01 - <_> - - 0 -1 1758 8.3701964467763901e-03 - - 2.1314760670065880e-02 -1.3580240309238434e-01 - <_> - - 0 -1 1759 9.5793809741735458e-03 - - 1.0532050393521786e-02 -4.6821591258049011e-01 - <_> - - 0 -1 1760 8.8913729996420443e-05 - - -2.6148770004510880e-02 6.7171059548854828e-02 - <_> - - 0 -1 1761 -7.8428974375128746e-03 - - 1.4042629301548004e-01 -4.0453571826219559e-02 - <_> - - 0 -1 1762 -1.5551749616861343e-02 - - -2.3723240196704865e-01 8.9765731245279312e-03 - <_> - - 0 -1 1763 -1.0940689593553543e-02 - - -2.4828870594501495e-01 2.1254500374197960e-02 - <_> - - 0 -1 1764 1.3340170262381434e-03 - - 5.1965519785881042e-02 -2.4966360628604889e-01 - <_> - - 0 -1 1765 -3.9200708270072937e-03 - - 2.1566860377788544e-01 -2.9206639155745506e-02 - <_> - - 0 -1 1766 -8.4352102130651474e-03 - - 1.3894349336624146e-01 -2.7564799413084984e-02 - <_> - - 0 -1 1767 1.0151269816560671e-04 - - -7.4789039790630341e-02 7.8852757811546326e-02 - <_> - - 0 -1 1768 1.1394869943615049e-04 - - -3.3959168940782547e-02 4.0015239268541336e-02 - <_> - - 0 -1 1769 -1.0446170199429616e-04 - - 9.3367688357830048e-02 -7.0703469216823578e-02 - <_> - - 0 -1 1770 7.1699619293212891e-02 - - 2.0074559375643730e-02 -2.8401699662208557e-01 - <_> - - 0 -1 1771 7.6136142015457153e-02 - - -1.8674589693546295e-02 3.4351688623428345e-01 - <_> - - 0 -1 1772 -1.0139370337128639e-02 - - 7.9048253595829010e-02 -7.6241552829742432e-02 - <_> - - 0 -1 1773 -1.1787709780037403e-02 - - -3.8687211275100708e-01 1.5032519586384296e-02 - <_> - - 0 -1 1774 -1.1715809814631939e-03 - - -1.2566329538822174e-01 4.2748369276523590e-02 - <_> - - 0 -1 1775 -1.1624010221567005e-04 - - 7.7757306396961212e-02 -7.0283323526382446e-02 - <_> - - 0 -1 1776 -4.0296189486980438e-02 - - 4.0789419412612915e-01 -2.4684509262442589e-02 - <_> - - 0 -1 1777 -2.0148590207099915e-02 - - 1.6085879504680634e-01 -3.7873048335313797e-02 - <_> - - 0 -1 1778 -9.9596334621310234e-03 - - 4.6971559524536133e-02 -5.5278468877077103e-02 - <_> - - 0 -1 1779 1.0458829812705517e-02 - - 6.4418478868901730e-03 -7.1921861171722412e-01 - <_> - - 0 -1 1780 -8.3341188728809357e-03 - - 5.9552740305662155e-02 -1.6490520909428596e-02 - <_> - - 0 -1 1781 6.4220251515507698e-03 - - -3.1288038939237595e-02 1.6086129844188690e-01 - <_> - - 0 -1 1782 -1.4171390235424042e-01 - - -4.8521599173545837e-01 4.3316078372299671e-03 - <_> - - 0 -1 1783 -9.2059485614299774e-03 - - -1.3737039268016815e-01 3.9314210414886475e-02 - <_> - - 0 -1 1784 -1.1828100308775902e-02 - - -5.6232619285583496e-01 1.8052730010822415e-03 - <_> - - 0 -1 1785 -2.6902719400823116e-03 - - -2.2296780347824097e-01 2.3458529263734818e-02 - <_> - - 0 -1 1786 1.6899820417165756e-02 - - -2.2523698862642050e-03 3.2749548554420471e-01 - <_> - - 0 -1 1787 6.6508129239082336e-03 - - -2.2151440382003784e-02 2.6804810762405396e-01 - <_> - - 0 -1 1788 -1.1253960430622101e-02 - - -2.1269169449806213e-01 1.9085729494690895e-02 - <_> - - 0 -1 1789 8.1370659172534943e-03 - - 1.9186450168490410e-02 -2.7125069499015808e-01 - <_> - - 0 -1 1790 1.8258720636367798e-02 - - -2.0849399268627167e-02 1.6397699713706970e-01 - <_> - - 0 -1 1791 -7.3184021748602390e-03 - - 1.1440680176019669e-01 -4.5136548578739166e-02 - <_> - - 0 -1 1792 7.0838169194757938e-03 - - -3.0573329329490662e-01 1.5363070182502270e-02 - <_> - - 0 -1 1793 7.9824047861620784e-04 - - 5.4806288331747055e-02 -9.6648342907428741e-02 - <_> - - 0 -1 1794 3.8189259357750416e-03 - - -2.4906789883971214e-02 1.7047740519046783e-01 - <_> - - 0 -1 1795 -9.7243173513561487e-05 - - 9.7341060638427734e-02 -5.9142779558897018e-02 - <_> - - 0 -1 1796 3.8480389863252640e-02 - - -6.9969161413609982e-03 1.1771100014448166e-01 - <_> - - 0 -1 1797 -1.6899229958653450e-02 - - 7.8709267079830170e-02 -8.0960407853126526e-02 - <_> - - 0 -1 1798 3.4140020608901978e-02 - - 2.9647560790181160e-02 -2.1153970062732697e-01 - <_> - - 0 -1 1799 -1.3483889633789659e-03 - - 1.2221589684486389e-01 -5.2371580153703690e-02 - <_> - - 0 -1 1800 -4.5433178544044495e-02 - - 9.3226648867130280e-02 -2.4248609319329262e-02 - <_> - - 0 -1 1801 -9.8451746453065425e-05 - - 6.5616242587566376e-02 -7.7497042715549469e-02 - <_> - - 0 -1 1802 9.4870656728744507e-02 - - -6.5743089653551579e-03 2.4361729621887207e-01 - <_> - - 0 -1 1803 -4.5803082175552845e-03 - - 6.4869597554206848e-02 -8.1663407385349274e-02 - <_> - - 0 -1 1804 7.2096623480319977e-02 - - -1.3442070223391056e-02 1.4696159958839417e-01 - <_> - - 0 -1 1805 -8.6482256650924683e-02 - - -2.6061370968818665e-01 2.4327959865331650e-02 - <_> - - 0 -1 1806 -3.6125909537076950e-02 - - 7.1490518748760223e-02 -6.7800052464008331e-02 - <_> - - 0 -1 1807 -7.6352730393409729e-02 - - 1.3374680280685425e-01 -5.0326138734817505e-02 - <_> - - 0 -1 1808 -1.0973890312016010e-02 - - -6.9340631365776062e-02 1.5405960381031036e-02 - <_> - - 0 -1 1809 1.4667320251464844e-01 - - 1.3563389889895916e-02 -4.0459880232810974e-01 - <_> - - 0 -1 1810 1.2397590093314648e-02 - - 1.8343500792980194e-02 -1.4745520055294037e-01 - <_> - - 0 -1 1811 -4.3075408786535263e-02 - - -3.5041698813438416e-01 1.3814290054142475e-02 - <_> - - 0 -1 1812 -3.6940488964319229e-02 - - -7.8505232930183411e-02 3.4940339624881744e-02 - <_> - - 0 -1 1813 -1.3126240670681000e-01 - - -4.4067218899726868e-01 1.2085669673979282e-02 - <_> - - 0 -1 1814 -4.9558010697364807e-01 - - -3.1593188643455505e-01 1.4849360100924969e-02 - <_> - - 0 -1 1815 -2.4269169662147760e-03 - - -2.4598549306392670e-01 2.1273959428071976e-02 - <_> - - 0 -1 1816 -6.1519298469647765e-04 - - -1.1089760065078735e-01 5.2152808755636215e-02 - <_> - - 0 -1 1817 3.3521879464387894e-02 - - -1.4474649913609028e-02 3.3576649427413940e-01 - <_> - - 0 -1 1818 -4.4954858720302582e-02 - - -4.7776260972023010e-01 2.3775880690664053e-03 - <_> - - 0 -1 1819 -9.6803857013583183e-03 - - -1.3491189479827881e-01 3.7101969122886658e-02 - <_> - - 0 -1 1820 -1.5080680139362812e-02 - - 1.4766040444374084e-01 -1.4693359844386578e-02 - <_> - - 0 -1 1821 -7.0486129261553288e-03 - - 1.2857760488986969e-01 -3.8553401827812195e-02 - <_> - - 0 -1 1822 1.0608400218188763e-02 - - -6.4019598066806793e-02 7.8001968562602997e-02 - <_> - - 0 -1 1823 -5.9643429704010487e-03 - - 6.9554768502712250e-02 -8.1943526864051819e-02 - <_> - - 0 -1 1824 3.9288301020860672e-02 - - 6.0737589374184608e-03 -1.7827449738979340e-01 - <_> - - 0 -1 1825 -1.5277069993317127e-02 - - 1.2987169623374939e-01 -4.5128051191568375e-02 - <_> - - 0 -1 1826 9.2299269454088062e-05 - - -5.5158708244562149e-02 7.2173222899436951e-02 - <_> - - 0 -1 1827 2.4077570438385010e-01 - - 1.3051790185272694e-02 -3.7544038891792297e-01 - <_> - - 0 -1 1828 -8.2777936768252403e-05 - - 8.7432913482189178e-02 -8.0448426306247711e-02 - <_> - - 0 -1 1829 1.0664980072760954e-04 - - -6.8053416907787323e-02 7.9824432730674744e-02 - <_> - - 0 -1 1830 9.2299269454088062e-05 - - -5.7555299252271652e-02 7.4612356722354889e-02 - <_> - - 0 -1 1831 -8.7791820988059044e-05 - - 8.9770622551441193e-02 -7.8726790845394135e-02 - <_> - - 0 -1 1832 -9.7666241344995797e-05 - - 7.9511262476444244e-02 -8.0778427422046661e-02 - <_> - - 0 -1 1833 1.5842399443499744e-04 - - -6.3730709254741669e-02 8.8729366660118103e-02 - <_> - - 0 -1 1834 1.2284370313864201e-04 - - -5.6088779121637344e-02 8.1273712217807770e-02 - <_> - - 0 -1 1835 -1.1712549894582480e-04 - - 7.5557589530944824e-02 -7.6586730778217316e-02 - <_> - - 0 -1 1836 1.0328610427677631e-02 - - 1.0152160190045834e-02 -2.8533908724784851e-01 - <_> - - 0 -1 1837 2.9327110387384892e-03 - - 3.2252810895442963e-02 -1.5635579824447632e-01 - <_> - - 0 -1 1838 -1.0308229684596881e-04 - - 5.0609830766916275e-02 -5.6346200406551361e-02 - <_> - - 0 -1 1839 1.0124980326509103e-04 - - -6.1613030731678009e-02 8.9073821902275085e-02 - <_> - - 0 -1 1840 3.8937058299779892e-02 - - 2.0891619846224785e-02 -1.2963040173053741e-01 - <_> - - 0 -1 1841 1.1204339563846588e-02 - - -2.8574090451002121e-02 1.7617300152778625e-01 - <_> - - 0 -1 1842 1.0314460098743439e-01 - - 3.9013950154185295e-03 -4.3666309118270874e-01 - <_> - - 0 -1 1843 -1.1191029846668243e-01 - - 3.3865529298782349e-01 -1.4155720360577106e-02 - <_> - - 0 -1 1844 -2.6280559599399567e-02 - - -8.9043527841567993e-02 1.8448470160365105e-02 - <_> - 317 - -1.3818249702453613e+00 - - <_> - - 0 -1 1845 -1.2676210142672062e-02 - - 2.0237310230731964e-01 -2.5077709555625916e-01 - <_> - - 0 -1 1846 -4.6319760382175446e-02 - - 2.1999239921569824e-01 -1.6146729886531830e-01 - <_> - - 0 -1 1847 -3.5081539303064346e-02 - - 1.5923239290714264e-01 -2.1780499815940857e-01 - <_> - - 0 -1 1848 -1.8382079899311066e-02 - - 2.5103780627250671e-01 -3.1736700329929590e-03 - <_> - - 0 -1 1849 -7.4837259016931057e-03 - - 1.5708750486373901e-01 -1.2671829760074615e-01 - <_> - - 0 -1 1850 4.6564780175685883e-02 - - -2.2000789642333984e-01 5.6889738887548447e-02 - <_> - - 0 -1 1851 -2.0530119538307190e-02 - - 2.2484280169010162e-01 -8.0766998231410980e-02 - <_> - - 0 -1 1852 -2.1643849089741707e-02 - - 1.9534820318222046e-01 -7.6146677136421204e-02 - <_> - - 0 -1 1853 -3.3336980268359184e-03 - - 9.7043372690677643e-02 -2.0862129330635071e-01 - <_> - - 0 -1 1854 2.7746830135583878e-02 - - -4.2685609310865402e-02 1.9736699759960175e-01 - <_> - - 0 -1 1855 3.1199149787425995e-02 - - -8.8123418390750885e-02 1.6084210574626923e-01 - <_> - - 0 -1 1856 -1.4883769676089287e-02 - - 1.2884040176868439e-01 -4.9883481115102768e-02 - <_> - - 0 -1 1857 -1.2498069554567337e-02 - - 1.9557100534439087e-01 -7.3339052498340607e-02 - <_> - - 0 -1 1858 6.8398728035390377e-03 - - -1.9100619852542877e-01 3.0017739161849022e-02 - <_> - - 0 -1 1859 1.6698269173502922e-02 - - -6.6535621881484985e-02 2.4306890368461609e-01 - <_> - - 0 -1 1860 -1.3585180044174194e-02 - - -3.1157851219177246e-01 3.0332250520586967e-02 - <_> - - 0 -1 1861 -1.6012180596590042e-02 - - -3.8150539994239807e-01 2.9990119859576225e-02 - <_> - - 0 -1 1862 2.4959780275821686e-02 - - 1.7127040773630142e-02 -1.7174740135669708e-01 - <_> - - 0 -1 1863 -6.2679812312126160e-02 - - -2.4782620370388031e-01 5.0681248307228088e-02 - <_> - - 0 -1 1864 -5.1468160003423691e-02 - - -6.0602962970733643e-01 2.3179119452834129e-03 - <_> - - 0 -1 1865 1.7415819689631462e-02 - - 3.3250451087951660e-02 -3.6394399404525757e-01 - <_> - - 0 -1 1866 3.3267650753259659e-02 - - -5.9090301394462585e-02 2.3938019573688507e-01 - <_> - - 0 -1 1867 -1.0759649740066379e-04 - - 6.7025236785411835e-02 -1.7393949627876282e-01 - <_> - - 0 -1 1868 -1.1119269765913486e-02 - - -2.1026720106601715e-01 1.6025310382246971e-02 - <_> - - 0 -1 1869 -8.6540812626481056e-03 - - -2.9001379013061523e-01 3.4559149295091629e-02 - <_> - - 0 -1 1870 1.0427879897179082e-04 - - -1.3615639507770538e-01 5.5320408195257187e-02 - <_> - - 0 -1 1871 -1.4959470368921757e-02 - - -2.8106829524040222e-01 3.3888410776853561e-02 - <_> - - 0 -1 1872 -1.5031349658966064e-01 - - -1.0209769755601883e-01 9.4559686258435249e-03 - <_> - - 0 -1 1873 -2.0292310044169426e-02 - - -3.6912149190902710e-01 2.5728639215230942e-02 - <_> - - 0 -1 1874 1.6227319836616516e-02 - - 6.1225090175867081e-03 -4.6356171369552612e-01 - <_> - - 0 -1 1875 1.2045660056173801e-02 - - 3.1531188637018204e-02 -2.9530370235443115e-01 - <_> - - 0 -1 1876 9.5706343650817871e-02 - - 9.0816244482994080e-03 -6.9083817303180695e-02 - <_> - - 0 -1 1877 -1.4548900723457336e-01 - - -3.1886878609657288e-01 3.4880429506301880e-02 - <_> - - 0 -1 1878 1.1059490032494068e-02 - - 3.8989599794149399e-02 -1.3711850345134735e-01 - <_> - - 0 -1 1879 -5.6998720392584801e-03 - - -3.5794290900230408e-01 2.6885839179158211e-02 - <_> - - 0 -1 1880 -4.9371081404387951e-03 - - 1.0142619907855988e-01 -5.1279809325933456e-02 - <_> - - 0 -1 1881 -1.4712589792907238e-02 - - 1.2495979666709900e-01 -7.7691748738288879e-02 - <_> - - 0 -1 1882 1.1282210238277912e-02 - - -3.3828750252723694e-02 1.4979380369186401e-01 - <_> - - 0 -1 1883 -9.6910931169986725e-03 - - 2.3743079602718353e-01 -4.8856690526008606e-02 - <_> - - 0 -1 1884 -1.7229679971933365e-02 - - -5.6515389680862427e-01 8.7145604193210602e-03 - <_> - - 0 -1 1885 5.6609478779137135e-03 - - -6.0676008462905884e-02 1.5271340310573578e-01 - <_> - - 0 -1 1886 -5.3604390472173691e-02 - - -2.1472039818763733e-01 1.4890110120177269e-02 - <_> - - 0 -1 1887 -1.0153600014746189e-02 - - -3.1097480654716492e-01 2.8160639107227325e-02 - <_> - - 0 -1 1888 -1.7072910442948341e-02 - - 7.1882233023643494e-02 -5.2844271063804626e-02 - <_> - - 0 -1 1889 -1.0728809982538223e-02 - - 1.6389510035514832e-01 -5.4277900606393814e-02 - <_> - - 0 -1 1890 1.0714929550886154e-02 - - -4.3529260903596878e-02 1.5492570400238037e-01 - <_> - - 0 -1 1891 -9.1774649918079376e-03 - - 8.2661621272563934e-02 -1.1048959940671921e-01 - <_> - - 0 -1 1892 -5.1653548143804073e-03 - - 4.6839110553264618e-02 -5.0071209669113159e-02 - <_> - - 0 -1 1893 1.3472570106387138e-02 - - 2.3994479328393936e-02 -3.6207410693168640e-01 - <_> - - 0 -1 1894 9.8625328973866999e-05 - - -7.2403706610202789e-02 8.5279501974582672e-02 - <_> - - 0 -1 1895 -3.8795128930360079e-03 - - 9.9527172744274139e-02 -9.3315653502941132e-02 - <_> - - 0 -1 1896 2.4870259687304497e-02 - - 1.6243930906057358e-02 -4.6679219603538513e-01 - <_> - - 0 -1 1897 1.3287420570850372e-01 - - 2.9302369803190231e-02 -2.8217709064483643e-01 - <_> - - 0 -1 1898 1.3053320348262787e-02 - - -2.2584149613976479e-02 1.9151739776134491e-01 - <_> - - 0 -1 1899 -2.3439459037035704e-03 - - 1.3174580037593842e-01 -7.1855299174785614e-02 - <_> - - 0 -1 1900 -4.3457929044961929e-02 - - 6.9369621574878693e-02 -2.2885309532284737e-02 - <_> - - 0 -1 1901 -5.9775430709123611e-02 - - 2.3593389987945557e-01 -3.9723061025142670e-02 - <_> - - 0 -1 1902 -6.1264610849320889e-03 - - -2.1994990110397339e-01 2.2333640605211258e-02 - <_> - - 0 -1 1903 -2.2975069005042315e-03 - - 1.1488830298185349e-01 -8.4905907511711121e-02 - <_> - - 0 -1 1904 3.2943069934844971e-02 - - 8.4422080544754863e-04 -8.7972801923751831e-01 - <_> - - 0 -1 1905 -1.9385489868000150e-03 - - 8.5967347025871277e-02 -1.1247129738330841e-01 - <_> - - 0 -1 1906 -2.1609459072351456e-03 - - 7.8462250530719757e-02 -3.7393838167190552e-02 - <_> - - 0 -1 1907 -9.0928059071302414e-03 - - -4.1091561317443848e-01 1.8252879381179810e-02 - <_> - - 0 -1 1908 -1.6027869284152985e-01 - - -2.2541759908199310e-01 1.5782350674271584e-02 - <_> - - 0 -1 1909 -4.9950089305639267e-02 - - -1.8641009926795959e-01 4.2277488857507706e-02 - <_> - - 0 -1 1910 -1.0969909839332104e-02 - - -4.1804128885269165e-01 1.6149029135704041e-02 - <_> - - 0 -1 1911 9.3183261924423277e-05 - - -7.6907746493816376e-02 1.0072469711303711e-01 - <_> - - 0 -1 1912 1.3265410438179970e-02 - - 1.9543310627341270e-02 -1.7777380347251892e-01 - <_> - - 0 -1 1913 -1.2569909915328026e-02 - - -2.1007700264453888e-01 3.5157121717929840e-02 - <_> - - 0 -1 1914 9.8762623965740204e-03 - - 6.7626000382006168e-03 -3.0761849880218506e-01 - <_> - - 0 -1 1915 -2.1076570264995098e-03 - - 1.3363209366798401e-01 -5.7092700153589249e-02 - <_> - - 0 -1 1916 -7.1060168556869030e-04 - - -1.7669269442558289e-01 6.5393269062042236e-02 - <_> - - 0 -1 1917 -9.2764664441347122e-03 - - -2.4678149819374084e-01 2.7610789984464645e-02 - <_> - - 0 -1 1918 6.5380721352994442e-03 - - -2.3361699655652046e-02 2.5770819187164307e-01 - <_> - - 0 -1 1919 -1.1298989877104759e-02 - - 1.5731829404830933e-01 -4.3780930340290070e-02 - <_> - - 0 -1 1920 -2.8048140928149223e-02 - - -3.9991301298141479e-01 9.0252067893743515e-03 - <_> - - 0 -1 1921 1.1714899912476540e-02 - - 2.2580929100513458e-02 -3.1374511122703552e-01 - <_> - - 0 -1 1922 -1.2955210695508868e-04 - - 3.7720758467912674e-02 -6.0533870011568069e-02 - <_> - - 0 -1 1923 -3.7807179614901543e-03 - - 1.3487710058689117e-01 -5.6583140045404434e-02 - <_> - - 0 -1 1924 -4.9128020182251930e-03 - - 1.4564900100231171e-01 -2.7835259214043617e-02 - <_> - - 0 -1 1925 -1.6391910612583160e-02 - - -6.4010322093963623e-01 1.1727060191333294e-02 - <_> - - 0 -1 1926 -1.1464639566838741e-02 - - 3.9367951452732086e-02 -3.3033378422260284e-02 - <_> - - 0 -1 1927 -3.4916009753942490e-02 - - -3.3986571431159973e-01 2.0481580868363380e-02 - <_> - - 0 -1 1928 4.9870118498802185e-02 - - -5.0045821815729141e-02 4.6599239110946655e-02 - <_> - - 0 -1 1929 -1.0137989738723263e-04 - - 8.6516477167606354e-02 -8.1374593079090118e-02 - <_> - - 0 -1 1930 -8.1614796072244644e-03 - - 1.2585890293121338e-01 -2.4253010749816895e-02 - <_> - - 0 -1 1931 -5.1362808793783188e-02 - - 1.2383320182561874e-01 -5.7537298649549484e-02 - <_> - - 0 -1 1932 -9.2184888198971748e-03 - - 1.3315090537071228e-01 -6.2671236693859100e-02 - <_> - - 0 -1 1933 5.9735208749771118e-02 - - 1.9387029111385345e-02 -3.7452590465545654e-01 - <_> - - 0 -1 1934 -3.7147789262235165e-03 - - 1.3588359951972961e-01 -1.1573229730129242e-01 - <_> - - 0 -1 1935 -1.6745850443840027e-03 - - -2.1437530219554901e-01 3.1279198825359344e-02 - <_> - - 0 -1 1936 2.7367400005459785e-02 - - 6.2164650298655033e-03 -1.6582269966602325e-01 - <_> - - 0 -1 1937 -5.6425300426781178e-03 - - 8.9943163096904755e-02 -7.7249430119991302e-02 - <_> - - 0 -1 1938 -4.4944159686565399e-02 - - 1.0177309811115265e-01 -7.9409472644329071e-02 - <_> - - 0 -1 1939 -1.2397750280797482e-02 - - -2.5522980093955994e-01 2.5932550430297852e-02 - <_> - - 0 -1 1940 1.3257490098476410e-01 - - -6.0667068464681506e-04 -9.0462738275527954e-01 - <_> - - 0 -1 1941 -4.7687850892543793e-02 - - -2.9634040594100952e-01 2.2060779854655266e-02 - <_> - - 0 -1 1942 -1.3438980386126786e-04 - - 3.4807950258255005e-02 -2.3007700219750404e-02 - <_> - - 0 -1 1943 -4.7759748995304108e-02 - - 3.2043048739433289e-01 -2.0720070227980614e-02 - <_> - - 0 -1 1944 8.4569696336984634e-03 - - 1.6900449991226196e-02 -2.3434109985828400e-01 - <_> - - 0 -1 1945 -9.0884640812873840e-03 - - -2.7401408553123474e-01 2.3920679464936256e-02 - <_> - - 0 -1 1946 1.1316059681121260e-04 - - -7.1908891201019287e-02 6.4337499439716339e-02 - <_> - - 0 -1 1947 -2.2978619672358036e-03 - - 1.4139309525489807e-01 -4.6627011150121689e-02 - <_> - - 0 -1 1948 -7.0250302087515593e-05 - - 4.3631881475448608e-02 -8.9844681322574615e-02 - <_> - - 0 -1 1949 -2.4793320335447788e-03 - - 1.1531940102577209e-01 -5.4794210940599442e-02 - <_> - - 0 -1 1950 -2.3779749870300293e-02 - - -8.9623087644577026e-01 8.2168419612571597e-04 - <_> - - 0 -1 1951 1.5105960192158818e-03 - - -4.6251200139522552e-02 1.4637500047683716e-01 - <_> - - 0 -1 1952 -1.9929770380258560e-02 - - 1.0345499962568283e-01 -6.9326370954513550e-02 - <_> - - 0 -1 1953 5.6873750872910023e-03 - - 1.5714770182967186e-02 -4.3551269173622131e-01 - <_> - - 0 -1 1954 2.5528179481625557e-02 - - 1.7960410565137863e-02 -1.0271559655666351e-01 - <_> - - 0 -1 1955 6.2439180910587311e-03 - - -5.0889659672975540e-02 1.2102349847555161e-01 - <_> - - 0 -1 1956 -3.8433890789747238e-02 - - -1.1351989954710007e-01 1.1109850369393826e-02 - <_> - - 0 -1 1957 -1.1655789799988270e-02 - - 1.8188430368900299e-01 -3.4386049956083298e-02 - <_> - - 0 -1 1958 1.7019029706716537e-02 - - -2.8822610154747963e-02 1.7922890186309814e-01 - <_> - - 0 -1 1959 -2.1281840279698372e-02 - - 7.9361222684383392e-02 -1.4837169647216797e-01 - <_> - - 0 -1 1960 6.4630597829818726e-02 - - -8.3243446424603462e-03 3.4404671192169189e-01 - <_> - - 0 -1 1961 -2.0165389403700829e-02 - - 9.9575139582157135e-02 -6.4981013536453247e-02 - <_> - - 0 -1 1962 -4.8298938199877739e-03 - - 3.9893500506877899e-02 -4.0078371763229370e-02 - <_> - - 0 -1 1963 -3.3053491264581680e-02 - - 1.1697690188884735e-01 -5.5427171289920807e-02 - <_> - - 0 -1 1964 6.2406919896602631e-02 - - -2.2736979648470879e-02 3.6325179040431976e-02 - <_> - - 0 -1 1965 -6.1196450144052505e-02 - - 1.9369029998779297e-01 -3.5640351474285126e-02 - <_> - - 0 -1 1966 1.0678559541702271e-02 - - 1.6535019502043724e-02 -4.2336410284042358e-01 - <_> - - 0 -1 1967 1.6491359099745750e-02 - - -4.3294098228216171e-02 1.7356230318546295e-01 - <_> - - 0 -1 1968 -5.2192797884345055e-03 - - -4.0950641036033630e-01 2.0815720781683922e-02 - <_> - - 0 -1 1969 3.7556931376457214e-02 - - -3.5021461546421051e-02 1.9875930249691010e-01 - <_> - - 0 -1 1970 1.1630539665929973e-04 - - -6.6101007163524628e-02 2.8246320784091949e-02 - <_> - - 0 -1 1971 -2.9590369667857885e-03 - - -2.3298619687557220e-01 2.6747660711407661e-02 - <_> - - 0 -1 1972 9.7334973514080048e-02 - - 1.6407809453085065e-03 -5.2689087390899658e-01 - <_> - - 0 -1 1973 9.4552114605903625e-03 - - -1.2956419587135315e-01 4.3152049183845520e-02 - <_> - - 0 -1 1974 -1.9573559984564781e-03 - - 9.4022996723651886e-02 -5.0729468464851379e-02 - <_> - - 0 -1 1975 -1.9813209772109985e-02 - - -2.8099170327186584e-01 2.5431409478187561e-02 - <_> - - 0 -1 1976 4.6183229424059391e-03 - - 2.0152140408754349e-02 -2.8583228588104248e-01 - <_> - - 0 -1 1977 -1.3847060035914183e-03 - - 1.2452150136232376e-01 -4.8138331621885300e-02 - <_> - - 0 -1 1978 4.2347438633441925e-02 - - 1.4238060452044010e-02 -1.4341959357261658e-01 - <_> - - 0 -1 1979 -3.7257060408592224e-01 - - -3.1286910176277161e-01 1.8492879346013069e-02 - <_> - - 0 -1 1980 -3.0691500753164291e-02 - - -4.1157820820808411e-01 1.0822709649801254e-02 - <_> - - 0 -1 1981 -1.6395879909396172e-02 - - 1.4505170285701752e-01 -4.0790930390357971e-02 - <_> - - 0 -1 1982 -6.2989019788801670e-03 - - -4.1820481419563293e-01 1.2296830303966999e-02 - <_> - - 0 -1 1983 9.4060532748699188e-02 - - 1.3523289933800697e-02 -3.6032849550247192e-01 - <_> - - 0 -1 1984 -3.2638560980558395e-02 - - 8.1849083304405212e-02 -7.4722953140735626e-02 - <_> - - 0 -1 1985 -1.4613750390708447e-02 - - -2.2184589505195618e-01 2.5819279253482819e-02 - <_> - - 0 -1 1986 -1.7758510075509548e-03 - - 8.7858870625495911e-02 -2.7116740122437477e-02 - <_> - - 0 -1 1987 -3.7843519821763039e-03 - - -2.5046458840370178e-01 2.1436279639601707e-02 - <_> - - 0 -1 1988 -6.0635298723354936e-04 - - -4.7731950879096985e-01 1.1409179866313934e-01 - <_> - - 0 -1 1989 1.0241969721391797e-04 - - -9.3447387218475342e-02 6.7655086517333984e-02 - <_> - - 0 -1 1990 6.5193139016628265e-03 - - -1.4612539671361446e-02 2.0815970003604889e-01 - <_> - - 0 -1 1991 5.3755999542772770e-03 - - -3.8265600800514221e-02 1.9941569864749908e-01 - <_> - - 0 -1 1992 2.5083690416067839e-03 - - -3.9266299456357956e-02 4.1621260344982147e-02 - <_> - - 0 -1 1993 -6.1823232099413872e-03 - - 1.0581050068140030e-01 -5.8252051472663879e-02 - <_> - - 0 -1 1994 -1.7877219943329692e-03 - - 1.5875810384750366e-01 -3.8672041147947311e-02 - <_> - - 0 -1 1995 2.0424230024218559e-03 - - -1.2316930294036865e-01 4.7692388296127319e-02 - <_> - - 0 -1 1996 -7.9678567999508232e-05 - - 5.8007881045341492e-02 -3.7209790199995041e-02 - <_> - - 0 -1 1997 -2.4312110617756844e-03 - - 1.8218949437141418e-01 -3.1718999147415161e-02 - <_> - - 0 -1 1998 9.7082564607262611e-03 - - 2.5093549862504005e-02 -2.1581520140171051e-01 - <_> - - 0 -1 1999 1.8651289865374565e-02 - - -5.6221790611743927e-02 1.0076929628849030e-01 - <_> - - 0 -1 2000 -4.3425198644399643e-02 - - -5.2580821514129639e-01 2.3139629047363997e-03 - <_> - - 0 -1 2001 9.8262643441557884e-03 - - 2.8758440166711807e-02 -2.0458370447158813e-01 - <_> - - 0 -1 2002 -2.5310849305242300e-03 - - 2.2459560632705688e-01 -4.7744251787662506e-02 - <_> - - 0 -1 2003 -9.8680997325573117e-05 - - 5.2503999322652817e-02 -1.1616130173206329e-01 - <_> - - 0 -1 2004 8.7780077592469752e-05 - - -5.7921901345252991e-02 5.2974458783864975e-02 - <_> - - 0 -1 2005 -2.0101759582757950e-03 - - 1.3039940595626831e-01 -4.1645880788564682e-02 - <_> - - 0 -1 2006 -6.9859880022704601e-03 - - -2.5740739703178406e-01 2.2923920303583145e-02 - <_> - - 0 -1 2007 -8.5653923451900482e-03 - - -3.4816130995750427e-01 1.6321830451488495e-02 - <_> - - 0 -1 2008 4.1130301542580128e-03 - - -1.1193159967660904e-02 7.8239932656288147e-02 - <_> - - 0 -1 2009 -2.8649440035223961e-02 - - -2.4921450018882751e-01 2.3253569379448891e-02 - <_> - - 0 -1 2010 -7.1668572723865509e-02 - - 1.8234179913997650e-01 -3.2952211797237396e-02 - <_> - - 0 -1 2011 2.0047359168529510e-02 - - 3.4545011818408966e-02 -1.7593920230865479e-01 - <_> - - 0 -1 2012 9.2730745673179626e-03 - - 2.4312171153724194e-03 -3.6256709694862366e-01 - <_> - - 0 -1 2013 -1.3696910173166543e-04 - - 5.3849659860134125e-02 -1.0452479869127274e-01 - <_> - - 0 -1 2014 -1.6431650146842003e-02 - - 1.0723640024662018e-01 -2.3307560011744499e-02 - <_> - - 0 -1 2015 1.5543770045042038e-02 - - -6.2471259385347366e-02 1.2017949670553207e-01 - <_> - - 0 -1 2016 1.6755719482898712e-01 - - 2.9874350875616074e-03 -2.5671449303627014e-01 - <_> - - 0 -1 2017 -1.0847680270671844e-01 - - 3.7149819731712341e-01 -1.6100300475955009e-02 - <_> - - 0 -1 2018 -3.6692418158054352e-02 - - 1.0603889822959900e-01 -2.8071129694581032e-02 - <_> - - 0 -1 2019 -1.0187889635562897e-01 - - -5.4750579595565796e-01 1.0856229811906815e-02 - <_> - - 0 -1 2020 -2.3083990439772606e-02 - - -3.9017239212989807e-01 2.3198500275611877e-03 - <_> - - 0 -1 2021 1.1738779954612255e-02 - - 1.7849219962954521e-02 -2.9607269167900085e-01 - <_> - - 0 -1 2022 1.1186770163476467e-02 - - 1.7683990299701691e-02 -1.0949549823999405e-01 - <_> - - 0 -1 2023 1.3084909878671169e-02 - - -5.5493030697107315e-02 9.3764066696166992e-02 - <_> - - 0 -1 2024 -4.8294991254806519e-02 - - -1.0963620245456696e-01 6.0481518507003784e-02 - <_> - - 0 -1 2025 -1.2075870297849178e-02 - - 6.8646393716335297e-02 -8.8205531239509583e-02 - <_> - - 0 -1 2026 2.2616419941186905e-02 - - -5.2717179059982300e-02 3.7717801332473755e-01 - <_> - - 0 -1 2027 2.9184659942984581e-02 - - -1.7316710203886032e-02 3.2407519221305847e-01 - <_> - - 0 -1 2028 5.6647129356861115e-02 - - 1.4209809713065624e-02 -4.0311878919601440e-01 - <_> - - 0 -1 2029 -6.0038570314645767e-02 - - 6.3324189186096191e-01 -9.3253394588828087e-03 - <_> - - 0 -1 2030 -2.1041039377450943e-02 - - -7.0778012275695801e-02 1.0951139964163303e-02 - <_> - - 0 -1 2031 1.0698719881474972e-02 - - 3.0739499256014824e-02 -1.8623949587345123e-01 - <_> - - 0 -1 2032 -1.4163380255922675e-03 - - 1.4207880198955536e-01 -5.6051291525363922e-02 - <_> - - 0 -1 2033 1.9057249650359154e-02 - - 1.1568720452487469e-02 -4.1893801093101501e-01 - <_> - - 0 -1 2034 2.4255400523543358e-02 - - -2.7422881126403809e-01 1.5305199660360813e-02 - <_> - - 0 -1 2035 -1.6801659949123859e-03 - - 1.2455579638481140e-01 -4.5174699276685715e-02 - <_> - - 0 -1 2036 -7.1042921626940370e-04 - - 5.2189279347658157e-02 -3.7788871675729752e-02 - <_> - - 0 -1 2037 -9.6175346698146313e-05 - - 8.0373562872409821e-02 -6.5977610647678375e-02 - <_> - - 0 -1 2038 3.0253970623016357e-01 - - -6.4190649427473545e-03 2.8734558820724487e-01 - <_> - - 0 -1 2039 -3.3847650885581970e-01 - - -2.9949620366096497e-01 1.9311109557747841e-02 - <_> - - 0 -1 2040 1.8414769321680069e-02 - - 4.1407728567719460e-03 -3.2009989023208618e-01 - <_> - - 0 -1 2041 2.0269309170544147e-03 - - 3.8851920515298843e-02 -1.3650539517402649e-01 - <_> - - 0 -1 2042 -2.6168529875576496e-03 - - 2.1721449494361877e-01 -4.5792929828166962e-02 - <_> - - 0 -1 2043 -1.4506299339700490e-04 - - 7.7357552945613861e-02 -7.0164747536182404e-02 - <_> - - 0 -1 2044 1.5293279429897666e-03 - - 2.2826919332146645e-02 -6.4625710248947144e-02 - <_> - - 0 -1 2045 9.2465557157993317e-02 - - -3.0449060723185539e-02 2.2376939654350281e-01 - <_> - - 0 -1 2046 4.2030760087072849e-03 - - -6.8453937768936157e-02 6.1928309500217438e-02 - <_> - - 0 -1 2047 8.0572906881570816e-05 - - -5.9534300118684769e-02 8.1452347338199615e-02 - <_> - - 0 -1 2048 1.1286319792270660e-01 - - -1.3413679553195834e-03 5.4813021421432495e-01 - <_> - - 0 -1 2049 -6.4409552142024040e-03 - - -1.8755680322647095e-01 2.6392029598355293e-02 - <_> - - 0 -1 2050 -1.0748989880084991e-02 - - 1.2552680075168610e-01 -4.0465429425239563e-02 - <_> - - 0 -1 2051 -5.3139980882406235e-02 - - 1.2461829930543900e-01 -4.1095100343227386e-02 - <_> - - 0 -1 2052 2.2604359313845634e-02 - - -1.7869070172309875e-02 2.4132210016250610e-01 - <_> - - 0 -1 2053 2.2205261047929525e-03 - - 3.1968820840120316e-02 -1.6952280700206757e-01 - <_> - - 0 -1 2054 -3.9627980440855026e-03 - - 3.8538839668035507e-02 -2.9197089374065399e-02 - <_> - - 0 -1 2055 -1.5152409672737122e-02 - - 1.5154479444026947e-01 -3.3755920827388763e-02 - <_> - - 0 -1 2056 1.2909620068967342e-02 - - 1.9307920709252357e-02 -2.6814758777618408e-01 - <_> - - 0 -1 2057 -5.0301581621170044e-02 - - 2.6842170953750610e-01 -1.9832609221339226e-02 - <_> - - 0 -1 2058 2.3144690692424774e-01 - - -4.4317539781332016e-02 1.1355269700288773e-01 - <_> - - 0 -1 2059 2.4806660413742065e-01 - - -3.6366160959005356e-02 1.5459740161895752e-01 - <_> - - 0 -1 2060 1.0751839727163315e-02 - - -5.6199159473180771e-02 9.1953150928020477e-02 - <_> - - 0 -1 2061 -1.0409940034151077e-01 - - 2.6155480742454529e-01 -2.2073730826377869e-02 - <_> - - 0 -1 2062 3.4987339749932289e-03 - - -3.4594438970088959e-02 5.2544221282005310e-02 - <_> - - 0 -1 2063 -1.8789369612932205e-02 - - 1.4423690736293793e-01 -3.7627071142196655e-02 - <_> - - 0 -1 2064 2.3785369470715523e-02 - - -1.4142000116407871e-02 4.0588378906250000e-02 - <_> - - 0 -1 2065 -5.3594702482223511e-01 - - -3.1141081452369690e-01 1.6834039241075516e-02 - <_> - - 0 -1 2066 -9.9058146588504314e-05 - - 1.1654440313577652e-01 -9.4845108687877655e-02 - <_> - - 0 -1 2067 5.1509789191186428e-03 - - 2.4767279624938965e-02 -2.1172380447387695e-01 - <_> - - 0 -1 2068 -2.4665810167789459e-02 - - 8.9738540351390839e-02 -2.5230530649423599e-02 - <_> - - 0 -1 2069 -1.0207219747826457e-04 - - 7.1243196725845337e-02 -6.9542892277240753e-02 - <_> - - 0 -1 2070 8.9753637439571321e-05 - - -6.4138673245906830e-02 3.4588780254125595e-02 - <_> - - 0 -1 2071 7.5129319156985730e-05 - - -7.0998512208461761e-02 6.9298543035984039e-02 - <_> - - 0 -1 2072 1.2670209631323814e-02 - - 1.9961479119956493e-03 -6.1854892969131470e-01 - <_> - - 0 -1 2073 1.3350560038816184e-04 - - -9.3998126685619354e-02 6.0371071100234985e-02 - <_> - - 0 -1 2074 3.5089589655399323e-03 - - -4.3076660484075546e-02 6.9475613534450531e-02 - <_> - - 0 -1 2075 5.0673130899667740e-03 - - -5.1575150340795517e-02 1.2066970020532608e-01 - <_> - - 0 -1 2076 -4.9438390135765076e-01 - - -3.3594810962677002e-01 3.4810409415513277e-03 - <_> - - 0 -1 2077 3.1801950931549072e-01 - - -1.5378340147435665e-02 3.3919140696525574e-01 - <_> - - 0 -1 2078 -3.5130660980939865e-02 - - 1.8598470091819763e-01 -1.8994120880961418e-02 - <_> - - 0 -1 2079 -1.0103350359713659e-04 - - 5.9129860252141953e-02 -8.6535729467868805e-02 - <_> - - 0 -1 2080 -7.3789812624454498e-02 - - -1.8977540731430054e-01 3.4424799960106611e-03 - <_> - - 0 -1 2081 4.8484738916158676e-02 - - -1.9127920269966125e-02 3.3737879991531372e-01 - <_> - - 0 -1 2082 -3.2950159907341003e-01 - - -2.4671790003776550e-01 8.9904768392443657e-03 - <_> - - 0 -1 2083 5.1932130008935928e-02 - - 2.9886350035667419e-02 -1.7665469646453857e-01 - <_> - - 0 -1 2084 -4.7828998416662216e-02 - - 1.3356339931488037e-01 -2.2263629361987114e-02 - <_> - - 0 -1 2085 6.8820808082818985e-03 - - 2.6210820302367210e-02 -2.0100249350070953e-01 - <_> - - 0 -1 2086 7.0850020274519920e-03 - - 7.2960550896823406e-03 -2.2371199727058411e-01 - <_> - - 0 -1 2087 -2.7695680037140846e-02 - - 5.0937449932098389e-01 -1.0129760019481182e-02 - <_> - - 0 -1 2088 -3.7936570588499308e-03 - - -2.7367559075355530e-01 2.2888140752911568e-02 - <_> - - 0 -1 2089 6.6490046679973602e-02 - - -1.7767919227480888e-02 3.0243128538131714e-01 - <_> - - 0 -1 2090 2.4492349475622177e-02 - - 1.6199620440602303e-02 -1.8059089779853821e-01 - <_> - - 0 -1 2091 3.9224490523338318e-02 - - 6.2305349856615067e-03 -7.2741222381591797e-01 - <_> - - 0 -1 2092 -3.9555127732455730e-03 - - 8.3237506449222565e-02 -5.9971958398818970e-02 - <_> - - 0 -1 2093 -4.0117479860782623e-02 - - -8.9912259578704834e-01 5.7570450007915497e-03 - <_> - - 0 -1 2094 3.7345938384532928e-02 - - -1.0278220288455486e-02 5.5619978904724121e-01 - <_> - - 0 -1 2095 3.5555940121412277e-03 - - 1.6657149419188499e-02 -3.3648529648780823e-01 - <_> - - 0 -1 2096 -1.7665129853412509e-03 - - 1.1981459707021713e-01 -3.9624880999326706e-02 - <_> - - 0 -1 2097 4.8014218918979168e-03 - - 3.4317120909690857e-02 -1.4242500066757202e-01 - <_> - - 0 -1 2098 -4.8842090182006359e-03 - - -2.4056419730186462e-01 5.4772831499576569e-03 - <_> - - 0 -1 2099 1.1965839803451672e-04 - - -6.5111830830574036e-02 9.1186530888080597e-02 - <_> - - 0 -1 2100 6.1463210731744766e-02 - - 2.2536460310220718e-03 -5.8605438470840454e-01 - <_> - - 0 -1 2101 6.9882362149655819e-03 - - -5.1632720977067947e-02 1.0069630295038223e-01 - <_> - - 0 -1 2102 -1.5248640440404415e-02 - - -3.9649030566215515e-01 7.3884390294551849e-03 - <_> - - 0 -1 2103 -9.1895330115221441e-05 - - 6.6976770758628845e-02 -6.9580227136611938e-02 - <_> - - 0 -1 2104 -3.8073170930147171e-02 - - 7.1678817272186279e-02 -5.4218940436840057e-02 - <_> - - 0 -1 2105 6.0213740915060043e-02 - - -1.7918029800057411e-02 2.8277221322059631e-01 - <_> - - 0 -1 2106 -1.1608110507950187e-03 - - -1.3598379492759705e-01 2.9590860009193420e-02 - <_> - - 0 -1 2107 -1.8159779720008373e-03 - - 1.7696669697761536e-01 -3.3906169235706329e-02 - <_> - - 0 -1 2108 5.7966040913015604e-04 - - -3.8249019533395767e-02 2.4134349077939987e-02 - <_> - - 0 -1 2109 -9.4094357336871326e-05 - - 6.8295761942863464e-02 -6.8657957017421722e-02 - <_> - - 0 -1 2110 1.8233150243759155e-02 - - -9.2594744637608528e-03 2.2030550241470337e-01 - <_> - - 0 -1 2111 -2.1909039467573166e-02 - - -4.0802249312400818e-01 1.3047140091657639e-02 - <_> - - 0 -1 2112 -8.4120110841467977e-05 - - 4.6509388834238052e-02 -4.4079691171646118e-02 - <_> - - 0 -1 2113 3.1046951335156336e-05 - - -8.9913800358772278e-02 4.8912350088357925e-02 - <_> - - 0 -1 2114 2.5289219338446856e-03 - - -2.3542739450931549e-02 1.5479239821434021e-01 - <_> - - 0 -1 2115 -1.2940970063209534e-01 - - -3.9730009436607361e-01 1.2606710195541382e-02 - <_> - - 0 -1 2116 1.2858719564974308e-02 - - -3.6222558468580246e-02 1.6217750310897827e-01 - <_> - - 0 -1 2117 1.1377360351616517e-04 - - -1.0770879685878754e-01 4.6765219420194626e-02 - <_> - - 0 -1 2118 -2.9391219839453697e-02 - - 2.2892589867115021e-01 -3.4089948982000351e-02 - <_> - - 0 -1 2119 1.7511859536170959e-01 - - -1.8170779570937157e-02 2.6032659411430359e-01 - <_> - - 0 -1 2120 1.3814390404149890e-03 - - 3.3500280231237411e-02 -1.6772350668907166e-01 - <_> - - 0 -1 2121 -1.0088009730679914e-04 - - 6.9935522973537445e-02 -7.0163749158382416e-02 - <_> - - 0 -1 2122 -5.2363821305334568e-03 - - -3.8714709877967834e-01 3.8488220889121294e-03 - <_> - - 0 -1 2123 1.1944399448111653e-03 - - -4.0175188332796097e-02 1.1868380010128021e-01 - <_> - - 0 -1 2124 -1.0081879736389965e-04 - - 5.3753741085529327e-02 -5.6394770741462708e-02 - <_> - - 0 -1 2125 1.2026460171910003e-04 - - -6.2764182686805725e-02 7.7123142778873444e-02 - <_> - - 0 -1 2126 -1.1322049977025017e-04 - - 5.6235220283269882e-02 -5.4109230637550354e-02 - <_> - - 0 -1 2127 1.1329459812259302e-04 - - -5.6005071848630905e-02 7.9855620861053467e-02 - <_> - - 0 -1 2128 -1.0272819781675935e-04 - - 5.0986729562282562e-02 -4.5671850442886353e-02 - <_> - - 0 -1 2129 -9.1088571934960783e-05 - - 8.5412003099918365e-02 -7.8027188777923584e-02 - <_> - - 0 -1 2130 2.6975329965353012e-03 - - 1.1360989883542061e-02 -1.3084140419960022e-01 - <_> - - 0 -1 2131 1.1563959717750549e-01 - - 1.3141030445694923e-02 -3.4900349378585815e-01 - <_> - - 0 -1 2132 1.1328439723001793e-04 - - -4.6778239309787750e-02 6.6560126841068268e-02 - <_> - - 0 -1 2133 9.8681906820274889e-05 - - -6.3125617802143097e-02 7.3674477636814117e-02 - <_> - - 0 -1 2134 -6.7920819856226444e-03 - - -8.6472243070602417e-02 1.3665749691426754e-02 - <_> - - 0 -1 2135 7.4815307743847370e-03 - - 1.8933869898319244e-02 -2.4700309336185455e-01 - <_> - - 0 -1 2136 -9.6308911452069879e-05 - - 3.9868801832199097e-02 -4.4424280524253845e-02 - <_> - - 0 -1 2137 -1.4094969630241394e-01 - - -8.1448292732238770e-01 5.2730259485542774e-03 - <_> - - 0 -1 2138 6.3983728177845478e-03 - - -2.3488819599151611e-02 6.4670667052268982e-02 - <_> - - 0 -1 2139 -2.5239890441298485e-02 - - 1.6939760744571686e-01 -2.8049439191818237e-02 - <_> - - 0 -1 2140 1.7426529526710510e-01 - - 2.0990138873457909e-03 -5.8285897970199585e-01 - <_> - - 0 -1 2141 1.3174180686473846e-01 - - 1.1987269856035709e-02 -4.5190098881721497e-01 - <_> - - 0 -1 2142 1.1509929754538462e-04 - - -4.8113349825143814e-02 6.8035729229450226e-02 - <_> - - 0 -1 2143 9.7694486612454057e-05 - - -6.5665252506732941e-02 8.1481061875820160e-02 - <_> - - 0 -1 2144 8.2227466627955437e-03 - - -1.1364550143480301e-01 1.9999189302325249e-02 - <_> - - 0 -1 2145 -7.2657060809433460e-03 - - 1.9642250239849091e-01 -2.3443970829248428e-02 - <_> - - 0 -1 2146 -1.3820930384099483e-02 - - -3.5106611251831055e-01 2.1997150033712387e-02 - <_> - - 0 -1 2147 3.1349230557680130e-03 - - 3.4941900521516800e-02 -1.1724609881639481e-01 - <_> - - 0 -1 2148 7.1846559643745422e-02 - - 1.1878719553351402e-02 -3.4860029816627502e-01 - <_> - - 0 -1 2149 -1.4865489676594734e-02 - - -2.0006850361824036e-01 2.1975699812173843e-02 - <_> - - 0 -1 2150 2.2416159510612488e-02 - - -1.4369959942996502e-02 1.2353249639272690e-01 - <_> - - 0 -1 2151 -8.5451323539018631e-03 - - 9.6531502902507782e-02 -5.6036688387393951e-02 - <_> - - 0 -1 2152 -2.2441910579800606e-02 - - -1.7705179750919342e-01 1.5571230091154575e-02 - <_> - - 0 -1 2153 7.0013068616390228e-03 - - -4.0438491851091385e-02 1.0996779799461365e-01 - <_> - - 0 -1 2154 2.2682549431920052e-02 - - 6.6524217836558819e-03 -1.8406519293785095e-01 - <_> - - 0 -1 2155 -2.5074880104511976e-03 - - 5.7935230433940887e-02 -7.8782439231872559e-02 - <_> - - 0 -1 2156 -1.4321220107376575e-02 - - 1.2821240723133087e-01 -2.5092139840126038e-02 - <_> - - 0 -1 2157 -4.5356648042798042e-03 - - 9.1736033558845520e-02 -5.7933621108531952e-02 - <_> - - 0 -1 2158 1.9409060478210449e-02 - - 2.2336810827255249e-02 -1.6051660478115082e-01 - <_> - - 0 -1 2159 -1.8575839931145310e-03 - - 6.7214876413345337e-02 -7.1684822440147400e-02 - <_> - - 0 -1 2160 1.4123350381851196e-02 - - -1.8340790644288063e-02 6.5503582358360291e-02 - <_> - - 0 -1 2161 9.8213102319277823e-05 - - -6.1678610742092133e-02 7.3350921273231506e-02 - <_> - 365 - -1.3049939870834351e+00 - - <_> - - 0 -1 2162 -3.3882360905408859e-02 - - 2.0239050686359406e-01 -2.2946560382843018e-01 - <_> - - 0 -1 2163 5.7477080263197422e-03 - - -5.0940629094839096e-02 1.2186110019683838e-01 - <_> - - 0 -1 2164 -2.9972488991916180e-03 - - 1.0657569766044617e-01 -2.5070008635520935e-01 - <_> - - 0 -1 2165 -4.9375999718904495e-02 - - 2.2355130314826965e-01 -9.3850642442703247e-02 - <_> - - 0 -1 2166 -8.8743809610605240e-03 - - 1.8828199803829193e-01 -1.0731340199708939e-01 - <_> - - 0 -1 2167 -1.5041409991681576e-02 - - 5.3844779729843140e-02 -8.1702902913093567e-02 - <_> - - 0 -1 2168 -1.1803549714386463e-02 - - 2.0604920387268066e-01 -7.4148297309875488e-02 - <_> - - 0 -1 2169 -8.9601287618279457e-03 - - 9.8798438906669617e-02 -1.4819039404392242e-01 - <_> - - 0 -1 2170 -8.7451227009296417e-03 - - 2.2514469921588898e-01 -8.0280996859073639e-02 - <_> - - 0 -1 2171 -1.3039770722389221e-01 - - -1.9512100517749786e-01 2.9707670211791992e-02 - <_> - - 0 -1 2172 9.4073556363582611e-02 - - 4.4669799506664276e-02 -3.4604659676551819e-01 - <_> - - 0 -1 2173 1.1114570312201977e-02 - - 8.7716905400156975e-03 -3.6369881033897400e-01 - <_> - - 0 -1 2174 -2.8564259409904480e-02 - - 1.7795929312705994e-01 -7.0157200098037720e-02 - <_> - - 0 -1 2175 -4.0305700153112411e-02 - - 6.1408281326293945e-02 -1.1470430344343185e-01 - <_> - - 0 -1 2176 -2.6785670779645443e-03 - - 7.0054598152637482e-02 -2.1235230565071106e-01 - <_> - - 0 -1 2177 -1.2476369738578796e-02 - - 2.5417190790176392e-01 -3.6739729344844818e-02 - <_> - - 0 -1 2178 -3.7886248901486397e-03 - - 1.8476079404354095e-01 -6.2649697065353394e-02 - <_> - - 0 -1 2179 4.7300331294536591e-02 - - -1.8394020199775696e-01 2.0217979326844215e-02 - <_> - - 0 -1 2180 -5.1964629441499710e-02 - - -3.3711931109428406e-01 3.0889309942722321e-02 - <_> - - 0 -1 2181 6.8056071177124977e-03 - - -1.5254379808902740e-01 6.3084572553634644e-02 - <_> - - 0 -1 2182 2.8190209995955229e-03 - - 3.1094970181584358e-02 -2.6837760210037231e-01 - <_> - - 0 -1 2183 -6.6912218928337097e-02 - - 3.1126910448074341e-01 -3.2822500914335251e-02 - <_> - - 0 -1 2184 1.7488099634647369e-02 - - -8.8495753705501556e-02 1.4047129452228546e-01 - <_> - - 0 -1 2185 3.4225170966237783e-03 - - 4.2204130440950394e-02 -1.9856970012187958e-01 - <_> - - 0 -1 2186 -7.7762128785252571e-03 - - -3.8108658790588379e-01 2.8606420382857323e-02 - <_> - - 0 -1 2187 -1.2615400366485119e-02 - - 1.6002969443798065e-01 -5.7289630174636841e-02 - <_> - - 0 -1 2188 -4.2172331362962723e-02 - - 2.7694448828697205e-01 -3.3612001687288284e-02 - <_> - - 0 -1 2189 -2.9790079221129417e-02 - - -2.9134678840637207e-01 1.3471970334649086e-02 - <_> - - 0 -1 2190 -3.6842040717601776e-02 - - -2.9361110925674438e-01 2.9519720003008842e-02 - <_> - - 0 -1 2191 -3.3496100455522537e-02 - - -3.8665390014648438e-01 2.2829739376902580e-02 - <_> - - 0 -1 2192 1.6487220302224159e-02 - - 2.7645170688629150e-02 -3.0679538846015930e-01 - <_> - - 0 -1 2193 -7.6681151986122131e-03 - - 1.9639779627323151e-01 -5.6477900594472885e-02 - <_> - - 0 -1 2194 -8.4842611104249954e-03 - - 1.4659149944782257e-01 -5.8792188763618469e-02 - <_> - - 0 -1 2195 -6.6472780890762806e-03 - - 2.4539250880479813e-02 -1.2503169476985931e-01 - <_> - - 0 -1 2196 -4.3351850472390652e-03 - - 4.8890460282564163e-02 -1.8971499800682068e-01 - <_> - - 0 -1 2197 -1.6708990558981895e-02 - - -8.4014803171157837e-02 1.4256189577281475e-02 - <_> - - 0 -1 2198 1.3730719685554504e-02 - - -5.9245068579912186e-02 1.6668020188808441e-01 - <_> - - 0 -1 2199 -4.9747668206691742e-02 - - -5.0222182273864746e-01 -7.9818630183581263e-05 - <_> - - 0 -1 2200 -1.5398520044982433e-02 - - -2.4704429507255554e-01 3.7857480347156525e-02 - <_> - - 0 -1 2201 6.9194408133625984e-03 - - -2.5483440607786179e-02 5.9669129550457001e-02 - <_> - - 0 -1 2202 7.9743033275008202e-03 - - -4.5462001115083694e-02 2.1774409711360931e-01 - <_> - - 0 -1 2203 1.5987269580364227e-02 - - -2.6203149929642677e-02 1.6608029603958130e-01 - <_> - - 0 -1 2204 -1.1483809910714626e-02 - - -4.2757600545883179e-01 1.9634570926427841e-02 - <_> - - 0 -1 2205 -2.0910050719976425e-02 - - -1.9163990020751953e-01 1.8767410889267921e-02 - <_> - - 0 -1 2206 -9.1570820659399033e-03 - - -3.3912599086761475e-01 2.2093880921602249e-02 - <_> - - 0 -1 2207 -4.4602658599615097e-02 - - 1.1534290015697479e-01 -7.1533598005771637e-02 - <_> - - 0 -1 2208 -3.3839430660009384e-02 - - 9.7139656543731689e-02 -7.8735627233982086e-02 - <_> - - 0 -1 2209 2.2553609684109688e-02 - - 8.4229987114667892e-03 -1.5705260634422302e-01 - <_> - - 0 -1 2210 -2.9585180804133415e-02 - - 1.9586630165576935e-01 -4.2920190840959549e-02 - <_> - - 0 -1 2211 -4.5955018140375614e-03 - - 1.2022340297698975e-01 -8.3882987499237061e-02 - <_> - - 0 -1 2212 -9.5542743802070618e-03 - - -3.1514930725097656e-01 2.1119819954037666e-02 - <_> - - 0 -1 2213 -8.0368801951408386e-02 - - 1.3920859992504120e-01 -2.0802559331059456e-02 - <_> - - 0 -1 2214 -7.9689081758260727e-03 - - 1.2371149659156799e-01 -5.5208720266819000e-02 - <_> - - 0 -1 2215 -6.4949761144816875e-03 - - 1.7598539590835571e-01 -4.9857739359140396e-02 - <_> - - 0 -1 2216 1.5145390294492245e-02 - - -2.6866549253463745e-01 2.7768999338150024e-02 - <_> - - 0 -1 2217 -1.0654450207948685e-01 - - 3.8894391059875488e-01 -2.1989410743117332e-02 - <_> - - 0 -1 2218 1.8047619611024857e-02 - - -4.7987051308155060e-02 1.8138599395751953e-01 - <_> - - 0 -1 2219 -6.9957501254975796e-03 - - 1.0746960341930389e-01 -2.2650029510259628e-02 - <_> - - 0 -1 2220 -1.0456600284669548e-04 - - 5.8700188994407654e-02 -1.2299560010433197e-01 - <_> - - 0 -1 2221 9.3732677400112152e-02 - - 1.5036529861390591e-02 -2.1524760127067566e-01 - <_> - - 0 -1 2222 6.5442179329693317e-03 - - 3.6178309470415115e-02 -1.9664210081100464e-01 - <_> - - 0 -1 2223 6.9820377975702286e-03 - - -2.7531590312719345e-02 9.9207893013954163e-02 - <_> - - 0 -1 2224 -3.6357950884848833e-03 - - 1.2325549870729446e-01 -5.4068911820650101e-02 - <_> - - 0 -1 2225 -1.7133219167590141e-02 - - -1.5714760124683380e-01 1.1257690377533436e-02 - <_> - - 0 -1 2226 6.4856321550905704e-03 - - 3.5732869058847427e-02 -1.9302600622177124e-01 - <_> - - 0 -1 2227 1.5455770306289196e-02 - - 7.3288627900183201e-03 -3.3833038806915283e-01 - <_> - - 0 -1 2228 -1.5808869153261185e-02 - - -2.2456270456314087e-01 2.9451670125126839e-02 - <_> - - 0 -1 2229 -3.2471489161252975e-02 - - -5.5803108215332031e-01 2.8975890018045902e-03 - <_> - - 0 -1 2230 -3.9141788147389889e-03 - - 1.4021359384059906e-01 -5.0554420799016953e-02 - <_> - - 0 -1 2231 -1.0944330133497715e-02 - - -3.5154539346694946e-01 1.8400410190224648e-02 - <_> - - 0 -1 2232 1.0616300278343260e-04 - - -8.3685651421546936e-02 7.6890029013156891e-02 - <_> - - 0 -1 2233 6.1605898663401604e-03 - - 2.9453009366989136e-02 -1.9558599591255188e-01 - <_> - - 0 -1 2234 8.2721293438225985e-05 - - -8.0076627433300018e-02 8.3749473094940186e-02 - <_> - - 0 -1 2235 -8.6001930758357048e-03 - - 1.0143149644136429e-01 -4.6038668602705002e-02 - <_> - - 0 -1 2236 -2.0330580882728100e-03 - - 9.0525522828102112e-02 -8.3805181086063385e-02 - <_> - - 0 -1 2237 7.9374670982360840e-02 - - 1.8412400037050247e-02 -1.2558990716934204e-01 - <_> - - 0 -1 2238 -1.1706469580531120e-02 - - -3.4564140439033508e-01 1.7899520695209503e-02 - <_> - - 0 -1 2239 7.5991638004779816e-02 - - -1.7106909304857254e-02 6.7980378866195679e-02 - <_> - - 0 -1 2240 -5.0547100603580475e-02 - - 8.2406863570213318e-02 -9.9478118121623993e-02 - <_> - - 0 -1 2241 -3.1586930155754089e-02 - - -2.5311431288719177e-01 2.1670460700988770e-02 - <_> - - 0 -1 2242 -3.8616750389337540e-02 - - -2.5136458873748779e-01 3.0640950426459312e-02 - <_> - - 0 -1 2243 -2.8309430927038193e-03 - - 5.8621428906917572e-02 -3.4674659371376038e-02 - <_> - - 0 -1 2244 3.4507629461586475e-03 - - -5.9696689248085022e-02 1.4282059669494629e-01 - <_> - - 0 -1 2245 -6.4924471080303192e-03 - - 1.6060300171375275e-01 -3.9581570774316788e-02 - <_> - - 0 -1 2246 -8.9043304324150085e-03 - - -2.9341179132461548e-01 2.0171549171209335e-02 - <_> - - 0 -1 2247 -2.7951620519161224e-02 - - 7.2093032300472260e-02 -8.1142388284206390e-02 - <_> - - 0 -1 2248 7.9951416410040110e-05 - - -6.7746952176094055e-02 9.3461208045482635e-02 - <_> - - 0 -1 2249 1.1102859862148762e-02 - - -2.8035409748554230e-02 2.2704620659351349e-01 - <_> - - 0 -1 2250 1.3552259653806686e-02 - - -2.1036660298705101e-02 2.6905548572540283e-01 - <_> - - 0 -1 2251 1.4126170426607132e-02 - - 1.4326309785246849e-02 -2.2234620153903961e-01 - <_> - - 0 -1 2252 4.2146299965679646e-03 - - 3.7077061831951141e-02 -1.5360489487648010e-01 - <_> - - 0 -1 2253 -2.0096069201827049e-03 - - 1.0902349650859833e-01 -8.5512273013591766e-02 - <_> - - 0 -1 2254 1.8302820622920990e-02 - - -5.6824129074811935e-02 1.0522840172052383e-01 - <_> - - 0 -1 2255 6.5802307799458504e-03 - - 3.3959459513425827e-02 -7.0342078804969788e-02 - <_> - - 0 -1 2256 -3.5527150612324476e-03 - - 9.2438496649265289e-02 -6.8014897406101227e-02 - <_> - - 0 -1 2257 1.8833009526133537e-02 - - 1.6142280772328377e-02 -7.9908937215805054e-02 - <_> - - 0 -1 2258 6.4154029823839664e-03 - - 2.4767400696873665e-02 -2.4944229423999786e-01 - <_> - - 0 -1 2259 4.6186340041458607e-03 - - 2.4536220356822014e-02 -3.1335648894309998e-01 - <_> - - 0 -1 2260 1.1884859949350357e-01 - - 2.0980369299650192e-02 -2.5818759202957153e-01 - <_> - - 0 -1 2261 1.0991309682140127e-04 - - -3.7180811166763306e-02 4.6653941273689270e-02 - <_> - - 0 -1 2262 6.1736410856246948e-01 - - -2.1467130631208420e-02 3.1791171431541443e-01 - <_> - - 0 -1 2263 3.8408428430557251e-02 - - -3.5127598792314529e-02 1.8549050390720367e-01 - <_> - - 0 -1 2264 5.3536839783191681e-02 - - -4.1895449161529541e-02 1.3988719880580902e-01 - <_> - - 0 -1 2265 8.8034123182296753e-02 - - -6.8377859890460968e-02 4.1693281382322311e-02 - <_> - - 0 -1 2266 -1.2001659721136093e-02 - - 6.1066821217536926e-02 -1.0328210145235062e-01 - <_> - - 0 -1 2267 -4.8769591376185417e-03 - - 1.2130960077047348e-01 -4.3480679392814636e-02 - <_> - - 0 -1 2268 -2.9313350096344948e-03 - - 9.8697140812873840e-02 -5.4528530687093735e-02 - <_> - - 0 -1 2269 8.7714530527591705e-03 - - 1.5202780254185200e-02 -2.7232658863067627e-01 - <_> - - 0 -1 2270 2.5236629880964756e-03 - - -3.5202231258153915e-02 1.5970990061759949e-01 - <_> - - 0 -1 2271 -7.2554531507194042e-03 - - -3.3298349380493164e-01 1.7689129337668419e-02 - <_> - - 0 -1 2272 -5.7377000339329243e-03 - - -3.4500560164451599e-01 1.3545690104365349e-02 - <_> - - 0 -1 2273 -1.7369260312989354e-03 - - 8.0387458205223083e-02 -2.9330410063266754e-02 - <_> - - 0 -1 2274 7.4976221658289433e-03 - - -2.9240680858492851e-02 1.8164479732513428e-01 - <_> - - 0 -1 2275 2.6569119654595852e-03 - - -2.1224660798907280e-02 3.1799409538507462e-02 - <_> - - 0 -1 2276 1.0299009736627340e-03 - - -1.2613479793071747e-01 4.8335380852222443e-02 - <_> - - 0 -1 2277 7.3244851082563400e-03 - - 1.1200889945030212e-02 -4.4718209654092789e-02 - <_> - - 0 -1 2278 -8.6582284420728683e-03 - - 1.4065790176391602e-01 -4.3052151799201965e-02 - <_> - - 0 -1 2279 1.1580599675653502e-04 - - -7.2923496365547180e-02 6.7385733127593994e-02 - <_> - - 0 -1 2280 -1.4025709824636579e-03 - - -1.8745669722557068e-01 3.2026190310716629e-02 - <_> - - 0 -1 2281 3.4833580255508423e-02 - - 1.2874660082161427e-02 -2.5058078765869141e-01 - <_> - - 0 -1 2282 -4.0964070707559586e-02 - - -3.3095490932464600e-01 1.5322729945182800e-02 - <_> - - 0 -1 2283 -9.9130235612392426e-03 - - 5.0588980317115784e-02 -1.4300700277090073e-02 - <_> - - 0 -1 2284 3.1872559338808060e-03 - - -3.1206250190734863e-02 1.8519160151481628e-01 - <_> - - 0 -1 2285 1.2019430141663179e-04 - - -4.5336149632930756e-02 4.4496789574623108e-02 - <_> - - 0 -1 2286 7.7739008702337742e-03 - - 3.1605679541826248e-02 -1.7864149808883667e-01 - <_> - - 0 -1 2287 -2.1307980641722679e-03 - - -3.1884080171585083e-01 4.4108141213655472e-02 - <_> - - 0 -1 2288 1.4493019552901387e-03 - - -5.2389718592166901e-02 1.0424470156431198e-01 - <_> - - 0 -1 2289 -1.8452210724353790e-01 - - 1.7595799267292023e-01 -3.3386971801519394e-02 - <_> - - 0 -1 2290 -1.1728370009222999e-04 - - 6.0376390814781189e-02 -8.8284641504287720e-02 - <_> - - 0 -1 2291 -1.9901100546121597e-02 - - 2.2972399368882179e-02 -3.1790241599082947e-02 - <_> - - 0 -1 2292 6.2372140586376190e-02 - - -2.2591490298509598e-02 2.8110951185226440e-01 - <_> - - 0 -1 2293 -3.3517589326947927e-03 - - 6.8909741938114166e-02 -2.8704280033707619e-02 - <_> - - 0 -1 2294 -7.4083356594201177e-05 - - 8.3308637142181396e-02 -5.9445090591907501e-02 - <_> - - 0 -1 2295 -1.2365039438009262e-03 - - 7.1449361741542816e-02 -4.1921019554138184e-02 - <_> - - 0 -1 2296 -1.5120030147954822e-03 - - 8.8795676827430725e-02 -5.9792499989271164e-02 - <_> - - 0 -1 2297 7.4081351049244404e-03 - - 8.0022467300295830e-03 -3.2635369896888733e-01 - <_> - - 0 -1 2298 -1.2917170301079750e-02 - - -3.4276279807090759e-01 1.3512610457837582e-02 - <_> - - 0 -1 2299 5.6006559170782566e-03 - - -3.8777850568294525e-02 1.1089079827070236e-01 - <_> - - 0 -1 2300 2.9303599148988724e-02 - - -2.5236869230866432e-02 2.0500029623508453e-01 - <_> - - 0 -1 2301 -3.3195200376212597e-04 - - 6.2742240726947784e-02 -9.6477419137954712e-02 - <_> - - 0 -1 2302 -4.3038749136030674e-03 - - 1.1313679814338684e-01 -4.6373449265956879e-02 - <_> - - 0 -1 2303 -1.7296209931373596e-02 - - -3.8349351286888123e-01 1.0016939602792263e-02 - <_> - - 0 -1 2304 -2.2030149400234222e-01 - - -3.5790899395942688e-01 1.3102149590849876e-02 - <_> - - 0 -1 2305 1.7911270260810852e-02 - - 4.1835359297692776e-03 -2.5600808858871460e-01 - <_> - - 0 -1 2306 -1.1390260420739651e-02 - - -2.6581099629402161e-01 1.9057299941778183e-02 - <_> - - 0 -1 2307 -2.8078479692339897e-02 - - 1.6174699366092682e-01 -3.2481499016284943e-02 - <_> - - 0 -1 2308 -1.9583579152822495e-02 - - -2.6070371270179749e-01 2.2547200322151184e-02 - <_> - - 0 -1 2309 7.3393443017266691e-05 - - -5.4666221141815186e-02 4.0767289698123932e-02 - <_> - - 0 -1 2310 -4.6995278447866440e-02 - - -4.4603431224822998e-01 1.1102690361440182e-02 - <_> - - 0 -1 2311 -1.1355779861332849e-04 - - 3.3556360751390457e-02 -2.4448079988360405e-02 - <_> - - 0 -1 2312 4.7428491525352001e-03 - - -3.3876050263643265e-02 1.4432670176029205e-01 - <_> - - 0 -1 2313 6.0940310359001160e-03 - - -2.6939800009131432e-02 1.8384850025177002e-01 - <_> - - 0 -1 2314 -7.4838818982243538e-03 - - -2.9266190528869629e-01 1.5399949625134468e-02 - <_> - - 0 -1 2315 7.8164823353290558e-03 - - 9.0713957324624062e-03 -3.5414189100265503e-01 - <_> - - 0 -1 2316 -5.1856059581041336e-03 - - 1.4908669888973236e-01 -3.8270790129899979e-02 - <_> - - 0 -1 2317 -4.8475480079650879e-01 - - -5.6529688835144043e-01 9.0100103989243507e-03 - <_> - - 0 -1 2318 -6.0149569064378738e-02 - - -6.6451191902160645e-01 5.7822549715638161e-03 - <_> - - 0 -1 2319 -3.2175570726394653e-02 - - -1.6214740276336670e-01 2.4788419250398874e-03 - <_> - - 0 -1 2320 6.7587220109999180e-03 - - -3.7111308425664902e-02 1.3146670162677765e-01 - <_> - - 0 -1 2321 1.2848580256104469e-02 - - 8.4516126662492752e-03 -5.2762651443481445e-01 - <_> - - 0 -1 2322 5.1822371780872345e-02 - - -2.2025400772690773e-02 2.2004729509353638e-01 - <_> - - 0 -1 2323 4.3869521468877792e-02 - - 4.6415599063038826e-03 -2.9684591293334961e-01 - <_> - - 0 -1 2324 -2.8215179219841957e-02 - - -2.3835469782352448e-01 2.0944530144333839e-02 - <_> - - 0 -1 2325 1.1462989496067166e-03 - - -3.2323900610208511e-02 9.8447293043136597e-02 - <_> - - 0 -1 2326 -9.1807021817658097e-05 - - 4.8391621559858322e-02 -1.0352600365877151e-01 - <_> - - 0 -1 2327 -3.1447969377040863e-03 - - 7.9412266612052917e-02 -3.7316069006919861e-02 - <_> - - 0 -1 2328 -1.2354710139334202e-02 - - -4.4685348868370056e-01 1.0231420397758484e-02 - <_> - - 0 -1 2329 7.3198013007640839e-02 - - -2.3037230130285025e-03 4.2292898893356323e-01 - <_> - - 0 -1 2330 2.0700140297412872e-01 - - 6.5427711233496666e-03 -6.8654668331146240e-01 - <_> - - 0 -1 2331 -2.8876150026917458e-02 - - -3.4709088504314423e-02 2.2856339812278748e-02 - <_> - - 0 -1 2332 1.1793940328061581e-02 - - -3.7016589194536209e-02 1.2962980568408966e-01 - <_> - - 0 -1 2333 -8.4449667483568192e-03 - - 1.3182109594345093e-01 -4.6101968735456467e-02 - <_> - - 0 -1 2334 -1.7379879718646407e-03 - - -1.9482420384883881e-01 2.5667199864983559e-02 - <_> - - 0 -1 2335 -1.3288700021803379e-02 - - -4.4804200530052185e-02 1.5710260719060898e-02 - <_> - - 0 -1 2336 9.5334917306900024e-02 - - 1.0352609679102898e-02 -4.4375640153884888e-01 - <_> - - 0 -1 2337 1.1624330363702029e-04 - - -5.2062071859836578e-02 4.3834179639816284e-02 - <_> - - 0 -1 2338 -1.0214909707428887e-04 - - 8.4646992385387421e-02 -5.3199101239442825e-02 - <_> - - 0 -1 2339 3.3260729163885117e-02 - - 1.0557370260357857e-02 -1.7795279622077942e-01 - <_> - - 0 -1 2340 1.0356389975640923e-04 - - -6.9730758666992188e-02 5.8773018419742584e-02 - <_> - - 0 -1 2341 -8.6508220434188843e-01 - - 5.2564299106597900e-01 -7.9431589692831039e-03 - <_> - - 0 -1 2342 5.5448818206787109e-01 - - -1.1862279847264290e-02 3.3969870209693909e-01 - <_> - - 0 -1 2343 -1.2398809939622879e-01 - - -3.0059650540351868e-01 1.0551629588007927e-02 - <_> - - 0 -1 2344 -1.8067149445414543e-02 - - 4.8538219183683395e-02 -9.4906397163867950e-02 - <_> - - 0 -1 2345 1.7284390330314636e-01 - - 2.9056880157440901e-03 -2.6223310828208923e-01 - <_> - - 0 -1 2346 -5.6298580602742732e-05 - - 3.5491660237312317e-02 -1.1942940205335617e-01 - <_> - - 0 -1 2347 4.3891761451959610e-02 - - -5.7431817986071110e-03 1.2878720462322235e-01 - <_> - - 0 -1 2348 1.1601000092923641e-02 - - -2.7580419555306435e-02 1.6389440000057220e-01 - <_> - - 0 -1 2349 1.0969590395689011e-02 - - -2.4061219766736031e-02 6.6235110163688660e-02 - <_> - - 0 -1 2350 -6.5495766699314117e-02 - - 1.4799270033836365e-01 -3.7685319781303406e-02 - <_> - - 0 -1 2351 -4.1891798377037048e-02 - - -7.0353198051452637e-01 1.4793720329180360e-03 - <_> - - 0 -1 2352 1.0460639896336943e-04 - - -6.8750366568565369e-02 6.8998672068119049e-02 - <_> - - 0 -1 2353 3.0087800696492195e-02 - - -2.4997230619192123e-02 1.6010420024394989e-01 - <_> - - 0 -1 2354 -3.5395029187202454e-01 - - -2.6776018738746643e-01 1.9514789804816246e-02 - <_> - - 0 -1 2355 -1.7325379885733128e-03 - - 9.0407662093639374e-02 -3.3809348940849304e-02 - <_> - - 0 -1 2356 -9.1078240075148642e-05 - - 6.6738963127136230e-02 -6.4228832721710205e-02 - <_> - - 0 -1 2357 1.0164060222450644e-04 - - -5.5076360702514648e-02 8.6006529629230499e-02 - <_> - - 0 -1 2358 1.0091240255860612e-04 - - -6.6988758742809296e-02 9.0417332947254181e-02 - <_> - - 0 -1 2359 1.1433399777160957e-04 - - -7.9386427998542786e-02 3.3360429108142853e-02 - <_> - - 0 -1 2360 -9.1078240075148642e-05 - - 6.8556882441043854e-02 -6.7940391600131989e-02 - <_> - - 0 -1 2361 -3.9200659841299057e-02 - - 2.6595410704612732e-01 -1.1581010185182095e-02 - <_> - - 0 -1 2362 -4.0849689394235611e-02 - - 2.3699620366096497e-01 -1.8228670582175255e-02 - <_> - - 0 -1 2363 1.5409139450639486e-03 - - 3.2854549586772919e-02 -1.3879729807376862e-01 - <_> - - 0 -1 2364 2.2081700153648853e-03 - - 2.8462519869208336e-02 -1.5396310389041901e-01 - <_> - - 0 -1 2365 2.5576550979167223e-03 - - -3.1621441245079041e-02 1.3564549386501312e-01 - <_> - - 0 -1 2366 -1.0356900282204151e-02 - - -2.8086408972740173e-01 1.6379009932279587e-02 - <_> - - 0 -1 2367 2.6948269456624985e-02 - - -7.6934508979320526e-03 1.3261960446834564e-01 - <_> - - 0 -1 2368 -9.3930400907993317e-03 - - 7.1190893650054932e-02 -6.2922917306423187e-02 - <_> - - 0 -1 2369 3.2943800091743469e-02 - - -3.3817298710346222e-02 8.7523058056831360e-02 - <_> - - 0 -1 2370 8.8589258491992950e-02 - - 1.5241189859807491e-02 -3.6706811189651489e-01 - <_> - - 0 -1 2371 -8.0594501923769712e-05 - - 5.0675150007009506e-02 -1.8724879249930382e-02 - <_> - - 0 -1 2372 7.6212047133594751e-05 - - -1.1710049957036972e-01 4.6428650617599487e-02 - <_> - - 0 -1 2373 2.9634490609169006e-02 - - 6.1184200458228588e-03 -8.1311158835887909e-02 - <_> - - 0 -1 2374 4.9311809241771698e-02 - - 1.5268309973180294e-02 -2.9420408606529236e-01 - <_> - - 0 -1 2375 5.4893750697374344e-02 - - -1.0509899817407131e-02 1.4876569807529449e-01 - <_> - - 0 -1 2376 -2.2886209189891815e-02 - - 1.1702159792184830e-01 -4.0515769273042679e-02 - <_> - - 0 -1 2377 5.3369901143014431e-03 - - 2.2458840161561966e-02 -4.7646570950746536e-02 - <_> - - 0 -1 2378 -4.3291270732879639e-02 - - 4.2726710438728333e-01 -1.0213980451226234e-02 - <_> - - 0 -1 2379 7.1153361350297928e-03 - - -9.3713469803333282e-02 1.4859509654343128e-02 - <_> - - 0 -1 2380 1.9230809994041920e-03 - - -2.8736030682921410e-02 1.5192930400371552e-01 - <_> - - 0 -1 2381 -4.8766369000077248e-03 - - -1.2188100069761276e-01 3.5688500851392746e-02 - <_> - - 0 -1 2382 8.1249003414995968e-05 - - -6.9741703569889069e-02 7.9007953405380249e-02 - <_> - - 0 -1 2383 -3.0618819873780012e-03 - - -2.4777479469776154e-01 1.6769090667366982e-02 - <_> - - 0 -1 2384 -1.0020760237239301e-04 - - 8.9383192360401154e-02 -7.5246021151542664e-02 - <_> - - 0 -1 2385 -3.5711210221052170e-03 - - 3.2868590205907822e-02 -2.6319630444049835e-02 - <_> - - 0 -1 2386 4.4158261269330978e-02 - - 9.1490726917982101e-03 -4.9472698569297791e-01 - <_> - - 0 -1 2387 -1.2411230243742466e-02 - - -7.9080909490585327e-01 1.2701259693130851e-03 - <_> - - 0 -1 2388 3.1543849036097527e-03 - - -2.6582410559058189e-02 1.6744150221347809e-01 - <_> - - 0 -1 2389 -1.0832149535417557e-02 - - -1.4656180143356323e-01 9.8041100427508354e-03 - <_> - - 0 -1 2390 -9.0239293058402836e-05 - - 8.0845810472965240e-02 -5.8461051434278488e-02 - <_> - - 0 -1 2391 -7.7505349181592464e-03 - - -6.1667799949645996e-02 1.6547329723834991e-02 - <_> - - 0 -1 2392 1.4565950259566307e-02 - - 1.5213799662888050e-02 -2.6753041148185730e-01 - <_> - - 0 -1 2393 -8.4792282432317734e-03 - - 3.0588289722800255e-02 -4.4890258461236954e-02 - <_> - - 0 -1 2394 2.5341829750686884e-03 - - -2.3893959820270538e-02 1.7228589951992035e-01 - <_> - - 0 -1 2395 -5.7597858831286430e-03 - - 1.3594760000705719e-01 -1.5244400128722191e-02 - <_> - - 0 -1 2396 -1.4607460470870137e-03 - - -1.1625000089406967e-01 5.1985260099172592e-02 - <_> - - 0 -1 2397 2.8517120517790318e-03 - - -1.7940439283847809e-02 6.0237661004066467e-02 - <_> - - 0 -1 2398 8.9769951999187469e-02 - - -9.4037447124719620e-03 4.4200161099433899e-01 - <_> - - 0 -1 2399 1.8908040598034859e-02 - - 4.9003809690475464e-03 -2.7509149909019470e-01 - <_> - - 0 -1 2400 -8.5895955562591553e-03 - - -1.7463889718055725e-01 2.4978419765830040e-02 - <_> - - 0 -1 2401 -1.4033289626240730e-02 - - 1.1389180272817612e-01 -2.2636910900473595e-02 - <_> - - 0 -1 2402 -1.2071140110492706e-02 - - 1.0377719998359680e-01 -4.1957050561904907e-02 - <_> - - 0 -1 2403 7.8776637092232704e-03 - - 4.4563128612935543e-03 -2.5385779142379761e-01 - <_> - - 0 -1 2404 9.7573982202447951e-05 - - -7.1789413690567017e-02 6.4117558300495148e-02 - <_> - - 0 -1 2405 1.1756990104913712e-01 - - -1.0103950276970863e-02 2.8671211004257202e-01 - <_> - - 0 -1 2406 -1.7693729698657990e-01 - - -3.2672521471977234e-01 1.3368690386414528e-02 - <_> - - 0 -1 2407 6.9278101436793804e-03 - - -2.6613669469952583e-02 1.6719299554824829e-01 - <_> - - 0 -1 2408 8.2964971661567688e-03 - - -5.0678610801696777e-02 1.0666640102863312e-01 - <_> - - 0 -1 2409 -1.7562190070748329e-02 - - -2.2206050157546997e-01 1.2752059847116470e-02 - <_> - - 0 -1 2410 7.2527178563177586e-03 - - 2.5016179308295250e-02 -1.8147459626197815e-01 - <_> - - 0 -1 2411 -8.3280522376298904e-03 - - 1.0262949764728546e-01 -3.1841918826103210e-02 - <_> - - 0 -1 2412 8.1564113497734070e-03 - - -2.6094259694218636e-02 1.9404900074005127e-01 - <_> - - 0 -1 2413 9.6458224579691887e-03 - - -1.7504140734672546e-02 1.8571110069751740e-01 - <_> - - 0 -1 2414 -2.6147949974983931e-03 - - 5.7285130023956299e-02 -8.5206836462020874e-02 - <_> - - 0 -1 2415 -9.0203131549060345e-05 - - 4.4843290001153946e-02 -5.5859129875898361e-02 - <_> - - 0 -1 2416 -2.2970889508724213e-01 - - 4.1338160634040833e-01 -1.0467030107975006e-02 - <_> - - 0 -1 2417 -9.3038368504494429e-05 - - 6.5610900521278381e-02 -4.6013180166482925e-02 - <_> - - 0 -1 2418 3.2218669075518847e-03 - - 1.4394659548997879e-02 -2.8860649466514587e-01 - <_> - - 0 -1 2419 -5.4404459893703461e-02 - - 3.4964048862457275e-01 -4.6711899340152740e-03 - <_> - - 0 -1 2420 8.3852171897888184e-02 - - 9.7965141758322716e-03 -4.5140910148620605e-01 - <_> - - 0 -1 2421 -7.3948511853814125e-03 - - -1.6057239472866058e-01 2.0318130031228065e-02 - <_> - - 0 -1 2422 2.6246640086174011e-01 - - -9.4673177227377892e-03 4.4844120740890503e-01 - <_> - - 0 -1 2423 -1.0621179826557636e-03 - - -1.1759970337152481e-01 3.7068329751491547e-02 - <_> - - 0 -1 2424 3.9175958372652531e-03 - - -2.8878200799226761e-02 1.5599119663238525e-01 - <_> - - 0 -1 2425 2.3374879732728004e-02 - - -3.0305700376629829e-02 4.9608588218688965e-02 - <_> - - 0 -1 2426 7.0046126842498779e-02 - - 3.0271939933300018e-02 -1.6876719892024994e-01 - <_> - - 0 -1 2427 -1.4835690148174763e-02 - - 3.7178281694650650e-02 -5.0572458654642105e-02 - <_> - - 0 -1 2428 -6.1111040413379669e-02 - - 1.4954359829425812e-01 -3.3388800919055939e-02 - <_> - - 0 -1 2429 1.2960570165887475e-03 - - 7.7619366347789764e-02 -3.0182060599327087e-01 - <_> - - 0 -1 2430 -9.6840893093030900e-05 - - 7.6822131872177124e-02 -6.0163989663124084e-02 - <_> - - 0 -1 2431 -1.2722789542749524e-03 - - -3.2610461115837097e-01 7.6267711818218231e-02 - <_> - - 0 -1 2432 2.7745799161493778e-03 - - -3.7424080073833466e-02 1.5734979510307312e-01 - <_> - - 0 -1 2433 -1.3858770020306110e-02 - - 1.0158479958772659e-01 -1.1126480065286160e-02 - <_> - - 0 -1 2434 -7.4661108665168285e-03 - - 1.5804830193519592e-01 -2.9558379203081131e-02 - <_> - - 0 -1 2435 -6.5499739721417427e-03 - - 5.3577870130538940e-02 -1.8859000876545906e-02 - <_> - - 0 -1 2436 1.7137609422206879e-02 - - 2.8566429391503334e-02 -1.6672840714454651e-01 - <_> - - 0 -1 2437 -1.5429790318012238e-01 - - -5.3008288145065308e-01 4.6510128304362297e-03 - <_> - - 0 -1 2438 1.0610629804432392e-02 - - -1.4005419798195362e-02 3.5358279943466187e-01 - <_> - - 0 -1 2439 -1.2487419694662094e-01 - - -9.2341862618923187e-02 7.7773127704858780e-03 - <_> - - 0 -1 2440 2.4952359497547150e-02 - - -1.9140990450978279e-02 2.2024959325790405e-01 - <_> - - 0 -1 2441 -1.0323809832334518e-01 - - 4.6602148562669754e-02 -8.1108592450618744e-02 - <_> - - 0 -1 2442 -4.5149028301239014e-03 - - 8.9722327888011932e-02 -5.1392719149589539e-02 - <_> - - 0 -1 2443 -1.1647379724308848e-03 - - 6.6680416464805603e-02 -2.8577109798789024e-02 - <_> - - 0 -1 2444 -2.0229439437389374e-01 - - -1.4662939310073853e-01 3.2757651060819626e-02 - <_> - - 0 -1 2445 6.6811027936637402e-03 - - -2.2777039557695389e-02 6.4059197902679443e-02 - <_> - - 0 -1 2446 1.3379199663177133e-03 - - -3.8998249918222427e-02 1.1498399823904037e-01 - <_> - - 0 -1 2447 1.1130159720778465e-02 - - 1.1183519847691059e-02 -1.2708090245723724e-01 - <_> - - 0 -1 2448 -1.6420660540461540e-02 - - -4.4360479712486267e-01 8.8887596502900124e-03 - <_> - - 0 -1 2449 1.2306580320000648e-02 - - 1.6212840564548969e-03 -6.9290822744369507e-01 - <_> - - 0 -1 2450 -1.5455400571227074e-03 - - 1.0736440122127533e-01 -3.8405489176511765e-02 - <_> - - 0 -1 2451 1.2311200052499771e-01 - - -4.0762219578027725e-03 2.4662579596042633e-01 - <_> - - 0 -1 2452 -5.8553021401166916e-02 - - -1.7537310719490051e-01 2.4212690070271492e-02 - <_> - - 0 -1 2453 4.9732271581888199e-03 - - 8.6330175399780273e-03 -3.4557878971099854e-01 - <_> - - 0 -1 2454 1.0527500126045197e-04 - - -6.1904430389404297e-02 7.3099963366985321e-02 - <_> - - 0 -1 2455 3.3458888530731201e-02 - - -5.6895300745964050e-02 1.1233749985694885e-01 - <_> - - 0 -1 2456 1.0234630107879639e-01 - - 1.7183110117912292e-02 -2.6306340098381042e-01 - <_> - - 0 -1 2457 -1.1073449626564980e-02 - - -1.2017820030450821e-01 1.5160970389842987e-02 - <_> - - 0 -1 2458 -9.2945203185081482e-02 - - -3.8352051377296448e-01 1.1504840105772018e-02 - <_> - - 0 -1 2459 9.8843947052955627e-03 - - 9.4814822077751160e-03 -7.9045042395591736e-02 - <_> - - 0 -1 2460 8.5867056623101234e-03 - - -3.8179259747266769e-02 1.1506719887256622e-01 - <_> - - 0 -1 2461 7.7010630629956722e-03 - - 8.2067763432860374e-03 -3.1945049762725830e-01 - <_> - - 0 -1 2462 9.9160419777035713e-03 - - 1.8310869112610817e-02 -2.3958839476108551e-01 - <_> - - 0 -1 2463 -2.6565459556877613e-03 - - 1.4702770113945007e-01 -3.2037820667028427e-02 - <_> - - 0 -1 2464 -7.6955580152571201e-03 - - -3.1516849994659424e-01 1.3593629933893681e-02 - <_> - - 0 -1 2465 7.8387549147009850e-03 - - 1.0083840228617191e-02 -8.1965617835521698e-02 - <_> - - 0 -1 2466 -2.0592060685157776e-01 - - 2.3605699837207794e-01 -1.7845120280981064e-02 - <_> - - 0 -1 2467 -1.0210929758613929e-04 - - 4.5697391033172607e-02 -3.6160539835691452e-02 - <_> - - 0 -1 2468 7.4321818538010120e-03 - - 1.5175740234553814e-02 -2.6345270872116089e-01 - <_> - - 0 -1 2469 -5.3089652210474014e-03 - - 3.2872479408979416e-02 -4.2499881237745285e-02 - <_> - - 0 -1 2470 -1.0211910121142864e-02 - - -1.0723040252923965e-01 3.5072378814220428e-02 - <_> - - 0 -1 2471 1.5653369948267937e-02 - - -1.4208839833736420e-01 2.5232769548892975e-02 - <_> - - 0 -1 2472 -1.5530959703028202e-02 - - 7.1468062698841095e-02 -6.0601238161325455e-02 - <_> - - 0 -1 2473 -4.0227901190519333e-03 - - 6.1269611120223999e-02 -4.4298589229583740e-02 - <_> - - 0 -1 2474 7.8046880662441254e-03 - - -4.2839359492063522e-02 1.2119139730930328e-01 - <_> - - 0 -1 2475 -2.9384619556367397e-03 - - -1.6056729853153229e-01 1.4218579977750778e-02 - <_> - - 0 -1 2476 4.7694980166852474e-03 - - -1.9999140873551369e-02 2.1468199789524078e-01 - <_> - - 0 -1 2477 6.9417068734765053e-03 - - 2.2083880379796028e-02 -6.8389862775802612e-02 - <_> - - 0 -1 2478 -3.3458590041846037e-03 - - -2.1466180682182312e-01 2.0412910729646683e-02 - <_> - - 0 -1 2479 -2.8961960226297379e-02 - - -4.1232240200042725e-01 9.1418614611029625e-03 - <_> - - 0 -1 2480 -1.2559530325233936e-02 - - -3.8228130340576172e-01 9.3479985371232033e-03 - <_> - - 0 -1 2481 7.8233212232589722e-02 - - -1.4915429987013340e-02 2.4250149726867676e-01 - <_> - - 0 -1 2482 5.5003669112920761e-02 - - 5.6673302315175533e-03 -6.4445608854293823e-01 - <_> - - 0 -1 2483 -1.2113080359995365e-02 - - 1.4756150543689728e-01 -2.7481930330395699e-02 - <_> - - 0 -1 2484 -9.3241877038963139e-05 - - 7.1323297917842865e-02 -5.4497368633747101e-02 - <_> - - 0 -1 2485 -5.1809228025376797e-03 - - -1.9661720097064972e-01 1.0387259535491467e-02 - <_> - - 0 -1 2486 2.8799069114029408e-03 - - 2.2689169272780418e-02 -1.8536199629306793e-01 - <_> - - 0 -1 2487 1.4433950127568096e-04 - - -1.6389660537242889e-01 1.3282339274883270e-01 - <_> - - 0 -1 2488 -2.9764540959149599e-03 - - 1.9814909994602203e-01 -2.2932359948754311e-02 - <_> - - 0 -1 2489 -1.7436200752854347e-02 - - -1. 1.6758659621700644e-03 - <_> - - 0 -1 2490 -9.5769818872213364e-03 - - -6.0397851467132568e-01 5.7854237966239452e-03 - <_> - - 0 -1 2491 2.6807630434632301e-02 - - -1.4236460439860821e-02 3.6326110363006592e-01 - <_> - - 0 -1 2492 -9.0954907238483429e-02 - - 5.9409832954406738e-01 -5.7622790336608887e-03 - <_> - - 0 -1 2493 9.7699109464883804e-03 - - 1.0967959649860859e-02 -9.0999282896518707e-02 - <_> - - 0 -1 2494 6.5793031826615334e-03 - - 2.2652110084891319e-02 -1.7030160129070282e-01 - <_> - - 0 -1 2495 -7.5635597109794617e-02 - - 6.6555428504943848e-01 -2.2662319242954254e-03 - <_> - - 0 -1 2496 9.9336117506027222e-02 - - -1.7142260447144508e-02 2.3149140179157257e-01 - <_> - - 0 -1 2497 1.6461970284581184e-02 - - -4.0686290711164474e-02 8.8516846299171448e-02 - <_> - - 0 -1 2498 -7.6298139989376068e-02 - - 1.9077619910240173e-01 -2.1715249866247177e-02 - <_> - - 0 -1 2499 -2.1418400108814240e-01 - - 6.8394792079925537e-01 -2.8622080571949482e-03 - <_> - - 0 -1 2500 2.5286169722676277e-02 - - -1.6091799736022949e-01 3.1155489385128021e-02 - <_> - - 0 -1 2501 1.4956890046596527e-01 - - -1.0683029890060425e-02 2.1775540709495544e-01 - <_> - - 0 -1 2502 2.9672959446907043e-01 - - -7.5341230258345604e-03 5.3798502683639526e-01 - <_> - - 0 -1 2503 1.5840710699558258e-01 - - -2.0367559045553207e-03 7.8343671560287476e-01 - <_> - - 0 -1 2504 -2.0454709883779287e-03 - - -1.6811850666999817e-01 2.5403629988431931e-02 - <_> - - 0 -1 2505 1.4253250556066632e-03 - - -1.9209619611501694e-02 9.9919341504573822e-02 - <_> - - 0 -1 2506 -6.2084808945655823e-02 - - -3.2638630270957947e-01 1.5010939911007881e-02 - <_> - - 0 -1 2507 5.3531691431999207e-02 - - 1.5144430100917816e-02 -1.2006749957799911e-01 - <_> - - 0 -1 2508 1.0787569917738438e-02 - - -3.1277839094400406e-02 1.4318579435348511e-01 - <_> - - 0 -1 2509 -1.3449840247631073e-02 - - 1.5218019485473633e-01 -2.7612710371613503e-02 - <_> - - 0 -1 2510 1.1931080371141434e-02 - - 2.9722340404987335e-02 -1.5517580509185791e-01 - <_> - - 0 -1 2511 -4.5196209102869034e-02 - - -1.8409070372581482e-01 8.7686460465192795e-03 - <_> - - 0 -1 2512 6.5672039985656738e-02 - - -6.2955729663372040e-03 7.0492321252822876e-01 - <_> - - 0 -1 2513 7.7328020706772804e-03 - - -4.4531129300594330e-02 8.6046911776065826e-02 - <_> - - 0 -1 2514 -3.0604829080402851e-03 - - 1.0113420337438583e-01 -4.2885549366474152e-02 - <_> - - 0 -1 2515 8.2347340881824493e-02 - - 3.0522139277309179e-03 -2.3243139684200287e-01 - <_> - - 0 -1 2516 -6.9534480571746826e-03 - - 5.7797849178314209e-02 -7.6140359044075012e-02 - <_> - - 0 -1 2517 -1.4939639717340469e-02 - - 6.9081947207450867e-02 -4.3814908713102341e-02 - <_> - - 0 -1 2518 1.1418660171329975e-02 - - -3.2972648739814758e-02 1.6681009531021118e-01 - <_> - - 0 -1 2519 2.5770820677280426e-02 - - -4.2302068322896957e-02 1.1955089867115021e-01 - <_> - - 0 -1 2520 -8.1753218546509743e-03 - - 9.1556102037429810e-02 -5.3072091192007065e-02 - <_> - - 0 -1 2521 -2.1397249773144722e-02 - - 2.0224739611148834e-01 -2.8093929868191481e-03 - <_> - - 0 -1 2522 1.2690890580415726e-03 - - -3.5791151225566864e-02 1.2621949613094330e-01 - <_> - - 0 -1 2523 8.2354843616485596e-03 - - 3.1432591378688812e-02 -5.5796068161725998e-02 - <_> - - 0 -1 2524 4.4060330837965012e-02 - - 1.2473659589886665e-02 -3.6804640293121338e-01 - <_> - - 0 -1 2525 1.0450479749124497e-04 - - -4.5484520494937897e-02 3.2811541110277176e-02 - <_> - - 0 -1 2526 -6.3033318147063255e-03 - - 1.3801789283752441e-01 -3.1995330005884171e-02 - <_> - 415 - -1.3446700572967529e+00 - - <_> - - 0 -1 2527 -2.7316650375723839e-02 - - 2.7487730979919434e-01 -1.5850859880447388e-01 - <_> - - 0 -1 2528 7.6439790427684784e-03 - - -7.4583776295185089e-02 1.5125609934329987e-01 - <_> - - 0 -1 2529 -6.9862797856330872e-02 - - 2.8707519173622131e-01 -8.9994929730892181e-02 - <_> - - 0 -1 2530 -1.0788509994745255e-01 - - -3.3596950769424438e-01 2.0893020555377007e-02 - <_> - - 0 -1 2531 -1.5034900046885014e-02 - - 8.6543716490268707e-02 -2.3165270686149597e-01 - <_> - - 0 -1 2532 1.7096489667892456e-02 - - 1.2342380359768867e-02 3.7771260738372803e-01 - <_> - - 0 -1 2533 -2.1886809263378382e-03 - - 1.5675470232963562e-01 -1.1138690263032913e-01 - <_> - - 0 -1 2534 -2.4373169988393784e-02 - - 2.1010430157184601e-01 -1.4367789961397648e-02 - <_> - - 0 -1 2535 -8.1659909337759018e-03 - - 1.7865429818630219e-01 -9.5783412456512451e-02 - <_> - - 0 -1 2536 -7.5612151995301247e-03 - - 2.5702549144625664e-02 -7.9344697296619415e-02 - <_> - - 0 -1 2537 -6.5740081481635571e-04 - - -1.4089170098304749e-01 8.0607332289218903e-02 - <_> - - 0 -1 2538 -8.8607652287464589e-05 - - 7.5460836291313171e-02 -1.8756809830665588e-01 - <_> - - 0 -1 2539 6.2588072614744306e-04 - - 4.6485811471939087e-02 -2.5176569819450378e-01 - <_> - - 0 -1 2540 -1.2103809975087643e-02 - - 1.3484419882297516e-01 -8.9047953486442566e-02 - <_> - - 0 -1 2541 -6.8692131899297237e-03 - - 2.1173520386219025e-01 -6.5386101603507996e-02 - <_> - - 0 -1 2542 5.6604170240461826e-03 - - -1.3595540076494217e-02 1.8750169873237610e-01 - <_> - - 0 -1 2543 -9.4631352112628520e-05 - - 5.0867721438407898e-02 -1.8780030310153961e-01 - <_> - - 0 -1 2544 3.4878090955317020e-03 - - -5.1359388977289200e-02 1.1506889760494232e-01 - <_> - - 0 -1 2545 -9.4707533717155457e-03 - - 9.8822489380836487e-02 -9.3697369098663330e-02 - <_> - - 0 -1 2546 1.4385590329766273e-02 - - -7.8755013644695282e-02 3.1363941729068756e-02 - <_> - - 0 -1 2547 -1.4251519460231066e-03 - - 1.4444510638713837e-01 -6.3101217150688171e-02 - <_> - - 0 -1 2548 3.6899289116263390e-03 - - 2.3989859968423843e-02 -3.2146468758583069e-01 - <_> - - 0 -1 2549 -6.8723889999091625e-03 - - -2.5446730852127075e-01 3.3128850162029266e-02 - <_> - - 0 -1 2550 2.4660020135343075e-03 - - -4.3644420802593231e-02 1.4037939906120300e-01 - <_> - - 0 -1 2551 9.1303391382098198e-03 - - 2.3647300899028778e-02 -3.7906241416931152e-01 - <_> - - 0 -1 2552 -3.0127069912850857e-03 - - 2.3551990091800690e-01 -4.2731329798698425e-02 - <_> - - 0 -1 2553 1.1245849542319775e-02 - - 2.3805119097232819e-02 -3.1765449047088623e-01 - <_> - - 0 -1 2554 4.4033519923686981e-02 - - 1.5065879561007023e-02 -2.5235170125961304e-01 - <_> - - 0 -1 2555 -4.1104990988969803e-02 - - -2.5063040852546692e-01 3.0693089589476585e-02 - <_> - - 0 -1 2556 -3.6634609103202820e-02 - - 1.9319459795951843e-01 -4.1235551238059998e-02 - <_> - - 0 -1 2557 1.4633010141551495e-02 - - -6.6459119319915771e-02 1.5650509297847748e-01 - <_> - - 0 -1 2558 6.3870670273900032e-03 - - -2.6944689452648163e-02 3.7887599319219589e-02 - <_> - - 0 -1 2559 -8.5294283926486969e-03 - - 7.7619388699531555e-02 -1.0268399864435196e-01 - <_> - - 0 -1 2560 1.0175130330026150e-02 - - 2.1145140752196312e-02 -2.7438971400260925e-01 - <_> - - 0 -1 2561 4.6252820640802383e-02 - - -3.2085079699754715e-02 2.9516988992691040e-01 - <_> - - 0 -1 2562 -2.0645210519433022e-02 - - 9.0427830815315247e-02 -3.8768420927226543e-03 - <_> - - 0 -1 2563 -1.8383029848337173e-02 - - -3.1522661447525024e-01 3.0239699408411980e-02 - <_> - - 0 -1 2564 -7.0474706590175629e-02 - - 8.4262803196907043e-02 -9.4253793358802795e-02 - <_> - - 0 -1 2565 2.8779879212379456e-02 - - -4.3083410710096359e-02 2.5382921099662781e-01 - <_> - - 0 -1 2566 -3.9638858288526535e-03 - - -3.0343660712242126e-01 2.6317149400711060e-02 - <_> - - 0 -1 2567 -7.3942821472883224e-03 - - -4.3046790361404419e-01 1.5894040465354919e-02 - <_> - - 0 -1 2568 -3.9092078804969788e-02 - - -4.6360069513320923e-01 1.1617040261626244e-02 - <_> - - 0 -1 2569 -4.2651049792766571e-02 - - -4.4052749872207642e-01 1.4934539794921875e-02 - <_> - - 0 -1 2570 -3.2970950007438660e-02 - - -3.4874680638313293e-01 -3.7375820102170110e-04 - <_> - - 0 -1 2571 -1.3688179664313793e-02 - - 2.4025470018386841e-01 -3.0663989484310150e-02 - <_> - - 0 -1 2572 3.6174680572003126e-03 - - -4.3150220066308975e-02 1.1144080013036728e-01 - <_> - - 0 -1 2573 -1.8408719450235367e-02 - - -3.0483740568161011e-01 2.2827899083495140e-02 - <_> - - 0 -1 2574 8.4504440426826477e-02 - - -9.5612574368715286e-03 2.0102660357952118e-01 - <_> - - 0 -1 2575 3.1940080225467682e-02 - - 2.8196170926094055e-02 -2.6275300979614258e-01 - <_> - - 0 -1 2576 -5.6045739911496639e-03 - - 9.5459349453449249e-02 -7.0795007050037384e-02 - <_> - - 0 -1 2577 -2.7486490085721016e-02 - - -1.2586189806461334e-01 5.3209599107503891e-02 - <_> - - 0 -1 2578 4.0080148726701736e-02 - - -1.9919050391763449e-03 2.6778548955917358e-01 - <_> - - 0 -1 2579 -6.0500898398458958e-03 - - 1.0807660222053528e-01 -7.6502397656440735e-02 - <_> - - 0 -1 2580 1.6309870406985283e-02 - - 3.1113339588046074e-02 -2.2906629741191864e-01 - <_> - - 0 -1 2581 -2.1269150078296661e-02 - - -2.7229338884353638e-01 2.6028970256447792e-02 - <_> - - 0 -1 2582 -1.1312039714539424e-04 - - 5.4071560502052307e-02 -1.2318380177021027e-01 - <_> - - 0 -1 2583 -2.5106180459260941e-02 - - 1.9082669913768768e-01 -4.0326580405235291e-02 - <_> - - 0 -1 2584 -3.2266911119222641e-02 - - 6.0755331069231033e-02 -2.3014400154352188e-02 - <_> - - 0 -1 2585 -1.5903979539871216e-02 - - 6.6860802471637726e-02 -1.1064460128545761e-01 - <_> - - 0 -1 2586 6.2107760459184647e-03 - - 8.0979540944099426e-03 -2.5538039207458496e-01 - <_> - - 0 -1 2587 -9.4095463282428682e-05 - - 6.3928060233592987e-02 -1.1833990365266800e-01 - <_> - - 0 -1 2588 5.5843768641352654e-03 - - -5.0344880670309067e-02 1.4636759459972382e-01 - <_> - - 0 -1 2589 -7.3416143655776978e-02 - - -3.6426061391830444e-01 1.7588060349225998e-02 - <_> - - 0 -1 2590 7.9857250675559044e-03 - - -2.0407540723681450e-02 2.0582839846611023e-01 - <_> - - 0 -1 2591 -4.6555800363421440e-03 - - 1.1924490332603455e-01 -5.3060591220855713e-02 - <_> - - 0 -1 2592 -1.4567379839718342e-03 - - 8.0878950655460358e-02 -3.4969870001077652e-02 - <_> - - 0 -1 2593 -4.0669189766049385e-03 - - 1.3475550711154938e-01 -6.0763791203498840e-02 - <_> - - 0 -1 2594 -1.9439009483903646e-03 - - 3.5232741385698318e-02 -1.8867930397391319e-02 - <_> - - 0 -1 2595 -2.1124959457665682e-03 - - 9.3589469790458679e-02 -7.2769477963447571e-02 - <_> - - 0 -1 2596 -4.3111350387334824e-03 - - 2.3961730301380157e-02 -5.8411359786987305e-02 - <_> - - 0 -1 2597 5.6312880478799343e-03 - - 4.9782160669565201e-02 -1.3893429934978485e-01 - <_> - - 0 -1 2598 -2.9775509610772133e-02 - - -2.3828829824924469e-01 8.3421133458614349e-03 - <_> - - 0 -1 2599 -2.4996970314532518e-03 - - 7.0528857409954071e-02 -8.8426813483238220e-02 - <_> - - 0 -1 2600 -4.1618719696998596e-02 - - -4.5704779028892517e-01 2.4038259289227426e-04 - <_> - - 0 -1 2601 -1.7385400831699371e-02 - - -2.1895749866962433e-01 2.9016839340329170e-02 - <_> - - 0 -1 2602 -1.5565169742330909e-03 - - 3.5198878496885300e-02 -4.7955259680747986e-02 - <_> - - 0 -1 2603 1.1509309842949733e-04 - - -7.5342476367950439e-02 8.2199811935424805e-02 - <_> - - 0 -1 2604 4.9892379902303219e-03 - - 5.8806170709431171e-03 -3.6068248748779297e-01 - <_> - - 0 -1 2605 -1.0128300345968455e-04 - - 8.4276176989078522e-02 -6.8763136863708496e-02 - <_> - - 0 -1 2606 9.9149248853791505e-05 - - -6.1370018869638443e-02 9.2962853610515594e-02 - <_> - - 0 -1 2607 -7.4688978202175349e-05 - - 6.6261902451515198e-02 -8.9723907411098480e-02 - <_> - - 0 -1 2608 -1.1687710136175156e-01 - - -2.6946708559989929e-01 2.2773561067879200e-03 - <_> - - 0 -1 2609 -4.5594099909067154e-02 - - -2.1460740268230438e-01 2.7173580601811409e-02 - <_> - - 0 -1 2610 -2.0167430862784386e-02 - - -2.1186199784278870e-01 2.1692689508199692e-02 - <_> - - 0 -1 2611 -2.0116599276661873e-02 - - -4.2579978704452515e-01 1.2864829972386360e-02 - <_> - - 0 -1 2612 1.0467610554769635e-03 - - 3.5689130425453186e-02 -1.3110220432281494e-01 - <_> - - 0 -1 2613 -2.2577140480279922e-02 - - -2.8517609834671021e-01 1.9716870039701462e-02 - <_> - - 0 -1 2614 -1.6918679466471076e-03 - - -2.2059449553489685e-01 3.4719381481409073e-02 - <_> - - 0 -1 2615 -1.7014020122587681e-03 - - 1.6053110361099243e-01 -3.8246080279350281e-02 - <_> - - 0 -1 2616 6.3295272411778569e-04 - - 6.1598058789968491e-02 -1.5416809916496277e-01 - <_> - - 0 -1 2617 6.3840970396995544e-03 - - -4.4685110449790955e-02 1.4613169431686401e-01 - <_> - - 0 -1 2618 1.1487339623272419e-02 - - -2.0203100517392159e-02 1.0990539938211441e-01 - <_> - - 0 -1 2619 -9.9725337349809706e-05 - - 8.8752306997776031e-02 -7.8050062060356140e-02 - <_> - - 0 -1 2620 -1.3515730388462543e-02 - - 1.2383879721164703e-01 -6.8068411201238632e-03 - <_> - - 0 -1 2621 -1.9129710271954536e-02 - - -4.0590089559555054e-01 1.4618029817938805e-02 - <_> - - 0 -1 2622 -3.4465670585632324e-02 - - 2.8184041380882263e-01 -2.2152330726385117e-02 - <_> - - 0 -1 2623 -2.0487470552325249e-02 - - 8.6006246507167816e-02 -7.4289858341217041e-02 - <_> - - 0 -1 2624 2.1417900919914246e-02 - - -5.0567369908094406e-02 1.7608459293842316e-01 - <_> - - 0 -1 2625 1.0022870264947414e-04 - - -7.6136611402034760e-02 7.7453456819057465e-02 - <_> - - 0 -1 2626 -1.1440980015322566e-03 - - 1.3106130063533783e-01 -5.9427108615636826e-02 - <_> - - 0 -1 2627 -1.4926489675417542e-03 - - 1.1569160223007202e-01 -5.1303990185260773e-02 - <_> - - 0 -1 2628 -1.4178160345181823e-03 - - -1.1656679958105087e-01 3.6218471825122833e-02 - <_> - - 0 -1 2629 -4.7570239752531052e-02 - - -3.0153951048851013e-01 1.7995720729231834e-02 - <_> - - 0 -1 2630 6.7516998387873173e-03 - - 4.5671020634472370e-03 -3.2800048589706421e-01 - <_> - - 0 -1 2631 -9.9902870715595782e-05 - - 6.2831349670886993e-02 -9.0242616832256317e-02 - <_> - - 0 -1 2632 4.4691278599202633e-03 - - 1.6881229355931282e-02 -2.5619581341743469e-01 - <_> - - 0 -1 2633 -1.5597039600834250e-03 - - 1.5142050385475159e-01 -3.4283578395843506e-02 - <_> - - 0 -1 2634 -2.9167518950998783e-03 - - -2.3072950541973114e-01 1.3630339875817299e-02 - <_> - - 0 -1 2635 9.9341967143118382e-05 - - -7.1005381643772125e-02 8.1697426736354828e-02 - <_> - - 0 -1 2636 1.1012300092261285e-04 - - -3.6688800901174545e-02 5.5210899561643600e-02 - <_> - - 0 -1 2637 -1.2116230209358037e-04 - - 7.6930791139602661e-02 -7.8013658523559570e-02 - <_> - - 0 -1 2638 8.2692378782667220e-05 - - -6.9511868059635162e-02 5.4754100739955902e-02 - <_> - - 0 -1 2639 -5.7337670587003231e-03 - - -3.8145920634269714e-01 1.3249520212411880e-02 - <_> - - 0 -1 2640 8.4541890828404576e-05 - - -5.8527629822492599e-02 5.2114509046077728e-02 - <_> - - 0 -1 2641 -3.2148940954357386e-03 - - 1.9818669557571411e-01 -2.7734709903597832e-02 - <_> - - 0 -1 2642 2.6157390326261520e-02 - - -2.9161190614104271e-02 9.3741878867149353e-02 - <_> - - 0 -1 2643 -1.4505890198051929e-02 - - -2.2876620292663574e-01 2.3291150107979774e-02 - <_> - - 0 -1 2644 8.5460231639444828e-04 - - -1.7463499680161476e-02 4.9941889941692352e-02 - <_> - - 0 -1 2645 -7.4818951543420553e-04 - - 5.3755320608615875e-02 -1.2013070285320282e-01 - <_> - - 0 -1 2646 2.7736639603972435e-02 - - -4.6890750527381897e-03 5.5901169776916504e-01 - <_> - - 0 -1 2647 3.9643929339945316e-03 - - -3.6292050033807755e-02 1.5132050216197968e-01 - <_> - - 0 -1 2648 -2.2398240398615599e-03 - - -3.6148559302091599e-02 1.3452059589326382e-02 - <_> - - 0 -1 2649 -3.9014678914099932e-03 - - 1.1665710061788559e-01 -5.8023910969495773e-02 - <_> - - 0 -1 2650 7.8577287495136261e-03 - - -4.5177441090345383e-02 1.5682870149612427e-01 - <_> - - 0 -1 2651 2.2638099268078804e-02 - - -1.3579820096492767e-01 4.2554739862680435e-02 - <_> - - 0 -1 2652 -2.5986449792981148e-02 - - 1.7888210713863373e-01 -4.7442611306905746e-02 - <_> - - 0 -1 2653 1.9732700660824776e-02 - - -2.7600640431046486e-02 2.1244800090789795e-01 - <_> - - 0 -1 2654 -4.2725708335638046e-03 - - 4.8975061625242233e-02 -6.9325067102909088e-02 - <_> - - 0 -1 2655 3.9207109808921814e-01 - - -1.2857420369982719e-02 4.3954390287399292e-01 - <_> - - 0 -1 2656 -5.9483079239726067e-03 - - -3.7634629011154175e-01 8.6762178689241409e-03 - <_> - - 0 -1 2657 -8.9699737145565450e-05 - - 7.6080530881881714e-02 -8.0823980271816254e-02 - <_> - - 0 -1 2658 -8.3298161625862122e-03 - - -1.1028739809989929e-01 1.4299210160970688e-02 - <_> - - 0 -1 2659 -1.1061090044677258e-02 - - 2.3409999907016754e-01 -2.2986939176917076e-02 - <_> - - 0 -1 2660 -3.4027020446956158e-03 - - 1.2203729897737503e-01 -2.9225839301943779e-02 - <_> - - 0 -1 2661 8.6490763351321220e-05 - - -6.7251376807689667e-02 7.6228253543376923e-02 - <_> - - 0 -1 2662 6.6004507243633270e-02 - - 8.9948913082480431e-03 -1.1085270345211029e-01 - <_> - - 0 -1 2663 -6.1384908854961395e-02 - - -3.7708151340484619e-01 1.3758949935436249e-02 - <_> - - 0 -1 2664 2.2467050701379776e-02 - - 1.3185550458729267e-02 -1.5804879367351532e-01 - <_> - - 0 -1 2665 -1.0128029622137547e-02 - - 1.0872840136289597e-01 -5.3388658910989761e-02 - <_> - - 0 -1 2666 1.0057699866592884e-02 - - -4.2716991156339645e-02 1.2052679806947708e-01 - <_> - - 0 -1 2667 -1.4173669740557671e-02 - - -2.0305970311164856e-01 2.4551179260015488e-02 - <_> - - 0 -1 2668 -2.3401159793138504e-02 - - -4.0858080983161926e-01 2.0997230894863605e-03 - <_> - - 0 -1 2669 -1.2913989834487438e-02 - - -3.5346880555152893e-01 1.3238550163805485e-02 - <_> - - 0 -1 2670 1.1887939646840096e-02 - - -2.4994270876049995e-02 1.0629689693450928e-01 - <_> - - 0 -1 2671 1.4728870242834091e-02 - - 1.2584480457007885e-02 -3.5870888829231262e-01 - <_> - - 0 -1 2672 -2.6837689802050591e-03 - - 5.5337000638246536e-02 -3.3083409070968628e-02 - <_> - - 0 -1 2673 8.5124364122748375e-03 - - -5.2581608295440674e-02 1.2180329859256744e-01 - <_> - - 0 -1 2674 -9.1770477592945099e-03 - - -3.4201860427856445e-01 8.0853570252656937e-03 - <_> - - 0 -1 2675 8.6409807205200195e-02 - - 2.2997839376330376e-02 -2.0930939912796021e-01 - <_> - - 0 -1 2676 -1.4614709652960300e-02 - - -3.1371870636940002e-01 8.6596552282571793e-03 - <_> - - 0 -1 2677 -1.0003909847000614e-04 - - 4.7573979943990707e-02 -1.1311870068311691e-01 - <_> - - 0 -1 2678 1.4839449431747198e-03 - - -5.4255820810794830e-02 7.0115558803081512e-02 - <_> - - 0 -1 2679 4.3706027790904045e-03 - - -4.4686149805784225e-02 1.2047159671783447e-01 - <_> - - 0 -1 2680 1.4132079482078552e-01 - - 1.2737610377371311e-02 -1.4522150158882141e-01 - <_> - - 0 -1 2681 2.4103390052914619e-02 - - -2.4701459333300591e-02 1.9275949895381927e-01 - <_> - - 0 -1 2682 4.3824901804327965e-03 - - 2.7143049985170364e-02 -1.6311520338058472e-01 - <_> - - 0 -1 2683 -1.0324969887733459e-01 - - -1.4729699492454529e-01 3.1285788863897324e-02 - <_> - - 0 -1 2684 -5.8382350951433182e-02 - - 9.8135061562061310e-02 -3.9102800190448761e-02 - <_> - - 0 -1 2685 -1.9191790372133255e-02 - - 7.1935810148715973e-02 -8.2254111766815186e-02 - <_> - - 0 -1 2686 1.6117200255393982e-02 - - -3.9202481508255005e-02 9.5867179334163666e-02 - <_> - - 0 -1 2687 -6.6582779400050640e-03 - - 9.4062991440296173e-02 -5.7329818606376648e-02 - <_> - - 0 -1 2688 -1.6119579970836639e-01 - - -1.7675599455833435e-01 1.3390669599175453e-02 - <_> - - 0 -1 2689 -1.6168789565563202e-01 - - 2.7366220951080322e-01 -1.9569290801882744e-02 - <_> - - 0 -1 2690 -4.0631181001663208e-01 - - 1.6015130281448364e-01 -3.3474721014499664e-02 - <_> - - 0 -1 2691 2.6102520525455475e-02 - - -3.3659111708402634e-02 1.7118139564990997e-01 - <_> - - 0 -1 2692 2.0601820200681686e-02 - - 1.6000960022211075e-02 -2.3066750168800354e-01 - <_> - - 0 -1 2693 1.0951990261673927e-02 - - 2.4326240643858910e-02 -1.9323149323463440e-01 - <_> - - 0 -1 2694 -1.5384820289909840e-02 - - 1.2911400198936462e-01 -2.3152599111199379e-02 - <_> - - 0 -1 2695 9.1529190540313721e-03 - - -2.7552120387554169e-02 1.9494320452213287e-01 - <_> - - 0 -1 2696 5.8382698334753513e-03 - - -3.7690669298171997e-02 5.3948331624269485e-02 - <_> - - 0 -1 2697 -1.7356640100479126e-01 - - 1.5356999635696411e-01 -3.3633600920438766e-02 - <_> - - 0 -1 2698 7.6276779174804688e-02 - - 1.5475229592993855e-03 -7.5983768701553345e-01 - <_> - - 0 -1 2699 -1.7654739320278168e-02 - - -1.5101839601993561e-01 3.4960251301527023e-02 - <_> - - 0 -1 2700 5.0020511262118816e-03 - - 1.0976109653711319e-02 -1.1282850056886673e-01 - <_> - - 0 -1 2701 -7.6133022957947105e-05 - - 6.5145239233970642e-02 -8.6627103388309479e-02 - <_> - - 0 -1 2702 8.4629254415631294e-03 - - -3.0137870460748672e-02 7.9518511891365051e-02 - <_> - - 0 -1 2703 -5.5159530602395535e-03 - - 1.1917640268802643e-01 -4.7046270221471786e-02 - <_> - - 0 -1 2704 -1.0923639871180058e-02 - - -2.0526829361915588e-01 1.4711259864270687e-02 - <_> - - 0 -1 2705 -1.1515899561345577e-02 - - -2.4651350080966949e-01 2.2872030735015869e-02 - <_> - - 0 -1 2706 3.6823050322709605e-05 - - -6.6898003220558167e-02 7.6234780251979828e-02 - <_> - - 0 -1 2707 -1.3713270425796509e-02 - - 2.0567509531974792e-01 -2.3606160655617714e-02 - <_> - - 0 -1 2708 -5.5889528244733810e-02 - - -2.7449899911880493e-01 1.3196709565818310e-02 - <_> - - 0 -1 2709 -7.8329117968678474e-03 - - -3.5972028970718384e-01 1.2990689836442471e-02 - <_> - - 0 -1 2710 -7.7925767982378602e-04 - - -1.4078480005264282e-01 4.9385368824005127e-02 - <_> - - 0 -1 2711 -5.0162840634584427e-03 - - 1.9255110621452332e-01 -2.6873560622334480e-02 - <_> - - 0 -1 2712 8.3736347733065486e-04 - - 6.6555291414260864e-02 -1.9420300424098969e-01 - <_> - - 0 -1 2713 -3.5831771790981293e-02 - - 8.7871067225933075e-02 -5.5707920342683792e-02 - <_> - - 0 -1 2714 -2.4628289975225925e-03 - - -2.0921580493450165e-01 1.8114559352397919e-02 - <_> - - 0 -1 2715 9.1072899522259831e-05 - - -6.9014422595500946e-02 8.4240511059761047e-02 - <_> - - 0 -1 2716 -9.2241833044681698e-05 - - 4.5415610074996948e-02 -3.6202490329742432e-02 - <_> - - 0 -1 2717 -9.7194097179453820e-05 - - 8.1714563071727753e-02 -7.3729299008846283e-02 - <_> - - 0 -1 2718 -1.4691230654716492e-01 - - 4.7253649681806564e-02 -1.1035589873790741e-01 - <_> - - 0 -1 2719 4.6493168920278549e-03 - - -2.2682029753923416e-02 2.3072040081024170e-01 - <_> - - 0 -1 2720 -3.0784970149397850e-02 - - 1.5000149607658386e-01 -8.1769423559308052e-03 - <_> - - 0 -1 2721 4.7821208834648132e-02 - - 1.2351839803159237e-02 -3.6188510060310364e-01 - <_> - - 0 -1 2722 9.8456286650616676e-05 - - -3.4333311021327972e-02 4.0087040513753891e-02 - <_> - - 0 -1 2723 1.0053080040961504e-04 - - -6.2489669770002365e-02 6.9051243364810944e-02 - <_> - - 0 -1 2724 -1.1028290027752519e-03 - - 1.1222849786281586e-01 -4.7414951026439667e-02 - <_> - - 0 -1 2725 -1.0884639777941629e-04 - - 7.9145051538944244e-02 -7.1242846548557281e-02 - <_> - - 0 -1 2726 7.7682570554316044e-03 - - 8.4031699225306511e-03 -1.8451359868049622e-01 - <_> - - 0 -1 2727 -1.0334140388295054e-03 - - 7.7164746820926666e-02 -5.5574499070644379e-02 - <_> - - 0 -1 2728 -3.0169570818543434e-03 - - 6.5370842814445496e-02 -6.8895407021045685e-02 - <_> - - 0 -1 2729 4.2601529508829117e-02 - - 9.5762135460972786e-03 -4.5295569300651550e-01 - <_> - - 0 -1 2730 8.9718572795391083e-02 - - 5.8670719154179096e-03 -6.6131949424743652e-01 - <_> - - 0 -1 2731 -1.9257919630035758e-03 - - 1.2355759739875793e-01 -3.5531468689441681e-02 - <_> - - 0 -1 2732 -4.6729970723390579e-02 - - -3.8210949301719666e-01 2.5716701056808233e-03 - <_> - - 0 -1 2733 -1.9390480592846870e-02 - - -2.6054370403289795e-01 1.8408829346299171e-02 - <_> - - 0 -1 2734 -3.3818829804658890e-02 - - -8.3000667393207550e-02 1.8959350883960724e-02 - <_> - - 0 -1 2735 -2.7817259542644024e-03 - - 5.1791708916425705e-02 -9.4872772693634033e-02 - <_> - - 0 -1 2736 6.0290079563856125e-03 - - -4.2852569371461868e-02 8.8055506348609924e-02 - <_> - - 0 -1 2737 -6.8631009198725224e-03 - - 1.6017200052738190e-01 -3.7203401327133179e-02 - <_> - - 0 -1 2738 1.1772879958152771e-01 - - -1.8191840499639511e-03 6.7784088850021362e-01 - <_> - - 0 -1 2739 9.8577737808227539e-02 - - -6.5248049795627594e-03 6.2354952096939087e-01 - <_> - - 0 -1 2740 -1.1462450027465820e-02 - - -1.9901570677757263e-01 8.0179795622825623e-03 - <_> - - 0 -1 2741 -1.6331799328327179e-01 - - 9.0368956327438354e-02 -5.3411129862070084e-02 - <_> - - 0 -1 2742 -7.8257713466882706e-03 - - 7.4546746909618378e-02 -1.3470030389726162e-02 - <_> - - 0 -1 2743 8.9898668229579926e-03 - - 1.2299000285565853e-02 -3.7481948733329773e-01 - <_> - - 0 -1 2744 -5.6645218282938004e-02 - - 3.5397979617118835e-01 -2.1140910685062408e-03 - <_> - - 0 -1 2745 -4.2577688582241535e-03 - - 9.0883523225784302e-02 -5.0522129982709885e-02 - <_> - - 0 -1 2746 -7.0387452840805054e-02 - - 8.3182856440544128e-02 -1.1604440398514271e-02 - <_> - - 0 -1 2747 -1.3627569377422333e-01 - - -4.9146878719329834e-01 9.1721685603260994e-03 - <_> - - 0 -1 2748 -3.8915369659662247e-02 - - 6.6144913434982300e-02 -2.0414689555764198e-02 - <_> - - 0 -1 2749 -8.5782501846551895e-03 - - -1.2900049984455109e-01 4.2405869811773300e-02 - <_> - - 0 -1 2750 4.3098080903291702e-02 - - -1.8007570877671242e-02 2.4129959940910339e-01 - <_> - - 0 -1 2751 -3.3460808917880058e-03 - - 1.4778639376163483e-01 -3.3262528479099274e-02 - <_> - - 0 -1 2752 5.3540067747235298e-03 - - 1.4319010078907013e-02 -2.9529830813407898e-01 - <_> - - 0 -1 2753 -1.1729090329026803e-04 - - 5.7986699044704437e-02 -7.5029499828815460e-02 - <_> - - 0 -1 2754 -1.3683609664440155e-01 - - -2.7513518929481506e-01 8.0752503126859665e-03 - <_> - - 0 -1 2755 5.7693019509315491e-02 - - -1.1471459642052650e-02 3.7974670529365540e-01 - <_> - - 0 -1 2756 2.1746279671788216e-02 - - 2.2382160648703575e-02 -5.4663319140672684e-02 - <_> - - 0 -1 2757 -5.4478328675031662e-02 - - -5.7317501306533813e-01 8.2423100247979164e-03 - <_> - - 0 -1 2758 2.3975670337677002e-02 - - -2.3942779749631882e-02 1.8982769548892975e-01 - <_> - - 0 -1 2759 -3.4061338752508163e-02 - - -9.0856909751892090e-02 4.9854729324579239e-02 - <_> - - 0 -1 2760 5.6406371295452118e-03 - - -2.4469649791717529e-01 1.9837260246276855e-02 - <_> - - 0 -1 2761 1.5809290111064911e-01 - - -1.3730409555137157e-02 3.8538208603858948e-01 - <_> - - 0 -1 2762 -1.7964139580726624e-02 - - -7.9316347837448120e-02 1.2321749702095985e-02 - <_> - - 0 -1 2763 -1.1972050182521343e-02 - - -1.4300990104675293e-01 3.0117489397525787e-02 - <_> - - 0 -1 2764 1.3162150047719479e-02 - - 1.1303279548883438e-02 -1.7486180365085602e-01 - <_> - - 0 -1 2765 -8.5265472531318665e-02 - - -3.9678549766540527e-01 1.0860330425202847e-02 - <_> - - 0 -1 2766 1.7804340459406376e-03 - - -3.9756961166858673e-02 1.1241979897022247e-01 - <_> - - 0 -1 2767 -9.3962233222555369e-05 - - 6.7450180649757385e-02 -6.8437807261943817e-02 - <_> - - 0 -1 2768 -2.9045040719211102e-03 - - -1.5429930388927460e-01 1.6898680478334427e-02 - <_> - - 0 -1 2769 1.0914620361290872e-04 - - -6.4099319279193878e-02 8.4356158971786499e-02 - <_> - - 0 -1 2770 -2.6563489809632301e-02 - - -2.3420210182666779e-01 6.7638568580150604e-03 - <_> - - 0 -1 2771 5.8761797845363617e-03 - - 4.1062418371438980e-02 -1.1332540214061737e-01 - <_> - - 0 -1 2772 1.6818059608340263e-02 - - -3.7261139601469040e-02 1.0307539999485016e-01 - <_> - - 0 -1 2773 -6.8439432652667165e-05 - - 7.6601967215538025e-02 -6.5059483051300049e-02 - <_> - - 0 -1 2774 5.9544979594647884e-03 - - -5.1745139062404633e-02 1.1782070249319077e-01 - <_> - - 0 -1 2775 2.4542519822716713e-02 - - -4.4502120465040207e-02 1.3515689969062805e-01 - <_> - - 0 -1 2776 -1.7439179122447968e-02 - - -3.5987889766693115e-01 4.2388997972011566e-03 - <_> - - 0 -1 2777 8.4699690341949463e-02 - - -9.4887204468250275e-03 4.8985049128532410e-01 - <_> - - 0 -1 2778 5.8426469564437866e-02 - - -1.7764889635145664e-03 2.4012650549411774e-01 - <_> - - 0 -1 2779 -4.6921251341700554e-03 - - -1.8347929418087006e-01 2.4366600438952446e-02 - <_> - - 0 -1 2780 1.6189800226129591e-04 - - -1.5806570649147034e-02 6.0901619493961334e-02 - <_> - - 0 -1 2781 9.7161885350942612e-03 - - -1.5758480876684189e-02 3.3742859959602356e-01 - <_> - - 0 -1 2782 -1.4382590306922793e-03 - - -1.2217970192432404e-01 3.5345770418643951e-02 - <_> - - 0 -1 2783 7.7670789323747158e-05 - - -6.2246508896350861e-02 7.3040649294853210e-02 - <_> - - 0 -1 2784 -4.1573401540517807e-02 - - 4.1148650646209717e-01 -4.6173711307346821e-03 - <_> - - 0 -1 2785 1.1024770356016234e-04 - - -9.3715772032737732e-02 5.2691221237182617e-02 - <_> - - 0 -1 2786 1.0518720373511314e-03 - - 4.0317419916391373e-02 -1.0210459679365158e-01 - <_> - - 0 -1 2787 8.7676383554935455e-02 - - 1.8454900011420250e-02 -2.4232000112533569e-01 - <_> - - 0 -1 2788 -3.1262669712305069e-02 - - -4.8824569582939148e-01 6.7201550118625164e-03 - <_> - - 0 -1 2789 3.5472500603646040e-03 - - -4.7451101243495941e-02 9.8277866840362549e-02 - <_> - - 0 -1 2790 -6.1450069770216942e-03 - - -3.8893818855285645e-01 8.0250157043337822e-03 - <_> - - 0 -1 2791 -1.1112130014225841e-03 - - 1.2668809294700623e-01 -4.1672218590974808e-02 - <_> - - 0 -1 2792 -2.4048870429396629e-02 - - -1.9376470148563385e-01 7.5982958078384399e-03 - <_> - - 0 -1 2793 -1.1609439738094807e-02 - - 8.7421193718910217e-02 -5.1379751414060593e-02 - <_> - - 0 -1 2794 -4.6341970562934875e-02 - - 2.9603001475334167e-01 -7.7182101085782051e-03 - <_> - - 0 -1 2795 -1.9600499421358109e-02 - - -3.0478379130363464e-01 1.4669680036604404e-02 - <_> - - 0 -1 2796 -2.6132878847420216e-03 - - 8.9694216847419739e-02 -2.9012639075517654e-02 - <_> - - 0 -1 2797 3.4202230162918568e-03 - - 3.9998780936002731e-02 -1.0716559737920761e-01 - <_> - - 0 -1 2798 1.2173360300948843e-04 - - -3.2719809561967850e-02 3.9863388985395432e-02 - <_> - - 0 -1 2799 -8.2835118519142270e-05 - - 6.9058813154697418e-02 -6.5140433609485626e-02 - <_> - - 0 -1 2800 -8.8672131299972534e-02 - - -2.5951391458511353e-01 2.3857909254729748e-03 - <_> - - 0 -1 2801 5.6452948600053787e-02 - - -2.4432990700006485e-02 1.9439670443534851e-01 - <_> - - 0 -1 2802 3.5284429788589478e-02 - - -6.3825729303061962e-03 1.3022419810295105e-01 - <_> - - 0 -1 2803 3.3733129967004061e-03 - - 4.5979738235473633e-02 -1.0800649970769882e-01 - <_> - - 0 -1 2804 2.8562510851770639e-03 - - 1.6703339293599129e-02 -3.4011591225862503e-02 - <_> - - 0 -1 2805 -1.4414669713005424e-03 - - 9.9324166774749756e-02 -4.2529720813035965e-02 - <_> - - 0 -1 2806 -8.5116196423768997e-03 - - -7.5509257614612579e-02 1.0203289799392223e-02 - <_> - - 0 -1 2807 -9.2428773641586304e-03 - - -1.5811079740524292e-01 2.5361889973282814e-02 - <_> - - 0 -1 2808 -2.8794261161237955e-03 - - 7.9453438520431519e-02 -2.7514219284057617e-02 - <_> - - 0 -1 2809 1.0851400293176994e-04 - - -6.1319191008806229e-02 7.4100911617279053e-02 - <_> - - 0 -1 2810 1.7776450514793396e-01 - - -1.4268799684941769e-02 1.2164130061864853e-01 - <_> - - 0 -1 2811 -1.7149469256401062e-01 - - 1.5083140134811401e-01 -3.4926589578390121e-02 - <_> - - 0 -1 2812 1.5180290210992098e-04 - - -4.1534621268510818e-02 4.2376600205898285e-02 - <_> - - 0 -1 2813 6.3419649377465248e-03 - - 2.2105900570750237e-02 -2.1631160378456116e-01 - <_> - - 0 -1 2814 1.3935989700257778e-02 - - 5.4779318161308765e-03 -2.5664830207824707e-01 - <_> - - 0 -1 2815 -9.7202723845839500e-03 - - -2.7872490882873535e-01 1.5381219796836376e-02 - <_> - - 0 -1 2816 -2.7980960905551910e-02 - - -8.6809730529785156e-01 1.1637150309979916e-03 - <_> - - 0 -1 2817 3.6777809727936983e-03 - - -4.3908510357141495e-02 9.6896052360534668e-02 - <_> - - 0 -1 2818 -3.1721419654786587e-03 - - -2.4078020453453064e-01 1.3723400421440601e-02 - <_> - - 0 -1 2819 -3.9061410352587700e-03 - - 1.7140209674835205e-01 -2.2317929193377495e-02 - <_> - - 0 -1 2820 9.6693192608654499e-04 - - 3.2951351255178452e-02 -1.0080079734325409e-01 - <_> - - 0 -1 2821 -8.9019339065998793e-04 - - -1.1009719967842102e-01 3.8997169584035873e-02 - <_> - - 0 -1 2822 -1.1497789993882179e-02 - - 3.3927921205759048e-02 -3.9842899888753891e-02 - <_> - - 0 -1 2823 -7.9675206507090479e-05 - - 7.7203802764415741e-02 -6.1698041856288910e-02 - <_> - - 0 -1 2824 8.9554538135416806e-05 - - -5.7938948273658752e-02 6.7448146641254425e-02 - <_> - - 0 -1 2825 -5.9674619697034359e-03 - - 1.0244590044021606e-01 -3.9467670023441315e-02 - <_> - - 0 -1 2826 8.7341177277266979e-05 - - -5.9245120733976364e-02 6.4863033592700958e-02 - <_> - - 0 -1 2827 7.7206510468386114e-05 - - -7.0006839931011200e-02 6.3901223242282867e-02 - <_> - - 0 -1 2828 -3.6013379693031311e-02 - - -2.0447410643100739e-01 1.5239260159432888e-02 - <_> - - 0 -1 2829 -5.5890497751533985e-03 - - 1.5467870235443115e-01 -2.6221899315714836e-02 - <_> - - 0 -1 2830 -3.0190621037036180e-03 - - 1.1821600049734116e-01 -1.9682880491018295e-02 - <_> - - 0 -1 2831 -1.0563310206634924e-04 - - 3.9622470736503601e-02 -1.0212220251560211e-01 - <_> - - 0 -1 2832 2.9260979965329170e-02 - - 9.6228392794728279e-03 -7.9048648476600647e-02 - <_> - - 0 -1 2833 -2.4363890290260315e-02 - - -1.2736499309539795e-01 3.2335508614778519e-02 - <_> - - 0 -1 2834 6.9917208747938275e-04 - - 6.5614067018032074e-02 -2.3335599899291992e-01 - <_> - - 0 -1 2835 -1.6459520906209946e-02 - - 1.3085840642452240e-01 -3.2097321003675461e-02 - <_> - - 0 -1 2836 3.0983570031821728e-03 - - -3.2258279621601105e-02 5.0043828785419464e-02 - <_> - - 0 -1 2837 -3.2638181000947952e-02 - - -2.7409970760345459e-01 1.4894080348312855e-02 - <_> - - 0 -1 2838 1.5158359892666340e-03 - - -1.7136910930275917e-02 8.1351801753044128e-02 - <_> - - 0 -1 2839 -2.5613330304622650e-02 - - 4.1096380352973938e-01 -9.7792968153953552e-03 - <_> - - 0 -1 2840 -1.3288609916344285e-03 - - -1.2679819762706757e-01 3.7426289170980453e-02 - <_> - - 0 -1 2841 -1.9732659682631493e-02 - - -5.6787997484207153e-01 6.9732400588691235e-03 - <_> - - 0 -1 2842 2.7425400912761688e-02 - - -4.0334589779376984e-02 9.4880692660808563e-02 - <_> - - 0 -1 2843 -6.8159690126776695e-03 - - 1.0129919648170471e-01 -4.9294691532850266e-02 - <_> - - 0 -1 2844 -9.7623662441037595e-05 - - 5.7613339275121689e-02 -4.3638128787279129e-02 - <_> - - 0 -1 2845 7.9219877079594880e-05 - - -6.2002480030059814e-02 7.0036582648754120e-02 - <_> - - 0 -1 2846 -9.2277792282402515e-04 - - -7.1099899709224701e-02 2.3343959823250771e-02 - <_> - - 0 -1 2847 1.0547949932515621e-03 - - 3.8641069084405899e-02 -1.1528919637203217e-01 - <_> - - 0 -1 2848 1.1142979928990826e-04 - - -4.3857090175151825e-02 5.0205580890178680e-02 - <_> - - 0 -1 2849 -1.1004459811374545e-03 - - 8.3625599741935730e-02 -4.6221289783716202e-02 - <_> - - 0 -1 2850 -2.0133139565587044e-02 - - -1.8197959661483765e-01 1.9399069249629974e-02 - <_> - - 0 -1 2851 2.5024140253663063e-02 - - 1.1270459741353989e-02 -3.4410759806632996e-01 - <_> - - 0 -1 2852 -4.4190499931573868e-02 - - 2.9248470067977905e-01 -1.4849469996988773e-02 - <_> - - 0 -1 2853 -5.7440258562564850e-02 - - 4.7087571024894714e-01 -7.9044541344046593e-03 - <_> - - 0 -1 2854 1.4867359772324562e-02 - - -1.9268039613962173e-02 1.1098550260066986e-01 - <_> - - 0 -1 2855 1.9520210335031152e-03 - - -3.4362699836492538e-02 1.1349079757928848e-01 - <_> - - 0 -1 2856 -1.3590609654784203e-02 - - -7.9360902309417725e-01 1.8023570301011205e-03 - <_> - - 0 -1 2857 -2.6812639553099871e-03 - - 1.6896739602088928e-01 -2.6089740917086601e-02 - <_> - - 0 -1 2858 -8.6407686467282474e-05 - - 6.1775680631399155e-02 -4.4603981077671051e-02 - <_> - - 0 -1 2859 1.2983200140297413e-03 - - 3.4938950091600418e-02 -1.1019679903984070e-01 - <_> - - 0 -1 2860 2.6221210137009621e-03 - - -3.2050449401140213e-02 6.8139947950839996e-02 - <_> - - 0 -1 2861 1.2280650436878204e-02 - - 1.2359930202364922e-02 -2.9862219095230103e-01 - <_> - - 0 -1 2862 -5.0658849067986012e-03 - - -2.8093919157981873e-01 2.4003749713301659e-02 - <_> - - 0 -1 2863 -1.0383049811935052e-04 - - 6.0894660651683807e-02 -7.0253036916255951e-02 - <_> - - 0 -1 2864 9.8692486062645912e-03 - - 6.2764049507677555e-03 -3.6045169830322266e-01 - <_> - - 0 -1 2865 -9.1246962256263942e-05 - - 6.3636362552642822e-02 -6.4670093357563019e-02 - <_> - - 0 -1 2866 -7.5011849403381348e-03 - - 9.5473609864711761e-02 -3.6763638257980347e-02 - <_> - - 0 -1 2867 -1.4745439589023590e-01 - - -7.9214060306549072e-01 5.0740689039230347e-03 - <_> - - 0 -1 2868 -2.1300138905644417e-03 - - 1.0333529859781265e-01 -4.2891681194305420e-02 - <_> - - 0 -1 2869 2.5524429511278868e-03 - - -4.1929069906473160e-02 8.7996013462543488e-02 - <_> - - 0 -1 2870 5.8139938861131668e-02 - - 1.2611810117959976e-02 -3.0331811308860779e-01 - <_> - - 0 -1 2871 2.3743009194731712e-02 - - -2.9802089557051659e-02 1.2322849780321121e-01 - <_> - - 0 -1 2872 -6.2248498201370239e-02 - - 1.1110640317201614e-01 -2.0817250013351440e-02 - <_> - - 0 -1 2873 -9.1270900156814605e-05 - - 6.4382009208202362e-02 -6.0937818139791489e-02 - <_> - - 0 -1 2874 -3.9082568138837814e-02 - - 5.6695652008056641e-01 -1.1460679816082120e-03 - <_> - - 0 -1 2875 1.3248370029032230e-02 - - 1.2405660003423691e-02 -3.0858299136161804e-01 - <_> - - 0 -1 2876 -5.0235718488693237e-02 - - 1.6084699332714081e-01 -3.1474840361624956e-03 - <_> - - 0 -1 2877 8.1979725509881973e-03 - - -4.3110638856887817e-02 8.3337813615798950e-02 - <_> - - 0 -1 2878 4.5282919891178608e-03 - - -1.4737699925899506e-01 2.2266879677772522e-02 - <_> - - 0 -1 2879 -7.0286458358168602e-03 - - -2.1665599942207336e-01 1.8082590773701668e-02 - <_> - - 0 -1 2880 3.2996211200952530e-02 - - -1.1144799739122391e-01 3.5693738609552383e-02 - <_> - - 0 -1 2881 6.9042239338159561e-03 - - -3.2669480890035629e-02 1.2693080306053162e-01 - <_> - - 0 -1 2882 6.4168781973421574e-03 - - 1.3405409641563892e-02 -2.2676290571689606e-01 - <_> - - 0 -1 2883 3.2765600830316544e-02 - - -2.0737469196319580e-02 2.0090930163860321e-01 - <_> - - 0 -1 2884 -6.9006122648715973e-02 - - -4.8873770236968994e-01 2.5993511080741882e-03 - <_> - - 0 -1 2885 -1.5318569785449654e-04 - - 6.9251857697963715e-02 -6.4636163413524628e-02 - <_> - - 0 -1 2886 1.3968399725854397e-02 - - 2.3769039660692215e-02 -1.3656540215015411e-01 - <_> - - 0 -1 2887 2.4323699995875359e-02 - - 9.9094482138752937e-03 -3.6789679527282715e-01 - <_> - - 0 -1 2888 5.3771991282701492e-02 - - -3.4769340418279171e-03 5.6615811586380005e-01 - <_> - - 0 -1 2889 3.7300360854715109e-03 - - 1.1731130070984364e-02 -3.5765179991722107e-01 - <_> - - 0 -1 2890 -5.9517208486795425e-02 - - -4.9590829014778137e-01 1.2971699470654130e-03 - <_> - - 0 -1 2891 7.5328880921006203e-03 - - -3.6959148943424225e-02 1.0903140157461166e-01 - <_> - - 0 -1 2892 2.3298559244722128e-03 - - 1.4677469618618488e-02 -1.8427179753780365e-01 - <_> - - 0 -1 2893 -1.3588890433311462e-03 - - 1.1983290314674377e-01 -4.0848769247531891e-02 - <_> - - 0 -1 2894 -6.9162257015705109e-02 - - 9.9982842803001404e-02 -2.2005759179592133e-02 - <_> - - 0 -1 2895 -1.0890520364046097e-01 - - 3.5323360562324524e-01 -1.1501859873533249e-02 - <_> - - 0 -1 2896 3.4343260526657104e-01 - - -1.7977360635995865e-02 2.3037150502204895e-01 - <_> - - 0 -1 2897 -6.6631078720092773e-01 - - -4.3691501021385193e-01 1.1366610415279865e-02 - <_> - - 0 -1 2898 -4.5054171234369278e-02 - - 3.2915808260440826e-02 -8.5535138845443726e-02 - <_> - - 0 -1 2899 -1.4088810421526432e-02 - - 5.3100470453500748e-02 -7.7183209359645844e-02 - <_> - - 0 -1 2900 -9.3094259500503540e-03 - - 1.2417539954185486e-01 -3.2946839928627014e-02 - <_> - - 0 -1 2901 1.4807860367000103e-02 - - -7.0644028484821320e-02 8.1475563347339630e-02 - <_> - - 0 -1 2902 1.0399249941110611e-01 - - -1.4924500137567520e-02 1.8357430398464203e-01 - <_> - - 0 -1 2903 1.9406999647617340e-01 - - -6.4371521584689617e-03 6.0971242189407349e-01 - <_> - - 0 -1 2904 -3.8064900785684586e-02 - - -5.2255958318710327e-01 5.7811117731034756e-03 - <_> - - 0 -1 2905 -6.6563528962433338e-03 - - 9.4871222972869873e-02 -3.9789460599422455e-02 - <_> - - 0 -1 2906 -1.0609209857648239e-04 - - 4.5516170561313629e-02 -4.1418150067329407e-02 - <_> - - 0 -1 2907 7.0871852338314056e-02 - - 9.3520022928714752e-03 -3.6439558863639832e-01 - <_> - - 0 -1 2908 1.2085449881851673e-02 - - 2.3465529084205627e-02 -1.4409939944744110e-01 - <_> - - 0 -1 2909 -9.9468030384741724e-05 - - 5.7956721633672714e-02 -6.0917779803276062e-02 - <_> - - 0 -1 2910 1.6888909740373492e-03 - - -4.6765789389610291e-02 1.9036899507045746e-01 - <_> - - 0 -1 2911 -9.8317061201669276e-05 - - 7.2646446526050568e-02 -5.8051958680152893e-02 - <_> - - 0 -1 2912 8.1128161400556564e-03 - - -4.0620859712362289e-02 9.7611181437969208e-02 - <_> - - 0 -1 2913 1.7255520448088646e-02 - - 1.7161769792437553e-02 -2.4358719587326050e-01 - <_> - - 0 -1 2914 3.1692821532487869e-02 - - 1.1967140249907970e-02 -2.9160520434379578e-01 - <_> - - 0 -1 2915 -9.4834472984075546e-03 - - -1.4566260576248169e-01 3.1208310276269913e-02 - <_> - - 0 -1 2916 1.8280290532857180e-03 - - -1.4711730182170868e-02 5.5668108165264130e-02 - <_> - - 0 -1 2917 8.6632797319907695e-05 - - -6.1156060546636581e-02 7.0974543690681458e-02 - <_> - - 0 -1 2918 2.5025049224495888e-02 - - -1.3397550210356712e-02 1.0556930303573608e-01 - <_> - - 0 -1 2919 5.5940490216016769e-02 - - -1.4789390377700329e-02 2.4960540235042572e-01 - <_> - - 0 -1 2920 1.6337510198354721e-02 - - -5.6752599775791168e-02 1.3382770121097565e-02 - <_> - - 0 -1 2921 -4.5972689986228943e-01 - - -7.1287852525711060e-01 4.9509857781231403e-03 - <_> - - 0 -1 2922 -6.5172776579856873e-02 - - -8.2543537020683289e-02 1.5198189765214920e-02 - <_> - - 0 -1 2923 -2.6704780757427216e-02 - - -2.0916239917278290e-01 1.8581379204988480e-02 - <_> - - 0 -1 2924 1.8495510518550873e-01 - - 1.8260549986734986e-03 -3.9183071255683899e-01 - <_> - - 0 -1 2925 9.5611862838268280e-02 - - -1.5232330188155174e-02 3.0041059851646423e-01 - <_> - - 0 -1 2926 5.4745167493820190e-01 - - 6.3382647931575775e-03 -6.2035357952117920e-01 - <_> - - 0 -1 2927 7.9493559896945953e-03 - - -6.2048658728599548e-02 6.1209429055452347e-02 - <_> - - 0 -1 2928 2.7175021171569824e-01 - - -1.6191200120374560e-03 5.8006882667541504e-01 - <_> - - 0 -1 2929 1.3671410083770752e-01 - - 1.4446510002017021e-02 -2.6299729943275452e-01 - <_> - - 0 -1 2930 2.3144269362092018e-02 - - 1.5177230350673199e-02 -3.3594930171966553e-01 - <_> - - 0 -1 2931 -1.4187960186973214e-03 - - 9.5409370958805084e-02 -3.6757789552211761e-02 - <_> - - 0 -1 2932 -1.8819719552993774e-02 - - -4.0184121578931808e-02 1.3270259834825993e-02 - <_> - - 0 -1 2933 -8.1724688410758972e-02 - - 3.2492980360984802e-01 -1.1558920145034790e-02 - <_> - - 0 -1 2934 -8.0951452255249023e-03 - - -2.6765230298042297e-01 1.4577089808881283e-02 - <_> - - 0 -1 2935 -8.2515813119243830e-05 - - 3.8213159888982773e-02 -9.2825122177600861e-02 - <_> - - 0 -1 2936 4.9149271100759506e-02 - - -1.1441200040280819e-02 1.3343520462512970e-01 - <_> - - 0 -1 2937 5.3070918656885624e-03 - - -3.0889939516782761e-02 1.2001869827508926e-01 - <_> - - 0 -1 2938 1.2434639967978001e-02 - - 1.0091929696500301e-02 -1.6182650625705719e-01 - <_> - - 0 -1 2939 1.3028579996898770e-03 - - -5.6219980120658875e-02 6.6662617027759552e-02 - <_> - - 0 -1 2940 -1.0949189774692059e-02 - - -2.1038089692592621e-01 2.1130399778485298e-02 - <_> - - 0 -1 2941 -1.5839550644159317e-02 - - -3.2079550623893738e-01 1.0882910341024399e-02 - - <_> - - <_> - 3 0 12 12 -1. - <_> - 3 4 12 4 3. - <_> - - <_> - 16 0 2 5 -1. - <_> - 16 0 1 5 2. - <_> - - <_> - 7 4 4 8 -1. - <_> - 7 8 4 4 2. - <_> - - <_> - 16 0 2 4 -1. - <_> - 16 0 1 4 2. - <_> - - <_> - 0 0 2 5 -1. - <_> - 1 0 1 5 2. - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 3 2 3 2. - 1 - <_> - - <_> - 1 0 4 2 -1. - <_> - 3 0 2 2 2. - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 3 2 3 2. - 1 - <_> - - <_> - 9 2 3 4 -1. - <_> - 8 3 3 2 2. - 1 - <_> - - <_> - 6 9 6 3 -1. - <_> - 8 9 2 3 3. - <_> - - <_> - 7 11 4 1 -1. - <_> - 8 11 2 1 2. - <_> - - <_> - 6 10 12 2 -1. - <_> - 6 11 12 1 2. - <_> - - <_> - 6 0 6 8 -1. - <_> - 6 2 6 4 2. - <_> - - <_> - 4 1 10 6 -1. - <_> - 4 3 10 2 3. - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 8 12 4 2. - <_> - - <_> - 3 0 12 12 -1. - <_> - 7 4 4 4 9. - <_> - - <_> - 0 0 4 2 -1. - <_> - 2 0 2 2 2. - <_> - - <_> - 9 0 2 7 -1. - <_> - 9 0 1 7 2. - 1 - <_> - - <_> - 4 2 10 6 -1. - <_> - 4 4 10 2 3. - <_> - - <_> - 9 10 9 2 -1. - <_> - 9 11 9 1 2. - <_> - - <_> - 6 1 6 6 -1. - <_> - 6 3 6 2 3. - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 10 10 8 2 -1. - <_> - 10 11 8 1 2. - <_> - - <_> - 0 10 8 2 -1. - <_> - 0 11 8 1 2. - <_> - - <_> - 12 5 6 3 -1. - <_> - 14 5 2 3 3. - <_> - - <_> - 0 5 6 3 -1. - <_> - 2 5 2 3 3. - <_> - - <_> - 8 11 4 1 -1. - <_> - 9 11 2 1 2. - <_> - - <_> - 6 11 4 1 -1. - <_> - 7 11 2 1 2. - <_> - - <_> - 15 9 3 3 -1. - <_> - 15 10 3 1 3. - <_> - - <_> - 3 0 10 6 -1. - <_> - 3 2 10 2 3. - <_> - - <_> - 6 2 6 9 -1. - <_> - 8 5 2 3 9. - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 8 12 4 2. - <_> - - <_> - 0 1 18 9 -1. - <_> - 6 4 6 3 9. - <_> - - <_> - 6 5 6 3 -1. - <_> - 8 5 2 3 3. - <_> - - <_> - 14 10 4 1 -1. - <_> - 15 10 2 1 2. - <_> - - <_> - 1 0 2 1 -1. - <_> - 1 0 1 1 2. - 1 - <_> - - <_> - 14 8 4 4 -1. - <_> - 14 10 4 2 2. - <_> - - <_> - 0 2 3 9 -1. - <_> - 0 5 3 3 3. - <_> - - <_> - 12 10 6 2 -1. - <_> - 12 11 6 1 2. - <_> - - <_> - 0 10 6 2 -1. - <_> - 0 11 6 1 2. - <_> - - <_> - 6 0 12 4 -1. - <_> - 9 0 6 4 2. - <_> - - <_> - 7 10 4 2 -1. - <_> - 9 10 2 2 2. - <_> - - <_> - 10 1 8 2 -1. - <_> - 12 1 4 2 2. - <_> - - <_> - 5 11 6 1 -1. - <_> - 7 11 2 1 3. - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - <_> - - <_> - 8 4 3 3 -1. - <_> - 7 5 3 1 3. - 1 - <_> - - <_> - 15 9 3 3 -1. - <_> - 15 10 3 1 3. - <_> - - <_> - 6 10 6 2 -1. - <_> - 8 10 2 2 3. - <_> - - <_> - 12 4 6 5 -1. - <_> - 14 4 2 5 3. - <_> - - <_> - 0 4 6 5 -1. - <_> - 2 4 2 5 3. - <_> - - <_> - 1 3 16 8 -1. - <_> - 5 3 8 8 2. - <_> - - <_> - 5 2 7 3 -1. - <_> - 5 3 7 1 3. - <_> - - <_> - 3 1 12 6 -1. - <_> - 3 3 12 2 3. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - <_> - - <_> - 4 5 6 4 -1. - <_> - 6 5 2 4 3. - <_> - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - <_> - - <_> - 0 6 3 4 -1. - <_> - 0 7 3 2 2. - <_> - - <_> - 15 0 3 3 -1. - <_> - 16 1 1 3 3. - 1 - <_> - - <_> - 0 0 18 12 -1. - <_> - 6 4 6 4 9. - <_> - - <_> - 6 0 12 4 -1. - <_> - 9 0 6 4 2. - <_> - - <_> - 0 0 4 4 -1. - <_> - 2 0 2 4 2. - <_> - - <_> - 8 4 2 8 -1. - <_> - 8 8 2 4 2. - <_> - - <_> - 9 2 3 4 -1. - <_> - 8 3 3 2 2. - 1 - <_> - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - <_> - - <_> - 4 0 3 4 -1. - <_> - 5 0 1 4 3. - <_> - - <_> - 9 7 3 2 -1. - <_> - 9 7 3 1 2. - 1 - <_> - - <_> - 3 1 1 3 -1. - <_> - 2 2 1 1 3. - 1 - <_> - - <_> - 12 10 6 2 -1. - <_> - 12 11 6 1 2. - <_> - - <_> - 0 0 3 2 -1. - <_> - 0 1 3 1 2. - <_> - - <_> - 9 9 4 3 -1. - <_> - 10 9 2 3 2. - <_> - - <_> - 3 0 12 4 -1. - <_> - 3 1 12 2 2. - <_> - - <_> - 2 0 16 3 -1. - <_> - 6 0 8 3 2. - <_> - - <_> - 0 10 6 2 -1. - <_> - 0 11 6 1 2. - <_> - - <_> - 9 0 6 4 -1. - <_> - 8 1 6 2 2. - 1 - <_> - - <_> - 2 5 9 3 -1. - <_> - 5 5 3 3 3. - <_> - - <_> - 9 9 4 3 -1. - <_> - 10 9 2 3 2. - <_> - - <_> - 5 9 4 3 -1. - <_> - 6 9 2 3 2. - <_> - - <_> - 6 0 12 5 -1. - <_> - 10 0 4 5 3. - <_> - - <_> - 0 9 3 3 -1. - <_> - 0 10 3 1 3. - <_> - - <_> - 11 3 3 4 -1. - <_> - 12 4 1 4 3. - 1 - <_> - - <_> - 2 0 12 4 -1. - <_> - 8 0 6 4 2. - <_> - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - <_> - - <_> - 6 9 2 1 -1. - <_> - 6 9 1 1 2. - 1 - <_> - - <_> - 11 3 3 4 -1. - <_> - 12 4 1 4 3. - 1 - <_> - - <_> - 0 0 2 2 -1. - <_> - 1 0 1 2 2. - <_> - - <_> - 11 3 3 4 -1. - <_> - 12 4 1 4 3. - 1 - <_> - - <_> - 7 3 4 3 -1. - <_> - 6 4 4 1 3. - 1 - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - <_> - - <_> - 0 9 16 3 -1. - <_> - 4 9 8 3 2. - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - <_> - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - <_> - - <_> - 5 0 8 2 -1. - <_> - 5 1 8 1 2. - <_> - - <_> - 3 1 2 3 -1. - <_> - 2 2 2 1 3. - 1 - <_> - - <_> - 5 2 8 6 -1. - <_> - 5 4 8 2 3. - <_> - - <_> - 0 0 18 12 -1. - <_> - 6 4 6 4 9. - <_> - - <_> - 3 6 12 6 -1. - <_> - 3 9 12 3 2. - <_> - - <_> - 0 5 2 5 -1. - <_> - 1 5 1 5 2. - <_> - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - <_> - - <_> - 4 1 10 6 -1. - <_> - 4 3 10 2 3. - <_> - - <_> - 15 4 3 4 -1. - <_> - 15 5 3 2 2. - <_> - - <_> - 9 0 4 6 -1. - <_> - 7 2 4 2 3. - 1 - <_> - - <_> - 10 2 2 6 -1. - <_> - 8 4 2 2 3. - 1 - <_> - - <_> - 0 0 4 8 -1. - <_> - 2 0 2 8 2. - <_> - - <_> - 4 6 10 3 -1. - <_> - 4 6 5 3 2. - <_> - - <_> - 8 2 6 2 -1. - <_> - 10 4 2 2 3. - 1 - <_> - - <_> - 10 8 8 4 -1. - <_> - 10 10 8 2 2. - <_> - - <_> - 5 2 8 4 -1. - <_> - 5 3 8 2 2. - <_> - - <_> - 3 0 15 3 -1. - <_> - 8 0 5 3 3. - <_> - - <_> - 0 7 5 4 -1. - <_> - 0 9 5 2 2. - <_> - - <_> - 6 0 12 3 -1. - <_> - 9 0 6 3 2. - <_> - - <_> - 0 1 1 8 -1. - <_> - 0 3 1 4 2. - <_> - - <_> - 11 5 4 3 -1. - <_> - 12 5 2 3 2. - <_> - - <_> - 3 5 4 3 -1. - <_> - 4 5 2 3 2. - <_> - - <_> - 16 2 2 1 -1. - <_> - 16 2 1 1 2. - 1 - <_> - - <_> - 3 2 12 3 -1. - <_> - 3 3 12 1 3. - <_> - - <_> - 0 6 18 4 -1. - <_> - 9 6 9 2 2. - <_> - 0 8 9 2 2. - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 2 0 16 3 -1. - <_> - 6 0 8 3 2. - <_> - - <_> - 4 0 6 4 -1. - <_> - 6 0 2 4 3. - <_> - - <_> - 6 0 12 3 -1. - <_> - 9 0 6 3 2. - <_> - - <_> - 0 0 12 3 -1. - <_> - 3 0 6 3 2. - <_> - - <_> - 16 0 2 4 -1. - <_> - 16 0 1 4 2. - 1 - <_> - - <_> - 2 0 4 2 -1. - <_> - 2 0 4 1 2. - 1 - <_> - - <_> - 4 11 14 1 -1. - <_> - 4 11 7 1 2. - <_> - - <_> - 0 11 14 1 -1. - <_> - 7 11 7 1 2. - <_> - - <_> - 15 6 3 6 -1. - <_> - 15 8 3 2 3. - <_> - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - <_> - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - <_> - - <_> - 0 6 3 6 -1. - <_> - 0 8 3 2 3. - <_> - - <_> - 15 5 3 7 -1. - <_> - 16 5 1 7 3. - <_> - - <_> - 0 5 3 7 -1. - <_> - 1 5 1 7 3. - <_> - - <_> - 13 5 4 3 -1. - <_> - 14 5 2 3 2. - <_> - - <_> - 1 5 4 3 -1. - <_> - 2 5 2 3 2. - <_> - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - <_> - - <_> - 6 10 4 2 -1. - <_> - 7 10 2 2 2. - <_> - - <_> - 11 4 3 3 -1. - <_> - 12 5 1 3 3. - 1 - <_> - - <_> - 7 4 3 3 -1. - <_> - 6 5 3 1 3. - 1 - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 0 10 3 2 -1. - <_> - 0 11 3 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - <_> - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - <_> - - <_> - 5 0 8 6 -1. - <_> - 5 2 8 2 3. - <_> - - <_> - 3 0 11 4 -1. - <_> - 3 1 11 2 2. - <_> - - <_> - 15 3 3 2 -1. - <_> - 15 4 3 1 2. - <_> - - <_> - 0 3 3 2 -1. - <_> - 0 4 3 1 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - <_> - - <_> - 6 0 6 4 -1. - <_> - 8 0 2 4 3. - <_> - - <_> - 8 6 3 1 -1. - <_> - 9 6 1 1 3. - <_> - - <_> - 7 6 3 1 -1. - <_> - 8 6 1 1 3. - <_> - - <_> - 4 0 12 12 -1. - <_> - 7 0 6 12 2. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 2 2. - 1 - <_> - - <_> - 8 7 4 3 -1. - <_> - 8 8 4 1 3. - <_> - - <_> - 1 9 1 3 -1. - <_> - 1 10 1 1 3. - <_> - - <_> - 9 6 4 1 -1. - <_> - 10 6 2 1 2. - <_> - - <_> - 0 5 4 7 -1. - <_> - 2 5 2 7 2. - <_> - - <_> - 6 0 7 4 -1. - <_> - 6 1 7 2 2. - <_> - - <_> - 3 1 12 9 -1. - <_> - 3 4 12 3 3. - <_> - - <_> - 6 5 6 3 -1. - <_> - 8 5 2 3 3. - <_> - - <_> - 0 0 12 4 -1. - <_> - 4 0 4 4 3. - <_> - - <_> - 3 6 12 6 -1. - <_> - 3 9 12 3 2. - <_> - - <_> - 5 3 8 4 -1. - <_> - 5 4 8 2 2. - <_> - - <_> - 16 0 2 4 -1. - <_> - 16 0 1 4 2. - <_> - - <_> - 0 0 2 4 -1. - <_> - 1 0 1 4 2. - <_> - - <_> - 11 5 4 3 -1. - <_> - 12 5 2 3 2. - <_> - - <_> - 5 5 4 3 -1. - <_> - 6 5 2 3 2. - <_> - - <_> - 3 1 12 6 -1. - <_> - 3 3 12 2 3. - <_> - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - <_> - - <_> - 9 0 6 4 -1. - <_> - 11 0 2 4 3. - <_> - - <_> - 4 5 4 3 -1. - <_> - 3 6 4 1 3. - 1 - <_> - - <_> - 9 0 6 4 -1. - <_> - 11 0 2 4 3. - <_> - - <_> - 3 0 6 4 -1. - <_> - 5 0 2 4 3. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 0 7 18 4 -1. - <_> - 9 7 9 2 2. - <_> - 0 9 9 2 2. - <_> - - <_> - 7 10 1 2 -1. - <_> - 7 11 1 1 2. - <_> - - <_> - 17 8 1 4 -1. - <_> - 17 10 1 2 2. - <_> - - <_> - 0 8 1 4 -1. - <_> - 0 10 1 2 2. - <_> - - <_> - 16 4 2 5 -1. - <_> - 16 4 1 5 2. - <_> - - <_> - 6 9 2 1 -1. - <_> - 6 9 1 1 2. - 1 - <_> - - <_> - 16 4 2 5 -1. - <_> - 16 4 1 5 2. - <_> - - <_> - 0 4 2 5 -1. - <_> - 1 4 1 5 2. - <_> - - <_> - 10 6 4 1 -1. - <_> - 11 6 2 1 2. - <_> - - <_> - 5 9 6 3 -1. - <_> - 7 9 2 3 3. - <_> - - <_> - 10 5 4 3 -1. - <_> - 11 5 2 3 2. - <_> - - <_> - 6 9 2 3 -1. - <_> - 7 9 1 3 2. - <_> - - <_> - 10 6 4 2 -1. - <_> - 11 6 2 2 2. - <_> - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - <_> - - <_> - 17 6 1 4 -1. - <_> - 17 8 1 2 2. - <_> - - <_> - 4 5 3 4 -1. - <_> - 5 5 1 4 3. - <_> - - <_> - 8 0 4 3 -1. - <_> - 9 0 2 3 2. - <_> - - <_> - 3 0 3 2 -1. - <_> - 3 0 3 1 2. - 1 - <_> - - <_> - 3 0 12 4 -1. - <_> - 3 1 12 2 2. - <_> - - <_> - 5 0 6 2 -1. - <_> - 5 1 6 1 2. - <_> - - <_> - 0 2 18 6 -1. - <_> - 6 2 6 6 3. - <_> - - <_> - 0 2 1 8 -1. - <_> - 0 4 1 4 2. - <_> - - <_> - 4 4 10 2 -1. - <_> - 4 5 10 1 2. - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 12 5 4 3 -1. - <_> - 13 5 2 3 2. - <_> - - <_> - 4 7 10 3 -1. - <_> - 4 8 10 1 3. - <_> - - <_> - 12 5 3 3 -1. - <_> - 13 5 1 3 3. - <_> - - <_> - 7 10 2 2 -1. - <_> - 8 10 1 2 2. - <_> - - <_> - 6 11 6 1 -1. - <_> - 8 11 2 1 3. - <_> - - <_> - 3 5 3 3 -1. - <_> - 4 5 1 3 3. - <_> - - <_> - 6 6 9 6 -1. - <_> - 9 6 3 6 3. - <_> - - <_> - 4 9 2 1 -1. - <_> - 4 9 1 1 2. - 1 - <_> - - <_> - 4 6 12 6 -1. - <_> - 8 6 4 6 3. - <_> - - <_> - 0 8 12 4 -1. - <_> - 3 8 6 4 2. - <_> - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - <_> - - <_> - 5 5 3 3 -1. - <_> - 6 5 1 3 3. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - <_> - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - <_> - - <_> - 7 1 6 2 -1. - <_> - 7 2 6 1 2. - <_> - - <_> - 4 0 6 2 -1. - <_> - 6 0 2 2 3. - <_> - - <_> - 11 7 2 2 -1. - <_> - 12 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 0 2 12 10 -1. - <_> - 3 2 6 10 2. - <_> - - <_> - 14 8 4 4 -1. - <_> - 14 9 4 2 2. - <_> - - <_> - 0 4 11 8 -1. - <_> - 0 8 11 4 2. - <_> - - <_> - 3 0 12 6 -1. - <_> - 3 2 12 2 3. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 4 2 12 9 -1. - <_> - 4 5 12 3 3. - <_> - - <_> - 0 8 4 4 -1. - <_> - 0 9 4 2 2. - <_> - - <_> - 0 1 18 10 -1. - <_> - 9 1 9 5 2. - <_> - 0 6 9 5 2. - <_> - - <_> - 2 5 3 3 -1. - <_> - 3 5 1 3 3. - <_> - - <_> - 13 7 2 3 -1. - <_> - 12 8 2 1 3. - 1 - <_> - - <_> - 5 7 3 2 -1. - <_> - 6 8 1 2 3. - 1 - <_> - - <_> - 9 11 3 1 -1. - <_> - 10 11 1 1 3. - <_> - - <_> - 0 7 3 4 -1. - <_> - 1 7 1 4 3. - <_> - - <_> - 11 2 3 7 -1. - <_> - 12 3 1 7 3. - 1 - <_> - - <_> - 4 1 9 9 -1. - <_> - 7 4 3 3 9. - <_> - - <_> - 6 0 12 4 -1. - <_> - 9 0 6 4 2. - <_> - - <_> - 0 0 6 5 -1. - <_> - 3 0 3 5 2. - <_> - - <_> - 3 1 12 4 -1. - <_> - 3 2 12 2 2. - <_> - - <_> - 4 1 4 2 -1. - <_> - 5 1 2 2 2. - <_> - - <_> - 9 5 1 6 -1. - <_> - 9 5 1 3 2. - 1 - <_> - - <_> - 4 6 6 2 -1. - <_> - 6 6 2 2 3. - <_> - - <_> - 0 11 18 1 -1. - <_> - 0 11 9 1 2. - <_> - - <_> - 0 6 3 4 -1. - <_> - 0 8 3 2 2. - <_> - - <_> - 10 4 3 1 -1. - <_> - 11 5 1 1 3. - 1 - <_> - - <_> - 4 1 10 6 -1. - <_> - 4 3 10 2 3. - <_> - - <_> - 10 4 3 3 -1. - <_> - 11 5 1 3 3. - 1 - <_> - - <_> - 8 4 3 3 -1. - <_> - 7 5 3 1 3. - 1 - <_> - - <_> - 11 10 1 2 -1. - <_> - 11 11 1 1 2. - <_> - - <_> - 2 3 1 2 -1. - <_> - 2 3 1 1 2. - 1 - <_> - - <_> - 6 11 6 1 -1. - <_> - 8 11 2 1 3. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 1 2 1 2. - <_> - - <_> - 16 10 2 2 -1. - <_> - 16 11 2 1 2. - <_> - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - <_> - - <_> - 6 3 6 3 -1. - <_> - 6 4 6 1 3. - <_> - - <_> - 0 1 18 4 -1. - <_> - 6 1 6 4 3. - <_> - - <_> - 7 0 6 4 -1. - <_> - 9 0 2 4 3. - <_> - - <_> - 5 0 6 4 -1. - <_> - 7 0 2 4 3. - <_> - - <_> - 7 6 6 1 -1. - <_> - 9 6 2 1 3. - <_> - - <_> - 0 6 16 4 -1. - <_> - 0 6 8 2 2. - <_> - 8 8 8 2 2. - <_> - - <_> - 16 10 2 2 -1. - <_> - 16 11 2 1 2. - <_> - - <_> - 0 6 6 2 -1. - <_> - 2 6 2 2 3. - <_> - - <_> - 16 10 2 2 -1. - <_> - 16 11 2 1 2. - <_> - - <_> - 0 10 2 2 -1. - <_> - 0 11 2 1 2. - <_> - - <_> - 5 0 8 3 -1. - <_> - 5 1 8 1 3. - <_> - - <_> - 4 0 8 4 -1. - <_> - 4 1 8 2 2. - <_> - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 1 0 1 2 2. - <_> - - <_> - 16 0 2 4 -1. - <_> - 16 0 1 4 2. - 1 - <_> - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 2 2. - 1 - <_> - - <_> - 0 4 18 8 -1. - <_> - 6 4 6 8 3. - <_> - - <_> - 2 0 4 2 -1. - <_> - 2 0 4 1 2. - 1 - <_> - - <_> - 11 5 4 3 -1. - <_> - 12 5 2 3 2. - <_> - - <_> - 3 5 4 3 -1. - <_> - 4 5 2 3 2. - <_> - - <_> - 0 2 18 8 -1. - <_> - 9 2 9 4 2. - <_> - 0 6 9 4 2. - <_> - - <_> - 5 9 4 3 -1. - <_> - 6 9 2 3 2. - <_> - - <_> - 10 5 8 7 -1. - <_> - 12 5 4 7 2. - <_> - - <_> - 3 0 4 4 -1. - <_> - 4 0 2 4 2. - <_> - - <_> - 10 5 8 7 -1. - <_> - 12 5 4 7 2. - <_> - - <_> - 5 4 3 4 -1. - <_> - 6 4 1 4 3. - <_> - - <_> - 16 4 2 4 -1. - <_> - 16 5 2 2 2. - <_> - - <_> - 4 0 3 2 -1. - <_> - 4 0 3 1 2. - 1 - <_> - - <_> - 5 1 8 3 -1. - <_> - 5 2 8 1 3. - <_> - - <_> - 4 0 2 3 -1. - <_> - 3 1 2 1 3. - 1 - <_> - - <_> - 6 2 12 10 -1. - <_> - 9 2 6 10 2. - <_> - - <_> - 1 9 12 2 -1. - <_> - 4 9 6 2 2. - <_> - - <_> - 6 2 12 10 -1. - <_> - 9 2 6 10 2. - <_> - - <_> - 0 2 12 10 -1. - <_> - 3 2 6 10 2. - <_> - - <_> - 9 5 3 3 -1. - <_> - 10 5 1 3 3. - <_> - - <_> - 0 4 12 8 -1. - <_> - 0 8 12 4 2. - <_> - - <_> - 4 0 10 6 -1. - <_> - 4 2 10 2 3. - <_> - - <_> - 7 2 4 3 -1. - <_> - 7 3 4 1 3. - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - <_> - - <_> - 9 5 3 3 -1. - <_> - 10 5 1 3 3. - <_> - - <_> - 6 5 3 3 -1. - <_> - 7 5 1 3 3. - <_> - - <_> - 7 10 4 2 -1. - <_> - 7 10 2 2 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - <_> - - <_> - 15 6 3 6 -1. - <_> - 16 6 1 6 3. - <_> - - <_> - 0 6 3 6 -1. - <_> - 1 6 1 6 3. - <_> - - <_> - 16 4 2 4 -1. - <_> - 16 5 2 2 2. - <_> - - <_> - 0 4 2 4 -1. - <_> - 0 5 2 2 2. - <_> - - <_> - 6 0 12 4 -1. - <_> - 6 1 12 2 2. - <_> - - <_> - 6 9 4 2 -1. - <_> - 7 9 2 2 2. - <_> - - <_> - 12 4 3 5 -1. - <_> - 13 5 1 5 3. - 1 - <_> - - <_> - 7 2 4 7 -1. - <_> - 8 2 2 7 2. - <_> - - <_> - 12 4 3 5 -1. - <_> - 13 5 1 5 3. - 1 - <_> - - <_> - 6 4 5 3 -1. - <_> - 5 5 5 1 3. - 1 - <_> - - <_> - 8 0 4 2 -1. - <_> - 9 0 2 2 2. - <_> - - <_> - 8 7 1 3 -1. - <_> - 8 8 1 1 3. - <_> - - <_> - 16 2 2 4 -1. - <_> - 16 3 2 2 2. - <_> - - <_> - 3 10 4 2 -1. - <_> - 3 11 4 1 2. - <_> - - <_> - 0 0 18 12 -1. - <_> - 0 0 9 12 2. - <_> - - <_> - 7 11 2 1 -1. - <_> - 8 11 1 1 2. - <_> - - <_> - 7 11 4 1 -1. - <_> - 7 11 2 1 2. - <_> - - <_> - 0 2 12 4 -1. - <_> - 4 2 4 4 3. - <_> - - <_> - 4 4 10 4 -1. - <_> - 4 6 10 2 2. - <_> - - <_> - 0 0 3 9 -1. - <_> - 0 3 3 3 3. - <_> - - <_> - 16 3 2 7 -1. - <_> - 16 3 1 7 2. - <_> - - <_> - 0 3 2 7 -1. - <_> - 1 3 1 7 2. - <_> - - <_> - 14 7 3 2 -1. - <_> - 14 7 3 1 2. - 1 - <_> - - <_> - 9 2 6 1 -1. - <_> - 9 2 3 1 2. - 1 - <_> - - <_> - 9 4 2 2 -1. - <_> - 10 4 1 1 2. - <_> - 9 5 1 1 2. - <_> - - <_> - 2 0 4 4 -1. - <_> - 3 0 2 4 2. - <_> - - <_> - 9 4 2 2 -1. - <_> - 10 4 1 1 2. - <_> - 9 5 1 1 2. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 12 4 6 8 -1. - <_> - 14 4 2 8 3. - <_> - - <_> - 0 4 6 8 -1. - <_> - 2 4 2 8 3. - <_> - - <_> - 14 9 1 2 -1. - <_> - 14 9 1 1 2. - 1 - <_> - - <_> - 4 9 2 1 -1. - <_> - 4 9 1 1 2. - 1 - <_> - - <_> - 6 0 6 6 -1. - <_> - 6 2 6 2 3. - <_> - - <_> - 6 1 1 3 -1. - <_> - 5 2 1 1 3. - 1 - <_> - - <_> - 0 2 18 6 -1. - <_> - 6 4 6 2 9. - <_> - - <_> - 6 4 6 6 -1. - <_> - 8 6 2 2 9. - <_> - - <_> - 0 0 4 5 -1. - <_> - 2 0 2 5 2. - <_> - - <_> - 3 2 12 6 -1. - <_> - 3 4 12 2 3. - <_> - - <_> - 0 0 12 9 -1. - <_> - 4 3 4 3 9. - <_> - - <_> - 7 6 6 1 -1. - <_> - 9 6 2 1 3. - <_> - - <_> - 4 7 2 2 -1. - <_> - 4 7 1 1 2. - <_> - 5 8 1 1 2. - <_> - - <_> - 13 8 2 2 -1. - <_> - 13 8 2 1 2. - 1 - <_> - - <_> - 9 5 6 1 -1. - <_> - 9 5 3 1 2. - 1 - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 0 0 1 6 -1. - <_> - 0 2 1 2 3. - <_> - - <_> - 11 5 4 3 -1. - <_> - 12 5 2 3 2. - <_> - - <_> - 3 5 4 3 -1. - <_> - 4 5 2 3 2. - <_> - - <_> - 13 9 1 2 -1. - <_> - 13 9 1 1 2. - 1 - <_> - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - <_> - - <_> - 12 10 2 1 -1. - <_> - 12 10 1 1 2. - <_> - - <_> - 3 1 12 6 -1. - <_> - 3 3 12 2 3. - <_> - - <_> - 17 2 1 6 -1. - <_> - 17 4 1 2 3. - <_> - - <_> - 0 2 1 6 -1. - <_> - 0 4 1 2 3. - <_> - - <_> - 12 10 2 1 -1. - <_> - 12 10 1 1 2. - <_> - - <_> - 4 10 2 1 -1. - <_> - 5 10 1 1 2. - <_> - - <_> - 6 4 6 2 -1. - <_> - 6 5 6 1 2. - <_> - - <_> - 2 0 8 4 -1. - <_> - 4 0 4 4 2. - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 1 2 1 3. - <_> - - <_> - 0 0 2 3 -1. - <_> - 0 1 2 1 3. - <_> - - <_> - 6 0 6 4 -1. - <_> - 6 1 6 2 2. - <_> - - <_> - 5 0 6 4 -1. - <_> - 5 1 6 2 2. - <_> - - <_> - 14 9 3 3 -1. - <_> - 14 10 3 1 3. - <_> - - <_> - 4 5 3 3 -1. - <_> - 5 5 1 3 3. - <_> - - <_> - 15 6 2 4 -1. - <_> - 15 6 2 2 2. - 1 - <_> - - <_> - 5 8 3 1 -1. - <_> - 6 9 1 1 3. - 1 - <_> - - <_> - 12 9 6 3 -1. - <_> - 12 10 6 1 3. - <_> - - <_> - 4 0 6 4 -1. - <_> - 6 0 2 4 3. - <_> - - <_> - 9 5 3 2 -1. - <_> - 10 5 1 2 3. - <_> - - <_> - 5 5 6 3 -1. - <_> - 7 5 2 3 3. - <_> - - <_> - 16 5 2 6 -1. - <_> - 16 5 1 6 2. - <_> - - <_> - 9 1 9 1 -1. - <_> - 12 4 3 1 3. - 1 - <_> - - <_> - 5 1 8 4 -1. - <_> - 5 2 8 2 2. - <_> - - <_> - 0 0 18 3 -1. - <_> - 6 0 6 3 3. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 6 8 6 4 -1. - <_> - 6 9 6 2 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 15 5 1 6 -1. - <_> - 15 5 1 3 2. - 1 - <_> - - <_> - 7 5 3 2 -1. - <_> - 8 5 1 2 3. - <_> - - <_> - 14 9 4 3 -1. - <_> - 14 10 4 1 3. - <_> - - <_> - 5 0 3 4 -1. - <_> - 5 0 3 2 2. - 1 - <_> - - <_> - 14 9 4 3 -1. - <_> - 14 10 4 1 3. - <_> - - <_> - 0 9 4 3 -1. - <_> - 0 10 4 1 3. - <_> - - <_> - 14 6 4 6 -1. - <_> - 14 8 4 2 3. - <_> - - <_> - 0 5 4 6 -1. - <_> - 0 7 4 2 3. - <_> - - <_> - 9 3 3 6 -1. - <_> - 10 4 1 6 3. - 1 - <_> - - <_> - 6 1 6 10 -1. - <_> - 6 1 3 5 2. - <_> - 9 6 3 5 2. - <_> - - <_> - 16 5 2 6 -1. - <_> - 16 5 1 6 2. - <_> - - <_> - 0 5 2 6 -1. - <_> - 1 5 1 6 2. - <_> - - <_> - 13 0 5 2 -1. - <_> - 13 0 5 1 2. - 1 - <_> - - <_> - 5 0 2 5 -1. - <_> - 5 0 1 5 2. - 1 - <_> - - <_> - 6 4 6 8 -1. - <_> - 6 8 6 4 2. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 1 10 16 2 -1. - <_> - 5 10 8 2 2. - <_> - - <_> - 6 9 6 3 -1. - <_> - 8 9 2 3 3. - <_> - - <_> - 9 10 4 2 -1. - <_> - 10 10 2 2 2. - <_> - - <_> - 9 4 3 4 -1. - <_> - 8 5 3 2 2. - 1 - <_> - - <_> - 7 0 4 4 -1. - <_> - 8 0 2 4 2. - <_> - - <_> - 6 0 6 3 -1. - <_> - 8 0 2 3 3. - <_> - - <_> - 11 7 2 2 -1. - <_> - 12 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 0 8 2 3 -1. - <_> - 0 9 2 1 3. - <_> - - <_> - 11 7 2 2 -1. - <_> - 12 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 1 4 2 4 -1. - <_> - 1 5 2 2 2. - <_> - - <_> - 3 0 12 8 -1. - <_> - 3 2 12 4 2. - <_> - - <_> - 0 3 12 9 -1. - <_> - 3 3 6 9 2. - <_> - - <_> - 16 0 2 10 -1. - <_> - 16 0 2 5 2. - 1 - <_> - - <_> - 3 8 2 2 -1. - <_> - 3 8 1 2 2. - 1 - <_> - - <_> - 15 9 2 2 -1. - <_> - 16 9 1 1 2. - <_> - 15 10 1 1 2. - <_> - - <_> - 1 9 2 2 -1. - <_> - 1 9 1 1 2. - <_> - 2 10 1 1 2. - <_> - - <_> - 15 9 2 2 -1. - <_> - 16 9 1 1 2. - <_> - 15 10 1 1 2. - <_> - - <_> - 1 9 2 2 -1. - <_> - 1 9 1 1 2. - <_> - 2 10 1 1 2. - <_> - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - <_> - - <_> - 0 6 6 6 -1. - <_> - 0 9 6 3 2. - <_> - - <_> - 8 10 6 2 -1. - <_> - 10 10 2 2 3. - <_> - - <_> - 6 1 6 2 -1. - <_> - 6 2 6 1 2. - <_> - - <_> - 16 2 2 1 -1. - <_> - 16 2 1 1 2. - 1 - <_> - - <_> - 2 1 10 1 -1. - <_> - 2 1 5 1 2. - 1 - <_> - - <_> - 16 2 2 1 -1. - <_> - 16 2 1 1 2. - 1 - <_> - - <_> - 2 2 1 2 -1. - <_> - 2 2 1 1 2. - 1 - <_> - - <_> - 11 4 2 6 -1. - <_> - 11 4 1 6 2. - 1 - <_> - - <_> - 7 4 6 2 -1. - <_> - 7 4 6 1 2. - 1 - <_> - - <_> - 10 6 2 2 -1. - <_> - 10 6 1 2 2. - <_> - - <_> - 6 6 2 2 -1. - <_> - 7 6 1 2 2. - <_> - - <_> - 8 10 6 2 -1. - <_> - 10 10 2 2 3. - <_> - - <_> - 6 0 6 11 -1. - <_> - 8 0 2 11 3. - <_> - - <_> - 8 10 6 2 -1. - <_> - 10 10 2 2 3. - <_> - - <_> - 4 10 6 2 -1. - <_> - 6 10 2 2 3. - <_> - - <_> - 14 2 4 4 -1. - <_> - 14 3 4 2 2. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 9 4 2 2 -1. - <_> - 10 4 1 1 2. - <_> - 9 5 1 1 2. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 14 2 4 4 -1. - <_> - 14 3 4 2 2. - <_> - - <_> - 0 2 4 4 -1. - <_> - 0 3 4 2 2. - <_> - - <_> - 15 0 3 4 -1. - <_> - 14 1 3 2 2. - 1 - <_> - - <_> - 3 0 4 3 -1. - <_> - 4 1 2 3 2. - 1 - <_> - - <_> - 5 0 10 3 -1. - <_> - 5 0 5 3 2. - <_> - - <_> - 5 2 6 2 -1. - <_> - 7 2 2 2 3. - <_> - - <_> - 3 0 12 2 -1. - <_> - 3 1 12 1 2. - <_> - - <_> - 5 0 6 3 -1. - <_> - 5 1 6 1 3. - <_> - - <_> - 12 0 3 2 -1. - <_> - 13 1 1 2 3. - 1 - <_> - - <_> - 6 0 2 3 -1. - <_> - 5 1 2 1 3. - 1 - <_> - - <_> - 10 5 8 7 -1. - <_> - 12 5 4 7 2. - <_> - - <_> - 0 5 8 7 -1. - <_> - 2 5 4 7 2. - <_> - - <_> - 12 8 6 2 -1. - <_> - 14 8 2 2 3. - <_> - - <_> - 0 8 6 2 -1. - <_> - 2 8 2 2 3. - <_> - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - <_> - - <_> - 6 9 2 1 -1. - <_> - 6 9 1 1 2. - 1 - <_> - - <_> - 5 4 8 4 -1. - <_> - 5 5 8 2 2. - <_> - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - <_> - - <_> - 16 0 2 6 -1. - <_> - 16 0 1 6 2. - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 8 12 4 2. - <_> - - <_> - 1 2 16 4 -1. - <_> - 5 2 8 4 2. - <_> - - <_> - 0 0 2 6 -1. - <_> - 1 0 1 6 2. - <_> - - <_> - 3 1 12 4 -1. - <_> - 3 2 12 2 2. - <_> - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - <_> - - <_> - 10 6 3 1 -1. - <_> - 11 6 1 1 3. - <_> - - <_> - 3 10 12 2 -1. - <_> - 3 11 12 1 2. - <_> - - <_> - 10 6 3 1 -1. - <_> - 11 6 1 1 3. - <_> - - <_> - 1 0 8 3 -1. - <_> - 3 0 4 3 2. - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 0 1 3 2. - 1 - <_> - - <_> - 2 0 3 2 -1. - <_> - 2 0 3 1 2. - 1 - <_> - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - <_> - - <_> - 5 5 3 3 -1. - <_> - 6 5 1 3 3. - <_> - - <_> - 11 5 6 4 -1. - <_> - 13 5 2 4 3. - <_> - - <_> - 9 3 8 1 -1. - <_> - 9 3 4 1 2. - 1 - <_> - - <_> - 13 5 3 3 -1. - <_> - 14 6 1 3 3. - 1 - <_> - - <_> - 5 5 3 3 -1. - <_> - 4 6 3 1 3. - 1 - <_> - - <_> - 10 0 4 4 -1. - <_> - 11 0 2 4 2. - <_> - - <_> - 4 3 10 3 -1. - <_> - 4 4 10 1 3. - <_> - - <_> - 12 8 2 2 -1. - <_> - 12 8 2 1 2. - 1 - <_> - - <_> - 6 8 2 2 -1. - <_> - 6 8 1 2 2. - 1 - <_> - - <_> - 13 0 3 3 -1. - <_> - 14 1 1 3 3. - 1 - <_> - - <_> - 4 0 4 4 -1. - <_> - 5 0 2 4 2. - <_> - - <_> - 14 6 4 6 -1. - <_> - 14 8 4 2 3. - <_> - - <_> - 4 5 3 3 -1. - <_> - 5 5 1 3 3. - <_> - - <_> - 12 5 6 6 -1. - <_> - 14 5 2 6 3. - <_> - - <_> - 0 5 6 6 -1. - <_> - 2 5 2 6 3. - <_> - - <_> - 6 0 6 3 -1. - <_> - 6 1 6 1 3. - <_> - - <_> - 4 2 2 2 -1. - <_> - 4 2 2 1 2. - 1 - <_> - - <_> - 5 0 8 6 -1. - <_> - 5 2 8 2 3. - <_> - - <_> - 6 0 5 2 -1. - <_> - 6 1 5 1 2. - <_> - - <_> - 10 8 4 4 -1. - <_> - 11 8 2 4 2. - <_> - - <_> - 6 8 6 3 -1. - <_> - 8 8 2 3 3. - <_> - - <_> - 15 3 1 2 -1. - <_> - 15 4 1 1 2. - <_> - - <_> - 0 5 3 4 -1. - <_> - 0 6 3 2 2. - <_> - - <_> - 15 2 3 9 -1. - <_> - 15 5 3 3 3. - <_> - - <_> - 0 2 3 9 -1. - <_> - 0 5 3 3 3. - <_> - - <_> - 6 1 6 3 -1. - <_> - 8 1 2 3 3. - <_> - - <_> - 0 4 2 4 -1. - <_> - 0 5 2 2 2. - <_> - - <_> - 6 2 6 2 -1. - <_> - 6 3 6 1 2. - <_> - - <_> - 3 0 12 4 -1. - <_> - 3 1 12 2 2. - <_> - - <_> - 13 0 4 1 -1. - <_> - 14 1 2 1 2. - 1 - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 2 0 16 9 -1. - <_> - 2 0 8 9 2. - <_> - - <_> - 1 0 15 12 -1. - <_> - 6 0 5 12 3. - <_> - - <_> - 12 5 3 3 -1. - <_> - 13 5 1 3 3. - <_> - - <_> - 3 5 3 3 -1. - <_> - 4 5 1 3 3. - <_> - - <_> - 15 3 2 3 -1. - <_> - 14 4 2 1 3. - 1 - <_> - - <_> - 3 3 3 2 -1. - <_> - 4 4 1 2 3. - 1 - <_> - - <_> - 13 0 4 1 -1. - <_> - 14 1 2 1 2. - 1 - <_> - - <_> - 5 0 1 4 -1. - <_> - 4 1 1 2 2. - 1 - <_> - - <_> - 12 0 4 5 -1. - <_> - 13 0 2 5 2. - <_> - - <_> - 2 0 4 5 -1. - <_> - 3 0 2 5 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 9 1 2 2. - <_> - - <_> - 0 11 18 1 -1. - <_> - 9 11 9 1 2. - <_> - - <_> - 0 2 18 10 -1. - <_> - 9 2 9 5 2. - <_> - 0 7 9 5 2. - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 8 12 4 2. - <_> - - <_> - 13 7 2 2 -1. - <_> - 14 7 1 1 2. - <_> - 13 8 1 1 2. - <_> - - <_> - 0 10 2 2 -1. - <_> - 0 11 2 1 2. - <_> - - <_> - 13 7 2 2 -1. - <_> - 14 7 1 1 2. - <_> - 13 8 1 1 2. - <_> - - <_> - 3 7 2 2 -1. - <_> - 3 7 1 1 2. - <_> - 4 8 1 1 2. - <_> - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - <_> - - <_> - 7 4 4 3 -1. - <_> - 6 5 4 1 3. - 1 - <_> - - <_> - 15 7 3 2 -1. - <_> - 15 7 3 1 2. - 1 - <_> - - <_> - 3 7 2 3 -1. - <_> - 3 7 1 3 2. - 1 - <_> - - <_> - 14 5 4 7 -1. - <_> - 14 5 2 7 2. - <_> - - <_> - 0 5 4 7 -1. - <_> - 2 5 2 7 2. - <_> - - <_> - 9 0 4 3 -1. - <_> - 10 0 2 3 2. - <_> - - <_> - 3 9 1 2 -1. - <_> - 3 10 1 1 2. - <_> - - <_> - 8 4 3 3 -1. - <_> - 9 4 1 3 3. - <_> - - <_> - 9 3 3 3 -1. - <_> - 8 4 3 1 3. - 1 - <_> - - <_> - 3 3 12 4 -1. - <_> - 3 5 12 2 2. - <_> - - <_> - 6 1 2 4 -1. - <_> - 5 2 2 2 2. - 1 - <_> - - <_> - 9 0 4 4 -1. - <_> - 10 0 2 4 2. - <_> - - <_> - 5 0 4 3 -1. - <_> - 6 0 2 3 2. - <_> - - <_> - 9 9 2 2 -1. - <_> - 10 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 0 6 3 5 -1. - <_> - 1 6 1 5 3. - <_> - - <_> - 15 5 3 7 -1. - <_> - 16 5 1 7 3. - <_> - - <_> - 0 4 4 8 -1. - <_> - 1 4 2 8 2. - <_> - - <_> - 12 3 6 4 -1. - <_> - 12 4 6 2 2. - <_> - - <_> - 0 3 4 4 -1. - <_> - 0 4 4 2 2. - <_> - - <_> - 16 3 1 2 -1. - <_> - 16 4 1 1 2. - <_> - - <_> - 1 3 1 2 -1. - <_> - 1 4 1 1 2. - <_> - - <_> - 7 1 8 3 -1. - <_> - 7 2 8 1 3. - <_> - - <_> - 7 0 4 4 -1. - <_> - 7 1 4 2 2. - <_> - - <_> - 11 1 1 8 -1. - <_> - 9 3 1 4 2. - 1 - <_> - - <_> - 0 6 4 6 -1. - <_> - 0 8 4 2 3. - <_> - - <_> - 10 10 4 2 -1. - <_> - 11 10 2 2 2. - <_> - - <_> - 4 7 9 3 -1. - <_> - 4 8 9 1 3. - <_> - - <_> - 8 7 2 3 -1. - <_> - 8 8 2 1 3. - <_> - - <_> - 0 7 1 2 -1. - <_> - 0 8 1 1 2. - <_> - - <_> - 10 10 4 2 -1. - <_> - 11 10 2 2 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 8 1 2 8 -1. - <_> - 8 3 2 4 2. - <_> - - <_> - 7 6 4 3 -1. - <_> - 7 7 4 1 3. - <_> - - <_> - 8 5 6 3 -1. - <_> - 10 5 2 3 3. - <_> - - <_> - 0 6 1 2 -1. - <_> - 0 7 1 1 2. - <_> - - <_> - 14 6 4 2 -1. - <_> - 15 7 2 2 2. - 1 - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 8 12 4 2. - <_> - - <_> - 10 10 4 2 -1. - <_> - 11 10 2 2 2. - <_> - - <_> - 4 10 4 2 -1. - <_> - 5 10 2 2 2. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 10 8 2 2 -1. - <_> - 10 8 2 1 2. - 1 - <_> - - <_> - 8 2 8 1 -1. - <_> - 8 2 4 1 2. - 1 - <_> - - <_> - 0 0 18 10 -1. - <_> - 0 0 9 10 2. - <_> - - <_> - 8 8 2 2 -1. - <_> - 8 8 1 2 2. - 1 - <_> - - <_> - 8 10 3 1 -1. - <_> - 9 10 1 1 3. - <_> - - <_> - 7 10 3 1 -1. - <_> - 8 10 1 1 3. - <_> - - <_> - 17 2 1 3 -1. - <_> - 17 3 1 1 3. - <_> - - <_> - 0 2 1 3 -1. - <_> - 0 3 1 1 3. - <_> - - <_> - 6 0 10 2 -1. - <_> - 6 0 5 2 2. - <_> - - <_> - 3 0 10 2 -1. - <_> - 8 0 5 2 2. - <_> - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - <_> - - <_> - 4 6 6 4 -1. - <_> - 6 6 2 4 3. - <_> - - <_> - 11 11 2 1 -1. - <_> - 11 11 1 1 2. - <_> - - <_> - 0 11 16 1 -1. - <_> - 8 11 8 1 2. - <_> - - <_> - 14 0 3 8 -1. - <_> - 15 0 1 8 3. - <_> - - <_> - 0 0 8 1 -1. - <_> - 2 0 4 1 2. - <_> - - <_> - 14 0 3 8 -1. - <_> - 15 0 1 8 3. - <_> - - <_> - 1 0 3 8 -1. - <_> - 2 0 1 8 3. - <_> - - <_> - 16 7 2 3 -1. - <_> - 16 7 1 3 2. - 1 - <_> - - <_> - 5 0 6 4 -1. - <_> - 5 0 6 2 2. - 1 - <_> - - <_> - 14 0 4 2 -1. - <_> - 14 0 2 2 2. - <_> - - <_> - 0 0 4 2 -1. - <_> - 2 0 2 2 2. - <_> - - <_> - 9 4 2 6 -1. - <_> - 9 4 2 3 2. - 1 - <_> - - <_> - 4 3 10 4 -1. - <_> - 4 4 10 2 2. - <_> - - <_> - 2 10 16 1 -1. - <_> - 6 10 8 1 2. - <_> - - <_> - 3 9 12 2 -1. - <_> - 9 9 6 2 2. - <_> - - <_> - 10 3 3 4 -1. - <_> - 11 4 1 4 3. - 1 - <_> - - <_> - 4 7 4 1 -1. - <_> - 4 7 2 1 2. - 1 - <_> - - <_> - 10 3 3 4 -1. - <_> - 11 4 1 4 3. - 1 - <_> - - <_> - 8 3 4 3 -1. - <_> - 7 4 4 1 3. - 1 - <_> - - <_> - 16 3 2 1 -1. - <_> - 16 3 1 1 2. - <_> - - <_> - 0 3 2 1 -1. - <_> - 1 3 1 1 2. - <_> - - <_> - 13 0 4 4 -1. - <_> - 14 0 2 4 2. - <_> - - <_> - 1 0 4 4 -1. - <_> - 2 0 2 4 2. - <_> - - <_> - 7 2 5 3 -1. - <_> - 7 3 5 1 3. - <_> - - <_> - 3 3 12 6 -1. - <_> - 3 5 12 2 3. - <_> - - <_> - 13 1 4 1 -1. - <_> - 14 2 2 1 2. - 1 - <_> - - <_> - 5 1 1 4 -1. - <_> - 4 2 1 2 2. - 1 - <_> - - <_> - 16 3 2 2 -1. - <_> - 17 3 1 1 2. - <_> - 16 4 1 1 2. - <_> - - <_> - 0 3 2 2 -1. - <_> - 0 3 1 1 2. - <_> - 1 4 1 1 2. - <_> - - <_> - 10 3 4 4 -1. - <_> - 11 4 2 4 2. - 1 - <_> - - <_> - 5 4 8 2 -1. - <_> - 5 5 8 1 2. - <_> - - <_> - 12 10 1 2 -1. - <_> - 12 11 1 1 2. - <_> - - <_> - 0 0 12 4 -1. - <_> - 0 0 6 2 2. - <_> - 6 2 6 2 2. - <_> - - <_> - 5 1 12 2 -1. - <_> - 11 1 6 1 2. - <_> - 5 2 6 1 2. - <_> - - <_> - 2 1 12 2 -1. - <_> - 2 1 6 1 2. - <_> - 8 2 6 1 2. - <_> - - <_> - 8 0 4 4 -1. - <_> - 9 0 2 4 2. - <_> - - <_> - 6 0 4 4 -1. - <_> - 7 0 2 4 2. - <_> - - <_> - 16 4 2 2 -1. - <_> - 17 4 1 1 2. - <_> - 16 5 1 1 2. - <_> - - <_> - 0 4 2 2 -1. - <_> - 0 4 1 1 2. - <_> - 1 5 1 1 2. - <_> - - <_> - 11 6 4 3 -1. - <_> - 12 6 2 3 2. - <_> - - <_> - 3 6 4 3 -1. - <_> - 4 6 2 3 2. - <_> - - <_> - 14 7 2 3 -1. - <_> - 13 8 2 1 3. - 1 - <_> - - <_> - 4 7 3 2 -1. - <_> - 5 8 1 2 3. - 1 - <_> - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - <_> - - <_> - 0 8 5 4 -1. - <_> - 0 9 5 2 2. - <_> - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - <_> - - <_> - 0 1 2 1 -1. - <_> - 1 1 1 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - <_> - - <_> - 5 6 3 2 -1. - <_> - 6 6 1 2 3. - <_> - - <_> - 10 0 4 5 -1. - <_> - 11 0 2 5 2. - <_> - - <_> - 2 5 4 4 -1. - <_> - 3 5 2 4 2. - <_> - - <_> - 12 0 3 10 -1. - <_> - 13 0 1 10 3. - <_> - - <_> - 3 0 6 5 -1. - <_> - 5 0 2 5 3. - <_> - - <_> - 6 2 6 1 -1. - <_> - 6 2 3 1 2. - <_> - - <_> - 1 0 12 2 -1. - <_> - 1 0 6 1 2. - <_> - 7 1 6 1 2. - <_> - - <_> - 6 0 6 2 -1. - <_> - 6 1 6 1 2. - <_> - - <_> - 0 3 1 4 -1. - <_> - 0 4 1 2 2. - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 14 4 2 6 -1. - <_> - 14 4 2 3 2. - 1 - <_> - - <_> - 3 6 8 4 -1. - <_> - 3 6 4 2 2. - <_> - 7 8 4 2 2. - <_> - - <_> - 11 4 3 4 -1. - <_> - 12 5 1 4 3. - 1 - <_> - - <_> - 7 4 4 3 -1. - <_> - 6 5 4 1 3. - 1 - <_> - - <_> - 7 8 6 3 -1. - <_> - 9 8 2 3 3. - <_> - - <_> - 1 1 16 1 -1. - <_> - 5 1 8 1 2. - <_> - - <_> - 0 0 18 2 -1. - <_> - 6 0 6 2 3. - <_> - - <_> - 7 9 2 1 -1. - <_> - 7 9 1 1 2. - 1 - <_> - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - <_> - - <_> - 6 9 2 1 -1. - <_> - 6 9 1 1 2. - 1 - <_> - - <_> - 14 7 4 3 -1. - <_> - 15 7 2 3 2. - <_> - - <_> - 0 7 4 3 -1. - <_> - 1 7 2 3 2. - <_> - - <_> - 14 10 2 2 -1. - <_> - 15 10 1 1 2. - <_> - 14 11 1 1 2. - <_> - - <_> - 2 10 2 2 -1. - <_> - 2 10 1 1 2. - <_> - 3 11 1 1 2. - <_> - - <_> - 12 2 2 7 -1. - <_> - 12 2 1 7 2. - 1 - <_> - - <_> - 6 2 7 2 -1. - <_> - 6 2 7 1 2. - 1 - <_> - - <_> - 13 2 3 9 -1. - <_> - 14 5 1 3 9. - <_> - - <_> - 0 4 3 4 -1. - <_> - 0 5 3 2 2. - <_> - - <_> - 4 11 14 1 -1. - <_> - 4 11 7 1 2. - <_> - - <_> - 0 11 14 1 -1. - <_> - 7 11 7 1 2. - <_> - - <_> - 14 10 2 2 -1. - <_> - 15 10 1 1 2. - <_> - 14 11 1 1 2. - <_> - - <_> - 2 10 2 2 -1. - <_> - 2 10 1 1 2. - <_> - 3 11 1 1 2. - <_> - - <_> - 6 3 12 9 -1. - <_> - 9 3 6 9 2. - <_> - - <_> - 0 3 12 9 -1. - <_> - 3 3 6 9 2. - <_> - - <_> - 15 11 2 1 -1. - <_> - 15 11 1 1 2. - <_> - - <_> - 3 9 1 2 -1. - <_> - 3 9 1 1 2. - 1 - <_> - - <_> - 6 1 6 6 -1. - <_> - 6 3 6 2 3. - <_> - - <_> - 3 2 12 4 -1. - <_> - 3 3 12 2 2. - <_> - - <_> - 17 8 1 2 -1. - <_> - 17 9 1 1 2. - <_> - - <_> - 2 0 6 5 -1. - <_> - 4 0 2 5 3. - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - <_> - - <_> - 3 1 4 4 -1. - <_> - 4 1 2 4 2. - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - <_> - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - <_> - - <_> - 12 10 6 2 -1. - <_> - 12 11 6 1 2. - <_> - - <_> - 5 0 3 3 -1. - <_> - 6 1 1 3 3. - 1 - <_> - - <_> - 0 5 18 1 -1. - <_> - 6 5 6 1 3. - <_> - - <_> - 5 0 6 4 -1. - <_> - 5 0 6 2 2. - 1 - <_> - - <_> - 12 4 3 5 -1. - <_> - 13 5 1 5 3. - 1 - <_> - - <_> - 6 4 5 3 -1. - <_> - 5 5 5 1 3. - 1 - <_> - - <_> - 14 10 4 2 -1. - <_> - 14 11 4 1 2. - <_> - - <_> - 3 1 3 9 -1. - <_> - 4 1 1 9 3. - <_> - - <_> - 11 7 2 1 -1. - <_> - 11 7 1 1 2. - <_> - - <_> - 5 7 2 1 -1. - <_> - 6 7 1 1 2. - <_> - - <_> - 16 4 2 2 -1. - <_> - 17 4 1 1 2. - <_> - 16 5 1 1 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 8 0 3 12 -1. - <_> - 9 0 1 12 3. - <_> - - <_> - 7 0 3 12 -1. - <_> - 8 0 1 12 3. - <_> - - <_> - 16 4 2 2 -1. - <_> - 17 4 1 1 2. - <_> - 16 5 1 1 2. - <_> - - <_> - 0 4 2 2 -1. - <_> - 0 4 1 1 2. - <_> - 1 5 1 1 2. - <_> - - <_> - 14 2 4 6 -1. - <_> - 14 4 4 2 3. - <_> - - <_> - 0 2 4 6 -1. - <_> - 0 4 4 2 3. - <_> - - <_> - 9 2 2 2 -1. - <_> - 10 2 1 1 2. - <_> - 9 3 1 1 2. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 1 2. - <_> - 8 3 1 1 2. - <_> - - <_> - 13 9 4 3 -1. - <_> - 13 10 4 1 3. - <_> - - <_> - 1 9 4 3 -1. - <_> - 1 10 4 1 3. - <_> - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - <_> - - <_> - 0 3 7 2 -1. - <_> - 0 4 7 1 2. - <_> - - <_> - 4 1 10 4 -1. - <_> - 4 2 10 2 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 9 2 3 4 -1. - <_> - 8 3 3 2 2. - 1 - <_> - - <_> - 6 0 12 3 -1. - <_> - 9 0 6 3 2. - <_> - - <_> - 0 0 6 5 -1. - <_> - 3 0 3 5 2. - <_> - - <_> - 9 3 2 4 -1. - <_> - 8 4 2 2 2. - 1 - <_> - - <_> - 9 3 8 1 -1. - <_> - 9 3 4 1 2. - 1 - <_> - - <_> - 13 6 3 3 -1. - <_> - 14 7 1 3 3. - 1 - <_> - - <_> - 0 0 4 12 -1. - <_> - 0 0 2 6 2. - <_> - 2 6 2 6 2. - <_> - - <_> - 16 1 2 1 -1. - <_> - 16 1 1 1 2. - 1 - <_> - - <_> - 9 0 8 4 -1. - <_> - 9 0 8 2 2. - 1 - <_> - - <_> - 3 1 12 4 -1. - <_> - 3 2 12 2 2. - <_> - - <_> - 5 10 1 2 -1. - <_> - 5 11 1 1 2. - <_> - - <_> - 16 0 2 4 -1. - <_> - 16 0 1 4 2. - <_> - - <_> - 0 0 4 6 -1. - <_> - 1 0 2 6 2. - <_> - - <_> - 12 6 4 2 -1. - <_> - 13 6 2 2 2. - <_> - - <_> - 6 3 6 5 -1. - <_> - 9 3 3 5 2. - <_> - - <_> - 11 4 3 3 -1. - <_> - 12 5 1 3 3. - 1 - <_> - - <_> - 5 1 8 6 -1. - <_> - 5 3 8 2 3. - <_> - - <_> - 6 6 9 6 -1. - <_> - 9 6 3 6 3. - <_> - - <_> - 3 6 9 6 -1. - <_> - 6 6 3 6 3. - <_> - - <_> - 14 1 2 2 -1. - <_> - 14 1 1 2 2. - 1 - <_> - - <_> - 4 1 2 2 -1. - <_> - 4 1 2 1 2. - 1 - <_> - - <_> - 15 5 1 6 -1. - <_> - 15 5 1 3 2. - 1 - <_> - - <_> - 3 5 6 1 -1. - <_> - 3 5 3 1 2. - 1 - <_> - - <_> - 15 0 3 3 -1. - <_> - 16 1 1 3 3. - 1 - <_> - - <_> - 3 0 3 3 -1. - <_> - 2 1 3 1 3. - 1 - <_> - - <_> - 11 5 3 3 -1. - <_> - 12 5 1 3 3. - <_> - - <_> - 3 6 4 2 -1. - <_> - 4 6 2 2 2. - <_> - - <_> - 11 7 2 2 -1. - <_> - 12 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 0 2 2 4 -1. - <_> - 0 3 2 2 2. - <_> - - <_> - 12 5 2 3 -1. - <_> - 12 5 1 3 2. - 1 - <_> - - <_> - 6 5 3 2 -1. - <_> - 6 5 3 1 2. - 1 - <_> - - <_> - 6 1 7 3 -1. - <_> - 6 2 7 1 3. - <_> - - <_> - 3 0 12 4 -1. - <_> - 3 1 12 2 2. - <_> - - <_> - 8 0 4 3 -1. - <_> - 8 1 4 1 3. - <_> - - <_> - 5 2 4 2 -1. - <_> - 6 2 2 2 2. - <_> - - <_> - 9 0 4 3 -1. - <_> - 10 0 2 3 2. - <_> - - <_> - 7 0 4 4 -1. - <_> - 8 0 2 4 2. - <_> - - <_> - 12 6 6 2 -1. - <_> - 14 6 2 2 3. - <_> - - <_> - 0 7 2 4 -1. - <_> - 0 8 2 2 2. - <_> - - <_> - 13 6 5 6 -1. - <_> - 13 8 5 2 3. - <_> - - <_> - 6 10 4 2 -1. - <_> - 7 10 2 2 2. - <_> - - <_> - 13 5 4 3 -1. - <_> - 14 5 2 3 2. - <_> - - <_> - 1 5 4 3 -1. - <_> - 2 5 2 3 2. - <_> - - <_> - 13 6 5 6 -1. - <_> - 13 8 5 2 3. - <_> - - <_> - 0 6 5 6 -1. - <_> - 0 8 5 2 3. - <_> - - <_> - 13 4 1 2 -1. - <_> - 13 5 1 1 2. - <_> - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 15 6 3 2 -1. - <_> - 16 6 1 2 3. - <_> - - <_> - 0 6 3 2 -1. - <_> - 1 6 1 2 3. - <_> - - <_> - 13 4 1 2 -1. - <_> - 13 5 1 1 2. - <_> - - <_> - 4 4 1 2 -1. - <_> - 4 5 1 1 2. - <_> - - <_> - 7 10 6 2 -1. - <_> - 9 10 2 2 3. - <_> - - <_> - 3 10 12 2 -1. - <_> - 7 10 4 2 3. - <_> - - <_> - 11 7 2 2 -1. - <_> - 12 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 2 0 14 12 -1. - <_> - 2 0 7 12 2. - <_> - - <_> - 5 1 8 3 -1. - <_> - 9 1 4 3 2. - <_> - - <_> - 8 0 2 5 -1. - <_> - 8 0 1 5 2. - <_> - - <_> - 7 0 4 3 -1. - <_> - 7 1 4 1 3. - <_> - - <_> - 16 6 2 3 -1. - <_> - 16 7 2 1 3. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 0 1 18 1 -1. - <_> - 6 1 6 1 3. - <_> - - <_> - 5 0 2 1 -1. - <_> - 5 0 1 1 2. - 1 - <_> - - <_> - 17 7 1 4 -1. - <_> - 17 9 1 2 2. - <_> - - <_> - 3 0 4 5 -1. - <_> - 4 0 2 5 2. - <_> - - <_> - 5 3 8 2 -1. - <_> - 5 4 8 1 2. - <_> - - <_> - 6 2 6 6 -1. - <_> - 8 4 2 2 9. - <_> - - <_> - 16 1 2 9 -1. - <_> - 16 4 2 3 3. - <_> - - <_> - 0 1 2 9 -1. - <_> - 0 4 2 3 3. - <_> - - <_> - 0 5 18 4 -1. - <_> - 6 5 6 4 3. - <_> - - <_> - 0 9 16 3 -1. - <_> - 4 9 8 3 2. - <_> - - <_> - 11 0 3 1 -1. - <_> - 12 1 1 1 3. - 1 - <_> - - <_> - 2 6 4 2 -1. - <_> - 3 6 2 2 2. - <_> - - <_> - 10 5 4 4 -1. - <_> - 11 5 2 4 2. - <_> - - <_> - 4 6 3 2 -1. - <_> - 5 6 1 2 3. - <_> - - <_> - 17 8 1 2 -1. - <_> - 17 9 1 1 2. - <_> - - <_> - 0 8 1 2 -1. - <_> - 0 9 1 1 2. - <_> - - <_> - 16 8 2 3 -1. - <_> - 16 9 2 1 3. - <_> - - <_> - 0 8 2 3 -1. - <_> - 0 9 2 1 3. - <_> - - <_> - 6 10 6 2 -1. - <_> - 8 10 2 2 3. - <_> - - <_> - 4 4 4 2 -1. - <_> - 4 4 2 1 2. - <_> - 6 5 2 1 2. - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 7 0 1 3 -1. - <_> - 6 1 1 1 3. - 1 - <_> - - <_> - 3 0 12 8 -1. - <_> - 3 2 12 4 2. - <_> - - <_> - 3 4 2 1 -1. - <_> - 4 4 1 1 2. - <_> - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 1 0 1 2 -1. - <_> - 1 1 1 1 2. - <_> - - <_> - 10 0 8 4 -1. - <_> - 14 0 4 2 2. - <_> - 10 2 4 2 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 8 5 3 3 -1. - <_> - 9 5 1 3 3. - <_> - - <_> - 7 5 3 3 -1. - <_> - 8 5 1 3 3. - <_> - - <_> - 17 10 1 2 -1. - <_> - 17 11 1 1 2. - <_> - - <_> - 0 10 1 2 -1. - <_> - 0 11 1 1 2. - <_> - - <_> - 15 10 2 2 -1. - <_> - 16 10 1 1 2. - <_> - 15 11 1 1 2. - <_> - - <_> - 2 9 2 1 -1. - <_> - 2 9 1 1 2. - 1 - <_> - - <_> - 15 11 2 1 -1. - <_> - 15 11 1 1 2. - <_> - - <_> - 1 11 2 1 -1. - <_> - 2 11 1 1 2. - <_> - - <_> - 14 9 4 2 -1. - <_> - 14 9 2 2 2. - <_> - - <_> - 0 9 4 2 -1. - <_> - 2 9 2 2 2. - <_> - - <_> - 15 7 2 3 -1. - <_> - 14 8 2 1 3. - 1 - <_> - - <_> - 3 9 1 2 -1. - <_> - 3 9 1 1 2. - 1 - <_> - - <_> - 14 8 2 2 -1. - <_> - 14 8 2 1 2. - 1 - <_> - - <_> - 4 8 2 2 -1. - <_> - 4 8 1 2 2. - 1 - <_> - - <_> - 14 8 2 2 -1. - <_> - 14 8 2 1 2. - 1 - <_> - - <_> - 4 8 2 2 -1. - <_> - 4 8 1 2 2. - 1 - <_> - - <_> - 16 6 2 3 -1. - <_> - 16 7 2 1 3. - <_> - - <_> - 2 0 3 9 -1. - <_> - 3 0 1 9 3. - <_> - - <_> - 10 4 3 5 -1. - <_> - 11 4 1 5 3. - <_> - - <_> - 5 4 3 5 -1. - <_> - 6 4 1 5 3. - <_> - - <_> - 9 5 3 3 -1. - <_> - 10 5 1 3 3. - <_> - - <_> - 0 3 6 8 -1. - <_> - 2 3 2 8 3. - <_> - - <_> - 14 0 3 8 -1. - <_> - 15 0 1 8 3. - <_> - - <_> - 1 0 3 8 -1. - <_> - 2 0 1 8 3. - <_> - - <_> - 9 5 3 3 -1. - <_> - 10 5 1 3 3. - <_> - - <_> - 6 0 4 2 -1. - <_> - 7 0 2 2 2. - <_> - - <_> - 10 0 8 4 -1. - <_> - 14 0 4 2 2. - <_> - 10 2 4 2 2. - <_> - - <_> - 0 0 8 4 -1. - <_> - 0 0 4 2 2. - <_> - 4 2 4 2 2. - <_> - - <_> - 9 2 1 8 -1. - <_> - 9 2 1 4 2. - 1 - <_> - - <_> - 9 2 8 1 -1. - <_> - 9 2 4 1 2. - 1 - <_> - - <_> - 11 0 1 2 -1. - <_> - 11 0 1 1 2. - 1 - <_> - - <_> - 0 10 2 2 -1. - <_> - 0 11 2 1 2. - <_> - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - 1 - <_> - - <_> - 2 9 1 2 -1. - <_> - 2 9 1 1 2. - 1 - <_> - - <_> - 16 8 2 4 -1. - <_> - 16 10 2 2 2. - <_> - - <_> - 6 5 3 2 -1. - <_> - 7 5 1 2 3. - <_> - - <_> - 16 7 2 3 -1. - <_> - 15 8 2 1 3. - 1 - <_> - - <_> - 2 7 3 2 -1. - <_> - 3 8 1 2 3. - 1 - <_> - - <_> - 10 3 1 3 -1. - <_> - 10 4 1 1 3. - <_> - - <_> - 0 8 2 4 -1. - <_> - 0 10 2 2 2. - <_> - - <_> - 9 4 2 2 -1. - <_> - 10 4 1 1 2. - <_> - 9 5 1 1 2. - <_> - - <_> - 6 4 6 2 -1. - <_> - 6 4 3 1 2. - <_> - 9 5 3 1 2. - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 4 0 4 2 -1. - <_> - 5 0 2 2 2. - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 6 0 2 3 -1. - <_> - 6 1 2 1 3. - <_> - - <_> - 12 3 1 6 -1. - <_> - 12 5 1 2 3. - <_> - - <_> - 5 3 1 6 -1. - <_> - 5 5 1 2 3. - <_> - - <_> - 11 0 3 2 -1. - <_> - 12 0 1 2 3. - <_> - - <_> - 4 0 10 2 -1. - <_> - 4 0 5 1 2. - <_> - 9 1 5 1 2. - <_> - - <_> - 12 0 3 3 -1. - <_> - 13 1 1 3 3. - 1 - <_> - - <_> - 6 0 3 3 -1. - <_> - 5 1 3 1 3. - 1 - <_> - - <_> - 14 7 2 2 -1. - <_> - 15 7 1 1 2. - <_> - 14 8 1 1 2. - <_> - - <_> - 2 7 2 2 -1. - <_> - 2 7 1 1 2. - <_> - 3 8 1 1 2. - <_> - - <_> - 14 7 2 2 -1. - <_> - 15 7 1 1 2. - <_> - 14 8 1 1 2. - <_> - - <_> - 2 7 2 2 -1. - <_> - 2 7 1 1 2. - <_> - 3 8 1 1 2. - <_> - - <_> - 0 0 18 9 -1. - <_> - 0 0 9 9 2. - <_> - - <_> - 8 8 2 2 -1. - <_> - 9 8 1 2 2. - <_> - - <_> - 6 6 12 6 -1. - <_> - 6 6 6 6 2. - <_> - - <_> - 0 5 14 7 -1. - <_> - 7 5 7 7 2. - <_> - - <_> - 13 0 5 3 -1. - <_> - 12 1 5 1 3. - 1 - <_> - - <_> - 7 0 4 1 -1. - <_> - 9 0 2 1 2. - <_> - - <_> - 8 0 3 2 -1. - <_> - 8 1 3 1 2. - <_> - - <_> - 5 0 3 5 -1. - <_> - 6 1 1 5 3. - 1 - <_> - - <_> - 6 1 6 9 -1. - <_> - 8 4 2 3 9. - <_> - - <_> - 6 0 12 4 -1. - <_> - 9 0 6 4 2. - <_> - - <_> - 0 0 12 4 -1. - <_> - 3 0 6 4 2. - <_> - - <_> - 7 6 6 2 -1. - <_> - 9 6 2 2 3. - <_> - - <_> - 5 6 6 2 -1. - <_> - 7 6 2 2 3. - <_> - - <_> - 7 10 10 2 -1. - <_> - 7 11 10 1 2. - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 8 12 4 2. - <_> - - <_> - 14 5 3 4 -1. - <_> - 15 6 1 4 3. - 1 - <_> - - <_> - 4 5 4 3 -1. - <_> - 3 6 4 1 3. - 1 - <_> - - <_> - 16 0 2 4 -1. - <_> - 16 0 1 4 2. - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 3 1 12 4 -1. - <_> - 3 2 12 2 2. - <_> - - <_> - 1 1 2 1 -1. - <_> - 2 1 1 1 2. - <_> - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - <_> - - <_> - 8 0 2 4 -1. - <_> - 9 0 1 4 2. - <_> - - <_> - 16 8 2 4 -1. - <_> - 16 9 2 2 2. - <_> - - <_> - 7 2 4 2 -1. - <_> - 7 3 4 1 2. - <_> - - <_> - 16 8 2 4 -1. - <_> - 16 9 2 2 2. - <_> - - <_> - 3 1 3 2 -1. - <_> - 3 1 3 1 2. - 1 - <_> - - <_> - 2 5 16 6 -1. - <_> - 10 5 8 3 2. - <_> - 2 8 8 3 2. - <_> - - <_> - 0 8 2 4 -1. - <_> - 0 9 2 2 2. - <_> - - <_> - 10 0 4 3 -1. - <_> - 11 0 2 3 2. - <_> - - <_> - 3 0 6 2 -1. - <_> - 3 1 6 1 2. - <_> - - <_> - 13 0 4 2 -1. - <_> - 14 1 2 2 2. - 1 - <_> - - <_> - 5 0 2 4 -1. - <_> - 4 1 2 2 2. - 1 - <_> - - <_> - 13 4 2 3 -1. - <_> - 12 5 2 1 3. - 1 - <_> - - <_> - 3 5 4 3 -1. - <_> - 4 5 2 3 2. - <_> - - <_> - 10 3 3 5 -1. - <_> - 11 4 1 5 3. - 1 - <_> - - <_> - 0 2 18 2 -1. - <_> - 6 2 6 2 3. - <_> - - <_> - 11 3 3 4 -1. - <_> - 12 4 1 4 3. - 1 - <_> - - <_> - 7 3 4 3 -1. - <_> - 6 4 4 1 3. - 1 - <_> - - <_> - 13 3 3 6 -1. - <_> - 14 5 1 2 9. - <_> - - <_> - 0 0 2 2 -1. - <_> - 1 0 1 2 2. - <_> - - <_> - 15 9 1 2 -1. - <_> - 15 9 1 1 2. - 1 - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 2 2. - 1 - <_> - - <_> - 10 8 2 1 -1. - <_> - 10 8 1 1 2. - <_> - - <_> - 6 8 2 1 -1. - <_> - 7 8 1 1 2. - <_> - - <_> - 9 9 4 3 -1. - <_> - 10 9 2 3 2. - <_> - - <_> - 3 9 2 1 -1. - <_> - 3 9 1 1 2. - 1 - <_> - - <_> - 13 5 3 3 -1. - <_> - 14 5 1 3 3. - <_> - - <_> - 2 5 3 3 -1. - <_> - 3 5 1 3 3. - <_> - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - <_> - - <_> - 4 8 2 2 -1. - <_> - 4 8 1 2 2. - 1 - <_> - - <_> - 14 4 4 6 -1. - <_> - 15 4 2 6 2. - <_> - - <_> - 0 4 4 6 -1. - <_> - 1 4 2 6 2. - <_> - - <_> - 16 7 2 3 -1. - <_> - 16 7 1 3 2. - 1 - <_> - - <_> - 0 10 16 2 -1. - <_> - 4 10 8 2 2. - <_> - - <_> - 3 3 15 9 -1. - <_> - 8 3 5 9 3. - <_> - - <_> - 9 3 4 2 -1. - <_> - 9 3 2 2 2. - 1 - <_> - - <_> - 5 8 8 4 -1. - <_> - 5 9 8 2 2. - <_> - - <_> - 0 10 9 2 -1. - <_> - 0 11 9 1 2. - <_> - - <_> - 2 11 16 1 -1. - <_> - 2 11 8 1 2. - <_> - - <_> - 2 10 2 1 -1. - <_> - 3 10 1 1 2. - <_> - - <_> - 16 7 2 3 -1. - <_> - 16 7 1 3 2. - 1 - <_> - - <_> - 2 7 3 2 -1. - <_> - 2 7 3 1 2. - 1 - <_> - - <_> - 17 4 1 4 -1. - <_> - 17 5 1 2 2. - <_> - - <_> - 5 0 8 4 -1. - <_> - 5 1 8 2 2. - <_> - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - <_> - - <_> - 9 0 2 1 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 17 7 1 2 -1. - <_> - 17 8 1 1 2. - <_> - - <_> - 0 7 1 2 -1. - <_> - 0 8 1 1 2. - <_> - - <_> - 10 7 2 2 -1. - <_> - 11 7 1 1 2. - <_> - 10 8 1 1 2. - <_> - - <_> - 0 6 1 3 -1. - <_> - 0 7 1 1 3. - <_> - - <_> - 10 7 2 2 -1. - <_> - 11 7 1 1 2. - <_> - 10 8 1 1 2. - <_> - - <_> - 0 0 11 8 -1. - <_> - 0 4 11 4 2. - <_> - - <_> - 4 4 10 2 -1. - <_> - 4 5 10 1 2. - <_> - - <_> - 0 3 2 2 -1. - <_> - 0 4 2 1 2. - <_> - - <_> - 12 3 3 6 -1. - <_> - 13 5 1 2 9. - <_> - - <_> - 0 0 18 10 -1. - <_> - 9 0 9 10 2. - <_> - - <_> - 5 2 12 10 -1. - <_> - 9 2 4 10 3. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 3 3 15 9 -1. - <_> - 8 3 5 9 3. - <_> - - <_> - 4 1 2 3 -1. - <_> - 3 2 2 1 3. - 1 - <_> - - <_> - 11 5 6 3 -1. - <_> - 13 6 2 1 9. - <_> - - <_> - 1 5 6 3 -1. - <_> - 3 6 2 1 9. - <_> - - <_> - 5 3 12 9 -1. - <_> - 9 3 4 9 3. - <_> - - <_> - 1 3 12 9 -1. - <_> - 5 3 4 9 3. - <_> - - <_> - 17 1 1 10 -1. - <_> - 17 1 1 5 2. - 1 - <_> - - <_> - 9 3 4 3 -1. - <_> - 8 4 4 1 3. - 1 - <_> - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - <_> - - <_> - 6 10 4 2 -1. - <_> - 7 10 2 2 2. - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 14 6 4 2 -1. - <_> - 15 7 2 2 2. - 1 - <_> - - <_> - 6 10 6 2 -1. - <_> - 8 10 2 2 3. - <_> - - <_> - 15 2 3 3 -1. - <_> - 14 3 3 1 3. - 1 - <_> - - <_> - 3 0 12 8 -1. - <_> - 3 2 12 4 2. - <_> - - <_> - 0 0 18 11 -1. - <_> - 0 0 9 11 2. - <_> - - <_> - 7 6 4 3 -1. - <_> - 7 7 4 1 3. - <_> - - <_> - 9 2 6 3 -1. - <_> - 11 2 2 3 3. - <_> - - <_> - 6 0 2 6 -1. - <_> - 6 0 1 6 2. - 1 - <_> - - <_> - 10 2 4 2 -1. - <_> - 11 2 2 2 2. - <_> - - <_> - 0 3 2 4 -1. - <_> - 1 3 1 4 2. - <_> - - <_> - 14 0 4 1 -1. - <_> - 15 1 2 1 2. - 1 - <_> - - <_> - 4 0 1 4 -1. - <_> - 3 1 1 2 2. - 1 - <_> - - <_> - 14 7 4 1 -1. - <_> - 15 8 2 1 2. - 1 - <_> - - <_> - 4 7 1 4 -1. - <_> - 3 8 1 2 2. - 1 - <_> - - <_> - 5 6 8 2 -1. - <_> - 5 7 8 1 2. - <_> - - <_> - 0 4 5 4 -1. - <_> - 0 5 5 2 2. - <_> - - <_> - 10 0 1 4 -1. - <_> - 9 1 1 2 2. - 1 - <_> - - <_> - 8 0 4 1 -1. - <_> - 9 1 2 1 2. - 1 - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 3 8 3 1 -1. - <_> - 4 9 1 1 3. - 1 - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 4 7 2 2 -1. - <_> - 4 7 1 1 2. - <_> - 5 8 1 1 2. - <_> - - <_> - 14 7 4 4 -1. - <_> - 14 9 4 2 2. - <_> - - <_> - 7 4 3 3 -1. - <_> - 6 5 3 1 3. - 1 - <_> - - <_> - 13 10 2 2 -1. - <_> - 14 10 1 1 2. - <_> - 13 11 1 1 2. - <_> - - <_> - 4 1 4 1 -1. - <_> - 5 1 2 1 2. - <_> - - <_> - 10 0 4 4 -1. - <_> - 11 0 2 4 2. - <_> - - <_> - 4 0 4 4 -1. - <_> - 5 0 2 4 2. - <_> - - <_> - 15 0 2 2 -1. - <_> - 16 0 1 1 2. - <_> - 15 1 1 1 2. - <_> - - <_> - 3 0 12 4 -1. - <_> - 3 1 12 2 2. - <_> - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - <_> - - <_> - 5 0 2 3 -1. - <_> - 5 1 2 1 3. - <_> - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - <_> - - <_> - 1 0 2 2 -1. - <_> - 1 0 1 1 2. - <_> - 2 1 1 1 2. - <_> - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - <_> - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - <_> - - <_> - 17 0 1 3 -1. - <_> - 17 1 1 1 3. - <_> - - <_> - 6 4 3 3 -1. - <_> - 7 5 1 1 9. - <_> - - <_> - 3 9 15 2 -1. - <_> - 8 9 5 2 3. - <_> - - <_> - 1 7 4 4 -1. - <_> - 1 9 4 2 2. - <_> - - <_> - 7 4 4 8 -1. - <_> - 7 4 2 8 2. - <_> - - <_> - 0 0 18 10 -1. - <_> - 0 0 9 5 2. - <_> - 9 5 9 5 2. - <_> - - <_> - 6 5 12 3 -1. - <_> - 6 5 6 3 2. - <_> - - <_> - 5 4 3 3 -1. - <_> - 6 5 1 3 3. - 1 - <_> - - <_> - 17 0 1 3 -1. - <_> - 17 1 1 1 3. - <_> - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - <_> - - <_> - 5 4 9 8 -1. - <_> - 5 8 9 4 2. - <_> - - <_> - 8 1 10 1 -1. - <_> - 8 1 5 1 2. - 1 - <_> - - <_> - 6 9 12 3 -1. - <_> - 9 9 6 3 2. - <_> - - <_> - 0 6 14 6 -1. - <_> - 7 6 7 6 2. - <_> - - <_> - 10 9 8 3 -1. - <_> - 12 9 4 3 2. - <_> - - <_> - 0 9 8 3 -1. - <_> - 2 9 4 3 2. - <_> - - <_> - 10 10 8 2 -1. - <_> - 12 10 4 2 2. - <_> - - <_> - 0 10 8 2 -1. - <_> - 2 10 4 2 2. - <_> - - <_> - 3 3 12 4 -1. - <_> - 3 5 12 2 2. - <_> - - <_> - 7 9 2 1 -1. - <_> - 8 9 1 1 2. - <_> - - <_> - 9 9 4 3 -1. - <_> - 10 9 2 3 2. - <_> - - <_> - 5 9 4 3 -1. - <_> - 6 9 2 3 2. - <_> - - <_> - 14 5 3 1 -1. - <_> - 15 6 1 1 3. - 1 - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 10 3 4 2 -1. - <_> - 11 3 2 2 2. - <_> - - <_> - 4 5 1 3 -1. - <_> - 3 6 1 1 3. - 1 - <_> - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - <_> - - <_> - 0 0 1 3 -1. - <_> - 0 1 1 1 3. - <_> - - <_> - 3 2 15 3 -1. - <_> - 8 2 5 3 3. - <_> - - <_> - 3 2 12 4 -1. - <_> - 6 2 6 4 2. - <_> - - <_> - 7 7 5 3 -1. - <_> - 7 8 5 1 3. - <_> - - <_> - 0 1 12 2 -1. - <_> - 0 1 6 1 2. - <_> - 6 2 6 1 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 5 5 3 3 -1. - <_> - 6 5 1 3 3. - <_> - - <_> - 10 3 4 2 -1. - <_> - 11 3 2 2 2. - <_> - - <_> - 4 3 4 2 -1. - <_> - 5 3 2 2 2. - <_> - - <_> - 9 9 2 2 -1. - <_> - 10 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 15 1 2 2 -1. - <_> - 16 1 1 1 2. - <_> - 15 2 1 1 2. - <_> - - <_> - 6 5 3 3 -1. - <_> - 7 5 1 3 3. - <_> - - <_> - 15 1 2 2 -1. - <_> - 16 1 1 1 2. - <_> - 15 2 1 1 2. - <_> - - <_> - 1 1 2 2 -1. - <_> - 1 1 1 1 2. - <_> - 2 2 1 1 2. - <_> - - <_> - 11 9 2 2 -1. - <_> - 12 9 1 1 2. - <_> - 11 10 1 1 2. - <_> - - <_> - 0 1 1 2 -1. - <_> - 0 2 1 1 2. - <_> - - <_> - 2 0 16 1 -1. - <_> - 2 0 8 1 2. - <_> - - <_> - 9 0 6 6 -1. - <_> - 9 0 3 6 2. - 1 - <_> - - <_> - 11 9 2 2 -1. - <_> - 12 9 1 1 2. - <_> - 11 10 1 1 2. - <_> - - <_> - 0 4 3 8 -1. - <_> - 0 6 3 4 2. - <_> - - <_> - 9 9 2 1 -1. - <_> - 9 9 1 1 2. - <_> - - <_> - 0 5 1 2 -1. - <_> - 0 6 1 1 2. - <_> - - <_> - 12 0 6 6 -1. - <_> - 15 0 3 3 2. - <_> - 12 3 3 3 2. - <_> - - <_> - 2 2 12 4 -1. - <_> - 2 3 12 2 2. - <_> - - <_> - 12 0 6 6 -1. - <_> - 15 0 3 3 2. - <_> - 12 3 3 3 2. - <_> - - <_> - 0 0 6 6 -1. - <_> - 0 0 3 3 2. - <_> - 3 3 3 3 2. - <_> - - <_> - 12 0 3 2 -1. - <_> - 13 1 1 2 3. - 1 - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 9 9 2 2 -1. - <_> - 10 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 0 9 15 1 -1. - <_> - 5 9 5 1 3. - <_> - - <_> - 9 3 1 3 -1. - <_> - 9 4 1 1 3. - <_> - - <_> - 6 0 2 3 -1. - <_> - 5 1 2 1 3. - 1 - <_> - - <_> - 12 0 2 3 -1. - <_> - 12 0 1 3 2. - 1 - <_> - - <_> - 1 10 16 1 -1. - <_> - 5 10 8 1 2. - <_> - - <_> - 17 8 1 4 -1. - <_> - 17 10 1 2 2. - <_> - - <_> - 0 8 1 4 -1. - <_> - 0 10 1 2 2. - <_> - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - 1 - <_> - - <_> - 2 9 1 2 -1. - <_> - 2 9 1 1 2. - 1 - <_> - - <_> - 12 0 2 3 -1. - <_> - 12 0 1 3 2. - 1 - <_> - - <_> - 0 7 1 2 -1. - <_> - 0 8 1 1 2. - <_> - - <_> - 12 0 2 3 -1. - <_> - 12 0 1 3 2. - 1 - <_> - - <_> - 6 0 3 2 -1. - <_> - 6 0 3 1 2. - 1 - <_> - - <_> - 14 1 2 2 -1. - <_> - 15 1 1 1 2. - <_> - 14 2 1 1 2. - <_> - - <_> - 2 1 2 2 -1. - <_> - 2 1 1 1 2. - <_> - 3 2 1 1 2. - <_> - - <_> - 9 1 2 3 -1. - <_> - 9 2 2 1 3. - <_> - - <_> - 1 1 3 6 -1. - <_> - 2 1 1 6 3. - <_> - - <_> - 12 8 1 3 -1. - <_> - 11 9 1 1 3. - 1 - <_> - - <_> - 6 8 3 1 -1. - <_> - 7 9 1 1 3. - 1 - <_> - - <_> - 9 7 4 2 -1. - <_> - 9 7 2 2 2. - <_> - - <_> - 5 7 4 2 -1. - <_> - 7 7 2 2 2. - <_> - - <_> - 9 9 2 2 -1. - <_> - 10 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 8 9 4 1 -1. - <_> - 9 9 2 1 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 15 7 1 4 -1. - <_> - 14 8 1 2 2. - 1 - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 10 2 1 2. - <_> - - <_> - 15 7 1 4 -1. - <_> - 14 8 1 2 2. - 1 - <_> - - <_> - 3 7 4 1 -1. - <_> - 4 8 2 1 2. - 1 - <_> - - <_> - 14 7 2 3 -1. - <_> - 13 8 2 1 3. - 1 - <_> - - <_> - 4 7 3 2 -1. - <_> - 5 8 1 2 3. - 1 - <_> - - <_> - 11 3 6 6 -1. - <_> - 13 5 2 2 9. - <_> - - <_> - 1 3 6 6 -1. - <_> - 3 5 2 2 9. - <_> - - <_> - 13 2 1 9 -1. - <_> - 13 5 1 3 3. - <_> - - <_> - 4 2 1 9 -1. - <_> - 4 5 1 3 3. - <_> - - <_> - 7 5 3 3 -1. - <_> - 6 6 3 1 3. - 1 - <_> - - <_> - 4 3 10 4 -1. - <_> - 4 4 10 2 2. - <_> - - <_> - 0 0 2 6 -1. - <_> - 1 0 1 6 2. - <_> - - <_> - 13 0 4 3 -1. - <_> - 13 0 2 3 2. - 1 - <_> - - <_> - 5 0 3 4 -1. - <_> - 5 0 3 2 2. - 1 - <_> - - <_> - 6 5 6 3 -1. - <_> - 8 6 2 1 9. - <_> - - <_> - 4 0 10 4 -1. - <_> - 4 1 10 2 2. - <_> - - <_> - 7 0 5 3 -1. - <_> - 7 1 5 1 3. - <_> - - <_> - 5 9 6 3 -1. - <_> - 7 9 2 3 3. - <_> - - <_> - 11 6 3 1 -1. - <_> - 12 6 1 1 3. - <_> - - <_> - 0 0 1 9 -1. - <_> - 0 3 1 3 3. - <_> - - <_> - 11 6 3 1 -1. - <_> - 12 6 1 1 3. - <_> - - <_> - 0 2 6 7 -1. - <_> - 2 2 2 7 3. - <_> - - <_> - 11 6 3 1 -1. - <_> - 12 6 1 1 3. - <_> - - <_> - 4 6 3 1 -1. - <_> - 5 6 1 1 3. - <_> - - <_> - 9 0 4 3 -1. - <_> - 10 0 2 3 2. - <_> - - <_> - 5 2 8 3 -1. - <_> - 5 3 8 1 3. - <_> - - <_> - 7 2 4 3 -1. - <_> - 7 3 4 1 3. - <_> - - <_> - 3 0 6 5 -1. - <_> - 5 0 2 5 3. - <_> - - <_> - 8 0 6 5 -1. - <_> - 10 0 2 5 3. - <_> - - <_> - 2 0 4 5 -1. - <_> - 3 0 2 5 2. - <_> - - <_> - 10 0 6 4 -1. - <_> - 12 0 2 4 3. - <_> - - <_> - 2 0 6 4 -1. - <_> - 4 0 2 4 3. - <_> - - <_> - 3 0 12 4 -1. - <_> - 3 1 12 2 2. - <_> - - <_> - 0 10 7 2 -1. - <_> - 0 11 7 1 2. - <_> - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 1 1 2 2. - <_> - - <_> - 6 3 6 2 -1. - <_> - 8 3 2 2 3. - <_> - - <_> - 7 8 4 3 -1. - <_> - 7 9 4 1 3. - <_> - - <_> - 7 8 4 4 -1. - <_> - 7 9 4 2 2. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 2 2. - 1 - <_> - - <_> - 0 3 18 6 -1. - <_> - 9 3 9 3 2. - <_> - 0 6 9 3 2. - <_> - - <_> - 0 11 18 1 -1. - <_> - 9 11 9 1 2. - <_> - - <_> - 12 5 3 3 -1. - <_> - 13 5 1 3 3. - <_> - - <_> - 3 5 3 3 -1. - <_> - 4 5 1 3 3. - <_> - - <_> - 10 6 3 1 -1. - <_> - 11 6 1 1 3. - <_> - - <_> - 5 6 3 1 -1. - <_> - 6 6 1 1 3. - <_> - - <_> - 15 5 3 4 -1. - <_> - 15 6 3 2 2. - <_> - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - <_> - - <_> - 6 4 6 8 -1. - <_> - 8 4 2 8 3. - <_> - - <_> - 0 7 2 4 -1. - <_> - 0 9 2 2 2. - <_> - - <_> - 16 7 2 3 -1. - <_> - 16 7 1 3 2. - 1 - <_> - - <_> - 2 7 3 2 -1. - <_> - 2 7 3 1 2. - 1 - <_> - - <_> - 4 0 10 6 -1. - <_> - 4 2 10 2 3. - <_> - - <_> - 1 0 12 2 -1. - <_> - 1 0 6 1 2. - <_> - 7 1 6 1 2. - <_> - - <_> - 14 0 3 2 -1. - <_> - 15 1 1 2 3. - 1 - <_> - - <_> - 4 0 2 3 -1. - <_> - 3 1 2 1 3. - 1 - <_> - - <_> - 16 7 2 4 -1. - <_> - 16 7 1 4 2. - <_> - - <_> - 0 7 2 4 -1. - <_> - 1 7 1 4 2. - <_> - - <_> - 6 4 8 6 -1. - <_> - 6 7 8 3 2. - <_> - - <_> - 5 6 3 3 -1. - <_> - 6 7 1 1 9. - <_> - - <_> - 9 0 4 4 -1. - <_> - 10 0 2 4 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 8 0 4 2 -1. - <_> - 9 0 2 2 2. - <_> - - <_> - 1 0 10 4 -1. - <_> - 1 0 5 2 2. - <_> - 6 2 5 2 2. - <_> - - <_> - 11 7 2 2 -1. - <_> - 12 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 3 2 1 3 -1. - <_> - 2 3 1 1 3. - 1 - <_> - - <_> - 14 3 4 6 -1. - <_> - 14 5 4 2 3. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 13 7 2 2 -1. - <_> - 14 7 1 1 2. - <_> - 13 8 1 1 2. - <_> - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 3 7 2 2 -1. - <_> - 3 7 1 1 2. - <_> - 4 8 1 1 2. - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 1 9 1 3 -1. - <_> - 1 10 1 1 3. - <_> - - <_> - 6 1 6 3 -1. - <_> - 6 2 6 1 3. - <_> - - <_> - 0 3 4 6 -1. - <_> - 0 5 4 2 3. - <_> - - <_> - 11 1 3 9 -1. - <_> - 12 4 1 3 9. - <_> - - <_> - 0 11 16 1 -1. - <_> - 4 11 8 1 2. - <_> - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - <_> - - <_> - 2 8 2 2 -1. - <_> - 2 8 2 1 2. - 1 - <_> - - <_> - 14 8 4 4 -1. - <_> - 14 10 4 2 2. - <_> - - <_> - 0 4 3 4 -1. - <_> - 0 5 3 2 2. - <_> - - <_> - 15 10 2 2 -1. - <_> - 16 10 1 1 2. - <_> - 15 11 1 1 2. - <_> - - <_> - 1 10 2 2 -1. - <_> - 1 10 1 1 2. - <_> - 2 11 1 1 2. - <_> - - <_> - 15 7 3 1 -1. - <_> - 16 7 1 1 3. - <_> - - <_> - 0 7 3 1 -1. - <_> - 1 7 1 1 3. - <_> - - <_> - 11 3 3 6 -1. - <_> - 12 5 1 2 9. - <_> - - <_> - 4 3 3 6 -1. - <_> - 5 5 1 2 9. - <_> - - <_> - 10 2 1 8 -1. - <_> - 10 2 1 4 2. - 1 - <_> - - <_> - 8 4 3 3 -1. - <_> - 7 5 3 1 3. - 1 - <_> - - <_> - 6 6 6 6 -1. - <_> - 6 9 6 3 2. - <_> - - <_> - 0 8 4 4 -1. - <_> - 0 10 4 2 2. - <_> - - <_> - 11 2 3 7 -1. - <_> - 12 3 1 7 3. - 1 - <_> - - <_> - 5 0 4 3 -1. - <_> - 6 0 2 3 2. - <_> - - <_> - 9 1 4 4 -1. - <_> - 10 1 2 4 2. - <_> - - <_> - 5 0 4 5 -1. - <_> - 6 0 2 5 2. - <_> - - <_> - 0 3 18 1 -1. - <_> - 6 3 6 1 3. - <_> - - <_> - 6 4 2 3 -1. - <_> - 6 5 2 1 3. - <_> - - <_> - 10 2 1 8 -1. - <_> - 10 2 1 4 2. - 1 - <_> - - <_> - 6 10 2 1 -1. - <_> - 7 10 1 1 2. - <_> - - <_> - 10 10 4 1 -1. - <_> - 11 10 2 1 2. - <_> - - <_> - 5 0 6 10 -1. - <_> - 8 0 3 10 2. - <_> - - <_> - 5 1 12 4 -1. - <_> - 8 1 6 4 2. - <_> - - <_> - 0 1 15 5 -1. - <_> - 5 1 5 5 3. - <_> - - <_> - 12 0 1 2 -1. - <_> - 12 0 1 1 2. - 1 - <_> - - <_> - 7 7 3 3 -1. - <_> - 7 8 3 1 3. - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 4 3 1 3 -1. - <_> - 3 4 1 1 3. - 1 - <_> - - <_> - 7 7 4 3 -1. - <_> - 7 8 4 1 3. - <_> - - <_> - 4 10 4 1 -1. - <_> - 5 10 2 1 2. - <_> - - <_> - 14 2 2 2 -1. - <_> - 15 2 1 1 2. - <_> - 14 3 1 1 2. - <_> - - <_> - 2 2 2 2 -1. - <_> - 2 2 1 1 2. - <_> - 3 3 1 1 2. - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 1 0 1 2 -1. - <_> - 1 1 1 1 2. - <_> - - <_> - 1 0 16 2 -1. - <_> - 9 0 8 1 2. - <_> - 1 1 8 1 2. - <_> - - <_> - 8 2 8 1 -1. - <_> - 8 2 4 1 2. - 1 - <_> - - <_> - 14 2 4 3 -1. - <_> - 13 3 4 1 3. - 1 - <_> - - <_> - 4 2 3 4 -1. - <_> - 5 3 1 4 3. - 1 - <_> - - <_> - 15 5 3 4 -1. - <_> - 15 6 3 2 2. - <_> - - <_> - 0 5 3 4 -1. - <_> - 0 6 3 2 2. - <_> - - <_> - 5 2 9 3 -1. - <_> - 8 2 3 3 3. - <_> - - <_> - 3 7 3 2 -1. - <_> - 3 7 3 1 2. - 1 - <_> - - <_> - 13 7 3 1 -1. - <_> - 14 8 1 1 3. - 1 - <_> - - <_> - 6 8 1 3 -1. - <_> - 6 9 1 1 3. - <_> - - <_> - 11 9 2 2 -1. - <_> - 12 9 1 1 2. - <_> - 11 10 1 1 2. - <_> - - <_> - 5 9 2 2 -1. - <_> - 5 9 1 1 2. - <_> - 6 10 1 1 2. - <_> - - <_> - 12 5 2 4 -1. - <_> - 12 5 1 4 2. - 1 - <_> - - <_> - 6 5 4 2 -1. - <_> - 6 5 4 1 2. - 1 - <_> - - <_> - 14 0 2 4 -1. - <_> - 13 1 2 2 2. - 1 - <_> - - <_> - 4 0 4 2 -1. - <_> - 5 1 2 2 2. - 1 - <_> - - <_> - 3 10 15 2 -1. - <_> - 8 10 5 2 3. - <_> - - <_> - 0 1 2 3 -1. - <_> - 0 2 2 1 3. - <_> - - <_> - 11 0 3 7 -1. - <_> - 12 1 1 7 3. - 1 - <_> - - <_> - 4 0 10 2 -1. - <_> - 9 0 5 2 2. - <_> - - <_> - 0 0 18 11 -1. - <_> - 0 0 9 11 2. - <_> - - <_> - 0 0 3 1 -1. - <_> - 1 0 1 1 3. - <_> - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - <_> - - <_> - 1 0 2 1 -1. - <_> - 2 0 1 1 2. - <_> - - <_> - 4 5 14 7 -1. - <_> - 4 5 7 7 2. - <_> - - <_> - 4 3 10 4 -1. - <_> - 4 4 10 2 2. - <_> - - <_> - 8 3 2 3 -1. - <_> - 8 4 2 1 3. - <_> - - <_> - 2 4 12 2 -1. - <_> - 2 5 12 1 2. - <_> - - <_> - 8 6 2 3 -1. - <_> - 8 7 2 1 3. - <_> - - <_> - 1 5 6 3 -1. - <_> - 3 6 2 1 9. - <_> - - <_> - 10 9 1 2 -1. - <_> - 10 9 1 1 2. - 1 - <_> - - <_> - 7 8 2 1 -1. - <_> - 8 8 1 1 2. - <_> - - <_> - 13 9 2 2 -1. - <_> - 14 9 1 1 2. - <_> - 13 10 1 1 2. - <_> - - <_> - 7 0 7 3 -1. - <_> - 6 1 7 1 3. - 1 - <_> - - <_> - 8 4 2 2 -1. - <_> - 9 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 8 3 3 3 -1. - <_> - 7 4 3 1 3. - 1 - <_> - - <_> - 13 9 2 2 -1. - <_> - 14 9 1 1 2. - <_> - 13 10 1 1 2. - <_> - - <_> - 3 9 2 2 -1. - <_> - 3 9 1 1 2. - <_> - 4 10 1 1 2. - <_> - - <_> - 14 7 2 2 -1. - <_> - 15 7 1 1 2. - <_> - 14 8 1 1 2. - <_> - - <_> - 0 5 6 4 -1. - <_> - 0 6 6 2 2. - <_> - - <_> - 14 7 2 2 -1. - <_> - 15 7 1 1 2. - <_> - 14 8 1 1 2. - <_> - - <_> - 2 7 2 2 -1. - <_> - 2 7 1 1 2. - <_> - 3 8 1 1 2. - <_> - - <_> - 12 0 6 6 -1. - <_> - 14 0 2 6 3. - <_> - - <_> - 0 0 6 6 -1. - <_> - 2 0 2 6 3. - <_> - - <_> - 6 2 8 1 -1. - <_> - 6 2 4 1 2. - <_> - - <_> - 4 7 3 2 -1. - <_> - 5 8 1 2 3. - 1 - <_> - - <_> - 11 8 2 1 -1. - <_> - 11 8 1 1 2. - <_> - - <_> - 5 8 2 1 -1. - <_> - 6 8 1 1 2. - <_> - - <_> - 9 8 4 2 -1. - <_> - 10 8 2 2 2. - <_> - - <_> - 5 8 4 2 -1. - <_> - 6 8 2 2 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 0 7 3 -1. - <_> - 9 1 7 1 3. - <_> - - <_> - 6 0 4 3 -1. - <_> - 6 1 4 1 3. - <_> - - <_> - 15 7 3 2 -1. - <_> - 15 7 3 1 2. - 1 - <_> - - <_> - 3 7 2 3 -1. - <_> - 3 7 1 3 2. - 1 - <_> - - <_> - 10 8 8 4 -1. - <_> - 12 8 4 4 2. - <_> - - <_> - 1 8 3 4 -1. - <_> - 2 8 1 4 3. - <_> - - <_> - 14 7 3 3 -1. - <_> - 15 7 1 3 3. - <_> - - <_> - 1 7 3 3 -1. - <_> - 2 7 1 3 3. - <_> - - <_> - 15 10 2 2 -1. - <_> - 16 10 1 1 2. - <_> - 15 11 1 1 2. - <_> - - <_> - 1 10 2 2 -1. - <_> - 1 10 1 1 2. - <_> - 2 11 1 1 2. - <_> - - <_> - 12 11 2 1 -1. - <_> - 12 11 1 1 2. - <_> - - <_> - 4 11 2 1 -1. - <_> - 5 11 1 1 2. - <_> - - <_> - 13 9 1 2 -1. - <_> - 13 9 1 1 2. - 1 - <_> - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - <_> - - <_> - 10 8 8 4 -1. - <_> - 12 8 4 4 2. - <_> - - <_> - 0 8 8 4 -1. - <_> - 2 8 4 4 2. - <_> - - <_> - 10 9 8 2 -1. - <_> - 12 9 4 2 2. - <_> - - <_> - 0 9 8 2 -1. - <_> - 2 9 4 2 2. - <_> - - <_> - 7 10 6 2 -1. - <_> - 9 10 2 2 3. - <_> - - <_> - 7 11 4 1 -1. - <_> - 9 11 2 1 2. - <_> - - <_> - 7 9 5 3 -1. - <_> - 7 10 5 1 3. - <_> - - <_> - 0 4 8 3 -1. - <_> - 0 5 8 1 3. - <_> - - <_> - 8 0 4 2 -1. - <_> - 9 0 2 2 2. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 9 7 2 2 -1. - <_> - 10 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 8 10 2 2 -1. - <_> - 8 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 11 0 3 9 -1. - <_> - 12 0 1 9 3. - <_> - - <_> - 0 4 9 3 -1. - <_> - 3 5 3 1 9. - <_> - - <_> - 9 3 1 2 -1. - <_> - 9 3 1 1 2. - 1 - <_> - - <_> - 9 3 2 1 -1. - <_> - 9 3 1 1 2. - 1 - <_> - - <_> - 10 4 3 6 -1. - <_> - 10 7 3 3 2. - <_> - - <_> - 7 7 2 2 -1. - <_> - 7 7 1 1 2. - <_> - 8 8 1 1 2. - <_> - - <_> - 10 0 1 4 -1. - <_> - 9 1 1 2 2. - 1 - <_> - - <_> - 5 3 8 8 -1. - <_> - 5 3 4 4 2. - <_> - 9 7 4 4 2. - <_> - - <_> - 9 9 3 1 -1. - <_> - 10 9 1 1 3. - <_> - - <_> - 6 9 3 1 -1. - <_> - 7 9 1 1 3. - <_> - - <_> - 7 7 4 4 -1. - <_> - 8 7 2 4 2. - <_> - - <_> - 7 6 2 2 -1. - <_> - 7 6 1 1 2. - <_> - 8 7 1 1 2. - <_> - - <_> - 4 5 14 7 -1. - <_> - 4 5 7 7 2. - <_> - - <_> - 0 10 18 2 -1. - <_> - 6 10 6 2 3. - <_> - - <_> - 6 10 12 2 -1. - <_> - 6 10 6 2 2. - <_> - - <_> - 0 10 12 2 -1. - <_> - 6 10 6 2 2. - <_> - - <_> - 9 4 2 2 -1. - <_> - 10 4 1 1 2. - <_> - 9 5 1 1 2. - <_> - - <_> - 8 1 2 4 -1. - <_> - 8 2 2 2 2. - <_> - - <_> - 10 0 8 2 -1. - <_> - 14 0 4 1 2. - <_> - 10 1 4 1 2. - <_> - - <_> - 0 0 8 2 -1. - <_> - 0 0 4 1 2. - <_> - 4 1 4 1 2. - <_> - - <_> - 11 0 3 9 -1. - <_> - 12 0 1 9 3. - <_> - - <_> - 1 4 1 4 -1. - <_> - 1 5 1 2 2. - <_> - - <_> - 14 4 2 2 -1. - <_> - 15 4 1 1 2. - <_> - 14 5 1 1 2. - <_> - - <_> - 2 4 2 2 -1. - <_> - 2 4 1 1 2. - <_> - 3 5 1 1 2. - <_> - - <_> - 14 4 2 2 -1. - <_> - 15 4 1 1 2. - <_> - 14 5 1 1 2. - <_> - - <_> - 2 4 2 2 -1. - <_> - 2 4 1 1 2. - <_> - 3 5 1 1 2. - <_> - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - <_> - - <_> - 3 2 12 6 -1. - <_> - 3 4 12 2 3. - <_> - - <_> - 0 0 4 3 -1. - <_> - 2 0 2 3 2. - <_> - - <_> - 9 6 4 2 -1. - <_> - 10 6 2 2 2. - <_> - - <_> - 5 6 4 2 -1. - <_> - 6 6 2 2 2. - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 8 12 4 2. - <_> - - <_> - 4 4 5 3 -1. - <_> - 3 5 5 1 3. - 1 - <_> - - <_> - 9 1 9 8 -1. - <_> - 9 5 9 4 2. - <_> - - <_> - 2 0 9 4 -1. - <_> - 5 0 3 4 3. - <_> - - <_> - 8 2 6 2 -1. - <_> - 10 2 2 2 3. - <_> - - <_> - 0 6 16 6 -1. - <_> - 0 6 8 3 2. - <_> - 8 9 8 3 2. - <_> - - <_> - 9 5 3 3 -1. - <_> - 10 6 1 3 3. - 1 - <_> - - <_> - 1 10 12 2 -1. - <_> - 1 11 12 1 2. - <_> - - <_> - 8 1 6 3 -1. - <_> - 10 1 2 3 3. - <_> - - <_> - 5 3 6 6 -1. - <_> - 7 5 2 2 9. - <_> - - <_> - 6 4 6 2 -1. - <_> - 6 5 6 1 2. - <_> - - <_> - 3 1 12 6 -1. - <_> - 3 3 12 2 3. - <_> - - <_> - 15 1 3 1 -1. - <_> - 16 2 1 1 3. - 1 - <_> - - <_> - 3 1 1 3 -1. - <_> - 2 2 1 1 3. - 1 - <_> - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - <_> - - <_> - 4 1 6 4 -1. - <_> - 6 1 2 4 3. - <_> - - <_> - 9 10 4 2 -1. - <_> - 10 10 2 2 2. - <_> - - <_> - 4 6 3 2 -1. - <_> - 5 6 1 2 3. - <_> - - <_> - 14 7 1 4 -1. - <_> - 13 8 1 2 2. - 1 - <_> - - <_> - 5 10 4 2 -1. - <_> - 6 10 2 2 2. - <_> - - <_> - 14 7 1 4 -1. - <_> - 13 8 1 2 2. - 1 - <_> - - <_> - 4 7 4 1 -1. - <_> - 5 8 2 1 2. - 1 - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 0 1 3 2. - 1 - <_> - - <_> - 2 0 3 2 -1. - <_> - 2 0 3 1 2. - 1 - <_> - - <_> - 15 2 2 8 -1. - <_> - 15 4 2 4 2. - <_> - - <_> - 1 2 2 8 -1. - <_> - 1 4 2 4 2. - <_> - - <_> - 13 6 5 6 -1. - <_> - 13 8 5 2 3. - <_> - - <_> - 5 4 3 4 -1. - <_> - 6 4 1 4 3. - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 3 6 3 2 -1. - <_> - 4 6 1 2 3. - <_> - - <_> - 13 6 5 6 -1. - <_> - 13 8 5 2 3. - <_> - - <_> - 0 6 5 6 -1. - <_> - 0 8 5 2 3. - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 11 0 6 5 -1. - <_> - 13 0 2 5 3. - <_> - - <_> - 0 0 18 3 -1. - <_> - 6 0 6 3 3. - <_> - - <_> - 9 0 6 12 -1. - <_> - 9 0 3 12 2. - <_> - - <_> - 3 0 6 12 -1. - <_> - 6 0 3 12 2. - <_> - - <_> - 0 0 18 11 -1. - <_> - 0 0 9 11 2. - <_> - - <_> - 6 0 6 4 -1. - <_> - 6 1 6 2 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 7 1 4 1 2. - <_> - - <_> - 5 0 4 3 -1. - <_> - 6 0 2 3 2. - <_> - - <_> - 6 1 6 8 -1. - <_> - 8 1 2 8 3. - <_> - - <_> - 4 0 3 2 -1. - <_> - 4 0 3 1 2. - 1 - <_> - - <_> - 16 7 2 4 -1. - <_> - 16 8 2 2 2. - <_> - - <_> - 0 6 18 6 -1. - <_> - 0 6 9 3 2. - <_> - 9 9 9 3 2. - <_> - - <_> - 0 6 18 1 -1. - <_> - 6 6 6 1 3. - <_> - - <_> - 4 0 3 3 -1. - <_> - 3 1 3 1 3. - 1 - <_> - - <_> - 5 1 8 4 -1. - <_> - 5 2 8 2 2. - <_> - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - <_> - - <_> - 9 4 1 4 -1. - <_> - 8 5 1 2 2. - 1 - <_> - - <_> - 0 9 2 2 -1. - <_> - 1 9 1 2 2. - <_> - - <_> - 16 7 2 4 -1. - <_> - 16 8 2 2 2. - <_> - - <_> - 3 7 2 3 -1. - <_> - 2 8 2 1 3. - 1 - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 0 10 3 2 -1. - <_> - 0 11 3 1 2. - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 8 7 2 3 -1. - <_> - 8 8 2 1 3. - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 1 9 1 3 -1. - <_> - 1 10 1 1 3. - <_> - - <_> - 15 8 2 2 -1. - <_> - 15 8 1 2 2. - 1 - <_> - - <_> - 3 8 2 2 -1. - <_> - 3 8 2 1 2. - 1 - <_> - - <_> - 13 9 1 2 -1. - <_> - 13 9 1 1 2. - 1 - <_> - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - <_> - - <_> - 6 8 6 3 -1. - <_> - 6 9 6 1 3. - <_> - - <_> - 4 7 4 1 -1. - <_> - 4 7 2 1 2. - 1 - <_> - - <_> - 7 8 4 3 -1. - <_> - 7 9 4 1 3. - <_> - - <_> - 1 8 1 2 -1. - <_> - 1 9 1 1 2. - <_> - - <_> - 9 2 1 6 -1. - <_> - 7 4 1 2 3. - 1 - <_> - - <_> - 6 4 6 2 -1. - <_> - 6 4 3 1 2. - <_> - 9 5 3 1 2. - <_> - - <_> - 15 4 3 3 -1. - <_> - 15 5 3 1 3. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 1 1 2 2. - <_> - - <_> - 14 4 2 3 -1. - <_> - 13 5 2 1 3. - 1 - <_> - - <_> - 7 0 8 2 -1. - <_> - 7 0 8 1 2. - 1 - <_> - - <_> - 7 4 4 3 -1. - <_> - 7 5 4 1 3. - <_> - - <_> - 0 2 2 4 -1. - <_> - 0 3 2 2 2. - <_> - - <_> - 16 0 2 10 -1. - <_> - 16 0 2 5 2. - 1 - <_> - - <_> - 3 5 3 1 -1. - <_> - 4 6 1 1 3. - 1 - <_> - - <_> - 17 1 1 10 -1. - <_> - 17 1 1 5 2. - 1 - <_> - - <_> - 1 1 10 1 -1. - <_> - 1 1 5 1 2. - 1 - <_> - - <_> - 13 1 3 9 -1. - <_> - 14 1 1 9 3. - <_> - - <_> - 0 5 4 5 -1. - <_> - 1 5 2 5 2. - <_> - - <_> - 14 3 2 1 -1. - <_> - 14 3 1 1 2. - 1 - <_> - - <_> - 6 0 4 3 -1. - <_> - 7 0 2 3 2. - <_> - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - <_> - - <_> - 1 2 3 6 -1. - <_> - 2 2 1 6 3. - <_> - - <_> - 11 0 1 3 -1. - <_> - 10 1 1 1 3. - 1 - <_> - - <_> - 8 0 1 3 -1. - <_> - 8 1 1 1 3. - <_> - - <_> - 16 7 2 4 -1. - <_> - 16 8 2 2 2. - <_> - - <_> - 0 7 2 4 -1. - <_> - 0 8 2 2 2. - <_> - - <_> - 6 1 12 2 -1. - <_> - 12 1 6 1 2. - <_> - 6 2 6 1 2. - <_> - - <_> - 7 2 6 3 -1. - <_> - 6 3 6 1 3. - 1 - <_> - - <_> - 11 7 2 1 -1. - <_> - 11 7 1 1 2. - <_> - - <_> - 9 3 8 1 -1. - <_> - 9 3 4 1 2. - 1 - <_> - - <_> - 11 5 4 4 -1. - <_> - 12 5 2 4 2. - <_> - - <_> - 4 0 10 8 -1. - <_> - 4 2 10 4 2. - <_> - - <_> - 3 5 12 4 -1. - <_> - 6 5 6 4 2. - <_> - - <_> - 6 11 4 1 -1. - <_> - 7 11 2 1 2. - <_> - - <_> - 7 11 6 1 -1. - <_> - 9 11 2 1 3. - <_> - - <_> - 0 1 2 1 -1. - <_> - 1 1 1 1 2. - <_> - - <_> - 14 4 2 3 -1. - <_> - 13 5 2 1 3. - 1 - <_> - - <_> - 0 3 18 9 -1. - <_> - 6 3 6 9 3. - <_> - - <_> - 6 9 12 3 -1. - <_> - 9 9 6 3 2. - <_> - - <_> - 0 10 18 2 -1. - <_> - 6 10 6 2 3. - <_> - - <_> - 2 11 15 1 -1. - <_> - 7 11 5 1 3. - <_> - - <_> - 4 4 3 2 -1. - <_> - 5 5 1 2 3. - 1 - <_> - - <_> - 10 2 4 6 -1. - <_> - 12 2 2 3 2. - <_> - 10 5 2 3 2. - <_> - - <_> - 4 2 4 6 -1. - <_> - 4 2 2 3 2. - <_> - 6 5 2 3 2. - <_> - - <_> - 9 4 2 2 -1. - <_> - 10 4 1 1 2. - <_> - 9 5 1 1 2. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 11 1 4 1 -1. - <_> - 12 2 2 1 2. - 1 - <_> - - <_> - 7 1 1 4 -1. - <_> - 6 2 1 2 2. - 1 - <_> - - <_> - 8 5 3 1 -1. - <_> - 9 5 1 1 3. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 16 4 2 4 -1. - <_> - 16 5 2 2 2. - <_> - - <_> - 0 4 2 4 -1. - <_> - 0 5 2 2 2. - <_> - - <_> - 3 1 12 2 -1. - <_> - 9 1 6 1 2. - <_> - 3 2 6 1 2. - <_> - - <_> - 6 6 5 6 -1. - <_> - 6 9 5 3 2. - <_> - - <_> - 9 0 6 1 -1. - <_> - 11 0 2 1 3. - <_> - - <_> - 5 6 2 4 -1. - <_> - 4 7 2 2 2. - 1 - <_> - - <_> - 14 1 3 3 -1. - <_> - 15 2 1 3 3. - 1 - <_> - - <_> - 4 1 3 3 -1. - <_> - 3 2 3 1 3. - 1 - <_> - - <_> - 14 0 3 3 -1. - <_> - 13 1 3 1 3. - 1 - <_> - - <_> - 3 0 12 6 -1. - <_> - 3 2 12 2 3. - <_> - - <_> - 9 0 1 2 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 13 1 3 9 -1. - <_> - 14 1 1 9 3. - <_> - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - <_> - - <_> - 6 2 12 9 -1. - <_> - 9 2 6 9 2. - <_> - - <_> - 0 2 12 9 -1. - <_> - 3 2 6 9 2. - <_> - - <_> - 11 7 2 3 -1. - <_> - 10 8 2 1 3. - 1 - <_> - - <_> - 7 7 3 2 -1. - <_> - 8 8 1 2 3. - 1 - <_> - - <_> - 9 1 5 3 -1. - <_> - 9 2 5 1 3. - <_> - - <_> - 9 0 2 1 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 12 0 3 2 -1. - <_> - 13 1 1 2 3. - 1 - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 11 0 3 2 -1. - <_> - 12 1 1 2 3. - 1 - <_> - - <_> - 6 0 2 3 -1. - <_> - 5 1 2 1 3. - 1 - <_> - - <_> - 2 0 14 3 -1. - <_> - 2 0 7 3 2. - <_> - - <_> - 9 4 3 2 -1. - <_> - 10 5 1 2 3. - 1 - <_> - - <_> - 15 8 1 3 -1. - <_> - 14 9 1 1 3. - 1 - <_> - - <_> - 3 8 3 1 -1. - <_> - 4 9 1 1 3. - 1 - <_> - - <_> - 15 2 1 2 -1. - <_> - 15 3 1 1 2. - <_> - - <_> - 4 5 6 6 -1. - <_> - 4 8 6 3 2. - <_> - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - <_> - - <_> - 2 7 3 2 -1. - <_> - 3 8 1 2 3. - 1 - <_> - - <_> - 16 8 2 2 -1. - <_> - 16 8 1 2 2. - <_> - - <_> - 0 8 2 2 -1. - <_> - 1 8 1 2 2. - <_> - - <_> - 11 0 1 3 -1. - <_> - 10 1 1 1 3. - 1 - <_> - - <_> - 5 3 6 3 -1. - <_> - 4 4 6 1 3. - 1 - <_> - - <_> - 10 3 6 6 -1. - <_> - 12 5 2 2 9. - <_> - - <_> - 2 3 6 6 -1. - <_> - 4 5 2 2 9. - <_> - - <_> - 6 9 6 2 -1. - <_> - 6 10 6 1 2. - <_> - - <_> - 6 9 6 3 -1. - <_> - 6 10 6 1 3. - <_> - - <_> - 10 8 2 2 -1. - <_> - 10 8 2 1 2. - 1 - <_> - - <_> - 8 8 2 2 -1. - <_> - 8 8 1 2 2. - 1 - <_> - - <_> - 6 9 12 3 -1. - <_> - 9 9 6 3 2. - <_> - - <_> - 0 9 2 1 -1. - <_> - 1 9 1 1 2. - <_> - - <_> - 9 0 6 4 -1. - <_> - 9 1 6 2 2. - <_> - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 9 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 9 3 6 3 -1. - <_> - 8 4 6 1 3. - 1 - <_> - - <_> - 9 4 2 2 -1. - <_> - 10 4 1 1 2. - <_> - 9 5 1 1 2. - <_> - - <_> - 6 2 7 3 -1. - <_> - 5 3 7 1 3. - 1 - <_> - - <_> - 6 4 12 4 -1. - <_> - 12 4 6 2 2. - <_> - 6 6 6 2 2. - <_> - - <_> - 1 10 12 1 -1. - <_> - 5 10 4 1 3. - <_> - - <_> - 3 2 12 2 -1. - <_> - 9 2 6 1 2. - <_> - 3 3 6 1 2. - <_> - - <_> - 2 2 1 2 -1. - <_> - 2 3 1 1 2. - <_> - - <_> - 14 0 4 2 -1. - <_> - 14 0 4 1 2. - 1 - <_> - - <_> - 0 10 1 2 -1. - <_> - 0 11 1 1 2. - <_> - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - <_> - - <_> - 2 1 3 9 -1. - <_> - 3 1 1 9 3. - <_> - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - <_> - - <_> - 4 6 2 2 -1. - <_> - 4 6 1 1 2. - <_> - 5 7 1 1 2. - <_> - - <_> - 7 10 6 1 -1. - <_> - 9 10 2 1 3. - <_> - - <_> - 0 8 4 4 -1. - <_> - 0 9 4 2 2. - <_> - - <_> - 7 0 4 4 -1. - <_> - 8 0 2 4 2. - <_> - - <_> - 2 2 6 3 -1. - <_> - 4 2 2 3 3. - <_> - - <_> - 8 3 9 1 -1. - <_> - 11 3 3 1 3. - <_> - - <_> - 1 3 9 1 -1. - <_> - 4 3 3 1 3. - <_> - - <_> - 14 0 4 2 -1. - <_> - 14 0 4 1 2. - 1 - <_> - - <_> - 4 0 2 4 -1. - <_> - 4 0 1 4 2. - 1 - <_> - - <_> - 11 4 4 5 -1. - <_> - 12 4 2 5 2. - <_> - - <_> - 3 4 4 5 -1. - <_> - 4 4 2 5 2. - <_> - - <_> - 13 6 3 2 -1. - <_> - 14 6 1 2 3. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 10 6 6 3 -1. - <_> - 12 7 2 1 9. - <_> - - <_> - 0 1 6 10 -1. - <_> - 2 1 2 10 3. - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 9 1 3 2. - <_> - - <_> - 0 9 2 3 -1. - <_> - 1 9 1 3 2. - <_> - - <_> - 15 8 3 4 -1. - <_> - 16 8 1 4 3. - <_> - - <_> - 0 9 1 2 -1. - <_> - 0 10 1 1 2. - <_> - - <_> - 15 8 3 4 -1. - <_> - 16 8 1 4 3. - <_> - - <_> - 0 8 3 4 -1. - <_> - 1 8 1 4 3. - <_> - - <_> - 6 9 6 2 -1. - <_> - 8 9 2 2 3. - <_> - - <_> - 7 6 4 2 -1. - <_> - 7 6 4 1 2. - 1 - <_> - - <_> - 15 8 2 2 -1. - <_> - 15 8 2 1 2. - 1 - <_> - - <_> - 5 11 6 1 -1. - <_> - 7 11 2 1 3. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 11 3 1 -1. - <_> - 8 11 1 1 3. - <_> - - <_> - 8 11 3 1 -1. - <_> - 9 11 1 1 3. - <_> - - <_> - 7 11 3 1 -1. - <_> - 8 11 1 1 3. - <_> - - <_> - 8 11 3 1 -1. - <_> - 9 11 1 1 3. - <_> - - <_> - 7 11 3 1 -1. - <_> - 8 11 1 1 3. - <_> - - <_> - 15 8 2 2 -1. - <_> - 15 8 2 1 2. - 1 - <_> - - <_> - 3 8 2 2 -1. - <_> - 3 8 1 2 2. - 1 - <_> - - <_> - 9 11 2 1 -1. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 11 2 1 -1. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 11 2 1 -1. - <_> - 9 11 1 1 2. - <_> - - <_> - 5 1 8 11 -1. - <_> - 9 1 4 11 2. - <_> - - <_> - 10 0 6 4 -1. - <_> - 10 1 6 2 2. - <_> - - <_> - 0 5 10 4 -1. - <_> - 0 5 5 2 2. - <_> - 5 7 5 2 2. - <_> - - <_> - 4 3 10 9 -1. - <_> - 4 6 10 3 3. - <_> - - <_> - 0 0 2 9 -1. - <_> - 0 3 2 3 3. - <_> - - <_> - 8 0 4 10 -1. - <_> - 8 0 2 10 2. - <_> - - <_> - 6 0 4 10 -1. - <_> - 8 0 2 10 2. - <_> - - <_> - 9 1 6 3 -1. - <_> - 11 1 2 3 3. - <_> - - <_> - 3 1 6 3 -1. - <_> - 5 1 2 3 3. - <_> - - <_> - 9 3 2 2 -1. - <_> - 10 3 1 1 2. - <_> - 9 4 1 1 2. - <_> - - <_> - 6 0 3 1 -1. - <_> - 7 1 1 1 3. - 1 - <_> - - <_> - 10 0 6 4 -1. - <_> - 10 1 6 2 2. - <_> - - <_> - 2 0 6 4 -1. - <_> - 2 1 6 2 2. - <_> - - <_> - 13 2 4 1 -1. - <_> - 14 3 2 1 2. - 1 - <_> - - <_> - 2 3 2 1 -1. - <_> - 3 3 1 1 2. - <_> - - <_> - 9 3 2 2 -1. - <_> - 10 3 1 1 2. - <_> - 9 4 1 1 2. - <_> - - <_> - 7 3 2 2 -1. - <_> - 7 3 1 1 2. - <_> - 8 4 1 1 2. - <_> - - <_> - 14 3 3 1 -1. - <_> - 15 4 1 1 3. - 1 - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 14 3 3 1 -1. - <_> - 15 4 1 1 3. - 1 - <_> - - <_> - 7 6 2 2 -1. - <_> - 7 6 1 1 2. - <_> - 8 7 1 1 2. - <_> - - <_> - 6 5 8 4 -1. - <_> - 10 5 4 2 2. - <_> - 6 7 4 2 2. - <_> - - <_> - 4 5 8 4 -1. - <_> - 4 5 4 2 2. - <_> - 8 7 4 2 2. - <_> - - <_> - 10 3 6 6 -1. - <_> - 12 5 2 2 9. - <_> - - <_> - 2 3 6 6 -1. - <_> - 4 5 2 2 9. - <_> - - <_> - 15 3 3 4 -1. - <_> - 15 4 3 2 2. - <_> - - <_> - 0 3 3 4 -1. - <_> - 0 4 3 2 2. - <_> - - <_> - 14 3 3 1 -1. - <_> - 15 4 1 1 3. - 1 - <_> - - <_> - 4 3 1 3 -1. - <_> - 3 4 1 1 3. - 1 - <_> - - <_> - 9 4 1 4 -1. - <_> - 8 5 1 2 2. - 1 - <_> - - <_> - 5 4 6 8 -1. - <_> - 7 4 2 8 3. - <_> - - <_> - 4 5 14 7 -1. - <_> - 4 5 7 7 2. - <_> - - <_> - 4 4 10 4 -1. - <_> - 9 4 5 4 2. - <_> - - <_> - 12 1 1 2 -1. - <_> - 12 2 1 1 2. - <_> - - <_> - 0 11 16 1 -1. - <_> - 8 11 8 1 2. - <_> - - <_> - 9 11 2 1 -1. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - <_> - - <_> - 9 9 2 2 -1. - <_> - 10 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 7 8 4 2 -1. - <_> - 8 8 2 2 2. - <_> - - <_> - 0 9 12 3 -1. - <_> - 3 9 6 3 2. - <_> - - <_> - 6 3 6 9 -1. - <_> - 6 3 3 9 2. - <_> - - <_> - 8 0 8 1 -1. - <_> - 10 2 4 1 2. - 1 - <_> - - <_> - 12 6 1 3 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 0 4 1 4 -1. - <_> - 0 5 1 2 2. - <_> - - <_> - 9 5 1 4 -1. - <_> - 8 6 1 2 2. - 1 - <_> - - <_> - 2 6 12 3 -1. - <_> - 2 7 12 1 3. - <_> - - <_> - 12 6 1 3 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 5 6 1 3 -1. - <_> - 5 7 1 1 3. - <_> - - <_> - 0 0 18 2 -1. - <_> - 6 0 6 2 3. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 9 0 6 1 -1. - <_> - 11 0 2 1 3. - <_> - - <_> - 0 3 1 3 -1. - <_> - 0 4 1 1 3. - <_> - - <_> - 13 1 4 4 -1. - <_> - 15 1 2 2 2. - <_> - 13 3 2 2 2. - <_> - - <_> - 6 0 3 2 -1. - <_> - 6 0 3 1 2. - 1 - <_> - - <_> - 13 1 4 4 -1. - <_> - 15 1 2 2 2. - <_> - 13 3 2 2 2. - <_> - - <_> - 1 1 4 4 -1. - <_> - 1 1 2 2 2. - <_> - 3 3 2 2 2. - <_> - - <_> - 9 0 6 1 -1. - <_> - 11 0 2 1 3. - <_> - - <_> - 0 8 2 2 -1. - <_> - 0 8 1 1 2. - <_> - 1 9 1 1 2. - <_> - - <_> - 12 6 5 6 -1. - <_> - 12 9 5 3 2. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 13 2 3 2 -1. - <_> - 14 3 1 2 3. - 1 - <_> - - <_> - 5 2 2 3 -1. - <_> - 4 3 2 1 3. - 1 - <_> - - <_> - 8 8 2 2 -1. - <_> - 8 9 2 1 2. - <_> - - <_> - 4 6 10 6 -1. - <_> - 4 9 10 3 2. - <_> - - <_> - 0 2 18 4 -1. - <_> - 9 2 9 2 2. - <_> - 0 4 9 2 2. - <_> - - <_> - 3 0 3 2 -1. - <_> - 4 1 1 2 3. - 1 - <_> - - <_> - 11 0 6 1 -1. - <_> - 13 0 2 1 3. - <_> - - <_> - 1 0 6 1 -1. - <_> - 3 0 2 1 3. - <_> - - <_> - 9 0 6 1 -1. - <_> - 11 0 2 1 3. - <_> - - <_> - 3 0 6 1 -1. - <_> - 5 0 2 1 3. - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 1 2 1 3. - <_> - - <_> - 4 1 6 3 -1. - <_> - 4 2 6 1 3. - <_> - - <_> - 7 0 4 2 -1. - <_> - 9 0 2 1 2. - <_> - 7 1 2 1 2. - <_> - - <_> - 8 0 4 1 -1. - <_> - 9 1 2 1 2. - 1 - <_> - - <_> - 12 0 4 5 -1. - <_> - 13 0 2 5 2. - <_> - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - <_> - - <_> - 13 6 3 3 -1. - <_> - 14 7 1 3 3. - 1 - <_> - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - <_> - - <_> - 6 0 12 3 -1. - <_> - 9 0 6 3 2. - <_> - - <_> - 0 0 4 8 -1. - <_> - 2 0 2 8 2. - <_> - - <_> - 11 6 4 2 -1. - <_> - 12 6 2 2 2. - <_> - - <_> - 3 6 4 2 -1. - <_> - 4 6 2 2 2. - <_> - - <_> - 6 4 6 3 -1. - <_> - 6 5 6 1 3. - <_> - - <_> - 6 0 3 4 -1. - <_> - 6 0 3 2 2. - 1 - <_> - - <_> - 5 4 12 8 -1. - <_> - 5 8 12 4 2. - <_> - - <_> - 0 9 12 2 -1. - <_> - 3 9 6 2 2. - <_> - - <_> - 6 0 12 2 -1. - <_> - 12 0 6 1 2. - <_> - 6 1 6 1 2. - <_> - - <_> - 7 7 1 3 -1. - <_> - 7 8 1 1 3. - <_> - - <_> - 14 8 2 2 -1. - <_> - 14 8 2 1 2. - 1 - <_> - - <_> - 4 8 2 2 -1. - <_> - 4 8 1 2 2. - 1 - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 7 0 6 4 -1. - <_> - 9 0 2 4 3. - <_> - - <_> - 5 0 6 4 -1. - <_> - 7 0 2 4 3. - <_> - - <_> - 3 0 12 3 -1. - <_> - 7 1 4 1 9. - <_> - - <_> - 3 0 12 4 -1. - <_> - 3 1 12 2 2. - <_> - - <_> - 16 2 2 1 -1. - <_> - 16 2 1 1 2. - <_> - - <_> - 0 1 2 4 -1. - <_> - 1 1 1 4 2. - <_> - - <_> - 10 0 4 3 -1. - <_> - 11 0 2 3 2. - <_> - - <_> - 6 6 1 3 -1. - <_> - 5 7 1 1 3. - 1 - <_> - - <_> - 12 6 4 1 -1. - <_> - 13 6 2 1 2. - <_> - - <_> - 4 6 2 1 -1. - <_> - 5 6 1 1 2. - <_> - - <_> - 10 0 4 3 -1. - <_> - 11 0 2 3 2. - <_> - - <_> - 4 0 4 3 -1. - <_> - 5 0 2 3 2. - <_> - - <_> - 15 6 3 2 -1. - <_> - 16 6 1 2 3. - <_> - - <_> - 0 6 3 2 -1. - <_> - 1 6 1 2 3. - <_> - - <_> - 13 9 5 3 -1. - <_> - 13 10 5 1 3. - <_> - - <_> - 0 9 6 3 -1. - <_> - 0 10 6 1 3. - <_> - - <_> - 9 3 1 6 -1. - <_> - 7 5 1 2 3. - 1 - <_> - - <_> - 5 2 8 3 -1. - <_> - 5 3 8 1 3. - <_> - - <_> - 8 2 2 3 -1. - <_> - 8 3 2 1 3. - <_> - - <_> - 6 1 2 3 -1. - <_> - 5 2 2 1 3. - 1 - <_> - - <_> - 15 3 3 4 -1. - <_> - 15 5 3 2 2. - <_> - - <_> - 0 3 3 4 -1. - <_> - 0 5 3 2 2. - <_> - - <_> - 9 3 1 6 -1. - <_> - 7 5 1 2 3. - 1 - <_> - - <_> - 9 3 6 1 -1. - <_> - 11 5 2 1 3. - 1 - <_> - - <_> - 3 1 15 3 -1. - <_> - 8 1 5 3 3. - <_> - - <_> - 2 1 6 3 -1. - <_> - 4 1 2 3 3. - <_> - - <_> - 16 1 2 3 -1. - <_> - 16 1 1 3 2. - 1 - <_> - - <_> - 2 1 3 2 -1. - <_> - 2 1 3 1 2. - 1 - <_> - - <_> - 14 0 3 2 -1. - <_> - 15 1 1 2 3. - 1 - <_> - - <_> - 4 0 2 3 -1. - <_> - 3 1 2 1 3. - 1 - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 5 5 3 1 -1. - <_> - 6 5 1 1 3. - <_> - - <_> - 9 9 4 3 -1. - <_> - 10 9 2 3 2. - <_> - - <_> - 6 10 6 2 -1. - <_> - 8 10 2 2 3. - <_> - - <_> - 9 5 3 1 -1. - <_> - 10 5 1 1 3. - <_> - - <_> - 8 8 2 3 -1. - <_> - 8 9 2 1 3. - <_> - - <_> - 11 0 2 2 -1. - <_> - 11 0 2 1 2. - 1 - <_> - - <_> - 0 5 2 5 -1. - <_> - 1 5 1 5 2. - <_> - - <_> - 16 4 2 4 -1. - <_> - 16 5 2 2 2. - <_> - - <_> - 9 9 2 1 -1. - <_> - 9 9 1 1 2. - 1 - <_> - - <_> - 8 9 4 3 -1. - <_> - 9 9 2 3 2. - <_> - - <_> - 3 6 12 5 -1. - <_> - 6 6 6 5 2. - <_> - - <_> - 11 0 2 2 -1. - <_> - 11 0 2 1 2. - 1 - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 2 2. - 1 - <_> - - <_> - 9 5 3 1 -1. - <_> - 10 5 1 1 3. - <_> - - <_> - 7 2 4 3 -1. - <_> - 6 3 4 1 3. - 1 - <_> - - <_> - 9 5 3 2 -1. - <_> - 10 5 1 2 3. - <_> - - <_> - 6 5 3 2 -1. - <_> - 7 5 1 2 3. - <_> - - <_> - 0 9 18 3 -1. - <_> - 6 9 6 3 3. - <_> - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - <_> - - <_> - 12 5 3 3 -1. - <_> - 13 6 1 1 9. - <_> - - <_> - 1 9 15 3 -1. - <_> - 6 10 5 1 9. - <_> - - <_> - 16 4 2 4 -1. - <_> - 16 5 2 2 2. - <_> - - <_> - 3 5 3 3 -1. - <_> - 4 6 1 1 9. - <_> - - <_> - 16 4 2 4 -1. - <_> - 16 5 2 2 2. - <_> - - <_> - 5 4 6 1 -1. - <_> - 7 4 2 1 3. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - <_> - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - <_> - - <_> - 10 3 1 3 -1. - <_> - 10 4 1 1 3. - <_> - - <_> - 0 4 6 6 -1. - <_> - 0 6 6 2 3. - <_> - - <_> - 16 4 2 4 -1. - <_> - 16 5 2 2 2. - <_> - - <_> - 0 4 2 4 -1. - <_> - 0 5 2 2 2. - <_> - - <_> - 15 7 2 3 -1. - <_> - 14 8 2 1 3. - 1 - <_> - - <_> - 0 7 3 4 -1. - <_> - 1 7 1 4 3. - <_> - - <_> - 13 10 2 2 -1. - <_> - 14 10 1 1 2. - <_> - 13 11 1 1 2. - <_> - - <_> - 1 6 3 3 -1. - <_> - 2 7 1 1 9. - <_> - - <_> - 13 8 2 2 -1. - <_> - 13 8 2 1 2. - 1 - <_> - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 2 2. - 1 - <_> - - <_> - 9 5 1 3 -1. - <_> - 8 6 1 1 3. - 1 - <_> - - <_> - 9 5 3 1 -1. - <_> - 10 6 1 1 3. - 1 - <_> - - <_> - 11 9 2 2 -1. - <_> - 12 9 1 1 2. - <_> - 11 10 1 1 2. - <_> - - <_> - 5 9 2 2 -1. - <_> - 5 9 1 1 2. - <_> - 6 10 1 1 2. - <_> - - <_> - 9 7 2 3 -1. - <_> - 9 8 2 1 3. - <_> - - <_> - 0 5 12 4 -1. - <_> - 0 5 6 2 2. - <_> - 6 7 6 2 2. - <_> - - <_> - 11 4 3 4 -1. - <_> - 12 5 1 4 3. - 1 - <_> - - <_> - 6 3 5 3 -1. - <_> - 5 4 5 1 3. - 1 - <_> - - <_> - 13 4 3 1 -1. - <_> - 14 5 1 1 3. - 1 - <_> - - <_> - 5 4 5 3 -1. - <_> - 4 5 5 1 3. - 1 - <_> - - <_> - 10 8 4 4 -1. - <_> - 11 8 2 4 2. - <_> - - <_> - 4 8 4 4 -1. - <_> - 5 8 2 4 2. - <_> - - <_> - 13 7 3 2 -1. - <_> - 14 8 1 2 3. - 1 - <_> - - <_> - 1 6 12 4 -1. - <_> - 1 6 6 2 2. - <_> - 7 8 6 2 2. - <_> - - <_> - 8 5 10 6 -1. - <_> - 13 5 5 3 2. - <_> - 8 8 5 3 2. - <_> - - <_> - 0 7 2 2 -1. - <_> - 0 8 2 1 2. - <_> - - <_> - 9 0 8 2 -1. - <_> - 11 0 4 2 2. - <_> - - <_> - 1 0 8 2 -1. - <_> - 3 0 4 2 2. - <_> - - <_> - 13 0 4 3 -1. - <_> - 14 0 2 3 2. - <_> - - <_> - 1 0 4 3 -1. - <_> - 2 0 2 3 2. - <_> - - <_> - 14 7 2 2 -1. - <_> - 15 7 1 1 2. - <_> - 14 8 1 1 2. - <_> - - <_> - 6 9 4 3 -1. - <_> - 7 9 2 3 2. - <_> - - <_> - 5 8 9 1 -1. - <_> - 8 8 3 1 3. - <_> - - <_> - 2 7 2 2 -1. - <_> - 2 7 1 1 2. - <_> - 3 8 1 1 2. - <_> - - <_> - 13 8 1 3 -1. - <_> - 13 9 1 1 3. - <_> - - <_> - 1 5 3 3 -1. - <_> - 2 6 1 1 9. - <_> - - <_> - 8 9 4 1 -1. - <_> - 9 9 2 1 2. - <_> - - <_> - 4 8 1 3 -1. - <_> - 4 9 1 1 3. - <_> - - <_> - 3 10 14 2 -1. - <_> - 10 10 7 1 2. - <_> - 3 11 7 1 2. - <_> - - <_> - 4 9 10 3 -1. - <_> - 4 10 10 1 3. - <_> - - <_> - 6 6 6 6 -1. - <_> - 6 9 6 3 2. - <_> - - <_> - 7 8 4 3 -1. - <_> - 7 9 4 1 3. - <_> - - <_> - 5 0 8 6 -1. - <_> - 5 2 8 2 3. - <_> - - <_> - 5 8 8 3 -1. - <_> - 5 9 8 1 3. - <_> - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - <_> - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 12 2. - <_> - - <_> - 10 11 2 1 -1. - <_> - 10 11 1 1 2. - <_> - - <_> - 6 11 2 1 -1. - <_> - 7 11 1 1 2. - <_> - - <_> - 10 11 2 1 -1. - <_> - 10 11 1 1 2. - <_> - - <_> - 6 11 2 1 -1. - <_> - 7 11 1 1 2. - <_> - - <_> - 6 0 12 2 -1. - <_> - 6 0 6 2 2. - <_> - - <_> - 0 0 12 1 -1. - <_> - 6 0 6 1 2. - <_> - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - <_> - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - <_> - - <_> - 7 1 4 4 -1. - <_> - 8 1 2 4 2. - <_> - - <_> - 8 3 2 2 -1. - <_> - 8 3 1 2 2. - 1 - <_> - - <_> - 10 2 1 3 -1. - <_> - 10 3 1 1 3. - <_> - - <_> - 7 2 1 3 -1. - <_> - 7 3 1 1 3. - <_> - - <_> - 15 8 3 4 -1. - <_> - 15 9 3 2 2. - <_> - - <_> - 0 8 3 4 -1. - <_> - 0 9 3 2 2. - <_> - - <_> - 14 4 2 2 -1. - <_> - 15 4 1 1 2. - <_> - 14 5 1 1 2. - <_> - - <_> - 2 4 2 2 -1. - <_> - 2 4 1 1 2. - <_> - 3 5 1 1 2. - <_> - - <_> - 14 7 4 5 -1. - <_> - 14 7 2 5 2. - <_> - - <_> - 0 7 4 5 -1. - <_> - 2 7 2 5 2. - <_> - - <_> - 13 2 4 1 -1. - <_> - 14 3 2 1 2. - 1 - <_> - - <_> - 5 2 1 4 -1. - <_> - 4 3 1 2 2. - 1 - <_> - - <_> - 13 7 1 3 -1. - <_> - 13 8 1 1 3. - <_> - - <_> - 0 9 1 2 -1. - <_> - 0 10 1 1 2. - <_> - - <_> - 13 7 1 3 -1. - <_> - 13 8 1 1 3. - <_> - - <_> - 4 7 1 3 -1. - <_> - 4 8 1 1 3. - <_> - - <_> - 13 2 5 6 -1. - <_> - 13 4 5 2 3. - <_> - - <_> - 0 2 5 6 -1. - <_> - 0 4 5 2 3. - <_> - - <_> - 11 3 2 6 -1. - <_> - 11 6 2 3 2. - <_> - - <_> - 3 0 3 2 -1. - <_> - 4 1 1 2 3. - 1 - <_> - - <_> - 9 0 4 3 -1. - <_> - 9 1 4 1 3. - <_> - - <_> - 6 0 6 2 -1. - <_> - 9 0 3 2 2. - <_> - - <_> - 10 4 3 6 -1. - <_> - 10 7 3 3 2. - <_> - - <_> - 5 4 3 6 -1. - <_> - 5 7 3 3 2. - <_> - - <_> - 4 3 10 1 -1. - <_> - 4 3 5 1 2. - <_> - - <_> - 1 9 2 2 -1. - <_> - 1 9 1 1 2. - <_> - 2 10 1 1 2. - <_> - - <_> - 15 9 2 2 -1. - <_> - 16 9 1 1 2. - <_> - 15 10 1 1 2. - <_> - - <_> - 1 9 2 2 -1. - <_> - 1 9 1 1 2. - <_> - 2 10 1 1 2. - <_> - - <_> - 15 8 3 1 -1. - <_> - 16 9 1 1 3. - 1 - <_> - - <_> - 3 8 1 3 -1. - <_> - 2 9 1 1 3. - 1 - <_> - - <_> - 11 7 2 3 -1. - <_> - 10 8 2 1 3. - 1 - <_> - - <_> - 7 7 3 2 -1. - <_> - 8 8 1 2 3. - 1 - <_> - - <_> - 7 5 6 4 -1. - <_> - 9 5 2 4 3. - <_> - - <_> - 4 7 4 2 -1. - <_> - 6 7 2 2 2. - <_> - - <_> - 16 10 2 2 -1. - <_> - 16 11 2 1 2. - <_> - - <_> - 4 7 3 1 -1. - <_> - 5 7 1 1 3. - <_> - - <_> - 16 10 2 2 -1. - <_> - 16 11 2 1 2. - <_> - - <_> - 0 10 12 2 -1. - <_> - 0 10 6 1 2. - <_> - 6 11 6 1 2. - <_> - - <_> - 7 0 4 1 -1. - <_> - 8 0 2 1 2. - <_> - - <_> - 0 0 14 2 -1. - <_> - 0 0 7 1 2. - <_> - 7 1 7 1 2. - <_> - - <_> - 10 1 1 3 -1. - <_> - 10 2 1 1 3. - <_> - - <_> - 3 10 2 2 -1. - <_> - 3 10 1 1 2. - <_> - 4 11 1 1 2. - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 7 9 4 2 -1. - <_> - 8 9 2 2 2. - <_> - - <_> - 15 2 2 4 -1. - <_> - 16 2 1 2 2. - <_> - 15 4 1 2 2. - <_> - - <_> - 0 5 3 1 -1. - <_> - 1 5 1 1 3. - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 0 6 3 4 -1. - <_> - 0 7 3 2 2. - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 15 1 3 1 -1. - <_> - 16 2 1 1 3. - 1 - <_> - - <_> - 9 3 6 1 -1. - <_> - 9 3 3 1 2. - 1 - <_> - - <_> - 12 0 3 1 -1. - <_> - 13 1 1 1 3. - 1 - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 12 0 3 1 -1. - <_> - 13 1 1 1 3. - 1 - <_> - - <_> - 6 0 1 3 -1. - <_> - 5 1 1 1 3. - 1 - <_> - - <_> - 6 0 8 3 -1. - <_> - 6 1 8 1 3. - <_> - - <_> - 5 0 3 1 -1. - <_> - 6 1 1 1 3. - 1 - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 2 2 3 2. - <_> - - <_> - 0 1 1 4 -1. - <_> - 0 2 1 2 2. - <_> - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - 1 - <_> - - <_> - 2 9 1 2 -1. - <_> - 2 9 1 1 2. - 1 - <_> - - <_> - 15 1 3 1 -1. - <_> - 16 2 1 1 3. - 1 - <_> - - <_> - 3 1 1 3 -1. - <_> - 2 2 1 1 3. - 1 - <_> - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - <_> - - <_> - 4 7 2 2 -1. - <_> - 4 7 1 1 2. - <_> - 5 8 1 1 2. - <_> - - <_> - 13 0 2 4 -1. - <_> - 13 1 2 2 2. - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 10 0 1 1 2. - <_> - 9 1 1 1 2. - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 3 3 12 6 -1. - <_> - 6 3 6 6 2. - <_> - - <_> - 5 2 6 7 -1. - <_> - 7 2 2 7 3. - <_> - - <_> - 6 1 6 3 -1. - <_> - 6 1 3 3 2. - <_> - - <_> - 5 2 4 2 -1. - <_> - 6 2 2 2 2. - <_> - - <_> - 8 8 2 2 -1. - <_> - 9 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 1 4 2 2 -1. - <_> - 1 4 1 1 2. - <_> - 2 5 1 1 2. - <_> - - <_> - 15 1 3 3 -1. - <_> - 14 2 3 1 3. - 1 - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 3 3. - 1 - <_> - - <_> - 9 3 3 3 -1. - <_> - 10 4 1 3 3. - 1 - <_> - - <_> - 4 9 2 1 -1. - <_> - 4 9 1 1 2. - 1 - <_> - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - 1 - <_> - - <_> - 0 3 2 9 -1. - <_> - 1 3 1 9 2. - <_> - - <_> - 5 3 12 2 -1. - <_> - 9 3 4 2 3. - <_> - - <_> - 2 8 2 2 -1. - <_> - 2 8 1 2 2. - 1 - <_> - - <_> - 16 10 2 2 -1. - <_> - 16 11 2 1 2. - <_> - - <_> - 0 10 2 2 -1. - <_> - 0 11 2 1 2. - <_> - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - 1 - <_> - - <_> - 2 9 1 2 -1. - <_> - 2 9 1 1 2. - 1 - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 13 7 3 2 -1. - <_> - 14 8 1 2 3. - 1 - <_> - - <_> - 5 7 2 3 -1. - <_> - 4 8 2 1 3. - 1 - <_> - - <_> - 5 5 11 6 -1. - <_> - 5 8 11 3 2. - <_> - - <_> - 6 8 2 2 -1. - <_> - 6 8 1 1 2. - <_> - 7 9 1 1 2. - <_> - - <_> - 10 7 2 2 -1. - <_> - 11 7 1 1 2. - <_> - 10 8 1 1 2. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 10 3 3 6 -1. - <_> - 11 4 1 6 3. - 1 - <_> - - <_> - 8 3 6 3 -1. - <_> - 7 4 6 1 3. - 1 - <_> - - <_> - 5 6 8 4 -1. - <_> - 9 6 4 2 2. - <_> - 5 8 4 2 2. - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 11 4 6 3 -1. - <_> - 13 5 2 1 9. - <_> - - <_> - 1 0 4 1 -1. - <_> - 2 0 2 1 2. - <_> - - <_> - 11 4 6 3 -1. - <_> - 13 5 2 1 9. - <_> - - <_> - 1 4 6 3 -1. - <_> - 3 5 2 1 9. - <_> - - <_> - 11 0 6 9 -1. - <_> - 13 0 2 9 3. - <_> - - <_> - 1 0 6 9 -1. - <_> - 3 0 2 9 3. - <_> - - <_> - 11 3 3 6 -1. - <_> - 12 5 1 2 9. - <_> - - <_> - 3 0 12 6 -1. - <_> - 3 2 12 2 3. - <_> - - <_> - 12 0 3 2 -1. - <_> - 13 1 1 2 3. - 1 - <_> - - <_> - 0 0 16 2 -1. - <_> - 8 0 8 2 2. - <_> - - <_> - 12 0 4 5 -1. - <_> - 13 0 2 5 2. - <_> - - <_> - 0 1 2 6 -1. - <_> - 0 3 2 2 3. - <_> - - <_> - 14 2 4 3 -1. - <_> - 14 2 2 3 2. - 1 - <_> - - <_> - 4 3 3 6 -1. - <_> - 5 5 1 2 9. - <_> - - <_> - 3 0 12 8 -1. - <_> - 3 4 12 4 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 9 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 4 3 3 2 -1. - <_> - 5 4 1 2 3. - 1 - <_> - - <_> - 12 0 3 2 -1. - <_> - 13 1 1 2 3. - 1 - <_> - - <_> - 6 0 2 3 -1. - <_> - 5 1 2 1 3. - 1 - <_> - - <_> - 13 0 2 4 -1. - <_> - 13 1 2 2 2. - <_> - - <_> - 3 0 2 4 -1. - <_> - 3 1 2 2 2. - <_> - - <_> - 9 0 8 4 -1. - <_> - 9 1 8 2 2. - <_> - - <_> - 2 3 6 3 -1. - <_> - 4 4 2 1 9. - <_> - - <_> - 6 11 12 1 -1. - <_> - 10 11 4 1 3. - <_> - - <_> - 0 11 12 1 -1. - <_> - 4 11 4 1 3. - <_> - - <_> - 14 11 2 1 -1. - <_> - 14 11 1 1 2. - <_> - - <_> - 0 5 14 7 -1. - <_> - 7 5 7 7 2. - <_> - - <_> - 14 11 2 1 -1. - <_> - 14 11 1 1 2. - <_> - - <_> - 2 11 2 1 -1. - <_> - 3 11 1 1 2. - <_> - - <_> - 14 11 2 1 -1. - <_> - 14 11 1 1 2. - <_> - - <_> - 2 11 2 1 -1. - <_> - 3 11 1 1 2. - <_> - - <_> - 14 10 2 1 -1. - <_> - 14 10 1 1 2. - <_> - - <_> - 2 10 2 1 -1. - <_> - 3 10 1 1 2. - <_> - - <_> - 14 10 2 1 -1. - <_> - 14 10 1 1 2. - <_> - - <_> - 2 10 2 1 -1. - <_> - 3 10 1 1 2. - <_> - - <_> - 15 8 2 2 -1. - <_> - 15 8 2 1 2. - 1 - <_> - - <_> - 3 8 2 2 -1. - <_> - 3 8 1 2 2. - 1 - <_> - - <_> - 12 11 2 1 -1. - <_> - 12 11 1 1 2. - <_> - - <_> - 4 11 2 1 -1. - <_> - 5 11 1 1 2. - <_> - - <_> - 14 2 4 3 -1. - <_> - 14 2 2 3 2. - 1 - <_> - - <_> - 8 1 10 1 -1. - <_> - 8 1 5 1 2. - 1 - <_> - - <_> - 14 2 4 3 -1. - <_> - 14 2 2 3 2. - 1 - <_> - - <_> - 4 2 3 4 -1. - <_> - 4 2 3 2 2. - 1 - <_> - - <_> - 10 2 6 4 -1. - <_> - 12 2 2 4 3. - <_> - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - <_> - - <_> - 4 3 11 4 -1. - <_> - 4 4 11 2 2. - <_> - - <_> - 0 0 12 3 -1. - <_> - 4 0 4 3 3. - <_> - - <_> - 13 6 3 3 -1. - <_> - 14 7 1 3 3. - 1 - <_> - - <_> - 5 6 3 3 -1. - <_> - 4 7 3 1 3. - 1 - <_> - - <_> - 9 4 5 6 -1. - <_> - 9 7 5 3 2. - <_> - - <_> - 8 4 3 3 -1. - <_> - 7 5 3 1 3. - 1 - <_> - - <_> - 13 4 3 5 -1. - <_> - 14 5 1 5 3. - 1 - <_> - - <_> - 0 0 2 7 -1. - <_> - 1 0 1 7 2. - <_> - - <_> - 12 5 3 2 -1. - <_> - 13 6 1 2 3. - 1 - <_> - - <_> - 4 0 10 4 -1. - <_> - 4 1 10 2 2. - <_> - - <_> - 12 5 3 2 -1. - <_> - 13 6 1 2 3. - 1 - <_> - - <_> - 5 4 3 3 -1. - <_> - 4 5 3 1 3. - 1 - <_> - - <_> - 9 4 4 6 -1. - <_> - 9 7 4 3 2. - <_> - - <_> - 6 3 6 3 -1. - <_> - 6 4 6 1 3. - <_> - - <_> - 11 0 4 5 -1. - <_> - 12 0 2 5 2. - <_> - - <_> - 3 0 4 5 -1. - <_> - 4 0 2 5 2. - <_> - - <_> - 13 0 3 3 -1. - <_> - 14 1 1 3 3. - 1 - <_> - - <_> - 0 6 18 6 -1. - <_> - 0 6 9 3 2. - <_> - 9 9 9 3 2. - <_> - - <_> - 13 0 3 3 -1. - <_> - 14 1 1 3 3. - 1 - <_> - - <_> - 5 0 3 3 -1. - <_> - 4 1 3 1 3. - 1 - <_> - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - <_> - - <_> - 4 9 2 1 -1. - <_> - 4 9 1 1 2. - 1 - <_> - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - <_> - - <_> - 6 9 2 1 -1. - <_> - 6 9 1 1 2. - 1 - <_> - - <_> - 10 10 1 2 -1. - <_> - 10 11 1 1 2. - <_> - - <_> - 6 9 6 2 -1. - <_> - 8 9 2 2 3. - <_> - - <_> - 16 0 2 10 -1. - <_> - 16 0 2 5 2. - 1 - <_> - - <_> - 2 0 3 2 -1. - <_> - 2 0 3 1 2. - 1 - <_> - - <_> - 14 3 2 1 -1. - <_> - 14 3 1 1 2. - 1 - <_> - - <_> - 2 1 3 2 -1. - <_> - 2 1 3 1 2. - 1 - <_> - - <_> - 16 0 2 10 -1. - <_> - 16 0 2 5 2. - 1 - <_> - - <_> - 2 0 10 2 -1. - <_> - 2 0 5 2 2. - 1 - <_> - - <_> - 17 6 1 4 -1. - <_> - 17 8 1 2 2. - <_> - - <_> - 0 6 1 4 -1. - <_> - 0 8 1 2 2. - <_> - - <_> - 6 11 12 1 -1. - <_> - 9 11 6 1 2. - <_> - - <_> - 0 6 6 2 -1. - <_> - 2 6 2 2 3. - <_> - - <_> - 11 5 3 3 -1. - <_> - 12 5 1 3 3. - <_> - - <_> - 4 5 3 3 -1. - <_> - 5 5 1 3 3. - <_> - - <_> - 9 0 4 3 -1. - <_> - 10 0 2 3 2. - <_> - - <_> - 0 11 6 1 -1. - <_> - 3 11 3 1 2. - <_> - - <_> - 6 3 9 2 -1. - <_> - 9 3 3 2 3. - <_> - - <_> - 5 0 4 3 -1. - <_> - 6 0 2 3 2. - <_> - - <_> - 3 3 15 1 -1. - <_> - 8 3 5 1 3. - <_> - - <_> - 5 0 4 3 -1. - <_> - 5 1 4 1 3. - <_> - - <_> - 10 0 4 2 -1. - <_> - 10 1 4 1 2. - <_> - - <_> - 2 3 9 2 -1. - <_> - 5 3 3 2 3. - <_> - - <_> - 11 5 1 3 -1. - <_> - 10 6 1 1 3. - 1 - <_> - - <_> - 0 3 3 4 -1. - <_> - 0 4 3 2 2. - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 7 5 3 1 -1. - <_> - 8 6 1 1 3. - 1 - <_> - - <_> - 17 0 1 6 -1. - <_> - 17 2 1 2 3. - <_> - - <_> - 0 5 10 6 -1. - <_> - 0 5 5 3 2. - <_> - 5 8 5 3 2. - <_> - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - <_> - - <_> - 5 6 3 2 -1. - <_> - 6 6 1 2 3. - <_> - - <_> - 5 0 12 4 -1. - <_> - 11 0 6 2 2. - <_> - 5 2 6 2 2. - <_> - - <_> - 1 0 12 4 -1. - <_> - 1 0 6 2 2. - <_> - 7 2 6 2 2. - <_> - - <_> - 17 1 1 4 -1. - <_> - 17 2 1 2 2. - <_> - - <_> - 3 5 3 3 -1. - <_> - 4 5 1 3 3. - <_> - - <_> - 17 0 1 4 -1. - <_> - 17 2 1 2 2. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 2 1 2 2. - <_> - - <_> - 12 0 1 2 -1. - <_> - 12 0 1 1 2. - 1 - <_> - - <_> - 5 9 4 2 -1. - <_> - 6 9 2 2 2. - <_> - - <_> - 12 1 6 6 -1. - <_> - 12 4 6 3 2. - <_> - - <_> - 4 5 6 1 -1. - <_> - 4 5 3 1 2. - 1 - <_> - - <_> - 5 6 9 6 -1. - <_> - 5 9 9 3 2. - <_> - - <_> - 5 7 2 1 -1. - <_> - 6 7 1 1 2. - <_> - - <_> - 10 0 4 5 -1. - <_> - 11 0 2 5 2. - <_> - - <_> - 4 0 4 5 -1. - <_> - 5 0 2 5 2. - <_> - - <_> - 15 7 3 1 -1. - <_> - 16 7 1 1 3. - <_> - - <_> - 0 7 3 1 -1. - <_> - 1 7 1 1 3. - <_> - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - <_> - - <_> - 6 1 4 3 -1. - <_> - 7 1 2 3 2. - <_> - - <_> - 8 5 3 1 -1. - <_> - 9 5 1 1 3. - <_> - - <_> - 1 0 12 2 -1. - <_> - 1 0 6 1 2. - <_> - 7 1 6 1 2. - <_> - - <_> - 15 0 3 3 -1. - <_> - 15 1 3 1 3. - <_> - - <_> - 0 0 3 3 -1. - <_> - 0 1 3 1 3. - <_> - - <_> - 8 2 4 1 -1. - <_> - 8 2 2 1 2. - <_> - - <_> - 8 0 2 1 -1. - <_> - 8 0 1 1 2. - 1 - <_> - - <_> - 10 1 1 3 -1. - <_> - 10 2 1 1 3. - <_> - - <_> - 6 11 6 1 -1. - <_> - 8 11 2 1 3. - <_> - - <_> - 13 4 5 4 -1. - <_> - 13 5 5 2 2. - <_> - - <_> - 0 4 5 4 -1. - <_> - 0 5 5 2 2. - <_> - - <_> - 10 4 3 6 -1. - <_> - 10 7 3 3 2. - <_> - - <_> - 5 7 4 1 -1. - <_> - 6 7 2 1 2. - <_> - - <_> - 10 8 2 4 -1. - <_> - 10 9 2 2 2. - <_> - - <_> - 2 7 14 3 -1. - <_> - 9 7 7 3 2. - <_> - - <_> - 5 9 8 1 -1. - <_> - 5 9 4 1 2. - <_> - - <_> - 0 11 16 1 -1. - <_> - 8 11 8 1 2. - <_> - - <_> - 13 5 4 5 -1. - <_> - 14 5 2 5 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 13 5 4 5 -1. - <_> - 14 5 2 5 2. - <_> - - <_> - 1 5 4 5 -1. - <_> - 2 5 2 5 2. - <_> - - <_> - 11 3 3 6 -1. - <_> - 12 5 1 2 9. - <_> - - <_> - 2 7 4 1 -1. - <_> - 3 8 2 1 2. - 1 - <_> - - <_> - 10 0 2 10 -1. - <_> - 10 0 1 10 2. - 1 - <_> - - <_> - 8 0 10 2 -1. - <_> - 8 0 10 1 2. - 1 - <_> - - <_> - 12 0 1 4 -1. - <_> - 11 1 1 2 2. - 1 - <_> - - <_> - 7 4 4 3 -1. - <_> - 6 5 4 1 3. - 1 - <_> - - <_> - 16 6 2 3 -1. - <_> - 16 7 2 1 3. - <_> - - <_> - 0 6 2 3 -1. - <_> - 0 7 2 1 3. - <_> - - <_> - 14 11 4 1 -1. - <_> - 15 11 2 1 2. - <_> - - <_> - 0 11 4 1 -1. - <_> - 1 11 2 1 2. - <_> - - <_> - 13 9 1 2 -1. - <_> - 13 9 1 1 2. - 1 - <_> - - <_> - 7 5 3 1 -1. - <_> - 8 5 1 1 3. - <_> - - <_> - 9 4 2 2 -1. - <_> - 10 4 1 1 2. - <_> - 9 5 1 1 2. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 1 0 16 1 -1. - <_> - 5 0 8 1 2. - <_> - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - <_> - - <_> - 11 0 6 5 -1. - <_> - 13 0 2 5 3. - <_> - - <_> - 0 0 12 1 -1. - <_> - 6 0 6 1 2. - <_> - - <_> - 11 0 6 5 -1. - <_> - 13 0 2 5 3. - <_> - - <_> - 6 0 4 1 -1. - <_> - 7 1 2 1 2. - 1 - <_> - - <_> - 10 2 2 6 -1. - <_> - 10 4 2 2 3. - <_> - - <_> - 6 2 4 6 -1. - <_> - 6 4 4 2 3. - <_> - - <_> - 9 4 2 4 -1. - <_> - 8 5 2 2 2. - 1 - <_> - - <_> - 9 4 4 2 -1. - <_> - 10 5 2 2 2. - 1 - <_> - - <_> - 5 9 12 3 -1. - <_> - 8 9 6 3 2. - <_> - - <_> - 1 9 12 3 -1. - <_> - 4 9 6 3 2. - <_> - - <_> - 10 4 3 6 -1. - <_> - 10 7 3 3 2. - <_> - - <_> - 4 2 10 4 -1. - <_> - 4 3 10 2 2. - <_> - - <_> - 8 11 6 1 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 1 11 16 1 -1. - <_> - 5 11 8 1 2. - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 3 8 12 3 -1. - <_> - 3 9 12 1 3. - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 0 10 3 2 -1. - <_> - 0 11 3 1 2. - <_> - - <_> - 10 5 3 4 -1. - <_> - 10 7 3 2 2. - <_> - - <_> - 5 5 3 4 -1. - <_> - 5 7 3 2 2. - <_> - - <_> - 10 0 2 3 -1. - <_> - 10 0 1 3 2. - 1 - <_> - - <_> - 5 0 6 2 -1. - <_> - 7 0 2 2 3. - <_> - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - <_> - - <_> - 2 7 2 2 -1. - <_> - 2 7 1 1 2. - <_> - 3 8 1 1 2. - <_> - - <_> - 12 5 3 4 -1. - <_> - 13 6 1 4 3. - 1 - <_> - - <_> - 0 0 18 12 -1. - <_> - 0 0 9 6 2. - <_> - 9 6 9 6 2. - <_> - - <_> - 12 4 4 1 -1. - <_> - 13 5 2 1 2. - 1 - <_> - - <_> - 6 5 4 3 -1. - <_> - 5 6 4 1 3. - 1 - <_> - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - <_> - - <_> - 0 4 10 4 -1. - <_> - 0 4 5 2 2. - <_> - 5 6 5 2 2. - <_> - - <_> - 6 4 6 3 -1. - <_> - 8 5 2 1 9. - <_> - - <_> - 2 0 4 5 -1. - <_> - 3 0 2 5 2. - <_> - - <_> - 9 6 2 2 -1. - <_> - 10 6 1 1 2. - <_> - 9 7 1 1 2. - <_> - - <_> - 0 9 1 3 -1. - <_> - 0 10 1 1 3. - <_> - - <_> - 16 9 2 2 -1. - <_> - 17 9 1 1 2. - <_> - 16 10 1 1 2. - <_> - - <_> - 0 9 2 2 -1. - <_> - 0 9 1 1 2. - <_> - 1 10 1 1 2. - <_> - - <_> - 16 8 2 2 -1. - <_> - 16 8 1 2 2. - 1 - <_> - - <_> - 2 8 2 2 -1. - <_> - 2 8 2 1 2. - 1 - <_> - - <_> - 10 10 8 2 -1. - <_> - 12 10 4 2 2. - <_> - - <_> - 0 10 8 2 -1. - <_> - 2 10 4 2 2. - <_> - - <_> - 14 7 2 2 -1. - <_> - 15 7 1 1 2. - <_> - 14 8 1 1 2. - <_> - - <_> - 3 6 1 4 -1. - <_> - 3 8 1 2 2. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 17 5 1 6 -1. - <_> - 17 7 1 2 3. - <_> - - <_> - 2 7 12 3 -1. - <_> - 2 8 12 1 3. - <_> - - <_> - 17 5 1 6 -1. - <_> - 17 7 1 2 3. - <_> - - <_> - 0 5 1 6 -1. - <_> - 0 7 1 2 3. - <_> - - <_> - 13 7 2 2 -1. - <_> - 14 7 1 1 2. - <_> - 13 8 1 1 2. - <_> - - <_> - 1 1 2 1 -1. - <_> - 2 1 1 1 2. - <_> - - <_> - 9 9 1 3 -1. - <_> - 9 10 1 1 3. - <_> - - <_> - 3 7 2 2 -1. - <_> - 3 7 1 1 2. - <_> - 4 8 1 1 2. - <_> - - <_> - 8 9 4 2 -1. - <_> - 9 9 2 2 2. - <_> - - <_> - 6 9 4 2 -1. - <_> - 7 9 2 2 2. - <_> - - <_> - 10 7 3 2 -1. - <_> - 10 7 3 1 2. - 1 - <_> - - <_> - 8 7 2 3 -1. - <_> - 8 7 1 3 2. - 1 - <_> - - <_> - 3 4 12 4 -1. - <_> - 3 6 12 2 2. - <_> - - <_> - 5 1 4 4 -1. - <_> - 5 1 4 2 2. - 1 - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 11 0 4 4 -1. - <_> - 11 1 4 2 2. - <_> - - <_> - 2 0 7 4 -1. - <_> - 2 1 7 2 2. - <_> - - <_> - 9 1 4 4 -1. - <_> - 9 1 2 4 2. - 1 - <_> - - <_> - 9 1 4 4 -1. - <_> - 9 1 4 2 2. - 1 - <_> - - <_> - 10 1 3 8 -1. - <_> - 11 2 1 8 3. - 1 - <_> - - <_> - 8 1 8 3 -1. - <_> - 7 2 8 1 3. - 1 - <_> - - <_> - 12 0 3 1 -1. - <_> - 13 1 1 1 3. - 1 - <_> - - <_> - 6 0 1 3 -1. - <_> - 5 1 1 1 3. - 1 - <_> - - <_> - 13 2 3 2 -1. - <_> - 14 3 1 2 3. - 1 - <_> - - <_> - 5 2 8 3 -1. - <_> - 5 3 8 1 3. - <_> - - <_> - 3 3 12 4 -1. - <_> - 3 4 12 2 2. - <_> - - <_> - 2 2 3 6 -1. - <_> - 3 4 1 2 9. - <_> - - <_> - 15 3 3 3 -1. - <_> - 14 4 3 1 3. - 1 - <_> - - <_> - 3 3 3 3 -1. - <_> - 4 4 1 3 3. - 1 - <_> - - <_> - 0 5 18 2 -1. - <_> - 9 5 9 1 2. - <_> - 0 6 9 1 2. - <_> - - <_> - 7 3 1 4 -1. - <_> - 7 3 1 2 2. - 1 - <_> - - <_> - 13 2 3 2 -1. - <_> - 14 3 1 2 3. - 1 - <_> - - <_> - 5 2 2 3 -1. - <_> - 4 3 2 1 3. - 1 - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 0 1 3 3 -1. - <_> - 0 2 3 1 3. - <_> - - <_> - 7 4 5 8 -1. - <_> - 7 8 5 4 2. - <_> - - <_> - 4 7 2 2 -1. - <_> - 4 7 1 1 2. - <_> - 5 8 1 1 2. - <_> - - <_> - 11 6 3 1 -1. - <_> - 12 6 1 1 3. - <_> - - <_> - 4 6 3 1 -1. - <_> - 5 6 1 1 3. - <_> - - <_> - 10 2 6 9 -1. - <_> - 12 5 2 3 9. - <_> - - <_> - 2 2 6 9 -1. - <_> - 4 5 2 3 9. - <_> - - <_> - 16 4 2 4 -1. - <_> - 16 5 2 2 2. - <_> - - <_> - 0 4 2 4 -1. - <_> - 0 5 2 2 2. - <_> - - <_> - 15 4 2 2 -1. - <_> - 16 4 1 1 2. - <_> - 15 5 1 1 2. - <_> - - <_> - 1 4 2 2 -1. - <_> - 1 4 1 1 2. - <_> - 2 5 1 1 2. - <_> - - <_> - 9 3 9 6 -1. - <_> - 12 5 3 2 9. - <_> - - <_> - 2 3 12 4 -1. - <_> - 2 5 12 2 2. - <_> - - <_> - 12 3 1 2 -1. - <_> - 12 3 1 1 2. - 1 - <_> - - <_> - 7 3 2 2 -1. - <_> - 7 3 1 1 2. - <_> - 8 4 1 1 2. - <_> - - <_> - 7 7 6 3 -1. - <_> - 7 7 3 3 2. - <_> - - <_> - 7 2 4 2 -1. - <_> - 8 2 2 2 2. - <_> - - <_> - 14 0 4 4 -1. - <_> - 16 0 2 2 2. - <_> - 14 2 2 2 2. - <_> - - <_> - 5 4 6 7 -1. - <_> - 7 4 2 7 3. - <_> - - <_> - 14 0 4 4 -1. - <_> - 16 0 2 2 2. - <_> - 14 2 2 2 2. - <_> - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 1 2. - <_> - 6 9 1 1 2. - <_> - - <_> - 14 0 4 4 -1. - <_> - 16 0 2 2 2. - <_> - 14 2 2 2 2. - <_> - - <_> - 4 0 3 2 -1. - <_> - 5 1 1 2 3. - 1 - <_> - - <_> - 7 1 4 4 -1. - <_> - 8 1 2 4 2. - <_> - - <_> - 4 2 7 3 -1. - <_> - 3 3 7 1 3. - 1 - <_> - - <_> - 0 0 18 12 -1. - <_> - 0 0 9 12 2. - <_> - - <_> - 0 0 18 6 -1. - <_> - 9 0 9 6 2. - <_> - - <_> - 5 8 9 3 -1. - <_> - 5 9 9 1 3. - <_> - - <_> - 9 2 8 1 -1. - <_> - 9 2 4 1 2. - 1 - <_> - - <_> - 10 0 1 4 -1. - <_> - 9 1 1 2 2. - 1 - <_> - - <_> - 0 0 6 4 -1. - <_> - 0 0 3 2 2. - <_> - 3 2 3 2 2. - <_> - - <_> - 8 0 9 9 -1. - <_> - 11 3 3 3 9. - <_> - - <_> - 1 0 9 9 -1. - <_> - 4 3 3 3 9. - <_> - - <_> - 15 11 3 1 -1. - <_> - 16 11 1 1 3. - <_> - - <_> - 2 0 4 2 -1. - <_> - 3 0 2 2 2. - <_> - - <_> - 6 2 12 3 -1. - <_> - 6 3 12 1 3. - <_> - - <_> - 0 11 3 1 -1. - <_> - 1 11 1 1 3. - <_> - - <_> - 16 10 1 2 -1. - <_> - 16 11 1 1 2. - <_> - - <_> - 0 10 2 2 -1. - <_> - 0 10 1 1 2. - <_> - 1 11 1 1 2. - <_> - - <_> - 17 10 1 2 -1. - <_> - 17 11 1 1 2. - <_> - - <_> - 0 10 1 2 -1. - <_> - 0 11 1 1 2. - <_> - - <_> - 15 8 3 1 -1. - <_> - 16 9 1 1 3. - 1 - <_> - - <_> - 3 8 1 3 -1. - <_> - 2 9 1 1 3. - 1 - <_> - - <_> - 9 3 9 6 -1. - <_> - 12 5 3 2 9. - <_> - - <_> - 0 3 9 6 -1. - <_> - 3 5 3 2 9. - <_> - - <_> - 12 3 1 6 -1. - <_> - 12 5 1 2 3. - <_> - - <_> - 3 3 2 1 -1. - <_> - 4 3 1 1 2. - <_> - - <_> - 5 2 12 2 -1. - <_> - 8 2 6 2 2. - <_> - - <_> - 1 2 12 2 -1. - <_> - 4 2 6 2 2. - <_> - - <_> - 9 1 8 11 -1. - <_> - 9 1 4 11 2. - <_> - - <_> - 1 1 8 11 -1. - <_> - 5 1 4 11 2. - <_> - - <_> - 8 5 6 6 -1. - <_> - 10 5 2 6 3. - <_> - - <_> - 4 7 2 3 -1. - <_> - 4 7 1 3 2. - 1 - <_> - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - 1 - <_> - - <_> - 2 9 1 2 -1. - <_> - 2 9 1 1 2. - 1 - <_> - - <_> - 9 11 4 1 -1. - <_> - 10 11 2 1 2. - <_> - - <_> - 4 7 6 5 -1. - <_> - 6 7 2 5 3. - <_> - - <_> - 13 8 5 4 -1. - <_> - 13 9 5 2 2. - <_> - - <_> - 0 8 5 4 -1. - <_> - 0 9 5 2 2. - <_> - - <_> - 13 5 3 1 -1. - <_> - 14 6 1 1 3. - 1 - <_> - - <_> - 5 5 1 3 -1. - <_> - 4 6 1 1 3. - 1 - <_> - - <_> - 7 9 4 3 -1. - <_> - 7 10 4 1 3. - <_> - - <_> - 5 9 2 2 -1. - <_> - 5 9 1 1 2. - <_> - 6 10 1 1 2. - <_> - - <_> - 14 2 3 1 -1. - <_> - 15 2 1 1 3. - <_> - - <_> - 6 8 3 1 -1. - <_> - 7 9 1 1 3. - 1 - <_> - - <_> - 11 10 2 1 -1. - <_> - 11 10 1 1 2. - <_> - - <_> - 5 10 2 1 -1. - <_> - 6 10 1 1 2. - <_> - - <_> - 4 10 14 2 -1. - <_> - 11 10 7 1 2. - <_> - 4 11 7 1 2. - <_> - - <_> - 0 10 14 2 -1. - <_> - 0 10 7 1 2. - <_> - 7 11 7 1 2. - <_> - - <_> - 8 0 4 3 -1. - <_> - 9 0 2 3 2. - <_> - - <_> - 1 2 3 1 -1. - <_> - 2 2 1 1 3. - <_> - - <_> - 2 0 15 3 -1. - <_> - 7 0 5 3 3. - <_> - - <_> - 5 1 7 3 -1. - <_> - 5 2 7 1 3. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 8 10 2 2 -1. - <_> - 8 11 2 1 2. - <_> - - <_> - 10 10 1 2 -1. - <_> - 10 11 1 1 2. - <_> - - <_> - 0 2 3 1 -1. - <_> - 1 2 1 1 3. - <_> - - <_> - 14 1 4 3 -1. - <_> - 15 1 2 3 2. - <_> - - <_> - 0 1 4 3 -1. - <_> - 1 1 2 3 2. - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 6 3 2 1 -1. - <_> - 6 3 1 1 2. - 1 - <_> - - <_> - 15 4 2 2 -1. - <_> - 16 4 1 1 2. - <_> - 15 5 1 1 2. - <_> - - <_> - 0 0 18 4 -1. - <_> - 0 0 9 2 2. - <_> - 9 2 9 2 2. - <_> - - <_> - 14 3 2 3 -1. - <_> - 13 4 2 1 3. - 1 - <_> - - <_> - 7 10 1 2 -1. - <_> - 7 11 1 1 2. - <_> - - <_> - 14 3 2 3 -1. - <_> - 13 4 2 1 3. - 1 - <_> - - <_> - 2 4 9 7 -1. - <_> - 5 4 3 7 3. - <_> - - <_> - 10 10 2 2 -1. - <_> - 11 10 1 1 2. - <_> - 10 11 1 1 2. - <_> - - <_> - 5 11 2 1 -1. - <_> - 6 11 1 1 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 10 2 1 -1. - <_> - 9 10 1 1 2. - <_> - - <_> - 7 10 3 1 -1. - <_> - 8 10 1 1 3. - <_> - - <_> - 9 11 4 1 -1. - <_> - 10 11 2 1 2. - <_> - - <_> - 5 11 2 1 -1. - <_> - 6 11 1 1 2. - <_> - - <_> - 8 11 3 1 -1. - <_> - 9 11 1 1 3. - <_> - - <_> - 7 11 3 1 -1. - <_> - 8 11 1 1 3. - <_> - - <_> - 8 11 3 1 -1. - <_> - 9 11 1 1 3. - <_> - - <_> - 0 8 18 4 -1. - <_> - 0 8 9 2 2. - <_> - 9 10 9 2 2. - <_> - - <_> - 9 11 2 1 -1. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 11 2 1 -1. - <_> - 8 11 1 1 2. - <_> - - <_> - 7 11 6 1 -1. - <_> - 9 11 2 1 3. - <_> - - <_> - 6 11 6 1 -1. - <_> - 8 11 2 1 3. - <_> - - <_> - 15 4 2 2 -1. - <_> - 16 4 1 1 2. - <_> - 15 5 1 1 2. - <_> - - <_> - 2 3 3 6 -1. - <_> - 3 5 1 2 9. - <_> - - <_> - 14 3 2 3 -1. - <_> - 13 4 2 1 3. - 1 - <_> - - <_> - 4 3 3 2 -1. - <_> - 5 4 1 2 3. - 1 - <_> - - <_> - 10 2 8 6 -1. - <_> - 14 2 4 3 2. - <_> - 10 5 4 3 2. - <_> - - <_> - 0 2 8 6 -1. - <_> - 0 2 4 3 2. - <_> - 4 5 4 3 2. - <_> - - <_> - 15 4 2 2 -1. - <_> - 16 4 1 1 2. - <_> - 15 5 1 1 2. - <_> - - <_> - 1 4 2 2 -1. - <_> - 1 4 1 1 2. - <_> - 2 5 1 1 2. - <_> - - <_> - 14 4 3 8 -1. - <_> - 14 8 3 4 2. - <_> - - <_> - 7 9 4 2 -1. - <_> - 7 10 4 1 2. - <_> - - <_> - 16 2 2 4 -1. - <_> - 16 3 2 2 2. - <_> - - <_> - 0 2 2 4 -1. - <_> - 0 3 2 2 2. - <_> - - <_> - 14 0 1 12 -1. - <_> - 14 6 1 6 2. - <_> - - <_> - 6 2 1 4 -1. - <_> - 5 3 1 2 2. - 1 - <_> - - <_> - 14 0 4 6 -1. - <_> - 16 0 2 3 2. - <_> - 14 3 2 3 2. - <_> - - <_> - 0 0 4 6 -1. - <_> - 0 0 2 3 2. - <_> - 2 3 2 3 2. - <_> - - <_> - 15 0 3 10 -1. - <_> - 16 0 1 10 3. - <_> - - <_> - 4 2 3 2 -1. - <_> - 5 3 1 2 3. - 1 - <_> - - <_> - 9 3 8 1 -1. - <_> - 11 3 4 1 2. - <_> - - <_> - 1 3 8 1 -1. - <_> - 3 3 4 1 2. - <_> - - <_> - 14 0 4 2 -1. - <_> - 14 0 4 1 2. - 1 - <_> - - <_> - 1 1 12 2 -1. - <_> - 1 1 6 1 2. - <_> - 7 2 6 1 2. - <_> - - <_> - 17 0 1 9 -1. - <_> - 17 3 1 3 3. - <_> - - <_> - 1 0 2 2 -1. - <_> - 1 1 2 1 2. - <_> - - <_> - 10 0 7 2 -1. - <_> - 10 1 7 1 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - <_> - - <_> - 9 2 3 4 -1. - <_> - 8 3 3 2 2. - 1 - <_> - - <_> - 12 0 6 1 -1. - <_> - 12 0 3 1 2. - <_> - - <_> - 0 0 6 1 -1. - <_> - 3 0 3 1 2. - <_> - - <_> - 3 3 12 4 -1. - <_> - 3 4 12 2 2. - <_> - - <_> - 9 5 3 1 -1. - <_> - 10 6 1 1 3. - 1 - <_> - - <_> - 3 1 15 3 -1. - <_> - 8 1 5 3 3. - <_> - - <_> - 5 6 3 3 -1. - <_> - 4 7 3 1 3. - 1 - <_> - - <_> - 5 1 8 2 -1. - <_> - 5 1 4 2 2. - <_> - - <_> - 7 5 3 2 -1. - <_> - 8 5 1 2 3. - <_> - - <_> - 9 0 4 8 -1. - <_> - 9 0 2 8 2. - 1 - <_> - - <_> - 9 0 8 4 -1. - <_> - 9 0 8 2 2. - 1 - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 7 3 4 3 -1. - <_> - 6 4 4 1 3. - 1 - <_> - - <_> - 13 2 5 8 -1. - <_> - 13 4 5 4 2. - <_> - - <_> - 0 0 2 6 -1. - <_> - 1 0 1 6 2. - <_> - - <_> - 11 5 2 6 -1. - <_> - 12 5 1 3 2. - <_> - 11 8 1 3 2. - <_> - - <_> - 5 5 2 6 -1. - <_> - 5 5 1 3 2. - <_> - 6 8 1 3 2. - <_> - - <_> - 8 5 6 6 -1. - <_> - 8 8 6 3 2. - <_> - - <_> - 0 0 6 5 -1. - <_> - 2 0 2 5 3. - <_> - - <_> - 3 10 12 2 -1. - <_> - 3 11 12 1 2. - <_> - - <_> - 1 9 1 3 -1. - <_> - 1 10 1 1 3. - <_> - - <_> - 4 0 10 4 -1. - <_> - 4 1 10 2 2. - <_> - - <_> - 6 0 6 4 -1. - <_> - 6 1 6 2 2. - <_> - - <_> - 17 0 1 4 -1. - <_> - 17 1 1 2 2. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 1 1 2 2. - <_> - - <_> - 7 0 5 3 -1. - <_> - 7 1 5 1 3. - <_> - - <_> - 8 0 6 1 -1. - <_> - 10 2 2 1 3. - 1 - <_> - - <_> - 13 3 5 2 -1. - <_> - 13 4 5 1 2. - <_> - - <_> - 3 1 6 4 -1. - <_> - 5 1 2 4 3. - <_> - - <_> - 6 0 6 4 -1. - <_> - 8 0 2 4 3. - <_> - - <_> - 3 0 3 2 -1. - <_> - 3 0 3 1 2. - 1 - <_> - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - <_> - - <_> - 5 5 4 3 -1. - <_> - 6 5 2 3 2. - <_> - - <_> - 13 2 5 9 -1. - <_> - 13 5 5 3 3. - <_> - - <_> - 0 2 5 8 -1. - <_> - 0 4 5 4 2. - <_> - - <_> - 13 3 5 2 -1. - <_> - 13 4 5 1 2. - <_> - - <_> - 2 0 10 2 -1. - <_> - 2 0 5 1 2. - <_> - 7 1 5 1 2. - <_> - - <_> - 13 3 5 2 -1. - <_> - 13 4 5 1 2. - <_> - - <_> - 0 3 5 2 -1. - <_> - 0 4 5 1 2. - <_> - - <_> - 14 0 1 3 -1. - <_> - 13 1 1 1 3. - 1 - <_> - - <_> - 4 0 3 1 -1. - <_> - 5 1 1 1 3. - 1 - <_> - - <_> - 7 2 10 2 -1. - <_> - 12 2 5 1 2. - <_> - 7 3 5 1 2. - <_> - - <_> - 5 9 4 3 -1. - <_> - 6 9 2 3 2. - <_> - - <_> - 14 2 3 2 -1. - <_> - 15 3 1 2 3. - 1 - <_> - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - <_> - - <_> - 0 10 18 2 -1. - <_> - 6 10 6 2 3. - <_> - - <_> - 8 2 6 1 -1. - <_> - 10 4 2 1 3. - 1 - <_> - - <_> - 10 0 1 4 -1. - <_> - 9 1 1 2 2. - 1 - <_> - - <_> - 4 1 3 4 -1. - <_> - 5 2 1 4 3. - 1 - <_> - - <_> - 12 5 4 3 -1. - <_> - 13 5 2 3 2. - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 1 1 3 3. - <_> - - <_> - 3 1 14 4 -1. - <_> - 10 1 7 2 2. - <_> - 3 3 7 2 2. - <_> - - <_> - 2 5 4 3 -1. - <_> - 3 5 2 3 2. - <_> - - <_> - 10 6 4 2 -1. - <_> - 11 6 2 2 2. - <_> - - <_> - 5 5 5 6 -1. - <_> - 5 8 5 3 2. - <_> - - <_> - 7 3 4 6 -1. - <_> - 7 6 4 3 2. - <_> - - <_> - 4 4 10 2 -1. - <_> - 4 5 10 1 2. - <_> - - <_> - 11 6 3 2 -1. - <_> - 12 6 1 2 3. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 7 4 6 8 -1. - <_> - 7 6 6 4 2. - <_> - - <_> - 0 7 2 4 -1. - <_> - 0 8 2 2 2. - <_> - - <_> - 11 6 3 2 -1. - <_> - 12 6 1 2 3. - <_> - - <_> - 0 2 2 8 -1. - <_> - 0 2 1 4 2. - <_> - 1 6 1 4 2. - <_> - - <_> - 14 0 4 4 -1. - <_> - 15 0 2 4 2. - <_> - - <_> - 0 0 4 4 -1. - <_> - 1 0 2 4 2. - <_> - - <_> - 12 8 2 2 -1. - <_> - 12 8 2 1 2. - 1 - <_> - - <_> - 6 8 2 2 -1. - <_> - 6 8 1 2 2. - 1 - <_> - - <_> - 11 6 3 2 -1. - <_> - 12 6 1 2 3. - <_> - - <_> - 4 6 3 2 -1. - <_> - 5 6 1 2 3. - <_> - - <_> - 10 9 4 3 -1. - <_> - 11 9 2 3 2. - <_> - - <_> - 2 10 2 2 -1. - <_> - 2 10 1 1 2. - <_> - 3 11 1 1 2. - <_> - - <_> - 10 9 4 3 -1. - <_> - 11 9 2 3 2. - <_> - - <_> - 4 7 2 1 -1. - <_> - 5 7 1 1 2. - <_> - - <_> - 12 5 1 3 -1. - <_> - 11 6 1 1 3. - 1 - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 6 1 1 3. - 1 - <_> - - <_> - 6 6 12 4 -1. - <_> - 12 6 6 2 2. - <_> - 6 8 6 2 2. - <_> - - <_> - 4 9 4 3 -1. - <_> - 5 9 2 3 2. - <_> - - <_> - 3 1 15 3 -1. - <_> - 8 1 5 3 3. - <_> - - <_> - 0 1 15 3 -1. - <_> - 5 1 5 3 3. - <_> - - <_> - 8 0 6 5 -1. - <_> - 10 0 2 5 3. - <_> - - <_> - 4 0 6 5 -1. - <_> - 6 0 2 5 3. - <_> - - <_> - 11 0 2 2 -1. - <_> - 11 1 2 1 2. - <_> - - <_> - 5 0 3 2 -1. - <_> - 5 1 3 1 2. - <_> - - <_> - 8 7 2 3 -1. - <_> - 8 8 2 1 3. - <_> - - <_> - 0 7 2 3 -1. - <_> - 0 8 2 1 3. - <_> - - <_> - 6 4 6 3 -1. - <_> - 8 5 2 1 9. - <_> - - <_> - 7 8 2 1 -1. - <_> - 8 8 1 1 2. - <_> - - <_> - 7 3 4 2 -1. - <_> - 7 4 4 1 2. - <_> - - <_> - 3 7 3 2 -1. - <_> - 3 7 3 1 2. - 1 - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 2 2 3 2. - <_> - - <_> - 5 2 4 3 -1. - <_> - 6 2 2 3 2. - <_> - - <_> - 14 5 3 4 -1. - <_> - 15 5 1 4 3. - <_> - - <_> - 3 2 11 3 -1. - <_> - 3 3 11 1 3. - <_> - - <_> - 13 0 4 2 -1. - <_> - 14 1 2 2 2. - 1 - <_> - - <_> - 1 5 3 4 -1. - <_> - 2 5 1 4 3. - <_> - - <_> - 13 0 4 3 -1. - <_> - 14 1 2 3 2. - 1 - <_> - - <_> - 4 3 1 2 -1. - <_> - 4 3 1 1 2. - 1 - <_> - - <_> - 17 8 1 3 -1. - <_> - 17 9 1 1 3. - <_> - - <_> - 0 5 12 7 -1. - <_> - 6 5 6 7 2. - <_> - - <_> - 11 8 2 1 -1. - <_> - 11 8 1 1 2. - <_> - - <_> - 0 1 18 10 -1. - <_> - 9 1 9 10 2. - <_> - - <_> - 7 0 4 10 -1. - <_> - 7 0 2 10 2. - <_> - - <_> - 1 0 14 4 -1. - <_> - 1 0 7 2 2. - <_> - 8 2 7 2 2. - <_> - - <_> - 8 4 7 6 -1. - <_> - 8 7 7 3 2. - <_> - - <_> - 5 0 9 3 -1. - <_> - 4 1 9 1 3. - 1 - <_> - - <_> - 8 8 3 3 -1. - <_> - 8 9 3 1 3. - <_> - - <_> - 4 3 1 4 -1. - <_> - 4 5 1 2 2. - <_> - - <_> - 8 0 4 2 -1. - <_> - 9 0 2 2 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 17 6 1 6 -1. - <_> - 17 9 1 3 2. - <_> - - <_> - 0 8 1 3 -1. - <_> - 0 9 1 1 3. - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 0 5 2 6 -1. - <_> - 1 5 1 6 2. - <_> - - <_> - 15 7 3 5 -1. - <_> - 16 7 1 5 3. - <_> - - <_> - 0 6 1 6 -1. - <_> - 0 9 1 3 2. - <_> - - <_> - 15 7 3 5 -1. - <_> - 16 7 1 5 3. - <_> - - <_> - 0 7 3 5 -1. - <_> - 1 7 1 5 3. - <_> - - <_> - 15 10 2 2 -1. - <_> - 16 10 1 1 2. - <_> - 15 11 1 1 2. - <_> - - <_> - 1 10 2 2 -1. - <_> - 1 10 1 1 2. - <_> - 2 11 1 1 2. - <_> - - <_> - 16 2 2 6 -1. - <_> - 16 4 2 2 3. - <_> - - <_> - 0 2 2 6 -1. - <_> - 0 4 2 2 3. - <_> - - <_> - 16 8 2 1 -1. - <_> - 16 8 1 1 2. - 1 - <_> - - <_> - 2 8 1 2 -1. - <_> - 2 8 1 1 2. - 1 - <_> - - <_> - 16 7 2 3 -1. - <_> - 15 8 2 1 3. - 1 - <_> - - <_> - 2 7 3 2 -1. - <_> - 3 8 1 2 3. - 1 - <_> - - <_> - 16 2 2 2 -1. - <_> - 17 2 1 1 2. - <_> - 16 3 1 1 2. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 3 1 12 6 -1. - <_> - 3 3 12 2 3. - <_> - - <_> - 5 4 1 3 -1. - <_> - 4 5 1 1 3. - 1 - <_> - - <_> - 12 5 2 4 -1. - <_> - 12 5 1 4 2. - 1 - <_> - - <_> - 5 4 5 3 -1. - <_> - 4 5 5 1 3. - 1 - <_> - - <_> - 12 0 2 3 -1. - <_> - 12 1 2 1 3. - <_> - - <_> - 4 7 4 1 -1. - <_> - 5 7 2 1 2. - <_> - - <_> - 9 5 3 1 -1. - <_> - 10 5 1 1 3. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 5 1 1 3. - <_> - - <_> - 9 0 4 1 -1. - <_> - 10 0 2 1 2. - <_> - - <_> - 2 9 2 1 -1. - <_> - 2 9 1 1 2. - 1 - <_> - - <_> - 12 0 2 3 -1. - <_> - 12 1 2 1 3. - <_> - - <_> - 1 4 12 1 -1. - <_> - 7 4 6 1 2. - <_> - - <_> - 6 3 6 2 -1. - <_> - 8 3 2 2 3. - <_> - - <_> - 4 0 2 3 -1. - <_> - 4 1 2 1 3. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - <_> - - <_> - 3 1 12 5 -1. - <_> - 7 1 4 5 3. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - <_> - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - <_> - - <_> - 4 1 10 3 -1. - <_> - 4 2 10 1 3. - <_> - - <_> - 8 0 2 3 -1. - <_> - 7 1 2 1 3. - 1 - <_> - - <_> - 14 10 4 2 -1. - <_> - 15 10 2 2 2. - <_> - - <_> - 4 5 9 6 -1. - <_> - 4 8 9 3 2. - <_> - - <_> - 14 10 4 2 -1. - <_> - 15 10 2 2 2. - <_> - - <_> - 0 10 4 2 -1. - <_> - 1 10 2 2 2. - <_> - - <_> - 11 5 1 2 -1. - <_> - 11 6 1 1 2. - <_> - - <_> - 0 9 5 2 -1. - <_> - 0 10 5 1 2. - <_> - - <_> - 14 9 2 1 -1. - <_> - 14 9 1 1 2. - 1 - <_> - - <_> - 3 8 1 3 -1. - <_> - 2 9 1 1 3. - 1 - <_> - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - <_> - - <_> - 4 0 3 12 -1. - <_> - 5 0 1 12 3. - <_> - - <_> - 11 0 2 8 -1. - <_> - 12 0 1 4 2. - <_> - 11 4 1 4 2. - <_> - - <_> - 5 0 2 8 -1. - <_> - 5 0 1 4 2. - <_> - 6 4 1 4 2. - <_> - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 12 1 4 2 -1. - <_> - 13 2 2 2 2. - 1 - <_> - - <_> - 6 1 2 4 -1. - <_> - 5 2 2 2 2. - 1 - <_> - - <_> - 15 3 2 1 -1. - <_> - 15 3 1 1 2. - <_> - - <_> - 1 3 2 1 -1. - <_> - 2 3 1 1 2. - <_> - - <_> - 10 6 1 3 -1. - <_> - 10 7 1 1 3. - <_> - - <_> - 2 0 3 2 -1. - <_> - 3 0 1 2 3. - <_> - - <_> - 9 4 9 1 -1. - <_> - 12 4 3 1 3. - <_> - - <_> - 0 2 18 2 -1. - <_> - 9 2 9 2 2. - <_> - - <_> - 9 4 4 8 -1. - <_> - 9 6 4 4 2. - <_> - - <_> - 6 9 6 3 -1. - <_> - 6 10 6 1 3. - <_> - - <_> - 6 9 6 3 -1. - <_> - 6 10 6 1 3. - <_> - - <_> - 3 10 2 2 -1. - <_> - 3 10 1 1 2. - <_> - 4 11 1 1 2. - <_> - - <_> - 10 8 2 2 -1. - <_> - 10 8 2 1 2. - 1 - <_> - - <_> - 2 6 12 2 -1. - <_> - 8 6 6 2 2. - <_> - - <_> - 11 9 2 3 -1. - <_> - 11 10 2 1 3. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 15 0 3 11 -1. - <_> - 16 0 1 11 3. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 0 0 18 11 -1. - <_> - 0 0 9 11 2. - <_> - - <_> - 0 0 15 6 -1. - <_> - 5 2 5 2 9. - <_> - - <_> - 9 3 1 8 -1. - <_> - 9 3 1 4 2. - 1 - <_> - - <_> - 2 3 12 3 -1. - <_> - 5 3 6 3 2. - <_> - - <_> - 14 0 4 9 -1. - <_> - 14 3 4 3 3. - <_> - - <_> - 0 0 4 9 -1. - <_> - 0 3 4 3 3. - <_> - - <_> - 10 1 1 10 -1. - <_> - 10 1 1 5 2. - 1 - <_> - - <_> - 3 3 3 2 -1. - <_> - 4 4 1 2 3. - 1 - <_> - - <_> - 4 11 14 1 -1. - <_> - 4 11 7 1 2. - <_> - - <_> - 0 10 16 2 -1. - <_> - 4 10 8 2 2. - <_> - - <_> - 11 9 2 3 -1. - <_> - 11 10 2 1 3. - <_> - - <_> - 5 9 2 3 -1. - <_> - 5 10 2 1 3. - <_> - - <_> - 6 8 7 3 -1. - <_> - 6 9 7 1 3. - <_> - - <_> - 0 5 12 6 -1. - <_> - 4 7 4 2 9. - <_> - - <_> - 15 3 2 2 -1. - <_> - 16 3 1 1 2. - <_> - 15 4 1 1 2. - <_> - - <_> - 1 3 2 2 -1. - <_> - 1 3 1 1 2. - <_> - 2 4 1 1 2. - <_> - - <_> - 15 3 2 2 -1. - <_> - 16 3 1 1 2. - <_> - 15 4 1 1 2. - <_> - - <_> - 1 3 2 2 -1. - <_> - 1 3 1 1 2. - <_> - 2 4 1 1 2. - <_> - - <_> - 11 10 1 2 -1. - <_> - 11 11 1 1 2. - <_> - - <_> - 1 3 2 2 -1. - <_> - 1 3 1 1 2. - <_> - 2 4 1 1 2. - <_> - - <_> - 9 2 1 4 -1. - <_> - 9 2 1 2 2. - 1 - <_> - - <_> - 7 4 3 3 -1. - <_> - 6 5 3 1 3. - 1 - <_> - - <_> - 8 8 2 2 -1. - <_> - 9 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 8 8 2 2 -1. - <_> - 8 8 1 1 2. - <_> - 9 9 1 1 2. - <_> - - <_> - 8 7 2 2 -1. - <_> - 9 7 1 1 2. - <_> - 8 8 1 1 2. - <_> - - <_> - 8 0 2 5 -1. - <_> - 9 0 1 5 2. - <_> - - <_> - 9 4 1 4 -1. - <_> - 8 5 1 2 2. - 1 - <_> - - <_> - 9 4 4 1 -1. - <_> - 10 5 2 1 2. - 1 - <_> - - <_> - 10 6 8 4 -1. - <_> - 14 6 4 2 2. - <_> - 10 8 4 2 2. - <_> - - <_> - 3 7 12 2 -1. - <_> - 3 8 12 1 2. - <_> - - <_> - 11 10 1 2 -1. - <_> - 11 11 1 1 2. - <_> - - <_> - 6 10 1 2 -1. - <_> - 6 11 1 1 2. - <_> - - <_> - 9 0 2 4 -1. - <_> - 8 1 2 2 2. - 1 - <_> - - <_> - 9 0 4 2 -1. - <_> - 9 0 4 1 2. - 1 - <_> - - <_> - 10 0 8 4 -1. - <_> - 14 0 4 2 2. - <_> - 10 2 4 2 2. - <_> - - <_> - 0 0 8 4 -1. - <_> - 0 0 4 2 2. - <_> - 4 2 4 2 2. - <_> - - <_> - 10 0 1 2 -1. - <_> - 10 0 1 1 2. - 1 - <_> - - <_> - 9 2 4 1 -1. - <_> - 9 2 2 1 2. - 1 - <_> - - <_> - 13 6 2 6 -1. - <_> - 13 9 2 3 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 7 8 4 2 -1. - <_> - 8 8 2 2 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 9 9 2 2 -1. - <_> - 10 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 3 9 14 2 -1. - <_> - 10 9 7 1 2. - <_> - 3 10 7 1 2. - <_> - - <_> - 0 0 3 10 -1. - <_> - 1 0 1 10 3. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 17 8 1 3 -1. - <_> - 16 9 1 1 3. - 1 - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 17 0 1 6 -1. - <_> - 17 2 1 2 3. - <_> - - <_> - 0 0 1 6 -1. - <_> - 0 2 1 2 3. - <_> - - <_> - 4 6 14 1 -1. - <_> - 4 6 7 1 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 11 5 1 2 -1. - <_> - 11 6 1 1 2. - <_> - - <_> - 5 5 6 2 -1. - <_> - 5 6 6 1 2. - <_> - - <_> - 10 1 1 2 -1. - <_> - 10 2 1 1 2. - <_> - - <_> - 3 6 2 6 -1. - <_> - 3 9 2 3 2. - <_> - - <_> - 17 8 1 3 -1. - <_> - 16 9 1 1 3. - 1 - <_> - - <_> - 1 8 3 1 -1. - <_> - 2 9 1 1 3. - 1 - <_> - - <_> - 14 5 4 5 -1. - <_> - 15 5 2 5 2. - <_> - - <_> - 0 5 4 5 -1. - <_> - 1 5 2 5 2. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 12 2 3 9 -1. - <_> - 13 5 1 3 9. - <_> - - <_> - 3 2 3 9 -1. - <_> - 4 5 1 3 9. - <_> - - <_> - 9 3 1 3 -1. - <_> - 9 4 1 1 3. - <_> - - <_> - 7 0 4 1 -1. - <_> - 8 1 2 1 2. - 1 - <_> - - <_> - 13 3 3 1 -1. - <_> - 14 4 1 1 3. - 1 - <_> - - <_> - 5 3 1 3 -1. - <_> - 4 4 1 1 3. - 1 - <_> - - <_> - 14 5 1 2 -1. - <_> - 14 5 1 1 2. - 1 - <_> - - <_> - 4 5 2 1 -1. - <_> - 4 5 1 1 2. - 1 - <_> - - <_> - 14 2 4 1 -1. - <_> - 14 2 2 1 2. - <_> - - <_> - 0 2 4 1 -1. - <_> - 2 2 2 1 2. - <_> - - <_> - 11 11 2 1 -1. - <_> - 11 11 1 1 2. - <_> - - <_> - 1 0 5 8 -1. - <_> - 1 4 5 4 2. - <_> - - <_> - 14 6 2 2 -1. - <_> - 15 6 1 1 2. - <_> - 14 7 1 1 2. - <_> - - <_> - 5 11 2 1 -1. - <_> - 6 11 1 1 2. - <_> - - <_> - 9 7 4 2 -1. - <_> - 9 7 2 2 2. - <_> - - <_> - 9 2 9 1 -1. - <_> - 12 5 3 1 3. - 1 - <_> - - <_> - 8 11 6 1 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 0 8 15 3 -1. - <_> - 5 9 5 1 9. - <_> - - <_> - 8 9 2 2 -1. - <_> - 9 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 10 6 8 4 -1. - <_> - 14 6 4 2 2. - <_> - 10 8 4 2 2. - <_> - - <_> - 1 6 10 4 -1. - <_> - 1 6 5 2 2. - <_> - 6 8 5 2 2. - <_> - - <_> - 13 2 2 8 -1. - <_> - 13 2 1 8 2. - 1 - <_> - - <_> - 5 2 8 2 -1. - <_> - 5 2 8 1 2. - 1 - <_> - - <_> - 16 6 2 2 -1. - <_> - 17 6 1 1 2. - <_> - 16 7 1 1 2. - <_> - - <_> - 0 6 2 2 -1. - <_> - 0 6 1 1 2. - <_> - 1 7 1 1 2. - <_> - - <_> - 16 6 2 2 -1. - <_> - 17 6 1 1 2. - <_> - 16 7 1 1 2. - <_> - - <_> - 2 6 1 3 -1. - <_> - 2 7 1 1 3. - <_> - - <_> - 16 8 2 1 -1. - <_> - 16 8 1 1 2. - 1 - <_> - - <_> - 8 3 1 3 -1. - <_> - 8 4 1 1 3. - <_> - - <_> - 11 0 2 3 -1. - <_> - 11 0 1 3 2. - 1 - <_> - - <_> - 9 0 2 3 -1. - <_> - 8 1 2 1 3. - 1 - <_> - - <_> - 11 1 1 10 -1. - <_> - 11 1 1 5 2. - 1 - <_> - - <_> - 2 8 1 2 -1. - <_> - 2 8 1 1 2. - 1 - <_> - - <_> - 11 1 1 10 -1. - <_> - 11 1 1 5 2. - 1 - <_> - - <_> - 7 1 10 1 -1. - <_> - 7 1 5 1 2. - 1 - <_> - - <_> - 4 1 11 8 -1. - <_> - 4 3 11 4 2. - <_> - - <_> - 0 11 6 1 -1. - <_> - 3 11 3 1 2. - <_> - - <_> - 9 2 2 2 -1. - <_> - 10 2 1 1 2. - <_> - 9 3 1 1 2. - <_> - - <_> - 0 0 10 6 -1. - <_> - 0 3 10 3 2. - <_> - - <_> - 10 0 1 2 -1. - <_> - 10 0 1 1 2. - 1 - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 1 2. - <_> - 8 3 1 1 2. - <_> - - <_> - 14 8 1 3 -1. - <_> - 13 9 1 1 3. - 1 - <_> - - <_> - 4 8 3 1 -1. - <_> - 5 9 1 1 3. - 1 - <_> - - <_> - 9 2 2 2 -1. - <_> - 10 2 1 1 2. - <_> - 9 3 1 1 2. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 1 2. - <_> - 8 3 1 1 2. - <_> - - <_> - 17 0 1 10 -1. - <_> - 17 0 1 5 2. - 1 - <_> - - <_> - 1 0 10 1 -1. - <_> - 1 0 5 1 2. - 1 - <_> - - <_> - 14 11 2 1 -1. - <_> - 14 11 1 1 2. - <_> - - <_> - 2 11 2 1 -1. - <_> - 3 11 1 1 2. - <_> - - <_> - 12 5 6 6 -1. - <_> - 15 5 3 3 2. - <_> - 12 8 3 3 2. - <_> - - <_> - 0 5 8 6 -1. - <_> - 0 5 4 3 2. - <_> - 4 8 4 3 2. - <_> - - <_> - 12 2 3 1 -1. - <_> - 13 3 1 1 3. - 1 - <_> - - <_> - 0 6 14 1 -1. - <_> - 7 6 7 1 2. - <_> - - <_> - 12 2 3 1 -1. - <_> - 13 3 1 1 3. - 1 - <_> - - <_> - 7 7 2 3 -1. - <_> - 7 8 2 1 3. - <_> - - <_> - 17 5 1 3 -1. - <_> - 17 6 1 1 3. - <_> - - <_> - 6 2 1 3 -1. - <_> - 5 3 1 1 3. - 1 - <_> - - <_> - 8 7 2 2 -1. - <_> - 9 7 1 1 2. - <_> - 8 8 1 1 2. - <_> - - <_> - 0 5 1 3 -1. - <_> - 0 6 1 1 3. - <_> - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - 1 - <_> - - <_> - 3 0 12 6 -1. - <_> - 3 2 12 2 3. - <_> - - <_> - 13 0 1 3 -1. - <_> - 13 1 1 1 3. - <_> - - <_> - 4 0 1 3 -1. - <_> - 4 1 1 1 3. - <_> - - <_> - 10 4 1 3 -1. - <_> - 9 5 1 1 3. - 1 - <_> - - <_> - 4 8 2 2 -1. - <_> - 4 8 1 2 2. - 1 - <_> - - <_> - 6 8 12 4 -1. - <_> - 6 10 12 2 2. - <_> - - <_> - 0 6 6 5 -1. - <_> - 2 6 2 5 3. - <_> - - <_> - 14 9 4 3 -1. - <_> - 14 9 2 3 2. - <_> - - <_> - 0 9 4 3 -1. - <_> - 2 9 2 3 2. - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 8 5 2 2 -1. - <_> - 8 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 0 10 3 2 -1. - <_> - 0 11 3 1 2. - <_> - - <_> - 7 9 4 3 -1. - <_> - 7 9 2 3 2. - <_> - - <_> - 3 0 1 2 -1. - <_> - 3 0 1 1 2. - 1 - <_> - - <_> - 6 0 7 4 -1. - <_> - 6 1 7 2 2. - <_> - - <_> - 0 6 7 2 -1. - <_> - 0 7 7 1 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 16 0 2 1 2. - 1 - <_> - - <_> - 5 0 2 2 -1. - <_> - 5 0 1 1 2. - <_> - 6 1 1 1 2. - <_> - - <_> - 9 0 4 1 -1. - <_> - 10 0 2 1 2. - <_> - - <_> - 5 0 4 1 -1. - <_> - 6 0 2 1 2. - <_> - - <_> - 16 7 2 2 -1. - <_> - 17 7 1 1 2. - <_> - 16 8 1 1 2. - <_> - - <_> - 0 7 2 2 -1. - <_> - 0 7 1 1 2. - <_> - 1 8 1 1 2. - <_> - - <_> - 11 9 3 1 -1. - <_> - 12 9 1 1 3. - <_> - - <_> - 4 9 3 1 -1. - <_> - 5 9 1 1 3. - <_> - - <_> - 10 8 6 1 -1. - <_> - 12 8 2 1 3. - <_> - - <_> - 4 7 8 2 -1. - <_> - 6 7 4 2 2. - <_> - - <_> - 15 8 1 3 -1. - <_> - 14 9 1 1 3. - 1 - <_> - - <_> - 3 8 3 1 -1. - <_> - 4 9 1 1 3. - 1 - <_> - - <_> - 15 4 2 8 -1. - <_> - 15 8 2 4 2. - <_> - - <_> - 1 4 2 8 -1. - <_> - 1 8 2 4 2. - <_> - - <_> - 7 2 6 3 -1. - <_> - 7 3 6 1 3. - <_> - - <_> - 2 3 14 2 -1. - <_> - 9 3 7 2 2. - <_> - - <_> - 8 4 7 6 -1. - <_> - 8 7 7 3 2. - <_> - - <_> - 3 4 7 6 -1. - <_> - 3 7 7 3 2. - <_> - - <_> - 11 3 6 6 -1. - <_> - 13 5 2 2 9. - <_> - - <_> - 1 3 6 6 -1. - <_> - 3 5 2 2 9. - <_> - - <_> - 13 7 5 4 -1. - <_> - 13 9 5 2 2. - <_> - - <_> - 0 7 5 4 -1. - <_> - 0 9 5 2 2. - <_> - - <_> - 11 9 2 1 -1. - <_> - 11 9 1 1 2. - 1 - <_> - - <_> - 0 11 16 1 -1. - <_> - 8 11 8 1 2. - <_> - - <_> - 7 5 8 4 -1. - <_> - 11 5 4 2 2. - <_> - 7 7 4 2 2. - <_> - - <_> - 6 3 3 3 -1. - <_> - 6 4 3 1 3. - <_> - - <_> - 5 3 8 2 -1. - <_> - 9 3 4 1 2. - <_> - 5 4 4 1 2. - <_> - - <_> - 2 0 6 4 -1. - <_> - 4 0 2 4 3. - <_> - - <_> - 6 2 9 2 -1. - <_> - 9 2 3 2 3. - <_> - - <_> - 2 3 6 2 -1. - <_> - 4 3 2 2 3. - <_> - - <_> - 3 6 12 3 -1. - <_> - 3 7 12 1 3. - <_> - - <_> - 7 6 1 3 -1. - <_> - 7 7 1 1 3. - <_> - - <_> - 6 2 9 2 -1. - <_> - 9 2 3 2 3. - <_> - - <_> - 3 2 9 2 -1. - <_> - 6 2 3 2 3. - <_> - - <_> - 10 0 8 2 -1. - <_> - 10 0 4 2 2. - <_> - - <_> - 0 0 8 2 -1. - <_> - 4 0 4 2 2. - <_> - - <_> - 3 9 12 2 -1. - <_> - 3 9 6 2 2. - <_> - - <_> - 2 9 8 2 -1. - <_> - 4 9 4 2 2. - <_> - - <_> - 14 9 2 1 -1. - <_> - 14 9 1 1 2. - 1 - <_> - - <_> - 4 9 1 2 -1. - <_> - 4 9 1 1 2. - 1 - <_> - - <_> - 12 0 6 5 -1. - <_> - 14 0 2 5 3. - <_> - - <_> - 0 0 6 5 -1. - <_> - 2 0 2 5 3. - <_> - - <_> - 9 5 2 4 -1. - <_> - 8 6 2 2 2. - 1 - <_> - - <_> - 6 7 2 3 -1. - <_> - 6 8 2 1 3. - <_> - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - <_> - - <_> - 13 1 3 3 -1. - <_> - 14 2 1 1 9. - <_> - - <_> - 4 3 10 4 -1. - <_> - 4 4 10 2 2. - <_> - - <_> - 6 0 12 4 -1. - <_> - 10 0 4 4 3. - <_> - - <_> - 0 0 6 4 -1. - <_> - 3 0 3 4 2. - <_> - - <_> - 9 6 4 2 -1. - <_> - 10 6 2 2 2. - <_> - - <_> - 4 7 2 2 -1. - <_> - 4 7 1 1 2. - <_> - 5 8 1 1 2. - <_> - - <_> - 8 6 6 2 -1. - <_> - 10 6 2 2 3. - <_> - - <_> - 4 6 6 1 -1. - <_> - 6 6 2 1 3. - <_> - - <_> - 9 0 3 9 -1. - <_> - 6 3 3 3 3. - 1 - <_> - - <_> - 2 5 14 6 -1. - <_> - 2 5 7 3 2. - <_> - 9 8 7 3 2. - <_> - - <_> - 14 3 4 1 -1. - <_> - 15 4 2 1 2. - 1 - <_> - - <_> - 3 4 6 2 -1. - <_> - 3 4 3 2 2. - 1 - <_> - - <_> - 2 10 16 1 -1. - <_> - 6 10 8 1 2. - <_> - - <_> - 4 5 3 3 -1. - <_> - 5 5 1 3 3. - <_> - - <_> - 16 0 2 2 -1. - <_> - 16 0 1 2 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 1 0 1 2 2. - <_> - - <_> - 10 7 1 3 -1. - <_> - 10 8 1 1 3. - <_> - - <_> - 3 4 5 3 -1. - <_> - 2 5 5 1 3. - 1 - <_> - - <_> - 10 5 1 6 -1. - <_> - 10 8 1 3 2. - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 17 9 1 2 -1. - <_> - 17 9 1 1 2. - 1 - <_> - - <_> - 1 9 2 1 -1. - <_> - 1 9 1 1 2. - 1 - <_> - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - <_> - - <_> - 6 9 4 3 -1. - <_> - 7 9 2 3 2. - <_> - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - <_> - - <_> - 3 3 2 2 -1. - <_> - 3 3 2 1 2. - 1 - <_> - - <_> - 11 0 6 5 -1. - <_> - 13 0 2 5 3. - <_> - - <_> - 1 0 6 5 -1. - <_> - 3 0 2 5 3. - <_> - - <_> - 3 0 12 3 -1. - <_> - 3 1 12 1 3. - <_> - - <_> - 6 0 6 3 -1. - <_> - 6 1 6 1 3. - <_> - - <_> - 11 0 3 2 -1. - <_> - 12 1 1 2 3. - 1 - <_> - - <_> - 0 2 6 5 -1. - <_> - 2 2 2 5 3. - <_> - - <_> - 14 2 3 1 -1. - <_> - 15 3 1 1 3. - 1 - <_> - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - <_> - - <_> - 11 0 3 2 -1. - <_> - 12 1 1 2 3. - 1 - <_> - - <_> - 7 0 2 3 -1. - <_> - 6 1 2 1 3. - 1 - <_> - - <_> - 0 3 18 2 -1. - <_> - 6 3 6 2 3. - <_> - - <_> - 0 5 4 7 -1. - <_> - 2 5 2 7 2. - <_> - - <_> - 13 10 5 2 -1. - <_> - 13 11 5 1 2. - <_> - - <_> - 0 10 5 2 -1. - <_> - 0 11 5 1 2. - <_> - - <_> - 7 0 6 4 -1. - <_> - 9 0 2 4 3. - <_> - - <_> - 5 0 6 4 -1. - <_> - 7 0 2 4 3. - <_> - - <_> - 11 0 1 4 -1. - <_> - 10 1 1 2 2. - 1 - <_> - - <_> - 7 0 4 1 -1. - <_> - 8 1 2 1 2. - 1 - <_> - - <_> - 9 1 2 2 -1. - <_> - 9 2 2 1 2. - <_> - - <_> - 5 9 6 2 -1. - <_> - 7 9 2 2 3. - <_> - - <_> - 7 4 6 8 -1. - <_> - 9 4 2 8 3. - <_> - - <_> - 3 4 12 4 -1. - <_> - 6 4 6 4 2. - <_> - - <_> - 12 5 4 4 -1. - <_> - 13 5 2 4 2. - <_> - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - <_> - - <_> - 12 5 4 4 -1. - <_> - 13 5 2 4 2. - <_> - - <_> - 2 5 4 4 -1. - <_> - 3 5 2 4 2. - <_> - - <_> - 15 0 3 3 -1. - <_> - 16 1 1 3 3. - 1 - <_> - - <_> - 3 0 3 3 -1. - <_> - 2 1 3 1 3. - 1 - <_> - - <_> - 7 6 4 5 -1. - <_> - 8 6 2 5 2. - <_> - - <_> - 7 4 4 3 -1. - <_> - 6 5 4 1 3. - 1 - <_> - - <_> - 10 2 3 5 -1. - <_> - 11 3 1 5 3. - 1 - <_> - - <_> - 8 2 5 3 -1. - <_> - 7 3 5 1 3. - 1 - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 1 0 1 2 -1. - <_> - 1 1 1 1 2. - <_> - - <_> - 7 4 4 2 -1. - <_> - 7 5 4 1 2. - <_> - - <_> - 5 6 8 6 -1. - <_> - 5 6 4 3 2. - <_> - 9 9 4 3 2. - <_> - - <_> - 11 7 3 1 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 5 5 3 3 -1. - <_> - 6 5 1 3 3. - <_> - - <_> - 11 7 3 1 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 3 6 4 2 -1. - <_> - 4 6 2 2 2. - <_> - - <_> - 14 7 4 2 -1. - <_> - 15 7 2 2 2. - <_> - - <_> - 0 7 4 2 -1. - <_> - 1 7 2 2 2. - <_> - - <_> - 11 4 1 4 -1. - <_> - 10 5 1 2 2. - 1 - <_> - - <_> - 7 7 3 2 -1. - <_> - 8 8 1 2 3. - 1 - <_> - - <_> - 11 5 1 3 -1. - <_> - 10 6 1 1 3. - 1 - <_> - - <_> - 7 5 3 1 -1. - <_> - 8 6 1 1 3. - 1 - <_> - - <_> - 10 8 2 2 -1. - <_> - 10 8 2 1 2. - 1 - <_> - - <_> - 8 8 2 2 -1. - <_> - 8 8 1 2 2. - 1 - <_> - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - <_> - - <_> - 7 9 2 1 -1. - <_> - 8 9 1 1 2. - <_> - - <_> - 9 9 2 1 -1. - <_> - 9 9 1 1 2. - <_> - - <_> - 7 9 2 1 -1. - <_> - 8 9 1 1 2. - <_> - - <_> - 15 4 1 3 -1. - <_> - 15 5 1 1 3. - <_> - - <_> - 2 4 1 3 -1. - <_> - 2 5 1 1 3. - <_> - - <_> - 15 3 3 6 -1. - <_> - 15 5 3 2 3. - <_> - - <_> - 0 3 3 6 -1. - <_> - 0 5 3 2 3. - <_> - - <_> - 15 2 3 2 -1. - <_> - 16 3 1 2 3. - 1 - <_> - - <_> - 4 6 10 6 -1. - <_> - 4 9 10 3 2. - <_> - - <_> - 9 9 2 2 -1. - <_> - 10 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 3 2 2 3 -1. - <_> - 2 3 2 1 3. - 1 - <_> - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - <_> - - <_> - 5 0 3 2 -1. - <_> - 5 1 3 1 2. - <_> - - <_> - 9 2 8 2 -1. - <_> - 13 2 4 1 2. - <_> - 9 3 4 1 2. - <_> - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - <_> - - <_> - 11 0 3 1 -1. - <_> - 12 1 1 1 3. - 1 - <_> - - <_> - 3 0 6 1 -1. - <_> - 5 0 2 1 3. - <_> - - <_> - 7 2 4 3 -1. - <_> - 7 3 4 1 3. - <_> - - <_> - 0 1 15 1 -1. - <_> - 5 1 5 1 3. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 7 3 1 2 -1. - <_> - 7 3 1 1 2. - 1 - <_> - - <_> - 13 7 2 2 -1. - <_> - 14 7 1 1 2. - <_> - 13 8 1 1 2. - <_> - - <_> - 3 7 2 2 -1. - <_> - 3 7 1 1 2. - <_> - 4 8 1 1 2. - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - <_> - - <_> - 2 2 8 3 -1. - <_> - 4 2 4 3 2. - <_> - - <_> - 13 2 2 1 -1. - <_> - 13 2 1 1 2. - <_> - - <_> - 3 2 2 1 -1. - <_> - 4 2 1 1 2. - <_> - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 11 2 1 -1. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 11 2 1 -1. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 11 2 1 -1. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 11 4 1 -1. - <_> - 8 11 2 1 2. - <_> - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - <_> - - <_> - 0 9 1 3 -1. - <_> - 0 10 1 1 3. - <_> - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - <_> - - <_> - 4 6 2 2 -1. - <_> - 4 6 1 1 2. - <_> - 5 7 1 1 2. - <_> - - <_> - 11 6 6 4 -1. - <_> - 14 6 3 2 2. - <_> - 11 8 3 2 2. - <_> - - <_> - 5 7 3 2 -1. - <_> - 6 8 1 2 3. - 1 - <_> - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - <_> - - <_> - 6 9 2 1 -1. - <_> - 6 9 1 1 2. - 1 - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 9 1 3 2. - <_> - - <_> - 0 9 2 3 -1. - <_> - 1 9 1 3 2. - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 9 1 3 2. - <_> - - <_> - 0 9 2 3 -1. - <_> - 1 9 1 3 2. - <_> - - <_> - 14 4 2 3 -1. - <_> - 13 5 2 1 3. - 1 - <_> - - <_> - 5 4 3 6 -1. - <_> - 5 7 3 3 2. - <_> - - <_> - 14 4 2 3 -1. - <_> - 13 5 2 1 3. - 1 - <_> - - <_> - 4 4 3 2 -1. - <_> - 5 5 1 2 3. - 1 - <_> - - <_> - 3 8 15 4 -1. - <_> - 8 8 5 4 3. - <_> - - <_> - 0 3 15 9 -1. - <_> - 5 3 5 9 3. - <_> - - <_> - 9 11 4 1 -1. - <_> - 10 11 2 1 2. - <_> - - <_> - 5 11 4 1 -1. - <_> - 6 11 2 1 2. - <_> - - <_> - 15 7 1 4 -1. - <_> - 14 8 1 2 2. - 1 - <_> - - <_> - 8 8 2 3 -1. - <_> - 8 9 2 1 3. - <_> - - <_> - 9 7 1 3 -1. - <_> - 9 8 1 1 3. - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 10 6 8 4 -1. - <_> - 14 6 4 2 2. - <_> - 10 8 4 2 2. - <_> - - <_> - 0 6 8 4 -1. - <_> - 0 6 4 2 2. - <_> - 4 8 4 2 2. - <_> - - <_> - 9 9 8 2 -1. - <_> - 11 9 4 2 2. - <_> - - <_> - 1 9 8 2 -1. - <_> - 3 9 4 2 2. - <_> - - <_> - 1 11 16 1 -1. - <_> - 5 11 8 1 2. - <_> - - <_> - 3 7 3 2 -1. - <_> - 4 8 1 2 3. - 1 - <_> - - <_> - 13 0 4 2 -1. - <_> - 14 0 2 2 2. - <_> - - <_> - 1 0 4 2 -1. - <_> - 2 0 2 2 2. - <_> - - <_> - 10 0 8 2 -1. - <_> - 14 0 4 1 2. - <_> - 10 1 4 1 2. - <_> - - <_> - 7 0 1 3 -1. - <_> - 6 1 1 1 3. - 1 - <_> - - <_> - 11 0 6 2 -1. - <_> - 14 0 3 1 2. - <_> - 11 1 3 1 2. - <_> - - <_> - 0 0 8 2 -1. - <_> - 0 0 4 1 2. - <_> - 4 1 4 1 2. - <_> - - <_> - 17 0 1 3 -1. - <_> - 17 1 1 1 3. - <_> - - <_> - 0 0 10 12 -1. - <_> - 5 0 5 12 2. - <_> - - <_> - 15 9 1 2 -1. - <_> - 15 9 1 1 2. - 1 - <_> - - <_> - 3 9 2 1 -1. - <_> - 3 9 1 1 2. - 1 - <_> - - <_> - 15 8 3 3 -1. - <_> - 16 8 1 3 3. - <_> - - <_> - 0 8 3 4 -1. - <_> - 1 8 1 4 3. - <_> - - <_> - 6 1 12 6 -1. - <_> - 10 1 4 6 3. - <_> - - <_> - 3 2 12 2 -1. - <_> - 3 2 6 1 2. - <_> - 9 3 6 1 2. - <_> - - <_> - 17 1 1 4 -1. - <_> - 17 2 1 2 2. - <_> - - <_> - 0 1 7 6 -1. - <_> - 0 4 7 3 2. - <_> - - <_> - 13 3 3 6 -1. - <_> - 14 5 1 2 9. - <_> - - <_> - 2 3 3 6 -1. - <_> - 3 5 1 2 9. - <_> - - <_> - 15 0 3 3 -1. - <_> - 14 1 3 1 3. - 1 - <_> - - <_> - 2 2 3 2 -1. - <_> - 3 3 1 2 3. - 1 - <_> - - <_> - 7 1 10 4 -1. - <_> - 7 1 5 4 2. - <_> - - <_> - 1 1 10 4 -1. - <_> - 6 1 5 4 2. - <_> - - <_> - 0 0 18 11 -1. - <_> - 0 0 9 11 2. - <_> - - <_> - 9 3 4 3 -1. - <_> - 9 3 2 3 2. - 1 - <_> - - <_> - 13 1 3 2 -1. - <_> - 14 2 1 2 3. - 1 - <_> - - <_> - 5 1 2 3 -1. - <_> - 4 2 2 1 3. - 1 - <_> - - <_> - 11 0 3 4 -1. - <_> - 11 1 3 2 2. - <_> - - <_> - 5 4 2 4 -1. - <_> - 5 4 1 2 2. - <_> - 6 6 1 2 2. - <_> - - <_> - 10 2 4 3 -1. - <_> - 10 3 4 1 3. - <_> - - <_> - 3 1 12 6 -1. - <_> - 3 3 12 2 3. - <_> - - <_> - 12 0 3 3 -1. - <_> - 13 1 1 3 3. - 1 - <_> - - <_> - 6 0 3 3 -1. - <_> - 5 1 3 1 3. - 1 - <_> - - <_> - 10 3 4 1 -1. - <_> - 11 3 2 1 2. - <_> - - <_> - 4 3 4 1 -1. - <_> - 5 3 2 1 2. - <_> - - <_> - 12 4 1 2 -1. - <_> - 12 4 1 1 2. - 1 - <_> - - <_> - 4 0 2 4 -1. - <_> - 4 1 2 2 2. - <_> - - <_> - 7 0 6 1 -1. - <_> - 9 0 2 1 3. - <_> - - <_> - 5 0 6 1 -1. - <_> - 7 0 2 1 3. - <_> - - <_> - 8 7 2 2 -1. - <_> - 9 7 1 1 2. - <_> - 8 8 1 1 2. - <_> - - <_> - 4 0 2 4 -1. - <_> - 4 0 1 4 2. - 1 - <_> - - <_> - 12 5 5 4 -1. - <_> - 12 6 5 2 2. - <_> - - <_> - 0 0 1 3 -1. - <_> - 0 1 1 1 3. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 5 7 3 1 -1. - <_> - 6 7 1 1 3. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - <_> - - <_> - 6 1 6 9 -1. - <_> - 8 4 2 3 9. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 13 3 1 4 -1. - <_> - 13 3 1 2 2. - 1 - <_> - - <_> - 5 3 4 1 -1. - <_> - 5 3 2 1 2. - 1 - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 1 0 2 2 -1. - <_> - 1 0 1 1 2. - <_> - 2 1 1 1 2. - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 0 1 1 3. - <_> - - <_> - 0 0 3 1 -1. - <_> - 1 0 1 1 3. - <_> - - <_> - 9 8 2 3 -1. - <_> - 9 8 1 3 2. - <_> - - <_> - 4 6 1 3 -1. - <_> - 4 7 1 1 3. - <_> - - <_> - 13 0 4 10 -1. - <_> - 14 0 2 10 2. - <_> - - <_> - 1 0 4 10 -1. - <_> - 2 0 2 10 2. - <_> - - <_> - 3 6 12 2 -1. - <_> - 6 6 6 2 2. - <_> - - <_> - 2 7 2 2 -1. - <_> - 2 7 1 1 2. - <_> - 3 8 1 1 2. - <_> - - <_> - 15 5 3 4 -1. - <_> - 15 6 3 2 2. - <_> - - <_> - 0 5 3 4 -1. - <_> - 0 6 3 2 2. - <_> - - <_> - 12 4 6 4 -1. - <_> - 12 5 6 2 2. - <_> - - <_> - 0 4 6 4 -1. - <_> - 0 5 6 2 2. - <_> - - <_> - 10 1 2 3 -1. - <_> - 10 2 2 1 3. - <_> - - <_> - 6 1 2 3 -1. - <_> - 6 2 2 1 3. - <_> - - <_> - 7 6 6 3 -1. - <_> - 9 6 2 3 3. - <_> - - <_> - 5 6 6 3 -1. - <_> - 7 6 2 3 3. - <_> - - <_> - 9 8 2 3 -1. - <_> - 9 8 1 3 2. - <_> - - <_> - 2 3 12 9 -1. - <_> - 6 3 4 9 3. - <_> - - <_> - 15 7 3 5 -1. - <_> - 16 7 1 5 3. - <_> - - <_> - 7 8 2 3 -1. - <_> - 8 8 1 3 2. - <_> - - <_> - 15 7 3 5 -1. - <_> - 16 7 1 5 3. - <_> - - <_> - 0 7 3 5 -1. - <_> - 1 7 1 5 3. - <_> - - <_> - 10 0 4 8 -1. - <_> - 11 1 2 8 2. - 1 - <_> - - <_> - 8 0 8 4 -1. - <_> - 7 1 8 2 2. - 1 - <_> - - <_> - 11 3 3 5 -1. - <_> - 12 4 1 5 3. - 1 - <_> - - <_> - 6 8 6 1 -1. - <_> - 8 8 2 1 3. - <_> - - <_> - 9 7 6 2 -1. - <_> - 11 7 2 2 3. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 7 0 4 1 -1. - <_> - 8 0 2 1 2. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 5 1 1 3. - <_> - - <_> - 11 1 1 10 -1. - <_> - 11 1 1 5 2. - 1 - <_> - - <_> - 7 1 10 1 -1. - <_> - 7 1 5 1 2. - 1 - <_> - - <_> - 12 0 2 8 -1. - <_> - 12 0 1 8 2. - 1 - <_> - - <_> - 6 4 6 8 -1. - <_> - 6 8 6 4 2. - <_> - - <_> - 5 4 8 3 -1. - <_> - 5 5 8 1 3. - <_> - - <_> - 4 4 5 8 -1. - <_> - 4 6 5 4 2. - <_> - - <_> - 13 6 4 6 -1. - <_> - 13 9 4 3 2. - <_> - - <_> - 1 6 4 6 -1. - <_> - 1 9 4 3 2. - <_> - - <_> - 15 8 2 2 -1. - <_> - 15 8 2 1 2. - 1 - <_> - - <_> - 3 8 2 2 -1. - <_> - 3 8 1 2 2. - 1 - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 2 2 3 2. - <_> - - <_> - 0 2 4 6 -1. - <_> - 0 4 4 2 3. - <_> - - <_> - 13 7 2 2 -1. - <_> - 14 7 1 1 2. - <_> - 13 8 1 1 2. - <_> - - <_> - 5 10 2 1 -1. - <_> - 6 10 1 1 2. - <_> - - <_> - 10 10 3 1 -1. - <_> - 11 10 1 1 3. - <_> - - <_> - 5 10 3 1 -1. - <_> - 6 10 1 1 3. - <_> - - <_> - 12 7 2 3 -1. - <_> - 11 8 2 1 3. - 1 - <_> - - <_> - 6 7 3 2 -1. - <_> - 7 8 1 2 3. - 1 - <_> - - <_> - 6 8 7 3 -1. - <_> - 6 9 7 1 3. - <_> - - <_> - 7 8 1 3 -1. - <_> - 7 9 1 1 3. - <_> - - <_> - 5 9 8 1 -1. - <_> - 5 9 4 1 2. - <_> - - <_> - 5 8 8 2 -1. - <_> - 9 8 4 2 2. - <_> - - <_> - 16 8 2 4 -1. - <_> - 16 10 2 2 2. - <_> - - <_> - 3 7 6 2 -1. - <_> - 5 7 2 2 3. - <_> - - <_> - 16 8 2 4 -1. - <_> - 16 10 2 2 2. - <_> - - <_> - 0 8 2 4 -1. - <_> - 0 10 2 2 2. - <_> - - <_> - 16 8 2 1 -1. - <_> - 16 8 1 1 2. - 1 - <_> - - <_> - 2 8 1 2 -1. - <_> - 2 8 1 1 2. - 1 - <_> - - <_> - 8 8 2 2 -1. - <_> - 9 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 5 8 2 1 -1. - <_> - 6 8 1 1 2. - <_> - - <_> - 9 3 2 2 -1. - <_> - 9 3 2 1 2. - 1 - <_> - - <_> - 9 3 2 2 -1. - <_> - 9 3 1 2 2. - 1 - <_> - - <_> - 9 8 2 2 -1. - <_> - 10 8 1 1 2. - <_> - 9 9 1 1 2. - <_> - - <_> - 0 5 10 4 -1. - <_> - 0 5 5 2 2. - <_> - 5 7 5 2 2. - <_> - - <_> - 13 5 2 6 -1. - <_> - 13 5 1 6 2. - <_> - - <_> - 3 5 2 6 -1. - <_> - 4 5 1 6 2. - <_> - - <_> - 9 8 2 2 -1. - <_> - 10 8 1 1 2. - <_> - 9 9 1 1 2. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 9 0 4 6 -1. - <_> - 10 0 2 6 2. - <_> - - <_> - 6 4 3 3 -1. - <_> - 7 5 1 3 3. - 1 - <_> - - <_> - 15 6 3 3 -1. - <_> - 14 7 3 1 3. - 1 - <_> - - <_> - 4 7 3 2 -1. - <_> - 5 8 1 2 3. - 1 - <_> - - <_> - 12 5 3 1 -1. - <_> - 13 5 1 1 3. - <_> - - <_> - 6 2 2 3 -1. - <_> - 5 3 2 1 3. - 1 - <_> - - <_> - 12 5 3 1 -1. - <_> - 13 5 1 1 3. - <_> - - <_> - 3 5 3 1 -1. - <_> - 4 5 1 1 3. - <_> - - <_> - 12 3 2 7 -1. - <_> - 12 3 1 7 2. - 1 - <_> - - <_> - 3 0 9 3 -1. - <_> - 2 1 9 1 3. - 1 - <_> - - <_> - 9 0 4 7 -1. - <_> - 10 0 2 7 2. - <_> - - <_> - 5 0 4 7 -1. - <_> - 6 0 2 7 2. - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 2 2 3 2. - <_> - - <_> - 8 7 1 3 -1. - <_> - 8 8 1 1 3. - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 2 2 3 2. - <_> - - <_> - 5 2 4 3 -1. - <_> - 6 2 2 3 2. - <_> - - <_> - 9 2 1 3 -1. - <_> - 9 3 1 1 3. - <_> - - <_> - 8 2 2 2 -1. - <_> - 8 2 1 1 2. - <_> - 9 3 1 1 2. - <_> - - <_> - 3 0 15 3 -1. - <_> - 8 1 5 1 9. - <_> - - <_> - 0 0 15 3 -1. - <_> - 5 1 5 1 9. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 10 7 1 3 -1. - <_> - 10 8 1 1 3. - <_> - - <_> - 7 7 1 3 -1. - <_> - 7 8 1 1 3. - <_> - - <_> - 10 9 2 2 -1. - <_> - 11 9 1 1 2. - <_> - 10 10 1 1 2. - <_> - - <_> - 3 7 2 2 -1. - <_> - 3 7 1 1 2. - <_> - 4 8 1 1 2. - <_> - - <_> - 10 9 2 2 -1. - <_> - 11 9 1 1 2. - <_> - 10 10 1 1 2. - <_> - - <_> - 6 9 2 2 -1. - <_> - 6 9 1 1 2. - <_> - 7 10 1 1 2. - <_> - - <_> - 11 3 3 5 -1. - <_> - 12 4 1 5 3. - 1 - <_> - - <_> - 6 9 2 2 -1. - <_> - 6 9 1 1 2. - <_> - 7 10 1 1 2. - <_> - - <_> - 10 9 2 2 -1. - <_> - 11 9 1 1 2. - <_> - 10 10 1 1 2. - <_> - - <_> - 4 7 2 3 -1. - <_> - 3 8 2 1 3. - 1 - <_> - - <_> - 14 9 2 2 -1. - <_> - 15 9 1 1 2. - <_> - 14 10 1 1 2. - <_> - - <_> - 2 9 2 2 -1. - <_> - 2 9 1 1 2. - <_> - 3 10 1 1 2. - <_> - - <_> - 10 1 6 4 -1. - <_> - 12 1 2 4 3. - <_> - - <_> - 7 5 3 1 -1. - <_> - 8 5 1 1 3. - <_> - - <_> - 16 3 2 1 -1. - <_> - 16 3 1 1 2. - <_> - - <_> - 0 3 2 1 -1. - <_> - 1 3 1 1 2. - <_> - - <_> - 10 1 6 4 -1. - <_> - 12 1 2 4 3. - <_> - - <_> - 2 1 6 4 -1. - <_> - 4 1 2 4 3. - <_> - - <_> - 16 3 2 2 -1. - <_> - 17 3 1 1 2. - <_> - 16 4 1 1 2. - <_> - - <_> - 5 9 8 3 -1. - <_> - 5 10 8 1 3. - <_> - - <_> - 8 9 3 3 -1. - <_> - 9 10 1 1 9. - <_> - - <_> - 0 8 7 4 -1. - <_> - 0 9 7 2 2. - <_> - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - 1 - <_> - - <_> - 2 9 1 2 -1. - <_> - 2 9 1 1 2. - 1 - <_> - - <_> - 17 8 1 4 -1. - <_> - 17 9 1 2 2. - <_> - - <_> - 0 6 2 4 -1. - <_> - 0 7 2 2 2. - <_> - - <_> - 4 2 11 4 -1. - <_> - 4 3 11 2 2. - <_> - - <_> - 0 1 10 2 -1. - <_> - 0 1 5 1 2. - <_> - 5 2 5 1 2. - <_> - - <_> - 10 9 2 2 -1. - <_> - 11 9 1 1 2. - <_> - 10 10 1 1 2. - <_> - - <_> - 6 9 2 2 -1. - <_> - 6 9 1 1 2. - <_> - 7 10 1 1 2. - <_> - - <_> - 10 9 2 2 -1. - <_> - 11 9 1 1 2. - <_> - 10 10 1 1 2. - <_> - - <_> - 6 9 2 2 -1. - <_> - 6 9 1 1 2. - <_> - 7 10 1 1 2. - <_> - - <_> - 8 1 3 1 -1. - <_> - 9 1 1 1 3. - <_> - - <_> - 0 2 1 3 -1. - <_> - 0 3 1 1 3. - <_> - - <_> - 14 4 2 6 -1. - <_> - 14 4 1 6 2. - <_> - - <_> - 2 4 2 6 -1. - <_> - 3 4 1 6 2. - <_> - - <_> - 11 3 4 1 -1. - <_> - 11 3 2 1 2. - 1 - <_> - - <_> - 7 3 1 4 -1. - <_> - 7 3 1 2 2. - 1 - <_> - - <_> - 9 1 4 2 -1. - <_> - 9 2 4 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 14 9 2 2 -1. - <_> - 15 9 1 1 2. - <_> - 14 10 1 1 2. - <_> - - <_> - 2 9 2 2 -1. - <_> - 2 9 1 1 2. - <_> - 3 10 1 1 2. - <_> - - <_> - 14 9 3 3 -1. - <_> - 15 9 1 3 3. - <_> - - <_> - 0 4 3 2 -1. - <_> - 0 5 3 1 2. - <_> - - <_> - 16 3 1 3 -1. - <_> - 16 4 1 1 3. - <_> - - <_> - 1 3 1 3 -1. - <_> - 1 4 1 1 3. - <_> - - <_> - 17 1 1 3 -1. - <_> - 17 2 1 1 3. - <_> - - <_> - 0 1 1 3 -1. - <_> - 0 2 1 1 3. - <_> - - <_> - 8 2 3 5 -1. - <_> - 9 2 1 5 3. - <_> - - <_> - 9 0 6 4 -1. - <_> - 8 1 6 2 2. - 1 - <_> - - <_> - 14 9 3 3 -1. - <_> - 15 9 1 3 3. - <_> - - <_> - 1 9 3 3 -1. - <_> - 2 9 1 3 3. - <_> - - <_> - 1 11 16 1 -1. - <_> - 1 11 8 1 2. - <_> - - <_> - 0 10 12 2 -1. - <_> - 3 10 6 2 2. - <_> - - <_> - 2 10 16 2 -1. - <_> - 6 10 8 2 2. - <_> - - <_> - 1 9 3 1 -1. - <_> - 2 9 1 1 3. - <_> - - <_> - 12 8 4 2 -1. - <_> - 13 8 2 2 2. - <_> - - <_> - 2 8 4 2 -1. - <_> - 3 8 2 2 2. - <_> - - <_> - 4 9 14 2 -1. - <_> - 11 9 7 1 2. - <_> - 4 10 7 1 2. - <_> - - <_> - 0 9 14 2 -1. - <_> - 0 9 7 1 2. - <_> - 7 10 7 1 2. - <_> - - <_> - 11 8 7 4 -1. - <_> - 11 10 7 2 2. - <_> - - <_> - 0 8 2 4 -1. - <_> - 0 10 2 2 2. - <_> - - <_> - 5 5 8 4 -1. - <_> - 5 7 8 2 2. - <_> - - <_> - 5 8 1 3 -1. - <_> - 4 9 1 1 3. - 1 - <_> - - <_> - 14 8 1 3 -1. - <_> - 14 9 1 1 3. - <_> - - <_> - 6 8 6 3 -1. - <_> - 6 9 6 1 3. - <_> - - <_> - 10 8 8 3 -1. - <_> - 10 9 8 1 3. - <_> - - <_> - 0 8 8 3 -1. - <_> - 0 9 8 1 3. - <_> - - <_> - 12 9 6 3 -1. - <_> - 12 10 6 1 3. - <_> - - <_> - 0 9 6 3 -1. - <_> - 0 10 6 1 3. - <_> - - <_> - 8 9 3 3 -1. - <_> - 9 10 1 1 9. - <_> - - <_> - 5 10 2 1 -1. - <_> - 6 10 1 1 2. - <_> - - <_> - 8 9 3 3 -1. - <_> - 9 10 1 1 9. - <_> - - <_> - 7 9 3 3 -1. - <_> - 8 10 1 1 9. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 3 1 -1. - <_> - 8 10 1 1 3. - <_> - - <_> - 9 3 9 3 -1. - <_> - 12 4 3 1 9. - <_> - - <_> - 0 4 6 3 -1. - <_> - 3 4 3 3 2. - <_> - - <_> - 4 0 14 12 -1. - <_> - 4 0 7 12 2. - <_> - - <_> - 0 0 14 12 -1. - <_> - 7 0 7 12 2. - <_> - - <_> - 2 0 16 9 -1. - <_> - 6 0 8 9 2. - <_> - - <_> - 0 0 9 3 -1. - <_> - 3 0 3 3 3. - <_> - - <_> - 8 0 2 4 -1. - <_> - 8 1 2 2 2. - <_> - - <_> - 4 0 10 4 -1. - <_> - 4 1 10 2 2. - <_> - - <_> - 9 3 9 3 -1. - <_> - 12 4 3 1 9. - <_> - - <_> - 0 3 9 3 -1. - <_> - 3 4 3 1 9. - <_> - - <_> - 9 11 9 1 -1. - <_> - 12 11 3 1 3. - <_> - - <_> - 0 11 9 1 -1. - <_> - 3 11 3 1 3. - <_> - - <_> - 17 0 1 3 -1. - <_> - 17 1 1 1 3. - <_> - - <_> - 0 11 16 1 -1. - <_> - 8 11 8 1 2. - <_> - - <_> - 6 0 6 2 -1. - <_> - 8 0 2 2 3. - <_> - - <_> - 0 0 1 3 -1. - <_> - 0 1 1 1 3. - <_> - - <_> - 15 0 2 2 -1. - <_> - 16 0 1 1 2. - <_> - 15 1 1 1 2. - <_> - - <_> - 1 0 2 2 -1. - <_> - 1 0 1 1 2. - <_> - 2 1 1 1 2. - <_> - - <_> - 2 0 14 2 -1. - <_> - 9 0 7 1 2. - <_> - 2 1 7 1 2. - <_> - - <_> - 6 0 2 3 -1. - <_> - 5 1 2 1 3. - 1 - <_> - - <_> - 14 0 2 3 -1. - <_> - 14 0 1 3 2. - 1 - <_> - - <_> - 4 0 3 2 -1. - <_> - 4 0 3 1 2. - 1 - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 0 1 1 3. - <_> - - <_> - 0 0 3 1 -1. - <_> - 1 0 1 1 3. - <_> - - <_> - 11 3 3 5 -1. - <_> - 12 4 1 5 3. - 1 - <_> - - <_> - 7 3 5 3 -1. - <_> - 6 4 5 1 3. - 1 - <_> - - <_> - 10 6 2 6 -1. - <_> - 10 9 2 3 2. - <_> - - <_> - 2 2 6 9 -1. - <_> - 4 5 2 3 9. - <_> - - <_> - 12 0 4 5 -1. - <_> - 12 0 2 5 2. - 1 - <_> - - <_> - 1 0 4 7 -1. - <_> - 2 0 2 7 2. - <_> - - <_> - 12 0 4 5 -1. - <_> - 12 0 2 5 2. - 1 - <_> - - <_> - 6 0 5 4 -1. - <_> - 6 0 5 2 2. - 1 - <_> - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - <_> - - <_> - 3 1 12 1 -1. - <_> - 9 1 6 1 2. - <_> - - <_> - 9 0 4 8 -1. - <_> - 9 0 2 8 2. - 1 - <_> - - <_> - 9 0 8 4 -1. - <_> - 9 0 8 2 2. - 1 - <_> - - <_> - 14 3 4 3 -1. - <_> - 14 4 4 1 3. - <_> - - <_> - 0 0 3 1 -1. - <_> - 1 0 1 1 3. - <_> - - <_> - 8 0 6 6 -1. - <_> - 10 0 2 6 3. - <_> - - <_> - 4 0 8 3 -1. - <_> - 8 0 4 3 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - <_> - - <_> - 1 0 2 1 -1. - <_> - 2 0 1 1 2. - <_> - - <_> - 8 2 6 3 -1. - <_> - 8 3 6 1 3. - <_> - - <_> - 2 0 3 1 -1. - <_> - 3 1 1 1 3. - 1 - <_> - - <_> - 11 11 6 1 -1. - <_> - 13 11 2 1 3. - <_> - - <_> - 1 11 6 1 -1. - <_> - 3 11 2 1 3. - <_> - - <_> - 17 3 1 4 -1. - <_> - 17 5 1 2 2. - <_> - - <_> - 0 3 1 4 -1. - <_> - 0 5 1 2 2. - diff --git a/data/haarcascades/haarcascade_mcs_righteye_alt.xml b/data/haarcascades/haarcascade_mcs_righteye_alt.xml deleted file mode 100644 index 43245afc30..0000000000 --- a/data/haarcascades/haarcascade_mcs_righteye_alt.xml +++ /dev/null @@ -1,22351 +0,0 @@ - - - - - - 18 12 - - <_> - - - <_> - - <_> - - - - <_> - 3 0 12 12 -1. - <_> - 7 4 4 4 9. - 0 - -5.6810832023620605e-001 - 8.3960670232772827e-001 - -7.6481401920318604e-001 - <_> - - <_> - - - - <_> - 0 4 18 8 -1. - <_> - 0 8 18 4 2. - 0 - 2.0721870660781860e-001 - -7.1712601184844971e-001 - 5.2041262388229370e-001 - <_> - - <_> - - - - <_> - 0 1 2 1 -1. - <_> - 1 1 1 1 2. - 0 - -3.3353710023220628e-005 - 4.7114491462707520e-001 - -6.5355622768402100e-001 - <_> - - <_> - - - - <_> - 12 2 5 8 -1. - <_> - 12 6 5 4 2. - 0 - 1.3509589433670044e-001 - 2.9115460813045502e-002 - -3.3245581388473511e-001 - <_> - - <_> - - - - <_> - 8 5 2 2 -1. - <_> - 8 5 2 1 2. - 1 - -2.0615929737687111e-002 - 6.8218058347702026e-001 - -2.8196701407432556e-001 - <_> - - <_> - - - - <_> - 14 0 2 5 -1. - <_> - 14 0 1 5 2. - 0 - -4.6026369091123343e-005 - 2.0233640074729919e-001 - -1.3312029838562012e-001 - <_> - - <_> - - - - <_> - 2 0 2 5 -1. - <_> - 3 0 1 5 2. - 0 - -4.4764939957531169e-005 - 2.8388169407844543e-001 - -4.7019150853157043e-001 - <_> - - <_> - - - - <_> - 3 0 12 6 -1. - <_> - 3 2 12 2 3. - 0 - 1.1478319764137268e-001 - -1.8182520568370819e-001 - 6.4350587129592896e-001 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - 0 - 7.4280993430875242e-005 - -4.9766281247138977e-001 - 2.3925340175628662e-001 - -1.8184880018234253e+000 - -1 - -1 - <_> - - - <_> - - <_> - - - - <_> - 3 0 12 12 -1. - <_> - 7 4 4 4 9. - 0 - -7.0355957746505737e-001 - 8.0994802713394165e-001 - -6.6400188207626343e-001 - <_> - - <_> - - - - <_> - 0 4 18 8 -1. - <_> - 0 8 18 4 2. - 0 - 2.8693929314613342e-001 - -6.3067370653152466e-001 - 5.7269209623336792e-001 - <_> - - <_> - - - - <_> - 0 0 4 1 -1. - <_> - 2 0 2 1 2. - 0 - -4.2597850551828742e-005 - 3.1228521466255188e-001 - -6.9640642404556274e-001 - <_> - - <_> - - - - <_> - 4 2 10 6 -1. - <_> - 4 4 10 2 3. - 0 - -1.1617150157690048e-001 - 6.4757740497589111e-001 - -2.8760230541229248e-001 - <_> - - <_> - - - - <_> - 0 8 18 4 -1. - <_> - 0 10 18 2 2. - 0 - 1.3706079684197903e-002 - -6.4052939414978027e-001 - 1.9451349973678589e-001 - <_> - - <_> - - - - <_> - 8 6 4 2 -1. - <_> - 8 6 2 2 2. - 0 - -1.3996980153024197e-002 - 2.3904429376125336e-001 - -1.2181480228900909e-001 - <_> - - <_> - - - - <_> - 5 6 6 2 -1. - <_> - 8 6 3 2 2. - 0 - -2.3848619312047958e-002 - 4.1974571347236633e-001 - -2.9327690601348877e-001 - <_> - - <_> - - - - <_> - 15 0 1 2 -1. - <_> - 15 1 1 1 2. - 0 - -5.0047809054376557e-005 - 9.3466326594352722e-002 - -8.5978589951992035e-002 - <_> - - <_> - - - - <_> - 2 0 1 2 -1. - <_> - 2 1 1 1 2. - 0 - -4.8869820602703840e-005 - 2.9515549540519714e-001 - -3.6450791358947754e-001 - <_> - - <_> - - - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - 0 - -8.1548085436224937e-003 - -7.9693388938903809e-001 - 1.1169960349798203e-001 - <_> - - <_> - - - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - 0 - 6.5567810088396072e-003 - 1.0915560275316238e-001 - -7.6665240526199341e-001 - -1.8897850513458252e+000 - 0 - -1 - <_> - - - <_> - - <_> - - - - <_> - 3 0 12 12 -1. - <_> - 7 4 4 4 9. - 0 - -7.9526257514953613e-001 - 7.6672828197479248e-001 - -5.7977437973022461e-001 - <_> - - <_> - - - - <_> - 12 0 6 5 -1. - <_> - 12 0 3 5 2. - 0 - -1.7080819234251976e-002 - 2.3749460279941559e-001 - -1.0151080042123795e-001 - <_> - - <_> - - - - <_> - 9 3 4 4 -1. - <_> - 9 3 4 2 2. - 1 - -8.8396757841110229e-002 - 6.1395412683486938e-001 - -4.0397110581398010e-001 - <_> - - <_> - - - - <_> - 6 0 12 4 -1. - <_> - 10 0 4 4 3. - 0 - 3.0759669840335846e-002 - -1.5979920327663422e-001 - 2.1410289406776428e-001 - <_> - - <_> - - - - <_> - 0 0 6 6 -1. - <_> - 3 0 3 6 2. - 0 - -2.8572969138622284e-002 - 4.6015259623527527e-001 - -4.9520689249038696e-001 - <_> - - <_> - - - - <_> - 0 6 18 6 -1. - <_> - 0 9 18 3 2. - 0 - 1.1635340005159378e-001 - -6.0537588596343994e-001 - 2.3268540203571320e-001 - <_> - - <_> - - - - <_> - 1 0 2 1 -1. - <_> - 1 0 1 1 2. - 1 - 1.0375100100645795e-004 - -5.2447670698165894e-001 - 2.0643760263919830e-001 - <_> - - <_> - - - - <_> - 10 10 8 2 -1. - <_> - 10 11 8 1 2. - 0 - -5.9346808120608330e-003 - -5.8789312839508057e-001 - 8.3713911473751068e-002 - <_> - - <_> - - - - <_> - 6 10 4 2 -1. - <_> - 7 10 2 2 2. - 0 - 6.6315559670329094e-003 - 1.0943070054054260e-001 - -7.9030650854110718e-001 - <_> - - <_> - - - - <_> - 11 9 1 2 -1. - <_> - 11 9 1 1 2. - 1 - 6.4884088933467865e-003 - 2.3464180529117584e-002 - -4.6662831306457520e-001 - <_> - - <_> - - - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - 0 - -2.5442529469728470e-002 - 4.1558659076690674e-001 - -2.0745509862899780e-001 - <_> - - <_> - - - - <_> - 11 9 1 2 -1. - <_> - 11 9 1 1 2. - 1 - -1.4391910284757614e-002 - -5.1255929470062256e-001 - 4.2892999947071075e-002 - <_> - - <_> - - - - <_> - 7 9 2 1 -1. - <_> - 7 9 1 1 2. - 1 - 3.7105670198798180e-003 - 1.3508659601211548e-001 - -6.7032521963119507e-001 - <_> - - <_> - - - - <_> - 7 1 4 3 -1. - <_> - 8 1 2 3 2. - 0 - -1.0664899833500385e-002 - -6.4452391862869263e-001 - 8.6801767349243164e-002 - <_> - - <_> - - - - <_> - 0 9 3 3 -1. - <_> - 0 10 3 1 3. - 0 - 1.3130259700119495e-002 - 7.2303600609302521e-002 - -7.2920471429824829e-001 - <_> - - <_> - - - - <_> - 14 9 4 3 -1. - <_> - 14 10 4 1 3. - 0 - -1.1123689822852612e-002 - -6.3051140308380127e-001 - 8.8690377771854401e-002 - -1.7659480571746826e+000 - 1 - -1 - <_> - - - <_> - - <_> - - - - <_> - 3 1 12 9 -1. - <_> - 7 4 4 3 9. - 0 - -4.8238849639892578e-001 - 6.7658770084381104e-001 - -6.3496381044387817e-001 - <_> - - <_> - - - - <_> - 1 4 16 8 -1. - <_> - 1 8 16 4 2. - 0 - 3.6105468869209290e-001 - -4.7645848989486694e-001 - 4.3273618817329407e-001 - <_> - - <_> - - - - <_> - 3 6 6 2 -1. - <_> - 5 6 2 2 3. - 0 - 3.7622179836034775e-002 - -2.5917899608612061e-001 - 6.6635400056838989e-001 - <_> - - <_> - - - - <_> - 6 0 12 4 -1. - <_> - 10 0 4 4 3. - 0 - 3.3445660024881363e-002 - -5.1630370318889618e-002 - 1.9169320166110992e-001 - <_> - - <_> - - - - <_> - 0 0 4 6 -1. - <_> - 2 0 2 6 2. - 0 - -1.5409329906105995e-002 - 2.8438740968704224e-001 - -4.7467359900474548e-001 - <_> - - <_> - - - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - 0 - -9.9044256785418838e-005 - 4.0987960994243622e-002 - -8.7138727307319641e-002 - <_> - - <_> - - - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - 0 - -1.1052149784518406e-004 - 2.7015548944473267e-001 - -3.5196688771247864e-001 - <_> - - <_> - - - - <_> - 0 8 18 4 -1. - <_> - 0 10 18 2 2. - 0 - 2.2914599627256393e-002 - -5.8854997158050537e-001 - 1.4034299552440643e-001 - <_> - - <_> - - - - <_> - 9 2 6 2 -1. - <_> - 11 4 2 2 3. - 1 - -6.8064533174037933e-002 - 3.8482880592346191e-001 - -1.9926619529724121e-001 - <_> - - <_> - - - - <_> - 4 1 10 6 -1. - <_> - 4 3 10 2 3. - 0 - -1.3427540659904480e-001 - 5.3540730476379395e-001 - -1.2980240583419800e-001 - <_> - - <_> - - - - <_> - 2 0 9 4 -1. - <_> - 5 0 3 4 3. - 0 - -1.4653420075774193e-002 - 2.5729840993881226e-001 - -2.6571980118751526e-001 - <_> - - <_> - - - - <_> - 16 2 2 1 -1. - <_> - 16 2 1 1 2. - 0 - -1.2547649384941906e-004 - 7.7122293412685394e-002 - -7.7603712677955627e-002 - <_> - - <_> - - - - <_> - 0 2 2 1 -1. - <_> - 1 2 1 1 2. - 0 - -8.8957793195731938e-005 - 1.8061220645904541e-001 - -3.2629799842834473e-001 - <_> - - <_> - - - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - -1.5391400083899498e-002 - -4.6647891402244568e-001 - 2.8946319594979286e-002 - <_> - - <_> - - - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 2 2. - 1 - -1.4515600167214870e-002 - -5.2544248104095459e-001 - 9.7634941339492798e-002 - <_> - - <_> - - - - <_> - 13 9 1 2 -1. - <_> - 13 9 1 1 2. - 1 - 6.8836379796266556e-003 - 2.6379430666565895e-002 - -5.2875238656997681e-001 - <_> - - <_> - - - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - 2.9651119839400053e-003 - 9.0258508920669556e-002 - -5.3580790758132935e-001 - <_> - - <_> - - - - <_> - 9 5 4 4 -1. - <_> - 10 5 2 4 2. - 0 - -1.8835909664630890e-002 - 3.1948068737983704e-001 - -6.3316017389297485e-002 - <_> - - <_> - - - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - -7.3288138955831528e-003 - -4.4683480262756348e-001 - 1.0952600091695786e-001 - <_> - - <_> - - - - <_> - 2 0 14 8 -1. - <_> - 2 2 14 4 2. - 0 - 1.0221300274133682e-001 - -1.0253670066595078e-001 - 4.8284870386123657e-001 - <_> - - <_> - - - - <_> - 7 5 4 4 -1. - <_> - 8 5 2 4 2. - 0 - -6.8491459824144840e-003 - 2.4407060444355011e-001 - -1.7565080523490906e-001 - <_> - - <_> - - - - <_> - 17 8 1 4 -1. - <_> - 17 9 1 2 2. - 0 - -4.0765879675745964e-003 - -4.6912059187889099e-001 - 7.7857926487922668e-002 - <_> - - <_> - - - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - 9.3826521188020706e-003 - 6.5722987055778503e-002 - -5.7086908817291260e-001 - <_> - - <_> - - - - <_> - 15 2 3 1 -1. - <_> - 16 3 1 1 3. - 1 - 1.1709299869835377e-002 - 2.9651859775185585e-002 - -4.4558471441268921e-001 - <_> - - <_> - - - - <_> - 3 2 1 3 -1. - <_> - 2 3 1 1 3. - 1 - 3.7532749120146036e-003 - 1.2010630220174789e-001 - -3.4494531154632568e-001 - <_> - - <_> - - - - <_> - 10 5 6 3 -1. - <_> - 12 5 2 3 3. - 0 - 4.9949299544095993e-002 - -3.8329821079969406e-002 - 2.5580260157585144e-001 - <_> - - <_> - - - - <_> - 2 5 6 3 -1. - <_> - 4 5 2 3 3. - 0 - -1.9659079611301422e-002 - 3.4948769211769104e-001 - -1.0688430070877075e-001 - <_> - - <_> - - - - <_> - 14 8 1 3 -1. - <_> - 13 9 1 1 3. - 1 - -9.4384029507637024e-003 - -4.4859799742698669e-001 - 6.0474641621112823e-002 - <_> - - <_> - - - - <_> - 5 0 6 4 -1. - <_> - 5 1 6 2 2. - 0 - -3.2340411096811295e-002 - 4.6869951486587524e-001 - -8.7362661957740784e-002 - <_> - - <_> - - - - <_> - 10 10 1 2 -1. - <_> - 10 11 1 1 2. - 0 - 1.6322209557984024e-004 - -1.5675650537014008e-001 - 1.1256299912929535e-001 - <_> - - <_> - - - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - 0 - 1.0735830292105675e-002 - 5.0046779215335846e-002 - -6.9020110368728638e-001 - <_> - - <_> - - - - <_> - 2 0 14 4 -1. - <_> - 2 1 14 2 2. - 0 - 2.6855830103158951e-002 - -1.3781370222568512e-001 - 2.5898760557174683e-001 - -1.9269560575485229e+000 - 2 - -1 - <_> - - - <_> - - <_> - - - - <_> - 7 4 4 2 -1. - <_> - 7 4 4 1 2. - 1 - -4.0210861712694168e-002 - 7.2760909795761108e-001 - -4.8194059729576111e-001 - <_> - - <_> - - - - <_> - 0 1 18 9 -1. - <_> - 6 4 6 3 9. - 0 - -9.4253152608871460e-001 - 6.5825307369232178e-001 - -3.3508211374282837e-001 - <_> - - <_> - - - - <_> - 2 5 4 3 -1. - <_> - 3 5 2 3 2. - 0 - -6.7276130430400372e-003 - 4.6350660920143127e-001 - -2.6712501049041748e-001 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 0 4 18 4 3. - 0 - -3.4221410751342773e-001 - 2.6187661290168762e-001 - -4.4321650266647339e-001 - <_> - - <_> - - - - <_> - 0 0 12 3 -1. - <_> - 3 0 6 3 2. - 0 - -2.6442220434546471e-002 - 2.5853350758552551e-001 - -4.2997428774833679e-001 - <_> - - <_> - - - - <_> - 10 9 1 2 -1. - <_> - 10 9 1 1 2. - 1 - -1.1211539822397754e-004 - 1.0946519672870636e-001 - -2.2906930744647980e-001 - <_> - - <_> - - - - <_> - 8 9 2 3 -1. - <_> - 9 9 1 3 2. - 0 - -5.8475080877542496e-003 - -6.3840919733047485e-001 - 1.2859229743480682e-001 - <_> - - <_> - - - - <_> - 16 0 2 7 -1. - <_> - 16 0 1 7 2. - 0 - -3.1806540209800005e-003 - 1.5797249972820282e-001 - -2.2806149721145630e-001 - <_> - - <_> - - - - <_> - 0 0 2 2 -1. - <_> - 1 0 1 2 2. - 0 - -7.6963173341937363e-005 - 1.7013229429721832e-001 - -4.0136960148811340e-001 - <_> - - <_> - - - - <_> - 11 5 3 3 -1. - <_> - 12 5 1 3 3. - 0 - 1.0161420330405235e-002 - -1.2210579961538315e-001 - 4.2467159032821655e-001 - <_> - - <_> - - - - <_> - 4 5 3 3 -1. - <_> - 5 5 1 3 3. - 0 - -4.1128029115498066e-003 - 3.7742561101913452e-001 - -1.6708080470561981e-001 - <_> - - <_> - - - - <_> - 14 8 2 2 -1. - <_> - 14 8 2 1 2. - 1 - 9.5285046845674515e-003 - 5.7505119591951370e-002 - -4.5794519782066345e-001 - <_> - - <_> - - - - <_> - 5 2 8 4 -1. - <_> - 5 3 8 2 2. - 0 - 3.5861488431692123e-002 - -1.1722719669342041e-001 - 5.0423789024353027e-001 - <_> - - <_> - - - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - 1 - 1.1980050243437290e-002 - 4.8618610948324203e-002 - -4.2829948663711548e-001 - <_> - - <_> - - - - <_> - 4 2 10 4 -1. - <_> - 4 3 10 2 2. - 0 - -4.5652940869331360e-002 - 4.4611850380897522e-001 - -1.2824800610542297e-001 - <_> - - <_> - - - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - -1.2624289840459824e-002 - -4.7304341197013855e-001 - 3.3563230186700821e-002 - <_> - - <_> - - - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - -6.4819469116628170e-003 - -4.9199560284614563e-001 - 1.0396429896354675e-001 - <_> - - <_> - - - - <_> - 16 2 2 8 -1. - <_> - 16 2 1 8 2. - 0 - -3.8513869512826204e-003 - 1.3302020728588104e-001 - -1.5856249630451202e-001 - <_> - - <_> - - - - <_> - 0 3 2 5 -1. - <_> - 1 3 1 5 2. - 0 - -5.6580482050776482e-003 - 2.5680649280548096e-001 - -2.1377700567245483e-001 - <_> - - <_> - - - - <_> - 14 8 2 2 -1. - <_> - 14 8 2 1 2. - 1 - -2.7151580899953842e-002 - -4.8710969090461731e-001 - 3.2073508948087692e-002 - <_> - - <_> - - - - <_> - 4 8 2 2 -1. - <_> - 4 8 1 2 2. - 1 - 4.4631878845393658e-003 - 1.0160399973392487e-001 - -5.0148272514343262e-001 - <_> - - <_> - - - - <_> - 3 0 12 12 -1. - <_> - 7 0 4 12 3. - 0 - -9.2112571001052856e-002 - 2.0617170631885529e-001 - -2.4160179495811462e-001 - <_> - - <_> - - - - <_> - 5 11 6 1 -1. - <_> - 7 11 2 1 3. - 0 - -1.3351120054721832e-002 - -7.3643708229064941e-001 - 6.3407666981220245e-002 - <_> - - <_> - - - - <_> - 4 0 10 6 -1. - <_> - 4 2 10 2 3. - 0 - 1.4642560482025146e-001 - -1.0779049992561340e-001 - 4.4443801045417786e-001 - <_> - - <_> - - - - <_> - 0 8 3 4 -1. - <_> - 0 9 3 2 2. - 0 - -1.0188819840550423e-002 - -5.2276557683944702e-001 - 8.4325402975082397e-002 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - 0 - 1.6951869474723935e-004 - -4.0729030966758728e-001 - 1.0294459760189056e-001 - <_> - - <_> - - - - <_> - 7 3 5 3 -1. - <_> - 6 4 5 1 3. - 1 - 4.2296588420867920e-002 - -8.3421789109706879e-002 - 4.9257528781890869e-001 - <_> - - <_> - - - - <_> - 8 0 2 3 -1. - <_> - 8 0 1 3 2. - 0 - -8.8663380593061447e-003 - -5.9615707397460938e-001 - 7.2008118033409119e-002 - <_> - - <_> - - - - <_> - 8 4 3 3 -1. - <_> - 7 5 3 1 3. - 1 - -2.6932360604405403e-002 - 3.9307719469070435e-001 - -9.4045691192150116e-002 - <_> - - <_> - - - - <_> - 4 1 10 4 -1. - <_> - 4 2 10 2 2. - 0 - -3.2513670623302460e-002 - 4.0155789256095886e-001 - -8.1126846373081207e-002 - <_> - - <_> - - - - <_> - 7 0 3 3 -1. - <_> - 8 0 1 3 3. - 0 - 5.6395838037133217e-003 - 8.2285016775131226e-002 - -4.2262369394302368e-001 - <_> - - <_> - - - - <_> - 9 4 4 3 -1. - <_> - 8 5 4 1 3. - 1 - 5.0715889781713486e-002 - -3.0324889346957207e-002 - 5.8319318294525146e-001 - <_> - - <_> - - - - <_> - 9 4 3 4 -1. - <_> - 10 5 1 4 3. - 1 - -1.4977410435676575e-002 - 2.2337380051612854e-001 - -1.5484930574893951e-001 - <_> - - <_> - - - - <_> - 6 0 6 3 -1. - <_> - 8 0 2 3 3. - 0 - -3.6284331232309341e-002 - -7.2883737087249756e-001 - 4.9019519239664078e-002 - -1.8730369806289673e+000 - 3 - -1 - <_> - - - <_> - - <_> - - - - <_> - 3 2 12 6 -1. - <_> - 3 4 12 2 3. - 0 - -1.4310139417648315e-001 - 5.9999501705169678e-001 - -4.6854639053344727e-001 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -4.5538708567619324e-002 - 6.0437542200088501e-001 - -3.2276171445846558e-001 - <_> - - <_> - - - - <_> - 0 6 18 6 -1. - <_> - 0 9 18 3 2. - 0 - 2.0528450608253479e-001 - -5.2343052625656128e-001 - 3.6189851164817810e-001 - <_> - - <_> - - - - <_> - 14 0 4 2 -1. - <_> - 14 0 2 2 2. - 0 - 1.1236000136705115e-004 - -7.1042299270629883e-002 - 5.5464118719100952e-002 - <_> - - <_> - - - - <_> - 0 0 15 4 -1. - <_> - 5 0 5 4 3. - 0 - -6.6982686519622803e-002 - 2.1147069334983826e-001 - -3.7349238991737366e-001 - <_> - - <_> - - - - <_> - 0 6 18 6 -1. - <_> - 9 6 9 3 2. - <_> - 0 9 9 3 2. - 0 - 4.2605780065059662e-002 - 1.5919719636440277e-001 - -4.6124869585037231e-001 - <_> - - <_> - - - - <_> - 0 0 2 3 -1. - <_> - 1 0 1 3 2. - 0 - -1.1038989759981632e-004 - 1.4112940430641174e-001 - -4.5499908924102783e-001 - <_> - - <_> - - - - <_> - 6 3 6 6 -1. - <_> - 8 5 2 2 9. - 0 - -1.1507949978113174e-001 - 2.5770258903503418e-001 - -2.6506200432777405e-001 - <_> - - <_> - - - - <_> - 0 10 6 2 -1. - <_> - 0 11 6 1 2. - 0 - -4.3419501744210720e-003 - -5.9668141603469849e-001 - 1.0230260342359543e-001 - <_> - - <_> - - - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - 0 - -7.3655629530549049e-003 - -7.5729858875274658e-001 - 6.3309803605079651e-002 - <_> - - <_> - - - - <_> - 6 10 4 2 -1. - <_> - 8 10 2 2 2. - 0 - 1.5698159113526344e-002 - 5.5984470993280411e-002 - -7.6305878162384033e-001 - <_> - - <_> - - - - <_> - 13 5 3 4 -1. - <_> - 14 6 1 4 3. - 1 - -1.4888670295476913e-002 - 1.4457429945468903e-001 - -5.9155210852622986e-002 - <_> - - <_> - - - - <_> - 1 6 6 2 -1. - <_> - 3 6 2 2 3. - 0 - -1.3309270143508911e-002 - 2.8473040461540222e-001 - -1.7599380016326904e-001 - <_> - - <_> - - - - <_> - 9 0 4 4 -1. - <_> - 10 0 2 4 2. - 0 - 1.2894039973616600e-002 - 5.7657320052385330e-002 - -5.1801967620849609e-001 - <_> - - <_> - - - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - 0 - -6.8263791035860777e-005 - 1.6647399961948395e-001 - -2.7714401483535767e-001 - <_> - - <_> - - - - <_> - 5 1 8 6 -1. - <_> - 5 3 8 2 3. - 0 - -1.4141130447387695e-001 - 5.0337702035903931e-001 - -9.7330093383789063e-002 - <_> - - <_> - - - - <_> - 9 2 6 3 -1. - <_> - 11 4 2 3 3. - 1 - -7.0793926715850830e-002 - 2.2329810261726379e-001 - -1.8872700631618500e-001 - <_> - - <_> - - - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - 0 - 6.0439859516918659e-003 - 7.4497416615486145e-002 - -5.1863551139831543e-001 - <_> - - <_> - - - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - 0 - -8.5664521902799606e-003 - -5.3494322299957275e-001 - 6.5551057457923889e-002 - <_> - - <_> - - - - <_> - 15 7 3 2 -1. - <_> - 15 8 3 1 2. - 0 - 1.2475060066208243e-004 - -2.2479990124702454e-001 - 8.8108353316783905e-002 - <_> - - <_> - - - - <_> - 0 5 2 7 -1. - <_> - 1 5 1 7 2. - 0 - -1.0743389837443829e-002 - 2.6506188511848450e-001 - -1.3862170279026031e-001 - <_> - - <_> - - - - <_> - 13 9 1 2 -1. - <_> - 13 9 1 1 2. - 1 - 6.9530052132904530e-003 - 3.3702958375215530e-002 - -4.7984018921852112e-001 - <_> - - <_> - - - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - -7.5777601450681686e-003 - -4.4925630092620850e-001 - 8.1961393356323242e-002 - <_> - - <_> - - - - <_> - 4 1 10 4 -1. - <_> - 4 2 10 2 2. - 0 - -3.6117959767580032e-002 - 4.0106239914894104e-001 - -9.4889998435974121e-002 - <_> - - <_> - - - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - 0 - 3.0786920338869095e-002 - -8.4221139550209045e-002 - 4.5751860737800598e-001 - <_> - - <_> - - - - <_> - 16 3 2 4 -1. - <_> - 16 4 2 2 2. - 0 - 1.0906560346484184e-002 - 3.6288078874349594e-002 - -3.1307759881019592e-001 - <_> - - <_> - - - - <_> - 4 9 1 2 -1. - <_> - 4 10 1 1 2. - 0 - 7.7241609687916934e-005 - -2.6226210594177246e-001 - 1.2772110104560852e-001 - <_> - - <_> - - - - <_> - 16 3 2 4 -1. - <_> - 16 4 2 2 2. - 0 - -1.8342709168791771e-002 - -3.8035660982131958e-001 - 2.0931210368871689e-002 - <_> - - <_> - - - - <_> - 0 3 2 4 -1. - <_> - 0 4 2 2 2. - 0 - -1.4488579705357552e-002 - -6.2516981363296509e-001 - 5.0568919628858566e-002 - <_> - - <_> - - - - <_> - 17 2 1 8 -1. - <_> - 17 4 1 4 2. - 0 - -2.6086460798978806e-002 - -2.5289660692214966e-001 - 2.2778680548071861e-002 - <_> - - <_> - - - - <_> - 6 0 5 4 -1. - <_> - 6 1 5 2 2. - 0 - 2.4344440549612045e-002 - -1.0455399751663208e-001 - 3.2213151454925537e-001 - <_> - - <_> - - - - <_> - 17 2 1 8 -1. - <_> - 17 4 1 4 2. - 0 - 1.6739370301365852e-002 - 1.5031609684228897e-002 - -2.3286940157413483e-001 - <_> - - <_> - - - - <_> - 0 2 1 8 -1. - <_> - 0 4 1 4 2. - 0 - 6.9860741496086121e-003 - 8.2456819713115692e-002 - -4.0554359555244446e-001 - <_> - - <_> - - - - <_> - 11 6 3 2 -1. - <_> - 12 6 1 2 3. - 0 - -6.3432222232222557e-003 - 3.0635970830917358e-001 - -5.6111559271812439e-002 - <_> - - <_> - - - - <_> - 3 0 4 4 -1. - <_> - 4 0 2 4 2. - 0 - 1.3267910107970238e-002 - 5.8571081608533859e-002 - -5.6226778030395508e-001 - <_> - - <_> - - - - <_> - 9 0 4 3 -1. - <_> - 10 0 2 3 2. - 0 - -7.8068808652460575e-003 - -3.3495968580245972e-001 - 4.8010118305683136e-002 - <_> - - <_> - - - - <_> - 4 6 3 2 -1. - <_> - 5 6 1 2 3. - 0 - -4.6056290157139301e-003 - 3.3558750152587891e-001 - -1.0367739945650101e-001 - <_> - - <_> - - - - <_> - 3 5 12 6 -1. - <_> - 7 5 4 6 3. - 0 - -3.5391300916671753e-002 - 1.3985100388526917e-001 - -2.4411860108375549e-001 - <_> - - <_> - - - - <_> - 5 0 7 3 -1. - <_> - 5 1 7 1 3. - 0 - -3.1272999942302704e-002 - 4.2635110020637512e-001 - -6.7719720304012299e-002 - <_> - - <_> - - - - <_> - 9 0 4 3 -1. - <_> - 10 0 2 3 2. - 0 - 5.0648758187890053e-003 - 5.6782770901918411e-002 - -1.8407820165157318e-001 - <_> - - <_> - - - - <_> - 5 0 4 3 -1. - <_> - 6 0 2 3 2. - 0 - 1.1429510079324245e-002 - 5.1047790795564651e-002 - -5.8645612001419067e-001 - <_> - - <_> - - - - <_> - 12 5 6 3 -1. - <_> - 14 5 2 3 3. - 0 - -1.2818889692425728e-002 - 2.5195059180259705e-001 - -1.7262229323387146e-001 - <_> - - <_> - - - - <_> - 5 6 3 1 -1. - <_> - 6 6 1 1 3. - 0 - -2.5068391114473343e-003 - 3.4061318635940552e-001 - -8.6949199438095093e-002 - <_> - - <_> - - - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - 5.4749757982790470e-003 - 2.3750610649585724e-002 - -2.5926721096038818e-001 - <_> - - <_> - - - - <_> - 6 3 6 3 -1. - <_> - 6 4 6 1 3. - 0 - 1.1854119598865509e-002 - -9.0619556605815887e-002 - 2.9119190573692322e-001 - -1.8880920410156250e+000 - 4 - -1 - <_> - - - <_> - - <_> - - - - <_> - 7 4 4 2 -1. - <_> - 7 4 4 1 2. - 1 - -4.7739148139953613e-002 - 7.0311528444290161e-001 - -4.0234449505805969e-001 - <_> - - <_> - - - - <_> - 0 1 18 9 -1. - <_> - 6 4 6 3 9. - 0 - -8.0938947200775146e-001 - 4.6052539348602295e-001 - -4.0787270665168762e-001 - <_> - - <_> - - - - <_> - 8 2 4 4 -1. - <_> - 8 2 4 2 2. - 1 - 1.9570919871330261e-001 - 6.3850008882582188e-003 - -1.0483790283203125e+003 - <_> - - <_> - - - - <_> - 12 5 3 3 -1. - <_> - 13 5 1 3 3. - 0 - -5.5437600240111351e-003 - 4.4707939028739929e-001 - -2.0605599880218506e-001 - <_> - - <_> - - - - <_> - 2 0 13 4 -1. - <_> - 2 1 13 2 2. - 0 - 4.1489699482917786e-001 - 8.0591542646288872e-003 - -1.9253439941406250e+003 - <_> - - <_> - - - - <_> - 15 0 2 2 -1. - <_> - 15 0 1 2 2. - 0 - 1.2064840120729059e-004 - -8.8089093565940857e-002 - 9.6394099295139313e-002 - <_> - - <_> - - - - <_> - 0 3 2 1 -1. - <_> - 1 3 1 1 2. - 0 - -9.2417707492131740e-005 - 1.6505399346351624e-001 - -4.8010158538818359e-001 - <_> - - <_> - - - - <_> - 11 6 6 1 -1. - <_> - 13 6 2 1 3. - 0 - -1.2108679860830307e-002 - 3.5905620455741882e-001 - -1.1650399863719940e-001 - <_> - - <_> - - - - <_> - 0 6 18 6 -1. - <_> - 0 9 18 3 2. - 0 - 1.0738140344619751e-001 - -5.6591778993606567e-001 - 1.3803580403327942e-001 - <_> - - <_> - - - - <_> - 8 5 6 2 -1. - <_> - 10 5 2 2 3. - 0 - -2.1975189447402954e-002 - 4.2953509092330933e-001 - -1.5891620516777039e-001 - <_> - - <_> - - - - <_> - 1 4 6 4 -1. - <_> - 3 4 2 4 3. - 0 - -1.1959870345890522e-002 - 2.9616978764533997e-001 - -2.5460711121559143e-001 - <_> - - <_> - - - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - 0 - -9.0528890723362565e-005 - 7.4505448341369629e-002 - -6.9072231650352478e-002 - <_> - - <_> - - - - <_> - 1 0 2 1 -1. - <_> - 2 0 1 1 2. - 0 - -8.5102466982789338e-005 - 1.6419610381126404e-001 - -3.6688721179962158e-001 - <_> - - <_> - - - - <_> - 0 11 18 1 -1. - <_> - 0 11 9 1 2. - 0 - 2.8498729690909386e-002 - 1.2233109772205353e-001 - -4.8675718903541565e-001 - <_> - - <_> - - - - <_> - 7 11 4 1 -1. - <_> - 9 11 2 1 2. - 0 - 7.7169570140540600e-003 - 6.4482487738132477e-002 - -6.9540137052536011e-001 - <_> - - <_> - - - - <_> - 7 5 4 6 -1. - <_> - 8 5 2 6 2. - 0 - -7.1217319928109646e-003 - 2.0365479588508606e-001 - -2.2741779685020447e-001 - <_> - - <_> - - - - <_> - 8 9 2 1 -1. - <_> - 8 9 1 1 2. - 1 - -1.1075680231442675e-004 - 1.4500780403614044e-001 - -3.4105348587036133e-001 - <_> - - <_> - - - - <_> - 15 0 1 2 -1. - <_> - 15 1 1 1 2. - 0 - 1.1053880007239059e-004 - -6.8307012319564819e-002 - 7.4650689959526062e-002 - <_> - - <_> - - - - <_> - 2 0 1 2 -1. - <_> - 2 1 1 1 2. - 0 - -9.6507181297056377e-005 - 1.8268570303916931e-001 - -2.7704128623008728e-001 - <_> - - <_> - - - - <_> - 0 0 18 4 -1. - <_> - 0 1 18 2 2. - 0 - 3.3470049500465393e-002 - -1.5655350685119629e-001 - 3.1936529278755188e-001 - <_> - - <_> - - - - <_> - 2 2 14 3 -1. - <_> - 2 3 14 1 3. - 0 - 2.0096020773053169e-002 - -1.5562969446182251e-001 - 3.1467041373252869e-001 - <_> - - <_> - - - - <_> - 17 1 1 4 -1. - <_> - 17 2 1 2 2. - 0 - 7.0277601480484009e-003 - 3.7986829876899719e-002 - -3.0223649740219116e-001 - <_> - - <_> - - - - <_> - 6 11 6 1 -1. - <_> - 8 11 2 1 3. - 0 - 6.9380169734358788e-003 - 8.1531472504138947e-002 - -5.6371027231216431e-001 - <_> - - <_> - - - - <_> - 17 1 1 4 -1. - <_> - 17 2 1 2 2. - 0 - -2.7956028934568167e-003 - -1.8539020419120789e-001 - 3.9439260959625244e-002 - <_> - - <_> - - - - <_> - 0 0 1 6 -1. - <_> - 0 2 1 2 3. - 0 - 1.5885600820183754e-002 - 5.9267118573188782e-002 - -7.1854251623153687e-001 - <_> - - <_> - - - - <_> - 16 0 2 4 -1. - <_> - 16 0 1 4 2. - 1 - 3.7774249911308289e-002 - 1.4310140162706375e-002 - -5.0811702013015747e-001 - <_> - - <_> - - - - <_> - 2 0 4 2 -1. - <_> - 2 0 4 1 2. - 1 - 1.5504850074648857e-002 - 8.0278262495994568e-002 - -4.4908508658409119e-001 - <_> - - <_> - - - - <_> - 15 2 2 8 -1. - <_> - 15 4 2 4 2. - 0 - -1.9444189965724945e-002 - 1.7838209867477417e-001 - -1.8505999445915222e-001 - <_> - - <_> - - - - <_> - 6 3 6 3 -1. - <_> - 6 4 6 1 3. - 0 - 2.8419150039553642e-002 - -8.1356927752494812e-002 - 4.9391180276870728e-001 - <_> - - <_> - - - - <_> - 5 1 8 6 -1. - <_> - 5 3 8 2 3. - 0 - -8.3308592438697815e-002 - 3.3119910955429077e-001 - -1.1275950074195862e-001 - <_> - - <_> - - - - <_> - 5 0 8 3 -1. - <_> - 5 1 8 1 3. - 0 - -2.0398350432515144e-002 - 3.7371310591697693e-001 - -1.0401429980993271e-001 - <_> - - <_> - - - - <_> - 15 1 3 9 -1. - <_> - 15 4 3 3 3. - 0 - 1.4064489305019379e-001 - 8.4198080003261566e-003 - -6.9457089900970459e-001 - <_> - - <_> - - - - <_> - 0 1 3 9 -1. - <_> - 0 4 3 3 3. - 0 - 1.9191060215234756e-002 - 8.8749423623085022e-002 - -4.0662020444869995e-001 - <_> - - <_> - - - - <_> - 7 11 4 1 -1. - <_> - 8 11 2 1 2. - 0 - -3.9051079656928778e-003 - -5.7998901605606079e-001 - 5.1149401813745499e-002 - <_> - - <_> - - - - <_> - 0 10 1 2 -1. - <_> - 0 11 1 1 2. - 0 - -2.0223320461809635e-003 - -4.7456279397010803e-001 - 5.7810228317975998e-002 - <_> - - <_> - - - - <_> - 11 5 3 3 -1. - <_> - 12 5 1 3 3. - 0 - -7.0939320139586926e-003 - 2.5586429238319397e-001 - -5.9901829808950424e-002 - <_> - - <_> - - - - <_> - 3 5 4 4 -1. - <_> - 4 5 2 4 2. - 0 - -8.3198416978120804e-003 - 2.6578190922737122e-001 - -1.1572790145874023e-001 - <_> - - <_> - - - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - 0 - -7.8159309923648834e-003 - -5.6447637081146240e-001 - 5.0173521041870117e-002 - <_> - - <_> - - - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - 0 - -1.1840989813208580e-002 - -7.6622551679611206e-001 - 3.0004199594259262e-002 - <_> - - <_> - - - - <_> - 10 4 3 3 -1. - <_> - 11 5 1 3 3. - 1 - -1.4432789757847786e-002 - 1.5162460505962372e-001 - -1.3350149989128113e-001 - <_> - - <_> - - - - <_> - 2 0 9 4 -1. - <_> - 5 0 3 4 3. - 0 - -8.0706225708127022e-003 - 1.2732319533824921e-001 - -2.2091729938983917e-001 - <_> - - <_> - - - - <_> - 8 0 4 3 -1. - <_> - 9 0 2 3 2. - 0 - 1.1658039875328541e-002 - 4.3274190276861191e-002 - -5.2941519021987915e-001 - <_> - - <_> - - - - <_> - 8 8 2 2 -1. - <_> - 8 8 1 2 2. - 1 - -1.9893579185009003e-002 - -5.3083962202072144e-001 - 4.3910909444093704e-002 - <_> - - <_> - - - - <_> - 14 9 1 2 -1. - <_> - 14 9 1 1 2. - 1 - 6.7451149225234985e-003 - 2.1857760846614838e-002 - -4.6655520796775818e-001 - <_> - - <_> - - - - <_> - 4 9 2 1 -1. - <_> - 4 9 1 1 2. - 1 - -1.0237179958494380e-004 - 1.1223310232162476e-001 - -2.4498760700225830e-001 - <_> - - <_> - - - - <_> - 10 4 3 3 -1. - <_> - 11 5 1 3 3. - 1 - -3.7937998771667480e-002 - 1.5558369457721710e-001 - -2.5431839749217033e-002 - <_> - - <_> - - - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 2 2. - 1 - -1.2750740163028240e-002 - -3.4159570932388306e-001 - 7.8362293541431427e-002 - <_> - - <_> - - - - <_> - 16 8 2 2 -1. - <_> - 16 8 1 2 2. - 0 - -1.2596500164363533e-004 - 1.3888040184974670e-001 - -1.7169789969921112e-001 - <_> - - <_> - - - - <_> - 0 8 2 2 -1. - <_> - 1 8 1 2 2. - 0 - -4.9405978061258793e-003 - 2.7017688751220703e-001 - -9.4520643353462219e-002 - <_> - - <_> - - - - <_> - 16 3 2 1 -1. - <_> - 16 3 1 1 2. - 0 - -2.8547599868034013e-005 - 6.3881427049636841e-002 - -6.6255062818527222e-002 - -1.8309839963912964e+000 - 5 - -1 - <_> - - - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 1.2969099916517735e-002 - -4.2454311251640320e-001 - 6.9157850742340088e-001 - <_> - - <_> - - - - <_> - 0 1 18 9 -1. - <_> - 6 4 6 3 9. - 0 - -1.0824010372161865e+000 - 6.2524372339248657e-001 - -2.5212618708610535e-001 - <_> - - <_> - - - - <_> - 1 4 10 3 -1. - <_> - 6 4 5 3 2. - 0 - 2.3240320384502411e-001 - 2.6453230530023575e-002 - -1.4411560058593750e+003 - <_> - - <_> - - - - <_> - 10 2 3 5 -1. - <_> - 11 3 1 5 3. - 1 - -2.4583930149674416e-002 - 1.5964910387992859e-001 - -7.7864259481430054e-002 - <_> - - <_> - - - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - 0 - -3.5321910399943590e-003 - 4.6771478652954102e-001 - -1.8968330323696136e-001 - <_> - - <_> - - - - <_> - 0 4 18 8 -1. - <_> - 0 8 18 4 2. - 0 - 3.3865550160408020e-001 - -4.1563400626182556e-001 - 1.8573409318923950e-001 - <_> - - <_> - - - - <_> - 0 0 6 4 -1. - <_> - 3 0 3 4 2. - 0 - -2.1326009184122086e-002 - 1.8573179841041565e-001 - -3.5007140040397644e-001 - <_> - - <_> - - - - <_> - 9 5 3 2 -1. - <_> - 10 5 1 2 3. - 0 - -6.4955209381878376e-003 - 3.5978358983993530e-001 - -1.0183329880237579e-001 - <_> - - <_> - - - - <_> - 6 5 3 2 -1. - <_> - 7 5 1 2 3. - 0 - 1.1344100348651409e-002 - -9.0360596776008606e-002 - 5.8457189798355103e-001 - <_> - - <_> - - - - <_> - 11 10 1 2 -1. - <_> - 11 11 1 1 2. - 0 - 9.0495683252811432e-005 - -2.5225359201431274e-001 - 1.3392220437526703e-001 - <_> - - <_> - - - - <_> - 5 0 8 6 -1. - <_> - 5 2 8 2 3. - 0 - 7.7168926596641541e-002 - -1.5260620415210724e-001 - 3.4043470025062561e-001 - <_> - - <_> - - - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - 0 - -9.9228993349242955e-005 - 8.5841812193393707e-002 - -5.2303139120340347e-002 - <_> - - <_> - - - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - 0 - 2.1849910262972116e-003 - 7.4815556406974792e-002 - -5.9763509035110474e-001 - <_> - - <_> - - - - <_> - 13 9 1 2 -1. - <_> - 13 9 1 1 2. - 1 - -1.0754860006272793e-002 - -3.8698300719261169e-001 - 3.2411929219961166e-002 - <_> - - <_> - - - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - -1.0488190309843048e-004 - 1.3360279798507690e-001 - -3.4231778979301453e-001 - <_> - - <_> - - - - <_> - 11 1 3 6 -1. - <_> - 12 2 1 6 3. - 1 - -5.4005950689315796e-002 - 2.1657359600067139e-001 - -3.0087789520621300e-002 - <_> - - <_> - - - - <_> - 7 1 6 3 -1. - <_> - 6 2 6 1 3. - 1 - -1.8531499430537224e-002 - 1.7578999698162079e-001 - -2.3588539659976959e-001 - <_> - - <_> - - - - <_> - 8 0 4 3 -1. - <_> - 9 0 2 3 2. - 0 - -9.0950122103095055e-003 - -5.1968222856521606e-001 - 6.4523756504058838e-002 - <_> - - <_> - - - - <_> - 4 10 2 1 -1. - <_> - 5 10 1 1 2. - 0 - -9.8823191365227103e-005 - 1.9835579395294189e-001 - -2.0098380744457245e-001 - <_> - - <_> - - - - <_> - 5 4 8 2 -1. - <_> - 5 5 8 1 2. - 0 - 2.1061999723315239e-002 - -8.2831703126430511e-002 - 4.1824889183044434e-001 - <_> - - <_> - - - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - 0 - 1.6518259420990944e-002 - -9.7873881459236145e-002 - 3.6431550979614258e-001 - <_> - - <_> - - - - <_> - 16 4 2 2 -1. - <_> - 16 4 1 2 2. - 0 - -1.9625299610197544e-003 - 1.8844370543956757e-001 - -1.6893580555915833e-001 - <_> - - <_> - - - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - 0 - 5.3389389067888260e-003 - 6.2860213220119476e-002 - -5.6821030378341675e-001 - <_> - - <_> - - - - <_> - 16 4 2 4 -1. - <_> - 16 4 1 4 2. - 0 - -4.2285309173166752e-003 - 1.2900340557098389e-001 - -1.4946889877319336e-001 - <_> - - <_> - - - - <_> - 6 11 6 1 -1. - <_> - 8 11 2 1 3. - 0 - -1.3029079884290695e-002 - -7.4421662092208862e-001 - 4.5929558575153351e-002 - <_> - - <_> - - - - <_> - 16 4 2 4 -1. - <_> - 16 4 1 4 2. - 0 - -2.1244779229164124e-002 - -3.6576640605926514e-001 - 1.0424939915537834e-002 - <_> - - <_> - - - - <_> - 0 4 2 4 -1. - <_> - 1 4 1 4 2. - 0 - -4.5967479236423969e-003 - 1.7677290737628937e-001 - -1.8999819457530975e-001 - <_> - - <_> - - - - <_> - 11 0 4 4 -1. - <_> - 12 0 2 4 2. - 0 - -8.0737788230180740e-003 - -3.2994970679283142e-001 - 6.1676099896430969e-002 - <_> - - <_> - - - - <_> - 0 3 3 3 -1. - <_> - 0 4 3 1 3. - 0 - -1.6974760219454765e-002 - -7.1400022506713867e-001 - 4.0978480130434036e-002 - <_> - - <_> - - - - <_> - 3 0 12 3 -1. - <_> - 3 1 12 1 3. - 0 - 2.0088389515876770e-002 - -1.2316899746656418e-001 - 2.6806059479713440e-001 - <_> - - <_> - - - - <_> - 3 2 12 3 -1. - <_> - 3 3 12 1 3. - 0 - 2.1707860752940178e-002 - -1.2791140377521515e-001 - 2.8688108921051025e-001 - <_> - - <_> - - - - <_> - 15 4 3 4 -1. - <_> - 15 5 3 2 2. - 0 - 1.4121609739959240e-002 - 3.0740590766072273e-002 - -3.4621009230613708e-001 - <_> - - <_> - - - - <_> - 0 4 2 4 -1. - <_> - 0 5 2 2 2. - 0 - -1.3910040259361267e-002 - -5.6334692239761353e-001 - 5.4368961602449417e-002 - <_> - - <_> - - - - <_> - 11 0 4 4 -1. - <_> - 12 0 2 4 2. - 0 - 1.3910540379583836e-002 - 3.5999219864606857e-002 - -3.7284949421882629e-001 - <_> - - <_> - - - - <_> - 4 1 8 3 -1. - <_> - 6 1 4 3 2. - 0 - -6.9868760183453560e-003 - 1.5719449520111084e-001 - -1.8703240156173706e-001 - <_> - - <_> - - - - <_> - 12 6 6 6 -1. - <_> - 12 8 6 2 3. - 0 - 1.0331939905881882e-001 - 2.4535490199923515e-002 - -5.5506777763366699e-001 - <_> - - <_> - - - - <_> - 0 6 6 6 -1. - <_> - 0 8 6 2 3. - 0 - -5.4182611405849457e-002 - -4.5211860537528992e-001 - 5.8777388185262680e-002 - <_> - - <_> - - - - <_> - 16 9 2 2 -1. - <_> - 16 10 2 1 2. - 0 - -2.7721941005438566e-003 - -4.3239548802375793e-001 - 4.4798858463764191e-002 - <_> - - <_> - - - - <_> - 8 3 6 1 -1. - <_> - 10 5 2 1 3. - 1 - -2.7594869956374168e-002 - 1.6330890357494354e-001 - -1.6784989833831787e-001 - <_> - - <_> - - - - <_> - 16 9 2 2 -1. - <_> - 16 10 2 1 2. - 0 - 1.5242209658026695e-002 - 2.7706470340490341e-002 - -6.2536621093750000e-001 - <_> - - <_> - - - - <_> - 0 9 2 2 -1. - <_> - 0 10 2 1 2. - 0 - -2.6314980350434780e-003 - -4.2216229438781738e-001 - 6.5155752003192902e-002 - <_> - - <_> - - - - <_> - 7 2 4 4 -1. - <_> - 7 3 4 2 2. - 0 - -2.3606320843100548e-002 - 3.3093869686126709e-001 - -8.2543507218360901e-002 - <_> - - <_> - - - - <_> - 8 4 4 3 -1. - <_> - 7 5 4 1 3. - 1 - -4.0896769613027573e-002 - 4.7317719459533691e-001 - -5.4770849645137787e-002 - <_> - - <_> - - - - <_> - 11 6 3 2 -1. - <_> - 12 6 1 2 3. - 0 - 1.1066540144383907e-002 - -6.1698198318481445e-002 - 3.9080050587654114e-001 - <_> - - <_> - - - - <_> - 7 6 3 3 -1. - <_> - 6 7 3 1 3. - 1 - -3.5964860580861568e-004 - 1.7784999310970306e-001 - -1.5802909433841705e-001 - <_> - - <_> - - - - <_> - 15 7 3 2 -1. - <_> - 15 7 3 1 2. - 1 - 1.0035860352218151e-002 - 3.2939091324806213e-002 - -3.5791549086570740e-001 - <_> - - <_> - - - - <_> - 3 7 2 3 -1. - <_> - 3 7 1 3 2. - 1 - -2.1251719444990158e-002 - -4.0622410178184509e-001 - 5.7364061474800110e-002 - <_> - - <_> - - - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - 0 - -9.6790026873350143e-005 - 5.5528908967971802e-002 - -6.0613408684730530e-002 - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 4 6 2 2 2. - 1 - -2.0986420568078756e-003 - 8.7490037083625793e-002 - -2.5980108976364136e-001 - <_> - - <_> - - - - <_> - 15 8 2 1 -1. - <_> - 15 8 1 1 2. - 1 - -1.5904919710010290e-003 - 9.1209657490253448e-002 - -1.8434490263462067e-001 - <_> - - <_> - - - - <_> - 3 8 1 2 -1. - <_> - 3 8 1 1 2. - 1 - 2.8348378837108612e-003 - -7.5825102627277374e-002 - 3.1011909246444702e-001 - <_> - - <_> - - - - <_> - 4 11 14 1 -1. - <_> - 4 11 7 1 2. - 0 - 5.2976410835981369e-002 - 2.2894360125064850e-002 - -3.6694788932800293e-001 - <_> - - <_> - - - - <_> - 0 11 16 1 -1. - <_> - 8 11 8 1 2. - 0 - 5.2993461489677429e-002 - 4.8855211585760117e-002 - -4.9654829502105713e-001 - <_> - - <_> - - - - <_> - 16 1 2 1 -1. - <_> - 16 1 1 1 2. - 0 - 1.1254799755988643e-004 - -6.4805597066879272e-002 - 7.7355362474918365e-002 - <_> - - <_> - - - - <_> - 0 1 2 1 -1. - <_> - 1 1 1 1 2. - 0 - -3.5766988730756566e-005 - 1.0217899829149246e-001 - -2.4918699264526367e-001 - <_> - - <_> - - - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - 1.2803260236978531e-002 - 2.1008219569921494e-002 - -4.8412579298019409e-001 - <_> - - <_> - - - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - -4.2998609133064747e-003 - -2.8178960084915161e-001 - 8.6436942219734192e-002 - <_> - - <_> - - - - <_> - 8 0 4 3 -1. - <_> - 9 0 2 3 2. - 0 - 7.0341289974749088e-003 - 4.7605708241462708e-002 - -3.1112289428710938e-001 - <_> - - <_> - - - - <_> - 4 5 2 2 -1. - <_> - 4 5 1 1 2. - <_> - 5 6 1 1 2. - 0 - -1.0176310315728188e-003 - 2.3361669480800629e-001 - -9.6844062209129333e-002 - <_> - - <_> - - - - <_> - 7 9 6 3 -1. - <_> - 9 9 2 3 3. - 0 - 1.2555380351841450e-002 - 6.3771553337574005e-002 - -3.2026350498199463e-001 - <_> - - <_> - - - - <_> - 2 5 12 6 -1. - <_> - 2 5 6 3 2. - <_> - 8 8 6 3 2. - 0 - 1.4610219746828079e-002 - -1.7586620151996613e-001 - 1.1790910363197327e-001 - <_> - - <_> - - - - <_> - 12 5 6 4 -1. - <_> - 14 5 2 4 3. - 0 - -1.8952880054712296e-002 - 1.6201509535312653e-001 - -9.1056473553180695e-002 - <_> - - <_> - - - - <_> - 0 5 6 4 -1. - <_> - 2 5 2 4 3. - 0 - -1.7667450010776520e-002 - 1.7925499379634857e-001 - -1.3047270476818085e-001 - -1.7924000024795532e+000 - 6 - -1 - <_> - - - <_> - - <_> - - - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - 0 - -1.9953019917011261e-002 - 4.6304538846015930e-001 - -5.4309362173080444e-001 - <_> - - <_> - - - - <_> - 6 4 11 6 -1. - <_> - 6 7 11 3 2. - 0 - 1.4101259410381317e-001 - -4.3483141064643860e-001 - 2.3144249618053436e-001 - <_> - - <_> - - - - <_> - 3 5 3 4 -1. - <_> - 4 5 1 4 3. - 0 - -3.8832230493426323e-003 - 3.5248211026191711e-001 - -3.3487960696220398e-001 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - 0 - 5.5682440288364887e-003 - -5.0852102041244507e-001 - 2.4366380274295807e-001 - <_> - - <_> - - - - <_> - 1 7 10 2 -1. - <_> - 1 8 10 1 2. - 0 - 1.7619030177593231e-001 - -4.3959591537714005e-002 - -2.1098750000000000e+003 - <_> - - <_> - - - - <_> - 16 0 2 4 -1. - <_> - 16 0 1 4 2. - 0 - 2.1687010303139687e-003 - -1.0676959902048111e-001 - 1.9657030701637268e-001 - <_> - - <_> - - - - <_> - 0 0 2 5 -1. - <_> - 1 0 1 5 2. - 0 - -2.4930729996412992e-003 - 1.5274609625339508e-001 - -4.5544859766960144e-001 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 6 4 6 4 9. - 0 - -1.3881989717483521e+000 - 3.6814248561859131e-001 - -2.1648240089416504e-001 - <_> - - <_> - - - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - 0 - -1.2570229591801763e-004 - 1.6871599853038788e-001 - -3.3025780320167542e-001 - <_> - - <_> - - - - <_> - 4 0 10 2 -1. - <_> - 4 1 10 1 2. - 0 - 2.0360499620437622e-002 - -1.0959889739751816e-001 - 4.3592530488967896e-001 - <_> - - <_> - - - - <_> - 6 5 3 3 -1. - <_> - 7 5 1 3 3. - 0 - -7.7699557878077030e-003 - 3.7267988920211792e-001 - -1.1310379952192307e-001 - <_> - - <_> - - - - <_> - 7 0 9 4 -1. - <_> - 10 0 3 4 3. - 0 - -6.6438332200050354e-002 - -5.0932061672210693e-001 - 3.8267329335212708e-002 - <_> - - <_> - - - - <_> - 5 6 3 1 -1. - <_> - 6 6 1 1 3. - 0 - -2.3943830747157335e-003 - 3.7487560510635376e-001 - -1.1466500163078308e-001 - <_> - - <_> - - - - <_> - 11 5 3 3 -1. - <_> - 12 5 1 3 3. - 0 - 1.9620539620518684e-002 - -6.1430118978023529e-002 - 4.3453490734100342e-001 - <_> - - <_> - - - - <_> - 4 5 3 3 -1. - <_> - 5 5 1 3 3. - 0 - -3.5895970650017262e-003 - 2.9000890254974365e-001 - -1.4118500053882599e-001 - <_> - - <_> - - - - <_> - 10 0 4 3 -1. - <_> - 11 0 2 3 2. - 0 - 1.4298349618911743e-002 - 4.3023601174354553e-002 - -5.9506058692932129e-001 - <_> - - <_> - - - - <_> - 4 0 4 3 -1. - <_> - 5 0 2 3 2. - 0 - 8.2771573215723038e-003 - 5.7618878781795502e-002 - -6.0915398597717285e-001 - <_> - - <_> - - - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - 0 - -2.4311929009854794e-003 - 2.6851660013198853e-001 - -7.8011967241764069e-002 - <_> - - <_> - - - - <_> - 3 1 1 3 -1. - <_> - 2 2 1 1 3. - 1 - -1.1357249692082405e-002 - -5.7373368740081787e-001 - 6.1811648309230804e-002 - <_> - - <_> - - - - <_> - 6 0 6 3 -1. - <_> - 6 1 6 1 3. - 0 - -2.0995700731873512e-002 - 3.7857949733734131e-001 - -9.0212509036064148e-002 - <_> - - <_> - - - - <_> - 4 0 4 5 -1. - <_> - 5 0 2 5 2. - 0 - -1.9253190606832504e-002 - -6.1270111799240112e-001 - 5.8162990957498550e-002 - <_> - - <_> - - - - <_> - 13 8 2 2 -1. - <_> - 13 8 2 1 2. - 1 - -2.5958230253309011e-003 - 8.5419252514839172e-002 - -1.5067149698734283e-001 - <_> - - <_> - - - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 2 2. - 1 - -1.7749400809407234e-002 - -5.6233870983123779e-001 - 5.8707099407911301e-002 - <_> - - <_> - - - - <_> - 12 5 6 3 -1. - <_> - 14 5 2 3 3. - 0 - -7.0752850733697414e-003 - 1.8340730667114258e-001 - -2.0476980507373810e-001 - <_> - - <_> - - - - <_> - 1 4 4 5 -1. - <_> - 2 4 2 5 2. - 0 - -8.4588937461376190e-003 - 2.5018799304962158e-001 - -1.4016430079936981e-001 - <_> - - <_> - - - - <_> - 9 3 1 8 -1. - <_> - 9 3 1 4 2. - 1 - 6.0339421033859253e-003 - 1.7297219485044479e-002 - -1.0938909649848938e-001 - <_> - - <_> - - - - <_> - 3 0 1 2 -1. - <_> - 3 0 1 1 2. - 1 - -8.7690055370330811e-003 - -5.3809267282485962e-001 - 5.5717989802360535e-002 - <_> - - <_> - - - - <_> - 0 2 18 8 -1. - <_> - 6 2 6 8 3. - 0 - -2.0211340487003326e-001 - 1.4996449649333954e-001 - -1.9804969429969788e-001 - <_> - - <_> - - - - <_> - 0 10 6 2 -1. - <_> - 3 10 3 2 2. - 0 - 9.2534068971872330e-003 - -1.2579849362373352e-001 - 2.6560428738594055e-001 - <_> - - <_> - - - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - 0 - -1.9985489547252655e-002 - -2.0184940099716187e-001 - 1.4270460605621338e-001 - <_> - - <_> - - - - <_> - 5 3 6 4 -1. - <_> - 5 3 3 2 2. - <_> - 8 5 3 2 2. - 0 - -6.4325458370149136e-003 - 1.4902539551258087e-001 - -2.2481849789619446e-001 - <_> - - <_> - - - - <_> - 15 1 2 1 -1. - <_> - 15 1 1 1 2. - 0 - -1.2979759776499122e-004 - 7.9636313021183014e-002 - -6.8467393517494202e-002 - <_> - - <_> - - - - <_> - 0 2 4 9 -1. - <_> - 0 5 4 3 3. - 0 - 7.4666491709649563e-003 - 9.1552861034870148e-002 - -3.0332839488983154e-001 - <_> - - <_> - - - - <_> - 4 2 10 4 -1. - <_> - 4 3 10 2 2. - 0 - -4.8323269933462143e-002 - 3.1203231215476990e-001 - -9.4739243388175964e-002 - <_> - - <_> - - - - <_> - 1 1 2 1 -1. - <_> - 2 1 1 1 2. - 0 - -1.0795370326377451e-004 - 1.1953579634428024e-001 - -2.3774090409278870e-001 - <_> - - <_> - - - - <_> - 6 1 6 3 -1. - <_> - 6 2 6 1 3. - 0 - -2.1394219249486923e-002 - 3.8132411241531372e-001 - -6.8722970783710480e-002 - <_> - - <_> - - - - <_> - 5 9 6 3 -1. - <_> - 7 9 2 3 3. - 0 - -2.6666570454835892e-002 - -5.3747171163558960e-001 - 5.0780180841684341e-002 - <_> - - <_> - - - - <_> - 13 8 1 3 -1. - <_> - 12 9 1 1 3. - 1 - -1.6129670664668083e-002 - -5.7956278324127197e-001 - 7.9791489988565445e-003 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 0 0 9 6 2. - <_> - 9 6 9 6 2. - 0 - 3.9990308880805969e-001 - 3.5521049052476883e-002 - -6.6213911771774292e-001 - <_> - - <_> - - - - <_> - 14 5 4 6 -1. - <_> - 14 7 4 2 3. - 0 - 5.8418158441781998e-002 - 2.0374530926346779e-002 - -3.9533859491348267e-001 - <_> - - <_> - - - - <_> - 9 2 6 3 -1. - <_> - 11 4 2 3 3. - 1 - -6.9553457200527191e-002 - 1.5149369835853577e-001 - -1.7391009628772736e-001 - <_> - - <_> - - - - <_> - 14 6 4 6 -1. - <_> - 14 8 4 2 3. - 0 - 7.5673670507967472e-003 - -1.0654059797525406e-001 - 1.0897749662399292e-001 - <_> - - <_> - - - - <_> - 0 6 4 6 -1. - <_> - 0 8 4 2 3. - 0 - 4.7387808561325073e-002 - 4.9468740820884705e-002 - -5.5027878284454346e-001 - <_> - - <_> - - - - <_> - 14 3 4 4 -1. - <_> - 14 4 4 2 2. - 0 - -3.7050791084766388e-002 - -3.8515409827232361e-001 - 2.2248979657888412e-002 - <_> - - <_> - - - - <_> - 0 3 4 4 -1. - <_> - 0 4 4 2 2. - 0 - -3.0018899589776993e-002 - -6.4674687385559082e-001 - 3.3203490078449249e-002 - <_> - - <_> - - - - <_> - 11 3 4 4 -1. - <_> - 11 4 4 2 2. - 0 - 1.5431820414960384e-002 - -4.4999931007623672e-002 - 2.4443189799785614e-001 - <_> - - <_> - - - - <_> - 2 3 6 4 -1. - <_> - 2 4 6 2 2. - 0 - -8.2180695608258247e-003 - 1.5854990482330322e-001 - -1.9471940398216248e-001 - <_> - - <_> - - - - <_> - 13 5 3 3 -1. - <_> - 14 6 1 3 3. - 1 - 4.0984179824590683e-002 - -3.4700211137533188e-002 - 3.3703771233558655e-001 - <_> - - <_> - - - - <_> - 5 5 3 3 -1. - <_> - 4 6 3 1 3. - 1 - -8.5833184421062469e-003 - 1.9440969824790955e-001 - -1.2268470227718353e-001 - <_> - - <_> - - - - <_> - 9 1 4 4 -1. - <_> - 10 1 2 4 2. - 0 - -4.5410390943288803e-002 - -8.1189441680908203e-001 - 8.0366088077425957e-003 - <_> - - <_> - - - - <_> - 4 9 4 2 -1. - <_> - 5 9 2 2 2. - 0 - -9.0532200410962105e-003 - -5.5083888769149780e-001 - 4.0210179984569550e-002 - <_> - - <_> - - - - <_> - 15 6 3 3 -1. - <_> - 16 7 1 3 3. - 1 - -1.1325759813189507e-002 - 9.9898673593997955e-002 - -3.9981659501791000e-002 - <_> - - <_> - - - - <_> - 5 1 4 4 -1. - <_> - 6 1 2 4 2. - 0 - -1.7502499744296074e-002 - -5.0785058736801147e-001 - 4.4904891401529312e-002 - <_> - - <_> - - - - <_> - 15 6 3 3 -1. - <_> - 16 7 1 3 3. - 1 - 4.0354807861149311e-003 - -7.3971033096313477e-002 - 8.6997002363204956e-002 - <_> - - <_> - - - - <_> - 3 6 3 3 -1. - <_> - 2 7 3 1 3. - 1 - -1.9440140575170517e-002 - 3.5637879371643066e-001 - -6.4185008406639099e-002 - <_> - - <_> - - - - <_> - 13 6 2 4 -1. - <_> - 13 6 2 2 2. - 1 - 3.4901369363069534e-002 - 1.3781890273094177e-002 - -3.0902290344238281e-001 - <_> - - <_> - - - - <_> - 5 6 4 2 -1. - <_> - 5 6 2 2 2. - 1 - -5.0566188991069794e-002 - -3.5108640789985657e-001 - 6.5844587981700897e-002 - <_> - - <_> - - - - <_> - 7 1 9 3 -1. - <_> - 10 1 3 3 3. - 0 - -1.4756169915199280e-001 - -6.8759101629257202e-001 - 4.7263758460758254e-005 - <_> - - <_> - - - - <_> - 2 1 9 3 -1. - <_> - 5 1 3 3 3. - 0 - -1.0150520130991936e-002 - 1.2052480131387711e-001 - -1.7938989400863647e-001 - <_> - - <_> - - - - <_> - 11 0 4 5 -1. - <_> - 12 0 2 5 2. - 0 - -2.2828230634331703e-002 - -4.8896029591560364e-001 - 1.8085980787873268e-002 - <_> - - <_> - - - - <_> - 7 5 3 3 -1. - <_> - 6 6 3 1 3. - 1 - -1.8258199095726013e-002 - 3.4773400425910950e-001 - -6.3224472105503082e-002 - <_> - - <_> - - - - <_> - 11 0 4 5 -1. - <_> - 12 0 2 5 2. - 0 - 1.3490609824657440e-002 - 2.3697679862380028e-002 - -1.3777829706668854e-001 - <_> - - <_> - - - - <_> - 3 0 4 5 -1. - <_> - 4 0 2 5 2. - 0 - -1.6170579940080643e-002 - -4.2869010567665100e-001 - 5.1102340221405029e-002 - <_> - - <_> - - - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - 0 - -1.8929179757833481e-002 - 2.6792019605636597e-001 - -7.7223733067512512e-002 - -1.7122819423675537e+000 - 7 - -1 - <_> - - - <_> - - <_> - - - - <_> - 7 4 6 2 -1. - <_> - 7 4 6 1 2. - 1 - -5.6362848728895187e-002 - 6.2295049428939819e-001 - -3.9318370819091797e-001 - <_> - - <_> - - - - <_> - 6 0 12 3 -1. - <_> - 10 0 4 3 3. - 0 - 1.9950939342379570e-002 - -1.4530490338802338e-001 - 2.4978880584239960e-001 - <_> - - <_> - - - - <_> - 9 3 6 1 -1. - <_> - 9 3 3 1 2. - 1 - -4.6843659132719040e-002 - 3.9532458782196045e-001 - -3.0981910228729248e-001 - <_> - - <_> - - - - <_> - 14 0 4 2 -1. - <_> - 14 0 2 2 2. - 0 - 3.4703789278864861e-003 - -7.6643757522106171e-002 - 1.4895190298557281e-001 - <_> - - <_> - - - - <_> - 0 0 6 2 -1. - <_> - 3 0 3 2 2. - 0 - -6.1464528553187847e-003 - 1.8411460518836975e-001 - -4.8829838633537292e-001 - <_> - - <_> - - - - <_> - 3 10 12 2 -1. - <_> - 3 11 12 1 2. - 0 - 6.1217881739139557e-003 - -4.2313280701637268e-001 - 1.9597740471363068e-001 - <_> - - <_> - - - - <_> - 1 3 16 2 -1. - <_> - 1 4 16 1 2. - 0 - -1.8062189221382141e-002 - 2.3335799574851990e-001 - -2.9320231080055237e-001 - <_> - - <_> - - - - <_> - 12 5 4 3 -1. - <_> - 13 5 2 3 2. - 0 - -5.3905011154711246e-003 - 3.0706161260604858e-001 - -2.2423399984836578e-001 - <_> - - <_> - - - - <_> - 0 1 2 1 -1. - <_> - 1 1 1 1 2. - 0 - -1.1563429870875552e-004 - 1.2549179792404175e-001 - -3.5768839716911316e-001 - <_> - - <_> - - - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - -1.2130189687013626e-002 - -4.3862840533256531e-001 - 1.5064669772982597e-002 - <_> - - <_> - - - - <_> - 8 5 3 1 -1. - <_> - 9 6 1 1 3. - 1 - -4.5520379208028316e-003 - 1.7858989536762238e-001 - -2.0970739424228668e-001 - <_> - - <_> - - - - <_> - 14 0 3 2 -1. - <_> - 15 1 1 2 3. - 1 - -2.3341009393334389e-002 - -4.7605940699577332e-001 - 2.9896590858697891e-002 - <_> - - <_> - - - - <_> - 4 0 2 3 -1. - <_> - 3 1 2 1 3. - 1 - 1.0201729834079742e-002 - 7.7540546655654907e-002 - -4.6611380577087402e-001 - <_> - - <_> - - - - <_> - 11 6 6 2 -1. - <_> - 13 6 2 2 3. - 0 - 4.7306690365076065e-002 - -3.8885660469532013e-002 - 5.0057899951934814e-001 - <_> - - <_> - - - - <_> - 1 6 6 2 -1. - <_> - 3 6 2 2 3. - 0 - -9.2814108356833458e-003 - 2.0289039611816406e-001 - -1.8781319260597229e-001 - <_> - - <_> - - - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - 1.1665919795632362e-002 - 3.4593590535223484e-003 - -6.7075312137603760e-001 - <_> - - <_> - - - - <_> - 6 9 2 1 -1. - <_> - 6 9 1 1 2. - 1 - -1.1174700222909451e-002 - -6.7676198482513428e-001 - 5.3503561764955521e-002 - <_> - - <_> - - - - <_> - 13 0 3 7 -1. - <_> - 14 0 1 7 3. - 0 - -3.0277540907263756e-002 - -6.1764931678771973e-001 - 2.5672059506177902e-002 - <_> - - <_> - - - - <_> - 2 0 3 7 -1. - <_> - 3 0 1 7 3. - 0 - -2.6489820331335068e-002 - -6.5213251113891602e-001 - 4.6798661351203918e-002 - <_> - - <_> - - - - <_> - 4 3 10 3 -1. - <_> - 4 4 10 1 3. - 0 - 3.6063250154256821e-002 - -7.9508572816848755e-002 - 3.9742410182952881e-001 - <_> - - <_> - - - - <_> - 0 8 18 4 -1. - <_> - 0 10 18 2 2. - 0 - 3.8237631320953369e-002 - -3.4497588872909546e-001 - 8.8161222636699677e-002 - <_> - - <_> - - - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - 0 - 9.8143024370074272e-003 - 3.8055408746004105e-002 - -5.7297128438949585e-001 - <_> - - <_> - - - - <_> - 0 5 18 6 -1. - <_> - 0 5 9 3 2. - <_> - 9 8 9 3 2. - 0 - 1.0969569848384708e-004 - -2.3766790330410004e-001 - 1.1281009763479233e-001 - <_> - - <_> - - - - <_> - 13 1 5 9 -1. - <_> - 13 4 5 3 3. - 0 - -6.4720593392848969e-002 - 5.7318519800901413e-002 - -8.4692500531673431e-002 - <_> - - <_> - - - - <_> - 0 1 5 9 -1. - <_> - 0 4 5 3 3. - 0 - -9.3549508601427078e-003 - 1.0101249814033508e-001 - -3.0118590593338013e-001 - <_> - - <_> - - - - <_> - 0 4 18 2 -1. - <_> - 6 4 6 2 3. - 0 - -6.4732283353805542e-002 - 1.3135200738906860e-001 - -2.2299380600452423e-001 - <_> - - <_> - - - - <_> - 6 2 6 2 -1. - <_> - 6 3 6 1 2. - 0 - 1.4942260459065437e-002 - -7.4695453047752380e-002 - 4.2155799269676208e-001 - <_> - - <_> - - - - <_> - 6 0 6 2 -1. - <_> - 6 1 6 1 2. - 0 - 9.1112721711397171e-003 - -1.0271769762039185e-001 - 2.9674398899078369e-001 - <_> - - <_> - - - - <_> - 4 0 10 6 -1. - <_> - 4 2 10 2 3. - 0 - -1.0131099820137024e-001 - 4.0764111280441284e-001 - -8.9215211570262909e-002 - <_> - - <_> - - - - <_> - 16 0 2 2 -1. - <_> - 16 0 1 2 2. - 1 - 1.9525960087776184e-002 - 4.5859400182962418e-002 - -5.3067690134048462e-001 - <_> - - <_> - - - - <_> - 2 0 2 2 -1. - <_> - 2 0 2 1 2. - 1 - -1.6093149781227112e-002 - -5.0799179077148438e-001 - 4.7188449651002884e-002 - <_> - - <_> - - - - <_> - 10 11 2 1 -1. - <_> - 10 11 1 1 2. - 0 - -3.7084550131112337e-003 - -5.4375791549682617e-001 - 1.7073409631848335e-002 - <_> - - <_> - - - - <_> - 6 11 2 1 -1. - <_> - 7 11 1 1 2. - 0 - -1.0553289757808670e-004 - 1.6604019701480865e-001 - -1.4265109598636627e-001 - <_> - - <_> - - - - <_> - 10 4 3 4 -1. - <_> - 11 5 1 4 3. - 1 - -2.2228319197893143e-002 - 1.1051969975233078e-001 - -6.7340642213821411e-002 - <_> - - <_> - - - - <_> - 0 6 2 2 -1. - <_> - 1 6 1 2 2. - 0 - -3.9571961387991905e-003 - 1.9017930328845978e-001 - -1.2256579846143723e-001 - <_> - - <_> - - - - <_> - 15 8 2 2 -1. - <_> - 15 8 1 2 2. - 1 - -2.9267009813338518e-003 - 9.4764962792396545e-002 - -1.8430569767951965e-001 - <_> - - <_> - - - - <_> - 3 8 2 2 -1. - <_> - 3 8 2 1 2. - 1 - 4.4974898919463158e-003 - -9.1449737548828125e-002 - 3.5069960355758667e-001 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 0 0 9 1 2. - 0 - -1.8627950921654701e-002 - 2.3541490733623505e-001 - -1.0408759862184525e-001 - <_> - - <_> - - - - <_> - 2 8 2 2 -1. - <_> - 2 8 1 2 2. - 1 - -1.2022979557514191e-002 - -3.8634741306304932e-001 - 6.5065048635005951e-002 - <_> - - <_> - - - - <_> - 15 5 3 6 -1. - <_> - 15 7 3 2 3. - 0 - 5.6308001279830933e-002 - 1.1871179565787315e-002 - -4.9800288677215576e-001 - <_> - - <_> - - - - <_> - 0 5 3 6 -1. - <_> - 0 7 3 2 3. - 0 - 3.9565019309520721e-002 - 3.7156730890274048e-002 - -6.4833837747573853e-001 - <_> - - <_> - - - - <_> - 10 4 3 4 -1. - <_> - 11 5 1 4 3. - 1 - 2.8078509494662285e-002 - -2.1756550297141075e-002 - 2.5639408826828003e-001 - <_> - - <_> - - - - <_> - 8 4 4 3 -1. - <_> - 7 5 4 1 3. - 1 - 4.6927139163017273e-002 - -5.3349718451499939e-002 - 4.3058720231056213e-001 - <_> - - <_> - - - - <_> - 11 3 3 4 -1. - <_> - 12 4 1 4 3. - 1 - -2.5176439434289932e-002 - 9.7822599112987518e-002 - -5.9893220663070679e-002 - <_> - - <_> - - - - <_> - 7 2 1 3 -1. - <_> - 6 3 1 1 3. - 1 - 8.8344141840934753e-003 - 5.6916769593954086e-002 - -4.0340718626976013e-001 - <_> - - <_> - - - - <_> - 13 3 2 1 -1. - <_> - 13 3 1 1 2. - 1 - 1.7008539289236069e-002 - 1.8180780112743378e-002 - -5.2570241689682007e-001 - <_> - - <_> - - - - <_> - 5 3 1 2 -1. - <_> - 5 3 1 1 2. - 1 - -8.2875955849885941e-003 - -4.3682220578193665e-001 - 5.4094731807708740e-002 - <_> - - <_> - - - - <_> - 11 3 3 4 -1. - <_> - 12 4 1 4 3. - 1 - 3.8746491074562073e-002 - -1.8321389332413673e-002 - 3.3403670787811279e-001 - <_> - - <_> - - - - <_> - 6 10 4 2 -1. - <_> - 7 10 2 2 2. - 0 - -7.2010462172329426e-003 - -5.4613822698593140e-001 - 4.0649890899658203e-002 - <_> - - <_> - - - - <_> - 11 3 3 4 -1. - <_> - 12 4 1 4 3. - 1 - -9.9961467087268829e-002 - -4.5017239451408386e-001 - 2.8199090156704187e-003 - <_> - - <_> - - - - <_> - 7 3 4 3 -1. - <_> - 6 4 4 1 3. - 1 - -2.5273600593209267e-002 - 2.8241640329360962e-001 - -7.7918551862239838e-002 - <_> - - <_> - - - - <_> - 11 5 4 3 -1. - <_> - 12 5 2 3 2. - 0 - 1.0812750086188316e-002 - -6.5411068499088287e-002 - 1.8664279580116272e-001 - <_> - - <_> - - - - <_> - 0 8 6 4 -1. - <_> - 0 9 6 2 2. - 0 - 2.7010150253772736e-002 - 3.8035649806261063e-002 - -5.4452228546142578e-001 - <_> - - <_> - - - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - 0 - -1.1786170216510072e-004 - 1.0787220299243927e-001 - -9.9519513547420502e-002 - <_> - - <_> - - - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - 0 - -1.1047790030715987e-004 - 1.5495459735393524e-001 - -1.3301509618759155e-001 - <_> - - <_> - - - - <_> - 5 1 8 2 -1. - <_> - 5 2 8 1 2. - 0 - 1.8215600401163101e-002 - -6.8660423159599304e-002 - 3.1199648976325989e-001 - <_> - - <_> - - - - <_> - 0 0 10 4 -1. - <_> - 0 0 5 2 2. - <_> - 5 2 5 2 2. - 0 - -5.3898409008979797e-002 - 3.9685648679733276e-001 - -6.3897557556629181e-002 - <_> - - <_> - - - - <_> - 11 0 3 5 -1. - <_> - 12 0 1 5 3. - 0 - 1.3358090072870255e-002 - 3.1209040433168411e-002 - -2.4712960422039032e-001 - <_> - - <_> - - - - <_> - 4 0 3 5 -1. - <_> - 5 0 1 5 3. - 0 - -1.5800479799509048e-002 - -5.2216792106628418e-001 - 4.1600730270147324e-002 - <_> - - <_> - - - - <_> - 17 1 1 2 -1. - <_> - 17 2 1 1 2. - 0 - -1.1199319851584733e-004 - 8.4395922720432281e-002 - -8.4499090909957886e-002 - <_> - - <_> - - - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - 0 - -9.2885202320758253e-005 - 9.7559772431850433e-002 - -2.1725979447364807e-001 - <_> - - <_> - - - - <_> - 11 5 3 4 -1. - <_> - 12 5 1 4 3. - 0 - -4.7041969373822212e-003 - 2.4064439535140991e-001 - -8.1906877458095551e-002 - <_> - - <_> - - - - <_> - 3 4 4 5 -1. - <_> - 4 4 2 5 2. - 0 - -6.7193550057709217e-003 - 2.0804579555988312e-001 - -1.2089549750089645e-001 - <_> - - <_> - - - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - 0 - 1.1287519708275795e-002 - 2.9528530314564705e-002 - -7.2591358423233032e-001 - <_> - - <_> - - - - <_> - 8 2 5 3 -1. - <_> - 7 3 5 1 3. - 1 - -1.5930920839309692e-002 - 1.1086650192737579e-001 - -1.8737399578094482e-001 - <_> - - <_> - - - - <_> - 16 8 1 2 -1. - <_> - 16 9 1 1 2. - 0 - 1.2024390161968768e-004 - -1.7434149980545044e-001 - 6.9688543677330017e-002 - <_> - - <_> - - - - <_> - 0 9 3 3 -1. - <_> - 0 10 3 1 3. - 0 - -1.0100419633090496e-002 - -5.1131051778793335e-001 - 3.8271598517894745e-002 - <_> - - <_> - - - - <_> - 13 1 3 3 -1. - <_> - 12 2 3 1 3. - 1 - 2.5751100853085518e-002 - -5.4672010242938995e-002 - 2.3799930512905121e-001 - <_> - - <_> - - - - <_> - 5 1 3 3 -1. - <_> - 6 2 1 3 3. - 1 - -2.0234059542417526e-002 - 2.6857110857963562e-001 - -7.7714122831821442e-002 - <_> - - <_> - - - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - 0 - -2.0138830586802214e-004 - 6.1015319079160690e-002 - -5.6767448782920837e-002 - <_> - - <_> - - - - <_> - 0 7 1 2 -1. - <_> - 0 8 1 1 2. - 0 - 8.7477441411465406e-005 - -1.6955520212650299e-001 - 1.1403830349445343e-001 - -1.7348790168762207e+000 - 8 - -1 - <_> - - - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.8045219630002975e-002 - 6.2558948993682861e-001 - -3.3365538716316223e-001 - <_> - - <_> - - - - <_> - 4 3 10 4 -1. - <_> - 4 4 10 2 2. - 0 - -5.0243478268384933e-002 - 4.7322180867195129e-001 - -2.9186329245567322e-001 - <_> - - <_> - - - - <_> - 1 4 16 8 -1. - <_> - 1 8 16 4 2. - 0 - 3.8331419229507446e-001 - -3.9113879203796387e-001 - 2.5622650980949402e-001 - <_> - - <_> - - - - <_> - 12 6 2 4 -1. - <_> - 13 6 1 2 2. - <_> - 12 8 1 2 2. - 0 - -4.0044081397354603e-003 - 3.6399510502815247e-001 - -1.9256359338760376e-001 - <_> - - <_> - - - - <_> - 0 0 12 3 -1. - <_> - 4 0 4 3 3. - 0 - -3.7470009177923203e-002 - 1.7452430725097656e-001 - -3.1919050216674805e-001 - <_> - - <_> - - - - <_> - 13 5 3 4 -1. - <_> - 14 6 1 4 3. - 1 - 2.9117159545421600e-002 - -5.4369669407606125e-002 - 3.1064510345458984e-001 - <_> - - <_> - - - - <_> - 5 5 4 3 -1. - <_> - 4 6 4 1 3. - 1 - -1.1656920425593853e-002 - 2.5671890377998352e-001 - -1.8017989397048950e-001 - <_> - - <_> - - - - <_> - 16 3 2 1 -1. - <_> - 16 3 1 1 2. - 0 - -1.0440209734952077e-004 - 6.1535339802503586e-002 - -9.6504412591457367e-002 - <_> - - <_> - - - - <_> - 0 3 2 1 -1. - <_> - 1 3 1 1 2. - 0 - -1.0555270273471251e-004 - 1.2562979757785797e-001 - -2.9777041077613831e-001 - <_> - - <_> - - - - <_> - 2 6 16 6 -1. - <_> - 10 6 8 3 2. - <_> - 2 9 8 3 2. - 0 - 7.5841680169105530e-002 - 7.2272002696990967e-002 - -3.9159971475601196e-001 - <_> - - <_> - - - - <_> - 6 5 6 3 -1. - <_> - 8 6 2 1 9. - 0 - -3.0494170263409615e-002 - 1.4515119791030884e-001 - -2.1794329583644867e-001 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.8034840971231461e-002 - -4.3140959739685059e-001 - 9.2317827045917511e-002 - <_> - - <_> - - - - <_> - 1 1 10 8 -1. - <_> - 6 1 5 8 2. - 0 - -2.9059879481792450e-002 - 1.2736010551452637e-001 - -2.6893270015716553e-001 - <_> - - <_> - - - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - 0 - 1.1368029663572088e-004 - -7.3847033083438873e-002 - 8.1634096801280975e-002 - <_> - - <_> - - - - <_> - 1 0 1 2 -1. - <_> - 1 1 1 1 2. - 0 - -9.8208111012354493e-005 - 1.4976090192794800e-001 - -2.6417461037635803e-001 - <_> - - <_> - - - - <_> - 3 0 15 4 -1. - <_> - 3 1 15 2 2. - 0 - 3.9730750024318695e-002 - -1.3633200526237488e-001 - 2.3572669923305511e-001 - <_> - - <_> - - - - <_> - 2 2 14 4 -1. - <_> - 2 3 14 2 2. - 0 - 2.9196860268712044e-002 - -1.1701930314302444e-001 - 3.0721390247344971e-001 - <_> - - <_> - - - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - 7.9500172287225723e-003 - 6.5656699240207672e-002 - -3.5064420104026794e-001 - <_> - - <_> - - - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - -1.0177420452237129e-002 - -5.5617290735244751e-001 - 5.7798638939857483e-002 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - 0 - 1.6030209371820092e-004 - -4.1421860456466675e-001 - 6.5753549337387085e-002 - <_> - - <_> - - - - <_> - 7 9 2 1 -1. - <_> - 7 9 1 1 2. - 1 - -9.3059297651052475e-003 - -5.4771828651428223e-001 - 5.4126661270856857e-002 - <_> - - <_> - - - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - 0 - 3.0308510176837444e-003 - -7.0931516587734222e-002 - 2.7669700980186462e-001 - <_> - - <_> - - - - <_> - 4 6 2 2 -1. - <_> - 4 6 1 1 2. - <_> - 5 7 1 1 2. - 0 - -1.1008529691025615e-003 - 2.4519720673561096e-001 - -1.1666910350322723e-001 - <_> - - <_> - - - - <_> - 11 0 4 4 -1. - <_> - 12 0 2 4 2. - 0 - 1.1806489899754524e-002 - 3.6385551095008850e-002 - -3.4721049666404724e-001 - <_> - - <_> - - - - <_> - 2 1 3 2 -1. - <_> - 2 1 3 1 2. - 1 - 1.1421480216085911e-002 - 6.0349930077791214e-002 - -4.1798681020736694e-001 - <_> - - <_> - - - - <_> - 5 2 8 3 -1. - <_> - 5 3 8 1 3. - 0 - -3.1913980841636658e-002 - 3.7621480226516724e-001 - -7.5227960944175720e-002 - <_> - - <_> - - - - <_> - 0 3 2 2 -1. - <_> - 0 3 1 1 2. - <_> - 1 4 1 1 2. - 0 - -1.0130680311704054e-004 - 1.8032610416412354e-001 - -1.4267539978027344e-001 - <_> - - <_> - - - - <_> - 8 0 4 4 -1. - <_> - 9 0 2 4 2. - 0 - 1.2019679881632328e-002 - 4.4374089688062668e-002 - -4.2647609114646912e-001 - <_> - - <_> - - - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - 0 - -1.1055770301027223e-004 - 9.3973703682422638e-002 - -2.4647060036659241e-001 - <_> - - <_> - - - - <_> - 15 0 2 3 -1. - <_> - 15 0 1 3 2. - 1 - 3.0081219971179962e-002 - 1.8790829926729202e-002 - -3.6197790503501892e-001 - <_> - - <_> - - - - <_> - 3 0 3 2 -1. - <_> - 3 0 3 1 2. - 1 - -1.3911399990320206e-002 - -3.4600418806076050e-001 - 6.4775317907333374e-002 - <_> - - <_> - - - - <_> - 7 0 4 3 -1. - <_> - 7 1 4 1 3. - 0 - -1.1680570431053638e-002 - 2.8401941061019897e-001 - -8.2157500088214874e-002 - <_> - - <_> - - - - <_> - 6 9 2 1 -1. - <_> - 6 9 1 1 2. - 1 - -1.1604610335780308e-004 - 9.5449857413768768e-002 - -2.5136241316795349e-001 - <_> - - <_> - - - - <_> - 9 1 4 5 -1. - <_> - 10 2 2 5 2. - 1 - -4.9045611172914505e-002 - 1.6295669972896576e-001 - -3.1894739717245102e-002 - <_> - - <_> - - - - <_> - 9 1 5 4 -1. - <_> - 8 2 5 2 2. - 1 - -3.2497879117727280e-002 - 1.2830619513988495e-001 - -1.9523960351943970e-001 - <_> - - <_> - - - - <_> - 10 4 3 3 -1. - <_> - 11 5 1 3 3. - 1 - -1.1159799993038177e-002 - 9.6235200762748718e-002 - -1.3243910670280457e-001 - <_> - - <_> - - - - <_> - 4 8 3 1 -1. - <_> - 5 9 1 1 3. - 1 - -1.0230819694697857e-002 - -5.4654151201248169e-001 - 4.2988520115613937e-002 - <_> - - <_> - - - - <_> - 11 3 3 5 -1. - <_> - 12 4 1 5 3. - 1 - 1.3818079605698586e-002 - -3.5042509436607361e-002 - 1.9387160241603851e-001 - <_> - - <_> - - - - <_> - 7 3 5 3 -1. - <_> - 6 4 5 1 3. - 1 - -3.2773461192846298e-002 - 3.3459728956222534e-001 - -6.9436222314834595e-002 - <_> - - <_> - - - - <_> - 11 6 4 1 -1. - <_> - 12 6 2 1 2. - 0 - -3.0122410971671343e-003 - 2.3572669923305511e-001 - -6.8288393318653107e-002 - <_> - - <_> - - - - <_> - 3 5 4 3 -1. - <_> - 4 5 2 3 2. - 0 - -3.6818650551140308e-003 - 1.9051979482173920e-001 - -1.4668950438499451e-001 - <_> - - <_> - - - - <_> - 12 3 3 1 -1. - <_> - 13 4 1 1 3. - 1 - -3.0836980789899826e-002 - -3.7860611081123352e-001 - 1.3093659654259682e-002 - <_> - - <_> - - - - <_> - 6 3 1 3 -1. - <_> - 5 4 1 1 3. - 1 - -1.6258839517831802e-002 - -6.0836392641067505e-001 - 4.6812709420919418e-002 - <_> - - <_> - - - - <_> - 8 0 3 3 -1. - <_> - 9 0 1 3 3. - 0 - -9.0061817318201065e-003 - -5.4105937480926514e-001 - 3.7968978285789490e-002 - <_> - - <_> - - - - <_> - 6 0 5 2 -1. - <_> - 6 1 5 1 2. - 0 - 1.1912579648196697e-002 - -8.6741238832473755e-002 - 2.6622739434242249e-001 - <_> - - <_> - - - - <_> - 13 0 3 2 -1. - <_> - 14 1 1 2 3. - 1 - -4.3502021580934525e-002 - -7.2856420278549194e-001 - 7.2535811923444271e-003 - <_> - - <_> - - - - <_> - 5 0 2 3 -1. - <_> - 4 1 2 1 3. - 1 - 1.1481899768114090e-002 - 6.1771500855684280e-002 - -4.0001630783081055e-001 - <_> - - <_> - - - - <_> - 6 10 6 2 -1. - <_> - 8 10 2 2 3. - 0 - -2.1509420126676559e-002 - -6.4027559757232666e-001 - 2.7487259358167648e-002 - <_> - - <_> - - - - <_> - 0 6 18 6 -1. - <_> - 0 9 18 3 2. - 0 - -3.9324969984591007e-003 - -7.3666751384735107e-001 - 2.0676780492067337e-002 - <_> - - <_> - - - - <_> - 14 6 4 6 -1. - <_> - 15 6 2 6 2. - 0 - -4.7581312246620655e-003 - 1.4155970513820648e-001 - -9.4146639108657837e-002 - <_> - - <_> - - - - <_> - 7 7 2 2 -1. - <_> - 7 7 1 2 2. - 1 - -1.7454020678997040e-002 - -3.8733229041099548e-001 - 4.8368278890848160e-002 - <_> - - <_> - - - - <_> - 14 6 4 6 -1. - <_> - 15 6 2 6 2. - 0 - -4.7281790524721146e-002 - -4.6986758708953857e-001 - 5.1076877862215042e-003 - <_> - - <_> - - - - <_> - 0 6 4 6 -1. - <_> - 1 6 2 6 2. - 0 - -1.0604689829051495e-002 - 2.0816320180892944e-001 - -8.8896490633487701e-002 - <_> - - <_> - - - - <_> - 11 0 3 1 -1. - <_> - 12 1 1 1 3. - 1 - -6.6771931014955044e-003 - 1.4150680601596832e-001 - -2.3727510124444962e-002 - <_> - - <_> - - - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - 0 - 8.6871385574340820e-003 - 4.5327730476856232e-002 - -4.2952930927276611e-001 - <_> - - <_> - - - - <_> - 14 5 4 5 -1. - <_> - 15 5 2 5 2. - 0 - -5.8880778960883617e-003 - 6.8065337836742401e-002 - -4.6702779829502106e-002 - <_> - - <_> - - - - <_> - 0 5 4 5 -1. - <_> - 1 5 2 5 2. - 0 - 9.6327122300863266e-003 - -8.0038279294967651e-002 - 2.5579911470413208e-001 - <_> - - <_> - - - - <_> - 8 0 3 4 -1. - <_> - 9 0 1 4 3. - 0 - 1.3295389711856842e-002 - 1.7721930518746376e-002 - -3.2223680615425110e-001 - <_> - - <_> - - - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - -2.2117589833214879e-004 - 8.6900167167186737e-002 - -2.2269949316978455e-001 - <_> - - <_> - - - - <_> - 16 4 2 2 -1. - <_> - 17 4 1 1 2. - <_> - 16 5 1 1 2. - 0 - -1.1635709961410612e-004 - 1.1741170287132263e-001 - -1.1703369766473770e-001 - <_> - - <_> - - - - <_> - 0 4 2 2 -1. - <_> - 0 4 1 1 2. - <_> - 1 5 1 1 2. - 0 - -1.1243829794693738e-004 - 1.5170790255069733e-001 - -1.2557980418205261e-001 - <_> - - <_> - - - - <_> - 6 1 12 2 -1. - <_> - 12 1 6 1 2. - <_> - 6 2 6 1 2. - 0 - 1.3494050130248070e-002 - -3.2267540693283081e-002 - 1.3067859411239624e-001 - <_> - - <_> - - - - <_> - 0 1 12 2 -1. - <_> - 0 1 6 1 2. - <_> - 6 2 6 1 2. - 0 - -1.4105159789323807e-002 - 2.5845968723297119e-001 - -8.1946328282356262e-002 - <_> - - <_> - - - - <_> - 16 1 1 2 -1. - <_> - 16 2 1 1 2. - 0 - -4.9773012287914753e-003 - -2.4286900460720062e-001 - 2.4097239598631859e-002 - <_> - - <_> - - - - <_> - 1 1 1 2 -1. - <_> - 1 2 1 1 2. - 0 - -1.1385620018700138e-004 - 1.2425749748945236e-001 - -1.9230820238590240e-001 - <_> - - <_> - - - - <_> - 0 9 18 3 -1. - <_> - 6 9 6 3 3. - 0 - -8.6696133017539978e-002 - 2.1385669708251953e-001 - -9.1387532651424408e-002 - <_> - - <_> - - - - <_> - 3 7 3 2 -1. - <_> - 3 7 3 1 2. - 1 - 1.0115380398929119e-002 - -5.7194989174604416e-002 - 3.4964808821678162e-001 - <_> - - <_> - - - - <_> - 15 8 3 4 -1. - <_> - 15 9 3 2 2. - 0 - 1.2917679734528065e-002 - 6.4482808113098145e-002 - -3.6598050594329834e-001 - <_> - - <_> - - - - <_> - 0 8 3 4 -1. - <_> - 0 9 3 2 2. - 0 - -1.0063810274004936e-002 - -4.3763339519500732e-001 - 4.6401929110288620e-002 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - -3.8289760705083609e-003 - 2.6984658837318420e-001 - -4.3675228953361511e-002 - <_> - - <_> - - - - <_> - 3 0 6 4 -1. - <_> - 5 0 2 4 3. - 0 - 2.9884070158004761e-002 - 3.4730698913335800e-002 - -4.9211961030960083e-001 - <_> - - <_> - - - - <_> - 10 0 1 6 -1. - <_> - 8 2 1 2 3. - 1 - 4.9557611346244812e-002 - -1.4452800154685974e-002 - 2.5015810132026672e-001 - <_> - - <_> - - - - <_> - 0 4 5 6 -1. - <_> - 0 6 5 2 3. - 0 - -1.1242230236530304e-001 - -7.0981448888778687e-001 - 2.4513319134712219e-002 - <_> - - <_> - - - - <_> - 11 5 1 3 -1. - <_> - 10 6 1 1 3. - 1 - -7.2617297992110252e-003 - 1.1259379982948303e-001 - -9.0036422014236450e-002 - <_> - - <_> - - - - <_> - 0 4 3 2 -1. - <_> - 0 5 3 1 2. - 0 - 1.0905790142714977e-002 - 3.5278510302305222e-002 - -4.7903269529342651e-001 - <_> - - <_> - - - - <_> - 7 3 4 3 -1. - <_> - 7 4 4 1 3. - 0 - -2.1580660715699196e-002 - 2.4947710335254669e-001 - -6.7340537905693054e-002 - <_> - - <_> - - - - <_> - 6 0 3 4 -1. - <_> - 7 0 1 4 3. - 0 - 1.2180290184915066e-002 - 3.3950321376323700e-002 - -4.9424359202384949e-001 - <_> - - <_> - - - - <_> - 9 3 1 6 -1. - <_> - 7 5 1 2 3. - 1 - 6.1639029532670975e-002 - -1.5156419947743416e-002 - 1.7232060432434082e-001 - <_> - - <_> - - - - <_> - 9 3 6 1 -1. - <_> - 11 5 2 1 3. - 1 - -3.4598629921674728e-002 - 1.7717359960079193e-001 - -9.7788341343402863e-002 - <_> - - <_> - - - - <_> - 8 9 3 3 -1. - <_> - 9 9 1 3 3. - 0 - -6.7015062086284161e-003 - -3.5656741261482239e-001 - 3.8341779261827469e-002 - <_> - - <_> - - - - <_> - 6 10 6 2 -1. - <_> - 8 10 2 2 3. - 0 - 1.7201770097017288e-002 - 2.7020750567317009e-002 - -5.7964348793029785e-001 - <_> - - <_> - - - - <_> - 8 5 4 3 -1. - <_> - 9 5 2 3 2. - 0 - -8.1718079745769501e-003 - 1.1538869887590408e-001 - -7.7362932264804840e-002 - <_> - - <_> - - - - <_> - 6 5 4 3 -1. - <_> - 7 5 2 3 2. - 0 - -5.1809311844408512e-003 - 1.5495200455188751e-001 - -1.1836340278387070e-001 - <_> - - <_> - - - - <_> - 10 6 4 1 -1. - <_> - 11 6 2 1 2. - 0 - -2.5254609063267708e-003 - 2.1247270703315735e-001 - -6.8675488233566284e-002 - <_> - - <_> - - - - <_> - 6 6 2 1 -1. - <_> - 7 6 1 1 2. - 0 - 6.1780458781868219e-004 - -7.9140536487102509e-002 - 2.4011979997158051e-001 - <_> - - <_> - - - - <_> - 0 0 18 3 -1. - <_> - 6 0 6 3 3. - 0 - -1.1357679963111877e-001 - 1.8214240670204163e-001 - -9.2686779797077179e-002 - -1.6796829700469971e+000 - 9 - -1 - <_> - - - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -6.2196098268032074e-002 - 6.2321871519088745e-001 - -3.0846419930458069e-001 - <_> - - <_> - - - - <_> - 3 2 15 6 -1. - <_> - 3 4 15 2 3. - 0 - -1.6721360385417938e-001 - 3.9328968524932861e-001 - -2.9381090402603149e-001 - <_> - - <_> - - - - <_> - 0 0 4 3 -1. - <_> - 2 0 2 3 2. - 0 - -6.1970818787813187e-003 - 1.9036029279232025e-001 - -4.2775529623031616e-001 - <_> - - <_> - - - - <_> - 12 6 2 4 -1. - <_> - 13 6 1 2 2. - <_> - 12 8 1 2 2. - 0 - -6.0129230841994286e-003 - 3.3292838931083679e-001 - -1.6145950555801392e-001 - <_> - - <_> - - - - <_> - 0 6 18 6 -1. - <_> - 0 9 18 3 2. - 0 - 1.7938390374183655e-001 - -4.7852781414985657e-001 - 8.2675926387310028e-002 - <_> - - <_> - - - - <_> - 12 5 3 3 -1. - <_> - 13 5 1 3 3. - 0 - -2.8582969680428505e-002 - -6.5726870298385620e-001 - 2.7196610346436501e-002 - <_> - - <_> - - - - <_> - 3 5 3 3 -1. - <_> - 4 5 1 3 3. - 0 - -4.3926457874476910e-003 - 2.2020849585533142e-001 - -1.9411289691925049e-001 - <_> - - <_> - - - - <_> - 10 0 4 5 -1. - <_> - 11 1 2 5 2. - 1 - 1.9471900537610054e-002 - -3.7211358547210693e-002 - 1.0708980262279510e-001 - <_> - - <_> - - - - <_> - 0 4 18 2 -1. - <_> - 6 4 6 2 3. - 0 - -8.2243539392948151e-002 - 1.6777120530605316e-001 - -2.5471720099449158e-001 - <_> - - <_> - - - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - 1.1272449977695942e-002 - 3.0362820252776146e-002 - -3.2199749350547791e-001 - <_> - - <_> - - - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - 7.7296248637139797e-003 - 5.1309239119291306e-002 - -5.2529060840606689e-001 - <_> - - <_> - - - - <_> - 6 6 6 1 -1. - <_> - 8 6 2 1 3. - 0 - -6.6719911992549896e-003 - 1.2681700289249420e-001 - -2.2429600358009338e-001 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -6.2269289046525955e-002 - -4.0020480751991272e-001 - 8.0248616635799408e-002 - <_> - - <_> - - - - <_> - 13 5 3 4 -1. - <_> - 14 6 1 4 3. - 1 - 5.1855400204658508e-002 - -8.9768264442682266e-003 - 3.4974721074104309e-001 - <_> - - <_> - - - - <_> - 5 5 4 3 -1. - <_> - 4 6 4 1 3. - 1 - -7.2366232052445412e-003 - 1.7443999648094177e-001 - -1.7355519533157349e-001 - <_> - - <_> - - - - <_> - 2 6 16 6 -1. - <_> - 10 6 8 3 2. - <_> - 2 9 8 3 2. - 0 - 7.4777632951736450e-002 - 5.1062591373920441e-002 - -3.6973360180854797e-001 - <_> - - <_> - - - - <_> - 3 9 2 1 -1. - <_> - 3 9 1 1 2. - 1 - -1.1314899893477559e-004 - 1.0845900326967239e-001 - -2.3838439583778381e-001 - <_> - - <_> - - - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - 0 - -2.9757779557257891e-003 - -3.7891590595245361e-001 - 4.7076370567083359e-002 - <_> - - <_> - - - - <_> - 1 0 16 4 -1. - <_> - 1 1 16 2 2. - 0 - 4.3355841189622879e-002 - -1.0889430344104767e-001 - 2.2752620279788971e-001 - <_> - - <_> - - - - <_> - 5 2 8 4 -1. - <_> - 5 3 8 2 2. - 0 - 3.1121319159865379e-002 - -1.0356359928846359e-001 - 3.2433480024337769e-001 - <_> - - <_> - - - - <_> - 3 0 8 4 -1. - <_> - 5 0 4 4 2. - 0 - -3.2188410405069590e-003 - 1.1988320201635361e-001 - -2.5309950113296509e-001 - <_> - - <_> - - - - <_> - 8 0 4 4 -1. - <_> - 9 0 2 4 2. - 0 - -1.3322260230779648e-002 - -4.6327260136604309e-001 - 2.7917400002479553e-002 - <_> - - <_> - - - - <_> - 6 0 4 4 -1. - <_> - 7 0 2 4 2. - 0 - -1.1763609945774078e-002 - -4.9447950720787048e-001 - 6.2780112028121948e-002 - <_> - - <_> - - - - <_> - 5 4 8 2 -1. - <_> - 5 5 8 1 2. - 0 - 2.6546010747551918e-002 - -7.0860996842384338e-002 - 3.8759338855743408e-001 - <_> - - <_> - - - - <_> - 0 0 1 6 -1. - <_> - 0 2 1 2 3. - 0 - 1.0983680374920368e-002 - 5.2215598523616791e-002 - -4.7912430763244629e-001 - <_> - - <_> - - - - <_> - 10 3 1 6 -1. - <_> - 8 5 1 2 3. - 1 - -3.5203430801630020e-002 - 1.4733970165252686e-001 - -4.7205299139022827e-002 - <_> - - <_> - - - - <_> - 3 0 6 5 -1. - <_> - 5 0 2 5 3. - 0 - -4.8792399466037750e-002 - -4.8313421010971069e-001 - 5.1030978560447693e-002 - <_> - - <_> - - - - <_> - 13 9 1 2 -1. - <_> - 13 9 1 1 2. - 1 - -1.4748310204595327e-003 - 8.6995199322700500e-002 - -1.3301639258861542e-001 - <_> - - <_> - - - - <_> - 8 3 6 1 -1. - <_> - 10 5 2 1 3. - 1 - -2.3379849269986153e-002 - 1.2155140191316605e-001 - -1.8905250728130341e-001 - <_> - - <_> - - - - <_> - 5 0 8 6 -1. - <_> - 5 2 8 2 3. - 0 - -1.4968539774417877e-001 - 5.3282499313354492e-001 - -4.3869771063327789e-002 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 0 0 9 6 2. - <_> - 9 6 9 6 2. - 0 - 4.3147540092468262e-001 - 3.6285050213336945e-002 - -7.2065258026123047e-001 - <_> - - <_> - - - - <_> - 11 9 7 3 -1. - <_> - 11 10 7 1 3. - 0 - 3.2757069915533066e-002 - 1.5488710254430771e-002 - -6.0830378532409668e-001 - <_> - - <_> - - - - <_> - 6 9 6 2 -1. - <_> - 8 9 2 2 3. - 0 - -2.0532529801130295e-002 - -5.3597778081893921e-001 - 3.8419000804424286e-002 - <_> - - <_> - - - - <_> - 11 9 7 3 -1. - <_> - 11 10 7 1 3. - 0 - -4.3228048831224442e-002 - -6.8606472015380859e-001 - 4.9887378700077534e-003 - <_> - - <_> - - - - <_> - 4 5 3 3 -1. - <_> - 5 5 1 3 3. - 0 - -6.1122281476855278e-003 - 2.4422119557857513e-001 - -8.1252299249172211e-002 - <_> - - <_> - - - - <_> - 12 5 6 3 -1. - <_> - 14 5 2 3 3. - 0 - -1.4673279598355293e-002 - 2.1088060736656189e-001 - -1.6600500047206879e-001 - <_> - - <_> - - - - <_> - 0 5 6 3 -1. - <_> - 2 5 2 3 3. - 0 - -1.0619849897921085e-002 - 1.5236820280551910e-001 - -1.5812709927558899e-001 - <_> - - <_> - - - - <_> - 13 5 5 4 -1. - <_> - 13 6 5 2 2. - 0 - -6.5401569008827209e-002 - -5.9497058391571045e-001 - 1.7393449321389198e-002 - <_> - - <_> - - - - <_> - 0 9 7 3 -1. - <_> - 0 10 7 1 3. - 0 - 2.1991839632391930e-002 - 3.2845780253410339e-002 - -5.8278721570968628e-001 - <_> - - <_> - - - - <_> - 13 9 1 2 -1. - <_> - 13 9 1 1 2. - 1 - -1.6024880111217499e-002 - -5.9319758415222168e-001 - 7.7277477830648422e-003 - <_> - - <_> - - - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - 0 - -7.4009672971442342e-005 - 1.0054150223731995e-001 - -1.9513580203056335e-001 - <_> - - <_> - - - - <_> - 0 1 18 9 -1. - <_> - 6 1 6 9 3. - 0 - -1.8304589390754700e-001 - 1.1641489714384079e-001 - -1.9243900477886200e-001 - <_> - - <_> - - - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - 5.1587168127298355e-003 - 2.7310799807310104e-002 - -6.5126478672027588e-001 - <_> - - <_> - - - - <_> - 15 7 2 3 -1. - <_> - 15 7 1 3 2. - 1 - -4.0543098002672195e-003 - 3.5822600126266479e-002 - -1.2355879694223404e-001 - <_> - - <_> - - - - <_> - 3 7 3 2 -1. - <_> - 3 7 3 1 2. - 1 - 1.0826930403709412e-002 - -5.6947678327560425e-002 - 3.7964731454849243e-001 - <_> - - <_> - - - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - -1.9336320459842682e-002 - -2.7437770366668701e-001 - 2.3742979392409325e-002 - <_> - - <_> - - - - <_> - 0 9 4 3 -1. - <_> - 1 9 2 3 2. - 0 - 3.0844670254737139e-003 - -8.8440679013729095e-002 - 2.0758619904518127e-001 - <_> - - <_> - - - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - 1.4967800118029118e-002 - 3.0504930764436722e-002 - -2.1708330512046814e-001 - <_> - - <_> - - - - <_> - 4 1 7 2 -1. - <_> - 4 2 7 1 2. - 0 - 1.4697089791297913e-002 - -6.8411618471145630e-002 - 2.7859160304069519e-001 - <_> - - <_> - - - - <_> - 15 2 1 2 -1. - <_> - 15 3 1 1 2. - 0 - -1.2393240467645228e-004 - 6.8553149700164795e-002 - -8.7831273674964905e-002 - <_> - - <_> - - - - <_> - 2 2 1 2 -1. - <_> - 2 3 1 1 2. - 0 - -1.0554819891694933e-004 - 1.1712960153818130e-001 - -1.5531350672245026e-001 - <_> - - <_> - - - - <_> - 0 0 18 3 -1. - <_> - 6 1 6 1 9. - 0 - 1.0648550093173981e-001 - -6.1998508870601654e-002 - 2.7710339426994324e-001 - <_> - - <_> - - - - <_> - 5 0 8 4 -1. - <_> - 5 1 8 2 2. - 0 - -3.0953379347920418e-002 - 3.0595239996910095e-001 - -6.0716990381479263e-002 - <_> - - <_> - - - - <_> - 15 1 3 2 -1. - <_> - 16 2 1 2 3. - 1 - -2.9498629271984100e-002 - -3.9406108856201172e-001 - 1.6826160252094269e-002 - <_> - - <_> - - - - <_> - 0 6 4 6 -1. - <_> - 0 8 4 2 3. - 0 - 4.9228470772504807e-002 - 3.4308459609746933e-002 - -5.0780892372131348e-001 - <_> - - <_> - - - - <_> - 5 4 9 8 -1. - <_> - 5 8 9 4 2. - 0 - -1.1081350035965443e-002 - -6.4533978700637817e-001 - 2.1389039233326912e-002 - <_> - - <_> - - - - <_> - 5 1 1 4 -1. - <_> - 4 2 1 2 2. - 1 - -1.5145439654588699e-002 - -4.2602449655532837e-001 - 3.9356358349323273e-002 - <_> - - <_> - - - - <_> - 10 5 3 2 -1. - <_> - 11 5 1 2 3. - 0 - -5.2890921942889690e-003 - 1.9488410651683807e-001 - -6.0674101114273071e-002 - <_> - - <_> - - - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - 0 - -7.3016500100493431e-003 - -5.4184222221374512e-001 - 3.1283780932426453e-002 - <_> - - <_> - - - - <_> - 9 2 2 1 -1. - <_> - 9 2 1 1 2. - 0 - -4.2362208478152752e-003 - -2.9087099432945251e-001 - 1.4468260109424591e-002 - <_> - - <_> - - - - <_> - 7 2 2 1 -1. - <_> - 8 2 1 1 2. - 0 - 1.1999450362054631e-004 - -1.3722729682922363e-001 - 1.2392169982194901e-001 - <_> - - <_> - - - - <_> - 16 11 2 1 -1. - <_> - 16 11 1 1 2. - 0 - 1.9742529839277267e-003 - 2.9429899528622627e-002 - -1.6445399820804596e-001 - <_> - - <_> - - - - <_> - 0 11 2 1 -1. - <_> - 1 11 1 1 2. - 0 - -1.2930440425407141e-004 - 1.2450899928808212e-001 - -1.3043509423732758e-001 - <_> - - <_> - - - - <_> - 16 8 2 2 -1. - <_> - 16 8 1 2 2. - 1 - -2.2735600359737873e-003 - 6.0308720916509628e-002 - -1.3316330313682556e-001 - <_> - - <_> - - - - <_> - 2 8 2 2 -1. - <_> - 2 8 2 1 2. - 1 - 4.2600082233548164e-003 - -6.8703986704349518e-002 - 2.7337071299552917e-001 - <_> - - <_> - - - - <_> - 2 11 16 1 -1. - <_> - 2 11 8 1 2. - 0 - -7.8149579465389252e-002 - -4.7220858931541443e-001 - 2.1372530609369278e-002 - <_> - - <_> - - - - <_> - 0 6 1 4 -1. - <_> - 0 8 1 2 2. - 0 - -4.1436408646404743e-003 - -3.3360588550567627e-001 - 5.2412509918212891e-002 - <_> - - <_> - - - - <_> - 14 2 2 2 -1. - <_> - 15 2 1 1 2. - <_> - 14 3 1 1 2. - 0 - -1.1810749856522307e-004 - 1.2552410364151001e-001 - -1.2879179418087006e-001 - <_> - - <_> - - - - <_> - 2 2 2 2 -1. - <_> - 2 2 1 1 2. - <_> - 3 3 1 1 2. - 0 - -1.2218070332892239e-004 - 1.3134269416332245e-001 - -1.2296169996261597e-001 - <_> - - <_> - - - - <_> - 9 0 4 4 -1. - <_> - 10 0 2 4 2. - 0 - -1.8656680360436440e-002 - -3.5880041122436523e-001 - 1.2528499588370323e-002 - <_> - - <_> - - - - <_> - 6 2 6 7 -1. - <_> - 8 2 2 7 3. - 0 - -3.4258540719747543e-002 - 1.2983490526676178e-001 - -1.2182570248842239e-001 - <_> - - <_> - - - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - 0 - 7.7113481238484383e-003 - -5.6336041539907455e-002 - 1.5032570064067841e-001 - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - -7.5950678437948227e-003 - 3.3188471198081970e-001 - -6.1699498444795609e-002 - <_> - - <_> - - - - <_> - 16 4 2 1 -1. - <_> - 16 4 1 1 2. - 0 - -1.0678060352802277e-002 - -6.6613417863845825e-001 - 1.2147589586675167e-002 - <_> - - <_> - - - - <_> - 0 4 2 1 -1. - <_> - 1 4 1 1 2. - 0 - -1.3358499563764781e-004 - 8.6387783288955688e-002 - -2.0256230235099792e-001 - <_> - - <_> - - - - <_> - 7 11 6 1 -1. - <_> - 9 11 2 1 3. - 0 - -1.4575020410120487e-002 - -7.3572522401809692e-001 - 2.1267030388116837e-002 - <_> - - <_> - - - - <_> - 5 11 6 1 -1. - <_> - 7 11 2 1 3. - 0 - -1.1412939988076687e-002 - -5.0988101959228516e-001 - 2.6772709563374519e-002 - <_> - - <_> - - - - <_> - 15 0 3 3 -1. - <_> - 14 1 3 1 3. - 1 - -3.4162081778049469e-002 - 3.6300870776176453e-001 - -2.7194390073418617e-002 - <_> - - <_> - - - - <_> - 3 0 3 3 -1. - <_> - 4 1 1 3 3. - 1 - -2.2955790162086487e-002 - 2.7859601378440857e-001 - -5.2748218178749084e-002 - <_> - - <_> - - - - <_> - 13 2 3 9 -1. - <_> - 14 5 1 3 9. - 0 - -2.8807529807090759e-001 - -8.1691658496856689e-001 - 9.1450996696949005e-003 - <_> - - <_> - - - - <_> - 2 2 3 9 -1. - <_> - 3 5 1 3 9. - 0 - -2.7352200821042061e-002 - 1.0071670264005661e-001 - -1.6602990031242371e-001 - <_> - - <_> - - - - <_> - 9 6 4 1 -1. - <_> - 10 6 2 1 2. - 0 - -2.8700050897896290e-003 - 1.2723830342292786e-001 - -5.8128058910369873e-002 - <_> - - <_> - - - - <_> - 6 6 3 2 -1. - <_> - 7 6 1 2 3. - 0 - -3.0184709466993809e-003 - 1.8212230503559113e-001 - -8.9592203497886658e-002 - <_> - - <_> - - - - <_> - 13 1 3 2 -1. - <_> - 14 2 1 2 3. - 1 - 2.5293970480561256e-002 - 1.2859360314905643e-002 - -2.1852749586105347e-001 - <_> - - <_> - - - - <_> - 5 1 2 3 -1. - <_> - 4 2 2 1 3. - 1 - 9.6635837107896805e-003 - 5.2143279463052750e-002 - -3.0202549695968628e-001 - <_> - - <_> - - - - <_> - 10 8 2 2 -1. - <_> - 10 8 2 1 2. - 1 - 4.5520989224314690e-003 - -2.3607470095157623e-002 - 1.8376210331916809e-001 - <_> - - <_> - - - - <_> - 0 0 18 6 -1. - <_> - 0 3 18 3 2. - 0 - -4.9739900231361389e-001 - -5.3579831123352051e-001 - 2.8743360191583633e-002 - <_> - - <_> - - - - <_> - 11 1 3 3 -1. - <_> - 12 1 1 3 3. - 0 - -1.5186400152742863e-002 - -3.3224511146545410e-001 - 8.5207987576723099e-003 - <_> - - <_> - - - - <_> - 8 8 2 2 -1. - <_> - 8 8 1 2 2. - 1 - -1.6664810478687286e-002 - -3.6154919862747192e-001 - 4.0535591542720795e-002 - <_> - - <_> - - - - <_> - 11 9 1 2 -1. - <_> - 11 9 1 1 2. - 1 - -1.6777740092948079e-003 - 5.6449390947818756e-002 - -8.3506047725677490e-002 - <_> - - <_> - - - - <_> - 7 9 2 1 -1. - <_> - 7 9 1 1 2. - 1 - -8.6815550457686186e-004 - 8.6002722382545471e-002 - -1.6662649810314178e-001 - <_> - - <_> - - - - <_> - 7 2 4 3 -1. - <_> - 7 3 4 1 3. - 0 - -2.1504880860447884e-002 - 3.0984830856323242e-001 - -4.7374550253152847e-002 - <_> - - <_> - - - - <_> - 3 2 12 3 -1. - <_> - 3 3 12 1 3. - 0 - 1.2018860317766666e-002 - -1.1302450299263000e-001 - 1.5601180493831635e-001 - <_> - - <_> - - - - <_> - 11 1 3 1 -1. - <_> - 12 2 1 1 3. - 1 - -4.8626540228724480e-003 - 7.7384807169437408e-002 - -2.6118829846382141e-002 - <_> - - <_> - - - - <_> - 7 1 1 3 -1. - <_> - 6 2 1 1 3. - 1 - 8.0883055925369263e-003 - 5.0701878964900970e-002 - -3.0898410081863403e-001 - <_> - - <_> - - - - <_> - 14 6 4 4 -1. - <_> - 15 6 2 4 2. - 0 - -6.0818139463663101e-003 - 1.0439839959144592e-001 - -5.4040290415287018e-002 - <_> - - <_> - - - - <_> - 4 0 10 6 -1. - <_> - 4 2 10 2 3. - 0 - 2.3746709525585175e-001 - -3.6280110478401184e-002 - 3.9113318920135498e-001 - <_> - - <_> - - - - <_> - 0 11 18 1 -1. - <_> - 6 11 6 1 3. - 0 - -1.7426609992980957e-002 - 1.6401870548725128e-001 - -8.8042907416820526e-002 - <_> - - <_> - - - - <_> - 0 6 4 4 -1. - <_> - 1 6 2 4 2. - 0 - -1.0071439668536186e-002 - 1.9563260674476624e-001 - -6.9586493074893951e-002 - <_> - - <_> - - - - <_> - 14 0 4 4 -1. - <_> - 15 0 2 4 2. - 0 - 1.6055470332503319e-002 - 1.6443690285086632e-002 - -1.8746310472488403e-001 - <_> - - <_> - - - - <_> - 0 0 4 4 -1. - <_> - 1 0 2 4 2. - 0 - -1.9599670544266701e-002 - -4.7449600696563721e-001 - 3.2551929354667664e-002 - <_> - - <_> - - - - <_> - 5 1 12 2 -1. - <_> - 11 1 6 1 2. - <_> - 5 2 6 1 2. - 0 - 1.0608370415866375e-002 - -3.7545830011367798e-002 - 9.7375199198722839e-002 - <_> - - <_> - - - - <_> - 1 1 12 2 -1. - <_> - 1 1 6 1 2. - <_> - 7 2 6 1 2. - 0 - -1.4044529758393764e-002 - 2.1422649919986725e-001 - -6.7895002663135529e-002 - <_> - - <_> - - - - <_> - 12 0 4 2 -1. - <_> - 13 0 2 2 2. - 0 - -1.5813199803233147e-002 - -6.4780187606811523e-001 - 1.3148790225386620e-002 - <_> - - <_> - - - - <_> - 2 0 4 2 -1. - <_> - 3 0 2 2 2. - 0 - -1.5055449679493904e-002 - -6.8386191129684448e-001 - 1.9564820453524590e-002 - <_> - - <_> - - - - <_> - 14 4 4 6 -1. - <_> - 14 6 4 2 3. - 0 - -1.5806560218334198e-001 - -5.3126132488250732e-001 - 3.8119140663184226e-004 - <_> - - <_> - - - - <_> - 2 6 12 4 -1. - <_> - 2 6 6 2 2. - <_> - 8 8 6 2 2. - 0 - 2.0771630108356476e-002 - -1.1685659736394882e-001 - 1.1046549677848816e-001 - <_> - - <_> - - - - <_> - 13 3 3 1 -1. - <_> - 14 4 1 1 3. - 1 - -2.8288820758461952e-002 - -5.9239888191223145e-001 - 7.6842932030558586e-003 - <_> - - <_> - - - - <_> - 5 3 1 3 -1. - <_> - 4 4 1 1 3. - 1 - 5.6896908208727837e-003 - 4.6517208218574524e-002 - -2.9473629593849182e-001 - -1.6673049926757812e+000 - 10 - -1 - <_> - - - <_> - - <_> - - - - <_> - 7 4 3 2 -1. - <_> - 7 4 3 1 2. - 1 - -3.9956759661436081e-002 - 5.2230298519134521e-001 - -3.5263240337371826e-001 - <_> - - <_> - - - - <_> - 10 2 1 6 -1. - <_> - 8 4 1 2 3. - 1 - -2.8569729998707771e-002 - 1.4566479623317719e-001 - -1.1563750356435776e-001 - <_> - - <_> - - - - <_> - 8 1 6 1 -1. - <_> - 10 3 2 1 3. - 1 - -4.1501019150018692e-002 - 3.6643621325492859e-001 - -2.2006149590015411e-001 - <_> - - <_> - - - - <_> - 7 7 9 1 -1. - <_> - 10 7 3 1 3. - 0 - 2.3764509707689285e-002 - -1.0637629777193069e-001 - 3.3757281303405762e-001 - <_> - - <_> - - - - <_> - 1 0 12 3 -1. - <_> - 5 0 4 3 3. - 0 - -3.6841601133346558e-002 - 2.0969760417938232e-001 - -3.5538119077682495e-001 - <_> - - <_> - - - - <_> - 1 4 16 8 -1. - <_> - 1 8 16 4 2. - 0 - 4.5045730471611023e-001 - -2.5148901343345642e-001 - 2.7531328797340393e-001 - <_> - - <_> - - - - <_> - 0 2 2 1 -1. - <_> - 1 2 1 1 2. - 0 - -1.1612180242082104e-004 - 1.4220459759235382e-001 - -3.4681579470634460e-001 - <_> - - <_> - - - - <_> - 12 5 3 3 -1. - <_> - 13 6 1 3 3. - 1 - -2.4308359250426292e-002 - 2.7634850144386292e-001 - -5.8556519448757172e-002 - <_> - - <_> - - - - <_> - 9 2 6 3 -1. - <_> - 11 4 2 3 3. - 1 - -1.0739170014858246e-001 - 2.5513848662376404e-001 - -1.8360190093517303e-001 - <_> - - <_> - - - - <_> - 11 5 6 3 -1. - <_> - 13 5 2 3 3. - 0 - -2.1329099312424660e-002 - 2.8843191266059875e-001 - -1.2600709497928619e-001 - <_> - - <_> - - - - <_> - 6 5 3 3 -1. - <_> - 5 6 3 1 3. - 1 - -9.9198631942272186e-003 - 2.5516051054000854e-001 - -1.7994299530982971e-001 - <_> - - <_> - - - - <_> - 2 10 16 2 -1. - <_> - 2 11 16 1 2. - 0 - 3.3280439674854279e-003 - -3.5088729858398438e-001 - 1.0136920213699341e-001 - <_> - - <_> - - - - <_> - 0 0 1 4 -1. - <_> - 0 1 1 2 2. - 0 - 4.8708179965615273e-003 - 5.1397740840911865e-002 - -5.6077277660369873e-001 - <_> - - <_> - - - - <_> - 9 0 4 3 -1. - <_> - 10 0 2 3 2. - 0 - 9.8150614649057388e-003 - 3.9320938289165497e-002 - -4.5681610703468323e-001 - <_> - - <_> - - - - <_> - 5 0 4 3 -1. - <_> - 6 0 2 3 2. - 0 - -1.2296459637582302e-002 - -5.4089337587356567e-001 - 4.8353921622037888e-002 - <_> - - <_> - - - - <_> - 8 0 5 2 -1. - <_> - 8 1 5 1 2. - 0 - 1.5832969918847084e-002 - -9.2032462358474731e-002 - 3.3556351065635681e-001 - <_> - - <_> - - - - <_> - 0 1 1 2 -1. - <_> - 0 2 1 1 2. - 0 - -1.1616790288826451e-004 - 1.3700810074806213e-001 - -2.0924359560012817e-001 - <_> - - <_> - - - - <_> - 8 9 4 3 -1. - <_> - 9 9 2 3 2. - 0 - 9.3623008579015732e-003 - 3.4387368708848953e-002 - -6.4315831661224365e-001 - <_> - - <_> - - - - <_> - 6 9 4 3 -1. - <_> - 7 9 2 3 2. - 0 - 7.3407022282481194e-003 - 4.7527570277452469e-002 - -5.2763640880584717e-001 - <_> - - <_> - - - - <_> - 10 4 3 3 -1. - <_> - 11 5 1 3 3. - 1 - -9.7040366381406784e-003 - 6.1033390462398529e-002 - -1.1603049933910370e-001 - <_> - - <_> - - - - <_> - 3 0 4 4 -1. - <_> - 4 0 2 4 2. - 0 - -1.6028270125389099e-002 - -5.8752918243408203e-001 - 4.3372269719839096e-002 - <_> - - <_> - - - - <_> - 10 4 3 3 -1. - <_> - 11 5 1 3 3. - 1 - -1.0594909638166428e-001 - -6.6139537096023560e-001 - -1.2790230102837086e-003 - <_> - - <_> - - - - <_> - 8 4 3 3 -1. - <_> - 7 5 3 1 3. - 1 - 2.9476720839738846e-002 - -8.3381086587905884e-002 - 3.2143539190292358e-001 - <_> - - <_> - - - - <_> - 13 2 4 4 -1. - <_> - 13 2 2 4 2. - 0 - -1.2502159923315048e-002 - 9.9471800029277802e-002 - -6.8885073065757751e-002 - <_> - - <_> - - - - <_> - 0 1 1 3 -1. - <_> - 0 2 1 1 3. - 0 - -3.1669840682297945e-003 - -3.3657288551330566e-001 - 6.7130729556083679e-002 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - -3.7675988860428333e-003 - 2.5373768806457520e-001 - -5.4118018597364426e-002 - <_> - - <_> - - - - <_> - 3 0 3 5 -1. - <_> - 4 0 1 5 3. - 0 - 9.5973610877990723e-003 - 5.0982888787984848e-002 - -3.9950078725814819e-001 - <_> - - <_> - - - - <_> - 7 2 8 2 -1. - <_> - 9 2 4 2 2. - 0 - 6.5194750204682350e-003 - -5.6820228695869446e-002 - 9.7085036337375641e-002 - <_> - - <_> - - - - <_> - 1 0 8 4 -1. - <_> - 1 0 4 2 2. - <_> - 5 2 4 2 2. - 0 - -3.0232090502977371e-002 - 2.6110428571701050e-001 - -7.0189543068408966e-002 - <_> - - <_> - - - - <_> - 4 1 10 6 -1. - <_> - 4 3 10 2 3. - 0 - 1.9264510273933411e-001 - -3.8105361163616180e-002 - 4.9786558747291565e-001 - <_> - - <_> - - - - <_> - 1 2 2 1 -1. - <_> - 2 2 1 1 2. - 0 - -1.0531100269872695e-004 - 1.0181579738855362e-001 - -1.9895200431346893e-001 - <_> - - <_> - - - - <_> - 14 1 4 6 -1. - <_> - 16 1 2 3 2. - <_> - 14 4 2 3 2. - 0 - -1.7167180776596069e-002 - 1.7047409713268280e-001 - -1.1575569957494736e-001 - <_> - - <_> - - - - <_> - 0 1 4 6 -1. - <_> - 0 1 2 3 2. - <_> - 2 4 2 3 2. - 0 - -1.6330849379301071e-002 - 2.3561200499534607e-001 - -8.8093422353267670e-002 - <_> - - <_> - - - - <_> - 16 4 2 3 -1. - <_> - 16 5 2 1 3. - 0 - 9.9368933588266373e-003 - 3.6905229091644287e-002 - -4.8101478815078735e-001 - <_> - - <_> - - - - <_> - 8 9 2 1 -1. - <_> - 8 9 1 1 2. - 1 - -9.1113299131393433e-003 - -3.9816591143608093e-001 - 4.4077850878238678e-002 - <_> - - <_> - - - - <_> - 0 8 18 4 -1. - <_> - 0 10 18 2 2. - 0 - 1.4140089973807335e-002 - -4.0721800923347473e-001 - 4.7490529716014862e-002 - <_> - - <_> - - - - <_> - 6 6 2 2 -1. - <_> - 6 6 1 1 2. - <_> - 7 7 1 1 2. - 0 - -1.8617640016600490e-003 - 2.3672190308570862e-001 - -7.6820157468318939e-002 - <_> - - <_> - - - - <_> - 15 4 3 3 -1. - <_> - 15 5 3 1 3. - 0 - -2.7797909453511238e-002 - -5.5653101205825806e-001 - 1.8978169187903404e-002 - <_> - - <_> - - - - <_> - 9 2 5 3 -1. - <_> - 8 3 5 1 3. - 1 - -2.7056299149990082e-002 - 1.3742800056934357e-001 - -1.2685729563236237e-001 - <_> - - <_> - - - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - 0 - 5.5972482077777386e-003 - 2.3374689742922783e-002 - -3.7989559769630432e-001 - <_> - - <_> - - - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - 0 - -1.4289989485405385e-004 - 9.2340193688869476e-002 - -1.8222640454769135e-001 - <_> - - <_> - - - - <_> - 3 0 14 2 -1. - <_> - 10 0 7 1 2. - <_> - 3 1 7 1 2. - 0 - 4.7072111628949642e-003 - -8.2098759710788727e-002 - 1.4458109438419342e-001 - <_> - - <_> - - - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - 0 - 8.2740625366568565e-003 - 3.5707078874111176e-002 - -4.9938249588012695e-001 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - 0 - 4.1985020041465759e-001 - 2.5246109813451767e-002 - -5.8404290676116943e-001 - <_> - - <_> - - - - <_> - 0 8 3 4 -1. - <_> - 0 9 3 2 2. - 0 - -1.1979590170085430e-002 - -4.3877130746841431e-001 - 3.5344090312719345e-002 - <_> - - <_> - - - - <_> - 7 0 4 3 -1. - <_> - 7 1 4 1 3. - 0 - -1.0584940202534199e-002 - 2.2189530730247498e-001 - -7.5947776436805725e-002 - <_> - - <_> - - - - <_> - 0 4 4 4 -1. - <_> - 0 5 4 2 2. - 0 - -3.6539521068334579e-002 - -7.4320507049560547e-001 - 2.2532209753990173e-002 - <_> - - <_> - - - - <_> - 17 4 1 4 -1. - <_> - 17 5 1 2 2. - 0 - 6.2696770764887333e-003 - 2.5996619835495949e-002 - -4.3524068593978882e-001 - <_> - - <_> - - - - <_> - 5 6 2 2 -1. - <_> - 5 6 1 1 2. - <_> - 6 7 1 1 2. - 0 - -2.2490890696644783e-003 - 2.4717779457569122e-001 - -6.4497016370296478e-002 - <_> - - <_> - - - - <_> - 17 4 1 4 -1. - <_> - 17 5 1 2 2. - 0 - -1.9729709252715111e-002 - -8.2047319412231445e-001 - 7.4640130624175072e-003 - <_> - - <_> - - - - <_> - 0 4 1 4 -1. - <_> - 0 5 1 2 2. - 0 - 4.4493898749351501e-003 - 4.1863039135932922e-002 - -3.7814080715179443e-001 - <_> - - <_> - - - - <_> - 12 7 3 2 -1. - <_> - 13 8 1 2 3. - 1 - 7.3664717376232147e-002 - -4.8542860895395279e-003 - 7.5385349988937378e-001 - <_> - - <_> - - - - <_> - 6 7 2 3 -1. - <_> - 5 8 2 1 3. - 1 - -6.0322289355099201e-003 - 1.7529049515724182e-001 - -9.2345252633094788e-002 - <_> - - <_> - - - - <_> - 15 8 2 2 -1. - <_> - 15 8 1 2 2. - 1 - -3.9990269578993320e-003 - 7.0288032293319702e-002 - -1.3759149610996246e-001 - <_> - - <_> - - - - <_> - 3 8 2 2 -1. - <_> - 3 8 2 1 2. - 1 - 4.4922139495611191e-003 - -7.2460688650608063e-002 - 2.6984411478042603e-001 - <_> - - <_> - - - - <_> - 14 10 4 2 -1. - <_> - 14 10 2 2 2. - 0 - -9.6887518884614110e-004 - 1.0673040151596069e-001 - -1.0224950313568115e-001 - <_> - - <_> - - - - <_> - 3 0 12 3 -1. - <_> - 3 1 12 1 3. - 0 - 1.4500839635729790e-002 - -1.0403750091791153e-001 - 1.6688880324363708e-001 - <_> - - <_> - - - - <_> - 12 3 3 9 -1. - <_> - 13 3 1 9 3. - 0 - -3.5295259207487106e-002 - -5.0939851999282837e-001 - 2.0862380042672157e-002 - <_> - - <_> - - - - <_> - 0 5 18 6 -1. - <_> - 0 8 18 3 2. - 0 - 8.5677601397037506e-002 - -3.8956940174102783e-001 - 3.8175251334905624e-002 - <_> - - <_> - - - - <_> - 14 10 4 2 -1. - <_> - 14 10 2 2 2. - 0 - -2.5425739586353302e-002 - -3.1342959403991699e-001 - 1.3558049686253071e-002 - <_> - - <_> - - - - <_> - 0 10 4 2 -1. - <_> - 2 10 2 2 2. - 0 - -8.3960685878992081e-003 - 2.0714859664440155e-001 - -9.0884797275066376e-002 - <_> - - <_> - - - - <_> - 4 3 10 2 -1. - <_> - 4 4 10 1 2. - 0 - 2.7257710695266724e-002 - -3.4004978835582733e-002 - 4.2590439319610596e-001 - <_> - - <_> - - - - <_> - 1 1 16 4 -1. - <_> - 1 2 16 2 2. - 0 - 3.2978549599647522e-002 - -9.6014492213726044e-002 - 1.6614159941673279e-001 - <_> - - <_> - - - - <_> - 12 2 2 1 -1. - <_> - 12 2 1 1 2. - 1 - -6.8808980286121368e-003 - 2.0307220518589020e-001 - -2.9098080471158028e-002 - <_> - - <_> - - - - <_> - 5 0 3 3 -1. - <_> - 4 1 3 1 3. - 1 - 1.2321489863097668e-002 - 5.6583181023597717e-002 - -2.9808661341667175e-001 - <_> - - <_> - - - - <_> - 12 1 2 2 -1. - <_> - 12 1 1 2 2. - 1 - 8.0069275572896004e-003 - -4.5793779194355011e-002 - 6.0080189257860184e-002 - <_> - - <_> - - - - <_> - 6 1 2 2 -1. - <_> - 6 1 2 1 2. - 1 - 1.8184490501880646e-002 - 3.9265241473913193e-002 - -4.3420770764350891e-001 - <_> - - <_> - - - - <_> - 5 2 12 2 -1. - <_> - 11 2 6 1 2. - <_> - 5 3 6 1 2. - 0 - -1.2880899943411350e-002 - 7.1062043309211731e-002 - -3.2926250249147415e-002 - <_> - - <_> - - - - <_> - 1 2 12 2 -1. - <_> - 1 2 6 1 2. - <_> - 7 3 6 1 2. - 0 - 1.7656469717621803e-002 - -5.3377009928226471e-002 - 2.8472688794136047e-001 - <_> - - <_> - - - - <_> - 13 8 1 3 -1. - <_> - 12 9 1 1 3. - 1 - 1.7241619527339935e-002 - 1.2728299945592880e-002 - -5.9147852659225464e-001 - <_> - - <_> - - - - <_> - 5 8 3 1 -1. - <_> - 6 9 1 1 3. - 1 - -8.1344433128833771e-003 - -3.9443930983543396e-001 - 3.5933971405029297e-002 - <_> - - <_> - - - - <_> - 7 2 4 2 -1. - <_> - 8 2 2 2 2. - 0 - 6.2624989077448845e-003 - 4.1950210928916931e-002 - -3.1127980351448059e-001 - <_> - - <_> - - - - <_> - 6 0 6 4 -1. - <_> - 8 0 2 4 3. - 0 - -3.7106670439243317e-002 - -4.6345439553260803e-001 - 3.2157208770513535e-002 - <_> - - <_> - - - - <_> - 8 5 4 2 -1. - <_> - 9 5 2 2 2. - 0 - 5.2173170261085033e-003 - -3.0107850208878517e-002 - 1.4784480631351471e-001 - <_> - - <_> - - - - <_> - 5 8 2 1 -1. - <_> - 5 8 1 1 2. - 1 - -8.0826329067349434e-003 - -2.8399410843849182e-001 - 4.7271709889173508e-002 - <_> - - <_> - - - - <_> - 14 9 1 2 -1. - <_> - 14 9 1 1 2. - 1 - 1.8598020076751709e-002 - 1.2912260135635734e-003 - -8.2174521684646606e-001 - <_> - - <_> - - - - <_> - 4 9 2 1 -1. - <_> - 4 9 1 1 2. - 1 - -1.0656929953256622e-004 - 7.9160809516906738e-002 - -1.9015760719776154e-001 - <_> - - <_> - - - - <_> - 11 4 3 4 -1. - <_> - 12 4 1 4 3. - 0 - -6.2989699654281139e-003 - 1.4902189373970032e-001 - -4.3334830552339554e-002 - <_> - - <_> - - - - <_> - 2 3 2 2 -1. - <_> - 2 3 1 1 2. - <_> - 3 4 1 1 2. - 0 - -1.3413479609880596e-004 - 1.2274789810180664e-001 - -1.1754590272903442e-001 - <_> - - <_> - - - - <_> - 9 1 1 8 -1. - <_> - 9 1 1 4 2. - 1 - -8.0092161893844604e-002 - -1.9501920044422150e-001 - 1.7820900306105614e-002 - <_> - - <_> - - - - <_> - 9 1 8 1 -1. - <_> - 9 1 4 1 2. - 1 - -9.0993821620941162e-002 - 4.8223200440406799e-001 - -3.1845889985561371e-002 - <_> - - <_> - - - - <_> - 11 5 3 3 -1. - <_> - 12 5 1 3 3. - 0 - 1.1353549547493458e-002 - -2.8713610023260117e-002 - 1.0261540114879608e-001 - <_> - - <_> - - - - <_> - 3 6 12 6 -1. - <_> - 7 8 4 2 9. - 0 - 3.9425060153007507e-001 - -2.1073190495371819e-002 - 6.6874951124191284e-001 - <_> - - <_> - - - - <_> - 12 9 6 3 -1. - <_> - 14 9 2 3 3. - 0 - -2.9247280210256577e-002 - -2.3554429411888123e-001 - 2.3138720542192459e-002 - <_> - - <_> - - - - <_> - 0 9 6 3 -1. - <_> - 2 9 2 3 3. - 0 - 9.9638495594263077e-003 - -7.8489832580089569e-002 - 1.8867549300193787e-001 - <_> - - <_> - - - - <_> - 15 7 3 2 -1. - <_> - 15 7 3 1 2. - 1 - -2.3715409915894270e-003 - 4.1485100984573364e-002 - -1.0372100025415421e-001 - <_> - - <_> - - - - <_> - 3 7 2 3 -1. - <_> - 3 7 1 3 2. - 1 - -2.3743370547890663e-002 - -3.9640530943870544e-001 - 3.4268859773874283e-002 - <_> - - <_> - - - - <_> - 15 6 3 2 -1. - <_> - 16 6 1 2 3. - 0 - 1.0030630044639111e-002 - 2.1527150645852089e-002 - -2.5675439834594727e-001 - <_> - - <_> - - - - <_> - 0 6 3 2 -1. - <_> - 1 6 1 2 3. - 0 - -4.3138000182807446e-003 - 1.9897720217704773e-001 - -7.1912497282028198e-002 - <_> - - <_> - - - - <_> - 16 6 2 5 -1. - <_> - 16 6 1 5 2. - 0 - -2.5737010873854160e-003 - 1.0103909671306610e-001 - -1.2687060236930847e-001 - <_> - - <_> - - - - <_> - 0 6 2 5 -1. - <_> - 1 6 1 5 2. - 0 - 8.6109479889273643e-003 - -5.2193351089954376e-002 - 3.1577721238136292e-001 - <_> - - <_> - - - - <_> - 16 9 2 2 -1. - <_> - 16 10 2 1 2. - 0 - -1.5778529923409224e-003 - -1.9565540552139282e-001 - 3.0738929286599159e-002 - <_> - - <_> - - - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - 0 - -8.8134268298745155e-003 - -8.0713188648223877e-001 - 1.7111089080572128e-002 - <_> - - <_> - - - - <_> - 16 9 2 2 -1. - <_> - 16 10 2 1 2. - 0 - 3.9245299994945526e-003 - 5.1848150789737701e-002 - -1.0634920001029968e-001 - <_> - - <_> - - - - <_> - 0 9 2 2 -1. - <_> - 0 10 2 1 2. - 0 - -2.6619979180395603e-003 - -3.1994658708572388e-001 - 4.2416218668222427e-002 - <_> - - <_> - - - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - 0 - -1.5030719805508852e-003 - 9.4091989099979401e-002 - -7.0534393191337585e-002 - <_> - - <_> - - - - <_> - 2 3 2 1 -1. - <_> - 3 3 1 1 2. - 0 - -1.0380429739598185e-004 - 8.6452230811119080e-002 - -1.5703070163726807e-001 - <_> - - <_> - - - - <_> - 0 1 18 3 -1. - <_> - 6 1 6 3 3. - 0 - 1.3336679339408875e-001 - -3.6738030612468719e-002 - 4.2388269305229187e-001 - <_> - - <_> - - - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - 0 - -3.4340259153395891e-003 - 2.0463900268077850e-001 - -6.4795367419719696e-002 - <_> - - <_> - - - - <_> - 7 5 4 4 -1. - <_> - 8 5 2 4 2. - 0 - -5.3972420282661915e-003 - 1.0175999999046326e-001 - -1.4838589727878571e-001 - <_> - - <_> - - - - <_> - 7 4 3 2 -1. - <_> - 7 4 3 1 2. - 1 - -3.9831619709730148e-002 - -2.6058611273765564e-001 - 7.4131652712821960e-002 - <_> - - <_> - - - - <_> - 6 2 9 3 -1. - <_> - 9 2 3 3 3. - 0 - -8.1318423151969910e-002 - -4.0708750486373901e-001 - 2.2578919306397438e-002 - <_> - - <_> - - - - <_> - 7 6 2 2 -1. - <_> - 7 7 2 1 2. - 0 - 4.9819168634712696e-003 - -1.1497610062360764e-001 - 1.1413440108299255e-001 - <_> - - <_> - - - - <_> - 11 2 7 4 -1. - <_> - 11 4 7 2 2. - 0 - -9.9393740296363831e-002 - -1.6260729730129242e-001 - 2.3891910910606384e-002 - <_> - - <_> - - - - <_> - 0 1 5 6 -1. - <_> - 0 4 5 3 2. - 0 - -1.0838139802217484e-001 - -3.6615368723869324e-001 - 3.3786319196224213e-002 - <_> - - <_> - - - - <_> - 12 6 6 3 -1. - <_> - 14 6 2 3 3. - 0 - 4.5659400522708893e-002 - -1.9689550623297691e-002 - 3.2644659280776978e-001 - <_> - - <_> - - - - <_> - 0 6 6 3 -1. - <_> - 2 6 2 3 3. - 0 - -1.3475780375301838e-002 - 1.3673679530620575e-001 - -9.8038949072360992e-002 - <_> - - <_> - - - - <_> - 12 9 2 2 -1. - <_> - 13 9 1 1 2. - <_> - 12 10 1 1 2. - 0 - 1.1365469981683418e-004 - -5.1998078823089600e-002 - 6.7236803472042084e-002 - <_> - - <_> - - - - <_> - 4 9 2 2 -1. - <_> - 4 9 1 1 2. - <_> - 5 10 1 1 2. - 0 - 1.3144240074325353e-004 - -1.0585889965295792e-001 - 1.2168779969215393e-001 - <_> - - <_> - - - - <_> - 4 1 12 3 -1. - <_> - 8 1 4 3 3. - 0 - -1.2846590019762516e-002 - 8.2202516496181488e-002 - -7.9589501023292542e-002 - <_> - - <_> - - - - <_> - 4 3 3 4 -1. - <_> - 4 4 3 2 2. - 0 - -4.2092949151992798e-003 - 9.4016201794147491e-002 - -1.3796289265155792e-001 - <_> - - <_> - - - - <_> - 3 1 12 6 -1. - <_> - 3 3 12 2 3. - 0 - 1.6699990257620811e-002 - -9.4395473599433899e-002 - 1.7067569494247437e-001 - <_> - - <_> - - - - <_> - 0 2 18 2 -1. - <_> - 0 3 18 1 2. - 0 - -2.7878250926733017e-002 - 1.4458370208740234e-001 - -1.0783910006284714e-001 - <_> - - <_> - - - - <_> - 12 2 2 1 -1. - <_> - 12 2 1 1 2. - 1 - 2.7518719434738159e-003 - -4.4989299029111862e-002 - 4.7646138817071915e-002 - <_> - - <_> - - - - <_> - 6 2 1 2 -1. - <_> - 6 2 1 1 2. - 1 - 8.1301108002662659e-003 - 4.4808190315961838e-002 - -3.2438778877258301e-001 - <_> - - <_> - - - - <_> - 2 4 15 3 -1. - <_> - 7 4 5 3 3. - 0 - -2.4894459545612335e-001 - -3.0193850398063660e-001 - 2.7400370687246323e-002 - <_> - - <_> - - - - <_> - 8 8 2 4 -1. - <_> - 8 8 1 2 2. - <_> - 9 10 1 2 2. - 0 - -7.5494530610740185e-003 - -5.3039801120758057e-001 - 2.3136850446462631e-002 - <_> - - <_> - - - - <_> - 12 0 6 8 -1. - <_> - 15 0 3 4 2. - <_> - 12 4 3 4 2. - 0 - 5.8778919279575348e-002 - -2.6784939691424370e-002 - 2.1899110078811646e-001 - -1.6442040205001831e+000 - 11 - -1 - <_> - - - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 1.1325679719448090e-002 - -4.7803491353988647e-001 - 7.3498201370239258e-001 - <_> - - <_> - - - - <_> - 4 3 10 4 -1. - <_> - 4 4 10 2 2. - 0 - -5.9533089399337769e-002 - 5.5771350860595703e-001 - -2.2670570015907288e-001 - <_> - - <_> - - - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - 0 - -3.1314720399677753e-003 - 4.4743809103965759e-001 - -1.3644909858703613e-001 - <_> - - <_> - - - - <_> - 6 4 7 4 -1. - <_> - 6 6 7 2 2. - 0 - 3.2649870961904526e-002 - -1.5226930379867554e-001 - 7.8735552728176117e-002 - <_> - - <_> - - - - <_> - 5 6 2 6 -1. - <_> - 5 9 2 3 2. - 0 - 1.2642489373683929e-001 - -4.1502929525449872e-004 - -1.0683220214843750e+003 - <_> - - <_> - - - - <_> - 10 3 4 4 -1. - <_> - 10 3 2 4 2. - 1 - -7.6149761676788330e-002 - 8.4858410060405731e-002 - -6.4545206725597382e-002 - <_> - - <_> - - - - <_> - 4 6 3 2 -1. - <_> - 5 6 1 2 3. - 0 - -5.6127519346773624e-003 - 4.4183671474456787e-001 - -1.0350040346384048e-001 - <_> - - <_> - - - - <_> - 16 1 2 1 -1. - <_> - 16 1 1 1 2. - 0 - 1.0242169810226187e-004 - -9.8213642835617065e-002 - 1.2914030253887177e-001 - <_> - - <_> - - - - <_> - 0 1 2 1 -1. - <_> - 1 1 1 1 2. - 0 - -6.8429631937760860e-005 - 1.0027779638767242e-001 - -3.8002538681030273e-001 - <_> - - <_> - - - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - 0 - 1.9151799380779266e-002 - -7.5300611555576324e-002 - 4.5866578817367554e-001 - <_> - - <_> - - - - <_> - 5 6 3 1 -1. - <_> - 6 6 1 1 3. - 0 - -4.0838099084794521e-003 - 5.1005601882934570e-001 - -6.4336180686950684e-002 - <_> - - <_> - - - - <_> - 7 0 8 3 -1. - <_> - 9 0 4 3 2. - 0 - -3.2537680119276047e-002 - -4.6181130409240723e-001 - 3.3831451088190079e-002 - <_> - - <_> - - - - <_> - 0 0 16 4 -1. - <_> - 4 0 8 4 2. - 0 - -8.7081208825111389e-002 - 1.6511060297489166e-001 - -2.0930479466915131e-001 - <_> - - <_> - - - - <_> - 10 4 1 4 -1. - <_> - 9 5 1 2 2. - 1 - -1.4256989583373070e-002 - 1.4572089910507202e-001 - -6.4026951789855957e-002 - <_> - - <_> - - - - <_> - 5 2 8 4 -1. - <_> - 5 3 8 2 2. - 0 - -6.5033003687858582e-002 - 5.1746249198913574e-001 - -7.6861917972564697e-002 - <_> - - <_> - - - - <_> - 10 2 2 6 -1. - <_> - 8 4 2 2 3. - 1 - 3.0242659151554108e-002 - -1.7024759203195572e-002 - 2.2390039265155792e-001 - <_> - - <_> - - - - <_> - 8 2 6 2 -1. - <_> - 10 4 2 2 3. - 1 - -5.1224708557128906e-002 - 1.4911690354347229e-001 - -2.7958190441131592e-001 - <_> - - <_> - - - - <_> - 12 10 1 2 -1. - <_> - 12 11 1 1 2. - 0 - 9.4173839897848666e-005 - -2.2882409393787384e-001 - 8.2659862935543060e-002 - <_> - - <_> - - - - <_> - 5 4 6 2 -1. - <_> - 5 4 3 2 2. - 1 - 1.0907740332186222e-002 - 6.5371036529541016e-002 - -4.9981170892715454e-001 - <_> - - <_> - - - - <_> - 1 3 16 4 -1. - <_> - 5 3 8 4 2. - 0 - -2.6308920979499817e-001 - -6.0524332523345947e-001 - 4.5024640858173370e-002 - <_> - - <_> - - - - <_> - 0 2 7 4 -1. - <_> - 0 4 7 2 2. - 0 - -7.3864251375198364e-002 - -4.8135051131248474e-001 - 4.9323990941047668e-002 - <_> - - <_> - - - - <_> - 12 10 1 2 -1. - <_> - 12 11 1 1 2. - 0 - -1.1241710308240727e-004 - 1.3900199532508850e-001 - -4.0958389639854431e-002 - <_> - - <_> - - - - <_> - 5 10 1 2 -1. - <_> - 5 11 1 1 2. - 0 - 9.9417651654221117e-005 - -2.8291520476341248e-001 - 9.7753129899501801e-002 - <_> - - <_> - - - - <_> - 0 6 18 6 -1. - <_> - 9 6 9 3 2. - <_> - 0 9 9 3 2. - 0 - 4.0392991155385971e-002 - 6.6282726824283600e-002 - -3.1161430478096008e-001 - <_> - - <_> - - - - <_> - 0 2 2 2 -1. - <_> - 0 2 1 1 2. - <_> - 1 3 1 1 2. - 0 - -9.7815187473315746e-005 - 1.5816099941730499e-001 - -1.4707480370998383e-001 - <_> - - <_> - - - - <_> - 4 0 14 2 -1. - <_> - 11 0 7 1 2. - <_> - 4 1 7 1 2. - 0 - -3.0936010181903839e-002 - 2.6339599490165710e-001 - -2.3398019373416901e-002 - <_> - - <_> - - - - <_> - 7 0 4 3 -1. - <_> - 7 1 4 1 3. - 0 - 1.3425219804048538e-002 - -8.9827023446559906e-002 - 2.6492318511009216e-001 - <_> - - <_> - - - - <_> - 1 10 16 1 -1. - <_> - 5 10 8 1 2. - 0 - -3.3873628824949265e-002 - 2.8317770361900330e-001 - -7.7808901667594910e-002 - <_> - - <_> - - - - <_> - 7 1 4 4 -1. - <_> - 7 2 4 2 2. - 0 - 1.2463210150599480e-002 - -1.2371910363435745e-001 - 1.8724919855594635e-001 - <_> - - <_> - - - - <_> - 17 0 1 8 -1. - <_> - 17 2 1 4 2. - 0 - 2.9030779376626015e-002 - 9.0519478544592857e-003 - -4.1493371129035950e-001 - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 1.1256829835474491e-002 - 8.7845213711261749e-002 - -2.3316149413585663e-001 - <_> - - <_> - - - - <_> - 7 6 4 3 -1. - <_> - 7 7 4 1 3. - 0 - -1.5189910307526588e-002 - 2.9291531443595886e-001 - -8.0204613506793976e-002 - <_> - - <_> - - - - <_> - 4 6 2 2 -1. - <_> - 4 6 1 1 2. - <_> - 5 7 1 1 2. - 0 - -9.1453723143786192e-005 - 1.5025730431079865e-001 - -1.3389849662780762e-001 - <_> - - <_> - - - - <_> - 9 5 3 3 -1. - <_> - 10 6 1 1 9. - 0 - -1.7369290813803673e-002 - 2.1264329552650452e-001 - -1.1079180240631104e-001 - <_> - - <_> - - - - <_> - 0 0 1 8 -1. - <_> - 0 2 1 4 2. - 0 - 6.0836751945316792e-003 - 6.6616423428058624e-002 - -3.2809430360794067e-001 - <_> - - <_> - - - - <_> - 4 2 12 2 -1. - <_> - 8 2 4 2 3. - 0 - -1.8416589125990868e-002 - 1.0930880159139633e-001 - -1.0196469724178314e-001 - <_> - - <_> - - - - <_> - 7 2 4 10 -1. - <_> - 7 2 2 5 2. - <_> - 9 7 2 5 2. - 0 - 2.4164859205484390e-002 - 6.5767362713813782e-002 - -3.2412400841712952e-001 - <_> - - <_> - - - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - 0 - -8.7694352259859443e-005 - 1.1597049981355667e-001 - -1.1484769731760025e-001 - <_> - - <_> - - - - <_> - 1 0 16 3 -1. - <_> - 1 1 16 1 3. - 0 - -2.7230460196733475e-002 - 2.6190671324729919e-001 - -7.0017747581005096e-002 - <_> - - <_> - - - - <_> - 8 0 4 3 -1. - <_> - 9 0 2 3 2. - 0 - 7.9280352219939232e-003 - 4.4160388410091400e-002 - -3.5706248879432678e-001 - <_> - - <_> - - - - <_> - 9 4 1 3 -1. - <_> - 8 5 1 1 3. - 1 - 2.9761910438537598e-002 - -2.6648679748177528e-002 - 7.6121932268142700e-001 - <_> - - <_> - - - - <_> - 14 7 3 2 -1. - <_> - 14 7 3 1 2. - 1 - 2.3093869909644127e-002 - 1.1457229964435101e-002 - -4.8356440663337708e-001 - <_> - - <_> - - - - <_> - 4 7 2 3 -1. - <_> - 4 7 1 3 2. - 1 - 1.5517040155827999e-002 - 2.8549319133162498e-002 - -5.8977079391479492e-001 - <_> - - <_> - - - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - 0 - -9.1348258138168603e-005 - 6.3839852809906006e-002 - -6.8278312683105469e-002 - <_> - - <_> - - - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - 0 - -9.5886833150871098e-005 - 1.3642780482769012e-001 - -1.2203469872474670e-001 - <_> - - <_> - - - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 0 - -7.8461649536620826e-005 - 9.5480233430862427e-002 - -8.4051437675952911e-002 - <_> - - <_> - - - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - 0 - -8.5865067376289517e-005 - 8.1667177379131317e-002 - -2.2435750067234039e-001 - <_> - - <_> - - - - <_> - 9 5 3 3 -1. - <_> - 10 6 1 1 9. - 0 - 1.8028339371085167e-002 - -4.2098421603441238e-002 - 2.6320070028305054e-001 - <_> - - <_> - - - - <_> - 6 5 3 3 -1. - <_> - 7 6 1 1 9. - 0 - -1.1890250258147717e-002 - 1.8222090601921082e-001 - -9.6351742744445801e-002 - <_> - - <_> - - - - <_> - 9 5 2 1 -1. - <_> - 9 5 1 1 2. - 0 - 7.6375443313736469e-005 - -3.6046039313077927e-002 - 6.4947687089443207e-002 - <_> - - <_> - - - - <_> - 7 4 3 3 -1. - <_> - 8 5 1 1 9. - 0 - -9.7775431349873543e-003 - 1.3119940459728241e-001 - -1.3694000244140625e-001 - <_> - - <_> - - - - <_> - 9 0 6 4 -1. - <_> - 11 0 2 4 3. - 0 - 2.0142890512943268e-002 - 4.9725331366062164e-002 - -2.0494620501995087e-001 - <_> - - <_> - - - - <_> - 6 6 1 3 -1. - <_> - 5 7 1 1 3. - 1 - -6.0250670649111271e-003 - 1.8385030329227448e-001 - -8.9287042617797852e-002 - <_> - - <_> - - - - <_> - 10 6 4 2 -1. - <_> - 11 6 2 2 2. - 0 - -5.2001518197357655e-003 - 2.7691179513931274e-001 - -6.5970212221145630e-002 - <_> - - <_> - - - - <_> - 1 2 12 2 -1. - <_> - 5 2 4 2 3. - 0 - -1.6988459974527359e-002 - 1.0599619895219803e-001 - -1.7461700737476349e-001 - <_> - - <_> - - - - <_> - 3 0 12 4 -1. - <_> - 3 1 12 2 2. - 0 - 1.6818750649690628e-002 - -1.3084490597248077e-001 - 1.3686789572238922e-001 - <_> - - <_> - - - - <_> - 5 0 1 3 -1. - <_> - 4 1 1 1 3. - 1 - 9.4254389405250549e-003 - 3.5684291273355484e-002 - -4.7307041287422180e-001 - <_> - - <_> - - - - <_> - 6 1 6 3 -1. - <_> - 6 2 6 1 3. - 0 - -1.7591860145330429e-002 - 2.8785240650177002e-001 - -6.0098338872194290e-002 - <_> - - <_> - - - - <_> - 4 0 3 3 -1. - <_> - 3 1 3 1 3. - 1 - -1.6125669702887535e-002 - -3.0210059881210327e-001 - 5.8409459888935089e-002 - <_> - - <_> - - - - <_> - 15 7 3 4 -1. - <_> - 16 7 1 4 3. - 0 - 2.0552899688482285e-002 - 4.2291129939258099e-003 - -2.4721190333366394e-001 - <_> - - <_> - - - - <_> - 0 5 3 4 -1. - <_> - 1 5 1 4 3. - 0 - -1.0046569630503654e-002 - 2.7138590812683105e-001 - -6.3029937446117401e-002 - <_> - - <_> - - - - <_> - 8 1 4 2 -1. - <_> - 9 1 2 2 2. - 0 - -7.2175520472228527e-003 - -2.5999858975410461e-001 - 2.3320039734244347e-002 - <_> - - <_> - - - - <_> - 6 1 4 2 -1. - <_> - 7 1 2 2 2. - 0 - -9.3304775655269623e-003 - -5.2186262607574463e-001 - 2.9735490679740906e-002 - <_> - - <_> - - - - <_> - 10 7 3 2 -1. - <_> - 10 7 3 1 2. - 1 - -4.0984921157360077e-002 - -2.2182470560073853e-001 - 5.1118140108883381e-003 - <_> - - <_> - - - - <_> - 3 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - 2.7245599776506424e-002 - 3.0876399949193001e-002 - -5.1215821504592896e-001 - <_> - - <_> - - - - <_> - 11 6 2 1 -1. - <_> - 11 6 1 1 2. - 0 - 3.0668000690639019e-003 - -4.3708208948373795e-002 - 2.7001819014549255e-001 - <_> - - <_> - - - - <_> - 4 6 3 1 -1. - <_> - 5 6 1 1 3. - 0 - -9.3389411631505936e-005 - 1.4854280650615692e-001 - -1.1542809754610062e-001 - -1.5643759965896606e+000 - 12 - -1 - <_> - - - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 8.3494018763303757e-003 - -5.3271728754043579e-001 - 7.3268449306488037e-001 - <_> - - <_> - - - - <_> - 6 1 11 4 -1. - <_> - 6 2 11 2 2. - 0 - 3.4267958253622055e-002 - -2.5425639748573303e-001 - 5.1729089021682739e-001 - <_> - - <_> - - - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - 0 - -3.9879079908132553e-002 - 6.3676887750625610e-001 - -1.6440890729427338e-001 - <_> - - <_> - - - - <_> - 9 5 3 3 -1. - <_> - 10 5 1 3 3. - 0 - -1.2493499554693699e-002 - 6.1780160665512085e-001 - -1.5069130063056946e-001 - <_> - - <_> - - - - <_> - 6 5 3 3 -1. - <_> - 7 5 1 3 3. - 0 - 9.4682415947318077e-003 - -1.4532479643821716e-001 - 6.0617917776107788e-001 - <_> - - <_> - - - - <_> - 4 2 10 3 -1. - <_> - 4 3 10 1 3. - 0 - -2.7246329933404922e-002 - 5.3559631109237671e-001 - -8.9151263236999512e-002 - <_> - - <_> - - - - <_> - 5 4 8 3 -1. - <_> - 5 5 8 1 3. - 0 - -5.6648440659046173e-002 - 6.2180757522583008e-001 - -8.5310757160186768e-002 - <_> - - <_> - - - - <_> - 7 7 4 3 -1. - <_> - 7 8 4 1 3. - 0 - 1.4102620072662830e-002 - -9.3592159450054169e-002 - 4.4376650452613831e-001 - <_> - - <_> - - - - <_> - 5 3 8 7 -1. - <_> - 9 3 4 7 2. - 0 - 3.3257868885993958e-001 - -1.2685759924352169e-002 - -8.2546881103515625e+002 - <_> - - <_> - - - - <_> - 11 6 3 2 -1. - <_> - 12 6 1 2 3. - 0 - 9.9063739180564880e-003 - -1.0738559812307358e-001 - 5.0298547744750977e-001 - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 8.3582093939185143e-003 - 1.5422430634498596e-001 - -3.5790690779685974e-001 - <_> - - <_> - - - - <_> - 7 2 4 3 -1. - <_> - 7 3 4 1 3. - 0 - -3.2779511064291000e-002 - 6.4060282707214355e-001 - -1.4030179940164089e-002 - <_> - - <_> - - - - <_> - 6 1 6 3 -1. - <_> - 6 2 6 1 3. - 0 - -2.0835140720009804e-002 - 5.4712289571762085e-001 - -7.4879899621009827e-002 - <_> - - <_> - - - - <_> - 8 1 2 1 -1. - <_> - 8 1 1 1 2. - 0 - -5.1647479267558083e-005 - 1.8039730191230774e-001 - -2.2248619794845581e-001 - <_> - - <_> - - - - <_> - 8 3 4 3 -1. - <_> - 7 4 4 1 3. - 1 - -3.1204670667648315e-002 - 2.9656040668487549e-001 - -1.2957809865474701e-001 - <_> - - <_> - - - - <_> - 12 5 3 2 -1. - <_> - 13 6 1 2 3. - 1 - -1.7422020435333252e-002 - 3.9275988936424255e-001 - -6.5897516906261444e-002 - <_> - - <_> - - - - <_> - 1 5 6 3 -1. - <_> - 3 5 2 3 3. - 0 - -1.2536820024251938e-002 - 2.0158059895038605e-001 - -1.9292819499969482e-001 - <_> - - <_> - - - - <_> - 12 9 2 1 -1. - <_> - 12 9 1 1 2. - 0 - -4.8037480155471712e-005 - 1.2082680314779282e-001 - -1.4217889308929443e-001 - <_> - - <_> - - - - <_> - 4 0 9 12 -1. - <_> - 4 6 9 6 2. - 0 - 6.5716922283172607e-002 - -3.0140811204910278e-001 - 1.0884209722280502e-001 - <_> - - <_> - - - - <_> - 13 10 2 2 -1. - <_> - 14 10 1 1 2. - <_> - 13 11 1 1 2. - 0 - 3.8559301174245775e-005 - -1.1485870182514191e-001 - 1.2233419716358185e-001 - <_> - - <_> - - - - <_> - 3 10 2 2 -1. - <_> - 3 10 1 1 2. - <_> - 4 11 1 1 2. - 0 - 4.6443768951576203e-005 - -1.6948090493679047e-001 - 1.8788060545921326e-001 - <_> - - <_> - - - - <_> - 13 10 2 2 -1. - <_> - 14 10 1 1 2. - <_> - 13 11 1 1 2. - 0 - -4.1368581150891259e-005 - 2.4010670185089111e-001 - -1.4868290722370148e-001 - <_> - - <_> - - - - <_> - 5 6 3 1 -1. - <_> - 6 6 1 1 3. - 0 - -5.4830620065331459e-003 - 6.1856138706207275e-001 - -4.8334259539842606e-002 - <_> - - <_> - - - - <_> - 11 6 3 2 -1. - <_> - 12 6 1 2 3. - 0 - 1.7779540270566940e-002 - -2.6616660878062248e-002 - 4.9245241284370422e-001 - <_> - - <_> - - - - <_> - 0 10 4 2 -1. - <_> - 0 11 4 1 2. - 0 - -4.0962300263345242e-003 - -5.4207402467727661e-001 - 5.9048470109701157e-002 - <_> - - <_> - - - - <_> - 11 6 3 2 -1. - <_> - 12 6 1 2 3. - 0 - -1.6451759263873100e-002 - 7.6350831985473633e-001 - -2.5473199784755707e-002 - <_> - - <_> - - - - <_> - 1 11 16 1 -1. - <_> - 9 11 8 1 2. - 0 - -2.2241640836000443e-002 - -3.6452740430831909e-001 - 8.6116299033164978e-002 - <_> - - <_> - - - - <_> - 11 10 2 1 -1. - <_> - 11 10 1 1 2. - 0 - -2.7459589764475822e-003 - -2.4589340388774872e-001 - 3.3040750771760941e-002 - <_> - - <_> - - - - <_> - 5 10 2 1 -1. - <_> - 6 10 1 1 2. - 0 - -4.0295468352269381e-005 - 2.0092859864234924e-001 - -2.0132540166378021e-001 - <_> - - <_> - - - - <_> - 11 6 3 2 -1. - <_> - 12 6 1 2 3. - 0 - -4.5473738573491573e-003 - 2.1073690056800842e-001 - -4.5514870434999466e-002 - <_> - - <_> - - - - <_> - 4 6 3 2 -1. - <_> - 5 6 1 2 3. - 0 - -3.7957709282636642e-003 - 3.0283540487289429e-001 - -9.5874093472957611e-002 - <_> - - <_> - - - - <_> - 11 4 1 4 -1. - <_> - 10 5 1 2 2. - 1 - -6.6188150085508823e-003 - 7.9740211367607117e-002 - -1.6595689952373505e-001 - <_> - - <_> - - - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - 0 - -4.5857861550757661e-005 - 1.7260129749774933e-001 - -1.6178980469703674e-001 - <_> - - <_> - - - - <_> - 16 3 2 2 -1. - <_> - 17 3 1 1 2. - <_> - 16 4 1 1 2. - 0 - -4.8166970373131335e-005 - 1.4548319578170776e-001 - -1.6439950466156006e-001 - <_> - - <_> - - - - <_> - 8 7 2 3 -1. - <_> - 8 7 1 3 2. - 1 - -5.2052710088901222e-005 - 8.3391591906547546e-002 - -3.4013390541076660e-001 - <_> - - <_> - - - - <_> - 8 1 2 1 -1. - <_> - 8 1 1 1 2. - 0 - 4.5986729674041271e-005 - -1.2061770260334015e-001 - 2.4329949915409088e-001 - <_> - - <_> - - - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - 0 - -4.6646920964121819e-005 - 1.0119310021400452e-001 - -3.0405890941619873e-001 - <_> - - <_> - - - - <_> - 16 3 2 2 -1. - <_> - 17 3 1 1 2. - <_> - 16 4 1 1 2. - 0 - 4.7388079110532999e-005 - -1.1716579645872116e-001 - 2.1742169559001923e-001 - <_> - - <_> - - - - <_> - 0 3 2 2 -1. - <_> - 0 3 1 1 2. - <_> - 1 4 1 1 2. - 0 - -4.6242319513112307e-005 - 1.8022020161151886e-001 - -1.5529049932956696e-001 - -1.6128469705581665e+000 - 13 - -1 - <_> - - - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 1.6110079362988472e-002 - -4.1071599721908569e-001 - 7.7589380741119385e-001 - <_> - - <_> - - - - <_> - 7 3 4 3 -1. - <_> - 7 4 4 1 3. - 0 - -2.5305269286036491e-002 - 6.6618782281875610e-001 - -1.5485580265522003e-001 - <_> - - <_> - - - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - 0 - -2.5699760764837265e-002 - 3.3241620659828186e-001 - -2.3156909644603729e-001 - <_> - - <_> - - - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - 0 - -5.7776989415287971e-003 - 4.1196781396865845e-001 - -1.3117870688438416e-001 - <_> - - <_> - - - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - 0 - 8.1719085574150085e-003 - -6.9755800068378448e-002 - 6.4852428436279297e-001 - <_> - - <_> - - - - <_> - 5 4 8 3 -1. - <_> - 5 5 8 1 3. - 0 - -6.5088421106338501e-002 - 6.1390417814254761e-001 - -5.9815850108861923e-002 - <_> - - <_> - - - - <_> - 1 0 9 10 -1. - <_> - 4 0 3 10 3. - 0 - 1.0464339703321457e-001 - 9.0163193643093109e-002 - -4.5573940873146057e-001 - <_> - - <_> - - - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - 0 - -3.1685851514339447e-002 - 5.5533021688461304e-001 - -6.2855109572410583e-002 - <_> - - <_> - - - - <_> - 5 6 2 1 -1. - <_> - 6 6 1 1 2. - 0 - -8.0294553190469742e-003 - 6.7273747920989990e-001 - -4.3747950345277786e-002 - <_> - - <_> - - - - <_> - 12 0 2 1 -1. - <_> - 12 0 1 1 2. - 0 - 2.4209800176322460e-003 - 4.0785990655422211e-002 - -3.1722348928451538e-001 - <_> - - <_> - - - - <_> - 3 5 4 3 -1. - <_> - 4 5 2 3 2. - 0 - -8.1889061257243156e-003 - 2.6846039295196533e-001 - -1.2580759823322296e-001 - <_> - - <_> - - - - <_> - 8 0 4 3 -1. - <_> - 9 0 2 3 2. - 0 - 9.3489009886980057e-003 - 5.0966899842023849e-002 - -3.9423060417175293e-001 - <_> - - <_> - - - - <_> - 6 0 4 3 -1. - <_> - 7 0 2 3 2. - 0 - 6.9262371398508549e-003 - 6.0307100415229797e-002 - -5.6436121463775635e-001 - <_> - - <_> - - - - <_> - 5 7 8 3 -1. - <_> - 5 8 8 1 3. - 0 - 2.3801159113645554e-002 - -9.9566370248794556e-002 - 3.3963540196418762e-001 - <_> - - <_> - - - - <_> - 1 0 2 1 -1. - <_> - 2 0 1 1 2. - 0 - -4.1956758650485426e-005 - 9.3987770378589630e-002 - -3.0422720313072205e-001 - <_> - - <_> - - - - <_> - 8 4 10 6 -1. - <_> - 13 4 5 3 2. - <_> - 8 7 5 3 2. - 0 - 1.3572919368743896e-001 - 2.9968850314617157e-002 - -4.2673060297966003e-001 - <_> - - <_> - - - - <_> - 4 5 6 2 -1. - <_> - 7 5 3 2 2. - 0 - -2.1524201147258282e-003 - 8.3092503249645233e-002 - -3.2027548551559448e-001 - <_> - - <_> - - - - <_> - 12 7 1 4 -1. - <_> - 12 9 1 2 2. - 0 - -2.2321950644254684e-002 - 3.8670408725738525e-001 - -2.8302310965955257e-003 - <_> - - <_> - - - - <_> - 0 10 2 2 -1. - <_> - 0 11 2 1 2. - 0 - -3.3701520878821611e-003 - -5.4070180654525757e-001 - 4.8329830169677734e-002 - <_> - - <_> - - - - <_> - 17 8 1 4 -1. - <_> - 17 9 1 2 2. - 0 - -2.8812189120799303e-003 - -4.1134339570999146e-001 - 5.0348810851573944e-002 - <_> - - <_> - - - - <_> - 4 1 10 3 -1. - <_> - 4 2 10 1 3. - 0 - 3.3026181161403656e-002 - -9.1724671423435211e-002 - 2.7849179506301880e-001 - <_> - - <_> - - - - <_> - 5 0 8 4 -1. - <_> - 5 1 8 2 2. - 0 - -4.8657391220331192e-002 - 5.2620977163314819e-001 - -4.8676058650016785e-002 - <_> - - <_> - - - - <_> - 0 8 1 4 -1. - <_> - 0 9 1 2 2. - 0 - -3.7647879216820002e-003 - -4.5844191312789917e-001 - 6.4317077398300171e-002 - <_> - - <_> - - - - <_> - 6 0 6 3 -1. - <_> - 6 1 6 1 3. - 0 - 2.0504679530858994e-002 - -9.4328112900257111e-002 - 2.9794049263000488e-001 - <_> - - <_> - - - - <_> - 4 0 2 1 -1. - <_> - 5 0 1 1 2. - 0 - -3.6554280086420476e-005 - 1.2746079266071320e-001 - -1.9186210632324219e-001 - <_> - - <_> - - - - <_> - 13 9 1 2 -1. - <_> - 13 9 1 1 2. - 1 - 9.4470614567399025e-003 - 9.2077916488051414e-003 - -5.2767378091812134e-001 - <_> - - <_> - - - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - 1.6520130448043346e-003 - 5.3146030753850937e-002 - -4.0580609440803528e-001 - <_> - - <_> - - - - <_> - 15 6 3 3 -1. - <_> - 16 7 1 3 3. - 1 - -1.9722340628504753e-002 - 2.8976440429687500e-001 - -5.8757949620485306e-002 - <_> - - <_> - - - - <_> - 3 6 3 3 -1. - <_> - 2 7 3 1 3. - 1 - 1.5641599893569946e-002 - -8.5858047008514404e-002 - 2.7374029159545898e-001 - <_> - - <_> - - - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - -1.2213470414280891e-002 - -1.8302009999752045e-001 - 2.5141900405287743e-002 - <_> - - <_> - - - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - 5.5025829933583736e-003 - 7.0544131100177765e-002 - -3.0967020988464355e-001 - <_> - - <_> - - - - <_> - 10 5 2 4 -1. - <_> - 11 5 1 2 2. - <_> - 10 7 1 2 2. - 0 - -7.9423412680625916e-003 - 3.8959950208663940e-001 - -4.3679900467395782e-002 - <_> - - <_> - - - - <_> - 6 5 2 4 -1. - <_> - 6 5 1 2 2. - <_> - 7 7 1 2 2. - 0 - 8.4905028343200684e-003 - -7.2534352540969849e-002 - 3.3101171255111694e-001 - <_> - - <_> - - - - <_> - 10 6 4 2 -1. - <_> - 11 6 2 2 2. - 0 - -1.4299919828772545e-002 - 5.9872722625732422e-001 - -2.7945769950747490e-002 - <_> - - <_> - - - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - 0 - 6.7005599848926067e-003 - 4.8855118453502655e-002 - -5.2919381856918335e-001 - <_> - - <_> - - - - <_> - 15 6 3 3 -1. - <_> - 16 6 1 3 3. - 0 - 3.9664511568844318e-003 - -4.3123081326484680e-002 - 1.0984309762716293e-001 - <_> - - <_> - - - - <_> - 0 6 3 3 -1. - <_> - 1 6 1 3 3. - 0 - -7.5540919788181782e-003 - 3.0421760678291321e-001 - -7.2253189980983734e-002 - <_> - - <_> - - - - <_> - 8 11 3 1 -1. - <_> - 9 11 1 1 3. - 0 - -3.7034100387245417e-003 - -5.4518002271652222e-001 - 3.5437230020761490e-002 - <_> - - <_> - - - - <_> - 7 11 3 1 -1. - <_> - 8 11 1 1 3. - 0 - -2.5188990402966738e-003 - -4.5737591385841370e-001 - 5.5983148515224457e-002 - <_> - - <_> - - - - <_> - 8 4 10 6 -1. - <_> - 13 4 5 3 2. - <_> - 8 7 5 3 2. - 0 - 2.0579920709133148e-001 - -2.7724468964152038e-004 - -6.6996318101882935e-001 - <_> - - <_> - - - - <_> - 4 8 10 3 -1. - <_> - 4 9 10 1 3. - 0 - 2.9303770512342453e-002 - -5.6496240198612213e-002 - 3.5997670888900757e-001 - <_> - - <_> - - - - <_> - 8 4 10 6 -1. - <_> - 13 4 5 3 2. - <_> - 8 7 5 3 2. - 0 - 6.9648310542106628e-002 - 3.1737551093101501e-002 - -6.8570420145988464e-002 - <_> - - <_> - - - - <_> - 1 11 16 1 -1. - <_> - 9 11 8 1 2. - 0 - -4.2670730501413345e-002 - -5.1828289031982422e-001 - 3.7313610315322876e-002 - <_> - - <_> - - - - <_> - 14 5 4 4 -1. - <_> - 14 7 4 2 2. - 0 - 5.3184129297733307e-002 - -3.8423359394073486e-002 - 1.3666149973869324e-001 - <_> - - <_> - - - - <_> - 0 2 18 10 -1. - <_> - 0 2 9 5 2. - <_> - 9 7 9 5 2. - 0 - 3.1404110789299011e-001 - 3.7239000201225281e-002 - -6.1689531803131104e-001 - <_> - - <_> - - - - <_> - 3 5 12 3 -1. - <_> - 6 5 6 3 2. - 0 - -1.1121670156717300e-001 - -3.4866338968276978e-001 - 5.0600431859493256e-002 - <_> - - <_> - - - - <_> - 9 3 4 1 -1. - <_> - 10 4 2 1 2. - 1 - -1.2414909899234772e-002 - 1.6056859493255615e-001 - -1.3499259948730469e-001 - <_> - - <_> - - - - <_> - 10 4 3 4 -1. - <_> - 11 4 1 4 3. - 0 - -1.0976280085742474e-002 - 4.0659919381141663e-001 - -7.1035951375961304e-002 - <_> - - <_> - - - - <_> - 5 4 3 4 -1. - <_> - 6 4 1 4 3. - 0 - -1.0068650357425213e-002 - 3.9899739623069763e-001 - -4.7854758799076080e-002 - <_> - - <_> - - - - <_> - 12 10 2 1 -1. - <_> - 12 10 1 1 2. - 0 - -4.4595100916922092e-005 - 1.2453170120716095e-001 - -1.5943150222301483e-001 - <_> - - <_> - - - - <_> - 0 3 2 3 -1. - <_> - 0 4 2 1 3. - 0 - 5.2231438457965851e-003 - 5.1684871315956116e-002 - -3.7264791131019592e-001 - <_> - - <_> - - - - <_> - 9 0 9 6 -1. - <_> - 9 3 9 3 2. - 0 - -3.1584289669990540e-001 - -5.6410568952560425e-001 - 1.6620539128780365e-002 - <_> - - <_> - - - - <_> - 8 8 2 2 -1. - <_> - 8 8 1 2 2. - 1 - -4.9251379095949233e-005 - 6.4569346606731415e-002 - -2.6977449655532837e-001 - <_> - - <_> - - - - <_> - 11 8 2 2 -1. - <_> - 11 8 2 1 2. - 1 - -1.5871439129114151e-002 - -1.0536020249128342e-001 - 2.2641019895672798e-002 - <_> - - <_> - - - - <_> - 4 0 4 3 -1. - <_> - 4 1 4 1 3. - 0 - -1.4802659861743450e-002 - 3.0771070718765259e-001 - -5.6442748755216599e-002 - <_> - - <_> - - - - <_> - 11 8 2 2 -1. - <_> - 11 8 2 1 2. - 1 - 6.2432001868728548e-005 - -1.3522149994969368e-002 - 6.4676657319068909e-002 - <_> - - <_> - - - - <_> - 0 3 1 2 -1. - <_> - 0 4 1 1 2. - 0 - -3.6458349786698818e-003 - -3.7946069240570068e-001 - 4.3726790696382523e-002 - <_> - - <_> - - - - <_> - 12 2 4 6 -1. - <_> - 10 4 4 2 3. - 1 - -1.2038329988718033e-001 - 8.3884507417678833e-002 - -5.7846531271934509e-002 - <_> - - <_> - - - - <_> - 6 2 6 4 -1. - <_> - 8 4 2 4 3. - 1 - -1.5285080671310425e-001 - -4.1195228695869446e-001 - 4.1427899152040482e-002 - <_> - - <_> - - - - <_> - 9 4 3 4 -1. - <_> - 10 4 1 4 3. - 0 - -2.4037640541791916e-002 - 3.6811178922653198e-001 - -2.8063010424375534e-002 - <_> - - <_> - - - - <_> - 0 9 4 2 -1. - <_> - 0 10 4 1 2. - 0 - -5.0715710967779160e-003 - -4.3527451157569885e-001 - 3.7839580327272415e-002 - <_> - - <_> - - - - <_> - 14 11 2 1 -1. - <_> - 14 11 1 1 2. - 0 - 2.2647699806839228e-003 - 3.3513750880956650e-002 - -3.1196358799934387e-001 - <_> - - <_> - - - - <_> - 2 11 2 1 -1. - <_> - 3 11 1 1 2. - 0 - 2.8620659577427432e-005 - -1.2641629576683044e-001 - 1.4573280513286591e-001 - <_> - - <_> - - - - <_> - 14 3 4 6 -1. - <_> - 14 5 4 2 3. - 0 - -1.5032389760017395e-001 - -5.1674288511276245e-001 - 6.3420650549232960e-003 - <_> - - <_> - - - - <_> - 0 3 4 6 -1. - <_> - 0 5 4 2 3. - 0 - -1.0515840258449316e-003 - 7.3436759412288666e-002 - -2.2326730191707611e-001 - <_> - - <_> - - - - <_> - 9 5 3 3 -1. - <_> - 10 5 1 3 3. - 0 - -6.2594460323452950e-003 - 1.0833080112934113e-001 - -4.8997879028320313e-002 - <_> - - <_> - - - - <_> - 0 0 14 2 -1. - <_> - 0 0 7 1 2. - <_> - 7 1 7 1 2. - 0 - -1.9374769181013107e-002 - 2.9532751441001892e-001 - -5.0250150263309479e-002 - <_> - - <_> - - - - <_> - 9 2 2 1 -1. - <_> - 9 2 1 1 2. - 0 - -4.1956758650485426e-005 - 8.0195806920528412e-002 - -1.0686949640512466e-001 - <_> - - <_> - - - - <_> - 7 5 3 1 -1. - <_> - 8 6 1 1 3. - 1 - -3.4468329977244139e-003 - 1.2324280291795731e-001 - -1.1800339818000793e-001 - <_> - - <_> - - - - <_> - 10 6 4 2 -1. - <_> - 11 6 2 2 2. - 0 - 2.0574549213051796e-002 - -2.3928789421916008e-002 - 2.7955460548400879e-001 - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 1.6083529219031334e-002 - 6.2995746731758118e-002 - -3.2501700520515442e-001 - <_> - - <_> - - - - <_> - 3 0 12 9 -1. - <_> - 6 0 6 9 2. - 0 - -1.5888260304927826e-001 - -1.9509589672088623e-001 - 8.4130212664604187e-002 - <_> - - <_> - - - - <_> - 6 5 3 3 -1. - <_> - 7 5 1 3 3. - 0 - -1.0786239989101887e-002 - 3.0075341463088989e-001 - -5.3811751306056976e-002 - <_> - - <_> - - - - <_> - 16 7 2 5 -1. - <_> - 16 7 1 5 2. - 0 - -5.0971349992323667e-005 - 1.0555840283632278e-001 - -1.8500010669231415e-001 - <_> - - <_> - - - - <_> - 5 1 3 4 -1. - <_> - 5 1 3 2 2. - 1 - 2.0255280658602715e-002 - 5.4217409342527390e-002 - -2.6162931323051453e-001 - <_> - - <_> - - - - <_> - 11 2 1 4 -1. - <_> - 11 2 1 2 2. - 1 - 4.5595720410346985e-002 - -2.1169850602746010e-002 - 1.7655989527702332e-001 - <_> - - <_> - - - - <_> - 7 2 4 1 -1. - <_> - 7 2 2 1 2. - 1 - -1.4993960503488779e-003 - -2.4702130258083344e-001 - 6.4111799001693726e-002 - <_> - - <_> - - - - <_> - 4 1 10 4 -1. - <_> - 4 2 10 2 2. - 0 - -5.1197629421949387e-002 - 3.8098621368408203e-001 - -4.3534200638532639e-002 - <_> - - <_> - - - - <_> - 0 7 2 5 -1. - <_> - 1 7 1 5 2. - 0 - -1.2308140285313129e-002 - 2.2999510169029236e-001 - -6.8426601588726044e-002 - <_> - - <_> - - - - <_> - 12 8 2 2 -1. - <_> - 12 8 2 1 2. - 1 - 2.3125670850276947e-002 - 7.3915729299187660e-003 - -8.1511551141738892e-001 - <_> - - <_> - - - - <_> - 6 8 2 2 -1. - <_> - 6 8 1 2 2. - 1 - -1.0254840366542339e-002 - -2.0483459532260895e-001 - 7.4748978018760681e-002 - <_> - - <_> - - - - <_> - 15 6 3 5 -1. - <_> - 16 6 1 5 3. - 0 - 1.6489239409565926e-002 - -1.0638999752700329e-002 - 1.5904539823532104e-001 - <_> - - <_> - - - - <_> - 1 10 2 2 -1. - <_> - 1 10 1 1 2. - <_> - 2 11 1 1 2. - 0 - 4.6443768951576203e-005 - -1.2445150315761566e-001 - 1.2339290231466293e-001 - <_> - - <_> - - - - <_> - 11 5 2 2 -1. - <_> - 12 5 1 1 2. - <_> - 11 6 1 1 2. - 0 - -3.6345820408314466e-003 - 3.3572021126747131e-001 - -5.3786080330610275e-002 - <_> - - <_> - - - - <_> - 5 11 4 1 -1. - <_> - 6 11 2 1 2. - 0 - -4.2814682237803936e-003 - -4.0974819660186768e-001 - 3.8746099919080734e-002 - <_> - - <_> - - - - <_> - 11 5 2 2 -1. - <_> - 12 5 1 1 2. - <_> - 11 6 1 1 2. - 0 - 2.5832538958638906e-003 - -7.4852287769317627e-002 - 3.2739511132240295e-001 - <_> - - <_> - - - - <_> - 0 3 2 1 -1. - <_> - 1 3 1 1 2. - 0 - -1.4718719467055053e-004 - 6.8306617438793182e-002 - -2.0809960365295410e-001 - -1.6440550088882446e+000 - 14 - -1 - <_> - - - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 1.9498139619827271e-002 - -3.3759370446205139e-001 - 6.7766612768173218e-001 - <_> - - <_> - - - - <_> - 7 3 4 3 -1. - <_> - 7 4 4 1 3. - 0 - -3.4336470067501068e-002 - 6.9824808835983276e-001 - -1.3596299290657043e-001 - <_> - - <_> - - - - <_> - 4 0 3 2 -1. - <_> - 4 0 3 1 2. - 1 - 9.7922142595052719e-003 - 8.3390571177005768e-002 - -4.1553869843482971e-001 - <_> - - <_> - - - - <_> - 10 2 1 6 -1. - <_> - 8 4 1 2 3. - 1 - -6.3095659017562866e-002 - 1.7525289952754974e-001 - -3.5272590816020966e-002 - <_> - - <_> - - - - <_> - 8 2 6 1 -1. - <_> - 10 4 2 1 3. - 1 - -3.7893280386924744e-002 - 1.7454449832439423e-001 - -2.0477719604969025e-001 - <_> - - <_> - - - - <_> - 7 0 6 4 -1. - <_> - 9 0 2 4 3. - 0 - 2.9307829216122627e-002 - 4.0337048470973969e-002 - -4.0458971261978149e-001 - <_> - - <_> - - - - <_> - 4 0 6 4 -1. - <_> - 6 0 2 4 3. - 0 - 3.3006248995661736e-003 - 1.0832270234823227e-001 - -3.8293439149856567e-001 - <_> - - <_> - - - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - 0 - -6.9221840240061283e-003 - 3.0836719274520874e-001 - -5.3221769630908966e-002 - <_> - - <_> - - - - <_> - 4 0 3 4 -1. - <_> - 3 1 3 2 2. - 1 - 1.2095970101654530e-002 - 6.8258158862590790e-002 - -4.5494788885116577e-001 - <_> - - <_> - - - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - 0 - 7.8306095674633980e-003 - -3.9104040712118149e-002 - 5.2432292699813843e-001 - <_> - - <_> - - - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - 0 - 1.1000329628586769e-002 - -4.8125259578227997e-002 - 5.9042930603027344e-001 - <_> - - <_> - - - - <_> - 9 9 4 3 -1. - <_> - 10 9 2 3 2. - 0 - 5.3003318607807159e-003 - 7.7072180807590485e-002 - -4.6984028816223145e-001 - <_> - - <_> - - - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - 0 - -4.0341410785913467e-002 - 5.3887742757797241e-001 - -4.8817768692970276e-002 - <_> - - <_> - - - - <_> - 16 1 2 1 -1. - <_> - 16 1 1 1 2. - 0 - 4.5519209379563108e-005 - -4.8769790679216385e-002 - 6.1085790395736694e-002 - <_> - - <_> - - - - <_> - 0 1 2 1 -1. - <_> - 1 1 1 1 2. - 0 - -3.5766988730756566e-005 - 8.8775523006916046e-002 - -3.1009709835052490e-001 - <_> - - <_> - - - - <_> - 9 3 3 4 -1. - <_> - 10 4 1 4 3. - 1 - -1.2121529877185822e-001 - -8.7199020385742188e-001 - 1.9037359743379056e-004 - <_> - - <_> - - - - <_> - 9 3 4 3 -1. - <_> - 8 4 4 1 3. - 1 - -2.0810520276427269e-002 - 1.2869510054588318e-001 - -2.2694960236549377e-001 - <_> - - <_> - - - - <_> - 9 9 4 3 -1. - <_> - 10 9 2 3 2. - 0 - -7.5748898088932037e-003 - -5.6044650077819824e-001 - 6.8818382918834686e-002 - <_> - - <_> - - - - <_> - 2 0 6 5 -1. - <_> - 4 0 2 5 3. - 0 - 2.2772360593080521e-002 - 4.9116428941488266e-002 - -4.5276260375976563e-001 - <_> - - <_> - - - - <_> - 15 3 3 6 -1. - <_> - 16 4 1 6 3. - 1 - -3.1300768256187439e-002 - 2.4237060546875000e-001 - -6.5867289900779724e-002 - <_> - - <_> - - - - <_> - 6 0 3 4 -1. - <_> - 5 1 3 2 2. - 1 - -3.4844119101762772e-002 - -4.4477778673171997e-001 - 5.1829639822244644e-002 - <_> - - <_> - - - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - 0 - 3.5052769817411900e-005 - -4.2088508605957031e-002 - 4.7609008848667145e-002 - <_> - - <_> - - - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - 0 - 1.5844260342419147e-003 - 5.6480269879102707e-002 - -4.1779080033302307e-001 - <_> - - <_> - - - - <_> - 6 0 6 3 -1. - <_> - 6 1 6 1 3. - 0 - 2.6414310559630394e-002 - -7.2216093540191650e-002 - 3.0886408686637878e-001 - <_> - - <_> - - - - <_> - 6 0 6 3 -1. - <_> - 6 1 6 1 3. - 0 - -2.4469729512929916e-002 - 3.4676471352577209e-001 - -6.7458316683769226e-002 - <_> - - <_> - - - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - 0 - 5.6515377946197987e-003 - 6.4198330044746399e-002 - -3.5227119922637939e-001 - <_> - - <_> - - - - <_> - 0 8 8 4 -1. - <_> - 0 9 8 2 2. - 0 - 1.9363719969987869e-002 - 5.6742910295724869e-002 - -3.4612348675727844e-001 - <_> - - <_> - - - - <_> - 11 6 3 1 -1. - <_> - 12 7 1 1 3. - 1 - 2.0357580855488777e-002 - -4.8724349588155746e-002 - 3.8238760828971863e-001 - <_> - - <_> - - - - <_> - 7 6 1 3 -1. - <_> - 6 7 1 1 3. - 1 - -5.1647052168846130e-003 - 2.1022629737854004e-001 - -1.0693299770355225e-001 - <_> - - <_> - - - - <_> - 6 5 7 6 -1. - <_> - 6 8 7 3 2. - 0 - 1.4845539815723896e-002 - -6.1529231071472168e-001 - 3.5300489515066147e-002 - <_> - - <_> - - - - <_> - 6 9 2 1 -1. - <_> - 6 9 1 1 2. - 1 - -8.6702024564146996e-003 - -4.0551638603210449e-001 - 4.2726211249828339e-002 - <_> - - <_> - - - - <_> - 15 2 3 1 -1. - <_> - 16 3 1 1 3. - 1 - -1.4502460137009621e-002 - -4.2973139882087708e-001 - 2.6243820786476135e-002 - <_> - - <_> - - - - <_> - 3 2 1 3 -1. - <_> - 2 3 1 1 3. - 1 - 3.6778231151401997e-003 - 6.6653557121753693e-002 - -2.8710830211639404e-001 - <_> - - <_> - - - - <_> - 16 0 2 10 -1. - <_> - 16 0 2 5 2. - 1 - 1.3134600222110748e-001 - 1.4174330048263073e-002 - -1.5358589589595795e-001 - <_> - - <_> - - - - <_> - 2 0 10 2 -1. - <_> - 2 0 5 2 2. - 1 - -1.3666020333766937e-001 - -4.2397919297218323e-001 - 5.0294190645217896e-002 - <_> - - <_> - - - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - 7.2551309131085873e-003 - 8.2462644204497337e-003 - -3.2001951336860657e-001 - <_> - - <_> - - - - <_> - 5 5 3 2 -1. - <_> - 6 5 1 2 3. - 0 - -1.3511019758880138e-002 - 5.0302737951278687e-001 - -3.4302528947591782e-002 - <_> - - <_> - - - - <_> - 11 6 2 2 -1. - <_> - 11 6 1 2 2. - 0 - -1.3929050415754318e-002 - 4.3465730547904968e-001 - -4.2992260307073593e-002 - <_> - - <_> - - - - <_> - 2 4 12 3 -1. - <_> - 5 4 6 3 2. - 0 - -1.2819659709930420e-001 - -4.8288840055465698e-001 - 4.2751569300889969e-002 - <_> - - <_> - - - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - -1.6732519492506981e-002 - -4.3209370970726013e-001 - 3.1982630025595427e-003 - <_> - - <_> - - - - <_> - 6 9 2 1 -1. - <_> - 6 9 1 1 2. - 1 - 2.0149480551481247e-003 - 4.4975060969591141e-002 - -3.9710980653762817e-001 - <_> - - <_> - - - - <_> - 4 0 14 2 -1. - <_> - 11 0 7 1 2. - <_> - 4 1 7 1 2. - 0 - 8.7468000128865242e-003 - -4.2383570224046707e-002 - 9.5026336610317230e-002 - <_> - - <_> - - - - <_> - 0 0 14 2 -1. - <_> - 0 0 7 1 2. - <_> - 7 1 7 1 2. - 0 - 2.3763459175825119e-002 - -7.2902612388134003e-002 - 2.4120329320430756e-001 - <_> - - <_> - - - - <_> - 12 0 6 4 -1. - <_> - 15 0 3 2 2. - <_> - 12 2 3 2 2. - 0 - -1.5337429940700531e-002 - 1.2962980568408966e-001 - -5.8821711689233780e-002 - <_> - - <_> - - - - <_> - 4 0 4 3 -1. - <_> - 5 0 2 3 2. - 0 - -1.1038820259273052e-002 - -3.9287769794464111e-001 - 4.2961981147527695e-002 - <_> - - <_> - - - - <_> - 0 1 18 6 -1. - <_> - 0 4 18 3 2. - 0 - -4.6639290452003479e-001 - -5.7689660787582397e-001 - 2.6615839451551437e-002 - <_> - - <_> - - - - <_> - 3 4 12 2 -1. - <_> - 3 5 12 1 2. - 0 - -4.5179851353168488e-002 - 2.5730028748512268e-001 - -6.9095030426979065e-002 - <_> - - <_> - - - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - 0 - -6.9027519784867764e-003 - -4.2040190100669861e-001 - 4.1919898241758347e-002 - <_> - - <_> - - - - <_> - 1 2 12 3 -1. - <_> - 5 2 4 3 3. - 0 - -4.3509289622306824e-002 - 1.1465229839086533e-001 - -1.5128579735755920e-001 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - 4.9952589906752110e-003 - -2.7340779080986977e-002 - 2.4642029404640198e-001 - <_> - - <_> - - - - <_> - 0 3 1 4 -1. - <_> - 0 4 1 2 2. - 0 - 3.4534540027379990e-003 - 4.9953348934650421e-002 - -3.1069651246070862e-001 - <_> - - <_> - - - - <_> - 11 5 2 3 -1. - <_> - 11 5 1 3 2. - 0 - 1.2536670081317425e-002 - -1.5751969069242477e-002 - 2.3830600082874298e-001 - <_> - - <_> - - - - <_> - 5 5 2 6 -1. - <_> - 5 5 1 3 2. - <_> - 6 8 1 3 2. - 0 - -4.6358969993889332e-003 - 1.9324310123920441e-001 - -8.0604627728462219e-002 - <_> - - <_> - - - - <_> - 14 3 4 4 -1. - <_> - 14 4 4 2 2. - 0 - -4.2210690677165985e-002 - -3.9498311281204224e-001 - 1.5114610083401203e-002 - <_> - - <_> - - - - <_> - 5 4 3 2 -1. - <_> - 6 5 1 2 3. - 1 - 1.7369300127029419e-002 - -4.9444381147623062e-002 - 3.1055888533592224e-001 - <_> - - <_> - - - - <_> - 14 3 4 4 -1. - <_> - 14 4 4 2 2. - 0 - 2.8287919703871012e-003 - -3.8280609995126724e-002 - 8.8243007659912109e-002 - <_> - - <_> - - - - <_> - 0 3 4 4 -1. - <_> - 0 4 4 2 2. - 0 - -2.8313150629401207e-002 - -5.6536638736724854e-001 - 2.8949340805411339e-002 - <_> - - <_> - - - - <_> - 13 4 4 4 -1. - <_> - 13 4 4 2 2. - 1 - -2.2647269070148468e-002 - 5.6739021092653275e-002 - -1.2499769777059555e-001 - <_> - - <_> - - - - <_> - 6 10 4 2 -1. - <_> - 7 10 2 2 2. - 0 - -8.6736697703599930e-003 - -6.2506991624832153e-001 - 2.3742560297250748e-002 - <_> - - <_> - - - - <_> - 12 3 3 6 -1. - <_> - 13 3 1 6 3. - 0 - 2.8303779661655426e-002 - -2.7384009212255478e-002 - 3.2746648788452148e-001 - <_> - - <_> - - - - <_> - 3 3 3 6 -1. - <_> - 4 3 1 6 3. - 0 - -2.3424259852617979e-003 - 1.0716210305690765e-001 - -1.4106050133705139e-001 - <_> - - <_> - - - - <_> - 11 3 6 6 -1. - <_> - 13 5 2 2 9. - 0 - -1.0879710316658020e-001 - 1.4286050200462341e-001 - -1.0067559778690338e-001 - <_> - - <_> - - - - <_> - 1 3 6 6 -1. - <_> - 3 5 2 2 9. - 0 - -2.3998910188674927e-001 - -7.2609817981719971e-001 - 2.1252749487757683e-002 - <_> - - <_> - - - - <_> - 5 9 8 3 -1. - <_> - 5 10 8 1 3. - 0 - -1.0510819964110851e-002 - 2.0192959904670715e-001 - -7.1475587785243988e-002 - <_> - - <_> - - - - <_> - 0 8 2 2 -1. - <_> - 0 9 2 1 2. - 0 - -2.9618060216307640e-003 - -3.3826011419296265e-001 - 4.2012460529804230e-002 - <_> - - <_> - - - - <_> - 16 7 2 3 -1. - <_> - 16 7 1 3 2. - 1 - 6.5366048365831375e-003 - 2.1016959100961685e-002 - -3.3604449033737183e-001 - <_> - - <_> - - - - <_> - 2 7 3 2 -1. - <_> - 2 7 3 1 2. - 1 - 1.5359099954366684e-002 - -3.9575159549713135e-002 - 4.1411620378494263e-001 - <_> - - <_> - - - - <_> - 16 1 2 8 -1. - <_> - 17 1 1 4 2. - <_> - 16 5 1 4 2. - 0 - -5.9200981631875038e-003 - 1.0086079686880112e-001 - -6.0626558959484100e-002 - <_> - - <_> - - - - <_> - 0 1 2 8 -1. - <_> - 0 1 1 4 2. - <_> - 1 5 1 4 2. - 0 - -6.7361057735979557e-003 - 2.1334829926490784e-001 - -6.8882316350936890e-002 - <_> - - <_> - - - - <_> - 13 0 4 5 -1. - <_> - 14 0 2 5 2. - 0 - 6.4818300306797028e-003 - 6.3638597726821899e-002 - -1.9560219347476959e-001 - <_> - - <_> - - - - <_> - 1 0 4 5 -1. - <_> - 2 0 2 5 2. - 0 - 7.0354170165956020e-003 - 5.4166000336408615e-002 - -2.7890819311141968e-001 - <_> - - <_> - - - - <_> - 0 6 18 6 -1. - <_> - 9 6 9 3 2. - <_> - 0 9 9 3 2. - 0 - -1.7828759551048279e-001 - -3.7294510006904602e-001 - 3.6584310233592987e-002 - <_> - - <_> - - - - <_> - 0 5 7 6 -1. - <_> - 0 7 7 2 3. - 0 - -7.8773088753223419e-002 - -3.6562091112136841e-001 - 3.5259820520877838e-002 - <_> - - <_> - - - - <_> - 5 1 8 3 -1. - <_> - 5 2 8 1 3. - 0 - -3.4936249256134033e-002 - 3.4944280982017517e-001 - -4.2130310088396072e-002 - <_> - - <_> - - - - <_> - 3 1 11 3 -1. - <_> - 3 2 11 1 3. - 0 - 5.1275938749313354e-002 - -4.9116469919681549e-002 - 3.2908609509468079e-001 - <_> - - <_> - - - - <_> - 14 9 1 2 -1. - <_> - 14 9 1 1 2. - 1 - 8.3894617855548859e-003 - 1.0704530403017998e-002 - -4.0773379802703857e-001 - <_> - - <_> - - - - <_> - 4 9 2 1 -1. - <_> - 4 9 1 1 2. - 1 - 3.8752930704504251e-003 - 3.0874349176883698e-002 - -4.2981019616127014e-001 - <_> - - <_> - - - - <_> - 6 4 6 6 -1. - <_> - 8 4 2 6 3. - 0 - -2.8959279879927635e-002 - 9.8091676831245422e-002 - -1.3165040314197540e-001 - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 1.9355230033397675e-002 - 4.9088131636381149e-002 - -2.8296470642089844e-001 - <_> - - <_> - - - - <_> - 10 5 2 2 -1. - <_> - 11 5 1 1 2. - <_> - 10 6 1 1 2. - 0 - 2.4605318903923035e-003 - -4.4935218989849091e-002 - 2.1187350153923035e-001 - <_> - - <_> - - - - <_> - 6 5 2 2 -1. - <_> - 6 5 1 1 2. - <_> - 7 6 1 1 2. - 0 - -4.3705930002033710e-003 - 2.9035219550132751e-001 - -4.9733299762010574e-002 - <_> - - <_> - - - - <_> - 16 0 2 3 -1. - <_> - 16 1 2 1 3. - 0 - 8.8900327682495117e-003 - 2.7575170621275902e-002 - -2.5662681460380554e-001 - <_> - - <_> - - - - <_> - 0 0 2 3 -1. - <_> - 0 1 2 1 3. - 0 - -1.1210380122065544e-002 - -4.5494940876960754e-001 - 2.8127580881118774e-002 - <_> - - <_> - - - - <_> - 7 8 4 3 -1. - <_> - 7 9 4 1 3. - 0 - -1.0722589679062366e-002 - 2.5290718674659729e-001 - -5.1751948893070221e-002 - <_> - - <_> - - - - <_> - 9 2 6 2 -1. - <_> - 11 4 2 2 3. - 1 - -5.4759901016950607e-002 - 9.5928423106670380e-002 - -1.3142620027065277e-001 - <_> - - <_> - - - - <_> - 17 7 1 2 -1. - <_> - 17 8 1 1 2. - 0 - -1.4724220382049680e-003 - -3.2331600785255432e-001 - 3.6647390574216843e-002 - <_> - - <_> - - - - <_> - 7 0 2 3 -1. - <_> - 6 1 2 1 3. - 1 - 1.2189580127596855e-002 - 4.0190368890762329e-002 - -2.7344599366188049e-001 - <_> - - <_> - - - - <_> - 10 4 3 3 -1. - <_> - 11 5 1 3 3. - 1 - -9.5241647213697433e-003 - 2.8725100681185722e-002 - -5.1296249032020569e-002 - <_> - - <_> - - - - <_> - 8 4 3 3 -1. - <_> - 7 5 3 1 3. - 1 - -2.9368860647082329e-002 - 2.6298341155052185e-001 - -4.5174758881330490e-002 - <_> - - <_> - - - - <_> - 8 4 4 8 -1. - <_> - 8 6 4 4 2. - 0 - -1.6835989430546761e-002 - -7.7370226383209229e-002 - 8.7621882557868958e-002 - <_> - - <_> - - - - <_> - 9 5 6 1 -1. - <_> - 11 7 2 1 3. - 1 - 4.8315960913896561e-002 - 2.8099019080400467e-002 - -4.4539469480514526e-001 - <_> - - <_> - - - - <_> - 10 5 2 4 -1. - <_> - 11 5 1 2 2. - <_> - 10 7 1 2 2. - 0 - -1.7475409433245659e-002 - 3.2665181159973145e-001 - -7.0993858389556408e-003 - <_> - - <_> - - - - <_> - 6 5 2 4 -1. - <_> - 6 5 1 2 2. - <_> - 7 7 1 2 2. - 0 - 1.1099129915237427e-002 - -4.1876319795846939e-002 - 2.9490828514099121e-001 - <_> - - <_> - - - - <_> - 9 11 2 1 -1. - <_> - 9 11 1 1 2. - 0 - 2.3201128933578730e-003 - 2.8871670365333557e-002 - -3.9258959889411926e-001 - <_> - - <_> - - - - <_> - 6 11 6 1 -1. - <_> - 8 11 2 1 3. - 0 - -1.0768280364573002e-002 - -4.6519058942794800e-001 - 2.4949219077825546e-002 - <_> - - <_> - - - - <_> - 0 0 18 2 -1. - <_> - 6 0 6 2 3. - 0 - -7.2821088135242462e-002 - 1.3412840664386749e-001 - -9.3141697347164154e-002 - <_> - - <_> - - - - <_> - 2 0 10 1 -1. - <_> - 7 0 5 1 2. - 0 - 1.7050189897418022e-002 - -6.0329660773277283e-002 - 2.1904440224170685e-001 - <_> - - <_> - - - - <_> - 2 0 14 3 -1. - <_> - 2 0 7 3 2. - 0 - -1.8992629647254944e-001 - -5.1518648862838745e-001 - 2.1408829838037491e-002 - <_> - - <_> - - - - <_> - 3 5 4 3 -1. - <_> - 2 6 4 1 3. - 1 - -1.7060669139027596e-002 - 1.9582070410251617e-001 - -5.6239139288663864e-002 - <_> - - <_> - - - - <_> - 13 9 5 3 -1. - <_> - 13 10 5 1 3. - 0 - -1.4951139688491821e-002 - -3.6664319038391113e-001 - 2.4565050378441811e-002 - <_> - - <_> - - - - <_> - 0 6 4 3 -1. - <_> - 1 6 2 3 2. - 0 - 9.6735544502735138e-003 - -5.2386801689863205e-002 - 2.1741649508476257e-001 - <_> - - <_> - - - - <_> - 12 2 3 2 -1. - <_> - 13 3 1 2 3. - 1 - -1.7105480656027794e-002 - 7.0179320871829987e-002 - -2.0144950598478317e-002 - <_> - - <_> - - - - <_> - 6 2 2 3 -1. - <_> - 5 3 2 1 3. - 1 - 7.2467918507754803e-003 - 5.2429918199777603e-002 - -2.1052859723567963e-001 - <_> - - <_> - - - - <_> - 13 0 4 3 -1. - <_> - 12 1 4 1 3. - 1 - -3.1322270631790161e-002 - 3.1517499685287476e-001 - -4.4390950351953506e-002 - <_> - - <_> - - - - <_> - 3 5 10 6 -1. - <_> - 3 8 10 3 2. - 0 - -5.6205280125141144e-002 - -8.7249839305877686e-001 - 1.2938500382006168e-002 - <_> - - <_> - - - - <_> - 13 0 4 3 -1. - <_> - 12 1 4 1 3. - 1 - 3.2938860356807709e-002 - -4.3342970311641693e-002 - 2.4175900220870972e-001 - <_> - - <_> - - - - <_> - 4 3 10 4 -1. - <_> - 4 4 10 2 2. - 0 - 2.2955680266022682e-002 - -4.1244581341743469e-002 - 2.6797288656234741e-001 - <_> - - <_> - - - - <_> - 16 7 2 5 -1. - <_> - 16 7 1 5 2. - 0 - -4.0403520688414574e-003 - 1.1751759797334671e-001 - -8.8851161301136017e-002 - <_> - - <_> - - - - <_> - 6 3 2 4 -1. - <_> - 6 4 2 2 2. - 0 - -7.3366537690162659e-003 - 1.1126759648323059e-001 - -1.0500030219554901e-001 - <_> - - <_> - - - - <_> - 14 2 4 2 -1. - <_> - 14 2 2 2 2. - 0 - -3.7868309766054153e-002 - -3.6040359735488892e-001 - 4.1551068425178528e-003 - <_> - - <_> - - - - <_> - 0 2 4 2 -1. - <_> - 2 2 2 2 2. - 0 - -4.6715070493519306e-003 - 7.4014060199260712e-002 - -1.6199620068073273e-001 - <_> - - <_> - - - - <_> - 15 3 3 4 -1. - <_> - 16 4 1 4 3. - 1 - 4.7153029590845108e-002 - -1.6626819968223572e-002 - 3.0439698696136475e-001 - <_> - - <_> - - - - <_> - 3 3 4 3 -1. - <_> - 2 4 4 1 3. - 1 - -5.7896347716450691e-003 - 1.0218390077352524e-001 - -1.0985810309648514e-001 - <_> - - <_> - - - - <_> - 15 6 2 4 -1. - <_> - 15 6 1 4 2. - 1 - -5.8129139244556427e-002 - 2.4536029994487762e-001 - -1.0435160249471664e-002 - <_> - - <_> - - - - <_> - 3 6 4 2 -1. - <_> - 3 6 4 1 2. - 1 - 1.8205940723419189e-002 - -2.8424680233001709e-002 - 4.3812799453735352e-001 - <_> - - <_> - - - - <_> - 13 9 5 3 -1. - <_> - 13 10 5 1 3. - 0 - 1.1710450053215027e-002 - 4.2386539280414581e-002 - -2.1680490672588348e-001 - <_> - - <_> - - - - <_> - 0 9 5 3 -1. - <_> - 0 10 5 1 3. - 0 - -1.9464310258626938e-002 - -5.8676087856292725e-001 - 1.9311159849166870e-002 - <_> - - <_> - - - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - 0 - -2.5619969237595797e-003 - -2.4047499895095825e-001 - 2.5458659976720810e-002 - <_> - - <_> - - - - <_> - 3 0 4 3 -1. - <_> - 4 1 2 3 2. - 1 - 6.4271733164787292e-002 - -1.6712099313735962e-002 - 7.0072662830352783e-001 - <_> - - <_> - - - - <_> - 17 2 1 3 -1. - <_> - 17 3 1 1 3. - 0 - 3.4974149893969297e-003 - 4.0429990738630295e-002 - -1.9398880004882813e-001 - <_> - - <_> - - - - <_> - 6 11 4 1 -1. - <_> - 7 11 2 1 2. - 0 - -3.5052769817411900e-005 - 9.8691992461681366e-002 - -1.0426600277423859e-001 - <_> - - <_> - - - - <_> - 2 11 16 1 -1. - <_> - 2 11 8 1 2. - 0 - -6.2979538924992085e-003 - 4.3742060661315918e-002 - -4.0012229233980179e-002 - <_> - - <_> - - - - <_> - 0 11 16 1 -1. - <_> - 8 11 8 1 2. - 0 - 7.6886221766471863e-002 - 1.4384250156581402e-002 - -7.6758372783660889e-001 - <_> - - <_> - - - - <_> - 14 9 4 3 -1. - <_> - 14 9 2 3 2. - 0 - -6.2105238437652588e-002 - -7.5344699621200562e-001 - 2.2511880379170179e-003 - <_> - - <_> - - - - <_> - 0 9 4 3 -1. - <_> - 2 9 2 3 2. - 0 - 7.9736672341823578e-003 - -6.3740402460098267e-002 - 1.6708980500698090e-001 - <_> - - <_> - - - - <_> - 17 7 1 4 -1. - <_> - 17 8 1 2 2. - 0 - 4.7112111933529377e-003 - 2.9338790103793144e-002 - -1.9519449770450592e-001 - <_> - - <_> - - - - <_> - 0 7 1 4 -1. - <_> - 0 8 1 2 2. - 0 - -4.7494978643953800e-003 - -3.1782409548759460e-001 - 3.3812701702117920e-002 - <_> - - <_> - - - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - 1 - -2.3578179534524679e-003 - 3.7033520638942719e-002 - -5.1874168217182159e-002 - -1.6447039842605591e+000 - 15 - -1 - <_> - - - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -4.7099228948354721e-002 - 5.1232028007507324e-001 - -4.0044599771499634e-001 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -8.5581682622432709e-002 - 4.7390219569206238e-001 - -8.0851227045059204e-002 - <_> - - <_> - - - - <_> - 0 2 15 6 -1. - <_> - 0 4 15 2 3. - 0 - -1.5751540660858154e-001 - 3.0307799577713013e-001 - -2.9985809326171875e-001 - <_> - - <_> - - - - <_> - 12 6 2 4 -1. - <_> - 13 6 1 2 2. - <_> - 12 8 1 2 2. - 0 - -7.7447071671485901e-003 - 3.9014250040054321e-001 - -1.2618440389633179e-001 - <_> - - <_> - - - - <_> - 3 6 12 2 -1. - <_> - 7 6 4 2 3. - 0 - -1.3232390582561493e-001 - -6.1038082838058472e-001 - 6.2328979372978210e-002 - <_> - - <_> - - - - <_> - 9 5 8 4 -1. - <_> - 11 5 4 4 2. - 0 - 9.9189996719360352e-002 - 4.0009308606386185e-002 - -2.4128450453281403e-001 - <_> - - <_> - - - - <_> - 5 2 8 8 -1. - <_> - 7 2 4 8 2. - 0 - 2.3752479255199432e-001 - 2.4606010993011296e-004 - -9.8147119140625000e+002 - <_> - - <_> - - - - <_> - 12 0 6 2 -1. - <_> - 12 0 3 2 2. - 0 - 5.3483508527278900e-003 - -5.8558419346809387e-002 - 9.7474083304405212e-002 - <_> - - <_> - - - - <_> - 0 0 6 2 -1. - <_> - 3 0 3 2 2. - 0 - -1.5156139619648457e-002 - 1.7715239524841309e-001 - -2.7982389926910400e-001 - <_> - - <_> - - - - <_> - 12 6 2 4 -1. - <_> - 13 6 1 2 2. - <_> - 12 8 1 2 2. - 0 - 1.0705590248107910e-002 - -3.0257379636168480e-002 - 3.6629560589790344e-001 - <_> - - <_> - - - - <_> - 4 6 2 4 -1. - <_> - 4 6 1 2 2. - <_> - 5 8 1 2 2. - 0 - -3.2671689987182617e-003 - 2.1479220688343048e-001 - -1.5616300702095032e-001 - <_> - - <_> - - - - <_> - 12 0 4 8 -1. - <_> - 13 0 2 8 2. - 0 - -3.9971169084310532e-002 - -4.8491969704627991e-001 - 1.6523819416761398e-002 - <_> - - <_> - - - - <_> - 0 8 18 4 -1. - <_> - 0 10 18 2 2. - 0 - 4.3550558388233185e-002 - -3.3622530102729797e-001 - 8.8661476969718933e-002 - <_> - - <_> - - - - <_> - 10 0 4 6 -1. - <_> - 11 1 2 6 2. - 1 - -7.8984871506690979e-002 - 1.8954129517078400e-001 - -2.6538040488958359e-002 - <_> - - <_> - - - - <_> - 8 0 6 4 -1. - <_> - 7 1 6 2 2. - 1 - -3.7077900022268295e-002 - 1.2257669866085052e-001 - -2.1321929991245270e-001 - <_> - - <_> - - - - <_> - 16 1 2 3 -1. - <_> - 16 1 1 3 2. - 1 - 2.6359550654888153e-002 - 3.6721199750900269e-002 - -4.6964219212532043e-001 - <_> - - <_> - - - - <_> - 2 1 3 2 -1. - <_> - 2 1 3 1 2. - 1 - 5.8852001093327999e-003 - 6.9452546536922455e-002 - -3.5492339730262756e-001 - <_> - - <_> - - - - <_> - 11 0 6 8 -1. - <_> - 13 0 2 8 3. - 0 - -1.8738530576229095e-002 - 1.1359489709138870e-001 - -8.9908212423324585e-002 - <_> - - <_> - - - - <_> - 1 0 6 8 -1. - <_> - 3 0 2 8 3. - 0 - -9.6431776881217957e-002 - -5.3097301721572876e-001 - 4.5616019517183304e-002 - <_> - - <_> - - - - <_> - 11 6 3 1 -1. - <_> - 12 6 1 1 3. - 0 - -3.2832629512995481e-003 - 2.3055520653724670e-001 - -5.9067908674478531e-002 - <_> - - <_> - - - - <_> - 4 6 3 1 -1. - <_> - 5 6 1 1 3. - 0 - -1.9987220875918865e-003 - 2.4238279461860657e-001 - -8.8716529309749603e-002 - <_> - - <_> - - - - <_> - 12 5 4 4 -1. - <_> - 13 5 2 4 2. - 0 - -5.6294091045856476e-003 - 1.6706959903240204e-001 - -1.2665410339832306e-001 - <_> - - <_> - - - - <_> - 9 2 6 1 -1. - <_> - 11 4 2 1 3. - 1 - -4.1918899863958359e-002 - 1.7224679887294769e-001 - -1.2623949348926544e-001 - <_> - - <_> - - - - <_> - 0 0 18 4 -1. - <_> - 6 0 6 4 3. - 0 - -1.0357339680194855e-001 - 1.4425869286060333e-001 - -1.5410119295120239e-001 - <_> - - <_> - - - - <_> - 2 5 4 4 -1. - <_> - 3 5 2 4 2. - 0 - -7.8944843262434006e-003 - 1.5122400224208832e-001 - -1.2487240135669708e-001 - <_> - - <_> - - - - <_> - 11 7 2 3 -1. - <_> - 10 8 2 1 3. - 1 - -1.9367299973964691e-002 - -3.5261449217796326e-001 - 2.1729569882154465e-002 - <_> - - <_> - - - - <_> - 8 4 3 3 -1. - <_> - 7 5 3 1 3. - 1 - -3.6256119608879089e-002 - 3.7000009417533875e-001 - -5.3758278489112854e-002 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -4.7164689749479294e-002 - -2.3610420525074005e-001 - 9.7192026674747467e-002 - <_> - - <_> - - - - <_> - 9 4 4 2 -1. - <_> - 10 5 2 2 2. - 1 - -1.7230700701475143e-002 - 1.4201079308986664e-001 - -1.5985390543937683e-001 - <_> - - <_> - - - - <_> - 4 2 10 4 -1. - <_> - 4 3 10 2 2. - 0 - -5.0030000507831573e-002 - 2.6506531238555908e-001 - -8.6499691009521484e-002 - <_> - - <_> - - - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - 0 - -9.2107948148623109e-005 - 9.5687441527843475e-002 - -1.9993349909782410e-001 - <_> - - <_> - - - - <_> - 10 0 4 5 -1. - <_> - 11 0 2 5 2. - 0 - -1.0295229963958263e-002 - -2.9639908671379089e-001 - 4.1017848998308182e-002 - <_> - - <_> - - - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - 0 - -7.7980589121580124e-003 - -4.3875318765640259e-001 - 3.9625078439712524e-002 - <_> - - <_> - - - - <_> - 5 2 8 4 -1. - <_> - 5 3 8 2 2. - 0 - 4.7733850777149200e-002 - -5.9582959860563278e-002 - 2.9455170035362244e-001 - <_> - - <_> - - - - <_> - 4 0 4 5 -1. - <_> - 5 0 2 5 2. - 0 - -1.8985090777277946e-002 - -5.1091802120208740e-001 - 3.6479711532592773e-002 - <_> - - <_> - - - - <_> - 10 0 3 2 -1. - <_> - 10 1 3 1 2. - 0 - 6.6718719899654388e-003 - -7.0748023688793182e-002 - 1.6990910470485687e-001 - <_> - - <_> - - - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - -1.0109299910254776e-004 - 7.2951592504978180e-002 - -2.2971729934215546e-001 - <_> - - <_> - - - - <_> - 14 6 2 4 -1. - <_> - 14 6 2 2 2. - 1 - 1.3687750324606895e-002 - -1.7154410481452942e-002 - 1.5828810632228851e-001 - <_> - - <_> - - - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 2 2. - 1 - -1.1907920241355896e-002 - -2.7717119455337524e-001 - 6.1360988765954971e-002 - <_> - - <_> - - - - <_> - 11 6 3 3 -1. - <_> - 10 7 3 1 3. - 1 - 3.2344508916139603e-002 - 6.6562681458890438e-003 - -3.7267601490020752e-001 - <_> - - <_> - - - - <_> - 7 6 3 3 -1. - <_> - 8 7 1 3 3. - 1 - -3.3367820084095001e-002 - -5.3337848186492920e-001 - 2.7859410271048546e-002 - <_> - - <_> - - - - <_> - 3 0 14 2 -1. - <_> - 10 0 7 1 2. - <_> - 3 1 7 1 2. - 0 - 8.3360234275460243e-003 - -5.2400518208742142e-002 - 1.2462449818849564e-001 - <_> - - <_> - - - - <_> - 1 1 9 9 -1. - <_> - 4 4 3 3 9. - 0 - -5.2082502841949463e-001 - -4.6310651302337646e-001 - 3.1300779432058334e-002 - <_> - - <_> - - - - <_> - 16 2 2 3 -1. - <_> - 16 3 2 1 3. - 0 - 1.3498559594154358e-002 - 1.9706040620803833e-002 - -4.2935219407081604e-001 - <_> - - <_> - - - - <_> - 6 0 4 3 -1. - <_> - 6 1 4 1 3. - 0 - -1.1888509616255760e-002 - 2.1265150606632233e-001 - -6.5112717449665070e-002 - <_> - - <_> - - - - <_> - 1 0 16 3 -1. - <_> - 1 1 16 1 3. - 0 - 1.8383689224720001e-002 - -9.9591173231601715e-002 - 1.7049969732761383e-001 - <_> - - <_> - - - - <_> - 5 0 1 3 -1. - <_> - 4 1 1 1 3. - 1 - 1.0062440298497677e-002 - 3.3510580658912659e-002 - -4.7417938709259033e-001 - <_> - - <_> - - - - <_> - 11 1 3 3 -1. - <_> - 12 1 1 3 3. - 0 - 5.7981228455901146e-003 - 3.6437921226024628e-002 - -2.2873109579086304e-001 - <_> - - <_> - - - - <_> - 8 3 4 3 -1. - <_> - 7 4 4 1 3. - 1 - -3.0684519559144974e-002 - 1.4713959395885468e-001 - -8.7145403027534485e-002 - <_> - - <_> - - - - <_> - 11 4 4 5 -1. - <_> - 12 4 2 5 2. - 0 - 2.3879610002040863e-002 - -7.0351168513298035e-002 - 2.7118590474128723e-001 - <_> - - <_> - - - - <_> - 0 5 18 2 -1. - <_> - 6 5 6 2 3. - 0 - -2.5044348835945129e-001 - -4.7885990142822266e-001 - 3.1736131757497787e-002 - <_> - - <_> - - - - <_> - 11 1 3 3 -1. - <_> - 12 1 1 3 3. - 0 - 1.3026770204305649e-002 - 1.0787160135805607e-002 - -2.5330540537834167e-001 - <_> - - <_> - - - - <_> - 4 1 3 3 -1. - <_> - 5 1 1 3 3. - 0 - 9.0072769671678543e-003 - 2.7806090191006660e-002 - -4.7443199157714844e-001 - <_> - - <_> - - - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - 0 - -5.7155848480761051e-003 - 1.9597819447517395e-001 - -5.6443430483341217e-002 - <_> - - <_> - - - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - 0 - 6.5435571596026421e-003 - 2.4191839620471001e-002 - -5.9032911062240601e-001 - <_> - - <_> - - - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - 0 - 5.8930469676852226e-003 - -5.4064448922872543e-002 - 1.3058720529079437e-001 - <_> - - <_> - - - - <_> - 0 2 2 3 -1. - <_> - 0 3 2 1 3. - 0 - 7.1939909830689430e-003 - 3.4566860646009445e-002 - -3.6955019831657410e-001 - <_> - - <_> - - - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - 0 - -2.9776040464639664e-002 - -4.4595420360565186e-001 - 4.1442508809268475e-003 - <_> - - <_> - - - - <_> - 5 6 3 2 -1. - <_> - 6 6 1 2 3. - 0 - -3.2136470545083284e-003 - 2.2781200706958771e-001 - -5.8483459055423737e-002 - <_> - - <_> - - - - <_> - 11 5 4 4 -1. - <_> - 12 5 2 4 2. - 0 - -1.1251470074057579e-002 - 1.0093680024147034e-001 - -1.7605800181627274e-002 - <_> - - <_> - - - - <_> - 3 5 4 4 -1. - <_> - 4 5 2 4 2. - 0 - -4.6385750174522400e-003 - 1.3835780322551727e-001 - -1.2052179872989655e-001 - <_> - - <_> - - - - <_> - 14 9 1 2 -1. - <_> - 14 9 1 1 2. - 1 - -1.0255860164761543e-002 - -2.6656809449195862e-001 - 2.2648969665169716e-002 - <_> - - <_> - - - - <_> - 4 9 2 1 -1. - <_> - 4 9 1 1 2. - 1 - -1.1238789738854393e-004 - 7.0958286523818970e-002 - -1.9030919671058655e-001 - <_> - - <_> - - - - <_> - 15 8 2 2 -1. - <_> - 15 8 1 2 2. - 1 - -1.8172770505771041e-003 - 5.7135429233312607e-002 - -1.9398370385169983e-001 - <_> - - <_> - - - - <_> - 3 8 2 2 -1. - <_> - 3 8 2 1 2. - 1 - 5.5736447684466839e-003 - -5.8273639529943466e-002 - 2.7279791235923767e-001 - <_> - - <_> - - - - <_> - 17 6 1 2 -1. - <_> - 17 7 1 1 2. - 0 - -8.3255711942911148e-003 - -7.4055558443069458e-001 - 9.1970404610037804e-003 - <_> - - <_> - - - - <_> - 0 8 2 4 -1. - <_> - 0 9 2 2 2. - 0 - -3.1887560617178679e-003 - -2.4141499400138855e-001 - 5.7376209646463394e-002 - <_> - - <_> - - - - <_> - 14 6 3 4 -1. - <_> - 15 6 1 4 3. - 0 - -2.2584979888051748e-003 - 1.3913479447364807e-001 - -1.1590459942817688e-001 - <_> - - <_> - - - - <_> - 0 6 1 2 -1. - <_> - 0 7 1 1 2. - 0 - 9.4622228061780334e-005 - -1.3526099920272827e-001 - 9.5751672983169556e-002 - <_> - - <_> - - - - <_> - 8 4 3 3 -1. - <_> - 9 5 1 1 9. - 0 - -2.1349849179387093e-002 - 1.4678120613098145e-001 - -6.3536033034324646e-002 - <_> - - <_> - - - - <_> - 5 2 6 4 -1. - <_> - 7 2 2 4 3. - 0 - -4.4286339543759823e-003 - 8.8673412799835205e-002 - -1.5095430612564087e-001 - <_> - - <_> - - - - <_> - 14 5 4 2 -1. - <_> - 15 5 2 2 2. - 0 - -4.3985550291836262e-003 - 1.5795840322971344e-001 - -7.5238667428493500e-002 - <_> - - <_> - - - - <_> - 0 10 3 2 -1. - <_> - 0 11 3 1 2. - 0 - -9.3446951359510422e-003 - -6.5790867805480957e-001 - 2.0568570122122765e-002 - <_> - - <_> - - - - <_> - 14 5 4 2 -1. - <_> - 15 5 2 2 2. - 0 - -2.5447890162467957e-002 - -4.1285929083824158e-001 - 5.0353291444480419e-003 - <_> - - <_> - - - - <_> - 0 5 4 2 -1. - <_> - 1 5 2 2 2. - 0 - -5.0448579713702202e-003 - 1.8336050212383270e-001 - -7.2318047285079956e-002 - <_> - - <_> - - - - <_> - 10 0 3 4 -1. - <_> - 11 0 1 4 3. - 0 - 7.2271078824996948e-003 - 4.0401030331850052e-002 - -2.2265300154685974e-001 - <_> - - <_> - - - - <_> - 3 0 3 3 -1. - <_> - 4 1 1 3 3. - 1 - 1.3982810080051422e-002 - -5.7746250182390213e-002 - 2.2017340362071991e-001 - <_> - - <_> - - - - <_> - 16 2 2 3 -1. - <_> - 16 2 1 3 2. - 0 - -2.8559179045259953e-003 - 5.0909828394651413e-002 - -3.0777629464864731e-002 - <_> - - <_> - - - - <_> - 0 2 2 3 -1. - <_> - 1 2 1 3 2. - 0 - -1.8284700345247984e-003 - 7.4684068560600281e-002 - -1.7498280107975006e-001 - <_> - - <_> - - - - <_> - 3 1 12 4 -1. - <_> - 3 2 12 2 2. - 0 - 6.3661746680736542e-002 - -6.5391771495342255e-002 - 2.2334089875221252e-001 - <_> - - <_> - - - - <_> - 5 1 8 3 -1. - <_> - 5 2 8 1 3. - 0 - -2.7838269248604774e-002 - 2.9847261309623718e-001 - -4.9533151090145111e-002 - <_> - - <_> - - - - <_> - 8 0 2 1 -1. - <_> - 8 0 1 1 2. - 0 - -1.0150820162380114e-004 - 1.1381319910287857e-001 - -1.2988950312137604e-001 - <_> - - <_> - - - - <_> - 6 0 4 3 -1. - <_> - 7 0 2 3 2. - 0 - -8.2104168832302094e-003 - -3.3482441306114197e-001 - 4.3320100754499435e-002 - <_> - - <_> - - - - <_> - 10 4 1 4 -1. - <_> - 9 5 1 2 2. - 1 - -2.3469710722565651e-002 - 1.0485579818487167e-001 - -2.6606179773807526e-002 - <_> - - <_> - - - - <_> - 0 4 5 6 -1. - <_> - 0 6 5 2 3. - 0 - -1.0225430130958557e-001 - -5.8360242843627930e-001 - 1.9875079393386841e-002 - <_> - - <_> - - - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 0 - 1.1051409819629043e-004 - -5.1062610000371933e-002 - 5.9449151158332825e-002 - <_> - - <_> - - - - <_> - 3 1 2 3 -1. - <_> - 2 2 2 1 3. - 1 - -2.8587339445948601e-002 - -6.5006488561630249e-001 - 1.7431130632758141e-002 - <_> - - <_> - - - - <_> - 15 4 3 3 -1. - <_> - 15 5 3 1 3. - 0 - -1.3374029658734798e-002 - -1.4429409801959991e-001 - 1.7930189147591591e-002 - <_> - - <_> - - - - <_> - 4 6 2 2 -1. - <_> - 4 6 1 1 2. - <_> - 5 7 1 1 2. - 0 - -2.3064489942044020e-003 - 2.0024579763412476e-001 - -5.6077890098094940e-002 - <_> - - <_> - - - - <_> - 9 1 4 3 -1. - <_> - 10 1 2 3 2. - 0 - 8.4166266024112701e-003 - 2.1211260929703712e-002 - -1.6266340017318726e-001 - <_> - - <_> - - - - <_> - 3 4 3 4 -1. - <_> - 4 4 1 4 3. - 0 - -3.9152640849351883e-002 - -7.4495017528533936e-001 - 1.5373099595308304e-002 - <_> - - <_> - - - - <_> - 15 4 3 3 -1. - <_> - 15 5 3 1 3. - 0 - 2.2199099883437157e-002 - 3.8378299213945866e-003 - -4.2204570770263672e-001 - <_> - - <_> - - - - <_> - 0 4 3 3 -1. - <_> - 0 5 3 1 3. - 0 - -2.1212680265307426e-002 - -6.2949067354202271e-001 - 1.7416249960660934e-002 - <_> - - <_> - - - - <_> - 10 4 1 4 -1. - <_> - 9 5 1 2 2. - 1 - 2.4373589083552361e-002 - -1.2476569972932339e-002 - 2.4312859773635864e-001 - <_> - - <_> - - - - <_> - 8 4 4 1 -1. - <_> - 9 5 2 1 2. - 1 - -6.5655349753797054e-003 - 8.4354929625988007e-002 - -1.5370599925518036e-001 - <_> - - <_> - - - - <_> - 9 1 4 3 -1. - <_> - 10 1 2 3 2. - 0 - -2.7004949748516083e-002 - -5.8976668119430542e-001 - 2.9545149300247431e-003 - <_> - - <_> - - - - <_> - 5 1 4 3 -1. - <_> - 6 1 2 3 2. - 0 - 7.3342039249837399e-003 - 3.2064430415630341e-002 - -3.6039480566978455e-001 - <_> - - <_> - - - - <_> - 7 2 4 3 -1. - <_> - 7 3 4 1 3. - 0 - -3.6217659711837769e-002 - 4.1957581043243408e-001 - -2.8667179867625237e-002 - <_> - - <_> - - - - <_> - 1 0 12 1 -1. - <_> - 7 0 6 1 2. - 0 - -3.3907890319824219e-002 - 1.9862470030784607e-001 - -5.4882749915122986e-002 - <_> - - <_> - - - - <_> - 15 7 3 2 -1. - <_> - 16 8 1 2 3. - 1 - 3.3384829759597778e-002 - 9.7365463152527809e-003 - -5.0248068571090698e-001 - <_> - - <_> - - - - <_> - 3 7 2 3 -1. - <_> - 2 8 2 1 3. - 1 - 1.6862079501152039e-002 - -4.6240940690040588e-002 - 2.6544511318206787e-001 - <_> - - <_> - - - - <_> - 14 9 4 1 -1. - <_> - 15 9 2 1 2. - 0 - 1.0384619963588193e-004 - -6.5498687326908112e-002 - 7.5105533003807068e-002 - <_> - - <_> - - - - <_> - 0 9 4 1 -1. - <_> - 1 9 2 1 2. - 0 - -1.8147130031138659e-003 - 1.5277540683746338e-001 - -7.0199362933635712e-002 - <_> - - <_> - - - - <_> - 8 1 3 2 -1. - <_> - 9 1 1 2 3. - 0 - -7.1106678806245327e-003 - -3.0020499229431152e-001 - 1.6424750909209251e-002 - <_> - - <_> - - - - <_> - 6 5 3 1 -1. - <_> - 7 5 1 1 3. - 0 - -3.5177739337086678e-003 - 1.7865179479122162e-001 - -5.8777790516614914e-002 - <_> - - <_> - - - - <_> - 12 1 6 6 -1. - <_> - 15 1 3 3 2. - <_> - 12 4 3 3 2. - 0 - -4.1041579097509384e-002 - 1.8218480050563812e-001 - -8.1268668174743652e-002 - <_> - - <_> - - - - <_> - 6 10 4 2 -1. - <_> - 7 10 2 2 2. - 0 - 5.7358681224286556e-003 - 2.5911739096045494e-002 - -4.2743799090385437e-001 - <_> - - <_> - - - - <_> - 7 10 4 1 -1. - <_> - 7 10 2 1 2. - 0 - -1.0798470117151737e-002 - -6.1551171541213989e-001 - 1.5165490098297596e-002 - <_> - - <_> - - - - <_> - 1 10 12 2 -1. - <_> - 4 10 6 2 2. - 0 - -1.6831440851092339e-002 - 1.4407679438591003e-001 - -8.0768980085849762e-002 - <_> - - <_> - - - - <_> - 1 11 16 1 -1. - <_> - 5 11 8 1 2. - 0 - 1.0636080056428909e-002 - -6.2096010893583298e-002 - 1.9595879316329956e-001 - <_> - - <_> - - - - <_> - 1 0 12 2 -1. - <_> - 1 0 6 1 2. - <_> - 7 1 6 1 2. - 0 - -1.2243179604411125e-002 - 2.0768819749355316e-001 - -5.2664700895547867e-002 - <_> - - <_> - - - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - -1.2133699841797352e-002 - -2.9647940397262573e-001 - 2.0730949938297272e-002 - <_> - - <_> - - - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - 1.1067570187151432e-002 - 2.1148590371012688e-002 - -4.9197408556938171e-001 - <_> - - <_> - - - - <_> - 10 8 2 2 -1. - <_> - 11 8 1 1 2. - <_> - 10 9 1 1 2. - 0 - -9.8478456493467093e-005 - 1.1343929916620255e-001 - -8.3189181983470917e-002 - <_> - - <_> - - - - <_> - 2 0 4 3 -1. - <_> - 2 1 4 1 3. - 0 - -5.6805750355124474e-003 - 1.5700399875640869e-001 - -6.6936172544956207e-002 - <_> - - <_> - - - - <_> - 6 5 6 6 -1. - <_> - 6 8 6 3 2. - 0 - -2.8414670377969742e-002 - -7.0801937580108643e-001 - 1.5312350355088711e-002 - <_> - - <_> - - - - <_> - 6 5 2 6 -1. - <_> - 6 5 1 3 2. - <_> - 7 8 1 3 2. - 0 - -8.3131557330489159e-003 - 3.2525569200515747e-001 - -3.9767459034919739e-002 - <_> - - <_> - - - - <_> - 6 0 6 10 -1. - <_> - 8 0 2 10 3. - 0 - -1.6154859215021133e-002 - 7.2170242667198181e-002 - -1.6181150078773499e-001 - <_> - - <_> - - - - <_> - 5 10 8 2 -1. - <_> - 7 10 4 2 2. - 0 - -2.8748309239745140e-002 - -5.0679367780685425e-001 - 2.0193170756101608e-002 - <_> - - <_> - - - - <_> - 8 9 2 3 -1. - <_> - 8 10 2 1 3. - 0 - -4.1366219520568848e-003 - 2.0419590175151825e-001 - -6.5082170069217682e-002 - <_> - - <_> - - - - <_> - 2 0 2 8 -1. - <_> - 2 0 1 4 2. - <_> - 3 4 1 4 2. - 0 - -1.5805249568074942e-003 - 1.0301300138235092e-001 - -9.4873502850532532e-002 - <_> - - <_> - - - - <_> - 17 9 1 2 -1. - <_> - 17 10 1 1 2. - 0 - 1.0768450010800734e-004 - -1.3171160221099854e-001 - 6.4459241926670074e-002 - <_> - - <_> - - - - <_> - 0 9 1 2 -1. - <_> - 0 10 1 1 2. - 0 - 1.0487069812370464e-004 - -1.2248139828443527e-001 - 7.9662062227725983e-002 - <_> - - <_> - - - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - 0 - 2.3125091101974249e-003 - 4.4756468385457993e-002 - -1.7060999572277069e-001 - <_> - - <_> - - - - <_> - 0 9 1 3 -1. - <_> - 0 10 1 1 3. - 0 - 2.1291899029165506e-003 - 4.8184551298618317e-002 - -2.3906719684600830e-001 - <_> - - <_> - - - - <_> - 10 0 3 2 -1. - <_> - 10 1 3 1 2. - 0 - 1.5565729700028896e-002 - -2.2367909550666809e-002 - 1.5265730023384094e-001 - <_> - - <_> - - - - <_> - 0 2 2 2 -1. - <_> - 1 2 1 2 2. - 0 - 1.2233420275151730e-002 - -1.4203540049493313e-002 - 6.9559741020202637e-001 - <_> - - <_> - - - - <_> - 13 0 2 3 -1. - <_> - 13 0 1 3 2. - 1 - 1.4537650160491467e-002 - -2.8447359800338745e-002 - 8.0053016543388367e-002 - <_> - - <_> - - - - <_> - 7 6 3 2 -1. - <_> - 7 6 3 1 2. - 1 - -6.6005781292915344e-002 - 8.9588922262191772e-001 - -1.1561259627342224e-002 - <_> - - <_> - - - - <_> - 11 0 1 10 -1. - <_> - 11 0 1 5 2. - 1 - -1.0381550341844559e-001 - -1.8446309864521027e-001 - 1.7674740403890610e-002 - <_> - - <_> - - - - <_> - 7 0 10 1 -1. - <_> - 7 0 5 1 2. - 1 - -1.3172790408134460e-001 - 5.0180637836456299e-001 - -2.0710369572043419e-002 - <_> - - <_> - - - - <_> - 4 2 14 2 -1. - <_> - 11 2 7 1 2. - <_> - 4 3 7 1 2. - 0 - -1.5426370315253735e-002 - 7.8415192663669586e-002 - -2.7261590585112572e-002 - <_> - - <_> - - - - <_> - 1 1 2 1 -1. - <_> - 2 1 1 1 2. - 0 - -1.0778359865071252e-004 - 6.0409270226955414e-002 - -1.5471479296684265e-001 - <_> - - <_> - - - - <_> - 12 0 6 4 -1. - <_> - 15 0 3 2 2. - <_> - 12 2 3 2 2. - 0 - -2.4746390059590340e-002 - 1.2564839422702789e-001 - -3.3081028610467911e-002 - <_> - - <_> - - - - <_> - 0 0 6 4 -1. - <_> - 0 0 3 2 2. - <_> - 3 2 3 2 2. - 0 - -1.5458550304174423e-002 - 1.7179520428180695e-001 - -5.8264948427677155e-002 - <_> - - <_> - - - - <_> - 10 0 2 2 -1. - <_> - 10 0 1 2 2. - 1 - -1.0445830412209034e-002 - 1.4642359316349030e-001 - -3.6354210227727890e-002 - <_> - - <_> - - - - <_> - 8 0 2 2 -1. - <_> - 8 0 2 1 2. - 1 - 2.6862770318984985e-002 - 2.1519670262932777e-002 - -4.7783750295639038e-001 - <_> - - <_> - - - - <_> - 13 0 2 3 -1. - <_> - 13 0 1 3 2. - 1 - 3.5936690866947174e-002 - 4.5006349682807922e-003 - -1.7359879612922668e-001 - <_> - - <_> - - - - <_> - 5 0 3 2 -1. - <_> - 5 0 3 1 2. - 1 - -1.5734670683741570e-002 - -3.0777779221534729e-001 - 3.1397148966789246e-002 - <_> - - <_> - - - - <_> - 5 5 12 6 -1. - <_> - 9 7 4 2 9. - 0 - 2.6576629281044006e-001 - 8.3727054297924042e-003 - -1.7637939751148224e-001 - <_> - - <_> - - - - <_> - 1 5 12 6 -1. - <_> - 5 7 4 2 9. - 0 - -2.7198851108551025e-001 - -2.5540670752525330e-001 - 3.7426579743623734e-002 - <_> - - <_> - - - - <_> - 10 9 3 1 -1. - <_> - 11 9 1 1 3. - 0 - -7.8124678111635149e-005 - 6.1373539268970490e-002 - -5.4453648626804352e-002 - <_> - - <_> - - - - <_> - 5 9 3 1 -1. - <_> - 6 9 1 1 3. - 0 - -7.9498830018565059e-005 - 1.0011609643697739e-001 - -9.8592832684516907e-002 - <_> - - <_> - - - - <_> - 10 8 2 2 -1. - <_> - 11 8 1 1 2. - <_> - 10 9 1 1 2. - 0 - 1.0202309931628406e-004 - -7.4067138135433197e-002 - 7.4745737016201019e-002 - <_> - - <_> - - - - <_> - 6 8 2 2 -1. - <_> - 6 8 1 1 2. - <_> - 7 9 1 1 2. - 0 - -9.2606707767117769e-005 - 1.3342879712581635e-001 - -9.0439222753047943e-002 - <_> - - <_> - - - - <_> - 8 9 2 3 -1. - <_> - 8 10 2 1 3. - 0 - 3.8040629588067532e-003 - -6.1666429042816162e-002 - 1.6896329820156097e-001 - <_> - - <_> - - - - <_> - 5 6 3 3 -1. - <_> - 4 7 3 1 3. - 1 - -8.1060919910669327e-003 - 1.3207329809665680e-001 - -7.3784358799457550e-002 - <_> - - <_> - - - - <_> - 13 8 3 1 -1. - <_> - 14 8 1 1 3. - 0 - -1.0786090046167374e-002 - -5.6200730800628662e-001 - 1.3227690011262894e-002 - <_> - - <_> - - - - <_> - 2 8 3 1 -1. - <_> - 3 8 1 1 3. - 0 - 9.7276162705384195e-005 - -9.7462959587574005e-002 - 1.1971189826726913e-001 - <_> - - <_> - - - - <_> - 10 6 6 6 -1. - <_> - 12 8 2 2 9. - 0 - 2.8057929873466492e-001 - -3.0780870001763105e-003 - 6.8235772848129272e-001 - <_> - - <_> - - - - <_> - 2 6 6 6 -1. - <_> - 4 8 2 2 9. - 0 - -1.3232059776782990e-001 - -3.8513648509979248e-001 - 2.6804640889167786e-002 - <_> - - <_> - - - - <_> - 9 2 2 7 -1. - <_> - 9 2 1 7 2. - 1 - -6.3539249822497368e-003 - -4.4983521103858948e-002 - 2.9777200892567635e-002 - <_> - - <_> - - - - <_> - 8 1 2 3 -1. - <_> - 8 2 2 1 3. - 0 - -6.7433509975671768e-003 - 2.0317420363426208e-001 - -4.5301459729671478e-002 - <_> - - <_> - - - - <_> - 14 0 2 1 -1. - <_> - 14 0 1 1 2. - 0 - 1.0802519682329148e-004 - -5.8308821171522141e-002 - 7.4881277978420258e-002 - <_> - - <_> - - - - <_> - 2 0 2 1 -1. - <_> - 3 0 1 1 2. - 0 - -1.0485889652045444e-004 - 6.7523166537284851e-002 - -1.4478640258312225e-001 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - 0 - -3.5352221131324768e-001 - -4.2312130331993103e-001 - 1.9533690065145493e-002 - <_> - - <_> - - - - <_> - 0 4 18 8 -1. - <_> - 0 4 9 4 2. - <_> - 9 8 9 4 2. - 0 - -1.2163110077381134e-001 - -2.7824950218200684e-001 - 3.1736399978399277e-002 - <_> - - <_> - - - - <_> - 15 1 2 10 -1. - <_> - 16 1 1 5 2. - <_> - 15 6 1 5 2. - 0 - -1.9749959465116262e-003 - 3.7093818187713623e-002 - -3.7182409316301346e-002 - <_> - - <_> - - - - <_> - 1 1 2 10 -1. - <_> - 1 1 1 5 2. - <_> - 2 6 1 5 2. - 0 - -5.9040738269686699e-003 - 1.7077660560607910e-001 - -5.1128141582012177e-002 - <_> - - <_> - - - - <_> - 17 6 1 3 -1. - <_> - 17 7 1 1 3. - 0 - 6.3806660473346710e-003 - 1.8414629623293877e-002 - -3.3528879284858704e-001 - <_> - - <_> - - - - <_> - 0 6 1 3 -1. - <_> - 0 7 1 1 3. - 0 - 3.0919709242880344e-003 - 3.3527199178934097e-002 - -2.5639230012893677e-001 - <_> - - <_> - - - - <_> - 9 11 9 1 -1. - <_> - 12 11 3 1 3. - 0 - -3.3380180597305298e-002 - -5.6673657894134521e-001 - 9.6841529011726379e-003 - <_> - - <_> - - - - <_> - 0 11 9 1 -1. - <_> - 3 11 3 1 3. - 0 - 5.3758830763399601e-003 - -7.3790043592453003e-002 - 1.2300299853086472e-001 - <_> - - <_> - - - - <_> - 10 2 2 1 -1. - <_> - 10 2 1 1 2. - 0 - -9.6056828624568880e-005 - 6.6307842731475830e-002 - -8.0982752144336700e-002 - <_> - - <_> - - - - <_> - 6 2 2 1 -1. - <_> - 7 2 1 1 2. - 0 - 9.6216521342284977e-005 - -9.5515526831150055e-002 - 9.8478242754936218e-002 - <_> - - <_> - - - - <_> - 11 6 4 2 -1. - <_> - 12 6 2 2 2. - 0 - 2.0997669547796249e-002 - -1.9261270761489868e-002 - 1.9147670269012451e-001 - <_> - - <_> - - - - <_> - 8 1 7 2 -1. - <_> - 8 1 7 1 2. - 1 - 4.0974739938974380e-002 - 3.5511299967765808e-002 - -2.3782519996166229e-001 - <_> - - <_> - - - - <_> - 8 3 2 3 -1. - <_> - 8 4 2 1 3. - 0 - 1.5249810181558132e-002 - -3.2638609409332275e-002 - 2.6787319779396057e-001 - <_> - - <_> - - - - <_> - 7 3 2 3 -1. - <_> - 7 4 2 1 3. - 0 - -8.7066702544689178e-003 - 1.6137360036373138e-001 - -6.4327538013458252e-002 - -1.6502959728240967e+000 - 16 - -1 - <_> - - - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.6222651153802872e-002 - 5.9786707162857056e-001 - -3.5909670591354370e-001 - <_> - - <_> - - - - <_> - 14 6 2 3 -1. - <_> - 13 7 2 1 3. - 1 - 4.1003809310495853e-003 - -2.0380510389804840e-001 - 1.9502650201320648e-001 - <_> - - <_> - - - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - 0 - -4.9330119043588638e-002 - 5.0600039958953857e-001 - -1.6639490425586700e-001 - <_> - - <_> - - - - <_> - 12 5 3 3 -1. - <_> - 13 5 1 3 3. - 0 - -6.4293588511645794e-003 - 1.8901120126247406e-001 - -1.4212790131568909e-001 - <_> - - <_> - - - - <_> - 3 0 2 6 -1. - <_> - 4 0 1 6 2. - 0 - -4.7428511606995016e-005 - 1.1049690097570419e-001 - -3.3191910386085510e-001 - <_> - - <_> - - - - <_> - 17 0 1 2 -1. - <_> - 17 0 1 1 2. - 1 - -2.2071679122745991e-003 - 1.3103869557380676e-001 - -7.3238097131252289e-002 - <_> - - <_> - - - - <_> - 1 0 2 1 -1. - <_> - 1 0 1 1 2. - 1 - 1.6127950511872768e-003 - -3.1489709019660950e-001 - 1.1853870004415512e-001 - <_> - - <_> - - - - <_> - 5 4 8 3 -1. - <_> - 5 5 8 1 3. - 0 - -5.1899220794439316e-002 - 3.3643078804016113e-001 - -9.0716972947120667e-002 - <_> - - <_> - - - - <_> - 0 4 18 8 -1. - <_> - 0 8 18 4 2. - 0 - 3.6771941184997559e-001 - -2.8837621212005615e-001 - 9.6811376512050629e-002 - <_> - - <_> - - - - <_> - 12 6 3 3 -1. - <_> - 13 7 1 3 3. - 1 - -6.9863619282841682e-003 - 9.2437140643596649e-002 - -2.5936789810657501e-002 - <_> - - <_> - - - - <_> - 6 5 2 3 -1. - <_> - 5 6 2 1 3. - 1 - -9.8948301747441292e-003 - 2.0623749494552612e-001 - -1.3285739719867706e-001 - <_> - - <_> - - - - <_> - 12 2 3 1 -1. - <_> - 13 3 1 1 3. - 1 - 1.1778100393712521e-002 - 2.3808769881725311e-002 - -1.5618060529232025e-001 - <_> - - <_> - - - - <_> - 6 2 1 3 -1. - <_> - 5 3 1 1 3. - 1 - -9.7711039707064629e-003 - -4.4414070248603821e-001 - 5.2495859563350677e-002 - <_> - - <_> - - - - <_> - 12 6 2 4 -1. - <_> - 12 6 2 2 2. - 1 - 2.2034980356693268e-002 - 1.2899329885840416e-002 - -3.1973049044609070e-001 - <_> - - <_> - - - - <_> - 6 6 4 2 -1. - <_> - 6 6 2 2 2. - 1 - -4.9070861190557480e-002 - -3.8365250825881958e-001 - 6.3556171953678131e-002 - <_> - - <_> - - - - <_> - 9 5 3 2 -1. - <_> - 10 5 1 2 3. - 0 - 6.3082459382712841e-003 - -3.8817681372165680e-002 - 1.8945780396461487e-001 - <_> - - <_> - - - - <_> - 0 10 1 2 -1. - <_> - 0 11 1 1 2. - 0 - -1.7394339665770531e-003 - -4.3998670578002930e-001 - 4.6502090990543365e-002 - <_> - - <_> - - - - <_> - 9 5 3 2 -1. - <_> - 10 5 1 2 3. - 0 - -4.4195288792252541e-003 - 1.1859840154647827e-001 - -7.3243133723735809e-002 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.6303210556507111e-002 - -2.6308500766754150e-001 - 7.2903439402580261e-002 - <_> - - <_> - - - - <_> - 11 5 3 3 -1. - <_> - 12 6 1 1 9. - 0 - 3.4307971596717834e-002 - -6.0798160731792450e-002 - 3.9862269163131714e-001 - <_> - - <_> - - - - <_> - 8 5 3 1 -1. - <_> - 9 6 1 1 3. - 1 - -3.3242679201066494e-003 - 1.0307639837265015e-001 - -2.0086939632892609e-001 - <_> - - <_> - - - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - 1 - 1.0037739761173725e-002 - 2.2954529151320457e-002 - -3.3619529008865356e-001 - <_> - - <_> - - - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - 0 - -1.8309960141777992e-002 - 2.7249470353126526e-001 - -7.5265437364578247e-002 - <_> - - <_> - - - - <_> - 10 4 3 3 -1. - <_> - 11 5 1 1 9. - 0 - -1.2437590397894382e-002 - 1.6988450288772583e-001 - -1.2346489727497101e-001 - <_> - - <_> - - - - <_> - 1 3 2 1 -1. - <_> - 2 3 1 1 2. - 0 - -9.7200412710662931e-005 - 9.2975288629531860e-002 - -2.1013750135898590e-001 - <_> - - <_> - - - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - 1.5010629780590534e-002 - 2.7979910373687744e-002 - -2.2502240538597107e-001 - <_> - - <_> - - - - <_> - 4 0 5 2 -1. - <_> - 4 1 5 1 2. - 0 - 6.8223020061850548e-003 - -9.1722019016742706e-002 - 2.1493209898471832e-001 - <_> - - <_> - - - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - 0 - 7.6006199233233929e-003 - 3.4965578466653824e-002 - -5.5234891176223755e-001 - <_> - - <_> - - - - <_> - 2 0 4 2 -1. - <_> - 2 0 4 1 2. - 1 - -2.6817400008440018e-002 - -4.8797228932380676e-001 - 3.0805250629782677e-002 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - 0 - 7.0448551559820771e-004 - -3.5009810328483582e-001 - 4.8253938555717468e-002 - <_> - - <_> - - - - <_> - 8 3 4 3 -1. - <_> - 7 4 4 1 3. - 1 - -3.3609889447689056e-002 - 1.7630560696125031e-001 - -9.8770871758460999e-002 - <_> - - <_> - - - - <_> - 7 6 6 2 -1. - <_> - 9 6 2 2 3. - 0 - -1.8547330051660538e-002 - 1.0437929630279541e-001 - -1.1144720017910004e-001 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.6172698736190796e-002 - -3.0085611343383789e-001 - 7.9608023166656494e-002 - <_> - - <_> - - - - <_> - 11 5 3 2 -1. - <_> - 12 6 1 2 3. - 1 - -2.3099640384316444e-002 - 2.7257511019706726e-001 - -2.9355559498071671e-002 - <_> - - <_> - - - - <_> - 4 5 3 3 -1. - <_> - 5 6 1 1 9. - 0 - 3.9425190538167953e-002 - -5.3158119320869446e-002 - 3.6481729149818420e-001 - <_> - - <_> - - - - <_> - 15 0 2 2 -1. - <_> - 15 0 1 2 2. - 1 - 2.0240049809217453e-002 - 5.3568179719150066e-003 - -1.8116340041160583e-001 - <_> - - <_> - - - - <_> - 3 0 2 2 -1. - <_> - 3 0 2 1 2. - 1 - 9.3122208490967751e-003 - 5.0547938793897629e-002 - -3.4074148535728455e-001 - <_> - - <_> - - - - <_> - 7 2 8 2 -1. - <_> - 9 2 4 2 2. - 0 - -2.3379230871796608e-002 - -2.1109730005264282e-001 - 1.6865389421582222e-002 - <_> - - <_> - - - - <_> - 3 7 2 3 -1. - <_> - 3 7 1 3 2. - 1 - -1.9556559622287750e-002 - -3.4358918666839600e-001 - 4.2624428868293762e-002 - <_> - - <_> - - - - <_> - 8 5 10 4 -1. - <_> - 13 5 5 2 2. - <_> - 8 7 5 2 2. - 0 - 3.1322460621595383e-002 - -3.9133161306381226e-002 - 5.5833168327808380e-002 - <_> - - <_> - - - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - 0 - -7.3630441911518574e-003 - -4.7864329814910889e-001 - 2.9872870072722435e-002 - <_> - - <_> - - - - <_> - 14 9 4 2 -1. - <_> - 14 9 2 2 2. - 0 - -2.3409801069647074e-003 - 1.3057319819927216e-001 - -1.4621940255165100e-001 - <_> - - <_> - - - - <_> - 0 9 4 2 -1. - <_> - 2 9 2 2 2. - 0 - 9.2211654409766197e-003 - -6.7346267402172089e-002 - 2.5263699889183044e-001 - <_> - - <_> - - - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - -1.0466010309755802e-002 - -1.9848449528217316e-001 - 1.8861690536141396e-002 - <_> - - <_> - - - - <_> - 6 9 2 1 -1. - <_> - 6 9 1 1 2. - 1 - -9.7899202955886722e-005 - 6.3450932502746582e-002 - -2.1557840704917908e-001 - <_> - - <_> - - - - <_> - 13 4 2 3 -1. - <_> - 12 5 2 1 3. - 1 - -2.3922720924019814e-002 - 2.4631519615650177e-001 - -5.1129460334777832e-002 - <_> - - <_> - - - - <_> - 0 0 2 3 -1. - <_> - 0 1 2 1 3. - 0 - 5.7842950336635113e-003 - 4.2333669960498810e-002 - -3.3898320794105530e-001 - <_> - - <_> - - - - <_> - 13 0 3 3 -1. - <_> - 12 1 3 1 3. - 1 - -2.3269839584827423e-002 - 2.4037189781665802e-001 - -3.4505158662796021e-002 - <_> - - <_> - - - - <_> - 5 4 3 2 -1. - <_> - 6 5 1 2 3. - 1 - -1.6350559890270233e-002 - 1.9407600164413452e-001 - -7.0264637470245361e-002 - <_> - - <_> - - - - <_> - 13 0 3 3 -1. - <_> - 12 1 3 1 3. - 1 - -4.7969698905944824e-002 - 2.3122610151767731e-001 - -5.0500500947237015e-003 - <_> - - <_> - - - - <_> - 5 0 3 3 -1. - <_> - 6 1 1 3 3. - 1 - -1.7734989523887634e-002 - 2.2820329666137695e-001 - -6.5362311899662018e-002 - <_> - - <_> - - - - <_> - 11 0 4 4 -1. - <_> - 12 0 2 4 2. - 0 - -9.5965424552559853e-003 - -3.6203289031982422e-001 - 4.2960420250892639e-002 - <_> - - <_> - - - - <_> - 3 0 4 4 -1. - <_> - 4 0 2 4 2. - 0 - -1.1790839955210686e-002 - -3.3380389213562012e-001 - 3.7407919764518738e-002 - <_> - - <_> - - - - <_> - 9 4 3 5 -1. - <_> - 10 4 1 5 3. - 0 - -6.5361768007278442e-002 - -7.3411208391189575e-001 - 3.7781549617648125e-003 - <_> - - <_> - - - - <_> - 6 4 3 5 -1. - <_> - 7 4 1 5 3. - 0 - -9.2028174549341202e-003 - 1.9058810174465179e-001 - -7.3330029845237732e-002 - <_> - - <_> - - - - <_> - 16 8 2 3 -1. - <_> - 16 8 1 3 2. - 0 - -9.7162883321288973e-005 - 4.1498031467199326e-002 - -7.5053706765174866e-002 - <_> - - <_> - - - - <_> - 8 4 3 3 -1. - <_> - 7 5 3 1 3. - 1 - 3.4400381147861481e-002 - -5.5474020540714264e-002 - 2.4660380184650421e-001 - <_> - - <_> - - - - <_> - 10 6 3 1 -1. - <_> - 11 6 1 1 3. - 0 - 7.3116212151944637e-003 - -4.3518859893083572e-002 - 2.7988308668136597e-001 - <_> - - <_> - - - - <_> - 6 1 4 4 -1. - <_> - 7 1 2 4 2. - 0 - -1.3429949991405010e-002 - -3.6247709393501282e-001 - 3.9708640426397324e-002 - <_> - - <_> - - - - <_> - 7 2 8 2 -1. - <_> - 9 2 4 2 2. - 0 - -9.1758027672767639e-002 - 1. - -3.3344780094921589e-003 - <_> - - <_> - - - - <_> - 3 2 8 2 -1. - <_> - 5 2 4 2 2. - 0 - -6.6716182045638561e-003 - 1.0546670109033585e-001 - -1.4009909331798553e-001 - <_> - - <_> - - - - <_> - 5 1 10 2 -1. - <_> - 10 1 5 1 2. - <_> - 5 2 5 1 2. - 0 - 1.3265940360724926e-002 - -3.3783260732889175e-002 - 1.4028559625148773e-001 - <_> - - <_> - - - - <_> - 4 1 4 4 -1. - <_> - 5 1 2 4 2. - 0 - -1.2150679714977741e-002 - -3.2402610778808594e-001 - 4.1329998522996902e-002 - <_> - - <_> - - - - <_> - 10 6 3 1 -1. - <_> - 11 6 1 1 3. - 0 - -2.4970290251076221e-003 - 1.1668320000171661e-001 - -4.5901168137788773e-002 - <_> - - <_> - - - - <_> - 5 6 3 1 -1. - <_> - 6 6 1 1 3. - 0 - -2.3780330084264278e-003 - 2.3035770654678345e-001 - -5.9925749897956848e-002 - <_> - - <_> - - - - <_> - 8 5 10 4 -1. - <_> - 13 5 5 2 2. - <_> - 8 7 5 2 2. - 0 - 1.1058100312948227e-001 - 1.2656870298087597e-002 - -3.2122999429702759e-001 - <_> - - <_> - - - - <_> - 7 11 4 1 -1. - <_> - 8 11 2 1 2. - 0 - -4.5881681144237518e-003 - -5.6259912252426147e-001 - 2.2143730893731117e-002 - <_> - - <_> - - - - <_> - 15 2 3 1 -1. - <_> - 16 3 1 1 3. - 1 - 3.8563141133636236e-003 - 5.0461299717426300e-002 - -1.8779960274696350e-001 - <_> - - <_> - - - - <_> - 0 2 14 2 -1. - <_> - 0 2 7 1 2. - <_> - 7 3 7 1 2. - 0 - 3.3232510089874268e-002 - -3.6194700747728348e-002 - 3.8118681311607361e-001 - <_> - - <_> - - - - <_> - 11 2 1 4 -1. - <_> - 11 2 1 2 2. - 1 - -3.6123570054769516e-002 - 2.1880419552326202e-001 - -4.5539699494838715e-003 - <_> - - <_> - - - - <_> - 7 2 4 1 -1. - <_> - 7 2 2 1 2. - 1 - 7.2496462962590158e-005 - -2.3785440623760223e-001 - 6.5444566309452057e-002 - <_> - - <_> - - - - <_> - 12 2 3 4 -1. - <_> - 12 2 3 2 2. - 1 - -4.7242470085620880e-002 - 1.2158119678497314e-001 - -1.2862590141594410e-002 - <_> - - <_> - - - - <_> - 6 0 6 3 -1. - <_> - 9 0 3 3 2. - 0 - 8.3945877850055695e-003 - -1.2558129429817200e-001 - 9.8872929811477661e-002 - <_> - - <_> - - - - <_> - 16 8 2 3 -1. - <_> - 16 8 1 3 2. - 0 - -1.0565370321273804e-002 - -1.6977620124816895e-001 - 1.4602130278944969e-002 - <_> - - <_> - - - - <_> - 0 8 2 3 -1. - <_> - 1 8 1 3 2. - 0 - -8.1733884289860725e-003 - 2.1745790541172028e-001 - -6.1847139149904251e-002 - <_> - - <_> - - - - <_> - 5 2 8 3 -1. - <_> - 5 3 8 1 3. - 0 - -6.1808120459318161e-002 - 4.5185729861259460e-001 - -2.6334449648857117e-002 - <_> - - <_> - - - - <_> - 8 11 2 1 -1. - <_> - 9 11 1 1 2. - 0 - 4.0804222226142883e-003 - 1.8054539337754250e-002 - -7.1874141693115234e-001 - <_> - - <_> - - - - <_> - 16 1 2 4 -1. - <_> - 16 2 2 2 2. - 0 - 1.3910960406064987e-002 - 2.3350890725851059e-002 - -2.6776230335235596e-001 - <_> - - <_> - - - - <_> - 0 5 10 4 -1. - <_> - 0 5 5 2 2. - <_> - 5 7 5 2 2. - 0 - -2.5405980646610260e-002 - -2.9497951269149780e-001 - 3.8374088704586029e-002 - <_> - - <_> - - - - <_> - 8 5 10 4 -1. - <_> - 13 5 5 2 2. - <_> - 8 7 5 2 2. - 0 - 1.6777290403842926e-001 - 2.8599929646588862e-004 - -5.5159300565719604e-001 - <_> - - <_> - - - - <_> - 1 1 12 2 -1. - <_> - 1 1 6 1 2. - <_> - 7 2 6 1 2. - 0 - 2.3761730641126633e-002 - -4.5785948634147644e-002 - 2.5161430239677429e-001 - <_> - - <_> - - - - <_> - 2 0 15 2 -1. - <_> - 7 0 5 2 3. - 0 - 6.6237300634384155e-002 - -3.4752521663904190e-002 - 2.6538351178169250e-001 - <_> - - <_> - - - - <_> - 0 5 10 4 -1. - <_> - 0 5 5 2 2. - <_> - 5 7 5 2 2. - 0 - 8.1444196403026581e-002 - 3.5755679011344910e-002 - -3.4804859757423401e-001 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - 2.3394089657813311e-003 - -3.3602658659219742e-002 - 1.0252500325441360e-001 - <_> - - <_> - - - - <_> - 3 2 1 3 -1. - <_> - 2 3 1 1 3. - 1 - 4.5066410675644875e-003 - 4.4362049549818039e-002 - -2.4036149680614471e-001 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - -1.0031039710156620e-004 - 6.1728168278932571e-002 - -5.3097378462553024e-002 - <_> - - <_> - - - - <_> - 6 6 2 2 -1. - <_> - 6 6 1 1 2. - <_> - 7 7 1 1 2. - 0 - 3.0237529426813126e-003 - -6.2164731323719025e-002 - 1.8157570064067841e-001 - <_> - - <_> - - - - <_> - 11 0 3 1 -1. - <_> - 12 1 1 1 3. - 1 - -6.1851800419390202e-003 - 9.2360317707061768e-002 - -1.8650660291314125e-002 - <_> - - <_> - - - - <_> - 5 3 1 2 -1. - <_> - 5 4 1 1 2. - 0 - -9.3809583631809801e-005 - 8.8021188974380493e-002 - -1.2617850303649902e-001 - <_> - - <_> - - - - <_> - 13 3 2 1 -1. - <_> - 13 3 1 1 2. - 1 - 1.4543529599905014e-002 - 2.8216699138283730e-002 - -3.8093110918998718e-001 - <_> - - <_> - - - - <_> - 5 3 1 2 -1. - <_> - 5 3 1 1 2. - 1 - 8.3325942978262901e-003 - 2.8149429708719254e-002 - -3.9534220099449158e-001 - <_> - - <_> - - - - <_> - 13 5 3 3 -1. - <_> - 14 5 1 3 3. - 0 - -9.0263289166614413e-005 - 1.0053239762783051e-001 - -1.6846680641174316e-001 - <_> - - <_> - - - - <_> - 7 4 5 3 -1. - <_> - 6 5 5 1 3. - 1 - -4.0444839745759964e-002 - 4.4246968626976013e-001 - -2.5906469672918320e-002 - <_> - - <_> - - - - <_> - 5 9 8 1 -1. - <_> - 7 9 4 1 2. - 0 - -1.5071580186486244e-002 - -3.9157819747924805e-001 - 3.2732911407947540e-002 - <_> - - <_> - - - - <_> - 0 0 6 9 -1. - <_> - 2 0 2 9 3. - 0 - -2.4117240682244301e-002 - 1.0829959809780121e-001 - -1.0823729634284973e-001 - <_> - - <_> - - - - <_> - 3 5 12 3 -1. - <_> - 6 5 6 3 2. - 0 - 4.8642940819263458e-002 - 2.5470780208706856e-002 - -4.2936301231384277e-001 - <_> - - <_> - - - - <_> - 4 4 3 4 -1. - <_> - 5 4 1 4 3. - 0 - -6.2909321859478951e-003 - 1.6408300399780273e-001 - -6.6978372633457184e-002 - <_> - - <_> - - - - <_> - 11 0 3 1 -1. - <_> - 12 1 1 1 3. - 1 - -2.8071459382772446e-002 - -5.0821262598037720e-001 - 4.2055668309330940e-003 - <_> - - <_> - - - - <_> - 7 0 1 3 -1. - <_> - 6 1 1 1 3. - 1 - 9.8752342164516449e-003 - 3.0895600095391273e-002 - -3.6008161306381226e-001 - <_> - - <_> - - - - <_> - 0 11 18 1 -1. - <_> - 0 11 9 1 2. - 0 - 3.3613730221986771e-002 - 3.5042371600866318e-002 - -3.0913650989532471e-001 - <_> - - <_> - - - - <_> - 2 5 4 3 -1. - <_> - 3 5 2 3 2. - 0 - -9.5183821395039558e-003 - 1.4006739854812622e-001 - -8.0449193716049194e-002 - <_> - - <_> - - - - <_> - 15 6 2 4 -1. - <_> - 14 7 2 2 2. - 1 - 2.9920000582933426e-002 - 9.9910451099276543e-003 - -1.4463490247726440e-001 - <_> - - <_> - - - - <_> - 3 6 4 2 -1. - <_> - 4 7 2 2 2. - 1 - -2.4601869285106659e-002 - -3.5186180472373962e-001 - 3.2366871833801270e-002 - <_> - - <_> - - - - <_> - 1 0 16 9 -1. - <_> - 1 3 16 3 3. - 0 - 2.9126951098442078e-001 - -2.5616630911827087e-002 - 4.3393591046333313e-001 - <_> - - <_> - - - - <_> - 4 8 6 4 -1. - <_> - 6 8 2 4 3. - 0 - -4.0764931589365005e-002 - -5.0976359844207764e-001 - 2.2032100707292557e-002 - <_> - - <_> - - - - <_> - 15 3 3 3 -1. - <_> - 15 4 3 1 3. - 0 - 1.7800629138946533e-002 - 1.9135050475597382e-002 - -4.2754751443862915e-001 - <_> - - <_> - - - - <_> - 7 0 3 3 -1. - <_> - 7 1 3 1 3. - 0 - 8.7978048250079155e-003 - -6.5080061554908752e-002 - 1.5290130674839020e-001 - <_> - - <_> - - - - <_> - 11 0 3 3 -1. - <_> - 11 1 3 1 3. - 0 - -6.4738159999251366e-003 - 1.6798080503940582e-001 - -5.1510188728570938e-002 - <_> - - <_> - - - - <_> - 0 3 3 3 -1. - <_> - 0 4 3 1 3. - 0 - -1.6864249482750893e-002 - -5.1681691408157349e-001 - 2.2280450910329819e-002 - <_> - - <_> - - - - <_> - 11 8 3 4 -1. - <_> - 12 8 1 4 3. - 0 - -1.0029999539256096e-002 - -3.4445670247077942e-001 - 2.4154469370841980e-002 - <_> - - <_> - - - - <_> - 1 0 14 2 -1. - <_> - 1 0 7 1 2. - <_> - 8 1 7 1 2. - 0 - 2.3689860478043556e-002 - -5.5780500173568726e-002 - 1.7974789440631866e-001 - <_> - - <_> - - - - <_> - 11 10 2 1 -1. - <_> - 11 10 1 1 2. - 0 - -3.5954909399151802e-003 - -2.9106938838958740e-001 - 1.8568839877843857e-002 - <_> - - <_> - - - - <_> - 1 10 16 2 -1. - <_> - 5 10 8 2 2. - 0 - -3.5044439136981964e-002 - 1.4640870690345764e-001 - -7.3545977473258972e-002 - <_> - - <_> - - - - <_> - 2 11 16 1 -1. - <_> - 6 11 8 1 2. - 0 - 5.0175017677247524e-003 - -6.3143156468868256e-002 - 1.2632110714912415e-001 - <_> - - <_> - - - - <_> - 4 8 3 4 -1. - <_> - 5 8 1 4 3. - 0 - -1.3052280060946941e-002 - -4.5200330018997192e-001 - 2.3266959935426712e-002 - <_> - - <_> - - - - <_> - 16 5 2 7 -1. - <_> - 16 5 1 7 2. - 0 - -1.9564910326153040e-003 - 7.2890207171440125e-002 - -1.5138550102710724e-001 - <_> - - <_> - - - - <_> - 0 5 2 7 -1. - <_> - 1 5 1 7 2. - 0 - 1.9179390743374825e-002 - -2.7251120656728745e-002 - 4.2502841353416443e-001 - <_> - - <_> - - - - <_> - 16 7 2 2 -1. - <_> - 16 8 2 1 2. - 0 - 9.5272713224403560e-005 - -1.3008250296115875e-001 - 3.9709929376840591e-002 - <_> - - <_> - - - - <_> - 8 8 2 2 -1. - <_> - 8 8 1 2 2. - 1 - -1.4395490288734436e-002 - -2.2929459810256958e-001 - 4.1678968816995621e-002 - <_> - - <_> - - - - <_> - 7 8 4 3 -1. - <_> - 7 9 4 1 3. - 0 - -1.1709270067512989e-002 - 2.5639939308166504e-001 - -4.5481789857149124e-002 - <_> - - <_> - - - - <_> - 8 7 2 3 -1. - <_> - 8 8 2 1 3. - 0 - -7.6440530829131603e-003 - 2.8145501017570496e-001 - -4.3814260512590408e-002 - <_> - - <_> - - - - <_> - 16 7 2 2 -1. - <_> - 16 8 2 1 2. - 0 - 1.7276149243116379e-002 - 1.1722300201654434e-002 - -3.9212688803672791e-001 - <_> - - <_> - - - - <_> - 0 7 2 2 -1. - <_> - 0 8 2 1 2. - 0 - -2.8190009761601686e-003 - -2.8279209136962891e-001 - 3.6502439528703690e-002 - <_> - - <_> - - - - <_> - 6 5 8 6 -1. - <_> - 6 8 8 3 2. - 0 - -1.8481500446796417e-002 - -5.1169121265411377e-001 - 1.1270510032773018e-002 - <_> - - <_> - - - - <_> - 5 3 3 2 -1. - <_> - 6 4 1 2 3. - 1 - 2.3208990693092346e-002 - -2.9588380828499794e-002 - 3.4806481003761292e-001 - <_> - - <_> - - - - <_> - 14 3 1 2 -1. - <_> - 14 4 1 1 2. - 0 - 3.8326040375977755e-003 - -1.6199409961700439e-002 - 2.3312510550022125e-001 - <_> - - <_> - - - - <_> - 3 3 1 2 -1. - <_> - 3 4 1 1 2. - 0 - -1.2569040700327605e-004 - 8.2235969603061676e-002 - -1.2257509678602219e-001 - <_> - - <_> - - - - <_> - 11 0 3 1 -1. - <_> - 12 0 1 1 3. - 0 - -4.9403999000787735e-003 - -3.2972040772438049e-001 - 1.6205759719014168e-002 - <_> - - <_> - - - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - 0 - -9.9995522759854794e-005 - 1.0087980329990387e-001 - -8.4534652531147003e-002 - <_> - - <_> - - - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - -2.0880589261651039e-002 - -5.3558897972106934e-001 - 6.1522522009909153e-003 - <_> - - <_> - - - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - 9.4737410545349121e-003 - 2.2640680894255638e-002 - -3.5979229211807251e-001 - <_> - - <_> - - - - <_> - 15 6 2 4 -1. - <_> - 15 6 1 4 2. - 1 - 1.0163559578359127e-002 - -1.7618730664253235e-002 - 1.7577609419822693e-001 - <_> - - <_> - - - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - -1.6203319653868675e-002 - -3.0511561036109924e-001 - 2.7852470055222511e-002 - <_> - - <_> - - - - <_> - 11 1 5 6 -1. - <_> - 11 1 5 3 2. - 1 - -2.0264959335327148e-001 - 9.8889827728271484e-002 - -1.6635639593005180e-002 - <_> - - <_> - - - - <_> - 7 1 6 5 -1. - <_> - 7 1 3 5 2. - 1 - -1.8808260560035706e-001 - -3.3819800615310669e-001 - 2.7649369090795517e-002 - <_> - - <_> - - - - <_> - 7 9 4 3 -1. - <_> - 7 10 4 1 3. - 0 - -7.3039499111473560e-003 - 1.6829389333724976e-001 - -4.9701988697052002e-002 - <_> - - <_> - - - - <_> - 2 2 3 9 -1. - <_> - 3 5 1 3 9. - 0 - -2.1467709541320801e-001 - -8.2673180103302002e-001 - 9.7144627943634987e-003 - <_> - - <_> - - - - <_> - 14 0 4 3 -1. - <_> - 13 1 4 1 3. - 1 - -4.4587019830942154e-002 - 3.8129490613937378e-001 - -2.8068590909242630e-002 - <_> - - <_> - - - - <_> - 2 2 14 3 -1. - <_> - 2 3 14 1 3. - 0 - 2.2911230102181435e-002 - -7.0285782217979431e-002 - 1.2464100122451782e-001 - <_> - - <_> - - - - <_> - 11 3 1 6 -1. - <_> - 11 6 1 3 2. - 0 - 9.4582252204418182e-003 - -5.0712950527667999e-002 - 6.1203949153423309e-002 - <_> - - <_> - - - - <_> - 3 3 3 6 -1. - <_> - 4 5 1 2 9. - 0 - -1.2501789629459381e-001 - -6.4006787538528442e-001 - 1.1908539570868015e-002 - <_> - - <_> - - - - <_> - 14 0 4 3 -1. - <_> - 13 1 4 1 3. - 1 - 1.5444659627974033e-002 - -5.8896608650684357e-002 - 1.0827670246362686e-001 - <_> - - <_> - - - - <_> - 4 0 4 1 -1. - <_> - 5 0 2 1 2. - 0 - 1.5270099975168705e-003 - 4.3858438730239868e-002 - -1.9123759865760803e-001 - <_> - - <_> - - - - <_> - 12 0 6 4 -1. - <_> - 15 0 3 2 2. - <_> - 12 2 3 2 2. - 0 - -5.3543699905276299e-003 - 3.6371748894453049e-002 - -4.0430441498756409e-002 - <_> - - <_> - - - - <_> - 0 0 6 4 -1. - <_> - 0 0 3 2 2. - <_> - 3 2 3 2 2. - 0 - -1.5797719359397888e-002 - 1.6159279644489288e-001 - -5.5993270128965378e-002 - <_> - - <_> - - - - <_> - 16 0 2 3 -1. - <_> - 15 1 2 1 3. - 1 - -1.2601099908351898e-002 - 1.7859940230846405e-001 - -2.9063930734992027e-002 - <_> - - <_> - - - - <_> - 4 0 3 4 -1. - <_> - 5 1 1 4 3. - 1 - 8.4664657711982727e-002 - -1.0474080219864845e-002 - 8.0984550714492798e-001 - <_> - - <_> - - - - <_> - 16 2 2 1 -1. - <_> - 16 2 1 1 2. - 0 - 1.0696209938032553e-004 - -4.8453640192747116e-002 - 6.7813120782375336e-002 - <_> - - <_> - - - - <_> - 0 2 2 1 -1. - <_> - 1 2 1 1 2. - 0 - -1.1764469672925770e-004 - 5.3902100771665573e-002 - -1.8017460405826569e-001 - <_> - - <_> - - - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - 9.8984912037849426e-003 - 1.9158050417900085e-002 - -2.7733120322227478e-001 - <_> - - <_> - - - - <_> - 2 4 2 2 -1. - <_> - 2 4 1 1 2. - <_> - 3 5 1 1 2. - 0 - -1.1610490037128329e-004 - 9.6694946289062500e-002 - -8.9068733155727386e-002 - <_> - - <_> - - - - <_> - 14 4 2 2 -1. - <_> - 15 4 1 1 2. - <_> - 14 5 1 1 2. - 0 - 3.3369490411132574e-003 - -3.5014580935239792e-002 - 2.6304298639297485e-001 - <_> - - <_> - - - - <_> - 2 4 2 2 -1. - <_> - 2 4 1 1 2. - <_> - 3 5 1 1 2. - 0 - 7.8220298746600747e-005 - -8.2813262939453125e-002 - 1.0475490242242813e-001 - <_> - - <_> - - - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - -9.5098288729786873e-003 - -2.6514530181884766e-001 - 2.4094179272651672e-002 - <_> - - <_> - - - - <_> - 9 3 3 3 -1. - <_> - 8 4 3 1 3. - 1 - -1.2982529588043690e-002 - 6.4530380070209503e-002 - -1.3815590739250183e-001 - <_> - - <_> - - - - <_> - 10 5 2 4 -1. - <_> - 11 5 1 2 2. - <_> - 10 7 1 2 2. - 0 - 3.7175510078668594e-003 - -3.4010428935289383e-002 - 7.3918223381042480e-002 - <_> - - <_> - - - - <_> - 6 5 2 4 -1. - <_> - 6 5 1 2 2. - <_> - 7 7 1 2 2. - 0 - -8.9635830372571945e-003 - 3.1214600801467896e-001 - -3.1653881072998047e-002 - <_> - - <_> - - - - <_> - 12 0 2 9 -1. - <_> - 12 0 1 9 2. - 1 - -3.8576980587095022e-003 - 6.2791481614112854e-002 - -4.3215770274400711e-002 - <_> - - <_> - - - - <_> - 6 0 9 2 -1. - <_> - 6 0 9 1 2. - 1 - 5.7608600705862045e-002 - 1.8788769841194153e-002 - -5.0399798154830933e-001 - <_> - - <_> - - - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - 0 - 3.1125131063163280e-003 - 3.5144101828336716e-002 - -2.3461879789829254e-001 - <_> - - <_> - - - - <_> - 0 0 4 1 -1. - <_> - 1 0 2 1 2. - 0 - -7.6296702027320862e-003 - -5.3097987174987793e-001 - 1.4961520209908485e-002 - <_> - - <_> - - - - <_> - 12 1 6 2 -1. - <_> - 12 1 3 2 2. - 0 - -6.5751709043979645e-003 - 5.0126578658819199e-002 - -3.6364991217851639e-002 - <_> - - <_> - - - - <_> - 0 1 6 2 -1. - <_> - 3 1 3 2 2. - 0 - 2.1125350147485733e-002 - -2.4575449526309967e-002 - 3.9593890309333801e-001 - <_> - - <_> - - - - <_> - 11 7 1 3 -1. - <_> - 11 8 1 1 3. - 0 - -3.0265909153968096e-003 - 1.1584889888763428e-001 - -2.8826450929045677e-002 - <_> - - <_> - - - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - 0 - 1.2929990189149976e-003 - 2.6206869632005692e-002 - -3.0620381236076355e-001 - <_> - - <_> - - - - <_> - 16 8 2 4 -1. - <_> - 17 8 1 2 2. - <_> - 16 10 1 2 2. - 0 - 9.5255090855062008e-005 - -9.1093979775905609e-002 - 5.6246880441904068e-002 - <_> - - <_> - - - - <_> - 0 8 2 4 -1. - <_> - 0 8 1 2 2. - <_> - 1 10 1 2 2. - 0 - -1.1346739716827869e-002 - 4.4599908590316772e-001 - -1.9490949809551239e-002 - <_> - - <_> - - - - <_> - 16 6 2 2 -1. - <_> - 16 6 2 1 2. - 1 - -3.9465399459004402e-003 - 7.9005546867847443e-002 - -1.0729230195283890e-001 - <_> - - <_> - - - - <_> - 2 6 2 2 -1. - <_> - 2 6 1 2 2. - 1 - -1.3709669932723045e-002 - -2.6804009079933167e-001 - 3.4483738243579865e-002 - <_> - - <_> - - - - <_> - 8 6 4 2 -1. - <_> - 9 6 2 2 2. - 0 - -3.7944439798593521e-002 - -3.8875928521156311e-001 - 4.3536517769098282e-003 - <_> - - <_> - - - - <_> - 6 6 4 2 -1. - <_> - 7 6 2 2 2. - 0 - -5.1233209669589996e-003 - 1.1811450123786926e-001 - -7.6210573315620422e-002 - -1.5979900360107422e+000 - 17 - -1 - <_> - - - <_> - - <_> - - - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - 0 - 5.4262988269329071e-003 - -3.0050519108772278e-001 - 6.7211848497390747e-001 - <_> - - <_> - - - - <_> - 7 3 4 3 -1. - <_> - 7 4 4 1 3. - 0 - -1.9688049331307411e-002 - 4.2098221182823181e-001 - -1.8416300415992737e-001 - <_> - - <_> - - - - <_> - 7 0 3 4 -1. - <_> - 7 1 3 2 2. - 0 - 1.0437469929456711e-001 - 7.9985307529568672e-003 - -1.3431090087890625e+003 - <_> - - <_> - - - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - 0 - -1.8829930573701859e-002 - 1.8901979923248291e-001 - -3.1901699304580688e-001 - <_> - - <_> - - - - <_> - 1 0 4 7 -1. - <_> - 3 0 2 7 2. - 0 - -9.0354820713400841e-003 - 9.9983938038349152e-002 - -3.9372038841247559e-001 - <_> - - <_> - - - - <_> - 11 6 3 1 -1. - <_> - 12 6 1 1 3. - 0 - 8.2086473703384399e-003 - -1.3759939372539520e-001 - 4.2291760444641113e-001 - <_> - - <_> - - - - <_> - 7 1 5 4 -1. - <_> - 7 1 5 2 2. - 1 - 1.9290760159492493e-001 - -1.9123300909996033e-002 - -7.1446881103515625e+002 - <_> - - <_> - - - - <_> - 10 7 2 2 -1. - <_> - 11 7 1 1 2. - <_> - 10 8 1 1 2. - 0 - 7.5846072286367416e-003 - -3.0995719134807587e-002 - 2.8077399730682373e-001 - <_> - - <_> - - - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - 0 - 5.4157869890332222e-003 - 9.7298726439476013e-002 - -4.8166570067405701e-001 - <_> - - <_> - - - - <_> - 11 6 3 1 -1. - <_> - 12 6 1 1 3. - 0 - -3.2942730467766523e-003 - 2.7938959002494812e-001 - -4.1473869234323502e-002 - <_> - - <_> - - - - <_> - 0 3 3 1 -1. - <_> - 1 3 1 1 3. - 0 - -1.1245800124015659e-004 - 1.5364760160446167e-001 - -1.6658879816532135e-001 - <_> - - <_> - - - - <_> - 1 6 16 4 -1. - <_> - 9 6 8 2 2. - <_> - 1 8 8 2 2. - 0 - 1.7863340675830841e-002 - 7.2040103375911713e-002 - -3.2273280620574951e-001 - <_> - - <_> - - - - <_> - 4 4 4 3 -1. - <_> - 3 5 4 1 3. - 1 - -9.2770978808403015e-003 - 1.5470069646835327e-001 - -1.5196369588375092e-001 - <_> - - <_> - - - - <_> - 9 3 4 8 -1. - <_> - 9 7 4 4 2. - 0 - 4.9009688198566437e-002 - -2.1719500422477722e-001 - 4.7354388982057571e-002 - <_> - - <_> - - - - <_> - 3 4 12 2 -1. - <_> - 3 5 12 1 2. - 0 - -4.0119819343090057e-002 - 2.7460759878158569e-001 - -8.6348831653594971e-002 - <_> - - <_> - - - - <_> - 11 0 3 12 -1. - <_> - 11 6 3 6 2. - 0 - 1.9793610274791718e-001 - 1.8624650314450264e-002 - -5.3495907783508301e-001 - <_> - - <_> - - - - <_> - 4 0 3 12 -1. - <_> - 4 6 3 6 2. - 0 - 3.8065958768129349e-002 - -2.5904580950737000e-001 - 1.0311370342969894e-001 - <_> - - <_> - - - - <_> - 3 0 12 4 -1. - <_> - 3 1 12 2 2. - 0 - 3.7357859313488007e-002 - -1.1903320252895355e-001 - 1.6979260742664337e-001 - <_> - - <_> - - - - <_> - 0 0 18 3 -1. - <_> - 6 0 6 3 3. - 0 - -8.9973270893096924e-002 - 1.6638070344924927e-001 - -1.2824270129203796e-001 - <_> - - <_> - - - - <_> - 17 1 1 2 -1. - <_> - 17 2 1 1 2. - 0 - -3.6491220816969872e-003 - -2.0123389363288879e-001 - 2.1278910338878632e-002 - <_> - - <_> - - - - <_> - 0 1 1 2 -1. - <_> - 0 2 1 1 2. - 0 - -9.1840978711843491e-005 - 1.0628490149974823e-001 - -1.7940549552440643e-001 - <_> - - <_> - - - - <_> - 15 1 3 1 -1. - <_> - 16 2 1 1 3. - 1 - -1.1649549938738346e-002 - -4.3736520409584045e-001 - 3.0724890530109406e-002 - <_> - - <_> - - - - <_> - 3 1 1 3 -1. - <_> - 2 2 1 1 3. - 1 - -7.1681910194456577e-003 - -3.2502311468124390e-001 - 5.0562191754579544e-002 - <_> - - <_> - - - - <_> - 7 10 7 2 -1. - <_> - 7 11 7 1 2. - 0 - 3.7875070702284575e-003 - -1.9940949976444244e-001 - 7.7970452606678009e-002 - <_> - - <_> - - - - <_> - 3 5 3 3 -1. - <_> - 4 5 1 3 3. - 0 - -5.3427959792315960e-003 - 1.4677309989929199e-001 - -1.1329550296068192e-001 - <_> - - <_> - - - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - 0 - 2.3160399869084358e-002 - -4.2170170694589615e-002 - 3.1582599878311157e-001 - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - -7.6770680025219917e-003 - 3.1857290863990784e-001 - -5.1229890435934067e-002 - <_> - - <_> - - - - <_> - 8 0 3 3 -1. - <_> - 9 0 1 3 3. - 0 - 7.1013960987329483e-003 - 3.1445540487766266e-002 - -3.2645389437675476e-001 - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 7 2 2 2. - 1 - -2.0252959802746773e-002 - -4.0472069382667542e-001 - 3.4693039953708649e-002 - <_> - - <_> - - - - <_> - 7 0 4 4 -1. - <_> - 8 0 2 4 2. - 0 - -9.6413884311914444e-003 - -3.3648169040679932e-001 - 4.1794441640377045e-002 - <_> - - <_> - - - - <_> - 7 2 4 3 -1. - <_> - 7 3 4 1 3. - 0 - -2.3985069245100021e-002 - 3.1614878773689270e-001 - -4.6249549835920334e-002 - <_> - - <_> - - - - <_> - 15 5 3 1 -1. - <_> - 16 5 1 1 3. - 0 - -1.4840610325336456e-002 - -7.3656052350997925e-001 - 8.9046377688646317e-003 - <_> - - <_> - - - - <_> - 0 5 3 1 -1. - <_> - 1 5 1 1 3. - 0 - -9.4987051852513105e-005 - 1.1953199654817581e-001 - -1.1896529793739319e-001 - <_> - - <_> - - - - <_> - 11 2 3 4 -1. - <_> - 11 2 3 2 2. - 1 - 7.0412069559097290e-002 - -4.0320910513401031e-002 - 1.6706739366054535e-001 - <_> - - <_> - - - - <_> - 4 2 1 3 -1. - <_> - 3 3 1 1 3. - 1 - 4.9093589186668396e-003 - 4.8656750470399857e-002 - -2.8003680706024170e-001 - <_> - - <_> - - - - <_> - 6 10 6 1 -1. - <_> - 8 10 2 1 3. - 0 - -9.6227843314409256e-003 - -4.0062141418457031e-001 - 3.0084159225225449e-002 - <_> - - <_> - - - - <_> - 0 5 14 7 -1. - <_> - 7 5 7 7 2. - 0 - 1.6841889917850494e-001 - 1.9700720906257629e-002 - -5.4525882005691528e-001 - <_> - - <_> - - - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - 0 - 9.9319182336330414e-003 - 6.6423388198018074e-003 - -4.9300599098205566e-001 - <_> - - <_> - - - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - 0 - -9.2917856818530709e-005 - 7.3449976742267609e-002 - -1.6144999861717224e-001 - <_> - - <_> - - - - <_> - 11 5 3 2 -1. - <_> - 12 5 1 2 3. - 0 - 4.0923128835856915e-003 - -4.7123961150646210e-002 - 7.2986431419849396e-002 - <_> - - <_> - - - - <_> - 6 1 4 2 -1. - <_> - 7 1 2 2 2. - 0 - 8.6956098675727844e-003 - 2.1329889073967934e-002 - -5.1486510038375854e-001 - <_> - - <_> - - - - <_> - 11 5 3 2 -1. - <_> - 12 5 1 2 3. - 0 - -9.8282760009169579e-003 - 1.9071890413761139e-001 - -2.5422919541597366e-002 - <_> - - <_> - - - - <_> - 0 1 15 6 -1. - <_> - 5 3 5 2 9. - 0 - -7.6692271232604980e-001 - -6.6095298528671265e-001 - 1.8228070810437202e-002 - <_> - - <_> - - - - <_> - 6 1 12 2 -1. - <_> - 12 1 6 1 2. - <_> - 6 2 6 1 2. - 0 - -3.2330170273780823e-002 - 1.4530169963836670e-001 - -1.4983410015702248e-002 - <_> - - <_> - - - - <_> - 5 7 2 3 -1. - <_> - 5 7 1 3 2. - 1 - 1.0294170118868351e-002 - 2.4919189512729645e-002 - -4.5525848865509033e-001 - <_> - - <_> - - - - <_> - 11 5 3 2 -1. - <_> - 12 5 1 2 3. - 0 - -3.0171580612659454e-002 - -4.6189090609550476e-001 - 3.3882521092891693e-003 - <_> - - <_> - - - - <_> - 4 5 3 2 -1. - <_> - 5 5 1 2 3. - 0 - -4.7148168087005615e-003 - 1.9720679521560669e-001 - -6.3187547028064728e-002 - <_> - - <_> - - - - <_> - 9 5 4 3 -1. - <_> - 10 5 2 3 2. - 0 - -9.0056415647268295e-003 - 1.8307769298553467e-001 - -7.2591513395309448e-002 - <_> - - <_> - - - - <_> - 5 5 4 3 -1. - <_> - 6 5 2 3 2. - 0 - -1.0803050361573696e-002 - 2.9357129335403442e-001 - -5.2083630114793777e-002 - <_> - - <_> - - - - <_> - 8 3 6 2 -1. - <_> - 10 3 2 2 3. - 0 - -2.2687910124659538e-002 - -2.2910049557685852e-001 - 2.9485609382390976e-002 - <_> - - <_> - - - - <_> - 7 8 3 1 -1. - <_> - 8 9 1 1 3. - 1 - 8.0813551321625710e-003 - 2.8026320040225983e-002 - -3.9691281318664551e-001 - <_> - - <_> - - - - <_> - 10 5 2 4 -1. - <_> - 11 5 1 2 2. - <_> - 10 7 1 2 2. - 0 - 9.2932283878326416e-003 - -2.3965410888195038e-002 - 1.1968089640140533e-001 - <_> - - <_> - - - - <_> - 4 3 6 2 -1. - <_> - 6 3 2 2 3. - 0 - -2.3424040526151657e-002 - -2.8772619366645813e-001 - 3.8220979273319244e-002 - <_> - - <_> - - - - <_> - 6 1 12 2 -1. - <_> - 12 1 6 1 2. - <_> - 6 2 6 1 2. - 0 - -7.5453490018844604e-002 - -8.9001321792602539e-001 - 9.9092291202396154e-004 - <_> - - <_> - - - - <_> - 0 1 12 2 -1. - <_> - 0 1 6 1 2. - <_> - 6 2 6 1 2. - 0 - -2.0602909848093987e-002 - 2.4050650000572205e-001 - -4.7928169369697571e-002 - <_> - - <_> - - - - <_> - 8 0 2 3 -1. - <_> - 8 1 2 1 3. - 0 - -7.1518528275191784e-003 - 2.2132579982280731e-001 - -6.0036528855562210e-002 - <_> - - <_> - - - - <_> - 7 0 3 2 -1. - <_> - 7 1 3 1 2. - 0 - 4.1199801489710808e-003 - -8.7927162647247314e-002 - 1.6041250526905060e-001 - <_> - - <_> - - - - <_> - 12 0 3 3 -1. - <_> - 13 1 1 3 3. - 1 - 3.9387959986925125e-002 - 1.0958000086247921e-002 - -2.2292630374431610e-001 - <_> - - <_> - - - - <_> - 6 0 3 3 -1. - <_> - 5 1 3 1 3. - 1 - 1.0546170175075531e-002 - 5.3426049649715424e-002 - -2.7179110050201416e-001 - <_> - - <_> - - - - <_> - 10 0 4 2 -1. - <_> - 11 0 2 2 2. - 0 - -1.1257980018854141e-002 - -5.5188918113708496e-001 - 1.2321829795837402e-002 - <_> - - <_> - - - - <_> - 5 7 2 1 -1. - <_> - 6 7 1 1 2. - 0 - 2.8547599868034013e-005 - -1.0614909976720810e-001 - 1.0695829987525940e-001 - <_> - - <_> - - - - <_> - 11 2 3 4 -1. - <_> - 11 2 3 2 2. - 1 - 1.4024679549038410e-003 - -6.3827931880950928e-002 - 3.6412809044122696e-002 - <_> - - <_> - - - - <_> - 6 6 2 4 -1. - <_> - 6 6 1 4 2. - 1 - -2.5279590860009193e-002 - -2.3291009664535522e-001 - 5.1007620990276337e-002 - <_> - - <_> - - - - <_> - 16 5 2 6 -1. - <_> - 16 7 2 2 3. - 0 - 5.5645029991865158e-002 - 1.4120610430836678e-003 - -5.9250742197036743e-001 - <_> - - <_> - - - - <_> - 0 5 2 6 -1. - <_> - 0 7 2 2 3. - 0 - 2.3897020146250725e-002 - 2.4702310562133789e-002 - -4.1002118587493896e-001 - <_> - - <_> - - - - <_> - 15 6 3 2 -1. - <_> - 16 6 1 2 3. - 0 - 1.7050260677933693e-002 - 8.3261402323842049e-003 - -3.5209038853645325e-001 - <_> - - <_> - - - - <_> - 0 6 3 2 -1. - <_> - 1 6 1 2 3. - 0 - -7.8733973205089569e-003 - 2.3625299334526062e-001 - -4.2287878692150116e-002 - <_> - - <_> - - - - <_> - 15 5 3 4 -1. - <_> - 16 5 1 4 3. - 0 - -2.5967480614781380e-002 - -3.5506701469421387e-001 - 1.0870999656617641e-002 - <_> - - <_> - - - - <_> - 0 5 3 4 -1. - <_> - 1 5 1 4 3. - 0 - 5.1288940012454987e-003 - -7.0529833436012268e-002 - 1.7466700077056885e-001 - <_> - - <_> - - - - <_> - 17 4 1 3 -1. - <_> - 17 5 1 1 3. - 0 - 5.2364799194037914e-003 - 2.0953370258212090e-002 - -3.3864089846611023e-001 - <_> - - <_> - - - - <_> - 4 0 4 2 -1. - <_> - 5 0 2 2 2. - 0 - 5.0087850540876389e-003 - 2.9292659834027290e-002 - -3.4224748611450195e-001 - <_> - - <_> - - - - <_> - 11 0 1 2 -1. - <_> - 11 0 1 1 2. - 1 - 1.9541790708899498e-002 - 1.5414350200444460e-003 - -2.3330779373645782e-001 - <_> - - <_> - - - - <_> - 7 0 2 1 -1. - <_> - 7 0 1 1 2. - 1 - 1.2687229551374912e-002 - -3.2202750444412231e-002 - 3.4885931015014648e-001 - <_> - - <_> - - - - <_> - 1 4 17 4 -1. - <_> - 1 5 17 2 2. - 0 - -3.1968150287866592e-002 - 7.6574698090553284e-002 - -1.1693509668111801e-001 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 0 3 18 6 2. - 0 - -8.4089142084121704e-001 - -3.7160590291023254e-001 - 2.8848029673099518e-002 - <_> - - <_> - - - - <_> - 14 9 1 2 -1. - <_> - 14 9 1 1 2. - 1 - -1.2128669914091006e-004 - 3.5618349909782410e-002 - -8.1658117473125458e-002 - <_> - - <_> - - - - <_> - 4 9 2 1 -1. - <_> - 4 9 1 1 2. - 1 - -1.1257309961365536e-004 - 6.1848249286413193e-002 - -1.7893390357494354e-001 - <_> - - <_> - - - - <_> - 8 5 10 4 -1. - <_> - 13 5 5 2 2. - <_> - 8 7 5 2 2. - 0 - 1.5692369639873505e-001 - 2.0418250933289528e-003 - -3.8372790813446045e-001 - <_> - - <_> - - - - <_> - 0 4 1 3 -1. - <_> - 0 5 1 1 3. - 0 - 2.9397590551525354e-003 - 3.6909751594066620e-002 - -2.6979750394821167e-001 - <_> - - <_> - - - - <_> - 14 6 3 3 -1. - <_> - 15 6 1 3 3. - 0 - -2.5340609718114138e-003 - 1.2149509787559509e-001 - -1.0271450132131577e-001 - <_> - - <_> - - - - <_> - 1 6 3 3 -1. - <_> - 2 6 1 3 3. - 0 - 7.0472261868417263e-003 - -5.1498528569936752e-002 - 1.9663390517234802e-001 - <_> - - <_> - - - - <_> - 14 5 3 1 -1. - <_> - 15 6 1 1 3. - 1 - -3.5378870088607073e-003 - 1.1377040296792984e-001 - -1.2270720303058624e-001 - <_> - - <_> - - - - <_> - 9 2 8 2 -1. - <_> - 9 2 4 2 2. - 1 - -1.9171670079231262e-001 - 2.0281049609184265e-001 - -5.9293661266565323e-002 - <_> - - <_> - - - - <_> - 14 5 3 1 -1. - <_> - 15 6 1 1 3. - 1 - -2.8194790706038475e-002 - -4.0183740854263306e-001 - 9.4950878992676735e-003 - <_> - - <_> - - - - <_> - 4 5 1 3 -1. - <_> - 3 6 1 1 3. - 1 - -2.7471040375530720e-003 - 1.3657639920711517e-001 - -8.3562202751636505e-002 - <_> - - <_> - - - - <_> - 12 5 2 2 -1. - <_> - 13 5 1 1 2. - <_> - 12 6 1 1 2. - 0 - -2.3678690195083618e-003 - 2.8895410895347595e-001 - -7.0791177451610565e-002 - <_> - - <_> - - - - <_> - 8 9 2 1 -1. - <_> - 8 9 1 1 2. - 1 - -1.0364330373704433e-002 - -3.6532059311866760e-001 - 3.1027559190988541e-002 - <_> - - <_> - - - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 0 - -3.1868910882622004e-003 - 1.2471160292625427e-001 - -2.1058630198240280e-002 - <_> - - <_> - - - - <_> - 4 0 3 2 -1. - <_> - 4 0 3 1 2. - 1 - -1.5623000450432301e-002 - -2.9756268858909607e-001 - 3.3180721104145050e-002 - <_> - - <_> - - - - <_> - 2 0 16 2 -1. - <_> - 10 0 8 1 2. - <_> - 2 1 8 1 2. - 0 - 1.7447229474782944e-003 - -5.5369090288877487e-002 - 8.0895766615867615e-002 - <_> - - <_> - - - - <_> - 4 0 3 3 -1. - <_> - 4 1 3 1 3. - 0 - -8.7693594396114349e-003 - 2.0353169739246368e-001 - -5.9447389096021652e-002 - <_> - - <_> - - - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 0 - 1.0933070007013157e-004 - -5.3917091339826584e-002 - 6.7618027329444885e-002 - <_> - - <_> - - - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - 0 - -1.2108810187783092e-004 - 5.5683720856904984e-002 - -1.7708249390125275e-001 - <_> - - <_> - - - - <_> - 14 0 4 4 -1. - <_> - 16 0 2 2 2. - <_> - 14 2 2 2 2. - 0 - -9.8970606923103333e-003 - 9.2097222805023193e-002 - -3.7907868623733521e-002 - <_> - - <_> - - - - <_> - 0 0 4 4 -1. - <_> - 0 0 2 2 2. - <_> - 2 2 2 2 2. - 0 - -5.3500072099268436e-003 - 1.4658580720424652e-001 - -7.1295157074928284e-002 - <_> - - <_> - - - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - -7.7157528139650822e-003 - -2.1293020248413086e-001 - 3.0109029263257980e-002 - <_> - - <_> - - - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - -7.2461022064089775e-003 - -2.4743880331516266e-001 - 3.6422520875930786e-002 - <_> - - <_> - - - - <_> - 5 2 8 3 -1. - <_> - 5 3 8 1 3. - 0 - 4.5332200825214386e-002 - -4.3887101113796234e-002 - 2.2771969437599182e-001 - <_> - - <_> - - - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - 0 - -1.0587189899524674e-004 - 1.0036029666662216e-001 - -9.9796630442142487e-002 - <_> - - <_> - - - - <_> - 6 0 12 2 -1. - <_> - 6 0 6 2 2. - 0 - -1.1086790263652802e-001 - -2.6335340738296509e-001 - 1.9541220739483833e-002 - <_> - - <_> - - - - <_> - 0 0 12 2 -1. - <_> - 6 0 6 2 2. - 0 - 1.4828580431640148e-002 - -6.1396230012178421e-002 - 1.5963110327720642e-001 - <_> - - <_> - - - - <_> - 8 5 10 4 -1. - <_> - 13 5 5 2 2. - <_> - 8 7 5 2 2. - 0 - 1.1451540194684640e-004 - -3.4139700233936310e-002 - 1.8776599317789078e-002 - <_> - - <_> - - - - <_> - 0 5 10 4 -1. - <_> - 0 5 5 2 2. - <_> - 5 7 5 2 2. - 0 - 1.0391230136156082e-001 - 1.8342059105634689e-002 - -5.5741232633590698e-001 - <_> - - <_> - - - - <_> - 17 4 1 3 -1. - <_> - 17 5 1 1 3. - 0 - -2.8403440956026316e-003 - -1.6176800429821014e-001 - 4.2230840772390366e-002 - <_> - - <_> - - - - <_> - 0 8 2 3 -1. - <_> - 1 8 1 3 2. - 0 - -3.9837881922721863e-003 - 1.2188349664211273e-001 - -7.5493358075618744e-002 - <_> - - <_> - - - - <_> - 12 9 6 2 -1. - <_> - 14 9 2 2 3. - 0 - -2.6931989938020706e-002 - -2.7949911355972290e-001 - 1.8144300207495689e-002 - <_> - - <_> - - - - <_> - 0 9 6 2 -1. - <_> - 2 9 2 2 3. - 0 - 6.3719637691974640e-003 - -7.2795078158378601e-002 - 1.5270389616489410e-001 - <_> - - <_> - - - - <_> - 10 4 3 5 -1. - <_> - 11 5 1 5 3. - 1 - 4.1068520396947861e-002 - -8.6038000881671906e-003 - 2.9300528764724731e-001 - <_> - - <_> - - - - <_> - 8 4 5 3 -1. - <_> - 7 5 5 1 3. - 1 - -3.8765709847211838e-002 - 2.6667380332946777e-001 - -3.6998551338911057e-002 - <_> - - <_> - - - - <_> - 9 8 2 1 -1. - <_> - 9 8 1 1 2. - 0 - -3.3269529230892658e-003 - -2.3761349916458130e-001 - 3.2018061727285385e-002 - <_> - - <_> - - - - <_> - 7 8 2 1 -1. - <_> - 8 8 1 1 2. - 0 - 8.5056803072802722e-005 - -7.0894226431846619e-002 - 1.2628500163555145e-001 - <_> - - <_> - - - - <_> - 6 8 6 2 -1. - <_> - 8 8 2 2 3. - 0 - 2.1096479147672653e-002 - 2.4189710617065430e-002 - -5.0479072332382202e-001 - <_> - - <_> - - - - <_> - 7 8 4 3 -1. - <_> - 7 9 4 1 3. - 0 - 1.5069710090756416e-002 - -4.9047719687223434e-002 - 2.0302620530128479e-001 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - -1.7079169629141688e-003 - 9.5796592533588409e-002 - -3.4222289919853210e-002 - <_> - - <_> - - - - <_> - 6 0 4 1 -1. - <_> - 7 0 2 1 2. - 0 - 4.1216560639441013e-003 - 2.4934209883213043e-002 - -3.6697131395339966e-001 - <_> - - <_> - - - - <_> - 10 5 2 4 -1. - <_> - 11 5 1 2 2. - <_> - 10 7 1 2 2. - 0 - 6.1798160895705223e-003 - -2.5011969730257988e-002 - 7.8190803527832031e-002 - <_> - - <_> - - - - <_> - 0 4 2 3 -1. - <_> - 0 5 2 1 3. - 0 - -1.0259440168738365e-002 - -3.8385409116744995e-001 - 2.3607190698385239e-002 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - 4.2493520304560661e-003 - -1.8063470721244812e-002 - 9.7392469644546509e-002 - <_> - - <_> - - - - <_> - 8 7 2 2 -1. - <_> - 8 7 1 2 2. - 1 - -1.8078900873661041e-002 - -2.8260070085525513e-001 - 3.2420400530099869e-002 - <_> - - <_> - - - - <_> - 15 4 1 2 -1. - <_> - 15 5 1 1 2. - 0 - -1.0033250146079808e-004 - 5.8378711342811584e-002 - -9.5965467393398285e-002 - <_> - - <_> - - - - <_> - 6 5 2 4 -1. - <_> - 6 5 1 2 2. - <_> - 7 7 1 2 2. - 0 - 5.5636470206081867e-003 - -6.2373951077461243e-002 - 1.3677039742469788e-001 - <_> - - <_> - - - - <_> - 12 3 1 4 -1. - <_> - 12 3 1 2 2. - 1 - 5.9635799378156662e-002 - 7.6047349721193314e-003 - -3.7049409747123718e-001 - <_> - - <_> - - - - <_> - 1 1 2 1 -1. - <_> - 2 1 1 1 2. - 0 - -1.1734029976651073e-004 - 5.6312419474124908e-002 - -1.6223900020122528e-001 - <_> - - <_> - - - - <_> - 12 0 6 4 -1. - <_> - 14 0 2 4 3. - 0 - 3.2071691006422043e-002 - 1.7075739800930023e-002 - -1.7555209994316101e-001 - <_> - - <_> - - - - <_> - 0 0 1 3 -1. - <_> - 0 1 1 1 3. - 0 - -9.0831192210316658e-005 - 9.6431486308574677e-002 - -9.5327220857143402e-002 - <_> - - <_> - - - - <_> - 5 0 12 2 -1. - <_> - 11 0 6 1 2. - <_> - 5 1 6 1 2. - 0 - 3.1735259108245373e-003 - -3.5405401140451431e-002 - 5.5357661098241806e-002 - <_> - - <_> - - - - <_> - 2 1 12 3 -1. - <_> - 6 1 4 3 3. - 0 - -2.9976980760693550e-002 - 8.3683349192142487e-002 - -1.0876650363206863e-001 - <_> - - <_> - - - - <_> - 5 2 8 3 -1. - <_> - 7 2 4 3 2. - 0 - -3.8275059312582016e-002 - -2.4115200340747833e-001 - 4.2547758668661118e-002 - <_> - - <_> - - - - <_> - 3 0 2 4 -1. - <_> - 3 1 2 2 2. - 0 - 3.6104370374232531e-003 - -7.1690596640110016e-002 - 1.3356970250606537e-001 - <_> - - <_> - - - - <_> - 14 1 4 3 -1. - <_> - 14 2 4 1 3. - 0 - 2.7101410552859306e-002 - 1.6210360452532768e-002 - -3.3410280942916870e-001 - <_> - - <_> - - - - <_> - 0 11 15 1 -1. - <_> - 5 11 5 1 3. - 0 - 7.4129230342805386e-003 - -7.1663141250610352e-002 - 1.4046929776668549e-001 - <_> - - <_> - - - - <_> - 15 1 3 3 -1. - <_> - 15 2 3 1 3. - 0 - 1.6567030921578407e-002 - 8.9016826823353767e-003 - -1.1316739767789841e-001 - <_> - - <_> - - - - <_> - 0 6 4 6 -1. - <_> - 0 8 4 2 3. - 0 - 6.4526550471782684e-002 - 1.4559620060026646e-002 - -6.1538118124008179e-001 - <_> - - <_> - - - - <_> - 14 4 1 2 -1. - <_> - 14 5 1 1 2. - 0 - 6.8156858906149864e-003 - -1.9643720239400864e-002 - 4.3227869272232056e-001 - <_> - - <_> - - - - <_> - 3 4 1 2 -1. - <_> - 3 5 1 1 2. - 0 - -8.8827422587200999e-005 - 9.6494443714618683e-002 - -9.7575537860393524e-002 - <_> - - <_> - - - - <_> - 10 2 6 6 -1. - <_> - 12 4 2 2 9. - 0 - -8.9457683265209198e-002 - 7.5192607939243317e-002 - -4.5244731009006500e-002 - <_> - - <_> - - - - <_> - 2 2 6 6 -1. - <_> - 4 4 2 2 9. - 0 - -2.1514390408992767e-001 - -4.5402219891548157e-001 - 1.9804859533905983e-002 - <_> - - <_> - - - - <_> - 9 0 1 3 -1. - <_> - 8 1 1 1 3. - 1 - -1.2561500072479248e-002 - -2.4084420502185822e-001 - 1.3274069875478745e-002 - <_> - - <_> - - - - <_> - 9 0 3 1 -1. - <_> - 10 1 1 1 3. - 1 - -8.4761697798967361e-003 - 2.7529099583625793e-001 - -4.5817509293556213e-002 - <_> - - <_> - - - - <_> - 6 1 6 3 -1. - <_> - 6 2 6 1 3. - 0 - 5.1104858517646790e-002 - -2.5254199281334877e-002 - 3.1543159484863281e-001 - <_> - - <_> - - - - <_> - 0 8 1 2 -1. - <_> - 0 9 1 1 2. - 0 - 9.7488082246854901e-005 - -1.2215600162744522e-001 - 7.2712212800979614e-002 - <_> - - <_> - - - - <_> - 14 9 4 3 -1. - <_> - 14 10 4 1 3. - 0 - 1.4160290360450745e-002 - 2.8567990288138390e-002 - -3.4588310122489929e-001 - <_> - - <_> - - - - <_> - 8 5 4 3 -1. - <_> - 9 6 2 3 2. - 1 - -4.9706948630046099e-005 - 5.6665088981389999e-002 - -1.4329999685287476e-001 - <_> - - <_> - - - - <_> - 9 7 9 4 -1. - <_> - 9 9 9 2 2. - 0 - 2.2474400699138641e-002 - -2.0662429928779602e-001 - 2.6640780270099640e-002 - <_> - - <_> - - - - <_> - 0 7 9 4 -1. - <_> - 0 9 9 2 2. - 0 - 9.7482956945896149e-002 - 5.0016429275274277e-002 - -2.0301230251789093e-001 - <_> - - <_> - - - - <_> - 12 4 3 5 -1. - <_> - 13 5 1 5 3. - 1 - -4.8470269888639450e-002 - 2.1042500436306000e-001 - -1.9063079729676247e-002 - <_> - - <_> - - - - <_> - 3 8 1 3 -1. - <_> - 2 9 1 1 3. - 1 - 7.1597727946937084e-003 - -4.5765839517116547e-002 - 1.9567190110683441e-001 - <_> - - <_> - - - - <_> - 15 9 3 3 -1. - <_> - 15 10 3 1 3. - 0 - -7.2543402202427387e-003 - -3.2032880187034607e-001 - 2.6651080697774887e-002 - <_> - - <_> - - - - <_> - 6 4 5 3 -1. - <_> - 5 5 5 1 3. - 1 - -1.8530499190092087e-002 - 1.9439229369163513e-001 - -4.8699580132961273e-002 - <_> - - <_> - - - - <_> - 2 6 15 6 -1. - <_> - 7 8 5 2 9. - 0 - 3.8783821463584900e-001 - -1.6777930781245232e-002 - 3.7111368775367737e-001 - <_> - - <_> - - - - <_> - 3 5 12 3 -1. - <_> - 6 5 6 3 2. - 0 - 7.6014406979084015e-002 - 1.7125319689512253e-002 - -5.8361458778381348e-001 - <_> - - <_> - - - - <_> - 17 1 1 4 -1. - <_> - 17 2 1 2 2. - 0 - 4.9989949911832809e-003 - 1.7290040850639343e-002 - -1.2039519846439362e-001 - <_> - - <_> - - - - <_> - 0 9 3 3 -1. - <_> - 0 10 3 1 3. - 0 - 9.9080810323357582e-003 - 2.3359630256891251e-002 - -3.7375789880752563e-001 - <_> - - <_> - - - - <_> - 17 9 1 2 -1. - <_> - 17 10 1 1 2. - 0 - 1.0389750241301954e-004 - -1.0736549645662308e-001 - 4.5764569193124771e-002 - <_> - - <_> - - - - <_> - 0 9 1 2 -1. - <_> - 0 10 1 1 2. - 0 - -1.0103100212290883e-003 - -2.2198240458965302e-001 - 3.9023850113153458e-002 - <_> - - <_> - - - - <_> - 16 8 2 2 -1. - <_> - 16 8 1 2 2. - 1 - -2.3250900208950043e-002 - 1.2186550348997116e-001 - -1.8887069076299667e-002 - <_> - - <_> - - - - <_> - 2 8 2 2 -1. - <_> - 2 8 2 1 2. - 1 - 8.6560938507318497e-003 - -3.4802809357643127e-002 - 2.6685670018196106e-001 - <_> - - <_> - - - - <_> - 17 8 1 3 -1. - <_> - 16 9 1 1 3. - 1 - 1.0738030076026917e-002 - 1.4226100407540798e-002 - -2.1260090172290802e-001 - <_> - - <_> - - - - <_> - 0 7 3 3 -1. - <_> - 1 7 1 3 3. - 0 - -3.5327710211277008e-003 - 1.3741309940814972e-001 - -6.6508442163467407e-002 - <_> - - <_> - - - - <_> - 17 7 1 2 -1. - <_> - 17 8 1 1 2. - 0 - 3.4663160331547260e-003 - 2.8193399310112000e-002 - -8.0336898565292358e-002 - <_> - - <_> - - - - <_> - 0 7 1 2 -1. - <_> - 0 8 1 1 2. - 0 - -1.0870849946513772e-003 - -2.1752350032329559e-001 - 4.2343270033597946e-002 - <_> - - <_> - - - - <_> - 16 1 2 4 -1. - <_> - 15 2 2 2 2. - 1 - -3.5930581390857697e-002 - 3.5099908709526062e-001 - -3.8252778351306915e-002 - <_> - - <_> - - - - <_> - 7 4 3 3 -1. - <_> - 7 5 3 1 3. - 0 - -2.5020960718393326e-002 - 2.2377529740333557e-001 - -3.8715720176696777e-002 - <_> - - <_> - - - - <_> - 13 5 3 4 -1. - <_> - 14 5 1 4 3. - 0 - -2.4599849712103605e-003 - 7.4148297309875488e-002 - -7.8528337180614471e-002 - <_> - - <_> - - - - <_> - 3 2 12 1 -1. - <_> - 9 2 6 1 2. - 0 - 6.0168118216097355e-003 - -1.0999929904937744e-001 - 7.8647941350936890e-002 - <_> - - <_> - - - - <_> - 4 0 10 4 -1. - <_> - 4 0 5 4 2. - 0 - -1.4243890345096588e-001 - -3.6323529481887817e-001 - 2.4560069665312767e-002 - <_> - - <_> - - - - <_> - 2 5 3 4 -1. - <_> - 3 5 1 4 3. - 0 - -4.7228108160197735e-003 - 1.0705450177192688e-001 - -7.6868243515491486e-002 - <_> - - <_> - - - - <_> - 13 0 3 12 -1. - <_> - 14 0 1 12 3. - 0 - -3.1893420964479446e-002 - -3.7086701393127441e-001 - 2.6756819337606430e-002 - <_> - - <_> - - - - <_> - 2 4 2 2 -1. - <_> - 2 4 1 1 2. - <_> - 3 5 1 1 2. - 0 - 3.5616129171103239e-003 - -3.2798498868942261e-002 - 2.6696491241455078e-001 - <_> - - <_> - - - - <_> - 13 0 2 12 -1. - <_> - 13 0 1 12 2. - 0 - 5.4270081222057343e-002 - 7.0277871564030647e-003 - -8.3340001106262207e-001 - <_> - - <_> - - - - <_> - 3 0 2 12 -1. - <_> - 4 0 1 12 2. - 0 - 4.1021820157766342e-002 - 8.8532911613583565e-003 - -7.8412932157516479e-001 - <_> - - <_> - - - - <_> - 17 1 1 4 -1. - <_> - 17 2 1 2 2. - 0 - -1.7731649801135063e-002 - -4.3762990832328796e-001 - -6.9212907692417502e-004 - <_> - - <_> - - - - <_> - 0 1 3 3 -1. - <_> - 0 2 3 1 3. - 0 - 1.0361500084400177e-002 - 2.4823799729347229e-002 - -3.1671279668807983e-001 - <_> - - <_> - - - - <_> - 8 5 3 2 -1. - <_> - 9 5 1 2 3. - 0 - -7.0502250455319881e-003 - 1.2061820179224014e-001 - -4.4687919318675995e-002 - <_> - - <_> - - - - <_> - 2 5 1 2 -1. - <_> - 2 5 1 1 2. - 1 - -1.6122040105983615e-003 - 6.3392668962478638e-002 - -1.2448409944772720e-001 - <_> - - <_> - - - - <_> - 13 1 4 3 -1. - <_> - 12 2 4 1 3. - 1 - 4.6751599758863449e-002 - -3.2111309468746185e-002 - 3.8545480370521545e-001 - <_> - - <_> - - - - <_> - 5 1 3 4 -1. - <_> - 6 2 1 4 3. - 1 - 1.5507729724049568e-002 - -4.6862591058015823e-002 - 1.9358439743518829e-001 - <_> - - <_> - - - - <_> - 9 1 2 6 -1. - <_> - 9 1 1 6 2. - 1 - 4.2960081249475479e-002 - -1.0605080053210258e-002 - 1.3616879284381866e-001 - <_> - - <_> - - - - <_> - 9 1 6 2 -1. - <_> - 9 1 6 1 2. - 1 - 5.3200960159301758e-002 - 2.9277659952640533e-002 - -3.0889630317687988e-001 - <_> - - <_> - - - - <_> - 12 1 6 4 -1. - <_> - 15 1 3 2 2. - <_> - 12 3 3 2 2. - 0 - -2.5974009186029434e-002 - 8.4145203232765198e-002 - -3.3409930765628815e-002 - <_> - - <_> - - - - <_> - 0 1 6 4 -1. - <_> - 0 1 3 2 2. - <_> - 3 3 3 2 2. - 0 - -1.8476620316505432e-002 - 1.4825859665870667e-001 - -5.3597509860992432e-002 - <_> - - <_> - - - - <_> - 8 5 4 7 -1. - <_> - 9 5 2 7 2. - 0 - -1.3039880432188511e-003 - 4.0190171450376511e-002 - -9.2481881380081177e-002 - <_> - - <_> - - - - <_> - 6 5 4 7 -1. - <_> - 7 5 2 7 2. - 0 - -3.1569059938192368e-003 - 8.6595647037029266e-002 - -1.2246470153331757e-001 - <_> - - <_> - - - - <_> - 8 9 4 2 -1. - <_> - 9 9 2 2 2. - 0 - -6.9843409582972527e-003 - -3.1575238704681396e-001 - 2.5440100580453873e-002 - <_> - - <_> - - - - <_> - 6 9 4 2 -1. - <_> - 7 9 2 2 2. - 0 - -5.6869657710194588e-003 - -2.8521931171417236e-001 - 3.2773211598396301e-002 - <_> - - <_> - - - - <_> - 10 5 3 3 -1. - <_> - 11 6 1 3 3. - 1 - -1.7049470916390419e-002 - 7.7424846589565277e-002 - -3.9009008556604385e-002 - <_> - - <_> - - - - <_> - 8 5 3 3 -1. - <_> - 7 6 3 1 3. - 1 - -3.3813931047916412e-002 - 4.3394011259078979e-001 - -2.1828850731253624e-002 - <_> - - <_> - - - - <_> - 11 2 4 4 -1. - <_> - 11 2 4 2 2. - 1 - -7.7675722539424896e-002 - 1.6437239944934845e-001 - -1.6524160280823708e-002 - <_> - - <_> - - - - <_> - 6 8 1 3 -1. - <_> - 5 9 1 1 3. - 1 - -4.9925399944186211e-003 - 1.7385929822921753e-001 - -4.9703989177942276e-002 - -1.5637309551239014e+000 - 18 - -1 - diff --git a/data/haarcascades/haarcascade_mcs_upperbody.xml b/data/haarcascades/haarcascade_mcs_upperbody.xml deleted file mode 100644 index 76ba9ceef9..0000000000 --- a/data/haarcascades/haarcascade_mcs_upperbody.xml +++ /dev/null @@ -1,37318 +0,0 @@ - - - -BOOST - HAAR - 22 - 20 - - 334 - - 0 - 19 - - <_> - 34 - -1.3463230133056641e+00 - - <_> - - 0 -1 0 1.2492679525166750e-03 - - -4.9203258752822876e-01 3.8543990254402161e-01 - <_> - - 0 -1 1 3.1020329333841801e-04 - - -3.7493890523910522e-01 2.8437709808349609e-01 - <_> - - 0 -1 2 9.6315346658229828e-02 - - -1.1613050103187561e-01 7.2967511415481567e-01 - <_> - - 0 -1 3 -2.5381650775671005e-02 - - 3.4308171272277832e-01 -2.1711470186710358e-01 - <_> - - 0 -1 4 -3.3788379369070753e-05 - - 2.3084780573844910e-01 -2.1428909897804260e-01 - <_> - - 0 -1 5 -9.9204434081912041e-03 - - -5.4596477746963501e-01 1.4852449297904968e-01 - <_> - - 0 -1 6 3.7437680363655090e-01 - - -5.5639829486608505e-02 -3.8648000488281250e+03 - <_> - - 0 -1 7 1.5777030587196350e-01 - - -8.3601050078868866e-02 6.3613307476043701e-01 - <_> - - 0 -1 8 -8.6156948236748576e-04 - - -4.2473611235618591e-01 1.1517520248889923e-01 - <_> - - 0 -1 9 1.4470949536189437e-03 - - 8.8099062442779541e-02 -3.3703750371932983e-01 - <_> - - 0 -1 10 9.6110720187425613e-04 - - 1.4646869897842407e-01 -3.9539098739624023e-01 - <_> - - 0 -1 11 -1.7864780500531197e-02 - - 3.4492269158363342e-01 -1.1889699846506119e-01 - <_> - - 0 -1 12 1.4062010450288653e-05 - - -1.7647840082645416e-01 2.4890510737895966e-01 - <_> - - 0 -1 13 -4.6323220885824412e-05 - - 1.1303039640188217e-01 -1.2764999270439148e-01 - <_> - - 0 -1 14 7.5712718535214663e-04 - - 1.6781170666217804e-01 -3.5051900148391724e-01 - <_> - - 0 -1 15 8.4784009959548712e-04 - - 4.7085449099540710e-02 -2.7790009975433350e-01 - <_> - - 0 -1 16 -1.3911760179325938e-03 - - -4.4459569454193115e-01 1.2602819502353668e-01 - <_> - - 0 -1 17 -6.3936309888958931e-03 - - 4.0806901454925537e-01 -1.0456319898366928e-01 - <_> - - 0 -1 18 -3.4687869629124179e-05 - - 2.0899119973182678e-01 -1.7859880626201630e-01 - <_> - - 0 -1 19 4.6302800910780206e-05 - - -8.1336483359336853e-02 6.3226006925106049e-02 - <_> - - 0 -1 20 -5.2149579860270023e-03 - - 3.4537479281425476e-01 -1.0222029685974121e-01 - <_> - - 0 -1 21 -1.4078790554776788e-03 - - -3.1319180130958557e-01 1.2761330604553223e-01 - <_> - - 0 -1 22 -1.7251130193471909e-03 - - -5.3231698274612427e-01 3.0767120420932770e-02 - <_> - - 0 -1 23 6.3083309214562178e-04 - - 7.3742397129535675e-02 -2.9746720194816589e-01 - <_> - - 0 -1 24 2.8300069272518158e-02 - - -5.0585608929395676e-02 5.7231342792510986e-01 - <_> - - 0 -1 25 3.0987561331130564e-05 - - -1.9619299471378326e-01 1.5451109409332275e-01 - <_> - - 0 -1 26 2.0265610516071320e-01 - - -8.0046234652400017e-03 -2.8372451171875000e+03 - <_> - - 0 -1 27 -3.0515150865539908e-04 - - 2.8124749660491943e-01 -1.4992569386959076e-01 - <_> - - 0 -1 28 4.3186601251363754e-03 - - 9.0424761176109314e-02 -5.3762412071228027e-01 - <_> - - 0 -1 29 -1.0599900037050247e-01 - - -4.8290529847145081e-01 8.8053867220878601e-03 - <_> - - 0 -1 30 6.4299613237380981e-02 - - -2.2408259974326938e-04 -3.2261879882812500e+03 - <_> - - 0 -1 31 -4.6435470721917227e-05 - - 1.3458590209484100e-01 -1.2009020149707794e-01 - <_> - - 0 -1 32 5.3147651487961411e-04 - - 1.2874309718608856e-01 -3.3382850885391235e-01 - <_> - - 0 -1 33 1.0495550185441971e-01 - - -7.2582751512527466e-02 4.0762761235237122e-01 - <_> - 24 - -1.3991409540176392e+00 - - <_> - - 0 -1 34 2.6972210034728050e-03 - - -4.9663209915161133e-01 5.2796190977096558e-01 - <_> - - 0 -1 35 -3.1051780097186565e-03 - - 3.0832630395889282e-01 -1.7500090599060059e-01 - <_> - - 0 -1 36 -4.6089510433375835e-03 - - 3.9825218915939331e-01 -2.3838889598846436e-01 - <_> - - 0 -1 37 7.6866783201694489e-02 - - -1.2886370718479156e-01 5.6268239021301270e-01 - <_> - - 0 -1 38 6.0181751847267151e-02 - - 1.1992460116744041e-02 -5.7196899414062500e+03 - <_> - - 0 -1 39 -2.3719770833849907e-03 - - 9.6406437456607819e-02 -7.2531573474407196e-02 - <_> - - 0 -1 40 -2.2351389750838280e-02 - - 4.2732998728752136e-01 -2.3335489630699158e-01 - <_> - - 0 -1 41 1.1298250174149871e-03 - - -2.4561679363250732e-01 2.3006400465965271e-01 - <_> - - 0 -1 42 -1.6542900353670120e-02 - - -7.2953182458877563e-01 7.1322768926620483e-02 - <_> - - 0 -1 43 1.6292719170451164e-02 - - 5.3547341376543045e-02 -6.5810048580169678e-01 - <_> - - 0 -1 44 1.4970790361985564e-03 - - -1.8056739866733551e-01 2.4561589956283569e-01 - <_> - - 0 -1 45 -1.4413120225071907e-03 - - 1.1152800172567368e-01 -8.2167521119117737e-02 - <_> - - 0 -1 46 -1.0352210141718388e-02 - - -5.1681971549987793e-01 7.7380821108818054e-02 - <_> - - 0 -1 47 -5.2497540600597858e-03 - - 1.5652020275592804e-01 -1.2938609719276428e-01 - <_> - - 0 -1 48 1.5690580476075411e-03 - - 1.5069690346717834e-01 -4.0132901072502136e-01 - <_> - - 0 -1 49 -2.6500379666686058e-02 - - 1.0065379738807678e-01 -1.3190379738807678e-01 - <_> - - 0 -1 50 6.9238577270880342e-04 - - -1.6020749509334564e-01 2.6513510942459106e-01 - <_> - - 0 -1 51 -1.2375250225886703e-03 - - -3.6430040001869202e-01 1.5638789534568787e-01 - <_> - - 0 -1 52 8.3097338676452637e-02 - - -5.0581160932779312e-02 -1.1069330078125000e+04 - <_> - - 0 -1 53 2.7459360659122467e-02 - - 1.2003759853541851e-02 -6.0372191667556763e-01 - <_> - - 0 -1 54 -9.3256239779293537e-04 - - -3.2193431258201599e-01 1.0041300207376480e-01 - <_> - - 0 -1 55 1.3935200404375792e-03 - - -1.6904979944229126e-01 1.5307870507240295e-01 - <_> - - 0 -1 56 1.1394890025258064e-03 - - 1.4565330743789673e-01 -2.9629468917846680e-01 - <_> - - 0 -1 57 7.9129770398139954e-02 - - -1.5996749699115753e-01 2.6491358876228333e-01 - <_> - 56 - -1.1955209970474243e+00 - - <_> - - 0 -1 58 4.6252529136836529e-03 - - -3.4763190150260925e-01 4.8843431472778320e-01 - <_> - - 0 -1 59 4.4427260756492615e-02 - - -1.6238899528980255e-01 6.0961002111434937e-01 - <_> - - 0 -1 60 -1.2432290241122246e-02 - - 3.0170831084251404e-01 -1.7306919395923615e-01 - <_> - - 0 -1 61 9.8982118070125580e-02 - - -9.2205569148063660e-02 5.9408599138259888e-01 - <_> - - 0 -1 62 2.0849579572677612e-01 - - 1.0404920205473900e-02 -1.1054240234375000e+04 - <_> - - 0 -1 63 4.2460359632968903e-02 - - 1.3334839604794979e-04 -2.9971960067749023e+01 - <_> - - 0 -1 64 2.5334998965263367e-01 - - 2.1595309954136610e-04 -2.6144009765625000e+04 - <_> - - 0 -1 65 -1.6708360612392426e-01 - - 4.0918990969657898e-01 -1.0354740172624588e-01 - <_> - - 0 -1 66 6.9854892790317535e-02 - - 4.6605318784713745e-03 -5.1069450000000000e+05 - <_> - - 0 -1 67 -1.1447629658505321e-03 - - 1.4222350716590881e-01 -8.5505887866020203e-02 - <_> - - 0 -1 68 -3.4705658908933401e-03 - - -5.2971118688583374e-01 8.3049722015857697e-02 - <_> - - 0 -1 69 2.1921019069850445e-03 - - 7.1161970496177673e-02 -4.0433588624000549e-01 - <_> - - 0 -1 70 1.1649200459942222e-03 - - 1.2676270306110382e-01 -4.0600609779357910e-01 - <_> - - 0 -1 71 -4.4645569287240505e-03 - - 1.1181999742984772e-01 -5.5742070078849792e-02 - <_> - - 0 -1 72 8.8914260268211365e-02 - - 3.0051500070840120e-03 -4.1628109375000000e+04 - <_> - - 0 -1 73 -6.0652620159089565e-03 - - 2.6277920603752136e-01 -1.5126389265060425e-01 - <_> - - 0 -1 74 6.2857627868652344e-02 - - -1.3715559616684914e-02 -8.7274068750000000e+05 - <_> - - 0 -1 75 5.6487987749278545e-03 - - -1.5913739800453186e-01 3.1859260797500610e-01 - <_> - - 0 -1 76 1.4022980630397797e-01 - - -9.5816357061266899e-03 -1.0553549804687500e+04 - <_> - - 0 -1 77 2.3099619895219803e-02 - - 9.7601450979709625e-02 -3.8035428524017334e-01 - <_> - - 0 -1 78 6.2180660665035248e-02 - - 7.3636812157928944e-03 -2183168. - <_> - - 0 -1 79 -5.5402978323400021e-03 - - -5.0896018743515015e-01 5.4681908339262009e-02 - <_> - - 0 -1 80 1.5392599999904633e-01 - - 4.8121181316673756e-03 -1.8279500000000000e+04 - <_> - - 0 -1 81 -7.0815882645547390e-04 - - -2.2779859602451324e-01 5.8023121207952499e-02 - <_> - - 0 -1 82 3.2015278702601790e-04 - - -1.5084609389305115e-01 2.1459349989891052e-01 - <_> - - 0 -1 83 2.3664999753236771e-02 - - -3.5690288990736008e-02 3.1699979305267334e-01 - <_> - - 0 -1 84 -3.3508460037410259e-03 - - -4.5990100502967834e-01 6.0951150953769684e-02 - <_> - - 0 -1 85 -7.5522147119045258e-02 - - 1.1057890206575394e-01 -4.0514450520277023e-02 - <_> - - 0 -1 86 -5.7262121699750423e-03 - - 2.3271149396896362e-01 -1.3407149910926819e-01 - <_> - - 0 -1 87 2.1024739369750023e-02 - - 5.9381611645221710e-03 -5.5033719539642334e-01 - <_> - - 0 -1 88 3.1837709248065948e-03 - - -1.2809669971466064e-01 2.6653018593788147e-01 - <_> - - 0 -1 89 1.9705400336533785e-03 - - 7.8466497361660004e-02 -3.2406198978424072e-01 - <_> - - 0 -1 90 6.6750179976224899e-03 - - 9.1531157493591309e-02 -3.7249198555946350e-01 - <_> - - 0 -1 91 -2.4148779921233654e-03 - - -1.7111690342426300e-01 5.6762799620628357e-02 - <_> - - 0 -1 92 -9.5466198399662971e-03 - - 4.0662801265716553e-01 -7.4411712586879730e-02 - <_> - - 0 -1 93 -3.2907661050558090e-02 - - -7.1888977289199829e-01 1.4721539802849293e-02 - <_> - - 0 -1 94 -8.1849691923707724e-04 - - 1.4569100737571716e-01 -1.9963370263576508e-01 - <_> - - 0 -1 95 7.2181539144366980e-04 - - 8.2231067121028900e-02 -2.1973559260368347e-01 - <_> - - 0 -1 96 2.2785319015383720e-03 - - 7.5317807495594025e-02 -3.4543770551681519e-01 - <_> - - 0 -1 97 -5.9232191415503621e-04 - - 1.6397179663181305e-01 -1.4223779737949371e-01 - <_> - - 0 -1 98 -1.4906689757481217e-03 - - 2.7065008878707886e-01 -1.0185220092535019e-01 - <_> - - 0 -1 99 -5.0783937331289053e-04 - - -2.3237000405788422e-01 1.2487719953060150e-01 - <_> - - 0 -1 100 1.2358260573819280e-03 - - 7.1889422833919525e-02 -3.2292270660400391e-01 - <_> - - 0 -1 101 9.5672700554132462e-03 - - -7.7361442148685455e-02 3.1491670012474060e-01 - <_> - - 0 -1 102 -4.9210679717361927e-03 - - 2.0018289983272552e-01 -1.6144259274005890e-01 - <_> - - 0 -1 103 5.0535827176645398e-04 - - 7.0756010711193085e-02 -1.7633900046348572e-01 - <_> - - 0 -1 104 -1.3640619814395905e-02 - - -6.6401261091232300e-01 4.0987018495798111e-02 - <_> - - 0 -1 105 -6.5427437424659729e-02 - - -7.1546489000320435e-01 -1.4467790024355054e-03 - <_> - - 0 -1 106 -5.7416707277297974e-01 - - -6.4211571216583252e-01 3.7077069282531738e-02 - <_> - - 0 -1 107 -1.4680740423500538e-02 - - -5.7911068201065063e-01 1.2332480400800705e-02 - <_> - - 0 -1 108 1.0403449647128582e-02 - - 3.0869459733366966e-02 -6.5323889255523682e-01 - <_> - - 0 -1 109 3.1473999843001366e-03 - - -6.3593432307243347e-02 1.5316939353942871e-01 - <_> - - 0 -1 110 -3.7591080181300640e-03 - - 2.3941740393638611e-01 -1.0980860143899918e-01 - <_> - - 0 -1 111 -1.1320270132273436e-03 - - -3.4076210856437683e-01 4.7114279121160507e-02 - <_> - - 0 -1 112 2.3911079391837120e-02 - - 2.4294020608067513e-02 -8.7374562025070190e-01 - <_> - - 0 -1 113 1.6331439837813377e-03 - - -1.4867100119590759e-01 1.4686830341815948e-01 - <_> - 72 - -1.2550790309906006e+00 - - <_> - - 0 -1 114 1.4273949898779392e-02 - - -2.2028170526027679e-01 5.8278697729110718e-01 - <_> - - 0 -1 115 -1.3155260123312473e-02 - - 3.2376781105995178e-01 -1.7588689923286438e-01 - <_> - - 0 -1 116 -4.7336989082396030e-03 - - 3.2771259546279907e-01 -1.3504040241241455e-01 - <_> - - 0 -1 117 -4.9824719317257404e-03 - - -4.0712320804595947e-01 1.0729070007801056e-01 - <_> - - 0 -1 118 5.3574908524751663e-03 - - -6.1188440769910812e-02 4.2176121473312378e-01 - <_> - - 0 -1 119 7.2625762550160289e-04 - - 7.0681191980838776e-02 -3.9249309897422791e-01 - <_> - - 0 -1 120 3.1754389405250549e-02 - - -4.8160050064325333e-03 -2.6766890625000000e+04 - <_> - - 0 -1 121 7.4712611967697740e-04 - - 1.0044159740209579e-01 -3.5845521092414856e-01 - <_> - - 0 -1 122 -6.1364839784801006e-03 - - 2.2930769622325897e-01 -1.4849479496479034e-01 - <_> - - 0 -1 123 -3.1043920898810029e-04 - - -1.2606529891490936e-01 5.2981439977884293e-02 - <_> - - 0 -1 124 9.5097370445728302e-02 - - 6.5563217503950000e-04 -4.3957660156250000e+04 - <_> - - 0 -1 125 1.7895869677886367e-04 - - 6.6079929471015930e-02 -1.6163720190525055e-01 - <_> - - 0 -1 126 6.2283757142722607e-04 - - 8.1336148083209991e-02 -3.7853249907493591e-01 - <_> - - 0 -1 127 1.6121419146656990e-02 - - -7.0124477148056030e-02 4.2186841368675232e-01 - <_> - - 0 -1 128 4.9409839510917664e-01 - - 5.6105360388755798e-02 -5.5268967151641846e-01 - <_> - - 0 -1 129 2.6086641009896994e-03 - - -5.4303850978612900e-02 8.3350032567977905e-02 - <_> - - 0 -1 130 -8.0985590815544128e-02 - - -5.1889681816101074e-01 7.6113581657409668e-02 - <_> - - 0 -1 131 -1.8206849694252014e-02 - - 2.3450860381126404e-01 -1.5028589963912964e-01 - <_> - - 0 -1 132 2.4453869089484215e-02 - - 7.7094620792195201e-05 -3.4958081054687500e+03 - <_> - - 0 -1 133 7.3357089422643185e-03 - - 6.4979292452335358e-02 -4.4848531484603882e-01 - <_> - - 0 -1 134 2.6216730475425720e-03 - - -1.4167490601539612e-01 2.0859889686107635e-01 - <_> - - 0 -1 135 1.1409450089558959e-03 - - 7.6701499521732330e-02 -2.9446929693222046e-01 - <_> - - 0 -1 136 1.2580930255353451e-02 - - -1.9673809874802828e-03 -2.9883010253906250e+03 - <_> - - 0 -1 137 -3.9991579949855804e-02 - - -6.5278917551040649e-01 1.8880249932408333e-02 - <_> - - 0 -1 138 -2.9880989342927933e-02 - - -5.7953011989593506e-01 4.3329969048500061e-02 - <_> - - 0 -1 139 1.7895980272442102e-03 - - -1.0572429746389389e-01 2.3993469774723053e-01 - <_> - - 0 -1 140 2.6439139619469643e-03 - - 5.3754869848489761e-02 -4.9620249867439270e-01 - <_> - - 0 -1 141 8.2859180110972375e-05 - - -2.0419049263000488e-01 1.2806950509548187e-01 - <_> - - 0 -1 142 -1.0911240242421627e-02 - - 3.4400200843811035e-01 -7.6199240982532501e-02 - <_> - - 0 -1 143 -4.1699931025505066e-03 - - -5.0042337179183960e-01 3.5767048597335815e-02 - <_> - - 0 -1 144 2.0652399398386478e-03 - - -1.5200750529766083e-01 1.6699029505252838e-01 - <_> - - 0 -1 145 -1.2707760324701667e-03 - - -1.0397709906101227e-01 2.6426579803228378e-02 - <_> - - 0 -1 146 8.2581391325220466e-04 - - 9.1073229908943176e-02 -2.8431761264801025e-01 - <_> - - 0 -1 147 6.9688400253653526e-03 - - -5.6411981582641602e-02 2.3267549276351929e-01 - <_> - - 0 -1 148 -1.5607889508828521e-03 - - -3.6969760060310364e-01 6.9473750889301300e-02 - <_> - - 0 -1 149 1.2131650000810623e-03 - - -7.9323820769786835e-02 1.5876859426498413e-01 - <_> - - 0 -1 150 1.0624749585986137e-02 - - 4.3361671268939972e-02 -5.7412439584732056e-01 - <_> - - 0 -1 151 -7.2990538319572806e-04 - - 1.9509379565715790e-01 -1.3665750622749329e-01 - <_> - - 0 -1 152 2.9572990536689758e-01 - - 2.2201120373210870e-05 -3.4219890136718750e+03 - <_> - - 0 -1 153 2.5999290868639946e-02 - - -3.6369461566209793e-02 7.7490493655204773e-02 - <_> - - 0 -1 154 8.0749327316880226e-03 - - 8.0705903470516205e-02 -2.8219139575958252e-01 - <_> - - 0 -1 155 7.5860577635467052e-04 - - -7.7643670141696930e-02 1.2977090477943420e-01 - <_> - - 0 -1 156 -1.7625710461288691e-03 - - 2.2141739726066589e-01 -9.8886981606483459e-02 - <_> - - 0 -1 157 1.1849809670820832e-03 - - 3.8486298173666000e-02 -2.7905330061912537e-01 - <_> - - 0 -1 158 -1.7625589668750763e-01 - - -4.3920260667800903e-01 5.1971361041069031e-02 - <_> - - 0 -1 159 -1.4031480532139540e-04 - - 1.2916420400142670e-01 -1.1323709785938263e-01 - <_> - - 0 -1 160 9.1363089159131050e-03 - - -1.1492040008306503e-01 2.2249349951744080e-01 - <_> - - 0 -1 161 -2.0029260776937008e-03 - - -2.1929590404033661e-01 4.0854889899492264e-02 - <_> - - 0 -1 162 5.5052232742309570e-01 - - 2.5654939934611320e-02 -8.3052450418472290e-01 - <_> - - 0 -1 163 -3.3507261425256729e-02 - - -7.0289891958236694e-01 1.2886079959571362e-02 - <_> - - 0 -1 164 -2.7022568974643946e-03 - - -3.9878979325294495e-01 4.9893561750650406e-02 - <_> - - 0 -1 165 3.3577920403331518e-03 - - -9.1834627091884613e-02 2.3746329545974731e-01 - <_> - - 0 -1 166 -1.3520480133593082e-03 - - 2.5809058547019958e-01 -1.1761110275983810e-01 - <_> - - 0 -1 167 5.6797950528562069e-03 - - 3.7395790219306946e-02 -5.9308350086212158e-01 - <_> - - 0 -1 168 1.4522479847073555e-02 - - 2.6865359395742416e-02 -6.3552677631378174e-01 - <_> - - 0 -1 169 8.3791668293997645e-04 - - -1.0668759793043137e-01 1.5068009495735168e-01 - <_> - - 0 -1 170 8.3057529991492629e-04 - - 7.6927617192268372e-02 -2.6659971475601196e-01 - <_> - - 0 -1 171 6.6323182545602322e-04 - - 4.0672291070222855e-02 -1.7801180481910706e-01 - <_> - - 0 -1 172 -5.4344389354810119e-04 - - -2.6988148689270020e-01 7.3258846998214722e-02 - <_> - - 0 -1 173 -3.6860290914773941e-02 - - 4.3150851130485535e-01 -4.9470368772745132e-02 - <_> - - 0 -1 174 7.5951730832457542e-03 - - 4.7471638768911362e-02 -4.4909921288490295e-01 - <_> - - 0 -1 175 2.5462580844759941e-02 - - -5.9732828289270401e-02 2.8767639398574829e-01 - <_> - - 0 -1 176 -3.7006419152021408e-03 - - 1.7362360656261444e-01 -1.0997570306062698e-01 - <_> - - 0 -1 177 2.5741709396243095e-03 - - -1.0621029883623123e-01 2.0239670574665070e-01 - <_> - - 0 -1 178 -7.0176380686461926e-03 - - -3.6438140273094177e-01 5.3866349160671234e-02 - <_> - - 0 -1 179 9.4404182163998485e-04 - - 5.6630179286003113e-02 -2.5456568598747253e-01 - <_> - - 0 -1 180 -1.7664339393377304e-02 - - 2.6503831148147583e-01 -7.4382461607456207e-02 - <_> - - 0 -1 181 -3.6102120066061616e-04 - - -1.7355899512767792e-01 6.0770709067583084e-02 - <_> - - 0 -1 182 -4.5951951295137405e-02 - - 5.9183728694915771e-01 -3.0130209401249886e-02 - <_> - - 0 -1 183 -4.7274961252696812e-04 - - 1.7608879506587982e-01 -8.7248638272285461e-02 - <_> - - 0 -1 184 2.6895289192907512e-04 - - 8.0688200891017914e-02 -2.2756110131740570e-01 - <_> - - 0 -1 185 3.1682780385017395e-01 - - 2.1571939811110497e-02 -7.6482397317886353e-01 - <_> - 80 - -1.2471400499343872e+00 - - <_> - - 0 -1 186 -3.0944950412958860e-03 - - 4.3914398550987244e-01 -2.8156408667564392e-01 - <_> - - 0 -1 187 6.9179706275463104e-02 - - -9.3691639602184296e-02 6.0624539852142334e-01 - <_> - - 0 -1 188 6.4804498106241226e-03 - - -1.8341860175132751e-01 3.0555349588394165e-01 - <_> - - 0 -1 189 -9.8769506439566612e-04 - - 1.9242240488529205e-01 -1.7901280522346497e-01 - <_> - - 0 -1 190 9.7585223615169525e-02 - - 2.1803719573654234e-04 -1.2009589843750000e+03 - <_> - - 0 -1 191 3.0975039408076555e-05 - - -2.3390169441699982e-01 1.3082669675350189e-01 - <_> - - 0 -1 192 -7.0616282755509019e-04 - - -2.9879850149154663e-01 1.3913549482822418e-01 - <_> - - 0 -1 193 1.1368830455467105e-03 - - -1.5226979553699493e-01 2.2299830615520477e-01 - <_> - - 0 -1 194 -5.0543190445750952e-04 - - -2.7679550647735596e-01 1.4219869673252106e-01 - <_> - - 0 -1 195 -5.1033319905400276e-03 - - 1.2869720160961151e-01 -9.3029417097568512e-02 - <_> - - 0 -1 196 1.4584139920771122e-02 - - 8.6251437664031982e-02 -4.2429849505424500e-01 - <_> - - 0 -1 197 8.8234096765518188e-02 - - -1.0650979727506638e-01 4.4383850693702698e-01 - <_> - - 0 -1 198 -1.2861689552664757e-02 - - -5.8968228101730347e-01 7.3525756597518921e-02 - <_> - - 0 -1 199 -4.9134939908981323e-02 - - 5.2274858951568604e-01 -8.1357583403587341e-02 - <_> - - 0 -1 200 8.5799451917409897e-03 - - -3.2367199659347534e-02 4.2821809649467468e-01 - <_> - - 0 -1 201 -5.7424148544669151e-03 - - -6.2083131074905396e-01 4.0638320147991180e-02 - <_> - - 0 -1 202 3.6491660284809768e-04 - - -1.5325640141963959e-01 1.4113970100879669e-01 - <_> - - 0 -1 203 -5.1613878458738327e-03 - - -4.1736799478530884e-01 8.1837482750415802e-02 - <_> - - 0 -1 204 -4.7439550980925560e-03 - - -2.9808390140533447e-01 8.1017002463340759e-02 - <_> - - 0 -1 205 4.1151638142764568e-03 - - -3.0103120952844620e-03 -2.4902789294719696e-01 - <_> - - 0 -1 206 1.2242980301380157e-01 - - 1.5216519823297858e-03 -1.7302570312500000e+05 - <_> - - 0 -1 207 -1.2401449494063854e-03 - - 1.7064030468463898e-01 -7.9368427395820618e-02 - <_> - - 0 -1 208 1.6567549901083112e-03 - - -9.2235311865806580e-02 2.3849889636039734e-01 - <_> - - 0 -1 209 8.1565687432885170e-03 - - -9.6964061260223389e-02 1.4428420364856720e-01 - <_> - - 0 -1 210 7.3455911874771118e-01 - - 3.2895841286517680e-04 -2.5542700195312500e+03 - <_> - - 0 -1 211 -3.5420949570834637e-03 - - -2.5129461288452148e-01 2.4388620629906654e-02 - <_> - - 0 -1 212 1.8159820139408112e-01 - - -2.5665969587862492e-03 -6.3014418945312500e+03 - <_> - - 0 -1 213 -2.5773700326681137e-02 - - -5.5453181266784668e-01 2.5118520483374596e-02 - <_> - - 0 -1 214 -3.6018029786646366e-03 - - 2.0427179336547852e-01 -1.1549550294876099e-01 - <_> - - 0 -1 215 2.0895600318908691e-03 - - 5.0279490649700165e-02 -3.1693729758262634e-01 - <_> - - 0 -1 216 -2.5717200711369514e-02 - - 1.7803180217742920e-01 -1.1794260144233704e-01 - <_> - - 0 -1 217 1.2641009688377380e-01 - - 8.8736182078719139e-03 -8.0529242753982544e-01 - <_> - - 0 -1 218 -3.0391849577426910e-03 - - -5.0898671150207520e-01 3.8904190063476562e-02 - <_> - - 0 -1 219 3.4312950447201729e-03 - - 1.1260470375418663e-02 -6.8515866994857788e-02 - <_> - - 0 -1 220 1.3510970347851980e-05 - - -1.4117120206356049e-01 1.5203879773616791e-01 - <_> - - 0 -1 221 -6.0387961566448212e-03 - - 2.0285439491271973e-01 -1.0382819920778275e-01 - <_> - - 0 -1 222 7.5726248323917389e-02 - - 3.9297537878155708e-03 -1.7562469482421875e+03 - <_> - - 0 -1 223 -1.9819270819425583e-02 - - -4.0167808532714844e-01 5.6793309748172760e-02 - <_> - - 0 -1 224 4.9060788005590439e-03 - - -8.3899140357971191e-02 2.9041549563407898e-01 - <_> - - 0 -1 225 -8.1648901104927063e-02 - - -3.6353430151939392e-01 6.3147798180580139e-02 - <_> - - 0 -1 226 -1.0384770110249519e-02 - - -5.3429818153381348e-01 3.6934189498424530e-02 - <_> - - 0 -1 227 8.6628712713718414e-02 - - -6.6336899995803833e-02 2.7173450589179993e-01 - <_> - - 0 -1 228 -3.5050030797719955e-02 - - 1.7942179739475250e-01 -1.2234839797019958e-01 - <_> - - 0 -1 229 -4.8283189535140991e-03 - - -2.4450659751892090e-01 3.5196378827095032e-02 - <_> - - 0 -1 230 6.4928561914712191e-04 - - 6.8680599331855774e-02 -2.6865988969802856e-01 - <_> - - 0 -1 231 -3.8541138172149658e-02 - - 3.0204850435256958e-01 -3.6987539380788803e-02 - <_> - - 0 -1 232 -4.1178430547006428e-04 - - -2.5598031282424927e-01 7.3106467723846436e-02 - <_> - - 0 -1 233 -1.1390140280127525e-02 - - 2.4735149741172791e-01 -7.3474846780300140e-02 - <_> - - 0 -1 234 9.6719461726024747e-04 - - -1.4487570524215698e-01 1.6915149986743927e-01 - <_> - - 0 -1 235 5.8444878086447716e-03 - - -8.8432386517524719e-02 2.5800499320030212e-01 - <_> - - 0 -1 236 2.3828010261058807e-01 - - 1.7703069606795907e-03 -5.5330332031250000e+03 - <_> - - 0 -1 237 1.5342529513873160e-04 - - -9.9161237478256226e-02 1.1086180061101913e-01 - <_> - - 0 -1 238 -1.8891949206590652e-02 - - -5.4732471704483032e-01 3.6851409822702408e-02 - <_> - - 0 -1 239 -1.4927709707990289e-03 - - -2.0114320516586304e-01 4.4706899672746658e-02 - <_> - - 0 -1 240 -4.1659721173346043e-03 - - 3.2556429505348206e-01 -6.0132320970296860e-02 - <_> - - 0 -1 241 -1.1243360117077827e-02 - - -7.0226919651031494e-01 2.9433030635118484e-02 - <_> - - 0 -1 242 -3.3863231074064970e-03 - - 2.7912768721580505e-01 -7.1983598172664642e-02 - <_> - - 0 -1 243 -1.2514149770140648e-02 - - -6.0517168045043945e-01 3.4084219485521317e-02 - <_> - - 0 -1 244 1.3723900337936357e-05 - - -1.4314189553260803e-01 1.3461969792842865e-01 - <_> - - 0 -1 245 -7.5697568245232105e-03 - - -3.7676548957824707e-01 2.5302769616246223e-02 - <_> - - 0 -1 246 2.5683428975753486e-04 - - -1.4978440105915070e-01 1.1690360307693481e-01 - <_> - - 0 -1 247 -7.2857661871239543e-04 - - -1.6689300537109375e-01 3.8428731262683868e-02 - <_> - - 0 -1 248 -3.6967459321022034e-01 - - -3.1460630893707275e-01 5.0487510859966278e-02 - <_> - - 0 -1 249 -8.5158832371234894e-03 - - 1.1459340155124664e-01 -6.8403221666812897e-02 - <_> - - 0 -1 250 8.1972801126539707e-04 - - 5.2736330777406693e-02 -3.1499680876731873e-01 - <_> - - 0 -1 251 -4.1751582175493240e-03 - - 1.7611530423164368e-01 -8.1676989793777466e-02 - <_> - - 0 -1 252 -9.8344944417476654e-03 - - 2.0449779927730560e-01 -9.0233117341995239e-02 - <_> - - 0 -1 253 4.3716239742934704e-03 - - 4.1800890117883682e-02 -3.7982788681983948e-01 - <_> - - 0 -1 254 1.7981700366362929e-03 - - -9.7453393042087555e-02 1.7104120552539825e-01 - <_> - - 0 -1 255 -7.8003508970141411e-03 - - -4.3254071474075317e-01 2.9787249863147736e-02 - <_> - - 0 -1 256 -4.4292348623275757e-01 - - -4.7411221265792847e-01 3.3337648957967758e-02 - <_> - - 0 -1 257 -4.7213938087224960e-03 - - 2.2911380231380463e-01 -9.4238728284835815e-02 - <_> - - 0 -1 258 -9.7442632541060448e-03 - - -6.4544659852981567e-01 3.0015440657734871e-02 - <_> - - 0 -1 259 1.5859480481594801e-03 - - 4.3672118335962296e-02 -2.2221189737319946e-01 - <_> - - 0 -1 260 -2.3678180295974016e-03 - - 1.5183700621128082e-01 -1.0775730013847351e-01 - <_> - - 0 -1 261 -3.2757879234850407e-03 - - -2.5875130295753479e-01 5.0640020519495010e-02 - <_> - - 0 -1 262 2.9536550864577293e-02 - - -4.3125800788402557e-02 3.9636090397834778e-01 - <_> - - 0 -1 263 1.4104120200499892e-03 - - 2.6309840381145477e-02 -7.1616649627685547e-02 - <_> - - 0 -1 264 -2.9282430186867714e-03 - - -3.1005808711051941e-01 5.6898139417171478e-02 - <_> - - 0 -1 265 -1.2943849433213472e-03 - - 1.9013640284538269e-01 -8.8158689439296722e-02 - <_> - 97 - -1.1778520345687866e+00 - - <_> - - 0 -1 266 2.0764119923114777e-02 - - -1.4975740015506744e-01 5.2302300930023193e-01 - <_> - - 0 -1 267 -1.0967290028929710e-02 - - 2.7506521344184875e-01 -1.7145189642906189e-01 - <_> - - 0 -1 268 4.5052461326122284e-02 - - -1.0644319653511047e-01 3.6856299638748169e-01 - <_> - - 0 -1 269 1.0590599849820137e-02 - - 6.2317319214344025e-02 -5.3822457790374756e-01 - <_> - - 0 -1 270 6.0975952073931694e-03 - - 1.1455009877681732e-01 -3.7335288524627686e-01 - <_> - - 0 -1 271 -3.7739051040261984e-03 - - 2.6657769083976746e-01 -1.0533609986305237e-01 - <_> - - 0 -1 272 4.2882350087165833e-01 - - -1.0790639789775014e-03 -2.2903289062500000e+04 - <_> - - 0 -1 273 -6.7734188633039594e-04 - - -3.0621621012687683e-01 6.9742493331432343e-02 - <_> - - 0 -1 274 3.4243479371070862e-02 - - 6.6037551732733846e-04 -1.2504589843750000e+04 - <_> - - 0 -1 275 4.0923009510152042e-04 - - 1.0079199820756912e-01 -3.5287478566169739e-01 - <_> - - 0 -1 276 2.3382599651813507e-01 - - -1.5880500897765160e-02 -1.7048220214843750e+03 - <_> - - 0 -1 277 1.6109049320220947e-02 - - -6.2004629522562027e-02 4.0062409639358521e-01 - <_> - - 0 -1 278 6.8031012779101729e-04 - - -1.4876119792461395e-01 1.7793330550193787e-01 - <_> - - 0 -1 279 -3.9104801416397095e-01 - - 5.4885149002075195e-01 -4.6494610607624054e-02 - <_> - - 0 -1 280 1.5723650157451630e-01 - - 6.0893679037690163e-03 -1.7285980224609375e+03 - <_> - - 0 -1 281 -3.7645339034497738e-04 - - -2.5363451242446899e-01 8.2632511854171753e-02 - <_> - - 0 -1 282 8.7999942479655147e-04 - - -1.8807730078697205e-01 1.1852300167083740e-01 - <_> - - 0 -1 283 6.7365981522016227e-06 - - -7.4151508510112762e-02 8.9997649192810059e-02 - <_> - - 0 -1 284 8.3209738135337830e-02 - - 2.1281070075929165e-03 -6.3955561523437500e+03 - <_> - - 0 -1 285 1.6005210636649281e-04 - - 4.8919059336185455e-02 -1.0724899917840958e-01 - <_> - - 0 -1 286 -5.7949139736592770e-03 - - -5.8656597137451172e-01 3.3166468143463135e-02 - <_> - - 0 -1 287 -1.4493979979306459e-03 - - -2.6738798618316650e-01 7.4978969991207123e-02 - <_> - - 0 -1 288 7.8148208558559418e-04 - - -1.3112050294876099e-01 1.4760360121726990e-01 - <_> - - 0 -1 289 -2.5643259286880493e-02 - - 1.6250650584697723e-01 -9.1025821864604950e-02 - <_> - - 0 -1 290 -1.2929979711771011e-02 - - -6.5028107166290283e-01 3.1778071075677872e-02 - <_> - - 0 -1 291 -2.3630550131201744e-03 - - 2.0410169661045074e-01 -9.9841013550758362e-02 - <_> - - 0 -1 292 8.1470218719914556e-04 - - 6.2313590198755264e-02 -3.6279430985450745e-01 - <_> - - 0 -1 293 6.7365981522016227e-06 - - -5.2140578627586365e-02 6.2869362533092499e-02 - <_> - - 0 -1 294 -3.5238551208749413e-04 - - -2.4512000381946564e-01 8.4787286818027496e-02 - <_> - - 0 -1 295 1.7286300659179688e-02 - - 2.2450499236583710e-02 -3.8069969415664673e-01 - <_> - - 0 -1 296 2.2224580869078636e-02 - - -7.4508157558739185e-04 -3.7578330078125000e+03 - <_> - - 0 -1 297 -6.9434130564332008e-03 - - 3.0345991253852844e-01 -6.8258620798587799e-02 - <_> - - 0 -1 298 -1.9307930488139391e-03 - - 1.9534489512443542e-01 -1.0631649941205978e-01 - <_> - - 0 -1 299 2.9717159923166037e-03 - - -7.6913289725780487e-02 2.8775081038475037e-01 - <_> - - 0 -1 300 1.4184940373525023e-03 - - -9.5377556979656219e-02 2.3964689671993256e-01 - <_> - - 0 -1 301 -5.2888790378347039e-04 - - -2.0120939612388611e-01 5.8836109936237335e-02 - <_> - - 0 -1 302 -6.4028277993202209e-03 - - -5.1489818096160889e-01 3.8380980491638184e-02 - <_> - - 0 -1 303 -6.9917421787977219e-03 - - -3.8498568534851074e-01 3.4050729125738144e-02 - <_> - - 0 -1 304 1.1123559670522809e-03 - - -8.2141973078250885e-02 2.0122329890727997e-01 - <_> - - 0 -1 305 -1.9065090455114841e-03 - - 2.3690469563007355e-01 -8.7772883474826813e-02 - <_> - - 0 -1 306 -7.7383301686495543e-04 - - -3.3837988972663879e-01 6.4057871699333191e-02 - <_> - - 0 -1 307 -3.2006528228521347e-02 - - 1.9329549372196198e-01 -4.2547859251499176e-02 - <_> - - 0 -1 308 1.0583669645711780e-03 - - 5.5602710694074631e-02 -3.3093279600143433e-01 - <_> - - 0 -1 309 -3.8688271160935983e-05 - - 1.2988729774951935e-01 -1.2732440233230591e-01 - <_> - - 0 -1 310 4.2495719389989972e-04 - - 6.6007331013679504e-02 -2.4933560192584991e-01 - <_> - - 0 -1 311 -1.0858799796551466e-03 - - 1.7536289989948273e-01 -8.8097922503948212e-02 - <_> - - 0 -1 312 -4.4220269774086773e-04 - - -2.4474479258060455e-01 6.7323610186576843e-02 - <_> - - 0 -1 313 -2.3488050326704979e-02 - - -7.9384112358093262e-01 2.2099610418081284e-02 - <_> - - 0 -1 314 -1.1940260231494904e-01 - - 2.4683830142021179e-01 -7.0952303707599640e-02 - <_> - - 0 -1 315 1.3755969703197479e-02 - - -8.4090009331703186e-02 1.3500119745731354e-01 - <_> - - 0 -1 316 1.1233439436182380e-03 - - 5.7501669973134995e-02 -2.9114100337028503e-01 - <_> - - 0 -1 317 5.5660970509052277e-02 - - -2.6459809392690659e-02 8.7817266583442688e-02 - <_> - - 0 -1 318 5.8998711407184601e-02 - - -5.8845829218626022e-02 2.6846578717231750e-01 - <_> - - 0 -1 319 2.9505279660224915e-01 - - 4.5877238735556602e-03 -5.7907432317733765e-01 - <_> - - 0 -1 320 -1.8508419394493103e-02 - - 1.5778020024299622e-01 -1.0833639651536942e-01 - <_> - - 0 -1 321 -1.4618839323520660e-01 - - -4.9797090888023376e-01 1.0800120420753956e-02 - <_> - - 0 -1 322 5.1881098188459873e-03 - - 7.1662880480289459e-02 -2.3642310500144958e-01 - <_> - - 0 -1 323 3.4516301006078720e-02 - - 1.5872199088335037e-02 -7.6911771297454834e-01 - <_> - - 0 -1 324 -1.3522060215473175e-01 - - 2.3531170189380646e-01 -6.6149227321147919e-02 - <_> - - 0 -1 325 2.9648290947079659e-03 - - -1.1206760257482529e-01 1.5914240479469299e-01 - <_> - - 0 -1 326 -3.2500699162483215e-01 - - -2.9588839411735535e-01 5.4077230393886566e-02 - <_> - - 0 -1 327 1.8331170082092285e-02 - - 8.5066035389900208e-03 -7.3759001493453979e-01 - <_> - - 0 -1 328 -4.9089170061051846e-03 - - -5.8902698755264282e-01 2.1977530792355537e-02 - <_> - - 0 -1 329 -3.5843739751726389e-03 - - 2.5745728611946106e-01 -6.3865438103675842e-02 - <_> - - 0 -1 330 2.4481210857629776e-03 - - -9.6901766955852509e-02 1.8875969946384430e-01 - <_> - - 0 -1 331 6.8095198366791010e-04 - - 5.3433369845151901e-02 -1.8442170321941376e-01 - <_> - - 0 -1 332 1.9464099779725075e-02 - - 2.3036409169435501e-02 -6.8508958816528320e-01 - <_> - - 0 -1 333 -1.3493030564859509e-03 - - -2.5615009665489197e-01 4.4585660099983215e-02 - <_> - - 0 -1 334 6.7073898389935493e-03 - - -5.5639579892158508e-02 2.7087089419364929e-01 - <_> - - 0 -1 335 3.5809920518659055e-04 - - 7.6499707996845245e-02 -2.3015449941158295e-01 - <_> - - 0 -1 336 -2.1596080623567104e-03 - - 1.3892489671707153e-01 -1.0937239974737167e-01 - <_> - - 0 -1 337 2.8032960835844278e-03 - - -6.7089870572090149e-02 2.2176960110664368e-01 - <_> - - 0 -1 338 2.7888039126992226e-02 - - 2.6833660900592804e-02 -5.6622868776321411e-01 - <_> - - 0 -1 339 6.7365981522016227e-06 - - -7.2127588093280792e-02 8.5058122873306274e-02 - <_> - - 0 -1 340 -6.2904052902013063e-04 - - -2.5115230679512024e-01 5.6262891739606857e-02 - <_> - - 0 -1 341 1.5627900138497353e-03 - - -5.7666070759296417e-02 2.6594689488410950e-01 - <_> - - 0 -1 342 1.7357030883431435e-02 - - 1.6016509383916855e-02 -8.6053389310836792e-01 - <_> - - 0 -1 343 -9.3336682766675949e-03 - - -3.2241278886795044e-01 3.9600308984518051e-02 - <_> - - 0 -1 344 2.3083039559423923e-04 - - -1.6356049478054047e-01 9.8472960293292999e-02 - <_> - - 0 -1 345 2.9408670961856842e-03 - - -6.8432979285717010e-02 1.3971360027790070e-01 - <_> - - 0 -1 346 4.0767160244286060e-03 - - -7.9789556562900543e-02 1.7827980220317841e-01 - <_> - - 0 -1 347 7.0768459700047970e-03 - - -7.2593651711940765e-02 1.4493489265441895e-01 - <_> - - 0 -1 348 3.5675889812409878e-03 - - 4.6059738844633102e-02 -3.3893358707427979e-01 - <_> - - 0 -1 349 7.5691796839237213e-02 - - 6.0740611515939236e-03 -6.1316579580307007e-01 - <_> - - 0 -1 350 3.8123109843581915e-03 - - -9.8515607416629791e-02 1.4706909656524658e-01 - <_> - - 0 -1 351 -7.3113790713250637e-03 - - -4.7229430079460144e-01 2.1679550409317017e-02 - <_> - - 0 -1 352 -7.2989451885223389e-01 - - -6.8595397472381592e-01 1.9538680091500282e-02 - <_> - - 0 -1 353 1.4671859389636666e-04 - - 5.1220420747995377e-02 -1.1446470022201538e-01 - <_> - - 0 -1 354 -5.5560008622705936e-03 - - -4.1612398624420166e-01 3.2702378928661346e-02 - <_> - - 0 -1 355 -1.5673910093028098e-04 - - 1.3286870718002319e-01 -1.3249930739402771e-01 - <_> - - 0 -1 356 -2.7738639619201422e-03 - - 2.0943209528923035e-01 -6.3917256891727448e-02 - <_> - - 0 -1 357 2.2972989827394485e-03 - - 7.4391417205333710e-02 -2.0786069333553314e-01 - <_> - - 0 -1 358 5.2493470720946789e-03 - - -6.4007326960563660e-02 2.2066879272460938e-01 - <_> - - 0 -1 359 6.3456031493842602e-03 - - 1.9649159163236618e-02 -5.3507632017135620e-01 - <_> - - 0 -1 360 -6.7409980110824108e-03 - - -6.1353850364685059e-01 2.1510519087314606e-02 - <_> - - 0 -1 361 -1.1170540004968643e-02 - - -3.7826779484748840e-01 2.0506409928202629e-02 - <_> - - 0 -1 362 3.8897111080586910e-03 - - -6.6197447478771210e-02 2.1680620312690735e-01 - <_> - 102 - -1.1284530162811279e+00 - - <_> - - 0 -1 363 -9.1578466817736626e-03 - - 4.2972201108932495e-01 -2.3510800302028656e-01 - <_> - - 0 -1 364 1.4027149975299835e-01 - - 7.2441468946635723e-03 -3.2531410217285156e+01 - <_> - - 0 -1 365 2.2851820103824139e-03 - - -1.2872549891471863e-01 3.2936421036720276e-01 - <_> - - 0 -1 366 -4.8890261678025126e-04 - - 2.3927259445190430e-01 -1.4880880713462830e-01 - <_> - - 0 -1 367 -1.3616800308227539e-02 - - -5.4977691173553467e-01 5.1818989217281342e-02 - <_> - - 0 -1 368 2.3789319675415754e-03 - - -9.8430566489696503e-02 2.3688089847564697e-01 - <_> - - 0 -1 369 -1.4167469998938031e-05 - - 1.0164249688386917e-01 -2.1797139942646027e-01 - <_> - - 0 -1 370 2.8050719265593216e-05 - - -1.0424599796533585e-01 2.6081371307373047e-01 - <_> - - 0 -1 371 -1.9801670685410500e-02 - - 1.6776250302791595e-01 -1.3982580602169037e-01 - <_> - - 0 -1 372 -1.8928950652480125e-02 - - -2.8522980213165283e-01 7.3428876698017120e-02 - <_> - - 0 -1 373 -1.3925390318036079e-02 - - 3.5411250591278076e-01 -6.2552347779273987e-02 - <_> - - 0 -1 374 8.3792414516210556e-03 - - -4.7943230718374252e-02 1.0880140215158463e-01 - <_> - - 0 -1 375 6.2343817949295044e-01 - - -3.8946459535509348e-03 -3.5067338867187500e+03 - <_> - - 0 -1 376 2.1577600389719009e-02 - - 2.5115730240941048e-02 -2.8660660982131958e-01 - <_> - - 0 -1 377 1.0512989945709705e-02 - - -4.6095490455627441e-02 4.1044908761978149e-01 - <_> - - 0 -1 378 1.3560419902205467e-02 - - 2.5737280026078224e-02 -3.8515180349349976e-01 - <_> - - 0 -1 379 2.1165169775485992e-01 - - 2.4527360219508410e-03 -7.2768730468750000e+03 - <_> - - 0 -1 380 -3.3338558860123158e-03 - - -2.0405860245227814e-01 4.3633658438920975e-02 - <_> - - 0 -1 381 8.9795915409922600e-03 - - 7.8953661024570465e-02 -2.7793759107589722e-01 - <_> - - 0 -1 382 5.3711910732090473e-03 - - -2.4344349279999733e-02 6.6921539604663849e-02 - <_> - - 0 -1 383 -8.3309561014175415e-03 - - -3.5009130835533142e-01 5.9051599353551865e-02 - <_> - - 0 -1 384 2.8106879908591509e-03 - - -1.2311270087957382e-01 1.0225059837102890e-01 - <_> - - 0 -1 385 2.1045610308647156e-02 - - 5.5626410990953445e-02 -3.3561658859252930e-01 - <_> - - 0 -1 386 3.7455770652741194e-03 - - -6.7443586885929108e-02 2.2442549467086792e-01 - <_> - - 0 -1 387 6.9531667232513428e-01 - - 1.5418729744851589e-03 -1.3301940429687500e+04 - <_> - - 0 -1 388 -6.6458311630412936e-04 - - -2.2340250015258789e-01 5.1155500113964081e-02 - <_> - - 0 -1 389 5.3947657579556108e-04 - - -1.3277970254421234e-01 1.3717539608478546e-01 - <_> - - 0 -1 390 -1.7990419641137123e-02 - - -6.2576317787170410e-01 2.9063150286674500e-02 - <_> - - 0 -1 391 4.7633830457925797e-02 - - -7.7418819069862366e-02 2.3740810155868530e-01 - <_> - - 0 -1 392 -3.3820658922195435e-02 - - 1.5334419906139374e-01 -1.1414159834384918e-01 - <_> - - 0 -1 393 -2.8191189630888402e-04 - - -2.3677270114421844e-01 8.2807861268520355e-02 - <_> - - 0 -1 394 -1.3994389446452260e-03 - - -2.8520968556404114e-01 2.2187830880284309e-02 - <_> - - 0 -1 395 -7.1874959394335747e-03 - - 2.7148950099945068e-01 -6.6327087581157684e-02 - <_> - - 0 -1 396 4.0477450238540769e-04 - - 6.4594961702823639e-02 -2.2240179777145386e-01 - <_> - - 0 -1 397 -3.2028779387474060e-03 - - 2.1377420425415039e-01 -9.7073882818222046e-02 - <_> - - 0 -1 398 1.4322189599624835e-05 - - -1.4376519620418549e-01 9.7971871495246887e-02 - <_> - - 0 -1 399 1.2757449876517057e-03 - - -8.4751658141613007e-02 2.2380630671977997e-01 - <_> - - 0 -1 400 4.8291438724845648e-04 - - 4.6522580087184906e-02 -2.2262130677700043e-01 - <_> - - 0 -1 401 1.3836859579896554e-05 - - -1.6030070185661316e-01 1.1645960062742233e-01 - <_> - - 0 -1 402 -2.6899509248323739e-04 - - -1.2680959701538086e-01 5.1257088780403137e-02 - <_> - - 0 -1 403 1.3922810321673751e-03 - - -1.2315029650926590e-01 1.5025359392166138e-01 - <_> - - 0 -1 404 1.3342479360289872e-04 - - 3.3665519207715988e-02 -8.1610232591629028e-02 - <_> - - 0 -1 405 6.1454152455553412e-04 - - 5.6519761681556702e-02 -3.1433230638504028e-01 - <_> - - 0 -1 406 -1.7104489961639047e-03 - - 2.2990170121192932e-01 -8.1584148108959198e-02 - <_> - - 0 -1 407 1.3824190318700857e-05 - - -1.1941490322351456e-01 1.3250949978828430e-01 - <_> - - 0 -1 408 2.7970890514552593e-03 - - -4.7103289514780045e-02 1.9908480346202850e-01 - <_> - - 0 -1 409 -3.9447317831218243e-03 - - -3.2104620337486267e-01 6.1310898512601852e-02 - <_> - - 0 -1 410 -3.4402438905090094e-03 - - 2.1354329586029053e-01 -6.1212468892335892e-02 - <_> - - 0 -1 411 -2.4654779583215714e-02 - - 2.3340779542922974e-01 -6.6846966743469238e-02 - <_> - - 0 -1 412 6.3331361161544919e-04 - - -9.4038836658000946e-02 7.8479669988155365e-02 - <_> - - 0 -1 413 -4.2303430382162333e-04 - - -2.3801739513874054e-01 7.2642073035240173e-02 - <_> - - 0 -1 414 2.9926518909633160e-03 - - -6.4649626612663269e-02 2.4833339452743530e-01 - <_> - - 0 -1 415 -1.1798020452260971e-02 - - -3.0166530609130859e-01 6.1118420213460922e-02 - <_> - - 0 -1 416 -9.7868414595723152e-03 - - -4.5015549659729004e-01 2.8377190232276917e-02 - <_> - - 0 -1 417 -5.7037919759750366e-03 - - 2.4853350222110748e-01 -6.9355443120002747e-02 - <_> - - 0 -1 418 1.4342799659061711e-05 - - -1.1431010067462921e-01 1.2247920036315918e-01 - <_> - - 0 -1 419 3.3727320260368288e-04 - - 7.1289442479610443e-02 -2.1220469474792480e-01 - <_> - - 0 -1 420 -1.3521739747375250e-03 - - 1.8407520651817322e-01 -8.8902108371257782e-02 - <_> - - 0 -1 421 3.9903540164232254e-03 - - -7.5362227857112885e-02 2.0549720525741577e-01 - <_> - - 0 -1 422 1.9200939685106277e-02 - - 1.3868289999663830e-02 -4.2045280337333679e-01 - <_> - - 0 -1 423 -1.3546509668231010e-02 - - -5.1325750350952148e-01 2.9454749077558517e-02 - <_> - - 0 -1 424 -1.5859559644013643e-03 - - 2.2549459338188171e-01 -8.4416687488555908e-02 - <_> - - 0 -1 425 2.0342590287327766e-03 - - 6.7020267248153687e-02 -2.3722359538078308e-01 - <_> - - 0 -1 426 6.5835699439048767e-02 - - 2.2492709103971720e-03 -6.3382607698440552e-01 - <_> - - 0 -1 427 -1.9567420706152916e-02 - - -4.0725719928741455e-01 3.5422671586275101e-02 - <_> - - 0 -1 428 4.8953219084069133e-04 - - -6.0342669486999512e-02 1.3273899257183075e-01 - <_> - - 0 -1 429 1.4131540410744492e-05 - - -1.1641930043697357e-01 1.2682040035724640e-01 - <_> - - 0 -1 430 1.4203680620994419e-04 - - -8.8367782533168793e-02 1.3554699718952179e-01 - <_> - - 0 -1 431 7.1458360180258751e-03 - - 4.3511848896741867e-02 -3.1864428520202637e-01 - <_> - - 0 -1 432 -3.3641001209616661e-04 - - 1.0204680263996124e-01 -9.4299122691154480e-02 - <_> - - 0 -1 433 1.0267529869452119e-03 - - -5.9334348887205124e-02 2.2539639472961426e-01 - <_> - - 0 -1 434 -1.7631480295676738e-04 - - -1.0789939761161804e-01 5.4198570549488068e-02 - <_> - - 0 -1 435 2.8943250072188675e-05 - - -1.4709359407424927e-01 9.9714383482933044e-02 - <_> - - 0 -1 436 -1.3899109944759402e-05 - - 8.0603472888469696e-02 -6.6251203417778015e-02 - <_> - - 0 -1 437 3.2039379584603012e-04 - - 7.1343272924423218e-02 -2.0526170730590820e-01 - <_> - - 0 -1 438 -3.6573910620063543e-03 - - 2.4581959843635559e-01 -6.0287520289421082e-02 - <_> - - 0 -1 439 1.3356460258364677e-03 - - 5.8436870574951172e-02 -2.4109329283237457e-01 - <_> - - 0 -1 440 -1.4866300261928700e-05 - - 6.8313658237457275e-02 -7.8472986817359924e-02 - <_> - - 0 -1 441 -2.8311789501458406e-03 - - 1.3542939722537994e-01 -9.7606517374515533e-02 - <_> - - 0 -1 442 3.0081909149885178e-02 - - 3.2058879733085632e-02 -4.4436109066009521e-01 - <_> - - 0 -1 443 -1.8263630568981171e-02 - - -7.2238588333129883e-01 1.5590840019285679e-02 - <_> - - 0 -1 444 -3.3928160555660725e-03 - - 2.1983329951763153e-01 -2.1465340629220009e-02 - <_> - - 0 -1 445 1.7436090274713933e-04 - - -1.0531249642372131e-01 1.1543189734220505e-01 - <_> - - 0 -1 446 -2.3402511142194271e-03 - - -8.7868809700012207e-02 5.3345490247011185e-02 - <_> - - 0 -1 447 -1.4445939996221568e-05 - - 1.2160749733448029e-01 -1.1292660236358643e-01 - <_> - - 0 -1 448 6.8112200824543834e-04 - - -4.6869128942489624e-02 8.0613352358341217e-02 - <_> - - 0 -1 449 5.8264320250600576e-04 - - -9.6398808062076569e-02 1.1941459774971008e-01 - <_> - - 0 -1 450 1.9176679779775441e-04 - - 5.0320759415626526e-02 -1.1637129634618759e-01 - <_> - - 0 -1 451 -2.7771131135523319e-04 - - -1.9483520090579987e-01 6.6177822649478912e-02 - <_> - - 0 -1 452 3.9666048251092434e-03 - - -5.0924081355333328e-02 2.5490629673004150e-01 - <_> - - 0 -1 453 -1.1685799807310104e-02 - - -4.9997681379318237e-01 2.5235859677195549e-02 - <_> - - 0 -1 454 2.6211979985237122e-01 - - 2.2027140483260155e-02 -5.0479358434677124e-01 - <_> - - 0 -1 455 2.6809240225702524e-03 - - -4.1297640651464462e-02 3.1011810898780823e-01 - <_> - - 0 -1 456 -1.4688560440845322e-05 - - 9.8060786724090576e-02 -9.0592108666896820e-02 - <_> - - 0 -1 457 6.3697979785501957e-03 - - 6.6596217453479767e-02 -2.0278799533843994e-01 - <_> - - 0 -1 458 4.6842519193887711e-02 - - -5.1452621817588806e-02 2.5977781414985657e-01 - <_> - - 0 -1 459 -1.3824669622408692e-05 - - 1.0483329743146896e-01 -1.1802680045366287e-01 - <_> - - 0 -1 460 4.4806601363234222e-04 - - -3.3751420676708221e-02 7.9996213316917419e-02 - <_> - - 0 -1 461 3.8907579437363893e-05 - - -1.0547590255737305e-01 1.2467110157012939e-01 - <_> - - 0 -1 462 1.3659050455316901e-03 - - 4.0345400571823120e-02 -1.9732360541820526e-01 - <_> - - 0 -1 463 5.0416071899235249e-03 - - -8.6208023130893707e-02 1.3775950670242310e-01 - <_> - - 0 -1 464 -4.6140711754560471e-02 - - 1.4173319935798645e-01 -9.5894940197467804e-02 - <_> - 125 - -1.1831159591674805e+00 - - <_> - - 0 -1 465 8.3971247076988220e-03 - - -2.5191619992256165e-01 3.7484309077262878e-01 - <_> - - 0 -1 466 2.1425200626254082e-02 - - -9.7007170319557190e-02 5.1687681674957275e-01 - <_> - - 0 -1 467 -1.0318770073354244e-02 - - 2.9335889220237732e-01 -1.2733930349349976e-01 - <_> - - 0 -1 468 1.1448180302977562e-03 - - -1.8665100634098053e-01 1.7313909530639648e-01 - <_> - - 0 -1 469 7.5393520295619965e-02 - - -6.0648728162050247e-02 3.6127880215644836e-01 - <_> - - 0 -1 470 -9.3370512127876282e-02 - - 2.3438410460948944e-01 -8.7117947638034821e-02 - <_> - - 0 -1 471 5.2113737910985947e-03 - - 6.1274390667676926e-02 -3.0776879191398621e-01 - <_> - - 0 -1 472 9.9769225344061852e-03 - - -6.4087107777595520e-02 3.1106120347976685e-01 - <_> - - 0 -1 473 1.9360840087756515e-03 - - -1.2336800247430801e-01 1.8175140023231506e-01 - <_> - - 0 -1 474 7.2699370793998241e-03 - - 9.7474679350852966e-02 -2.7541360259056091e-01 - <_> - - 0 -1 475 2.1936019882559776e-02 - - -4.1907928884029388e-02 -1356970. - <_> - - 0 -1 476 2.1171040134504437e-04 - - -1.0929139703512192e-01 1.3006860017776489e-01 - <_> - - 0 -1 477 3.3750660717487335e-02 - - 2.8121320530772209e-02 -1164827. - <_> - - 0 -1 478 7.5086490251123905e-03 - - 4.7132410109043121e-02 -3.7406718730926514e-01 - <_> - - 0 -1 479 4.4921328662894666e-04 - - 7.6395303010940552e-02 -2.3185940086841583e-01 - <_> - - 0 -1 480 -6.6751212580129504e-04 - - -2.4809950590133667e-01 4.5045658946037292e-02 - <_> - - 0 -1 481 1.6522139310836792e-01 - - -2.5855910032987595e-02 -2.0928300781250000e+04 - <_> - - 0 -1 482 -2.3144209757447243e-02 - - 4.0059879422187805e-01 -2.7459429576992989e-02 - <_> - - 0 -1 483 -1.3048340380191803e-01 - - 6.6290372610092163e-01 3.1869049416854978e-04 - <_> - - 0 -1 484 3.1665959395468235e-03 - - 4.9700789153575897e-02 -1.5884129703044891e-01 - <_> - - 0 -1 485 2.2637179121375084e-02 - - -2.2492250427603722e-02 -1.7191429443359375e+03 - <_> - - 0 -1 486 -3.7033710628747940e-02 - - 1.7758910357952118e-01 -1.1330360174179077e-01 - <_> - - 0 -1 487 9.5705546438694000e-02 - - -4.9311641603708267e-02 2.7034428715705872e-01 - <_> - - 0 -1 488 4.9114227294921875e-04 - - 5.6370090693235397e-02 -2.7641159296035767e-01 - <_> - - 0 -1 489 1.5984029741957784e-03 - - -1.3944919407367706e-01 1.1525160074234009e-01 - <_> - - 0 -1 490 -2.3700800375081599e-04 - - -1.2026940286159515e-01 4.5053198933601379e-02 - <_> - - 0 -1 491 -1.7486650031059980e-03 - - 2.2485430538654327e-01 -6.9119632244110107e-02 - <_> - - 0 -1 492 8.1553738564252853e-03 - - 6.8141236901283264e-02 -2.3620179295539856e-01 - <_> - - 0 -1 493 5.3146569989621639e-03 - - 6.0295980423688889e-02 -2.6967340707778931e-01 - <_> - - 0 -1 494 2.0854989998042583e-04 - - -9.9282257258892059e-02 1.4055749773979187e-01 - <_> - - 0 -1 495 -2.0299179013818502e-03 - - 1.4621229469776154e-01 -1.0290420055389404e-01 - <_> - - 0 -1 496 -4.4038048945367336e-03 - - 1.7609240114688873e-01 -7.7655613422393799e-02 - <_> - - 0 -1 497 2.3809750564396381e-03 - - -7.1971938014030457e-02 2.1995179355144501e-01 - <_> - - 0 -1 498 5.7388218119740486e-03 - - 6.1643019318580627e-02 -2.8285768628120422e-01 - <_> - - 0 -1 499 -6.7427940666675568e-03 - - -4.5731940865516663e-01 2.6625709608197212e-02 - <_> - - 0 -1 500 -1.2488880020100623e-04 - - 7.1579828858375549e-02 -7.4957497417926788e-02 - <_> - - 0 -1 501 -7.2185341268777847e-03 - - -2.9619631171226501e-01 4.9233179539442062e-02 - <_> - - 0 -1 502 -5.8523979969322681e-03 - - -2.4193920195102692e-01 3.9187800139188766e-02 - <_> - - 0 -1 503 -1.5999950468540192e-02 - - 1.7959849536418915e-01 -9.0380683541297913e-02 - <_> - - 0 -1 504 -1.4750259651918896e-05 - - 1.2605859339237213e-01 -1.1274249851703644e-01 - <_> - - 0 -1 505 1.2057370040565729e-03 - - -6.0650561004877090e-02 2.1973450481891632e-01 - <_> - - 0 -1 506 -4.5243799686431885e-03 - - -4.3269020318984985e-01 2.5853620842099190e-02 - <_> - - 0 -1 507 2.5474729482084513e-03 - - 3.3592820167541504e-02 -3.6064180731773376e-01 - <_> - - 0 -1 508 -1.2268190039321780e-03 - - 9.5219276845455170e-02 -9.6889063715934753e-02 - <_> - - 0 -1 509 7.5668231584131718e-03 - - -4.2003981769084930e-02 3.1474891304969788e-01 - <_> - - 0 -1 510 -2.9940240085124969e-02 - - -4.1186788678169250e-01 1.5012119896709919e-02 - <_> - - 0 -1 511 -1.4460280362982303e-04 - - 1.1282800137996674e-01 -1.1564549803733826e-01 - <_> - - 0 -1 512 5.5179679766297340e-03 - - 1.4783410355448723e-02 -7.8069239854812622e-01 - <_> - - 0 -1 513 4.3602618388831615e-03 - - 1.9197709858417511e-02 -5.7175260782241821e-01 - <_> - - 0 -1 514 -1.7657090211287141e-03 - - 1.6336660087108612e-01 -7.2352141141891479e-02 - <_> - - 0 -1 515 1.4166040637064725e-04 - - -9.6755802631378174e-02 1.2809459865093231e-01 - <_> - - 0 -1 516 3.1230010092258453e-02 - - 1.5640569850802422e-02 -6.4757531881332397e-01 - <_> - - 0 -1 517 -4.3514901335584000e-05 - - 1.0053110122680664e-01 -1.2408100068569183e-01 - <_> - - 0 -1 518 -3.5158041282556951e-04 - - 1.5431529283523560e-01 -6.7390359938144684e-02 - <_> - - 0 -1 519 2.0108280295971781e-04 - - -9.8362952470779419e-02 1.3764080405235291e-01 - <_> - - 0 -1 520 4.1300798766314983e-03 - - 5.7529108598828316e-03 -5.3467559814453125e-01 - <_> - - 0 -1 521 -2.4093700631055981e-04 - - -1.9900210201740265e-01 7.4284136295318604e-02 - <_> - - 0 -1 522 -1.2804890284314752e-03 - - 1.6396580636501312e-01 -3.6987289786338806e-02 - <_> - - 0 -1 523 -4.7115217894315720e-03 - - -3.1582680344581604e-01 3.9736218750476837e-02 - <_> - - 0 -1 524 1.1140770278871059e-02 - - -1.0182269662618637e-01 1.2548080086708069e-01 - <_> - - 0 -1 525 3.8028880953788757e-02 - - 2.3916039615869522e-02 -6.0534471273422241e-01 - <_> - - 0 -1 526 -1.7240589950233698e-03 - - 1.2157250195741653e-01 -1.0092329978942871e-01 - <_> - - 0 -1 527 1.0013659484684467e-03 - - -4.9875840544700623e-02 2.2872529923915863e-01 - <_> - - 0 -1 528 1.1469529708847404e-03 - - 4.1399698704481125e-02 -2.3377139866352081e-01 - <_> - - 0 -1 529 3.5106660798192024e-03 - - 3.3997271209955215e-02 -3.2346510887145996e-01 - <_> - - 0 -1 530 -1.4566490426659584e-03 - - 2.5346401333808899e-01 -4.1150610893964767e-02 - <_> - - 0 -1 531 3.7483999133110046e-01 - - 3.3477351069450378e-02 -3.6484500765800476e-01 - <_> - - 0 -1 532 -1.4147689798846841e-03 - - -2.0284929871559143e-01 3.7319269031286240e-02 - <_> - - 0 -1 533 -2.1542280912399292e-02 - - 3.0418759584426880e-01 -3.8817461580038071e-02 - <_> - - 0 -1 534 -4.7629610635340214e-03 - - -3.3018890023231506e-01 1.3088730163872242e-02 - <_> - - 0 -1 535 1.4096570201218128e-02 - - -3.6260299384593964e-02 3.2955801486968994e-01 - <_> - - 0 -1 536 3.5879030474461615e-04 - - 3.9928831160068512e-02 -7.8107982873916626e-02 - <_> - - 0 -1 537 2.0676909480243921e-03 - - 3.7309668958187103e-02 -3.1918200850486755e-01 - <_> - - 0 -1 538 2.2880220785737038e-02 - - -8.5903979837894440e-02 1.5334339439868927e-01 - <_> - - 0 -1 539 2.1201509982347488e-02 - - 2.6472510769963264e-02 -5.0557321310043335e-01 - <_> - - 0 -1 540 -6.0203541070222855e-03 - - -1.6318249702453613e-01 2.0732490345835686e-02 - <_> - - 0 -1 541 -5.0420581828802824e-04 - - 1.6668680310249329e-01 -6.6697582602500916e-02 - <_> - - 0 -1 542 6.0316012240946293e-04 - - -6.4793847501277924e-02 1.3266150653362274e-01 - <_> - - 0 -1 543 3.4756860695779324e-03 - - 5.6924119591712952e-02 -2.4802610278129578e-01 - <_> - - 0 -1 544 -2.8164550894871354e-04 - - 1.0731890052556992e-01 -6.8889446556568146e-02 - <_> - - 0 -1 545 1.0619480162858963e-03 - - -7.1329578757286072e-02 1.9133770465850830e-01 - <_> - - 0 -1 546 -1.2039010412991047e-02 - - -1.8531359732151031e-01 1.9869519397616386e-02 - <_> - - 0 -1 547 7.3727907147258520e-04 - - 6.9557242095470428e-02 -1.6892650723457336e-01 - <_> - - 0 -1 548 -8.9795957319438457e-04 - - 1.0048580169677734e-01 -1.1249220371246338e-01 - <_> - - 0 -1 549 -1.4421059750020504e-03 - - -2.5942280888557434e-01 4.3461620807647705e-02 - <_> - - 0 -1 550 1.2128099799156189e-02 - - 1.0867379605770111e-03 -9.6219289302825928e-01 - <_> - - 0 -1 551 -3.8773349951952696e-03 - - -4.4588619470596313e-01 2.3271450772881508e-02 - <_> - - 0 -1 552 -1.8645300297066569e-03 - - 1.1588860303163528e-01 -7.4421487748622894e-02 - <_> - - 0 -1 553 1.5988890081644058e-03 - - -7.1976162493228912e-02 1.3814139366149902e-01 - <_> - - 0 -1 554 -1.0482260026037693e-02 - - -1.8418419361114502e-01 5.8082859963178635e-02 - <_> - - 0 -1 555 2.5457469746470451e-03 - - -4.9719039350748062e-02 2.2162219882011414e-01 - <_> - - 0 -1 556 -5.3013530559837818e-03 - - -1.5105170011520386e-01 1.7132120206952095e-02 - <_> - - 0 -1 557 -7.1186490822583437e-04 - - 1.2436850368976593e-01 -8.9634358882904053e-02 - <_> - - 0 -1 558 -8.6922161281108856e-03 - - -5.9594017267227173e-01 1.1369950138032436e-02 - <_> - - 0 -1 559 4.9854819662868977e-03 - - 4.8545241355895996e-02 -2.1625879406929016e-01 - <_> - - 0 -1 560 -1.9476209999993443e-03 - - 1.7202959954738617e-01 -6.6241711378097534e-02 - <_> - - 0 -1 561 4.6425309847109020e-04 - - -8.7388113141059875e-02 1.2562519311904907e-01 - <_> - - 0 -1 562 -7.8054452314972878e-03 - - -5.4023122787475586e-01 5.5168392136693001e-03 - <_> - - 0 -1 563 -1.7876500496640801e-03 - - -4.1625720262527466e-01 2.3760259151458740e-02 - <_> - - 0 -1 564 3.4986619721166790e-04 - - -1.0645300149917603e-01 1.3415950536727905e-01 - <_> - - 0 -1 565 -1.7780930502340198e-03 - - 1.4130510389804840e-01 -8.0240763723850250e-02 - <_> - - 0 -1 566 -1.8860380351543427e-01 - - -2.0148520171642303e-01 3.6658711731433868e-02 - <_> - - 0 -1 567 -1.0677129961550236e-02 - - 1.3416449725627899e-01 -7.6406367123126984e-02 - <_> - - 0 -1 568 2.2988369688391685e-02 - - 1.8132690340280533e-02 -4.8544389009475708e-01 - <_> - - 0 -1 569 -1.3255500234663486e-03 - - 2.5572159886360168e-01 -4.0705129504203796e-02 - <_> - - 0 -1 570 5.9496019966900349e-03 - - 3.9314180612564087e-02 -2.7970561385154724e-01 - <_> - - 0 -1 571 -6.6567502915859222e-02 - - -5.5705511569976807e-01 1.6444809734821320e-02 - <_> - - 0 -1 572 2.4936130270361900e-02 - - -2.8254570439457893e-02 2.3453700542449951e-01 - <_> - - 0 -1 573 6.7102699540555477e-04 - - 5.2245128899812698e-02 -1.9548429548740387e-01 - <_> - - 0 -1 574 -6.5158591605722904e-03 - - 1.3059410452842712e-01 -5.4246369749307632e-02 - <_> - - 0 -1 575 -2.0384399220347404e-02 - - 2.6776239275932312e-01 -3.7303801625967026e-02 - <_> - - 0 -1 576 -4.9205501563847065e-03 - - -8.7404273450374603e-02 1.6793090850114822e-02 - <_> - - 0 -1 577 -2.9292369261384010e-02 - - -2.3264780640602112e-01 4.3655201792716980e-02 - <_> - - 0 -1 578 7.2546571493148804e-02 - - -3.6490269005298615e-02 2.7231520414352417e-01 - <_> - - 0 -1 579 -3.7642000243067741e-03 - - 1.8231450021266937e-01 -7.1627296507358551e-02 - <_> - - 0 -1 580 -7.5870528817176819e-03 - - -1.0087859630584717e-01 3.5317219793796539e-02 - <_> - - 0 -1 581 1.8255389295518398e-04 - - -9.3993760645389557e-02 1.0116200149059296e-01 - <_> - - 0 -1 582 3.2301910221576691e-02 - - 7.2117331437766552e-03 -3.5486260056495667e-01 - <_> - - 0 -1 583 2.5892930105328560e-02 - - -3.7203889340162277e-02 2.5027701258659363e-01 - <_> - - 0 -1 584 4.9849660135805607e-03 - - 2.3954670876264572e-02 -3.0998921394348145e-01 - <_> - - 0 -1 585 3.6892869975417852e-03 - - 3.6769930273294449e-02 -2.6462849974632263e-01 - <_> - - 0 -1 586 5.7481178082525730e-03 - - -4.1655130684375763e-02 1.4225460588932037e-01 - <_> - - 0 -1 587 -8.9322368148714304e-04 - - -1.6857950389385223e-01 5.5090259760618210e-02 - <_> - - 0 -1 588 -3.4081860212609172e-04 - - 3.9664719253778458e-02 -3.8179200142621994e-02 - <_> - - 0 -1 589 7.7733430080115795e-03 - - -4.2298160493373871e-02 2.4191489815711975e-01 - <_> - 125 - -1.0558769702911377e+00 - - <_> - - 0 -1 590 5.8826277963817120e-03 - - -2.6752731204032898e-01 3.7303671240806580e-01 - <_> - - 0 -1 591 -2.4791009491309524e-04 - - 7.8501053154468536e-02 -6.5277233719825745e-02 - <_> - - 0 -1 592 2.3347679525613785e-02 - - 1.7821240180637687e-04 -2.9028310546875000e+03 - <_> - - 0 -1 593 -1.1582409963011742e-02 - - 3.0084291100502014e-01 -1.1225110292434692e-01 - <_> - - 0 -1 594 -7.4398629367351532e-03 - - 3.3014228940010071e-01 -1.4450010657310486e-01 - <_> - - 0 -1 595 -1.2356679653748870e-03 - - 9.9596269428730011e-02 -4.4884901493787766e-02 - <_> - - 0 -1 596 -3.1098300591111183e-02 - - 3.4724020957946777e-01 -5.0089869648218155e-02 - <_> - - 0 -1 597 -8.6721731349825859e-05 - - 1.2793859839439392e-01 -1.3050040602684021e-01 - <_> - - 0 -1 598 4.8631811514496803e-03 - - 9.1580100357532501e-02 -2.8963008522987366e-01 - <_> - - 0 -1 599 -8.2328416407108307e-02 - - 4.8640829324722290e-01 -8.5621501784771681e-04 - <_> - - 0 -1 600 2.6845820248126984e-02 - - 8.0719226389192045e-05 -2.7684570312500000e+03 - <_> - - 0 -1 601 -5.2039809525012970e-02 - - 7.9396322369575500e-02 -5.8004710823297501e-02 - <_> - - 0 -1 602 -6.9675371050834656e-02 - - 4.9873960018157959e-01 -3.7314310669898987e-02 - <_> - - 0 -1 603 -2.2737689316272736e-02 - - -4.0688079595565796e-01 4.2751029133796692e-02 - <_> - - 0 -1 604 -5.3844530135393143e-02 - - 1.6214320063591003e-01 -9.7108319401741028e-02 - <_> - - 0 -1 605 7.2368777182418853e-05 - - -1.8385389447212219e-01 1.0155250132083893e-01 - <_> - - 0 -1 606 2.3242140014190227e-04 - - -1.4277349412441254e-01 1.2259999662637711e-01 - <_> - - 0 -1 607 -4.3009149521822110e-05 - - 1.2804460525512695e-01 -1.2545910477638245e-01 - <_> - - 0 -1 608 -2.7856770902872086e-02 - - 1.7858579754829407e-01 -8.4731630980968475e-02 - <_> - - 0 -1 609 -4.7926288098096848e-03 - - -4.3757480382919312e-01 1.6302520409226418e-02 - <_> - - 0 -1 610 1.3976480113342404e-03 - - 4.9515519291162491e-02 -2.8802138566970825e-01 - <_> - - 0 -1 611 1.4469549991190434e-02 - - -6.7634709179401398e-02 1.3598270714282990e-01 - <_> - - 0 -1 612 -1.3993920219945721e-05 - - 1.0967969894409180e-01 -1.1632110178470612e-01 - <_> - - 0 -1 613 3.3816839568316936e-03 - - 2.8795750811696053e-02 -2.4082769453525543e-01 - <_> - - 0 -1 614 2.5580629706382751e-01 - - -2.8704650700092316e-02 4.6601611375808716e-01 - <_> - - 0 -1 615 -1.7578320112079382e-03 - - 1.5108330547809601e-01 -6.3459686934947968e-02 - <_> - - 0 -1 616 -8.2289418205618858e-03 - - -2.9966801404953003e-01 4.3361451476812363e-02 - <_> - - 0 -1 617 -1.3895850315748248e-05 - - 1.0622219741344452e-01 -1.0804539918899536e-01 - <_> - - 0 -1 618 5.4432791657745838e-03 - - -7.2269909083843231e-02 1.6688150167465210e-01 - <_> - - 0 -1 619 3.6632400006055832e-02 - - 3.5935431718826294e-02 -1.9747260212898254e-01 - <_> - - 0 -1 620 -1.2231309898197651e-02 - - -2.6235920190811157e-01 4.7610200941562653e-02 - <_> - - 0 -1 621 -1.3806000351905823e-02 - - 3.0292961001396179e-01 -4.8921317793428898e-03 - <_> - - 0 -1 622 -1.2311399914324284e-03 - - 1.7459060251712799e-01 -6.8353146314620972e-02 - <_> - - 0 -1 623 -2.6005920022726059e-02 - - 1.9050909578800201e-01 -4.6166021376848221e-02 - <_> - - 0 -1 624 4.6127731911838055e-03 - - -8.3376087248325348e-02 1.5262119472026825e-01 - <_> - - 0 -1 625 5.7869260199368000e-03 - - 7.0412610657513142e-03 -7.1386951208114624e-01 - <_> - - 0 -1 626 6.7721348023042083e-04 - - 4.9267031252384186e-02 -2.4897420406341553e-01 - <_> - - 0 -1 627 -2.2731769829988480e-02 - - -5.9203499555587769e-01 6.8012541159987450e-03 - <_> - - 0 -1 628 -7.6365371933206916e-04 - - 1.0652580112218857e-01 -1.0599949955940247e-01 - <_> - - 0 -1 629 -4.3849581852555275e-03 - - 2.3418359458446503e-01 -4.6867609024047852e-02 - <_> - - 0 -1 630 3.9877369999885559e-03 - - 7.7556453645229340e-02 -1.8153350055217743e-01 - <_> - - 0 -1 631 1.3219149550423026e-03 - - -6.7613117396831512e-02 1.7171590030193329e-01 - <_> - - 0 -1 632 6.7325757117941976e-04 - - -8.9826732873916626e-02 1.4020709693431854e-01 - <_> - - 0 -1 633 9.2688068980351090e-04 - - 5.6085910648107529e-02 -1.8546910583972931e-01 - <_> - - 0 -1 634 -1.5381709672510624e-03 - - -2.3733399808406830e-01 4.8890858888626099e-02 - <_> - - 0 -1 635 2.7073239907622337e-03 - - -7.5124382972717285e-02 9.6407197415828705e-02 - <_> - - 0 -1 636 -2.8456549625843763e-03 - - 2.2722889482975006e-01 -7.2055377066135406e-02 - <_> - - 0 -1 637 3.1373579986393452e-03 - - 3.6863651126623154e-02 -3.2780879735946655e-01 - <_> - - 0 -1 638 -3.7588209379464388e-03 - - -4.2295080423355103e-01 2.3650530725717545e-02 - <_> - - 0 -1 639 2.2759051062166691e-03 - - -5.4995559155941010e-02 1.2049350142478943e-01 - <_> - - 0 -1 640 -1.9469429552555084e-01 - - -2.4324010312557220e-01 4.6331658959388733e-02 - <_> - - 0 -1 641 -9.6125272102653980e-04 - - 1.3797989487648010e-01 -9.2063806951045990e-02 - <_> - - 0 -1 642 -2.0522899925708771e-01 - - 4.7303131222724915e-01 -2.2172510623931885e-02 - <_> - - 0 -1 643 -6.8699531257152557e-02 - - 3.5191631317138672e-01 -2.8691360726952553e-02 - <_> - - 0 -1 644 -5.8615300804376602e-03 - - -3.6117011308670044e-01 3.5613741725683212e-02 - <_> - - 0 -1 645 -3.0823880806565285e-02 - - -1.5480700135231018e-01 3.6030359566211700e-02 - <_> - - 0 -1 646 6.5875430591404438e-03 - - -4.9618080258369446e-02 2.2783710062503815e-01 - <_> - - 0 -1 647 1.7855790257453918e-01 - - 1.6644019633531570e-02 -5.2305930852890015e-01 - <_> - - 0 -1 648 4.7204419388435781e-04 - - 4.3169219046831131e-02 -2.4191060662269592e-01 - <_> - - 0 -1 649 1.0938299819827080e-02 - - -3.4621201455593109e-02 2.3645110428333282e-01 - <_> - - 0 -1 650 2.6551820337772369e-04 - - 1.0797390341758728e-01 -1.4064499735832214e-01 - <_> - - 0 -1 651 -1.8384570255875587e-02 - - 2.2139449417591095e-01 -2.6545690372586250e-02 - <_> - - 0 -1 652 2.6976049412041903e-03 - - 4.4117338955402374e-02 -2.4985639750957489e-01 - <_> - - 0 -1 653 1.9213970750570297e-02 - - -1.4211599715054035e-02 2.0341560244560242e-01 - <_> - - 0 -1 654 1.8765490502119064e-02 - - -2.6414619758725166e-02 4.2244899272918701e-01 - <_> - - 0 -1 655 -4.8726210370659828e-03 - - -3.1537351012229919e-01 2.7417080476880074e-02 - <_> - - 0 -1 656 6.8514510057866573e-03 - - 1.8685810267925262e-02 -6.0053402185440063e-01 - <_> - - 0 -1 657 3.4302549902349710e-03 - - 5.5539049208164215e-02 -5.1063228398561478e-02 - <_> - - 0 -1 658 -5.1368698477745056e-03 - - 1.4823649823665619e-01 -7.6043047010898590e-02 - <_> - - 0 -1 659 4.0547490119934082e-02 - - 2.2683000192046165e-02 -1.4686860144138336e-01 - <_> - - 0 -1 660 -3.0698770657181740e-02 - - -2.3555910587310791e-01 4.2929988354444504e-02 - <_> - - 0 -1 661 -4.8826341517269611e-03 - - 1.0821360349655151e-01 -4.0258530527353287e-02 - <_> - - 0 -1 662 -1.1315810261294246e-03 - - 1.3305909931659698e-01 -7.6758652925491333e-02 - <_> - - 0 -1 663 1.0131190065294504e-03 - - -4.2856771498918533e-02 2.2082559764385223e-01 - <_> - - 0 -1 664 4.5927320607006550e-03 - - 4.9640059471130371e-02 -2.3265250027179718e-01 - <_> - - 0 -1 665 -1.4334080333355814e-05 - - 8.6082011461257935e-02 -1.0041899979114532e-01 - <_> - - 0 -1 666 -4.3432948586996645e-05 - - 1.0282029956579208e-01 -9.4649210572242737e-02 - <_> - - 0 -1 667 -2.2497640457004309e-03 - - 1.0315570235252380e-01 -4.1888978332281113e-02 - <_> - - 0 -1 668 -6.4464588649570942e-04 - - 1.1629430204629898e-01 -8.5485748946666718e-02 - <_> - - 0 -1 669 -1.4639640226960182e-02 - - -8.2875743508338928e-02 4.0666591376066208e-02 - <_> - - 0 -1 670 -2.5217140093445778e-02 - - -2.0571319758892059e-01 5.6192658841609955e-02 - <_> - - 0 -1 671 1.0123199783265591e-02 - - -4.2151961475610733e-02 2.9707989096641541e-01 - <_> - - 0 -1 672 -1.9428769592195749e-03 - - 1.1105760186910629e-01 -9.5682419836521149e-02 - <_> - - 0 -1 673 -1.5970990061759949e-03 - - -1.8751560151576996e-01 2.6098659262061119e-02 - <_> - - 0 -1 674 -4.1399329347768798e-05 - - 1.0210459679365158e-01 -9.5533169806003571e-02 - <_> - - 0 -1 675 -1.2740289792418480e-02 - - -3.0079340934753418e-01 3.0958199873566628e-02 - <_> - - 0 -1 676 -1.0377629660069942e-03 - - 1.1889539659023285e-01 -8.3339259028434753e-02 - <_> - - 0 -1 677 7.3452817741781473e-04 - - -4.5579340308904648e-02 6.5332867205142975e-02 - <_> - - 0 -1 678 2.1210229024291039e-03 - - -7.7647641301155090e-02 1.3552039861679077e-01 - <_> - - 0 -1 679 -3.9646559162065387e-04 - - -1.3039469718933105e-01 4.4221781194210052e-02 - <_> - - 0 -1 680 -2.9011480510234833e-02 - - 1.0911560058593750e-01 -8.6852982640266418e-02 - <_> - - 0 -1 681 2.8868720619357191e-05 - - -9.7223073244094849e-02 1.0939110070466995e-01 - <_> - - 0 -1 682 4.4219941628398374e-05 - - -9.6626587212085724e-02 1.0396730154752731e-01 - <_> - - 0 -1 683 -2.1061650477349758e-03 - - 1.5594449639320374e-01 -6.9388382136821747e-02 - <_> - - 0 -1 684 -1.3419709866866469e-03 - - -2.3559910058975220e-01 4.3852631002664566e-02 - <_> - - 0 -1 685 5.4303952492773533e-04 - - 3.7652920931577682e-02 -1.4700250327587128e-01 - <_> - - 0 -1 686 1.9228000019211322e-04 - - -8.5958786308765411e-02 1.1486630141735077e-01 - <_> - - 0 -1 687 6.4260498620569706e-03 - - 3.0003899708390236e-02 -2.6264539361000061e-01 - <_> - - 0 -1 688 1.7857449129223824e-02 - - -3.8392178714275360e-02 2.5491470098495483e-01 - <_> - - 0 -1 689 1.4346039853990078e-02 - - 8.1513654440641403e-03 -6.6368842124938965e-01 - <_> - - 0 -1 690 -1.5616989694535732e-02 - - 2.7357009053230286e-01 -3.9104361087083817e-02 - <_> - - 0 -1 691 2.7434809133410454e-02 - - 1.8959000706672668e-02 -5.5424922704696655e-01 - <_> - - 0 -1 692 5.8466667542234063e-04 - - 3.7940360605716705e-02 -2.2365260124206543e-01 - <_> - - 0 -1 693 -6.7438739351928234e-03 - - 1.3055540621280670e-01 -2.7127960696816444e-02 - <_> - - 0 -1 694 2.8279089747229591e-05 - - -1.1748810112476349e-01 7.3770336806774139e-02 - <_> - - 0 -1 695 -2.5857390835881233e-02 - - -7.1859562397003174e-01 1.0667249560356140e-02 - <_> - - 0 -1 696 -1.4455829841608647e-05 - - 8.8825918734073639e-02 -9.6560813486576080e-02 - <_> - - 0 -1 697 -2.8761640351149254e-05 - - 7.1224972605705261e-02 -8.1536293029785156e-02 - <_> - - 0 -1 698 -4.4676151126623154e-02 - - 4.6559768915176392e-01 -1.8218420445919037e-02 - <_> - - 0 -1 699 -1.7473939806222916e-02 - - -2.5894200801849365e-01 9.1081187129020691e-03 - <_> - - 0 -1 700 1.1752460151910782e-02 - - 2.3866819217801094e-02 -3.6384621262550354e-01 - <_> - - 0 -1 701 -1.9191680476069450e-03 - - 2.5190669298171997e-01 -3.0651960521936417e-02 - <_> - - 0 -1 702 -1.0809469968080521e-01 - - -1.5673610568046570e-01 5.7125121355056763e-02 - <_> - - 0 -1 703 -2.0007440820336342e-02 - - -6.9761687517166138e-01 2.1351710893213749e-03 - <_> - - 0 -1 704 -9.3738699797540903e-04 - - 1.2027209997177124e-01 -8.2730740308761597e-02 - <_> - - 0 -1 705 -1.9725980237126350e-02 - - 6.5103426575660706e-02 -4.3104868382215500e-02 - <_> - - 0 -1 706 -1.5965709462761879e-02 - - 1.4421139657497406e-01 -7.7061690390110016e-02 - <_> - - 0 -1 707 3.1250261235982180e-04 - - 3.4393820911645889e-02 -8.0702297389507294e-02 - <_> - - 0 -1 708 1.4896600041538477e-03 - - 3.5183548927307129e-02 -2.5886499881744385e-01 - <_> - - 0 -1 709 -5.3775031119585037e-04 - - 1.1620610207319260e-01 -6.3611187040805817e-02 - <_> - - 0 -1 710 2.0904899574816227e-03 - - -4.1186600923538208e-02 2.2300550341606140e-01 - <_> - - 0 -1 711 2.9691499657928944e-03 - - 4.8269309103488922e-02 -2.0335279405117035e-01 - <_> - - 0 -1 712 1.4572769941878505e-05 - - -9.8957553505897522e-02 9.3041956424713135e-02 - <_> - - 0 -1 713 -3.1554070301353931e-03 - - -6.6760122776031494e-01 1.3520079664885998e-02 - <_> - - 0 -1 714 2.9881219234084710e-05 - - -1.0356040298938751e-01 8.6093403398990631e-02 - <_> - 159 - -1.0136179924011230e+00 - - <_> - - 0 -1 715 4.9129109829664230e-02 - - -1.5613749623298645e-01 3.9328530430793762e-01 - <_> - - 0 -1 716 -1.7286360263824463e-02 - - 3.0204918980598450e-01 -9.7565330564975739e-02 - <_> - - 0 -1 717 1.7046910524368286e-01 - - 2.3067509755492210e-03 -1.9497540283203125e+03 - <_> - - 0 -1 718 8.8703386485576630e-02 - - -7.4917137622833252e-02 2.8316649794578552e-01 - <_> - - 0 -1 719 6.5491542220115662e-02 - - 1.6591310268267989e-03 -2.0010880126953125e+03 - <_> - - 0 -1 720 1.3477590400725603e-03 - - -1.6203269362449646e-01 1.0843209922313690e-01 - <_> - - 0 -1 721 -1.2740620411932468e-02 - - 1.7574480175971985e-01 -9.3244768679141998e-02 - <_> - - 0 -1 722 -5.6134728947654366e-04 - - 1.1455350369215012e-01 -1.7354020476341248e-01 - <_> - - 0 -1 723 3.5389710683375597e-03 - - 1.1717150360345840e-01 -2.0976379513740540e-01 - <_> - - 0 -1 724 2.4736139923334122e-02 - - 1.6364879906177521e-02 -4.7255611419677734e-01 - <_> - - 0 -1 725 -1.0651050135493279e-02 - - -4.5489090681076050e-01 3.1939528882503510e-02 - <_> - - 0 -1 726 1.7559889703989029e-02 - - -4.8362668603658676e-02 3.2062488794326782e-01 - <_> - - 0 -1 727 -6.6924717975780368e-04 - - -2.4639719724655151e-01 5.7935819029808044e-02 - <_> - - 0 -1 728 -5.8407627511769533e-04 - - 1.1204340308904648e-01 -9.8744787275791168e-02 - <_> - - 0 -1 729 3.7473749835044146e-03 - - 6.2822163105010986e-02 -2.6915690302848816e-01 - <_> - - 0 -1 730 -5.7835220359265804e-03 - - 1.7725090682506561e-01 -1.0722990334033966e-01 - <_> - - 0 -1 731 -1.3994470238685608e-02 - - -3.2291290163993835e-01 5.9133160859346390e-02 - <_> - - 0 -1 732 -5.0094961188733578e-03 - - 3.2413411140441895e-01 -4.6946190297603607e-02 - <_> - - 0 -1 733 2.0974679291248322e-01 - - 1.2724619591608644e-03 -1.5398029785156250e+03 - <_> - - 0 -1 734 -2.3002800345420837e-01 - - 2.4346500635147095e-01 -5.2076339721679688e-02 - <_> - - 0 -1 735 1.5492799878120422e-01 - - -3.8256648927927017e-02 3.8398009538650513e-01 - <_> - - 0 -1 736 -1.6321489820256829e-03 - - -2.6898738741874695e-01 5.1475409418344498e-02 - <_> - - 0 -1 737 7.1139976382255554e-02 - - -1.7741069896146655e-03 -3.6228640136718750e+03 - <_> - - 0 -1 738 1.1452710023149848e-03 - - 6.0054820030927658e-02 -2.2977289557456970e-01 - <_> - - 0 -1 739 -4.5410130405798554e-04 - - 1.2813620269298553e-01 -1.0090760141611099e-01 - <_> - - 0 -1 740 -1.4720089893671684e-05 - - 1.0322000086307526e-01 -1.2641830742359161e-01 - <_> - - 0 -1 741 -1.1304479558020830e-03 - - -3.1935998797416687e-01 3.4723218530416489e-02 - <_> - - 0 -1 742 -1.6922319307923317e-02 - - 1.3957360386848450e-01 -5.1543079316616058e-02 - <_> - - 0 -1 743 -2.3215101100504398e-03 - - -2.3895290493965149e-01 4.7668199986219406e-02 - <_> - - 0 -1 744 3.7084489595144987e-03 - - -6.5825067460536957e-02 2.2757640480995178e-01 - <_> - - 0 -1 745 1.0309210047125816e-03 - - 5.1278948783874512e-02 -1.9257369637489319e-01 - <_> - - 0 -1 746 -1.5648710541427135e-03 - - 8.9634187519550323e-02 -7.3585078120231628e-02 - <_> - - 0 -1 747 -4.1427151300013065e-03 - - 1.3048550486564636e-01 -8.4395110607147217e-02 - <_> - - 0 -1 748 2.6113409548997879e-02 - - 2.2152740508317947e-02 -5.3387731313705444e-01 - <_> - - 0 -1 749 -2.8209320589667186e-05 - - 8.8220342993736267e-02 -1.1844480037689209e-01 - <_> - - 0 -1 750 -1.8846359848976135e-01 - - -1.4832919836044312e-01 2.7575379237532616e-02 - <_> - - 0 -1 751 -3.1241099350154400e-04 - - 1.5323509275913239e-01 -6.7858032882213593e-02 - <_> - - 0 -1 752 1.1768529657274485e-03 - - -8.8187567889690399e-02 1.4614510536193848e-01 - <_> - - 0 -1 753 -8.1158941611647606e-03 - - -2.5933700799942017e-01 4.0161240845918655e-02 - <_> - - 0 -1 754 -2.1158249583095312e-03 - - -1.2951439619064331e-01 3.7622030824422836e-02 - <_> - - 0 -1 755 -1.6689589247107506e-02 - - 1.6230119764804840e-01 -6.4093820750713348e-02 - <_> - - 0 -1 756 3.5482600796967745e-03 - - -7.9667016863822937e-02 1.1273019760847092e-01 - <_> - - 0 -1 757 5.6378880981355906e-04 - - 5.0050869584083557e-02 -2.2882069647312164e-01 - <_> - - 0 -1 758 7.8708422370254993e-04 - - 3.6162361502647400e-02 -1.5072689950466156e-01 - <_> - - 0 -1 759 7.2509991005063057e-03 - - -6.2301669269800186e-02 1.6492590308189392e-01 - <_> - - 0 -1 760 6.6566158784553409e-04 - - 3.7793241441249847e-02 -2.1191699802875519e-01 - <_> - - 0 -1 761 5.8047431707382202e-01 - - 1.0952480137348175e-02 -8.0813771486282349e-01 - <_> - - 0 -1 762 -7.9105071723461151e-02 - - 3.6394488811492920e-01 -3.0609829351305962e-02 - <_> - - 0 -1 763 5.6401832262054086e-04 - - -6.6107980906963348e-02 1.4774860441684723e-01 - <_> - - 0 -1 764 -9.1791141312569380e-04 - - 9.9861629307270050e-02 -5.6733511388301849e-02 - <_> - - 0 -1 765 5.6301942095160484e-04 - - 4.6789381653070450e-02 -2.4219739437103271e-01 - <_> - - 0 -1 766 8.3375308895483613e-04 - - -5.3760558366775513e-02 1.3650870323181152e-01 - <_> - - 0 -1 767 -3.1824249308556318e-03 - - 2.5260570645332336e-01 -4.1767410933971405e-02 - <_> - - 0 -1 768 -7.2406530380249023e-03 - - -3.4584280848503113e-01 3.2235089689493179e-02 - <_> - - 0 -1 769 -8.3251204341650009e-03 - - -4.1309550404548645e-01 2.1623320877552032e-02 - <_> - - 0 -1 770 1.3309439644217491e-02 - - -2.3230889812111855e-02 3.7454131245613098e-01 - <_> - - 0 -1 771 -2.3259570822119713e-02 - - -2.1350060403347015e-01 4.5240461826324463e-02 - <_> - - 0 -1 772 1.1522470042109489e-02 - - -3.7700131535530090e-02 2.9872789978981018e-01 - <_> - - 0 -1 773 -2.5679599493741989e-02 - - -4.9193280935287476e-01 2.0760089159011841e-02 - <_> - - 0 -1 774 -4.0818247944116592e-03 - - 9.8320446908473969e-02 -5.9292558580636978e-02 - <_> - - 0 -1 775 1.3823170214891434e-02 - - 8.0420680344104767e-02 -1.4796389639377594e-01 - <_> - - 0 -1 776 -1.4133610420685727e-05 - - 7.2154417634010315e-02 -7.8407011926174164e-02 - <_> - - 0 -1 777 1.3749630190432072e-02 - - -2.5718940421938896e-02 3.5190111398696899e-01 - <_> - - 0 -1 778 -4.7446079552173615e-03 - - -2.9917961359024048e-01 1.6113970428705215e-02 - <_> - - 0 -1 779 -6.0454257763922215e-03 - - -5.3650712966918945e-01 1.6792129725217819e-02 - <_> - - 0 -1 780 -2.8823830187320709e-02 - - -6.8795108795166016e-01 3.6530119832605124e-03 - <_> - - 0 -1 781 9.7567550837993622e-03 - - -3.8970921188592911e-02 2.4093149602413177e-01 - <_> - - 0 -1 782 5.4871398024260998e-03 - - 1.4116980135440826e-02 -2.5804948806762695e-01 - <_> - - 0 -1 783 -1.2061520246788859e-03 - - -1.9207270443439484e-01 4.9500379711389542e-02 - <_> - - 0 -1 784 9.8257837817072868e-03 - - -3.8585498929023743e-02 2.2697679698467255e-01 - <_> - - 0 -1 785 2.2018669545650482e-01 - - 1.2777510099112988e-02 -7.5363188982009888e-01 - <_> - - 0 -1 786 -4.5528009533882141e-02 - - 1.0831479728221893e-01 -8.8267646729946136e-02 - <_> - - 0 -1 787 8.6856030975468457e-05 - - -1.0284650325775146e-01 9.9360488355159760e-02 - <_> - - 0 -1 788 -5.6585170328617096e-02 - - 2.3910149931907654e-01 -2.3736249655485153e-02 - <_> - - 0 -1 789 -3.1276450026780367e-03 - - -2.2727750241756439e-01 3.8768850266933441e-02 - <_> - - 0 -1 790 3.9087659679353237e-03 - - -3.9192341268062592e-02 2.4087190628051758e-01 - <_> - - 0 -1 791 7.8154838411137462e-04 - - 7.4562981724739075e-02 -1.2905180454254150e-01 - <_> - - 0 -1 792 -2.4408260360360146e-03 - - -9.1020442545413971e-02 3.9251521229743958e-02 - <_> - - 0 -1 793 2.8101990465074778e-03 - - -6.4837038516998291e-02 1.3925389945507050e-01 - <_> - - 0 -1 794 -3.9855740033090115e-03 - - 9.1817371547222137e-02 -8.3031117916107178e-02 - <_> - - 0 -1 795 -1.7297789454460144e-02 - - 2.0965570211410522e-01 -5.2194979041814804e-02 - <_> - - 0 -1 796 -3.2247748225927353e-02 - - -4.5823940634727478e-01 8.3728311583399773e-03 - <_> - - 0 -1 797 -6.8068369291722775e-03 - - -2.0197209715843201e-01 5.5631320923566818e-02 - <_> - - 0 -1 798 -1.0506629478186369e-03 - - 1.3209819793701172e-01 -7.6885670423507690e-02 - <_> - - 0 -1 799 3.7760898703709245e-04 - - 4.6161610633134842e-02 -1.9694140553474426e-01 - <_> - - 0 -1 800 -5.7537568500265479e-04 - - -1.0717370361089706e-01 3.6240298300981522e-02 - <_> - - 0 -1 801 7.4092741124331951e-04 - - -1.0475870221853256e-01 8.0978676676750183e-02 - <_> - - 0 -1 802 1.4430390438064933e-03 - - -2.0330719649791718e-02 1.4773130416870117e-01 - <_> - - 0 -1 803 -4.0292008779942989e-03 - - -4.0607890486717224e-01 2.2358359768986702e-02 - <_> - - 0 -1 804 -2.7180630713701248e-02 - - 1.7108470201492310e-01 -5.5255688726902008e-02 - <_> - - 0 -1 805 -1.1956419795751572e-02 - - -7.1867120265960693e-01 1.3094569556415081e-02 - <_> - - 0 -1 806 4.1116480133496225e-04 - - 4.8153460025787354e-02 -1.2433259934186935e-01 - <_> - - 0 -1 807 -1.3963999663246796e-05 - - 1.0292939841747284e-01 -8.6958311498165131e-02 - <_> - - 0 -1 808 -1.4570109669875819e-05 - - 7.4470147490501404e-02 -7.0470541715621948e-02 - <_> - - 0 -1 809 1.7139190807938576e-02 - - -2.6172630488872528e-02 3.3085009455680847e-01 - <_> - - 0 -1 810 -1.6302539734169841e-03 - - -2.3916280269622803e-01 3.5871699452400208e-02 - <_> - - 0 -1 811 -1.4535409718519077e-05 - - 9.6902176737785339e-02 -9.2061087489128113e-02 - <_> - - 0 -1 812 -2.1566040813922882e-02 - - 7.8962132334709167e-02 -2.5336209684610367e-02 - <_> - - 0 -1 813 -3.6455708742141724e-01 - - -3.5508298873901367e-01 2.5631109252572060e-02 - <_> - - 0 -1 814 2.4588650092482567e-02 - - -4.8407679423689842e-03 3.9943900704383850e-01 - <_> - - 0 -1 815 -7.7711517224088311e-04 - - 9.7201973199844360e-02 -9.5743231475353241e-02 - <_> - - 0 -1 816 2.1896770223975182e-02 - - -4.5299168676137924e-02 1.0756900161504745e-01 - <_> - - 0 -1 817 -4.4443400838645175e-05 - - 1.0131599754095078e-01 -8.8843531906604767e-02 - <_> - - 0 -1 818 -7.6723480597138405e-03 - - -4.5738580822944641e-01 4.6079889871180058e-03 - <_> - - 0 -1 819 -1.4039639609109145e-05 - - 9.8416067659854889e-02 -8.7553597986698151e-02 - <_> - - 0 -1 820 8.6473729461431503e-03 - - 3.3540779259055853e-03 -4.1771999001502991e-01 - <_> - - 0 -1 821 -1.3825670066580642e-05 - - 9.9857017397880554e-02 -8.5694387555122375e-02 - <_> - - 0 -1 822 -2.6278168661519885e-04 - - -5.6113108992576599e-02 2.7346489951014519e-02 - <_> - - 0 -1 823 -7.9181697219610214e-04 - - -1.8118320405483246e-01 4.7429770231246948e-02 - <_> - - 0 -1 824 -1.4099719701334834e-03 - - 2.7458798885345459e-01 -5.1484808325767517e-02 - <_> - - 0 -1 825 7.0703573524951935e-02 - - 1.5473419800400734e-02 -5.7706528902053833e-01 - <_> - - 0 -1 826 2.0189339295029640e-02 - - 3.1696720980107784e-03 -4.8307558894157410e-01 - <_> - - 0 -1 827 -2.1223660558462143e-02 - - 2.4657000601291656e-01 -3.2886128872632980e-02 - <_> - - 0 -1 828 -3.0176939908415079e-03 - - -2.4524199962615967e-01 9.7305262461304665e-03 - <_> - - 0 -1 829 -4.6038549393415451e-02 - - 2.7145799994468689e-01 -3.0896479263901711e-02 - <_> - - 0 -1 830 3.5309030208736658e-03 - - 6.3980512320995331e-02 -1.3888190686702728e-01 - <_> - - 0 -1 831 -1.6515320166945457e-03 - - 9.5719188451766968e-02 -8.7903097271919250e-02 - <_> - - 0 -1 832 4.9779191613197327e-03 - - 4.1744681075215340e-03 -5.4084128141403198e-01 - <_> - - 0 -1 833 -2.6704220101237297e-02 - - -1.7620840668678284e-01 4.7774009406566620e-02 - <_> - - 0 -1 834 -1.9596800208091736e-02 - - 1.4712940156459808e-01 -6.3787601888179779e-02 - <_> - - 0 -1 835 -3.7246679421514273e-03 - - -2.3852190375328064e-01 4.4740460813045502e-02 - <_> - - 0 -1 836 1.1539430357515812e-02 - - -2.2072600200772285e-02 1.1525920033454895e-01 - <_> - - 0 -1 837 4.7176578664220870e-04 - - 4.7127831727266312e-02 -1.8147450685501099e-01 - <_> - - 0 -1 838 -1.9762469455599785e-03 - - 1.3748070597648621e-01 -5.9092778712511063e-02 - <_> - - 0 -1 839 5.5772662162780762e-03 - - -4.5019958168268204e-02 2.1034489572048187e-01 - <_> - - 0 -1 840 -2.0157389342784882e-02 - - -5.7496970891952515e-01 5.7354308664798737e-03 - <_> - - 0 -1 841 1.7307110130786896e-02 - - 1.1190719902515411e-02 -7.1707981824874878e-01 - <_> - - 0 -1 842 -4.8755120951682329e-04 - - 5.0394590944051743e-02 -4.8666480928659439e-02 - <_> - - 0 -1 843 -2.6511559262871742e-02 - - -8.9478939771652222e-01 9.4358548521995544e-03 - <_> - - 0 -1 844 -2.2744829766452312e-03 - - -1.2894369661808014e-01 2.2440349683165550e-02 - <_> - - 0 -1 845 -5.0057587213814259e-04 - - 1.4377559721469879e-01 -7.1598902344703674e-02 - <_> - - 0 -1 846 6.6602397710084915e-03 - - -2.3207439109683037e-02 7.1363903582096100e-02 - <_> - - 0 -1 847 3.1885830685496330e-03 - - 5.8010980486869812e-02 -1.6450870037078857e-01 - <_> - - 0 -1 848 5.7782739168033004e-04 - - -4.3485600501298904e-02 1.3383249938488007e-01 - <_> - - 0 -1 849 -6.0897087678313255e-04 - - 1.4787660539150238e-01 -6.2495529651641846e-02 - <_> - - 0 -1 850 -1.6388659423682839e-04 - - 9.3325972557067871e-02 -7.6554320752620697e-02 - <_> - - 0 -1 851 6.1837752582505345e-04 - - 5.1471889019012451e-02 -1.7382960021495819e-01 - <_> - - 0 -1 852 -3.3793110400438309e-02 - - -3.6461350321769714e-01 3.7170569412410259e-03 - <_> - - 0 -1 853 1.4411949552595615e-02 - - -3.5240508615970612e-02 2.8138169646263123e-01 - <_> - - 0 -1 854 -4.1771069169044495e-02 - - -8.4693837165832520e-01 5.6314789690077305e-03 - <_> - - 0 -1 855 2.6250649243593216e-02 - - 1.1048519983887672e-02 -6.5604877471923828e-01 - <_> - - 0 -1 856 3.8364190608263016e-02 - - 1.3381119817495346e-02 -5.1028597354888916e-01 - <_> - - 0 -1 857 -4.2627542279660702e-03 - - 1.0298670083284378e-01 -7.7517427504062653e-02 - <_> - - 0 -1 858 2.6290370151400566e-03 - - 5.3536839783191681e-02 -1.6710819303989410e-01 - <_> - - 0 -1 859 3.0461929272860289e-03 - - -7.0506170392036438e-02 1.2971059978008270e-01 - <_> - - 0 -1 860 -8.1220280844718218e-04 - - -1.5027570724487305e-01 2.4919940158724785e-02 - <_> - - 0 -1 861 -1.3896619748265948e-05 - - 9.4428047537803650e-02 -8.7662227451801300e-02 - <_> - - 0 -1 862 -1.1810410069301724e-03 - - -7.8689701855182648e-02 4.2385399341583252e-02 - <_> - - 0 -1 863 -4.3100272305309772e-03 - - 1.0542859882116318e-01 -7.6924249529838562e-02 - <_> - - 0 -1 864 4.9178837798535824e-03 - - -4.4045768678188324e-02 1.1219839751720428e-01 - <_> - - 0 -1 865 2.7417130768299103e-03 - - 4.8411499708890915e-02 -1.5718230605125427e-01 - <_> - - 0 -1 866 -2.0775299519300461e-02 - - -5.5444902181625366e-01 5.7630650699138641e-03 - <_> - - 0 -1 867 9.2838220298290253e-03 - - 2.3150760680437088e-02 -3.2565519213676453e-01 - <_> - - 0 -1 868 2.9645489994436502e-03 - - -5.1561180502176285e-02 7.8658573329448700e-02 - <_> - - 0 -1 869 -3.5985060967504978e-03 - - 1.0409019887447357e-01 -7.8626610338687897e-02 - <_> - - 0 -1 870 2.9037541151046753e-01 - - 2.0822859369218349e-03 -9.9926912784576416e-01 - <_> - - 0 -1 871 -1.7383049428462982e-01 - - -6.1185789108276367e-01 1.1905180290341377e-02 - <_> - - 0 -1 872 -1.4491450201603584e-05 - - 7.7290393412113190e-02 -7.9787142574787140e-02 - <_> - - 0 -1 873 5.9369370341300964e-02 - - -1.5881380066275597e-02 4.9138128757476807e-01 - <_> - 181 - -9.4397127628326416e-01 - - <_> - - 0 -1 874 1.2147969566285610e-02 - - -1.7027840018272400e-01 3.0278548598289490e-01 - <_> - - 0 -1 875 -5.1608979701995850e-03 - - 1.6070939600467682e-01 -9.7643166780471802e-02 - <_> - - 0 -1 876 -5.6379679590463638e-03 - - 1.7696949839591980e-01 -1.1813969910144806e-01 - <_> - - 0 -1 877 -1.3411770341917872e-03 - - -2.1609729528427124e-01 8.4236972033977509e-02 - <_> - - 0 -1 878 1.6899369657039642e-02 - - 3.9709590375423431e-02 -7.1516290283203125e+02 - <_> - - 0 -1 879 6.0409329831600189e-02 - - 9.9979763035662472e-05 -3.8527749633789062e+02 - <_> - - 0 -1 880 6.2134090811014175e-02 - - 6.3906911236699671e-05 -3.9919741210937500e+03 - <_> - - 0 -1 881 1.0131259914487600e-03 - - 9.7780823707580566e-02 -1.9260010123252869e-01 - <_> - - 0 -1 882 8.5585671663284302e-01 - - -1.2213829904794693e-02 -3.4853699218750000e+04 - <_> - - 0 -1 883 -3.2218709588050842e-02 - - 3.9832469820976257e-01 -4.5990351587533951e-02 - <_> - - 0 -1 884 2.2235669195652008e-02 - - -4.0369831025600433e-02 3.6789301037788391e-01 - <_> - - 0 -1 885 -8.8841008255258203e-04 - - -2.1880610287189484e-01 5.0560429692268372e-02 - <_> - - 0 -1 886 3.5561749245971441e-03 - - -5.2009329199790955e-02 2.1389879286289215e-01 - <_> - - 0 -1 887 9.6833909628912807e-04 - - 1.4613860286772251e-02 -1.9754350185394287e-01 - <_> - - 0 -1 888 -2.7736829593777657e-02 - - -4.5046409964561462e-01 2.7601879090070724e-02 - <_> - - 0 -1 889 7.4900686740875244e-02 - - -1.5738090500235558e-02 1.3751170039176941e-01 - <_> - - 0 -1 890 -1.4089980140852276e-05 - - 8.2234293222427368e-02 -1.2902089953422546e-01 - <_> - - 0 -1 891 2.8132699299021624e-05 - - -8.9415237307548523e-02 1.4247649908065796e-01 - <_> - - 0 -1 892 3.6726798862218857e-03 - - 3.6753758788108826e-02 -3.0238619446754456e-01 - <_> - - 0 -1 893 5.8316331356763840e-02 - - -2.8371790423989296e-02 2.3014989495277405e-01 - <_> - - 0 -1 894 7.8186690807342529e-03 - - -4.2724270373582840e-02 2.9279640316963196e-01 - <_> - - 0 -1 895 8.1707425415515900e-03 - - 5.6390549987554550e-02 -2.2707839310169220e-01 - <_> - - 0 -1 896 -4.8393788747489452e-03 - - 1.4251850545406342e-01 -9.1900318861007690e-02 - <_> - - 0 -1 897 -1.7523720860481262e-02 - - 2.0598100125789642e-01 -2.8702840209007263e-02 - <_> - - 0 -1 898 -1.7228579963557422e-04 - - 1.0865160077810287e-01 -1.0427589714527130e-01 - <_> - - 0 -1 899 1.4811339788138866e-03 - - 4.6113200485706329e-02 -2.3989810049533844e-01 - <_> - - 0 -1 900 -2.7818970847874880e-03 - - -1.9629709422588348e-01 5.7060431689023972e-02 - <_> - - 0 -1 901 1.8516130745410919e-02 - - -6.8399876356124878e-02 9.2525057494640350e-02 - <_> - - 0 -1 902 1.2470349902287126e-03 - - -4.7470189630985260e-02 2.3869030177593231e-01 - <_> - - 0 -1 903 8.1306131323799491e-04 - - 5.8681190013885498e-02 -1.3293729722499847e-01 - <_> - - 0 -1 904 1.0061890352517366e-03 - - -4.7185059636831284e-02 2.0784549415111542e-01 - <_> - - 0 -1 905 1.3212660560384393e-03 - - -3.2092861831188202e-02 6.1370160430669785e-02 - <_> - - 0 -1 906 7.1786798071116209e-04 - - 5.5250648409128189e-02 -1.8089100718498230e-01 - <_> - - 0 -1 907 -9.6626102458685637e-04 - - -1.3047799468040466e-01 3.3318478614091873e-02 - <_> - - 0 -1 908 1.7763959476724267e-03 - - -4.6832490712404251e-02 2.0682440698146820e-01 - <_> - - 0 -1 909 -2.8751560021191835e-03 - - -2.1038760244846344e-01 4.4965479522943497e-02 - <_> - - 0 -1 910 1.9038280006498098e-03 - - -4.5024219900369644e-02 2.8117001056671143e-01 - <_> - - 0 -1 911 2.9590770136564970e-03 - - 4.8174291849136353e-02 -6.7409582436084747e-02 - <_> - - 0 -1 912 9.4039470423012972e-04 - - -8.8440768420696259e-02 1.1570060253143311e-01 - <_> - - 0 -1 913 2.4125039577484131e-02 - - 7.2013828903436661e-03 -3.8961169123649597e-01 - <_> - - 0 -1 914 -6.2984478427097201e-04 - - -2.3360639810562134e-01 4.2562689632177353e-02 - <_> - - 0 -1 915 -2.9172660782933235e-02 - - 1.7174050211906433e-01 -4.6448789536952972e-02 - <_> - - 0 -1 916 -1.4338050277729053e-05 - - 1.0395999997854233e-01 -9.0066507458686829e-02 - <_> - - 0 -1 917 -1.4969659787311684e-05 - - 5.0678368657827377e-02 -3.9614308625459671e-02 - <_> - - 0 -1 918 1.4065210052649491e-05 - - -9.3186452984809875e-02 1.2208849936723709e-01 - <_> - - 0 -1 919 -2.7412388590164483e-04 - - -1.0865789651870728e-01 4.3262030929327011e-02 - <_> - - 0 -1 920 -2.1822929556947201e-04 - - -1.4428439736366272e-01 6.3061922788619995e-02 - <_> - - 0 -1 921 2.9122079722583294e-03 - - -5.2774921059608459e-02 5.9191830456256866e-02 - <_> - - 0 -1 922 -3.6725331097841263e-02 - - 2.1313689649105072e-01 -5.1487848162651062e-02 - <_> - - 0 -1 923 1.3013239949941635e-02 - - -5.7525340467691422e-02 1.2103849649429321e-01 - <_> - - 0 -1 924 1.1602040380239487e-02 - - 5.0670608878135681e-02 -2.1417009830474854e-01 - <_> - - 0 -1 925 -2.1189039107412100e-03 - - -2.3993240296840668e-01 3.9067979902029037e-02 - <_> - - 0 -1 926 -9.8798265680670738e-03 - - 2.0317670702934265e-01 -4.6872068196535110e-02 - <_> - - 0 -1 927 4.1930121369659901e-03 - - -4.9094110727310181e-02 7.1827210485935211e-02 - <_> - - 0 -1 928 1.5404559671878815e-02 - - 2.5184549391269684e-02 -3.7926280498504639e-01 - <_> - - 0 -1 929 4.7204889357089996e-02 - - 6.5619370434433222e-04 -8.5161781311035156e-01 - <_> - - 0 -1 930 6.5289321355521679e-03 - - -7.8455463051795959e-02 1.2842629849910736e-01 - <_> - - 0 -1 931 5.6735638529062271e-02 - - -1.4093150384724140e-02 1.2426369637250900e-01 - <_> - - 0 -1 932 2.6140250265598297e-03 - - -9.2374339699745178e-02 1.0978870093822479e-01 - <_> - - 0 -1 933 8.9589040726423264e-04 - - 3.4749828279018402e-02 -1.0929500311613083e-01 - <_> - - 0 -1 934 -9.0662058210000396e-04 - - -1.6220299899578094e-01 5.0702780485153198e-02 - <_> - - 0 -1 935 -5.6750950170680881e-04 - - -1.3976819813251495e-01 3.3563069999217987e-02 - <_> - - 0 -1 936 3.9271891000680625e-04 - - 5.3779508918523788e-02 -1.7188000679016113e-01 - <_> - - 0 -1 937 -8.0099105834960938e-03 - - 1.9834689795970917e-01 -3.8824960589408875e-02 - <_> - - 0 -1 938 1.0684199631214142e-02 - - -2.8290269896388054e-02 3.4395828843116760e-01 - <_> - - 0 -1 939 1.4759440091438591e-05 - - -7.8098028898239136e-02 9.7656883299350739e-02 - <_> - - 0 -1 940 1.6975859180092812e-02 - - -5.6326240301132202e-02 1.5583120286464691e-01 - <_> - - 0 -1 941 -1.3971020052849781e-05 - - 7.2150066494941711e-02 -7.1441337466239929e-02 - <_> - - 0 -1 942 -2.6035839691758156e-03 - - 1.0941360145807266e-01 -8.1451512873172760e-02 - <_> - - 0 -1 943 2.5178899988532066e-02 - - 1.2207499705255032e-02 -2.2756040096282959e-01 - <_> - - 0 -1 944 -3.9559401571750641e-02 - - -5.8328497409820557e-01 1.4910699799656868e-02 - <_> - - 0 -1 945 -1.4030520105734468e-05 - - 5.3006969392299652e-02 -4.6118430793285370e-02 - <_> - - 0 -1 946 -1.4760649719391949e-05 - - 9.7830682992935181e-02 -8.5236847400665283e-02 - <_> - - 0 -1 947 -7.2725438512861729e-03 - - -1.7783139646053314e-01 2.1142490208148956e-02 - <_> - - 0 -1 948 -1.3526830116461497e-05 - - 9.1094732284545898e-02 -8.8054873049259186e-02 - <_> - - 0 -1 949 2.7169808745384216e-01 - - 6.9690002128481865e-03 -5.7763397693634033e-01 - <_> - - 0 -1 950 -1.4148949645459652e-02 - - -4.2174759507179260e-01 1.7959559336304665e-02 - <_> - - 0 -1 951 -2.7665561065077782e-03 - - -5.9134751558303833e-01 1.1650159955024719e-02 - <_> - - 0 -1 952 -2.0631540101021528e-03 - - 1.2150909751653671e-01 -6.4721226692199707e-02 - <_> - - 0 -1 953 1.3370909982768353e-05 - - -5.6479219347238541e-02 7.5040176510810852e-02 - <_> - - 0 -1 954 6.4982241019606590e-04 - - 4.2173530906438828e-02 -1.9766530394554138e-01 - <_> - - 0 -1 955 2.4920518626458943e-04 - - -6.2353838235139847e-02 9.4402343034744263e-02 - <_> - - 0 -1 956 -1.2078540166839957e-03 - - 1.6323770582675934e-01 -6.4028233289718628e-02 - <_> - - 0 -1 957 -2.2494650911539793e-03 - - 1.8250890076160431e-01 -1.3332289643585682e-02 - <_> - - 0 -1 958 5.9620937099680305e-04 - - -6.5838947892189026e-02 1.5421830117702484e-01 - <_> - - 0 -1 959 -3.9258919423446059e-04 - - -1.4715319871902466e-01 3.9555948227643967e-02 - <_> - - 0 -1 960 -8.1223007291555405e-03 - - -2.2444109618663788e-01 4.2161621153354645e-02 - <_> - - 0 -1 961 -4.7881420701742172e-02 - - -8.7091821432113647e-01 8.1774117425084114e-03 - <_> - - 0 -1 962 -2.2748390212655067e-02 - - 2.9979050159454346e-01 -2.8346529230475426e-02 - <_> - - 0 -1 963 1.0392880067229271e-03 - - 2.7098760008811951e-02 -1.0330139845609665e-01 - <_> - - 0 -1 964 -2.8231230317032896e-05 - - 7.7585183084011078e-02 -1.0317090153694153e-01 - <_> - - 0 -1 965 -4.2344927787780762e-03 - - 1.0193389654159546e-01 -4.3151829391717911e-02 - <_> - - 0 -1 966 1.5932330861687660e-02 - - -3.4068148583173752e-02 2.2951790690422058e-01 - <_> - - 0 -1 967 1.8464079766999930e-04 - - 4.5591291040182114e-02 -1.2555940449237823e-01 - <_> - - 0 -1 968 -1.9733259454369545e-02 - - 2.2064359486103058e-01 -3.5928118973970413e-02 - <_> - - 0 -1 969 1.4354330232890788e-05 - - -5.3893670439720154e-02 7.3926411569118500e-02 - <_> - - 0 -1 970 7.6591788092628121e-04 - - 4.8648048192262650e-02 -1.6688610613346100e-01 - <_> - - 0 -1 971 4.8519670963287354e-03 - - 1.8916709348559380e-02 -3.8225510716438293e-01 - <_> - - 0 -1 972 7.8907480929046869e-04 - - -5.8328978717327118e-02 1.3417090475559235e-01 - <_> - - 0 -1 973 3.2383669167757034e-02 - - 4.5701907947659492e-03 -3.7887600064277649e-01 - <_> - - 0 -1 974 -1.2292680330574512e-03 - - -1.5834780037403107e-01 4.7614280134439468e-02 - <_> - - 0 -1 975 2.7047060430049896e-02 - - 6.6439821384847164e-03 -5.9655481576919556e-01 - <_> - - 0 -1 976 1.4375980198383331e-01 - - -1.7842639237642288e-02 4.2351529002189636e-01 - <_> - - 0 -1 977 -1.5783259645104408e-02 - - 8.8244073092937469e-02 -1.2464329600334167e-02 - <_> - - 0 -1 978 -1.4875989872962236e-03 - - -1.3130789995193481e-01 5.7446569204330444e-02 - <_> - - 0 -1 979 2.5348609313368797e-02 - - -1.8971860408782959e-02 1.5281090140342712e-01 - <_> - - 0 -1 980 3.4981030970811844e-02 - - 1.0243220254778862e-02 -7.7604120969772339e-01 - <_> - - 0 -1 981 -1.0513720102608204e-02 - - 1.0823149979114532e-01 -2.8787430375814438e-02 - <_> - - 0 -1 982 -7.3121190071105957e-03 - - -8.3258008956909180e-01 9.2471670359373093e-03 - <_> - - 0 -1 983 -1.3201700150966644e-01 - - -2.9581999778747559e-01 1.6155829653143883e-03 - <_> - - 0 -1 984 3.1345361471176147e-01 - - 1.0132989846169949e-02 -7.1845752000808716e-01 - <_> - - 0 -1 985 6.7774970084428787e-03 - - 1.6121359542012215e-02 -3.0593600869178772e-01 - <_> - - 0 -1 986 -1.6488260030746460e-01 - - -7.3052179813385010e-01 9.3599827960133553e-03 - <_> - - 0 -1 987 3.0263569205999374e-02 - - -2.1490950137376785e-02 2.1476639807224274e-01 - <_> - - 0 -1 988 -1.0164840146899223e-02 - - -1.2528149783611298e-01 6.0508821159601212e-02 - <_> - - 0 -1 989 -4.9876107368618250e-04 - - 1.1736539751291275e-01 -6.5368436276912689e-02 - <_> - - 0 -1 990 -2.0281779870856553e-04 - - -1.4580169320106506e-01 5.3317841142416000e-02 - <_> - - 0 -1 991 7.5787317473441362e-04 - - -5.0901308655738831e-02 9.6431486308574677e-02 - <_> - - 0 -1 992 3.0924860038794577e-04 - - -7.4172429740428925e-02 1.0036680102348328e-01 - <_> - - 0 -1 993 -1.7347460612654686e-02 - - -7.0043748617172241e-01 5.1052640192210674e-03 - <_> - - 0 -1 994 4.2674738913774490e-02 - - -4.3247479945421219e-02 1.8100689351558685e-01 - <_> - - 0 -1 995 -3.1056061387062073e-01 - - -8.1626391410827637e-01 1.7991130007430911e-03 - <_> - - 0 -1 996 2.6550391316413879e-01 - - 1.3434600085020065e-02 -6.2406688928604126e-01 - <_> - - 0 -1 997 4.2594179831212386e-05 - - -3.9899569004774094e-02 3.6133170127868652e-02 - <_> - - 0 -1 998 -5.9230630286037922e-03 - - -3.3807530999183655e-01 2.2033369168639183e-02 - <_> - - 0 -1 999 7.4049353599548340e-02 - - 1.3915670569986105e-03 -6.9353181123733521e-01 - <_> - - 0 -1 1000 -1.7220899462699890e-02 - - 2.3747919499874115e-01 -3.3367458730936050e-02 - <_> - - 0 -1 1001 5.3963330574333668e-03 - - 5.0931539386510849e-02 -1.5562909841537476e-01 - <_> - - 0 -1 1002 -1.8919620197266340e-03 - - -1.5169349312782288e-01 5.3993280977010727e-02 - <_> - - 0 -1 1003 -1.5097260475158691e-03 - - 1.9851540029048920e-01 -3.3595308661460876e-02 - <_> - - 0 -1 1004 3.0020769685506821e-02 - - -1.7136970534920692e-02 4.1571149230003357e-01 - <_> - - 0 -1 1005 5.0775688141584396e-03 - - 9.6978880465030670e-03 -1.7263160645961761e-01 - <_> - - 0 -1 1006 -1.1930350447073579e-03 - - -1.7071479558944702e-01 4.4078700244426727e-02 - <_> - - 0 -1 1007 -4.3130549602210522e-03 - - 7.3799706995487213e-02 -6.1707559973001480e-02 - <_> - - 0 -1 1008 3.7032270338386297e-03 - - -3.6637570708990097e-02 2.2825400531291962e-01 - <_> - - 0 -1 1009 -1.2335710227489471e-01 - - -8.0323278903961182e-01 5.5564441718161106e-03 - <_> - - 0 -1 1010 -1.6671289503574371e-01 - - -7.4742680788040161e-01 7.7674849890172482e-03 - <_> - - 0 -1 1011 -4.2208871245384216e-01 - - -4.7446969151496887e-01 6.5842550247907639e-03 - <_> - - 0 -1 1012 -9.1678872704505920e-02 - - -6.0947632789611816e-01 1.0897959582507610e-02 - <_> - - 0 -1 1013 6.3239918090403080e-03 - - -3.3826641738414764e-02 1.8243339657783508e-01 - <_> - - 0 -1 1014 4.2129371315240860e-02 - - 9.4385631382465363e-03 -7.7248048782348633e-01 - <_> - - 0 -1 1015 -9.3927257694303989e-04 - - 7.1579143404960632e-02 -3.5312049090862274e-02 - <_> - - 0 -1 1016 -2.5862399488687515e-03 - - -1.7614290118217468e-01 3.8970381021499634e-02 - <_> - - 0 -1 1017 -6.0188758652657270e-05 - - 5.7997729629278183e-02 -6.4837977290153503e-02 - <_> - - 0 -1 1018 -2.8638429284910671e-05 - - 9.1408349573612213e-02 -1.0475879907608032e-01 - <_> - - 0 -1 1019 3.8879539351910353e-03 - - -5.7216320186853409e-02 1.3386100530624390e-01 - <_> - - 0 -1 1020 -1.1557409539818764e-02 - - -2.0509949326515198e-01 3.6868590861558914e-02 - <_> - - 0 -1 1021 -1.3373260153457522e-03 - - 1.2270689755678177e-01 -6.2221698462963104e-02 - <_> - - 0 -1 1022 1.6762840095907450e-03 - - -8.8421173393726349e-02 1.3434900343418121e-01 - <_> - - 0 -1 1023 7.7090170234441757e-03 - - 4.9661491066217422e-03 -7.5325018167495728e-01 - <_> - - 0 -1 1024 -1.7691600369289517e-03 - - -1.5910659730434418e-01 5.0247859209775925e-02 - <_> - - 0 -1 1025 1.4020030386745930e-02 - - -2.1401990205049515e-02 3.8334238529205322e-01 - <_> - - 0 -1 1026 1.4426360394281801e-05 - - -7.8059092164039612e-02 8.9304782450199127e-02 - <_> - - 0 -1 1027 -3.1559329479932785e-02 - - 2.3358459770679474e-01 -2.1906960755586624e-02 - <_> - - 0 -1 1028 -1.1780899949371815e-03 - - -1.7116659879684448e-01 4.0173828601837158e-02 - <_> - - 0 -1 1029 1.4788280241191387e-02 - - -3.6710381507873535e-02 2.1811370551586151e-01 - <_> - - 0 -1 1030 7.2554568760097027e-04 - - -9.1587312519550323e-02 7.8570358455181122e-02 - <_> - - 0 -1 1031 5.7623899920145050e-05 - - -8.7541349232196808e-02 7.2184711694717407e-02 - <_> - - 0 -1 1032 2.2748520132154226e-03 - - 5.7446658611297607e-02 -1.3148130476474762e-01 - <_> - - 0 -1 1033 -4.1168648749589920e-03 - - -2.0229530334472656e-01 1.2693749740719795e-02 - <_> - - 0 -1 1034 -1.0332450270652771e-02 - - 1.0516080260276794e-01 -7.0124857127666473e-02 - <_> - - 0 -1 1035 3.3246190287172794e-03 - - -4.0530338883399963e-02 5.9988118708133698e-02 - <_> - - 0 -1 1036 1.7478669760748744e-03 - - -8.1173956394195557e-02 1.1108309775590897e-01 - <_> - - 0 -1 1037 3.9028140599839389e-04 - - 4.8233661800622940e-02 -1.9484539330005646e-01 - <_> - - 0 -1 1038 1.6148900613188744e-04 - - 8.2814067602157593e-02 -9.4663769006729126e-02 - <_> - - 0 -1 1039 -1.7121629416942596e-01 - - 3.1984481215476990e-01 -1.1575589887797832e-02 - <_> - - 0 -1 1040 2.4543540179729462e-01 - - 1.4251790009438992e-02 -5.0641399621963501e-01 - <_> - - 0 -1 1041 3.0413989443331957e-03 - - -2.4235099554061890e-02 1.8348780274391174e-01 - <_> - - 0 -1 1042 -3.5697590559720993e-02 - - -2.8293010592460632e-01 2.4910699576139450e-02 - <_> - - 0 -1 1043 -2.9557330999523401e-03 - - 2.4772000312805176e-01 -2.4235939607024193e-02 - <_> - - 0 -1 1044 7.2135991649702191e-04 - - 3.4506618976593018e-02 -2.2165650129318237e-01 - <_> - - 0 -1 1045 -1.0706990025937557e-02 - - -8.6768919229507446e-01 6.9787860848009586e-03 - <_> - - 0 -1 1046 3.4451750107109547e-03 - - -2.2823199629783630e-02 3.1982448697090149e-01 - <_> - - 0 -1 1047 2.6111999526619911e-02 - - 3.6254660226404667e-03 -7.5875741243362427e-01 - <_> - - 0 -1 1048 -1.2527000159025192e-02 - - -4.5790728926658630e-01 1.6250349581241608e-02 - <_> - - 0 -1 1049 4.3875008821487427e-02 - - 1.7482640221714973e-02 -3.9459380507469177e-01 - <_> - - 0 -1 1050 6.7723668180406094e-03 - - -5.2476380020380020e-02 1.4575639367103577e-01 - <_> - - 0 -1 1051 7.8281061723828316e-03 - - -4.2176958173513412e-02 7.7543281018733978e-02 - <_> - - 0 -1 1052 -1.3225760310888290e-02 - - 1.5081860125064850e-01 -5.1193341612815857e-02 - <_> - - 0 -1 1053 1.0840999893844128e-03 - - 3.5837080329656601e-02 -2.2138750553131104e-01 - <_> - - 0 -1 1054 1.9366490596439689e-04 - - -8.7103597819805145e-02 8.8438250124454498e-02 - <_> - 161 - -1.0122050046920776e+00 - - <_> - - 0 -1 1055 -4.8138638958334923e-03 - - 3.3305510878562927e-01 -1.1184120178222656e-01 - <_> - - 0 -1 1056 -4.8076249659061432e-03 - - 2.2943000495433807e-01 -8.7792031466960907e-02 - <_> - - 0 -1 1057 -6.3146371394395828e-04 - - -2.5594729185104370e-01 7.8774467110633850e-02 - <_> - - 0 -1 1058 -3.3615701249800622e-04 - - -1.8154360353946686e-01 7.7407546341419220e-02 - <_> - - 0 -1 1059 5.8366339653730392e-02 - - 2.0159339532256126e-02 -3.7257949218750000e+04 - <_> - - 0 -1 1060 6.9574371445924044e-04 - - 8.5560150444507599e-02 -2.8294658660888672e-01 - <_> - - 0 -1 1061 6.4000801648944616e-04 - - 1.1213850229978561e-01 -2.4997310340404510e-01 - <_> - - 0 -1 1062 -8.4167812019586563e-03 - - 3.4115108847618103e-01 -9.1669142246246338e-02 - <_> - - 0 -1 1063 -2.2956470493227243e-03 - - 2.4936810135841370e-01 -5.6569069623947144e-02 - <_> - - 0 -1 1064 1.1676879599690437e-02 - - 3.5941518843173981e-02 -3.6494261026382446e-01 - <_> - - 0 -1 1065 -1.7014340264722705e-03 - - 1.4737150073051453e-01 -1.1686210334300995e-01 - <_> - - 0 -1 1066 -7.0934131508693099e-04 - - 9.5654368400573730e-02 -1.1207240074872971e-01 - <_> - - 0 -1 1067 4.3072118423879147e-03 - - 7.2915956377983093e-02 -2.3251010477542877e-01 - <_> - - 0 -1 1068 5.1240371540188789e-03 - - -4.7454528510570526e-02 3.8078710436820984e-01 - <_> - - 0 -1 1069 3.5788940731436014e-03 - - -4.7301489859819412e-02 2.9896679520606995e-01 - <_> - - 0 -1 1070 -3.3787379506975412e-03 - - -2.1025639772415161e-01 3.1566038727760315e-02 - <_> - - 0 -1 1071 1.6957529587671161e-03 - - 7.7830709517002106e-02 -1.7848539352416992e-01 - <_> - - 0 -1 1072 5.4554390953853726e-04 - - 3.4314308315515518e-02 -1.1110570281744003e-01 - <_> - - 0 -1 1073 7.1256239898502827e-03 - - -6.7792102694511414e-02 1.9082720577716827e-01 - <_> - - 0 -1 1074 -7.1168097201734781e-04 - - -1.4311639964580536e-01 4.7033898532390594e-02 - <_> - - 0 -1 1075 9.6405223011970520e-03 - - -3.5559050738811493e-02 3.5041770339012146e-01 - <_> - - 0 -1 1076 -1.4268929589889012e-05 - - 7.1855843067169189e-02 -7.3007427155971527e-02 - <_> - - 0 -1 1077 -3.9352979511022568e-03 - - -2.1431219577789307e-01 5.3092300891876221e-02 - <_> - - 0 -1 1078 -1.1273019947111607e-02 - - 4.3782061338424683e-01 -2.5934530422091484e-02 - <_> - - 0 -1 1079 -2.8332630172371864e-03 - - -2.6155671477317810e-01 4.1156601160764694e-02 - <_> - - 0 -1 1080 -1.3269010232761502e-03 - - 1.5967020392417908e-01 -3.3737391233444214e-02 - <_> - - 0 -1 1081 -9.1561209410429001e-03 - - -3.1967610120773315e-01 3.3890329301357269e-02 - <_> - - 0 -1 1082 -1.7915640026330948e-02 - - -7.0053237676620483e-01 4.4488841667771339e-03 - <_> - - 0 -1 1083 3.8176840171217918e-03 - - 6.2512502074241638e-02 -1.6921320557594299e-01 - <_> - - 0 -1 1084 4.5008640881860629e-05 - - -9.8662726581096649e-02 7.9565010964870453e-02 - <_> - - 0 -1 1085 -5.6530670262873173e-03 - - 2.9453009366989136e-01 -4.3036140501499176e-02 - <_> - - 0 -1 1086 1.3065920211374760e-03 - - -6.6126309335231781e-02 1.9360679388046265e-01 - <_> - - 0 -1 1087 4.9355439841747284e-03 - - 4.9594070762395859e-02 -2.2154040634632111e-01 - <_> - - 0 -1 1088 1.5995210036635399e-02 - - 4.5337058603763580e-02 -2.1014940738677979e-01 - <_> - - 0 -1 1089 1.0815339628607035e-03 - - -1.1542639881372452e-01 8.3288490772247314e-02 - <_> - - 0 -1 1090 8.7853492004796863e-04 - - 2.7896849438548088e-02 -9.9133409559726715e-02 - <_> - - 0 -1 1091 7.3434278601780534e-04 - - -5.6502331048250198e-02 1.7661200463771820e-01 - <_> - - 0 -1 1092 -1.0622059926390648e-03 - - -1.0033279657363892e-01 2.4592749774456024e-02 - <_> - - 0 -1 1093 -6.9304608041420579e-04 - - 1.5932570397853851e-01 -5.8667950332164764e-02 - <_> - - 0 -1 1094 9.1822311514988542e-04 - - 3.3871021121740341e-02 -1.1693420261144638e-01 - <_> - - 0 -1 1095 3.5730420495383441e-04 - - -7.0367507636547089e-02 1.4592669904232025e-01 - <_> - - 0 -1 1096 -7.4347230838611722e-04 - - -1.3231860101222992e-01 4.2515788227319717e-02 - <_> - - 0 -1 1097 -2.7919169515371323e-02 - - -6.4661091566085815e-01 1.4362960122525692e-02 - <_> - - 0 -1 1098 -7.2348387911915779e-03 - - 1.5208439528942108e-01 -2.5076340883970261e-02 - <_> - - 0 -1 1099 -1.2335630133748055e-02 - - -3.2772049307823181e-01 2.7494419366121292e-02 - <_> - - 0 -1 1100 8.9493131963536143e-04 - - -7.3789313435554504e-02 1.4715169370174408e-01 - <_> - - 0 -1 1101 -1.1678929440677166e-03 - - 2.3279860615730286e-01 -4.6786271035671234e-02 - <_> - - 0 -1 1102 -1.4189979992806911e-05 - - 4.3930541723966599e-02 -3.7888601422309875e-02 - <_> - - 0 -1 1103 1.1783849913626909e-03 - - 4.6435151249170303e-02 -2.2555530071258545e-01 - <_> - - 0 -1 1104 3.1638250220566988e-03 - - 1.4266540296375751e-02 -1.5830729901790619e-01 - <_> - - 0 -1 1105 -4.2278678156435490e-03 - - -2.3111909627914429e-01 3.9585571736097336e-02 - <_> - - 0 -1 1106 -2.9055060818791389e-02 - - 2.2005799412727356e-01 -1.8948260694742203e-02 - <_> - - 0 -1 1107 -1.4660089618701022e-05 - - 9.4057418406009674e-02 -8.9589871466159821e-02 - <_> - - 0 -1 1108 1.5642490470781922e-03 - - -2.9802989214658737e-02 2.0670419931411743e-01 - <_> - - 0 -1 1109 -1.6279580304399133e-03 - - -2.3323430120944977e-01 3.6563020199537277e-02 - <_> - - 0 -1 1110 -1.0405499488115311e-03 - - 5.9083230793476105e-02 -3.2685071229934692e-02 - <_> - - 0 -1 1111 -1.6444999491795897e-03 - - 1.3493299484252930e-01 -6.0224398970603943e-02 - <_> - - 0 -1 1112 -5.3500832291319966e-04 - - -1.0380990058183670e-01 2.6242509484291077e-02 - <_> - - 0 -1 1113 8.8775012409314513e-04 - - 3.5718239843845367e-02 -2.5862941145896912e-01 - <_> - - 0 -1 1114 3.7019669543951750e-03 - - -2.2746559232473373e-02 2.7165991067886353e-01 - <_> - - 0 -1 1115 -1.9900789484381676e-03 - - 2.2302250564098358e-01 -3.6304280161857605e-02 - <_> - - 0 -1 1116 3.3227570820599794e-03 - - 6.1393459327518940e-03 -5.9358280897140503e-01 - <_> - - 0 -1 1117 8.7127886712551117e-02 - - 3.1586099416017532e-02 -2.4441570043563843e-01 - <_> - - 0 -1 1118 -2.2545009851455688e-02 - - 6.0322389006614685e-02 -5.0378400832414627e-02 - <_> - - 0 -1 1119 7.1416068822145462e-03 - - -5.1704131066799164e-02 1.6004230082035065e-01 - <_> - - 0 -1 1120 -1.5722440555691719e-02 - - -7.1705770492553711e-01 1.1371869593858719e-02 - <_> - - 0 -1 1121 -3.6207420635037124e-04 - - -1.4637580513954163e-01 5.2074629813432693e-02 - <_> - - 0 -1 1122 -3.0946239829063416e-02 - - 2.8515431284904480e-01 -2.8299989178776741e-02 - <_> - - 0 -1 1123 -3.8750860840082169e-03 - - -1.8727800250053406e-01 4.7576699405908585e-02 - <_> - - 0 -1 1124 -5.3602852858603001e-04 - - 7.9475373029708862e-02 -3.9783481508493423e-02 - <_> - - 0 -1 1125 9.3597290106117725e-04 - - 3.0939189717173576e-02 -2.6814800500869751e-01 - <_> - - 0 -1 1126 8.5998268332332373e-04 - - -6.1905588954687119e-02 1.4959439635276794e-01 - <_> - - 0 -1 1127 -1.0758650023490191e-03 - - 7.5612559914588928e-02 -1.1494939774274826e-01 - <_> - - 0 -1 1128 4.5355302281677723e-03 - - 5.6059500202536583e-03 -5.7013422250747681e-01 - <_> - - 0 -1 1129 4.7198678657878190e-05 - - -1.0799890011548996e-01 8.5406206548213959e-02 - <_> - - 0 -1 1130 -1.0689400369301438e-03 - - 1.3189959526062012e-01 -7.2640426456928253e-02 - <_> - - 0 -1 1131 -7.7435292769223452e-04 - - -2.0819279551506042e-01 4.1918680071830750e-02 - <_> - - 0 -1 1132 -4.1570421308279037e-02 - - -3.8603949546813965e-01 6.2196617946028709e-03 - <_> - - 0 -1 1133 -1.2767040729522705e-01 - - -4.1226288676261902e-01 1.9546430557966232e-02 - <_> - - 0 -1 1134 4.6110390685498714e-03 - - -7.0534370839595795e-02 6.4243637025356293e-02 - <_> - - 0 -1 1135 -1.9830530509352684e-03 - - 1.5599420666694641e-01 -7.5535386800765991e-02 - <_> - - 0 -1 1136 5.5741341784596443e-03 - - -5.3869280964136124e-02 1.7663550376892090e-01 - <_> - - 0 -1 1137 -6.2112910673022270e-03 - - -2.4935899674892426e-01 3.7481259554624557e-02 - <_> - - 0 -1 1138 -1.4880870003253222e-03 - - 1.7453719675540924e-01 -2.9856640845537186e-02 - <_> - - 0 -1 1139 -1.6566930571570992e-03 - - -1.3825559616088867e-01 6.4315892755985260e-02 - <_> - - 0 -1 1140 -1.2179469689726830e-02 - - -7.3452550172805786e-01 6.6957371309399605e-03 - <_> - - 0 -1 1141 -8.2790851593017578e-04 - - -2.1595530211925507e-01 3.7085570394992828e-02 - <_> - - 0 -1 1142 -1.6515310853719711e-02 - - 8.6132906377315521e-02 -3.9982698857784271e-02 - <_> - - 0 -1 1143 6.3035473227500916e-02 - - -3.2119460403919220e-02 2.7596130967140198e-01 - <_> - - 0 -1 1144 -1.4381350483745337e-03 - - -2.1799820661544800e-01 4.0228120982646942e-02 - <_> - - 0 -1 1145 -8.3341673016548157e-03 - - 2.0551650226116180e-01 -4.3687049299478531e-02 - <_> - - 0 -1 1146 -2.6486050337553024e-03 - - 1.1604149639606476e-01 -1.5633650124073029e-02 - <_> - - 0 -1 1147 1.0625630384311080e-03 - - -5.9282109141349792e-02 1.7666099965572357e-01 - <_> - - 0 -1 1148 1.6927489778026938e-03 - - 2.1706450730562210e-02 -1.2041869759559631e-01 - <_> - - 0 -1 1149 4.3286401778459549e-03 - - 1.2777020223438740e-02 -6.8458771705627441e-01 - <_> - - 0 -1 1150 -5.0025819800794125e-03 - - 6.9742977619171143e-02 -4.5128200203180313e-02 - <_> - - 0 -1 1151 -4.0001221932470798e-03 - - -2.1252320706844330e-01 4.0566269308328629e-02 - <_> - - 0 -1 1152 -2.9794070869684219e-03 - - -1.9225180149078369e-01 3.7790048867464066e-02 - <_> - - 0 -1 1153 -4.7926669940352440e-03 - - 2.0764119923114777e-01 -4.1848249733448029e-02 - <_> - - 0 -1 1154 -1.2958609731867909e-03 - - 1.0586590319871902e-01 -1.0162109881639481e-01 - <_> - - 0 -1 1155 -3.9834968745708466e-02 - - -4.6228501200675964e-01 1.7882000654935837e-02 - <_> - - 0 -1 1156 -3.5444050445221364e-04 - - 9.8369859158992767e-02 -7.9836666584014893e-02 - <_> - - 0 -1 1157 7.3516031261533499e-04 - - 4.3184559792280197e-02 -1.7705610394477844e-01 - <_> - - 0 -1 1158 -2.2232010960578918e-03 - - 2.6093319058418274e-01 -2.0896289497613907e-02 - <_> - - 0 -1 1159 -3.3918209373950958e-02 - - -4.2818689346313477e-01 1.8691619858145714e-02 - <_> - - 0 -1 1160 1.6966359689831734e-03 - - -3.7930358201265335e-02 5.3745239973068237e-02 - <_> - - 0 -1 1161 -1.6069110482931137e-02 - - 2.7468490600585938e-01 -2.6708930730819702e-02 - <_> - - 0 -1 1162 6.7740790545940399e-03 - - 1.4412250369787216e-02 -4.3264049291610718e-01 - <_> - - 0 -1 1163 -4.1755018755793571e-03 - - -2.5962948799133301e-01 2.8292329981923103e-02 - <_> - - 0 -1 1164 1.2053320184350014e-02 - - -1.6576129943132401e-02 2.3224839568138123e-01 - <_> - - 0 -1 1165 -2.6080579118570313e-05 - - 8.1346921622753143e-02 -9.0487897396087646e-02 - <_> - - 0 -1 1166 -1.4344100236485247e-05 - - 3.6852870136499405e-02 -4.1185200214385986e-02 - <_> - - 0 -1 1167 -3.9379368536174297e-03 - - -3.1543010473251343e-01 2.5417279452085495e-02 - <_> - - 0 -1 1168 4.0381070226430893e-02 - - 2.3525550495833158e-03 -6.2616312503814697e-01 - <_> - - 0 -1 1169 6.4301681704819202e-03 - - -5.3877070546150208e-02 1.4479260146617889e-01 - <_> - - 0 -1 1170 -4.6332839876413345e-02 - - -3.8724219799041748e-01 9.4530889764428139e-03 - <_> - - 0 -1 1171 1.0219570249319077e-02 - - 2.7350710704922676e-02 -2.6912888884544373e-01 - <_> - - 0 -1 1172 3.5570480395108461e-03 - - -3.1693849712610245e-02 9.5666013658046722e-02 - <_> - - 0 -1 1173 3.3236679882975295e-05 - - -7.8234672546386719e-02 9.4776540994644165e-02 - <_> - - 0 -1 1174 -5.1339739002287388e-03 - - 1.6685609519481659e-01 -2.7505289763212204e-02 - <_> - - 0 -1 1175 -1.4517169802275021e-05 - - 7.5686343014240265e-02 -1.0133370012044907e-01 - <_> - - 0 -1 1176 3.1801449949853122e-04 - - 4.8777759075164795e-02 -1.4337550103664398e-01 - <_> - - 0 -1 1177 3.1173340976238251e-03 - - -3.3060338348150253e-02 2.3306910693645477e-01 - <_> - - 0 -1 1178 2.5181370973587036e-01 - - 2.5762580335140228e-03 -8.7339729070663452e-01 - <_> - - 0 -1 1179 -2.1105359494686127e-01 - - -4.9011439085006714e-01 1.4697089791297913e-02 - <_> - - 0 -1 1180 2.0397249609231949e-02 - - 6.3519459217786789e-03 -4.9986541271209717e-01 - <_> - - 0 -1 1181 5.0813501002267003e-04 - - 4.4790260493755341e-02 -1.4761149883270264e-01 - <_> - - 0 -1 1182 -3.8189589977264404e-03 - - 9.7741521894931793e-02 -3.0301010236144066e-02 - <_> - - 0 -1 1183 -1.7395459581166506e-03 - - 2.4675619602203369e-01 -2.9020030051469803e-02 - <_> - - 0 -1 1184 4.1809340473264456e-04 - - 5.0920631736516953e-02 -1.0856080055236816e-01 - <_> - - 0 -1 1185 1.3991099549457431e-03 - - 5.8758009225130081e-02 -1.1712399870157242e-01 - <_> - - 0 -1 1186 8.7988591985777020e-04 - - -3.8413930684328079e-02 6.0627821832895279e-02 - <_> - - 0 -1 1187 -1.7343460349366069e-03 - - 1.2327539920806885e-01 -5.8927621692419052e-02 - <_> - - 0 -1 1188 -5.1964629441499710e-02 - - -2.7523401379585266e-01 2.5769200176000595e-02 - <_> - - 0 -1 1189 1.1679840087890625e-01 - - -1.6948359087109566e-02 4.8907220363616943e-01 - <_> - - 0 -1 1190 1.5027469999040477e-05 - - -4.2930729687213898e-02 4.5053750276565552e-02 - <_> - - 0 -1 1191 -6.2790908850729465e-03 - - 1.0057970136404037e-01 -7.1604646742343903e-02 - <_> - - 0 -1 1192 2.2292429581284523e-02 - - -3.3260539174079895e-02 5.9876371175050735e-02 - <_> - - 0 -1 1193 1.1112909764051437e-02 - - 1.8461560830473900e-02 -4.0056389570236206e-01 - <_> - - 0 -1 1194 -2.7678120881319046e-02 - - -1.5821710228919983e-01 4.4526699930429459e-02 - <_> - - 0 -1 1195 1.1028380133211613e-02 - - -5.8520350605249405e-02 1.2061409652233124e-01 - <_> - - 0 -1 1196 -3.5407328605651855e-01 - - -9.0477108955383301e-01 3.2190340571105480e-03 - <_> - - 0 -1 1197 -2.9098710510879755e-03 - - 2.3300099372863770e-01 -3.2274879515171051e-02 - <_> - - 0 -1 1198 6.7031742073595524e-03 - - 5.4442249238491058e-02 -1.4111320674419403e-01 - <_> - - 0 -1 1199 -2.3569950833916664e-02 - - 2.6528549194335938e-01 -2.7591150254011154e-02 - <_> - - 0 -1 1200 8.1230228533968329e-04 - - -3.4654319286346436e-02 3.8616400212049484e-02 - <_> - - 0 -1 1201 -4.9135009758174419e-03 - - -4.4999811053276062e-01 1.7377259209752083e-02 - <_> - - 0 -1 1202 4.7644469304941595e-04 - - 4.3053060770034790e-02 -1.6222530603408813e-01 - <_> - - 0 -1 1203 -1.2371529592201114e-03 - - -1.9527329504489899e-01 3.4781698137521744e-02 - <_> - - 0 -1 1204 2.7213430032134056e-02 - - 2.6703500188887119e-03 -4.6807101368904114e-01 - <_> - - 0 -1 1205 7.8581515699625015e-03 - - -3.1454358249902725e-02 2.3968310654163361e-01 - <_> - - 0 -1 1206 -9.4054918736219406e-03 - - -1.8506290018558502e-01 2.6161460205912590e-02 - <_> - - 0 -1 1207 2.1883580833673477e-02 - - 1.5367889776825905e-02 -4.7111880779266357e-01 - <_> - - 0 -1 1208 1.8064159899950027e-02 - - -2.2110609337687492e-02 2.4883800745010376e-01 - <_> - - 0 -1 1209 9.4773704186081886e-03 - - -3.2008700072765350e-02 2.1519260108470917e-01 - <_> - - 0 -1 1210 -1.6133759170770645e-02 - - -3.2680571079254150e-01 1.9019920378923416e-02 - <_> - - 0 -1 1211 2.4490270763635635e-02 - - -5.3573019802570343e-02 1.3475239276885986e-01 - <_> - - 0 -1 1212 -4.5099710114300251e-03 - - 6.3583053648471832e-02 -4.9054648727178574e-02 - <_> - - 0 -1 1213 1.4463099651038647e-03 - - 5.5047128349542618e-02 -1.3593649864196777e-01 - <_> - - 0 -1 1214 2.7760691009461880e-03 - - -4.2384490370750427e-02 6.7933753132820129e-02 - <_> - - 0 -1 1215 -1.4073699712753296e-01 - - -2.4455660581588745e-01 2.8879430145025253e-02 - <_> - 237 - -9.5147550106048584e-01 - - <_> - - 0 -1 1216 -1.3682370074093342e-02 - - 3.2413798570632935e-01 -1.4175209403038025e-01 - <_> - - 0 -1 1217 -1.4372760429978371e-02 - - 2.4135230481624603e-01 -4.4534299522638321e-02 - <_> - - 0 -1 1218 -8.1836461322382092e-04 - - 1.0672769695520401e-01 -1.5665370225906372e-01 - <_> - - 0 -1 1219 -1.2486530095338821e-01 - - 3.4077370166778564e-01 -4.3315630406141281e-02 - <_> - - 0 -1 1220 1.6304250061511993e-01 - - 1.5282359672710299e-03 -4.0748660278320312e+02 - <_> - - 0 -1 1221 3.2605718821287155e-02 - - -6.1942920088768005e-02 2.5561058521270752e-01 - <_> - - 0 -1 1222 1.8693620339035988e-02 - - 1.0656840167939663e-03 -1.1298509521484375e+03 - <_> - - 0 -1 1223 4.1687521152198315e-03 - - 3.6205310374498367e-02 -3.4358918666839600e-01 - <_> - - 0 -1 1224 2.4810180068016052e-01 - - 1.0417460463941097e-02 -1.4925009765625000e+03 - <_> - - 0 -1 1225 -1.5247239498421550e-03 - - 1.0447689890861511e-01 -1.1282300204038620e-01 - <_> - - 0 -1 1226 4.3308010697364807e-01 - - -4.9477489665150642e-03 -2.2265880859375000e+04 - <_> - - 0 -1 1227 1.2200199998915195e-03 - - 4.8132400959730148e-02 -1.1945640295743942e-01 - <_> - - 0 -1 1228 3.4034859389066696e-02 - - 1.2363449670374393e-02 -1.2715170312500000e+05 - <_> - - 0 -1 1229 2.9459499273798428e-05 - - -4.2258169502019882e-02 4.6157348901033401e-02 - <_> - - 0 -1 1230 5.0410781055688858e-02 - - 3.1929798424243927e-02 -7.3170861816406250e+02 - <_> - - 0 -1 1231 3.4591180738061666e-03 - - 6.5230898559093475e-02 -1.8423840403556824e-01 - <_> - - 0 -1 1232 6.1741018295288086e-01 - - -9.0229194611310959e-03 -1.5548990234375000e+04 - <_> - - 0 -1 1233 1.6172550618648529e-02 - - -2.1732240915298462e-02 4.3600159883499146e-01 - <_> - - 0 -1 1234 4.3139848858118057e-03 - - 7.4104718863964081e-02 -1.5698270499706268e-01 - <_> - - 0 -1 1235 2.5886419415473938e-01 - - -3.3373549580574036e-02 2.7657139301300049e-01 - <_> - - 0 -1 1236 -5.6355118751525879e-02 - - 1.6577279567718506e-01 -7.0722267031669617e-02 - <_> - - 0 -1 1237 -2.8677979484200478e-02 - - -1.8732979893684387e-01 3.8104340434074402e-02 - <_> - - 0 -1 1238 2.6342319324612617e-02 - - -6.6387602128088474e-03 -1.2419830078125000e+04 - <_> - - 0 -1 1239 2.3009490221738815e-02 - - -2.2657530382275581e-02 1.2870970368385315e-01 - <_> - - 0 -1 1240 -2.8790850192308426e-03 - - 1.2932890653610229e-01 -7.0002339780330658e-02 - <_> - - 0 -1 1241 -3.6661271005868912e-02 - - -2.0944400131702423e-01 5.1285970956087112e-02 - <_> - - 0 -1 1242 1.0139449685811996e-01 - - 6.2089762650430202e-04 -1.0912600097656250e+03 - <_> - - 0 -1 1243 -9.5230191946029663e-03 - - 1.1074540019035339e-01 -4.9746628850698471e-02 - <_> - - 0 -1 1244 4.7148238867521286e-02 - - -1.8974080681800842e-02 4.4045388698577881e-01 - <_> - - 0 -1 1245 2.6617941330187023e-04 - - 3.5245511680841446e-02 -1.2747010588645935e-01 - <_> - - 0 -1 1246 -1.6388510121032596e-03 - - 9.0450480580329895e-02 -9.1294348239898682e-02 - <_> - - 0 -1 1247 1.0469569824635983e-03 - - 3.5024590790271759e-02 -2.4553160369396210e-01 - <_> - - 0 -1 1248 5.7105771265923977e-03 - - -4.1117560118436813e-02 2.0729669928550720e-01 - <_> - - 0 -1 1249 -3.0254309531301260e-03 - - -1.6913729906082153e-01 3.2537300139665604e-02 - <_> - - 0 -1 1250 4.3001459562219679e-04 - - -9.0787641704082489e-02 9.5726296305656433e-02 - <_> - - 0 -1 1251 -2.8151560574769974e-02 - - 3.1782031059265137e-01 -1.5754420310258865e-02 - <_> - - 0 -1 1252 1.4203020371496677e-02 - - 3.6543320864439011e-02 -2.4772170186042786e-01 - <_> - - 0 -1 1253 1.4925509458407760e-03 - - -5.6895390152931213e-02 1.6450239717960358e-01 - <_> - - 0 -1 1254 -1.5694119501858950e-03 - - -2.1969459950923920e-01 4.2165379971265793e-02 - <_> - - 0 -1 1255 3.3460158854722977e-02 - - -3.0376350507140160e-02 2.4883690476417542e-01 - <_> - - 0 -1 1256 2.1535790438065305e-05 - - -1.1558929830789566e-01 7.5267367064952850e-02 - <_> - - 0 -1 1257 2.2091339633334428e-04 - - 4.7116700559854507e-02 -1.3771249353885651e-01 - <_> - - 0 -1 1258 -3.0852231429889798e-04 - - -1.7308589816093445e-01 5.2946820855140686e-02 - <_> - - 0 -1 1259 -2.2987410426139832e-02 - - 9.3859672546386719e-02 -4.9169398844242096e-02 - <_> - - 0 -1 1260 -1.9873609766364098e-02 - - 2.2172120213508606e-01 -4.0203988552093506e-02 - <_> - - 0 -1 1261 -2.1868769545108080e-03 - - 7.3976643383502960e-02 -4.0414918214082718e-02 - <_> - - 0 -1 1262 1.9180430099368095e-03 - - 2.2919140756130219e-02 -3.7119540572166443e-01 - <_> - - 0 -1 1263 1.9919909536838531e-03 - - -4.3757811188697815e-02 1.5035259723663330e-01 - <_> - - 0 -1 1264 -1.8371410667896271e-02 - - -3.4854280948638916e-01 2.2885089740157127e-02 - <_> - - 0 -1 1265 3.3407800365239382e-03 - - 3.4570869058370590e-02 -1.2488479912281036e-01 - <_> - - 0 -1 1266 -5.8704670518636703e-02 - - 3.7905201315879822e-01 -2.6460919529199600e-02 - <_> - - 0 -1 1267 6.8355379626154900e-03 - - 6.1131529510021210e-03 -3.2385069131851196e-01 - <_> - - 0 -1 1268 -2.8255670331418514e-03 - - -3.1155520677566528e-01 2.6504810899496078e-02 - <_> - - 0 -1 1269 2.2296449169516563e-03 - - -3.1206009909510612e-02 1.7110890150070190e-01 - <_> - - 0 -1 1270 6.5813441760838032e-03 - - -4.7404121607542038e-02 1.7835719883441925e-01 - <_> - - 0 -1 1271 1.0121960192918777e-01 - - 1.4261390082538128e-02 -4.3145358562469482e-01 - <_> - - 0 -1 1272 3.0684550292789936e-03 - - 3.0059700831770897e-02 -2.4846489727497101e-01 - <_> - - 0 -1 1273 -3.0772039666771889e-02 - - 3.2272088527679443e-01 -1.0183470323681831e-02 - <_> - - 0 -1 1274 2.2650569677352905e-02 - - -2.3484040051698685e-02 3.2515829801559448e-01 - <_> - - 0 -1 1275 3.3587489277124405e-02 - - -3.5907190293073654e-02 9.0325959026813507e-02 - <_> - - 0 -1 1276 -1.0384810157120228e-02 - - -2.4556130170822144e-01 3.0561409890651703e-02 - <_> - - 0 -1 1277 -1.3354570546653122e-04 - - 8.3960212767124176e-02 -9.1717928647994995e-02 - <_> - - 0 -1 1278 -2.9986540321260691e-03 - - 1.6547350585460663e-01 -5.0249978899955750e-02 - <_> - - 0 -1 1279 -2.9653869205503725e-05 - - 4.8514939844608307e-02 -3.7718929350376129e-02 - <_> - - 0 -1 1280 -1.8298539798706770e-03 - - 1.0312289744615555e-01 -7.0163890719413757e-02 - <_> - - 0 -1 1281 -7.9780339729040861e-04 - - -1.6155080497264862e-01 3.3425241708755493e-02 - <_> - - 0 -1 1282 1.6090199351310730e-02 - - -2.3172449320554733e-02 3.1312319636344910e-01 - <_> - - 0 -1 1283 -2.6117239147424698e-02 - - -1.8283359706401825e-01 4.4406160712242126e-02 - <_> - - 0 -1 1284 5.3988862782716751e-04 - - 3.7879750132560730e-02 -1.9420880079269409e-01 - <_> - - 0 -1 1285 8.3446368575096130e-02 - - -5.4222598671913147e-02 1.1876580119132996e-01 - <_> - - 0 -1 1286 -5.8048460632562637e-02 - - 1.1394450068473816e-01 -9.1198466718196869e-02 - <_> - - 0 -1 1287 -1.8814830109477043e-03 - - -1.5262010693550110e-01 2.3864509537816048e-02 - <_> - - 0 -1 1288 1.3132189633324742e-03 - - -4.6137560158967972e-02 1.4679610729217529e-01 - <_> - - 0 -1 1289 -1.7690629465505481e-03 - - 9.4071052968502045e-02 -3.4722801297903061e-02 - <_> - - 0 -1 1290 -1.0372219840064645e-03 - - 1.8261389434337616e-01 -4.6382140368223190e-02 - <_> - - 0 -1 1291 1.0254649678245187e-03 - - 4.6782769262790680e-02 -1.5734140574932098e-01 - <_> - - 0 -1 1292 6.0706451768055558e-04 - - 5.0757829099893570e-02 -1.4380960166454315e-01 - <_> - - 0 -1 1293 2.8512319549918175e-02 - - -4.1036080569028854e-02 1.3501669466495514e-01 - <_> - - 0 -1 1294 1.3121340423822403e-02 - - 1.8242850899696350e-02 -4.0659961104393005e-01 - <_> - - 0 -1 1295 -1.0520350188016891e-03 - - -9.1481313109397888e-02 4.8208720982074738e-02 - <_> - - 0 -1 1296 -5.2031682571396232e-04 - - 1.7003460228443146e-01 -5.6223969906568527e-02 - <_> - - 0 -1 1297 3.6587389186024666e-03 - - 2.7709450572729111e-02 -2.8259190917015076e-01 - <_> - - 0 -1 1298 6.9533567875623703e-03 - - -2.7793539687991142e-02 2.6696971058845520e-01 - <_> - - 0 -1 1299 -2.7009609621018171e-03 - - -1.1849860101938248e-01 2.9575539752840996e-02 - <_> - - 0 -1 1300 2.6926631107926369e-03 - - 3.4701220691204071e-02 -1.9704259932041168e-01 - <_> - - 0 -1 1301 8.9048492908477783e-01 - - 9.4922678545117378e-03 -6.9257652759552002e-01 - <_> - - 0 -1 1302 1.2570730410516262e-02 - - 1.0482070036232471e-02 -5.3685492277145386e-01 - <_> - - 0 -1 1303 -9.8518103361129761e-02 - - -1.3873669505119324e-01 1.6502020880579948e-02 - <_> - - 0 -1 1304 2.2518350742757320e-03 - - -3.8794040679931641e-02 1.7727519571781158e-01 - <_> - - 0 -1 1305 2.5133260060101748e-03 - - -2.7275720611214638e-02 1.4456109702587128e-01 - <_> - - 0 -1 1306 -1.6838839510455728e-03 - - 1.5908120572566986e-01 -4.3830271810293198e-02 - <_> - - 0 -1 1307 1.0922889923676848e-03 - - 3.0462669208645821e-02 -2.0940789580345154e-01 - <_> - - 0 -1 1308 -4.6525499783456326e-03 - - -5.0559902191162109e-01 1.2849849648773670e-02 - <_> - - 0 -1 1309 3.9402171969413757e-03 - - 1.2510060332715511e-02 -3.6254620552062988e-01 - <_> - - 0 -1 1310 3.1555439345538616e-03 - - 9.6861021593213081e-03 -6.0146772861480713e-01 - <_> - - 0 -1 1311 -7.4672501068562269e-04 - - 7.9826571047306061e-02 -6.6200077533721924e-02 - <_> - - 0 -1 1312 3.4551098942756653e-03 - - -2.1648630499839783e-02 2.7341049909591675e-01 - <_> - - 0 -1 1313 -1.8974170088768005e-03 - - -9.0953402221202850e-02 1.6143409535288811e-02 - <_> - - 0 -1 1314 3.5065270494669676e-03 - - 2.2660460323095322e-02 -2.7876350283622742e-01 - <_> - - 0 -1 1315 -2.8986909455852583e-05 - - 5.1336620002985001e-02 -6.1516389250755310e-02 - <_> - - 0 -1 1316 -7.4356691911816597e-03 - - 1.0708740353584290e-01 -6.0333460569381714e-02 - <_> - - 0 -1 1317 3.8960299571044743e-04 - - -4.9783200025558472e-02 4.2651828378438950e-02 - <_> - - 0 -1 1318 -3.8861521170474589e-04 - - 1.1715649813413620e-01 -6.5398089587688446e-02 - <_> - - 0 -1 1319 6.1152309179306030e-02 - - 3.6394819617271423e-03 -6.6099071502685547e-01 - <_> - - 0 -1 1320 -3.3038608729839325e-02 - - -1.7845560610294342e-01 3.6528710275888443e-02 - <_> - - 0 -1 1321 -4.0356258978135884e-04 - - 2.6595359668135643e-02 -3.6493018269538879e-02 - <_> - - 0 -1 1322 -2.9699380975216627e-03 - - 1.7883479595184326e-01 -4.9407958984375000e-02 - <_> - - 0 -1 1323 5.5536800064146519e-03 - - 2.0649340003728867e-02 -1.5717330574989319e-01 - <_> - - 0 -1 1324 -2.0024640485644341e-02 - - 2.2152520716190338e-01 -3.0920460820198059e-02 - <_> - - 0 -1 1325 -6.8768248893320560e-03 - - -2.0433600246906281e-01 1.4137160032987595e-02 - <_> - - 0 -1 1326 2.7050529606640339e-03 - - 4.4882070273160934e-02 -1.6589009761810303e-01 - <_> - - 0 -1 1327 4.5226789079606533e-03 - - -9.3675320968031883e-03 8.1165276467800140e-02 - <_> - - 0 -1 1328 -1.0950569994747639e-03 - - -1.6356320679187775e-01 4.3779909610748291e-02 - <_> - - 0 -1 1329 -9.1500708367675543e-04 - - 1.1621239781379700e-01 -4.0983591228723526e-02 - <_> - - 0 -1 1330 2.8402361273765564e-01 - - 1.0129080154001713e-02 -6.0319852828979492e-01 - <_> - - 0 -1 1331 -1.6765540465712547e-02 - - 7.5574487447738647e-02 -4.7983448952436447e-02 - <_> - - 0 -1 1332 -1.0621249675750732e-03 - - -1.7645570635795593e-01 3.7266809493303299e-02 - <_> - - 0 -1 1333 -1.3859430328011513e-02 - - 1.9205330312252045e-01 -2.5051679462194443e-02 - <_> - - 0 -1 1334 6.3116271048784256e-03 - - -3.7239659577608109e-02 1.7168369889259338e-01 - <_> - - 0 -1 1335 1.7877150326967239e-02 - - 5.6739561259746552e-03 -3.8877210021018982e-01 - <_> - - 0 -1 1336 5.4825581610202789e-03 - - 3.0310610309243202e-02 -2.2730059921741486e-01 - <_> - - 0 -1 1337 -1.3553289696574211e-02 - - 2.6057419180870056e-01 -6.3845720142126083e-03 - <_> - - 0 -1 1338 2.5274800136685371e-03 - - 4.0234599262475967e-02 -1.7549510300159454e-01 - <_> - - 0 -1 1339 -6.4695789478719234e-03 - - 7.6588369905948639e-02 -5.7295378297567368e-02 - <_> - - 0 -1 1340 -6.7757196724414825e-02 - - 2.2221979498863220e-01 -3.3134650439023972e-02 - <_> - - 0 -1 1341 -8.4518149495124817e-02 - - -5.0019848346710205e-01 4.1239801794290543e-03 - <_> - - 0 -1 1342 -8.1915102899074554e-02 - - -6.5000212192535400e-01 9.2215994372963905e-03 - <_> - - 0 -1 1343 5.9685902670025826e-04 - - 3.1704228371381760e-02 -7.0871040225028992e-02 - <_> - - 0 -1 1344 -2.3389240726828575e-02 - - 1.0624480247497559e-01 -6.4790308475494385e-02 - <_> - - 0 -1 1345 -8.0898992018774152e-04 - - -1.1900889873504639e-01 3.2629311084747314e-02 - <_> - - 0 -1 1346 1.9939169287681580e-03 - - 7.4816852807998657e-02 -9.5308631658554077e-02 - <_> - - 0 -1 1347 -3.4726969897747040e-03 - - 2.1070009469985962e-01 -3.9540618658065796e-02 - <_> - - 0 -1 1348 -3.3657159656286240e-03 - - 1.2709540128707886e-01 -5.5735819041728973e-02 - <_> - - 0 -1 1349 -1.3575919903814793e-02 - - -1.5449869632720947e-01 4.0265358984470367e-02 - <_> - - 0 -1 1350 1.6253659850917757e-04 - - -1.1073529720306396e-01 6.9158107042312622e-02 - <_> - - 0 -1 1351 -8.3766528405249119e-04 - - 8.5044503211975098e-02 -5.0807278603315353e-02 - <_> - - 0 -1 1352 6.7485118051990867e-04 - - 3.3850058913230896e-02 -1.8681390583515167e-01 - <_> - - 0 -1 1353 4.5086331665515900e-02 - - -2.2217540070414543e-02 1.6278229653835297e-01 - <_> - - 0 -1 1354 3.5375991137698293e-04 - - -8.4861122071743011e-02 7.9549372196197510e-02 - <_> - - 0 -1 1355 -5.7213287800550461e-03 - - -1.5201200544834137e-01 8.8938418775796890e-03 - <_> - - 0 -1 1356 -7.2676259151194245e-05 - - 7.4427559971809387e-02 -9.4257198274135590e-02 - <_> - - 0 -1 1357 -1.5427060425281525e-03 - - 9.9066533148288727e-02 -1.4238010160624981e-02 - <_> - - 0 -1 1358 -3.1625840347260237e-03 - - -1.8063150346279144e-01 3.3944349735975266e-02 - <_> - - 0 -1 1359 6.6523120040073991e-04 - - -4.0894519537687302e-02 6.0058850795030594e-02 - <_> - - 0 -1 1360 -2.7951318770647049e-04 - - 8.7963223457336426e-02 -7.9021811485290527e-02 - <_> - - 0 -1 1361 2.1129949018359184e-03 - - 3.6279819905757904e-02 -8.4132328629493713e-02 - <_> - - 0 -1 1362 9.9497847259044647e-03 - - -5.5264249444007874e-02 1.2318620085716248e-01 - <_> - - 0 -1 1363 5.4585319012403488e-03 - - 1.7271419987082481e-02 -1.4714859426021576e-01 - <_> - - 0 -1 1364 -1.5861300053074956e-03 - - 1.7243680357933044e-01 -3.7152450531721115e-02 - <_> - - 0 -1 1365 -3.7650260492227972e-04 - - -1.5841029584407806e-01 4.2054440826177597e-02 - <_> - - 0 -1 1366 4.8947380855679512e-04 - - -8.6445927619934082e-02 8.4095031023025513e-02 - <_> - - 0 -1 1367 -4.2103161104023457e-04 - - 1.2958380579948425e-01 -5.7010810822248459e-02 - <_> - - 0 -1 1368 1.7509369645267725e-03 - - -3.1569670885801315e-02 2.3537610471248627e-01 - <_> - - 0 -1 1369 3.2388899475336075e-02 - - 9.8493462428450584e-03 -2.5093591213226318e-01 - <_> - - 0 -1 1370 -1.1695439752656966e-04 - - -1.2052779644727707e-01 5.7291809469461441e-02 - <_> - - 0 -1 1371 5.2962708286941051e-04 - - 3.8372319191694260e-02 -1.2122260034084320e-01 - <_> - - 0 -1 1372 -1.6693899407982826e-02 - - 9.3027323484420776e-02 -6.7262589931488037e-02 - <_> - - 0 -1 1373 -4.4602990965358913e-04 - - -9.7155101597309113e-02 3.2263729721307755e-02 - <_> - - 0 -1 1374 2.7705840766429901e-02 - - -4.5673649758100510e-02 1.3469059765338898e-01 - <_> - - 0 -1 1375 1.4168629604682792e-05 - - -5.1646851003170013e-02 5.7442869991064072e-02 - <_> - - 0 -1 1376 6.5597752109169960e-04 - - 4.1580449789762497e-02 -1.5479899942874908e-01 - <_> - - 0 -1 1377 -1.9950540736317635e-02 - - 1.0158760100603104e-01 -4.1194550693035126e-02 - <_> - - 0 -1 1378 -1.0277380049228668e-01 - - 2.7642831206321716e-01 -2.2232910618185997e-02 - <_> - - 0 -1 1379 -1.1396359652280807e-02 - - -2.9092219471931458e-01 7.6221348717808723e-03 - <_> - - 0 -1 1380 4.2369891889393330e-03 - - 2.8951080515980721e-02 -2.1133390069007874e-01 - <_> - - 0 -1 1381 1.3533539604395628e-03 - - -1.7100410535931587e-02 1.1205810308456421e-01 - <_> - - 0 -1 1382 3.8031381368637085e-01 - - 1.7792930826544762e-02 -3.3087378740310669e-01 - <_> - - 0 -1 1383 -4.9306880100630224e-05 - - 5.7494789361953735e-02 -5.7994779199361801e-02 - <_> - - 0 -1 1384 -2.0659419242292643e-03 - - -2.4288409948348999e-01 2.6420449838042259e-02 - <_> - - 0 -1 1385 -5.7952571660280228e-04 - - 4.3308749794960022e-02 -5.1844529807567596e-02 - <_> - - 0 -1 1386 2.9111439289408736e-05 - - -1.0596740245819092e-01 5.8839380741119385e-02 - <_> - - 0 -1 1387 1.4325099982670508e-05 - - -7.7876992523670197e-02 6.6765457391738892e-02 - <_> - - 0 -1 1388 7.4459682218730450e-04 - - -8.3045527338981628e-02 1.0169909894466400e-01 - <_> - - 0 -1 1389 -2.7282300870865583e-03 - - 7.7897660434246063e-02 -2.5507520884275436e-02 - <_> - - 0 -1 1390 1.5567449852824211e-02 - - 1.0506859980523586e-02 -5.9925341606140137e-01 - <_> - - 0 -1 1391 -6.8032061681151390e-03 - - 2.6317459344863892e-01 -2.7121569961309433e-02 - <_> - - 0 -1 1392 4.7938480973243713e-02 - - 7.4435519054532051e-03 -8.8113451004028320e-01 - <_> - - 0 -1 1393 -1.7394230235368013e-03 - - -1.0975260287523270e-01 5.5294711142778397e-02 - <_> - - 0 -1 1394 2.0128060132265091e-02 - - -2.9149420559406281e-02 2.2172920405864716e-01 - <_> - - 0 -1 1395 -4.3711899779736996e-03 - - -1.2924540042877197e-01 1.5891730785369873e-02 - <_> - - 0 -1 1396 1.0657859966158867e-02 - - -2.6825129985809326e-02 2.2967310249805450e-01 - <_> - - 0 -1 1397 -2.5562180206179619e-02 - - -9.6018558740615845e-01 2.4847979657351971e-03 - <_> - - 0 -1 1398 1.2549740495160222e-03 - - 6.5428301692008972e-02 -9.0715043246746063e-02 - <_> - - 0 -1 1399 -3.6583960056304932e-02 - - -8.2619887590408325e-01 9.8219967912882566e-04 - <_> - - 0 -1 1400 -1.0427700355648994e-02 - - 2.0940390229225159e-01 -2.9688650742173195e-02 - <_> - - 0 -1 1401 4.6284540439955890e-04 - - -9.5797866582870483e-02 6.4504817128181458e-02 - <_> - - 0 -1 1402 -1.7270300304517150e-03 - - -1.8250599503517151e-01 4.3564688414335251e-02 - <_> - - 0 -1 1403 -2.0097640808671713e-03 - - 1.7395040392875671e-01 -3.4777939319610596e-02 - <_> - - 0 -1 1404 -1.0565159842371941e-02 - - -6.7046958208084106e-01 9.1460766270756721e-03 - <_> - - 0 -1 1405 3.6083920858800411e-03 - - -4.0318038314580917e-02 1.0652980208396912e-01 - <_> - - 0 -1 1406 -1.0259989649057388e-03 - - -1.4572420716285706e-01 4.2951799929141998e-02 - <_> - - 0 -1 1407 -3.7319560069590807e-03 - - 7.1757651865482330e-02 -2.9140990227460861e-02 - <_> - - 0 -1 1408 1.2519509764388204e-03 - - -7.6744079589843750e-02 8.8873356580734253e-02 - <_> - - 0 -1 1409 -2.6295570656657219e-02 - - -5.4250258207321167e-01 6.4060981385409832e-03 - <_> - - 0 -1 1410 2.1677089855074883e-02 - - 1.4695540070533752e-02 -4.2403239011764526e-01 - <_> - - 0 -1 1411 1.2761490419507027e-02 - - -1.7890950664877892e-02 1.9420540332794189e-01 - <_> - - 0 -1 1412 -2.0567029714584351e-03 - - 6.7716017365455627e-02 -9.1368153691291809e-02 - <_> - - 0 -1 1413 -7.7950339764356613e-03 - - 6.9471307098865509e-02 -3.2636199146509171e-02 - <_> - - 0 -1 1414 1.2084699701517820e-03 - - 3.9306450635194778e-02 -1.9763720035552979e-01 - <_> - - 0 -1 1415 4.1114289313554764e-02 - - -9.3598989769816399e-03 1.9510230422019958e-01 - <_> - - 0 -1 1416 -1.9867620430886745e-03 - - 8.9320957660675049e-02 -7.0197992026805878e-02 - <_> - - 0 -1 1417 4.3194511090405285e-04 - - -7.2992227971553802e-02 8.7222076952457428e-02 - <_> - - 0 -1 1418 -1.2856139801442623e-02 - - -1.9291040301322937e-01 3.7453301250934601e-02 - <_> - - 0 -1 1419 3.3460529521107674e-03 - - -1.7367599532008171e-02 2.7341571450233459e-01 - <_> - - 0 -1 1420 3.0642180354334414e-04 - - 3.8734178990125656e-02 -1.5396389365196228e-01 - <_> - - 0 -1 1421 1.0412399657070637e-02 - - -2.2793370299041271e-03 4.4056978821754456e-01 - <_> - - 0 -1 1422 2.8117289766669273e-03 - - -1.9140290096402168e-02 2.9534861445426941e-01 - <_> - - 0 -1 1423 5.9893741272389889e-03 - - 5.6822518818080425e-03 -3.9801359176635742e-01 - <_> - - 0 -1 1424 -1.4277939953899477e-05 - - 7.5205951929092407e-02 -7.2355180978775024e-02 - <_> - - 0 -1 1425 2.8138908743858337e-01 - - 3.0617320444434881e-03 -5.3069370985031128e-01 - <_> - - 0 -1 1426 -8.7479073554277420e-03 - - -9.0702220797538757e-02 6.1258301138877869e-02 - <_> - - 0 -1 1427 -5.6720711290836334e-02 - - 1.7737619578838348e-01 -1.7746560275554657e-02 - <_> - - 0 -1 1428 6.8297073245048523e-02 - - -2.3318519815802574e-02 2.7793890237808228e-01 - <_> - - 0 -1 1429 1.2627799808979034e-01 - - 1.2115039862692356e-02 -4.1395869851112366e-01 - <_> - - 0 -1 1430 6.1351219192147255e-03 - - 2.9587330296635628e-02 -1.9230470061302185e-01 - <_> - - 0 -1 1431 -1.8394199432805181e-03 - - 1.7592909932136536e-01 -2.5844290852546692e-02 - <_> - - 0 -1 1432 2.9283049516379833e-03 - - 1.1218659579753876e-02 -5.0416141748428345e-01 - <_> - - 0 -1 1433 -6.1085459310561419e-04 - - 8.2549288868904114e-02 -6.5701678395271301e-02 - <_> - - 0 -1 1434 -4.8793861060403287e-04 - - 7.1810998022556305e-02 -7.6354406774044037e-02 - <_> - - 0 -1 1435 8.6069349199533463e-03 - - 4.0774960070848465e-02 -1.1507250368595123e-01 - <_> - - 0 -1 1436 1.4266039943322539e-03 - - -4.1656959801912308e-02 1.6798630356788635e-01 - <_> - - 0 -1 1437 4.8269471153616905e-03 - - 4.0586888790130615e-03 -6.3450187444686890e-01 - <_> - - 0 -1 1438 3.0349730513989925e-04 - - -7.4305862188339233e-02 9.2885307967662811e-02 - <_> - - 0 -1 1439 4.0700649842619896e-03 - - 1.7601199448108673e-02 -1.4042760431766510e-01 - <_> - - 0 -1 1440 1.7230060184374452e-03 - - 6.7328721284866333e-02 -1.1149639636278152e-01 - <_> - - 0 -1 1441 -4.2959861457347870e-02 - - 8.9163742959499359e-02 -5.3549990057945251e-02 - <_> - - 0 -1 1442 -7.6154018752276897e-03 - - 1.1312600225210190e-01 -5.6240588426589966e-02 - <_> - - 0 -1 1443 1.1204009875655174e-02 - - 2.1411050111055374e-02 -3.1488281488418579e-01 - <_> - - 0 -1 1444 -3.5213530063629150e-02 - - -2.0609620213508606e-01 2.8586030006408691e-02 - <_> - - 0 -1 1445 4.5947679318487644e-03 - - -1.7090849578380585e-02 2.2707240283489227e-01 - <_> - - 0 -1 1446 4.5796878635883331e-02 - - -1.3230360113084316e-02 4.3202790617942810e-01 - <_> - - 0 -1 1447 -2.9980540275573730e-03 - - -1.2645569443702698e-01 5.0367150455713272e-02 - <_> - - 0 -1 1448 -5.3378548473119736e-03 - - 9.5470063388347626e-02 -5.8848761022090912e-02 - <_> - - 0 -1 1449 1.0418590391054749e-03 - - -6.1176940798759460e-02 6.5677382051944733e-02 - <_> - - 0 -1 1450 6.4219138585031033e-04 - - -7.8584067523479462e-02 7.0961080491542816e-02 - <_> - - 0 -1 1451 1.0756379924714565e-03 - - 4.1385240852832794e-02 -1.4342910051345825e-01 - <_> - - 0 -1 1452 -5.4661920294165611e-03 - - 1.2052729725837708e-01 -4.7768119722604752e-02 - <_> - 245 - -8.9815771579742432e-01 - - <_> - - 0 -1 1453 1.4044909738004208e-02 - - -1.1754830181598663e-01 2.9966700077056885e-01 - <_> - - 0 -1 1454 1.3747519915341400e-05 - - -4.0695600211620331e-02 5.3288660943508148e-02 - <_> - - 0 -1 1455 6.1071332311257720e-04 - - -1.5881499648094177e-01 9.3698732554912567e-02 - <_> - - 0 -1 1456 -1.2948609655722976e-03 - - -5.4627988487482071e-02 2.7983199805021286e-02 - <_> - - 0 -1 1457 3.4624651074409485e-01 - - 2.6321019977331161e-02 -1.4812429687500000e+04 - <_> - - 0 -1 1458 -3.8160590920597315e-03 - - 2.4088940024375916e-01 -2.9296329244971275e-02 - <_> - - 0 -1 1459 3.4190680831670761e-02 - - -2.7402290143072605e-03 -3.1396430664062500e+03 - <_> - - 0 -1 1460 1.1889369925484061e-03 - - -6.6801503300666809e-02 1.2544539570808411e-01 - <_> - - 0 -1 1461 -1.1160460300743580e-02 - - 1.4045539498329163e-01 -8.2512803375720978e-02 - <_> - - 0 -1 1462 1.5963950427249074e-03 - - 6.3538387417793274e-02 -1.7245189845561981e-01 - <_> - - 0 -1 1463 1.0270989732816815e-03 - - 8.7721683084964752e-02 -1.2988109886646271e-01 - <_> - - 0 -1 1464 3.6547291092574596e-03 - - -9.1982476413249969e-02 1.1752050369977951e-01 - <_> - - 0 -1 1465 -1.7952709458768368e-03 - - 1.4286880195140839e-01 -7.6801367104053497e-02 - <_> - - 0 -1 1466 -6.8708707112818956e-04 - - -1.3375990092754364e-01 6.5970778465270996e-02 - <_> - - 0 -1 1467 2.2609028965234756e-03 - - 3.1525388360023499e-02 -2.9333940148353577e-01 - <_> - - 0 -1 1468 -7.9880550038069487e-04 - - 9.2652402818202972e-02 -4.8865720629692078e-02 - <_> - - 0 -1 1469 -1.4205630123615265e-01 - - 2.9974219202995300e-01 -3.1955420970916748e-02 - <_> - - 0 -1 1470 -2.6552429422736168e-02 - - 9.3852818012237549e-02 -5.9430178254842758e-02 - <_> - - 0 -1 1471 -1.3033810071647167e-02 - - -2.1567200124263763e-01 4.3825730681419373e-02 - <_> - - 0 -1 1472 1.5498420223593712e-02 - - -1.4112919569015503e-02 1.0027839988470078e-01 - <_> - - 0 -1 1473 -2.1014609374105930e-03 - - 1.6404679417610168e-01 -6.6425412893295288e-02 - <_> - - 0 -1 1474 9.5388311892747879e-03 - - 3.8093499839305878e-02 -2.9983720183372498e-01 - <_> - - 0 -1 1475 -1.5687920385971665e-03 - - 2.3949630558490753e-01 -4.6231910586357117e-02 - <_> - - 0 -1 1476 4.2190421372652054e-03 - - -4.4786229729652405e-02 2.0811119675636292e-01 - <_> - - 0 -1 1477 -3.0952331144362688e-04 - - -1.2582519650459290e-01 8.1964462995529175e-02 - <_> - - 0 -1 1478 4.6312180347740650e-04 - - -9.6806809306144714e-02 9.4297870993614197e-02 - <_> - - 0 -1 1479 2.4860999546945095e-03 - - 5.5631000548601151e-02 -1.5159459412097931e-01 - <_> - - 0 -1 1480 -5.3660441190004349e-03 - - -2.8408879041671753e-01 2.7606539428234100e-02 - <_> - - 0 -1 1481 -1.3755810214206576e-03 - - 2.1815380454063416e-01 -3.9356950670480728e-02 - <_> - - 0 -1 1482 4.6460707671940327e-03 - - 2.5740889832377434e-02 -2.4686050415039062e-01 - <_> - - 0 -1 1483 6.6427360288798809e-03 - - -5.2207160741090775e-02 1.5937830507755280e-01 - <_> - - 0 -1 1484 -8.5125081241130829e-03 - - -5.1953881978988647e-01 5.7587879709899426e-03 - <_> - - 0 -1 1485 -1.0186510160565376e-02 - - -4.9416080117225647e-01 1.4378200285136700e-02 - <_> - - 0 -1 1486 3.3871911466121674e-02 - - -2.1367419511079788e-02 3.4267479181289673e-01 - <_> - - 0 -1 1487 -1.2628670083358884e-03 - - 8.1579618155956268e-02 -8.5091993212699890e-02 - <_> - - 0 -1 1488 5.8080098824575543e-04 - - 4.0864091366529465e-02 -1.9041730463504791e-01 - <_> - - 0 -1 1489 -1.5919590368866920e-03 - - 2.1132859587669373e-01 -3.2383318990468979e-02 - <_> - - 0 -1 1490 1.9183800322934985e-03 - - 3.5422440618276596e-02 -1.2954640388488770e-01 - <_> - - 0 -1 1491 -3.3837689552456141e-03 - - -3.9200991392135620e-01 1.7284810543060303e-02 - <_> - - 0 -1 1492 -4.4958260841667652e-03 - - -6.5269482135772705e-01 8.9287841692566872e-03 - <_> - - 0 -1 1493 1.1123440228402615e-02 - - -4.9451079219579697e-02 1.3990929722785950e-01 - <_> - - 0 -1 1494 -2.1186670288443565e-02 - - 1.4022010564804077e-01 -3.2561041414737701e-02 - <_> - - 0 -1 1495 4.7813180834054947e-02 - - 1.7437700182199478e-02 -4.0824559330940247e-01 - <_> - - 0 -1 1496 4.3155639432370663e-03 - - 1.9035950303077698e-02 -1.5336640179157257e-01 - <_> - - 0 -1 1497 4.8115472309291363e-03 - - 3.1786568462848663e-02 -2.2056590020656586e-01 - <_> - - 0 -1 1498 9.8020406439900398e-03 - - -3.6895118653774261e-02 2.3310080170631409e-01 - <_> - - 0 -1 1499 -3.0184770002961159e-03 - - 1.5916270017623901e-01 -5.2995648235082626e-02 - <_> - - 0 -1 1500 2.6722450274974108e-03 - - -7.5243122875690460e-02 5.0269700586795807e-02 - <_> - - 0 -1 1501 1.2502169702202082e-03 - - -5.1091250032186508e-02 1.4441229403018951e-01 - <_> - - 0 -1 1502 1.4972910284996033e-03 - - 2.6812529191374779e-02 -1.6315759718418121e-01 - <_> - - 0 -1 1503 -2.8825521003454924e-03 - - -4.1588610410690308e-01 1.8284549936652184e-02 - <_> - - 0 -1 1504 -2.2845040075480938e-03 - - 1.1726160347461700e-01 -5.0136148929595947e-02 - <_> - - 0 -1 1505 5.2596088498830795e-03 - - 2.4950170889496803e-02 -3.0131611227989197e-01 - <_> - - 0 -1 1506 1.5561799518764019e-03 - - -1.0462810099124908e-01 7.1823246777057648e-02 - <_> - - 0 -1 1507 -2.5602891109883785e-03 - - 1.6153579950332642e-01 -4.4245410710573196e-02 - <_> - - 0 -1 1508 8.9566741371527314e-04 - - 2.8113519772887230e-02 -8.6903810501098633e-02 - <_> - - 0 -1 1509 1.3984919860376976e-05 - - -1.0637009888887405e-01 6.4237020909786224e-02 - <_> - - 0 -1 1510 -3.0262451036833227e-04 - - -1.6569760441780090e-01 5.9751808643341064e-02 - <_> - - 0 -1 1511 -2.5108361151069403e-03 - - 8.8912777602672577e-02 -7.2652541100978851e-02 - <_> - - 0 -1 1512 1.9389450317248702e-03 - - 2.9152520000934601e-02 -9.1866388916969299e-02 - <_> - - 0 -1 1513 7.3843088466674089e-04 - - -4.2057931423187256e-02 1.5995030105113983e-01 - <_> - - 0 -1 1514 -3.6558669526129961e-03 - - -9.5142677426338196e-02 1.7093049362301826e-02 - <_> - - 0 -1 1515 2.6905719190835953e-02 - - -5.1677141338586807e-02 1.2445399910211563e-01 - <_> - - 0 -1 1516 1.5600489859934896e-04 - - 4.8049561679363251e-02 -1.0828830301761627e-01 - <_> - - 0 -1 1517 -2.9363629437284544e-05 - - 7.7676616609096527e-02 -8.3602227270603180e-02 - <_> - - 0 -1 1518 -1.3152750208973885e-02 - - -5.3625142574310303e-01 9.8441755399107933e-03 - <_> - - 0 -1 1519 1.2583429925143719e-03 - - 3.6697480827569962e-02 -1.9785030186176300e-01 - <_> - - 0 -1 1520 -3.5280231386423111e-02 - - 2.8760561347007751e-01 -2.4332510307431221e-02 - <_> - - 0 -1 1521 1.0623750276863575e-03 - - -6.4936116337776184e-02 1.0775420069694519e-01 - <_> - - 0 -1 1522 1.3485189811035525e-05 - - -9.1917447745800018e-02 5.9476271271705627e-02 - <_> - - 0 -1 1523 2.6417789049446583e-03 - - 5.2622731775045395e-02 -1.3380350172519684e-01 - <_> - - 0 -1 1524 -4.2458991520106792e-03 - - 1.5622630715370178e-01 -3.9715219289064407e-02 - <_> - - 0 -1 1525 -1.2747449800372124e-02 - - -3.9632159471511841e-01 1.6892410814762115e-02 - <_> - - 0 -1 1526 5.0329609075561166e-04 - - -4.6448979526758194e-02 8.7452828884124756e-02 - <_> - - 0 -1 1527 -1.3987520105729345e-05 - - 9.0819023549556732e-02 -8.3491086959838867e-02 - <_> - - 0 -1 1528 3.3579400042071939e-04 - - 3.0231660231947899e-02 -8.4349960088729858e-02 - <_> - - 0 -1 1529 5.5269408039748669e-03 - - -7.3858089745044708e-02 8.5668817162513733e-02 - <_> - - 0 -1 1530 -1.7237789870705456e-04 - - -7.0609577000141144e-02 3.4158289432525635e-02 - <_> - - 0 -1 1531 -2.7978639118373394e-03 - - 1.9515010714530945e-01 -3.3844988793134689e-02 - <_> - - 0 -1 1532 -1.4513960195472464e-05 - - 4.3614171445369720e-02 -3.4747149795293808e-02 - <_> - - 0 -1 1533 6.4136547734960914e-04 - - 4.0988758206367493e-02 -1.7332290112972260e-01 - <_> - - 0 -1 1534 -9.5870634540915489e-03 - - 1.4798779785633087e-01 -3.3517260104417801e-02 - <_> - - 0 -1 1535 -1.6748090274631977e-03 - - -1.8289859592914581e-01 3.4056250005960464e-02 - <_> - - 0 -1 1536 -3.5602890420705080e-04 - - -9.0450271964073181e-02 2.9689440503716469e-02 - <_> - - 0 -1 1537 -2.5170370936393738e-03 - - 3.3267921209335327e-01 -1.9150910899043083e-02 - <_> - - 0 -1 1538 3.6662290804088116e-03 - - 2.0794689655303955e-02 -1.1462289839982986e-01 - <_> - - 0 -1 1539 3.3933550585061312e-03 - - -2.0670190453529358e-02 2.8567948937416077e-01 - <_> - - 0 -1 1540 -9.3351822579279542e-04 - - 8.7735213339328766e-02 -4.1667710989713669e-02 - <_> - - 0 -1 1541 1.5587939880788326e-02 - - 3.2399158924818039e-02 -1.9780139625072479e-01 - <_> - - 0 -1 1542 3.8261379813775420e-04 - - -8.8336393237113953e-02 5.5809110403060913e-02 - <_> - - 0 -1 1543 1.2352470075711608e-03 - - 3.4270290285348892e-02 -1.7848719656467438e-01 - <_> - - 0 -1 1544 7.5910572195425630e-04 - - -5.5778361856937408e-02 6.1857070773839951e-02 - <_> - - 0 -1 1545 2.8413049876689911e-03 - - -2.7083519846200943e-02 2.3203529417514801e-01 - <_> - - 0 -1 1546 -1.4313060091808438e-05 - - 6.6050931811332703e-02 -5.9752069413661957e-02 - <_> - - 0 -1 1547 -3.6771351005882025e-03 - - -4.0045088529586792e-01 1.4387479983270168e-02 - <_> - - 0 -1 1548 -2.5888609234243631e-03 - - 1.1220999807119370e-01 -4.7137189656496048e-02 - <_> - - 0 -1 1549 1.1471610050648451e-03 - - 4.7330550849437714e-02 -1.3199129700660706e-01 - <_> - - 0 -1 1550 1.6501640900969505e-02 - - -3.4597828984260559e-02 9.5769941806793213e-02 - <_> - - 0 -1 1551 3.3293468877673149e-03 - - 4.1258718818426132e-02 -1.6558709740638733e-01 - <_> - - 0 -1 1552 1.7063439590856433e-03 - - -3.2584629952907562e-02 2.7619439363479614e-01 - <_> - - 0 -1 1553 -2.7118679136037827e-03 - - 8.9609041810035706e-02 -6.4858056604862213e-02 - <_> - - 0 -1 1554 -4.1943859308958054e-02 - - -5.3329932689666748e-01 6.9506950676441193e-03 - <_> - - 0 -1 1555 2.2219200618565083e-03 - - -5.6344181299209595e-02 1.0510399937629700e-01 - <_> - - 0 -1 1556 4.4396471232175827e-02 - - 8.1383727956563234e-04 -1.0001629590988159e+00 - <_> - - 0 -1 1557 -6.6766492091119289e-03 - - -1.4048320055007935e-01 4.3647080659866333e-02 - <_> - - 0 -1 1558 -1.4053310267627239e-02 - - -7.8012561798095703e-01 2.0627910271286964e-03 - <_> - - 0 -1 1559 2.8836489946115762e-05 - - -6.9865100085735321e-02 8.1550262868404388e-02 - <_> - - 0 -1 1560 2.3246949538588524e-02 - - -1.0230179876089096e-02 2.2243100404739380e-01 - <_> - - 0 -1 1561 -1.8424650654196739e-02 - - -2.1308340132236481e-01 3.0248960480093956e-02 - <_> - - 0 -1 1562 -1.1484029702842236e-02 - - 1.9427800178527832e-01 -3.0198210850358009e-02 - <_> - - 0 -1 1563 -1.1278050020337105e-02 - - -1.8280689418315887e-01 3.2126009464263916e-02 - <_> - - 0 -1 1564 8.0079799517989159e-03 - - -2.2145880386233330e-02 2.8033518791198730e-01 - <_> - - 0 -1 1565 2.4508950300514698e-03 - - -3.1573358923196793e-02 1.9028620421886444e-01 - <_> - - 0 -1 1566 -7.3367758886888623e-04 - - 6.2882833182811737e-02 -2.9410809278488159e-02 - <_> - - 0 -1 1567 4.7427918761968613e-03 - - 1.8659200519323349e-02 -3.6193120479583740e-01 - <_> - - 0 -1 1568 -1.5166309662163258e-02 - - -3.0083620548248291e-01 5.1251458935439587e-03 - <_> - - 0 -1 1569 2.0500000100582838e-03 - - -3.3869780600070953e-02 1.6676980257034302e-01 - <_> - - 0 -1 1570 8.9623825624585152e-03 - - 9.9547952413558960e-03 -1.3321259617805481e-01 - <_> - - 0 -1 1571 5.8658542111515999e-03 - - 2.8031339868903160e-02 -2.1094280481338501e-01 - <_> - - 0 -1 1572 7.1393670514225960e-03 - - -3.3273868262767792e-02 9.2609196901321411e-02 - <_> - - 0 -1 1573 -2.3449780419468880e-03 - - 9.6021108329296112e-02 -8.1295557320117950e-02 - <_> - - 0 -1 1574 6.0673272237181664e-03 - - -3.7160739302635193e-02 5.9563819319009781e-02 - <_> - - 0 -1 1575 -7.9464316368103027e-03 - - 1.2790870666503906e-01 -6.0662470757961273e-02 - <_> - - 0 -1 1576 6.3600740395486355e-04 - - 2.4837940931320190e-02 -1.1699199676513672e-01 - <_> - - 0 -1 1577 -5.9671682538464665e-04 - - -1.7579829692840576e-01 3.9644010365009308e-02 - <_> - - 0 -1 1578 3.8733381032943726e-01 - - 1.2454539537429810e-02 -4.6469339728355408e-01 - <_> - - 0 -1 1579 2.0961730182170868e-01 - - 8.1857265904545784e-03 -6.0814487934112549e-01 - <_> - - 0 -1 1580 -3.6388849839568138e-03 - - -1.9478240609169006e-01 2.6340700685977936e-02 - <_> - - 0 -1 1581 -3.9718127809464931e-03 - - 2.7739891409873962e-01 -2.2029049694538116e-02 - <_> - - 0 -1 1582 -8.7379878095816821e-05 - - 3.6866988986730576e-02 -3.4307479858398438e-02 - <_> - - 0 -1 1583 -4.9215141683816910e-02 - - -4.5262241363525391e-01 1.2579060159623623e-02 - <_> - - 0 -1 1584 -1.6017559682950377e-03 - - 2.0021310448646545e-01 -4.3042439967393875e-02 - <_> - - 0 -1 1585 -1.4037380424269941e-05 - - 7.3363706469535828e-02 -7.9242199659347534e-02 - <_> - - 0 -1 1586 2.0111119747161865e-01 - - 7.1724099107086658e-03 -3.6252960562705994e-01 - <_> - - 0 -1 1587 1.1730849510058761e-03 - - 4.5483089983463287e-02 -1.2364199757575989e-01 - <_> - - 0 -1 1588 -4.1541741666151211e-05 - - 5.3658191114664078e-02 -5.7738419622182846e-02 - <_> - - 0 -1 1589 3.6186390207149088e-04 - - -8.9843407273292542e-02 7.6897308230400085e-02 - <_> - - 0 -1 1590 -5.7938909158110619e-03 - - -1.3961860537528992e-01 3.0140429735183716e-02 - <_> - - 0 -1 1591 -9.3461759388446808e-04 - - 1.3507390022277832e-01 -4.6672869473695755e-02 - <_> - - 0 -1 1592 4.0281258523464203e-02 - - 5.6996531784534454e-03 -5.3407847881317139e-01 - <_> - - 0 -1 1593 -2.3343730717897415e-02 - - -5.6592631340026855e-01 9.9596958607435226e-03 - <_> - - 0 -1 1594 1.0834979824721813e-02 - - -2.0727390423417091e-02 1.3920789957046509e-01 - <_> - - 0 -1 1595 -1.0692279785871506e-02 - - -3.9034500718116760e-01 1.4858629554510117e-02 - <_> - - 0 -1 1596 -3.7577420007437468e-03 - - 7.2709776461124420e-02 -5.5485241115093231e-02 - <_> - - 0 -1 1597 4.8496359959244728e-03 - - -4.4144079089164734e-02 1.4520399272441864e-01 - <_> - - 0 -1 1598 -2.0216009579598904e-03 - - -1.2228240072727203e-01 1.9589329138398170e-02 - <_> - - 0 -1 1599 -3.0792229808866978e-03 - - -1.3739609718322754e-01 4.4269159436225891e-02 - <_> - - 0 -1 1600 -3.0445810407400131e-02 - - 1.0403379797935486e-01 -6.3097096979618073e-02 - <_> - - 0 -1 1601 3.2141059637069702e-02 - - -3.4690480679273605e-02 1.9732339680194855e-01 - <_> - - 0 -1 1602 1.0678219841793180e-03 - - 3.1145870685577393e-02 -7.4491903185844421e-02 - <_> - - 0 -1 1603 5.7594738900661469e-02 - - -2.1155780181288719e-02 2.7825739979743958e-01 - <_> - - 0 -1 1604 -4.3557130265980959e-04 - - 7.0562250912189484e-02 -4.3941300362348557e-02 - <_> - - 0 -1 1605 2.6335280854254961e-03 - - 3.4343041479587555e-02 -1.9728440046310425e-01 - <_> - - 0 -1 1606 -1.8992539844475687e-04 - - 3.8183588534593582e-02 -3.9899230003356934e-02 - <_> - - 0 -1 1607 2.3401959333568811e-03 - - 4.3499860912561417e-02 -1.4296689629554749e-01 - <_> - - 0 -1 1608 2.2936260327696800e-02 - - -4.5327339321374893e-02 9.6657410264015198e-02 - <_> - - 0 -1 1609 -9.9645974114537239e-04 - - -1.3013899326324463e-01 4.2947601526975632e-02 - <_> - - 0 -1 1610 -1.6800489975139499e-03 - - 1.2129139900207520e-01 -4.8279300332069397e-02 - <_> - - 0 -1 1611 1.4437539903155994e-05 - - -7.6120197772979736e-02 8.3246052265167236e-02 - <_> - - 0 -1 1612 -2.4843189865350723e-02 - - -1.3380190730094910e-01 1.3220779597759247e-02 - <_> - - 0 -1 1613 -1.0164140257984400e-03 - - 1.0272929817438126e-01 -7.6802343130111694e-02 - <_> - - 0 -1 1614 -4.1430609417147934e-04 - - -1.1245259642601013e-01 3.0514910817146301e-02 - <_> - - 0 -1 1615 -6.7945162300020456e-04 - - -1.6325150430202484e-01 3.3536169677972794e-02 - <_> - - 0 -1 1616 1.9495520740747452e-02 - - 5.7650068774819374e-03 -4.5265421271324158e-01 - <_> - - 0 -1 1617 -5.3661768324673176e-03 - - 9.9718101322650909e-02 -5.6515909731388092e-02 - <_> - - 0 -1 1618 5.6726497132331133e-04 - - -6.0869559645652771e-02 7.9314343631267548e-02 - <_> - - 0 -1 1619 1.3020439445972443e-01 - - 8.3379819989204407e-03 -6.4657479524612427e-01 - <_> - - 0 -1 1620 -1.5517289936542511e-01 - - -1.9947460293769836e-01 2.8714579530060291e-03 - <_> - - 0 -1 1621 -1.0103389620780945e-02 - - -5.5504488945007324e-01 9.4422968104481697e-03 - <_> - - 0 -1 1622 -5.3147180005908012e-04 - - -1.1538010090589523e-01 2.5066599249839783e-02 - <_> - - 0 -1 1623 2.7250559069216251e-03 - - -3.1389288604259491e-02 1.6994899511337280e-01 - <_> - - 0 -1 1624 5.7027460570679978e-05 - - -5.3073558956384659e-02 5.3962681442499161e-02 - <_> - - 0 -1 1625 -1.5532029792666435e-02 - - 7.9827189445495605e-02 -6.7680947482585907e-02 - <_> - - 0 -1 1626 8.5362847894430161e-03 - - -7.0293392054736614e-03 3.0805149674415588e-01 - <_> - - 0 -1 1627 -3.7575151509372517e-05 - - 8.4663920104503632e-02 -7.6399482786655426e-02 - <_> - - 0 -1 1628 -8.6169335991144180e-03 - - -2.5099471211433411e-01 6.7693921737372875e-03 - <_> - - 0 -1 1629 -4.6231658197939396e-03 - - -2.1756580471992493e-01 2.6302969083189964e-02 - <_> - - 0 -1 1630 -3.0669190455228090e-03 - - 4.9040269106626511e-02 -2.9388900846242905e-02 - <_> - - 0 -1 1631 -2.0297299488447607e-04 - - 7.3129378259181976e-02 -7.3650099337100983e-02 - <_> - - 0 -1 1632 3.7411341327242553e-04 - - -5.7002428919076920e-02 1.1576510220766068e-01 - <_> - - 0 -1 1633 -3.6344649270176888e-03 - - -1.2033560127019882e-01 5.1267258822917938e-02 - <_> - - 0 -1 1634 -4.1708979755640030e-02 - - 1.7255930602550507e-01 -2.5525050237774849e-02 - <_> - - 0 -1 1635 -3.8403399288654327e-02 - - -5.6570559740066528e-01 9.7671225666999817e-03 - <_> - - 0 -1 1636 4.1329801082611084e-02 - - 1.8378839595243335e-03 -7.4326777458190918e-01 - <_> - - 0 -1 1637 5.1363147795200348e-03 - - -3.5778369754552841e-02 1.5663790702819824e-01 - <_> - - 0 -1 1638 -4.3387200683355331e-02 - - -7.4183559417724609e-01 7.4417991563677788e-03 - <_> - - 0 -1 1639 -3.9333879947662354e-01 - - -8.0782192945480347e-01 5.0263358280062675e-03 - <_> - - 0 -1 1640 -4.5350207947194576e-03 - - -1.0642389953136444e-01 1.5727840363979340e-02 - <_> - - 0 -1 1641 1.9919529557228088e-02 - - 6.0822288505733013e-03 -8.2916480302810669e-01 - <_> - - 0 -1 1642 2.3730589076876640e-02 - - 6.4080459997057915e-03 -1.6867209970951080e-01 - <_> - - 0 -1 1643 -2.8552979230880737e-02 - - 2.0902900397777557e-01 -2.5401420891284943e-02 - <_> - - 0 -1 1644 -1.0153220035135746e-02 - - -1.7431560158729553e-01 3.2279461622238159e-02 - <_> - - 0 -1 1645 -1.3743219897150993e-02 - - 1.4481510221958160e-01 -3.8015659898519516e-02 - <_> - - 0 -1 1646 -5.0018008798360825e-02 - - 1.2793619930744171e-01 -1.7024690285325050e-02 - <_> - - 0 -1 1647 7.3427949100732803e-03 - - -6.1966661363840103e-02 9.6776783466339111e-02 - <_> - - 0 -1 1648 -2.8415350243449211e-05 - - 3.8222339004278183e-02 -3.4578870981931686e-02 - <_> - - 0 -1 1649 -4.7856881283223629e-03 - - -2.3318560421466827e-01 2.6358589529991150e-02 - <_> - - 0 -1 1650 -2.5914890691637993e-02 - - -3.9864018559455872e-01 5.1441029645502567e-03 - <_> - - 0 -1 1651 -2.9252108652144670e-04 - - 7.1496248245239258e-02 -8.0430403351783752e-02 - <_> - - 0 -1 1652 -1.1403319658711553e-03 - - 5.4625019431114197e-02 -3.8924530148506165e-02 - <_> - - 0 -1 1653 8.4561068797484040e-04 - - 3.3605828881263733e-02 -1.6251370310783386e-01 - <_> - - 0 -1 1654 6.5537020564079285e-02 - - -4.3104059994220734e-02 1.2173459678888321e-01 - <_> - - 0 -1 1655 -1.4268089830875397e-01 - - -3.9792910218238831e-01 1.4490179717540741e-02 - <_> - - 0 -1 1656 -1.9059600308537483e-02 - - 1.4526650309562683e-01 -8.6782136932015419e-03 - <_> - - 0 -1 1657 -1.5515769831836224e-02 - - 1.1133140325546265e-01 -5.3697030991315842e-02 - <_> - - 0 -1 1658 1.3885410130023956e-01 - - -5.0534959882497787e-03 1.6789239645004272e-01 - <_> - - 0 -1 1659 1.7033860087394714e-01 - - 1.0047719813883305e-02 -6.4494568109512329e-01 - <_> - - 0 -1 1660 5.2646450698375702e-02 - - 3.6884329747408628e-03 -1.8775080144405365e-01 - <_> - - 0 -1 1661 -7.9300440847873688e-03 - - -3.2442069053649902e-01 1.6116160899400711e-02 - <_> - - 0 -1 1662 3.1593221426010132e-01 - - -1.2846199795603752e-02 4.5563331246376038e-01 - <_> - - 0 -1 1663 8.8319703936576843e-03 - - 5.2410300821065903e-02 -1.1414919793605804e-01 - <_> - - 0 -1 1664 -1.2973800301551819e-02 - - 2.3786480724811554e-01 -2.0313760265707970e-02 - <_> - - 0 -1 1665 3.0844169668853283e-03 - - 6.0380458831787109e-02 -1.0091140121221542e-01 - <_> - - 0 -1 1666 -2.7839969843626022e-02 - - 1.0084290057420731e-01 -1.0545670054852962e-02 - <_> - - 0 -1 1667 -3.0661900527775288e-03 - - -1.0459470003843307e-01 5.1240298897027969e-02 - <_> - - 0 -1 1668 -8.1280972808599472e-03 - - 1.5106280148029327e-01 -1.9644349813461304e-02 - <_> - - 0 -1 1669 3.8767930120229721e-02 - - 6.2415110878646374e-03 -8.3952087163925171e-01 - <_> - - 0 -1 1670 6.6339358687400818e-02 - - -2.3870199918746948e-02 2.2625799477100372e-01 - <_> - - 0 -1 1671 -2.9363119974732399e-03 - - -1.5040889382362366e-01 3.6693960428237915e-02 - <_> - - 0 -1 1672 -9.2636849731206894e-03 - - 1.2020699679851532e-01 -1.1293319985270500e-02 - <_> - - 0 -1 1673 1.3361490331590176e-02 - - 1.5341799706220627e-02 -3.5258570313453674e-01 - <_> - - 0 -1 1674 4.6068900264799595e-03 - - -4.5361459255218506e-02 5.5542398244142532e-02 - <_> - - 0 -1 1675 5.9639662504196167e-04 - - 3.2120391726493835e-02 -1.7702579498291016e-01 - <_> - - 0 -1 1676 1.5830510528758168e-04 - - 4.2900439351797104e-02 -8.0514959990978241e-02 - <_> - - 0 -1 1677 9.4060867559164762e-04 - - -3.9882160723209381e-02 1.3454659283161163e-01 - <_> - - 0 -1 1678 -3.8463119417428970e-02 - - -1. 1.4261410105973482e-03 - <_> - - 0 -1 1679 1.2119730236008763e-03 - - -1.0469900071620941e-01 6.5710946917533875e-02 - <_> - - 0 -1 1680 -5.8379401452839375e-03 - - 1.4715319871902466e-01 -6.5610289573669434e-02 - <_> - - 0 -1 1681 -1.4856379712000489e-03 - - -1.6367240250110626e-01 3.6001469939947128e-02 - <_> - - 0 -1 1682 -4.6175359748303890e-03 - - 1.8892879784107208e-01 -1.4663389883935452e-02 - <_> - - 0 -1 1683 1.9380920275580138e-04 - - -7.0864766836166382e-02 9.3604557216167450e-02 - <_> - - 0 -1 1684 -2.9661089647561312e-03 - - -6.1803489923477173e-01 8.6903069168329239e-03 - <_> - - 0 -1 1685 1.4307440324046183e-05 - - -9.0512536466121674e-02 5.9804238379001617e-02 - <_> - - 0 -1 1686 1.2180440127849579e-02 - - 2.3737740702927113e-03 -5.6064158678054810e-01 - <_> - - 0 -1 1687 -3.3536320552229881e-03 - - 2.5614398717880249e-01 -2.1437460556626320e-02 - <_> - - 0 -1 1688 -1.2697829864919186e-02 - - 2.7518770098686218e-01 -2.1501349285244942e-02 - <_> - - 0 -1 1689 -1.7751600593328476e-02 - - -4.6445640921592712e-01 1.5054970048367977e-02 - <_> - - 0 -1 1690 4.3673209846019745e-02 - - 3.3700480125844479e-03 -3.1441199779510498e-01 - <_> - - 0 -1 1691 4.5492161065340042e-02 - - 8.5049429908394814e-03 -6.4043509960174561e-01 - <_> - - 0 -1 1692 -1.0141120105981827e-01 - - -1. 1.4608280616812408e-04 - <_> - - 0 -1 1693 -2.7950519695878029e-02 - - 2.3282410204410553e-01 -2.4742539972066879e-02 - <_> - - 0 -1 1694 6.3734117429703474e-04 - - -6.5201878547668457e-02 5.8342281728982925e-02 - <_> - - 0 -1 1695 -3.2297719735652208e-03 - - -1.2013810127973557e-01 4.8295538872480392e-02 - <_> - - 0 -1 1696 -4.7359239310026169e-02 - - -6.5350711345672607e-01 2.3264330811798573e-03 - <_> - - 0 -1 1697 1.8326259450986981e-03 - - -5.5741731077432632e-02 9.5505326986312866e-02 - <_> - 279 - -9.5101702213287354e-01 - - <_> - - 0 -1 1698 6.9287262856960297e-02 - - -1.0325390100479126e-01 3.6703258752822876e-01 - <_> - - 0 -1 1699 -7.8862551599740982e-03 - - -7.5367718935012817e-01 6.1004441231489182e-03 - <_> - - 0 -1 1700 -8.6761467158794403e-02 - - 4.2298769950866699e-01 -4.8861160874366760e-02 - <_> - - 0 -1 1701 -4.6193759888410568e-02 - - 1.2829530239105225e-01 -6.2890656292438507e-02 - <_> - - 0 -1 1702 4.5601249439641833e-04 - - -1.4540119469165802e-01 8.9171208441257477e-02 - <_> - - 0 -1 1703 2.2151950001716614e-01 - - 1.0495079681277275e-02 -1.9372780621051788e-01 - <_> - - 0 -1 1704 -2.8609700166271068e-05 - - 8.9309170842170715e-02 -1.2048160284757614e-01 - <_> - - 0 -1 1705 1.1661860160529613e-02 - - -3.6442179232835770e-02 3.2719528675079346e-01 - <_> - - 0 -1 1706 -3.9292860776185989e-02 - - 2.3638220131397247e-01 -2.1902250126004219e-02 - <_> - - 0 -1 1707 4.7508609713986516e-04 - - -8.2093991339206696e-02 7.0899896323680878e-02 - <_> - - 0 -1 1708 2.7530049905180931e-02 - - -4.6179860830307007e-02 2.2978270053863525e-01 - <_> - - 0 -1 1709 2.4088330566883087e-02 - - 2.5007570162415504e-02 -3.6831110715866089e-01 - <_> - - 0 -1 1710 3.1142881198320538e-05 - - -1.5297169983386993e-01 7.4359253048896790e-02 - <_> - - 0 -1 1711 -3.8976089563220739e-03 - - -1.8000039458274841e-01 5.2392251789569855e-02 - <_> - - 0 -1 1712 -7.5943870469927788e-03 - - -1.9217739999294281e-01 4.8256490379571915e-02 - <_> - - 0 -1 1713 -3.4858959261327982e-03 - - 8.1301920115947723e-02 -6.6110998392105103e-02 - <_> - - 0 -1 1714 -3.5117838531732559e-02 - - -2.6033520698547363e-01 3.9632041007280350e-02 - <_> - - 0 -1 1715 2.2614879906177521e-01 - - -2.9896909371018410e-02 2.8666049242019653e-01 - <_> - - 0 -1 1716 1.9386729598045349e-01 - - -1.4692339755129069e-04 -7.1909208984375000e+03 - <_> - - 0 -1 1717 -4.5231450349092484e-03 - - -7.1015566587448120e-02 2.1436849609017372e-02 - <_> - - 0 -1 1718 -2.9855089262127876e-02 - - 1.1950010061264038e-01 -7.5768560171127319e-02 - <_> - - 0 -1 1719 -7.8530138125643134e-04 - - 1.5392230451107025e-01 -4.3703861534595490e-02 - <_> - - 0 -1 1720 -4.3314939830452204e-05 - - 9.2457972466945648e-02 -9.1111399233341217e-02 - <_> - - 0 -1 1721 9.0954294428229332e-03 - - -2.0682830363512039e-02 7.5521059334278107e-02 - <_> - - 0 -1 1722 -6.4024911262094975e-04 - - -2.0595400035381317e-01 4.3313179165124893e-02 - <_> - - 0 -1 1723 2.1848140750080347e-03 - - -2.3959070444107056e-02 1.3920339941978455e-01 - <_> - - 0 -1 1724 -6.5740908030420542e-04 - - 9.6214868128299713e-02 -8.4607146680355072e-02 - <_> - - 0 -1 1725 -2.6019528741016984e-04 - - -1.3024799525737762e-01 5.1234468817710876e-02 - <_> - - 0 -1 1726 -5.0155790522694588e-03 - - -5.7478731870651245e-01 1.1919369921088219e-02 - <_> - - 0 -1 1727 3.2060540979728103e-04 - - 4.5675579458475113e-02 -1.5236130356788635e-01 - <_> - - 0 -1 1728 8.5811875760555267e-03 - - -3.0357500538229942e-02 2.1575599908828735e-01 - <_> - - 0 -1 1729 1.1925109662115574e-02 - - -2.8248419985175133e-02 1.9682750105857849e-01 - <_> - - 0 -1 1730 -4.7097587957978249e-03 - - 8.2625426352024078e-02 -1.1231990158557892e-01 - <_> - - 0 -1 1731 -1.0695779928937554e-03 - - 3.4612610936164856e-02 -3.4769508987665176e-02 - <_> - - 0 -1 1732 -4.9490150995552540e-03 - - -1.8427060544490814e-01 4.2387481778860092e-02 - <_> - - 0 -1 1733 -6.7667837720364332e-04 - - 9.3548178672790527e-02 -8.7969146668910980e-02 - <_> - - 0 -1 1734 4.9757309257984161e-02 - - 2.7587689459323883e-02 -2.5638130307197571e-01 - <_> - - 0 -1 1735 -1.0812530526891351e-03 - - 1.6654999554157257e-01 -3.7381488829851151e-02 - <_> - - 0 -1 1736 5.0784139893949032e-03 - - 2.1401269361376762e-02 -3.2902011275291443e-01 - <_> - - 0 -1 1737 -1.4780629426240921e-03 - - 5.8206021785736084e-02 -2.8309479355812073e-02 - <_> - - 0 -1 1738 8.3614438772201538e-03 - - -5.0670899450778961e-02 1.6926950216293335e-01 - <_> - - 0 -1 1739 8.0310832709074020e-03 - - 2.3582600057125092e-02 -3.0375048518180847e-01 - <_> - - 0 -1 1740 -2.8671300242422149e-05 - - 7.7157698571681976e-02 -7.8943833708763123e-02 - <_> - - 0 -1 1741 -7.9513173550367355e-03 - - -1.3142600655555725e-01 3.4881640225648880e-02 - <_> - - 0 -1 1742 1.4974420191720128e-03 - - -5.1281169056892395e-02 1.2815970182418823e-01 - <_> - - 0 -1 1743 -2.2107020486146212e-03 - - 7.8908361494541168e-02 -3.5110998898744583e-02 - <_> - - 0 -1 1744 3.3375908969901502e-04 - - -7.3800027370452881e-02 9.0184502303600311e-02 - <_> - - 0 -1 1745 -1.5214539598673582e-03 - - -1.4592529833316803e-01 4.7654949128627777e-02 - <_> - - 0 -1 1746 4.4929070281796157e-04 - - -7.0153526961803436e-02 9.5465831458568573e-02 - <_> - - 0 -1 1747 1.5836360398679972e-03 - - 2.8301160782575607e-02 -1.4393569529056549e-01 - <_> - - 0 -1 1748 -1.6235290095210075e-02 - - 1.8387019634246826e-01 -3.6908861249685287e-02 - <_> - - 0 -1 1749 -3.4098308533430099e-02 - - 1.6756339371204376e-01 -2.5717439129948616e-02 - <_> - - 0 -1 1750 -2.9732889379374683e-04 - - -1.3297170400619507e-01 4.8040248453617096e-02 - <_> - - 0 -1 1751 1.3863020285498351e-05 - - -4.4619798660278320e-02 4.9105420708656311e-02 - <_> - - 0 -1 1752 4.7123921103775501e-04 - - 4.3268211185932159e-02 -1.6172820329666138e-01 - <_> - - 0 -1 1753 -4.1129379533231258e-03 - - 2.1532170474529266e-01 -2.2212410345673561e-02 - <_> - - 0 -1 1754 8.4233487723395228e-04 - - -3.9122831076383591e-02 1.6345480084419250e-01 - <_> - - 0 -1 1755 1.3869360554963350e-03 - - 4.0814429521560669e-02 -2.4761269986629486e-01 - <_> - - 0 -1 1756 2.3325090296566486e-03 - - 3.6428030580282211e-02 -1.5850290656089783e-01 - <_> - - 0 -1 1757 9.2067092657089233e-02 - - -3.6511659622192383e-02 9.4252876937389374e-02 - <_> - - 0 -1 1758 -6.6990442574024200e-02 - - 3.1247970461845398e-01 -2.1145220845937729e-02 - <_> - - 0 -1 1759 -2.0284320414066315e-01 - - -1.4556419849395752e-01 3.4133061766624451e-02 - <_> - - 0 -1 1760 -1.9777350127696991e-01 - - 2.0860530436038971e-01 -3.0937839299440384e-02 - <_> - - 0 -1 1761 2.9955860227346420e-03 - - 5.1478169858455658e-02 -9.0642452239990234e-02 - <_> - - 0 -1 1762 -1.3588789850473404e-02 - - -1.5979449450969696e-01 4.2713351547718048e-02 - <_> - - 0 -1 1763 -1.0466199601069093e-03 - - 1.0747960209846497e-01 -5.8228868991136551e-02 - <_> - - 0 -1 1764 2.8862239560112357e-04 - - -7.2858572006225586e-02 1.0977680236101151e-01 - <_> - - 0 -1 1765 -2.7921080589294434e-02 - - -2.4890719354152679e-01 8.8059734553098679e-03 - <_> - - 0 -1 1766 -1.1447289958596230e-02 - - 1.5152229368686676e-01 -3.8170240819454193e-02 - <_> - - 0 -1 1767 -3.3761549275368452e-03 - - 1.1309570074081421e-01 -5.5087108165025711e-02 - <_> - - 0 -1 1768 -5.2940822206437588e-03 - - -1.5518580377101898e-01 3.7175498902797699e-02 - <_> - - 0 -1 1769 6.9440458901226521e-04 - - -3.9365228265523911e-02 1.3071919977664948e-01 - <_> - - 0 -1 1770 1.4813370398769621e-05 - - -7.1707822382450104e-02 7.4765637516975403e-02 - <_> - - 0 -1 1771 -1.3590740272775292e-03 - - -1.2917560338973999e-01 4.3069899082183838e-02 - <_> - - 0 -1 1772 6.9750571856275201e-04 - - -4.3258938938379288e-02 1.4512489736080170e-01 - <_> - - 0 -1 1773 -4.6163110528141260e-04 - - 9.1437846422195435e-02 -5.3290210664272308e-02 - <_> - - 0 -1 1774 -3.0486299656331539e-03 - - -2.1486389636993408e-01 2.7408670634031296e-02 - <_> - - 0 -1 1775 -3.3797100186347961e-03 - - 1.0764840245246887e-01 -4.3844230473041534e-02 - <_> - - 0 -1 1776 -8.4170768968760967e-04 - - -1.9803969562053680e-01 2.9308119788765907e-02 - <_> - - 0 -1 1777 1.0257579851895571e-03 - - -7.4067540466785431e-02 1.2488970160484314e-01 - <_> - - 0 -1 1778 8.0574918538331985e-03 - - 2.0815389230847359e-02 -2.6045981049537659e-01 - <_> - - 0 -1 1779 -8.3471642574295402e-04 - - 8.7164878845214844e-02 -6.6393643617630005e-02 - <_> - - 0 -1 1780 -1.9537750631570816e-04 - - 8.0834336578845978e-02 -6.8215869367122650e-02 - <_> - - 0 -1 1781 -6.3116732053458691e-03 - - -7.2064602375030518e-01 3.9312788285315037e-03 - <_> - - 0 -1 1782 1.4718360034748912e-04 - - 5.1508098840713501e-02 -1.0907209664583206e-01 - <_> - - 0 -1 1783 2.8240380343049765e-03 - - -3.5113781690597534e-02 8.6087152361869812e-02 - <_> - - 0 -1 1784 -1.0794559493660927e-03 - - 8.6356408894062042e-02 -6.2143780291080475e-02 - <_> - - 0 -1 1785 4.7946680337190628e-02 - - 1.2823230354115367e-03 -9.1077202558517456e-01 - <_> - - 0 -1 1786 2.9353320132941008e-04 - - -7.4236482381820679e-02 9.5342949032783508e-02 - <_> - - 0 -1 1787 3.4700211137533188e-02 - - 2.1481830626726151e-03 -8.7691652774810791e-01 - <_> - - 0 -1 1788 -2.0402260124683380e-02 - - -4.9989640712738037e-01 9.8876487463712692e-03 - <_> - - 0 -1 1789 1.9776409026235342e-03 - - -4.6828888356685638e-02 5.6408070027828217e-02 - <_> - - 0 -1 1790 -6.9213248789310455e-03 - - -1.9620729982852936e-01 2.7109440416097641e-02 - <_> - - 0 -1 1791 4.3053150177001953e-02 - - -1.6171690076589584e-02 1.1537670344114304e-01 - <_> - - 0 -1 1792 4.0770901250652969e-05 - - -7.2369873523712158e-02 7.8648090362548828e-02 - <_> - - 0 -1 1793 -1.1116759851574898e-02 - - 1.7709450423717499e-01 -2.6758000254631042e-02 - <_> - - 0 -1 1794 2.2260710597038269e-02 - - 4.2804859578609467e-02 -1.3306209444999695e-01 - <_> - - 0 -1 1795 2.2397749125957489e-02 - - -8.4760002791881561e-03 2.0141950249671936e-01 - <_> - - 0 -1 1796 -2.2704310249537230e-03 - - 1.0329409688711166e-01 -5.9588078409433365e-02 - <_> - - 0 -1 1797 8.6120571941137314e-03 - - 4.4897329062223434e-02 -1.5256009995937347e-01 - <_> - - 0 -1 1798 4.2043669964186847e-05 - - -7.5515180826187134e-02 7.4329316616058350e-02 - <_> - - 0 -1 1799 -2.6688739657402039e-02 - - -9.0282207727432251e-01 2.5531589053571224e-03 - <_> - - 0 -1 1800 -1.2111039832234383e-03 - - 8.7331131100654602e-02 -6.1327978968620300e-02 - <_> - - 0 -1 1801 6.6678058356046677e-03 - - 1.2144420295953751e-02 -1.7702829837799072e-01 - <_> - - 0 -1 1802 5.1054819487035275e-03 - - -5.2553549408912659e-02 1.0995060205459595e-01 - <_> - - 0 -1 1803 -4.3119120527990162e-04 - - -1.1329609900712967e-01 2.7260279282927513e-02 - <_> - - 0 -1 1804 9.0407149400562048e-04 - - -7.4957557022571564e-02 7.0602118968963623e-02 - <_> - - 0 -1 1805 -4.2526099085807800e-01 - - -2.2629819810390472e-01 1.2958800420165062e-02 - <_> - - 0 -1 1806 -1.8204950029030442e-03 - - 2.1072770655155182e-01 -2.8397979214787483e-02 - <_> - - 0 -1 1807 1.6079390048980713e-01 - - -1.1575119569897652e-02 4.7614181041717529e-01 - <_> - - 0 -1 1808 1.7258119769394398e-03 - - 4.1094399988651276e-02 -1.4275330305099487e-01 - <_> - - 0 -1 1809 -1.4840350486338139e-03 - - -1.6670119762420654e-01 3.2535050064325333e-02 - <_> - - 0 -1 1810 7.1747507899999619e-03 - - 7.0819728076457977e-02 -8.9106030762195587e-02 - <_> - - 0 -1 1811 -8.2580056041479111e-03 - - 1.0304500162601471e-01 -3.3432789146900177e-02 - <_> - - 0 -1 1812 -6.7563762422651052e-04 - - 9.2545412480831146e-02 -6.2600679695606232e-02 - <_> - - 0 -1 1813 1.5063700266182423e-03 - - 3.4287590533494949e-02 -5.2697051316499710e-02 - <_> - - 0 -1 1814 6.4832060597836971e-03 - - -7.9551890492439270e-02 8.3565287292003632e-02 - <_> - - 0 -1 1815 1.5010650269687176e-02 - - -2.3017060011625290e-02 2.8918200731277466e-01 - <_> - - 0 -1 1816 2.3918910883367062e-03 - - 2.2861290723085403e-02 -2.8804329037666321e-01 - <_> - - 0 -1 1817 1.8441990017890930e-02 - - 5.6940279901027679e-03 -4.0642881393432617e-01 - <_> - - 0 -1 1818 1.5894079580903053e-02 - - 9.7483089193701744e-03 -5.4180818796157837e-01 - <_> - - 0 -1 1819 -6.0511790215969086e-03 - - 5.1702819764614105e-02 -1.8666969612240791e-02 - <_> - - 0 -1 1820 -1.7308069393038750e-02 - - -6.4874321222305298e-01 8.5127726197242737e-03 - <_> - - 0 -1 1821 -3.0910979956388474e-02 - - -3.5174548625946045e-01 1.5809880569577217e-03 - <_> - - 0 -1 1822 -9.6330260857939720e-03 - - 1.6103549301624298e-01 -3.5562090575695038e-02 - <_> - - 0 -1 1823 -3.8023660890758038e-03 - - -1.0701960325241089e-01 2.3216780275106430e-02 - <_> - - 0 -1 1824 -1.1252719908952713e-01 - - -8.6782878637313843e-01 5.9430040419101715e-03 - <_> - - 0 -1 1825 -8.0329097807407379e-02 - - 2.3479300737380981e-01 -2.4581069126725197e-02 - <_> - - 0 -1 1826 -4.8303799703717232e-03 - - -2.0043809711933136e-01 2.9466770589351654e-02 - <_> - - 0 -1 1827 5.9475651942193508e-03 - - -4.1612159460783005e-02 1.0927669703960419e-01 - <_> - - 0 -1 1828 -1.5954700112342834e-01 - - -9.2996472120285034e-01 5.9394179843366146e-03 - <_> - - 0 -1 1829 -6.2117610126733780e-02 - - -1. -9.8518899176269770e-04 - <_> - - 0 -1 1830 -1.6722660511732101e-02 - - 2.0358540117740631e-01 -2.6677429676055908e-02 - <_> - - 0 -1 1831 2.5412259856238961e-04 - - 3.5772711038589478e-02 -1.1497990041971207e-01 - <_> - - 0 -1 1832 -4.4589709490537643e-02 - - -8.2331168651580811e-01 5.8186561800539494e-03 - <_> - - 0 -1 1833 5.0029508769512177e-02 - - 6.5201208926737309e-03 -6.0308629274368286e-01 - <_> - - 0 -1 1834 2.7316421270370483e-01 - - 1.0105229914188385e-02 -4.4744080305099487e-01 - <_> - - 0 -1 1835 1.9679760560393333e-02 - - 7.3466659523546696e-03 -2.7913179993629456e-01 - <_> - - 0 -1 1836 -2.6382820680737495e-02 - - -6.0314857959747314e-01 7.7110212296247482e-03 - <_> - - 0 -1 1837 -6.1990451067686081e-03 - - 1.5202729403972626e-01 -2.0159959793090820e-02 - <_> - - 0 -1 1838 9.0291406959295273e-03 - - -2.3990979418158531e-02 2.4176830053329468e-01 - <_> - - 0 -1 1839 -1.3173219747841358e-02 - - -4.7442790865898132e-01 6.2788990326225758e-03 - <_> - - 0 -1 1840 9.9061578512191772e-03 - - 1.1161520145833492e-02 -5.1541870832443237e-01 - <_> - - 0 -1 1841 9.6910722553730011e-02 - - 1.9756879657506943e-02 -1.1220339685678482e-01 - <_> - - 0 -1 1842 -1.2751290202140808e-01 - - -1.1650139838457108e-01 4.3513149023056030e-02 - <_> - - 0 -1 1843 7.3522380553185940e-03 - - -1.5223789960145950e-02 1.2865990400314331e-01 - <_> - - 0 -1 1844 -8.0287149176001549e-03 - - 1.0930059850215912e-01 -5.2379939705133438e-02 - <_> - - 0 -1 1845 6.0138270258903503e-02 - - 5.8138328604400158e-03 -1.7840869724750519e-01 - <_> - - 0 -1 1846 -2.4024039506912231e-02 - - 1.8859949707984924e-01 -2.9658870771527290e-02 - <_> - - 0 -1 1847 -1.6334449872374535e-02 - - -1.3187359273433685e-01 2.2140020504593849e-02 - <_> - - 0 -1 1848 4.8175701522268355e-05 - - -7.6274849474430084e-02 7.0715323090553284e-02 - <_> - - 0 -1 1849 1.1565199820324779e-03 - - 4.4213209301233292e-02 -1.1717999726533890e-01 - <_> - - 0 -1 1850 2.5506340898573399e-03 - - -3.0667930841445923e-02 1.8196919560432434e-01 - <_> - - 0 -1 1851 -6.5251272171735764e-03 - - -1.1443450301885605e-01 3.5183969885110855e-02 - <_> - - 0 -1 1852 6.6153168678283691e-02 - - -2.7254449203610420e-02 1.9241680204868317e-01 - <_> - - 0 -1 1853 4.2829991434700787e-04 - - -6.3267558813095093e-02 8.3096623420715332e-02 - <_> - - 0 -1 1854 -2.9148950488888659e-05 - - 5.9166900813579559e-02 -9.1467723250389099e-02 - <_> - - 0 -1 1855 1.3398390365182422e-05 - - -6.2772221863269806e-02 7.6751098036766052e-02 - <_> - - 0 -1 1856 -3.1628899159841239e-04 - - 1.0652689635753632e-01 -4.8427011817693710e-02 - <_> - - 0 -1 1857 4.7857520985417068e-04 - - 3.1358771026134491e-02 -1.3498780131340027e-01 - <_> - - 0 -1 1858 5.3419070318341255e-03 - - -5.9767518192529678e-02 9.7649917006492615e-02 - <_> - - 0 -1 1859 -4.8007210716605186e-03 - - 5.7684548199176788e-02 -3.3368781208992004e-02 - <_> - - 0 -1 1860 -2.5623580440878868e-03 - - 8.2448042929172516e-02 -6.7134477198123932e-02 - <_> - - 0 -1 1861 -7.8163482248783112e-04 - - -1.3109140098094940e-01 2.2550739347934723e-02 - <_> - - 0 -1 1862 -5.9796901041409001e-05 - - 7.8017666935920715e-02 -7.2233237326145172e-02 - <_> - - 0 -1 1863 -1.4955470105633140e-03 - - -1.7849470674991608e-01 2.6512440294027328e-02 - <_> - - 0 -1 1864 -1.0731930285692215e-01 - - -5.5978351831436157e-01 7.9387873411178589e-03 - <_> - - 0 -1 1865 -1.1570350266993046e-02 - - 3.2721909880638123e-01 -1.5334350056946278e-02 - <_> - - 0 -1 1866 1.2698080390691757e-03 - - -5.2673868834972382e-02 9.5417343080043793e-02 - <_> - - 0 -1 1867 -2.1792970073875040e-04 - - -6.7746378481388092e-02 3.5121351480484009e-02 - <_> - - 0 -1 1868 2.7424149448052049e-04 - - -7.2451137006282806e-02 6.9099687039852142e-02 - <_> - - 0 -1 1869 -1.4675620150228497e-05 - - 6.1696369200944901e-02 -6.3419573009014130e-02 - <_> - - 0 -1 1870 4.5412341132760048e-03 - - 8.6941216140985489e-03 -5.6155169010162354e-01 - <_> - - 0 -1 1871 -1.7456309869885445e-03 - - 1.2214440107345581e-01 -4.3239079415798187e-02 - <_> - - 0 -1 1872 2.1515421103686094e-03 - - 4.2700000107288361e-02 -1.3580679893493652e-01 - <_> - - 0 -1 1873 2.5772679597139359e-02 - - -6.7501049488782883e-03 2.0923960208892822e-01 - <_> - - 0 -1 1874 -2.2853460162878036e-02 - - -6.3482582569122314e-01 7.7631678432226181e-03 - <_> - - 0 -1 1875 1.0445450246334076e-01 - - 8.2119172438979149e-03 -1.1739929765462875e-01 - <_> - - 0 -1 1876 3.4289199393242598e-03 - - -1.9393250346183777e-02 2.5361278653144836e-01 - <_> - - 0 -1 1877 -4.4450531277107075e-05 - - 3.0491659417748451e-02 -3.3532731235027313e-02 - <_> - - 0 -1 1878 -1.3084859820082784e-03 - - -1.2543289363384247e-01 4.2175199836492538e-02 - <_> - - 0 -1 1879 -8.2920619752258062e-04 - - 8.8702872395515442e-02 -5.9949461370706558e-02 - <_> - - 0 -1 1880 -1.1649610241875052e-03 - - -1.2260919809341431e-01 3.9777249097824097e-02 - <_> - - 0 -1 1881 -1.1792209697887301e-03 - - 4.8803780227899551e-02 -3.1617261469364166e-02 - <_> - - 0 -1 1882 1.4045130228623748e-03 - - -6.8578563630580902e-02 1.0806819796562195e-01 - <_> - - 0 -1 1883 8.1535786390304565e-02 - - 7.5162621214985847e-03 -1.9914560019969940e-01 - <_> - - 0 -1 1884 1.3402649760246277e-01 - - 1.1346439830958843e-02 -4.2387020587921143e-01 - <_> - - 0 -1 1885 5.1846381276845932e-02 - - -2.4805670604109764e-02 1.0611870139837265e-01 - <_> - - 0 -1 1886 2.2436599829234183e-04 - - 4.9879040569067001e-02 -1.0322760045528412e-01 - <_> - - 0 -1 1887 2.0504279434680939e-01 - - 1.2941809836775064e-03 -7.3124569654464722e-01 - <_> - - 0 -1 1888 4.9221020191907883e-02 - - -3.2314330339431763e-02 1.6341570019721985e-01 - <_> - - 0 -1 1889 -2.7643840294331312e-03 - - -7.2709262371063232e-02 2.9063390567898750e-02 - <_> - - 0 -1 1890 1.7601479776203632e-03 - - 7.0655502378940582e-02 -9.9655970931053162e-02 - <_> - - 0 -1 1891 -1.5338409692049026e-02 - - 1.0849429666996002e-01 -6.5918280743062496e-03 - <_> - - 0 -1 1892 1.3629199936985970e-02 - - -3.1854670494794846e-02 1.7387719452381134e-01 - <_> - - 0 -1 1893 -1.4116940292296931e-05 - - 7.0969909429550171e-02 -7.6373629271984100e-02 - <_> - - 0 -1 1894 -1.5539459884166718e-02 - - -2.2922930121421814e-01 2.2228740155696869e-02 - <_> - - 0 -1 1895 9.2819044366478920e-03 - - -4.8776720650494099e-03 2.0902079343795776e-01 - <_> - - 0 -1 1896 -1.4155480130284559e-05 - - 6.7757986485958099e-02 -7.2306759655475616e-02 - <_> - - 0 -1 1897 -8.7379867909476161e-04 - - -1.3424280285835266e-01 3.0613569542765617e-02 - <_> - - 0 -1 1898 -1.0997530072927475e-02 - - 3.0229330062866211e-01 -1.6519390046596527e-02 - <_> - - 0 -1 1899 6.6538681276142597e-03 - - 6.3065579161047935e-03 -6.2725418806076050e-01 - <_> - - 0 -1 1900 -1.3275049859657884e-03 - - -1.7980930209159851e-01 2.7482420206069946e-02 - <_> - - 0 -1 1901 -9.1509369667619467e-04 - - 8.2379557192325592e-02 -4.4698160141706467e-02 - <_> - - 0 -1 1902 3.7874261033721268e-04 - - 3.9099998772144318e-02 -1.2113759666681290e-01 - <_> - - 0 -1 1903 3.1279059476219118e-04 - - -4.0467869490385056e-02 8.0922096967697144e-02 - <_> - - 0 -1 1904 -4.4098051148466766e-04 - - -1.3570870459079742e-01 3.4640021622180939e-02 - <_> - - 0 -1 1905 -2.3545681033283472e-03 - - 1.8316949903964996e-01 -6.5944390371441841e-03 - <_> - - 0 -1 1906 -1.4042760085430928e-05 - - 7.1066640317440033e-02 -7.2712719440460205e-02 - <_> - - 0 -1 1907 -3.4967949613928795e-03 - - 2.8079178929328918e-01 -2.0121440291404724e-02 - <_> - - 0 -1 1908 3.8677681004628539e-05 - - -7.7483072876930237e-02 6.1632208526134491e-02 - <_> - - 0 -1 1909 4.0409551002085209e-03 - - -2.8791289776563644e-02 1.0144700109958649e-01 - <_> - - 0 -1 1910 4.3885988998226821e-04 - - 4.4285491108894348e-02 -1.0667510330677032e-01 - <_> - - 0 -1 1911 2.8847819194197655e-03 - - -3.0110429972410202e-02 1.9770030677318573e-01 - <_> - - 0 -1 1912 -3.6182960029691458e-03 - - -1.5853509306907654e-01 3.1248699873685837e-02 - <_> - - 0 -1 1913 -7.4127241969108582e-02 - - 2.6847139000892639e-01 -7.5118849053978920e-03 - <_> - - 0 -1 1914 -1.7701960168778896e-03 - - 7.0348329842090607e-02 -7.6661907136440277e-02 - <_> - - 0 -1 1915 -2.2964610159397125e-01 - - -1.7674639821052551e-01 2.6304980739951134e-02 - <_> - - 0 -1 1916 -8.4374961443245411e-04 - - 1.2280090153217316e-01 -3.9470311254262924e-02 - <_> - - 0 -1 1917 6.2283687293529510e-04 - - -5.9402100741863251e-02 1.0227580368518829e-01 - <_> - - 0 -1 1918 3.7774170050397515e-04 - - -6.5731868147850037e-02 9.4461776316165924e-02 - <_> - - 0 -1 1919 -9.1600026935338974e-03 - - -2.3604519665241241e-01 8.3174835890531540e-03 - <_> - - 0 -1 1920 -3.9922599680721760e-03 - - -1.6145500540733337e-01 3.2346289604902267e-02 - <_> - - 0 -1 1921 -3.3894251100718975e-03 - - 2.5536310672760010e-01 -1.6282750293612480e-02 - <_> - - 0 -1 1922 2.0170630887150764e-03 - - -3.3730961382389069e-02 1.4327409863471985e-01 - <_> - - 0 -1 1923 6.0314318398013711e-04 - - 2.0838299766182899e-02 -8.0766737461090088e-02 - <_> - - 0 -1 1924 -3.5625399323180318e-04 - - -1.1648300290107727e-01 4.1728250682353973e-02 - <_> - - 0 -1 1925 -2.3485629935748875e-04 - - 5.0236988812685013e-02 -3.5763539373874664e-02 - <_> - - 0 -1 1926 4.1733398102223873e-03 - - 6.2450668774545193e-03 -7.5315088033676147e-01 - <_> - - 0 -1 1927 -1.5104680322110653e-02 - - -3.7117061018943787e-01 3.5868769045919180e-03 - <_> - - 0 -1 1928 -3.3432588679715991e-04 - - 7.3129981756210327e-02 -6.3462227582931519e-02 - <_> - - 0 -1 1929 9.2645268887281418e-04 - - -2.8360379859805107e-02 8.1202872097492218e-02 - <_> - - 0 -1 1930 -1.6456949524581432e-03 - - -1.4563870429992676e-01 3.3951658755540848e-02 - <_> - - 0 -1 1931 -1.2158240424469113e-03 - - 4.5882221311330795e-02 -5.7257469743490219e-02 - <_> - - 0 -1 1932 4.9246400594711304e-03 - - -4.3981380760669708e-02 1.1510019749403000e-01 - <_> - - 0 -1 1933 -6.6806487739086151e-03 - - 7.1484349668025970e-02 -7.7606171369552612e-02 - <_> - - 0 -1 1934 -4.2396718636155128e-03 - - 1.2487599998712540e-01 -4.1228380054235458e-02 - <_> - - 0 -1 1935 5.9024091809988022e-02 - - 8.7620420381426811e-03 -2.3974700272083282e-01 - <_> - - 0 -1 1936 -8.4677420090883970e-04 - - -1.6061230003833771e-01 2.9858700931072235e-02 - <_> - - 0 -1 1937 3.0823849374428391e-04 - - -4.2748618870973587e-02 6.5159931778907776e-02 - <_> - - 0 -1 1938 -1.5910139773041010e-03 - - 1.0174900293350220e-01 -5.2041478455066681e-02 - <_> - - 0 -1 1939 6.5938353538513184e-02 - - -8.7185706943273544e-03 1.2778709828853607e-01 - <_> - - 0 -1 1940 6.9909919984638691e-03 - - 2.1958060562610626e-02 -2.2432990372180939e-01 - <_> - - 0 -1 1941 -3.7245001643896103e-02 - - 1.0239789634943008e-01 -1.2216970324516296e-02 - <_> - - 0 -1 1942 -7.1809038519859314e-02 - - -1.4630299806594849e-01 3.5678751766681671e-02 - <_> - - 0 -1 1943 1.2186600361019373e-03 - - -3.0746009200811386e-02 9.0086430311203003e-02 - <_> - - 0 -1 1944 -1.4185549844114576e-05 - - 7.2184130549430847e-02 -8.0784916877746582e-02 - <_> - - 0 -1 1945 -4.7359269112348557e-02 - - -5.1488220691680908e-02 8.3303246647119522e-03 - <_> - - 0 -1 1946 -9.9122747778892517e-02 - - 7.4836689233779907e-01 -7.0312391035258770e-03 - <_> - - 0 -1 1947 6.5616220235824585e-03 - - 2.9704109765589237e-03 -8.6616927385330200e-01 - <_> - - 0 -1 1948 1.4554029803548474e-05 - - -6.6417336463928223e-02 6.9943219423294067e-02 - <_> - - 0 -1 1949 -1.4783379810978658e-05 - - 4.8168119043111801e-02 -4.5541871339082718e-02 - <_> - - 0 -1 1950 3.4434479312039912e-04 - - 3.9564359933137894e-02 -1.3817049562931061e-01 - <_> - - 0 -1 1951 -1.5220089815557003e-02 - - 5.6425478309392929e-02 -3.1832590699195862e-02 - <_> - - 0 -1 1952 -9.9003070499747992e-04 - - 8.4525726735591888e-02 -6.0871038585901260e-02 - <_> - - 0 -1 1953 5.0106819253414869e-04 - - -7.4269689619541168e-02 7.5144886970520020e-02 - <_> - - 0 -1 1954 2.1565580368041992e-01 - - 1.3532330282032490e-02 -3.6944881081581116e-01 - <_> - - 0 -1 1955 4.6514578163623810e-02 - - -3.2852739095687866e-02 7.5578376650810242e-02 - <_> - - 0 -1 1956 -3.3291958272457123e-02 - - 9.8225638270378113e-02 -8.4359258413314819e-02 - <_> - - 0 -1 1957 -3.7740701436996460e-01 - - -4.0594369173049927e-01 6.7579401656985283e-03 - <_> - - 0 -1 1958 1.3958640396595001e-02 - - 1.4477419666945934e-02 -3.5323330760002136e-01 - <_> - - 0 -1 1959 -1.0354929603636265e-02 - - 4.9957130104303360e-02 -3.3316690474748611e-02 - <_> - - 0 -1 1960 -3.5259810090065002e-01 - - -8.8354581594467163e-01 5.2982778288424015e-03 - <_> - - 0 -1 1961 -2.5497689843177795e-02 - - -5.0059622526168823e-01 3.3401530236005783e-03 - <_> - - 0 -1 1962 -1.3579069636762142e-02 - - -7.9210782051086426e-01 5.2573881112039089e-03 - <_> - - 0 -1 1963 -6.4325397834181786e-03 - - 2.2479079663753510e-01 -1.2490210123360157e-02 - <_> - - 0 -1 1964 1.7743050120770931e-03 - - 3.6416389048099518e-02 -1.2674359977245331e-01 - <_> - - 0 -1 1965 -2.8727769386023283e-03 - - 2.6288139820098877e-01 -1.4163469895720482e-02 - <_> - - 0 -1 1966 9.7850046586245298e-05 - - -6.3954651355743408e-02 8.0631032586097717e-02 - <_> - - 0 -1 1967 1.7374150454998016e-02 - - 2.8990509454160929e-03 -4.2226800322532654e-01 - <_> - - 0 -1 1968 -1.4066740404814482e-03 - - 1.0372389853000641e-01 -4.6474151313304901e-02 - <_> - - 0 -1 1969 -1.6724130138754845e-02 - - -2.8448548913002014e-01 9.2373117804527283e-03 - <_> - - 0 -1 1970 -1.0558520443737507e-02 - - -1.0547369718551636e-01 5.2889660000801086e-02 - <_> - - 0 -1 1971 1.5293300151824951e-01 - - 3.2300320453941822e-03 -4.7545519471168518e-01 - <_> - - 0 -1 1972 7.7029820531606674e-03 - - -6.0984298586845398e-02 8.6567848920822144e-02 - <_> - - 0 -1 1973 1.4633269980549812e-02 - - -1.7254069447517395e-02 7.3769517242908478e-02 - <_> - - 0 -1 1974 -5.9058261103928089e-03 - - 1.0765349864959717e-01 -5.8216858655214310e-02 - <_> - - 0 -1 1975 -8.6052267579361796e-04 - - -2.4705569446086884e-01 3.9832849055528641e-02 - <_> - - 0 -1 1976 1.3982819837110583e-05 - - -6.8481527268886566e-02 7.2419390082359314e-02 - <_> - 292 - -8.8979828357696533e-01 - - <_> - - 0 -1 1977 -2.2767020389437675e-02 - - 3.7855881452560425e-01 -7.4579752981662750e-02 - <_> - - 0 -1 1978 1.3848500326275826e-02 - - -3.8395948708057404e-02 1.5865300595760345e-01 - <_> - - 0 -1 1979 1.6501640900969505e-02 - - -4.0356989949941635e-02 3.1940919160842896e-01 - <_> - - 0 -1 1980 4.9945950508117676e-02 - - 1.3500959612429142e-03 -7.1901618957519531e+01 - <_> - - 0 -1 1981 2.3085280554369092e-04 - - -1.5948350727558136e-01 6.2301728874444962e-02 - <_> - - 0 -1 1982 -3.2616918906569481e-04 - - 1.1485809832811356e-01 -8.2625932991504669e-02 - <_> - - 0 -1 1983 2.0700939930975437e-03 - - 9.9244236946105957e-02 -1.8762749433517456e-01 - <_> - - 0 -1 1984 3.6466990131884813e-03 - - -5.9486821293830872e-02 2.3915329948067665e-02 - <_> - - 0 -1 1985 4.3258240818977356e-01 - - -3.5108299925923347e-03 -8.8022760009765625e+02 - <_> - - 0 -1 1986 -1.5135499835014343e-01 - - 2.1386210620403290e-01 -3.7147529423236847e-02 - <_> - - 0 -1 1987 1.4268080121837556e-05 - - -7.8762777149677277e-02 1.1088649928569794e-01 - <_> - - 0 -1 1988 4.5837109792046249e-04 - - 3.1337808817625046e-02 -1.2781299650669098e-01 - <_> - - 0 -1 1989 8.5760722868144512e-04 - - -1.1430999636650085e-01 8.4779530763626099e-02 - <_> - - 0 -1 1990 -1.3306170003488660e-03 - - 1.2380199879407883e-01 -6.3108362257480621e-02 - <_> - - 0 -1 1991 -7.8581267734989524e-04 - - 1.4474479854106903e-01 -6.6131599247455597e-02 - <_> - - 0 -1 1992 2.9203219339251518e-02 - - 1.5835119411349297e-02 -2.7886340022087097e-01 - <_> - - 0 -1 1993 -3.3595840795896947e-04 - - -1.3980509340763092e-01 5.2156690508127213e-02 - <_> - - 0 -1 1994 -4.9088441301137209e-04 - - -1.6182370483875275e-01 5.2929759025573730e-02 - <_> - - 0 -1 1995 -1.0883460193872452e-01 - - 2.0574440062046051e-01 -4.0060799568891525e-02 - <_> - - 0 -1 1996 -3.5458389669656754e-02 - - 1.0138759762048721e-01 -8.3750143647193909e-02 - <_> - - 0 -1 1997 8.7126181460916996e-04 - - 4.4440608471632004e-02 -1.9689509272575378e-01 - <_> - - 0 -1 1998 -1.3993269763886929e-02 - - -2.2459620237350464e-01 1.2766630388796329e-02 - <_> - - 0 -1 1999 -2.2845380008220673e-03 - - 7.6802432537078857e-02 -9.2134661972522736e-02 - <_> - - 0 -1 2000 -1.0183329693973064e-02 - - 1.1236850172281265e-01 -5.3973980247974396e-02 - <_> - - 0 -1 2001 3.5436619073152542e-03 - - 4.4633179903030396e-02 -1.4774739742279053e-01 - <_> - - 0 -1 2002 2.3777359456289560e-04 - - -8.6299903690814972e-02 5.5821128189563751e-02 - <_> - - 0 -1 2003 1.0005419608205557e-03 - - -3.9257239550352097e-02 1.5329119563102722e-01 - <_> - - 0 -1 2004 6.4915331313386559e-04 - - -4.9939561635255814e-02 7.5440049171447754e-02 - <_> - - 0 -1 2005 -7.5847338885068893e-03 - - -2.4265210330486298e-01 2.5270320475101471e-02 - <_> - - 0 -1 2006 -1.5712540596723557e-02 - - 1.7297010123729706e-01 -3.9057541638612747e-02 - <_> - - 0 -1 2007 -3.9321780204772949e-01 - - -2.5074109435081482e-01 3.5513188689947128e-02 - <_> - - 0 -1 2008 6.4803091809153557e-03 - - 3.5816188901662827e-02 -1.5493710339069366e-01 - <_> - - 0 -1 2009 -3.6928490735590458e-03 - - 6.6010497510433197e-02 -9.1977387666702271e-02 - <_> - - 0 -1 2010 4.0171178989112377e-04 - - -5.3731810301542282e-02 6.2330979853868484e-02 - <_> - - 0 -1 2011 -1.0566849960014224e-03 - - 2.4069379270076752e-01 -3.8379501551389694e-02 - <_> - - 0 -1 2012 -6.2974360771477222e-03 - - -5.5077511072158813e-01 1.1444900184869766e-02 - <_> - - 0 -1 2013 -2.2626901045441628e-03 - - -3.0054908990859985e-01 1.9966229796409607e-02 - <_> - - 0 -1 2014 4.4639740372076631e-04 - - -9.2869967222213745e-02 1.1919409781694412e-01 - <_> - - 0 -1 2015 1.2323829287197441e-04 - - -8.0585919320583344e-02 9.6582867205142975e-02 - <_> - - 0 -1 2016 -4.2977688281098381e-05 - - 5.6325040757656097e-02 -6.1825469136238098e-02 - <_> - - 0 -1 2017 -1.3477250467985868e-03 - - -1.2008170038461685e-01 5.5916771292686462e-02 - <_> - - 0 -1 2018 4.2214780114591122e-04 - - -8.4175691008567810e-02 9.9671080708503723e-02 - <_> - - 0 -1 2019 2.8857209254056215e-03 - - 6.5345473587512970e-02 -1.0931260138750076e-01 - <_> - - 0 -1 2020 3.0309830326586962e-03 - - -2.5247409939765930e-02 1.9884890317916870e-01 - <_> - - 0 -1 2021 -5.3361342288553715e-03 - - 1.0040310025215149e-01 -5.8072179555892944e-02 - <_> - - 0 -1 2022 -3.8242610171437263e-03 - - 1.5898209810256958e-01 -4.2140848934650421e-02 - <_> - - 0 -1 2023 -1.7378249904140830e-03 - - -1.3454620540142059e-01 5.5477790534496307e-02 - <_> - - 0 -1 2024 -1.0192190296947956e-02 - - 1.2067530304193497e-01 -5.3306579589843750e-02 - <_> - - 0 -1 2025 -7.0896078832447529e-03 - - -1.5418629348278046e-01 4.4162388890981674e-02 - <_> - - 0 -1 2026 -2.4648339021950960e-03 - - 1.7080619931221008e-01 -2.7274850755929947e-02 - <_> - - 0 -1 2027 -6.4241851214319468e-04 - - -1.5442839264869690e-01 4.0064170956611633e-02 - <_> - - 0 -1 2028 6.6317862365394831e-04 - - -3.0377250164747238e-02 5.6270759552717209e-02 - <_> - - 0 -1 2029 -8.2941073924303055e-03 - - -4.1811838746070862e-01 1.3492629863321781e-02 - <_> - - 0 -1 2030 -3.6951078800484538e-04 - - 4.8480831086635590e-02 -3.3837471157312393e-02 - <_> - - 0 -1 2031 1.3221809640526772e-03 - - -4.2906221002340317e-02 1.2838859856128693e-01 - <_> - - 0 -1 2032 -1.2671080185100436e-03 - - -1.1043450236320496e-01 2.5441320613026619e-02 - <_> - - 0 -1 2033 2.4836331140249968e-03 - - 3.4706719219684601e-02 -1.8949089944362640e-01 - <_> - - 0 -1 2034 -6.2526516616344452e-02 - - -5.9004527330398560e-01 2.7786649297922850e-03 - <_> - - 0 -1 2035 -1.4897409826517105e-02 - - 1.8752850592136383e-01 -3.3959109336137772e-02 - <_> - - 0 -1 2036 -1.2002790346741676e-02 - - -2.8914290666580200e-01 7.3392977938055992e-03 - <_> - - 0 -1 2037 3.1435370910912752e-03 - - 4.4084388762712479e-02 -1.5315219759941101e-01 - <_> - - 0 -1 2038 -2.4036609102040529e-03 - - 1.1861529946327209e-01 -2.7313409373164177e-02 - <_> - - 0 -1 2039 -3.5791810601949692e-02 - - 1.6680610179901123e-01 -3.5469651222229004e-02 - <_> - - 0 -1 2040 5.7867588475346565e-03 - - 2.2431949153542519e-02 -8.4338746964931488e-02 - <_> - - 0 -1 2041 -2.6954410132020712e-03 - - -3.4904921054840088e-01 1.4700699597597122e-02 - <_> - - 0 -1 2042 6.2262167921289802e-04 - - -4.2427390813827515e-02 1.0650890320539474e-01 - <_> - - 0 -1 2043 -8.7842030916363001e-04 - - 1.3310040533542633e-01 -4.1842449456453323e-02 - <_> - - 0 -1 2044 -2.0373899023979902e-03 - - -2.3306299746036530e-01 1.7812909558415413e-02 - <_> - - 0 -1 2045 1.3666530139744282e-03 - - 2.5180319324135780e-02 -2.1236039698123932e-01 - <_> - - 0 -1 2046 -1.3152270112186670e-03 - - 1.9212719798088074e-01 -4.6617131680250168e-02 - <_> - - 0 -1 2047 1.9801879301667213e-02 - - 1.4901800081133842e-02 -3.5319229960441589e-01 - <_> - - 0 -1 2048 3.1510000117123127e-03 - - -1.2941169552505016e-02 1.4735250174999237e-01 - <_> - - 0 -1 2049 3.5291429609060287e-02 - - 7.3530990630388260e-03 -7.1556198596954346e-01 - <_> - - 0 -1 2050 -2.8649759769905359e-05 - - 3.4785639494657516e-02 -3.3928319811820984e-02 - <_> - - 0 -1 2051 1.2113710399717093e-03 - - -3.5517819225788116e-02 1.3941350579261780e-01 - <_> - - 0 -1 2052 -1.8620840273797512e-03 - - -1.3029609620571136e-01 2.4534810334444046e-02 - <_> - - 0 -1 2053 -2.7619469910860062e-02 - - 1.4360269904136658e-01 -3.4316640347242355e-02 - <_> - - 0 -1 2054 5.0724758766591549e-03 - - 2.0405089482665062e-02 -6.9412447512149811e-02 - <_> - - 0 -1 2055 1.0903120040893555e-02 - - 5.0989679992198944e-02 -1.1491060256958008e-01 - <_> - - 0 -1 2056 -2.7553900144994259e-03 - - 1.9678440690040588e-01 -1.2697969563305378e-02 - <_> - - 0 -1 2057 -1.8694249447435141e-03 - - -2.9915121197700500e-01 1.6838220879435539e-02 - <_> - - 0 -1 2058 1.5511639649048448e-03 - - 2.4750430136919022e-02 -1.0845399647951126e-01 - <_> - - 0 -1 2059 -1.4158929698169231e-02 - - 1.2197340279817581e-01 -4.1165851056575775e-02 - <_> - - 0 -1 2060 -1.2717859819531441e-02 - - -4.3909710645675659e-01 7.9397717490792274e-03 - <_> - - 0 -1 2061 -1.6385139897465706e-03 - - -1.6575939953327179e-01 3.1098280102014542e-02 - <_> - - 0 -1 2062 3.5357510205358267e-04 - - -3.6188390105962753e-02 6.4537517726421356e-02 - <_> - - 0 -1 2063 -1.3709410559386015e-03 - - 1.9694100320339203e-01 -3.0401369556784630e-02 - <_> - - 0 -1 2064 1.2311729602515697e-02 - - 9.1771297156810760e-03 -1.3160559535026550e-01 - <_> - - 0 -1 2065 1.8457289552316070e-03 - - 3.0837250873446465e-02 -1.6602100431919098e-01 - <_> - - 0 -1 2066 -1.5473379753530025e-02 - - 2.5880289077758789e-01 -2.2011399269104004e-02 - <_> - - 0 -1 2067 -2.1259100176393986e-03 - - -1.0968039929866791e-01 4.7188289463520050e-02 - <_> - - 0 -1 2068 -3.1477488577365875e-02 - - 8.7950423359870911e-02 -2.9075659811496735e-02 - <_> - - 0 -1 2069 8.3510661497712135e-03 - - -5.7418391108512878e-02 1.2259429693222046e-01 - <_> - - 0 -1 2070 -1.5261439839377999e-03 - - 5.1226388663053513e-02 -5.6588850915431976e-02 - <_> - - 0 -1 2071 -4.0471060201525688e-03 - - -7.3753368854522705e-01 6.5819500014185905e-03 - <_> - - 0 -1 2072 2.3618470877408981e-03 - - -5.8076798915863037e-02 9.7385376691818237e-02 - <_> - - 0 -1 2073 -5.0288718193769455e-03 - - -4.0696510672569275e-01 1.2450199574232101e-02 - <_> - - 0 -1 2074 -4.5899039832875133e-04 - - -1.1976789683103561e-01 3.0493760481476784e-02 - <_> - - 0 -1 2075 -7.6553300023078918e-03 - - 3.2797640562057495e-01 -1.4679649844765663e-02 - <_> - - 0 -1 2076 3.1651180237531662e-02 - - 9.8373405635356903e-03 -9.9427476525306702e-02 - <_> - - 0 -1 2077 -4.2005829163827002e-04 - - 6.9475196301937103e-02 -6.6317923367023468e-02 - <_> - - 0 -1 2078 -4.3475469574332237e-03 - - -9.2239603400230408e-02 3.7397488951683044e-02 - <_> - - 0 -1 2079 3.5791029222309589e-03 - - -1.9854990765452385e-02 2.4084280431270599e-01 - <_> - - 0 -1 2080 -1.0942749679088593e-02 - - 2.6542368531227112e-01 -1.2423070147633553e-02 - <_> - - 0 -1 2081 3.8771289400756359e-03 - - -5.7885479182004929e-02 1.0133259743452072e-01 - <_> - - 0 -1 2082 5.1080808043479919e-03 - - 4.0216930210590363e-03 -8.9897549152374268e-01 - <_> - - 0 -1 2083 4.7296998673118651e-04 - - 3.9465188980102539e-02 -1.3236129283905029e-01 - <_> - - 0 -1 2084 -8.7365293875336647e-03 - - -8.5640531778335571e-01 6.3242338364943862e-04 - <_> - - 0 -1 2085 -2.3332149721682072e-03 - - -3.0867880582809448e-01 1.7711369320750237e-02 - <_> - - 0 -1 2086 9.1973934322595596e-03 - - 1.2881910428404808e-02 -2.7063271403312683e-01 - <_> - - 0 -1 2087 -9.0592764317989349e-03 - - 3.7111261487007141e-01 -1.5435660257935524e-02 - <_> - - 0 -1 2088 -6.8536121398210526e-03 - - -2.3248560726642609e-01 1.4396419748663902e-02 - <_> - - 0 -1 2089 3.2640730496495962e-03 - - -1.6830140724778175e-02 2.8828591108322144e-01 - <_> - - 0 -1 2090 8.4918318316340446e-04 - - 2.8029309585690498e-02 -1.9904230535030365e-01 - <_> - - 0 -1 2091 -2.1864029113203287e-03 - - 2.0627869665622711e-01 -2.2290140390396118e-02 - <_> - - 0 -1 2092 -4.4997650547884405e-04 - - -1.5903109312057495e-01 4.2944360524415970e-02 - <_> - - 0 -1 2093 2.9121869374648668e-05 - - -6.5282016992568970e-02 7.1159698069095612e-02 - <_> - - 0 -1 2094 4.3467659503221512e-02 - - -1.6959929838776588e-02 1.0998240113258362e-01 - <_> - - 0 -1 2095 -1.1365989921614528e-03 - - -2.2058859467506409e-01 2.3035509511828423e-02 - <_> - - 0 -1 2096 -1.8206920474767685e-02 - - -2.9789340496063232e-01 9.9594965577125549e-03 - <_> - - 0 -1 2097 6.6835589706897736e-02 - - -1.8957259133458138e-02 3.0663791298866272e-01 - <_> - - 0 -1 2098 -1.4330899830383714e-05 - - 5.7081911712884903e-02 -6.5903536975383759e-02 - <_> - - 0 -1 2099 1.4206670457497239e-03 - - -3.8737241178750992e-02 1.2876810133457184e-01 - <_> - - 0 -1 2100 2.7356849750503898e-04 - - -7.6959587633609772e-02 5.7561419904232025e-02 - <_> - - 0 -1 2101 -4.3629730498651043e-05 - - 6.8417556583881378e-02 -7.2743088006973267e-02 - <_> - - 0 -1 2102 2.2442260757088661e-02 - - 1.2906930409371853e-02 -2.7765989303588867e-01 - <_> - - 0 -1 2103 -9.5062162727117538e-03 - - 2.2520409524440765e-01 -2.2552950307726860e-02 - <_> - - 0 -1 2104 1.2153879739344120e-02 - - 1.4640049776062369e-03 -8.2713627815246582e-01 - <_> - - 0 -1 2105 -3.8760809693485498e-03 - - -3.0009371042251587e-01 1.5818350017070770e-02 - <_> - - 0 -1 2106 1.8056180328130722e-02 - - -2.7300639078021049e-02 1.1843930184841156e-01 - <_> - - 0 -1 2107 -1.0198189876973629e-02 - - -4.6742329001426697e-01 1.1439249850809574e-02 - <_> - - 0 -1 2108 -1.8736829515546560e-03 - - 6.1713431030511856e-02 -5.4324761033058167e-02 - <_> - - 0 -1 2109 -1.4160489627101924e-05 - - 6.5854422748088837e-02 -7.1403980255126953e-02 - <_> - - 0 -1 2110 -7.5924489647150040e-04 - - -7.3370590806007385e-02 1.5395210124552250e-02 - <_> - - 0 -1 2111 1.9678730517625809e-02 - - -1.7670389264822006e-02 2.6263308525085449e-01 - <_> - - 0 -1 2112 -1.7821189761161804e-01 - - -5.2703332901000977e-01 9.4334492459893227e-03 - <_> - - 0 -1 2113 1.4515940165438224e-05 - - -6.4707919955253601e-02 6.9548860192298889e-02 - <_> - - 0 -1 2114 -1.4563810545951128e-03 - - 4.2549580335617065e-02 -3.3000539988279343e-02 - <_> - - 0 -1 2115 2.1180020645260811e-02 - - 2.6962980628013611e-02 -1.7822809517383575e-01 - <_> - - 0 -1 2116 7.7891332330182195e-04 - - -5.7932410389184952e-02 7.7026076614856720e-02 - <_> - - 0 -1 2117 -3.8158979732543230e-03 - - 9.7226321697235107e-02 -5.2060168236494064e-02 - <_> - - 0 -1 2118 7.4426521314308047e-04 - - 1.9151100888848305e-02 -9.7902022302150726e-02 - <_> - - 0 -1 2119 -6.9776270538568497e-03 - - 1.1507830023765564e-01 -4.7722190618515015e-02 - <_> - - 0 -1 2120 1.4204400031303521e-05 - - -4.1490320116281509e-02 4.9247849732637405e-02 - <_> - - 0 -1 2121 -5.6304200552403927e-04 - - -1.4389720559120178e-01 3.6801539361476898e-02 - <_> - - 0 -1 2122 2.6648829225450754e-03 - - -6.0111761093139648e-02 9.3297347426414490e-02 - <_> - - 0 -1 2123 -8.8225618004798889e-02 - - -1.7006370425224304e-01 2.9528470709919930e-02 - <_> - - 0 -1 2124 -8.7953936308622360e-03 - - -5.8269548416137695e-01 1.8716199556365609e-03 - <_> - - 0 -1 2125 -1.1649719672277570e-03 - - 1.2489689886569977e-01 -4.3457120656967163e-02 - <_> - - 0 -1 2126 1.3699769624508917e-05 - - -4.2961910367012024e-02 4.4930510222911835e-02 - <_> - - 0 -1 2127 2.8596229385584593e-03 - - 1.4335130341351032e-02 -3.0572828650474548e-01 - <_> - - 0 -1 2128 -2.2674720734357834e-02 - - 4.0617591142654419e-01 -1.0855849832296371e-02 - <_> - - 0 -1 2129 -9.9256280809640884e-03 - - 2.7254319190979004e-01 -1.6158660873770714e-02 - <_> - - 0 -1 2130 5.9502501040697098e-02 - - 4.5848288573324680e-03 -7.3743087053298950e-01 - <_> - - 0 -1 2131 5.1061160862445831e-02 - - 5.0964308902621269e-03 -7.6984941959381104e-01 - <_> - - 0 -1 2132 -1.2472540140151978e-02 - - 8.4497779607772827e-02 -3.3125039190053940e-02 - <_> - - 0 -1 2133 1.4897279907017946e-03 - - 3.6912161856889725e-02 -1.3818310201168060e-01 - <_> - - 0 -1 2134 -2.2147510200738907e-02 - - -1.6144229471683502e-01 9.0466598048806190e-03 - <_> - - 0 -1 2135 9.4495322555303574e-03 - - 4.6972200274467468e-02 -1.0716339945793152e-01 - <_> - - 0 -1 2136 1.9293139921501279e-03 - - -3.4286331385374069e-02 5.2777741104364395e-02 - <_> - - 0 -1 2137 -3.8894641399383545e-01 - - -7.6786720752716064e-01 5.8184252120554447e-03 - <_> - - 0 -1 2138 2.2508520632982254e-02 - - -1.1624289676547050e-02 8.8422507047653198e-02 - <_> - - 0 -1 2139 -2.2605659440159798e-02 - - 2.4461190402507782e-01 -1.7740579321980476e-02 - <_> - - 0 -1 2140 -1.1666050180792809e-02 - - -2.5602799654006958e-01 1.1454549618065357e-02 - <_> - - 0 -1 2141 -2.0710580050945282e-02 - - -5.5883651971817017e-01 7.5737191364169121e-03 - <_> - - 0 -1 2142 7.8827500343322754e-02 - - 3.9148649193521123e-06 -7.5623649358749390e-01 - <_> - - 0 -1 2143 2.3726599290966988e-02 - - -2.3146500810980797e-02 1.9937509298324585e-01 - <_> - - 0 -1 2144 1.2368409661576152e-03 - - 3.8288921117782593e-02 -1.2177640199661255e-01 - <_> - - 0 -1 2145 -1.4358550288307015e-05 - - 6.0658939182758331e-02 -7.3654122650623322e-02 - <_> - - 0 -1 2146 8.7936148047447205e-03 - - -3.3896610140800476e-02 9.5205701887607574e-02 - <_> - - 0 -1 2147 -2.3806949320714921e-04 - - -9.9966533482074738e-02 4.5478440821170807e-02 - <_> - - 0 -1 2148 -8.3054965361952782e-03 - - 1.3420370221138000e-01 -2.5543849915266037e-02 - <_> - - 0 -1 2149 8.1005110405385494e-04 - - 4.0490619838237762e-02 -1.1215209960937500e-01 - <_> - - 0 -1 2150 -1.7238059639930725e-01 - - -5.0442242622375488e-01 8.9577194303274155e-03 - <_> - - 0 -1 2151 2.9706210625590757e-05 - - -7.0957981050014496e-02 6.3416786491870880e-02 - <_> - - 0 -1 2152 -3.5412028431892395e-02 - - -1.7485639452934265e-01 9.6797533333301544e-03 - <_> - - 0 -1 2153 8.2069952040910721e-03 - - -2.8969779610633850e-02 1.6151989996433258e-01 - <_> - - 0 -1 2154 -4.4735260307788849e-03 - - -4.4660449028015137e-01 1.0111720301210880e-02 - <_> - - 0 -1 2155 4.2432491318322718e-04 - - -4.5450739562511444e-02 9.8722547292709351e-02 - <_> - - 0 -1 2156 -9.3795463442802429e-02 - - 4.7356921434402466e-01 -5.7168500497937202e-03 - <_> - - 0 -1 2157 -6.3939332903828472e-05 - - -1.0030250251293182e-01 5.6099571287631989e-02 - <_> - - 0 -1 2158 -5.1775861531496048e-02 - - -8.5062891244888306e-01 2.1091110538691282e-03 - <_> - - 0 -1 2159 2.3427829146385193e-03 - - -6.0702718794345856e-02 8.7300397455692291e-02 - <_> - - 0 -1 2160 -5.5683478713035583e-02 - - -3.6283439397811890e-01 6.0013919137418270e-03 - <_> - - 0 -1 2161 1.9656179472804070e-02 - - -1.5454960055649281e-02 2.9359608888626099e-01 - <_> - - 0 -1 2162 -5.2067539654672146e-03 - - -1.4107729494571686e-01 9.3313539400696754e-03 - <_> - - 0 -1 2163 -8.1932216882705688e-02 - - -7.0356172323226929e-01 6.1017181724309921e-03 - <_> - - 0 -1 2164 -1.0771179944276810e-01 - - 1.2234950065612793e-01 -2.7294529601931572e-02 - <_> - - 0 -1 2165 -4.4263739138841629e-02 - - -4.6973970532417297e-01 1.1172570288181305e-02 - <_> - - 0 -1 2166 -1.1734849773347378e-02 - - 7.9907633364200592e-02 -3.9245810359716415e-02 - <_> - - 0 -1 2167 -4.9447570927441120e-03 - - -1.4253869652748108e-01 3.6019299179315567e-02 - <_> - - 0 -1 2168 -1.2758700177073479e-02 - - 2.1074560284614563e-01 -2.7008490636944771e-02 - <_> - - 0 -1 2169 -2.4229190312325954e-03 - - -1.7348369956016541e-01 2.7011310681700706e-02 - <_> - - 0 -1 2170 1.2762489728629589e-02 - - -4.0995080024003983e-02 1.0026659816503525e-01 - <_> - - 0 -1 2171 -1.9846750423312187e-02 - - -1.7189559340476990e-01 2.7843099087476730e-02 - <_> - - 0 -1 2172 -9.6252951771020889e-03 - - 7.5235731899738312e-02 -6.2477041035890579e-02 - <_> - - 0 -1 2173 1.4421059750020504e-02 - - -4.4746961444616318e-02 1.2761180102825165e-01 - <_> - - 0 -1 2174 -1.7601229250431061e-02 - - -1.8411770462989807e-01 7.5616179965436459e-03 - <_> - - 0 -1 2175 2.6960249524563551e-03 - - 5.1309641450643539e-02 -9.9234290421009064e-02 - <_> - - 0 -1 2176 8.8272113353013992e-03 - - -2.9426699504256248e-02 1.2871199846267700e-01 - <_> - - 0 -1 2177 1.5159220201894641e-03 - - -7.0951983332633972e-02 7.0258103311061859e-02 - <_> - - 0 -1 2178 9.9900282919406891e-02 - - 4.2045200243592262e-03 -2.5636160373687744e-01 - <_> - - 0 -1 2179 -9.0645171701908112e-02 - - -7.3471748828887939e-01 7.1614691987633705e-03 - <_> - - 0 -1 2180 -8.4249622887000442e-04 - - -1.5900529921054840e-01 2.4666419252753258e-02 - <_> - - 0 -1 2181 -3.0089109204709530e-03 - - 2.3173299431800842e-01 -2.1815709769725800e-02 - <_> - - 0 -1 2182 -3.3637441694736481e-02 - - -3.6218351125717163e-01 7.5414488092064857e-03 - <_> - - 0 -1 2183 -2.2824279963970184e-01 - - -5.3426170349121094e-01 8.0225821584463120e-03 - <_> - - 0 -1 2184 1.8216760829091072e-02 - - -1.5583549626171589e-02 1.6877870261669159e-01 - <_> - - 0 -1 2185 3.0790129676461220e-03 - - 2.4512980133295059e-02 -1.9235950708389282e-01 - <_> - - 0 -1 2186 -4.4569619931280613e-03 - - -2.0312610268592834e-01 2.4477139115333557e-02 - <_> - - 0 -1 2187 -1.2145079672336578e-02 - - 5.4033899307250977e-01 -8.7826717644929886e-03 - <_> - - 0 -1 2188 -2.3873759433627129e-02 - - 1.3763800263404846e-01 -1.1732709594070911e-02 - <_> - - 0 -1 2189 -2.7447650209069252e-02 - - -1.6193859279155731e-01 2.8378870338201523e-02 - <_> - - 0 -1 2190 -4.5404389500617981e-02 - - 2.2645190358161926e-01 -2.8770249336957932e-02 - <_> - - 0 -1 2191 1.6533889574930072e-03 - - 3.0014310032129288e-02 -1.5527120232582092e-01 - <_> - - 0 -1 2192 -1.2394280172884464e-02 - - 1.1130840331315994e-01 -2.5827359408140182e-02 - <_> - - 0 -1 2193 1.8719509243965149e-02 - - -1.9343839958310127e-02 2.6074668765068054e-01 - <_> - - 0 -1 2194 -2.9856900218874216e-03 - - -2.8213161230087280e-01 7.8225499019026756e-03 - <_> - - 0 -1 2195 -2.0480990409851074e-02 - - -5.6029498577117920e-01 8.0386884510517120e-03 - <_> - - 0 -1 2196 6.2915110029280186e-03 - - -4.7007601708173752e-02 6.9091297686100006e-02 - <_> - - 0 -1 2197 -1.1142699979245663e-02 - - 2.1556779742240906e-01 -2.0254980772733688e-02 - <_> - - 0 -1 2198 -3.1025360804051161e-03 - - -2.1672689914703369e-01 1.3014920055866241e-02 - <_> - - 0 -1 2199 7.7247130684554577e-03 - - 9.9663622677326202e-03 -4.4809859991073608e-01 - <_> - - 0 -1 2200 -8.8526323437690735e-02 - - 5.4465758800506592e-01 -1.8960989546030760e-03 - <_> - - 0 -1 2201 6.1687689274549484e-02 - - 8.9669581502676010e-03 -5.0003600120544434e-01 - <_> - - 0 -1 2202 1.3722930103540421e-02 - - -1.3184379786252975e-02 2.3204129934310913e-01 - <_> - - 0 -1 2203 -4.9674719572067261e-02 - - -3.9700868725776672e-01 1.1291200295090675e-02 - <_> - - 0 -1 2204 1.4873009640723467e-03 - - -3.7490010261535645e-02 1.4988760650157928e-01 - <_> - - 0 -1 2205 1.4871370512992144e-03 - - 2.5183940306305885e-02 -1.8258319795131683e-01 - <_> - - 0 -1 2206 -4.9300859682261944e-03 - - 2.3329930007457733e-01 -2.0209580659866333e-02 - <_> - - 0 -1 2207 3.8708809018135071e-01 - - 1.4189199544489384e-02 -3.3035850524902344e-01 - <_> - - 0 -1 2208 -1.5642799437046051e-02 - - -2.2099809348583221e-01 7.4994498863816261e-03 - <_> - - 0 -1 2209 4.7617158852517605e-03 - - 2.7577200904488564e-02 -1.6086949408054352e-01 - <_> - - 0 -1 2210 6.0681640170514584e-03 - - -3.7658590823411942e-02 9.0074919164180756e-02 - <_> - - 0 -1 2211 7.3775771306827664e-04 - - -5.7681489735841751e-02 8.1796541810035706e-02 - <_> - - 0 -1 2212 9.9665368907153606e-04 - - -2.9481150209903717e-02 4.9594949930906296e-02 - <_> - - 0 -1 2213 -7.1411498356610537e-04 - - 7.9853750765323639e-02 -5.6889399886131287e-02 - <_> - - 0 -1 2214 4.0103218634612858e-04 - - 3.9645630866289139e-02 -1.2507979571819305e-01 - <_> - - 0 -1 2215 -4.3492428958415985e-03 - - 3.4267151355743408e-01 -1.3171579688787460e-02 - <_> - - 0 -1 2216 -4.5664971694350243e-03 - - -5.7348942756652832e-01 3.4244819544255733e-03 - <_> - - 0 -1 2217 -1.6654949635267258e-02 - - -2.9475829005241394e-01 1.4510709792375565e-02 - <_> - - 0 -1 2218 1.6763679683208466e-01 - - 7.0861837593838573e-04 -9.9972397089004517e-01 - <_> - - 0 -1 2219 -1.4438680373132229e-02 - - 9.1619342565536499e-02 -5.1960468292236328e-02 - <_> - - 0 -1 2220 6.6305609652772546e-04 - - 2.9365209862589836e-02 -1.3490900397300720e-01 - <_> - - 0 -1 2221 -1.4088350326346699e-05 - - 6.8118147552013397e-02 -6.9758139550685883e-02 - <_> - - 0 -1 2222 -1.4499350450932980e-02 - - 1.0636260360479355e-01 -2.6339579373598099e-02 - <_> - - 0 -1 2223 -1.4112069948168937e-05 - - 6.7933529615402222e-02 -7.1538552641868591e-02 - <_> - - 0 -1 2224 3.2297680154442787e-03 - - 3.5616960376501083e-02 -1.4987170696258545e-01 - <_> - - 0 -1 2225 -1.2449090136215091e-03 - - 8.5310973227024078e-02 -5.0303228199481964e-02 - <_> - - 0 -1 2226 1.9396430579945445e-03 - - -3.2993078231811523e-02 5.2711058408021927e-02 - <_> - - 0 -1 2227 1.5153799904510379e-03 - - 4.7350451350212097e-02 -9.0107597410678864e-02 - <_> - - 0 -1 2228 -2.0151579752564430e-02 - - 3.1018638610839844e-01 -1.0560410097241402e-02 - <_> - - 0 -1 2229 -1.0241220006719232e-03 - - -1.5783089399337769e-01 2.6851199567317963e-02 - <_> - - 0 -1 2230 2.8379200026392937e-02 - - -9.9058141931891441e-03 1.4265379309654236e-01 - <_> - - 0 -1 2231 5.3610950708389282e-02 - - 1.0473029688000679e-02 -4.4550651311874390e-01 - <_> - - 0 -1 2232 -1.4160390011966228e-02 - - -1. 7.1694981306791306e-04 - <_> - - 0 -1 2233 2.1303679386619478e-04 - - -6.9676317274570465e-02 6.4859509468078613e-02 - <_> - - 0 -1 2234 -4.8539000563323498e-03 - - 7.1323692798614502e-02 -4.6175349503755569e-02 - <_> - - 0 -1 2235 3.0484499875456095e-03 - - -5.1321279257535934e-02 1.4626629650592804e-01 - <_> - - 0 -1 2236 1.2647379934787750e-01 - - 7.6361437095329165e-04 -1.0042829513549805e+00 - <_> - - 0 -1 2237 -3.1012939289212227e-02 - - -1.6555130481719971e-01 3.1050549820065498e-02 - <_> - - 0 -1 2238 5.1011998206377029e-02 - - 1.7226659692823887e-03 -3.5149711370468140e-01 - <_> - - 0 -1 2239 1.0826109908521175e-02 - - 3.8518119603395462e-02 -1.3052040338516235e-01 - <_> - - 0 -1 2240 4.8744820058345795e-02 - - -2.2428359836339951e-02 1.8270319700241089e-01 - <_> - - 0 -1 2241 -1.2570779770612717e-02 - - 2.8901270031929016e-01 -1.7391089349985123e-02 - <_> - - 0 -1 2242 1.7412479966878891e-02 - - -1.0330840013921261e-02 1.6961729526519775e-01 - <_> - - 0 -1 2243 2.0524440333247185e-04 - - 3.8509201258420944e-02 -1.2219169735908508e-01 - <_> - - 0 -1 2244 -1.2439410202205181e-03 - - 5.4002009332180023e-02 -3.5104531794786453e-02 - <_> - - 0 -1 2245 6.1096338322386146e-04 - - -7.0445932447910309e-02 6.2362931668758392e-02 - <_> - - 0 -1 2246 -1.3741919770836830e-02 - - 9.2544101178646088e-02 -3.0641069635748863e-02 - <_> - - 0 -1 2247 -2.8044390492141247e-03 - - -1.2330780178308487e-01 4.2105171829462051e-02 - <_> - - 0 -1 2248 4.7048758715391159e-02 - - 1.0950920404866338e-03 -8.4190052747726440e-01 - <_> - - 0 -1 2249 -1.4890570193529129e-02 - - 2.5517889857292175e-01 -1.7952889204025269e-02 - <_> - - 0 -1 2250 3.8549639284610748e-03 - - 2.2235570475459099e-02 -4.2414370924234390e-02 - <_> - - 0 -1 2251 -8.3304597064852715e-03 - - -1.7280849814414978e-01 2.6187630370259285e-02 - <_> - - 0 -1 2252 -2.4235919117927551e-03 - - 6.1521679162979126e-02 -4.2346790432929993e-02 - <_> - - 0 -1 2253 2.0981200505048037e-03 - - -4.5152019709348679e-02 1.2587040662765503e-01 - <_> - - 0 -1 2254 -3.1279098242521286e-02 - - -4.9621739983558655e-01 3.0154960695654154e-03 - <_> - - 0 -1 2255 -9.8806107416749001e-04 - - 7.8685648739337921e-02 -6.1010491102933884e-02 - <_> - - 0 -1 2256 -3.1887448858469725e-03 - - 4.8666700720787048e-02 -6.9095551967620850e-02 - <_> - - 0 -1 2257 3.6120909499004483e-04 - - 3.7986539304256439e-02 -1.2916709482669830e-01 - <_> - - 0 -1 2258 -4.7003240324556828e-03 - - 1.5735860168933868e-01 -3.1987510621547699e-02 - <_> - - 0 -1 2259 4.0772740612737834e-04 - - -8.1700682640075684e-02 7.0277199149131775e-02 - <_> - - 0 -1 2260 -1.5688460553064942e-04 - - 6.6089183092117310e-02 -5.8684460818767548e-02 - <_> - - 0 -1 2261 -8.8306762336287647e-05 - - 7.6648086309432983e-02 -6.1461128294467926e-02 - <_> - - 0 -1 2262 -8.4060793742537498e-03 - - -4.7935470938682556e-02 1.9660739228129387e-02 - <_> - - 0 -1 2263 -7.5640631839632988e-03 - - -1.3129790127277374e-01 3.6835629492998123e-02 - <_> - - 0 -1 2264 2.9140699552954175e-05 - - -4.8771411180496216e-02 5.4109010845422745e-02 - <_> - - 0 -1 2265 -2.9703689506277442e-05 - - 7.7505372464656830e-02 -6.2566630542278290e-02 - <_> - - 0 -1 2266 4.6520221233367920e-01 - - 3.2388810068368912e-03 -9.5390701293945312e-01 - <_> - - 0 -1 2267 4.3617340922355652e-01 - - -1.0471199639141560e-02 4.9274379014968872e-01 - <_> - - 0 -1 2268 4.7622469067573547e-01 - - 1.0192049667239189e-02 -3.0609691143035889e-01 - <_> - 312 - -8.6750441789627075e-01 - - <_> - - 0 -1 2269 -6.9590657949447632e-03 - - 1.5868470072746277e-01 -1.6239820420742035e-01 - <_> - - 0 -1 2270 -3.0573920812457800e-03 - - 1.5380610525608063e-01 -1.0447710007429123e-01 - <_> - - 0 -1 2271 4.9113620072603226e-02 - - 3.1365771428681910e-04 -5.9103668212890625e+02 - <_> - - 0 -1 2272 3.5433040466159582e-03 - - -5.8694530278444290e-02 1.9025419652462006e-01 - <_> - - 0 -1 2273 -3.1152060255408287e-03 - - 1.6918399930000305e-01 -5.7261351495981216e-02 - <_> - - 0 -1 2274 -3.0493480153381824e-04 - - 8.7339952588081360e-02 -1.1609370261430740e-01 - <_> - - 0 -1 2275 -2.9056929051876068e-03 - - -1.6569739580154419e-01 8.9497320353984833e-02 - <_> - - 0 -1 2276 2.4364320561289787e-03 - - -6.1192200519144535e-03 -1.1708849668502808e-01 - <_> - - 0 -1 2277 -1.9272440671920776e-01 - - 2.5199291110038757e-01 -2.5372540578246117e-02 - <_> - - 0 -1 2278 -1.5847420692443848e-01 - - 4.7349348664283752e-01 1.1943650431931019e-02 - <_> - - 0 -1 2279 -1.4465919695794582e-02 - - 2.6014938950538635e-01 -3.2948598265647888e-02 - <_> - - 0 -1 2280 1.4936940371990204e-01 - - 1.3150180166121572e-04 -1.8844749450683594e+01 - <_> - - 0 -1 2281 -8.5310498252511024e-04 - - -1.7988120019435883e-01 3.9786599576473236e-02 - <_> - - 0 -1 2282 -7.1676567196846008e-02 - - 9.7726896405220032e-02 -7.2678178548812866e-02 - <_> - - 0 -1 2283 -1.6500559868291020e-03 - - -1.6228690743446350e-01 4.5543350279331207e-02 - <_> - - 0 -1 2284 8.7681278586387634e-02 - - 1.0731910355389118e-02 -2.5473240017890930e-01 - <_> - - 0 -1 2285 4.2137179523706436e-02 - - -5.8585599064826965e-02 1.2307800352573395e-01 - <_> - - 0 -1 2286 1.5697469934821129e-03 - - 3.9195891469717026e-02 -3.7577088922262192e-02 - <_> - - 0 -1 2287 4.3402929441072047e-04 - - 7.2439298033714294e-02 -9.1538086533546448e-02 - <_> - - 0 -1 2288 -4.3872660025954247e-03 - - 1.8260389566421509e-01 -1.8635680899024010e-02 - <_> - - 0 -1 2289 -6.7455501994118094e-04 - - 8.0404117703437805e-02 -8.2332372665405273e-02 - <_> - - 0 -1 2290 6.0816952027380466e-03 - - 4.2769778519868851e-02 -1.8744979798793793e-01 - <_> - - 0 -1 2291 1.6488720430061221e-03 - - -4.2755078524351120e-02 1.4212779700756073e-01 - <_> - - 0 -1 2292 3.2328169327229261e-03 - - 3.3626940101385117e-02 -7.8316323459148407e-02 - <_> - - 0 -1 2293 4.7256439924240112e-02 - - -2.2591020911931992e-02 3.0011969804763794e-01 - <_> - - 0 -1 2294 -6.2247258611023426e-03 - - -1.0147669911384583e-01 1.6788400709629059e-02 - <_> - - 0 -1 2295 1.6149500152096152e-03 - - 5.5833689868450165e-02 -1.0707660019397736e-01 - <_> - - 0 -1 2296 9.1500347480177879e-04 - - -6.9352641701698303e-02 8.8161237537860870e-02 - <_> - - 0 -1 2297 -2.2576500196009874e-03 - - -1.2706309556961060e-01 5.4880708456039429e-02 - <_> - - 0 -1 2298 -3.4538839012384415e-02 - - 2.7154579758644104e-01 -2.4382650852203369e-02 - <_> - - 0 -1 2299 -1.7117150127887726e-03 - - 1.4996920526027679e-01 -4.0825318545103073e-02 - <_> - - 0 -1 2300 -3.2278900034725666e-03 - - -1.2764149904251099e-01 2.3431450128555298e-02 - <_> - - 0 -1 2301 -4.4023559894412756e-05 - - 7.7392660081386566e-02 -7.4177153408527374e-02 - <_> - - 0 -1 2302 7.5647688936442137e-04 - - 3.3927328884601593e-02 -1.4417350292205811e-01 - <_> - - 0 -1 2303 8.4927473217248917e-03 - - -4.0082499384880066e-02 1.2817430496215820e-01 - <_> - - 0 -1 2304 -7.6771569438278675e-03 - - -6.8460687994956970e-02 2.7800939977169037e-02 - <_> - - 0 -1 2305 -7.1219368837773800e-03 - - 1.7107799649238586e-01 -3.3437490463256836e-02 - <_> - - 0 -1 2306 -5.5628590285778046e-02 - - 2.7421030402183533e-01 -5.5358181707561016e-03 - <_> - - 0 -1 2307 -8.6285015568137169e-03 - - 9.6154272556304932e-02 -5.9233158826828003e-02 - <_> - - 0 -1 2308 -8.4619313478469849e-02 - - -1.0364869982004166e-01 4.1444499045610428e-02 - <_> - - 0 -1 2309 3.9100160938687623e-04 - - -7.1321249008178711e-02 8.9755021035671234e-02 - <_> - - 0 -1 2310 -1.8672130536288023e-03 - - -1.1459860205650330e-01 2.5895899161696434e-02 - <_> - - 0 -1 2311 -3.3822900149971247e-05 - - 7.9902566969394684e-02 -6.7662969231605530e-02 - <_> - - 0 -1 2312 8.1294048577547073e-03 - - -1.5307970345020294e-02 1.3641610741615295e-01 - <_> - - 0 -1 2313 -3.7496020086109638e-03 - - -1.9913309812545776e-01 3.0319629237055779e-02 - <_> - - 0 -1 2314 -1.2066840194165707e-02 - - 9.3559846282005310e-02 -2.5958370417356491e-02 - <_> - - 0 -1 2315 7.5598962604999542e-02 - - 1.5041110105812550e-02 -3.6718261241912842e-01 - <_> - - 0 -1 2316 -1.6014720313251019e-03 - - -1.5824559330940247e-01 1.6495509073138237e-02 - <_> - - 0 -1 2317 -1.6493949806317687e-03 - - 1.5612399578094482e-01 -3.3213630318641663e-02 - <_> - - 0 -1 2318 7.5000891229137778e-04 - - -6.6709816455841064e-02 1.1225040256977081e-01 - <_> - - 0 -1 2319 4.4484718819148839e-04 - - 3.6335270851850510e-02 -1.6284869611263275e-01 - <_> - - 0 -1 2320 2.5233838823623955e-04 - - 3.3983569592237473e-02 -1.0951840132474899e-01 - <_> - - 0 -1 2321 -3.3512299414724112e-03 - - 9.6623063087463379e-02 -5.5458720773458481e-02 - <_> - - 0 -1 2322 -9.4628758961334825e-04 - - -1.7076319456100464e-01 2.2219700738787651e-02 - <_> - - 0 -1 2323 9.0931905433535576e-03 - - -2.2302780300378799e-02 2.3247869312763214e-01 - <_> - - 0 -1 2324 1.4432819625653792e-05 - - -1.7819089815020561e-02 2.5444870814681053e-02 - <_> - - 0 -1 2325 -1.2126220099162310e-04 - - -1.0076980292797089e-01 4.8461761325597763e-02 - <_> - - 0 -1 2326 -1.5898300334811211e-03 - - 7.1014806628227234e-02 -4.2943000793457031e-02 - <_> - - 0 -1 2327 6.1745261773467064e-03 - - -2.9729399830102921e-02 1.6170799732208252e-01 - <_> - - 0 -1 2328 -3.0631071422249079e-04 - - -8.7092787027359009e-02 3.1442601233720779e-02 - <_> - - 0 -1 2329 -5.8703188551589847e-04 - - 6.9914981722831726e-02 -6.8044006824493408e-02 - <_> - - 0 -1 2330 -6.2474939040839672e-03 - - -9.6013367176055908e-02 2.9822429642081261e-02 - <_> - - 0 -1 2331 -8.4606884047389030e-03 - - -4.9265980720520020e-01 9.7682923078536987e-03 - <_> - - 0 -1 2332 -8.2077048718929291e-02 - - 2.4171060323715210e-01 -2.1062780171632767e-02 - <_> - - 0 -1 2333 2.4003140628337860e-02 - - -1.1466279625892639e-02 4.2264458537101746e-01 - <_> - - 0 -1 2334 5.0643119961023331e-02 - - 1.1797649785876274e-02 -3.0376261472702026e-01 - <_> - - 0 -1 2335 -7.5805537402629852e-02 - - -6.0144102573394775e-01 7.6154861599206924e-03 - <_> - - 0 -1 2336 2.1794199710711837e-04 - - -7.6192483305931091e-02 6.0302849858999252e-02 - <_> - - 0 -1 2337 -1.1538410035427660e-04 - - 9.7286820411682129e-02 -6.3996717333793640e-02 - <_> - - 0 -1 2338 -5.6703570298850536e-03 - - 4.7419899702072144e-01 -8.9765265583992004e-03 - <_> - - 0 -1 2339 9.0920249931514263e-04 - - -5.4096128791570663e-02 9.9844329059123993e-02 - <_> - - 0 -1 2340 6.6968752071261406e-04 - - 2.9092999175190926e-02 -1.4089579880237579e-01 - <_> - - 0 -1 2341 -1.3045269995927811e-02 - - -3.6840420961380005e-01 1.3595229946076870e-02 - <_> - - 0 -1 2342 8.1813009455800056e-04 - - 2.0997049286961555e-02 -7.1003288030624390e-02 - <_> - - 0 -1 2343 3.0674310401082039e-03 - - -2.0319199189543724e-02 2.1805720031261444e-01 - <_> - - 0 -1 2344 2.4622390046715736e-03 - - -4.3403070420026779e-02 9.6221841871738434e-02 - <_> - - 0 -1 2345 4.0511658880859613e-04 - - 3.8897279649972916e-02 -1.3268139958381653e-01 - <_> - - 0 -1 2346 -8.4437627810984850e-04 - - 5.0205118954181671e-02 -3.7280499935150146e-02 - <_> - - 0 -1 2347 -1.3546720147132874e-03 - - 8.7879791855812073e-02 -5.8279629796743393e-02 - <_> - - 0 -1 2348 -3.7650408921763301e-04 - - -9.4865918159484863e-02 4.2081668972969055e-02 - <_> - - 0 -1 2349 3.3679799525998533e-04 - - 4.7310721129179001e-02 -1.0243420302867889e-01 - <_> - - 0 -1 2350 -2.8126540200901218e-05 - - 4.7269638627767563e-02 -5.5766370147466660e-02 - <_> - - 0 -1 2351 4.1841669008135796e-03 - - -1.9733460620045662e-02 2.3084339499473572e-01 - <_> - - 0 -1 2352 -1.1791250435635448e-03 - - 1.7762739956378937e-01 -3.5704571753740311e-02 - <_> - - 0 -1 2353 -2.4450810160487890e-03 - - -1.1740010231733322e-01 4.4417370110750198e-02 - <_> - - 0 -1 2354 2.6766739320009947e-03 - - 3.3644858747720718e-02 -1.5421959757804871e-01 - <_> - - 0 -1 2355 9.7273271530866623e-03 - - -3.6012981086969376e-02 1.4240190386772156e-01 - <_> - - 0 -1 2356 -4.9499998567625880e-04 - - -8.1604748964309692e-02 2.0572710782289505e-02 - <_> - - 0 -1 2357 -1.4889230020344257e-02 - - -4.6096751093864441e-01 9.8663335666060448e-03 - <_> - - 0 -1 2358 -3.0629769898951054e-03 - - 2.6929551362991333e-01 -1.9634859636425972e-02 - <_> - - 0 -1 2359 -2.3329691030085087e-03 - - -1.8056930601596832e-01 2.6195030659437180e-02 - <_> - - 0 -1 2360 1.4440430095419288e-03 - - -3.6736939102411270e-02 9.5665268599987030e-02 - <_> - - 0 -1 2361 -2.4700779467821121e-03 - - 7.1355991065502167e-02 -6.9826416671276093e-02 - <_> - - 0 -1 2362 2.5538569316267967e-03 - - -5.2430380135774612e-02 1.4462329447269440e-01 - <_> - - 0 -1 2363 1.2297700159251690e-03 - - 5.3223300725221634e-02 -1.0887510329484940e-01 - <_> - - 0 -1 2364 -1.1272770352661610e-02 - - 1.2317550182342529e-01 -2.3890729993581772e-02 - <_> - - 0 -1 2365 8.5928626358509064e-03 - - 4.2121421545743942e-02 -1.1863400042057037e-01 - <_> - - 0 -1 2366 3.3916949760168791e-03 - - -2.8021439909934998e-02 2.1571420133113861e-01 - <_> - - 0 -1 2367 3.9071948267519474e-03 - - 1.2598560191690922e-02 -3.9708340167999268e-01 - <_> - - 0 -1 2368 -1.7956830561161041e-03 - - 1.2647710740566254e-01 -5.7237148284912109e-02 - <_> - - 0 -1 2369 -7.7512441202998161e-04 - - -1.6876439750194550e-01 2.8973329812288284e-02 - <_> - - 0 -1 2370 1.0271680355072021e-01 - - -1.2080660089850426e-02 3.9716011285781860e-01 - <_> - - 0 -1 2371 -4.0367760811932385e-04 - - 6.7599602043628693e-02 -6.7388482391834259e-02 - <_> - - 0 -1 2372 -2.2988640703260899e-03 - - -9.6752107143402100e-02 5.6014880537986755e-02 - <_> - - 0 -1 2373 -7.7720789704471827e-04 - - 1.2280429899692535e-01 -3.8351070135831833e-02 - <_> - - 0 -1 2374 4.3838539568241686e-05 - - -2.9446190223097801e-02 2.5065520778298378e-02 - <_> - - 0 -1 2375 -4.3220039515290409e-05 - - 6.0876619070768356e-02 -7.4360720813274384e-02 - <_> - - 0 -1 2376 1.8013520457316190e-04 - - 4.4003210961818695e-02 -1.2167269736528397e-01 - <_> - - 0 -1 2377 -1.5988990664482117e-02 - - -3.6425220966339111e-01 1.1611090041697025e-02 - <_> - - 0 -1 2378 3.0585259664803743e-03 - - -1.7674630507826805e-02 1.4486950635910034e-01 - <_> - - 0 -1 2379 -7.9687736928462982e-02 - - -5.1687908172607422e-01 9.3473158776760101e-03 - <_> - - 0 -1 2380 -1.9053969532251358e-02 - - 6.6542461514472961e-02 -3.9088901132345200e-02 - <_> - - 0 -1 2381 6.2866392545402050e-04 - - -4.2991779744625092e-02 1.0028839856386185e-01 - <_> - - 0 -1 2382 -4.6688509173691273e-03 - - 5.5551759898662567e-02 -4.2753148823976517e-02 - <_> - - 0 -1 2383 -1.4348989680001978e-05 - - 7.3363922536373138e-02 -7.5351633131504059e-02 - <_> - - 0 -1 2384 2.9872718732804060e-04 - - -7.7761411666870117e-02 5.4107978940010071e-02 - <_> - - 0 -1 2385 -1.4901659451425076e-03 - - -1.2372410297393799e-01 3.6912061274051666e-02 - <_> - - 0 -1 2386 3.0812988989055157e-03 - - -8.6249075829982758e-03 1.9336590170860291e-01 - <_> - - 0 -1 2387 -2.1335019264370203e-03 - - 2.3859849572181702e-01 -1.8126849085092545e-02 - <_> - - 0 -1 2388 9.9391005933284760e-03 - - 1.1431059800088406e-02 -2.2138220071792603e-01 - <_> - - 0 -1 2389 8.2578818546608090e-04 - - 3.9670199155807495e-02 -1.0737189650535583e-01 - <_> - - 0 -1 2390 1.8395700026303530e-03 - - -2.7136169373989105e-02 1.1130770295858383e-01 - <_> - - 0 -1 2391 3.8778909947723150e-03 - - -5.4471541196107864e-02 8.4703780710697174e-02 - <_> - - 0 -1 2392 1.1750679695978761e-03 - - 2.1696800366044044e-02 -1.3571469485759735e-01 - <_> - - 0 -1 2393 -1.5827510505914688e-03 - - 7.7993959188461304e-02 -6.2593907117843628e-02 - <_> - - 0 -1 2394 -8.1443432718515396e-03 - - -8.9417421817779541e-01 2.4376239161938429e-03 - <_> - - 0 -1 2395 -3.5362979397177696e-03 - - -3.3739840984344482e-01 1.3051600195467472e-02 - <_> - - 0 -1 2396 -7.5185662135481834e-03 - - 1.7903229594230652e-01 -9.4940410926938057e-03 - <_> - - 0 -1 2397 -1.3678180053830147e-02 - - -7.1258807182312012e-01 6.1758197844028473e-03 - <_> - - 0 -1 2398 2.9812520369887352e-03 - - -6.2631383538246155e-02 8.0112308263778687e-02 - <_> - - 0 -1 2399 -3.6354900803416967e-03 - - 1.1051779985427856e-01 -3.6950528621673584e-02 - <_> - - 0 -1 2400 4.4591492041945457e-03 - - 2.5896830484271049e-02 -1.0620719939470291e-01 - <_> - - 0 -1 2401 1.6104400157928467e-02 - - 1.0394480079412460e-02 -4.1476351022720337e-01 - <_> - - 0 -1 2402 1.4112349599599838e-02 - - 6.1774178175255656e-04 -6.8693232536315918e-01 - <_> - - 0 -1 2403 -3.7388880737125874e-03 - - 1.5318030118942261e-01 -2.9674530029296875e-02 - <_> - - 0 -1 2404 -3.8605570793151855e-02 - - -7.0356887578964233e-01 2.6169209741055965e-03 - <_> - - 0 -1 2405 1.8483239691704512e-03 - - 7.5572483241558075e-02 -6.1567280441522598e-02 - <_> - - 0 -1 2406 -3.7039730232208967e-03 - - 1.6795060038566589e-01 -2.0140400156378746e-02 - <_> - - 0 -1 2407 -6.7307491553947330e-04 - - -1.5372750163078308e-01 2.9886560514569283e-02 - <_> - - 0 -1 2408 1.9836979918181896e-03 - - -1.8347289413213730e-02 1.3557240366935730e-01 - <_> - - 0 -1 2409 -1.9738670380320400e-04 - - 6.6614717245101929e-02 -8.0920897424221039e-02 - <_> - - 0 -1 2410 -1.4239580370485783e-02 - - -1.3320599496364594e-01 1.2875780463218689e-02 - <_> - - 0 -1 2411 4.0507009252905846e-03 - - 4.0493208914995193e-02 -1.1370310187339783e-01 - <_> - - 0 -1 2412 -1.0803360491991043e-03 - - 8.2551851868629456e-02 -5.4668750613927841e-02 - <_> - - 0 -1 2413 -1.4226039638742805e-03 - - -1.2009900063276291e-01 3.7243649363517761e-02 - <_> - - 0 -1 2414 -2.1526139229536057e-02 - - 1.9598940014839172e-01 -1.1042039841413498e-02 - <_> - - 0 -1 2415 -2.0712440833449364e-02 - - 2.9122969508171082e-01 -1.5912450850009918e-02 - <_> - - 0 -1 2416 -1.4033130137249827e-03 - - -1.2359079718589783e-01 1.6418259590864182e-02 - <_> - - 0 -1 2417 5.8878812706097960e-04 - - 3.4428730607032776e-02 -1.3279630243778229e-01 - <_> - - 0 -1 2418 -4.0147930121747777e-05 - - 5.2795641124248505e-02 -4.6990659087896347e-02 - <_> - - 0 -1 2419 2.2268320899456739e-03 - - -2.1238829940557480e-02 2.1404080092906952e-01 - <_> - - 0 -1 2420 1.3318729586899281e-02 - - 1.4480380341410637e-02 -2.3123030364513397e-01 - <_> - - 0 -1 2421 -1.7160760238766670e-02 - - -3.9468988776206970e-01 1.0943929664790630e-02 - <_> - - 0 -1 2422 3.0774369835853577e-02 - - 2.1721019875258207e-03 -3.1501969695091248e-01 - <_> - - 0 -1 2423 -1.6679989174008369e-02 - - 2.5761198997497559e-01 -1.7667369917035103e-02 - <_> - - 0 -1 2424 -9.7562937298789620e-04 - - -7.6857216656208038e-02 2.7707789093255997e-02 - <_> - - 0 -1 2425 -6.4838528633117676e-03 - - 2.0521609485149384e-01 -2.1178059279918671e-02 - <_> - - 0 -1 2426 -2.4545229971408844e-03 - - -1.5586429834365845e-01 3.2481741160154343e-02 - <_> - - 0 -1 2427 -2.4111429229378700e-03 - - 9.1278932988643646e-02 -4.8587068915367126e-02 - <_> - - 0 -1 2428 1.5041510050650686e-04 - - -9.5509223639965057e-02 5.4279290139675140e-02 - <_> - - 0 -1 2429 4.1928939521312714e-02 - - 5.5031818337738514e-03 -7.7479290962219238e-01 - <_> - - 0 -1 2430 2.0099419634789228e-03 - - -2.8640370815992355e-02 1.4182229340076447e-01 - <_> - - 0 -1 2431 1.9516570027917624e-03 - - 1.4893580228090286e-02 -3.1890881061553955e-01 - <_> - - 0 -1 2432 -1.2247270205989480e-03 - - 7.2824656963348389e-02 -3.1667441129684448e-02 - <_> - - 0 -1 2433 -1.0412910021841526e-02 - - -1.4135329425334930e-01 3.2725520431995392e-02 - <_> - - 0 -1 2434 -8.6048692464828491e-03 - - -1.7254149913787842e-01 3.4668690059334040e-03 - <_> - - 0 -1 2435 3.4611239098012447e-03 - - 3.1594958156347275e-02 -1.5405359864234924e-01 - <_> - - 0 -1 2436 4.4333230704069138e-02 - - -2.0914139226078987e-02 1.6136829555034637e-01 - <_> - - 0 -1 2437 -3.2635610550642014e-02 - - 2.1003389358520508e-01 -2.9780490323901176e-02 - <_> - - 0 -1 2438 -7.9052507877349854e-02 - - 1.8492619693279266e-01 -1.1976730078458786e-02 - <_> - - 0 -1 2439 7.3115207254886627e-02 - - 8.8554704561829567e-03 -5.1346242427825928e-01 - <_> - - 0 -1 2440 6.3138650730252266e-03 - - 1.2937859632074833e-02 -2.1465529501438141e-01 - <_> - - 0 -1 2441 -1.0274830274283886e-03 - - 1.1241199821233749e-01 -4.2139180004596710e-02 - <_> - - 0 -1 2442 -1.6066900570876896e-04 - - -9.2596597969532013e-02 3.3403988927602768e-02 - <_> - - 0 -1 2443 1.4575430192053318e-02 - - -2.3500410839915276e-02 1.8772770464420319e-01 - <_> - - 0 -1 2444 -5.7197501882910728e-03 - - -1.4184519648551941e-01 3.3893290907144547e-02 - <_> - - 0 -1 2445 -1.0095680132508278e-02 - - -3.6976811289787292e-01 1.1113449931144714e-02 - <_> - - 0 -1 2446 -1.2176940217614174e-03 - - 5.1818449050188065e-02 -4.7457851469516754e-02 - <_> - - 0 -1 2447 7.8980736434459686e-02 - - 9.7751449793577194e-03 -4.3593549728393555e-01 - <_> - - 0 -1 2448 -9.6514541655778885e-04 - - 4.8271138221025467e-02 -4.6483509242534637e-02 - <_> - - 0 -1 2449 9.1809416189789772e-03 - - -2.1579770371317863e-02 1.9924899935722351e-01 - <_> - - 0 -1 2450 -1.8495230004191399e-02 - - -3.4228208661079407e-01 6.5597319044172764e-03 - <_> - - 0 -1 2451 -2.2168110590428114e-03 - - 9.0867489576339722e-02 -5.5027540773153305e-02 - <_> - - 0 -1 2452 -1.5820340195205063e-04 - - -9.0893670916557312e-02 4.0111150592565536e-02 - <_> - - 0 -1 2453 1.5867890324443579e-03 - - -5.1445338875055313e-02 8.2311213016510010e-02 - <_> - - 0 -1 2454 1.4582079648971558e-01 - - 1.1615890543907881e-03 -8.7532532215118408e-01 - <_> - - 0 -1 2455 -6.6445011179894209e-04 - - -9.8049089312553406e-02 4.4343311339616776e-02 - <_> - - 0 -1 2456 5.8919959701597691e-03 - - 1.5775660285726190e-03 -1.0001260042190552e+00 - <_> - - 0 -1 2457 -1.3995329936733469e-05 - - 7.3066778481006622e-02 -5.7691581547260284e-02 - <_> - - 0 -1 2458 -9.9132228642702103e-03 - - -7.5529462099075317e-01 5.2168890833854675e-03 - <_> - - 0 -1 2459 -1.5792429447174072e-02 - - 2.8222128748893738e-01 -1.7060630023479462e-02 - <_> - - 0 -1 2460 -2.6797680184245110e-03 - - -7.9262927174568176e-02 1.5230569988489151e-02 - <_> - - 0 -1 2461 -1.4144170098006725e-02 - - -7.6791101694107056e-01 5.3670979104936123e-03 - <_> - - 0 -1 2462 1.6818119585514069e-01 - - 9.6734073013067245e-03 -3.3587118983268738e-01 - <_> - - 0 -1 2463 -2.0679819583892822e-01 - - -4.4644999504089355e-01 8.5481600835919380e-03 - <_> - - 0 -1 2464 1.4232929970603436e-05 - - -4.8844348639249802e-02 4.5179460197687149e-02 - <_> - - 0 -1 2465 -2.0378379151225090e-02 - - 3.2889419794082642e-01 -1.3800919987261295e-02 - <_> - - 0 -1 2466 1.4215029776096344e-02 - - -1.0470540262758732e-02 1.1338669806718826e-01 - <_> - - 0 -1 2467 4.8233679262921214e-04 - - 4.4216580688953400e-02 -1.0093499720096588e-01 - <_> - - 0 -1 2468 4.3106778321089223e-05 - - -3.8059741258621216e-02 3.7995509803295135e-02 - <_> - - 0 -1 2469 9.0388357639312744e-02 - - 8.3996197208762169e-03 -4.9610888957977295e-01 - <_> - - 0 -1 2470 3.7458650767803192e-02 - - 2.8608210850507021e-03 -3.5298860073089600e-01 - <_> - - 0 -1 2471 3.1219370663166046e-02 - - -8.9630456641316414e-03 5.2930659055709839e-01 - <_> - - 0 -1 2472 1.4717579819262028e-02 - - -3.5097280051559210e-03 2.6866179704666138e-01 - <_> - - 0 -1 2473 1.4505100436508656e-02 - - 6.5859002061188221e-03 -6.7086291313171387e-01 - <_> - - 0 -1 2474 2.6275549316778779e-04 - - 3.2062649726867676e-02 -5.3764168173074722e-02 - <_> - - 0 -1 2475 -1.5802070265635848e-03 - - 1.7928290367126465e-01 -2.2988079115748405e-02 - <_> - - 0 -1 2476 -2.4961680173873901e-02 - - -7.6229918003082275e-01 1.3633499620482326e-03 - <_> - - 0 -1 2477 -1.0827300138771534e-02 - - -4.1359999775886536e-01 1.0123790241777897e-02 - <_> - - 0 -1 2478 3.1056890729814768e-03 - - -1.4968870207667351e-02 1.4612309634685516e-01 - <_> - - 0 -1 2479 -3.2839320600032806e-02 - - -8.3612412214279175e-01 5.1855011843144894e-03 - <_> - - 0 -1 2480 -8.2352161407470703e-03 - - 2.2326070070266724e-01 -9.2590171843767166e-03 - <_> - - 0 -1 2481 9.3107353895902634e-03 - - -9.7794700413942337e-03 4.2239460349082947e-01 - <_> - - 0 -1 2482 -1.4591770246624947e-02 - - -2.4204090237617493e-01 8.5437763482332230e-03 - <_> - - 0 -1 2483 -2.1764719858765602e-02 - - -6.0603100061416626e-01 7.0369099266827106e-03 - <_> - - 0 -1 2484 1.3476300409820396e-05 - - -5.2269939333200455e-02 6.5587602555751801e-02 - <_> - - 0 -1 2485 1.3351259753108025e-02 - - -4.0418989956378937e-02 1.0951729863882065e-01 - <_> - - 0 -1 2486 -6.3701579347252846e-03 - - -1.3111020624637604e-01 3.8481429219245911e-02 - <_> - - 0 -1 2487 1.5143630094826221e-02 - - -2.0249659195542336e-02 2.1716409921646118e-01 - <_> - - 0 -1 2488 4.5786341652274132e-03 - - 1.4322079718112946e-02 -5.7222241163253784e-01 - <_> - - 0 -1 2489 -4.6741031110286713e-02 - - -7.2265928983688354e-01 4.1450331918895245e-03 - <_> - - 0 -1 2490 9.5456670969724655e-03 - - -1.0392360389232635e-02 1.8317960202693939e-01 - <_> - - 0 -1 2491 -1.7097139358520508e-01 - - -2.6629018783569336e-01 1.5714570879936218e-02 - <_> - - 0 -1 2492 -7.1421632310375571e-04 - - 6.8821117281913757e-02 -1.8535939976572990e-02 - <_> - - 0 -1 2493 4.7080889344215393e-03 - - 8.7029086425900459e-03 -4.7382900118827820e-01 - <_> - - 0 -1 2494 2.8823789762100205e-05 - - -3.5033170133829117e-02 4.1010260581970215e-02 - <_> - - 0 -1 2495 -2.3279939778149128e-03 - - 2.3261049389839172e-01 -1.7835669219493866e-02 - <_> - - 0 -1 2496 8.4805669030174613e-04 - - 2.5282969698309898e-02 -1.7157159745693207e-01 - <_> - - 0 -1 2497 -6.5123359672725201e-04 - - 8.6811847984790802e-02 -4.7068729996681213e-02 - <_> - - 0 -1 2498 -1.1371539440006018e-03 - - 8.0242671072483063e-02 -1.6520520672202110e-02 - <_> - - 0 -1 2499 -5.6554668117314577e-04 - - -1.4709630608558655e-01 3.2420728355646133e-02 - <_> - - 0 -1 2500 2.4779029190540314e-03 - - -9.6723642200231552e-03 1.3506250083446503e-01 - <_> - - 0 -1 2501 1.7332839779555798e-03 - - -2.4561529979109764e-02 1.7612139880657196e-01 - <_> - - 0 -1 2502 -4.4806491583585739e-02 - - -6.0948181152343750e-01 3.4338440746068954e-03 - <_> - - 0 -1 2503 -2.0501140505075455e-02 - - -5.4643869400024414e-01 7.2927437722682953e-03 - <_> - - 0 -1 2504 -1.6198139637708664e-02 - - -6.6130048036575317e-01 2.1677929908037186e-03 - <_> - - 0 -1 2505 1.4479210221907124e-05 - - -5.5189680308103561e-02 7.2523497045040131e-02 - <_> - - 0 -1 2506 -1.7286660149693489e-03 - - -1.7387390136718750e-01 8.9998291805386543e-03 - <_> - - 0 -1 2507 -1.3669549844053108e-05 - - 6.6204346716403961e-02 -6.1010520905256271e-02 - <_> - - 0 -1 2508 3.5130590200424194e-01 - - 1.3569389702752233e-03 -8.1200098991394043e-01 - <_> - - 0 -1 2509 2.4454699456691742e-01 - - 9.9658807739615440e-03 -4.1247910261154175e-01 - <_> - - 0 -1 2510 -3.2614581286907196e-02 - - 7.0626311004161835e-02 -2.6639420539140701e-02 - <_> - - 0 -1 2511 2.4752068566158414e-04 - - 3.3226758241653442e-02 -1.3203519582748413e-01 - <_> - - 0 -1 2512 -1.3165399432182312e-03 - - 7.8517846763134003e-02 -1.9580749794840813e-02 - <_> - - 0 -1 2513 -1.6912100545596331e-04 - - -9.7635522484779358e-02 4.3525248765945435e-02 - <_> - - 0 -1 2514 9.2338479589670897e-04 - - -2.9401849955320358e-02 8.0856159329414368e-02 - <_> - - 0 -1 2515 -1.0980790248140693e-03 - - 1.2562260031700134e-01 -3.5378601402044296e-02 - <_> - - 0 -1 2516 7.5967791490256786e-03 - - 1.2936309911310673e-02 -2.9600989818572998e-01 - <_> - - 0 -1 2517 3.6338350037112832e-04 - - 4.7169290482997894e-02 -9.5228493213653564e-02 - <_> - - 0 -1 2518 -6.4660399220883846e-03 - - 9.8374269902706146e-02 -4.1656348854303360e-02 - <_> - - 0 -1 2519 5.0431757699698210e-04 - - -6.7573040723800659e-02 6.5746881067752838e-02 - <_> - - 0 -1 2520 2.0181000232696533e-02 - - -2.6914089918136597e-02 1.6784250736236572e-01 - <_> - - 0 -1 2521 8.3369575440883636e-03 - - 4.0364239364862442e-02 -1.3436989486217499e-01 - <_> - - 0 -1 2522 6.0851150192320347e-04 - - -4.2444441467523575e-02 1.2860350310802460e-01 - <_> - - 0 -1 2523 2.4325479753315449e-03 - - 3.1940739601850510e-02 -1.8476389348506927e-01 - <_> - - 0 -1 2524 -9.9839484319090843e-03 - - 1.1942879855632782e-01 -4.2162060737609863e-02 - <_> - - 0 -1 2525 -5.5000629276037216e-02 - - -1.1925660073757172e-01 4.6324558556079865e-02 - <_> - - 0 -1 2526 1.9433120265603065e-02 - - 5.1037009805440903e-02 -5.5511191487312317e-02 - <_> - - 0 -1 2527 -5.4839542135596275e-03 - - 8.1406086683273315e-02 -6.0122720897197723e-02 - <_> - - 0 -1 2528 -3.0243439599871635e-02 - - -9.7785070538520813e-02 2.1915659308433533e-02 - <_> - - 0 -1 2529 2.0199140999466181e-03 - - -1.8789879977703094e-02 2.4053630232810974e-01 - <_> - - 0 -1 2530 1.2714860029518604e-02 - - 3.9840238168835640e-03 -3.1065699458122253e-01 - <_> - - 0 -1 2531 -1.6343439929187298e-03 - - -1.4421850442886353e-01 3.4464638680219650e-02 - <_> - - 0 -1 2532 -7.7880651224404573e-04 - - 6.4484052360057831e-02 -3.2130420207977295e-02 - <_> - - 0 -1 2533 -5.3918338380753994e-03 - - 2.0775160193443298e-01 -2.2383010014891624e-02 - <_> - - 0 -1 2534 5.8038760907948017e-03 - - 2.5264130905270576e-02 -8.7034113705158234e-02 - <_> - - 0 -1 2535 -1.5872420044615865e-03 - - -1.3280770182609558e-01 3.2864589244127274e-02 - <_> - - 0 -1 2536 -2.0254219416528940e-03 - - 5.4597068578004837e-02 -6.1921451240777969e-02 - <_> - - 0 -1 2537 -1.0030369739979506e-03 - - 9.2259302735328674e-02 -5.1212120801210403e-02 - <_> - - 0 -1 2538 2.1510530263185501e-02 - - -8.8652186095714569e-03 2.4676810204982758e-01 - <_> - - 0 -1 2539 -3.9943971205502748e-04 - - 7.5322106480598450e-02 -6.5167978405952454e-02 - <_> - - 0 -1 2540 9.4137862324714661e-03 - - 1.0708389803767204e-02 -2.1738730370998383e-01 - <_> - - 0 -1 2541 5.5900849401950836e-02 - - -2.9666159301996231e-02 1.5803800523281097e-01 - <_> - - 0 -1 2542 1.2583700008690357e-02 - - 2.0409680902957916e-02 -2.3156540095806122e-01 - <_> - - 0 -1 2543 -1.2195089831948280e-02 - - -3.1428098678588867e-01 1.3503570109605789e-02 - <_> - - 0 -1 2544 2.8386089950799942e-02 - - -1.9067099317908287e-02 1.2438379973173141e-01 - <_> - - 0 -1 2545 -2.5152720627374947e-04 - - 7.1380242705345154e-02 -5.8560580015182495e-02 - <_> - - 0 -1 2546 2.9507439583539963e-02 - - 6.3799307681620121e-03 -1.4193299412727356e-01 - <_> - - 0 -1 2547 1.2022940441966057e-02 - - -5.3622491657733917e-02 8.0924786627292633e-02 - <_> - - 0 -1 2548 1.2839339673519135e-02 - - -2.6221500709652901e-02 4.1462760418653488e-02 - <_> - - 0 -1 2549 5.8855762472376227e-04 - - 3.8205999881029129e-02 -1.1232639849185944e-01 - <_> - - 0 -1 2550 -1.8602449446916580e-02 - - 4.2938970029354095e-02 -2.1604780107736588e-02 - <_> - - 0 -1 2551 9.6901757642626762e-03 - - -6.5837942063808441e-02 9.5084339380264282e-02 - <_> - - 0 -1 2552 -2.1559480577707291e-02 - - 1.0580649971961975e-01 -1.8551910296082497e-02 - <_> - - 0 -1 2553 7.3115159757435322e-03 - - 3.6227419972419739e-02 -1.2839490175247192e-01 - <_> - - 0 -1 2554 3.5540990065783262e-03 - - -1.4768529683351517e-02 1.0962279886007309e-01 - <_> - - 0 -1 2555 -3.5278309136629105e-02 - - -1.6880880296230316e-01 2.6196459308266640e-02 - <_> - - 0 -1 2556 -4.6638878993690014e-03 - - 2.2009849548339844e-01 -1.9692299887537956e-02 - <_> - - 0 -1 2557 1.9794099498540163e-03 - - 3.6675110459327698e-02 -1.1910759657621384e-01 - <_> - - 0 -1 2558 -6.8223169073462486e-03 - - -7.6013803482055664e-02 2.6197660714387894e-02 - <_> - - 0 -1 2559 5.9645362198352814e-03 - - 4.9213368445634842e-02 -1.0780470073223114e-01 - <_> - - 0 -1 2560 1.4459050260484219e-02 - - 3.2462789677083492e-03 -8.5476738214492798e-01 - <_> - - 0 -1 2561 -3.1713109463453293e-02 - - 1.3757289946079254e-01 -3.6400198936462402e-02 - <_> - - 0 -1 2562 1.7335789743810892e-03 - - -4.3718948960304260e-02 5.9835158288478851e-02 - <_> - - 0 -1 2563 -5.0536859780550003e-03 - - -1.5021230280399323e-01 2.9182959347963333e-02 - <_> - - 0 -1 2564 8.4217369556427002e-02 - - 1.3661800185218453e-03 -9.5813941955566406e-01 - <_> - - 0 -1 2565 -1.0397040285170078e-02 - - 1.3979810476303101e-01 -3.3863049000501633e-02 - <_> - - 0 -1 2566 2.2687430027872324e-03 - - 1.8805570900440216e-02 -6.6583722829818726e-02 - <_> - - 0 -1 2567 -8.4558986127376556e-03 - - 9.0560458600521088e-02 -5.0610478967428207e-02 - <_> - - 0 -1 2568 1.3801630120724440e-03 - - 1.7754420638084412e-02 -2.1638050675392151e-01 - <_> - - 0 -1 2569 -5.5963802151381969e-03 - - -2.8498208522796631e-01 1.5376719646155834e-02 - <_> - - 0 -1 2570 2.6721679023467004e-04 - - -3.9111170917749405e-02 6.6796816885471344e-02 - <_> - - 0 -1 2571 -2.1694051101803780e-03 - - 2.2806470096111298e-01 -1.9059510901570320e-02 - <_> - - 0 -1 2572 -3.1538289040327072e-02 - - -8.6931541562080383e-02 9.8167890682816505e-03 - <_> - - 0 -1 2573 -7.5018982170149684e-04 - - 9.9676176905632019e-02 -4.2362589389085770e-02 - <_> - - 0 -1 2574 -6.4003129955381155e-04 - - 6.2989667057991028e-02 -3.9446629583835602e-02 - <_> - - 0 -1 2575 -1.5866950154304504e-02 - - -4.8367229104042053e-01 8.9298039674758911e-03 - <_> - - 0 -1 2576 8.7925972184166312e-04 - - -7.2101019322872162e-02 4.3867569416761398e-02 - <_> - - 0 -1 2577 -4.5651597902178764e-03 - - -1.3108620047569275e-01 3.7173461169004440e-02 - <_> - - 0 -1 2578 -2.7413619682192802e-03 - - 1.1473529785871506e-01 -4.2169798165559769e-02 - <_> - - 0 -1 2579 -2.1342469379305840e-02 - - -6.8548619747161865e-01 5.8210380375385284e-03 - <_> - - 0 -1 2580 1.4491120055026840e-05 - - -2.9132340103387833e-02 3.3831749111413956e-02 - <_> - 309 - -7.9887461662292480e-01 - - <_> - - 0 -1 2581 -1.8552249297499657e-02 - - 3.3236879110336304e-01 -7.6788291335105896e-02 - <_> - - 0 -1 2582 3.7926589720882475e-04 - - 1.7414020374417305e-02 -5.7631779462099075e-02 - <_> - - 0 -1 2583 2.1424360573291779e-02 - - -6.4302399754524231e-02 2.4737679958343506e-01 - <_> - - 0 -1 2584 4.4263061136007309e-03 - - -7.7862620353698730e-02 1.6879579424858093e-01 - <_> - - 0 -1 2585 -1.5863520093262196e-04 - - 1.4739909768104553e-01 -5.0722010433673859e-02 - <_> - - 0 -1 2586 -6.6188991069793701e-02 - - 5.7475470006465912e-02 -5.5869068950414658e-02 - <_> - - 0 -1 2587 3.4559089690446854e-02 - - -6.9819921627640724e-03 -4.1039318847656250e+02 - <_> - - 0 -1 2588 7.3930531740188599e-02 - - 6.0889549786224961e-05 -1.9960350036621094e+02 - <_> - - 0 -1 2589 1.8902160227298737e-02 - - 2.9056149287498556e-05 -5.2581162109375000e+03 - <_> - - 0 -1 2590 1.9612549804151058e-03 - - -2.3328019306063652e-02 4.2286589741706848e-02 - <_> - - 0 -1 2591 -2.7586980722844601e-03 - - -1.7501020431518555e-01 4.9470871686935425e-02 - <_> - - 0 -1 2592 -1.2046890333294868e-02 - - 2.2035419940948486e-01 1.2788879685103893e-02 - <_> - - 0 -1 2593 -1.8279790878295898e-02 - - 4.5822000503540039e-01 -1.9634220749139786e-02 - <_> - - 0 -1 2594 4.3859930883627385e-05 - - -3.4029088914394379e-02 3.8145478814840317e-02 - <_> - - 0 -1 2595 7.6734893023967743e-02 - - -3.1122019514441490e-02 2.9373010993003845e-01 - <_> - - 0 -1 2596 -2.2784480825066566e-02 - - 1.0999619960784912e-01 -4.7260750085115433e-02 - <_> - - 0 -1 2597 1.7537520034238696e-03 - - 7.7944591641426086e-02 -9.3691043555736542e-02 - <_> - - 0 -1 2598 -7.5380277121439576e-04 - - -1.2007279694080353e-01 3.7189111113548279e-02 - <_> - - 0 -1 2599 4.9356842646375299e-04 - - -5.6529350578784943e-02 1.1932630091905594e-01 - <_> - - 0 -1 2600 -3.1938559841364622e-03 - - 2.3886230587959290e-01 -1.0429210029542446e-02 - <_> - - 0 -1 2601 -6.2314997194334865e-04 - - -1.4654360711574554e-01 4.6651639044284821e-02 - <_> - - 0 -1 2602 7.5532711343839765e-04 - - -3.2616719603538513e-02 1.0278490185737610e-01 - <_> - - 0 -1 2603 -6.0558720724657178e-04 - - 1.4802519977092743e-01 -5.5854860693216324e-02 - <_> - - 0 -1 2604 -1.2911390513181686e-03 - - -2.4329729378223419e-01 2.1729959174990654e-02 - <_> - - 0 -1 2605 1.0470219422131777e-03 - - 3.1796138733625412e-02 -2.0254389941692352e-01 - <_> - - 0 -1 2606 2.2770989744458348e-04 - - -9.9047839641571045e-02 8.5004203021526337e-02 - <_> - - 0 -1 2607 -6.8532312288880348e-03 - - 9.5258437097072601e-02 -6.6690467298030853e-02 - <_> - - 0 -1 2608 1.6310160281136632e-03 - - 2.5861479341983795e-02 -1.2913499772548676e-01 - <_> - - 0 -1 2609 8.4447831613942981e-04 - - -9.9558450281620026e-02 7.8244321048259735e-02 - <_> - - 0 -1 2610 1.2907589785754681e-02 - - -1.9313080236315727e-02 1.5871819853782654e-01 - <_> - - 0 -1 2611 -1.8375849351286888e-02 - - -1.6427409648895264e-01 3.7290308624505997e-02 - <_> - - 0 -1 2612 7.7001117169857025e-02 - - 4.6129091642796993e-03 -3.5554099082946777e-01 - <_> - - 0 -1 2613 4.3118221219629049e-04 - - -7.4013233184814453e-02 7.7864721417427063e-02 - <_> - - 0 -1 2614 -2.3275790736079216e-03 - - 1.2112230062484741e-01 -6.0913208872079849e-02 - <_> - - 0 -1 2615 3.4061390906572342e-03 - - 4.6381261199712753e-02 -1.5369950234889984e-01 - <_> - - 0 -1 2616 1.6798749566078186e-03 - - -4.8045791685581207e-02 1.6896919906139374e-01 - <_> - - 0 -1 2617 -2.8759230190189555e-05 - - 7.1234047412872314e-02 -8.4967203438282013e-02 - <_> - - 0 -1 2618 -3.8337870500981808e-03 - - 8.6094066500663757e-02 -1.8024690449237823e-02 - <_> - - 0 -1 2619 -3.9875688962638378e-03 - - -1.9953170418739319e-01 3.2206621021032333e-02 - <_> - - 0 -1 2620 9.3647763133049011e-03 - - -3.1845349818468094e-02 1.1254569888114929e-01 - <_> - - 0 -1 2621 -1.8147890223190188e-03 - - 8.5613116621971130e-02 -6.8807862699031830e-02 - <_> - - 0 -1 2622 2.3888219147920609e-03 - - 4.1106618940830231e-02 -1.3841870427131653e-01 - <_> - - 0 -1 2623 7.7157230116426945e-03 - - -4.8835061490535736e-02 1.2875230610370636e-01 - <_> - - 0 -1 2624 1.2959349900484085e-02 - - 1.2101089581847191e-02 -7.2399519383907318e-02 - <_> - - 0 -1 2625 2.0204610191285610e-03 - - -7.5819760560989380e-02 9.4004109501838684e-02 - <_> - - 0 -1 2626 2.4580449098721147e-04 - - 2.7981899678707123e-02 -7.9659119248390198e-02 - <_> - - 0 -1 2627 2.6291629672050476e-01 - - 7.6313978061079979e-03 -6.2488871812820435e-01 - <_> - - 0 -1 2628 5.4684141650795937e-04 - - 3.6020711064338684e-02 -1.2037140130996704e-01 - <_> - - 0 -1 2629 2.2176979109644890e-03 - - -2.5367310270667076e-02 1.9185779988765717e-01 - <_> - - 0 -1 2630 -1.7476399661973119e-03 - - -6.5879262983798981e-02 2.9718939214944839e-02 - <_> - - 0 -1 2631 -2.3619020357728004e-02 - - 2.6847231388092041e-01 -1.8415899947285652e-02 - <_> - - 0 -1 2632 -2.8751560021191835e-03 - - -1.2898570299148560e-01 2.4393929168581963e-02 - <_> - - 0 -1 2633 6.8191969767212868e-03 - - 1.8544880673289299e-02 -2.7904790639877319e-01 - <_> - - 0 -1 2634 3.0725370161235332e-03 - - -2.1483320742845535e-02 2.4263529479503632e-01 - <_> - - 0 -1 2635 -2.0298749208450317e-02 - - -1.4076599478721619e-01 3.2566029578447342e-02 - <_> - - 0 -1 2636 -1.5689089894294739e-02 - - -6.9940197467803955e-01 3.9432961493730545e-03 - <_> - - 0 -1 2637 -1.1604740284383297e-03 - - 9.5765352249145508e-02 -6.2716588377952576e-02 - <_> - - 0 -1 2638 7.5667561031877995e-03 - - -2.6595719158649445e-02 1.9355979561805725e-01 - <_> - - 0 -1 2639 -3.1542551005259156e-04 - - 7.0579119026660919e-02 -7.1788802742958069e-02 - <_> - - 0 -1 2640 2.9042719397693872e-03 - - -6.1845920979976654e-02 4.2431510984897614e-02 - <_> - - 0 -1 2641 3.5413689911365509e-03 - - 5.9017430990934372e-02 -9.6548438072204590e-02 - <_> - - 0 -1 2642 1.1393419699743390e-03 - - 4.3081670999526978e-02 -1.4239120483398438e-01 - <_> - - 0 -1 2643 -4.6505071222782135e-03 - - 1.3614599406719208e-01 -4.5110020786523819e-02 - <_> - - 0 -1 2644 -3.4854039549827576e-03 - - -6.9675557315349579e-02 1.4633069746196270e-02 - <_> - - 0 -1 2645 -3.7426329217851162e-03 - - -1.5967729687690735e-01 3.3669691532850266e-02 - <_> - - 0 -1 2646 -2.9627270996570587e-03 - - 2.0822240412235260e-01 -2.2225260734558105e-02 - <_> - - 0 -1 2647 -3.4283090382814407e-02 - - 2.1095730364322662e-01 -2.3902049288153648e-02 - <_> - - 0 -1 2648 3.3819628879427910e-04 - - 3.9674218744039536e-02 -1.3274720311164856e-01 - <_> - - 0 -1 2649 2.3642720188945532e-03 - - -2.4829670786857605e-02 2.0826670527458191e-01 - <_> - - 0 -1 2650 -1.2370860204100609e-02 - - -1.7958630621433258e-01 7.0276390761137009e-03 - <_> - - 0 -1 2651 -9.7465672297403216e-04 - - 6.9008462131023407e-02 -7.2172008454799652e-02 - <_> - - 0 -1 2652 4.1931481100618839e-03 - - -4.4049788266420364e-02 6.0757238417863846e-02 - <_> - - 0 -1 2653 -5.9395581483840942e-03 - - -1.1568579822778702e-01 4.6306878328323364e-02 - <_> - - 0 -1 2654 3.3657620660960674e-03 - - 7.1067977696657181e-03 -5.6800097227096558e-01 - <_> - - 0 -1 2655 5.2664991468191147e-02 - - -8.0993287265300751e-03 6.1797207593917847e-01 - <_> - - 0 -1 2656 -8.6903236806392670e-03 - - 8.8130272924900055e-02 -5.3699720650911331e-02 - <_> - - 0 -1 2657 5.1246141083538532e-04 - - 3.2490119338035583e-02 -1.4880390465259552e-01 - <_> - - 0 -1 2658 4.1789390146732330e-02 - - -1.0749000124633312e-02 1.7396600544452667e-01 - <_> - - 0 -1 2659 1.2822130229324102e-03 - - -4.3590739369392395e-02 1.0424520075321198e-01 - <_> - - 0 -1 2660 1.5393650159239769e-02 - - 1.2413539923727512e-02 -1.1460710316896439e-01 - <_> - - 0 -1 2661 -7.1986489929258823e-03 - - -1.5547029674053192e-01 3.2518330961465836e-02 - <_> - - 0 -1 2662 2.4960329756140709e-03 - - -3.2073240727186203e-02 6.2223941087722778e-02 - <_> - - 0 -1 2663 1.5824640169739723e-02 - - -3.3876150846481323e-02 1.3409389555454254e-01 - <_> - - 0 -1 2664 -1.1245839996263385e-03 - - -1.0918530076742172e-01 3.2895151525735855e-02 - <_> - - 0 -1 2665 1.5742470277473330e-03 - - -6.6320508718490601e-02 6.3174061477184296e-02 - <_> - - 0 -1 2666 1.3438949827104807e-03 - - -3.1797438859939575e-02 8.5642039775848389e-02 - <_> - - 0 -1 2667 -1.7369530396535993e-03 - - -1.0020039975643158e-01 4.5710239559412003e-02 - <_> - - 0 -1 2668 1.3791640289127827e-02 - - -1.3253919780254364e-02 1.0214310139417648e-01 - <_> - - 0 -1 2669 -1.0735140182077885e-02 - - 1.2846539914608002e-01 -3.9404049515724182e-02 - <_> - - 0 -1 2670 2.9586190357804298e-03 - - 2.0358830690383911e-02 -6.5112963318824768e-02 - <_> - - 0 -1 2671 4.0438622236251831e-03 - - -2.4486489593982697e-02 1.7876209318637848e-01 - <_> - - 0 -1 2672 -3.6525711417198181e-02 - - -3.0766680836677551e-01 3.2902029342949390e-03 - <_> - - 0 -1 2673 8.7369624525308609e-03 - - 2.9470490291714668e-02 -1.5324589610099792e-01 - <_> - - 0 -1 2674 2.0252179820090532e-03 - - -4.0819671005010605e-02 5.9705868363380432e-02 - <_> - - 0 -1 2675 5.5626290850341320e-03 - - 1.1083589866757393e-02 -3.8313630223274231e-01 - <_> - - 0 -1 2676 -1.4883900294080377e-03 - - 8.7504617869853973e-02 -6.4911797642707825e-02 - <_> - - 0 -1 2677 1.4624910363636445e-05 - - -7.4116103351116180e-02 5.5589601397514343e-02 - <_> - - 0 -1 2678 3.4180650254711509e-04 - - -5.3940810263156891e-02 5.3457278758287430e-02 - <_> - - 0 -1 2679 1.5538090374320745e-03 - - 5.6233700364828110e-02 -8.4622420370578766e-02 - <_> - - 0 -1 2680 6.7849917104467750e-04 - - -3.8959890604019165e-02 1.0434179753065109e-01 - <_> - - 0 -1 2681 -4.7519501298666000e-02 - - 1.0885579884052277e-01 -4.0618479251861572e-02 - <_> - - 0 -1 2682 2.4074900895357132e-02 - - 3.5018681082874537e-03 -6.4238542318344116e-01 - <_> - - 0 -1 2683 3.7433409597724676e-03 - - 2.6027470827102661e-02 -1.6493119299411774e-01 - <_> - - 0 -1 2684 7.2088050656020641e-03 - - -1.2712650001049042e-02 1.3134109973907471e-01 - <_> - - 0 -1 2685 -1.0108030401170254e-03 - - 6.1837401241064072e-02 -8.2996368408203125e-02 - <_> - - 0 -1 2686 4.1825440712273121e-03 - - -1.0030060075223446e-02 1.1928550153970718e-01 - <_> - - 0 -1 2687 -3.1841539312154055e-03 - - -2.5018841028213501e-01 1.7455190420150757e-02 - <_> - - 0 -1 2688 -2.5301869958639145e-02 - - -4.0261000394821167e-01 1.0077700018882751e-02 - <_> - - 0 -1 2689 -7.3312386870384216e-02 - - 2.7588349580764771e-01 -1.7455000430345535e-02 - <_> - - 0 -1 2690 2.8851899504661560e-01 - - 9.3694366514682770e-03 -2.5082978606224060e-01 - <_> - - 0 -1 2691 -3.0820369720458984e-03 - - 2.5158360600471497e-01 -1.8791029229760170e-02 - <_> - - 0 -1 2692 -1.5379919670522213e-02 - - -3.3297958970069885e-01 6.7029618658125401e-03 - <_> - - 0 -1 2693 -2.5755220558494329e-03 - - -1.4434809982776642e-01 3.0039159581065178e-02 - <_> - - 0 -1 2694 -2.1770859602838755e-03 - - 6.2653936445713043e-02 -3.4369219094514847e-02 - <_> - - 0 -1 2695 -1.1601459980010986e-01 - - -1.2724180519580841e-01 3.5242829471826553e-02 - <_> - - 0 -1 2696 3.9402980357408524e-02 - - -1.7962940037250519e-02 8.2134842872619629e-02 - <_> - - 0 -1 2697 3.1257659196853638e-02 - - -4.9964789301156998e-02 1.0353790223598480e-01 - <_> - - 0 -1 2698 2.6839839294552803e-02 - - -3.4829258918762207e-02 7.7249996364116669e-02 - <_> - - 0 -1 2699 6.1816979199647903e-02 - - -3.2788280397653580e-02 1.3600580394268036e-01 - <_> - - 0 -1 2700 6.3738808035850525e-02 - - 1.5652630478143692e-02 -1.4570459723472595e-01 - <_> - - 0 -1 2701 -3.6892290227115154e-03 - - -1.3121150434017181e-01 3.6355018615722656e-02 - <_> - - 0 -1 2702 -8.2587070763111115e-02 - - -1.7447319626808167e-01 5.7495138607919216e-03 - <_> - - 0 -1 2703 5.6636601686477661e-02 - - -1.0941830463707447e-02 4.2631658911705017e-01 - <_> - - 0 -1 2704 -6.5044318325817585e-03 - - 7.4859157204627991e-02 -3.5383179783821106e-02 - <_> - - 0 -1 2705 -2.3780569434165955e-02 - - -1.5401679277420044e-01 3.0552649870514870e-02 - <_> - - 0 -1 2706 2.8647059574723244e-02 - - 4.9762979149818420e-02 -4.5181389898061752e-02 - <_> - - 0 -1 2707 -5.7239918969571590e-03 - - 1.3393920660018921e-01 -3.6599840968847275e-02 - <_> - - 0 -1 2708 -1.8808670341968536e-01 - - -8.2748666405677795e-02 1.3201599940657616e-02 - <_> - - 0 -1 2709 -1.5791060402989388e-02 - - 1.6398489475250244e-01 -2.7588550001382828e-02 - <_> - - 0 -1 2710 9.5513111352920532e-01 - - -2.2177249193191528e-03 3.4002560377120972e-01 - <_> - - 0 -1 2711 6.9580972194671631e-01 - - -1.0847539640963078e-02 4.2184200882911682e-01 - <_> - - 0 -1 2712 -2.2638689726591110e-02 - - -6.9218701124191284e-01 1.8343270057812333e-03 - <_> - - 0 -1 2713 2.4945749901235104e-03 - - 3.4244280308485031e-02 -1.2839129567146301e-01 - <_> - - 0 -1 2714 1.1748660355806351e-02 - - -1.3351519592106342e-02 1.3926979899406433e-01 - <_> - - 0 -1 2715 -9.7356218611821532e-04 - - 1.0277090221643448e-01 -5.4498881101608276e-02 - <_> - - 0 -1 2716 -2.5124179199337959e-02 - - -1.2226320058107376e-01 2.4546569213271141e-02 - <_> - - 0 -1 2717 -2.9109479859471321e-02 - - -1.3387270271778107e-01 3.4804411232471466e-02 - <_> - - 0 -1 2718 -2.5209460407495499e-02 - - 1.5426969528198242e-01 -2.9093060642480850e-02 - <_> - - 0 -1 2719 2.8921720513608307e-05 - - -8.7873406708240509e-02 5.0044890493154526e-02 - <_> - - 0 -1 2720 1.5944410115480423e-03 - - -2.1487699821591377e-02 3.3794458955526352e-02 - <_> - - 0 -1 2721 -2.4497460108250380e-03 - - 9.3932069838047028e-02 -4.6001140028238297e-02 - <_> - - 0 -1 2722 1.0740390047430992e-02 - - 4.5302681624889374e-02 -9.2800490558147430e-02 - <_> - - 0 -1 2723 3.4238519147038460e-03 - - -6.3131660223007202e-02 7.8274093568325043e-02 - <_> - - 0 -1 2724 1.2687790207564831e-02 - - -1.4953400008380413e-02 2.3682670295238495e-01 - <_> - - 0 -1 2725 -7.3656099848449230e-03 - - -1.9476279616355896e-01 2.4360220879316330e-02 - <_> - - 0 -1 2726 1.0200890153646469e-01 - - 4.0122540667653084e-03 -5.3724962472915649e-01 - <_> - - 0 -1 2727 -2.6625579223036766e-02 - - 1.7184010148048401e-01 -2.5444649159908295e-02 - <_> - - 0 -1 2728 -2.9014078900218010e-03 - - -3.6081880331039429e-01 8.7030120193958282e-03 - <_> - - 0 -1 2729 -1.4157840269035660e-05 - - 6.8706989288330078e-02 -6.4286127686500549e-02 - <_> - - 0 -1 2730 -6.1351951444521546e-04 - - -6.6050916910171509e-02 2.2572780027985573e-02 - <_> - - 0 -1 2731 2.0250449888408184e-03 - - -1.9751559942960739e-02 2.2373759746551514e-01 - <_> - - 0 -1 2732 4.2518540285527706e-03 - - 2.3174580186605453e-02 -7.0114336907863617e-02 - <_> - - 0 -1 2733 -2.1689679473638535e-02 - - -5.1939392089843750e-01 8.3778435364365578e-03 - <_> - - 0 -1 2734 -1.4693619959871285e-05 - - 4.3421141803264618e-02 -4.3481610715389252e-02 - <_> - - 0 -1 2735 -1.1886609718203545e-03 - - -1.4900510013103485e-01 2.8446840122342110e-02 - <_> - - 0 -1 2736 -2.3027509450912476e-03 - - 3.8527239114046097e-02 -4.0906090289354324e-02 - <_> - - 0 -1 2737 -1.2595600448548794e-02 - - 1.0461640357971191e-01 -3.8185920566320419e-02 - <_> - - 0 -1 2738 -6.2729697674512863e-03 - - 9.3321256339550018e-02 -4.8175711184740067e-02 - <_> - - 0 -1 2739 -4.6335258521139622e-03 - - -1.3342230021953583e-01 3.1944058835506439e-02 - <_> - - 0 -1 2740 -9.7669087350368500e-02 - - -4.1564458608627319e-01 4.0813097730278969e-03 - <_> - - 0 -1 2741 -1.0522989928722382e-01 - - -4.2108398675918579e-01 9.7584994509816170e-03 - <_> - - 0 -1 2742 3.0224110931158066e-02 - - 1.7810890451073647e-02 -1.8008120357990265e-01 - <_> - - 0 -1 2743 -4.4741849415004253e-03 - - 1.7108829319477081e-01 -2.5597169995307922e-02 - <_> - - 0 -1 2744 -1.4250929780246224e-05 - - 3.8947280496358871e-02 -4.8989661037921906e-02 - <_> - - 0 -1 2745 -1.3952420093119144e-02 - - -2.8586119413375854e-01 1.4210299588739872e-02 - <_> - - 0 -1 2746 -5.9520517243072391e-04 - - 2.8458939865231514e-02 -4.8770058900117874e-02 - <_> - - 0 -1 2747 1.2668339535593987e-02 - - -1.9914640113711357e-02 2.2914430499076843e-01 - <_> - - 0 -1 2748 -6.5630413591861725e-02 - - 9.5949631929397583e-01 -8.1838190089911222e-04 - <_> - - 0 -1 2749 5.1044370047748089e-04 - - -6.2212668359279633e-02 6.8753853440284729e-02 - <_> - - 0 -1 2750 8.2773733884096146e-03 - - 7.8722098842263222e-03 -5.2360677719116211e-01 - <_> - - 0 -1 2751 -1.3714290224015713e-02 - - 2.9130959510803223e-01 -1.6186399385333061e-02 - <_> - - 0 -1 2752 -1.6599230002611876e-03 - - -1.8650990724563599e-01 2.1775769069790840e-02 - <_> - - 0 -1 2753 1.3917240314185619e-02 - - -5.4833069443702698e-02 7.5145483016967773e-02 - <_> - - 0 -1 2754 -1.4104699715971947e-02 - - -1.2660549581050873e-01 3.9071101695299149e-02 - <_> - - 0 -1 2755 -2.6598859578371048e-02 - - 9.9623836576938629e-02 -4.5457080006599426e-02 - <_> - - 0 -1 2756 -5.3842482157051563e-04 - - -8.2026347517967224e-02 2.7188310399651527e-02 - <_> - - 0 -1 2757 1.4044049748918042e-05 - - -6.2360528856515884e-02 6.7301332950592041e-02 - <_> - - 0 -1 2758 -3.9561990648508072e-02 - - -4.8174971342086792e-01 4.6106358058750629e-03 - <_> - - 0 -1 2759 1.0853289859369397e-03 - - 2.6313990354537964e-02 -1.5306760370731354e-01 - <_> - - 0 -1 2760 -1.9153479486703873e-02 - - 1.8400320410728455e-01 -9.7944093868136406e-03 - <_> - - 0 -1 2761 3.0306449159979820e-02 - - -1.0793870314955711e-02 3.9886739850044250e-01 - <_> - - 0 -1 2762 1.6124650137498975e-03 - - -1.1791810393333435e-02 1.2058059871196747e-01 - <_> - - 0 -1 2763 1.2632669880986214e-02 - - 9.2375585809350014e-03 -4.2379188537597656e-01 - <_> - - 0 -1 2764 -4.3210129661019892e-05 - - 5.3656429052352905e-02 -4.3450549244880676e-02 - <_> - - 0 -1 2765 1.4556180394720286e-04 - - -5.0275009125471115e-02 7.6121151447296143e-02 - <_> - - 0 -1 2766 1.4344939700094983e-05 - - -5.1202371716499329e-02 5.5829189717769623e-02 - <_> - - 0 -1 2767 -7.3230598354712129e-04 - - 1.3922749459743500e-01 -3.2454621046781540e-02 - <_> - - 0 -1 2768 1.1387620121240616e-02 - - -6.2937070615589619e-03 1.8512730300426483e-01 - <_> - - 0 -1 2769 -2.5180529337376356e-03 - - -1.3749399781227112e-01 3.2907929271459579e-02 - <_> - - 0 -1 2770 5.1528509706258774e-02 - - -1.1617249809205532e-02 1.0777329653501511e-01 - <_> - - 0 -1 2771 -2.5644950568675995e-02 - - 1.2324140220880508e-01 -3.5101208835840225e-02 - <_> - - 0 -1 2772 1.6199030214920640e-03 - - 3.3527150750160217e-02 -1.3585910201072693e-01 - <_> - - 0 -1 2773 -1.8191960407420993e-03 - - -1.6489550471305847e-01 3.0319610610604286e-02 - <_> - - 0 -1 2774 -3.1801960431039333e-03 - - 1.1684840172529221e-01 -1.8739059567451477e-02 - <_> - - 0 -1 2775 9.2808151384815574e-04 - - 3.8395769894123077e-02 -1.1520709842443466e-01 - <_> - - 0 -1 2776 -4.1049402207136154e-03 - - 4.4779919087886810e-02 -2.7737030759453773e-02 - <_> - - 0 -1 2777 6.7887702025473118e-03 - - -4.8911478370428085e-02 9.7002588212490082e-02 - <_> - - 0 -1 2778 -4.7330660745501518e-03 - - -9.3821138143539429e-02 2.7040770277380943e-02 - <_> - - 0 -1 2779 -2.1507510915398598e-02 - - 1.4032480120658875e-01 -3.1963579356670380e-02 - <_> - - 0 -1 2780 5.0437378883361816e-01 - - 8.9663412654772401e-04 -1.0000989437103271e+00 - <_> - - 0 -1 2781 -2.8804481029510498e-01 - - -3.1754299998283386e-01 1.2626879848539829e-02 - <_> - - 0 -1 2782 -5.2623480558395386e-02 - - 8.1666037440299988e-02 -1.2998109683394432e-02 - <_> - - 0 -1 2783 4.1319038718938828e-03 - - -7.2914630174636841e-02 7.3860652744770050e-02 - <_> - - 0 -1 2784 3.5127711016684771e-03 - - 2.1715799346566200e-02 -9.8766706883907318e-02 - <_> - - 0 -1 2785 -6.7080818116664886e-03 - - -2.4903470277786255e-01 2.0480340346693993e-02 - <_> - - 0 -1 2786 -1.3876140117645264e-02 - - 7.2459720075130463e-02 -1.1381589807569981e-02 - <_> - - 0 -1 2787 3.6984090693295002e-03 - - -5.0353258848190308e-02 1.0232850164175034e-01 - <_> - - 0 -1 2788 -5.5892078671604395e-04 - - 5.5168900638818741e-02 -2.3259639739990234e-02 - <_> - - 0 -1 2789 1.9318210252095014e-04 - - -5.3024489432573318e-02 8.0820031464099884e-02 - <_> - - 0 -1 2790 5.4443400353193283e-02 - - 1.9684119615703821e-03 -4.9336650967597961e-01 - <_> - - 0 -1 2791 5.7882429100573063e-03 - - 4.2235270142555237e-02 -9.3656897544860840e-02 - <_> - - 0 -1 2792 -5.3214468061923981e-04 - - -6.8211279809474945e-02 4.0915060788393021e-02 - <_> - - 0 -1 2793 -1.5291050076484680e-03 - - 1.3078080117702484e-01 -3.1037170439958572e-02 - <_> - - 0 -1 2794 1.4692340300825890e-05 - - -9.7166307270526886e-02 5.8675400912761688e-02 - <_> - - 0 -1 2795 8.1570359179750085e-04 - - -5.2740119397640228e-02 8.4838531911373138e-02 - <_> - - 0 -1 2796 8.3234731573611498e-04 - - -4.5831769704818726e-02 6.0256149619817734e-02 - <_> - - 0 -1 2797 -1.8306729616597295e-03 - - -2.7214428782463074e-01 1.8664810806512833e-02 - <_> - - 0 -1 2798 1.6016690060496330e-03 - - -2.3981889709830284e-02 1.5741920471191406e-01 - <_> - - 0 -1 2799 1.5611300477758050e-03 - - 4.9081899225711823e-02 -9.3477390706539154e-02 - <_> - - 0 -1 2800 -5.3921141661703587e-03 - - 8.7293423712253571e-02 -3.9956189692020416e-02 - <_> - - 0 -1 2801 1.6652110498398542e-03 - - -5.1185470074415207e-02 7.7633060514926910e-02 - <_> - - 0 -1 2802 -1.2331049656495452e-03 - - -7.4288368225097656e-02 2.3193370550870895e-02 - <_> - - 0 -1 2803 5.6793959811329842e-04 - - -6.6756121814250946e-02 8.2881033420562744e-02 - <_> - - 0 -1 2804 1.5132910339161754e-03 - - 2.0081700757145882e-02 -7.6579719781875610e-02 - <_> - - 0 -1 2805 -1.0698379483073950e-03 - - -1.3229699432849884e-01 4.2196661233901978e-02 - <_> - - 0 -1 2806 -1.7369719222187996e-02 - - 2.7938818931579590e-01 -1.5034230425953865e-02 - <_> - - 0 -1 2807 -9.2626689001917839e-03 - - -2.2753229737281799e-01 1.9179979339241982e-02 - <_> - - 0 -1 2808 1.8482010811567307e-02 - - -1.4924430288374424e-02 3.1277260184288025e-01 - <_> - - 0 -1 2809 -1.4998589642345905e-02 - - 2.6199528574943542e-01 -1.5377020463347435e-02 - <_> - - 0 -1 2810 6.5004371572285891e-04 - - 2.4507129564881325e-02 -1.6830539703369141e-01 - <_> - - 0 -1 2811 -2.5195319205522537e-02 - - -5.9329587221145630e-01 6.0378611087799072e-03 - <_> - - 0 -1 2812 8.1507470458745956e-03 - - -1.5775049105286598e-02 1.2555959820747375e-01 - <_> - - 0 -1 2813 4.5397952198982239e-03 - - 7.2475941851735115e-03 -5.6123107671737671e-01 - <_> - - 0 -1 2814 2.8840870072599500e-05 - - -6.5030217170715332e-02 5.5643379688262939e-02 - <_> - - 0 -1 2815 -4.3392801284790039e-01 - - -5.7634198665618896e-01 7.1343099698424339e-03 - <_> - - 0 -1 2816 -2.1952809765934944e-03 - - 4.5806728303432465e-02 -2.1312480792403221e-02 - <_> - - 0 -1 2817 -1.1394290486350656e-03 - - 1.4237360656261444e-01 -2.5946369394659996e-02 - <_> - - 0 -1 2818 3.0147060751914978e-03 - - 1.7312619835138321e-02 -3.8250389695167542e-01 - <_> - - 0 -1 2819 1.5648039698135108e-04 - - 3.9767131209373474e-02 -9.9703207612037659e-02 - <_> - - 0 -1 2820 1.0532010346651077e-03 - - -1.5648569911718369e-02 9.7645491361618042e-02 - <_> - - 0 -1 2821 -7.9741291701793671e-03 - - 1.8544709682464600e-01 -2.2098619490861893e-02 - <_> - - 0 -1 2822 -4.7134719789028168e-03 - - -9.1619712114334106e-01 3.6266651004552841e-03 - <_> - - 0 -1 2823 1.4999460428953171e-02 - - -9.6984812989830971e-03 5.0326949357986450e-01 - <_> - - 0 -1 2824 2.7833459898829460e-03 - - 4.8701078630983829e-03 -2.6087599992752075e-01 - <_> - - 0 -1 2825 2.1982809994369745e-04 - - 3.7642948329448700e-02 -1.1638490110635757e-01 - <_> - - 0 -1 2826 -5.5281631648540497e-04 - - 5.3662311285734177e-02 -1.8457710742950439e-02 - <_> - - 0 -1 2827 8.1757438601925969e-04 - - -3.0396200716495514e-02 1.4339430630207062e-01 - <_> - - 0 -1 2828 -5.7877011597156525e-02 - - -5.6250417232513428e-01 3.0934759415686131e-03 - <_> - - 0 -1 2829 -4.4983409345149994e-02 - - -8.4331500530242920e-01 4.5743319205939770e-03 - <_> - - 0 -1 2830 -1.6125569818541408e-03 - - -1.6456800699234009e-01 2.5509359315037727e-02 - <_> - - 0 -1 2831 7.2911148890852928e-03 - - -4.7056321054697037e-02 8.0835387110710144e-02 - <_> - - 0 -1 2832 1.7726710066199303e-03 - - 3.7935160100460052e-02 -6.6936686635017395e-02 - <_> - - 0 -1 2833 -8.0677121877670288e-03 - - -1.9031119346618652e-01 2.4777170270681381e-02 - <_> - - 0 -1 2834 -7.9460779670625925e-04 - - 8.6663946509361267e-02 -3.5398159176111221e-02 - <_> - - 0 -1 2835 -1.4300229850050528e-05 - - 6.0487300157546997e-02 -6.5558813512325287e-02 - <_> - - 0 -1 2836 2.0962581038475037e-03 - - -2.0192330703139305e-02 1.3147759437561035e-01 - <_> - - 0 -1 2837 5.0030398415401578e-04 - - 3.4723591059446335e-02 -1.1322329938411713e-01 - <_> - - 0 -1 2838 2.0867818966507912e-03 - - -1.3874029740691185e-02 6.8921387195587158e-02 - <_> - - 0 -1 2839 3.3986899070441723e-03 - - -1.8986670300364494e-02 2.0400190353393555e-01 - <_> - - 0 -1 2840 1.1253410018980503e-02 - - 2.2273620124906301e-03 -9.2255651950836182e-01 - <_> - - 0 -1 2841 -1.2344319839030504e-03 - - -1.2524029612541199e-01 3.1339269131422043e-02 - <_> - - 0 -1 2842 1.6126739792525768e-03 - - -1.5665169805288315e-02 8.4837719798088074e-02 - <_> - - 0 -1 2843 -5.2141858031973243e-04 - - 9.5479287207126617e-02 -4.7874130308628082e-02 - <_> - - 0 -1 2844 3.8721379823982716e-03 - - 5.4993298836052418e-03 -4.4602560997009277e-01 - <_> - - 0 -1 2845 1.7618340253829956e-01 - - -4.1341241449117661e-02 1.0009519755840302e-01 - <_> - - 0 -1 2846 -1.0830520186573267e-03 - - 6.8640246987342834e-02 -4.4131200760602951e-02 - <_> - - 0 -1 2847 1.0719549609348178e-03 - - 3.9141189306974411e-02 -1.0489390045404434e-01 - <_> - - 0 -1 2848 9.4975891988724470e-04 - - 3.6073371767997742e-02 -1.2237410247325897e-01 - <_> - - 0 -1 2849 -9.6825882792472839e-03 - - 2.1743309497833252e-01 -1.9503809511661530e-02 - <_> - - 0 -1 2850 2.9981420375406742e-03 - - -1.1931939981877804e-02 9.4061717391014099e-02 - <_> - - 0 -1 2851 3.3787859138101339e-03 - - 3.8003969937562943e-02 -1.1360760033130646e-01 - <_> - - 0 -1 2852 -2.6151719503104687e-03 - - 1.5477259457111359e-01 -2.9518639668822289e-02 - <_> - - 0 -1 2853 -1.1613050010055304e-03 - - -2.0248539745807648e-01 2.0097140222787857e-02 - <_> - - 0 -1 2854 -1.6141240485012531e-03 - - -1.0936950147151947e-01 2.9148740693926811e-02 - <_> - - 0 -1 2855 -2.1682349033653736e-03 - - 1.3386780023574829e-01 -2.9886990785598755e-02 - <_> - - 0 -1 2856 2.1131899207830429e-02 - - 4.5307017862796783e-03 -5.3612178564071655e-01 - <_> - - 0 -1 2857 1.6037460591178387e-04 - - 4.3597098439931870e-02 -8.4111146628856659e-02 - <_> - - 0 -1 2858 -9.3009177362546325e-04 - - 9.5719091594219208e-02 -3.5718031227588654e-02 - <_> - - 0 -1 2859 -8.7824072688817978e-03 - - -3.6118468642234802e-01 1.0629709810018539e-02 - <_> - - 0 -1 2860 5.3067589178681374e-03 - - -8.9432783424854279e-03 1.5807029604911804e-01 - <_> - - 0 -1 2861 4.6785878948867321e-03 - - -1.6060940921306610e-02 2.4921239912509918e-01 - <_> - - 0 -1 2862 6.7471889778971672e-03 - - -3.2983239740133286e-02 6.1737928539514542e-02 - <_> - - 0 -1 2863 -4.1250120848417282e-03 - - -1.3271600008010864e-01 3.0833190307021141e-02 - <_> - - 0 -1 2864 6.8065262166783214e-04 - - 2.5545250624418259e-02 -1.0341659933328629e-01 - <_> - - 0 -1 2865 2.1838350221514702e-03 - - -2.5376550853252411e-02 1.5284040570259094e-01 - <_> - - 0 -1 2866 -8.2007780671119690e-02 - - -6.8529888987541199e-02 3.8178220391273499e-02 - <_> - - 0 -1 2867 5.4427138529717922e-03 - - 4.2902021668851376e-03 -8.7351191043853760e-01 - <_> - - 0 -1 2868 5.6404271163046360e-04 - - 3.5445190966129303e-02 -8.5448153316974640e-02 - <_> - - 0 -1 2869 -4.0039150044322014e-03 - - -2.2544440627098083e-01 1.6658950597047806e-02 - <_> - - 0 -1 2870 7.1750470669940114e-04 - - -3.5013999789953232e-02 8.5731953382492065e-02 - <_> - - 0 -1 2871 2.1980039309710264e-03 - - -3.5395350307226181e-02 1.0176719725131989e-01 - <_> - - 0 -1 2872 -6.0970097547397017e-04 - - 6.0024809092283249e-02 -8.4693066775798798e-02 - <_> - - 0 -1 2873 5.7354441378265619e-04 - - -5.5539701133966446e-02 8.1733368337154388e-02 - <_> - - 0 -1 2874 1.1020589619874954e-02 - - 4.4961579144001007e-02 -1.0106059908866882e-01 - <_> - - 0 -1 2875 3.2966160215437412e-03 - - -5.1389090716838837e-02 8.1389263272285461e-02 - <_> - - 0 -1 2876 -2.0174959208816290e-03 - - 4.0528461337089539e-02 -3.2342150807380676e-02 - <_> - - 0 -1 2877 -4.8243958735838532e-04 - - -1.1752799898386002e-01 3.4329470247030258e-02 - <_> - - 0 -1 2878 -3.7981800734996796e-02 - - 2.0706389844417572e-01 -9.8644997924566269e-03 - <_> - - 0 -1 2879 -6.9430111907422543e-03 - - 3.3689939975738525e-01 -1.1807870119810104e-02 - <_> - - 0 -1 2880 -4.8804618418216705e-03 - - -4.1485041379928589e-01 8.2202637568116188e-03 - <_> - - 0 -1 2881 1.4070210454519838e-05 - - -5.6398481130599976e-02 6.8512678146362305e-02 - <_> - - 0 -1 2882 -2.7632080018520355e-02 - - -5.7075572013854980e-01 6.3934479840099812e-03 - <_> - - 0 -1 2883 6.5936171449720860e-04 - - 3.2117888331413269e-02 -1.1347310245037079e-01 - <_> - - 0 -1 2884 5.0442051142454147e-02 - - 3.5058089997619390e-03 -2.4307049810886383e-01 - <_> - - 0 -1 2885 -3.5251879598945379e-03 - - 7.3516011238098145e-02 -5.0434000790119171e-02 - <_> - - 0 -1 2886 -9.8136421293020248e-03 - - 6.6950842738151550e-02 -3.7114970386028290e-02 - <_> - - 0 -1 2887 7.7288062311708927e-03 - - -3.3462271094322205e-02 1.4445079863071442e-01 - <_> - - 0 -1 2888 -6.5115757752209902e-04 - - 4.9658838659524918e-02 -3.3331710845232010e-02 - <_> - - 0 -1 2889 -7.3544832412153482e-04 - - -1.6646279394626617e-01 3.0607059597969055e-02 - <_> - 334 - -7.7826201915740967e-01 - - <_> - - 0 -1 2890 -6.5500719938427210e-04 - - 1.0611940175294876e-01 -1.8115450441837311e-01 - <_> - - 0 -1 2891 -1.9778949208557606e-03 - - 1.3503830134868622e-01 -4.6880759298801422e-02 - <_> - - 0 -1 2892 5.9389008674770594e-04 - - -8.4648221731185913e-02 1.2404429912567139e-01 - <_> - - 0 -1 2893 1.0614610509946942e-03 - - -5.9560459107160568e-02 1.8259480595588684e-01 - <_> - - 0 -1 2894 2.7606791257858276e-01 - - 6.2563497340306640e-04 -2.1944240234375000e+04 - <_> - - 0 -1 2895 -2.9046900453977287e-04 - - 7.4143633246421814e-02 -1.1948379874229431e-01 - <_> - - 0 -1 2896 1.1933119967579842e-02 - - -1.3460500165820122e-02 2.7524510025978088e-01 - <_> - - 0 -1 2897 1.0096719861030579e-01 - - -5.6561990641057491e-03 -2.4996870040893555e+01 - <_> - - 0 -1 2898 -1.5156090259552002e-02 - - 1.4056429266929626e-01 -4.4841770082712173e-02 - <_> - - 0 -1 2899 -1.5076439594849944e-03 - - -1.7628009617328644e-01 3.8193639367818832e-02 - <_> - - 0 -1 2900 -1.9093969604000449e-03 - - 1.1207529902458191e-01 -4.8806078732013702e-02 - <_> - - 0 -1 2901 3.5581018892116845e-04 - - 5.0305519253015518e-02 -1.2028399854898453e-01 - <_> - - 0 -1 2902 1.2928070500493050e-03 - - -6.7517459392547607e-02 8.5675567388534546e-02 - <_> - - 0 -1 2903 -1.1862709652632475e-03 - - -7.1755349636077881e-02 2.9050039127469063e-02 - <_> - - 0 -1 2904 2.9675700716325082e-05 - - -9.7550496459007263e-02 5.5263109505176544e-02 - <_> - - 0 -1 2905 -5.1812059246003628e-04 - - 1.3014769554138184e-01 -4.0146790444850922e-02 - <_> - - 0 -1 2906 -2.4787770234979689e-04 - - -1.2997619807720184e-01 4.5160390436649323e-02 - <_> - - 0 -1 2907 5.0375860882923007e-04 - - 2.5243489071726799e-02 -1.1178129911422729e-01 - <_> - - 0 -1 2908 6.3750747358426452e-04 - - -5.1844630390405655e-02 1.1380760371685028e-01 - <_> - - 0 -1 2909 -5.5010168580338359e-04 - - -1.5109330415725708e-01 3.0021730810403824e-02 - <_> - - 0 -1 2910 2.0001670054625720e-04 - - 4.6603560447692871e-02 -1.2110610306262970e-01 - <_> - - 0 -1 2911 -1.2848580256104469e-02 - - 1.4400559663772583e-01 -2.4580590426921844e-02 - <_> - - 0 -1 2912 8.7248822674155235e-03 - - -3.0027579516172409e-02 1.8809199333190918e-01 - <_> - - 0 -1 2913 9.0796118602156639e-03 - - 8.9979087933897972e-03 -2.1755939722061157e-01 - <_> - - 0 -1 2914 -6.0907658189535141e-03 - - -2.4176609516143799e-01 2.0848300307989120e-02 - <_> - - 0 -1 2915 -2.0602690055966377e-02 - - 1.4985099434852600e-01 -2.2443689405918121e-02 - <_> - - 0 -1 2916 2.1011219359934330e-04 - - 5.8400630950927734e-02 -8.2507818937301636e-02 - <_> - - 0 -1 2917 7.6200407929718494e-03 - - -4.6605788171291351e-02 1.1164589971303940e-01 - <_> - - 0 -1 2918 1.3028680346906185e-02 - - 1.1367970146238804e-02 -4.4878101348876953e-01 - <_> - - 0 -1 2919 3.9239479228854179e-03 - - -1.7383949831128120e-02 1.8231689929962158e-01 - <_> - - 0 -1 2920 -1.3659669784829021e-03 - - 1.7153720557689667e-01 -2.8898969292640686e-02 - <_> - - 0 -1 2921 -1.4295619621407241e-05 - - 3.6472570151090622e-02 -5.7127911597490311e-02 - <_> - - 0 -1 2922 -1.4978270046412945e-03 - - -1.0584619641304016e-01 5.2903588861227036e-02 - <_> - - 0 -1 2923 7.7579449862241745e-04 - - -3.2008528709411621e-02 1.6330100595951080e-01 - <_> - - 0 -1 2924 -5.3715571993961930e-04 - - 1.0312590003013611e-01 -5.1378048956394196e-02 - <_> - - 0 -1 2925 -1.8734990153461695e-03 - - -1.0094600170850754e-01 3.1621370464563370e-02 - <_> - - 0 -1 2926 -2.7301919180899858e-03 - - -1.8882660567760468e-01 2.5445640087127686e-02 - <_> - - 0 -1 2927 -2.7519989758729935e-02 - - 2.0207390189170837e-01 -8.7642138823866844e-03 - <_> - - 0 -1 2928 -5.7156491093337536e-03 - - -1.4730660617351532e-01 3.8653228431940079e-02 - <_> - - 0 -1 2929 -3.8841580972075462e-03 - - 1.9324040412902832e-01 -3.3158119767904282e-02 - <_> - - 0 -1 2930 -2.9681410524062812e-04 - - 7.0978216826915741e-02 -8.3440601825714111e-02 - <_> - - 0 -1 2931 -7.3247430846095085e-03 - - 9.9289767444133759e-02 -7.1985991671681404e-03 - <_> - - 0 -1 2932 4.0174159221351147e-03 - - 2.3349240422248840e-02 -2.0595629513263702e-01 - <_> - - 0 -1 2933 3.0161300674080849e-03 - - -1.1856850236654282e-02 7.5035043060779572e-02 - <_> - - 0 -1 2934 -6.0926907462999225e-04 - - 6.6941566765308380e-02 -7.4088506400585175e-02 - <_> - - 0 -1 2935 -2.8288490138947964e-03 - - -8.4346950054168701e-02 2.0641390234231949e-02 - <_> - - 0 -1 2936 1.5945710241794586e-02 - - 1.8828209489583969e-02 -2.5902500748634338e-01 - <_> - - 0 -1 2937 -6.2250817427411675e-04 - - 8.3537682890892029e-02 -4.3164398521184921e-02 - <_> - - 0 -1 2938 9.3902602791786194e-02 - - -2.8874060139060020e-02 1.4930969476699829e-01 - <_> - - 0 -1 2939 4.2735088616609573e-02 - - -2.1169420331716537e-02 1.8162199854850769e-01 - <_> - - 0 -1 2940 2.3074240016285330e-04 - - 3.7333559244871140e-02 -1.1767379939556122e-01 - <_> - - 0 -1 2941 1.4175169781083241e-05 - - -3.7760701030492783e-02 4.1684981435537338e-02 - <_> - - 0 -1 2942 -4.4660810381174088e-03 - - -2.0308449864387512e-01 2.1115880459547043e-02 - <_> - - 0 -1 2943 1.2269329745322466e-03 - - -3.2496001571416855e-02 3.2794348895549774e-02 - <_> - - 0 -1 2944 3.9916601032018661e-02 - - -2.5608949363231659e-02 1.9469550251960754e-01 - <_> - - 0 -1 2945 -7.3776850476861000e-03 - - 8.0924406647682190e-02 -4.2932409793138504e-02 - <_> - - 0 -1 2946 2.3230710066854954e-03 - - 2.0082749426364899e-02 -2.2169919312000275e-01 - <_> - - 0 -1 2947 5.5887812050059438e-04 - - -4.9321770668029785e-02 1.3549089431762695e-01 - <_> - - 0 -1 2948 1.4422759704757482e-05 - - -6.2462970614433289e-02 7.0136800408363342e-02 - <_> - - 0 -1 2949 -9.0111764147877693e-03 - - -1.1790829896926880e-01 1.3764100149273872e-02 - <_> - - 0 -1 2950 -2.5969429407268763e-03 - - 8.5311427712440491e-02 -5.3704299032688141e-02 - <_> - - 0 -1 2951 4.2405598796904087e-03 - - -3.4656058996915817e-02 7.6122537255287170e-02 - <_> - - 0 -1 2952 -2.8519309125840664e-04 - - 6.7123286426067352e-02 -7.1620211005210876e-02 - <_> - - 0 -1 2953 -9.1536442050710320e-04 - - -1.0286690294742584e-01 4.6275518834590912e-02 - <_> - - 0 -1 2954 8.9915059506893158e-03 - - 2.1047739312052727e-02 -2.0345629751682281e-01 - <_> - - 0 -1 2955 -2.3468779399991035e-03 - - 6.1836708337068558e-02 -2.7794880792498589e-02 - <_> - - 0 -1 2956 7.8483502147719264e-04 - - -5.6725129485130310e-02 8.2626231014728546e-02 - <_> - - 0 -1 2957 -4.2987228371202946e-03 - - -4.6485468745231628e-01 1.2136589735746384e-02 - <_> - - 0 -1 2958 3.7865751073695719e-04 - - -5.7894710451364517e-02 7.8972049057483673e-02 - <_> - - 0 -1 2959 -1.8922489834949374e-04 - - -4.8778239637613297e-02 2.8404900804162025e-02 - <_> - - 0 -1 2960 1.4289650134742260e-03 - - -5.4618939757347107e-02 7.4633039534091949e-02 - <_> - - 0 -1 2961 -6.3519232207909226e-04 - - -1.2235110253095627e-01 2.2536490112543106e-02 - <_> - - 0 -1 2962 -1.3744450407102704e-03 - - 8.7468042969703674e-02 -4.6227011829614639e-02 - <_> - - 0 -1 2963 8.3811202785000205e-04 - - -5.3081158548593521e-02 6.6298030316829681e-02 - <_> - - 0 -1 2964 -4.7142491675913334e-03 - - -1.4428180456161499e-01 3.1851839274168015e-02 - <_> - - 0 -1 2965 3.5760139580816031e-03 - - -5.4558500647544861e-02 7.7983260154724121e-02 - <_> - - 0 -1 2966 1.3958959840238094e-02 - - -4.3213408440351486e-02 1.0227949917316437e-01 - <_> - - 0 -1 2967 1.4338699656946119e-05 - - -5.6758139282464981e-02 5.9547949582338333e-02 - <_> - - 0 -1 2968 -1.0628110030665994e-03 - - -1.6489389538764954e-01 2.7261860668659210e-02 - <_> - - 0 -1 2969 1.0051510296761990e-02 - - -9.7075058147311211e-03 1.9438129663467407e-01 - <_> - - 0 -1 2970 -1.1699779424816370e-03 - - 8.6702376604080200e-02 -5.1672320812940598e-02 - <_> - - 0 -1 2971 -3.3962219953536987e-02 - - -2.3889440298080444e-01 9.8034106194972992e-03 - <_> - - 0 -1 2972 3.5306809004396200e-03 - - -2.0434120669960976e-02 2.0758320391178131e-01 - <_> - - 0 -1 2973 -7.7752848155796528e-03 - - -1.5383580327033997e-01 2.4621009826660156e-02 - <_> - - 0 -1 2974 1.8700800137594342e-03 - - 3.6134559661149979e-02 -1.3638550043106079e-01 - <_> - - 0 -1 2975 2.8848159126937389e-03 - - -1.8914660438895226e-02 1.8570280075073242e-01 - <_> - - 0 -1 2976 -1.9861269742250443e-02 - - 3.6918470263481140e-01 -1.1665159836411476e-02 - <_> - - 0 -1 2977 -2.7482518926262856e-03 - - -2.1028390526771545e-01 2.3893959820270538e-02 - <_> - - 0 -1 2978 -2.7001290582120419e-03 - - 2.0786289870738983e-01 -2.1798720583319664e-02 - <_> - - 0 -1 2979 -4.5068548060953617e-03 - - -8.6702600121498108e-02 4.8602908849716187e-02 - <_> - - 0 -1 2980 2.4951489642262459e-02 - - -1.5552300028502941e-02 2.7785879373550415e-01 - <_> - - 0 -1 2981 1.2935699487570673e-04 - - -7.3888942599296570e-02 4.8402789980173111e-02 - <_> - - 0 -1 2982 9.3646477907896042e-03 - - -2.5281939655542374e-02 1.8370600044727325e-01 - <_> - - 0 -1 2983 8.4151826798915863e-02 - - 1.0824269615113735e-02 -1.9552649557590485e-01 - <_> - - 0 -1 2984 1.1270279996097088e-02 - - 1.0561659932136536e-02 -3.9813381433486938e-01 - <_> - - 0 -1 2985 -2.3937860503792763e-02 - - -6.0860121250152588e-01 4.2452588677406311e-03 - <_> - - 0 -1 2986 2.0148959010839462e-03 - - -3.0430519953370094e-02 1.3252329826354980e-01 - <_> - - 0 -1 2987 -9.2081452021375299e-04 - - -6.4787812530994415e-02 2.7679389342665672e-02 - <_> - - 0 -1 2988 2.4192659184336662e-03 - - 4.7041378915309906e-02 -8.9719109237194061e-02 - <_> - - 0 -1 2989 -6.5186403691768646e-02 - - -5.6671458482742310e-01 2.5166301056742668e-03 - <_> - - 0 -1 2990 2.8571339324116707e-02 - - -2.5201410055160522e-02 1.9006469845771790e-01 - <_> - - 0 -1 2991 -3.3785749692469835e-03 - - -1.2729710340499878e-01 1.9669840112328529e-02 - <_> - - 0 -1 2992 1.0253169573843479e-02 - - -2.0659439265727997e-02 2.0298719406127930e-01 - <_> - - 0 -1 2993 4.9304449930787086e-03 - - 2.1737489849328995e-02 -1.2347099930047989e-01 - <_> - - 0 -1 2994 9.6938945353031158e-03 - - 6.0204151086509228e-03 -6.4063978195190430e-01 - <_> - - 0 -1 2995 -4.8665871145203710e-04 - - 4.7643549740314484e-02 -2.8483150526881218e-02 - <_> - - 0 -1 2996 -2.1001850254833698e-03 - - 8.1388853490352631e-02 -4.8343729227781296e-02 - <_> - - 0 -1 2997 7.1035227738320827e-03 - - 4.8637919127941132e-02 -5.9368059039115906e-02 - <_> - - 0 -1 2998 7.6833309140056372e-04 - - -5.5948581546545029e-02 9.0324163436889648e-02 - <_> - - 0 -1 2999 3.0236479360610247e-03 - - 2.4593129754066467e-02 -4.8018101602792740e-02 - <_> - - 0 -1 3000 -1.5640349593013525e-03 - - -1.4176750183105469e-01 4.4273559004068375e-02 - <_> - - 0 -1 3001 -4.9588200636208057e-03 - - 3.3299440145492554e-01 -1.3866799883544445e-02 - <_> - - 0 -1 3002 -3.1740468693897128e-04 - - -9.9935911595821381e-02 4.1256289929151535e-02 - <_> - - 0 -1 3003 -8.0420851008966565e-04 - - 1.0639169812202454e-01 -2.8372989967465401e-02 - <_> - - 0 -1 3004 1.6408630181103945e-03 - - -2.4030350148677826e-02 1.7486830055713654e-01 - <_> - - 0 -1 3005 -6.1796259880065918e-01 - - -3.5708969831466675e-01 4.0679760277271271e-03 - <_> - - 0 -1 3006 -1.7735069990158081e-01 - - -6.1740487813949585e-01 6.5281139686703682e-03 - <_> - - 0 -1 3007 9.8318364471197128e-03 - - -9.5694959163665771e-03 9.4102367758750916e-02 - <_> - - 0 -1 3008 -9.9137630313634872e-03 - - 2.0841769874095917e-01 -2.0038869231939316e-02 - <_> - - 0 -1 3009 1.0139079764485359e-02 - - 8.6421063169836998e-03 -1.6476039588451385e-01 - <_> - - 0 -1 3010 -4.7524129040539265e-03 - - -9.3199521303176880e-01 4.2677428573369980e-03 - <_> - - 0 -1 3011 -3.5657559055835009e-03 - - -7.0002816617488861e-02 1.3544510118663311e-02 - <_> - - 0 -1 3012 -7.5818779878318310e-03 - - -2.5617438554763794e-01 1.5119800344109535e-02 - <_> - - 0 -1 3013 3.2128070015460253e-03 - - -4.7117389738559723e-02 4.2283978313207626e-02 - <_> - - 0 -1 3014 -1.4448419678956270e-03 - - 1.2069970369338989e-01 -3.4035868942737579e-02 - <_> - - 0 -1 3015 4.3855889089172706e-05 - - -3.3758200705051422e-02 2.9251309111714363e-02 - <_> - - 0 -1 3016 7.9919979907572269e-04 - - 5.2105661481618881e-02 -1.0435529798269272e-01 - <_> - - 0 -1 3017 1.6669919714331627e-02 - - 3.1498380005359650e-02 -7.5712457299232483e-02 - <_> - - 0 -1 3018 4.4861449860036373e-03 - - -6.0100939124822617e-02 1.0679920017719269e-01 - <_> - - 0 -1 3019 1.5718489885330200e-03 - - 2.2957760840654373e-02 -5.1999129354953766e-02 - <_> - - 0 -1 3020 -1.0987470159307122e-03 - - 6.7808508872985840e-02 -6.2232740223407745e-02 - <_> - - 0 -1 3021 3.6574289202690125e-01 - - 8.5034789517521858e-03 -8.7944783270359039e-02 - <_> - - 0 -1 3022 6.2328672409057617e-01 - - 6.2737329863011837e-03 -6.5871769189834595e-01 - <_> - - 0 -1 3023 -2.0381929352879524e-02 - - 2.0589959621429443e-01 -2.1329719573259354e-02 - <_> - - 0 -1 3024 1.2231430038809776e-02 - - 1.6662970185279846e-02 -2.4959360063076019e-01 - <_> - - 0 -1 3025 1.1891610175371170e-01 - - 4.6012690290808678e-03 -2.4065980315208435e-01 - <_> - - 0 -1 3026 -4.5336168259382248e-02 - - 2.6013681292533875e-01 -1.5307229943573475e-02 - <_> - - 0 -1 3027 1.0635649785399437e-02 - - 1.3968730345368385e-02 -1.8730120360851288e-01 - <_> - - 0 -1 3028 8.0420613288879395e-02 - - 6.4792581833899021e-03 -7.3739159107208252e-01 - <_> - - 0 -1 3029 4.1983132250607014e-03 - - -4.0718421339988708e-02 4.9123499542474747e-02 - <_> - - 0 -1 3030 2.7840971015393734e-03 - - -4.6847000718116760e-02 8.3045586943626404e-02 - <_> - - 0 -1 3031 -2.3969069588929415e-03 - - -1.0305040329694748e-01 3.6219939589500427e-02 - <_> - - 0 -1 3032 2.3801729083061218e-02 - - -2.6440629735589027e-02 1.5566450357437134e-01 - <_> - - 0 -1 3033 5.8980349422199652e-05 - - -7.4151277542114258e-02 5.3694751113653183e-02 - <_> - - 0 -1 3034 4.2179841548204422e-03 - - 5.8198180049657822e-02 -6.9338247179985046e-02 - <_> - - 0 -1 3035 -7.3058279231190681e-03 - - -9.0065263211727142e-02 3.4009128808975220e-02 - <_> - - 0 -1 3036 5.0189117901027203e-03 - - -1.8705239519476891e-02 2.2443990409374237e-01 - <_> - - 0 -1 3037 -2.0936098881065845e-03 - - -6.6003449261188507e-02 1.9856190308928490e-02 - <_> - - 0 -1 3038 6.8444077624008060e-04 - - 5.4512381553649902e-02 -9.2761643230915070e-02 - <_> - - 0 -1 3039 -4.1365441866219044e-03 - - -1.0075940191745758e-01 2.9440989717841148e-02 - <_> - - 0 -1 3040 9.9968025460839272e-03 - - -3.8969870656728745e-02 1.4083629846572876e-01 - <_> - - 0 -1 3041 4.1777390288189054e-04 - - 1.6349399462342262e-02 -8.7681837379932404e-02 - <_> - - 0 -1 3042 1.4318599824036937e-05 - - -6.0149569064378738e-02 7.5571998953819275e-02 - <_> - - 0 -1 3043 1.0386370122432709e-02 - - 1.3826809823513031e-02 -1.3289609551429749e-01 - <_> - - 0 -1 3044 -3.4228169824928045e-03 - - 6.8344578146934509e-02 -5.8622609823942184e-02 - <_> - - 0 -1 3045 1.4140920029603876e-05 - - -3.3672899007797241e-02 3.4742329269647598e-02 - <_> - - 0 -1 3046 -2.9150721430778503e-01 - - -2.6706650853157043e-01 1.6969459131360054e-02 - <_> - - 0 -1 3047 -2.2624819539487362e-03 - - 5.8930430561304092e-02 -3.8748141378164291e-02 - <_> - - 0 -1 3048 6.0357558540999889e-03 - - -5.4498948156833649e-02 8.3862930536270142e-02 - <_> - - 0 -1 3049 -4.2928759939968586e-03 - - -7.3004312813282013e-02 1.4651809819042683e-02 - <_> - - 0 -1 3050 1.1044720187783241e-02 - - 1.2078249827027321e-02 -3.9404100179672241e-01 - <_> - - 0 -1 3051 -1.0535520268604159e-03 - - 4.8318728804588318e-02 -3.4919891506433487e-02 - <_> - - 0 -1 3052 5.6404650211334229e-02 - - -6.8446230143308640e-03 6.1755502223968506e-01 - <_> - - 0 -1 3053 -8.4812091663479805e-03 - - -1.3839499652385712e-01 1.2489840388298035e-02 - <_> - - 0 -1 3054 1.6193240880966187e-02 - - 9.0974392369389534e-03 -4.4633740186691284e-01 - <_> - - 0 -1 3055 -2.8318920521996915e-04 - - 8.2474879920482635e-02 -4.7371931374073029e-02 - <_> - - 0 -1 3056 4.1413828730583191e-03 - - -1.4848480001091957e-02 2.8132051229476929e-01 - <_> - - 0 -1 3057 -3.4166331170126796e-04 - - -6.0937568545341492e-02 2.9026310890913010e-02 - <_> - - 0 -1 3058 2.0170300267636776e-03 - - 1.9604349508881569e-02 -2.0822779834270477e-01 - <_> - - 0 -1 3059 -2.0873220637440681e-03 - - 1.0310489684343338e-01 -3.7634961307048798e-02 - <_> - - 0 -1 3060 -5.6890142150223255e-03 - - -1.2544399499893188e-01 3.3915720880031586e-02 - <_> - - 0 -1 3061 1.0917709767818451e-01 - - 7.4923089705407619e-03 -1.1904879659414291e-01 - <_> - - 0 -1 3062 -5.0970359006896615e-04 - - 9.7908712923526764e-02 -3.9758011698722839e-02 - <_> - - 0 -1 3063 -1.4320580661296844e-01 - - -8.0416381359100342e-01 6.3695549033582211e-04 - <_> - - 0 -1 3064 -8.0799080431461334e-02 - - 3.1338238716125488e-01 -1.3846360146999359e-02 - <_> - - 0 -1 3065 -9.3855917453765869e-02 - - -1.4186389744281769e-01 4.8957560211420059e-03 - <_> - - 0 -1 3066 1.0711970180273056e-01 - - 1.0395029559731483e-02 -3.9300349354743958e-01 - <_> - - 0 -1 3067 5.6628540158271790e-02 - - 1.6760550206527114e-03 -7.5297760963439941e-01 - <_> - - 0 -1 3068 -5.9830099344253540e-03 - - 9.8864533007144928e-02 -4.2337849736213684e-02 - <_> - - 0 -1 3069 3.2563660293817520e-02 - - 7.7907292870804667e-04 -1.0018880367279053e+00 - <_> - - 0 -1 3070 5.2614361047744751e-03 - - -2.3592080920934677e-02 1.8561479449272156e-01 - <_> - - 0 -1 3071 -2.8537029400467873e-02 - - -8.7918317317962646e-01 2.7133359108120203e-03 - <_> - - 0 -1 3072 -1.1468839831650257e-02 - - -2.8566700220108032e-01 1.4948310330510139e-02 - <_> - - 0 -1 3073 5.8335228823125362e-04 - - 1.6099810600280762e-02 -1.0043399780988693e-01 - <_> - - 0 -1 3074 4.0041147731244564e-03 - - 5.0489702261984348e-03 -7.1332311630249023e-01 - <_> - - 0 -1 3075 -2.3596179671585560e-03 - - 2.4190050363540649e-01 -1.4085929840803146e-02 - <_> - - 0 -1 3076 3.3726831316016614e-04 - - 2.9679410159587860e-02 -1.2967990338802338e-01 - <_> - - 0 -1 3077 6.7051057703793049e-04 - - -4.2348969727754593e-02 6.4362458884716034e-02 - <_> - - 0 -1 3078 -3.4773809602484107e-04 - - 6.9616302847862244e-02 -6.3760548830032349e-02 - <_> - - 0 -1 3079 2.6000179350376129e-02 - - 3.4755310043692589e-03 -5.2053117752075195e-01 - <_> - - 0 -1 3080 -1.6987169161438942e-02 - - -4.3342560529708862e-01 8.5654119029641151e-03 - <_> - - 0 -1 3081 2.9391179850790650e-05 - - -3.6627989262342453e-02 4.1910480707883835e-02 - <_> - - 0 -1 3082 -2.4438139516860247e-03 - - 3.0130320787429810e-01 -1.3301130384206772e-02 - <_> - - 0 -1 3083 6.4233690500259399e-03 - - 7.3442691937088966e-03 -5.7522922754287720e-01 - <_> - - 0 -1 3084 1.1681020259857178e-01 - - 3.3814390189945698e-03 -8.7938332557678223e-01 - <_> - - 0 -1 3085 -2.7548689104150981e-05 - - 6.4680196344852448e-02 -5.7411041110754013e-02 - <_> - - 0 -1 3086 2.4947611382231116e-04 - - -7.5326800346374512e-02 4.8592418432235718e-02 - <_> - - 0 -1 3087 -7.1671740151941776e-03 - - -8.3547100424766541e-02 2.1562419831752777e-02 - <_> - - 0 -1 3088 -1.8627879908308387e-03 - - 1.0043080151081085e-01 -3.8185749202966690e-02 - <_> - - 0 -1 3089 -1.6036540269851685e-02 - - -9.1825373470783234e-02 3.9515469223260880e-02 - <_> - - 0 -1 3090 -1.2315779924392700e-02 - - 2.3118409514427185e-01 -1.7156910151243210e-02 - <_> - - 0 -1 3091 -1.3695989735424519e-02 - - -4.6317929029464722e-01 2.2789770737290382e-03 - <_> - - 0 -1 3092 -8.4357131272554398e-03 - - -2.6425519585609436e-01 1.4832129701972008e-02 - <_> - - 0 -1 3093 -9.2736718943342566e-04 - - 7.9645402729511261e-02 -4.9840580672025681e-02 - <_> - - 0 -1 3094 -7.3909357888624072e-04 - - 1.1675740033388138e-01 -3.2842319458723068e-02 - <_> - - 0 -1 3095 -5.3007681854069233e-03 - - -5.8355450630187988e-02 2.4915490299463272e-02 - <_> - - 0 -1 3096 2.3519468959420919e-03 - - 3.4184001386165619e-02 -1.2361560016870499e-01 - <_> - - 0 -1 3097 3.6758350324817002e-04 - - 2.4377340450882912e-02 -9.2866457998752594e-02 - <_> - - 0 -1 3098 -1.8738239305093884e-04 - - -9.7189396619796753e-02 4.5581560581922531e-02 - <_> - - 0 -1 3099 -4.3005049228668213e-03 - - 5.9655640274286270e-02 -2.6550989598035812e-02 - <_> - - 0 -1 3100 3.0303259845823050e-03 - - -4.6652421355247498e-02 8.3090431988239288e-02 - <_> - - 0 -1 3101 9.1612888500094414e-03 - - 8.1623140722513199e-03 -1.4294110238552094e-01 - <_> - - 0 -1 3102 -7.1365521289408207e-03 - - -2.1283440291881561e-01 1.9532319158315659e-02 - <_> - - 0 -1 3103 4.0135360322892666e-03 - - -2.7977779507637024e-02 6.5373353660106659e-02 - <_> - - 0 -1 3104 7.3571591638028622e-03 - - -3.3633861690759659e-02 1.1916100233793259e-01 - <_> - - 0 -1 3105 -1.4602700248360634e-03 - - 1.4011189341545105e-01 -1.2051680125296116e-02 - <_> - - 0 -1 3106 1.4471929716819432e-05 - - -5.7255640625953674e-02 6.8829320371150970e-02 - <_> - - 0 -1 3107 -1.4309570360637736e-05 - - 8.2789108157157898e-02 -8.4355473518371582e-02 - <_> - - 0 -1 3108 -5.5356771918013692e-04 - - -1.4383679628372192e-01 3.1933940947055817e-02 - <_> - - 0 -1 3109 2.1484889090061188e-02 - - -3.0742040835320950e-03 3.7881690263748169e-01 - <_> - - 0 -1 3110 -9.8766442388296127e-03 - - 3.5023438930511475e-01 -1.0607440024614334e-02 - <_> - - 0 -1 3111 -4.5920489355921745e-04 - - -1.1301189661026001e-01 2.3139599710702896e-02 - <_> - - 0 -1 3112 -1.6422939952462912e-03 - - 7.4747122824192047e-02 -5.0454050302505493e-02 - <_> - - 0 -1 3113 -5.3874298464506865e-04 - - -1.3922649621963501e-01 2.9874069616198540e-02 - <_> - - 0 -1 3114 -5.7828719727694988e-03 - - 8.0108322203159332e-02 -4.9318719655275345e-02 - <_> - - 0 -1 3115 -1.1254530400037766e-02 - - -9.4960838556289673e-02 1.2815359979867935e-02 - <_> - - 0 -1 3116 -6.3977600075304508e-03 - - 1.8505319952964783e-01 -1.9816260784864426e-02 - <_> - - 0 -1 3117 -1.7287230002693832e-04 - - -4.4736761599779129e-02 3.1513940542936325e-02 - <_> - - 0 -1 3118 -4.4290270656347275e-02 - - -8.4371000528335571e-01 4.1946070268750191e-03 - <_> - - 0 -1 3119 1.4135680430626962e-05 - - -2.8704009950160980e-02 2.9664069414138794e-02 - <_> - - 0 -1 3120 1.4838889910606667e-05 - - -5.7750280946493149e-02 5.9877578169107437e-02 - <_> - - 0 -1 3121 1.4357990039570723e-05 - - -4.8069581389427185e-02 5.2067048847675323e-02 - <_> - - 0 -1 3122 -3.0332439928315580e-04 - - -1.1391550302505493e-01 3.3420108258724213e-02 - <_> - - 0 -1 3123 -2.1341539919376373e-02 - - 1.3414019346237183e-01 -2.8697019442915916e-02 - <_> - - 0 -1 3124 1.2220669537782669e-02 - - -3.1815130263566971e-02 1.2447299808263779e-01 - <_> - - 0 -1 3125 -1.7970399931073189e-03 - - -7.8972600400447845e-02 2.3819999769330025e-02 - <_> - - 0 -1 3126 1.0250660125166178e-03 - - 9.1715447604656219e-02 -5.1853589713573456e-02 - <_> - - 0 -1 3127 2.9596749300253578e-05 - - -4.5877501368522644e-02 2.2276140749454498e-02 - <_> - - 0 -1 3128 -2.9857519548386335e-03 - - -1.0987590253353119e-01 3.9163749665021896e-02 - <_> - - 0 -1 3129 3.4685849677771330e-03 - - -3.1400199979543686e-02 5.9269599616527557e-02 - <_> - - 0 -1 3130 -5.0253752851858735e-04 - - 6.8993613123893738e-02 -5.6809179484844208e-02 - <_> - - 0 -1 3131 3.1805990729480982e-03 - - 1.7488589510321617e-02 -1.0994870215654373e-01 - <_> - - 0 -1 3132 -6.3892719335854053e-03 - - 2.3231509327888489e-01 -1.6345100477337837e-02 - <_> - - 0 -1 3133 4.7345750033855438e-02 - - 3.2520359382033348e-03 -7.1971511840820312e-01 - <_> - - 0 -1 3134 -6.3473977148532867e-02 - - -5.7145291566848755e-01 5.7878792285919189e-03 - <_> - - 0 -1 3135 1.8283590674400330e-02 - - -3.0776629224419594e-02 6.7068859934806824e-02 - <_> - - 0 -1 3136 3.3511288464069366e-02 - - 9.5050930976867676e-03 -3.9411789178848267e-01 - <_> - - 0 -1 3137 5.8480639010667801e-02 - - 8.8002288248389959e-04 -7.2193121910095215e-01 - <_> - - 0 -1 3138 -6.8779820576310158e-03 - - -1.3660149276256561e-01 2.8550539165735245e-02 - <_> - - 0 -1 3139 -7.4082398787140846e-03 - - -1. 1.4721560291945934e-03 - <_> - - 0 -1 3140 1.9716760143637657e-03 - - -3.1249720603227615e-02 1.2497240304946899e-01 - <_> - - 0 -1 3141 -8.5898824036121368e-03 - - 7.3831759393215179e-02 -5.1625881344079971e-02 - <_> - - 0 -1 3142 3.8665629923343658e-02 - - -4.0125548839569092e-02 1.0069020092487335e-01 - <_> - - 0 -1 3143 -2.3928559385240078e-03 - - 4.5589141547679901e-02 -4.5100230723619461e-02 - <_> - - 0 -1 3144 -6.2895438168197870e-04 - - -1.1667449772357941e-01 3.2768420875072479e-02 - <_> - - 0 -1 3145 -2.3187010083347559e-03 - - 1.3001890480518341e-01 -1.0718069970607758e-02 - <_> - - 0 -1 3146 1.4138329788693227e-05 - - -6.4404919743537903e-02 5.7263828814029694e-02 - <_> - - 0 -1 3147 -2.8554860502481461e-02 - - -5.0639897584915161e-01 1.1023499537259340e-03 - <_> - - 0 -1 3148 3.2312930561602116e-03 - - 3.6267548799514771e-02 -1.0106699913740158e-01 - <_> - - 0 -1 3149 1.6222210251726210e-04 - - -4.0285501629114151e-02 3.1679298728704453e-02 - <_> - - 0 -1 3150 4.2762039811350405e-04 - - -3.6203209310770035e-02 1.0361579805612564e-01 - <_> - - 0 -1 3151 3.3335629268549383e-04 - - -2.9866840690374374e-02 2.9882159084081650e-02 - <_> - - 0 -1 3152 -2.2189140319824219e-01 - - -3.8243699073791504e-01 9.5520019531250000e-03 - <_> - - 0 -1 3153 8.7596403318457305e-05 - - 3.9001930505037308e-02 -8.1183552742004395e-02 - <_> - - 0 -1 3154 -1.1259169696131721e-04 - - 6.3710443675518036e-02 -5.8460969477891922e-02 - <_> - - 0 -1 3155 -1.6238780226558447e-03 - - 4.1994798928499222e-02 -4.4873479753732681e-02 - <_> - - 0 -1 3156 -6.0143370181322098e-02 - - -6.9434410333633423e-01 5.1933941431343555e-03 - <_> - - 0 -1 3157 2.2263569757342339e-02 - - 7.1151661686599255e-03 -1.6245369613170624e-01 - <_> - - 0 -1 3158 1.5287219546735287e-02 - - -3.1578138470649719e-02 1.3159650564193726e-01 - <_> - - 0 -1 3159 -2.7766029816120863e-03 - - 3.3783968538045883e-02 -3.1077789142727852e-02 - <_> - - 0 -1 3160 1.6177409561350942e-03 - - 3.9119731634855270e-02 -9.9278897047042847e-02 - <_> - - 0 -1 3161 1.9479090115055442e-03 - - -5.3654409945011139e-02 7.0118047297000885e-02 - <_> - - 0 -1 3162 1.2130389921367168e-02 - - 4.0306180715560913e-02 -9.0640321373939514e-02 - <_> - - 0 -1 3163 -1.3028389774262905e-02 - - 1.1700630187988281e-01 -6.7425691522657871e-03 - <_> - - 0 -1 3164 -5.0146891735494137e-03 - - -1.3672140240669250e-01 2.8440289199352264e-02 - <_> - - 0 -1 3165 2.9157409444451332e-03 - - -2.0223509520292282e-02 1.7895069718360901e-01 - <_> - - 0 -1 3166 1.4704049564898014e-02 - - -1.1754130013287067e-02 3.0486410856246948e-01 - <_> - - 0 -1 3167 -6.0479778796434402e-02 - - -7.8139930963516235e-01 2.7442490682005882e-03 - <_> - - 0 -1 3168 -4.3481457978487015e-03 - - -1.3809560239315033e-01 2.4240119382739067e-02 - <_> - - 0 -1 3169 -2.0365869626402855e-02 - - 4.7886461019515991e-02 -2.1922210231423378e-02 - <_> - - 0 -1 3170 3.8487561047077179e-02 - - -1.4815949834883213e-02 2.8366428613662720e-01 - <_> - - 0 -1 3171 8.8168919086456299e-02 - - 6.1495671980082989e-03 -1.1289569735527039e-01 - <_> - - 0 -1 3172 4.0345671586692333e-03 - - -6.8296507000923157e-02 5.5224869400262833e-02 - <_> - - 0 -1 3173 9.2876404523849487e-03 - - 3.4623101353645325e-02 -5.4317090660333633e-02 - <_> - - 0 -1 3174 1.6310110222548246e-03 - - -2.9204320162534714e-02 1.2989430129528046e-01 - <_> - - 0 -1 3175 -1.2771799811162055e-04 - - 5.7855401188135147e-02 -6.3030250370502472e-02 - <_> - - 0 -1 3176 1.3937779702246189e-02 - - 6.9280698895454407e-02 -6.1526641249656677e-02 - <_> - - 0 -1 3177 6.8672648631036282e-03 - - 7.0364428684115410e-03 -4.4557929039001465e-01 - <_> - - 0 -1 3178 2.1003469824790955e-02 - - -3.5268500447273254e-02 1.5359219908714294e-01 - <_> - - 0 -1 3179 -5.0168340094387531e-03 - - -5.2301561832427979e-01 3.5861700307577848e-03 - <_> - - 0 -1 3180 -3.1568898702971637e-04 - - -1.1868490278720856e-01 2.9266620054841042e-02 - <_> - - 0 -1 3181 -9.4318166375160217e-03 - - 1.2853389978408813e-01 -2.4564500898122787e-02 - <_> - - 0 -1 3182 6.0749690979719162e-02 - - 1.5456859953701496e-02 -2.3764939606189728e-01 - <_> - - 0 -1 3183 1.4245889615267515e-03 - - -2.7731699869036674e-02 7.5339756906032562e-02 - <_> - - 0 -1 3184 4.5280749909579754e-03 - - 7.9670632258057594e-03 -4.6478900313377380e-01 - <_> - - 0 -1 3185 -1.1256569996476173e-03 - - 8.7405860424041748e-02 -2.8235470876097679e-02 - <_> - - 0 -1 3186 7.1023160126060247e-04 - - -4.5912958681583405e-02 7.7868096530437469e-02 - <_> - - 0 -1 3187 -1.0647220187820494e-04 - - -6.9129116833209991e-02 3.4806620329618454e-02 - <_> - - 0 -1 3188 4.0483310818672180e-02 - - -6.7497747950255871e-03 5.7718431949615479e-01 - <_> - - 0 -1 3189 3.1162700615823269e-03 - - -1.5197520144283772e-02 1.5354870259761810e-01 - <_> - - 0 -1 3190 4.5352601446211338e-03 - - 1.9577570259571075e-02 -1.9316029548645020e-01 - <_> - - 0 -1 3191 -4.1040619835257530e-03 - - 1.6863599419593811e-01 -2.3052209988236427e-02 - <_> - - 0 -1 3192 -1.2791199842467904e-03 - - -1.2263630330562592e-01 3.3852901309728622e-02 - <_> - - 0 -1 3193 3.7750229239463806e-02 - - 2.7295380830764771e-02 -3.9029780775308609e-02 - <_> - - 0 -1 3194 -3.1329069286584854e-02 - - -1.7695879936218262e-01 2.3652670904994011e-02 - <_> - - 0 -1 3195 6.9908007979393005e-02 - - -1.3607740402221680e-02 1.7705820500850677e-01 - <_> - - 0 -1 3196 -1.7724529607221484e-03 - - 8.9443042874336243e-02 -4.4195320457220078e-02 - <_> - - 0 -1 3197 9.5961341867223382e-04 - - 4.6264778822660446e-02 -8.5146717727184296e-02 - <_> - - 0 -1 3198 4.8880279064178467e-03 - - -4.3457351624965668e-02 8.3665966987609863e-02 - <_> - - 0 -1 3199 -1.8521700054407120e-02 - - -1.9846099615097046e-01 7.7576087787747383e-03 - <_> - - 0 -1 3200 -2.9453789466060698e-04 - - 6.5195016562938690e-02 -7.3865167796611786e-02 - <_> - - 0 -1 3201 3.2816329039633274e-03 - - 1.0613779537379742e-02 -1.2129720300436020e-01 - <_> - - 0 -1 3202 -4.1478020139038563e-03 - - 1.3219490647315979e-01 -2.7838779613375664e-02 - <_> - - 0 -1 3203 2.9324321076273918e-03 - - 1.5625990927219391e-02 -1.3332700729370117e-01 - <_> - - 0 -1 3204 1.4735000149812549e-05 - - -6.6767387092113495e-02 6.7779406905174255e-02 - <_> - - 0 -1 3205 1.0550020262598991e-02 - - -1.8690729513764381e-02 3.5460308194160461e-02 - <_> - - 0 -1 3206 6.6441838862374425e-04 - - 3.1682059168815613e-02 -1.2590830028057098e-01 - <_> - - 0 -1 3207 -7.8891811426728964e-04 - - 4.1447490453720093e-02 -1.9493930041790009e-02 - <_> - - 0 -1 3208 4.0985438972711563e-03 - - -1.4138899743556976e-02 2.5552189350128174e-01 - <_> - - 0 -1 3209 -1.1657159775495529e-03 - - -9.9526606500148773e-02 2.5209929794073105e-02 - <_> - - 0 -1 3210 8.3427336066961288e-03 - - 6.7264190874993801e-03 -5.3164392709732056e-01 - <_> - - 0 -1 3211 1.1264909990131855e-02 - - -2.0710369572043419e-02 1.7936679720878601e-01 - <_> - - 0 -1 3212 -4.5051681809127331e-03 - - -6.6127192974090576e-01 5.7547520846128464e-03 - <_> - - 0 -1 3213 -1.4798439806327224e-03 - - 1.0810559988021851e-01 -1.9588569179177284e-02 - <_> - - 0 -1 3214 1.6471470007672906e-04 - - 5.3238850086927414e-02 -6.9692611694335938e-02 - <_> - - 0 -1 3215 4.4582888484001160e-02 - - 7.8089488670229912e-03 -3.7653329968452454e-01 - <_> - - 0 -1 3216 -1.9773680716753006e-02 - - 1.3560689985752106e-01 -3.0749319121241570e-02 - <_> - - 0 -1 3217 4.3540569022297859e-03 - - 9.3921516090631485e-03 -1.9494530558586121e-01 - <_> - - 0 -1 3218 -2.4175210297107697e-01 - - -6.3273942470550537e-01 5.7554137893021107e-03 - <_> - - 0 -1 3219 -4.4678640551865101e-04 - - 7.4578367173671722e-02 -5.0328239798545837e-02 - <_> - - 0 -1 3220 1.4537060260772705e-01 - - 7.1067730896174908e-03 -5.0648421049118042e-01 - <_> - - 0 -1 3221 1.4327790267998353e-05 - - -2.8675070032477379e-02 2.7644269168376923e-02 - <_> - - 0 -1 3222 6.7291660234332085e-03 - - 8.8470866903662682e-03 -4.2330700159072876e-01 - <_> - - 0 -1 3223 2.2473030257970095e-03 - - -1.4289340004324913e-02 1.4410759508609772e-01 - - <_> - - <_> - 8 4 6 4 -1. - <_> - 10 4 2 4 3. - <_> - - <_> - 8 6 6 4 -1. - <_> - 8 7 6 2 2. - <_> - - <_> - 5 4 12 7 -1. - <_> - 8 4 6 7 2. - <_> - - <_> - 3 1 16 8 -1. - <_> - 7 1 8 8 2. - <_> - - <_> - 8 5 2 2 -1. - <_> - 8 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 10 5 2 6 -1. - <_> - 10 8 2 3 2. - <_> - - <_> - 0 0 15 9 -1. - <_> - 0 3 15 3 3. - <_> - - <_> - 5 2 12 6 -1. - <_> - 9 4 4 2 9. - <_> - - <_> - 6 17 1 3 -1. - <_> - 6 18 1 1 3. - <_> - - <_> - 14 17 2 3 -1. - <_> - 14 18 2 1 3. - <_> - - <_> - 6 17 2 3 -1. - <_> - 6 18 2 1 3. - <_> - - <_> - 8 0 6 6 -1. - <_> - 8 2 6 2 3. - <_> - - <_> - 8 5 2 2 -1. - <_> - 8 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 12 13 4 1 -1. - <_> - 12 13 2 1 2. - <_> - - <_> - 0 1 2 4 -1. - <_> - 0 1 1 2 2. - <_> - 1 3 1 2 2. - <_> - - <_> - 20 1 2 4 -1. - <_> - 21 1 1 2 2. - <_> - 20 3 1 2 2. - <_> - - <_> - 0 1 2 4 -1. - <_> - 0 1 1 2 2. - <_> - 1 3 1 2 2. - <_> - - <_> - 13 5 3 4 -1. - <_> - 14 5 1 4 3. - <_> - - <_> - 9 8 4 1 -1. - <_> - 10 8 2 1 2. - <_> - - <_> - 15 4 3 1 -1. - <_> - 16 5 1 1 3. - 1 - <_> - - <_> - 6 5 3 3 -1. - <_> - 7 5 1 3 3. - <_> - - <_> - 20 6 2 4 -1. - <_> - 21 6 1 2 2. - <_> - 20 8 1 2 2. - <_> - - <_> - 1 0 1 3 -1. - <_> - 1 1 1 1 3. - <_> - - <_> - 20 0 1 2 -1. - <_> - 20 1 1 1 2. - <_> - - <_> - 9 0 4 6 -1. - <_> - 9 2 4 2 3. - <_> - - <_> - 9 6 4 1 -1. - <_> - 10 6 2 1 2. - <_> - - <_> - 0 16 18 2 -1. - <_> - 6 16 6 2 3. - <_> - - <_> - 8 4 6 4 -1. - <_> - 10 4 2 4 3. - <_> - - <_> - 10 7 1 6 -1. - <_> - 10 10 1 3 2. - <_> - - <_> - 5 3 17 8 -1. - <_> - 5 7 17 4 2. - <_> - - <_> - 3 6 3 3 -1. - <_> - 4 7 1 3 3. - 1 - <_> - - <_> - 10 5 4 2 -1. - <_> - 12 5 2 1 2. - <_> - 10 6 2 1 2. - <_> - - <_> - 1 0 1 2 -1. - <_> - 1 1 1 1 2. - <_> - - <_> - 10 4 9 14 -1. - <_> - 13 4 3 14 3. - <_> - - <_> - 8 4 6 4 -1. - <_> - 10 4 2 4 3. - <_> - - <_> - 12 0 4 3 -1. - <_> - 11 1 4 1 3. - 1 - <_> - - <_> - 10 0 3 4 -1. - <_> - 11 1 1 4 3. - 1 - <_> - - <_> - 5 2 12 9 -1. - <_> - 8 2 6 9 2. - <_> - - <_> - 10 11 4 2 -1. - <_> - 10 11 2 2 2. - 1 - <_> - - <_> - 7 14 8 6 -1. - <_> - 7 17 8 3 2. - <_> - - <_> - 5 4 12 11 -1. - <_> - 9 4 4 11 3. - <_> - - <_> - 8 6 6 4 -1. - <_> - 8 7 6 2 2. - <_> - - <_> - 1 17 17 3 -1. - <_> - 1 18 17 1 3. - <_> - - <_> - 1 17 20 3 -1. - <_> - 1 18 20 1 3. - <_> - - <_> - 11 0 5 3 -1. - <_> - 10 1 5 1 3. - 1 - <_> - - <_> - 8 1 8 2 -1. - <_> - 8 1 4 2 2. - <_> - - <_> - 9 7 3 6 -1. - <_> - 9 9 3 2 3. - <_> - - <_> - 13 0 4 18 -1. - <_> - 13 0 2 18 2. - <_> - - <_> - 1 0 2 3 -1. - <_> - 1 1 2 1 3. - <_> - - <_> - 10 6 9 12 -1. - <_> - 13 6 3 12 3. - <_> - - <_> - 7 6 3 2 -1. - <_> - 8 6 1 2 3. - <_> - - <_> - 19 0 2 3 -1. - <_> - 19 1 2 1 3. - <_> - - <_> - 0 7 20 1 -1. - <_> - 10 7 10 1 2. - <_> - - <_> - 13 5 4 4 -1. - <_> - 13 7 4 2 2. - <_> - - <_> - 2 0 2 3 -1. - <_> - 2 1 2 1 3. - <_> - - <_> - 9 6 6 6 -1. - <_> - 9 8 6 2 3. - <_> - - <_> - 3 6 3 2 -1. - <_> - 3 7 3 1 2. - <_> - - <_> - 3 4 16 16 -1. - <_> - 7 4 8 16 2. - <_> - - <_> - 6 2 6 4 -1. - <_> - 6 2 3 2 2. - <_> - 9 4 3 2 2. - <_> - - <_> - 7 3 8 9 -1. - <_> - 9 3 4 9 2. - <_> - - <_> - 4 2 6 13 -1. - <_> - 7 2 3 13 2. - <_> - - <_> - 3 3 16 6 -1. - <_> - 7 3 8 6 2. - <_> - - <_> - 0 0 4 20 -1. - <_> - 0 0 2 10 2. - <_> - 2 10 2 10 2. - <_> - - <_> - 11 9 3 2 -1. - <_> - 11 9 3 1 2. - 1 - <_> - - <_> - 7 0 6 6 -1. - <_> - 9 2 2 2 9. - <_> - - <_> - 3 6 16 14 -1. - <_> - 3 13 16 7 2. - <_> - - <_> - 8 4 6 3 -1. - <_> - 11 4 3 3 2. - <_> - - <_> - 12 12 2 2 -1. - <_> - 12 12 1 2 2. - 1 - <_> - - <_> - 4 3 3 3 -1. - <_> - 4 4 3 1 3. - <_> - - <_> - 16 3 2 3 -1. - <_> - 16 4 2 1 3. - <_> - - <_> - 4 3 2 3 -1. - <_> - 4 4 2 1 3. - <_> - - <_> - 12 3 4 8 -1. - <_> - 12 3 4 4 2. - 1 - <_> - - <_> - 0 3 7 3 -1. - <_> - 0 4 7 1 3. - <_> - - <_> - 8 0 8 4 -1. - <_> - 8 2 8 2 2. - <_> - - <_> - 1 6 14 2 -1. - <_> - 1 6 7 1 2. - <_> - 8 7 7 1 2. - <_> - - <_> - 9 1 4 6 -1. - <_> - 9 3 4 2 3. - <_> - - <_> - 8 6 5 12 -1. - <_> - 8 9 5 6 2. - <_> - - <_> - 2 1 18 2 -1. - <_> - 2 1 9 2 2. - <_> - - <_> - 0 5 2 6 -1. - <_> - 0 8 2 3 2. - <_> - - <_> - 15 17 4 3 -1. - <_> - 15 18 4 1 3. - <_> - - <_> - 0 13 13 3 -1. - <_> - 0 14 13 1 3. - <_> - - <_> - 12 17 1 3 -1. - <_> - 12 18 1 1 3. - <_> - - <_> - 9 6 1 2 -1. - <_> - 9 7 1 1 2. - <_> - - <_> - 18 10 4 10 -1. - <_> - 20 10 2 5 2. - <_> - 18 15 2 5 2. - <_> - - <_> - 1 17 3 3 -1. - <_> - 1 18 3 1 3. - <_> - - <_> - 11 2 9 15 -1. - <_> - 14 7 3 5 9. - <_> - - <_> - 5 3 12 2 -1. - <_> - 8 3 6 2 2. - <_> - - <_> - 4 5 18 2 -1. - <_> - 13 5 9 1 2. - <_> - 4 6 9 1 2. - <_> - - <_> - 7 2 2 9 -1. - <_> - 8 2 1 9 2. - <_> - - <_> - 16 17 4 3 -1. - <_> - 16 18 4 1 3. - <_> - - <_> - 6 0 10 1 -1. - <_> - 11 0 5 1 2. - <_> - - <_> - 15 17 6 3 -1. - <_> - 15 18 6 1 3. - <_> - - <_> - 5 2 8 4 -1. - <_> - 5 2 4 2 2. - <_> - 9 4 4 2 2. - <_> - - <_> - 5 10 12 3 -1. - <_> - 5 11 12 1 3. - <_> - - <_> - 8 8 5 4 -1. - <_> - 8 10 5 2 2. - <_> - - <_> - 18 2 2 3 -1. - <_> - 18 3 2 1 3. - <_> - - <_> - 2 17 4 3 -1. - <_> - 2 18 4 1 3. - <_> - - <_> - 13 3 1 2 -1. - <_> - 13 3 1 1 2. - 1 - <_> - - <_> - 7 8 2 3 -1. - <_> - 8 8 1 3 2. - <_> - - <_> - 18 2 2 3 -1. - <_> - 18 3 2 1 3. - <_> - - <_> - 2 2 2 3 -1. - <_> - 2 3 2 1 3. - <_> - - <_> - 9 0 4 6 -1. - <_> - 9 2 4 2 3. - <_> - - <_> - 8 0 6 6 -1. - <_> - 8 2 6 2 3. - <_> - - <_> - 16 17 2 3 -1. - <_> - 16 18 2 1 3. - <_> - - <_> - 2 14 8 3 -1. - <_> - 2 15 8 1 3. - <_> - - <_> - 2 13 18 4 -1. - <_> - 11 13 9 2 2. - <_> - 2 15 9 2 2. - <_> - - <_> - 0 0 22 20 -1. - <_> - 11 0 11 20 2. - <_> - - <_> - 12 3 5 3 -1. - <_> - 12 4 5 1 3. - <_> - - <_> - 5 3 5 3 -1. - <_> - 5 4 5 1 3. - <_> - - <_> - 10 10 6 4 -1. - <_> - 13 10 3 2 2. - <_> - 10 12 3 2 2. - <_> - - <_> - 6 10 6 4 -1. - <_> - 6 10 3 2 2. - <_> - 9 12 3 2 2. - <_> - - <_> - 16 1 2 1 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 9 4 4 6 -1. - <_> - 10 4 2 6 2. - <_> - - <_> - 9 0 4 8 -1. - <_> - 10 0 2 8 2. - <_> - - <_> - 7 4 8 2 -1. - <_> - 9 4 4 2 2. - <_> - - <_> - 8 0 6 6 -1. - <_> - 8 2 6 2 3. - <_> - - <_> - 6 5 3 5 -1. - <_> - 7 5 1 5 3. - <_> - - <_> - 8 5 6 4 -1. - <_> - 8 7 6 2 2. - <_> - - <_> - 6 3 3 9 -1. - <_> - 7 3 1 9 3. - <_> - - <_> - 18 3 1 2 -1. - <_> - 18 4 1 1 2. - <_> - - <_> - 0 18 4 2 -1. - <_> - 0 18 2 1 2. - <_> - 2 19 2 1 2. - <_> - - <_> - 18 1 1 4 -1. - <_> - 18 2 1 2 2. - <_> - - <_> - 6 3 4 12 -1. - <_> - 7 3 2 12 2. - <_> - - <_> - 18 3 1 2 -1. - <_> - 18 4 1 1 2. - <_> - - <_> - 4 7 3 3 -1. - <_> - 5 8 1 1 9. - <_> - - <_> - 18 3 1 2 -1. - <_> - 18 4 1 1 2. - <_> - - <_> - 3 3 1 2 -1. - <_> - 3 4 1 1 2. - <_> - - <_> - 9 0 5 4 -1. - <_> - 9 2 5 2 2. - <_> - - <_> - 0 0 22 19 -1. - <_> - 11 0 11 19 2. - <_> - - <_> - 17 9 3 6 -1. - <_> - 18 10 1 6 3. - 1 - <_> - - <_> - 0 1 22 3 -1. - <_> - 11 1 11 3 2. - <_> - - <_> - 3 3 16 4 -1. - <_> - 7 3 8 4 2. - <_> - - <_> - 6 17 2 2 -1. - <_> - 6 18 2 1 2. - <_> - - <_> - 10 7 3 6 -1. - <_> - 10 10 3 3 2. - <_> - - <_> - 9 3 4 4 -1. - <_> - 9 4 4 2 2. - <_> - - <_> - 15 18 3 2 -1. - <_> - 15 19 3 1 2. - <_> - - <_> - 3 8 2 1 -1. - <_> - 4 8 1 1 2. - <_> - - <_> - 8 4 8 6 -1. - <_> - 12 4 4 3 2. - <_> - 8 7 4 3 2. - <_> - - <_> - 6 4 8 6 -1. - <_> - 6 4 4 3 2. - <_> - 10 7 4 3 2. - <_> - - <_> - 9 2 4 3 -1. - <_> - 9 3 4 1 3. - <_> - - <_> - 0 0 4 2 -1. - <_> - 0 0 2 1 2. - <_> - 2 1 2 1 2. - <_> - - <_> - 9 6 4 1 -1. - <_> - 10 6 2 1 2. - <_> - - <_> - 9 1 4 4 -1. - <_> - 9 3 4 2 2. - <_> - - <_> - 15 18 3 2 -1. - <_> - 15 19 3 1 2. - <_> - - <_> - 11 1 5 3 -1. - <_> - 10 2 5 1 3. - 1 - <_> - - <_> - 15 18 3 2 -1. - <_> - 15 19 3 1 2. - <_> - - <_> - 4 18 3 2 -1. - <_> - 4 19 3 1 2. - <_> - - <_> - 12 1 4 9 -1. - <_> - 13 1 2 9 2. - <_> - - <_> - 0 0 4 2 -1. - <_> - 0 0 2 1 2. - <_> - 2 1 2 1 2. - <_> - - <_> - 11 11 3 3 -1. - <_> - 12 11 1 3 3. - <_> - - <_> - 9 0 3 6 -1. - <_> - 10 0 1 6 3. - <_> - - <_> - 11 11 3 3 -1. - <_> - 12 11 1 3 3. - <_> - - <_> - 1 11 18 4 -1. - <_> - 7 11 6 4 3. - <_> - - <_> - 5 8 16 5 -1. - <_> - 9 8 8 5 2. - <_> - - <_> - 4 0 14 1 -1. - <_> - 11 0 7 1 2. - <_> - - <_> - 11 11 3 3 -1. - <_> - 12 11 1 3 3. - <_> - - <_> - 8 11 3 3 -1. - <_> - 9 11 1 3 3. - <_> - - <_> - 21 9 1 2 -1. - <_> - 21 10 1 1 2. - <_> - - <_> - 0 13 22 7 -1. - <_> - 11 13 11 7 2. - <_> - - <_> - 11 8 2 2 -1. - <_> - 11 8 1 2 2. - <_> - - <_> - 6 4 6 10 -1. - <_> - 8 4 2 10 3. - <_> - - <_> - 17 6 2 3 -1. - <_> - 17 7 2 1 3. - <_> - - <_> - 0 0 16 19 -1. - <_> - 8 0 8 19 2. - <_> - - <_> - 10 5 4 6 -1. - <_> - 10 8 4 3 2. - <_> - - <_> - 3 6 2 3 -1. - <_> - 3 7 2 1 3. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 8 9 6 2 -1. - <_> - 11 9 3 1 2. - <_> - 8 10 3 1 2. - <_> - - <_> - 8 7 6 4 -1. - <_> - 8 7 3 2 2. - <_> - 11 9 3 2 2. - <_> - - <_> - 11 6 2 3 -1. - <_> - 11 7 2 1 3. - <_> - - <_> - 4 6 2 2 -1. - <_> - 4 7 2 1 2. - <_> - - <_> - 16 6 1 2 -1. - <_> - 16 7 1 1 2. - <_> - - <_> - 5 6 1 2 -1. - <_> - 5 7 1 1 2. - <_> - - <_> - 9 0 4 6 -1. - <_> - 9 2 4 2 3. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 2 1 2. - 1 - <_> - - <_> - 16 14 6 6 -1. - <_> - 16 14 3 6 2. - <_> - - <_> - 5 7 12 4 -1. - <_> - 8 7 6 4 2. - <_> - - <_> - 7 10 8 1 -1. - <_> - 9 10 4 1 2. - <_> - - <_> - 8 6 4 2 -1. - <_> - 9 7 2 2 2. - 1 - <_> - - <_> - 16 0 2 2 -1. - <_> - 16 1 2 1 2. - <_> - - <_> - 0 14 6 5 -1. - <_> - 3 14 3 5 2. - <_> - - <_> - 21 9 1 2 -1. - <_> - 21 10 1 1 2. - <_> - - <_> - 2 5 18 1 -1. - <_> - 8 5 6 1 3. - <_> - - <_> - 12 5 2 2 -1. - <_> - 13 5 1 1 2. - <_> - 12 6 1 1 2. - <_> - - <_> - 0 9 1 2 -1. - <_> - 0 10 1 1 2. - <_> - - <_> - 0 0 22 7 -1. - <_> - 0 0 11 7 2. - <_> - - <_> - 10 2 2 2 -1. - <_> - 10 2 1 2 2. - 1 - <_> - - <_> - 7 4 8 9 -1. - <_> - 9 4 4 9 2. - <_> - - <_> - 8 0 4 3 -1. - <_> - 8 0 2 3 2. - 1 - <_> - - <_> - 9 5 4 3 -1. - <_> - 9 6 4 1 3. - <_> - - <_> - 0 1 4 10 -1. - <_> - 0 1 2 5 2. - <_> - 2 6 2 5 2. - <_> - - <_> - 9 6 4 1 -1. - <_> - 10 6 2 1 2. - <_> - - <_> - 3 3 2 2 -1. - <_> - 3 4 2 1 2. - <_> - - <_> - 12 6 3 2 -1. - <_> - 13 6 1 2 3. - <_> - - <_> - 3 1 1 4 -1. - <_> - 3 2 1 2 2. - <_> - - <_> - 11 3 4 7 -1. - <_> - 12 3 2 7 2. - <_> - - <_> - 9 2 4 8 -1. - <_> - 10 2 2 8 2. - <_> - - <_> - 5 4 12 6 -1. - <_> - 8 4 6 6 2. - <_> - - <_> - 8 7 6 4 -1. - <_> - 8 7 3 2 2. - <_> - 11 9 3 2 2. - <_> - - <_> - 5 2 12 3 -1. - <_> - 8 2 6 3 2. - <_> - - <_> - 10 0 3 3 -1. - <_> - 11 1 1 3 3. - 1 - <_> - - <_> - 8 9 6 2 -1. - <_> - 11 9 3 1 2. - <_> - 8 10 3 1 2. - <_> - - <_> - 8 8 3 1 -1. - <_> - 9 8 1 1 3. - <_> - - <_> - 8 0 6 1 -1. - <_> - 8 0 3 1 2. - <_> - - <_> - 6 0 10 1 -1. - <_> - 11 0 5 1 2. - <_> - - <_> - 18 9 2 3 -1. - <_> - 18 10 2 1 3. - <_> - - <_> - 2 14 12 3 -1. - <_> - 5 14 6 3 2. - <_> - - <_> - 12 6 3 3 -1. - <_> - 13 6 1 3 3. - <_> - - <_> - 7 6 3 3 -1. - <_> - 8 6 1 3 3. - <_> - - <_> - 9 8 10 12 -1. - <_> - 14 8 5 6 2. - <_> - 9 14 5 6 2. - <_> - - <_> - 0 12 21 6 -1. - <_> - 7 14 7 2 9. - <_> - - <_> - 12 7 1 2 -1. - <_> - 12 7 1 1 2. - 1 - <_> - - <_> - 11 2 4 11 -1. - <_> - 12 3 2 11 2. - 1 - <_> - - <_> - 10 5 4 6 -1. - <_> - 10 8 4 3 2. - <_> - - <_> - 8 0 6 4 -1. - <_> - 8 1 6 2 2. - <_> - - <_> - 16 1 3 2 -1. - <_> - 16 2 3 1 2. - <_> - - <_> - 2 10 11 10 -1. - <_> - 2 15 11 5 2. - <_> - - <_> - 2 6 18 6 -1. - <_> - 2 8 18 2 3. - <_> - - <_> - 9 7 2 2 -1. - <_> - 10 7 1 2 2. - <_> - - <_> - 13 17 6 1 -1. - <_> - 13 17 3 1 2. - <_> - - <_> - 10 14 1 2 -1. - <_> - 10 15 1 1 2. - <_> - - <_> - 13 0 3 3 -1. - <_> - 12 1 3 1 3. - 1 - <_> - - <_> - 11 0 8 1 -1. - <_> - 13 2 4 1 2. - 1 - <_> - - <_> - 3 4 16 4 -1. - <_> - 11 4 8 2 2. - <_> - 3 6 8 2 2. - <_> - - <_> - 9 0 3 3 -1. - <_> - 10 1 1 3 3. - 1 - <_> - - <_> - 0 2 22 4 -1. - <_> - 0 2 11 4 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 7 0 4 1 2. - 1 - <_> - - <_> - 8 1 9 17 -1. - <_> - 11 1 3 17 3. - <_> - - <_> - 3 1 16 17 -1. - <_> - 7 1 8 17 2. - <_> - - <_> - 15 6 7 2 -1. - <_> - 15 7 7 1 2. - <_> - - <_> - 2 0 2 2 -1. - <_> - 2 1 2 1 2. - <_> - - <_> - 16 10 5 4 -1. - <_> - 16 10 5 2 2. - 1 - <_> - - <_> - 1 0 1 2 -1. - <_> - 1 1 1 1 2. - <_> - - <_> - 9 1 4 6 -1. - <_> - 9 3 4 2 3. - <_> - - <_> - 6 3 8 3 -1. - <_> - 6 4 8 1 3. - <_> - - <_> - 9 0 4 6 -1. - <_> - 9 2 4 2 3. - <_> - - <_> - 0 0 22 4 -1. - <_> - 0 0 11 2 2. - <_> - 11 2 11 2 2. - <_> - - <_> - 11 4 1 3 -1. - <_> - 11 5 1 1 3. - <_> - - <_> - 9 4 3 9 -1. - <_> - 9 7 3 3 3. - <_> - - <_> - 15 15 2 4 -1. - <_> - 15 16 2 2 2. - <_> - - <_> - 9 7 4 3 -1. - <_> - 9 8 4 1 3. - <_> - - <_> - 9 7 4 4 -1. - <_> - 11 7 2 2 2. - <_> - 9 9 2 2 2. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 3 15 16 2 -1. - <_> - 11 15 8 1 2. - <_> - 3 16 8 1 2. - <_> - - <_> - 9 12 2 2 -1. - <_> - 9 13 2 1 2. - <_> - - <_> - 12 4 6 2 -1. - <_> - 12 5 6 1 2. - <_> - - <_> - 10 6 2 4 -1. - <_> - 10 7 2 2 2. - <_> - - <_> - 13 15 1 2 -1. - <_> - 13 16 1 1 2. - <_> - - <_> - 0 2 21 18 -1. - <_> - 7 8 7 6 9. - <_> - - <_> - 11 10 4 6 -1. - <_> - 9 12 4 2 3. - 1 - <_> - - <_> - 8 15 1 2 -1. - <_> - 8 16 1 1 2. - <_> - - <_> - 13 7 3 9 -1. - <_> - 14 7 1 9 3. - <_> - - <_> - 7 7 8 9 -1. - <_> - 9 7 4 9 2. - <_> - - <_> - 17 6 5 2 -1. - <_> - 17 7 5 1 2. - <_> - - <_> - 7 1 2 6 -1. - <_> - 7 1 1 3 2. - <_> - 8 4 1 3 2. - <_> - - <_> - 13 0 2 2 -1. - <_> - 13 0 1 2 2. - 1 - <_> - - <_> - 0 1 22 19 -1. - <_> - 11 1 11 19 2. - <_> - - <_> - 13 4 3 5 -1. - <_> - 14 4 1 5 3. - <_> - - <_> - 9 2 3 4 -1. - <_> - 10 2 1 4 3. - <_> - - <_> - 16 1 4 1 -1. - <_> - 16 1 2 1 2. - <_> - - <_> - 7 3 3 9 -1. - <_> - 8 3 1 9 3. - <_> - - <_> - 11 7 2 2 -1. - <_> - 11 7 1 2 2. - 1 - <_> - - <_> - 6 5 6 10 -1. - <_> - 6 5 3 5 2. - <_> - 9 10 3 5 2. - <_> - - <_> - 16 6 6 2 -1. - <_> - 16 7 6 1 2. - <_> - - <_> - 0 6 6 2 -1. - <_> - 0 7 6 1 2. - <_> - - <_> - 10 10 2 3 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 7 4 8 2 -1. - <_> - 9 4 4 2 2. - <_> - - <_> - 3 2 16 2 -1. - <_> - 7 2 8 2 2. - <_> - - <_> - 5 7 12 4 -1. - <_> - 8 7 6 4 2. - <_> - - <_> - 9 4 4 6 -1. - <_> - 11 4 2 3 2. - <_> - 9 7 2 3 2. - <_> - - <_> - 9 4 4 6 -1. - <_> - 9 4 2 3 2. - <_> - 11 7 2 3 2. - <_> - - <_> - 9 1 4 3 -1. - <_> - 9 2 4 1 3. - <_> - - <_> - 0 2 20 7 -1. - <_> - 10 2 10 7 2. - <_> - - <_> - 16 1 1 2 -1. - <_> - 16 2 1 1 2. - <_> - - <_> - 0 0 2 3 -1. - <_> - 1 0 1 3 2. - <_> - - <_> - 16 1 1 2 -1. - <_> - 16 2 1 1 2. - <_> - - <_> - 5 16 11 4 -1. - <_> - 5 18 11 2 2. - <_> - - <_> - 9 0 4 6 -1. - <_> - 9 2 4 2 3. - <_> - - <_> - 9 4 3 3 -1. - <_> - 9 5 3 1 3. - <_> - - <_> - 2 0 18 9 -1. - <_> - 8 3 6 3 9. - <_> - - <_> - 4 0 7 8 -1. - <_> - 4 2 7 4 2. - <_> - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - <_> - - <_> - 7 6 8 4 -1. - <_> - 7 7 8 2 2. - <_> - - <_> - 16 1 1 2 -1. - <_> - 16 2 1 1 2. - <_> - - <_> - 3 15 2 3 -1. - <_> - 2 16 2 1 3. - 1 - <_> - - <_> - 16 1 1 2 -1. - <_> - 16 2 1 1 2. - <_> - - <_> - 10 7 1 4 -1. - <_> - 10 9 1 2 2. - <_> - - <_> - 8 7 6 1 -1. - <_> - 10 7 2 1 3. - <_> - - <_> - 9 3 3 3 -1. - <_> - 9 4 3 1 3. - <_> - - <_> - 11 4 10 12 -1. - <_> - 11 4 5 12 2. - <_> - - <_> - 10 0 2 3 -1. - <_> - 9 1 2 1 3. - 1 - <_> - - <_> - 13 6 3 2 -1. - <_> - 14 6 1 2 3. - <_> - - <_> - 5 1 1 2 -1. - <_> - 5 2 1 1 2. - <_> - - <_> - 16 1 1 2 -1. - <_> - 16 2 1 1 2. - <_> - - <_> - 5 1 1 2 -1. - <_> - 5 2 1 1 2. - <_> - - <_> - 4 16 14 4 -1. - <_> - 4 17 14 2 2. - <_> - - <_> - 5 14 2 2 -1. - <_> - 5 14 1 1 2. - <_> - 6 15 1 1 2. - <_> - - <_> - 10 1 3 4 -1. - <_> - 10 3 3 2 2. - <_> - - <_> - 6 6 3 2 -1. - <_> - 7 6 1 2 3. - <_> - - <_> - 13 6 3 3 -1. - <_> - 14 6 1 3 3. - <_> - - <_> - 6 6 3 3 -1. - <_> - 7 6 1 3 3. - <_> - - <_> - 13 16 1 2 -1. - <_> - 13 17 1 1 2. - <_> - - <_> - 9 0 3 3 -1. - <_> - 10 0 1 3 3. - <_> - - <_> - 10 1 3 6 -1. - <_> - 11 1 1 6 3. - <_> - - <_> - 10 10 2 3 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 10 10 2 3 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 8 16 1 2 -1. - <_> - 8 17 1 1 2. - <_> - - <_> - 18 8 2 8 -1. - <_> - 18 8 2 4 2. - 1 - <_> - - <_> - 9 0 2 1 -1. - <_> - 10 0 1 1 2. - <_> - - <_> - 9 8 4 1 -1. - <_> - 10 8 2 1 2. - <_> - - <_> - 0 4 1 2 -1. - <_> - 0 5 1 1 2. - <_> - - <_> - 13 5 3 1 -1. - <_> - 14 5 1 1 3. - <_> - - <_> - 5 3 1 2 -1. - <_> - 5 4 1 1 2. - <_> - - <_> - 10 3 4 6 -1. - <_> - 12 3 2 3 2. - <_> - 10 6 2 3 2. - <_> - - <_> - 1 4 12 15 -1. - <_> - 5 4 4 15 3. - <_> - - <_> - 9 10 12 7 -1. - <_> - 13 10 4 7 3. - <_> - - <_> - 6 18 2 2 -1. - <_> - 6 19 2 1 2. - <_> - - <_> - 12 8 10 9 -1. - <_> - 12 8 5 9 2. - <_> - - <_> - 0 11 15 6 -1. - <_> - 5 11 5 6 3. - <_> - - <_> - 11 5 10 12 -1. - <_> - 11 5 5 12 2. - <_> - - <_> - 1 5 10 12 -1. - <_> - 6 5 5 12 2. - <_> - - <_> - 15 0 6 11 -1. - <_> - 15 0 3 11 2. - 1 - <_> - - <_> - 4 0 2 8 -1. - <_> - 4 4 2 4 2. - <_> - - <_> - 2 9 20 3 -1. - <_> - 2 10 20 1 3. - <_> - - <_> - 3 7 13 12 -1. - <_> - 3 13 13 6 2. - <_> - - <_> - 9 11 5 6 -1. - <_> - 9 14 5 3 2. - <_> - - <_> - 0 2 21 18 -1. - <_> - 7 8 7 6 9. - <_> - - <_> - 10 6 7 2 -1. - <_> - 10 7 7 1 2. - <_> - - <_> - 11 7 1 2 -1. - <_> - 11 7 1 1 2. - 1 - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 20 4 2 2 -1. - <_> - 20 5 2 1 2. - <_> - - <_> - 9 5 4 5 -1. - <_> - 10 5 2 5 2. - <_> - - <_> - 20 4 2 2 -1. - <_> - 20 5 2 1 2. - <_> - - <_> - 8 0 3 2 -1. - <_> - 9 1 1 2 3. - 1 - <_> - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - <_> - - <_> - 7 0 7 4 -1. - <_> - 7 1 7 2 2. - <_> - - <_> - 9 0 4 4 -1. - <_> - 9 1 4 2 2. - <_> - - <_> - 9 0 4 10 -1. - <_> - 9 0 2 5 2. - <_> - 11 5 2 5 2. - <_> - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - <_> - - <_> - 5 0 2 1 -1. - <_> - 6 0 1 1 2. - <_> - - <_> - 13 5 3 1 -1. - <_> - 14 5 1 1 3. - <_> - - <_> - 5 6 7 2 -1. - <_> - 5 7 7 1 2. - <_> - - <_> - 10 5 2 9 -1. - <_> - 10 8 2 3 3. - <_> - - <_> - 9 5 4 2 -1. - <_> - 10 5 2 2 2. - <_> - - <_> - 11 3 4 7 -1. - <_> - 12 3 2 7 2. - <_> - - <_> - 7 3 4 7 -1. - <_> - 8 3 2 7 2. - <_> - - <_> - 13 3 6 6 -1. - <_> - 15 3 2 6 3. - <_> - - <_> - 0 1 1 6 -1. - <_> - 0 3 1 2 3. - <_> - - <_> - 13 3 6 6 -1. - <_> - 15 3 2 6 3. - <_> - - <_> - 3 3 6 6 -1. - <_> - 5 3 2 6 3. - <_> - - <_> - 14 6 8 2 -1. - <_> - 18 6 4 1 2. - <_> - 14 7 4 1 2. - <_> - - <_> - 1 0 20 20 -1. - <_> - 1 10 20 10 2. - <_> - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - <_> - - <_> - 0 6 8 2 -1. - <_> - 0 6 4 1 2. - <_> - 4 7 4 1 2. - <_> - - <_> - 12 5 2 2 -1. - <_> - 13 5 1 1 2. - <_> - 12 6 1 1 2. - <_> - - <_> - 9 4 4 3 -1. - <_> - 9 5 4 1 3. - <_> - - <_> - 10 1 2 10 -1. - <_> - 11 1 1 5 2. - <_> - 10 6 1 5 2. - <_> - - <_> - 8 4 5 3 -1. - <_> - 8 5 5 1 3. - <_> - - <_> - 13 3 2 3 -1. - <_> - 13 4 2 1 3. - <_> - - <_> - 7 3 2 3 -1. - <_> - 7 4 2 1 3. - <_> - - <_> - 5 18 16 2 -1. - <_> - 13 18 8 1 2. - <_> - 5 19 8 1 2. - <_> - - <_> - 6 3 4 6 -1. - <_> - 7 3 2 6 2. - <_> - - <_> - 10 0 3 4 -1. - <_> - 11 1 1 4 3. - 1 - <_> - - <_> - 16 0 6 6 -1. - <_> - 16 2 6 2 3. - <_> - - <_> - 8 8 3 2 -1. - <_> - 9 8 1 2 3. - <_> - - <_> - 12 5 2 2 -1. - <_> - 13 5 1 1 2. - <_> - 12 6 1 1 2. - <_> - - <_> - 9 2 4 8 -1. - <_> - 9 2 2 4 2. - <_> - 11 6 2 4 2. - <_> - - <_> - 8 11 6 1 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 10 7 2 6 -1. - <_> - 10 10 2 3 2. - <_> - - <_> - 10 9 2 2 -1. - <_> - 10 10 2 1 2. - <_> - - <_> - 3 4 16 4 -1. - <_> - 7 4 8 4 2. - <_> - - <_> - 3 2 16 6 -1. - <_> - 11 2 8 3 2. - <_> - 3 5 8 3 2. - <_> - - <_> - 11 0 5 2 -1. - <_> - 11 0 5 1 2. - 1 - <_> - - <_> - 16 11 6 9 -1. - <_> - 18 11 2 9 3. - <_> - - <_> - 1 8 18 9 -1. - <_> - 7 8 6 9 3. - <_> - - <_> - 12 3 7 4 -1. - <_> - 12 5 7 2 2. - <_> - - <_> - 9 0 3 3 -1. - <_> - 10 1 1 3 3. - 1 - <_> - - <_> - 11 0 2 10 -1. - <_> - 11 0 1 10 2. - <_> - - <_> - 4 1 8 6 -1. - <_> - 4 4 8 3 2. - <_> - - <_> - 11 0 2 10 -1. - <_> - 11 0 1 10 2. - <_> - - <_> - 4 0 3 8 -1. - <_> - 4 4 3 4 2. - <_> - - <_> - 12 6 8 4 -1. - <_> - 14 8 4 4 2. - 1 - <_> - - <_> - 6 1 10 1 -1. - <_> - 11 1 5 1 2. - <_> - - <_> - 9 6 6 6 -1. - <_> - 9 8 6 2 3. - <_> - - <_> - 0 3 22 1 -1. - <_> - 11 3 11 1 2. - <_> - - <_> - 12 6 3 3 -1. - <_> - 13 6 1 3 3. - <_> - - <_> - 0 4 20 13 -1. - <_> - 10 4 10 13 2. - <_> - - <_> - 14 0 2 1 -1. - <_> - 14 0 1 1 2. - <_> - - <_> - 10 3 2 3 -1. - <_> - 10 4 2 1 3. - <_> - - <_> - 10 4 2 9 -1. - <_> - 10 7 2 3 3. - <_> - - <_> - 4 8 13 10 -1. - <_> - 4 13 13 5 2. - <_> - - <_> - 4 9 14 10 -1. - <_> - 4 14 14 5 2. - <_> - - <_> - 1 1 1 2 -1. - <_> - 1 2 1 1 2. - <_> - - <_> - 20 1 1 2 -1. - <_> - 20 2 1 1 2. - <_> - - <_> - 8 0 3 3 -1. - <_> - 9 1 1 3 3. - 1 - <_> - - <_> - 14 0 2 1 -1. - <_> - 14 0 1 1 2. - <_> - - <_> - 10 0 2 4 -1. - <_> - 10 2 2 2 2. - <_> - - <_> - 11 5 2 1 -1. - <_> - 11 5 1 1 2. - <_> - - <_> - 9 1 3 4 -1. - <_> - 9 2 3 2 2. - <_> - - <_> - 20 1 1 2 -1. - <_> - 20 2 1 1 2. - <_> - - <_> - 8 6 1 2 -1. - <_> - 8 7 1 1 2. - <_> - - <_> - 20 1 1 2 -1. - <_> - 20 2 1 1 2. - <_> - - <_> - 1 4 18 3 -1. - <_> - 1 5 18 1 3. - <_> - - <_> - 20 1 1 2 -1. - <_> - 20 2 1 1 2. - <_> - - <_> - 1 1 1 2 -1. - <_> - 1 2 1 1 2. - <_> - - <_> - 9 7 4 3 -1. - <_> - 9 8 4 1 3. - <_> - - <_> - 9 15 2 2 -1. - <_> - 9 16 2 1 2. - <_> - - <_> - 12 9 2 6 -1. - <_> - 13 9 1 3 2. - <_> - 12 12 1 3 2. - <_> - - <_> - 11 5 4 2 -1. - <_> - 12 6 2 2 2. - 1 - <_> - - <_> - 12 9 2 6 -1. - <_> - 13 9 1 3 2. - <_> - 12 12 1 3 2. - <_> - - <_> - 6 3 9 9 -1. - <_> - 9 3 3 9 3. - <_> - - <_> - 11 5 4 1 -1. - <_> - 11 5 2 1 2. - <_> - - <_> - 6 0 2 1 -1. - <_> - 7 0 1 1 2. - <_> - - <_> - 13 5 3 3 -1. - <_> - 14 5 1 3 3. - <_> - - <_> - 9 3 3 9 -1. - <_> - 10 6 1 3 9. - <_> - - <_> - 11 7 1 6 -1. - <_> - 11 10 1 3 2. - <_> - - <_> - 6 5 3 3 -1. - <_> - 7 5 1 3 3. - <_> - - <_> - 11 13 1 2 -1. - <_> - 11 14 1 1 2. - <_> - - <_> - 5 6 1 2 -1. - <_> - 5 7 1 1 2. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 9 2 4 4 -1. - <_> - 9 3 4 2 2. - <_> - - <_> - 14 0 3 3 -1. - <_> - 15 1 1 3 3. - 1 - <_> - - <_> - 8 0 3 3 -1. - <_> - 7 1 3 1 3. - 1 - <_> - - <_> - 13 5 3 1 -1. - <_> - 14 5 1 1 3. - <_> - - <_> - 4 15 7 2 -1. - <_> - 4 16 7 1 2. - <_> - - <_> - 12 4 10 4 -1. - <_> - 12 6 10 2 2. - <_> - - <_> - 0 4 10 4 -1. - <_> - 0 6 10 2 2. - <_> - - <_> - 13 5 3 1 -1. - <_> - 14 5 1 1 3. - <_> - - <_> - 8 6 2 2 -1. - <_> - 8 6 1 1 2. - <_> - 9 7 1 1 2. - <_> - - <_> - 11 11 2 2 -1. - <_> - 12 11 1 1 2. - <_> - 11 12 1 1 2. - <_> - - <_> - 1 16 20 2 -1. - <_> - 1 16 10 1 2. - <_> - 11 17 10 1 2. - <_> - - <_> - 13 5 3 1 -1. - <_> - 14 5 1 1 3. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 5 1 1 3. - <_> - - <_> - 14 0 2 1 -1. - <_> - 14 0 1 1 2. - <_> - - <_> - 8 5 2 1 -1. - <_> - 9 5 1 1 2. - <_> - - <_> - 14 0 2 1 -1. - <_> - 14 0 1 1 2. - <_> - - <_> - 6 0 2 1 -1. - <_> - 7 0 1 1 2. - <_> - - <_> - 9 3 4 4 -1. - <_> - 9 4 4 2 2. - <_> - - <_> - 9 9 4 2 -1. - <_> - 9 9 2 1 2. - <_> - 11 10 2 1 2. - <_> - - <_> - 19 16 1 4 -1. - <_> - 19 18 1 2 2. - <_> - - <_> - 8 1 5 4 -1. - <_> - 8 2 5 2 2. - <_> - - <_> - 2 15 18 4 -1. - <_> - 11 15 9 2 2. - <_> - 2 17 9 2 2. - <_> - - <_> - 10 5 2 6 -1. - <_> - 10 8 2 3 2. - <_> - - <_> - 11 14 3 1 -1. - <_> - 12 14 1 1 3. - <_> - - <_> - 7 5 2 1 -1. - <_> - 8 5 1 1 2. - <_> - - <_> - 11 5 2 3 -1. - <_> - 11 5 1 3 2. - 1 - <_> - - <_> - 10 7 2 2 -1. - <_> - 10 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 12 9 2 6 -1. - <_> - 13 9 1 3 2. - <_> - 12 12 1 3 2. - <_> - - <_> - 7 1 3 2 -1. - <_> - 8 2 1 2 3. - 1 - <_> - - <_> - 16 6 1 2 -1. - <_> - 16 7 1 1 2. - <_> - - <_> - 5 6 1 2 -1. - <_> - 5 7 1 1 2. - <_> - - <_> - 9 1 4 3 -1. - <_> - 9 2 4 1 3. - <_> - - <_> - 4 3 5 4 -1. - <_> - 4 4 5 2 2. - <_> - - <_> - 0 8 22 8 -1. - <_> - 0 8 11 8 2. - <_> - - <_> - 8 14 3 1 -1. - <_> - 9 14 1 1 3. - <_> - - <_> - 14 14 2 2 -1. - <_> - 14 14 1 2 2. - 1 - <_> - - <_> - 4 18 14 1 -1. - <_> - 11 18 7 1 2. - <_> - - <_> - 14 7 7 6 -1. - <_> - 12 9 7 2 3. - 1 - <_> - - <_> - 1 16 2 4 -1. - <_> - 1 18 2 2 2. - <_> - - <_> - 18 18 3 1 -1. - <_> - 19 18 1 1 3. - <_> - - <_> - 1 18 3 1 -1. - <_> - 2 18 1 1 3. - <_> - - <_> - 13 17 2 3 -1. - <_> - 13 18 2 1 3. - <_> - - <_> - 9 10 4 8 -1. - <_> - 9 14 4 4 2. - <_> - - <_> - 4 6 14 12 -1. - <_> - 4 12 14 6 2. - <_> - - <_> - 5 2 8 4 -1. - <_> - 5 2 4 2 2. - <_> - 9 4 4 2 2. - <_> - - <_> - 9 1 4 6 -1. - <_> - 9 3 4 2 3. - <_> - - <_> - 7 0 7 4 -1. - <_> - 7 2 7 2 2. - <_> - - <_> - 9 6 4 4 -1. - <_> - 9 7 4 2 2. - <_> - - <_> - 7 4 8 8 -1. - <_> - 9 4 4 8 2. - <_> - - <_> - 2 0 18 11 -1. - <_> - 8 0 6 11 3. - <_> - - <_> - 3 3 16 2 -1. - <_> - 3 3 8 1 2. - <_> - 11 4 8 1 2. - <_> - - <_> - 9 0 4 6 -1. - <_> - 9 2 4 2 3. - <_> - - <_> - 9 4 4 3 -1. - <_> - 9 5 4 1 3. - <_> - - <_> - 10 6 3 6 -1. - <_> - 10 9 3 3 2. - <_> - - <_> - 0 11 1 2 -1. - <_> - 0 12 1 1 2. - <_> - - <_> - 11 8 2 4 -1. - <_> - 12 8 1 2 2. - <_> - 11 10 1 2 2. - <_> - - <_> - 7 6 2 4 -1. - <_> - 7 7 2 2 2. - <_> - - <_> - 8 7 6 4 -1. - <_> - 11 7 3 2 2. - <_> - 8 9 3 2 2. - <_> - - <_> - 4 0 2 2 -1. - <_> - 4 1 2 1 2. - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 6 2 8 3 -1. - <_> - 6 2 4 3 2. - 1 - <_> - - <_> - 10 0 6 6 -1. - <_> - 13 0 3 3 2. - <_> - 10 3 3 3 2. - <_> - - <_> - 6 8 6 6 -1. - <_> - 6 8 3 6 2. - 1 - <_> - - <_> - 4 6 14 2 -1. - <_> - 11 6 7 1 2. - <_> - 4 7 7 1 2. - <_> - - <_> - 9 16 1 3 -1. - <_> - 9 17 1 1 3. - <_> - - <_> - 1 10 20 10 -1. - <_> - 1 15 20 5 2. - <_> - - <_> - 3 6 16 14 -1. - <_> - 3 13 16 7 2. - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 7 6 3 6 -1. - <_> - 7 8 3 2 3. - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 9 7 4 3 -1. - <_> - 9 8 4 1 3. - <_> - - <_> - 8 2 6 8 -1. - <_> - 11 2 3 4 2. - <_> - 8 6 3 4 2. - <_> - - <_> - 8 4 6 4 -1. - <_> - 8 4 3 2 2. - <_> - 11 6 3 2 2. - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 6 6 3 4 -1. - <_> - 7 6 1 4 3. - <_> - - <_> - 13 5 3 4 -1. - <_> - 14 5 1 4 3. - <_> - - <_> - 6 5 3 4 -1. - <_> - 7 5 1 4 3. - <_> - - <_> - 6 0 10 1 -1. - <_> - 6 0 5 1 2. - <_> - - <_> - 9 6 4 4 -1. - <_> - 10 6 2 4 2. - <_> - - <_> - 11 4 1 4 -1. - <_> - 11 6 1 2 2. - <_> - - <_> - 9 4 3 9 -1. - <_> - 9 7 3 3 3. - <_> - - <_> - 11 7 1 6 -1. - <_> - 11 10 1 3 2. - <_> - - <_> - 6 7 3 12 -1. - <_> - 6 13 3 6 2. - <_> - - <_> - 10 5 2 2 -1. - <_> - 11 5 1 1 2. - <_> - 10 6 1 1 2. - <_> - - <_> - 9 5 2 3 -1. - <_> - 9 6 2 1 3. - <_> - - <_> - 15 3 2 3 -1. - <_> - 15 4 2 1 3. - <_> - - <_> - 5 3 2 3 -1. - <_> - 5 4 2 1 3. - <_> - - <_> - 9 0 7 4 -1. - <_> - 9 1 7 2 2. - <_> - - <_> - 9 0 4 4 -1. - <_> - 9 1 4 2 2. - <_> - - <_> - 11 3 5 8 -1. - <_> - 11 5 5 4 2. - <_> - - <_> - 10 4 1 4 -1. - <_> - 10 6 1 2 2. - <_> - - <_> - 10 4 3 1 -1. - <_> - 11 4 1 1 3. - <_> - - <_> - 9 4 3 1 -1. - <_> - 10 4 1 1 3. - <_> - - <_> - 9 4 5 3 -1. - <_> - 9 5 5 1 3. - <_> - - <_> - 10 13 1 2 -1. - <_> - 10 14 1 1 2. - <_> - - <_> - 2 14 19 3 -1. - <_> - 2 15 19 1 3. - <_> - - <_> - 2 18 5 2 -1. - <_> - 2 19 5 1 2. - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 5 0 1 2 -1. - <_> - 5 1 1 1 2. - <_> - - <_> - 18 17 3 1 -1. - <_> - 19 17 1 1 3. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 2 1 2. - 1 - <_> - - <_> - 8 0 6 8 -1. - <_> - 8 4 6 4 2. - <_> - - <_> - 6 3 5 8 -1. - <_> - 6 5 5 4 2. - <_> - - <_> - 11 3 6 2 -1. - <_> - 11 3 3 2 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 9 10 1 1 2. - <_> - 10 11 1 1 2. - <_> - - <_> - 17 18 2 2 -1. - <_> - 17 19 2 1 2. - <_> - - <_> - 8 9 6 2 -1. - <_> - 8 9 3 1 2. - <_> - 11 10 3 1 2. - <_> - - <_> - 11 10 2 2 -1. - <_> - 12 10 1 1 2. - <_> - 11 11 1 1 2. - <_> - - <_> - 0 0 22 17 -1. - <_> - 11 0 11 17 2. - <_> - - <_> - 14 17 2 3 -1. - <_> - 14 18 2 1 3. - <_> - - <_> - 10 0 3 4 -1. - <_> - 11 1 1 4 3. - 1 - <_> - - <_> - 17 6 2 4 -1. - <_> - 18 6 1 2 2. - <_> - 17 8 1 2 2. - <_> - - <_> - 9 0 3 4 -1. - <_> - 10 1 1 4 3. - 1 - <_> - - <_> - 17 6 2 4 -1. - <_> - 18 6 1 2 2. - <_> - 17 8 1 2 2. - <_> - - <_> - 6 17 2 3 -1. - <_> - 6 18 2 1 3. - <_> - - <_> - 5 2 12 6 -1. - <_> - 8 2 6 6 2. - <_> - - <_> - 6 0 6 3 -1. - <_> - 8 0 2 3 3. - <_> - - <_> - 19 6 3 3 -1. - <_> - 20 7 1 1 9. - <_> - - <_> - 1 17 3 1 -1. - <_> - 2 17 1 1 3. - <_> - - <_> - 18 16 3 2 -1. - <_> - 19 16 1 2 3. - <_> - - <_> - 0 6 3 3 -1. - <_> - 1 7 1 1 9. - <_> - - <_> - 18 16 3 2 -1. - <_> - 19 16 1 2 3. - <_> - - <_> - 1 16 3 2 -1. - <_> - 2 16 1 2 3. - <_> - - <_> - 17 0 4 8 -1. - <_> - 19 0 2 4 2. - <_> - 17 4 2 4 2. - <_> - - <_> - 8 0 1 3 -1. - <_> - 7 1 1 1 3. - 1 - <_> - - <_> - 8 5 6 3 -1. - <_> - 8 6 6 1 3. - <_> - - <_> - 3 18 2 2 -1. - <_> - 3 19 2 1 2. - <_> - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - <_> - - <_> - 10 9 2 1 -1. - <_> - 10 9 1 1 2. - 1 - <_> - - <_> - 8 0 9 2 -1. - <_> - 8 1 9 1 2. - <_> - - <_> - 6 0 10 4 -1. - <_> - 6 1 10 2 2. - <_> - - <_> - 8 4 6 6 -1. - <_> - 10 6 2 2 9. - <_> - - <_> - 8 8 2 6 -1. - <_> - 8 8 1 3 2. - <_> - 9 11 1 3 2. - <_> - - <_> - 11 7 3 2 -1. - <_> - 11 7 3 1 2. - 1 - <_> - - <_> - 8 9 2 4 -1. - <_> - 8 9 1 2 2. - <_> - 9 11 1 2 2. - <_> - - <_> - 11 8 1 4 -1. - <_> - 11 10 1 2 2. - <_> - - <_> - 1 0 4 8 -1. - <_> - 1 0 2 4 2. - <_> - 3 4 2 4 2. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 8 2 4 3 -1. - <_> - 8 3 4 1 3. - <_> - - <_> - 20 12 2 2 -1. - <_> - 20 13 2 1 2. - <_> - - <_> - 0 12 1 2 -1. - <_> - 0 13 1 1 2. - <_> - - <_> - 12 6 1 3 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 3 7 8 1 -1. - <_> - 7 7 4 1 2. - <_> - - <_> - 3 5 18 12 -1. - <_> - 9 9 6 4 9. - <_> - - <_> - 11 9 6 5 -1. - <_> - 13 11 2 5 3. - 1 - <_> - - <_> - 10 7 3 6 -1. - <_> - 10 9 3 2 3. - <_> - - <_> - 9 10 2 2 -1. - <_> - 9 10 1 1 2. - <_> - 10 11 1 1 2. - <_> - - <_> - 2 18 18 2 -1. - <_> - 11 18 9 1 2. - <_> - 2 19 9 1 2. - <_> - - <_> - 9 0 3 14 -1. - <_> - 9 7 3 7 2. - <_> - - <_> - 14 8 8 4 -1. - <_> - 13 9 8 2 2. - 1 - <_> - - <_> - 4 6 2 2 -1. - <_> - 4 7 2 1 2. - <_> - - <_> - 14 8 8 4 -1. - <_> - 13 9 8 2 2. - 1 - <_> - - <_> - 8 8 4 8 -1. - <_> - 9 9 2 8 2. - 1 - <_> - - <_> - 17 0 4 2 -1. - <_> - 17 0 4 1 2. - 1 - <_> - - <_> - 6 4 6 9 -1. - <_> - 8 7 2 3 9. - <_> - - <_> - 8 8 9 7 -1. - <_> - 11 8 3 7 3. - <_> - - <_> - 10 8 2 4 -1. - <_> - 10 8 2 2 2. - 1 - <_> - - <_> - 10 8 3 6 -1. - <_> - 11 10 1 2 9. - <_> - - <_> - 4 15 4 4 -1. - <_> - 4 15 2 2 2. - <_> - 6 17 2 2 2. - <_> - - <_> - 13 4 4 4 -1. - <_> - 12 5 4 2 2. - 1 - <_> - - <_> - 9 2 4 6 -1. - <_> - 9 4 4 2 3. - <_> - - <_> - 10 4 3 2 -1. - <_> - 11 4 1 2 3. - <_> - - <_> - 9 4 3 2 -1. - <_> - 10 4 1 2 3. - <_> - - <_> - 12 8 3 3 -1. - <_> - 13 9 1 3 3. - 1 - <_> - - <_> - 7 14 1 2 -1. - <_> - 7 14 1 1 2. - 1 - <_> - - <_> - 12 8 3 3 -1. - <_> - 13 9 1 3 3. - 1 - <_> - - <_> - 10 8 3 3 -1. - <_> - 9 9 3 1 3. - 1 - <_> - - <_> - 7 0 4 6 -1. - <_> - 7 0 2 3 2. - <_> - 9 3 2 3 2. - <_> - - <_> - 6 18 10 2 -1. - <_> - 6 19 10 1 2. - <_> - - <_> - 10 17 1 3 -1. - <_> - 10 18 1 1 3. - <_> - - <_> - 8 0 12 4 -1. - <_> - 14 0 6 2 2. - <_> - 8 2 6 2 2. - <_> - - <_> - 11 0 5 2 -1. - <_> - 11 0 5 1 2. - 1 - <_> - - <_> - 14 14 7 2 -1. - <_> - 14 15 7 1 2. - <_> - - <_> - 2 0 12 6 -1. - <_> - 2 0 6 3 2. - <_> - 8 3 6 3 2. - <_> - - <_> - 11 5 1 2 -1. - <_> - 11 6 1 1 2. - <_> - - <_> - 8 7 4 6 -1. - <_> - 8 10 4 3 2. - <_> - - <_> - 12 6 10 4 -1. - <_> - 12 6 10 2 2. - 1 - <_> - - <_> - 3 18 3 1 -1. - <_> - 4 18 1 1 3. - <_> - - <_> - 8 2 12 18 -1. - <_> - 8 11 12 9 2. - <_> - - <_> - 10 6 4 10 -1. - <_> - 10 6 2 10 2. - 1 - <_> - - <_> - 4 1 14 4 -1. - <_> - 11 1 7 2 2. - <_> - 4 3 7 2 2. - <_> - - <_> - 2 1 18 9 -1. - <_> - 8 1 6 9 3. - <_> - - <_> - 9 6 4 1 -1. - <_> - 10 6 2 1 2. - <_> - - <_> - 9 6 2 2 -1. - <_> - 9 7 2 1 2. - <_> - - <_> - 9 8 4 1 -1. - <_> - 10 8 2 1 2. - <_> - - <_> - 0 13 12 7 -1. - <_> - 4 13 4 7 3. - <_> - - <_> - 12 0 4 1 -1. - <_> - 13 0 2 1 2. - <_> - - <_> - 6 0 4 1 -1. - <_> - 7 0 2 1 2. - <_> - - <_> - 14 6 4 12 -1. - <_> - 14 12 4 6 2. - <_> - - <_> - 4 17 2 2 -1. - <_> - 4 18 2 1 2. - <_> - - <_> - 16 2 5 2 -1. - <_> - 16 3 5 1 2. - <_> - - <_> - 3 0 15 6 -1. - <_> - 8 2 5 2 9. - <_> - - <_> - 9 6 5 3 -1. - <_> - 9 7 5 1 3. - <_> - - <_> - 0 17 19 2 -1. - <_> - 0 18 19 1 2. - <_> - - <_> - 18 15 1 2 -1. - <_> - 18 16 1 1 2. - <_> - - <_> - 5 9 4 5 -1. - <_> - 6 10 2 5 2. - 1 - <_> - - <_> - 3 6 18 2 -1. - <_> - 3 6 9 2 2. - <_> - - <_> - 8 5 6 6 -1. - <_> - 10 7 2 2 9. - <_> - - <_> - 13 8 2 2 -1. - <_> - 13 8 1 2 2. - 1 - <_> - - <_> - 9 8 2 2 -1. - <_> - 9 8 2 1 2. - 1 - <_> - - <_> - 10 9 6 10 -1. - <_> - 13 9 3 5 2. - <_> - 10 14 3 5 2. - <_> - - <_> - 2 9 6 8 -1. - <_> - 2 9 3 4 2. - <_> - 5 13 3 4 2. - <_> - - <_> - 13 17 1 3 -1. - <_> - 13 18 1 1 3. - <_> - - <_> - 8 17 1 3 -1. - <_> - 8 18 1 1 3. - <_> - - <_> - 12 11 7 3 -1. - <_> - 12 12 7 1 3. - <_> - - <_> - 11 0 3 2 -1. - <_> - 12 1 1 2 3. - 1 - <_> - - <_> - 9 4 4 3 -1. - <_> - 9 5 4 1 3. - <_> - - <_> - 9 4 2 6 -1. - <_> - 9 7 2 3 2. - <_> - - <_> - 10 10 2 3 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 10 9 2 3 -1. - <_> - 10 10 2 1 3. - <_> - - <_> - 16 0 2 4 -1. - <_> - 16 1 2 2 2. - <_> - - <_> - 4 0 2 4 -1. - <_> - 4 1 2 2 2. - <_> - - <_> - 11 1 4 4 -1. - <_> - 13 1 2 2 2. - <_> - 11 3 2 2 2. - <_> - - <_> - 6 1 6 4 -1. - <_> - 6 1 3 2 2. - <_> - 9 3 3 2 2. - <_> - - <_> - 10 1 2 3 -1. - <_> - 10 1 1 3 2. - <_> - - <_> - 10 9 2 1 -1. - <_> - 10 9 1 1 2. - 1 - <_> - - <_> - 16 18 6 2 -1. - <_> - 18 18 2 2 3. - <_> - - <_> - 1 5 18 12 -1. - <_> - 7 9 6 4 9. - <_> - - <_> - 16 18 6 2 -1. - <_> - 18 18 2 2 3. - <_> - - <_> - 5 1 12 12 -1. - <_> - 9 1 4 12 3. - <_> - - <_> - 8 3 6 11 -1. - <_> - 8 3 3 11 2. - <_> - - <_> - 9 0 3 5 -1. - <_> - 10 0 1 5 3. - <_> - - <_> - 10 3 6 9 -1. - <_> - 12 6 2 3 9. - <_> - - <_> - 9 4 4 3 -1. - <_> - 9 5 4 1 3. - <_> - - <_> - 3 1 18 8 -1. - <_> - 3 5 18 4 2. - <_> - - <_> - 5 0 1 2 -1. - <_> - 5 1 1 1 2. - <_> - - <_> - 12 0 4 3 -1. - <_> - 11 1 4 1 3. - 1 - <_> - - <_> - 10 0 5 4 -1. - <_> - 10 0 5 2 2. - 1 - <_> - - <_> - 12 0 4 3 -1. - <_> - 11 1 4 1 3. - 1 - <_> - - <_> - 10 10 2 1 -1. - <_> - 10 10 1 1 2. - 1 - <_> - - <_> - 12 0 4 3 -1. - <_> - 11 1 4 1 3. - 1 - <_> - - <_> - 10 0 3 4 -1. - <_> - 11 1 1 4 3. - 1 - <_> - - <_> - 13 3 3 3 -1. - <_> - 13 4 3 1 3. - <_> - - <_> - 6 3 3 3 -1. - <_> - 6 4 3 1 3. - <_> - - <_> - 10 4 6 9 -1. - <_> - 12 7 2 3 9. - <_> - - <_> - 6 2 3 7 -1. - <_> - 7 2 1 7 3. - <_> - - <_> - 7 0 15 3 -1. - <_> - 12 1 5 1 9. - <_> - - <_> - 6 4 6 9 -1. - <_> - 8 7 2 3 9. - <_> - - <_> - 14 9 2 6 -1. - <_> - 14 9 1 6 2. - 1 - <_> - - <_> - 8 13 4 2 -1. - <_> - 10 13 2 2 2. - <_> - - <_> - 11 11 2 2 -1. - <_> - 12 11 1 1 2. - <_> - 11 12 1 1 2. - <_> - - <_> - 11 7 2 3 -1. - <_> - 11 7 1 3 2. - 1 - <_> - - <_> - 18 16 1 4 -1. - <_> - 18 18 1 2 2. - <_> - - <_> - 7 13 2 1 -1. - <_> - 8 13 1 1 2. - <_> - - <_> - 12 13 6 1 -1. - <_> - 14 13 2 1 3. - <_> - - <_> - 4 13 6 1 -1. - <_> - 6 13 2 1 3. - <_> - - <_> - 7 0 15 3 -1. - <_> - 12 1 5 1 9. - <_> - - <_> - 0 0 15 3 -1. - <_> - 5 1 5 1 9. - <_> - - <_> - 14 0 4 3 -1. - <_> - 13 1 4 1 3. - 1 - <_> - - <_> - 6 0 7 4 -1. - <_> - 6 1 7 2 2. - <_> - - <_> - 14 0 4 1 -1. - <_> - 15 0 2 1 2. - <_> - - <_> - 9 9 2 1 -1. - <_> - 10 9 1 1 2. - <_> - - <_> - 1 14 20 3 -1. - <_> - 1 15 20 1 3. - <_> - - <_> - 0 18 6 2 -1. - <_> - 2 18 2 2 3. - <_> - - <_> - 15 16 6 4 -1. - <_> - 17 16 2 4 3. - <_> - - <_> - 1 16 6 4 -1. - <_> - 3 16 2 4 3. - <_> - - <_> - 13 17 1 3 -1. - <_> - 13 18 1 1 3. - <_> - - <_> - 3 8 16 10 -1. - <_> - 3 13 16 5 2. - <_> - - <_> - 12 12 1 2 -1. - <_> - 12 13 1 1 2. - <_> - - <_> - 9 12 1 2 -1. - <_> - 9 13 1 1 2. - <_> - - <_> - 9 12 4 3 -1. - <_> - 9 13 4 1 3. - <_> - - <_> - 3 6 4 2 -1. - <_> - 3 6 2 1 2. - <_> - 5 7 2 1 2. - <_> - - <_> - 13 17 1 3 -1. - <_> - 13 18 1 1 3. - <_> - - <_> - 9 15 1 4 -1. - <_> - 9 17 1 2 2. - <_> - - <_> - 14 0 2 2 -1. - <_> - 14 0 1 2 2. - 1 - <_> - - <_> - 11 0 4 5 -1. - <_> - 12 1 2 5 2. - 1 - <_> - - <_> - 11 5 2 2 -1. - <_> - 11 5 2 1 2. - 1 - <_> - - <_> - 10 1 4 3 -1. - <_> - 11 2 2 3 2. - 1 - <_> - - <_> - 8 2 6 6 -1. - <_> - 11 2 3 3 2. - <_> - 8 5 3 3 2. - <_> - - <_> - 8 18 1 2 -1. - <_> - 8 19 1 1 2. - <_> - - <_> - 9 10 7 3 -1. - <_> - 9 11 7 1 3. - <_> - - <_> - 9 3 2 6 -1. - <_> - 10 3 1 6 2. - <_> - - <_> - 3 15 17 2 -1. - <_> - 3 16 17 1 2. - <_> - - <_> - 4 13 1 2 -1. - <_> - 4 14 1 1 2. - <_> - - <_> - 12 8 1 2 -1. - <_> - 12 9 1 1 2. - <_> - - <_> - 8 4 4 11 -1. - <_> - 10 4 2 11 2. - <_> - - <_> - 18 10 2 4 -1. - <_> - 18 10 1 4 2. - 1 - <_> - - <_> - 4 10 4 2 -1. - <_> - 4 10 4 1 2. - 1 - <_> - - <_> - 13 11 2 2 -1. - <_> - 14 11 1 1 2. - <_> - 13 12 1 1 2. - <_> - - <_> - 2 6 15 12 -1. - <_> - 7 10 5 4 9. - <_> - - <_> - 12 10 4 3 -1. - <_> - 12 11 4 1 3. - <_> - - <_> - 6 10 4 3 -1. - <_> - 6 11 4 1 3. - <_> - - <_> - 7 4 12 15 -1. - <_> - 11 4 4 15 3. - <_> - - <_> - 5 5 8 13 -1. - <_> - 7 5 4 13 2. - <_> - - <_> - 14 0 4 1 -1. - <_> - 15 0 2 1 2. - <_> - - <_> - 4 0 4 1 -1. - <_> - 5 0 2 1 2. - <_> - - <_> - 11 11 3 1 -1. - <_> - 12 11 1 1 3. - <_> - - <_> - 8 11 3 1 -1. - <_> - 9 11 1 1 3. - <_> - - <_> - 9 7 4 4 -1. - <_> - 11 7 2 2 2. - <_> - 9 9 2 2 2. - <_> - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 2 2. - <_> - - <_> - 10 4 2 2 -1. - <_> - 11 4 1 1 2. - <_> - 10 5 1 1 2. - <_> - - <_> - 8 4 3 1 -1. - <_> - 9 4 1 1 3. - <_> - - <_> - 8 2 6 6 -1. - <_> - 10 4 2 2 9. - <_> - - <_> - 5 2 12 2 -1. - <_> - 8 2 6 2 2. - <_> - - <_> - 0 0 6 6 -1. - <_> - 0 3 6 3 2. - <_> - - <_> - 5 1 12 8 -1. - <_> - 8 1 6 8 2. - <_> - - <_> - 0 0 3 5 -1. - <_> - 1 0 1 5 3. - <_> - - <_> - 8 6 6 4 -1. - <_> - 8 7 6 2 2. - <_> - - <_> - 5 0 11 4 -1. - <_> - 5 2 11 2 2. - <_> - - <_> - 10 4 4 6 -1. - <_> - 12 4 2 3 2. - <_> - 10 7 2 3 2. - <_> - - <_> - 9 4 4 6 -1. - <_> - 9 4 2 3 2. - <_> - 11 7 2 3 2. - <_> - - <_> - 11 4 3 3 -1. - <_> - 12 5 1 3 3. - 1 - <_> - - <_> - 11 4 3 3 -1. - <_> - 10 5 3 1 3. - 1 - <_> - - <_> - 9 0 4 6 -1. - <_> - 9 2 4 2 3. - <_> - - <_> - 3 7 2 1 -1. - <_> - 4 7 1 1 2. - <_> - - <_> - 12 5 2 2 -1. - <_> - 13 5 1 1 2. - <_> - 12 6 1 1 2. - <_> - - <_> - 2 4 4 4 -1. - <_> - 2 4 2 2 2. - <_> - 4 6 2 2 2. - <_> - - <_> - 13 4 3 5 -1. - <_> - 14 4 1 5 3. - <_> - - <_> - 9 5 4 6 -1. - <_> - 9 8 4 3 2. - <_> - - <_> - 9 7 4 3 -1. - <_> - 9 8 4 1 3. - <_> - - <_> - 1 4 8 8 -1. - <_> - 3 4 4 8 2. - <_> - - <_> - 2 5 18 14 -1. - <_> - 2 12 18 7 2. - <_> - - <_> - 3 9 15 10 -1. - <_> - 3 14 15 5 2. - <_> - - <_> - 17 1 2 1 -1. - <_> - 17 1 1 1 2. - 1 - <_> - - <_> - 0 14 20 1 -1. - <_> - 5 14 10 1 2. - <_> - - <_> - 17 1 2 1 -1. - <_> - 17 1 1 1 2. - 1 - <_> - - <_> - 8 5 2 2 -1. - <_> - 8 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 12 9 1 2 -1. - <_> - 12 10 1 1 2. - <_> - - <_> - 10 0 2 1 -1. - <_> - 11 0 1 1 2. - <_> - - <_> - 14 14 8 6 -1. - <_> - 14 14 4 6 2. - <_> - - <_> - 8 9 6 2 -1. - <_> - 8 9 3 1 2. - <_> - 11 10 3 1 2. - <_> - - <_> - 13 4 3 5 -1. - <_> - 14 4 1 5 3. - <_> - - <_> - 3 2 2 3 -1. - <_> - 4 2 1 3 2. - <_> - - <_> - 13 3 4 2 -1. - <_> - 13 3 2 2 2. - <_> - - <_> - 6 6 4 6 -1. - <_> - 7 6 2 6 2. - <_> - - <_> - 9 0 4 10 -1. - <_> - 10 0 2 10 2. - <_> - - <_> - 9 8 1 2 -1. - <_> - 9 9 1 1 2. - <_> - - <_> - 4 0 18 18 -1. - <_> - 4 0 9 18 2. - <_> - - <_> - 9 7 1 3 -1. - <_> - 9 8 1 1 3. - <_> - - <_> - 9 7 4 2 -1. - <_> - 9 8 4 1 2. - <_> - - <_> - 11 4 4 5 -1. - <_> - 12 5 2 5 2. - 1 - <_> - - <_> - 11 8 1 4 -1. - <_> - 11 10 1 2 2. - <_> - - <_> - 0 15 8 5 -1. - <_> - 4 15 4 5 2. - <_> - - <_> - 12 17 10 3 -1. - <_> - 12 17 5 3 2. - <_> - - <_> - 0 12 1 2 -1. - <_> - 0 13 1 1 2. - <_> - - <_> - 10 0 3 1 -1. - <_> - 11 0 1 1 3. - <_> - - <_> - 0 17 8 3 -1. - <_> - 4 17 4 3 2. - <_> - - <_> - 16 16 1 2 -1. - <_> - 16 17 1 1 2. - <_> - - <_> - 0 0 18 18 -1. - <_> - 9 0 9 18 2. - <_> - - <_> - 8 3 6 12 -1. - <_> - 8 3 3 12 2. - <_> - - <_> - 6 8 3 1 -1. - <_> - 7 8 1 1 3. - <_> - - <_> - 13 8 3 1 -1. - <_> - 14 8 1 1 3. - <_> - - <_> - 5 16 1 2 -1. - <_> - 5 17 1 1 2. - <_> - - <_> - 13 8 3 1 -1. - <_> - 14 8 1 1 3. - <_> - - <_> - 6 8 3 1 -1. - <_> - 7 8 1 1 3. - <_> - - <_> - 6 3 10 2 -1. - <_> - 11 3 5 1 2. - <_> - 6 4 5 1 2. - <_> - - <_> - 9 0 3 6 -1. - <_> - 10 0 1 6 3. - <_> - - <_> - 14 0 2 3 -1. - <_> - 13 1 2 1 3. - 1 - <_> - - <_> - 0 2 20 6 -1. - <_> - 0 2 10 3 2. - <_> - 10 5 10 3 2. - <_> - - <_> - 9 2 4 4 -1. - <_> - 9 3 4 2 2. - <_> - - <_> - 0 12 20 3 -1. - <_> - 0 13 20 1 3. - <_> - - <_> - 14 0 2 3 -1. - <_> - 13 1 2 1 3. - 1 - <_> - - <_> - 8 3 6 3 -1. - <_> - 10 4 2 1 9. - <_> - - <_> - 10 4 4 2 -1. - <_> - 12 4 2 1 2. - <_> - 10 5 2 1 2. - <_> - - <_> - 8 0 3 2 -1. - <_> - 9 1 1 2 3. - 1 - <_> - - <_> - 12 0 2 1 -1. - <_> - 12 0 1 1 2. - 1 - <_> - - <_> - 10 0 1 2 -1. - <_> - 10 0 1 1 2. - 1 - <_> - - <_> - 9 4 6 4 -1. - <_> - 12 4 3 2 2. - <_> - 9 6 3 2 2. - <_> - - <_> - 8 4 6 3 -1. - <_> - 8 5 6 1 3. - <_> - - <_> - 13 5 3 2 -1. - <_> - 13 6 3 1 2. - <_> - - <_> - 6 5 3 2 -1. - <_> - 6 6 3 1 2. - <_> - - <_> - 12 0 5 3 -1. - <_> - 11 1 5 1 3. - 1 - <_> - - <_> - 0 2 19 12 -1. - <_> - 0 5 19 6 2. - <_> - - <_> - 6 4 15 16 -1. - <_> - 6 12 15 8 2. - <_> - - <_> - 9 13 4 2 -1. - <_> - 9 14 4 1 2. - <_> - - <_> - 14 8 8 4 -1. - <_> - 14 8 8 2 2. - 1 - <_> - - <_> - 3 16 4 4 -1. - <_> - 3 17 4 2 2. - <_> - - <_> - 9 5 4 3 -1. - <_> - 9 6 4 1 3. - <_> - - <_> - 11 4 2 3 -1. - <_> - 10 5 2 1 3. - 1 - <_> - - <_> - 14 1 3 8 -1. - <_> - 15 2 1 8 3. - 1 - <_> - - <_> - 7 1 2 6 -1. - <_> - 7 1 1 3 2. - <_> - 8 4 1 3 2. - <_> - - <_> - 12 0 5 3 -1. - <_> - 11 1 5 1 3. - 1 - <_> - - <_> - 3 0 10 8 -1. - <_> - 3 0 5 4 2. - <_> - 8 4 5 4 2. - <_> - - <_> - 15 0 3 9 -1. - <_> - 16 1 1 9 3. - 1 - <_> - - <_> - 7 0 9 3 -1. - <_> - 6 1 9 1 3. - 1 - <_> - - <_> - 10 3 2 4 -1. - <_> - 10 5 2 2 2. - <_> - - <_> - 0 3 2 2 -1. - <_> - 0 3 1 1 2. - <_> - 1 4 1 1 2. - <_> - - <_> - 20 2 2 4 -1. - <_> - 21 2 1 2 2. - <_> - 20 4 1 2 2. - <_> - - <_> - 10 1 1 6 -1. - <_> - 10 4 1 3 2. - <_> - - <_> - 14 8 2 2 -1. - <_> - 15 8 1 1 2. - <_> - 14 9 1 1 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 10 2 1 2. - <_> - - <_> - 1 15 20 3 -1. - <_> - 6 15 10 3 2. - <_> - - <_> - 1 17 7 2 -1. - <_> - 1 18 7 1 2. - <_> - - <_> - 20 2 2 4 -1. - <_> - 21 2 1 2 2. - <_> - 20 4 1 2 2. - <_> - - <_> - 0 12 2 2 -1. - <_> - 0 12 1 1 2. - <_> - 1 13 1 1 2. - <_> - - <_> - 19 17 1 2 -1. - <_> - 19 18 1 1 2. - <_> - - <_> - 10 0 3 5 -1. - <_> - 11 1 1 5 3. - 1 - <_> - - <_> - 18 17 2 2 -1. - <_> - 18 18 2 1 2. - <_> - - <_> - 2 17 1 2 -1. - <_> - 2 18 1 1 2. - <_> - - <_> - 14 8 8 4 -1. - <_> - 14 8 8 2 2. - 1 - <_> - - <_> - 0 2 22 15 -1. - <_> - 11 2 11 15 2. - <_> - - <_> - 13 3 4 2 -1. - <_> - 13 3 2 2 2. - <_> - - <_> - 5 3 4 2 -1. - <_> - 7 3 2 2 2. - <_> - - <_> - 4 2 16 4 -1. - <_> - 8 2 8 4 2. - <_> - - <_> - 8 18 4 1 -1. - <_> - 10 18 2 1 2. - <_> - - <_> - 20 2 2 4 -1. - <_> - 21 2 1 2 2. - <_> - 20 4 1 2 2. - <_> - - <_> - 2 12 2 2 -1. - <_> - 2 12 1 1 2. - <_> - 3 13 1 1 2. - <_> - - <_> - 20 2 2 4 -1. - <_> - 21 2 1 2 2. - <_> - 20 4 1 2 2. - <_> - - <_> - 1 12 2 2 -1. - <_> - 1 12 1 1 2. - <_> - 2 13 1 1 2. - <_> - - <_> - 20 2 2 4 -1. - <_> - 21 2 1 2 2. - <_> - 20 4 1 2 2. - <_> - - <_> - 0 2 2 4 -1. - <_> - 0 2 1 2 2. - <_> - 1 4 1 2 2. - <_> - - <_> - 12 10 2 2 -1. - <_> - 13 10 1 1 2. - <_> - 12 11 1 1 2. - <_> - - <_> - 5 1 11 8 -1. - <_> - 5 3 11 4 2. - <_> - - <_> - 16 10 3 2 -1. - <_> - 17 11 1 2 3. - 1 - <_> - - <_> - 8 9 4 7 -1. - <_> - 9 10 2 7 2. - 1 - <_> - - <_> - 13 17 1 3 -1. - <_> - 13 18 1 1 3. - <_> - - <_> - 7 9 4 7 -1. - <_> - 7 9 2 7 2. - 1 - <_> - - <_> - 6 5 10 4 -1. - <_> - 11 5 5 2 2. - <_> - 6 7 5 2 2. - <_> - - <_> - 5 5 8 3 -1. - <_> - 5 6 8 1 3. - <_> - - <_> - 13 17 1 3 -1. - <_> - 13 18 1 1 3. - <_> - - <_> - 6 3 6 9 -1. - <_> - 8 6 2 3 9. - <_> - - <_> - 5 8 12 5 -1. - <_> - 9 8 4 5 3. - <_> - - <_> - 9 5 4 6 -1. - <_> - 10 5 2 6 2. - <_> - - <_> - 14 6 3 5 -1. - <_> - 15 7 1 5 3. - 1 - <_> - - <_> - 8 17 1 3 -1. - <_> - 8 18 1 1 3. - <_> - - <_> - 9 6 5 3 -1. - <_> - 9 7 5 1 3. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 16 10 3 2 -1. - <_> - 17 11 1 2 3. - 1 - <_> - - <_> - 6 10 2 3 -1. - <_> - 5 11 2 1 3. - 1 - <_> - - <_> - 17 14 3 4 -1. - <_> - 17 16 3 2 2. - <_> - - <_> - 5 10 7 4 -1. - <_> - 5 11 7 2 2. - <_> - - <_> - 13 7 1 4 -1. - <_> - 12 8 1 2 2. - 1 - <_> - - <_> - 9 11 4 1 -1. - <_> - 10 11 2 1 2. - <_> - - <_> - 12 8 3 5 -1. - <_> - 13 9 1 5 3. - 1 - <_> - - <_> - 8 7 6 4 -1. - <_> - 8 7 3 2 2. - <_> - 11 9 3 2 2. - <_> - - <_> - 12 10 2 2 -1. - <_> - 13 10 1 1 2. - <_> - 12 11 1 1 2. - <_> - - <_> - 8 10 2 2 -1. - <_> - 8 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 12 10 2 2 -1. - <_> - 13 10 1 1 2. - <_> - 12 11 1 1 2. - <_> - - <_> - 4 0 2 3 -1. - <_> - 4 1 2 1 3. - <_> - - <_> - 12 8 3 5 -1. - <_> - 13 9 1 5 3. - 1 - <_> - - <_> - 10 8 5 3 -1. - <_> - 9 9 5 1 3. - 1 - <_> - - <_> - 12 8 3 8 -1. - <_> - 13 8 1 8 3. - <_> - - <_> - 7 8 3 8 -1. - <_> - 8 8 1 8 3. - <_> - - <_> - 8 7 6 6 -1. - <_> - 8 9 6 2 3. - <_> - - <_> - 4 2 1 18 -1. - <_> - 4 11 1 9 2. - <_> - - <_> - 15 1 2 6 -1. - <_> - 15 3 2 2 3. - <_> - - <_> - 3 9 3 8 -1. - <_> - 3 13 3 4 2. - <_> - - <_> - 20 11 1 2 -1. - <_> - 20 12 1 1 2. - <_> - - <_> - 1 11 1 2 -1. - <_> - 1 12 1 1 2. - <_> - - <_> - 15 1 2 6 -1. - <_> - 15 3 2 2 3. - <_> - - <_> - 2 1 18 4 -1. - <_> - 2 2 18 2 2. - <_> - - <_> - 9 0 6 6 -1. - <_> - 9 2 6 2 3. - <_> - - <_> - 3 2 7 4 -1. - <_> - 3 3 7 2 2. - <_> - - <_> - 13 0 2 3 -1. - <_> - 13 0 1 3 2. - 1 - <_> - - <_> - 9 0 3 2 -1. - <_> - 9 0 3 1 2. - 1 - <_> - - <_> - 10 18 12 2 -1. - <_> - 14 18 4 2 3. - <_> - - <_> - 0 18 12 2 -1. - <_> - 4 18 4 2 3. - <_> - - <_> - 5 9 16 8 -1. - <_> - 9 9 8 8 2. - <_> - - <_> - 1 9 16 8 -1. - <_> - 5 9 8 8 2. - <_> - - <_> - 20 16 1 2 -1. - <_> - 20 17 1 1 2. - <_> - - <_> - 11 0 6 4 -1. - <_> - 11 0 6 2 2. - 1 - <_> - - <_> - 9 2 4 6 -1. - <_> - 9 4 4 2 3. - <_> - - <_> - 12 4 4 5 -1. - <_> - 13 4 2 5 2. - <_> - - <_> - 6 4 4 5 -1. - <_> - 7 4 2 5 2. - <_> - - <_> - 8 5 6 4 -1. - <_> - 8 7 6 2 2. - <_> - - <_> - 3 15 1 4 -1. - <_> - 3 16 1 2 2. - <_> - - <_> - 10 5 2 6 -1. - <_> - 10 8 2 3 2. - <_> - - <_> - 6 16 6 4 -1. - <_> - 6 17 6 2 2. - <_> - - <_> - 10 5 2 6 -1. - <_> - 10 8 2 3 2. - <_> - - <_> - 4 2 9 18 -1. - <_> - 7 8 3 6 9. - <_> - - <_> - 8 0 6 4 -1. - <_> - 8 2 6 2 2. - <_> - - <_> - 9 0 4 6 -1. - <_> - 9 2 4 2 3. - <_> - - <_> - 16 0 4 2 -1. - <_> - 18 0 2 1 2. - <_> - 16 1 2 1 2. - <_> - - <_> - 7 6 3 3 -1. - <_> - 8 6 1 3 3. - <_> - - <_> - 12 9 1 2 -1. - <_> - 12 10 1 1 2. - <_> - - <_> - 8 0 4 12 -1. - <_> - 8 0 2 6 2. - <_> - 10 6 2 6 2. - <_> - - <_> - 12 4 10 14 -1. - <_> - 17 4 5 7 2. - <_> - 12 11 5 7 2. - <_> - - <_> - 9 9 1 2 -1. - <_> - 9 10 1 1 2. - <_> - - <_> - 10 9 2 2 -1. - <_> - 10 10 2 1 2. - <_> - - <_> - 10 7 2 6 -1. - <_> - 10 10 2 3 2. - <_> - - <_> - 12 9 7 8 -1. - <_> - 12 13 7 4 2. - <_> - - <_> - 6 4 3 5 -1. - <_> - 7 4 1 5 3. - <_> - - <_> - 5 3 12 1 -1. - <_> - 5 3 6 1 2. - <_> - - <_> - 4 3 8 2 -1. - <_> - 8 3 4 2 2. - <_> - - <_> - 11 0 2 6 -1. - <_> - 11 0 1 6 2. - 1 - <_> - - <_> - 10 4 2 6 -1. - <_> - 10 6 2 2 3. - <_> - - <_> - 16 1 1 4 -1. - <_> - 16 3 1 2 2. - <_> - - <_> - 5 3 12 2 -1. - <_> - 5 3 6 1 2. - <_> - 11 4 6 1 2. - <_> - - <_> - 7 2 13 10 -1. - <_> - 7 7 13 5 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 9 10 1 1 2. - <_> - 10 11 1 1 2. - <_> - - <_> - 20 1 2 8 -1. - <_> - 21 1 1 4 2. - <_> - 20 5 1 4 2. - <_> - - <_> - 9 11 2 2 -1. - <_> - 9 11 1 1 2. - <_> - 10 12 1 1 2. - <_> - - <_> - 12 9 1 3 -1. - <_> - 11 10 1 1 3. - 1 - <_> - - <_> - 2 6 4 2 -1. - <_> - 2 6 2 1 2. - <_> - 4 7 2 1 2. - <_> - - <_> - 16 6 4 2 -1. - <_> - 18 6 2 1 2. - <_> - 16 7 2 1 2. - <_> - - <_> - 9 6 1 3 -1. - <_> - 9 7 1 1 3. - <_> - - <_> - 11 7 1 6 -1. - <_> - 11 9 1 2 3. - <_> - - <_> - 9 7 1 2 -1. - <_> - 9 8 1 1 2. - <_> - - <_> - 12 6 2 4 -1. - <_> - 11 7 2 2 2. - 1 - <_> - - <_> - 7 5 2 2 -1. - <_> - 8 5 1 2 2. - <_> - - <_> - 12 6 2 4 -1. - <_> - 11 7 2 2 2. - 1 - <_> - - <_> - 3 6 2 2 -1. - <_> - 3 6 1 1 2. - <_> - 4 7 1 1 2. - <_> - - <_> - 15 7 7 6 -1. - <_> - 13 9 7 2 3. - 1 - <_> - - <_> - 1 16 2 2 -1. - <_> - 1 16 1 1 2. - <_> - 2 17 1 1 2. - <_> - - <_> - 19 16 2 2 -1. - <_> - 20 16 1 1 2. - <_> - 19 17 1 1 2. - <_> - - <_> - 1 16 2 2 -1. - <_> - 1 16 1 1 2. - <_> - 2 17 1 1 2. - <_> - - <_> - 15 2 2 1 -1. - <_> - 15 2 1 1 2. - <_> - - <_> - 5 2 2 1 -1. - <_> - 6 2 1 1 2. - <_> - - <_> - 21 7 1 12 -1. - <_> - 21 7 1 6 2. - 1 - <_> - - <_> - 7 7 6 7 -1. - <_> - 9 9 2 7 3. - 1 - <_> - - <_> - 16 8 6 6 -1. - <_> - 14 10 6 2 3. - 1 - <_> - - <_> - 3 16 16 1 -1. - <_> - 11 16 8 1 2. - <_> - - <_> - 8 7 6 1 -1. - <_> - 10 7 2 1 3. - <_> - - <_> - 7 4 8 5 -1. - <_> - 9 4 4 5 2. - <_> - - <_> - 9 9 6 3 -1. - <_> - 9 9 3 3 2. - <_> - - <_> - 10 6 4 2 -1. - <_> - 11 7 2 2 2. - 1 - <_> - - <_> - 14 6 3 5 -1. - <_> - 15 7 1 5 3. - 1 - <_> - - <_> - 7 9 6 3 -1. - <_> - 10 9 3 3 2. - <_> - - <_> - 16 8 6 6 -1. - <_> - 14 10 6 2 3. - 1 - <_> - - <_> - 4 12 12 6 -1. - <_> - 4 12 6 3 2. - <_> - 10 15 6 3 2. - <_> - - <_> - 13 17 3 3 -1. - <_> - 13 18 3 1 3. - <_> - - <_> - 6 17 3 3 -1. - <_> - 6 18 3 1 3. - <_> - - <_> - 15 17 1 3 -1. - <_> - 15 18 1 1 3. - <_> - - <_> - 6 17 1 3 -1. - <_> - 6 18 1 1 3. - <_> - - <_> - 10 0 3 4 -1. - <_> - 10 1 3 2 2. - <_> - - <_> - 9 0 4 4 -1. - <_> - 9 1 4 2 2. - <_> - - <_> - 19 16 2 2 -1. - <_> - 20 16 1 1 2. - <_> - 19 17 1 1 2. - <_> - - <_> - 4 8 4 10 -1. - <_> - 4 13 4 5 2. - <_> - - <_> - 19 16 1 2 -1. - <_> - 19 17 1 1 2. - <_> - - <_> - 5 10 3 6 -1. - <_> - 5 13 3 3 2. - <_> - - <_> - 8 0 12 2 -1. - <_> - 11 0 6 2 2. - <_> - - <_> - 6 0 10 2 -1. - <_> - 11 0 5 2 2. - <_> - - <_> - 19 16 2 2 -1. - <_> - 20 16 1 1 2. - <_> - 19 17 1 1 2. - <_> - - <_> - 1 16 2 2 -1. - <_> - 1 16 1 1 2. - <_> - 2 17 1 1 2. - <_> - - <_> - 12 5 4 4 -1. - <_> - 11 6 4 2 2. - 1 - <_> - - <_> - 1 16 1 2 -1. - <_> - 1 17 1 1 2. - <_> - - <_> - 5 0 16 10 -1. - <_> - 5 5 16 5 2. - <_> - - <_> - 10 5 4 4 -1. - <_> - 11 6 2 4 2. - 1 - <_> - - <_> - 10 9 2 2 -1. - <_> - 11 9 1 1 2. - <_> - 10 10 1 1 2. - <_> - - <_> - 3 0 10 2 -1. - <_> - 3 0 5 1 2. - <_> - 8 1 5 1 2. - <_> - - <_> - 21 0 1 2 -1. - <_> - 21 1 1 1 2. - <_> - - <_> - 2 0 2 2 -1. - <_> - 2 1 2 1 2. - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 9 7 4 3 -1. - <_> - 9 8 4 1 3. - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 18 0 1 2 -1. - <_> - 18 1 1 1 2. - <_> - - <_> - 10 1 7 3 -1. - <_> - 9 2 7 1 3. - 1 - <_> - - <_> - 8 5 6 6 -1. - <_> - 8 8 6 3 2. - <_> - - <_> - 7 8 3 7 -1. - <_> - 8 9 1 7 3. - 1 - <_> - - <_> - 19 9 3 2 -1. - <_> - 19 10 3 1 2. - <_> - - <_> - 9 8 1 2 -1. - <_> - 9 9 1 1 2. - <_> - - <_> - 11 6 2 6 -1. - <_> - 11 6 2 3 2. - 1 - <_> - - <_> - 11 0 6 3 -1. - <_> - 10 1 6 1 3. - 1 - <_> - - <_> - 18 0 1 2 -1. - <_> - 18 1 1 1 2. - <_> - - <_> - 10 0 2 9 -1. - <_> - 10 3 2 3 3. - <_> - - <_> - 18 0 1 2 -1. - <_> - 18 1 1 1 2. - <_> - - <_> - 0 9 3 2 -1. - <_> - 0 10 3 1 2. - <_> - - <_> - 10 1 2 3 -1. - <_> - 10 1 1 3 2. - <_> - - <_> - 8 8 2 4 -1. - <_> - 8 8 1 2 2. - <_> - 9 10 1 2 2. - <_> - - <_> - 13 6 3 4 -1. - <_> - 12 7 3 2 2. - 1 - <_> - - <_> - 9 7 4 1 -1. - <_> - 10 8 2 1 2. - 1 - <_> - - <_> - 8 11 11 3 -1. - <_> - 8 12 11 1 3. - <_> - - <_> - 5 4 12 3 -1. - <_> - 9 5 4 1 9. - <_> - - <_> - 11 6 2 6 -1. - <_> - 11 6 2 3 2. - 1 - <_> - - <_> - 9 6 4 4 -1. - <_> - 9 6 2 2 2. - <_> - 11 8 2 2 2. - <_> - - <_> - 11 4 3 11 -1. - <_> - 12 5 1 11 3. - 1 - <_> - - <_> - 9 4 4 4 -1. - <_> - 10 5 2 4 2. - 1 - <_> - - <_> - 11 4 3 11 -1. - <_> - 12 5 1 11 3. - 1 - <_> - - <_> - 9 9 4 2 -1. - <_> - 9 9 2 1 2. - <_> - 11 10 2 1 2. - <_> - - <_> - 11 5 10 3 -1. - <_> - 11 5 5 3 2. - 1 - <_> - - <_> - 3 9 16 11 -1. - <_> - 7 9 8 11 2. - <_> - - <_> - 18 14 4 3 -1. - <_> - 18 15 4 1 3. - <_> - - <_> - 0 7 14 5 -1. - <_> - 7 7 7 5 2. - <_> - - <_> - 10 6 6 10 -1. - <_> - 13 6 3 5 2. - <_> - 10 11 3 5 2. - <_> - - <_> - 5 6 12 8 -1. - <_> - 5 6 6 4 2. - <_> - 11 10 6 4 2. - <_> - - <_> - 12 10 2 2 -1. - <_> - 13 10 1 1 2. - <_> - 12 11 1 1 2. - <_> - - <_> - 3 0 1 2 -1. - <_> - 3 1 1 1 2. - <_> - - <_> - 18 17 4 3 -1. - <_> - 19 17 2 3 2. - <_> - - <_> - 0 17 4 3 -1. - <_> - 1 17 2 3 2. - <_> - - <_> - 18 14 4 3 -1. - <_> - 18 15 4 1 3. - <_> - - <_> - 0 0 14 6 -1. - <_> - 0 0 7 3 2. - <_> - 7 3 7 3 2. - <_> - - <_> - 14 0 8 11 -1. - <_> - 14 0 4 11 2. - 1 - <_> - - <_> - 8 0 11 8 -1. - <_> - 8 0 11 4 2. - 1 - <_> - - <_> - 18 14 4 3 -1. - <_> - 18 15 4 1 3. - <_> - - <_> - 0 14 4 3 -1. - <_> - 0 15 4 1 3. - <_> - - <_> - 11 4 3 11 -1. - <_> - 12 5 1 11 3. - 1 - <_> - - <_> - 11 4 11 3 -1. - <_> - 10 5 11 1 3. - 1 - <_> - - <_> - 8 3 6 6 -1. - <_> - 11 3 3 3 2. - <_> - 8 6 3 3 2. - <_> - - <_> - 9 6 4 3 -1. - <_> - 10 7 2 3 2. - 1 - <_> - - <_> - 11 11 2 2 -1. - <_> - 12 11 1 1 2. - <_> - 11 12 1 1 2. - <_> - - <_> - 9 7 2 9 -1. - <_> - 9 7 1 9 2. - 1 - <_> - - <_> - 19 12 2 1 -1. - <_> - 19 12 1 1 2. - 1 - <_> - - <_> - 3 12 1 2 -1. - <_> - 3 12 1 1 2. - 1 - <_> - - <_> - 9 0 10 4 -1. - <_> - 9 2 10 2 2. - <_> - - <_> - 9 0 4 2 -1. - <_> - 9 1 4 1 2. - <_> - - <_> - 12 2 9 9 -1. - <_> - 12 5 9 3 3. - <_> - - <_> - 4 3 6 17 -1. - <_> - 6 3 2 17 3. - <_> - - <_> - 8 4 13 16 -1. - <_> - 8 12 13 8 2. - <_> - - <_> - 1 2 9 9 -1. - <_> - 1 5 9 3 3. - <_> - - <_> - 12 10 3 2 -1. - <_> - 13 11 1 2 3. - 1 - <_> - - <_> - 5 6 3 14 -1. - <_> - 6 6 1 14 3. - <_> - - <_> - 14 2 2 4 -1. - <_> - 15 2 1 2 2. - <_> - 14 4 1 2 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 2 1 2. - 1 - <_> - - <_> - 10 0 4 3 -1. - <_> - 11 0 2 3 2. - <_> - - <_> - 8 0 4 3 -1. - <_> - 9 0 2 3 2. - <_> - - <_> - 8 0 6 6 -1. - <_> - 8 2 6 2 3. - <_> - - <_> - 9 3 3 9 -1. - <_> - 10 6 1 3 9. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 11 7 1 4 -1. - <_> - 11 9 1 2 2. - <_> - - <_> - 10 7 1 4 -1. - <_> - 10 9 1 2 2. - <_> - - <_> - 9 7 4 3 -1. - <_> - 9 8 4 1 3. - <_> - - <_> - 6 18 2 2 -1. - <_> - 6 18 1 1 2. - <_> - 7 19 1 1 2. - <_> - - <_> - 10 4 4 12 -1. - <_> - 10 4 2 12 2. - <_> - - <_> - 8 5 1 3 -1. - <_> - 8 6 1 1 3. - <_> - - <_> - 9 10 4 6 -1. - <_> - 9 10 2 6 2. - <_> - - <_> - 9 3 4 2 -1. - <_> - 9 3 4 1 2. - 1 - <_> - - <_> - 11 6 1 2 -1. - <_> - 11 7 1 1 2. - <_> - - <_> - 9 1 3 2 -1. - <_> - 9 1 3 1 2. - 1 - <_> - - <_> - 12 0 2 1 -1. - <_> - 12 0 1 1 2. - 1 - <_> - - <_> - 0 14 10 6 -1. - <_> - 5 14 5 6 2. - <_> - - <_> - 12 17 10 2 -1. - <_> - 12 17 5 2 2. - <_> - - <_> - 0 17 10 2 -1. - <_> - 5 17 5 2 2. - <_> - - <_> - 15 16 1 2 -1. - <_> - 15 17 1 1 2. - <_> - - <_> - 9 2 5 3 -1. - <_> - 8 3 5 1 3. - 1 - <_> - - <_> - 10 7 12 12 -1. - <_> - 16 7 6 6 2. - <_> - 10 13 6 6 2. - <_> - - <_> - 3 0 12 14 -1. - <_> - 3 7 12 7 2. - <_> - - <_> - 11 5 2 3 -1. - <_> - 11 6 2 1 3. - <_> - - <_> - 1 15 18 4 -1. - <_> - 1 17 18 2 2. - <_> - - <_> - 14 10 1 3 -1. - <_> - 14 11 1 1 3. - <_> - - <_> - 6 16 1 2 -1. - <_> - 6 17 1 1 2. - <_> - - <_> - 10 3 2 6 -1. - <_> - 11 3 1 3 2. - <_> - 10 6 1 3 2. - <_> - - <_> - 7 10 1 3 -1. - <_> - 7 11 1 1 3. - <_> - - <_> - 11 11 6 3 -1. - <_> - 11 12 6 1 3. - <_> - - <_> - 5 11 6 3 -1. - <_> - 5 12 6 1 3. - <_> - - <_> - 5 7 12 6 -1. - <_> - 11 7 6 3 2. - <_> - 5 10 6 3 2. - <_> - - <_> - 3 11 5 6 -1. - <_> - 3 13 5 2 3. - <_> - - <_> - 11 12 8 8 -1. - <_> - 15 12 4 4 2. - <_> - 11 16 4 4 2. - <_> - - <_> - 3 12 8 8 -1. - <_> - 3 12 4 4 2. - <_> - 7 16 4 4 2. - <_> - - <_> - 16 12 2 1 -1. - <_> - 16 12 1 1 2. - <_> - - <_> - 5 14 4 4 -1. - <_> - 5 14 2 2 2. - <_> - 7 16 2 2 2. - <_> - - <_> - 9 3 2 1 -1. - <_> - 9 3 1 1 2. - 1 - <_> - - <_> - 9 5 4 3 -1. - <_> - 9 6 4 1 3. - <_> - - <_> - 3 0 2 2 -1. - <_> - 4 0 1 2 2. - <_> - - <_> - 17 0 2 2 -1. - <_> - 17 0 1 2 2. - <_> - - <_> - 3 12 7 3 -1. - <_> - 3 13 7 1 3. - <_> - - <_> - 17 0 2 2 -1. - <_> - 17 0 1 2 2. - <_> - - <_> - 3 0 2 2 -1. - <_> - 4 0 1 2 2. - <_> - - <_> - 13 5 3 3 -1. - <_> - 14 5 1 3 3. - <_> - - <_> - 6 7 3 1 -1. - <_> - 7 7 1 1 3. - <_> - - <_> - 9 1 4 8 -1. - <_> - 11 1 2 4 2. - <_> - 9 5 2 4 2. - <_> - - <_> - 8 1 3 3 -1. - <_> - 9 2 1 1 9. - <_> - - <_> - 11 4 2 6 -1. - <_> - 12 4 1 3 2. - <_> - 11 7 1 3 2. - <_> - - <_> - 9 3 4 6 -1. - <_> - 9 3 2 3 2. - <_> - 11 6 2 3 2. - <_> - - <_> - 13 7 3 2 -1. - <_> - 14 7 1 2 3. - <_> - - <_> - 6 7 3 2 -1. - <_> - 7 7 1 2 3. - <_> - - <_> - 14 18 5 2 -1. - <_> - 14 19 5 1 2. - <_> - - <_> - 4 18 14 2 -1. - <_> - 4 18 7 1 2. - <_> - 11 19 7 1 2. - <_> - - <_> - 14 18 2 2 -1. - <_> - 14 19 2 1 2. - <_> - - <_> - 8 7 3 3 -1. - <_> - 9 8 1 1 9. - <_> - - <_> - 14 18 2 2 -1. - <_> - 14 19 2 1 2. - <_> - - <_> - 9 0 3 2 -1. - <_> - 10 1 1 2 3. - 1 - <_> - - <_> - 14 18 2 2 -1. - <_> - 14 19 2 1 2. - <_> - - <_> - 11 5 4 1 -1. - <_> - 11 5 2 1 2. - 1 - <_> - - <_> - 9 4 4 3 -1. - <_> - 9 5 4 1 3. - <_> - - <_> - 4 17 4 3 -1. - <_> - 4 18 4 1 3. - <_> - - <_> - 11 11 2 2 -1. - <_> - 12 11 1 1 2. - <_> - 11 12 1 1 2. - <_> - - <_> - 8 6 6 4 -1. - <_> - 8 6 3 2 2. - <_> - 11 8 3 2 2. - <_> - - <_> - 11 5 3 3 -1. - <_> - 12 6 1 3 3. - 1 - <_> - - <_> - 11 5 3 3 -1. - <_> - 10 6 3 1 3. - 1 - <_> - - <_> - 11 6 1 2 -1. - <_> - 11 7 1 1 2. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 12 6 1 3 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 3 6 16 2 -1. - <_> - 3 6 8 1 2. - <_> - 11 7 8 1 2. - <_> - - <_> - 5 3 12 6 -1. - <_> - 11 3 6 3 2. - <_> - 5 6 6 3 2. - <_> - - <_> - 8 2 6 9 -1. - <_> - 8 5 6 3 3. - <_> - - <_> - 15 17 2 3 -1. - <_> - 15 18 2 1 3. - <_> - - <_> - 7 7 2 2 -1. - <_> - 7 7 1 1 2. - <_> - 8 8 1 1 2. - <_> - - <_> - 15 17 2 3 -1. - <_> - 15 18 2 1 3. - <_> - - <_> - 9 11 2 2 -1. - <_> - 9 11 1 1 2. - <_> - 10 12 1 1 2. - <_> - - <_> - 20 6 2 4 -1. - <_> - 21 6 1 2 2. - <_> - 20 8 1 2 2. - <_> - - <_> - 9 11 2 2 -1. - <_> - 9 11 1 1 2. - <_> - 10 12 1 1 2. - <_> - - <_> - 20 6 2 4 -1. - <_> - 21 6 1 2 2. - <_> - 20 8 1 2 2. - <_> - - <_> - 8 2 7 3 -1. - <_> - 7 3 7 1 3. - 1 - <_> - - <_> - 14 5 3 4 -1. - <_> - 15 5 1 4 3. - <_> - - <_> - 10 6 1 8 -1. - <_> - 10 10 1 4 2. - <_> - - <_> - 12 7 1 3 -1. - <_> - 12 8 1 1 3. - <_> - - <_> - 9 7 1 3 -1. - <_> - 9 8 1 1 3. - <_> - - <_> - 15 17 2 3 -1. - <_> - 15 18 2 1 3. - <_> - - <_> - 5 17 2 3 -1. - <_> - 5 18 2 1 3. - <_> - - <_> - 12 6 1 2 -1. - <_> - 12 6 1 1 2. - 1 - <_> - - <_> - 9 0 2 10 -1. - <_> - 10 0 1 10 2. - <_> - - <_> - 11 5 4 8 -1. - <_> - 11 5 2 8 2. - <_> - - <_> - 9 1 2 1 -1. - <_> - 10 1 1 1 2. - <_> - - <_> - 12 1 2 2 -1. - <_> - 13 1 1 1 2. - <_> - 12 2 1 1 2. - <_> - - <_> - 0 6 2 4 -1. - <_> - 0 6 1 2 2. - <_> - 1 8 1 2 2. - <_> - - <_> - 16 17 6 1 -1. - <_> - 18 17 2 1 3. - <_> - - <_> - 0 17 6 1 -1. - <_> - 2 17 2 1 3. - <_> - - <_> - 11 18 1 2 -1. - <_> - 11 19 1 1 2. - <_> - - <_> - 10 18 1 2 -1. - <_> - 10 19 1 1 2. - <_> - - <_> - 11 14 3 1 -1. - <_> - 12 14 1 1 3. - <_> - - <_> - 8 14 3 1 -1. - <_> - 9 14 1 1 3. - <_> - - <_> - 12 9 1 2 -1. - <_> - 12 10 1 1 2. - <_> - - <_> - 10 7 3 10 -1. - <_> - 10 7 3 5 2. - 1 - <_> - - <_> - 10 7 9 12 -1. - <_> - 10 13 9 6 2. - <_> - - <_> - 8 9 6 3 -1. - <_> - 7 10 6 1 3. - 1 - <_> - - <_> - 9 0 4 5 -1. - <_> - 10 0 2 5 2. - <_> - - <_> - 1 3 2 2 -1. - <_> - 1 4 2 1 2. - <_> - - <_> - 9 1 4 6 -1. - <_> - 9 3 4 2 3. - <_> - - <_> - 7 0 4 2 -1. - <_> - 7 0 4 1 2. - 1 - <_> - - <_> - 12 0 1 3 -1. - <_> - 12 1 1 1 3. - <_> - - <_> - 1 3 1 2 -1. - <_> - 1 4 1 1 2. - <_> - - <_> - 13 3 3 1 -1. - <_> - 14 3 1 1 3. - <_> - - <_> - 10 0 6 2 -1. - <_> - 10 0 6 1 2. - 1 - <_> - - <_> - 11 6 1 2 -1. - <_> - 11 7 1 1 2. - <_> - - <_> - 10 6 1 2 -1. - <_> - 10 7 1 1 2. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 8 14 1 2 -1. - <_> - 8 15 1 1 2. - <_> - - <_> - 13 6 3 4 -1. - <_> - 13 6 3 2 2. - 1 - <_> - - <_> - 1 16 20 4 -1. - <_> - 11 16 10 4 2. - <_> - - <_> - 11 5 4 8 -1. - <_> - 11 5 2 8 2. - <_> - - <_> - 3 8 10 1 -1. - <_> - 8 8 5 1 2. - <_> - - <_> - 12 5 3 5 -1. - <_> - 13 5 1 5 3. - <_> - - <_> - 8 6 4 2 -1. - <_> - 9 7 2 2 2. - 1 - <_> - - <_> - 11 10 2 2 -1. - <_> - 12 10 1 1 2. - <_> - 11 11 1 1 2. - <_> - - <_> - 4 8 14 2 -1. - <_> - 4 8 7 1 2. - <_> - 11 9 7 1 2. - <_> - - <_> - 11 5 1 6 -1. - <_> - 11 8 1 3 2. - <_> - - <_> - 10 1 2 1 -1. - <_> - 11 1 1 1 2. - <_> - - <_> - 15 7 7 6 -1. - <_> - 13 9 7 2 3. - 1 - <_> - - <_> - 7 7 6 7 -1. - <_> - 9 9 2 7 3. - 1 - <_> - - <_> - 10 0 2 2 -1. - <_> - 10 0 1 2 2. - <_> - - <_> - 8 0 3 2 -1. - <_> - 9 1 1 2 3. - 1 - <_> - - <_> - 13 3 3 1 -1. - <_> - 14 3 1 1 3. - <_> - - <_> - 6 3 3 1 -1. - <_> - 7 3 1 1 3. - <_> - - <_> - 11 18 2 2 -1. - <_> - 11 18 1 2 2. - <_> - - <_> - 8 3 1 3 -1. - <_> - 8 4 1 1 3. - <_> - - <_> - 8 11 8 5 -1. - <_> - 10 11 4 5 2. - <_> - - <_> - 8 7 6 2 -1. - <_> - 10 7 2 2 3. - <_> - - <_> - 11 8 1 4 -1. - <_> - 11 10 1 2 2. - <_> - - <_> - 6 2 6 4 -1. - <_> - 6 2 3 2 2. - <_> - 9 4 3 2 2. - <_> - - <_> - 10 1 2 4 -1. - <_> - 10 2 2 2 2. - <_> - - <_> - 2 8 6 5 -1. - <_> - 4 8 2 5 3. - <_> - - <_> - 10 6 2 3 -1. - <_> - 10 6 1 3 2. - <_> - - <_> - 6 14 1 3 -1. - <_> - 6 15 1 1 3. - <_> - - <_> - 11 13 2 2 -1. - <_> - 12 13 1 1 2. - <_> - 11 14 1 1 2. - <_> - - <_> - 6 10 9 1 -1. - <_> - 9 13 3 1 3. - 1 - <_> - - <_> - 15 10 4 3 -1. - <_> - 14 11 4 1 3. - 1 - <_> - - <_> - 7 10 3 4 -1. - <_> - 8 11 1 4 3. - 1 - <_> - - <_> - 13 3 3 3 -1. - <_> - 13 4 3 1 3. - <_> - - <_> - 6 3 3 3 -1. - <_> - 6 4 3 1 3. - <_> - - <_> - 19 12 2 3 -1. - <_> - 18 13 2 1 3. - 1 - <_> - - <_> - 3 18 3 2 -1. - <_> - 3 19 3 1 2. - <_> - - <_> - 15 18 4 2 -1. - <_> - 15 19 4 1 2. - <_> - - <_> - 3 18 4 2 -1. - <_> - 3 19 4 1 2. - <_> - - <_> - 10 7 6 2 -1. - <_> - 12 7 2 2 3. - <_> - - <_> - 6 7 6 2 -1. - <_> - 8 7 2 2 3. - <_> - - <_> - 14 6 3 4 -1. - <_> - 14 6 3 2 2. - 1 - <_> - - <_> - 9 6 3 2 -1. - <_> - 10 7 1 2 3. - 1 - <_> - - <_> - 14 5 3 4 -1. - <_> - 15 5 1 4 3. - <_> - - <_> - 9 16 1 2 -1. - <_> - 9 17 1 1 2. - <_> - - <_> - 9 7 6 3 -1. - <_> - 9 8 6 1 3. - <_> - - <_> - 10 8 1 2 -1. - <_> - 10 9 1 1 2. - <_> - - <_> - 10 0 2 1 -1. - <_> - 10 0 1 1 2. - <_> - - <_> - 8 8 3 1 -1. - <_> - 9 8 1 1 3. - <_> - - <_> - 14 0 6 10 -1. - <_> - 14 0 6 5 2. - 1 - <_> - - <_> - 8 0 10 6 -1. - <_> - 8 0 5 6 2. - 1 - <_> - - <_> - 12 0 2 6 -1. - <_> - 12 0 1 6 2. - <_> - - <_> - 5 0 3 1 -1. - <_> - 6 0 1 1 3. - <_> - - <_> - 19 12 2 3 -1. - <_> - 18 13 2 1 3. - 1 - <_> - - <_> - 9 13 2 2 -1. - <_> - 9 13 1 1 2. - <_> - 10 14 1 1 2. - <_> - - <_> - 15 3 2 3 -1. - <_> - 15 4 2 1 3. - <_> - - <_> - 5 4 12 2 -1. - <_> - 5 4 6 1 2. - <_> - 11 5 6 1 2. - <_> - - <_> - 19 12 2 3 -1. - <_> - 18 13 2 1 3. - 1 - <_> - - <_> - 3 12 3 2 -1. - <_> - 4 13 1 2 3. - 1 - <_> - - <_> - 3 0 16 3 -1. - <_> - 3 0 8 3 2. - <_> - - <_> - 7 2 8 9 -1. - <_> - 11 2 4 9 2. - <_> - - <_> - 16 13 4 2 -1. - <_> - 18 13 2 1 2. - <_> - 16 14 2 1 2. - <_> - - <_> - 7 8 2 12 -1. - <_> - 7 14 2 6 2. - <_> - - <_> - 13 4 5 16 -1. - <_> - 13 12 5 8 2. - <_> - - <_> - 7 3 2 4 -1. - <_> - 7 5 2 2 2. - <_> - - <_> - 5 14 12 5 -1. - <_> - 5 14 6 5 2. - <_> - - <_> - 6 10 6 4 -1. - <_> - 9 10 3 4 2. - <_> - - <_> - 10 0 9 18 -1. - <_> - 13 0 3 18 3. - <_> - - <_> - 2 13 4 2 -1. - <_> - 2 13 2 1 2. - <_> - 4 14 2 1 2. - <_> - - <_> - 2 4 18 1 -1. - <_> - 2 4 9 1 2. - <_> - - <_> - 7 5 4 8 -1. - <_> - 9 5 2 8 2. - <_> - - <_> - 12 7 1 4 -1. - <_> - 11 8 1 2 2. - 1 - <_> - - <_> - 9 7 2 3 -1. - <_> - 10 7 1 3 2. - <_> - - <_> - 10 18 2 1 -1. - <_> - 10 18 1 1 2. - <_> - - <_> - 3 1 2 2 -1. - <_> - 3 2 2 1 2. - <_> - - <_> - 14 5 3 4 -1. - <_> - 15 5 1 4 3. - <_> - - <_> - 5 5 3 4 -1. - <_> - 6 5 1 4 3. - <_> - - <_> - 2 14 19 3 -1. - <_> - 2 15 19 1 3. - <_> - - <_> - 1 14 19 3 -1. - <_> - 1 15 19 1 3. - <_> - - <_> - 9 3 5 4 -1. - <_> - 9 4 5 2 2. - <_> - - <_> - 10 1 3 4 -1. - <_> - 11 2 1 4 3. - 1 - <_> - - <_> - 10 4 4 8 -1. - <_> - 10 6 4 4 2. - <_> - - <_> - 5 4 3 16 -1. - <_> - 5 12 3 8 2. - <_> - - <_> - 14 9 5 8 -1. - <_> - 14 13 5 4 2. - <_> - - <_> - 7 14 3 2 -1. - <_> - 8 15 1 2 3. - 1 - <_> - - <_> - 16 0 6 4 -1. - <_> - 15 1 6 2 2. - 1 - <_> - - <_> - 2 8 18 6 -1. - <_> - 8 10 6 2 9. - <_> - - <_> - 10 0 3 4 -1. - <_> - 11 1 1 4 3. - 1 - <_> - - <_> - 11 0 2 5 -1. - <_> - 11 0 1 5 2. - 1 - <_> - - <_> - 8 4 4 6 -1. - <_> - 8 4 2 3 2. - <_> - 10 7 2 3 2. - <_> - - <_> - 2 2 18 3 -1. - <_> - 8 3 6 1 9. - <_> - - <_> - 0 12 4 8 -1. - <_> - 0 14 4 4 2. - <_> - - <_> - 7 8 8 4 -1. - <_> - 9 8 4 4 2. - <_> - - <_> - 8 2 1 2 -1. - <_> - 8 3 1 1 2. - <_> - - <_> - 10 1 2 6 -1. - <_> - 11 1 1 3 2. - <_> - 10 4 1 3 2. - <_> - - <_> - 9 2 10 4 -1. - <_> - 9 2 5 4 2. - 1 - <_> - - <_> - 8 5 6 3 -1. - <_> - 8 6 6 1 3. - <_> - - <_> - 0 15 18 5 -1. - <_> - 6 15 6 5 3. - <_> - - <_> - 10 6 3 6 -1. - <_> - 10 9 3 3 2. - <_> - - <_> - 1 11 2 3 -1. - <_> - 1 12 2 1 3. - <_> - - <_> - 12 14 2 2 -1. - <_> - 12 15 2 1 2. - <_> - - <_> - 11 14 2 3 -1. - <_> - 11 14 1 3 2. - 1 - <_> - - <_> - 8 4 6 6 -1. - <_> - 11 4 3 3 2. - <_> - 8 7 3 3 2. - <_> - - <_> - 2 8 15 11 -1. - <_> - 7 8 5 11 3. - <_> - - <_> - 13 0 3 3 -1. - <_> - 12 1 3 1 3. - 1 - <_> - - <_> - 8 2 6 2 -1. - <_> - 11 2 3 2 2. - <_> - - <_> - 3 6 17 14 -1. - <_> - 3 13 17 7 2. - <_> - - <_> - 3 2 16 8 -1. - <_> - 7 2 8 8 2. - <_> - - <_> - 19 1 1 18 -1. - <_> - 13 7 1 6 3. - 1 - <_> - - <_> - 7 8 2 1 -1. - <_> - 7 8 1 1 2. - 1 - <_> - - <_> - 10 10 6 5 -1. - <_> - 12 10 2 5 3. - <_> - - <_> - 7 11 4 5 -1. - <_> - 8 11 2 5 2. - <_> - - <_> - 2 1 18 8 -1. - <_> - 11 1 9 4 2. - <_> - 2 5 9 4 2. - <_> - - <_> - 0 3 16 2 -1. - <_> - 4 3 8 2 2. - <_> - - <_> - 13 0 3 15 -1. - <_> - 14 0 1 15 3. - <_> - - <_> - 11 0 6 4 -1. - <_> - 11 0 6 2 2. - 1 - <_> - - <_> - 15 18 1 2 -1. - <_> - 15 19 1 1 2. - <_> - - <_> - 6 1 7 3 -1. - <_> - 6 2 7 1 3. - <_> - - <_> - 18 3 1 3 -1. - <_> - 18 4 1 1 3. - <_> - - <_> - 7 6 3 3 -1. - <_> - 8 6 1 3 3. - <_> - - <_> - 20 1 2 8 -1. - <_> - 21 1 1 4 2. - <_> - 20 5 1 4 2. - <_> - - <_> - 8 8 3 1 -1. - <_> - 9 8 1 1 3. - <_> - - <_> - 13 0 3 3 -1. - <_> - 12 1 3 1 3. - 1 - <_> - - <_> - 9 2 4 8 -1. - <_> - 10 2 2 8 2. - <_> - - <_> - 9 1 4 3 -1. - <_> - 9 2 4 1 3. - <_> - - <_> - 8 7 6 1 -1. - <_> - 10 7 2 1 3. - <_> - - <_> - 12 4 6 8 -1. - <_> - 14 4 2 8 3. - <_> - - <_> - 3 5 6 4 -1. - <_> - 3 5 3 2 2. - <_> - 6 7 3 2 2. - <_> - - <_> - 18 6 1 2 -1. - <_> - 18 7 1 1 2. - <_> - - <_> - 3 6 1 2 -1. - <_> - 3 7 1 1 2. - <_> - - <_> - 14 2 3 18 -1. - <_> - 14 11 3 9 2. - <_> - - <_> - 11 0 6 2 -1. - <_> - 11 0 6 1 2. - 1 - <_> - - <_> - 13 4 3 2 -1. - <_> - 14 4 1 2 3. - <_> - - <_> - 10 3 2 2 -1. - <_> - 10 3 1 1 2. - <_> - 11 4 1 1 2. - <_> - - <_> - 13 4 3 2 -1. - <_> - 14 4 1 2 3. - <_> - - <_> - 11 0 6 1 -1. - <_> - 11 0 3 1 2. - 1 - <_> - - <_> - 13 0 2 3 -1. - <_> - 13 0 1 3 2. - 1 - <_> - - <_> - 7 1 6 11 -1. - <_> - 10 1 3 11 2. - <_> - - <_> - 11 0 2 2 -1. - <_> - 11 0 1 2 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 10 0 1 2 2. - <_> - - <_> - 11 5 2 3 -1. - <_> - 11 6 2 1 3. - <_> - - <_> - 9 4 4 3 -1. - <_> - 9 5 4 1 3. - <_> - - <_> - 8 2 10 9 -1. - <_> - 8 5 10 3 3. - <_> - - <_> - 10 8 2 1 -1. - <_> - 10 8 1 1 2. - 1 - <_> - - <_> - 12 7 8 2 -1. - <_> - 12 7 8 1 2. - 1 - <_> - - <_> - 10 7 2 8 -1. - <_> - 10 7 1 8 2. - 1 - <_> - - <_> - 9 8 11 12 -1. - <_> - 9 14 11 6 2. - <_> - - <_> - 9 4 4 9 -1. - <_> - 9 7 4 3 3. - <_> - - <_> - 10 4 2 6 -1. - <_> - 10 7 2 3 2. - <_> - - <_> - 8 4 5 3 -1. - <_> - 8 5 5 1 3. - <_> - - <_> - 12 1 1 4 -1. - <_> - 11 2 1 2 2. - 1 - <_> - - <_> - 10 0 4 1 -1. - <_> - 11 1 2 1 2. - 1 - <_> - - <_> - 20 17 1 3 -1. - <_> - 20 18 1 1 3. - <_> - - <_> - 8 13 3 3 -1. - <_> - 9 14 1 1 9. - <_> - - <_> - 1 12 20 6 -1. - <_> - 11 12 10 3 2. - <_> - 1 15 10 3 2. - <_> - - <_> - 6 15 1 2 -1. - <_> - 6 16 1 1 2. - <_> - - <_> - 3 0 18 20 -1. - <_> - 3 10 18 10 2. - <_> - - <_> - 0 0 19 20 -1. - <_> - 0 10 19 10 2. - <_> - - <_> - 15 14 2 3 -1. - <_> - 15 15 2 1 3. - <_> - - <_> - 8 11 3 1 -1. - <_> - 9 11 1 1 3. - <_> - - <_> - 14 8 2 3 -1. - <_> - 14 8 1 3 2. - 1 - <_> - - <_> - 9 11 2 2 -1. - <_> - 9 11 1 1 2. - <_> - 10 12 1 1 2. - <_> - - <_> - 15 14 2 3 -1. - <_> - 15 15 2 1 3. - <_> - - <_> - 5 14 2 3 -1. - <_> - 5 15 2 1 3. - <_> - - <_> - 15 4 3 14 -1. - <_> - 15 11 3 7 2. - <_> - - <_> - 8 7 6 4 -1. - <_> - 8 7 3 2 2. - <_> - 11 9 3 2 2. - <_> - - <_> - 9 6 5 4 -1. - <_> - 9 8 5 2 2. - <_> - - <_> - 9 7 1 2 -1. - <_> - 9 8 1 1 2. - <_> - - <_> - 8 8 6 2 -1. - <_> - 11 8 3 1 2. - <_> - 8 9 3 1 2. - <_> - - <_> - 9 7 4 2 -1. - <_> - 9 8 4 1 2. - <_> - - <_> - 17 1 1 6 -1. - <_> - 17 4 1 3 2. - <_> - - <_> - 4 1 1 6 -1. - <_> - 4 4 1 3 2. - <_> - - <_> - 2 0 18 20 -1. - <_> - 8 0 6 20 3. - <_> - - <_> - 10 6 2 4 -1. - <_> - 10 8 2 2 2. - <_> - - <_> - 16 1 4 15 -1. - <_> - 11 6 4 5 3. - 1 - <_> - - <_> - 1 17 3 2 -1. - <_> - 2 17 1 2 3. - <_> - - <_> - 18 18 3 2 -1. - <_> - 19 18 1 2 3. - <_> - - <_> - 1 18 3 2 -1. - <_> - 2 18 1 2 3. - <_> - - <_> - 20 17 1 3 -1. - <_> - 20 18 1 1 3. - <_> - - <_> - 9 9 4 2 -1. - <_> - 9 9 2 1 2. - <_> - 11 10 2 1 2. - <_> - - <_> - 10 4 3 1 -1. - <_> - 11 4 1 1 3. - <_> - - <_> - 10 4 2 2 -1. - <_> - 10 4 1 1 2. - <_> - 11 5 1 1 2. - <_> - - <_> - 13 5 3 1 -1. - <_> - 14 5 1 1 3. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 5 1 1 3. - <_> - - <_> - 13 4 4 2 -1. - <_> - 15 4 2 1 2. - <_> - 13 5 2 1 2. - <_> - - <_> - 5 4 4 2 -1. - <_> - 5 4 2 1 2. - <_> - 7 5 2 1 2. - <_> - - <_> - 14 3 6 2 -1. - <_> - 17 3 3 1 2. - <_> - 14 4 3 1 2. - <_> - - <_> - 6 1 3 16 -1. - <_> - 7 1 1 16 3. - <_> - - <_> - 13 8 2 1 -1. - <_> - 13 8 1 1 2. - 1 - <_> - - <_> - 9 8 1 2 -1. - <_> - 9 8 1 1 2. - 1 - <_> - - <_> - 12 6 3 13 -1. - <_> - 13 6 1 13 3. - <_> - - <_> - 6 0 16 2 -1. - <_> - 10 4 8 2 2. - 1 - <_> - - <_> - 12 1 2 4 -1. - <_> - 12 1 2 2 2. - 1 - <_> - - <_> - 9 2 3 4 -1. - <_> - 9 4 3 2 2. - <_> - - <_> - 13 0 2 2 -1. - <_> - 13 0 1 2 2. - 1 - <_> - - <_> - 10 0 2 6 -1. - <_> - 10 2 2 2 3. - <_> - - <_> - 13 0 2 2 -1. - <_> - 13 0 1 2 2. - 1 - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 2 1 2. - 1 - <_> - - <_> - 12 0 2 1 -1. - <_> - 12 0 1 1 2. - 1 - <_> - - <_> - 10 0 1 2 -1. - <_> - 10 0 1 1 2. - 1 - <_> - - <_> - 12 0 1 2 -1. - <_> - 12 0 1 1 2. - 1 - <_> - - <_> - 8 1 11 8 -1. - <_> - 8 1 11 4 2. - 1 - <_> - - <_> - 14 6 6 8 -1. - <_> - 16 8 2 8 3. - 1 - <_> - - <_> - 10 0 2 2 -1. - <_> - 11 0 1 2 2. - <_> - - <_> - 14 0 2 3 -1. - <_> - 13 1 2 1 3. - 1 - <_> - - <_> - 8 0 3 2 -1. - <_> - 9 1 1 2 3. - 1 - <_> - - <_> - 18 9 4 2 -1. - <_> - 18 9 2 2 2. - <_> - - <_> - 0 9 4 2 -1. - <_> - 2 9 2 2 2. - <_> - - <_> - 20 8 2 2 -1. - <_> - 20 8 2 1 2. - 1 - <_> - - <_> - 2 8 2 2 -1. - <_> - 2 8 1 2 2. - 1 - <_> - - <_> - 17 4 2 16 -1. - <_> - 17 12 2 8 2. - <_> - - <_> - 3 4 6 15 -1. - <_> - 3 9 6 5 3. - <_> - - <_> - 16 4 4 6 -1. - <_> - 14 6 4 2 3. - 1 - <_> - - <_> - 6 4 6 4 -1. - <_> - 8 6 2 4 3. - 1 - <_> - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - 1 - <_> - - <_> - 3 0 8 12 -1. - <_> - 5 0 4 12 2. - <_> - - <_> - 10 4 3 2 -1. - <_> - 11 4 1 2 3. - <_> - - <_> - 10 7 4 2 -1. - <_> - 10 7 4 1 2. - 1 - <_> - - <_> - 10 10 2 3 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 8 10 4 7 -1. - <_> - 9 10 2 7 2. - <_> - - <_> - 10 6 3 9 -1. - <_> - 11 9 1 3 9. - <_> - - <_> - 10 6 2 4 -1. - <_> - 10 7 2 2 2. - <_> - - <_> - 9 6 7 3 -1. - <_> - 9 7 7 1 3. - <_> - - <_> - 8 15 1 2 -1. - <_> - 8 16 1 1 2. - <_> - - <_> - 13 14 9 6 -1. - <_> - 16 14 3 6 3. - <_> - - <_> - 3 19 16 1 -1. - <_> - 7 19 8 1 2. - <_> - - <_> - 11 18 5 2 -1. - <_> - 11 19 5 1 2. - <_> - - <_> - 2 18 11 2 -1. - <_> - 2 19 11 1 2. - <_> - - <_> - 19 7 1 3 -1. - <_> - 19 8 1 1 3. - <_> - - <_> - 6 11 1 4 -1. - <_> - 5 12 1 2 2. - 1 - <_> - - <_> - 16 17 6 1 -1. - <_> - 16 17 3 1 2. - <_> - - <_> - 0 17 6 1 -1. - <_> - 3 17 3 1 2. - <_> - - <_> - 6 0 16 1 -1. - <_> - 10 0 8 1 2. - <_> - - <_> - 0 11 6 8 -1. - <_> - 3 11 3 8 2. - <_> - - <_> - 18 13 2 2 -1. - <_> - 18 13 1 2 2. - 1 - <_> - - <_> - 6 2 3 1 -1. - <_> - 7 2 1 1 3. - <_> - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - <_> - - <_> - 7 3 2 4 -1. - <_> - 7 3 1 2 2. - <_> - 8 5 1 2 2. - <_> - - <_> - 13 2 2 2 -1. - <_> - 14 2 1 1 2. - <_> - 13 3 1 1 2. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 1 2. - <_> - 8 3 1 1 2. - <_> - - <_> - 15 0 3 9 -1. - <_> - 16 1 1 9 3. - 1 - <_> - - <_> - 5 0 2 1 -1. - <_> - 6 0 1 1 2. - <_> - - <_> - 15 0 2 2 -1. - <_> - 15 0 1 2 2. - <_> - - <_> - 0 6 16 11 -1. - <_> - 4 6 8 11 2. - <_> - - <_> - 15 3 1 2 -1. - <_> - 15 4 1 1 2. - <_> - - <_> - 0 12 10 6 -1. - <_> - 5 12 5 6 2. - <_> - - <_> - 15 0 2 2 -1. - <_> - 15 0 1 2 2. - <_> - - <_> - 5 0 2 2 -1. - <_> - 6 0 1 2 2. - <_> - - <_> - 14 6 8 14 -1. - <_> - 18 6 4 7 2. - <_> - 14 13 4 7 2. - <_> - - <_> - 1 2 8 18 -1. - <_> - 1 2 4 9 2. - <_> - 5 11 4 9 2. - <_> - - <_> - 19 13 2 2 -1. - <_> - 19 13 1 2 2. - 1 - <_> - - <_> - 3 13 2 2 -1. - <_> - 3 13 2 1 2. - 1 - <_> - - <_> - 19 7 1 3 -1. - <_> - 19 8 1 1 3. - <_> - - <_> - 0 0 18 15 -1. - <_> - 9 0 9 15 2. - <_> - - <_> - 19 17 2 2 -1. - <_> - 19 18 2 1 2. - <_> - - <_> - 1 17 2 2 -1. - <_> - 1 18 2 1 2. - <_> - - <_> - 15 1 3 5 -1. - <_> - 16 2 1 5 3. - 1 - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 2 2. - <_> - - <_> - 11 3 3 3 -1. - <_> - 12 3 1 3 3. - <_> - - <_> - 8 3 3 3 -1. - <_> - 9 3 1 3 3. - <_> - - <_> - 11 1 3 4 -1. - <_> - 10 2 3 2 2. - 1 - <_> - - <_> - 8 9 6 3 -1. - <_> - 8 10 6 1 3. - <_> - - <_> - 9 7 4 3 -1. - <_> - 9 8 4 1 3. - <_> - - <_> - 10 0 8 3 -1. - <_> - 9 1 8 1 3. - 1 - <_> - - <_> - 8 6 6 4 -1. - <_> - 11 6 3 2 2. - <_> - 8 8 3 2 2. - <_> - - <_> - 11 5 9 3 -1. - <_> - 10 6 9 1 3. - 1 - <_> - - <_> - 12 9 1 3 -1. - <_> - 11 10 1 1 3. - 1 - <_> - - <_> - 10 10 3 3 -1. - <_> - 9 11 3 1 3. - 1 - <_> - - <_> - 11 4 2 4 -1. - <_> - 10 5 2 2 2. - 1 - <_> - - <_> - 11 4 4 2 -1. - <_> - 12 5 2 2 2. - 1 - <_> - - <_> - 11 1 3 4 -1. - <_> - 10 2 3 2 2. - 1 - <_> - - <_> - 11 1 4 3 -1. - <_> - 12 2 2 3 2. - 1 - <_> - - <_> - 10 3 3 4 -1. - <_> - 11 3 1 4 3. - <_> - - <_> - 9 3 3 4 -1. - <_> - 10 3 1 4 3. - <_> - - <_> - 8 5 6 1 -1. - <_> - 10 5 2 1 3. - <_> - - <_> - 6 5 3 3 -1. - <_> - 6 6 3 1 3. - <_> - - <_> - 10 4 3 3 -1. - <_> - 10 5 3 1 3. - <_> - - <_> - 5 12 1 2 -1. - <_> - 5 12 1 1 2. - 1 - <_> - - <_> - 12 15 10 4 -1. - <_> - 17 15 5 2 2. - <_> - 12 17 5 2 2. - <_> - - <_> - 0 15 10 4 -1. - <_> - 0 15 5 2 2. - <_> - 5 17 5 2 2. - <_> - - <_> - 10 7 3 6 -1. - <_> - 10 9 3 2 3. - <_> - - <_> - 9 7 3 6 -1. - <_> - 9 9 3 2 3. - <_> - - <_> - 13 8 3 3 -1. - <_> - 14 9 1 3 3. - 1 - <_> - - <_> - 8 8 6 8 -1. - <_> - 8 10 6 4 2. - <_> - - <_> - 11 11 2 6 -1. - <_> - 9 13 2 2 3. - 1 - <_> - - <_> - 8 16 2 2 -1. - <_> - 8 17 2 1 2. - <_> - - <_> - 11 11 2 6 -1. - <_> - 9 13 2 2 3. - 1 - <_> - - <_> - 11 11 6 2 -1. - <_> - 13 13 2 2 3. - 1 - <_> - - <_> - 8 12 6 2 -1. - <_> - 8 13 6 1 2. - <_> - - <_> - 9 8 3 6 -1. - <_> - 10 10 1 2 9. - <_> - - <_> - 10 8 3 1 -1. - <_> - 11 8 1 1 3. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 19 7 1 3 -1. - <_> - 19 8 1 1 3. - <_> - - <_> - 2 7 1 3 -1. - <_> - 2 8 1 1 3. - <_> - - <_> - 17 5 2 2 -1. - <_> - 17 6 2 1 2. - <_> - - <_> - 3 5 2 2 -1. - <_> - 3 6 2 1 2. - <_> - - <_> - 13 2 9 9 -1. - <_> - 16 5 3 3 9. - <_> - - <_> - 0 2 9 9 -1. - <_> - 3 5 3 3 9. - <_> - - <_> - 16 7 6 6 -1. - <_> - 14 9 6 2 3. - 1 - <_> - - <_> - 6 7 6 6 -1. - <_> - 8 9 2 6 3. - 1 - <_> - - <_> - 18 0 3 10 -1. - <_> - 18 0 3 5 2. - 1 - <_> - - <_> - 6 11 1 4 -1. - <_> - 6 11 1 2 2. - 1 - <_> - - <_> - 12 10 2 2 -1. - <_> - 13 10 1 1 2. - <_> - 12 11 1 1 2. - <_> - - <_> - 9 6 2 2 -1. - <_> - 9 6 1 1 2. - <_> - 10 7 1 1 2. - <_> - - <_> - 9 10 4 7 -1. - <_> - 10 10 2 7 2. - <_> - - <_> - 11 1 2 2 -1. - <_> - 11 1 2 1 2. - 1 - <_> - - <_> - 7 3 9 6 -1. - <_> - 7 5 9 2 3. - <_> - - <_> - 9 5 2 3 -1. - <_> - 9 6 2 1 3. - <_> - - <_> - 11 6 1 2 -1. - <_> - 11 7 1 1 2. - <_> - - <_> - 10 6 1 2 -1. - <_> - 10 7 1 1 2. - <_> - - <_> - 11 5 2 3 -1. - <_> - 11 5 1 3 2. - 1 - <_> - - <_> - 10 5 1 8 -1. - <_> - 10 7 1 4 2. - <_> - - <_> - 5 8 13 10 -1. - <_> - 5 13 13 5 2. - <_> - - <_> - 8 6 5 4 -1. - <_> - 7 7 5 2 2. - 1 - <_> - - <_> - 3 12 16 2 -1. - <_> - 11 12 8 1 2. - <_> - 3 13 8 1 2. - <_> - - <_> - 0 0 22 2 -1. - <_> - 11 0 11 2 2. - <_> - - <_> - 11 11 4 2 -1. - <_> - 13 11 2 1 2. - <_> - 11 12 2 1 2. - <_> - - <_> - 11 2 4 5 -1. - <_> - 11 2 2 5 2. - 1 - <_> - - <_> - 8 4 6 4 -1. - <_> - 11 4 3 2 2. - <_> - 8 6 3 2 2. - <_> - - <_> - 8 1 6 6 -1. - <_> - 10 3 2 2 9. - <_> - - <_> - 7 3 9 3 -1. - <_> - 7 4 9 1 3. - <_> - - <_> - 9 4 3 3 -1. - <_> - 9 5 3 1 3. - <_> - - <_> - 10 3 2 4 -1. - <_> - 11 3 1 2 2. - <_> - 10 5 1 2 2. - <_> - - <_> - 3 13 4 3 -1. - <_> - 3 13 2 3 2. - 1 - <_> - - <_> - 7 0 4 6 -1. - <_> - 7 0 2 3 2. - <_> - 9 3 2 3 2. - <_> - - <_> - 12 17 1 2 -1. - <_> - 12 18 1 1 2. - <_> - - <_> - 11 3 3 1 -1. - <_> - 12 4 1 1 3. - 1 - <_> - - <_> - 19 0 3 12 -1. - <_> - 20 0 1 12 3. - <_> - - <_> - 0 5 6 9 -1. - <_> - 2 8 2 3 9. - <_> - - <_> - 13 1 2 4 -1. - <_> - 14 1 1 2 2. - <_> - 13 3 1 2 2. - <_> - - <_> - 5 4 1 6 -1. - <_> - 5 7 1 3 2. - <_> - - <_> - 13 1 2 4 -1. - <_> - 14 1 1 2 2. - <_> - 13 3 1 2 2. - <_> - - <_> - 0 0 14 4 -1. - <_> - 0 0 7 2 2. - <_> - 7 2 7 2 2. - <_> - - <_> - 11 7 1 6 -1. - <_> - 11 10 1 3 2. - <_> - - <_> - 11 7 3 2 -1. - <_> - 12 8 1 2 3. - 1 - <_> - - <_> - 8 10 6 3 -1. - <_> - 10 10 2 3 3. - <_> - - <_> - 10 3 2 4 -1. - <_> - 10 5 2 2 2. - <_> - - <_> - 16 1 3 2 -1. - <_> - 16 2 3 1 2. - <_> - - <_> - 3 1 3 2 -1. - <_> - 3 2 3 1 2. - <_> - - <_> - 13 1 2 4 -1. - <_> - 14 1 1 2 2. - <_> - 13 3 1 2 2. - <_> - - <_> - 4 6 10 4 -1. - <_> - 4 6 5 4 2. - 1 - <_> - - <_> - 14 4 6 16 -1. - <_> - 14 12 6 8 2. - <_> - - <_> - 7 3 7 9 -1. - <_> - 7 6 7 3 3. - <_> - - <_> - 14 7 2 4 -1. - <_> - 14 7 1 4 2. - 1 - <_> - - <_> - 8 7 4 2 -1. - <_> - 8 7 4 1 2. - 1 - <_> - - <_> - 8 9 6 4 -1. - <_> - 11 9 3 2 2. - <_> - 8 11 3 2 2. - <_> - - <_> - 8 10 2 2 -1. - <_> - 8 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 9 7 4 2 -1. - <_> - 9 8 4 1 2. - <_> - - <_> - 11 5 3 2 -1. - <_> - 11 5 3 1 2. - 1 - <_> - - <_> - 11 6 2 2 -1. - <_> - 11 7 2 1 2. - <_> - - <_> - 3 1 16 2 -1. - <_> - 3 1 8 1 2. - <_> - 11 2 8 1 2. - <_> - - <_> - 8 0 6 1 -1. - <_> - 8 0 3 1 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 9 10 1 1 2. - <_> - 10 11 1 1 2. - <_> - - <_> - 10 4 3 2 -1. - <_> - 11 4 1 2 3. - <_> - - <_> - 10 7 3 3 -1. - <_> - 9 8 3 1 3. - 1 - <_> - - <_> - 10 4 3 2 -1. - <_> - 11 4 1 2 3. - <_> - - <_> - 6 2 3 4 -1. - <_> - 6 3 3 2 2. - <_> - - <_> - 9 0 4 6 -1. - <_> - 9 2 4 2 3. - <_> - - <_> - 9 1 3 3 -1. - <_> - 9 2 3 1 3. - <_> - - <_> - 16 6 1 2 -1. - <_> - 16 7 1 1 2. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 1 2. - <_> - 8 3 1 1 2. - <_> - - <_> - 15 1 1 6 -1. - <_> - 15 3 1 2 3. - <_> - - <_> - 8 9 1 3 -1. - <_> - 8 10 1 1 3. - <_> - - <_> - 13 8 1 3 -1. - <_> - 13 9 1 1 3. - <_> - - <_> - 2 8 8 8 -1. - <_> - 2 10 8 4 2. - <_> - - <_> - 14 7 4 9 -1. - <_> - 14 10 4 3 3. - <_> - - <_> - 0 12 22 4 -1. - <_> - 0 12 11 2 2. - <_> - 11 14 11 2 2. - <_> - - <_> - 13 7 2 2 -1. - <_> - 13 7 2 1 2. - 1 - <_> - - <_> - 10 6 2 4 -1. - <_> - 10 8 2 2 2. - <_> - - <_> - 9 4 4 3 -1. - <_> - 9 5 4 1 3. - <_> - - <_> - 11 6 6 1 -1. - <_> - 11 6 3 1 2. - 1 - <_> - - <_> - 9 6 6 6 -1. - <_> - 9 8 6 2 3. - <_> - - <_> - 9 6 1 3 -1. - <_> - 9 7 1 1 3. - <_> - - <_> - 13 8 1 3 -1. - <_> - 13 9 1 1 3. - <_> - - <_> - 8 8 1 3 -1. - <_> - 8 9 1 1 3. - <_> - - <_> - 9 6 5 3 -1. - <_> - 9 7 5 1 3. - <_> - - <_> - 9 4 3 2 -1. - <_> - 10 4 1 2 3. - <_> - - <_> - 11 5 4 3 -1. - <_> - 11 5 2 3 2. - <_> - - <_> - 9 3 4 4 -1. - <_> - 9 4 4 2 2. - <_> - - <_> - 13 17 3 3 -1. - <_> - 13 18 3 1 3. - <_> - - <_> - 9 4 2 1 -1. - <_> - 10 4 1 1 2. - <_> - - <_> - 16 6 1 2 -1. - <_> - 16 7 1 1 2. - <_> - - <_> - 2 9 4 11 -1. - <_> - 4 9 2 11 2. - <_> - - <_> - 16 14 2 2 -1. - <_> - 16 14 1 2 2. - 1 - <_> - - <_> - 9 8 2 2 -1. - <_> - 9 8 1 1 2. - <_> - 10 9 1 1 2. - <_> - - <_> - 16 14 2 2 -1. - <_> - 16 14 1 2 2. - 1 - <_> - - <_> - 0 9 8 11 -1. - <_> - 4 9 4 11 2. - <_> - - <_> - 16 6 1 2 -1. - <_> - 16 7 1 1 2. - <_> - - <_> - 11 4 4 1 -1. - <_> - 12 5 2 1 2. - 1 - <_> - - <_> - 11 7 1 6 -1. - <_> - 11 10 1 3 2. - <_> - - <_> - 10 7 1 6 -1. - <_> - 10 10 1 3 2. - <_> - - <_> - 8 4 6 5 -1. - <_> - 8 4 3 5 2. - <_> - - <_> - 7 3 4 4 -1. - <_> - 8 3 2 4 2. - <_> - - <_> - 13 6 1 2 -1. - <_> - 13 7 1 1 2. - <_> - - <_> - 8 6 6 4 -1. - <_> - 8 6 3 2 2. - <_> - 11 8 3 2 2. - <_> - - <_> - 7 7 10 3 -1. - <_> - 7 8 10 1 3. - <_> - - <_> - 9 7 2 2 -1. - <_> - 9 7 1 2 2. - 1 - <_> - - <_> - 11 10 1 3 -1. - <_> - 11 11 1 1 3. - <_> - - <_> - 10 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 11 11 1 1 2. - <_> - - <_> - 15 1 3 1 -1. - <_> - 16 1 1 1 3. - <_> - - <_> - 5 0 6 16 -1. - <_> - 5 0 3 8 2. - <_> - 8 8 3 8 2. - <_> - - <_> - 15 1 3 1 -1. - <_> - 16 1 1 1 3. - <_> - - <_> - 9 0 2 1 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 15 1 3 1 -1. - <_> - 16 1 1 1 3. - <_> - - <_> - 4 1 3 1 -1. - <_> - 5 1 1 1 3. - <_> - - <_> - 6 0 16 2 -1. - <_> - 6 1 16 1 2. - <_> - - <_> - 6 17 3 3 -1. - <_> - 6 18 3 1 3. - <_> - - <_> - 13 17 1 3 -1. - <_> - 13 18 1 1 3. - <_> - - <_> - 6 13 2 2 -1. - <_> - 6 13 1 1 2. - <_> - 7 14 1 1 2. - <_> - - <_> - 9 17 7 3 -1. - <_> - 9 18 7 1 3. - <_> - - <_> - 7 10 1 3 -1. - <_> - 7 11 1 1 3. - <_> - - <_> - 14 11 2 1 -1. - <_> - 14 11 1 1 2. - 1 - <_> - - <_> - 6 9 3 4 -1. - <_> - 6 9 3 2 2. - 1 - <_> - - <_> - 10 2 4 9 -1. - <_> - 10 5 4 3 3. - <_> - - <_> - 7 17 2 3 -1. - <_> - 7 18 2 1 3. - <_> - - <_> - 8 7 7 2 -1. - <_> - 8 8 7 1 2. - <_> - - <_> - 6 8 3 1 -1. - <_> - 7 8 1 1 3. - <_> - - <_> - 14 8 2 2 -1. - <_> - 14 8 1 2 2. - <_> - - <_> - 2 5 2 2 -1. - <_> - 2 6 2 1 2. - <_> - - <_> - 13 8 3 2 -1. - <_> - 14 8 1 2 3. - <_> - - <_> - 6 8 2 2 -1. - <_> - 7 8 1 2 2. - <_> - - <_> - 11 0 10 6 -1. - <_> - 16 0 5 3 2. - <_> - 11 3 5 3 2. - <_> - - <_> - 6 3 10 2 -1. - <_> - 6 3 5 1 2. - <_> - 11 4 5 1 2. - <_> - - <_> - 13 11 2 2 -1. - <_> - 14 11 1 1 2. - <_> - 13 12 1 1 2. - <_> - - <_> - 0 15 8 5 -1. - <_> - 2 15 4 5 2. - <_> - - <_> - 5 1 15 3 -1. - <_> - 5 2 15 1 3. - <_> - - <_> - 0 15 4 5 -1. - <_> - 2 15 2 5 2. - <_> - - <_> - 11 7 1 6 -1. - <_> - 9 9 1 2 3. - 1 - <_> - - <_> - 11 7 6 1 -1. - <_> - 13 9 2 1 3. - 1 - <_> - - <_> - 14 8 1 3 -1. - <_> - 13 9 1 1 3. - 1 - <_> - - <_> - 10 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 11 11 1 1 2. - <_> - - <_> - 11 1 2 5 -1. - <_> - 11 1 1 5 2. - 1 - <_> - - <_> - 7 4 3 6 -1. - <_> - 8 6 1 2 9. - <_> - - <_> - 9 3 4 4 -1. - <_> - 9 5 4 2 2. - <_> - - <_> - 9 3 3 9 -1. - <_> - 10 6 1 3 9. - <_> - - <_> - 9 7 4 2 -1. - <_> - 9 8 4 1 2. - <_> - - <_> - 8 7 3 1 -1. - <_> - 9 7 1 1 3. - <_> - - <_> - 11 7 4 1 -1. - <_> - 12 7 2 1 2. - <_> - - <_> - 7 7 4 1 -1. - <_> - 8 7 2 1 2. - <_> - - <_> - 20 11 2 3 -1. - <_> - 20 11 1 3 2. - 1 - <_> - - <_> - 7 8 3 1 -1. - <_> - 8 8 1 1 3. - <_> - - <_> - 20 11 2 3 -1. - <_> - 20 11 1 3 2. - 1 - <_> - - <_> - 2 11 3 2 -1. - <_> - 2 11 3 1 2. - 1 - <_> - - <_> - 18 10 2 10 -1. - <_> - 18 15 2 5 2. - <_> - - <_> - 2 10 2 10 -1. - <_> - 2 15 2 5 2. - <_> - - <_> - 13 12 8 8 -1. - <_> - 17 12 4 4 2. - <_> - 13 16 4 4 2. - <_> - - <_> - 1 12 8 8 -1. - <_> - 1 12 4 4 2. - <_> - 5 16 4 4 2. - <_> - - <_> - 13 15 1 2 -1. - <_> - 13 16 1 1 2. - <_> - - <_> - 8 15 1 2 -1. - <_> - 8 16 1 1 2. - <_> - - <_> - 0 5 22 12 -1. - <_> - 0 5 11 12 2. - <_> - - <_> - 3 0 12 10 -1. - <_> - 3 5 12 5 2. - <_> - - <_> - 13 0 6 1 -1. - <_> - 15 0 2 1 3. - <_> - - <_> - 6 14 2 4 -1. - <_> - 6 14 1 2 2. - <_> - 7 16 1 2 2. - <_> - - <_> - 14 12 2 2 -1. - <_> - 14 12 1 2 2. - <_> - - <_> - 7 9 7 6 -1. - <_> - 7 11 7 2 3. - <_> - - <_> - 14 10 1 3 -1. - <_> - 14 11 1 1 3. - <_> - - <_> - 6 12 2 2 -1. - <_> - 7 12 1 2 2. - <_> - - <_> - 17 0 5 10 -1. - <_> - 17 0 5 5 2. - 1 - <_> - - <_> - 10 5 1 6 -1. - <_> - 10 8 1 3 2. - <_> - - <_> - 11 5 1 4 -1. - <_> - 11 6 1 2 2. - <_> - - <_> - 9 6 2 2 -1. - <_> - 9 7 2 1 2. - <_> - - <_> - 10 7 3 6 -1. - <_> - 10 9 3 2 3. - <_> - - <_> - 7 10 1 3 -1. - <_> - 7 11 1 1 3. - <_> - - <_> - 14 0 3 6 -1. - <_> - 15 1 1 6 3. - 1 - <_> - - <_> - 8 0 6 3 -1. - <_> - 7 1 6 1 3. - 1 - <_> - - <_> - 13 5 3 8 -1. - <_> - 14 5 1 8 3. - <_> - - <_> - 8 0 3 2 -1. - <_> - 8 0 3 1 2. - 1 - <_> - - <_> - 13 5 3 8 -1. - <_> - 14 5 1 8 3. - <_> - - <_> - 6 5 3 8 -1. - <_> - 7 5 1 8 3. - <_> - - <_> - 14 0 4 1 -1. - <_> - 14 0 2 1 2. - <_> - - <_> - 11 4 1 4 -1. - <_> - 10 5 1 2 2. - 1 - <_> - - <_> - 2 1 18 3 -1. - <_> - 8 1 6 3 3. - <_> - - <_> - 9 0 9 1 -1. - <_> - 12 3 3 1 3. - 1 - <_> - - <_> - 12 14 4 3 -1. - <_> - 12 15 4 1 3. - <_> - - <_> - 8 4 7 6 -1. - <_> - 6 6 7 2 3. - 1 - <_> - - <_> - 14 10 2 1 -1. - <_> - 14 10 1 1 2. - 1 - <_> - - <_> - 8 10 1 2 -1. - <_> - 8 10 1 1 2. - 1 - <_> - - <_> - 14 10 4 1 -1. - <_> - 15 11 2 1 2. - 1 - <_> - - <_> - 8 10 1 4 -1. - <_> - 7 11 1 2 2. - 1 - <_> - - <_> - 2 14 20 4 -1. - <_> - 7 14 10 4 2. - <_> - - <_> - 8 15 2 1 -1. - <_> - 8 15 1 1 2. - 1 - <_> - - <_> - 10 12 2 3 -1. - <_> - 10 13 2 1 3. - <_> - - <_> - 10 12 1 2 -1. - <_> - 10 13 1 1 2. - <_> - - <_> - 11 7 1 12 -1. - <_> - 11 13 1 6 2. - <_> - - <_> - 10 11 1 9 -1. - <_> - 10 14 1 3 3. - <_> - - <_> - 17 8 1 2 -1. - <_> - 17 9 1 1 2. - <_> - - <_> - 4 8 1 2 -1. - <_> - 4 9 1 1 2. - <_> - - <_> - 8 11 7 3 -1. - <_> - 8 12 7 1 3. - <_> - - <_> - 8 14 6 6 -1. - <_> - 8 17 6 3 2. - <_> - - <_> - 10 14 3 4 -1. - <_> - 10 16 3 2 2. - <_> - - <_> - 0 4 20 3 -1. - <_> - 10 4 10 3 2. - <_> - - <_> - 11 6 4 10 -1. - <_> - 11 6 4 5 2. - 1 - <_> - - <_> - 5 6 4 3 -1. - <_> - 5 7 4 1 3. - <_> - - <_> - 16 17 1 2 -1. - <_> - 16 18 1 1 2. - <_> - - <_> - 10 11 2 3 -1. - <_> - 10 12 2 1 3. - <_> - - <_> - 11 13 1 2 -1. - <_> - 11 14 1 1 2. - <_> - - <_> - 4 10 13 10 -1. - <_> - 4 15 13 5 2. - <_> - - <_> - 11 16 2 1 -1. - <_> - 11 16 1 1 2. - 1 - <_> - - <_> - 11 16 1 2 -1. - <_> - 11 16 1 1 2. - 1 - <_> - - <_> - 11 12 1 4 -1. - <_> - 11 14 1 2 2. - <_> - - <_> - 5 14 5 3 -1. - <_> - 5 15 5 1 3. - <_> - - <_> - 9 6 10 8 -1. - <_> - 9 8 10 4 2. - <_> - - <_> - 10 5 1 4 -1. - <_> - 10 6 1 2 2. - <_> - - <_> - 10 5 2 2 -1. - <_> - 10 6 2 1 2. - <_> - - <_> - 10 3 6 2 -1. - <_> - 10 3 6 1 2. - 1 - <_> - - <_> - 9 0 5 6 -1. - <_> - 9 2 5 2 3. - <_> - - <_> - 8 4 6 6 -1. - <_> - 8 7 6 3 2. - <_> - - <_> - 11 2 1 16 -1. - <_> - 11 10 1 8 2. - <_> - - <_> - 9 13 4 4 -1. - <_> - 10 13 2 4 2. - <_> - - <_> - 2 2 18 3 -1. - <_> - 2 3 18 1 3. - <_> - - <_> - 0 8 15 12 -1. - <_> - 5 8 5 12 3. - <_> - - <_> - 18 5 3 2 -1. - <_> - 18 5 3 1 2. - 1 - <_> - - <_> - 4 5 2 3 -1. - <_> - 4 5 1 3 2. - 1 - <_> - - <_> - 11 2 1 16 -1. - <_> - 11 10 1 8 2. - <_> - - <_> - 3 6 10 8 -1. - <_> - 3 8 10 4 2. - <_> - - <_> - 10 6 2 9 -1. - <_> - 10 9 2 3 3. - <_> - - <_> - 7 9 4 7 -1. - <_> - 8 10 2 7 2. - 1 - <_> - - <_> - 16 8 6 6 -1. - <_> - 14 10 6 2 3. - 1 - <_> - - <_> - 6 8 6 6 -1. - <_> - 8 10 2 6 3. - 1 - <_> - - <_> - 17 13 2 1 -1. - <_> - 17 13 1 1 2. - <_> - - <_> - 1 16 7 2 -1. - <_> - 1 17 7 1 2. - <_> - - <_> - 16 15 4 4 -1. - <_> - 16 17 4 2 2. - <_> - - <_> - 2 15 4 4 -1. - <_> - 2 17 4 2 2. - <_> - - <_> - 17 10 2 9 -1. - <_> - 17 13 2 3 3. - <_> - - <_> - 3 13 2 1 -1. - <_> - 4 13 1 1 2. - <_> - - <_> - 5 6 15 12 -1. - <_> - 5 12 15 6 2. - <_> - - <_> - 11 6 10 4 -1. - <_> - 11 6 5 4 2. - 1 - <_> - - <_> - 11 7 1 6 -1. - <_> - 11 7 1 3 2. - 1 - <_> - - <_> - 3 8 6 12 -1. - <_> - 3 12 6 4 3. - <_> - - <_> - 16 2 4 10 -1. - <_> - 16 2 4 5 2. - 1 - <_> - - <_> - 6 2 10 4 -1. - <_> - 6 2 5 4 2. - 1 - <_> - - <_> - 11 12 5 6 -1. - <_> - 11 15 5 3 2. - <_> - - <_> - 10 8 2 2 -1. - <_> - 10 8 1 2 2. - 1 - <_> - - <_> - 8 2 6 15 -1. - <_> - 10 7 2 5 9. - <_> - - <_> - 7 6 3 6 -1. - <_> - 8 8 1 2 9. - <_> - - <_> - 11 6 3 3 -1. - <_> - 12 7 1 1 9. - <_> - - <_> - 6 1 9 3 -1. - <_> - 5 2 9 1 3. - 1 - <_> - - <_> - 11 1 4 11 -1. - <_> - 12 2 2 11 2. - 1 - <_> - - <_> - 8 7 6 6 -1. - <_> - 8 7 3 3 2. - <_> - 11 10 3 3 2. - <_> - - <_> - 11 3 4 4 -1. - <_> - 13 3 2 2 2. - <_> - 11 5 2 2 2. - <_> - - <_> - 4 7 4 4 -1. - <_> - 6 7 2 4 2. - <_> - - <_> - 8 1 6 14 -1. - <_> - 8 1 3 14 2. - <_> - - <_> - 9 0 4 10 -1. - <_> - 10 0 2 10 2. - <_> - - <_> - 11 5 1 4 -1. - <_> - 11 5 1 2 2. - 1 - <_> - - <_> - 11 5 4 1 -1. - <_> - 11 5 2 1 2. - 1 - <_> - - <_> - 11 5 4 3 -1. - <_> - 11 5 2 3 2. - <_> - - <_> - 5 6 1 2 -1. - <_> - 5 7 1 1 2. - <_> - - <_> - 16 5 1 3 -1. - <_> - 16 6 1 1 3. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 5 1 1 3. - <_> - - <_> - 11 5 4 3 -1. - <_> - 11 5 2 3 2. - <_> - - <_> - 7 5 4 3 -1. - <_> - 9 5 2 3 2. - <_> - - <_> - 8 1 6 14 -1. - <_> - 10 1 2 14 3. - <_> - - <_> - 8 4 1 4 -1. - <_> - 8 5 1 2 2. - <_> - - <_> - 12 7 2 4 -1. - <_> - 13 7 1 2 2. - <_> - 12 9 1 2 2. - <_> - - <_> - 8 7 2 4 -1. - <_> - 8 7 1 2 2. - <_> - 9 9 1 2 2. - <_> - - <_> - 13 6 1 2 -1. - <_> - 13 7 1 1 2. - <_> - - <_> - 8 6 1 2 -1. - <_> - 8 7 1 1 2. - <_> - - <_> - 11 6 3 2 -1. - <_> - 11 7 3 1 2. - <_> - - <_> - 8 6 3 2 -1. - <_> - 8 7 3 1 2. - <_> - - <_> - 9 5 4 3 -1. - <_> - 9 6 4 1 3. - <_> - - <_> - 10 4 2 6 -1. - <_> - 10 6 2 2 3. - <_> - - <_> - 13 1 3 9 -1. - <_> - 14 2 1 9 3. - 1 - <_> - - <_> - 9 1 9 3 -1. - <_> - 8 2 9 1 3. - 1 - <_> - - <_> - 11 0 4 11 -1. - <_> - 12 1 2 11 2. - 1 - <_> - - <_> - 11 0 11 4 -1. - <_> - 10 1 11 2 2. - 1 - <_> - - <_> - 8 3 8 3 -1. - <_> - 8 4 8 1 3. - <_> - - <_> - 9 1 4 8 -1. - <_> - 9 1 2 4 2. - <_> - 11 5 2 4 2. - <_> - - <_> - 8 0 12 2 -1. - <_> - 11 0 6 2 2. - <_> - - <_> - 5 5 1 12 -1. - <_> - 5 8 1 6 2. - <_> - - <_> - 8 2 6 6 -1. - <_> - 10 4 2 2 9. - <_> - - <_> - 21 0 1 3 -1. - <_> - 21 1 1 1 3. - <_> - - <_> - 5 1 12 3 -1. - <_> - 9 2 4 1 9. - <_> - - <_> - 11 0 9 14 -1. - <_> - 14 0 3 14 3. - <_> - - <_> - 8 4 2 2 -1. - <_> - 9 4 1 2 2. - <_> - - <_> - 12 3 6 10 -1. - <_> - 12 3 6 5 2. - 1 - <_> - - <_> - 9 8 1 2 -1. - <_> - 9 9 1 1 2. - <_> - - <_> - 14 0 3 3 -1. - <_> - 13 1 3 1 3. - 1 - <_> - - <_> - 5 0 12 10 -1. - <_> - 9 0 4 10 3. - <_> - - <_> - 11 9 3 1 -1. - <_> - 12 9 1 1 3. - <_> - - <_> - 9 1 4 6 -1. - <_> - 9 3 4 2 3. - <_> - - <_> - 8 7 6 3 -1. - <_> - 10 7 2 3 3. - <_> - - <_> - 9 6 4 1 -1. - <_> - 10 6 2 1 2. - <_> - - <_> - 10 5 4 8 -1. - <_> - 10 7 4 4 2. - <_> - - <_> - 11 0 6 1 -1. - <_> - 11 0 3 1 2. - 1 - <_> - - <_> - 13 5 3 3 -1. - <_> - 14 5 1 3 3. - <_> - - <_> - 10 0 12 1 -1. - <_> - 14 4 4 1 3. - 1 - <_> - - <_> - 3 7 16 12 -1. - <_> - 3 13 16 6 2. - <_> - - <_> - 2 6 5 12 -1. - <_> - 2 9 5 6 2. - <_> - - <_> - 11 13 4 3 -1. - <_> - 12 14 2 3 2. - 1 - <_> - - <_> - 2 4 6 16 -1. - <_> - 2 12 6 8 2. - <_> - - <_> - 11 9 3 1 -1. - <_> - 12 9 1 1 3. - <_> - - <_> - 9 9 2 1 -1. - <_> - 10 9 1 1 2. - <_> - - <_> - 11 9 4 2 -1. - <_> - 11 9 2 2 2. - <_> - - <_> - 3 3 1 3 -1. - <_> - 3 4 1 1 3. - <_> - - <_> - 13 6 3 1 -1. - <_> - 14 6 1 1 3. - <_> - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - <_> - - <_> - 18 3 1 3 -1. - <_> - 18 4 1 1 3. - <_> - - <_> - 11 7 1 2 -1. - <_> - 11 7 1 1 2. - 1 - <_> - - <_> - 18 3 1 3 -1. - <_> - 18 4 1 1 3. - <_> - - <_> - 10 0 3 3 -1. - <_> - 11 1 1 3 3. - 1 - <_> - - <_> - 12 0 6 3 -1. - <_> - 11 1 6 1 3. - 1 - <_> - - <_> - 5 0 10 6 -1. - <_> - 5 2 10 2 3. - <_> - - <_> - 13 0 6 10 -1. - <_> - 13 5 6 5 2. - <_> - - <_> - 6 5 10 4 -1. - <_> - 6 7 10 2 2. - <_> - - <_> - 10 4 2 4 -1. - <_> - 10 6 2 2 2. - <_> - - <_> - 3 0 6 10 -1. - <_> - 3 5 6 5 2. - <_> - - <_> - 12 7 1 3 -1. - <_> - 12 8 1 1 3. - <_> - - <_> - 10 0 1 2 -1. - <_> - 10 0 1 1 2. - 1 - <_> - - <_> - 11 9 4 2 -1. - <_> - 11 9 2 2 2. - <_> - - <_> - 7 9 4 2 -1. - <_> - 9 9 2 2 2. - <_> - - <_> - 9 4 4 2 -1. - <_> - 10 4 2 2 2. - <_> - - <_> - 5 17 1 2 -1. - <_> - 5 18 1 1 2. - <_> - - <_> - 8 3 7 9 -1. - <_> - 8 6 7 3 3. - <_> - - <_> - 6 6 3 3 -1. - <_> - 7 6 1 3 3. - <_> - - <_> - 8 6 9 3 -1. - <_> - 8 7 9 1 3. - <_> - - <_> - 9 6 1 3 -1. - <_> - 9 7 1 1 3. - <_> - - <_> - 8 8 6 2 -1. - <_> - 11 8 3 1 2. - <_> - 8 9 3 1 2. - <_> - - <_> - 9 7 2 2 -1. - <_> - 9 8 2 1 2. - <_> - - <_> - 15 17 3 3 -1. - <_> - 15 18 3 1 3. - <_> - - <_> - 8 10 4 6 -1. - <_> - 9 11 2 6 2. - 1 - <_> - - <_> - 4 6 16 8 -1. - <_> - 4 8 16 4 2. - <_> - - <_> - 8 17 1 3 -1. - <_> - 8 18 1 1 3. - <_> - - <_> - 13 17 1 3 -1. - <_> - 13 18 1 1 3. - <_> - - <_> - 8 17 1 3 -1. - <_> - 8 18 1 1 3. - <_> - - <_> - 12 5 1 3 -1. - <_> - 12 6 1 1 3. - <_> - - <_> - 9 5 1 3 -1. - <_> - 9 6 1 1 3. - <_> - - <_> - 13 3 1 3 -1. - <_> - 13 4 1 1 3. - <_> - - <_> - 8 4 6 2 -1. - <_> - 8 4 3 1 2. - <_> - 11 5 3 1 2. - <_> - - <_> - 5 0 16 16 -1. - <_> - 5 8 16 8 2. - <_> - - <_> - 2 0 12 10 -1. - <_> - 2 0 6 5 2. - <_> - 8 5 6 5 2. - <_> - - <_> - 1 5 21 12 -1. - <_> - 8 9 7 4 9. - <_> - - <_> - 1 5 20 15 -1. - <_> - 6 5 10 15 2. - <_> - - <_> - 12 5 3 5 -1. - <_> - 13 6 1 5 3. - 1 - <_> - - <_> - 11 3 6 6 -1. - <_> - 13 5 2 6 3. - 1 - <_> - - <_> - 10 10 2 3 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 10 10 1 3 -1. - <_> - 10 11 1 1 3. - <_> - - <_> - 17 0 3 10 -1. - <_> - 18 1 1 10 3. - 1 - <_> - - <_> - 9 7 5 3 -1. - <_> - 8 8 5 1 3. - 1 - <_> - - <_> - 5 7 12 3 -1. - <_> - 9 8 4 1 9. - <_> - - <_> - 10 5 5 3 -1. - <_> - 9 6 5 1 3. - 1 - <_> - - <_> - 12 10 2 2 -1. - <_> - 13 10 1 1 2. - <_> - 12 11 1 1 2. - <_> - - <_> - 8 15 2 2 -1. - <_> - 8 16 2 1 2. - <_> - - <_> - 8 9 6 2 -1. - <_> - 11 9 3 1 2. - <_> - 8 10 3 1 2. - <_> - - <_> - 8 10 2 2 -1. - <_> - 8 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 12 10 2 2 -1. - <_> - 13 10 1 1 2. - <_> - 12 11 1 1 2. - <_> - - <_> - 8 9 6 2 -1. - <_> - 8 9 3 1 2. - <_> - 11 10 3 1 2. - <_> - - <_> - 16 18 6 2 -1. - <_> - 18 18 2 2 3. - <_> - - <_> - 6 0 2 1 -1. - <_> - 7 0 1 1 2. - <_> - - <_> - 16 18 6 2 -1. - <_> - 18 18 2 2 3. - <_> - - <_> - 5 15 6 4 -1. - <_> - 5 16 6 2 2. - <_> - - <_> - 16 18 6 2 -1. - <_> - 18 18 2 2 3. - <_> - - <_> - 8 10 2 2 -1. - <_> - 8 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 18 3 1 3 -1. - <_> - 18 4 1 1 3. - <_> - - <_> - 3 3 1 3 -1. - <_> - 3 4 1 1 3. - <_> - - <_> - 16 18 6 2 -1. - <_> - 18 18 2 2 3. - <_> - - <_> - 0 18 6 2 -1. - <_> - 2 18 2 2 3. - <_> - - <_> - 16 18 6 2 -1. - <_> - 18 18 2 2 3. - <_> - - <_> - 0 18 6 2 -1. - <_> - 2 18 2 2 3. - <_> - - <_> - 12 9 3 3 -1. - <_> - 13 10 1 1 9. - <_> - - <_> - 7 9 3 3 -1. - <_> - 8 10 1 1 9. - <_> - - <_> - 11 11 1 6 -1. - <_> - 11 11 1 3 2. - 1 - <_> - - <_> - 6 15 4 1 -1. - <_> - 6 15 2 1 2. - 1 - <_> - - <_> - 13 8 7 9 -1. - <_> - 13 11 7 3 3. - <_> - - <_> - 10 14 1 2 -1. - <_> - 10 15 1 1 2. - <_> - - <_> - 11 12 4 6 -1. - <_> - 13 12 2 3 2. - <_> - 11 15 2 3 2. - <_> - - <_> - 5 15 12 5 -1. - <_> - 11 15 6 5 2. - <_> - - <_> - 11 12 4 6 -1. - <_> - 13 12 2 3 2. - <_> - 11 15 2 3 2. - <_> - - <_> - 7 12 4 6 -1. - <_> - 7 12 2 3 2. - <_> - 9 15 2 3 2. - <_> - - <_> - 7 16 8 3 -1. - <_> - 7 16 4 3 2. - <_> - - <_> - 10 13 1 2 -1. - <_> - 10 14 1 1 2. - <_> - - <_> - 10 12 5 3 -1. - <_> - 10 13 5 1 3. - <_> - - <_> - 9 0 4 2 -1. - <_> - 9 1 4 1 2. - <_> - - <_> - 17 10 3 3 -1. - <_> - 18 10 1 3 3. - <_> - - <_> - 0 0 12 4 -1. - <_> - 0 0 6 2 2. - <_> - 6 2 6 2 2. - <_> - - <_> - 21 0 1 2 -1. - <_> - 21 1 1 1 2. - <_> - - <_> - 7 0 4 1 -1. - <_> - 7 0 2 1 2. - 1 - <_> - - <_> - 1 5 21 12 -1. - <_> - 8 9 7 4 9. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 7 1 8 14 -1. - <_> - 7 1 4 14 2. - <_> - - <_> - 2 10 3 3 -1. - <_> - 3 10 1 3 3. - <_> - - <_> - 8 7 6 1 -1. - <_> - 10 7 2 1 3. - <_> - - <_> - 9 4 3 9 -1. - <_> - 10 7 1 3 9. - <_> - - <_> - 15 8 6 3 -1. - <_> - 14 9 6 1 3. - 1 - <_> - - <_> - 10 3 1 6 -1. - <_> - 10 5 1 2 3. - <_> - - <_> - 12 1 1 4 -1. - <_> - 11 2 1 2 2. - 1 - <_> - - <_> - 9 1 4 9 -1. - <_> - 9 4 4 3 3. - <_> - - <_> - 8 0 6 4 -1. - <_> - 8 1 6 2 2. - <_> - - <_> - 10 8 1 4 -1. - <_> - 10 10 1 2 2. - <_> - - <_> - 12 0 3 2 -1. - <_> - 13 1 1 2 3. - 1 - <_> - - <_> - 10 0 2 3 -1. - <_> - 9 1 2 1 3. - 1 - <_> - - <_> - 12 10 3 3 -1. - <_> - 13 11 1 3 3. - 1 - <_> - - <_> - 7 12 5 3 -1. - <_> - 7 13 5 1 3. - <_> - - <_> - 12 10 3 3 -1. - <_> - 13 11 1 3 3. - 1 - <_> - - <_> - 10 10 3 3 -1. - <_> - 9 11 3 1 3. - 1 - <_> - - <_> - 11 1 3 4 -1. - <_> - 12 1 1 4 3. - <_> - - <_> - 6 8 8 11 -1. - <_> - 8 8 4 11 2. - <_> - - <_> - 5 6 12 6 -1. - <_> - 9 6 4 6 3. - <_> - - <_> - 8 1 3 4 -1. - <_> - 9 1 1 4 3. - <_> - - <_> - 15 8 6 3 -1. - <_> - 14 9 6 1 3. - 1 - <_> - - <_> - 9 6 8 6 -1. - <_> - 7 8 8 2 3. - 1 - <_> - - <_> - 15 8 6 3 -1. - <_> - 14 9 6 1 3. - 1 - <_> - - <_> - 7 8 3 6 -1. - <_> - 8 9 1 6 3. - 1 - <_> - - <_> - 21 0 1 2 -1. - <_> - 21 1 1 1 2. - <_> - - <_> - 0 11 20 3 -1. - <_> - 0 12 20 1 3. - <_> - - <_> - 0 3 22 1 -1. - <_> - 0 3 11 1 2. - <_> - - <_> - 0 7 14 12 -1. - <_> - 0 13 14 6 2. - <_> - - <_> - 16 4 4 3 -1. - <_> - 15 5 4 1 3. - 1 - <_> - - <_> - 6 4 3 4 -1. - <_> - 7 5 1 4 3. - 1 - <_> - - <_> - 9 4 8 2 -1. - <_> - 13 4 4 1 2. - <_> - 9 5 4 1 2. - <_> - - <_> - 5 4 8 2 -1. - <_> - 5 4 4 1 2. - <_> - 9 5 4 1 2. - <_> - - <_> - 12 3 4 3 -1. - <_> - 12 4 4 1 3. - <_> - - <_> - 6 3 4 3 -1. - <_> - 6 4 4 1 3. - <_> - - <_> - 4 5 15 3 -1. - <_> - 9 6 5 1 9. - <_> - - <_> - 0 5 21 12 -1. - <_> - 7 9 7 4 9. - <_> - - <_> - 13 0 2 6 -1. - <_> - 14 0 1 3 2. - <_> - 13 3 1 3 2. - <_> - - <_> - 3 7 16 2 -1. - <_> - 7 7 8 2 2. - <_> - - <_> - 14 4 5 9 -1. - <_> - 14 7 5 3 3. - <_> - - <_> - 3 4 5 9 -1. - <_> - 3 7 5 3 3. - <_> - - <_> - 9 3 7 9 -1. - <_> - 9 6 7 3 3. - <_> - - <_> - 11 4 2 1 -1. - <_> - 11 4 1 1 2. - 1 - <_> - - <_> - 8 4 6 2 -1. - <_> - 11 4 3 1 2. - <_> - 8 5 3 1 2. - <_> - - <_> - 8 8 2 4 -1. - <_> - 8 8 1 2 2. - <_> - 9 10 1 2 2. - <_> - - <_> - 10 4 3 6 -1. - <_> - 11 6 1 2 9. - <_> - - <_> - 8 1 6 15 -1. - <_> - 11 1 3 15 2. - <_> - - <_> - 10 9 2 6 -1. - <_> - 10 9 1 6 2. - <_> - - <_> - 9 9 1 2 -1. - <_> - 9 10 1 1 2. - <_> - - <_> - 21 0 1 2 -1. - <_> - 21 1 1 1 2. - <_> - - <_> - 7 8 2 1 -1. - <_> - 8 8 1 1 2. - <_> - - <_> - 16 15 1 2 -1. - <_> - 16 16 1 1 2. - <_> - - <_> - 5 5 2 14 -1. - <_> - 5 12 2 7 2. - <_> - - <_> - 10 15 12 2 -1. - <_> - 13 15 6 2 2. - <_> - - <_> - 0 15 12 2 -1. - <_> - 3 15 6 2 2. - <_> - - <_> - 16 15 1 2 -1. - <_> - 16 16 1 1 2. - <_> - - <_> - 11 15 1 2 -1. - <_> - 11 15 1 1 2. - 1 - <_> - - <_> - 15 0 4 2 -1. - <_> - 17 0 2 1 2. - <_> - 15 1 2 1 2. - <_> - - <_> - 7 13 8 7 -1. - <_> - 11 13 4 7 2. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 9 6 2 3 -1. - <_> - 9 7 2 1 3. - <_> - - <_> - 16 0 2 4 -1. - <_> - 17 0 1 2 2. - <_> - 16 2 1 2 2. - <_> - - <_> - 10 4 1 3 -1. - <_> - 10 5 1 1 3. - <_> - - <_> - 16 18 2 2 -1. - <_> - 16 19 2 1 2. - <_> - - <_> - 8 5 1 3 -1. - <_> - 8 6 1 1 3. - <_> - - <_> - 9 3 4 4 -1. - <_> - 9 4 4 2 2. - <_> - - <_> - 11 5 3 1 -1. - <_> - 12 6 1 1 3. - 1 - <_> - - <_> - 7 11 12 1 -1. - <_> - 10 11 6 1 2. - <_> - - <_> - 3 11 12 1 -1. - <_> - 6 11 6 1 2. - <_> - - <_> - 7 9 14 4 -1. - <_> - 7 9 7 4 2. - <_> - - <_> - 7 11 3 1 -1. - <_> - 8 11 1 1 3. - <_> - - <_> - 17 0 3 10 -1. - <_> - 18 1 1 10 3. - 1 - <_> - - <_> - 10 7 4 1 -1. - <_> - 11 8 2 1 2. - 1 - <_> - - <_> - 8 8 6 3 -1. - <_> - 8 9 6 1 3. - <_> - - <_> - 10 10 2 1 -1. - <_> - 10 10 1 1 2. - 1 - <_> - - <_> - 11 11 2 8 -1. - <_> - 11 11 1 8 2. - <_> - - <_> - 9 12 4 6 -1. - <_> - 10 12 2 6 2. - <_> - - <_> - 13 0 6 4 -1. - <_> - 13 0 3 4 2. - 1 - <_> - - <_> - 1 9 14 4 -1. - <_> - 8 9 7 4 2. - <_> - - <_> - 11 5 6 9 -1. - <_> - 13 7 2 9 3. - 1 - <_> - - <_> - 4 0 2 4 -1. - <_> - 4 0 1 2 2. - <_> - 5 2 1 2 2. - <_> - - <_> - 12 4 6 10 -1. - <_> - 14 6 2 10 3. - 1 - <_> - - <_> - 10 4 10 6 -1. - <_> - 8 6 10 2 3. - 1 - <_> - - <_> - 12 5 2 4 -1. - <_> - 12 5 1 4 2. - 1 - <_> - - <_> - 9 5 6 2 -1. - <_> - 9 5 3 2 2. - 1 - <_> - - <_> - 11 1 4 3 -1. - <_> - 10 2 4 1 3. - 1 - <_> - - <_> - 11 1 3 4 -1. - <_> - 12 2 1 4 3. - 1 - <_> - - <_> - 8 3 6 2 -1. - <_> - 11 3 3 1 2. - <_> - 8 4 3 1 2. - <_> - - <_> - 5 0 10 3 -1. - <_> - 4 1 10 1 3. - 1 - <_> - - <_> - 21 9 1 4 -1. - <_> - 21 11 1 2 2. - <_> - - <_> - 0 9 1 4 -1. - <_> - 0 11 1 2 2. - <_> - - <_> - 16 18 2 2 -1. - <_> - 16 19 2 1 2. - <_> - - <_> - 1 7 12 2 -1. - <_> - 1 7 6 1 2. - <_> - 7 8 6 1 2. - <_> - - <_> - 13 7 1 4 -1. - <_> - 13 8 1 2 2. - <_> - - <_> - 8 7 1 4 -1. - <_> - 8 8 1 2 2. - <_> - - <_> - 13 0 2 4 -1. - <_> - 14 0 1 2 2. - <_> - 13 2 1 2 2. - <_> - - <_> - 4 18 2 2 -1. - <_> - 4 19 2 1 2. - <_> - - <_> - 15 19 3 1 -1. - <_> - 16 19 1 1 3. - <_> - - <_> - 5 18 1 2 -1. - <_> - 5 19 1 1 2. - <_> - - <_> - 15 18 1 2 -1. - <_> - 15 19 1 1 2. - <_> - - <_> - 6 18 1 2 -1. - <_> - 6 19 1 1 2. - <_> - - <_> - 18 19 3 1 -1. - <_> - 19 19 1 1 3. - <_> - - <_> - 9 3 1 3 -1. - <_> - 9 4 1 1 3. - <_> - - <_> - 14 0 3 3 -1. - <_> - 13 1 3 1 3. - 1 - <_> - - <_> - 0 0 6 2 -1. - <_> - 0 0 3 1 2. - <_> - 3 1 3 1 2. - <_> - - <_> - 12 4 1 3 -1. - <_> - 12 5 1 1 3. - <_> - - <_> - 10 4 1 6 -1. - <_> - 10 6 1 2 3. - <_> - - <_> - 7 4 10 4 -1. - <_> - 7 4 5 4 2. - <_> - - <_> - 11 2 9 1 -1. - <_> - 14 5 3 1 3. - 1 - <_> - - <_> - 0 2 22 14 -1. - <_> - 0 2 11 14 2. - <_> - - <_> - 1 19 3 1 -1. - <_> - 2 19 1 1 3. - <_> - - <_> - 18 17 3 3 -1. - <_> - 19 17 1 3 3. - <_> - - <_> - 1 17 3 3 -1. - <_> - 2 17 1 3 3. - <_> - - <_> - 15 4 1 6 -1. - <_> - 15 6 1 2 3. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 6 1 1 3. - 1 - <_> - - <_> - 12 4 1 3 -1. - <_> - 12 5 1 1 3. - <_> - - <_> - 9 4 1 3 -1. - <_> - 9 5 1 1 3. - <_> - - <_> - 16 1 1 4 -1. - <_> - 16 2 1 2 2. - <_> - - <_> - 5 1 1 4 -1. - <_> - 5 2 1 2 2. - <_> - - <_> - 18 16 3 2 -1. - <_> - 19 16 1 2 3. - <_> - - <_> - 3 9 2 2 -1. - <_> - 3 9 1 1 2. - <_> - 4 10 1 1 2. - <_> - - <_> - 12 3 2 8 -1. - <_> - 13 3 1 4 2. - <_> - 12 7 1 4 2. - <_> - - <_> - 8 0 3 3 -1. - <_> - 9 0 1 3 3. - <_> - - <_> - 13 2 3 1 -1. - <_> - 14 2 1 1 3. - <_> - - <_> - 10 1 2 4 -1. - <_> - 10 1 1 2 2. - <_> - 11 3 1 2 2. - <_> - - <_> - 15 1 2 3 -1. - <_> - 14 2 2 1 3. - 1 - <_> - - <_> - 7 0 7 6 -1. - <_> - 7 2 7 2 3. - <_> - - <_> - 8 0 6 6 -1. - <_> - 10 2 2 2 9. - <_> - - <_> - 7 1 3 2 -1. - <_> - 8 2 1 2 3. - 1 - <_> - - <_> - 8 2 8 8 -1. - <_> - 8 4 8 4 2. - <_> - - <_> - 9 4 3 1 -1. - <_> - 10 4 1 1 3. - <_> - - <_> - 11 11 4 2 -1. - <_> - 13 11 2 1 2. - <_> - 11 12 2 1 2. - <_> - - <_> - 8 14 6 1 -1. - <_> - 10 14 2 1 3. - <_> - - <_> - 11 0 5 6 -1. - <_> - 11 0 5 3 2. - 1 - <_> - - <_> - 3 15 12 2 -1. - <_> - 3 15 6 1 2. - <_> - 9 16 6 1 2. - <_> - - <_> - 7 4 10 4 -1. - <_> - 7 4 5 4 2. - <_> - - <_> - 4 2 9 12 -1. - <_> - 7 6 3 4 9. - <_> - - <_> - 14 2 2 4 -1. - <_> - 15 2 1 2 2. - <_> - 14 4 1 2 2. - <_> - - <_> - 6 2 2 4 -1. - <_> - 6 2 1 2 2. - <_> - 7 4 1 2 2. - <_> - - <_> - 11 0 5 6 -1. - <_> - 11 0 5 3 2. - 1 - <_> - - <_> - 5 4 10 4 -1. - <_> - 10 4 5 4 2. - <_> - - <_> - 16 15 2 2 -1. - <_> - 17 15 1 1 2. - <_> - 16 16 1 1 2. - <_> - - <_> - 4 15 2 2 -1. - <_> - 4 15 1 1 2. - <_> - 5 16 1 1 2. - <_> - - <_> - 16 15 1 2 -1. - <_> - 16 16 1 1 2. - <_> - - <_> - 5 15 1 2 -1. - <_> - 5 16 1 1 2. - <_> - - <_> - 20 6 2 12 -1. - <_> - 20 6 2 6 2. - 1 - <_> - - <_> - 3 12 3 6 -1. - <_> - 3 14 3 2 3. - <_> - - <_> - 2 10 18 4 -1. - <_> - 11 10 9 2 2. - <_> - 2 12 9 2 2. - <_> - - <_> - 1 0 14 8 -1. - <_> - 8 0 7 8 2. - <_> - - <_> - 8 6 14 14 -1. - <_> - 8 13 14 7 2. - <_> - - <_> - 6 4 10 16 -1. - <_> - 6 12 10 8 2. - <_> - - <_> - 8 6 14 14 -1. - <_> - 8 13 14 7 2. - <_> - - <_> - 2 6 4 1 -1. - <_> - 2 6 2 1 2. - 1 - <_> - - <_> - 7 3 12 15 -1. - <_> - 7 8 12 5 3. - <_> - - <_> - 0 8 20 9 -1. - <_> - 10 8 10 9 2. - <_> - - <_> - 11 5 3 6 -1. - <_> - 11 8 3 3 2. - <_> - - <_> - 0 12 1 6 -1. - <_> - 0 14 1 2 3. - <_> - - <_> - 13 5 3 1 -1. - <_> - 14 5 1 1 3. - <_> - - <_> - 5 0 6 1 -1. - <_> - 7 0 2 1 3. - <_> - - <_> - 12 1 2 2 -1. - <_> - 13 1 1 1 2. - <_> - 12 2 1 1 2. - <_> - - <_> - 8 1 2 2 -1. - <_> - 8 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 13 0 2 6 -1. - <_> - 14 0 1 3 2. - <_> - 13 3 1 3 2. - <_> - - <_> - 7 0 2 6 -1. - <_> - 7 0 1 3 2. - <_> - 8 3 1 3 2. - <_> - - <_> - 12 1 4 2 -1. - <_> - 13 2 2 2 2. - 1 - <_> - - <_> - 7 2 3 6 -1. - <_> - 8 4 1 2 9. - <_> - - <_> - 14 7 7 6 -1. - <_> - 12 9 7 2 3. - 1 - <_> - - <_> - 8 7 6 7 -1. - <_> - 10 9 2 7 3. - 1 - <_> - - <_> - 14 9 7 4 -1. - <_> - 13 10 7 2 2. - 1 - <_> - - <_> - 8 9 4 7 -1. - <_> - 9 10 2 7 2. - 1 - <_> - - <_> - 13 5 1 2 -1. - <_> - 13 6 1 1 2. - <_> - - <_> - 6 10 2 2 -1. - <_> - 6 10 1 1 2. - <_> - 7 11 1 1 2. - <_> - - <_> - 10 0 3 4 -1. - <_> - 11 1 1 4 3. - 1 - <_> - - <_> - 11 0 4 4 -1. - <_> - 12 1 2 4 2. - 1 - <_> - - <_> - 9 3 4 4 -1. - <_> - 9 4 4 2 2. - <_> - - <_> - 8 16 6 3 -1. - <_> - 8 17 6 1 3. - <_> - - <_> - 9 5 4 2 -1. - <_> - 10 5 2 2 2. - <_> - - <_> - 9 8 4 1 -1. - <_> - 10 8 2 1 2. - <_> - - <_> - 11 5 2 2 -1. - <_> - 11 5 1 2 2. - 1 - <_> - - <_> - 9 12 10 1 -1. - <_> - 9 12 5 1 2. - <_> - - <_> - 0 1 12 6 -1. - <_> - 4 3 4 2 9. - <_> - - <_> - 3 2 16 12 -1. - <_> - 7 2 8 12 2. - <_> - - <_> - 9 4 3 1 -1. - <_> - 10 5 1 1 3. - 1 - <_> - - <_> - 17 0 4 2 -1. - <_> - 19 0 2 1 2. - <_> - 17 1 2 1 2. - <_> - - <_> - 9 6 4 4 -1. - <_> - 9 7 4 2 2. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 9 7 4 3 -1. - <_> - 9 8 4 1 3. - <_> - - <_> - 12 2 3 6 -1. - <_> - 12 5 3 3 2. - <_> - - <_> - 1 0 4 2 -1. - <_> - 1 0 2 1 2. - <_> - 3 1 2 1 2. - <_> - - <_> - 17 0 4 2 -1. - <_> - 19 0 2 1 2. - <_> - 17 1 2 1 2. - <_> - - <_> - 0 5 18 12 -1. - <_> - 0 9 18 4 3. - <_> - - <_> - 5 6 12 14 -1. - <_> - 5 13 12 7 2. - <_> - - <_> - 1 0 4 2 -1. - <_> - 1 0 2 1 2. - <_> - 3 1 2 1 2. - <_> - - <_> - 11 5 3 6 -1. - <_> - 11 8 3 3 2. - <_> - - <_> - 11 0 5 2 -1. - <_> - 11 0 5 1 2. - 1 - <_> - - <_> - 7 0 9 6 -1. - <_> - 10 0 3 6 3. - <_> - - <_> - 9 4 4 6 -1. - <_> - 9 4 2 3 2. - <_> - 11 7 2 3 2. - <_> - - <_> - 13 4 2 1 -1. - <_> - 13 4 1 1 2. - 1 - <_> - - <_> - 9 10 2 2 -1. - <_> - 9 10 1 1 2. - <_> - 10 11 1 1 2. - <_> - - <_> - 11 12 1 4 -1. - <_> - 11 14 1 2 2. - <_> - - <_> - 11 4 3 3 -1. - <_> - 10 5 3 1 3. - 1 - <_> - - <_> - 9 0 4 8 -1. - <_> - 9 4 4 4 2. - <_> - - <_> - 0 1 21 18 -1. - <_> - 7 7 7 6 9. - <_> - - <_> - 7 3 8 4 -1. - <_> - 11 3 4 2 2. - <_> - 7 5 4 2 2. - <_> - - <_> - 10 0 3 6 -1. - <_> - 11 1 1 6 3. - 1 - <_> - - <_> - 12 2 2 2 -1. - <_> - 13 2 1 1 2. - <_> - 12 3 1 1 2. - <_> - - <_> - 8 2 2 2 -1. - <_> - 8 2 1 1 2. - <_> - 9 3 1 1 2. - <_> - - <_> - 10 1 2 4 -1. - <_> - 11 1 1 2 2. - <_> - 10 3 1 2 2. - <_> - - <_> - 9 1 3 1 -1. - <_> - 10 1 1 1 3. - <_> - - <_> - 12 6 1 3 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 10 7 2 2 -1. - <_> - 10 8 2 1 2. - <_> - - <_> - 11 6 1 4 -1. - <_> - 11 8 1 2 2. - <_> - - <_> - 9 6 4 4 -1. - <_> - 9 6 2 2 2. - <_> - 11 8 2 2 2. - <_> - - <_> - 12 6 2 4 -1. - <_> - 13 6 1 2 2. - <_> - 12 8 1 2 2. - <_> - - <_> - 11 5 4 3 -1. - <_> - 10 6 4 1 3. - 1 - <_> - - <_> - 11 11 3 1 -1. - <_> - 12 11 1 1 3. - <_> - - <_> - 8 1 6 6 -1. - <_> - 10 3 2 2 9. - <_> - - <_> - 10 3 2 4 -1. - <_> - 10 5 2 2 2. - <_> - - <_> - 8 7 6 3 -1. - <_> - 10 7 2 3 3. - <_> - - <_> - 7 9 8 8 -1. - <_> - 9 9 4 8 2. - <_> - - <_> - 8 2 3 9 -1. - <_> - 8 5 3 3 3. - <_> - - <_> - 11 11 3 1 -1. - <_> - 12 11 1 1 3. - <_> - - <_> - 8 16 1 4 -1. - <_> - 8 17 1 2 2. - <_> - - <_> - 11 11 3 1 -1. - <_> - 12 11 1 1 3. - <_> - - <_> - 0 3 8 2 -1. - <_> - 0 3 4 1 2. - <_> - 4 4 4 1 2. - <_> - - <_> - 11 11 3 1 -1. - <_> - 12 11 1 1 3. - <_> - - <_> - 8 11 3 1 -1. - <_> - 9 11 1 1 3. - <_> - - <_> - 12 10 1 2 -1. - <_> - 12 10 1 1 2. - 1 - <_> - - <_> - 10 10 2 1 -1. - <_> - 10 10 1 1 2. - 1 - <_> - - <_> - 9 7 6 5 -1. - <_> - 9 7 3 5 2. - <_> - - <_> - 7 7 6 5 -1. - <_> - 10 7 3 5 2. - <_> - - <_> - 12 7 3 2 -1. - <_> - 12 7 3 1 2. - 1 - <_> - - <_> - 10 7 2 3 -1. - <_> - 10 7 1 3 2. - 1 - <_> - - <_> - 11 4 2 3 -1. - <_> - 11 5 2 1 3. - <_> - - <_> - 8 9 6 5 -1. - <_> - 10 11 2 5 3. - 1 - <_> - - <_> - 15 8 6 2 -1. - <_> - 15 8 3 2 2. - <_> - - <_> - 1 17 1 3 -1. - <_> - 1 18 1 1 3. - <_> - - <_> - 18 17 3 1 -1. - <_> - 19 17 1 1 3. - <_> - - <_> - 1 17 3 1 -1. - <_> - 2 17 1 1 3. - <_> - - <_> - 20 17 1 3 -1. - <_> - 20 18 1 1 3. - <_> - - <_> - 1 17 1 3 -1. - <_> - 1 18 1 1 3. - <_> - - <_> - 18 17 3 1 -1. - <_> - 19 17 1 1 3. - <_> - - <_> - 1 8 6 2 -1. - <_> - 4 8 3 2 2. - <_> - - <_> - 18 17 3 1 -1. - <_> - 19 17 1 1 3. - <_> - - <_> - 9 1 4 9 -1. - <_> - 10 1 2 9 2. - <_> - - <_> - 18 17 3 1 -1. - <_> - 19 17 1 1 3. - <_> - - <_> - 1 17 3 1 -1. - <_> - 2 17 1 1 3. - <_> - - <_> - 15 15 2 1 -1. - <_> - 15 15 1 1 2. - 1 - <_> - - <_> - 3 8 6 9 -1. - <_> - 3 11 6 3 3. - <_> - - <_> - 7 8 12 4 -1. - <_> - 13 8 6 2 2. - <_> - 7 10 6 2 2. - <_> - - <_> - 3 6 14 8 -1. - <_> - 3 6 7 4 2. - <_> - 10 10 7 4 2. - <_> - - <_> - 12 1 2 2 -1. - <_> - 13 1 1 1 2. - <_> - 12 2 1 1 2. - <_> - - <_> - 6 4 1 2 -1. - <_> - 6 5 1 1 2. - <_> - - <_> - 15 15 2 1 -1. - <_> - 15 15 1 1 2. - 1 - <_> - - <_> - 11 1 5 2 -1. - <_> - 11 1 5 1 2. - 1 - <_> - - <_> - 11 7 1 6 -1. - <_> - 11 10 1 3 2. - <_> - - <_> - 7 15 1 2 -1. - <_> - 7 15 1 1 2. - 1 - <_> - - <_> - 12 1 2 2 -1. - <_> - 13 1 1 1 2. - <_> - 12 2 1 1 2. - <_> - - <_> - 8 1 2 2 -1. - <_> - 8 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 12 2 1 4 -1. - <_> - 11 3 1 2 2. - 1 - <_> - - <_> - 10 0 2 4 -1. - <_> - 10 0 1 2 2. - <_> - 11 2 1 2 2. - <_> - - <_> - 8 5 6 2 -1. - <_> - 8 5 3 2 2. - <_> - - <_> - 9 7 4 6 -1. - <_> - 9 7 2 3 2. - <_> - 11 10 2 3 2. - <_> - - <_> - 14 5 6 6 -1. - <_> - 16 7 2 6 3. - 1 - <_> - - <_> - 8 5 6 6 -1. - <_> - 6 7 6 2 3. - 1 - <_> - - <_> - 4 5 17 3 -1. - <_> - 4 6 17 1 3. - <_> - - <_> - 8 9 1 2 -1. - <_> - 8 10 1 1 2. - <_> - - <_> - 12 5 3 5 -1. - <_> - 13 5 1 5 3. - <_> - - <_> - 8 12 4 1 -1. - <_> - 9 12 2 1 2. - <_> - - <_> - 15 6 1 2 -1. - <_> - 15 7 1 1 2. - <_> - - <_> - 9 4 2 3 -1. - <_> - 9 5 2 1 3. - <_> - - <_> - 14 0 2 12 -1. - <_> - 14 6 2 6 2. - <_> - - <_> - 10 5 2 4 -1. - <_> - 10 6 2 2 2. - <_> - - <_> - 10 4 3 6 -1. - <_> - 11 6 1 2 9. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 5 1 1 3. - <_> - - <_> - 13 0 2 8 -1. - <_> - 14 0 1 4 2. - <_> - 13 4 1 4 2. - <_> - - <_> - 7 0 2 8 -1. - <_> - 7 0 1 4 2. - <_> - 8 4 1 4 2. - <_> - - <_> - 15 6 1 2 -1. - <_> - 15 7 1 1 2. - <_> - - <_> - 6 6 1 2 -1. - <_> - 6 7 1 1 2. - <_> - - <_> - 15 6 1 3 -1. - <_> - 15 7 1 1 3. - <_> - - <_> - 6 6 1 3 -1. - <_> - 6 7 1 1 3. - <_> - - <_> - 13 0 2 2 -1. - <_> - 13 0 1 2 2. - 1 - <_> - - <_> - 10 2 4 1 -1. - <_> - 11 3 2 1 2. - 1 - <_> - - <_> - 13 0 2 2 -1. - <_> - 13 0 1 2 2. - 1 - <_> - - <_> - 2 10 1 3 -1. - <_> - 2 11 1 1 3. - <_> - - <_> - 18 17 1 2 -1. - <_> - 18 18 1 1 2. - <_> - - <_> - 8 11 2 2 -1. - <_> - 8 11 1 1 2. - <_> - 9 12 1 1 2. - <_> - - <_> - 18 17 1 2 -1. - <_> - 18 18 1 1 2. - <_> - - <_> - 5 17 2 2 -1. - <_> - 5 17 1 1 2. - <_> - 6 18 1 1 2. - <_> - - <_> - 11 4 4 9 -1. - <_> - 11 4 2 9 2. - 1 - <_> - - <_> - 3 17 1 2 -1. - <_> - 3 18 1 1 2. - <_> - - <_> - 9 11 12 2 -1. - <_> - 9 12 12 1 2. - <_> - - <_> - 11 4 9 4 -1. - <_> - 11 4 9 2 2. - 1 - <_> - - <_> - 18 16 1 4 -1. - <_> - 18 18 1 2 2. - <_> - - <_> - 9 7 2 4 -1. - <_> - 9 7 1 2 2. - <_> - 10 9 1 2 2. - <_> - - <_> - 8 6 9 4 -1. - <_> - 8 8 9 2 2. - <_> - - <_> - 10 8 1 3 -1. - <_> - 10 9 1 1 3. - <_> - - <_> - 10 5 3 6 -1. - <_> - 10 7 3 2 3. - <_> - - <_> - 0 7 14 2 -1. - <_> - 0 7 7 1 2. - <_> - 7 8 7 1 2. - <_> - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - <_> - - <_> - 10 9 2 1 -1. - <_> - 10 9 1 1 2. - 1 - <_> - - <_> - 8 0 12 4 -1. - <_> - 14 0 6 2 2. - <_> - 8 2 6 2 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 2 1 2. - 1 - <_> - - <_> - 11 0 3 2 -1. - <_> - 12 1 1 2 3. - 1 - <_> - - <_> - 2 17 2 2 -1. - <_> - 2 18 2 1 2. - <_> - - <_> - 20 18 2 1 -1. - <_> - 20 18 1 1 2. - <_> - - <_> - 10 9 5 3 -1. - <_> - 9 10 5 1 3. - 1 - <_> - - <_> - 11 1 8 19 -1. - <_> - 13 1 4 19 2. - <_> - - <_> - 0 18 2 1 -1. - <_> - 1 18 1 1 2. - <_> - - <_> - 16 16 6 4 -1. - <_> - 18 16 2 4 3. - <_> - - <_> - 6 9 2 6 -1. - <_> - 6 9 2 3 2. - 1 - <_> - - <_> - 16 16 6 4 -1. - <_> - 18 16 2 4 3. - <_> - - <_> - 0 16 6 4 -1. - <_> - 2 16 2 4 3. - <_> - - <_> - 21 17 1 3 -1. - <_> - 21 18 1 1 3. - <_> - - <_> - 2 12 6 8 -1. - <_> - 2 12 3 4 2. - <_> - 5 16 3 4 2. - <_> - - <_> - 21 17 1 3 -1. - <_> - 21 18 1 1 3. - <_> - - <_> - 0 17 1 3 -1. - <_> - 0 18 1 1 3. - <_> - - <_> - 16 0 6 4 -1. - <_> - 15 1 6 2 2. - 1 - <_> - - <_> - 5 6 12 9 -1. - <_> - 9 9 4 3 9. - <_> - - <_> - 11 11 3 1 -1. - <_> - 12 11 1 1 3. - <_> - - <_> - 8 11 3 1 -1. - <_> - 9 11 1 1 3. - <_> - - <_> - 14 8 4 1 -1. - <_> - 15 8 2 1 2. - <_> - - <_> - 8 3 1 3 -1. - <_> - 8 4 1 1 3. - <_> - - <_> - 11 6 3 3 -1. - <_> - 12 7 1 1 9. - <_> - - <_> - 7 1 3 1 -1. - <_> - 8 2 1 1 3. - 1 - <_> - - <_> - 13 0 2 16 -1. - <_> - 13 0 1 16 2. - <_> - - <_> - 7 0 2 16 -1. - <_> - 8 0 1 16 2. - <_> - - <_> - 14 0 7 3 -1. - <_> - 13 1 7 1 3. - 1 - <_> - - <_> - 6 4 3 2 -1. - <_> - 6 5 3 1 2. - <_> - - <_> - 15 0 1 12 -1. - <_> - 15 6 1 6 2. - <_> - - <_> - 2 2 18 6 -1. - <_> - 2 2 9 3 2. - <_> - 11 5 9 3 2. - <_> - - <_> - 11 12 4 3 -1. - <_> - 11 12 2 3 2. - <_> - - <_> - 1 5 9 15 -1. - <_> - 4 10 3 5 9. - <_> - - <_> - 11 6 8 3 -1. - <_> - 10 7 8 1 3. - 1 - <_> - - <_> - 11 6 3 8 -1. - <_> - 12 7 1 8 3. - 1 - <_> - - <_> - 12 15 9 3 -1. - <_> - 12 16 9 1 3. - <_> - - <_> - 9 6 3 6 -1. - <_> - 9 8 3 2 3. - <_> - - <_> - 13 2 3 11 -1. - <_> - 14 3 1 11 3. - 1 - <_> - - <_> - 9 2 11 3 -1. - <_> - 8 3 11 1 3. - 1 - <_> - - <_> - 10 4 3 1 -1. - <_> - 11 4 1 1 3. - <_> - - <_> - 2 3 6 2 -1. - <_> - 2 3 3 1 2. - <_> - 5 4 3 1 2. - <_> - - <_> - 2 19 20 1 -1. - <_> - 7 19 10 1 2. - <_> - - <_> - 6 3 1 2 -1. - <_> - 6 4 1 1 2. - <_> - - <_> - 12 5 3 5 -1. - <_> - 13 5 1 5 3. - <_> - - <_> - 7 14 1 2 -1. - <_> - 7 14 1 1 2. - 1 - <_> - - <_> - 5 13 12 7 -1. - <_> - 5 13 6 7 2. - <_> - - <_> - 6 13 2 4 -1. - <_> - 6 13 1 2 2. - <_> - 7 15 1 2 2. - <_> - - <_> - 10 9 5 8 -1. - <_> - 10 11 5 4 2. - <_> - - <_> - 7 5 3 5 -1. - <_> - 8 5 1 5 3. - <_> - - <_> - 9 1 4 1 -1. - <_> - 10 1 2 1 2. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 5 1 1 3. - <_> - - <_> - 5 1 16 6 -1. - <_> - 13 1 8 3 2. - <_> - 5 4 8 3 2. - <_> - - <_> - 1 1 16 6 -1. - <_> - 1 1 8 3 2. - <_> - 9 4 8 3 2. - <_> - - <_> - 14 4 4 8 -1. - <_> - 15 4 2 8 2. - <_> - - <_> - 4 4 4 8 -1. - <_> - 5 4 2 8 2. - <_> - - <_> - 12 0 4 13 -1. - <_> - 13 0 2 13 2. - <_> - - <_> - 8 13 3 3 -1. - <_> - 9 14 1 1 9. - <_> - - <_> - 15 12 2 1 -1. - <_> - 15 12 1 1 2. - 1 - <_> - - <_> - 6 0 4 20 -1. - <_> - 7 0 2 20 2. - <_> - - <_> - 5 5 15 15 -1. - <_> - 5 10 15 5 3. - <_> - - <_> - 7 9 5 8 -1. - <_> - 7 11 5 4 2. - <_> - - <_> - 10 9 12 3 -1. - <_> - 10 9 6 3 2. - <_> - - <_> - 11 3 6 4 -1. - <_> - 10 4 6 2 2. - 1 - <_> - - <_> - 9 3 4 4 -1. - <_> - 9 5 4 2 2. - <_> - - <_> - 7 12 1 2 -1. - <_> - 7 12 1 1 2. - 1 - <_> - - <_> - 14 9 3 10 -1. - <_> - 14 14 3 5 2. - <_> - - <_> - 9 6 3 9 -1. - <_> - 10 9 1 3 9. - <_> - - <_> - 1 13 20 6 -1. - <_> - 1 16 20 3 2. - <_> - - <_> - 5 9 3 10 -1. - <_> - 5 14 3 5 2. - <_> - - <_> - 14 1 3 6 -1. - <_> - 15 2 1 6 3. - 1 - <_> - - <_> - 8 1 6 3 -1. - <_> - 7 2 6 1 3. - 1 - <_> - - <_> - 11 6 3 3 -1. - <_> - 12 7 1 1 9. - <_> - - <_> - 3 9 8 1 -1. - <_> - 3 9 4 1 2. - 1 - <_> - - <_> - 10 9 12 3 -1. - <_> - 10 9 6 3 2. - <_> - - <_> - 0 9 12 3 -1. - <_> - 6 9 6 3 2. - <_> - - <_> - 18 17 1 3 -1. - <_> - 18 18 1 1 3. - <_> - - <_> - 9 6 1 3 -1. - <_> - 9 7 1 1 3. - <_> - - <_> - 10 4 3 6 -1. - <_> - 11 6 1 2 9. - <_> - - <_> - 3 8 9 12 -1. - <_> - 3 14 9 6 2. - <_> - - <_> - 15 6 3 6 -1. - <_> - 16 7 1 6 3. - 1 - <_> - - <_> - 8 9 6 2 -1. - <_> - 8 9 3 1 2. - <_> - 11 10 3 1 2. - <_> - - <_> - 14 0 2 2 -1. - <_> - 14 0 1 2 2. - 1 - <_> - - <_> - 10 6 2 4 -1. - <_> - 11 6 1 4 2. - <_> - - <_> - 11 6 2 6 -1. - <_> - 11 6 2 3 2. - 1 - <_> - - <_> - 6 4 6 9 -1. - <_> - 8 7 2 3 9. - <_> - - <_> - 8 7 6 8 -1. - <_> - 8 7 3 8 2. - <_> - - <_> - 10 15 2 2 -1. - <_> - 11 15 1 2 2. - <_> - - <_> - 15 6 3 6 -1. - <_> - 16 7 1 6 3. - 1 - <_> - - <_> - 7 6 6 3 -1. - <_> - 6 7 6 1 3. - 1 - <_> - - <_> - 11 3 2 2 -1. - <_> - 12 3 1 1 2. - <_> - 11 4 1 1 2. - <_> - - <_> - 2 12 7 4 -1. - <_> - 2 13 7 2 2. - <_> - - <_> - 11 7 10 10 -1. - <_> - 16 7 5 5 2. - <_> - 11 12 5 5 2. - <_> - - <_> - 1 13 3 3 -1. - <_> - 2 14 1 1 9. - <_> - - <_> - 13 9 1 3 -1. - <_> - 13 10 1 1 3. - <_> - - <_> - 0 12 3 2 -1. - <_> - 1 12 1 2 3. - <_> - - <_> - 14 0 2 14 -1. - <_> - 14 7 2 7 2. - <_> - - <_> - 6 0 2 14 -1. - <_> - 6 7 2 7 2. - <_> - - <_> - 6 0 11 2 -1. - <_> - 6 1 11 1 2. - <_> - - <_> - 7 3 7 6 -1. - <_> - 7 5 7 2 3. - <_> - - <_> - 13 8 3 1 -1. - <_> - 14 8 1 1 3. - <_> - - <_> - 8 9 1 3 -1. - <_> - 8 10 1 1 3. - <_> - - <_> - 13 8 3 1 -1. - <_> - 14 8 1 1 3. - <_> - - <_> - 0 0 22 14 -1. - <_> - 11 0 11 14 2. - <_> - - <_> - 17 9 3 6 -1. - <_> - 18 9 1 6 3. - <_> - - <_> - 2 9 3 6 -1. - <_> - 3 9 1 6 3. - <_> - - <_> - 16 8 6 4 -1. - <_> - 15 9 6 2 2. - 1 - <_> - - <_> - 1 14 4 6 -1. - <_> - 2 14 2 6 2. - <_> - - <_> - 18 16 3 3 -1. - <_> - 19 17 1 1 9. - <_> - - <_> - 1 16 3 3 -1. - <_> - 2 17 1 1 9. - <_> - - <_> - 18 17 1 3 -1. - <_> - 18 18 1 1 3. - <_> - - <_> - 1 2 3 1 -1. - <_> - 2 2 1 1 3. - <_> - - <_> - 20 3 2 2 -1. - <_> - 21 3 1 1 2. - <_> - 20 4 1 1 2. - <_> - - <_> - 8 17 6 2 -1. - <_> - 11 17 3 2 2. - <_> - - <_> - 20 6 2 12 -1. - <_> - 20 6 2 6 2. - 1 - <_> - - <_> - 2 6 12 2 -1. - <_> - 2 6 6 2 2. - 1 - <_> - - <_> - 18 12 1 2 -1. - <_> - 18 13 1 1 2. - <_> - - <_> - 3 12 1 2 -1. - <_> - 3 13 1 1 2. - <_> - - <_> - 16 8 6 4 -1. - <_> - 15 9 6 2 2. - 1 - <_> - - <_> - 3 15 1 2 -1. - <_> - 3 16 1 1 2. - <_> - - <_> - 14 0 2 2 -1. - <_> - 14 0 1 2 2. - 1 - <_> - - <_> - 1 10 7 3 -1. - <_> - 1 11 7 1 3. - <_> - - <_> - 14 8 4 6 -1. - <_> - 14 10 4 2 3. - <_> - - <_> - 2 14 11 3 -1. - <_> - 2 15 11 1 3. - <_> - - <_> - 11 13 3 3 -1. - <_> - 12 14 1 1 9. - <_> - - <_> - 6 14 1 3 -1. - <_> - 6 15 1 1 3. - <_> - - <_> - 16 8 6 4 -1. - <_> - 15 9 6 2 2. - 1 - <_> - - <_> - 10 1 10 4 -1. - <_> - 9 2 10 2 2. - 1 - <_> - - <_> - 13 4 2 1 -1. - <_> - 13 4 1 1 2. - 1 - <_> - - <_> - 9 4 1 2 -1. - <_> - 9 4 1 1 2. - 1 - <_> - - <_> - 13 3 3 6 -1. - <_> - 14 3 1 6 3. - <_> - - <_> - 6 3 3 6 -1. - <_> - 7 3 1 6 3. - <_> - - <_> - 11 3 2 9 -1. - <_> - 8 6 2 3 3. - 1 - <_> - - <_> - 11 3 9 2 -1. - <_> - 14 6 3 2 3. - 1 - <_> - - <_> - 12 5 1 9 -1. - <_> - 9 8 1 3 3. - 1 - <_> - - <_> - 10 5 9 1 -1. - <_> - 13 8 3 1 3. - 1 - <_> - - <_> - 6 6 12 8 -1. - <_> - 6 8 12 4 2. - <_> - - <_> - 7 6 3 6 -1. - <_> - 7 8 3 2 3. - <_> - - <_> - 11 13 3 3 -1. - <_> - 12 14 1 1 9. - <_> - - <_> - 0 3 2 2 -1. - <_> - 0 3 1 1 2. - <_> - 1 4 1 1 2. - <_> - - <_> - 11 13 3 3 -1. - <_> - 12 14 1 1 9. - <_> - - <_> - 11 4 2 2 -1. - <_> - 11 4 2 1 2. - 1 - <_> - - <_> - 9 0 12 6 -1. - <_> - 15 0 6 3 2. - <_> - 9 3 6 3 2. - <_> - - <_> - 11 4 3 3 -1. - <_> - 10 5 3 1 3. - 1 - <_> - - <_> - 11 13 3 3 -1. - <_> - 12 14 1 1 9. - <_> - - <_> - 8 13 3 3 -1. - <_> - 9 14 1 1 9. - <_> - - <_> - 12 5 3 6 -1. - <_> - 13 6 1 6 3. - 1 - <_> - - <_> - 10 5 6 3 -1. - <_> - 9 6 6 1 3. - 1 - <_> - - <_> - 6 0 16 2 -1. - <_> - 6 1 16 1 2. - <_> - - <_> - 5 0 11 2 -1. - <_> - 5 1 11 1 2. - <_> - - <_> - 16 3 2 9 -1. - <_> - 16 3 1 9 2. - 1 - <_> - - <_> - 6 3 5 2 -1. - <_> - 6 3 5 1 2. - 1 - <_> - - <_> - 13 0 7 3 -1. - <_> - 12 1 7 1 3. - 1 - <_> - - <_> - 3 6 2 1 -1. - <_> - 4 6 1 1 2. - <_> - - <_> - 9 4 4 3 -1. - <_> - 9 5 4 1 3. - <_> - - <_> - 10 4 2 3 -1. - <_> - 10 5 2 1 3. - <_> - - <_> - 11 4 1 4 -1. - <_> - 11 5 1 2 2. - <_> - - <_> - 10 9 2 1 -1. - <_> - 11 9 1 1 2. - <_> - - <_> - 11 3 1 6 -1. - <_> - 9 5 1 2 3. - 1 - <_> - - <_> - 11 3 6 1 -1. - <_> - 13 5 2 1 3. - 1 - <_> - - <_> - 17 15 2 2 -1. - <_> - 18 15 1 1 2. - <_> - 17 16 1 1 2. - <_> - - <_> - 3 15 2 2 -1. - <_> - 3 15 1 1 2. - <_> - 4 16 1 1 2. - <_> - - <_> - 4 7 18 12 -1. - <_> - 4 7 9 12 2. - <_> - - <_> - 0 7 18 12 -1. - <_> - 9 7 9 12 2. - <_> - - <_> - 8 0 14 19 -1. - <_> - 8 0 7 19 2. - <_> - - <_> - 10 0 3 4 -1. - <_> - 11 1 1 4 3. - 1 - <_> - - <_> - 9 5 4 3 -1. - <_> - 9 6 4 1 3. - <_> - - <_> - 2 17 6 2 -1. - <_> - 2 18 6 1 2. - <_> - - <_> - 11 8 3 2 -1. - <_> - 12 8 1 2 3. - <_> - - <_> - 7 6 6 3 -1. - <_> - 7 7 6 1 3. - <_> - - <_> - 10 5 2 6 -1. - <_> - 10 8 2 3 2. - <_> - - <_> - 8 5 6 4 -1. - <_> - 8 7 6 2 2. - <_> - - <_> - 13 15 5 2 -1. - <_> - 13 16 5 1 2. - <_> - - <_> - 1 4 20 15 -1. - <_> - 1 9 20 5 3. - <_> - - <_> - 5 2 12 9 -1. - <_> - 8 2 6 9 2. - <_> - - <_> - 10 0 2 4 -1. - <_> - 10 0 1 4 2. - 1 - <_> - - <_> - 19 6 1 12 -1. - <_> - 15 10 1 4 3. - 1 - <_> - - <_> - 2 0 4 2 -1. - <_> - 2 0 2 1 2. - <_> - 4 1 2 1 2. - <_> - - <_> - 3 0 16 20 -1. - <_> - 3 10 16 10 2. - <_> - - <_> - 10 4 4 1 -1. - <_> - 11 5 2 1 2. - 1 - <_> - - <_> - 12 0 10 8 -1. - <_> - 12 4 10 4 2. - <_> - - <_> - 1 1 7 18 -1. - <_> - 1 10 7 9 2. - <_> - - <_> - 16 0 3 10 -1. - <_> - 17 1 1 10 3. - 1 - <_> - - <_> - 6 0 10 3 -1. - <_> - 5 1 10 1 3. - 1 - <_> - - <_> - 11 8 3 2 -1. - <_> - 12 8 1 2 3. - <_> - - <_> - 9 7 2 1 -1. - <_> - 9 7 1 1 2. - 1 - <_> - - <_> - 9 2 4 8 -1. - <_> - 11 2 2 4 2. - <_> - 9 6 2 4 2. - <_> - - <_> - 9 5 2 4 -1. - <_> - 9 6 2 2 2. - <_> - - <_> - 11 4 3 2 -1. - <_> - 12 5 1 2 3. - 1 - <_> - - <_> - 9 2 4 6 -1. - <_> - 9 4 4 2 3. - <_> - - <_> - 10 5 4 8 -1. - <_> - 10 7 4 4 2. - <_> - - <_> - 9 4 4 6 -1. - <_> - 9 4 2 3 2. - <_> - 11 7 2 3 2. - <_> - - <_> - 12 6 3 2 -1. - <_> - 13 6 1 2 3. - <_> - - <_> - 8 6 6 4 -1. - <_> - 8 6 3 2 2. - <_> - 11 8 3 2 2. - <_> - - <_> - 9 1 4 6 -1. - <_> - 9 3 4 2 3. - <_> - - <_> - 8 7 2 4 -1. - <_> - 9 7 1 4 2. - <_> - - <_> - 12 6 2 4 -1. - <_> - 11 7 2 2 2. - 1 - <_> - - <_> - 9 9 2 1 -1. - <_> - 10 9 1 1 2. - <_> - - <_> - 16 0 4 2 -1. - <_> - 18 0 2 1 2. - <_> - 16 1 2 1 2. - <_> - - <_> - 8 8 2 8 -1. - <_> - 9 8 1 8 2. - <_> - - <_> - 11 2 5 9 -1. - <_> - 11 5 5 3 3. - <_> - - <_> - 9 3 3 4 -1. - <_> - 9 5 3 2 2. - <_> - - <_> - 11 1 1 10 -1. - <_> - 11 1 1 5 2. - 1 - <_> - - <_> - 11 1 10 1 -1. - <_> - 11 1 5 1 2. - 1 - <_> - - <_> - 3 7 18 9 -1. - <_> - 9 10 6 3 9. - <_> - - <_> - 10 12 1 4 -1. - <_> - 10 14 1 2 2. - <_> - - <_> - 13 14 1 2 -1. - <_> - 13 14 1 1 2. - 1 - <_> - - <_> - 8 15 2 1 -1. - <_> - 9 15 1 1 2. - <_> - - <_> - 12 8 2 10 -1. - <_> - 13 8 1 5 2. - <_> - 12 13 1 5 2. - <_> - - <_> - 11 5 4 2 -1. - <_> - 12 6 2 2 2. - 1 - <_> - - <_> - 14 10 2 8 -1. - <_> - 14 14 2 4 2. - <_> - - <_> - 6 3 7 9 -1. - <_> - 6 6 7 3 3. - <_> - - <_> - 10 3 3 1 -1. - <_> - 11 3 1 1 3. - <_> - - <_> - 9 6 4 2 -1. - <_> - 9 7 4 1 2. - <_> - - <_> - 12 6 1 3 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 1 6 1 2 -1. - <_> - 1 7 1 1 2. - <_> - - <_> - 20 6 1 2 -1. - <_> - 20 7 1 1 2. - <_> - - <_> - 11 11 6 1 -1. - <_> - 13 13 2 1 3. - 1 - <_> - - <_> - 20 6 1 2 -1. - <_> - 20 7 1 1 2. - <_> - - <_> - 8 8 2 10 -1. - <_> - 8 8 1 5 2. - <_> - 9 13 1 5 2. - <_> - - <_> - 20 6 1 2 -1. - <_> - 20 7 1 1 2. - <_> - - <_> - 1 6 1 2 -1. - <_> - 1 7 1 1 2. - <_> - - <_> - 16 18 6 2 -1. - <_> - 18 18 2 2 3. - <_> - - <_> - 4 7 6 3 -1. - <_> - 4 8 6 1 3. - <_> - - <_> - 15 17 1 3 -1. - <_> - 15 18 1 1 3. - <_> - - <_> - 1 4 2 10 -1. - <_> - 1 9 2 5 2. - <_> - - <_> - 14 1 4 8 -1. - <_> - 15 2 2 8 2. - 1 - <_> - - <_> - 8 7 6 2 -1. - <_> - 8 7 3 1 2. - <_> - 11 8 3 1 2. - <_> - - <_> - 2 5 18 9 -1. - <_> - 2 8 18 3 3. - <_> - - <_> - 8 9 2 4 -1. - <_> - 8 9 1 4 2. - 1 - <_> - - <_> - 10 8 12 6 -1. - <_> - 10 10 12 2 3. - <_> - - <_> - 0 8 12 6 -1. - <_> - 0 10 12 2 3. - <_> - - <_> - 9 6 4 4 -1. - <_> - 9 8 4 2 2. - <_> - - <_> - 9 7 1 2 -1. - <_> - 9 8 1 1 2. - <_> - - <_> - 12 7 1 3 -1. - <_> - 12 8 1 1 3. - <_> - - <_> - 9 7 1 3 -1. - <_> - 9 8 1 1 3. - <_> - - <_> - 15 17 1 3 -1. - <_> - 15 18 1 1 3. - <_> - - <_> - 9 7 2 6 -1. - <_> - 9 9 2 2 3. - <_> - - <_> - 17 6 2 4 -1. - <_> - 18 6 1 2 2. - <_> - 17 8 1 2 2. - <_> - - <_> - 1 17 3 1 -1. - <_> - 2 17 1 1 3. - <_> - - <_> - 16 18 6 2 -1. - <_> - 18 18 2 2 3. - <_> - - <_> - 6 17 1 3 -1. - <_> - 6 18 1 1 3. - <_> - - <_> - 16 18 6 2 -1. - <_> - 18 18 2 2 3. - <_> - - <_> - 0 18 6 2 -1. - <_> - 2 18 2 2 3. - <_> - - <_> - 17 6 2 4 -1. - <_> - 18 6 1 2 2. - <_> - 17 8 1 2 2. - <_> - - <_> - 3 6 2 4 -1. - <_> - 3 6 1 2 2. - <_> - 4 8 1 2 2. - <_> - - <_> - 14 18 5 2 -1. - <_> - 14 19 5 1 2. - <_> - - <_> - 8 10 4 2 -1. - <_> - 8 10 2 1 2. - <_> - 10 11 2 1 2. - <_> - - <_> - 11 10 2 2 -1. - <_> - 12 10 1 1 2. - <_> - 11 11 1 1 2. - <_> - - <_> - 8 9 5 2 -1. - <_> - 8 10 5 1 2. - <_> - - <_> - 6 9 10 2 -1. - <_> - 6 10 10 1 2. - <_> - - <_> - 8 10 3 7 -1. - <_> - 9 11 1 7 3. - 1 - <_> - - <_> - 16 15 1 2 -1. - <_> - 16 16 1 1 2. - <_> - - <_> - 9 1 2 12 -1. - <_> - 9 1 1 6 2. - <_> - 10 7 1 6 2. - <_> - - <_> - 14 7 1 3 -1. - <_> - 14 8 1 1 3. - <_> - - <_> - 10 1 1 2 -1. - <_> - 10 1 1 1 2. - 1 - <_> - - <_> - 13 3 3 2 -1. - <_> - 14 3 1 2 3. - <_> - - <_> - 8 0 6 4 -1. - <_> - 8 1 6 2 2. - <_> - - <_> - 8 0 6 4 -1. - <_> - 8 1 6 2 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 2 1 2. - 1 - <_> - - <_> - 6 0 16 2 -1. - <_> - 6 1 16 1 2. - <_> - - <_> - 4 5 6 6 -1. - <_> - 4 5 3 3 2. - <_> - 7 8 3 3 2. - <_> - - <_> - 13 8 2 4 -1. - <_> - 14 8 1 2 2. - <_> - 13 10 1 2 2. - <_> - - <_> - 8 4 1 3 -1. - <_> - 8 5 1 1 3. - <_> - - <_> - 13 8 2 4 -1. - <_> - 14 8 1 2 2. - <_> - 13 10 1 2 2. - <_> - - <_> - 5 15 1 2 -1. - <_> - 5 16 1 1 2. - <_> - - <_> - 7 7 8 8 -1. - <_> - 7 7 4 8 2. - <_> - - <_> - 10 4 2 6 -1. - <_> - 10 7 2 3 2. - <_> - - <_> - 7 5 8 6 -1. - <_> - 7 8 8 3 2. - <_> - - <_> - 7 7 1 3 -1. - <_> - 7 8 1 1 3. - <_> - - <_> - 11 7 2 1 -1. - <_> - 11 7 1 1 2. - 1 - <_> - - <_> - 7 13 4 3 -1. - <_> - 8 14 2 3 2. - 1 - <_> - - <_> - 15 0 2 2 -1. - <_> - 16 0 1 1 2. - <_> - 15 1 1 1 2. - <_> - - <_> - 6 9 3 3 -1. - <_> - 5 10 3 1 3. - 1 - <_> - - <_> - 14 5 3 1 -1. - <_> - 15 5 1 1 3. - <_> - - <_> - 4 0 18 1 -1. - <_> - 10 6 6 1 3. - 1 - <_> - - <_> - 7 5 10 12 -1. - <_> - 7 9 10 4 3. - <_> - - <_> - 6 8 3 1 -1. - <_> - 7 8 1 1 3. - <_> - - <_> - 13 1 3 9 -1. - <_> - 14 1 1 9 3. - <_> - - <_> - 6 7 2 1 -1. - <_> - 7 7 1 1 2. - <_> - - <_> - 14 7 1 3 -1. - <_> - 13 8 1 1 3. - 1 - <_> - - <_> - 9 14 2 1 -1. - <_> - 9 14 1 1 2. - 1 - <_> - - <_> - 11 14 2 2 -1. - <_> - 12 14 1 1 2. - <_> - 11 15 1 1 2. - <_> - - <_> - 9 14 2 2 -1. - <_> - 9 14 1 1 2. - <_> - 10 15 1 1 2. - <_> - - <_> - 14 7 1 3 -1. - <_> - 13 8 1 1 3. - 1 - <_> - - <_> - 7 13 1 2 -1. - <_> - 7 13 1 1 2. - 1 - <_> - - <_> - 13 8 2 4 -1. - <_> - 14 8 1 2 2. - <_> - 13 10 1 2 2. - <_> - - <_> - 1 9 7 8 -1. - <_> - 1 11 7 4 2. - <_> - - <_> - 20 15 1 4 -1. - <_> - 20 16 1 2 2. - <_> - - <_> - 3 7 3 12 -1. - <_> - 3 11 3 4 3. - <_> - - <_> - 20 15 1 4 -1. - <_> - 20 16 1 2 2. - <_> - - <_> - 1 15 1 4 -1. - <_> - 1 16 1 2 2. - <_> - - <_> - 13 8 2 4 -1. - <_> - 14 8 1 2 2. - <_> - 13 10 1 2 2. - <_> - - <_> - 8 7 3 1 -1. - <_> - 9 8 1 1 3. - 1 - <_> - - <_> - 16 7 5 12 -1. - <_> - 16 10 5 6 2. - <_> - - <_> - 5 12 3 2 -1. - <_> - 6 13 1 2 3. - 1 - <_> - - <_> - 15 6 4 2 -1. - <_> - 15 6 4 1 2. - 1 - <_> - - <_> - 9 5 3 2 -1. - <_> - 10 6 1 2 3. - 1 - <_> - - <_> - 13 8 2 4 -1. - <_> - 14 8 1 2 2. - <_> - 13 10 1 2 2. - <_> - - <_> - 7 8 2 4 -1. - <_> - 7 8 1 2 2. - <_> - 8 10 1 2 2. - <_> - - <_> - 12 2 3 6 -1. - <_> - 13 3 1 6 3. - 1 - <_> - - <_> - 10 2 6 3 -1. - <_> - 9 3 6 1 3. - 1 - <_> - - <_> - 13 11 3 1 -1. - <_> - 14 11 1 1 3. - <_> - - <_> - 6 17 1 3 -1. - <_> - 6 18 1 1 3. - <_> - - <_> - 12 1 1 3 -1. - <_> - 12 2 1 1 3. - <_> - - <_> - 9 1 1 3 -1. - <_> - 9 2 1 1 3. - <_> - - <_> - 15 6 4 2 -1. - <_> - 15 6 4 1 2. - 1 - <_> - - <_> - 7 6 2 4 -1. - <_> - 7 6 1 4 2. - 1 - <_> - - <_> - 9 2 4 4 -1. - <_> - 9 3 4 2 2. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 3 2 1 2. - <_> - - <_> - 13 4 3 3 -1. - <_> - 14 5 1 1 9. - <_> - - <_> - 6 4 3 3 -1. - <_> - 7 5 1 1 9. - <_> - - <_> - 16 10 2 1 -1. - <_> - 16 10 1 1 2. - <_> - - <_> - 4 10 2 1 -1. - <_> - 5 10 1 1 2. - <_> - - <_> - 17 13 1 3 -1. - <_> - 17 14 1 1 3. - <_> - - <_> - 4 13 1 3 -1. - <_> - 4 14 1 1 3. - <_> - - <_> - 12 12 10 3 -1. - <_> - 12 13 10 1 3. - <_> - - <_> - 0 12 10 3 -1. - <_> - 0 13 10 1 3. - <_> - - <_> - 12 4 3 5 -1. - <_> - 13 4 1 5 3. - <_> - - <_> - 7 4 3 5 -1. - <_> - 8 4 1 5 3. - <_> - - <_> - 12 2 3 1 -1. - <_> - 13 3 1 1 3. - 1 - <_> - - <_> - 8 4 6 2 -1. - <_> - 10 4 2 2 3. - <_> - - <_> - 9 1 4 8 -1. - <_> - 10 1 2 8 2. - <_> - - <_> - 8 0 6 5 -1. - <_> - 10 0 2 5 3. - <_> - - <_> - 12 4 2 1 -1. - <_> - 12 4 1 1 2. - <_> - - <_> - 7 0 3 11 -1. - <_> - 8 0 1 11 3. - <_> - - <_> - 13 11 3 1 -1. - <_> - 14 11 1 1 3. - <_> - - <_> - 10 3 2 2 -1. - <_> - 10 3 1 1 2. - <_> - 11 4 1 1 2. - <_> - - <_> - 13 11 3 1 -1. - <_> - 14 11 1 1 3. - <_> - - <_> - 7 6 3 6 -1. - <_> - 8 8 1 2 9. - <_> - - <_> - 12 8 2 2 -1. - <_> - 12 8 2 1 2. - 1 - <_> - - <_> - 10 8 2 2 -1. - <_> - 10 8 1 2 2. - 1 - <_> - - <_> - 10 4 4 12 -1. - <_> - 10 4 2 12 2. - <_> - - <_> - 8 2 6 12 -1. - <_> - 10 6 2 4 9. - <_> - - <_> - 8 7 8 12 -1. - <_> - 8 10 8 6 2. - <_> - - <_> - 0 10 14 2 -1. - <_> - 7 10 7 2 2. - <_> - - <_> - 10 1 3 3 -1. - <_> - 11 1 1 3 3. - <_> - - <_> - 10 0 2 1 -1. - <_> - 10 0 1 1 2. - 1 - <_> - - <_> - 17 0 2 2 -1. - <_> - 18 0 1 1 2. - <_> - 17 1 1 1 2. - <_> - - <_> - 8 7 3 3 -1. - <_> - 9 8 1 1 9. - <_> - - <_> - 10 4 2 6 -1. - <_> - 10 6 2 2 3. - <_> - - <_> - 7 12 8 2 -1. - <_> - 7 12 4 1 2. - <_> - 11 13 4 1 2. - <_> - - <_> - 8 0 9 2 -1. - <_> - 8 1 9 1 2. - <_> - - <_> - 6 2 16 1 -1. - <_> - 6 2 8 1 2. - 1 - <_> - - <_> - 12 10 3 2 -1. - <_> - 13 11 1 2 3. - 1 - <_> - - <_> - 10 10 2 3 -1. - <_> - 9 11 2 1 3. - 1 - <_> - - <_> - 11 11 3 2 -1. - <_> - 12 12 1 2 3. - 1 - <_> - - <_> - 11 11 2 3 -1. - <_> - 10 12 2 1 3. - 1 - <_> - - <_> - 15 0 2 2 -1. - <_> - 16 0 1 1 2. - <_> - 15 1 1 1 2. - <_> - - <_> - 7 13 4 2 -1. - <_> - 9 13 2 2 2. - <_> - - <_> - 8 0 12 3 -1. - <_> - 12 1 4 1 9. - <_> - - <_> - 8 13 2 1 -1. - <_> - 8 13 1 1 2. - 1 - <_> - - <_> - 17 0 2 2 -1. - <_> - 18 0 1 1 2. - <_> - 17 1 1 1 2. - <_> - - <_> - 3 0 2 2 -1. - <_> - 3 0 1 1 2. - <_> - 4 1 1 1 2. - <_> - - <_> - 8 8 6 2 -1. - <_> - 11 8 3 1 2. - <_> - 8 9 3 1 2. - <_> - - <_> - 9 5 4 4 -1. - <_> - 9 6 4 2 2. - <_> - - <_> - 17 0 4 4 -1. - <_> - 19 0 2 2 2. - <_> - 17 2 2 2 2. - <_> - - <_> - 10 2 1 3 -1. - <_> - 9 3 1 1 3. - 1 - <_> - - <_> - 12 0 9 15 -1. - <_> - 15 0 3 15 3. - <_> - - <_> - 1 0 9 15 -1. - <_> - 4 0 3 15 3. - <_> - - <_> - 16 2 3 10 -1. - <_> - 17 2 1 10 3. - <_> - - <_> - 3 2 3 10 -1. - <_> - 4 2 1 10 3. - <_> - - <_> - 18 1 1 4 -1. - <_> - 18 1 1 2 2. - 1 - <_> - - <_> - 2 8 3 2 -1. - <_> - 3 8 1 2 3. - <_> - - <_> - 14 18 4 1 -1. - <_> - 14 18 2 1 2. - <_> - - <_> - 5 10 12 8 -1. - <_> - 5 10 6 4 2. - <_> - 11 14 6 4 2. - <_> - - <_> - 13 6 1 6 -1. - <_> - 13 6 1 3 2. - 1 - <_> - - <_> - 9 6 6 1 -1. - <_> - 9 6 3 1 2. - 1 - <_> - - <_> - 15 3 1 6 -1. - <_> - 15 6 1 3 2. - <_> - - <_> - 6 3 1 6 -1. - <_> - 6 6 1 3 2. - <_> - - <_> - 17 0 4 4 -1. - <_> - 19 0 2 2 2. - <_> - 17 2 2 2 2. - <_> - - <_> - 7 7 2 2 -1. - <_> - 7 7 1 1 2. - <_> - 8 8 1 1 2. - <_> - - <_> - 17 0 4 4 -1. - <_> - 19 0 2 2 2. - <_> - 17 2 2 2 2. - <_> - - <_> - 1 0 4 4 -1. - <_> - 1 0 2 2 2. - <_> - 3 2 2 2 2. - <_> - - <_> - 13 2 3 1 -1. - <_> - 14 2 1 1 3. - <_> - - <_> - 2 13 15 2 -1. - <_> - 2 14 15 1 2. - <_> - - <_> - 14 8 1 4 -1. - <_> - 14 10 1 2 2. - <_> - - <_> - 7 8 1 4 -1. - <_> - 7 10 1 2 2. - <_> - - <_> - 15 6 2 3 -1. - <_> - 14 7 2 1 3. - 1 - <_> - - <_> - 7 6 3 2 -1. - <_> - 8 7 1 2 3. - 1 - <_> - - <_> - 20 0 1 2 -1. - <_> - 20 1 1 1 2. - <_> - - <_> - 9 4 12 4 -1. - <_> - 8 5 12 2 2. - 1 - <_> - - <_> - 9 7 4 8 -1. - <_> - 11 7 2 4 2. - <_> - 9 11 2 4 2. - <_> - - <_> - 8 6 3 3 -1. - <_> - 9 7 1 1 9. - <_> - - <_> - 13 6 1 3 -1. - <_> - 13 7 1 1 3. - <_> - - <_> - 7 8 3 12 -1. - <_> - 8 8 1 12 3. - <_> - - <_> - 16 16 3 3 -1. - <_> - 17 16 1 3 3. - <_> - - <_> - 3 0 16 18 -1. - <_> - 3 0 8 9 2. - <_> - 11 9 8 9 2. - <_> - - <_> - 19 7 1 3 -1. - <_> - 19 8 1 1 3. - <_> - - <_> - 8 6 1 3 -1. - <_> - 8 7 1 1 3. - <_> - - <_> - 19 7 1 3 -1. - <_> - 19 8 1 1 3. - <_> - - <_> - 2 7 1 3 -1. - <_> - 2 8 1 1 3. - <_> - - <_> - 10 1 2 1 -1. - <_> - 10 1 1 1 2. - <_> - - <_> - 7 1 2 4 -1. - <_> - 7 1 1 2 2. - <_> - 8 3 1 2 2. - <_> - - <_> - 13 2 2 2 -1. - <_> - 14 2 1 1 2. - <_> - 13 3 1 1 2. - <_> - - <_> - 6 5 1 2 -1. - <_> - 6 6 1 1 2. - <_> - - <_> - 13 2 2 2 -1. - <_> - 14 2 1 1 2. - <_> - 13 3 1 1 2. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 1 2. - <_> - 8 3 1 1 2. - <_> - - <_> - 6 14 16 4 -1. - <_> - 6 15 16 2 2. - <_> - - <_> - 0 11 3 3 -1. - <_> - 1 12 1 1 9. - <_> - - <_> - 11 4 1 9 -1. - <_> - 11 7 1 3 3. - <_> - - <_> - 1 0 1 2 -1. - <_> - 1 1 1 1 2. - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 6 5 1 2 -1. - <_> - 6 6 1 1 2. - <_> - - <_> - 13 0 8 12 -1. - <_> - 13 0 4 12 2. - 1 - <_> - - <_> - 9 0 12 8 -1. - <_> - 9 0 12 4 2. - 1 - <_> - - <_> - 14 1 4 4 -1. - <_> - 14 1 4 2 2. - 1 - <_> - - <_> - 5 0 1 2 -1. - <_> - 5 1 1 1 2. - <_> - - <_> - 13 2 3 1 -1. - <_> - 14 2 1 1 3. - <_> - - <_> - 5 0 1 3 -1. - <_> - 5 1 1 1 3. - <_> - - <_> - 13 2 3 1 -1. - <_> - 14 2 1 1 3. - <_> - - <_> - 6 2 3 1 -1. - <_> - 7 2 1 1 3. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - <_> - - <_> - 8 0 1 3 -1. - <_> - 7 1 1 1 3. - 1 - <_> - - <_> - 14 11 8 6 -1. - <_> - 18 11 4 3 2. - <_> - 14 14 4 3 2. - <_> - - <_> - 7 0 3 2 -1. - <_> - 8 1 1 2 3. - 1 - <_> - - <_> - 8 7 6 5 -1. - <_> - 8 7 3 5 2. - <_> - - <_> - 9 9 3 6 -1. - <_> - 10 11 1 2 9. - <_> - - <_> - 10 10 2 2 -1. - <_> - 10 11 2 1 2. - <_> - - <_> - 8 10 6 2 -1. - <_> - 8 11 6 1 2. - <_> - - <_> - 9 8 4 8 -1. - <_> - 9 8 2 8 2. - <_> - - <_> - 2 9 15 6 -1. - <_> - 7 11 5 2 9. - <_> - - <_> - 1 7 21 3 -1. - <_> - 8 8 7 1 9. - <_> - - <_> - 8 1 4 4 -1. - <_> - 8 1 2 4 2. - 1 - <_> - - <_> - 17 0 1 8 -1. - <_> - 17 0 1 4 2. - 1 - <_> - - <_> - 2 4 1 3 -1. - <_> - 2 5 1 1 3. - <_> - - <_> - 13 7 1 4 -1. - <_> - 12 8 1 2 2. - 1 - <_> - - <_> - 9 7 4 1 -1. - <_> - 10 8 2 1 2. - 1 - <_> - - <_> - 11 7 3 3 -1. - <_> - 12 7 1 3 3. - <_> - - <_> - 8 7 3 3 -1. - <_> - 9 7 1 3 3. - <_> - - <_> - 13 6 2 6 -1. - <_> - 13 6 1 6 2. - 1 - <_> - - <_> - 10 7 2 1 -1. - <_> - 10 7 1 1 2. - 1 - <_> - - <_> - 9 10 5 6 -1. - <_> - 9 12 5 2 3. - <_> - - <_> - 10 10 2 3 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 10 13 3 3 -1. - <_> - 11 14 1 1 9. - <_> - - <_> - 9 13 3 3 -1. - <_> - 10 14 1 1 9. - <_> - - <_> - 11 5 2 5 -1. - <_> - 11 5 1 5 2. - <_> - - <_> - 8 3 6 10 -1. - <_> - 10 3 2 10 3. - <_> - - <_> - 3 14 16 3 -1. - <_> - 3 15 16 1 3. - <_> - - <_> - 9 7 2 2 -1. - <_> - 9 7 1 2 2. - 1 - <_> - - <_> - 14 10 4 9 -1. - <_> - 14 13 4 3 3. - <_> - - <_> - 10 12 2 4 -1. - <_> - 11 12 1 4 2. - <_> - - <_> - 15 2 4 10 -1. - <_> - 17 2 2 5 2. - <_> - 15 7 2 5 2. - <_> - - <_> - 5 10 6 4 -1. - <_> - 5 10 3 4 2. - 1 - <_> - - <_> - 14 3 3 16 -1. - <_> - 14 11 3 8 2. - <_> - - <_> - 8 5 1 3 -1. - <_> - 8 6 1 1 3. - <_> - - <_> - 14 3 3 16 -1. - <_> - 14 11 3 8 2. - <_> - - <_> - 5 3 3 16 -1. - <_> - 5 11 3 8 2. - <_> - - <_> - 15 7 3 8 -1. - <_> - 15 11 3 4 2. - <_> - - <_> - 3 2 4 10 -1. - <_> - 3 2 2 5 2. - <_> - 5 7 2 5 2. - <_> - - <_> - 11 5 3 3 -1. - <_> - 11 6 3 1 3. - <_> - - <_> - 10 8 2 10 -1. - <_> - 10 8 2 5 2. - 1 - <_> - - <_> - 10 8 2 4 -1. - <_> - 10 9 2 2 2. - <_> - - <_> - 8 11 3 4 -1. - <_> - 8 12 3 2 2. - <_> - - <_> - 10 8 3 6 -1. - <_> - 11 10 1 2 9. - <_> - - <_> - 9 8 3 6 -1. - <_> - 10 10 1 2 9. - <_> - - <_> - 12 12 6 2 -1. - <_> - 15 12 3 1 2. - <_> - 12 13 3 1 2. - <_> - - <_> - 0 8 8 12 -1. - <_> - 0 8 4 6 2. - <_> - 4 14 4 6 2. - <_> - - <_> - 16 10 4 8 -1. - <_> - 18 10 2 4 2. - <_> - 16 14 2 4 2. - <_> - - <_> - 11 4 4 4 -1. - <_> - 10 5 4 2 2. - 1 - <_> - - <_> - 12 4 10 4 -1. - <_> - 11 5 10 2 2. - 1 - <_> - - <_> - 11 7 6 2 -1. - <_> - 11 7 3 2 2. - 1 - <_> - - <_> - 9 19 6 1 -1. - <_> - 9 19 3 1 2. - <_> - - <_> - 3 11 10 8 -1. - <_> - 3 11 5 4 2. - <_> - 8 15 5 4 2. - <_> - - <_> - 18 15 1 2 -1. - <_> - 18 16 1 1 2. - <_> - - <_> - 10 9 3 1 -1. - <_> - 11 10 1 1 3. - 1 - <_> - - <_> - 12 13 2 2 -1. - <_> - 13 13 1 1 2. - <_> - 12 14 1 1 2. - <_> - - <_> - 8 13 2 2 -1. - <_> - 8 13 1 1 2. - <_> - 9 14 1 1 2. - <_> - - <_> - 5 1 14 2 -1. - <_> - 5 1 7 2 2. - <_> - - <_> - 6 8 4 1 -1. - <_> - 8 8 2 1 2. - <_> - - <_> - 12 5 2 2 -1. - <_> - 13 5 1 1 2. - <_> - 12 6 1 1 2. - <_> - - <_> - 4 1 4 1 -1. - <_> - 4 1 2 1 2. - 1 - <_> - - <_> - 12 6 2 6 -1. - <_> - 12 8 2 2 3. - <_> - - <_> - 8 9 6 4 -1. - <_> - 8 9 3 2 2. - <_> - 11 11 3 2 2. - <_> - - <_> - 5 7 12 3 -1. - <_> - 5 8 12 1 3. - <_> - - <_> - 5 0 3 3 -1. - <_> - 6 1 1 1 9. - <_> - - <_> - 19 8 2 2 -1. - <_> - 20 8 1 1 2. - <_> - 19 9 1 1 2. - <_> - - <_> - 9 1 3 3 -1. - <_> - 10 2 1 3 3. - 1 - <_> - - <_> - 11 18 1 2 -1. - <_> - 11 19 1 1 2. - <_> - - <_> - 9 1 4 6 -1. - <_> - 9 3 4 2 3. - <_> - - <_> - 9 4 4 3 -1. - <_> - 9 5 4 1 3. - <_> - - <_> - 9 8 4 1 -1. - <_> - 10 8 2 1 2. - <_> - - <_> - 6 1 16 11 -1. - <_> - 6 1 8 11 2. - <_> - - <_> - 2 15 1 3 -1. - <_> - 2 16 1 1 3. - <_> - - <_> - 8 6 6 4 -1. - <_> - 8 8 6 2 2. - <_> - - <_> - 10 14 2 2 -1. - <_> - 10 15 2 1 2. - <_> - - <_> - 17 6 3 4 -1. - <_> - 18 7 1 4 3. - 1 - <_> - - <_> - 8 5 6 6 -1. - <_> - 10 7 2 2 9. - <_> - - <_> - 13 3 2 6 -1. - <_> - 13 3 1 6 2. - <_> - - <_> - 7 3 2 6 -1. - <_> - 8 3 1 6 2. - <_> - - <_> - 10 16 2 2 -1. - <_> - 10 17 2 1 2. - <_> - - <_> - 4 8 4 10 -1. - <_> - 4 13 4 5 2. - <_> - - <_> - 10 13 12 6 -1. - <_> - 13 13 6 6 2. - <_> - - <_> - 6 0 8 3 -1. - <_> - 5 1 8 1 3. - 1 - <_> - - <_> - 16 0 2 4 -1. - <_> - 17 0 1 2 2. - <_> - 16 2 1 2 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 9 10 1 1 2. - <_> - 10 11 1 1 2. - <_> - - <_> - 11 10 2 2 -1. - <_> - 12 10 1 1 2. - <_> - 11 11 1 1 2. - <_> - - <_> - 4 0 2 4 -1. - <_> - 4 0 1 2 2. - <_> - 5 2 1 2 2. - <_> - - <_> - 11 10 2 2 -1. - <_> - 12 10 1 1 2. - <_> - 11 11 1 1 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 9 10 1 1 2. - <_> - 10 11 1 1 2. - <_> - - <_> - 18 17 1 3 -1. - <_> - 18 18 1 1 3. - <_> - - <_> - 3 17 1 3 -1. - <_> - 3 18 1 1 3. - <_> - - <_> - 13 6 2 1 -1. - <_> - 13 6 1 1 2. - <_> - - <_> - 0 0 14 4 -1. - <_> - 0 0 7 2 2. - <_> - 7 2 7 2 2. - <_> - - <_> - 13 3 2 3 -1. - <_> - 13 4 2 1 3. - <_> - - <_> - 6 3 8 3 -1. - <_> - 6 4 8 1 3. - <_> - - <_> - 13 1 3 3 -1. - <_> - 12 2 3 1 3. - 1 - <_> - - <_> - 9 1 3 3 -1. - <_> - 10 2 1 3 3. - 1 - <_> - - <_> - 11 0 9 6 -1. - <_> - 11 3 9 3 2. - <_> - - <_> - 7 6 2 1 -1. - <_> - 8 6 1 1 2. - <_> - - <_> - 5 6 12 3 -1. - <_> - 9 7 4 1 9. - <_> - - <_> - 11 3 7 2 -1. - <_> - 11 3 7 1 2. - 1 - <_> - - <_> - 12 6 1 3 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 3 18 3 2 -1. - <_> - 3 19 3 1 2. - <_> - - <_> - 17 12 1 8 -1. - <_> - 17 14 1 4 2. - <_> - - <_> - 4 18 8 2 -1. - <_> - 4 19 8 1 2. - <_> - - <_> - 13 16 9 2 -1. - <_> - 16 16 3 2 3. - <_> - - <_> - 0 16 9 2 -1. - <_> - 3 16 3 2 3. - <_> - - <_> - 6 3 10 2 -1. - <_> - 11 3 5 1 2. - <_> - 6 4 5 1 2. - <_> - - <_> - 0 16 6 4 -1. - <_> - 3 16 3 4 2. - <_> - - <_> - 20 13 1 6 -1. - <_> - 20 13 1 3 2. - 1 - <_> - - <_> - 2 13 6 1 -1. - <_> - 2 13 3 1 2. - 1 - <_> - - <_> - 21 12 1 2 -1. - <_> - 21 13 1 1 2. - <_> - - <_> - 1 0 18 10 -1. - <_> - 1 5 18 5 2. - <_> - - <_> - 16 0 2 4 -1. - <_> - 17 0 1 2 2. - <_> - 16 2 1 2 2. - <_> - - <_> - 9 7 1 2 -1. - <_> - 9 8 1 1 2. - <_> - - <_> - 12 4 1 4 -1. - <_> - 11 5 1 2 2. - 1 - <_> - - <_> - 11 3 11 3 -1. - <_> - 10 4 11 1 3. - 1 - <_> - - <_> - 11 7 1 6 -1. - <_> - 11 9 1 2 3. - <_> - - <_> - 10 7 1 6 -1. - <_> - 10 9 1 2 3. - <_> - - <_> - 14 10 1 3 -1. - <_> - 14 11 1 1 3. - <_> - - <_> - 7 2 3 12 -1. - <_> - 8 6 1 4 9. - <_> - - <_> - 12 9 3 2 -1. - <_> - 13 9 1 2 3. - <_> - - <_> - 7 9 3 2 -1. - <_> - 8 9 1 2 3. - <_> - - <_> - 9 0 4 4 -1. - <_> - 9 1 4 2 2. - <_> - - <_> - 10 4 1 4 -1. - <_> - 10 6 1 2 2. - <_> - - <_> - 10 1 4 10 -1. - <_> - 10 6 4 5 2. - <_> - - <_> - 10 7 5 2 -1. - <_> - 10 7 5 1 2. - 1 - <_> - - <_> - 10 6 2 6 -1. - <_> - 10 9 2 3 2. - <_> - - <_> - 9 2 4 6 -1. - <_> - 9 4 4 2 3. - <_> - - <_> - 6 2 12 2 -1. - <_> - 12 2 6 1 2. - <_> - 6 3 6 1 2. - <_> - - <_> - 4 2 12 2 -1. - <_> - 4 2 6 1 2. - <_> - 10 3 6 1 2. - <_> - - <_> - 14 10 1 3 -1. - <_> - 14 11 1 1 3. - <_> - - <_> - 9 0 3 6 -1. - <_> - 9 2 3 2 3. - <_> - - <_> - 10 0 2 1 -1. - <_> - 10 0 1 1 2. - <_> - - <_> - 7 10 1 3 -1. - <_> - 7 11 1 1 3. - <_> - - <_> - 12 3 3 3 -1. - <_> - 13 4 1 3 3. - 1 - <_> - - <_> - 10 3 3 3 -1. - <_> - 9 4 3 1 3. - 1 - <_> - - <_> - 9 9 6 3 -1. - <_> - 9 9 3 3 2. - <_> - - <_> - 6 4 10 6 -1. - <_> - 6 4 5 3 2. - <_> - 11 7 5 3 2. - <_> - - <_> - 10 0 2 2 -1. - <_> - 11 0 1 1 2. - <_> - 10 1 1 1 2. - <_> - - <_> - 11 1 4 3 -1. - <_> - 11 1 2 3 2. - 1 - <_> - - <_> - 6 1 10 7 -1. - <_> - 6 1 5 7 2. - <_> - - <_> - 0 12 1 2 -1. - <_> - 0 13 1 1 2. - <_> - - <_> - 14 1 3 14 -1. - <_> - 15 2 1 14 3. - 1 - <_> - - <_> - 10 8 1 3 -1. - <_> - 9 9 1 1 3. - 1 - <_> - - <_> - 12 4 3 5 -1. - <_> - 13 5 1 5 3. - 1 - <_> - - <_> - 10 4 5 3 -1. - <_> - 9 5 5 1 3. - 1 - <_> - - <_> - 14 4 3 6 -1. - <_> - 15 4 1 6 3. - <_> - - <_> - 8 1 14 3 -1. - <_> - 7 2 14 1 3. - 1 - <_> - - <_> - 17 4 2 3 -1. - <_> - 17 4 1 3 2. - <_> - - <_> - 0 5 9 2 -1. - <_> - 3 5 3 2 3. - <_> - - <_> - 13 6 3 2 -1. - <_> - 14 6 1 2 3. - <_> - - <_> - 5 4 2 5 -1. - <_> - 6 4 1 5 2. - <_> - - <_> - 13 8 3 4 -1. - <_> - 14 9 1 4 3. - 1 - <_> - - <_> - 9 8 4 3 -1. - <_> - 8 9 4 1 3. - 1 - <_> - - <_> - 11 6 2 4 -1. - <_> - 11 6 1 4 2. - 1 - <_> - - <_> - 6 6 3 2 -1. - <_> - 7 6 1 2 3. - <_> - - <_> - 11 5 1 8 -1. - <_> - 9 7 1 4 2. - 1 - <_> - - <_> - 11 5 8 1 -1. - <_> - 13 7 4 1 2. - 1 - <_> - - <_> - 18 9 4 10 -1. - <_> - 20 9 2 5 2. - <_> - 18 14 2 5 2. - <_> - - <_> - 5 4 4 2 -1. - <_> - 5 4 2 1 2. - <_> - 7 5 2 1 2. - <_> - - <_> - 18 9 4 10 -1. - <_> - 20 9 2 5 2. - <_> - 18 14 2 5 2. - <_> - - <_> - 8 5 3 1 -1. - <_> - 9 5 1 1 3. - <_> - - <_> - 12 6 1 2 -1. - <_> - 12 7 1 1 2. - <_> - - <_> - 11 4 3 3 -1. - <_> - 10 5 3 1 3. - 1 - <_> - - <_> - 11 5 2 3 -1. - <_> - 11 6 2 1 3. - <_> - - <_> - 4 0 8 18 -1. - <_> - 6 0 4 18 2. - <_> - - <_> - 8 0 12 1 -1. - <_> - 11 0 6 1 2. - <_> - - <_> - 9 4 3 2 -1. - <_> - 10 4 1 2 3. - <_> - - <_> - 11 4 3 4 -1. - <_> - 11 5 3 2 2. - <_> - - <_> - 5 5 10 3 -1. - <_> - 5 6 10 1 3. - <_> - - <_> - 11 5 2 3 -1. - <_> - 11 6 2 1 3. - <_> - - <_> - 1 5 3 2 -1. - <_> - 1 6 3 1 2. - <_> - - <_> - 8 6 6 3 -1. - <_> - 10 7 2 1 9. - <_> - - <_> - 7 2 6 13 -1. - <_> - 10 2 3 13 2. - <_> - - <_> - 2 3 20 9 -1. - <_> - 2 3 10 9 2. - <_> - - <_> - 9 6 2 2 -1. - <_> - 9 7 2 1 2. - <_> - - <_> - 11 4 2 6 -1. - <_> - 11 7 2 3 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 2 1 2. - 1 - <_> - - <_> - 10 1 6 1 -1. - <_> - 10 1 3 1 2. - <_> - - <_> - 1 7 18 9 -1. - <_> - 7 10 6 3 9. - <_> - - <_> - 16 8 6 6 -1. - <_> - 14 10 6 2 3. - 1 - <_> - - <_> - 8 1 8 8 -1. - <_> - 8 1 4 8 2. - 1 - <_> - - <_> - 11 7 8 12 -1. - <_> - 11 13 8 6 2. - <_> - - <_> - 2 0 16 12 -1. - <_> - 2 3 16 6 2. - <_> - - <_> - 8 2 10 9 -1. - <_> - 8 5 10 3 3. - <_> - - <_> - 10 4 4 5 -1. - <_> - 11 5 2 5 2. - 1 - <_> - - <_> - 11 0 4 5 -1. - <_> - 11 0 2 5 2. - 1 - <_> - - <_> - 11 0 5 4 -1. - <_> - 11 0 5 2 2. - 1 - <_> - - <_> - 15 8 7 4 -1. - <_> - 14 9 7 2 2. - 1 - <_> - - <_> - 10 0 9 6 -1. - <_> - 8 2 9 2 3. - 1 - <_> - - <_> - 5 4 15 9 -1. - <_> - 10 7 5 3 9. - <_> - - <_> - 9 5 2 3 -1. - <_> - 8 6 2 1 3. - 1 - <_> - - <_> - 7 1 12 18 -1. - <_> - 11 7 4 6 9. - <_> - - <_> - 10 4 4 10 -1. - <_> - 11 5 2 10 2. - 1 - <_> - - <_> - 7 1 12 18 -1. - <_> - 11 7 4 6 9. - <_> - - <_> - 3 1 12 18 -1. - <_> - 7 7 4 6 9. - <_> - - <_> - 15 11 2 2 -1. - <_> - 15 11 1 2 2. - 1 - <_> - - <_> - 7 11 2 2 -1. - <_> - 7 11 2 1 2. - 1 - <_> - - <_> - 13 9 2 2 -1. - <_> - 13 9 1 2 2. - 1 - <_> - - <_> - 9 9 2 2 -1. - <_> - 9 9 2 1 2. - 1 - <_> - - <_> - 10 7 6 6 -1. - <_> - 12 9 2 2 9. - <_> - - <_> - 6 3 6 12 -1. - <_> - 8 7 2 4 9. - <_> - - <_> - 8 0 12 10 -1. - <_> - 14 0 6 5 2. - <_> - 8 5 6 5 2. - <_> - - <_> - 9 5 2 4 -1. - <_> - 10 5 1 4 2. - <_> - - <_> - 11 0 8 2 -1. - <_> - 13 0 4 2 2. - <_> - - <_> - 0 11 6 4 -1. - <_> - 0 11 3 2 2. - <_> - 3 13 3 2 2. - <_> - - <_> - 8 5 6 3 -1. - <_> - 10 6 2 1 9. - <_> - - <_> - 4 1 6 6 -1. - <_> - 4 1 3 3 2. - <_> - 7 4 3 3 2. - <_> - - <_> - 14 0 2 3 -1. - <_> - 13 1 2 1 3. - 1 - <_> - - <_> - 2 0 12 1 -1. - <_> - 5 0 6 1 2. - <_> - - <_> - 12 0 6 4 -1. - <_> - 12 0 3 4 2. - 1 - <_> - - <_> - 3 6 11 8 -1. - <_> - 3 8 11 4 2. - <_> - - <_> - 20 12 1 2 -1. - <_> - 20 13 1 1 2. - <_> - - <_> - 1 12 1 2 -1. - <_> - 1 13 1 1 2. - <_> - - <_> - 20 12 2 2 -1. - <_> - 20 13 2 1 2. - <_> - - <_> - 8 10 2 2 -1. - <_> - 8 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 12 11 3 3 -1. - <_> - 13 12 1 1 9. - <_> - - <_> - 7 11 3 3 -1. - <_> - 8 12 1 1 9. - <_> - - <_> - 20 12 2 2 -1. - <_> - 20 13 2 1 2. - <_> - - <_> - 0 12 2 2 -1. - <_> - 0 13 2 1 2. - <_> - - <_> - 12 5 4 8 -1. - <_> - 13 5 2 8 2. - <_> - - <_> - 6 5 4 8 -1. - <_> - 7 5 2 8 2. - <_> - - <_> - 8 11 6 7 -1. - <_> - 10 11 2 7 3. - <_> - - <_> - 10 7 1 6 -1. - <_> - 10 10 1 3 2. - <_> - - <_> - 11 0 4 20 -1. - <_> - 11 0 2 20 2. - <_> - - <_> - 4 0 5 16 -1. - <_> - 4 4 5 8 2. - <_> - - <_> - 19 0 2 14 -1. - <_> - 19 7 2 7 2. - <_> - - <_> - 10 10 2 3 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 11 11 1 4 -1. - <_> - 11 12 1 2 2. - <_> - - <_> - 8 9 6 4 -1. - <_> - 8 9 3 2 2. - <_> - 11 11 3 2 2. - <_> - - <_> - 14 0 2 3 -1. - <_> - 13 1 2 1 3. - 1 - <_> - - <_> - 8 0 3 2 -1. - <_> - 9 1 1 2 3. - 1 - <_> - - <_> - 18 0 2 4 -1. - <_> - 18 0 2 2 2. - 1 - <_> - - <_> - 4 0 4 2 -1. - <_> - 4 0 2 2 2. - 1 - <_> - - <_> - 8 9 6 2 -1. - <_> - 8 10 6 1 2. - <_> - - <_> - 7 6 3 6 -1. - <_> - 7 8 3 2 3. - <_> - - <_> - 13 7 1 4 -1. - <_> - 13 8 1 2 2. - <_> - - <_> - 0 12 16 6 -1. - <_> - 8 12 8 6 2. - <_> - - <_> - 5 16 12 3 -1. - <_> - 5 16 6 3 2. - <_> - - <_> - 0 14 12 6 -1. - <_> - 6 14 6 6 2. - <_> - - <_> - 18 15 1 4 -1. - <_> - 18 16 1 2 2. - <_> - - <_> - 3 5 2 3 -1. - <_> - 4 5 1 3 2. - <_> - - <_> - 6 1 14 2 -1. - <_> - 6 2 14 1 2. - <_> - - <_> - 3 15 1 4 -1. - <_> - 3 16 1 2 2. - <_> - - <_> - 14 0 6 2 -1. - <_> - 14 0 6 1 2. - 1 - <_> - - <_> - 8 0 2 6 -1. - <_> - 8 0 1 6 2. - 1 - <_> - - <_> - 16 13 2 2 -1. - <_> - 17 13 1 1 2. - <_> - 16 14 1 1 2. - <_> - - <_> - 6 1 10 2 -1. - <_> - 6 1 5 1 2. - <_> - 11 2 5 1 2. - <_> - - <_> - 16 13 2 2 -1. - <_> - 17 13 1 1 2. - <_> - 16 14 1 1 2. - <_> - - <_> - 4 13 2 2 -1. - <_> - 4 13 1 1 2. - <_> - 5 14 1 1 2. - <_> - - <_> - 16 13 2 2 -1. - <_> - 17 13 1 1 2. - <_> - 16 14 1 1 2. - <_> - - <_> - 4 13 2 2 -1. - <_> - 4 13 1 1 2. - <_> - 5 14 1 1 2. - <_> - - <_> - 14 10 3 1 -1. - <_> - 15 11 1 1 3. - 1 - <_> - - <_> - 8 10 1 3 -1. - <_> - 7 11 1 1 3. - 1 - <_> - - <_> - 13 8 7 9 -1. - <_> - 13 11 7 3 3. - <_> - - <_> - 2 8 7 9 -1. - <_> - 2 11 7 3 3. - <_> - - <_> - 17 13 2 1 -1. - <_> - 17 13 1 1 2. - 1 - <_> - - <_> - 5 13 1 2 -1. - <_> - 5 13 1 1 2. - 1 - <_> - - <_> - 13 11 3 1 -1. - <_> - 14 11 1 1 3. - <_> - - <_> - 5 14 1 2 -1. - <_> - 5 14 1 1 2. - 1 - <_> - - <_> - 16 9 4 9 -1. - <_> - 16 12 4 3 3. - <_> - - <_> - 2 9 4 9 -1. - <_> - 2 12 4 3 3. - <_> - - <_> - 15 0 3 9 -1. - <_> - 16 1 1 9 3. - 1 - <_> - - <_> - 2 0 12 10 -1. - <_> - 2 0 6 5 2. - <_> - 8 5 6 5 2. - <_> - - <_> - 4 2 18 11 -1. - <_> - 4 2 9 11 2. - <_> - - <_> - 0 2 18 11 -1. - <_> - 9 2 9 11 2. - <_> - - <_> - 10 1 8 14 -1. - <_> - 14 1 4 7 2. - <_> - 10 8 4 7 2. - <_> - - <_> - 4 1 8 14 -1. - <_> - 4 1 4 7 2. - <_> - 8 8 4 7 2. - <_> - - <_> - 15 6 2 4 -1. - <_> - 15 8 2 2 2. - <_> - - <_> - 5 6 2 4 -1. - <_> - 5 8 2 2 2. - <_> - - <_> - 14 10 7 3 -1. - <_> - 13 11 7 1 3. - 1 - <_> - - <_> - 8 10 3 7 -1. - <_> - 9 11 1 7 3. - 1 - <_> - - <_> - 17 18 2 2 -1. - <_> - 17 18 1 2 2. - <_> - - <_> - 3 18 2 2 -1. - <_> - 4 18 1 2 2. - <_> - - <_> - 15 0 3 9 -1. - <_> - 16 1 1 9 3. - 1 - <_> - - <_> - 7 0 9 3 -1. - <_> - 6 1 9 1 3. - 1 - <_> - - <_> - 9 2 6 8 -1. - <_> - 9 4 6 4 2. - <_> - - <_> - 8 4 4 2 -1. - <_> - 10 4 2 2 2. - <_> - - <_> - 10 4 3 1 -1. - <_> - 11 4 1 1 3. - <_> - - <_> - 9 7 3 2 -1. - <_> - 9 8 3 1 2. - <_> - - <_> - 11 6 2 3 -1. - <_> - 11 7 2 1 3. - <_> - - <_> - 9 4 3 1 -1. - <_> - 10 4 1 1 3. - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 9 5 3 6 -1. - <_> - 9 8 3 3 2. - <_> - - <_> - 10 4 8 2 -1. - <_> - 10 4 4 2 2. - <_> - - <_> - 7 12 4 2 -1. - <_> - 9 12 2 2 2. - <_> - - <_> - 14 14 1 2 -1. - <_> - 14 14 1 1 2. - 1 - <_> - - <_> - 10 13 2 4 -1. - <_> - 10 15 2 2 2. - <_> - - <_> - 14 14 1 2 -1. - <_> - 14 14 1 1 2. - 1 - <_> - - <_> - 8 14 2 1 -1. - <_> - 8 14 1 1 2. - 1 - <_> - - <_> - 13 13 3 3 -1. - <_> - 14 14 1 1 9. - <_> - - <_> - 8 5 4 8 -1. - <_> - 8 7 4 4 2. - <_> - - <_> - 13 13 3 3 -1. - <_> - 14 14 1 1 9. - <_> - - <_> - 6 13 3 3 -1. - <_> - 7 14 1 1 9. - <_> - - <_> - 17 3 2 2 -1. - <_> - 18 3 1 1 2. - <_> - 17 4 1 1 2. - <_> - - <_> - 5 10 9 3 -1. - <_> - 5 11 9 1 3. - <_> - - <_> - 10 4 4 4 -1. - <_> - 10 5 4 2 2. - <_> - - <_> - 8 5 1 3 -1. - <_> - 8 6 1 1 3. - <_> - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - <_> - - <_> - 3 0 16 20 -1. - <_> - 7 0 8 20 2. - <_> - - <_> - 8 6 9 3 -1. - <_> - 8 7 9 1 3. - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 13 5 1 3 -1. - <_> - 13 6 1 1 3. - <_> - - <_> - 5 3 2 2 -1. - <_> - 5 3 1 1 2. - <_> - 6 4 1 1 2. - <_> - - <_> - 14 2 2 2 -1. - <_> - 15 2 1 1 2. - <_> - 14 3 1 1 2. - <_> - - <_> - 7 3 4 4 -1. - <_> - 7 3 2 2 2. - <_> - 9 5 2 2 2. - <_> - - <_> - 17 3 2 2 -1. - <_> - 18 3 1 1 2. - <_> - 17 4 1 1 2. - <_> - - <_> - 8 4 3 4 -1. - <_> - 8 5 3 2 2. - <_> - - <_> - 17 3 2 2 -1. - <_> - 18 3 1 1 2. - <_> - 17 4 1 1 2. - <_> - - <_> - 3 3 2 2 -1. - <_> - 3 3 1 1 2. - <_> - 4 4 1 1 2. - <_> - - <_> - 14 2 2 2 -1. - <_> - 15 2 1 1 2. - <_> - 14 3 1 1 2. - <_> - - <_> - 6 2 2 2 -1. - <_> - 6 2 1 1 2. - <_> - 7 3 1 1 2. - <_> - - <_> - 14 0 7 3 -1. - <_> - 13 1 7 1 3. - 1 - <_> - - <_> - 8 0 3 7 -1. - <_> - 9 1 1 7 3. - 1 - <_> - - <_> - 13 5 1 3 -1. - <_> - 13 6 1 1 3. - <_> - - <_> - 2 7 6 9 -1. - <_> - 2 10 6 3 3. - <_> - - <_> - 12 1 2 12 -1. - <_> - 13 1 1 6 2. - <_> - 12 7 1 6 2. - <_> - - <_> - 8 1 2 12 -1. - <_> - 8 1 1 6 2. - <_> - 9 7 1 6 2. - <_> - - <_> - 13 14 3 1 -1. - <_> - 14 14 1 1 3. - <_> - - <_> - 3 8 3 2 -1. - <_> - 3 9 3 1 2. - <_> - - <_> - 13 14 3 1 -1. - <_> - 14 14 1 1 3. - <_> - - <_> - 5 9 2 1 -1. - <_> - 6 9 1 1 2. - <_> - - <_> - 18 2 3 1 -1. - <_> - 19 3 1 1 3. - 1 - <_> - - <_> - 6 11 3 1 -1. - <_> - 7 11 1 1 3. - <_> - - <_> - 14 9 3 1 -1. - <_> - 15 9 1 1 3. - <_> - - <_> - 5 9 3 1 -1. - <_> - 6 9 1 1 3. - <_> - - <_> - 14 10 1 3 -1. - <_> - 14 11 1 1 3. - <_> - - <_> - 7 10 1 3 -1. - <_> - 7 11 1 1 3. - <_> - - <_> - 13 5 1 2 -1. - <_> - 13 6 1 1 2. - <_> - - <_> - 0 5 21 6 -1. - <_> - 7 7 7 2 9. - <_> - - <_> - 11 4 6 1 -1. - <_> - 11 4 3 1 2. - <_> - - <_> - 8 8 2 3 -1. - <_> - 8 9 2 1 3. - <_> - - <_> - 9 9 4 2 -1. - <_> - 11 9 2 1 2. - <_> - 9 10 2 1 2. - <_> - - <_> - 5 5 8 2 -1. - <_> - 5 5 4 1 2. - <_> - 9 6 4 1 2. - <_> - - <_> - 11 5 2 3 -1. - <_> - 11 6 2 1 3. - <_> - - <_> - 8 7 6 4 -1. - <_> - 8 7 3 2 2. - <_> - 11 9 3 2 2. - <_> - - <_> - 10 5 2 6 -1. - <_> - 11 5 1 3 2. - <_> - 10 8 1 3 2. - <_> - - <_> - 8 5 1 2 -1. - <_> - 8 6 1 1 2. - <_> - - <_> - 13 3 2 3 -1. - <_> - 13 4 2 1 3. - <_> - - <_> - 4 2 1 3 -1. - <_> - 3 3 1 1 3. - 1 - <_> - - <_> - 8 11 7 3 -1. - <_> - 8 12 7 1 3. - <_> - - <_> - 2 1 4 2 -1. - <_> - 2 1 2 1 2. - <_> - 4 2 2 1 2. - <_> - - <_> - 14 5 3 1 -1. - <_> - 15 5 1 1 3. - <_> - - <_> - 3 0 2 2 -1. - <_> - 3 0 1 2 2. - 1 - <_> - - <_> - 18 3 3 2 -1. - <_> - 19 3 1 2 3. - <_> - - <_> - 1 3 3 2 -1. - <_> - 2 3 1 2 3. - <_> - - <_> - 14 10 8 8 -1. - <_> - 14 12 8 4 2. - <_> - - <_> - 0 18 22 2 -1. - <_> - 0 18 11 1 2. - <_> - 11 19 11 1 2. - <_> - - <_> - 15 10 2 1 -1. - <_> - 15 10 1 1 2. - <_> - - <_> - 5 5 3 1 -1. - <_> - 6 5 1 1 3. - <_> - - <_> - 1 5 21 12 -1. - <_> - 8 9 7 4 9. - <_> - - <_> - 5 10 2 1 -1. - <_> - 6 10 1 1 2. - <_> - - <_> - 13 3 2 3 -1. - <_> - 13 4 2 1 3. - <_> - - <_> - 7 3 2 3 -1. - <_> - 7 4 2 1 3. - <_> - - <_> - 13 8 3 1 -1. - <_> - 14 8 1 1 3. - <_> - - <_> - 7 1 5 4 -1. - <_> - 7 2 5 2 2. - <_> - - <_> - 10 1 2 4 -1. - <_> - 10 2 2 2 2. - <_> - - <_> - 9 2 4 3 -1. - <_> - 9 3 4 1 3. - <_> - - <_> - 8 2 6 3 -1. - <_> - 10 3 2 1 9. - <_> - - <_> - 0 0 16 4 -1. - <_> - 0 0 8 2 2. - <_> - 8 2 8 2 2. - <_> - - <_> - 11 3 6 2 -1. - <_> - 11 3 3 2 2. - <_> - - <_> - 7 0 1 2 -1. - <_> - 7 1 1 1 2. - <_> - - <_> - 13 0 3 6 -1. - <_> - 14 2 1 2 9. - <_> - - <_> - 6 0 2 4 -1. - <_> - 6 0 1 2 2. - <_> - 7 2 1 2 2. - <_> - - <_> - 13 9 1 3 -1. - <_> - 13 10 1 1 3. - <_> - - <_> - 2 2 2 2 -1. - <_> - 2 3 2 1 2. - <_> - - <_> - 9 2 4 8 -1. - <_> - 11 2 2 4 2. - <_> - 9 6 2 4 2. - <_> - - <_> - 8 9 1 3 -1. - <_> - 8 10 1 1 3. - <_> - - <_> - 13 9 7 4 -1. - <_> - 12 10 7 2 2. - 1 - <_> - - <_> - 9 9 4 7 -1. - <_> - 10 10 2 7 2. - 1 - <_> - - <_> - 11 10 3 6 -1. - <_> - 9 12 3 2 3. - 1 - <_> - - <_> - 8 8 2 12 -1. - <_> - 8 11 2 6 2. - <_> - - <_> - 11 14 1 4 -1. - <_> - 11 14 1 2 2. - 1 - <_> - - <_> - 7 18 2 1 -1. - <_> - 8 18 1 1 2. - <_> - - <_> - 9 3 2 1 -1. - <_> - 9 3 1 1 2. - 1 - <_> - - <_> - 13 0 2 4 -1. - <_> - 14 0 1 2 2. - <_> - 13 2 1 2 2. - <_> - - <_> - 9 6 1 2 -1. - <_> - 9 7 1 1 2. - <_> - - <_> - 12 7 1 2 -1. - <_> - 12 8 1 1 2. - <_> - - <_> - 5 2 9 12 -1. - <_> - 5 8 9 6 2. - <_> - - <_> - 10 4 2 8 -1. - <_> - 10 8 2 4 2. - <_> - - <_> - 7 0 4 3 -1. - <_> - 8 1 2 3 2. - 1 - <_> - - <_> - 15 3 4 4 -1. - <_> - 15 3 4 2 2. - 1 - <_> - - <_> - 11 0 5 2 -1. - <_> - 11 0 5 1 2. - 1 - <_> - - <_> - 9 7 4 2 -1. - <_> - 11 7 2 1 2. - <_> - 9 8 2 1 2. - <_> - - <_> - 4 4 8 1 -1. - <_> - 8 4 4 1 2. - <_> - - <_> - 16 3 1 2 -1. - <_> - 16 4 1 1 2. - <_> - - <_> - 7 3 3 6 -1. - <_> - 8 3 1 6 3. - <_> - - <_> - 10 7 4 1 -1. - <_> - 10 7 2 1 2. - <_> - - <_> - 8 7 4 1 -1. - <_> - 10 7 2 1 2. - <_> - - <_> - 9 7 4 1 -1. - <_> - 10 7 2 1 2. - <_> - - <_> - 4 6 2 2 -1. - <_> - 4 6 1 1 2. - <_> - 5 7 1 1 2. - <_> - - <_> - 16 6 2 2 -1. - <_> - 17 6 1 1 2. - <_> - 16 7 1 1 2. - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 16 6 2 2 -1. - <_> - 17 6 1 1 2. - <_> - 16 7 1 1 2. - <_> - - <_> - 4 6 2 2 -1. - <_> - 4 6 1 1 2. - <_> - 5 7 1 1 2. - <_> - - <_> - 13 7 3 3 -1. - <_> - 14 8 1 1 9. - <_> - - <_> - 6 7 3 3 -1. - <_> - 7 8 1 1 9. - <_> - - <_> - 11 6 1 6 -1. - <_> - 11 8 1 2 3. - <_> - - <_> - 9 6 4 4 -1. - <_> - 9 6 2 2 2. - <_> - 11 8 2 2 2. - <_> - - <_> - 13 0 3 3 -1. - <_> - 12 1 3 1 3. - 1 - <_> - - <_> - 8 1 5 4 -1. - <_> - 7 2 5 2 2. - 1 - <_> - - <_> - 9 6 4 10 -1. - <_> - 9 6 2 10 2. - <_> - - <_> - 9 3 3 4 -1. - <_> - 10 3 1 4 3. - <_> - - <_> - 12 7 1 3 -1. - <_> - 12 8 1 1 3. - <_> - - <_> - 9 7 1 3 -1. - <_> - 9 8 1 1 3. - <_> - - <_> - 11 8 2 2 -1. - <_> - 11 9 2 1 2. - <_> - - <_> - 9 6 4 6 -1. - <_> - 9 6 2 3 2. - <_> - 11 9 2 3 2. - <_> - - <_> - 11 7 2 2 -1. - <_> - 12 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 9 7 2 2 -1. - <_> - 9 7 1 1 2. - <_> - 10 8 1 1 2. - <_> - - <_> - 11 7 1 4 -1. - <_> - 11 9 1 2 2. - <_> - - <_> - 10 5 4 1 -1. - <_> - 11 6 2 1 2. - 1 - <_> - - <_> - 12 1 4 7 -1. - <_> - 13 2 2 7 2. - 1 - <_> - - <_> - 10 1 7 4 -1. - <_> - 9 2 7 2 2. - 1 - <_> - - <_> - 10 2 2 4 -1. - <_> - 10 4 2 2 2. - <_> - - <_> - 11 0 3 1 -1. - <_> - 12 1 1 1 3. - 1 - <_> - - <_> - 9 5 6 2 -1. - <_> - 12 5 3 1 2. - <_> - 9 6 3 1 2. - <_> - - <_> - 8 4 6 2 -1. - <_> - 8 4 3 1 2. - <_> - 11 5 3 1 2. - <_> - - <_> - 9 5 6 2 -1. - <_> - 12 5 3 1 2. - <_> - 9 6 3 1 2. - <_> - - <_> - 7 5 6 2 -1. - <_> - 7 5 3 1 2. - <_> - 10 6 3 1 2. - <_> - - <_> - 12 4 4 3 -1. - <_> - 11 5 4 1 3. - 1 - <_> - - <_> - 10 4 3 4 -1. - <_> - 11 5 1 4 3. - 1 - <_> - - <_> - 10 11 4 1 -1. - <_> - 11 11 2 1 2. - <_> - - <_> - 2 3 16 12 -1. - <_> - 2 6 16 6 2. - <_> - - <_> - 12 10 7 6 -1. - <_> - 12 13 7 3 2. - <_> - - <_> - 5 3 1 2 -1. - <_> - 5 4 1 1 2. - <_> - - <_> - 20 4 2 2 -1. - <_> - 20 4 1 2 2. - <_> - - <_> - 0 3 8 2 -1. - <_> - 0 3 4 1 2. - <_> - 4 4 4 1 2. - <_> - - <_> - 11 11 1 6 -1. - <_> - 11 11 1 3 2. - 1 - <_> - - <_> - 0 13 6 7 -1. - <_> - 3 13 3 7 2. - <_> - - <_> - 16 14 6 6 -1. - <_> - 16 14 3 6 2. - <_> - - <_> - 10 9 1 4 -1. - <_> - 10 11 1 2 2. - <_> - - <_> - 10 10 2 2 -1. - <_> - 10 11 2 1 2. - <_> - - <_> - 0 4 2 2 -1. - <_> - 1 4 1 2 2. - <_> - - <_> - 18 5 4 3 -1. - <_> - 18 5 2 3 2. - <_> - - <_> - 0 14 4 5 -1. - <_> - 2 14 2 5 2. - <_> - - <_> - 17 9 2 8 -1. - <_> - 17 13 2 4 2. - <_> - - <_> - 4 16 3 4 -1. - <_> - 4 18 3 2 2. - <_> - - <_> - 6 18 10 2 -1. - <_> - 11 18 5 1 2. - <_> - 6 19 5 1 2. - <_> - - <_> - 0 5 4 3 -1. - <_> - 2 5 2 3 2. - <_> - - <_> - 17 14 4 5 -1. - <_> - 18 14 2 5 2. - <_> - - <_> - 1 14 4 5 -1. - <_> - 2 14 2 5 2. - <_> - - <_> - 17 18 2 2 -1. - <_> - 17 19 2 1 2. - <_> - - <_> - 10 9 1 3 -1. - <_> - 10 10 1 1 3. - <_> - - <_> - 14 17 2 3 -1. - <_> - 14 18 2 1 3. - <_> - - <_> - 0 14 6 6 -1. - <_> - 0 14 3 3 2. - <_> - 3 17 3 3 2. - <_> - - <_> - 15 18 1 2 -1. - <_> - 15 19 1 1 2. - <_> - - <_> - 8 6 5 3 -1. - <_> - 8 7 5 1 3. - <_> - - <_> - 11 6 2 3 -1. - <_> - 11 7 2 1 3. - <_> - - <_> - 5 10 3 3 -1. - <_> - 4 11 3 1 3. - 1 - <_> - - <_> - 0 12 22 4 -1. - <_> - 11 12 11 2 2. - <_> - 0 14 11 2 2. - <_> - - <_> - 9 7 7 6 -1. - <_> - 7 9 7 2 3. - 1 - <_> - - <_> - 11 15 2 2 -1. - <_> - 11 16 2 1 2. - <_> - - <_> - 8 6 1 4 -1. - <_> - 8 7 1 2 2. - <_> - - <_> - 11 12 3 1 -1. - <_> - 12 13 1 1 3. - 1 - <_> - - <_> - 11 12 1 3 -1. - <_> - 10 13 1 1 3. - 1 - <_> - - <_> - 11 10 5 6 -1. - <_> - 11 12 5 2 3. - <_> - - <_> - 8 14 3 1 -1. - <_> - 9 14 1 1 3. - <_> - - <_> - 5 14 14 3 -1. - <_> - 5 15 14 1 3. - <_> - - <_> - 6 14 4 3 -1. - <_> - 6 15 4 1 3. - <_> - - <_> - 14 10 1 3 -1. - <_> - 14 11 1 1 3. - <_> - - <_> - 2 5 12 1 -1. - <_> - 5 5 6 1 2. - <_> - - <_> - 10 1 2 4 -1. - <_> - 11 1 1 2 2. - <_> - 10 3 1 2 2. - <_> - - <_> - 7 10 1 3 -1. - <_> - 7 11 1 1 3. - <_> - - <_> - 6 7 10 6 -1. - <_> - 11 7 5 3 2. - <_> - 6 10 5 3 2. - <_> - - <_> - 9 0 4 6 -1. - <_> - 10 1 2 6 2. - 1 - <_> - - <_> - 11 3 1 3 -1. - <_> - 11 4 1 1 3. - <_> - - <_> - 8 4 5 4 -1. - <_> - 8 5 5 2 2. - <_> - - <_> - 8 2 10 9 -1. - <_> - 8 5 10 3 3. - <_> - - <_> - 7 0 3 4 -1. - <_> - 8 0 1 4 3. - <_> - - <_> - 7 9 9 3 -1. - <_> - 7 10 9 1 3. - <_> - - <_> - 9 6 1 3 -1. - <_> - 9 7 1 1 3. - <_> - - <_> - 11 6 1 6 -1. - <_> - 11 8 1 2 3. - <_> - - <_> - 11 7 3 3 -1. - <_> - 12 8 1 3 3. - 1 - <_> - - <_> - 12 6 4 10 -1. - <_> - 13 7 2 10 2. - 1 - <_> - - <_> - 10 6 10 4 -1. - <_> - 9 7 10 2 2. - 1 - <_> - - <_> - 13 5 3 3 -1. - <_> - 13 6 3 1 3. - <_> - - <_> - 1 7 3 3 -1. - <_> - 2 8 1 1 9. - <_> - - <_> - 17 8 3 3 -1. - <_> - 18 9 1 1 9. - <_> - - <_> - 6 5 3 3 -1. - <_> - 6 6 3 1 3. - <_> - - <_> - 13 6 3 1 -1. - <_> - 14 7 1 1 3. - 1 - <_> - - <_> - 9 6 1 3 -1. - <_> - 8 7 1 1 3. - 1 - <_> - - <_> - 9 6 6 3 -1. - <_> - 11 7 2 1 9. - <_> - - <_> - 10 6 2 4 -1. - <_> - 11 6 1 4 2. - <_> - - <_> - 11 4 1 9 -1. - <_> - 11 7 1 3 3. - <_> - - <_> - 10 4 1 9 -1. - <_> - 10 7 1 3 3. - <_> - - <_> - 10 5 2 4 -1. - <_> - 11 5 1 2 2. - <_> - 10 7 1 2 2. - <_> - - <_> - 3 0 2 4 -1. - <_> - 3 0 1 2 2. - <_> - 4 2 1 2 2. - <_> - - <_> - 12 1 2 2 -1. - <_> - 13 1 1 1 2. - <_> - 12 2 1 1 2. - <_> - - <_> - 8 1 2 2 -1. - <_> - 8 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 4 0 18 20 -1. - <_> - 4 0 9 20 2. - <_> - - <_> - 4 7 9 11 -1. - <_> - 7 7 3 11 3. - <_> - - <_> - 10 14 8 1 -1. - <_> - 12 14 4 1 2. - <_> - - <_> - 4 14 8 1 -1. - <_> - 6 14 4 1 2. - <_> - - <_> - 14 13 3 4 -1. - <_> - 15 13 1 4 3. - <_> - - <_> - 0 6 2 2 -1. - <_> - 0 6 1 1 2. - <_> - 1 7 1 1 2. - <_> - - <_> - 14 13 3 4 -1. - <_> - 15 13 1 4 3. - <_> - - <_> - 9 0 4 4 -1. - <_> - 10 0 2 4 2. - <_> - - <_> - 11 2 4 4 -1. - <_> - 13 2 2 2 2. - <_> - 11 4 2 2 2. - <_> - - <_> - 8 8 3 2 -1. - <_> - 9 8 1 2 3. - <_> - - <_> - 11 7 2 1 -1. - <_> - 11 7 1 1 2. - 1 - <_> - - <_> - 11 7 1 2 -1. - <_> - 11 7 1 1 2. - 1 - <_> - - <_> - 12 5 3 9 -1. - <_> - 13 8 1 3 9. - <_> - - <_> - 8 9 4 3 -1. - <_> - 10 9 2 3 2. - <_> - - <_> - 12 10 1 2 -1. - <_> - 12 10 1 1 2. - 1 - <_> - - <_> - 9 11 4 4 -1. - <_> - 9 12 4 2 2. - <_> - - <_> - 4 0 18 20 -1. - <_> - 4 0 9 20 2. - <_> - - <_> - 0 0 18 20 -1. - <_> - 9 0 9 20 2. - <_> - - <_> - 7 7 8 2 -1. - <_> - 7 7 4 2 2. - <_> - - <_> - 9 6 4 3 -1. - <_> - 11 6 2 3 2. - <_> - - <_> - 10 11 11 9 -1. - <_> - 10 14 11 3 3. - <_> - - <_> - 7 5 6 8 -1. - <_> - 9 5 2 8 3. - <_> - - <_> - 9 7 6 1 -1. - <_> - 11 7 2 1 3. - <_> - - <_> - 6 3 8 2 -1. - <_> - 6 3 4 2 2. - 1 - <_> - - <_> - 11 0 3 8 -1. - <_> - 11 0 3 4 2. - 1 - <_> - - <_> - 8 0 3 3 -1. - <_> - 9 1 1 3 3. - 1 - <_> - - <_> - 17 8 3 3 -1. - <_> - 18 9 1 1 9. - <_> - - <_> - 10 2 12 3 -1. - <_> - 9 3 12 1 3. - 1 - <_> - - <_> - 10 6 2 2 -1. - <_> - 10 7 2 1 2. - <_> - - <_> - 7 5 3 6 -1. - <_> - 8 7 1 2 9. - <_> - - <_> - 12 3 3 9 -1. - <_> - 13 6 1 3 9. - <_> - - <_> - 8 5 3 3 -1. - <_> - 8 6 3 1 3. - <_> - - <_> - 11 4 3 2 -1. - <_> - 12 5 1 2 3. - 1 - <_> - - <_> - 11 4 2 3 -1. - <_> - 10 5 2 1 3. - 1 - <_> - - <_> - 11 0 3 7 -1. - <_> - 12 0 1 7 3. - <_> - - <_> - 10 2 3 3 -1. - <_> - 11 3 1 3 3. - 1 - <_> - - <_> - 18 1 1 2 -1. - <_> - 18 2 1 1 2. - <_> - - <_> - 3 1 1 2 -1. - <_> - 3 2 1 1 2. - <_> - - <_> - 13 2 1 6 -1. - <_> - 13 5 1 3 2. - <_> - - <_> - 8 12 5 8 -1. - <_> - 8 16 5 4 2. - <_> - - <_> - 11 15 2 2 -1. - <_> - 11 16 2 1 2. - <_> - - <_> - 6 2 10 18 -1. - <_> - 6 11 10 9 2. - <_> - - <_> - 16 8 1 12 -1. - <_> - 16 12 1 4 3. - <_> - - <_> - 9 2 13 4 -1. - <_> - 8 3 13 2 2. - 1 - <_> - - <_> - 13 2 1 8 -1. - <_> - 13 4 1 4 2. - <_> - - <_> - 8 2 1 8 -1. - <_> - 8 4 1 4 2. - <_> - - <_> - 12 3 2 4 -1. - <_> - 12 3 2 2 2. - 1 - <_> - - <_> - 11 2 4 4 -1. - <_> - 11 2 2 4 2. - 1 - <_> - - <_> - 19 15 3 2 -1. - <_> - 20 16 1 2 3. - 1 - <_> - - <_> - 3 15 2 3 -1. - <_> - 2 16 2 1 3. - 1 - <_> - - <_> - 18 19 3 1 -1. - <_> - 19 19 1 1 3. - <_> - - <_> - 1 19 3 1 -1. - <_> - 2 19 1 1 3. - <_> - - <_> - 11 5 2 5 -1. - <_> - 11 5 1 5 2. - <_> - - <_> - 8 5 1 3 -1. - <_> - 8 6 1 1 3. - <_> - - <_> - 9 7 6 2 -1. - <_> - 9 8 6 1 2. - <_> - - <_> - 11 6 6 1 -1. - <_> - 13 8 2 1 3. - 1 - <_> - - <_> - 14 3 2 12 -1. - <_> - 14 3 2 6 2. - 1 - <_> - - <_> - 9 6 3 2 -1. - <_> - 9 7 3 1 2. - <_> - - <_> - 14 3 2 12 -1. - <_> - 14 3 2 6 2. - 1 - <_> - - <_> - 8 3 12 2 -1. - <_> - 8 3 6 2 2. - 1 - <_> - - <_> - 11 11 11 9 -1. - <_> - 11 14 11 3 3. - <_> - - <_> - 0 11 11 9 -1. - <_> - 0 14 11 3 3. - <_> - - <_> - 15 7 2 9 -1. - <_> - 15 10 2 3 3. - <_> - - <_> - 5 7 2 9 -1. - <_> - 5 10 2 3 3. - <_> - - <_> - 14 10 4 3 -1. - <_> - 14 11 4 1 3. - <_> - - <_> - 4 10 4 3 -1. - <_> - 4 11 4 1 3. - <_> - - <_> - 17 8 3 3 -1. - <_> - 18 9 1 1 9. - <_> - - <_> - 2 8 3 3 -1. - <_> - 3 9 1 1 9. - <_> - - <_> - 15 18 1 2 -1. - <_> - 15 19 1 1 2. - <_> - - <_> - 0 6 2 2 -1. - <_> - 0 6 1 1 2. - <_> - 1 7 1 1 2. - <_> - - <_> - 13 16 2 2 -1. - <_> - 14 16 1 1 2. - <_> - 13 17 1 1 2. - <_> - - <_> - 6 18 1 2 -1. - <_> - 6 19 1 1 2. - <_> - - <_> - 16 18 6 1 -1. - <_> - 16 18 3 1 2. - <_> - - <_> - 0 18 6 1 -1. - <_> - 3 18 3 1 2. - <_> - - <_> - 17 17 3 3 -1. - <_> - 18 18 1 1 9. - <_> - - <_> - 2 17 3 3 -1. - <_> - 3 18 1 1 9. - <_> - - <_> - 13 16 2 2 -1. - <_> - 14 16 1 1 2. - <_> - 13 17 1 1 2. - <_> - - <_> - 7 16 2 2 -1. - <_> - 7 16 1 1 2. - <_> - 8 17 1 1 2. - <_> - - <_> - 9 8 4 2 -1. - <_> - 11 8 2 1 2. - <_> - 9 9 2 1 2. - <_> - - <_> - 10 0 4 6 -1. - <_> - 10 0 4 3 2. - 1 - <_> - - <_> - 10 18 2 2 -1. - <_> - 11 18 1 1 2. - <_> - 10 19 1 1 2. - <_> - - <_> - 10 6 2 4 -1. - <_> - 10 7 2 2 2. - <_> - - <_> - 9 7 5 6 -1. - <_> - 9 9 5 2 3. - <_> - - <_> - 10 10 2 3 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 8 9 6 6 -1. - <_> - 10 11 2 2 9. - <_> - - <_> - 8 10 6 2 -1. - <_> - 10 10 2 2 3. - <_> - - <_> - 11 5 2 5 -1. - <_> - 11 5 1 5 2. - <_> - - <_> - 8 10 1 6 -1. - <_> - 8 12 1 2 3. - <_> - - <_> - 10 11 2 3 -1. - <_> - 10 12 2 1 3. - <_> - - <_> - 8 13 2 2 -1. - <_> - 8 13 1 1 2. - <_> - 9 14 1 1 2. - <_> - - <_> - 15 1 2 10 -1. - <_> - 15 1 1 10 2. - 1 - <_> - - <_> - 4 9 10 2 -1. - <_> - 4 9 5 1 2. - <_> - 9 10 5 1 2. - <_> - - <_> - 11 18 1 2 -1. - <_> - 11 19 1 1 2. - <_> - - <_> - 10 18 1 2 -1. - <_> - 10 19 1 1 2. - <_> - - <_> - 16 10 4 8 -1. - <_> - 18 10 2 4 2. - <_> - 16 14 2 4 2. - <_> - - <_> - 2 10 4 8 -1. - <_> - 2 10 2 4 2. - <_> - 4 14 2 4 2. - <_> - - <_> - 17 8 2 6 -1. - <_> - 17 8 1 6 2. - <_> - - <_> - 3 8 2 6 -1. - <_> - 4 8 1 6 2. - <_> - - <_> - 18 6 3 14 -1. - <_> - 19 6 1 14 3. - <_> - - <_> - 1 6 3 14 -1. - <_> - 2 6 1 14 3. - <_> - - <_> - 16 17 2 2 -1. - <_> - 17 17 1 1 2. - <_> - 16 18 1 1 2. - <_> - - <_> - 4 17 2 2 -1. - <_> - 4 17 1 1 2. - <_> - 5 18 1 1 2. - <_> - - <_> - 17 17 1 2 -1. - <_> - 17 18 1 1 2. - <_> - - <_> - 4 17 1 2 -1. - <_> - 4 18 1 1 2. - <_> - - <_> - 12 2 1 4 -1. - <_> - 11 3 1 2 2. - 1 - <_> - - <_> - 10 2 4 1 -1. - <_> - 11 3 2 1 2. - 1 - <_> - - <_> - 15 0 2 2 -1. - <_> - 16 0 1 1 2. - <_> - 15 1 1 1 2. - <_> - - <_> - 1 0 5 6 -1. - <_> - 1 3 5 3 2. - <_> - - <_> - 16 3 1 2 -1. - <_> - 16 4 1 1 2. - <_> - - <_> - 6 0 16 3 -1. - <_> - 5 1 16 1 3. - 1 - <_> - - <_> - 12 0 2 20 -1. - <_> - 12 0 1 20 2. - <_> - - <_> - 7 7 6 2 -1. - <_> - 7 8 6 1 2. - <_> - - <_> - 18 1 1 9 -1. - <_> - 18 4 1 3 3. - <_> - - <_> - 8 0 2 20 -1. - <_> - 9 0 1 20 2. - <_> - - <_> - 18 1 2 3 -1. - <_> - 18 1 1 3 2. - <_> - - <_> - 2 1 2 3 -1. - <_> - 3 1 1 3 2. - <_> - - <_> - 18 1 3 2 -1. - <_> - 19 1 1 2 3. - <_> - - <_> - 5 3 1 2 -1. - <_> - 5 4 1 1 2. - <_> - - <_> - 1 3 20 1 -1. - <_> - 6 3 10 1 2. - <_> - - <_> - 11 0 5 3 -1. - <_> - 10 1 5 1 3. - 1 - <_> - - <_> - 13 6 3 4 -1. - <_> - 12 7 3 2 2. - 1 - <_> - - <_> - 9 4 8 1 -1. - <_> - 11 6 4 1 2. - 1 - <_> - - <_> - 13 6 1 4 -1. - <_> - 12 7 1 2 2. - 1 - <_> - - <_> - 8 7 2 6 -1. - <_> - 8 9 2 2 3. - <_> - - <_> - 14 11 4 6 -1. - <_> - 14 13 4 2 3. - <_> - - <_> - 6 8 9 3 -1. - <_> - 6 9 9 1 3. - <_> - - <_> - 8 9 9 2 -1. - <_> - 8 10 9 1 2. - <_> - - <_> - 2 13 6 2 -1. - <_> - 2 13 3 1 2. - <_> - 5 14 3 1 2. - <_> - - <_> - 12 0 3 6 -1. - <_> - 13 1 1 6 3. - 1 - <_> - - <_> - 0 10 8 8 -1. - <_> - 0 12 8 4 2. - <_> - - <_> - 11 12 10 4 -1. - <_> - 11 12 5 4 2. - <_> - - <_> - 10 0 6 3 -1. - <_> - 9 1 6 1 3. - 1 - <_> - - <_> - 12 1 3 8 -1. - <_> - 13 2 1 8 3. - 1 - <_> - - <_> - 10 1 8 3 -1. - <_> - 9 2 8 1 3. - 1 - <_> - - <_> - 13 9 2 2 -1. - <_> - 14 9 1 1 2. - <_> - 13 10 1 1 2. - <_> - - <_> - 8 7 2 4 -1. - <_> - 8 7 1 2 2. - <_> - 9 9 1 2 2. - <_> - - <_> - 4 0 14 12 -1. - <_> - 4 3 14 6 2. - <_> - - <_> - 1 0 16 12 -1. - <_> - 1 3 16 6 2. - <_> - - <_> - 12 0 8 6 -1. - <_> - 12 3 8 3 2. - <_> - - <_> - 8 14 1 3 -1. - <_> - 8 15 1 1 3. - <_> - - <_> - 13 9 2 2 -1. - <_> - 14 9 1 1 2. - <_> - 13 10 1 1 2. - <_> - - <_> - 8 6 2 2 -1. - <_> - 8 6 1 1 2. - <_> - 9 7 1 1 2. - <_> - - <_> - 12 4 4 4 -1. - <_> - 11 5 4 2 2. - 1 - <_> - - <_> - 8 4 6 4 -1. - <_> - 8 4 3 2 2. - <_> - 11 6 3 2 2. - <_> - - <_> - 13 6 2 4 -1. - <_> - 13 8 2 2 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 12 5 2 2 -1. - <_> - 12 5 1 2 2. - 1 - <_> - - <_> - 0 4 20 7 -1. - <_> - 10 4 10 7 2. - <_> - - <_> - 15 0 2 2 -1. - <_> - 16 0 1 1 2. - <_> - 15 1 1 1 2. - <_> - - <_> - 10 15 3 2 -1. - <_> - 10 15 3 1 2. - 1 - <_> - - <_> - 5 16 17 4 -1. - <_> - 5 18 17 2 2. - <_> - - <_> - 4 1 9 1 -1. - <_> - 7 4 3 1 3. - 1 - <_> - - <_> - 12 5 1 6 -1. - <_> - 10 7 1 2 3. - 1 - <_> - - <_> - 10 5 6 1 -1. - <_> - 12 7 2 1 3. - 1 - <_> - - <_> - 9 0 12 2 -1. - <_> - 9 0 6 2 2. - <_> - - <_> - 7 17 3 3 -1. - <_> - 8 18 1 1 9. - <_> - - <_> - 1 0 20 2 -1. - <_> - 1 0 10 2 2. - <_> - - <_> - 0 0 15 3 -1. - <_> - 5 1 5 1 9. - <_> - - <_> - 8 1 12 1 -1. - <_> - 11 1 6 1 2. - <_> - - <_> - 2 1 12 1 -1. - <_> - 5 1 6 1 2. - <_> - - <_> - 13 5 3 1 -1. - <_> - 14 5 1 1 3. - <_> - - <_> - 9 15 3 2 -1. - <_> - 10 16 1 2 3. - 1 - <_> - - <_> - 12 6 3 13 -1. - <_> - 13 6 1 13 3. - <_> - - <_> - 9 5 4 3 -1. - <_> - 10 6 2 3 2. - 1 - <_> - - <_> - 8 2 9 9 -1. - <_> - 11 2 3 9 3. - <_> - - <_> - 11 2 5 4 -1. - <_> - 11 2 5 2 2. - 1 - <_> - - <_> - 15 6 6 6 -1. - <_> - 13 8 6 2 3. - 1 - <_> - - <_> - 11 2 6 3 -1. - <_> - 13 4 2 3 3. - 1 - <_> - - <_> - 9 6 6 3 -1. - <_> - 11 7 2 1 9. - <_> - - <_> - 10 5 2 4 -1. - <_> - 10 5 1 2 2. - <_> - 11 7 1 2 2. - <_> - - <_> - 11 6 2 2 -1. - <_> - 12 6 1 1 2. - <_> - 11 7 1 1 2. - <_> - - <_> - 6 4 9 3 -1. - <_> - 9 5 3 1 9. - <_> - - <_> - 11 3 1 3 -1. - <_> - 11 4 1 1 3. - <_> - - <_> - 9 2 3 6 -1. - <_> - 9 4 3 2 3. - <_> - - <_> - 11 6 2 2 -1. - <_> - 12 6 1 1 2. - <_> - 11 7 1 1 2. - <_> - - <_> - 5 0 2 2 -1. - <_> - 5 0 1 1 2. - <_> - 6 1 1 1 2. - <_> - - <_> - 15 0 2 3 -1. - <_> - 14 1 2 1 3. - 1 - <_> - - <_> - 1 6 16 2 -1. - <_> - 9 6 8 2 2. - <_> - - <_> - 9 0 8 2 -1. - <_> - 13 0 4 1 2. - <_> - 9 1 4 1 2. - <_> - - <_> - 8 14 1 3 -1. - <_> - 8 15 1 1 3. - <_> - - <_> - 13 14 3 1 -1. - <_> - 14 14 1 1 3. - <_> - - <_> - 3 15 3 5 -1. - <_> - 4 15 1 5 3. - <_> - - <_> - 15 0 2 2 -1. - <_> - 16 0 1 1 2. - <_> - 15 1 1 1 2. - <_> - - <_> - 3 7 12 1 -1. - <_> - 9 7 6 1 2. - <_> - - <_> - 13 14 3 1 -1. - <_> - 14 14 1 1 3. - <_> - - <_> - 9 5 3 2 -1. - <_> - 10 5 1 2 3. - <_> - - <_> - 10 7 3 3 -1. - <_> - 11 7 1 3 3. - <_> - - <_> - 9 5 2 5 -1. - <_> - 10 5 1 5 2. - <_> - - <_> - 10 2 6 15 -1. - <_> - 12 7 2 5 9. - <_> - - <_> - 8 2 3 15 -1. - <_> - 9 7 1 5 9. - <_> - - <_> - 11 7 10 10 -1. - <_> - 16 7 5 5 2. - <_> - 11 12 5 5 2. - <_> - - <_> - 3 14 3 6 -1. - <_> - 4 14 1 6 3. - <_> - - <_> - 9 4 4 4 -1. - <_> - 11 4 2 2 2. - <_> - 9 6 2 2 2. - <_> - - <_> - 0 0 21 2 -1. - <_> - 7 0 7 2 3. - <_> - - <_> - 11 1 8 1 -1. - <_> - 11 1 4 1 2. - <_> - - <_> - 3 1 8 1 -1. - <_> - 7 1 4 1 2. - <_> - - <_> - 15 3 3 3 -1. - <_> - 15 4 3 1 3. - <_> - - <_> - 9 12 3 3 -1. - <_> - 9 13 3 1 3. - <_> - - <_> - 12 12 2 2 -1. - <_> - 12 13 2 1 2. - <_> - - <_> - 8 12 2 2 -1. - <_> - 8 13 2 1 2. - <_> - - <_> - 10 7 8 12 -1. - <_> - 10 11 8 4 3. - <_> - - <_> - 8 13 1 2 -1. - <_> - 8 14 1 1 2. - <_> - - <_> - 10 13 4 2 -1. - <_> - 12 13 2 1 2. - <_> - 10 14 2 1 2. - <_> - - <_> - 6 14 3 1 -1. - <_> - 7 14 1 1 3. - <_> - - <_> - 15 15 2 4 -1. - <_> - 16 15 1 2 2. - <_> - 15 17 1 2 2. - <_> - - <_> - 4 3 3 3 -1. - <_> - 4 4 3 1 3. - <_> - - <_> - 15 0 2 3 -1. - <_> - 14 1 2 1 3. - 1 - <_> - - <_> - 3 12 2 2 -1. - <_> - 3 12 1 1 2. - <_> - 4 13 1 1 2. - <_> - - <_> - 17 10 1 3 -1. - <_> - 17 11 1 1 3. - <_> - - <_> - 5 1 3 2 -1. - <_> - 6 1 1 2 3. - <_> - - <_> - 13 0 3 18 -1. - <_> - 14 0 1 18 3. - <_> - - <_> - 6 0 3 18 -1. - <_> - 7 0 1 18 3. - <_> - - <_> - 15 15 2 4 -1. - <_> - 16 15 1 2 2. - <_> - 15 17 1 2 2. - <_> - - <_> - 0 12 12 8 -1. - <_> - 4 12 4 8 3. - <_> - - <_> - 10 8 2 3 -1. - <_> - 10 8 1 3 2. - <_> - - <_> - 3 0 10 3 -1. - <_> - 3 0 5 3 2. - 1 - <_> - - <_> - 15 15 2 4 -1. - <_> - 16 15 1 2 2. - <_> - 15 17 1 2 2. - <_> - - <_> - 5 15 2 4 -1. - <_> - 5 15 1 2 2. - <_> - 6 17 1 2 2. - <_> - - <_> - 17 10 1 3 -1. - <_> - 17 11 1 1 3. - From e2f24f43c982365e1483ad3b3e73c0f5b5bb3b7e Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Sun, 10 Aug 2014 01:54:16 +0400 Subject: [PATCH 134/189] added some basic functionality needed by the new face module (moved from the old "contrib") --- modules/core/include/opencv2/core.hpp | 54 + modules/core/src/lda.cpp | 1119 +++++++++++++++++ modules/core/src/matmul.cpp | 1 - modules/imgproc/doc/colormaps.rst | 107 ++ modules/imgproc/doc/imgproc.rst | 1 + .../doc/pics/colormaps/colorscale_autumn.jpg | Bin 0 -> 1352 bytes .../doc/pics/colormaps/colorscale_bone.jpg | Bin 0 -> 1325 bytes .../doc/pics/colormaps/colorscale_cool.jpg | Bin 0 -> 1325 bytes .../doc/pics/colormaps/colorscale_hot.jpg | Bin 0 -> 1403 bytes .../doc/pics/colormaps/colorscale_hsv.jpg | Bin 0 -> 1690 bytes .../doc/pics/colormaps/colorscale_jet.jpg | Bin 0 -> 1579 bytes .../doc/pics/colormaps/colorscale_mkpj1.jpg | Bin 0 -> 1569 bytes .../doc/pics/colormaps/colorscale_mkpj2.jpg | Bin 0 -> 1517 bytes .../doc/pics/colormaps/colorscale_ocean.jpg | Bin 0 -> 1430 bytes .../doc/pics/colormaps/colorscale_pink.jpg | Bin 0 -> 1390 bytes .../doc/pics/colormaps/colorscale_rainbow.jpg | Bin 0 -> 1524 bytes .../doc/pics/colormaps/colorscale_spring.jpg | Bin 0 -> 1254 bytes .../doc/pics/colormaps/colorscale_summer.jpg | Bin 0 -> 1345 bytes .../doc/pics/colormaps/colorscale_winter.jpg | Bin 0 -> 1238 bytes modules/imgproc/include/opencv2/imgproc.hpp | 18 + modules/imgproc/src/colormap.cpp | 530 ++++++++ modules/python/common.cmake | 2 +- 22 files changed, 1830 insertions(+), 2 deletions(-) create mode 100644 modules/core/src/lda.cpp create mode 100644 modules/imgproc/doc/colormaps.rst create mode 100644 modules/imgproc/doc/pics/colormaps/colorscale_autumn.jpg create mode 100644 modules/imgproc/doc/pics/colormaps/colorscale_bone.jpg create mode 100644 modules/imgproc/doc/pics/colormaps/colorscale_cool.jpg create mode 100644 modules/imgproc/doc/pics/colormaps/colorscale_hot.jpg create mode 100644 modules/imgproc/doc/pics/colormaps/colorscale_hsv.jpg create mode 100644 modules/imgproc/doc/pics/colormaps/colorscale_jet.jpg create mode 100644 modules/imgproc/doc/pics/colormaps/colorscale_mkpj1.jpg create mode 100644 modules/imgproc/doc/pics/colormaps/colorscale_mkpj2.jpg create mode 100644 modules/imgproc/doc/pics/colormaps/colorscale_ocean.jpg create mode 100644 modules/imgproc/doc/pics/colormaps/colorscale_pink.jpg create mode 100644 modules/imgproc/doc/pics/colormaps/colorscale_rainbow.jpg create mode 100644 modules/imgproc/doc/pics/colormaps/colorscale_spring.jpg create mode 100644 modules/imgproc/doc/pics/colormaps/colorscale_summer.jpg create mode 100644 modules/imgproc/doc/pics/colormaps/colorscale_winter.jpg create mode 100644 modules/imgproc/src/colormap.cpp diff --git a/modules/core/include/opencv2/core.hpp b/modules/core/include/opencv2/core.hpp index b5249c9f50..773ee82d64 100644 --- a/modules/core/include/opencv2/core.hpp +++ b/modules/core/include/opencv2/core.hpp @@ -690,7 +690,61 @@ public: Mat mean; //!< mean value subtracted before the projection and added after the back projection }; +// Linear Discriminant Analysis +class CV_EXPORTS LDA +{ +public: + // Initializes a LDA with num_components (default 0) and specifies how + // samples are aligned (default dataAsRow=true). + explicit LDA(int num_components = 0); + + // Initializes and performs a Discriminant Analysis with Fisher's + // Optimization Criterion on given data in src and corresponding labels + // in labels. If 0 (or less) number of components are given, they are + // automatically determined for given data in computation. + LDA(InputArrayOfArrays src, InputArray labels, int num_components = 0); + + // Serializes this object to a given filename. + void save(const String& filename) const; + + // Deserializes this object from a given filename. + void load(const String& filename); + + // Serializes this object to a given cv::FileStorage. + void save(FileStorage& fs) const; + + // Deserializes this object from a given cv::FileStorage. + void load(const FileStorage& node); + + // Destructor. + ~LDA(); + + //! Compute the discriminants for data in src and labels. + void compute(InputArrayOfArrays src, InputArray labels); + // Projects samples into the LDA subspace. + Mat project(InputArray src); + + // Reconstructs projections from the LDA subspace. + Mat reconstruct(InputArray src); + + // Returns the eigenvectors of this LDA. + Mat eigenvectors() const { return _eigenvectors; } + + // Returns the eigenvalues of this LDA. + Mat eigenvalues() const { return _eigenvalues; } + + static Mat subspaceProject(InputArray W, InputArray mean, InputArray src); + static Mat subspaceReconstruct(InputArray W, InputArray mean, InputArray src); + +protected: + bool _dataAsRow; + int _num_components; + Mat _eigenvectors; + Mat _eigenvalues; + + void lda(InputArrayOfArrays src, InputArray labels); +}; /*! Singular Value Decomposition class diff --git a/modules/core/src/lda.cpp b/modules/core/src/lda.cpp new file mode 100644 index 0000000000..5e20b5e6a1 --- /dev/null +++ b/modules/core/src/lda.cpp @@ -0,0 +1,1119 @@ +/* + * Copyright (c) 2011. Philipp Wagner . + * Released to public domain under terms of the BSD Simplified license. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the organization nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * See + */ + +#include "precomp.hpp" +#include +#include +#include + +namespace cv +{ + +// Removes duplicate elements in a given vector. +template +inline std::vector<_Tp> remove_dups(const std::vector<_Tp>& src) { + typedef typename std::set<_Tp>::const_iterator constSetIterator; + typedef typename std::vector<_Tp>::const_iterator constVecIterator; + std::set<_Tp> set_elems; + for (constVecIterator it = src.begin(); it != src.end(); ++it) + set_elems.insert(*it); + std::vector<_Tp> elems; + for (constSetIterator it = set_elems.begin(); it != set_elems.end(); ++it) + elems.push_back(*it); + return elems; +} + +static Mat argsort(InputArray _src, bool ascending=true) +{ + Mat src = _src.getMat(); + if (src.rows != 1 && src.cols != 1) { + String error_message = "Wrong shape of input matrix! Expected a matrix with one row or column."; + CV_Error(Error::StsBadArg, error_message); + } + int flags = SORT_EVERY_ROW | (ascending ? SORT_ASCENDING : SORT_DESCENDING); + Mat sorted_indices; + sortIdx(src.reshape(1,1),sorted_indices,flags); + return sorted_indices; +} + +static Mat asRowMatrix(InputArrayOfArrays src, int rtype, double alpha=1, double beta=0) { + // make sure the input data is a vector of matrices or vector of vector + if(src.kind() != _InputArray::STD_VECTOR_MAT && src.kind() != _InputArray::STD_VECTOR_VECTOR) { + String error_message = "The data is expected as InputArray::STD_VECTOR_MAT (a std::vector) or _InputArray::STD_VECTOR_VECTOR (a std::vector< std::vector<...> >)."; + CV_Error(Error::StsBadArg, error_message); + } + // number of samples + size_t n = src.total(); + // return empty matrix if no matrices given + if(n == 0) + return Mat(); + // dimensionality of (reshaped) samples + size_t d = src.getMat(0).total(); + // create data matrix + Mat data((int)n, (int)d, rtype); + // now copy data + for(int i = 0; i < (int)n; i++) { + // make sure data can be reshaped, throw exception if not! + if(src.getMat(i).total() != d) { + String error_message = format("Wrong number of elements in matrix #%d! Expected %d was %d.", i, (int)d, (int)src.getMat(i).total()); + CV_Error(Error::StsBadArg, error_message); + } + // get a hold of the current row + Mat xi = data.row(i); + // make reshape happy by cloning for non-continuous matrices + if(src.getMat(i).isContinuous()) { + src.getMat(i).reshape(1, 1).convertTo(xi, rtype, alpha, beta); + } else { + src.getMat(i).clone().reshape(1, 1).convertTo(xi, rtype, alpha, beta); + } + } + return data; +} + +static void sortMatrixColumnsByIndices(InputArray _src, InputArray _indices, OutputArray _dst) { + if(_indices.getMat().type() != CV_32SC1) { + CV_Error(Error::StsUnsupportedFormat, "cv::sortColumnsByIndices only works on integer indices!"); + } + Mat src = _src.getMat(); + std::vector indices = _indices.getMat(); + _dst.create(src.rows, src.cols, src.type()); + Mat dst = _dst.getMat(); + for(size_t idx = 0; idx < indices.size(); idx++) { + Mat originalCol = src.col(indices[idx]); + Mat sortedCol = dst.col((int)idx); + originalCol.copyTo(sortedCol); + } +} + +static Mat sortMatrixColumnsByIndices(InputArray src, InputArray indices) { + Mat dst; + sortMatrixColumnsByIndices(src, indices, dst); + return dst; +} + + +template static bool +isSymmetric_(InputArray src) { + Mat _src = src.getMat(); + if(_src.cols != _src.rows) + return false; + for (int i = 0; i < _src.rows; i++) { + for (int j = 0; j < _src.cols; j++) { + _Tp a = _src.at<_Tp> (i, j); + _Tp b = _src.at<_Tp> (j, i); + if (a != b) { + return false; + } + } + } + return true; +} + +template static bool +isSymmetric_(InputArray src, double eps) { + Mat _src = src.getMat(); + if(_src.cols != _src.rows) + return false; + for (int i = 0; i < _src.rows; i++) { + for (int j = 0; j < _src.cols; j++) { + _Tp a = _src.at<_Tp> (i, j); + _Tp b = _src.at<_Tp> (j, i); + if (std::abs(a - b) > eps) { + return false; + } + } + } + return true; +} + +static bool isSymmetric(InputArray src, double eps=1e-16) +{ + Mat m = src.getMat(); + switch (m.type()) { + case CV_8SC1: return isSymmetric_(m); break; + case CV_8UC1: + return isSymmetric_(m); break; + case CV_16SC1: + return isSymmetric_(m); break; + case CV_16UC1: + return isSymmetric_(m); break; + case CV_32SC1: + return isSymmetric_(m); break; + case CV_32FC1: + return isSymmetric_(m, eps); break; + case CV_64FC1: + return isSymmetric_(m, eps); break; + default: + break; + } + return false; +} + + +//------------------------------------------------------------------------------ +// cv::subspaceProject +//------------------------------------------------------------------------------ +Mat LDA::subspaceProject(InputArray _W, InputArray _mean, InputArray _src) { + // get data matrices + Mat W = _W.getMat(); + Mat mean = _mean.getMat(); + Mat src = _src.getMat(); + // get number of samples and dimension + int n = src.rows; + int d = src.cols; + // make sure the data has the correct shape + if(W.rows != d) { + String error_message = format("Wrong shapes for given matrices. Was size(src) = (%d,%d), size(W) = (%d,%d).", src.rows, src.cols, W.rows, W.cols); + CV_Error(Error::StsBadArg, error_message); + } + // make sure mean is correct if not empty + if(!mean.empty() && (mean.total() != (size_t) d)) { + String error_message = format("Wrong mean shape for the given data matrix. Expected %d, but was %d.", d, mean.total()); + CV_Error(Error::StsBadArg, error_message); + } + // create temporary matrices + Mat X, Y; + // make sure you operate on correct type + src.convertTo(X, W.type()); + // safe to do, because of above assertion + if(!mean.empty()) { + for(int i=0; i + _Tp *alloc_1d(int m) { + return new _Tp[m]; + } + + // Allocates memory. + template + _Tp *alloc_1d(int m, _Tp val) { + _Tp *arr = alloc_1d<_Tp> (m); + for (int i = 0; i < m; i++) + arr[i] = val; + return arr; + } + + // Allocates memory. + template + _Tp **alloc_2d(int m, int _n) { + _Tp **arr = new _Tp*[m]; + for (int i = 0; i < m; i++) + arr[i] = new _Tp[_n]; + return arr; + } + + // Allocates memory. + template + _Tp **alloc_2d(int m, int _n, _Tp val) { + _Tp **arr = alloc_2d<_Tp> (m, _n); + for (int i = 0; i < m; i++) { + for (int j = 0; j < _n; j++) { + arr[i][j] = val; + } + } + return arr; + } + + void cdiv(double xr, double xi, double yr, double yi) { + double r, dv; + if (std::abs(yr) > std::abs(yi)) { + r = yi / yr; + dv = yr + r * yi; + cdivr = (xr + r * xi) / dv; + cdivi = (xi - r * xr) / dv; + } else { + r = yr / yi; + dv = yi + r * yr; + cdivr = (r * xr + xi) / dv; + cdivi = (r * xi - xr) / dv; + } + } + + // Nonsymmetric reduction from Hessenberg to real Schur form. + + void hqr2() { + + // This is derived from the Algol procedure hqr2, + // by Martin and Wilkinson, Handbook for Auto. Comp., + // Vol.ii-Linear Algebra, and the corresponding + // Fortran subroutine in EISPACK. + + // Initialize + int nn = this->n; + int n1 = nn - 1; + int low = 0; + int high = nn - 1; + double eps = std::pow(2.0, -52.0); + double exshift = 0.0; + double p = 0, q = 0, r = 0, s = 0, z = 0, t, w, x, y; + + // Store roots isolated by balanc and compute matrix norm + + double norm = 0.0; + for (int i = 0; i < nn; i++) { + if (i < low || i > high) { + d[i] = H[i][i]; + e[i] = 0.0; + } + for (int j = std::max(i - 1, 0); j < nn; j++) { + norm = norm + std::abs(H[i][j]); + } + } + + // Outer loop over eigenvalue index + int iter = 0; + while (n1 >= low) { + + // Look for single small sub-diagonal element + int l = n1; + while (l > low) { + s = std::abs(H[l - 1][l - 1]) + std::abs(H[l][l]); + if (s == 0.0) { + s = norm; + } + if (std::abs(H[l][l - 1]) < eps * s) { + break; + } + l--; + } + + // Check for convergence + // One root found + + if (l == n1) { + H[n1][n1] = H[n1][n1] + exshift; + d[n1] = H[n1][n1]; + e[n1] = 0.0; + n1--; + iter = 0; + + // Two roots found + + } else if (l == n1 - 1) { + w = H[n1][n1 - 1] * H[n1 - 1][n1]; + p = (H[n1 - 1][n1 - 1] - H[n1][n1]) / 2.0; + q = p * p + w; + z = std::sqrt(std::abs(q)); + H[n1][n1] = H[n1][n1] + exshift; + H[n1 - 1][n1 - 1] = H[n1 - 1][n1 - 1] + exshift; + x = H[n1][n1]; + + // Real pair + + if (q >= 0) { + if (p >= 0) { + z = p + z; + } else { + z = p - z; + } + d[n1 - 1] = x + z; + d[n1] = d[n1 - 1]; + if (z != 0.0) { + d[n1] = x - w / z; + } + e[n1 - 1] = 0.0; + e[n1] = 0.0; + x = H[n1][n1 - 1]; + s = std::abs(x) + std::abs(z); + p = x / s; + q = z / s; + r = std::sqrt(p * p + q * q); + p = p / r; + q = q / r; + + // Row modification + + for (int j = n1 - 1; j < nn; j++) { + z = H[n1 - 1][j]; + H[n1 - 1][j] = q * z + p * H[n1][j]; + H[n1][j] = q * H[n1][j] - p * z; + } + + // Column modification + + for (int i = 0; i <= n1; i++) { + z = H[i][n1 - 1]; + H[i][n1 - 1] = q * z + p * H[i][n1]; + H[i][n1] = q * H[i][n1] - p * z; + } + + // Accumulate transformations + + for (int i = low; i <= high; i++) { + z = V[i][n1 - 1]; + V[i][n1 - 1] = q * z + p * V[i][n1]; + V[i][n1] = q * V[i][n1] - p * z; + } + + // Complex pair + + } else { + d[n1 - 1] = x + p; + d[n1] = x + p; + e[n1 - 1] = z; + e[n1] = -z; + } + n1 = n1 - 2; + iter = 0; + + // No convergence yet + + } else { + + // Form shift + + x = H[n1][n1]; + y = 0.0; + w = 0.0; + if (l < n1) { + y = H[n1 - 1][n1 - 1]; + w = H[n1][n1 - 1] * H[n1 - 1][n1]; + } + + // Wilkinson's original ad hoc shift + + if (iter == 10) { + exshift += x; + for (int i = low; i <= n1; i++) { + H[i][i] -= x; + } + s = std::abs(H[n1][n1 - 1]) + std::abs(H[n1 - 1][n1 - 2]); + x = y = 0.75 * s; + w = -0.4375 * s * s; + } + + // MATLAB's new ad hoc shift + + if (iter == 30) { + s = (y - x) / 2.0; + s = s * s + w; + if (s > 0) { + s = std::sqrt(s); + if (y < x) { + s = -s; + } + s = x - w / ((y - x) / 2.0 + s); + for (int i = low; i <= n1; i++) { + H[i][i] -= s; + } + exshift += s; + x = y = w = 0.964; + } + } + + iter = iter + 1; // (Could check iteration count here.) + + // Look for two consecutive small sub-diagonal elements + int m = n1 - 2; + while (m >= l) { + z = H[m][m]; + r = x - z; + s = y - z; + p = (r * s - w) / H[m + 1][m] + H[m][m + 1]; + q = H[m + 1][m + 1] - z - r - s; + r = H[m + 2][m + 1]; + s = std::abs(p) + std::abs(q) + std::abs(r); + p = p / s; + q = q / s; + r = r / s; + if (m == l) { + break; + } + if (std::abs(H[m][m - 1]) * (std::abs(q) + std::abs(r)) < eps * (std::abs(p) + * (std::abs(H[m - 1][m - 1]) + std::abs(z) + std::abs( + H[m + 1][m + 1])))) { + break; + } + m--; + } + + for (int i = m + 2; i <= n1; i++) { + H[i][i - 2] = 0.0; + if (i > m + 2) { + H[i][i - 3] = 0.0; + } + } + + // Double QR step involving rows l:n and columns m:n + + for (int k = m; k <= n1 - 1; k++) { + bool notlast = (k != n1 - 1); + if (k != m) { + p = H[k][k - 1]; + q = H[k + 1][k - 1]; + r = (notlast ? H[k + 2][k - 1] : 0.0); + x = std::abs(p) + std::abs(q) + std::abs(r); + if (x != 0.0) { + p = p / x; + q = q / x; + r = r / x; + } + } + if (x == 0.0) { + break; + } + s = std::sqrt(p * p + q * q + r * r); + if (p < 0) { + s = -s; + } + if (s != 0) { + if (k != m) { + H[k][k - 1] = -s * x; + } else if (l != m) { + H[k][k - 1] = -H[k][k - 1]; + } + p = p + s; + x = p / s; + y = q / s; + z = r / s; + q = q / p; + r = r / p; + + // Row modification + + for (int j = k; j < nn; j++) { + p = H[k][j] + q * H[k + 1][j]; + if (notlast) { + p = p + r * H[k + 2][j]; + H[k + 2][j] = H[k + 2][j] - p * z; + } + H[k][j] = H[k][j] - p * x; + H[k + 1][j] = H[k + 1][j] - p * y; + } + + // Column modification + + for (int i = 0; i <= std::min(n1, k + 3); i++) { + p = x * H[i][k] + y * H[i][k + 1]; + if (notlast) { + p = p + z * H[i][k + 2]; + H[i][k + 2] = H[i][k + 2] - p * r; + } + H[i][k] = H[i][k] - p; + H[i][k + 1] = H[i][k + 1] - p * q; + } + + // Accumulate transformations + + for (int i = low; i <= high; i++) { + p = x * V[i][k] + y * V[i][k + 1]; + if (notlast) { + p = p + z * V[i][k + 2]; + V[i][k + 2] = V[i][k + 2] - p * r; + } + V[i][k] = V[i][k] - p; + V[i][k + 1] = V[i][k + 1] - p * q; + } + } // (s != 0) + } // k loop + } // check convergence + } // while (n1 >= low) + + // Backsubstitute to find vectors of upper triangular form + + if (norm == 0.0) { + return; + } + + for (n1 = nn - 1; n1 >= 0; n1--) { + p = d[n1]; + q = e[n1]; + + // Real vector + + if (q == 0) { + int l = n1; + H[n1][n1] = 1.0; + for (int i = n1 - 1; i >= 0; i--) { + w = H[i][i] - p; + r = 0.0; + for (int j = l; j <= n1; j++) { + r = r + H[i][j] * H[j][n1]; + } + if (e[i] < 0.0) { + z = w; + s = r; + } else { + l = i; + if (e[i] == 0.0) { + if (w != 0.0) { + H[i][n1] = -r / w; + } else { + H[i][n1] = -r / (eps * norm); + } + + // Solve real equations + + } else { + x = H[i][i + 1]; + y = H[i + 1][i]; + q = (d[i] - p) * (d[i] - p) + e[i] * e[i]; + t = (x * s - z * r) / q; + H[i][n1] = t; + if (std::abs(x) > std::abs(z)) { + H[i + 1][n1] = (-r - w * t) / x; + } else { + H[i + 1][n1] = (-s - y * t) / z; + } + } + + // Overflow control + + t = std::abs(H[i][n1]); + if ((eps * t) * t > 1) { + for (int j = i; j <= n1; j++) { + H[j][n1] = H[j][n1] / t; + } + } + } + } + // Complex vector + } else if (q < 0) { + int l = n1 - 1; + + // Last vector component imaginary so matrix is triangular + + if (std::abs(H[n1][n1 - 1]) > std::abs(H[n1 - 1][n1])) { + H[n1 - 1][n1 - 1] = q / H[n1][n1 - 1]; + H[n1 - 1][n1] = -(H[n1][n1] - p) / H[n1][n1 - 1]; + } else { + cdiv(0.0, -H[n1 - 1][n1], H[n1 - 1][n1 - 1] - p, q); + H[n1 - 1][n1 - 1] = cdivr; + H[n1 - 1][n1] = cdivi; + } + H[n1][n1 - 1] = 0.0; + H[n1][n1] = 1.0; + for (int i = n1 - 2; i >= 0; i--) { + double ra, sa, vr, vi; + ra = 0.0; + sa = 0.0; + for (int j = l; j <= n1; j++) { + ra = ra + H[i][j] * H[j][n1 - 1]; + sa = sa + H[i][j] * H[j][n1]; + } + w = H[i][i] - p; + + if (e[i] < 0.0) { + z = w; + r = ra; + s = sa; + } else { + l = i; + if (e[i] == 0) { + cdiv(-ra, -sa, w, q); + H[i][n1 - 1] = cdivr; + H[i][n1] = cdivi; + } else { + + // Solve complex equations + + x = H[i][i + 1]; + y = H[i + 1][i]; + vr = (d[i] - p) * (d[i] - p) + e[i] * e[i] - q * q; + vi = (d[i] - p) * 2.0 * q; + if (vr == 0.0 && vi == 0.0) { + vr = eps * norm * (std::abs(w) + std::abs(q) + std::abs(x) + + std::abs(y) + std::abs(z)); + } + cdiv(x * r - z * ra + q * sa, + x * s - z * sa - q * ra, vr, vi); + H[i][n1 - 1] = cdivr; + H[i][n1] = cdivi; + if (std::abs(x) > (std::abs(z) + std::abs(q))) { + H[i + 1][n1 - 1] = (-ra - w * H[i][n1 - 1] + q + * H[i][n1]) / x; + H[i + 1][n1] = (-sa - w * H[i][n1] - q * H[i][n1 + - 1]) / x; + } else { + cdiv(-r - y * H[i][n1 - 1], -s - y * H[i][n1], z, + q); + H[i + 1][n1 - 1] = cdivr; + H[i + 1][n1] = cdivi; + } + } + + // Overflow control + + t = std::max(std::abs(H[i][n1 - 1]), std::abs(H[i][n1])); + if ((eps * t) * t > 1) { + for (int j = i; j <= n1; j++) { + H[j][n1 - 1] = H[j][n1 - 1] / t; + H[j][n1] = H[j][n1] / t; + } + } + } + } + } + } + + // Vectors of isolated roots + + for (int i = 0; i < nn; i++) { + if (i < low || i > high) { + for (int j = i; j < nn; j++) { + V[i][j] = H[i][j]; + } + } + } + + // Back transformation to get eigenvectors of original matrix + + for (int j = nn - 1; j >= low; j--) { + for (int i = low; i <= high; i++) { + z = 0.0; + for (int k = low; k <= std::min(j, high); k++) { + z = z + V[i][k] * H[k][j]; + } + V[i][j] = z; + } + } + } + + // Nonsymmetric reduction to Hessenberg form. + void orthes() { + // This is derived from the Algol procedures orthes and ortran, + // by Martin and Wilkinson, Handbook for Auto. Comp., + // Vol.ii-Linear Algebra, and the corresponding + // Fortran subroutines in EISPACK. + int low = 0; + int high = n - 1; + + for (int m = low + 1; m <= high - 1; m++) { + + // Scale column. + + double scale = 0.0; + for (int i = m; i <= high; i++) { + scale = scale + std::abs(H[i][m - 1]); + } + if (scale != 0.0) { + + // Compute Householder transformation. + + double h = 0.0; + for (int i = high; i >= m; i--) { + ort[i] = H[i][m - 1] / scale; + h += ort[i] * ort[i]; + } + double g = std::sqrt(h); + if (ort[m] > 0) { + g = -g; + } + h = h - ort[m] * g; + ort[m] = ort[m] - g; + + // Apply Householder similarity transformation + // H = (I-u*u'/h)*H*(I-u*u')/h) + + for (int j = m; j < n; j++) { + double f = 0.0; + for (int i = high; i >= m; i--) { + f += ort[i] * H[i][j]; + } + f = f / h; + for (int i = m; i <= high; i++) { + H[i][j] -= f * ort[i]; + } + } + + for (int i = 0; i <= high; i++) { + double f = 0.0; + for (int j = high; j >= m; j--) { + f += ort[j] * H[i][j]; + } + f = f / h; + for (int j = m; j <= high; j++) { + H[i][j] -= f * ort[j]; + } + } + ort[m] = scale * ort[m]; + H[m][m - 1] = scale * g; + } + } + + // Accumulate transformations (Algol's ortran). + + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + V[i][j] = (i == j ? 1.0 : 0.0); + } + } + + for (int m = high - 1; m >= low + 1; m--) { + if (H[m][m - 1] != 0.0) { + for (int i = m + 1; i <= high; i++) { + ort[i] = H[i][m - 1]; + } + for (int j = m; j <= high; j++) { + double g = 0.0; + for (int i = m; i <= high; i++) { + g += ort[i] * V[i][j]; + } + // Double division avoids possible underflow + g = (g / ort[m]) / H[m][m - 1]; + for (int i = m; i <= high; i++) { + V[i][j] += g * ort[i]; + } + } + } + } + } + + // Releases all internal working memory. + void release() { + // releases the working data + delete[] d; + delete[] e; + delete[] ort; + for (int i = 0; i < n; i++) { + delete[] H[i]; + delete[] V[i]; + } + delete[] H; + delete[] V; + } + + // Computes the Eigenvalue Decomposition for a matrix given in H. + void compute() { + // Allocate memory for the working data. + V = alloc_2d (n, n, 0.0); + d = alloc_1d (n); + e = alloc_1d (n); + ort = alloc_1d (n); + // Reduce to Hessenberg form. + orthes(); + // Reduce Hessenberg to real Schur form. + hqr2(); + // Copy eigenvalues to OpenCV Matrix. + _eigenvalues.create(1, n, CV_64FC1); + for (int i = 0; i < n; i++) { + _eigenvalues.at (0, i) = d[i]; + } + // Copy eigenvectors to OpenCV Matrix. + _eigenvectors.create(n, n, CV_64FC1); + for (int i = 0; i < n; i++) + for (int j = 0; j < n; j++) + _eigenvectors.at (i, j) = V[i][j]; + // Deallocate the memory by releasing all internal working data. + release(); + } + +public: + EigenvalueDecomposition() + : n(0) { } + + // Initializes & computes the Eigenvalue Decomposition for a general matrix + // given in src. This function is a port of the EigenvalueSolver in JAMA, + // which has been released to public domain by The MathWorks and the + // National Institute of Standards and Technology (NIST). + EigenvalueDecomposition(InputArray src) { + compute(src); + } + + // This function computes the Eigenvalue Decomposition for a general matrix + // given in src. This function is a port of the EigenvalueSolver in JAMA, + // which has been released to public domain by The MathWorks and the + // National Institute of Standards and Technology (NIST). + void compute(InputArray src) + { + if(isSymmetric(src)) { + // Fall back to OpenCV for a symmetric matrix! + cv::eigen(src, _eigenvalues, _eigenvectors); + } else { + Mat tmp; + // Convert the given input matrix to double. Is there any way to + // prevent allocating the temporary memory? Only used for copying + // into working memory and deallocated after. + src.getMat().convertTo(tmp, CV_64FC1); + // Get dimension of the matrix. + this->n = tmp.cols; + // Allocate the matrix data to work on. + this->H = alloc_2d (n, n); + // Now safely copy the data. + for (int i = 0; i < tmp.rows; i++) { + for (int j = 0; j < tmp.cols; j++) { + this->H[i][j] = tmp.at(i, j); + } + } + // Deallocates the temporary matrix before computing. + tmp.release(); + // Performs the eigenvalue decomposition of H. + compute(); + } + } + + ~EigenvalueDecomposition() {} + + // Returns the eigenvalues of the Eigenvalue Decomposition. + Mat eigenvalues() { return _eigenvalues; } + // Returns the eigenvectors of the Eigenvalue Decomposition. + Mat eigenvectors() { return _eigenvectors; } +}; + + +//------------------------------------------------------------------------------ +// Linear Discriminant Analysis implementation +//------------------------------------------------------------------------------ + +LDA::LDA(int num_components) : _num_components(num_components) { } + +LDA::LDA(InputArrayOfArrays src, InputArray labels, int num_components) : _num_components(num_components) +{ + this->compute(src, labels); //! compute eigenvectors and eigenvalues +} + +LDA::~LDA() {} + +void LDA::save(const String& filename) const +{ + FileStorage fs(filename, FileStorage::WRITE); + if (!fs.isOpened()) { + CV_Error(Error::StsError, "File can't be opened for writing!"); + } + this->save(fs); + fs.release(); +} + +// Deserializes this object from a given filename. +void LDA::load(const String& filename) { + FileStorage fs(filename, FileStorage::READ); + if (!fs.isOpened()) + CV_Error(Error::StsError, "File can't be opened for writing!"); + this->load(fs); + fs.release(); +} + +// Serializes this object to a given FileStorage. +void LDA::save(FileStorage& fs) const { + // write matrices + fs << "num_components" << _num_components; + fs << "eigenvalues" << _eigenvalues; + fs << "eigenvectors" << _eigenvectors; +} + +// Deserializes this object from a given FileStorage. +void LDA::load(const FileStorage& fs) { + //read matrices + fs["num_components"] >> _num_components; + fs["eigenvalues"] >> _eigenvalues; + fs["eigenvectors"] >> _eigenvectors; +} + +void LDA::lda(InputArrayOfArrays _src, InputArray _lbls) { + // get data + Mat src = _src.getMat(); + std::vector labels; + // safely copy the labels + { + Mat tmp = _lbls.getMat(); + for(unsigned int i = 0; i < tmp.total(); i++) { + labels.push_back(tmp.at(i)); + } + } + // turn into row sampled matrix + Mat data; + // ensure working matrix is double precision + src.convertTo(data, CV_64FC1); + // maps the labels, so they're ascending: [0,1,...,C] + std::vector mapped_labels(labels.size()); + std::vector num2label = remove_dups(labels); + std::map label2num; + for (int i = 0; i < (int)num2label.size(); i++) + label2num[num2label[i]] = i; + for (size_t i = 0; i < labels.size(); i++) + mapped_labels[i] = label2num[labels[i]]; + // get sample size, dimension + int N = data.rows; + int D = data.cols; + // number of unique labels + int C = (int)num2label.size(); + // we can't do a LDA on one class, what do you + // want to separate from each other then? + if(C == 1) { + String error_message = "At least two classes are needed to perform a LDA. Reason: Only one class was given!"; + CV_Error(Error::StsBadArg, error_message); + } + // throw error if less labels, than samples + if (labels.size() != static_cast(N)) { + String error_message = format("The number of samples must equal the number of labels. Given %d labels, %d samples. ", labels.size(), N); + CV_Error(Error::StsBadArg, error_message); + } + // warn if within-classes scatter matrix becomes singular + if (N < D) { + std::cout << "Warning: Less observations than feature dimension given!" + << "Computation will probably fail." + << std::endl; + } + // clip number of components to be a valid number + if ((_num_components <= 0) || (_num_components > (C - 1))) { + _num_components = (C - 1); + } + // holds the mean over all classes + Mat meanTotal = Mat::zeros(1, D, data.type()); + // holds the mean for each class + std::vector meanClass(C); + std::vector numClass(C); + // initialize + for (int i = 0; i < C; i++) { + numClass[i] = 0; + meanClass[i] = Mat::zeros(1, D, data.type()); //! Dx1 image vector + } + // calculate sums + for (int i = 0; i < N; i++) { + Mat instance = data.row(i); + int classIdx = mapped_labels[i]; + add(meanTotal, instance, meanTotal); + add(meanClass[classIdx], instance, meanClass[classIdx]); + numClass[classIdx]++; + } + // calculate total mean + meanTotal.convertTo(meanTotal, meanTotal.type(), 1.0 / static_cast (N)); + // calculate class means + for (int i = 0; i < C; i++) { + meanClass[i].convertTo(meanClass[i], meanClass[i].type(), 1.0 / static_cast (numClass[i])); + } + // subtract class means + for (int i = 0; i < N; i++) { + int classIdx = mapped_labels[i]; + Mat instance = data.row(i); + subtract(instance, meanClass[classIdx], instance); + } + // calculate within-classes scatter + Mat Sw = Mat::zeros(D, D, data.type()); + mulTransposed(data, Sw, true); + // calculate between-classes scatter + Mat Sb = Mat::zeros(D, D, data.type()); + for (int i = 0; i < C; i++) { + Mat tmp; + subtract(meanClass[i], meanTotal, tmp); + mulTransposed(tmp, tmp, true); + add(Sb, tmp, Sb); + } + // invert Sw + Mat Swi = Sw.inv(); + // M = inv(Sw)*Sb + Mat M; + gemm(Swi, Sb, 1.0, Mat(), 0.0, M); + EigenvalueDecomposition es(M); + _eigenvalues = es.eigenvalues(); + _eigenvectors = es.eigenvectors(); + // reshape eigenvalues, so they are stored by column + _eigenvalues = _eigenvalues.reshape(1, 1); + // get sorted indices descending by their eigenvalue + std::vector sorted_indices = argsort(_eigenvalues, false); + // now sort eigenvalues and eigenvectors accordingly + _eigenvalues = sortMatrixColumnsByIndices(_eigenvalues, sorted_indices); + _eigenvectors = sortMatrixColumnsByIndices(_eigenvectors, sorted_indices); + // and now take only the num_components and we're out! + _eigenvalues = Mat(_eigenvalues, Range::all(), Range(0, _num_components)); + _eigenvectors = Mat(_eigenvectors, Range::all(), Range(0, _num_components)); +} + +void LDA::compute(InputArrayOfArrays _src, InputArray _lbls) { + switch(_src.kind()) { + case _InputArray::STD_VECTOR_MAT: + lda(asRowMatrix(_src, CV_64FC1), _lbls); + break; + case _InputArray::MAT: + lda(_src.getMat(), _lbls); + break; + default: + String error_message= format("InputArray Datatype %d is not supported.", _src.kind()); + CV_Error(Error::StsBadArg, error_message); + break; + } +} + +// Projects samples into the LDA subspace. +Mat LDA::project(InputArray src) { + return subspaceProject(_eigenvectors, Mat(), _dataAsRow ? src : src.getMat().t()); +} + +// Reconstructs projections from the LDA subspace. +Mat LDA::reconstruct(InputArray src) { + return subspaceReconstruct(_eigenvectors, Mat(), _dataAsRow ? src : src.getMat().t()); +} + +} diff --git a/modules/core/src/matmul.cpp b/modules/core/src/matmul.cpp index b3c04a6bf3..99711e2587 100644 --- a/modules/core/src/matmul.cpp +++ b/modules/core/src/matmul.cpp @@ -3295,7 +3295,6 @@ void cv::PCABackProject(InputArray data, InputArray mean, pca.backProject(data, result); } - /****************************************************************************************\ * Earlier API * \****************************************************************************************/ diff --git a/modules/imgproc/doc/colormaps.rst b/modules/imgproc/doc/colormaps.rst new file mode 100644 index 0000000000..9881d84ff2 --- /dev/null +++ b/modules/imgproc/doc/colormaps.rst @@ -0,0 +1,107 @@ +ColorMaps in OpenCV +=================== + +applyColorMap +--------------------- + +Applies a GNU Octave/MATLAB equivalent colormap on a given image. + +.. ocv:function:: void applyColorMap(InputArray src, OutputArray dst, int colormap) + + :param src: The source image, grayscale or colored does not matter. + :param dst: The result is the colormapped source image. Note: :ocv:func:`Mat::create` is called on dst. + :param colormap: The colormap to apply, see the list of available colormaps below. + +Currently the following GNU Octave/MATLAB equivalent colormaps are implemented: + +.. code-block:: cpp + + enum + { + COLORMAP_AUTUMN = 0, + COLORMAP_BONE = 1, + COLORMAP_JET = 2, + COLORMAP_WINTER = 3, + COLORMAP_RAINBOW = 4, + COLORMAP_OCEAN = 5, + COLORMAP_SUMMER = 6, + COLORMAP_SPRING = 7, + COLORMAP_COOL = 8, + COLORMAP_HSV = 9, + COLORMAP_PINK = 10, + COLORMAP_HOT = 11 + } + + +Description +----------- + +The human perception isn't built for observing fine changes in grayscale images. Human eyes are more sensitive to observing changes between colors, so you often need to recolor your grayscale images to get a clue about them. OpenCV now comes with various colormaps to enhance the visualization in your computer vision application. + +In OpenCV 2.4 you only need :ocv:func:`applyColorMap` to apply a colormap on a given image. The following sample code reads the path to an image from command line, applies a Jet colormap on it and shows the result: + +.. code-block:: cpp + + #include + #include + #include + + using namespace cv; + + int main(int argc, const char *argv[]) { + // Get the path to the image, if it was given + // if no arguments were given. + String filename; + if (argc > 1) { + filename = String(argv[1]); + } + // The following lines show how to apply a colormap on a given image + // and show it with cv::imshow example with an image. An exception is + // thrown if the path to the image is invalid. + if(!filename.empty()) { + Mat img0 = imread(filename); + // Throw an exception, if the image can't be read: + if(img0.empty()) { + CV_Error(CV_StsBadArg, "Sample image is empty. Please adjust your path, so it points to a valid input image!"); + } + // Holds the colormap version of the image: + Mat cm_img0; + // Apply the colormap: + applyColorMap(img0, cm_img0, COLORMAP_JET); + // Show the result: + imshow("cm_img0", cm_img0); + waitKey(0); + } + + return 0; + } + +And here are the color scales for each of the available colormaps: + ++-----------------------+---------------------------------------------------+ +| Class | Scale | ++=======================+===================================================+ +| COLORMAP_AUTUMN | .. image:: pics/colormaps/colorscale_autumn.jpg | ++-----------------------+---------------------------------------------------+ +| COLORMAP_BONE | .. image:: pics/colormaps/colorscale_bone.jpg | ++-----------------------+---------------------------------------------------+ +| COLORMAP_COOL | .. image:: pics/colormaps/colorscale_cool.jpg | ++-----------------------+---------------------------------------------------+ +| COLORMAP_HOT | .. image:: pics/colormaps/colorscale_hot.jpg | ++-----------------------+---------------------------------------------------+ +| COLORMAP_HSV | .. image:: pics/colormaps/colorscale_hsv.jpg | ++-----------------------+---------------------------------------------------+ +| COLORMAP_JET | .. image:: pics/colormaps/colorscale_jet.jpg | ++-----------------------+---------------------------------------------------+ +| COLORMAP_OCEAN | .. image:: pics/colormaps/colorscale_ocean.jpg | ++-----------------------+---------------------------------------------------+ +| COLORMAP_PINK | .. image:: pics/colormaps/colorscale_pink.jpg | ++-----------------------+---------------------------------------------------+ +| COLORMAP_RAINBOW | .. image:: pics/colormaps/colorscale_rainbow.jpg | ++-----------------------+---------------------------------------------------+ +| COLORMAP_SPRING | .. image:: pics/colormaps/colorscale_spring.jpg | ++-----------------------+---------------------------------------------------+ +| COLORMAP_SUMMER | .. image:: pics/colormaps/colorscale_summer.jpg | ++-----------------------+---------------------------------------------------+ +| COLORMAP_WINTER | .. image:: pics/colormaps/colorscale_winter.jpg | ++-----------------------+---------------------------------------------------+ diff --git a/modules/imgproc/doc/imgproc.rst b/modules/imgproc/doc/imgproc.rst index acaebc4753..93b1cd9f6e 100644 --- a/modules/imgproc/doc/imgproc.rst +++ b/modules/imgproc/doc/imgproc.rst @@ -10,6 +10,7 @@ imgproc. Image Processing filtering geometric_transformations miscellaneous_transformations + colormaps histograms structural_analysis_and_shape_descriptors motion_analysis_and_object_tracking diff --git a/modules/imgproc/doc/pics/colormaps/colorscale_autumn.jpg b/modules/imgproc/doc/pics/colormaps/colorscale_autumn.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0c1c8a29b8de2a44d6fe6e646dfd039dd26bcb24 GIT binary patch literal 1352 zcmbVKZ)_7~7{BYacWpN_I$-KPP#J704Ida=)s2i4bjYbSMc26-S;BC`<75epmTqPt zFh$W13*Ze{QyI>BV^Ejb-f+u^B1L4-2<>P`Cs8V!`)k&@&e<62^R}xbh7am;8Y4i6R^!ZuD5L~hWl||2C1oTTe<_8Wq!biM z%2VVDB?|aTO;M(zA9P9Ls6<8(G9^V)@sj_v#J<8*a%>rn5qK6RQQ?FNkGU~5;FQJT z0oX*~5<)5?DS(jz1>z!rPY?iF28f}$0roMeN|wHSjgDMw*hXdTUXpv@$Z7eC4P6(P zZn-(Va&6_Fg9>HF!;d_gnVs|a6Hl(n%hx{j^fLt;pM9=))AO6@S6(eKmcCZTY=6C~ zddC~=&f2{u^FB*medF8j9D4V?!|xwG_95SV{KUzYkJ~=6e=4+}>G<5~61&fT(bN0& zCHLiTu6%p7-|HK=a%=h3n8@XW8Xk-6XIe~%(wh-We$$V&yhB*+5_ z@xmqh;3ZU2+441Hy3Rmt+r2m|_keuKh9jrDE-F^6-7>wja?ed=#>%|A*t56eJO0SGqm1^ud5-qAM@#wgGoe7!~s!kn3)HYV}(ypfT9sylP0}QRNHR|V2O$Ye$ zTDLpXY=d&hR0*^Xff+WATSQM`McV{iuF(eCp;(}2xHm04WN!(q-?{oN015qSEGHWE zfz~Me8D`I2t7sf!%(hM5zK%ODXY|-Xp2-+?$ho?}Z-Z{f%D1~eV}mAjqRoO%tvirb zi1VJPvG8-%cI2)`FIth8G;+5Wbwpzzpj2*Bh0dJrD~Gqng|q_iF;N$`UAd82aiwDF383NJD#LCRf%Eivc4pu@E@&5pWAP0jSBLg#|5(ASU zBeNjm|04|YKzFi&odL?6mQqXwbzED#l4gO`Kd};u4Zls%q*Qnp!5NX66=_R?aT2 zZtfnQUcn)uVc`*xQOPN(Y3Ui6S;Zx#W#tu>Rn0A}ZS5VMU6UqHnL2IyjG40*Enc#8 z+42=DS8dw7W$U)>J9h3mboj{8W5-XNJay^vm8;jT-?(|};iJb-o<4j2;^nK4pFV&2 z`tAFVpT9u<0{IgLu=-07=r1Nv9I%7@#mH0+#LR*$tcr$gLXLs#iG{*SMvWXIP7@by zJjkhR9P~jnspuk?n2O0m)sG;rfqh1t$C}9U8QfzCf8Ao>VP*tI9*!ngS(g~{BTD3>?tsMG6EDw1it;=4SM_zRQ&3_G@-zX4}n z^)Hm3Cd+J5Y0$|2?|)G|++CVv=Y z->YTn8!u$;UA^d1_T0nPqE?ez)UC&MKUA_1+z9fvlcviaeGLWrb z&UME;n+bH-;>%XLiOTcR-Ita4uPuqn&w5^RuJh}P4W*b1&O{ z`m4PNXt>R}$h?v$Ux?aSFSgvf+R~RfS8ne2X}e^NSNsaMU0(ZiUAxaKyQ$qbcDXw) z`?jvx_ifBSpj&v&x2EczcLSRGSNvrx-^{CaQ_mxqQ~G|z^0oWEjb)pCYv*6{ttC?V zSx4Vgne;y>0|wr;Z?kW0$N`2MT0_k14tOG@pYq-6|em}U5F`{|2?|)wB7ORx*a*5I}`tyf@72a;o7(6 zTT6q5Z@d5nVW#Q1m!L4tdX{Y42MnQDxvAe>i)ZC$z4)?zmp1#(v&IWAgDkB|cU@QP z19aBKmvhB7OgwK43}p3dyL8RB7Vk=T`E}hDm{L-TJzi`%zh}P}C;-pBgaz}wbe-*1 zx@r)$;4nVqZgQ^Q@Aqk7cwMR0o_BfQr|ZtkO69$dzKK;{0E`Y$0M|o8ZPT>pi-D&8 e>;3`?|M_0e5zJHWwR-K&sBw|>%~s0&|4jgO{5tOd literal 0 HcmV?d00001 diff --git a/modules/imgproc/doc/pics/colormaps/colorscale_cool.jpg b/modules/imgproc/doc/pics/colormaps/colorscale_cool.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4253efb99d463ed63e4d70c09ddd09522315d9d8 GIT binary patch literal 1325 zcmex=iF;N$`UAd82aiwDF383NJD#LCRf%Eivc4pu@E@&5pWAP0jSBLg#|5(ASU zBeNjm|04|YKzFi&odL?6mQqXwbzED#l4gO`Kd};u4Zls%q*Qnp!5NX66=_R?aT2 zZtfnQUcn)uVc`*xQOPN(Y3Ui6S;Zx#W#tu>Rn0A}ZS5VMU6UqHnL2IyjG40*Enc#8 z+42=DS8dw7W$U)>J9h3mboj{8W5-XNJay^vm8;jT-?(|};iJb-o<4j2;^nK4pFV&2 z`tAFVpT9u<0{IgLu=-07=r1Nv9I%7@#mH0+#LR*$tcr$gLXLs#iG{*SMvWXIP7@by zJjkhR9P~jnspuk?n2O0m)sG;rfqh1t$C}9U8QfzCf8Ao>VP*tI9Y@qDY*FUaSarGdPxd*YR_L;qKY*6)I=u~>WqVHV5(PRcD(-7q{L9d#?_&#Y03BNrHvQMtOrRlY z5HE&@`0qYl<{DXjHM4$gFY5-hi-GlViOK;?K<6c3FxiWK*z52{;Rd-ZoSm& zw&OrQC~etWFSSP&8x$Mbd!L0Ez&xu-56n zT3hzMI|S$1MABviG|?7z0!`|^i%E9RF^&+EEe@<(e6(4m{n{SU47 zz5a3C4*BxwqN!kufq?^b9VoJahQ8LjiOsIhdM`k3%B;RRvwmsV^u48rlYwr%7=@Z} zVgv2o>)sSieIE++a$4M1pmb~j(D^_iOq+1{>a`v)eSiaXD=^V)1|iF;N$`UAd82aiwDF383NJD#LCRf%Eivc4pu@E@&5pWAP0jSBLg#|5(ASU zBeNjm|04|YKzFi&odL?6mQqXwbzED#l4gO`Kd};u4Zls%q*Qnp!5NX66=_R?aT2 zZtfnQUcn)uVc`*xQOPN(Y3Ui6S;Zx#W#tu>Rn0A}ZS5VMU6UqHnL2IyjG40*Enc#8 z+42=DS8dw7W$U)>J9h3mboj{8W5-XNJay^vm8;jT-?(|};iJb-o<4j2;^nK4pFV&2 z`tAFVpT9u<0{IgLu=-07=r1Nv9I%7@#mH0+#LR*$tcr$gLXLs#iG{*SMvWXIP7@by zJjkhR9P~jnspuk?n2O0m)sG;rfqh1t$C}9U8QfzCf8Ao>VP*tI94Wg zj)RCt>uS{kFWi9hKN_;Xl5}@YI<-w_wH$~zvaW97loHc7zxvnaM11>o&31m^*R|bp z_oF^)&tH)$%L`)O*!cGAnrbLxz0kflf1Nd6fK?yu&tIE-1E>wesF?aK9b|aA|L?=E zW8K>Sn4W(5pP`~Qd&PzS3~l@Br9aHi4gPymwyyg^t@gT$Rs3s+GS7^6Fv~-t#=sItp`l;7m>n4F7U-BMK-=B4SCQ)`<8b3K^fMi~}MF1w#rbp;jkF z3)HqYBS=9jW<=tH0#QIwXstY&@P>c_Awx(YflWwuy9-svnf_>dcfLFK&Ubd_oIM9^ zNBeH5KQi~K1&K%`SyRZAS;&8C=p#U<0#^bc5|#i9I)O+hp!ER4c#>x6VPxlu zU_rDbktrAr8w?<^!{`%<7-9;UA4tfwvYzks!2)NGWu6}{U$Ms5&wuT@fZ)xags?sh4U5>ZbJy-Yk(`5v4j+j* zdhGbA#H7>7DPN>!ojsQ=$ocC0rOV&u^->%~8pl-{^mez!t$@BV{_m9=&C zPo6eBd*0a6+V-bR-rmuv7#Mu@dT4k=IjWtQ)aj?DVS^FZh3kA%|EP9W8*py0X) z7RlHl(k)4DtH}02;gtO+9hUfHQ0HyRy>{oZmHX=L8pi_(&DQgmu2FbsacQ&4{++PQ z|E27$uy?vTfi01MnMb4pCNKyTC@|eMd3C3|>e#ha>)%_Y=iq`dXsp1ASJa&jp@5Vo zs6#=&m}NEtcOMVdRxK8H;qcniyG1&Po1FW*G9Q|7u~%o{KM74ct-o zjAVdm$9!Ef7~L}{)_a;ewNMT;(W(_I)y|!seVTmj2Ic_8RAGv(OJB@ilvYqrGaQ5E z*`|$10P>|mT+ZL75p>`ft^5ZL|Jf$?GzyAS+4ZzRv0nuWzBwxzM?sjmbp;9%WAsiG z)3)^xEeQ%!R|T3JYvHs~#VJI!J$exUPrQ zB4z$oDQb72Pi<{rqhN_d;F~mX8SCZKwLc zg{mm|yL6a|D@XW{_I~Hus|OJVOLo0{lp%4wg96B1wLLNk;+WIUGA{^+R<@dlLL_rh zXv8D%OAJ@Ok3PlDuXmo}QCcbnus@idcO~W}&ugo0rj01b7hOz=!<|lmGf?mm(^=D(12u48 zy7*49M_uh^a1;_S8Ot_MLlG3{#G!D8DQQS1ny|ZUMuC!Bd6=udfE4zl;5_A^LS3Yc zk_)7n54djwGB6ayR{cbs@jRtaXQ`t85L60_<9l647?SSU=nNYQB4&u0jOXo26pR)q zw^WzB8N?0neRvCUrBT{5aHw}S4rQ^8bIuEK=YRALUN(KhD8qwN7Ta5*iuAuqYmo}! Mt}!SmyB+QL3w;MAcmMzZ literal 0 HcmV?d00001 diff --git a/modules/imgproc/doc/pics/colormaps/colorscale_jet.jpg b/modules/imgproc/doc/pics/colormaps/colorscale_jet.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ea273a570528421024a2fc720876e2a50892adfb GIT binary patch literal 1579 zcmbV~ZBP?e6oz;62?2`{qE@Ypf>?+hihv*k?kE*BRT+&C0ZB%oB7~2kfCxiUrD%mw z{Aem*O+*c-F>X;2Welk(ppJ?OhCmq9fJBm@O(b9p3F&SW>yQ4hJv;Z@v$N;yecySm zz1#jAm`aOU9R+|O0D#B?*n5FU00W|dW(*oQESm8+92Q5w69|q)bao;Torwg3lZ%rx z2@Rxjbs@Q;FX&I+k7DpxES^Lp5FIW5DcS!7$WFjq5Ws@-0Sp<$l0o|&z!TAlcgRD; zz7G(C#o-A=M1~8}&@dH|kHsRQ@rYuiyBPTn;K=xC^8%I=+}Cd*&d>2!yyr-blh=y+ zTa*nlgLmN89ebTg(`U^5a@GQ$g=vAv}^o_A`j7{+g$tgc< zOWmH9zB4y3e^v9r@9Y?bs> zD0`Tnlz9klkudbk=D7qwrg7VbfD{`x^ zN)qTeC{?{qp>-T%6@}_J3k6w^9u*)j=UYzPQC=38 z`?aHKfyIX5gqMn)7f9aqJ{@%!lvnZYFi4;!H;f#t9Bg;4utl>~6pf*Y1rvo;+&k#p(_%HW|;jxP51`XeD z=o!rF3~;PPDKy7iu;Ghtv^_Apj^`JqmO>>4m}Y=iS{T)4 zx)~ywV3LU?mYJrGd2Xf3tyCF@_ikIx6KmqKKK}8K zNJk)2KD@?p%wT*w-55TepPwJm%&Sj*TuhxiiJ1%K?2|{V^LXkb;bp|fMIedsMlkc0 zmxW#$asW>5)hAAmXl|&OEUe%xm(udxRu zDZ8a*cA&xt2Ra~YKb_E3g+z{B++V;)?vHpB4l**LEXa))iHg|>Z&@?XQoHstlzumC z&JvVbm4c(abRtg2;XTkvbCpA(-^esZf7Q~HiRUeh08uWKpdHPs({64PKen-Te#D literal 0 HcmV?d00001 diff --git a/modules/imgproc/doc/pics/colormaps/colorscale_mkpj1.jpg b/modules/imgproc/doc/pics/colormaps/colorscale_mkpj1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d7e936397f1f5a4b96e4a4783bcbc02ca7a12fb0 GIT binary patch literal 1569 zcmbV~e^ioJ7{_0Ji)Khxu2pi<%58M!DN9RBj=5~H(o-#&Oy$%{My^d$!Zh&oL!o(A zYt5Q#>Z~y`2b@x}KxGBhma_!bF7Fed( zkN>{^ArwYW+mHsKP!NOy59EIUr9x;F63C230*gUr92Seg;&FIf>o^Y8daUu575 zjW8e}zEEf$7#K1Zw_quLM#^Tw_QLR}We0<1u07Fk@ftBYZp+xL9eeKu&tAA3UgSWm z1)TjmV~75ivzNwR`7%P&Fem^ILxyOOmo1dQ%uw2zdTib`y@G0!n`e*hyOKfTvcx>W{Hact{BF^v{>i*TRg#=kj^ouuj;QGmy=%O) z%q3+PK>7fZ9#FZgiKeT%4vUXkIX1D)50$EFLu|2n_3EyD>?c=SZ+>cYQs{ccv#iVQ z1bvINjA6;%)Z^)xZ{=k9p-_&o_@_=9EKN$U_D*O`8K#xI1_?*U&!-!{_hjyoq`0Ki z+{44HJKjyrv|`v?Su5G>lv2|bXE;54D!p4;o?IBO4=B|Vy1sQvXw8rB7IQxIX`Cy( z<63n%jSI49A_44S5G`-JOm3l#A}*+lvga<&()o_Z^v{bGDHDKsGQUq|*XGO}&5jXu zj54gNa;?4$AjgPQhEPl77cSY5HfOZbK}z!&tozxiu8s9O3j|S9((G6ft!g;OfMkVO zNEQ#nItP)@>@28T@H`P-oqDgMQl$>_L-WCgbug86c2_N_=aN8pJ?tgUWs&t2oMG1J zjq=`OTfNcGOA0AOV+qeD<>dk%*|9>wh=B_awkd}4%HqbK4mO(HMdv+W%UtD@MZAJ6 z;MH(x)Gkl$pin8-tJI(uJO(0cYjVo$8ufmGV$#M@(U#mvU~^&nL)o~-#2C(|2-SyF zcMeW=Iq(aO*@#Lk$EWV@Q){d$~krV%-M7K1sB8@C6_K=xn5FQR$g)Aro38p_g>BY zUmrYF*EcjaHMg|3X*yqbb-(H9)xI?h4jE0uW{cJ4;Bs(I=pVTVFc;F10nWjNKyu)N zBA_vImtd!osko?}?(>%J$4^^z;=JsRlb7#C{q*RhXU;R``)L*!9BAWY{|@ZH|04SX z>`$&X;EF=P;h_kC1V+SqQp8xkBK!8Jm(AHwi!x=u^=TP#QtoOas>pIhA*I%mFu2HjY<6~?h4(tEL^7(` zWaDh8F7|^!m5*S()(g}X`!AS=wPTkw zi5cGM(s%_fvHDWmaADo<5g)7l3(Hyi@lbvK3$|Lw8M~6}VZ7K5fh*D{GIkAV_3eG$ z!4NRe!h3>@S2sbRv#9WCrj|KvS)j-@hM7X5Jg(F+I7~Nn$s${`EF}4b%ILepCKAWA z8?SzKOQMbB@O>KdcxN_y+m-6#vPGs!eup-Kahf|^{9Hs%YoA?SX`ZEJ2|5Sl5IDxg z{&nJ?3Nv^O46=_AGk?M9hz)d^g?K?gW(B-Tm5m1Ti2H3J#_14<{W+)s0v^jHmvy%Y zy-JEvI!Q2Tuk;{yv0CAyVyoCk-$1~fBpPaOeZEBz(j-^-^dIi_o5*n=)<1c0-Vy;cA^<y+CO$U*PPiv8y2<|rwmjD=2w)yY#cgM&?OU=5d6D015dS0J}J~X`7;A@^O)CAv9ikA(HhObzx4XuPgI9nL4Jer#IgXQZZ6QMCG zAaE~|p6jNTFWkltocU1Ro0@Z$(^T3oCyHa4CTaBXo|~DyvF#=j>UO`6u`jA3FbyXU*v{$qS69IgckF_Ir*YEXM*Am{&XA5Sr6&n$ F{T;Jd&d2}& literal 0 HcmV?d00001 diff --git a/modules/imgproc/doc/pics/colormaps/colorscale_ocean.jpg b/modules/imgproc/doc/pics/colormaps/colorscale_ocean.jpg new file mode 100644 index 0000000000000000000000000000000000000000..11d771f71d269bd399032ce6a01a2d2d234d23dd GIT binary patch literal 1430 zcmex=iF;N$`UAd82aiwDF383NJD#LCRf%Eivc4pu@E@&5pWAP0jSBLg#|5(ASU zBeNjm|04|YKzFi&odL?6mQqXwbzED#l4gO`Kd};u4Zls%q*Qnp!5NX66=_R?aT2 zZtfnQUcn)uVc`*xQOPN(Y3Ui6S;Zx#W#tu>Rn0A}ZS5VMU6UqHnL2IyjG40*Enc#8 z+42=DS8dw7W$U)>J9h3mboj{8W5-XNJay^vm8;jT-?(|};iJb-o<4j2;^nK4pFV&2 z`tAFVpT9u<0{IgLu=-07=r1Nv9I%7@#mH0+#LR*$tcr$gLXLs#iG{*SMvWXIP7@by zJjkhR9P~jnspuk?n2O0m)sG;rfqh1t$C}9U8QfzCf8Ao>VP*tI9iYRn{1cCr zTJf51|M_(tQ1)MK_I$AL3zK{IpI@70=Pr8%!rTQ>Qx8_N0IVkcogElYOz@>%EQj_pp8S zLbcQ4cUj-(D~VqL)Ej>osMSjUN_geN^$*w2KQceP@kRMQkbSYw+pX4L2xotIZuJ+@ zdlkj2{<1<%{>OfK{lg&jd!kaMf3$#6v7D!BlZyWy&DU3IGdsVx+E(?it!0xq`OY&a zq*N8iI{L=8ihrrc{F0FD3$;KEi}p41qypn`(Y(3#Qc1NJ{r%?mf;D*OfB(-Qb^CI4 znCkxff3ov^-^N|B6RG^Mz5y7HS1)AlT@4K2aK~leR@p^^!}jXlW#9fY*llfI_HFH3 zP&_R7DU%)y31LXk1EUZgJ(-K26oTUs7*h~6&%c0T3KBibYUWw51lqCx{MwRR;=c}l z{kQeZOJtt$5C7>a{{-*)aQ(yeN^qzg{E_`5d(VgGp})937OL+BhTJ{bSNo%Y0e!V@ z>%kx8tNsFI--rIXe*TgF<^wr>-w*EwiPAKvT!0u2BCrPiF;N$`UAd82aiwDF383NJD#LCRf%Eivc4pu@E@&5pWAP0jSBLg#|5(ASU zBeNjm|04|YKzFi&odL?6mQqXwbzED#l4gO`Kd};u4Zls%q*Qnp!5NX66=_R?aT2 zZtfnQUcn)uVc`*xQOPN(Y3Ui6S;Zx#W#tu>Rn0A}ZS5VMU6UqHnL2IyjG40*Enc#8 z+42=DS8dw7W$U)>J9h3mboj{8W5-XNJay^vm8;jT-?(|};iJb-o<4j2;^nK4pFV&2 z`tAFVpT9u<0{IgLu=-07=r1Nv9I%7@#mH0+#LR*$tcr$gLXLs#iG{*SMvWXIP7@by zJjkhR9P~jnspuk?n2O0m)sG;rfqh1t$C}9U8QfzCf8Ao>VP*tI9_ri<3Ku7&&LU+njK zv&HXzV9X}Fw$5vrw(gg9#i}p(b=`EyS9!0OCG(nJ$9%H&V)tHJdoh-6?&S~b>b-t1 z+Qn(cA5O)=&1axqZ|H7-MU;I z7G$0ICO>no|D|2B*4r=bd~3Y&SGe=?vR~n*&ODC$mwlBFj^0&&SF{z*IvVhCbzWXX ziG0*;pb>}UvLn9z3fns0|JbIS>RRon^UEJccs!c-=JJ-``+MWJzWfo&?Z5lS)!%XR zTgwvrJjEBh()wdtFSU?8F#O@`AJ_LfFPzhTZ7=(!^-*8{um)~@VK=qv`uYdjw-%&) z*E@Xq!|DqqqHc2YTjQD+tdHw^;$8eB8Bg$s+9}^ZP{Z+lkNw5EsW&s`?pw6uKL3~a zrDaj-`772%$~(KfHkr5hWvt%h3$@v^E>-m}E!pMo_;p>S+*0PHm-f9_*X;N5N4PyK z9@ac5zij^HKf{i#yAy#Lxcz^3M{kp5zqYA*?v=B<`5&%bYrYj6K$&}2YszlTz%WjN zMZ=SsPp+Ej*tcz4^Piz@V-A$Db4lga?WS+4YqOIsFHMHV!n29bu9&WY2708K?Y^mN z(=UHqqf+Q!mU*l8{;~D9zWmW@U4HjZ*5CF1hjtqrSLwb`Dq1JEzc-+H#p(}V|771= zc;TGu>$v8Z;cKh@F|D}uMc!*~_Vo{m4tIuXis}-TD6} E04&UFH2?qr literal 0 HcmV?d00001 diff --git a/modules/imgproc/doc/pics/colormaps/colorscale_rainbow.jpg b/modules/imgproc/doc/pics/colormaps/colorscale_rainbow.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9565527aecdc16f4e7fe559c2168a5b0fb6edf9f GIT binary patch literal 1524 zcmbV}e^AqP7{|ZccR%LbECw}n$D)RV(H)P&!8ih*Kv-TxTN?t=mPjDj z*xT6Jp$0q$dpig8fHqmVip9e)-i}BhE|>hL&H58WvVpc>AQ-a^!jdpB31htrQNWz| zP$E0{ozj3aJKb=iG}UuxsA zx30zYpkijbZ+u#gt)1Jt^&8whU-f$Jb#FiaHv-<=^H#{d(6IO3-+$oHM^Vw#!$)Yx zj-NAettIZ+!y%;7cPEP{B_AUf^W;puU1r6U90~7hZ{Ggx9S@j zWp`Tdw%u#*`1zNf`wx1Rs=j{p(D2BUKSrO9jZf%i=k$j81*6G~>OytCuz%D=0=lp$ z10t#mgFOWnOv2%}?jkq`M-t;w$=i0Hv2oeUFRg2__3%A7;~Jl)uyfn)H{_{9r7bJ_ zcfxZ1m$Fr1f9X;~4loA5gGmqqnaH7ILB)MZ&29~rbyv*PxH3I$X-~TW8JPUFS~VuD z5qDdmyvEIBDO*jMQMDa2i!LW{!&^g^+$a5zAu;mYkrcL5(8Q0Rom4s2?AEvwv{S`^ zcE;YLeN`|DMeX^^|_nm(5Hc=@XSa;1#^(@m+prB!#w)9UOEqGFxbjG%)>r!_jJG_%dBXmLo4mT{y+j|hzQ zQ=548j~gs0%^B{4oDqZEFyEgYV#+S$DcUt$%~@Ta zTJP~&U{tSMI?D5&7^LaDT-hnLS)u}2z4CTrpx+|JV|vz6F?xB2Ha2ls{H0#gxQY%E+X%H{Ge3IyipCJR0psc&Ta$cPK;ndNk zOKO>8fRwA;QH_Sj{2upqCpXuK?te-RuAG-#YGWg;j*NUXb_K+cm1~TEf(f4Lyp|mC zcYan#@F@F`Wlg6{$jevDrkso{KKSW$Fp%TvXr$USn)qND9!haU4=AFJu_+ZzXl};l zYUrO7Dp(g39H&~g%qJ9}qFf%Ohu_{eMbFDuH(1Eh40kW4@j9>b*_`iyFt4zi%c@my ziYn4*KEVcYedt6`vF`BPTxVCcGFdbc(Q}POcj}Rhuex$hiB4c*IA_~_mnZG5Ij>w) zF>2Y&C;oDSK>$FBo`Wg^iMZMYF#^bb49J$eAj@#E+!JeJv`2jkcq7#DP5w(JvgzS& zE5y$Uyx&HT(V&284FC`|+N=^7YihWx#fz;Gb+bX*R|d8u56caJ@z~%2z<5F8tD}aQ zsb<%qsy-9t*71$yozJ2a^5PaIMK?Q0)1H3mV1?ezge|?GYO_5jg^AMY8ebtZ5HAyf v@EQP>PPn9Qv;;`g-BXyRChDR2rgKR`5JN$qG_PEn%M@2lWv$U6*8V>MZbHuy literal 0 HcmV?d00001 diff --git a/modules/imgproc/doc/pics/colormaps/colorscale_spring.jpg b/modules/imgproc/doc/pics/colormaps/colorscale_spring.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ada03a160deff66b1f19022dad4e429580a94a6e GIT binary patch literal 1254 zcmex=iF;N$`UAd82aiwDF383NJD#LCRf%Eivc4pu@E@&5pWAP0jSBLg#|5(ASU zBeNjm|04|YKzFi&odL?6mQqXwbzED#l4gO`Kd};u4Zls%q*Qnp!5NX66=_R?aT2 zZtfnQUcn)uVc`*xQOPN(Y3Ui6S;Zx#W#tu>Rn0A}ZS5VMU6UqHnL2IyjG40*Enc#8 z+42=DS8dw7W$U)>J9h3mboj{8W5-XNJay^vm8;jT-?(|};iJb-o<4j2;^nK4pFV&2 z`tAFVpT9u<0{IgLu=-07=r1Nv9I%7@#mH0+#LR*$tcr$gLXLs#iG{*SMvWXIP7@by zJjkhR9P~jnspuk?n2O0m)sG;rfqh1t$C}9U8QfzCf8Ao>VP*tI99zwEhAW&8d76_9`R#%O9<;TLZVh{1N&Z ztnt*^jSF+b-~Re%>U3-U?XQ2bA8mX-HM$6>V}Jhj539uXuKK$_{?I;c`Q0|N?s|W_ zx-kFp$2GsRE&xrqe&q4Dbf7(7*JoYW`Zn_0-qlXmx7LK&e9A7>j}B|yntmHd)P&iW zRhn+oKX@hdcidGczD4VAeOupkd|qhoX`lz|Zmn><5c(VFIihhjvd~#jumbht%Zgl~uR4=&rT{5sxfZC@%hBsDSo1Z({4S3bFRp=lglSml{ufkE~G0cgPVGMGzERNNNJvim*^vaAm<_V{qlL*%%w=;5c)0`8=G< z=i)doi^mth0#Dglf^7H#hooCs91P>&htF+ zmZ7V;bz^huHt#ubgfCe0_!Cd&tuNTH@#(_Svge+E;YG>Ts%`S>?K>1N?^F@>uc*m} zR~z?gU!!yfn_CQr-e_&>cAL( zmCwJp_T^XCzrNx1`2)dFcsvrF{Nc{ssULruj?K(3JcutYC4PCBgj|sGQT-#A5OA?z z23*L6vJQb86S6sLH{mNQYq`7kugWhu%v-&s^Zd|NzIb!pT<)F&V}dp7N+;LPLo|l$ z-+>+ZUu1uR{lyhUvN05dhY67imbgO_BlZYA^qaUU;GQK3BiH9_ zY9~xRmGQyCq1agI&&iWC6 zP*XB`U*LDoYE%urJ{{RCBK^*3naNDuGU}D1=aTiOcG+USQd)A-!c127#$Z=^2BY^~ zbWA8a?vaFQiuf*W%QJLW`&_f_M5DDfPM2$fQ^ZVL^NI3`D@DrD{$!}J=XS1D8!+lK zHli&e1=wHRm2Rsy?KfcRSoY0)N*ww8IM zg&Q7FRN~V-FkS8GX`iQyG{NO_q45+V*?0zQr+_;&4eETbX^N0a3gC8-%?v@5VRx(Q zlC)56$w#{y?dq>q(X3>N{-UUmAwy^gk>Cu-n{8DN0Lk{p_f#6^k)eT!5g zH)T%EOa+XvD>H-96RNW?7KIn`nZ!zeKL8)p-E_^!Ox6ryr&XKSMnx7yiF;N$`UAd82aiwDF383NJD#LCRf%Eivc4pu@E@&5pWAP0jSBLg#|5(ASU zBeNjm|04|YKzFi&odL?6mQqXwbzED#l4gO`Kd};u4Zls%q*Qnp!5NX66=_R?aT2 zZtfnQUcn)uVc`*xQOPN(Y3Ui6S;Zx#W#tu>Rn0A}ZS5VMU6UqHnL2IyjG40*Enc#8 z+42=DS8dw7W$U)>J9h3mboj{8W5-XNJay^vm8;jT-?(|};iJb-o<4j2;^nK4pFV&2 z`tAFVpT9u<0{IgLu=-07=r1Nv9I%7@#mH0+#LR*$tcr$gLXLs#iG{*SMvWXIP7@by zJjkhR9P~jnspuk?n2O0m)sG;rfqh1t$C}9U8QfzCf8Ao>VP*tI9krP;T(=vIf-uFtx#^=-Uq*PV~A zXN6r|m>c;GNW>d=y{h$A>7EPhrPJcJlFc8MjJ+W}MsdGRh3(uJckG7iM3n&Gx#!HSN|{`KU`kr-7Vu^_z*VRsYh= z=&;=7fnU~Y16>k!yg%l`wzb-ES7+x&h3#GaY$M20r|Vlmiq>acf?3+SH8bkln%h|r zqiz6w2@D#qTbpyM!=`Snxd(DYy&cexK%MEgzOChsyZWEO^~Sp8zplny+P0QE>pX~n zSO+u$DO_hA%>xFJcGiV$YkmU>xE~$Au9c3vIydt|EySA|Kr7AmvR~SgyV~mdf?r|1 zTWg-_fC3xY&d(NW&&%yxoC#J13b^nyk9L6rac#z}Z);xrZC#vwYhSkLMo{=$0nJE{ z0tFn createGeneralizedHoughGuil(); //! Performs linear blending of two images CV_EXPORTS void blendLinear(InputArray src1, InputArray src2, InputArray weights1, InputArray weights2, OutputArray dst); +enum +{ + COLORMAP_AUTUMN = 0, + COLORMAP_BONE = 1, + COLORMAP_JET = 2, + COLORMAP_WINTER = 3, + COLORMAP_RAINBOW = 4, + COLORMAP_OCEAN = 5, + COLORMAP_SUMMER = 6, + COLORMAP_SPRING = 7, + COLORMAP_COOL = 8, + COLORMAP_HSV = 9, + COLORMAP_PINK = 10, + COLORMAP_HOT = 11 +}; + +CV_EXPORTS_W void applyColorMap(InputArray src, OutputArray dst, int colormap); + } // cv #endif diff --git a/modules/imgproc/src/colormap.cpp b/modules/imgproc/src/colormap.cpp new file mode 100644 index 0000000000..08ff44a5c6 --- /dev/null +++ b/modules/imgproc/src/colormap.cpp @@ -0,0 +1,530 @@ +/* + * Copyright (c) 2011. Philipp Wagner . + * Released to public domain under terms of the BSD Simplified license. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the organization nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * See + */ +#include "precomp.hpp" +#include + +#ifdef _MSC_VER +#pragma warning( disable: 4305 ) +#endif + +namespace cv +{ + +static Mat linspace(float x0, float x1, int n) +{ + Mat pts(n, 1, CV_32FC1); + float step = (x1-x0)/(n-1); + for(int i = 0; i < n; i++) + pts.at(i,0) = x0+i*step; + return pts; +} + +//------------------------------------------------------------------------------ +// cv::sortMatrixRowsByIndices +//------------------------------------------------------------------------------ +static void sortMatrixRowsByIndices(InputArray _src, InputArray _indices, OutputArray _dst) +{ + if(_indices.getMat().type() != CV_32SC1) + CV_Error(Error::StsUnsupportedFormat, "cv::sortRowsByIndices only works on integer indices!"); + Mat src = _src.getMat(); + std::vector indices = _indices.getMat(); + _dst.create(src.rows, src.cols, src.type()); + Mat dst = _dst.getMat(); + for(size_t idx = 0; idx < indices.size(); idx++) { + Mat originalRow = src.row(indices[idx]); + Mat sortedRow = dst.row((int)idx); + originalRow.copyTo(sortedRow); + } +} + +static Mat sortMatrixRowsByIndices(InputArray src, InputArray indices) +{ + Mat dst; + sortMatrixRowsByIndices(src, indices, dst); + return dst; +} + + +static Mat argsort(InputArray _src, bool ascending=true) +{ + Mat src = _src.getMat(); + if (src.rows != 1 && src.cols != 1) + CV_Error(Error::StsBadArg, "cv::argsort only sorts 1D matrices."); + int flags = SORT_EVERY_ROW | (ascending ? SORT_ASCENDING : SORT_DESCENDING); + Mat sorted_indices; + sortIdx(src.reshape(1,1),sorted_indices,flags); + return sorted_indices; +} + +template static +Mat interp1_(const Mat& X_, const Mat& Y_, const Mat& XI) +{ + int n = XI.rows; + // sort input table + std::vector sort_indices = argsort(X_); + + Mat X = sortMatrixRowsByIndices(X_,sort_indices); + Mat Y = sortMatrixRowsByIndices(Y_,sort_indices); + // interpolated values + Mat yi = Mat::zeros(XI.size(), XI.type()); + for(int i = 0; i < n; i++) { + int c = 0; + int low = 0; + int high = X.rows - 1; + // set bounds + if(XI.at<_Tp>(i,0) < X.at<_Tp>(low, 0)) + high = 1; + if(XI.at<_Tp>(i,0) > X.at<_Tp>(high, 0)) + low = high - 1; + // binary search + while((high-low)>1) { + c = low + ((high - low) >> 1); + if(XI.at<_Tp>(i,0) > X.at<_Tp>(c,0)) { + low = c; + } else { + high = c; + } + } + // linear interpolation + yi.at<_Tp>(i,0) += Y.at<_Tp>(low,0) + + (XI.at<_Tp>(i,0) - X.at<_Tp>(low,0)) + * (Y.at<_Tp>(high,0) - Y.at<_Tp>(low,0)) + / (X.at<_Tp>(high,0) - X.at<_Tp>(low,0)); + } + return yi; +} + +static Mat interp1(InputArray _x, InputArray _Y, InputArray _xi) +{ + // get matrices + Mat x = _x.getMat(); + Mat Y = _Y.getMat(); + Mat xi = _xi.getMat(); + // check types & alignment + CV_Assert((x.type() == Y.type()) && (Y.type() == xi.type())); + CV_Assert((x.cols == 1) && (x.rows == Y.rows) && (x.cols == Y.cols)); + // call templated interp1 + switch(x.type()) { + case CV_8SC1: return interp1_(x,Y,xi); break; + case CV_8UC1: return interp1_(x,Y,xi); break; + case CV_16SC1: return interp1_(x,Y,xi); break; + case CV_16UC1: return interp1_(x,Y,xi); break; + case CV_32SC1: return interp1_(x,Y,xi); break; + case CV_32FC1: return interp1_(x,Y,xi); break; + case CV_64FC1: return interp1_(x,Y,xi); break; + default: CV_Error(Error::StsUnsupportedFormat, ""); break; + } + return Mat(); +} + +namespace colormap +{ + + class ColorMap { + + protected: + Mat _lut; + + public: + virtual ~ColorMap() {} + + // Applies the colormap on a given image. + // + // This function expects BGR-aligned data of type CV_8UC1 or + // CV_8UC3. If the wrong image type is given, the original image + // will be returned. + // + // Throws an error for wrong-aligned lookup table, which must be + // of size 256 in the latest OpenCV release (2.3.1). + void operator()(InputArray src, OutputArray dst) const; + + // Setup base map to interpolate from. + virtual void init(int n) = 0; + + // Interpolates from a base colormap. + static Mat linear_colormap(InputArray X, + InputArray r, InputArray g, InputArray b, + int n) { + return linear_colormap(X,r,g,b,linspace(0,1,n)); + } + + // Interpolates from a base colormap. + static Mat linear_colormap(InputArray X, + InputArray r, InputArray g, InputArray b, + float begin, float end, float n) { + return linear_colormap(X,r,g,b,linspace(begin,end, cvRound(n))); + } + + // Interpolates from a base colormap. + static Mat linear_colormap(InputArray X, + InputArray r, InputArray g, InputArray b, + InputArray xi); + }; + + // Equals the GNU Octave colormap "autumn". + class Autumn : public ColorMap { + public: + Autumn() : ColorMap() { + init(256); + } + + Autumn(int n) : ColorMap() { + init(n); + } + + void init(int n) { + float r[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; + float g[] = { 0, 0.01587301587301587, 0.03174603174603174, 0.04761904761904762, 0.06349206349206349, 0.07936507936507936, 0.09523809523809523, 0.1111111111111111, 0.126984126984127, 0.1428571428571428, 0.1587301587301587, 0.1746031746031746, 0.1904761904761905, 0.2063492063492063, 0.2222222222222222, 0.2380952380952381, 0.253968253968254, 0.2698412698412698, 0.2857142857142857, 0.3015873015873016, 0.3174603174603174, 0.3333333333333333, 0.3492063492063492, 0.3650793650793651, 0.3809523809523809, 0.3968253968253968, 0.4126984126984127, 0.4285714285714285, 0.4444444444444444, 0.4603174603174603, 0.4761904761904762, 0.492063492063492, 0.5079365079365079, 0.5238095238095238, 0.5396825396825397, 0.5555555555555556, 0.5714285714285714, 0.5873015873015873, 0.6031746031746031, 0.6190476190476191, 0.6349206349206349, 0.6507936507936508, 0.6666666666666666, 0.6825396825396826, 0.6984126984126984, 0.7142857142857143, 0.7301587301587301, 0.746031746031746, 0.7619047619047619, 0.7777777777777778, 0.7936507936507936, 0.8095238095238095, 0.8253968253968254, 0.8412698412698413, 0.8571428571428571, 0.873015873015873, 0.8888888888888888, 0.9047619047619048, 0.9206349206349206, 0.9365079365079365, 0.9523809523809523, 0.9682539682539683, 0.9841269841269841, 1}; + float b[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + Mat X = linspace(0,1,64); + this->_lut = ColorMap::linear_colormap(X, + Mat(64,1, CV_32FC1, r).clone(), // red + Mat(64,1, CV_32FC1, g).clone(), // green + Mat(64,1, CV_32FC1, b).clone(), // blue + n); // number of sample points + } + }; + + // Equals the GNU Octave colormap "bone". + class Bone : public ColorMap { + public: + Bone() : ColorMap() { + init(256); + } + + Bone(int n) : ColorMap() { + init(n); + } + + void init(int n) { + float r[] = { 0, 0.01388888888888889, 0.02777777777777778, 0.04166666666666666, 0.05555555555555555, 0.06944444444444445, 0.08333333333333333, 0.09722222222222221, 0.1111111111111111, 0.125, 0.1388888888888889, 0.1527777777777778, 0.1666666666666667, 0.1805555555555556, 0.1944444444444444, 0.2083333333333333, 0.2222222222222222, 0.2361111111111111, 0.25, 0.2638888888888889, 0.2777777777777778, 0.2916666666666666, 0.3055555555555555, 0.3194444444444444, 0.3333333333333333, 0.3472222222222222, 0.3611111111111111, 0.375, 0.3888888888888888, 0.4027777777777777, 0.4166666666666666, 0.4305555555555555, 0.4444444444444444, 0.4583333333333333, 0.4722222222222222, 0.4861111111111112, 0.5, 0.5138888888888888, 0.5277777777777778, 0.5416666666666667, 0.5555555555555556, 0.5694444444444444, 0.5833333333333333, 0.5972222222222222, 0.611111111111111, 0.6249999999999999, 0.6388888888888888, 0.6527777777777778, 0.6726190476190474, 0.6944444444444442, 0.7162698412698412, 0.7380952380952381, 0.7599206349206349, 0.7817460317460316, 0.8035714285714286, 0.8253968253968254, 0.8472222222222221, 0.8690476190476188, 0.8908730158730158, 0.9126984126984128, 0.9345238095238095, 0.9563492063492063, 0.978174603174603, 1}; + float g[] = { 0, 0.01388888888888889, 0.02777777777777778, 0.04166666666666666, 0.05555555555555555, 0.06944444444444445, 0.08333333333333333, 0.09722222222222221, 0.1111111111111111, 0.125, 0.1388888888888889, 0.1527777777777778, 0.1666666666666667, 0.1805555555555556, 0.1944444444444444, 0.2083333333333333, 0.2222222222222222, 0.2361111111111111, 0.25, 0.2638888888888889, 0.2777777777777778, 0.2916666666666666, 0.3055555555555555, 0.3194444444444444, 0.3353174603174602, 0.3544973544973544, 0.3736772486772486, 0.3928571428571428, 0.412037037037037, 0.4312169312169312, 0.4503968253968254, 0.4695767195767195, 0.4887566137566137, 0.5079365079365078, 0.5271164021164021, 0.5462962962962963, 0.5654761904761904, 0.5846560846560845, 0.6038359788359787, 0.623015873015873, 0.6421957671957671, 0.6613756613756612, 0.6805555555555555, 0.6997354497354497, 0.7189153439153438, 0.7380952380952379, 0.7572751322751322, 0.7764550264550264, 0.7916666666666666, 0.8055555555555555, 0.8194444444444444, 0.8333333333333334, 0.8472222222222222, 0.861111111111111, 0.875, 0.8888888888888888, 0.9027777777777777, 0.9166666666666665, 0.9305555555555555, 0.9444444444444444, 0.9583333333333333, 0.9722222222222221, 0.986111111111111, 1}; + float b[] = { 0, 0.01917989417989418, 0.03835978835978836, 0.05753968253968253, 0.07671957671957672, 0.09589947089947089, 0.1150793650793651, 0.1342592592592592, 0.1534391534391534, 0.1726190476190476, 0.1917989417989418, 0.210978835978836, 0.2301587301587301, 0.2493386243386243, 0.2685185185185185, 0.2876984126984127, 0.3068783068783069, 0.326058201058201, 0.3452380952380952, 0.3644179894179894, 0.3835978835978835, 0.4027777777777777, 0.4219576719576719, 0.4411375661375661, 0.4583333333333333, 0.4722222222222222, 0.4861111111111111, 0.5, 0.5138888888888888, 0.5277777777777777, 0.5416666666666666, 0.5555555555555556, 0.5694444444444444, 0.5833333333333333, 0.5972222222222222, 0.6111111111111112, 0.625, 0.6388888888888888, 0.6527777777777778, 0.6666666666666667, 0.6805555555555556, 0.6944444444444444, 0.7083333333333333, 0.7222222222222222, 0.736111111111111, 0.7499999999999999, 0.7638888888888888, 0.7777777777777778, 0.7916666666666666, 0.8055555555555555, 0.8194444444444444, 0.8333333333333334, 0.8472222222222222, 0.861111111111111, 0.875, 0.8888888888888888, 0.9027777777777777, 0.9166666666666665, 0.9305555555555555, 0.9444444444444444, 0.9583333333333333, 0.9722222222222221, 0.986111111111111, 1}; + Mat X = linspace(0,1,64); + this->_lut = ColorMap::linear_colormap(X, + Mat(64,1, CV_32FC1, r).clone(), // red + Mat(64,1, CV_32FC1, g).clone(), // green + Mat(64,1, CV_32FC1, b).clone(), // blue + n); // number of sample points + } + }; + + + + + // Equals the GNU Octave colormap "jet". + class Jet : public ColorMap { + + public: + Jet() { + init(256); + } + Jet(int n) : ColorMap() { + init(n); + } + + void init(int n) { + // breakpoints + Mat X = linspace(0,1,256); + // define the basemap + float r[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.00588235294117645,0.02156862745098032,0.03725490196078418,0.05294117647058827,0.06862745098039214,0.084313725490196,0.1000000000000001,0.115686274509804,0.1313725490196078,0.1470588235294117,0.1627450980392156,0.1784313725490196,0.1941176470588235,0.2098039215686274,0.2254901960784315,0.2411764705882353,0.2568627450980392,0.2725490196078431,0.2882352941176469,0.303921568627451,0.3196078431372549,0.3352941176470587,0.3509803921568628,0.3666666666666667,0.3823529411764706,0.3980392156862744,0.4137254901960783,0.4294117647058824,0.4450980392156862,0.4607843137254901,0.4764705882352942,0.4921568627450981,0.5078431372549019,0.5235294117647058,0.5392156862745097,0.5549019607843135,0.5705882352941174,0.5862745098039217,0.6019607843137256,0.6176470588235294,0.6333333333333333,0.6490196078431372,0.664705882352941,0.6803921568627449,0.6960784313725492,0.7117647058823531,0.7274509803921569,0.7431372549019608,0.7588235294117647,0.7745098039215685,0.7901960784313724,0.8058823529411763,0.8215686274509801,0.8372549019607844,0.8529411764705883,0.8686274509803922,0.884313725490196,0.8999999999999999,0.9156862745098038,0.9313725490196076,0.947058823529412,0.9627450980392158,0.9784313725490197,0.9941176470588236,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.9862745098039216,0.9705882352941178,0.9549019607843139,0.93921568627451,0.9235294117647062,0.9078431372549018,0.892156862745098,0.8764705882352941,0.8607843137254902,0.8450980392156864,0.8294117647058825,0.8137254901960786,0.7980392156862743,0.7823529411764705,0.7666666666666666,0.7509803921568627,0.7352941176470589,0.719607843137255,0.7039215686274511,0.6882352941176473,0.6725490196078434,0.6568627450980391,0.6411764705882352,0.6254901960784314,0.6098039215686275,0.5941176470588236,0.5784313725490198,0.5627450980392159,0.5470588235294116,0.5313725490196077,0.5156862745098039,0.5}; + float g[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.001960784313725483,0.01764705882352935,0.03333333333333333,0.0490196078431373,0.06470588235294117,0.08039215686274503,0.09607843137254901,0.111764705882353,0.1274509803921569,0.1431372549019607,0.1588235294117647,0.1745098039215687,0.1901960784313725,0.2058823529411764,0.2215686274509804,0.2372549019607844,0.2529411764705882,0.2686274509803921,0.2843137254901961,0.3,0.3156862745098039,0.3313725490196078,0.3470588235294118,0.3627450980392157,0.3784313725490196,0.3941176470588235,0.4098039215686274,0.4254901960784314,0.4411764705882353,0.4568627450980391,0.4725490196078431,0.4882352941176471,0.503921568627451,0.5196078431372548,0.5352941176470587,0.5509803921568628,0.5666666666666667,0.5823529411764705,0.5980392156862746,0.6137254901960785,0.6294117647058823,0.6450980392156862,0.6607843137254901,0.6764705882352942,0.692156862745098,0.7078431372549019,0.723529411764706,0.7392156862745098,0.7549019607843137,0.7705882352941176,0.7862745098039214,0.8019607843137255,0.8176470588235294,0.8333333333333333,0.8490196078431373,0.8647058823529412,0.8803921568627451,0.8960784313725489,0.9117647058823528,0.9274509803921569,0.9431372549019608,0.9588235294117646,0.9745098039215687,0.9901960784313726,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.9901960784313726,0.9745098039215687,0.9588235294117649,0.943137254901961,0.9274509803921571,0.9117647058823528,0.8960784313725489,0.8803921568627451,0.8647058823529412,0.8490196078431373,0.8333333333333335,0.8176470588235296,0.8019607843137253,0.7862745098039214,0.7705882352941176,0.7549019607843137,0.7392156862745098,0.723529411764706,0.7078431372549021,0.6921568627450982,0.6764705882352944,0.6607843137254901,0.6450980392156862,0.6294117647058823,0.6137254901960785,0.5980392156862746,0.5823529411764707,0.5666666666666669,0.5509803921568626,0.5352941176470587,0.5196078431372548,0.503921568627451,0.4882352941176471,0.4725490196078432,0.4568627450980394,0.4411764705882355,0.4254901960784316,0.4098039215686273,0.3941176470588235,0.3784313725490196,0.3627450980392157,0.3470588235294119,0.331372549019608,0.3156862745098041,0.2999999999999998,0.284313725490196,0.2686274509803921,0.2529411764705882,0.2372549019607844,0.2215686274509805,0.2058823529411766,0.1901960784313728,0.1745098039215689,0.1588235294117646,0.1431372549019607,0.1274509803921569,0.111764705882353,0.09607843137254912,0.08039215686274526,0.06470588235294139,0.04901960784313708,0.03333333333333321,0.01764705882352935,0.001960784313725483,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; + float b[] = {0.5,0.5156862745098039,0.5313725490196078,0.5470588235294118,0.5627450980392157,0.5784313725490196,0.5941176470588235,0.6098039215686275,0.6254901960784314,0.6411764705882352,0.6568627450980392,0.6725490196078432,0.6882352941176471,0.7039215686274509,0.7196078431372549,0.7352941176470589,0.7509803921568627,0.7666666666666666,0.7823529411764706,0.7980392156862746,0.8137254901960784,0.8294117647058823,0.8450980392156863,0.8607843137254902,0.8764705882352941,0.892156862745098,0.907843137254902,0.9235294117647059,0.9392156862745098,0.9549019607843137,0.9705882352941176,0.9862745098039216,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.9941176470588236,0.9784313725490197,0.9627450980392158,0.9470588235294117,0.9313725490196079,0.915686274509804,0.8999999999999999,0.884313725490196,0.8686274509803922,0.8529411764705883,0.8372549019607844,0.8215686274509804,0.8058823529411765,0.7901960784313726,0.7745098039215685,0.7588235294117647,0.7431372549019608,0.7274509803921569,0.7117647058823531,0.696078431372549,0.6803921568627451,0.6647058823529413,0.6490196078431372,0.6333333333333333,0.6176470588235294,0.6019607843137256,0.5862745098039217,0.5705882352941176,0.5549019607843138,0.5392156862745099,0.5235294117647058,0.5078431372549019,0.4921568627450981,0.4764705882352942,0.4607843137254903,0.4450980392156865,0.4294117647058826,0.4137254901960783,0.3980392156862744,0.3823529411764706,0.3666666666666667,0.3509803921568628,0.335294117647059,0.3196078431372551,0.3039215686274508,0.2882352941176469,0.2725490196078431,0.2568627450980392,0.2411764705882353,0.2254901960784315,0.2098039215686276,0.1941176470588237,0.1784313725490199,0.1627450980392156,0.1470588235294117,0.1313725490196078,0.115686274509804,0.1000000000000001,0.08431372549019622,0.06862745098039236,0.05294117647058805,0.03725490196078418,0.02156862745098032,0.00588235294117645,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; + // now build lookup table + this->_lut = ColorMap::linear_colormap(X, + Mat(256,1, CV_32FC1, r).clone(), // red + Mat(256,1, CV_32FC1, g).clone(), // green + Mat(256,1, CV_32FC1, b).clone(), // blue + n); + } + }; + + // Equals the GNU Octave colormap "winter". + class Winter : public ColorMap { + public: + Winter() : ColorMap() { + init(256); + } + + Winter(int n) : ColorMap() { + init(n); + } + + void init(int n) { + float r[] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; + float g[] = {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0}; + float b[] = {1.0, 0.95, 0.9, 0.85, 0.8, 0.75, 0.7, 0.65, 0.6, 0.55, 0.5}; + Mat X = linspace(0,1,11); + this->_lut = ColorMap::linear_colormap(X, + Mat(11,1, CV_32FC1, r).clone(), // red + Mat(11,1, CV_32FC1, g).clone(), // green + Mat(11,1, CV_32FC1, b).clone(), // blue + n); // number of sample points + } + }; + + // Equals the GNU Octave colormap "rainbow". + class Rainbow : public ColorMap { + public: + Rainbow() : ColorMap() { + init(256); + } + + Rainbow(int n) : ColorMap() { + init(n); + } + + void init(int n) { + float r[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9365079365079367, 0.8571428571428572, 0.7777777777777777, 0.6984126984126986, 0.6190476190476191, 0.53968253968254, 0.4603174603174605, 0.3809523809523814, 0.3015873015873018, 0.2222222222222223, 0.1428571428571432, 0.06349206349206415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.03174603174603208, 0.08465608465608465, 0.1375661375661377, 0.1904761904761907, 0.2433862433862437, 0.2962962962962963, 0.3492063492063493, 0.4021164021164023, 0.4550264550264553, 0.5079365079365079, 0.5608465608465609, 0.6137566137566139, 0.666666666666667}; + float g[] = { 0, 0.03968253968253968, 0.07936507936507936, 0.119047619047619, 0.1587301587301587, 0.1984126984126984, 0.2380952380952381, 0.2777777777777778, 0.3174603174603174, 0.3571428571428571, 0.3968253968253968, 0.4365079365079365, 0.4761904761904762, 0.5158730158730158, 0.5555555555555556, 0.5952380952380952, 0.6349206349206349, 0.6746031746031745, 0.7142857142857142, 0.753968253968254, 0.7936507936507936, 0.8333333333333333, 0.873015873015873, 0.9126984126984127, 0.9523809523809523, 0.992063492063492, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9841269841269842, 0.9047619047619047, 0.8253968253968256, 0.7460317460317465, 0.666666666666667, 0.587301587301587, 0.5079365079365079, 0.4285714285714288, 0.3492063492063493, 0.2698412698412698, 0.1904761904761907, 0.1111111111111116, 0.03174603174603208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + float b[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01587301587301582, 0.09523809523809534, 0.1746031746031744, 0.2539682539682535, 0.333333333333333, 0.412698412698413, 0.4920634920634921, 0.5714285714285712, 0.6507936507936507, 0.7301587301587302, 0.8095238095238093, 0.8888888888888884, 0.9682539682539679, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; + Mat X = linspace(0,1,64); + this->_lut = ColorMap::linear_colormap(X, + Mat(64,1, CV_32FC1, r).clone(), // red + Mat(64,1, CV_32FC1, g).clone(), // green + Mat(64,1, CV_32FC1, b).clone(), // blue + n); // number of sample points + } + }; + + // Equals the GNU Octave colormap "ocean". + class Ocean : public ColorMap { + public: + Ocean() : ColorMap() { + init(256); + } + + Ocean(int n) : ColorMap() { + init(n); + } + + void init(int n) { + float r[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.04761904761904762, 0.09523809523809523, 0.1428571428571428, 0.1904761904761905, 0.2380952380952381, 0.2857142857142857, 0.3333333333333333, 0.3809523809523809, 0.4285714285714285, 0.4761904761904762, 0.5238095238095238, 0.5714285714285714, 0.6190476190476191, 0.6666666666666666, 0.7142857142857143, 0.7619047619047619, 0.8095238095238095, 0.8571428571428571, 0.9047619047619048, 0.9523809523809523, 1}; + float g[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.02380952380952381, 0.04761904761904762, 0.07142857142857142, 0.09523809523809523, 0.119047619047619, 0.1428571428571428, 0.1666666666666667, 0.1904761904761905, 0.2142857142857143, 0.2380952380952381, 0.2619047619047619, 0.2857142857142857, 0.3095238095238095, 0.3333333333333333, 0.3571428571428572, 0.3809523809523809, 0.4047619047619048, 0.4285714285714285, 0.4523809523809524, 0.4761904761904762, 0.5, 0.5238095238095238, 0.5476190476190477, 0.5714285714285714, 0.5952380952380952, 0.6190476190476191, 0.6428571428571429, 0.6666666666666666, 0.6904761904761905, 0.7142857142857143, 0.7380952380952381, 0.7619047619047619, 0.7857142857142857, 0.8095238095238095, 0.8333333333333334, 0.8571428571428571, 0.8809523809523809, 0.9047619047619048, 0.9285714285714286, 0.9523809523809523, 0.9761904761904762, 1}; + float b[] = { 0, 0.01587301587301587, 0.03174603174603174, 0.04761904761904762, 0.06349206349206349, 0.07936507936507936, 0.09523809523809523, 0.1111111111111111, 0.126984126984127, 0.1428571428571428, 0.1587301587301587, 0.1746031746031746, 0.1904761904761905, 0.2063492063492063, 0.2222222222222222, 0.2380952380952381, 0.253968253968254, 0.2698412698412698, 0.2857142857142857, 0.3015873015873016, 0.3174603174603174, 0.3333333333333333, 0.3492063492063492, 0.3650793650793651, 0.3809523809523809, 0.3968253968253968, 0.4126984126984127, 0.4285714285714285, 0.4444444444444444, 0.4603174603174603, 0.4761904761904762, 0.492063492063492, 0.5079365079365079, 0.5238095238095238, 0.5396825396825397, 0.5555555555555556, 0.5714285714285714, 0.5873015873015873, 0.6031746031746031, 0.6190476190476191, 0.6349206349206349, 0.6507936507936508, 0.6666666666666666, 0.6825396825396826, 0.6984126984126984, 0.7142857142857143, 0.7301587301587301, 0.746031746031746, 0.7619047619047619, 0.7777777777777778, 0.7936507936507936, 0.8095238095238095, 0.8253968253968254, 0.8412698412698413, 0.8571428571428571, 0.873015873015873, 0.8888888888888888, 0.9047619047619048, 0.9206349206349206, 0.9365079365079365, 0.9523809523809523, 0.9682539682539683, 0.9841269841269841, 1}; + Mat X = linspace(0,1,64); + this->_lut = ColorMap::linear_colormap(X, + Mat(64,1, CV_32FC1, r).clone(), // red + Mat(64,1, CV_32FC1, g).clone(), // green + Mat(64,1, CV_32FC1, b).clone(), // blue + n); // number of sample points + } + }; + + // Equals the GNU Octave colormap "summer". + class Summer : public ColorMap { + public: + Summer() : ColorMap() { + init(256); + } + + Summer(int n) : ColorMap() { + init(n); + } + + void init(int n) { + float r[] = { 0, 0.01587301587301587, 0.03174603174603174, 0.04761904761904762, 0.06349206349206349, 0.07936507936507936, 0.09523809523809523, 0.1111111111111111, 0.126984126984127, 0.1428571428571428, 0.1587301587301587, 0.1746031746031746, 0.1904761904761905, 0.2063492063492063, 0.2222222222222222, 0.2380952380952381, 0.253968253968254, 0.2698412698412698, 0.2857142857142857, 0.3015873015873016, 0.3174603174603174, 0.3333333333333333, 0.3492063492063492, 0.3650793650793651, 0.3809523809523809, 0.3968253968253968, 0.4126984126984127, 0.4285714285714285, 0.4444444444444444, 0.4603174603174603, 0.4761904761904762, 0.492063492063492, 0.5079365079365079, 0.5238095238095238, 0.5396825396825397, 0.5555555555555556, 0.5714285714285714, 0.5873015873015873, 0.6031746031746031, 0.6190476190476191, 0.6349206349206349, 0.6507936507936508, 0.6666666666666666, 0.6825396825396826, 0.6984126984126984, 0.7142857142857143, 0.7301587301587301, 0.746031746031746, 0.7619047619047619, 0.7777777777777778, 0.7936507936507936, 0.8095238095238095, 0.8253968253968254, 0.8412698412698413, 0.8571428571428571, 0.873015873015873, 0.8888888888888888, 0.9047619047619048, 0.9206349206349206, 0.9365079365079365, 0.9523809523809523, 0.9682539682539683, 0.9841269841269841, 1}; + float g[] = { 0.5, 0.5079365079365079, 0.5158730158730158, 0.5238095238095238, 0.5317460317460317, 0.5396825396825397, 0.5476190476190477, 0.5555555555555556, 0.5634920634920635, 0.5714285714285714, 0.5793650793650793, 0.5873015873015873, 0.5952380952380952, 0.6031746031746031, 0.6111111111111112, 0.6190476190476191, 0.626984126984127, 0.6349206349206349, 0.6428571428571428, 0.6507936507936508, 0.6587301587301587, 0.6666666666666666, 0.6746031746031746, 0.6825396825396826, 0.6904761904761905, 0.6984126984126984, 0.7063492063492063, 0.7142857142857143, 0.7222222222222222, 0.7301587301587301, 0.7380952380952381, 0.746031746031746, 0.753968253968254, 0.7619047619047619, 0.7698412698412698, 0.7777777777777778, 0.7857142857142857, 0.7936507936507937, 0.8015873015873016, 0.8095238095238095, 0.8174603174603174, 0.8253968253968254, 0.8333333333333333, 0.8412698412698413, 0.8492063492063492, 0.8571428571428572, 0.8650793650793651, 0.873015873015873, 0.8809523809523809, 0.8888888888888888, 0.8968253968253967, 0.9047619047619048, 0.9126984126984127, 0.9206349206349207, 0.9285714285714286, 0.9365079365079365, 0.9444444444444444, 0.9523809523809523, 0.9603174603174602, 0.9682539682539683, 0.9761904761904762, 0.9841269841269842, 0.9920634920634921, 1}; + float b[] = { 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4}; + Mat X = linspace(0,1,64); + this->_lut = ColorMap::linear_colormap(X, + Mat(64,1, CV_32FC1, r).clone(), // red + Mat(64,1, CV_32FC1, g).clone(), // green + Mat(64,1, CV_32FC1, b).clone(), // blue + n); // number of sample points + } + }; + + // Equals the GNU Octave colormap "spring". + class Spring : public ColorMap { + public: + Spring() : ColorMap() { + init(256); + } + + Spring(int n) : ColorMap() { + init(n); + } + + void init(int n) { + float r[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; + float g[] = { 0, 0.01587301587301587, 0.03174603174603174, 0.04761904761904762, 0.06349206349206349, 0.07936507936507936, 0.09523809523809523, 0.1111111111111111, 0.126984126984127, 0.1428571428571428, 0.1587301587301587, 0.1746031746031746, 0.1904761904761905, 0.2063492063492063, 0.2222222222222222, 0.2380952380952381, 0.253968253968254, 0.2698412698412698, 0.2857142857142857, 0.3015873015873016, 0.3174603174603174, 0.3333333333333333, 0.3492063492063492, 0.3650793650793651, 0.3809523809523809, 0.3968253968253968, 0.4126984126984127, 0.4285714285714285, 0.4444444444444444, 0.4603174603174603, 0.4761904761904762, 0.492063492063492, 0.5079365079365079, 0.5238095238095238, 0.5396825396825397, 0.5555555555555556, 0.5714285714285714, 0.5873015873015873, 0.6031746031746031, 0.6190476190476191, 0.6349206349206349, 0.6507936507936508, 0.6666666666666666, 0.6825396825396826, 0.6984126984126984, 0.7142857142857143, 0.7301587301587301, 0.746031746031746, 0.7619047619047619, 0.7777777777777778, 0.7936507936507936, 0.8095238095238095, 0.8253968253968254, 0.8412698412698413, 0.8571428571428571, 0.873015873015873, 0.8888888888888888, 0.9047619047619048, 0.9206349206349206, 0.9365079365079365, 0.9523809523809523, 0.9682539682539683, 0.9841269841269841, 1}; + float b[] = { 1, 0.9841269841269842, 0.9682539682539683, 0.9523809523809523, 0.9365079365079365, 0.9206349206349207, 0.9047619047619048, 0.8888888888888888, 0.873015873015873, 0.8571428571428572, 0.8412698412698413, 0.8253968253968254, 0.8095238095238095, 0.7936507936507937, 0.7777777777777778, 0.7619047619047619, 0.746031746031746, 0.7301587301587302, 0.7142857142857143, 0.6984126984126984, 0.6825396825396826, 0.6666666666666667, 0.6507936507936508, 0.6349206349206349, 0.6190476190476191, 0.6031746031746033, 0.5873015873015873, 0.5714285714285714, 0.5555555555555556, 0.5396825396825398, 0.5238095238095238, 0.5079365079365079, 0.4920634920634921, 0.4761904761904762, 0.4603174603174603, 0.4444444444444444, 0.4285714285714286, 0.4126984126984127, 0.3968253968253969, 0.3809523809523809, 0.3650793650793651, 0.3492063492063492, 0.3333333333333334, 0.3174603174603174, 0.3015873015873016, 0.2857142857142857, 0.2698412698412699, 0.253968253968254, 0.2380952380952381, 0.2222222222222222, 0.2063492063492064, 0.1904761904761905, 0.1746031746031746, 0.1587301587301587, 0.1428571428571429, 0.126984126984127, 0.1111111111111112, 0.09523809523809523, 0.07936507936507942, 0.06349206349206349, 0.04761904761904767, 0.03174603174603174, 0.01587301587301593, 0}; + Mat X = linspace(0,1,64); + this->_lut = ColorMap::linear_colormap(X, + Mat(64,1, CV_32FC1, r).clone(), // red + Mat(64,1, CV_32FC1, g).clone(), // green + Mat(64,1, CV_32FC1, b).clone(), // blue + n); // number of sample points + } + }; + + // Equals the GNU Octave colormap "cool". + class Cool : public ColorMap { + public: + Cool() : ColorMap() { + init(256); + } + + Cool(int n) : ColorMap() { + init(n); + } + + void init(int n) { + float r[] = { 0, 0.01587301587301587, 0.03174603174603174, 0.04761904761904762, 0.06349206349206349, 0.07936507936507936, 0.09523809523809523, 0.1111111111111111, 0.126984126984127, 0.1428571428571428, 0.1587301587301587, 0.1746031746031746, 0.1904761904761905, 0.2063492063492063, 0.2222222222222222, 0.2380952380952381, 0.253968253968254, 0.2698412698412698, 0.2857142857142857, 0.3015873015873016, 0.3174603174603174, 0.3333333333333333, 0.3492063492063492, 0.3650793650793651, 0.3809523809523809, 0.3968253968253968, 0.4126984126984127, 0.4285714285714285, 0.4444444444444444, 0.4603174603174603, 0.4761904761904762, 0.492063492063492, 0.5079365079365079, 0.5238095238095238, 0.5396825396825397, 0.5555555555555556, 0.5714285714285714, 0.5873015873015873, 0.6031746031746031, 0.6190476190476191, 0.6349206349206349, 0.6507936507936508, 0.6666666666666666, 0.6825396825396826, 0.6984126984126984, 0.7142857142857143, 0.7301587301587301, 0.746031746031746, 0.7619047619047619, 0.7777777777777778, 0.7936507936507936, 0.8095238095238095, 0.8253968253968254, 0.8412698412698413, 0.8571428571428571, 0.873015873015873, 0.8888888888888888, 0.9047619047619048, 0.9206349206349206, 0.9365079365079365, 0.9523809523809523, 0.9682539682539683, 0.9841269841269841, 1}; + float g[] = { 1, 0.9841269841269842, 0.9682539682539683, 0.9523809523809523, 0.9365079365079365, 0.9206349206349207, 0.9047619047619048, 0.8888888888888888, 0.873015873015873, 0.8571428571428572, 0.8412698412698413, 0.8253968253968254, 0.8095238095238095, 0.7936507936507937, 0.7777777777777778, 0.7619047619047619, 0.746031746031746, 0.7301587301587302, 0.7142857142857143, 0.6984126984126984, 0.6825396825396826, 0.6666666666666667, 0.6507936507936508, 0.6349206349206349, 0.6190476190476191, 0.6031746031746033, 0.5873015873015873, 0.5714285714285714, 0.5555555555555556, 0.5396825396825398, 0.5238095238095238, 0.5079365079365079, 0.4920634920634921, 0.4761904761904762, 0.4603174603174603, 0.4444444444444444, 0.4285714285714286, 0.4126984126984127, 0.3968253968253969, 0.3809523809523809, 0.3650793650793651, 0.3492063492063492, 0.3333333333333334, 0.3174603174603174, 0.3015873015873016, 0.2857142857142857, 0.2698412698412699, 0.253968253968254, 0.2380952380952381, 0.2222222222222222, 0.2063492063492064, 0.1904761904761905, 0.1746031746031746, 0.1587301587301587, 0.1428571428571429, 0.126984126984127, 0.1111111111111112, 0.09523809523809523, 0.07936507936507942, 0.06349206349206349, 0.04761904761904767, 0.03174603174603174, 0.01587301587301593, 0}; + float b[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; + Mat X = linspace(0,1,64); + this->_lut = ColorMap::linear_colormap(X, + Mat(64,1, CV_32FC1, r).clone(), // red + Mat(64,1, CV_32FC1, g).clone(), // green + Mat(64,1, CV_32FC1, b).clone(), // blue + n); // number of sample points + } + }; + + // Equals the GNU Octave colormap "hsv". + class HSV : public ColorMap { + public: + HSV() : ColorMap() { + init(256); + } + + HSV(int n) : ColorMap() { + init(n); + } + + void init(int n) { + float r[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9523809523809526, 0.8571428571428568, 0.7619047619047614, 0.6666666666666665, 0.5714285714285716, 0.4761904761904763, 0.3809523809523805, 0.2857142857142856, 0.1904761904761907, 0.0952380952380949, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.09523809523809557, 0.1904761904761905, 0.2857142857142854, 0.3809523809523809, 0.4761904761904765, 0.5714285714285714, 0.6666666666666663, 0.7619047619047619, 0.8571428571428574, 0.9523809523809523, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; + float g[] = { 0, 0.09523809523809523, 0.1904761904761905, 0.2857142857142857, 0.3809523809523809, 0.4761904761904762, 0.5714285714285714, 0.6666666666666666, 0.7619047619047619, 0.8571428571428571, 0.9523809523809523, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9523809523809526, 0.8571428571428577, 0.7619047619047619, 0.6666666666666665, 0.5714285714285716, 0.4761904761904767, 0.3809523809523814, 0.2857142857142856, 0.1904761904761907, 0.09523809523809579, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + float b[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.09523809523809523, 0.1904761904761905, 0.2857142857142857, 0.3809523809523809, 0.4761904761904762, 0.5714285714285714, 0.6666666666666666, 0.7619047619047619, 0.8571428571428571, 0.9523809523809523, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9523809523809526, 0.8571428571428577, 0.7619047619047614, 0.6666666666666665, 0.5714285714285716, 0.4761904761904767, 0.3809523809523805, 0.2857142857142856, 0.1904761904761907, 0.09523809523809579, 0}; + Mat X = linspace(0,1,64); + this->_lut = ColorMap::linear_colormap(X, + Mat(64,1, CV_32FC1, r).clone(), // red + Mat(64,1, CV_32FC1, g).clone(), // green + Mat(64,1, CV_32FC1, b).clone(), // blue + n); // number of sample points + } + }; + + // Equals the GNU Octave colormap "pink". + class Pink : public ColorMap { + public: + Pink() : ColorMap() { + init(256); + } + + Pink(int n) : ColorMap() { + init(n); + } + + void init(int n) { + float r[] = { 0, 0.1571348402636772, 0.2222222222222222, 0.2721655269759087, 0.3142696805273544, 0.3513641844631533, 0.3849001794597505, 0.415739709641549, 0.4444444444444444, 0.4714045207910317, 0.4969039949999532, 0.5211573066470477, 0.5443310539518174, 0.5665577237325317, 0.5879447357921312, 0.6085806194501846, 0.6285393610547089, 0.6478835438717, 0.6666666666666666, 0.6849348892187751, 0.7027283689263065, 0.7200822998230956, 0.7370277311900888, 0.753592220347252, 0.7663560447348133, 0.7732293307186413, 0.7800420555749596, 0.7867957924694432, 0.7934920476158722, 0.8001322641986387, 0.8067178260046388, 0.8132500607904444, 0.8197302434079591, 0.8261595987094034, 0.8325393042503717, 0.8388704928078611, 0.8451542547285166, 0.8513916401208816, 0.8575836609041332, 0.8637312927246217, 0.8698354767504924, 0.8758971213537393, 0.8819171036881968, 0.8878962711712378, 0.8938354428762595, 0.8997354108424372, 0.9055969413076769, 0.9114207758701963, 0.9172076325837248, 0.9229582069908971, 0.9286731730990523, 0.9343531843023135, 0.9399988742535192, 0.9456108576893002, 0.9511897312113418, 0.9567360740266436, 0.9622504486493763, 0.9677334015667416, 0.9731854638710686, 0.9786071518602129, 0.9839989676081821, 0.9893613995077727, 0.9946949227868761, 1}; + float g[] = { 0, 0.1028688999747279, 0.1454785934906616, 0.1781741612749496, 0.2057377999494559, 0.2300218531141181, 0.2519763153394848, 0.2721655269759087, 0.2909571869813232, 0.3086066999241838, 0.3253000243161777, 0.3411775438127727, 0.3563483225498992, 0.3708990935094579, 0.3849001794597505, 0.3984095364447979, 0.4114755998989117, 0.4241393401869012, 0.4364357804719847, 0.4483951394230328, 0.4600437062282361, 0.4714045207910317, 0.4824979096371639, 0.4933419132673033, 0.5091750772173156, 0.5328701692569688, 0.5555555555555556, 0.5773502691896257, 0.5983516452371671, 0.6186404847588913, 0.6382847385042254, 0.6573421981221795, 0.6758625033664688, 0.6938886664887108, 0.7114582486036499, 0.7286042804780002, 0.7453559924999299, 0.7617394000445604, 0.7777777777777778, 0.7934920476158723, 0.8089010988089465, 0.8240220541217402, 0.8388704928078611, 0.8534606386520677, 0.8678055195451838, 0.8819171036881968, 0.8958064164776166, 0.9094836413191612, 0.9172076325837248, 0.9229582069908971, 0.9286731730990523, 0.9343531843023135, 0.9399988742535192, 0.9456108576893002, 0.9511897312113418, 0.9567360740266436, 0.9622504486493763, 0.9677334015667416, 0.9731854638710686, 0.9786071518602129, 0.9839989676081821, 0.9893613995077727, 0.9946949227868761, 1}; + float b[] = { 0, 0.1028688999747279, 0.1454785934906616, 0.1781741612749496, 0.2057377999494559, 0.2300218531141181, 0.2519763153394848, 0.2721655269759087, 0.2909571869813232, 0.3086066999241838, 0.3253000243161777, 0.3411775438127727, 0.3563483225498992, 0.3708990935094579, 0.3849001794597505, 0.3984095364447979, 0.4114755998989117, 0.4241393401869012, 0.4364357804719847, 0.4483951394230328, 0.4600437062282361, 0.4714045207910317, 0.4824979096371639, 0.4933419132673033, 0.5039526306789697, 0.5143444998736397, 0.5245305283129621, 0.5345224838248488, 0.5443310539518174, 0.5539659798925444, 0.563436169819011, 0.5727497953228163, 0.5819143739626463, 0.5909368402852788, 0.5998236072282915, 0.6085806194501846, 0.6172133998483676, 0.6257270902992705, 0.6341264874742278, 0.642416074439621, 0.6506000486323554, 0.6586823467062358, 0.6666666666666666, 0.6745564876468501, 0.6823550876255453, 0.6900655593423541, 0.6976908246297114, 0.7052336473499384, 0.7237468644557459, 0.7453559924999298, 0.7663560447348133, 0.7867957924694432, 0.8067178260046388, 0.8261595987094034, 0.8451542547285166, 0.8637312927246217, 0.8819171036881968, 0.8997354108424372, 0.9172076325837248, 0.9343531843023135, 0.9511897312113418, 0.9677334015667416, 0.9839989676081821, 1}; + Mat X = linspace(0,1,64); + this->_lut = ColorMap::linear_colormap(X, + Mat(64,1, CV_32FC1, r).clone(), // red + Mat(64,1, CV_32FC1, g).clone(), // green + Mat(64,1, CV_32FC1, b).clone(), // blue + n); // number of sample points + } + }; + + // Equals the GNU Octave colormap "hot". + class Hot : public ColorMap { + public: + Hot() : ColorMap() { + init(256); + } + + Hot(int n) : ColorMap() { + init(n); + } + + void init(int n) { + float r[] = { 0, 0.03968253968253968, 0.07936507936507936, 0.119047619047619, 0.1587301587301587, 0.1984126984126984, 0.2380952380952381, 0.2777777777777778, 0.3174603174603174, 0.3571428571428571, 0.3968253968253968, 0.4365079365079365, 0.4761904761904762, 0.5158730158730158, 0.5555555555555556, 0.5952380952380952, 0.6349206349206349, 0.6746031746031745, 0.7142857142857142, 0.753968253968254, 0.7936507936507936, 0.8333333333333333, 0.873015873015873, 0.9126984126984127, 0.9523809523809523, 0.992063492063492, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; + float g[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.03174603174603163, 0.0714285714285714, 0.1111111111111112, 0.1507936507936507, 0.1904761904761905, 0.23015873015873, 0.2698412698412698, 0.3095238095238093, 0.3492063492063491, 0.3888888888888888, 0.4285714285714284, 0.4682539682539679, 0.5079365079365079, 0.5476190476190477, 0.5873015873015872, 0.6269841269841268, 0.6666666666666665, 0.7063492063492065, 0.746031746031746, 0.7857142857142856, 0.8253968253968254, 0.8650793650793651, 0.9047619047619047, 0.9444444444444442, 0.984126984126984, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; + float b[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.04761904761904745, 0.1269841269841265, 0.2063492063492056, 0.2857142857142856, 0.3650793650793656, 0.4444444444444446, 0.5238095238095237, 0.6031746031746028, 0.6825396825396828, 0.7619047619047619, 0.8412698412698409, 0.92063492063492, 1}; + Mat X = linspace(0,1,64); + this->_lut = ColorMap::linear_colormap(X, + Mat(64,1, CV_32FC1, r).clone(), // red + Mat(64,1, CV_32FC1, g).clone(), // green + Mat(64,1, CV_32FC1, b).clone(), // blue + n); // number of sample points + } + }; + + void ColorMap::operator()(InputArray _src, OutputArray _dst) const + { + if(_lut.total() != 256) + CV_Error(Error::StsAssert, "cv::LUT only supports tables of size 256."); + Mat src = _src.getMat(); + // Return original matrix if wrong type is given (is fail loud better here?) + if(src.type() != CV_8UC1 && src.type() != CV_8UC3) + { + src.copyTo(_dst); + return; + } + // Turn into a BGR matrix into its grayscale representation. + if(src.type() == CV_8UC3) + cvtColor(src.clone(), src, COLOR_BGR2GRAY); + cvtColor(src.clone(), src, COLOR_GRAY2BGR); + // Apply the ColorMap. + LUT(src, _lut, _dst); + } + + Mat ColorMap::linear_colormap(InputArray X, + InputArray r, InputArray g, InputArray b, + InputArray xi) { + Mat lut, lut8; + Mat planes[] = { + interp1(X, b, xi), + interp1(X, g, xi), + interp1(X, r, xi)}; + merge(planes, 3, lut); + lut.convertTo(lut8, CV_8U, 255.); + return lut8; + } + + } + + void applyColorMap(InputArray src, OutputArray dst, int colormap) + { + colormap::ColorMap* cm = + colormap == COLORMAP_AUTUMN ? (colormap::ColorMap*)(new colormap::Autumn) : + colormap == COLORMAP_BONE ? (colormap::ColorMap*)(new colormap::Bone) : + colormap == COLORMAP_COOL ? (colormap::ColorMap*)(new colormap::Cool) : + colormap == COLORMAP_HOT ? (colormap::ColorMap*)(new colormap::Hot) : + colormap == COLORMAP_HSV ? (colormap::ColorMap*)(new colormap::HSV) : + colormap == COLORMAP_JET ? (colormap::ColorMap*)(new colormap::Jet) : + colormap == COLORMAP_OCEAN ? (colormap::ColorMap*)(new colormap::Ocean) : + colormap == COLORMAP_PINK ? (colormap::ColorMap*)(new colormap::Pink) : + colormap == COLORMAP_RAINBOW ? (colormap::ColorMap*)(new colormap::Rainbow) : + colormap == COLORMAP_SPRING ? (colormap::ColorMap*)(new colormap::Spring) : + colormap == COLORMAP_SUMMER ? (colormap::ColorMap*)(new colormap::Summer) : + colormap == COLORMAP_WINTER ? (colormap::ColorMap*)(new colormap::Winter) : 0; + + if( !cm ) + CV_Error( Error::StsBadArg, "Unknown colormap id; use one of COLORMAP_*"); + + (*cm)(src, dst); + + delete cm; + } +} diff --git a/modules/python/common.cmake b/modules/python/common.cmake index 2343c64e8b..d9a0bc18bd 100644 --- a/modules/python/common.cmake +++ b/modules/python/common.cmake @@ -15,10 +15,10 @@ endforeach(mp) # module blacklist ocv_list_filterout(candidate_deps "^opencv_cud(a|ev)") ocv_list_filterout(candidate_deps "^opencv_adas$") +ocv_list_filterout(candidate_deps "^opencv_face$") ocv_list_filterout(candidate_deps "^opencv_matlab$") ocv_list_filterout(candidate_deps "^opencv_tracking$") - ocv_add_module(${MODULE_NAME} BINDINGS OPTIONAL ${candidate_deps}) ocv_module_include_directories( From d0137b6d2dd45db79c2e97de225531b317e17dd4 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Sun, 10 Aug 2014 23:24:16 +0400 Subject: [PATCH 135/189] moved part of video to contrib/{outflow, bgsegm}; moved matlab to contrib --- data/softcascade/inria_caltech-17.01.2013.xml | 61401 --------------- data/softcascade/soft-cascade-17.12.2012.xml | 61409 ---------------- modules/imgproc/src/smooth.cpp | 27 +- modules/matlab/CMakeLists.txt | 312 - modules/matlab/LICENSE | 42 - modules/matlab/README.md | 394 - modules/matlab/compile.cmake | 49 - modules/matlab/generator/build_info.py | 75 - modules/matlab/generator/cvmex.py | 63 - modules/matlab/generator/filters.py | 179 - modules/matlab/generator/gen_matlab.py | 198 - modules/matlab/generator/parse_tree.py | 359 - .../matlab/generator/templates/__init__.py | 0 .../matlab/generator/templates/functional.cpp | 149 - .../generator/templates/template_build_info.m | 41 - .../templates/template_class_base.cpp | 98 - .../generator/templates/template_class_base.m | 31 - .../generator/templates/template_cvmex_base.m | 46 - .../generator/templates/template_doc_base.m | 62 - .../templates/template_function_base.cpp | 60 - .../generator/templates/template_map_base.m | 71 - .../matlab/include/opencv2/matlab/bridge.hpp | 616 - modules/matlab/include/opencv2/matlab/map.hpp | 91 - .../matlab/include/opencv2/matlab/mxarray.hpp | 684 - .../include/opencv2/matlab/transpose.hpp | 141 - modules/matlab/test/CMakeLists.txt | 23 - modules/matlab/test/OpenCVTest.m | 166 - modules/matlab/test/cv_exception.cpp | 33 - modules/matlab/test/exception.cpp | 29 - modules/matlab/test/help.m | 15 - modules/matlab/test/std_exception.cpp | 32 - modules/matlab/test/test_compiler.cpp | 31 - modules/matlab/test/test_generator.hpp | 15 - modules/matlab/test/testsuite.m | 11 - modules/python/common.cmake | 2 + modules/superres/src/optical_flow.cpp | 3 +- .../motion_analysis_and_object_tracking.rst | 183 - .../include/opencv2/video/background_segm.hpp | 78 - .../video/include/opencv2/video/tracking.hpp | 45 +- modules/video/perf/opencl/perf_motempl.cpp | 2 +- modules/video/src/affineflow.cpp | 850 - modules/video/src/bgfg_gaussmix.cpp | 472 - modules/video/src/bgfg_gmg.cpp | 522 - modules/video/src/compat_video.cpp | 70 - modules/video/src/motempl.cpp | 416 - .../video/src/opencl/updatemotionhistory.cl | 27 - modules/video/src/simpleflow.cpp | 673 - modules/video/test/ocl/test_motempl.cpp | 67 - .../test/test_backgroundsubtractor_gbh.cpp | 137 - modules/video/test/test_motiontemplates.cpp | 500 - modules/video/test/test_simpleflow.cpp | 190 - samples/cpp/bgfg_gmg.cpp | 81 - samples/cpp/bgfg_segm.cpp | 21 +- samples/cpp/motempl.cpp | 204 - samples/cpp/segment_objects.cpp | 4 +- samples/cpp/simpleflow_demo.cpp | 221 - samples/cpp/trained_classifierNM1.xml | 4046 - samples/cpp/trained_classifierNM2.xml | 4046 - samples/cpp/trained_classifier_erGrouping.xml | 20046 ----- samples/cpp/tutorial_code/video/bg_sub.cpp | 8 - samples/python2/motempl.py | 85 - samples/tapi/bgfg_segm.cpp | 16 +- 62 files changed, 55 insertions(+), 159913 deletions(-) delete mode 100644 data/softcascade/inria_caltech-17.01.2013.xml delete mode 100644 data/softcascade/soft-cascade-17.12.2012.xml delete mode 100644 modules/matlab/CMakeLists.txt delete mode 100644 modules/matlab/LICENSE delete mode 100644 modules/matlab/README.md delete mode 100644 modules/matlab/compile.cmake delete mode 100644 modules/matlab/generator/build_info.py delete mode 100644 modules/matlab/generator/cvmex.py delete mode 100644 modules/matlab/generator/filters.py delete mode 100644 modules/matlab/generator/gen_matlab.py delete mode 100644 modules/matlab/generator/parse_tree.py delete mode 100644 modules/matlab/generator/templates/__init__.py delete mode 100644 modules/matlab/generator/templates/functional.cpp delete mode 100644 modules/matlab/generator/templates/template_build_info.m delete mode 100644 modules/matlab/generator/templates/template_class_base.cpp delete mode 100644 modules/matlab/generator/templates/template_class_base.m delete mode 100644 modules/matlab/generator/templates/template_cvmex_base.m delete mode 100644 modules/matlab/generator/templates/template_doc_base.m delete mode 100644 modules/matlab/generator/templates/template_function_base.cpp delete mode 100644 modules/matlab/generator/templates/template_map_base.m delete mode 100644 modules/matlab/include/opencv2/matlab/bridge.hpp delete mode 100644 modules/matlab/include/opencv2/matlab/map.hpp delete mode 100644 modules/matlab/include/opencv2/matlab/mxarray.hpp delete mode 100644 modules/matlab/include/opencv2/matlab/transpose.hpp delete mode 100644 modules/matlab/test/CMakeLists.txt delete mode 100644 modules/matlab/test/OpenCVTest.m delete mode 100644 modules/matlab/test/cv_exception.cpp delete mode 100644 modules/matlab/test/exception.cpp delete mode 100644 modules/matlab/test/help.m delete mode 100644 modules/matlab/test/std_exception.cpp delete mode 100644 modules/matlab/test/test_compiler.cpp delete mode 100644 modules/matlab/test/test_generator.hpp delete mode 100644 modules/matlab/test/testsuite.m delete mode 100644 modules/video/src/affineflow.cpp delete mode 100644 modules/video/src/bgfg_gaussmix.cpp delete mode 100644 modules/video/src/bgfg_gmg.cpp delete mode 100644 modules/video/src/motempl.cpp delete mode 100644 modules/video/src/opencl/updatemotionhistory.cl delete mode 100644 modules/video/src/simpleflow.cpp delete mode 100644 modules/video/test/ocl/test_motempl.cpp delete mode 100644 modules/video/test/test_backgroundsubtractor_gbh.cpp delete mode 100644 modules/video/test/test_motiontemplates.cpp delete mode 100644 modules/video/test/test_simpleflow.cpp delete mode 100644 samples/cpp/bgfg_gmg.cpp delete mode 100644 samples/cpp/motempl.cpp delete mode 100644 samples/cpp/simpleflow_demo.cpp delete mode 100644 samples/cpp/trained_classifierNM1.xml delete mode 100644 samples/cpp/trained_classifierNM2.xml delete mode 100644 samples/cpp/trained_classifier_erGrouping.xml delete mode 100755 samples/python2/motempl.py diff --git a/data/softcascade/inria_caltech-17.01.2013.xml b/data/softcascade/inria_caltech-17.01.2013.xml deleted file mode 100644 index af4d89eda6..0000000000 --- a/data/softcascade/inria_caltech-17.01.2013.xml +++ /dev/null @@ -1,61401 +0,0 @@ - - - - - - - - - BOOST - ICF - 2 - 64 - 128 - 4 - - <_> - -1 - 1024 - - <_> - -9.4971716403961182e-01 - - 1 2 0 3.7500000000000000e+01 0 -1 1 6.6500000000000000e+01 - -2 -3 2 1.7235000000000000e+03 - - -9.4971716403961182e-01 2.6997840404510498e-01 - 7.8099721670150757e-01 -7.7198696136474609e-01 - <_> - -1.7211276292800903e+00 - - 1 2 3 8.4650000000000000e+02 0 -1 4 1.2500000000000000e+01 - -2 -3 5 5.8500000000000000e+01 - - -5.5446445941925049e-01 7.2089314460754395e-01 - -9.4914066791534424e-01 -4.8974543809890747e-02 - <_> - -2.4981524944305420e+00 - - 1 2 6 2.5000000000000000e+00 0 -1 7 5.9500000000000000e+01 - -2 -3 8 5.6500000000000000e+01 - - -7.7702480554580688e-01 6.2583726644515991e-01 - 5.4469954967498779e-01 -8.8470917940139771e-01 - <_> - -2.1237995624542236e+00 - - 1 2 9 7.8500000000000000e+01 0 -1 10 1.2005000000000000e+03 - -2 -3 11 3.5000000000000000e+00 - - -2.2334083914756775e-03 -9.4934105873107910e-01 - 6.9860899448394775e-01 -5.2581334114074707e-01 - <_> - -1.4558345079421997e+00 - - 1 2 12 5.6550000000000000e+02 0 -1 13 1.5000000000000000e+00 - -2 -3 14 7.2500000000000000e+01 - - -3.4912836551666260e-01 -9.5133358240127563e-01 - -1.3602481782436371e-01 6.6796511411666870e-01 - <_> - -1.5295742750167847e+00 - - 1 2 15 2.7500000000000000e+01 0 -1 16 8.5000000000000000e+00 - -2 -3 17 2.2500000000000000e+01 - - -7.7886241674423218e-01 4.4655936956405640e-01 - -7.3739707469940186e-02 -7.9169273376464844e-01 - <_> - -2.2253897190093994e+00 - - 1 2 18 5.0000000000000000e-01 0 -1 19 1.5000000000000000e+00 - -2 -3 20 2.6925000000000000e+03 - - -8.5955154895782471e-01 5.1408839225769043e-01 - 3.5344448685646057e-01 -6.9581556320190430e-01 - <_> - -1.6767826080322266e+00 - - 1 2 21 4.8050000000000000e+02 0 -1 22 1.2500000000000000e+01 - -2 -3 23 5.5000000000000000e+00 - - -6.2450993061065674e-01 2.5221033021807671e-02 - -6.7134410142898560e-01 6.1318635940551758e-01 - <_> - -1.3603744506835938e+00 - - 1 2 24 1.1435000000000000e+03 0 -1 25 1.7835000000000000e+03 - -2 -3 26 4.2500000000000000e+01 - - -6.0388273000717163e-01 3.1640821695327759e-01 - -8.4853601455688477e-01 6.8783169984817505e-01 - <_> - -1.0207209587097168e+00 - - 1 2 27 3.5000000000000000e+00 0 -1 28 4.9500000000000000e+01 - -2 -3 29 9.0500000000000000e+01 - - 3.3346191048622131e-01 -8.7325519323348999e-01 - -8.2403194904327393e-01 3.3965352177619934e-01 - <_> - -7.3391747474670410e-01 - - 1 2 30 1.5000000000000000e+00 0 -1 31 3.2950000000000000e+02 - -2 -3 32 1.1500000000000000e+01 - - 6.6277317702770233e-02 -6.9447505474090576e-01 - -5.3387427330017090e-01 4.5649796724319458e-01 - <_> - -8.5609853267669678e-01 - - 1 2 33 5.0000000000000000e-01 0 -1 34 9.9450000000000000e+02 - -2 -3 35 6.9500000000000000e+01 - - 4.8371157050132751e-01 -5.3800541162490845e-01 - -7.2787827253341675e-01 3.4235689043998718e-01 - <_> - -5.6636196374893188e-01 - - 1 2 36 6.5000000000000000e+00 0 -1 37 72. -2 -3 38 - 3.0950000000000000e+02 - - -8.5185158252716064e-01 7.3330056667327881e-01 - 2.8973656892776489e-01 -6.7352497577667236e-01 - <_> - -3.7486231327056885e-01 - - 1 2 39 2.5000000000000000e+00 0 -1 40 7.1500000000000000e+01 - -2 -3 41 6.5000000000000000e+00 - - -9.3279057741165161e-01 7.1982288360595703e-01 - -7.4711191654205322e-01 1.9149963557720184e-01 - <_> - -4.8397040367126465e-01 - - 1 2 42 1.1825000000000000e+03 0 -1 43 7.1500000000000000e+01 - -2 -3 44 1000. - - -1.9838142395019531e-01 4.8220044374465942e-01 - -8.3472287654876709e-01 9.5568519830703735e-01 - <_> - -4.4923403859138489e-01 - - 1 2 45 1.4050000000000000e+02 0 -1 46 3.8645000000000000e+03 - -2 -3 47 5.7750000000000000e+02 - - -5.5212533473968506e-01 4.4974172115325928e-01 - -7.6033878326416016e-01 3.4736368805170059e-02 - <_> - -4.2061111330986023e-01 - - 1 2 48 3.2500000000000000e+01 0 -1 49 5.0000000000000000e-01 - -2 -3 50 715. - - 3.7134438753128052e-01 -3.3291110396385193e-01 - -8.0598479509353638e-01 9.6374911069869995e-01 - <_> - -1.9169148802757263e-01 - - 1 2 51 1.0500000000000000e+01 0 -1 52 1.0500000000000000e+01 - -2 -3 53 4.9500000000000000e+01 - - -8.6079102754592896e-01 6.6127598285675049e-01 - 2.2891961038112640e-01 -9.0992504358291626e-01 - <_> - -5.1674181222915649e-01 - - 1 2 54 2.6150000000000000e+02 0 -1 55 3.2695000000000000e+03 - -2 -3 56 1409. - - -9.3132334947586060e-01 9.0150839090347290e-01 - -5.5453002452850342e-01 1.6071465611457825e-01 - <_> - 7.2020828723907471e-02 - - 1 2 57 7.9500000000000000e+01 0 -1 58 2.8025000000000000e+03 - -2 -3 59 9.5000000000000000e+00 - - -7.9213029146194458e-01 5.8876264095306396e-01 - -6.8830287456512451e-01 1.2910151481628418e-01 - <_> - 2.1566778421401978e-01 - - 1 2 60 3.5000000000000000e+00 0 -1 61 1.0500000000000000e+01 - -2 -3 62 1.9500000000000000e+01 - - 4.0831661224365234e-01 -4.9088028073310852e-01 - -6.5012139081954956e-01 3.4508187323808670e-02 - <_> - -2.1515211090445518e-02 - - 1 2 63 2.8050000000000000e+02 0 -1 64 1.3550000000000000e+02 - -2 -3 65 6.4500000000000000e+01 - - -8.1834840774536133e-01 3.4400060772895813e-01 - -6.3054949045181274e-01 1.1890744417905807e-01 - <_> - 3.1621408462524414e-01 - - 1 2 66 9.5000000000000000e+00 0 -1 67 6.1450000000000000e+02 - -2 -3 68 1.3500000000000000e+01 - - 9.3128114938735962e-02 -9.1282945871353149e-01 - -3.9921483397483826e-01 3.3772930502891541e-01 - <_> - 5.6335878372192383e-01 - - 1 2 69 3.7950000000000000e+02 0 -1 70 1.3500000000000000e+01 - -2 -3 71 1.5000000000000000e+00 - - -7.0056474208831787e-01 5.2738833427429199e-01 - 3.5282510519027710e-01 -3.3403894305229187e-01 - <_> - 5.6363087892532349e-01 - - 1 2 72 1.1250000000000000e+02 0 -1 73 5.0000000000000000e-01 - -2 -3 74 1.2050000000000000e+02 - - -4.6730571985244751e-01 2.9215443134307861e-01 - -8.7365627288818359e-01 3.9535489678382874e-01 - <_> - 6.9701683521270752e-01 - - 1 2 75 5.0425000000000000e+03 0 -1 76 4.5000000000000000e+00 - -2 -3 77 6.5000000000000000e+00 - - -6.0965454578399658e-01 1.8540042638778687e-01 - -9.2315214872360229e-01 5.3048878908157349e-01 - <_> - 4.5701298117637634e-01 - - 1 2 78 5.0000000000000000e-01 0 -1 79 6.5000000000000000e+00 - -2 -3 80 2.5000000000000000e+00 - - -2.7668315172195435e-01 5.6005096435546875e-01 - 2.1146409213542938e-01 -5.8390063047409058e-01 - <_> - 5.3680413961410522e-01 - - 1 2 81 1.6385000000000000e+03 0 -1 82 1.6425000000000000e+03 - -2 -3 83 9.5650000000000000e+02 - - -4.7798931598663330e-01 7.4568957090377808e-01 - -6.5293675661087036e-01 7.9791143536567688e-02 - <_> - 7.9123014211654663e-01 - - 1 2 84 2.5000000000000000e+00 0 -1 85 3.5000000000000000e+00 - -2 -3 86 2.7500000000000000e+01 - - -8.4295582771301270e-01 3.1564649939537048e-01 - 2.5442600250244141e-01 -5.3678894042968750e-01 - <_> - 9.9566841125488281e-01 - - 1 2 87 1.5000000000000000e+00 0 -1 88 8.3500000000000000e+01 - -2 -3 89 4.3585000000000000e+03 - - -6.9861388206481934e-01 5.2257591485977173e-01 - 2.0443826913833618e-01 -9.2329531908035278e-01 - <_> - 6.9697165489196777e-01 - - 1 2 90 6.5000000000000000e+00 0 -1 91 5.0000000000000000e-01 - -2 -3 92 1.5500000000000000e+01 - - 5.5905121564865112e-01 -4.5287278294563293e-01 - 4.4855368137359619e-01 -5.0183618068695068e-01 - <_> - 9.2100763320922852e-01 - - 1 2 93 1.5500000000000000e+01 0 -1 94 1727. -2 -3 95 - 4.0650000000000000e+02 - - 8.0813169479370117e-02 -7.7053368091583252e-01 - -6.6791737079620361e-01 5.0257974863052368e-01 - <_> - 1.2186468839645386e+00 - - 1 2 96 2.5000000000000000e+00 0 -1 97 9.4450000000000000e+02 - -2 -3 98 2.8250000000000000e+02 - - 5.1938551664352417e-01 -6.8461489677429199e-01 - 2.9763919115066528e-01 -5.4145312309265137e-01 - <_> - 1.5830533504486084e+00 - - 1 2 99 1.5000000000000000e+00 0 -1 100 - 6.4500000000000000e+01 -2 -3 101 4.1500000000000000e+01 - - 3.6440649628639221e-01 -8.8290220499038696e-01 - -5.5990779399871826e-01 5.2934420108795166e-01 - <_> - 1.6476187705993652e+00 - - 1 2 102 6.3500000000000000e+01 0 -1 103 1272. -2 -3 104 - 3.5000000000000000e+00 - - 7.6397061347961426e-02 -6.9906431436538696e-01 - -3.5238000750541687e-01 4.7082781791687012e-01 - <_> - 1.9613027572631836e+00 - - 1 2 105 1.9050000000000000e+02 0 -1 106 - 2.5950000000000000e+02 -2 -3 107 8.6850000000000000e+02 - - 4.7928789258003235e-01 -5.8920049667358398e-01 - 3.1368392705917358e-01 -7.1384090185165405e-01 - <_> - 1.8639501333236694e+00 - - 1 2 108 4.5000000000000000e+00 0 -1 109 - 2.5000000000000000e+00 -2 -3 110 3.4500000000000000e+01 - - -6.9352459907531738e-01 7.6466333866119385e-01 - -4.9252825975418091e-01 3.0242496728897095e-01 - <_> - 1.8654627799987793e+00 - - 1 2 111 5.5000000000000000e+00 0 -1 112 - 4.6550000000000000e+02 -2 -3 113 6.6500000000000000e+01 - - 3.1676077842712402e-01 -5.6126487255096436e-01 - -7.7573800086975098e-01 5.2215093374252319e-01 - <_> - 2.1480247974395752e+00 - - 1 2 114 6.0500000000000000e+01 0 -1 115 - 2.0500000000000000e+01 -2 -3 116 2.3450000000000000e+02 - - -8.9376759529113770e-01 -1.0997094959020615e-01 - 7.2199839353561401e-01 -5.0327394157648087e-02 - <_> - 1.9088299274444580e+00 - - 1 2 117 7.5000000000000000e+00 0 -1 118 - 4.0500000000000000e+01 -2 -3 119 6.5000000000000000e+00 - - 4.8195198178291321e-02 -7.0370197296142578e-01 - -2.3919497430324554e-01 4.2311295866966248e-01 - <_> - 1.5272409915924072e+00 - - 1 2 120 1.6050000000000000e+02 0 -1 121 - 1.0500000000000000e+01 -2 -3 122 1.0500000000000000e+01 - - 2.4770694971084595e-01 -3.8158890604972839e-01 - -9.7206908464431763e-01 8.9829629659652710e-01 - <_> - 1.9680063724517822e+00 - - 1 2 123 2.5000000000000000e+00 0 -1 124 - 1.9500000000000000e+01 -2 -3 125 2.5735000000000000e+03 - - -4.3100010603666306e-02 -7.5473427772521973e-01 - -3.5048019886016846e-01 4.4076529145240784e-01 - <_> - 2.3465363979339600e+00 - - 1 2 126 1.2500000000000000e+01 0 -1 127 - 1.0555000000000000e+03 -2 -3 128 7.5000000000000000e+00 - - -8.7551236152648926e-01 -6.7303813993930817e-02 - 3.7853002548217773e-01 -3.1027609109878540e-01 - <_> - 2.9033544063568115e+00 - - 1 2 129 8.5000000000000000e+00 0 -1 130 - 5.6250000000000000e+02 -2 -3 131 1.3550000000000000e+02 - - -3.6559425294399261e-02 -7.8142386674880981e-01 - 7.2312414646148682e-01 2.3289153352379799e-02 - <_> - 2.9388859272003174e+00 - - 1 2 132 5.0000000000000000e-01 0 -1 133 - 5.5250000000000000e+02 -2 -3 134 9.5000000000000000e+00 - - -3.9772734045982361e-01 3.6010205745697021e-01 - -5.2232388406991959e-02 -8.5994052886962891e-01 - <_> - 3.1289162635803223e+00 - - 1 2 135 2.5000000000000000e+00 0 -1 136 - 9.3550000000000000e+02 -2 -3 137 3.4500000000000000e+01 - - 6.5386021137237549e-01 -7.9960751533508301e-01 - 5.9937894344329834e-01 -9.3748055398464203e-02 - <_> - 2.9401018619537354e+00 - - 1 2 138 2.3500000000000000e+01 0 -1 139 - 4.9500000000000000e+01 -2 -3 140 3.6500000000000000e+01 - - -2.2960659861564636e-01 6.7244362831115723e-01 - 7.8785783052444458e-01 -9.8723149299621582e-01 - <_> - 3.1424379348754883e+00 - - 1 2 141 2.5000000000000000e+00 0 -1 142 - 5.5000000000000000e+00 -2 -3 143 2361. - - -9.1799181699752808e-01 4.2446807026863098e-01 - 2.0233620703220367e-01 -9.6672892570495605e-01 - <_> - 3.4968855381011963e+00 - - 1 2 144 2.8550000000000000e+02 0 -1 145 - 5.1500000000000000e+01 -2 -3 146 5.6650000000000000e+02 - - -8.5579192638397217e-01 -9.2651106417179108e-02 - 3.8093444705009460e-01 -5.7530546188354492e-01 - <_> - 3.1502232551574707e+00 - - 1 2 147 4.5000000000000000e+00 0 -1 148 - 6.8500000000000000e+01 -2 -3 149 9.5000000000000000e+00 - - -8.9113306999206543e-01 7.8237515687942505e-01 - 3.2001781463623047e-01 -3.7314903736114502e-01 - <_> - 3.8585174083709717e+00 - - 1 2 150 5.0000000000000000e-01 0 -1 151 - 5.5000000000000000e+00 -2 -3 152 4.1050000000000000e+02 - - -4.9204528331756592e-01 7.0829415321350098e-01 - 7.4046157300472260e-02 -6.1383426189422607e-01 - <_> - 3.8080792427062988e+00 - - 1 2 153 3.5500000000000000e+01 0 -1 154 7681. -2 -3 155 - 2.4675000000000000e+03 - - 3.3740982413291931e-02 -7.4226945638656616e-01 - -7.3395508527755737e-01 3.6083909869194031e-01 - <_> - 3.3863887786865234e+00 - - 1 2 156 5.6500000000000000e+01 0 -1 157 - 5.0000000000000000e-01 -2 -3 158 8.4050000000000000e+02 - - 1.7904321849346161e-01 -4.8003113269805908e-01 - -9.6535164117813110e-01 6.9043123722076416e-01 - <_> - 3.6636304855346680e+00 - - 1 2 159 4.5000000000000000e+00 0 -1 160 - 2.5000000000000000e+00 -2 -3 161 5.8950000000000000e+02 - - 2.8943026065826416e-01 -6.7487114667892456e-01 - 2.7724167704582214e-01 -8.2213556766510010e-01 - <_> - 3.8721060752868652e+00 - - 1 2 162 1.2150000000000000e+02 0 -1 163 - 1.4500000000000000e+01 -2 -3 164 1.7500000000000000e+01 - - 2.0847551524639130e-01 -6.2353050708770752e-01 - -9.3967980146408081e-01 1.3107043504714966e-01 - <_> - 3.7894663810729980e+00 - - 1 2 165 2.5000000000000000e+00 0 -1 166 - 1.5500000000000000e+01 -2 -3 167 7.4500000000000000e+01 - - -7.5801634788513184e-01 4.9648978747427464e-03 - 2.7702361345291138e-01 -6.3914996385574341e-01 - <_> - 4.0543885231018066e+00 - - 1 2 168 9.3500000000000000e+01 0 -1 169 - 6.1500000000000000e+01 -2 -3 170 2.8500000000000000e+01 - - -4.7131806612014771e-01 7.3680460453033447e-01 - 3.5524344444274902e-01 -8.2101029157638550e-01 - <_> - 3.9048261642456055e+00 - - 1 2 171 7.5500000000000000e+01 0 -1 172 - 5.0000000000000000e-01 -2 -3 173 1.6500000000000000e+01 - - 4.9885207414627075e-01 -1.4956261217594147e-01 - -9.2175818979740143e-02 -8.9010834693908691e-01 - <_> - 4.4586915969848633e+00 - - 1 2 174 2.6950000000000000e+02 0 -1 175 - 1.7605000000000000e+03 -2 -3 176 2.8545000000000000e+03 - - 8.6131852865219116e-01 -1.3636624813079834e-01 - -7.9446256160736084e-01 5.2974238060414791e-03 - <_> - 4.6468200683593750e+00 - - 1 2 177 8.5000000000000000e+00 0 -1 178 - 1.7250000000000000e+02 -2 -3 179 1.5000000000000000e+00 - - 7.8949034214019775e-01 -6.4925616979598999e-01 - -4.3843978643417358e-01 3.6792558431625366e-01 - <_> - 5.0024299621582031e+00 - - 1 2 180 5.0000000000000000e-01 0 -1 181 - 1.5000000000000000e+00 -2 -3 182 3.2500000000000000e+01 - - -6.3265806436538696e-01 5.1995193958282471e-01 - -5.6129783391952515e-01 3.8019722700119019e-01 - <_> - 4.7194237709045410e+00 - - 1 2 183 4.2650000000000000e+02 0 -1 184 - 8.5000000000000000e+00 -2 -3 185 4.4950000000000000e+02 - - -7.5718921422958374e-01 2.8537952899932861e-01 - -6.2070721387863159e-01 4.7228741645812988e-01 - <_> - 5.0188984870910645e+00 - - 1 2 186 4.5000000000000000e+00 0 -1 187 - 7.5000000000000000e+00 -2 -3 188 2.5500000000000000e+01 - - -7.2133111953735352e-01 5.6136214733123779e-01 - -6.9119346141815186e-01 3.8566098082810640e-03 - <_> - 5.3487014770507812e+00 - - 1 2 189 5.7500000000000000e+01 0 -1 190 - 2.5000000000000000e+00 -2 -3 191 7.8350000000000000e+02 - - -4.0980994701385498e-01 3.2980319857597351e-01 - -8.2106924057006836e-01 8.7380580604076385e-02 - <_> - 5.4926447868347168e+00 - - 1 2 192 4.0550000000000000e+02 0 -1 193 - 1.4450000000000000e+02 -2 -3 194 6.5005000000000000e+03 - - 7.8168880939483643e-01 -9.9427944421768188e-01 - 1.4394305646419525e-01 -8.7959676980972290e-01 - <_> - 4.9957537651062012e+00 - - 1 2 195 4.8150000000000000e+02 0 -1 196 - 1.5000000000000000e+00 -2 -3 197 3.5035000000000000e+03 - - 7.3646187782287598e-02 -4.9689114093780518e-01 - 4.9998056888580322e-01 -8.2785910367965698e-01 - <_> - 5.1939215660095215e+00 - - 1 2 198 2.5000000000000000e+00 0 -1 199 - 5.0000000000000000e-01 -2 -3 200 2.3500000000000000e+01 - - 1.2600880861282349e-01 -7.7916258573532104e-01 - 5.3144866228103638e-01 -1.1227495223283768e-01 - <_> - 5.0181527137756348e+00 - - 1 2 201 8.5000000000000000e+00 0 -1 202 - 4.4750000000000000e+02 -2 -3 203 5.0000000000000000e-01 - - 5.7900190353393555e-02 -7.0389288663864136e-01 - 5.1429390907287598e-01 -1.7576885223388672e-01 - <_> - 5.5697488784790039e+00 - - 1 2 204 1.0500000000000000e+01 0 -1 205 70. -2 -3 206 - 6.7350000000000000e+02 - - -8.7297052145004272e-01 7.0906364917755127e-01 - -1.4972299337387085e-01 5.5159616470336914e-01 - <_> - 5.7136139869689941e+00 - - 1 2 207 1.3650000000000000e+02 0 -1 208 - 1.6175000000000000e+03 -2 -3 209 3.7500000000000000e+01 - - -7.1608042716979980e-01 6.8123096227645874e-01 - -5.4103106260299683e-01 1.4386519789695740e-01 - <_> - 6.0863943099975586e+00 - - 1 2 210 4.2350000000000000e+02 0 -1 211 - 6.5000000000000000e+00 -2 -3 212 1.6500000000000000e+01 - - -5.0391936302185059e-01 3.7278059124946594e-01 - -6.1555516719818115e-01 3.6680406332015991e-01 - <_> - 6.0900993347167969e+00 - - 1 2 213 7.5000000000000000e+00 0 -1 214 - 6.3500000000000000e+01 -2 -3 215 1.7150000000000000e+02 - - -8.1301319599151611e-01 2.1032735705375671e-01 - 2.5279974937438965e-01 -7.4217134714126587e-01 - <_> - 5.8023753166198730e+00 - - 1 2 216 1.2500000000000000e+01 0 -1 217 - 1.5000000000000000e+00 -2 -3 218 2.6500000000000000e+01 - - -7.2685444355010986e-01 7.9898738861083984e-01 - -2.8772389888763428e-01 5.6455093622207642e-01 - <_> - 6.3323311805725098e+00 - - 1 2 219 1.5000000000000000e+00 0 -1 220 - 8.5000000000000000e+00 -2 -3 221 1475. - - -1.4710092544555664e-01 5.2995562553405762e-01 - -5.9936457872390747e-01 6.4512765407562256e-01 - <_> - 6.6095805168151855e+00 - - 1 2 222 1.0050000000000000e+02 0 -1 223 - 1.3850000000000000e+02 -2 -3 224 1.6500000000000000e+01 - - -3.7491708993911743e-01 2.7724933624267578e-01 - -9.3418252468109131e-01 7.3304271697998047e-01 - <_> - 6.3995418548583984e+00 - - 1 2 225 5.0000000000000000e-01 0 -1 226 - 5.0000000000000000e-01 -2 -3 227 404. - - -5.4505115747451782e-01 3.4958031773567200e-01 - 3.8955518603324890e-01 -5.4077529907226562e-01 - <_> - 6.4326496124267578e+00 - - 1 2 228 1.4725000000000000e+03 0 -1 229 - 1.5000000000000000e+00 -2 -3 230 1.8750000000000000e+02 - - -5.1992988586425781e-01 3.2155281305313110e-01 - -8.8109362125396729e-01 1.9341170787811279e-01 - <_> - 6.6780347824096680e+00 - - 1 2 231 4.1500000000000000e+01 0 -1 232 - 3.7950000000000000e+02 -2 -3 233 5.6500000000000000e+01 - - -3.8503032922744751e-01 2.4538502097129822e-01 - -8.7592208385467529e-01 1. - <_> - 6.2248573303222656e+00 - - 1 2 234 7.5000000000000000e+00 0 -1 235 - 3.2500000000000000e+01 -2 -3 236 5.7950000000000000e+02 - - -4.5317751169204712e-01 2.1532684564590454e-01 - 5.8404910564422607e-01 -2.4274602532386780e-01 - <_> - 6.4159698486328125e+00 - - 1 2 237 1.1535000000000000e+03 0 -1 238 - 5.5000000000000000e+00 -2 -3 239 6.4500000000000000e+01 - - -8.7068289518356323e-01 1.9111247360706329e-01 - -9.4053912162780762e-01 4.4355693459510803e-01 - <_> - 7.1638717651367188e+00 - - 1 2 240 1.4050000000000000e+02 0 -1 241 - 5.0000000000000000e-01 -2 -3 242 1.2650000000000000e+02 - - 4.4086909294128418e-01 -5.0150549411773682e-01 - 7.4790221452713013e-01 -9.0757437050342560e-02 - <_> - 6.9956283569335938e+00 - - 1 2 243 4.0550000000000000e+02 0 -1 244 - 3.7650000000000000e+02 -2 -3 245 4524. - - -3.4899798035621643e-01 8.1103372573852539e-01 - -8.7178498506546021e-01 -4.8995027318596840e-03 - <_> - 7.4554481506347656e+00 - - 1 2 246 2.3150000000000000e+02 0 -1 247 - 3.1425000000000000e+03 -2 -3 248 6.5000000000000000e+00 - - 5.2766591310501099e-01 -6.1232703924179077e-01 - -6.5764123201370239e-01 2.0478096604347229e-01 - <_> - 7.2104501724243164e+00 - - 1 2 249 2.9500000000000000e+01 0 -1 250 - 5.0000000000000000e-01 -2 -3 251 2.1500000000000000e+01 - - 4.3428641557693481e-01 -3.1284397840499878e-01 - 8.8815468549728394e-01 -4.8376885056495667e-01 - <_> - 7.4390578269958496e+00 - - 1 2 252 5.5000000000000000e+00 0 -1 253 - 1.3500000000000000e+01 -2 -3 254 6.2500000000000000e+01 - - 7.5515633821487427e-01 -9.5432144403457642e-01 - 2.2860760986804962e-01 -7.0533061027526855e-01 - <_> - 7.9283328056335449e+00 - - 1 2 255 2.5000000000000000e+00 0 -1 256 - 2.2050000000000000e+02 -2 -3 257 6.5000000000000000e+00 - - 2.8305485844612122e-01 -4.7798827290534973e-01 - -6.9612729549407959e-01 4.8927512764930725e-01 - <_> - 7.8133955001831055e+00 - - 1 2 258 9.5000000000000000e+00 0 -1 259 - 4.5000000000000000e+00 -2 -3 260 1.7500000000000000e+01 - - 6.2756460905075073e-01 -7.5498276948928833e-01 - 3.5729703307151794e-01 -4.0417757630348206e-01 - <_> - 8.1147861480712891e+00 - - 1 2 261 5.0000000000000000e-01 0 -1 262 - 5.0000000000000000e-01 -2 -3 263 1.5000000000000000e+00 - - -4.9173495173454285e-01 4.1440054774284363e-01 - 1.4962354302406311e-01 -6.2164884805679321e-01 - <_> - 8.0036125183105469e+00 - - 1 2 264 2.7250000000000000e+02 0 -1 265 - 6.6500000000000000e+01 -2 -3 266 8.6500000000000000e+01 - - 8.9536643028259277e-01 -8.2981568574905396e-01 - -1.1117322742938995e-01 5.5591076612472534e-01 - <_> - 7.9468250274658203e+00 - - 1 2 267 3.4355000000000000e+03 0 -1 268 - 1.2500000000000000e+01 -2 -3 269 5.0000000000000000e-01 - - -5.6787721812725067e-02 6.2517631053924561e-01 - 9.5699685811996460e-01 -8.4953671693801880e-01 - <_> - 8.1981401443481445e+00 - - 1 2 270 5.1255000000000000e+03 0 -1 271 - 7.5500000000000000e+01 -2 -3 272 3.5000000000000000e+00 - - 5.5827653408050537e-01 -8.1833952665328979e-01 - -7.4658811092376709e-01 2.5131568312644958e-01 - <_> - 8.5107431411743164e+00 - - 1 2 273 1.4500000000000000e+01 0 -1 274 - 1.2465000000000000e+03 -2 -3 275 2.5000000000000000e+00 - - -4.7990524768829346e-01 3.1260266900062561e-01 - -7.6885735988616943e-01 2.7144250273704529e-01 - <_> - 8.5296592712402344e+00 - - 1 2 276 8.5000000000000000e+00 0 -1 277 - 4.5000000000000000e+00 -2 -3 278 2.2500000000000000e+01 - - -2.7888947725296021e-01 4.1390788555145264e-01 - -7.5243312120437622e-01 3.8646731525659561e-02 - <_> - 8.1502628326416016e+00 - - 1 2 279 7.5000000000000000e+00 0 -1 280 - 4.5000000000000000e+00 -2 -3 281 6.5000000000000000e+00 - - -9.1697919368743896e-01 2.5899103283882141e-01 - 2.9392924904823303e-01 -3.7939697504043579e-01 - <_> - 8.5284252166748047e+00 - - 1 2 282 7.5000000000000000e+00 0 -1 283 - 4.5000000000000000e+00 -2 -3 284 1.6650000000000000e+02 - - 4.6240034699440002e-01 -5.9770995378494263e-01 - 3.7816286087036133e-01 -4.5079508423805237e-01 - <_> - 8.8317689895629883e+00 - - 1 2 285 5.0000000000000000e-01 0 -1 286 - 1.0500000000000000e+01 -2 -3 287 9.3500000000000000e+01 - - -2.2997814416885376e-01 5.8687257766723633e-01 - -3.8729551434516907e-01 8.3155500888824463e-01 - <_> - 9.0805969238281250e+00 - - 1 2 288 4.5000000000000000e+00 0 -1 289 - 1.5000000000000000e+00 -2 -3 290 9.5500000000000000e+01 - - -5.1435619592666626e-01 6.5646749734878540e-01 - 2.3559592664241791e-01 -5.2417474985122681e-01 - <_> - 9.1131057739257812e+00 - - 1 2 291 1.0550000000000000e+02 0 -1 292 - 2.5000000000000000e+00 -2 -3 293 2.5000000000000000e+00 - - 2.8382772207260132e-01 -7.2767460346221924e-01 - -2.2438500821590424e-01 5.3264546394348145e-01 - <_> - 9.5003452301025391e+00 - - 1 2 294 3.6250000000000000e+02 0 -1 295 - 5.2500000000000000e+01 -2 -3 296 1.0500000000000000e+01 - - -1.5170100331306458e-01 5.5480080842971802e-01 - -5.9511619806289673e-01 9.4855791330337524e-01 - <_> - 9.8572778701782227e+00 - - 1 2 297 1.5000000000000000e+00 0 -1 298 - 5.2450000000000000e+02 -2 -3 299 9.4850000000000000e+02 - - -7.1444231271743774e-01 5.5506742000579834e-01 - -3.6931082606315613e-01 3.5693225264549255e-01 - <_> - 9.9349241256713867e+00 - - 1 2 300 9.4850000000000000e+02 0 -1 301 267. -2 -3 302 - 1.6500000000000000e+01 - - -8.8825285434722900e-01 7.0393162965774536e-01 - -7.8592085838317871e-01 1.2156928423792124e-03 - <_> - 9.9322500228881836e+00 - - 1 2 303 2.5500000000000000e+01 0 -1 304 - 1.5000000000000000e+00 -2 -3 305 159. - - 3.4359598159790039e-01 -2.4455060064792633e-01 1. - -7.8989464044570923e-01 - <_> - 1.0058608055114746e+01 - - 1 2 306 5.0000000000000000e-01 0 -1 307 - 2.2500000000000000e+01 -2 -3 308 1.1515000000000000e+03 - - -9.0996569395065308e-01 9.2380321025848389e-01 - -1.6473907232284546e-01 4.1052249073982239e-01 - <_> - 1.0223997116088867e+01 - - 1 2 309 4.2500000000000000e+01 0 -1 310 - 8.6650000000000000e+02 -2 -3 311 2.2500000000000000e+01 - - 1.9234158098697662e-01 -7.2460043430328369e-01 - -7.9836362600326538e-01 9.6195751428604126e-01 - <_> - 1.0008197784423828e+01 - - 1 2 312 5.5000000000000000e+00 0 -1 313 - 2.6650000000000000e+02 -2 -3 314 3.3500000000000000e+01 - - 1.2523138523101807e-01 -8.6618262529373169e-01 - -2.4275220930576324e-01 4.0779858827590942e-01 - <_> - 1.0062645912170410e+01 - - 1 2 315 5.0000000000000000e-01 0 -1 316 - 1.5500000000000000e+01 -2 -3 317 3.5000000000000000e+00 - - -5.3337979316711426e-01 3.9335799217224121e-01 - 1.6538677737116814e-02 -6.5064489841461182e-01 - <_> - 1.0137523651123047e+01 - - 1 2 318 6.5000000000000000e+00 0 -1 319 - 9.7500000000000000e+01 -2 -3 320 4.2250000000000000e+02 - - -8.1692630052566528e-01 3.2735434174537659e-01 - 3.4575462341308594e-01 -3.3049446344375610e-01 - <_> - 1.0166016578674316e+01 - - 1 2 321 2.5500000000000000e+01 0 -1 322 - 8.5000000000000000e+00 -2 -3 323 1.6500000000000000e+01 - - 9.1644279658794403e-02 -5.2864229679107666e-01 - 6.9183582067489624e-01 -8.6679929494857788e-01 - <_> - 1.0464833259582520e+01 - - 1 2 324 4.3500000000000000e+01 0 -1 325 - 2.0500000000000000e+01 -2 -3 326 8.0500000000000000e+01 - - -7.2728145122528076e-01 7.6082414388656616e-01 - 2.9881590604782104e-01 -7.0052075386047363e-01 - <_> - 1.0593893051147461e+01 - - 1 2 327 754. 0 -1 328 3.1500000000000000e+01 -2 -3 329 - 1.1650000000000000e+02 - - 1.2906002998352051e-01 -9.6310997009277344e-01 - -9.4967085123062134e-01 9.2896288633346558e-01 - <_> - 1.0529273033142090e+01 - - 1 2 330 1.5950000000000000e+02 0 -1 331 - 5.0000000000000000e-01 -2 -3 332 1.0500000000000000e+01 - - 4.0252849459648132e-01 -2.2623433172702789e-01 - -8.2927960157394409e-01 7.9533529281616211e-01 - <_> - 1.0765100479125977e+01 - - 1 2 333 3.7500000000000000e+01 0 -1 334 2857. -2 -3 335 - 2.9500000000000000e+01 - - 1.0000352561473846e-01 -6.7226463556289673e-01 - -2.3132064938545227e-01 6.5264308452606201e-01 - <_> - 1.0927120208740234e+01 - - 1 2 336 1.4500000000000000e+01 0 -1 337 - 1.7500000000000000e+01 -2 -3 338 7.5000000000000000e+00 - - 1. -9.8882341384887695e-01 -8.0750954151153564e-01 - 1.6201967000961304e-01 - <_> - 1.0593936920166016e+01 - - 1 2 339 3.5500000000000000e+01 0 -1 340 - 1.9835000000000000e+03 -2 -3 341 2.3950000000000000e+02 - - -7.7594196796417236e-01 5.6257498264312744e-01 - -3.3318310976028442e-01 7.2988075017929077e-01 - <_> - 1.0573868751525879e+01 - - 1 2 342 4.0345000000000000e+03 0 -1 343 - 1.7500000000000000e+01 -2 -3 344 2.4500000000000000e+01 - - -2.0068552345037460e-02 6.8981468677520752e-01 - -9.6814006567001343e-01 1. - <_> - 1.0650080680847168e+01 - - 1 2 345 7.5000000000000000e+00 0 -1 346 - 1.2500000000000000e+01 -2 -3 347 5.0000000000000000e-01 - - 7.6211549341678619e-02 -5.1685106754302979e-01 - 7.4474209547042847e-01 -4.1124773025512695e-01 - <_> - 1.1117682456970215e+01 - - 1 2 348 2.6150000000000000e+02 0 -1 349 - 3.6500000000000000e+01 -2 -3 350 1.3225000000000000e+03 - - 3.7473414093255997e-02 -7.5915354490280151e-01 - -8.7183421850204468e-01 5.9835737943649292e-01 - <_> - 1.1351815223693848e+01 - - 1 2 351 1.5000000000000000e+00 0 -1 352 - 1.1500000000000000e+01 -2 -3 353 1.5000000000000000e+00 - - -7.5888788700103760e-01 8.4721368551254272e-01 - -5.5274593830108643e-01 2.3413263261318207e-01 - <_> - 1.1546736717224121e+01 - - 1 2 354 1.3500000000000000e+01 0 -1 355 - 6.5450000000000000e+02 -2 -3 356 9.5000000000000000e+00 - - -7.7053505182266235e-01 2.9745939373970032e-01 - -6.9932419061660767e-01 6.4165964722633362e-02 - <_> - 1.1826669692993164e+01 - - 1 2 357 5.0000000000000000e-01 0 -1 358 55. -2 -3 359 - 2.4850000000000000e+02 - - 4.2303827404975891e-01 -5.7265710830688477e-01 - 2.7993318438529968e-01 -8.1947267055511475e-01 - <_> - 1.1284319877624512e+01 - - 1 2 360 5.0000000000000000e-01 0 -1 361 - 6.5000000000000000e+00 -2 -3 362 1.1500000000000000e+01 - - -9.5987164974212646e-01 3.2443001866340637e-01 - -6.4488828182220459e-01 1.1978100985288620e-01 - <_> - 1.1630601882934570e+01 - - 1 2 363 5.0000000000000000e-01 0 -1 364 - 5.0000000000000000e-01 -2 -3 365 8.4500000000000000e+01 - - -8.8305491209030151e-01 3.4628173708915710e-01 - -4.7460108995437622e-01 7.0546346902847290e-01 - <_> - 1.2214597702026367e+01 - - 1 2 366 9.4450000000000000e+02 0 -1 367 - 1.2500000000000000e+01 -2 -3 368 8.5000000000000000e+00 - - 8.7438219785690308e-01 -7.6936721801757812e-01 - -5.2558350563049316e-01 1.2239178270101547e-01 - <_> - 1.2195128440856934e+01 - - 1 2 369 2.7550000000000000e+02 0 -1 370 - 1.7650000000000000e+02 -2 -3 371 2.2735000000000000e+03 - - -1.9470088183879852e-02 -9.6673905849456787e-01 - -4.8436808586120605e-01 3.0466488003730774e-01 - <_> - 1.2251366615295410e+01 - - 1 2 372 5.2650000000000000e+02 0 -1 373 546. -2 -3 374 - 1.1050000000000000e+02 - - -1. 9.5037066936492920e-01 -3.8202244043350220e-01 - 2.0185998082160950e-01 - <_> - 1.2102990150451660e+01 - - 1 2 375 3.2500000000000000e+01 0 -1 376 - 2.1500000000000000e+01 -2 -3 377 8.4500000000000000e+01 - - -3.2463604211807251e-01 3.6814257502555847e-01 - -7.3823076486587524e-01 7.4913966655731201e-01 - <_> - 1.2312093734741211e+01 - - 1 2 378 3.4355000000000000e+03 0 -1 379 - 2.5000000000000000e+00 -2 -3 380 6.3500000000000000e+01 - - -7.8733509778976440e-01 2.0910337567329407e-01 - -9.0931433439254761e-01 3.8765233755111694e-01 - <_> - 1.2890332221984863e+01 - - 1 2 381 3.0500000000000000e+01 0 -1 382 3778. -2 -3 383 - 3.5000000000000000e+00 - - -9.6564710140228271e-01 6.7786568403244019e-01 - -6.9395273923873901e-01 6.1719562858343124e-02 - <_> - 1.2589548110961914e+01 - - 1 2 384 1.9950000000000000e+02 0 -1 385 - 2.5000000000000000e+00 -2 -3 386 8.1500000000000000e+01 - - 3.0389565229415894e-01 -3.0078458786010742e-01 - 9.3047642707824707e-01 -8.3185690641403198e-01 - <_> - 1.3083652496337891e+01 - - 1 2 387 6.8500000000000000e+01 0 -1 388 - 2.9495000000000000e+03 -2 -3 389 1.6500000000000000e+01 - - 4.2328838258981705e-02 -8.1223583221435547e-01 - -2.1020211279392242e-01 5.5431735515594482e-01 - <_> - 1.3218968391418457e+01 - - 1 2 390 1.6705000000000000e+03 0 -1 391 - 2.5500000000000000e+01 -2 -3 392 4.8050000000000000e+02 - - 4.8974525928497314e-01 -5.1326960325241089e-01 - -5.8406698703765869e-01 1.3531610369682312e-01 - <_> - 1.2885004043579102e+01 - - 1 2 393 8.5000000000000000e+00 0 -1 394 - 4.1845000000000000e+03 -2 -3 395 1.3500000000000000e+01 - - -1.3101078569889069e-01 -8.4397506713867188e-01 - 3.3940505981445312e-01 -5.4651063680648804e-01 - <_> - 1.3153897285461426e+01 - - 1 2 396 5.5000000000000000e+00 0 -1 397 - 6.1950000000000000e+02 -2 -3 398 2.8500000000000000e+01 - - 1.9637145102024078e-01 -4.6468892693519592e-01 - 5.5541270971298218e-01 -1. - <_> - 1.3368961334228516e+01 - - 1 2 399 9.5000000000000000e+00 0 -1 400 - 1.5000000000000000e+00 -2 -3 401 5.1500000000000000e+01 - - 9.3293839693069458e-01 -8.3272749185562134e-01 - 2.1506418287754059e-01 -8.0539971590042114e-01 - <_> - 1.3012317657470703e+01 - - 1 2 402 5.5000000000000000e+00 0 -1 403 - 1.5000000000000000e+00 -2 -3 404 8.5000000000000000e+00 - - 7.4536651372909546e-01 -6.8645662069320679e-01 - 3.7242239713668823e-01 -3.5664358735084534e-01 - <_> - 1.3480623245239258e+01 - - 1 2 405 5.0000000000000000e-01 0 -1 406 - 5.5000000000000000e+00 -2 -3 407 1.2950000000000000e+02 - - -3.6363714933395386e-01 4.6830555796623230e-01 - -5.7222759723663330e-01 4.0735042095184326e-01 - <_> - 1.3696137428283691e+01 - - 1 2 408 5.0000000000000000e-01 0 -1 409 - 3.5500000000000000e+01 -2 -3 410 2.4750000000000000e+02 - - -8.6935847997665405e-01 6.8743604421615601e-01 - 2.1551388502120972e-01 -7.8673112392425537e-01 - <_> - 1.3721407890319824e+01 - - 1 2 411 3.8500000000000000e+01 0 -1 412 - 3.8150000000000000e+02 -2 -3 413 6.5000000000000000e+00 - - -5.6747698783874512e-01 8.5023626685142517e-02 - -7.0082569122314453e-01 6.5703827142715454e-01 - <_> - 1.3873306274414062e+01 - - 1 2 414 3.0435000000000000e+03 0 -1 415 29. -2 -3 416 83. - - 1.5189857780933380e-01 -9.3611216545104980e-01 - -9.5821422338485718e-01 6.5282088518142700e-01 - <_> - 1.4014303207397461e+01 - - 1 2 417 5.0000000000000000e-01 0 -1 418 - 5.5000000000000000e+00 -2 -3 419 2.8500000000000000e+01 - - -6.7168551683425903e-01 3.7073549628257751e-01 - -6.0920524597167969e-01 1.5500061213970184e-01 - <_> - 1.4489161491394043e+01 - - 1 2 420 1.0500000000000000e+01 0 -1 421 - 9.2500000000000000e+01 -2 -3 422 9.5000000000000000e+00 - - 4.7485816478729248e-01 -9.3795543909072876e-01 - -4.8096546530723572e-01 3.2066935300827026e-01 - <_> - 1.4712132453918457e+01 - - 1 2 423 5.6500000000000000e+01 0 -1 424 - 1.5500000000000000e+01 -2 -3 425 11. - - -5.4511427879333496e-01 2.2297111153602600e-01 - -9.3687444925308228e-01 9.3418681621551514e-01 - <_> - 1.4426413536071777e+01 - - 1 2 426 9.7450000000000000e+02 0 -1 427 - 8.3850000000000000e+02 -2 -3 428 127. - - 4.5185938477516174e-01 -2.0019924640655518e-01 - 2.9750302433967590e-01 -7.1074008941650391e-01 - <_> - 1.4523365974426270e+01 - - 1 2 429 3.0500000000000000e+01 0 -1 430 - 5.0000000000000000e-01 -2 -3 431 200. - - 9.6951834857463837e-02 -4.6191120147705078e-01 1. -1. - <_> - 1.4775473594665527e+01 - - 1 2 432 5.5000000000000000e+00 0 -1 433 - 3.8500000000000000e+01 -2 -3 434 34. - - -6.4820885658264160e-01 9.7515827417373657e-01 - -8.0702418088912964e-01 2.5210806727409363e-01 - <_> - 1.4361328125000000e+01 - - 1 2 435 9.5500000000000000e+01 0 -1 436 - 1.9250000000000000e+02 -2 -3 437 2.1500000000000000e+01 - - -5.9286040067672729e-01 3.2556504011154175e-01 - 2.8273129463195801e-01 -9.3379873037338257e-01 - <_> - 1.4586226463317871e+01 - - 1 2 438 3412. 0 -1 439 8.5000000000000000e+00 -2 -3 440 100. - - -4.1335216164588928e-01 2.2489830851554871e-01 - -9.9015569686889648e-01 1. - <_> - 1.5102481842041016e+01 - - 1 2 441 4.1150000000000000e+02 0 -1 442 - 5.0500000000000000e+01 -2 -3 443 3.0395000000000000e+03 - - -9.5133119821548462e-01 7.9551450908184052e-02 - 5.3846877813339233e-01 -1.1589291691780090e-01 - <_> - 1.5133154869079590e+01 - - 1 2 444 1.9265000000000000e+03 0 -1 445 - 5.0000000000000000e-01 -2 -3 446 1.0750000000000000e+02 - - 9.7796529531478882e-02 -4.9147978425025940e-01 - 5.6562197208404541e-01 -7.0251446962356567e-01 - <_> - 1.5480172157287598e+01 - - 1 2 447 7.0500000000000000e+01 0 -1 448 239. -2 -3 449 - 1.1755000000000000e+03 - - 4.4128131121397018e-02 -7.7577579021453857e-01 - 3.4701684117317200e-01 -8.5588878393173218e-01 - <_> - 1.5623726844787598e+01 - - 1 2 450 5.0000000000000000e-01 0 -1 451 33. -2 -3 452 - 5.7500000000000000e+01 - - -9.8123723268508911e-01 1. 1.4355540275573730e-01 - -7.0005464553833008e-01 - <_> - 1.5563958168029785e+01 - - 1 2 453 1.5000000000000000e+00 0 -1 454 - 2.8500000000000000e+01 -2 -3 455 47. - - -6.2908321619033813e-01 5.0617432594299316e-01 - -3.7233376502990723e-01 8.5267359018325806e-01 - <_> - 1.5404257774353027e+01 - - 1 2 456 4.1500000000000000e+01 0 -1 457 - 4.5000000000000000e+00 -2 -3 458 1.5000000000000000e+00 - - -9.4914859533309937e-01 9.4575625658035278e-01 - -3.8208422064781189e-01 1.9698897004127502e-01 - <_> - 1.6029253005981445e+01 - - 1 2 459 8.5000000000000000e+00 0 -1 460 - 3.6500000000000000e+01 -2 -3 461 5.5000000000000000e+00 - - -8.4917742013931274e-01 6.1574220657348633e-01 - 8.2632422447204590e-01 -3.3165588974952698e-02 - <_> - 1.5608561515808105e+01 - - 1 2 462 1.3500000000000000e+01 0 -1 463 - 5.3950000000000000e+02 -2 -3 464 5.5000000000000000e+00 - - -9.0597325563430786e-01 2.5814166665077209e-01 - -7.0283818244934082e-01 3.1022888422012329e-01 - <_> - 1.5827486038208008e+01 - - 1 2 465 2.5000000000000000e+00 0 -1 466 - 8.1500000000000000e+01 -2 -3 467 2.0550000000000000e+02 - - -8.6807721853256226e-01 1. 2.1892426908016205e-01 - -6.2899088859558105e-01 - <_> - 1.6221029281616211e+01 - - 1 2 468 8.9850000000000000e+02 0 -1 469 - 4.2050000000000000e+02 -2 -3 470 7.6450000000000000e+02 - - -3.1118813902139664e-02 -8.0856597423553467e-01 - 3.9354413747787476e-01 -7.0517486333847046e-01 - <_> - 1.6183372497558594e+01 - - 1 2 471 2.0545000000000000e+03 0 -1 472 - 2.5050000000000000e+02 -2 -3 473 4.4995000000000000e+03 - - 6.4125961065292358e-01 -8.5631817579269409e-01 - 7.6069533824920654e-01 -3.7658475339412689e-02 - <_> - 1.6466924667358398e+01 - - 1 2 474 7.5000000000000000e+00 0 -1 475 - 4.2895000000000000e+03 -2 -3 476 6.2950000000000000e+02 - - 8.1660963594913483e-02 -7.4422889947891235e-01 - 4.2579609155654907e-01 -4.2402768135070801e-01 - <_> - 1.6026039123535156e+01 - - 1 2 477 5.0000000000000000e-01 0 -1 478 - 1.8500000000000000e+01 -2 -3 479 4.4850000000000000e+02 - - -3.0789500474929810e-01 5.8823746442794800e-01 - -4.4998848438262939e-01 5.3471541404724121e-01 - <_> - 1.6353460311889648e+01 - - 1 2 480 7.6050000000000000e+02 0 -1 481 - 1.9250000000000000e+02 -2 -3 482 6.8500000000000000e+01 - - -6.1745387315750122e-01 9.0257441997528076e-01 - 3.2742044329643250e-01 -7.8960853815078735e-01 - <_> - 1.6734058380126953e+01 - - 1 2 483 2.5000000000000000e+00 0 -1 484 - 1.0500000000000000e+01 -2 -3 485 5.0000000000000000e-01 - - -5.9715515375137329e-01 8.1663769483566284e-01 - 5.2075517177581787e-01 -1.6225169599056244e-01 - <_> - 1.6345090866088867e+01 - - 1 2 486 1.1500000000000000e+01 0 -1 487 - 2.8500000000000000e+01 -2 -3 488 1.7150000000000000e+02 - - 3.0138874053955078e-01 -5.6442081928253174e-01 - 9.8830562829971313e-01 -6.2377959489822388e-01 - <_> - 1.6049247741699219e+01 - - 1 2 489 4.8500000000000000e+01 0 -1 490 - 4.5000000000000000e+00 -2 -3 491 15. - - 3.0436006188392639e-01 -2.9584380984306335e-01 - -9.3031573295593262e-01 8.9746475219726562e-01 - <_> - 1.6490245819091797e+01 - - 1 2 492 1.5500000000000000e+01 0 -1 493 - 1.0500000000000000e+01 -2 -3 494 1.5000000000000000e+00 - - 1.5252333879470825e-01 -6.3438588380813599e-01 - -4.9522089958190918e-01 4.4099876284599304e-01 - <_> - 1.7003578186035156e+01 - - 1 2 495 9.5500000000000000e+01 0 -1 496 - 4.8050000000000000e+02 -2 -3 497 8.8500000000000000e+01 - - -9.6510402858257294e-02 5.1333212852478027e-01 - -8.6270028352737427e-01 7.7527511119842529e-01 - <_> - 1.7326871871948242e+01 - - 1 2 498 5.4050000000000000e+02 0 -1 499 - 9.3500000000000000e+01 -2 -3 500 4075. - - 8.5396260023117065e-01 -4.0819042921066284e-01 - -8.7424677610397339e-01 -4.3737210333347321e-02 - <_> - 1.7417627334594727e+01 - - 1 2 501 4.5000000000000000e+00 0 -1 502 - 2.8565000000000000e+03 -2 -3 503 5.0000000000000000e-01 - - 3.1944847106933594e-01 -7.1486788988113403e-01 - 4.2967954277992249e-01 -7.0940160751342773e-01 - <_> - 1.7675552368164062e+01 - - 1 2 504 2.1500000000000000e+01 0 -1 505 - 3.5000000000000000e+00 -2 -3 506 3946. - - 5.1202677190303802e-02 -8.8791614770889282e-01 - -7.7767062187194824e-01 2.5792467594146729e-01 - <_> - 1.7575408935546875e+01 - - 1 2 507 9.5000000000000000e+00 0 -1 508 - 5.8450000000000000e+02 -2 -3 509 5.0000000000000000e-01 - - 1.6954909265041351e-01 -6.1507350206375122e-01 - -7.3153948783874512e-01 4.1231128573417664e-01 - <_> - 1.7513637542724609e+01 - - 1 2 510 2.7550000000000000e+02 0 -1 511 - 4.4650000000000000e+02 -2 -3 512 1.4500000000000000e+01 - - -6.8732649087905884e-01 9.6409857273101807e-01 - -3.7864384055137634e-01 3.5600626468658447e-01 - <_> - 1.7776586532592773e+01 - - 1 2 513 2.0075000000000000e+03 0 -1 514 - 5.5000000000000000e+00 -2 -3 515 118. - - -4.9108317494392395e-01 2.7656924724578857e-01 - -7.8876090049743652e-01 9.7231864929199219e-01 - <_> - 1.7636518478393555e+01 - - 1 2 516 1.1250000000000000e+02 0 -1 517 - 5.0000000000000000e-01 -2 -3 518 96. - - -6.6741842031478882e-01 2.0427951216697693e-01 - -8.4879159927368164e-01 7.6417601108551025e-01 - <_> - 1.7906213760375977e+01 - - 1 2 519 5.0000000000000000e-01 0 -1 520 - 5.5150000000000000e+02 -2 -3 521 2.5500000000000000e+01 - - -4.4012060761451721e-01 4.9110901355743408e-01 - -7.8305160999298096e-01 -7.4652910232543945e-02 - <_> - 1.7903791427612305e+01 - - 1 2 522 4.5000000000000000e+00 0 -1 523 43. -2 -3 524 - 5.0000000000000000e-01 - - 6.1665916442871094e-01 -7.0740306377410889e-01 - 4.7637423872947693e-01 -1.9755503535270691e-01 - <_> - 1.8408391952514648e+01 - - 1 2 525 5.0000000000000000e-01 0 -1 526 - 1.6500000000000000e+01 -2 -3 527 1.5000000000000000e+00 - - -8.8571590185165405e-01 6.4138215780258179e-01 - 5.0460076332092285e-01 -1.1802505701780319e-01 - <_> - 1.8595077514648438e+01 - - 1 2 528 5.8550000000000000e+02 0 -1 529 - 1.5000000000000000e+00 -2 -3 530 9. - - -6.1554092168807983e-01 1.8668572604656219e-01 - 6.6736525297164917e-01 -9.3229418992996216e-01 - <_> - 1.8598781585693359e+01 - - 1 2 531 1.0500000000000000e+01 0 -1 532 92. -2 -3 533 - 1.0500000000000000e+01 - - -8.5246169567108154e-01 6.4911514520645142e-01 - 7.2167778015136719e-01 -9.1329686343669891e-02 - <_> - 1.8938451766967773e+01 - - 1 2 534 1.9500000000000000e+01 0 -1 535 423. -2 -3 536 - 1.0500000000000000e+01 - - 1.0317068547010422e-01 -6.1221712827682495e-01 - 6.0012447834014893e-01 -5.8523362874984741e-01 - <_> - 1.8760560989379883e+01 - - 1 2 537 1.4500000000000000e+01 0 -1 538 - 8.0950000000000000e+02 -2 -3 539 2.6500000000000000e+01 - - 3.8693800568580627e-01 -4.4410958886146545e-01 - -1.4373737573623657e-01 6.0054707527160645e-01 - <_> - 1.8992055892944336e+01 - - 1 2 540 9.6050000000000000e+02 0 -1 541 - 5.0000000000000000e-01 -2 -3 542 4.2985000000000000e+03 - - 3.1399947404861450e-01 -4.3735453486442566e-01 - 5.6782770156860352e-01 -7.3470437526702881e-01 - <_> - 1.8955116271972656e+01 - - 1 2 543 3.5000000000000000e+00 0 -1 544 - 1.1500000000000000e+01 -2 -3 545 321. - - -8.4036970138549805e-01 6.5071582794189453e-01 - 2.5595465302467346e-01 -5.7423371076583862e-01 - <_> - 1.9468976974487305e+01 - - 1 2 546 8.6500000000000000e+01 0 -1 547 - 2.0500000000000000e+01 -2 -3 548 5.8500000000000000e+01 - - -4.5299276709556580e-01 6.0038709640502930e-01 - 4.3307629227638245e-01 -9.3825417757034302e-01 - <_> - 1.9293138504028320e+01 - - 1 2 549 4.7250000000000000e+02 0 -1 550 1323. -2 -3 551 - 5.9650000000000000e+02 - - 5.0125539302825928e-01 -7.2148317098617554e-01 - 2.1997858583927155e-01 -9.2881590127944946e-01 - <_> - 1.9323114395141602e+01 - - 1 2 552 1314. 0 -1 553 1.9850000000000000e+02 -2 -3 554 - 8.8500000000000000e+01 - - -6.5315421670675278e-03 -9.2719602584838867e-01 - -7.3869484663009644e-01 9.9385118484497070e-01 - <_> - 1.9764301300048828e+01 - - 1 2 555 1.5000000000000000e+00 0 -1 556 - 1.5000000000000000e+00 -2 -3 557 5.0000000000000000e-01 - - -9.3367540836334229e-01 7.1327829360961914e-01 - 4.4118791818618774e-01 -1.8068529665470123e-01 - <_> - 1.9636823654174805e+01 - - 1 2 558 1.0500000000000000e+01 0 -1 559 42. -2 -3 560 - 5.5000000000000000e+00 - - 6.9835877418518066e-01 -4.6136018633842468e-01 - 4.5605877041816711e-01 -4.3727838993072510e-01 - <_> - 1.9982168197631836e+01 - - 1 2 561 2.0995000000000000e+03 0 -1 562 - 2.3500000000000000e+01 -2 -3 563 6.4650000000000000e+02 - - -3.2764279842376709e-01 3.4534373879432678e-01 - -8.4930855035781860e-01 6.6431248188018799e-01 - <_> - 2.0156673431396484e+01 - - 1 2 564 4.7500000000000000e+01 0 -1 565 - 3.5000000000000000e+00 -2 -3 566 2. - - -8.3068168163299561e-01 1.7450474202632904e-01 1. - -9.4794863462448120e-01 - <_> - 2.0342718124389648e+01 - - 1 2 567 6.7050000000000000e+02 0 -1 568 - 3.8850000000000000e+02 -2 -3 569 2.5755000000000000e+03 - - -9.3422073125839233e-01 7.7690583467483521e-01 - 1.8604567646980286e-01 -6.9958645105361938e-01 - <_> - 2.0286355972290039e+01 - - 1 2 570 1.5000000000000000e+00 0 -1 571 - 7.5000000000000000e+00 -2 -3 572 5.0000000000000000e-01 - - -7.9801106452941895e-01 9.1817361116409302e-01 - 5.1868724822998047e-01 -1.3428531587123871e-01 - <_> - 2.0473787307739258e+01 - - 1 2 573 1.1500000000000000e+01 0 -1 574 - 6.5000000000000000e+00 -2 -3 575 4.7500000000000000e+01 - - -2.0607861876487732e-01 3.6932748556137085e-01 - 9.0319371223449707e-01 -7.2204840183258057e-01 - <_> - 2.0658784866333008e+01 - - 1 2 576 7.5000000000000000e+00 0 -1 577 3433. -2 -3 578 - 6.2500000000000000e+01 - - 1.9685469567775726e-01 -4.9899685382843018e-01 - -7.9635071754455566e-01 5.0583815574645996e-01 - <_> - 2.0441154479980469e+01 - - 1 2 579 5.0000000000000000e-01 0 -1 580 - 3.5000000000000000e+00 -2 -3 581 1.8500000000000000e+01 - - -5.8347612619400024e-01 4.0611305832862854e-01 - -5.7296335697174072e-01 2.9519164562225342e-01 - <_> - 2.0645282745361328e+01 - - 1 2 582 143. 0 -1 583 6.8650000000000000e+02 -2 -3 584 649. - - -6.6834068298339844e-01 2.0412844419479370e-01 - -9.8975163698196411e-01 1. - <_> - 2.0787359237670898e+01 - - 1 2 585 5.0000000000000000e-01 0 -1 586 - 1.1050000000000000e+02 -2 -3 587 2.1595000000000000e+03 - - -9.9584645032882690e-01 1. 1.4207656681537628e-01 - -7.9576474428176880e-01 - <_> - 2.0707267761230469e+01 - - 1 2 588 4.0500000000000000e+01 0 -1 589 - 5.0000000000000000e-01 -2 -3 590 4.0500000000000000e+01 - - 1.6863887012004852e-01 -7.4707168340682983e-01 - 2.8594267368316650e-01 -6.7254680395126343e-01 - <_> - 2.0992578506469727e+01 - - 1 2 591 1.5000000000000000e+00 0 -1 592 - 3.5775000000000000e+03 -2 -3 593 2.7500000000000000e+01 - - -5.0894987583160400e-01 3.7313565611839294e-01 - -6.0100066661834717e-01 6.3888049125671387e-01 - <_> - 2.0971927642822266e+01 - - 1 2 594 9.7950000000000000e+02 0 -1 595 - 2.5000000000000000e+00 -2 -3 596 1.2500000000000000e+01 - - -9.5684701204299927e-01 3.9113646745681763e-01 - -7.6442521810531616e-01 3.0187612865120173e-03 - <_> - 2.1057394027709961e+01 - - 1 2 597 1.4905000000000000e+03 0 -1 598 - 9.5000000000000000e+00 -2 -3 599 240. - - -6.4642834663391113e-01 2.3087054491043091e-01 - -7.9448556900024414e-01 7.0878070592880249e-01 - <_> - 2.1131835937500000e+01 - - 1 2 600 5.0000000000000000e-01 0 -1 601 - 1.1500000000000000e+01 -2 -3 602 1.2500000000000000e+01 - - 6.5756827592849731e-01 -4.2822453379631042e-01 - -5.9723109006881714e-01 7.4441045522689819e-02 - <_> - 2.1433628082275391e+01 - - 1 2 603 1.5000000000000000e+00 0 -1 604 - 7.5000000000000000e+00 -2 -3 605 3.5000000000000000e+00 - - -8.7854373455047607e-01 7.6638579368591309e-01 - 3.0179315805435181e-01 -3.0907711386680603e-01 - <_> - 2.1259273529052734e+01 - - 1 2 606 1.2500000000000000e+01 0 -1 607 - 1.1125000000000000e+03 -2 -3 608 1.1500000000000000e+01 - - 4.3398761749267578e-01 -1.8727415800094604e-01 - -8.8575565814971924e-01 1.4398224651813507e-01 - <_> - 2.1612953186035156e+01 - - 1 2 609 1.3315000000000000e+03 0 -1 610 - 4.0350000000000000e+02 -2 -3 611 6.3550000000000000e+02 - - 8.9413803815841675e-01 -6.8928855657577515e-01 - -6.9387888908386230e-01 3.5367938876152039e-01 - <_> - 2.1826734542846680e+01 - - 1 2 612 1.1500000000000000e+01 0 -1 613 738. -2 -3 614 - 1.4500000000000000e+01 - - 8.1296756863594055e-02 -5.6762868165969849e-01 - 6.0727953910827637e-01 -3.7829330563545227e-01 - <_> - 2.1813869476318359e+01 - - 1 2 615 6.5000000000000000e+00 0 -1 616 - 7.7500000000000000e+01 -2 -3 617 1.5000000000000000e+00 - - 2.1756103634834290e-01 -7.3381489515304565e-01 - -6.3975960016250610e-01 3.6597716808319092e-01 - <_> - 2.1798274993896484e+01 - - 1 2 618 9.8500000000000000e+01 0 -1 619 - 8.5000000000000000e+00 -2 -3 620 28. - - -8.9957195520401001e-01 -1.5594468452036381e-02 - 9.6554172039031982e-01 -1. - <_> - 2.2045146942138672e+01 - - 1 2 621 1.0500000000000000e+01 0 -1 622 - 1.2150000000000000e+02 -2 -3 623 7.5000000000000000e+00 - - 2.4687227606773376e-01 -6.0773706436157227e-01 - 6.2245130538940430e-01 -8.7604373693466187e-01 - <_> - 2.2289304733276367e+01 - - 1 2 624 2.1500000000000000e+01 0 -1 625 2144. -2 -3 626 - 5056. - - 7.7314263582229614e-01 -6.9932037591934204e-01 - 2.4415786564350128e-01 -8.8758051395416260e-01 - <_> - 2.2602016448974609e+01 - - 1 2 627 1.5000000000000000e+00 0 -1 628 - 5.0000000000000000e-01 -2 -3 629 8.1195000000000000e+03 - - -7.8916621208190918e-01 2.9944726824760437e-01 - -6.2123262882232666e-01 4.2162239551544189e-01 - <_> - 2.2234420776367188e+01 - - 1 2 630 1.3750000000000000e+02 0 -1 631 - 1.4500000000000000e+01 -2 -3 632 2.7050000000000000e+02 - - -7.3317313194274902e-01 4.4363144040107727e-01 - 7.8055197000503540e-01 -1.7540968954563141e-02 - <_> - 2.2243850708007812e+01 - - 1 2 633 2.2500000000000000e+01 0 -1 634 - 2.3085000000000000e+03 -2 -3 635 42. - - -3.4062522649765015e-01 3.7752479314804077e-01 - -7.3773044347763062e-01 9.6723818778991699e-01 - <_> - 2.2620014190673828e+01 - - 1 2 636 2.5450000000000000e+02 0 -1 637 1638. -2 -3 638 - 7.9500000000000000e+01 - - -1. 5.5116891860961914e-01 5.1822501420974731e-01 - -4.3004354834556580e-01 - <_> - 2.2705764770507812e+01 - - 1 2 639 8.0500000000000000e+01 0 -1 640 - 6.2500000000000000e+01 -2 -3 641 5.5000000000000000e+00 - - 4.8537842929363251e-02 -7.3003268241882324e-01 - -4.5735052227973938e-01 4.5716404914855957e-01 - <_> - 2.3073215484619141e+01 - - 1 2 642 5.0000000000000000e-01 0 -1 643 67. -2 -3 644 - 1.2500000000000000e+01 - - 4.7742471098899841e-01 -4.7727224230766296e-01 - -7.2737669944763184e-01 -3.9639626629650593e-03 - <_> - 2.2770978927612305e+01 - - 1 2 645 5.0000000000000000e-01 0 -1 646 - 3.4500000000000000e+01 -2 -3 647 2.5500000000000000e+01 - - -4.7273349761962891e-01 4.8523208498954773e-01 - -4.1221085190773010e-01 7.4450951814651489e-01 - <_> - 2.3053560256958008e+01 - - 1 2 648 5.8500000000000000e+01 0 -1 649 - 3.5000000000000000e+00 -2 -3 650 4091. - - -6.9219940900802612e-01 2.8258267045021057e-01 - -7.4919438362121582e-01 6.5003573894500732e-01 - <_> - 2.3276559829711914e+01 - - 1 2 651 5.6950000000000000e+02 0 -1 652 - 8.5000000000000000e+00 -2 -3 653 3477. - - -6.9101506471633911e-01 3.5786962509155273e-01 - 2.2299802303314209e-01 -9.4931131601333618e-01 - <_> - 2.3533079147338867e+01 - - 1 2 654 5.5000000000000000e+00 0 -1 655 332. -2 -3 656 - 8.5000000000000000e+00 - - -7.7509003877639771e-01 2.4864099919795990e-01 - -8.9089441299438477e-01 2.5652095675468445e-01 - <_> - 2.3692926406860352e+01 - - 1 2 657 179. 0 -1 658 6.5000000000000000e+00 -2 -3 659 - 2.8500000000000000e+01 - - -6.2848848104476929e-01 1.5984721481800079e-01 - -9.5576328039169312e-01 1. - <_> - 2.3690643310546875e+01 - - 1 2 660 6.5000000000000000e+00 0 -1 661 - 7.7150000000000000e+02 -2 -3 662 1.0650000000000000e+02 - - 5.1587861776351929e-01 -4.7098684310913086e-01 - -7.3770999908447266e-01 -2.2840783931314945e-03 - <_> - 2.3260368347167969e+01 - - 1 2 663 8.2500000000000000e+01 0 -1 664 495. -2 -3 665 - 7.5000000000000000e+00 - - 2.7576848864555359e-01 -4.3027460575103760e-01 - -8.6191612482070923e-01 8.7688070535659790e-01 - <_> - 2.3660942077636719e+01 - - 1 2 666 1.7500000000000000e+01 0 -1 667 - 1.0865000000000000e+03 -2 -3 668 2.0250000000000000e+02 - - 4.7176504135131836e-01 -5.2642983198165894e-01 - 4.0057408809661865e-01 -8.7875026464462280e-01 - <_> - 2.4066463470458984e+01 - - 1 2 669 5.0000000000000000e-01 0 -1 670 - 1.5000000000000000e+00 -2 -3 671 4.7075000000000000e+03 - - -6.6087967157363892e-01 4.0552178025245667e-01 - -6.2758755683898926e-01 1.0652454942464828e-01 - <_> - 2.4266839981079102e+01 - - 1 2 672 2.0350000000000000e+02 0 -1 673 - 2.5000000000000000e+00 -2 -3 674 39. - - 2.8337255120277405e-01 -3.3040466904640198e-01 - -9.6718847751617432e-01 1. - <_> - 2.4499465942382812e+01 - - 1 2 675 4.5000000000000000e+00 0 -1 676 - 8.5500000000000000e+01 -2 -3 677 2.9500000000000000e+01 - - 2.5911253690719604e-01 -9.6787214279174805e-01 - -6.9402277469635010e-01 5.6080824136734009e-01 - <_> - 2.4309822082519531e+01 - - 1 2 678 1971. 0 -1 679 1.9250000000000000e+02 -2 -3 680 - 6.5000000000000000e+00 - - -2.1612957119941711e-01 4.7077748179435730e-01 -1. 1. - <_> - 2.4519950866699219e+01 - - 1 2 681 2.5000000000000000e+00 0 -1 682 - 6.4500000000000000e+01 -2 -3 683 5182. - - -8.2460224628448486e-01 8.7737298011779785e-01 - 2.1012841165065765e-01 -8.8150328397750854e-01 - <_> - 2.4720569610595703e+01 - - 1 2 684 1.3650000000000000e+02 0 -1 685 25. -2 -3 686 - 1.3500000000000000e+01 - - -8.2181477546691895e-01 9.6672326326370239e-01 - -5.3705835342407227e-01 2.0061893761157990e-01 - <_> - 2.4895112991333008e+01 - - 1 2 687 5.6150000000000000e+02 0 -1 688 - 2.2500000000000000e+01 -2 -3 689 5.3500000000000000e+01 - - 3.6230182647705078e-01 -4.9504366517066956e-01 - -7.3248720169067383e-01 2.2656767070293427e-01 - <_> - 2.5140346527099609e+01 - - 1 2 690 8.2750000000000000e+02 0 -1 691 - 2.0500000000000000e+01 -2 -3 692 1.4500000000000000e+01 - - 1. -7.5348693132400513e-01 2.4523276090621948e-01 - -7.0938748121261597e-01 - <_> - 2.5441709518432617e+01 - - 1 2 693 5.5500000000000000e+01 0 -1 694 107. -2 -3 695 1485. - - -9.0809267759323120e-01 3.3544850349426270e-01 - 3.0136233568191528e-01 -5.6638139486312866e-01 - <_> - 2.5376996994018555e+01 - - 1 2 696 8.6950000000000000e+02 0 -1 697 - 7.9550000000000000e+02 -2 -3 698 2.1500000000000000e+01 - - 7.4912220239639282e-01 -3.0485934019088745e-01 - -7.2537702322006226e-01 7.1400356292724609e-01 - <_> - 2.5612064361572266e+01 - - 1 2 699 5.5000000000000000e+00 0 -1 700 138. -2 -3 701 116. - - -7.7075809240341187e-01 3.9907371997833252e-01 - 2.3506735265254974e-01 -8.8968700170516968e-01 - <_> - 2.5189540863037109e+01 - - 1 2 702 5.0000000000000000e-01 0 -1 703 - 6.5000000000000000e+00 -2 -3 704 3.8450000000000000e+02 - - -8.5147231817245483e-01 5.4190635681152344e-01 - -4.4539606571197510e-01 2.2795633971691132e-01 - <_> - 2.5407213211059570e+01 - - 1 2 705 3.3500000000000000e+01 0 -1 706 - 1.1500000000000000e+01 -2 -3 707 1901. - - -7.7322483062744141e-01 2.1767215430736542e-01 - 9.4849103689193726e-01 -8.7567967176437378e-01 - <_> - 2.5786802291870117e+01 - - 1 2 708 8.5000000000000000e+00 0 -1 709 - 2.5000000000000000e+00 -2 -3 710 8.5000000000000000e+00 - - -7.5751757621765137e-01 3.7958872318267822e-01 - -4.7660508751869202e-01 4.8092725872993469e-01 - <_> - 2.5473979949951172e+01 - - 1 2 711 1.5000000000000000e+00 0 -1 712 - 7.4500000000000000e+01 -2 -3 713 5.7500000000000000e+01 - - 2.9737165570259094e-01 -8.2402235269546509e-01 - -6.5980869531631470e-01 6.1398154497146606e-01 - <_> - 2.5540870666503906e+01 - - 1 2 714 3.7350000000000000e+02 0 -1 715 - 2.9505000000000000e+03 -2 -3 716 9.5000000000000000e+00 - - -6.5127277374267578e-01 6.5197062492370605e-01 - -6.7328959703445435e-01 1.1752647906541824e-01 - <_> - 2.5936344146728516e+01 - - 1 2 717 2.8050000000000000e+02 0 -1 718 - 8.2650000000000000e+02 -2 -3 719 1.5500000000000000e+01 - - -5.2938359975814819e-01 3.9547443389892578e-01 - -5.2698332071304321e-01 4.4910645484924316e-01 - <_> - 2.6225696563720703e+01 - - 1 2 720 1.9500000000000000e+01 0 -1 721 - 2.5000000000000000e+00 -2 -3 722 1.4500000000000000e+01 - - 1.6689567267894745e-01 -7.3722118139266968e-01 - -9.5677989721298218e-01 2.8935295343399048e-01 - <_> - 2.6555488586425781e+01 - - 1 2 723 2.5000000000000000e+00 0 -1 724 - 1.2500000000000000e+01 -2 -3 725 1631. - - 4.2182460427284241e-01 -3.9694768190383911e-01 - 4.5795905590057373e-01 -6.3281345367431641e-01 - <_> - 2.6691946029663086e+01 - - 1 2 726 3.5000000000000000e+00 0 -1 727 21. -2 -3 728 - 4.6085000000000000e+03 - - -9.2932611703872681e-01 7.4499356746673584e-01 - -7.0849519968032837e-01 1.8352256715297699e-01 - <_> - 2.6950445175170898e+01 - - 1 2 729 1.4500000000000000e+01 0 -1 730 4. -2 -3 731 - 1.0350000000000000e+02 - - -7.1716350317001343e-01 9.3681764602661133e-01 - 2.5849872827529907e-01 -4.7314143180847168e-01 - <_> - 2.6939081192016602e+01 - - 1 2 732 1.5000000000000000e+00 0 -1 733 - 2.0795000000000000e+03 -2 -3 734 7.5000000000000000e+00 - - 2.1902434527873993e-01 -4.7005906701087952e-01 - -8.4192562103271484e-01 4.5465546846389771e-01 - <_> - 2.7115922927856445e+01 - - 1 2 735 1.6195000000000000e+03 0 -1 736 - 4.0500000000000000e+01 -2 -3 737 1.4615000000000000e+03 - - -8.8821536302566528e-01 9.0963160991668701e-01 - 1.7684206366539001e-01 -9.4462066888809204e-01 - <_> - 2.6933712005615234e+01 - - 1 2 738 7.6500000000000000e+01 0 -1 739 - 2.5000000000000000e+00 -2 -3 740 5.8500000000000000e+01 - - -6.7025911808013916e-01 5.9105753898620605e-01 - -6.4823073148727417e-01 6.9816927425563335e-03 - <_> - 2.7318225860595703e+01 - - 1 2 741 1.0500000000000000e+01 0 -1 742 - 6.5000000000000000e+00 -2 -3 743 5.0000000000000000e-01 - - -9.2393940687179565e-01 4.3340095877647400e-01 - 2.4541635811328888e-01 -5.6279599666595459e-01 - <_> - 2.7502586364746094e+01 - - 1 2 744 1.3500000000000000e+01 0 -1 745 - 1.2225000000000000e+03 -2 -3 746 5.4150000000000000e+02 - - 5.5172622203826904e-01 -7.2232311964035034e-01 - 4.6869617700576782e-01 -1.8173764646053314e-01 - <_> - 2.7214946746826172e+01 - - 1 2 747 1.4150000000000000e+02 0 -1 748 - 3.7950000000000000e+02 -2 -3 749 61. - - -4.1489991545677185e-01 2.9794070124626160e-01 - -8.2065957784652710e-01 8.2294362783432007e-01 - <_> - 2.7621316909790039e+01 - - 1 2 750 1.1500000000000000e+01 0 -1 751 - 4.5000000000000000e+00 -2 -3 752 1.5500000000000000e+01 - - -7.9229009151458740e-01 6.2740081548690796e-01 - -1.7920996248722076e-01 4.1656208038330078e-01 - <_> - 2.7612428665161133e+01 - - 1 2 753 5.0000000000000000e-01 0 -1 754 - 2.8500000000000000e+01 -2 -3 755 4.5000000000000000e+00 - - 3.2633483409881592e-01 -8.3926248550415039e-01 - -5.7256150245666504e-01 4.7886747121810913e-01 - <_> - 2.7621551513671875e+01 - - 1 2 756 3.9500000000000000e+01 0 -1 757 - 4.5000000000000000e+00 -2 -3 758 4.6500000000000000e+01 - - -7.9190528392791748e-01 7.2100400924682617e-01 - -6.1043661832809448e-01 2.2514465451240540e-01 - <_> - 2.7723453521728516e+01 - - 1 2 759 1.6500000000000000e+01 0 -1 760 - 4.4500000000000000e+01 -2 -3 761 2.6500000000000000e+01 - - 2.8901249170303345e-01 -6.9448781013488770e-01 - -6.7865383625030518e-01 2.3160243034362793e-01 - <_> - 2.7726175308227539e+01 - - 1 2 762 1.7575000000000000e+03 0 -1 763 - 4.8150000000000000e+02 -2 -3 764 1.5000000000000000e+00 - - -1.7173323035240173e-01 5.9590691328048706e-01 1. - -9.7047579288482666e-01 - <_> - 2.7928655624389648e+01 - - 1 2 765 4.5000000000000000e+00 0 -1 766 - 1.0065000000000000e+03 -2 -3 767 5.5000000000000000e+00 - - 2.0247912406921387e-01 -7.2847056388854980e-01 - -7.9157161712646484e-01 8.0997580289840698e-01 - <_> - 2.7728637695312500e+01 - - 1 2 768 1.0500000000000000e+01 0 -1 769 - 4.5115000000000000e+03 -2 -3 770 1.7500000000000000e+01 - - 4.2019289731979370e-01 -5.3036731481552124e-01 - 1.8375186249613762e-02 7.1707320213317871e-01 - <_> - 2.7544672012329102e+01 - - 1 2 771 5.0000000000000000e-01 0 -1 772 - 6.5000000000000000e+00 -2 -3 773 141. - - -7.9169616103172302e-02 7.2869366407394409e-01 - -4.0235754847526550e-01 7.5083994865417480e-01 - <_> - 2.7790304183959961e+01 - - 1 2 774 4.9500000000000000e+01 0 -1 775 - 5.5500000000000000e+01 -2 -3 776 2.6500000000000000e+01 - - 2.4563054740428925e-01 -7.8368049860000610e-01 - -8.9967381954193115e-01 5.1768815517425537e-01 - <_> - 2.8035869598388672e+01 - - 1 2 777 2.5000000000000000e+00 0 -1 778 - 6.5000000000000000e+00 -2 -3 779 2.7450000000000000e+02 - - -7.9386472702026367e-01 8.1500089168548584e-01 - 2.4556700885295868e-01 -4.2904964089393616e-01 - <_> - 2.8410558700561523e+01 - - 1 2 780 8.0500000000000000e+01 0 -1 781 - 1.6500000000000000e+01 -2 -3 782 5.4050000000000000e+02 - - 1.7172537744045258e-01 -6.2181609869003296e-01 - -8.8481485843658447e-01 3.7468841671943665e-01 - <_> - 2.8699789047241211e+01 - - 1 2 783 2.9785000000000000e+03 0 -1 784 - 2.5000000000000000e+00 -2 -3 785 1.5435000000000000e+03 - - -4.2753055691719055e-01 2.8923121094703674e-01 - -6.7698192596435547e-01 6.4550709724426270e-01 - <_> - 2.8761243820190430e+01 - - 1 2 786 5.0000000000000000e-01 0 -1 787 - 5.0000000000000000e-01 -2 -3 788 737. - - -6.4694476127624512e-01 6.8557661771774292e-01 - -3.9006941020488739e-02 -8.6166292428970337e-01 - <_> - 2.8647882461547852e+01 - - 1 2 789 6.7500000000000000e+01 0 -1 790 - 5.5000000000000000e+00 -2 -3 791 7. - - 1.9915813207626343e-01 -3.6753433942794800e-01 - 9.2020016908645630e-01 -9.4368237257003784e-01 - <_> - 2.8875740051269531e+01 - - 1 2 792 1.9135000000000000e+03 0 -1 793 - 1.1050000000000000e+02 -2 -3 794 4.5000000000000000e+00 - - 7.2780048847198486e-01 -8.9423495531082153e-01 - -8.4068304300308228e-01 2.2785744071006775e-01 - <_> - 2.9072935104370117e+01 - - 1 2 795 2.5000000000000000e+00 0 -1 796 - 5.5000000000000000e+00 -2 -3 797 1.2500000000000000e+01 - - -8.2929813861846924e-01 7.2042435407638550e-01 - 1.9719591736793518e-01 -5.5431854724884033e-01 - <_> - 2.9138673782348633e+01 - - 1 2 798 1.0050000000000000e+02 0 -1 799 - 1.5000000000000000e+00 -2 -3 800 1.4500000000000000e+01 - - -2.4678048491477966e-01 3.4682708978652954e-01 - -9.5431810617446899e-01 4.5664411783218384e-01 - <_> - 2.9052175521850586e+01 - - 1 2 801 5.0000000000000000e-01 0 -1 802 - 1.5000000000000000e+00 -2 -3 803 6.0500000000000000e+01 - - -9.4168990850448608e-02 7.1325784921646118e-01 - -5.5271577835083008e-01 1.8420556187629700e-01 - <_> - 2.9330022811889648e+01 - - 1 2 804 3.8150000000000000e+02 0 -1 805 - 2.2500000000000000e+01 -2 -3 806 1.4250000000000000e+02 - - -5.2190852165222168e-01 5.3806591033935547e-01 - 4.2104244232177734e-01 -7.3786729574203491e-01 - <_> - 2.9613933563232422e+01 - - 1 2 807 3400. 0 -1 808 6.5000000000000000e+00 -2 -3 809 65. - - -7.2601109743118286e-01 2.8390964865684509e-01 - -7.5218343734741211e-01 8.2199627161026001e-01 - <_> - 2.9662286758422852e+01 - - 1 2 810 3.5500000000000000e+01 0 -1 811 - 4.5000000000000000e+00 -2 -3 812 1.9895000000000000e+03 - - 4.8528853058815002e-01 -4.5970219373703003e-01 - 5.2159059047698975e-01 -3.5259509086608887e-01 - <_> - 3.0010950088500977e+01 - - 1 2 813 3.7500000000000000e+01 0 -1 814 - 1.5000000000000000e+00 -2 -3 815 1.5000000000000000e+00 - - -3.6858716607093811e-01 3.4866285324096680e-01 - 5.0721812248229980e-01 -7.1738111972808838e-01 - <_> - 3.0259206771850586e+01 - - 1 2 816 5.0000000000000000e-01 0 -1 817 - 1.5000000000000000e+00 -2 -3 818 9.5000000000000000e+00 - - -8.2673883438110352e-01 2.4825666844844818e-01 - -6.8298560380935669e-01 5.7589280605316162e-01 - <_> - 3.0020807266235352e+01 - - 1 2 819 83. 0 -1 820 1.0535000000000000e+03 -2 -3 821 - 8.5000000000000000e+00 - - 8.0070614814758301e-01 -2.3839974403381348e-01 - -9.7618216276168823e-01 8.3897125720977783e-01 - <_> - 2.9989406585693359e+01 - - 1 2 822 1.8950000000000000e+02 0 -1 823 - 1.1500000000000000e+01 -2 -3 824 9.4350000000000000e+02 - - -7.3252147436141968e-01 8.0616372823715210e-01 - 6.4727967977523804e-01 -3.1400017440319061e-02 - <_> - 3.0537582397460938e+01 - - 1 2 825 137. 0 -1 826 1.2500000000000000e+01 -2 -3 827 - 1.0500000000000000e+01 - - 2.7069351077079773e-01 -5.2906340360641479e-01 - -6.5592831373214722e-01 6.3111066818237305e-01 - <_> - 3.0424352645874023e+01 - - 1 2 828 3.5000000000000000e+00 0 -1 829 - 5.2500000000000000e+01 -2 -3 830 4.6925000000000000e+03 - - -5.9484475851058960e-01 9.3662506341934204e-01 - -1.9616512954235077e-01 5.3609508275985718e-01 - <_> - 3.0629121780395508e+01 - - 1 2 831 5.6500000000000000e+01 0 -1 832 - 1.4500000000000000e+01 -2 -3 833 1.3250000000000000e+02 - - -5.8516901731491089e-01 2.3027215898036957e-01 1. - -9.8997932672500610e-01 - <_> - 3.0788936614990234e+01 - - 1 2 834 3.5000000000000000e+00 0 -1 835 - 6.5350000000000000e+02 -2 -3 836 11093. - - -9.8764348030090332e-01 4.6165758371353149e-01 - 1.5981569886207581e-01 -6.9765907526016235e-01 - <_> - 3.1141653060913086e+01 - - 1 2 837 4.5000000000000000e+00 0 -1 838 - 4.1450000000000000e+02 -2 -3 839 4.6500000000000000e+01 - - -4.2362187057733536e-02 -7.4213159084320068e-01 - 4.0540441870689392e-01 -7.6012396812438965e-01 - <_> - 3.0861505508422852e+01 - - 1 2 840 5.0000000000000000e-01 0 -1 841 - 5.6050000000000000e+02 -2 -3 842 2.1500000000000000e+01 - - -3.3283695578575134e-01 4.4167187809944153e-01 - -6.5066546201705933e-01 1.7719769477844238e-01 - <_> - 3.1108386993408203e+01 - - 1 2 843 6.5000000000000000e+00 0 -1 844 - 1.6500000000000000e+01 -2 -3 845 1.7550000000000000e+02 - - -5.6530058383941650e-01 3.4583663940429688e-01 - 4.2246490716934204e-01 -4.7493830323219299e-01 - <_> - 3.0905292510986328e+01 - - 1 2 846 5.0000000000000000e-01 0 -1 847 - 5.0000000000000000e-01 -2 -3 848 7.9500000000000000e+01 - - -9.8497194051742554e-01 6.4031112194061279e-01 - 2.4801021814346313e-01 -3.7024465203285217e-01 - <_> - 3.1213197708129883e+01 - - 1 2 849 5.5000000000000000e+00 0 -1 850 - 4.7500000000000000e+01 -2 -3 851 1.5000000000000000e+00 - - 7.6301777362823486e-01 -6.2367314100265503e-01 - -6.4380615949630737e-01 3.0790489912033081e-01 - <_> - 3.1416584014892578e+01 - - 1 2 852 4.3500000000000000e+01 0 -1 853 - 1.0075000000000000e+03 -2 -3 854 5.2500000000000000e+01 - - 2.0338761806488037e-01 -6.1455827951431274e-01 - -7.8569060564041138e-01 9.5953434705734253e-01 - <_> - 3.1777565002441406e+01 - - 1 2 855 6.0500000000000000e+01 0 -1 856 - 8.5000000000000000e+00 -2 -3 857 36. - - -8.4394145011901855e-01 -3.6948818713426590e-02 -1. - 7.5613290071487427e-01 - <_> - 3.1868429183959961e+01 - - 1 2 858 1.0995000000000000e+03 0 -1 859 - 1.5000000000000000e+00 -2 -3 860 5.0000000000000000e-01 - - 6.7010629177093506e-01 -8.0424994230270386e-01 - 3.4220331907272339e-01 -2.0251852273941040e-01 - <_> - 3.2119094848632812e+01 - - 1 2 861 1.2500000000000000e+01 0 -1 862 - 3.1500000000000000e+01 -2 -3 863 3.9500000000000000e+01 - - -8.0597108602523804e-01 8.6892396211624146e-01 - 2.5066429376602173e-01 -6.2346094846725464e-01 - <_> - 3.2155685424804688e+01 - - 1 2 864 1.8950000000000000e+02 0 -1 865 57. -2 -3 866 - 2.5500000000000000e+01 - - -5.4910677671432495e-01 1. 3.7413713335990906e-01 - -2.5834947824478149e-01 - <_> - 3.2015361785888672e+01 - - 1 2 867 1.3550000000000000e+02 0 -1 868 - 5.2750000000000000e+02 -2 -3 869 1.7500000000000000e+01 - - -7.7796685695648193e-01 6.6702580451965332e-01 - -4.7787085175514221e-01 1.4796376228332520e-01 - <_> - 3.1791172027587891e+01 - - 1 2 870 1.0500000000000000e+01 0 -1 871 - 1.5000000000000000e+00 -2 -3 872 1.5000000000000000e+00 - - -2.8536421060562134e-01 4.9085628986358643e-01 - -6.3147133588790894e-01 1.6832475364208221e-01 - <_> - 3.1905895233154297e+01 - - 1 2 873 1.5000000000000000e+00 0 -1 874 42. -2 -3 875 - 9.5000000000000000e+00 - - 3.4199193120002747e-01 -8.8441103696823120e-01 - -1.7228755354881287e-01 4.5159018039703369e-01 - <_> - 3.1859363555908203e+01 - - 1 2 876 5.0000000000000000e-01 0 -1 877 - 2.5500000000000000e+01 -2 -3 878 9.4550000000000000e+02 - - 5.9279948472976685e-01 -2.5542417168617249e-01 - 4.9418550729751587e-01 -4.7456571459770203e-01 - <_> - 3.2239162445068359e+01 - - 1 2 879 5.3500000000000000e+01 0 -1 880 - 4.5000000000000000e+00 -2 -3 881 4.5000000000000000e+00 - - 7.3520237207412720e-01 -6.6513210535049438e-01 - -3.7311753630638123e-01 3.7980049848556519e-01 - <_> - 3.2603000640869141e+01 - - 1 2 882 8.3850000000000000e+02 0 -1 883 - 8.6500000000000000e+01 -2 -3 884 9.5000000000000000e+00 - - -1.6610033810138702e-01 5.5568897724151611e-01 - 2.8593140840530396e-01 -8.1610012054443359e-01 - <_> - 3.2873931884765625e+01 - - 1 2 885 9.5000000000000000e+00 0 -1 886 - 1.4150000000000000e+02 -2 -3 887 4.8500000000000000e+01 - - 2.7093270421028137e-01 -5.1437872648239136e-01 - 8.1497925519943237e-01 -7.3167830705642700e-01 - <_> - 3.2916114807128906e+01 - - 1 2 888 6.7250000000000000e+02 0 -1 889 - 2.5500000000000000e+01 -2 -3 890 9.5000000000000000e+00 - - 2.9060255736112595e-02 -6.9740939140319824e-01 - -6.7421448230743408e-01 4.8431751132011414e-01 - <_> - 3.3245323181152344e+01 - - 1 2 891 1.0500000000000000e+01 0 -1 892 - 8.6500000000000000e+01 -2 -3 893 6.5000000000000000e+00 - - -6.1663192510604858e-01 4.0390256047248840e-01 - -6.7292958498001099e-01 3.2920929789543152e-01 - <_> - 3.3257518768310547e+01 - - 1 2 894 5.0000000000000000e-01 0 -1 895 - 9.5500000000000000e+01 -2 -3 896 5.0000000000000000e-01 - - 3.6125457286834717e-01 -7.1330851316452026e-01 - 5.2750295400619507e-01 -5.3229171037673950e-01 - <_> - 3.3523788452148438e+01 - - 1 2 897 9.5000000000000000e+00 0 -1 898 - 1.5500000000000000e+01 -2 -3 899 4.3650000000000000e+02 - - 7.4386167526245117e-01 -9.6170389652252197e-01 - 3.7622943520545959e-01 -2.1613618731498718e-01 - <_> - 3.3737613677978516e+01 - - 1 2 900 3.5000000000000000e+00 0 -1 901 - 8.5000000000000000e+00 -2 -3 902 2199. - - -6.8732953071594238e-01 4.9332359433174133e-01 - 2.2702258825302124e-01 -9.8770850896835327e-01 - <_> - 3.3653835296630859e+01 - - 1 2 903 1.1500000000000000e+01 0 -1 904 - 7.5000000000000000e+00 -2 -3 905 2.7050000000000000e+02 - - -4.7830480337142944e-01 4.9322032928466797e-01 - -5.1515823602676392e-01 3.1019908189773560e-01 - <_> - 3.3810070037841797e+01 - - 1 2 906 6.5000000000000000e+00 0 -1 907 - 1.0500000000000000e+01 -2 -3 908 867. - - 3.3138540387153625e-01 -2.6744303107261658e-01 - -9.2749148607254028e-01 1. - <_> - 3.4129577636718750e+01 - - 1 2 909 1.6500000000000000e+01 0 -1 910 - 5.3050000000000000e+02 -2 -3 911 1781. - - 6.7194348573684692e-01 -6.2229406833648682e-01 - -7.0593923330307007e-01 3.7362939119338989e-01 - <_> - 3.3717624664306641e+01 - - 1 2 912 5.5000000000000000e+00 0 -1 913 - 5.6550000000000000e+02 -2 -3 914 3.7550000000000000e+02 - - -6.5654790401458740e-01 3.5677254199981689e-01 - 4.5081639289855957e-01 -6.4122611284255981e-01 - <_> - 3.3252494812011719e+01 - - 1 2 915 2.8150000000000000e+02 0 -1 916 - 1.9775000000000000e+03 -2 -3 917 4.4500000000000000e+01 - - 6.7867177724838257e-01 -6.4670372009277344e-01 - -4.6513071656227112e-01 2.1713301539421082e-01 - <_> - 3.3488639831542969e+01 - - 1 2 918 6.2500000000000000e+01 0 -1 919 - 3.5000000000000000e+00 -2 -3 920 1.7500000000000000e+01 - - -7.6731938123703003e-01 2.3614448308944702e-01 - -9.4595444202423096e-01 5.4001647233963013e-01 - <_> - 3.3984142303466797e+01 - - 1 2 921 3.5000000000000000e+00 0 -1 922 - 1.2050000000000000e+02 -2 -3 923 7.5000000000000000e+00 - - -3.0896291136741638e-01 5.7216274738311768e-01 - -6.0472279787063599e-01 4.7352880239486694e-02 - <_> - 3.4265426635742188e+01 - - 1 2 924 1.5000000000000000e+00 0 -1 925 - 2.6150000000000000e+02 -2 -3 926 9.0500000000000000e+01 - - 9.4074803590774536e-01 -6.7150580883026123e-01 - 2.8128537535667419e-01 -4.7385811805725098e-01 - <_> - 3.4247104644775391e+01 - - 1 2 927 5.1875000000000000e+03 0 -1 928 - 1.5000000000000000e+00 -2 -3 929 113. - - -7.9879760742187500e-01 1.5954677760601044e-01 - -9.7634953260421753e-01 6.6887116432189941e-01 - <_> - 3.4600574493408203e+01 - - 1 2 930 2.2945000000000000e+03 0 -1 931 - 3.4500000000000000e+01 -2 -3 932 1.1745000000000000e+03 - - 5.7989984750747681e-01 -4.9893951416015625e-01 - 3.5346877574920654e-01 -8.6138629913330078e-01 - <_> - 3.4355884552001953e+01 - - 1 2 933 2.3500000000000000e+01 0 -1 934 - 2.4500000000000000e+01 -2 -3 935 12. - - -2.4468979239463806e-01 6.1856859922409058e-01 - -9.5042270421981812e-01 8.5911560058593750e-01 - <_> - 3.4614818572998047e+01 - - 1 2 936 1.5000000000000000e+00 0 -1 937 - 4.5000000000000000e+00 -2 -3 938 1.1500000000000000e+01 - - -1.4536230266094208e-01 5.7274234294891357e-01 - -5.6978869438171387e-01 2.8933158516883850e-01 - <_> - 3.5054538726806641e+01 - - 1 2 939 7.5000000000000000e+00 0 -1 940 - 1.6500000000000000e+01 -2 -3 941 1.1500000000000000e+01 - - -9.2453199625015259e-01 4.3971973657608032e-01 - -5.6862127780914307e-01 2.2281785309314728e-01 - <_> - 3.5190509796142578e+01 - - 1 2 942 4.1500000000000000e+01 0 -1 943 - 8.5000000000000000e+00 -2 -3 944 1.1500000000000000e+01 - - -3.6428368091583252e-01 2.7655857801437378e-01 - 6.2536644935607910e-01 -1. - <_> - 3.5339462280273438e+01 - - 1 2 945 6.5000000000000000e+00 0 -1 946 - 1.9750000000000000e+02 -2 -3 947 3.5125000000000000e+03 - - 5.1457303762435913e-01 -5.4887962341308594e-01 - 2.5784909725189209e-01 -9.8039388656616211e-01 - <_> - 3.5533813476562500e+01 - - 1 2 948 2.7350000000000000e+02 0 -1 949 - 2.5000000000000000e+00 -2 -3 950 8.3950000000000000e+02 - - 4.3505680561065674e-01 -8.3620321750640869e-01 - 4.0167236328125000e-01 -2.1417175233364105e-01 - <_> - 3.5286861419677734e+01 - - 1 2 951 1.9050000000000000e+02 0 -1 952 - 1.8500000000000000e+01 -2 -3 953 5.8500000000000000e+01 - - -5.6316858530044556e-01 8.5937762260437012e-01 - 2.4829907715320587e-01 -9.5569574832916260e-01 - <_> - 3.5315326690673828e+01 - - 1 2 954 7.5000000000000000e+00 0 -1 955 - 6.8050000000000000e+02 -2 -3 956 2.7500000000000000e+01 - - -4.6678465604782104e-01 2.5904402136802673e-01 - -9.3793350458145142e-01 5.7032090425491333e-01 - <_> - 3.5714458465576172e+01 - - 1 2 957 4.3085000000000000e+03 0 -1 958 - 2.5000000000000000e+00 -2 -3 959 1.4750000000000000e+02 - - -4.9067273736000061e-01 3.9913412928581238e-01 - -5.7273352146148682e-01 4.2018249630928040e-01 - <_> - 3.5729091644287109e+01 - - 1 2 960 6.5500000000000000e+01 0 -1 961 - 1.0500000000000000e+01 -2 -3 962 5.0000000000000000e-01 - - 2.8838535770773888e-02 -7.4135571718215942e-01 - -8.2152175903320312e-01 5.0204771757125854e-01 - <_> - 3.5779636383056641e+01 - - 1 2 963 2.5000000000000000e+00 0 -1 964 - 5.3500000000000000e+01 -2 -3 965 5.2500000000000000e+01 - - 2.3911122977733612e-01 -9.5493316650390625e-01 - -7.1501338481903076e-01 6.6445010900497437e-01 - <_> - 3.5980289459228516e+01 - - 1 2 966 1.5000000000000000e+00 0 -1 967 - 4.2500000000000000e+01 -2 -3 968 9.9950000000000000e+02 - - 6.1156451702117920e-01 -8.5420590639114380e-01 - 2.0065380632877350e-01 -5.1614391803741455e-01 - <_> - 3.6252574920654297e+01 - - 1 2 969 2.5000000000000000e+00 0 -1 970 - 1.9465000000000000e+03 -2 -3 971 2.0500000000000000e+01 - - -3.4459114074707031e-02 -7.7200150489807129e-01 - 2.9512012004852295e-01 -8.9226943254470825e-01 - <_> - 3.6439735412597656e+01 - - 1 2 972 1.5000000000000000e+00 0 -1 973 41. -2 -3 974 - 5.0500000000000000e+01 - - -9.8086458444595337e-01 8.0683439970016479e-01 - 1.8715959787368774e-01 -5.6646823883056641e-01 - <_> - 3.6728237152099609e+01 - - 1 2 975 3.3500000000000000e+01 0 -1 976 - 9.7885000000000000e+03 -2 -3 977 1.2500000000000000e+01 - - -4.9251038581132889e-02 -9.2625564336776733e-01 - 2.8850206732749939e-01 -5.4534864425659180e-01 - <_> - 3.6843887329101562e+01 - - 1 2 978 2.6500000000000000e+01 0 -1 979 - 1.4500000000000000e+01 -2 -3 980 7.5000000000000000e+00 - - 2.1858909726142883e-01 -3.4160664677619934e-01 - -9.6077054738998413e-01 7.7676713466644287e-01 - <_> - 3.7005241394042969e+01 - - 1 2 981 2.1500000000000000e+01 0 -1 982 - 3.3450000000000000e+02 -2 -3 983 1.1500000000000000e+01 - - 2.9156139120459557e-02 -8.7990653514862061e-01 - -7.2488045692443848e-01 2.2520579397678375e-01 - <_> - 3.6797657012939453e+01 - - 1 2 984 2.6475000000000000e+03 0 -1 985 - 4.2500000000000000e+01 -2 -3 986 8.1550000000000000e+02 - - 2.2682635486125946e-01 -8.1636387109756470e-01 - 6.6246122121810913e-01 -3.4295175224542618e-02 - <_> - 3.6713920593261719e+01 - - 1 2 987 9.6500000000000000e+01 0 -1 988 548. -2 -3 989 - 2.8955000000000000e+03 - - -8.1589114665985107e-01 1. -4.9650618433952332e-01 - 2.2634685039520264e-01 - <_> - 3.6771007537841797e+01 - - 1 2 990 5.0000000000000000e-01 0 -1 991 249. -2 -3 992 - 1.0500000000000000e+01 - - -7.4486887454986572e-01 5.6141883134841919e-01 - 5.7086039334535599e-02 -6.7521327733993530e-01 - <_> - 3.6969486236572266e+01 - - 1 2 993 5.0000000000000000e-01 0 -1 994 - 1.6500000000000000e+01 -2 -3 995 4.8500000000000000e+01 - - -7.2038865089416504e-01 3.5195854306221008e-01 - -4.7452071309089661e-01 7.8814119100570679e-01 - <_> - 3.6943496704101562e+01 - - 1 2 996 3.9950000000000000e+02 0 -1 997 - 1.5405000000000000e+03 -2 -3 998 6.3500000000000000e+01 - - -8.0016517639160156e-01 5.9141719341278076e-01 - -3.4474676847457886e-01 6.8918299674987793e-01 - <_> - 3.7024951934814453e+01 - - 1 2 999 7.5000000000000000e+00 0 -1 1000 738. -2 -3 1001 - 1765. - - 3.1489616632461548e-01 -4.8600602149963379e-01 - 5.3129523992538452e-01 -9.4068831205368042e-01 - <_> - 3.7521724700927734e+01 - - 1 2 1002 9.5000000000000000e+00 0 -1 1003 - 5.0000000000000000e-01 -2 -3 1004 3.8500000000000000e+01 - - 9.6219047904014587e-02 -4.7555413842201233e-01 - -4.6840333938598633e-01 7.9850405454635620e-01 - <_> - 3.7506668090820312e+01 - - 1 2 1005 1.2500000000000000e+01 0 -1 1006 - 1.1350000000000000e+02 -2 -3 1007 1.5000000000000000e+00 - - 2.4384462833404541e-01 -7.9862087965011597e-01 - -6.7412167787551880e-01 3.3874267339706421e-01 - <_> - 3.7641517639160156e+01 - - 1 2 1008 2.7850000000000000e+02 0 -1 1009 - 3.5000000000000000e+00 -2 -3 1010 3.1500000000000000e+01 - - -1.3609230518341064e-01 5.3063559532165527e-01 - -8.7772625684738159e-01 7.2040528059005737e-01 - <_> - 3.7946544647216797e+01 - - 1 2 1011 5.6250000000000000e+02 0 -1 1012 - 5.2650000000000000e+02 -2 -3 1013 1.5000000000000000e+00 - - -9.3572378158569336e-01 3.0502891540527344e-01 - 2.3100011050701141e-01 -6.1786937713623047e-01 - <_> - 3.7772045135498047e+01 - - 1 2 1014 7.6500000000000000e+01 0 -1 1015 1948. -2 -3 1016 - 1.2550000000000000e+02 - - -2.9692053794860840e-01 2.9227754473686218e-01 - -9.4186556339263916e-01 5.1589274406433105e-01 - <_> - 3.8073352813720703e+01 - - 1 2 1017 5.0000000000000000e-01 0 -1 1018 - 2.5000000000000000e+00 -2 -3 1019 5.5000000000000000e+00 - - -9.8587775230407715e-01 3.0130937695503235e-01 - -6.3859581947326660e-01 1.3170623779296875e-01 - <_> - 3.8058353424072266e+01 - - 1 2 1020 5.0000000000000000e-01 0 -1 1021 - 1.5000000000000000e+00 -2 -3 1022 7.2500000000000000e+01 - - -3.0776679515838623e-01 6.3595312833786011e-01 - 3.3159428834915161e-01 -4.0336602926254272e-01 - <_> - 3.8315082550048828e+01 - - 1 2 1023 2.6950000000000000e+02 0 -1 1024 1298. -2 -3 1025 - 1.5225000000000000e+03 - - -1. 7.2444880008697510e-01 -7.8231662511825562e-01 - 9.5456495881080627e-02 - <_> - 3.8383270263671875e+01 - - 1 2 1026 1.0500000000000000e+01 0 -1 1027 - 1.5000000000000000e+00 -2 -3 1028 4.0500000000000000e+01 - - 1.3500446081161499e-01 -6.9345575571060181e-01 - 3.7562793493270874e-01 -4.0624493360519409e-01 - <_> - 3.8140323638916016e+01 - - 1 2 1029 6.5000000000000000e+00 0 -1 1030 - 6.5000000000000000e+00 -2 -3 1031 2.1965000000000000e+03 - - -6.0527449846267700e-01 3.4614467620849609e-01 - -6.4750307798385620e-01 4.4139349460601807e-01 - <_> - 3.8629760742187500e+01 - - 1 2 1032 1.4500000000000000e+01 0 -1 1033 - 1.0500000000000000e+01 -2 -3 1034 5.5000000000000000e+00 - - 3.3208198146894574e-05 -6.7700278759002686e-01 - -4.2626798152923584e-01 4.8943847417831421e-01 - <_> - 3.8434696197509766e+01 - - 1 2 1035 5.0000000000000000e-01 0 -1 1036 - 4.5000000000000000e+00 -2 -3 1037 5.0000000000000000e-01 - - -7.7417689561843872e-01 4.2846640944480896e-01 - 1.6088682413101196e-01 -5.3463542461395264e-01 - <_> - 3.8620567321777344e+01 - - 1 2 1038 8.6450000000000000e+02 0 -1 1039 - 6.8500000000000000e+01 -2 -3 1040 3.0500000000000000e+01 - - 1.8587091565132141e-01 -8.0341529846191406e-01 - -9.0581631660461426e-01 6.2018626928329468e-01 - <_> - 3.8751430511474609e+01 - - 1 2 1041 5.0000000000000000e-01 0 -1 1042 40. -2 -3 1043 - 1.5500000000000000e+01 - - -9.9494683742523193e-01 1. -7.1019542217254639e-01 - 1.3086341321468353e-01 - <_> - 3.8754238128662109e+01 - - 1 2 1044 6.1500000000000000e+01 0 -1 1045 - 5.0000000000000000e-01 -2 -3 1046 2.6500000000000000e+01 - - 3.2929298281669617e-01 -2.4671530723571777e-01 - -8.9316487312316895e-01 1. - <_> - 3.8761310577392578e+01 - - 1 2 1047 1.3750000000000000e+02 0 -1 1048 - 2.8450000000000000e+02 -2 -3 1049 5.0000000000000000e-01 - - -6.3021671772003174e-01 6.5008687973022461e-01 - 5.3065407276153564e-01 -7.9354740679264069e-02 - <_> - 3.8665718078613281e+01 - - 1 2 1050 4.5000000000000000e+00 0 -1 1051 - 3.5500000000000000e+01 -2 -3 1052 9.5000000000000000e+00 - - 5.4490387439727783e-01 -7.6202434301376343e-01 - -9.5591522753238678e-02 4.8457166552543640e-01 - <_> - 3.8905593872070312e+01 - - 1 2 1053 1.7595000000000000e+03 0 -1 1054 - 8.0650000000000000e+02 -2 -3 1055 1001. - - 8.4819895029067993e-01 1.0978246107697487e-02 - -5.8034777641296387e-01 9.6708601713180542e-01 - <_> - 3.9178741455078125e+01 - - 1 2 1056 3.3500000000000000e+01 0 -1 1057 43. -2 -3 1058 - 1.1255000000000000e+03 - - 6.2076139450073242e-01 -7.7601081132888794e-01 - -6.3608288764953613e-01 2.7314889430999756e-01 - <_> - 3.9557754516601562e+01 - - 1 2 1059 2861. 0 -1 1060 1.1500000000000000e+01 -2 -3 1061 - 1059. - - -2.0063874125480652e-01 3.7901291251182556e-01 - -8.7469154596328735e-01 9.3417149782180786e-01 - <_> - 3.9383140563964844e+01 - - 1 2 1062 7.5000000000000000e+00 0 -1 1063 - 3.3500000000000000e+01 -2 -3 1064 6.8250000000000000e+02 - - -3.3701553940773010e-01 6.6878622770309448e-01 - -9.3165141344070435e-01 5.6623113155364990e-01 - <_> - 3.9584621429443359e+01 - - 1 2 1065 4.5500000000000000e+01 0 -1 1066 - 2.5000000000000000e+00 -2 -3 1067 39. - - -8.5348236560821533e-01 2.0148001611232758e-01 - -8.4665966033935547e-01 8.2120579481124878e-01 - <_> - 3.9753597259521484e+01 - - 1 2 1068 2.5000000000000000e+00 0 -1 1069 - 1.5000000000000000e+00 -2 -3 1070 3.5000000000000000e+00 - - -7.8533732891082764e-01 1.9851887226104736e-01 - 4.4824355840682983e-01 -8.0207723379135132e-01 - <_> - 3.9658565521240234e+01 - - 1 2 1071 5.0000000000000000e-01 0 -1 1072 - 1.3915000000000000e+03 -2 -3 1073 1.0500000000000000e+01 - - -4.5468831062316895e-01 3.6562988162040710e-01 - -6.3887000083923340e-01 2.2883546352386475e-01 - <_> - 4.0061527252197266e+01 - - 1 2 1074 5.4650000000000000e+02 0 -1 1075 - 1.3805000000000000e+03 -2 -3 1076 1.0500000000000000e+01 - - -3.7776118516921997e-01 7.9691213369369507e-01 - -6.4302068948745728e-01 4.0739435702562332e-02 - <_> - 4.0449691772460938e+01 - - 1 2 1077 1.3450000000000000e+02 0 -1 1078 3817. -2 -3 1079 - 4.5000000000000000e+00 - - -1. 7.2753727436065674e-01 -8.8736426830291748e-01 - -3.0436256900429726e-02 - <_> - 4.0686050415039062e+01 - - 1 2 1080 3.1500000000000000e+01 0 -1 1081 - 1.6815000000000000e+03 -2 -3 1082 2.5050000000000000e+02 - - 2.3635797202587128e-01 -7.1006488800048828e-01 - -7.7740561962127686e-01 9.4275683164596558e-01 - <_> - 4.0749511718750000e+01 - - 1 2 1083 2.7500000000000000e+01 0 -1 1084 - 2.3500000000000000e+01 -2 -3 1085 1.2500000000000000e+01 - - 6.0146540403366089e-01 -8.0582934617996216e-01 - 3.4961447119712830e-01 -3.5682681202888489e-01 - <_> - 4.0645175933837891e+01 - - 1 2 1086 1.2850000000000000e+02 0 -1 1087 - 1.1500000000000000e+01 -2 -3 1088 2.6500000000000000e+01 - - -4.3760350346565247e-01 3.2760843634605408e-01 - -7.3312211036682129e-01 4.6505972743034363e-01 - <_> - 4.0557418823242188e+01 - - 1 2 1089 668. 0 -1 1090 1.2850000000000000e+02 -2 -3 1091 - 8.7500000000000000e+01 - - 1.1236543208360672e-01 -5.2818536758422852e-01 - -6.8129932880401611e-01 7.0479619503021240e-01 - <_> - 4.0783546447753906e+01 - - 1 2 1092 5.1805000000000000e+03 0 -1 1093 - 4.9500000000000000e+01 -2 -3 1094 2.9500000000000000e+01 - - -4.0594160556793213e-01 3.0208334326744080e-01 - -9.6733921766281128e-01 6.8550550937652588e-01 - <_> - 4.1171627044677734e+01 - - 1 2 1095 7.7500000000000000e+01 0 -1 1096 - 5.0000000000000000e-01 -2 -3 1097 1128. - - 3.8808169960975647e-01 -2.2138407826423645e-01 - -9.7971081733703613e-01 6.8063849210739136e-01 - <_> - 4.1380584716796875e+01 - - 1 2 1098 3.5000000000000000e+00 0 -1 1099 - 4.5000000000000000e+00 -2 -3 1100 1.6550000000000000e+02 - - -8.3179295063018799e-01 8.2458907365798950e-01 - 2.0895628631114960e-01 -6.7757499217987061e-01 - <_> - 4.0977642059326172e+01 - - 1 2 1101 2.6500000000000000e+01 0 -1 1102 - 7.5000000000000000e+00 -2 -3 1103 2.8500000000000000e+01 - - -6.7902231216430664e-01 9.0440295636653900e-02 - 4.5262795686721802e-01 -7.6736658811569214e-01 - <_> - 4.1636299133300781e+01 - - 1 2 1104 8.7150000000000000e+02 0 -1 1105 - 4.8485000000000000e+03 -2 -3 1106 3.3500000000000000e+01 - - 6.8487727642059326e-01 -2.6508599519729614e-01 - -5.6632518768310547e-01 3.0040073394775391e-01 - <_> - 4.1346435546875000e+01 - - 1 2 1107 1.9350000000000000e+02 0 -1 1108 - 5.0500000000000000e+01 -2 -3 1109 1.1775000000000000e+03 - - -3.1608226895332336e-01 6.0885083675384521e-01 - 6.4473861455917358e-01 -8.5411310195922852e-01 - <_> - 4.1030853271484375e+01 - - 1 2 1110 1.5000000000000000e+00 0 -1 1111 - 1.3445000000000000e+03 -2 -3 1112 5.8550000000000000e+02 - - -6.3746362924575806e-01 3.1320965290069580e-01 - -7.2444945573806763e-01 7.5097692012786865e-01 - <_> - 4.1470043182373047e+01 - - 1 2 1113 9.5000000000000000e+00 0 -1 1114 - 2.5000000000000000e+00 -2 -3 1115 2.5000000000000000e+00 - - 4.0508642792701721e-01 -5.0676339864730835e-01 - -8.5707956552505493e-01 4.3919247388839722e-01 - <_> - 4.1580162048339844e+01 - - 1 2 1116 5.7350000000000000e+02 0 -1 1117 - 5.5000000000000000e+00 -2 -3 1118 21. - - -5.1867526769638062e-01 2.3890317976474762e-01 - -8.0498754978179932e-01 1. - <_> - 4.1684749603271484e+01 - - 1 2 1119 9.5000000000000000e+00 0 -1 1120 - 4.7850000000000000e+02 -2 -3 1121 2.1500000000000000e+01 - - 1.0458730161190033e-01 -6.2516999244689941e-01 - -5.9976857900619507e-01 5.1749521493911743e-01 - <_> - 4.1494934082031250e+01 - - 1 2 1122 2.0050000000000000e+02 0 -1 1123 - 2.0500000000000000e+01 -2 -3 1124 6.4500000000000000e+01 - - -3.9138877391815186e-01 2.6315033435821533e-01 - -9.6982121467590332e-01 6.5220332145690918e-01 - <_> - 4.1932003021240234e+01 - - 1 2 1125 1.5000000000000000e+00 0 -1 1126 - 3.5000000000000000e+00 -2 -3 1127 5.0000000000000000e-01 - - -4.0265578031539917e-01 7.8519123792648315e-01 - 2.0901374518871307e-01 -4.3665331602096558e-01 - <_> - 4.1868026733398438e+01 - - 1 2 1128 1.6455000000000000e+03 0 -1 1129 - 1.5000000000000000e+00 -2 -3 1130 1.2425000000000000e+03 - - 7.5446349382400513e-01 -8.0549776554107666e-01 - 6.0434514284133911e-01 -6.3975110650062561e-02 - <_> - 4.2400360107421875e+01 - - 1 2 1131 7.5000000000000000e+00 0 -1 1132 - 6.3500000000000000e+01 -2 -3 1133 5.7650000000000000e+02 - - 5.2017074823379517e-01 -6.9113534688949585e-01 - -1.6708745062351227e-01 5.3233259916305542e-01 - <_> - 4.2345855712890625e+01 - - 1 2 1134 8.5000000000000000e+00 0 -1 1135 - 3.5000000000000000e+00 -2 -3 1136 1.8650000000000000e+02 - - -5.4506361484527588e-02 -7.8135180473327637e-01 - -6.1452972888946533e-01 5.3269100189208984e-01 - <_> - 4.2633274078369141e+01 - - 1 2 1137 2.0500000000000000e+01 0 -1 1138 - 5.6750000000000000e+02 -2 -3 1139 2.9915000000000000e+03 - - 6.6543561220169067e-01 -8.5652673244476318e-01 - 2.8741911053657532e-01 -4.7586393356323242e-01 - <_> - 4.2798049926757812e+01 - - 1 2 1140 9.5000000000000000e+00 0 -1 1141 - 4.9500000000000000e+01 -2 -3 1142 4.5000000000000000e+00 - - 1.6477760672569275e-01 -8.1512105464935303e-01 - -9.8834317922592163e-01 3.6259099841117859e-01 - <_> - 4.2601398468017578e+01 - - 1 2 1143 3.5000000000000000e+00 0 -1 1144 - 1.4500000000000000e+01 -2 -3 1145 2.6500000000000000e+01 - - 4.9031403660774231e-01 -6.7174017429351807e-01 - -6.2569665908813477e-01 3.0628502368927002e-01 - <_> - 4.3207866668701172e+01 - - 1 2 1146 5.0000000000000000e-01 0 -1 1147 338. -2 -3 1148 - 4.7500000000000000e+01 - - 6.0646677017211914e-01 -1.1136221885681152e-01 - -4.9581399559974670e-01 9.1770052909851074e-01 - <_> - 4.3436904907226562e+01 - - 1 2 1149 6.2500000000000000e+01 0 -1 1150 - 1.1500000000000000e+01 -2 -3 1151 6.5000000000000000e+00 - - -6.3020032644271851e-01 2.2903984785079956e-01 - 6.9111466407775879e-01 -9.2438864707946777e-01 - <_> - 4.3182262420654297e+01 - - 1 2 1152 2.4825000000000000e+03 0 -1 1153 - 1.8500000000000000e+01 -2 -3 1154 6.5000000000000000e+00 - - 8.8887816667556763e-01 -7.8725290298461914e-01 - -2.5464150309562683e-01 3.7431335449218750e-01 - <_> - 4.3620674133300781e+01 - - 1 2 1155 2.0895000000000000e+03 0 -1 1156 - 1.0500000000000000e+01 -2 -3 1157 7.1150000000000000e+02 - - 4.3995714187622070e-01 -5.2159392833709717e-01 - -6.2963652610778809e-01 1.1316129565238953e-01 - <_> - 4.3773460388183594e+01 - - 1 2 1158 5.0000000000000000e-01 0 -1 1159 21. -2 -3 1160 - 2647. - - -9.9163711071014404e-01 1. 1.5278881788253784e-01 - -8.0924803018569946e-01 - <_> - 4.3756889343261719e+01 - - 1 2 1161 9.5000000000000000e+00 0 -1 1162 - 1.5285000000000000e+03 -2 -3 1163 2.0500000000000000e+01 - - -7.3516172170639038e-01 -3.3198025077581406e-02 - 4.5004144310951233e-01 -4.9410822987556458e-01 - <_> - 4.3972312927246094e+01 - - 1 2 1164 1.5000000000000000e+00 0 -1 1165 - 1.2500000000000000e+01 -2 -3 1166 4.6250000000000000e+02 - - -8.7030416727066040e-01 1. 6.6300249099731445e-01 - -5.0532888621091843e-02 - <_> - 4.3980846405029297e+01 - - 1 2 1167 1.1500000000000000e+01 0 -1 1168 - 1.5000000000000000e+00 -2 -3 1169 9.5000000000000000e+00 - - 8.9238695800304413e-02 -6.6063672304153442e-01 - -2.1645425260066986e-01 5.4061800241470337e-01 - <_> - 4.4120399475097656e+01 - - 1 2 1170 1.4550000000000000e+02 0 -1 1171 515. -2 -3 1172 - 66. - - -8.7580627202987671e-01 1.3955466449260712e-01 1. -1. - <_> - 4.4321346282958984e+01 - - 1 2 1173 1.2500000000000000e+01 0 -1 1174 - 1.5500000000000000e+01 -2 -3 1175 6.5000000000000000e+00 - - -9.3138593435287476e-01 2.0094390213489532e-01 - -7.9345691204071045e-01 1.3270631432533264e-01 - <_> - 4.4408035278320312e+01 - - 1 2 1176 9.4500000000000000e+01 0 -1 1177 29. -2 -3 1178 - 1.5500000000000000e+01 - - 6.2725901603698730e-01 -5.2600252628326416e-01 - -6.2553745508193970e-01 1.1460914462804794e-01 - <_> - 4.3909595489501953e+01 - - 1 2 1179 6.5000000000000000e+00 0 -1 1180 - 9.7500000000000000e+01 -2 -3 1181 1.5000000000000000e+00 - - -8.3142787218093872e-01 6.9267946481704712e-01 - 4.8009446263313293e-01 -1.2805593013763428e-01 - <_> - 4.4367984771728516e+01 - - 1 2 1182 1.3500000000000000e+01 0 -1 1183 - 7.5000000000000000e+00 -2 -3 1184 5.1500000000000000e+01 - - -7.8150177001953125e-01 6.1593282222747803e-01 - 2.3517456650733948e-01 -8.9078408479690552e-01 - <_> - 4.4526245117187500e+01 - - 1 2 1185 8.1450000000000000e+02 0 -1 1186 27. -2 -3 1187 - 4.3250000000000000e+02 - - -9.6226990222930908e-01 1. 1.5826153755187988e-01 - -6.0127079486846924e-01 - <_> - 4.4509689331054688e+01 - - 1 2 1188 1.7050000000000000e+02 0 -1 1189 - 1.0350000000000000e+02 -2 -3 1190 17. - - -1.7409811913967133e-01 4.0153789520263672e-01 - -9.9094009399414062e-01 1. - <_> - 4.4416912078857422e+01 - - 1 2 1191 5.0000000000000000e-01 0 -1 1192 - 8.5000000000000000e+00 -2 -3 1193 1.9985000000000000e+03 - - -1. 5.3445392847061157e-01 -9.2778779566287994e-02 - -9.9271869659423828e-01 - <_> - 4.4893375396728516e+01 - - 1 2 1194 1.5755000000000000e+03 0 -1 1195 21. -2 -3 1196 - 2.2815000000000000e+03 - - 9.8664927482604980e-01 -1. -6.5728956460952759e-01 - 5.1687292754650116e-02 - <_> - 4.4958042144775391e+01 - - 1 2 1197 979. 0 -1 1198 3.5000000000000000e+00 -2 -3 1199 - 3.3450000000000000e+02 - - 6.4667396247386932e-02 -6.2298679351806641e-01 - 8.3257365226745605e-01 -3.2351174950599670e-01 - <_> - 4.5219623565673828e+01 - - 1 2 1200 2.5000000000000000e+00 0 -1 1201 - 4.5000000000000000e+00 -2 -3 1202 1.1250000000000000e+02 - - -8.0651080608367920e-01 7.8795516490936279e-01 - 2.6158225536346436e-01 -5.9016484022140503e-01 - <_> - 4.4823062896728516e+01 - - 1 2 1203 7.4850000000000000e+02 0 -1 1204 - 3.2500000000000000e+01 -2 -3 1205 697. - - 2.2503770887851715e-01 -3.9656233787536621e-01 - 9.5161718130111694e-01 -2.1432246267795563e-01 - <_> - 4.5530910491943359e+01 - - 1 2 1206 5.4750000000000000e+02 0 -1 1207 - 9.5000000000000000e+00 -2 -3 1208 4752. - - -7.8124099969863892e-01 7.0784658193588257e-01 - -9.6436911821365356e-01 3.5836692899465561e-02 - <_> - 4.5428401947021484e+01 - - 1 2 1209 1.5000000000000000e+00 0 -1 1210 - 1.5500000000000000e+01 -2 -3 1211 1.9455000000000000e+03 - - -1.0250826925039291e-01 5.4916018247604370e-01 - -2.6177955791354179e-02 -9.2129987478256226e-01 - <_> - 4.5787826538085938e+01 - - 1 2 1212 4.5850000000000000e+02 0 -1 1213 - 5.0000000000000000e-01 -2 -3 1214 1.5000000000000000e+00 - - -9.0581798553466797e-01 4.0218245983123779e-01 - -7.4334120750427246e-01 1.0166406631469727e-01 - <_> - 4.5805335998535156e+01 - - 1 2 1215 5.0000000000000000e-01 0 -1 1216 - 2.8965000000000000e+03 -2 -3 1217 1.4500000000000000e+01 - - 3.4860813617706299e-01 -9.2187440395355225e-01 - -5.3543245792388916e-01 5.3708320856094360e-01 - <_> - 4.5891948699951172e+01 - - 1 2 1218 4.2750000000000000e+02 0 -1 1219 - 1.1500000000000000e+01 -2 -3 1220 60. - - 5.4364776611328125e-01 -2.4448615312576294e-01 -1. - 9.3761330842971802e-01 - <_> - 4.6113231658935547e+01 - - 1 2 1221 2.9650000000000000e+02 0 -1 1222 - 3.5500000000000000e+01 -2 -3 1223 2.5000000000000000e+00 - - -8.3336704969406128e-01 -4.9441725015640259e-02 - -7.4142539501190186e-01 5.5442851781845093e-01 - <_> - 4.6227504730224609e+01 - - 1 2 1224 4.1500000000000000e+01 0 -1 1225 - 3.3065000000000000e+03 -2 -3 1226 3870. - - -6.0971248149871826e-01 2.4518391489982605e-01 - -9.2852658033370972e-01 6.7098820209503174e-01 - <_> - 4.6052734375000000e+01 - - 1 2 1227 7.3150000000000000e+02 0 -1 1228 - 6.8500000000000000e+01 -2 -3 1229 7.5000000000000000e+00 - - -3.0568072199821472e-01 2.9724195599555969e-01 - 6.0229831933975220e-01 -9.3976968526840210e-01 - <_> - 4.6391059875488281e+01 - - 1 2 1230 3941. 0 -1 1231 5.4500000000000000e+01 -2 -3 1232 - 1.7855000000000000e+03 - - 3.3832329511642456e-01 -7.9758453369140625e-01 - -6.3498198986053467e-01 6.3038891553878784e-01 - <_> - 4.6504837036132812e+01 - - 1 2 1233 5.0000000000000000e-01 0 -1 1234 - 7.5000000000000000e+00 -2 -3 1235 1501. - - -7.7365416288375854e-01 4.6874764561653137e-01 - -3.5823148488998413e-01 7.9656225442886353e-01 - <_> - 4.6372001647949219e+01 - - 1 2 1236 2.5500000000000000e+01 0 -1 1237 - 1.6500000000000000e+01 -2 -3 1238 5.0000000000000000e-01 - - 4.6493071317672729e-01 -7.0740276575088501e-01 - -4.8780402541160583e-01 3.7291622161865234e-01 - <_> - 4.6678596496582031e+01 - - 1 2 1239 7.9415000000000000e+03 0 -1 1240 - 5.0000000000000000e-01 -2 -3 1241 1.1500000000000000e+01 - - -8.2436817884445190e-01 3.0659627914428711e-01 - -6.5948170423507690e-01 4.5055055618286133e-01 - <_> - 4.6238845825195312e+01 - - 1 2 1242 1.9500000000000000e+01 0 -1 1243 - 8.5000000000000000e+00 -2 -3 1244 6.5500000000000000e+01 - - -6.7113763093948364e-01 2.0902428030967712e-01 - -7.2488105297088623e-01 1. - <_> - 4.6537197113037109e+01 - - 1 2 1245 2.8450000000000000e+02 0 -1 1246 - 4.5000000000000000e+00 -2 -3 1247 1.7550000000000000e+02 - - -6.7054611444473267e-01 8.2255226373672485e-01 - 2.9835110902786255e-01 -5.9376603364944458e-01 - <_> - 4.6529403686523438e+01 - - 1 2 1248 4.2500000000000000e+01 0 -1 1249 - 2.0500000000000000e+01 -2 -3 1250 1.8500000000000000e+01 - - -7.7904900535941124e-03 -8.1963479518890381e-01 - -5.0779378414154053e-01 4.3727734684944153e-01 - <_> - 4.6744403839111328e+01 - - 1 2 1251 4.5000000000000000e+00 0 -1 1252 - 2.8650000000000000e+02 -2 -3 1253 4.5000000000000000e+00 - - -1.9674304127693176e-01 4.5696255564689636e-01 - 7.9865179955959320e-02 -8.0503857135772705e-01 - <_> - 4.6963691711425781e+01 - - 1 2 1254 4.0250000000000000e+02 0 -1 1255 - 1.7045000000000000e+03 -2 -3 1256 5.0000000000000000e-01 - - -5.5684739351272583e-01 7.6402020454406738e-01 - -7.6276898384094238e-01 -2.2674866020679474e-02 - <_> - 4.6687553405761719e+01 - - 1 2 1257 5.0000000000000000e-01 0 -1 1258 - 1.1455000000000000e+03 -2 -3 1259 1.4500000000000000e+01 - - -3.6084955930709839e-01 8.0332660675048828e-01 - -2.7614063024520874e-01 4.3000274896621704e-01 - <_> - 4.6964260101318359e+01 - - 1 2 1260 3.5500000000000000e+01 0 -1 1261 - 6.5000000000000000e+00 -2 -3 1262 1.9950000000000000e+02 - - -5.5664390325546265e-01 2.7670648694038391e-01 - -8.6526918411254883e-01 1. - <_> - 4.7102539062500000e+01 - - 1 2 1263 5.3500000000000000e+01 0 -1 1264 - 1.0075000000000000e+03 -2 -3 1265 4.5000000000000000e+00 - - -9.8485064506530762e-01 7.1059340238571167e-01 - -4.6985602378845215e-01 1.3827921450138092e-01 - <_> - 4.6816654205322266e+01 - - 1 2 1266 2.3500000000000000e+01 0 -1 1267 - 9.5000000000000000e+00 -2 -3 1268 2.5000000000000000e+00 - - 2.5332915782928467e-01 -7.9585695266723633e-01 - -2.8588473796844482e-01 3.4832224249839783e-01 - <_> - 4.7195682525634766e+01 - - 1 2 1269 5.0000000000000000e-01 0 -1 1270 - 4.6605000000000000e+03 -2 -3 1271 3.5250000000000000e+02 - - 3.7902894616127014e-01 -8.4313845634460449e-01 - 1.3045331835746765e-01 -5.6578201055526733e-01 - <_> - 4.7464088439941406e+01 - - 1 2 1272 2.1500000000000000e+01 0 -1 1273 - 5.0000000000000000e-01 -2 -3 1274 242. - - 1.3412712514400482e-01 -7.8316122293472290e-01 - 2.6840490102767944e-01 -7.1992039680480957e-01 - <_> - 4.7629711151123047e+01 - - 1 2 1275 2.5000000000000000e+00 0 -1 1276 - 7.4500000000000000e+01 -2 -3 1277 1.0750000000000000e+02 - - -8.3254098892211914e-01 9.2741733789443970e-01 - 1.6562341153621674e-01 -9.0677899122238159e-01 - <_> - 4.7230899810791016e+01 - - 1 2 1278 5.0000000000000000e-01 0 -1 1279 - 1.5000000000000000e+00 -2 -3 1280 789. - - -4.9992504715919495e-01 4.5887079834938049e-01 - 7.6845002174377441e-01 -3.9880952239036560e-01 - <_> - 4.7315582275390625e+01 - - 1 2 1281 7.7050000000000000e+02 0 -1 1282 - 2.5000000000000000e+00 -2 -3 1283 1.8500000000000000e+01 - - 8.4682360291481018e-02 -6.0419434309005737e-01 - -8.2248067855834961e-01 5.7301843166351318e-01 - <_> - 4.7552246093750000e+01 - - 1 2 1284 6.8500000000000000e+01 0 -1 1285 - 3.4435000000000000e+03 -2 -3 1286 5.0000000000000000e-01 - - 2.3666270077228546e-01 -8.8462197780609131e-01 - 7.7540457248687744e-01 -7.6702028512954712e-01 - <_> - 4.7279457092285156e+01 - - 1 2 1287 5.4650000000000000e+02 0 -1 1288 - 2.7500000000000000e+01 -2 -3 1289 1.2500000000000000e+01 - - -8.9818286895751953e-01 9.3574041128158569e-01 - -2.7278780937194824e-01 3.4087333083152771e-01 - <_> - 4.7695171356201172e+01 - - 1 2 1290 5.5000000000000000e+00 0 -1 1291 - 6.8500000000000000e+01 -2 -3 1292 4.2250000000000000e+02 - - -5.1797193288803101e-01 9.6406042575836182e-01 - 4.1571247577667236e-01 -3.3489051461219788e-01 - <_> - 4.8403869628906250e+01 - - 1 2 1293 1883. 0 -1 1294 8.7550000000000000e+02 -2 -3 1295 - 558. - - -1. 1. 7.0869779586791992e-01 -4.0250223129987717e-02 - <_> - 4.8536903381347656e+01 - - 1 2 1296 2.3500000000000000e+01 0 -1 1297 - 2.5000000000000000e+00 -2 -3 1298 3.5000000000000000e+00 - - 7.9751479625701904e-01 -8.0273920297622681e-01 - -7.9289126396179199e-01 2.0057959854602814e-01 - <_> - 4.8952194213867188e+01 - - 1 2 1299 5.0500000000000000e+01 0 -1 1300 - 5.0000000000000000e-01 -2 -3 1301 15. - - 4.1529166698455811e-01 -1.6719508171081543e-01 - -9.8823583126068115e-01 8.9194875955581665e-01 - <_> - 4.9016838073730469e+01 - - 1 2 1302 3.0500000000000000e+01 0 -1 1303 - 9.4500000000000000e+01 -2 -3 1304 1.4500000000000000e+01 - - -5.3713786602020264e-01 7.3640905320644379e-02 - -9.4347292184829712e-01 9.7819411754608154e-01 - <_> - 4.8526271820068359e+01 - - 1 2 1305 4.5000000000000000e+00 0 -1 1306 - 2.5000000000000000e+00 -2 -3 1307 6.8500000000000000e+01 - - -4.9056568741798401e-01 1.6012768447399139e-01 - 5.9082514047622681e-01 -7.3458278179168701e-01 - <_> - 4.8976272583007812e+01 - - 1 2 1308 4.5000000000000000e+00 0 -1 1309 - 1.5500000000000000e+01 -2 -3 1310 5.9500000000000000e+01 - - -1.9833615422248840e-01 4.4999912381172180e-01 - -5.6295996904373169e-01 8.5850125551223755e-01 - <_> - 4.8976329803466797e+01 - - 1 2 1311 4.5000000000000000e+00 0 -1 1312 - 6.8500000000000000e+01 -2 -3 1313 4.6500000000000000e+01 - - 5.6983328249771148e-05 7.7724099159240723e-01 - -6.1698484420776367e-01 2.9591542482376099e-01 - <_> - 4.9282245635986328e+01 - - 1 2 1314 1.1500000000000000e+01 0 -1 1315 - 1.5000000000000000e+00 -2 -3 1316 103. - - -8.6629253625869751e-01 2.9691928625106812e-01 - -6.9187688827514648e-01 7.6389712095260620e-01 - <_> - 4.9114860534667969e+01 - - 1 2 1317 1.8555000000000000e+03 0 -1 1318 - 6.4500000000000000e+01 -2 -3 1319 2.7350000000000000e+02 - - -1.6738428175449371e-01 5.7460331916809082e-01 - 5.3947240114212036e-01 -7.7280753850936890e-01 - <_> - 4.9352123260498047e+01 - - 1 2 1320 8.5350000000000000e+02 0 -1 1321 - 1.5000000000000000e+00 -2 -3 1322 9.9500000000000000e+01 - - 8.4088134765625000e-01 -7.2172147035598755e-01 - 2.3726405203342438e-01 -9.3316709995269775e-01 - <_> - 4.9501861572265625e+01 - - 1 2 1323 4.5000000000000000e+00 0 -1 1324 - 1.1500000000000000e+01 -2 -3 1325 8.5500000000000000e+01 - - -9.9253803491592407e-01 1. 4.6414378285408020e-01 - -2.0848950743675232e-01 - <_> - 4.9837139129638672e+01 - - 1 2 1326 7.9550000000000000e+02 0 -1 1327 - 2.8050000000000000e+02 -2 -3 1328 1835. - - -8.2946020364761353e-01 9.6943551301956177e-01 - -8.1424975395202637e-01 2.0871644839644432e-02 - <_> - 5.0246009826660156e+01 - - 1 2 1329 8.5000000000000000e+00 0 -1 1330 - 9.1050000000000000e+02 -2 -3 1331 1.5000000000000000e+00 - - 4.0886759757995605e-01 -7.4836260080337524e-01 - -5.7454568147659302e-01 3.2781472802162170e-01 - <_> - 4.9796627044677734e+01 - - 1 2 1332 5.0000000000000000e-01 0 -1 1333 - 6.5000000000000000e+00 -2 -3 1334 2.3500000000000000e+01 - - -9.3218848109245300e-02 8.3576363325119019e-01 - 1.9991603493690491e-01 -4.6900144219398499e-01 - <_> - 5.0063694000244141e+01 - - 1 2 1335 1.5000000000000000e+00 0 -1 1336 - 6.3500000000000000e+01 -2 -3 1337 1.8725000000000000e+03 - - -7.0560324192047119e-01 4.1954356431961060e-01 - -9.6739757061004639e-01 2.6706603169441223e-01 - <_> - 5.0260620117187500e+01 - - 1 2 1338 1.0500000000000000e+01 0 -1 1339 - 2.9500000000000000e+01 -2 -3 1340 342. - - -9.0658597648143768e-02 -7.9617536067962646e-01 - 6.7347729206085205e-01 -2.3987580835819244e-01 - <_> - 5.0467788696289062e+01 - - 1 2 1341 1.0650000000000000e+02 0 -1 1342 - 8.6750000000000000e+02 -2 -3 1343 2.5000000000000000e+00 - - 2.0716853439807892e-01 -7.6313602924346924e-01 - -9.5789188146591187e-01 2.3767970502376556e-01 - <_> - 5.0828540802001953e+01 - - 1 2 1344 5.4500000000000000e+01 0 -1 1345 - 9.8150000000000000e+02 -2 -3 1346 9.5000000000000000e+00 - - -3.1050950288772583e-02 -7.7375942468643188e-01 - -8.2174503803253174e-01 3.6075502634048462e-01 - <_> - 5.0360866546630859e+01 - - 1 2 1347 1.3500000000000000e+01 0 -1 1348 - 5.0000000000000000e-01 -2 -3 1349 1236. - - 1.3057044148445129e-01 -4.6767637133598328e-01 - -6.9840586185455322e-01 7.9119002819061279e-01 - <_> - 5.0256309509277344e+01 - - 1 2 1350 2.5000000000000000e+00 0 -1 1351 - 9.4500000000000000e+01 -2 -3 1352 3.2500000000000000e+01 - - 3.8615158200263977e-01 -9.4876563549041748e-01 - 6.4024305343627930e-01 -1.0455664992332458e-01 - <_> - 5.0560165405273438e+01 - - 1 2 1353 2.5000000000000000e+00 0 -1 1354 - 4.0500000000000000e+01 -2 -3 1355 4.0500000000000000e+01 - - -7.0561832189559937e-01 3.3378389477729797e-01 - 3.0385577678680420e-01 -6.0897898674011230e-01 - <_> - 5.0804115295410156e+01 - - 1 2 1356 1.5500000000000000e+01 0 -1 1357 45. -2 -3 1358 - 7.5000000000000000e+00 - - -8.0861389636993408e-01 1. -4.3904241919517517e-01 - 2.7291506528854370e-01 - <_> - 5.0514347076416016e+01 - - 1 2 1359 1.1050000000000000e+02 0 -1 1360 - 6.3500000000000000e+01 -2 -3 1361 2.3500000000000000e+01 - - -2.8976878523826599e-01 3.2039192318916321e-01 - -8.0150151252746582e-01 6.8203634023666382e-01 - <_> - 5.0776355743408203e+01 - - 1 2 1362 1.0550000000000000e+02 0 -1 1363 - 1.3550000000000000e+02 -2 -3 1364 10068. - - -6.4488768577575684e-01 2.6200938224792480e-01 - -8.9675015211105347e-01 -3.1381275504827499e-02 - <_> - 5.0533866882324219e+01 - - 1 2 1365 6.8500000000000000e+01 0 -1 1366 - 5.0000000000000000e-01 -2 -3 1367 1.6050000000000000e+02 - - 3.1839752197265625e-01 -2.4249233305454254e-01 1. -1. - <_> - 5.0829113006591797e+01 - - 1 2 1368 1.5000000000000000e+00 0 -1 1369 - 6.6350000000000000e+02 -2 -3 1370 5.5000000000000000e+00 - - 6.8838620185852051e-01 -9.3250781297683716e-01 - 2.9524663090705872e-01 -3.2141539454460144e-01 - <_> - 5.0797142028808594e+01 - - 1 2 1371 8.5000000000000000e+00 0 -1 1372 - 2.5000000000000000e+00 -2 -3 1373 5.0000000000000000e-01 - - 4.2804262042045593e-01 -7.1058040857315063e-01 - 7.0905983448028564e-01 -3.1971532851457596e-02 - <_> - 5.1115089416503906e+01 - - 1 2 1374 861. 0 -1 1375 3.5000000000000000e+00 -2 -3 1376 - 1.4500000000000000e+01 - - -4.3287408351898193e-01 3.1794783473014832e-01 - -8.9377957582473755e-01 8.8807784020900726e-02 - <_> - 5.1886703491210938e+01 - - 1 2 1377 1.0955000000000000e+03 0 -1 1378 - 1.1500000000000000e+01 -2 -3 1379 8.7950000000000000e+02 - - 7.7161508798599243e-01 -5.0686275959014893e-01 - -4.5395648479461670e-01 3.3118793368339539e-01 - <_> - 5.1772079467773438e+01 - - 1 2 1380 4.6650000000000000e+02 0 -1 1381 33. -2 -3 1382 - 1.0950000000000000e+02 - - -9.5125919580459595e-01 1. -1.1462553590536118e-01 - 4.7979238629341125e-01 - <_> - 5.2198509216308594e+01 - - 1 2 1383 1.5500000000000000e+01 0 -1 1384 - 2.8250000000000000e+02 -2 -3 1385 2.1500000000000000e+01 - - -5.1369702816009521e-01 4.8207268118858337e-01 - -4.2361307144165039e-01 6.4388936758041382e-01 - <_> - 5.2392532348632812e+01 - - 1 2 1386 2.5000000000000000e+00 0 -1 1387 - 1.2535000000000000e+03 -2 -3 1388 4515. - - 3.2906323671340942e-01 -7.7641272544860840e-01 - 5.5688279867172241e-01 -6.7741048336029053e-01 - <_> - 5.1989242553710938e+01 - - 1 2 1389 5.5000000000000000e+00 0 -1 1390 - 2.2750000000000000e+02 -2 -3 1391 4.3500000000000000e+01 - - 1.5418881177902222e-01 -5.9396916627883911e-01 - -4.6043199300765991e-01 6.2906885147094727e-01 - <_> - 5.2259319305419922e+01 - - 1 2 1392 3.2745000000000000e+03 0 -1 1393 - 1.8650000000000000e+02 -2 -3 1394 277. - - 1. -9.5819205045700073e-01 2.7007547020912170e-01 - -6.1733877658843994e-01 - <_> - 5.2470146179199219e+01 - - 1 2 1395 2.5000000000000000e+00 0 -1 1396 105. -2 -3 1397 - 1.1305000000000000e+03 - - -8.1608760356903076e-01 6.3372832536697388e-01 - -5.9831696748733521e-01 2.1082499623298645e-01 - <_> - 5.2619174957275391e+01 - - 1 2 1398 1.5000000000000000e+00 0 -1 1399 - 3.5500000000000000e+01 -2 -3 1400 6.9565000000000000e+03 - - 8.7191337347030640e-01 -9.5075809955596924e-01 - 1.4903016388416290e-01 -9.4546204805374146e-01 - <_> - 5.2935699462890625e+01 - - 1 2 1401 5.0000000000000000e-01 0 -1 1402 - 8.5000000000000000e+00 -2 -3 1403 5.0000000000000000e-01 - - -8.3433282375335693e-01 2.5846391916275024e-01 - 3.1652534008026123e-01 -2.6149821281433105e-01 - <_> - 5.3098587036132812e+01 - - 1 2 1404 2.6500000000000000e+01 0 -1 1405 - 3.0500000000000000e+01 -2 -3 1406 7.5000000000000000e+00 - - 1.6288678348064423e-01 -6.0522311925888062e-01 - -8.4450155496597290e-01 1. - <_> - 5.3166687011718750e+01 - - 1 2 1407 5.0000000000000000e-01 0 -1 1408 - 5.0000000000000000e-01 -2 -3 1409 2.2500000000000000e+01 - - 4.6929541230201721e-01 -2.5119864940643311e-01 - -6.6509801149368286e-01 1.3742294907569885e-01 - <_> - 5.3216953277587891e+01 - - 1 2 1410 1.0315000000000000e+03 0 -1 1411 - 5.5450000000000000e+02 -2 -3 1412 1.2050000000000000e+02 - - -5.9429639577865601e-01 5.0267767161130905e-02 - -7.4524205923080444e-01 9.9237120151519775e-01 - <_> - 5.2621330261230469e+01 - - 1 2 1413 5.0500000000000000e+01 0 -1 1414 - 9.5000000000000000e+00 -2 -3 1415 197. - - -5.9562218189239502e-01 2.1804636716842651e-01 - -9.5759987831115723e-01 1. - <_> - 5.2961544036865234e+01 - - 1 2 1416 1.5000000000000000e+00 0 -1 1417 - 2.3075000000000000e+03 -2 -3 1418 3.9850000000000000e+02 - - 3.4021046757698059e-01 -8.9926844835281372e-01 - -5.2498364448547363e-01 6.2959104776382446e-01 - <_> - 5.3093982696533203e+01 - - 1 2 1419 8.5000000000000000e+00 0 -1 1420 - 8.5000000000000000e+00 -2 -3 1421 1.0500000000000000e+01 - - -2.6875725388526917e-01 4.4103288650512695e-01 - -7.8084117174148560e-01 2.4891872704029083e-01 - <_> - 5.3610618591308594e+01 - - 1 2 1422 1.1500000000000000e+01 0 -1 1423 - 5.1500000000000000e+01 -2 -3 1424 3.2850000000000000e+02 - - 6.1537820100784302e-01 -7.0333778858184814e-01 - 5.1663792133331299e-01 -1.1682698130607605e-01 - <_> - 5.3337509155273438e+01 - - 1 2 1425 6.5000000000000000e+00 0 -1 1426 - 2.0150000000000000e+02 -2 -3 1427 1.3750000000000000e+02 - - -7.9510349035263062e-01 6.7965596914291382e-01 - -5.7587045431137085e-01 2.8806659579277039e-01 - <_> - 5.3759262084960938e+01 - - 1 2 1428 1.3500000000000000e+01 0 -1 1429 - 5.0000000000000000e-01 -2 -3 1430 2.5500000000000000e+01 - - -8.0888146162033081e-01 -1.0459310561418533e-01 - 4.2175045609474182e-01 -2.2673429548740387e-01 - <_> - 5.4000991821289062e+01 - - 1 2 1431 1.6500000000000000e+01 0 -1 1432 - 4.9500000000000000e+01 -2 -3 1433 3.2500000000000000e+01 - - 2.4172973632812500e-01 -6.6279673576354980e-01 - -7.4276286363601685e-01 3.0321115255355835e-01 - <_> - 5.3984508514404297e+01 - - 1 2 1434 1.1565000000000000e+03 0 -1 1435 - 2.6250000000000000e+02 -2 -3 1436 3893. - - 7.3637932538986206e-01 -3.4883835911750793e-01 - 6.0121822357177734e-01 -8.0439829826354980e-01 - <_> - 5.4098236083984375e+01 - - 1 2 1437 1.3500000000000000e+01 0 -1 1438 - 3.8350000000000000e+02 -2 -3 1439 1.0500000000000000e+01 - - -6.2982290983200073e-01 1.1372609436511993e-01 - -5.9008258581161499e-01 4.2848214507102966e-01 - <_> - 5.4405338287353516e+01 - - 1 2 1440 1.9805000000000000e+03 0 -1 1441 - 1.1275000000000000e+03 -2 -3 1442 2.6500000000000000e+01 - - -5.8803045749664307e-01 3.0710294842720032e-01 - -6.5108889341354370e-01 7.1022272109985352e-01 - <_> - 5.4511505126953125e+01 - - 1 2 1443 4.5000000000000000e+00 0 -1 1444 - 2.5000000000000000e+00 -2 -3 1445 1.8500000000000000e+01 - - -9.6930414438247681e-01 5.6903254985809326e-01 - 3.2619524002075195e-01 -2.4657142162322998e-01 - <_> - 5.3997844696044922e+01 - - 1 2 1446 7.5000000000000000e+00 0 -1 1447 - 3.8850000000000000e+02 -2 -3 1448 2.5000000000000000e+00 - - -5.1365816593170166e-01 7.6742160320281982e-01 - -1.1964958161115646e-01 5.4031091928482056e-01 - <_> - 5.4253089904785156e+01 - - 1 2 1449 1626. 0 -1 1450 1.3550000000000000e+02 -2 -3 1451 - 3.6500000000000000e+01 - - 2.5524312257766724e-01 -9.8179906606674194e-01 - -7.1048241853713989e-01 4.6551769971847534e-01 - <_> - 5.4500720977783203e+01 - - 1 2 1452 1.0500000000000000e+01 0 -1 1453 - 1.6500000000000000e+01 -2 -3 1454 3.5000000000000000e+00 - - -8.2665824890136719e-01 8.4684377908706665e-01 - 2.4763117730617523e-01 -5.0248169898986816e-01 - <_> - 5.4737117767333984e+01 - - 1 2 1455 2.9500000000000000e+01 0 -1 1456 - 2.0445000000000000e+03 -2 -3 1457 2.0750000000000000e+02 - - 3.2250665128231049e-02 -8.2253599166870117e-01 - 2.3639632761478424e-01 -8.4098196029663086e-01 - <_> - 5.4620071411132812e+01 - - 1 2 1458 5.5000000000000000e+00 0 -1 1459 - 3.5500000000000000e+01 -2 -3 1460 1.1350000000000000e+02 - - -3.3707693219184875e-01 2.8938186168670654e-01 - -6.7547446489334106e-01 6.6382431983947754e-01 - <_> - 5.4814952850341797e+01 - - 1 2 1461 1.7065000000000000e+03 0 -1 1462 - 2.5000000000000000e+00 -2 -3 1463 3.0500000000000000e+01 - - -9.4278389215469360e-01 1.9488368928432465e-01 - -7.2809278964996338e-01 9.4887137413024902e-01 - <_> - 5.5078216552734375e+01 - - 1 2 1464 4.9500000000000000e+01 0 -1 1465 - 2.5000000000000000e+00 -2 -3 1466 2.5000000000000000e+00 - - -4.3484109640121460e-01 2.6326316595077515e-01 - 4.3786400556564331e-01 -8.4547907114028931e-01 - <_> - 5.5371429443359375e+01 - - 1 2 1467 5.0000000000000000e-01 0 -1 1468 - 9.5000000000000000e+00 -2 -3 1469 1.8500000000000000e+01 - - 3.0153682827949524e-01 -1. -6.4001828432083130e-01 - 1.5916951000690460e-01 - <_> - 5.5277488708496094e+01 - - 1 2 1470 1.5000000000000000e+00 0 -1 1471 - 4.7500000000000000e+01 -2 -3 1472 1.5350000000000000e+02 - - -8.3075433969497681e-01 8.5157310962677002e-01 - 5.2560466527938843e-01 -1.0226363688707352e-01 - <_> - 5.5544731140136719e+01 - - 1 2 1473 5.5000000000000000e+00 0 -1 1474 - 4.7500000000000000e+01 -2 -3 1475 3.5000000000000000e+00 - - -6.9490593671798706e-01 8.3865737915039062e-01 - -5.5749320983886719e-01 2.6724293828010559e-01 - <_> - 5.5245399475097656e+01 - - 1 2 1476 1.9950000000000000e+02 0 -1 1477 2289. -2 -3 1478 - 8.5000000000000000e+00 - - -8.5769319534301758e-01 9.1711401939392090e-01 - -7.0576089620590210e-01 3.7203203886747360e-02 - <_> - 5.5488651275634766e+01 - - 1 2 1479 5.2500000000000000e+01 0 -1 1480 - 1.2950000000000000e+02 -2 -3 1481 9.9500000000000000e+01 - - -8.7117952108383179e-01 2.4325069785118103e-01 1. - -6.1816340684890747e-01 - <_> - 5.6088603973388672e+01 - - 1 2 1482 3.0395000000000000e+03 0 -1 1483 - 8.5000000000000000e+00 -2 -3 1484 3.8500000000000000e+01 - - -6.3812756538391113e-01 5.9995239973068237e-01 - -3.6428934335708618e-01 4.7413027286529541e-01 - <_> - 5.6244201660156250e+01 - - 1 2 1485 5.0000000000000000e-01 0 -1 1486 - 1.5215000000000000e+03 -2 -3 1487 6.7050000000000000e+02 - - 3.1605017185211182e-01 -8.9320194721221924e-01 - -8.2980042695999146e-01 9.8803900182247162e-03 - <_> - 5.6439548492431641e+01 - - 1 2 1488 3.0050000000000000e+02 0 -1 1489 - 2.8550000000000000e+02 -2 -3 1490 5.5000000000000000e+00 - - -6.1809647083282471e-01 3.4896131604909897e-02 - 6.8301624059677124e-01 -6.8873125314712524e-01 - <_> - 5.6426887512207031e+01 - - 1 2 1491 5.8500000000000000e+01 0 -1 1492 - 3.4345000000000000e+03 -2 -3 1493 1.5500000000000000e+01 - - -1.2663759291172028e-02 -8.3325493335723877e-01 - -4.5447880029678345e-01 8.2523274421691895e-01 - <_> - 5.6583915710449219e+01 - - 1 2 1494 1.5000000000000000e+00 0 -1 1495 17. -2 -3 1496 - 4.5000000000000000e+00 - - -9.2977488040924072e-01 1. 4.6097502112388611e-01 - -9.5174610614776611e-02 - <_> - 5.6213527679443359e+01 - - 1 2 1497 2.5000000000000000e+00 0 -1 1498 - 3.1500000000000000e+01 -2 -3 1499 1.7500000000000000e+01 - - -9.0150320529937744e-01 1. -3.7925186753273010e-01 - 2.4965119361877441e-01 - <_> - 5.6820350646972656e+01 - - 1 2 1500 3.2500000000000000e+01 0 -1 1501 - 4.1950000000000000e+02 -2 -3 1502 3.2500000000000000e+01 - - 7.4725711345672607e-01 -2.9326796531677246e-01 - 5.0832718610763550e-01 -3.6488053202629089e-01 - <_> - 5.6534500122070312e+01 - - 1 2 1503 6.5000000000000000e+00 0 -1 1504 - 9.5000000000000000e+00 -2 -3 1505 7.5000000000000000e+00 - - -4.2628404498100281e-01 1.9397723674774170e-01 - 7.4938726425170898e-01 -2.1961294114589691e-01 - <_> - 5.6932621002197266e+01 - - 1 2 1506 2.5000000000000000e+00 0 -1 1507 - 5.7050000000000000e+02 -2 -3 1508 7.7500000000000000e+01 - - 3.9812234044075012e-01 -4.7504433989524841e-01 - -6.2128961086273193e-01 2.6114046573638916e-01 - <_> - 5.6733325958251953e+01 - - 1 2 1509 4.3500000000000000e+01 0 -1 1510 - 1.1500000000000000e+01 -2 -3 1511 5.5000000000000000e+00 - - 8.2605105638504028e-01 -8.1933623552322388e-01 - -7.0437282323837280e-01 2.4815419316291809e-01 - <_> - 5.7121013641357422e+01 - - 1 2 1512 5.0000000000000000e-01 0 -1 1513 - 2.5000000000000000e+00 -2 -3 1514 5.0000000000000000e-01 - - -9.4875234365463257e-01 4.0717402100563049e-01 - 3.7182134389877319e-01 -5.7021689414978027e-01 - <_> - 5.7052574157714844e+01 - - 1 2 1515 3.5000000000000000e+00 0 -1 1516 - 8.2350000000000000e+02 -2 -3 1517 3.5000000000000000e+00 - - -7.7814382314682007e-01 3.1433707475662231e-01 - 1.5364609658718109e-01 -6.9893133640289307e-01 - <_> - 5.7430255889892578e+01 - - 1 2 1518 7.5000000000000000e+00 0 -1 1519 - 2.7150000000000000e+02 -2 -3 1520 5.0000000000000000e-01 - - 3.7767973542213440e-01 -5.5577713251113892e-01 - 5.0659346580505371e-01 -2.3998673260211945e-01 - <_> - 5.7607677459716797e+01 - - 1 2 1521 8.5000000000000000e+00 0 -1 1522 - 3.7500000000000000e+01 -2 -3 1523 3.1500000000000000e+01 - - -9.3116837739944458e-01 1. 1.7742125689983368e-01 - -9.6981590986251831e-01 - <_> - 5.7209033966064453e+01 - - 1 2 1524 1.7500000000000000e+01 0 -1 1525 3333. -2 -3 1526 - 2.9500000000000000e+01 - - 3.5140603780746460e-01 -5.5955231189727783e-01 - 3.5482010245323181e-01 -6.4368051290512085e-01 - <_> - 5.7508213043212891e+01 - - 1 2 1527 1.3295000000000000e+03 0 -1 1528 - 3.5000000000000000e+00 -2 -3 1529 2.9905000000000000e+03 - - 8.6157292127609253e-01 -6.5889972448348999e-01 - 2.9918015003204346e-01 -5.1698189973831177e-01 - <_> - 5.7847724914550781e+01 - - 1 2 1530 5.8500000000000000e+01 0 -1 1531 4269. -2 -3 1532 - 3.5000000000000000e+00 - - -7.0496505498886108e-01 9.6496659517288208e-01 - 3.3951207995414734e-01 -2.9617905616760254e-01 - <_> - 5.8073795318603516e+01 - - 1 2 1533 1.4795000000000000e+03 0 -1 1534 1436. -2 -3 1535 - 3.4500000000000000e+01 - - 5.1324147731065750e-02 -7.3305028676986694e-01 - -9.5588427782058716e-01 8.9802700281143188e-01 - <_> - 5.8258213043212891e+01 - - 1 2 1536 8.5000000000000000e+00 0 -1 1537 - 2.3500000000000000e+01 -2 -3 1538 4.5000000000000000e+00 - - 1.1342080309987068e-02 -7.0464617013931274e-01 - 4.9904069304466248e-01 -2.1743535995483398e-01 - <_> - 5.7891689300537109e+01 - - 1 2 1539 5.0000000000000000e-01 0 -1 1540 - 1.5000000000000000e+00 -2 -3 1541 3.0595000000000000e+03 - - -5.2796399593353271e-01 3.7497097253799438e-01 - -4.9453270435333252e-01 5.0762557983398438e-01 - <_> - 5.8188655853271484e+01 - - 1 2 1542 5.0000000000000000e-01 0 -1 1543 - 1.5000000000000000e+00 -2 -3 1544 3.9500000000000000e+01 - - -8.9199644327163696e-01 2.9696619510650635e-01 - -5.4498016834259033e-01 9.7139292955398560e-01 - <_> - 5.8280239105224609e+01 - - 1 2 1545 3.3500000000000000e+01 0 -1 1546 - 5.0000000000000000e-01 -2 -3 1547 2.3500000000000000e+01 - - 4.4268378615379333e-01 -1.9920051097869873e-01 - 9.4228142499923706e-01 -7.5990098714828491e-01 - <_> - 5.7867527008056641e+01 - - 1 2 1548 7.5000000000000000e+00 0 -1 1549 339. -2 -3 1550 - 2.0555000000000000e+03 - - -8.4151726961135864e-01 3.1999579071998596e-01 - 2.5331634283065796e-01 -9.0427207946777344e-01 - <_> - 5.8132240295410156e+01 - - 1 2 1551 1.5000000000000000e+00 0 -1 1552 - 7.8650000000000000e+02 -2 -3 1553 1.8550000000000000e+02 - - 9.1284018754959106e-01 -7.6456803083419800e-01 - 2.6471161842346191e-01 -5.1480412483215332e-01 - <_> - 5.8396484375000000e+01 - - 1 2 1554 7.2500000000000000e+01 0 -1 1555 - 2.0845000000000000e+03 -2 -3 1556 682. - - 2.6424339413642883e-01 -5.3545671701431274e-01 - 5.8558118343353271e-01 -6.5226233005523682e-01 - <_> - 5.8931407928466797e+01 - - 1 2 1557 4.8500000000000000e+01 0 -1 1558 - 2.0650000000000000e+02 -2 -3 1559 1.5000000000000000e+00 - - -3.9781129360198975e-01 8.4498012065887451e-01 - 5.9064257144927979e-01 -2.2476838529109955e-01 - <_> - 5.9235450744628906e+01 - - 1 2 1560 5.6850000000000000e+02 0 -1 1561 92. -2 -3 1562 - 6.5000000000000000e+00 - - -7.1817409992218018e-01 6.5666520595550537e-01 - -3.9366659522056580e-01 3.7859344482421875e-01 - <_> - 5.8954090118408203e+01 - - 1 2 1563 3.5500000000000000e+01 0 -1 1564 - 4.1500000000000000e+01 -2 -3 1565 1.5000000000000000e+00 - - -3.5591202974319458e-01 2.9819571971893311e-01 - 6.6078835725784302e-01 -7.5122755765914917e-01 - <_> - 5.8992759704589844e+01 - - 1 2 1566 2.5000000000000000e+00 0 -1 1567 - 7.2450000000000000e+02 -2 -3 1568 7.1500000000000000e+01 - - 2.6733225584030151e-01 -8.6994355916976929e-01 - -6.7115420103073120e-01 2.8546950221061707e-01 - <_> - 5.9206840515136719e+01 - - 1 2 1569 125. 0 -1 1570 1.1500000000000000e+01 -2 -3 1571 - 1.7500000000000000e+01 - - -6.3097745180130005e-01 2.1407873928546906e-01 - -8.3158969879150391e-01 4.2057126760482788e-01 - <_> - 5.8675384521484375e+01 - - 1 2 1572 8.2500000000000000e+01 0 -1 1573 - 9.5000000000000000e+00 -2 -3 1574 1.3500000000000000e+01 - - -3.0376458168029785e-01 6.8508493900299072e-01 - -7.6011431217193604e-01 -4.0676746517419815e-02 - <_> - 5.8824657440185547e+01 - - 1 2 1575 5.3500000000000000e+01 0 -1 1576 3877. -2 -3 1577 - 1.9500000000000000e+01 - - -1. 7.3939621448516846e-01 -4.9733954668045044e-01 - 1.4926970005035400e-01 - <_> - 5.8581497192382812e+01 - - 1 2 1578 1.6165000000000000e+03 0 -1 1579 267. -2 -3 1580 - 2.3500000000000000e+01 - - -9.4517678022384644e-01 8.4405893087387085e-01 - -2.4316047132015228e-01 7.9341024160385132e-01 - <_> - 5.8863464355468750e+01 - - 1 2 1581 1.6500000000000000e+01 0 -1 1582 - 5.5000000000000000e+00 -2 -3 1583 4.0500000000000000e+01 - - -3.9863419532775879e-01 2.8196731209754944e-01 - -8.9268469810485840e-01 1. - <_> - 5.9290416717529297e+01 - - 1 2 1584 3.5000000000000000e+00 0 -1 1585 - 5.0000000000000000e-01 -2 -3 1586 3.9500000000000000e+01 - - -7.3463970422744751e-01 4.2695468664169312e-01 - -5.4126203060150146e-01 1.1317404359579086e-01 - <_> - 5.9067043304443359e+01 - - 1 2 1587 5.0000000000000000e-01 0 -1 1588 - 4.0950000000000000e+02 -2 -3 1589 7.2500000000000000e+01 - - -5.0176566839218140e-01 5.1602709293365479e-01 - 3.0980804562568665e-01 -4.6058577299118042e-01 - <_> - 5.9415367126464844e+01 - - 1 2 1590 1.5000000000000000e+00 0 -1 1591 12. -2 -3 1592 - 1.1500000000000000e+01 - - -6.9384574890136719e-01 6.5746247768402100e-01 - 3.4832605719566345e-01 -3.8974580168724060e-01 - <_> - 5.9919109344482422e+01 - - 1 2 1593 1.0845000000000000e+03 0 -1 1594 5947. -2 -3 1595 - 2.5500000000000000e+01 - - 5.0374138355255127e-01 -5.3129601478576660e-01 - -5.8001512289047241e-01 2.0108926296234131e-01 - <_> - 6.0114849090576172e+01 - - 1 2 1596 5.0000000000000000e-01 0 -1 1597 - 3.8650000000000000e+02 -2 -3 1598 8.6750000000000000e+02 - - -8.9583384990692139e-01 5.1855945587158203e-01 - 1.9573992490768433e-01 -9.6577078104019165e-01 - <_> - 5.9724266052246094e+01 - - 1 2 1599 7.0500000000000000e+01 0 -1 1600 - 7.6500000000000000e+01 -2 -3 1601 184. - - -3.9058533310890198e-01 6.3270717859268188e-01 - 7.7843767404556274e-01 -4.2521533370018005e-01 - <_> - 6.0343318939208984e+01 - - 1 2 1602 1.5000000000000000e+00 0 -1 1603 - 2.9250000000000000e+02 -2 -3 1604 1.8500000000000000e+01 - - 6.1905455589294434e-01 -8.7556785345077515e-01 - 9.3074835836887360e-02 -6.4517015218734741e-01 - <_> - 6.0081771850585938e+01 - - 1 2 1605 5.0000000000000000e-01 0 -1 1606 - 6.9450000000000000e+02 -2 -3 1607 4.3500000000000000e+01 - - -2.6154583692550659e-01 4.7799167037010193e-01 - -5.8910161256790161e-01 6.0072517395019531e-01 - <_> - 6.0815013885498047e+01 - - 1 2 1608 2.5000000000000000e+00 0 -1 1609 - 9.5000000000000000e+00 -2 -3 1610 1.5000000000000000e+00 - - -5.3109228610992432e-01 7.3323935270309448e-01 - 2.7432879805564880e-01 -4.7720876336097717e-01 - <_> - 6.1090702056884766e+01 - - 1 2 1611 4.5000000000000000e+00 0 -1 1612 3598. -2 -3 1613 - 2.6500000000000000e+01 - - 3.3982020616531372e-01 -8.5344749689102173e-01 - -7.6124453544616699e-01 2.7569055557250977e-01 - <_> - 6.1016242980957031e+01 - - 1 2 1614 2039. 0 -1 1615 1.3715000000000000e+03 -2 -3 1616 - 6.8500000000000000e+01 - - -7.4461504817008972e-02 7.2212553024291992e-01 - -9.3716764450073242e-01 7.9280626773834229e-01 - <_> - 6.1511177062988281e+01 - - 1 2 1617 1.5500000000000000e+01 0 -1 1618 - 2.7850000000000000e+02 -2 -3 1619 3.6500000000000000e+01 - - 4.9493625760078430e-01 -1.4364461600780487e-01 - -7.4662274122238159e-01 1.7349389195442200e-01 - <_> - 6.1308986663818359e+01 - - 1 2 1620 509. 0 -1 1621 7.8850000000000000e+02 -2 -3 1622 - 1.3385000000000000e+03 - - 1. -8.4440898895263672e-01 -2.0219227671623230e-01 - 3.7608841061592102e-01 - <_> - 6.1725578308105469e+01 - - 1 2 1623 5.0000000000000000e-01 0 -1 1624 - 3.5000000000000000e+00 -2 -3 1625 9.6850000000000000e+02 - - -8.8042527437210083e-01 4.1659390926361084e-01 - -3.2863637804985046e-01 9.1594344377517700e-01 - <_> - 6.1604068756103516e+01 - - 1 2 1626 1.1500000000000000e+01 0 -1 1627 - 1.0950000000000000e+02 -2 -3 1628 5.0000000000000000e-01 - - 3.1871238350868225e-01 -5.2247148752212524e-01 - 4.1599029302597046e-01 -7.9632645845413208e-01 - <_> - 6.1932075500488281e+01 - - 1 2 1629 9.5000000000000000e+00 0 -1 1630 219. -2 -3 1631 - 4.5000000000000000e+00 - - -5.8585010468959808e-02 -7.9883521795272827e-01 - -8.0256676673889160e-01 3.2800525426864624e-01 - <_> - 6.2076450347900391e+01 - - 1 2 1632 1.3850000000000000e+02 0 -1 1633 - 3.5000000000000000e+00 -2 -3 1634 5.6350000000000000e+02 - - -6.1192250251770020e-01 3.7852096557617188e-01 - 4.3628749251365662e-01 -4.0311765670776367e-01 - <_> - 6.2020500183105469e+01 - - 1 2 1635 5.6500000000000000e+01 0 -1 1636 - 9.5000000000000000e+00 -2 -3 1637 1.4245000000000000e+03 - - -5.1858995109796524e-02 -8.9690828323364258e-01 - -2.6840057969093323e-01 4.4323852658271790e-01 - <_> - 6.1941585540771484e+01 - - 1 2 1638 5.0000000000000000e-01 0 -1 1639 9. -2 -3 1640 - 7.5000000000000000e+00 - - 1. -1. 6.7882001399993896e-01 -7.8914739191532135e-02 - <_> - 6.2187667846679688e+01 - - 1 2 1641 1.5000000000000000e+00 0 -1 1642 62. -2 -3 1643 - 2.8500000000000000e+01 - - 2.4608352780342102e-01 -8.4340018033981323e-01 - -6.7122465372085571e-01 3.1627139449119568e-01 - <_> - 6.2444705963134766e+01 - - 1 2 1644 2.5000000000000000e+00 0 -1 1645 - 2.8395000000000000e+03 -2 -3 1646 3.7950000000000000e+02 - - 4.3465691804885864e-01 -8.7070471048355103e-01 - -4.0003356337547302e-01 2.5703859329223633e-01 - <_> - 6.2706104278564453e+01 - - 1 2 1647 1.5000000000000000e+00 0 -1 1648 - 2.6550000000000000e+02 -2 -3 1649 2.1605000000000000e+03 - - 7.4084126949310303e-01 -5.8476543426513672e-01 - 3.2751929759979248e-01 -6.7271316051483154e-01 - <_> - 6.2585681915283203e+01 - - 1 2 1650 5.6500000000000000e+01 0 -1 1651 - 2.7500000000000000e+01 -2 -3 1652 3.4500000000000000e+01 - - -5.1114237308502197e-01 4.1461613774299622e-01 - 5.1251345872879028e-01 -4.7370293736457825e-01 - <_> - 6.2783508300781250e+01 - - 1 2 1653 5.3500000000000000e+01 0 -1 1654 2387. -2 -3 1655 - 1.0785000000000000e+03 - - 1.9782398641109467e-01 -4.3944674730300903e-01 - -8.3261007070541382e-01 6.3095438480377197e-01 - <_> - 6.2716720581054688e+01 - - 1 2 1656 5.5000000000000000e+00 0 -1 1657 - 4.5000000000000000e+00 -2 -3 1658 9.6500000000000000e+01 - - -6.7844653129577637e-01 4.0278115868568420e-01 - 3.6051991581916809e-01 -4.8275879025459290e-01 - <_> - 6.2472888946533203e+01 - - 1 2 1659 3.0500000000000000e+01 0 -1 1660 8368. -2 -3 1661 - 1.3500000000000000e+01 - - -5.5116344243288040e-02 -9.4818419218063354e-01 - 4.0040487051010132e-01 -3.5688531398773193e-01 - <_> - 6.2881244659423828e+01 - - 1 2 1662 1.5000000000000000e+00 0 -1 1663 - 3.5500000000000000e+01 -2 -3 1664 2.3500000000000000e+01 - - 1. -9.0177541971206665e-01 4.0835642814636230e-01 - -1.8136456608772278e-01 - <_> - 6.3022640228271484e+01 - - 1 2 1665 8.5000000000000000e+00 0 -1 1666 - 1.9500000000000000e+01 -2 -3 1667 2.0500000000000000e+01 - - -7.6577585935592651e-01 7.7897077798843384e-01 - -5.0283867120742798e-01 2.9658859968185425e-01 - <_> - 6.3449874877929688e+01 - - 1 2 1668 8.3950000000000000e+02 0 -1 1669 - 1.1335000000000000e+03 -2 -3 1670 2.5000000000000000e+00 - - -6.2557518482208252e-01 4.2723217606544495e-01 - -8.2576507329940796e-01 -1.0434284806251526e-01 - <_> - 6.3252624511718750e+01 - - 1 2 1671 139. 0 -1 1672 5.0000000000000000e-01 -2 -3 1673 - 2.0500000000000000e+01 - - 4.1489660739898682e-01 -1.9724959135055542e-01 - -8.4620368480682373e-01 3.6422318220138550e-01 - <_> - 6.3265483856201172e+01 - - 1 2 1674 6.2150000000000000e+02 0 -1 1675 2672. -2 -3 1676 - 1.5000000000000000e+00 - - 1.2861014343798161e-02 -9.1588306427001953e-01 - -8.4077650308609009e-01 9.4888907670974731e-01 - <_> - 6.3836368560791016e+01 - - 1 2 1677 3.5000000000000000e+00 0 -1 1678 - 2.8950000000000000e+02 -2 -3 1679 7.5000000000000000e+00 - - -5.7555305957794189e-01 2.2934845089912415e-01 - 5.7088255882263184e-01 -1.5547750890254974e-01 - <_> - 6.3863594055175781e+01 - - 1 2 1680 2.5000000000000000e+00 0 -1 1681 - 5.5000000000000000e+00 -2 -3 1682 3.5000000000000000e+00 - - -9.2342543601989746e-01 1. 2.6264595985412598e-01 - -4.0114754438400269e-01 - <_> - 6.3550628662109375e+01 - - 1 2 1683 2.7850000000000000e+02 0 -1 1684 - 4.8250000000000000e+02 -2 -3 1685 3.4155000000000000e+03 - - -6.6107988357543945e-01 5.0213998556137085e-01 - 2.4799732863903046e-01 -9.5342993736267090e-01 - <_> - 6.3861141204833984e+01 - - 1 2 1686 1.2135000000000000e+03 0 -1 1687 - 1.3565000000000000e+03 -2 -3 1688 2.6500000000000000e+01 - - -4.3651562929153442e-01 9.3487417697906494e-01 - -2.5045010447502136e-01 6.4042550325393677e-01 - <_> - 6.3451419830322266e+01 - - 1 2 1689 3.0550000000000000e+02 0 -1 1690 - 2.0865000000000000e+03 -2 -3 1691 1.1500000000000000e+01 - - -5.3299653530120850e-01 6.8890345096588135e-01 - -7.7928084135055542e-01 3.3616758882999420e-02 - <_> - 6.3891139984130859e+01 - - 1 2 1692 1.4500000000000000e+01 0 -1 1693 1392. -2 -3 1694 - 2.1500000000000000e+01 - - -6.9326841831207275e-01 4.3972003459930420e-01 - -5.9055811166763306e-01 1.4402525126934052e-01 - <_> - 6.4478630065917969e+01 - - 1 2 1695 5.0000000000000000e-01 0 -1 1696 - 1.5000000000000000e+00 -2 -3 1697 819. - - -6.1571627855300903e-01 5.8748626708984375e-01 - -4.1089773178100586e-01 5.4873436689376831e-01 - <_> - 6.4206130981445312e+01 - - 1 2 1698 8.6650000000000000e+02 0 -1 1699 - 3.4500000000000000e+01 -2 -3 1700 1.0185000000000000e+03 - - -2.7249464392662048e-01 3.9035290479660034e-01 - 3.8879543542861938e-01 -8.3664953708648682e-01 - <_> - 6.4592948913574219e+01 - - 1 2 1701 9.7500000000000000e+01 0 -1 1702 - 9.5500000000000000e+01 -2 -3 1703 5.3500000000000000e+01 - - -2.3947530984878540e-01 8.5832071304321289e-01 - -3.9922302961349487e-01 3.0327111482620239e-01 - <_> - 6.4378982543945312e+01 - - 1 2 1704 5.0000000000000000e-01 0 -1 1705 - 2.5000000000000000e+00 -2 -3 1706 1.5755000000000000e+03 - - -2.9975247383117676e-01 5.9291505813598633e-01 - 9.0688472986221313e-01 -3.4945115447044373e-01 - <_> - 6.4591911315917969e+01 - - 1 2 1707 4.4050000000000000e+02 0 -1 1708 - 5.0500000000000000e+01 -2 -3 1709 5.5000000000000000e+00 - - 2.1292972564697266e-01 -9.1971194744110107e-01 - 5.7173824310302734e-01 -9.4372731447219849e-01 - <_> - 6.4826133728027344e+01 - - 1 2 1710 1.5000000000000000e+00 0 -1 1711 442. -2 -3 1712 - 5.5250000000000000e+02 - - 2.2733847796916962e-01 -7.3592525720596313e-01 - -5.2650618553161621e-01 2.3422205448150635e-01 - <_> - 6.5069717407226562e+01 - - 1 2 1713 8.5000000000000000e+00 0 -1 1714 - 8.5000000000000000e+00 -2 -3 1715 3.1500000000000000e+01 - - 4.5332247018814087e-01 -8.6987191438674927e-01 - 2.3650217056274414e-01 -5.0223588943481445e-01 - <_> - 6.5310997009277344e+01 - - 1 2 1716 9.5000000000000000e+00 0 -1 1717 - 1.1500000000000000e+01 -2 -3 1718 203. - - -9.7941344976425171e-01 3.6707261204719543e-01 - 3.1545862555503845e-02 -8.0945146083831787e-01 - <_> - 6.5503784179687500e+01 - - 1 2 1719 7.2350000000000000e+02 0 -1 1720 - 6.7950000000000000e+02 -2 -3 1721 4.1850000000000000e+02 - - -7.2629940509796143e-01 1.9278171658515930e-01 - 5.3028446435928345e-01 -9.3524670600891113e-01 - <_> - 6.5250198364257812e+01 - - 1 2 1722 1.2500000000000000e+01 0 -1 1723 - 8.0650000000000000e+02 -2 -3 1724 2.5000000000000000e+00 - - 7.5862687826156616e-01 -4.6297156810760498e-01 - -7.5136619806289673e-01 3.6253631114959717e-01 - <_> - 6.5528388977050781e+01 - - 1 2 1725 9.4500000000000000e+01 0 -1 1726 - 4.8500000000000000e+01 -2 -3 1727 19. - - -6.7188930511474609e-01 6.1620616912841797e-01 - 2.7818998694419861e-01 -8.1198740005493164e-01 - <_> - 6.5322471618652344e+01 - - 1 2 1728 5.0000000000000000e-01 0 -1 1729 - 2.2500000000000000e+01 -2 -3 1730 8.3350000000000000e+02 - - 4.7361961007118225e-01 -9.5221102237701416e-01 - 1.1696549504995346e-01 -5.4392391443252563e-01 - <_> - 6.5620056152343750e+01 - - 1 2 1731 4.9500000000000000e+01 0 -1 1732 946. -2 -3 1733 - 4.8150000000000000e+02 - - 6.7783489823341370e-02 -7.3351651430130005e-01 - -9.0184271335601807e-02 5.8411657810211182e-01 - <_> - 6.5868316650390625e+01 - - 1 2 1734 1.2950000000000000e+02 0 -1 1735 - 2.5000000000000000e+00 -2 -3 1736 4.0650000000000000e+02 - - -5.2412188053131104e-01 2.4825538694858551e-01 - -9.9130809307098389e-01 8.9735072851181030e-01 - <_> - 6.5986862182617188e+01 - - 1 2 1737 4.5000000000000000e+00 0 -1 1738 - 5.0000000000000000e-01 -2 -3 1739 2.0500000000000000e+01 - - -8.2515478134155273e-01 1.1854794621467590e-01 - -6.7809820175170898e-01 2.4897077679634094e-01 - <_> - 6.5959693908691406e+01 - - 1 2 1740 3.8500000000000000e+01 0 -1 1741 - 5.0000000000000000e-01 -2 -3 1742 1.0050000000000000e+02 - - 6.0215097665786743e-01 -2.5286811590194702e-01 - -6.4079183340072632e-01 8.4301076829433441e-02 - <_> - 6.6134086608886719e+01 - - 1 2 1743 8.2500000000000000e+01 0 -1 1744 - 3.5000000000000000e+00 -2 -3 1745 1.9500000000000000e+01 - - -6.8188738822937012e-01 1.7439460754394531e-01 - -9.2948049306869507e-01 1. - <_> - 6.6361648559570312e+01 - - 1 2 1746 814. 0 -1 1747 1.9500000000000000e+01 -2 -3 1748 - 1.0500000000000000e+01 - - -9.7682356834411621e-01 7.5955659151077271e-01 - 2.2756047546863556e-01 -3.8351824879646301e-01 - <_> - 6.6531791687011719e+01 - - 1 2 1749 1308. 0 -1 1750 6.5000000000000000e+00 -2 -3 1751 - 5.0000000000000000e-01 - - 1.7014220356941223e-01 -5.7149434089660645e-01 - 7.9037719964981079e-01 -9.5655971765518188e-01 - <_> - 6.6605209350585938e+01 - - 1 2 1752 3.6500000000000000e+01 0 -1 1753 - 5.0000000000000000e-01 -2 -3 1754 2.5150000000000000e+02 - - 6.6666525602340698e-01 -8.1346422433853149e-01 - 1.6785284876823425e-01 -6.6657412052154541e-01 - <_> - 6.6571502685546875e+01 - - 1 2 1755 1.9500000000000000e+01 0 -1 1756 - 8.0500000000000000e+01 -2 -3 1757 1.5000000000000000e+00 - - -3.3701382577419281e-02 -7.4847251176834106e-01 - -7.7443891763687134e-01 6.1074006557464600e-01 - <_> - 6.6785156250000000e+01 - - 1 2 1758 2.5000000000000000e+00 0 -1 1759 43. -2 -3 1760 - 1.0015000000000000e+03 - - -8.5154837369918823e-01 8.3069330453872681e-01 - 2.1365079283714294e-01 -5.7956165075302124e-01 - <_> - 6.6786399841308594e+01 - - 1 2 1761 1.9050000000000000e+02 0 -1 1762 - 1.0535000000000000e+03 -2 -3 1763 2.4500000000000000e+01 - - 4.5784974098205566e-01 -5.2838063240051270e-01 - 3.2312652468681335e-01 -6.2864887714385986e-01 - <_> - 6.7081779479980469e+01 - - 1 2 1764 1.7500000000000000e+01 0 -1 1765 - 5.5000000000000000e+00 -2 -3 1766 2.1500000000000000e+01 - - -6.3773536682128906e-01 8.6540682241320610e-03 - -7.6469355821609497e-01 5.3673422336578369e-01 - <_> - 6.7328659057617188e+01 - - 1 2 1767 2.7450000000000000e+02 0 -1 1768 - 2.5000000000000000e+00 -2 -3 1769 1.2350000000000000e+02 - - 1.8835125863552094e-01 -8.5055798292160034e-01 - 2.4687612056732178e-01 -7.6298141479492188e-01 - <_> - 6.7479103088378906e+01 - - 1 2 1770 3.2325000000000000e+03 0 -1 1771 - 4.3250000000000000e+02 -2 -3 1772 2.2500000000000000e+01 - - 1.5044631063938141e-01 -5.9252446889877319e-01 - 7.3350501060485840e-01 -3.6927312612533569e-01 - <_> - 6.7486915588378906e+01 - - 1 2 1773 4.3500000000000000e+01 0 -1 1774 - 2.5265000000000000e+03 -2 -3 1775 1.0500000000000000e+01 - - 7.8096417710185051e-03 -8.9472562074661255e-01 - -5.6938666105270386e-01 4.1206309199333191e-01 - <_> - 6.7184608459472656e+01 - - 1 2 1776 1.2500000000000000e+01 0 -1 1777 - 3.5500000000000000e+01 -2 -3 1778 1.7500000000000000e+01 - - -4.4249776005744934e-01 2.9335400462150574e-01 - -6.3165670633316040e-01 7.5325357913970947e-01 - <_> - 6.7494506835937500e+01 - - 1 2 1779 3.7650000000000000e+02 0 -1 1780 - 5.0000000000000000e-01 -2 -3 1781 3.9500000000000000e+01 - - 5.2761709690093994e-01 -7.7626377344131470e-01 - -3.4604665637016296e-01 3.2856348156929016e-01 - <_> - 6.7218788146972656e+01 - - 1 2 1782 5.0000000000000000e-01 0 -1 1783 3854. -2 -3 1784 - 9.9650000000000000e+02 - - -7.3792868852615356e-01 7.5467681884765625e-01 - -2.9438218474388123e-01 5.6371760368347168e-01 - <_> - 6.7561782836914062e+01 - - 1 2 1785 1.6365000000000000e+03 0 -1 1786 - 5.5000000000000000e+00 -2 -3 1787 2.7500000000000000e+01 - - -6.1908555030822754e-01 3.4299522638320923e-01 - -8.5923063755035400e-01 2.6721331477165222e-01 - <_> - 6.7637489318847656e+01 - - 1 2 1788 5.5500000000000000e+01 0 -1 1789 - 2.5000000000000000e+00 -2 -3 1790 5.8500000000000000e+01 - - -9.7663235664367676e-01 7.0542359352111816e-01 - -6.2124180793762207e-01 1.0107668116688728e-02 - <_> - 6.7872940063476562e+01 - - 1 2 1791 1.1435000000000000e+03 0 -1 1792 - 8.4500000000000000e+01 -2 -3 1793 1.5000000000000000e+00 - - 2.3545160889625549e-01 -7.6414716243743896e-01 - 4.4412618875503540e-01 -9.5045959949493408e-01 - <_> - 6.8379867553710938e+01 - - 1 2 1794 5.0000000000000000e-01 0 -1 1795 - 3.5000000000000000e+00 -2 -3 1796 7.5000000000000000e+00 - - 5.0692296028137207e-01 -5.1141291856765747e-01 - -7.6778936386108398e-01 -6.7547991871833801e-02 - <_> - 6.8707763671875000e+01 - - 1 2 1797 1.3500000000000000e+01 0 -1 1798 - 4.5000000000000000e+00 -2 -3 1799 6.5500000000000000e+01 - - -7.2192513942718506e-01 4.4987043738365173e-01 - 3.2790130376815796e-01 -4.7422546148300171e-01 - <_> - 6.8286819458007812e+01 - - 1 2 1800 3.1500000000000000e+01 0 -1 1801 - 1.1415000000000000e+03 -2 -3 1802 1.5500000000000000e+01 - - -4.2094790935516357e-01 2.4803330004215240e-01 -1. 1. - <_> - 6.8052871704101562e+01 - - 1 2 1803 3.8850000000000000e+02 0 -1 1804 - 5.5945000000000000e+03 -2 -3 1805 8.5000000000000000e+00 - - -1. 9.7139048576354980e-01 -3.3056256175041199e-01 - 2.6478901505470276e-01 - <_> - 6.8410385131835938e+01 - - 1 2 1806 5.0000000000000000e-01 0 -1 1807 - 1.5000000000000000e+00 -2 -3 1808 75. - - -5.0366848707199097e-01 4.0760627388954163e-01 - 4.9484097957611084e-01 -6.4907956123352051e-01 - <_> - 6.8928771972656250e+01 - - 1 2 1809 1.2250000000000000e+02 0 -1 1810 - 7.5000000000000000e+00 -2 -3 1811 6.6500000000000000e+01 - - -7.0449191331863403e-01 9.7664463520050049e-01 - -3.6998346447944641e-01 2.0591719448566437e-01 - <_> - 6.9253982543945312e+01 - - 1 2 1812 1.0250000000000000e+02 0 -1 1813 - 3.5000000000000000e+00 -2 -3 1814 3.1250000000000000e+02 - - -8.1731587648391724e-01 3.2521212100982666e-01 - 3.7988114356994629e-01 -6.4639246463775635e-01 - <_> - 6.9205451965332031e+01 - - 1 2 1815 1.2050000000000000e+02 0 -1 1816 - 6.0500000000000000e+01 -2 -3 1817 8.5000000000000000e+00 - - -4.8533525317907333e-02 8.4871995449066162e-01 1. -1. - <_> - 6.9166992187500000e+01 - - 1 2 1818 5.0000000000000000e-01 0 -1 1819 - 4.2550000000000000e+02 -2 -3 1820 1.1500000000000000e+01 - - 4.8487004637718201e-01 -5.4979419708251953e-01 - -4.2108422517776489e-01 4.5939767360687256e-01 - <_> - 6.9126815795898438e+01 - - 1 2 1821 5.8150000000000000e+02 0 -1 1822 - 3.5500000000000000e+01 -2 -3 1823 9.7500000000000000e+01 - - 4.9901461601257324e-01 -8.1184327602386475e-01 - 5.8108931779861450e-01 -6.8361051380634308e-02 - <_> - 6.9228797912597656e+01 - - 1 2 1824 8.5000000000000000e+00 0 -1 1825 - 1.2500000000000000e+01 -2 -3 1826 8.3500000000000000e+01 - - -6.4501130580902100e-01 2.3137541115283966e-01 - 3.7868604063987732e-01 -4.4107386469841003e-01 - <_> - 6.9378318786621094e+01 - - 1 2 1827 5.0000000000000000e-01 0 -1 1828 - 4.9500000000000000e+01 -2 -3 1829 2.2500000000000000e+01 - - 4.1642808914184570e-01 -7.8047537803649902e-01 - -7.4845105409622192e-01 1.1628971993923187e-01 - <_> - 6.9186073303222656e+01 - - 1 2 1830 2.7050000000000000e+02 0 -1 1831 45. -2 -3 1832 - 1.0500000000000000e+01 - - 1. -9.4139373302459717e-01 -1.9224344193935394e-01 - 4.3496173620223999e-01 - <_> - 6.9486175537109375e+01 - - 1 2 1833 1.4050000000000000e+02 0 -1 1834 - 1.5000000000000000e+00 -2 -3 1835 5.5500000000000000e+01 - - -7.3685461282730103e-01 3.0009758472442627e-01 - -6.2791568040847778e-01 2.8461813926696777e-01 - <_> - 6.9622322082519531e+01 - - 1 2 1836 1.0500000000000000e+01 0 -1 1837 - 9.6550000000000000e+02 -2 -3 1838 1.5000000000000000e+00 - - -7.7085101604461670e-01 4.4815340638160706e-01 - 6.2162548303604126e-01 -4.0746492147445679e-01 - <_> - 6.9615928649902344e+01 - - 1 2 1839 1.4500000000000000e+01 0 -1 1840 - 4.0150000000000000e+02 -2 -3 1841 53. - - 6.2382644414901733e-01 -3.1839877367019653e-01 - 5.9402352571487427e-01 -7.7672713994979858e-01 - <_> - 6.9581390380859375e+01 - - 1 2 1842 1.9050000000000000e+02 0 -1 1843 - 1.9350000000000000e+02 -2 -3 1844 6.5000000000000000e+00 - - -6.6475450992584229e-01 3.9425066113471985e-01 - -2.0569822192192078e-01 4.3429613113403320e-01 - <_> - 6.9716117858886719e+01 - - 1 2 1845 1.1500000000000000e+01 0 -1 1846 - 2.5000000000000000e+00 -2 -3 1847 1.5000000000000000e+00 - - -3.3410567045211792e-01 3.6131811141967773e-01 - 3.8923510909080505e-01 -7.3655128479003906e-01 - <_> - 6.9997550964355469e+01 - - 1 2 1848 2.8500000000000000e+01 0 -1 1849 - 1.5000000000000000e+00 -2 -3 1850 2.6500000000000000e+01 - - -4.0613466501235962e-01 2.8143337368965149e-01 - -9.6434587240219116e-01 5.6036943197250366e-01 - <_> - 6.9693450927734375e+01 - - 1 2 1851 2.0350000000000000e+02 0 -1 1852 - 9.9350000000000000e+02 -2 -3 1853 2.2500000000000000e+01 - - 6.5412253141403198e-01 -6.5566647052764893e-01 - -5.3069335222244263e-01 1.0198003053665161e-01 - <_> - 6.9937568664550781e+01 - - 1 2 1854 2.5785000000000000e+03 0 -1 1855 - 2.5000000000000000e+00 -2 -3 1856 5.0000000000000000e-01 - - -5.7543450593948364e-01 2.4412074685096741e-01 1. - -9.1257572174072266e-01 - <_> - 7.0639808654785156e+01 - - 1 2 1857 5.7750000000000000e+02 0 -1 1858 - 4.6500000000000000e+01 -2 -3 1859 1.3150000000000000e+02 - - 7.8946912288665771e-01 -3.5598552227020264e-01 - 6.2578904628753662e-01 -5.0993841886520386e-01 - <_> - 7.0555007934570312e+01 - - 1 2 1860 5.0000000000000000e-01 0 -1 1861 16. -2 -3 1862 - 5.0000000000000000e-01 - - -9.4747436046600342e-01 1. 4.5841571688652039e-01 - -1.7203371226787567e-01 - <_> - 7.0579658508300781e+01 - - 1 2 1863 1.0250000000000000e+02 0 -1 1864 - 1.0500000000000000e+01 -2 -3 1865 1.3550000000000000e+02 - - -7.5043040513992310e-01 -1.3392960652709007e-02 - -5.0063830614089966e-01 4.7692352533340454e-01 - <_> - 7.0888481140136719e+01 - - 1 2 1866 5.0000000000000000e-01 0 -1 1867 - 2.9500000000000000e+01 -2 -3 1868 8.0550000000000000e+02 - - 3.0881932377815247e-01 -8.9407527446746826e-01 - 7.8238004446029663e-01 -5.9828531742095947e-01 - <_> - 7.0740913391113281e+01 - - 1 2 1869 1.2150000000000000e+02 0 -1 1870 - 2.4500000000000000e+01 -2 -3 1871 3.0500000000000000e+01 - - -2.3594596982002258e-01 6.2877231836318970e-01 - -4.9541813135147095e-01 3.6229962110519409e-01 - <_> - 7.1206985473632812e+01 - - 1 2 1872 3.5000000000000000e+00 0 -1 1873 - 1.4275000000000000e+03 -2 -3 1874 2.2500000000000000e+01 - - -9.9479568004608154e-01 3.8346680998802185e-01 - 4.6607276797294617e-01 -1.8312121927738190e-01 - <_> - 7.1451019287109375e+01 - - 1 2 1875 1.8500000000000000e+01 0 -1 1876 65. -2 -3 1877 - 2.5000000000000000e+00 - - -7.7731359004974365e-01 9.2451179027557373e-01 - -5.7414340972900391e-01 2.4403360486030579e-01 - <_> - 7.0688819885253906e+01 - - 1 2 1878 1.5000000000000000e+00 0 -1 1879 - 1.5250000000000000e+02 -2 -3 1880 5.5000000000000000e+00 - - 3.6112758517265320e-01 -5.4053640365600586e-01 - -4.3820820748806000e-02 -7.6219600439071655e-01 - <_> - 7.1147773742675781e+01 - - 1 2 1881 4.1500000000000000e+01 0 -1 1882 - 1.7500000000000000e+01 -2 -3 1883 4.1250000000000000e+02 - - -4.4425949454307556e-01 6.3956463336944580e-01 - -4.9368324875831604e-01 4.5895308256149292e-01 - <_> - 7.1452705383300781e+01 - - 1 2 1884 1.4325000000000000e+03 0 -1 1885 - 1.7500000000000000e+01 -2 -3 1886 23. - - -9.5096543431282043e-02 5.0955659151077271e-01 - -8.3886599540710449e-01 8.5678941011428833e-01 - <_> - 7.1636161804199219e+01 - - 1 2 1887 1.2050000000000000e+02 0 -1 1888 - 8.0050000000000000e+02 -2 -3 1889 1716. - - -6.7043030261993408e-01 1.8345704674720764e-01 - -9.0125375986099243e-01 1. - <_> - 7.1818664550781250e+01 - - 1 2 1890 1.5000000000000000e+00 0 -1 1891 - 5.0000000000000000e-01 -2 -3 1892 808. - - 1.8249766528606415e-01 -5.5717653036117554e-01 -1. - 4.4042342901229858e-01 - <_> - 7.2026985168457031e+01 - - 1 2 1893 3.5000000000000000e+00 0 -1 1894 8. -2 -3 1895 - 2.5000000000000000e+00 - - -9.3179380893707275e-01 1. 2.0832556486129761e-01 - -5.2329808473587036e-01 - <_> - 7.1846588134765625e+01 - - 1 2 1896 1.1950000000000000e+02 0 -1 1897 - 1.9500000000000000e+01 -2 -3 1898 2.8450000000000000e+02 - - -1.8040254712104797e-01 6.0258209705352783e-01 - 5.5354207754135132e-01 -7.1650350093841553e-01 - <_> - 7.1900581359863281e+01 - - 1 2 1899 9.0450000000000000e+02 0 -1 1900 266. -2 -3 1901 - 2.5000000000000000e+00 - - 7.8607088327407837e-01 -7.7522158622741699e-01 - -2.7132809162139893e-01 3.9066424965858459e-01 - <_> - 7.2254920959472656e+01 - - 1 2 1902 1.4500000000000000e+01 0 -1 1903 - 7.5850000000000000e+02 -2 -3 1904 1.3500000000000000e+01 - - -4.3261140584945679e-01 3.5433784127235413e-01 - 2.6537308096885681e-01 -7.9342633485794067e-01 - <_> - 7.2434974670410156e+01 - - 1 2 1905 3.4445000000000000e+03 0 -1 1906 - 2.5000000000000000e+00 -2 -3 1907 5.9500000000000000e+01 - - -6.8569511175155640e-01 1.8006032705307007e-01 - -9.2150622606277466e-01 1. - <_> - 7.2396644592285156e+01 - - 1 2 1908 1.5000000000000000e+00 0 -1 1909 - 2.1500000000000000e+01 -2 -3 1910 1.1500000000000000e+01 - - -3.7500020861625671e-01 4.5450302958488464e-01 - -5.1121622323989868e-01 7.1714913845062256e-01 - <_> - 7.1966697692871094e+01 - - 1 2 1911 3.5500000000000000e+01 0 -1 1912 - 1.6975000000000000e+03 -2 -3 1913 9.5000000000000000e+00 - - 6.2354284524917603e-01 -5.5644631385803223e-01 - -6.0473889112472534e-01 1.6627989709377289e-01 - <_> - 7.2265373229980469e+01 - - 1 2 1914 1.5000000000000000e+00 0 -1 1915 2029. -2 -3 1916 - 165. - - -7.3123896121978760e-01 7.1832627058029175e-01 - 2.9867425560951233e-01 -6.3333243131637573e-01 - <_> - 7.2611221313476562e+01 - - 1 2 1917 7.5000000000000000e+00 0 -1 1918 - 4.9500000000000000e+01 -2 -3 1919 2.3500000000000000e+01 - - -8.9519095420837402e-01 8.1671148538589478e-01 - 4.5284107327461243e-01 -1.4600232243537903e-01 - <_> - 7.3058769226074219e+01 - - 1 2 1920 7.5000000000000000e+00 0 -1 1921 - 6.5000000000000000e+00 -2 -3 1922 4.0500000000000000e+01 - - 8.6240917444229126e-02 -6.9517636299133301e-01 - 4.4754931330680847e-01 -4.5200899243354797e-01 - <_> - 7.3110542297363281e+01 - - 1 2 1923 1.7815000000000000e+03 0 -1 1924 - 1.0005000000000000e+03 -2 -3 1925 3.2945000000000000e+03 - - -8.3461540937423706e-01 9.6288299560546875e-01 - 8.1745308637619019e-01 -5.5225487798452377e-02 - <_> - 7.2996879577636719e+01 - - 1 2 1926 7.5000000000000000e+00 0 -1 1927 - 6.5000000000000000e+00 -2 -3 1928 3.8050000000000000e+02 - - -6.8741214275360107e-01 8.4089756011962891e-01 - -3.3457726240158081e-01 3.7242683768272400e-01 - <_> - 7.3333457946777344e+01 - - 1 2 1929 1.4500000000000000e+01 0 -1 1930 - 2.7500000000000000e+01 -2 -3 1931 2.5500000000000000e+01 - - 3.3657467365264893e-01 -5.5885529518127441e-01 - -7.7352440357208252e-01 7.2826080024242401e-02 - <_> - 7.2824409484863281e+01 - - 1 2 1932 5.5000000000000000e+00 0 -1 1933 - 4.8550000000000000e+02 -2 -3 1934 9.5000000000000000e+00 - - -5.0904840230941772e-01 5.5190944671630859e-01 - -4.8847538232803345e-01 3.6895498633384705e-01 - <_> - 7.3038925170898438e+01 - - 1 2 1935 1.5595000000000000e+03 0 -1 1936 - 2.0500000000000000e+01 -2 -3 1937 2.9500000000000000e+01 - - -3.6917760968208313e-01 3.1854984164237976e-01 - -8.7062478065490723e-01 4.9816086888313293e-01 - <_> - 7.3263801574707031e+01 - - 1 2 1938 1.0015000000000000e+03 0 -1 1939 - 1.5000000000000000e+00 -2 -3 1940 2974. - - -7.0936071872711182e-01 2.2487121820449829e-01 - -8.8643109798431396e-01 7.1286094188690186e-01 - <_> - 7.3553604125976562e+01 - - 1 2 1941 2.5000000000000000e+00 0 -1 1942 - 3.4150000000000000e+02 -2 -3 1943 1173. - - 2.8980860114097595e-01 -6.4726233482360840e-01 - -6.5974622964859009e-01 5.0034427642822266e-01 - <_> - 7.4105926513671875e+01 - - 1 2 1944 1.6585000000000000e+03 0 -1 1945 - 6.7550000000000000e+02 -2 -3 1946 2.2500000000000000e+01 - - -6.1926132440567017e-01 5.5879336595535278e-01 - -6.7974144220352173e-01 1.0105973482131958e-01 - <_> - 7.4186531066894531e+01 - - 1 2 1947 1.1505000000000000e+03 0 -1 1948 - 4.5000000000000000e+00 -2 -3 1949 1.2500000000000000e+01 - - -6.8859964609146118e-01 7.4128083884716034e-02 - -8.4579437971115112e-01 4.9757060408592224e-01 - <_> - 7.4735351562500000e+01 - - 1 2 1950 3.2750000000000000e+02 0 -1 1951 440. -2 -3 1952 - 1255. - - -8.4635180234909058e-01 5.4881960153579712e-01 - -7.5777089595794678e-01 5.4926741868257523e-02 - <_> - 7.4681823730468750e+01 - - 1 2 1953 1.5000000000000000e+00 0 -1 1954 - 5.0500000000000000e+01 -2 -3 1955 5.6500000000000000e+01 - - -7.0232021808624268e-01 8.5282677412033081e-01 - 2.3205398023128510e-01 -8.8023269176483154e-01 - <_> - 7.4392105102539062e+01 - - 1 2 1956 7.5000000000000000e+00 0 -1 1957 - 3.9350000000000000e+02 -2 -3 1958 5.0000000000000000e-01 - - 1.9772809743881226e-01 -7.5726938247680664e-01 - 6.1714029312133789e-01 -8.7271124124526978e-02 - <_> - 7.4673728942871094e+01 - - 1 2 1959 1.5000000000000000e+00 0 -1 1960 - 1.1500000000000000e+01 -2 -3 1961 2.0555000000000000e+03 - - -4.9139803647994995e-01 3.7206640839576721e-01 - 4.2800930142402649e-01 -5.5887550115585327e-01 - <_> - 7.5367835998535156e+01 - - 1 2 1962 1.3650000000000000e+02 0 -1 1963 401. -2 -3 1964 - 7.1500000000000000e+01 - - -9.1597896814346313e-01 6.9410192966461182e-01 - -5.2255064249038696e-01 1.0558886826038361e-01 - <_> - 7.5788253784179688e+01 - - 1 2 1965 8.5000000000000000e+00 0 -1 1966 - 5.0000000000000000e-01 -2 -3 1967 6.0500000000000000e+01 - - -4.4586208462715149e-01 4.2041677236557007e-01 - -7.7125865221023560e-01 1.2018596753478050e-02 - <_> - 7.6069732666015625e+01 - - 1 2 1968 5.6850000000000000e+02 0 -1 1969 - 1.3500000000000000e+01 -2 -3 1970 5.7750000000000000e+02 - - -7.2104036808013916e-01 4.5175212621688843e-01 - 2.8147873282432556e-01 -5.9510231018066406e-01 - <_> - 7.6112258911132812e+01 - - 1 2 1971 5.5000000000000000e+00 0 -1 1972 - 5.5750000000000000e+02 -2 -3 1973 1147. - - -6.9539779424667358e-01 -4.7915484756231308e-02 - 4.5538648962974548e-01 -7.5604480504989624e-01 - <_> - 7.5756111145019531e+01 - - 1 2 1974 5.0000000000000000e-01 0 -1 1975 - 8.5000000000000000e+00 -2 -3 1976 2.5000000000000000e+00 - - -7.6900506019592285e-01 3.4268808364868164e-01 - 1.4950591325759888e-01 -7.2585535049438477e-01 - <_> - 7.6101287841796875e+01 - - 1 2 1977 2.1500000000000000e+01 0 -1 1978 - 3.7500000000000000e+01 -2 -3 1979 3.9500000000000000e+01 - - -3.3152681589126587e-01 3.4517920017242432e-01 - -7.0503693819046021e-01 9.6268767118453979e-01 - <_> - 7.6609313964843750e+01 - - 1 2 1980 1.0500000000000000e+01 0 -1 1981 - 1.2500000000000000e+01 -2 -3 1982 1.4500000000000000e+01 - - -3.1232813000679016e-01 5.2801662683486938e-01 - -6.8980258703231812e-01 4.3460644781589508e-02 - <_> - 7.6257461547851562e+01 - - 1 2 1983 1001. 0 -1 1984 3.5000000000000000e+00 -2 -3 1985 - 8.5000000000000000e+00 - - -1. 5.1140683889389038e-01 -6.1894029378890991e-01 - 9.8859548568725586e-02 - <_> - 7.6508773803710938e+01 - - 1 2 1986 1.3500000000000000e+01 0 -1 1987 - 5.5000000000000000e+00 -2 -3 1988 1.5000000000000000e+00 - - -7.8223472833633423e-01 9.0430533885955811e-01 - -7.6901417970657349e-01 2.5131115317344666e-01 - <_> - 7.6511230468750000e+01 - - 1 2 1989 2.3500000000000000e+01 0 -1 1990 - 7.7500000000000000e+01 -2 -3 1991 5.3500000000000000e+01 - - 2.4585875216871500e-03 -8.1063097715377808e-01 - 9.4792199134826660e-01 -8.4266769886016846e-01 - <_> - 7.7112556457519531e+01 - - 1 2 1992 9.5000000000000000e+00 0 -1 1993 - 1.5000000000000000e+00 -2 -3 1994 1.0500000000000000e+01 - - 7.8646227717399597e-02 -5.8706396818161011e-01 - 7.7305620908737183e-01 -8.0239242315292358e-01 - <_> - 7.6619277954101562e+01 - - 1 2 1995 3.9500000000000000e+01 0 -1 1996 - 1.2350000000000000e+02 -2 -3 1997 1.4750000000000000e+02 - - 3.2390201091766357e-01 -6.6501069068908691e-01 - 3.5864245891571045e-01 -8.1123942136764526e-01 - <_> - 7.7220901489257812e+01 - - 1 2 1998 5.4750000000000000e+02 0 -1 1999 - 5.5350000000000000e+02 -2 -3 2000 7.7450000000000000e+02 - - 6.3919067382812500e-01 -4.2759561538696289e-01 - -4.5995783805847168e-01 3.5977739095687866e-01 - <_> - 7.7378273010253906e+01 - - 1 2 2001 1.9615000000000000e+03 0 -1 2002 - 5.7550000000000000e+02 -2 -3 2003 16. - - -1.8090914189815521e-01 4.4383099675178528e-01 1. -1. - <_> - 7.6999313354492188e+01 - - 1 2 2004 4.5000000000000000e+00 0 -1 2005 - 2.5000000000000000e+00 -2 -3 2006 4.7500000000000000e+01 - - 6.8634140491485596e-01 -8.3962488174438477e-01 - -3.7895882129669189e-01 3.1631174683570862e-01 - <_> - 7.7379386901855469e+01 - - 1 2 2007 2.3500000000000000e+01 0 -1 2008 - 2.5000000000000000e+00 -2 -3 2009 635. - - -5.6043285131454468e-01 3.8007143139839172e-01 - 2.3420706391334534e-02 -8.1111401319503784e-01 - <_> - 7.7814773559570312e+01 - - 1 2 2010 5.0000000000000000e-01 0 -1 2011 - 2.9015000000000000e+03 -2 -3 2012 2.1500000000000000e+01 - - -4.2206180095672607e-01 4.5896497368812561e-01 - -8.3090221881866455e-01 -1.1289356648921967e-01 - <_> - 7.7731140136718750e+01 - - 1 2 2013 3.0050000000000000e+02 0 -1 2014 91. -2 -3 2015 - 1.3750000000000000e+02 - - -8.3637647330760956e-02 4.7793844342231750e-01 - 4.2891168594360352e-01 -9.1970837116241455e-01 - <_> - 7.7703033447265625e+01 - - 1 2 2016 6.5500000000000000e+01 0 -1 2017 - 4.6500000000000000e+01 -2 -3 2018 1.2500000000000000e+01 - - 8.9802670478820801e-01 -7.9725235700607300e-01 - 3.0849361419677734e-01 -3.1823581457138062e-01 - <_> - 7.7592445373535156e+01 - - 1 2 2019 1304. 0 -1 2020 5.0000000000000000e-01 -2 -3 2021 - 1.3550000000000000e+02 - - 1.2925930321216583e-01 -4.4718819856643677e-01 -1. - 9.2844516038894653e-01 - <_> - 7.7784370422363281e+01 - - 1 2 2022 5.2500000000000000e+01 0 -1 2023 669. -2 -3 2024 - 5.8050000000000000e+02 - - 1.9192789494991302e-01 -9.7164040803909302e-01 - -9.6615767478942871e-01 1. - <_> - 7.7990150451660156e+01 - - 1 2 2025 2.5000000000000000e+00 0 -1 2026 - 4.0650000000000000e+02 -2 -3 2027 4.5000000000000000e+00 - - 1.7283387482166290e-01 -9.0685445070266724e-01 - -8.3814066648483276e-01 2.0578315854072571e-01 - <_> - 7.8123832702636719e+01 - - 1 2 2028 5.1965000000000000e+03 0 -1 2029 - 3.5000000000000000e+00 -2 -3 2030 1.2500000000000000e+01 - - -7.2157174348831177e-01 1.3367784023284912e-01 - -9.8569130897521973e-01 1. - <_> - 7.7883827209472656e+01 - - 1 2 2031 5.5000000000000000e+00 0 -1 2032 - 6.5000000000000000e+00 -2 -3 2033 3718. - - -2.4000172317028046e-01 3.8893476128578186e-01 - -9.0298855304718018e-01 -3.4131843596696854e-02 - <_> - 7.8381683349609375e+01 - - 1 2 2034 5.5000000000000000e+00 0 -1 2035 329. -2 -3 2036 - 4.0575000000000000e+03 - - 4.9785295128822327e-01 -1.1255059391260147e-01 - -9.2938506603240967e-01 9.1427725553512573e-01 - <_> - 7.8554908752441406e+01 - - 1 2 2037 4.2500000000000000e+01 0 -1 2038 - 1.0875000000000000e+03 -2 -3 2039 8.3500000000000000e+01 - - 5.7865291833877563e-01 -9.1586309671401978e-01 - 1.7322470247745514e-01 -7.1539419889450073e-01 - <_> - 7.8587066650390625e+01 - - 1 2 2040 77. 0 -1 2041 5.6850000000000000e+02 -2 -3 2042 - 3.7500000000000000e+01 - - -5.7372999191284180e-01 3.2160468399524689e-02 - 9.6851015090942383e-01 -1. - <_> - 7.8467521667480469e+01 - - 1 2 2043 7.5000000000000000e+00 0 -1 2044 - 1.3500000000000000e+01 -2 -3 2045 3.0500000000000000e+01 - - -7.3381966352462769e-01 7.9535079002380371e-01 - -5.9684050083160400e-01 2.6625540852546692e-01 - <_> - 7.8986984252929688e+01 - - 1 2 2046 2.7950000000000000e+02 0 -1 2047 - 5.6050000000000000e+02 -2 -3 2048 3.2500000000000000e+01 - - 5.1946407556533813e-01 -1.8982487916946411e-01 - 7.1982949972152710e-01 -4.8263704776763916e-01 - <_> - 7.8686080932617188e+01 - - 1 2 2049 7.5000000000000000e+00 0 -1 2050 944. -2 -3 2051 - 1.0500000000000000e+01 - - 6.5592408180236816e-01 -5.5339312553405762e-01 - -2.9819217324256897e-01 4.1327166557312012e-01 - <_> - 7.8943367004394531e+01 - - 1 2 2052 1.1500000000000000e+01 0 -1 2053 - 4.0650000000000000e+02 -2 -3 2054 2.5000000000000000e+00 - - -8.3834916353225708e-01 2.5729319453239441e-01 - -7.6927721500396729e-01 3.0943137407302856e-01 - <_> - 7.8510215759277344e+01 - - 1 2 2055 3.3500000000000000e+01 0 -1 2056 - 5.0000000000000000e-01 -2 -3 2057 8.5000000000000000e+00 - - 1.6588112711906433e-01 -4.3315169215202332e-01 - 7.9588627815246582e-01 -4.4464468955993652e-01 - <_> - 7.8833564758300781e+01 - - 1 2 2058 6.5000000000000000e+00 0 -1 2059 - 1.1650000000000000e+02 -2 -3 2060 7.6500000000000000e+01 - - -6.0747748613357544e-01 5.7677578926086426e-01 - 3.2334649562835693e-01 -7.1281516551971436e-01 - <_> - 7.9065544128417969e+01 - - 1 2 2061 114. 0 -1 2062 5.0000000000000000e-01 -2 -3 2063 - 1.1250000000000000e+02 - - 2.3197774589061737e-01 -5.4661935567855835e-01 - 6.7165571451187134e-01 -7.9622262716293335e-01 - <_> - 7.9402275085449219e+01 - - 1 2 2064 2.8050000000000000e+02 0 -1 2065 - 3.9650000000000000e+02 -2 -3 2066 2.9850000000000000e+02 - - -7.8204798698425293e-01 3.3673200011253357e-01 - -6.8767505884170532e-01 2.4135014414787292e-01 - <_> - 7.9591125488281250e+01 - - 1 2 2067 1.5000000000000000e+00 0 -1 2068 - 5.5000000000000000e+00 -2 -3 2069 140. - - -8.4002065658569336e-01 7.2916489839553833e-01 - 1.8884760141372681e-01 -8.0235344171524048e-01 - <_> - 7.9927177429199219e+01 - - 1 2 2070 4.0500000000000000e+01 0 -1 2071 - 8.2850000000000000e+02 -2 -3 2072 1.0500000000000000e+01 - - 3.3605861663818359e-01 -8.6610472202301025e-01 - 2.4379670619964600e-01 -5.3128516674041748e-01 - <_> - 7.9570045471191406e+01 - - 1 2 2073 1182. 0 -1 2074 3.2500000000000000e+01 -2 -3 2075 - 502. - - -3.5713455080986023e-01 2.8106349706649780e-01 - -8.3191645145416260e-01 9.3351656198501587e-01 - <_> - 7.9753128051757812e+01 - - 1 2 2076 2.5000000000000000e+00 0 -1 2077 - 4.7500000000000000e+01 -2 -3 2078 1.2045000000000000e+03 - - 1.8308171629905701e-01 -8.9866495132446289e-01 - 9.4026386737823486e-01 -8.5731178522109985e-01 - <_> - 7.9954711914062500e+01 - - 1 2 2079 9.5000000000000000e+00 0 -1 2080 - 1.0500000000000000e+01 -2 -3 2081 3.4615000000000000e+03 - - 3.0233853030949831e-03 -9.8875284194946289e-01 - 2.0158641040325165e-01 -8.2852333784103394e-01 - <_> - 8.0429855346679688e+01 - - 1 2 2082 4.8050000000000000e+02 0 -1 2083 - 5.2250000000000000e+02 -2 -3 2084 1.2500000000000000e+01 - - 7.6044726371765137e-01 -4.1115388274192810e-01 - -6.2775129079818726e-01 4.9296686053276062e-01 - <_> - 8.0253639221191406e+01 - - 1 2 2085 3.2850000000000000e+02 0 -1 2086 - 2.8500000000000000e+01 -2 -3 2087 2.2500000000000000e+01 - - 6.4995265007019043e-01 -8.1818318367004395e-01 - -4.3594300746917725e-01 2.5837844610214233e-01 - <_> - 8.0712348937988281e+01 - - 1 2 2088 5.5000000000000000e+00 0 -1 2089 - 1.4500000000000000e+01 -2 -3 2090 2.4500000000000000e+01 - - 4.5871067047119141e-01 -1.8673202395439148e-01 - -8.0201834440231323e-01 2.7421653270721436e-01 - <_> - 8.0954566955566406e+01 - - 1 2 2091 1.5000000000000000e+00 0 -1 2092 - 2.5000000000000000e+00 -2 -3 2093 3.5000000000000000e+00 - - 7.1520602703094482e-01 -8.5710084438323975e-01 - -5.3771287202835083e-01 2.4222078919410706e-01 - <_> - 8.0664779663085938e+01 - - 1 2 2094 5.0000000000000000e-01 0 -1 2095 852. -2 -3 2096 - 5.0500000000000000e+01 - - -9.4811320304870605e-01 7.3575115203857422e-01 - -2.8979244828224182e-01 6.3096255064010620e-01 - <_> - 8.0927169799804688e+01 - - 1 2 2097 3407. 0 -1 2098 800. -2 -3 2099 100. - - 2.6239001750946045e-01 -6.4345407485961914e-01 - -9.7739773988723755e-01 1. - <_> - 8.1038581848144531e+01 - - 1 2 2100 2.5000000000000000e+00 0 -1 2101 - 5.5000000000000000e+00 -2 -3 2102 5.0000000000000000e-01 - - 5.0993680953979492e-01 -6.5139651298522949e-01 - 3.4365540742874146e-01 -3.2318025827407837e-01 - <_> - 8.0995506286621094e+01 - - 1 2 2103 1.9500000000000000e+01 0 -1 2104 - 6.3500000000000000e+01 -2 -3 2105 2.7500000000000000e+01 - - -4.3078806251287460e-02 -8.3054763078689575e-01 - 4.1605877876281738e-01 -1. - <_> - 8.1449020385742188e+01 - - 1 2 2106 1.1525000000000000e+03 0 -1 2107 - 2.3500000000000000e+01 -2 -3 2108 5.5000000000000000e+00 - - -3.8596618920564651e-02 -7.3833715915679932e-01 - -8.4264433383941650e-01 4.7351169586181641e-01 - <_> - 8.1674888610839844e+01 - - 1 2 2109 6.5000000000000000e+00 0 -1 2110 - 6.8500000000000000e+01 -2 -3 2111 56. - - 2.2587312757968903e-01 -7.7641236782073975e-01 - -6.7178988456726074e-01 1. - <_> - 8.1059928894042969e+01 - - 1 2 2112 7.5000000000000000e+00 0 -1 2113 - 1.5850000000000000e+02 -2 -3 2114 2.5000000000000000e+00 - - -7.8622096776962280e-01 7.0347315073013306e-01 - 5.0727140903472900e-01 -1.2201854586601257e-01 - <_> - 8.1407531738281250e+01 - - 1 2 2115 1.2500000000000000e+01 0 -1 2116 - 5.5000000000000000e+00 -2 -3 2117 1.3750000000000000e+02 - - -6.2096095085144043e-01 7.2421133518218994e-01 - 3.4760445356369019e-01 -5.3716862201690674e-01 - <_> - 8.1844848632812500e+01 - - 1 2 2118 5.5050000000000000e+02 0 -1 2119 - 3.3500000000000000e+01 -2 -3 2120 9.7950000000000000e+02 - - -7.1007186174392700e-01 6.1295044422149658e-01 - 4.3731164932250977e-01 -1.8890057504177094e-01 - <_> - 8.1697082519531250e+01 - - 1 2 2121 3.7500000000000000e+01 0 -1 2122 - 5.0000000000000000e-01 -2 -3 2123 2.5000000000000000e+00 - - 3.3392754197120667e-01 -8.6948662996292114e-01 - -7.2286629676818848e-01 2.5838151574134827e-01 - <_> - 8.1909507751464844e+01 - - 1 2 2124 4.0500000000000000e+01 0 -1 2125 - 7.5500000000000000e+01 -2 -3 2126 1.0805000000000000e+03 - - -1.9372178614139557e-01 4.5466288924217224e-01 1. - -9.0210074186325073e-01 - <_> - 8.1375953674316406e+01 - - 1 2 2127 5.0000000000000000e-01 0 -1 2128 - 1.5000000000000000e+00 -2 -3 2129 2.1845000000000000e+03 - - -7.8440749645233154e-01 4.0864413976669312e-01 - -5.3355014324188232e-01 3.9062729477882385e-01 - <_> - 8.1887313842773438e+01 - - 1 2 2130 1.2450000000000000e+02 0 -1 2131 - 4.1665000000000000e+03 -2 -3 2132 1.0250000000000000e+02 - - -6.2995404005050659e-01 6.4907240867614746e-01 - 5.1135843992233276e-01 -3.9525008201599121e-01 - <_> - 8.2117805480957031e+01 - - 1 2 2133 5.5000000000000000e+00 0 -1 2134 534. -2 -3 2135 - 2.8500000000000000e+01 - - 8.9746987819671631e-01 -9.2895346879959106e-01 - 2.3048999905586243e-01 -6.7827922105789185e-01 - <_> - 8.1636238098144531e+01 - - 1 2 2136 1.0500000000000000e+01 0 -1 2137 - 6.7500000000000000e+01 -2 -3 2138 4.1500000000000000e+01 - - 4.9451547861099243e-01 -4.8156398534774780e-01 - -3.7169450521469116e-01 5.3676486015319824e-01 - <_> - 8.1995071411132812e+01 - - 1 2 2139 5.0465000000000000e+03 0 -1 2140 - 9.5500000000000000e+01 -2 -3 2141 5.0000000000000000e-01 - - -2.1792615950107574e-01 3.5883331298828125e-01 - 8.3887630701065063e-01 -9.6526902914047241e-01 - <_> - 8.2212608337402344e+01 - - 1 2 2142 1.5500000000000000e+01 0 -1 2143 - 5.5000000000000000e+00 -2 -3 2144 7.5000000000000000e+00 - - -7.6026850938796997e-01 2.1753302216529846e-01 - -7.7944552898406982e-01 2.8800919651985168e-01 - <_> - 8.2952514648437500e+01 - - 1 2 2145 1.0500000000000000e+01 0 -1 2146 - 1.7500000000000000e+01 -2 -3 2147 3.5000000000000000e+00 - - 7.3990541696548462e-01 -3.4350591897964478e-01 - -7.8702974319458008e-01 -3.6859430372714996e-02 - <_> - 8.2764221191406250e+01 - - 1 2 2148 3.8915000000000000e+03 0 -1 2149 - 9.5000000000000000e+00 -2 -3 2150 160. - - -2.7847471833229065e-01 2.9747706651687622e-01 -1. 1. - <_> - 8.3073318481445312e+01 - - 1 2 2151 8.5000000000000000e+00 0 -1 2152 - 7.5000000000000000e+00 -2 -3 2153 3.4500000000000000e+01 - - -3.0019268393516541e-01 4.2716455459594727e-01 - 3.0783307552337646e-01 -7.1251338720321655e-01 - <_> - 8.3382904052734375e+01 - - 1 2 2154 146. 0 -1 2155 6.5000000000000000e+00 -2 -3 2156 - 253. - - -3.7641048431396484e-01 3.0958160758018494e-01 - -9.3819731473922729e-01 1. - <_> - 8.3006187438964844e+01 - - 1 2 2157 3.8500000000000000e+01 0 -1 2158 - 5.4500000000000000e+01 -2 -3 2159 1.9500000000000000e+01 - - -4.9478387832641602e-01 3.9714443683624268e-01 - -1.6719745099544525e-01 6.8846195936203003e-01 - <_> - 8.3494125366210938e+01 - - 1 2 2160 3.9345000000000000e+03 0 -1 2161 1. -2 -3 2162 - 8.0550000000000000e+02 - - 1. -1. 7.6673603057861328e-01 -1.6208630055189133e-02 - <_> - 8.3684944152832031e+01 - - 1 2 2163 4.7150000000000000e+02 0 -1 2164 31. -2 -3 2165 - 8.5000000000000000e+00 - - -7.7217268943786621e-01 4.8103070259094238e-01 - -7.8892275691032410e-02 5.8338689804077148e-01 - <_> - 8.3892440795898438e+01 - - 1 2 2166 308. 0 -1 2167 5.7650000000000000e+02 -2 -3 2168 - 4.1500000000000000e+01 - - 2.0749828219413757e-01 -6.5656942129135132e-01 - -9.0315932035446167e-01 1. - <_> - 8.3916496276855469e+01 - - 1 2 2169 3.0500000000000000e+01 0 -1 2170 - 2.8950000000000000e+02 -2 -3 2171 4773. - - 2.4049011990427971e-02 -5.8593571186065674e-01 - -7.0577090978622437e-01 9.1756677627563477e-01 - <_> - 8.3863990783691406e+01 - - 1 2 2172 444. 0 -1 2173 136. -2 -3 2174 - 1.5000000000000000e+00 - - -7.2386598587036133e-01 7.6625251770019531e-01 - -4.1046851873397827e-01 3.1866103410720825e-01 - <_> - 8.4162803649902344e+01 - - 1 2 2175 4.2450000000000000e+02 0 -1 2176 - 2.5000000000000000e+00 -2 -3 2177 5.4500000000000000e+01 - - -4.9317064881324768e-01 2.9881379008293152e-01 - -6.5457558631896973e-01 6.6832679510116577e-01 - <_> - 8.4366767883300781e+01 - - 1 2 2178 1.7650000000000000e+02 0 -1 2179 - 2.9500000000000000e+01 -2 -3 2180 9.1500000000000000e+01 - - 2.0396536588668823e-01 -5.5911725759506226e-01 1. - -9.1281843185424805e-01 - <_> - 8.4119194030761719e+01 - - 1 2 2181 2.5000000000000000e+00 0 -1 2182 - 1.6500000000000000e+01 -2 -3 2183 1.5000000000000000e+00 - - 3.0720415711402893e-01 -6.1874228715896606e-01 - 4.2462083697319031e-01 -3.2996997237205505e-01 - <_> - 8.4430221557617188e+01 - - 1 2 2184 7.6850000000000000e+02 0 -1 2185 - 1.5000000000000000e+00 -2 -3 2186 1.5500000000000000e+01 - - 2.5913137197494507e-01 -4.6971523761749268e-01 - -4.3263432383537292e-01 5.7092773914337158e-01 - <_> - 8.4639114379882812e+01 - - 1 2 2187 2.8500000000000000e+01 0 -1 2188 - 1.5000000000000000e+00 -2 -3 2189 2.0500000000000000e+01 - - -8.7549871206283569e-01 2.0889294147491455e-01 - -7.7527189254760742e-01 9.5611155033111572e-01 - <_> - 8.4146507263183594e+01 - - 1 2 2190 2.9500000000000000e+01 0 -1 2191 - 1.3500000000000000e+01 -2 -3 2192 1.3500000000000000e+01 - - -4.9260720610618591e-01 1.9271886348724365e-01 - 6.6219002008438110e-01 -8.9827889204025269e-01 - <_> - 8.4403144836425781e+01 - - 1 2 2193 1.9500000000000000e+01 0 -1 2194 - 6.8750000000000000e+02 -2 -3 2195 6.5500000000000000e+01 - - -5.4722160100936890e-01 2.5663515925407410e-01 - -6.7314952611923218e-01 5.6016397476196289e-01 - <_> - 8.4512977600097656e+01 - - 1 2 2196 1.7500000000000000e+01 0 -1 2197 - 8.5000000000000000e+00 -2 -3 2198 4.9500000000000000e+01 - - 5.1628947257995605e-02 -8.8596558570861816e-01 - 2.2394882142543793e-01 -8.4310758113861084e-01 - <_> - 8.4825332641601562e+01 - - 1 2 2199 1.5000000000000000e+00 0 -1 2200 - 8.5000000000000000e+00 -2 -3 2201 4.8500000000000000e+01 - - -9.5332622528076172e-01 3.3586847782135010e-01 - -5.5753439664840698e-01 3.1235861778259277e-01 - <_> - 8.4921630859375000e+01 - - 1 2 2202 3.0035000000000000e+03 0 -1 2203 - 2.5000000000000000e+00 -2 -3 2204 1.3850000000000000e+02 - - -2.7263507246971130e-01 3.0273589491844177e-01 1. - -8.9314818382263184e-01 - <_> - 8.4953636169433594e+01 - - 1 2 2205 1.3650000000000000e+02 0 -1 2206 21. -2 -3 2207 - 1.0450000000000000e+02 - - 9.7071325778961182e-01 -8.3434158563613892e-01 - -1.7443342506885529e-01 4.1703993082046509e-01 - <_> - 8.5531066894531250e+01 - - 1 2 2208 4.0500000000000000e+01 0 -1 2209 - 2.8450000000000000e+02 -2 -3 2210 5.0000000000000000e-01 - - -5.4008752107620239e-01 5.7742959260940552e-01 - 6.5463826060295105e-02 -6.4212870597839355e-01 - <_> - 8.5679679870605469e+01 - - 1 2 2211 6.5000000000000000e+00 0 -1 2212 - 4.2500000000000000e+01 -2 -3 2213 5.5000000000000000e+00 - - -7.2564774751663208e-01 7.0831966400146484e-01 - -6.6582089662551880e-01 2.6227703690528870e-01 - <_> - 8.5235992431640625e+01 - - 1 2 2214 4.5500000000000000e+01 0 -1 2215 - 2.5000000000000000e+00 -2 -3 2216 1.5000000000000000e+00 - - -4.4622960686683655e-01 5.0379693508148193e-01 - 2.8327786922454834e-01 -6.1233770847320557e-01 - <_> - 8.5567344665527344e+01 - - 1 2 2217 5.0000000000000000e-01 0 -1 2218 - 6.0500000000000000e+01 -2 -3 2219 5.0000000000000000e-01 - - 3.3135503530502319e-01 -7.7173143625259399e-01 - 5.3300887346267700e-01 -5.7684963941574097e-01 - <_> - 8.5617721557617188e+01 - - 1 2 2220 1.1500000000000000e+01 0 -1 2221 - 6.7350000000000000e+02 -2 -3 2222 2.1885000000000000e+03 - - 4.9268788099288940e-01 -3.9361280202865601e-01 - 5.4581469297409058e-01 -1. - <_> - 8.5892776489257812e+01 - - 1 2 2223 1.0885000000000000e+03 0 -1 2224 - 1.0950000000000000e+02 -2 -3 2225 1.2500000000000000e+01 - - 8.7355607748031616e-01 -8.9644581079483032e-01 - -3.6866596341133118e-01 2.7505651116371155e-01 - <_> - 8.6008476257324219e+01 - - 1 2 2226 2.5150000000000000e+02 0 -1 2227 - 1.0500000000000000e+01 -2 -3 2228 2.2500000000000000e+01 - - 7.3005491495132446e-01 -8.4803074598312378e-01 - -6.7341393232345581e-01 6.4791239798069000e-02 - <_> - 8.5301307678222656e+01 - - 1 2 2229 9.5000000000000000e+00 0 -1 2230 - 1.0500000000000000e+01 -2 -3 2231 5.5000000000000000e+00 - - -7.0716243982315063e-01 3.0324958264827728e-02 - -3.6973038315773010e-01 5.3505402803421021e-01 - <_> - 8.5578842163085938e+01 - - 1 2 2232 9.9950000000000000e+02 0 -1 2233 - 5.0000000000000000e-01 -2 -3 2234 57. - - -5.4884088039398193e-01 2.7752920985221863e-01 - -7.9685103893280029e-01 5.8429610729217529e-01 - <_> - 8.5900283813476562e+01 - - 1 2 2235 1.4005000000000000e+03 0 -1 2236 - 1.1500000000000000e+01 -2 -3 2237 407. - - -4.8077926039695740e-01 3.2144653797149658e-01 - 8.7326759099960327e-01 -7.6497209072113037e-01 - <_> - 8.6183494567871094e+01 - - 1 2 2238 5.0000000000000000e-01 0 -1 2239 - 1.8500000000000000e+01 -2 -3 2240 2018. - - 5.9915566444396973e-01 -3.6263227462768555e-01 - -4.3329817056655884e-01 7.2292387485504150e-01 - <_> - 8.6417350769042969e+01 - - 1 2 2241 116. 0 -1 2242 7.9500000000000000e+01 -2 -3 2243 - 1.1500000000000000e+01 - - 2.3385088145732880e-01 -7.2572106122970581e-01 - -8.2059645652770996e-01 1. - <_> - 8.6353157043457031e+01 - - 1 2 2244 5.4750000000000000e+02 0 -1 2245 - 4.1650000000000000e+02 -2 -3 2246 7.4835000000000000e+03 - - -3.8013687729835510e-01 7.1552526950836182e-01 - -6.0602325201034546e-01 1.3700281083583832e-01 - <_> - 8.6689994812011719e+01 - - 1 2 2247 2.5000000000000000e+00 0 -1 2248 - 4.9500000000000000e+01 -2 -3 2249 3.1500000000000000e+01 - - -8.8249641656875610e-01 6.3650465011596680e-01 - -2.8715553879737854e-01 3.3683738112449646e-01 - <_> - 8.6457923889160156e+01 - - 1 2 2250 2.0500000000000000e+01 0 -1 2251 - 5.0000000000000000e-01 -2 -3 2252 1.5550000000000000e+02 - - 7.5483375787734985e-01 -5.7755672931671143e-01 - 3.1271988153457642e-01 -9.3355900049209595e-01 - <_> - 8.6848548889160156e+01 - - 1 2 2253 5.0000000000000000e-01 0 -1 2254 - 8.5000000000000000e+00 -2 -3 2255 1.4500000000000000e+01 - - -8.8290500640869141e-01 3.9062538743019104e-01 - 3.0572377145290375e-02 -6.9165939092636108e-01 - <_> - 8.7283264160156250e+01 - - 1 2 2256 5.6500000000000000e+01 0 -1 2257 - 2.5850000000000000e+02 -2 -3 2258 5.6500000000000000e+01 - - 7.9447448253631592e-01 -2.4108846485614777e-01 - -9.5247858762741089e-01 7.4498760700225830e-01 - <_> - 8.7402679443359375e+01 - - 1 2 2259 1.9050000000000000e+02 0 -1 2260 - 8.5000000000000000e+00 -2 -3 2261 1.6050000000000000e+02 - - 7.9782551527023315e-01 -4.8126858472824097e-01 - 3.2817113399505615e-01 -9.2351150512695312e-01 - <_> - 8.7450622558593750e+01 - - 1 2 2262 2.5000000000000000e+00 0 -1 2263 - 1.0750000000000000e+02 -2 -3 2264 1.2500000000000000e+01 - - -9.5446103811264038e-01 3.0746808648109436e-01 - 2.6287922263145447e-01 -5.2057027816772461e-01 - <_> - 8.7063316345214844e+01 - - 1 2 2265 1.6500000000000000e+01 0 -1 2266 - 6.4500000000000000e+01 -2 -3 2267 1.2895000000000000e+03 - - 9.6434988081455231e-02 -8.1099587678909302e-01 - 3.5276085138320923e-01 -6.3035190105438232e-01 - <_> - 8.7586761474609375e+01 - - 1 2 2268 5.5000000000000000e+00 0 -1 2269 - 3.5000000000000000e+00 -2 -3 2270 5.0000000000000000e-01 - - -8.5307574272155762e-01 -5.4498150944709778e-02 - 5.2659434080123901e-01 -2.1662306785583496e-01 - <_> - 8.7653213500976562e+01 - - 1 2 2271 2.5000000000000000e+00 0 -1 2272 - 1.5000000000000000e+00 -2 -3 2273 239. - - 4.1265711188316345e-01 -2.8464233875274658e-01 - 6.7191797494888306e-01 -6.5316730737686157e-01 - <_> - 8.7628303527832031e+01 - - 1 2 2274 1.5000000000000000e+00 0 -1 2275 - 3.5000000000000000e+00 -2 -3 2276 5.0000000000000000e-01 - - -7.2243005037307739e-01 8.7789368629455566e-01 - 7.9855352640151978e-01 -2.4909071624279022e-02 - <_> - 8.7940948486328125e+01 - - 1 2 2277 8.5000000000000000e+00 0 -1 2278 - 4.4500000000000000e+01 -2 -3 2279 3.5000000000000000e+00 - - 8.1174898147583008e-01 -6.3333249092102051e-01 - -7.8106856346130371e-01 3.1264203786849976e-01 - <_> - 8.8444465637207031e+01 - - 1 2 2280 3.1500000000000000e+01 0 -1 2281 - 3.5000000000000000e+00 -2 -3 2282 5.8500000000000000e+01 - - -8.7983781099319458e-01 6.6502499580383301e-01 - 5.9884071350097656e-01 -3.4494200348854065e-01 - <_> - 8.8562141418457031e+01 - - 1 2 2283 8.8500000000000000e+01 0 -1 2284 - 3.0850000000000000e+02 -2 -3 2285 1.8685000000000000e+03 - - 1.1767382174730301e-01 -7.1909028291702271e-01 - -8.0886626243591309e-01 3.6782959103584290e-01 - <_> - 8.8689140319824219e+01 - - 1 2 2286 2.5000000000000000e+00 0 -1 2287 - 1.5000000000000000e+00 -2 -3 2288 2.9500000000000000e+01 - - -6.8951946496963501e-01 3.7994578480720520e-01 - -4.4435909390449524e-01 7.3357677459716797e-01 - <_> - 8.8993270874023438e+01 - - 1 2 2289 8.5450000000000000e+02 0 -1 2290 - 9.3500000000000000e+01 -2 -3 2291 1.0850000000000000e+02 - - 3.0412796139717102e-01 -5.4215848445892334e-01 - -7.8242719173431396e-01 5.9332287311553955e-01 - <_> - 8.8982391357421875e+01 - - 1 2 2292 1.9350000000000000e+02 0 -1 2293 - 5.0500000000000000e+01 -2 -3 2294 3.3500000000000000e+01 - - -1.0881225578486919e-02 -7.1214753389358521e-01 - -5.7588249444961548e-01 7.9207491874694824e-01 - <_> - 8.8675567626953125e+01 - - 1 2 2295 1.2500000000000000e+01 0 -1 2296 - 2.5000000000000000e+00 -2 -3 2297 1.5000000000000000e+00 - - -8.9892637729644775e-01 1. 3.4347891807556152e-01 - -3.1791657209396362e-01 - <_> - 8.8704269409179688e+01 - - 1 2 2298 1.1500000000000000e+01 0 -1 2299 - 4.7500000000000000e+01 -2 -3 2300 1.1500000000000000e+01 - - -2.4499019980430603e-01 5.0305950641632080e-01 - -7.4506103992462158e-01 1.1293403059244156e-01 - <_> - 8.8582321166992188e+01 - - 1 2 2301 5.0000000000000000e-01 0 -1 2302 - 1.2500000000000000e+01 -2 -3 2303 5.0000000000000000e-01 - - -3.6801630258560181e-01 4.8782908916473389e-01 - 7.5426805019378662e-01 -4.7202652692794800e-01 - <_> - 8.8955085754394531e+01 - - 1 2 2304 5.0000000000000000e-01 0 -1 2305 - 7.9500000000000000e+01 -2 -3 2306 1.0755000000000000e+03 - - 3.7275862693786621e-01 -4.8154482245445251e-01 - 6.9586211442947388e-01 -5.6343889236450195e-01 - <_> - 8.8874618530273438e+01 - - 1 2 2307 8.5500000000000000e+01 0 -1 2308 - 5.3650000000000000e+02 -2 -3 2309 694. - - 6.7843574285507202e-01 -4.6394348144531250e-01 - 6.8638551235198975e-01 -8.8641919195652008e-02 - <_> - 8.9109901428222656e+01 - - 1 2 2310 2.8500000000000000e+01 0 -1 2311 - 2.5000000000000000e+00 -2 -3 2312 6.1150000000000000e+02 - - -8.3614200353622437e-01 2.3528522253036499e-01 - -9.5000904798507690e-01 1. - <_> - 8.8907135009765625e+01 - - 1 2 2313 1.1525000000000000e+03 0 -1 2314 - 7.6850000000000000e+02 -2 -3 2315 3.7500000000000000e+01 - - -2.0276506245136261e-01 4.0722262859344482e-01 - -8.5420507192611694e-01 8.8535934686660767e-01 - <_> - 8.9519294738769531e+01 - - 1 2 2316 5.5000000000000000e+00 0 -1 2317 - 8.3650000000000000e+02 -2 -3 2318 2.5000000000000000e+00 - - 6.1215674877166748e-01 -2.8454613685607910e-01 - -6.7182534933090210e-01 1.3038201630115509e-01 - <_> - 8.9072807312011719e+01 - - 1 2 2319 5.0000000000000000e-01 0 -1 2320 - 1.2500000000000000e+01 -2 -3 2321 5.3500000000000000e+01 - - -3.0968821048736572e-01 6.4217364788055420e-01 - -4.4648653268814087e-01 3.5627630352973938e-01 - <_> - 8.9592712402343750e+01 - - 1 2 2322 2.5000000000000000e+00 0 -1 2323 - 2.6500000000000000e+01 -2 -3 2324 4.5000000000000000e+00 - - -4.7493380308151245e-01 8.2513862848281860e-01 - -2.1184358000755310e-01 5.1990169286727905e-01 - <_> - 8.9800750732421875e+01 - - 1 2 2325 2.6850000000000000e+02 0 -1 2326 - 1.4250000000000000e+02 -2 -3 2327 2.8950000000000000e+02 - - 1. -9.8386675119400024e-01 2.0803783833980560e-01 - -7.4743682146072388e-01 - <_> - 8.9978019714355469e+01 - - 1 2 2328 9.6500000000000000e+01 0 -1 2329 - 5.0000000000000000e-01 -2 -3 2330 1.0500000000000000e+01 - - 3.9577171206474304e-01 -1.8832282721996307e-01 1. - -9.4037795066833496e-01 - <_> - 9.0186340332031250e+01 - - 1 2 2331 9.5000000000000000e+00 0 -1 2332 - 3.9500000000000000e+01 -2 -3 2333 4.1150000000000000e+02 - - 5.1927842199802399e-02 -5.1345849037170410e-01 - -6.9976913928985596e-01 7.2176700830459595e-01 - <_> - 9.0408126831054688e+01 - - 1 2 2334 1.4500000000000000e+01 0 -1 2335 - 5.6950000000000000e+02 -2 -3 2336 2.5000000000000000e+00 - - 5.3421056270599365e-01 -8.4200710058212280e-01 - -7.9201179742813110e-01 2.2178900241851807e-01 - <_> - 9.0207931518554688e+01 - - 1 2 2337 7.5000000000000000e+00 0 -1 2338 - 3.0150000000000000e+02 -2 -3 2339 8.1500000000000000e+01 - - 2.6031082868576050e-01 -5.6561201810836792e-01 - -6.8547034263610840e-01 6.9407206773757935e-01 - <_> - 9.0302421569824219e+01 - - 1 2 2340 3.1555000000000000e+03 0 -1 2341 - 2.5500000000000000e+01 -2 -3 2342 2.0500000000000000e+01 - - -4.6551218628883362e-01 6.1541539430618286e-01 - -5.8543795347213745e-01 4.2197912931442261e-01 - <_> - 9.0720130920410156e+01 - - 1 2 2343 2.2250000000000000e+02 0 -1 2344 - 2.6765000000000000e+03 -2 -3 2345 6.5000000000000000e+00 - - -1. 4.2247042059898376e-01 -5.9496659040451050e-01 - 7.3635950684547424e-02 - <_> - 9.0678649902343750e+01 - - 1 2 2346 2.4985000000000000e+03 0 -1 2347 - 5.5050000000000000e+02 -2 -3 2348 1.7500000000000000e+01 - - -2.6645794510841370e-01 5.7650017738342285e-01 - -6.3965815305709839e-01 1.3717547059059143e-01 - <_> - 9.1026916503906250e+01 - - 1 2 2349 8.5000000000000000e+00 0 -1 2350 - 9.5000000000000000e+00 -2 -3 2351 399. - - 3.4826722741127014e-01 -2.6130944490432739e-01 - -8.7031137943267822e-01 5.0992918014526367e-01 - <_> - 9.0745491027832031e+01 - - 1 2 2352 2.0500000000000000e+01 0 -1 2353 - 2.8415000000000000e+03 -2 -3 2354 1.3195000000000000e+03 - - 3.8361868262290955e-01 -6.5678369998931885e-01 - -7.2137272357940674e-01 2.9168155789375305e-01 - <_> - 9.0282897949218750e+01 - - 1 2 2355 5.0000000000000000e-01 0 -1 2356 - 1.8500000000000000e+01 -2 -3 2357 5.5000000000000000e+00 - - -5.5979007482528687e-01 4.2797699570655823e-01 - -7.2097688913345337e-01 -2.2096272557973862e-02 - <_> - 9.0329040527343750e+01 - - 1 2 2358 5.0000000000000000e-01 0 -1 2359 - 5.0000000000000000e-01 -2 -3 2360 1.3850000000000000e+02 - - -8.6151492595672607e-01 6.3388091325759888e-01 - 4.6142544597387314e-02 -7.7132421731948853e-01 - <_> - 9.0726905822753906e+01 - - 1 2 2361 5.0000000000000000e-01 0 -1 2362 - 1.3605000000000000e+03 -2 -3 2363 4.4500000000000000e+01 - - -4.9816811084747314e-01 3.9786130189895630e-01 - -4.7495251893997192e-01 4.1306164860725403e-01 - <_> - 9.0184005737304688e+01 - - 1 2 2364 1.1225000000000000e+03 0 -1 2365 - 1.6455000000000000e+03 -2 -3 2366 6.5000000000000000e+00 - - -5.4290074110031128e-01 3.3631756901741028e-01 - -6.0382646322250366e-01 2.5190624594688416e-01 - <_> - 9.1035018920898438e+01 - - 1 2 2367 1.2185000000000000e+03 0 -1 2368 - 1.4635000000000000e+03 -2 -3 2369 7.5000000000000000e+00 - - -9.1523426771163940e-01 8.5101437568664551e-01 - -5.3849363327026367e-01 7.0430345833301544e-02 - <_> - 9.1617080688476562e+01 - - 1 2 2370 5.7450000000000000e+02 0 -1 2371 - 7.5000000000000000e+00 -2 -3 2372 1.2500000000000000e+01 - - -5.5275338888168335e-01 5.8206313848495483e-01 - 7.8669518232345581e-02 -6.4758539199829102e-01 - <_> - 9.1865600585937500e+01 - - 1 2 2373 1.5000000000000000e+00 0 -1 2374 31. -2 -3 2375 - 2.5000000000000000e+00 - - 7.1970331668853760e-01 -6.8706613779067993e-01 - -8.0606603622436523e-01 2.4852037429809570e-01 - <_> - 9.1933456420898438e+01 - - 1 2 2376 1.6500000000000000e+01 0 -1 2377 - 2.5350000000000000e+02 -2 -3 2378 2.7500000000000000e+01 - - 6.7855246365070343e-02 -7.4723839759826660e-01 - 3.3876419067382812e-01 -6.6246157884597778e-01 - <_> - 9.2073440551757812e+01 - - 1 2 2379 1.6150000000000000e+02 0 -1 2380 - 3.4905000000000000e+03 -2 -3 2381 29. - - 1.3998487591743469e-01 -9.7840291261672974e-01 - -9.9056637287139893e-01 1. - <_> - 9.2266113281250000e+01 - - 1 2 2382 1.5000000000000000e+00 0 -1 2383 - 3.0500000000000000e+01 -2 -3 2384 1.6500000000000000e+01 - - 4.2297352105379105e-02 -7.5529569387435913e-01 - 3.4410062432289124e-01 -7.4833053350448608e-01 - <_> - 9.2566078186035156e+01 - - 1 2 2385 2352. 0 -1 2386 7.5000000000000000e+00 -2 -3 2387 - 3.6150000000000000e+02 - - -7.9286593198776245e-01 2.6059108972549438e-01 - 7.3781818151473999e-01 -8.2013517618179321e-02 - <_> - 9.2297134399414062e+01 - - 1 2 2388 5.5000000000000000e+00 0 -1 2389 - 1.2500000000000000e+01 -2 -3 2390 4.4500000000000000e+01 - - -7.0269703865051270e-01 4.9800133705139160e-01 - 3.9258196949958801e-01 -2.6894846558570862e-01 - <_> - 9.2234367370605469e+01 - - 1 2 2391 8.8500000000000000e+01 0 -1 2392 - 5.1500000000000000e+01 -2 -3 2393 4.1500000000000000e+01 - - -6.2763020396232605e-02 6.3001161813735962e-01 - -8.5735118389129639e-01 6.4268112182617188e-01 - <_> - 9.2365852355957031e+01 - - 1 2 2394 1.0015000000000000e+03 0 -1 2395 - 7.6050000000000000e+02 -2 -3 2396 5.5000000000000000e+00 - - -3.7476244568824768e-01 2.9709032177925110e-01 - 5.4132920503616333e-01 -8.3887267112731934e-01 - <_> - 9.2131614685058594e+01 - - 1 2 2397 1.5000000000000000e+00 0 -1 2398 - 8.3500000000000000e+01 -2 -3 2399 5.5000000000000000e+00 - - -6.0538351535797119e-01 5.1848065853118896e-01 - -8.3529579639434814e-01 3.1571540236473083e-01 - <_> - 9.2501167297363281e+01 - - 1 2 2400 4.1500000000000000e+01 0 -1 2401 - 5.5000000000000000e+00 -2 -3 2402 5.5000000000000000e+00 - - -8.4844219684600830e-01 3.7978658080101013e-01 - -7.1654027700424194e-01 4.2168378829956055e-02 - <_> - 9.2843521118164062e+01 - - 1 2 2403 2.5000000000000000e+00 0 -1 2404 - 6.4500000000000000e+01 -2 -3 2405 5.4350000000000000e+02 - - 3.3212310075759888e-01 -8.3203417062759399e-01 - 4.9931150674819946e-01 -6.3223975896835327e-01 - <_> - 9.2861694335937500e+01 - - 1 2 2406 8.0500000000000000e+01 0 -1 2407 108. -2 -3 2408 - 1.6755000000000000e+03 - - 1.3975634239614010e-02 -7.8626310825347900e-01 - 5.7174843549728394e-01 -1.2674526870250702e-01 - <_> - 9.2968948364257812e+01 - - 1 2 2409 9.1500000000000000e+01 0 -1 2410 1289. -2 -3 2411 - 3.9500000000000000e+01 - - 1.2590126693248749e-01 -6.0328000783920288e-01 - -4.6332037448883057e-01 6.0493034124374390e-01 - <_> - 9.2898025512695312e+01 - - 1 2 2412 1.1450000000000000e+02 0 -1 2413 - 1.2050000000000000e+02 -2 -3 2414 1.4500000000000000e+01 - - -2.3465740680694580e-01 3.8865172863006592e-01 - -8.5783010721206665e-01 6.1523634195327759e-01 - <_> - 9.3257911682128906e+01 - - 1 2 2415 5.0000000000000000e-01 0 -1 2416 4262. -2 -3 2417 - 4.2050000000000000e+02 - - -9.0746092796325684e-01 6.8183261156082153e-01 - 3.5988852381706238e-01 -2.8322571516036987e-01 - <_> - 9.3038124084472656e+01 - - 1 2 2418 172. 0 -1 2419 5.5000000000000000e+00 -2 -3 2420 - 20. - - -2.1979008615016937e-01 3.5657486319541931e-01 -1. 1. - <_> - 9.3356796264648438e+01 - - 1 2 2421 1.3350000000000000e+02 0 -1 2422 - 1.4055000000000000e+03 -2 -3 2423 5.8950000000000000e+02 - - -9.2216557264328003e-01 3.1866943836212158e-01 - -5.3239977359771729e-01 5.1732164621353149e-01 - <_> - 9.3672409057617188e+01 - - 1 2 2424 5.0000000000000000e-01 0 -1 2425 - 5.0000000000000000e-01 -2 -3 2426 5.0000000000000000e-01 - - -8.1506562232971191e-01 3.1561306118965149e-01 - 5.0408166646957397e-01 -6.1532169580459595e-01 - <_> - 9.3130691528320312e+01 - - 1 2 2427 3.5500000000000000e+01 0 -1 2428 - 3.4305000000000000e+03 -2 -3 2429 505. - - -5.4171895980834961e-01 9.3477241694927216e-02 - 7.5641244649887085e-01 -8.8457739353179932e-01 - <_> - 9.3192596435546875e+01 - - 1 2 2430 6.4150000000000000e+02 0 -1 2431 2249. -2 -3 2432 - 662. - - 6.1905395239591599e-02 -7.2703468799591064e-01 - -9.1928023099899292e-01 9.8033905029296875e-01 - <_> - 9.3644752502441406e+01 - - 1 2 2433 1.5500000000000000e+01 0 -1 2434 - 1.7500000000000000e+01 -2 -3 2435 6.5000000000000000e+00 - - 4.3795633316040039e-01 -4.9344247579574585e-01 - 4.5216166973114014e-01 -3.1545853614807129e-01 - <_> - 9.3540618896484375e+01 - - 1 2 2436 5.0000000000000000e-01 0 -1 2437 - 1.3500000000000000e+01 -2 -3 2438 4.5500000000000000e+01 - - -1.0413412004709244e-01 6.4089792966842651e-01 - -3.8926449418067932e-01 8.7481313943862915e-01 - <_> - 9.3962448120117188e+01 - - 1 2 2439 242. 0 -1 2440 1.1500000000000000e+01 -2 -3 2441 - 2.9500000000000000e+01 - - -1.6308744251728058e-01 4.2182672023773193e-01 - -9.0694606304168701e-01 1. - <_> - 9.4556045532226562e+01 - - 1 2 2442 3.2500000000000000e+01 0 -1 2443 - 2.5000000000000000e+00 -2 -3 2444 1.4500000000000000e+01 - - -6.9347047805786133e-01 6.4435130357742310e-01 - -5.9788930416107178e-01 7.7255569398403168e-02 - <_> - 9.4721496582031250e+01 - - 1 2 2445 1.5500000000000000e+01 0 -1 2446 - 9.5000000000000000e+00 -2 -3 2447 2.9500000000000000e+01 - - -4.3441089987754822e-01 1.6544458270072937e-01 - -6.3126134872436523e-01 7.8642731904983521e-01 - <_> - 9.4984420776367188e+01 - - 1 2 2448 3.8645000000000000e+03 0 -1 2449 - 1.7925000000000000e+03 -2 -3 2450 60. - - -4.4316318631172180e-01 3.3754405379295349e-01 - -7.9294669628143311e-01 8.5425835847854614e-01 - <_> - 9.4582656860351562e+01 - - 1 2 2451 2.5000000000000000e+00 0 -1 2452 165. -2 -3 2453 - 5.2500000000000000e+01 - - 2.6933476328849792e-01 -6.8854063749313354e-01 - -8.7762522697448730e-01 1.4154928922653198e-01 - <_> - 9.4399383544921875e+01 - - 1 2 2454 68. 0 -1 2455 7.6850000000000000e+02 -2 -3 2456 - 4.3500000000000000e+01 - - -1.8327303230762482e-01 4.6131238341331482e-01 - -9.6990627050399780e-01 8.6611026525497437e-01 - <_> - 9.5118980407714844e+01 - - 1 2 2457 1.2225000000000000e+03 0 -1 2458 - 8.0050000000000000e+02 -2 -3 2459 8.2850000000000000e+02 - - -5.3803724050521851e-01 7.1959483623504639e-01 - -8.1214201450347900e-01 -5.1834270358085632e-02 - <_> - 9.4748359680175781e+01 - - 1 2 2460 2.4500000000000000e+01 0 -1 2461 - 5.0500000000000000e+01 -2 -3 2462 5.5000000000000000e+00 - - 7.3085886240005493e-01 -6.9121128320693970e-01 - 3.2903286814689636e-01 -3.7062501907348633e-01 - <_> - 9.4972839355468750e+01 - - 1 2 2463 5.5000000000000000e+00 0 -1 2464 - 2.8450000000000000e+02 -2 -3 2465 3.8915000000000000e+03 - - 4.3351098895072937e-01 -7.3641782999038696e-01 - 2.2448168694972992e-01 -7.1434223651885986e-01 - <_> - 9.5275985717773438e+01 - - 1 2 2466 1.0500000000000000e+01 0 -1 2467 - 5.0000000000000000e-01 -2 -3 2468 4.7250000000000000e+02 - - 9.6811644732952118e-02 -7.6387089490890503e-01 - -3.6428251862525940e-01 3.0314624309539795e-01 - <_> - 9.4958412170410156e+01 - - 1 2 2469 4.8050000000000000e+02 0 -1 2470 68. -2 -3 2471 - 8.5000000000000000e+00 - - -3.1757611036300659e-01 8.6130934953689575e-01 - 4.5709180831909180e-01 -6.0632956027984619e-01 - <_> - 9.5323020935058594e+01 - - 1 2 2472 2.8050000000000000e+02 0 -1 2473 - 8.5000000000000000e+00 -2 -3 2474 3.1500000000000000e+01 - - -5.9738260507583618e-01 3.6461219191551208e-01 - -4.8098289966583252e-01 4.0610322356224060e-01 - <_> - 9.5531364440917969e+01 - - 1 2 2475 9.6500000000000000e+01 0 -1 2476 - 2.5000000000000000e+00 -2 -3 2477 6.5000000000000000e+00 - - -6.9760245084762573e-01 2.0834487676620483e-01 - -9.1544830799102783e-01 1. - <_> - 9.5781745910644531e+01 - - 1 2 2478 8.8500000000000000e+01 0 -1 2479 - 1.2500000000000000e+01 -2 -3 2480 4.6500000000000000e+01 - - -4.0220642089843750e-01 2.5037932395935059e-01 - -7.7450615167617798e-01 1. - <_> - 9.5803649902343750e+01 - - 1 2 2481 5.0000000000000000e-01 0 -1 2482 - 4.3250000000000000e+02 -2 -3 2483 1.4500000000000000e+01 - - 4.0768721699714661e-01 -7.2477263212203979e-01 - 4.5463231205940247e-01 -4.9192586541175842e-01 - <_> - 9.5542800903320312e+01 - - 1 2 2484 8.5000000000000000e+00 0 -1 2485 - 4.5000000000000000e+00 -2 -3 2486 2.7450000000000000e+02 - - -7.1822851896286011e-01 2.5916630029678345e-01 - -5.6648039817810059e-01 3.5922342538833618e-01 - <_> - 9.5895820617675781e+01 - - 1 2 2487 5.2500000000000000e+01 0 -1 2488 - 5.0000000000000000e-01 -2 -3 2489 7.5000000000000000e+00 - - 3.5301324725151062e-01 -3.0667924880981445e-01 - 3.2827284932136536e-01 -8.0632358789443970e-01 - <_> - 9.6157928466796875e+01 - - 1 2 2490 2.5000000000000000e+00 0 -1 2491 - 2.5500000000000000e+01 -2 -3 2492 2.1500000000000000e+01 - - 4.8798337578773499e-01 -9.5308113098144531e-01 - -5.1750040054321289e-01 2.6211360096931458e-01 - <_> - 9.6371978759765625e+01 - - 1 2 2493 4.0500000000000000e+01 0 -1 2494 - 2.5000000000000000e+00 -2 -3 2495 4.1500000000000000e+01 - - -5.9743094444274902e-01 2.1404948830604553e-01 - -8.5050314664840698e-01 5.0623071193695068e-01 - <_> - 9.6368263244628906e+01 - - 1 2 2496 4.3500000000000000e+01 0 -1 2497 - 5.0000000000000000e-01 -2 -3 2498 2.5000000000000000e+00 - - -1. 1. -5.6743723154067993e-01 7.6639793813228607e-02 - <_> - 9.6516090393066406e+01 - - 1 2 2499 5.0000000000000000e-01 0 -1 2500 - 3.5000000000000000e+00 -2 -3 2501 2.7500000000000000e+01 - - -9.6376502513885498e-01 6.0896998643875122e-01 - 1.4782741665840149e-01 -4.4592922925949097e-01 - <_> - 9.5890869140625000e+01 - - 1 2 2502 8.0500000000000000e+01 0 -1 2503 - 1.1025000000000000e+03 -2 -3 2504 5.4150000000000000e+02 - - 1.4774493873119354e-01 -6.2522071599960327e-01 - 6.8708664178848267e-01 -1.1048506200313568e-01 - <_> - 9.6234390258789062e+01 - - 1 2 2505 1.4500000000000000e+01 0 -1 2506 - 2.5000000000000000e+00 -2 -3 2507 5.0000000000000000e-01 - - 1.8957711756229401e-01 -6.4709383249282837e-01 - -4.1520085930824280e-01 3.4351608157157898e-01 - <_> - 9.6572166442871094e+01 - - 1 2 2508 5.0000000000000000e-01 0 -1 2509 - 2.5735000000000000e+03 -2 -3 2510 1173. - - 3.3778050541877747e-01 -6.3639199733734131e-01 - -5.0381755828857422e-01 6.3735854625701904e-01 - <_> - 9.7091682434082031e+01 - - 1 2 2511 1.1450000000000000e+02 0 -1 2512 - 4.0250000000000000e+02 -2 -3 2513 1.3450000000000000e+02 - - 6.2810701131820679e-01 -4.0756353735923767e-01 -1. - 5.1951670646667480e-01 - <_> - 9.7211601257324219e+01 - - 1 2 2514 8.0500000000000000e+01 0 -1 2515 - 6.5000000000000000e+00 -2 -3 2516 4.0500000000000000e+01 - - -7.7606672048568726e-01 6.6768264770507812e-01 - -3.8118714094161987e-01 3.6804616451263428e-01 - <_> - 9.7420547485351562e+01 - - 1 2 2517 1.5000000000000000e+00 0 -1 2518 - 1.6155000000000000e+03 -2 -3 2519 5.7500000000000000e+01 - - 1. -1. 2.0894423127174377e-01 -6.3742393255233765e-01 - <_> - 9.7607200622558594e+01 - - 1 2 2520 1.5000000000000000e+00 0 -1 2521 - 2.9050000000000000e+02 -2 -3 2522 5.0000000000000000e-01 - - -9.8843830823898315e-01 1. 2.6681044697761536e-01 - -3.6110731959342957e-01 - <_> - 9.7423561096191406e+01 - - 1 2 2523 4.5000000000000000e+00 0 -1 2524 - 9.5000000000000000e+00 -2 -3 2525 9.5000000000000000e+00 - - -5.4543578624725342e-01 9.5868372917175293e-01 - -7.5861543416976929e-01 2.6955580711364746e-01 - <_> - 9.7825759887695312e+01 - - 1 2 2526 1.1550000000000000e+02 0 -1 2527 3751. -2 -3 2528 - 280. - - -8.3923083543777466e-01 6.2113016843795776e-01 - -3.8828554749488831e-01 5.3129935264587402e-01 - <_> - 9.8072143554687500e+01 - - 1 2 2529 1.0750000000000000e+02 0 -1 2530 - 5.7750000000000000e+02 -2 -3 2531 2.1500000000000000e+01 - - 2.4638542532920837e-01 -6.5665483474731445e-01 - -8.9632099866867065e-01 6.8391984701156616e-01 - <_> - 9.8402824401855469e+01 - - 1 2 2532 3.5000000000000000e+00 0 -1 2533 - 5.5000000000000000e+00 -2 -3 2534 5.0000000000000000e-01 - - -9.1934508085250854e-01 1. 3.3068060874938965e-01 - -2.1170829236507416e-01 - <_> - 9.8699340820312500e+01 - - 1 2 2535 1.1450000000000000e+02 0 -1 2536 - 5.5000000000000000e+00 -2 -3 2537 36. - - 3.0874010920524597e-01 -2.8325837850570679e-01 - -8.8745921850204468e-01 1. - <_> - 9.8877410888671875e+01 - - 1 2 2538 8.5000000000000000e+00 0 -1 2539 - 9.8500000000000000e+01 -2 -3 2540 1.4500000000000000e+01 - - 6.9435214996337891e-01 -9.1196221113204956e-01 - 2.4511045217514038e-01 -5.1517933607101440e-01 - <_> - 9.8995216369628906e+01 - - 1 2 2541 2.5500000000000000e+01 0 -1 2542 - 1.5500000000000000e+01 -2 -3 2543 3.6050000000000000e+02 - - 1.1780845373868942e-01 -5.3240364789962769e-01 -1. - 7.7188563346862793e-01 - <_> - 9.9240852355957031e+01 - - 1 2 2544 3.5000000000000000e+00 0 -1 2545 - 8.0500000000000000e+01 -2 -3 2546 5.6450000000000000e+02 - - -9.0737903118133545e-01 1. -5.8833694458007812e-01 - 2.4563524127006531e-01 - <_> - 9.8749168395996094e+01 - - 1 2 2547 2.1500000000000000e+01 0 -1 2548 - 2.0500000000000000e+01 -2 -3 2549 3.4500000000000000e+01 - - 4.9037560820579529e-01 -6.0056501626968384e-01 - 2.7949792146682739e-01 -6.7935609817504883e-01 - <_> - 9.9123207092285156e+01 - - 1 2 2550 1.5000000000000000e+00 0 -1 2551 - 8.6750000000000000e+02 -2 -3 2552 7.5000000000000000e+00 - - -7.2623419761657715e-01 5.3740710020065308e-01 - 3.7403845787048340e-01 -2.7497768402099609e-01 - <_> - 9.8746543884277344e+01 - - 1 2 2553 3.1500000000000000e+01 0 -1 2554 - 5.3500000000000000e+01 -2 -3 2555 1.3500000000000000e+01 - - 4.1538569331169128e-01 -4.7679051756858826e-01 - -6.1080145835876465e-01 4.9855870008468628e-01 - <_> - 9.9137901306152344e+01 - - 1 2 2556 4.5000000000000000e+00 0 -1 2557 - 3.5000000000000000e+00 -2 -3 2558 1.3905000000000000e+03 - - -8.8297528028488159e-01 3.9136049151420593e-01 - 4.8427349328994751e-01 -1.3551473617553711e-01 - <_> - 9.9093750000000000e+01 - - 1 2 2559 1.2500000000000000e+01 0 -1 2560 109. -2 -3 2561 - 1.8500000000000000e+01 - - -2.1636287868022919e-01 4.4644072651863098e-01 - -4.5347277075052261e-02 -8.3115756511688232e-01 - <_> - 9.9295211791992188e+01 - - 1 2 2562 2.7550000000000000e+02 0 -1 2563 21. -2 -3 2564 - 400. - - 8.4553992748260498e-01 -7.8862386941909790e-01 - 2.0146845281124115e-01 -9.3354743719100952e-01 - <_> - 9.9591613769531250e+01 - - 1 2 2565 7.1500000000000000e+01 0 -1 2566 - 2.0500000000000000e+01 -2 -3 2567 1.4450000000000000e+02 - - 2.6693066954612732e-01 -6.6290807723999023e-01 - 4.1993066668510437e-01 -4.1178131103515625e-01 - <_> - 9.9774261474609375e+01 - - 1 2 2568 2.7455000000000000e+03 0 -1 2569 - 2.5000000000000000e+00 -2 -3 2570 1.3500000000000000e+01 - - -4.0591225028038025e-01 2.1991367638111115e-01 -1. 1. - <_> - 9.9528968811035156e+01 - - 1 2 2571 1.1500000000000000e+01 0 -1 2572 - 6.5000000000000000e+00 -2 -3 2573 187. - - -2.4529571831226349e-01 4.4422072172164917e-01 - -7.1468102931976318e-01 6.1321121454238892e-01 - <_> - 9.9765602111816406e+01 - - 1 2 2574 1.0015000000000000e+03 0 -1 2575 - 3.5000000000000000e+00 -2 -3 2576 103. - - 3.6130765080451965e-01 -3.1130629777908325e-01 - -8.0834662914276123e-01 6.8982625007629395e-01 - <_> - 9.9243118286132812e+01 - - 1 2 2577 5.7150000000000000e+02 0 -1 2578 36. -2 -3 2579 - 1.5500000000000000e+01 - - -5.2247774600982666e-01 1. -1.2719422578811646e-01 - 4.9271491169929504e-01 - <_> - 9.9417327880859375e+01 - - 1 2 2580 5.0000000000000000e-01 0 -1 2581 - 2.5000000000000000e+00 -2 -3 2582 2.5000000000000000e+00 - - -5.6974679231643677e-01 6.0422992706298828e-01 - -6.1786216497421265e-01 4.9528244882822037e-02 - <_> - 9.9721191406250000e+01 - - 1 2 2583 2.5000000000000000e+00 0 -1 2584 - 2.4500000000000000e+01 -2 -3 2585 1.4250000000000000e+02 - - -6.2716758251190186e-01 7.0882409811019897e-01 - 3.0386608839035034e-01 -8.0423253774642944e-01 - <_> - 9.9943511962890625e+01 - - 1 2 2586 1.8500000000000000e+01 0 -1 2587 - 3.9500000000000000e+01 -2 -3 2588 1.3750000000000000e+02 - - 3.2850837707519531e-01 -8.2033318281173706e-01 - 2.2231689095497131e-01 -6.0138916969299316e-01 - <_> - 9.9831451416015625e+01 - - 1 2 2589 1.3500000000000000e+01 0 -1 2590 - 4.5500000000000000e+01 -2 -3 2591 4.4500000000000000e+01 - - -4.2661905288696289e-01 5.1914167404174805e-01 - 3.8148659467697144e-01 -8.5451364517211914e-01 - <_> - 9.9631042480468750e+01 - - 1 2 2592 1.5000000000000000e+00 0 -1 2593 - 1.0500000000000000e+01 -2 -3 2594 5.0000000000000000e-01 - - -8.8435149192810059e-01 1. 4.5112967491149902e-01 - -2.0040939748287201e-01 - <_> - 9.9837104797363281e+01 - - 1 2 2595 2.5000000000000000e+00 0 -1 2596 - 2.8050000000000000e+02 -2 -3 2597 3.1500000000000000e+01 - - 2.1158181130886078e-01 -8.0644214153289795e-01 - 2.0606023073196411e-01 -9.3066710233688354e-01 - <_> - 1.0016289520263672e+02 - - 1 2 2598 5.0000000000000000e-01 0 -1 2599 - 5.5850000000000000e+02 -2 -3 2600 7.5000000000000000e+00 - - -8.6102581024169922e-01 3.2579025626182556e-01 - -6.1346149444580078e-01 3.3240249752998352e-01 - <_> - 1.0033647155761719e+02 - - 1 2 2601 3.5000000000000000e+00 0 -1 2602 8. -2 -3 2603 - 5.4500000000000000e+01 - - -7.9454857110977173e-01 9.5821666717529297e-01 - 1.7357560992240906e-01 -8.3915024995803833e-01 - <_> - 1.0047587585449219e+02 - - 0 1 2604 2.5000000000000000e+00 0 1 2604 2.5000000000000000e+00 -1 -2 2605 - 8.2050000000000000e+02 - - -1. -1. -5.9203457832336426e-01 1.3940984010696411e-01 - <_> - 1.0109948730468750e+02 - - 1 2 2606 2.0795000000000000e+03 0 -1 2607 - 1.8550000000000000e+02 -2 -3 2608 1.2500000000000000e+01 - - 6.2360501289367676e-01 -1.7042215168476105e-01 - -7.0164740085601807e-01 9.1911442577838898e-02 - <_> - 1.0105032348632812e+02 - - 1 2 2609 4.6500000000000000e+01 0 -1 2610 - 3.9500000000000000e+01 -2 -3 2611 2.5000000000000000e+00 - - 4.8169857263565063e-01 -5.7907623052597046e-01 - 4.6473887562751770e-01 -3.2131230831146240e-01 - <_> - 1.0105367279052734e+02 - - 1 2 2612 6.7350000000000000e+02 0 -1 2613 - 5.0000000000000000e-01 -2 -3 2614 3740. - - 2.7208894491195679e-01 -4.3277686834335327e-01 - 6.5942746400833130e-01 -5.1724559068679810e-01 - <_> - 1.0141363525390625e+02 - - 1 2 2615 5.0000000000000000e-01 0 -1 2616 - 1.5500000000000000e+01 -2 -3 2617 5.0000000000000000e-01 - - -8.2222098112106323e-01 7.9113721847534180e-01 - 6.9188493490219116e-01 -4.8952169716358185e-02 - <_> - 1.0130570983886719e+02 - - 1 2 2618 2.0500000000000000e+01 0 -1 2619 - 8.5000000000000000e+00 -2 -3 2620 2.0050000000000000e+02 - - -1.0792832076549530e-01 5.1927500963211060e-01 - -7.9460966587066650e-01 8.2356446981430054e-01 - <_> - 1.0164145660400391e+02 - - 1 2 2621 2.1500000000000000e+01 0 -1 2622 - 1.5000000000000000e+00 -2 -3 2623 6.0500000000000000e+01 - - 3.3574688434600830e-01 -4.5670211315155029e-01 - -6.3089555501937866e-01 4.8581323027610779e-01 - <_> - 1.0131285095214844e+02 - - 1 2 2624 9.5000000000000000e+00 0 -1 2625 - 7.3500000000000000e+01 -2 -3 2626 9.5000000000000000e+00 - - 3.0599847435951233e-01 -6.1251938343048096e-01 - -2.9742473363876343e-01 4.9433988332748413e-01 - <_> - 1.0162899780273438e+02 - - 1 2 2627 5.5000000000000000e+00 0 -1 2628 - 2.5000000000000000e+00 -2 -3 2629 8.8850000000000000e+02 - - -3.9324402809143066e-01 3.1614956259727478e-01 - -6.8262726068496704e-01 7.5144731998443604e-01 - <_> - 1.0186949920654297e+02 - - 1 2 2630 1.4805000000000000e+03 0 -1 2631 - 1.0500000000000000e+01 -2 -3 2632 15. - - 2.4050149321556091e-01 -3.6888840794563293e-01 -1. 1. - <_> - 1.0191372680664062e+02 - - 1 2 2633 2.2500000000000000e+01 0 -1 2634 - 4.5000000000000000e+00 -2 -3 2635 4.1950000000000000e+02 - - 2.9375064373016357e-01 -3.5744154453277588e-01 - -3.5613030195236206e-01 8.1968200206756592e-01 - <_> - 1.0208142852783203e+02 - - 1 2 2636 3.5000000000000000e+00 0 -1 2637 21. -2 -3 2638 - 3.5000000000000000e+00 - - -8.8189947605133057e-01 9.3166828155517578e-01 - 4.8177376389503479e-01 -1.2354224920272827e-01 - <_> - 1.0226190948486328e+02 - - 1 2 2639 9.5000000000000000e+00 0 -1 2640 - 5.5000000000000000e+00 -2 -3 2641 1.7285000000000000e+03 - - -9.7239077091217041e-01 8.0751657485961914e-02 - 1.8048079311847687e-01 -7.8952634334564209e-01 - <_> - 1.0249628448486328e+02 - - 1 2 2642 5.0000000000000000e-01 0 -1 2643 - 1.5000000000000000e+00 -2 -3 2644 2.4500000000000000e+01 - - 3.4624457359313965e-01 -4.0281239151954651e-01 - -5.5928331613540649e-01 7.1457552909851074e-01 - <_> - 1.0274293518066406e+02 - - 1 2 2645 3.8500000000000000e+01 0 -1 2646 - 1.7500000000000000e+01 -2 -3 2647 1.4450000000000000e+02 - - 1.3477689027786255e-01 -6.1821442842483521e-01 - 5.9605765342712402e-01 -1.6502375900745392e-01 - <_> - 1.0253598785400391e+02 - - 1 2 2648 1.3500000000000000e+01 0 -1 2649 - 5.2550000000000000e+02 -2 -3 2650 2.2735000000000000e+03 - - -7.9840284585952759e-01 2.3721742630004883e-01 - -5.5634832382202148e-01 3.1294867396354675e-01 - <_> - 1.0290502929687500e+02 - - 1 2 2651 5.4750000000000000e+02 0 -1 2652 - 8.3050000000000000e+02 -2 -3 2653 1.1150000000000000e+02 - - -1.4335750043392181e-01 7.7484899759292603e-01 - -6.7993903160095215e-01 1.6464550048112869e-02 - <_> - 1.0276994323730469e+02 - - 1 2 2654 1.3650000000000000e+02 0 -1 2655 - 1.5000000000000000e+00 -2 -3 2656 5.1500000000000000e+01 - - 4.3065854907035828e-01 -2.5181022286415100e-01 - -7.0685976743698120e-01 5.8210808038711548e-01 - <_> - 1.0282818603515625e+02 - - 1 2 2657 3.6500000000000000e+01 0 -1 2658 - 3.5000000000000000e+00 -2 -3 2659 4.5000000000000000e+00 - - -8.7250131368637085e-01 3.3097213506698608e-01 - 4.2310500144958496e-01 -1.7739102244377136e-01 - <_> - 1.0300099945068359e+02 - - 1 2 2660 1.9050000000000000e+02 0 -1 2661 - 1.6500000000000000e+01 -2 -3 2662 6.3500000000000000e+01 - - -6.1183965206146240e-01 7.1433728933334351e-01 - -9.4837844371795654e-02 5.6334847211837769e-01 - <_> - 1.0327600860595703e+02 - - 1 2 2663 1.1345000000000000e+03 0 -1 2664 - 7.5000000000000000e+00 -2 -3 2665 4.5500000000000000e+01 - - -9.7449356317520142e-01 2.7501192688941956e-01 - -6.7455238103866577e-01 5.9240275621414185e-01 - <_> - 1.0331129455566406e+02 - - 1 2 2666 2.2500000000000000e+01 0 -1 2667 - 7.8350000000000000e+02 -2 -3 2668 87. - - 2.1151831746101379e-01 -9.4473469257354736e-01 - 6.7612463235855103e-01 -8.3754408359527588e-01 - <_> - 1.0303090667724609e+02 - - 1 2 2669 1.3500000000000000e+01 0 -1 2670 - 4.7500000000000000e+01 -2 -3 2671 7.6500000000000000e+01 - - -4.5662239193916321e-01 6.4888173341751099e-01 - 5.7376283407211304e-01 -2.1476963162422180e-01 - <_> - 1.0311815643310547e+02 - - 1 2 2672 1.5000000000000000e+00 0 -1 2673 - 3.5000000000000000e+00 -2 -3 2674 5.7500000000000000e+01 - - -2.0579831302165985e-01 4.5064237713813782e-01 - -5.4586839675903320e-01 8.1367361545562744e-01 - <_> - 1.0337432098388672e+02 - - 1 2 2675 3.7850000000000000e+02 0 -1 2676 59. -2 -3 2677 - 2945. - - -6.2283027172088623e-01 7.8782963752746582e-01 - 2.5616112351417542e-01 -1. - <_> - 1.0362288665771484e+02 - - 1 2 2678 1.1500000000000000e+01 0 -1 2679 - 1.7150000000000000e+02 -2 -3 2680 7.5500000000000000e+01 - - 6.3007098436355591e-01 -4.1216814517974854e-01 - 4.8822152614593506e-01 -3.9382278919219971e-01 - <_> - 1.0388551330566406e+02 - - 1 2 2681 1.5000000000000000e+00 0 -1 2682 - 1.6385000000000000e+03 -2 -3 2683 110. - - 3.0745586752891541e-01 -7.9586678743362427e-01 - 2.6261982321739197e-01 -7.6895767450332642e-01 - <_> - 1.0405072021484375e+02 - - 1 2 2684 1.5000000000000000e+00 0 -1 2685 - 5.6850000000000000e+02 -2 -3 2686 4.5000000000000000e+00 - - 9.3116897344589233e-01 -9.6380370855331421e-01 - -7.6854610443115234e-01 1.6521225869655609e-01 - <_> - 1.0400543975830078e+02 - - 1 2 2687 6.2950000000000000e+02 0 -1 2688 - 5.1450000000000000e+02 -2 -3 2689 236. - - -4.5279026031494141e-02 8.4354996681213379e-01 - -6.6148412227630615e-01 6.9928210973739624e-01 - <_> - 1.0376971435546875e+02 - - 1 2 2690 9.4500000000000000e+01 0 -1 2691 - 1.5050000000000000e+02 -2 -3 2692 1.6750000000000000e+02 - - -2.3573163151741028e-01 4.4335815310478210e-01 - 6.1139583587646484e-01 -6.4605855941772461e-01 - <_> - 1.0405144500732422e+02 - - 1 2 2693 4.4500000000000000e+01 0 -1 2694 - 5.6250000000000000e+02 -2 -3 2695 3.8500000000000000e+01 - - 3.8796469569206238e-02 -6.5249174833297729e-01 - -6.0536789894104004e-01 5.4190611839294434e-01 - <_> - 1.0398574066162109e+02 - - 1 2 2696 4.4500000000000000e+01 0 -1 2697 - 5.0000000000000000e-01 -2 -3 2698 5.2500000000000000e+01 - - 4.2008396983146667e-01 -1.4273323118686676e-01 - -7.3499578237533569e-01 1. - <_> - 1.0385164642333984e+02 - - 1 2 2699 3.8500000000000000e+01 0 -1 2700 - 7.5000000000000000e+00 -2 -3 2701 3.5000000000000000e+00 - - 3.1169781088829041e-01 -7.7311396598815918e-01 - -1.3409157097339630e-01 4.9537870287895203e-01 - <_> - 1.0448446655273438e+02 - - 1 2 2702 2.6050000000000000e+02 0 -1 2703 - 1.8350000000000000e+02 -2 -3 2704 7.6350000000000000e+02 - - -1. 9.7587960958480835e-01 -5.2969473600387573e-01 - 1.2663070857524872e-01 - <_> - 1.0484059906005859e+02 - - 1 2 2705 1.1500000000000000e+01 0 -1 2706 - 4.1850000000000000e+02 -2 -3 2707 2.3500000000000000e+01 - - 7.9048752784729004e-02 -8.0509215593338013e-01 - 3.5613477230072021e-01 -5.6644356250762939e-01 - <_> - 1.0512301635742188e+02 - - 1 2 2708 1485. 0 -1 2709 5.5000000000000000e+00 -2 -3 2710 - 5.0000000000000000e-01 - - -7.0782458782196045e-01 2.8242054581642151e-01 - 3.9573973417282104e-01 -9.0347629785537720e-01 - <_> - 1.0531546020507812e+02 - - 1 2 2711 1353. 0 -1 2712 1.7500000000000000e+01 -2 -3 2713 - 1.0750000000000000e+02 - - 2.7195869013667107e-02 -7.5462043285369873e-01 - 3.2506725192070007e-01 -8.6369091272354126e-01 - <_> - 1.0547406768798828e+02 - - 1 2 2714 2.5000000000000000e+00 0 -1 2715 16. -2 -3 2716 - 4.2955000000000000e+03 - - -1. 7.2179090976715088e-01 1.5860775113105774e-01 - -6.5142124891281128e-01 - <_> - 1.0487975311279297e+02 - - 1 2 2717 1.5500000000000000e+01 0 -1 2718 10700. -2 -3 2719 - 1.7875000000000000e+03 - - 2.6182049885392189e-02 -8.4672302007675171e-01 - -7.7213704586029053e-01 3.4896582365036011e-01 - <_> - 1.0509091186523438e+02 - - 1 2 2720 1.5000000000000000e+00 0 -1 2721 - 1.5000000000000000e+00 -2 -3 2722 2.9500000000000000e+01 - - -8.2644587755203247e-01 2.1116006374359131e-01 - -7.3146438598632812e-01 9.5215821266174316e-01 - <_> - 1.0519564056396484e+02 - - 1 2 2723 3.0500000000000000e+01 0 -1 2724 - 3.4935000000000000e+03 -2 -3 2725 5.7500000000000000e+01 - - -1. 6.9735002517700195e-01 -5.7586830854415894e-01 - 1.0472767800092697e-01 - <_> - 1.0569725799560547e+02 - - 1 2 2726 2.4450000000000000e+02 0 -1 2727 644. -2 -3 2728 - 2.3500000000000000e+01 - - -8.5404765605926514e-01 5.0162208080291748e-01 - -5.6405150890350342e-01 3.5492885112762451e-01 - <_> - 1.0524179077148438e+02 - - 1 2 2729 4.7500000000000000e+01 0 -1 2730 - 2.7650000000000000e+02 -2 -3 2731 2818. - - -4.5547124743461609e-01 3.0731198191642761e-01 - -7.2488194704055786e-01 7.7106243371963501e-01 - <_> - 1.0491101074218750e+02 - - 1 2 2732 3.5000000000000000e+00 0 -1 2733 1511. -2 -3 2734 - 1.7155000000000000e+03 - - 4.6164187788963318e-01 -6.6047859191894531e-01 - -3.3077949285507202e-01 3.7580975890159607e-01 - <_> - 1.0527840423583984e+02 - - 1 2 2735 5.0000000000000000e-01 0 -1 2736 - 1.5000000000000000e+00 -2 -3 2737 9.7750000000000000e+02 - - -5.6398648023605347e-01 3.6739850044250488e-01 - 1.4843972027301788e-01 -7.5591593980789185e-01 - <_> - 1.0569275665283203e+02 - - 1 2 2738 1.3500000000000000e+01 0 -1 2739 - 1.5000000000000000e+00 -2 -3 2740 2.5000000000000000e+00 - - 4.4956609606742859e-01 -5.2449923753738403e-01 - -9.4341361522674561e-01 4.1434991359710693e-01 - <_> - 1.0587648010253906e+02 - - 1 2 2741 2.1515000000000000e+03 0 -1 2742 - 2.6500000000000000e+01 -2 -3 2743 3.0500000000000000e+01 - - 1.8371918797492981e-01 -9.8738479614257812e-01 - -9.1896229982376099e-01 4.3715295195579529e-01 - <_> - 1.0598551177978516e+02 - - 1 2 2744 1.6500000000000000e+01 0 -1 2745 - 4.5000000000000000e+00 -2 -3 2746 1.5175000000000000e+03 - - 1.0903272777795792e-01 -7.6156085729598999e-01 - 3.4190380573272705e-01 -5.6521832942962646e-01 - <_> - 1.0585959625244141e+02 - - 1 2 2747 3.5000000000000000e+00 0 -1 2748 - 1.8650000000000000e+02 -2 -3 2749 1.7500000000000000e+01 - - -8.6969417333602905e-01 8.7447375059127808e-01 - -1.2591452896595001e-01 4.7273957729339600e-01 - <_> - 1.0568214416503906e+02 - - 1 2 2750 245. 0 -1 2751 5.5000000000000000e+00 -2 -3 2752 - 3.5000000000000000e+00 - - 5.2921187877655029e-01 -4.8938277363777161e-01 - 3.0937749147415161e-01 -5.0696980953216553e-01 - <_> - 1.0601576232910156e+02 - - 1 2 2753 1.7500000000000000e+01 0 -1 2754 - 1.1395000000000000e+03 -2 -3 2755 1.0950000000000000e+02 - - 2.8152284026145935e-01 -7.8550308942794800e-01 - 3.3361354470252991e-01 -5.6299263238906860e-01 - <_> - 1.0640065765380859e+02 - - 1 2 2756 5.0000000000000000e-01 0 -1 2757 - 1.5000000000000000e+00 -2 -3 2758 4.5000000000000000e+00 - - -3.8055318593978882e-01 3.8489964604377747e-01 - -5.7636463642120361e-01 4.3075269460678101e-01 - <_> - 1.0641130828857422e+02 - - 1 2 2759 5.7050000000000000e+02 0 -1 2760 - 1.4500000000000000e+01 -2 -3 2761 1.1835000000000000e+03 - - -6.4392197132110596e-01 3.5690125823020935e-01 - 2.9891923069953918e-01 -9.5714271068572998e-01 - <_> - 1.0660404968261719e+02 - - 1 2 2762 1.5000000000000000e+00 0 -1 2763 - 5.9150000000000000e+02 -2 -3 2764 1.1535000000000000e+03 - - -8.0829763412475586e-01 8.4891957044601440e-01 - 1.9274589419364929e-01 -7.3956298828125000e-01 - <_> - 1.0652481079101562e+02 - - 1 2 2765 5.3500000000000000e+01 0 -1 2766 - 3.0950000000000000e+02 -2 -3 2767 8.2500000000000000e+01 - - 2.0712941884994507e-01 -3.6751377582550049e-01 - 7.9296332597732544e-01 -1. - <_> - 1.0692726898193359e+02 - - 1 2 2768 6.6500000000000000e+01 0 -1 2769 1074. -2 -3 2770 - 1.1500000000000000e+01 - - 1.1640611104667187e-02 -8.8242655992507935e-01 - 4.0245753526687622e-01 -6.6962105035781860e-01 - <_> - 1.0722780609130859e+02 - - 1 2 2771 400. 0 -1 2772 258. -2 -3 2773 242. - - 9.5710533857345581e-01 -6.8693101406097412e-01 - 5.1057505607604980e-01 -1.5650358796119690e-01 - <_> - 1.0750185394287109e+02 - - 1 2 2774 3.5000000000000000e+00 0 -1 2775 - 2.0500000000000000e+01 -2 -3 2776 51. - - -6.6889345645904541e-01 9.8602853715419769e-02 - 5.0510036945343018e-01 -7.3887240886688232e-01 - <_> - 1.0781588745117188e+02 - - 1 2 2777 4.5000000000000000e+00 0 -1 2778 - 1.1525000000000000e+03 -2 -3 2779 2.7500000000000000e+01 - - -8.5173243284225464e-01 5.9037590026855469e-01 - 8.2559481263160706e-02 -5.7935595512390137e-01 - <_> - 1.0813179016113281e+02 - - 1 2 2780 1.3500000000000000e+01 0 -1 2781 - 7.6750000000000000e+02 -2 -3 2782 9.5000000000000000e+00 - - -8.5958725214004517e-01 7.9117491841316223e-02 - -8.4548884630203247e-01 3.1590864062309265e-01 - <_> - 1.0812385559082031e+02 - - 1 2 2783 2.5500000000000000e+01 0 -1 2784 - 4.5000000000000000e+00 -2 -3 2785 4.1500000000000000e+01 - - -5.3340083360671997e-01 2.1516241133213043e-01 - -8.2421797513961792e-01 5.7744872570037842e-01 - <_> - 1.0778499603271484e+02 - - 1 2 2786 4.5000000000000000e+00 0 -1 2787 - 1.8050000000000000e+02 -2 -3 2788 5.7500000000000000e+01 - - 3.2442337274551392e-01 -6.3051867485046387e-01 - -5.6196290254592896e-01 1. - <_> - 1.0795186614990234e+02 - - 1 2 2789 9.5000000000000000e+00 0 -1 2790 - 2.9500000000000000e+01 -2 -3 2791 2.4845000000000000e+03 - - -9.0732103586196899e-01 1. -4.3962568044662476e-01 - 2.4967047572135925e-01 - <_> - 1.0834626007080078e+02 - - 1 2 2792 7642. 0 -1 2793 2.9500000000000000e+01 -2 -3 2794 - 1.5500000000000000e+01 - - 4.5714893937110901e-01 -1. -7.8440755605697632e-01 - -2.9551941901445389e-02 - <_> - 1.0802055358886719e+02 - - 1 2 2795 1.3445000000000000e+03 0 -1 2796 - 5.0000000000000000e-01 -2 -3 2797 2.5000000000000000e+00 - - 1.8776105344295502e-01 -5.1964151859283447e-01 - -3.2570576667785645e-01 5.8407723903656006e-01 - <_> - 1.0869297790527344e+02 - - 1 2 2798 3.5000000000000000e+00 0 -1 2799 - 2.6650000000000000e+02 -2 -3 2800 6.8550000000000000e+02 - - 7.9688948392868042e-01 -5.5319869518280029e-01 - 6.7242574691772461e-01 -5.3342822939157486e-03 - <_> - 1.0871336364746094e+02 - - 1 2 2801 1.3550000000000000e+02 0 -1 2802 - 7.8850000000000000e+02 -2 -3 2803 5.3500000000000000e+01 - - -4.0466487407684326e-01 8.8463294506072998e-01 - 4.2380827665328979e-01 -8.9209264516830444e-01 - <_> - 1.0827619934082031e+02 - - 1 2 2804 6.5500000000000000e+01 0 -1 2805 - 1.7500000000000000e+01 -2 -3 2806 2.8950000000000000e+02 - - 1.1377986520528793e-01 -6.0579437017440796e-01 - 5.5230200290679932e-01 -5.3584653139114380e-01 - <_> - 1.0870999145507812e+02 - - 1 2 2807 1.5500000000000000e+01 0 -1 2808 - 3.7850000000000000e+02 -2 -3 2809 2.7750000000000000e+02 - - 3.2576033473014832e-01 -8.8590908050537109e-01 - 4.3379050493240356e-01 -1.6937582194805145e-01 - <_> - 1.0839844512939453e+02 - - 1 2 2810 2.8500000000000000e+01 0 -1 2811 - 3.8500000000000000e+01 -2 -3 2812 2.5500000000000000e+01 - - -3.1154349446296692e-01 6.3721460103988647e-01 - -7.1922361850738525e-01 6.2959849834442139e-01 - <_> - 1.0877592468261719e+02 - - 1 2 2813 1.2500000000000000e+01 0 -1 2814 - 1.3695000000000000e+03 -2 -3 2815 6.5000000000000000e+00 - - -5.5014491081237793e-01 3.7747702002525330e-01 - -6.9611859321594238e-01 1.2586995959281921e-01 - <_> - 1.0896472930908203e+02 - - 1 2 2816 3.1050000000000000e+02 0 -1 2817 - 2.8850000000000000e+02 -2 -3 2818 146. - - 1.8880467116832733e-01 -6.9542157649993896e-01 - -9.3111920356750488e-01 5.6534785032272339e-01 - <_> - 1.0875339508056641e+02 - - 1 2 2819 2.1500000000000000e+01 0 -1 2820 - 2.5000000000000000e+00 -2 -3 2821 1.1850000000000000e+02 - - 7.7443844079971313e-01 -8.0098474025726318e-01 - 3.5482531785964966e-01 -2.7317541837692261e-01 - <_> - 1.0921239471435547e+02 - - 1 2 2822 4.5000000000000000e+00 0 -1 2823 - 8.5000000000000000e+00 -2 -3 2824 8.3500000000000000e+01 - - 4.5899707078933716e-01 -6.2516170740127563e-01 - -4.3385741114616394e-01 5.6751209497451782e-01 - <_> - 1.0947447967529297e+02 - - 1 2 2825 7.5000000000000000e+00 0 -1 2826 - 5.5000000000000000e+00 -2 -3 2827 7.3950000000000000e+02 - - -7.4130195379257202e-01 7.1468836069107056e-01 - -9.7212868928909302e-01 2.6208582520484924e-01 - <_> - 1.0889431762695312e+02 - - 1 2 2828 9.5000000000000000e+00 0 -1 2829 - 8.8350000000000000e+02 -2 -3 2830 1.4285000000000000e+03 - - -5.8016383647918701e-01 4.6283417940139771e-01 - 4.0902158617973328e-01 -3.3674991130828857e-01 - <_> - 1.0909661865234375e+02 - - 1 2 2831 2.3500000000000000e+01 0 -1 2832 - 6.5000000000000000e+00 -2 -3 2833 1.6500000000000000e+01 - - -1. 1. 2.0230437815189362e-01 -6.2151867151260376e-01 - <_> - 1.0936666107177734e+02 - - 1 2 2834 2.7500000000000000e+01 0 -1 2835 - 2.8500000000000000e+01 -2 -3 2836 1.5000000000000000e+00 - - -3.1645810604095459e-01 2.7004209160804749e-01 - 7.3447245359420776e-01 -9.4543099403381348e-01 - <_> - 1.0990542602539062e+02 - - 1 2 2837 6.5000000000000000e+00 0 -1 2838 - 3.3500000000000000e+01 -2 -3 2839 1.7175000000000000e+03 - - 7.3429244756698608e-01 -5.4267537593841553e-01 - -5.2236169576644897e-02 -8.0465143918991089e-01 - <_> - 1.0978697204589844e+02 - - 1 2 2840 2.6850000000000000e+02 0 -1 2841 22. -2 -3 2842 - 8.0500000000000000e+01 - - 1. -9.7474074363708496e-01 -1.1845187842845917e-01 - 5.4515546560287476e-01 - <_> - 1.1009104156494141e+02 - - 1 2 2843 2.5000000000000000e+00 0 -1 2844 736. -2 -3 2845 - 1.9500000000000000e+01 - - -8.2810074090957642e-01 8.5732799768447876e-01 - 3.0406644940376282e-01 -4.0139013528823853e-01 - <_> - 1.1043927764892578e+02 - - 1 2 2846 1.8500000000000000e+01 0 -1 2847 - 1.3500000000000000e+01 -2 -3 2848 3.0500000000000000e+01 - - 2.1801793575286865e-01 -6.8923234939575195e-01 - 3.4824138879776001e-01 -3.9184293150901794e-01 - <_> - 1.1031699371337891e+02 - - 1 2 2849 1.5000000000000000e+00 0 -1 2850 - 6.5000000000000000e+00 -2 -3 2851 1.3150000000000000e+02 - - -8.8171523809432983e-01 4.3543782830238342e-01 - 2.0244181156158447e-01 -5.7358783483505249e-01 - <_> - 1.1005198669433594e+02 - - 1 2 2852 5.0000000000000000e-01 0 -1 2853 - 1.5000000000000000e+00 -2 -3 2854 3.5000000000000000e+00 - - -5.9932529926300049e-01 3.0936628580093384e-01 - 4.5090380311012268e-01 -5.8973568677902222e-01 - <_> - 1.1043847656250000e+02 - - 1 2 2855 1.1535000000000000e+03 0 -1 2856 - 2.5000000000000000e+00 -2 -3 2857 3.3500000000000000e+01 - - 7.6080255210399628e-02 -5.6420469284057617e-01 - -9.0285736322402954e-01 5.2813625335693359e-01 - <_> - 1.1080448150634766e+02 - - 1 2 2858 4.2250000000000000e+02 0 -1 2859 - 1.2500000000000000e+01 -2 -3 2860 6.1500000000000000e+01 - - 3.6600381135940552e-01 -4.2345437407493591e-01 - -6.1723202466964722e-01 3.4586450457572937e-01 - <_> - 1.1106856536865234e+02 - - 1 2 2861 9.5000000000000000e+00 0 -1 2862 - 2.9500000000000000e+01 -2 -3 2863 37. - - -7.5375384092330933e-01 1.6478213667869568e-01 - 2.6408138871192932e-01 -9.8490983247756958e-01 - <_> - 1.1055361175537109e+02 - - 1 2 2864 7.5000000000000000e+00 0 -1 2865 - 4.9500000000000000e+01 -2 -3 2866 5.5000000000000000e+00 - - -5.1494854688644409e-01 5.8261644840240479e-01 - -6.6320908069610596e-01 3.6188036203384399e-01 - <_> - 1.1039524841308594e+02 - - 1 2 2867 2.3500000000000000e+01 0 -1 2868 - 9.3500000000000000e+01 -2 -3 2869 1.9350000000000000e+02 - - 6.8907684087753296e-01 -1.5836885571479797e-01 - -4.8703750967979431e-01 1.7068152129650116e-01 - <_> - 1.1064450073242188e+02 - - 1 2 2870 8.6450000000000000e+02 0 -1 2871 - 4.6500000000000000e+01 -2 -3 2872 2.5500000000000000e+01 - - -5.4546362161636353e-01 2.4925331771373749e-01 - -8.3844619989395142e-01 8.3821475505828857e-01 - <_> - 1.1088278198242188e+02 - - 1 2 2873 1.5000000000000000e+00 0 -1 2874 - 1.3350000000000000e+02 -2 -3 2875 5.0000000000000000e-01 - - -7.7887850999832153e-01 2.3828317224979401e-01 - 4.8272988200187683e-01 -7.2873306274414062e-01 - <_> - 1.1105001068115234e+02 - - 1 2 2876 71. 0 -1 2877 7.5000000000000000e+00 -2 -3 2878 - 8.5000000000000000e+00 - - -8.5053944587707520e-01 1.6722814738750458e-01 - -9.4403290748596191e-01 6.4887309074401855e-01 - <_> - 1.1167649841308594e+02 - - 1 2 2879 3.7850000000000000e+02 0 -1 2880 60. -2 -3 2881 - 9.5750000000000000e+02 - - -8.7580990791320801e-01 1.5962736308574677e-01 - 6.2649267911911011e-01 -9.5386557281017303e-02 - <_> - 1.1183348846435547e+02 - - 1 2 2882 3.8500000000000000e+01 0 -1 2883 - 3.5000000000000000e+00 -2 -3 2884 12. - - 2.6490542292594910e-01 -3.1465035676956177e-01 - 9.2486298084259033e-01 -9.5018434524536133e-01 - <_> - 1.1203981018066406e+02 - - 1 2 2885 7.5000000000000000e+00 0 -1 2886 - 9.8500000000000000e+01 -2 -3 2887 74. - - -9.7645151615142822e-01 1. 2.0632074773311615e-01 - -9.1167140007019043e-01 - <_> - 1.1171997833251953e+02 - - 1 2 2888 5.0000000000000000e-01 0 -1 2889 - 5.5000000000000000e+00 -2 -3 2890 1.1500000000000000e+01 - - -3.1983077526092529e-01 3.1867963075637817e-01 - -7.6559156179428101e-01 4.0382763836532831e-04 - <_> - 1.1211449432373047e+02 - - 1 2 2891 2.1305000000000000e+03 0 -1 2892 - 9.5000000000000000e+00 -2 -3 2893 240. - - -3.2820355892181396e-01 3.9451143145561218e-01 - -6.1393386125564575e-01 8.8679784536361694e-01 - <_> - 1.1231577301025391e+02 - - 1 2 2894 1.0015000000000000e+03 0 -1 2895 - 1.1445000000000000e+03 -2 -3 2896 4.5000000000000000e+00 - - -2.2687128186225891e-01 3.6754199862480164e-01 - 6.3371849060058594e-01 -7.9295963048934937e-01 - <_> - 1.1249615478515625e+02 - - 1 2 2897 2.7500000000000000e+01 0 -1 2898 - 8.5000000000000000e+00 -2 -3 2899 37. - - -7.1115958690643311e-01 1.8038435280323029e-01 - -9.7455215454101562e-01 6.9934636354446411e-01 - <_> - 1.1233912658691406e+02 - - 1 2 2900 2.6050000000000000e+02 0 -1 2901 - 1.0865000000000000e+03 -2 -3 2902 9.5000000000000000e+00 - - -1. 9.7971618175506592e-01 -3.2329601049423218e-01 - 2.7071443200111389e-01 - <_> - 1.1283988952636719e+02 - - 1 2 2903 5.5500000000000000e+01 0 -1 2904 - 4.3535000000000000e+03 -2 -3 2905 2.5450000000000000e+02 - - -7.9977166652679443e-01 7.4463641643524170e-01 - 7.4907875061035156e-01 -2.6945650577545166e-01 - <_> - 1.1258075714111328e+02 - - 1 2 2906 2.5000000000000000e+00 0 -1 2907 - 5.0000000000000000e-01 -2 -3 2908 8.4500000000000000e+01 - - 1. -8.3365887403488159e-01 -2.3259581625461578e-01 - 3.6352834105491638e-01 - <_> - 1.1218470764160156e+02 - - 1 2 2909 5.8500000000000000e+01 0 -1 2910 - 1.5000000000000000e+00 -2 -3 2911 1.4500000000000000e+01 - - 2.9657179117202759e-01 -3.9605233073234558e-01 - -8.2379591464996338e-01 8.8194245100021362e-01 - <_> - 1.1259869384765625e+02 - - 1 2 2912 1.6500000000000000e+01 0 -1 2913 336. -2 -3 2914 - 5.5500000000000000e+01 - - 4.8623585700988770e-01 -5.5348306894302368e-01 - 4.7885289788246155e-01 -7.1009427309036255e-01 - <_> - 1.1295644378662109e+02 - - 1 2 2915 8.5000000000000000e+00 0 -1 2916 531. -2 -3 2917 - 4.5000000000000000e+00 - - 9.0240961313247681e-01 -5.4123049974441528e-01 - -7.9777017235755920e-03 7.5631076097488403e-01 - <_> - 1.1320769500732422e+02 - - 1 2 2918 2.7550000000000000e+02 0 -1 2919 - 2.5500000000000000e+01 -2 -3 2920 4.7575000000000000e+03 - - -7.4220085144042969e-01 6.7942351102828979e-01 - 2.5125479698181152e-01 -8.1848102807998657e-01 - <_> - 1.1344058227539062e+02 - - 1 2 2921 2.5000000000000000e+00 0 -1 2922 1986. -2 -3 2923 - 95. - - -6.4574551582336426e-01 2.3289002478122711e-01 - -7.1047574281692505e-01 4.2588540911674500e-01 - <_> - 1.1300727844238281e+02 - - 1 2 2924 5.0000000000000000e-01 0 -1 2925 - 2.5000000000000000e+00 -2 -3 2926 1062. - - -5.7494455575942993e-01 4.5384889841079712e-01 - 7.2286838293075562e-01 -4.3494719266891479e-01 - <_> - 1.1288256072998047e+02 - - 1 2 2927 3.1500000000000000e+01 0 -1 2928 - 3.5000000000000000e+00 -2 -3 2929 16. - - -7.3260617256164551e-01 1.8130634725093842e-01 -1. 1. - <_> - 1.1306512451171875e+02 - - 1 2 2930 1.2150000000000000e+02 0 -1 2931 - 8.5000000000000000e+00 -2 -3 2932 4.3500000000000000e+01 - - -7.4935305118560791e-01 1.8256729841232300e-01 - -8.5249531269073486e-01 6.5636491775512695e-01 - <_> - 1.1327575683593750e+02 - - 1 2 2933 1.5000000000000000e+00 0 -1 2934 - 2.1500000000000000e+01 -2 -3 2935 1.5000000000000000e+00 - - -4.9801164865493774e-01 2.1062798798084259e-01 - 9.2823314666748047e-01 -8.5738253593444824e-01 - <_> - 1.1357308197021484e+02 - - 1 2 2936 6.4500000000000000e+01 0 -1 2937 - 4.8065000000000000e+03 -2 -3 2938 2.5000000000000000e+00 - - -1. 6.2009447813034058e-01 -5.3834468126296997e-01 - 1.5692129731178284e-01 - <_> - 1.1360353851318359e+02 - - 1 2 2939 1.3500000000000000e+01 0 -1 2940 - 3.3045000000000000e+03 -2 -3 2941 3.7500000000000000e+01 - - -7.1004110574722290e-01 3.1958633661270142e-01 - -5.8265125751495361e-01 6.3131624460220337e-01 - <_> - 1.1372930908203125e+02 - - 1 2 2942 1.4650000000000000e+02 0 -1 2943 - 1.6500000000000000e+01 -2 -3 2944 1.1500000000000000e+01 - - 3.4133225679397583e-01 -5.4960429668426514e-01 - 5.1201045513153076e-01 -6.1359316110610962e-01 - <_> - 1.1392496490478516e+02 - - 1 2 2945 4.4500000000000000e+01 0 -1 2946 - 5.0000000000000000e-01 -2 -3 2947 9.7750000000000000e+02 - - 6.2203013896942139e-01 -6.3180530071258545e-01 - 5.6117540597915649e-01 -1.3368546962738037e-01 - <_> - 1.1346260070800781e+02 - - 1 2 2948 5.5500000000000000e+01 0 -1 2949 - 5.0000000000000000e-01 -2 -3 2950 80. - - 2.3815618455410004e-01 -4.6236431598663330e-01 - 9.0325075387954712e-01 -9.0121394395828247e-01 - <_> - 1.1379386901855469e+02 - - 1 2 2951 9.4500000000000000e+01 0 -1 2952 - 7.5000000000000000e+00 -2 -3 2953 1.1550000000000000e+02 - - -4.6673280000686646e-01 3.3126986026763916e-01 - 9.0798473358154297e-01 -7.4096632003784180e-01 - <_> - 1.1406409454345703e+02 - - 1 2 2954 7.5000000000000000e+00 0 -1 2955 - 8.6500000000000000e+01 -2 -3 2956 1.4500000000000000e+01 - - -9.2672061920166016e-01 7.3485738039016724e-01 - -4.7021928429603577e-01 2.7022856473922729e-01 - <_> - 1.1425277709960938e+02 - - 1 2 2957 8.5350000000000000e+02 0 -1 2958 - 5.0000000000000000e-01 -2 -3 2959 6.8850000000000000e+02 - - 6.2956070899963379e-01 -7.4446845054626465e-01 - 1.8867783248424530e-01 -9.8959106206893921e-01 - <_> - 1.1466915893554688e+02 - - 1 2 2960 1.5000000000000000e+00 0 -1 2961 - 3.5000000000000000e+00 -2 -3 2962 8.5850000000000000e+02 - - 3.6259412765502930e-02 -6.7085331678390503e-01 - 4.1638222336769104e-01 -4.7934916615486145e-01 - <_> - 1.1474370574951172e+02 - - 1 2 2963 9.5000000000000000e+00 0 -1 2964 - 8.5000000000000000e+00 -2 -3 2965 1.7500000000000000e+01 - - -6.9327950477600098e-01 8.3167332410812378e-01 - 2.6488289237022400e-01 -5.8886319398880005e-01 - <_> - 1.1511044311523438e+02 - - 1 2 2966 5.4650000000000000e+02 0 -1 2967 14. -2 -3 2968 - 8.5000000000000000e+00 - - -9.2996919155120850e-01 5.8129179477691650e-01 - 3.6674419045448303e-01 -2.4709728360176086e-01 - <_> - 1.1493881225585938e+02 - - 1 2 2969 5.5000000000000000e+00 0 -1 2970 - 8.5500000000000000e+01 -2 -3 2971 1.3950000000000000e+02 - - -1.7163147032260895e-01 4.9650168418884277e-01 - 5.4086452722549438e-01 -7.1398860216140747e-01 - <_> - 1.1525379943847656e+02 - - 1 2 2972 7.5000000000000000e+00 0 -1 2973 - 9.7500000000000000e+01 -2 -3 2974 7.5000000000000000e+00 - - -9.4871836900711060e-01 8.4198021888732910e-01 - 7.7815693616867065e-01 -4.4086512178182602e-02 - <_> - 1.1525665283203125e+02 - - 1 2 2975 2.5000000000000000e+00 0 -1 2976 - 4.1500000000000000e+01 -2 -3 2977 3.2350000000000000e+02 - - 4.9186840653419495e-01 -7.5632154941558838e-01 - 2.8518673498183489e-03 -8.1358987092971802e-01 - <_> - 1.1538195037841797e+02 - - 1 2 2978 1.7500000000000000e+01 0 -1 2979 - 9.2105000000000000e+03 -2 -3 2980 5.5250000000000000e+02 - - 1.2530399858951569e-01 -7.3197114467620850e-01 - -6.1813545227050781e-01 4.5981425046920776e-01 - <_> - 1.1562681579589844e+02 - - 1 2 2981 5.0000000000000000e-01 0 -1 2982 - 1.5000000000000000e+00 -2 -3 2983 1.1850000000000000e+02 - - -6.4110070466995239e-01 3.4923154115676880e-01 - -6.6522723436355591e-01 4.2554613947868347e-01 - <_> - 1.1559072113037109e+02 - - 1 2 2984 5.0000000000000000e-01 0 -1 2985 - 5.0000000000000000e-01 -2 -3 2986 1.1500000000000000e+01 - - -5.1298755407333374e-01 4.5155742764472961e-01 - -4.8606547713279724e-01 6.4945244789123535e-01 - <_> - 1.1585576629638672e+02 - - 1 2 2987 7.7500000000000000e+01 0 -1 2988 - 2.5000000000000000e+00 -2 -3 2989 2.8500000000000000e+01 - - 2.6504445075988770e-01 -5.9735137224197388e-01 - 5.0929725170135498e-01 -8.4812289476394653e-01 - <_> - 1.1602140808105469e+02 - - 1 2 2990 1315. 0 -1 2991 2.6950000000000000e+02 -2 -3 2992 - 3292. - - 1. -9.5098608732223511e-01 1.6564650833606720e-01 - -9.7165077924728394e-01 - <_> - 1.1634813690185547e+02 - - 1 2 2993 2.8550000000000000e+02 0 -1 2994 - 1.8950000000000000e+02 -2 -3 2995 4.2450000000000000e+02 - - 1.7797231674194336e-01 -7.0725780725479126e-01 - 3.2672277092933655e-01 -4.6791586279869080e-01 - <_> - 1.1600035858154297e+02 - - 1 2 2996 1.2500000000000000e+01 0 -1 2997 - 2.7500000000000000e+01 -2 -3 2998 1.9500000000000000e+01 - - -8.3542865514755249e-01 8.1487077474594116e-01 - -1.1515256017446518e-01 5.5976140499114990e-01 - <_> - 1.1629707336425781e+02 - - 1 2 2999 3.4500000000000000e+01 0 -1 3000 - 5.4500000000000000e+01 -2 -3 3001 3.5000000000000000e+00 - - 2.9671633243560791e-01 -8.1005460023880005e-01 - 4.5441552996635437e-01 -6.3396769762039185e-01 - <_> - 1.1664207458496094e+02 - - 1 2 3002 1.5000000000000000e+00 0 -1 3003 - 6.5000000000000000e+00 -2 -3 3004 1.9500000000000000e+01 - - -7.5282824039459229e-01 8.6983382701873779e-01 - -3.2741194963455200e-01 3.4500163793563843e-01 - <_> - 1.1623783111572266e+02 - - 1 2 3005 5.0000000000000000e-01 0 -1 3006 - 3.8475000000000000e+03 -2 -3 3007 4.7500000000000000e+01 - - -4.6906247735023499e-01 4.3219438195228577e-01 - -5.9196656942367554e-01 3.5415863990783691e-01 - <_> - 1.1682369232177734e+02 - - 1 2 3008 3.5450000000000000e+02 0 -1 3009 2759. -2 -3 3010 - 2.6500000000000000e+01 - - -6.3874697685241699e-01 5.8586502075195312e-01 - -7.2635281085968018e-01 2.0415544509887695e-02 - <_> - 1.1681407165527344e+02 - - 1 2 3011 5.7750000000000000e+02 0 -1 3012 - 1.0500000000000000e+01 -2 -3 3013 3.8965000000000000e+03 - - -9.6233375370502472e-03 -8.1473666429519653e-01 - 6.1106562614440918e-01 -7.2611153125762939e-01 - <_> - 1.1703710937500000e+02 - - 1 2 3014 2.5000000000000000e+00 0 -1 3015 - 6.0515000000000000e+03 -2 -3 3016 9.5000000000000000e+00 - - 2.2303590178489685e-01 -7.8184336423873901e-01 - -7.8855013847351074e-01 5.3229647874832153e-01 - <_> - 1.1659355926513672e+02 - - 1 2 3017 1.5500000000000000e+01 0 -1 3018 - 5.6500000000000000e+01 -2 -3 3019 5.5000000000000000e+00 - - -4.4354486465454102e-01 2.7184101939201355e-01 - -9.1781646013259888e-01 4.9616247415542603e-01 - <_> - 1.1686206054687500e+02 - - 1 2 3020 2.3500000000000000e+01 0 -1 3021 - 1.5000000000000000e+00 -2 -3 3022 1039. - - -6.9499677419662476e-01 2.6850062608718872e-01 - 5.3405404090881348e-01 -8.1517779827117920e-01 - <_> - 1.1712821960449219e+02 - - 1 2 3023 1.1500000000000000e+01 0 -1 3024 - 9.3650000000000000e+02 -2 -3 3025 1.2500000000000000e+01 - - -8.8214719295501709e-01 4.2026668787002563e-01 - -6.5273833274841309e-01 3.7967935204505920e-02 - <_> - 1.1673587799072266e+02 - - 1 2 3026 5.0000000000000000e-01 0 -1 3027 - 3.5000000000000000e+00 -2 -3 3028 3.8500000000000000e+01 - - -5.4606467485427856e-01 4.1681709885597229e-01 - -5.9122633934020996e-01 2.8970411419868469e-01 - <_> - 1.1750084686279297e+02 - - 1 2 3029 1.6500000000000000e+01 0 -1 3030 15. -2 -3 3031 - 1.9855000000000000e+03 - - 9.6899873018264771e-01 -1. -8.1302636861801147e-01 - 3.7165968678891659e-03 - <_> - 1.1750557708740234e+02 - - 1 2 3032 8.2150000000000000e+02 0 -1 3033 - 3.5000000000000000e+00 -2 -3 3034 5.0000000000000000e-01 - - -8.6601996421813965e-01 5.9305047988891602e-01 - -8.5805094242095947e-01 4.7341291792690754e-03 - <_> - 1.1816818237304688e+02 - - 1 2 3035 1.6850000000000000e+02 0 -1 3036 - 1.5000000000000000e+00 -2 -3 3037 1.7500000000000000e+01 - - -1. 6.6260558366775513e-01 -6.9309425354003906e-01 - 5.9965264052152634e-02 - <_> - 1.1821002197265625e+02 - - 1 2 3038 620. 0 -1 3039 1182. -2 -3 3040 - 1.5115000000000000e+03 - - 4.1837029159069061e-02 -7.9592239856719971e-01 -1. - 9.2407900094985962e-01 - <_> - 1.1791598510742188e+02 - - 1 2 3041 1.5000000000000000e+00 0 -1 3042 - 5.0000000000000000e-01 -2 -3 3043 6.5000000000000000e+00 - - -7.0829302072525024e-01 4.5243009924888611e-01 - -6.9395291805267334e-01 7.5258597731590271e-02 - <_> - 1.1805176544189453e+02 - - 1 2 3044 229. 0 -1 3045 1.9835000000000000e+03 -2 -3 3046 - 6.5500000000000000e+01 - - 1.3577787578105927e-01 -9.8038744926452637e-01 1. - -9.8189878463745117e-01 - <_> - 1.1815481567382812e+02 - - 1 2 3047 4.5000000000000000e+00 0 -1 3048 3. -2 -3 3049 - 5.0555000000000000e+03 - - -1. 6.8868088722229004e-01 1.0305030643939972e-01 - -9.2723184823989868e-01 - <_> - 1.1790955352783203e+02 - - 1 2 3050 2.4500000000000000e+01 0 -1 3051 - 8.1500000000000000e+01 -2 -3 3052 1.1500000000000000e+01 - - -2.4526403844356537e-01 7.3126202821731567e-01 - 8.8459062576293945e-01 -1. - <_> - 1.1719922637939453e+02 - - 1 2 3053 3.5000000000000000e+00 0 -1 3054 161. -2 -3 3055 - 2.3055000000000000e+03 - - 3.4097507596015930e-01 -7.3160159587860107e-01 - -7.1032357215881348e-01 2.1932438015937805e-01 - <_> - 1.1802425384521484e+02 - - 1 2 3056 1.0775000000000000e+03 0 -1 3057 1069. -2 -3 3058 - 3.4500000000000000e+01 - - -1. 8.2502609491348267e-01 -3.4417897462844849e-01 - 3.8862380385398865e-01 - <_> - 1.1822765350341797e+02 - - 1 2 3059 5.6500000000000000e+01 0 -1 3060 - 3.5000000000000000e+00 -2 -3 3061 1.5500000000000000e+01 - - -9.4351071119308472e-01 2.0340043306350708e-01 - -9.6025758981704712e-01 9.0146809816360474e-01 - <_> - 1.1837182617187500e+02 - - 1 2 3062 1.9150000000000000e+02 0 -1 3063 - 6.0500000000000000e+01 -2 -3 3064 80. - - 1.4417025446891785e-01 -6.5984970331192017e-01 - -9.8928850889205933e-01 9.0138816833496094e-01 - <_> - 1.1857872009277344e+02 - - 1 2 3065 2.1500000000000000e+01 0 -1 3066 - 5.0000000000000000e-01 -2 -3 3067 2330. - - 5.4495859146118164e-01 -7.0084166526794434e-01 - 2.0690013468265533e-01 -9.6294975280761719e-01 - <_> - 1.1802633666992188e+02 - - 1 2 3068 5.7550000000000000e+02 0 -1 3069 - 1.4750000000000000e+02 -2 -3 3070 3.4500000000000000e+01 - - -5.5238926410675049e-01 1.9023463129997253e-01 - -5.1289671659469604e-01 4.9855348467826843e-01 - - <_> - 2 - - 2 3 4 10 - <_> - 1 - - 2 13 3 2 - <_> - 9 - - 2 6 4 3 - <_> - 7 - - 3 7 2 5 - <_> - 0 - - 2 7 4 4 - <_> - 5 - - 4 0 2 11 - <_> - 1 - - 3 13 2 1 - <_> - 3 - - 0 4 7 2 - <_> - 4 - - 2 8 4 5 - <_> - 0 - - 2 2 5 11 - <_> - 7 - - 3 3 2 11 - <_> - 5 - - 0 14 6 1 - <_> - 8 - - 1 0 6 1 - <_> - 3 - - 1 14 6 1 - <_> - 3 - - 1 3 4 7 - <_> - 4 - - 3 5 2 9 - <_> - 1 - - 1 12 6 2 - <_> - 1 - - 0 5 7 3 - <_> - 3 - - 4 14 3 1 - <_> - 5 - - 2 11 5 2 - <_> - 9 - - 3 4 2 10 - <_> - 8 - - 0 3 5 1 - <_> - 2 - - 5 3 2 4 - <_> - 5 - - 3 1 2 5 - <_> - 9 - - 3 8 2 4 - <_> - 9 - - 1 0 1 13 - <_> - 0 - - 3 10 2 3 - <_> - 2 - - 0 14 6 1 - <_> - 1 - - 3 1 2 9 - <_> - 3 - - 0 2 4 6 - <_> - 4 - - 3 2 2 1 - <_> - 7 - - 1 9 6 1 - <_> - 2 - - 1 7 3 5 - <_> - 5 - - 3 14 4 1 - <_> - 9 - - 0 5 7 1 - <_> - 5 - - 5 1 2 12 - <_> - 0 - - 1 1 3 6 - <_> - 3 - - 2 4 2 8 - <_> - 1 - - 0 0 6 15 - <_> - 1 - - 2 12 3 2 - <_> - 5 - - 4 3 3 3 - <_> - 1 - - 3 1 2 8 - <_> - 7 - - 3 6 3 4 - <_> - 5 - - 2 5 5 7 - <_> - 7 - - 3 0 2 2 - <_> - 9 - - 4 5 1 1 - <_> - 9 - - 0 0 7 4 - <_> - 8 - - 1 6 6 1 - <_> - 4 - - 3 9 3 4 - <_> - 5 - - 1 14 3 1 - <_> - 7 - - 2 1 1 3 - <_> - 2 - - 2 7 4 4 - <_> - 5 - - 2 8 2 3 - <_> - 1 - - 3 4 2 8 - <_> - 9 - - 3 5 1 2 - <_> - 8 - - 0 6 7 5 - <_> - 7 - - 0 13 7 2 - <_> - 7 - - 3 6 2 1 - <_> - 7 - - 3 0 4 15 - <_> - 3 - - 1 5 5 1 - <_> - 4 - - 4 14 2 1 - <_> - 5 - - 3 13 4 2 - <_> - 3 - - 2 9 3 4 - <_> - 9 - - 0 6 1 2 - <_> - 9 - - 6 1 1 1 - <_> - 0 - - 2 2 3 10 - <_> - 5 - - 4 6 2 7 - <_> - 7 - - 2 2 4 3 - <_> - 4 - - 3 1 2 7 - <_> - 8 - - 2 3 4 1 - <_> - 4 - - 0 0 3 1 - <_> - 3 - - 0 14 5 1 - <_> - 1 - - 2 4 4 9 - <_> - 3 - - 2 4 1 3 - <_> - 1 - - 0 9 7 2 - <_> - 9 - - 0 4 7 5 - <_> - 2 - - 4 2 3 4 - <_> - 3 - - 2 10 1 1 - <_> - 2 - - 4 14 3 1 - <_> - 2 - - 1 11 4 2 - <_> - 4 - - 0 0 4 2 - <_> - 9 - - 3 4 2 6 - <_> - 9 - - 6 0 1 12 - <_> - 8 - - 2 6 5 2 - <_> - 5 - - 4 9 2 4 - <_> - 2 - - 4 7 1 2 - <_> - 4 - - 3 9 2 5 - <_> - 1 - - 4 12 1 2 - <_> - 5 - - 2 3 5 3 - <_> - 9 - - 4 5 3 10 - <_> - 5 - - 0 5 3 2 - <_> - 1 - - 0 3 2 4 - <_> - 4 - - 5 0 2 3 - <_> - 5 - - 4 4 3 2 - <_> - 7 - - 2 0 5 5 - <_> - 9 - - 0 0 3 1 - <_> - 4 - - 3 1 1 5 - <_> - 9 - - 3 6 1 7 - <_> - 1 - - 1 0 6 14 - <_> - 3 - - 0 14 7 1 - <_> - 4 - - 2 8 4 5 - <_> - 4 - - 0 1 1 10 - <_> - 3 - - 1 4 6 6 - <_> - 7 - - 1 5 6 5 - <_> - 0 - - 3 10 2 3 - <_> - 8 - - 4 2 1 2 - <_> - 9 - - 3 5 2 1 - <_> - 9 - - 0 6 1 6 - <_> - 4 - - 4 1 1 8 - <_> - 1 - - 4 7 1 1 - <_> - 2 - - 2 6 5 9 - <_> - 5 - - 1 14 6 1 - <_> - 7 - - 3 6 1 5 - <_> - 3 - - 2 2 3 4 - <_> - 0 - - 0 2 6 11 - <_> - 1 - - 3 13 1 2 - <_> - 7 - - 6 1 1 6 - <_> - 5 - - 5 3 1 7 - <_> - 4 - - 2 5 3 10 - <_> - 1 - - 1 13 4 1 - <_> - 1 - - 0 13 6 2 - <_> - 2 - - 1 13 5 2 - <_> - 2 - - 5 7 2 1 - <_> - 2 - - 1 12 5 1 - <_> - 1 - - 3 0 1 13 - <_> - 8 - - 0 5 3 9 - <_> - 5 - - 2 1 3 7 - <_> - 7 - - 0 14 6 1 - <_> - 2 - - 2 0 3 2 - <_> - 3 - - 3 1 1 5 - <_> - 9 - - 3 8 2 2 - <_> - 7 - - 4 5 1 3 - <_> - 0 - - 0 13 2 1 - <_> - 9 - - 1 2 2 2 - <_> - 0 - - 3 13 4 2 - <_> - 3 - - 2 9 2 4 - <_> - 8 - - 1 4 5 2 - <_> - 7 - - 3 6 1 1 - <_> - 2 - - 4 3 2 2 - <_> - 5 - - 3 4 4 2 - <_> - 0 - - 4 2 1 7 - <_> - 1 - - 3 0 1 10 - <_> - 4 - - 3 2 1 7 - <_> - 8 - - 1 1 6 4 - <_> - 8 - - 4 0 3 1 - <_> - 2 - - 4 1 3 13 - <_> - 9 - - 4 7 1 4 - <_> - 1 - - 3 12 2 3 - <_> - 3 - - 0 4 4 3 - <_> - 4 - - 3 11 1 4 - <_> - 1 - - 1 0 4 2 - <_> - 4 - - 3 0 4 5 - <_> - 7 - - 3 7 2 3 - <_> - 0 - - 3 7 4 6 - <_> - 9 - - 0 0 5 11 - <_> - 9 - - 0 1 6 3 - <_> - 3 - - 0 0 3 6 - <_> - 3 - - 1 14 6 1 - <_> - 8 - - 6 2 1 9 - <_> - 2 - - 2 11 4 2 - <_> - 4 - - 3 9 1 5 - <_> - 9 - - 0 5 1 4 - <_> - 1 - - 3 5 4 8 - <_> - 2 - - 2 13 4 2 - <_> - 1 - - 5 10 2 1 - <_> - 0 - - 2 5 1 7 - <_> - 2 - - 1 8 3 4 - <_> - 4 - - 2 8 4 6 - <_> - 1 - - 0 7 5 7 - <_> - 5 - - 1 4 6 2 - <_> - 1 - - 6 12 1 2 - <_> - 1 - - 2 1 3 11 - <_> - 3 - - 1 10 1 2 - <_> - 1 - - 3 4 2 6 - <_> - 9 - - 4 5 1 2 - <_> - 7 - - 4 1 3 7 - <_> - 8 - - 3 0 3 10 - <_> - 5 - - 3 3 3 3 - <_> - 7 - - 6 6 1 8 - <_> - 4 - - 3 2 2 2 - <_> - 0 - - 2 14 5 1 - <_> - 5 - - 2 11 4 2 - <_> - 3 - - 0 7 3 4 - <_> - 9 - - 6 4 1 3 - <_> - 1 - - 1 12 6 2 - <_> - 9 - - 3 1 3 1 - <_> - 1 - - 0 0 7 2 - <_> - 2 - - 4 6 2 7 - <_> - 4 - - 4 1 3 7 - <_> - 4 - - 3 2 2 12 - <_> - 1 - - 2 0 2 4 - <_> - 7 - - 3 3 2 3 - <_> - 9 - - 6 0 1 3 - <_> - 7 - - 1 1 4 1 - <_> - 9 - - 1 3 5 9 - <_> - 8 - - 2 3 5 1 - <_> - 5 - - 3 13 4 2 - <_> - 8 - - 2 2 4 9 - <_> - 3 - - 1 3 1 7 - <_> - 1 - - 1 3 1 4 - <_> - 4 - - 3 5 2 10 - <_> - 5 - - 5 5 1 6 - <_> - 7 - - 0 8 4 2 - <_> - 2 - - 5 14 2 1 - <_> - 1 - - 1 13 6 2 - <_> - 3 - - 2 2 2 6 - <_> - 8 - - 0 6 7 1 - <_> - 9 - - 4 9 1 1 - <_> - 9 - - 0 6 2 6 - <_> - 0 - - 2 2 2 12 - <_> - 9 - - 0 5 3 1 - <_> - 1 - - 3 12 3 2 - <_> - 5 - - 4 8 1 5 - <_> - 4 - - 0 3 5 3 - <_> - 1 - - 2 13 5 1 - <_> - 4 - - 0 1 7 6 - <_> - 4 - - 0 12 7 3 - <_> - 5 - - 0 5 3 2 - <_> - 2 - - 4 10 2 2 - <_> - 2 - - 3 14 3 1 - <_> - 2 - - 2 6 1 8 - <_> - 7 - - 2 0 4 2 - <_> - 1 - - 3 4 3 9 - <_> - 9 - - 0 1 1 1 - <_> - 3 - - 3 4 2 1 - <_> - 0 - - 0 13 2 2 - <_> - 3 - - 2 4 1 3 - <_> - 9 - - 3 4 1 3 - <_> - 7 - - 1 6 4 4 - <_> - 3 - - 3 11 3 2 - <_> - 7 - - 0 1 1 1 - <_> - 1 - - 4 8 1 7 - <_> - 8 - - 3 3 2 2 - <_> - 0 - - 3 4 1 11 - <_> - 2 - - 5 2 1 5 - <_> - 5 - - 5 1 1 11 - <_> - 7 - - 3 8 4 2 - <_> - 9 - - 3 9 2 4 - <_> - 5 - - 2 6 3 7 - <_> - 3 - - 2 3 5 3 - <_> - 7 - - 3 14 1 1 - <_> - 5 - - 0 0 5 1 - <_> - 7 - - 4 5 1 3 - <_> - 9 - - 4 4 1 3 - <_> - 8 - - 6 4 1 4 - <_> - 7 - - 0 3 7 12 - <_> - 7 - - 3 10 4 1 - <_> - 9 - - 3 0 2 11 - <_> - 3 - - 2 2 1 4 - <_> - 0 - - 2 10 4 2 - <_> - 1 - - 2 0 5 2 - <_> - 0 - - 1 13 6 2 - <_> - 1 - - 3 0 2 9 - <_> - 7 - - 6 1 1 1 - <_> - 4 - - 2 8 4 5 - <_> - 5 - - 4 1 1 2 - <_> - 7 - - 1 2 1 5 - <_> - 0 - - 0 11 7 2 - <_> - 3 - - 2 3 4 3 - <_> - 4 - - 0 12 5 3 - <_> - 2 - - 1 4 3 2 - <_> - 3 - - 4 14 3 1 - <_> - 0 - - 3 12 4 1 - <_> - 5 - - 1 13 4 2 - <_> - 9 - - 2 0 1 2 - <_> - 7 - - 6 1 1 2 - <_> - 3 - - 2 0 2 14 - <_> - 9 - - 1 4 6 4 - <_> - 5 - - 4 5 3 1 - <_> - 1 - - 0 0 6 2 - <_> - 8 - - 0 2 6 9 - <_> - 7 - - 0 11 2 1 - <_> - 1 - - 6 6 1 8 - <_> - 1 - - 3 5 2 5 - <_> - 9 - - 4 0 3 3 - <_> - 3 - - 3 3 1 1 - <_> - 4 - - 4 11 1 4 - <_> - 1 - - 4 12 2 2 - <_> - 0 - - 3 9 3 4 - <_> - 2 - - 3 4 2 8 - <_> - 1 - - 3 7 4 1 - <_> - 0 - - 1 13 6 1 - <_> - 4 - - 4 1 1 8 - <_> - 4 - - 2 6 1 9 - <_> - 4 - - 3 1 4 14 - <_> - 5 - - 1 14 6 1 - <_> - 5 - - 2 9 3 4 - <_> - 3 - - 0 3 5 3 - <_> - 1 - - 0 0 7 2 - <_> - 5 - - 0 2 7 1 - <_> - 7 - - 3 7 2 1 - <_> - 0 - - 0 2 7 11 - <_> - 4 - - 0 6 2 4 - <_> - 1 - - 2 12 3 1 - <_> - 7 - - 3 7 4 1 - <_> - 5 - - 4 1 2 12 - <_> - 2 - - 1 8 1 1 - <_> - 4 - - 3 2 1 4 - <_> - 7 - - 2 14 3 1 - <_> - 8 - - 2 0 5 2 - <_> - 9 - - 4 5 1 7 - <_> - 9 - - 6 2 1 2 - <_> - 3 - - 0 7 4 7 - <_> - 4 - - 3 8 2 5 - <_> - 2 - - 5 13 2 2 - <_> - 7 - - 4 8 1 5 - <_> - 5 - - 3 11 3 2 - <_> - 3 - - 2 11 4 2 - <_> - 8 - - 5 4 2 6 - <_> - 1 - - 4 5 1 10 - <_> - 9 - - 3 9 2 3 - <_> - 0 - - 1 3 4 1 - <_> - 3 - - 2 2 1 7 - <_> - 7 - - 1 2 1 7 - <_> - 5 - - 4 4 2 9 - <_> - 5 - - 0 14 4 1 - <_> - 5 - - 0 2 5 5 - <_> - 1 - - 5 3 1 4 - <_> - 1 - - 1 12 4 2 - <_> - 3 - - 0 1 4 6 - <_> - 9 - - 4 5 3 1 - <_> - 3 - - 0 0 2 4 - <_> - 3 - - 1 0 5 1 - <_> - 5 - - 1 12 3 3 - <_> - 2 - - 2 3 4 10 - <_> - 1 - - 1 13 1 1 - <_> - 4 - - 0 8 2 7 - <_> - 7 - - 0 13 2 2 - <_> - 1 - - 6 13 1 2 - <_> - 5 - - 4 2 2 10 - <_> - 1 - - 2 3 5 10 - <_> - 5 - - 3 14 4 1 - <_> - 5 - - 4 0 2 1 - <_> - 5 - - 5 4 2 8 - <_> - 7 - - 1 1 3 13 - <_> - 3 - - 0 4 3 6 - <_> - 1 - - 4 0 2 14 - <_> - 7 - - 2 1 1 1 - <_> - 3 - - 3 3 2 9 - <_> - 7 - - 1 7 1 1 - <_> - 7 - - 0 4 7 8 - <_> - 7 - - 1 2 1 1 - <_> - 9 - - 2 5 4 7 - <_> - 4 - - 0 7 1 3 - <_> - 5 - - 4 5 2 1 - <_> - 3 - - 2 12 3 1 - <_> - 1 - - 2 8 2 4 - <_> - 2 - - 2 14 1 1 - <_> - 7 - - 3 13 2 1 - <_> - 5 - - 1 11 6 4 - <_> - 8 - - 0 6 7 2 - <_> - 4 - - 4 1 1 5 - <_> - 1 - - 3 3 2 2 - <_> - 5 - - 3 3 2 2 - <_> - 1 - - 0 5 5 2 - <_> - 8 - - 0 0 7 1 - <_> - 1 - - 1 7 6 1 - <_> - 5 - - 4 12 2 1 - <_> - 7 - - 6 11 1 2 - <_> - 1 - - 1 0 5 14 - <_> - 0 - - 0 11 1 3 - <_> - 1 - - 2 4 3 8 - <_> - 2 - - 1 5 2 3 - <_> - 3 - - 2 14 5 1 - <_> - 5 - - 3 11 4 3 - <_> - 5 - - 4 3 2 7 - <_> - 9 - - 3 7 1 7 - <_> - 1 - - 2 9 4 3 - <_> - 3 - - 3 3 2 3 - <_> - 9 - - 5 1 2 1 - <_> - 7 - - 6 12 1 2 - <_> - 8 - - 1 5 6 4 - <_> - 9 - - 2 4 2 2 - <_> - 8 - - 0 5 2 3 - <_> - 1 - - 0 10 7 4 - <_> - 4 - - 3 9 3 4 - <_> - 3 - - 2 5 2 9 - <_> - 3 - - 2 3 2 7 - <_> - 9 - - 1 4 6 4 - <_> - 1 - - 2 12 3 2 - <_> - 3 - - 1 3 4 3 - <_> - 7 - - 4 5 1 1 - <_> - 7 - - 2 0 5 15 - <_> - 2 - - 5 4 2 2 - <_> - 1 - - 0 8 5 7 - <_> - 5 - - 2 14 5 1 - <_> - 7 - - 5 5 1 4 - <_> - 5 - - 1 5 6 7 - <_> - 7 - - 1 0 6 9 - <_> - 4 - - 1 5 6 2 - <_> - 9 - - 4 6 2 6 - <_> - 1 - - 0 5 5 2 - <_> - 8 - - 2 6 5 1 - <_> - 0 - - 4 8 2 5 - <_> - 9 - - 0 4 6 5 - <_> - 2 - - 3 13 4 2 - <_> - 3 - - 2 9 1 2 - <_> - 7 - - 1 9 6 2 - <_> - 2 - - 1 1 4 1 - <_> - 5 - - 2 3 5 3 - <_> - 4 - - 6 2 1 12 - <_> - 4 - - 2 8 3 5 - <_> - 2 - - 1 11 5 2 - <_> - 4 - - 1 7 1 8 - <_> - 3 - - 2 13 4 2 - <_> - 1 - - 3 5 2 1 - <_> - 4 - - 4 1 1 8 - <_> - 3 - - 2 0 4 10 - <_> - 1 - - 3 12 1 2 - <_> - 3 - - 0 4 7 1 - <_> - 4 - - 2 1 5 14 - <_> - 4 - - 0 6 2 5 - <_> - 8 - - 2 0 4 1 - <_> - 5 - - 3 10 3 3 - <_> - 9 - - 4 4 3 7 - <_> - 4 - - 2 5 5 1 - <_> - 3 - - 2 3 5 3 - <_> - 2 - - 2 14 3 1 - <_> - 0 - - 2 1 3 4 - <_> - 5 - - 5 1 1 10 - <_> - 0 - - 2 0 5 2 - <_> - 1 - - 0 3 7 4 - <_> - 4 - - 6 4 1 3 - <_> - 1 - - 3 7 2 6 - <_> - 2 - - 2 7 4 5 - <_> - 5 - - 5 11 1 1 - <_> - 7 - - 0 7 4 3 - <_> - 9 - - 3 5 2 3 - <_> - 7 - - 3 6 2 1 - <_> - 0 - - 1 10 3 2 - <_> - 3 - - 0 13 2 1 - <_> - 7 - - 4 14 1 1 - <_> - 0 - - 2 6 2 6 - <_> - 0 - - 3 10 4 3 - <_> - 7 - - 4 14 1 1 - <_> - 8 - - 4 3 1 1 - <_> - 8 - - 0 7 2 1 - <_> - 0 - - 3 13 3 2 - <_> - 8 - - 1 1 5 7 - <_> - 4 - - 2 2 2 6 - <_> - 0 - - 0 4 7 3 - <_> - 9 - - 0 1 1 3 - <_> - 2 - - 2 3 4 5 - <_> - 9 - - 3 1 2 11 - <_> - 8 - - 3 3 2 10 - <_> - 2 - - 5 13 2 2 - <_> - 1 - - 1 1 4 11 - <_> - 3 - - 1 4 5 9 - <_> - 7 - - 1 6 3 2 - <_> - 8 - - 1 9 4 3 - <_> - 3 - - 1 11 4 2 - <_> - 0 - - 3 7 1 7 - <_> - 4 - - 2 8 4 5 - <_> - 1 - - 0 0 7 1 - <_> - 1 - - 3 3 2 11 - <_> - 5 - - 5 3 2 3 - <_> - 7 - - 3 11 1 2 - <_> - 4 - - 3 6 2 7 - <_> - 3 - - 1 4 1 2 - <_> - 1 - - 3 12 3 3 - <_> - 4 - - 0 4 7 1 - <_> - 4 - - 0 13 5 2 - <_> - 0 - - 1 13 5 2 - <_> - 9 - - 1 0 2 2 - <_> - 4 - - 6 9 1 2 - <_> - 2 - - 4 2 2 4 - <_> - 5 - - 4 4 2 8 - <_> - 1 - - 3 1 4 14 - <_> - 7 - - 2 13 4 2 - <_> - 9 - - 4 8 1 3 - <_> - 7 - - 3 6 2 4 - <_> - 9 - - 6 0 1 15 - <_> - 9 - - 5 4 2 1 - <_> - 9 - - 2 4 3 11 - <_> - 2 - - 1 11 5 2 - <_> - 8 - - 0 4 5 9 - <_> - 7 - - 3 7 2 4 - <_> - 0 - - 0 13 3 2 - <_> - 0 - - 1 8 6 4 - <_> - 7 - - 3 10 2 2 - <_> - 8 - - 2 2 4 2 - <_> - 8 - - 4 3 1 2 - <_> - 1 - - 3 7 2 7 - <_> - 2 - - 5 2 1 4 - <_> - 5 - - 4 4 1 3 - <_> - 5 - - 3 14 4 1 - <_> - 4 - - 1 11 6 1 - <_> - 5 - - 1 0 3 3 - <_> - 7 - - 3 8 2 3 - <_> - 3 - - 0 0 3 4 - <_> - 1 - - 0 0 7 2 - <_> - 5 - - 0 8 6 4 - <_> - 3 - - 3 1 2 5 - <_> - 4 - - 3 5 1 10 - <_> - 4 - - 2 4 4 1 - <_> - 1 - - 0 2 7 4 - <_> - 8 - - 6 5 1 5 - <_> - 1 - - 0 8 6 3 - <_> - 9 - - 3 4 2 2 - <_> - 7 - - 1 4 1 1 - <_> - 7 - - 0 4 7 11 - <_> - 2 - - 0 14 6 1 - <_> - 9 - - 2 5 5 4 - <_> - 3 - - 3 14 4 1 - <_> - 5 - - 4 2 2 11 - <_> - 1 - - 3 9 2 3 - <_> - 8 - - 0 6 7 6 - <_> - 3 - - 1 5 4 1 - <_> - 7 - - 1 2 3 4 - <_> - 0 - - 2 12 5 1 - <_> - 9 - - 1 2 1 2 - <_> - 7 - - 1 1 1 2 - <_> - 4 - - 3 1 2 8 - <_> - 9 - - 0 4 7 2 - <_> - 1 - - 1 12 3 2 - <_> - 5 - - 3 2 4 4 - <_> - 1 - - 2 4 4 9 - <_> - 2 - - 3 2 2 2 - <_> - 1 - - 0 10 7 1 - <_> - 2 - - 5 13 2 2 - <_> - 9 - - 2 3 4 1 - <_> - 3 - - 1 6 6 3 - <_> - 2 - - 4 8 2 5 - <_> - 7 - - 3 8 1 2 - <_> - 2 - - 2 14 3 1 - <_> - 4 - - 3 2 2 2 - <_> - 1 - - 3 2 2 3 - <_> - 4 - - 3 5 1 5 - <_> - 9 - - 0 6 1 4 - <_> - 3 - - 2 4 2 3 - <_> - 4 - - 0 12 6 3 - <_> - 1 - - 1 13 6 2 - <_> - 3 - - 2 4 5 4 - <_> - 4 - - 1 12 5 3 - <_> - 0 - - 3 10 3 3 - <_> - 7 - - 0 11 7 1 - <_> - 0 - - 3 13 3 2 - <_> - 5 - - 4 4 3 2 - <_> - 9 - - 4 6 1 6 - <_> - 2 - - 2 7 3 5 - <_> - 8 - - 2 5 5 2 - <_> - 3 - - 1 1 1 3 - <_> - 8 - - 3 2 4 11 - <_> - 1 - - 3 1 1 10 - <_> - 4 - - 1 5 6 1 - <_> - 4 - - 0 1 7 14 - <_> - 1 - - 1 10 6 4 - <_> - 4 - - 0 9 1 2 - <_> - 1 - - 5 13 2 2 - <_> - 8 - - 2 0 5 1 - <_> - 9 - - 1 4 5 2 - <_> - 9 - - 2 14 4 1 - <_> - 7 - - 5 0 2 3 - <_> - 4 - - 0 8 7 7 - <_> - 5 - - 4 2 2 12 - <_> - 3 - - 2 11 5 2 - <_> - 5 - - 1 11 2 1 - <_> - 3 - - 6 11 1 3 - <_> - 5 - - 1 5 6 1 - <_> - 4 - - 2 1 5 14 - <_> - 2 - - 0 14 6 1 - <_> - 7 - - 3 5 4 5 - <_> - 0 - - 0 0 3 8 - <_> - 7 - - 1 0 1 3 - <_> - 1 - - 3 4 2 8 - <_> - 1 - - 4 11 3 3 - <_> - 1 - - 0 1 3 6 - <_> - 9 - - 0 6 1 5 - <_> - 8 - - 5 4 1 4 - <_> - 9 - - 0 5 6 3 - <_> - 5 - - 4 10 2 3 - <_> - 5 - - 5 7 1 2 - <_> - 5 - - 4 13 3 2 - <_> - 4 - - 2 11 5 1 - <_> - 4 - - 3 2 3 2 - <_> - 4 - - 0 8 6 6 - <_> - 3 - - 3 2 1 3 - <_> - 7 - - 1 0 6 11 - <_> - 0 - - 2 2 5 12 - <_> - 5 - - 0 14 4 1 - <_> - 3 - - 3 7 3 4 - <_> - 0 - - 4 8 2 3 - <_> - 4 - - 2 8 5 7 - <_> - 9 - - 6 0 1 5 - <_> - 7 - - 2 0 3 1 - <_> - 1 - - 3 12 2 2 - <_> - 3 - - 0 3 4 4 - <_> - 9 - - 3 7 3 5 - <_> - 3 - - 2 3 4 8 - <_> - 4 - - 0 6 1 3 - <_> - 4 - - 2 10 3 4 - <_> - 3 - - 2 14 5 1 - <_> - 9 - - 0 2 2 13 - <_> - 4 - - 0 9 2 2 - <_> - 9 - - 0 5 7 1 - <_> - 1 - - 3 1 2 7 - <_> - 0 - - 3 10 3 3 - <_> - 7 - - 2 6 4 4 - <_> - 2 - - 3 3 2 9 - <_> - 7 - - 1 2 1 1 - <_> - 4 - - 3 9 1 3 - <_> - 2 - - 3 7 2 3 - <_> - 5 - - 0 5 7 1 - <_> - 3 - - 0 11 5 2 - <_> - 5 - - 3 11 2 2 - <_> - 2 - - 0 14 6 1 - <_> - 4 - - 2 11 2 2 - <_> - 9 - - 2 8 4 2 - <_> - 2 - - 2 11 3 2 - <_> - 8 - - 0 6 7 2 - <_> - 7 - - 1 3 1 10 - <_> - 7 - - 0 2 1 13 - <_> - 2 - - 4 10 2 3 - <_> - 7 - - 1 11 6 2 - <_> - 1 - - 0 0 7 2 - <_> - 2 - - 2 7 2 4 - <_> - 7 - - 0 0 1 2 - <_> - 4 - - 3 2 2 3 - <_> - 5 - - 3 3 4 4 - <_> - 1 - - 1 12 6 2 - <_> - 5 - - 3 5 1 5 - <_> - 5 - - 0 14 7 1 - <_> - 1 - - 3 4 4 9 - <_> - 3 - - 0 13 6 2 - <_> - 5 - - 4 2 2 11 - <_> - 9 - - 3 5 2 8 - <_> - 9 - - 2 5 5 7 - <_> - 5 - - 0 14 5 1 - <_> - 5 - - 3 11 3 3 - <_> - 8 - - 0 2 7 12 - <_> - 9 - - 6 3 1 1 - <_> - 2 - - 0 3 1 8 - <_> - 9 - - 3 4 2 1 - <_> - 4 - - 3 8 2 5 - <_> - 7 - - 0 8 5 7 - <_> - 0 - - 0 10 4 2 - <_> - 7 - - 1 9 5 1 - <_> - 7 - - 2 3 4 11 - <_> - 7 - - 3 6 2 1 - <_> - 3 - - 1 4 6 8 - <_> - 7 - - 2 6 2 1 - <_> - 0 - - 2 11 4 2 - <_> - 2 - - 5 13 2 2 - <_> - 4 - - 1 2 6 4 - <_> - 4 - - 2 7 5 3 - <_> - 4 - - 0 1 1 1 - <_> - 3 - - 3 0 4 9 - <_> - 4 - - 4 0 2 2 - <_> - 3 - - 1 10 6 5 - <_> - 0 - - 2 2 2 6 - <_> - 9 - - 0 0 7 4 - <_> - 8 - - 3 2 3 2 - <_> - 3 - - 3 4 1 1 - <_> - 9 - - 2 3 4 6 - <_> - 4 - - 4 1 1 7 - <_> - 7 - - 3 14 2 1 - <_> - 5 - - 4 6 3 9 - <_> - 1 - - 3 0 4 13 - <_> - 1 - - 2 12 4 2 - <_> - 3 - - 2 0 4 1 - <_> - 4 - - 1 14 6 1 - <_> - 8 - - 1 8 4 2 - <_> - 1 - - 1 6 6 8 - <_> - 3 - - 2 4 2 8 - <_> - 7 - - 1 0 1 8 - <_> - 4 - - 0 3 5 3 - <_> - 2 - - 2 9 3 4 - <_> - 9 - - 2 4 4 2 - <_> - 1 - - 1 1 4 13 - <_> - 0 - - 0 13 2 2 - <_> - 3 - - 1 4 2 3 - <_> - 8 - - 0 0 7 7 - <_> - 7 - - 1 14 1 1 - <_> - 2 - - 3 13 2 2 - <_> - 3 - - 1 4 4 2 - <_> - 1 - - 4 9 1 3 - <_> - 1 - - 2 13 3 2 - <_> - 0 - - 2 10 4 2 - <_> - 8 - - 2 1 5 4 - <_> - 8 - - 3 3 2 1 - <_> - 0 - - 2 4 1 1 - <_> - 1 - - 3 12 2 2 - <_> - 5 - - 1 4 6 2 - <_> - 9 - - 3 4 4 9 - <_> - 9 - - 6 1 1 1 - <_> - 0 - - 0 9 3 2 - <_> - 2 - - 3 6 3 7 - <_> - 9 - - 0 5 2 2 - <_> - 2 - - 2 0 3 3 - <_> - 3 - - 0 3 7 3 - <_> - 9 - - 0 1 2 3 - <_> - 1 - - 0 7 6 7 - <_> - 0 - - 1 13 4 2 - <_> - 0 - - 1 2 5 12 - <_> - 1 - - 0 13 5 2 - <_> - 7 - - 3 5 3 5 - <_> - 8 - - 2 2 1 9 - <_> - 9 - - 2 4 2 3 - <_> - 2 - - 2 3 2 11 - <_> - 1 - - 2 12 3 2 - <_> - 3 - - 0 0 5 7 - <_> - 1 - - 0 11 7 2 - <_> - 5 - - 1 13 4 2 - <_> - 5 - - 4 6 3 8 - <_> - 8 - - 5 6 1 4 - <_> - 1 - - 0 0 1 6 - <_> - 3 - - 0 3 6 4 - <_> - 9 - - 3 0 1 14 - <_> - 4 - - 3 9 1 6 - <_> - 1 - - 3 2 1 10 - <_> - 5 - - 5 9 1 2 - <_> - 0 - - 2 14 3 1 - <_> - 4 - - 2 8 4 6 - <_> - 5 - - 3 3 4 3 - <_> - 7 - - 1 0 1 8 - <_> - 7 - - 3 0 4 15 - <_> - 3 - - 1 3 3 2 - <_> - 9 - - 2 5 2 1 - <_> - 9 - - 6 0 1 6 - <_> - 5 - - 4 9 1 5 - <_> - 5 - - 0 5 7 2 - <_> - 4 - - 4 6 3 3 - <_> - 1 - - 0 4 7 5 - <_> - 3 - - 0 14 7 1 - <_> - 1 - - 4 5 1 7 - <_> - 9 - - 3 3 1 12 - <_> - 1 - - 4 0 1 11 - <_> - 4 - - 2 2 3 4 - <_> - 8 - - 0 5 7 7 - <_> - 3 - - 1 7 3 7 - <_> - 3 - - 6 6 1 1 - <_> - 2 - - 3 1 4 9 - <_> - 5 - - 4 2 1 1 - <_> - 9 - - 1 7 5 3 - <_> - 0 - - 1 10 6 3 - <_> - 9 - - 0 6 2 6 - <_> - 3 - - 5 6 2 8 - <_> - 9 - - 0 7 5 2 - <_> - 7 - - 4 6 1 2 - <_> - 5 - - 5 1 1 8 - <_> - 0 - - 2 3 5 6 - <_> - 0 - - 2 0 5 2 - <_> - 1 - - 2 12 4 2 - <_> - 5 - - 0 11 2 3 - <_> - 3 - - 1 5 6 2 - <_> - 9 - - 3 4 1 9 - <_> - 7 - - 1 8 4 2 - <_> - 1 - - 2 1 4 12 - <_> - 8 - - 2 3 4 1 - <_> - 1 - - 0 10 5 1 - <_> - 4 - - 3 1 2 8 - <_> - 1 - - 3 7 2 1 - <_> - 5 - - 3 8 2 5 - <_> - 2 - - 4 14 2 1 - <_> - 4 - - 3 8 2 5 - <_> - 3 - - 6 1 1 1 - <_> - 2 - - 2 3 4 10 - <_> - 2 - - 4 4 2 1 - <_> - 7 - - 3 14 1 1 - <_> - 1 - - 0 5 5 2 - <_> - 2 - - 0 12 7 3 - <_> - 2 - - 5 4 1 11 - <_> - 8 - - 1 2 6 3 - <_> - 8 - - 0 3 5 1 - <_> - 1 - - 6 1 1 7 - <_> - 5 - - 2 4 1 1 - <_> - 9 - - 3 6 1 7 - <_> - 4 - - 6 9 1 1 - <_> - 5 - - 5 4 1 6 - <_> - 9 - - 3 2 3 11 - <_> - 4 - - 0 9 2 3 - <_> - 5 - - 3 14 4 1 - <_> - 3 - - 1 12 5 1 - <_> - 3 - - 0 3 4 8 - <_> - 1 - - 3 2 2 10 - <_> - 1 - - 1 13 2 2 - <_> - 2 - - 5 1 1 6 - <_> - 1 - - 4 10 3 3 - <_> - 4 - - 6 10 1 2 - <_> - 7 - - 4 7 3 1 - <_> - 0 - - 2 2 4 10 - <_> - 1 - - 3 5 2 8 - <_> - 9 - - 1 0 2 2 - <_> - 9 - - 0 5 7 3 - <_> - 2 - - 4 2 3 2 - <_> - 7 - - 1 10 6 2 - <_> - 1 - - 3 0 4 2 - <_> - 5 - - 3 2 4 1 - <_> - 7 - - 3 7 2 4 - <_> - 5 - - 1 4 6 2 - <_> - 0 - - 1 1 6 1 - <_> - 1 - - 2 10 1 1 - <_> - 9 - - 6 0 1 14 - <_> - 7 - - 6 11 1 3 - <_> - 1 - - 5 8 2 6 - <_> - 3 - - 2 9 2 4 - <_> - 3 - - 0 12 3 1 - <_> - 2 - - 3 13 4 2 - <_> - 4 - - 2 8 5 6 - <_> - 2 - - 2 7 1 2 - <_> - 2 - - 1 6 5 1 - <_> - 3 - - 1 14 6 1 - <_> - 5 - - 3 12 2 1 - <_> - 3 - - 0 1 4 6 - <_> - 8 - - 2 0 4 1 - <_> - 4 - - 0 6 3 2 - <_> - 9 - - 4 9 1 1 - <_> - 7 - - 0 5 7 5 - <_> - 1 - - 3 1 2 8 - <_> - 1 - - 0 5 3 3 - <_> - 2 - - 4 3 2 10 - <_> - 4 - - 3 4 1 10 - <_> - 9 - - 0 4 7 2 - <_> - 1 - - 2 0 2 9 - <_> - 4 - - 3 2 1 4 - <_> - 4 - - 1 14 6 1 - <_> - 0 - - 1 13 1 1 - <_> - 3 - - 2 11 4 2 - <_> - 2 - - 0 12 2 1 - <_> - 3 - - 2 3 2 8 - <_> - 9 - - 1 5 4 2 - <_> - 0 - - 4 6 2 6 - <_> - 8 - - 3 3 2 1 - <_> - 4 - - 0 0 4 1 - <_> - 7 - - 1 8 6 3 - <_> - 7 - - 4 14 1 1 - <_> - 4 - - 1 12 6 3 - <_> - 5 - - 3 2 4 4 - <_> - 1 - - 0 12 5 1 - <_> - 3 - - 0 3 3 3 - <_> - 8 - - 0 0 7 7 - <_> - 1 - - 3 7 2 6 - <_> - 0 - - 0 2 6 4 - <_> - 1 - - 2 4 4 10 - <_> - 1 - - 3 12 2 3 - <_> - 7 - - 2 3 4 1 - <_> - 9 - - 0 4 7 11 - <_> - 0 - - 2 10 3 1 - <_> - 7 - - 1 11 6 1 - <_> - 1 - - 4 4 1 11 - <_> - 0 - - 2 14 3 1 - <_> - 9 - - 2 14 4 1 - <_> - 5 - - 4 5 3 2 - <_> - 1 - - 1 3 4 2 - <_> - 2 - - 2 10 3 2 - <_> - 4 - - 1 1 4 14 - <_> - 1 - - 1 0 4 2 - <_> - 3 - - 2 2 3 2 - <_> - 7 - - 3 6 2 1 - <_> - 4 - - 4 1 1 8 - <_> - 4 - - 0 0 6 15 - <_> - 5 - - 3 3 2 2 - <_> - 4 - - 4 3 3 4 - <_> - 9 - - 0 5 7 1 - <_> - 3 - - 1 4 3 2 - <_> - 3 - - 0 4 7 2 - <_> - 1 - - 3 12 3 3 - <_> - 2 - - 0 5 4 9 - <_> - 9 - - 0 0 2 4 - <_> - 2 - - 2 10 3 2 - <_> - 2 - - 0 14 3 1 - <_> - 5 - - 2 5 3 7 - <_> - 2 - - 2 9 3 4 - <_> - 4 - - 1 11 6 2 - <_> - 8 - - 4 0 2 1 - <_> - 0 - - 2 9 3 3 - <_> - 1 - - 3 4 3 6 - <_> - 9 - - 4 6 1 1 - <_> - 9 - - 0 11 4 1 - <_> - 3 - - 2 3 1 10 - <_> - 2 - - 2 0 4 2 - <_> - 1 - - 2 13 1 1 - <_> - 2 - - 4 0 1 1 - <_> - 5 - - 2 11 4 2 - <_> - 4 - - 2 1 5 14 - <_> - 3 - - 3 1 1 5 - <_> - 5 - - 1 14 6 1 - <_> - 4 - - 3 4 1 11 - <_> - 9 - - 3 7 1 7 - <_> - 3 - - 1 4 5 9 - <_> - 1 - - 0 3 7 4 - <_> - 4 - - 3 2 2 3 - <_> - 7 - - 3 6 2 5 - <_> - 2 - - 3 1 4 12 - <_> - 1 - - 0 0 6 3 - <_> - 2 - - 1 13 4 2 - <_> - 1 - - 2 0 4 13 - <_> - 7 - - 3 7 2 1 - <_> - 8 - - 0 6 7 1 - <_> - 4 - - 2 12 4 3 - <_> - 2 - - 0 11 7 4 - <_> - 4 - - 4 7 3 4 - <_> - 1 - - 0 10 4 4 - <_> - 5 - - 5 2 1 11 - <_> - 3 - - 4 14 3 1 - <_> - 1 - - 4 12 3 3 - <_> - 4 - - 1 14 5 1 - <_> - 2 - - 2 7 4 4 - <_> - 7 - - 1 8 1 1 - <_> - 7 - - 1 7 2 3 - <_> - 3 - - 0 4 3 2 - <_> - 4 - - 2 7 3 1 - <_> - 9 - - 4 5 3 5 - <_> - 4 - - 3 6 2 6 - <_> - 1 - - 0 7 5 3 - <_> - 7 - - 3 4 2 1 - <_> - 5 - - 3 14 4 1 - <_> - 1 - - 2 9 2 3 - <_> - 7 - - 1 0 4 1 - <_> - 0 - - 2 10 5 3 - <_> - 9 - - 4 5 2 2 - <_> - 9 - - 6 0 1 13 - <_> - 0 - - 3 13 4 2 - <_> - 8 - - 3 1 2 3 - <_> - 8 - - 1 13 4 1 - <_> - 7 - - 0 9 6 1 - <_> - 9 - - 3 3 2 7 - <_> - 5 - - 4 0 3 6 - <_> - 4 - - 2 8 4 5 - <_> - 2 - - 4 2 3 4 - <_> - 4 - - 3 7 3 1 - <_> - 0 - - 0 1 5 1 - <_> - 1 - - 0 7 7 7 - <_> - 4 - - 4 3 3 2 - <_> - 4 - - 3 3 2 3 - <_> - 9 - - 4 4 1 2 - <_> - 4 - - 2 0 5 6 - <_> - 9 - - 1 3 6 6 - <_> - 3 - - 2 11 5 2 - <_> - 3 - - 0 0 3 9 - <_> - 8 - - 3 2 4 6 - <_> - 4 - - 0 8 7 7 - <_> - 8 - - 5 0 2 6 - <_> - 3 - - 0 0 2 3 - <_> - 0 - - 2 3 2 2 - <_> - 1 - - 0 13 7 2 - <_> - 2 - - 0 14 5 1 - <_> - 5 - - 3 12 4 2 - <_> - 0 - - 5 7 2 2 - <_> - 3 - - 1 0 6 1 - <_> - 2 - - 2 2 4 9 - <_> - 3 - - 0 4 2 3 - <_> - 1 - - 1 11 1 4 - <_> - 1 - - 0 13 5 1 - <_> - 0 - - 4 6 2 9 - <_> - 5 - - 4 0 1 7 - <_> - 7 - - 5 11 2 3 - <_> - 9 - - 1 8 6 4 - <_> - 9 - - 1 3 1 2 - <_> - 4 - - 0 12 2 3 - <_> - 9 - - 1 5 6 1 - <_> - 8 - - 3 3 2 1 - <_> - 1 - - 1 10 2 1 - <_> - 1 - - 3 5 2 8 - <_> - 5 - - 5 5 2 1 - <_> - 7 - - 3 12 2 3 - <_> - 3 - - 0 7 6 7 - <_> - 7 - - 0 6 7 8 - <_> - 1 - - 6 10 1 4 - <_> - 9 - - 3 1 1 1 - <_> - 3 - - 1 3 3 10 - <_> - 1 - - 0 5 6 2 - <_> - 2 - - 2 12 4 1 - <_> - 5 - - 2 14 4 1 - <_> - 4 - - 2 8 3 5 - <_> - 3 - - 2 4 3 3 - <_> - 3 - - 1 5 3 2 - <_> - 7 - - 3 8 2 1 - <_> - 9 - - 0 5 7 1 - <_> - 0 - - 2 11 4 1 - <_> - 9 - - 0 8 7 2 - <_> - 2 - - 2 13 4 2 - <_> - 1 - - 4 0 1 9 - <_> - 3 - - 2 6 2 4 - <_> - 4 - - 3 8 3 6 - <_> - 2 - - 2 5 4 8 - <_> - 9 - - 0 0 7 10 - <_> - 3 - - 2 13 5 2 - <_> - 4 - - 2 5 5 1 - <_> - 0 - - 0 8 4 2 - <_> - 2 - - 2 4 1 2 - <_> - 5 - - 4 2 2 11 - <_> - 7 - - 6 1 1 9 - <_> - 4 - - 2 3 3 8 - <_> - 8 - - 0 3 4 7 - <_> - 7 - - 5 3 1 1 - <_> - 9 - - 3 5 1 6 - <_> - 7 - - 2 14 2 1 - <_> - 7 - - 6 2 1 3 - <_> - 9 - - 0 0 7 3 - <_> - 1 - - 0 0 6 1 - <_> - 7 - - 0 6 1 7 - <_> - 1 - - 4 5 1 7 - <_> - 3 - - 4 14 3 1 - <_> - 3 - - 3 0 4 8 - <_> - 0 - - 0 9 6 2 - <_> - 7 - - 1 3 2 4 - <_> - 7 - - 2 3 4 10 - <_> - 3 - - 0 2 4 3 - <_> - 0 - - 3 9 1 4 - <_> - 7 - - 1 11 6 2 - <_> - 8 - - 1 1 6 3 - <_> - 1 - - 0 10 2 1 - <_> - 3 - - 5 12 1 2 - <_> - 4 - - 4 6 3 9 - <_> - 3 - - 1 5 5 2 - <_> - 7 - - 0 6 4 1 - <_> - 1 - - 3 12 2 2 - <_> - 1 - - 1 4 6 11 - <_> - 1 - - 3 3 2 1 - <_> - 3 - - 1 0 5 1 - <_> - 9 - - 0 5 4 1 - <_> - 9 - - 0 11 2 2 - <_> - 0 - - 0 10 2 4 - <_> - 1 - - 2 4 3 8 - <_> - 7 - - 1 8 4 7 - <_> - 1 - - 0 9 7 2 - <_> - 3 - - 0 14 4 1 - <_> - 5 - - 4 6 2 7 - <_> - 4 - - 3 1 1 3 - <_> - 4 - - 6 1 1 3 - <_> - 4 - - 3 2 2 3 - <_> - 7 - - 4 5 1 2 - <_> - 9 - - 4 5 1 2 - <_> - 8 - - 0 7 7 2 - <_> - 8 - - 3 5 4 4 - <_> - 2 - - 1 4 2 5 - <_> - 4 - - 0 1 2 2 - <_> - 4 - - 2 9 4 4 - <_> - 5 - - 1 0 6 1 - <_> - 1 - - 4 11 3 3 - <_> - 9 - - 0 0 5 3 - <_> - 5 - - 0 5 7 1 - <_> - 1 - - 1 5 6 2 - <_> - 2 - - 2 11 4 2 - <_> - 2 - - 5 13 2 2 - <_> - 0 - - 2 1 2 7 - <_> - 5 - - 3 14 4 1 - <_> - 9 - - 3 9 2 3 - <_> - 1 - - 5 12 2 3 - <_> - 1 - - 2 6 5 2 - <_> - 1 - - 3 12 2 2 - <_> - 5 - - 4 3 3 2 - <_> - 0 - - 0 8 7 4 - <_> - 1 - - 2 7 3 5 - <_> - 0 - - 0 13 3 1 - <_> - 0 - - 1 10 3 2 - <_> - 9 - - 6 3 1 1 - <_> - 9 - - 3 7 2 1 - <_> - 0 - - 4 0 1 2 - <_> - 4 - - 4 0 1 9 - <_> - 4 - - 1 7 6 8 - <_> - 3 - - 3 1 1 4 - <_> - 7 - - 1 5 4 5 - <_> - 9 - - 3 5 2 3 - <_> - 7 - - 3 1 4 1 - <_> - 5 - - 3 1 3 13 - <_> - 4 - - 2 0 5 15 - <_> - 8 - - 0 0 4 3 - <_> - 9 - - 1 5 5 4 - <_> - 3 - - 1 5 5 1 - <_> - 7 - - 0 3 3 2 - <_> - 1 - - 5 13 1 1 - <_> - 5 - - 5 4 2 2 - <_> - 9 - - 2 7 5 1 - <_> - 4 - - 4 2 1 13 - <_> - 1 - - 2 10 4 3 - <_> - 0 - - 1 4 3 2 - <_> - 0 - - 3 14 2 1 - <_> - 5 - - 2 11 4 2 - <_> - 2 - - 1 13 6 2 - <_> - 4 - - 4 11 1 1 - <_> - 9 - - 0 1 5 2 - <_> - 4 - - 1 7 5 1 - <_> - 9 - - 3 4 2 2 - <_> - 9 - - 0 2 2 5 - <_> - 3 - - 2 3 3 3 - <_> - 7 - - 3 5 2 2 - <_> - 7 - - 1 2 6 13 - <_> - 4 - - 2 7 4 3 - <_> - 4 - - 2 9 3 4 - <_> - 7 - - 3 5 2 8 - <_> - 7 - - 2 1 1 1 - <_> - 2 - - 2 5 4 7 - <_> - 7 - - 3 12 1 1 - <_> - 2 - - 0 13 7 2 - <_> - 1 - - 3 0 4 13 - <_> - 1 - - 1 12 5 2 - <_> - 1 - - 4 10 3 1 - <_> - 7 - - 0 0 1 5 - <_> - 7 - - 0 6 1 2 - <_> - 3 - - 0 3 4 9 - <_> - 9 - - 2 4 4 9 - <_> - 3 - - 2 3 4 10 - <_> - 4 - - 2 6 4 2 - <_> - 2 - - 2 4 5 4 - <_> - 5 - - 3 14 4 1 - <_> - 7 - - 2 3 4 2 - <_> - 1 - - 3 0 1 10 - <_> - 4 - - 3 2 1 2 - <_> - 4 - - 2 2 4 13 - <_> - 5 - - 5 4 2 6 - <_> - 1 - - 2 13 1 2 - <_> - 4 - - 3 8 2 5 - <_> - 7 - - 0 11 7 2 - <_> - 9 - - 0 5 7 5 - <_> - 0 - - 1 10 5 3 - <_> - 8 - - 3 3 2 1 - <_> - 1 - - 0 10 7 1 - <_> - 8 - - 1 3 6 2 - <_> - 2 - - 3 14 2 1 - <_> - 9 - - 0 7 2 5 - <_> - 8 - - 0 5 3 2 - <_> - 3 - - 1 5 4 1 - <_> - 1 - - 0 5 5 2 - <_> - 0 - - 1 11 6 2 - <_> - 9 - - 3 10 2 2 - <_> - 1 - - 3 12 3 2 - <_> - 3 - - 0 0 1 3 - <_> - 5 - - 4 0 1 5 - <_> - 7 - - 3 9 4 2 - <_> - 4 - - 2 3 5 5 - <_> - 1 - - 3 1 4 13 - <_> - 2 - - 1 8 5 5 - <_> - 2 - - 2 2 4 5 - <_> - 4 - - 1 14 6 1 - <_> - 2 - - 5 1 1 5 - <_> - 3 - - 4 13 3 2 - <_> - 9 - - 6 0 1 12 - <_> - 4 - - 0 11 3 4 - <_> - 9 - - 3 7 3 3 - <_> - 0 - - 2 11 5 2 - <_> - 4 - - 1 0 5 15 - <_> - 8 - - 1 6 6 1 - <_> - 2 - - 2 7 1 4 - <_> - 3 - - 2 14 4 1 - <_> - 8 - - 0 0 1 2 - <_> - 5 - - 4 2 2 13 - <_> - 8 - - 3 8 1 6 - <_> - 9 - - 0 5 7 3 - <_> - 5 - - 2 14 5 1 - <_> - 1 - - 3 3 2 9 - <_> - 4 - - 2 6 1 2 - <_> - 4 - - 3 2 2 3 - <_> - 4 - - 2 10 5 5 - <_> - 3 - - 2 2 3 10 - <_> - 5 - - 0 14 4 1 - <_> - 7 - - 1 2 3 2 - <_> - 0 - - 1 9 5 2 - <_> - 4 - - 2 8 4 5 - <_> - 1 - - 1 4 4 7 - <_> - 4 - - 0 0 7 4 - <_> - 9 - - 0 0 3 6 - <_> - 7 - - 6 1 1 1 - <_> - 5 - - 5 6 1 5 - <_> - 9 - - 3 5 3 5 - <_> - 1 - - 5 6 1 4 - <_> - 9 - - 2 13 5 1 - <_> - 1 - - 3 12 2 2 - <_> - 5 - - 1 6 4 1 - <_> - 9 - - 4 9 3 6 - <_> - 5 - - 3 5 4 1 - <_> - 8 - - 3 0 4 4 - <_> - 5 - - 2 12 4 3 - <_> - 3 - - 3 3 2 3 - <_> - 2 - - 3 3 2 4 - <_> - 7 - - 5 2 2 6 - <_> - 5 - - 4 9 2 4 - <_> - 2 - - 0 10 2 3 - <_> - 3 - - 2 4 1 6 - <_> - 1 - - 0 12 4 3 - <_> - 7 - - 3 0 1 14 - <_> - 7 - - 3 5 2 2 - <_> - 1 - - 1 5 2 3 - <_> - 0 - - 2 3 3 10 - <_> - 4 - - 6 9 1 2 - <_> - 7 - - 3 7 2 1 - <_> - 4 - - 3 5 2 10 - <_> - 1 - - 3 3 2 5 - <_> - 1 - - 1 12 4 2 - <_> - 3 - - 0 1 4 6 - <_> - 1 - - 0 0 6 1 - <_> - 4 - - 0 3 6 3 - <_> - 1 - - 4 0 1 5 - <_> - 1 - - 3 2 2 8 - <_> - 9 - - 0 1 3 2 - <_> - 1 - - 4 5 1 8 - <_> - 9 - - 6 6 1 3 - <_> - 4 - - 0 1 7 5 - <_> - 3 - - 0 0 4 10 - <_> - 4 - - 1 10 1 2 - <_> - 2 - - 1 1 3 1 - <_> - 2 - - 3 4 3 9 - <_> - 7 - - 3 2 2 9 - <_> - 9 - - 2 4 3 4 - <_> - 2 - - 1 2 2 3 - <_> - 8 - - 1 5 6 4 - <_> - 7 - - 0 11 4 2 - <_> - 1 - - 3 9 1 3 - <_> - 7 - - 3 8 2 2 - <_> - 1 - - 6 9 1 5 - <_> - 4 - - 6 9 1 3 - <_> - 1 - - 2 4 4 9 - <_> - 7 - - 3 3 2 3 - <_> - 7 - - 4 5 1 1 - <_> - 7 - - 2 8 5 2 - <_> - 9 - - 3 5 2 2 - <_> - 1 - - 1 13 6 2 - <_> - 7 - - 0 2 7 13 - <_> - 0 - - 2 14 2 1 - <_> - 0 - - 1 11 4 2 - <_> - 9 - - 0 5 7 2 - <_> - 7 - - 0 10 7 1 - <_> - 3 - - 2 10 2 3 - <_> - 4 - - 3 2 2 1 - <_> - 5 - - 3 14 4 1 - <_> - 9 - - 3 2 2 10 - <_> - 5 - - 5 9 1 3 - <_> - 7 - - 6 1 1 2 - <_> - 4 - - 0 12 6 3 - <_> - 5 - - 4 3 2 11 - <_> - 7 - - 5 14 2 1 - <_> - 0 - - 2 2 4 8 - <_> - 1 - - 1 7 6 2 - <_> - 1 - - 4 8 1 7 - <_> - 9 - - 1 0 6 4 - <_> - 8 - - 2 2 4 10 - <_> - 9 - - 0 5 1 5 - <_> - 3 - - 2 3 4 10 - <_> - 1 - - 0 0 1 9 - <_> - 7 - - 0 6 7 7 - <_> - 1 - - 1 2 2 9 - <_> - 9 - - 3 1 4 3 - <_> - 3 - - 4 13 3 2 - <_> - 1 - - 1 12 5 2 - <_> - 7 - - 5 1 2 4 - <_> - 2 - - 2 8 5 6 - <_> - 7 - - 1 7 1 1 - <_> - 5 - - 5 4 2 1 - <_> - 9 - - 0 0 7 8 - <_> - 5 - - 3 11 4 2 - <_> - 4 - - 1 5 1 3 - <_> - 2 - - 1 4 3 2 - <_> - 1 - - 3 0 2 10 - <_> - 3 - - 0 3 4 2 - <_> - 8 - - 2 3 3 1 - <_> - 4 - - 3 0 1 1 - <_> - 1 - - 2 1 5 12 - <_> - 3 - - 2 3 2 10 - <_> - 1 - - 2 5 3 5 - <_> - 5 - - 4 1 2 8 - <_> - 0 - - 4 13 3 2 - <_> - 8 - - 6 7 1 3 - <_> - 2 - - 2 13 3 2 - <_> - 9 - - 4 4 1 3 - <_> - 8 - - 0 3 3 6 - <_> - 4 - - 3 3 2 2 - <_> - 1 - - 1 0 6 2 - <_> - 8 - - 2 3 3 4 - <_> - 1 - - 6 8 1 3 - <_> - 1 - - 2 4 4 3 - <_> - 5 - - 0 3 4 4 - <_> - 3 - - 0 0 6 8 - <_> - 7 - - 3 6 2 1 - <_> - 7 - - 2 4 4 8 - <_> - 1 - - 0 4 5 1 - <_> - 2 - - 1 7 5 5 - <_> - 1 - - 2 2 1 10 - <_> - 4 - - 3 2 2 2 - <_> - 5 - - 2 13 2 2 - <_> - 8 - - 0 1 6 8 - <_> - 7 - - 1 11 6 1 - <_> - 3 - - 2 4 2 9 - <_> - 1 - - 1 4 1 3 - <_> - 4 - - 2 1 5 14 - <_> - 1 - - 3 12 2 2 - <_> - 5 - - 1 4 6 2 - <_> - 1 - - 1 11 6 2 - <_> - 2 - - 5 13 2 2 - <_> - 5 - - 4 11 3 2 - <_> - 9 - - 3 4 3 2 - <_> - 8 - - 1 3 2 4 - <_> - 3 - - 0 13 3 2 - <_> - 2 - - 2 3 2 11 - <_> - 4 - - 2 8 5 5 - <_> - 9 - - 1 6 6 4 - <_> - 2 - - 0 4 3 1 - <_> - 9 - - 5 1 2 2 - <_> - 5 - - 2 4 4 1 - <_> - 5 - - 3 5 4 2 - <_> - 1 - - 6 12 1 3 - <_> - 5 - - 4 2 3 3 - <_> - 9 - - 4 5 3 1 - <_> - 7 - - 2 2 4 12 - <_> - 8 - - 2 12 3 3 - <_> - 7 - - 0 11 7 2 - <_> - 2 - - 1 7 6 5 - <_> - 4 - - 0 6 1 8 - <_> - 1 - - 3 2 1 11 - <_> - 1 - - 3 4 2 8 - <_> - 5 - - 0 11 2 3 - <_> - 1 - - 0 10 1 1 - <_> - 0 - - 1 10 3 2 - <_> - 8 - - 0 1 1 1 - <_> - 1 - - 0 7 2 6 - <_> - 1 - - 3 7 4 1 - <_> - 2 - - 4 10 1 3 - <_> - 4 - - 3 2 2 13 - <_> - 5 - - 4 13 3 2 - <_> - 2 - - 0 8 3 5 - <_> - 3 - - 0 4 5 2 - <_> - 4 - - 3 11 2 2 - <_> - 1 - - 2 12 4 2 - <_> - 2 - - 0 10 6 3 - <_> - 2 - - 0 13 5 2 - <_> - 3 - - 3 3 4 2 - <_> - 3 - - 0 3 7 3 - <_> - 7 - - 0 6 5 4 - <_> - 0 - - 1 3 6 6 - <_> - 9 - - 3 11 2 1 - <_> - 8 - - 3 1 3 3 - <_> - 4 - - 4 13 3 2 - <_> - 8 - - 2 0 1 1 - <_> - 3 - - 3 8 4 6 - <_> - 1 - - 4 0 1 5 - <_> - 7 - - 3 7 2 1 - <_> - 9 - - 2 4 2 3 - <_> - 8 - - 5 1 1 3 - <_> - 7 - - 0 3 3 12 - <_> - 4 - - 4 1 1 10 - <_> - 7 - - 1 8 6 3 - <_> - 5 - - 3 3 2 2 - <_> - 1 - - 0 0 6 1 - <_> - 3 - - 3 4 2 2 - <_> - 4 - - 3 5 2 10 - <_> - 1 - - 4 12 1 2 - <_> - 3 - - 0 4 3 5 - <_> - 8 - - 2 7 4 5 - <_> - 4 - - 2 7 5 1 - <_> - 1 - - 1 2 6 2 - <_> - 7 - - 0 9 4 1 - <_> - 1 - - 2 7 3 7 - <_> - 9 - - 3 9 2 3 - <_> - 3 - - 3 12 1 3 - <_> - 2 - - 3 3 3 10 - <_> - 9 - - 0 5 7 1 - <_> - 5 - - 4 6 3 5 - <_> - 5 - - 5 5 2 1 - <_> - 5 - - 3 14 4 1 - <_> - 9 - - 1 0 3 3 - <_> - 0 - - 0 2 5 2 - <_> - 8 - - 3 10 1 1 - <_> - 7 - - 3 5 1 1 - <_> - 1 - - 3 13 1 2 - <_> - 3 - - 0 3 5 2 - <_> - 1 - - 4 8 1 7 - <_> - 4 - - 1 3 4 7 - <_> - 1 - - 1 13 2 1 - <_> - 0 - - 2 11 5 2 - <_> - 0 - - 4 2 3 12 - <_> - 5 - - 1 5 6 7 - <_> - 5 - - 4 4 2 1 - <_> - 5 - - 1 0 3 15 - <_> - 9 - - 0 2 1 1 - <_> - 8 - - 0 0 7 15 - <_> - 1 - - 3 4 2 9 - <_> - 2 - - 1 12 1 2 - <_> - 1 - - 1 3 5 11 - <_> - 5 - - 2 11 4 3 - <_> - 8 - - 0 9 7 1 - <_> - 0 - - 3 13 4 2 - <_> - 3 - - 2 3 3 3 - <_> - 1 - - 2 2 1 8 - <_> - 1 - - 1 0 4 2 - <_> - 7 - - 3 6 2 5 - <_> - 4 - - 3 1 1 5 - <_> - 3 - - 2 9 4 1 - <_> - 9 - - 2 6 4 2 - <_> - 4 - - 2 12 2 3 - <_> - 7 - - 4 11 2 4 - <_> - 8 - - 2 3 5 1 - <_> - 4 - - 2 0 4 1 - <_> - 0 - - 2 0 4 13 - <_> - 1 - - 0 9 7 2 - <_> - 8 - - 0 0 1 3 - <_> - 1 - - 0 10 2 1 - <_> - 3 - - 0 14 6 1 - <_> - 7 - - 4 6 3 4 - <_> - 9 - - 2 3 3 11 - <_> - 3 - - 2 4 2 1 - <_> - 7 - - 1 2 1 5 - <_> - 5 - - 4 4 3 9 - <_> - 7 - - 0 1 5 14 - <_> - 8 - - 4 6 1 2 - <_> - 1 - - 1 0 6 14 - <_> - 1 - - 2 12 2 2 - <_> - 3 - - 0 3 6 3 - <_> - 8 - - 1 10 6 2 - <_> - 5 - - 2 11 5 2 - <_> - 1 - - 1 0 6 13 - <_> - 9 - - 1 3 4 12 - <_> - 3 - - 2 4 1 3 - <_> - 5 - - 1 5 4 1 - <_> - 0 - - 0 13 2 1 - <_> - 1 - - 6 13 1 2 - <_> - 4 - - 3 9 2 5 - <_> - 3 - - 6 7 1 2 - <_> - 4 - - 6 2 1 1 - <_> - 3 - - 4 14 3 1 - <_> - 4 - - 0 9 7 2 - <_> - 7 - - 6 0 1 5 - <_> - 9 - - 5 0 2 2 - <_> - 5 - - 1 2 6 8 - <_> - 1 - - 3 4 2 8 - <_> - 0 - - 2 7 4 4 - <_> - 8 - - 3 7 2 1 - <_> - 5 - - 0 14 7 1 - <_> - 9 - - 2 5 4 4 - <_> - 7 - - 3 11 3 1 - <_> - 4 - - 3 11 2 2 - <_> - 2 - - 4 6 2 5 - <_> - 5 - - 3 11 2 2 - <_> - 4 - - 3 1 2 7 - <_> - 4 - - 1 0 6 15 - <_> - 7 - - 1 11 6 1 - <_> - 1 - - 1 12 4 2 - <_> - 7 - - 0 3 1 1 - <_> - 9 - - 1 2 1 1 - <_> - 3 - - 2 9 3 4 - <_> - 5 - - 4 10 1 2 - <_> - 4 - - 3 6 3 6 - <_> - 2 - - 0 13 7 2 - <_> - 1 - - 3 0 2 10 - <_> - 4 - - 0 3 2 5 - <_> - 8 - - 1 5 6 2 - <_> - 9 - - 2 5 2 1 - <_> - 8 - - 2 1 5 8 - <_> - 5 - - 0 5 7 1 - <_> - 8 - - 3 0 1 4 - <_> - 1 - - 3 3 4 5 - <_> - 9 - - 0 4 7 2 - <_> - 8 - - 1 0 3 4 - <_> - 3 - - 0 0 2 4 - <_> - 2 - - 3 2 4 4 - <_> - 2 - - 4 2 1 6 - <_> - 5 - - 0 0 7 2 - <_> - 3 - - 0 4 2 5 - <_> - 8 - - 1 9 2 2 - <_> - 5 - - 4 1 1 2 - <_> - 7 - - 1 6 6 3 - <_> - 4 - - 1 7 6 7 - <_> - 4 - - 0 7 7 1 - <_> - 1 - - 1 13 6 2 - <_> - 2 - - 3 3 2 1 - <_> - 0 - - 2 14 3 1 - <_> - 0 - - 1 7 6 5 - <_> - 7 - - 1 6 6 7 - <_> - 1 - - 1 8 6 6 - <_> - 5 - - 0 14 7 1 - <_> - 2 - - 2 6 5 8 - <_> - 3 - - 1 4 4 6 - <_> - 9 - - 3 7 2 6 - <_> - 1 - - 2 10 5 3 - <_> - 2 - - 1 10 4 1 - <_> - 4 - - 2 8 3 6 - <_> - 0 - - 2 4 1 8 - <_> - 1 - - 0 8 7 1 - <_> - 0 - - 0 11 1 3 - <_> - 2 - - 3 13 2 1 - <_> - 1 - - 1 13 4 1 - <_> - 3 - - 2 10 2 3 - <_> - 3 - - 2 0 1 10 - <_> - 7 - - 3 4 1 4 - <_> - 2 - - 5 0 2 6 - <_> - 5 - - 2 8 5 3 - <_> - 1 - - 6 8 1 6 - <_> - 7 - - 3 7 2 4 - <_> - 8 - - 1 1 6 4 - <_> - 3 - - 0 2 3 5 - <_> - 1 - - 1 0 1 15 - <_> - 9 - - 6 14 1 1 - <_> - 7 - - 3 6 4 1 - <_> - 9 - - 3 1 2 11 - <_> - 1 - - 3 0 2 8 - <_> - 0 - - 2 10 4 3 - <_> - 2 - - 3 14 2 1 - <_> - 7 - - 3 12 3 3 - <_> - 8 - - 0 6 7 1 - <_> - 7 - - 2 13 2 1 - <_> - 8 - - 0 0 1 3 - <_> - 1 - - 1 0 6 1 - <_> - 3 - - 0 4 7 2 - <_> - 9 - - 1 4 6 4 - <_> - 5 - - 5 1 1 10 - <_> - 5 - - 2 11 4 4 - <_> - 3 - - 4 9 2 4 - <_> - 4 - - 0 14 7 1 - <_> - 1 - - 2 12 3 2 - <_> - 3 - - 0 4 4 1 - <_> - 0 - - 0 2 4 6 - <_> - 7 - - 0 6 1 1 - <_> - 9 - - 3 9 3 1 - <_> - 7 - - 4 5 1 1 - <_> - 4 - - 6 9 1 2 - <_> - 3 - - 1 5 4 1 - <_> - 2 - - 3 1 1 4 - <_> - 3 - - 0 14 7 1 - <_> - 7 - - 4 7 3 2 - <_> - 5 - - 4 1 3 8 - <_> - 2 - - 2 3 4 11 - <_> - 4 - - 2 4 3 10 - <_> - 4 - - 3 2 2 7 - <_> - 1 - - 4 5 1 2 - <_> - 1 - - 3 2 2 7 - <_> - 1 - - 0 0 7 1 - <_> - 4 - - 4 9 1 3 - <_> - 9 - - 1 1 6 1 - <_> - 4 - - 3 8 1 4 - <_> - 5 - - 4 4 2 2 - <_> - 9 - - 3 4 2 1 - <_> - 5 - - 0 14 4 1 - <_> - 1 - - 1 12 6 2 - <_> - 3 - - 0 4 4 1 - <_> - 1 - - 6 13 1 2 - <_> - 2 - - 2 10 4 3 - <_> - 7 - - 1 1 6 12 - <_> - 0 - - 0 13 7 2 - <_> - 8 - - 0 6 7 2 - <_> - 4 - - 4 11 3 4 - <_> - 9 - - 0 6 7 3 - <_> - 0 - - 0 2 6 10 - <_> - 8 - - 1 1 4 11 - <_> - 0 - - 2 8 1 2 - <_> - 7 - - 1 1 2 4 - <_> - 7 - - 2 6 4 4 - <_> - 0 - - 4 3 2 9 - <_> - 0 - - 2 3 1 9 - <_> - 4 - - 3 5 2 10 - <_> - 2 - - 3 8 1 2 - <_> - 2 - - 5 13 2 1 - <_> - 5 - - 3 11 3 4 - <_> - 9 - - 0 1 7 3 - <_> - 5 - - 0 11 1 1 - <_> - 3 - - 0 11 6 2 - <_> - 0 - - 1 4 2 3 - <_> - 4 - - 3 1 1 12 - <_> - 0 - - 2 14 4 1 - <_> - 1 - - 0 3 5 5 - <_> - 4 - - 3 1 2 5 - <_> - 7 - - 3 14 2 1 - <_> - 8 - - 0 1 7 3 - <_> - 2 - - 4 4 3 2 - <_> - 9 - - 3 10 2 3 - <_> - 1 - - 1 2 6 11 - <_> - 1 - - 1 7 6 5 - <_> - 9 - - 3 5 3 5 - <_> - 7 - - 3 6 2 4 - <_> - 2 - - 4 1 2 13 - <_> - 7 - - 6 2 1 1 - <_> - 3 - - 2 14 5 1 - <_> - 8 - - 3 2 3 2 - <_> - 3 - - 1 3 3 5 - <_> - 1 - - 3 12 3 2 - <_> - 4 - - 2 10 4 3 - <_> - 0 - - 2 6 5 7 - <_> - 4 - - 2 13 5 1 - <_> - 5 - - 2 14 5 1 - <_> - 9 - - 2 7 5 1 - <_> - 4 - - 0 7 7 4 - <_> - 1 - - 3 2 4 11 - <_> - 3 - - 1 3 5 4 - <_> - 1 - - 5 10 2 1 - <_> - 7 - - 6 3 1 2 - <_> - 3 - - 2 9 3 4 - <_> - 5 - - 4 2 2 5 - <_> - 7 - - 3 6 2 1 - <_> - 7 - - 1 2 6 13 - <_> - 4 - - 2 4 4 4 - <_> - 9 - - 3 7 2 6 - <_> - 9 - - 6 2 1 2 - <_> - 2 - - 1 10 4 1 - <_> - 2 - - 1 4 3 1 - <_> - 0 - - 1 2 3 3 - <_> - 5 - - 0 3 1 10 - <_> - 0 - - 0 1 5 1 - <_> - 2 - - 3 3 2 2 - <_> - 5 - - 5 0 2 9 - <_> - 3 - - 4 13 3 2 - <_> - 9 - - 0 8 3 1 - <_> - 7 - - 3 5 1 2 - <_> - 3 - - 2 9 2 2 - <_> - 1 - - 6 10 1 2 - <_> - 4 - - 1 11 6 1 - <_> - 7 - - 1 10 6 3 - <_> - 9 - - 0 0 7 6 - <_> - 2 - - 3 10 4 3 - <_> - 4 - - 3 2 2 2 - <_> - 8 - - 2 3 4 1 - <_> - 9 - - 1 8 6 1 - <_> - 0 - - 2 0 2 13 - <_> - 3 - - 2 4 2 9 - <_> - 3 - - 1 3 5 11 - <_> - 1 - - 1 0 5 2 - <_> - 8 - - 6 7 1 3 - <_> - 1 - - 3 4 2 6 - <_> - 2 - - 3 14 2 1 - <_> - 9 - - 2 0 1 5 - <_> - 0 - - 0 7 7 2 - <_> - 4 - - 1 14 6 1 - <_> - 1 - - 2 13 4 2 - <_> - 3 - - 1 10 1 5 - <_> - 0 - - 1 11 5 2 - <_> - 7 - - 0 2 7 11 - <_> - 5 - - 0 1 6 6 - <_> - 7 - - 3 7 2 8 - <_> - 7 - - 0 11 6 2 - <_> - 5 - - 1 10 6 3 - <_> - 1 - - 0 5 3 2 - <_> - 7 - - 2 11 5 1 - <_> - 4 - - 0 5 3 3 - <_> - 7 - - 0 4 1 11 - <_> - 9 - - 2 5 2 3 - <_> - 8 - - 0 5 7 2 - <_> - 0 - - 0 6 1 3 - <_> - 3 - - 3 2 1 10 - <_> - 7 - - 1 0 5 1 - <_> - 5 - - 1 13 6 2 - <_> - 1 - - 1 4 5 8 - <_> - 3 - - 4 14 3 1 - <_> - 5 - - 5 5 1 8 - <_> - 7 - - 1 4 1 3 - <_> - 1 - - 3 1 1 10 - <_> - 9 - - 6 3 1 1 - <_> - 2 - - 0 2 1 3 - <_> - 9 - - 0 6 4 1 - <_> - 3 - - 2 4 4 9 - <_> - 1 - - 1 5 6 2 - <_> - 8 - - 0 0 1 15 - <_> - 1 - - 3 12 2 2 - <_> - 7 - - 4 9 1 1 - <_> - 4 - - 0 12 5 3 - <_> - 0 - - 2 14 3 1 - <_> - 4 - - 2 8 4 5 - <_> - 3 - - 2 3 3 2 - <_> - 5 - - 3 3 3 2 - <_> - 9 - - 2 7 3 7 - <_> - 8 - - 2 3 4 1 - <_> - 0 - - 2 11 3 1 - <_> - 9 - - 4 6 2 1 - <_> - 9 - - 2 4 5 3 - <_> - 1 - - 3 10 4 4 - <_> - 4 - - 0 5 1 6 - <_> - 4 - - 2 11 3 3 - <_> - 3 - - 0 4 7 2 - <_> - 7 - - 1 1 3 12 - <_> - 9 - - 0 5 4 2 - <_> - 4 - - 4 1 1 8 - <_> - 1 - - 3 7 3 1 - <_> - 1 - - 1 1 6 6 - <_> - 2 - - 2 6 4 8 - <_> - 9 - - 1 0 6 10 - <_> - 2 - - 0 13 7 2 - <_> - 3 - - 1 5 3 2 - <_> - 7 - - 3 8 2 1 - <_> - 4 - - 3 5 2 10 - <_> - 1 - - 1 12 4 2 - <_> - 2 - - 5 1 2 2 - <_> - 5 - - 4 2 2 13 - <_> - 9 - - 3 4 2 3 - <_> - 8 - - 3 1 4 3 - <_> - 1 - - 1 4 6 1 - <_> - 1 - - 1 4 5 9 - <_> - 5 - - 3 14 4 1 - <_> - 4 - - 0 6 3 2 - <_> - 7 - - 1 1 3 1 - <_> - 7 - - 2 4 4 6 - <_> - 5 - - 1 2 5 1 - <_> - 0 - - 2 3 1 4 - <_> - 8 - - 2 3 3 1 - <_> - 0 - - 2 8 2 2 - <_> - 2 - - 2 8 3 3 - <_> - 5 - - 2 9 2 2 - <_> - 3 - - 2 13 3 1 - <_> - 9 - - 3 1 1 2 - <_> - 8 - - 2 6 5 1 - <_> - 8 - - 2 0 5 7 - <_> - 9 - - 3 4 1 9 - <_> - 9 - - 6 5 1 10 - <_> - 0 - - 3 10 3 2 - <_> - 7 - - 1 9 6 1 - <_> - 7 - - 1 1 3 14 - <_> - 1 - - 2 6 4 4 - <_> - 1 - - 2 9 4 3 - <_> - 7 - - 4 0 2 15 - <_> - 2 - - 0 11 6 2 - <_> - 5 - - 3 13 3 2 - <_> - 5 - - 2 11 4 2 - <_> - 7 - - 6 0 1 5 - <_> - 7 - - 3 6 2 5 - <_> - 3 - - 2 4 4 7 - <_> - 7 - - 2 12 4 3 - <_> - 7 - - 1 6 3 1 - <_> - 8 - - 4 2 1 1 - <_> - 3 - - 2 6 5 4 - <_> - 3 - - 0 14 6 1 - <_> - 5 - - 2 12 5 3 - <_> - 9 - - 2 4 3 4 - <_> - 9 - - 0 6 1 3 - <_> - 1 - - 3 2 2 8 - <_> - 4 - - 0 1 2 5 - <_> - 4 - - 3 2 1 4 - <_> - 7 - - 3 2 3 5 - <_> - 9 - - 6 1 1 4 - <_> - 5 - - 5 2 2 8 - <_> - 4 - - 5 0 2 11 - <_> - 4 - - 3 9 3 4 - <_> - 1 - - 0 0 7 2 - <_> - 1 - - 2 2 4 7 - <_> - 7 - - 3 7 1 3 - <_> - 9 - - 2 5 5 1 - <_> - 9 - - 0 6 1 5 - <_> - 9 - - 3 9 3 1 - <_> - 3 - - 0 5 6 1 - <_> - 9 - - 2 4 3 2 - <_> - 0 - - 2 11 5 2 - <_> - 8 - - 0 1 1 1 - <_> - 1 - - 4 6 3 5 - <_> - 1 - - 2 2 2 1 - <_> - 0 - - 0 13 3 2 - <_> - 1 - - 3 6 2 4 - <_> - 9 - - 0 5 6 1 - <_> - 2 - - 2 4 4 9 - <_> - 7 - - 3 2 2 10 - <_> - 8 - - 1 3 5 1 - <_> - 4 - - 0 8 4 7 - <_> - 1 - - 3 12 1 3 - <_> - 7 - - 3 0 2 1 - <_> - 5 - - 3 2 3 2 - <_> - 2 - - 5 4 1 1 - <_> - 3 - - 2 1 2 12 - <_> - 4 - - 2 5 3 10 - <_> - 5 - - 1 12 1 2 - <_> - 1 - - 0 10 6 4 - <_> - 1 - - 0 12 7 1 - <_> - 1 - - 3 10 2 4 - <_> - 2 - - 0 4 1 10 - <_> - 7 - - 3 2 2 11 - <_> - 0 - - 3 11 3 2 - <_> - 4 - - 1 11 6 1 - <_> - 9 - - 3 9 3 3 - <_> - 5 - - 0 14 4 1 - <_> - 2 - - 5 11 2 4 - <_> - 0 - - 2 3 4 10 - <_> - 1 - - 3 3 2 4 - <_> - 7 - - 4 7 1 2 - <_> - 0 - - 0 1 1 11 - <_> - 1 - - 2 1 3 11 - <_> - 3 - - 3 11 3 2 - <_> - 1 - - 3 1 1 8 - <_> - 0 - - 1 10 4 3 - <_> - 9 - - 0 5 7 1 - <_> - 8 - - 4 2 1 2 - <_> - 9 - - 1 5 4 2 - <_> - 0 - - 1 13 6 2 - <_> - 0 - - 1 3 6 1 - <_> - 1 - - 6 12 1 3 - <_> - 4 - - 4 1 2 11 - <_> - 9 - - 1 2 1 2 - <_> - 4 - - 2 14 4 1 - <_> - 1 - - 3 4 3 10 - <_> - 7 - - 0 10 7 4 - <_> - 7 - - 0 11 7 1 - <_> - 1 - - 3 4 2 6 - <_> - 5 - - 4 4 3 9 - <_> - 9 - - 0 4 6 3 - <_> - 3 - - 2 1 1 11 - <_> - 4 - - 0 8 7 1 - <_> - 1 - - 3 1 2 14 - <_> - 5 - - 0 4 1 3 - <_> - 8 - - 1 0 4 1 - <_> - 0 - - 6 9 1 5 - <_> - 2 - - 2 4 4 9 - <_> - 5 - - 1 13 6 2 - <_> - 9 - - 0 1 2 14 - <_> - 7 - - 1 2 2 3 - <_> - 7 - - 1 6 6 3 - <_> - 0 - - 0 2 4 3 - <_> - 3 - - 1 3 3 2 - <_> - 7 - - 2 5 1 2 - <_> - 5 - - 3 3 2 3 - <_> - 3 - - 2 4 4 9 - <_> - 9 - - 3 8 2 4 - <_> - 4 - - 2 8 4 6 - <_> - 5 - - 1 11 2 3 - <_> - 1 - - 1 4 1 3 - <_> - 2 - - 4 13 2 2 - <_> - 1 - - 1 12 4 2 - <_> - 4 - - 1 7 6 3 - <_> - 1 - - 3 7 2 2 - <_> - 1 - - 2 4 3 8 - <_> - 1 - - 6 13 1 2 - <_> - 8 - - 1 6 6 2 - <_> - 3 - - 6 6 1 3 - <_> - 9 - - 2 5 3 1 - <_> - 8 - - 1 1 6 10 - <_> - 5 - - 5 4 1 3 - <_> - 0 - - 5 14 2 1 - <_> - 5 - - 4 10 2 3 - <_> - 7 - - 3 5 2 1 - <_> - 7 - - 4 8 1 5 - <_> - 3 - - 3 5 4 2 - <_> - 0 - - 0 2 4 10 - <_> - 5 - - 0 1 4 14 - <_> - 1 - - 2 12 4 2 - <_> - 7 - - 1 6 1 5 - <_> - 1 - - 0 11 7 2 - <_> - 5 - - 4 3 3 3 - <_> - 5 - - 1 4 3 10 - <_> - 3 - - 1 10 1 2 - <_> - 9 - - 4 8 3 1 - <_> - 4 - - 6 9 1 3 - <_> - 7 - - 0 3 1 12 - <_> - 7 - - 1 7 1 2 - <_> - 7 - - 6 2 1 2 - <_> - 2 - - 4 6 2 5 - <_> - 4 - - 1 9 1 4 - <_> - 1 - - 1 1 2 13 - <_> - 3 - - 3 14 4 1 - <_> - 1 - - 3 11 3 2 - <_> - 4 - - 3 1 2 7 - <_> - 9 - - 0 1 2 1 - <_> - 7 - - 5 1 2 1 - <_> - 5 - - 5 6 1 5 - <_> - 9 - - 0 7 1 1 - <_> - 3 - - 0 4 3 3 - <_> - 3 - - 0 0 4 5 - <_> - 4 - - 3 6 2 6 - <_> - 9 - - 0 1 7 1 - <_> - 2 - - 0 0 2 6 - <_> - 4 - - 1 7 6 1 - <_> - 9 - - 4 4 1 3 - <_> - 1 - - 3 0 2 10 - <_> - 8 - - 3 3 2 1 - <_> - 1 - - 0 1 5 13 - <_> - 2 - - 1 11 4 2 - <_> - 2 - - 0 13 5 2 - <_> - 5 - - 2 5 1 7 - <_> - 0 - - 3 13 4 1 - <_> - 4 - - 3 8 2 5 - <_> - 4 - - 3 2 1 3 - <_> - 4 - - 2 7 4 1 - <_> - 7 - - 1 2 1 5 - <_> - 9 - - 5 1 1 7 - <_> - 5 - - 3 0 2 6 - <_> - 9 - - 1 6 6 3 - <_> - 3 - - 2 4 2 3 - <_> - 1 - - 0 0 2 6 - <_> - 8 - - 0 6 6 1 - <_> - 4 - - 2 0 5 15 - <_> - 1 - - 0 1 7 8 - <_> - 5 - - 4 11 3 2 - <_> - 3 - - 4 9 2 6 - <_> - 0 - - 0 12 2 2 - <_> - 3 - - 0 4 6 9 - <_> - 1 - - 2 13 2 2 - <_> - 9 - - 2 3 1 1 - <_> - 2 - - 5 14 2 1 - <_> - 1 - - 6 13 1 2 - <_> - 9 - - 2 4 3 2 - <_> - 7 - - 2 8 2 1 - <_> - 0 - - 2 2 2 10 - <_> - 3 - - 2 8 2 3 - <_> - 1 - - 3 12 2 3 - <_> - 7 - - 2 2 5 2 - <_> - 4 - - 3 7 2 8 - <_> - 4 - - 3 3 4 7 - <_> - 1 - - 3 13 3 1 - <_> - 5 - - 0 11 5 2 - <_> - 5 - - 0 14 5 1 - <_> - 1 - - 2 3 5 10 - <_> - 0 - - 4 13 3 2 - <_> - 2 - - 4 4 3 9 - <_> - 0 - - 4 11 2 2 - <_> - 9 - - 4 1 3 1 - <_> - 9 - - 0 6 5 2 - <_> - 4 - - 0 9 4 2 - <_> - 5 - - 0 3 1 6 - <_> - 4 - - 0 8 5 6 - <_> - 9 - - 3 13 3 2 - <_> - 7 - - 5 1 1 9 - <_> - 5 - - 4 2 1 1 - <_> - 0 - - 4 1 2 1 - <_> - 9 - - 2 0 2 3 - <_> - 0 - - 1 2 3 4 - <_> - 5 - - 5 4 1 2 - <_> - 2 - - 3 14 3 1 - <_> - 7 - - 3 6 2 1 - <_> - 0 - - 5 0 1 14 - <_> - 7 - - 1 9 5 1 - <_> - 7 - - 0 7 2 8 - <_> - 9 - - 2 5 1 2 - <_> - 1 - - 0 7 5 1 - <_> - 1 - - 3 5 2 5 - <_> - 8 - - 1 0 1 8 - <_> - 1 - - 2 9 4 3 - <_> - 9 - - 3 5 4 6 - <_> - 3 - - 2 9 2 4 - <_> - 2 - - 1 9 5 2 - <_> - 5 - - 0 14 7 1 - <_> - 5 - - 4 2 2 11 - <_> - 0 - - 5 7 2 1 - <_> - 7 - - 0 6 1 1 - <_> - 9 - - 2 3 2 6 - <_> - 3 - - 1 5 4 1 - <_> - 1 - - 4 12 1 2 - <_> - 9 - - 0 8 2 7 - <_> - 1 - - 2 11 5 4 - <_> - 2 - - 3 3 2 8 - <_> - 1 - - 0 5 2 7 - <_> - 4 - - 3 5 2 10 - <_> - 1 - - 4 1 1 8 - <_> - 0 - - 0 1 7 1 - <_> - 4 - - 0 2 7 2 - <_> - 9 - - 6 0 1 13 - <_> - 7 - - 3 1 4 1 - <_> - 9 - - 3 3 3 8 - <_> - 4 - - 2 2 3 4 - <_> - 5 - - 6 0 1 2 - <_> - 8 - - 2 7 4 1 - <_> - 1 - - 3 5 2 5 - <_> - 3 - - 1 12 5 3 - <_> - 5 - - 4 1 3 4 - <_> - 1 - - 0 0 6 2 - <_> - 7 - - 0 13 7 1 - <_> - 5 - - 5 5 2 1 - <_> - 7 - - 2 6 4 4 - <_> - 0 - - 0 2 4 6 - <_> - 3 - - 0 9 7 1 - <_> - 9 - - 0 5 7 1 - <_> - 5 - - 2 11 4 2 - <_> - 7 - - 1 2 6 4 - <_> - 5 - - 2 14 5 1 - <_> - 1 - - 0 0 7 14 - <_> - 9 - - 2 2 4 2 - <_> - 9 - - 2 7 4 3 - <_> - 9 - - 0 7 1 5 - <_> - 0 - - 3 8 3 5 - <_> - 8 - - 5 4 2 6 - <_> - 1 - - 1 4 6 1 - <_> - 2 - - 2 7 5 4 - <_> - 7 - - 1 11 6 1 - <_> - 7 - - 4 0 1 11 - <_> - 7 - - 2 12 4 3 - <_> - 1 - - 3 12 1 2 - <_> - 3 - - 0 3 4 2 - <_> - 1 - - 3 7 2 6 - <_> - 3 - - 0 3 2 6 - <_> - 7 - - 1 3 4 2 - <_> - 5 - - 2 0 1 3 - <_> - 2 - - 5 13 2 2 - <_> - 2 - - 3 0 4 6 - <_> - 9 - - 2 4 5 3 - <_> - 7 - - 3 5 2 2 - <_> - 7 - - 2 2 4 4 - <_> - 5 - - 2 5 5 7 - <_> - 2 - - 2 1 3 2 - <_> - 5 - - 3 3 3 1 - <_> - 3 - - 2 1 2 12 - <_> - 8 - - 3 1 2 3 - <_> - 5 - - 5 0 1 4 - <_> - 9 - - 2 4 4 1 - <_> - 2 - - 5 3 1 4 - <_> - 9 - - 2 1 1 4 - <_> - 9 - - 3 9 2 4 - <_> - 2 - - 0 14 3 1 - <_> - 2 - - 3 3 2 8 - <_> - 3 - - 0 14 6 1 - <_> - 4 - - 3 8 2 5 - <_> - 0 - - 2 6 5 7 - <_> - 0 - - 0 10 7 1 - <_> - 0 - - 2 0 5 2 - <_> - 3 - - 0 5 7 2 - <_> - 5 - - 4 4 3 2 - <_> - 7 - - 1 7 6 3 - <_> - 1 - - 3 0 2 8 - <_> - 2 - - 4 9 2 4 - <_> - 4 - - 3 1 2 8 - <_> - 1 - - 3 7 2 1 - <_> - 3 - - 0 11 5 2 - <_> - 1 - - 4 10 3 1 - <_> - 1 - - 2 4 4 8 - <_> - 4 - - 4 11 3 3 - <_> - 4 - - 1 9 1 2 - <_> - 0 - - 1 14 4 1 - <_> - 2 - - 2 1 3 1 - <_> - 3 - - 2 3 2 10 - <_> - 7 - - 6 2 1 3 - <_> - 4 - - 1 1 6 6 - <_> - 9 - - 3 5 2 2 - <_> - 7 - - 0 7 6 1 - <_> - 8 - - 3 3 2 4 - <_> - 8 - - 2 1 5 4 - <_> - 8 - - 0 3 6 1 - <_> - 1 - - 4 0 3 9 - <_> - 4 - - 4 1 1 8 - <_> - 4 - - 0 6 2 4 - <_> - 5 - - 1 5 6 6 - <_> - 4 - - 3 4 1 11 - <_> - 1 - - 2 12 2 2 - <_> - 7 - - 0 8 4 2 - <_> - 0 - - 0 13 3 1 - <_> - 9 - - 0 0 7 3 - <_> - 5 - - 0 5 6 3 - <_> - 1 - - 0 0 6 14 - <_> - 1 - - 0 10 5 4 - <_> - 9 - - 0 13 1 1 - <_> - 0 - - 1 1 6 12 - <_> - 4 - - 2 0 5 15 - <_> - 1 - - 4 5 1 7 - <_> - 7 - - 1 0 2 3 - <_> - 3 - - 4 14 3 1 - <_> - 9 - - 4 1 1 1 - <_> - 1 - - 0 13 2 2 - <_> - 7 - - 2 12 4 1 - <_> - 9 - - 1 8 2 2 - <_> - 3 - - 0 4 4 1 - <_> - 7 - - 1 2 2 5 - <_> - 0 - - 1 10 5 3 - <_> - 9 - - 1 4 6 6 - <_> - 1 - - 3 0 1 10 - <_> - 4 - - 0 8 1 1 - <_> - 5 - - 0 10 1 5 - <_> - 2 - - 1 11 4 2 - <_> - 8 - - 0 0 3 13 - <_> - 5 - - 4 14 3 1 - <_> - 7 - - 0 11 7 1 - <_> - 7 - - 0 0 3 9 - <_> - 7 - - 4 14 1 1 - <_> - 9 - - 1 7 4 2 - <_> - 4 - - 0 3 6 3 - <_> - 3 - - 0 3 4 3 - <_> - 8 - - 3 2 3 2 - <_> - 5 - - 0 9 3 6 - <_> - 4 - - 2 2 3 4 - <_> - 1 - - 3 2 2 4 - <_> - 2 - - 1 3 4 9 - <_> - 7 - - 0 6 2 2 - <_> - 9 - - 3 5 4 1 - <_> - 7 - - 3 5 1 1 - <_> - 5 - - 5 3 1 7 - <_> - 9 - - 3 7 1 7 - <_> - 4 - - 1 5 6 2 - <_> - 2 - - 0 13 7 1 - <_> - 9 - - 6 0 1 3 - <_> - 1 - - 6 8 1 1 - <_> - 2 - - 0 11 6 2 - <_> - 3 - - 1 10 1 2 - <_> - 2 - - 3 8 3 1 - <_> - 1 - - 0 13 5 1 - <_> - 3 - - 2 4 3 10 - <_> - 4 - - 2 8 4 6 - <_> - 5 - - 3 2 4 8 - <_> - 3 - - 0 14 6 1 - <_> - 1 - - 0 10 3 5 - <_> - 9 - - 4 8 1 2 - <_> - 9 - - 0 11 3 1 - <_> - 7 - - 3 13 1 2 - <_> - 3 - - 2 9 2 3 - <_> - 5 - - 3 9 1 1 - <_> - 1 - - 2 4 4 9 - <_> - 0 - - 2 2 4 11 - <_> - 7 - - 5 2 2 11 - <_> - 0 - - 1 13 6 1 - <_> - 7 - - 3 6 3 4 - <_> - 2 - - 2 7 5 8 - <_> - 7 - - 3 0 2 1 - <_> - 2 - - 3 14 2 1 - <_> - 1 - - 3 4 2 8 - <_> - 9 - - 3 3 1 9 - <_> - 5 - - 3 2 4 4 - <_> - 4 - - 4 4 1 11 - <_> - 9 - - 2 6 4 6 - <_> - 8 - - 2 3 5 1 - <_> - 9 - - 2 5 2 2 - <_> - 2 - - 1 6 3 7 - <_> - 7 - - 1 1 1 7 - <_> - 1 - - 0 5 7 3 - <_> - 1 - - 3 7 4 3 - <_> - 5 - - 0 14 7 1 - <_> - 1 - - 2 9 4 3 - <_> - 3 - - 0 6 4 2 - <_> - 5 - - 4 10 3 3 - <_> - 4 - - 2 8 2 6 - <_> - 4 - - 3 1 1 7 - <_> - 1 - - 2 0 5 2 - <_> - 7 - - 3 6 2 8 - <_> - 1 - - 0 10 7 1 - <_> - 8 - - 1 1 5 7 - <_> - 7 - - 3 3 1 7 - <_> - 0 - - 0 4 7 3 - <_> - 3 - - 1 5 3 1 - <_> - 4 - - 1 4 4 7 - <_> - 2 - - 5 14 2 1 - <_> - 2 - - 5 0 2 7 - <_> - 1 - - 1 2 5 6 - <_> - 4 - - 3 9 2 4 - <_> - 8 - - 0 5 6 2 - <_> - 4 - - 0 13 4 2 - <_> - 2 - - 0 11 6 2 - <_> - 2 - - 2 13 3 2 - <_> - 1 - - 5 12 2 3 - <_> - 5 - - 4 3 2 3 - <_> - 1 - - 3 12 4 2 - <_> - 5 - - 0 0 7 5 - <_> - 4 - - 3 14 3 1 - <_> - 4 - - 1 7 6 3 - <_> - 1 - - 3 7 3 1 - <_> - 1 - - 2 1 4 12 - <_> - 9 - - 0 2 2 2 - <_> - 1 - - 4 7 1 7 - <_> - 9 - - 0 5 7 1 - <_> - 2 - - 2 3 4 10 - <_> - 4 - - 0 6 2 3 - <_> - 1 - - 2 12 3 2 - <_> - 1 - - 4 4 1 10 - <_> - 3 - - 0 4 5 6 - <_> - 9 - - 1 1 2 4 - <_> - 5 - - 3 14 4 1 - <_> - 5 - - 2 11 4 3 - <_> - 9 - - 1 1 5 3 - <_> - 7 - - 2 7 3 1 - <_> - 7 - - 1 1 6 14 - <_> - 7 - - 2 2 3 1 - <_> - 5 - - 2 2 3 5 - <_> - 9 - - 3 8 1 4 - <_> - 4 - - 3 8 2 5 - <_> - 5 - - 5 7 1 5 - <_> - 7 - - 3 11 1 2 - <_> - 3 - - 1 4 3 8 - <_> - 9 - - 0 4 7 5 - <_> - 8 - - 2 3 1 1 - <_> - 0 - - 0 3 1 8 - <_> - 2 - - 2 4 2 2 - <_> - 0 - - 0 1 4 4 - <_> - 5 - - 6 0 1 5 - <_> - 1 - - 5 0 2 9 - <_> - 5 - - 1 0 5 2 - <_> - 4 - - 3 0 1 6 - <_> - 8 - - 2 1 5 8 - <_> - 3 - - 2 9 2 4 - <_> - 3 - - 1 1 6 6 - <_> - 2 - - 1 13 5 2 - <_> - 5 - - 3 10 3 3 - <_> - 7 - - 4 5 1 1 - <_> - 1 - - 2 10 4 5 - <_> - 1 - - 3 13 2 2 - <_> - 7 - - 3 6 2 1 - <_> - 5 - - 5 0 2 10 - <_> - 1 - - 2 12 3 2 - <_> - 3 - - 3 0 1 7 - <_> - 8 - - 0 6 7 6 - <_> - 4 - - 3 4 2 5 - <_> - 9 - - 3 4 3 2 - <_> - 8 - - 1 0 5 1 - <_> - 1 - - 2 10 5 1 - <_> - 4 - - 2 7 5 1 - <_> - 1 - - 0 0 6 14 - <_> - 9 - - 3 9 2 2 - <_> - 1 - - 5 3 1 5 - <_> - 0 - - 1 10 4 2 - <_> - 7 - - 3 10 2 2 - <_> - 8 - - 1 4 5 10 - <_> - 7 - - 0 14 7 1 - <_> - 7 - - 1 2 1 1 - <_> - 5 - - 3 3 2 2 - <_> - 9 - - 0 5 3 1 - <_> - 1 - - 4 1 1 7 - <_> - 3 - - 1 4 5 2 - <_> - 4 - - 0 1 7 6 - <_> - 3 - - 0 12 6 3 - <_> - 7 - - 6 11 1 3 - <_> - 2 - - 2 12 4 1 - <_> - 4 - - 2 9 4 5 - <_> - 0 - - 0 13 2 1 - <_> - 8 - - 2 6 4 2 - <_> - 4 - - 0 11 1 3 - <_> - 4 - - 1 11 5 3 - <_> - 1 - - 6 12 1 3 - <_> - 1 - - 2 12 3 2 - <_> - 5 - - 4 4 3 1 - <_> - 5 - - 1 1 3 2 - <_> - 3 - - 3 5 3 7 - <_> - 4 - - 2 11 5 4 - <_> - 2 - - 0 4 4 2 - <_> - 9 - - 1 1 1 5 - <_> - 3 - - 1 1 2 6 - <_> - 3 - - 0 2 3 7 - <_> - 1 - - 1 5 3 4 - <_> - 1 - - 3 4 2 8 - <_> - 2 - - 0 14 7 1 - <_> - 2 - - 3 4 3 9 - <_> - 1 - - 0 7 5 3 - <_> - 9 - - 0 5 7 3 - <_> - 4 - - 4 2 1 3 - <_> - 9 - - 6 4 1 1 - <_> - 9 - - 6 1 1 1 - <_> - 7 - - 2 1 1 1 - <_> - 2 - - 0 3 6 10 - <_> - 4 - - 2 5 3 10 - <_> - 8 - - 4 1 1 3 - <_> - 1 - - 3 8 2 1 - <_> - 1 - - 3 12 3 2 - <_> - 5 - - 3 4 4 2 - <_> - 0 - - 2 4 2 8 - <_> - 7 - - 4 7 1 1 - <_> - 0 - - 5 2 1 7 - <_> - 1 - - 0 0 7 1 - <_> - 5 - - 1 14 3 1 - <_> - 4 - - 2 8 4 5 - <_> - 3 - - 0 14 6 1 - <_> - 3 - - 2 11 3 2 - <_> - 9 - - 4 6 1 5 - <_> - 9 - - 2 9 3 5 - <_> - 9 - - 6 1 1 8 - <_> - 7 - - 6 11 1 3 - <_> - 4 - - 3 1 2 7 - <_> - 7 - - 6 1 1 7 - <_> - 1 - - 1 5 5 2 - <_> - 0 - - 5 3 2 10 - <_> - 3 - - 3 1 1 5 - <_> - 1 - - 2 13 2 2 - <_> - 0 - - 4 8 2 4 - <_> - 9 - - 0 5 7 1 - <_> - 3 - - 2 4 1 4 - <_> - 4 - - 2 4 4 4 - <_> - 7 - - 2 5 3 5 - <_> - 0 - - 2 6 3 6 - <_> - 7 - - 0 9 6 1 - <_> - 0 - - 1 14 6 1 - <_> - 2 - - 2 0 3 3 - <_> - 7 - - 5 0 2 6 - <_> - 1 - - 3 5 4 8 - <_> - 1 - - 0 3 7 3 - <_> - 3 - - 4 3 1 2 - <_> - 9 - - 3 5 2 2 - <_> - 9 - - 0 2 1 3 - <_> - 8 - - 1 2 6 13 - <_> - 1 - - 3 1 1 9 - <_> - 0 - - 0 10 7 3 - <_> - 5 - - 0 6 6 4 - <_> - 1 - - 6 5 1 10 - <_> - 0 - - 0 1 1 14 - <_> - 4 - - 0 8 5 7 - <_> - 3 - - 6 11 1 3 - <_> - 1 - - 0 12 7 2 - <_> - 1 - - 2 3 1 9 - <_> - 3 - - 0 4 7 2 - <_> - 9 - - 4 5 2 1 - <_> - 2 - - 2 0 3 11 - <_> - 8 - - 4 2 1 2 - <_> - 4 - - 3 6 2 9 - <_> - 1 - - 0 13 6 2 - <_> - 1 - - 2 12 2 2 - <_> - 3 - - 0 1 4 8 - <_> - 2 - - 0 4 4 1 - <_> - 3 - - 0 5 6 2 - <_> - 7 - - 0 7 2 1 - <_> - 7 - - 3 6 3 4 - <_> - 5 - - 4 7 1 6 - <_> - 3 - - 3 8 3 2 - <_> - 5 - - 1 13 3 1 - <_> - 4 - - 3 11 2 1 - <_> - 2 - - 0 14 5 1 - <_> - 7 - - 3 10 2 3 - <_> - 4 - - 3 2 1 4 - <_> - 1 - - 3 2 1 2 - <_> - 1 - - 0 1 5 1 - <_> - 2 - - 4 6 2 7 - <_> - 7 - - 3 11 1 2 - <_> - 1 - - 3 12 2 3 - <_> - 7 - - 4 5 1 1 - <_> - 1 - - 4 1 2 7 - <_> - 7 - - 2 5 1 2 - <_> - 3 - - 1 3 5 10 - <_> - 7 - - 0 7 7 1 - <_> - 8 - - 0 0 4 5 - <_> - 3 - - 1 10 1 4 - <_> - 3 - - 2 11 4 2 - <_> - 0 - - 2 10 3 2 - <_> - 9 - - 3 10 2 3 - <_> - 5 - - 1 0 3 10 - <_> - 3 - - 2 3 3 9 - <_> - 8 - - 6 5 1 2 - <_> - 4 - - 2 9 3 6 - <_> - 0 - - 2 8 5 6 - <_> - 2 - - 2 3 3 8 - <_> - 3 - - 6 5 1 2 - <_> - 3 - - 3 14 4 1 - <_> - 0 - - 2 8 3 2 - <_> - 2 - - 0 7 6 6 - <_> - 5 - - 5 4 1 7 - <_> - 1 - - 3 5 1 2 - <_> - 1 - - 3 0 2 9 - <_> - 0 - - 5 0 1 5 - <_> - 0 - - 2 14 2 1 - <_> - 4 - - 3 2 4 7 - <_> - 9 - - 3 2 1 8 - <_> - 0 - - 0 3 6 8 - <_> - 9 - - 4 8 1 4 - <_> - 7 - - 0 8 5 2 - <_> - 4 - - 3 8 2 5 - <_> - 1 - - 2 10 4 3 - <_> - 8 - - 0 12 6 1 - <_> - 9 - - 5 6 2 4 - <_> - 8 - - 2 6 4 2 - <_> - 5 - - 3 0 3 3 - <_> - 1 - - 0 11 5 1 - <_> - 9 - - 0 5 6 1 - <_> - 0 - - 4 12 3 1 - <_> - 2 - - 4 13 3 2 - <_> - 5 - - 3 2 3 4 - <_> - 3 - - 0 0 3 6 - <_> - 1 - - 3 13 1 1 - <_> - 0 - - 3 10 3 2 - <_> - 2 - - 5 3 2 3 - <_> - 9 - - 1 0 1 2 - <_> - 7 - - 3 1 4 1 - <_> - 9 - - 3 8 2 1 - <_> - 1 - - 0 11 6 2 - <_> - 0 - - 0 12 2 3 - <_> - 5 - - 0 4 5 5 - <_> - 5 - - 5 5 2 1 - <_> - 1 - - 1 2 3 7 - <_> - 9 - - 0 0 1 3 - <_> - 0 - - 1 8 6 4 - <_> - 8 - - 0 6 1 6 - <_> - 1 - - 4 2 1 9 - <_> - 5 - - 3 13 4 2 - <_> - 1 - - 1 0 6 15 - <_> - 3 - - 2 4 2 8 - <_> - 8 - - 4 0 3 11 - <_> - 4 - - 0 7 1 4 - <_> - 2 - - 1 4 3 10 - <_> - 7 - - 0 8 2 2 - <_> - 9 - - 3 10 4 5 - <_> - 4 - - 1 4 3 2 - <_> - 9 - - 3 1 2 9 - <_> - 9 - - 0 3 2 2 - <_> - 2 - - 2 10 4 3 - <_> - 5 - - 0 14 7 1 - <_> - 1 - - 4 5 1 7 - <_> - 7 - - 3 11 3 1 - <_> - 5 - - 4 5 2 9 - <_> - 9 - - 3 6 3 7 - <_> - 8 - - 0 6 7 2 - <_> - 5 - - 3 14 4 1 - <_> - 3 - - 2 2 2 11 - <_> - 4 - - 3 2 2 2 - <_> - 1 - - 0 0 7 1 - <_> - 5 - - 2 11 3 3 - <_> - 4 - - 2 1 4 14 - <_> - 0 - - 0 14 4 1 - <_> - 9 - - 1 7 2 5 - <_> - 3 - - 0 3 4 3 - <_> - 9 - - 1 8 4 2 - <_> - 9 - - 6 0 1 12 - <_> - 1 - - 0 10 1 1 - <_> - 9 - - 3 6 1 9 - <_> - 9 - - 0 4 1 11 - <_> - 0 - - 3 11 4 2 - <_> - 7 - - 1 10 5 2 - <_> - 4 - - 1 7 6 3 - <_> - 1 - - 0 0 7 2 - <_> - 4 - - 3 2 1 4 - <_> - 5 - - 0 5 7 7 - <_> - 1 - - 3 12 3 2 - <_> - 5 - - 5 1 1 12 - <_> - 7 - - 1 9 5 1 - <_> - 4 - - 3 8 2 5 - <_> - 1 - - 0 13 6 2 - <_> - 9 - - 3 1 2 12 - <_> - 2 - - 2 5 4 2 - <_> - 0 - - 2 11 3 1 - <_> - 1 - - 0 9 7 3 - <_> - 2 - - 2 13 5 2 - <_> - 7 - - 0 8 5 7 - <_> - 3 - - 3 6 4 1 - <_> - 7 - - 3 4 2 4 - <_> - 4 - - 4 1 1 7 - <_> - 1 - - 3 3 2 3 - <_> - 4 - - 2 2 4 4 - <_> - 1 - - 1 2 6 4 - <_> - 5 - - 1 4 6 2 - <_> - 0 - - 2 3 2 3 - <_> - 9 - - 0 5 7 1 - <_> - 8 - - 2 2 4 2 - <_> - 5 - - 0 8 4 3 - <_> - 1 - - 4 13 1 1 - <_> - 3 - - 2 4 2 9 - <_> - 5 - - 2 3 4 4 - <_> - 4 - - 2 6 3 9 - <_> - 2 - - 3 4 2 9 - <_> - 2 - - 0 11 5 1 - <_> - 3 - - 0 14 7 1 - <_> - 4 - - 2 8 4 5 - <_> - 9 - - 2 12 2 2 - <_> - 3 - - 1 4 6 8 - <_> - 7 - - 0 8 3 1 - <_> - 7 - - 0 6 5 4 - <_> - 5 - - 4 0 3 12 - <_> - 7 - - 1 0 5 4 - <_> - 4 - - 4 1 3 9 - <_> - 1 - - 3 5 4 8 - <_> - 1 - - 0 7 7 7 - <_> - 5 - - 0 0 4 1 - <_> - 3 - - 2 9 4 1 - <_> - 8 - - 2 4 4 11 - <_> - 9 - - 4 8 1 3 - <_> - 2 - - 3 4 4 9 - <_> - 2 - - 2 10 3 1 - <_> - 4 - - 3 12 2 1 - <_> - 7 - - 3 11 2 1 - <_> - 7 - - 1 4 6 7 - <_> - 9 - - 3 1 2 2 - <_> - 2 - - 5 14 2 1 - <_> - 5 - - 3 11 3 2 - <_> - 4 - - 0 0 3 2 - <_> - 3 - - 0 0 1 14 - <_> - 8 - - 4 0 3 12 - <_> - 7 - - 6 8 1 4 - <_> - 7 - - 6 0 1 3 - <_> - 7 - - 1 6 6 4 - <_> - 8 - - 0 6 7 1 - <_> - 5 - - 4 2 1 11 - <_> - 4 - - 2 8 3 7 - <_> - 3 - - 4 6 1 3 - <_> - 0 - - 2 14 5 1 - <_> - 3 - - 1 11 5 3 - <_> - 4 - - 2 0 3 2 - <_> - 4 - - 2 1 5 14 - <_> - 3 - - 1 5 5 1 - <_> - 0 - - 2 0 4 1 - <_> - 7 - - 1 7 1 1 - <_> - 0 - - 1 2 3 3 - <_> - 4 - - 1 7 3 4 - <_> - 0 - - 3 9 1 4 - <_> - 1 - - 1 13 4 1 - <_> - 3 - - 2 1 5 6 - <_> - 9 - - 4 2 3 9 - <_> - 9 - - 0 1 1 13 - <_> - 3 - - 2 1 1 13 - <_> - 3 - - 2 14 4 1 - <_> - 1 - - 2 11 5 4 - <_> - 5 - - 4 0 3 7 - <_> - 1 - - 2 6 3 6 - <_> - 8 - - 5 3 2 4 - <_> - 0 - - 0 1 3 3 - <_> - 9 - - 4 4 1 9 - <_> - 9 - - 6 6 1 6 - <_> - 9 - - 0 14 6 1 - <_> - 0 - - 1 8 5 6 - <_> - 1 - - 0 2 6 11 - <_> - 5 - - 1 14 6 1 - <_> - 4 - - 4 1 1 9 - <_> - 8 - - 6 11 1 3 - <_> - 8 - - 2 1 5 8 - <_> - 3 - - 0 3 3 5 - <_> - 4 - - 0 7 2 2 - <_> - 8 - - 2 0 5 1 - <_> - 8 - - 1 6 5 1 - <_> - 5 - - 4 4 3 3 - <_> - 0 - - 3 1 3 1 - <_> - 9 - - 1 5 1 2 - <_> - 1 - - 2 12 5 2 - <_> - 3 - - 0 5 7 1 - <_> - 1 - - 0 11 6 2 - <_> - 2 - - 4 2 2 4 - <_> - 5 - - 5 11 1 3 - <_> - 5 - - 1 1 3 8 - <_> - 5 - - 0 3 5 3 - <_> - 5 - - 1 5 6 1 - <_> - 2 - - 2 14 4 1 - <_> - 9 - - 6 6 1 3 - <_> - 4 - - 0 12 7 3 - <_> - 2 - - 2 10 4 3 - <_> - 1 - - 3 7 4 1 - <_> - 9 - - 0 2 2 1 - <_> - 1 - - 3 0 2 12 - <_> - 3 - - 4 14 3 1 - <_> - 1 - - 3 4 3 4 - <_> - 1 - - 2 12 3 2 - <_> - 0 - - 0 4 5 7 - <_> - 3 - - 3 2 3 8 - <_> - 4 - - 2 10 3 4 - <_> - 3 - - 2 9 2 4 - <_> - 0 - - 2 10 4 3 - <_> - 4 - - 2 0 5 15 - <_> - 1 - - 0 12 4 1 - <_> - 4 - - 3 2 1 4 - <_> - 1 - - 0 0 7 1 - <_> - 1 - - 1 9 1 6 - <_> - 4 - - 3 5 2 10 - <_> - 0 - - 2 2 4 10 - <_> - 7 - - 1 5 6 4 - <_> - 7 - - 1 8 4 2 - <_> - 4 - - 2 7 5 4 - <_> - 4 - - 0 1 6 1 - <_> - 3 - - 3 3 1 2 - <_> - 5 - - 1 14 3 1 - <_> - 9 - - 0 5 6 3 - <_> - 8 - - 0 3 1 12 - <_> - 3 - - 0 0 4 11 - <_> - 9 - - 3 4 1 3 - <_> - 9 - - 6 0 1 1 - <_> - 7 - - 1 3 1 2 - <_> - 0 - - 3 8 4 4 - <_> - 5 - - 5 3 1 9 - <_> - 1 - - 3 11 2 3 - <_> - 9 - - 3 7 2 6 - <_> - 4 - - 2 8 4 5 - <_> - 1 - - 4 0 1 10 - <_> - 8 - - 6 5 1 3 - <_> - 0 - - 2 14 2 1 - <_> - 3 - - 2 2 1 5 - <_> - 0 - - 3 4 1 1 - <_> - 1 - - 2 4 3 7 - <_> - 7 - - 3 4 1 3 - <_> - 7 - - 2 0 5 15 - <_> - 7 - - 3 4 2 1 - <_> - 1 - - 2 5 4 8 - <_> - 9 - - 3 9 1 4 - <_> - 0 - - 1 3 4 1 - <_> - 3 - - 2 7 2 6 - <_> - 3 - - 0 12 3 1 - <_> - 5 - - 3 14 4 1 - <_> - 1 - - 0 2 7 5 - <_> - 4 - - 3 14 3 1 - <_> - 5 - - 3 4 1 3 - <_> - 2 - - 3 4 2 8 - <_> - 7 - - 0 11 4 1 - <_> - 0 - - 1 13 5 2 - <_> - 0 - - 3 10 2 3 - <_> - 1 - - 2 8 4 3 - <_> - 7 - - 1 8 1 6 - <_> - 1 - - 6 6 1 8 - <_> - 5 - - 0 2 6 3 - <_> - 8 - - 3 1 2 3 - <_> - 2 - - 4 5 3 8 - <_> - 7 - - 3 8 1 1 - <_> - 1 - - 1 11 1 4 - <_> - 1 - - 2 13 2 1 - <_> - 9 - - 3 1 2 3 - <_> - 2 - - 2 0 3 2 - <_> - 3 - - 2 1 2 6 - <_> - 7 - - 3 6 2 1 - <_> - 4 - - 0 3 5 3 - <_> - 5 - - 2 7 3 4 - <_> - 3 - - 3 12 1 1 - <_> - 9 - - 3 1 2 5 - <_> - 4 - - 0 8 7 1 - <_> - 1 - - 1 6 6 8 - <_> - 4 - - 3 11 2 4 - <_> - 9 - - 5 1 2 1 - <_> - 7 - - 2 1 1 1 - <_> - 7 - - 1 14 2 1 - <_> - 5 - - 1 5 6 7 - <_> - 4 - - 2 9 4 6 - <_> - 5 - - 0 6 7 9 - <_> - 8 - - 0 1 7 4 - <_> - 3 - - 3 3 1 4 - <_> - 4 - - 3 12 2 1 - <_> - 2 - - 0 13 5 2 - <_> - 2 - - 1 11 4 2 - <_> - 3 - - 0 3 6 7 - <_> - 9 - - 0 5 7 1 - <_> - 1 - - 3 9 1 3 - <_> - 4 - - 2 0 4 8 - <_> - 8 - - 3 2 3 2 - <_> - 4 - - 1 0 4 1 - <_> - 5 - - 5 3 1 10 - <_> - 0 - - 0 11 2 4 - <_> - 1 - - 4 10 1 4 - <_> - 2 - - 3 3 3 1 - <_> - 1 - - 3 13 1 2 - <_> - 2 - - 1 10 5 1 - <_> - 4 - - 0 8 5 7 - <_> - 4 - - 1 5 4 8 - <_> - 4 - - 1 1 5 14 - <_> - 1 - - 2 1 4 12 - <_> - 4 - - 4 2 3 3 - <_> - 1 - - 3 12 2 2 - <_> - 4 - - 4 8 2 6 - <_> - 5 - - 3 11 4 2 - <_> - 2 - - 0 6 1 6 - <_> - 3 - - 1 14 6 1 - <_> - 3 - - 2 9 2 3 - <_> - 7 - - 1 2 1 7 - <_> - 1 - - 6 13 1 2 - <_> - 1 - - 3 5 2 1 - <_> - 8 - - 0 0 6 1 - <_> - 5 - - 4 4 1 2 - <_> - 4 - - 3 1 1 8 - <_> - 1 - - 3 7 2 1 - <_> - 4 - - 3 3 2 8 - <_> - 1 - - 2 10 5 3 - <_> - 9 - - 4 2 3 2 - <_> - 9 - - 2 7 5 3 - <_> - 7 - - 1 11 3 1 - <_> - 2 - - 2 10 3 3 - <_> - 5 - - 4 4 3 9 - <_> - 7 - - 6 5 1 2 - <_> - 3 - - 2 13 3 1 - <_> - 8 - - 0 6 7 1 - <_> - 2 - - 3 13 4 2 - <_> - 9 - - 3 0 2 13 - <_> - 4 - - 3 2 2 2 - <_> - 1 - - 3 2 2 2 - <_> - 4 - - 1 2 2 2 - <_> - 4 - - 3 8 2 4 - <_> - 3 - - 6 5 1 5 - <_> - 8 - - 3 6 2 1 - <_> - 1 - - 0 5 6 2 - <_> - 0 - - 2 14 2 1 - <_> - 1 - - 0 5 3 3 - <_> - 3 - - 2 4 1 6 - <_> - 7 - - 6 3 1 2 - <_> - 5 - - 2 11 4 3 - <_> - 5 - - 0 14 7 1 - <_> - 3 - - 2 12 5 2 - <_> - 8 - - 0 4 1 9 - <_> - 9 - - 0 5 2 5 - <_> - 4 - - 1 11 6 1 - <_> - 4 - - 3 12 2 1 - <_> - 4 - - 6 6 1 5 - <_> - 1 - - 0 0 7 2 - <_> - 9 - - 1 0 1 3 - <_> - 1 - - 3 10 2 4 - <_> - 5 - - 4 4 3 1 - <_> - 4 - - 2 14 4 1 - <_> - 2 - - 3 2 2 9 - <_> - 5 - - 2 7 2 4 - <_> - 9 - - 1 7 6 2 - <_> - 2 - - 3 14 2 1 - <_> - 1 - - 3 11 1 1 - <_> - 0 - - 5 7 1 4 - <_> - 2 - - 4 1 2 12 - <_> - 4 - - 3 4 2 9 - <_> - 7 - - 1 8 1 2 - <_> - 4 - - 3 1 2 8 - <_> - 7 - - 3 14 3 1 - <_> - 8 - - 1 5 6 4 - <_> - 9 - - 3 5 2 2 - <_> - 9 - - 0 3 2 3 - <_> - 7 - - 0 12 1 2 - <_> - 1 - - 3 0 4 13 - <_> - 3 - - 1 14 6 1 - <_> - 3 - - 2 6 2 6 - <_> - 0 - - 2 3 4 10 - <_> - 3 - - 4 9 2 2 - <_> - 0 - - 3 5 3 1 - <_> - 8 - - 3 3 2 1 - <_> - 1 - - 6 8 1 3 - <_> - 3 - - 1 4 3 8 - <_> - 9 - - 0 5 2 4 - <_> - 1 - - 0 12 7 2 - <_> - 3 - - 0 0 3 4 - <_> - 1 - - 3 4 2 6 - <_> - 8 - - 3 10 2 4 - <_> - 1 - - 2 0 5 12 - <_> - 5 - - 4 4 3 2 - <_> - 1 - - 0 10 7 1 - <_> - 2 - - 1 1 6 5 - <_> - 0 - - 2 14 3 1 - <_> - 0 - - 2 5 1 7 - <_> - 1 - - 2 0 3 3 - <_> - 8 - - 2 0 4 1 - <_> - 0 - - 1 9 4 3 - <_> - 8 - - 1 0 6 5 - <_> - 3 - - 0 4 3 2 - <_> - 7 - - 3 8 3 2 - <_> - 1 - - 0 0 3 8 - <_> - 5 - - 3 3 2 2 - <_> - 9 - - 4 1 1 12 - <_> - 4 - - 2 8 5 6 - <_> - 5 - - 2 11 4 3 - <_> - 8 - - 0 7 1 6 - <_> - 1 - - 3 2 2 7 - <_> - 7 - - 3 7 2 4 - <_> - 7 - - 3 4 2 2 - <_> - 7 - - 1 1 1 1 - <_> - 4 - - 2 2 4 11 - <_> - 1 - - 1 0 6 14 - <_> - 7 - - 1 11 5 1 - <_> - 5 - - 4 0 3 6 - <_> - 9 - - 4 8 1 4 - <_> - 4 - - 2 1 5 7 - <_> - 4 - - 4 2 3 5 - <_> - 3 - - 1 14 6 1 - <_> - 3 - - 0 4 3 2 - <_> - 0 - - 2 6 5 7 - <_> - 1 - - 1 5 2 7 - <_> - 3 - - 3 1 1 3 - <_> - 9 - - 2 5 2 1 - <_> - 8 - - 0 12 2 1 - <_> - 8 - - 2 0 2 4 - <_> - 3 - - 2 9 3 4 - <_> - 9 - - 5 6 1 3 - <_> - 2 - - 0 13 7 2 - <_> - 7 - - 3 5 3 5 - <_> - 0 - - 2 1 3 4 - <_> - 1 - - 0 1 5 1 - <_> - 7 - - 0 13 7 2 - <_> - 4 - - 1 12 6 3 - <_> - 1 - - 1 11 6 2 - <_> - 1 - - 2 12 4 2 - <_> - 5 - - 5 5 2 1 - <_> - 9 - - 2 5 5 6 - <_> - 0 - - 2 10 5 3 - <_> - 9 - - 0 3 7 11 - <_> - 9 - - 6 0 1 13 - <_> - 2 - - 1 14 2 1 - <_> - 5 - - 3 3 2 4 - <_> - 0 - - 0 2 1 7 - <_> - 7 - - 4 5 1 1 - <_> - 7 - - 1 1 5 14 - <_> - 0 - - 2 3 5 6 - <_> - 7 - - 1 11 4 1 - <_> - 7 - - 3 3 2 9 - <_> - 5 - - 5 6 1 7 - <_> - 4 - - 2 8 3 6 - <_> - 9 - - 3 2 2 1 - <_> - 7 - - 1 1 2 8 - <_> - 1 - - 0 12 6 1 - <_> - 7 - - 2 5 4 9 - <_> - 8 - - 1 5 6 3 - <_> - 2 - - 5 14 2 1 - <_> - 2 - - 2 11 4 2 - <_> - 9 - - 0 5 7 1 - <_> - 5 - - 1 5 6 1 - <_> - 2 - - 1 1 3 2 - <_> - 4 - - 0 3 6 2 - <_> - 9 - - 0 5 5 3 - <_> - 4 - - 1 5 5 1 - <_> - 3 - - 2 5 5 1 - <_> - 3 - - 2 1 1 12 - <_> - 1 - - 2 2 1 7 - <_> - 7 - - 2 6 4 4 - <_> - 1 - - 3 1 1 10 - <_> - 7 - - 3 2 1 1 - <_> - 5 - - 4 9 2 4 - <_> - 7 - - 0 6 2 2 - <_> - 0 - - 3 13 4 2 - <_> - 3 - - 0 9 2 5 - <_> - 2 - - 1 6 3 7 - <_> - 8 - - 5 8 2 6 - <_> - 1 - - 2 4 4 9 - <_> - 5 - - 1 14 3 1 - <_> - 4 - - 3 2 1 4 - <_> - 4 - - 6 9 1 1 - <_> - 8 - - 4 1 2 3 - <_> - 2 - - 0 2 1 8 - <_> - 8 - - 3 1 4 3 - <_> - 1 - - 3 13 3 1 - <_> - 9 - - 5 10 2 2 - <_> - 9 - - 3 9 2 4 - <_> - 5 - - 4 4 3 3 - <_> - 7 - - 1 9 6 1 - <_> - 4 - - 1 8 5 3 - <_> - 3 - - 1 4 5 9 - <_> - 7 - - 0 6 7 3 - <_> - 2 - - 0 13 4 1 - <_> - 7 - - 0 6 1 8 - <_> - 9 - - 3 6 2 1 - <_> - 7 - - 3 4 1 5 - <_> - 1 - - 3 7 4 1 - <_> - 4 - - 3 3 4 5 - <_> - 4 - - 4 8 2 7 - <_> - 1 - - 0 0 7 2 - <_> - 7 - - 3 5 2 10 - <_> - 4 - - 3 5 2 10 - <_> - 1 - - 2 2 5 3 - <_> - 8 - - 3 0 2 4 - <_> - 2 - - 2 2 5 3 - <_> - 1 - - 0 5 5 2 - <_> - 5 - - 4 8 2 5 - <_> - 0 - - 3 3 1 11 - <_> - 0 - - 4 13 3 2 - <_> - 1 - - 1 10 5 5 - <_> - 4 - - 1 0 5 2 - <_> - 1 - - 1 12 6 2 - <_> - 3 - - 1 4 3 1 - <_> - 9 - - 1 0 6 3 - <_> - 9 - - 2 3 5 11 - <_> - 2 - - 3 0 2 3 - <_> - 0 - - 2 10 5 3 - <_> - 8 - - 3 6 2 7 - <_> - 5 - - 1 13 3 2 - <_> - 2 - - 1 12 4 1 - <_> - 5 - - 4 2 1 4 - <_> - 9 - - 3 7 2 1 - <_> - 7 - - 1 11 6 2 - <_> - 7 - - 4 14 1 1 - <_> - 7 - - 5 2 2 2 - <_> - 1 - - 3 7 2 6 - <_> - 2 - - 4 1 3 12 - <_> - 4 - - 3 4 2 9 - <_> - 7 - - 3 9 3 1 - <_> - 4 - - 1 3 4 7 - <_> - 8 - - 3 8 2 2 - <_> - 7 - - 3 3 2 2 - <_> - 3 - - 0 4 4 2 - <_> - 0 - - 2 1 2 5 - <_> - 5 - - 3 6 4 6 - <_> - 2 - - 0 13 7 2 - <_> - 9 - - 2 0 5 2 - <_> - 0 - - 1 12 3 1 - <_> - 1 - - 0 0 6 14 - <_> - 9 - - 3 10 2 1 - <_> - 1 - - 0 3 7 4 - <_> - 3 - - 2 1 2 13 - <_> - 4 - - 0 6 1 8 - <_> - 7 - - 3 6 2 1 - <_> - 1 - - 0 4 2 3 - <_> - 0 - - 1 13 6 1 - <_> - 3 - - 2 3 2 10 - <_> - 4 - - 4 0 1 11 - <_> - 1 - - 4 3 1 5 - <_> - 8 - - 3 1 2 4 - <_> - 1 - - 1 13 2 2 - <_> - 9 - - 1 1 6 1 - <_> - 9 - - 3 0 2 5 - <_> - 2 - - 2 0 4 12 - <_> - 3 - - 6 6 1 4 - <_> - 2 - - 1 2 4 1 - <_> - 4 - - 3 8 2 5 - <_> - 5 - - 4 1 2 12 - <_> - 1 - - 5 0 2 7 - <_> - 1 - - 5 1 2 8 - <_> - 3 - - 1 11 6 4 - <_> - 9 - - 1 5 6 2 - <_> - 9 - - 6 0 1 2 - <_> - 7 - - 2 11 1 1 - <_> - 3 - - 0 0 5 6 - <_> - 1 - - 6 10 1 4 - <_> - 7 - - 3 0 4 1 - <_> - 3 - - 2 0 4 2 - <_> - 4 - - 3 3 4 5 - <_> - 4 - - 1 13 4 2 - <_> - 5 - - 2 10 3 5 - <_> - 5 - - 2 11 4 2 - <_> - 4 - - 1 12 1 2 - <_> - 4 - - 1 7 6 7 - <_> - 0 - - 0 13 2 1 - <_> - 3 - - 1 4 2 3 - <_> - 4 - - 0 0 7 2 - <_> - 8 - - 5 4 2 6 - <_> - 5 - - 3 13 4 2 - <_> - 2 - - 2 6 5 9 - <_> - 9 - - 4 5 3 1 - <_> - 4 - - 0 8 7 1 - <_> - 3 - - 1 0 3 6 - <_> - 2 - - 5 0 1 15 - <_> - 0 - - 4 6 3 7 - <_> - 1 - - 1 12 1 3 - <_> - 1 - - 2 13 3 1 - <_> - 5 - - 3 2 2 4 - <_> - 0 - - 2 4 2 8 - <_> - 4 - - 3 5 2 10 - <_> - 7 - - 3 7 2 1 - <_> - 8 - - 3 3 2 1 - <_> - 9 - - 3 9 2 3 - <_> - 0 - - 1 3 5 10 - <_> - 2 - - 3 1 2 2 - <_> - 5 - - 3 14 3 1 - <_> - 9 - - 6 7 1 1 - <_> - 3 - - 0 14 5 1 - <_> - 1 - - 2 4 3 8 - <_> - 1 - - 3 0 1 14 - <_> - 4 - - 2 4 1 2 - <_> - 8 - - 2 3 4 1 - <_> - 1 - - 1 5 6 6 - <_> - 9 - - 4 4 1 7 - <_> - 0 - - 2 10 3 3 - <_> - 4 - - 0 14 6 1 - <_> - 1 - - 3 4 2 3 - <_> - 1 - - 1 12 6 2 - <_> - 5 - - 2 3 5 3 - <_> - 1 - - 3 9 2 5 - <_> - 2 - - 4 14 2 1 - <_> - 2 - - 2 11 4 2 - <_> - 3 - - 1 6 5 1 - <_> - 7 - - 0 6 5 5 - <_> - 5 - - 0 3 4 3 - <_> - 7 - - 1 2 1 1 - <_> - 9 - - 0 5 7 1 - <_> - 8 - - 2 0 4 3 - <_> - 0 - - 1 7 3 3 - <_> - 4 - - 3 9 2 4 - <_> - 2 - - 2 7 4 4 - <_> - 2 - - 3 10 4 2 - <_> - 9 - - 2 5 2 1 - <_> - 8 - - 1 4 6 2 - <_> - 5 - - 4 5 3 1 - <_> - 7 - - 3 5 1 2 - <_> - 7 - - 0 3 7 12 - <_> - 7 - - 3 9 2 4 - <_> - 1 - - 3 12 2 2 - <_> - 3 - - 0 1 7 1 - <_> - 3 - - 1 3 5 10 - <_> - 4 - - 2 8 4 5 - <_> - 3 - - 1 13 2 1 - <_> - 4 - - 4 0 2 2 - <_> - 1 - - 1 7 6 2 - <_> - 7 - - 1 1 1 8 - <_> - 4 - - 2 3 4 4 - <_> - 5 - - 5 4 1 10 - <_> - 9 - - 2 5 2 2 - <_> - 3 - - 3 4 1 1 - <_> - 9 - - 1 2 2 1 - <_> - 1 - - 4 10 1 4 - <_> - 9 - - 2 3 3 11 - <_> - 4 - - 3 11 2 1 - <_> - 8 - - 0 5 7 3 - <_> - 5 - - 3 4 3 8 - <_> - 2 - - 5 13 2 2 - <_> - 3 - - 2 3 3 2 - <_> - 9 - - 4 3 2 4 - <_> - 1 - - 6 13 1 2 - <_> - 1 - - 4 10 2 4 - <_> - 3 - - 6 6 1 4 - <_> - 1 - - 3 4 4 9 - <_> - 2 - - 3 3 2 9 - <_> - 1 - - 6 6 1 5 - <_> - 0 - - 3 14 1 1 - <_> - 0 - - 2 6 4 6 - <_> - 2 - - 0 13 7 1 - <_> - 7 - - 3 6 2 1 - <_> - 7 - - 0 1 7 14 - <_> - 1 - - 2 4 3 1 - <_> - 1 - - 3 5 2 5 - <_> - 9 - - 1 0 6 4 - <_> - 3 - - 2 2 1 8 - <_> - 7 - - 4 14 1 1 - <_> - 4 - - 0 12 6 3 - <_> - 1 - - 0 0 1 3 - <_> - 2 - - 2 3 5 6 - <_> - 4 - - 2 7 5 2 - <_> - 9 - - 0 5 7 1 - <_> - 5 - - 4 3 3 3 - <_> - 0 - - 2 14 5 1 - <_> - 1 - - 2 5 5 6 - <_> - 1 - - 0 2 7 4 - <_> - 4 - - 2 2 3 4 - <_> - 7 - - 3 9 1 4 - <_> - 1 - - 2 12 3 3 - <_> - 3 - - 0 3 5 3 - <_> - 4 - - 1 7 6 4 - <_> - 8 - - 2 1 3 3 - <_> - 4 - - 2 14 5 1 - <_> - 8 - - 0 3 7 1 - <_> - 3 - - 1 4 1 2 - <_> - 5 - - 0 10 3 4 - <_> - 9 - - 0 6 2 3 - <_> - 0 - - 2 5 2 8 - <_> - 2 - - 3 11 1 3 - <_> - 4 - - 0 11 1 3 - <_> - 9 - - 5 1 2 2 - <_> - 0 - - 2 3 2 1 - <_> - 4 - - 3 8 2 4 - <_> - 2 - - 0 14 6 1 - <_> - 5 - - 2 5 5 10 - <_> - 7 - - 5 11 1 3 - <_> - 1 - - 1 12 5 2 - <_> - 3 - - 0 1 4 6 - <_> - 4 - - 2 12 5 3 - <_> - 1 - - 0 0 4 2 - <_> - 1 - - 4 10 1 5 - <_> - 7 - - 3 8 2 2 - <_> - 2 - - 2 10 4 3 - <_> - 9 - - 0 0 6 11 - <_> - 9 - - 1 2 2 2 - <_> - 0 - - 0 13 2 1 - <_> - 5 - - 2 11 4 2 - <_> - 3 - - 0 4 6 6 - <_> - 5 - - 3 14 4 1 - <_> - 5 - - 4 4 1 2 - <_> - 0 - - 5 8 1 2 - <_> - 1 - - 3 6 3 7 - <_> - 0 - - 3 14 2 1 - <_> - 1 - - 0 5 7 4 - <_> - 7 - - 0 1 2 14 - <_> - 9 - - 3 4 2 1 - <_> - 7 - - 1 10 4 5 - <_> - 8 - - 4 0 3 1 - <_> - 8 - - 2 4 1 2 - <_> - 9 - - 4 9 3 1 - <_> - 1 - - 5 7 2 7 - <_> - 5 - - 0 2 1 8 - <_> - 2 - - 4 10 3 3 - <_> - 4 - - 2 9 3 5 - <_> - 4 - - 0 1 2 5 - <_> - 1 - - 5 1 2 7 - <_> - 4 - - 4 1 1 5 - <_> - 1 - - 3 7 2 1 - <_> - 5 - - 0 5 7 2 - <_> - 3 - - 4 14 3 1 - <_> - 9 - - 1 0 2 14 - <_> - 4 - - 0 0 1 11 - <_> - 7 - - 0 9 7 1 - <_> - 7 - - 1 3 5 12 - <_> - 3 - - 0 9 5 4 - <_> - 8 - - 0 6 6 1 - <_> - 2 - - 0 13 5 2 - <_> - 8 - - 2 2 5 8 - <_> - 1 - - 3 11 1 1 - <_> - 9 - - 1 5 6 7 - <_> - 2 - - 1 12 3 1 - <_> - 2 - - 5 2 1 8 - <_> - 5 - - 4 4 2 10 - <_> - 1 - - 4 3 3 6 - <_> - 4 - - 3 8 2 5 - <_> - 3 - - 2 9 2 3 - <_> - 7 - - 1 8 6 3 - <_> - 1 - - 0 5 7 2 - <_> - 8 - - 0 0 5 2 - <_> - 5 - - 4 2 2 3 - <_> - 4 - - 6 2 1 1 - <_> - 1 - - 3 0 1 9 - <_> - 0 - - 3 8 4 4 - <_> - 7 - - 6 11 1 1 - <_> - 2 - - 2 1 2 3 - <_> - 8 - - 0 5 7 3 - <_> - 9 - - 3 4 2 3 - <_> - 1 - - 0 13 7 1 - <_> - 3 - - 2 4 1 3 - <_> - 7 - - 1 2 1 4 - <_> - 2 - - 4 2 3 3 - <_> - 3 - - 2 1 2 5 - <_> - 7 - - 6 0 1 3 - <_> - 7 - - 3 6 3 4 - <_> - 8 - - 4 0 2 8 - <_> - 5 - - 0 14 7 1 - <_> - 5 - - 3 11 3 2 - <_> - 4 - - 3 2 2 2 - <_> - 1 - - 1 10 6 5 - <_> - 8 - - 0 1 5 4 - <_> - 7 - - 5 5 1 3 - <_> - 1 - - 4 10 3 4 - <_> - 0 - - 6 7 1 1 - <_> - 9 - - 0 4 7 5 - <_> - 0 - - 2 3 2 2 - <_> - 3 - - 0 3 5 3 - <_> - 0 - - 0 14 7 1 - <_> - 3 - - 0 13 5 1 - <_> - 4 - - 0 0 6 7 - <_> - 8 - - 4 1 2 12 - <_> - 9 - - 3 7 1 8 - <_> - 9 - - 6 6 1 8 - <_> - 2 - - 0 10 6 2 - <_> - 1 - - 3 7 2 6 - <_> - 5 - - 3 3 2 8 - <_> - 1 - - 3 10 1 1 - <_> - 2 - - 2 1 4 14 - <_> - 4 - - 2 8 4 5 - <_> - 3 - - 1 3 3 4 - <_> - 3 - - 2 5 2 9 - <_> - 1 - - 3 1 3 2 - <_> - 9 - - 2 8 4 4 - <_> - 8 - - 0 3 6 1 - <_> - 7 - - 4 14 1 1 - <_> - 0 - - 3 2 3 11 - <_> - 0 - 1024 - - <_> - -8.4679585695266724e-01 - - 1 2 0 7.7750000000000000e+02 0 -1 1 5.8850000000000000e+02 - -2 -3 2 2.5500000000000000e+01 - - -8.4679585695266724e-01 7.5506496429443359e-01 - -6.9044047594070435e-01 6.3049119710922241e-01 - <_> - -1.6734303236007690e+00 - - 1 2 3 1.9500000000000000e+01 0 -1 4 1.5500000000000000e+01 - -2 -3 5 1.4500000000000000e+01 - - -7.5389009714126587e-01 6.4812886714935303e-01 - -2.1629486978054047e-01 -8.2663446664810181e-01 - <_> - -1.8291370868682861e+00 - - 1 2 6 1.3500000000000000e+01 0 -1 7 2.0350000000000000e+02 - -2 -3 8 3.0050000000000000e+02 - - -1.5570680797100067e-01 -8.0992084741592407e-01 - 6.8644106388092041e-01 -5.6922149658203125e-01 - <_> - -1.7377158403396606e+00 - - 1 2 9 3.6500000000000000e+01 0 -1 10 2.4500000000000000e+01 - -2 -3 11 2.8150000000000000e+02 - - -8.2347095012664795e-01 3.0225446820259094e-01 - 6.9995605945587158e-01 -1.7914050817489624e-01 - <_> - -2.2347910404205322e+00 - - 1 2 12 2.0550000000000000e+02 0 -1 13 6.7500000000000000e+01 - -2 -3 14 8.6350000000000000e+02 - - -4.9707528948783875e-01 1.7866376042366028e-01 - 7.4965566396713257e-01 5.7663144543766975e-03 - <_> - -1.8678615093231201e+00 - - 1 2 15 1.5150000000000000e+02 0 -1 16 1.0500000000000000e+01 - -2 -3 17 4.3255000000000000e+03 - - -2.6820951700210571e-01 6.4194840192794800e-01 - -6.7160737514495850e-01 6.3368387520313263e-02 - <_> - -2.0991549491882324e+00 - - 1 2 18 1.5000000000000000e+00 0 -1 19 2.9500000000000000e+01 - -2 -3 20 5.0000000000000000e-01 - - -5.0631237030029297e-01 5.5947405099868774e-01 - 7.0312672853469849e-01 -4.0578368306159973e-01 - <_> - -2.0249555110931396e+00 - - 1 2 21 5.2500000000000000e+01 0 -1 22 7.5000000000000000e+00 - -2 -3 23 4.3500000000000000e+01 - - -7.6095990836620331e-02 -7.4784129858016968e-01 - 5.0073879957199097e-01 -3.8508036732673645e-01 - <_> - -2.0100402832031250e+00 - - 1 2 24 3.7650000000000000e+02 0 -1 25 4.1500000000000000e+01 - -2 -3 26 2.5250000000000000e+02 - - -5.6506282091140747e-01 2.3158341646194458e-01 - -8.8750278949737549e-01 8.2055127620697021e-01 - <_> - -1.6451328992843628e+00 - - 1 2 27 7.5000000000000000e+00 0 -1 28 1.8500000000000000e+01 - -2 -3 29 2.2500000000000000e+01 - - -6.0027003288269043e-01 3.8312932848930359e-01 - 2.1947205066680908e-01 -5.9093552827835083e-01 - <_> - -2.0925648212432861e+00 - - 1 2 30 1.1500000000000000e+01 0 -1 31 9.5000000000000000e+00 - -2 -3 32 2.6350000000000000e+02 - - -4.6565398573875427e-01 5.0306195020675659e-01 - 4.4449210166931152e-01 -6.1473309993743896e-01 - <_> - -1.5271776914596558e+00 - - 1 2 33 5.0000000000000000e-01 0 -1 34 1.2500000000000000e+01 - -2 -3 35 3.6500000000000000e+01 - - -7.7037209272384644e-01 5.6538718938827515e-01 - -5.0570178031921387e-01 1.6205248236656189e-01 - <_> - -1.1876722574234009e+00 - - 1 2 36 3.5000000000000000e+00 0 -1 37 1.5000000000000000e+00 - -2 -3 38 2.5150000000000000e+02 - - -7.4505090713500977e-01 3.8910430669784546e-01 - -5.9720128774642944e-01 7.2264879941940308e-02 - <_> - -1.1631057262420654e+00 - - 1 2 39 2.7950000000000000e+02 0 -1 40 1.7065000000000000e+03 - -2 -3 41 1.2495000000000000e+03 - - 2.4566594511270523e-02 7.9330480098724365e-01 - 5.6873923540115356e-01 -4.0141937136650085e-01 - <_> - -8.4218001365661621e-01 - - 1 2 42 4.2525000000000000e+03 0 -1 43 4.5000000000000000e+00 - -2 -3 44 1.5175000000000000e+03 - - 3.2092568278312683e-01 -4.5945590734481812e-01 - -8.0667120218276978e-01 4.0151047706604004e-01 - <_> - -1.3475534915924072e+00 - - 1 2 45 2.3500000000000000e+01 0 -1 46 8.8500000000000000e+01 - -2 -3 47 9.2150000000000000e+02 - - 3.0066493153572083e-01 -5.0537353754043579e-01 - 3.6820709705352783e-01 -9.1408914327621460e-01 - <_> - -9.5874893665313721e-01 - - 1 2 48 5.7550000000000000e+02 0 -1 49 6.7550000000000000e+02 - -2 -3 50 5.0000000000000000e-01 - - -8.4770929813385010e-01 3.3511099219322205e-01 - 3.8880458474159241e-01 -1.9090360403060913e-01 - <_> - -8.5856813192367554e-01 - - 1 2 51 6.1500000000000000e+01 0 -1 52 1.5000000000000000e+00 - -2 -3 53 1158. - - 5.0987577438354492e-01 -3.8584578037261963e-01 - -5.0875252485275269e-01 5.5896055698394775e-01 - <_> - -6.4911109209060669e-01 - - 1 2 54 2.2050000000000000e+02 0 -1 55 2.5750000000000000e+02 - -2 -3 56 2.1450000000000000e+02 - - -6.3486647605895996e-01 2.0945706963539124e-01 - -8.4773159027099609e-01 4.1636252403259277e-01 - <_> - -4.9586555361747742e-01 - - 1 2 57 3.5000000000000000e+00 0 -1 58 2.5000000000000000e+00 - -2 -3 59 3.2500000000000000e+01 - - -7.5921803712844849e-01 4.6488901972770691e-01 - -6.8810594081878662e-01 -2.7040589600801468e-02 - <_> - -4.7253912687301636e-01 - - 1 2 60 2.5000000000000000e+00 0 -1 61 4.5000000000000000e+00 - -2 -3 62 3.2500000000000000e+01 - - -7.9894185066223145e-01 6.2211072444915771e-01 - -5.4600864648818970e-01 2.3326411843299866e-02 - <_> - -5.5614802986383438e-02 - - 1 2 63 2.4500000000000000e+01 0 -1 64 2.2500000000000000e+01 - -2 -3 65 1.5000000000000000e+00 - - -1.4692783355712891e-01 4.1692432761192322e-01 - 3.2402262091636658e-01 -8.1831818819046021e-01 - <_> - 2.4737248197197914e-02 - - 1 2 66 3.4500000000000000e+01 0 -1 67 5.0000000000000000e-01 - -2 -3 68 8.1750000000000000e+02 - - 4.9493959546089172e-01 -4.3111301958560944e-02 - 4.1624513268470764e-01 -6.5285211801528931e-01 - <_> - -3.8909688591957092e-01 - - 1 2 69 4.6500000000000000e+01 0 -1 70 1.1950000000000000e+02 - -2 -3 71 5.0000000000000000e-01 - - 3.9863130450248718e-01 -6.7247897386550903e-01 - 5.4888677597045898e-01 -1.2822744250297546e-01 - <_> - -7.9226568341255188e-02 - - 1 2 72 1.1500000000000000e+01 0 -1 73 2.3550000000000000e+02 - -2 -3 74 1.2550000000000000e+02 - - 9.7892753779888153e-02 -7.6417064666748047e-01 - -5.4467469453811646e-01 3.0987030267715454e-01 - <_> - -1.9954596646130085e-03 - - 1 2 75 1.5000000000000000e+00 0 -1 76 1.5000000000000000e+00 - -2 -3 77 1.0500000000000000e+01 - - -4.4582867622375488e-01 4.6034806966781616e-01 - 9.2526301741600037e-02 -5.5669903755187988e-01 - <_> - -1.2115581892430782e-02 - - 1 2 78 1.4500000000000000e+01 0 -1 79 2.5000000000000000e+00 - -2 -3 80 1284. - - -1.0120121762156487e-02 -5.9989041090011597e-01 - -1.7805591225624084e-01 6.3028931617736816e-01 - <_> - 3.5972565412521362e-01 - - 1 2 81 1.9650000000000000e+02 0 -1 82 9.5000000000000000e+00 - -2 -3 83 1.0625000000000000e+03 - - -2.0688037574291229e-01 3.7184122204780579e-01 - 7.2959977388381958e-01 -6.4402073621749878e-01 - <_> - 3.0813610553741455e-01 - - 1 2 84 1.1050000000000000e+02 0 -1 85 4.5000000000000000e+00 - -2 -3 86 6.6500000000000000e+01 - - -8.8497090339660645e-01 3.9636072516441345e-01 - 6.6349333524703979e-01 -5.1589541137218475e-02 - <_> - 2.5005090236663818e-01 - - 1 2 87 2.0550000000000000e+02 0 -1 88 3.5000000000000000e+00 - -2 -3 89 8.5000000000000000e+00 - - 3.3133915066719055e-01 -3.9812210202217102e-01 - -6.8591558933258057e-01 4.8487389087677002e-01 - <_> - 5.8778470754623413e-01 - - 1 2 90 1.3950000000000000e+02 0 -1 91 1.9500000000000000e+01 - -2 -3 92 3.5000000000000000e+00 - - -6.3595020771026611e-01 5.8211249113082886e-01 - 4.3087210506200790e-02 -5.4251241683959961e-01 - <_> - 8.2915985584259033e-01 - - 1 2 93 4.5000000000000000e+00 0 -1 94 2929. -2 -3 95 - 3.9500000000000000e+01 - - 3.6084750294685364e-01 -5.3846013545989990e-01 - 3.9264413714408875e-01 -2.5116056203842163e-01 - <_> - 9.1550654172897339e-01 - - 1 2 96 1.2500000000000000e+01 0 -1 97 4.4500000000000000e+01 - -2 -3 98 7.5500000000000000e+01 - - -3.1323480606079102e-01 3.6048817634582520e-01 - 6.6347086429595947e-01 -6.9799762964248657e-01 - <_> - 1.0855576992034912e+00 - - 1 2 99 2.7500000000000000e+01 0 -1 100 - 8.5000000000000000e+00 -2 -3 101 5.5000000000000000e+00 - - -3.5093611478805542e-01 3.0252355337142944e-01 - 1.6355676949024200e-01 -8.4324830770492554e-01 - <_> - 1.0639545917510986e+00 - - 1 2 102 1.5000000000000000e+00 0 -1 103 - 3.7500000000000000e+01 -2 -3 104 5.1500000000000000e+01 - - -3.3908194303512573e-01 4.2347168922424316e-01 - -4.4102880358695984e-01 4.3833139538764954e-01 - <_> - 9.0562820434570312e-01 - - 1 2 105 4.5000000000000000e+00 0 -1 106 - 9.5000000000000000e+00 -2 -3 107 5.5000000000000000e+00 - - -5.8544105291366577e-01 3.8719829916954041e-01 - 1.4575521647930145e-01 -4.6634963154792786e-01 - <_> - 1.0761597156524658e+00 - - 1 2 108 1.4500000000000000e+01 0 -1 109 - 1.2545000000000000e+03 -2 -3 110 1.0850000000000000e+02 - - 2.5986677408218384e-01 -4.0740066766738892e-01 - 4.9753630161285400e-01 -6.2639516592025757e-01 - <_> - 1.5152643918991089e+00 - - 1 2 111 7.8250000000000000e+02 0 -1 112 - 1.2265000000000000e+03 -2 -3 113 2.1500000000000000e+01 - - -5.9889906644821167e-01 5.2061015367507935e-01 - 4.3910467624664307e-01 -2.6094654202461243e-01 - <_> - 1.4136078357696533e+00 - - 1 2 114 1.0500000000000000e+01 0 -1 115 1696. -2 -3 116 - 5.0000000000000000e-01 - - 1. -9.7255414724349976e-01 3.5954985022544861e-01 - -1.7254945635795593e-01 - <_> - 1.4225575923919678e+00 - - 1 2 117 3.8500000000000000e+01 0 -1 118 - 1.0250000000000000e+02 -2 -3 119 8.5000000000000000e+00 - - -2.4716213345527649e-01 3.7233117222785950e-01 - 4.1007906198501587e-01 -7.6787543296813965e-01 - <_> - 1.7332764863967896e+00 - - 1 2 120 6.5000000000000000e+00 0 -1 121 - 6.5000000000000000e+00 -2 -3 122 5.1500000000000000e+01 - - -8.0807107686996460e-01 3.1071880459785461e-01 - -7.6486444473266602e-01 -4.4724285602569580e-02 - <_> - 1.8922506570816040e+00 - - 1 2 123 5.0000000000000000e-01 0 -1 124 - 6.5000000000000000e+00 -2 -3 125 2.5175000000000000e+03 - - -4.5441693067550659e-01 5.4230731725692749e-01 - -3.1970790028572083e-01 7.5582736730575562e-01 - <_> - 1.6188565492630005e+00 - - 1 2 126 8.2450000000000000e+02 0 -1 127 - 1.5500000000000000e+01 -2 -3 128 1.2500000000000000e+01 - - -2.7339416742324829e-01 3.4306022524833679e-01 - 1.7286354303359985e-01 -6.8018329143524170e-01 - <_> - 1.6078552007675171e+00 - - 1 2 129 4.2050000000000000e+02 0 -1 130 263. -2 -3 131 - 8.4450000000000000e+02 - - 5.0138735771179199e-01 -4.4576519727706909e-01 - 2.3392482101917267e-01 -3.9459699392318726e-01 - <_> - 1.8623019456863403e+00 - - 1 2 132 2.0850000000000000e+02 0 -1 133 - 5.5000000000000000e+00 -2 -3 134 4.5000000000000000e+00 - - 4.0980271995067596e-02 -6.1965447664260864e-01 - -7.8912788629531860e-01 5.9828245639801025e-01 - <_> - 1.7021096944808960e+00 - - 1 2 135 4.2500000000000000e+01 0 -1 136 - 6.5000000000000000e+00 -2 -3 137 2.2500000000000000e+01 - - 4.1077250242233276e-01 -5.9424054622650146e-01 - 4.9294531345367432e-01 -1.6019217669963837e-01 - <_> - 1.9233746528625488e+00 - - 1 2 138 1.5000000000000000e+00 0 -1 139 - 1.6500000000000000e+01 -2 -3 140 8.7500000000000000e+01 - - -6.7251849174499512e-01 9.7932207584381104e-01 - 2.2126492857933044e-01 -6.2606680393218994e-01 - <_> - 2.1816830635070801e+00 - - 1 2 141 6.8500000000000000e+01 0 -1 142 - 9.6500000000000000e+01 -2 -3 143 4.3350000000000000e+02 - - -3.1670400500297546e-01 2.5830829143524170e-01 - -8.8838213682174683e-01 4.1476368904113770e-01 - <_> - 2.2655973434448242e+00 - - 1 2 144 1.6500000000000000e+01 0 -1 145 - 5.5000000000000000e+00 -2 -3 146 3.0500000000000000e+01 - - 5.9501928091049194e-01 -3.1914636492729187e-01 - -3.8668751716613770e-01 3.1921181082725525e-01 - <_> - 2.6427345275878906e+00 - - 1 2 147 6.5000000000000000e+00 0 -1 148 - 2.4500000000000000e+01 -2 -3 149 1.1500000000000000e+01 - - -4.5482164621353149e-01 4.6515238285064697e-01 - -5.1726001501083374e-01 2.0654375851154327e-01 - <_> - 1.9806412458419800e+00 - - 1 2 150 2.8850000000000000e+02 0 -1 151 - 5.5000000000000000e+00 -2 -3 152 1.1515000000000000e+03 - - -6.6209328174591064e-01 1.8325349688529968e-01 - 4.9089592695236206e-01 -8.4841215610504150e-01 - <_> - 2.4156589508056641e+00 - - 1 2 153 5.0000000000000000e-01 0 -1 154 2811. -2 -3 155 - 5.0000000000000000e-01 - - 4.3501755595207214e-01 -6.5484809875488281e-01 - 4.1686266660690308e-01 -4.1646206378936768e-01 - <_> - 2.7843391895294189e+00 - - 1 2 156 1.1350000000000000e+02 0 -1 157 - 3.3450000000000000e+02 -2 -3 158 3.5000000000000000e+00 - - 3.6868026852607727e-01 -6.1238104104995728e-01 - 6.8396532535552979e-01 -1.2954165227711201e-02 - <_> - 2.8158543109893799e+00 - - 1 2 159 4.2550000000000000e+02 0 -1 160 - 5.6050000000000000e+02 -2 -3 161 3.8500000000000000e+01 - - -5.9484893083572388e-01 3.1515140086412430e-02 - -7.0635133981704712e-01 6.2144660949707031e-01 - <_> - 3.0259079933166504e+00 - - 1 2 162 7.5000000000000000e+00 0 -1 163 - 4.5000000000000000e+00 -2 -3 164 1.6375000000000000e+03 - - -7.1446412801742554e-01 3.4102836251258850e-01 - 3.5541319847106934e-01 -4.5499989390373230e-01 - <_> - 3.3236474990844727e+00 - - 1 2 165 1.5000000000000000e+00 0 -1 166 - 1.0500000000000000e+01 -2 -3 167 5.0000000000000000e-01 - - -7.0691192150115967e-01 5.4418134689331055e-01 - 3.7381768226623535e-01 -3.6192026734352112e-01 - <_> - 3.2000217437744141e+00 - - 1 2 168 1.0500000000000000e+01 0 -1 169 - 6.5000000000000000e+00 -2 -3 170 3.5000000000000000e+00 - - -1.1653541773557663e-01 -8.1098204851150513e-01 - 3.6642596125602722e-01 -2.8248944878578186e-01 - <_> - 3.2462809085845947e+00 - - 1 2 171 1.9850000000000000e+02 0 -1 172 - 2.9500000000000000e+01 -2 -3 173 8.1500000000000000e+01 - - -3.9297759532928467e-01 5.5565875768661499e-01 - 5.2605623006820679e-01 -3.3815068006515503e-01 - <_> - 3.4681446552276611e+00 - - 1 2 174 5.7550000000000000e+02 0 -1 175 338. -2 -3 176 - 1.1515000000000000e+03 - - -7.6464962959289551e-01 9.0472358465194702e-01 - 6.2902992963790894e-01 -3.9204329252243042e-02 - <_> - 3.6334233283996582e+00 - - 1 2 177 4167. 0 -1 178 6.5000000000000000e+00 -2 -3 179 - 3.5000000000000000e+00 - - -9.1638332605361938e-01 1.6527870297431946e-01 - 4.8254090547561646e-01 -8.9626789093017578e-01 - <_> - 3.9205143451690674e+00 - - 1 2 180 6.5000000000000000e+00 0 -1 181 - 1.2500000000000000e+01 -2 -3 182 8.5000000000000000e+00 - - 6.7690986394882202e-01 -2.3904214799404144e-01 - -4.0556749701499939e-01 2.2106994688510895e-01 - <_> - 3.8434190750122070e+00 - - 1 2 183 5.0000000000000000e-01 0 -1 184 - 1.3500000000000000e+01 -2 -3 185 2.6500000000000000e+01 - - -3.2586407661437988e-01 4.4005537033081055e-01 - -6.4374852180480957e-01 1.0862501710653305e-01 - <_> - 3.7773578166961670e+00 - - 1 2 186 1.6500000000000000e+01 0 -1 187 - 9.5000000000000000e+00 -2 -3 188 8.5000000000000000e+00 - - -9.3096941709518433e-01 2.3926372826099396e-01 - 5.1413863897323608e-01 -5.5257624387741089e-01 - <_> - 4.1896114349365234e+00 - - 1 2 189 1.2500000000000000e+01 0 -1 190 - 7.5000000000000000e+00 -2 -3 191 36. - - -6.8173252046108246e-02 5.3156542778015137e-01 - -6.3870549201965332e-01 5.8901703357696533e-01 - <_> - 4.1023836135864258e+00 - - 1 2 192 6.7500000000000000e+01 0 -1 193 - 8.0500000000000000e+01 -2 -3 194 3.9500000000000000e+01 - - 1.7302609980106354e-01 -5.5641782283782959e-01 - -8.8721150159835815e-01 1. - <_> - 4.1807246208190918e+00 - - 1 2 195 1.5235000000000000e+03 0 -1 196 - 2.6952500000000000e+04 -2 -3 197 1.8235000000000000e+03 - - -3.0445727705955505e-01 7.7833265066146851e-01 - 8.7232065200805664e-01 -2.4321475625038147e-01 - <_> - 4.2723703384399414e+00 - - 1 2 198 6.5000000000000000e+00 0 -1 199 - 7.5000000000000000e+00 -2 -3 200 3.4175000000000000e+03 - - 1.3138349354267120e-01 -5.8236575126647949e-01 - 2.2224109619855881e-02 6.9834595918655396e-01 - <_> - 4.6446409225463867e+00 - - 1 2 201 2.1500000000000000e+01 0 -1 202 - 4.5000000000000000e+00 -2 -3 203 7.5000000000000000e+00 - - 1.9490295648574829e-01 -7.6766520738601685e-01 - 3.7227055430412292e-01 -2.2965273261070251e-01 - <_> - 4.2965531349182129e+00 - - 1 2 204 3.5000000000000000e+00 0 -1 205 - 1.1500000000000000e+01 -2 -3 206 1.5000000000000000e+00 - - -2.8419467806816101e-01 4.3421781063079834e-01 - -5.4377484321594238e-01 1.9981886446475983e-01 - <_> - 4.6640934944152832e+00 - - 1 2 207 705. 0 -1 208 1.7500000000000000e+01 -2 -3 209 - 5.0000000000000000e-01 - - 2.7177429199218750e-01 -8.8838618993759155e-01 - 3.6754038929939270e-01 -1.2962521612644196e-01 - <_> - 4.5903968811035156e+00 - - 1 2 210 3.4500000000000000e+01 0 -1 211 - 2.2850000000000000e+02 -2 -3 212 4.5000000000000000e+00 - - 7.0602458715438843e-01 -7.7238667011260986e-01 - 4.3168050050735474e-01 -1.4236643910408020e-01 - <_> - 4.4601187705993652e+00 - - 1 2 213 1.8500000000000000e+01 0 -1 214 - 5.0000000000000000e-01 -2 -3 215 1.6450000000000000e+02 - - 7.2294287383556366e-02 -4.4637727737426758e-01 - 5.0045186281204224e-01 -8.8895571231842041e-01 - <_> - 4.6810216903686523e+00 - - 1 2 216 1.5000000000000000e+00 0 -1 217 - 3.5000000000000000e+00 -2 -3 218 2.2500000000000000e+01 - - 7.5774848461151123e-01 -8.5371148586273193e-01 - -3.8080200552940369e-01 2.2090284526348114e-01 - <_> - 4.5454678535461426e+00 - - 1 2 219 5.0000000000000000e-01 0 -1 220 - 2.4500000000000000e+01 -2 -3 221 1.3950000000000000e+02 - - -1.9623221457004547e-01 9.1209959983825684e-01 - 2.2579464316368103e-01 -3.2021987438201904e-01 - <_> - 4.7205095291137695e+00 - - 1 2 222 6.8250000000000000e+02 0 -1 223 - 5.8750000000000000e+02 -2 -3 224 4.9250000000000000e+02 - - -6.1928713321685791e-01 4.4073671102523804e-01 - 5.2129870653152466e-01 -9.0712592005729675e-02 - <_> - 5.0539321899414062e+00 - - 1 2 225 1.5500000000000000e+01 0 -1 226 - 6.3500000000000000e+01 -2 -3 227 3.5000000000000000e+00 - - 3.9318233728408813e-01 -3.8358560204505920e-01 - 4.2106309533119202e-01 -5.5091488361358643e-01 - <_> - 5.2054772377014160e+00 - - 1 2 228 3.1500000000000000e+01 0 -1 229 - 2.3500000000000000e+01 -2 -3 230 3.3750000000000000e+02 - - -6.1581993103027344e-01 7.1099334955215454e-01 - 2.9412022233009338e-01 -7.1934843063354492e-01 - <_> - 5.1629271507263184e+00 - - 1 2 231 3.2950000000000000e+02 0 -1 232 - 5.0000000000000000e-01 -2 -3 233 1864. - - 2.0024216175079346e-01 -3.3125820755958557e-01 - 9.7632443904876709e-01 -8.2965487241744995e-01 - <_> - 5.4650130271911621e+00 - - 1 2 234 4.0550000000000000e+02 0 -1 235 - 2.7750000000000000e+02 -2 -3 236 5.7155000000000000e+03 - - 2.2284466028213501e-01 -4.8526307940483093e-01 - 8.1116855144500732e-01 -1.5218812972307205e-02 - <_> - 5.4984669685363770e+00 - - 1 2 237 4.5000000000000000e+00 0 -1 238 - 1.7500000000000000e+01 -2 -3 239 2.9500000000000000e+01 - - -6.3221347332000732e-01 3.8014096021652222e-01 - -6.2983202934265137e-01 1.1483613401651382e-01 - <_> - 5.4328503608703613e+00 - - 1 2 240 2.2500000000000000e+01 0 -1 241 - 3.2750000000000000e+02 -2 -3 242 5.5250000000000000e+02 - - 2.7665451169013977e-01 -4.1230320930480957e-01 - 5.8497339487075806e-01 -9.2561680078506470e-01 - <_> - 5.2271656990051270e+00 - - 1 2 243 2.5000000000000000e+00 0 -1 244 - 1.5000000000000000e+00 -2 -3 245 4.1500000000000000e+01 - - -6.2440222501754761e-01 3.4950828552246094e-01 - -4.4587394595146179e-01 3.7627801299095154e-01 - <_> - 5.7503991127014160e+00 - - 1 2 246 2.5500000000000000e+01 0 -1 247 - 1.7500000000000000e+01 -2 -3 248 1742. - - 1.7403741180896759e-01 -4.8115825653076172e-01 - -8.1405687332153320e-01 5.2323335409164429e-01 - <_> - 5.9725828170776367e+00 - - 1 2 249 2.5000000000000000e+00 0 -1 250 - 1.8750000000000000e+02 -2 -3 251 3.0750000000000000e+02 - - 5.0755202770233154e-01 -9.1562610864639282e-01 - 2.2218362987041473e-01 -5.9081828594207764e-01 - <_> - 5.9053583145141602e+00 - - 1 2 252 4.4500000000000000e+01 0 -1 253 - 7.5000000000000000e+00 -2 -3 254 2.3500000000000000e+01 - - 2.7661845088005066e-01 -7.2863763570785522e-01 - 2.9604527354240417e-01 -3.9353659749031067e-01 - <_> - 6.2247257232666016e+00 - - 1 2 255 2.7915000000000000e+03 0 -1 256 - 5.0000000000000000e-01 -2 -3 257 2.7750000000000000e+02 - - 5.7657641172409058e-01 -5.8752876520156860e-01 - 7.3920065164566040e-01 -5.6199613958597183e-02 - <_> - 6.3211832046508789e+00 - - 1 2 258 1.5000000000000000e+00 0 -1 259 - 1.5950000000000000e+02 -2 -3 260 9.5000000000000000e+00 - - 3.8729599118232727e-01 -8.2186138629913330e-01 - -7.5912064313888550e-01 -9.1310448944568634e-02 - <_> - 6.1939978599548340e+00 - - 1 2 261 5.0000000000000000e-01 0 -1 262 - 1.1500000000000000e+01 -2 -3 263 2.5000000000000000e+00 - - -6.8085348606109619e-01 3.7691861391067505e-01 - 3.6999684572219849e-01 -4.1802382469177246e-01 - <_> - 6.5674057006835938e+00 - - 1 2 264 4.6500000000000000e+01 0 -1 265 - 1.6500000000000000e+01 -2 -3 266 2.5500000000000000e+01 - - -2.4361716583371162e-02 -7.4328392744064331e-01 - 3.7340793013572693e-01 -3.1576988101005554e-01 - <_> - 6.4908089637756348e+00 - - 1 2 267 6.5000000000000000e+00 0 -1 268 - 1.5000000000000000e+00 -2 -3 269 5.0000000000000000e-01 - - -9.5202457904815674e-01 7.6004970073699951e-01 - 4.0044522285461426e-01 -1.8293106555938721e-01 - <_> - 6.7305116653442383e+00 - - 1 2 270 1.3450000000000000e+02 0 -1 271 69. -2 -3 272 - 2.5500000000000000e+01 - - -3.7816595286130905e-02 -9.0281504392623901e-01 - -5.4295367002487183e-01 2.3970291018486023e-01 - <_> - 6.8999171257019043e+00 - - 1 2 273 2.5000000000000000e+00 0 -1 274 - 2.5000000000000000e+00 -2 -3 275 1.5000000000000000e+00 - - -5.0667393207550049e-01 3.6585667729377747e-01 - 3.1221818923950195e-01 -4.8534518480300903e-01 - <_> - 7.0018959045410156e+00 - - 1 2 276 3.5000000000000000e+00 0 -1 277 - 3.5000000000000000e+00 -2 -3 278 266. - - -3.6587709188461304e-01 6.2320345640182495e-01 - -3.9827787876129150e-01 2.4151444435119629e-01 - <_> - 7.1498341560363770e+00 - - 1 2 279 6.5000000000000000e+00 0 -1 280 - 3.7500000000000000e+01 -2 -3 281 3.3550000000000000e+02 - - 5.1520365476608276e-01 -6.4510118961334229e-01 - -4.8505461215972900e-01 1.4793802797794342e-01 - <_> - 7.0538568496704102e+00 - - 1 2 282 1540. 0 -1 283 2.2500000000000000e+01 -2 -3 284 - 5.0500000000000000e+01 - - -2.7819830179214478e-01 3.7289941310882568e-01 - -5.9334021806716919e-01 5.5907440185546875e-01 - <_> - 7.3145952224731445e+00 - - 1 2 285 5.0000000000000000e-01 0 -1 286 - 5.0500000000000000e+01 -2 -3 287 5.0000000000000000e-01 - - -6.9114875793457031e-01 4.3989965319633484e-01 - 2.9516109824180603e-01 -5.3384852409362793e-01 - <_> - 7.2128500938415527e+00 - - 1 2 288 7.5000000000000000e+00 0 -1 289 - 8.5000000000000000e+00 -2 -3 290 8.7500000000000000e+01 - - -5.5619347095489502e-01 5.4719102382659912e-01 - 3.2581725716590881e-01 -6.7037367820739746e-01 - <_> - 7.0432367324829102e+00 - - 1 2 291 2.5000000000000000e+00 0 -1 292 - 3.5000000000000000e+00 -2 -3 293 1.6805000000000000e+03 - - -1.8180048465728760e-01 4.9322417378425598e-01 - 1.2089827656745911e-01 -5.3679817914962769e-01 - <_> - 7.1085200309753418e+00 - - 1 2 294 8.0250000000000000e+02 0 -1 295 - 3.5000000000000000e+00 -2 -3 296 1.5465000000000000e+03 - - 4.4113153219223022e-01 -4.7889050841331482e-01 - 4.8183086514472961e-01 -2.7461019158363342e-01 - <_> - 7.4934172630310059e+00 - - 1 2 297 5.5000000000000000e+00 0 -1 298 - 9.5000000000000000e+00 -2 -3 299 5.0000000000000000e-01 - - -7.8466171026229858e-01 3.8489729166030884e-01 - 1.2428891658782959e-01 -5.3000146150588989e-01 - <_> - 7.7679367065429688e+00 - - 1 2 300 4.5000000000000000e+00 0 -1 301 - 3.8500000000000000e+01 -2 -3 302 1.0500000000000000e+01 - - -5.8519446849822998e-01 1.3908083736896515e-01 - 3.4237712621688843e-01 -5.5784845352172852e-01 - <_> - 8.2031955718994141e+00 - - 1 2 303 1.0500000000000000e+01 0 -1 304 - 1.5000000000000000e+00 -2 -3 305 1.1500000000000000e+01 - - -3.8500145077705383e-01 4.3525907397270203e-01 - -7.3580604791641235e-01 -1.5477402135729790e-02 - <_> - 7.8415699005126953e+00 - - 1 2 306 1.1500000000000000e+01 0 -1 307 - 1.9950000000000000e+02 -2 -3 308 2.1050000000000000e+02 - - 3.0834931135177612e-01 -5.2214068174362183e-01 - -6.1229497194290161e-01 1.6261228919029236e-01 - <_> - 8.1340169906616211e+00 - - 1 2 309 4.4500000000000000e+01 0 -1 310 - 5.0000000000000000e-01 -2 -3 311 2.7750000000000000e+02 - - 3.8989096879959106e-01 -4.0270605683326721e-01 - -3.7438669800758362e-01 4.9117839336395264e-01 - <_> - 8.0494565963745117e+00 - - 1 2 312 2.9215000000000000e+03 0 -1 313 5981. -2 -3 314 - 1.4500000000000000e+01 - - -8.4560506045818329e-02 5.6669616699218750e-01 - -6.5312331914901733e-01 1.4199882745742798e-01 - <_> - 8.1713457107543945e+00 - - 1 2 315 8.1500000000000000e+01 0 -1 316 66. -2 -3 317 371. - - 4.5325097441673279e-01 -3.0569469928741455e-01 - 5.9206598997116089e-01 -6.7238986492156982e-01 - <_> - 8.2347335815429688e+00 - - 1 2 318 4.1450000000000000e+02 0 -1 319 - 5.0000000000000000e-01 -2 -3 320 410. - - 3.8724437355995178e-01 -3.1869423389434814e-01 - 8.7538170814514160e-01 -9.7314991056919098e-02 - <_> - 8.5628070831298828e+00 - - 1 2 321 1.0500000000000000e+01 0 -1 322 - 5.0000000000000000e-01 -2 -3 323 2.5000000000000000e+00 - - 7.2377610206604004e-01 -8.4155076742172241e-01 - 3.2807359099388123e-01 -2.0454038679599762e-01 - <_> - 8.5264968872070312e+00 - - 1 2 324 9.9150000000000000e+02 0 -1 325 - 7.0350000000000000e+02 -2 -3 326 6. - - 1.8747280538082123e-01 -3.3632183074951172e-01 - 8.6560744047164917e-01 -9.4016164541244507e-01 - <_> - 8.5532627105712891e+00 - - 1 2 327 1.1500000000000000e+01 0 -1 328 - 2.7450000000000000e+02 -2 -3 329 5.0000000000000000e-01 - - 8.5004931688308716e-01 -8.5131084918975830e-01 - 4.0861058235168457e-01 -1.2481645494699478e-01 - <_> - 8.7125473022460938e+00 - - 1 2 330 4.9350000000000000e+02 0 -1 331 - 1.0500000000000000e+01 -2 -3 332 488. - - 3.3095937967300415e-01 -9.6550559997558594e-01 - 1.5928384661674500e-01 -7.0109528303146362e-01 - <_> - 8.5748119354248047e+00 - - 1 2 333 5.8750000000000000e+02 0 -1 334 - 5.3965000000000000e+03 -2 -3 335 1.9550000000000000e+02 - - -5.2717298269271851e-01 7.5915068387985229e-01 - 6.2651741504669189e-01 -7.6558768749237061e-02 - <_> - 8.5311050415039062e+00 - - 1 2 336 3.5000000000000000e+00 0 -1 337 - 1.8500000000000000e+01 -2 -3 338 1.1500000000000000e+01 - - -5.9637790918350220e-01 6.7646257579326630e-02 - 6.4769101142883301e-01 -3.3726450055837631e-02 - <_> - 9.0640134811401367e+00 - - 1 2 339 1.5000000000000000e+00 0 -1 340 - 2.5000000000000000e+00 -2 -3 341 3.4500000000000000e+01 - - -6.8097436428070068e-01 6.0266649723052979e-01 - -3.0453455448150635e-01 4.0144833922386169e-01 - <_> - 8.9831085205078125e+00 - - 1 2 342 2.5000000000000000e+00 0 -1 343 - 2.1750000000000000e+02 -2 -3 344 3.1850000000000000e+02 - - 9.3521779775619507e-01 -8.8511615991592407e-01 - -8.0904886126518250e-02 4.7593075037002563e-01 - <_> - 9.3769168853759766e+00 - - 1 2 345 1.8345000000000000e+03 0 -1 346 7548. -2 -3 347 - 2.5000000000000000e+00 - - -9.6914649009704590e-01 8.2535630464553833e-01 - 9.6199281513690948e-02 -4.2918723821640015e-01 - <_> - 9.3018980026245117e+00 - - 1 2 348 3.4500000000000000e+01 0 -1 349 - 5.0000000000000000e-01 -2 -3 350 4.5000000000000000e+00 - - 7.7495819330215454e-01 -7.7019518613815308e-01 - -6.7532777786254883e-01 2.1935020387172699e-01 - <_> - 9.5473661422729492e+00 - - 1 2 351 3.5000000000000000e+00 0 -1 352 - 3.8150000000000000e+02 -2 -3 353 2.5000000000000000e+00 - - 2.4546769261360168e-01 -9.4206953048706055e-01 - 5.2967166900634766e-01 -5.7282263040542603e-01 - <_> - 9.3910045623779297e+00 - - 1 2 354 4.2500000000000000e+01 0 -1 355 - 2.5000000000000000e+00 -2 -3 356 2.5000000000000000e+00 - - 4.9605733156204224e-01 -8.9919465780258179e-01 - 4.6279174089431763e-01 -1.5636166930198669e-01 - <_> - 9.2007036209106445e+00 - - 1 2 357 3.0750000000000000e+02 0 -1 358 - 5.0000000000000000e-01 -2 -3 359 1.7500000000000000e+01 - - 9.5931455492973328e-02 -5.2677857875823975e-01 - -6.8146902322769165e-01 4.2670670151710510e-01 - <_> - 9.4172534942626953e+00 - - 1 2 360 436. 0 -1 361 1.0500000000000000e+01 -2 -3 362 - 1.4150000000000000e+02 - - -4.8916128277778625e-01 2.1654944121837616e-01 - -9.5991367101669312e-01 2.0731329917907715e-02 - <_> - 9.3878002166748047e+00 - - 1 2 363 2.1500000000000000e+01 0 -1 364 - 5.0000000000000000e-01 -2 -3 365 7.5000000000000000e+00 - - 6.1134243011474609e-01 -1.5622694790363312e-01 - -2.9453342780470848e-02 -6.6399675607681274e-01 - <_> - 9.3314304351806641e+00 - - 1 2 366 5.6500000000000000e+01 0 -1 367 - 2.3500000000000000e+01 -2 -3 368 4.5000000000000000e+00 - - -7.5016134977340698e-01 6.0379421710968018e-01 - 5.0015795230865479e-01 -5.6369733065366745e-02 - <_> - 9.8574962615966797e+00 - - 1 2 369 3.5000000000000000e+00 0 -1 370 2013. -2 -3 371 - 1.9500000000000000e+01 - - 8.2091175019741058e-02 -6.4141482114791870e-01 - -1.7478708922863007e-01 5.2606624364852905e-01 - <_> - 1.0064584732055664e+01 - - 1 2 372 2.0650000000000000e+02 0 -1 373 - 1.7500000000000000e+01 -2 -3 374 1.0450000000000000e+02 - - -1.0901508852839470e-02 -6.5456998348236084e-01 - 6.3896632194519043e-01 -1.6473773121833801e-01 - <_> - 1.0252257347106934e+01 - - 1 2 375 5.5000000000000000e+00 0 -1 376 - 3.4500000000000000e+01 -2 -3 377 5.5000000000000000e+00 - - 3.2374709844589233e-01 -5.0062644481658936e-01 - -7.0661611855030060e-02 -7.5508368015289307e-01 - <_> - 1.0398225784301758e+01 - - 1 2 378 2.5000000000000000e+00 0 -1 379 - 5.2500000000000000e+01 -2 -3 380 1.8785000000000000e+03 - - -9.0781456232070923e-01 1. -6.3530296087265015e-01 - 1.4596807956695557e-01 - <_> - 1.0281527519226074e+01 - - 1 2 381 4.8500000000000000e+01 0 -1 382 - 1.2500000000000000e+01 -2 -3 383 2.7950000000000000e+02 - - 1.5367124974727631e-01 -8.4021937847137451e-01 - 4.6640846133232117e-01 -1.1669804900884628e-01 - <_> - 1.0402153968811035e+01 - - 1 2 384 6.5750000000000000e+02 0 -1 385 - 2.5000000000000000e+00 -2 -3 386 1.2991500000000000e+04 - - 1.8093550205230713e-01 -3.1117281317710876e-01 - 8.3136463165283203e-01 -9.4209736585617065e-01 - <_> - 1.0749721527099609e+01 - - 1 2 387 1.5500000000000000e+01 0 -1 388 3147. -2 -3 389 - 5.0000000000000000e-01 - - 5.8778691291809082e-01 -8.4557241201400757e-01 - 3.5276123881340027e-01 -1.5734243392944336e-01 - <_> - 1.0613196372985840e+01 - - 1 2 390 2.9405000000000000e+03 0 -1 391 - 5.0000000000000000e-01 -2 -3 392 4.5500000000000000e+01 - - 3.9040172100067139e-01 -1.3652552664279938e-01 - -9.2412209510803223e-01 -8.2783259451389313e-02 - <_> - 1.0694108009338379e+01 - - 1 2 393 5.0500000000000000e+01 0 -1 394 - 5.0000000000000000e-01 -2 -3 395 4.5000000000000000e+00 - - 4.7963955998420715e-01 -7.4252939224243164e-01 - -6.8665945529937744e-01 1.9869653880596161e-01 - <_> - 1.0847300529479980e+01 - - 1 2 396 1.4500000000000000e+01 0 -1 397 - 5.5000000000000000e+00 -2 -3 398 1.5000000000000000e+00 - - -6.5649849176406860e-01 3.1507906317710876e-01 - 5.9824740886688232e-01 -4.3184515833854675e-01 - <_> - 1.0666165351867676e+01 - - 1 2 399 2.5000000000000000e+00 0 -1 400 - 4.5000000000000000e+00 -2 -3 401 5.0000000000000000e-01 - - -3.0361318588256836e-01 4.3227225542068481e-01 - 3.5962799191474915e-01 -4.3973237276077271e-01 - <_> - 1.0870504379272461e+01 - - 1 2 402 2.6500000000000000e+01 0 -1 403 - 1.5000000000000000e+00 -2 -3 404 8.4500000000000000e+01 - - 1.6933162510395050e-01 -5.0010979175567627e-01 - -3.3642402291297913e-01 4.9337503314018250e-01 - <_> - 1.0975853919982910e+01 - - 1 2 405 2.5000000000000000e+00 0 -1 406 - 1.4795000000000000e+03 -2 -3 407 1.5000000000000000e+00 - - 5.9212744235992432e-02 -6.0414147377014160e-01 - 5.3754031658172607e-01 -1.4943325519561768e-01 - <_> - 1.1088579177856445e+01 - - 1 2 408 1.9500000000000000e+01 0 -1 409 - 8.0500000000000000e+01 -2 -3 410 2.5000000000000000e+00 - - -5.4455469362437725e-03 7.1131867170333862e-01 - 1.2728694081306458e-01 -5.3219115734100342e-01 - <_> - 1.1411317825317383e+01 - - 1 2 411 6.5000000000000000e+00 0 -1 412 - 5.0000000000000000e-01 -2 -3 413 5.0000000000000000e-01 - - -9.8449540138244629e-01 7.5238209962844849e-01 - 3.2273903489112854e-01 -2.0153416693210602e-01 - <_> - 1.1409852027893066e+01 - - 1 2 414 3.2650000000000000e+02 0 -1 415 - 4.5000000000000000e+00 -2 -3 416 1.0500000000000000e+01 - - 1.5437091886997223e-01 -3.4433943033218384e-01 - 8.3089745044708252e-01 -8.7578713893890381e-01 - <_> - 1.1487524032592773e+01 - - 1 2 417 9.4500000000000000e+01 0 -1 418 - 5.3150000000000000e+02 -2 -3 419 1.5000000000000000e+00 - - 7.5558461248874664e-02 -7.0222413539886475e-01 - 4.5731905102729797e-01 -1.0453109443187714e-01 - <_> - 1.1415844917297363e+01 - - 1 2 420 2.0350000000000000e+02 0 -1 421 - 5.1500000000000000e+01 -2 -3 422 1.4350000000000000e+02 - - -8.8595420122146606e-02 -8.2399624586105347e-01 - 7.0543432235717773e-01 8.3339767297729850e-04 - <_> - 1.1137701034545898e+01 - - 1 2 423 1.1500000000000000e+01 0 -1 424 - 2.7850000000000000e+02 -2 -3 425 1231. - - 2.5673583149909973e-01 -2.7814364433288574e-01 - 7.7550095319747925e-01 -6.8776667118072510e-01 - <_> - 1.1352587699890137e+01 - - 1 2 426 1.5000000000000000e+00 0 -1 427 - 4.2500000000000000e+01 -2 -3 428 436. - - -8.6447370052337646e-01 3.8263612985610962e-01 - 2.1488623321056366e-01 -6.5995728969573975e-01 - <_> - 1.1502726554870605e+01 - - 1 2 429 4.5000000000000000e+00 0 -1 430 - 8.9500000000000000e+01 -2 -3 431 1.2500000000000000e+01 - - -5.1148355007171631e-01 4.3896585702896118e-01 - -4.8310482501983643e-01 1.8991161882877350e-01 - <_> - 1.1872124671936035e+01 - - 1 2 432 5.0000000000000000e-01 0 -1 433 - 4.5000000000000000e+00 -2 -3 434 1.1500000000000000e+01 - - -5.1016438007354736e-01 3.6939758062362671e-01 - 1.1107332259416580e-01 -6.3128584623336792e-01 - <_> - 1.1897380828857422e+01 - - 1 2 435 1.5000000000000000e+00 0 -1 436 - 8.5000000000000000e+00 -2 -3 437 1.4500000000000000e+01 - - -7.3261368274688721e-01 5.7636475563049316e-01 - -4.3446037173271179e-01 2.1413095295429230e-01 - <_> - 1.1853853225708008e+01 - - 1 2 438 3706. 0 -1 439 1.5000000000000000e+00 -2 -3 440 - 4410. - - 5.6994712352752686e-01 -4.3527409434318542e-02 - -7.2693550586700439e-01 4.1713526844978333e-01 - <_> - 1.1845816612243652e+01 - - 1 2 441 6.5000000000000000e+00 0 -1 442 - 1.5500000000000000e+01 -2 -3 443 5.3500000000000000e+01 - - -8.0371825024485588e-03 -5.7360154390335083e-01 - 5.8637946844100952e-01 -4.5183259248733521e-01 - <_> - 1.1606418609619141e+01 - - 1 2 444 5.7500000000000000e+01 0 -1 445 - 1.3650000000000000e+02 -2 -3 446 3.3595000000000000e+03 - - 4.9911895394325256e-01 -5.3746724128723145e-01 - -2.3939760029315948e-01 3.7778580188751221e-01 - <_> - 1.1980805397033691e+01 - - 1 2 447 4.5000000000000000e+00 0 -1 448 - 3.5000000000000000e+00 -2 -3 449 1.1500000000000000e+01 - - -7.3552447557449341e-01 3.7438639998435974e-01 - -4.0720772743225098e-01 4.5558989048004150e-01 - <_> - 1.2240980148315430e+01 - - 1 2 450 2.0950000000000000e+02 0 -1 451 - 3.5000000000000000e+00 -2 -3 452 2.0450000000000000e+02 - - 2.6017466187477112e-01 -4.3274480104446411e-01 - 6.6186487674713135e-01 -1.9433960318565369e-01 - <_> - 1.1877487182617188e+01 - - 1 2 453 8.7500000000000000e+01 0 -1 454 - 3.3500000000000000e+01 -2 -3 455 1.9500000000000000e+01 - - -3.6349293589591980e-01 2.8466138243675232e-01 - -8.9488905668258667e-01 2.0050047338008881e-01 - <_> - 1.2315251350402832e+01 - - 1 2 456 6.5000000000000000e+00 0 -1 457 - 2.8500000000000000e+01 -2 -3 458 1.1500000000000000e+01 - - -4.2718878388404846e-01 4.3776413798332214e-01 - -4.0096122026443481e-01 4.4375243782997131e-01 - <_> - 1.2738058090209961e+01 - - 1 2 459 2.5000000000000000e+00 0 -1 460 - 5.5000000000000000e+00 -2 -3 461 4.2050000000000000e+02 - - -1. 4.2698940634727478e-01 1.3992704451084137e-01 - -4.4792297482490540e-01 - <_> - 1.2678054809570312e+01 - - 1 2 462 4.6035000000000000e+03 0 -1 463 - 1.2500000000000000e+01 -2 -3 464 1.6885000000000000e+03 - - -6.3804382085800171e-01 2.8076967597007751e-01 - 7.0788478851318359e-01 -6.0002621263265610e-02 - <_> - 1.2586655616760254e+01 - - 1 2 465 2.1150000000000000e+02 0 -1 466 - 3.5000000000000000e+00 -2 -3 467 3.1365000000000000e+03 - - 3.2408985495567322e-01 -3.3107626438140869e-01 - 8.7245899438858032e-01 -1.1116035282611847e-01 - <_> - 1.2680603027343750e+01 - - 1 2 468 2.2500000000000000e+01 0 -1 469 - 4.5500000000000000e+01 -2 -3 470 4.8500000000000000e+01 - - 9.3947365880012512e-02 -5.0669384002685547e-01 - 6.3860702514648438e-01 -5.6095314025878906e-01 - <_> - 1.2646597862243652e+01 - - 1 2 471 5.7750000000000000e+02 0 -1 472 2607. -2 -3 473 - 8.4850000000000000e+02 - - -8.0222898721694946e-01 4.9571409821510315e-01 - 6.9677603244781494e-01 -3.4005377441644669e-02 - <_> - 1.3080556869506836e+01 - - 1 2 474 3.5000000000000000e+00 0 -1 475 - 2.9025000000000000e+03 -2 -3 476 1.4500000000000000e+01 - - 6.3582272268831730e-03 -7.6159459352493286e-01 - 4.4750732183456421e-01 -1.8545417487621307e-01 - <_> - 1.3341848373413086e+01 - - 1 2 477 2.5000000000000000e+00 0 -1 478 - 1.3500000000000000e+01 -2 -3 479 5.0000000000000000e-01 - - -4.0977507829666138e-01 3.4295764565467834e-01 - 9.3431934714317322e-02 -7.1162647008895874e-01 - <_> - 1.2996747970581055e+01 - - 1 2 480 5.5000000000000000e+00 0 -1 481 - 6.5000000000000000e+00 -2 -3 482 3.1450000000000000e+02 - - -5.9179306030273438e-01 5.3183627128601074e-01 - 2.9362958669662476e-01 -5.2066570520401001e-01 - <_> - 1.3275168418884277e+01 - - 1 2 483 5.0000000000000000e-01 0 -1 484 - 5.8550000000000000e+02 -2 -3 485 1.2025000000000000e+03 - - -4.2056784033775330e-01 5.3556817770004272e-01 - 5.9011709690093994e-01 -3.4758779406547546e-01 - <_> - 1.3466418266296387e+01 - - 1 2 486 5.5000000000000000e+00 0 -1 487 - 5.0000000000000000e-01 -2 -3 488 14734. - - 4.4770663976669312e-01 -8.6989867687225342e-01 - 1.9124945998191833e-01 -7.6927727460861206e-01 - <_> - 1.3708694458007812e+01 - - 1 2 489 3.5150000000000000e+02 0 -1 490 - 2.4500000000000000e+01 -2 -3 491 1.2500000000000000e+01 - - 5.4361712932586670e-01 -9.3802767992019653e-01 - 2.4227620661258698e-01 -3.2380709052085876e-01 - <_> - 1.3621360778808594e+01 - - 1 2 492 1.5750000000000000e+02 0 -1 493 45. -2 -3 494 - 6.5000000000000000e+00 - - 4.8756289482116699e-01 -6.2756335735321045e-01 - 5.6488978862762451e-01 -8.7333582341670990e-02 - <_> - 1.3719803810119629e+01 - - 1 2 495 1.4500000000000000e+01 0 -1 496 - 3.2785000000000000e+03 -2 -3 497 1.2500000000000000e+01 - - -8.3579055964946747e-02 -9.0902733802795410e-01 - 4.0620484948158264e-01 -2.2033128142356873e-01 - <_> - 1.3743362426757812e+01 - - 1 2 498 1.7500000000000000e+01 0 -1 499 - 2.5500000000000000e+01 -2 -3 500 446. - - 5.8430969715118408e-02 -5.6837719678878784e-01 - -1.8840381503105164e-01 6.9564127922058105e-01 - <_> - 1.3924007415771484e+01 - - 1 2 501 8.0450000000000000e+02 0 -1 502 - 4.0500000000000000e+01 -2 -3 503 2.5000000000000000e+00 - - -4.7573506832122803e-01 2.6540222764015198e-01 - -3.4159180521965027e-01 5.4993849992752075e-01 - <_> - 1.4126693725585938e+01 - - 1 2 504 2.5000000000000000e+00 0 -1 505 3876. -2 -3 506 - 7.5000000000000000e+00 - - 4.1770899295806885e-01 -3.8963168859481812e-01 - 1.9346395134925842e-01 -5.6205403804779053e-01 - <_> - 1.4377063751220703e+01 - - 1 2 507 1.0630500000000000e+04 0 -1 508 - 1.7500000000000000e+01 -2 -3 509 5.0000000000000000e-01 - - 4.2469942569732666e-01 -6.3991433382034302e-01 - 7.5341060757637024e-02 -5.3553485870361328e-01 - <_> - 1.4237608909606934e+01 - - 1 2 510 5.7500000000000000e+01 0 -1 511 - 6.5000000000000000e+00 -2 -3 512 2.8500000000000000e+01 - - 5.4694686084985733e-02 -5.2880686521530151e-01 - -3.4901857376098633e-01 4.7299972176551819e-01 - <_> - 1.4564194679260254e+01 - - 1 2 513 7.5000000000000000e+00 0 -1 514 - 8.5000000000000000e+00 -2 -3 515 4.5000000000000000e+00 - - -5.7572060823440552e-01 4.0378063917160034e-01 - 1.7233282327651978e-01 -5.5302166938781738e-01 - <_> - 1.4479125976562500e+01 - - 1 2 516 4.1500000000000000e+01 0 -1 517 - 5.0000000000000000e-01 -2 -3 518 3.5000000000000000e+00 - - 6.9208496809005737e-01 -9.3342530727386475e-01 - 4.8711183667182922e-01 -8.5068866610527039e-02 - <_> - 1.4771840095520020e+01 - - 1 2 519 3.2350000000000000e+02 0 -1 520 - 6.8500000000000000e+01 -2 -3 521 2.9050000000000000e+02 - - -5.6921553611755371e-01 7.5075703859329224e-01 - 3.0680647492408752e-01 -5.3018033504486084e-01 - <_> - 1.4921194076538086e+01 - - 1 2 522 9.5000000000000000e+00 0 -1 523 178. -2 -3 524 - 1.5000000000000000e+00 - - 2.7555197477340698e-01 -8.4987080097198486e-01 - 7.1478825807571411e-01 -4.7535741329193115e-01 - <_> - 1.5011672019958496e+01 - - 1 2 525 3.5500000000000000e+01 0 -1 526 - 4.9450000000000000e+02 -2 -3 527 151. - - -4.1447910666465759e-01 9.0478152036666870e-02 - 7.2348231077194214e-01 -8.4134203195571899e-01 - <_> - 1.5009381294250488e+01 - - 1 2 528 1.0075000000000000e+03 0 -1 529 - 4.6135000000000000e+03 -2 -3 530 5.0000000000000000e-01 - - -1.3591668009757996e-01 5.0908648967742920e-01 - 4.3699756264686584e-02 -6.3745105266571045e-01 - <_> - 1.4872577667236328e+01 - - 1 2 531 4.9500000000000000e+01 0 -1 532 - 7.5000000000000000e+00 -2 -3 533 2.6500000000000000e+01 - - 5.5888742208480835e-02 -5.8190774917602539e-01 - -7.9333829879760742e-01 5.4325503110885620e-01 - <_> - 1.5080644607543945e+01 - - 1 2 534 4.7500000000000000e+01 0 -1 535 - 1.4500000000000000e+01 -2 -3 536 2.7500000000000000e+01 - - -8.9569383859634399e-01 2.0806635916233063e-01 - -7.5062823295593262e-01 2.4852557480335236e-01 - <_> - 1.5080853462219238e+01 - - 1 2 537 6.5000000000000000e+00 0 -1 538 - 8.5000000000000000e+00 -2 -3 539 3.8050000000000000e+02 - - -6.1480957269668579e-01 3.2939058542251587e-01 - 4.0805706381797791e-01 -4.6099272370338440e-01 - <_> - 1.4875501632690430e+01 - - 1 2 540 1.0500000000000000e+01 0 -1 541 - 1.5000000000000000e+00 -2 -3 542 478. - - -9.0150666236877441e-01 3.4228125214576721e-01 - -5.9740513563156128e-01 8.7162934243679047e-02 - <_> - 1.5382561683654785e+01 - - 1 2 543 5.5000000000000000e+00 0 -1 544 - 5.0000000000000000e-01 -2 -3 545 2.5500000000000000e+01 - - -3.2944935560226440e-01 5.0705975294113159e-01 - -3.9558005332946777e-01 3.1945833563804626e-01 - <_> - 1.5631669998168945e+01 - - 1 2 546 1.5000000000000000e+00 0 -1 547 - 1.1500000000000000e+01 -2 -3 548 3.5000000000000000e+00 - - -5.0148051977157593e-01 3.6997869610786438e-01 - 7.7569979429244995e-01 -3.7318921089172363e-01 - <_> - 1.5227413177490234e+01 - - 1 2 549 5.5000000000000000e+00 0 -1 550 - 2.5000000000000000e+00 -2 -3 551 8.2500000000000000e+01 - - 9.7206316888332367e-02 -5.2512657642364502e-01 - 5.3593277931213379e-01 -5.2903693914413452e-01 - <_> - 1.5712855339050293e+01 - - 1 2 552 1.5000000000000000e+00 0 -1 553 - 1.1500000000000000e+01 -2 -3 554 1.5000000000000000e+00 - - -5.5320370197296143e-01 5.5974000692367554e-01 - -4.7809949517250061e-01 1.2362124770879745e-01 - <_> - 1.5475475311279297e+01 - - 1 2 555 1.1150000000000000e+02 0 -1 556 107. -2 -3 557 - 5.4500000000000000e+01 - - 2.2000953555107117e-01 -5.7901185750961304e-01 - 5.5795150995254517e-01 -2.0629312098026276e-01 - <_> - 1.5877110481262207e+01 - - 1 2 558 5.0000000000000000e-01 0 -1 559 - 4.7500000000000000e+01 -2 -3 560 4.0850000000000000e+02 - - 4.0163558721542358e-01 -6.5443444252014160e-01 - 3.9427250623703003e-01 -4.3203008174896240e-01 - <_> - 1.5799601554870605e+01 - - 1 2 561 2.0250000000000000e+02 0 -1 562 - 5.0000000000000000e-01 -2 -3 563 2399. - - 1.2356969714164734e-01 -5.3489917516708374e-01 - 4.6495470404624939e-01 -5.8487701416015625e-01 - <_> - 1.6042089462280273e+01 - - 1 2 564 7.0450000000000000e+02 0 -1 565 - 4.4500000000000000e+01 -2 -3 566 288. - - 4.8793616890907288e-01 -8.4778493642807007e-01 - -4.3374565243721008e-01 2.4248743057250977e-01 - <_> - 1.6111749649047852e+01 - - 1 2 567 1.8500000000000000e+01 0 -1 568 - 1.2500000000000000e+01 -2 -3 569 5.0000000000000000e-01 - - -4.8669865727424622e-01 2.7788683772087097e-01 - 3.6192622780799866e-01 -5.7420414686203003e-01 - <_> - 1.6021078109741211e+01 - - 1 2 570 8.3450000000000000e+02 0 -1 571 4451. -2 -3 572 - 3.2950000000000000e+02 - - 5.3921067714691162e-01 -4.8135292530059814e-01 - -2.9889726638793945e-01 6.0160857439041138e-01 - <_> - 1.6436674118041992e+01 - - 1 2 573 1.2500000000000000e+01 0 -1 574 - 6.5000000000000000e+00 -2 -3 575 2.9500000000000000e+01 - - 4.3214797973632812e-01 -2.8101849555969238e-01 - 6.6012543439865112e-01 -7.0270007848739624e-01 - <_> - 1.6612668991088867e+01 - - 1 2 576 4.4500000000000000e+01 0 -1 577 3724. -2 -3 578 - 7.5000000000000000e+00 - - 6.2758970260620117e-01 -5.7332456111907959e-01 - -7.3119300603866577e-01 2.5508829951286316e-01 - <_> - 1.6793443679809570e+01 - - 1 2 579 1.5000000000000000e+00 0 -1 580 - 2.5500000000000000e+01 -2 -3 581 2.3500000000000000e+01 - - -6.3251662254333496e-01 4.4916898012161255e-01 - 4.5003961771726608e-02 -5.9809100627899170e-01 - <_> - 1.6161096572875977e+01 - - 1 2 582 1.5000000000000000e+00 0 -1 583 - 1.5000000000000000e+00 -2 -3 584 2.0500000000000000e+01 - - -7.4945521354675293e-01 6.5612715482711792e-01 - -6.3234704732894897e-01 7.2132863104343414e-02 - <_> - 1.6042703628540039e+01 - - 1 2 585 2.7500000000000000e+01 0 -1 586 - 1.3500000000000000e+01 -2 -3 587 2.5000000000000000e+00 - - -1.1839324980974197e-01 3.9118841290473938e-01 - 2.9518869519233704e-01 -8.5212147235870361e-01 - <_> - 1.6447755813598633e+01 - - 1 2 588 5.0000000000000000e-01 0 -1 589 - 5.0000000000000000e-01 -2 -3 590 5.0000000000000000e-01 - - -8.3366543054580688e-01 4.0505367517471313e-01 - 4.8622503876686096e-02 -5.6565636396408081e-01 - <_> - 1.7133924484252930e+01 - - 1 2 591 2.0350000000000000e+02 0 -1 592 334. -2 -3 593 - 3.0050000000000000e+02 - - -3.5271939635276794e-01 8.6447751522064209e-01 - 7.1061849594116211e-01 -1.1952371150255203e-01 - <_> - 1.6702384948730469e+01 - - 1 2 594 4.5000000000000000e+00 0 -1 595 - 2.8500000000000000e+01 -2 -3 596 1.2500000000000000e+01 - - -3.9405979216098785e-02 6.6947597265243530e-01 - -4.9912232160568237e-01 1.0251764953136444e-01 - <_> - 1.7397886276245117e+01 - - 1 2 597 2.2450000000000000e+02 0 -1 598 42. -2 -3 599 - 4.2500000000000000e+01 - - 7.0597994327545166e-01 -9.4353288412094116e-01 - -6.9157105684280396e-01 2.2714031860232353e-02 - <_> - 1.7262920379638672e+01 - - 1 2 600 3.1500000000000000e+01 0 -1 601 - 1.0450000000000000e+02 -2 -3 602 5.0000000000000000e-01 - - -1.3496619462966919e-01 4.4948977231979370e-01 - 1.4885289967060089e-01 -8.6381590366363525e-01 - <_> - 1.7465213775634766e+01 - - 1 2 603 1.4500000000000000e+01 0 -1 604 - 2.5000000000000000e+00 -2 -3 605 2.5000000000000000e+00 - - -7.1829992532730103e-01 3.5132697224617004e-01 - 4.2205992341041565e-01 -4.3211916089057922e-01 - <_> - 1.7307765960693359e+01 - - 1 2 606 5.5000000000000000e+00 0 -1 607 - 1.6500000000000000e+01 -2 -3 608 1.5000000000000000e+00 - - -4.3471553921699524e-01 5.3184741735458374e-01 - 1.5001934766769409e-01 -5.0502711534500122e-01 - <_> - 1.7614244461059570e+01 - - 1 2 609 2.1950000000000000e+02 0 -1 610 - 3.5000000000000000e+00 -2 -3 611 3.5000000000000000e+00 - - 9.3997812271118164e-01 -9.3997251987457275e-01 - 3.0647855997085571e-01 -2.0921668410301208e-01 - <_> - 1.7706068038940430e+01 - - 1 2 612 5.7500000000000000e+01 0 -1 613 - 5.5450000000000000e+02 -2 -3 614 6271. - - 2.8178128600120544e-01 -6.5705215930938721e-01 - 2.1660777926445007e-01 -8.9905387163162231e-01 - <_> - 1.7754480361938477e+01 - - 1 2 615 5.0000000000000000e-01 0 -1 616 - 1.6500000000000000e+01 -2 -3 617 5.0000000000000000e-01 - - -6.6525924205780029e-01 5.8488470315933228e-01 - 2.6185688376426697e-01 -3.7666809558868408e-01 - <_> - 1.7758506774902344e+01 - - 1 2 618 5.8750000000000000e+02 0 -1 619 - 5.0000000000000000e-01 -2 -3 620 7.9050000000000000e+02 - - 6.1497175693511963e-01 -5.2589684724807739e-01 - 5.6739014387130737e-01 -1.2997034192085266e-01 - <_> - 1.8137268066406250e+01 - - 1 2 621 1.2500000000000000e+01 0 -1 622 - 2.7500000000000000e+01 -2 -3 623 9.5000000000000000e+00 - - 2.7133096009492874e-02 -7.4169838428497314e-01 - -5.5511766672134399e-01 3.7876096367835999e-01 - <_> - 1.8127597808837891e+01 - - 1 2 624 1.3500000000000000e+01 0 -1 625 - 1.6500000000000000e+01 -2 -3 626 7.0050000000000000e+02 - - -9.9238857626914978e-02 5.2959042787551880e-01 - 1.2502020597457886e-01 -6.9074809551239014e-01 - <_> - 1.8081335067749023e+01 - - 1 2 627 1.2500000000000000e+01 0 -1 628 2. -2 -3 629 - 5.0000000000000000e-01 - - -9.4234240055084229e-01 1. 3.8502028584480286e-01 - -1.8359494209289551e-01 - <_> - 1.8053295135498047e+01 - - 1 2 630 2.7500000000000000e+01 0 -1 631 - 5.9500000000000000e+01 -2 -3 632 4.1500000000000000e+01 - - -4.9844527244567871e-01 2.2154885530471802e-01 - 1.6719245910644531e-01 -8.5411649942398071e-01 - <_> - 1.8328479766845703e+01 - - 1 2 633 1.2564500000000000e+04 0 -1 634 - 4.5000000000000000e+00 -2 -3 635 1.4450000000000000e+02 - - -5.1779359579086304e-01 3.0374595522880554e-01 - -7.3483371734619141e-01 7.6394975185394287e-02 - <_> - 1.8571502685546875e+01 - - 1 2 636 2.5000000000000000e+00 0 -1 637 - 2.6750000000000000e+02 -2 -3 638 6.4350000000000000e+02 - - -8.5374289751052856e-01 4.6067333221435547e-01 - -4.1071122884750366e-01 3.6673283576965332e-01 - <_> - 1.8682445526123047e+01 - - 1 2 639 2.0650000000000000e+02 0 -1 640 - 4.2500000000000000e+01 -2 -3 641 1.1500000000000000e+01 - - -5.0848436355590820e-01 2.4837252497673035e-01 - -6.5386766195297241e-01 4.2162042856216431e-01 - <_> - 1.8954551696777344e+01 - - 1 2 642 6.5000000000000000e+00 0 -1 643 - 3.0500000000000000e+01 -2 -3 644 2.2500000000000000e+01 - - -5.9916085004806519e-01 2.7210691571235657e-01 - -1.1765263974666595e-01 -8.1677961349487305e-01 - <_> - 1.8866088867187500e+01 - - 1 2 645 1.5000000000000000e+00 0 -1 646 - 6.5000000000000000e+00 -2 -3 647 1.1150000000000000e+02 - - 5.0670212507247925e-01 -2.6341021060943604e-01 - -4.3560948967933655e-01 3.6474627256393433e-01 - <_> - 1.8741416931152344e+01 - - 1 2 648 4.1500000000000000e+01 0 -1 649 - 6.5000000000000000e+00 -2 -3 650 1.5000000000000000e+00 - - 5.2751459181308746e-02 -6.6522449254989624e-01 - 3.3934053778648376e-01 -4.9355345964431763e-01 - <_> - 1.8643299102783203e+01 - - 1 2 651 5.9775000000000000e+03 0 -1 652 - 1.8165000000000000e+03 -2 -3 653 1.4355000000000000e+03 - - 5.5302268266677856e-01 -4.7563236951828003e-01 - 6.5803569555282593e-01 -9.8118394613265991e-02 - <_> - 1.8880964279174805e+01 - - 1 2 654 1.2650000000000000e+02 0 -1 655 - 2.5000000000000000e+00 -2 -3 656 1.3500000000000000e+01 - - -7.5744998455047607e-01 2.8973925113677979e-01 - -5.4551291465759277e-01 8.2080578804016113e-01 - <_> - 1.8557128906250000e+01 - - 1 2 657 4.6500000000000000e+01 0 -1 658 1647. -2 -3 659 - 1.0500000000000000e+01 - - 1.0912799835205078e-01 -8.0168753862380981e-01 - 3.0439880490303040e-01 -3.2383540272712708e-01 - <_> - 1.9214336395263672e+01 - - 1 2 660 1.6085000000000000e+03 0 -1 661 - 2.0950000000000000e+02 -2 -3 662 2.9750000000000000e+02 - - -3.6497074365615845e-01 7.4361735582351685e-01 - 7.8719192743301392e-01 -1.0578166693449020e-02 - <_> - 1.9558198928833008e+01 - - 1 2 663 5.5000000000000000e+00 0 -1 664 141. -2 -3 665 - 1.2500000000000000e+01 - - 4.0406695008277893e-01 -7.0202612876892090e-01 - -4.2011860013008118e-01 6.0265243053436279e-01 - <_> - 1.9143066406250000e+01 - - 1 2 666 1.1500000000000000e+01 0 -1 667 - 8.5000000000000000e+00 -2 -3 668 2.1150000000000000e+02 - - -4.1513276100158691e-01 4.5337858796119690e-01 - 3.6399593949317932e-01 -7.8625452518463135e-01 - <_> - 1.9362360000610352e+01 - - 1 2 669 3.1500000000000000e+01 0 -1 670 - 3.5000000000000000e+00 -2 -3 671 1.5500000000000000e+01 - - -5.3197765350341797e-01 2.7408641576766968e-01 - -6.3501793146133423e-01 4.3600288033485413e-01 - <_> - 1.9299673080444336e+01 - - 1 2 672 3.5000000000000000e+00 0 -1 673 - 1.3500000000000000e+01 -2 -3 674 6918. - - -4.8876148462295532e-01 4.8771849274635315e-01 - -3.5163021087646484e-01 5.7008403539657593e-01 - <_> - 1.9273160934448242e+01 - - 1 2 675 4.2150000000000000e+02 0 -1 676 - 2.2035000000000000e+03 -2 -3 677 4125. - - -1. 4.3742546439170837e-01 -6.3171046972274780e-01 - -1.2324055656790733e-02 - <_> - 1.9674695968627930e+01 - - 1 2 678 5.0000000000000000e-01 0 -1 679 - 1.0500000000000000e+01 -2 -3 680 6.7150000000000000e+02 - - -2.4401791393756866e-01 5.4219561815261841e-01 - 4.5299509167671204e-01 -4.0972766280174255e-01 - <_> - 1.9536827087402344e+01 - - 1 2 681 80. 0 -1 682 9.5000000000000000e+00 -2 -3 683 - 1.1950000000000000e+02 - - 9.7771358489990234e-01 -1. -2.7852934598922729e-01 - 3.1141099333763123e-01 - <_> - 1.9679944992065430e+01 - - 1 2 684 5.5000000000000000e+00 0 -1 685 - 5.5000000000000000e+00 -2 -3 686 4.5000000000000000e+00 - - -3.4437903761863708e-01 4.5901042222976685e-01 - 1.4311666786670685e-01 -5.8588796854019165e-01 - <_> - 1.9943355560302734e+01 - - 1 2 687 2.9500000000000000e+01 0 -1 688 - 6.5000000000000000e+00 -2 -3 689 2.4500000000000000e+01 - - -5.8437657356262207e-01 2.6341116428375244e-01 - -6.2989181280136108e-01 2.0000371336936951e-01 - <_> - 1.9625724792480469e+01 - - 1 2 690 2.0850000000000000e+02 0 -1 691 - 2.3305000000000000e+03 -2 -3 692 866. - - -3.1762993335723877e-01 5.5581647157669067e-01 - 5.3226226568222046e-01 -4.7602936625480652e-01 - <_> - 1.9914857864379883e+01 - - 1 2 693 8.7850000000000000e+02 0 -1 694 - 6.5050000000000000e+02 -2 -3 695 1.2605000000000000e+03 - - 2.8913190960884094e-01 -8.0038177967071533e-01 - -7.6349312067031860e-01 1.2914163060486317e-02 - <_> - 2.0337768554687500e+01 - - 1 2 696 1.8500000000000000e+01 0 -1 697 51. -2 -3 698 - 5.0000000000000000e-01 - - 2.0884056389331818e-01 -6.6362190246582031e-01 - 4.8303022980690002e-01 -1.5653999149799347e-01 - <_> - 2.0547544479370117e+01 - - 1 2 699 5.5000000000000000e+00 0 -1 700 - 4.4500000000000000e+01 -2 -3 701 52. - - -5.9065473079681396e-01 2.0977459847927094e-01 - -7.6793259382247925e-01 5.2228933572769165e-01 - <_> - 2.0560253143310547e+01 - - 1 2 702 4.5000000000000000e+00 0 -1 703 - 2.4650000000000000e+02 -2 -3 704 4.8500000000000000e+01 - - 4.7756865620613098e-01 -6.9306534528732300e-01 - -4.7408469021320343e-02 -7.5790488719940186e-01 - <_> - 2.0091964721679688e+01 - - 1 2 705 3.8500000000000000e+01 0 -1 706 - 5.0000000000000000e-01 -2 -3 707 458. - - 4.1837117075920105e-01 -5.6005704402923584e-01 - -4.6829015016555786e-01 3.3648452162742615e-01 - <_> - 2.0445671081542969e+01 - - 1 2 708 4.5000000000000000e+00 0 -1 709 - 2.7895000000000000e+03 -2 -3 710 1.1500000000000000e+01 - - -3.6157336831092834e-01 3.5370638966560364e-01 - -5.6435430049896240e-01 6.2603580951690674e-01 - <_> - 2.0708145141601562e+01 - - 1 2 711 1.1245000000000000e+03 0 -1 712 - 4.5000000000000000e+00 -2 -3 713 1.4500000000000000e+01 - - -6.9924837350845337e-01 4.3067482113838196e-01 - -4.2009061574935913e-01 2.6247435808181763e-01 - <_> - 2.1024463653564453e+01 - - 1 2 714 5.5000000000000000e+00 0 -1 715 - 1.1500000000000000e+01 -2 -3 716 7.5000000000000000e+00 - - -8.0043709278106689e-01 3.1631988286972046e-01 - -5.1429873704910278e-01 2.7576768398284912e-01 - <_> - 2.0803630828857422e+01 - - 1 2 717 5.8750000000000000e+02 0 -1 718 3981. -2 -3 719 - 1.9550000000000000e+02 - - -5.4785442352294922e-01 7.9078370332717896e-01 - 6.8359661102294922e-01 -2.8464736416935921e-02 - <_> - 2.1062959671020508e+01 - - 1 2 720 2.5000000000000000e+00 0 -1 721 - 1.5000000000000000e+00 -2 -3 722 3.4050000000000000e+02 - - -6.4614498615264893e-01 7.4008464813232422e-01 - -2.5458994507789612e-01 4.7160488367080688e-01 - <_> - 2.1148992538452148e+01 - - 1 2 723 2.5000000000000000e+00 0 -1 724 - 1.9500000000000000e+01 -2 -3 725 1.1365000000000000e+03 - - -7.9459643363952637e-01 4.0373617410659790e-01 - 1.7909039556980133e-01 -4.8390582203865051e-01 - <_> - 2.1316343307495117e+01 - - 1 2 726 596. 0 -1 727 2.9500000000000000e+01 -2 -3 728 - 9.7500000000000000e+01 - - -3.1621825695037842e-01 2.6443120837211609e-01 - -7.2724926471710205e-01 3.8569703698158264e-01 - <_> - 2.1407173156738281e+01 - - 1 2 729 3.5000000000000000e+00 0 -1 730 - 1.2500000000000000e+01 -2 -3 731 1.6250000000000000e+02 - - -5.2135920524597168e-01 3.0805602669715881e-01 - -5.1675158739089966e-01 8.4476417303085327e-01 - <_> - 2.1468662261962891e+01 - - 1 2 732 2.5000000000000000e+00 0 -1 733 - 9.5000000000000000e+00 -2 -3 734 1.5000000000000000e+00 - - 4.6017938852310181e-01 -8.2636475563049316e-02 - 5.0263375043869019e-01 -6.4655619859695435e-01 - <_> - 2.1531848907470703e+01 - - 1 2 735 1.6500000000000000e+01 0 -1 736 - 1.5000000000000000e+00 -2 -3 737 132. - - 6.3187964260578156e-02 -4.6502736210823059e-01 - -5.3921943902969360e-01 6.6515022516250610e-01 - <_> - 2.1421955108642578e+01 - - 1 2 738 1.4500000000000000e+01 0 -1 739 - 5.5000000000000000e+00 -2 -3 740 4.5000000000000000e+00 - - 7.3170220851898193e-01 -7.9929661750793457e-01 - 4.2181393504142761e-01 -1.0989431291818619e-01 - <_> - 2.1327116012573242e+01 - - 1 2 741 3.5000000000000000e+00 0 -1 742 35. -2 -3 743 - 2.5000000000000000e+00 - - -8.3855998516082764e-01 4.6628227829933167e-01 - 4.7352400422096252e-01 -9.4839885830879211e-02 - <_> - 2.1836402893066406e+01 - - 1 2 744 1.7500000000000000e+01 0 -1 745 555. -2 -3 746 - 1.0500000000000000e+01 - - 9.3723833560943604e-01 -9.0897613763809204e-01 - -7.3575176298618317e-02 5.0928729772567749e-01 - <_> - 2.2053348541259766e+01 - - 1 2 747 5.0000000000000000e-01 0 -1 748 - 1.6500000000000000e+01 -2 -3 749 6.5850000000000000e+02 - - 3.9292082190513611e-01 -5.4508280754089355e-01 - -3.8765028119087219e-01 7.9302084445953369e-01 - <_> - 2.2000936508178711e+01 - - 1 2 750 1.2495000000000000e+03 0 -1 751 - 7.5650000000000000e+02 -2 -3 752 8.5000000000000000e+00 - - -8.3031547069549561e-01 6.1485505104064941e-01 - -7.2577434778213501e-01 -3.1862542033195496e-02 - <_> - 2.2258289337158203e+01 - - 1 2 753 1.7050000000000000e+02 0 -1 754 - 2.7500000000000000e+01 -2 -3 755 171. - - 2.5735321640968323e-01 -4.8002240061759949e-01 - -8.0062097311019897e-01 3.0654129385948181e-01 - <_> - 2.2328397750854492e+01 - - 1 2 756 1.2550000000000000e+02 0 -1 757 - 4.9850000000000000e+02 -2 -3 758 4.4150000000000000e+02 - - -5.5743676424026489e-01 7.0109486579895020e-02 - 4.4649991393089294e-01 -7.7318650484085083e-01 - <_> - 2.2216890335083008e+01 - - 1 2 759 6.5000000000000000e+00 0 -1 760 - 1.5000000000000000e+00 -2 -3 761 1.4500000000000000e+01 - - -5.4395025968551636e-01 3.0336576700210571e-01 - -7.8275823593139648e-01 1.5390900894999504e-02 - <_> - 2.2302726745605469e+01 - - 1 2 762 1.5000000000000000e+00 0 -1 763 - 5.7500000000000000e+01 -2 -3 764 2.0645000000000000e+03 - - 4.8738116025924683e-01 -3.1202495098114014e-01 - -4.3800228834152222e-01 2.9288199543952942e-01 - <_> - 2.2548938751220703e+01 - - 1 2 765 4.9500000000000000e+01 0 -1 766 - 3.8500000000000000e+01 -2 -3 767 5.1500000000000000e+01 - - 4.8418575525283813e-01 -6.1569869518280029e-01 - 2.4621097743511200e-01 -7.1180444955825806e-01 - <_> - 2.2475860595703125e+01 - - 1 2 768 4.5000000000000000e+00 0 -1 769 - 1.7850000000000000e+02 -2 -3 770 2.4500000000000000e+01 - - -6.3133555650711060e-01 3.8137707114219666e-01 - -3.6368274688720703e-01 6.6181749105453491e-01 - <_> - 2.2855289459228516e+01 - - 1 2 771 4284. 0 -1 772 1.0550000000000000e+02 -2 -3 773 - 2.6500000000000000e+01 - - -1.8270370364189148e-01 5.1926845312118530e-01 - -4.9393907189369202e-01 3.6390557885169983e-01 - <_> - 2.2716596603393555e+01 - - 1 2 774 4.5000000000000000e+00 0 -1 775 - 2.5500000000000000e+01 -2 -3 776 6.0350000000000000e+02 - - -5.2201086282730103e-01 4.4320568442344666e-01 - -4.9849912524223328e-01 2.6197108626365662e-01 - <_> - 2.2941522598266602e+01 - - 1 2 777 5.7850000000000000e+02 0 -1 778 - 6.8250000000000000e+02 -2 -3 779 2.6500000000000000e+01 - - -7.4641335010528564e-01 9.6406400203704834e-01 - 2.2492493689060211e-01 -7.7606719732284546e-01 - <_> - 2.3111333847045898e+01 - - 1 2 780 2.9650000000000000e+02 0 -1 781 - 9.5000000000000000e+00 -2 -3 782 4.2500000000000000e+01 - - -6.2134265899658203e-01 1.6981208324432373e-01 - -8.7735611200332642e-01 6.5406101942062378e-01 - <_> - 2.3225652694702148e+01 - - 1 2 783 5.0000000000000000e-01 0 -1 784 - 3.5000000000000000e+00 -2 -3 785 1.1050000000000000e+02 - - 4.8261573910713196e-01 -1.2186601758003235e-01 - -6.2313985824584961e-01 1.7973627150058746e-01 - <_> - 2.3488880157470703e+01 - - 1 2 786 5.0000000000000000e-01 0 -1 787 - 2.5000000000000000e+00 -2 -3 788 4.1500000000000000e+01 - - -8.2940989732742310e-01 4.9927219748497009e-01 - -5.5514144897460938e-01 4.2520754039287567e-02 - <_> - 2.3246582031250000e+01 - - 1 2 789 1.7500000000000000e+01 0 -1 790 - 3.5000000000000000e+00 -2 -3 791 3.7500000000000000e+01 - - 2.3804731667041779e-01 -3.6675044894218445e-01 - -7.8130763769149780e-01 4.6650439500808716e-01 - <_> - 2.3027326583862305e+01 - - 1 2 792 2.0450000000000000e+02 0 -1 793 - 6.4350000000000000e+02 -2 -3 794 1.0050000000000000e+02 - - 6.1607003211975098e-01 -3.5964947938919067e-01 - 6.6453498601913452e-01 -1.7912100255489349e-01 - <_> - 2.3406442642211914e+01 - - 1 2 795 5.0000000000000000e-01 0 -1 796 - 6.5000000000000000e+00 -2 -3 797 5.0000000000000000e-01 - - -8.2512348890304565e-01 3.7911432981491089e-01 - 3.5871699452400208e-01 -4.4794848561286926e-01 - <_> - 2.3616649627685547e+01 - - 1 2 798 2.8500000000000000e+01 0 -1 799 - 4.7450000000000000e+02 -2 -3 800 2.9250000000000000e+02 - - 6.9855457544326782e-01 -7.0031523704528809e-01 - 2.1020780503749847e-01 -7.6559376716613770e-01 - <_> - 2.4126110076904297e+01 - - 1 2 801 2.7500000000000000e+01 0 -1 802 - 6.5000000000000000e+00 -2 -3 803 4.0500000000000000e+01 - - -2.3670162260532379e-01 5.7600808143615723e-01 - 7.9060065746307373e-01 -6.8735271692276001e-01 - <_> - 2.4140369415283203e+01 - - 1 2 804 5.0000000000000000e-01 0 -1 805 - 5.0000000000000000e-01 -2 -3 806 4.5000000000000000e+00 - - -9.1332882642745972e-01 5.2299410104751587e-01 - -7.9110765457153320e-01 -2.8204634785652161e-02 - <_> - 2.4360799789428711e+01 - - 1 2 807 4.5000000000000000e+00 0 -1 808 - 1.3185000000000000e+03 -2 -3 809 5.3500000000000000e+01 - - -8.1156605482101440e-01 2.2043134272098541e-01 - 2.7905371785163879e-01 -7.4440413713455200e-01 - <_> - 2.4109243392944336e+01 - - 1 2 810 1.3500000000000000e+01 0 -1 811 - 5.0000000000000000e-01 -2 -3 812 4.4500000000000000e+01 - - 2.3124285042285919e-01 -6.3171100616455078e-01 - -8.5163635015487671e-01 3.0160894989967346e-01 - <_> - 2.4255434036254883e+01 - - 1 2 813 1.5650000000000000e+02 0 -1 814 - 3.5000000000000000e+00 -2 -3 815 4.3500000000000000e+01 - - -7.0664036273956299e-01 1.4619015157222748e-01 - -7.6265025138854980e-01 9.5157426595687866e-01 - <_> - 2.4288377761840820e+01 - - 1 2 816 8.3850000000000000e+02 0 -1 817 - 1.6815000000000000e+03 -2 -3 818 3.7500000000000000e+01 - - -1.9312603771686554e-01 7.6522910594940186e-01 - -5.9187997132539749e-02 -8.7799388170242310e-01 - <_> - 2.4200824737548828e+01 - - 1 2 819 2.3685000000000000e+03 0 -1 820 - 6.4500000000000000e+01 -2 -3 821 2218. - - -2.3894232511520386e-01 3.3463284373283386e-01 - 9.7570341825485229e-01 -1. - <_> - 2.4393486022949219e+01 - - 1 2 822 1.5000000000000000e+00 0 -1 823 - 6.2500000000000000e+01 -2 -3 824 5.0000000000000000e-01 - - 3.8941594958305359e-01 -6.3870257139205933e-01 - 2.9708841443061829e-01 -4.5916315913200378e-01 - <_> - 2.3864915847778320e+01 - - 1 2 825 5.8500000000000000e+01 0 -1 826 - 5.0000000000000000e-01 -2 -3 827 5.0550000000000000e+02 - - 1.0665965825319290e-01 -5.2857077121734619e-01 - 4.3078324198722839e-01 -6.8552410602569580e-01 - <_> - 2.4371673583984375e+01 - - 1 2 828 4.6500000000000000e+01 0 -1 829 - 2.8500000000000000e+01 -2 -3 830 2.5000000000000000e+00 - - -4.6691280603408813e-01 9.4536936283111572e-01 - 5.0675743818283081e-01 -7.4976824223995209e-02 - <_> - 2.4283998489379883e+01 - - 1 2 831 8.5000000000000000e+00 0 -1 832 - 4.5000000000000000e+00 -2 -3 833 5.0000000000000000e-01 - - 1.1491531878709793e-01 -5.4051393270492554e-01 - 5.9726655483245850e-01 -8.7674349546432495e-02 - <_> - 2.4178682327270508e+01 - - 1 2 834 2.4500000000000000e+01 0 -1 835 31. -2 -3 836 - 2.5000000000000000e+00 - - -1.4163693785667419e-01 -8.9226043224334717e-01 - 4.4437414407730103e-01 -1.0531529039144516e-01 - <_> - 2.4790372848510742e+01 - - 1 2 837 2.5500000000000000e+01 0 -1 838 - 3.3050000000000000e+02 -2 -3 839 5.0000000000000000e-01 - - -6.6818559169769287e-01 9.3957829475402832e-01 - 6.1168950796127319e-01 -2.6481609791517258e-02 - <_> - 2.4897542953491211e+01 - - 1 2 840 5.0000000000000000e-01 0 -1 841 - 5.0000000000000000e-01 -2 -3 842 2407. - - -3.7540107965469360e-01 5.3918349742889404e-01 - 4.6452194452285767e-01 -4.5957338809967041e-01 - <_> - 2.5076763153076172e+01 - - 1 2 843 228. 0 -1 844 182. -2 -3 845 3.3500000000000000e+01 - - 1.7922003567218781e-01 -6.3466674089431763e-01 - -9.4654053449630737e-01 1. - <_> - 2.5344453811645508e+01 - - 1 2 846 2.1050000000000000e+02 0 -1 847 950. -2 -3 848 - 6.5000000000000000e+00 - - 3.8418850302696228e-01 -3.3828052878379822e-01 - -9.4338703155517578e-01 5.6358563899993896e-01 - <_> - 2.5327934265136719e+01 - - 1 2 849 5.7850000000000000e+02 0 -1 850 2721. -2 -3 851 - 5.7950000000000000e+02 - - -7.7749001979827881e-01 7.9369461536407471e-01 - 6.1001539230346680e-01 -3.9780076593160629e-02 - <_> - 2.5586107254028320e+01 - - 1 2 852 1.5500000000000000e+01 0 -1 853 - 5.0000000000000000e-01 -2 -3 854 7.5000000000000000e+00 - - 6.5170124173164368e-02 -8.7068217992782593e-01 - 3.4386867284774780e-01 -3.1679311394691467e-01 - <_> - 2.5956110000610352e+01 - - 1 2 855 4.1250000000000000e+02 0 -1 856 - 9.5000000000000000e+00 -2 -3 857 1.2500000000000000e+01 - - -9.4299390912055969e-02 4.5086464285850525e-01 - 2.8941693902015686e-01 -7.5506448745727539e-01 - <_> - 2.5679136276245117e+01 - - 1 2 858 1.5500000000000000e+01 0 -1 859 - 3.5500000000000000e+01 -2 -3 860 1.5500000000000000e+01 - - 5.7768863439559937e-01 -9.8376011848449707e-01 - 2.2712181508541107e-01 -3.7263166904449463e-01 - <_> - 2.5702135086059570e+01 - - 1 2 861 5.2500000000000000e+01 0 -1 862 - 1.1305000000000000e+03 -2 -3 863 213. - - 2.2998491302132607e-02 -5.8967226743698120e-01 - 6.5218383073806763e-01 -8.2674098014831543e-01 - <_> - 2.5561569213867188e+01 - - 1 2 864 5.5500000000000000e+01 0 -1 865 - 9.5000000000000000e+00 -2 -3 866 3.1350000000000000e+02 - - 2.0403856039047241e-01 -5.6006175279617310e-01 - -1.6610753536224365e-01 5.0708794593811035e-01 - <_> - 2.5522092819213867e+01 - - 1 2 867 5.0000000000000000e-01 0 -1 868 5. -2 -3 869 - 3.8500000000000000e+01 - - -5.3519564867019653e-01 5.9799957275390625e-01 - -6.4083904027938843e-01 8.0231800675392151e-03 - <_> - 2.5928745269775391e+01 - - 1 2 870 2.7500000000000000e+01 0 -1 871 - 6.5000000000000000e+00 -2 -3 872 3.4500000000000000e+01 - - 6.7719250917434692e-01 1.6834596171975136e-02 - -4.1419923305511475e-01 4.9665707349777222e-01 - <_> - 2.5877567291259766e+01 - - 1 2 873 4.2500000000000000e+01 0 -1 874 - 1.5000000000000000e+00 -2 -3 875 1.2500000000000000e+01 - - 7.5778728723526001e-01 -6.9553768634796143e-01 - 5.8824920654296875e-01 -5.1177542656660080e-02 - <_> - 2.6253459930419922e+01 - - 1 2 876 2.0450000000000000e+02 0 -1 877 - 5.5000000000000000e+00 -2 -3 878 2.0750000000000000e+02 - - 1.4472042024135590e-01 -5.3407484292984009e-01 - 5.5299741029739380e-01 -2.1952067315578461e-01 - <_> - 2.5972379684448242e+01 - - 1 2 879 5.0000000000000000e-01 0 -1 880 - 9.2500000000000000e+01 -2 -3 881 2.8150000000000000e+02 - - -4.9287506937980652e-01 4.8725369572639465e-01 - 2.1028327941894531e-01 -4.5818585157394409e-01 - <_> - 2.6239015579223633e+01 - - 1 2 882 3.3450000000000000e+02 0 -1 883 - 2.9500000000000000e+01 -2 -3 884 1.9500000000000000e+01 - - -2.7773824334144592e-01 2.6663535833358765e-01 - 9.2568081617355347e-01 -1. - <_> - 2.6405815124511719e+01 - - 1 2 885 7.5000000000000000e+00 0 -1 886 - 1.5500000000000000e+01 -2 -3 887 2.9500000000000000e+01 - - -1.3278310000896454e-01 5.4445451498031616e-01 - -4.4695791602134705e-01 5.7305967807769775e-01 - <_> - 2.6828212738037109e+01 - - 1 2 888 3.1750000000000000e+02 0 -1 889 - 8.5000000000000000e+00 -2 -3 890 1.9950000000000000e+02 - - 5.8375543355941772e-01 -1.7268431186676025e-01 - -6.6015034914016724e-01 4.4744126498699188e-02 - <_> - 2.7001083374023438e+01 - - 1 2 891 7.4500000000000000e+01 0 -1 892 - 9.5000000000000000e+00 -2 -3 893 1.0500000000000000e+01 - - -7.7140247821807861e-01 1.7287059128284454e-01 - -9.5679062604904175e-01 2.9170122742652893e-01 - <_> - 2.6600372314453125e+01 - - 1 2 894 5.0000000000000000e-01 0 -1 895 - 1.5000000000000000e+00 -2 -3 896 1.5000000000000000e+00 - - -6.1320728063583374e-01 3.7253630161285400e-01 - 5.1001715660095215e-01 -4.2740473151206970e-01 - <_> - 2.6939287185668945e+01 - - 1 2 897 742. 0 -1 898 1.5000000000000000e+00 -2 -3 899 - 4.6500000000000000e+01 - - 6.4842426776885986e-01 -6.8702745437622070e-01 - 5.3773084655404091e-03 7.0070070028305054e-01 - <_> - 2.7120637893676758e+01 - - 1 2 900 4.7500000000000000e+01 0 -1 901 - 2.1500000000000000e+01 -2 -3 902 155. - - -2.1175275743007660e-01 3.5446098446846008e-01 - 3.6745795607566833e-01 -7.7352613210678101e-01 - <_> - 2.6940479278564453e+01 - - 1 2 903 5.5000000000000000e+00 0 -1 904 - 5.0000000000000000e-01 -2 -3 905 5.0000000000000000e-01 - - -4.2342516779899597e-01 4.6100237965583801e-01 - 7.2207629680633545e-02 -5.1426035165786743e-01 - <_> - 2.6880437850952148e+01 - - 1 2 906 4.1050000000000000e+02 0 -1 907 - 3.5000000000000000e+00 -2 -3 908 1.0185000000000000e+03 - - 7.6362460851669312e-01 -2.9716432094573975e-01 - 6.9237434864044189e-01 -6.0041967779397964e-02 - <_> - 2.6966255187988281e+01 - - 1 2 909 5.0000000000000000e-01 0 -1 910 28. -2 -3 911 - 2.5000000000000000e+00 - - -7.3636984825134277e-01 8.9863502979278564e-01 - 5.1865053176879883e-01 -1.0253517329692841e-01 - <_> - 2.7442039489746094e+01 - - 1 2 912 2.3500000000000000e+01 0 -1 913 - 2.5000000000000000e+00 -2 -3 914 550. - - 1.5000563859939575e-01 -4.6704238653182983e-01 - -6.6705381870269775e-01 4.7578340768814087e-01 - <_> - 2.7651542663574219e+01 - - 1 2 915 2.0050000000000000e+02 0 -1 916 - 2.5000000000000000e+00 -2 -3 917 3.5000000000000000e+00 - - -6.6723048686981201e-01 2.0950356125831604e-01 - 3.3526617288589478e-01 -7.9762780666351318e-01 - <_> - 2.7623653411865234e+01 - - 1 2 918 8.5000000000000000e+00 0 -1 919 - 5.5000000000000000e+00 -2 -3 920 5.5000000000000000e+00 - - -8.1512671709060669e-01 1.2574225664138794e-01 - 4.8598203063011169e-01 -1.5266139805316925e-01 - <_> - 2.7450769424438477e+01 - - 1 2 921 5.5000000000000000e+00 0 -1 922 - 6.5000000000000000e+00 -2 -3 923 5.0000000000000000e-01 - - -2.1216700971126556e-01 5.0396865606307983e-01 - 5.1462185382843018e-01 -4.5113617181777954e-01 - <_> - 2.7734930038452148e+01 - - 1 2 924 644. 0 -1 925 1.1500000000000000e+01 -2 -3 926 - 1.2050000000000000e+02 - - 2.5870633125305176e-01 -8.3483195304870605e-01 - -6.0892283916473389e-01 2.8416162729263306e-01 - <_> - 2.7435287475585938e+01 - - 1 2 927 2.5000000000000000e+00 0 -1 928 - 1.5000000000000000e+00 -2 -3 929 658. - - -9.0528321266174316e-01 5.4103326797485352e-01 - -2.9964354634284973e-01 4.7055888175964355e-01 - <_> - 2.7890865325927734e+01 - - 1 2 930 2.6065000000000000e+03 0 -1 931 - 3.0950000000000000e+02 -2 -3 932 3.6500000000000000e+01 - - -1.2102564424276352e-01 4.5557883381843567e-01 - -9.6796959638595581e-01 4.1553020477294922e-01 - <_> - 2.7985542297363281e+01 - - 1 2 933 1.2535000000000000e+03 0 -1 934 - 6.4950000000000000e+02 -2 -3 935 4.1650000000000000e+02 - - 6.4220869541168213e-01 -4.2341175675392151e-01 - 5.5095940828323364e-01 -3.7539717555046082e-01 - <_> - 2.8142776489257812e+01 - - 1 2 936 5.0000000000000000e-01 0 -1 937 - 4.5000000000000000e+00 -2 -3 938 3.7500000000000000e+01 - - -3.2875818014144897e-01 4.3458873033523560e-01 - -5.8713775873184204e-01 1.6683255136013031e-01 - <_> - 2.8195165634155273e+01 - - 1 2 939 7.7450000000000000e+02 0 -1 940 - 2.5000000000000000e+00 -2 -3 941 7.9250000000000000e+02 - - 3.3088469505310059e-01 -7.3728382587432861e-01 - 4.7910848259925842e-01 -1.5558865666389465e-01 - <_> - 2.8348829269409180e+01 - - 1 2 942 2.2850000000000000e+02 0 -1 943 - 2.7500000000000000e+01 -2 -3 944 5.2500000000000000e+01 - - -9.7540810704231262e-02 4.9717679619789124e-01 - -8.4607970714569092e-01 3.1448280811309814e-01 - <_> - 2.8368389129638672e+01 - - 1 2 945 5.5000000000000000e+00 0 -1 946 - 5.5000000000000000e+00 -2 -3 947 5.0000000000000000e-01 - - -7.9352790117263794e-01 4.7426006197929382e-01 - 3.1184694170951843e-01 -3.9333003759384155e-01 - <_> - 2.8678846359252930e+01 - - 1 2 948 9.5500000000000000e+01 0 -1 949 - 1.3250000000000000e+02 -2 -3 950 85. - - 8.9399956166744232e-02 -7.3296272754669189e-01 - -7.4362647533416748e-01 3.2927182316780090e-01 - <_> - 2.8603195190429688e+01 - - 1 2 951 2.3500000000000000e+01 0 -1 952 - 5.5000000000000000e+00 -2 -3 953 1.5500000000000000e+01 - - 2.9263785481452942e-01 -2.7861267328262329e-01 - 2.4879254400730133e-02 -8.7280374765396118e-01 - <_> - 2.8429206848144531e+01 - - 1 2 954 5.0000000000000000e-01 0 -1 955 - 7.5000000000000000e+00 -2 -3 956 1.1050000000000000e+02 - - -4.9112609028816223e-01 4.5099055767059326e-01 - -6.6482228040695190e-01 3.8441817741841078e-03 - <_> - 2.8728115081787109e+01 - - 1 2 957 4.5000000000000000e+00 0 -1 958 - 3.0500000000000000e+01 -2 -3 959 9.5000000000000000e+00 - - 3.4782031178474426e-01 -4.3692314624786377e-01 - -5.0424945354461670e-01 4.8909524083137512e-01 - <_> - 2.9034227371215820e+01 - - 1 2 960 8.5000000000000000e+00 0 -1 961 1313. -2 -3 962 - 7.5000000000000000e+00 - - 4.1847491264343262e-01 -7.2316378355026245e-01 - 5.3542798757553101e-01 -6.9837749004364014e-02 - <_> - 2.9042299270629883e+01 - - 1 2 963 8.2350000000000000e+02 0 -1 964 - 6.1500000000000000e+01 -2 -3 965 1.0848500000000000e+04 - - -2.7015477418899536e-01 2.4192942678928375e-01 - 9.2728316783905029e-01 -1. - <_> - 2.9266605377197266e+01 - - 1 2 966 3.5500000000000000e+01 0 -1 967 - 1.1500000000000000e+01 -2 -3 968 474. - - 3.2317626476287842e-01 -2.3886755108833313e-01 - -9.2069733142852783e-01 9.9993713200092316e-02 - <_> - 2.9196119308471680e+01 - - 1 2 969 1.5000000000000000e+00 0 -1 970 50. -2 -3 971 - 4.5000000000000000e+00 - - -8.8119459152221680e-01 1.5396067500114441e-01 - 3.5588577389717102e-01 -1.8907056748867035e-01 - <_> - 2.8916269302368164e+01 - - 1 2 972 2.7500000000000000e+01 0 -1 973 78. -2 -3 974 - 1.4750000000000000e+02 - - 9.6468514204025269e-01 -2.7984911203384399e-01 - 5.2942144870758057e-01 -5.4215109348297119e-01 - <_> - 2.9137155532836914e+01 - - 1 2 975 2.3500000000000000e+01 0 -1 976 - 5.7850000000000000e+02 -2 -3 977 2.9250000000000000e+02 - - 2.3396319150924683e-01 -8.4364879131317139e-01 - -3.0435711145401001e-01 3.2314890623092651e-01 - <_> - 2.9115297317504883e+01 - - 1 2 978 5.0000000000000000e-01 0 -1 979 - 3.9550000000000000e+02 -2 -3 980 5.5000000000000000e+00 - - 3.9777445793151855e-01 -7.7888238430023193e-01 - -4.1580772399902344e-01 3.4073171019554138e-01 - <_> - 2.9551794052124023e+01 - - 1 2 981 1.8785000000000000e+03 0 -1 982 - 5.9715000000000000e+03 -2 -3 983 6.4250000000000000e+02 - - -1.2244975566864014e-01 6.9085955619812012e-01 - -5.9161955118179321e-01 2.9289481043815613e-01 - <_> - 2.9916490554809570e+01 - - 1 2 984 3.6500000000000000e+01 0 -1 985 - 5.5000000000000000e+00 -2 -3 986 6.5000000000000000e+00 - - -8.7442290782928467e-01 9.8645307123661041e-02 - 4.4346800446510315e-01 -1.5005703270435333e-01 - <_> - 2.9763261795043945e+01 - - 1 2 987 3.2500000000000000e+01 0 -1 988 - 1.0500000000000000e+01 -2 -3 989 4.6500000000000000e+01 - - -3.8456574082374573e-01 3.4571200609207153e-01 - 5.5213904380798340e-01 -5.1309728622436523e-01 - <_> - 3.0075271606445312e+01 - - 1 2 990 5.5000000000000000e+00 0 -1 991 3216. -2 -3 992 57. - - 3.7469649314880371e-01 -7.7058547735214233e-01 - -6.3845652341842651e-01 4.0090378373861313e-02 - <_> - 3.0020376205444336e+01 - - 1 2 993 6.6650000000000000e+02 0 -1 994 - 1.5000000000000000e+00 -2 -3 995 1.6650000000000000e+02 - - 6.1095565557479858e-01 -6.7465776205062866e-01 - 2.2271032631397247e-01 -8.2703709602355957e-01 - <_> - 2.9878087997436523e+01 - - 1 2 996 5.5000000000000000e+00 0 -1 997 - 1.1500000000000000e+01 -2 -3 998 6.2500000000000000e+01 - - -4.6279782056808472e-01 1.8749718368053436e-01 - 6.7090582847595215e-01 -1.3304303586483002e-01 - <_> - 2.9944360733032227e+01 - - 1 2 999 1.5000000000000000e+00 0 -1 1000 - 2.5000000000000000e+00 -2 -3 1001 2.5000000000000000e+00 - - -1. 4.3671074509620667e-01 6.6273018717765808e-02 - -5.3205168247222900e-01 - <_> - 2.9942871093750000e+01 - - 1 2 1002 5.5000000000000000e+00 0 -1 1003 - 3.7450000000000000e+02 -2 -3 1004 4.5000000000000000e+00 - - 6.1623644828796387e-01 -4.8089489340782166e-01 - 5.9936344623565674e-01 -3.1623546034097672e-02 - <_> - 3.0450216293334961e+01 - - 1 2 1005 7.8750000000000000e+02 0 -1 1006 - 6.7550000000000000e+02 -2 -3 1007 7.0250000000000000e+02 - - -4.9125915765762329e-01 5.5245697498321533e-01 - 5.0734555721282959e-01 -1.7348597943782806e-01 - <_> - 3.0483926773071289e+01 - - 1 2 1008 2.2350000000000000e+02 0 -1 1009 - 5.5000000000000000e+00 -2 -3 1010 2.4500000000000000e+01 - - 5.1597571372985840e-01 -3.2840871810913086e-01 - -4.1519615054130554e-01 3.1820172071456909e-01 - <_> - 3.0558099746704102e+01 - - 1 2 1011 4.8500000000000000e+01 0 -1 1012 - 5.5000000000000000e+00 -2 -3 1013 2.0500000000000000e+01 - - 7.4174232780933380e-02 -6.8477684259414673e-01 - -9.2985051870346069e-01 3.0161842703819275e-01 - <_> - 3.0625425338745117e+01 - - 1 2 1014 1.8500000000000000e+01 0 -1 1015 - 9.3500000000000000e+01 -2 -3 1016 1.4050000000000000e+02 - - -8.1940811872482300e-01 2.9973128437995911e-01 - 7.6479032635688782e-02 -6.5602862834930420e-01 - <_> - 3.0697441101074219e+01 - - 1 2 1017 3.7500000000000000e+01 0 -1 1018 - 2.1500000000000000e+01 -2 -3 1019 5804. - - -4.4756698608398438e-01 2.7423384785652161e-01 - -6.8169790506362915e-01 2.0900464057922363e-01 - <_> - 3.0949892044067383e+01 - - 1 2 1020 5.0000000000000000e-01 0 -1 1021 - 5.5000000000000000e+00 -2 -3 1022 4.5000000000000000e+00 - - -6.4901775121688843e-01 2.5245016813278198e-01 - 2.4039171636104584e-01 -6.1729639768600464e-01 - <_> - 3.0929098129272461e+01 - - 1 2 1023 5.0000000000000000e-01 0 -1 1024 - 6.5000000000000000e+00 -2 -3 1025 1.4500000000000000e+01 - - -3.9928469061851501e-01 5.0110679864883423e-01 - -7.4043375253677368e-01 -4.4123314321041107e-02 - <_> - 3.1333951950073242e+01 - - 1 2 1026 6.5000000000000000e+00 0 -1 1027 - 2.1500000000000000e+01 -2 -3 1028 3.9500000000000000e+01 - - -5.8101430535316467e-02 6.1747199296951294e-01 - 2.6098625734448433e-02 -6.9707942008972168e-01 - <_> - 3.1116010665893555e+01 - - 1 2 1029 2.0150000000000000e+02 0 -1 1030 - 5.0000000000000000e-01 -2 -3 1031 2.8750000000000000e+02 - - 2.9852050542831421e-01 -4.3055999279022217e-01 - 6.7561793327331543e-01 -8.7017469108104706e-02 - <_> - 3.1032897949218750e+01 - - 1 2 1032 8.5000000000000000e+00 0 -1 1033 - 3.5000000000000000e+00 -2 -3 1034 2.3500000000000000e+01 - - -8.2436734437942505e-01 7.9362380504608154e-01 - 3.3129659295082092e-01 -2.2134104371070862e-01 - <_> - 3.0731082916259766e+01 - - 1 2 1035 1.5500000000000000e+01 0 -1 1036 - 1.5000000000000000e+00 -2 -3 1037 2.0500000000000000e+01 - - 5.2363544702529907e-01 -8.2277619838714600e-01 - 3.4363475441932678e-01 -3.0181473493576050e-01 - <_> - 3.1582773208618164e+01 - - 1 2 1038 2.3500000000000000e+01 0 -1 1039 256. -2 -3 1040 - 1245. - - 4.0018074214458466e-02 -5.4246288537979126e-01 - -7.1379941701889038e-01 8.5168963670730591e-01 - <_> - 3.0922315597534180e+01 - - 1 2 1041 1.1500000000000000e+01 0 -1 1042 - 9.7500000000000000e+01 -2 -3 1043 4.2050000000000000e+02 - - 3.3170649409294128e-01 -6.6045612096786499e-01 - -1.4949633181095123e-01 5.1487708091735840e-01 - <_> - 3.0648450851440430e+01 - - 1 2 1044 5.7750000000000000e+02 0 -1 1045 - 5.0000000000000000e-01 -2 -3 1046 3.8250000000000000e+02 - - 4.8874342441558838e-01 -8.4576064348220825e-01 - 6.7698836326599121e-01 -6.0642462223768234e-02 - <_> - 3.0702632904052734e+01 - - 1 2 1047 2.2500000000000000e+01 0 -1 1048 - 1.2950000000000000e+02 -2 -3 1049 3.5650000000000000e+02 - - 5.4180499166250229e-02 -5.0506794452667236e-01 - 7.7279126644134521e-01 -4.4330042600631714e-01 - <_> - 3.1123544692993164e+01 - - 1 2 1050 2.1500000000000000e+01 0 -1 1051 - 1.8500000000000000e+01 -2 -3 1052 5.9500000000000000e+01 - - -3.4420540928840637e-01 5.7321655750274658e-01 - 4.2091187834739685e-01 -6.6199111938476562e-01 - <_> - 3.0851852416992188e+01 - - 1 2 1053 1.5000000000000000e+00 0 -1 1054 - 4.5000000000000000e+00 -2 -3 1055 5.0000000000000000e-01 - - -8.3376497030258179e-01 5.1961439847946167e-01 - 1.9672468304634094e-01 -3.8548988103866577e-01 - <_> - 3.1271551132202148e+01 - - 1 2 1056 5.5000000000000000e+00 0 -1 1057 - 1.5000000000000000e+00 -2 -3 1058 3.2500000000000000e+01 - - 1.9125646352767944e-01 -4.8435854911804199e-01 - 6.1247032880783081e-01 -2.2513453662395477e-01 - <_> - 3.1481870651245117e+01 - - 1 2 1059 2.6500000000000000e+01 0 -1 1060 160. -2 -3 1061 - 1.5000000000000000e+00 - - 5.5120378732681274e-01 -7.5941944122314453e-01 - 4.1089880466461182e-01 -1.3137997686862946e-01 - <_> - 3.1036325454711914e+01 - - 1 2 1062 1.5500000000000000e+01 0 -1 1063 - 1.4500000000000000e+01 -2 -3 1064 2.1500000000000000e+01 - - 3.4304007887840271e-02 -6.1823207139968872e-01 - -2.7733555436134338e-01 6.1952215433120728e-01 - <_> - 3.1423891067504883e+01 - - 1 2 1065 2.5450000000000000e+02 0 -1 1066 - 1.2500000000000000e+01 -2 -3 1067 1.4500000000000000e+01 - - 4.7979310154914856e-01 -9.3194240331649780e-01 - -1.1963248252868652e-01 4.4283005595207214e-01 - <_> - 3.0981994628906250e+01 - - 1 2 1068 4.5000000000000000e+00 0 -1 1069 - 1.5000000000000000e+00 -2 -3 1070 5.0000000000000000e-01 - - -7.1386426687240601e-01 3.3223813772201538e-01 - 5.5634075403213501e-01 -4.5681276917457581e-01 - <_> - 3.1151826858520508e+01 - - 1 2 1071 8.3500000000000000e+01 0 -1 1072 - 6.5000000000000000e+00 -2 -3 1073 32. - - -6.9022941589355469e-01 1.6983160376548767e-01 - -7.8779727220535278e-01 1. - <_> - 3.1287761688232422e+01 - - 1 2 1074 4.2250000000000000e+02 0 -1 1075 - 1.6785000000000000e+03 -2 -3 1076 3.4085000000000000e+03 - - -2.1672263741493225e-01 7.0122992992401123e-01 - -5.5317509174346924e-01 1.3593602180480957e-01 - <_> - 3.1590259552001953e+01 - - 1 2 1077 3.1150000000000000e+02 0 -1 1078 - 1.1500000000000000e+01 -2 -3 1079 1.5000000000000000e+00 - - -4.2860367894172668e-01 3.0249705910682678e-01 - 8.6132842302322388e-01 -5.9583419561386108e-01 - <_> - 3.1790189743041992e+01 - - 1 2 1080 9.3500000000000000e+01 0 -1 1081 - 8.5000000000000000e+00 -2 -3 1082 2.5000000000000000e+00 - - -8.5307538509368896e-01 1.9993139803409576e-01 - 5.2050822973251343e-01 -7.1924048662185669e-01 - <_> - 3.1949237823486328e+01 - - 1 2 1083 1.5000000000000000e+00 0 -1 1084 - 1.8500000000000000e+01 -2 -3 1085 4.7500000000000000e+01 - - -8.7075895071029663e-01 4.1160404682159424e-01 - -4.2329508066177368e-01 3.9578995108604431e-01 - <_> - 3.1551105499267578e+01 - - 1 2 1086 5.0000000000000000e-01 0 -1 1087 - 7.1500000000000000e+01 -2 -3 1088 5.0000000000000000e-01 - - 4.7251659631729126e-01 -6.8467688560485840e-01 - 3.0512693524360657e-01 -3.9813303947448730e-01 - <_> - 3.1931394577026367e+01 - - 1 2 1089 1.9150000000000000e+02 0 -1 1090 - 4.5000000000000000e+00 -2 -3 1091 7.6950000000000000e+02 - - 1.9683115184307098e-01 -5.8899974822998047e-01 - -6.5470945835113525e-01 3.8028964400291443e-01 - <_> - 3.2017967224121094e+01 - - 1 2 1092 7.5000000000000000e+00 0 -1 1093 - 2.8500000000000000e+01 -2 -3 1094 3.7500000000000000e+01 - - 2.7054101228713989e-01 -5.6520724296569824e-01 - -6.2938737869262695e-01 8.6574614048004150e-02 - <_> - 3.2285461425781250e+01 - - 1 2 1095 5.8750000000000000e+02 0 -1 1096 - 5.0000000000000000e-01 -2 -3 1097 1.5500000000000000e+01 - - 1.0511577874422073e-01 -6.9365251064300537e-01 - -6.4478015899658203e-01 2.6749077439308167e-01 - <_> - 3.2811119079589844e+01 - - 1 2 1098 2.1500000000000000e+01 0 -1 1099 - 4.1500000000000000e+01 -2 -3 1100 559. - - -2.0592536032199860e-01 3.7386643886566162e-01 - 7.8755700588226318e-01 -6.8481349945068359e-01 - <_> - 3.2689319610595703e+01 - - 1 2 1101 5.7550000000000000e+02 0 -1 1102 - 3.5000000000000000e+00 -2 -3 1103 9.6500000000000000e+01 - - 3.9178147912025452e-01 -1.2180019915103912e-01 - -9.6077018976211548e-01 -1.4056563377380371e-01 - <_> - 3.2619079589843750e+01 - - 1 2 1104 2.5000000000000000e+00 0 -1 1105 43. -2 -3 1106 - 2.5000000000000000e+00 - - -8.9122837781906128e-01 4.5819079875946045e-01 - 5.5948436260223389e-01 -7.0240341126918793e-02 - <_> - 3.3039958953857422e+01 - - 1 2 1107 2.3955000000000000e+03 0 -1 1108 - 1.2535000000000000e+03 -2 -3 1109 4.0405000000000000e+03 - - 2.9499965906143188e-01 -2.6054748892784119e-01 - 9.8911577463150024e-01 -1. - <_> - 3.3041172027587891e+01 - - 1 2 1110 2.0850000000000000e+02 0 -1 1111 - 2.7500000000000000e+01 -2 -3 1112 4.5000000000000000e+00 - - -6.7137396335601807e-01 1.2141949264332652e-03 - 6.0118967294692993e-01 -2.0657041668891907e-01 - <_> - 3.2776119232177734e+01 - - 1 2 1113 3.5000000000000000e+00 0 -1 1114 - 6.5000000000000000e+00 -2 -3 1115 3.0500000000000000e+01 - - -2.2868818044662476e-01 5.7510751485824585e-01 - -3.6484047770500183e-01 5.1262056827545166e-01 - <_> - 3.2935546875000000e+01 - - 1 2 1116 5.0000000000000000e-01 0 -1 1117 - 2.5000000000000000e+00 -2 -3 1118 5.0000000000000000e-01 - - -7.3760849237442017e-01 4.5924603939056396e-01 - 1.5942642092704773e-01 -4.6601155400276184e-01 - <_> - 3.2656055450439453e+01 - - 1 2 1119 3.3500000000000000e+01 0 -1 1120 - 3.4500000000000000e+01 -2 -3 1121 3.9150000000000000e+02 - - -2.7949050068855286e-01 3.4181603789329529e-01 - 7.1765547990798950e-01 -7.6309484243392944e-01 - <_> - 3.2747634887695312e+01 - - 1 2 1122 2.5000000000000000e+00 0 -1 1123 - 2.5000000000000000e+00 -2 -3 1124 3.5250000000000000e+02 - - -7.4318218231201172e-01 5.3260874748229980e-01 - -5.0913441181182861e-01 9.1580078005790710e-02 - <_> - 3.3188011169433594e+01 - - 1 2 1125 5.6500000000000000e+01 0 -1 1126 - 3.2500000000000000e+01 -2 -3 1127 3.9500000000000000e+01 - - -6.4126682281494141e-01 4.9496468901634216e-01 - -3.9145907759666443e-01 4.4037669897079468e-01 - <_> - 3.3416931152343750e+01 - - 1 2 1128 7.0500000000000000e+01 0 -1 1129 - 1.1500000000000000e+01 -2 -3 1130 9.5000000000000000e+00 - - -3.8201475143432617e-01 2.2891646623611450e-01 - -8.5659736394882202e-01 6.1013686656951904e-01 - <_> - 3.3275886535644531e+01 - - 1 2 1131 4.0500000000000000e+01 0 -1 1132 - 1.9500000000000000e+01 -2 -3 1133 1.3500000000000000e+01 - - 2.6871705055236816e-01 -6.3255614042282104e-01 - 2.3965831100940704e-01 -6.3516211509704590e-01 - <_> - 3.3399391174316406e+01 - - 1 2 1134 5.5000000000000000e+00 0 -1 1135 - 8.5000000000000000e+00 -2 -3 1136 3.0500000000000000e+01 - - -6.6200548410415649e-01 1.5101595222949982e-01 - -7.6606094837188721e-01 2.5947886705398560e-01 - <_> - 3.3559207916259766e+01 - - 1 2 1137 6.5000000000000000e+00 0 -1 1138 - 8.2500000000000000e+01 -2 -3 1139 1.6500000000000000e+01 - - 7.6681274175643921e-01 -6.3294899463653564e-01 - -5.5192285776138306e-01 2.3842744529247284e-02 - <_> - 3.3856239318847656e+01 - - 1 2 1140 1.0500000000000000e+01 0 -1 1141 - 1.7350000000000000e+02 -2 -3 1142 2.7550000000000000e+02 - - 2.9703170061111450e-01 -5.5057585239410400e-01 - -6.4888852834701538e-01 1.1229314655065536e-01 - <_> - 3.3721168518066406e+01 - - 1 2 1143 3.5000000000000000e+00 0 -1 1144 126. -2 -3 1145 - 2.5000000000000000e+00 - - 9.2471975088119507e-01 -7.2330892086029053e-01 - 3.9742922782897949e-01 -1.3506934046745300e-01 - <_> - 3.4096935272216797e+01 - - 1 2 1146 2.3500000000000000e+01 0 -1 1147 - 1.9500000000000000e+01 -2 -3 1148 6.6500000000000000e+01 - - -5.5066823959350586e-01 3.2355815172195435e-01 - 3.7576669454574585e-01 -2.6415929198265076e-01 - <_> - 3.4108264923095703e+01 - - 1 2 1149 1.5000000000000000e+00 0 -1 1150 - 6.5000000000000000e+00 -2 -3 1151 5.0500000000000000e+01 - - -9.7412526607513428e-01 5.2388346195220947e-01 - -4.9519532918930054e-01 1.9004400074481964e-01 - <_> - 3.3904502868652344e+01 - - 1 2 1152 7.7250000000000000e+02 0 -1 1153 77. -2 -3 1154 - 4.8350000000000000e+02 - - -6.9026130437850952e-01 8.2613104581832886e-01 - 6.4011102914810181e-01 -8.1689134240150452e-02 - <_> - 3.4277988433837891e+01 - - 1 2 1155 5.0000000000000000e-01 0 -1 1156 - 7.3150000000000000e+02 -2 -3 1157 5.0000000000000000e-01 - - 4.5011767745018005e-01 -2.4998305737972260e-01 - 8.2632339000701904e-01 -4.2073485255241394e-01 - <_> - 3.4078739166259766e+01 - - 1 2 1158 2.0950000000000000e+02 0 -1 1159 - 1.6755000000000000e+03 -2 -3 1160 6.1815000000000000e+03 - - -2.7588048577308655e-01 9.5124208927154541e-01 - 6.4596521854400635e-01 -3.6611458659172058e-01 - <_> - 3.4438789367675781e+01 - - 1 2 1161 1.5500000000000000e+01 0 -1 1162 - 2.1500000000000000e+01 -2 -3 1163 4.4500000000000000e+01 - - -3.0783519148826599e-01 3.6005032062530518e-01 - 4.5609518885612488e-01 -6.2639898061752319e-01 - <_> - 3.4638523101806641e+01 - - 1 2 1164 3.1500000000000000e+01 0 -1 1165 - 7.5000000000000000e+00 -2 -3 1166 3.2350000000000000e+02 - - -9.4682770967483521e-01 1.9973398745059967e-01 - -6.2348783016204834e-01 6.9902861118316650e-01 - <_> - 3.4201782226562500e+01 - - 1 2 1167 7.5000000000000000e+00 0 -1 1168 - 1.5000000000000000e+00 -2 -3 1169 1.2500000000000000e+01 - - 3.3168455958366394e-01 -4.3674397468566895e-01 - -6.4757126569747925e-01 2.0459994673728943e-01 - <_> - 3.4516929626464844e+01 - - 1 2 1170 1.6500000000000000e+01 0 -1 1171 - 5.0000000000000000e-01 -2 -3 1172 675. - - 2.3890937864780426e-01 -5.7110768556594849e-01 - 3.1514799594879150e-01 -1. - <_> - 3.4619071960449219e+01 - - 1 2 1173 8.6500000000000000e+01 0 -1 1174 - 4.5000000000000000e+00 -2 -3 1175 1.7500000000000000e+01 - - 7.6261973381042480e-01 -8.6133646965026855e-01 -1. - 1.0214501619338989e-01 - <_> - 3.4869640350341797e+01 - - 1 2 1176 5.0000000000000000e-01 0 -1 1177 - 1.2315000000000000e+03 -2 -3 1178 5.0000000000000000e-01 - - 3.7597665190696716e-01 -6.9864195585250854e-01 - 2.0625047385692596e-01 -4.8068267107009888e-01 - <_> - 3.5086204528808594e+01 - - 1 2 1179 1.6500000000000000e+01 0 -1 1180 - 8.3500000000000000e+01 -2 -3 1181 7.5000000000000000e+00 - - 1.4784654974937439e-01 -8.3145272731781006e-01 - -6.7620545625686646e-01 2.1656262874603271e-01 - <_> - 3.4877140045166016e+01 - - 1 2 1182 5.0000000000000000e-01 0 -1 1183 - 3.5000000000000000e+00 -2 -3 1184 969. - - -6.4537084102630615e-01 2.7460998296737671e-01 - -5.3607624769210815e-01 2.8266566991806030e-01 - <_> - 3.5179489135742188e+01 - - 1 2 1185 1.5000000000000000e+00 0 -1 1186 - 7.2500000000000000e+01 -2 -3 1187 3.1500000000000000e+01 - - 9.7988271713256836e-01 -5.9574514627456665e-01 - -1.8132425844669342e-01 5.5573570728302002e-01 - <_> - 3.5144893646240234e+01 - - 1 2 1188 5.0000000000000000e-01 0 -1 1189 - 2.6500000000000000e+01 -2 -3 1190 8.1650000000000000e+02 - - -4.2640584707260132e-01 5.2214205265045166e-01 - 8.3740442991256714e-01 -2.8797909617424011e-01 - <_> - 3.5558689117431641e+01 - - 1 2 1191 5.0000000000000000e-01 0 -1 1192 - 2.6500000000000000e+01 -2 -3 1193 1.2500000000000000e+01 - - -4.3793568015098572e-01 4.1379487514495850e-01 - 1.8940502405166626e-01 -5.4046261310577393e-01 - <_> - 3.5233970642089844e+01 - - 1 2 1194 4.7500000000000000e+01 0 -1 1195 - 8.5000000000000000e+00 -2 -3 1196 338. - - 1.5260761976242065e-01 -4.2628118395805359e-01 - 5.9790462255477905e-01 -5.5013555288314819e-01 - <_> - 3.5332725524902344e+01 - - 1 2 1197 5.0000000000000000e-01 0 -1 1198 - 3.6500000000000000e+01 -2 -3 1199 1.7500000000000000e+01 - - -6.2585823237895966e-02 6.3506704568862915e-01 - -3.5257333517074585e-01 5.9659516811370850e-01 - <_> - 3.5257114410400391e+01 - - 1 2 1200 3.5000000000000000e+00 0 -1 1201 - 7.5000000000000000e+00 -2 -3 1202 1.8500000000000000e+01 - - -9.3612766265869141e-01 3.4692686796188354e-01 - 5.0016778707504272e-01 -7.5611986219882965e-02 - <_> - 3.5595767974853516e+01 - - 1 2 1203 1.0500000000000000e+01 0 -1 1204 - 1.8500000000000000e+01 -2 -3 1205 1.5000000000000000e+00 - - -9.5243799686431885e-01 7.0761454105377197e-01 - 3.3865371346473694e-01 -1.8447074294090271e-01 - <_> - 3.5873832702636719e+01 - - 1 2 1206 1.6350000000000000e+02 0 -1 1207 - 9.1500000000000000e+01 -2 -3 1208 19. - - -1.3119605183601379e-01 4.0907257795333862e-01 - -8.4312802553176880e-01 9.1352003812789917e-01 - <_> - 3.6231769561767578e+01 - - 1 2 1209 4.5000000000000000e+00 0 -1 1210 - 1.5000000000000000e+00 -2 -3 1211 2.0500000000000000e+01 - - -4.6025198698043823e-01 3.4153524041175842e-01 - -5.0537836551666260e-01 3.5793614387512207e-01 - <_> - 3.6177539825439453e+01 - - 1 2 1212 1.5500000000000000e+01 0 -1 1213 - 4.5000000000000000e+00 -2 -3 1214 5.8650000000000000e+02 - - -3.4014788269996643e-01 3.7431231141090393e-01 - -8.9153337478637695e-01 -8.3685964345932007e-02 - <_> - 3.5921119689941406e+01 - - 1 2 1215 5.0000000000000000e-01 0 -1 1216 - 8.5500000000000000e+01 -2 -3 1217 3.3350000000000000e+02 - - 7.2648537158966064e-01 -8.4184181690216064e-01 - -2.5641769170761108e-01 5.9225118160247803e-01 - <_> - 3.5762935638427734e+01 - - 1 2 1218 5.0695000000000000e+03 0 -1 1219 - 4.1865000000000000e+03 -2 -3 1220 1.8500000000000000e+01 - - -1.5818408131599426e-01 7.5127458572387695e-01 - -4.1771730780601501e-01 1.6759181022644043e-01 - <_> - 3.6343830108642578e+01 - - 1 2 1221 5.5000000000000000e+00 0 -1 1222 161. -2 -3 1223 - 5.5000000000000000e+00 - - -7.1770183742046356e-02 -8.2580149173736572e-01 - 6.3310110569000244e-01 -1.1210992932319641e-02 - <_> - 3.6239753723144531e+01 - - 1 2 1224 2.9500000000000000e+01 0 -1 1225 - 2.2500000000000000e+01 -2 -3 1226 2.5000000000000000e+00 - - -5.7685142755508423e-01 5.9265869855880737e-01 - 5.8708161115646362e-01 -1.0407686233520508e-01 - <_> - 3.6570693969726562e+01 - - 1 2 1227 2.6050000000000000e+02 0 -1 1228 - 5.1500000000000000e+01 -2 -3 1229 194. - - -1.3848701119422913e-01 3.8530793786048889e-01 - -9.9199587106704712e-01 7.3519229888916016e-01 - <_> - 3.6172859191894531e+01 - - 1 2 1230 4.5000000000000000e+00 0 -1 1231 2985. -2 -3 1232 - 4.1050000000000000e+02 - - 7.0713436603546143e-01 -7.4149054288864136e-01 - -3.9783236384391785e-01 1.8219061195850372e-01 - <_> - 3.6474601745605469e+01 - - 1 2 1233 7.2850000000000000e+02 0 -1 1234 - 1.0500000000000000e+01 -2 -3 1235 9.5000000000000000e+00 - - -8.5275667905807495e-01 3.0174070596694946e-01 - 5.2034640312194824e-01 -4.9349766969680786e-01 - <_> - 3.6498180389404297e+01 - - 1 2 1236 4.8500000000000000e+01 0 -1 1237 - 9.5000000000000000e+00 -2 -3 1238 4.5000000000000000e+00 - - 7.8738486766815186e-01 -7.6111316680908203e-01 - 5.0128465890884399e-01 -1.1157950758934021e-01 - <_> - 3.6698276519775391e+01 - - 1 2 1239 2.8850000000000000e+02 0 -1 1240 - 2.0500000000000000e+01 -2 -3 1241 1.2805000000000000e+03 - - -4.7094190120697021e-01 2.0009694993495941e-01 1. - -9.3752562999725342e-01 - <_> - 3.6857143402099609e+01 - - 1 2 1242 3.5000000000000000e+00 0 -1 1243 2854. -2 -3 1244 - 5.0000000000000000e-01 - - 4.4445955753326416e-01 -6.2877982854843140e-01 - 2.8415599465370178e-01 -4.0654498338699341e-01 - <_> - 3.6661224365234375e+01 - - 1 2 1245 6.3850000000000000e+02 0 -1 1246 - 1.3500000000000000e+01 -2 -3 1247 2.5000000000000000e+00 - - -2.8753396868705750e-01 4.5057922601699829e-01 - -9.3399870395660400e-01 6.8900948762893677e-01 - <_> - 3.7027565002441406e+01 - - 1 2 1248 1.1500000000000000e+01 0 -1 1249 - 3.5000000000000000e+00 -2 -3 1250 482. - - -8.2890731096267700e-01 3.8032263517379761e-01 - -6.3736891746520996e-01 2.2181304171681404e-02 - <_> - 3.7302738189697266e+01 - - 1 2 1251 1.5000000000000000e+00 0 -1 1252 - 6.5000000000000000e+00 -2 -3 1253 2.1500000000000000e+01 - - -8.7263113260269165e-01 2.7517196536064148e-01 - -6.8864667415618896e-01 -1.0606539435684681e-02 - <_> - 3.7514694213867188e+01 - - 1 2 1254 5.0000000000000000e-01 0 -1 1255 - 1.6555000000000000e+03 -2 -3 1256 2.5500000000000000e+01 - - 5.4653161764144897e-01 -3.8731038570404053e-01 - -2.6684281229972839e-01 5.9316390752792358e-01 - <_> - 3.7565513610839844e+01 - - 1 2 1257 5.7450000000000000e+02 0 -1 1258 - 2.9450000000000000e+02 -2 -3 1259 3.4500000000000000e+01 - - -7.9943376779556274e-01 1. 3.4340542554855347e-01 - -2.2570419311523438e-01 - <_> - 3.7413349151611328e+01 - - 1 2 1260 189. 0 -1 1261 5.0000000000000000e-01 -2 -3 1262 - 2.0500000000000000e+01 - - 7.8168439865112305e-01 -8.3374607563018799e-01 - -1.9817931950092316e-01 3.6079603433609009e-01 - <_> - 3.7554840087890625e+01 - - 1 2 1263 298. 0 -1 1264 3022. -2 -3 1265 - 1.9350000000000000e+02 - - -1.1193416081368923e-02 8.7101829051971436e-01 - 2.1728983521461487e-01 -4.2951995134353638e-01 - <_> - 3.7603076934814453e+01 - - 1 2 1266 1.1500000000000000e+01 0 -1 1267 - 2.5000000000000000e+00 -2 -3 1268 1.0050000000000000e+02 - - 1.7867322266101837e-01 -4.2928701639175415e-01 - 5.2659392356872559e-01 -6.2002837657928467e-01 - <_> - 3.7885494232177734e+01 - - 1 2 1269 1.4500000000000000e+01 0 -1 1270 - 2.5000000000000000e+00 -2 -3 1271 8.0500000000000000e+01 - - 1.8106105923652649e-01 -7.7528846263885498e-01 - -5.8309614658355713e-01 2.8241708874702454e-01 - <_> - 3.7499431610107422e+01 - - 1 2 1272 3.5500000000000000e+01 0 -1 1273 - 2.5000000000000000e+00 -2 -3 1274 7.5000000000000000e+00 - - -9.1437792778015137e-01 5.1539105176925659e-01 - -3.8606551289558411e-01 3.3163914084434509e-01 - <_> - 3.7937980651855469e+01 - - 1 2 1275 1.3500000000000000e+01 0 -1 1276 - 1.4500000000000000e+01 -2 -3 1277 7.9500000000000000e+01 - - -7.2145909070968628e-02 6.0647141933441162e-01 - -6.2856364250183105e-01 8.6137987673282623e-02 - <_> - 3.8185783386230469e+01 - - 1 2 1278 1.4500000000000000e+01 0 -1 1279 73. -2 -3 1280 - 1.0500000000000000e+01 - - -9.4152975082397461e-01 1. 2.4780233204364777e-01 - -4.0907081961631775e-01 - <_> - 3.7849395751953125e+01 - - 1 2 1281 5.0000000000000000e-01 0 -1 1282 - 4.5000000000000000e+00 -2 -3 1283 5.0000000000000000e-01 - - -5.0824928283691406e-01 5.6237548589706421e-01 - 5.4402673244476318e-01 -3.3638605475425720e-01 - <_> - 3.8386943817138672e+01 - - 1 2 1284 2.0450000000000000e+02 0 -1 1285 - 6.7250000000000000e+02 -2 -3 1286 1.2385000000000000e+03 - - 3.9266860485076904e-01 -3.8152101635932922e-01 - 5.9661215543746948e-01 -3.8554838299751282e-01 - <_> - 3.8467891693115234e+01 - - 1 2 1287 5.5000000000000000e+00 0 -1 1288 - 9.0500000000000000e+01 -2 -3 1289 1.5000000000000000e+00 - - 2.1883549168705940e-02 -6.2764549255371094e-01 - 7.0444834232330322e-01 -4.4701110571622849e-02 - <_> - 3.8550418853759766e+01 - - 1 2 1290 2.8350000000000000e+02 0 -1 1291 - 1.4500000000000000e+01 -2 -3 1292 58. - - -8.5395231842994690e-02 5.9592086076736450e-01 - 9.0824156999588013e-01 -8.9943450689315796e-01 - <_> - 3.8631130218505859e+01 - - 1 2 1293 2.5000000000000000e+00 0 -1 1294 - 9.5000000000000000e+00 -2 -3 1295 5.5000000000000000e+00 - - -3.6073815822601318e-01 5.3091663122177124e-01 - 1.6989825665950775e-01 -4.6344351768493652e-01 - <_> - 3.8474849700927734e+01 - - 1 2 1296 5.7750000000000000e+02 0 -1 1297 - 1.9250000000000000e+02 -2 -3 1298 2.6195000000000000e+03 - - -8.1247472763061523e-01 2.9322347044944763e-01 - 3.5261180996894836e-01 -2.4546836316585541e-01 - <_> - 3.8279983520507812e+01 - - 1 2 1299 4.4500000000000000e+01 0 -1 1300 1096. -2 -3 1301 - 5.0000000000000000e-01 - - 6.6110774874687195e-02 -7.6391810178756714e-01 - 5.6174814701080322e-01 -7.3350854218006134e-02 - <_> - 3.8626735687255859e+01 - - 1 2 1302 3.4350000000000000e+02 0 -1 1303 - 5.0000000000000000e-01 -2 -3 1304 7.1750000000000000e+02 - - 3.5977458953857422e-01 -2.1690338850021362e-01 - 9.9256932735443115e-01 -1. - <_> - 3.8572544097900391e+01 - - 1 2 1305 1.1500000000000000e+01 0 -1 1306 - 1.2500000000000000e+01 -2 -3 1307 5.0000000000000000e-01 - - -9.2809075117111206e-01 8.5182946920394897e-01 - 4.9062111973762512e-01 -5.4192960262298584e-02 - <_> - 3.8948635101318359e+01 - - 1 2 1308 4.2550000000000000e+02 0 -1 1309 - 7.6500000000000000e+01 -2 -3 1310 8986. - - -4.5830437541007996e-01 1.6672098636627197e-01 - 7.7317571640014648e-01 -2.2485339641571045e-01 - <_> - 3.9342456817626953e+01 - - 1 2 1311 6.9500000000000000e+01 0 -1 1312 - 3.5500000000000000e+01 -2 -3 1313 1.0545000000000000e+03 - - -1.2714000418782234e-02 6.2372517585754395e-01 - -5.7864826917648315e-01 5.6230723857879639e-01 - <_> - 3.9216064453125000e+01 - - 1 2 1314 5.2750000000000000e+02 0 -1 1315 - 1.9048500000000000e+04 -2 -3 1316 4.5000000000000000e+00 - - -1. 7.7397161722183228e-01 1.6222594678401947e-01 - -3.9657172560691833e-01 - <_> - 3.9446334838867188e+01 - - 1 2 1317 3.5000000000000000e+00 0 -1 1318 - 6.3500000000000000e+01 -2 -3 1319 288. - - 3.8338693976402283e-01 -9.0452802181243896e-01 - -5.4537796974182129e-01 2.3026967048645020e-01 - <_> - 3.9339183807373047e+01 - - 1 2 1320 1.1500000000000000e+01 0 -1 1321 - 5.0000000000000000e-01 -2 -3 1322 3472. - - 3.7719848752021790e-01 -2.7750793099403381e-01 - -7.6843172311782837e-01 3.3132901880890131e-03 - <_> - 3.9513347625732422e+01 - - 1 2 1323 2.1500000000000000e+01 0 -1 1324 - 4.5000000000000000e+00 -2 -3 1325 1.1500000000000000e+01 - - 1.7416687309741974e-01 -4.6917149424552917e-01 - 5.5244189500808716e-01 -4.0332382917404175e-01 - <_> - 3.9441356658935547e+01 - - 1 2 1326 2.5500000000000000e+01 0 -1 1327 - 5.0000000000000000e-01 -2 -3 1328 4.5000000000000000e+00 - - 1.5569829940795898e-01 -8.3738613128662109e-01 - 5.1308917999267578e-01 -9.2380218207836151e-02 - <_> - 3.9830265045166016e+01 - - 1 2 1329 6.8500000000000000e+01 0 -1 1330 - 1.2500000000000000e+01 -2 -3 1331 2043. - - -1.6650912165641785e-01 3.8890799880027771e-01 - -8.0130118131637573e-01 8.2459330558776855e-01 - <_> - 3.9304054260253906e+01 - - 1 2 1332 5.0000000000000000e-01 0 -1 1333 3671. -2 -3 1334 - 3.8850000000000000e+02 - - 4.6532985568046570e-01 -4.4042190909385681e-01 - -5.5587589740753174e-01 1.3195018470287323e-01 - <_> - 3.9642890930175781e+01 - - 1 2 1335 8.5000000000000000e+00 0 -1 1336 - 2.1500000000000000e+01 -2 -3 1337 4.7350000000000000e+02 - - -5.9328550100326538e-01 3.3883699774742126e-01 - -6.9553929567337036e-01 1.5794724225997925e-01 - <_> - 3.9908969879150391e+01 - - 1 2 1338 5.5000000000000000e+00 0 -1 1339 - 1.3500000000000000e+01 -2 -3 1340 1.7500000000000000e+01 - - -6.7269146442413330e-01 2.6607844233512878e-01 - 6.0325987637042999e-02 -6.9073736667633057e-01 - <_> - 3.9898288726806641e+01 - - 1 2 1341 2.5950000000000000e+02 0 -1 1342 - 1.5500000000000000e+01 -2 -3 1343 1467. - - -7.4252463877201080e-02 6.0873824357986450e-01 - 8.6466276645660400e-01 -9.0673094987869263e-01 - <_> - 4.0200969696044922e+01 - - 1 2 1344 2.2500000000000000e+01 0 -1 1345 - 2.5000000000000000e+00 -2 -3 1346 9.5000000000000000e+00 - - -6.9203126430511475e-01 3.0267745256423950e-01 - 5.9105551242828369e-01 -5.3770178556442261e-01 - <_> - 4.0379238128662109e+01 - - 1 2 1347 2.9500000000000000e+01 0 -1 1348 - 8.3450000000000000e+02 -2 -3 1349 2.5000000000000000e+00 - - 3.7345203757286072e-01 -8.9355528354644775e-01 - 5.5846959352493286e-01 -5.8389563113451004e-02 - <_> - 4.0466419219970703e+01 - - 1 2 1350 3.1150000000000000e+02 0 -1 1351 - 5.0000000000000000e-01 -2 -3 1352 43. - - 3.1653991341590881e-01 -4.0619984269142151e-01 - -9.6266198158264160e-01 5.1727998256683350e-01 - <_> - 4.0718650817871094e+01 - - 1 2 1353 2.6150000000000000e+02 0 -1 1354 98. -2 -3 1355 - 8.5000000000000000e+00 - - -5.2089494466781616e-01 2.5222977995872498e-01 - -6.5091305971145630e-01 5.5701977014541626e-01 - <_> - 4.0246669769287109e+01 - - 1 2 1356 5.0000000000000000e-01 0 -1 1357 - 7.5000000000000000e+00 -2 -3 1358 2.0850000000000000e+02 - - -7.2299337387084961e-01 5.0567185878753662e-01 - -4.7197958827018738e-01 2.6619127392768860e-01 - <_> - 4.0419990539550781e+01 - - 1 2 1359 5.4705000000000000e+03 0 -1 1360 - 5.4750000000000000e+02 -2 -3 1361 1.5750000000000000e+02 - - 1.7332153022289276e-01 -6.0361874103546143e-01 - -9.6441686153411865e-01 1. - <_> - 4.1056423187255859e+01 - - 1 2 1362 5.0000000000000000e-01 0 -1 1363 - 3.5000000000000000e+00 -2 -3 1364 7.8350000000000000e+02 - - 6.3643354177474976e-01 -8.3072267472743988e-02 - -3.8505536317825317e-01 5.1825720071792603e-01 - <_> - 4.0787433624267578e+01 - - 1 2 1365 8.5000000000000000e+00 0 -1 1366 - 4.1250000000000000e+02 -2 -3 1367 3.0850000000000000e+02 - - -2.2618213668465614e-02 -7.3404783010482788e-01 - 5.4074966907501221e-01 -6.5069526433944702e-01 - <_> - 4.0980438232421875e+01 - - 1 2 1368 1.0750000000000000e+02 0 -1 1369 - 4.5500000000000000e+01 -2 -3 1370 1.5500000000000000e+01 - - 2.9288902878761292e-01 -7.8175473213195801e-01 - 4.1299736499786377e-01 -2.0014704763889313e-01 - <_> - 4.0946659088134766e+01 - - 1 2 1371 2.2500000000000000e+01 0 -1 1372 - 1.6500000000000000e+01 -2 -3 1373 2.5000000000000000e+00 - - -6.0043293237686157e-01 2.2489283978939056e-01 - 5.3942525386810303e-01 -1.2392763793468475e-01 - <_> - 4.0625984191894531e+01 - - 1 2 1374 5.8450000000000000e+02 0 -1 1375 3981. -2 -3 1376 - 3.8850000000000000e+02 - - -6.5919399261474609e-01 7.3984676599502563e-01 - 6.0902094841003418e-01 -5.9394266456365585e-02 - <_> - 4.1078342437744141e+01 - - 1 2 1377 1.5000000000000000e+00 0 -1 1378 - 9.5000000000000000e+00 -2 -3 1379 2.5000000000000000e+00 - - -9.4205194711685181e-01 5.8499878644943237e-01 - 4.5235899090766907e-01 -1.7015253007411957e-01 - <_> - 4.1278953552246094e+01 - - 1 2 1380 2.7950000000000000e+02 0 -1 1381 - 2.7950000000000000e+02 -2 -3 1382 7572. - - -1.0575494915246964e-01 7.5965499877929688e-01 - -5.6243377923965454e-01 1.3653093576431274e-01 - <_> - 4.1171962738037109e+01 - - 1 2 1383 5.5000000000000000e+00 0 -1 1384 - 8.6950000000000000e+02 -2 -3 1385 3.5000000000000000e+00 - - 3.1256729364395142e-01 -4.9650138616561890e-01 - 5.3703850507736206e-01 -1.0799391567707062e-01 - <_> - 4.1153244018554688e+01 - - 1 2 1386 1.5000000000000000e+00 0 -1 1387 - 8.5000000000000000e+00 -2 -3 1388 1.4500000000000000e+01 - - -1.8950442969799042e-01 5.2447348833084106e-01 - -4.3827834725379944e-01 3.5529047250747681e-01 - <_> - 4.1464454650878906e+01 - - 1 2 1389 2.7500000000000000e+01 0 -1 1390 - 3.1500000000000000e+01 -2 -3 1391 4.5000000000000000e+00 - - -3.4287273883819580e-01 3.1121128797531128e-01 - 2.0723707973957062e-01 -7.9717916250228882e-01 - <_> - 4.1779788970947266e+01 - - 1 2 1392 1.5000000000000000e+00 0 -1 1393 - 1.8265000000000000e+03 -2 -3 1394 2.8650000000000000e+02 - - 8.0022591352462769e-01 -2.8835564851760864e-01 - 3.1533339619636536e-01 -3.5018000006675720e-01 - <_> - 4.2194210052490234e+01 - - 1 2 1395 2.2500000000000000e+01 0 -1 1396 - 2.2500000000000000e+01 -2 -3 1397 7.5000000000000000e+00 - - 7.3232901096343994e-01 -7.3244142532348633e-01 - 3.6955040693283081e-01 -2.0323853194713593e-01 - <_> - 4.1935131072998047e+01 - - 1 2 1398 9.4500000000000000e+01 0 -1 1399 - 4.0500000000000000e+01 -2 -3 1400 2.2500000000000000e+01 - - 1.9609075784683228e-01 -4.6288254857063293e-01 - 6.2146210670471191e-01 -3.8049280643463135e-01 - <_> - 4.2215938568115234e+01 - - 1 2 1401 2.9500000000000000e+01 0 -1 1402 - 5.0000000000000000e-01 -2 -3 1403 1.0500000000000000e+01 - - 3.9385579526424408e-02 -7.3405563831329346e-01 - -5.1055783033370972e-01 2.8080457448959351e-01 - <_> - 4.2273452758789062e+01 - - 1 2 1404 4.5450000000000000e+02 0 -1 1405 - 5.8750000000000000e+02 -2 -3 1406 9.5000000000000000e+00 - - -3.3196282386779785e-01 2.5219461321830750e-01 - 7.2692161798477173e-01 -8.5374397039413452e-01 - <_> - 4.2540458679199219e+01 - - 1 2 1407 1.5000000000000000e+00 0 -1 1408 - 1.0500000000000000e+01 -2 -3 1409 3.7950000000000000e+02 - - -5.1572650671005249e-01 2.6700666546821594e-01 - 5.4633575677871704e-01 -6.4842927455902100e-01 - <_> - 4.2285171508789062e+01 - - 1 2 1410 4.5000000000000000e+00 0 -1 1411 - 4.8500000000000000e+01 -2 -3 1412 1.1500000000000000e+01 - - -4.3229374289512634e-01 5.2580875158309937e-01 - -3.8174706697463989e-01 6.1482822895050049e-01 - <_> - 4.2519309997558594e+01 - - 1 2 1413 1.2500000000000000e+01 0 -1 1414 - 7.5000000000000000e+00 -2 -3 1415 3.7500000000000000e+01 - - -6.5897458791732788e-01 2.3413842916488647e-01 - -6.6297173500061035e-01 9.3680036067962646e-01 - <_> - 4.2602912902832031e+01 - - 1 2 1416 2.7850000000000000e+02 0 -1 1417 - 6.7750000000000000e+02 -2 -3 1418 6.5750000000000000e+02 - - -5.7975625991821289e-01 6.0615879297256470e-01 - -4.7606697678565979e-01 1.9234745204448700e-01 - <_> - 4.2477813720703125e+01 - - 1 2 1419 3.5000000000000000e+00 0 -1 1420 - 5.0000000000000000e-01 -2 -3 1421 9.6750000000000000e+02 - - -1. 5.3890687227249146e-01 -2.7986538410186768e-01 - 5.5624389648437500e-01 - <_> - 4.2815971374511719e+01 - - 1 2 1422 2.5000000000000000e+00 0 -1 1423 3470. -2 -3 1424 - 1.3150000000000000e+02 - - 3.3815622329711914e-01 -6.8323451280593872e-01 - -5.7661479711532593e-01 1.8929332494735718e-01 - <_> - 4.2939407348632812e+01 - - 1 2 1425 1835. 0 -1 1426 1485. -2 -3 1427 - 5.0000000000000000e-01 - - -9.3249452114105225e-01 8.5018444061279297e-01 - 1.2343621253967285e-01 -4.1629931330680847e-01 - <_> - 4.2931537628173828e+01 - - 1 2 1428 6.5000000000000000e+00 0 -1 1429 - 9.5000000000000000e+00 -2 -3 1430 8.3500000000000000e+01 - - -5.8253604173660278e-01 2.3116320371627808e-01 - 4.4566446542739868e-01 -2.5381112098693848e-01 - <_> - 4.2532341003417969e+01 - - 1 2 1431 801. 0 -1 1432 1.4500000000000000e+01 -2 -3 1433 - 2.2500000000000000e+01 - - 2.3233406245708466e-01 -8.8682103157043457e-01 - 2.7638220787048340e-01 -3.9919924736022949e-01 - <_> - 4.2818271636962891e+01 - - 1 2 1434 3.3500000000000000e+01 0 -1 1435 - 5.0000000000000000e-01 -2 -3 1436 5.5000000000000000e+00 - - 2.6199400424957275e-01 -7.7381122112274170e-01 - 3.9374157786369324e-01 -1.9156071543693542e-01 - <_> - 4.3225166320800781e+01 - - 1 2 1437 3.0650000000000000e+02 0 -1 1438 - 3.5000000000000000e+00 -2 -3 1439 2.2750000000000000e+02 - - 1.6485489904880524e-01 -5.3608208894729614e-01 - 4.0689289569854736e-01 -6.9017094373703003e-01 - <_> - 4.3414455413818359e+01 - - 1 2 1440 4.9500000000000000e+01 0 -1 1441 - 3.2550000000000000e+02 -2 -3 1442 7.5500000000000000e+01 - - -7.2704082727432251e-01 9.2259776592254639e-01 - 1.8928927183151245e-01 -7.1190369129180908e-01 - <_> - 4.3530220031738281e+01 - - 1 2 1443 8.5000000000000000e+00 0 -1 1444 - 5.5000000000000000e+00 -2 -3 1445 33. - - -2.6097178459167480e-01 3.5981386899948120e-01 - 5.5373930931091309e-01 -5.9446001052856445e-01 - <_> - 4.3589599609375000e+01 - - 1 2 1446 1.7500000000000000e+01 0 -1 1447 - 1.5000000000000000e+00 -2 -3 1448 7.1500000000000000e+01 - - -8.9150971174240112e-01 4.0421536564826965e-01 - -5.9817147254943848e-01 1.3356564939022064e-01 - <_> - 4.3756496429443359e+01 - - 1 2 1449 2.7150000000000000e+02 0 -1 1450 - 3.1500000000000000e+01 -2 -3 1451 7.5000000000000000e+00 - - -7.5597035884857178e-01 7.5368809700012207e-01 - 2.0741133391857147e-01 -3.4641715884208679e-01 - <_> - 4.4184627532958984e+01 - - 1 2 1452 3.4445000000000000e+03 0 -1 1453 - 1.3500000000000000e+01 -2 -3 1454 7.5000000000000000e+00 - - -3.4672267735004425e-02 6.4763146638870239e-01 - -5.8406358957290649e-01 9.5271444320678711e-01 - <_> - 4.4115615844726562e+01 - - 1 2 1455 351. 0 -1 1456 5.5000000000000000e+00 -2 -3 1457 - 1.3150000000000000e+02 - - 1. -9.0385907888412476e-01 5.6236469745635986e-01 - -6.9008864462375641e-02 - <_> - 4.3778049468994141e+01 - - 1 2 1458 2.1950000000000000e+02 0 -1 1459 - 1.7500000000000000e+01 -2 -3 1460 1446. - - 1.1805868148803711e-01 -4.6155539155006409e-01 - 8.1571227312088013e-01 -4.5998147130012512e-01 - <_> - 4.3705924987792969e+01 - - 1 2 1461 5.4500000000000000e+01 0 -1 1462 - 5.0000000000000000e-01 -2 -3 1463 2.0500000000000000e+01 - - 1.5270361304283142e-01 -7.6259005069732666e-01 - -4.3407937884330750e-01 3.2683727145195007e-01 - <_> - 4.3761566162109375e+01 - - 1 2 1464 1.5000000000000000e+00 0 -1 1465 - 2.5000000000000000e+00 -2 -3 1466 2.5000000000000000e+00 - - -4.2883574962615967e-01 4.9130806326866150e-01 - 7.2157061100006104e-01 -3.4332326054573059e-01 - <_> - 4.4159553527832031e+01 - - 1 2 1467 1.8850000000000000e+02 0 -1 1468 - 4.4500000000000000e+01 -2 -3 1469 1.6865000000000000e+03 - - -1.2656107544898987e-01 3.9798957109451294e-01 - -8.5940158367156982e-01 7.5859928131103516e-01 - <_> - 4.4086994171142578e+01 - - 1 2 1470 3.5000000000000000e+00 0 -1 1471 - 1.6500000000000000e+01 -2 -3 1472 2.0500000000000000e+01 - - -7.1025812625885010e-01 3.1149634718894958e-01 - 4.1715073585510254e-01 -5.0822889804840088e-01 - <_> - 4.4548297882080078e+01 - - 1 2 1473 5.0000000000000000e-01 0 -1 1474 - 6.3500000000000000e+01 -2 -3 1475 1.4450000000000000e+02 - - -1.9292996823787689e-01 5.2084052562713623e-01 - -1.8266052007675171e-02 -7.4490708112716675e-01 - <_> - 4.4444839477539062e+01 - - 1 2 1476 5.5000000000000000e+00 0 -1 1477 - 1.8500000000000000e+01 -2 -3 1478 2.1500000000000000e+01 - - -5.8617092669010162e-02 5.7820588350296021e-01 - -4.1243070363998413e-01 6.0866367816925049e-01 - <_> - 4.4468860626220703e+01 - - 1 2 1479 4.5000000000000000e+00 0 -1 1480 - 2.3450000000000000e+02 -2 -3 1481 1.4500000000000000e+01 - - 2.8463301062583923e-01 -8.2563692331314087e-01 - -5.8707511425018311e-01 2.5017964839935303e-01 - <_> - 4.4571441650390625e+01 - - 1 2 1482 3.3450000000000000e+02 0 -1 1483 - 2.1500000000000000e+01 -2 -3 1484 946. - - -4.3612629175186157e-01 1.0257755219936371e-01 - 9.7813111543655396e-01 -8.0724465847015381e-01 - <_> - 4.4642127990722656e+01 - - 1 2 1485 1.5000000000000000e+00 0 -1 1486 - 8.5000000000000000e+00 -2 -3 1487 2.0500000000000000e+01 - - -9.3800437450408936e-01 6.0421532392501831e-01 - -6.4370167255401611e-01 2.7616502717137337e-02 - <_> - 4.4928077697753906e+01 - - 1 2 1488 5.0000000000000000e-01 0 -1 1489 - 2.6500000000000000e+01 -2 -3 1490 7.9250000000000000e+02 - - -6.6210180521011353e-02 6.4315652847290039e-01 - 6.9847983121871948e-01 -3.6571246385574341e-01 - <_> - 4.4592266082763672e+01 - - 1 2 1491 5.0000000000000000e-01 0 -1 1492 - 5.5350000000000000e+02 -2 -3 1493 1.5000000000000000e+00 - - -3.8149592280387878e-01 6.3860899209976196e-01 - 3.4885448217391968e-01 -3.3581241965293884e-01 - <_> - 4.4829784393310547e+01 - - 1 2 1494 1.5500000000000000e+01 0 -1 1495 - 2.7850000000000000e+02 -2 -3 1496 3.5000000000000000e+00 - - 6.8045026063919067e-01 -8.0610173940658569e-01 - -5.2162581682205200e-01 2.3751950263977051e-01 - <_> - 4.5090461730957031e+01 - - 1 2 1497 2.3500000000000000e+01 0 -1 1498 - 5.5000000000000000e+00 -2 -3 1499 1.3500000000000000e+01 - - -1.3596580922603607e-01 4.8954018950462341e-01 - -5.6967926025390625e-01 3.6096325516700745e-01 - <_> - 4.5232925415039062e+01 - - 1 2 1500 2154. 0 -1 1501 2.7550000000000000e+02 -2 -3 1502 - 128. - - 1.4246465265750885e-01 -8.8002961874008179e-01 1. - -9.7181195020675659e-01 - <_> - 4.5529132843017578e+01 - - 1 2 1503 5.8750000000000000e+02 0 -1 1504 3981. -2 -3 1505 - 5.0000000000000000e-01 - - -5.8577227592468262e-01 5.8029693365097046e-01 - 4.0880706906318665e-01 -2.0956511795520782e-01 - <_> - 4.5304393768310547e+01 - - 1 2 1506 1.6785000000000000e+03 0 -1 1507 - 4.2005000000000000e+03 -2 -3 1508 359. - - 2.9394268989562988e-02 8.0651479959487915e-01 - -3.3733904361724854e-01 6.9124865531921387e-01 - <_> - 4.5737625122070312e+01 - - 1 2 1509 2.7500000000000000e+01 0 -1 1510 - 5.0000000000000000e-01 -2 -3 1511 2.5000000000000000e+00 - - 2.7190417051315308e-01 -6.8398970365524292e-01 - 5.1673895120620728e-01 -5.9552457183599472e-02 - <_> - 4.5805149078369141e+01 - - 1 2 1512 5.6550000000000000e+02 0 -1 1513 - 1.1500000000000000e+01 -2 -3 1514 1.3500000000000000e+01 - - -5.3953158855438232e-01 4.1888201236724854e-01 - -7.7625131607055664e-01 -1.5986794605851173e-02 - <_> - 4.5724216461181641e+01 - - 1 2 1515 1.0500000000000000e+01 0 -1 1516 - 5.5000000000000000e+00 -2 -3 1517 25. - - 4.2757162451744080e-01 -2.2005110979080200e-01 - -5.4273819923400879e-01 8.9083051681518555e-01 - <_> - 4.5885368347167969e+01 - - 1 2 1518 238. 0 -1 1519 9.5000000000000000e+00 -2 -3 1520 - 2.0850000000000000e+02 - - -9.5597231388092041e-01 5.2587646245956421e-01 - 1.6115142405033112e-01 -7.6278209686279297e-01 - <_> - 4.5789482116699219e+01 - - 1 2 1521 2.9500000000000000e+01 0 -1 1522 - 2.6500000000000000e+01 -2 -3 1523 1.5450000000000000e+02 - - 1.6601219773292542e-01 -7.7067446708679199e-01 - -6.6907399892807007e-01 2.2051426768302917e-01 - <_> - 4.5806617736816406e+01 - - 1 2 1524 4.5000000000000000e+00 0 -1 1525 - 1.1500000000000000e+01 -2 -3 1526 3.5000000000000000e+00 - - -5.7005125284194946e-01 2.7322229743003845e-01 - 7.9801094532012939e-01 -5.2006053924560547e-01 - <_> - 4.6323131561279297e+01 - - 1 2 1527 1.3500000000000000e+01 0 -1 1528 - 3.4500000000000000e+01 -2 -3 1529 3.5000000000000000e+00 - - -5.5972643196582794e-02 5.1800715923309326e-01 - 3.3099360764026642e-02 -9.6488022804260254e-01 - <_> - 4.6282222747802734e+01 - - 1 2 1530 7.7250000000000000e+02 0 -1 1531 - 1.3500000000000000e+01 -2 -3 1532 1.1545000000000000e+03 - - -1.0771922767162323e-02 -8.7211072444915771e-01 - 7.0063769817352295e-01 -4.2402658611536026e-02 - <_> - 4.6205421447753906e+01 - - 1 2 1533 1.5000000000000000e+00 0 -1 1534 - 1.1500000000000000e+01 -2 -3 1535 1.5500000000000000e+01 - - -7.8480374813079834e-01 4.9849182367324829e-01 - 2.8026169538497925e-01 -3.8838988542556763e-01 - <_> - 4.6704681396484375e+01 - - 1 2 1536 2.5650000000000000e+02 0 -1 1537 - 9.5000000000000000e+00 -2 -3 1538 3.6145000000000000e+03 - - 8.8258177042007446e-01 -1. -6.1924713850021362e-01 - 6.9299057126045227e-02 - <_> - 4.6858192443847656e+01 - - 1 2 1539 1.6500000000000000e+01 0 -1 1540 - 2.1950000000000000e+02 -2 -3 1541 5.0000000000000000e-01 - - 3.5154920816421509e-01 -7.6912820339202881e-01 - 4.3404066562652588e-01 -1.0876829922199249e-01 - <_> - 4.6701599121093750e+01 - - 1 2 1542 3.5000000000000000e+00 0 -1 1543 - 4.1500000000000000e+01 -2 -3 1544 4.5000000000000000e+00 - - -8.0593466758728027e-01 6.3903629779815674e-01 - 4.0837219357490540e-01 -1.5659359097480774e-01 - <_> - 4.6904064178466797e+01 - - 1 2 1545 2.9500000000000000e+01 0 -1 1546 - 1.5000000000000000e+00 -2 -3 1547 219. - - -4.2634201049804688e-01 2.0246233046054840e-01 - -8.5641664266586304e-01 1. - <_> - 4.6656322479248047e+01 - - 1 2 1548 6.5000000000000000e+00 0 -1 1549 - 3.2500000000000000e+01 -2 -3 1550 4.1650000000000000e+02 - - -2.4700936675071716e-01 6.6941606998443604e-01 - 3.2602754235267639e-01 -3.6878246068954468e-01 - <_> - 4.6564968109130859e+01 - - 1 2 1551 1.2450000000000000e+02 0 -1 1552 - 5.5000000000000000e+00 -2 -3 1553 2.4150000000000000e+02 - - 4.5446833968162537e-01 -3.7261262536048889e-01 - 4.6772354841232300e-01 -7.1237772703170776e-01 - <_> - 4.6805198669433594e+01 - - 1 2 1554 4.5000000000000000e+00 0 -1 1555 - 7.3500000000000000e+01 -2 -3 1556 1.9500000000000000e+01 - - 2.4023169279098511e-01 -4.3494370579719543e-01 - -8.5679495334625244e-01 5.3150933980941772e-01 - <_> - 4.6938976287841797e+01 - - 1 2 1557 2.0850000000000000e+02 0 -1 1558 - 1.5000000000000000e+00 -2 -3 1559 4.5000000000000000e+00 - - 1.3377590477466583e-01 -4.7894757986068726e-01 - -7.4763888120651245e-01 4.7673630714416504e-01 - <_> - 4.7246456146240234e+01 - - 1 2 1560 2.5000000000000000e+00 0 -1 1561 6. -2 -3 1562 - 1.5000000000000000e+00 - - -9.0447050333023071e-01 8.6583727598190308e-01 - 3.0747944116592407e-01 -2.1712197363376617e-01 - <_> - 4.7012886047363281e+01 - - 1 2 1563 1.0500000000000000e+01 0 -1 1564 - 2.5000000000000000e+00 -2 -3 1565 2.4500000000000000e+01 - - -8.6812806129455566e-01 7.4207389354705811e-01 - -4.6920669078826904e-01 2.0873917639255524e-01 - <_> - 4.7398384094238281e+01 - - 1 2 1566 5.0000000000000000e-01 0 -1 1567 - 4.1500000000000000e+01 -2 -3 1568 1.2365000000000000e+03 - - -2.2475609183311462e-01 5.0746756792068481e-01 - -5.6809660047292709e-02 -7.4659413099288940e-01 - <_> - 4.7630195617675781e+01 - - 1 2 1569 7.5000000000000000e+00 0 -1 1570 - 4.5500000000000000e+01 -2 -3 1571 27. - - 2.3181208968162537e-01 -6.4988273382186890e-01 - -6.4328664541244507e-01 6.1851358413696289e-01 - <_> - 4.7380603790283203e+01 - - 1 2 1572 5.5000000000000000e+00 0 -1 1573 - 2.5000000000000000e+00 -2 -3 1574 1.8650000000000000e+02 - - 6.1403033323585987e-03 -5.5332463979721069e-01 - 4.5167797803878784e-01 -7.4148744344711304e-01 - <_> - 4.7716838836669922e+01 - - 1 2 1575 5.0500000000000000e+01 0 -1 1576 340. -2 -3 1577 - 1.5000000000000000e+00 - - 4.3912079930305481e-01 -7.3454135656356812e-01 - 6.4382767677307129e-01 -1.5953628346323967e-02 - <_> - 4.7556518554687500e+01 - - 1 2 1578 8.4500000000000000e+01 0 -1 1579 311. -2 -3 1580 - 5.0000000000000000e-01 - - 8.0123282968997955e-02 -7.0855069160461426e-01 - 4.7582688927650452e-01 -1.6031953692436218e-01 - <_> - 4.7572052001953125e+01 - - 1 2 1581 4.1250000000000000e+02 0 -1 1582 - 2.5000000000000000e+00 -2 -3 1583 1.0405000000000000e+03 - - 5.3272254765033722e-02 -6.1080712080001831e-01 - 5.7476472854614258e-01 -3.3661961555480957e-01 - <_> - 4.7565738677978516e+01 - - 1 2 1584 8.1450000000000000e+02 0 -1 1585 - 5.7750000000000000e+02 -2 -3 1586 8.5000000000000000e+00 - - 8.0671536922454834e-01 -4.1966786980628967e-01 - 1.6598591208457947e-01 -3.8562926650047302e-01 - <_> - 4.7773296356201172e+01 - - 1 2 1587 1.5000000000000000e+00 0 -1 1588 1174. -2 -3 1589 - 3.9500000000000000e+01 - - 1. -9.7881591320037842e-01 2.0755772292613983e-01 - -5.1666331291198730e-01 - <_> - 4.8310127258300781e+01 - - 1 2 1590 1.9500000000000000e+01 0 -1 1591 - 5.0000000000000000e-01 -2 -3 1592 3.5000000000000000e+00 - - 7.0349156856536865e-01 -7.1407133340835571e-01 - 5.4187601804733276e-01 -9.5178633928298950e-02 - <_> - 4.8071701049804688e+01 - - 1 2 1593 801. 0 -1 1594 8.5000000000000000e+00 -2 -3 1595 - 8.5000000000000000e+00 - - -2.3842808604240417e-01 4.0528839826583862e-01 - 8.4955078363418579e-01 -9.1280186176300049e-01 - <_> - 4.8208892822265625e+01 - - 1 2 1596 6.5000000000000000e+00 0 -1 1597 - 4.1500000000000000e+01 -2 -3 1598 1.8500000000000000e+01 - - -9.3895512819290161e-01 3.3225542306900024e-01 - -5.6959801912307739e-01 1.9758279621601105e-01 - <_> - 4.8468334197998047e+01 - - 1 2 1599 644. 0 -1 1600 3.1500000000000000e+01 -2 -3 1601 - 2.5500000000000000e+01 - - 4.6466782689094543e-01 -7.2437942028045654e-01 - 2.5944426655769348e-01 -5.1669490337371826e-01 - <_> - 4.8280807495117188e+01 - - 1 2 1602 5.8750000000000000e+02 0 -1 1603 998. -2 -3 1604 - 1.9450000000000000e+02 - - -5.6361049413681030e-01 8.2740515470504761e-01 - 7.3864108324050903e-01 -3.1339693814516068e-02 - <_> - 4.8574962615966797e+01 - - 1 2 1605 2.3450000000000000e+02 0 -1 1606 - 1.5000000000000000e+00 -2 -3 1607 1.4050000000000000e+02 - - 3.6085158586502075e-01 -1.9539615511894226e-01 - -9.4802927970886230e-01 2.6839014887809753e-01 - <_> - 4.8454341888427734e+01 - - 1 2 1608 3.9500000000000000e+01 0 -1 1609 - 5.0000000000000000e-01 -2 -3 1610 1.6650000000000000e+02 - - 1.0862217843532562e-01 -5.7014846801757812e-01 - 3.1803789734840393e-01 -8.6990028619766235e-01 - <_> - 4.8686836242675781e+01 - - 1 2 1611 7.5000000000000000e+00 0 -1 1612 - 4.4500000000000000e+01 -2 -3 1613 5.0000000000000000e-01 - - 4.4552764296531677e-01 -9.6768623590469360e-01 - 3.7845483422279358e-01 -2.0616437494754791e-01 - <_> - 4.8645317077636719e+01 - - 1 2 1614 2.1500000000000000e+01 0 -1 1615 - 5.7500000000000000e+01 -2 -3 1616 9.2500000000000000e+01 - - 2.0209166407585144e-01 -3.7205338478088379e-01 - 6.6951900720596313e-01 -9.7072052955627441e-01 - <_> - 4.8846817016601562e+01 - - 1 2 1617 1.8500000000000000e+01 0 -1 1618 - 1.9500000000000000e+01 -2 -3 1619 2.7500000000000000e+01 - - -9.0423774719238281e-01 4.2085230350494385e-01 - 2.0150278508663177e-01 -6.7301428318023682e-01 - <_> - 4.8628437042236328e+01 - - 1 2 1620 291. 0 -1 1621 6.5000000000000000e+00 -2 -3 1622 - 1.1500000000000000e+01 - - 2.5333371758460999e-01 -9.6325629949569702e-01 - -6.0980123281478882e-01 1.4127761125564575e-01 - <_> - 4.8402679443359375e+01 - - 1 2 1623 2.1050000000000000e+02 0 -1 1624 - 6.5000000000000000e+00 -2 -3 1625 3.2500000000000000e+01 - - 3.4403830766677856e-02 -5.8541810512542725e-01 - -6.9637399911880493e-01 4.9845540523529053e-01 - <_> - 4.8841716766357422e+01 - - 1 2 1626 7.5000000000000000e+00 0 -1 1627 - 4.9500000000000000e+01 -2 -3 1628 1.1500000000000000e+01 - - 4.3903854489326477e-01 -6.2086170911788940e-01 - -6.5002232789993286e-01 -1.5730377286672592e-02 - <_> - 4.9389339447021484e+01 - - 1 2 1629 80. 0 -1 1630 3.5000000000000000e+00 -2 -3 1631 - 1.0255000000000000e+03 - - 3.1859183311462402e-01 -4.2584937810897827e-01 - -8.9118802547454834e-01 5.4762154817581177e-01 - <_> - 4.8809658050537109e+01 - - 1 2 1632 5.0000000000000000e-01 0 -1 1633 - 9.1500000000000000e+01 -2 -3 1634 1.5500000000000000e+01 - - -2.0882329344749451e-01 5.9099739789962769e-01 - 3.5995401442050934e-02 -5.7967907190322876e-01 - <_> - 4.9262874603271484e+01 - - 1 2 1635 2.3500000000000000e+01 0 -1 1636 2138. -2 -3 1637 - 7.4500000000000000e+01 - - 2.5881242752075195e-01 -6.5358424186706543e-01 - -4.4690254330635071e-01 4.5321631431579590e-01 - <_> - 4.9810745239257812e+01 - - 1 2 1638 2.8905000000000000e+03 0 -1 1639 - 1.4034500000000000e+04 -2 -3 1640 5.0000000000000000e-01 - - 5.9278053045272827e-01 -9.4314843416213989e-01 - 3.9468899369239807e-01 -2.7942237257957458e-01 - <_> - 4.9740810394287109e+01 - - 1 2 1641 5.0000000000000000e-01 0 -1 1642 13. -2 -3 1643 - 6.4500000000000000e+01 - - -9.7298115491867065e-01 7.5200670957565308e-01 - 1.9612585008144379e-01 -5.2234607934951782e-01 - <_> - 4.9890090942382812e+01 - - 1 2 1644 7.5000000000000000e+00 0 -1 1645 - 8.5000000000000000e+00 -2 -3 1646 381. - - -5.6059420108795166e-01 5.0415074825286865e-01 - 4.8369589447975159e-01 -3.1803038716316223e-01 - <_> - 4.9964401245117188e+01 - - 1 2 1647 5.0000000000000000e-01 0 -1 1648 - 6.5000000000000000e+00 -2 -3 1649 1.5500000000000000e+01 - - -9.7737157344818115e-01 5.3311198949813843e-01 - -4.1340222954750061e-01 2.4446828663349152e-01 - <_> - 5.0132915496826172e+01 - - 1 2 1650 1.0500000000000000e+01 0 -1 1651 - 9.5000000000000000e+00 -2 -3 1652 182. - - -2.6112908124923706e-01 4.9358665943145752e-01 - 6.2064582109451294e-01 -4.5646050572395325e-01 - <_> - 5.0014610290527344e+01 - - 1 2 1653 6.5000000000000000e+00 0 -1 1654 2329. -2 -3 1655 - 6.6350000000000000e+02 - - 4.0677326917648315e-01 -7.2954016923904419e-01 - -5.2711308002471924e-01 2.2369565069675446e-01 - <_> - 5.0282009124755859e+01 - - 1 2 1656 1513. 0 -1 1657 6.6500000000000000e+01 -2 -3 1658 - 2.0125000000000000e+03 - - -9.2653149366378784e-01 5.6927061080932617e-01 - 6.3748288154602051e-01 -6.0769841074943542e-02 - <_> - 5.0116958618164062e+01 - - 1 2 1659 1.4500000000000000e+01 0 -1 1660 - 3.5000000000000000e+00 -2 -3 1661 1.6500000000000000e+01 - - -8.6243766546249390e-01 8.8660824298858643e-01 - 4.5358371734619141e-01 -1.6504985094070435e-01 - <_> - 5.0264678955078125e+01 - - 1 2 1662 1.1500000000000000e+01 0 -1 1663 - 4.5000000000000000e+00 -2 -3 1664 4.3500000000000000e+01 - - -8.9545702934265137e-01 1. 2.3749004304409027e-01 - -4.1009184718132019e-01 - <_> - 5.0537300109863281e+01 - - 1 2 1665 6.5000000000000000e+00 0 -1 1666 - 1.1500000000000000e+01 -2 -3 1667 4.8500000000000000e+01 - - 1.8909458816051483e-01 -6.9768869876861572e-01 - -3.7118515372276306e-01 2.7262043952941895e-01 - <_> - 5.0127769470214844e+01 - - 1 2 1668 2.5000000000000000e+00 0 -1 1669 49. -2 -3 1670 - 1.5000000000000000e+00 - - -7.0132219791412354e-01 4.8064956068992615e-01 - 2.1170513331890106e-01 -4.0953138470649719e-01 - <_> - 5.0477714538574219e+01 - - 1 2 1671 2.5000000000000000e+00 0 -1 1672 - 1.5650000000000000e+02 -2 -3 1673 1.1995000000000000e+03 - - 3.4994655847549438e-01 -7.3900407552719116e-01 - -6.3774943351745605e-01 -4.0900995954871178e-03 - <_> - 5.0603004455566406e+01 - - 1 2 1674 2.7950000000000000e+02 0 -1 1675 8514. -2 -3 1676 - 4.0500000000000000e+01 - - 9.1369850561022758e-03 8.2339012622833252e-01 - -5.2016735076904297e-01 1.2528854608535767e-01 - <_> - 5.0545921325683594e+01 - - 1 2 1677 3.5000000000000000e+00 0 -1 1678 - 3.9500000000000000e+01 -2 -3 1679 1.6500000000000000e+01 - - -1.4933063089847565e-01 4.4103890657424927e-01 - -5.4845666885375977e-01 3.5070386528968811e-01 - <_> - 5.0866680145263672e+01 - - 1 2 1680 5.1950000000000000e+02 0 -1 1681 - 1.2150000000000000e+02 -2 -3 1682 1.5000000000000000e+00 - - -1.7503215372562408e-01 3.2076016068458557e-01 - 5.0803476572036743e-01 -9.5718288421630859e-01 - <_> - 5.0898628234863281e+01 - - 1 2 1683 5.0000000000000000e-01 0 -1 1684 - 6.5000000000000000e+00 -2 -3 1685 1.5500000000000000e+01 - - -8.3207756280899048e-01 7.2688364982604980e-01 - 8.6272723972797394e-02 -4.6617463231086731e-01 - <_> - 5.0805313110351562e+01 - - 1 2 1686 5.7750000000000000e+02 0 -1 1687 - 6.5000000000000000e+00 -2 -3 1688 1.3950000000000000e+02 - - -8.3755981922149658e-01 5.7054156064987183e-01 - 4.9337804317474365e-01 -9.3315914273262024e-02 - <_> - 5.0919166564941406e+01 - - 1 2 1689 1.5095000000000000e+03 0 -1 1690 - 7.5000000000000000e+00 -2 -3 1691 6720. - - 2.1196880936622620e-01 -3.8356184959411621e-01 - 5.3207170963287354e-01 -7.4764668941497803e-01 - <_> - 5.0936717987060547e+01 - - 1 2 1692 4.0500000000000000e+01 0 -1 1693 - 1.5000000000000000e+00 -2 -3 1694 5.0000000000000000e-01 - - -3.7224005907773972e-02 -8.9793884754180908e-01 - 7.6496970653533936e-01 1.7551671713590622e-02 - <_> - 5.1368896484375000e+01 - - 1 2 1695 2.5550000000000000e+02 0 -1 1696 1484. -2 -3 1697 - 7.5000000000000000e+00 - - -1. 9.0734022855758667e-01 -2.2103266417980194e-01 - 4.3218004703521729e-01 - <_> - 5.1568653106689453e+01 - - 1 2 1698 8.1615000000000000e+03 0 -1 1699 - 5.0000000000000000e-01 -2 -3 1700 28. - - -9.8341357707977295e-01 1.9975320994853973e-01 - -1.2860924005508423e-01 -9.3606525659561157e-01 - <_> - 5.1350795745849609e+01 - - 1 2 1701 5.0000000000000000e-01 0 -1 1702 - 1.8500000000000000e+01 -2 -3 1703 3.5000000000000000e+00 - - -7.4128049612045288e-01 3.7650343775749207e-01 - 3.4844925999641418e-01 -4.2916879057884216e-01 - <_> - 5.1636371612548828e+01 - - 1 2 1704 3.5000000000000000e+00 0 -1 1705 32. -2 -3 1706 - 1.5000000000000000e+00 - - 1. -9.1778641939163208e-01 -3.0592209100723267e-01 - 2.8557664155960083e-01 - <_> - 5.2074638366699219e+01 - - 1 2 1707 4.5000000000000000e+00 0 -1 1708 - 2.5500000000000000e+01 -2 -3 1709 5.5000000000000000e+00 - - -1.7822149395942688e-01 4.3826532363891602e-01 - -5.1980108022689819e-01 4.8558112978935242e-01 - <_> - 5.1970214843750000e+01 - - 1 2 1710 5.9500000000000000e+01 0 -1 1711 - 1.0500000000000000e+01 -2 -3 1712 544. - - 3.5063171386718750e-01 -3.3192864060401917e-01 - -6.3897025585174561e-01 2.3550751805305481e-01 - <_> - 5.2024555206298828e+01 - - 1 2 1713 4.5000000000000000e+00 0 -1 1714 - 1.3950000000000000e+02 -2 -3 1715 1.5000000000000000e+00 - - 2.8414461016654968e-01 -5.8255207538604736e-01 - -6.8949204683303833e-01 3.0280160903930664e-01 - <_> - 5.1652011871337891e+01 - - 1 2 1716 1.5000000000000000e+00 0 -1 1717 - 1.0500000000000000e+01 -2 -3 1718 2.5000000000000000e+00 - - -6.4423668384552002e-01 7.1819794178009033e-01 - 1.2163987010717392e-01 -4.3241024017333984e-01 - <_> - 5.2231746673583984e+01 - - 1 2 1719 2.1550000000000000e+02 0 -1 1720 - 5.0000000000000000e-01 -2 -3 1721 1966. - - 1.3263493776321411e-01 -4.2725384235382080e-01 - 8.6758172512054443e-01 -2.6626121997833252e-01 - <_> - 5.2511852264404297e+01 - - 1 2 1722 5.3450000000000000e+02 0 -1 1723 - 1.1500000000000000e+01 -2 -3 1724 4.5000000000000000e+00 - - 2.5023856759071350e-01 -8.6206442117691040e-01 - -4.7992885112762451e-01 2.8010553121566772e-01 - <_> - 5.2546646118164062e+01 - - 1 2 1725 1.2500000000000000e+01 0 -1 1726 - 3.2500000000000000e+01 -2 -3 1727 5.8895000000000000e+03 - - -1.0283301770687103e-01 5.0622606277465820e-01 - 3.4796718508005142e-02 -7.5529223680496216e-01 - <_> - 5.2223571777343750e+01 - - 1 2 1728 5.0000000000000000e-01 0 -1 1729 - 5.8550000000000000e+02 -2 -3 1730 2.0500000000000000e+01 - - -3.2307562232017517e-01 4.2715775966644287e-01 - 5.5647647380828857e-01 -4.0453824400901794e-01 - <_> - 5.2863487243652344e+01 - - 1 2 1731 3.3595000000000000e+03 0 -1 1732 - 1.6685000000000000e+03 -2 -3 1733 7.5000000000000000e+00 - - -1.1682216823101044e-01 7.5274443626403809e-01 - -3.0044618248939514e-01 7.6707494258880615e-01 - <_> - 5.3050804138183594e+01 - - 1 2 1734 1.5000000000000000e+00 0 -1 1735 - 1.5500000000000000e+01 -2 -3 1736 1.5000000000000000e+00 - - 6.9346052408218384e-01 -9.0690630674362183e-01 - -9.2264664173126221e-01 1.8731895089149475e-01 - <_> - 5.3262607574462891e+01 - - 1 2 1737 5.0000000000000000e-01 0 -1 1738 - 3.5000000000000000e+00 -2 -3 1739 3.3550000000000000e+02 - - -3.2821202278137207e-01 5.9129446744918823e-01 - -5.1578968763351440e-01 9.9953614175319672e-02 - <_> - 5.3258419036865234e+01 - - 1 2 1740 1.9500000000000000e+01 0 -1 1741 - 1.2500000000000000e+01 -2 -3 1742 1.5000000000000000e+00 - - 3.8119539618492126e-01 -1.9959560036659241e-01 - 6.4132863283157349e-01 -7.4302184581756592e-01 - <_> - 5.3413326263427734e+01 - - 1 2 1743 7.6500000000000000e+01 0 -1 1744 - 5.8750000000000000e+02 -2 -3 1745 5.5000000000000000e+00 - - -7.1226209402084351e-01 1.5490560233592987e-01 - -9.5072907209396362e-01 1. - <_> - 5.3368370056152344e+01 - - 1 2 1746 1.4355000000000000e+03 0 -1 1747 - 2.5293500000000000e+04 -2 -3 1748 3.5000000000000000e+00 - - -4.4957466423511505e-02 7.0797920227050781e-01 - 2.4098557233810425e-01 -5.3875494003295898e-01 - <_> - 5.3336959838867188e+01 - - 1 2 1749 2.5500000000000000e+01 0 -1 1750 - 2.0500000000000000e+01 -2 -3 1751 2.7375000000000000e+03 - - -7.6909404993057251e-01 -4.0910251438617706e-02 - -8.7062567472457886e-02 6.8476140499114990e-01 - <_> - 5.3268756866455078e+01 - - 1 2 1752 3.7500000000000000e+01 0 -1 1753 2449. -2 -3 1754 - 3.4085000000000000e+03 - - 2.9082170128822327e-01 -3.9411529898643494e-01 - 6.2446767091751099e-01 -7.7681422233581543e-01 - <_> - 5.3295890808105469e+01 - - 1 2 1755 1.5500000000000000e+01 0 -1 1756 - 1.5000000000000000e+00 -2 -3 1757 6.3500000000000000e+01 - - 2.3223483562469482e-01 -3.3189105987548828e-01 - 8.2484543323516846e-01 -1. - <_> - 5.3821460723876953e+01 - - 1 2 1758 7.5000000000000000e+00 0 -1 1759 32. -2 -3 1760 - 3.5000000000000000e+00 - - 7.7407427132129669e-02 -9.0338480472564697e-01 - 5.2557128667831421e-01 -8.5458166897296906e-02 - <_> - 5.3644256591796875e+01 - - 1 2 1761 2.3500000000000000e+01 0 -1 1762 - 1.7500000000000000e+01 -2 -3 1763 5.5500000000000000e+01 - - 1.9049738347530365e-01 -6.4127218723297119e-01 - -5.8284378051757812e-01 3.6358082294464111e-01 - <_> - 5.3565219879150391e+01 - - 1 2 1764 5.0000000000000000e-01 0 -1 1765 - 5.5000000000000000e+00 -2 -3 1766 6.2650000000000000e+02 - - -9.1313230991363525e-01 3.1892377138137817e-01 - -5.0848573446273804e-01 4.0014332532882690e-01 - <_> - 5.3612766265869141e+01 - - 1 2 1767 2.7500000000000000e+01 0 -1 1768 - 1.1850000000000000e+02 -2 -3 1769 6.5000000000000000e+00 - - -1.1785164475440979e-01 4.6228489279747009e-01 - 8.3617496490478516e-01 -7.2740668058395386e-01 - <_> - 5.3733577728271484e+01 - - 1 2 1770 1.3500000000000000e+01 0 -1 1771 - 6.5000000000000000e+00 -2 -3 1772 1.3500000000000000e+01 - - -4.3037781119346619e-01 4.0931895375251770e-01 - -8.7283575534820557e-01 -1.1174897849559784e-01 - <_> - 5.3474098205566406e+01 - - 1 2 1773 2.2500000000000000e+01 0 -1 1774 - 1.5000000000000000e+00 -2 -3 1775 6.8500000000000000e+01 - - -4.9783071875572205e-01 3.2450476288795471e-01 - -5.4798841476440430e-01 4.3143227696418762e-01 - <_> - 5.3782051086425781e+01 - - 1 2 1776 7.5000000000000000e+00 0 -1 1777 - 7.5000000000000000e+00 -2 -3 1778 5.8850000000000000e+02 - - 3.0795454978942871e-01 -4.3086576461791992e-01 - 2.5671597104519606e-03 -7.0709168910980225e-01 - <_> - 5.4081798553466797e+01 - - 1 2 1779 4.1250000000000000e+02 0 -1 1780 2532. -2 -3 1781 - 4.2500000000000000e+01 - - 1.1845014244318008e-01 -4.8000225424766541e-01 - -7.1575754880905151e-01 4.8367628455162048e-01 - <_> - 5.3729518890380859e+01 - - 1 2 1782 4.5000000000000000e+00 0 -1 1783 - 4.0500000000000000e+01 -2 -3 1784 5.0000000000000000e-01 - - -6.5016943216323853e-01 4.5923739671707153e-01 - 7.4234819412231445e-01 -3.5227757692337036e-01 - <_> - 5.3706134796142578e+01 - - 1 2 1785 1.7500000000000000e+01 0 -1 1786 - 2.0500000000000000e+01 -2 -3 1787 35. - - -2.3385923355817795e-02 5.5982124805450439e-01 - -7.7798545360565186e-01 5.9317058324813843e-01 - <_> - 5.4069709777832031e+01 - - 1 2 1788 3.0650000000000000e+02 0 -1 1789 - 6.7500000000000000e+01 -2 -3 1790 1.5000000000000000e+00 - - -2.0442806184291840e-01 3.6357563734054565e-01 - 4.3344959616661072e-01 -7.8407233953475952e-01 - <_> - 5.4122543334960938e+01 - - 1 2 1791 6.9550000000000000e+02 0 -1 1792 - 2.0150000000000000e+02 -2 -3 1793 1.5500000000000000e+01 - - -2.8922367095947266e-01 4.2674824595451355e-01 - -6.8660050630569458e-01 5.2831500768661499e-02 - <_> - 5.4034683227539062e+01 - - 1 2 1794 5.0000000000000000e-01 0 -1 1795 - 5.9715000000000000e+03 -2 -3 1796 4.5000000000000000e+00 - - -5.2834486961364746e-01 4.5531541109085083e-01 - 1.1746359616518021e-01 -4.9576222896575928e-01 - <_> - 5.4980464935302734e+01 - - 1 2 1797 1.3500000000000000e+01 0 -1 1798 - 2.9450000000000000e+02 -2 -3 1799 7.5000000000000000e+00 - - -3.2881252467632294e-02 -9.8305457830429077e-01 - 9.4577944278717041e-01 -1. - <_> - 5.5089954376220703e+01 - - 1 2 1800 2.5000000000000000e+00 0 -1 1801 39. -2 -3 1802 - 9.4950000000000000e+02 - - -1. 1. 1.6094356775283813e-01 -5.4309475421905518e-01 - <_> - 5.5099483489990234e+01 - - 1 2 1803 5.7850000000000000e+02 0 -1 1804 - 4.2500000000000000e+01 -2 -3 1805 5.7750000000000000e+02 - - -7.0962339639663696e-01 1. 7.6542943716049194e-01 - -4.1924782097339630e-02 - <_> - 5.4866825103759766e+01 - - 1 2 1806 1328. 0 -1 1807 1.5000000000000000e+00 -2 -3 1808 - 5.5285000000000000e+03 - - 3.6924600601196289e-01 -2.3265689611434937e-01 - 9.9105215072631836e-01 -8.4446805715560913e-01 - <_> - 5.5432411193847656e+01 - - 1 2 1809 2.5500000000000000e+01 0 -1 1810 - 1.1500000000000000e+01 -2 -3 1811 7.4350000000000000e+02 - - -3.2548126578330994e-01 2.2827453911304474e-01 - 7.1661698818206787e-01 -1. - <_> - 5.5408927917480469e+01 - - 1 2 1812 5.0000000000000000e-01 0 -1 1813 - 3.5000000000000000e+00 -2 -3 1814 2.4500000000000000e+01 - - -7.4099457263946533e-01 3.7504613399505615e-01 - -6.2640714645385742e-01 8.4968566894531250e-02 - <_> - 5.5198207855224609e+01 - - 1 2 1815 1.5000000000000000e+00 0 -1 1816 - 6.5000000000000000e+00 -2 -3 1817 2.2500000000000000e+01 - - -1. 6.4012116193771362e-01 -2.1071846783161163e-01 - 6.4778321981430054e-01 - <_> - 5.5283359527587891e+01 - - 1 2 1818 2.5000000000000000e+00 0 -1 1819 - 5.0000000000000000e-01 -2 -3 1820 2.4550000000000000e+02 - - 4.5631405711174011e-01 -1.3484077155590057e-01 - -5.9344494342803955e-01 1.6467481851577759e-01 - <_> - 5.5470157623291016e+01 - - 1 2 1821 3.5000000000000000e+00 0 -1 1822 - 9.5000000000000000e+00 -2 -3 1823 9.5000000000000000e+00 - - 1. -1. -4.3856528401374817e-01 1.8679495155811310e-01 - <_> - 5.5202453613281250e+01 - - 1 2 1824 5.6150000000000000e+02 0 -1 1825 4192. -2 -3 1826 - 1.2425000000000000e+03 - - -1.4592270553112030e-01 5.8146274089813232e-01 - -5.5671817064285278e-01 1.2355826795101166e-01 - <_> - 5.5569751739501953e+01 - - 1 2 1827 2.1500000000000000e+01 0 -1 1828 - 5.5000000000000000e+00 -2 -3 1829 1.6500000000000000e+01 - - -6.8071776628494263e-01 3.6730051040649414e-01 - -1.3501003384590149e-01 -9.1282844543457031e-01 - <_> - 5.5779064178466797e+01 - - 1 2 1830 3.3500000000000000e+01 0 -1 1831 - 9.5000000000000000e+00 -2 -3 1832 1.5500000000000000e+01 - - 3.2467505335807800e-01 -7.8718549013137817e-01 - 5.1464933156967163e-01 -1.6156230866909027e-01 - <_> - 5.5348117828369141e+01 - - 1 2 1833 3.7650000000000000e+02 0 -1 1834 - 5.5750000000000000e+02 -2 -3 1835 1.5000000000000000e+00 - - -8.1101077795028687e-01 6.3146162033081055e-01 - 1.3779489696025848e-01 -4.3094816803932190e-01 - <_> - 5.5919422149658203e+01 - - 1 2 1836 3.7500000000000000e+01 0 -1 1837 - 5.0000000000000000e-01 -2 -3 1838 8.8500000000000000e+01 - - 3.4091222286224365e-01 -3.4007987380027771e-01 - 5.7130312919616699e-01 -6.3140660524368286e-01 - <_> - 5.5871620178222656e+01 - - 1 2 1839 7.5000000000000000e+00 0 -1 1840 - 1.6500000000000000e+01 -2 -3 1841 6.4500000000000000e+01 - - -2.2035612165927887e-01 -9.4882357120513916e-01 - 5.1813077926635742e-01 -4.7800488770008087e-02 - <_> - 5.6252223968505859e+01 - - 1 2 1842 1.1950000000000000e+02 0 -1 1843 - 9.5500000000000000e+01 -2 -3 1844 3.6850000000000000e+02 - - 3.8002592325210571e-01 -3.4263178706169128e-01 - 5.1846081018447876e-01 -7.4162709712982178e-01 - <_> - 5.6455226898193359e+01 - - 1 2 1845 5.0000000000000000e-01 0 -1 1846 12. -2 -3 1847 - 3.2995000000000000e+03 - - -9.0239804983139038e-01 3.5835075378417969e-01 - -3.9121779799461365e-01 8.4680241346359253e-01 - <_> - 5.6692668914794922e+01 - - 1 2 1848 2.5000000000000000e+00 0 -1 1849 - 5.0000000000000000e-01 -2 -3 1850 3.0500000000000000e+01 - - -8.6832201480865479e-01 3.5786366462707520e-01 - -6.5906804800033569e-01 3.1783048063516617e-02 - <_> - 5.6752792358398438e+01 - - 1 2 1851 1.0500000000000000e+01 0 -1 1852 - 6.5500000000000000e+01 -2 -3 1853 1.4500000000000000e+01 - - -4.6706490218639374e-02 -8.7982815504074097e-01 - 5.6353557109832764e-01 -6.0297027230262756e-02 - <_> - 5.6775104522705078e+01 - - 1 2 1854 2.0150000000000000e+02 0 -1 1855 - 1.0500000000000000e+01 -2 -3 1856 2.8650000000000000e+02 - - 7.4959583580493927e-02 -5.7888466119766235e-01 - 6.6168105602264404e-01 -9.9754244089126587e-02 - <_> - 5.6972690582275391e+01 - - 1 2 1857 1.6150000000000000e+02 0 -1 1858 - 1.5500000000000000e+01 -2 -3 1859 24. - - -7.3095875978469849e-01 1.9758741557598114e-01 - -8.8720643520355225e-01 1. - <_> - 5.7200763702392578e+01 - - 1 2 1860 5.0000000000000000e-01 0 -1 1861 - 8.8500000000000000e+01 -2 -3 1862 1.8500000000000000e+01 - - 3.3610743284225464e-01 -8.8137799501419067e-01 - -6.0375785827636719e-01 1.2033233046531677e-01 - <_> - 5.7070457458496094e+01 - - 1 2 1863 2.1500000000000000e+01 0 -1 1864 - 1.4500000000000000e+01 -2 -3 1865 5.6500000000000000e+01 - - -9.7666543722152710e-01 7.4382346868515015e-01 - 4.3915370106697083e-01 -1.3030719757080078e-01 - <_> - 5.6970527648925781e+01 - - 1 2 1866 1.0500000000000000e+01 0 -1 1867 - 8.5000000000000000e+00 -2 -3 1868 142. - - -3.9075690507888794e-01 2.1810866892337799e-01 - 7.3304098844528198e-01 -1.5522833168506622e-01 - <_> - 5.7172351837158203e+01 - - 1 2 1869 8.3500000000000000e+01 0 -1 1870 - 5.0000000000000000e-01 -2 -3 1871 4.5000000000000000e+00 - - 4.7355487942695618e-01 -8.4495109319686890e-01 - -8.0800145864486694e-01 2.0182393491268158e-01 - <_> - 5.7369266510009766e+01 - - 1 2 1872 1.3500000000000000e+01 0 -1 1873 - 2.2050000000000000e+02 -2 -3 1874 1.5000000000000000e+00 - - 3.0745425820350647e-01 -5.7873797416687012e-01 - 7.1144923567771912e-02 -7.0968645811080933e-01 - <_> - 5.7163673400878906e+01 - - 1 2 1875 3.0500000000000000e+01 0 -1 1876 - 1.7955000000000000e+03 -2 -3 1877 1.9500000000000000e+01 - - 4.0770485997200012e-01 -6.0543429851531982e-01 - 3.7602424621582031e-01 -2.8918644785881042e-01 - <_> - 5.6786552429199219e+01 - - 1 2 1878 6.8500000000000000e+01 0 -1 1879 - 5.5000000000000000e+00 -2 -3 1880 2.8500000000000000e+01 - - 1.1757279932498932e-01 -5.8252972364425659e-01 - -3.8951548933982849e-01 5.1052653789520264e-01 - <_> - 5.6868556976318359e+01 - - 1 2 1881 6.5000000000000000e+00 0 -1 1882 - 2.5000000000000000e+00 -2 -3 1883 2.6950000000000000e+02 - - 8.2006074488162994e-02 -5.1789224147796631e-01 - 5.3505361080169678e-01 -9.4605493545532227e-01 - <_> - 5.7130115509033203e+01 - - 1 2 1884 8.5000000000000000e+00 0 -1 1885 - 1.9150000000000000e+02 -2 -3 1886 2.9450000000000000e+02 - - 4.5292165875434875e-01 -4.3888345360755920e-01 - 4.7173380851745605e-01 -5.1566743850708008e-01 - <_> - 5.7406742095947266e+01 - - 1 2 1887 5.5000000000000000e+00 0 -1 1888 - 4.5000000000000000e+00 -2 -3 1889 7.9850000000000000e+02 - - -3.7859401106834412e-01 5.5919343233108521e-01 - -5.8277565240859985e-01 6.6450834274291992e-02 - <_> - 5.7422473907470703e+01 - - 1 2 1890 5.6150000000000000e+02 0 -1 1891 4961. -2 -3 1892 - 4.8705000000000000e+03 - - -4.5244730426929891e-04 8.3497661352157593e-01 - -6.8882519006729126e-01 1.5732206404209137e-02 - <_> - 5.7687702178955078e+01 - - 1 2 1893 1.4500000000000000e+01 0 -1 1894 - 4.1335000000000000e+03 -2 -3 1895 7.1500000000000000e+01 - - 2.6522731781005859e-01 -8.9758622646331787e-01 - -6.0936498641967773e-01 4.6634823083877563e-01 - <_> - 5.7540111541748047e+01 - - 1 2 1896 2.9500000000000000e+01 0 -1 1897 - 5.5000000000000000e+00 -2 -3 1898 1.5000000000000000e+00 - - -9.3110167980194092e-01 1. 3.9634063839912415e-01 - -1.9126465916633606e-01 - <_> - 5.7616504669189453e+01 - - 1 2 1899 7.5000000000000000e+00 0 -1 1900 397. -2 -3 1901 - 1.5000000000000000e+00 - - 7.1867322921752930e-01 -5.4185843467712402e-01 - 5.2771824598312378e-01 -1.5528239309787750e-01 - <_> - 5.7763866424560547e+01 - - 1 2 1902 2.1500000000000000e+01 0 -1 1903 - 1.7050000000000000e+02 -2 -3 1904 1.6500000000000000e+01 - - 2.9671201109886169e-01 -8.4789550304412842e-01 - -5.6201756000518799e-01 2.5604116916656494e-01 - <_> - 5.7565292358398438e+01 - - 1 2 1905 5.0000000000000000e-01 0 -1 1906 - 2.1350000000000000e+02 -2 -3 1907 3.6950000000000000e+02 - - 5.7148373126983643e-01 -8.4696042537689209e-01 - -3.0725291371345520e-01 5.5036330223083496e-01 - <_> - 5.7710926055908203e+01 - - 1 2 1908 1.2500000000000000e+01 0 -1 1909 - 4.5000000000000000e+00 -2 -3 1910 2.4500000000000000e+01 - - -6.8967974185943604e-01 3.9181429147720337e-01 - -6.0330241918563843e-01 2.1838249266147614e-01 - <_> - 5.8008132934570312e+01 - - 1 2 1911 9.5000000000000000e+00 0 -1 1912 270. -2 -3 1913 - 3.0500000000000000e+01 - - 2.9720637202262878e-01 -7.7370458841323853e-01 - -7.1012228727340698e-01 1.2770961225032806e-01 - <_> - 5.8256633758544922e+01 - - 1 2 1914 6.3500000000000000e+01 0 -1 1915 - 3.7500000000000000e+01 -2 -3 1916 3.0500000000000000e+01 - - -4.4066715240478516e-01 8.2518380880355835e-01 - 2.9887351393699646e-01 -4.9117338657379150e-01 - <_> - 5.8460075378417969e+01 - - 1 2 1917 1.2500000000000000e+01 0 -1 1918 - 3.1500000000000000e+01 -2 -3 1919 5.0000000000000000e-01 - - -3.4090422093868256e-02 5.7412135601043701e-01 - 7.2392117977142334e-01 -6.3018786907196045e-01 - <_> - 5.8618007659912109e+01 - - 1 2 1920 5.0000000000000000e-01 0 -1 1921 - 1.5500000000000000e+01 -2 -3 1922 5.0000000000000000e-01 - - -9.6668690443038940e-01 3.7771463394165039e-01 - 2.2855560481548309e-01 -4.7967869043350220e-01 - <_> - 5.8478435516357422e+01 - - 1 2 1923 7.5000000000000000e+00 0 -1 1924 - 1.5000000000000000e+00 -2 -3 1925 5.0000000000000000e-01 - - 4.2515745759010315e-01 -5.5478894710540771e-01 - 4.5419645309448242e-01 -1.3957175612449646e-01 - <_> - 5.8872611999511719e+01 - - 1 2 1926 1.8350000000000000e+02 0 -1 1927 - 4.0500000000000000e+01 -2 -3 1928 6.6500000000000000e+01 - - -2.0008619129657745e-01 3.9417695999145508e-01 - -9.6238315105438232e-01 1. - <_> - 5.8883186340332031e+01 - - 1 2 1929 1.2500000000000000e+01 0 -1 1930 - 3.5000000000000000e+00 -2 -3 1931 2.1050000000000000e+02 - - 6.1217731237411499e-01 -1.9048878923058510e-02 - -7.2783750295639038e-01 8.3897627890110016e-02 - <_> - 5.8808357238769531e+01 - - 1 2 1932 4.6500000000000000e+01 0 -1 1933 - 3.5000000000000000e+00 -2 -3 1934 2.8650000000000000e+02 - - 1.3248841464519501e-01 -6.7872178554534912e-01 - 4.7229564189910889e-01 -1.4815118908882141e-01 - <_> - 5.9144462585449219e+01 - - 1 2 1935 1.4500000000000000e+01 0 -1 1936 - 1.6500000000000000e+01 -2 -3 1937 9.5000000000000000e+00 - - -6.5575122833251953e-01 6.0179513692855835e-01 - 3.3610317111015320e-01 -2.4818602204322815e-01 - <_> - 5.9101814270019531e+01 - - 1 2 1938 5.0000000000000000e-01 0 -1 1939 - 2.5000000000000000e+00 -2 -3 1940 2.3500000000000000e+01 - - 6.1000245809555054e-01 -4.2646210640668869e-02 - -5.3324443101882935e-01 3.5818785429000854e-01 - <_> - 5.8948040008544922e+01 - - 1 2 1941 7.5000000000000000e+00 0 -1 1942 - 4.5000000000000000e+00 -2 -3 1943 5.0000000000000000e-01 - - -8.8669669628143311e-01 7.7529543638229370e-01 - 3.8582339882850647e-01 -1.5377666056156158e-01 - <_> - 5.9593772888183594e+01 - - 1 2 1944 3.5525000000000000e+03 0 -1 1945 - 3.4500000000000000e+01 -2 -3 1946 167. - - -2.2072853147983551e-01 3.3567503094673157e-01 1. -1. - <_> - 5.9370800018310547e+01 - - 1 2 1947 7.5000000000000000e+00 0 -1 1948 3474. -2 -3 1949 - 9.5000000000000000e+00 - - 3.4637100994586945e-02 -5.9609389305114746e-01 - 5.9798693656921387e-01 -1.3024185597896576e-01 - <_> - 5.9757068634033203e+01 - - 1 2 1950 1.1500000000000000e+01 0 -1 1951 - 4.4500000000000000e+01 -2 -3 1952 2.5000000000000000e+00 - - -9.1445469856262207e-01 8.4411728382110596e-01 - 3.8626831769943237e-01 -1.6962867975234985e-01 - <_> - 5.9796058654785156e+01 - - 1 2 1953 5.8750000000000000e+02 0 -1 1954 - 3.5000000000000000e+00 -2 -3 1955 3.9150000000000000e+02 - - 2.4987047910690308e-01 -6.1070859432220459e-01 - 7.2914922237396240e-01 -7.8055180609226227e-02 - <_> - 5.9801254272460938e+01 - - 1 2 1956 5.5850000000000000e+02 0 -1 1957 - 4.7500000000000000e+01 -2 -3 1958 1.8500000000000000e+01 - - -1.1270057410001755e-01 6.9968527555465698e-01 - 5.1938942633569241e-03 -7.4568808078765869e-01 - <_> - 6.0010192871093750e+01 - - 1 2 1959 4.8500000000000000e+01 0 -1 1960 - 6.5000000000000000e+00 -2 -3 1961 7.5000000000000000e+00 - - -7.4147862195968628e-01 2.0893752574920654e-01 - -7.3173969984054565e-01 3.0364623665809631e-01 - <_> - 5.9708690643310547e+01 - - 1 2 1962 5.0000000000000000e-01 0 -1 1963 - 3.5000000000000000e+00 -2 -3 1964 2.2500000000000000e+01 - - -9.1378659009933472e-01 5.2321916818618774e-01 - -3.0149966478347778e-01 6.9747513532638550e-01 - <_> - 6.0059795379638672e+01 - - 1 2 1965 4.1500000000000000e+01 0 -1 1966 - 1.5000000000000000e+00 -2 -3 1967 4.5500000000000000e+01 - - 7.6339656114578247e-01 -6.3636028766632080e-01 - 3.5110288858413696e-01 -2.9607880115509033e-01 - <_> - 6.0240623474121094e+01 - - 1 2 1968 4.5000000000000000e+00 0 -1 1969 - 1.5000000000000000e+00 -2 -3 1970 3.0850000000000000e+02 - - -6.1838161945343018e-01 1.8083088099956512e-01 - -1.4869785308837891e-01 5.0236159563064575e-01 - <_> - 6.0387596130371094e+01 - - 1 2 1971 1.6250000000000000e+02 0 -1 1972 - 4.5000000000000000e+00 -2 -3 1973 4.4650000000000000e+02 - - 6.7135459184646606e-01 1.1329505359753966e-03 - -6.6079312562942505e-01 1.4697253704071045e-01 - <_> - 6.0387634277343750e+01 - - 1 2 1974 3.5000000000000000e+00 0 -1 1975 - 1.8500000000000000e+01 -2 -3 1976 3.5500000000000000e+01 - - 3.3784970641136169e-01 -4.8918390274047852e-01 - -5.6978744268417358e-01 1.3324360549449921e-01 - <_> - 6.0022872924804688e+01 - - 1 2 1977 2.0850000000000000e+02 0 -1 1978 - 3.5000000000000000e+00 -2 -3 1979 2.2500000000000000e+01 - - 2.4730446934700012e-01 -3.6476173996925354e-01 - -6.7308956384658813e-01 5.9900748729705811e-01 - <_> - 6.0411987304687500e+01 - - 1 2 1980 4.6500000000000000e+01 0 -1 1981 - 7.5000000000000000e+00 -2 -3 1982 1.6500000000000000e+01 - - -7.1475833654403687e-01 3.5484632849693298e-01 - 3.8911363482475281e-01 -1.7250961065292358e-01 - <_> - 6.0604080200195312e+01 - - 1 2 1983 5.0000000000000000e-01 0 -1 1984 - 6.5000000000000000e+00 -2 -3 1985 4.5000000000000000e+00 - - -5.3925055265426636e-01 4.7325718402862549e-01 - 1.9209517538547516e-01 -4.6254682540893555e-01 - <_> - 6.0539005279541016e+01 - - 1 2 1986 3.5500000000000000e+01 0 -1 1987 97. -2 -3 1988 - 5.5000000000000000e+00 - - 6.5639108419418335e-01 -8.1671226024627686e-01 - 5.2336204051971436e-01 -6.5074905753135681e-02 - <_> - 6.0846366882324219e+01 - - 1 2 1989 3.1350000000000000e+02 0 -1 1990 - 1.6190500000000000e+04 -2 -3 1991 1.1005000000000000e+03 - - 4.3834140896797180e-01 -3.6532020568847656e-01 - 6.3986539840698242e-01 -4.1561451554298401e-01 - <_> - 6.0749099731445312e+01 - - 1 2 1992 3.5000000000000000e+00 0 -1 1993 - 1.6050000000000000e+02 -2 -3 1994 4.5000000000000000e+00 - - 3.9444553852081299e-01 -5.1368337869644165e-01 - -6.9115257263183594e-01 1.9162381067872047e-02 - <_> - 6.0911582946777344e+01 - - 1 2 1995 3.1500000000000000e+01 0 -1 1996 39. -2 -3 1997 - 1.5000000000000000e+00 - - -9.1950684785842896e-01 1. -7.2641021013259888e-01 - 1.6248121857643127e-01 - <_> - 6.0922454833984375e+01 - - 1 2 1998 5.5000000000000000e+00 0 -1 1999 - 1.0500000000000000e+01 -2 -3 2000 1.5805000000000000e+03 - - -7.5020366907119751e-01 3.5568973422050476e-01 - -4.8083752393722534e-01 3.0702778697013855e-01 - <_> - 6.1254642486572266e+01 - - 1 2 2001 3.3650000000000000e+02 0 -1 2002 - 5.0000000000000000e-01 -2 -3 2003 7.5000000000000000e+00 - - 7.5214070081710815e-01 -5.6389236450195312e-01 - 3.4662494063377380e-01 -2.9536944627761841e-01 - <_> - 6.1591125488281250e+01 - - 1 2 2004 2.5500000000000000e+01 0 -1 2005 - 1.4500000000000000e+01 -2 -3 2006 1.5000000000000000e+00 - - 1.3703818619251251e-01 -4.9739819765090942e-01 - -6.2935429811477661e-01 5.6868934631347656e-01 - <_> - 6.1522079467773438e+01 - - 1 2 2007 2.0500000000000000e+01 0 -1 2008 - 8.5500000000000000e+01 -2 -3 2009 4.5500000000000000e+01 - - 7.8972160816192627e-01 -6.7304050922393799e-01 - 2.6793375611305237e-01 -6.3064610958099365e-01 - <_> - 6.1685386657714844e+01 - - 1 2 2010 4.7055000000000000e+03 0 -1 2011 - 7.5000000000000000e+00 -2 -3 2012 34. - - -6.3200688362121582e-01 1.6331009566783905e-01 - -9.4863635301589966e-01 8.0065780878067017e-01 - <_> - 6.1566181182861328e+01 - - 1 2 2013 7.2950000000000000e+02 0 -1 2014 - 2.0350000000000000e+02 -2 -3 2015 2.1500000000000000e+01 - - -1.1920681595802307e-01 6.4878600835800171e-01 - -5.8408319950103760e-01 3.3495616912841797e-01 - <_> - 6.2094886779785156e+01 - - 1 2 2016 9.5000000000000000e+00 0 -1 2017 - 3.5000000000000000e+00 -2 -3 2018 2.3500000000000000e+01 - - 5.2870643138885498e-01 -5.9091903269290924e-02 - 1.4992588758468628e-01 -7.4673342704772949e-01 - <_> - 6.1996501922607422e+01 - - 1 2 2019 3.4500000000000000e+01 0 -1 2020 - 9.6500000000000000e+01 -2 -3 2021 7.5000000000000000e+00 - - -9.8386786878108978e-02 5.0483143329620361e-01 - 1.5602034330368042e-01 -6.9411128759384155e-01 - <_> - 6.2363922119140625e+01 - - 1 2 2022 1.4965000000000000e+03 0 -1 2023 61. -2 -3 2024 - 8.5250000000000000e+02 - - -9.3483263254165649e-01 1. 5.6837409734725952e-01 - -8.3574697375297546e-02 - <_> - 6.2407440185546875e+01 - - 1 2 2025 5977. 0 -1 2026 2.5000000000000000e+00 -2 -3 2027 - 2.1421500000000000e+04 - - 2.2136372327804565e-01 -6.3119232654571533e-01 - 9.1829413175582886e-01 4.3518073856830597e-02 - <_> - 6.2328540802001953e+01 - - 1 2 2028 9.5000000000000000e+00 0 -1 2029 - 3.8550000000000000e+02 -2 -3 2030 6.5000000000000000e+00 - - 7.9880517721176147e-01 -3.3323591947555542e-01 - -9.3455439805984497e-01 3.5605767369270325e-01 - <_> - 6.2549594879150391e+01 - - 1 2 2031 1.2500000000000000e+01 0 -1 2032 - 2.5000000000000000e+00 -2 -3 2033 1.4500000000000000e+01 - - 4.2225402593612671e-01 -2.8828126192092896e-01 - -4.3309009075164795e-01 6.5534549951553345e-01 - <_> - 6.2636714935302734e+01 - - 1 2 2034 417. 0 -1 2035 1.1500000000000000e+01 -2 -3 2036 7. - - -2.1113002672791481e-02 8.4205090999603271e-01 - -9.7738903760910034e-01 5.3100347518920898e-01 - <_> - 6.2861415863037109e+01 - - 1 2 2037 2.5000000000000000e+00 0 -1 2038 - 5.5000000000000000e+00 -2 -3 2039 3.6500000000000000e+01 - - -7.6132452487945557e-01 3.6051002144813538e-01 - -5.7641249895095825e-01 1.5012158453464508e-01 - <_> - 6.2900104522705078e+01 - - 1 2 2040 5.0000000000000000e-01 0 -1 2041 - 3.5000000000000000e+00 -2 -3 2042 6.5000000000000000e+00 - - -9.3149966001510620e-01 2.9147976636886597e-01 - -6.3701289892196655e-01 5.4918531328439713e-02 - <_> - 6.2879768371582031e+01 - - 1 2 2043 1.5000000000000000e+00 0 -1 2044 - 2.5000000000000000e+00 -2 -3 2045 1.5000000000000000e+00 - - 6.6399359703063965e-01 -1.0929831862449646e-01 - 7.8133702278137207e-02 -4.7019696235656738e-01 - <_> - 6.2129520416259766e+01 - - 1 2 2046 1.3650000000000000e+02 0 -1 2047 - 2.1215000000000000e+03 -2 -3 2048 1.9500000000000000e+01 - - 1.4869627356529236e-01 -7.8195393085479736e-01 - -5.4876875877380371e-01 2.9066467285156250e-01 - <_> - 6.2598121643066406e+01 - - 1 2 2049 5.5000000000000000e+00 0 -1 2050 - 2.0500000000000000e+01 -2 -3 2051 3.3450000000000000e+02 - - -2.8021445870399475e-01 4.6860334277153015e-01 - -4.1921630501747131e-01 9.1871756315231323e-01 - <_> - 6.2898983001708984e+01 - - 1 2 2052 5.8750000000000000e+02 0 -1 2053 - 3.3150000000000000e+02 -2 -3 2054 258. - - -5.8121073246002197e-01 7.2862756252288818e-01 - 3.0086198449134827e-01 -6.1838138103485107e-01 - <_> - 6.3007404327392578e+01 - - 1 2 2055 2.7950000000000000e+02 0 -1 2056 - 5.0500000000000000e+01 -2 -3 2057 3.5000000000000000e+00 - - -7.9203374683856964e-02 6.8916302919387817e-01 - 2.2891193628311157e-01 -4.4382786750793457e-01 - <_> - 6.3243953704833984e+01 - - 1 2 2058 8.5000000000000000e+00 0 -1 2059 - 3.2650000000000000e+02 -2 -3 2060 2.1500000000000000e+01 - - -1. 2.3655229806900024e-01 -5.4432135820388794e-01 - 8.4973216056823730e-01 - <_> - 6.3190502166748047e+01 - - 1 2 2061 3.1500000000000000e+01 0 -1 2062 - 6.4500000000000000e+01 -2 -3 2063 1.5500000000000000e+01 - - -1.7394508421421051e-01 3.4196874499320984e-01 - -7.9306966066360474e-01 7.7552306652069092e-01 - <_> - 6.3256435394287109e+01 - - 1 2 2064 5.0000000000000000e-01 0 -1 2065 - 4.5000000000000000e+00 -2 -3 2066 1.6500000000000000e+01 - - -6.4375263452529907e-01 4.6298280358314514e-01 - 6.5930701792240143e-02 -6.0258072614669800e-01 - <_> - 6.3547569274902344e+01 - - 1 2 2067 3.5000000000000000e+00 0 -1 2068 - 2.9665000000000000e+03 -2 -3 2069 2.5000000000000000e+00 - - 2.6696309447288513e-01 -6.1605608463287354e-01 - 5.8771264553070068e-01 -7.7434383332729340e-02 - <_> - 6.3455562591552734e+01 - - 1 2 2070 2.6500000000000000e+01 0 -1 2071 - 1.0435000000000000e+03 -2 -3 2072 2.2500000000000000e+01 - - -3.0468648672103882e-01 2.7090394496917725e-01 -1. - 7.8004688024520874e-01 - <_> - 6.3757442474365234e+01 - - 1 2 2073 1.0350000000000000e+02 0 -1 2074 - 1.0500000000000000e+01 -2 -3 2075 2.5000000000000000e+00 - - -3.8403138518333435e-01 3.0187815427780151e-01 - 3.1422126293182373e-01 -7.1062839031219482e-01 - <_> - 6.3906417846679688e+01 - - 1 2 2076 4.5000000000000000e+00 0 -1 2077 - 1.5000000000000000e+00 -2 -3 2078 4.8150000000000000e+02 - - -7.3861616849899292e-01 4.0836670994758606e-01 - -5.5579960346221924e-01 1.4897711575031281e-01 - <_> - 6.4099327087402344e+01 - - 1 2 2079 2.5500000000000000e+01 0 -1 2080 - 5.7650000000000000e+02 -2 -3 2081 1.8500000000000000e+01 - - -5.5475443601608276e-01 1.9290663301944733e-01 - -7.1113204956054688e-01 5.3957355022430420e-01 - <_> - 6.3918937683105469e+01 - - 1 2 2082 3.5000000000000000e+00 0 -1 2083 - 9.7500000000000000e+01 -2 -3 2084 3.5000000000000000e+00 - - -3.3335947990417480e-01 2.7078640460968018e-01 - 3.7570750713348389e-01 -7.7115553617477417e-01 - <_> - 6.3970809936523438e+01 - - 1 2 2085 3.5000000000000000e+00 0 -1 2086 - 1.9850000000000000e+02 -2 -3 2087 2.3500000000000000e+01 - - 6.5109664201736450e-01 -1.3773214817047119e-01 - -5.4258519411087036e-01 5.1870465278625488e-02 - <_> - 6.4214424133300781e+01 - - 1 2 2088 1.2500000000000000e+01 0 -1 2089 - 3.2450000000000000e+02 -2 -3 2090 6.5000000000000000e+00 - - 4.3517467379570007e-01 -9.6950376033782959e-01 - 2.5978988409042358e-01 -2.7689433097839355e-01 - <_> - 6.4605529785156250e+01 - - 1 2 2091 327. 0 -1 2092 5.0000000000000000e-01 -2 -3 2093 - 1.5500000000000000e+01 - - 2.3849301040172577e-01 -5.6138235330581665e-01 - -6.2119048833847046e-01 3.9110702276229858e-01 - <_> - 6.4053535461425781e+01 - - 1 2 2094 1.8500000000000000e+01 0 -1 2095 - 1.4500000000000000e+01 -2 -3 2096 1.7225000000000000e+03 - - -7.9772460460662842e-01 2.5171506404876709e-01 - 4.5911735296249390e-01 -5.6817436218261719e-01 - <_> - 6.4624084472656250e+01 - - 1 2 2097 1.3500000000000000e+01 0 -1 2098 - 3.8450000000000000e+02 -2 -3 2099 2.5000000000000000e+00 - - 6.7918819189071655e-01 -6.8560796976089478e-01 - 5.7055342197418213e-01 -1.1227272450923920e-01 - <_> - 6.4599174499511719e+01 - - 1 2 2100 3.9950000000000000e+02 0 -1 2101 - 6.5000000000000000e+00 -2 -3 2102 2.6500000000000000e+01 - - 2.6946315169334412e-01 -6.8496251106262207e-01 - -1.4580105245113373e-01 4.0004068613052368e-01 - <_> - 6.4730812072753906e+01 - - 1 2 2103 5.0000000000000000e-01 0 -1 2104 - 1.0500000000000000e+01 -2 -3 2105 2.5000000000000000e+00 - - -4.1157549619674683e-01 3.9449948072433472e-01 - 1.3164354860782623e-01 -5.7457894086837769e-01 - <_> - 6.4550361633300781e+01 - - 1 2 2106 6.1500000000000000e+01 0 -1 2107 - 4.2500000000000000e+01 -2 -3 2108 5.0000000000000000e-01 - - -6.7661024630069733e-02 4.9807086586952209e-01 - 2.6868519186973572e-01 -5.6513643264770508e-01 - <_> - 6.4741752624511719e+01 - - 1 2 2109 1.5000000000000000e+00 0 -1 2110 - 1.4500000000000000e+01 -2 -3 2111 5.0000000000000000e-01 - - -5.7091879844665527e-01 4.6459051966667175e-01 - 2.1071271598339081e-01 -4.8713284730911255e-01 - <_> - 6.4659866333007812e+01 - - 1 2 2112 2.5000000000000000e+00 0 -1 2113 - 1.0500000000000000e+01 -2 -3 2114 2.5000000000000000e+00 - - 8.9292472600936890e-01 -9.4043314456939697e-01 - 5.3616881370544434e-01 -8.1886835396289825e-02 - <_> - 6.4854621887207031e+01 - - 1 2 2115 5.7500000000000000e+01 0 -1 2116 - 6.5000000000000000e+00 -2 -3 2117 1399. - - 1.7543983459472656e-01 -5.9518599510192871e-01 - -6.6982376575469971e-01 3.6574700474739075e-01 - <_> - 6.4909034729003906e+01 - - 1 2 2118 2.7650000000000000e+02 0 -1 2119 2618. -2 -3 2120 - 4.3500000000000000e+01 - - 5.1149606704711914e-01 -7.5715744495391846e-01 - 5.4412230849266052e-02 -5.4240036010742188e-01 - <_> - 6.5523689270019531e+01 - - 1 2 2121 2.0850000000000000e+02 0 -1 2122 - 1.5000000000000000e+00 -2 -3 2123 2.1500000000000000e+01 - - 2.8490218520164490e-01 -4.3338671326637268e-01 - -4.2747175693511963e-01 6.1465066671371460e-01 - <_> - 6.5561706542968750e+01 - - 1 2 2124 212. 0 -1 2125 4.5500000000000000e+01 -2 -3 2126 - 2.5150000000000000e+02 - - -5.5702477693557739e-01 3.5860374569892883e-01 - -6.7760747671127319e-01 3.8017414510250092e-02 - <_> - 6.5649497985839844e+01 - - 1 2 2127 5.9500000000000000e+01 0 -1 2128 - 3.5000000000000000e+00 -2 -3 2129 6.5000000000000000e+00 - - -7.9711538553237915e-01 2.5381851196289062e-01 - 4.2455443739891052e-01 -1.7120632529258728e-01 - <_> - 6.5992294311523438e+01 - - 1 2 2130 3.5000000000000000e+00 0 -1 2131 - 1.6250000000000000e+02 -2 -3 2132 2.2500000000000000e+01 - - -3.3420738577842712e-01 6.4248228073120117e-01 - 6.8257737159729004e-01 -1.6899804770946503e-01 - <_> - 6.6213569641113281e+01 - - 1 2 2133 5.5000000000000000e+00 0 -1 2134 - 7.3500000000000000e+01 -2 -3 2135 9.4500000000000000e+01 - - 2.2127301990985870e-01 -7.9195356369018555e-01 - -6.8413102626800537e-01 8.0674022436141968e-01 - <_> - 6.5891929626464844e+01 - - 1 2 2136 5.1500000000000000e+01 0 -1 2137 - 3.5000000000000000e+00 -2 -3 2138 3.6750000000000000e+02 - - 3.1779468059539795e-01 -3.8076880574226379e-01 - 6.2580502033233643e-01 -3.2678863406181335e-01 - <_> - 6.5933746337890625e+01 - - 1 2 2139 1.1500000000000000e+01 0 -1 2140 - 2.5000000000000000e+00 -2 -3 2141 4.5000000000000000e+00 - - 1.1745031177997589e-01 -4.3131595849990845e-01 - 6.6705638170242310e-01 -2.3260143399238586e-01 - <_> - 6.5980415344238281e+01 - - 1 2 2142 3.5000000000000000e+00 0 -1 2143 - 2.5000000000000000e+00 -2 -3 2144 5.0000000000000000e-01 - - 7.7854001522064209e-01 -8.4415936470031738e-01 - 5.8085924386978149e-01 -2.8965638950467110e-02 - <_> - 6.5784027099609375e+01 - - 1 2 2145 4.7500000000000000e+01 0 -1 2146 - 2.5000000000000000e+00 -2 -3 2147 3.5000000000000000e+00 - - 3.7243506312370300e-01 -6.9404041767120361e-01 - 3.7178915739059448e-01 -1.9639030098915100e-01 - <_> - 6.6053306579589844e+01 - - 1 2 2148 4.7350000000000000e+02 0 -1 2149 - 4.7500000000000000e+01 -2 -3 2150 2.2500000000000000e+01 - - -3.7930485606193542e-01 2.6928251981735229e-01 - -6.6765409708023071e-01 4.6291077136993408e-01 - <_> - 6.6251876831054688e+01 - - 1 2 2151 1.7500000000000000e+01 0 -1 2152 - 3.2650000000000000e+02 -2 -3 2153 1.5500000000000000e+01 - - -1. 1.9857025146484375e-01 -6.2745827436447144e-01 - 4.3167012929916382e-01 - <_> - 6.6497039794921875e+01 - - 1 2 2154 2.8500000000000000e+01 0 -1 2155 - 2.6500000000000000e+01 -2 -3 2156 4.1500000000000000e+01 - - -8.1000304222106934e-01 6.9051915407180786e-01 - -2.8902414441108704e-01 4.2377713322639465e-01 - <_> - 6.6451217651367188e+01 - - 1 2 2157 4.1250000000000000e+02 0 -1 2158 - 1.6500000000000000e+01 -2 -3 2159 3.0650000000000000e+02 - - 2.3259440436959267e-02 -6.3648867607116699e-01 - 7.6639103889465332e-01 -1.8078628182411194e-01 - <_> - 6.6132827758789062e+01 - - 1 2 2160 2.1500000000000000e+01 0 -1 2161 - 8.7550000000000000e+02 -2 -3 2162 1.6500000000000000e+01 - - -3.3872911334037781e-01 2.7060332894325256e-01 - -6.3514488935470581e-01 9.0211552381515503e-01 - <_> - 6.6081367492675781e+01 - - 1 2 2163 5.7650000000000000e+02 0 -1 2164 681. -2 -3 2165 - 1.7175000000000000e+03 - - -7.8227895498275757e-01 8.6135381460189819e-01 - 8.2487636804580688e-01 -5.1461022347211838e-02 - <_> - 6.5997879028320312e+01 - - 1 2 2166 1.8500000000000000e+01 0 -1 2167 - 4.5000000000000000e+00 -2 -3 2168 3.5500000000000000e+01 - - -8.3486534655094147e-02 6.0638916492462158e-01 - -4.8585453629493713e-01 2.9007250070571899e-01 - <_> - 6.6484413146972656e+01 - - 1 2 2169 1.2995000000000000e+03 0 -1 2170 - 4.6065000000000000e+03 -2 -3 2171 2.5000000000000000e+00 - - -2.7341315150260925e-01 5.3913331031799316e-01 - 4.8653602600097656e-01 -4.5589551329612732e-01 - <_> - 6.6919540405273438e+01 - - 1 2 2172 2.8500000000000000e+01 0 -1 2173 143. -2 -3 2174 - 1.3500000000000000e+01 - - 4.0857741236686707e-01 -7.9653608798980713e-01 - 4.3512815237045288e-01 -1.2409269809722900e-01 - <_> - 6.6548828125000000e+01 - - 1 2 2175 3.6500000000000000e+01 0 -1 2176 - 3.8500000000000000e+01 -2 -3 2177 3.0015000000000000e+03 - - -3.7071618437767029e-01 3.0769228935241699e-01 - -5.6432120501995087e-02 7.5577193498611450e-01 - <_> - 6.6935661315917969e+01 - - 1 2 2178 221. 0 -1 2179 5.0000000000000000e-01 -2 -3 2180 - 6.5000000000000000e+00 - - 3.8683256506919861e-01 -1.6335722804069519e-01 - 3.1397402286529541e-01 -8.9784342050552368e-01 - <_> - 6.6811462402343750e+01 - - 1 2 2181 1.6500000000000000e+01 0 -1 2182 - 9.7500000000000000e+01 -2 -3 2183 4.5000000000000000e+00 - - 1.9564503431320190e-01 -6.8224984407424927e-01 - 3.6420011520385742e-01 -2.7474680542945862e-01 - <_> - 6.7206642150878906e+01 - - 1 2 2184 2.8150000000000000e+02 0 -1 2185 - 5.3500000000000000e+01 -2 -3 2186 2.1950000000000000e+02 - - 3.9518028497695923e-01 -7.5029599666595459e-01 - -4.5047336816787720e-01 4.4910728931427002e-01 - <_> - 6.6829307556152344e+01 - - 1 2 2187 6.2550000000000000e+02 0 -1 2188 - 2.7045000000000000e+03 -2 -3 2189 7.5250000000000000e+02 - - -1.0180658102035522e-01 4.7846919298171997e-01 - -9.1966360807418823e-01 -3.8947533816099167e-02 - <_> - 6.6750717163085938e+01 - - 1 2 2190 4.7350000000000000e+02 0 -1 2191 - 5.7500000000000000e+01 -2 -3 2192 5.0000000000000000e-01 - - -7.8587010502815247e-02 6.3941407203674316e-01 - 7.1196836233139038e-01 -7.2520041465759277e-01 - <_> - 6.7127670288085938e+01 - - 1 2 2193 2.5000000000000000e+00 0 -1 2194 - 1.5500000000000000e+01 -2 -3 2195 2.5000000000000000e+00 - - -4.7885441780090332e-01 3.2798525691032410e-01 - 8.6548590660095215e-01 5.7965524494647980e-02 - <_> - 6.7040710449218750e+01 - - 1 2 2196 2.5000000000000000e+00 0 -1 2197 - 1.9500000000000000e+01 -2 -3 2198 1.2500000000000000e+01 - - -5.5627369880676270e-01 5.8527511358261108e-01 - -5.7549017667770386e-01 6.9125495851039886e-02 - <_> - 6.7134475708007812e+01 - - 1 2 2199 2.5000000000000000e+00 0 -1 2200 - 1.4215000000000000e+03 -2 -3 2201 5.0000000000000000e-01 - - 3.7880736589431763e-01 -4.5164510607719421e-01 - 5.3598467260599136e-02 -5.7012593746185303e-01 - <_> - 6.7369125366210938e+01 - - 1 2 2202 5.5000000000000000e+00 0 -1 2203 - 5.5000000000000000e+00 -2 -3 2204 1.5000000000000000e+00 - - -9.4780540466308594e-01 7.3004895448684692e-01 - 6.4780569076538086e-01 -5.0393346697092056e-02 - <_> - 6.7813079833984375e+01 - - 1 2 2205 1.2500000000000000e+01 0 -1 2206 9948. -2 -3 2207 - 2.0450000000000000e+02 - - -4.2956997640430927e-03 -9.1839849948883057e-01 - -1.5275211632251740e-01 4.4395634531974792e-01 - <_> - 6.8058036804199219e+01 - - 1 2 2208 4.0500000000000000e+01 0 -1 2209 - 5.0000000000000000e-01 -2 -3 2210 4.7500000000000000e+01 - - 2.4495334923267365e-01 -9.5012718439102173e-01 - 1.7766039073467255e-01 -4.3439298868179321e-01 - <_> - 6.7814498901367188e+01 - - 1 2 2211 1.5500000000000000e+01 0 -1 2212 - 7.5000000000000000e+00 -2 -3 2213 1.4500000000000000e+01 - - 3.4375911951065063e-01 -6.9197601079940796e-01 - -7.6082307100296021e-01 2.3456893861293793e-01 - <_> - 6.7533103942871094e+01 - - 1 2 2214 8.1500000000000000e+01 0 -1 2215 - 1.1500000000000000e+01 -2 -3 2216 1.9500000000000000e+01 - - 2.6256918907165527e-01 -2.8139856457710266e-01 - -8.1822723150253296e-01 2.4620606005191803e-01 - <_> - 6.7985069274902344e+01 - - 1 2 2217 2.6500000000000000e+01 0 -1 2218 - 9.5000000000000000e+00 -2 -3 2219 4.5000000000000000e+00 - - -1.2688148021697998e-01 -9.2650556564331055e-01 - 4.5196792483329773e-01 -1.2886488437652588e-01 - <_> - 6.8211486816406250e+01 - - 1 2 2220 1.9500000000000000e+01 0 -1 2221 - 9.4500000000000000e+01 -2 -3 2222 1.8500000000000000e+01 - - -4.5716031454503536e-03 -9.2506814002990723e-01 - 2.2641468048095703e-01 -5.4319751262664795e-01 - <_> - 6.8062339782714844e+01 - - 1 2 2223 1.5000000000000000e+00 0 -1 2224 - 1.1350000000000000e+02 -2 -3 2225 3.5000000000000000e+00 - - -1.4914712309837341e-01 6.2766093015670776e-01 - 5.2602481842041016e-01 -3.3082970976829529e-01 - <_> - 6.8320228576660156e+01 - - 1 2 2226 6.7500000000000000e+01 0 -1 2227 - 4.5000000000000000e+00 -2 -3 2228 8.3350000000000000e+02 - - -7.0059794187545776e-01 2.5789487361907959e-01 - 2.8099337220191956e-01 -6.9175392389297485e-01 - <_> - 6.8181999206542969e+01 - - 1 2 2229 1.2500000000000000e+01 0 -1 2230 - 3.1350000000000000e+02 -2 -3 2231 9.4565000000000000e+03 - - 1.9189414381980896e-01 -3.9976862072944641e-01 - 5.6042033433914185e-01 -9.6583509445190430e-01 - <_> - 6.8313468933105469e+01 - - 1 2 2232 9.5000000000000000e+00 0 -1 2233 1313. -2 -3 2234 - 7.9450000000000000e+02 - - 6.0552877187728882e-01 -7.1993356943130493e-01 - -1.9865931570529938e-01 3.5071191191673279e-01 - <_> - 6.8655784606933594e+01 - - 1 2 2235 5.5000000000000000e+00 0 -1 2236 - 1.5500000000000000e+01 -2 -3 2237 4.2500000000000000e+01 - - -8.3366417884826660e-01 3.4231638908386230e-01 - -5.7617366313934326e-01 1.2723289430141449e-01 - <_> - 6.8312980651855469e+01 - - 1 2 2238 1.5000000000000000e+00 0 -1 2239 - 1.0500000000000000e+01 -2 -3 2240 3.2950000000000000e+02 - - -6.2311822175979614e-01 5.3832811117172241e-01 - -3.4280434250831604e-01 6.2301361560821533e-01 - <_> - 6.8748611450195312e+01 - - 1 2 2241 5.5000000000000000e+00 0 -1 2242 - 6.3500000000000000e+01 -2 -3 2243 1.4355000000000000e+03 - - 4.3563413619995117e-01 -7.9157996177673340e-01 - 6.3327491283416748e-02 -5.8212018013000488e-01 - <_> - 6.8442298889160156e+01 - - 1 2 2244 2.0500000000000000e+01 0 -1 2245 - 8.5000000000000000e+00 -2 -3 2246 1.3350000000000000e+02 - - -3.0631437897682190e-01 2.6373180747032166e-01 - 7.2269374132156372e-01 -8.2843840122222900e-01 - <_> - 6.8691452026367188e+01 - - 1 2 2247 5.8450000000000000e+02 0 -1 2248 1991. -2 -3 2249 - 1.9550000000000000e+02 - - -5.8844625949859619e-01 7.2171705961227417e-01 - 5.9379982948303223e-01 -8.8590703904628754e-02 - <_> - 6.8854362487792969e+01 - - 1 2 2250 2.2450000000000000e+02 0 -1 2251 - 3.5000000000000000e+00 -2 -3 2252 4.4500000000000000e+01 - - 4.1746988892555237e-01 -1.5201584994792938e-01 - -7.8322100639343262e-01 4.8759365081787109e-01 - <_> - 6.8978080749511719e+01 - - 1 2 2253 1.1350000000000000e+02 0 -1 2254 - 4.5000000000000000e+00 -2 -3 2255 4.5500000000000000e+01 - - 1.2371577322483063e-01 -6.8989777565002441e-01 - 3.5007947683334351e-01 -7.2059243917465210e-01 - <_> - 6.9356269836425781e+01 - - 1 2 2256 1.9500000000000000e+01 0 -1 2257 - 1.0500000000000000e+01 -2 -3 2258 1.3500000000000000e+01 - - 2.8434163331985474e-01 -4.2419987916946411e-01 - 5.7273209095001221e-01 -1.0273739695549011e-01 - <_> - 6.9808845520019531e+01 - - 1 2 2259 5.5000000000000000e+00 0 -1 2260 - 1.8500000000000000e+01 -2 -3 2261 1.5000000000000000e+00 - - -8.0742955207824707e-01 8.1550550460815430e-01 - 4.5257565379142761e-01 -1.1754118651151657e-01 - <_> - 6.9490539550781250e+01 - - 1 2 2262 5.3500000000000000e+01 0 -1 2263 80. -2 -3 2264 - 2.9500000000000000e+01 - - -5.4256713390350342e-01 5.4104971885681152e-01 - 3.5188353061676025e-01 -3.0036619305610657e-01 - <_> - 6.9366668701171875e+01 - - 1 2 2265 2.6065000000000000e+03 0 -1 2266 - 3.1350000000000000e+02 -2 -3 2267 5.5000000000000000e+00 - - -1.2386845052242279e-01 4.6345305442810059e-01 - 6.0491842031478882e-01 -9.4304585456848145e-01 - <_> - 6.9713836669921875e+01 - - 1 2 2268 1.7500000000000000e+01 0 -1 2269 - 2.5000000000000000e+00 -2 -3 2270 5.0000000000000000e-01 - - -8.5482913255691528e-01 3.4717017412185669e-01 - 1.7867124080657959e-01 -6.1432170867919922e-01 - <_> - 7.0036468505859375e+01 - - 1 2 2271 7.5000000000000000e+00 0 -1 2272 - 2.3500000000000000e+01 -2 -3 2273 1.5500000000000000e+01 - - -9.8486787080764771e-01 3.2262811064720154e-01 - -5.6460940837860107e-01 1.9223406910896301e-01 - <_> - 6.9981750488281250e+01 - - 1 2 2274 1.7250000000000000e+02 0 -1 2275 - 5.0000000000000000e-01 -2 -3 2276 5.6500000000000000e+01 - - 2.4282279610633850e-01 -3.6108613014221191e-01 - 5.9585607051849365e-01 -6.8952751159667969e-01 - <_> - 6.9557426452636719e+01 - - 1 2 2277 1.5000000000000000e+00 0 -1 2278 7. -2 -3 2279 - 4.2050000000000000e+02 - - 1. -7.2186136245727539e-01 2.3051606118679047e-01 - -4.9865522980690002e-01 - <_> - 6.9593688964843750e+01 - - 1 2 2280 3.5000000000000000e+00 0 -1 2281 - 5.5000000000000000e+00 -2 -3 2282 1.5000000000000000e+00 - - 3.6256898194551468e-02 -5.9310066699981689e-01 - 6.1099308729171753e-01 -5.2162308245897293e-02 - <_> - 6.9190055847167969e+01 - - 1 2 2283 5.0000000000000000e-01 0 -1 2284 - 1.5000000000000000e+00 -2 -3 2285 3.1950000000000000e+02 - - -5.6549012660980225e-01 4.1545909643173218e-01 - -4.0363189578056335e-01 6.4397597312927246e-01 - <_> - 6.9152801513671875e+01 - - 1 2 2286 1.2500000000000000e+01 0 -1 2287 - 1.3500000000000000e+01 -2 -3 2288 1.5000000000000000e+00 - - 8.4121584892272949e-02 -8.1945008039474487e-01 - 5.4119038581848145e-01 -3.7251871079206467e-02 - <_> - 6.9844085693359375e+01 - - 1 2 2289 4.1950000000000000e+02 0 -1 2290 3338. -2 -3 2291 - 1.7450000000000000e+02 - - -1.0648692399263382e-01 6.9128334522247314e-01 - -4.1935205459594727e-01 2.4380990862846375e-01 - <_> - 7.0174018859863281e+01 - - 1 2 2292 1.5500000000000000e+01 0 -1 2293 - 2.6500000000000000e+01 -2 -3 2294 1.5000000000000000e+00 - - -5.6438052654266357e-01 3.2993179559707642e-01 - 1.9468745589256287e-01 -5.9477233886718750e-01 - <_> - 7.0660224914550781e+01 - - 1 2 2295 1.0150000000000000e+02 0 -1 2296 - 5.0000000000000000e-01 -2 -3 2297 2.6500000000000000e+01 - - 4.8620355129241943e-01 -1.8835483491420746e-01 - -5.4727905988693237e-01 5.2561342716217041e-01 - <_> - 7.0732994079589844e+01 - - 1 2 2298 1.4450000000000000e+02 0 -1 2299 - 2.5000000000000000e+00 -2 -3 2300 1.5000000000000000e+00 - - 7.2770319879055023e-02 -6.6459918022155762e-01 - 4.1657650470733643e-01 -3.1872367858886719e-01 - <_> - 7.0376434326171875e+01 - - 1 2 2301 2.7750000000000000e+02 0 -1 2302 - 2.8500000000000000e+01 -2 -3 2303 2.2500000000000000e+01 - - -4.7953361272811890e-01 5.4570424556732178e-01 - 3.0004525184631348e-01 -3.5655823349952698e-01 - <_> - 7.0656318664550781e+01 - - 1 2 2304 5.8750000000000000e+02 0 -1 2305 - 1.0500000000000000e+01 -2 -3 2306 7.1500000000000000e+01 - - -1.0104954242706299e-01 -8.7880355119705200e-01 - -8.3692330121994019e-01 2.7988719940185547e-01 - <_> - 7.0784782409667969e+01 - - 1 2 2307 1.4500000000000000e+01 0 -1 2308 - 1.0450000000000000e+02 -2 -3 2309 67. - - 6.7218846082687378e-01 -3.5151880979537964e-01 - -6.5867102146148682e-01 4.6130353212356567e-01 - <_> - 7.0990669250488281e+01 - - 1 2 2310 334. 0 -1 2311 3.3500000000000000e+01 -2 -3 2312 - 8.1750000000000000e+02 - - -3.3783861994743347e-01 3.0199536681175232e-01 - -9.2741793394088745e-01 2.6250743865966797e-01 - <_> - 7.1334205627441406e+01 - - 1 2 2313 1.4500000000000000e+01 0 -1 2314 - 1.4500000000000000e+01 -2 -3 2315 3.6500000000000000e+01 - - -2.9965308308601379e-01 4.6802315115928650e-01 - -4.5157477259635925e-01 6.7555361986160278e-01 - <_> - 7.1500701904296875e+01 - - 1 2 2316 5.0000000000000000e-01 0 -1 2317 87. -2 -3 2318 - 5.5000000000000000e+00 - - 3.0542531609535217e-01 -5.7673245668411255e-01 - 2.7094784379005432e-01 -5.7631582021713257e-01 - <_> - 7.1793479919433594e+01 - - 1 2 2319 4.5000000000000000e+00 0 -1 2320 - 3.0500000000000000e+01 -2 -3 2321 1.8005000000000000e+03 - - -9.6369409561157227e-01 1. 2.9277887940406799e-01 - -2.4375233054161072e-01 - <_> - 7.1967315673828125e+01 - - 1 2 2322 2.5000000000000000e+00 0 -1 2323 4880. -2 -3 2324 - 3.2500000000000000e+01 - - 3.0087158083915710e-01 -5.3540611267089844e-01 - -6.9770932197570801e-01 -8.8338237255811691e-03 - <_> - 7.1673614501953125e+01 - - 1 2 2325 1.1500000000000000e+01 0 -1 2326 - 5.0000000000000000e-01 -2 -3 2327 2.5000000000000000e+00 - - 3.5899358987808228e-01 -5.2653604745864868e-01 - 5.8578026294708252e-01 -3.2805901020765305e-02 - <_> - 7.1711250305175781e+01 - - 1 2 2328 1.8500000000000000e+01 0 -1 2329 - 1.8050000000000000e+02 -2 -3 2330 35. - - 3.5447284579277039e-01 -5.9741777181625366e-01 - -7.3350757360458374e-01 2.8574359416961670e-01 - <_> - 7.1695281982421875e+01 - - 1 2 2331 2.0850000000000000e+02 0 -1 2332 1048. -2 -3 2333 - 5.5000000000000000e+00 - - -3.0666926503181458e-01 9.4038575887680054e-01 - -7.0172363519668579e-01 4.9131000041961670e-01 - <_> - 7.1706031799316406e+01 - - 1 2 2334 2.8850000000000000e+02 0 -1 2335 1736. -2 -3 2336 - 1.5000000000000000e+00 - - 1.0753270238637924e-02 7.3304736614227295e-01 - 5.3744524717330933e-01 -5.2062910795211792e-01 - <_> - 7.1823760986328125e+01 - - 1 2 2337 1.6500000000000000e+01 0 -1 2338 - 7.5000000000000000e+00 -2 -3 2339 1.5000000000000000e+00 - - -7.8876292705535889e-01 3.3360600471496582e-01 - 1.1772559583187103e-01 -5.7080477476119995e-01 - <_> - 7.2228584289550781e+01 - - 1 2 2340 2.5000000000000000e+00 0 -1 2341 - 4.6500000000000000e+01 -2 -3 2342 1.5250000000000000e+02 - - -2.1400362253189087e-01 4.0482848882675171e-01 - -6.2977635860443115e-01 3.5589864850044250e-01 - <_> - 7.2438087463378906e+01 - - 1 2 2343 1.6500000000000000e+01 0 -1 2344 3901. -2 -3 2345 - 2.7500000000000000e+01 - - 2.0950204133987427e-01 -5.5380266904830933e-01 - -7.4909400939941406e-01 5.2945792675018311e-01 - <_> - 7.2360771179199219e+01 - - 1 2 2346 2.4500000000000000e+01 0 -1 2347 - 7.5000000000000000e+00 -2 -3 2348 1.8500000000000000e+01 - - 3.7871867418289185e-01 -7.5313919782638550e-01 - 5.1331257820129395e-01 -9.7519315779209137e-02 - <_> - 7.1928703308105469e+01 - - 1 2 2349 8.0500000000000000e+01 0 -1 2350 - 8.6500000000000000e+01 -2 -3 2351 139. - - 5.2605316042900085e-02 -6.2711888551712036e-01 - -3.3864989876747131e-01 4.3293687701225281e-01 - <_> - 7.2465637207031250e+01 - - 1 2 2352 3.5000000000000000e+00 0 -1 2353 - 3.5000000000000000e+00 -2 -3 2354 458. - - -8.2156580686569214e-01 5.3693503141403198e-01 - -7.5703012943267822e-01 7.3093846440315247e-03 - <_> - 7.2306266784667969e+01 - - 1 2 2355 1.5000000000000000e+00 0 -1 2356 - 2.2500000000000000e+01 -2 -3 2357 5.0000000000000000e-01 - - -8.8483113050460815e-01 2.5380238890647888e-01 - 1.9247277081012726e-01 -5.5495434999465942e-01 - <_> - 7.2351318359375000e+01 - - 1 2 2358 5.0000000000000000e-01 0 -1 2359 - 1.1500000000000000e+01 -2 -3 2360 2.0550000000000000e+02 - - -6.4710837602615356e-01 3.3967879414558411e-01 - 4.5056350529193878e-02 -6.6342002153396606e-01 - <_> - 7.2549964904785156e+01 - - 1 2 2361 3.1500000000000000e+01 0 -1 2362 - 5.5000000000000000e+00 -2 -3 2363 1.1150000000000000e+02 - - -9.2634866014122963e-03 -5.6539881229400635e-01 - 5.9193736314773560e-01 -6.0422807931900024e-01 - <_> - 7.2340164184570312e+01 - - 1 2 2364 1.4550000000000000e+02 0 -1 2365 87. -2 -3 2366 - 2.0500000000000000e+01 - - 7.1558344364166260e-01 -6.7444592714309692e-01 - 2.4655258655548096e-01 -4.4633221626281738e-01 - <_> - 7.2298965454101562e+01 - - 1 2 2367 5.0000000000000000e-01 0 -1 2368 - 1.6500000000000000e+01 -2 -3 2369 1.1650000000000000e+02 - - -6.4155972003936768e-01 5.6763589382171631e-01 - 4.5910947024822235e-02 -5.7516378164291382e-01 - <_> - 7.2460647583007812e+01 - - 1 2 2370 1.0500000000000000e+01 0 -1 2371 776. -2 -3 2372 - 3.0350000000000000e+02 - - 1. -7.5311285257339478e-01 1.6168554127216339e-01 - -9.7889220714569092e-01 - <_> - 7.2329025268554688e+01 - - 1 2 2373 6.8250000000000000e+02 0 -1 2374 - 9.8350000000000000e+02 -2 -3 2375 8.4550000000000000e+02 - - -5.8907532691955566e-01 6.2361657619476318e-01 - 6.0256063938140869e-01 -1.3162477314472198e-01 - <_> - 7.2692337036132812e+01 - - 1 2 2376 9.5000000000000000e+00 0 -1 2377 587. -2 -3 2378 - 6.2850000000000000e+02 - - 1.8354943394660950e-01 -6.3397884368896484e-01 - 3.6331036686897278e-01 -4.3740653991699219e-01 - <_> - 7.3099296569824219e+01 - - 1 2 2379 5.0000000000000000e-01 0 -1 2380 - 5.5000000000000000e+00 -2 -3 2381 1.5000000000000000e+00 - - 4.0695956349372864e-01 -2.3705665767192841e-01 - 5.4972708225250244e-01 -5.1312422752380371e-01 - <_> - 7.3302726745605469e+01 - - 1 2 2382 8.7050000000000000e+02 0 -1 2383 - 1.5000000000000000e+00 -2 -3 2384 2.9500000000000000e+01 - - 3.9779379963874817e-01 -6.3519412279129028e-01 - -8.4823501110076904e-01 3.2447892427444458e-01 - <_> - 7.3023147583007812e+01 - - 1 2 2385 5.0000000000000000e-01 0 -1 2386 - 3.8500000000000000e+01 -2 -3 2387 1.5775000000000000e+03 - - -2.5971448421478271e-01 5.4386669397354126e-01 - -4.0062361955642700e-01 4.5868498086929321e-01 - <_> - 7.3163795471191406e+01 - - 1 2 2388 2.7500000000000000e+01 0 -1 2389 - 5.0000000000000000e-01 -2 -3 2390 4.6500000000000000e+01 - - 1.4064319431781769e-01 -4.5721408724784851e-01 - 8.3929353952407837e-01 -5.6752306222915649e-01 - <_> - 7.3411483764648438e+01 - - 1 2 2391 3.5000000000000000e+00 0 -1 2392 21. -2 -3 2393 - 1.0850000000000000e+02 - - -7.8916430473327637e-01 1. 2.4769315123558044e-01 - -4.8368823528289795e-01 - <_> - 7.3806152343750000e+01 - - 1 2 2394 6.5000000000000000e+00 0 -1 2395 - 2.2500000000000000e+01 -2 -3 2396 1.9500000000000000e+01 - - -4.2384034395217896e-01 3.9466390013694763e-01 - 1.2428787350654602e-01 -5.8119755983352661e-01 - <_> - 7.3893051147460938e+01 - - 1 2 2397 6.2500000000000000e+01 0 -1 2398 - 2.5000000000000000e+00 -2 -3 2399 8.5000000000000000e+00 - - 8.6900889873504639e-02 -5.0835818052291870e-01 - 6.4387518167495728e-01 -3.4420084953308105e-01 - <_> - 7.4370101928710938e+01 - - 1 2 2400 2.0250000000000000e+02 0 -1 2401 - 2.6500000000000000e+01 -2 -3 2402 1.0250000000000000e+02 - - -3.3534547686576843e-01 7.1747875213623047e-01 - 5.8294051885604858e-01 -2.0199438929557800e-01 - <_> - 7.3817878723144531e+01 - - 1 2 2403 2.2250000000000000e+02 0 -1 2404 495. -2 -3 2405 - 1.1150000000000000e+02 - - -9.2125439643859863e-01 4.6380558609962463e-01 - -8.2408124208450317e-01 -5.1385825499892235e-03 - <_> - 7.4274734497070312e+01 - - 1 2 2406 5.0000000000000000e-01 0 -1 2407 - 6.5000000000000000e+00 -2 -3 2408 4.5000000000000000e+00 - - -5.4510724544525146e-01 4.5685729384422302e-01 - -4.1785773634910583e-01 3.7173369526863098e-01 - <_> - 7.4214447021484375e+01 - - 1 2 2409 4.3515000000000000e+03 0 -1 2410 - 7.1850000000000000e+02 -2 -3 2411 6.1445000000000000e+03 - - -5.5608157068490982e-02 6.8498140573501587e-01 - -8.1597936153411865e-01 -6.0283310711383820e-02 - <_> - 7.4526939392089844e+01 - - 1 2 2412 1.5000000000000000e+00 0 -1 2413 - 4.5000000000000000e+00 -2 -3 2414 1.7500000000000000e+01 - - -2.5446805357933044e-01 8.0654889345169067e-01 - 4.4617369771003723e-02 -4.9571081995964050e-01 - <_> - 7.4664260864257812e+01 - - 1 2 2415 2.1500000000000000e+01 0 -1 2416 - 9.5000000000000000e+00 -2 -3 2417 5.0000000000000000e-01 - - 2.5834673643112183e-01 -6.3097542524337769e-01 - 5.6628465652465820e-01 -1.0652445256710052e-01 - <_> - 7.4835792541503906e+01 - - 1 2 2418 1.9500000000000000e+01 0 -1 2419 - 2.1650000000000000e+02 -2 -3 2420 3.5000000000000000e+00 - - -3.4473347663879395e-01 3.5953617095947266e-01 - -7.8647011518478394e-01 4.7845369577407837e-01 - <_> - 7.5001464843750000e+01 - - 1 2 2421 4.3350000000000000e+02 0 -1 2422 - 9.5000000000000000e+00 -2 -3 2423 5.0000000000000000e-01 - - -7.6833075284957886e-01 1.6567093133926392e-01 1. - -9.3112909793853760e-01 - <_> - 7.5096672058105469e+01 - - 1 2 2424 1.9500000000000000e+01 0 -1 2425 - 2.5500000000000000e+01 -2 -3 2426 2.5165000000000000e+03 - - -7.1183577179908752e-02 5.7713252305984497e-01 - -7.3037630319595337e-01 9.5210477709770203e-02 - <_> - 7.4955039978027344e+01 - - 1 2 2427 5.5000000000000000e+00 0 -1 2428 - 8.0500000000000000e+01 -2 -3 2429 4.0500000000000000e+01 - - 3.1543654203414917e-01 -5.0912439823150635e-01 - -6.9998091459274292e-01 1.5216259658336639e-01 - <_> - 7.4920089721679688e+01 - - 1 2 2430 1.1215000000000000e+03 0 -1 2431 - 3.8850000000000000e+02 -2 -3 2432 4.1195000000000000e+03 - - 4.6712434291839600e-01 -4.7107401490211487e-01 - -8.0701512098312378e-01 -4.6098276972770691e-02 - <_> - 7.4982124328613281e+01 - - 1 2 2433 1.8500000000000000e+01 0 -1 2434 - 3.5500000000000000e+01 -2 -3 2435 3.5000000000000000e+00 - - -3.7868845462799072e-01 5.3733342885971069e-01 - 5.9916520118713379e-01 -1.3988719880580902e-01 - <_> - 7.5354972839355469e+01 - - 1 2 2436 2.5000000000000000e+00 0 -1 2437 - 4.5000000000000000e+00 -2 -3 2438 2.3500000000000000e+01 - - 3.7731003016233444e-02 -8.0526626110076904e-01 - 4.1983363032341003e-01 -1.6427561640739441e-01 - <_> - 7.5353942871093750e+01 - - 1 2 2439 3.8500000000000000e+01 0 -1 2440 - 5.0000000000000000e-01 -2 -3 2441 1.5250000000000000e+02 - - 4.1628280282020569e-01 -5.9752076864242554e-01 - 2.2085283696651459e-01 -7.8762036561965942e-01 - <_> - 7.4907821655273438e+01 - - 1 2 2442 9.5000000000000000e+00 0 -1 2443 - 5.5000000000000000e+00 -2 -3 2444 1.3500000000000000e+01 - - -6.2543123960494995e-01 2.9037654399871826e-01 - -6.6800427436828613e-01 2.3413531482219696e-01 - <_> - 7.5347267150878906e+01 - - 1 2 2445 5.0000000000000000e-01 0 -1 2446 - 7.5000000000000000e+00 -2 -3 2447 1.5000000000000000e+00 - - -7.7953171730041504e-01 4.3944290280342102e-01 - 2.1482174098491669e-01 -4.5657783746719360e-01 - <_> - 7.5632286071777344e+01 - - 1 2 2448 1.8500000000000000e+01 0 -1 2449 - 1.0500000000000000e+01 -2 -3 2450 3.7500000000000000e+01 - - -3.2795214653015137e-01 2.8501552343368530e-01 - -7.3039668798446655e-01 3.0266335606575012e-01 - <_> - 7.5784385681152344e+01 - - 1 2 2451 5.0000000000000000e-01 0 -1 2452 - 4.5000000000000000e+00 -2 -3 2453 9.5500000000000000e+01 - - -7.9435759782791138e-01 2.8812354803085327e-01 - 3.0145803093910217e-01 -5.5056422948837280e-01 - <_> - 7.5934288024902344e+01 - - 1 2 2454 1.2500000000000000e+01 0 -1 2455 - 1.1500000000000000e+01 -2 -3 2456 9.5000000000000000e+00 - - -5.4109108448028564e-01 3.4966334700584412e-01 - 2.2563920915126801e-01 -6.0146200656890869e-01 - <_> - 7.5664039611816406e+01 - - 1 2 2457 1.5000000000000000e+00 0 -1 2458 - 2.0500000000000000e+01 -2 -3 2459 1.7500000000000000e+01 - - -6.3995569944381714e-02 5.8523094654083252e-01 - -6.0602784156799316e-01 9.1935232281684875e-02 - <_> - 7.5729660034179688e+01 - - 1 2 2460 5.0000000000000000e-01 0 -1 2461 - 1.5000000000000000e+00 -2 -3 2462 5.7500000000000000e+01 - - -3.9503663778305054e-01 6.0793364048004150e-01 - -5.8376723527908325e-01 2.0124232396483421e-02 - <_> - 7.6041374206542969e+01 - - 1 2 2463 2.5000000000000000e+00 0 -1 2464 - 4.5850000000000000e+02 -2 -3 2465 2.8500000000000000e+01 - - 3.1171244382858276e-01 -1. -6.6108351945877075e-01 - 2.7302114292979240e-02 - <_> - 7.5795768737792969e+01 - - 1 2 2466 1.9650000000000000e+02 0 -1 2467 - 6.2950000000000000e+02 -2 -3 2468 8.3500000000000000e+01 - - -2.5152391195297241e-01 6.5583813190460205e-01 - -7.8791797161102295e-01 9.4210775569081306e-04 - <_> - 7.5857429504394531e+01 - - 1 2 2469 4.5000000000000000e+00 0 -1 2470 - 8.0500000000000000e+01 -2 -3 2471 1.1845000000000000e+03 - - 4.5618292689323425e-01 -2.6651117205619812e-01 - 6.1658360064029694e-02 -5.8446490764617920e-01 - <_> - 7.6416542053222656e+01 - - 1 2 2472 4.0950000000000000e+02 0 -1 2473 - 1.5950000000000000e+02 -2 -3 2474 3.6500000000000000e+01 - - -3.3679732680320740e-01 6.7494618892669678e-01 - -5.3805744647979736e-01 5.5911004543304443e-01 - <_> - 7.5964401245117188e+01 - - 1 2 2475 2159. 0 -1 2476 9.5000000000000000e+00 -2 -3 2477 - 2.7550000000000000e+02 - - -9.7294098138809204e-01 3.4394034743309021e-01 - 7.5755751132965088e-01 -4.5213976502418518e-01 - <_> - 7.6349334716796875e+01 - - 1 2 2478 5.0000000000000000e-01 0 -1 2479 109. -2 -3 2480 - 7.5000000000000000e+00 - - -8.3041268587112427e-01 3.8493672013282776e-01 - 1.9105611741542816e-01 -5.4174506664276123e-01 - <_> - 7.6266555786132812e+01 - - 1 2 2481 5.7850000000000000e+02 0 -1 2482 - 1.5000000000000000e+00 -2 -3 2483 2.8750000000000000e+02 - - 5.4517310857772827e-01 -8.3548069000244141e-01 - 5.4728341102600098e-01 -8.2781173288822174e-02 - <_> - 7.6401138305664062e+01 - - 1 2 2484 3.9500000000000000e+01 0 -1 2485 - 4.8500000000000000e+01 -2 -3 2486 1.5450000000000000e+02 - - -3.2842093706130981e-01 4.5771333575248718e-01 - 5.4719090461730957e-01 -5.5783140659332275e-01 - <_> - 7.6629852294921875e+01 - - 1 2 2487 5.0000000000000000e-01 0 -1 2488 - 9.8695000000000000e+03 -2 -3 2489 6.5000000000000000e+00 - - 3.5277694463729858e-01 -8.9051485061645508e-01 - 1.5630321204662323e-01 -5.0492966175079346e-01 - <_> - 7.7012748718261719e+01 - - 1 2 2490 3.4250000000000000e+02 0 -1 2491 - 5.0000000000000000e-01 -2 -3 2492 1.0500000000000000e+01 - - 6.1497741937637329e-01 -4.2811819911003113e-01 - -6.7799770832061768e-01 3.8289925456047058e-01 - <_> - 7.7173255920410156e+01 - - 1 2 2493 6.3500000000000000e+01 0 -1 2494 - 4.2500000000000000e+01 -2 -3 2495 1.0450000000000000e+02 - - -7.6624304056167603e-01 1.6050516068935394e-01 - -9.2148023843765259e-01 7.9243576526641846e-01 - <_> - 7.7233604431152344e+01 - - 1 2 2496 3.5000000000000000e+00 0 -1 2497 - 2.9500000000000000e+01 -2 -3 2498 9.5000000000000000e+00 - - 4.3042707443237305e-01 -7.0397478342056274e-01 - -5.7992899417877197e-01 6.0347892343997955e-02 - <_> - 7.7677680969238281e+01 - - 1 2 2499 7.7750000000000000e+02 0 -1 2500 - 3.5000000000000000e+00 -2 -3 2501 3.9050000000000000e+02 - - 2.6784166693687439e-01 -7.3122310638427734e-01 - 6.9813531637191772e-01 -5.0064746290445328e-02 - <_> - 7.7810462951660156e+01 - - 1 2 2502 1.2500000000000000e+01 0 -1 2503 46. -2 -3 2504 - 4.7550000000000000e+02 - - 7.4502938985824585e-01 -9.3451422452926636e-01 - 1.7553819715976715e-01 -6.0448014736175537e-01 - <_> - 7.8011604309082031e+01 - - 1 2 2505 5.0000000000000000e-01 0 -1 2506 - 1.5000000000000000e+00 -2 -3 2507 2.1500000000000000e+01 - - 5.5112600326538086e-01 -7.1465468406677246e-01 - -6.2684929370880127e-01 2.0114150643348694e-01 - <_> - 7.7726852416992188e+01 - - 1 2 2508 2.5000000000000000e+00 0 -1 2509 - 1.5000000000000000e+00 -2 -3 2510 2.2275000000000000e+03 - - -6.1417835950851440e-01 6.4539062976837158e-01 - 2.3531807959079742e-01 -3.7372583150863647e-01 - <_> - 7.7838409423828125e+01 - - 1 2 2511 4.0435000000000000e+03 0 -1 2512 - 1.6050000000000000e+02 -2 -3 2513 12334. - - -3.2763364911079407e-01 7.1799826622009277e-01 - 4.0013375878334045e-01 -8.6134457588195801e-01 - <_> - 7.7509208679199219e+01 - - 1 2 2514 5.0000000000000000e-01 0 -1 2515 - 3.5000000000000000e+00 -2 -3 2516 4.1050000000000000e+02 - - -5.3890359401702881e-01 3.9034625887870789e-01 - 3.8619524240493774e-01 -5.2792149782180786e-01 - <_> - 7.7868835449218750e+01 - - 1 2 2517 5.0000000000000000e-01 0 -1 2518 - 4.5000000000000000e+00 -2 -3 2519 5.0000000000000000e-01 - - -4.3116971850395203e-01 3.5963350534439087e-01 - 3.4538099169731140e-01 -4.9176117777824402e-01 - <_> - 7.8107124328613281e+01 - - 1 2 2520 8.5000000000000000e+00 0 -1 2521 303. -2 -3 2522 - 1.3550000000000000e+02 - - 3.4497961401939392e-01 -3.9331153035163879e-01 - 6.7525440454483032e-01 -6.4588183164596558e-01 - <_> - 7.7949096679687500e+01 - - 1 2 2523 4.5000000000000000e+00 0 -1 2524 - 4.4500000000000000e+01 -2 -3 2525 9.5000000000000000e+00 - - -8.7561493273824453e-04 6.5230095386505127e-01 - -5.9499686956405640e-01 2.8807112574577332e-01 - <_> - 7.7715606689453125e+01 - - 1 2 2526 5.7500000000000000e+01 0 -1 2527 - 1.9500000000000000e+01 -2 -3 2528 4.5000000000000000e+00 - - -2.3348997533321381e-01 3.4078663587570190e-01 - 8.8998430967330933e-01 -8.2743632793426514e-01 - <_> - 7.7412117004394531e+01 - - 1 2 2529 1.5500000000000000e+01 0 -1 2530 - 7.5000000000000000e+00 -2 -3 2531 1.2500000000000000e+01 - - -8.8361167907714844e-01 4.6851965785026550e-01 - 7.6548218727111816e-01 -3.4992104768753052e-01 - <_> - 7.7919708251953125e+01 - - 1 2 2532 1.4500000000000000e+01 0 -1 2533 - 4.3250000000000000e+02 -2 -3 2534 1.5000000000000000e+00 - - 1.6036920249462128e-01 -4.6338194608688354e-01 - -7.4071860313415527e-01 5.0758624076843262e-01 - <_> - 7.7726272583007812e+01 - - 1 2 2535 8.0500000000000000e+01 0 -1 2536 - 3.7500000000000000e+01 -2 -3 2537 2.5000000000000000e+00 - - -1.9343656301498413e-01 3.6727836728096008e-01 1. - -8.6589008569717407e-01 - <_> - 7.8272102355957031e+01 - - 1 2 2538 5.0000000000000000e-01 0 -1 2539 - 4.5000000000000000e+00 -2 -3 2540 658. - - -5.3998571634292603e-01 5.4582929611206055e-01 - -3.1522071361541748e-01 7.1490818262100220e-01 - <_> - 7.8563529968261719e+01 - - 1 2 2541 4.5000000000000000e+00 0 -1 2542 - 1.4500000000000000e+01 -2 -3 2543 1.6500000000000000e+01 - - 5.0465071201324463e-01 -4.6871420741081238e-01 - 5.3199578076601028e-02 -5.5464112758636475e-01 - <_> - 7.8416564941406250e+01 - - 1 2 2544 1.3450000000000000e+02 0 -1 2545 - 1.9500000000000000e+01 -2 -3 2546 3.5000000000000000e+00 - - -8.7330028414726257e-02 -7.5999724864959717e-01 - 5.3803235292434692e-01 -1.4696989953517914e-01 - <_> - 7.8487602233886719e+01 - - 1 2 2547 6.5000000000000000e+00 0 -1 2548 - 5.0000000000000000e-01 -2 -3 2549 1.7500000000000000e+01 - - 7.1036763489246368e-02 -7.1582734584808350e-01 - 5.4787242412567139e-01 -1.1151381582021713e-01 - <_> - 7.8819152832031250e+01 - - 1 2 2550 2.0750000000000000e+02 0 -1 2551 - 2.0735000000000000e+03 -2 -3 2552 4304. - - 2.2555717825889587e-01 -4.1814169287681580e-01 - 6.8767857551574707e-01 -2.6335984468460083e-01 - <_> - 7.9293106079101562e+01 - - 1 2 2553 1.8500000000000000e+01 0 -1 2554 - 4.1500000000000000e+01 -2 -3 2555 1.8500000000000000e+01 - - -8.1884217262268066e-01 1. 4.7395563125610352e-01 - -1.8633662164211273e-01 - <_> - 7.9529563903808594e+01 - - 1 2 2556 3.3500000000000000e+01 0 -1 2557 - 1.9850000000000000e+02 -2 -3 2558 1.3050000000000000e+02 - - 5.9216380119323730e-01 -7.9069614410400391e-01 - 2.3645764589309692e-01 -5.4375654458999634e-01 - <_> - 7.9264884948730469e+01 - - 1 2 2559 5.2500000000000000e+01 0 -1 2560 - 6.0500000000000000e+01 -2 -3 2561 3.1500000000000000e+01 - - 9.8454810678958893e-02 -6.2080347537994385e-01 - 3.8626289367675781e-01 -4.1950720548629761e-01 - <_> - 7.9011604309082031e+01 - - 1 2 2562 2.9550000000000000e+02 0 -1 2563 - 3.9500000000000000e+01 -2 -3 2564 2.5000000000000000e+00 - - -6.1641591787338257e-01 2.5828385353088379e-01 - 6.0895466804504395e-01 -5.8573886752128601e-02 - <_> - 7.9083618164062500e+01 - - 1 2 2565 2.8500000000000000e+01 0 -1 2566 - 5.0000000000000000e-01 -2 -3 2567 5.5000000000000000e+00 - - -3.0742061138153076e-01 2.8055912256240845e-01 - -7.9475212097167969e-01 8.2691472768783569e-01 - <_> - 7.9463661193847656e+01 - - 1 2 2568 5.0000000000000000e-01 0 -1 2569 - 1.5000000000000000e+00 -2 -3 2570 6.3050000000000000e+02 - - -1.2270902097225189e-01 7.1463072299957275e-01 - -4.2850509285926819e-01 2.2205479443073273e-01 - <_> - 7.9607894897460938e+01 - - 1 2 2571 3.5000000000000000e+00 0 -1 2572 - 3.5000000000000000e+00 -2 -3 2573 5.0000000000000000e-01 - - -9.3542063236236572e-01 5.4489326477050781e-01 - 2.0372124016284943e-01 -3.9889475703239441e-01 - <_> - 7.9263900756835938e+01 - - 1 2 2574 2.7950000000000000e+02 0 -1 2575 13730. -2 -3 2576 - 7.5000000000000000e+00 - - -7.3570191860198975e-02 7.3383468389511108e-01 - 4.3032327294349670e-01 -3.4399634599685669e-01 - <_> - 7.9479598999023438e+01 - - 1 2 2577 3.5000000000000000e+00 0 -1 2578 - 1.6500000000000000e+01 -2 -3 2579 168. - - 5.7104247808456421e-01 -8.0473148822784424e-01 - 2.1569329500198364e-01 -8.4493541717529297e-01 - <_> - 7.9719924926757812e+01 - - 1 2 2580 1.8500000000000000e+01 0 -1 2581 - 2.5500000000000000e+01 -2 -3 2582 5.8750000000000000e+02 - - -7.7445679903030396e-01 8.1580907106399536e-01 - -3.5785317420959473e-01 2.4033224582672119e-01 - <_> - 7.9651489257812500e+01 - - 1 2 2583 1.9750000000000000e+02 0 -1 2584 - 2.9845000000000000e+03 -2 -3 2585 8.7950000000000000e+02 - - -6.2534831464290619e-02 6.7511278390884399e-01 - 5.5172812938690186e-01 -4.6909588575363159e-01 - <_> - 7.9875663757324219e+01 - - 1 2 2586 4.3500000000000000e+01 0 -1 2587 - 3.0350000000000000e+02 -2 -3 2588 1.5000000000000000e+00 - - -9.0566140413284302e-01 2.2416961193084717e-01 - 6.5261769294738770e-01 -7.8972738981246948e-01 - <_> - 7.9825202941894531e+01 - - 1 2 2589 1.8500000000000000e+01 0 -1 2590 - 7.8500000000000000e+01 -2 -3 2591 5.5000000000000000e+00 - - -5.0458520650863647e-02 6.2098169326782227e-01 - -6.2433195114135742e-01 7.0211088657379150e-01 - <_> - 7.9897819519042969e+01 - - 1 2 2592 5.0000000000000000e-01 0 -1 2593 - 7.5000000000000000e+00 -2 -3 2594 3.6500000000000000e+01 - - -4.5179387927055359e-01 4.7666555643081665e-01 - -5.4754704236984253e-01 7.9487584531307220e-02 - <_> - 8.0220909118652344e+01 - - 1 2 2595 1.5000000000000000e+00 0 -1 2596 - 3.5000000000000000e+00 -2 -3 2597 2.3025000000000000e+03 - - 5.9295910596847534e-01 -4.7368842363357544e-01 - 3.2309135794639587e-01 -3.6595731973648071e-01 - <_> - 8.0416793823242188e+01 - - 1 2 2598 5.7650000000000000e+02 0 -1 2599 - 6.8250000000000000e+02 -2 -3 2600 423. - - -8.3457779884338379e-01 9.4248223304748535e-01 - 1.9588518142700195e-01 -8.9797055721282959e-01 - <_> - 8.0621925354003906e+01 - - 1 2 2601 4.3500000000000000e+01 0 -1 2602 - 4.5000000000000000e+00 -2 -3 2603 1.6500000000000000e+01 - - 5.7445579767227173e-01 -7.1823668479919434e-01 - -8.5307145118713379e-01 2.0513093471527100e-01 - <_> - 8.0483642578125000e+01 - - 1 2 2604 1.5000000000000000e+00 0 -1 2605 - 1.3500000000000000e+01 -2 -3 2606 1.5000000000000000e+00 - - -8.1219720840454102e-01 2.1613596379756927e-01 - 8.3621460199356079e-01 -6.8892109394073486e-01 - <_> - 8.0708099365234375e+01 - - 1 2 2607 1.5000000000000000e+00 0 -1 2608 - 1.5000000000000000e+00 -2 -3 2609 1.5000000000000000e+00 - - -4.5658573508262634e-01 4.5419740676879883e-01 - 3.7913042306900024e-01 -4.2572236061096191e-01 - <_> - 8.0967964172363281e+01 - - 1 2 2610 1.7225000000000000e+03 0 -1 2611 904. -2 -3 2612 - 48. - - -4.9103862047195435e-01 2.5986543297767639e-01 - -6.5187561511993408e-01 7.3263108730316162e-01 - <_> - 8.1015785217285156e+01 - - 1 2 2613 8.5500000000000000e+01 0 -1 2614 - 3.2500000000000000e+01 -2 -3 2615 1.6500000000000000e+01 - - 3.0590304732322693e-01 -6.0726463794708252e-01 - 4.5478045940399170e-01 -2.1701261401176453e-01 - <_> - 8.1222023010253906e+01 - - 1 2 2616 1.1500000000000000e+01 0 -1 2617 - 3.5000000000000000e+00 -2 -3 2618 570. - - 4.0577322244644165e-01 -2.8158581256866455e-01 - -7.0219916105270386e-01 7.8437590599060059e-01 - <_> - 8.1114990234375000e+01 - - 1 2 2619 1.5000000000000000e+00 0 -1 2620 - 5.0000000000000000e-01 -2 -3 2621 5.0000000000000000e-01 - - 4.7717106342315674e-01 -8.8117665052413940e-01 - 3.8160988688468933e-01 -1.6836205124855042e-01 - <_> - 8.0563499450683594e+01 - - 1 2 2622 2.5500000000000000e+01 0 -1 2623 - 1.2500000000000000e+01 -2 -3 2624 5.9500000000000000e+01 - - -5.5149054527282715e-01 3.2653099298477173e-01 - 3.5567849874496460e-01 -6.7506045103073120e-01 - <_> - 8.1009407043457031e+01 - - 1 2 2625 3.5000000000000000e+00 0 -1 2626 - 2.2985000000000000e+03 -2 -3 2627 5.5000000000000000e+00 - - 4.4590899348258972e-01 -2.8159150481224060e-01 - -5.6732189655303955e-01 2.0876012742519379e-01 - <_> - 8.1270759582519531e+01 - - 1 2 2628 1.3500000000000000e+01 0 -1 2629 - 4.4500000000000000e+01 -2 -3 2630 3.9500000000000000e+01 - - 1.7286604642868042e-01 -7.5421804189682007e-01 - 2.6134765148162842e-01 -5.9037572145462036e-01 - <_> - 8.1395576477050781e+01 - - 1 2 2631 4.4750000000000000e+02 0 -1 2632 - 1.9500000000000000e+01 -2 -3 2633 2.7965000000000000e+03 - - 1.2481955438852310e-01 -4.5122003555297852e-01 - 7.7366709709167480e-01 -3.6004805564880371e-01 - <_> - 8.1301132202148438e+01 - - 1 2 2634 2.5000000000000000e+00 0 -1 2635 6. -2 -3 2636 - 1.3995000000000000e+03 - - 1. -1. 4.4335600733757019e-01 -9.4446659088134766e-02 - <_> - 8.1370132446289062e+01 - - 1 2 2637 4.1250000000000000e+02 0 -1 2638 - 1.5000000000000000e+00 -2 -3 2639 7.5000000000000000e+00 - - 6.9000430405139923e-02 -4.9422886967658997e-01 - -9.1928571462631226e-01 4.6428659558296204e-01 - <_> - 8.1621879577636719e+01 - - 1 2 2640 2.8500000000000000e+01 0 -1 2641 - 2.6500000000000000e+01 -2 -3 2642 1.5500000000000000e+01 - - -4.7164541482925415e-01 2.5174945592880249e-01 - 1.3210830092430115e-01 -8.8470876216888428e-01 - <_> - 8.2271644592285156e+01 - - 1 2 2643 2.5000000000000000e+00 0 -1 2644 - 1.0500000000000000e+01 -2 -3 2645 86. - - -6.9350771605968475e-02 6.4976197481155396e-01 - -7.7881592512130737e-01 -6.0378432273864746e-02 - <_> - 8.2486991882324219e+01 - - 1 2 2646 2.7500000000000000e+01 0 -1 2647 - 4.5000000000000000e+00 -2 -3 2648 6.5000000000000000e+00 - - -8.2361882925033569e-01 3.2168322801589966e-01 - 2.4581556022167206e-01 -5.5088657140731812e-01 - <_> - 8.2648330688476562e+01 - - 1 2 2649 1.1500000000000000e+01 0 -1 2650 - 2.5000000000000000e+00 -2 -3 2651 552. - - 5.5005900561809540e-02 -6.6145080327987671e-01 - -9.3321514129638672e-01 2.9643073678016663e-01 - <_> - 8.2730377197265625e+01 - - 1 2 2652 1835. 0 -1 2653 9026. -2 -3 2654 - 5.0000000000000000e-01 - - -8.2883286476135254e-01 9.0321773290634155e-01 - 8.2042239606380463e-02 -4.4094491004943848e-01 - <_> - 8.2976600646972656e+01 - - 1 2 2655 7.5000000000000000e+00 0 -1 2656 27. -2 -3 2657 - 7.7500000000000000e+01 - - -6.6883772611618042e-01 8.2824200391769409e-01 - 2.4622967839241028e-01 -7.1693640947341919e-01 - <_> - 8.2621650695800781e+01 - - 1 2 2658 8.5000000000000000e+00 0 -1 2659 - 5.0000000000000000e-01 -2 -3 2660 55. - - 2.1821559965610504e-01 -3.5495325922966003e-01 - -5.7552605867385864e-01 6.4010292291641235e-01 - <_> - 8.2944847106933594e+01 - - 1 2 2661 5.5000000000000000e+00 0 -1 2662 9109. -2 -3 2663 - 3.0500000000000000e+01 - - 3.6217045038938522e-02 -6.7411881685256958e-01 - 4.6031165122985840e-01 -1.3432784378528595e-01 - <_> - 8.2844596862792969e+01 - - 1 2 2664 4.5000000000000000e+00 0 -1 2665 - 1.9500000000000000e+01 -2 -3 2666 5.0000000000000000e-01 - - -6.6067945957183838e-01 6.5172028541564941e-01 - 5.3896325826644897e-01 -1.0024529695510864e-01 - <_> - 8.2988021850585938e+01 - - 1 2 2667 2.3500000000000000e+01 0 -1 2668 - 3.5000000000000000e+00 -2 -3 2669 5.5500000000000000e+01 - - 3.6205202341079712e-01 -4.8302540183067322e-01 - -3.1453946232795715e-01 4.5836016535758972e-01 - <_> - 8.3242561340332031e+01 - - 1 2 2670 9.0500000000000000e+01 0 -1 2671 - 4.1500000000000000e+01 -2 -3 2672 3.9500000000000000e+01 - - 2.5454065203666687e-01 -3.1304958462715149e-01 - -9.7736436128616333e-01 6.2847685813903809e-01 - <_> - 8.3276382446289062e+01 - - 1 2 2673 1.7500000000000000e+01 0 -1 2674 - 8.3500000000000000e+01 -2 -3 2675 5.5000000000000000e+00 - - 5.6938213109970093e-01 -9.2754542827606201e-01 - 3.0042541027069092e-01 -2.8111898899078369e-01 - <_> - 8.2934799194335938e+01 - - 1 2 2676 3.3500000000000000e+01 0 -1 2677 - 3.6050000000000000e+02 -2 -3 2678 94. - - -3.8239040970802307e-01 1.4262221753597260e-01 - 7.1967273950576782e-01 -7.4638730287551880e-01 - <_> - 8.3355155944824219e+01 - - 1 2 2679 6.5000000000000000e+00 0 -1 2680 25. -2 -3 2681 - 1.5000000000000000e+00 - - -9.2031919956207275e-01 1. 4.2035222053527832e-01 - -1.8400678038597107e-01 - <_> - 8.3341117858886719e+01 - - 1 2 2682 2.7550000000000000e+02 0 -1 2683 - 3.9500000000000000e+01 -2 -3 2684 1.7500000000000000e+01 - - -3.1554982066154480e-01 2.4787786602973938e-01 - -9.8996192216873169e-01 1. - <_> - 8.3088867187500000e+01 - - 1 2 2685 5.0000000000000000e-01 0 -1 2686 - 3.4500000000000000e+01 -2 -3 2687 3.3250000000000000e+02 - - 7.6295363903045654e-01 -3.0974990129470825e-01 - -2.5224679708480835e-01 6.2690478563308716e-01 - <_> - 8.3444519042968750e+01 - - 1 2 2688 1.5000000000000000e+00 0 -1 2689 - 6.6500000000000000e+01 -2 -3 2690 5.0000000000000000e-01 - - -4.7374388575553894e-01 3.5564544796943665e-01 - 2.2661061584949493e-01 -5.4821664094924927e-01 - <_> - 8.3531219482421875e+01 - - 1 2 2691 1.5450000000000000e+02 0 -1 2692 - 3.2500000000000000e+01 -2 -3 2693 1.9500000000000000e+01 - - -2.1394637227058411e-01 8.1045120954513550e-01 - -4.8737204074859619e-01 8.6701557040214539e-02 - <_> - 8.3356086730957031e+01 - - 1 2 2694 3.5000000000000000e+00 0 -1 2695 - 9.5000000000000000e+00 -2 -3 2696 2.1500000000000000e+01 - - -3.3526990562677383e-02 5.4166865348815918e-01 - -6.0305202007293701e-01 7.6919454336166382e-01 - <_> - 8.3536964416503906e+01 - - 1 2 2697 2.7950000000000000e+02 0 -1 2698 - 2.1500000000000000e+01 -2 -3 2699 3.5045000000000000e+03 - - -4.9123385548591614e-01 5.2362555265426636e-01 - -7.9040545225143433e-01 -3.3013910055160522e-02 - <_> - 8.3796424865722656e+01 - - 1 2 2700 9.5000000000000000e+00 0 -1 2701 - 4.5000000000000000e+00 -2 -3 2702 1.7500000000000000e+01 - - 4.8670431971549988e-01 -2.3416480422019958e-01 - -4.7568261623382568e-01 2.2792084515094757e-01 - <_> - 8.4059371948242188e+01 - - 1 2 2703 5.5500000000000000e+01 0 -1 2704 - 5.0000000000000000e-01 -2 -3 2705 3.9185000000000000e+03 - - 2.2618722915649414e-01 -9.2116522789001465e-01 - -3.2166120409965515e-01 2.6295122504234314e-01 - <_> - 8.4028038024902344e+01 - - 1 2 2706 1.1500000000000000e+01 0 -1 2707 15. -2 -3 2708 - 4.5000000000000000e+00 - - 8.7838518619537354e-01 -8.4853267669677734e-01 - 3.6655527353286743e-01 -1.8356652557849884e-01 - <_> - 8.3846260070800781e+01 - - 1 2 2709 5.5000000000000000e+00 0 -1 2710 325. -2 -3 2711 - 9.5000000000000000e+00 - - -8.7982141971588135e-01 1. 3.4321373701095581e-01 - -1.8177768588066101e-01 - <_> - 8.4174667358398438e+01 - - 1 2 2712 9.5000000000000000e+00 0 -1 2713 - 1.9050000000000000e+02 -2 -3 2714 4.5000000000000000e+00 - - 6.9107550382614136e-01 -7.7517443895339966e-01 - 5.7090425491333008e-01 -1.1606752872467041e-01 - <_> - 8.4324356079101562e+01 - - 1 2 2715 2.7500000000000000e+01 0 -1 2716 - 4.0885000000000000e+03 -2 -3 2717 8.5000000000000000e+00 - - 8.7019419670104980e-01 -8.7088418006896973e-01 - 2.1278975903987885e-01 -4.6584972739219666e-01 - <_> - 8.4102806091308594e+01 - - 1 2 2718 2.1250000000000000e+02 0 -1 2719 - 5.6500000000000000e+01 -2 -3 2720 5.0000000000000000e-01 - - 2.1476839482784271e-01 -4.4505792856216431e-01 1. - -7.7488011121749878e-01 - <_> - 8.4038200378417969e+01 - - 1 2 2721 9.4500000000000000e+01 0 -1 2722 - 1.5000000000000000e+00 -2 -3 2723 98. - - 1.9173437356948853e-01 -5.0092142820358276e-01 - -4.4755691289901733e-01 4.7253641486167908e-01 - <_> - 8.4137344360351562e+01 - - 1 2 2724 1.1515000000000000e+03 0 -1 2725 - 2.0050000000000000e+02 -2 -3 2726 4.8500000000000000e+01 - - -8.2353651523590088e-02 5.8139425516128540e-01 - 3.6044213920831680e-02 -6.4356809854507446e-01 - <_> - 8.4309326171875000e+01 - - 1 2 2727 1.0500000000000000e+01 0 -1 2728 2663. -2 -3 2729 - 2.4250000000000000e+02 - - 4.7916080802679062e-02 -5.9066039323806763e-01 - 7.3575264215469360e-01 -8.9028924703598022e-01 - <_> - 8.4420402526855469e+01 - - 1 2 2730 5.4665000000000000e+03 0 -1 2731 - 1.5000000000000000e+00 -2 -3 2732 4.6500000000000000e+01 - - 2.7950283885002136e-01 -2.4711169302463531e-01 - -9.4440460205078125e-01 1. - <_> - 8.4394798278808594e+01 - - 1 2 2733 1.1050000000000000e+02 0 -1 2734 63. -2 -3 2735 - 6.4650000000000000e+02 - - 4.1327634453773499e-01 -8.2762449979782104e-01 - -2.5601835921406746e-02 7.5820297002792358e-01 - <_> - 8.4607276916503906e+01 - - 1 2 2736 2.5000000000000000e+00 0 -1 2737 - 2.5500000000000000e+01 -2 -3 2738 1.0500000000000000e+01 - - -3.7000726908445358e-02 6.8266022205352783e-01 - 1.4960629865527153e-02 -6.4148795604705811e-01 - <_> - 8.5164596557617188e+01 - - 1 2 2739 5.3500000000000000e+01 0 -1 2740 - 2.9500000000000000e+01 -2 -3 2741 1.0850000000000000e+02 - - -1.2329825013875961e-01 5.5731654167175293e-01 - -8.3035022020339966e-01 7.4285131692886353e-01 - <_> - 8.5318458557128906e+01 - - 1 2 2742 6.0500000000000000e+01 0 -1 2743 - 5.5750000000000000e+02 -2 -3 2744 2.4455000000000000e+03 - - -9.1876357793807983e-01 1.5386807918548584e-01 1. - -8.4595882892608643e-01 - <_> - 8.5138092041015625e+01 - - 1 2 2745 1.4500000000000000e+01 0 -1 2746 133. -2 -3 2747 - 1.5000000000000000e+00 - - 9.3546825647354126e-01 -7.7808952331542969e-01 - 4.2497289180755615e-01 -1.8036651611328125e-01 - <_> - 8.5170181274414062e+01 - - 1 2 2748 2.6500000000000000e+01 0 -1 2749 - 1.6500000000000000e+01 -2 -3 2750 3.0550000000000000e+02 - - 9.9500669166445732e-03 -6.0836273431777954e-01 - 5.2151191234588623e-01 -3.4265536069869995e-01 - <_> - 8.5376792907714844e+01 - - 1 2 2751 3.5000000000000000e+00 0 -1 2752 - 1.6500000000000000e+01 -2 -3 2753 4.2500000000000000e+01 - - 4.3600571155548096e-01 -8.0105257034301758e-01 - -5.1988095045089722e-01 2.0660850405693054e-01 - <_> - 8.5609893798828125e+01 - - 1 2 2754 1.0500000000000000e+01 0 -1 2755 - 1.5000000000000000e+00 -2 -3 2756 2.5000000000000000e+00 - - -6.2382709980010986e-01 4.6645849943161011e-01 - 3.5961329936981201e-02 -5.3663784265518188e-01 - <_> - 8.5939903259277344e+01 - - 1 2 2757 9.5500000000000000e+01 0 -1 2758 11828. -2 -3 2759 - 3.8450000000000000e+02 - - -7.1205846965312958e-02 -9.5047873258590698e-01 - 3.3001002669334412e-01 -5.8486175537109375e-01 - <_> - 8.5633140563964844e+01 - - 1 2 2760 1.5000000000000000e+00 0 -1 2761 - 7.5000000000000000e+00 -2 -3 2762 1.5605000000000000e+03 - - -1.8193472921848297e-01 5.5474883317947388e-01 - 6.6240763664245605e-01 -3.6709865927696228e-01 - <_> - 8.5665580749511719e+01 - - 1 2 2763 5.0000000000000000e-01 0 -1 2764 - 3.5000000000000000e+00 -2 -3 2765 1.6500000000000000e+01 - - -6.3473922014236450e-01 4.5258450508117676e-01 - -6.2842214107513428e-01 3.2442636787891388e-02 - <_> - 8.5813781738281250e+01 - - 1 2 2766 1.8050000000000000e+02 0 -1 2767 - 1.5000000000000000e+00 -2 -3 2768 6.5000000000000000e+00 - - -8.1317859888076782e-01 1.4819937944412231e-01 - 7.9641395807266235e-01 -9.0252667665481567e-01 - <_> - 8.6130287170410156e+01 - - 1 2 2769 2.5000000000000000e+00 0 -1 2770 - 1.5000000000000000e+00 -2 -3 2771 1.0850000000000000e+02 - - -8.2908695936203003e-01 6.0830992460250854e-01 - -3.5930514335632324e-01 2.5600242614746094e-01 - <_> - 8.5960426330566406e+01 - - 1 2 2772 3.5000000000000000e+00 0 -1 2773 - 2.5000000000000000e+00 -2 -3 2774 3.5000000000000000e+00 - - 4.0980219841003418e-01 -8.7654078006744385e-01 - 3.7149679660797119e-01 -1.6985960304737091e-01 - <_> - 8.5911773681640625e+01 - - 1 2 2775 2.0750000000000000e+02 0 -1 2776 - 2.5000000000000000e+00 -2 -3 2777 4.0550000000000000e+02 - - 6.4895875751972198e-02 -5.2602392435073853e-01 - 8.3245736360549927e-01 -4.8650942742824554e-02 - <_> - 8.6134010314941406e+01 - - 1 2 2778 6.2500000000000000e+01 0 -1 2779 - 3.6650000000000000e+02 -2 -3 2780 4.5500000000000000e+01 - - -7.8410977125167847e-01 2.2223210334777832e-01 - -8.4461647272109985e-01 7.4402904510498047e-01 - <_> - 8.6428909301757812e+01 - - 1 2 2781 2.5000000000000000e+00 0 -1 2782 - 6.5000000000000000e+00 -2 -3 2783 4.1750000000000000e+02 - - 5.1555430889129639e-01 -1.5588639676570892e-01 - 1.7773015797138214e-01 -5.0610744953155518e-01 - <_> - 8.6826782226562500e+01 - - 1 2 2784 1.5505000000000000e+03 0 -1 2785 - 5.0000000000000000e-01 -2 -3 2786 1.4500000000000000e+01 - - 3.5983416438102722e-01 -5.7004302740097046e-01 - -5.4764652252197266e-01 3.9787346124649048e-01 - <_> - 8.7037475585937500e+01 - - 1 2 2787 5.0000000000000000e-01 0 -1 2788 - 8.5000000000000000e+00 -2 -3 2789 5.0000000000000000e-01 - - -7.9977160692214966e-01 3.6234867572784424e-01 - 2.8641289472579956e-01 -4.9720412492752075e-01 - <_> - 8.6423477172851562e+01 - - 1 2 2790 1.4500000000000000e+01 0 -1 2791 47. -2 -3 2792 - 3.2500000000000000e+01 - - 4.9334439635276794e-01 -7.6565510034561157e-01 - 2.7979478240013123e-01 -3.8790243864059448e-01 - <_> - 8.6541648864746094e+01 - - 1 2 2793 3.8500000000000000e+01 0 -1 2794 - 1.5000000000000000e+00 -2 -3 2795 2.0850000000000000e+02 - - 1.1817480623722076e-01 -4.9608191847801208e-01 - 4.3412643671035767e-01 -8.0814820528030396e-01 - <_> - 8.6554786682128906e+01 - - 1 2 2796 5.0000000000000000e-01 0 -1 2797 - 5.0000000000000000e-01 -2 -3 2798 1.5500000000000000e+01 - - -7.7674239873886108e-01 4.3930459022521973e-01 - 1.3139089569449425e-02 -6.7160016298294067e-01 - <_> - 8.6836524963378906e+01 - - 1 2 2799 2.1500000000000000e+01 0 -1 2800 - 3.2750000000000000e+02 -2 -3 2801 1.2500000000000000e+01 - - -3.1266799569129944e-01 6.9435644149780273e-01 - -5.9980082511901855e-01 6.5070140361785889e-01 - <_> - 8.6815773010253906e+01 - - 1 2 2802 9.8850000000000000e+02 0 -1 2803 - 4.5000000000000000e+00 -2 -3 2804 3.1500000000000000e+01 - - 7.5975960493087769e-01 -1.4526490122079849e-02 - -4.3337148427963257e-01 3.4662330150604248e-01 - <_> - 8.6753486633300781e+01 - - 1 2 2805 5.8750000000000000e+02 0 -1 2806 - 4.0050000000000000e+02 -2 -3 2807 5.8550000000000000e+02 - - -5.1701253652572632e-01 8.5829895734786987e-01 - 6.8487954139709473e-01 -6.2283929437398911e-02 - <_> - 8.7153579711914062e+01 - - 1 2 2808 5.0000000000000000e-01 0 -1 2809 - 2.5000000000000000e+00 -2 -3 2810 9.3050000000000000e+02 - - -7.2558873891830444e-01 4.3454471230506897e-01 - -8.1130824983119965e-02 -8.3618861436843872e-01 - <_> - 8.7351936340332031e+01 - - 1 2 2811 3.5000000000000000e+00 0 -1 2812 - 7.5000000000000000e+00 -2 -3 2813 1.5000000000000000e+00 - - -9.6148520708084106e-01 4.0121293067932129e-01 - 1.6389970481395721e-01 -5.4697543382644653e-01 - <_> - 8.7288108825683594e+01 - - 1 2 2814 9.8500000000000000e+01 0 -1 2815 - 1.5000000000000000e+00 -2 -3 2816 5.0000000000000000e-01 - - 3.0000725388526917e-01 -5.5716449022293091e-01 - 6.8792611360549927e-01 -6.3822388648986816e-02 - <_> - 8.7567855834960938e+01 - - 1 2 2817 1.2500000000000000e+01 0 -1 2818 - 5.5000000000000000e+00 -2 -3 2819 3.2500000000000000e+01 - - -6.0839080810546875e-01 2.7974289655685425e-01 - -9.0464597940444946e-01 -9.1534465551376343e-02 - <_> - 8.7742805480957031e+01 - - 1 2 2820 2.9050000000000000e+02 0 -1 2821 - 4.0350000000000000e+02 -2 -3 2822 1.5000000000000000e+00 - - -1.1221635341644287e-01 6.0925048589706421e-01 - 3.3704385161399841e-01 -5.3282082080841064e-01 - <_> - 8.7797904968261719e+01 - - 1 2 2823 1.4500000000000000e+01 0 -1 2824 1690. -2 -3 2825 - 7.4500000000000000e+01 - - 5.5097710341215134e-02 -8.7218642234802246e-01 - -7.2020220756530762e-01 3.5318741202354431e-01 - <_> - 8.8284759521484375e+01 - - 1 2 2826 2.2450000000000000e+02 0 -1 2827 - 1.9500000000000000e+01 -2 -3 2828 1.9535000000000000e+03 - - -1.3064707815647125e-01 4.8685196042060852e-01 - -8.4640699625015259e-01 1.8381766974925995e-01 - <_> - 8.8222618103027344e+01 - - 1 2 2829 5.0000000000000000e-01 0 -1 2830 - 1.2500000000000000e+01 -2 -3 2831 4.5000000000000000e+00 - - -5.3857803344726562e-01 5.4414546489715576e-01 - 1.8226167559623718e-01 -5.0997644662857056e-01 - <_> - 8.8490211486816406e+01 - - 1 2 2832 8.5000000000000000e+00 0 -1 2833 1990. -2 -3 2834 - 3.5000000000000000e+00 - - -3.3869510889053345e-01 8.5612648725509644e-01 - 6.6255128383636475e-01 -1.8713159859180450e-01 - <_> - 8.8309280395507812e+01 - - 1 2 2835 5.0000000000000000e-01 0 -1 2836 - 1.5350000000000000e+02 -2 -3 2837 3.0500000000000000e+01 - - 3.7325781583786011e-01 -9.1693335771560669e-01 - -3.7281343340873718e-01 4.3598929047584534e-01 - <_> - 8.8545036315917969e+01 - - 1 2 2838 2.5000000000000000e+00 0 -1 2839 - 3.5000000000000000e+00 -2 -3 2840 9.5000000000000000e+00 - - -8.1305176019668579e-01 2.3575115203857422e-01 - 8.2359343767166138e-01 -5.0804460048675537e-01 - <_> - 8.8620689392089844e+01 - - 1 2 2841 4.7950000000000000e+02 0 -1 2842 - 7.4550000000000000e+02 -2 -3 2843 3.5000000000000000e+00 - - -1. 5.5236303806304932e-01 -4.9426826834678650e-01 - 7.5652711093425751e-02 - <_> - 8.8498481750488281e+01 - - 1 2 2844 5.0000000000000000e-01 0 -1 2845 - 5.0000000000000000e-01 -2 -3 2846 9.6500000000000000e+01 - - -8.3736324310302734e-01 3.9632564783096313e-01 - -7.2766882181167603e-01 4.8122378066182137e-03 - <_> - 8.8912002563476562e+01 - - 1 2 2847 3.5000000000000000e+00 0 -1 2848 - 5.0000000000000000e-01 -2 -3 2849 1.5000000000000000e+00 - - 7.1133011579513550e-01 -1.0473229736089706e-01 - 3.0710890889167786e-01 -4.0350064635276794e-01 - <_> - 8.9316238403320312e+01 - - 1 2 2850 1.6500000000000000e+01 0 -1 2851 - 1.5000000000000000e+00 -2 -3 2852 7.5000000000000000e+00 - - 8.4607600001618266e-04 -7.6641041040420532e-01 - -3.1311124563217163e-01 4.4425663352012634e-01 - <_> - 8.9348419189453125e+01 - - 1 2 2853 1.1500000000000000e+01 0 -1 2854 - 1.7500000000000000e+01 -2 -3 2855 2.0500000000000000e+01 - - -9.8593395948410034e-01 1. 2.4410592019557953e-01 - -3.1496018171310425e-01 - <_> - 8.9189270019531250e+01 - - 1 2 2856 1.6500000000000000e+01 0 -1 2857 - 6.5000000000000000e+00 -2 -3 2858 74. - - 8.4461316466331482e-02 -4.1109508275985718e-01 - 9.0820807218551636e-01 -3.5371799021959305e-02 - <_> - 8.9124603271484375e+01 - - 1 2 2859 5.8750000000000000e+02 0 -1 2860 9863. -2 -3 2861 - 1.2500000000000000e+01 - - -6.3491946458816528e-01 4.8731520771980286e-01 - -5.2020323276519775e-01 3.2958313822746277e-01 - <_> - 8.9286071777343750e+01 - - 1 2 2862 9.7500000000000000e+01 0 -1 2863 - 2.1950000000000000e+02 -2 -3 2864 5.0000000000000000e-01 - - 4.2516252398490906e-01 -1. 2.8237330913543701e-01 - -5.0328004360198975e-01 - <_> - 8.9424316406250000e+01 - - 1 2 2865 5.2500000000000000e+01 0 -1 2866 61. -2 -3 2867 - 1.7500000000000000e+01 - - 5.0655448436737061e-01 -5.1969325542449951e-01 - 3.5390514135360718e-01 -4.7365185618400574e-01 - <_> - 8.9726875305175781e+01 - - 1 2 2868 5.8500000000000000e+01 0 -1 2869 - 1.4500000000000000e+01 -2 -3 2870 42. - - 3.0255803465843201e-01 -2.0427562296390533e-01 - -8.5021793842315674e-01 7.0594644546508789e-01 - <_> - 8.9578895568847656e+01 - - 1 2 2871 1.0500000000000000e+01 0 -1 2872 - 1.1950000000000000e+02 -2 -3 2873 24. - - -2.4734574556350708e-01 3.1361401081085205e-01 - 8.7930864095687866e-01 -1. - <_> - 8.9768898010253906e+01 - - 1 2 2874 7.5000000000000000e+00 0 -1 2875 - 7.4500000000000000e+01 -2 -3 2876 2.8500000000000000e+01 - - 3.1221041083335876e-01 -7.0097410678863525e-01 - 2.4191275238990784e-01 -5.3588688373565674e-01 - <_> - 8.9684265136718750e+01 - - 1 2 2877 3.5000000000000000e+00 0 -1 2878 - 2.7950000000000000e+02 -2 -3 2879 4.1500000000000000e+01 - - 1.2314370274543762e-01 -6.7686629295349121e-01 - -3.6168605089187622e-01 3.5209780931472778e-01 - <_> - 8.9795585632324219e+01 - - 1 2 2880 2.1050000000000000e+02 0 -1 2881 - 3.5000000000000000e+00 -2 -3 2882 1.0500000000000000e+01 - - 5.2586346864700317e-01 -3.2540410757064819e-01 - -8.8829517364501953e-01 4.9435129761695862e-01 - <_> - 8.9792076110839844e+01 - - 1 2 2883 2.5000000000000000e+00 0 -1 2884 - 2.9500000000000000e+01 -2 -3 2885 3.9250000000000000e+02 - - -6.1523008346557617e-01 3.7085807323455811e-01 - 9.0023398399353027e-02 -6.0440886020660400e-01 - <_> - 8.9958946228027344e+01 - - 1 2 2886 1.0500000000000000e+01 0 -1 2887 - 1.2500000000000000e+01 -2 -3 2888 1.8500000000000000e+01 - - -5.9052956104278564e-01 2.1934990584850311e-01 - -5.8395588397979736e-01 5.4426544904708862e-01 - <_> - 8.9670410156250000e+01 - - 1 2 2889 1.5000000000000000e+00 0 -1 2890 - 2.5000000000000000e+00 -2 -3 2891 8.5000000000000000e+00 - - -8.5811334848403931e-01 5.2128863334655762e-01 - -3.4101697802543640e-01 2.6454553008079529e-01 - <_> - 8.9847396850585938e+01 - - 1 2 2892 1.4500000000000000e+01 0 -1 2893 - 1.1500000000000000e+01 -2 -3 2894 6.6500000000000000e+01 - - -3.8977336883544922e-01 4.3855726718902588e-01 - -5.0296223163604736e-01 1.7698343098163605e-01 - <_> - 9.0157752990722656e+01 - - 1 2 2895 5.0000000000000000e-01 0 -1 2896 - 8.5000000000000000e+00 -2 -3 2897 4.5000000000000000e+00 - - -4.1999164223670959e-01 3.1035554409027100e-01 - 2.2039012610912323e-01 -5.3406608104705811e-01 - <_> - 9.0098411560058594e+01 - - 1 2 2898 5.0000000000000000e-01 0 -1 2899 - 2.1750000000000000e+02 -2 -3 2900 1.9500000000000000e+01 - - -5.9334795922040939e-02 6.7584723234176636e-01 - -5.2655130624771118e-01 2.6948010921478271e-01 - <_> - 9.0537551879882812e+01 - - 1 2 2901 5.0000000000000000e-01 0 -1 2902 - 7.5000000000000000e+00 -2 -3 2903 2.2500000000000000e+01 - - -6.9564437866210938e-01 4.3913722038269043e-01 - -3.6194628477096558e-01 3.8801836967468262e-01 - <_> - 9.0335647583007812e+01 - - 1 2 2904 1.5000000000000000e+00 0 -1 2905 - 5.4550000000000000e+02 -2 -3 2906 2.5000000000000000e+00 - - 1. -9.8192542791366577e-01 3.3667489886283875e-01 - -2.0190110802650452e-01 - <_> - 9.0692535400390625e+01 - - 1 2 2907 1.5000000000000000e+00 0 -1 2908 - 8.5000000000000000e+00 -2 -3 2909 344. - - -4.5181885361671448e-01 3.5688367486000061e-01 - -5.9278815984725952e-01 6.4385175704956055e-02 - <_> - 9.0584419250488281e+01 - - 1 2 2910 4.6500000000000000e+01 0 -1 2911 - 2.5000000000000000e+00 -2 -3 2912 6.5000000000000000e+00 - - 4.3527498841285706e-01 -1.0811836272478104e-01 - -6.3831877708435059e-01 1. - <_> - 9.0788459777832031e+01 - - 1 2 2913 294. 0 -1 2914 14. -2 -3 2915 - 4.4500000000000000e+01 - - -8.4630513191223145e-01 1. 2.0404133200645447e-01 - -4.8527365922927856e-01 - <_> - 9.0862548828125000e+01 - - 1 2 2916 3.3500000000000000e+01 0 -1 2917 52. -2 -3 2918 - 5.2705000000000000e+03 - - 7.2816586494445801e-01 -5.4465806484222412e-01 - -1.1197114735841751e-01 5.4565620422363281e-01 - <_> - 9.0902687072753906e+01 - - 1 2 2919 4.1050000000000000e+02 0 -1 2920 139. -2 -3 2921 - 1.5000000000000000e+00 - - -9.1185075044631958e-01 6.4714074134826660e-01 - 1.9417783617973328e-01 -3.6837339401245117e-01 - <_> - 9.0985298156738281e+01 - - 1 2 2922 5.7650000000000000e+02 0 -1 2923 - 2.9450000000000000e+02 -2 -3 2924 3.9150000000000000e+02 - - -8.4534245729446411e-01 1. 4.4867873191833496e-01 - -1.7172452807426453e-01 - <_> - 9.1107513427734375e+01 - - 1 2 2925 3.5000000000000000e+00 0 -1 2926 - 1.5500000000000000e+01 -2 -3 2927 4.2500000000000000e+01 - - -8.3989793062210083e-01 8.9864379167556763e-01 - 2.8704452514648438e-01 -2.8833448886871338e-01 - <_> - 9.1266738891601562e+01 - - 1 2 2928 4.9775000000000000e+03 0 -1 2929 - 4.5000000000000000e+00 -2 -3 2930 1.9865000000000000e+03 - - -7.4095195531845093e-01 1.5922544896602631e-01 - -9.0941101312637329e-01 1.8585844337940216e-01 - <_> - 9.1225799560546875e+01 - - 1 2 2931 5.0000000000000000e-01 0 -1 2932 - 4.5000000000000000e+00 -2 -3 2933 1.4500000000000000e+01 - - -7.6407551765441895e-01 5.0083768367767334e-01 - -7.2587943077087402e-01 -5.0088282674551010e-02 - <_> - 9.0573638916015625e+01 - - 1 2 2934 8.5000000000000000e+00 0 -1 2935 - 2.7500000000000000e+01 -2 -3 2936 9.5000000000000000e+00 - - -7.4017934501171112e-02 5.9898555278778076e-01 - 1.7782434821128845e-01 -6.5216350555419922e-01 - <_> - 9.0737045288085938e+01 - - 1 2 2937 5.0000000000000000e-01 0 -1 2938 - 1.0450000000000000e+02 -2 -3 2939 1.6950000000000000e+02 - - 6.0130667686462402e-01 -9.1431754827499390e-01 - -4.1352280974388123e-01 1.6340811550617218e-01 - <_> - 9.1356544494628906e+01 - - 1 2 2940 1.5000000000000000e+00 0 -1 2941 - 7.5000000000000000e+00 -2 -3 2942 1.6805000000000000e+03 - - -2.0215752720832825e-01 6.1950212717056274e-01 - -5.5768364667892456e-01 3.5280909389257431e-02 - <_> - 9.0944335937500000e+01 - - 1 2 2943 1.1155000000000000e+03 0 -1 2944 - 1.3500000000000000e+01 -2 -3 2945 4.1950000000000000e+02 - - 6.8771177530288696e-01 -9.7811706364154816e-02 - -4.1221308708190918e-01 1.9626976549625397e-01 - <_> - 9.1227783203125000e+01 - - 1 2 2946 1.7535000000000000e+03 0 -1 2947 - 6.5000000000000000e+00 -2 -3 2948 8.3500000000000000e+01 - - 2.8345218300819397e-01 -2.8811171650886536e-01 - -9.1736477613449097e-01 1. - <_> - 9.1561256408691406e+01 - - 1 2 2949 3.9500000000000000e+01 0 -1 2950 169. -2 -3 2951 - 3.5000000000000000e+00 - - -7.5076478719711304e-01 8.8347315788269043e-01 - 3.4602180123329163e-01 -2.1803687512874603e-01 - <_> - 9.0775177001953125e+01 - - 1 2 2952 1.2550000000000000e+02 0 -1 2953 - 8.5000000000000000e+00 -2 -3 2954 156. - - -3.8729524612426758e-01 2.9583999514579773e-01 - -7.9863160848617554e-01 3.9145687222480774e-01 - <_> - 9.1042625427246094e+01 - - 1 2 2955 2.5000000000000000e+00 0 -1 2956 - 2.5750000000000000e+02 -2 -3 2957 4685. - - 2.6745319366455078e-01 -6.6209262609481812e-01 - -7.7674686908721924e-01 7.1668751537799835e-02 - <_> - 9.1575469970703125e+01 - - 1 2 2958 1.0500000000000000e+01 0 -1 2959 - 1.0550000000000000e+02 -2 -3 2960 4.5500000000000000e+01 - - 5.3284192085266113e-01 -3.2092022895812988e-01 - -9.5425200462341309e-01 5.0468903779983521e-01 - <_> - 9.1930732727050781e+01 - - 1 2 2961 1.2500000000000000e+01 0 -1 2962 - 1.8950000000000000e+02 -2 -3 2963 2.5000000000000000e+00 - - -2.8867003321647644e-01 3.5526236891746521e-01 - 2.9676264524459839e-01 -6.0322642326354980e-01 - <_> - 9.2231742858886719e+01 - - 1 2 2964 7.5000000000000000e+00 0 -1 2965 - 1.9500000000000000e+01 -2 -3 2966 4.1500000000000000e+01 - - -7.3552119731903076e-01 3.0101212859153748e-01 - -5.0962239503860474e-01 5.0894033908843994e-01 - <_> - 9.2388069152832031e+01 - - 1 2 2967 1.1500000000000000e+01 0 -1 2968 - 1.5000000000000000e+00 -2 -3 2969 2.6500000000000000e+01 - - 1.5632244944572449e-01 -4.4891685247421265e-01 - 6.4296531677246094e-01 -5.9720402956008911e-01 - <_> - 9.2552001953125000e+01 - - 1 2 2970 1.0675000000000000e+03 0 -1 2971 - 4.3756500000000000e+04 -2 -3 2972 4.9450000000000000e+02 - - -1. 8.0944263935089111e-01 -3.8900658488273621e-01 - 1.6393135488033295e-01 - <_> - 9.2899009704589844e+01 - - 1 2 2973 2.5000000000000000e+00 0 -1 2974 - 1.4055000000000000e+03 -2 -3 2975 1.8500000000000000e+01 - - 1.6320782899856567e-01 -5.9554386138916016e-01 - -7.9579621553421021e-01 3.4700983762741089e-01 - <_> - 9.2847854614257812e+01 - - 1 2 2976 8.5500000000000000e+01 0 -1 2977 - 1.2550000000000000e+02 -2 -3 2978 5.5000000000000000e+00 - - -1. 9.6116375923156738e-01 2.2865201532840729e-01 - -2.7930772304534912e-01 - <_> - 9.2859100341796875e+01 - - 1 2 2979 1.1350000000000000e+02 0 -1 2980 - 2.0500000000000000e+01 -2 -3 2981 1.6150000000000000e+02 - - 1.7545458674430847e-01 -7.0411294698715210e-01 - 3.2774302363395691e-01 -6.4024138450622559e-01 - <_> - 9.2426673889160156e+01 - - 1 2 2982 2.5000000000000000e+00 0 -1 2983 - 2.7500000000000000e+01 -2 -3 2984 1.0350000000000000e+02 - - 6.4859634637832642e-01 -6.6807705163955688e-01 - 2.5129410624504089e-01 -4.3242052197456360e-01 - <_> - 9.2854904174804688e+01 - - 1 2 2985 3.0050000000000000e+02 0 -1 2986 333. -2 -3 2987 - 3.2045000000000000e+03 - - -3.9532727003097534e-01 8.3435887098312378e-01 - 4.2823007702827454e-01 -3.9525333046913147e-01 - <_> - 9.3196861267089844e+01 - - 1 2 2988 2.5000000000000000e+00 0 -1 2989 - 6.5000000000000000e+00 -2 -3 2990 4.8895000000000000e+03 - - -8.9721941947937012e-01 3.4195712208747864e-01 - 6.4947992563247681e-01 -4.5169207453727722e-01 - <_> - 9.3306480407714844e+01 - - 1 2 2991 2.7500000000000000e+01 0 -1 2992 - 1.5000000000000000e+00 -2 -3 2993 4.5000000000000000e+00 - - 1.0962056368589401e-01 -4.2897370457649231e-01 - 9.1374301910400391e-01 -6.3376551866531372e-01 - <_> - 9.3460906982421875e+01 - - 1 2 2994 1.0500000000000000e+01 0 -1 2995 - 3.5000000000000000e+00 -2 -3 2996 3.5000000000000000e+00 - - 2.2791311144828796e-01 -5.2986472845077515e-01 - 4.5877307653427124e-01 -1.7966294288635254e-01 - <_> - 9.3358589172363281e+01 - - 1 2 2997 3.4500000000000000e+01 0 -1 2998 222. -2 -3 2999 - 2.0750000000000000e+02 - - 7.5331348180770874e-01 -9.4210654497146606e-01 - -1.0231721401214600e-01 4.7118717432022095e-01 - <_> - 9.3666183471679688e+01 - - 1 2 3000 2.2500000000000000e+01 0 -1 3001 - 1.8450000000000000e+02 -2 -3 3002 2.5000000000000000e+00 - - -3.5824659466743469e-01 3.0759900808334351e-01 - 6.4143782854080200e-01 -6.5782296657562256e-01 - <_> - 9.3088340759277344e+01 - - 1 2 3003 1.3350000000000000e+02 0 -1 3004 830. -2 -3 3005 - 2.4500000000000000e+01 - - -6.9563269615173340e-01 6.3497310876846313e-01 - -5.7784938812255859e-01 6.1700064688920975e-02 - <_> - 9.2995674133300781e+01 - - 1 2 3006 4.5500000000000000e+01 0 -1 3007 - 1.5000000000000000e+00 -2 -3 3008 6.6500000000000000e+01 - - 4.5369678735733032e-01 -9.2660412192344666e-02 - -7.4712693691253662e-01 6.0710644721984863e-01 - <_> - 9.2739532470703125e+01 - - 1 2 3009 1.2950000000000000e+02 0 -1 3010 1144. -2 -3 3011 - 4.2850000000000000e+02 - - -7.0763772726058960e-01 9.4605678319931030e-01 - -2.5614449381828308e-01 4.1044127941131592e-01 - <_> - 9.2615875244140625e+01 - - 1 2 3012 2.3500000000000000e+01 0 -1 3013 36. -2 -3 3014 - 5.0000000000000000e-01 - - 8.3025622367858887e-01 -8.2933390140533447e-01 - 4.6695771813392639e-01 -1.2365625053644180e-01 - <_> - 9.3196029663085938e+01 - - 1 2 3015 2.0450000000000000e+02 0 -1 3016 - 1.0500000000000000e+01 -2 -3 3017 524. - - -1.5761210024356842e-01 5.8015257120132446e-01 - -8.8289064168930054e-01 2.2438578307628632e-01 - <_> - 9.3732429504394531e+01 - - 1 2 3018 3.3500000000000000e+01 0 -1 3019 - 1.8500000000000000e+01 -2 -3 3020 6.6500000000000000e+01 - - 4.8793593049049377e-01 -5.8576709032058716e-01 - 5.3640323877334595e-01 -8.2473360002040863e-02 - <_> - 9.3099838256835938e+01 - - 1 2 3021 1.3500000000000000e+01 0 -1 3022 - 5.0000000000000000e-01 -2 -3 3023 1.4500000000000000e+01 - - 3.0108803510665894e-01 -6.3259094953536987e-01 - -7.1200174093246460e-01 2.7906426787376404e-01 - <_> - 9.3105216979980469e+01 - - 1 2 3024 3.9050000000000000e+02 0 -1 3025 1243. -2 -3 3026 - 4.2050000000000000e+02 - - -8.8503718376159668e-01 9.7225552797317505e-01 - 5.3784158080816269e-03 -7.7111572027206421e-01 - <_> - 9.3588562011718750e+01 - - 1 2 3027 1.2850000000000000e+02 0 -1 3028 - 9.5000000000000000e+00 -2 -3 3029 3.5000000000000000e+00 - - 3.3606645464897156e-01 -5.4860621690750122e-01 - 4.8334029316902161e-01 -1.3527640700340271e-01 - <_> - 9.3835968017578125e+01 - - 1 2 3030 4.5000000000000000e+00 0 -1 3031 - 4.5000000000000000e+00 -2 -3 3032 1.3415000000000000e+03 - - -7.8450918197631836e-01 1.6970160603523254e-01 - -5.8498537540435791e-01 2.4740667641162872e-01 - <_> - 9.4142906188964844e+01 - - 1 2 3033 4.3500000000000000e+01 0 -1 3034 - 4.5000000000000000e+00 -2 -3 3035 3.2500000000000000e+01 - - 3.0693769454956055e-01 -2.6115962862968445e-01 - -8.9926475286483765e-01 7.7170163393020630e-01 - <_> - 9.4121742248535156e+01 - - 1 2 3036 3.3500000000000000e+01 0 -1 3037 5772. -2 -3 3038 - 8.2650000000000000e+02 - - 6.0314506292343140e-01 -8.1919574737548828e-01 - -2.1161338314414024e-02 7.4580943584442139e-01 - <_> - 9.3867355346679688e+01 - - 1 2 3039 1.5000000000000000e+00 0 -1 3040 - 2.5000000000000000e+00 -2 -3 3041 7.6500000000000000e+01 - - -1. 6.5151697397232056e-01 -2.5439009070396423e-01 - 4.9923765659332275e-01 - <_> - 9.4093467712402344e+01 - - 1 2 3042 7584. 0 -1 3043 5.1250000000000000e+02 -2 -3 3044 - 1.1500000000000000e+01 - - -4.7158271074295044e-01 2.2611454129219055e-01 - -8.3964759111404419e-01 4.5222747325897217e-01 - <_> - 9.4337669372558594e+01 - - 1 2 3045 1.5625000000000000e+03 0 -1 3046 - 1.0615000000000000e+03 -2 -3 3047 2.5000000000000000e+00 - - -1. 9.3781590461730957e-01 2.4420407414436340e-01 - -2.9586532711982727e-01 - <_> - 9.4508171081542969e+01 - - 1 2 3048 1.3500000000000000e+01 0 -1 3049 23. -2 -3 3050 - 1.5245000000000000e+03 - - -8.5904693603515625e-01 1.7050011456012726e-01 - 9.2488127946853638e-01 -9.8964858055114746e-01 - <_> - 9.4239341735839844e+01 - - 1 2 3051 5.0000000000000000e-01 0 -1 3052 - 5.5000000000000000e+00 -2 -3 3053 1.8500000000000000e+01 - - -8.7914295494556427e-02 5.4742050170898438e-01 - -4.5447856187820435e-01 4.4385817646980286e-01 - <_> - 9.4594245910644531e+01 - - 1 2 3054 1.5000000000000000e+00 0 -1 3055 - 1.5500000000000000e+01 -2 -3 3056 1.1500000000000000e+01 - - 3.5490357875823975e-01 -4.3068945407867432e-01 - -6.6280466318130493e-01 3.0311322771012783e-03 - <_> - 9.4814491271972656e+01 - - 1 2 3057 3.5000000000000000e+00 0 -1 3058 - 5.0000000000000000e-01 -2 -3 3059 4.0550000000000000e+02 - - 7.0450115203857422e-01 -7.8278595209121704e-01 - 2.2024388611316681e-01 -4.0765863656997681e-01 - <_> - 9.4579345703125000e+01 - - 1 2 3060 1.5500000000000000e+01 0 -1 3061 - 1.5000000000000000e+00 -2 -3 3062 1934. - - 1.5189912915229797e-01 -4.7490403056144714e-01 - -2.3514933884143829e-01 6.0529416799545288e-01 - <_> - 9.4922325134277344e+01 - - 1 2 3063 5.0000000000000000e-01 0 -1 3064 - 3.0500000000000000e+01 -2 -3 3065 1.1500000000000000e+01 - - -3.8056674599647522e-01 5.7760846614837646e-01 - -4.7326391935348511e-01 1.4074583351612091e-01 - <_> - 9.5195831298828125e+01 - - 1 2 3066 2.7500000000000000e+01 0 -1 3067 - 1.5500000000000000e+01 -2 -3 3068 1.3500000000000000e+01 - - -3.2090973854064941e-01 2.7350622415542603e-01 - 1.3395747169852257e-02 -8.1775778532028198e-01 - <_> - 9.5786506652832031e+01 - - 1 2 3069 4.5000000000000000e+00 0 -1 3070 - 4.3500000000000000e+01 -2 -3 3071 1.0235000000000000e+03 - - -2.7497810125350952e-01 5.9067696332931519e-01 - -5.4431802034378052e-01 7.7079035341739655e-02 - - <_> - 8 - - 6 5 4 2 - <_> - 8 - - 7 5 2 3 - <_> - 2 - - 4 18 5 10 - <_> - 5 - - 4 28 11 3 - <_> - 0 - - 6 22 6 6 - <_> - 4 - - 6 19 4 5 - <_> - 1 - - 6 27 5 2 - <_> - 7 - - 7 5 2 1 - <_> - 4 - - 4 9 8 22 - <_> - 5 - - 8 4 5 9 - <_> - 2 - - 8 6 4 4 - <_> - 9 - - 7 19 2 1 - <_> - 8 - - 8 6 1 2 - <_> - 0 - - 6 18 5 7 - <_> - 9 - - 7 14 2 3 - <_> - 4 - - 0 18 12 13 - <_> - 1 - - 4 26 7 3 - <_> - 7 - - 0 28 13 3 - <_> - 1 - - 5 10 6 1 - <_> - 1 - - 1 3 10 7 - <_> - 4 - - 0 30 15 1 - <_> - 2 - - 4 12 3 16 - <_> - 0 - - 4 28 8 2 - <_> - 5 - - 3 28 11 3 - <_> - 4 - - 3 10 9 19 - <_> - 3 - - 1 3 7 10 - <_> - 7 - - 8 12 1 1 - <_> - 0 - - 7 10 2 4 - <_> - 0 - - 8 14 4 11 - <_> - 3 - - 0 11 2 20 - <_> - 1 - - 7 4 2 4 - <_> - 4 - - 7 3 2 2 - <_> - 4 - - 2 2 11 8 - <_> - 4 - - 6 18 1 4 - <_> - 1 - - 1 16 5 12 - <_> - 2 - - 7 21 3 7 - <_> - 2 - - 8 30 7 1 - <_> - 5 - - 6 26 7 2 - <_> - 7 - - 14 28 1 2 - <_> - 9 - - 7 12 2 1 - <_> - 9 - - 3 1 12 1 - <_> - 9 - - 7 19 3 3 - <_> - 7 - - 6 5 9 3 - <_> - 3 - - 3 28 2 2 - <_> - 9 - - 5 1 3 3 - <_> - 3 - - 5 8 1 18 - <_> - 7 - - 7 5 2 1 - <_> - 3 - - 0 1 12 25 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 7 1 - <_> - 1 - - 6 12 3 1 - <_> - 5 - - 10 9 2 15 - <_> - 3 - - 13 21 2 9 - <_> - 7 - - 4 29 8 2 - <_> - 1 - - 5 11 6 17 - <_> - 7 - - 12 24 1 6 - <_> - 8 - - 7 12 2 1 - <_> - 0 - - 8 9 4 2 - <_> - 5 - - 7 10 6 3 - <_> - 0 - - 1 4 9 4 - <_> - 4 - - 0 30 13 1 - <_> - 1 - - 2 27 7 3 - <_> - 3 - - 3 9 10 3 - <_> - 0 - - 2 28 13 1 - <_> - 0 - - 6 24 4 4 - <_> - 2 - - 6 16 4 1 - <_> - 4 - - 1 9 2 10 - <_> - 5 - - 5 29 5 1 - <_> - 9 - - 7 15 3 2 - <_> - 2 - - 5 18 6 10 - <_> - 7 - - 7 22 2 2 - <_> - 0 - - 13 21 2 1 - <_> - 4 - - 6 4 5 3 - <_> - 4 - - 0 9 15 17 - <_> - 3 - - 4 1 5 30 - <_> - 3 - - 6 15 3 1 - <_> - 5 - - 8 5 3 2 - <_> - 5 - - 0 0 15 1 - <_> - 1 - - 6 27 3 2 - <_> - 5 - - 1 29 2 2 - <_> - 7 - - 0 27 3 4 - <_> - 4 - - 9 13 6 18 - <_> - 1 - - 3 7 12 1 - <_> - 9 - - 5 23 8 1 - <_> - 7 - - 12 30 3 1 - <_> - 3 - - 12 27 2 1 - <_> - 7 - - 5 13 1 2 - <_> - 8 - - 7 6 1 2 - <_> - 3 - - 14 13 1 16 - <_> - 0 - - 5 5 8 2 - <_> - 9 - - 9 14 1 1 - <_> - 5 - - 9 13 3 12 - <_> - 5 - - 9 30 6 1 - <_> - 4 - - 4 27 8 1 - <_> - 7 - - 3 12 9 7 - <_> - 4 - - 9 7 1 24 - <_> - 2 - - 8 8 4 1 - <_> - 2 - - 8 19 2 10 - <_> - 3 - - 2 13 2 15 - <_> - 2 - - 0 28 15 1 - <_> - 2 - - 3 26 8 2 - <_> - 3 - - 4 28 7 1 - <_> - 3 - - 11 23 1 3 - <_> - 0 - - 9 15 4 16 - <_> - 1 - - 2 7 9 2 - <_> - 4 - - 6 22 3 3 - <_> - 3 - - 5 5 1 25 - <_> - 1 - - 2 20 12 1 - <_> - 1 - - 5 28 6 1 - <_> - 8 - - 1 30 13 1 - <_> - 4 - - 3 16 12 4 - <_> - 8 - - 6 5 4 2 - <_> - 8 - - 2 23 12 1 - <_> - 4 - - 1 29 9 2 - <_> - 4 - - 9 6 4 14 - <_> - 7 - - 0 4 3 16 - <_> - 1 - - 9 10 1 3 - <_> - 3 - - 1 0 13 1 - <_> - 5 - - 3 5 10 8 - <_> - 5 - - 7 7 2 7 - <_> - 5 - - 6 28 5 2 - <_> - 3 - - 2 24 7 4 - <_> - 4 - - 6 1 3 17 - <_> - 0 - - 1 21 1 5 - <_> - 0 - - 1 11 6 5 - <_> - 9 - - 0 30 15 1 - <_> - 8 - - 2 30 8 1 - <_> - 0 - - 7 19 3 7 - <_> - 4 - - 2 24 12 2 - <_> - 9 - - 1 13 1 3 - <_> - 7 - - 7 5 2 1 - <_> - 9 - - 6 10 2 3 - <_> - 8 - - 8 6 1 2 - <_> - 5 - - 6 17 2 3 - <_> - 1 - - 6 27 4 4 - <_> - 2 - - 5 18 5 10 - <_> - 2 - - 14 0 1 29 - <_> - 5 - - 2 20 3 9 - <_> - 1 - - 5 27 6 1 - <_> - 4 - - 7 30 2 1 - <_> - 4 - - 5 24 5 6 - <_> - 4 - - 3 9 12 2 - <_> - 5 - - 9 7 4 20 - <_> - 7 - - 10 10 3 1 - <_> - 3 - - 2 28 13 3 - <_> - 5 - - 14 22 1 7 - <_> - 0 - - 4 7 2 4 - <_> - 3 - - 8 15 2 4 - <_> - 0 - - 7 19 4 9 - <_> - 4 - - 7 11 1 8 - <_> - 4 - - 2 11 13 11 - <_> - 4 - - 6 4 4 6 - <_> - 8 - - 4 22 2 6 - <_> - 4 - - 7 19 2 2 - <_> - 9 - - 6 4 3 6 - <_> - 4 - - 2 29 8 1 - <_> - 3 - - 1 9 6 16 - <_> - 7 - - 8 3 3 2 - <_> - 5 - - 6 12 3 2 - <_> - 8 - - 6 6 2 2 - <_> - 7 - - 1 25 2 4 - <_> - 4 - - 6 1 3 17 - <_> - 1 - - 5 11 4 3 - <_> - 5 - - 9 9 5 4 - <_> - 9 - - 6 14 3 4 - <_> - 2 - - 4 9 4 1 - <_> - 5 - - 2 5 6 8 - <_> - 2 - - 6 10 3 1 - <_> - 1 - - 9 26 5 3 - <_> - 0 - - 1 30 8 1 - <_> - 1 - - 9 22 1 3 - <_> - 2 - - 5 6 7 18 - <_> - 2 - - 11 6 1 14 - <_> - 3 - - 1 4 2 21 - <_> - 8 - - 7 5 2 3 - <_> - 9 - - 13 17 2 1 - <_> - 8 - - 8 24 6 2 - <_> - 7 - - 4 5 5 5 - <_> - 2 - - 4 25 9 3 - <_> - 4 - - 0 29 12 1 - <_> - 5 - - 1 28 9 3 - <_> - 1 - - 6 20 4 3 - <_> - 0 - - 5 25 4 1 - <_> - 1 - - 9 9 2 1 - <_> - 1 - - 3 6 9 4 - <_> - 3 - - 5 8 1 18 - <_> - 5 - - 0 19 2 7 - <_> - 3 - - 3 18 11 4 - <_> - 5 - - 5 12 1 16 - <_> - 0 - - 9 3 3 2 - <_> - 3 - - 6 5 3 1 - <_> - 1 - - 6 7 6 2 - <_> - 3 - - 0 27 13 2 - <_> - 4 - - 2 9 12 3 - <_> - 4 - - 10 24 4 2 - <_> - 9 - - 0 22 11 1 - <_> - 9 - - 1 0 14 14 - <_> - 9 - - 7 9 2 7 - <_> - 1 - - 4 27 4 1 - <_> - 2 - - 9 28 4 3 - <_> - 8 - - 6 6 2 17 - <_> - 2 - - 5 23 9 4 - <_> - 0 - - 10 9 4 3 - <_> - 2 - - 6 13 3 2 - <_> - 4 - - 13 29 2 2 - <_> - 5 - - 8 5 3 4 - <_> - 4 - - 13 8 1 1 - <_> - 7 - - 4 30 11 1 - <_> - 3 - - 8 15 3 15 - <_> - 1 - - 6 22 1 2 - <_> - 3 - - 1 5 8 6 - <_> - 7 - - 13 0 2 3 - <_> - 0 - - 6 10 3 2 - <_> - 2 - - 7 8 4 2 - <_> - 1 - - 10 9 1 2 - <_> - 3 - - 7 10 3 13 - <_> - 5 - - 3 26 9 1 - <_> - 4 - - 2 0 13 4 - <_> - 4 - - 5 0 4 8 - <_> - 2 - - 11 23 4 3 - <_> - 5 - - 10 9 3 13 - <_> - 9 - - 9 10 1 1 - <_> - 8 - - 5 6 7 1 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 0 17 1 5 - <_> - 5 - - 5 28 8 2 - <_> - 4 - - 2 10 5 8 - <_> - 0 - - 2 29 6 2 - <_> - 0 - - 6 21 5 7 - <_> - 0 - - 3 22 2 5 - <_> - 3 - - 0 6 5 25 - <_> - 9 - - 5 1 2 1 - <_> - 4 - - 7 18 2 2 - <_> - 9 - - 6 8 3 4 - <_> - 8 - - 6 6 2 2 - <_> - 9 - - 5 10 1 2 - <_> - 8 - - 3 5 7 8 - <_> - 5 - - 3 21 2 3 - <_> - 2 - - 4 12 3 16 - <_> - 5 - - 11 5 1 21 - <_> - 0 - - 4 7 2 4 - <_> - 7 - - 7 12 2 3 - <_> - 0 - - 6 6 8 25 - <_> - 2 - - 8 30 6 1 - <_> - 5 - - 9 25 5 2 - <_> - 3 - - 5 9 1 14 - <_> - 1 - - 3 28 10 1 - <_> - 4 - - 13 3 1 19 - <_> - 7 - - 0 27 15 2 - <_> - 1 - - 7 3 2 6 - <_> - 7 - - 10 13 1 7 - <_> - 4 - - 3 12 8 19 - <_> - 5 - - 8 5 5 10 - <_> - 4 - - 6 0 2 8 - <_> - 5 - - 8 0 4 3 - <_> - 9 - - 3 3 10 2 - <_> - 3 - - 12 20 2 5 - <_> - 9 - - 7 17 2 1 - <_> - 5 - - 1 30 5 1 - <_> - 3 - - 3 0 8 6 - <_> - 0 - - 6 24 4 4 - <_> - 3 - - 7 14 1 2 - <_> - 4 - - 5 6 9 5 - <_> - 5 - - 6 16 3 3 - <_> - 2 - - 4 18 5 10 - <_> - 1 - - 4 18 11 3 - <_> - 0 - - 4 28 10 2 - <_> - 1 - - 4 13 9 6 - <_> - 1 - - 11 15 1 4 - <_> - 1 - - 9 10 1 3 - <_> - 7 - - 9 30 2 1 - <_> - 1 - - 4 17 6 12 - <_> - 2 - - 0 6 10 4 - <_> - 2 - - 5 1 1 4 - <_> - 0 - - 6 0 2 8 - <_> - 2 - - 3 10 4 1 - <_> - 4 - - 1 30 12 1 - <_> - 1 - - 4 27 9 1 - <_> - 7 - - 11 25 2 1 - <_> - 1 - - 7 19 2 7 - <_> - 4 - - 12 26 3 5 - <_> - 5 - - 2 5 10 22 - <_> - 7 - - 7 5 4 3 - <_> - 4 - - 2 25 13 3 - <_> - 2 - - 6 18 3 4 - <_> - 2 - - 8 16 1 2 - <_> - 0 - - 6 17 7 12 - <_> - 0 - - 12 21 2 1 - <_> - 1 - - 6 4 4 2 - <_> - 4 - - 7 3 2 2 - <_> - 4 - - 10 0 2 17 - <_> - 5 - - 9 29 6 1 - <_> - 2 - - 6 26 7 1 - <_> - 9 - - 6 8 3 4 - <_> - 8 - - 6 5 4 2 - <_> - 2 - - 14 17 1 13 - <_> - 8 - - 0 30 15 1 - <_> - 0 - - 7 13 2 4 - <_> - 3 - - 3 10 8 4 - <_> - 0 - - 1 14 2 1 - <_> - 1 - - 6 28 5 1 - <_> - 5 - - 10 7 3 7 - <_> - 1 - - 3 29 3 1 - <_> - 3 - - 1 22 2 8 - <_> - 3 - - 4 25 2 5 - <_> - 3 - - 4 5 3 4 - <_> - 2 - - 6 1 2 4 - <_> - 4 - - 3 14 7 14 - <_> - 8 - - 7 6 1 2 - <_> - 3 - - 3 9 2 14 - <_> - 4 - - 2 29 9 1 - <_> - 7 - - 12 30 3 1 - <_> - 9 - - 6 12 4 5 - <_> - 9 - - 1 0 14 3 - <_> - 1 - - 7 4 2 4 - <_> - 2 - - 6 18 4 9 - <_> - 7 - - 3 13 1 2 - <_> - 2 - - 4 13 11 12 - <_> - 8 - - 6 13 4 1 - <_> - 1 - - 6 11 5 2 - <_> - 8 - - 11 16 2 2 - <_> - 1 - - 4 20 3 11 - <_> - 5 - - 2 28 7 2 - <_> - 1 - - 10 29 2 1 - <_> - 9 - - 13 25 2 3 - <_> - 9 - - 6 19 1 5 - <_> - 5 - - 9 29 2 2 - <_> - 2 - - 5 5 10 3 - <_> - 7 - - 0 10 2 8 - <_> - 2 - - 0 30 4 1 - <_> - 7 - - 9 29 6 2 - <_> - 3 - - 8 2 1 29 - <_> - 4 - - 1 0 10 23 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 6 6 9 - <_> - 8 - - 7 9 2 1 - <_> - 1 - - 7 28 4 1 - <_> - 3 - - 1 10 12 1 - <_> - 5 - - 7 8 1 19 - <_> - 4 - - 3 30 10 1 - <_> - 3 - - 4 4 1 11 - <_> - 0 - - 7 18 3 4 - <_> - 4 - - 7 7 4 5 - <_> - 7 - - 11 1 1 12 - <_> - 8 - - 7 7 3 1 - <_> - 9 - - 7 9 2 7 - <_> - 9 - - 10 11 5 12 - <_> - 2 - - 6 10 3 1 - <_> - 2 - - 4 19 7 9 - <_> - 1 - - 0 0 15 1 - <_> - 3 - - 4 5 6 2 - <_> - 3 - - 11 20 1 3 - <_> - 3 - - 5 0 8 15 - <_> - 4 - - 10 11 1 12 - <_> - 0 - - 6 16 7 11 - <_> - 5 - - 6 6 1 25 - <_> - 5 - - 3 22 2 4 - <_> - 5 - - 0 7 13 16 - <_> - 4 - - 6 21 4 1 - <_> - 4 - - 5 1 6 5 - <_> - 4 - - 5 0 8 27 - <_> - 1 - - 4 26 6 3 - <_> - 7 - - 8 9 1 1 - <_> - 0 - - 1 28 11 3 - <_> - 3 - - 2 22 1 2 - <_> - 0 - - 7 9 1 6 - <_> - 3 - - 4 9 4 20 - <_> - 5 - - 3 8 1 21 - <_> - 4 - - 6 22 4 3 - <_> - 1 - - 4 7 4 1 - <_> - 9 - - 10 9 2 7 - <_> - 2 - - 11 6 1 18 - <_> - 8 - - 7 6 1 2 - <_> - 4 - - 5 29 6 2 - <_> - 8 - - 8 3 1 1 - <_> - 3 - - 8 17 1 5 - <_> - 3 - - 2 28 12 2 - <_> - 0 - - 0 8 1 5 - <_> - 3 - - 3 23 4 4 - <_> - 1 - - 13 2 2 7 - <_> - 8 - - 5 6 10 2 - <_> - 0 - - 7 18 6 10 - <_> - 3 - - 12 17 3 14 - <_> - 9 - - 8 15 1 2 - <_> - 9 - - 0 0 4 1 - <_> - 0 - - 9 9 4 1 - <_> - 9 - - 4 5 6 13 - <_> - 0 - - 5 3 6 6 - <_> - 9 - - 5 22 6 4 - <_> - 0 - - 11 4 1 1 - <_> - 7 - - 14 1 1 19 - <_> - 4 - - 8 17 3 1 - <_> - 5 - - 9 13 4 6 - <_> - 5 - - 9 2 3 22 - <_> - 0 - - 0 28 8 1 - <_> - 4 - - 6 4 5 3 - <_> - 5 - - 14 10 1 14 - <_> - 5 - - 7 24 5 4 - <_> - 3 - - 10 18 1 8 - <_> - 5 - - 8 30 6 1 - <_> - 2 - - 6 26 6 2 - <_> - 1 - - 4 10 4 2 - <_> - 3 - - 5 8 1 18 - <_> - 4 - - 8 29 7 1 - <_> - 7 - - 13 28 1 1 - <_> - 1 - - 7 28 3 1 - <_> - 7 - - 2 25 4 4 - <_> - 4 - - 12 30 3 1 - <_> - 4 - - 7 19 3 7 - <_> - 5 - - 9 8 5 7 - <_> - 5 - - 2 19 1 5 - <_> - 1 - - 2 22 5 8 - <_> - 1 - - 3 24 2 2 - <_> - 0 - - 6 29 1 2 - <_> - 9 - - 5 28 2 1 - <_> - 0 - - 7 10 3 2 - <_> - 2 - - 4 28 6 1 - <_> - 0 - - 3 7 5 22 - <_> - 7 - - 2 8 9 1 - <_> - 3 - - 6 17 1 2 - <_> - 8 - - 8 6 1 2 - <_> - 3 - - 3 0 6 4 - <_> - 9 - - 7 13 1 1 - <_> - 2 - - 4 22 3 1 - <_> - 9 - - 8 19 1 2 - <_> - 8 - - 10 15 4 3 - <_> - 5 - - 9 10 3 3 - <_> - 3 - - 9 3 6 4 - <_> - 4 - - 1 12 11 18 - <_> - 5 - - 1 28 4 3 - <_> - 3 - - 1 3 8 14 - <_> - 4 - - 7 11 1 8 - <_> - 0 - - 7 9 1 1 - <_> - 2 - - 5 25 4 3 - <_> - 5 - - 5 1 4 3 - <_> - 4 - - 5 18 5 2 - <_> - 5 - - 2 18 11 3 - <_> - 1 - - 7 4 2 4 - <_> - 7 - - 13 4 1 25 - <_> - 2 - - 13 19 2 4 - <_> - 9 - - 4 0 7 4 - <_> - 1 - - 8 27 1 2 - <_> - 4 - - 3 29 11 1 - <_> - 4 - - 6 26 4 4 - <_> - 0 - - 7 17 5 10 - <_> - 9 - - 2 30 1 1 - <_> - 7 - - 12 18 3 13 - <_> - 4 - - 6 22 3 3 - <_> - 1 - - 5 25 3 6 - <_> - 2 - - 7 20 3 1 - <_> - 8 - - 7 6 1 2 - <_> - 2 - - 4 9 4 2 - <_> - 8 - - 4 25 1 2 - <_> - 4 - - 4 9 8 5 - <_> - 5 - - 8 5 5 8 - <_> - 4 - - 3 28 9 1 - <_> - 2 - - 7 29 7 2 - <_> - 2 - - 6 19 5 12 - <_> - 4 - - 14 23 1 4 - <_> - 5 - - 6 17 2 3 - <_> - 2 - - 3 17 5 7 - <_> - 9 - - 7 8 1 3 - <_> - 9 - - 2 3 11 3 - <_> - 1 - - 4 28 4 1 - <_> - 9 - - 6 7 2 6 - <_> - 8 - - 6 6 1 2 - <_> - 2 - - 14 17 1 13 - <_> - 8 - - 3 0 6 5 - <_> - 2 - - 7 24 3 3 - <_> - 4 - - 1 28 11 3 - <_> - 2 - - 6 27 5 4 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 4 4 3 9 - <_> - 8 - - 6 0 3 3 - <_> - 1 - - 4 7 6 1 - <_> - 9 - - 6 14 5 4 - <_> - 3 - - 0 9 1 18 - <_> - 1 - - 9 10 1 3 - <_> - 1 - - 7 12 8 6 - <_> - 4 - - 7 18 2 2 - <_> - 3 - - 6 2 1 8 - <_> - 0 - - 3 9 3 1 - <_> - 4 - - 3 15 11 14 - <_> - 1 - - 6 11 6 1 - <_> - 8 - - 7 5 2 3 - <_> - 9 - - 7 14 3 3 - <_> - 4 - - 3 11 4 9 - <_> - 2 - - 8 7 1 11 - <_> - 7 - - 0 12 9 10 - <_> - 7 - - 0 27 10 1 - <_> - 0 - - 6 5 3 18 - <_> - 5 - - 4 28 5 3 - <_> - 2 - - 4 9 8 22 - <_> - 7 - - 7 17 1 2 - <_> - 2 - - 6 13 4 2 - <_> - 0 - - 5 5 6 3 - <_> - 7 - - 8 13 3 14 - <_> - 0 - - 10 0 2 5 - <_> - 1 - - 3 28 8 1 - <_> - 4 - - 12 7 1 24 - <_> - 7 - - 1 28 2 2 - <_> - 8 - - 6 5 4 2 - <_> - 0 - - 6 18 5 4 - <_> - 4 - - 11 6 4 2 - <_> - 0 - - 7 10 3 1 - <_> - 7 - - 14 0 1 28 - <_> - 5 - - 9 27 6 3 - <_> - 8 - - 0 4 4 27 - <_> - 0 - - 5 28 8 1 - <_> - 1 - - 6 12 3 1 - <_> - 5 - - 10 10 4 9 - <_> - 5 - - 5 0 2 5 - <_> - 4 - - 4 4 6 5 - <_> - 4 - - 2 29 9 1 - <_> - 1 - - 5 26 7 3 - <_> - 2 - - 2 20 2 4 - <_> - 0 - - 6 17 7 12 - <_> - 3 - - 10 25 5 6 - <_> - 3 - - 10 17 1 10 - <_> - 2 - - 0 0 12 28 - <_> - 5 - - 9 8 5 7 - <_> - 4 - - 3 12 9 16 - <_> - 0 - - 13 22 2 4 - <_> - 3 - - 6 0 5 11 - <_> - 1 - - 0 2 8 2 - <_> - 1 - - 6 7 6 2 - <_> - 8 - - 8 3 1 5 - <_> - 4 - - 8 2 4 13 - <_> - 9 - - 8 10 1 7 - <_> - 9 - - 2 3 11 3 - <_> - 2 - - 11 28 2 1 - <_> - 0 - - 9 4 1 24 - <_> - 0 - - 5 28 4 2 - <_> - 4 - - 7 0 2 18 - <_> - 4 - - 4 9 9 3 - <_> - 4 - - 7 7 6 14 - <_> - 4 - - 6 25 3 5 - <_> - 4 - - 5 13 2 5 - <_> - 3 - - 3 24 8 3 - <_> - 8 - - 5 20 2 2 - <_> - 3 - - 1 22 2 8 - <_> - 1 - - 2 27 8 2 - <_> - 7 - - 10 28 5 1 - <_> - 4 - - 7 20 3 5 - <_> - 4 - - 8 26 2 2 - <_> - 0 - - 5 24 4 3 - <_> - 4 - - 12 30 3 1 - <_> - 2 - - 4 24 6 4 - <_> - 2 - - 12 10 3 7 - <_> - 1 - - 8 27 1 2 - <_> - 5 - - 1 29 3 2 - <_> - 1 - - 11 23 3 8 - <_> - 2 - - 8 10 1 5 - <_> - 2 - - 11 0 2 15 - <_> - 1 - - 11 20 1 3 - <_> - 3 - - 3 8 5 16 - <_> - 7 - - 7 5 2 1 - <_> - 3 - - 0 19 4 10 - <_> - 1 - - 6 22 1 2 - <_> - 3 - - 4 27 11 2 - <_> - 9 - - 10 10 3 1 - <_> - 8 - - 8 6 1 2 - <_> - 0 - - 8 8 2 1 - <_> - 8 - - 1 26 11 2 - <_> - 7 - - 4 30 11 1 - <_> - 1 - - 3 18 11 12 - <_> - 2 - - 0 0 12 28 - <_> - 0 - - 13 8 2 6 - <_> - 1 - - 3 22 4 7 - <_> - 2 - - 2 30 8 1 - <_> - 9 - - 9 19 1 6 - <_> - 7 - - 3 16 9 4 - <_> - 9 - - 5 1 2 1 - <_> - 2 - - 7 9 5 1 - <_> - 4 - - 3 28 9 3 - <_> - 5 - - 5 0 6 2 - <_> - 5 - - 8 5 5 10 - <_> - 9 - - 5 17 7 4 - <_> - 2 - - 4 25 9 3 - <_> - 2 - - 9 16 2 2 - <_> - 5 - - 10 9 3 19 - <_> - 1 - - 4 10 7 4 - <_> - 0 - - 13 24 2 7 - <_> - 0 - - 7 24 3 5 - <_> - 4 - - 4 3 6 4 - <_> - 4 - - 11 15 2 5 - <_> - 0 - - 11 13 1 10 - <_> - 1 - - 1 25 1 5 - <_> - 5 - - 11 22 1 2 - <_> - 1 - - 8 26 1 4 - <_> - 3 - - 8 18 1 1 - <_> - 8 - - 7 6 1 2 - <_> - 9 - - 14 24 1 2 - <_> - 8 - - 11 6 1 3 - <_> - 2 - - 5 4 5 1 - <_> - 2 - - 6 3 4 7 - <_> - 1 - - 7 4 2 4 - <_> - 7 - - 9 7 1 5 - <_> - 0 - - 0 10 9 3 - <_> - 0 - - 4 4 7 7 - <_> - 5 - - 4 28 9 2 - <_> - 2 - - 6 17 6 12 - <_> - 0 - - 13 25 1 3 - <_> - 0 - - 1 3 13 1 - <_> - 0 - - 5 6 7 2 - <_> - 0 - - 5 10 4 2 - <_> - 1 - - 7 19 2 6 - <_> - 4 - - 5 13 6 9 - <_> - 1 - - 6 17 4 1 - <_> - 7 - - 2 28 6 1 - <_> - 0 - - 11 21 3 6 - <_> - 4 - - 13 29 2 2 - <_> - 3 - - 4 3 3 18 - <_> - 7 - - 7 5 4 3 - <_> - 7 - - 1 0 3 10 - <_> - 2 - - 6 12 3 1 - <_> - 5 - - 1 11 14 3 - <_> - 0 - - 6 15 3 1 - <_> - 8 - - 7 5 2 3 - <_> - 1 - - 2 0 11 3 - <_> - 8 - - 11 18 4 2 - <_> - 4 - - 4 26 7 2 - <_> - 2 - - 5 28 10 3 - <_> - 2 - - 4 5 7 2 - <_> - 4 - - 6 29 5 2 - <_> - 1 - - 5 28 6 2 - <_> - 9 - - 7 12 1 5 - <_> - 2 - - 3 17 6 7 - <_> - 3 - - 8 25 1 1 - <_> - 3 - - 2 22 1 2 - <_> - 3 - - 5 0 9 1 - <_> - 3 - - 3 0 6 13 - <_> - 3 - - 7 6 3 11 - <_> - 7 - - 8 1 7 14 - <_> - 5 - - 3 26 8 2 - <_> - 2 - - 7 12 6 15 - <_> - 0 - - 7 8 1 7 - <_> - 8 - - 14 0 1 3 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 1 30 2 1 - <_> - 7 - - 3 28 1 1 - <_> - 0 - - 5 25 4 1 - <_> - 3 - - 5 28 3 2 - <_> - 0 - - 9 12 3 19 - <_> - 3 - - 1 16 2 9 - <_> - 3 - - 11 24 3 1 - <_> - 1 - - 4 22 7 1 - <_> - 5 - - 10 7 2 20 - <_> - 0 - - 6 19 4 10 - <_> - 5 - - 4 28 9 2 - <_> - 5 - - 11 29 1 1 - <_> - 9 - - 1 0 14 3 - <_> - 9 - - 7 9 2 7 - <_> - 9 - - 8 13 2 5 - <_> - 4 - - 9 17 5 14 - <_> - 1 - - 7 27 8 2 - <_> - 4 - - 5 24 1 2 - <_> - 2 - - 5 18 6 10 - <_> - 7 - - 9 3 1 26 - <_> - 2 - - 8 16 2 3 - <_> - 8 - - 8 4 2 8 - <_> - 8 - - 6 6 1 2 - <_> - 8 - - 11 5 1 3 - <_> - 0 - - 3 29 5 2 - <_> - 4 - - 4 9 3 22 - <_> - 5 - - 10 19 3 1 - <_> - 1 - - 8 4 2 5 - <_> - 4 - - 7 4 3 1 - <_> - 4 - - 5 0 7 10 - <_> - 1 - - 5 9 6 4 - <_> - 0 - - 6 25 5 2 - <_> - 0 - - 4 8 2 2 - <_> - 5 - - 1 25 2 6 - <_> - 3 - - 3 9 4 6 - <_> - 7 - - 7 24 6 7 - <_> - 9 - - 6 20 1 3 - <_> - 8 - - 7 5 6 4 - <_> - 8 - - 1 10 14 3 - <_> - 2 - - 8 9 2 1 - <_> - 5 - - 8 5 3 4 - <_> - 8 - - 5 19 7 1 - <_> - 7 - - 6 3 4 1 - <_> - 5 - - 12 25 2 2 - <_> - 2 - - 7 14 6 12 - <_> - 2 - - 5 30 8 1 - <_> - 2 - - 3 26 8 2 - <_> - 2 - - 9 19 5 1 - <_> - 4 - - 9 13 2 11 - <_> - 1 - - 6 27 4 4 - <_> - 1 - - 6 4 2 6 - <_> - 8 - - 8 6 1 2 - <_> - 9 - - 5 0 5 3 - <_> - 8 - - 5 28 8 1 - <_> - 9 - - 6 12 3 2 - <_> - 1 - - 0 2 12 24 - <_> - 8 - - 6 11 3 4 - <_> - 4 - - 4 3 4 6 - <_> - 7 - - 4 3 1 1 - <_> - 1 - - 9 10 1 3 - <_> - 0 - - 7 28 1 3 - <_> - 0 - - 6 16 7 11 - <_> - 4 - - 1 22 5 4 - <_> - 0 - - 1 28 12 1 - <_> - 4 - - 5 12 8 15 - <_> - 4 - - 1 27 5 4 - <_> - 2 - - 6 18 4 11 - <_> - 3 - - 13 20 1 10 - <_> - 7 - - 5 29 6 1 - <_> - 1 - - 7 24 2 2 - <_> - 9 - - 3 3 10 2 - <_> - 0 - - 6 8 1 2 - <_> - 9 - - 4 9 4 2 - <_> - 5 - - 10 12 1 15 - <_> - 5 - - 10 7 1 7 - <_> - 5 - - 6 17 2 3 - <_> - 3 - - 2 21 7 6 - <_> - 3 - - 6 3 1 3 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 6 5 8 - <_> - 8 - - 7 9 2 1 - <_> - 5 - - 13 22 2 9 - <_> - 2 - - 6 25 4 2 - <_> - 7 - - 10 29 1 2 - <_> - 5 - - 5 29 8 1 - <_> - 5 - - 9 12 3 16 - <_> - 9 - - 6 16 4 2 - <_> - 7 - - 7 6 2 2 - <_> - 4 - - 7 0 2 18 - <_> - 2 - - 1 10 7 5 - <_> - 1 - - 4 10 5 1 - <_> - 0 - - 4 2 3 11 - <_> - 9 - - 11 17 1 1 - <_> - 3 - - 0 26 1 3 - <_> - 5 - - 4 1 3 5 - <_> - 0 - - 13 11 2 4 - <_> - 2 - - 8 23 2 3 - <_> - 4 - - 1 30 3 1 - <_> - 7 - - 5 30 2 1 - <_> - 3 - - 5 0 1 27 - <_> - 2 - - 9 24 4 6 - <_> - 5 - - 6 15 1 8 - <_> - 1 - - 5 26 6 2 - <_> - 0 - - 9 15 1 13 - <_> - 4 - - 3 20 10 1 - <_> - 4 - - 4 6 9 6 - <_> - 7 - - 2 1 5 5 - <_> - 2 - - 8 8 4 1 - <_> - 1 - - 6 12 3 1 - <_> - 0 - - 2 7 6 1 - <_> - 9 - - 12 2 1 4 - <_> - 8 - - 10 18 1 13 - <_> - 8 - - 6 5 4 2 - <_> - 0 - - 5 5 8 2 - <_> - 0 - - 7 0 5 14 - <_> - 4 - - 1 9 11 1 - <_> - 1 - - 0 4 14 6 - <_> - 0 - - 6 14 6 12 - <_> - 8 - - 7 3 1 5 - <_> - 0 - - 6 12 8 17 - <_> - 5 - - 5 28 6 1 - <_> - 5 - - 3 26 9 1 - <_> - 3 - - 6 5 4 2 - <_> - 3 - - 6 15 3 1 - <_> - 1 - - 9 8 3 14 - <_> - 7 - - 0 30 14 1 - <_> - 3 - - 4 6 11 5 - <_> - 7 - - 13 0 1 1 - <_> - 1 - - 11 25 2 6 - <_> - 3 - - 1 30 9 1 - <_> - 7 - - 4 27 5 1 - <_> - 5 - - 2 14 7 1 - <_> - 9 - - 3 13 5 6 - <_> - 5 - - 9 7 4 21 - <_> - 1 - - 6 4 2 6 - <_> - 0 - - 7 10 3 2 - <_> - 2 - - 3 12 4 14 - <_> - 9 - - 13 29 2 2 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 7 1 - <_> - 2 - - 4 28 11 1 - <_> - 4 - - 3 10 11 13 - <_> - 1 - - 5 27 6 4 - <_> - 5 - - 0 6 1 14 - <_> - 4 - - 6 29 1 1 - <_> - 2 - - 7 30 8 1 - <_> - 3 - - 3 9 3 18 - <_> - 4 - - 7 20 2 3 - <_> - 1 - - 4 15 8 4 - <_> - 2 - - 4 22 6 9 - <_> - 2 - - 3 28 5 2 - <_> - 0 - - 13 22 1 2 - <_> - 0 - - 9 17 5 3 - <_> - 8 - - 8 6 1 2 - <_> - 9 - - 5 9 5 1 - <_> - 8 - - 8 3 1 1 - <_> - 1 - - 10 9 1 2 - <_> - 1 - - 4 13 9 6 - <_> - 1 - - 6 11 6 1 - <_> - 5 - - 9 3 4 10 - <_> - 8 - - 12 20 1 5 - <_> - 5 - - 4 0 9 11 - <_> - 2 - - 7 8 4 2 - <_> - 2 - - 12 25 2 1 - <_> - 3 - - 1 6 3 5 - <_> - 2 - - 12 24 2 2 - <_> - 5 - - 6 26 7 2 - <_> - 3 - - 6 26 7 2 - <_> - 2 - - 6 10 3 1 - <_> - 8 - - 4 6 7 2 - <_> - 4 - - 0 10 4 13 - <_> - 4 - - 6 4 5 3 - <_> - 0 - - 2 30 5 1 - <_> - 3 - - 3 0 5 13 - <_> - 4 - - 5 0 3 24 - <_> - 1 - - 11 20 3 8 - <_> - 2 - - 3 12 1 7 - <_> - 9 - - 7 17 2 3 - <_> - 9 - - 7 3 3 4 - <_> - 5 - - 2 29 13 2 - <_> - 9 - - 0 29 7 2 - <_> - 0 - - 5 21 5 6 - <_> - 9 - - 7 7 2 7 - <_> - 0 - - 14 14 1 3 - <_> - 2 - - 8 26 6 5 - <_> - 5 - - 2 24 1 7 - <_> - 5 - - 10 10 4 9 - <_> - 2 - - 8 16 1 2 - <_> - 5 - - 1 11 13 14 - <_> - 2 - - 4 18 5 10 - <_> - 0 - - 4 8 2 2 - <_> - 2 - - 6 16 4 1 - <_> - 1 - - 5 28 6 1 - <_> - 5 - - 0 9 1 15 - <_> - 1 - - 9 22 1 2 - <_> - 0 - - 3 4 3 13 - <_> - 3 - - 6 25 6 4 - <_> - 4 - - 4 20 8 1 - <_> - 0 - - 7 19 4 9 - <_> - 9 - - 7 1 1 2 - <_> - 4 - - 7 17 4 2 - <_> - 1 - - 9 10 1 3 - <_> - 4 - - 9 7 1 4 - <_> - 8 - - 9 25 5 5 - <_> - 3 - - 0 18 7 11 - <_> - 1 - - 2 12 12 7 - <_> - 5 - - 5 7 7 1 - <_> - 8 - - 6 6 1 2 - <_> - 9 - - 7 13 1 7 - <_> - 4 - - 5 0 2 13 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 1 2 14 - <_> - 8 - - 6 8 3 2 - <_> - 1 - - 2 26 11 2 - <_> - 2 - - 11 28 2 1 - <_> - 1 - - 5 8 1 6 - <_> - 8 - - 9 26 1 4 - <_> - 1 - - 8 6 2 3 - <_> - 4 - - 2 24 12 2 - <_> - 2 - - 5 16 4 11 - <_> - 4 - - 8 14 5 17 - <_> - 0 - - 5 28 6 2 - <_> - 0 - - 9 16 2 10 - <_> - 7 - - 7 4 8 1 - <_> - 0 - - 7 10 3 17 - <_> - 3 - - 3 12 4 12 - <_> - 0 - - 7 7 3 5 - <_> - 7 - - 7 30 3 1 - <_> - 5 - - 0 21 3 2 - <_> - 5 - - 1 9 3 17 - <_> - 5 - - 1 8 14 3 - <_> - 4 - - 12 8 1 23 - <_> - 0 - - 4 28 10 2 - <_> - 5 - - 5 15 1 10 - <_> - 0 - - 6 18 6 10 - <_> - 2 - - 0 29 15 2 - <_> - 0 - - 10 19 4 4 - <_> - 8 - - 7 6 1 2 - <_> - 3 - - 13 23 2 5 - <_> - 8 - - 11 5 2 1 - <_> - 4 - - 7 18 2 2 - <_> - 3 - - 2 0 8 14 - <_> - 9 - - 5 22 2 1 - <_> - 9 - - 14 24 1 2 - <_> - 5 - - 11 13 1 18 - <_> - 5 - - 10 28 5 3 - <_> - 4 - - 5 29 7 1 - <_> - 1 - - 6 27 6 2 - <_> - 1 - - 13 5 1 9 - <_> - 7 - - 7 6 2 2 - <_> - 0 - - 3 3 2 3 - <_> - 2 - - 5 6 8 18 - <_> - 4 - - 6 23 4 6 - <_> - 0 - - 3 2 3 14 - <_> - 4 - - 6 19 2 2 - <_> - 3 - - 7 14 1 2 - <_> - 3 - - 10 12 4 3 - <_> - 0 - - 7 10 2 4 - <_> - 7 - - 3 19 1 12 - <_> - 2 - - 14 17 1 9 - <_> - 2 - - 7 8 5 3 - <_> - 5 - - 3 28 11 3 - <_> - 5 - - 10 9 3 6 - <_> - 7 - - 6 15 3 1 - <_> - 0 - - 12 8 2 4 - <_> - 5 - - 10 8 1 4 - <_> - 0 - - 10 9 1 1 - <_> - 8 - - 6 6 2 2 - <_> - 2 - - 3 1 12 3 - <_> - 9 - - 8 10 1 7 - <_> - 1 - - 4 27 5 1 - <_> - 2 - - 7 18 2 3 - <_> - 4 - - 0 30 8 1 - <_> - 1 - - 3 28 10 1 - <_> - 3 - - 7 16 4 1 - <_> - 7 - - 12 22 3 4 - <_> - 4 - - 3 14 7 14 - <_> - 1 - - 7 3 2 6 - <_> - 1 - - 2 30 10 1 - <_> - 0 - - 8 26 6 5 - <_> - 2 - - 9 9 4 1 - <_> - 5 - - 9 28 5 3 - <_> - 1 - - 3 10 10 1 - <_> - 3 - - 6 2 1 8 - <_> - 0 - - 1 10 2 3 - <_> - 7 - - 5 29 9 1 - <_> - 2 - - 7 8 3 9 - <_> - 3 - - 2 8 7 20 - <_> - 3 - - 13 23 2 6 - <_> - 3 - - 5 25 6 2 - <_> - 9 - - 0 0 4 1 - <_> - 8 - - 6 25 4 6 - <_> - 8 - - 7 7 3 1 - <_> - 1 - - 1 0 10 2 - <_> - 9 - - 7 14 3 3 - <_> - 7 - - 5 16 6 1 - <_> - 9 - - 6 19 3 1 - <_> - 0 - - 7 10 1 1 - <_> - 0 - - 6 5 3 4 - <_> - 1 - - 1 7 9 3 - <_> - 8 - - 6 5 4 2 - <_> - 3 - - 5 28 10 1 - <_> - 8 - - 10 7 2 4 - <_> - 4 - - 3 8 9 13 - <_> - 4 - - 8 3 1 17 - <_> - 1 - - 8 4 1 12 - <_> - 3 - - 2 19 1 11 - <_> - 3 - - 4 23 6 4 - <_> - 0 - - 6 15 3 1 - <_> - 0 - - 5 12 5 17 - <_> - 4 - - 4 6 8 19 - <_> - 2 - - 6 1 4 27 - <_> - 0 - - 5 11 9 1 - <_> - 1 - - 8 10 2 4 - <_> - 5 - - 12 25 3 6 - <_> - 5 - - 2 27 1 3 - <_> - 2 - - 3 25 7 3 - <_> - 1 - - 5 0 4 30 - <_> - 0 - - 4 25 1 5 - <_> - 4 - - 9 8 1 17 - <_> - 5 - - 3 18 1 4 - <_> - 1 - - 5 26 5 3 - <_> - 9 - - 5 9 5 2 - <_> - 1 - - 6 19 4 5 - <_> - 9 - - 8 28 5 1 - <_> - 5 - - 10 9 2 15 - <_> - 9 - - 6 3 3 22 - <_> - 4 - - 11 27 3 4 - <_> - 2 - - 5 1 2 4 - <_> - 7 - - 5 29 2 2 - <_> - 5 - - 8 3 2 4 - <_> - 2 - - 9 3 3 13 - <_> - 0 - - 6 10 3 2 - <_> - 0 - - 5 22 3 5 - <_> - 7 - - 6 3 4 1 - <_> - 0 - - 0 14 4 17 - <_> - 3 - - 3 5 4 9 - <_> - 7 - - 0 11 3 5 - <_> - 8 - - 7 7 3 1 - <_> - 2 - - 0 30 4 1 - <_> - 4 - - 0 18 12 13 - <_> - 0 - - 9 18 2 1 - <_> - 9 - - 7 8 1 13 - <_> - 9 - - 1 0 14 3 - <_> - 8 - - 4 12 3 2 - <_> - 2 - - 4 19 7 9 - <_> - 2 - - 4 15 1 8 - <_> - 3 - - 8 20 2 4 - <_> - 2 - - 8 6 4 4 - <_> - 5 - - 9 7 2 2 - <_> - 2 - - 0 28 14 2 - <_> - 5 - - 7 15 1 7 - <_> - 7 - - 0 15 7 3 - <_> - 3 - - 3 7 3 12 - <_> - 7 - - 5 30 9 1 - <_> - 2 - - 13 23 2 8 - <_> - 1 - - 8 24 6 6 - <_> - 4 - - 7 4 3 1 - <_> - 1 - - 7 4 2 4 - <_> - 1 - - 0 17 9 7 - <_> - 5 - - 2 30 6 1 - <_> - 2 - - 0 24 9 3 - <_> - 1 - - 6 11 6 1 - <_> - 1 - - 5 28 6 1 - <_> - 8 - - 2 17 1 4 - <_> - 0 - - 1 3 9 1 - <_> - 8 - - 6 5 4 2 - <_> - 7 - - 11 24 2 2 - <_> - 8 - - 14 18 1 7 - <_> - 7 - - 7 5 1 3 - <_> - 1 - - 5 25 4 1 - <_> - 2 - - 8 23 2 6 - <_> - 3 - - 5 11 3 17 - <_> - 3 - - 6 14 1 15 - <_> - 4 - - 4 6 9 6 - <_> - 4 - - 6 29 9 2 - <_> - 7 - - 11 27 3 1 - <_> - 9 - - 7 15 1 1 - <_> - 0 - - 1 28 14 2 - <_> - 0 - - 7 19 4 8 - <_> - 8 - - 5 6 7 8 - <_> - 1 - - 10 9 1 1 - <_> - 3 - - 4 19 9 2 - <_> - 1 - - 10 19 4 3 - <_> - 4 - - 7 20 4 1 - <_> - 3 - - 5 15 1 14 - <_> - 0 - - 5 5 6 3 - <_> - 2 - - 8 11 1 7 - <_> - 5 - - 10 10 3 4 - <_> - 0 - - 7 1 5 5 - <_> - 8 - - 7 6 1 2 - <_> - 3 - - 9 16 2 2 - <_> - 9 - - 8 15 1 2 - <_> - 1 - - 3 27 7 4 - <_> - 1 - - 11 24 1 1 - <_> - 4 - - 0 29 10 2 - <_> - 2 - - 3 24 8 4 - <_> - 0 - - 0 21 3 10 - <_> - 2 - - 4 28 9 2 - <_> - 0 - - 7 18 1 5 - <_> - 7 - - 8 7 2 1 - <_> - 7 - - 1 24 2 7 - <_> - 1 - - 7 6 5 3 - <_> - 7 - - 6 14 2 1 - <_> - 7 - - 4 27 1 4 - <_> - 8 - - 7 5 2 3 - <_> - 3 - - 13 14 1 6 - <_> - 8 - - 4 3 1 4 - <_> - 2 - - 11 10 1 8 - <_> - 1 - - 8 7 6 16 - <_> - 3 - - 0 8 11 13 - <_> - 3 - - 5 7 1 15 - <_> - 0 - - 5 20 3 2 - <_> - 3 - - 1 6 8 2 - <_> - 2 - - 4 9 4 1 - <_> - 0 - - 3 4 4 6 - <_> - 3 - - 8 2 1 3 - <_> - 1 - - 8 27 1 2 - <_> - 3 - - 14 21 1 4 - <_> - 4 - - 1 9 2 10 - <_> - 5 - - 9 12 3 15 - <_> - 7 - - 3 12 1 6 - <_> - 2 - - 9 30 5 1 - <_> - 3 - - 6 5 4 2 - <_> - 4 - - 9 20 1 11 - <_> - 4 - - 2 6 8 3 - <_> - 7 - - 4 24 1 7 - <_> - 0 - - 6 7 3 12 - <_> - 5 - - 6 26 5 2 - <_> - 5 - - 3 21 2 3 - <_> - 2 - - 3 20 7 2 - <_> - 4 - - 0 30 8 1 - <_> - 3 - - 1 27 10 4 - <_> - 2 - - 5 5 10 2 - <_> - 4 - - 12 22 3 3 - <_> - 9 - - 7 8 1 3 - <_> - 9 - - 7 1 2 6 - <_> - 8 - - 7 6 3 11 - <_> - 8 - - 8 29 3 1 - <_> - 1 - - 7 3 3 7 - <_> - 0 - - 9 19 1 12 - <_> - 4 - - 9 5 2 26 - <_> - 4 - - 9 9 4 13 - <_> - 4 - - 1 23 12 1 - <_> - 2 - - 8 10 1 5 - <_> - 5 - - 10 12 3 19 - <_> - 4 - - 7 11 2 14 - <_> - 0 - - 14 19 1 3 - <_> - 4 - - 5 9 10 3 - <_> - 4 - - 8 22 1 4 - <_> - 2 - - 4 3 6 23 - <_> - 2 - - 14 16 1 13 - <_> - 7 - - 3 19 1 12 - <_> - 5 - - 8 28 3 3 - <_> - 3 - - 5 0 9 1 - <_> - 0 - - 11 10 1 19 - <_> - 8 - - 7 5 2 3 - <_> - 4 - - 5 20 5 1 - <_> - 0 - - 6 21 5 7 - <_> - 3 - - 13 21 2 5 - <_> - 3 - - 1 7 4 8 - <_> - 8 - - 6 18 3 2 - <_> - 7 - - 7 6 2 2 - <_> - 1 - - 7 19 2 5 - <_> - 5 - - 11 8 3 22 - <_> - 1 - - 11 20 2 8 - <_> - 5 - - 11 1 1 20 - <_> - 4 - - 0 30 13 1 - <_> - 9 - - 1 29 7 2 - <_> - 9 - - 5 19 3 3 - <_> - 9 - - 5 6 5 5 - <_> - 8 - - 7 6 1 2 - <_> - 2 - - 5 19 4 11 - <_> - 4 - - 2 29 2 2 - <_> - 0 - - 7 10 3 2 - <_> - 1 - - 8 27 4 2 - <_> - 2 - - 7 8 4 2 - <_> - 0 - - 2 28 2 2 - <_> - 3 - - 2 12 5 3 - <_> - 3 - - 7 14 1 2 - <_> - 2 - - 6 18 3 4 - <_> - 0 - - 5 22 3 5 - <_> - 2 - - 5 1 5 27 - <_> - 0 - - 5 28 7 1 - <_> - 3 - - 5 26 8 2 - <_> - 7 - - 13 21 1 4 - <_> - 7 - - 9 17 1 1 - <_> - 7 - - 13 30 1 1 - <_> - 2 - - 11 4 1 16 - <_> - 5 - - 12 18 2 12 - <_> - 5 - - 8 9 5 4 - <_> - 5 - - 3 23 1 2 - <_> - 4 - - 0 9 4 7 - <_> - 2 - - 3 28 5 2 - <_> - 4 - - 9 8 1 17 - <_> - 3 - - 6 2 1 8 - <_> - 0 - - 6 4 1 6 - <_> - 0 - - 6 18 6 10 - <_> - 0 - - 2 2 11 2 - <_> - 4 - - 9 1 3 16 - <_> - 4 - - 7 4 5 4 - <_> - 4 - - 4 29 8 1 - <_> - 0 - - 6 7 6 10 - <_> - 7 - - 7 28 1 2 - <_> - 5 - - 3 26 7 2 - <_> - 7 - - 7 13 1 8 - <_> - 4 - - 5 20 8 1 - <_> - 1 - - 3 27 10 2 - <_> - 0 - - 0 8 9 1 - <_> - 4 - - 8 26 6 5 - <_> - 5 - - 4 24 1 7 - <_> - 2 - - 2 11 4 11 - <_> - 2 - - 6 21 5 7 - <_> - 8 - - 6 5 4 2 - <_> - 3 - - 3 7 2 11 - <_> - 8 - - 2 21 1 5 - <_> - 2 - - 5 8 1 1 - <_> - 9 - - 7 12 1 5 - <_> - 2 - - 6 9 4 2 - <_> - 8 - - 8 6 1 2 - <_> - 9 - - 12 24 2 5 - <_> - 8 - - 11 0 3 19 - <_> - 3 - - 0 26 4 3 - <_> - 3 - - 4 13 2 15 - <_> - 7 - - 8 19 1 1 - <_> - 2 - - 9 0 2 8 - <_> - 4 - - 7 3 2 18 - <_> - 9 - - 14 2 1 2 - <_> - 1 - - 6 22 4 2 - <_> - 5 - - 12 30 2 1 - <_> - 5 - - 10 20 1 6 - <_> - 2 - - 3 6 7 2 - <_> - 1 - - 6 11 5 2 - <_> - 3 - - 0 6 10 19 - <_> - 7 - - 6 29 1 2 - <_> - 3 - - 6 9 3 8 - <_> - 0 - - 2 12 10 7 - <_> - 2 - - 1 16 2 1 - <_> - 7 - - 1 15 8 1 - <_> - 4 - - 7 18 2 2 - <_> - 3 - - 6 5 9 3 - <_> - 5 - - 0 19 15 8 - <_> - 2 - - 1 25 8 3 - <_> - 2 - - 13 14 1 1 - <_> - 1 - - 13 3 2 12 - <_> - 7 - - 0 24 7 1 - <_> - 3 - - 0 28 15 2 - <_> - 1 - - 4 21 7 5 - <_> - 5 - - 5 14 1 10 - <_> - 1 - - 9 10 1 3 - <_> - 1 - - 1 7 14 5 - <_> - 8 - - 0 16 3 3 - <_> - 1 - - 5 9 1 2 - <_> - 4 - - 8 9 3 19 - <_> - 5 - - 3 21 2 9 - <_> - 0 - - 6 19 2 12 - <_> - 1 - - 5 17 6 3 - <_> - 3 - - 2 19 13 11 - <_> - 0 - - 9 9 1 2 - <_> - 5 - - 9 8 6 4 - <_> - 0 - - 3 8 4 1 - <_> - 1 - - 3 22 3 8 - <_> - 1 - - 2 19 3 4 - <_> - 5 - - 13 1 1 30 - <_> - 5 - - 5 19 7 6 - <_> - 2 - - 0 23 9 1 - <_> - 5 - - 6 17 3 1 - <_> - 4 - - 11 0 3 21 - <_> - 1 - - 2 4 12 5 - <_> - 5 - - 1 13 1 7 - <_> - 1 - - 4 3 5 1 - <_> - 5 - - 9 5 1 7 - <_> - 0 - - 7 18 4 2 - <_> - 5 - - 5 28 8 2 - <_> - 5 - - 3 26 7 2 - <_> - 8 - - 7 5 2 3 - <_> - 4 - - 1 30 8 1 - <_> - 4 - - 2 6 5 7 - <_> - 9 - - 7 1 1 2 - <_> - 9 - - 7 13 4 9 - <_> - 9 - - 3 3 10 3 - <_> - 1 - - 3 4 6 2 - <_> - 1 - - 5 28 6 1 - <_> - 4 - - 4 5 11 9 - <_> - 3 - - 2 16 1 11 - <_> - 0 - - 6 20 5 7 - <_> - 4 - - 10 1 1 8 - <_> - 3 - - 11 22 1 6 - <_> - 4 - - 5 12 6 17 - <_> - 5 - - 10 10 4 8 - <_> - 5 - - 2 1 5 13 - <_> - 5 - - 4 2 8 2 - <_> - 7 - - 2 21 12 2 - <_> - 8 - - 6 6 2 2 - <_> - 9 - - 7 12 1 5 - <_> - 0 - - 2 4 4 12 - <_> - 3 - - 2 15 2 12 - <_> - 2 - - 4 1 3 26 - <_> - 4 - - 0 4 13 4 - <_> - 5 - - 13 15 1 11 - <_> - 5 - - 4 0 9 11 - <_> - 5 - - 7 0 5 7 - <_> - 9 - - 6 19 2 5 - <_> - 1 - - 7 19 2 5 - <_> - 7 - - 2 11 11 2 - <_> - 1 - - 5 9 6 1 - <_> - 7 - - 7 29 2 2 - <_> - 2 - - 8 8 4 1 - <_> - 1 - - 4 27 8 1 - <_> - 4 - - 0 29 14 1 - <_> - 4 - - 8 7 4 8 - <_> - 7 - - 10 28 5 1 - <_> - 2 - - 8 16 1 2 - <_> - 3 - - 2 24 7 4 - <_> - 1 - - 11 15 3 8 - <_> - 5 - - 1 26 1 5 - <_> - 8 - - 3 27 8 2 - <_> - 2 - - 10 9 3 2 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 3 1 - <_> - 4 - - 3 10 12 3 - <_> - 7 - - 2 27 2 2 - <_> - 4 - - 3 24 8 2 - <_> - 3 - - 5 5 1 14 - <_> - 7 - - 6 12 3 2 - <_> - 8 - - 0 4 15 2 - <_> - 8 - - 10 3 2 1 - <_> - 4 - - 6 26 4 2 - <_> - 2 - - 7 11 2 3 - <_> - 4 - - 5 21 5 8 - <_> - 0 - - 5 5 6 3 - <_> - 5 - - 2 13 1 10 - <_> - 4 - - 4 0 6 22 - <_> - 1 - - 5 15 5 11 - <_> - 4 - - 8 3 1 17 - <_> - 2 - - 7 25 3 1 - <_> - 5 - - 6 28 7 2 - <_> - 5 - - 11 13 1 9 - <_> - 0 - - 9 14 3 11 - <_> - 2 - - 5 16 4 11 - <_> - 5 - - 3 15 7 12 - <_> - 5 - - 12 17 3 2 - <_> - 4 - - 7 18 2 2 - <_> - 1 - - 7 27 3 3 - <_> - 4 - - 7 12 3 3 - <_> - 8 - - 8 6 1 2 - <_> - 9 - - 5 16 1 5 - <_> - 8 - - 6 25 4 3 - <_> - 3 - - 6 20 1 5 - <_> - 4 - - 3 26 10 5 - <_> - 4 - - 7 21 3 2 - <_> - 3 - - 3 0 9 10 - <_> - 0 - - 3 9 5 1 - <_> - 3 - - 7 7 6 5 - <_> - 5 - - 3 30 11 1 - <_> - 2 - - 4 26 9 4 - <_> - 0 - - 0 29 9 1 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 9 5 2 1 - <_> - 9 - - 7 10 3 6 - <_> - 5 - - 8 5 5 10 - <_> - 7 - - 3 5 10 2 - <_> - 2 - - 14 22 1 4 - <_> - 9 - - 8 1 2 1 - <_> - 2 - - 4 9 4 1 - <_> - 8 - - 8 1 1 6 - <_> - 3 - - 2 9 7 5 - <_> - 4 - - 1 21 2 4 - <_> - 0 - - 8 9 2 1 - <_> - 8 - - 6 6 2 2 - <_> - 2 - - 6 18 5 10 - <_> - 8 - - 1 4 14 6 - <_> - 3 - - 6 9 3 12 - <_> - 3 - - 5 4 2 9 - <_> - 8 - - 6 12 5 2 - <_> - 9 - - 6 8 2 2 - <_> - 9 - - 1 5 14 11 - <_> - 5 - - 6 8 4 1 - <_> - 5 - - 6 4 4 3 - <_> - 0 - - 0 20 15 10 - <_> - 7 - - 0 27 6 1 - <_> - 2 - - 5 1 2 4 - <_> - 4 - - 8 23 1 1 - <_> - 9 - - 2 2 8 3 - <_> - 1 - - 3 28 8 1 - <_> - 2 - - 4 30 11 1 - <_> - 1 - - 4 3 5 1 - <_> - 0 - - 7 19 4 9 - <_> - 0 - - 13 24 1 5 - <_> - 3 - - 10 18 1 8 - <_> - 4 - - 1 9 14 2 - <_> - 1 - - 7 4 2 4 - <_> - 7 - - 9 27 3 4 - <_> - 1 - - 9 10 1 3 - <_> - 7 - - 14 0 1 26 - <_> - 5 - - 2 9 13 20 - <_> - 0 - - 7 11 2 3 - <_> - 3 - - 4 9 2 19 - <_> - 7 - - 3 16 1 4 - <_> - 5 - - 5 29 4 2 - <_> - 0 - - 3 25 9 5 - <_> - 3 - - 7 29 8 2 - <_> - 4 - - 3 11 9 14 - <_> - 4 - - 8 11 1 8 - <_> - 8 - - 6 21 4 4 - <_> - 3 - - 0 23 3 7 - <_> - 3 - - 3 23 4 4 - <_> - 5 - - 5 18 3 6 - <_> - 5 - - 8 2 5 10 - <_> - 7 - - 2 4 3 5 - <_> - 2 - - 4 10 7 1 - <_> - 3 - - 3 9 9 18 - <_> - 3 - - 5 28 6 1 - <_> - 4 - - 1 6 10 8 - <_> - 3 - - 0 0 5 26 - <_> - 2 - - 5 0 5 31 - <_> - 5 - - 10 25 2 1 - <_> - 2 - - 8 9 1 3 - <_> - 2 - - 3 24 6 4 - <_> - 8 - - 8 6 1 2 - <_> - 7 - - 2 5 8 4 - <_> - 8 - - 10 2 1 5 - <_> - 5 - - 2 7 2 16 - <_> - 0 - - 2 27 1 3 - <_> - 1 - - 1 17 4 2 - <_> - 9 - - 13 25 1 5 - <_> - 4 - - 7 3 2 2 - <_> - 8 - - 6 28 4 1 - <_> - 1 - - 1 10 14 12 - <_> - 3 - - 4 4 5 23 - <_> - 5 - - 1 16 10 8 - <_> - 2 - - 6 10 3 4 - <_> - 5 - - 7 21 5 5 - <_> - 5 - - 9 16 3 5 - <_> - 3 - - 14 24 1 6 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 6 5 8 - <_> - 8 - - 8 16 2 2 - <_> - 1 - - 4 27 10 1 - <_> - 1 - - 5 26 7 2 - <_> - 4 - - 5 20 8 1 - <_> - 9 - - 9 11 1 2 - <_> - 9 - - 8 1 2 1 - <_> - 8 - - 8 4 3 25 - <_> - 1 - - 6 28 5 1 - <_> - 8 - - 8 28 3 3 - <_> - 4 - - 6 29 4 1 - <_> - 4 - - 7 21 3 2 - <_> - 5 - - 10 18 1 11 - <_> - 2 - - 7 9 5 1 - <_> - 5 - - 0 21 3 6 - <_> - 2 - - 3 22 7 6 - <_> - 0 - - 6 10 3 2 - <_> - 2 - - 11 24 2 6 - <_> - 7 - - 14 17 1 13 - <_> - 8 - - 4 3 3 1 - <_> - 4 - - 5 3 6 6 - <_> - 5 - - 1 16 6 15 - <_> - 3 - - 3 29 5 2 - <_> - 0 - - 6 18 4 12 - <_> - 4 - - 10 0 3 13 - <_> - 0 - - 7 11 2 6 - <_> - 5 - - 3 10 12 3 - <_> - 1 - - 7 1 3 2 - <_> - 1 - - 4 26 6 3 - <_> - 4 - - 1 11 11 19 - <_> - 8 - - 7 5 2 3 - <_> - 3 - - 12 11 1 20 - <_> - 5 - - 12 30 2 1 - <_> - 0 - - 5 26 8 4 - <_> - 8 - - 11 21 4 1 - <_> - 1 - - 3 10 10 1 - <_> - 4 - - 7 1 4 18 - <_> - 2 - - 7 20 3 1 - <_> - 5 - - 5 28 4 2 - <_> - 0 - - 2 4 6 5 - <_> - 3 - - 5 7 2 3 - <_> - 9 - - 8 19 1 2 - <_> - 9 - - 5 6 5 1 - <_> - 7 - - 1 22 2 3 - <_> - 2 - - 14 14 1 13 - <_> - 1 - - 2 21 3 6 - <_> - 9 - - 14 1 1 6 - <_> - 1 - - 5 11 3 2 - <_> - 7 - - 14 4 1 22 - <_> - 0 - - 6 4 3 24 - <_> - 9 - - 7 9 2 7 - <_> - 9 - - 9 17 6 2 - <_> - 0 - - 7 10 1 1 - <_> - 3 - - 6 2 1 8 - <_> - 0 - - 5 6 1 6 - <_> - 3 - - 5 0 10 4 - <_> - 7 - - 2 30 11 1 - <_> - 1 - - 7 16 3 11 - <_> - 1 - - 9 10 2 7 - <_> - 2 - - 5 20 6 8 - <_> - 0 - - 10 8 2 2 - <_> - 3 - - 8 13 1 7 - <_> - 8 - - 7 7 3 1 - <_> - 0 - - 5 28 8 1 - <_> - 8 - - 8 3 1 2 - <_> - 0 - - 5 17 7 11 - <_> - 9 - - 11 6 2 1 - <_> - 4 - - 2 27 5 4 - <_> - 5 - - 8 28 3 3 - <_> - 1 - - 7 28 6 1 - <_> - 7 - - 7 20 1 1 - <_> - 4 - - 7 18 3 8 - <_> - 1 - - 11 21 2 8 - <_> - 2 - - 6 18 5 10 - <_> - 9 - - 6 18 1 2 - <_> - 4 - - 9 6 4 18 - <_> - 1 - - 12 23 1 7 - <_> - 7 - - 14 1 1 24 - <_> - 0 - - 4 8 2 2 - <_> - 1 - - 13 12 2 1 - <_> - 7 - - 0 27 10 1 - <_> - 3 - - 8 23 7 8 - <_> - 7 - - 7 13 3 1 - <_> - 8 - - 7 6 1 2 - <_> - 4 - - 9 9 6 3 - <_> - 8 - - 2 6 13 1 - <_> - 5 - - 8 3 5 12 - <_> - 2 - - 2 25 1 3 - <_> - 4 - - 6 2 5 6 - <_> - 3 - - 10 23 1 4 - <_> - 4 - - 5 26 5 2 - <_> - 3 - - 11 17 1 14 - <_> - 4 - - 3 12 10 9 - <_> - 4 - - 4 14 7 7 - <_> - 7 - - 11 11 2 5 - <_> - 4 - - 8 20 2 3 - <_> - 5 - - 7 19 5 9 - <_> - 4 - - 4 16 9 4 - <_> - 5 - - 2 28 1 2 - <_> - 3 - - 4 8 8 7 - <_> - 9 - - 8 13 1 1 - <_> - 0 - - 6 9 2 3 - <_> - 0 - - 5 5 5 3 - <_> - 5 - - 9 20 3 2 - <_> - 2 - - 8 30 6 1 - <_> - 3 - - 2 0 4 16 - <_> - 1 - - 11 19 2 5 - <_> - 9 - - 14 24 1 2 - <_> - 1 - - 4 27 6 3 - <_> - 9 - - 7 9 2 3 - <_> - 4 - - 6 22 4 3 - <_> - 3 - - 3 19 12 4 - <_> - 3 - - 4 12 2 15 - <_> - 3 - - 2 22 1 2 - <_> - 3 - - 4 10 2 13 - <_> - 9 - - 7 14 2 3 - <_> - 2 - - 6 10 3 1 - <_> - 9 - - 12 2 2 2 - <_> - 5 - - 4 3 6 1 - <_> - 3 - - 2 5 7 4 - <_> - 7 - - 12 14 1 9 - <_> - 1 - - 4 4 4 4 - <_> - 4 - - 9 28 5 3 - <_> - 1 - - 8 27 6 1 - <_> - 1 - - 11 23 2 2 - <_> - 7 - - 2 5 12 1 - <_> - 3 - - 1 12 7 11 - <_> - 9 - - 8 24 1 1 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 6 5 8 - <_> - 1 - - 10 9 1 2 - <_> - 9 - - 6 7 2 6 - <_> - 9 - - 3 3 10 3 - <_> - 8 - - 7 9 1 3 - <_> - 0 - - 6 21 5 7 - <_> - 5 - - 10 29 5 2 - <_> - 0 - - 13 27 2 4 - <_> - 9 - - 7 18 1 4 - <_> - 3 - - 3 21 6 4 - <_> - 2 - - 6 5 5 3 - <_> - 1 - - 5 10 4 3 - <_> - 0 - - 5 28 6 1 - <_> - 0 - - 11 15 2 2 - <_> - 7 - - 1 27 7 1 - <_> - 5 - - 10 11 2 1 - <_> - 1 - - 5 12 8 12 - <_> - 4 - - 7 0 2 18 - <_> - 3 - - 1 22 10 3 - <_> - 2 - - 3 5 8 25 - <_> - 5 - - 7 16 1 4 - <_> - 5 - - 9 5 2 12 - <_> - 4 - - 4 29 11 2 - <_> - 2 - - 9 1 2 2 - <_> - 2 - - 8 21 2 7 - <_> - 4 - - 7 27 1 4 - <_> - 8 - - 6 5 4 2 - <_> - 5 - - 1 12 3 6 - <_> - 8 - - 1 20 6 2 - <_> - 4 - - 7 17 4 2 - <_> - 1 - - 6 27 9 3 - <_> - 5 - - 13 1 1 23 - <_> - 9 - - 8 9 1 2 - <_> - 5 - - 11 30 4 1 - <_> - 9 - - 7 0 2 13 - <_> - 3 - - 5 2 1 29 - <_> - 7 - - 10 8 2 3 - <_> - 2 - - 4 29 2 2 - <_> - 3 - - 4 12 11 1 - <_> - 3 - - 1 13 12 4 - <_> - 0 - - 6 10 3 2 - <_> - 4 - - 2 9 5 2 - <_> - 1 - - 5 27 5 1 - <_> - 8 - - 6 22 2 1 - <_> - 3 - - 12 19 2 7 - <_> - 5 - - 8 16 4 12 - <_> - 9 - - 6 17 3 1 - <_> - 2 - - 6 14 8 10 - <_> - 4 - - 4 28 8 3 - <_> - 4 - - 4 16 9 12 - <_> - 0 - - 7 29 1 2 - <_> - 4 - - 3 28 11 3 - <_> - 4 - - 4 16 5 2 - <_> - 8 - - 8 6 1 2 - <_> - 2 - - 7 8 1 4 - <_> - 1 - - 12 24 2 7 - <_> - 1 - - 7 3 2 6 - <_> - 4 - - 7 4 3 1 - <_> - 2 - - 1 29 2 2 - <_> - 2 - - 2 24 6 7 - <_> - 5 - - 7 27 2 1 - <_> - 0 - - 5 4 10 4 - <_> - 1 - - 8 11 2 2 - <_> - 2 - - 4 20 6 7 - <_> - 8 - - 6 28 4 3 - <_> - 5 - - 8 28 3 2 - <_> - 3 - - 1 0 13 1 - <_> - 2 - - 3 15 3 2 - <_> - 1 - - 8 27 1 2 - <_> - 5 - - 1 22 1 4 - <_> - 4 - - 1 26 11 4 - <_> - 5 - - 9 0 3 20 - <_> - 7 - - 7 21 2 4 - <_> - 0 - - 7 14 2 3 - <_> - 0 - - 6 4 3 24 - <_> - 7 - - 7 6 2 2 - <_> - 2 - - 7 13 1 1 - <_> - 8 - - 6 6 2 2 - <_> - 0 - - 7 10 3 1 - <_> - 8 - - 12 15 1 10 - <_> - 9 - - 7 15 3 2 - <_> - 7 - - 6 16 5 1 - <_> - 1 - - 7 18 2 7 - <_> - 1 - - 7 23 2 6 - <_> - 9 - - 2 5 9 1 - <_> - 0 - - 8 3 4 3 - <_> - 3 - - 4 2 4 9 - <_> - 4 - - 6 21 5 3 - <_> - 2 - - 4 9 4 2 - <_> - 9 - - 13 17 1 5 - <_> - 2 - - 9 25 1 4 - <_> - 0 - - 10 28 2 3 - <_> - 1 - - 4 10 10 1 - <_> - 0 - - 7 9 6 17 - <_> - 0 - - 10 10 1 10 - <_> - 7 - - 5 29 9 1 - <_> - 3 - - 0 17 5 14 - <_> - 3 - - 3 1 11 1 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 7 6 2 5 - <_> - 8 - - 7 8 2 1 - <_> - 4 - - 2 12 11 11 - <_> - 2 - - 9 30 4 1 - <_> - 3 - - 9 0 6 14 - <_> - 3 - - 4 12 2 15 - <_> - 4 - - 1 30 4 1 - <_> - 0 - - 1 16 6 8 - <_> - 2 - - 4 25 9 3 - <_> - 3 - - 10 4 5 25 - <_> - 2 - - 8 16 1 2 - <_> - 1 - - 6 7 3 3 - <_> - 7 - - 9 12 1 1 - <_> - 4 - - 3 5 8 3 - <_> - 5 - - 8 5 5 7 - <_> - 1 - - 5 8 8 1 - <_> - 2 - - 3 27 4 3 - <_> - 7 - - 2 27 8 1 - <_> - 4 - - 0 27 13 2 - <_> - 2 - - 6 17 3 11 - <_> - 8 - - 8 6 1 2 - <_> - 0 - - 11 0 2 3 - <_> - 4 - - 1 3 11 5 - <_> - 0 - - 3 28 5 3 - <_> - 1 - - 7 15 4 7 - <_> - 1 - - 2 27 10 1 - <_> - 0 - - 6 18 4 9 - <_> - 1 - - 4 24 9 1 - <_> - 9 - - 14 8 1 8 - <_> - 2 - - 8 9 2 1 - <_> - 2 - - 8 1 4 29 - <_> - 2 - - 4 2 3 4 - <_> - 2 - - 5 5 6 3 - <_> - 7 - - 2 14 8 5 - <_> - 7 - - 9 30 1 1 - <_> - 9 - - 5 16 3 7 - <_> - 7 - - 3 13 7 13 - <_> - 2 - - 14 22 1 7 - <_> - 4 - - 8 26 7 2 - <_> - 0 - - 3 8 4 1 - <_> - 3 - - 7 25 6 5 - <_> - 1 - - 6 4 4 2 - <_> - 4 - - 7 3 2 2 - <_> - 4 - - 3 8 10 23 - <_> - 1 - - 7 9 5 1 - <_> - 1 - - 4 13 9 6 - <_> - 1 - - 5 28 6 1 - <_> - 5 - - 10 11 4 1 - <_> - 2 - - 6 5 1 3 - <_> - 5 - - 9 4 6 9 - <_> - 1 - - 5 11 4 3 - <_> - 7 - - 7 6 5 3 - <_> - 7 - - 11 26 1 5 - <_> - 8 - - 4 6 8 2 - <_> - 0 - - 4 12 2 10 - <_> - 8 - - 1 16 3 7 - <_> - 5 - - 9 14 3 13 - <_> - 1 - - 13 22 2 1 - <_> - 4 - - 1 29 14 2 - <_> - 1 - - 3 27 10 4 - <_> - 3 - - 3 30 1 1 - <_> - 2 - - 0 23 4 8 - <_> - 0 - - 6 25 5 2 - <_> - 5 - - 13 7 1 24 - <_> - 3 - - 2 5 6 9 - <_> - 0 - - 7 15 3 2 - <_> - 0 - - 9 0 3 31 - <_> - 0 - - 7 10 3 1 - <_> - 3 - - 13 19 1 3 - <_> - 4 - - 12 9 3 19 - <_> - 8 - - 7 6 3 4 - <_> - 9 - - 8 15 1 2 - <_> - 9 - - 0 1 15 4 - <_> - 1 - - 6 4 7 4 - <_> - 5 - - 6 28 4 1 - <_> - 0 - - 6 19 4 10 - <_> - 2 - - 4 18 5 1 - <_> - 4 - - 3 1 10 24 - <_> - 3 - - 1 9 6 16 - <_> - 1 - - 9 16 2 3 - <_> - 4 - - 1 30 8 1 - <_> - 1 - - 4 24 5 5 - <_> - 3 - - 0 10 1 21 - <_> - 8 - - 7 5 2 3 - <_> - 1 - - 2 19 1 2 - <_> - 9 - - 7 20 1 1 - <_> - 9 - - 10 28 5 2 - <_> - 1 - - 6 19 4 5 - <_> - 9 - - 7 5 2 21 - <_> - 2 - - 5 19 6 10 - <_> - 4 - - 3 29 5 1 - <_> - 0 - - 4 22 1 7 - <_> - 9 - - 8 9 1 2 - <_> - 9 - - 7 3 2 6 - <_> - 0 - - 10 16 1 2 - <_> - 7 - - 1 0 2 28 - <_> - 5 - - 6 26 7 2 - <_> - 3 - - 10 23 4 6 - <_> - 2 - - 1 29 2 2 - <_> - 0 - - 3 3 3 19 - <_> - 0 - - 2 11 7 1 - <_> - 5 - - 9 2 1 14 - <_> - 7 - - 13 19 2 1 - <_> - 3 - - 5 26 3 1 - <_> - 2 - - 12 26 1 5 - <_> - 5 - - 11 7 1 24 - <_> - 4 - - 5 24 1 2 - <_> - 4 - - 5 11 2 19 - <_> - 5 - - 5 0 1 6 - <_> - 7 - - 8 13 2 2 - <_> - 3 - - 6 5 1 6 - <_> - 9 - - 10 30 1 1 - <_> - 1 - - 8 25 2 4 - <_> - 2 - - 6 9 4 2 - <_> - 5 - - 12 10 3 13 - <_> - 5 - - 9 30 6 1 - <_> - 8 - - 7 6 1 2 - <_> - 4 - - 13 12 2 1 - <_> - 8 - - 5 4 6 3 - <_> - 7 - - 4 30 8 1 - <_> - 1 - - 7 16 3 10 - <_> - 0 - - 9 14 3 4 - <_> - 1 - - 5 10 7 2 - <_> - 4 - - 7 2 1 27 - <_> - 8 - - 0 9 3 20 - <_> - 1 - - 6 22 1 2 - <_> - 8 - - 7 5 2 3 - <_> - 3 - - 0 12 3 19 - <_> - 9 - - 4 8 8 3 - <_> - 9 - - 5 4 4 3 - <_> - 0 - - 4 10 1 1 - <_> - 1 - - 14 2 1 14 - <_> - 0 - - 2 18 11 3 - <_> - 5 - - 7 26 8 2 - <_> - 1 - - 10 15 1 3 - <_> - 1 - - 4 22 1 6 - <_> - 5 - - 2 5 10 22 - <_> - 4 - - 12 27 2 4 - <_> - 0 - - 1 29 14 1 - <_> - 5 - - 3 4 2 5 - <_> - 4 - - 4 9 3 9 - <_> - 7 - - 11 25 2 6 - <_> - 0 - - 4 0 1 1 - <_> - 9 - - 8 13 2 5 - <_> - 9 - - 4 15 11 16 - <_> - 5 - - 11 16 1 7 - <_> - 1 - - 3 28 10 1 - <_> - 3 - - 4 9 2 19 - <_> - 7 - - 1 27 13 2 - <_> - 1 - - 6 23 4 4 - <_> - 7 - - 14 4 1 17 - <_> - 9 - - 7 22 5 5 - <_> - 4 - - 6 15 5 1 - <_> - 5 - - 0 24 5 1 - <_> - 3 - - 5 11 8 2 - <_> - 2 - - 1 25 9 2 - <_> - 3 - - 12 3 2 20 - <_> - 5 - - 5 22 1 8 - <_> - 4 - - 6 4 4 5 - <_> - 3 - - 1 15 2 16 - <_> - 0 - - 2 19 8 12 - <_> - 1 - - 10 9 1 2 - <_> - 1 - - 4 3 5 8 - <_> - 8 - - 8 10 1 6 - <_> - 5 - - 2 0 7 2 - <_> - 2 - - 4 16 6 12 - <_> - 5 - - 7 11 1 18 - <_> - 2 - - 5 3 6 2 - <_> - 0 - - 5 5 5 3 - <_> - 2 - - 0 0 4 7 - <_> - 1 - - 4 10 6 4 - <_> - 1 - - 8 27 2 3 - <_> - 0 - - 9 15 2 12 - <_> - 1 - - 6 22 4 2 - <_> - 5 - - 12 28 2 3 - <_> - 8 - - 0 20 3 2 - <_> - 8 - - 6 6 2 2 - <_> - 9 - - 12 12 3 6 - <_> - 3 - - 4 1 5 12 - <_> - 0 - - 6 10 3 2 - <_> - 2 - - 4 15 5 16 - <_> - 0 - - 2 1 8 2 - <_> - 5 - - 3 29 10 1 - <_> - 2 - - 9 9 4 2 - <_> - 1 - - 13 4 2 5 - <_> - 4 - - 3 15 10 15 - <_> - 5 - - 2 8 11 5 - <_> - 5 - - 8 22 1 5 - <_> - 7 - - 4 5 6 1 - <_> - 7 - - 2 27 1 3 - <_> - 4 - - 7 12 1 12 - <_> - 2 - - 0 30 4 1 - <_> - 8 - - 8 4 7 9 - <_> - 2 - - 8 14 2 4 - <_> - 3 - - 3 10 2 1 - <_> - 3 - - 3 0 9 10 - <_> - 3 - - 14 0 1 1 - <_> - 2 - - 0 25 10 2 - <_> - 2 - - 8 7 2 4 - <_> - 8 - - 4 30 9 1 - <_> - 8 - - 7 5 2 3 - <_> - 5 - - 10 11 4 2 - <_> - 8 - - 6 8 3 2 - <_> - 9 - - 5 1 4 2 - <_> - 0 - - 7 8 1 9 - <_> - 9 - - 6 0 3 11 - <_> - 0 - - 4 7 2 4 - <_> - 3 - - 6 6 8 1 - <_> - 3 - - 1 7 12 20 - <_> - 4 - - 6 21 3 1 - <_> - 1 - - 11 19 2 10 - <_> - 3 - - 4 7 1 21 - <_> - 3 - - 13 21 2 9 - <_> - 3 - - 0 8 7 4 - <_> - 2 - - 7 24 2 3 - <_> - 5 - - 6 28 3 1 - <_> - 4 - - 8 18 1 2 - <_> - 0 - - 2 9 8 17 - <_> - 4 - - 9 8 3 12 - <_> - 1 - - 2 25 9 6 - <_> - 2 - - 6 24 5 4 - <_> - 9 - - 7 18 2 2 - <_> - 9 - - 3 3 10 3 - <_> - 8 - - 7 6 3 4 - <_> - 4 - - 1 29 9 2 - <_> - 1 - - 2 27 7 3 - <_> - 3 - - 3 28 6 2 - <_> - 0 - - 7 17 5 10 - <_> - 2 - - 13 2 1 28 - <_> - 3 - - 10 16 2 10 - <_> - 8 - - 7 1 2 2 - <_> - 8 - - 7 5 2 3 - <_> - 2 - - 9 30 4 1 - <_> - 0 - - 9 17 3 6 - <_> - 0 - - 0 20 1 10 - <_> - 0 - - 6 12 5 6 - <_> - 1 - - 8 27 6 2 - <_> - 5 - - 0 29 9 2 - <_> - 4 - - 9 20 5 11 - <_> - 2 - - 7 14 6 12 - <_> - 8 - - 10 24 1 1 - <_> - 2 - - 1 17 14 9 - <_> - 1 - - 10 9 1 2 - <_> - 4 - - 8 7 5 13 - <_> - 9 - - 1 28 10 2 - <_> - 4 - - 4 20 7 1 - <_> - 4 - - 8 4 1 8 - <_> - 2 - - 6 23 4 8 - <_> - 3 - - 5 9 1 14 - <_> - 1 - - 2 11 12 5 - <_> - 0 - - 7 10 3 7 - <_> - 8 - - 7 6 1 2 - <_> - 0 - - 4 28 11 2 - <_> - 9 - - 8 15 1 2 - <_> - 0 - - 0 13 4 16 - <_> - 3 - - 3 21 6 8 - <_> - 5 - - 12 15 1 4 - <_> - 1 - - 6 12 3 1 - <_> - 5 - - 10 3 4 6 - <_> - 2 - - 9 9 2 6 - <_> - 0 - - 0 3 8 10 - <_> - 1 - - 8 27 5 1 - <_> - 7 - - 5 11 1 1 - <_> - 0 - - 4 8 2 2 - <_> - 4 - - 7 3 2 2 - <_> - 3 - - 2 0 4 16 - <_> - 7 - - 3 28 2 1 - <_> - 5 - - 1 20 1 6 - <_> - 5 - - 9 9 5 4 - <_> - 5 - - 2 0 11 1 - <_> - 4 - - 3 13 7 17 - <_> - 4 - - 6 29 2 2 - <_> - 2 - - 6 0 4 9 - <_> - 7 - - 6 5 3 18 - <_> - 2 - - 6 10 5 2 - <_> - 3 - - 3 11 4 12 - <_> - 4 - - 8 29 5 2 - <_> - 4 - - 4 4 6 5 - <_> - 1 - - 8 27 1 2 - <_> - 5 - - 1 29 3 2 - <_> - 4 - - 8 1 6 18 - <_> - 5 - - 3 26 7 1 - <_> - 8 - - 13 27 1 2 - <_> - 3 - - 0 6 5 25 - <_> - 4 - - 6 22 4 3 - <_> - 1 - - 7 23 2 6 - <_> - 8 - - 6 5 4 2 - <_> - 9 - - 6 8 2 2 - <_> - 9 - - 4 2 7 5 - <_> - 8 - - 4 10 7 7 - <_> - 5 - - 2 30 13 1 - <_> - 7 - - 6 5 4 6 - <_> - 0 - - 5 24 6 4 - <_> - 2 - - 4 14 6 12 - <_> - 3 - - 14 22 1 3 - <_> - 5 - - 6 15 1 5 - <_> - 0 - - 5 26 6 2 - <_> - 9 - - 4 20 3 1 - <_> - 3 - - 11 24 3 1 - <_> - 5 - - 9 4 4 9 - <_> - 7 - - 6 3 4 1 - <_> - 4 - - 5 4 6 5 - <_> - 2 - - 3 8 3 1 - <_> - 8 - - 5 24 2 1 - <_> - 7 - - 10 9 1 2 - <_> - 4 - - 11 28 4 3 - <_> - 0 - - 2 5 5 4 - <_> - 2 - - 11 10 1 16 - <_> - 0 - - 9 3 3 2 - <_> - 4 - - 1 5 7 18 - <_> - 4 - - 5 25 6 3 - <_> - 3 - - 10 0 4 15 - <_> - 2 - - 9 9 2 6 - <_> - 3 - - 5 0 9 1 - <_> - 3 - - 9 21 6 1 - <_> - 0 - - 5 19 8 2 - <_> - 2 - - 11 21 3 1 - <_> - 3 - - 7 14 1 2 - <_> - 5 - - 8 11 5 11 - <_> - 2 - - 9 17 1 2 - <_> - 1 - - 4 28 8 1 - <_> - 5 - - 4 8 3 2 - <_> - 0 - - 12 26 1 1 - <_> - 1 - - 5 13 6 13 - <_> - 3 - - 4 10 2 13 - <_> - 1 - - 7 5 2 4 - <_> - 2 - - 4 29 10 1 - <_> - 4 - - 5 21 5 4 - <_> - 8 - - 8 6 1 2 - <_> - 2 - - 4 18 5 10 - <_> - 2 - - 14 17 1 14 - <_> - 9 - - 8 15 1 2 - <_> - 1 - - 4 4 7 4 - <_> - 4 - - 7 3 2 4 - <_> - 4 - - 11 29 4 2 - <_> - 1 - - 8 11 2 1 - <_> - 2 - - 1 30 12 1 - <_> - 2 - - 6 7 5 2 - <_> - 1 - - 1 27 9 4 - <_> - 5 - - 14 2 1 2 - <_> - 0 - - 2 27 1 3 - <_> - 9 - - 1 1 7 3 - <_> - 1 - - 4 4 4 4 - <_> - 9 - - 8 8 1 1 - <_> - 5 - - 10 7 1 7 - <_> - 7 - - 11 0 4 9 - <_> - 2 - - 7 11 4 2 - <_> - 2 - - 3 24 9 4 - <_> - 5 - - 9 19 4 8 - <_> - 5 - - 5 21 1 5 - <_> - 8 - - 7 5 2 3 - <_> - 0 - - 7 12 3 5 - <_> - 8 - - 10 4 1 4 - <_> - 9 - - 6 15 2 2 - <_> - 5 - - 9 17 4 10 - <_> - 4 - - 1 9 8 1 - <_> - 5 - - 4 28 11 3 - <_> - 0 - - 7 0 3 8 - <_> - 5 - - 10 25 1 2 - <_> - 2 - - 6 10 3 1 - <_> - 3 - - 2 10 6 3 - <_> - 4 - - 12 22 3 2 - <_> - 2 - - 5 18 5 10 - <_> - 3 - - 14 2 1 22 - <_> - 4 - - 13 7 2 13 - <_> - 1 - - 7 28 5 1 - <_> - 1 - - 5 27 2 1 - <_> - 8 - - 7 7 3 1 - <_> - 4 - - 6 17 8 14 - <_> - 3 - - 3 2 9 1 - <_> - 7 - - 1 22 2 2 - <_> - 2 - - 7 30 7 1 - <_> - 3 - - 7 8 3 2 - <_> - 5 - - 8 10 6 3 - <_> - 8 - - 1 30 2 1 - <_> - 3 - - 7 14 1 2 - <_> - 2 - - 8 20 1 6 - <_> - 0 - - 6 18 6 10 - <_> - 2 - - 9 13 4 1 - <_> - 3 - - 11 20 4 4 - <_> - 2 - - 8 16 1 2 - <_> - 5 - - 9 9 4 4 - <_> - 2 - - 7 14 6 1 - <_> - 2 - - 1 10 12 6 - <_> - 7 - - 8 17 1 5 - <_> - 5 - - 0 21 5 3 - <_> - 8 - - 5 6 3 1 - <_> - 9 - - 4 8 7 17 - <_> - 8 - - 2 3 2 5 - <_> - 5 - - 0 30 8 1 - <_> - 4 - - 2 12 8 10 - <_> - 4 - - 4 27 8 1 - <_> - 7 - - 7 30 1 1 - <_> - 5 - - 11 9 1 6 - <_> - 5 - - 3 26 9 1 - <_> - 1 - - 3 10 10 1 - <_> - 0 - - 2 3 3 14 - <_> - 8 - - 7 11 5 3 - <_> - 7 - - 1 30 4 1 - <_> - 3 - - 11 19 2 6 - <_> - 3 - - 4 29 4 2 - <_> - 0 - - 5 24 4 3 - <_> - 2 - - 2 10 1 14 - <_> - 2 - - 14 1 1 11 - <_> - 5 - - 7 2 4 6 - <_> - 7 - - 6 3 4 1 - <_> - 3 - - 1 0 13 1 - <_> - 7 - - 6 5 9 3 - <_> - 2 - - 1 25 8 3 - <_> - 2 - - 9 23 1 8 - <_> - 9 - - 7 12 1 5 - <_> - 8 - - 8 6 1 2 - <_> - 1 - - 6 7 3 3 - <_> - 1 - - 3 29 4 1 - <_> - 0 - - 14 19 1 10 - <_> - 4 - - 14 1 1 26 - <_> - 2 - - 0 28 14 2 - <_> - 2 - - 4 20 9 7 - <_> - 5 - - 7 16 2 5 - <_> - 8 - - 4 6 8 2 - <_> - 0 - - 5 7 10 2 - <_> - 8 - - 6 0 3 3 - <_> - 9 - - 1 0 14 3 - <_> - 5 - - 4 3 6 1 - <_> - 9 - - 1 7 8 19 - <_> - 1 - - 4 28 7 1 - <_> - 9 - - 7 8 1 3 - <_> - 2 - - 5 5 10 2 - <_> - 4 - - 1 29 7 2 - <_> - 1 - - 9 10 1 3 - <_> - 3 - - 4 11 3 1 - <_> - 3 - - 0 7 9 15 - <_> - 0 - - 4 8 2 1 - <_> - 3 - - 12 25 2 1 - <_> - 2 - - 9 30 6 1 - <_> - 3 - - 1 25 12 2 - <_> - 3 - - 6 22 4 6 - <_> - 3 - - 11 24 1 1 - <_> - 0 - - 5 17 7 3 - <_> - 1 - - 2 27 5 1 - <_> - 2 - - 4 9 4 1 - <_> - 5 - - 3 28 5 1 - <_> - 1 - - 4 20 3 1 - <_> - 2 - - 3 5 6 24 - <_> - 7 - - 8 0 1 31 - <_> - 4 - - 7 2 2 15 - <_> - 2 - - 6 13 3 2 - <_> - 3 - - 4 19 4 6 - <_> - 9 - - 14 13 1 2 - <_> - 8 - - 7 5 2 3 - <_> - 9 - - 0 27 1 2 - <_> - 4 - - 3 12 9 15 - <_> - 9 - - 7 15 1 2 - <_> - 5 - - 9 7 4 10 - <_> - 5 - - 11 16 1 7 - <_> - 0 - - 3 28 6 1 - <_> - 7 - - 2 28 12 1 - <_> - 1 - - 13 17 1 5 - <_> - 4 - - 1 9 11 1 - <_> - 4 - - 6 4 9 5 - <_> - 2 - - 2 1 5 1 - <_> - 4 - - 7 18 2 2 - <_> - 1 - - 5 14 7 6 - <_> - 4 - - 6 29 8 2 - <_> - 1 - - 7 28 4 1 - <_> - 9 - - 6 23 3 7 - <_> - 0 - - 10 8 2 2 - <_> - 0 - - 9 20 1 7 - <_> - 8 - - 7 5 1 10 - <_> - 0 - - 5 3 6 6 - <_> - 8 - - 13 18 1 1 - <_> - 2 - - 4 23 5 4 - <_> - 5 - - 1 29 12 1 - <_> - 4 - - 6 22 2 4 - <_> - 1 - - 9 21 5 5 - <_> - 7 - - 10 28 2 2 - <_> - 1 - - 12 22 1 9 - <_> - 8 - - 7 5 2 3 - <_> - 5 - - 1 13 1 7 - <_> - 3 - - 0 27 1 3 - <_> - 3 - - 3 4 6 16 - <_> - 4 - - 2 28 9 1 - <_> - 0 - - 7 10 3 2 - <_> - 7 - - 12 6 2 1 - <_> - 1 - - 8 4 3 6 - <_> - 5 - - 7 20 8 5 - <_> - 7 - - 2 21 4 2 - <_> - 5 - - 11 29 4 2 - <_> - 5 - - 2 5 11 20 - <_> - 3 - - 10 18 1 3 - <_> - 4 - - 4 4 5 4 - <_> - 1 - - 6 10 6 3 - <_> - 3 - - 4 16 8 6 - <_> - 8 - - 11 20 2 9 - <_> - 1 - - 3 27 8 3 - <_> - 7 - - 7 19 3 5 - <_> - 2 - - 0 23 6 1 - <_> - 7 - - 14 23 1 6 - <_> - 1 - - 5 20 6 4 - <_> - 3 - - 5 8 1 18 - <_> - 1 - - 5 9 1 2 - <_> - 4 - - 0 8 8 4 - <_> - 1 - - 1 20 7 1 - <_> - 2 - - 13 2 2 22 - <_> - 2 - - 9 5 5 8 - <_> - 5 - - 7 17 2 1 - <_> - 3 - - 10 23 1 4 - <_> - 5 - - 7 23 7 5 - <_> - 5 - - 14 24 1 2 - <_> - 0 - - 5 6 7 2 - <_> - 3 - - 9 20 6 10 - <_> - 4 - - 0 30 13 1 - <_> - 2 - - 2 23 10 5 - <_> - 2 - - 4 8 4 3 - <_> - 7 - - 4 29 10 2 - <_> - 9 - - 7 17 2 1 - <_> - 7 - - 2 16 9 2 - <_> - 3 - - 0 20 4 10 - <_> - 8 - - 8 6 1 2 - <_> - 2 - - 4 2 3 2 - <_> - 4 - - 6 2 5 6 - <_> - 7 - - 7 5 2 1 - <_> - 0 - - 7 12 5 16 - <_> - 5 - - 5 2 7 21 - <_> - 3 - - 3 0 6 13 - <_> - 0 - - 4 7 2 2 - <_> - 0 - - 7 10 2 4 - <_> - 1 - - 4 27 2 1 - <_> - 9 - - 4 24 1 1 - <_> - 4 - - 1 3 1 16 - <_> - 2 - - 8 28 1 3 - <_> - 1 - - 8 12 2 14 - <_> - 0 - - 8 3 1 25 - <_> - 3 - - 3 9 2 14 - <_> - 0 - - 7 7 1 12 - <_> - 0 - - 0 2 7 25 - <_> - 4 - - 7 11 1 8 - <_> - 5 - - 7 29 8 1 - <_> - 4 - - 13 16 1 3 - <_> - 4 - - 7 7 4 5 - <_> - 3 - - 2 1 10 3 - <_> - 1 - - 8 10 2 4 - <_> - 2 - - 5 18 6 10 - <_> - 2 - - 13 13 2 13 - <_> - 2 - - 6 16 3 1 - <_> - 4 - - 1 9 12 22 - <_> - 5 - - 1 10 11 6 - <_> - 1 - - 2 23 3 2 - <_> - 5 - - 4 28 5 3 - <_> - 7 - - 2 28 12 1 - <_> - 1 - - 7 28 4 1 - <_> - 7 - - 5 11 1 1 - <_> - 3 - - 2 5 6 9 - <_> - 2 - - 7 23 3 6 - <_> - 8 - - 6 6 2 2 - <_> - 5 - - 6 6 2 4 - <_> - 8 - - 4 3 3 1 - <_> - 0 - - 2 28 13 1 - <_> - 7 - - 9 25 5 3 - <_> - 1 - - 11 23 1 3 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 7 1 - <_> - 8 - - 5 19 6 3 - <_> - 1 - - 1 10 14 2 - <_> - 1 - - 5 7 6 1 - <_> - 3 - - 1 24 9 2 - <_> - 9 - - 8 11 1 9 - <_> - 9 - - 2 3 11 3 - <_> - 2 - - 8 23 7 1 - <_> - 2 - - 2 5 9 4 - <_> - 7 - - 8 21 3 1 - <_> - 2 - - 5 3 6 2 - <_> - 5 - - 9 11 5 4 - <_> - 2 - - 10 5 2 10 - <_> - 7 - - 4 27 6 4 - <_> - 1 - - 5 11 6 17 - <_> - 0 - - 9 29 2 1 - <_> - 4 - - 0 28 6 3 - <_> - 0 - - 7 19 3 7 - <_> - 7 - - 6 14 2 1 - <_> - 4 - - 10 15 4 1 - <_> - 9 - - 5 9 1 2 - <_> - 4 - - 5 2 3 5 - <_> - 8 - - 7 6 1 2 - <_> - 8 - - 9 30 6 1 - <_> - 8 - - 9 10 3 9 - <_> - 9 - - 10 29 5 1 - <_> - 3 - - 0 1 9 23 - <_> - 3 - - 3 9 3 8 - <_> - 5 - - 4 20 2 2 - <_> - 1 - - 7 28 3 1 - <_> - 2 - - 6 5 3 2 - <_> - 1 - - 6 21 3 5 - <_> - 3 - - 10 18 1 8 - <_> - 3 - - 4 19 6 8 - <_> - 1 - - 8 1 1 18 - <_> - 0 - - 7 10 3 1 - <_> - 7 - - 1 11 3 3 - <_> - 1 - - 6 2 2 1 - <_> - 0 - - 5 25 7 3 - <_> - 4 - - 12 5 2 1 - <_> - 3 - - 13 23 2 8 - <_> - 0 - - 5 5 6 3 - <_> - 9 - - 3 15 10 7 - <_> - 8 - - 8 6 1 2 - <_> - 7 - - 10 30 1 1 - <_> - 2 - - 10 29 3 2 - <_> - 4 - - 4 9 9 3 - <_> - 4 - - 5 4 7 3 - <_> - 3 - - 6 22 7 2 - <_> - 3 - - 5 3 1 28 - <_> - 5 - - 1 26 10 5 - <_> - 4 - - 7 20 3 4 - <_> - 2 - - 6 19 4 2 - <_> - 2 - - 5 19 4 11 - <_> - 3 - - 1 28 11 2 - <_> - 2 - - 2 20 2 4 - <_> - 3 - - 6 5 9 3 - <_> - 4 - - 9 7 4 24 - <_> - 3 - - 6 0 5 1 - <_> - 2 - - 8 10 1 5 - <_> - 5 - - 2 3 4 28 - <_> - 3 - - 2 0 9 2 - <_> - 4 - - 2 28 12 3 - <_> - 1 - - 11 22 3 8 - <_> - 9 - - 5 8 1 6 - <_> - 0 - - 4 8 2 2 - <_> - 7 - - 7 12 2 3 - <_> - 9 - - 7 14 4 15 - <_> - 1 - - 4 26 6 3 - <_> - 9 - - 5 9 5 2 - <_> - 8 - - 6 5 4 2 - <_> - 3 - - 0 28 9 1 - <_> - 2 - - 5 17 4 14 - <_> - 0 - - 7 19 3 7 - <_> - 4 - - 4 20 7 1 - <_> - 0 - - 10 14 3 9 - <_> - 9 - - 7 1 1 2 - <_> - 0 - - 13 15 1 8 - <_> - 0 - - 5 2 3 6 - <_> - 9 - - 8 13 2 5 - <_> - 1 - - 1 7 8 1 - <_> - 4 - - 7 3 2 2 - <_> - 4 - - 10 3 3 15 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 8 4 5 - <_> - 8 - - 7 9 2 1 - <_> - 4 - - 3 8 9 13 - <_> - 2 - - 7 30 8 1 - <_> - 2 - - 10 9 4 3 - <_> - 2 - - 4 18 10 10 - <_> - 4 - - 0 29 15 1 - <_> - 5 - - 13 16 1 14 - <_> - 1 - - 6 27 5 2 - <_> - 5 - - 0 15 3 16 - <_> - 4 - - 9 28 5 2 - <_> - 2 - - 1 26 10 2 - <_> - 5 - - 2 13 1 9 - <_> - 3 - - 7 14 2 2 - <_> - 3 - - 1 10 14 4 - <_> - 0 - - 11 9 4 11 - <_> - 3 - - 0 21 15 1 - <_> - 8 - - 6 25 4 6 - <_> - 8 - - 7 7 3 1 - <_> - 3 - - 1 29 13 2 - <_> - 4 - - 9 9 6 3 - <_> - 1 - - 4 15 8 4 - <_> - 4 - - 7 18 2 2 - <_> - 5 - - 6 16 3 3 - <_> - 2 - - 1 11 6 15 - <_> - 1 - - 7 7 4 3 - <_> - 5 - - 8 4 4 20 - <_> - 1 - - 7 9 5 1 - <_> - 5 - - 13 8 1 22 - <_> - 1 - - 14 5 1 9 - <_> - 2 - - 9 21 4 10 - <_> - 8 - - 11 2 1 4 - <_> - 0 - - 7 20 1 4 - <_> - 5 - - 1 29 7 2 - <_> - 5 - - 7 16 1 3 - <_> - 1 - - 6 12 3 1 - <_> - 5 - - 7 10 7 1 - <_> - 9 - - 13 5 1 2 - <_> - 1 - - 6 26 5 4 - <_> - 2 - - 14 6 1 24 - <_> - 1 - - 13 29 2 2 - <_> - 9 - - 5 21 3 1 - <_> - 9 - - 5 4 6 4 - <_> - 2 - - 8 4 4 23 - <_> - 5 - - 5 28 8 2 - <_> - 5 - - 10 5 2 25 - <_> - 5 - - 14 24 1 6 - <_> - 4 - - 8 9 4 18 - <_> - 0 - - 8 9 1 1 - <_> - 2 - - 11 9 1 6 - <_> - 0 - - 3 15 9 15 - <_> - 0 - - 0 13 1 14 - <_> - 3 - - 5 30 2 1 - <_> - 9 - - 7 17 2 1 - <_> - 2 - - 5 4 6 6 - <_> - 5 - - 10 17 4 9 - <_> - 8 - - 7 5 2 3 - <_> - 2 - - 5 1 2 4 - <_> - 7 - - 4 30 2 1 - <_> - 1 - - 7 4 2 4 - <_> - 7 - - 10 10 1 4 - <_> - 2 - - 7 0 7 10 - <_> - 4 - - 3 6 10 17 - <_> - 3 - - 3 7 5 7 - <_> - 7 - - 11 27 3 2 - <_> - 0 - - 1 3 13 1 - <_> - 0 - - 7 0 3 8 - <_> - 1 - - 0 8 13 1 - <_> - 1 - - 9 23 1 1 - <_> - 3 - - 7 5 2 13 - <_> - 5 - - 2 10 2 6 - <_> - 5 - - 5 23 9 2 - <_> - 0 - - 7 9 1 19 - <_> - 8 - - 3 29 9 2 - <_> - 2 - - 8 30 5 1 - <_> - 7 - - 4 3 4 8 - <_> - 1 - - 3 27 8 3 - <_> - 2 - - 5 26 8 2 - <_> - 0 - - 0 15 1 13 - <_> - 4 - - 7 30 8 1 - <_> - 4 - - 5 4 7 3 - <_> - 7 - - 2 4 4 1 - <_> - 5 - - 8 4 5 9 - <_> - 8 - - 7 6 1 2 - <_> - 9 - - 3 28 3 2 - <_> - 5 - - 0 10 7 2 - <_> - 9 - - 10 9 1 2 - <_> - 9 - - 4 0 3 4 - <_> - 5 - - 13 21 2 5 - <_> - 0 - - 11 2 1 12 - <_> - 1 - - 11 21 3 10 - <_> - 4 - - 9 17 1 4 - <_> - 3 - - 7 14 1 2 - <_> - 3 - - 6 4 2 24 - <_> - 9 - - 12 28 1 1 - <_> - 3 - - 14 21 1 9 - <_> - 7 - - 13 0 1 26 - <_> - 0 - - 9 24 3 2 - <_> - 0 - - 7 19 4 9 - <_> - 2 - - 13 1 1 30 - <_> - 3 - - 9 16 2 15 - <_> - 5 - - 10 11 4 15 - <_> - 1 - - 9 15 6 13 - <_> - 3 - - 1 5 6 19 - <_> - 5 - - 4 19 1 10 - <_> - 5 - - 3 25 11 2 - <_> - 7 - - 5 29 6 1 - <_> - 3 - - 11 23 1 2 - <_> - 0 - - 0 3 8 10 - <_> - 2 - - 3 8 3 1 - <_> - 1 - - 8 11 2 1 - <_> - 1 - - 9 4 6 10 - <_> - 4 - - 1 2 14 10 - <_> - 4 - - 5 25 6 3 - <_> - 1 - - 5 18 4 2 - <_> - 4 - - 3 24 6 6 - <_> - 2 - - 3 1 7 27 - <_> - 1 - - 1 8 11 22 - <_> - 3 - - 9 0 4 2 - <_> - 2 - - 3 29 6 1 - <_> - 3 - - 2 24 12 4 - <_> - 4 - - 1 10 5 16 - <_> - 1 - - 5 27 6 4 - <_> - 9 - - 7 9 2 3 - <_> - 5 - - 3 7 7 13 - <_> - 8 - - 5 6 7 1 - <_> - 8 - - 7 6 2 5 - <_> - 9 - - 6 10 2 3 - <_> - 1 - - 8 4 2 5 - <_> - 7 - - 7 13 2 6 - <_> - 8 - - 10 26 3 2 - <_> - 4 - - 8 23 1 1 - <_> - 0 - - 3 29 5 2 - <_> - 4 - - 6 18 2 5 - <_> - 7 - - 3 19 1 12 - <_> - 4 - - 0 29 9 2 - <_> - 4 - - 2 15 6 13 - <_> - 2 - - 8 9 2 1 - <_> - 5 - - 8 0 6 7 - <_> - 8 - - 7 11 5 3 - <_> - 2 - - 7 8 4 2 - <_> - 1 - - 6 10 2 1 - <_> - 5 - - 10 4 4 4 - <_> - 4 - - 7 7 4 5 - <_> - 1 - - 2 24 3 1 - <_> - 4 - - 10 9 5 10 - <_> - 5 - - 2 21 1 10 - <_> - 3 - - 4 9 2 19 - <_> - 0 - - 0 2 1 28 - <_> - 2 - - 7 20 4 8 - <_> - 0 - - 7 10 3 1 - <_> - 5 - - 8 28 5 1 - <_> - 8 - - 8 6 1 2 - <_> - 5 - - 10 8 1 5 - <_> - 8 - - 8 3 1 1 - <_> - 7 - - 7 5 1 3 - <_> - 7 - - 0 27 15 1 - <_> - 3 - - 3 5 11 9 - <_> - 0 - - 13 15 2 1 - <_> - 0 - - 8 13 6 4 - <_> - 1 - - 9 28 1 1 - <_> - 9 - - 7 12 5 6 - <_> - 9 - - 6 2 1 5 - <_> - 7 - - 2 7 11 7 - <_> - 0 - - 1 17 1 14 - <_> - 0 - - 5 4 1 15 - <_> - 4 - - 1 29 12 1 - <_> - 2 - - 4 23 6 5 - <_> - 4 - - 3 8 1 17 - <_> - 2 - - 7 15 2 1 - <_> - 1 - - 3 28 7 1 - <_> - 8 - - 7 6 1 2 - <_> - 5 - - 9 1 1 12 - <_> - 1 - - 5 1 6 30 - <_> - 3 - - 5 1 1 30 - <_> - 3 - - 11 24 4 3 - <_> - 1 - - 4 10 7 4 - <_> - 4 - - 7 0 1 22 - <_> - 7 - - 4 27 11 2 - <_> - 2 - - 8 30 6 1 - <_> - 4 - - 3 20 10 5 - <_> - 0 - - 10 13 5 5 - <_> - 9 - - 7 7 1 8 - <_> - 7 - - 7 15 3 1 - <_> - 8 - - 1 10 14 3 - <_> - 1 - - 4 6 4 4 - <_> - 4 - - 1 6 6 3 - <_> - 0 - - 3 28 4 1 - <_> - 1 - - 5 27 4 2 - <_> - 5 - - 13 19 1 9 - <_> - 4 - - 1 9 14 2 - <_> - 2 - - 5 18 5 10 - <_> - 5 - - 14 0 1 7 - <_> - 4 - - 3 3 4 14 - <_> - 3 - - 4 29 5 2 - <_> - 2 - - 6 5 5 3 - <_> - 1 - - 3 8 9 1 - <_> - 4 - - 7 18 2 2 - <_> - 1 - - 4 13 9 6 - <_> - 1 - - 7 16 5 1 - <_> - 4 - - 12 27 2 4 - <_> - 2 - - 1 26 10 2 - <_> - 4 - - 7 12 2 11 - <_> - 0 - - 7 10 1 1 - <_> - 5 - - 9 9 5 4 - <_> - 8 - - 14 20 1 1 - <_> - 3 - - 1 22 2 7 - <_> - 3 - - 3 9 4 6 - <_> - 4 - - 6 22 4 4 - <_> - 5 - - 11 30 3 1 - <_> - 3 - - 4 22 3 4 - <_> - 5 - - 2 26 11 1 - <_> - 3 - - 6 15 3 1 - <_> - 0 - - 5 5 5 1 - <_> - 0 - - 6 12 4 15 - <_> - 2 - - 3 3 3 1 - <_> - 4 - - 2 9 10 20 - <_> - 4 - - 2 4 9 3 - <_> - 7 - - 8 20 1 4 - <_> - 7 - - 13 22 2 6 - <_> - 2 - - 6 1 4 27 - <_> - 3 - - 1 28 9 1 - <_> - 1 - - 3 11 9 7 - <_> - 8 - - 0 18 4 3 - <_> - 8 - - 6 6 2 2 - <_> - 9 - - 13 7 1 1 - <_> - 4 - - 6 2 3 17 - <_> - 9 - - 7 7 1 15 - <_> - 0 - - 6 22 6 6 - <_> - 9 - - 12 17 1 2 - <_> - 5 - - 14 24 1 2 - <_> - 7 - - 1 30 3 1 - <_> - 5 - - 8 10 2 5 - <_> - 8 - - 7 5 2 3 - <_> - 4 - - 9 14 2 5 - <_> - 8 - - 7 0 1 3 - <_> - 2 - - 10 5 2 10 - <_> - 5 - - 10 10 4 5 - <_> - 0 - - 6 0 7 8 - <_> - 1 - - 6 12 3 1 - <_> - 7 - - 2 11 6 10 - <_> - 4 - - 9 10 6 2 - <_> - 7 - - 1 30 3 1 - <_> - 3 - - 14 22 1 8 - <_> - 2 - - 6 2 3 7 - <_> - 2 - - 0 28 15 2 - <_> - 0 - - 6 16 7 11 - <_> - 1 - - 8 20 7 5 - <_> - 3 - - 10 18 1 8 - <_> - 4 - - 0 12 3 3 - <_> - 1 - - 7 4 2 4 - <_> - 8 - - 8 5 4 2 - <_> - 2 - - 5 1 2 4 - <_> - 8 - - 10 7 4 1 - <_> - 1 - - 3 26 8 5 - <_> - 7 - - 8 20 1 2 - <_> - 4 - - 1 0 10 23 - <_> - 4 - - 7 3 2 2 - <_> - 0 - - 0 23 4 6 - <_> - 5 - - 7 21 6 7 - <_> - 4 - - 0 30 13 1 - <_> - 1 - - 4 27 10 1 - <_> - 9 - - 6 9 4 4 - <_> - 8 - - 6 1 4 10 - <_> - 9 - - 14 19 1 1 - <_> - 9 - - 6 3 4 19 - <_> - 0 - - 8 9 1 1 - <_> - 3 - - 5 6 4 4 - <_> - 9 - - 8 15 1 3 - <_> - 0 - - 4 27 1 1 - <_> - 2 - - 5 25 4 3 - <_> - 1 - - 8 10 2 4 - <_> - 0 - - 3 9 3 1 - <_> - 7 - - 6 12 3 2 - <_> - 0 - - 0 15 4 13 - <_> - 2 - - 8 30 6 1 - <_> - 2 - - 8 20 3 11 - <_> - 0 - - 7 20 4 1 - <_> - 3 - - 2 0 9 2 - <_> - 0 - - 5 5 5 3 - <_> - 2 - - 6 10 4 4 - <_> - 4 - - 6 17 4 7 - <_> - 4 - - 8 6 3 17 - <_> - 1 - - 6 18 5 7 - <_> - 1 - - 5 28 6 1 - <_> - 7 - - 10 0 5 1 - <_> - 1 - - 13 6 2 8 - <_> - 4 - - 11 23 4 6 - <_> - 3 - - 5 12 2 15 - <_> - 3 - - 12 23 3 7 - <_> - 0 - - 7 10 3 1 - <_> - 0 - - 2 13 5 5 - <_> - 9 - - 0 0 4 1 - <_> - 2 - - 5 1 2 4 - <_> - 3 - - 9 20 3 2 - <_> - 4 - - 1 29 7 2 - <_> - 5 - - 2 3 9 11 - <_> - 3 - - 0 26 4 5 - <_> - 2 - - 0 11 1 5 - <_> - 0 - - 5 26 5 2 - <_> - 1 - - 8 12 1 3 - <_> - 0 - - 1 28 8 3 - <_> - 8 - - 7 6 1 2 - <_> - 9 - - 6 14 3 5 - <_> - 8 - - 13 7 2 21 - <_> - 2 - - 5 15 4 11 - <_> - 0 - - 9 26 6 2 - <_> - 5 - - 5 17 4 5 - <_> - 2 - - 10 0 3 22 - <_> - 7 - - 3 22 7 1 - <_> - 2 - - 8 2 7 7 - <_> - 3 - - 3 7 3 12 - <_> - 7 - - 8 5 1 1 - <_> - 3 - - 3 2 2 6 - <_> - 8 - - 5 6 3 1 - <_> - 0 - - 6 18 5 4 - <_> - 5 - - 9 29 6 2 - <_> - 4 - - 11 15 2 5 - <_> - 1 - - 8 27 2 1 - <_> - 4 - - 5 19 1 1 - <_> - 1 - - 7 9 5 1 - <_> - 4 - - 7 8 4 1 - <_> - 7 - - 4 28 5 1 - <_> - 4 - - 6 22 4 3 - <_> - 1 - - 7 15 2 14 - <_> - 5 - - 2 27 1 3 - <_> - 9 - - 7 15 1 2 - <_> - 9 - - 1 1 14 7 - <_> - 3 - - 12 19 3 9 - <_> - 5 - - 3 26 7 2 - <_> - 2 - - 1 0 4 11 - <_> - 1 - - 5 12 7 10 - <_> - 3 - - 1 6 8 4 - <_> - 2 - - 11 9 1 6 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 2 9 2 1 - <_> - 8 - - 5 10 5 6 - <_> - 8 - - 5 9 3 3 - <_> - 3 - - 2 28 8 3 - <_> - 7 - - 3 27 10 1 - <_> - 2 - - 4 29 6 1 - <_> - 5 - - 0 19 2 7 - <_> - 5 - - 10 8 2 17 - <_> - 2 - - 13 25 1 1 - <_> - 1 - - 9 10 1 3 - <_> - 4 - - 8 5 3 8 - <_> - 3 - - 5 21 4 7 - <_> - 4 - - 7 17 4 2 - <_> - 5 - - 7 30 4 1 - <_> - 8 - - 3 24 8 3 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 7 1 - <_> - 1 - - 0 13 8 18 - <_> - 5 - - 8 5 5 10 - <_> - 1 - - 6 9 7 6 - <_> - 4 - - 7 0 2 20 - <_> - 2 - - 8 16 1 1 - <_> - 2 - - 5 16 4 11 - <_> - 2 - - 8 10 1 5 - <_> - 5 - - 8 28 4 1 - <_> - 3 - - 7 26 7 1 - <_> - 2 - - 6 9 4 2 - <_> - 7 - - 8 5 4 3 - <_> - 7 - - 13 19 2 9 - <_> - 0 - - 1 9 3 5 - <_> - 3 - - 3 11 5 14 - <_> - 1 - - 3 17 7 9 - <_> - 3 - - 0 21 2 8 - <_> - 2 - - 8 26 4 1 - <_> - 0 - - 13 15 1 14 - <_> - 7 - - 7 27 7 1 - <_> - 4 - - 3 26 6 2 - <_> - 2 - - 3 29 6 1 - <_> - 4 - - 8 18 1 2 - <_> - 1 - - 7 3 5 5 - <_> - 4 - - 6 3 3 2 - <_> - 4 - - 0 27 5 4 - <_> - 5 - - 6 28 4 1 - <_> - 7 - - 5 7 10 2 - <_> - 1 - - 9 27 1 2 - <_> - 0 - - 7 19 3 7 - <_> - 7 - - 11 11 1 1 - <_> - 4 - - 6 7 1 16 - <_> - 7 - - 6 9 3 1 - <_> - 5 - - 4 28 11 3 - <_> - 7 - - 7 5 6 3 - <_> - 2 - - 0 25 10 2 - <_> - 4 - - 12 4 2 17 - <_> - 9 - - 6 19 5 2 - <_> - 8 - - 6 6 2 2 - <_> - 4 - - 6 21 3 2 - <_> - 2 - - 5 5 10 2 - <_> - 5 - - 2 0 7 2 - <_> - 5 - - 9 4 4 9 - <_> - 2 - - 6 10 4 4 - <_> - 0 - - 10 8 2 2 - <_> - 0 - - 9 6 4 3 - <_> - 2 - - 2 18 9 11 - <_> - 4 - - 3 9 12 2 - <_> - 4 - - 3 11 4 9 - <_> - 0 - - 6 13 3 4 - <_> - 1 - - 5 27 10 1 - <_> - 2 - - 8 28 5 1 - <_> - 8 - - 1 11 6 1 - <_> - 9 - - 7 9 2 7 - <_> - 8 - - 0 17 14 7 - <_> - 0 - - 7 10 1 1 - <_> - 0 - - 5 3 1 20 - <_> - 0 - - 4 6 1 19 - <_> - 4 - - 6 23 4 6 - <_> - 2 - - 6 5 1 3 - <_> - 5 - - 3 29 3 2 - <_> - 1 - - 8 4 5 20 - <_> - 1 - - 5 28 7 1 - <_> - 8 - - 0 3 4 23 - <_> - 4 - - 5 28 7 3 - <_> - 2 - - 5 25 5 2 - <_> - 5 - - 2 3 1 6 - <_> - 3 - - 9 8 2 1 - <_> - 3 - - 4 12 2 8 - <_> - 2 - - 14 12 1 15 - <_> - 5 - - 10 10 5 9 - <_> - 5 - - 10 3 4 6 - <_> - 4 - - 3 9 3 9 - <_> - 1 - - 7 6 2 10 - <_> - 4 - - 4 6 9 6 - <_> - 3 - - 4 18 11 11 - <_> - 1 - - 8 10 2 4 - <_> - 2 - - 10 8 3 4 - <_> - 7 - - 1 30 3 1 - <_> - 2 - - 12 12 2 19 - <_> - 5 - - 3 19 9 3 - <_> - 0 - - 4 9 1 6 - <_> - 5 - - 5 21 1 4 - <_> - 3 - - 2 12 9 9 - <_> - 0 - - 6 19 4 10 - <_> - 5 - - 10 26 1 3 - <_> - 0 - - 6 15 2 3 - <_> - 1 - - 11 22 2 8 - <_> - 9 - - 2 22 1 2 - <_> - 5 - - 12 30 3 1 - <_> - 2 - - 6 0 7 16 - <_> - 3 - - 8 21 2 1 - <_> - 7 - - 5 10 1 4 - <_> - 7 - - 3 5 1 1 - <_> - 1 - - 4 6 7 3 - <_> - 5 - - 5 1 1 2 - <_> - 4 - - 7 3 2 2 - <_> - 0 - - 7 18 4 2 - <_> - 9 - - 8 15 1 2 - <_> - 2 - - 4 20 9 4 - <_> - 8 - - 5 5 6 6 - <_> - 3 - - 4 28 7 2 - <_> - 5 - - 1 20 1 6 - <_> - 2 - - 2 26 7 1 - <_> - 0 - - 5 15 7 13 - <_> - 2 - - 9 3 4 1 - <_> - 9 - - 5 3 7 4 - <_> - 2 - - 1 23 7 6 - <_> - 4 - - 5 2 7 8 - <_> - 4 - - 10 14 4 2 - <_> - 3 - - 6 3 5 4 - <_> - 9 - - 13 30 2 1 - <_> - 3 - - 7 12 2 5 - <_> - 1 - - 6 26 5 4 - <_> - 7 - - 7 19 2 4 - <_> - 1 - - 6 29 5 2 - <_> - 5 - - 3 10 11 5 - <_> - 9 - - 9 21 3 10 - <_> - 2 - - 12 28 3 2 - <_> - 4 - - 3 0 5 18 - <_> - 5 - - 6 0 7 4 - <_> - 5 - - 0 29 14 2 - <_> - 5 - - 1 4 6 10 - <_> - 4 - - 8 22 1 4 - <_> - 3 - - 8 9 7 12 - <_> - 9 - - 6 16 4 2 - <_> - 8 - - 8 6 1 2 - <_> - 3 - - 0 14 3 15 - <_> - 2 - - 7 20 3 1 - <_> - 8 - - 1 29 13 2 - <_> - 3 - - 0 3 4 23 - <_> - 7 - - 2 5 8 4 - <_> - 2 - - 8 16 1 2 - <_> - 0 - - 6 22 2 5 - <_> - 3 - - 1 3 11 12 - <_> - 5 - - 0 15 15 9 - <_> - 9 - - 14 1 1 4 - <_> - 0 - - 7 10 3 1 - <_> - 1 - - 3 28 10 1 - <_> - 4 - - 0 29 10 1 - <_> - 0 - - 8 26 7 3 - <_> - 0 - - 6 24 4 4 - <_> - 1 - - 0 23 15 2 - <_> - 3 - - 2 0 9 2 - <_> - 8 - - 7 5 2 3 - <_> - 9 - - 6 20 9 2 - <_> - 5 - - 7 23 7 5 - <_> - 7 - - 6 0 5 1 - <_> - 5 - - 2 30 6 1 - <_> - 3 - - 5 5 1 14 - <_> - 4 - - 2 8 1 11 - <_> - 0 - - 1 2 7 20 - <_> - 4 - - 3 6 2 8 - <_> - 5 - - 4 16 5 7 - <_> - 0 - - 6 18 6 10 - <_> - 3 - - 9 20 2 9 - <_> - 0 - - 8 27 7 2 - <_> - 4 - - 9 20 4 1 - <_> - 2 - - 5 14 6 15 - <_> - 7 - - 3 4 10 10 - <_> - 5 - - 1 18 14 13 - <_> - 1 - - 6 11 6 1 - <_> - 1 - - 7 14 6 3 - <_> - 9 - - 6 11 3 4 - <_> - 0 - - 2 27 1 3 - <_> - 5 - - 9 4 1 11 - <_> - 2 - - 3 25 8 2 - <_> - 4 - - 4 12 6 13 - <_> - 1 - - 7 23 2 6 - <_> - 1 - - 5 15 6 2 - <_> - 2 - - 10 19 1 10 - <_> - 2 - - 5 25 4 3 - <_> - 5 - - 9 5 4 13 - <_> - 1 - - 7 3 2 6 - <_> - 4 - - 4 28 8 2 - <_> - 0 - - 7 11 1 5 - <_> - 8 - - 8 6 1 2 - <_> - 1 - - 7 1 3 2 - <_> - 8 - - 10 4 1 4 - <_> - 3 - - 5 27 10 3 - <_> - 7 - - 2 28 9 1 - <_> - 2 - - 7 17 3 5 - <_> - 4 - - 0 30 5 1 - <_> - 2 - - 8 11 1 7 - <_> - 9 - - 6 16 1 3 - <_> - 9 - - 2 0 11 1 - <_> - 0 - - 6 3 5 1 - <_> - 0 - - 5 5 6 3 - <_> - 0 - - 7 29 1 2 - <_> - 5 - - 2 18 11 3 - <_> - 2 - - 3 8 3 1 - <_> - 3 - - 5 0 1 27 - <_> - 7 - - 12 11 2 1 - <_> - 5 - - 1 28 9 3 - <_> - 0 - - 6 19 2 12 - <_> - 2 - - 8 28 5 1 - <_> - 3 - - 0 5 3 23 - <_> - 4 - - 7 18 2 2 - <_> - 1 - - 4 17 8 2 - <_> - 4 - - 6 29 5 2 - <_> - 0 - - 4 7 2 4 - <_> - 9 - - 7 1 1 2 - <_> - 2 - - 10 0 1 19 - <_> - 9 - - 8 15 1 7 - <_> - 4 - - 6 22 4 3 - <_> - 1 - - 7 3 2 6 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 6 1 4 - <_> - 8 - - 1 10 1 6 - <_> - 1 - - 6 12 3 1 - <_> - 1 - - 3 3 7 3 - <_> - 8 - - 7 28 3 3 - <_> - 4 - - 9 18 2 4 - <_> - 1 - - 9 18 4 11 - <_> - 4 - - 6 21 4 1 - <_> - 5 - - 9 9 4 20 - <_> - 2 - - 13 21 2 5 - <_> - 0 - - 13 21 2 1 - <_> - 5 - - 6 28 5 2 - <_> - 2 - - 1 26 10 2 - <_> - 1 - - 4 3 2 19 - <_> - 9 - - 9 12 1 2 - <_> - 8 - - 6 6 2 2 - <_> - 3 - - 11 20 1 10 - <_> - 4 - - 6 4 5 3 - <_> - 7 - - 6 3 9 2 - <_> - 3 - - 3 1 6 14 - <_> - 4 - - 2 9 12 12 - <_> - 4 - - 7 10 2 10 - <_> - 7 - - 6 27 8 2 - <_> - 2 - - 6 10 3 1 - <_> - 2 - - 7 10 7 7 - <_> - 2 - - 5 30 10 1 - <_> - 5 - - 9 25 2 3 - <_> - 9 - - 3 28 12 1 - <_> - 2 - - 10 25 1 4 - <_> - 1 - - 5 20 2 1 - <_> - 5 - - 9 6 6 7 - <_> - 0 - - 11 10 1 12 - <_> - 3 - - 7 14 1 2 - <_> - 3 - - 3 10 5 4 - <_> - 3 - - 0 0 9 4 - <_> - 8 - - 2 21 5 1 - <_> - 8 - - 6 5 4 2 - <_> - 1 - - 7 28 4 1 - <_> - 4 - - 7 23 1 2 - <_> - 1 - - 7 24 2 4 - <_> - 2 - - 6 13 6 18 - <_> - 0 - - 5 28 8 1 - <_> - 0 - - 11 20 1 2 - <_> - 0 - - 7 8 2 3 - <_> - 2 - - 6 6 4 3 - <_> - 1 - - 9 10 1 3 - <_> - 1 - - 8 4 2 5 - <_> - 3 - - 2 21 7 6 - <_> - 3 - - 0 24 11 3 - <_> - 4 - - 3 28 7 2 - <_> - 2 - - 11 11 2 3 - <_> - 0 - - 9 3 3 2 - <_> - 5 - - 6 10 4 10 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 4 5 20 - <_> - 0 - - 6 24 7 3 - <_> - 8 - - 8 18 1 1 - <_> - 1 - - 2 2 5 14 - <_> - 0 - - 4 25 1 3 - <_> - 5 - - 8 3 4 11 - <_> - 7 - - 11 13 1 3 - <_> - 5 - - 3 0 12 1 - <_> - 4 - - 11 13 3 7 - <_> - 5 - - 4 28 10 2 - <_> - 2 - - 11 19 1 12 - <_> - 0 - - 5 20 1 3 - <_> - 5 - - 10 8 3 19 - <_> - 3 - - 0 26 6 1 - <_> - 2 - - 0 12 2 4 - <_> - 4 - - 7 8 5 6 - <_> - 5 - - 6 8 4 6 - <_> - 1 - - 4 7 6 1 - <_> - 9 - - 8 9 1 2 - <_> - 3 - - 4 11 11 5 - <_> - 8 - - 8 6 1 2 - <_> - 5 - - 0 14 2 15 - <_> - 0 - - 4 5 10 2 - <_> - 5 - - 7 12 1 3 - <_> - 3 - - 4 1 2 25 - <_> - 8 - - 12 18 2 2 - <_> - 3 - - 0 27 3 3 - <_> - 2 - - 6 17 3 11 - <_> - 1 - - 7 28 3 1 - <_> - 4 - - 5 18 5 2 - <_> - 0 - - 8 16 3 6 - <_> - 2 - - 7 23 2 2 - <_> - 0 - - 9 8 3 5 - <_> - 0 - - 7 19 6 4 - <_> - 0 - - 3 12 12 3 - <_> - 3 - - 8 18 1 1 - <_> - 1 - - 2 6 9 3 - <_> - 2 - - 7 2 5 2 - <_> - 1 - - 5 9 1 2 - <_> - 4 - - 0 0 11 14 - <_> - 2 - - 7 8 4 2 - <_> - 2 - - 8 9 2 1 - <_> - 2 - - 3 25 7 3 - <_> - 1 - - 5 27 5 1 - <_> - 0 - - 5 2 3 6 - <_> - 7 - - 0 19 7 2 - <_> - 2 - - 5 1 1 4 - <_> - 2 - - 3 22 1 2 - <_> - 5 - - 8 9 4 4 - <_> - 7 - - 4 30 3 1 - <_> - 4 - - 4 9 9 3 - <_> - 2 - - 7 11 2 3 - <_> - 0 - - 10 24 1 1 - <_> - 7 - - 1 27 4 2 - <_> - 1 - - 14 8 1 5 - <_> - 0 - - 12 22 3 7 - <_> - 4 - - 7 0 2 18 - <_> - 7 - - 8 20 1 2 - <_> - 8 - - 8 4 2 26 - <_> - 9 - - 8 15 1 3 - <_> - 1 - - 0 5 15 19 - <_> - 2 - - 4 9 4 1 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 3 1 - <_> - 8 - - 14 12 1 4 - <_> - 2 - - 1 6 10 1 - <_> - 0 - - 11 25 1 3 - <_> - 1 - - 6 19 4 8 - <_> - 7 - - 1 14 8 4 - <_> - 3 - - 0 25 11 2 - <_> - 9 - - 2 29 13 1 - <_> - 0 - - 3 27 1 4 - <_> - 1 - - 7 27 4 4 - <_> - 4 - - 5 4 7 3 - <_> - 0 - - 7 11 2 3 - <_> - 0 - - 8 17 4 4 - <_> - 2 - - 13 8 1 14 - <_> - 3 - - 13 26 2 4 - <_> - 0 - - 3 2 6 6 - <_> - 2 - - 5 5 7 16 - <_> - 2 - - 2 8 4 1 - <_> - 3 - - 4 0 1 14 - <_> - 9 - - 6 0 6 2 - <_> - 9 - - 5 14 2 4 - <_> - 1 - - 1 3 13 1 - <_> - 8 - - 6 6 2 2 - <_> - 8 - - 4 26 8 2 - <_> - 3 - - 8 17 4 1 - <_> - 4 - - 2 2 11 2 - <_> - 0 - - 6 16 6 10 - <_> - 9 - - 0 22 1 1 - <_> - 0 - - 4 29 3 2 - <_> - 4 - - 9 22 6 8 - <_> - 1 - - 8 26 4 3 - <_> - 3 - - 5 1 7 11 - <_> - 4 - - 7 29 3 1 - <_> - 4 - - 3 12 9 15 - <_> - 7 - - 0 28 14 3 - <_> - 2 - - 8 8 4 1 - <_> - 7 - - 6 9 3 1 - <_> - 7 - - 8 30 1 1 - <_> - 5 - - 4 30 11 1 - <_> - 5 - - 3 5 12 16 - <_> - 5 - - 12 13 1 6 - <_> - 0 - - 7 10 3 2 - <_> - 0 - - 3 0 4 14 - <_> - 2 - - 4 5 3 4 - <_> - 2 - - 5 19 4 1 - <_> - 1 - - 6 10 3 2 - <_> - 5 - - 1 1 12 1 - <_> - 9 - - 10 19 2 4 - <_> - 9 - - 1 0 13 27 - <_> - 8 - - 8 3 1 5 - <_> - 1 - - 7 28 3 1 - <_> - 9 - - 8 9 2 5 - <_> - 1 - - 5 4 6 9 - <_> - 7 - - 6 3 4 1 - <_> - 7 - - 14 24 1 5 - <_> - 3 - - 2 17 1 12 - <_> - 0 - - 4 14 7 16 - <_> - 1 - - 6 2 1 25 - <_> - 0 - - 0 13 4 16 - <_> - 4 - - 12 8 3 4 - <_> - 0 - - 0 18 13 4 - <_> - 8 - - 2 30 1 1 - <_> - 8 - - 7 7 3 1 - <_> - 9 - - 10 28 1 2 - <_> - 8 - - 11 1 3 10 - <_> - 4 - - 1 30 4 1 - <_> - 1 - - 2 22 5 8 - <_> - 9 - - 4 25 6 6 - <_> - 0 - - 4 6 1 6 - <_> - 5 - - 12 30 3 1 - <_> - 3 - - 7 10 1 1 - <_> - 2 - - 4 26 7 2 - <_> - 1 - - 5 1 4 3 - <_> - 4 - - 9 20 1 4 - <_> - 3 - - 2 2 7 9 - <_> - 7 - - 13 0 2 3 - <_> - 8 - - 6 6 1 2 - <_> - 3 - - 3 28 8 2 - <_> - 7 - - 13 24 1 3 - <_> - 2 - - 3 29 9 1 - <_> - 7 - - 7 13 3 1 - <_> - 7 - - 1 0 4 5 - <_> - 0 - - 5 5 6 3 - <_> - 0 - - 4 3 9 2 - <_> - 3 - - 2 17 2 2 - <_> - 0 - - 12 5 1 18 - <_> - 9 - - 7 10 1 1 - <_> - 9 - - 3 5 9 1 - <_> - 8 - - 8 12 4 1 - <_> - 3 - - 3 9 3 18 - <_> - 7 - - 8 26 1 1 - <_> - 1 - - 9 10 1 3 - <_> - 4 - - 5 10 5 21 - <_> - 1 - - 9 27 2 2 - <_> - 7 - - 6 9 3 1 - <_> - 2 - - 4 21 6 7 - <_> - 4 - - 2 18 9 8 - <_> - 5 - - 4 24 10 7 - <_> - 4 - - 6 4 5 3 - <_> - 2 - - 11 23 4 1 - <_> - 3 - - 5 3 1 28 - <_> - 9 - - 6 20 1 3 - <_> - 9 - - 4 25 5 2 - <_> - 4 - - 3 0 10 21 - <_> - 5 - - 9 11 6 17 - <_> - 0 - - 1 28 14 2 - <_> - 2 - - 6 10 3 1 - <_> - 0 - - 6 25 5 2 - <_> - 0 - - 6 27 7 1 - <_> - 8 - - 4 6 7 2 - <_> - 4 - - 12 15 3 5 - <_> - 3 - - 8 13 1 5 - <_> - 0 - - 6 22 2 5 - <_> - 4 - - 2 3 6 11 - <_> - 8 - - 1 17 6 10 - <_> - 9 - - 3 28 5 1 - <_> - 4 - - 0 30 10 1 - <_> - 1 - - 6 25 3 4 - <_> - 5 - - 10 8 3 8 - <_> - 7 - - 13 0 2 25 - <_> - 7 - - 5 30 8 1 - <_> - 3 - - 6 21 1 3 - <_> - 9 - - 6 8 3 4 - <_> - 9 - - 6 5 3 3 - <_> - 5 - - 4 29 10 1 - <_> - 1 - - 9 23 1 3 - <_> - 5 - - 9 11 4 20 - <_> - 9 - - 0 22 11 1 - <_> - 1 - - 5 9 1 2 - <_> - 5 - - 7 26 4 1 - <_> - 0 - - 6 23 1 7 - <_> - 3 - - 10 25 2 1 - <_> - 2 - - 3 29 6 2 - <_> - 1 - - 13 2 1 14 - <_> - 3 - - 6 26 8 2 - <_> - 1 - - 11 3 1 5 - <_> - 4 - - 3 12 12 19 - <_> - 1 - - 5 28 6 1 - <_> - 3 - - 10 30 5 1 - <_> - 7 - - 0 26 5 4 - <_> - 1 - - 5 11 3 2 - <_> - 0 - - 3 1 4 14 - <_> - 1 - - 7 4 2 4 - <_> - 3 - - 3 28 8 2 - <_> - 0 - - 7 19 3 7 - <_> - 4 - - 1 29 9 2 - <_> - 0 - - 6 10 3 2 - <_> - 5 - - 8 3 5 8 - <_> - 8 - - 7 4 1 10 - <_> - 1 - 1024 - - <_> - -9.1824179887771606e-01 - - 1 2 0 2.3365000000000000e+03 0 -1 1 8.3500000000000000e+01 - -2 -3 2 2.9050000000000000e+02 - - -1.9275911152362823e-01 -9.1824179887771606e-01 - 7.1353024244308472e-01 -4.2490604519844055e-01 - <_> - -1.3566842079162598e+00 - - 1 2 3 4.5500000000000000e+01 0 -1 4 5.6350000000000000e+02 - -2 -3 5 1.5150000000000000e+02 - - -5.7629632949829102e-01 -9.8518949747085571e-01 - 5.2551275491714478e-01 -4.3844240903854370e-01 - <_> - -1.6601251363754272e+00 - - 1 2 6 1.6500000000000000e+01 0 -1 7 1.3417500000000000e+04 - -2 -3 8 3.2850000000000000e+02 - - -1.4283974468708038e-01 -7.6407837867736816e-01 - 6.7369973659515381e-01 -3.0344095826148987e-01 - <_> - -1.7210527658462524e+00 - - 1 2 9 8.3500000000000000e+01 0 -1 10 5.7950000000000000e+02 - -2 -3 11 5.2165000000000000e+03 - - 2.7889367938041687e-01 -7.9177212715148926e-01 - -5.5426341295242310e-01 4.3222227692604065e-01 - <_> - -1.8265457153320312e+00 - - 1 2 12 1.0500000000000000e+01 0 -1 13 2.2500000000000000e+01 - -2 -3 14 2.4415000000000000e+03 - - -4.9315950274467468e-01 5.7787740230560303e-01 - -5.9864276647567749e-01 1.2489826977252960e-01 - <_> - -1.6793980598449707e+00 - - 1 2 15 1.8205000000000000e+03 0 -1 16 2.2445000000000000e+03 - -2 -3 17 2.5000000000000000e+00 - - 3.1089431140571833e-03 8.0035644769668579e-01 - 9.4315350055694580e-02 -5.7833504676818848e-01 - <_> - -1.5442515611648560e+00 - - 1 2 18 3.4500000000000000e+01 0 -1 19 4293. -2 -3 20 - 1.5545000000000000e+03 - - -6.1589881777763367e-02 -9.2765086889266968e-01 - 2.9719692468643188e-01 -6.1971640586853027e-01 - <_> - -1.8196758031845093e+00 - - 1 2 21 1.1500000000000000e+01 0 -1 22 2.1500000000000000e+01 - -2 -3 23 6.5500000000000000e+01 - - -4.4309207797050476e-01 4.5466747879981995e-01 - -6.7477458715438843e-01 -2.8885286301374435e-02 - <_> - -1.6610682010650635e+00 - - 1 2 24 5.0950000000000000e+02 0 -1 25 27777. -2 -3 26 - 2.4715000000000000e+03 - - 5.2616196870803833e-01 -4.0959128737449646e-01 - 5.7547372579574585e-01 -3.0137240886688232e-01 - <_> - -1.5959914922714233e+00 - - 1 2 27 5.0000000000000000e-01 0 -1 28 2.5000000000000000e+00 - -2 -3 29 1.7450000000000000e+02 - - -7.2784364223480225e-01 4.9311363697052002e-01 - -6.9787085056304932e-01 -1.9121825695037842e-02 - <_> - -1.1109679937362671e+00 - - 1 2 30 1.7500000000000000e+01 0 -1 31 1.0500000000000000e+01 - -2 -3 32 1.6835000000000000e+03 - - -6.9948041439056396e-01 4.8122453689575195e-01 - -3.8041490316390991e-01 7.8814607858657837e-01 - <_> - -1.3001022338867188e+00 - - 1 2 33 5.5000000000000000e+00 0 -1 34 1.4500000000000000e+01 - -2 -3 35 4.3500000000000000e+01 - - -6.2981390953063965e-01 4.1833153367042542e-01 - -5.5634695291519165e-01 2.0092706382274628e-01 - <_> - -1.2552416324615479e+00 - - 1 2 36 1.5000000000000000e+00 0 -1 37 6.0500000000000000e+01 - -2 -3 38 3.5000000000000000e+00 - - -2.3229536414146423e-01 4.8632022738456726e-01 - 1.0821102559566498e-01 -5.4847836494445801e-01 - <_> - -9.5746147632598877e-01 - - 1 2 39 5.0000000000000000e-01 0 -1 40 5.5000000000000000e+00 - -2 -3 41 1.5500000000000000e+01 - - -9.0162736177444458e-01 3.7442612648010254e-01 - -1.9469287246465683e-02 -6.7447566986083984e-01 - <_> - -8.0001801252365112e-01 - - 1 2 42 3.7500000000000000e+01 0 -1 43 3.1595000000000000e+03 - -2 -3 44 1.2465000000000000e+03 - - 1.6209787130355835e-01 -9.0783798694610596e-01 - 2.1256938576698303e-01 -7.1468418836593628e-01 - <_> - -1.2121976613998413e+00 - - 1 2 45 5.2500000000000000e+01 0 -1 46 5.0000000000000000e-01 - -2 -3 47 7606. - - 3.2595899701118469e-01 -4.1217961907386780e-01 - -1.9886784255504608e-01 7.2802597284317017e-01 - <_> - -1.0095448493957520e+00 - - 1 2 48 1.2645000000000000e+03 0 -1 49 1.3995000000000000e+03 - -2 -3 50 17217. - - 1.4752689003944397e-01 -4.5374435186386108e-01 - 7.4328523874282837e-01 -3.0514815449714661e-01 - <_> - -8.2125085592269897e-01 - - 1 2 51 1.2450000000000000e+02 0 -1 52 4.5000000000000000e+00 - -2 -3 53 6.5500000000000000e+01 - - -9.2579865455627441e-01 1.8829397857189178e-01 - 6.2581911683082581e-02 -9.3276327848434448e-01 - <_> - -8.5726839303970337e-01 - - 1 2 54 1.2500000000000000e+01 0 -1 55 3.5000000000000000e+00 - -2 -3 56 2.4500000000000000e+01 - - -9.3079727888107300e-01 5.4834127426147461e-01 - -7.4245822429656982e-01 -3.6017529666423798e-02 - <_> - -3.7141740322113037e-01 - - 1 2 57 2.5000000000000000e+00 0 -1 58 9.0500000000000000e+01 - -2 -3 59 1.1450000000000000e+02 - - -2.6328250765800476e-01 4.8585096001625061e-01 - -4.2119786143302917e-01 3.4775453805923462e-01 - <_> - -2.9893672466278076e-01 - - 1 2 60 1.8150000000000000e+02 0 -1 61 1.6500000000000000e+01 - -2 -3 62 4.3500000000000000e+01 - - 3.9467984437942505e-01 -2.8166392445564270e-01 - -6.6281062364578247e-01 1.6430251300334930e-02 - <_> - -5.2570968866348267e-01 - - 1 2 63 2.8935000000000000e+03 0 -1 64 7.5000000000000000e+00 - -2 -3 65 10970. - - 2.7466580271720886e-01 -8.6028146743774414e-01 - 3.1712412834167480e-01 -2.8514662384986877e-01 - <_> - -3.3981230854988098e-01 - - 1 2 66 4.3500000000000000e+01 0 -1 67 5.0500000000000000e+01 - -2 -3 68 1.2950000000000000e+02 - - 1.5071904659271240e-01 -6.7942529916763306e-01 - 3.4536096453666687e-01 -5.4448747634887695e-01 - <_> - -3.2909783720970154e-01 - - 1 2 69 4.0500000000000000e+01 0 -1 70 9.8750000000000000e+02 - -2 -3 71 4.5000000000000000e+00 - - -2.0841991528868675e-02 -6.2886476516723633e-01 - 7.4424326419830322e-01 9.9408831447362900e-03 - <_> - -6.2298193573951721e-02 - - 1 2 72 4.6085000000000000e+03 0 -1 73 3.8500000000000000e+01 - -2 -3 74 5.7850000000000000e+02 - - -7.5020188093185425e-01 5.4516482353210449e-01 - 5.7250261306762695e-01 -9.2801190912723541e-02 - <_> - -1.5894679725170135e-01 - - 1 2 75 5.0000000000000000e-01 0 -1 76 1.5000000000000000e+00 - -2 -3 77 2.5750000000000000e+02 - - -7.4547845125198364e-01 4.9561309814453125e-01 - 5.8993577957153320e-01 -3.1674036383628845e-01 - <_> - 4.0653568506240845e-01 - - 1 2 78 2.5335000000000000e+03 0 -1 79 2.4500000000000000e+01 - -2 -3 80 8.9905000000000000e+03 - - 2.6614660024642944e-01 -3.2352310419082642e-01 - 6.4184278249740601e-01 -3.7356415390968323e-01 - <_> - -1.8076049163937569e-03 - - 1 2 81 5.0000000000000000e-01 0 -1 82 1.2500000000000000e+01 - -2 -3 83 2.4500000000000000e+01 - - -4.9844339489936829e-01 4.9451184272766113e-01 - -5.1162499189376831e-01 1.4680899679660797e-01 - <_> - 2.9161420464515686e-01 - - 1 2 84 1.3500000000000000e+01 0 -1 85 1.2500000000000000e+01 - -2 -3 86 1.5115000000000000e+03 - - -7.0512425899505615e-01 4.7449973225593567e-01 - -4.5257037878036499e-01 1.9849643111228943e-01 - <_> - 2.6676848530769348e-01 - - 1 2 87 5.0500000000000000e+01 0 -1 88 6.5500000000000000e+01 - -2 -3 89 1.4650000000000000e+02 - - -2.0592364668846130e-01 3.0830872058868408e-01 - -8.7131351232528687e-01 8.3726328611373901e-01 - <_> - 1.9189073145389557e-01 - - 1 2 90 3.6050000000000000e+02 0 -1 91 1.0350000000000000e+02 - -2 -3 92 7.4500000000000000e+01 - - -8.2260921597480774e-02 5.0565969944000244e-01 - -9.1390937566757202e-01 -1.8902081251144409e-01 - <_> - 5.3643327951431274e-01 - - 1 2 93 2.0500000000000000e+01 0 -1 94 4.4500000000000000e+01 - -2 -3 95 7.3785000000000000e+03 - - -8.0922812223434448e-01 3.4454253315925598e-01 - -1.5407036058604717e-02 -7.4269419908523560e-01 - <_> - 4.3825522065162659e-01 - - 1 2 96 1.0224500000000000e+04 0 -1 97 4.5000000000000000e+00 - -2 -3 98 4.0035000000000000e+03 - - 2.9326722025871277e-01 -3.9492443203926086e-01 - 6.2416630983352661e-01 -1.4834968745708466e-01 - <_> - 9.0073168277740479e-01 - - 1 2 99 2.5000000000000000e+00 0 -1 100 - 3.8395000000000000e+03 -2 -3 101 5.5000000000000000e+00 - - 6.1362767219543457e-01 -5.9424567967653275e-02 - -6.8450838327407837e-01 2.6574308052659035e-02 - <_> - 1.0332926511764526e+00 - - 1 2 102 5.4500000000000000e+01 0 -1 103 - 5.0000000000000000e-01 -2 -3 104 4.5000000000000000e+00 - - 1.4594553411006927e-01 -8.0310869216918945e-01 - 4.9081337451934814e-01 -1.0566046833992004e-01 - <_> - 1.2107890844345093e+00 - - 1 2 105 2.5000000000000000e+00 0 -1 106 608. -2 -3 107 - 1.0250000000000000e+02 - - -6.9540244340896606e-01 8.6690729856491089e-01 - 1.7749644815921783e-01 -8.1727051734924316e-01 - <_> - 1.1315129995346069e+00 - - 1 2 108 1.0450000000000000e+02 0 -1 109 106. -2 -3 110 - 4.7350000000000000e+02 - - -4.4595441222190857e-01 4.8524639010429382e-01 - 3.8998365402221680e-01 -4.3752849102020264e-01 - <_> - 1.3212180137634277e+00 - - 1 2 111 5.0000000000000000e-01 0 -1 112 - 3.1500000000000000e+01 -2 -3 113 8.5000000000000000e+00 - - -7.6347488164901733e-01 6.1377680301666260e-01 - 3.2435289025306702e-01 -3.2852920889854431e-01 - <_> - 1.5280661582946777e+00 - - 1 2 114 31599. 0 -1 115 8.7950000000000000e+02 -2 -3 116 - 1.4950000000000000e+02 - - -4.4413706660270691e-01 2.0684811472892761e-01 - -9.2896610498428345e-01 7.2677606344223022e-01 - <_> - 1.3401062488555908e+00 - - 1 2 117 4.5000000000000000e+00 0 -1 118 - 5.0000000000000000e-01 -2 -3 119 1.7500000000000000e+01 - - -8.9902228116989136e-01 7.3140519857406616e-01 - 2.5528132915496826e-01 -3.2260772585868835e-01 - <_> - 1.5880639553070068e+00 - - 1 2 120 2.3500000000000000e+01 0 -1 121 - 2.3415000000000000e+03 -2 -3 122 1.8500000000000000e+01 - - -7.2909480333328247e-01 -6.7116706632077694e-03 - -8.0022460222244263e-01 3.6795264482498169e-01 - <_> - 1.7455346584320068e+00 - - 1 2 123 1.9715000000000000e+03 0 -1 124 - 4.5635000000000000e+03 -2 -3 125 4.4850000000000000e+02 - - -6.1536699533462524e-01 3.9649611711502075e-01 - -5.3931379318237305e-01 1.9903500378131866e-01 - <_> - 1.4469091892242432e+00 - - 1 2 126 9.5000000000000000e+00 0 -1 127 - 1.0219500000000000e+04 -2 -3 128 4.0500000000000000e+01 - - 6.1238449811935425e-01 -1.6160279512405396e-01 - -5.3765082359313965e-01 2.1599884331226349e-01 - <_> - 1.6631983518600464e+00 - - 1 2 129 1.3050000000000000e+02 0 -1 130 - 1.2500000000000000e+01 -2 -3 131 48. - - -6.8314427137374878e-01 2.1628913283348083e-01 - 7.3021888732910156e-01 -8.3048707246780396e-01 - <_> - 1.3611874580383301e+00 - - 1 2 132 5691. 0 -1 133 1.4550000000000000e+02 -2 -3 134 - 6621. - - 6.3320666551589966e-02 -5.2526509761810303e-01 - 9.5597380399703979e-01 -8.6907690763473511e-01 - <_> - 1.6279634237289429e+00 - - 1 2 135 2.3500000000000000e+01 0 -1 136 - 2.5000000000000000e+00 -2 -3 137 5.0500000000000000e+01 - - 3.9147856831550598e-01 -8.5339552164077759e-01 - 2.6677599549293518e-01 -3.8106775283813477e-01 - <_> - 2.0351922512054443e+00 - - 1 2 138 4.9500000000000000e+01 0 -1 139 - 1.8500000000000000e+01 -2 -3 140 7.5000000000000000e+00 - - 4.8707169294357300e-01 -5.0664901733398438e-01 - 5.0869596004486084e-01 -1.1930328607559204e-01 - <_> - 2.1048190593719482e+00 - - 1 2 141 6.5000000000000000e+00 0 -1 142 - 2.0500000000000000e+01 -2 -3 143 2.8945000000000000e+03 - - 2.2332985699176788e-01 -6.0333216190338135e-01 - 3.1961753964424133e-01 -4.8080846667289734e-01 - <_> - 2.5272200107574463e+00 - - 1 2 144 1.2755000000000000e+03 0 -1 145 - 1.6450000000000000e+02 -2 -3 146 33. - - 8.7598457932472229e-02 -4.3963542580604553e-01 - -8.7583345174789429e-01 6.2399446964263916e-01 - <_> - 2.3983705043792725e+00 - - 1 2 147 5.5000000000000000e+00 0 -1 148 - 1.2500000000000000e+01 -2 -3 149 3.2715000000000000e+03 - - -6.9637626409530640e-01 3.5001280903816223e-01 - -6.8439531326293945e-01 5.0571694970130920e-02 - <_> - 2.1697113513946533e+00 - - 1 2 150 666. 0 -1 151 1.0675000000000000e+03 -2 -3 152 - 1.0650000000000000e+02 - - -2.1497508883476257e-01 7.4145573377609253e-01 - -4.1339716315269470e-01 1.7802318930625916e-01 - <_> - 2.3894040584564209e+00 - - 1 2 153 1.5000000000000000e+00 0 -1 154 - 4.2500000000000000e+01 -2 -3 155 1.0950000000000000e+02 - - -8.8204550743103027e-01 3.3967906236648560e-01 - -9.1087028384208679e-02 -8.9394873380661011e-01 - <_> - 2.2878415584564209e+00 - - 1 2 156 6.4500000000000000e+01 0 -1 157 11. -2 -3 158 - 4.4500000000000000e+01 - - 7.8926539421081543e-01 -8.1914222240447998e-01 - 5.7366627454757690e-01 -1.0156247764825821e-01 - <_> - 2.4907975196838379e+00 - - 1 2 159 5.8650000000000000e+02 0 -1 160 - 1.7625000000000000e+03 -2 -3 161 5.0000000000000000e-01 - - -5.2814042568206787e-01 2.0295590162277222e-01 - 4.9193066358566284e-01 -8.6553698778152466e-01 - <_> - 2.8328115940093994e+00 - - 1 2 162 1.1500000000000000e+01 0 -1 163 - 1.5045000000000000e+03 -2 -3 164 3.1500000000000000e+01 - - 5.6902194023132324e-01 -3.8489398360252380e-01 - 5.4847592115402222e-01 -9.3145422637462616e-02 - <_> - 2.9363400936126709e+00 - - 1 2 165 1.5500000000000000e+01 0 -1 166 - 1.2500000000000000e+01 -2 -3 167 1.5500000000000000e+01 - - 9.5472264289855957e-01 -9.1838270425796509e-01 - -1.0293316841125488e-01 4.3570974469184875e-01 - <_> - 2.8884809017181396e+00 - - 1 2 168 5.5000000000000000e+00 0 -1 169 - 3.2250000000000000e+02 -2 -3 170 3.3305000000000000e+03 - - 5.2823734283447266e-01 -6.2273854017257690e-01 - 2.4218171834945679e-01 -3.8004037737846375e-01 - <_> - 3.2581679821014404e+00 - - 1 2 171 1.1585000000000000e+03 0 -1 172 - 2.0525000000000000e+03 -2 -3 173 6.6950000000000000e+02 - - -7.3419857025146484e-01 5.7153469324111938e-01 - 7.6942658424377441e-01 -4.6774842776358128e-03 - <_> - 3.2552568912506104e+00 - - 1 2 174 4.7500000000000000e+01 0 -1 175 - 5.0000000000000000e-01 -2 -3 176 1.5550000000000000e+02 - - 1.8964821100234985e-01 -5.6353724002838135e-01 - -6.1556345224380493e-01 3.0847749114036560e-01 - <_> - 3.1983842849731445e+00 - - 1 2 177 4.3150000000000000e+02 0 -1 178 - 5.8500000000000000e+01 -2 -3 179 5.0000000000000000e-01 - - -5.6872483342885971e-02 5.8359992504119873e-01 - 4.7400984168052673e-01 -7.4053239822387695e-01 - <_> - 3.4817969799041748e+00 - - 1 2 180 9.5000000000000000e+00 0 -1 181 25. -2 -3 182 - 6.2500000000000000e+01 - - -6.4430248737335205e-01 3.9208996295928955e-01 - -4.2771559953689575e-01 3.0624631047248840e-01 - <_> - 3.0476233959197998e+00 - - 1 2 183 2.5000000000000000e+00 0 -1 184 - 1.3250000000000000e+02 -2 -3 185 3.4150000000000000e+02 - - 5.3614073991775513e-01 -5.6767416000366211e-01 - -3.0754956603050232e-01 8.0505007505416870e-01 - <_> - 3.4105541706085205e+00 - - 1 2 186 5.8500000000000000e+01 0 -1 187 - 5.2250000000000000e+02 -2 -3 188 8.4500000000000000e+01 - - -3.9508250355720520e-01 2.8085133433341980e-01 - 6.1845648288726807e-01 -2.1672628819942474e-01 - <_> - 3.4716253280639648e+00 - - 1 2 189 3238. 0 -1 190 7.6925000000000000e+03 -2 -3 191 - 1.4250000000000000e+02 - - 5.7400876283645630e-01 -6.7538954317569733e-02 - -8.3562213182449341e-01 6.1071071773767471e-02 - <_> - 3.3441829681396484e+00 - - 1 2 192 1.3500000000000000e+01 0 -1 193 - 1.3500000000000000e+01 -2 -3 194 5.5000000000000000e+00 - - -6.8424683809280396e-01 5.4655539989471436e-01 - 4.5958670973777771e-01 -1.2744228541851044e-01 - <_> - 3.2567305564880371e+00 - - 1 2 195 4.5050000000000000e+02 0 -1 196 - 7.5000000000000000e+00 -2 -3 197 102. - - 2.0710256695747375e-01 -4.7517296671867371e-01 - -2.6671493053436279e-01 5.8150058984756470e-01 - <_> - 3.5595970153808594e+00 - - 1 2 198 1.5500000000000000e+01 0 -1 199 - 1.6405000000000000e+03 -2 -3 200 3.2500000000000000e+01 - - -6.0164546966552734e-01 3.0286654829978943e-01 - 2.1122010052204132e-01 -5.7218044996261597e-01 - <_> - 3.7392544746398926e+00 - - 1 2 201 6.5000000000000000e+00 0 -1 202 - 3.5000000000000000e+00 -2 -3 203 1.6450000000000000e+02 - - 2.2506394982337952e-01 -8.6310726404190063e-01 - 1.7965751886367798e-01 -6.9324779510498047e-01 - <_> - 3.7078585624694824e+00 - - 1 2 204 8.1450000000000000e+02 0 -1 205 1890. -2 -3 206 - 8.1750000000000000e+02 - - -3.2595106959342957e-01 8.0182307958602905e-01 - 6.8428695201873779e-01 -2.1671128273010254e-01 - <_> - 4.0834798812866211e+00 - - 1 2 207 7524. 0 -1 208 29059. -2 -3 209 - 5.0000000000000000e-01 - - -9.4072461128234863e-02 6.2213033437728882e-01 - 4.1094872355461121e-01 -3.1383806467056274e-01 - <_> - 3.9115695953369141e+00 - - 1 2 210 1.8500000000000000e+01 0 -1 211 387. -2 -3 212 - 2.3750000000000000e+02 - - 4.2355090379714966e-01 -8.8622373342514038e-01 - 2.1309094130992889e-01 -5.3503811359405518e-01 - <_> - 4.2166790962219238e+00 - - 1 2 213 5.3500000000000000e+01 0 -1 214 1081. -2 -3 215 - 2.5000000000000000e+00 - - 8.1005847454071045e-01 -9.5809775590896606e-01 - 3.0510938167572021e-01 -2.3649103939533234e-01 - <_> - 4.2742543220520020e+00 - - 1 2 216 5.0000000000000000e-01 0 -1 217 - 3.5000000000000000e+00 -2 -3 218 1.9500000000000000e+01 - - -6.7842203378677368e-01 6.1577528715133667e-01 - -6.2877601385116577e-01 5.7575210928916931e-02 - <_> - 4.5262427330017090e+00 - - 1 2 219 2.3500000000000000e+01 0 -1 220 - 6.5500000000000000e+01 -2 -3 221 7200. - - -1.2643574178218842e-01 4.4764062762260437e-01 - 8.0391228199005127e-01 -5.6298023462295532e-01 - <_> - 4.3622655868530273e+00 - - 1 2 222 5.0000000000000000e-01 0 -1 223 - 5.0000000000000000e-01 -2 -3 224 8.5000000000000000e+00 - - -6.9282239675521851e-01 5.0668609142303467e-01 - 2.8447443246841431e-01 -3.2788425683975220e-01 - <_> - 4.3866205215454102e+00 - - 1 2 225 1.8500000000000000e+01 0 -1 226 - 3.0500000000000000e+01 -2 -3 227 3.5000000000000000e+00 - - 1.6534422338008881e-01 -6.7988771200180054e-01 - 5.8741343021392822e-01 -7.3899636045098305e-03 - <_> - 4.6229195594787598e+00 - - 1 2 228 3.5500000000000000e+01 0 -1 229 - 2.4250000000000000e+02 -2 -3 230 1.4995000000000000e+03 - - -2.7123320102691650e-01 4.3727341294288635e-01 - 6.2667381763458252e-01 -8.1948131322860718e-01 - <_> - 4.4684619903564453e+00 - - 1 2 231 1.3050000000000000e+02 0 -1 232 - 7.4500000000000000e+01 -2 -3 233 3.4250000000000000e+02 - - 4.2552286386489868e-01 -6.8802464008331299e-01 - -3.5543212294578552e-01 8.2571202516555786e-01 - <_> - 4.7353043556213379e+00 - - 1 2 234 2.4500000000000000e+01 0 -1 235 - 5.2500000000000000e+01 -2 -3 236 2.1500000000000000e+01 - - 1.4997267723083496e-01 -9.4012928009033203e-01 - -3.1085640192031860e-01 2.6684227585792542e-01 - <_> - 5.1284918785095215e+00 - - 1 2 237 1.5000000000000000e+00 0 -1 238 246. -2 -3 239 - 5.1500000000000000e+01 - - -1.4119525253772736e-01 8.4309184551239014e-01 - 8.1866653636097908e-03 -5.9627658128738403e-01 - <_> - 5.2100868225097656e+00 - - 1 2 240 1.2225000000000000e+03 0 -1 241 8510. -2 -3 242 - 4.1076500000000000e+04 - - -3.3349204063415527e-01 4.1161355376243591e-01 - 4.6106973290443420e-01 -8.5954028367996216e-01 - <_> - 5.1655635833740234e+00 - - 1 2 243 1.4225500000000000e+04 0 -1 244 - 5.6765000000000000e+03 -2 -3 245 3.5000000000000000e+00 - - -4.4523153454065323e-02 6.2628918886184692e-01 - 2.0545418560504913e-01 -5.4939305782318115e-01 - <_> - 5.3291592597961426e+00 - - 1 2 246 4.5000000000000000e+00 0 -1 247 5. -2 -3 248 - 4.5035000000000000e+03 - - -8.5104453563690186e-01 7.7873927354812622e-01 - -8.5507243871688843e-01 -6.3659679144620895e-03 - <_> - 5.4979724884033203e+00 - - 1 2 249 7.7350000000000000e+02 0 -1 250 - 5.0745000000000000e+03 -2 -3 251 6.5000000000000000e+00 - - 4.5453670620918274e-01 -6.6669577360153198e-01 - 1.7272062599658966e-01 -4.8215919733047485e-01 - <_> - 5.1418399810791016e+00 - - 1 2 252 3.3500000000000000e+01 0 -1 253 - 4.8500000000000000e+01 -2 -3 254 1.1625000000000000e+03 - - 5.2197024226188660e-02 -8.2986247539520264e-01 - -4.2942497134208679e-01 2.6862683892250061e-01 - <_> - 5.3069186210632324e+00 - - 1 2 255 7.3500000000000000e+01 0 -1 256 - 6.5000000000000000e+00 -2 -3 257 293. - - -8.3037430047988892e-01 1.6507858037948608e-01 - -8.6482697725296021e-01 5.6237572431564331e-01 - <_> - 5.8320169448852539e+00 - - 1 2 258 5.2500000000000000e+01 0 -1 259 - 5.0000000000000000e-01 -2 -3 260 483. - - 4.2582702636718750e-01 -3.5350418090820312e-01 - 5.2509862184524536e-01 -8.3165860176086426e-01 - <_> - 5.4062981605529785e+00 - - 1 2 261 7.2850000000000000e+02 0 -1 262 27703. -2 -3 263 - 1.1950000000000000e+02 - - 6.5644961595535278e-01 -9.5847475528717041e-01 - 2.1147368848323822e-01 -4.5759904384613037e-01 - <_> - 5.3856034278869629e+00 - - 1 2 264 2.1500000000000000e+01 0 -1 265 - 1.6105000000000000e+03 -2 -3 266 1.5000000000000000e+00 - - -2.0694794133305550e-02 -7.2058790922164917e-01 - 7.0882946252822876e-01 -9.4017720222473145e-01 - <_> - 5.3594450950622559e+00 - - 1 2 267 1.9500000000000000e+01 0 -1 268 - 1.5500000000000000e+01 -2 -3 269 5.0000000000000000e-01 - - 4.6942609548568726e-01 -4.7919079661369324e-01 - 5.4369747638702393e-01 -2.6158468797802925e-02 - <_> - 5.5568313598632812e+00 - - 1 2 270 3.8500000000000000e+01 0 -1 271 5311. -2 -3 272 - 1.0750000000000000e+02 - - 2.8408360481262207e-01 -9.0222167968750000e-01 - 1.9738645851612091e-01 -5.9748172760009766e-01 - <_> - 6.0750946998596191e+00 - - 1 2 273 3654. 0 -1 274 5.0000000000000000e-01 -2 -3 275 180. - - 1.3075743615627289e-01 -4.2956027388572693e-01 - -7.0136785507202148e-01 6.2402111291885376e-01 - <_> - 6.0776939392089844e+00 - - 1 2 276 2.5000000000000000e+00 0 -1 277 - 1.3500000000000000e+01 -2 -3 278 1.1750000000000000e+02 - - -9.0228682756423950e-01 1. 1.6657561063766479e-01 - -6.4917582273483276e-01 - <_> - 6.0489621162414551e+00 - - 1 2 279 1.2455000000000000e+03 0 -1 280 - 3.2550000000000000e+02 -2 -3 281 9.3250000000000000e+02 - - -2.8672853112220764e-01 6.7820680141448975e-01 - 6.3100266456604004e-01 -2.2533583641052246e-01 - <_> - 6.3533391952514648e+00 - - 1 2 282 1.8769500000000000e+04 0 -1 283 - 7.5450000000000000e+02 -2 -3 284 1.4500000000000000e+01 - - -7.3246711492538452e-01 4.0920761227607727e-01 - 9.1864340007305145e-02 -5.1933372020721436e-01 - <_> - 6.3807511329650879e+00 - - 1 2 285 4.9950000000000000e+02 0 -1 286 - 7.5000000000000000e+00 -2 -3 287 4.9500000000000000e+01 - - 2.5379750132560730e-01 -9.2118155956268311e-01 - -5.7641644030809402e-02 5.3151047229766846e-01 - <_> - 6.4591631889343262e+00 - - 1 2 288 2.5500000000000000e+01 0 -1 289 - 1.1500000000000000e+01 -2 -3 290 1.7405000000000000e+03 - - -9.0133595466613770e-01 2.3147261142730713e-01 - -5.1077365875244141e-01 7.7433860301971436e-01 - <_> - 6.7583456039428711e+00 - - 1 2 291 5.0000000000000000e-01 0 -1 292 - 3.6500000000000000e+01 -2 -3 293 6.5000000000000000e+00 - - -1.6842520236968994e-01 7.2404229640960693e-01 - 4.3139779567718506e-01 -3.6949115991592407e-01 - <_> - 6.6043167114257812e+00 - - 1 2 294 1.0500000000000000e+01 0 -1 295 - 2.5500000000000000e+01 -2 -3 296 1.0750000000000000e+02 - - 6.2449771165847778e-01 -6.7510235309600830e-01 - 3.5289931297302246e-01 -1.5402862429618835e-01 - <_> - 6.4769744873046875e+00 - - 1 2 297 1.6750000000000000e+02 0 -1 298 - 3.4500000000000000e+01 -2 -3 299 2.1500000000000000e+01 - - 1.1882825195789337e-01 -6.5167319774627686e-01 - -7.6285523176193237e-01 3.4674841165542603e-01 - <_> - 6.6450757980346680e+00 - - 1 2 300 8.5000000000000000e+00 0 -1 301 - 1.3500000000000000e+01 -2 -3 302 116. - - -5.9631282091140747e-01 2.7127423882484436e-01 - -5.6467700004577637e-01 3.7385278940200806e-01 - <_> - 6.8429255485534668e+00 - - 1 2 303 5.5500000000000000e+01 0 -1 304 - 3.5000000000000000e+00 -2 -3 305 3.3250000000000000e+02 - - -8.3910179138183594e-01 4.3193608522415161e-01 - -3.7392577528953552e-01 6.6540867090225220e-01 - <_> - 7.0322842597961426e+00 - - 1 2 306 6.3500000000000000e+01 0 -1 307 - 2.0845000000000000e+03 -2 -3 308 1.2500000000000000e+01 - - -5.9658832848072052e-02 -8.6379587650299072e-01 - 4.7707024216651917e-01 -1.4790077507495880e-01 - <_> - 6.9630532264709473e+00 - - 1 2 309 1.6150000000000000e+02 0 -1 310 29256. -2 -3 311 - 2.5000000000000000e+00 - - -8.2682120800018311e-01 4.9407878518104553e-01 - 5.2456849813461304e-01 -6.9230861961841583e-02 - <_> - 6.9075293540954590e+00 - - 1 2 312 5.0000000000000000e-01 0 -1 313 - 8.5000000000000000e+00 -2 -3 314 8.4975000000000000e+03 - - -7.3926454782485962e-01 4.6552142500877380e-01 - 5.8614385128021240e-01 -3.0694326758384705e-01 - <_> - 7.0862822532653809e+00 - - 1 2 315 8.2550000000000000e+02 0 -1 316 - 4.6500000000000000e+01 -2 -3 317 5.0695000000000000e+03 - - -2.9908904433250427e-01 5.3665381669998169e-01 - 6.0632449388504028e-01 -4.8383909463882446e-01 - <_> - 7.3064808845520020e+00 - - 1 2 318 1.2500000000000000e+01 0 -1 319 - 4.7350000000000000e+02 -2 -3 320 1.3500000000000000e+01 - - -1.4890976250171661e-01 5.1700884103775024e-01 - 2.2019901871681213e-01 -5.0205707550048828e-01 - <_> - 7.5856218338012695e+00 - - 1 2 321 4.5000000000000000e+00 0 -1 322 - 2.5000000000000000e+00 -2 -3 323 1.7875000000000000e+03 - - -6.5830785036087036e-01 5.2842289209365845e-01 - -4.4524073600769043e-01 1.5747387707233429e-01 - <_> - 7.5183806419372559e+00 - - 1 2 324 7.8500000000000000e+01 0 -1 325 - 2.1500000000000000e+01 -2 -3 326 283. - - 4.9533292651176453e-01 -3.2849147915840149e-01 - -8.8443028926849365e-01 -4.6591479331254959e-02 - <_> - 7.2458000183105469e+00 - - 1 2 327 2.9500000000000000e+01 0 -1 328 - 4.5000000000000000e+00 -2 -3 329 1.2500000000000000e+01 - - 3.8163262605667114e-01 -5.6158578395843506e-01 - -5.1157724857330322e-01 3.5844418406486511e-01 - <_> - 7.7198004722595215e+00 - - 1 2 330 1.7500000000000000e+01 0 -1 331 - 8.5000000000000000e+00 -2 -3 332 94. - - -1.6375185549259186e-01 4.7400090098381042e-01 - -8.1118392944335938e-01 -3.4891348332166672e-02 - <_> - 7.6042866706848145e+00 - - 1 2 333 1.5500000000000000e+01 0 -1 334 - 2.8500000000000000e+01 -2 -3 335 1.1255000000000000e+03 - - -2.7163597941398621e-01 4.8851761221885681e-01 - -4.1841214895248413e-01 5.2421635389328003e-01 - <_> - 7.8545336723327637e+00 - - 1 2 336 5.0000000000000000e-01 0 -1 337 - 6.5000000000000000e+00 -2 -3 338 1.5755000000000000e+03 - - -5.1451754570007324e-01 5.8292496204376221e-01 - 5.4736447334289551e-01 -2.9082155227661133e-01 - <_> - 8.2435092926025391e+00 - - 1 2 339 2.5000000000000000e+00 0 -1 340 298. -2 -3 341 - 3.4500000000000000e+01 - - 5.5548179149627686e-01 -4.2350277304649353e-01 - -4.2017799615859985e-01 3.3250615000724792e-01 - <_> - 8.1081476211547852e+00 - - 1 2 342 2306. 0 -1 343 4.8350000000000000e+02 -2 -3 344 - 2.0550000000000000e+02 - - -7.4824672937393188e-01 8.6650526523590088e-01 - 2.9151761531829834e-01 -3.6584287881851196e-01 - <_> - 7.9108762741088867e+00 - - 0 1 345 2758. 0 1 345 2758. -1 -2 346 2.1500000000000000e+01 - - -1. -1. 2.9584947228431702e-01 -1.9727160036563873e-01 - <_> - 8.1822175979614258e+00 - - 1 2 347 2.3500000000000000e+01 0 -1 348 282. -2 -3 349 - 4.5000000000000000e+00 - - 4.1519537568092346e-01 -7.7347069978713989e-01 - 2.7134174108505249e-01 -2.6304042339324951e-01 - <_> - 8.1136093139648438e+00 - - 1 2 350 6.6500000000000000e+01 0 -1 351 - 1.4500000000000000e+01 -2 -3 352 3.4500000000000000e+01 - - -8.0191783607006073e-02 -7.9695141315460205e-01 - 4.5921468734741211e-01 -4.6219456195831299e-01 - <_> - 8.4452056884765625e+00 - - 1 2 353 5.0000000000000000e-01 0 -1 354 - 1.1750000000000000e+02 -2 -3 355 1.4615000000000000e+03 - - 6.2617254257202148e-01 -6.0764908790588379e-01 - -2.9064002633094788e-01 7.1891576051712036e-01 - <_> - 8.4361963272094727e+00 - - 1 2 356 7.3500000000000000e+01 0 -1 357 825. -2 -3 358 - 6.5000000000000000e+00 - - 6.0967606306076050e-01 -7.7204084396362305e-01 - 6.0940122604370117e-01 -9.0096443891525269e-03 - <_> - 8.7065010070800781e+00 - - 1 2 359 3.1500000000000000e+01 0 -1 360 - 1.1475500000000000e+04 -2 -3 361 262. - - 4.0798941254615784e-01 -6.3121789693832397e-01 - -4.9538758397102356e-01 2.7030462026596069e-01 - <_> - 8.5846290588378906e+00 - - 1 2 362 1.4500000000000000e+01 0 -1 363 - 1.3524500000000000e+04 -2 -3 364 1.5650000000000000e+02 - - 6.1740058660507202e-01 -1.2187176942825317e-01 - -4.5620942115783691e-01 2.4483670294284821e-01 - <_> - 8.5813455581665039e+00 - - 1 2 365 1.9500000000000000e+01 0 -1 366 - 2.4550000000000000e+02 -2 -3 367 1.5150000000000000e+02 - - -3.2830052077770233e-03 -7.3917645215988159e-01 - 8.6923849582672119e-01 -3.4717652201652527e-01 - <_> - 8.3619909286499023e+00 - - 1 2 368 8.5000000000000000e+00 0 -1 369 915. -2 -3 370 - 5.0000000000000000e-01 - - -4.7836102545261383e-02 -8.9932316541671753e-01 - 3.6531907320022583e-01 -2.1935538947582245e-01 - <_> - 8.8194007873535156e+00 - - 1 2 371 5.3500000000000000e+01 0 -1 372 - 4.5000000000000000e+00 -2 -3 373 3.5000000000000000e+00 - - 1.0001569986343384e-01 -6.3893711566925049e-01 - 4.5741054415702820e-01 -1.3190703094005585e-01 - <_> - 8.5848417282104492e+00 - - 1 2 374 1.2185000000000000e+03 0 -1 375 - 5.6500000000000000e+01 -2 -3 376 7.8650000000000000e+02 - - -3.6798512935638428e-01 6.3582497835159302e-01 - 8.7271928787231445e-01 4.6488631516695023e-02 - <_> - 8.7026214599609375e+00 - - 1 2 377 3.7500000000000000e+01 0 -1 378 - 8.1500000000000000e+01 -2 -3 379 2.2350000000000000e+02 - - -1.1387371271848679e-01 4.8333024978637695e-01 - 5.4781770706176758e-01 -6.5416949987411499e-01 - <_> - 8.9529705047607422e+00 - - 1 2 380 2.0500000000000000e+01 0 -1 381 - 7.5000000000000000e+00 -2 -3 382 1.3235000000000000e+03 - - -7.0283526182174683e-01 2.5034907460212708e-01 - -7.6881372928619385e-01 1.7487525939941406e-01 - <_> - 9.0659570693969727e+00 - - 1 2 383 3.5000000000000000e+00 0 -1 384 - 6.5000000000000000e+00 -2 -3 385 7.0250000000000000e+02 - - -9.7807765007019043e-01 4.7183737158775330e-01 - 1.1298649013042450e-01 -4.7387996315956116e-01 - <_> - 9.2564897537231445e+00 - - 1 2 386 7.0650000000000000e+02 0 -1 387 - 2.7500000000000000e+01 -2 -3 388 3.8150000000000000e+02 - - -4.3204694986343384e-01 4.6149665117263794e-01 - -4.5656362175941467e-01 4.0426468849182129e-01 - <_> - 9.5633430480957031e+00 - - 1 2 389 1.7250000000000000e+02 0 -1 390 - 1.4350000000000000e+02 -2 -3 391 2168. - - 3.0685371160507202e-01 -6.7446005344390869e-01 - -5.6666123867034912e-01 5.7540327310562134e-01 - <_> - 9.4047651290893555e+00 - - 1 2 392 5.0000000000000000e-01 0 -1 393 36. -2 -3 394 - 6.5000000000000000e+00 - - -8.9199495315551758e-01 6.9151669740676880e-01 - 3.1148543953895569e-01 -3.2515323162078857e-01 - <_> - 9.8578929901123047e+00 - - 1 2 395 1.6500000000000000e+01 0 -1 396 - 8.5000000000000000e+00 -2 -3 397 6655. - - -6.3973349332809448e-01 -2.6324391365051270e-02 - 4.5312842726707458e-01 -7.6435673236846924e-01 - <_> - 1.0109946250915527e+01 - - 1 2 398 8.1850000000000000e+02 0 -1 399 5. -2 -3 400 - 1.5000000000000000e+00 - - 1. -9.7892904281616211e-01 2.5205332040786743e-01 - -2.3775234818458557e-01 - <_> - 1.0110588073730469e+01 - - 1 2 401 8.9500000000000000e+01 0 -1 402 - 1.9500000000000000e+01 -2 -3 403 3.3150000000000000e+02 - - 6.0288328677415848e-02 -5.5889946222305298e-01 - -6.6790217161178589e-01 4.9099177122116089e-01 - <_> - 1.0178493499755859e+01 - - 1 2 404 8.3500000000000000e+01 0 -1 405 - 5.0000000000000000e-01 -2 -3 406 4.5500000000000000e+01 - - 6.6644616425037384e-02 -4.7016331553459167e-01 - 6.9829040765762329e-01 -7.4734330177307129e-01 - <_> - 1.0367170333862305e+01 - - 1 2 407 3.1968500000000000e+04 0 -1 408 - 1.4500000000000000e+01 -2 -3 409 1.9650000000000000e+02 - - -8.8887441158294678e-01 1.8867671489715576e-01 - -6.9990497827529907e-01 7.3294508457183838e-01 - <_> - 1.0330060958862305e+01 - - 1 2 410 3.0500000000000000e+01 0 -1 411 - 4.5000000000000000e+00 -2 -3 412 2.2500000000000000e+01 - - 4.1319993138313293e-01 -1.7337587475776672e-01 - -6.1255306005477905e-01 5.2832174301147461e-01 - <_> - 1.0422311782836914e+01 - - 1 2 413 1.5750000000000000e+02 0 -1 414 2858. -2 -3 415 267. - - 9.2250838875770569e-02 -6.7853665351867676e-01 - -5.2487850189208984e-01 3.7964582443237305e-01 - <_> - 1.0936569213867188e+01 - - 1 2 416 5.5000000000000000e+00 0 -1 417 - 1.5000000000000000e+00 -2 -3 418 4.1500000000000000e+01 - - -7.1109032630920410e-01 5.2976405620574951e-01 - -7.1571081876754761e-01 -3.8149278610944748e-02 - <_> - 1.0785615921020508e+01 - - 1 2 419 5.5000000000000000e+00 0 -1 420 - 2.5000000000000000e+00 -2 -3 421 5.1050000000000000e+02 - - -7.9414331912994385e-01 5.1595968008041382e-01 - -5.1001089811325073e-01 2.4380905926227570e-01 - <_> - 1.1078557014465332e+01 - - 1 2 422 6.2045000000000000e+03 0 -1 423 - 2.1500000000000000e+01 -2 -3 424 7.3450000000000000e+02 - - -5.1469475030899048e-01 2.9294142127037048e-01 - 8.0896812677383423e-01 -6.5453553199768066e-01 - <_> - 1.1050524711608887e+01 - - 1 2 425 1.2500000000000000e+01 0 -1 426 - 3.1250000000000000e+02 -2 -3 427 2.7950000000000000e+02 - - 7.0064479112625122e-01 -3.8257476687431335e-01 - 1.9552476704120636e-01 -4.3830174207687378e-01 - <_> - 1.1334832191467285e+01 - - 1 2 428 1.8675000000000000e+03 0 -1 429 - 6.5000000000000000e+00 -2 -3 430 1.1475000000000000e+03 - - 3.7387716770172119e-01 -7.6267945766448975e-01 - -5.4317325353622437e-01 2.8430745005607605e-01 - <_> - 1.1113101959228516e+01 - - 1 2 431 1.4850000000000000e+02 0 -1 432 - 8.3500000000000000e+01 -2 -3 433 3.7500000000000000e+01 - - -3.8298897445201874e-02 -6.6938400268554688e-01 - 4.6958562731742859e-01 -2.8687629103660583e-01 - <_> - 1.0955561637878418e+01 - - 1 2 434 4.3500000000000000e+01 0 -1 435 - 5.5000000000000000e+00 -2 -3 436 1.9500000000000000e+01 - - 1.3246925175189972e-01 -5.9307396411895752e-01 - 4.5207285881042480e-01 -1.5754084289073944e-01 - <_> - 1.1154244422912598e+01 - - 1 2 437 3.5500000000000000e+01 0 -1 438 149. -2 -3 439 - 1.0764500000000000e+04 - - 1.6496022045612335e-01 -8.5004007816314697e-01 - 1.9868306815624237e-01 -7.6483601331710815e-01 - <_> - 1.1040904045104980e+01 - - 1 2 440 1.7500000000000000e+01 0 -1 441 - 2.7650000000000000e+02 -2 -3 442 6.0650000000000000e+02 - - 3.8257870078086853e-01 -8.7649303674697876e-01 - 5.6843882799148560e-01 -1.1334086209535599e-01 - <_> - 1.0785296440124512e+01 - - 1 2 443 2.0850000000000000e+02 0 -1 444 - 5.0000000000000000e-01 -2 -3 445 153. - - 2.4452392756938934e-01 -4.5549276471138000e-01 - 5.3557026386260986e-01 -2.5560736656188965e-01 - <_> - 1.1557132720947266e+01 - - 1 2 446 3.1695000000000000e+03 0 -1 447 17097. -2 -3 448 - 1.6791500000000000e+04 - - -8.1668007373809814e-01 8.2250398397445679e-01 - -3.6227312684059143e-01 1.6900251805782318e-01 - <_> - 1.1418401718139648e+01 - - 1 2 449 1.7705000000000000e+03 0 -1 450 - 4.6565000000000000e+03 -2 -3 451 4.5550000000000000e+02 - - -1.8939907848834991e-01 5.5706465244293213e-01 - 2.2822033613920212e-02 -6.7216074466705322e-01 - <_> - 1.1332237243652344e+01 - - 1 2 452 1.9500000000000000e+01 0 -1 453 - 5.0000000000000000e-01 -2 -3 454 168. - - 9.8821230232715607e-02 -9.9127775430679321e-01 - 2.8800103068351746e-01 -3.2348513603210449e-01 - <_> - 1.1800554275512695e+01 - - 1 2 455 9.6500000000000000e+01 0 -1 456 - 3.5000000000000000e+00 -2 -3 457 1.2085000000000000e+03 - - 1.2269663810729980e-01 -4.6963310241699219e-01 - 4.6831732988357544e-01 -7.5347024202346802e-01 - <_> - 1.1746677398681641e+01 - - 1 2 458 2.6500000000000000e+01 0 -1 459 - 1.2500000000000000e+01 -2 -3 460 6.2500000000000000e+01 - - 2.9853442311286926e-01 -6.0757899284362793e-01 - 4.3772074580192566e-01 -1.3283115625381470e-01 - <_> - 1.1710562705993652e+01 - - 1 2 461 3.4500000000000000e+01 0 -1 462 - 5.0000000000000000e-01 -2 -3 463 2.0950000000000000e+02 - - 3.1521999835968018e-01 -5.5736678838729858e-01 - 6.7748945951461792e-01 -3.6115031689405441e-02 - <_> - 1.1582207679748535e+01 - - 1 2 464 1.5000000000000000e+00 0 -1 465 - 1.4750000000000000e+02 -2 -3 466 5.0000000000000000e-01 - - -9.5662528276443481e-01 8.8448798656463623e-01 - 5.0583779811859131e-01 -1.2840148806571960e-01 - <_> - 1.1577805519104004e+01 - - 1 2 467 2.6250000000000000e+02 0 -1 468 - 8.5000000000000000e+00 -2 -3 469 2.7050000000000000e+02 - - 5.8746252208948135e-02 -5.1417016983032227e-01 - -4.4025536626577377e-03 7.2468632459640503e-01 - <_> - 1.1909842491149902e+01 - - 1 2 470 3.0500000000000000e+01 0 -1 471 - 9.1500000000000000e+01 -2 -3 472 3.2500000000000000e+01 - - 2.6228722929954529e-01 -8.3183318376541138e-01 - 3.3203727006912231e-01 -2.0215129852294922e-01 - <_> - 1.1820110321044922e+01 - - 1 2 473 3.6150000000000000e+02 0 -1 474 - 7.5500000000000000e+01 -2 -3 475 1.6500000000000000e+01 - - 3.4021586179733276e-02 -7.3799329996109009e-01 - 5.9181433916091919e-01 -8.9732393622398376e-02 - <_> - 1.2058867454528809e+01 - - 1 2 476 2.1850000000000000e+02 0 -1 477 - 1.3970500000000000e+04 -2 -3 478 3.5405000000000000e+03 - - 2.3875749111175537e-01 -3.4735745191574097e-01 - 8.4880095720291138e-01 -3.6369037628173828e-01 - <_> - 1.2003521919250488e+01 - - 1 2 479 1.2045000000000000e+03 0 -1 480 - 5.0000000000000000e-01 -2 -3 481 6.6500000000000000e+01 - - 1.9498512148857117e-01 -4.0264678001403809e-01 - 6.4470326900482178e-01 -4.2276349663734436e-01 - <_> - 1.2398437500000000e+01 - - 1 2 482 1.7500000000000000e+01 0 -1 483 13266. -2 -3 484 - 2.3500000000000000e+01 - - 1.0403804481029510e-01 -7.6852244138717651e-01 - 3.9491611719131470e-01 -1.4494727551937103e-01 - <_> - 1.2834873199462891e+01 - - 1 2 485 8.5000000000000000e+00 0 -1 486 - 1.9500000000000000e+01 -2 -3 487 2.5000000000000000e+00 - - 2.4885479360818863e-02 -6.1086690425872803e-01 - -3.8872721791267395e-01 4.3643516302108765e-01 - <_> - 1.2477423667907715e+01 - - 1 2 488 6.6500000000000000e+01 0 -1 489 - 2.9500000000000000e+01 -2 -3 490 4.4500000000000000e+01 - - -8.9354419708251953e-01 3.1559488177299500e-01 - -5.1763534545898438e-01 2.7538600564002991e-01 - <_> - 1.3054378509521484e+01 - - 1 2 491 8.2350000000000000e+02 0 -1 492 - 9.1500000000000000e+01 -2 -3 493 3.0550000000000000e+02 - - -5.0999827682971954e-02 5.7695519924163818e-01 - -8.2453000545501709e-01 2.1885833144187927e-01 - <_> - 1.3001498222351074e+01 - - 1 2 494 3.5000000000000000e+00 0 -1 495 - 4.5000000000000000e+00 -2 -3 496 1.2545000000000000e+03 - - -3.3553498983383179e-01 4.7332924604415894e-01 - -4.0103676915168762e-01 2.5861555337905884e-01 - <_> - 1.2748070716857910e+01 - - 1 2 497 7.2500000000000000e+01 0 -1 498 - 1.2078500000000000e+04 -2 -3 499 6.1500000000000000e+01 - - -5.6012886762619019e-01 5.0949209928512573e-01 - -3.8095393776893616e-01 3.5849356651306152e-01 - <_> - 1.3219707489013672e+01 - - 1 2 500 5.0000000000000000e-01 0 -1 501 - 4.5000000000000000e+00 -2 -3 502 2.5000000000000000e+00 - - -8.3156263828277588e-01 4.7163730859756470e-01 - 1.4885266125202179e-01 -4.8097932338714600e-01 - <_> - 1.3100829124450684e+01 - - 1 2 503 1.5500000000000000e+01 0 -1 504 - 6.5000000000000000e+00 -2 -3 505 1.6745000000000000e+03 - - 4.8601552844047546e-02 -8.4098070859909058e-01 - 4.4885209202766418e-01 -1.1887902766466141e-01 - <_> - 1.3153789520263672e+01 - - 1 2 506 1.9750000000000000e+02 0 -1 507 - 5.0000000000000000e-01 -2 -3 508 1.3850000000000000e+02 - - 3.5855168104171753e-01 -1.6984774172306061e-01 - -8.2890641689300537e-01 8.5591834783554077e-01 - <_> - 1.3473151206970215e+01 - - 1 2 509 2.0500000000000000e+01 0 -1 510 - 2.3500000000000000e+01 -2 -3 511 8.1050000000000000e+02 - - 3.1073799729347229e-01 -9.3193674087524414e-01 - -1.7174348235130310e-01 4.0613415837287903e-01 - <_> - 1.3465453147888184e+01 - - 1 2 512 2.1265000000000000e+03 0 -1 513 - 9.2950000000000000e+02 -2 -3 514 3.5000000000000000e+00 - - -7.6984455808997154e-03 7.1764069795608521e-01 - 2.0267011225223541e-01 -6.4554244279861450e-01 - <_> - 1.3577540397644043e+01 - - 1 2 515 2.7500000000000000e+01 0 -1 516 36. -2 -3 517 - 4.1350000000000000e+02 - - 1.5204006433486938e-01 -8.1754583120346069e-01 - -9.6264392137527466e-02 4.6634069085121155e-01 - <_> - 1.3565153121948242e+01 - - 1 2 518 8.2500000000000000e+01 0 -1 519 - 8.4500000000000000e+01 -2 -3 520 9545. - - 3.0989632010459900e-01 -6.6030853986740112e-01 - -6.4033728837966919e-01 -2.4311884772032499e-03 - <_> - 1.3631966590881348e+01 - - 1 2 521 2.3500000000000000e+01 0 -1 522 - 5.2500000000000000e+01 -2 -3 523 3.1500000000000000e+01 - - -3.1883838772773743e-01 2.8375336527824402e-01 - 6.9719344377517700e-01 -6.3891428709030151e-01 - <_> - 1.3900455474853516e+01 - - 1 2 524 5.1500000000000000e+01 0 -1 525 - 4.5000000000000000e+00 -2 -3 526 22871. - - -6.8288409709930420e-01 3.8537871837615967e-01 - 2.3610968887805939e-01 -4.6725943684577942e-01 - <_> - 1.3885604858398438e+01 - - 1 2 527 6.3917500000000000e+04 0 -1 528 - 6.5000000000000000e+00 -2 -3 529 9.7500000000000000e+01 - - 1.8357095122337341e-01 -8.4825068712234497e-01 - 4.4022575020790100e-01 -1.7257900536060333e-01 - <_> - 1.4077846527099609e+01 - - 1 2 530 1.9305000000000000e+03 0 -1 531 - 4.5000000000000000e+00 -2 -3 532 5275. - - 3.3539947867393494e-01 -2.5358977913856506e-01 - 8.1407654285430908e-01 -8.9784932136535645e-01 - <_> - 1.4307449340820312e+01 - - 1 2 533 4.2500000000000000e+01 0 -1 534 - 3.2250000000000000e+02 -2 -3 535 1.5000000000000000e+00 - - 8.7229333817958832e-02 -9.4649451971054077e-01 - -5.4333996772766113e-01 2.2960273921489716e-01 - <_> - 1.4230868339538574e+01 - - 1 2 536 4.7500000000000000e+01 0 -1 537 - 5.0000000000000000e-01 -2 -3 538 7.5500000000000000e+01 - - 5.4770493507385254e-01 -7.6581157743930817e-02 - -8.0993747711181641e-01 1. - <_> - 1.4503654479980469e+01 - - 1 2 539 2.1500000000000000e+01 0 -1 540 - 6.7525000000000000e+03 -2 -3 541 3.1500000000000000e+01 - - -1.3048166036605835e-01 -8.7906163930892944e-01 - 2.7278691530227661e-01 -4.8766756057739258e-01 - <_> - 1.4462507247924805e+01 - - 1 2 542 5.0950000000000000e+02 0 -1 543 - 4.8500000000000000e+01 -2 -3 544 2334. - - -4.5064944028854370e-01 1.7299294471740723e-01 - 7.4772566556930542e-01 -4.1147492825984955e-02 - <_> - 1.4535001754760742e+01 - - 1 2 545 3.5000000000000000e+00 0 -1 546 - 4.5000000000000000e+00 -2 -3 547 3.1500000000000000e+01 - - -9.2824006080627441e-01 5.8265477418899536e-01 - -3.6995452642440796e-01 2.3856091499328613e-01 - <_> - 1.4815734863281250e+01 - - 1 2 548 2.0500000000000000e+01 0 -1 549 - 4.5000000000000000e+00 -2 -3 550 5.2500000000000000e+01 - - -8.9162200689315796e-01 2.8073275089263916e-01 - 9.8183512687683105e-02 -7.3680752515792847e-01 - <_> - 1.4583820343017578e+01 - - 1 2 551 1.0500000000000000e+01 0 -1 552 10. -2 -3 553 - 9.0500000000000000e+01 - - -8.9265322685241699e-01 2.6653656363487244e-01 - -4.8498126864433289e-01 4.9194815754890442e-01 - <_> - 1.4590086936950684e+01 - - 1 2 554 1.4075000000000000e+03 0 -1 555 - 8.5000000000000000e+00 -2 -3 556 2.2350000000000000e+02 - - 7.2318482398986816e-01 -6.5714889764785767e-01 - 1.9554860889911652e-02 7.8212785720825195e-01 - <_> - 1.4370420455932617e+01 - - 1 2 557 1.3055000000000000e+03 0 -1 558 - 6.3615000000000000e+03 -2 -3 559 5.5050000000000000e+02 - - 6.6717378795146942e-02 7.7986842393875122e-01 - 4.8897069692611694e-01 -4.9088051915168762e-01 - <_> - 1.4557469367980957e+01 - - 1 2 560 2.0500000000000000e+01 0 -1 561 - 1.9500000000000000e+01 -2 -3 562 7.5000000000000000e+00 - - -6.0846841335296631e-01 7.7918326854705811e-01 - 4.8263064026832581e-01 -1.0205705463886261e-01 - <_> - 1.4732933044433594e+01 - - 1 2 563 9.5000000000000000e+00 0 -1 564 - 5.0000000000000000e-01 -2 -3 565 4.5000000000000000e+00 - - -8.2908272743225098e-01 4.2271518707275391e-01 - 3.5304966568946838e-01 -3.6941051483154297e-01 - <_> - 1.4693087577819824e+01 - - 1 2 566 1.7250000000000000e+02 0 -1 567 59. -2 -3 568 - 1.1475000000000000e+03 - - 1.8885573744773865e-01 -5.3026914596557617e-01 - 3.7803548574447632e-01 -4.6766680479049683e-01 - <_> - 1.4745432853698730e+01 - - 1 2 569 1.3495000000000000e+03 0 -1 570 - 1.8257500000000000e+04 -2 -3 571 2.3425000000000000e+03 - - 6.3086611032485962e-01 -8.6466968059539795e-01 - -5.3896957635879517e-01 5.2345264703035355e-02 - <_> - 1.4932119369506836e+01 - - 1 2 572 2.2500000000000000e+01 0 -1 573 - 1.5000000000000000e+00 -2 -3 574 201. - - 3.3922508358955383e-01 -2.9905751347541809e-01 - 6.2781113386154175e-01 -6.2289994955062866e-01 - <_> - 1.4913761138916016e+01 - - 1 2 575 5.5000000000000000e+00 0 -1 576 - 2.3500000000000000e+01 -2 -3 577 3.1500000000000000e+01 - - -1.2805154547095299e-02 -8.7636989355087280e-01 - 5.5972194671630859e-01 -1.8357984721660614e-02 - <_> - 1.5149147987365723e+01 - - 1 2 578 9.5500000000000000e+01 0 -1 579 - 1.7500000000000000e+01 -2 -3 580 2.3500000000000000e+01 - - 3.1609076261520386e-01 -7.7603405714035034e-01 - -5.4710090160369873e-01 2.3538668453693390e-01 - <_> - 1.5329943656921387e+01 - - 1 2 581 6.5000000000000000e+00 0 -1 582 - 1.2500000000000000e+01 -2 -3 583 1.1050000000000000e+02 - - -6.9671869277954102e-01 4.9136134982109070e-01 - -4.6433421969413757e-01 2.6395168900489807e-01 - <_> - 1.5564647674560547e+01 - - 1 2 584 5.6215000000000000e+03 0 -1 585 - 1.2250000000000000e+02 -2 -3 586 2.3500000000000000e+01 - - 2.3470385372638702e-01 -3.8976871967315674e-01 - -7.1197110414505005e-01 8.2057034969329834e-01 - <_> - 1.5355414390563965e+01 - - 1 2 587 38. 0 -1 588 5.0000000000000000e-01 -2 -3 589 538. - - 1.3751998543739319e-01 -5.2037465572357178e-01 - -5.0987344980239868e-01 4.1290232539176941e-01 - <_> - 1.5045125007629395e+01 - - 1 2 590 1.5645000000000000e+03 0 -1 591 - 5.4325000000000000e+03 -2 -3 592 1.2175000000000000e+03 - - -5.2137178182601929e-01 8.4993147850036621e-01 - -3.6553221940994263e-01 1.5015892684459686e-01 - <_> - 1.5401144027709961e+01 - - 1 2 593 4.9850000000000000e+02 0 -1 594 - 7.4750000000000000e+02 -2 -3 595 1.1765000000000000e+03 - - -6.4674472808837891e-01 3.5601863265037537e-01 - 4.2863798141479492e-01 -5.4054826498031616e-01 - <_> - 1.5869146347045898e+01 - - 1 2 596 1.7500000000000000e+01 0 -1 597 - 1.4500000000000000e+01 -2 -3 598 1.5500000000000000e+01 - - -6.3737052679061890e-01 4.6800240874290466e-01 - 2.9216369986534119e-01 -4.2118266224861145e-01 - <_> - 1.5621976852416992e+01 - - 1 2 599 1.2028050000000000e+05 0 -1 600 - 5.0000000000000000e-01 -2 -3 601 1.6150000000000000e+02 - - 5.1389163732528687e-01 -9.5765459537506104e-01 - -2.4716944992542267e-01 3.0435198545455933e-01 - <_> - 1.5864768028259277e+01 - - 1 2 602 805. 0 -1 603 9.9500000000000000e+01 -2 -3 604 142. - - 2.4279133975505829e-01 -5.3714054822921753e-01 - -7.2764933109283447e-01 9.6386188268661499e-01 - <_> - 1.6094741821289062e+01 - - 1 2 605 1.3500000000000000e+01 0 -1 606 - 3.8500000000000000e+01 -2 -3 607 6.3500000000000000e+01 - - -6.6710120439529419e-01 6.3659375905990601e-01 - 5.6683868169784546e-01 -7.7470704913139343e-02 - <_> - 1.6352821350097656e+01 - - 1 2 608 2.4500000000000000e+01 0 -1 609 321. -2 -3 610 - 2.1500000000000000e+01 - - 3.7493336200714111e-01 -4.8655620217323303e-01 - -3.4665739536285400e-01 4.6393311023712158e-01 - <_> - 1.6565885543823242e+01 - - 1 2 611 99. 0 -1 612 2.7500000000000000e+01 -2 -3 613 18. - - -4.0105590224266052e-01 2.1306316554546356e-01 - 9.1738814115524292e-01 -9.6910119056701660e-01 - <_> - 1.6171833038330078e+01 - - 1 2 614 6.2500000000000000e+01 0 -1 615 850. -2 -3 616 - 6.4350000000000000e+02 - - 3.9383631944656372e-01 -3.4801158308982849e-01 - -5.9990471601486206e-01 2.6293095946311951e-01 - <_> - 1.6745443344116211e+01 - - 1 2 617 1.2715000000000000e+03 0 -1 618 - 4.5000000000000000e+00 -2 -3 619 1.0584500000000000e+04 - - 3.5729202628135681e-01 -3.7123405933380127e-01 - 5.7361000776290894e-01 -7.0969957113265991e-01 - <_> - 1.6956495285034180e+01 - - 1 2 620 3.6500000000000000e+01 0 -1 621 - 1.5000000000000000e+00 -2 -3 622 3.2500000000000000e+01 - - 4.9200624227523804e-01 -8.8115519285202026e-01 - -6.2640070915222168e-01 2.1105219423770905e-01 - <_> - 1.6578645706176758e+01 - - 1 2 623 5.5850000000000000e+02 0 -1 624 - 1.2405000000000000e+03 -2 -3 625 6.2065000000000000e+03 - - -3.0536270141601562e-01 5.6700426340103149e-01 - 5.8548355102539062e-01 -3.8756856322288513e-01 - <_> - 1.6797395706176758e+01 - - 1 2 626 6.3500000000000000e+01 0 -1 627 - 2.6050000000000000e+02 -2 -3 628 3.4035000000000000e+03 - - 2.1875059604644775e-01 -8.0542641878128052e-01 - 7.2240287065505981e-01 -7.4785083532333374e-01 - <_> - 1.7109027862548828e+01 - - 1 2 629 3.8500000000000000e+01 0 -1 630 - 8.5000000000000000e+00 -2 -3 631 6.5000000000000000e+00 - - 6.9990634918212891e-01 -6.7117756605148315e-01 - 5.0323921442031860e-01 -9.7235314548015594e-02 - <_> - 1.7138694763183594e+01 - - 1 2 632 2.2500000000000000e+01 0 -1 633 - 3.5000000000000000e+00 -2 -3 634 2.5850000000000000e+02 - - 2.9667703434824944e-02 -6.7911773920059204e-01 - -3.2311308383941650e-01 3.8892340660095215e-01 - <_> - 1.7337394714355469e+01 - - 1 2 635 1.5450000000000000e+02 0 -1 636 - 2.5000000000000000e+00 -2 -3 637 3.1450000000000000e+02 - - -7.9533338546752930e-01 1.9869966804981232e-01 - -6.8889272212982178e-01 6.1526125669479370e-01 - <_> - 1.7321151733398438e+01 - - 1 2 638 1.0500000000000000e+01 0 -1 639 36. -2 -3 640 - 2.1500000000000000e+01 - - -8.3758604526519775e-01 3.5460218787193298e-01 - 2.2363138198852539e-01 -5.2678769826889038e-01 - <_> - 1.7182849884033203e+01 - - 1 2 641 4.6085000000000000e+03 0 -1 642 - 5.8500000000000000e+01 -2 -3 643 1.9495000000000000e+03 - - -7.5954502820968628e-01 4.3844437599182129e-01 - 5.2219676971435547e-01 -1.3830167055130005e-01 - <_> - 1.6850194931030273e+01 - - 1 2 644 1.5000000000000000e+00 0 -1 645 - 5.3500000000000000e+01 -2 -3 646 5.0000000000000000e-01 - - -3.6336588859558105e-01 3.9829358458518982e-01 - 1.3566142320632935e-01 -5.0935441255569458e-01 - <_> - 1.7548809051513672e+01 - - 1 2 647 5.0000000000000000e-01 0 -1 648 - 4.5000000000000000e+00 -2 -3 649 4.8150000000000000e+02 - - -6.3685965538024902e-01 6.9861376285552979e-01 - -2.4660472571849823e-01 5.1089668273925781e-01 - <_> - 1.7800493240356445e+01 - - 1 2 650 8.4115000000000000e+03 0 -1 651 - 3.5000000000000000e+00 -2 -3 652 1.0500000000000000e+01 - - -4.2067098617553711e-01 2.5168481469154358e-01 - 3.3256745338439941e-01 -8.4237796068191528e-01 - <_> - 1.7848138809204102e+01 - - 1 2 653 1.0500000000000000e+01 0 -1 654 69. -2 -3 655 - 9.5500000000000000e+01 - - -6.9294911623001099e-01 4.2984691262245178e-01 - -6.0193759202957153e-01 4.7644726932048798e-02 - <_> - 1.7507314682006836e+01 - - 1 2 656 8.5000000000000000e+00 0 -1 657 - 8.5000000000000000e+00 -2 -3 658 6.4500000000000000e+01 - - -1. 5.8663016557693481e-01 -3.4082308411598206e-01 - 3.3277565240859985e-01 - <_> - 1.7846509933471680e+01 - - 1 2 659 6.9500000000000000e+01 0 -1 660 - 1.5500000000000000e+01 -2 -3 661 1.5000000000000000e+00 - - 3.3919540047645569e-01 -2.3123474419116974e-01 - -6.8450891971588135e-01 1.9382451474666595e-01 - <_> - 1.7992757797241211e+01 - - 1 2 662 1.2135000000000000e+03 0 -1 663 - 5.5000000000000000e+00 -2 -3 664 9912. - - 1.4624653756618500e-01 -5.0702661275863647e-01 - 5.2294051647186279e-01 -3.3612698316574097e-01 - <_> - 1.8306097030639648e+01 - - 1 2 665 1.1150000000000000e+02 0 -1 666 - 2.9500000000000000e+01 -2 -3 667 131. - - 2.2407530248165131e-01 -4.9484744668006897e-01 - 4.4897791743278503e-01 -5.9033888578414917e-01 - <_> - 1.8481115341186523e+01 - - 1 2 668 5.4500000000000000e+01 0 -1 669 - 4.5000000000000000e+00 -2 -3 670 1.0450000000000000e+02 - - 9.0135312080383301e-01 -8.8288795948028564e-01 - 1.7501948773860931e-01 -5.7581090927124023e-01 - <_> - 1.8067760467529297e+01 - - 1 2 671 3.3500000000000000e+01 0 -1 672 - 5.0000000000000000e-01 -2 -3 673 9.3500000000000000e+01 - - 3.3020740747451782e-01 -5.1798826456069946e-01 - -4.4331407546997070e-01 3.4977889060974121e-01 - <_> - 1.8271715164184570e+01 - - 1 2 674 1.6950000000000000e+02 0 -1 675 - 5.5000000000000000e+00 -2 -3 676 1.5850000000000000e+02 - - -7.4128860235214233e-01 2.0395421981811523e-01 - -6.4517414569854736e-01 1. - <_> - 1.8107772827148438e+01 - - 1 2 677 3.4335000000000000e+03 0 -1 678 - 6.8955000000000000e+03 -2 -3 679 8.2335000000000000e+03 - - -1.0244774073362350e-01 7.3749846220016479e-01 - -4.6216171979904175e-01 7.2175997495651245e-01 - <_> - 1.8459823608398438e+01 - - 1 2 680 4.5000000000000000e+00 0 -1 681 149. -2 -3 682 - 3.5000000000000000e+00 - - -8.7881535291671753e-01 3.5205116868019104e-01 - 2.8036254644393921e-01 -4.4955471158027649e-01 - <_> - 1.8034639358520508e+01 - - 1 2 683 9.2500000000000000e+01 0 -1 684 - 6.0500000000000000e+01 -2 -3 685 1.0795000000000000e+03 - - 3.0652499198913574e-01 -4.2518511414527893e-01 - 4.2748662829399109e-01 -7.5712633132934570e-01 - <_> - 1.8265748977661133e+01 - - 1 2 686 4137. 0 -1 687 4.5000000000000000e+00 -2 -3 688 - 2.2500000000000000e+01 - - 2.6524448394775391e-01 -8.7384039163589478e-01 - 2.3110976815223694e-01 -4.6121290326118469e-01 - <_> - 1.8894989013671875e+01 - - 1 2 689 8.2650000000000000e+02 0 -1 690 - 3.0650000000000000e+02 -2 -3 691 5.6025000000000000e+03 - - -3.5010933876037598e-01 4.3205916881561279e-01 - 6.2924057245254517e-01 -4.4751787185668945e-01 - <_> - 1.9186059951782227e+01 - - 1 2 692 1.1500000000000000e+01 0 -1 693 10537. -2 -3 694 - 2.8500000000000000e+01 - - 7.5397258996963501e-01 -8.4067875146865845e-01 - 2.9107019305229187e-01 -2.9084861278533936e-01 - <_> - 1.9097457885742188e+01 - - 1 2 695 5.0000000000000000e-01 0 -1 696 - 2.3365000000000000e+03 -2 -3 697 53. - - -2.0022928714752197e-01 5.5956262350082397e-01 - -3.5728842020034790e-01 6.0947358608245850e-01 - <_> - 1.9231519699096680e+01 - - 1 2 698 2.9250000000000000e+02 0 -1 699 7389. -2 -3 700 - 7.1615000000000000e+03 - - 4.6205502748489380e-01 -3.7696495652198792e-01 - -5.6401371955871582e-01 1.2572592496871948e-01 - <_> - 1.9182878494262695e+01 - - 1 2 701 1.5000000000000000e+00 0 -1 702 2558. -2 -3 703 - 2.5000000000000000e+00 - - 5.7061773538589478e-01 -8.8573408126831055e-01 - 5.6795483827590942e-01 -4.8640340566635132e-02 - <_> - 1.9205448150634766e+01 - - 1 2 704 6.7250000000000000e+02 0 -1 705 - 4.5185000000000000e+03 -2 -3 706 1.6950000000000000e+02 - - 2.2569710388779640e-02 -5.9597754478454590e-01 -1. - 9.1055244207382202e-01 - <_> - 1.9722917556762695e+01 - - 1 2 707 5.2150000000000000e+02 0 -1 708 - 2.2500000000000000e+01 -2 -3 709 22. - - -3.8346976041793823e-01 1.7193076014518738e-01 - -7.7268058061599731e-01 5.1746833324432373e-01 - <_> - 1.9223962783813477e+01 - - 1 2 710 1.6450000000000000e+02 0 -1 711 - 6.0500000000000000e+01 -2 -3 712 4.4500000000000000e+01 - - 2.2410076856613159e-01 -6.7257648706436157e-01 - -6.6855657100677490e-01 8.4185588359832764e-01 - <_> - 1.9324115753173828e+01 - - 1 2 713 3.1500000000000000e+01 0 -1 714 885. -2 -3 715 458. - - 3.4352478384971619e-01 -6.2290155887603760e-01 - -1.5769523382186890e-01 4.6984970569610596e-01 - <_> - 1.9645074844360352e+01 - - 1 2 716 1.5000000000000000e+00 0 -1 717 - 2.7500000000000000e+01 -2 -3 718 5.0000000000000000e-01 - - -1.5117371082305908e-01 5.1611447334289551e-01 - 3.8312494754791260e-01 -4.8121353983879089e-01 - <_> - 1.9339143753051758e+01 - - 1 2 719 355. 0 -1 720 5.5000000000000000e+00 -2 -3 721 - 4.1500000000000000e+01 - - -3.9813804626464844e-01 2.2346007823944092e-01 1. - -8.0484783649444580e-01 - <_> - 1.9826204299926758e+01 - - 1 2 722 5.0000000000000000e-01 0 -1 723 - 1.4145000000000000e+03 -2 -3 724 2.2500000000000000e+01 - - 4.8705908656120300e-01 -4.7939151525497437e-01 - -4.1103795170783997e-01 3.4255331754684448e-01 - <_> - 2.0040077209472656e+01 - - 1 2 725 1.5585000000000000e+03 0 -1 726 - 7.5450000000000000e+02 -2 -3 727 7.0250000000000000e+02 - - -6.1711019277572632e-01 2.1387414634227753e-01 - 8.2314563915133476e-03 -8.8682103157043457e-01 - <_> - 1.9832237243652344e+01 - - 1 2 728 3.7250000000000000e+02 0 -1 729 - 1.2500000000000000e+01 -2 -3 730 5.0000000000000000e-01 - - 6.4650267362594604e-01 -6.3438403606414795e-01 - 8.2046084105968475e-02 -4.0398535132408142e-01 - <_> - 2.0015359878540039e+01 - - 1 2 731 616. 0 -1 732 5.3950000000000000e+02 -2 -3 733 - 1.6500000000000000e+01 - - 8.7944704294204712e-01 -8.7063318490982056e-01 - -7.1043938398361206e-01 1.8312272429466248e-01 - <_> - 1.9969459533691406e+01 - - 1 2 734 5.5500000000000000e+01 0 -1 735 - 1.8500000000000000e+01 -2 -3 736 463. - - -4.5961013436317444e-01 5.2103579044342041e-01 - -6.5900236368179321e-01 -4.5900702476501465e-02 - <_> - 1.9850994110107422e+01 - - 1 2 737 1.5000000000000000e+00 0 -1 738 - 3.5500000000000000e+01 -2 -3 739 1.3995000000000000e+03 - - -4.4971930980682373e-01 5.4433470964431763e-01 - 1.3450010120868683e-01 -4.4755488634109497e-01 - <_> - 1.9611703872680664e+01 - - 1 2 740 1.2185000000000000e+03 0 -1 741 - 2.5000000000000000e+00 -2 -3 742 2.0500000000000000e+01 - - -1.1004138737916946e-02 -6.4876526594161987e-01 - 5.7901018857955933e-01 -2.3929107189178467e-01 - <_> - 1.9846769332885742e+01 - - 1 2 743 9.5000000000000000e+00 0 -1 744 26. -2 -3 745 - 7.5000000000000000e+00 - - 2.8899505734443665e-01 -7.0432722568511963e-01 - 2.3506632447242737e-01 -6.7175412178039551e-01 - <_> - 1.9991693496704102e+01 - - 1 2 746 5.5000000000000000e+00 0 -1 747 119. -2 -3 748 - 1.2950000000000000e+02 - - 1. -9.5935773849487305e-01 1.4492283761501312e-01 - -6.2346059083938599e-01 - <_> - 2.0697137832641602e+01 - - 1 2 749 108. 0 -1 750 5.5000000000000000e+00 -2 -3 751 - 6.0050000000000000e+02 - - 2.0598402619361877e-01 -3.1419786810874939e-01 - 7.0544409751892090e-01 -9.1675537824630737e-01 - <_> - 2.0869754791259766e+01 - - 1 2 752 2.1500000000000000e+01 0 -1 753 - 8.5000000000000000e+00 -2 -3 754 5.2500000000000000e+01 - - -9.2930352687835693e-01 1. 1.7261737585067749e-01 - -7.1494102478027344e-01 - <_> - 2.0861036300659180e+01 - - 1 2 755 5.0000000000000000e-01 0 -1 756 - 6.5000000000000000e+00 -2 -3 757 36104. - - -9.8012816905975342e-01 3.0874124169349670e-01 - -4.9350947141647339e-01 1.4333745837211609e-01 - <_> - 2.0605552673339844e+01 - - 1 2 758 5.4500000000000000e+01 0 -1 759 - 5.6350000000000000e+02 -2 -3 760 1.5625000000000000e+03 - - 2.8180310130119324e-01 -3.0899211764335632e-01 - 6.7988240718841553e-01 -8.8957315683364868e-01 - <_> - 2.0792449951171875e+01 - - 1 2 761 7.4500000000000000e+01 0 -1 762 - 2.1350000000000000e+02 -2 -3 763 4.5000000000000000e+00 - - 7.5075513124465942e-01 -8.8623046875000000e-01 - 4.6418187022209167e-01 -9.8970189690589905e-02 - <_> - 2.0991796493530273e+01 - - 1 2 764 3985. 0 -1 765 5.5000000000000000e+00 -2 -3 766 - 5.5000000000000000e+00 - - 3.1011736392974854e-01 -2.7613282203674316e-01 -1. - 8.9613044261932373e-01 - <_> - 2.1320064544677734e+01 - - 1 2 767 2.8500000000000000e+01 0 -1 768 - 2.6250000000000000e+02 -2 -3 769 2.6500000000000000e+01 - - 7.0724177360534668e-01 -4.7540894150733948e-01 - 3.2826820015907288e-01 -6.3711547851562500e-01 - <_> - 2.1143175125122070e+01 - - 1 2 770 1.7500000000000000e+01 0 -1 771 - 5.8500000000000000e+01 -2 -3 772 7704. - - -6.2765136361122131e-02 4.9819609522819519e-01 - 1.8703785538673401e-01 -9.2927688360214233e-01 - <_> - 2.1136123657226562e+01 - - 1 2 773 4.5000000000000000e+00 0 -1 774 - 1.5000000000000000e+00 -2 -3 775 6.3500000000000000e+01 - - -8.5042881965637207e-01 3.7720718979835510e-01 - -6.6263186931610107e-01 -7.0531466044485569e-03 - <_> - 2.0957967758178711e+01 - - 1 2 776 2.3355000000000000e+03 0 -1 777 - 1.6655000000000000e+03 -2 -3 778 7.7950000000000000e+02 - - -5.8912044763565063e-01 7.2663074731826782e-01 - 7.1329838037490845e-01 -9.2555418610572815e-02 - <_> - 2.1328319549560547e+01 - - 1 2 779 4.5000000000000000e+00 0 -1 780 - 1.7500000000000000e+01 -2 -3 781 116. - - 5.8393400907516479e-01 -5.6582391262054443e-01 - -7.0427477359771729e-01 -3.2516807317733765e-02 - <_> - 2.1190340042114258e+01 - - 1 2 782 5.0000000000000000e-01 0 -1 783 - 5.5000000000000000e+00 -2 -3 784 2.2500000000000000e+01 - - -7.9387390613555908e-01 4.3818581104278564e-01 - -4.3716219067573547e-01 2.7609312534332275e-01 - <_> - 2.1414947509765625e+01 - - 1 2 785 1.7500000000000000e+01 0 -1 786 - 2.0500000000000000e+01 -2 -3 787 3.4500000000000000e+01 - - -3.2550397515296936e-01 2.9646944999694824e-01 - 3.9801727980375290e-02 -8.1744748353958130e-01 - <_> - 2.1027912139892578e+01 - - 1 2 788 3.5000000000000000e+00 0 -1 789 - 1.0500000000000000e+01 -2 -3 790 3.0015000000000000e+03 - - -5.8203905820846558e-01 3.9097124338150024e-01 - 4.4877341389656067e-01 -4.5889684557914734e-01 - <_> - 2.1614578247070312e+01 - - 1 2 791 1.2545000000000000e+03 0 -1 792 - 5.0000000000000000e-01 -2 -3 793 21. - - 3.3954218029975891e-01 -3.9357089996337891e-01 - -7.9993861913681030e-01 5.8666568994522095e-01 - <_> - 2.2001014709472656e+01 - - 1 2 794 1.5495000000000000e+03 0 -1 795 751. -2 -3 796 - 1.4500000000000000e+01 - - -6.1558878421783447e-01 4.7567668557167053e-01 - 3.8643726706504822e-01 -4.9177539348602295e-01 - <_> - 2.2125329971313477e+01 - - 1 2 797 3.5500000000000000e+01 0 -1 798 - 1.0450000000000000e+02 -2 -3 799 1.2500000000000000e+01 - - 1.7887133359909058e-01 -8.5177820920944214e-01 - 4.1519433259963989e-01 -1.6076141595840454e-01 - <_> - 2.2388074874877930e+01 - - 1 2 800 550. 0 -1 801 3445. -2 -3 802 2.1850000000000000e+02 - - 1. -8.8448894023895264e-01 -2.4786205589771271e-01 - 2.6274520158767700e-01 - <_> - 2.2539171218872070e+01 - - 1 2 803 116554. 0 -1 804 1.7350000000000000e+02 -2 -3 805 - 8.9500000000000000e+01 - - 2.4936345219612122e-01 -6.2610012292861938e-01 - -6.6242986917495728e-01 4.0655055642127991e-01 - <_> - 2.2177883148193359e+01 - - 1 2 806 4.5000000000000000e+00 0 -1 807 - 5.0000000000000000e-01 -2 -3 808 3.5065000000000000e+03 - - -7.4715948104858398e-01 3.9860600233078003e-01 - -5.3111910820007324e-01 1.2362924218177795e-01 - <_> - 2.2504861831665039e+01 - - 1 2 809 1.4865000000000000e+03 0 -1 810 - 5.0000000000000000e-01 -2 -3 811 29. - - 1.3726322352886200e-01 -6.5520441532135010e-01 - -7.5685930252075195e-01 3.2698005437850952e-01 - <_> - 2.2686376571655273e+01 - - 1 2 812 5.2500000000000000e+01 0 -1 813 - 2.6500000000000000e+01 -2 -3 814 3.0500000000000000e+01 - - -1.5744365751743317e-01 5.0805997848510742e-01 - -7.4109727144241333e-01 3.1853440403938293e-01 - <_> - 2.2791370391845703e+01 - - 1 2 815 2.3450000000000000e+02 0 -1 816 - 2.5000000000000000e+00 -2 -3 817 147638. - - -8.8153153657913208e-02 5.4080992937088013e-01 - 4.0426537394523621e-01 -6.1521077156066895e-01 - <_> - 2.2746583938598633e+01 - - 1 2 818 2.2500000000000000e+01 0 -1 819 - 3.7650000000000000e+02 -2 -3 820 3.5000000000000000e+00 - - 8.3446598052978516e-01 -8.2142156362533569e-01 - 6.4422589540481567e-01 -4.4787917286157608e-02 - <_> - 2.2948705673217773e+01 - - 1 2 821 1.0500000000000000e+01 0 -1 822 201. -2 -3 823 - 6.7500000000000000e+01 - - -2.8939151763916016e-01 3.3829051256179810e-01 - -5.8153116703033447e-01 3.8105338811874390e-01 - <_> - 2.2919631958007812e+01 - - 1 2 824 4.5000000000000000e+00 0 -1 825 - 5.2075000000000000e+03 -2 -3 826 3.8500000000000000e+01 - - 6.2978500127792358e-01 -1.7962990701198578e-01 - -6.0869598388671875e-01 -2.9075229540467262e-02 - <_> - 2.3112272262573242e+01 - - 1 2 827 456. 0 -1 828 2.1500000000000000e+01 -2 -3 829 271. - - -6.7311352491378784e-01 1.9264096021652222e-01 - -7.6656156778335571e-01 7.5126051902770996e-01 - <_> - 2.3314619064331055e+01 - - 1 2 830 9.5000000000000000e+00 0 -1 831 62. -2 -3 832 - 1.0250000000000000e+02 - - 5.3542816638946533e-01 -7.8225767612457275e-01 - -4.1664305329322815e-01 2.2309158742427826e-01 - <_> - 2.3092792510986328e+01 - - 1 2 833 1.6245000000000000e+03 0 -1 834 - 2.1405000000000000e+03 -2 -3 835 2.3500000000000000e+01 - - 7.6887971162796021e-01 -7.8312724828720093e-01 - 3.3704435825347900e-01 -2.2182606160640717e-01 - <_> - 2.3098850250244141e+01 - - 1 2 836 5.7500000000000000e+01 0 -1 837 30. -2 -3 838 - 1.1750000000000000e+02 - - -3.9047434926033020e-01 7.0053535699844360e-01 - 6.3777458667755127e-01 -1.5085510909557343e-01 - <_> - 2.3334737777709961e+01 - - 1 2 839 1.9350000000000000e+02 0 -1 840 20715. -2 -3 841 - 3.5000000000000000e+00 - - -1.6165058314800262e-01 5.8560174703598022e-01 - 6.2762081623077393e-02 -5.0060212612152100e-01 - <_> - 2.3548194885253906e+01 - - 1 2 842 1.5500000000000000e+01 0 -1 843 - 4.5000000000000000e+00 -2 -3 844 318. - - 6.7111068964004517e-01 -8.1105804443359375e-01 - 2.1345792710781097e-01 -6.4082610607147217e-01 - <_> - 2.3465780258178711e+01 - - 1 2 845 1.5000000000000000e+00 0 -1 846 - 9.6250000000000000e+02 -2 -3 847 1.0500000000000000e+01 - - 3.3311456441879272e-01 -7.9367685317993164e-01 - 5.8400928974151611e-01 -8.2414992153644562e-02 - <_> - 2.3698833465576172e+01 - - 1 2 848 2.5750000000000000e+02 0 -1 849 - 2.0622500000000000e+04 -2 -3 850 133. - - -2.1840496361255646e-01 6.1215102672576904e-01 - 7.2797334194183350e-01 -7.8106528520584106e-01 - <_> - 2.4240703582763672e+01 - - 1 2 851 62616. 0 -1 852 5.1750000000000000e+02 -2 -3 853 - 2.0985000000000000e+03 - - -7.3088161647319794e-02 5.4187005758285522e-01 - -9.7861820459365845e-01 8.4708303213119507e-01 - <_> - 2.4200925827026367e+01 - - 1 2 854 13008. 0 -1 855 1571. -2 -3 856 45. - - 6.6456145048141479e-01 -3.9776403456926346e-02 - -8.6307746171951294e-01 1. - <_> - 2.4082960128784180e+01 - - 1 2 857 3.5000000000000000e+00 0 -1 858 - 9.5000000000000000e+00 -2 -3 859 3.5000000000000000e+00 - - -1. 1. 2.9574161767959595e-01 -2.3182141780853271e-01 - <_> - 2.4084737777709961e+01 - - 1 2 860 3.7500000000000000e+01 0 -1 861 245. -2 -3 862 - 7.5000000000000000e+00 - - 4.1369399428367615e-01 -4.1193068027496338e-01 - 5.4411876201629639e-01 -1.9174022972583771e-01 - <_> - 2.3971153259277344e+01 - - 1 2 863 7.2500000000000000e+01 0 -1 864 - 2.5500000000000000e+01 -2 -3 865 5620. - - 4.0953439474105835e-01 -7.1287387609481812e-01 - 2.9135236144065857e-01 -4.4266882538795471e-01 - <_> - 2.4037570953369141e+01 - - 1 2 866 2.4500000000000000e+01 0 -1 867 - 2.1500000000000000e+01 -2 -3 868 1.3850000000000000e+02 - - -6.6728180646896362e-01 8.0503904819488525e-01 - 2.9000800848007202e-01 -3.3851844072341919e-01 - <_> - 2.4266254425048828e+01 - - 1 2 869 5.0000000000000000e-01 0 -1 870 - 1.7250000000000000e+02 -2 -3 871 2.2350000000000000e+02 - - 4.8248341679573059e-01 -3.8941776752471924e-01 - -3.1365787982940674e-01 5.1915067434310913e-01 - <_> - 2.4528257369995117e+01 - - 1 2 872 4.3500000000000000e+01 0 -1 873 38. -2 -3 874 - 1.8500000000000000e+01 - - 8.9310199022293091e-02 -7.2979074716567993e-01 - -8.7608027458190918e-01 2.6200246810913086e-01 - <_> - 2.4948534011840820e+01 - - 1 2 875 1.7500000000000000e+01 0 -1 876 - 5.0000000000000000e-01 -2 -3 877 1.9050000000000000e+02 - - 1.2763984501361847e-01 -6.1743724346160889e-01 - 4.2027613520622253e-01 -3.6524018645286560e-01 - <_> - 2.4699710845947266e+01 - - 1 2 878 1.5500000000000000e+01 0 -1 879 - 9.5000000000000000e+00 -2 -3 880 1.1950000000000000e+02 - - -7.6706290245056152e-01 4.8537570238113403e-01 - -5.4855662584304810e-01 8.2174651324748993e-02 - <_> - 2.4984062194824219e+01 - - 1 2 881 1.5000000000000000e+00 0 -1 882 - 1.4500000000000000e+01 -2 -3 883 7.4500000000000000e+01 - - -9.5929491519927979e-01 2.8435263037681580e-01 - -5.6600302457809448e-01 1.5080869197845459e-01 - <_> - 2.5305467605590820e+01 - - 1 2 884 1.5000000000000000e+00 0 -1 885 - 1.4500000000000000e+01 -2 -3 886 5.2150000000000000e+02 - - 3.2140514254570007e-01 -7.5512856245040894e-01 - -5.6036186218261719e-01 1.1670445650815964e-01 - <_> - 2.5274513244628906e+01 - - 1 2 887 1.9500000000000000e+01 0 -1 888 - 1.0650000000000000e+02 -2 -3 889 8.4050000000000000e+02 - - -8.7158387899398804e-01 4.3117862939834595e-01 - 1.4426548779010773e-01 -4.6586552262306213e-01 - <_> - 2.4883895874023438e+01 - - 1 2 890 3.0650000000000000e+02 0 -1 891 - 5.0000000000000000e-01 -2 -3 892 4.5500000000000000e+01 - - 1.8699711561203003e-01 -3.9061647653579712e-01 - -7.0082974433898926e-01 6.7297667264938354e-01 - <_> - 2.5504806518554688e+01 - - 1 2 893 5.0000000000000000e-01 0 -1 894 - 3.1151500000000000e+04 -2 -3 895 500. - - 6.5120726823806763e-01 -4.1004878282546997e-01 - -4.7606337070465088e-01 9.5995731651782990e-02 - <_> - 2.5152439117431641e+01 - - 1 2 896 5.5000000000000000e+00 0 -1 897 - 1.9500000000000000e+01 -2 -3 898 5.9500000000000000e+01 - - -1.2321064621210098e-01 6.1841166019439697e-01 - -3.6375361680984497e-01 5.2369672060012817e-01 - <_> - 2.5155344009399414e+01 - - 1 2 899 1.8674500000000000e+04 0 -1 900 - 2.1850000000000000e+02 -2 -3 901 8562. - - -1.6005823388695717e-02 6.5699905157089233e-01 - -9.5848602056503296e-01 5.1249152421951294e-01 - <_> - 2.5483896255493164e+01 - - 1 2 902 9.1500000000000000e+01 0 -1 903 - 5.4500000000000000e+01 -2 -3 904 1673. - - -1.8930622935295105e-01 3.2855287194252014e-01 - 3.8335686922073364e-01 -9.2048138380050659e-01 - <_> - 2.5274023056030273e+01 - - 1 2 905 9.0500000000000000e+01 0 -1 906 - 2.9500000000000000e+01 -2 -3 907 161. - - 1.9278690218925476e-01 -4.3163070082664490e-01 - -8.2271754741668701e-01 6.6138559579849243e-01 - <_> - 2.5197338104248047e+01 - - 1 2 908 6.0500000000000000e+01 0 -1 909 - 3.5000000000000000e+00 -2 -3 910 2.1500000000000000e+01 - - 1.6147840023040771e-01 -7.2664386034011841e-01 - 6.0210800170898438e-01 -7.6684340834617615e-02 - <_> - 2.5375751495361328e+01 - - 1 2 911 1.2500000000000000e+01 0 -1 912 - 1.0500000000000000e+01 -2 -3 913 3.5000000000000000e+00 - - 3.1757584214210510e-01 -9.6368086338043213e-01 - 3.0798566341400146e-01 -2.2424852848052979e-01 - <_> - 2.5239341735839844e+01 - - 1 2 914 2.0500000000000000e+01 0 -1 915 - 5.0000000000000000e-01 -2 -3 916 5.2500000000000000e+01 - - 5.4820358753204346e-01 -2.6598191261291504e-01 - 6.2160044908523560e-01 -6.1119222640991211e-01 - <_> - 2.5769451141357422e+01 - - 1 2 917 8.5000000000000000e+00 0 -1 918 - 3.5000000000000000e+00 -2 -3 919 785. - - -5.2361053228378296e-01 1.3663402758538723e-02 - 5.3010904788970947e-01 -5.6690508127212524e-01 - <_> - 2.6132120132446289e+01 - - 1 2 920 3.5000000000000000e+00 0 -1 921 - 5.5000000000000000e+00 -2 -3 922 2.7500000000000000e+01 - - -3.4756454825401306e-01 6.6776388883590698e-01 - -3.2966667413711548e-01 3.6266979575157166e-01 - <_> - 2.5398084640502930e+01 - - 1 2 923 3.7500000000000000e+01 0 -1 924 - 4.5450000000000000e+02 -2 -3 925 76. - - -5.9789156913757324e-01 2.5262823700904846e-01 - -7.3403567075729370e-01 2.0674343407154083e-01 - <_> - 2.5510837554931641e+01 - - 1 2 926 11321. 0 -1 927 2.5000000000000000e+00 -2 -3 928 - 1.1450000000000000e+02 - - -8.3973264694213867e-01 1.1275193840265274e-01 - -9.1843432188034058e-01 8.7821447849273682e-01 - <_> - 2.6130455017089844e+01 - - 1 2 929 6.5000000000000000e+00 0 -1 930 3083. -2 -3 931 - 3.0875000000000000e+03 - - 4.2603471875190735e-01 -3.6732077598571777e-01 - -4.1711282730102539e-01 6.1961770057678223e-01 - <_> - 2.6262090682983398e+01 - - 1 2 932 17935. 0 -1 933 425. -2 -3 934 - 2.7176500000000000e+04 - - 4.5509326457977295e-01 -6.6757386922836304e-01 - -5.3166776895523071e-01 1.3163578510284424e-01 - <_> - 2.6658596038818359e+01 - - 1 2 935 1.7500000000000000e+01 0 -1 936 - 1.1745000000000000e+03 -2 -3 937 5.0000000000000000e-01 - - 2.5388157367706299e-01 -7.9901087284088135e-01 - 4.5095619559288025e-01 -1.0241491347551346e-01 - <_> - 2.6969305038452148e+01 - - 1 2 938 3.0500000000000000e+01 0 -1 939 - 2.4500000000000000e+01 -2 -3 940 2.2500000000000000e+01 - - 5.1047235727310181e-02 -8.9242154359817505e-01 - 3.1070950627326965e-01 -2.6842564344406128e-01 - <_> - 2.6705583572387695e+01 - - 1 2 941 1.3050000000000000e+02 0 -1 942 - 3.4500000000000000e+01 -2 -3 943 2.2150000000000000e+02 - - -1.1592853814363480e-01 -7.7454018592834473e-01 - 4.5384824275970459e-01 -3.1817260384559631e-01 - <_> - 2.6782285690307617e+01 - - 1 2 944 1.7735000000000000e+03 0 -1 945 - 9.5000000000000000e+00 -2 -3 946 4.5705000000000000e+03 - - -3.9006590843200684e-02 -9.5107847452163696e-01 - -6.5736269950866699e-01 1.7125985026359558e-01 - <_> - 2.7105680465698242e+01 - - 1 2 947 1.7625000000000000e+03 0 -1 948 - 1.3850000000000000e+02 -2 -3 949 1.9750000000000000e+02 - - 3.6351567506790161e-01 -5.5703014135360718e-01 - 1.4079628884792328e-01 -5.2406501770019531e-01 - <_> - 2.7263711929321289e+01 - - 1 2 950 2.5000000000000000e+00 0 -1 951 - 5.1850000000000000e+02 -2 -3 952 1.0500000000000000e+01 - - 6.5141850709915161e-01 -9.1679638624191284e-01 - 2.9593178629875183e-01 -2.6542136073112488e-01 - <_> - 2.6919979095458984e+01 - - 1 2 953 1286. 0 -1 954 5.0500000000000000e+01 -2 -3 955 - 9549. - - 2.3069593310356140e-01 -3.4373316168785095e-01 - 7.6501649618148804e-01 -1.6475467383861542e-01 - <_> - 2.7302589416503906e+01 - - 1 2 956 3.0500000000000000e+01 0 -1 957 - 3.5000000000000000e+00 -2 -3 958 20. - - 4.2295122146606445e-01 -5.0685709714889526e-01 - -6.1503076553344727e-01 3.8261166214942932e-01 - <_> - 2.7030504226684570e+01 - - 1 2 959 1.5000000000000000e+00 0 -1 960 - 4.2500000000000000e+01 -2 -3 961 7879. - - -8.3279174566268921e-01 3.1151020526885986e-01 - 5.7181537151336670e-01 -4.0998581051826477e-01 - <_> - 2.7195131301879883e+01 - - 1 2 962 1.9550000000000000e+02 0 -1 963 - 9.7500000000000000e+01 -2 -3 964 1.7450000000000000e+02 - - 1.7131289839744568e-01 -7.6953160762786865e-01 - -8.5992205142974854e-01 9.4537514448165894e-01 - <_> - 2.7257419586181641e+01 - - 1 2 965 5.1150000000000000e+02 0 -1 966 - 2.3335000000000000e+03 -2 -3 967 37646. - - -5.3452479839324951e-01 5.5600736290216446e-02 - 9.5302796363830566e-01 -8.5994201898574829e-01 - <_> - 2.7456840515136719e+01 - - 1 2 968 2.7500000000000000e+01 0 -1 969 - 4.5000000000000000e+00 -2 -3 970 3.2250000000000000e+02 - - 2.6460289955139160e-01 -3.8417342305183411e-01 - 4.4693005084991455e-01 -8.1004393100738525e-01 - <_> - 2.7806034088134766e+01 - - 1 2 971 2.3500000000000000e+01 0 -1 972 - 7.6500000000000000e+01 -2 -3 973 1.2500000000000000e+01 - - -5.5745208263397217e-01 3.4919399023056030e-01 - 3.5557851195335388e-01 -5.3877633810043335e-01 - <_> - 2.7538705825805664e+01 - - 1 2 974 7.9500000000000000e+01 0 -1 975 - 1.4500000000000000e+01 -2 -3 976 87. - - 2.8678986430168152e-01 -2.9876446723937988e-01 - 8.6640423536300659e-01 -1. - <_> - 2.7824981689453125e+01 - - 1 2 977 2.5550000000000000e+02 0 -1 978 - 4.5000000000000000e+00 -2 -3 979 4.8500000000000000e+01 - - 2.7033209800720215e-01 -5.0700926780700684e-01 - -6.5432757139205933e-01 3.9897635579109192e-01 - <_> - 2.8039585113525391e+01 - - 1 2 980 8.5500000000000000e+01 0 -1 981 - 1.2500000000000000e+01 -2 -3 982 2.1150000000000000e+02 - - -9.3840378522872925e-01 2.1460363268852234e-01 - -7.5958758592605591e-01 3.2656311988830566e-01 - <_> - 2.8358228683471680e+01 - - 1 2 983 2.5000000000000000e+00 0 -1 984 154. -2 -3 985 - 5.5000000000000000e+00 - - 1.8448559939861298e-01 -8.2974767684936523e-01 - 3.1864368915557861e-01 -2.1115814149379730e-01 - <_> - 2.7895002365112305e+01 - - 1 2 986 1.5500000000000000e+01 0 -1 987 3760. -2 -3 988 - 7.4650000000000000e+02 - - 5.6718933582305908e-01 -4.6322652697563171e-01 - -1.5654714405536652e-01 4.8763912916183472e-01 - <_> - 2.8411203384399414e+01 - - 1 2 989 3.6500000000000000e+01 0 -1 990 - 5.5000000000000000e+00 -2 -3 991 177. - - 1.9065493345260620e-01 -4.4433963298797607e-01 - 5.1620143651962280e-01 -6.8428224325180054e-01 - <_> - 2.8243703842163086e+01 - - 1 2 992 2.2550000000000000e+02 0 -1 993 - 1.0702500000000000e+04 -2 -3 994 2.1500000000000000e+01 - - 9.7185559570789337e-02 -8.7033015489578247e-01 - 2.9659673571586609e-01 -4.0642136335372925e-01 - <_> - 2.8063882827758789e+01 - - 1 2 995 1.1500000000000000e+01 0 -1 996 29. -2 -3 997 - 6.5000000000000000e+00 - - -1. 1. 3.6489042639732361e-01 -1.7982187867164612e-01 - <_> - 2.8595172882080078e+01 - - 1 2 998 3.4500000000000000e+01 0 -1 999 - 3.2500000000000000e+01 -2 -3 1000 1.1750000000000000e+02 - - 7.5150117278099060e-02 -5.3011858463287354e-01 - -3.1684866547584534e-01 5.3129112720489502e-01 - <_> - 2.8468202590942383e+01 - - 1 2 1001 1.6628500000000000e+04 0 -1 1002 - 1.0500000000000000e+01 -2 -3 1003 3.3545000000000000e+03 - - 6.4890080690383911e-01 -6.3209486007690430e-01 - 6.6508811712265015e-01 -1.2697088718414307e-01 - <_> - 2.8374160766601562e+01 - - 1 2 1004 8.5000000000000000e+00 0 -1 1005 - 8.5000000000000000e+00 -2 -3 1006 1.5000000000000000e+00 - - 5.2094990015029907e-01 -9.4638687372207642e-01 - 4.4523945450782776e-01 -9.4041898846626282e-02 - <_> - 2.8551000595092773e+01 - - 1 2 1007 3.1950000000000000e+02 0 -1 1008 - 6.6500000000000000e+01 -2 -3 1009 9.5000000000000000e+00 - - 6.6274866461753845e-02 -9.6256363391876221e-01 - -4.5958206057548523e-01 1.7684090137481689e-01 - <_> - 2.8745084762573242e+01 - - 1 2 1010 1.2350000000000000e+02 0 -1 1011 - 5.5000000000000000e+00 -2 -3 1012 2.3500000000000000e+01 - - -8.1710654497146606e-01 1.9408319890499115e-01 - -6.5851712226867676e-01 6.5294885635375977e-01 - <_> - 2.8799137115478516e+01 - - 1 2 1013 1.5000000000000000e+00 0 -1 1014 6367. -2 -3 1015 - 4.7500000000000000e+01 - - -5.7579481601715088e-01 6.5927535295486450e-01 - 3.2614521682262421e-02 -5.5185180902481079e-01 - <_> - 2.9203039169311523e+01 - - 1 2 1016 4.8500000000000000e+01 0 -1 1017 1563. -2 -3 1018 - 174. - - -1.8832503259181976e-01 8.4307962656021118e-01 - 6.7039912939071655e-01 -9.4139146804809570e-01 - <_> - 2.8794641494750977e+01 - - 1 2 1019 3.3355000000000000e+03 0 -1 1020 - 6.6555000000000000e+03 -2 -3 1021 8.7150000000000000e+02 - - -9.0944504737854004e-01 4.4833663105964661e-01 - -4.0839809179306030e-01 1.7850229144096375e-01 - <_> - 2.8677459716796875e+01 - - 1 2 1022 1.2185000000000000e+03 0 -1 1023 - 8.2550000000000000e+02 -2 -3 1024 3.0550000000000000e+02 - - -3.4955474734306335e-01 6.4450144767761230e-01 - 6.0581982135772705e-01 -1.1718237400054932e-01 - <_> - 2.8913532257080078e+01 - - 1 2 1025 2.7500000000000000e+01 0 -1 1026 - 2.7500000000000000e+01 -2 -3 1027 4.3500000000000000e+01 - - -8.5049676895141602e-01 2.3607361316680908e-01 - 7.3098081350326538e-01 -6.9291877746582031e-01 - <_> - 2.9108362197875977e+01 - - 1 2 1028 7.5000000000000000e+00 0 -1 1029 - 9.5000000000000000e+00 -2 -3 1030 4.5000000000000000e+00 - - -8.3998674154281616e-01 3.6129420995712280e-01 - 9.7287259995937347e-02 -5.4456633329391479e-01 - <_> - 2.8601478576660156e+01 - - 1 2 1031 6.9500000000000000e+01 0 -1 1032 3194. -2 -3 1033 - 1194. - - 1.1185812205076218e-01 -5.0688385963439941e-01 - -5.2819758653640747e-01 4.6284502744674683e-01 - <_> - 2.8964368820190430e+01 - - 1 2 1034 2.5000000000000000e+00 0 -1 1035 - 3.5000000000000000e+00 -2 -3 1036 5.5000000000000000e+00 - - -6.3642036914825439e-01 3.6289060115814209e-01 - 7.4139624834060669e-01 -4.1967025399208069e-01 - <_> - 2.9433172225952148e+01 - - 1 2 1037 3.0500000000000000e+01 0 -1 1038 - 5.0000000000000000e-01 -2 -3 1039 7.9500000000000000e+01 - - 3.6465510725975037e-01 -3.9573243260383606e-01 - -6.1006444692611694e-01 4.6880471706390381e-01 - <_> - 2.9406284332275391e+01 - - 1 2 1040 850. 0 -1 1041 8.3500000000000000e+01 -2 -3 1042 - 503. - - -1.3215389847755432e-01 5.3341400623321533e-01 - -6.0456317663192749e-01 1.4337512850761414e-01 - <_> - 2.9681335449218750e+01 - - 1 2 1043 5.0000000000000000e-01 0 -1 1044 - 2.2500000000000000e+01 -2 -3 1045 7.1050000000000000e+02 - - -8.8528215885162354e-02 6.7735338211059570e-01 - -4.3227946758270264e-01 2.7505078911781311e-01 - <_> - 2.9964553833007812e+01 - - 1 2 1046 9.8500000000000000e+01 0 -1 1047 - 3.1500000000000000e+01 -2 -3 1048 2.7650000000000000e+02 - - 2.8321748971939087e-01 -3.9361628890037537e-01 - -8.2609468698501587e-01 2.6064848899841309e-01 - <_> - 2.9945455551147461e+01 - - 1 2 1049 8.7500000000000000e+01 0 -1 1050 - 2.2385000000000000e+03 -2 -3 1051 6.4500000000000000e+01 - - 6.9241017103195190e-01 -1.5301111340522766e-01 - -6.6095316410064697e-01 -1.9096992909908295e-02 - <_> - 3.0012765884399414e+01 - - 1 2 1052 1.2500000000000000e+01 0 -1 1053 - 9.5000000000000000e+00 -2 -3 1054 5.0750000000000000e+02 - - -8.3019262552261353e-01 6.7893797159194946e-01 - -1.2832325696945190e-01 4.3415006995201111e-01 - <_> - 2.9930473327636719e+01 - - 1 2 1055 1.8500000000000000e+01 0 -1 1056 - 1.2500000000000000e+01 -2 -3 1057 8.5000000000000000e+00 - - -3.6613929271697998e-01 4.8394933342933655e-01 - 1.7974837124347687e-01 -4.4913277029991150e-01 - <_> - 3.0477281570434570e+01 - - 1 2 1058 5.1950000000000000e+02 0 -1 1059 - 4.4500000000000000e+01 -2 -3 1060 114. - - -7.6940767467021942e-02 5.4680854082107544e-01 - -8.7260067462921143e-01 6.8811720609664917e-01 - <_> - 3.0773675918579102e+01 - - 1 2 1061 1.0450000000000000e+02 0 -1 1062 - 2.8150000000000000e+02 -2 -3 1063 1125. - - 5.4583191871643066e-01 -5.2532721310853958e-02 - -7.8279995918273926e-01 3.1823691725730896e-01 - <_> - 3.0351808547973633e+01 - - 1 2 1064 3.5000000000000000e+00 0 -1 1065 - 1.5500000000000000e+01 -2 -3 1066 55. - - -7.3623555898666382e-01 3.5894340276718140e-01 - -4.2186784744262695e-01 4.3861863017082214e-01 - <_> - 3.0537498474121094e+01 - - 1 2 1067 4307. 0 -1 1068 1160. -2 -3 1069 - 2.1660500000000000e+04 - - -7.8279590606689453e-01 4.5567861199378967e-01 - 1.8568974733352661e-01 -8.9434182643890381e-01 - <_> - 3.0696584701538086e+01 - - 1 2 1070 4.4285000000000000e+03 0 -1 1071 - 5.0000000000000000e-01 -2 -3 1072 3.1735000000000000e+03 - - 2.0552167296409607e-01 -4.5957171916961670e-01 - 7.2746735811233521e-01 -9.0351656079292297e-02 - <_> - 3.0743759155273438e+01 - - 1 2 1073 3.7500000000000000e+01 0 -1 1074 - 9.5000000000000000e+00 -2 -3 1075 1.6750000000000000e+02 - - -1.5780667960643768e-01 4.7251480817794800e-01 - -6.7792648077011108e-01 4.7175608575344086e-02 - <_> - 3.0970186233520508e+01 - - 1 2 1076 3.3550000000000000e+02 0 -1 1077 - 1.5850000000000000e+02 -2 -3 1078 6.7500000000000000e+01 - - 2.2642576694488525e-01 -7.5154268741607666e-01 - -7.6098370552062988e-01 -2.8098121285438538e-02 - <_> - 3.0785564422607422e+01 - - 1 2 1079 3.5000000000000000e+00 0 -1 1080 - 1.0750000000000000e+02 -2 -3 1081 5.5000000000000000e+00 - - -1. 1. 3.4101343154907227e-01 -1.8462051451206207e-01 - <_> - 3.0677804946899414e+01 - - 1 2 1082 1.8745000000000000e+03 0 -1 1083 8. -2 -3 1084 - 2.7950000000000000e+02 - - 3.8025709986686707e-01 -9.3898135423660278e-01 - 4.3168732523918152e-01 -1.0776055604219437e-01 - <_> - 3.1114505767822266e+01 - - 1 2 1085 1.2235000000000000e+03 0 -1 1086 502. -2 -3 1087 - 1.4500000000000000e+01 - - -3.4203383326530457e-01 8.8017475605010986e-01 - -6.2440735101699829e-01 4.3670186400413513e-01 - <_> - 3.0781503677368164e+01 - - 1 2 1088 1.0765000000000000e+03 0 -1 1089 - 1.4445000000000000e+03 -2 -3 1090 6.5000000000000000e+00 - - -1.0597463697195053e-01 5.4891431331634521e-01 - 2.9310002923011780e-01 -3.9375761151313782e-01 - <_> - 3.1352016448974609e+01 - - 1 2 1091 5.2500000000000000e+01 0 -1 1092 - 1.5000000000000000e+00 -2 -3 1093 272. - - 6.0849022865295410e-01 -2.5873470306396484e-01 - 5.7051157951354980e-01 -1. - <_> - 3.1657224655151367e+01 - - 1 2 1094 5.5000000000000000e+00 0 -1 1095 - 1.6500000000000000e+01 -2 -3 1096 30152. - - -9.6481657028198242e-01 8.0561167001724243e-01 - 4.4867545366287231e-01 -1.1930578947067261e-01 - <_> - 3.1797657012939453e+01 - - 1 2 1097 4.5000000000000000e+00 0 -1 1098 - 1.4500000000000000e+01 -2 -3 1099 3.4500000000000000e+01 - - -3.8230931758880615e-01 6.5411078929901123e-01 - 4.3631002306938171e-02 -7.3598957061767578e-01 - <_> - 3.1739580154418945e+01 - - 1 2 1100 6.5000000000000000e+00 0 -1 1101 - 3.5000000000000000e+00 -2 -3 1102 2.5500000000000000e+01 - - 2.6922503113746643e-01 -9.2841345071792603e-01 - -5.8075804263353348e-02 5.9674555063247681e-01 - <_> - 3.2161308288574219e+01 - - 1 2 1103 5.0000000000000000e-01 0 -1 1104 - 1.5500000000000000e+01 -2 -3 1105 1.5000000000000000e+00 - - -7.3271411657333374e-01 4.2172768712043762e-01 - 1.8879570066928864e-01 -4.8092129826545715e-01 - <_> - 3.1522403717041016e+01 - - 1 2 1106 1.7500000000000000e+01 0 -1 1107 - 3.5000000000000000e+00 -2 -3 1108 5.1500000000000000e+01 - - 4.1741237044334412e-01 -6.3890427350997925e-01 - -2.4483518302440643e-01 3.4861907362937927e-01 - <_> - 3.1028701782226562e+01 - - 1 2 1109 1.6500000000000000e+01 0 -1 1110 - 7.5500000000000000e+01 -2 -3 1111 1.5595000000000000e+03 - - 2.1001176536083221e-01 -5.4036855697631836e-01 - 8.2853209972381592e-01 -6.6984134912490845e-01 - <_> - 3.0648044586181641e+01 - - 1 2 1112 1.3500000000000000e+01 0 -1 1113 - 5.0000000000000000e-01 -2 -3 1114 5.5000000000000000e+00 - - 2.0337771624326706e-02 -6.9217932224273682e-01 - 3.1262809038162231e-01 -3.8065665960311890e-01 - <_> - 3.0457332611083984e+01 - - 1 2 1115 1.0425000000000000e+03 0 -1 1116 - 2.1105000000000000e+03 -2 -3 1117 5.0000000000000000e-01 - - 8.5383254289627075e-01 -9.4994091987609863e-01 - 3.6234918236732483e-01 -1.9071219861507416e-01 - <_> - 3.0355703353881836e+01 - - 1 2 1118 417. 0 -1 1119 47393. -2 -3 1120 - 1.3500000000000000e+01 - - 1.4608249068260193e-01 -7.7895587682723999e-01 - 5.4214590787887573e-01 -1.0162991285324097e-01 - <_> - 3.0591539382934570e+01 - - 1 2 1121 1.0505000000000000e+03 0 -1 1122 - 3.5000000000000000e+00 -2 -3 1123 1.2500000000000000e+01 - - 2.6039215922355652e-01 -8.2724225521087646e-01 - 2.3583582043647766e-01 -4.2682540416717529e-01 - <_> - 3.1194660186767578e+01 - - 1 2 1124 4.6185000000000000e+03 0 -1 1125 - 1.0500000000000000e+01 -2 -3 1126 1.9150000000000000e+02 - - -8.0647492408752441e-01 1.1079805344343185e-01 - 6.0312074422836304e-01 -8.1773541867733002e-02 - <_> - 3.0726728439331055e+01 - - 1 2 1127 1.3500000000000000e+01 0 -1 1128 - 4.5000000000000000e+00 -2 -3 1129 4.1550000000000000e+02 - - -6.2268900871276855e-01 3.8671565055847168e-01 - 2.8028538823127747e-01 -4.6793088316917419e-01 - <_> - 3.1088666915893555e+01 - - 1 2 1130 8.5000000000000000e+00 0 -1 1131 - 5.8445000000000000e+03 -2 -3 1132 2.8500000000000000e+01 - - -3.3040379639714956e-04 -9.1474950313568115e-01 - 3.6193940043449402e-01 -1.4911226928234100e-01 - <_> - 3.1474407196044922e+01 - - 1 2 1133 1.5500000000000000e+01 0 -1 1134 - 3.5000000000000000e+00 -2 -3 1135 1.2525000000000000e+03 - - 6.4907115697860718e-01 -5.0786149501800537e-01 - -2.0913411676883698e-01 3.8573962450027466e-01 - <_> - 3.1632471084594727e+01 - - 1 2 1136 6.5000000000000000e+00 0 -1 1137 - 3.7500000000000000e+01 -2 -3 1138 3.5500000000000000e+01 - - 6.3346821069717407e-01 -5.2402967214584351e-01 - -4.6075040102005005e-01 1.5806287527084351e-01 - <_> - 3.1587083816528320e+01 - - 1 2 1139 2.8950000000000000e+02 0 -1 1140 - 1.2865000000000000e+03 -2 -3 1141 8.0500000000000000e+01 - - -4.5387003570795059e-02 6.0369354486465454e-01 - -8.8128578662872314e-01 1.6069179773330688e-01 - <_> - 3.1416742324829102e+01 - - 1 2 1142 6.0500000000000000e+01 0 -1 1143 2554. -2 -3 1144 - 2.5000000000000000e+00 - - 5.8986186981201172e-01 -7.9697668552398682e-01 - 4.0921381115913391e-01 -1.7034149169921875e-01 - <_> - 3.1597267150878906e+01 - - 1 2 1145 7.5000000000000000e+00 0 -1 1146 - 1.2500000000000000e+01 -2 -3 1147 3.3500000000000000e+01 - - -7.0123994350433350e-01 9.0972447395324707e-01 - 1.8052530288696289e-01 -7.1117341518402100e-01 - <_> - 3.1853481292724609e+01 - - 1 2 1148 2.5000000000000000e+00 0 -1 1149 - 1.6500000000000000e+01 -2 -3 1150 50. - - -4.6300759911537170e-01 2.5621402263641357e-01 - -5.8134639263153076e-01 6.4391428232192993e-01 - <_> - 3.2041400909423828e+01 - - 1 2 1151 1.5000000000000000e+00 0 -1 1152 - 5.5000000000000000e+00 -2 -3 1153 6.6500000000000000e+01 - - 4.4350862503051758e-01 -6.5627163648605347e-01 - -4.0067231655120850e-01 3.3987161517143250e-01 - <_> - 3.2274913787841797e+01 - - 1 2 1154 2.2500000000000000e+01 0 -1 1155 121. -2 -3 1156 - 4.0750000000000000e+02 - - -5.6885540485382080e-01 2.3351371288299561e-01 - 6.7405563592910767e-01 -5.4761618375778198e-01 - <_> - 3.2459445953369141e+01 - - 1 2 1157 2.1500000000000000e+01 0 -1 1158 - 1.2500000000000000e+01 -2 -3 1159 1.9500000000000000e+01 - - -8.8360142707824707e-01 2.5230798125267029e-01 - 1.1890246719121933e-01 -5.4317802190780640e-01 - <_> - 3.2713863372802734e+01 - - 1 2 1160 3.9500000000000000e+01 0 -1 1161 - 4.5000000000000000e+00 -2 -3 1162 2.2635000000000000e+03 - - 4.9993959069252014e-01 -4.6222266554832458e-01 - -8.2206004858016968e-01 2.5441682338714600e-01 - <_> - 3.2391437530517578e+01 - - 1 2 1163 1.8500000000000000e+01 0 -1 1164 - 2.2500000000000000e+01 -2 -3 1165 1.1500000000000000e+01 - - -8.3650416135787964e-01 2.8401935100555420e-01 - 2.4446329474449158e-01 -5.4215461015701294e-01 - <_> - 3.2313743591308594e+01 - - 1 2 1166 2.1500000000000000e+01 0 -1 1167 - 4.4750000000000000e+02 -2 -3 1168 7.5000000000000000e+00 - - 2.8188237547874451e-01 -7.0770967006683350e-01 - 5.1904022693634033e-01 -7.7693074941635132e-02 - <_> - 3.2547096252441406e+01 - - 1 2 1169 3.8500000000000000e+01 0 -1 1170 - 1.0500000000000000e+01 -2 -3 1171 5.4500000000000000e+01 - - -5.1064568758010864e-01 2.3335392773151398e-01 - -7.8815060853958130e-01 1.9936113059520721e-01 - <_> - 3.2640663146972656e+01 - - 1 2 1172 2.5000000000000000e+00 0 -1 1173 - 5.5000000000000000e+00 -2 -3 1174 1330. - - -4.3339151144027710e-01 4.2221209406852722e-01 - -3.6630377173423767e-01 7.0252496004104614e-01 - <_> - 3.2781063079833984e+01 - - 1 2 1175 1.5000000000000000e+00 0 -1 1176 - 3.5000000000000000e+00 -2 -3 1177 5.0000000000000000e-01 - - 4.3612757325172424e-01 -8.5796296596527100e-01 - 2.6683306694030762e-01 -2.6626828312873840e-01 - <_> - 3.3000972747802734e+01 - - 1 2 1178 2.8150000000000000e+02 0 -1 1179 - 1.5500000000000000e+01 -2 -3 1180 4.6500000000000000e+01 - - 3.4552884101867676e-01 -5.2619069814682007e-01 - -3.2900866866111755e-01 4.3776753544807434e-01 - <_> - 3.3018821716308594e+01 - - 1 2 1181 5.0000000000000000e-01 0 -1 1182 - 1.0500000000000000e+01 -2 -3 1183 2.6450000000000000e+02 - - -4.9559688568115234e-01 7.7334856986999512e-01 - 5.2793127298355103e-01 -2.3107841610908508e-01 - <_> - 3.3071189880371094e+01 - - 1 2 1184 4.6025000000000000e+03 0 -1 1185 - 1.8500000000000000e+01 -2 -3 1186 6.8250000000000000e+02 - - -7.4181526899337769e-01 5.9372335672378540e-01 - 4.7619059681892395e-01 -1.1885309964418411e-01 - <_> - 3.3085533142089844e+01 - - 1 2 1187 1.6350000000000000e+02 0 -1 1188 - 2.7500000000000000e+01 -2 -3 1189 142. - - -4.1260236501693726e-01 2.7891275286674500e-01 - -7.0465636253356934e-01 7.5747251510620117e-01 - <_> - 3.3357414245605469e+01 - - 1 2 1190 5.0000000000000000e-01 0 -1 1191 - 5.6500000000000000e+01 -2 -3 1192 5.2150000000000000e+02 - - 6.4778029918670654e-01 -1.1932287365198135e-01 - -4.1650903224945068e-01 2.5428086519241333e-01 - <_> - 3.3322494506835938e+01 - - 1 2 1193 8.2350000000000000e+02 0 -1 1194 - 8.2650000000000000e+02 -2 -3 1195 1.3500000000000000e+01 - - 2.8512652497738600e-03 6.5731632709503174e-01 - 4.5999297499656677e-01 -6.2862813472747803e-01 - <_> - 3.3176986694335938e+01 - - 1 2 1196 1.3500000000000000e+01 0 -1 1197 70. -2 -3 1198 - 5.0000000000000000e-01 - - -6.6250026226043701e-01 7.0421558618545532e-01 - 3.7571212649345398e-01 -2.3801752924919128e-01 - <_> - 3.3435741424560547e+01 - - 1 2 1199 58282. 0 -1 1200 913. -2 -3 1201 - 1.0850000000000000e+02 - - -5.6440210342407227e-01 2.8217953443527222e-01 - -8.7045669555664062e-01 -8.5198663175106049e-02 - <_> - 3.3617641448974609e+01 - - 1 2 1202 1.5000000000000000e+00 0 -1 1203 - 1.5000000000000000e+00 -2 -3 1204 1.7675000000000000e+03 - - -7.3653697967529297e-01 7.6336652040481567e-01 - -2.4504181742668152e-01 5.5397576093673706e-01 - <_> - 3.3626171112060547e+01 - - 1 2 1205 3.5000000000000000e+00 0 -1 1206 - 1.5500000000000000e+01 -2 -3 1207 153. - - -2.8129413723945618e-01 5.9369409084320068e-01 - 8.5296230390667915e-03 -6.9582235813140869e-01 - <_> - 3.3975147247314453e+01 - - 1 2 1208 5.0000000000000000e-01 0 -1 1209 - 1.0500000000000000e+01 -2 -3 1210 2.0500000000000000e+01 - - -8.0083674192428589e-01 3.4897685050964355e-01 - -3.5385957360267639e-01 7.3448055982589722e-01 - <_> - 3.3426464080810547e+01 - - 1 2 1211 2.7950000000000000e+02 0 -1 1212 - 5.4975000000000000e+03 -2 -3 1213 7.5000000000000000e+00 - - -1.4607962965965271e-01 7.2142803668975830e-01 - 1.4154955744743347e-01 -5.4868251085281372e-01 - <_> - 3.3620513916015625e+01 - - 1 2 1214 1.1500000000000000e+01 0 -1 1215 - 2.5550000000000000e+02 -2 -3 1216 72. - - 5.8608335256576538e-01 -9.2741596698760986e-01 - 1.9404979050159454e-01 -6.2724816799163818e-01 - <_> - 3.3949718475341797e+01 - - 1 2 1217 1.9500000000000000e+01 0 -1 1218 - 2.6950000000000000e+02 -2 -3 1219 5.2500000000000000e+01 - - -8.2725256681442261e-02 -8.0563539266586304e-01 - -4.9098122119903564e-01 3.2920604944229126e-01 - <_> - 3.3907009124755859e+01 - - 1 2 1220 2.5500000000000000e+01 0 -1 1221 - 5.0000000000000000e-01 -2 -3 1222 5.0500000000000000e+01 - - 5.3421282768249512e-01 -4.2710851877927780e-02 - -8.4883642196655273e-01 -6.9108068943023682e-02 - <_> - 3.4569347381591797e+01 - - 1 2 1223 3.4500000000000000e+01 0 -1 1224 - 4.5000000000000000e+00 -2 -3 1225 4.2500000000000000e+01 - - 2.8448584675788879e-01 -3.0913567543029785e-01 - 6.9974571466445923e-01 -7.2145628929138184e-01 - <_> - 3.4406383514404297e+01 - - 1 2 1226 4.7500000000000000e+01 0 -1 1227 82. -2 -3 1228 - 476. - - -5.3745925426483154e-01 5.8132463693618774e-01 - 3.7321224808692932e-01 -6.0607558488845825e-01 - <_> - 3.4350345611572266e+01 - - 1 2 1229 4.5000000000000000e+00 0 -1 1230 161. -2 -3 1231 - 9.5000000000000000e+00 - - 5.7543116807937622e-01 -9.4070035219192505e-01 - 7.6428997516632080e-01 -5.6036282330751419e-02 - <_> - 3.4673534393310547e+01 - - 1 2 1232 1.2645000000000000e+03 0 -1 1233 1086. -2 -3 1234 - 9549. - - -2.5683671236038208e-01 8.2724517583847046e-01 - 7.0296716690063477e-01 -3.6435613036155701e-01 - <_> - 3.5003284454345703e+01 - - 1 2 1235 1.2850000000000000e+02 0 -1 1236 - 8.6235000000000000e+03 -2 -3 1237 2.6500000000000000e+01 - - 5.9038841724395752e-01 3.4432813990861177e-03 - -6.4016550779342651e-02 -9.3743759393692017e-01 - <_> - 3.5226799011230469e+01 - - 1 2 1238 9.3500000000000000e+01 0 -1 1239 13. -2 -3 1240 - 4.4500000000000000e+01 - - -6.7835944890975952e-01 3.3737751841545105e-01 - -7.8561329841613770e-01 -3.7122413516044617e-02 - <_> - 3.5086704254150391e+01 - - 1 2 1241 6.5000000000000000e+00 0 -1 1242 786. -2 -3 1243 - 4.6850000000000000e+02 - - -8.7093526124954224e-01 4.2933362722396851e-01 - -5.2467578649520874e-01 1.0233493894338608e-01 - <_> - 3.5434925079345703e+01 - - 1 2 1244 5.0650000000000000e+02 0 -1 1245 - 6.3500000000000000e+01 -2 -3 1246 2.5000000000000000e+00 - - -3.4057748317718506e-01 5.2575647830963135e-01 - -5.7031583786010742e-01 4.1367042064666748e-01 - <_> - 3.5402851104736328e+01 - - 1 2 1247 5.0000000000000000e-01 0 -1 1248 857. -2 -3 1249 - 1.3850000000000000e+02 - - 6.1650615930557251e-01 -2.0817196369171143e-01 - -2.5478323921561241e-02 -7.6659142971038818e-01 - <_> - 3.4968181610107422e+01 - - 1 2 1250 5.8500000000000000e+01 0 -1 1251 - 1.1500000000000000e+01 -2 -3 1252 5.5500000000000000e+01 - - 1.2099618464708328e-01 -4.4126412272453308e-01 - 6.0897779464721680e-01 -7.8737002611160278e-01 - <_> - 3.5193428039550781e+01 - - 1 2 1253 4.7500000000000000e+01 0 -1 1254 1423. -2 -3 1255 - 3.4500000000000000e+01 - - 4.8643037676811218e-02 -8.9261955022811890e-01 - 2.2524681687355042e-01 -6.2001824378967285e-01 - <_> - 3.5623695373535156e+01 - - 1 2 1256 2.0500000000000000e+01 0 -1 1257 - 5.5000000000000000e+00 -2 -3 1258 6.5000000000000000e+00 - - -8.9247786998748779e-01 7.9152870178222656e-01 - 4.3026548624038696e-01 -1.4470897614955902e-01 - <_> - 3.5538761138916016e+01 - - 1 2 1259 18647. 0 -1 1260 8.7850000000000000e+02 -2 -3 1261 - 50. - - 1.3848523795604706e-01 -6.2565112113952637e-01 - -3.0781137943267822e-01 5.9695762395858765e-01 - <_> - 3.5170146942138672e+01 - - 1 2 1262 2.0500000000000000e+01 0 -1 1263 - 9.5500000000000000e+01 -2 -3 1264 3.2450000000000000e+02 - - -1.9358770549297333e-01 5.9224104881286621e-01 - -3.6861309409141541e-01 7.9692333936691284e-01 - <_> - 3.5719684600830078e+01 - - 1 2 1265 1.5000000000000000e+00 0 -1 1266 - 3.4500000000000000e+01 -2 -3 1267 1.7725000000000000e+03 - - 5.4953765869140625e-01 -4.1827628016471863e-01 - 3.4924019128084183e-02 -6.3267588615417480e-01 - <_> - 3.6021175384521484e+01 - - 1 2 1268 1.3500000000000000e+01 0 -1 1269 - 5.0000000000000000e-01 -2 -3 1270 3476. - - 3.0730965733528137e-01 -7.1827191114425659e-01 - -3.3407485485076904e-01 3.0149033665657043e-01 - <_> - 3.6000087738037109e+01 - - 1 2 1271 2.1105000000000000e+03 0 -1 1272 - 1.2865000000000000e+03 -2 -3 1273 31. - - -6.6124044358730316e-02 6.6440200805664062e-01 - -7.0062541961669922e-01 8.8496291637420654e-01 - <_> - 3.6138973236083984e+01 - - 1 2 1274 6.5000000000000000e+00 0 -1 1275 - 4.0500000000000000e+01 -2 -3 1276 2.5000000000000000e+00 - - -1.8909309804439545e-01 4.3955674767494202e-01 - 8.3517062664031982e-01 -5.2926576137542725e-01 - <_> - 3.6462543487548828e+01 - - 1 2 1277 1.5000000000000000e+00 0 -1 1278 - 1.9500000000000000e+01 -2 -3 1279 2.9500000000000000e+01 - - 5.2272623777389526e-01 -5.3356873989105225e-01 - -4.3614375591278076e-01 1.6707921028137207e-01 - <_> - 3.6346103668212891e+01 - - 1 2 1280 5.4500000000000000e+01 0 -1 1281 3. -2 -3 1282 - 2.5000000000000000e+00 - - 9.2645227909088135e-01 -9.1626834869384766e-01 - 4.3882593512535095e-01 -1.1643892526626587e-01 - <_> - 3.6447643280029297e+01 - - 1 2 1283 4.3500000000000000e+01 0 -1 1284 - 4.5000000000000000e+00 -2 -3 1285 1.4250000000000000e+02 - - 2.8414136171340942e-01 -5.2052396535873413e-01 - 3.3975440263748169e-01 -4.2113724350929260e-01 - <_> - 3.6367126464843750e+01 - - 1 2 1286 2.2500000000000000e+01 0 -1 1287 - 1.0535000000000000e+03 -2 -3 1288 1.9500000000000000e+01 - - 4.4179165363311768e-01 -7.4734365940093994e-01 - 5.4282104969024658e-01 -8.0516710877418518e-02 - <_> - 3.6575954437255859e+01 - - 1 2 1289 2.5000000000000000e+00 0 -1 1290 - 1.5000000000000000e+00 -2 -3 1291 2.4500000000000000e+01 - - -3.8550149649381638e-02 -9.4949018955230713e-01 - 2.0882803201675415e-01 -4.6319213509559631e-01 - <_> - 3.6657161712646484e+01 - - 1 2 1292 1.6115000000000000e+03 0 -1 1293 3672. -2 -3 1294 - 545. - - 8.2763051986694336e-01 -4.8815292119979858e-01 - -5.2512788772583008e-01 8.1207208335399628e-02 - <_> - 3.6598300933837891e+01 - - 1 2 1295 6.0500000000000000e+01 0 -1 1296 - 1.1250000000000000e+02 -2 -3 1297 1.5350000000000000e+02 - - -5.8857690542936325e-02 4.7229456901550293e-01 - -8.1495660543441772e-01 7.3461961746215820e-01 - <_> - 3.6517520904541016e+01 - - 1 2 1298 9.4500000000000000e+01 0 -1 1299 - 4.8500000000000000e+01 -2 -3 1300 235. - - 4.8253452777862549e-01 -8.0779984593391418e-02 - -9.4696474075317383e-01 9.1954904794692993e-01 - <_> - 3.6136314392089844e+01 - - 1 2 1301 7.6150000000000000e+02 0 -1 1302 - 1.3500000000000000e+01 -2 -3 1303 3.7500000000000000e+01 - - 4.7050821781158447e-01 -6.8645346164703369e-01 - 1.8845686316490173e-01 -6.1942416429519653e-01 - <_> - 3.6255367279052734e+01 - - 1 2 1304 2.5500000000000000e+01 0 -1 1305 - 9.5000000000000000e+00 -2 -3 1306 2.4243500000000000e+04 - - -8.6751174926757812e-01 1. 1.1905297636985779e-01 - -7.7261626720428467e-01 - <_> - 3.6847282409667969e+01 - - 1 2 1307 2.5245000000000000e+03 0 -1 1308 - 1.2500000000000000e+01 -2 -3 1309 19. - - 1.8480798602104187e-01 -4.1162934899330139e-01 - -7.0126670598983765e-01 5.9191262722015381e-01 - <_> - 3.6736129760742188e+01 - - 1 2 1310 1.9500000000000000e+01 0 -1 1311 - 3.5000000000000000e+00 -2 -3 1312 9.9500000000000000e+01 - - -4.2743122577667236e-01 3.4077543020248413e-01 - -5.2904611825942993e-01 6.4898627996444702e-01 - <_> - 3.7165416717529297e+01 - - 1 2 1313 57. 0 -1 1314 7.5000000000000000e+00 -2 -3 1315 - 1.4750000000000000e+02 - - -2.9288327693939209e-01 4.2928928136825562e-01 - -5.1645982265472412e-01 3.7259963154792786e-01 - <_> - 3.6963829040527344e+01 - - 1 2 1316 1.5000000000000000e+00 0 -1 1317 - 1.5000000000000000e+00 -2 -3 1318 2.5550000000000000e+02 - - -4.8823645710945129e-01 6.1563092470169067e-01 - 6.7905879020690918e-01 -2.7743032574653625e-01 - <_> - 3.6947120666503906e+01 - - 1 2 1319 1.1545000000000000e+03 0 -1 1320 2066. -2 -3 1321 - 7.7350000000000000e+02 - - -7.2975975275039673e-01 6.6057509183883667e-01 - 6.6289925575256348e-01 -1.6708238050341606e-02 - <_> - 3.6795619964599609e+01 - - 1 2 1322 63. 0 -1 1323 5.7500000000000000e+01 -2 -3 1324 - 2.8500000000000000e+01 - - -1.5150213241577148e-01 3.7273296713829041e-01 - -8.2537877559661865e-01 8.6949664354324341e-01 - <_> - 3.7259391784667969e+01 - - 1 2 1325 1.0500000000000000e+01 0 -1 1326 - 1.6500000000000000e+01 -2 -3 1327 346. - - 4.6377313137054443e-01 -7.5801903009414673e-01 - -3.5662418603897095e-01 9.6071028709411621e-01 - <_> - 3.7495296478271484e+01 - - 1 2 1328 6.0500000000000000e+01 0 -1 1329 - 1.5500000000000000e+01 -2 -3 1330 2.6850000000000000e+02 - - 5.3055459260940552e-01 -6.3604164123535156e-01 - -6.7990607023239136e-01 2.4123270809650421e-01 - <_> - 3.7374149322509766e+01 - - 1 2 1331 2.5000000000000000e+00 0 -1 1332 - 1.3500000000000000e+01 -2 -3 1333 2.5000000000000000e+00 - - -9.0581423044204712e-01 5.8284395933151245e-01 - 3.0152860283851624e-01 -3.4942194819450378e-01 - <_> - 3.7766971588134766e+01 - - 1 2 1334 5.5000000000000000e+00 0 -1 1335 23. -2 -3 1336 - 3.0250000000000000e+02 - - -9.5462155342102051e-01 1. 3.9282312989234924e-01 - -1.1600174754858017e-01 - <_> - 3.8006900787353516e+01 - - 1 2 1337 3955. 0 -1 1338 1.6500000000000000e+01 -2 -3 1339 - 3.8500000000000000e+01 - - 3.4476998448371887e-01 -5.3807318210601807e-01 - -6.4139670133590698e-01 3.3075565099716187e-01 - <_> - 3.7836151123046875e+01 - - 1 2 1340 1.4500000000000000e+01 0 -1 1341 - 4.2050000000000000e+02 -2 -3 1342 4.5000000000000000e+00 - - 6.6126942634582520e-02 -8.9179468154907227e-01 - 2.5128620862960815e-01 -4.3012529611587524e-01 - <_> - 3.7504901885986328e+01 - - 1 2 1343 3.5000000000000000e+00 0 -1 1344 - 2.1500000000000000e+01 -2 -3 1345 3.6500000000000000e+01 - - -6.9118273258209229e-01 5.3941005468368530e-01 - 4.0820264816284180e-01 -3.3124980330467224e-01 - <_> - 3.7869743347167969e+01 - - 1 2 1346 8.5000000000000000e+00 0 -1 1347 8240. -2 -3 1348 - 1.8500000000000000e+01 - - -1.8303586402907968e-03 -7.9149729013442993e-01 - 3.6484044790267944e-01 -2.6800584793090820e-01 - <_> - 3.7688228607177734e+01 - - 1 2 1349 1.2135000000000000e+03 0 -1 1350 75. -2 -3 1351 - 5.6750000000000000e+02 - - -3.7686902284622192e-01 5.8311319351196289e-01 - 7.0945566892623901e-01 -1.8151518702507019e-01 - <_> - 3.7513351440429688e+01 - - 1 2 1352 3.5000000000000000e+00 0 -1 1353 35. -2 -3 1354 - 1.1500000000000000e+01 - - -9.6617668867111206e-01 1. 4.0123063325881958e-01 - -1.7487519979476929e-01 - <_> - 3.7691390991210938e+01 - - 1 2 1355 2.3050000000000000e+02 0 -1 1356 - 1.1500000000000000e+01 -2 -3 1357 2.8500000000000000e+01 - - -5.4078394174575806e-01 1.7803618311882019e-01 - 6.0750162601470947e-01 -9.6443849802017212e-01 - <_> - 3.8156455993652344e+01 - - 1 2 1358 6.5000000000000000e+00 0 -1 1359 - 1.0500000000000000e+01 -2 -3 1360 354. - - 4.6506500244140625e-01 -3.7838381528854370e-01 - -3.8703271746635437e-01 5.6163036823272705e-01 - <_> - 3.8427524566650391e+01 - - 1 2 1361 1.2500000000000000e+01 0 -1 1362 - 4.5000000000000000e+00 -2 -3 1363 449. - - 5.1386022567749023e-01 -6.1507451534271240e-01 - 3.0157905817031860e-01 -6.5344727039337158e-01 - <_> - 3.8548820495605469e+01 - - 1 2 1364 5.0000000000000000e-01 0 -1 1365 - 1.5000000000000000e+00 -2 -3 1366 3.8950000000000000e+02 - - -3.3223056793212891e-01 5.4063457250595093e-01 - 9.0788081288337708e-02 -5.4981482028961182e-01 - <_> - 3.8257041931152344e+01 - - 1 2 1367 1.6650000000000000e+02 0 -1 1368 - 5.0000000000000000e-01 -2 -3 1369 7.6500000000000000e+01 - - 2.8060472011566162e-01 -2.9178059101104736e-01 - -7.8990536928176880e-01 9.2143142223358154e-01 - <_> - 3.8675960540771484e+01 - - 1 2 1370 1.8500000000000000e+01 0 -1 1371 - 2.3500000000000000e+01 -2 -3 1372 4.5000000000000000e+00 - - -5.0728912465274334e-03 -8.4625685214996338e-01 - 4.8941537737846375e-01 -1.3043193519115448e-01 - <_> - 3.9024429321289062e+01 - - 1 2 1373 8.5000000000000000e+00 0 -1 1374 - 8.1295000000000000e+03 -2 -3 1375 1.1250000000000000e+02 - - 1.5426757931709290e-01 -7.5539046525955200e-01 - -3.0081889033317566e-01 3.4846922755241394e-01 - <_> - 3.8698005676269531e+01 - - 1 2 1376 9.5000000000000000e+00 0 -1 1377 - 5.5000000000000000e+00 -2 -3 1378 3.4500000000000000e+01 - - -7.7566885948181152e-01 5.3590404987335205e-01 - -3.2642310857772827e-01 3.3310726284980774e-01 - <_> - 3.8178993225097656e+01 - - 1 2 1379 2.6450000000000000e+02 0 -1 1380 - 4.6255000000000000e+03 -2 -3 1381 1.5000000000000000e+00 - - -3.2790592312812805e-01 3.8349342346191406e-01 - 3.5417640209197998e-01 -5.1901257038116455e-01 - <_> - 3.8603790283203125e+01 - - 1 2 1382 7.7450000000000000e+02 0 -1 1383 - 5.4450000000000000e+02 -2 -3 1384 4.9500000000000000e+01 - - 4.2479729652404785e-01 -6.4129936695098877e-01 - -3.8530099391937256e-01 4.2106175422668457e-01 - <_> - 3.9316322326660156e+01 - - 1 2 1385 1.2285000000000000e+03 0 -1 1386 19974. -2 -3 1387 - 2.0675000000000000e+03 - - -3.2134270668029785e-01 6.0310727357864380e-01 - 7.1253037452697754e-01 -1.8411901593208313e-01 - <_> - 3.8982051849365234e+01 - - 1 2 1388 2254. 0 -1 1389 23971. -2 -3 1390 - 2.5000000000000000e+00 - - 1.3044491410255432e-02 8.1400823593139648e-01 - 3.9543354511260986e-01 -4.9717214703559875e-01 - <_> - 3.9231285095214844e+01 - - 1 2 1391 7888. 0 -1 1392 1.2500000000000000e+01 -2 -3 1393 - 6.5000000000000000e+00 - - -9.9114888906478882e-01 1. 2.4923273921012878e-01 - -3.9778175950050354e-01 - <_> - 3.9200939178466797e+01 - - 1 2 1394 8.2500000000000000e+01 0 -1 1395 - 2.5000000000000000e+00 -2 -3 1396 2.7500000000000000e+01 - - 5.9092748165130615e-01 -6.6723209619522095e-01 - 4.0493550896644592e-01 -2.8249517083168030e-01 - <_> - 3.9109848022460938e+01 - - 1 2 1397 1.0500000000000000e+01 0 -1 1398 - 3.4150000000000000e+02 -2 -3 1399 1.5000000000000000e+00 - - 1.1704797297716141e-01 -7.8680926561355591e-01 - 5.4690092802047729e-01 -9.1091230511665344e-02 - <_> - 3.9430786132812500e+01 - - 1 2 1400 7.5000000000000000e+00 0 -1 1401 - 5.6350000000000000e+02 -2 -3 1402 9.5000000000000000e+00 - - 1. -1. 5.3584295511245728e-01 -1.1434395611286163e-01 - <_> - 3.9888351440429688e+01 - - 1 2 1403 576. 0 -1 1404 2.3765000000000000e+03 -2 -3 1405 - 1.8500000000000000e+01 - - 9.3801420927047729e-01 -7.2940248250961304e-01 - -9.7766503691673279e-02 4.5756503939628601e-01 - <_> - 3.9605831146240234e+01 - - 1 2 1406 5.5000000000000000e+00 0 -1 1407 - 6.5000000000000000e+00 -2 -3 1408 1.7500000000000000e+01 - - -9.3598860502243042e-01 6.3315272331237793e-01 - 1.0997077822685242e-01 -4.5688989758491516e-01 - <_> - 4.0259593963623047e+01 - - 1 2 1409 1.2785000000000000e+03 0 -1 1410 - 5.0000000000000000e-01 -2 -3 1411 1.0150000000000000e+02 - - 2.8614109754562378e-01 -3.0422577261924744e-01 - -5.3765338659286499e-01 7.5021845102310181e-01 - <_> - 4.0646686553955078e+01 - - 1 2 1412 9.3750000000000000e+02 0 -1 1413 - 2.5500000000000000e+01 -2 -3 1414 6.4650000000000000e+02 - - -1.8467088043689728e-01 3.8709565997123718e-01 -1. 1. - <_> - 4.0781440734863281e+01 - - 1 2 1415 5.0000000000000000e-01 0 -1 1416 62. -2 -3 1417 - 5.3500000000000000e+01 - - 6.4194250106811523e-01 -6.9881826639175415e-01 - -3.3652466535568237e-01 2.9932817816734314e-01 - <_> - 4.0840915679931641e+01 - - 1 2 1418 2.5000000000000000e+00 0 -1 1419 13192. -2 -3 1420 - 2.4950000000000000e+02 - - -9.9075198173522949e-01 8.7482362985610962e-01 - 2.9631823301315308e-01 -2.0155780017375946e-01 - <_> - 4.1011356353759766e+01 - - 1 2 1421 4.8150000000000000e+02 0 -1 1422 - 1.0450000000000000e+02 -2 -3 1423 8.5000000000000000e+00 - - -2.5319704785943031e-02 -7.4390411376953125e-01 - -8.1089955568313599e-01 7.6437503099441528e-01 - <_> - 4.0876789093017578e+01 - - 1 2 1424 5.5000000000000000e+00 0 -1 1425 - 2.5000000000000000e+00 -2 -3 1426 1.5000000000000000e+00 - - 1. -9.8024749755859375e-01 3.7663710117340088e-01 - -1.3456873595714569e-01 - <_> - 4.0677371978759766e+01 - - 1 2 1427 2.1500000000000000e+01 0 -1 1428 - 1.1125000000000000e+03 -2 -3 1429 2.3500000000000000e+01 - - 4.5568805187940598e-02 -8.6155319213867188e-01 - 3.0837088823318481e-01 -1.9941620528697968e-01 - <_> - 4.0941162109375000e+01 - - 1 2 1430 9.4500000000000000e+01 0 -1 1431 447. -2 -3 1432 - 8.9500000000000000e+01 - - 2.0531620085239410e-01 -6.4759564399719238e-01 - 2.6378956437110901e-01 -6.0503029823303223e-01 - <_> - 4.0695613861083984e+01 - - 1 2 1433 8.1450000000000000e+02 0 -1 1434 - 9.9250000000000000e+02 -2 -3 1435 2.1450000000000000e+02 - - -6.1355805397033691e-01 3.9234723895788193e-02 - 4.3808567523956299e-01 -7.3097014427185059e-01 - <_> - 4.1197418212890625e+01 - - 1 2 1436 1.8769500000000000e+04 0 -1 1437 1329. -2 -3 1438 - 5.4500000000000000e+01 - - 5.0180602073669434e-01 -3.4298053383827209e-01 - 6.9242316484451294e-01 -3.7215092778205872e-01 - <_> - 4.1157611846923828e+01 - - 1 2 1439 3.1500000000000000e+01 0 -1 1440 - 1.8500000000000000e+01 -2 -3 1441 1.5000000000000000e+00 - - 6.7518281936645508e-01 -7.6596146821975708e-01 - 5.7309043407440186e-01 -3.9805334061384201e-02 - <_> - 4.0718166351318359e+01 - - 1 2 1442 9.3500000000000000e+01 0 -1 1443 - 8.5000000000000000e+00 -2 -3 1444 1.6950000000000000e+02 - - 7.0507103204727173e-01 -4.3868264555931091e-01 - 4.2583593726158142e-01 -4.3944749236106873e-01 - <_> - 4.1168849945068359e+01 - - 1 2 1445 1.5000000000000000e+00 0 -1 1446 - 1.5500000000000000e+01 -2 -3 1447 5.0000000000000000e-01 - - -5.8355963230133057e-01 8.2266020774841309e-01 - 4.5068329572677612e-01 -1.3382685184478760e-01 - <_> - 4.1473163604736328e+01 - - 1 2 1448 5.6500000000000000e+01 0 -1 1449 - 3.3500000000000000e+01 -2 -3 1450 2.1550000000000000e+02 - - 2.5085982680320740e-01 -3.7931889295578003e-01 - 6.7997491359710693e-01 -1. - <_> - 4.1634220123291016e+01 - - 1 2 1451 5.4500000000000000e+01 0 -1 1452 - 9.5000000000000000e+00 -2 -3 1453 1.7250000000000000e+02 - - -7.9712128639221191e-01 8.5313194990158081e-01 - 1.6105654835700989e-01 -9.5611929893493652e-01 - <_> - 4.1978507995605469e+01 - - 1 2 1454 1.1615000000000000e+03 0 -1 1455 - 2.0525000000000000e+03 -2 -3 1456 5.8650000000000000e+02 - - -7.1788591146469116e-01 4.8950648307800293e-01 - 4.8551353812217712e-01 -1.9422738254070282e-01 - <_> - 4.2004768371582031e+01 - - 1 2 1457 4.6500000000000000e+01 0 -1 1458 - 3.5000000000000000e+00 -2 -3 1459 7.0350000000000000e+02 - - 3.9823031425476074e-01 -6.6477078199386597e-01 - -1.1496587097644806e-01 4.9930962920188904e-01 - <_> - 4.1885951995849609e+01 - - 1 2 1460 4.4500000000000000e+01 0 -1 1461 - 3.5000000000000000e+00 -2 -3 1462 4. - - 4.4042432308197021e-01 -1.1881566792726517e-01 - 8.4207451343536377e-01 -8.6268407106399536e-01 - <_> - 4.2072120666503906e+01 - - 1 2 1463 2.0500000000000000e+01 0 -1 1464 10. -2 -3 1465 - 5.5000000000000000e+00 - - -9.8040562868118286e-01 1. 3.3258756995201111e-01 - -1.7096966505050659e-01 - <_> - 4.2217323303222656e+01 - - 1 2 1466 1.3500000000000000e+01 0 -1 1467 47. -2 -3 1468 - 1.3325000000000000e+03 - - -6.6619759798049927e-01 5.1798510551452637e-01 - -1.2162621133029461e-03 7.3543995618820190e-01 - <_> - 4.2318325042724609e+01 - - 1 2 1469 4.5000000000000000e+00 0 -1 1470 - 1.9500000000000000e+01 -2 -3 1471 1.5585000000000000e+03 - - -9.6737003326416016e-01 6.0924607515335083e-01 - 5.8938968181610107e-01 -2.8636392951011658e-01 - <_> - 4.2444244384765625e+01 - - 1 2 1472 2.7500000000000000e+01 0 -1 1473 - 1.8247500000000000e+04 -2 -3 1474 6.5605000000000000e+03 - - -1.1921727657318115e-01 4.3995112180709839e-01 - -7.6667350530624390e-01 4.6777427196502686e-01 - <_> - 4.2317867279052734e+01 - - 1 2 1475 4.5000000000000000e+00 0 -1 1476 15. -2 -3 1477 - 3.2500000000000000e+01 - - -9.6039277315139771e-01 1. 3.9408209919929504e-01 - -1.2637579441070557e-01 - <_> - 4.2575748443603516e+01 - - 1 2 1478 367. 0 -1 1479 2578. -2 -3 1480 - 2.0050000000000000e+02 - - 5.2356463670730591e-01 -6.4678192138671875e-01 - 3.1403809785842896e-01 -3.7955451011657715e-01 - <_> - 4.2238155364990234e+01 - - 1 2 1481 5.4500000000000000e+01 0 -1 1482 - 1.8450000000000000e+02 -2 -3 1483 5.6550000000000000e+02 - - -7.5117689371109009e-01 3.9905190467834473e-01 - 1.0141634941101074e-01 -6.3857173919677734e-01 - <_> - 4.2032226562500000e+01 - - 1 2 1484 3.5500000000000000e+01 0 -1 1485 - 1.1500000000000000e+01 -2 -3 1486 4.2500000000000000e+01 - - -6.1570602655410767e-01 3.6179527640342712e-01 - 4.0053242444992065e-01 -2.0592956244945526e-01 - <_> - 4.2406646728515625e+01 - - 1 2 1487 3.6150000000000000e+02 0 -1 1488 - 7.6500000000000000e+01 -2 -3 1489 2.5000000000000000e+00 - - 2.1660387516021729e-01 -3.7647891044616699e-01 - 6.7929941415786743e-01 -8.0690664052963257e-01 - <_> - 4.2598564147949219e+01 - - 1 2 1490 3.2350000000000000e+02 0 -1 1491 - 9.5000000000000000e+00 -2 -3 1492 1.0350000000000000e+02 - - 2.8338834643363953e-01 -2.8749933838844299e-01 - -4.2244365811347961e-01 8.4098398685455322e-01 - <_> - 4.2448162078857422e+01 - - 1 2 1493 6.8500000000000000e+01 0 -1 1494 - 1.9500000000000000e+01 -2 -3 1495 2.8500000000000000e+01 - - 4.4642934203147888e-01 -8.8521170616149902e-01 - 3.8606628775596619e-01 -1.5039834380149841e-01 - <_> - 4.2684196472167969e+01 - - 1 2 1496 1.1350000000000000e+02 0 -1 1497 - 1.2195000000000000e+03 -2 -3 1498 465. - - -3.4444883465766907e-01 2.3603120446205139e-01 - 7.6531344652175903e-01 -3.9807590842247009e-01 - <_> - 4.2983776092529297e+01 - - 1 2 1499 1.5725000000000000e+03 0 -1 1500 - 7.6500000000000000e+01 -2 -3 1501 5.5000000000000000e+00 - - -3.2652869820594788e-01 2.9957908391952515e-01 - 3.3552268147468567e-01 -7.9458123445510864e-01 - <_> - 4.3334823608398438e+01 - - 1 2 1502 2.2500000000000000e+01 0 -1 1503 - 1.5000000000000000e+00 -2 -3 1504 9.5000000000000000e+00 - - -5.7209235429763794e-01 3.5104992985725403e-01 - 3.1476601958274841e-02 -5.8574450016021729e-01 - <_> - 4.3509834289550781e+01 - - 1 2 1505 51199. 0 -1 1506 5.5950000000000000e+02 -2 -3 1507 - 9.3125000000000000e+03 - - 3.0665323138237000e-01 -1.8138632178306580e-01 - -9.8618561029434204e-01 1. - <_> - 4.3432380676269531e+01 - - 1 2 1508 2.3365000000000000e+03 0 -1 1509 1614. -2 -3 1510 - 2.9285000000000000e+03 - - -6.6426819562911987e-01 5.2347922325134277e-01 - 6.3229858875274658e-01 -7.7455088496208191e-02 - <_> - 4.3682022094726562e+01 - - 1 2 1511 1.4850000000000000e+02 0 -1 1512 - 3.4500000000000000e+01 -2 -3 1513 4351. - - -4.1966313123703003e-01 2.4964161217212677e-01 - -9.2960160970687866e-01 -1.1052240431308746e-01 - <_> - 4.3838462829589844e+01 - - 1 2 1514 1.5000000000000000e+00 0 -1 1515 - 5.6150000000000000e+02 -2 -3 1516 2.5215000000000000e+03 - - -7.1278488636016846e-01 4.3191543221473694e-01 - -4.5729264616966248e-01 2.2259603440761566e-01 - <_> - 4.3913276672363281e+01 - - 1 2 1517 452. 0 -1 1518 1.5850000000000000e+02 -2 -3 1519 - 3.6500000000000000e+01 - - 2.7823349833488464e-01 -4.4655042886734009e-01 - -7.6742780208587646e-01 1.3798709213733673e-01 - <_> - 4.3755275726318359e+01 - - 1 2 1520 1.2150000000000000e+02 0 -1 1521 - 6.1500000000000000e+01 -2 -3 1522 2.4150000000000000e+02 - - 5.8016028255224228e-02 -5.8355945348739624e-01 - -6.6341340541839600e-01 4.4974878430366516e-01 - <_> - 4.3783382415771484e+01 - - 1 2 1523 1.0750000000000000e+02 0 -1 1524 - 4.5000000000000000e+00 -2 -3 1525 1080. - - 1.8615058064460754e-01 -4.8687478899955750e-01 - 4.3972969055175781e-01 -9.3779921531677246e-01 - <_> - 4.3861518859863281e+01 - - 1 2 1526 8.6500000000000000e+01 0 -1 1527 - 1.5000000000000000e+00 -2 -3 1528 1.1050000000000000e+02 - - 4.7667163610458374e-01 -4.0568494796752930e-01 - -6.4215010404586792e-01 2.9706746339797974e-02 - <_> - 4.4278926849365234e+01 - - 1 2 1529 1.7500000000000000e+01 0 -1 1530 - 1.4500000000000000e+01 -2 -3 1531 7.5500000000000000e+01 - - -6.9139021635055542e-01 6.4281481504440308e-01 - 1.8875285983085632e-02 8.0112278461456299e-01 - <_> - 4.4180038452148438e+01 - - 1 2 1532 1.3500000000000000e+01 0 -1 1533 - 3.7500000000000000e+01 -2 -3 1534 5.5000000000000000e+00 - - -5.8149468898773193e-01 3.6302325129508972e-01 - 2.1482136845588684e-01 -4.8260265588760376e-01 - <_> - 4.4126861572265625e+01 - - 1 2 1535 1.1500000000000000e+01 0 -1 1536 - 4.1450000000000000e+02 -2 -3 1537 448. - - 6.4174473285675049e-01 -5.1509088277816772e-01 - 3.2752755284309387e-01 -4.6536535024642944e-01 - <_> - 4.4402042388916016e+01 - - 1 2 1538 2.3500000000000000e+01 0 -1 1539 - 1.5000000000000000e+00 -2 -3 1540 1.2750000000000000e+02 - - 4.6208882704377174e-03 -7.9509699344635010e-01 - 2.7518290281295776e-01 -5.4167103767395020e-01 - <_> - 4.4075366973876953e+01 - - 1 2 1541 5.0000000000000000e-01 0 -1 1542 - 1.1500000000000000e+01 -2 -3 1543 1.1150000000000000e+02 - - -6.2465864419937134e-01 6.2209093570709229e-01 - -4.6270170807838440e-01 1.2467093765735626e-01 - <_> - 4.4579692840576172e+01 - - 1 2 1544 1.8500000000000000e+01 0 -1 1545 - 6.9500000000000000e+01 -2 -3 1546 4.0500000000000000e+01 - - 5.0432658195495605e-01 -1.5816394984722137e-01 - -6.3987523317337036e-01 1.9685916602611542e-01 - <_> - 4.4788379669189453e+01 - - 1 2 1547 1.2850000000000000e+02 0 -1 1548 - 1.3644850000000000e+05 -2 -3 1549 4.5000000000000000e+00 - - -1.3887935876846313e-01 -8.6476135253906250e-01 - 5.3407603502273560e-01 -1.0505830496549606e-01 - <_> - 4.4465953826904297e+01 - - 1 2 1550 1.0077500000000000e+04 0 -1 1551 - 1.9500000000000000e+01 -2 -3 1552 2.8365000000000000e+03 - - 1.8253329396247864e-01 -5.4899621009826660e-01 - 7.3290371894836426e-01 -1.2869638204574585e-01 - <_> - 4.4705356597900391e+01 - - 1 2 1553 7.0500000000000000e+01 0 -1 1554 - 2.6950000000000000e+02 -2 -3 1555 1.0050000000000000e+02 - - 1.6822533309459686e-01 -6.7410588264465332e-01 - 2.3940414190292358e-01 -7.4502784013748169e-01 - <_> - 4.4884269714355469e+01 - - 1 2 1556 1680. 0 -1 1557 7.5000000000000000e+00 -2 -3 1558 - 3.5850000000000000e+02 - - 2.8662183880805969e-01 -9.1832697391510010e-01 - 1.7891472578048706e-01 -5.9693121910095215e-01 - <_> - 4.4728557586669922e+01 - - 1 2 1559 1.7555000000000000e+03 0 -1 1560 19. -2 -3 1561 - 2332. - - -5.2603626251220703e-01 7.1634864807128906e-01 - -6.1052620410919189e-01 -4.9342345446348190e-03 - <_> - 4.4819171905517578e+01 - - 1 2 1562 1.3750000000000000e+02 0 -1 1563 - 1.5750000000000000e+02 -2 -3 1564 1.3050000000000000e+02 - - -6.0166075825691223e-02 5.8633291721343994e-01 - -8.1866687536239624e-01 1. - <_> - 4.4643035888671875e+01 - - 1 2 1565 6.3500000000000000e+01 0 -1 1566 - 1.9500000000000000e+01 -2 -3 1567 552. - - -7.2267347574234009e-01 2.3417486250400543e-01 - 4.9026021361351013e-01 -6.2466406822204590e-01 - <_> - 4.4639259338378906e+01 - - 1 2 1568 3.5000000000000000e+00 0 -1 1569 - 2.4500000000000000e+01 -2 -3 1570 8.2150000000000000e+02 - - -3.5061278939247131e-01 4.3918311595916748e-01 - 4.6116840094327927e-02 -6.6601943969726562e-01 - <_> - 4.4594688415527344e+01 - - 1 2 1571 1.3500000000000000e+01 0 -1 1572 - 8.5000000000000000e+00 -2 -3 1573 2.1500000000000000e+01 - - -2.5554552674293518e-02 -8.3599025011062622e-01 - 6.3880258798599243e-01 -4.4572211802005768e-02 - <_> - 4.4976432800292969e+01 - - 1 2 1574 9.0350000000000000e+02 0 -1 1575 - 2.0500000000000000e+01 -2 -3 1576 1.2615000000000000e+03 - - 3.8174423575401306e-01 -2.4711053073406219e-01 - -7.3085212707519531e-01 1.3097274303436279e-01 - <_> - 4.5154560089111328e+01 - - 1 2 1577 3.2500000000000000e+01 0 -1 1578 41. -2 -3 1579 - 1153. - - 1.3735578954219818e-01 -9.0119731426239014e-01 - -8.0212074518203735e-01 1.7812842130661011e-01 - <_> - 4.5438049316406250e+01 - - 1 2 1580 3.4500000000000000e+01 0 -1 1581 - 1.4500000000000000e+01 -2 -3 1582 1.8650000000000000e+02 - - 7.1418809890747070e-01 -4.1756910085678101e-01 - 3.2309561967849731e-01 -6.6359835863113403e-01 - <_> - 4.5376655578613281e+01 - - 1 2 1583 5.7500000000000000e+01 0 -1 1584 - 3.4835000000000000e+03 -2 -3 1585 1.6677500000000000e+04 - - 9.3545570969581604e-02 -6.6382712125778198e-01 - -6.0366630554199219e-01 3.5915172100067139e-01 - <_> - 4.5476417541503906e+01 - - 1 2 1586 1.2235000000000000e+03 0 -1 1587 - 5.0000000000000000e-01 -2 -3 1588 2.0550000000000000e+02 - - 9.9763244390487671e-02 -5.6198817491531372e-01 - 5.3732144832611084e-01 -2.9778870940208435e-01 - <_> - 4.5174198150634766e+01 - - 1 2 1589 2.5750000000000000e+02 0 -1 1590 - 3.4500000000000000e+01 -2 -3 1591 4.5000000000000000e+00 - - -5.3968584537506104e-01 9.1056388616561890e-01 - 2.8303310275077820e-01 -3.0222162604331970e-01 - <_> - 4.5571937561035156e+01 - - 1 2 1592 3.5500000000000000e+01 0 -1 1593 - 2.5000000000000000e+00 -2 -3 1594 9.5000000000000000e+00 - - 8.1757766008377075e-01 -9.3560528755187988e-01 - 4.8287272453308105e-01 -1.0781970620155334e-01 - <_> - 4.5820465087890625e+01 - - 1 2 1595 2.6500000000000000e+01 0 -1 1596 - 9.5000000000000000e+00 -2 -3 1597 64. - - 1.6339369118213654e-01 -4.8592147231101990e-01 - -8.0971640348434448e-01 4.2723599076271057e-01 - <_> - 4.5875530242919922e+01 - - 1 2 1598 4.8150000000000000e+02 0 -1 1599 - 1.9285000000000000e+03 -2 -3 1600 1.1625000000000000e+03 - - -7.9999005794525146e-01 1.8668703734874725e-01 - 6.2736529111862183e-01 -1.2364284694194794e-01 - <_> - 4.6327709197998047e+01 - - 1 2 1601 8.9450000000000000e+02 0 -1 1602 - 1.5000000000000000e+00 -2 -3 1603 6634. - - 1.7092481255531311e-02 -6.5232801437377930e-01 - 5.6317013502120972e-01 -4.4582167267799377e-01 - <_> - 4.6148258209228516e+01 - - 1 2 1604 43039. 0 -1 1605 1.5500000000000000e+01 -2 -3 1606 - 3.8225000000000000e+03 - - -1. 4.9083131551742554e-01 -3.1666326522827148e-01 - 6.4053624868392944e-01 - <_> - 4.6105995178222656e+01 - - 1 2 1607 3.5000000000000000e+00 0 -1 1608 21. -2 -3 1609 - 2.6500000000000000e+01 - - -9.7276186943054199e-01 1. 3.7125155329704285e-01 - -1.5020866692066193e-01 - <_> - 4.6445560455322266e+01 - - 1 2 1610 1.4450000000000000e+02 0 -1 1611 - 1.0500000000000000e+01 -2 -3 1612 6.4500000000000000e+01 - - 5.7516593486070633e-02 -5.1498800516128540e-01 - 8.0552762746810913e-01 -1. - <_> - 4.6819828033447266e+01 - - 1 2 1613 8.8500000000000000e+01 0 -1 1614 - 5.0000000000000000e-01 -2 -3 1615 3.1500000000000000e+01 - - 2.4280284345149994e-01 -5.9024065732955933e-01 - 4.4487208127975464e-01 -1.7842440307140350e-01 - <_> - 4.6427459716796875e+01 - - 1 2 1616 3.1500000000000000e+01 0 -1 1617 - 3.6500000000000000e+01 -2 -3 1618 1.1135000000000000e+03 - - -3.8508945703506470e-01 5.4531073570251465e-01 - -3.9237090945243835e-01 5.3639191389083862e-01 - <_> - 4.6388378143310547e+01 - - 1 2 1619 1.3495000000000000e+03 0 -1 1620 - 1.2865000000000000e+03 -2 -3 1621 1.5000000000000000e+00 - - -3.9079591631889343e-02 7.2226065397262573e-01 - 1.6772003471851349e-01 -8.0866611003875732e-01 - <_> - 4.6664485931396484e+01 - - 1 2 1622 5.7650000000000000e+02 0 -1 1623 38772. -2 -3 1624 - 3.5000000000000000e+00 - - -6.7578887939453125e-01 4.5766559243202209e-01 - 3.2720005512237549e-01 -3.8240414857864380e-01 - <_> - 4.6878482818603516e+01 - - 1 2 1625 1.6500000000000000e+01 0 -1 1626 - 3.1050000000000000e+02 -2 -3 1627 1.9500000000000000e+01 - - 3.3941693603992462e-02 -8.9211910963058472e-01 - -7.0304632186889648e-01 2.1399846673011780e-01 - <_> - 4.6925651550292969e+01 - - 1 2 1628 1.0285000000000000e+03 0 -1 1629 - 2.7950000000000000e+02 -2 -3 1630 9.5000000000000000e+00 - - 4.1127714514732361e-01 -1.3439148664474487e-01 - -7.5179332494735718e-01 3.4586694836616516e-01 - <_> - 4.7010379791259766e+01 - - 1 2 1631 2.4500000000000000e+01 0 -1 1632 - 1.1265000000000000e+03 -2 -3 1633 5.5000000000000000e+00 - - -5.5471497774124146e-01 8.4728397428989410e-02 - -6.6250604391098022e-01 5.0282490253448486e-01 - <_> - 4.7003398895263672e+01 - - 1 2 1634 5.5000000000000000e+00 0 -1 1635 - 1.3500000000000000e+01 -2 -3 1636 5.3500000000000000e+01 - - -6.1465358734130859e-01 5.2310514450073242e-01 - -6.9816145114600658e-03 -6.2556844949722290e-01 - <_> - 4.7450687408447266e+01 - - 1 2 1637 8.5000000000000000e+00 0 -1 1638 - 1.9500000000000000e+01 -2 -3 1639 7.3500000000000000e+01 - - 1.8994300067424774e-01 -5.1936614513397217e-01 - -5.1978632807731628e-02 5.4172980785369873e-01 - <_> - 4.7289505004882812e+01 - - 1 2 1640 4.5000000000000000e+00 0 -1 1641 - 5.0000000000000000e-01 -2 -3 1642 7.9500000000000000e+01 - - -9.3673211336135864e-01 4.2628908157348633e-01 - -6.1518812179565430e-01 3.8786195218563080e-02 - <_> - 4.7609291076660156e+01 - - 1 2 1643 9.0500000000000000e+01 0 -1 1644 - 1.7500000000000000e+01 -2 -3 1645 5.5500000000000000e+01 - - 2.5377960875630379e-02 8.4010601043701172e-01 - -5.5201697349548340e-01 9.3266852200031281e-02 - <_> - 4.6873203277587891e+01 - - 1 2 1646 181. 0 -1 1647 3.2500000000000000e+01 -2 -3 1648 - 1.5500000000000000e+01 - - -2.4539522826671600e-01 3.0167981982231140e-01 - -7.8757899999618530e-01 1. - <_> - 4.7333202362060547e+01 - - 1 2 1649 3.5000000000000000e+00 0 -1 1650 - 3.6450000000000000e+02 -2 -3 1651 131. - - 4.5999684929847717e-01 -8.5532951354980469e-01 - -7.6767379045486450e-01 -4.0166407823562622e-02 - <_> - 4.7809810638427734e+01 - - 1 2 1652 2.3415000000000000e+03 0 -1 1653 - 5.5550000000000000e+02 -2 -3 1654 7.8650000000000000e+02 - - 1.0606591403484344e-01 -7.2960245609283447e-01 - 4.7661080956459045e-01 -1.5633082389831543e-01 - <_> - 4.8187953948974609e+01 - - 1 2 1655 5.0500000000000000e+01 0 -1 1656 - 2.7500000000000000e+01 -2 -3 1657 4.6500000000000000e+01 - - -3.6588409543037415e-01 2.0847728848457336e-01 - 5.3038245439529419e-01 -9.1906154155731201e-01 - <_> - 4.8385017395019531e+01 - - 1 2 1658 2.5000000000000000e+00 0 -1 1659 - 5.0000000000000000e-01 -2 -3 1660 5.0000000000000000e-01 - - -8.3917874097824097e-01 3.5120227932929993e-01 - 4.4822514057159424e-02 -5.4643929004669189e-01 - <_> - 4.7983116149902344e+01 - - 1 2 1661 1.7500000000000000e+01 0 -1 1662 46. -2 -3 1663 - 4.8500000000000000e+01 - - -8.7424659729003906e-01 4.0549939870834351e-01 - -4.3008446693420410e-01 3.0111113190650940e-01 - <_> - 4.7767936706542969e+01 - - 1 2 1664 3.7250000000000000e+02 0 -1 1665 - 1.9500000000000000e+01 -2 -3 1666 1.7500000000000000e+01 - - -2.1517898142337799e-01 3.3102101087570190e-01 - -7.5989711284637451e-01 2.0524039864540100e-01 - <_> - 4.7636989593505859e+01 - - 1 2 1667 5.0000000000000000e-01 0 -1 1668 - 3.5000000000000000e+00 -2 -3 1669 2.2050000000000000e+02 - - -5.5064278841018677e-01 4.6156671643257141e-01 - -3.4933045506477356e-01 3.1964045763015747e-01 - <_> - 4.8035350799560547e+01 - - 1 2 1670 5.5000000000000000e+00 0 -1 1671 - 1.6500000000000000e+01 -2 -3 1672 1.5000000000000000e+00 - - 5.4588496685028076e-01 -5.2224334329366684e-02 1. - -9.5129132270812988e-01 - <_> - 4.8075088500976562e+01 - - 1 2 1673 5.8500000000000000e+01 0 -1 1674 - 1.7500000000000000e+01 -2 -3 1675 60. - - 3.9737168699502945e-02 -4.9285057187080383e-01 - 5.5449837446212769e-01 -5.8396834135055542e-01 - <_> - 4.8273761749267578e+01 - - 1 2 1676 5.5000000000000000e+00 0 -1 1677 - 2.4500000000000000e+01 -2 -3 1678 5.5450000000000000e+02 - - 1.7725417017936707e-01 -8.1391674280166626e-01 - -5.4412531852722168e-01 2.6674869656562805e-01 - <_> - 4.8013420104980469e+01 - - 1 2 1679 8.5000000000000000e+00 0 -1 1680 1955. -2 -3 1681 - 96. - - 1.7242313921451569e-01 -9.2252993583679199e-01 - 1.7602242529392242e-01 -6.7200791835784912e-01 - <_> - 4.8326412200927734e+01 - - 1 2 1682 3.0104500000000000e+04 0 -1 1683 - 2.8050000000000000e+02 -2 -3 1684 2.7154500000000000e+04 - - 3.1299278140068054e-01 -1.8952211737632751e-01 - -9.5317900180816650e-01 1. - <_> - 4.8304637908935547e+01 - - 1 2 1685 5.4500000000000000e+01 0 -1 1686 - 4.4650000000000000e+02 -2 -3 1687 3.5000000000000000e+00 - - 2.1255780756473541e-01 -8.1515192985534668e-01 - 6.9879400730133057e-01 -2.3700682446360588e-02 - <_> - 4.8183525085449219e+01 - - 1 2 1688 2.5000000000000000e+00 0 -1 1689 128. -2 -3 1690 - 3.5450000000000000e+02 - - -8.0286073684692383e-01 8.9803677797317505e-01 - 3.0971682071685791e-01 -2.6458665728569031e-01 - <_> - 4.8420330047607422e+01 - - 1 2 1691 4.5000000000000000e+00 0 -1 1692 1348. -2 -3 1693 - 1.6500000000000000e+01 - - 2.1627983450889587e-01 -9.3673717975616455e-01 - 2.7623519301414490e-01 -2.4342669546604156e-01 - <_> - 4.8284450531005859e+01 - - 1 2 1694 5.0350000000000000e+02 0 -1 1695 - 5.1950000000000000e+02 -2 -3 1696 7.8350000000000000e+02 - - -3.7904888391494751e-01 9.6044069528579712e-01 - 7.1280044317245483e-01 -2.8820293024182320e-02 - <_> - 4.8518047332763672e+01 - - 1 2 1697 7.3500000000000000e+01 0 -1 1698 - 1.0750000000000000e+02 -2 -3 1699 1.0508500000000000e+04 - - 2.3359699547290802e-01 -3.2509902119636536e-01 - -5.7240724563598633e-01 6.9403934478759766e-01 - <_> - 4.8881092071533203e+01 - - 1 2 1700 1.9500000000000000e+01 0 -1 1701 - 2.5000000000000000e+00 -2 -3 1702 5.7450000000000000e+02 - - 7.0620238780975342e-02 -6.4059627056121826e-01 - -5.6051510572433472e-01 3.6304420232772827e-01 - <_> - 4.8674976348876953e+01 - - 1 2 1703 1.6500000000000000e+01 0 -1 1704 2698. -2 -3 1705 - 1.8500000000000000e+01 - - -9.4122928380966187e-01 1. 3.0906781554222107e-01 - -2.2473946213722229e-01 - <_> - 4.8650527954101562e+01 - - 1 2 1706 285. 0 -1 1707 2.5000000000000000e+00 -2 -3 1708 - 2.9500000000000000e+01 - - -6.1351448297500610e-01 6.1334443092346191e-01 - -5.3962910175323486e-01 9.5953509211540222e-02 - <_> - 4.8581436157226562e+01 - - 1 2 1709 1.5000000000000000e+00 0 -1 1710 - 7.2500000000000000e+01 -2 -3 1711 2.5000000000000000e+00 - - -1.5018194913864136e-01 5.4274356365203857e-01 - 3.2649326324462891e-01 -4.6085461974143982e-01 - <_> - 4.8824050903320312e+01 - - 1 2 1712 7.5000000000000000e+00 0 -1 1713 - 1.3500000000000000e+01 -2 -3 1714 1.4750000000000000e+02 - - -9.4072926044464111e-01 4.9135723710060120e-01 - -3.6922344565391541e-01 2.8209823369979858e-01 - <_> - 4.9051761627197266e+01 - - 1 2 1715 1.2945000000000000e+03 0 -1 1716 - 2.5000000000000000e+00 -2 -3 1717 12557. - - 2.2771342098712921e-01 -3.0103012919425964e-01 - 8.6664509773254395e-01 -6.4184981584548950e-01 - <_> - 4.9400878906250000e+01 - - 1 2 1718 3.7500000000000000e+01 0 -1 1719 - 1.5000000000000000e+00 -2 -3 1720 1.7395000000000000e+03 - - 5.5372547358274460e-02 -6.4846998453140259e-01 - -5.1582384109497070e-01 3.7294328212738037e-01 - <_> - 4.9400951385498047e+01 - - 1 2 1721 1.9500000000000000e+01 0 -1 1722 - 2.7500000000000000e+01 -2 -3 1723 1.5500000000000000e+01 - - -1.0849715210497379e-02 -6.8436485528945923e-01 - -2.9969093203544617e-01 8.8249796628952026e-01 - <_> - 4.9150127410888672e+01 - - 1 2 1724 6695. 0 -1 1725 4.1995000000000000e+03 -2 -3 1726 - 3060. - - 6.0968101024627686e-01 -1.8973879516124725e-01 - 6.7397463321685791e-01 -2.9114890098571777e-01 - <_> - 4.9635650634765625e+01 - - 1 2 1727 1.2185000000000000e+03 0 -1 1728 - 6.7250000000000000e+02 -2 -3 1729 4.4500000000000000e+01 - - -3.2244133949279785e-01 8.5333442687988281e-01 - -6.7660027742385864e-01 4.8552277684211731e-01 - <_> - 4.9185047149658203e+01 - - 1 2 1730 4.6500000000000000e+01 0 -1 1731 - 1.7535000000000000e+03 -2 -3 1732 8.8500000000000000e+01 - - 1.1635149270296097e-01 -4.5060265064239502e-01 - -8.2891207933425903e-01 8.0917561054229736e-01 - <_> - 4.9572048187255859e+01 - - 1 2 1733 3.5000000000000000e+00 0 -1 1734 - 1.2500000000000000e+01 -2 -3 1735 4.4115000000000000e+03 - - -7.0214819908142090e-01 3.8700041174888611e-01 - -4.7868278622627258e-01 1.9085995852947235e-01 - <_> - 4.9520980834960938e+01 - - 1 2 1736 6.4500000000000000e+01 0 -1 1737 - 1.0850000000000000e+02 -2 -3 1738 9.5775000000000000e+03 - - -5.1066368818283081e-02 6.1802017688751221e-01 - -8.5373187065124512e-01 7.1274143457412720e-01 - <_> - 4.9744472503662109e+01 - - 1 2 1739 2.5000000000000000e+00 0 -1 1740 - 1.8500000000000000e+01 -2 -3 1741 8.5000000000000000e+00 - - -8.1709325313568115e-01 4.6844825148582458e-01 - 2.2349253296852112e-01 -4.7425210475921631e-01 - <_> - 5.0045192718505859e+01 - - 1 2 1742 1.2500000000000000e+01 0 -1 1743 - 7.5000000000000000e+00 -2 -3 1744 4.5000000000000000e+00 - - 4.9264114350080490e-02 -5.9978258609771729e-01 - 3.0072054266929626e-01 -7.8326350450515747e-01 - <_> - 5.0417678833007812e+01 - - 1 2 1745 4.1500000000000000e+01 0 -1 1746 - 3.5000000000000000e+00 -2 -3 1747 614. - - 4.2858477681875229e-02 -6.5439593791961670e-01 - 3.7248274683952332e-01 -6.0121566057205200e-01 - <_> - 5.0184413909912109e+01 - - 1 2 1748 1.8500000000000000e+01 0 -1 1749 - 1.9500000000000000e+01 -2 -3 1750 4.2335000000000000e+03 - - -3.9789116382598877e-01 3.3808970451354980e-01 - -6.7741900682449341e-01 -6.1766817234456539e-03 - <_> - 5.0395923614501953e+01 - - 1 2 1751 7.8500000000000000e+01 0 -1 1752 621. -2 -3 1753 - 1.1150000000000000e+02 - - -5.8525377511978149e-01 4.6244528889656067e-01 - -6.4186108112335205e-01 -1.5577160753309727e-02 - <_> - 5.0368152618408203e+01 - - 1 2 1754 7.4500000000000000e+01 0 -1 1755 - 8.0500000000000000e+01 -2 -3 1756 5.5000000000000000e+00 - - 2.7840653061866760e-01 -5.0665259361267090e-01 - 2.8003776073455811e-01 -6.6763132810592651e-01 - <_> - 5.0609447479248047e+01 - - 1 2 1757 4.5000000000000000e+00 0 -1 1758 - 5.0000000000000000e-01 -2 -3 1759 1.0050000000000000e+02 - - 1.4921510219573975e-01 -6.7458331584930420e-01 - 2.4129594862461090e-01 -7.1370732784271240e-01 - <_> - 5.0734519958496094e+01 - - 1 2 1760 8.1450000000000000e+02 0 -1 1761 - 3.1750000000000000e+02 -2 -3 1762 4.1450000000000000e+02 - - -3.4531843662261963e-01 5.5791461467742920e-01 - 5.3364270925521851e-01 -3.7804716825485229e-01 - <_> - 5.0482379913330078e+01 - - 1 2 1763 1.5500000000000000e+01 0 -1 1764 - 6.5000000000000000e+00 -2 -3 1765 2.7500000000000000e+01 - - -7.7612209320068359e-01 2.8200766444206238e-01 - -6.6070902347564697e-01 5.4497551918029785e-01 - <_> - 5.0946456909179688e+01 - - 1 2 1766 1.3055000000000000e+03 0 -1 1767 13080. -2 -3 1768 - 1.5000000000000000e+00 - - -1.6180552542209625e-02 6.9708949327468872e-01 - 1.5789812803268433e-01 -6.3250225782394409e-01 - <_> - 5.0942211151123047e+01 - - 1 2 1769 5.5000000000000000e+00 0 -1 1770 - 1.6500000000000000e+01 -2 -3 1771 1.1500000000000000e+01 - - -6.9032448530197144e-01 4.8323771357536316e-01 - -5.8806318044662476e-01 -4.2477925308048725e-03 - <_> - 5.0879100799560547e+01 - - 1 2 1772 3.2500000000000000e+01 0 -1 1773 - 1.5000000000000000e+00 -2 -3 1774 203. - - 7.2742664813995361e-01 -9.5186221599578857e-01 - 2.9152801632881165e-01 -2.9612061381340027e-01 - <_> - 5.1405494689941406e+01 - - 1 2 1775 5.9500000000000000e+01 0 -1 1776 - 5.0000000000000000e-01 -2 -3 1777 5.1500000000000000e+01 - - 2.0475186407566071e-01 -4.3729728460311890e-01 - 5.2639096975326538e-01 -5.4126620292663574e-01 - <_> - 5.1545295715332031e+01 - - 1 2 1778 5.1500000000000000e+01 0 -1 1779 113. -2 -3 1780 - 14. - - -8.7603360414505005e-01 1.3980150222778320e-01 1. - -9.8559749126434326e-01 - <_> - 5.1772174835205078e+01 - - 1 2 1781 5.0000000000000000e-01 0 -1 1782 - 5.0000000000000000e-01 -2 -3 1783 6.9500000000000000e+01 - - -8.5320812463760376e-01 5.4211145639419556e-01 - -4.2864811420440674e-01 1.9388379156589508e-01 - <_> - 5.1395809173583984e+01 - - 1 2 1784 4.1500000000000000e+01 0 -1 1785 - 2.4500000000000000e+01 -2 -3 1786 1.0350000000000000e+02 - - -3.6399099230766296e-01 2.9955938458442688e-01 - -6.9159519672393799e-01 4.9095645546913147e-01 - <_> - 5.1332057952880859e+01 - - 1 2 1787 1.1545000000000000e+03 0 -1 1788 - 1.0500000000000000e+01 -2 -3 1789 7.7350000000000000e+02 - - -8.4412866830825806e-01 2.4716804921627045e-01 - 6.3626372814178467e-01 -6.3753142952919006e-02 - <_> - 5.1058708190917969e+01 - - 1 2 1790 2.5000000000000000e+00 0 -1 1791 156. -2 -3 1792 - 667. - - 5.6390190124511719e-01 -7.4146884679794312e-01 - -2.7334854006767273e-01 6.9182580709457397e-01 - <_> - 5.1457290649414062e+01 - - 1 2 1793 1.8500000000000000e+01 0 -1 1794 125. -2 -3 1795 - 6.5000000000000000e+00 - - -5.9387379884719849e-01 8.3531779050827026e-01 - 6.5114057064056396e-01 -2.6395700871944427e-02 - <_> - 5.1741825103759766e+01 - - 1 2 1796 5.5000000000000000e+00 0 -1 1797 - 8.0500000000000000e+01 -2 -3 1798 6.5500000000000000e+01 - - 5.2819365262985229e-01 -3.8713422417640686e-01 - -6.3428682088851929e-01 3.1973972916603088e-02 - <_> - 5.1987751007080078e+01 - - 1 2 1799 9.2950000000000000e+02 0 -1 1800 - 1.7500000000000000e+01 -2 -3 1801 3.3500000000000000e+01 - - 2.9681459069252014e-01 -6.8903458118438721e-01 - -5.5376708507537842e-01 2.4592779576778412e-01 - <_> - 5.1639968872070312e+01 - - 1 2 1802 5.0000000000000000e-01 0 -1 1803 727. -2 -3 1804 - 1195. - - 4.7003021836280823e-01 -8.6940318346023560e-01 - -3.4778383374214172e-01 9.5309317111968994e-01 - <_> - 5.1864089965820312e+01 - - 1 2 1805 1.6500000000000000e+01 0 -1 1806 - 1.5500000000000000e+01 -2 -3 1807 1.4500000000000000e+01 - - -8.4845769405364990e-01 2.4072749912738800e-01 - 2.2412241995334625e-01 -5.8960992097854614e-01 - <_> - 5.1842327117919922e+01 - - 1 2 1808 1.3500000000000000e+01 0 -1 1809 - 1.1693500000000000e+04 -2 -3 1810 108. - - -2.1761292591691017e-02 -7.1312093734741211e-01 -1. - 7.1802109479904175e-01 - <_> - 5.2474052429199219e+01 - - 1 2 1811 5.6500000000000000e+01 0 -1 1812 - 2.7150000000000000e+02 -2 -3 1813 4.7050000000000000e+02 - - 4.8798479139804840e-02 -6.1629486083984375e-01 - 6.3172489404678345e-01 -7.8125256299972534e-01 - <_> - 5.2882488250732422e+01 - - 1 2 1814 2.7500000000000000e+01 0 -1 1815 - 2.7950000000000000e+02 -2 -3 1816 1.2500000000000000e+01 - - 1.4727012813091278e-01 -4.5306998491287231e-01 - -9.6783083677291870e-01 4.0843614935874939e-01 - <_> - 5.2590320587158203e+01 - - 1 2 1817 1.2500000000000000e+01 0 -1 1818 2332. -2 -3 1819 - 2.0500000000000000e+01 - - -4.0328302979469299e-01 3.9351496100425720e-01 - -4.5640042424201965e-01 7.0570003986358643e-01 - <_> - 5.2686405181884766e+01 - - 1 2 1820 2.8450000000000000e+02 0 -1 1821 - 5.1375000000000000e+03 -2 -3 1822 5524. - - -6.9284421205520630e-01 5.7867264747619629e-01 - -5.0904291868209839e-01 4.2930658906698227e-02 - <_> - 5.2665336608886719e+01 - - 1 2 1823 5.0000000000000000e-01 0 -1 1824 - 1.0500000000000000e+01 -2 -3 1825 3.1050000000000000e+02 - - -6.9999736547470093e-01 5.0521236658096313e-01 - -2.1066894754767418e-02 -6.7034846544265747e-01 - <_> - 5.2668560028076172e+01 - - 1 2 1826 1.5000000000000000e+00 0 -1 1827 - 4.5000000000000000e+00 -2 -3 1828 3.9500000000000000e+01 - - -8.5607993602752686e-01 2.3388290405273438e-01 - -4.7936838865280151e-01 6.4502292871475220e-01 - <_> - 5.2418178558349609e+01 - - 1 2 1829 2.5000000000000000e+00 0 -1 1830 - 1.2500000000000000e+01 -2 -3 1831 3.7450000000000000e+02 - - -2.5030246376991272e-01 4.1110610961914062e-01 - -4.8104089498519897e-01 2.8128054738044739e-01 - <_> - 5.2447761535644531e+01 - - 1 2 1832 1.4500000000000000e+01 0 -1 1833 - 1.6038500000000000e+04 -2 -3 1834 6.5000000000000000e+00 - - 6.2847787141799927e-01 -3.8954043388366699e-01 - 2.9580958187580109e-02 -6.1391896009445190e-01 - <_> - 5.2839599609375000e+01 - - 1 2 1835 8.0500000000000000e+01 0 -1 1836 - 1.4845000000000000e+03 -2 -3 1837 1.1500000000000000e+01 - - -4.2797079682350159e-01 7.2983002662658691e-01 - -4.2472079396247864e-01 3.9183807373046875e-01 - <_> - 5.3161972045898438e+01 - - 1 2 1838 169. 0 -1 1839 2.3500000000000000e+01 -2 -3 1840 - 3.0500000000000000e+01 - - 3.2237488031387329e-01 -2.9692310094833374e-01 - 5.2028205245733261e-02 -8.3673799037933350e-01 - <_> - 5.3484062194824219e+01 - - 1 2 1841 9.5000000000000000e+00 0 -1 1842 - 4.1565000000000000e+03 -2 -3 1843 924. - - 1.3346555642783642e-02 -7.3501825332641602e-01 - -5.0849604606628418e-01 3.2209011912345886e-01 - <_> - 5.3532875061035156e+01 - - 1 2 1844 5.0550000000000000e+02 0 -1 1845 - 5.5000000000000000e+00 -2 -3 1846 8.2500000000000000e+01 - - 3.6607748270034790e-01 -4.2199668288230896e-01 - -7.4034929275512695e-01 3.8815331459045410e-01 - <_> - 5.3596260070800781e+01 - - 1 2 1847 1.9550000000000000e+02 0 -1 1848 - 7.6850000000000000e+02 -2 -3 1849 7.7350000000000000e+02 - - -3.7186509370803833e-01 4.2454031109809875e-01 - 4.2895314097404480e-01 -4.3257468938827515e-01 - <_> - 5.3252147674560547e+01 - - 1 2 1850 4.2500000000000000e+01 0 -1 1851 - 4.5500000000000000e+01 -2 -3 1852 2.9500000000000000e+01 - - 3.5978814959526062e-01 -7.1406579017639160e-01 - -4.4595164060592651e-01 5.2671235799789429e-01 - <_> - 5.3540912628173828e+01 - - 1 2 1853 2.0500000000000000e+01 0 -1 1854 276. -2 -3 1855 - 1.2850000000000000e+02 - - 3.2382410764694214e-01 -6.7686492204666138e-01 - 2.8876608610153198e-01 -5.3703272342681885e-01 - <_> - 5.4058471679687500e+01 - - 1 2 1856 1.1065000000000000e+03 0 -1 1857 - 4.5000000000000000e+00 -2 -3 1858 1570. - - -4.9808049201965332e-01 5.8341735601425171e-01 - -4.8129281401634216e-01 1.1452827602624893e-01 - <_> - 5.3559310913085938e+01 - - 1 2 1859 5.0000000000000000e-01 0 -1 1860 - 9.0500000000000000e+01 -2 -3 1861 1.4250000000000000e+02 - - 4.2286753654479980e-01 -7.5187528133392334e-01 - -5.5336773395538330e-01 1.0487236082553864e-01 - <_> - 5.3792110443115234e+01 - - 1 2 1862 5.5000000000000000e+00 0 -1 1863 - 5.2850000000000000e+02 -2 -3 1864 6.5000000000000000e+00 - - -9.8098456859588623e-01 2.5169646739959717e-01 - 3.1981575489044189e-01 -2.3502953350543976e-01 - <_> - 5.4220581054687500e+01 - - 1 2 1865 1.4500000000000000e+01 0 -1 1866 - 2.4025000000000000e+03 -2 -3 1867 4.5000000000000000e+00 - - 2.7904801070690155e-02 -8.8576656579971313e-01 - 4.2847126722335815e-01 -1.1248188465833664e-01 - <_> - 5.4116458892822266e+01 - - 1 2 1868 3.0500000000000000e+01 0 -1 1869 - 1.0500000000000000e+01 -2 -3 1870 1.5000000000000000e+00 - - 2.2367130219936371e-01 -9.1485178470611572e-01 - 5.5012780427932739e-01 -1.0412286967039108e-01 - <_> - 5.4431377410888672e+01 - - 1 2 1871 1110. 0 -1 1872 2.4500000000000000e+01 -2 -3 1873 - 8.7500000000000000e+01 - - 6.6319614648818970e-02 -9.0293776988983154e-01 - -2.7686271071434021e-01 3.1491985917091370e-01 - <_> - 5.3841773986816406e+01 - - 1 2 1874 3.1500000000000000e+01 0 -1 1875 - 5.2950000000000000e+02 -2 -3 1876 2.8335000000000000e+03 - - 4.3545942753553391e-03 7.3121100664138794e-01 - 3.2255075871944427e-02 -6.5287035703659058e-01 - <_> - 5.3977920532226562e+01 - - 1 2 1877 4.4635000000000000e+03 0 -1 1878 - 3.5000000000000000e+00 -2 -3 1879 1.2150000000000000e+02 - - -8.3098447322845459e-01 1.3614629209041595e-01 -1. 1. - <_> - 5.4538074493408203e+01 - - 1 2 1880 2.0500000000000000e+01 0 -1 1881 - 7.8500000000000000e+01 -2 -3 1882 5.0500000000000000e+01 - - -7.4102438986301422e-02 6.1979264020919800e-01 - 8.4239649772644043e-01 -8.3167529106140137e-01 - <_> - 5.4199844360351562e+01 - - 0 1 1883 5.5000000000000000e+00 0 1 1883 5.5000000000000000e+00 -1 -2 1884 - 2.3500000000000000e+01 - - -1. -1. 1.8631875514984131e-01 -3.9786672592163086e-01 - <_> - 5.4321243286132812e+01 - - 1 2 1885 100108. 0 -1 1886 2.4450000000000000e+02 -2 -3 1887 - 9.5000000000000000e+00 - - -6.4501583576202393e-01 1.2139873951673508e-01 - -9.8769044876098633e-01 1. - <_> - 5.4476604461669922e+01 - - 1 2 1888 3.0500000000000000e+01 0 -1 1889 832. -2 -3 1890 - 3.8650000000000000e+02 - - 4.7927451133728027e-01 -3.6918625235557556e-01 - 4.3850061297416687e-01 -4.2658120393753052e-01 - <_> - 5.4880313873291016e+01 - - 1 2 1891 4.5000000000000000e+00 0 -1 1892 - 1.8500000000000000e+01 -2 -3 1893 9.5000000000000000e+00 - - -8.9552253484725952e-01 1. 4.0370723605155945e-01 - -1.3244532048702240e-01 - <_> - 5.4826488494873047e+01 - - 1 2 1894 3.3500000000000000e+01 0 -1 1895 - 5.0000000000000000e-01 -2 -3 1896 1.5000000000000000e+00 - - 5.2266705036163330e-01 -4.9189320206642151e-01 - 4.7518423199653625e-01 -1.8694840371608734e-01 - <_> - 5.4719253540039062e+01 - - 1 2 1897 1.3250000000000000e+02 0 -1 1898 197. -2 -3 1899 - 5.5000000000000000e+00 - - -2.5596961379051208e-02 -8.0278450250625610e-01 - 5.8479261398315430e-01 -1.0723467171192169e-01 - <_> - 5.4927463531494141e+01 - - 1 2 1900 3.5000000000000000e+00 0 -1 1901 - 2.7500000000000000e+01 -2 -3 1902 4.5000000000000000e+00 - - -9.8025721311569214e-01 1. 5.0813627243041992e-01 - -9.1872639954090118e-02 - <_> - 5.5091140747070312e+01 - - 1 2 1903 3.5500000000000000e+01 0 -1 1904 590. -2 -3 1905 - 9.5000000000000000e+00 - - 3.2067620754241943e-01 -8.1219708919525146e-01 - 3.9956301450729370e-01 -1.7662063241004944e-01 - <_> - 5.5048011779785156e+01 - - 1 2 1906 1.5500000000000000e+01 0 -1 1907 - 2.5000000000000000e+00 -2 -3 1908 1.1500000000000000e+01 - - 4.5108359307050705e-02 -5.7894098758697510e-01 - 5.1151078939437866e-01 -6.0667592287063599e-01 - <_> - 5.4623245239257812e+01 - - 1 2 1909 2.6500000000000000e+01 0 -1 1910 - 1.1500000000000000e+01 -2 -3 1911 2.0250000000000000e+02 - - 4.0922752022743225e-01 -6.0327196121215820e-01 - 3.5508340597152710e-01 -4.1403025388717651e-01 - <_> - 5.4938964843750000e+01 - - 1 2 1912 4.4450000000000000e+02 0 -1 1913 - 4.8075000000000000e+03 -2 -3 1914 5.0000000000000000e-01 - - 3.7132555246353149e-01 -9.4460356235504150e-01 - 3.1572005152702332e-01 -2.5736778974533081e-01 - <_> - 5.5008499145507812e+01 - - 1 2 1915 2.4350000000000000e+02 0 -1 1916 - 1.6500000000000000e+01 -2 -3 1917 98. - - 6.9533005356788635e-02 -5.5879753828048706e-01 - 5.2043431997299194e-01 -5.5762660503387451e-01 - <_> - 5.5581649780273438e+01 - - 1 2 1918 1.2755000000000000e+03 0 -1 1919 - 1.5000000000000000e+00 -2 -3 1920 1.4500000000000000e+01 - - 2.7316585183143616e-01 -3.9282438158988953e-01 - -8.5869687795639038e-01 5.7315075397491455e-01 - <_> - 5.5420215606689453e+01 - - 1 2 1921 3.7635000000000000e+03 0 -1 1922 - 1.0904500000000000e+04 -2 -3 1923 6.9750000000000000e+02 - - -8.7749630212783813e-02 7.8290265798568726e-01 - 3.7081098556518555e-01 -3.9786884188652039e-01 - <_> - 5.5134284973144531e+01 - - 1 2 1924 3.5000000000000000e+00 0 -1 1925 - 1.5000000000000000e+00 -2 -3 1926 1.3535000000000000e+03 - - -8.4669679403305054e-01 5.6518930196762085e-01 - -2.8593066334724426e-01 7.8882968425750732e-01 - <_> - 5.5399112701416016e+01 - - 1 2 1927 1.4500000000000000e+01 0 -1 1928 - 9.5000000000000000e+00 -2 -3 1929 2.1950000000000000e+02 - - 3.6673456430435181e-01 -8.0567514896392822e-01 - 2.6483070850372314e-01 -5.4888963699340820e-01 - <_> - 5.5665115356445312e+01 - - 1 2 1930 1.0500000000000000e+01 0 -1 1931 - 4.3500000000000000e+01 -2 -3 1932 2.2500000000000000e+01 - - -8.0224722623825073e-01 7.3296892642974854e-01 - 3.1390979886054993e-01 -2.7697941660881042e-01 - <_> - 5.5662361145019531e+01 - - 1 2 1933 5.0000000000000000e-01 0 -1 1934 - 1.0500000000000000e+01 -2 -3 1935 609. - - -4.6577224135398865e-01 3.6372005939483643e-01 - -6.7203342914581299e-02 -8.5283303260803223e-01 - <_> - 5.5597713470458984e+01 - - 1 2 1936 4.8150000000000000e+02 0 -1 1937 897. -2 -3 1938 - 6.0015000000000000e+03 - - -7.0950525999069214e-01 3.6562061309814453e-01 - 7.1085697412490845e-01 -6.4645722508430481e-02 - <_> - 5.5976200103759766e+01 - - 1 2 1939 1.7500000000000000e+01 0 -1 1940 - 2.6500000000000000e+01 -2 -3 1941 2.7195000000000000e+03 - - -6.9570225477218628e-01 3.7848454713821411e-01 - 3.8467934727668762e-01 -3.8020190596580505e-01 - <_> - 5.6158012390136719e+01 - - 1 2 1942 2.6002500000000000e+04 0 -1 1943 - 5.5000000000000000e+00 -2 -3 1944 933. - - 5.2110773324966431e-01 -7.8237217664718628e-01 - -8.0685955286026001e-01 1.8181376159191132e-01 - <_> - 5.6510974884033203e+01 - - 1 2 1945 6.5000000000000000e+00 0 -1 1946 - 7.7950000000000000e+02 -2 -3 1947 1.1350000000000000e+02 - - 8.0221951007843018e-01 -5.5787330865859985e-01 - -2.5150266289710999e-01 3.5296073555946350e-01 - <_> - 5.6669940948486328e+01 - - 1 2 1948 1.2500000000000000e+01 0 -1 1949 - 2.1500000000000000e+01 -2 -3 1950 3.7500000000000000e+01 - - -8.1347912549972534e-01 3.3844006061553955e-01 - -5.6976383924484253e-01 1.5896809101104736e-01 - <_> - 5.6639522552490234e+01 - - 1 2 1951 5.0000000000000000e-01 0 -1 1952 - 1.0350000000000000e+02 -2 -3 1953 979. - - 5.6548482179641724e-01 -7.8466528654098511e-01 - -4.1022753715515137e-01 1.7647762596607208e-01 - <_> - 5.6746051788330078e+01 - - 1 2 1954 4.7655500000000000e+04 0 -1 1955 1217. -2 -3 1956 - 2.6650000000000000e+02 - - -6.9296687841415405e-01 2.6075837016105652e-01 - -7.9774957895278931e-01 1.7970228567719460e-02 - <_> - 5.6479259490966797e+01 - - 1 2 1957 1.2650000000000000e+02 0 -1 1958 - 1.9500000000000000e+01 -2 -3 1959 491. - - -2.6678943634033203e-01 3.8788908720016479e-01 - 9.1776609420776367e-01 -4.6553900837898254e-01 - <_> - 5.6557636260986328e+01 - - 1 2 1960 4.7500000000000000e+01 0 -1 1961 - 9.6450000000000000e+02 -2 -3 1962 5.0000000000000000e-01 - - 3.0366006493568420e-01 -8.8815379142761230e-01 - 4.8105791211128235e-01 -8.4002502262592316e-02 - <_> - 5.6977615356445312e+01 - - 1 2 1963 1.9350000000000000e+02 0 -1 1964 - 1.0500000000000000e+01 -2 -3 1965 316. - - 1.2478869408369064e-01 -5.4758942127227783e-01 - 4.1997796297073364e-01 -2.8715902566909790e-01 - <_> - 5.6940200805664062e+01 - - 1 2 1966 1.3500000000000000e+01 0 -1 1967 - 9.5000000000000000e+00 -2 -3 1968 4.5000000000000000e+00 - - 5.6444692611694336e-01 -5.1318335533142090e-01 - 4.1364780068397522e-01 -2.3452880978584290e-01 - <_> - 5.7376541137695312e+01 - - 1 2 1969 6.5000000000000000e+00 0 -1 1970 - 5.2500000000000000e+01 -2 -3 1971 2.6500000000000000e+01 - - -3.1519573926925659e-01 4.3634009361267090e-01 - -5.3644794225692749e-01 3.0770981311798096e-01 - <_> - 5.7745677947998047e+01 - - 1 2 1972 9.5000000000000000e+00 0 -1 1973 - 1.7125000000000000e+03 -2 -3 1974 2095. - - -5.8112341910600662e-02 5.0887292623519897e-01 - 2.3396022617816925e-01 -5.9023892879486084e-01 - <_> - 5.7668346405029297e+01 - - 1 2 1975 1.3835000000000000e+03 0 -1 1976 - 2.3365000000000000e+03 -2 -3 1977 5.0000000000000000e-01 - - -2.2391898930072784e-01 4.7256642580032349e-01 - 4.1642077267169952e-03 -6.2670201063156128e-01 - <_> - 5.7691123962402344e+01 - - 1 2 1978 2.7250000000000000e+02 0 -1 1979 - 8.0950000000000000e+02 -2 -3 1980 1.4500000000000000e+01 - - -2.9949793219566345e-01 7.5373744964599609e-01 - 2.2777365520596504e-02 -5.4332214593887329e-01 - <_> - 5.7523948669433594e+01 - - 1 2 1981 2.5500000000000000e+01 0 -1 1982 - 3.5000000000000000e+00 -2 -3 1983 9.5000000000000000e+00 - - 2.7234396338462830e-01 -7.7871346473693848e-01 - 4.1143327951431274e-01 -1.6717562079429626e-01 - <_> - 5.7792133331298828e+01 - - 1 2 1984 3.0500000000000000e+01 0 -1 1985 - 6.5000000000000000e+00 -2 -3 1986 4.7850000000000000e+02 - - 4.2716450989246368e-02 -6.7291486263275146e-01 - 3.2022616267204285e-01 -6.1982798576354980e-01 - <_> - 5.8013004302978516e+01 - - 1 2 1987 3.4500000000000000e+01 0 -1 1988 - 9.5000000000000000e+00 -2 -3 1989 3.9350000000000000e+02 - - -5.1402336359024048e-01 2.2087192535400391e-01 - -7.2181683778762817e-01 1.9793330132961273e-01 - <_> - 5.8191169738769531e+01 - - 1 2 1990 9.7500000000000000e+01 0 -1 1991 - 6.2250000000000000e+02 -2 -3 1992 9.5500000000000000e+01 - - 1.7816618084907532e-01 -4.8832407593727112e-01 - -9.5159941911697388e-01 6.5016353130340576e-01 - <_> - 5.8067699432373047e+01 - - 1 2 1993 2.5000000000000000e+00 0 -1 1994 - 2.2500000000000000e+01 -2 -3 1995 1.4500000000000000e+01 - - 5.9863173961639404e-01 -1.2370918691158295e-01 - -5.3876280784606934e-01 2.5208535790443420e-01 - <_> - 5.8372417449951172e+01 - - 1 2 1996 1.8075000000000000e+03 0 -1 1997 - 4.5000000000000000e+00 -2 -3 1998 7.4500000000000000e+01 - - 3.9194607734680176e-01 -3.2276815176010132e-01 - 5.3963506221771240e-01 -6.4209002256393433e-01 - <_> - 5.8342327117919922e+01 - - 1 2 1999 7.5000000000000000e+00 0 -1 2000 - 1.3500000000000000e+01 -2 -3 2001 3.5000000000000000e+00 - - -9.3360573053359985e-01 1. 3.0816203355789185e-01 - -1.9820201396942139e-01 - <_> - 5.8525230407714844e+01 - - 1 2 2002 5.4500000000000000e+01 0 -1 2003 - 3.1500000000000000e+01 -2 -3 2004 5.5000000000000000e+00 - - -6.9942277669906616e-01 1. 2.0665432512760162e-01 - -4.8230728507041931e-01 - <_> - 5.8137825012207031e+01 - - 1 2 2005 5.0000000000000000e-01 0 -1 2006 - 6.5000000000000000e+00 -2 -3 2007 1.6255000000000000e+03 - - -9.1363656520843506e-01 3.4000685811042786e-01 - 3.6237233877182007e-01 -3.8740426301956177e-01 - <_> - 5.7477180480957031e+01 - - 1 2 2008 1.6500000000000000e+01 0 -1 2009 - 3.3050000000000000e+02 -2 -3 2010 1.8250000000000000e+02 - - 4.0280374884605408e-01 -6.6064602136611938e-01 - 2.3912283778190613e-01 -6.5312945842742920e-01 - <_> - 5.7596790313720703e+01 - - 1 2 2011 3.5000000000000000e+00 0 -1 2012 - 2.2850000000000000e+02 -2 -3 2013 6.7050000000000000e+02 - - -5.6311067193746567e-02 7.3480677604675293e-01 - -7.8913259506225586e-01 -5.2745390683412552e-02 - <_> - 5.7969238281250000e+01 - - 1 2 2014 1.2195000000000000e+03 0 -1 2015 - 1.5000000000000000e+00 -2 -3 2016 44231. - - 3.7240502238273621e-01 -3.7414985895156860e-01 - 5.3368985652923584e-01 -3.4466567635536194e-01 - <_> - 5.7981628417968750e+01 - - 1 2 2017 1.6650000000000000e+02 0 -1 2018 - 2.0500000000000000e+01 -2 -3 2019 1.3500000000000000e+01 - - -2.3047098517417908e-01 4.0283700823783875e-01 - -8.8833373785018921e-01 9.4913655519485474e-01 - <_> - 5.8304691314697266e+01 - - 1 2 2020 1.7500000000000000e+01 0 -1 2021 - 2.2500000000000000e+01 -2 -3 2022 1.3950000000000000e+02 - - -9.7246366739273071e-01 4.5725116133689880e-01 - -3.3056676387786865e-01 3.2306280732154846e-01 - <_> - 5.8687774658203125e+01 - - 1 2 2023 3.6050000000000000e+02 0 -1 2024 - 2.1500000000000000e+01 -2 -3 2025 5.7150000000000000e+02 - - -1.9407491385936737e-01 4.0379062294960022e-01 - -7.1832591295242310e-01 1.6718479990959167e-01 - <_> - 5.8403263092041016e+01 - - 1 2 2026 3.5000000000000000e+00 0 -1 2027 - 1.5000000000000000e+00 -2 -3 2028 1.1125000000000000e+03 - - -7.1120482683181763e-01 5.4733234643936157e-01 - -3.0521857738494873e-01 5.3309994935989380e-01 - <_> - 5.8206588745117188e+01 - - 1 2 2029 9.8550000000000000e+02 0 -1 2030 - 8.5000000000000000e+00 -2 -3 2031 6.5000000000000000e+00 - - -6.1662030220031738e-01 4.3150734901428223e-01 - 1.1408390849828720e-01 -5.7918250560760498e-01 - <_> - 5.8434097290039062e+01 - - 1 2 2032 1.2500000000000000e+01 0 -1 2033 - 9.7500000000000000e+01 -2 -3 2034 8574. - - 4.1095575690269470e-01 -6.6425901651382446e-01 - 2.2750854492187500e-01 -6.5870326757431030e-01 - <_> - 5.8159267425537109e+01 - - 1 2 2035 790. 0 -1 2036 26812. -2 -3 2037 - 5.2150000000000000e+02 - - -8.0263590812683105e-01 8.7009161710739136e-01 - -2.7483054995536804e-01 3.0290663242340088e-01 - <_> - 5.8559719085693359e+01 - - 1 2 2038 1.5550000000000000e+02 0 -1 2039 - 3.6500000000000000e+01 -2 -3 2040 1752. - - -1.1953184753656387e-01 4.0045145153999329e-01 - 8.7820923328399658e-01 -9.3850684165954590e-01 - <_> - 5.8625492095947266e+01 - - 1 2 2041 5.0000000000000000e-01 0 -1 2042 - 2.5000000000000000e+00 -2 -3 2043 6.5000000000000000e+00 - - -7.3991537094116211e-01 7.3110866546630859e-01 - 2.8890112042427063e-01 -2.9580232501029968e-01 - <_> - 5.8505027770996094e+01 - - 1 2 2044 6.7500000000000000e+01 0 -1 2045 - 5.6500000000000000e+01 -2 -3 2046 9.8500000000000000e+01 - - -4.7034713625907898e-01 6.4461517333984375e-01 - 3.4142866730690002e-01 -8.6112099885940552e-01 - <_> - 5.8600910186767578e+01 - - 1 2 2047 8.0500000000000000e+01 0 -1 2048 - 1.8650000000000000e+02 -2 -3 2049 590. - - -7.2916746139526367e-01 3.1004229187965393e-01 - -6.6359126567840576e-01 9.5881775021553040e-02 - <_> - 5.8711597442626953e+01 - - 1 2 2050 5.0000000000000000e-01 0 -1 2051 - 7.5450000000000000e+02 -2 -3 2052 3.2650000000000000e+02 - - -9.2816257476806641e-01 4.2444109916687012e-01 - -4.2585963010787964e-01 3.1073370575904846e-01 - <_> - 5.8032016754150391e+01 - - 1 2 2053 60937. 0 -1 2054 416. -2 -3 2055 - 4.5000000000000000e+00 - - 1.7063696682453156e-01 -6.7958027124404907e-01 - 8.7877064943313599e-01 -9.5674747228622437e-01 - <_> - 5.8740566253662109e+01 - - 1 2 2056 1.5000000000000000e+00 0 -1 2057 - 3.5000000000000000e+00 -2 -3 2058 4.6500000000000000e+01 - - -7.4752992391586304e-01 7.0855057239532471e-01 - -6.8028306961059570e-01 2.6557485107332468e-03 - <_> - 5.9213050842285156e+01 - - 1 2 2059 7.5000000000000000e+00 0 -1 2060 - 4.5000000000000000e+00 -2 -3 2061 2.9750000000000000e+02 - - -1.6750365495681763e-01 4.7248429059982300e-01 - 1.6587665677070618e-01 -5.7748597860336304e-01 - <_> - 5.9422805786132812e+01 - - 1 2 2062 9.5000000000000000e+00 0 -1 2063 - 2.4500000000000000e+01 -2 -3 2064 7.5000000000000000e+00 - - 2.3164252936840057e-01 -8.6614209413528442e-01 - -8.4939008951187134e-01 2.0975443720817566e-01 - <_> - 5.8884654998779297e+01 - - 1 2 2065 6.2500000000000000e+01 0 -1 2066 - 1.0500000000000000e+01 -2 -3 2067 252. - - 1.0844799689948559e-02 -5.3815227746963501e-01 - 7.5545585155487061e-01 -4.2718842625617981e-01 - <_> - 5.9134284973144531e+01 - - 1 2 2068 2.3365000000000000e+03 0 -1 2069 - 1.2850000000000000e+02 -2 -3 2070 3.4845000000000000e+03 - - 8.5452580451965332e-01 -5.0535249710083008e-01 - 7.7388888597488403e-01 -6.3630655407905579e-02 - <_> - 5.9335205078125000e+01 - - 1 2 2071 7.5000000000000000e+00 0 -1 2072 - 6.5000000000000000e+00 -2 -3 2073 2.1450000000000000e+02 - - -8.2057535648345947e-01 2.0091684162616730e-01 - -6.9147127866744995e-01 6.4241760969161987e-01 - <_> - 5.9819751739501953e+01 - - 1 2 2074 1.4500000000000000e+01 0 -1 2075 - 1.3500000000000000e+01 -2 -3 2076 4.9500000000000000e+01 - - -9.3421977758407593e-01 4.8454797267913818e-01 - -3.7337201833724976e-01 3.2126367092132568e-01 - <_> - 5.9756664276123047e+01 - - 1 2 2077 3.7550000000000000e+02 0 -1 2078 - 8.1500000000000000e+01 -2 -3 2079 14. - - -6.3086077570915222e-02 5.7233673334121704e-01 1. - -9.5777195692062378e-01 - <_> - 6.0291542053222656e+01 - - 1 2 2080 3.5000000000000000e+00 0 -1 2081 - 2.5000000000000000e+00 -2 -3 2082 1.7500000000000000e+01 - - -7.0069408416748047e-01 6.3710403442382812e-01 - -4.9769634008407593e-01 1.1464314162731171e-01 - <_> - 6.0335617065429688e+01 - - 1 2 2083 6.0500000000000000e+01 0 -1 2084 235. -2 -3 2085 - 6.5500000000000000e+01 - - 6.0332548618316650e-01 -4.5363491773605347e-01 - -7.2721785306930542e-01 2.7224572841078043e-03 - <_> - 5.9978572845458984e+01 - - 1 2 2086 2145. 0 -1 2087 5.0000000000000000e-01 -2 -3 2088 - 1.1500000000000000e+01 - - 6.9418591260910034e-01 -7.1563631296157837e-01 - -5.4690980911254883e-01 2.3341998457908630e-01 - <_> - 6.0145259857177734e+01 - - 1 2 2089 4.8350000000000000e+02 0 -1 2090 - 5.3500000000000000e+01 -2 -3 2091 5.0550000000000000e+02 - - 5.3724527359008789e-01 -1.2441903352737427e-01 - -6.5049791336059570e-01 2.5399866700172424e-01 - <_> - 6.0507656097412109e+01 - - 1 2 2092 2.7500000000000000e+01 0 -1 2093 - 5.5000000000000000e+00 -2 -3 2094 5.0500000000000000e+01 - - 1.4425510168075562e-01 -7.4231290817260742e-01 - -2.6776736974716187e-01 3.6239382624626160e-01 - <_> - 6.0473968505859375e+01 - - 1 2 2095 5.0000000000000000e-01 0 -1 2096 - 2.5500000000000000e+01 -2 -3 2097 1587. - - -7.2751653194427490e-01 4.5861607789993286e-01 - 5.5637544393539429e-01 -3.6810955405235291e-01 - <_> - 6.0842075347900391e+01 - - 1 2 2098 5.1150000000000000e+02 0 -1 2099 1169. -2 -3 2100 - 2.0150000000000000e+02 - - -3.0562120676040649e-01 8.1614106893539429e-01 - 7.2896146774291992e-01 -1.8503957986831665e-01 - <_> - 6.0462539672851562e+01 - - 1 2 2101 8.3500000000000000e+01 0 -1 2102 - 3.0500000000000000e+01 -2 -3 2103 2.9850000000000000e+02 - - -8.2488976418972015e-02 4.4352260231971741e-01 - 5.2298051118850708e-01 -8.3577710390090942e-01 - <_> - 6.1029483795166016e+01 - - 1 2 2104 5.0000000000000000e-01 0 -1 2105 - 1.6500000000000000e+01 -2 -3 2106 2.8650000000000000e+02 - - -6.2287323176860809e-02 5.6694161891937256e-01 - -5.0430041551589966e-01 2.6749575138092041e-01 - <_> - 6.0533782958984375e+01 - - 1 2 2107 1.5000000000000000e+00 0 -1 2108 86. -2 -3 2109 - 1.5000000000000000e+00 - - 4.6476197242736816e-01 -3.5366341471672058e-01 - 1.1941082775592804e-01 -4.9569913744926453e-01 - <_> - 6.1014225006103516e+01 - - 1 2 2110 8.5500000000000000e+01 0 -1 2111 - 7.1500000000000000e+01 -2 -3 2112 3.0050000000000000e+02 - - -3.2236501574516296e-01 5.3735041618347168e-01 - 4.8043999075889587e-01 -8.1549012660980225e-01 - <_> - 6.1214355468750000e+01 - - 1 2 2113 5.0000000000000000e-01 0 -1 2114 5423. -2 -3 2115 - 3.2500000000000000e+01 - - 6.3166511058807373e-01 -1.0317980498075485e-01 - -8.1713062524795532e-01 -4.8018395900726318e-02 - <_> - 6.1207153320312500e+01 - - 1 2 2116 6.9750000000000000e+02 0 -1 2117 - 2.3500000000000000e+01 -2 -3 2118 1299. - - -5.5850952863693237e-01 4.5436400175094604e-01 - -4.2946615815162659e-01 4.6700772643089294e-01 - <_> - 6.1372627258300781e+01 - - 1 2 2119 9.7500000000000000e+01 0 -1 2120 - 1.2500000000000000e+01 -2 -3 2121 8.8500000000000000e+01 - - -9.3579089641571045e-01 1.6547182202339172e-01 - -8.7968140840530396e-01 5.9617185592651367e-01 - <_> - 6.1535186767578125e+01 - - 1 2 2122 4.0550000000000000e+02 0 -1 2123 - 8.5000000000000000e+00 -2 -3 2124 5.5500000000000000e+01 - - -5.4796415567398071e-01 2.2591431438922882e-01 - -6.4731520414352417e-01 6.6429591178894043e-01 - <_> - 6.1438594818115234e+01 - - 1 2 2125 7.5000000000000000e+00 0 -1 2126 - 1.6500000000000000e+01 -2 -3 2127 2.0464500000000000e+04 - - -7.6974302530288696e-01 5.8108645677566528e-01 - 1.4914943277835846e-01 -4.0168645977973938e-01 - <_> - 6.1837162017822266e+01 - - 1 2 2128 1.9150000000000000e+02 0 -1 2129 - 2.5000000000000000e+00 -2 -3 2130 2.3500000000000000e+01 - - 3.0682370066642761e-01 -6.2734222412109375e-01 - -3.0841422080993652e-01 3.9856877923011780e-01 - <_> - 6.1491020202636719e+01 - - 1 2 2131 9.5000000000000000e+00 0 -1 2132 - 1.0286500000000000e+04 -2 -3 2133 1.5750000000000000e+02 - - 4.2527648806571960e-01 -3.4614086151123047e-01 - -6.1684650182723999e-01 1.9758818671107292e-02 - <_> - 6.1886714935302734e+01 - - 1 2 2134 1.7500000000000000e+01 0 -1 2135 - 9.2500000000000000e+01 -2 -3 2136 18. - - -1.2079064548015594e-01 3.9569309353828430e-01 - 3.3188980817794800e-01 -8.7485474348068237e-01 - <_> - 6.1790431976318359e+01 - - 1 2 2137 2.1500000000000000e+01 0 -1 2138 - 2.2500000000000000e+01 -2 -3 2139 4.5000000000000000e+00 - - -5.2500929683446884e-02 6.8664622306823730e-01 - 1.5717932581901550e-01 -6.7684161663055420e-01 - <_> - 6.2245330810546875e+01 - - 1 2 2140 1.2135000000000000e+03 0 -1 2141 - 4.5000000000000000e+00 -2 -3 2142 5.2865000000000000e+03 - - 3.3859279751777649e-01 -4.2644050717353821e-01 - 5.0935482978820801e-01 -4.1733506321907043e-01 - <_> - 6.2387325286865234e+01 - - 1 2 2143 4.5000000000000000e+00 0 -1 2144 - 1.0500000000000000e+01 -2 -3 2145 209. - - 1.3510234653949738e-01 -9.6185976266860962e-01 - 1.4199161529541016e-01 -8.5389542579650879e-01 - <_> - 6.2084945678710938e+01 - - 1 2 2146 11208. 0 -1 2147 5.0000000000000000e-01 -2 -3 2148 - 20248. - - 1.5907059609889984e-01 -3.8836613297462463e-01 - 8.0494099855422974e-01 -7.7658468484878540e-01 - <_> - 6.1984123229980469e+01 - - 1 2 2149 2.3500000000000000e+01 0 -1 2150 - 2.3650000000000000e+02 -2 -3 2151 5.0000000000000000e-01 - - 1. -1. 4.0856447815895081e-01 -1.0082300007343292e-01 - <_> - 6.2277572631835938e+01 - - 1 2 2152 1.2115000000000000e+03 0 -1 2153 - 1.5000000000000000e+00 -2 -3 2154 4.2995000000000000e+03 - - 4.2784088850021362e-01 -8.9822685718536377e-01 - 2.9345232248306274e-01 -2.5083908438682556e-01 - <_> - 6.2472473144531250e+01 - - 1 2 2155 9.4500000000000000e+01 0 -1 2156 - 1.0500000000000000e+01 -2 -3 2157 68. - - 6.5589077770709991e-02 -7.7099108695983887e-01 - -7.4427002668380737e-01 1.9490025937557220e-01 - <_> - 6.2016971588134766e+01 - - 1 2 2158 2.5000000000000000e+00 0 -1 2159 - 1.2500000000000000e+01 -2 -3 2160 5.5500000000000000e+01 - - 4.2139071226119995e-01 -5.5164831876754761e-01 - -4.5550110936164856e-01 3.6315539479255676e-01 - <_> - 6.2252468109130859e+01 - - 1 2 2161 1.5685000000000000e+03 0 -1 2162 - 4.5000000000000000e+00 -2 -3 2163 7.7500000000000000e+01 - - 4.6763184666633606e-01 -7.2583413124084473e-01 - -4.7358104586601257e-01 2.3549596965312958e-01 - <_> - 6.1926944732666016e+01 - - 1 2 2164 5.0000000000000000e-01 0 -1 2165 - 2.9500000000000000e+01 -2 -3 2166 1.5000000000000000e+00 - - -8.4635341167449951e-01 4.7176876664161682e-01 - 1.2360874563455582e-01 -4.4846296310424805e-01 - <_> - 6.2441539764404297e+01 - - 1 2 2167 1.3650000000000000e+02 0 -1 2168 - 7.5000000000000000e+00 -2 -3 2169 1.6500000000000000e+01 - - 3.0158129334449768e-01 -3.6455678939819336e-01 - -9.0578240156173706e-01 5.1459383964538574e-01 - <_> - 6.1964569091796875e+01 - - 1 2 2170 8.5000000000000000e+00 0 -1 2171 - 1.3226500000000000e+04 -2 -3 2172 6.4500000000000000e+01 - - -8.5410606861114502e-01 2.6482892036437988e-01 - -4.7696748375892639e-01 6.1308634281158447e-01 - <_> - 6.1803714752197266e+01 - - 1 2 2173 2.6500000000000000e+01 0 -1 2174 - 4.5000000000000000e+00 -2 -3 2175 5.0000000000000000e-01 - - 5.8156448602676392e-01 -8.6257112026214600e-01 - 4.0267577767372131e-01 -1.6085536777973175e-01 - <_> - 6.2505237579345703e+01 - - 1 2 2176 4.2500000000000000e+01 0 -1 2177 - 7.9662500000000000e+04 -2 -3 2178 2.2050000000000000e+02 - - 4.3292667716741562e-02 -8.7512964010238647e-01 - -2.3395214229822159e-02 7.0152431726455688e-01 - <_> - 6.2662498474121094e+01 - - 1 2 2179 2.2535000000000000e+03 0 -1 2180 5489. -2 -3 2181 - 6.5000000000000000e+00 - - -1.3394173979759216e-01 6.8779164552688599e-01 - 4.8814722895622253e-01 -3.9524573087692261e-01 - <_> - 6.2619869232177734e+01 - - 1 2 2182 3.0135000000000000e+03 0 -1 2183 4966. -2 -3 2184 - 5.5000000000000000e+00 - - -3.0220034718513489e-01 8.1261235475540161e-01 - 1.7436875402927399e-01 -3.7351670861244202e-01 - <_> - 6.2884567260742188e+01 - - 1 2 2185 2.5000000000000000e+00 0 -1 2186 286. -2 -3 2187 - 2.9500000000000000e+01 - - 8.4548860788345337e-01 -9.6311759948730469e-01 - -3.5037949681282043e-01 2.6469662785530090e-01 - <_> - 6.2971755981445312e+01 - - 1 2 2188 4.5000000000000000e+00 0 -1 2189 - 5.6350000000000000e+02 -2 -3 2190 1.7500000000000000e+01 - - 3.5842654109001160e-01 -7.6083594560623169e-01 - -6.3569843769073486e-01 1.1528482288122177e-01 - <_> - 6.2904327392578125e+01 - - 1 2 2191 19751. 0 -1 2192 5709. -2 -3 2193 - 5.0000000000000000e-01 - - 5.8615106344223022e-01 -6.7431032657623291e-02 - 8.1077980995178223e-01 -7.9040503501892090e-01 - <_> - 6.3428482055664062e+01 - - 1 2 2194 5.2150000000000000e+02 0 -1 2195 112. -2 -3 2196 - 4.8500000000000000e+01 - - -2.9560300707817078e-01 6.3393580913543701e-01 - -7.4229598045349121e-01 5.2415388822555542e-01 - <_> - 6.3408718109130859e+01 - - 1 2 2197 2.2850000000000000e+02 0 -1 2198 - 9.5000000000000000e+00 -2 -3 2199 8.5000000000000000e+00 - - -6.5528714656829834e-01 3.2386130094528198e-01 - -5.1321542263031006e-01 3.7662333250045776e-01 - <_> - 6.3479297637939453e+01 - - 1 2 2200 1.0500000000000000e+01 0 -1 2201 - 1.2875000000000000e+03 -2 -3 2202 1.1550000000000000e+02 - - -6.5136082470417023e-02 5.4068171977996826e-01 - -5.4428064823150635e-01 3.5270053148269653e-01 - <_> - 6.3459232330322266e+01 - - 1 2 2203 5.6350000000000000e+02 0 -1 2204 - 3.6500000000000000e+01 -2 -3 2205 2.7500000000000000e+01 - - -2.6665899157524109e-01 2.9732996225357056e-01 - 8.9094859361648560e-01 -7.8570848703384399e-01 - <_> - 6.3715244293212891e+01 - - 1 2 2206 1.3750000000000000e+02 0 -1 2207 - 5.5950000000000000e+02 -2 -3 2208 1.7350000000000000e+02 - - 8.2382661104202271e-01 -9.3905463814735413e-02 - -7.7598297595977783e-01 -6.1380777508020401e-02 - <_> - 6.4063674926757812e+01 - - 1 2 2209 1.5000000000000000e+00 0 -1 2210 - 1.1500000000000000e+01 -2 -3 2211 3.1850000000000000e+02 - - -8.9411342144012451e-01 3.4842905402183533e-01 - -4.4360893964767456e-01 4.8869660496711731e-01 - <_> - 6.4111953735351562e+01 - - 1 2 2212 2.5000000000000000e+00 0 -1 2213 - 4.1500000000000000e+01 -2 -3 2214 5.0000000000000000e-01 - - -2.3706158995628357e-01 4.4370284676551819e-01 - 5.4362642765045166e-01 -5.1952922344207764e-01 - <_> - 6.4159660339355469e+01 - - 1 2 2215 1.5000000000000000e+00 0 -1 2216 - 5.7500000000000000e+01 -2 -3 2217 1.0775000000000000e+03 - - -2.5581914931535721e-02 6.6174793243408203e-01 - 4.0115654468536377e-01 -3.5893636941909790e-01 - <_> - 6.4437599182128906e+01 - - 1 2 2218 921. 0 -1 2219 4.5000000000000000e+00 -2 -3 2220 - 2.9045000000000000e+03 - - 3.1526345014572144e-01 -7.0185899734497070e-01 - 2.7793204784393311e-01 -4.8113667964935303e-01 - <_> - 6.4332015991210938e+01 - - 1 2 2221 1.8985000000000000e+03 0 -1 2222 - 7.8250000000000000e+02 -2 -3 2223 2.1500000000000000e+01 - - -2.8789478540420532e-01 6.2446802854537964e-01 - -7.3467957973480225e-01 7.2612441144883633e-03 - <_> - 6.4401939392089844e+01 - - 1 2 2224 2.5000000000000000e+00 0 -1 2225 - 3.7500000000000000e+01 -2 -3 2226 5.4850000000000000e+02 - - -6.1204963922500610e-01 6.2827998399734497e-01 - -5.4985451698303223e-01 6.9924682378768921e-02 - <_> - 6.4601165771484375e+01 - - 1 2 2227 3.5000000000000000e+00 0 -1 2228 - 4.4500000000000000e+01 -2 -3 2229 6.5000000000000000e+00 - - -3.2580995559692383e-01 5.1435238122940063e-01 - 5.3874686360359192e-02 -5.6130063533782959e-01 - <_> - 6.4761596679687500e+01 - - 1 2 2230 7.5000000000000000e+00 0 -1 2231 - 3.5000000000000000e+00 -2 -3 2232 5.5500000000000000e+01 - - -7.5083559751510620e-01 3.6957365274429321e-01 - -4.0680039674043655e-02 -7.7190446853637695e-01 - <_> - 6.4306961059570312e+01 - - 1 2 2233 160. 0 -1 2234 127. -2 -3 2235 - 9.1500000000000000e+01 - - 2.1852338314056396e-01 -6.8148994445800781e-01 - -4.8492997884750366e-01 3.1643366813659668e-01 - <_> - 6.4767280578613281e+01 - - 1 2 2236 2.5000000000000000e+00 0 -1 2237 - 7.5250000000000000e+02 -2 -3 2238 4.5000000000000000e+00 - - 4.6031954884529114e-01 -6.2284696102142334e-01 - 4.7282892465591431e-01 -4.0902397036552429e-01 - <_> - 6.4466903686523438e+01 - - 1 2 2239 1.4250000000000000e+02 0 -1 2240 - 4.5000000000000000e+00 -2 -3 2241 1.5000000000000000e+00 - - 1.0185246169567108e-01 -5.8319956064224243e-01 - -6.2095612287521362e-01 4.2880809307098389e-01 - <_> - 6.4761924743652344e+01 - - 1 2 2242 1.1605000000000000e+03 0 -1 2243 2073. -2 -3 2244 - 4.6555000000000000e+03 - - -7.2359293699264526e-01 7.9880434274673462e-01 - 6.1722189188003540e-01 -1.1455553770065308e-01 - <_> - 6.5016494750976562e+01 - - 1 2 2245 1.0350000000000000e+02 0 -1 2246 - 4.4850000000000000e+02 -2 -3 2247 6.2550000000000000e+02 - - -6.7635171115398407e-02 4.6874949336051941e-01 - -8.0271768569946289e-01 3.7331908941268921e-01 - <_> - 6.5212265014648438e+01 - - 1 2 2248 6.2150000000000000e+02 0 -1 2249 326. -2 -3 2250 - 1.5000000000000000e+00 - - 1.9577379524707794e-01 -7.0703411102294922e-01 - 5.1214373111724854e-01 -7.2338587045669556e-01 - <_> - 6.5121826171875000e+01 - - 1 2 2251 9.7500000000000000e+01 0 -1 2252 - 2.3550000000000000e+02 -2 -3 2253 1.9500000000000000e+01 - - 4.6985685825347900e-01 -8.9037990570068359e-01 - 4.9876618385314941e-01 -9.0437032282352448e-02 - <_> - 6.5343742370605469e+01 - - 1 2 2254 1.9500000000000000e+01 0 -1 2255 1133. -2 -3 2256 - 1.0050000000000000e+02 - - 4.8251938819885254e-01 -6.2672054767608643e-01 - 2.2191496193408966e-01 -7.7584463357925415e-01 - <_> - 6.5446708679199219e+01 - - 1 2 2257 1.2555000000000000e+03 0 -1 2258 1315. -2 -3 2259 - 1.4525000000000000e+03 - - 5.0016152858734131e-01 -3.4823906421661377e-01 - 8.1143665313720703e-01 -3.6510743200778961e-02 - <_> - 6.5472305297851562e+01 - - 1 2 2260 5.8500000000000000e+01 0 -1 2261 - 9.2250000000000000e+02 -2 -3 2262 9.2500000000000000e+01 - - 2.5597516447305679e-02 -7.3596054315567017e-01 - 7.7482932806015015e-01 -2.4384480714797974e-01 - <_> - 6.5680641174316406e+01 - - 1 2 2263 2.8500000000000000e+01 0 -1 2264 - 1.9500000000000000e+01 -2 -3 2265 5.0000000000000000e-01 - - -5.1095438003540039e-01 2.7406066656112671e-01 - 4.7238901257514954e-02 -7.9554700851440430e-01 - <_> - 6.5828727722167969e+01 - - 1 2 2266 6.5000000000000000e+00 0 -1 2267 46. -2 -3 2268 - 2.3350000000000000e+02 - - 4.0098896622657776e-01 -3.0355367064476013e-01 - -5.7611280679702759e-01 2.4870538711547852e-01 - <_> - 6.6055801391601562e+01 - - 1 2 2269 1.1235000000000000e+03 0 -1 2270 1791. -2 -3 2271 - 2.2500000000000000e+01 - - 4.2222037911415100e-01 -5.7381504774093628e-01 - -5.7501715421676636e-01 2.7313375473022461e-01 - <_> - 6.5979278564453125e+01 - - 1 2 2272 1.6500000000000000e+01 0 -1 2273 - 1.1500000000000000e+01 -2 -3 2274 3.6500000000000000e+01 - - -1. 7.4951916933059692e-01 -2.2320111095905304e-01 - 6.2808310985565186e-01 - <_> - 6.5982803344726562e+01 - - 1 2 2275 8.8500000000000000e+01 0 -1 2276 - 5.0000000000000000e-01 -2 -3 2277 303. - - -4.2098733782768250e-01 4.7041663527488708e-01 - -8.3091259002685547e-01 3.5231374204158783e-03 - <_> - 6.5862815856933594e+01 - - 1 2 2278 5.0000000000000000e-01 0 -1 2279 - 7.5000000000000000e+00 -2 -3 2280 1.8500000000000000e+01 - - -3.1455779075622559e-01 6.9095128774642944e-01 - -3.3799609541893005e-01 3.8651108741760254e-01 - <_> - 6.5698982238769531e+01 - - 1 2 2281 2.5000000000000000e+00 0 -1 2282 - 6.5000000000000000e+00 -2 -3 2283 1.6500000000000000e+01 - - 1.1540318280458450e-01 -8.0706399679183960e-01 - 4.5586335659027100e-01 -1.6382929682731628e-01 - <_> - 6.5865753173828125e+01 - - 1 2 2284 4.1500000000000000e+01 0 -1 2285 322. -2 -3 2286 - 5.0000000000000000e-01 - - -7.6401643455028534e-02 7.0236140489578247e-01 - 8.3611255884170532e-01 -3.3973169326782227e-01 - <_> - 6.6324913024902344e+01 - - 1 2 2287 1180. 0 -1 2288 5.0000000000000000e-01 -2 -3 2289 - 4.9850000000000000e+02 - - 5.4826909303665161e-01 -6.1790186166763306e-01 - 4.9796470999717712e-01 -7.6435178518295288e-02 - <_> - 6.6116767883300781e+01 - - 1 2 2290 1.0086500000000000e+04 0 -1 2291 - 5.0000000000000000e-01 -2 -3 2292 1.4915000000000000e+03 - - 2.2847035527229309e-01 -5.0997734069824219e-01 - 5.6548178195953369e-01 -2.0814302563667297e-01 - <_> - 6.6620307922363281e+01 - - 1 2 2293 1.2195000000000000e+03 0 -1 2294 - 1.9055000000000000e+03 -2 -3 2295 2.0550000000000000e+02 - - -3.3149933815002441e-01 6.4176028966903687e-01 - 6.0821473598480225e-01 -3.0888804793357849e-01 - <_> - 6.6746444702148438e+01 - - 1 2 2296 2.5000000000000000e+00 0 -1 2297 - 1.0150000000000000e+02 -2 -3 2298 7.2585000000000000e+03 - - 5.9253281354904175e-01 -3.7904369831085205e-01 - 2.6760953664779663e-01 -4.0275105834007263e-01 - <_> - 6.6943595886230469e+01 - - 1 2 2299 1.1500000000000000e+01 0 -1 2300 - 2.4500000000000000e+01 -2 -3 2301 4.5000000000000000e+00 - - -9.8942744731903076e-01 1. -5.9422683715820312e-01 - 1.9715292751789093e-01 - <_> - 6.6331527709960938e+01 - - 1 2 2302 2.4500000000000000e+01 0 -1 2303 - 8.7500000000000000e+01 -2 -3 2304 3.4500000000000000e+01 - - -2.3940645158290863e-01 3.9157524704933167e-01 - 1.0247871279716492e-01 -7.5354349613189697e-01 - <_> - 6.6475265502929688e+01 - - 1 2 2305 6.5000000000000000e+00 0 -1 2306 - 2.3500000000000000e+01 -2 -3 2307 3.3500000000000000e+01 - - -7.6529741287231445e-01 4.5638066530227661e-01 - -5.1855069398880005e-01 1.4373423159122467e-01 - <_> - 6.6999214172363281e+01 - - 1 2 2308 9.4500000000000000e+01 0 -1 2309 - 2.0500000000000000e+01 -2 -3 2310 195. - - -7.4185177683830261e-02 5.2394580841064453e-01 - 3.7441125512123108e-01 -9.3662869930267334e-01 - <_> - 6.7006050109863281e+01 - - 1 2 2311 3026. 0 -1 2312 2.2500000000000000e+01 -2 -3 2313 - 2.8500000000000000e+01 - - -8.7473273277282715e-01 5.1518291234970093e-01 - -6.7311668395996094e-01 6.8403608165681362e-03 - <_> - 6.7129646301269531e+01 - - 1 2 2314 1.7500000000000000e+01 0 -1 2315 - 4.4500000000000000e+01 -2 -3 2316 2961. - - -2.2424821555614471e-01 3.6378455162048340e-01 - -7.0937103033065796e-01 1.6935887932777405e-01 - <_> - 6.7392829895019531e+01 - - 1 2 2317 5.5000000000000000e+00 0 -1 2318 - 1.0500000000000000e+01 -2 -3 2319 46. - - 6.3752532005310059e-01 -1.6769923269748688e-01 - -3.9633530378341675e-01 2.1741947531700134e-01 - <_> - 6.7652908325195312e+01 - - 1 2 2320 4.0500000000000000e+01 0 -1 2321 - 3.7750000000000000e+02 -2 -3 2322 288. - - 7.8108507394790649e-01 -8.9046698808670044e-01 - 2.6008096337318420e-01 -3.1209379434585571e-01 - <_> - 6.7522987365722656e+01 - - 1 2 2323 2.8450000000000000e+02 0 -1 2324 - 2.1500000000000000e+01 -2 -3 2325 3.1615000000000000e+03 - - -2.6827138662338257e-01 4.4363465905189514e-01 - -5.0426739454269409e-01 3.2839775085449219e-01 - <_> - 6.7682723999023438e+01 - - 1 2 2326 1.4550000000000000e+02 0 -1 2327 - 5.0000000000000000e-01 -2 -3 2328 187. - - 3.3854234218597412e-01 -1.9424141943454742e-01 - -7.8695666790008545e-01 1.0578002780675888e-01 - <_> - 6.7990608215332031e+01 - - 1 2 2329 1.4500000000000000e+01 0 -1 2330 55. -2 -3 2331 - 4.1500000000000000e+01 - - 9.3669831752777100e-01 -7.9035413265228271e-01 - 4.7996759414672852e-01 -1.4678025245666504e-01 - <_> - 6.7773666381835938e+01 - - 1 2 2332 4.4450000000000000e+02 0 -1 2333 - 6.5000000000000000e+00 -2 -3 2334 87. - - 3.0000856518745422e-01 -5.1463776826858521e-01 - -4.2596080899238586e-01 5.2854359149932861e-01 - <_> - 6.8242584228515625e+01 - - 1 2 2335 2.3325000000000000e+03 0 -1 2336 10142. -2 -3 2337 - 1.9550000000000000e+02 - - -6.1795878410339355e-01 7.2833043336868286e-01 - 5.5236649513244629e-01 -7.2167828679084778e-02 - <_> - 6.7640380859375000e+01 - - 1 2 2338 1.9500000000000000e+01 0 -1 2339 - 5.5000000000000000e+00 -2 -3 2340 3.7500000000000000e+01 - - -9.1623830795288086e-01 2.8547397255897522e-01 - 2.7238869667053223e-01 -6.8565303087234497e-01 - <_> - 6.8166297912597656e+01 - - 1 2 2341 887. 0 -1 2342 1.8950000000000000e+02 -2 -3 2343 - 1.6500000000000000e+01 - - 5.8323717117309570e-01 -8.4304898977279663e-01 - 5.2591782808303833e-01 -1.1249145865440369e-01 - <_> - 6.7966316223144531e+01 - - 1 2 2344 1.3500000000000000e+01 0 -1 2345 - 5.0500000000000000e+01 -2 -3 2346 5.5000000000000000e+00 - - -5.7582974433898926e-01 8.8582295179367065e-01 - 4.5189410448074341e-01 -1.9998365640640259e-01 - <_> - 6.8363616943359375e+01 - - 1 2 2347 9519. 0 -1 2348 9.9355000000000000e+03 -2 -3 2349 - 1.5000000000000000e+00 - - -5.6369476020336151e-02 5.6953996419906616e-01 - 6.4817821979522705e-01 -6.5638613700866699e-01 - <_> - 6.8680084228515625e+01 - - 1 2 2350 1.4500000000000000e+01 0 -1 2351 - 2.2500000000000000e+01 -2 -3 2352 4.9500000000000000e+01 - - -1.3236002624034882e-01 6.2589818239212036e-01 - -4.6971350908279419e-01 3.0481177568435669e-01 - <_> - 6.8636512756347656e+01 - - 1 2 2353 2.3491500000000000e+04 0 -1 2354 - 1.5000000000000000e+00 -2 -3 2355 31. - - 2.9175955057144165e-01 -2.0415711402893066e-01 -1. 1. - <_> - 6.8339431762695312e+01 - - 1 2 2356 2.1500000000000000e+01 0 -1 2357 - 5.0000000000000000e-01 -2 -3 2358 2.5000000000000000e+00 - - 4.2874211072921753e-01 -4.4592785835266113e-01 - -9.4336575269699097e-01 3.3847200870513916e-01 - <_> - 6.8127563476562500e+01 - - 1 2 2359 2.7500000000000000e+01 0 -1 2360 - 4.5000000000000000e+00 -2 -3 2361 1.2500000000000000e+01 - - 1.4308325946331024e-01 -5.4449397325515747e-01 - 5.8717787265777588e-01 -2.1186867356300354e-01 - <_> - 6.8410385131835938e+01 - - 1 2 2362 9.5000000000000000e+00 0 -1 2363 - 5.5000000000000000e+00 -2 -3 2364 1.2850000000000000e+02 - - -1.1505768448114395e-01 -9.6275746822357178e-01 - 2.8282612562179565e-01 -3.5639968514442444e-01 - <_> - 6.8815826416015625e+01 - - 1 2 2365 1.9125000000000000e+03 0 -1 2366 - 6.5000000000000000e+00 -2 -3 2367 1.2925000000000000e+03 - - 7.6003736257553101e-01 -1.8823170661926270e-01 - -3.1990632414817810e-01 3.2092514634132385e-01 - <_> - 6.8693199157714844e+01 - - 1 2 2368 1.5500000000000000e+01 0 -1 2369 - 4.0445000000000000e+03 -2 -3 2370 1.3500000000000000e+01 - - 2.2088183462619781e-01 -8.6471045017242432e-01 - 4.9937435984611511e-01 -1.2262738496065140e-01 - <_> - 6.9212486267089844e+01 - - 1 2 2371 1.1500000000000000e+01 0 -1 2372 - 1.2500000000000000e+01 -2 -3 2373 1.3250000000000000e+02 - - -5.8216619491577148e-01 7.6504099369049072e-01 - -4.9605194479227066e-02 5.4096341133117676e-01 - <_> - 6.9281822204589844e+01 - - 1 2 2374 3.4500000000000000e+01 0 -1 2375 - 6.5000000000000000e+00 -2 -3 2376 1.5000000000000000e+00 - - -7.0201843976974487e-01 3.5367730259895325e-01 1. - -3.9128544926643372e-01 - <_> - 6.9379959106445312e+01 - - 1 2 2377 8.7500000000000000e+01 0 -1 2378 - 7.5000000000000000e+00 -2 -3 2379 273. - - -5.3956866264343262e-01 3.2018893957138062e-01 - -5.9921985864639282e-01 2.5184553861618042e-01 - <_> - 6.9302131652832031e+01 - - 1 2 2380 5.0000000000000000e-01 0 -1 2381 - 4.4500000000000000e+01 -2 -3 2382 1.9204500000000000e+04 - - -5.0899110734462738e-02 6.8976759910583496e-01 - -7.7828548848628998e-02 -9.1394501924514771e-01 - <_> - 6.9691947937011719e+01 - - 1 2 2383 6.7500000000000000e+01 0 -1 2384 - 3.2850000000000000e+02 -2 -3 2385 1224. - - 1.1171031743288040e-02 7.3188757896423340e-01 - -8.6419099569320679e-01 2.1196028217673302e-02 - <_> - 6.9572067260742188e+01 - - 1 2 2386 1.1235000000000000e+03 0 -1 2387 - 8.4050000000000000e+02 -2 -3 2388 1.5500000000000000e+01 - - -1.5439936518669128e-01 6.1207121610641479e-01 - 1.9708819687366486e-01 -4.6194908022880554e-01 - <_> - 6.9861968994140625e+01 - - 1 2 2389 9.1500000000000000e+01 0 -1 2390 - 1.0500000000000000e+01 -2 -3 2391 4.1495000000000000e+03 - - 1.0701948404312134e-01 -5.6979161500930786e-01 - -9.6821188926696777e-02 7.0975506305694580e-01 - <_> - 7.0039260864257812e+01 - - 1 2 2392 1.1500000000000000e+01 0 -1 2393 2897. -2 -3 2394 - 2.4350000000000000e+02 - - -9.1259753704071045e-01 1. 1.7728993296623230e-01 - -7.3356288671493530e-01 - <_> - 6.9705703735351562e+01 - - 1 2 2395 5.0000000000000000e-01 0 -1 2396 - 2.0500000000000000e+01 -2 -3 2397 4.6500000000000000e+01 - - -5.2813202142715454e-01 4.4198977947235107e-01 - -4.8570594191551208e-01 1.9584445655345917e-01 - <_> - 6.9970062255859375e+01 - - 1 2 2398 5.0000000000000000e-01 0 -1 2399 - 3.1500000000000000e+01 -2 -3 2400 3831. - - -6.4685755968093872e-01 7.3702591657638550e-01 - -2.6504144072532654e-01 5.5941796302795410e-01 - <_> - 6.9949569702148438e+01 - - 1 2 2401 5.0000000000000000e-01 0 -1 2402 5. -2 -3 2403 - 4.5000000000000000e+00 - - -8.8435417413711548e-01 5.8749139308929443e-01 - 2.7166697382926941e-01 -3.1555649638175964e-01 - <_> - 7.0117141723632812e+01 - - 1 2 2404 2596. 0 -1 2405 9.1496500000000000e+04 -2 -3 2406 - 1.5000000000000000e+00 - - -7.8573900461196899e-01 1.6757574677467346e-01 - 8.5581427812576294e-01 -9.4101238250732422e-01 - <_> - 7.0224205017089844e+01 - - 1 2 2407 5749. 0 -1 2408 79. -2 -3 2409 208. - - 1. -1. 1.0706392675638199e-01 -7.7825403213500977e-01 - <_> - 7.0221618652343750e+01 - - 1 2 2410 5.1855000000000000e+03 0 -1 2411 - 4.6500000000000000e+01 -2 -3 2412 8.5000000000000000e+00 - - -3.6203452944755554e-01 3.4422519803047180e-01 - -2.5855610147118568e-03 -7.1835225820541382e-01 - <_> - 7.0728790283203125e+01 - - 1 2 2413 1.3500000000000000e+01 0 -1 2414 - 1.0950000000000000e+02 -2 -3 2415 5.3500000000000000e+01 - - 1.9084104895591736e-01 -8.0712783336639404e-01 - 5.5798757076263428e-01 -1.0734169185161591e-01 - <_> - 7.0351577758789062e+01 - - 1 2 2416 1.3405000000000000e+03 0 -1 2417 - 3.5000000000000000e+00 -2 -3 2418 342. - - 4.1194143891334534e-01 -3.7721332907676697e-01 - -5.5014234781265259e-01 5.2194917201995850e-01 - <_> - 7.0136901855468750e+01 - - 1 2 2419 3.7345000000000000e+03 0 -1 2420 - 3.2500000000000000e+01 -2 -3 2421 9.8500000000000000e+01 - - 3.2743006944656372e-01 -2.1467541158199310e-01 - -8.1029343605041504e-01 7.0203500986099243e-01 - <_> - 6.9686508178710938e+01 - - 1 2 2422 1.2185000000000000e+03 0 -1 2423 - 1.5000000000000000e+00 -2 -3 2424 4.8755000000000000e+03 - - 2.0333147048950195e-01 -4.5039632916450500e-01 - 4.4757398962974548e-01 -5.9627413749694824e-01 - <_> - 7.0005889892578125e+01 - - 1 2 2425 6.4500000000000000e+01 0 -1 2426 - 3.7150000000000000e+02 -2 -3 2427 6.7750000000000000e+02 - - 2.6681974530220032e-01 -5.9953171014785767e-01 - 3.1938493251800537e-01 -6.9817471504211426e-01 - <_> - 7.0428718566894531e+01 - - 1 2 2428 2.6500000000000000e+01 0 -1 2429 - 1.7650000000000000e+02 -2 -3 2430 1.0500000000000000e+01 - - -7.5495415367186069e-03 -6.1552453041076660e-01 - -5.8272439241409302e-01 7.1704763174057007e-01 - <_> - 7.0936927795410156e+01 - - 1 2 2431 1.0950000000000000e+02 0 -1 2432 - 1.2500000000000000e+01 -2 -3 2433 3.4500000000000000e+01 - - 6.7761175334453583e-02 -6.1159509420394897e-01 - 5.0820809602737427e-01 -1.4290602505207062e-01 - <_> - 7.1328254699707031e+01 - - 1 2 2434 37. 0 -1 2435 108. -2 -3 2436 - 7.5000000000000000e+00 - - 5.2559959888458252e-01 -9.0183192491531372e-01 - 3.9132472872734070e-01 -1.6153934597969055e-01 - <_> - 7.1377151489257812e+01 - - 1 2 2437 1.5000000000000000e+00 0 -1 2438 - 4.1500000000000000e+01 -2 -3 2439 136. - - -1.6022360324859619e-01 4.5697069168090820e-01 - -5.8138531446456909e-01 5.7625991106033325e-01 - <_> - 7.1590606689453125e+01 - - 1 2 2440 2.2950000000000000e+02 0 -1 2441 986. -2 -3 2442 - 2.5000000000000000e+00 - - -5.5947124958038330e-01 2.1345110237598419e-01 - 5.1724910736083984e-01 -7.9673564434051514e-01 - <_> - 7.1604888916015625e+01 - - 1 2 2443 9.5000000000000000e+00 0 -1 2444 - 2.3500000000000000e+01 -2 -3 2445 1.0550000000000000e+02 - - -4.6063753962516785e-01 3.1602507829666138e-01 - -5.2265387773513794e-01 6.4050400257110596e-01 - <_> - 7.1843421936035156e+01 - - 1 2 2446 2.3365000000000000e+03 0 -1 2447 - 1.3333500000000000e+04 -2 -3 2448 7.8250000000000000e+02 - - -5.7870197296142578e-01 9.2290049791336060e-01 - 6.9137138128280640e-01 -1.5123842656612396e-01 - <_> - 7.1939323425292969e+01 - - 1 2 2449 3.5000000000000000e+00 0 -1 2450 - 1.8500000000000000e+01 -2 -3 2451 6.1500000000000000e+01 - - -5.3932064771652222e-01 4.5498287677764893e-01 - -6.5867853164672852e-01 9.6776336431503296e-02 - <_> - 7.1796112060546875e+01 - - 1 2 2452 1.0050000000000000e+02 0 -1 2453 - 6.5000000000000000e+00 -2 -3 2454 9.9500000000000000e+01 - - 2.1488319337368011e-01 -3.8114818930625916e-01 - -9.3055361509323120e-01 9.2053020000457764e-01 - <_> - 7.1826210021972656e+01 - - 1 2 2455 5.3875000000000000e+03 0 -1 2456 - 4.0150000000000000e+02 -2 -3 2457 203. - - 3.6667090654373169e-01 -3.2799699902534485e-01 - -2.9070058465003967e-01 6.2547647953033447e-01 - <_> - 7.1566932678222656e+01 - - 1 2 2458 1164. 0 -1 2459 12122. -2 -3 2460 - 1.2565000000000000e+03 - - -8.4399074316024780e-01 8.6422222852706909e-01 - -2.5927615165710449e-01 3.1698527932167053e-01 - <_> - 7.2048255920410156e+01 - - 1 2 2461 7.0500000000000000e+01 0 -1 2462 - 5.0000000000000000e-01 -2 -3 2463 113. - - 4.2299839854240417e-01 -3.7696704268455505e-01 - 4.8132598400115967e-01 -8.4420484304428101e-01 - <_> - 7.2493713378906250e+01 - - 1 2 2464 1.5000000000000000e+00 0 -1 2465 24. -2 -3 2466 - 1.1650000000000000e+02 - - -7.3568606376647949e-01 4.4545513391494751e-01 - 4.5487869530916214e-02 -6.0882014036178589e-01 - <_> - 7.2295455932617188e+01 - - 1 2 2467 2.6500000000000000e+01 0 -1 2468 - 2.5000000000000000e+00 -2 -3 2469 1.9500000000000000e+01 - - 1.9328838586807251e-01 -9.2098551988601685e-01 - 2.8382617235183716e-01 -3.1953519582748413e-01 - <_> - 7.2064254760742188e+01 - - 1 2 2470 5.6500000000000000e+01 0 -1 2471 - 3.5000000000000000e+00 -2 -3 2472 2.2450000000000000e+02 - - 2.8244340419769287e-01 -2.9833537340164185e-01 -1. - 8.5370278358459473e-01 - <_> - 7.2284309387207031e+01 - - 1 2 2473 4.9500000000000000e+01 0 -1 2474 4038. -2 -3 2475 - 1.0500000000000000e+01 - - 3.4302046895027161e-01 -8.1761771440505981e-01 - -7.4983465671539307e-01 2.2005748748779297e-01 - <_> - 7.2424072265625000e+01 - - 1 2 2476 5.0000000000000000e-01 0 -1 2477 - 4.9525000000000000e+03 -2 -3 2478 1.2500000000000000e+01 - - 3.8115087151527405e-01 -6.6690814495086670e-01 - 1.3976120948791504e-01 -5.6789624691009521e-01 - <_> - 7.2313995361328125e+01 - - 1 2 2479 3.2500000000000000e+01 0 -1 2480 - 1.1926500000000000e+04 -2 -3 2481 6.0500000000000000e+01 - - -6.5613843500614166e-02 -7.5880628824234009e-01 - 2.2690546512603760e-01 -6.3682055473327637e-01 - <_> - 7.2143783569335938e+01 - - 1 2 2482 5.0000000000000000e-01 0 -1 2483 - 5.7535000000000000e+03 -2 -3 2484 5.5000000000000000e+00 - - -9.2257243394851685e-01 8.5957908630371094e-01 - 3.2697901129722595e-01 -1.7020969092845917e-01 - <_> - 7.2681999206542969e+01 - - 1 2 2485 7.1500000000000000e+01 0 -1 2486 188. -2 -3 2487 - 177. - - -2.7773711085319519e-01 6.7274010181427002e-01 - -3.3517399430274963e-01 7.5859177112579346e-01 - <_> - 7.2897277832031250e+01 - - 1 2 2488 6.7500000000000000e+01 0 -1 2489 - 2.1500000000000000e+01 -2 -3 2490 7.0500000000000000e+01 - - -7.9514396190643311e-01 2.1528589725494385e-01 1. - -7.2838509082794189e-01 - <_> - 7.2998519897460938e+01 - - 1 2 2491 6.5000000000000000e+00 0 -1 2492 161. -2 -3 2493 - 9578. - - 6.2451672554016113e-01 -1.9713717699050903e-01 - 1.0124062746763229e-01 -5.1373565196990967e-01 - <_> - 7.3003601074218750e+01 - - 1 2 2494 2.3415000000000000e+03 0 -1 2495 - 7.6500000000000000e+01 -2 -3 2496 1.4555000000000000e+03 - - -6.9544225931167603e-01 3.1051948666572571e-01 - 7.0642524957656860e-01 1.7271263524889946e-02 - <_> - 7.3047424316406250e+01 - - 1 2 2497 1.5500000000000000e+01 0 -1 2498 - 1.1500000000000000e+01 -2 -3 2499 5.7500000000000000e+01 - - 3.4771478176116943e-01 -8.5552608966827393e-01 - 3.6829981207847595e-01 -1.8874453008174896e-01 - <_> - 7.3427375793457031e+01 - - 1 2 2500 6.2500000000000000e+01 0 -1 2501 34698. -2 -3 2502 - 8.5000000000000000e+00 - - 1.6296713054180145e-01 -6.3167887926101685e-01 - 3.7994962930679321e-01 -4.6771416068077087e-01 - <_> - 7.3244293212890625e+01 - - 1 2 2503 2.3500000000000000e+01 0 -1 2504 - 3.8500000000000000e+01 -2 -3 2505 427. - - -2.9058054089546204e-01 5.2562189102172852e-01 - 6.4414465427398682e-01 -8.3316773176193237e-01 - <_> - 7.3628913879394531e+01 - - 1 2 2506 4.5000000000000000e+00 0 -1 2507 - 8.5000000000000000e+00 -2 -3 2508 1.6925000000000000e+03 - - -2.7814975380897522e-01 4.8170346021652222e-01 - -6.5349429845809937e-01 5.4887872189283371e-02 - <_> - 7.3769676208496094e+01 - - 1 2 2509 15430. 0 -1 2510 1.5950000000000000e+02 -2 -3 2511 - 1.2615000000000000e+03 - - 4.3867623805999756e-01 -7.6247996091842651e-01 - -4.5795723795890808e-01 2.0065939426422119e-01 - <_> - 7.3981689453125000e+01 - - 1 2 2512 7.3500000000000000e+01 0 -1 2513 - 2.6500000000000000e+01 -2 -3 2514 4.1500000000000000e+01 - - -6.2215524911880493e-01 2.1201618015766144e-01 - -7.7795881032943726e-01 7.5186353921890259e-01 - <_> - 7.3843399047851562e+01 - - 1 2 2515 3.5000000000000000e+00 0 -1 2516 9. -2 -3 2517 - 1.7500000000000000e+01 - - -1. 6.5247339010238647e-01 -5.3328835964202881e-01 - 6.5298572182655334e-02 - <_> - 7.3923049926757812e+01 - - 1 2 2518 5.2950000000000000e+02 0 -1 2519 - 1.8500000000000000e+01 -2 -3 2520 6.4500000000000000e+01 - - 2.7425521612167358e-01 -7.6726049184799194e-01 - 2.3897975683212280e-01 -5.1008826494216919e-01 - <_> - 7.3826148986816406e+01 - - 1 2 2521 7.0500000000000000e+01 0 -1 2522 - 2.8500000000000000e+01 -2 -3 2523 3.5000000000000000e+00 - - 1.1504331231117249e-01 -6.4958560466766357e-01 - 6.4581304788589478e-01 -9.6902929246425629e-02 - <_> - 7.4119972229003906e+01 - - 1 2 2524 163. 0 -1 2525 2.0450000000000000e+02 -2 -3 2526 - 1486. - - 7.2227291762828827e-02 -4.8131951689720154e-01 - 6.7641806602478027e-01 -1. - <_> - 7.4284828186035156e+01 - - 1 2 2527 9.5000000000000000e+00 0 -1 2528 - 5.4500000000000000e+01 -2 -3 2529 3.5000000000000000e+00 - - 2.1673867106437683e-01 -9.8935294151306152e-01 - -8.0995440483093262e-01 1.6485558450222015e-01 - <_> - 7.3767173767089844e+01 - - 1 2 2530 3.3500000000000000e+01 0 -1 2531 - 2.0500000000000000e+01 -2 -3 2532 326. - - 8.5764698684215546e-02 -5.1765644550323486e-01 - -3.3359569311141968e-01 5.3560173511505127e-01 - <_> - 7.4017349243164062e+01 - - 1 2 2533 1144. 0 -1 2534 1038. -2 -3 2535 227. - - -8.5851883888244629e-01 8.0733579397201538e-01 - 2.5017657876014709e-01 -4.6748492121696472e-01 - <_> - 7.4431625366210938e+01 - - 1 2 2536 8.6500000000000000e+01 0 -1 2537 7. -2 -3 2538 - 4.7500000000000000e+01 - - 5.0281429290771484e-01 -6.8806976079940796e-01 - 4.1427880525588989e-01 -1.3120372593402863e-01 - <_> - 7.4155914306640625e+01 - - 1 2 2539 2.8500000000000000e+01 0 -1 2540 - 1.2500000000000000e+01 -2 -3 2541 352. - - 4.0651530027389526e-01 -2.7571403980255127e-01 - 6.4302980899810791e-01 -6.1632806062698364e-01 - <_> - 7.4377723693847656e+01 - - 1 2 2542 4.5500000000000000e+01 0 -1 2543 - 4.5000000000000000e+00 -2 -3 2544 1.5000000000000000e+00 - - 2.1374966204166412e-01 -8.0584329366683960e-01 - -6.8813514709472656e-01 2.2180862724781036e-01 - <_> - 7.4892883300781250e+01 - - 1 2 2545 7.2450000000000000e+02 0 -1 2546 - 8.2650000000000000e+02 -2 -3 2547 2.5000000000000000e+00 - - -1.0470861941576004e-01 5.1516324281692505e-01 - 1.2213422358036041e-01 -7.9457265138626099e-01 - <_> - 7.4932922363281250e+01 - - 1 2 2548 1.4925000000000000e+03 0 -1 2549 - 2.5625000000000000e+03 -2 -3 2550 4.0125000000000000e+03 - - -1.9472637213766575e-03 8.4926861524581909e-01 - 4.0032647550106049e-02 -7.9371875524520874e-01 - <_> - 7.5366584777832031e+01 - - 1 2 2551 5.0000000000000000e-01 0 -1 2552 - 3.5150000000000000e+02 -2 -3 2553 7.6500000000000000e+01 - - -6.7581409215927124e-01 4.3366453051567078e-01 - -6.9250804185867310e-01 1.4782861806452274e-02 - <_> - 7.5361564636230469e+01 - - 1 2 2554 1.4550000000000000e+02 0 -1 2555 - 1.3500000000000000e+01 -2 -3 2556 3.7950000000000000e+02 - - -9.2167288064956665e-01 2.2473543882369995e-01 - -6.1316716670989990e-01 5.3515338897705078e-01 - <_> - 7.5602142333984375e+01 - - 1 2 2557 1.7500000000000000e+01 0 -1 2558 - 3.0150000000000000e+02 -2 -3 2559 5.9500000000000000e+01 - - -2.0176244899630547e-02 7.6716834306716919e-01 - -6.2594699859619141e-01 2.9301643371582031e-02 - <_> - 7.5772842407226562e+01 - - 1 2 2560 7.0205000000000000e+03 0 -1 2561 - 7.5000000000000000e+00 -2 -3 2562 182. - - -7.9505175352096558e-01 1.7069797217845917e-01 - -8.2258385419845581e-01 7.3946392536163330e-01 - <_> - 7.5877098083496094e+01 - - 1 2 2563 4.5500000000000000e+01 0 -1 2564 - 6.8445000000000000e+03 -2 -3 2565 7.9500000000000000e+01 - - 3.9029154181480408e-01 -1.7648826539516449e-01 - -5.5182862281799316e-01 4.6366956830024719e-01 - <_> - 7.5638267517089844e+01 - - 1 2 2566 5.1850000000000000e+02 0 -1 2567 - 4.5000000000000000e+00 -2 -3 2568 5.0500000000000000e+01 - - 2.6328665018081665e-01 -3.8584133982658386e-01 - -6.9626593589782715e-01 5.0637173652648926e-01 - <_> - 7.5725959777832031e+01 - - 1 2 2569 1.9950000000000000e+02 0 -1 2570 - 1.8500000000000000e+01 -2 -3 2571 3.6500000000000000e+01 - - -4.1137224435806274e-01 2.0416383445262909e-01 - -9.0335428714752197e-01 8.9813232421875000e-01 - <_> - 7.5224937438964844e+01 - - 1 2 2572 7.5000000000000000e+00 0 -1 2573 - 2.5500000000000000e+01 -2 -3 2574 2.8450000000000000e+02 - - -7.3831039667129517e-01 3.6077511310577393e-01 - 3.1331515312194824e-01 -5.0101745128631592e-01 - <_> - 7.5449661254882812e+01 - - 1 2 2575 5.0000000000000000e-01 0 -1 2576 - 3.7665000000000000e+03 -2 -3 2577 8.2500000000000000e+01 - - 7.5498217344284058e-01 -1.5097464621067047e-01 - -3.8953059911727905e-01 2.2472013533115387e-01 - <_> - 7.5411880493164062e+01 - - 1 2 2578 4493. 0 -1 2579 2.5500000000000000e+01 -2 -3 2580 - 2.4500000000000000e+01 - - 2.1087837219238281e-01 -2.8623789548873901e-01 -1. - 9.5196199417114258e-01 - <_> - 7.5614067077636719e+01 - - 1 2 2581 1.0500000000000000e+01 0 -1 2582 17. -2 -3 2583 - 103. - - -7.5117886066436768e-01 9.0265202522277832e-01 - 2.0218542218208313e-01 -7.3936897516250610e-01 - <_> - 7.5999168395996094e+01 - - 1 2 2584 3.8500000000000000e+01 0 -1 2585 5086. -2 -3 2586 - 5.4500000000000000e+01 - - 5.9127920866012573e-01 -5.5186152458190918e-01 - 6.0463196039199829e-01 -9.3399420380592346e-02 - <_> - 7.6240371704101562e+01 - - 1 2 2587 2.7500000000000000e+01 0 -1 2588 - 3.5000000000000000e+00 -2 -3 2589 91. - - -6.9810129702091217e-02 -8.4188365936279297e-01 - 2.4120073020458221e-01 -6.5708816051483154e-01 - <_> - 7.6235023498535156e+01 - - 1 2 2590 1.9500000000000000e+01 0 -1 2591 - 1.6500000000000000e+01 -2 -3 2592 4.5000000000000000e+00 - - 3.0514994263648987e-01 -3.2603117823600769e-01 - -4.3177062273025513e-01 8.1372964382171631e-01 - <_> - 7.6073257446289062e+01 - - 1 2 2593 1.2135000000000000e+03 0 -1 2594 - 1.5725000000000000e+03 -2 -3 2595 5.0650000000000000e+02 - - 4.9728196859359741e-01 -4.1840994358062744e-01 - 6.4058172702789307e-01 -1.6176456212997437e-01 - <_> - 7.6243354797363281e+01 - - 1 2 2596 2.5000000000000000e+00 0 -1 2597 - 4.2500000000000000e+01 -2 -3 2598 1.0500000000000000e+01 - - 2.2679857909679413e-01 -6.9367134571075439e-01 - 5.3237688541412354e-01 -5.3971223533153534e-02 - <_> - 7.6326980590820312e+01 - - 1 2 2599 5.0500000000000000e+01 0 -1 2600 - 3.5000000000000000e+00 -2 -3 2601 6.9315000000000000e+03 - - 2.1303455531597137e-01 -6.3557696342468262e-01 - -1.9230200350284576e-01 4.7144305706024170e-01 - <_> - 7.6166137695312500e+01 - - 1 2 2602 6905. 0 -1 2603 5.9785000000000000e+03 -2 -3 2604 - 2.5000000000000000e+00 - - -4.6545404940843582e-02 6.8220782279968262e-01 - 1.9928511977195740e-01 -5.4866182804107666e-01 - <_> - 7.6497024536132812e+01 - - 1 2 2605 3.5000000000000000e+00 0 -1 2606 - 1.5000000000000000e+00 -2 -3 2607 1.5500000000000000e+01 - - 1. -9.3044626712799072e-01 3.3089175820350647e-01 - -2.4615941941738129e-01 - <_> - 7.6440460205078125e+01 - - 1 2 2608 9.8500000000000000e+01 0 -1 2609 - 2.1950000000000000e+02 -2 -3 2610 1.5000000000000000e+00 - - -5.9206131845712662e-02 -7.2229409217834473e-01 - -7.6280659437179565e-01 4.8397278785705566e-01 - <_> - 7.6623970031738281e+01 - - 1 2 2611 6.5500000000000000e+01 0 -1 2612 - 5.0000000000000000e-01 -2 -3 2613 1.0050000000000000e+02 - - 3.7457340955734253e-01 -9.0597450733184814e-01 - 1.8351505696773529e-01 -5.7986891269683838e-01 - <_> - 7.6471252441406250e+01 - - 1 2 2614 1.1615000000000000e+03 0 -1 2615 - 2.0525000000000000e+03 -2 -3 2616 7.8150000000000000e+02 - - -7.5747263431549072e-01 8.2365345954895020e-01 - 4.9958717823028564e-01 -1.5272425115108490e-01 - <_> - 7.6615051269531250e+01 - - 1 2 2617 1.2950000000000000e+02 0 -1 2618 - 4.0500000000000000e+01 -2 -3 2619 2.5000000000000000e+00 - - -8.1159070134162903e-02 5.3420531749725342e-01 - 3.5195964574813843e-01 -8.9636689424514771e-01 - <_> - 7.6877807617187500e+01 - - 1 2 2620 2.2050000000000000e+02 0 -1 2621 - 9.5000000000000000e+00 -2 -3 2622 1.5500000000000000e+01 - - 1.3451068103313446e-01 -4.0673348307609558e-01 - -8.1775653362274170e-01 7.4299770593643188e-01 - <_> - 7.6823638916015625e+01 - - 1 2 2623 2.4500000000000000e+01 0 -1 2624 - 5.9500000000000000e+01 -2 -3 2625 5.1515000000000000e+03 - - -7.1872109174728394e-01 7.7110481262207031e-01 - 3.9283660054206848e-01 -1.6952608525753021e-01 - <_> - 7.6773773193359375e+01 - - 1 2 2626 8.5000000000000000e+00 0 -1 2627 - 3.5000000000000000e+00 -2 -3 2628 1.8450000000000000e+02 - - -6.7384725809097290e-01 6.7822283506393433e-01 - -3.4205380082130432e-01 2.1638515591621399e-01 - <_> - 7.6982254028320312e+01 - - 1 2 2629 2.8500000000000000e+01 0 -1 2630 245. -2 -3 2631 - 61. - - 2.0848464965820312e-01 -6.2569552659988403e-01 - -8.1863158941268921e-01 8.4820270538330078e-01 - <_> - 7.6841300964355469e+01 - - 1 2 2632 2.1500000000000000e+01 0 -1 2633 - 3.5000000000000000e+00 -2 -3 2634 5.0000000000000000e-01 - - -8.5113090276718140e-01 7.8649562597274780e-01 - 4.1131305694580078e-01 -1.4095856249332428e-01 - <_> - 7.7013679504394531e+01 - - 1 2 2635 7.4950000000000000e+02 0 -1 2636 - 9.5000000000000000e+00 -2 -3 2637 7.9500000000000000e+01 - - 1.7237815260887146e-01 -4.3325147032737732e-01 - -1.0799569636583328e-01 6.9663918018341064e-01 - <_> - 7.7435089111328125e+01 - - 1 2 2638 1.7500000000000000e+01 0 -1 2639 174. -2 -3 2640 - 12650. - - 2.8112256526947021e-01 -5.1195782423019409e-01 - 4.2141020298004150e-01 -5.3448003530502319e-01 - <_> - 7.7268295288085938e+01 - - 1 2 2641 503. 0 -1 2642 1.3950000000000000e+02 -2 -3 2643 - 5.5000000000000000e+00 - - 5.8834999799728394e-01 -8.3229357004165649e-01 - 3.7692824006080627e-01 -1.6679267585277557e-01 - <_> - 7.7178421020507812e+01 - - 1 2 2644 1.3500000000000000e+01 0 -1 2645 - 2.5000000000000000e+00 -2 -3 2646 4.5000000000000000e+00 - - -6.5913814306259155e-01 5.2206271886825562e-01 - 4.7852468490600586e-01 -8.9874200522899628e-02 - <_> - 7.7000297546386719e+01 - - 1 2 2647 2.6500000000000000e+01 0 -1 2648 - 9.5000000000000000e+00 -2 -3 2649 4.5000000000000000e+00 - - -8.1166177988052368e-01 4.6178385615348816e-01 - 3.5849693417549133e-01 -1.7812377214431763e-01 - <_> - 7.7597846984863281e+01 - - 1 2 2650 5.0000000000000000e-01 0 -1 2651 - 5.5000000000000000e+00 -2 -3 2652 6.2500000000000000e+01 - - -7.4793010950088501e-01 4.5227390527725220e-01 - -2.8616324067115784e-01 7.2525143623352051e-01 - <_> - 7.7900642395019531e+01 - - 1 2 2653 3.9500000000000000e+01 0 -1 2654 26. -2 -3 2655 - 5218. - - 5.8358985185623169e-01 -4.8778259754180908e-01 - 3.0279731750488281e-01 -8.5277533531188965e-01 - <_> - 7.7819618225097656e+01 - - 1 2 2656 9.5000000000000000e+00 0 -1 2657 6301. -2 -3 2658 - 6.5000000000000000e+00 - - 9.1035622358322144e-01 -9.4324058294296265e-01 - 4.2837977409362793e-01 -1.6642063856124878e-01 - <_> - 7.7973083496093750e+01 - - 1 2 2659 1.0500000000000000e+01 0 -1 2660 - 2.5595000000000000e+03 -2 -3 2661 3.0950000000000000e+02 - - -4.6133957803249359e-02 5.8160132169723511e-01 - -5.6929016113281250e-01 4.2342483997344971e-01 - <_> - 7.7966255187988281e+01 - - 1 2 2662 6.5000000000000000e+00 0 -1 2663 - 2.9250000000000000e+02 -2 -3 2664 4.7550000000000000e+02 - - -1.8533475697040558e-02 8.2740765810012817e-01 - -7.0250022411346436e-01 -6.8264966830611229e-03 - <_> - 7.7632484436035156e+01 - - 1 2 2665 2.5750000000000000e+02 0 -1 2666 - 3.7515000000000000e+03 -2 -3 2667 3.5000000000000000e+00 - - -9.5757788419723511e-01 8.6831378936767578e-01 - 2.1071645617485046e-01 -3.3376976847648621e-01 - <_> - 7.7842147827148438e+01 - - 1 2 2668 1.6650000000000000e+02 0 -1 2669 196. -2 -3 2670 - 2.5150000000000000e+02 - - 1.5279424190521240e-01 -6.0143697261810303e-01 - 5.7514303922653198e-01 -2.5379255414009094e-01 - <_> - 7.7947998046875000e+01 - - 1 2 2671 1.9500000000000000e+01 0 -1 2672 - 1.8850000000000000e+02 -2 -3 2673 3.5000000000000000e+00 - - -9.4067907333374023e-01 1. 4.1685935854911804e-01 - -1.3797542452812195e-01 - <_> - 7.8399063110351562e+01 - - 1 2 2674 2.5500000000000000e+01 0 -1 2675 - 2.5000000000000000e+00 -2 -3 2676 7.0765000000000000e+03 - - 2.0323142409324646e-01 -4.4056713581085205e-01 - -7.2788339853286743e-01 4.5106858015060425e-01 - <_> - 7.8570816040039062e+01 - - 1 2 2677 42. 0 -1 2678 1.8550000000000000e+02 -2 -3 2679 - 2.6500000000000000e+01 - - 8.6221927404403687e-01 -8.9485520124435425e-01 - -6.2209093570709229e-01 1.7175154387950897e-01 - <_> - 7.8441680908203125e+01 - - 1 2 2680 6.1500000000000000e+01 0 -1 2681 - 5.0000000000000000e-01 -2 -3 2682 1.9650000000000000e+02 - - 4.3466070294380188e-01 -1.2913754582405090e-01 - 3.0203801393508911e-01 -7.8498184680938721e-01 - <_> - 7.8473335266113281e+01 - - 1 2 2683 2.4500000000000000e+01 0 -1 2684 - 1.3505000000000000e+03 -2 -3 2685 1.1150000000000000e+02 - - 1.2745502591133118e-01 -5.3675878047943115e-01 - 7.7312016487121582e-01 3.1652595847845078e-02 - <_> - 7.8451828002929688e+01 - - 1 2 2686 2.3145000000000000e+03 0 -1 2687 267. -2 -3 2688 - 13841. - - -6.8013966083526611e-01 6.3926976919174194e-01 - 5.1043254137039185e-01 -5.8976538479328156e-02 - <_> - 7.8873893737792969e+01 - - 1 2 2689 2.3050000000000000e+02 0 -1 2690 - 8.5500000000000000e+01 -2 -3 2691 1.8500000000000000e+01 - - 1.5697926282882690e-01 -4.9062812328338623e-01 - -2.8371900320053101e-01 5.3703123331069946e-01 - <_> - 7.8867477416992188e+01 - - 1 2 2692 1.7500000000000000e+01 0 -1 2693 - 2.3500000000000000e+01 -2 -3 2694 2.9850000000000000e+02 - - -8.6949959397315979e-02 4.9665886163711548e-01 - 4.2928251624107361e-01 -7.4992567300796509e-01 - <_> - 7.9131950378417969e+01 - - 1 2 2695 8.7500000000000000e+01 0 -1 2696 - 1.9850000000000000e+02 -2 -3 2697 84. - - 2.6447936892509460e-01 -4.0403616428375244e-01 - -7.4564838409423828e-01 7.5660055875778198e-01 - <_> - 7.8859619140625000e+01 - - 1 2 2698 1.8500000000000000e+01 0 -1 2699 193. -2 -3 2700 - 3.5000000000000000e+00 - - 6.6051805019378662e-01 -6.8317562341690063e-01 - 4.0860527753829956e-01 -1.5469188988208771e-01 - <_> - 7.9192871093750000e+01 - - 1 2 2701 1.0450000000000000e+02 0 -1 2702 - 2.1250000000000000e+02 -2 -3 2703 368. - - 2.8573963046073914e-01 -5.1572942733764648e-01 - 3.3325448632240295e-01 -7.9736381769180298e-01 - <_> - 7.9073951721191406e+01 - - 1 2 2704 5.0000000000000000e-01 0 -1 2705 - 1.3350000000000000e+02 -2 -3 2706 8.5000000000000000e+00 - - -7.5674408674240112e-01 4.2235055565834045e-01 - -6.1476016044616699e-01 3.5760600119829178e-02 - <_> - 7.9772453308105469e+01 - - 1 2 2707 1622. 0 -1 2708 5.6850000000000000e+02 -2 -3 2709 - 2.3500000000000000e+01 - - 3.7303709983825684e-01 -2.6838380098342896e-01 - 8.5874927043914795e-01 -6.8010163307189941e-01 - <_> - 7.9616546630859375e+01 - - 1 2 2710 5.1150000000000000e+02 0 -1 2711 - 2.0500000000000000e+01 -2 -3 2712 6.2385000000000000e+03 - - -2.7740508317947388e-01 6.4964014291763306e-01 - 6.8416231870651245e-01 -1.4068825542926788e-01 - <_> - 7.9560432434082031e+01 - - 1 2 2713 2.0500000000000000e+01 0 -1 2714 152. -2 -3 2715 - 118. - - 3.3152368664741516e-01 -7.2081387042999268e-01 - -7.7464383840560913e-01 -7.1336306631565094e-02 - <_> - 7.9178382873535156e+01 - - 1 2 2716 5.0000000000000000e-01 0 -1 2717 - 5.0000000000000000e-01 -2 -3 2718 2.8550000000000000e+02 - - -8.7511628866195679e-01 4.4366469979286194e-01 - 2.7641782164573669e-01 -3.8205233216285706e-01 - <_> - 7.9044113159179688e+01 - - 1 2 2719 3.6758500000000000e+04 0 -1 2720 119. -2 -3 2721 - 9.8250000000000000e+02 - - -8.9374190568923950e-01 1. 4.1436728835105896e-01 - -1.3426418602466583e-01 - <_> - 7.8986122131347656e+01 - - 1 2 2722 5.0000000000000000e-01 0 -1 2723 - 2.2500000000000000e+01 -2 -3 2724 4.5000000000000000e+00 - - -8.2067567110061646e-01 3.4801307320594788e-01 - -6.9476479291915894e-01 -5.7994190603494644e-02 - <_> - 7.9108413696289062e+01 - - 1 2 2725 4.2500000000000000e+01 0 -1 2726 - 1.8500000000000000e+01 -2 -3 2727 3.0500000000000000e+01 - - -4.1990894079208374e-01 5.0099647045135498e-01 - -5.2207231521606445e-01 1.2229448556900024e-01 - <_> - 7.9801383972167969e+01 - - 1 2 2728 8.2550000000000000e+02 0 -1 2729 - 5.0000000000000000e-01 -2 -3 2730 6.1765000000000000e+03 - - 3.1118586659431458e-01 -3.7582796812057495e-01 - 6.9296795129776001e-01 -9.2976748943328857e-02 - <_> - 8.0057861328125000e+01 - - 1 2 2731 7.5350000000000000e+02 0 -1 2732 - 5.8500000000000000e+01 -2 -3 2733 1.5000000000000000e+00 - - -2.4525830149650574e-01 2.5647372007369995e-01 - 8.4999513626098633e-01 -9.9117010831832886e-01 - <_> - 7.9780632019042969e+01 - - 1 2 2734 5.0000000000000000e-01 0 -1 2735 108. -2 -3 2736 - 7.1500000000000000e+01 - - 6.9359833002090454e-01 -6.9194906949996948e-01 - -2.7722206711769104e-01 4.1715595126152039e-01 - <_> - 8.0145835876464844e+01 - - 1 2 2737 2.0500000000000000e+01 0 -1 2738 - 4.5000000000000000e+00 -2 -3 2739 7.6500000000000000e+01 - - -9.7951823472976685e-01 3.6520305275917053e-01 - -3.8517192006111145e-01 4.9779340624809265e-01 - <_> - 7.9998329162597656e+01 - - 1 2 2740 1.1165000000000000e+03 0 -1 2741 - 4.5500000000000000e+01 -2 -3 2742 7.7500000000000000e+01 - - -9.2406588792800903e-01 1. 3.6648508906364441e-01 - -1.4751173555850983e-01 - <_> - 8.0417495727539062e+01 - - 1 2 2743 7905. 0 -1 2744 1.4950000000000000e+02 -2 -3 2745 - 98. - - 3.2732751220464706e-02 -7.6812428236007690e-01 - -7.5380378961563110e-01 4.7367131710052490e-01 - <_> - 7.9864738464355469e+01 - - 1 2 2746 6.5000000000000000e+00 0 -1 2747 - 1.2235000000000000e+03 -2 -3 2748 27. - - 5.5213552713394165e-01 -6.3920162618160248e-02 - -9.2558085918426514e-01 -1.1656486988067627e-01 - <_> - 7.9995124816894531e+01 - - 1 2 2749 2.1150000000000000e+02 0 -1 2750 - 1.6500000000000000e+01 -2 -3 2751 34. - - 2.0876583456993103e-01 -3.5845145583152771e-01 - -7.5983208417892456e-01 6.1741626262664795e-01 - <_> - 8.0029579162597656e+01 - - 1 2 2752 1.0500000000000000e+01 0 -1 2753 - 3.0150000000000000e+02 -2 -3 2754 3.5000000000000000e+00 - - 1.8833340704441071e-01 -4.5257857441902161e-01 - -8.7599718570709229e-01 3.9588588476181030e-01 - <_> - 8.0429824829101562e+01 - - 1 2 2755 1.7500000000000000e+01 0 -1 2756 - 5.5950000000000000e+02 -2 -3 2757 3.8500000000000000e+01 - - 9.0497744083404541e-01 -3.4649524092674255e-01 - 4.0024894475936890e-01 -4.3823891878128052e-01 - <_> - 8.0367797851562500e+01 - - 1 2 2758 5.0000000000000000e-01 0 -1 2759 - 1.0032500000000000e+04 -2 -3 2760 1.4500000000000000e+01 - - -7.4333506822586060e-01 4.4759553670883179e-01 - -6.5220975875854492e-01 5.3118625655770302e-03 - <_> - 8.0484443664550781e+01 - - 1 2 2761 7.5500000000000000e+01 0 -1 2762 - 8.4500000000000000e+01 -2 -3 2763 51. - - -4.7128376364707947e-01 3.0099546909332275e-01 - -5.9575259685516357e-01 4.5461925864219666e-01 - <_> - 8.0230026245117188e+01 - - 1 2 2764 6.6250000000000000e+02 0 -1 2765 4812. -2 -3 2766 - 9.5000000000000000e+00 - - -8.2453155517578125e-01 8.0837249755859375e-01 - 3.8529312610626221e-01 -2.5441926717758179e-01 - <_> - 8.0529327392578125e+01 - - 1 2 2767 5.9500000000000000e+01 0 -1 2768 - 1.6050000000000000e+02 -2 -3 2769 1.5000000000000000e+00 - - 3.9788705110549927e-01 -9.0285009145736694e-01 - 2.9930576682090759e-01 -2.6814186573028564e-01 - <_> - 8.0221504211425781e+01 - - 1 2 2770 3.0500000000000000e+01 0 -1 2771 - 4.5000000000000000e+00 -2 -3 2772 1.4475000000000000e+03 - - -9.4630533456802368e-01 8.2679504156112671e-01 - 2.5290638208389282e-01 -3.0782324075698853e-01 - <_> - 8.0379684448242188e+01 - - 1 2 2773 5.0645000000000000e+03 0 -1 2774 - 3.2500000000000000e+01 -2 -3 2775 3.5325000000000000e+03 - - -6.8182122707366943e-01 2.9198646545410156e-01 - 5.7170498371124268e-01 -9.3514062464237213e-02 - <_> - 8.0165153503417969e+01 - - 1 2 2776 1.5500000000000000e+01 0 -1 2777 - 1.2765000000000000e+03 -2 -3 2778 2.5000000000000000e+00 - - -1.2029168428853154e-03 6.6435748338699341e-01 - 5.4809719324111938e-01 -6.2805855274200439e-01 - <_> - 8.0611167907714844e+01 - - 1 2 2779 2.5000000000000000e+00 0 -1 2780 - 2.1500000000000000e+01 -2 -3 2781 1.2050000000000000e+02 - - -2.4764390289783478e-01 4.4601744413375854e-01 - 1.6960276663303375e-01 -5.8656966686248779e-01 - <_> - 8.0892166137695312e+01 - - 1 2 2782 5.4500000000000000e+01 0 -1 2783 - 9.7350000000000000e+02 -2 -3 2784 1.0500000000000000e+01 - - 2.7698031067848206e-01 -8.4596508741378784e-01 - 2.8099426627159119e-01 -3.0595216155052185e-01 - <_> - 8.1190002441406250e+01 - - 1 2 2785 3.5000000000000000e+00 0 -1 2786 - 9.4500000000000000e+01 -2 -3 2787 15. - - -2.3588234186172485e-01 2.9783576726913452e-01 1. - -9.3145948648452759e-01 - <_> - 8.0872680664062500e+01 - - 1 2 2788 5.0000000000000000e-01 0 -1 2789 34. -2 -3 2790 - 404. - - -9.7627913951873779e-01 4.5835772156715393e-01 - 3.3686440438032150e-02 -6.0926121473312378e-01 - <_> - 8.1137512207031250e+01 - - 1 2 2791 4.2500000000000000e+01 0 -1 2792 - 7.5000000000000000e+00 -2 -3 2793 1.0500000000000000e+01 - - 4.3087863922119141e-01 -5.4735422134399414e-01 - -7.4202680587768555e-01 2.6482933759689331e-01 - <_> - 8.1074195861816406e+01 - - 1 2 2794 6045. 0 -1 2795 3582. -2 -3 2796 - 1.4355000000000000e+03 - - 5.6150436401367188e-01 -6.3314586877822876e-02 - -9.8905169963836670e-01 1. - <_> - 8.1611145019531250e+01 - - 1 2 2797 1.7500000000000000e+01 0 -1 2798 - 6.3500000000000000e+01 -2 -3 2799 2.5000000000000000e+00 - - -9.5531716942787170e-02 5.3694951534271240e-01 - 4.7020646929740906e-01 -5.0288665294647217e-01 - <_> - 8.1308403015136719e+01 - - 1 2 2800 5.5000000000000000e+00 0 -1 2801 110. -2 -3 2802 - 2.5000000000000000e+00 - - -9.1038602590560913e-01 7.3705679178237915e-01 - 2.4539317190647125e-01 -3.0274006724357605e-01 - <_> - 8.0943153381347656e+01 - - 1 2 2803 4.9550000000000000e+02 0 -1 2804 - 1.0500000000000000e+01 -2 -3 2805 1.7500000000000000e+01 - - 1.8987993896007538e-01 -3.6525547504425049e-01 -1. - 8.1189829111099243e-01 - <_> - 8.1049530029296875e+01 - - 1 2 2806 1.7050000000000000e+02 0 -1 2807 - 5.5000000000000000e+00 -2 -3 2808 6.3500000000000000e+01 - - 5.0011897087097168e-01 -2.4462732672691345e-01 - 6.2346208095550537e-01 -5.9039413928985596e-01 - <_> - 8.1308738708496094e+01 - - 1 2 2809 3.8500000000000000e+01 0 -1 2810 - 8.6500000000000000e+01 -2 -3 2811 8.8500000000000000e+01 - - -3.8746827840805054e-01 2.5921225547790527e-01 - 6.4567667245864868e-01 -3.9673528075218201e-01 - <_> - 8.1096168518066406e+01 - - 1 2 2812 4.5000000000000000e+00 0 -1 2813 - 3.6500000000000000e+01 -2 -3 2814 1.2500000000000000e+01 - - 8.4782302379608154e-01 -9.7110116481781006e-01 - 3.3998885750770569e-01 -2.1257449686527252e-01 - <_> - 8.1410560607910156e+01 - - 1 2 2815 4.5000000000000000e+00 0 -1 2816 - 7.5500000000000000e+01 -2 -3 2817 1.4500000000000000e+01 - - -1. 1. 3.1439647078514099e-01 -1.7778587341308594e-01 - <_> - 8.1814201354980469e+01 - - 1 2 2818 3.9500000000000000e+01 0 -1 2819 - 6.4750000000000000e+02 -2 -3 2820 9.5000000000000000e+00 - - 2.4708394706249237e-01 -9.2105174064636230e-01 - 4.0363448858261108e-01 -1.2905533611774445e-01 - <_> - 8.1573196411132812e+01 - - 1 2 2821 3.0500000000000000e+01 0 -1 2822 - 5.0000000000000000e-01 -2 -3 2823 5.0500000000000000e+01 - - 4.9701321125030518e-01 -5.6365805864334106e-01 - 2.8191345930099487e-01 -5.3536522388458252e-01 - <_> - 8.1956001281738281e+01 - - 1 2 2824 4.6085000000000000e+03 0 -1 2825 - 1.3250000000000000e+02 -2 -3 2826 1.9750000000000000e+02 - - -7.4937385320663452e-01 9.3439608812332153e-01 - 3.8280078768730164e-01 -2.6699417829513550e-01 - <_> - 8.1513214111328125e+01 - - 1 2 2827 3.0500000000000000e+01 0 -1 2828 - 5.5000000000000000e+00 -2 -3 2829 9.9235000000000000e+03 - - 2.1246223151683807e-01 -4.4278442859649658e-01 - -8.1646180152893066e-01 5.1293396949768066e-01 - <_> - 8.1699577331542969e+01 - - 1 2 2830 1.1650000000000000e+02 0 -1 2831 - 8.2500000000000000e+01 -2 -3 2832 3.5000000000000000e+00 - - 1.8636158108711243e-01 -4.9596223235130310e-01 - -8.9908498525619507e-01 1. - <_> - 8.2445182800292969e+01 - - 1 2 2833 1903. 0 -1 2834 2.5000000000000000e+00 -2 -3 2835 - 6.0445000000000000e+03 - - 1.8896391987800598e-01 -3.2746449112892151e-01 - 7.4561136960983276e-01 -7.9816836118698120e-01 - <_> - 8.2831352233886719e+01 - - 1 2 2836 2.7500000000000000e+01 0 -1 2837 469. -2 -3 2838 - 1.2175000000000000e+03 - - 7.7044230699539185e-01 -9.5174908638000488e-01 - -1.4690612256526947e-01 3.8616815209388733e-01 - <_> - 8.2686500549316406e+01 - - 1 2 2839 2895. 0 -1 2840 4.3500000000000000e+01 -2 -3 2841 - 34. - - -1.4485244452953339e-01 4.4888463616371155e-01 - 3.6486008763313293e-01 -8.1205248832702637e-01 - <_> - 8.2188568115234375e+01 - - 1 2 2842 3.5000000000000000e+00 0 -1 2843 2070. -2 -3 2844 - 4.7500000000000000e+01 - - -6.9201928377151489e-01 3.1747218966484070e-01 - -4.9793621897697449e-01 5.4417175054550171e-01 - <_> - 8.2745765686035156e+01 - - 1 2 2845 2.5000000000000000e+00 0 -1 2846 - 7.5000000000000000e+00 -2 -3 2847 1.8500000000000000e+01 - - -8.4509557485580444e-01 5.5719637870788574e-01 - 1.7902635037899017e-01 -4.2469331622123718e-01 - <_> - 8.2670654296875000e+01 - - 1 2 2848 1.3500000000000000e+01 0 -1 2849 - 9.4650000000000000e+02 -2 -3 2850 7.8500000000000000e+01 - - -3.3974867314100266e-02 -8.2525712251663208e-01 - -4.6273630857467651e-01 6.6797983646392822e-01 - <_> - 8.2877090454101562e+01 - - 1 2 2851 1.4500000000000000e+01 0 -1 2852 - 1.1915000000000000e+03 -2 -3 2853 3.9500000000000000e+01 - - 6.6358172893524170e-01 -7.2160053253173828e-01 - -6.6055583953857422e-01 2.0643877983093262e-01 - <_> - 8.2504707336425781e+01 - - 1 2 2854 4.5000000000000000e+00 0 -1 2855 - 1.6250000000000000e+02 -2 -3 2856 6.5000000000000000e+00 - - 1.9229575991630554e-02 6.7639851570129395e-01 - 7.7679026126861572e-01 -3.7238210439682007e-01 - <_> - 8.1991981506347656e+01 - - 1 2 2857 1.8500000000000000e+01 0 -1 2858 - 1.5500000000000000e+01 -2 -3 2859 7.5000000000000000e+00 - - -6.6943126916885376e-01 2.8580504655838013e-01 - 5.7573765516281128e-01 -5.1273131370544434e-01 - <_> - 8.2700317382812500e+01 - - 1 2 2860 2.5335000000000000e+03 0 -1 2861 - 5.5000000000000000e+00 -2 -3 2862 9017. - - 4.5291054248809814e-01 -3.1770652532577515e-01 - 7.0833772420883179e-01 -5.8668452501296997e-01 - <_> - 8.3036483764648438e+01 - - 1 2 2863 1.2665000000000000e+03 0 -1 2864 - 2.7950000000000000e+02 -2 -3 2865 1.6050000000000000e+02 - - 5.6190413236618042e-01 -9.4979606568813324e-02 - -5.6120347976684570e-01 6.9735217094421387e-01 - <_> - 8.3268234252929688e+01 - - 1 2 2866 3.1500000000000000e+01 0 -1 2867 - 2.2850000000000000e+02 -2 -3 2868 338. - - 2.9099774360656738e-01 -8.5712206363677979e-01 - -7.3761904239654541e-01 2.3174422979354858e-01 - <_> - 8.3142601013183594e+01 - - 1 2 2869 1.3500000000000000e+01 0 -1 2870 - 7.5500000000000000e+01 -2 -3 2871 7.5000000000000000e+00 - - -6.1628973484039307e-01 8.9499497413635254e-01 - 5.3249603509902954e-01 -1.2562887370586395e-01 - <_> - 8.3346061706542969e+01 - - 1 2 2872 5.8500000000000000e+01 0 -1 2873 - 1.4500000000000000e+01 -2 -3 2874 2.3655000000000000e+03 - - -5.8924037218093872e-01 2.0346269011497498e-01 - 6.8413233757019043e-01 -7.3724877834320068e-01 - <_> - 8.3734870910644531e+01 - - 1 2 2875 1.5500000000000000e+01 0 -1 2876 - 2.4500000000000000e+01 -2 -3 2877 842. - - -9.6514111757278442e-01 4.5274001359939575e-01 - -4.4388589262962341e-01 1.6307270526885986e-01 - <_> - 8.3378517150878906e+01 - - 1 2 2878 2.3415000000000000e+03 0 -1 2879 - 1.1135000000000000e+03 -2 -3 2880 1.4450000000000000e+02 - - -6.0065728425979614e-01 4.9152576923370361e-01 - 3.9019897580146790e-01 -3.5635352134704590e-01 - <_> - 8.3842796325683594e+01 - - 1 2 2881 7.7500000000000000e+01 0 -1 2882 - 1.5000000000000000e+00 -2 -3 2883 34. - - 3.0433416366577148e-01 -3.4621056914329529e-01 - -2.3730756342411041e-01 7.2603577375411987e-01 - <_> - 8.4082458496093750e+01 - - 1 2 2884 5.0000000000000000e-01 0 -1 2885 - 1.5000000000000000e+00 -2 -3 2886 2.4500000000000000e+01 - - -8.4981471300125122e-01 4.6478056907653809e-01 - -4.4265326857566833e-01 2.3966242372989655e-01 - <_> - 8.4403526306152344e+01 - - 1 2 2887 1.9735000000000000e+03 0 -1 2888 61716. -2 -3 2889 - 7.1250000000000000e+02 - - 3.2107087969779968e-01 -7.3176121711730957e-01 - -4.2035382986068726e-01 6.5387272834777832e-01 - <_> - 8.3859382629394531e+01 - - 1 2 2890 5.1500000000000000e+01 0 -1 2891 - 5.4500000000000000e+01 -2 -3 2892 9.4500000000000000e+01 - - -8.5267591476440430e-01 3.3089217543601990e-01 - -5.4414278268814087e-01 1.4185604453086853e-01 - <_> - 8.4165733337402344e+01 - - 1 2 2893 2.5000000000000000e+00 0 -1 2894 170. -2 -3 2895 - 5.0000000000000000e-01 - - -7.4921059608459473e-01 1. 3.0634912848472595e-01 - -2.8711661696434021e-01 - <_> - 8.4014938354492188e+01 - - 1 2 2896 5.0000000000000000e-01 0 -1 2897 - 4.5000000000000000e+00 -2 -3 2898 1.5000000000000000e+00 - - -4.4929865002632141e-01 7.1007603406906128e-01 - 5.1218295097351074e-01 -2.8127226233482361e-01 - <_> - 8.3658638000488281e+01 - - 1 2 2899 6.2500000000000000e+01 0 -1 2900 - 7.7500000000000000e+01 -2 -3 2901 5.4650000000000000e+02 - - 1.7899210751056671e-01 -3.5629883408546448e-01 - 6.6323882341384888e-01 -6.2932920455932617e-01 - <_> - 8.4031822204589844e+01 - - 1 2 2902 4.3500000000000000e+01 0 -1 2903 - 2.5000000000000000e+00 -2 -3 2904 1.4450000000000000e+02 - - 2.9303130507469177e-01 -7.2133332490921021e-01 - 3.7318074703216553e-01 -2.9929837584495544e-01 - <_> - 8.4148094177246094e+01 - - 1 2 2905 4.4500000000000000e+01 0 -1 2906 - 5.5000000000000000e+00 -2 -3 2907 1218. - - 1.1627596616744995e-01 -6.5344148874282837e-01 - -6.1276328563690186e-01 3.0713844299316406e-01 - <_> - 8.3736122131347656e+01 - - 1 2 2908 2.2500000000000000e+01 0 -1 2909 - 7.5000000000000000e+00 -2 -3 2910 4945. - - 2.0239315927028656e-01 -4.1197755932807922e-01 - -6.5554910898208618e-01 5.7477289438247681e-01 - <_> - 8.3684288024902344e+01 - - 1 2 2911 6.1500000000000000e+01 0 -1 2912 - 3.5000000000000000e+00 -2 -3 2913 3.6500000000000000e+01 - - 2.9327356815338135e-01 -5.5817484855651855e-01 - 7.1029824018478394e-01 -5.1831677556037903e-02 - <_> - 8.3512733459472656e+01 - - 1 2 2914 5.4500000000000000e+01 0 -1 2915 - 1.5000000000000000e+00 -2 -3 2916 6.5000000000000000e+00 - - -9.4946056604385376e-01 4.1890572756528854e-02 - 3.9327812194824219e-01 -1.7155566811561584e-01 - <_> - 8.4089424133300781e+01 - - 1 2 2917 9.3500000000000000e+01 0 -1 2918 2760. -2 -3 2919 - 1.1250000000000000e+02 - - -2.4497070908546448e-01 9.6521437168121338e-01 - 5.7669252157211304e-01 -7.6096898317337036e-01 - <_> - 8.4561004638671875e+01 - - 1 2 2920 5.0000000000000000e-01 0 -1 2921 - 6.5000000000000000e+00 -2 -3 2922 6.9750000000000000e+02 - - -5.3141713142395020e-01 4.7158041596412659e-01 - 2.2022259235382080e-01 -4.3360495567321777e-01 - <_> - 8.4944801330566406e+01 - - 1 2 2923 1.4050000000000000e+02 0 -1 2924 - 5.0000000000000000e-01 -2 -3 2925 7.4850000000000000e+02 - - 1.5521393716335297e-01 -5.1790440082550049e-01 - 3.8379338383674622e-01 -4.4605687260627747e-01 - <_> - 8.5207305908203125e+01 - - 1 2 2926 1.5500000000000000e+01 0 -1 2927 - 3.3500000000000000e+01 -2 -3 2928 255. - - -2.9250434041023254e-01 6.5829980373382568e-01 - -6.5028876066207886e-01 5.1617544889450073e-01 - <_> - 8.5524932861328125e+01 - - 1 2 2929 2.4500000000000000e+01 0 -1 2930 - 2.8500000000000000e+01 -2 -3 2931 4.2500000000000000e+01 - - -1. 3.1762468814849854e-01 3.0006918311119080e-01 - -5.6320971250534058e-01 - <_> - 8.5334136962890625e+01 - - 1 2 2932 3.5000000000000000e+00 0 -1 2933 - 1.5500000000000000e+01 -2 -3 2934 2457. - - -4.4446155428886414e-01 4.3577027320861816e-01 - 4.5368546247482300e-01 -4.4899699091911316e-01 - <_> - 8.5264480590820312e+01 - - 1 2 2935 5.0000000000000000e-01 0 -1 2936 115. -2 -3 2937 - 2.5000000000000000e+00 - - -9.1964131593704224e-01 4.9966832995414734e-01 - 5.8283418416976929e-01 -6.9656021893024445e-02 - <_> - 8.5903366088867188e+01 - - 1 2 2938 7.1500000000000000e+01 0 -1 2939 - 5.4500000000000000e+01 -2 -3 2940 143. - - 1.6550585627555847e-01 -4.3812391161918640e-01 - 6.3888710737228394e-01 -5.4803293943405151e-01 - <_> - 8.6248062133789062e+01 - - 1 2 2941 2.5000000000000000e+00 0 -1 2942 - 9.0500000000000000e+01 -2 -3 2943 1.0500000000000000e+01 - - 1.0908889025449753e-01 -8.8574463129043579e-01 - 3.4469136595726013e-01 -2.0632795989513397e-01 - <_> - 8.6533218383789062e+01 - - 1 2 2944 2.1500000000000000e+01 0 -1 2945 - 4.5000000000000000e+00 -2 -3 2946 4.4500000000000000e+01 - - -4.4494426250457764e-01 8.8365721702575684e-01 - 2.8515672683715820e-01 -8.1787091493606567e-01 - <_> - 8.7068389892578125e+01 - - 1 2 2947 8.2650000000000000e+02 0 -1 2948 - 4.5000000000000000e+00 -2 -3 2949 1.9675500000000000e+04 - - 3.3902516961097717e-01 -3.3688139915466309e-01 - 5.3517556190490723e-01 -6.7757689952850342e-01 - <_> - 8.6810844421386719e+01 - - 1 2 2950 2.5500000000000000e+01 0 -1 2951 - 2.5000000000000000e+00 -2 -3 2952 1.3035000000000000e+03 - - 9.1093343496322632e-01 -8.2202631235122681e-01 - 3.2981109619140625e-01 -2.5754809379577637e-01 - <_> - 8.6275955200195312e+01 - - 1 2 2953 2.2369500000000000e+04 0 -1 2954 - 1.5000000000000000e+00 -2 -3 2955 9.5285000000000000e+03 - - 1.4417627826333046e-02 -6.9124591350555420e-01 - 3.7811917066574097e-01 -5.3488659858703613e-01 - <_> - 8.6942420959472656e+01 - - 1 2 2956 1.0645000000000000e+03 0 -1 2957 - 3.5000000000000000e+00 -2 -3 2958 7.5000000000000000e+00 - - 1.4049446582794189e-01 -3.5957664251327515e-01 - 9.1249042749404907e-01 -1.7921762168407440e-01 - <_> - 8.7227539062500000e+01 - - 1 2 2959 9.5000000000000000e+00 0 -1 2960 199. -2 -3 2961 - 6.6465000000000000e+03 - - 8.8686686754226685e-01 -6.7846179008483887e-01 - -3.4822642803192139e-01 2.8511366248130798e-01 - <_> - 8.7103866577148438e+01 - - 1 2 2962 6.5000000000000000e+00 0 -1 2963 - 1.5000000000000000e+00 -2 -3 2964 4.3450000000000000e+02 - - 1.8375012278556824e-01 -5.8300310373306274e-01 - -7.8263854980468750e-01 5.0758910179138184e-01 - <_> - 8.7249404907226562e+01 - - 1 2 2965 1.8500000000000000e+01 0 -1 2966 - 8.5000000000000000e+00 -2 -3 2967 9.5000000000000000e+00 - - -9.1379207372665405e-01 1. -6.0623198747634888e-01 - 1.4554040133953094e-01 - <_> - 8.6942718505859375e+01 - - 1 2 2968 3.5000000000000000e+00 0 -1 2969 - 2.3355000000000000e+03 -2 -3 2970 2.5850000000000000e+02 - - 6.3676542043685913e-01 -4.5731505751609802e-01 - 4.5318025350570679e-01 -3.0669227242469788e-01 - <_> - 8.6748542785644531e+01 - - 1 2 2971 2.1500000000000000e+01 0 -1 2972 - 1.6500000000000000e+01 -2 -3 2973 4.3450000000000000e+02 - - -1.9417463243007660e-01 4.5977392792701721e-01 - 7.4417084455490112e-01 -9.2871183156967163e-01 - <_> - 8.6213851928710938e+01 - - 1 2 2974 4.6500000000000000e+01 0 -1 2975 6986. -2 -3 2976 - 1.0655000000000000e+03 - - -3.5974133014678955e-01 3.9904057979583740e-01 - -5.3468620777130127e-01 4.4506999850273132e-01 - <_> - 8.6651367187500000e+01 - - 1 2 2977 7.7450000000000000e+02 0 -1 2978 39564. -2 -3 2979 - 3.5000000000000000e+00 - - 4.3751135468482971e-01 -8.3221775293350220e-01 - 9.5911510288715363e-02 -5.8185952901840210e-01 - <_> - 8.7053947448730469e+01 - - 1 2 2980 1.3150000000000000e+02 0 -1 2981 - 1.8650000000000000e+02 -2 -3 2982 4.2550000000000000e+02 - - 4.1247457265853882e-01 -4.4629332423210144e-01 - 4.0258339047431946e-01 -6.6914594173431396e-01 - <_> - 8.7472679138183594e+01 - - 1 2 2983 6.9750000000000000e+02 0 -1 2984 - 1.0500000000000000e+01 -2 -3 2985 1.8735000000000000e+03 - - -7.6271665096282959e-01 4.1873174905776978e-01 - -6.8841624259948730e-01 -2.3577280342578888e-02 - <_> - 8.7495330810546875e+01 - - 1 2 2986 5.0000000000000000e-01 0 -1 2987 - 2.9500000000000000e+01 -2 -3 2988 1.4750000000000000e+02 - - -7.6370656490325928e-01 6.4419740438461304e-01 - -2.4485288560390472e-01 6.6281813383102417e-01 - <_> - 8.6983520507812500e+01 - - 1 2 2989 1.2135000000000000e+03 0 -1 2990 - 8.0250000000000000e+02 -2 -3 2991 1.0500000000000000e+01 - - -4.0576335787773132e-01 5.1596242189407349e-01 - 4.4931706786155701e-01 -5.1181161403656006e-01 - <_> - 8.7748497009277344e+01 - - 1 2 2992 1.4555000000000000e+03 0 -1 2993 - 2.3355000000000000e+03 -2 -3 2994 4.5000000000000000e+00 - - -8.6321972310543060e-02 7.6497226953506470e-01 - 3.1687757372856140e-01 -4.1308388113975525e-01 - <_> - 8.7668098449707031e+01 - - 1 2 2995 7.3500000000000000e+01 0 -1 2996 - 7.5000000000000000e+00 -2 -3 2997 1.8415000000000000e+03 - - -8.0395199358463287e-02 4.9477747082710266e-01 - 5.0139939785003662e-01 -9.4019854068756104e-01 - <_> - 8.7603317260742188e+01 - - 1 2 2998 1.0350000000000000e+02 0 -1 2999 - 5.0000000000000000e-01 -2 -3 3000 6.6500000000000000e+01 - - 5.5032008886337280e-01 -6.4781084656715393e-02 - -6.9391334056854248e-01 2.6454237103462219e-01 - <_> - 8.7899932861328125e+01 - - 1 2 3001 4.1850000000000000e+02 0 -1 3002 - 2.5000000000000000e+00 -2 -3 3003 4.4350000000000000e+02 - - 8.3208960294723511e-01 -9.7579640150070190e-01 - 4.5810779929161072e-01 -9.8539277911186218e-02 - <_> - 8.7558662414550781e+01 - - 1 2 3004 1.4500000000000000e+01 0 -1 3005 - 4.5000000000000000e+00 -2 -3 3006 4093. - - 1.3818612694740295e-01 -5.0276112556457520e-01 - 3.9290004968643188e-01 -9.0650981664657593e-01 - <_> - 8.7562660217285156e+01 - - 1 2 3007 3.0500000000000000e+01 0 -1 3008 15. -2 -3 3009 - 6.8500000000000000e+01 - - 5.8721613883972168e-01 -9.5952403545379639e-01 - 1.5953540802001953e-01 -7.3017132282257080e-01 - <_> - 8.7263595581054688e+01 - - 1 2 3010 4.6550000000000000e+02 0 -1 3011 - 8.5000000000000000e+00 -2 -3 3012 3.0500000000000000e+01 - - 2.5965842604637146e-01 -4.5460721850395203e-01 - -6.6170775890350342e-01 4.6810474991798401e-01 - <_> - 8.7385635375976562e+01 - - 1 2 3013 3.7500000000000000e+01 0 -1 3014 - 6.7500000000000000e+01 -2 -3 3015 9.0500000000000000e+01 - - -4.7775322198867798e-01 3.0159825086593628e-01 - -7.1135115623474121e-01 1.2204105406999588e-01 - <_> - 8.7448921203613281e+01 - - 1 2 3016 3.4500000000000000e+01 0 -1 3017 - 1.3500000000000000e+01 -2 -3 3018 2.9500000000000000e+01 - - -4.3366974592208862e-01 4.3953391909599304e-01 - -6.8973690271377563e-01 6.3285768032073975e-02 - <_> - 8.7470863342285156e+01 - - 1 2 3019 9.5000000000000000e+00 0 -1 3020 - 3.5750000000000000e+02 -2 -3 3021 2.1500000000000000e+01 - - 5.9902238845825195e-01 -4.9095529317855835e-01 - -6.0496187210083008e-01 2.1941423416137695e-02 - <_> - 8.8030609130859375e+01 - - 1 2 3022 7.5000000000000000e+00 0 -1 3023 - 1.4250000000000000e+02 -2 -3 3024 4.8500000000000000e+01 - - -1.1742883920669556e-01 5.5974942445755005e-01 - -6.6814047098159790e-01 1.0357101261615753e-01 - <_> - 8.8298561096191406e+01 - - 1 2 3025 5.0000000000000000e-01 0 -1 3026 - 2.5000000000000000e+00 -2 -3 3027 6.5000000000000000e+00 - - -7.9518532752990723e-01 3.9527121186256409e-01 - 2.6795190572738647e-01 -4.4711253046989441e-01 - <_> - 8.8873558044433594e+01 - - 1 2 3028 5.0650000000000000e+02 0 -1 3029 - 2.7150000000000000e+02 -2 -3 3030 5.1550000000000000e+02 - - 4.9458679556846619e-01 -3.8078719377517700e-01 - 5.7499361038208008e-01 -2.4514666199684143e-01 - <_> - 8.8112663269042969e+01 - - 1 2 3031 1.5500000000000000e+01 0 -1 3032 - 3.1500000000000000e+01 -2 -3 3033 511. - - -2.6782530546188354e-01 3.8774058222770691e-01 - 3.4897887706756592e-01 -7.6089125871658325e-01 - <_> - 8.8039482116699219e+01 - - 1 2 3034 230. 0 -1 3035 6.6500000000000000e+01 -2 -3 3036 - 4.0500000000000000e+01 - - -7.3185198009014130e-02 5.7667195796966553e-01 - 3.2658204436302185e-01 -8.0915856361389160e-01 - <_> - 8.8365722656250000e+01 - - 1 2 3037 5.0000000000000000e-01 0 -1 3038 - 2.9500000000000000e+01 -2 -3 3039 4.5000000000000000e+00 - - 3.2624712586402893e-01 -5.5316114425659180e-01 - -2.4152111727744341e-03 -6.9509941339492798e-01 - <_> - 8.8882514953613281e+01 - - 1 2 3040 3.0500000000000000e+01 0 -1 3041 - 1.1150000000000000e+02 -2 -3 3042 5.0000000000000000e-01 - - 5.2429902553558350e-01 -8.9993971586227417e-01 - 5.1678961515426636e-01 -8.6023628711700439e-02 - <_> - 8.8496650695800781e+01 - - 1 2 3043 2.8500000000000000e+01 0 -1 3044 - 1.1385000000000000e+03 -2 -3 3045 1.0500000000000000e+01 - - 5.3370710462331772e-02 -7.7716881036758423e-01 - 4.8879763484001160e-01 -1.4188981056213379e-01 - <_> - 8.8710388183593750e+01 - - 1 2 3046 3286. 0 -1 3047 1.8500000000000000e+01 -2 -3 3048 - 14770. - - 5.7567560672760010e-01 -7.7623206377029419e-01 - -8.3764082193374634e-01 2.1373493969440460e-01 - <_> - 8.8465957641601562e+01 - - 1 2 3049 4.5000000000000000e+00 0 -1 3050 - 6.8500000000000000e+01 -2 -3 3051 7.2550000000000000e+02 - - -9.8398631811141968e-01 1. 1.4620523154735565e-01 - -4.8840534687042236e-01 - <_> - 8.8379966735839844e+01 - - 1 2 3052 4.6350000000000000e+02 0 -1 3053 - 1.0005000000000000e+03 -2 -3 3054 12544. - - 1.2718398869037628e-01 -4.7662603855133057e-01 - 6.7666745185852051e-01 -9.6875000000000000e-01 - <_> - 8.8453712463378906e+01 - - 1 2 3055 6.2500000000000000e+01 0 -1 3056 - 2.5000000000000000e+00 -2 -3 3057 2.7450000000000000e+02 - - 7.3742903769016266e-02 -4.8088160157203674e-01 - 7.9391783475875854e-01 -9.5094847679138184e-01 - <_> - 8.8360649108886719e+01 - - 1 2 3058 5.1085000000000000e+03 0 -1 3059 - 1.5000000000000000e+00 -2 -3 3060 59. - - 4.7250562906265259e-01 -9.3059159815311432e-02 - -9.8921388387680054e-01 1. - <_> - 8.8759475708007812e+01 - - 1 2 3061 4.3500000000000000e+01 0 -1 3062 - 2.5000000000000000e+00 -2 -3 3063 9.5000000000000000e+00 - - 1.8726401031017303e-01 -9.5795679092407227e-01 - 3.9882484078407288e-01 -1.5403895080089569e-01 - <_> - 8.8777908325195312e+01 - - 1 2 3064 1.8150000000000000e+02 0 -1 3065 - 1.1500000000000000e+01 -2 -3 3066 4.0500000000000000e+01 - - 2.5865679979324341e-01 -5.4600328207015991e-01 - 6.9991689920425415e-01 1.8433349207043648e-02 - <_> - 8.9012145996093750e+01 - - 1 2 3067 2.6500000000000000e+01 0 -1 3068 - 2.0500000000000000e+01 -2 -3 3069 1.1550000000000000e+02 - - 7.8764355182647705e-01 -8.8436836004257202e-01 - 2.3423436284065247e-01 -3.8715034723281860e-01 - - <_> - 8 - - 12 12 8 3 - <_> - 7 - - 16 11 1 1 - <_> - 1 - - 14 19 7 32 - <_> - 5 - - 9 8 13 9 - <_> - 7 - - 17 11 8 1 - <_> - 5 - - 7 55 24 8 - <_> - 1 - - 13 54 6 3 - <_> - 9 - - 11 40 8 12 - <_> - 4 - - 11 32 9 31 - <_> - 2 - - 9 41 12 14 - <_> - 7 - - 14 33 5 5 - <_> - 7 - - 8 60 22 3 - <_> - 4 - - 11 38 10 3 - <_> - 4 - - 12 8 6 10 - <_> - 8 - - 12 12 8 3 - <_> - 9 - - 18 19 1 13 - <_> - 9 - - 14 3 16 1 - <_> - 1 - - 13 21 6 2 - <_> - 0 - - 12 10 11 6 - <_> - 7 - - 15 0 1 49 - <_> - 5 - - 1 1 18 48 - <_> - 2 - - 14 58 10 2 - <_> - 2 - - 7 51 11 5 - <_> - 1 - - 11 53 10 4 - <_> - 8 - - 16 12 1 5 - <_> - 9 - - 10 35 10 21 - <_> - 8 - - 11 54 12 2 - <_> - 4 - - 13 44 1 4 - <_> - 1 - - 11 50 5 6 - <_> - 3 - - 7 9 6 36 - <_> - 0 - - 13 25 5 7 - <_> - 3 - - 7 20 9 7 - <_> - 9 - - 29 48 1 10 - <_> - 2 - - 6 62 18 1 - <_> - 2 - - 9 49 11 7 - <_> - 5 - - 21 20 1 32 - <_> - 1 - - 11 19 1 4 - <_> - 1 - - 14 10 12 9 - <_> - 1 - - 12 24 6 2 - <_> - 4 - - 15 36 4 1 - <_> - 0 - - 16 31 11 7 - <_> - 4 - - 8 41 17 1 - <_> - 2 - - 11 11 12 6 - <_> - 7 - - 15 6 2 23 - <_> - 3 - - 16 3 13 48 - <_> - 1 - - 13 54 6 3 - <_> - 1 - - 11 19 11 1 - <_> - 7 - - 0 49 9 8 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 15 17 2 5 - <_> - 8 - - 3 1 9 18 - <_> - 5 - - 8 56 19 4 - <_> - 1 - - 14 54 6 8 - <_> - 2 - - 19 52 10 6 - <_> - 4 - - 8 59 20 3 - <_> - 0 - - 18 51 12 9 - <_> - 4 - - 13 8 10 5 - <_> - 5 - - 26 35 3 2 - <_> - 0 - - 11 36 11 12 - <_> - 2 - - 19 18 4 13 - <_> - 4 - - 15 40 14 10 - <_> - 0 - - 10 57 7 3 - <_> - 2 - - 7 30 6 5 - <_> - 7 - - 2 61 22 2 - <_> - 0 - - 26 42 3 15 - <_> - 7 - - 12 5 7 12 - <_> - 5 - - 19 17 10 6 - <_> - 7 - - 16 11 1 1 - <_> - 4 - - 10 18 16 5 - <_> - 3 - - 10 8 1 50 - <_> - 9 - - 18 40 1 7 - <_> - 2 - - 14 25 3 9 - <_> - 8 - - 14 9 6 8 - <_> - 5 - - 22 39 2 10 - <_> - 8 - - 16 1 1 6 - <_> - 0 - - 17 19 2 2 - <_> - 2 - - 17 9 3 11 - <_> - 9 - - 16 18 2 1 - <_> - 8 - - 12 12 8 3 - <_> - 5 - - 1 57 29 5 - <_> - 8 - - 10 53 12 7 - <_> - 1 - - 13 20 1 4 - <_> - 1 - - 15 53 7 4 - <_> - 0 - - 11 49 11 2 - <_> - 0 - - 29 43 2 17 - <_> - 0 - - 11 51 16 4 - <_> - 7 - - 25 51 2 6 - <_> - 2 - - 18 56 9 3 - <_> - 2 - - 8 49 16 5 - <_> - 4 - - 0 42 26 1 - <_> - 4 - - 2 16 11 24 - <_> - 1 - - 3 11 17 6 - <_> - 3 - - 11 6 8 10 - <_> - 0 - - 6 44 2 18 - <_> - 0 - - 1 7 12 21 - <_> - 9 - - 14 20 3 17 - <_> - 9 - - 14 0 10 7 - <_> - 1 - - 2 1 27 2 - <_> - 9 - - 14 18 3 9 - <_> - 4 - - 13 42 8 1 - <_> - 7 - - 28 3 2 22 - <_> - 3 - - 9 52 6 2 - <_> - 3 - - 6 11 9 11 - <_> - 1 - - 15 36 2 5 - <_> - 0 - - 18 21 2 5 - <_> - 1 - - 15 52 2 5 - <_> - 7 - - 15 62 3 1 - <_> - 5 - - 6 1 21 2 - <_> - 5 - - 20 12 4 28 - <_> - 2 - - 21 7 3 27 - <_> - 5 - - 25 10 6 50 - <_> - 0 - - 13 33 1 8 - <_> - 3 - - 4 26 10 17 - <_> - 2 - - 10 18 7 4 - <_> - 7 - - 11 9 17 11 - <_> - 7 - - 24 46 1 15 - <_> - 0 - - 13 35 3 16 - <_> - 4 - - 0 61 26 2 - <_> - 0 - - 10 58 16 4 - <_> - 3 - - 0 56 27 2 - <_> - 0 - - 11 42 11 2 - <_> - 8 - - 12 12 8 3 - <_> - 4 - - 18 8 3 19 - <_> - 8 - - 29 36 1 20 - <_> - 8 - - 14 9 6 8 - <_> - 9 - - 14 60 3 1 - <_> - 1 - - 18 17 2 9 - <_> - 9 - - 10 37 8 9 - <_> - 1 - - 8 56 21 1 - <_> - 3 - - 1 56 22 4 - <_> - 3 - - 7 50 11 6 - <_> - 5 - - 2 60 29 3 - <_> - 9 - - 11 57 11 3 - <_> - 1 - - 15 33 5 21 - <_> - 9 - - 13 16 6 7 - <_> - 1 - - 13 5 6 12 - <_> - 2 - - 13 26 8 4 - <_> - 4 - - 29 4 2 13 - <_> - 5 - - 17 9 5 10 - <_> - 0 - - 0 39 6 19 - <_> - 5 - - 14 24 3 4 - <_> - 2 - - 7 39 14 1 - <_> - 5 - - 27 14 2 35 - <_> - 8 - - 3 62 28 1 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 4 0 26 8 - <_> - 5 - - 9 8 13 9 - <_> - 2 - - 4 45 5 2 - <_> - 2 - - 9 28 5 14 - <_> - 7 - - 8 60 16 2 - <_> - 7 - - 17 30 3 4 - <_> - 7 - - 21 32 5 5 - <_> - 2 - - 16 17 8 9 - <_> - 2 - - 17 34 2 2 - <_> - 5 - - 19 16 10 22 - <_> - 4 - - 24 54 6 9 - <_> - 1 - - 10 53 20 9 - <_> - 5 - - 0 34 7 26 - <_> - 4 - - 0 58 22 5 - <_> - 1 - - 7 17 16 22 - <_> - 7 - - 0 51 9 4 - <_> - 3 - - 21 50 2 4 - <_> - 3 - - 10 21 1 13 - <_> - 7 - - 15 7 6 6 - <_> - 3 - - 13 26 4 9 - <_> - 0 - - 7 45 20 4 - <_> - 1 - - 22 5 1 54 - <_> - 1 - - 11 8 12 1 - <_> - 2 - - 8 57 15 2 - <_> - 4 - - 16 40 11 14 - <_> - 9 - - 15 18 6 4 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 16 11 7 3 - <_> - 8 - - 20 9 1 7 - <_> - 1 - - 3 55 22 2 - <_> - 0 - - 17 17 3 2 - <_> - 3 - - 6 0 11 27 - <_> - 4 - - 12 4 11 22 - <_> - 1 - - 13 14 13 3 - <_> - 0 - - 10 62 14 1 - <_> - 0 - - 14 19 3 6 - <_> - 2 - - 11 4 8 13 - <_> - 2 - - 17 37 2 17 - <_> - 4 - - 12 47 11 1 - <_> - 2 - - 6 55 15 7 - <_> - 9 - - 28 22 1 2 - <_> - 2 - - 9 32 2 23 - <_> - 8 - - 11 13 5 1 - <_> - 2 - - 4 38 3 21 - <_> - 7 - - 14 12 1 28 - <_> - 9 - - 13 36 5 11 - <_> - 2 - - 5 11 17 8 - <_> - 1 - - 15 53 7 4 - <_> - 0 - - 16 45 5 1 - <_> - 1 - - 12 46 8 2 - <_> - 7 - - 24 49 2 2 - <_> - 3 - - 15 25 3 7 - <_> - 5 - - 16 16 14 9 - <_> - 1 - - 18 20 3 7 - <_> - 7 - - 6 53 18 2 - <_> - 1 - - 7 19 18 3 - <_> - 1 - - 16 10 6 6 - <_> - 5 - - 10 29 1 33 - <_> - 5 - - 9 56 22 5 - <_> - 8 - - 17 13 2 4 - <_> - 8 - - 23 10 2 9 - <_> - 8 - - 8 7 1 8 - <_> - 9 - - 12 21 2 27 - <_> - 9 - - 9 2 19 11 - <_> - 1 - - 7 38 11 1 - <_> - 3 - - 4 14 6 18 - <_> - 7 - - 24 7 1 8 - <_> - 1 - - 20 46 11 8 - <_> - 2 - - 5 39 14 16 - <_> - 7 - - 9 3 7 9 - <_> - 0 - - 5 47 1 7 - <_> - 1 - - 13 21 6 2 - <_> - 5 - - 16 10 6 3 - <_> - 2 - - 11 12 12 2 - <_> - 5 - - 6 0 24 1 - <_> - 5 - - 2 18 22 3 - <_> - 9 - - 17 16 3 18 - <_> - 0 - - 14 32 2 3 - <_> - 2 - - 10 34 5 3 - <_> - 2 - - 14 25 3 9 - <_> - 1 - - 6 54 8 4 - <_> - 5 - - 4 31 15 5 - <_> - 0 - - 29 44 1 17 - <_> - 2 - - 11 41 10 2 - <_> - 5 - - 21 13 3 42 - <_> - 2 - - 1 24 30 23 - <_> - 4 - - 6 39 14 11 - <_> - 2 - - 11 59 20 3 - <_> - 9 - - 30 47 1 2 - <_> - 3 - - 5 48 13 6 - <_> - 1 - - 5 41 21 7 - <_> - 1 - - 26 8 2 22 - <_> - 5 - - 9 61 18 2 - <_> - 2 - - 9 22 16 24 - <_> - 4 - - 9 18 5 8 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 23 9 7 8 - <_> - 9 - - 12 10 6 43 - <_> - 9 - - 11 14 11 9 - <_> - 9 - - 6 9 20 2 - <_> - 3 - - 24 44 1 17 - <_> - 1 - - 4 1 23 5 - <_> - 2 - - 17 3 4 15 - <_> - 9 - - 11 1 18 2 - <_> - 8 - - 16 2 2 4 - <_> - 7 - - 5 10 10 3 - <_> - 0 - - 0 48 3 7 - <_> - 0 - - 12 10 11 6 - <_> - 7 - - 16 11 1 1 - <_> - 8 - - 14 12 3 4 - <_> - 1 - - 19 20 3 15 - <_> - 5 - - 15 20 15 4 - <_> - 5 - - 19 19 4 43 - <_> - 1 - - 13 54 6 3 - <_> - 4 - - 13 36 3 4 - <_> - 1 - - 6 44 20 9 - <_> - 7 - - 5 49 4 6 - <_> - 8 - - 17 41 13 22 - <_> - 5 - - 12 56 14 7 - <_> - 4 - - 14 8 5 1 - <_> - 7 - - 12 0 9 1 - <_> - 2 - - 19 61 1 1 - <_> - 0 - - 12 51 10 3 - <_> - 0 - - 4 4 23 4 - <_> - 5 - - 13 30 4 1 - <_> - 3 - - 2 18 12 10 - <_> - 7 - - 15 8 16 6 - <_> - 0 - - 2 53 9 7 - <_> - 7 - - 4 62 23 1 - <_> - 1 - - 13 20 1 4 - <_> - 0 - - 11 26 13 22 - <_> - 4 - - 8 14 3 16 - <_> - 0 - - 21 28 1 3 - <_> - 1 - - 17 34 3 18 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 30 22 1 2 - <_> - 8 - - 3 13 3 3 - <_> - 9 - - 12 29 7 19 - <_> - 8 - - 12 11 8 1 - <_> - 3 - - 2 56 24 1 - <_> - 7 - - 19 60 11 1 - <_> - 0 - - 26 42 3 15 - <_> - 5 - - 21 18 2 12 - <_> - 4 - - 4 43 26 1 - <_> - 0 - - 12 50 14 5 - <_> - 8 - - 13 17 5 3 - <_> - 0 - - 17 18 3 1 - <_> - 5 - - 19 8 4 10 - <_> - 4 - - 0 61 26 2 - <_> - 1 - - 14 53 3 9 - <_> - 7 - - 8 36 1 1 - <_> - 4 - - 26 30 3 30 - <_> - 2 - - 9 37 14 13 - <_> - 3 - - 0 20 2 43 - <_> - 4 - - 10 8 14 4 - <_> - 2 - - 19 61 7 2 - <_> - 2 - - 9 47 8 9 - <_> - 3 - - 10 4 1 53 - <_> - 5 - - 13 3 2 38 - <_> - 0 - - 11 7 4 10 - <_> - 9 - - 30 17 1 2 - <_> - 2 - - 17 13 6 14 - <_> - 7 - - 14 25 4 5 - <_> - 1 - - 11 22 11 2 - <_> - 7 - - 23 53 4 1 - <_> - 8 - - 2 4 19 15 - <_> - 5 - - 2 59 24 1 - <_> - 0 - - 13 18 3 1 - <_> - 3 - - 8 21 5 11 - <_> - 9 - - 12 28 8 8 - <_> - 8 - - 17 13 2 4 - <_> - 2 - - 16 45 3 6 - <_> - 8 - - 17 50 6 8 - <_> - 1 - - 7 21 21 1 - <_> - 3 - - 11 2 17 33 - <_> - 2 - - 30 27 1 34 - <_> - 5 - - 12 29 1 16 - <_> - 5 - - 19 42 5 5 - <_> - 7 - - 0 51 4 4 - <_> - 7 - - 16 11 1 1 - <_> - 0 - - 6 58 23 1 - <_> - 3 - - 7 8 15 28 - <_> - 1 - - 15 8 4 8 - <_> - 0 - - 13 24 3 7 - <_> - 1 - - 15 53 7 4 - <_> - 1 - - 11 19 1 18 - <_> - 1 - - 7 27 8 3 - <_> - 2 - - 11 39 19 6 - <_> - 5 - - 26 30 2 12 - <_> - 5 - - 13 9 8 6 - <_> - 9 - - 29 2 1 7 - <_> - 2 - - 19 39 2 3 - <_> - 0 - - 15 40 15 2 - <_> - 9 - - 16 17 2 6 - <_> - 5 - - 12 57 6 3 - <_> - 1 - - 11 39 7 24 - <_> - 1 - - 9 56 16 1 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 16 12 1 5 - <_> - 8 - - 27 61 2 1 - <_> - 7 - - 2 55 28 3 - <_> - 4 - - 12 45 6 6 - <_> - 1 - - 8 45 5 12 - <_> - 7 - - 16 34 2 4 - <_> - 2 - - 2 50 5 1 - <_> - 5 - - 13 47 8 8 - <_> - 5 - - 21 56 5 5 - <_> - 5 - - 19 56 3 7 - <_> - 1 - - 11 19 11 1 - <_> - 3 - - 10 20 11 6 - <_> - 9 - - 23 23 1 9 - <_> - 5 - - 17 25 10 18 - <_> - 7 - - 7 23 3 8 - <_> - 3 - - 14 34 5 5 - <_> - 3 - - 10 8 1 50 - <_> - 8 - - 1 32 8 15 - <_> - 7 - - 14 59 4 1 - <_> - 3 - - 20 38 2 11 - <_> - 7 - - 0 4 22 6 - <_> - 0 - - 6 20 7 11 - <_> - 4 - - 14 8 5 1 - <_> - 5 - - 0 42 11 13 - <_> - 4 - - 10 9 3 28 - <_> - 0 - - 13 43 9 4 - <_> - 7 - - 18 2 4 4 - <_> - 4 - - 18 39 1 2 - <_> - 4 - - 14 8 6 11 - <_> - 5 - - 13 40 2 8 - <_> - 1 - - 13 21 6 2 - <_> - 8 - - 14 12 3 4 - <_> - 2 - - 17 39 3 7 - <_> - 8 - - 14 17 4 2 - <_> - 2 - - 12 58 15 2 - <_> - 2 - - 9 43 7 12 - <_> - 7 - - 17 25 1 5 - <_> - 4 - - 12 41 9 2 - <_> - 2 - - 17 3 4 15 - <_> - 7 - - 28 28 3 3 - <_> - 0 - - 25 44 5 3 - <_> - 0 - - 17 35 8 8 - <_> - 9 - - 17 32 1 5 - <_> - 9 - - 29 1 1 5 - <_> - 1 - - 13 55 3 2 - <_> - 5 - - 10 5 18 31 - <_> - 4 - - 3 18 3 44 - <_> - 2 - - 3 56 15 7 - <_> - 7 - - 30 44 1 13 - <_> - 1 - - 8 6 15 1 - <_> - 2 - - 11 0 8 24 - <_> - 5 - - 13 15 2 10 - <_> - 1 - - 10 15 13 1 - <_> - 4 - - 11 12 7 4 - <_> - 7 - - 10 10 20 2 - <_> - 7 - - 22 51 7 4 - <_> - 5 - - 14 17 6 8 - <_> - 4 - - 15 36 4 1 - <_> - 1 - - 11 53 10 4 - <_> - 1 - - 18 21 6 5 - <_> - 7 - - 6 57 4 1 - <_> - 2 - - 17 17 4 10 - <_> - 2 - - 13 18 1 1 - <_> - 0 - - 10 54 5 4 - <_> - 7 - - 0 29 17 13 - <_> - 2 - - 8 46 12 8 - <_> - 2 - - 7 10 3 26 - <_> - 1 - - 30 38 1 18 - <_> - 2 - - 16 60 14 1 - <_> - 1 - - 2 43 1 8 - <_> - 2 - - 9 36 21 9 - <_> - 7 - - 4 47 18 2 - <_> - 7 - - 6 46 1 5 - <_> - 2 - - 5 37 2 11 - <_> - 1 - - 11 46 1 14 - <_> - 1 - - 26 8 5 20 - <_> - 2 - - 16 14 2 8 - <_> - 2 - - 11 12 12 2 - <_> - 8 - - 16 12 1 5 - <_> - 8 - - 6 54 15 4 - <_> - 2 - - 8 52 16 4 - <_> - 7 - - 18 40 4 7 - <_> - 3 - - 0 56 27 2 - <_> - 1 - - 5 31 15 18 - <_> - 9 - - 16 18 2 1 - <_> - 7 - - 4 59 24 1 - <_> - 5 - - 1 57 15 3 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 0 4 6 27 - <_> - 5 - - 29 19 2 43 - <_> - 2 - - 15 22 5 6 - <_> - 5 - - 18 48 11 7 - <_> - 0 - - 27 48 4 13 - <_> - 3 - - 6 4 20 1 - <_> - 0 - - 12 10 11 6 - <_> - 4 - - 3 41 23 14 - <_> - 7 - - 27 4 4 14 - <_> - 1 - - 10 52 10 5 - <_> - 9 - - 29 61 2 1 - <_> - 7 - - 14 25 4 3 - <_> - 1 - - 1 5 15 13 - <_> - 2 - - 19 35 2 3 - <_> - 4 - - 5 18 23 5 - <_> - 9 - - 15 18 6 4 - <_> - 9 - - 23 14 8 17 - <_> - 8 - - 12 8 6 28 - <_> - 8 - - 25 13 3 6 - <_> - 8 - - 14 9 6 8 - <_> - 4 - - 20 3 6 52 - <_> - 3 - - 5 49 21 4 - <_> - 1 - - 12 40 6 6 - <_> - 2 - - 11 54 20 9 - <_> - 0 - - 13 36 9 8 - <_> - 1 - - 10 62 13 1 - <_> - 0 - - 12 24 15 39 - <_> - 5 - - 14 9 9 4 - <_> - 0 - - 1 21 2 33 - <_> - 2 - - 28 7 3 23 - <_> - 1 - - 14 53 10 4 - <_> - 3 - - 29 42 2 9 - <_> - 4 - - 13 35 9 27 - <_> - 5 - - 18 19 6 5 - <_> - 0 - - 17 22 12 12 - <_> - 0 - - 17 19 2 2 - <_> - 0 - - 0 42 19 11 - <_> - 5 - - 19 56 6 4 - <_> - 7 - - 8 49 2 1 - <_> - 1 - - 13 5 6 12 - <_> - 5 - - 3 22 18 15 - <_> - 1 - - 15 21 6 7 - <_> - 2 - - 3 16 19 29 - <_> - 5 - - 13 15 5 40 - <_> - 3 - - 16 32 3 10 - <_> - 8 - - 17 11 1 2 - <_> - 9 - - 10 29 5 20 - <_> - 8 - - 18 34 3 11 - <_> - 9 - - 26 47 2 4 - <_> - 1 - - 8 18 1 4 - <_> - 3 - - 21 43 4 11 - <_> - 3 - - 8 9 9 4 - <_> - 7 - - 9 37 13 16 - <_> - 3 - - 5 56 17 2 - <_> - 3 - - 11 53 9 1 - <_> - 4 - - 10 39 2 12 - <_> - 1 - - 8 52 2 4 - <_> - 3 - - 0 20 2 43 - <_> - 3 - - 6 37 15 10 - <_> - 5 - - 19 22 6 3 - <_> - 5 - - 15 0 15 30 - <_> - 0 - - 21 30 7 8 - <_> - 5 - - 19 19 4 32 - <_> - 3 - - 21 45 1 10 - <_> - 0 - - 15 51 5 4 - <_> - 8 - - 14 12 3 4 - <_> - 7 - - 16 11 1 1 - <_> - 7 - - 1 44 17 16 - <_> - 2 - - 18 13 2 12 - <_> - 0 - - 17 18 3 1 - <_> - 1 - - 11 55 7 5 - <_> - 2 - - 13 58 2 5 - <_> - 3 - - 10 15 1 42 - <_> - 5 - - 0 25 5 15 - <_> - 9 - - 16 17 2 6 - <_> - 2 - - 8 54 23 5 - <_> - 4 - - 15 36 4 1 - <_> - 1 - - 7 48 24 2 - <_> - 5 - - 14 5 7 10 - <_> - 0 - - 2 44 14 6 - <_> - 8 - - 17 13 2 4 - <_> - 8 - - 23 43 3 7 - <_> - 8 - - 13 12 1 9 - <_> - 3 - - 2 46 4 5 - <_> - 5 - - 21 2 1 52 - <_> - 3 - - 11 5 17 4 - <_> - 7 - - 22 57 3 1 - <_> - 4 - - 10 20 21 4 - <_> - 5 - - 12 57 18 3 - <_> - 9 - - 10 4 6 11 - <_> - 0 - - 13 45 3 4 - <_> - 1 - - 13 54 6 3 - <_> - 4 - - 8 45 18 1 - <_> - 4 - - 12 42 8 8 - <_> - 1 - - 5 50 11 4 - <_> - 9 - - 14 16 5 33 - <_> - 8 - - 15 10 13 52 - <_> - 3 - - 15 9 15 1 - <_> - 8 - - 27 61 1 1 - <_> - 9 - - 27 0 1 12 - <_> - 2 - - 14 16 4 5 - <_> - 9 - - 14 10 2 16 - <_> - 3 - - 8 11 6 20 - <_> - 7 - - 24 19 1 9 - <_> - 0 - - 14 43 6 2 - <_> - 1 - - 12 15 1 26 - <_> - 1 - - 8 6 15 1 - <_> - 0 - - 2 60 27 1 - <_> - 1 - - 2 14 21 2 - <_> - 7 - - 7 23 13 5 - <_> - 4 - - 24 56 2 7 - <_> - 8 - - 11 13 5 1 - <_> - 0 - - 10 42 12 3 - <_> - 8 - - 19 0 1 23 - <_> - 5 - - 9 61 20 2 - <_> - 0 - - 19 50 8 10 - <_> - 1 - - 16 55 9 2 - <_> - 0 - - 13 33 5 4 - <_> - 3 - - 18 27 8 9 - <_> - 3 - - 28 32 3 21 - <_> - 4 - - 15 42 4 4 - <_> - 2 - - 16 2 8 16 - <_> - 2 - - 7 2 1 47 - <_> - 7 - - 21 61 10 2 - <_> - 2 - - 29 31 2 32 - <_> - 8 - - 17 11 1 2 - <_> - 9 - - 11 19 9 1 - <_> - 9 - - 30 15 1 43 - <_> - 9 - - 24 34 1 4 - <_> - 2 - - 7 51 11 5 - <_> - 0 - - 22 42 1 11 - <_> - 5 - - 3 62 20 1 - <_> - 1 - - 7 20 11 3 - <_> - 3 - - 2 21 9 2 - <_> - 2 - - 25 34 1 18 - <_> - 5 - - 19 14 5 33 - <_> - 7 - - 28 13 1 1 - <_> - 5 - - 1 0 15 44 - <_> - 9 - - 12 32 1 10 - <_> - 7 - - 1 40 14 8 - <_> - 8 - - 12 12 8 3 - <_> - 1 - - 11 8 13 1 - <_> - 0 - - 27 47 1 15 - <_> - 4 - - 8 16 14 7 - <_> - 1 - - 8 55 8 3 - <_> - 0 - - 0 55 28 4 - <_> - 4 - - 7 56 17 4 - <_> - 3 - - 5 13 20 8 - <_> - 1 - - 3 19 4 19 - <_> - 4 - - 13 8 10 5 - <_> - 1 - - 16 18 7 3 - <_> - 4 - - 1 17 26 3 - <_> - 1 - - 11 53 10 4 - <_> - 7 - - 29 2 2 16 - <_> - 2 - - 6 55 21 5 - <_> - 1 - - 29 25 2 3 - <_> - 2 - - 10 50 10 4 - <_> - 4 - - 13 38 2 4 - <_> - 7 - - 24 46 1 9 - <_> - 9 - - 12 17 4 3 - <_> - 9 - - 4 9 6 7 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 9 7 5 1 - <_> - 7 - - 27 41 2 10 - <_> - 8 - - 11 16 3 4 - <_> - 5 - - 14 29 5 7 - <_> - 3 - - 9 24 2 33 - <_> - 5 - - 23 27 4 10 - <_> - 8 - - 3 10 28 46 - <_> - 0 - - 23 46 2 5 - <_> - 5 - - 15 8 9 19 - <_> - 4 - - 10 13 14 37 - <_> - 0 - - 4 57 23 3 - <_> - 1 - - 4 42 26 1 - <_> - 1 - - 15 53 7 4 - <_> - 1 - - 5 61 24 1 - <_> - 4 - - 14 49 7 12 - <_> - 0 - - 11 49 11 2 - <_> - 7 - - 14 10 3 2 - <_> - 1 - - 13 8 3 11 - <_> - 1 - - 11 41 4 9 - <_> - 5 - - 21 2 1 52 - <_> - 1 - - 14 32 9 6 - <_> - 2 - - 10 55 15 5 - <_> - 1 - - 11 28 20 29 - <_> - 1 - - 7 22 20 24 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 15 16 2 10 - <_> - 9 - - 13 8 5 13 - <_> - 3 - - 1 49 18 7 - <_> - 1 - - 11 21 14 3 - <_> - 2 - - 11 4 8 13 - <_> - 9 - - 16 39 4 1 - <_> - 9 - - 16 11 3 3 - <_> - 9 - - 16 13 3 15 - <_> - 5 - - 10 0 13 3 - <_> - 3 - - 12 52 19 7 - <_> - 8 - - 8 45 12 3 - <_> - 0 - - 12 10 11 6 - <_> - 3 - - 19 42 9 13 - <_> - 5 - - 15 57 10 3 - <_> - 0 - - 17 51 7 5 - <_> - 1 - - 12 24 6 2 - <_> - 7 - - 11 61 3 1 - <_> - 1 - - 8 18 15 8 - <_> - 4 - - 15 13 6 5 - <_> - 3 - - 17 16 6 25 - <_> - 4 - - 15 42 4 5 - <_> - 4 - - 16 25 12 21 - <_> - 4 - - 11 37 3 11 - <_> - 8 - - 14 9 6 8 - <_> - 1 - - 27 49 4 6 - <_> - 8 - - 30 12 1 20 - <_> - 2 - - 0 21 1 6 - <_> - 3 - - 7 15 10 11 - <_> - 4 - - 15 36 4 1 - <_> - 1 - - 21 2 3 7 - <_> - 1 - - 15 8 4 8 - <_> - 9 - - 28 2 3 1 - <_> - 7 - - 15 10 13 4 - <_> - 1 - - 15 52 2 5 - <_> - 4 - - 8 34 11 3 - <_> - 0 - - 14 28 5 5 - <_> - 0 - - 14 30 9 27 - <_> - 1 - - 16 7 4 26 - <_> - 3 - - 28 45 3 16 - <_> - 0 - - 14 49 16 5 - <_> - 0 - - 11 15 1 41 - <_> - 0 - - 6 50 6 10 - <_> - 1 - - 11 22 11 2 - <_> - 3 - - 30 60 1 2 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 17 16 5 2 - <_> - 9 - - 7 35 11 6 - <_> - 2 - - 11 39 19 6 - <_> - 3 - - 18 40 5 17 - <_> - 5 - - 12 52 7 10 - <_> - 3 - - 3 47 24 8 - <_> - 3 - - 0 22 5 24 - <_> - 3 - - 22 43 5 10 - <_> - 1 - - 9 54 5 6 - <_> - 2 - - 13 62 8 1 - <_> - 4 - - 12 5 9 15 - <_> - 4 - - 18 14 3 38 - <_> - 2 - - 17 3 4 15 - <_> - 5 - - 6 4 23 2 - <_> - 9 - - 9 19 12 2 - <_> - 9 - - 5 10 24 2 - <_> - 8 - - 15 17 2 35 - <_> - 0 - - 3 43 1 9 - <_> - 7 - - 7 50 3 3 - <_> - 5 - - 15 29 5 3 - <_> - 0 - - 20 25 7 10 - <_> - 7 - - 16 11 1 1 - <_> - 0 - - 0 23 28 17 - <_> - 7 - - 6 60 21 3 - <_> - 1 - - 10 30 15 2 - <_> - 5 - - 21 57 3 6 - <_> - 8 - - 17 13 2 4 - <_> - 8 - - 13 14 1 3 - <_> - 8 - - 5 54 18 3 - <_> - 2 - - 7 51 11 5 - <_> - 8 - - 1 0 19 6 - <_> - 1 - - 17 20 6 5 - <_> - 4 - - 13 44 1 4 - <_> - 8 - - 12 12 8 3 - <_> - 2 - - 18 41 2 10 - <_> - 8 - - 2 61 3 1 - <_> - 9 - - 18 2 1 50 - <_> - 9 - - 0 60 16 3 - <_> - 2 - - 19 25 10 2 - <_> - 7 - - 3 23 5 13 - <_> - 2 - - 14 23 3 6 - <_> - 9 - - 28 46 2 2 - <_> - 9 - - 8 50 5 6 - <_> - 2 - - 10 2 10 28 - <_> - 8 - - 16 12 1 5 - <_> - 2 - - 11 41 10 2 - <_> - 5 - - 20 0 2 32 - <_> - 5 - - 4 55 17 8 - <_> - 0 - - 21 0 8 3 - <_> - 3 - - 8 22 5 2 - <_> - 5 - - 14 9 9 4 - <_> - 7 - - 14 0 12 1 - <_> - 7 - - 20 58 4 1 - <_> - 2 - - 26 47 1 4 - <_> - 1 - - 2 55 27 1 - <_> - 2 - - 19 35 2 3 - <_> - 1 - - 9 13 7 27 - <_> - 3 - - 12 5 1 19 - <_> - 1 - - 12 15 1 26 - <_> - 2 - - 11 16 2 2 - <_> - 7 - - 13 12 10 1 - <_> - 0 - - 21 20 1 12 - <_> - 8 - - 0 62 15 1 - <_> - 8 - - 12 11 8 1 - <_> - 7 - - 11 60 6 1 - <_> - 8 - - 20 4 1 4 - <_> - 3 - - 11 62 9 1 - <_> - 0 - - 16 18 2 1 - <_> - 7 - - 2 62 13 1 - <_> - 9 - - 27 61 4 1 - <_> - 1 - - 13 5 6 12 - <_> - 4 - - 11 40 8 11 - <_> - 3 - - 10 15 1 42 - <_> - 3 - - 0 13 15 37 - <_> - 0 - - 8 50 2 5 - <_> - 3 - - 9 42 10 10 - <_> - 9 - - 15 17 2 5 - <_> - 8 - - 14 12 3 4 - <_> - 1 - - 8 18 1 4 - <_> - 2 - - 21 56 3 6 - <_> - 1 - - 5 56 21 1 - <_> - 5 - - 1 25 5 24 - <_> - 5 - - 10 56 3 1 - <_> - 4 - - 0 17 15 7 - <_> - 7 - - 26 33 1 6 - <_> - 4 - - 10 18 16 5 - <_> - 2 - - 20 15 4 11 - <_> - 0 - - 19 17 3 7 - <_> - 5 - - 18 1 10 22 - <_> - 5 - - 18 16 8 12 - <_> - 5 - - 22 19 1 13 - <_> - 3 - - 17 29 2 10 - <_> - 4 - - 15 36 4 1 - <_> - 1 - - 8 51 17 4 - <_> - 7 - - 0 52 28 10 - <_> - 2 - - 14 16 8 3 - <_> - 7 - - 14 25 4 3 - <_> - 7 - - 27 12 1 8 - <_> - 0 - - 11 36 14 16 - <_> - 7 - - 30 21 1 11 - <_> - 0 - - 25 39 2 8 - <_> - 9 - - 0 1 24 1 - <_> - 0 - - 7 57 21 1 - <_> - 0 - - 9 5 2 13 - <_> - 2 - - 6 52 15 3 - <_> - 9 - - 24 44 2 1 - <_> - 4 - - 2 61 4 2 - <_> - 5 - - 19 54 3 3 - <_> - 5 - - 19 48 6 8 - <_> - 9 - - 15 37 5 11 - <_> - 0 - - 4 46 2 7 - <_> - 3 - - 4 23 7 6 - <_> - 4 - - 13 8 8 9 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 16 8 1 17 - <_> - 8 - - 14 17 4 2 - <_> - 1 - - 14 46 4 4 - <_> - 5 - - 7 60 20 1 - <_> - 2 - - 7 39 16 11 - <_> - 1 - - 13 21 3 2 - <_> - 1 - - 17 9 5 12 - <_> - 1 - - 9 56 8 1 - <_> - 5 - - 30 46 1 14 - <_> - 0 - - 10 37 20 2 - <_> - 0 - - 12 26 3 14 - <_> - 0 - - 13 33 1 8 - <_> - 1 - - 14 53 3 9 - <_> - 9 - - 16 15 1 22 - <_> - 8 - - 14 12 3 4 - <_> - 1 - - 11 19 11 1 - <_> - 5 - - 17 9 5 10 - <_> - 8 - - 9 3 8 2 - <_> - 8 - - 12 11 8 1 - <_> - 5 - - 26 42 3 19 - <_> - 0 - - 12 10 11 6 - <_> - 4 - - 14 41 12 19 - <_> - 4 - - 13 40 4 6 - <_> - 7 - - 6 55 7 2 - <_> - 8 - - 18 54 12 3 - <_> - 2 - - 1 38 25 11 - <_> - 7 - - 4 0 21 42 - <_> - 0 - - 12 0 8 11 - <_> - 4 - - 14 23 4 11 - <_> - 0 - - 18 21 2 5 - <_> - 5 - - 19 21 10 1 - <_> - 9 - - 12 0 2 12 - <_> - 7 - - 12 60 7 2 - <_> - 2 - - 26 45 3 1 - <_> - 3 - - 4 30 21 5 - <_> - 2 - - 6 57 23 2 - <_> - 5 - - 15 50 6 5 - <_> - 1 - - 23 44 2 7 - <_> - 1 - - 21 27 5 30 - <_> - 1 - - 15 55 2 1 - <_> - 9 - - 0 16 24 45 - <_> - 2 - - 11 11 12 6 - <_> - 7 - - 4 30 2 10 - <_> - 2 - - 23 8 2 10 - <_> - 4 - - 10 21 2 5 - <_> - 1 - - 6 0 14 28 - <_> - 3 - - 6 38 3 12 - <_> - 0 - - 0 48 3 7 - <_> - 9 - - 12 14 3 12 - <_> - 0 - - 13 8 7 8 - <_> - 3 - - 11 41 14 17 - <_> - 0 - - 12 50 16 6 - <_> - 3 - - 15 47 7 11 - <_> - 3 - - 4 56 15 3 - <_> - 4 - - 11 46 10 4 - <_> - 0 - - 13 36 9 8 - <_> - 8 - - 16 8 1 17 - <_> - 9 - - 15 18 3 6 - <_> - 3 - - 14 34 5 5 - <_> - 3 - - 6 23 7 8 - <_> - 3 - - 11 26 6 3 - <_> - 0 - - 12 19 9 11 - <_> - 8 - - 19 41 2 1 - <_> - 8 - - 18 11 9 24 - <_> - 3 - - 15 28 2 3 - <_> - 3 - - 7 50 11 6 - <_> - 4 - - 20 6 5 10 - <_> - 4 - - 14 1 7 21 - <_> - 1 - - 16 54 2 4 - <_> - 9 - - 28 48 1 7 - <_> - 4 - - 14 56 7 4 - <_> - 5 - - 19 9 3 41 - <_> - 9 - - 0 52 14 9 - <_> - 2 - - 18 54 10 7 - <_> - 9 - - 11 8 8 49 - <_> - 8 - - 11 13 5 1 - <_> - 8 - - 29 12 2 9 - <_> - 7 - - 28 4 3 24 - <_> - 9 - - 12 17 4 3 - <_> - 0 - - 14 43 6 2 - <_> - 0 - - 11 7 4 10 - <_> - 0 - - 12 1 2 5 - <_> - 1 - - 12 24 6 2 - <_> - 5 - - 19 14 5 7 - <_> - 7 - - 14 10 3 2 - <_> - 2 - - 19 30 1 8 - <_> - 7 - - 20 61 1 1 - <_> - 5 - - 1 57 29 5 - <_> - 8 - - 16 51 6 9 - <_> - 2 - - 7 51 13 5 - <_> - 4 - - 16 19 4 2 - <_> - 1 - - 15 33 5 21 - <_> - 1 - - 20 19 3 2 - <_> - 5 - - 8 31 4 27 - <_> - 8 - - 17 11 1 2 - <_> - 1 - - 26 8 5 20 - <_> - 0 - - 6 3 21 5 - <_> - 0 - - 9 33 15 6 - <_> - 1 - - 14 56 14 1 - <_> - 2 - - 7 59 2 2 - <_> - 4 - - 2 54 12 8 - <_> - 0 - - 13 25 5 7 - <_> - 3 - - 7 20 9 7 - <_> - 2 - - 10 42 13 9 - <_> - 1 - - 29 36 1 3 - <_> - 3 - - 22 2 4 31 - <_> - 0 - - 19 32 4 15 - <_> - 0 - - 17 18 3 1 - <_> - 3 - - 0 47 1 7 - <_> - 8 - - 16 12 1 5 - <_> - 2 - - 8 56 9 7 - <_> - 2 - - 0 38 24 20 - <_> - 9 - - 17 31 1 6 - <_> - 9 - - 14 59 1 2 - <_> - 4 - - 17 38 1 4 - <_> - 0 - - 12 10 11 6 - <_> - 1 - - 13 21 6 2 - <_> - 7 - - 3 10 26 10 - <_> - 0 - - 7 12 14 35 - <_> - 3 - - 20 42 2 6 - <_> - 0 - - 10 43 6 5 - <_> - 1 - - 10 55 14 1 - <_> - 8 - - 9 48 13 13 - <_> - 8 - - 17 11 1 2 - <_> - 8 - - 9 57 12 5 - <_> - 5 - - 6 1 21 2 - <_> - 5 - - 17 9 5 10 - <_> - 9 - - 9 43 12 1 - <_> - 3 - - 24 46 7 7 - <_> - 4 - - 29 29 2 8 - <_> - 5 - - 17 9 5 10 - <_> - 1 - - 10 53 15 5 - <_> - 5 - - 4 62 16 1 - <_> - 4 - - 25 52 4 8 - <_> - 0 - - 11 52 17 4 - <_> - 4 - - 9 0 1 43 - <_> - 5 - - 11 34 2 3 - <_> - 2 - - 9 41 11 1 - <_> - 4 - - 9 61 13 2 - <_> - 3 - - 28 25 1 34 - <_> - 2 - - 19 26 7 1 - <_> - 3 - - 8 18 8 1 - <_> - 5 - - 2 35 19 26 - <_> - 3 - - 15 25 3 7 - <_> - 5 - - 25 23 3 9 - <_> - 0 - - 14 41 1 18 - <_> - 2 - - 12 58 15 2 - <_> - 7 - - 26 60 3 3 - <_> - 0 - - 24 31 3 15 - <_> - 7 - - 5 7 6 10 - <_> - 1 - - 12 8 8 4 - <_> - 5 - - 20 42 4 11 - <_> - 1 - - 16 5 8 2 - <_> - 7 - - 15 6 2 12 - <_> - 9 - - 12 1 19 1 - <_> - 9 - - 10 16 4 32 - <_> - 3 - - 11 41 14 17 - <_> - 8 - - 9 12 10 27 - <_> - 3 - - 8 9 9 4 - <_> - 7 - - 7 2 3 8 - <_> - 1 - - 13 20 1 4 - <_> - 1 - - 13 5 6 12 - <_> - 0 - - 28 19 2 43 - <_> - 4 - - 3 23 1 16 - <_> - 5 - - 18 29 5 25 - <_> - 2 - - 25 55 5 8 - <_> - 4 - - 11 34 11 14 - <_> - 7 - - 6 59 9 4 - <_> - 5 - - 25 45 3 15 - <_> - 8 - - 14 9 6 8 - <_> - 8 - - 29 28 1 18 - <_> - 5 - - 21 1 5 13 - <_> - 8 - - 19 41 2 1 - <_> - 1 - - 13 54 6 3 - <_> - 9 - - 29 31 1 4 - <_> - 0 - - 5 61 9 2 - <_> - 8 - - 14 12 3 4 - <_> - 7 - - 19 32 1 1 - <_> - 8 - - 5 5 6 15 - <_> - 0 - - 13 49 9 4 - <_> - 4 - - 13 46 4 7 - <_> - 4 - - 14 13 9 7 - <_> - 0 - - 17 18 3 1 - <_> - 3 - - 8 36 16 11 - <_> - 9 - - 14 24 6 10 - <_> - 3 - - 0 54 31 4 - <_> - 1 - - 17 43 4 9 - <_> - 5 - - 20 16 3 22 - <_> - 9 - - 0 48 1 3 - <_> - 8 - - 12 12 8 3 - <_> - 9 - - 14 17 6 39 - <_> - 0 - - 11 42 11 2 - <_> - 2 - - 17 17 1 20 - <_> - 2 - - 0 32 10 15 - <_> - 2 - - 16 57 7 6 - <_> - 5 - - 14 9 13 13 - <_> - 0 - - 13 25 5 7 - <_> - 2 - - 20 17 2 14 - <_> - 3 - - 23 35 3 14 - <_> - 2 - - 16 8 1 24 - <_> - 3 - - 3 19 10 27 - <_> - 1 - - 4 34 25 1 - <_> - 1 - - 6 13 6 23 - <_> - 1 - - 17 16 2 31 - <_> - 2 - - 13 10 13 7 - <_> - 5 - - 10 20 3 33 - <_> - 1 - - 15 52 2 5 - <_> - 2 - - 9 6 17 18 - <_> - 2 - - 30 20 1 11 - <_> - 3 - - 29 7 1 28 - <_> - 7 - - 6 5 20 4 - <_> - 7 - - 6 49 4 2 - <_> - 4 - - 13 7 5 4 - <_> - 3 - - 20 42 2 6 - <_> - 1 - - 12 5 2 49 - <_> - 3 - - 7 9 11 33 - <_> - 7 - - 0 5 22 6 - <_> - 3 - - 3 36 12 1 - <_> - 0 - - 17 33 9 11 - <_> - 0 - - 17 27 5 9 - <_> - 1 - - 16 18 7 3 - <_> - 1 - - 16 55 9 2 - <_> - 4 - - 10 41 8 7 - <_> - 4 - - 11 1 8 16 - <_> - 9 - - 10 6 15 8 - <_> - 2 - - 6 4 24 4 - <_> - 9 - - 9 19 12 2 - <_> - 5 - - 13 8 11 4 - <_> - 0 - - 1 19 2 38 - <_> - 5 - - 14 36 1 8 - <_> - 7 - - 22 53 9 1 - <_> - 5 - - 11 5 4 35 - <_> - 5 - - 18 19 6 5 - <_> - 1 - - 17 33 3 24 - <_> - 2 - - 6 50 11 4 - <_> - 3 - - 8 42 2 4 - <_> - 5 - - 16 57 4 6 - <_> - 8 - - 11 8 11 6 - <_> - 4 - - 9 18 5 8 - <_> - 2 - - 17 40 5 5 - <_> - 9 - - 29 19 1 9 - <_> - 0 - - 24 5 5 16 - <_> - 9 - - 18 35 2 12 - <_> - 9 - - 2 9 5 11 - <_> - 7 - - 24 49 2 4 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 17 13 2 4 - <_> - 8 - - 14 5 1 3 - <_> - 5 - - 10 55 5 4 - <_> - 1 - - 9 52 11 10 - <_> - 0 - - 7 56 19 4 - <_> - 4 - - 9 37 17 1 - <_> - 0 - - 9 33 15 6 - <_> - 5 - - 13 31 1 10 - <_> - 5 - - 20 3 2 24 - <_> - 7 - - 9 43 18 2 - <_> - 7 - - 2 12 18 1 - <_> - 0 - - 14 26 2 3 - <_> - 3 - - 4 26 9 4 - <_> - 0 - - 22 40 4 9 - <_> - 1 - - 9 56 16 1 - <_> - 5 - - 5 62 11 1 - <_> - 3 - - 2 9 18 8 - <_> - 4 - - 11 28 20 35 - <_> - 5 - - 15 43 10 10 - <_> - 7 - - 24 49 2 2 - <_> - 1 - - 13 20 1 4 - <_> - 1 - - 16 9 1 27 - <_> - 3 - - 11 20 19 26 - <_> - 2 - - 22 55 9 8 - <_> - 3 - - 0 40 2 15 - <_> - 3 - - 8 8 5 27 - <_> - 7 - - 18 11 1 1 - <_> - 9 - - 12 20 2 8 - <_> - 4 - - 12 9 13 5 - <_> - 3 - - 7 50 11 6 - <_> - 5 - - 22 45 1 10 - <_> - 8 - - 11 13 5 1 - <_> - 3 - - 20 38 2 17 - <_> - 5 - - 17 8 6 6 - <_> - 3 - - 15 25 3 7 - <_> - 4 - - 10 1 13 19 - <_> - 1 - - 13 14 17 2 - <_> - 1 - - 12 3 6 3 - <_> - 8 - - 5 61 1 1 - <_> - 8 - - 14 5 1 3 - <_> - 9 - - 21 62 7 1 - <_> - 4 - - 18 41 1 8 - <_> - 1 - - 12 54 11 7 - <_> - 2 - - 9 27 1 28 - <_> - 8 - - 8 12 15 3 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 14 11 3 45 - <_> - 9 - - 13 4 10 3 - <_> - 0 - - 22 3 1 7 - <_> - 9 - - 16 15 1 22 - <_> - 2 - - 12 60 19 3 - <_> - 2 - - 8 41 15 1 - <_> - 3 - - 3 50 25 6 - <_> - 4 - - 15 9 14 15 - <_> - 2 - - 12 5 5 14 - <_> - 2 - - 15 46 5 12 - <_> - 0 - - 11 7 4 10 - <_> - 3 - - 10 47 18 3 - <_> - 5 - - 6 35 1 17 - <_> - 9 - - 24 4 5 3 - <_> - 5 - - 14 1 15 5 - <_> - 9 - - 19 20 1 2 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 0 53 3 1 - <_> - 3 - - 10 8 5 8 - <_> - 8 - - 29 30 1 11 - <_> - 8 - - 13 26 15 1 - <_> - 3 - - 29 42 2 15 - <_> - 1 - - 13 54 6 3 - <_> - 4 - - 14 35 8 5 - <_> - 5 - - 10 47 11 11 - <_> - 2 - - 6 50 11 4 - <_> - 3 - - 6 49 4 5 - <_> - 9 - - 10 29 12 18 - <_> - 5 - - 9 60 18 3 - <_> - 3 - - 10 15 1 42 - <_> - 1 - - 17 20 6 5 - <_> - 4 - - 28 16 3 18 - <_> - 3 - - 19 41 1 21 - <_> - 0 - - 18 35 3 4 - <_> - 0 - - 13 18 3 1 - <_> - 0 - - 1 23 14 6 - <_> - 0 - - 28 49 3 2 - <_> - 1 - - 13 14 13 3 - <_> - 0 - - 11 27 8 3 - <_> - 0 - - 11 48 14 5 - <_> - 5 - - 14 62 12 1 - <_> - 4 - - 20 6 1 43 - <_> - 9 - - 12 17 4 3 - <_> - 0 - - 11 13 17 1 - <_> - 3 - - 30 43 1 3 - <_> - 0 - - 4 53 2 2 - <_> - 7 - - 2 55 14 2 - <_> - 8 - - 22 32 1 22 - <_> - 1 - - 13 21 3 2 - <_> - 2 - - 8 12 15 35 - <_> - 7 - - 8 1 13 46 - <_> - 5 - - 12 33 4 5 - <_> - 7 - - 9 62 16 1 - <_> - 5 - - 7 58 14 3 - <_> - 2 - - 15 0 10 1 - <_> - 8 - - 14 9 6 8 - <_> - 1 - - 2 55 6 1 - <_> - 8 - - 17 6 2 1 - <_> - 1 - - 15 36 1 17 - <_> - 1 - - 5 50 11 4 - <_> - 9 - - 13 15 1 3 - <_> - 0 - - 13 43 9 4 - <_> - 7 - - 0 14 2 41 - <_> - 5 - - 7 37 2 24 - <_> - 3 - - 10 1 1 27 - <_> - 4 - - 13 44 7 9 - <_> - 9 - - 30 3 1 9 - <_> - 1 - - 4 34 25 1 - <_> - 3 - - 4 56 15 3 - <_> - 2 - - 11 49 16 2 - <_> - 2 - - 8 52 17 11 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 1 2 2 32 - <_> - 5 - - 20 15 3 46 - <_> - 7 - - 7 14 3 26 - <_> - 3 - - 15 28 2 3 - <_> - 2 - - 6 51 8 6 - <_> - 3 - - 2 50 5 2 - <_> - 5 - - 3 47 14 1 - <_> - 1 - - 29 61 2 1 - <_> - 1 - - 20 47 3 14 - <_> - 2 - - 16 45 3 6 - <_> - 4 - - 0 61 3 2 - <_> - 1 - - 18 46 3 1 - <_> - 2 - - 13 38 2 18 - <_> - 3 - - 4 0 12 1 - <_> - 3 - - 5 10 9 31 - <_> - 9 - - 25 51 3 1 - <_> - 5 - - 26 33 2 13 - <_> - 5 - - 18 18 9 10 - <_> - 3 - - 13 23 2 16 - <_> - 1 - - 8 53 7 6 - <_> - 3 - - 27 38 3 21 - <_> - 7 - - 5 59 17 2 - <_> - 4 - - 0 23 2 8 - <_> - 7 - - 23 54 1 1 - <_> - 1 - - 11 19 1 18 - <_> - 1 - - 13 8 3 11 - <_> - 7 - - 14 20 3 3 - <_> - 1 - - 18 17 2 9 - <_> - 5 - - 19 56 4 7 - <_> - 5 - - 14 49 9 5 - <_> - 3 - - 8 22 3 10 - <_> - 4 - - 12 39 3 3 - <_> - 1 - - 16 49 11 3 - <_> - 9 - - 6 52 1 8 - <_> - 4 - - 27 23 2 13 - <_> - 4 - - 4 58 19 2 - <_> - 5 - - 16 30 1 1 - <_> - 5 - - 7 30 17 17 - <_> - 0 - - 2 38 3 21 - <_> - 4 - - 16 7 3 17 - <_> - 1 - - 8 6 15 1 - <_> - 2 - - 18 29 5 13 - <_> - 9 - - 15 27 2 1 - <_> - 8 - - 14 9 6 8 - <_> - 1 - - 3 53 5 1 - <_> - 8 - - 26 27 1 7 - <_> - 4 - - 11 5 2 48 - <_> - 3 - - 10 4 1 53 - <_> - 1 - - 4 42 26 1 - <_> - 0 - - 17 19 2 2 - <_> - 4 - - 12 39 8 10 - <_> - 8 - - 16 12 1 5 - <_> - 8 - - 9 62 8 1 - <_> - 8 - - 17 13 2 4 - <_> - 2 - - 23 36 3 22 - <_> - 1 - - 15 53 7 4 - <_> - 1 - - 3 59 18 2 - <_> - 4 - - 18 39 1 2 - <_> - 7 - - 8 8 22 20 - <_> - 7 - - 2 53 10 2 - <_> - 5 - - 16 26 7 15 - <_> - 4 - - 0 62 24 1 - <_> - 1 - - 4 56 7 7 - <_> - 9 - - 29 0 1 11 - <_> - 0 - - 12 33 5 2 - <_> - 5 - - 7 32 8 7 - <_> - 4 - - 5 18 23 5 - <_> - 3 - - 23 49 2 1 - <_> - 0 - - 11 49 11 6 - <_> - 5 - - 21 20 1 6 - <_> - 9 - - 16 18 2 1 - <_> - 9 - - 14 1 3 13 - <_> - 3 - - 19 48 1 15 - <_> - 4 - - 1 17 26 3 - <_> - 5 - - 0 24 30 26 - <_> - 5 - - 15 58 12 4 - <_> - 0 - - 11 49 11 2 - <_> - 1 - - 6 21 13 20 - <_> - 3 - - 11 9 15 7 - <_> - 2 - - 11 56 7 4 - <_> - 1 - - 16 23 2 5 - <_> - 4 - - 10 8 14 4 - <_> - 1 - - 2 15 17 1 - <_> - 2 - - 11 17 6 3 - <_> - 1 - - 20 13 1 22 - <_> - 5 - - 17 9 5 10 - <_> - 2 - - 16 13 8 8 - <_> - 5 - - 14 0 12 17 - <_> - 5 - - 10 38 14 3 - <_> - 7 - - 21 40 1 7 - <_> - 5 - - 12 34 7 6 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 12 22 5 2 - <_> - 8 - - 5 5 6 15 - <_> - 1 - - 10 15 4 20 - <_> - 9 - - 13 13 3 21 - <_> - 4 - - 28 20 1 16 - <_> - 7 - - 16 11 1 1 - <_> - 4 - - 8 52 9 6 - <_> - 1 - - 11 53 10 4 - <_> - 1 - - 16 18 7 3 - <_> - 7 - - 1 51 12 2 - <_> - 7 - - 12 60 2 2 - <_> - 8 - - 11 13 5 1 - <_> - 1 - - 10 56 10 1 - <_> - 2 - - 29 1 2 21 - <_> - 4 - - 15 36 4 1 - <_> - 9 - - 19 41 1 6 - <_> - 4 - - 1 51 7 12 - <_> - 0 - - 22 19 1 33 - <_> - 5 - - 16 57 5 6 - <_> - 2 - - 5 37 2 11 - <_> - 2 - - 10 42 9 16 - <_> - 7 - - 2 53 10 2 - <_> - 4 - - 8 45 18 1 - <_> - 5 - - 17 15 9 10 - <_> - 3 - - 25 60 3 1 - <_> - 3 - - 29 22 2 11 - <_> - 9 - - 9 56 18 7 - <_> - 8 - - 27 60 3 3 - <_> - 0 - - 7 15 9 7 - <_> - 3 - - 13 21 3 10 - <_> - 3 - - 8 11 6 20 - <_> - 9 - - 30 17 1 2 - <_> - 5 - - 12 56 2 5 - <_> - 1 - - 30 41 1 20 - <_> - 9 - - 12 17 4 3 - <_> - 1 - - 15 53 7 4 - <_> - 0 - - 0 48 3 7 - <_> - 8 - - 12 11 18 2 - <_> - 8 - - 10 55 5 4 - <_> - 8 - - 14 12 3 4 - <_> - 2 - - 19 40 1 12 - <_> - 1 - - 13 21 6 2 - <_> - 4 - - 13 8 10 5 - <_> - 1 - - 7 11 22 1 - <_> - 4 - - 18 41 1 8 - <_> - 3 - - 7 62 13 1 - <_> - 1 - - 9 56 16 1 - <_> - 0 - - 14 30 9 21 - <_> - 1 - - 19 2 10 11 - <_> - 3 - - 21 47 1 8 - <_> - 2 - - 9 48 9 6 - <_> - 1 - - 21 35 1 15 - <_> - 3 - - 4 26 3 29 - <_> - 0 - - 14 11 15 3 - <_> - 7 - - 2 46 21 1 - <_> - 2 - - 25 10 2 18 - <_> - 4 - - 12 14 4 5 - <_> - 3 - - 25 46 4 2 - <_> - 4 - - 9 12 1 11 - <_> - 9 - - 19 39 1 12 - <_> - 7 - - 14 11 9 3 - <_> - 7 - - 6 41 1 7 - <_> - 2 - - 5 58 21 2 - <_> - 5 - - 20 14 9 8 - <_> - 4 - - 3 31 27 3 - <_> - 5 - - 6 1 21 2 - <_> - 7 - - 16 11 1 1 - <_> - 4 - - 13 24 5 27 - <_> - 7 - - 22 60 6 2 - <_> - 4 - - 1 34 20 4 - <_> - 1 - - 15 33 2 8 - <_> - 5 - - 14 40 12 10 - <_> - 2 - - 15 48 2 3 - <_> - 9 - - 15 7 3 51 - <_> - 8 - - 12 12 8 3 - <_> - 3 - - 14 34 5 5 - <_> - 5 - - 17 9 5 10 - <_> - 1 - - 18 20 3 7 - <_> - 4 - - 15 6 3 4 - <_> - 5 - - 2 22 14 3 - <_> - 4 - - 10 29 3 19 - <_> - 1 - - 11 44 1 14 - <_> - 3 - - 6 39 5 16 - <_> - 0 - - 9 51 2 5 - <_> - 2 - - 9 50 4 5 - <_> - 9 - - 16 18 2 1 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 16 11 7 3 - <_> - 8 - - 14 17 4 2 - <_> - 2 - - 26 53 5 7 - <_> - 5 - - 16 47 8 7 - <_> - 3 - - 7 50 8 1 - <_> - 4 - - 8 47 23 1 - <_> - 2 - - 5 59 14 1 - <_> - 9 - - 20 57 1 2 - <_> - 1 - - 23 8 8 22 - <_> - 3 - - 17 50 8 11 - <_> - 0 - - 8 19 21 25 - <_> - 2 - - 14 23 3 6 - <_> - 5 - - 8 22 20 6 - <_> - 4 - - 8 60 7 3 - <_> - 1 - - 12 51 3 12 - <_> - 5 - - 11 57 2 6 - <_> - 7 - - 26 0 3 1 - <_> - 7 - - 12 59 12 3 - <_> - 0 - - 25 50 6 11 - <_> - 0 - - 6 52 25 5 - <_> - 5 - - 14 9 9 4 - <_> - 7 - - 17 11 8 1 - <_> - 5 - - 24 56 1 4 - <_> - 0 - - 18 18 2 7 - <_> - 3 - - 6 22 14 7 - <_> - 0 - - 3 0 17 9 - <_> - 3 - - 11 12 2 9 - <_> - 7 - - 17 8 14 7 - <_> - 4 - - 8 41 17 1 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 22 38 3 10 - <_> - 9 - - 15 32 2 2 - <_> - 2 - - 21 27 9 10 - <_> - 3 - - 16 53 14 2 - <_> - 0 - - 13 24 3 7 - <_> - 1 - - 14 43 10 9 - <_> - 1 - - 14 53 3 9 - <_> - 1 - - 12 31 10 8 - <_> - 2 - - 10 57 19 1 - <_> - 1 - - 9 32 5 2 - <_> - 1 - - 0 34 13 14 - <_> - 5 - - 14 52 9 3 - <_> - 1 - - 4 1 23 5 - <_> - 2 - - 2 49 23 11 - <_> - 1 - - 13 20 1 4 - <_> - 4 - - 12 19 12 1 - <_> - 8 - - 10 39 2 2 - <_> - 9 - - 30 38 1 1 - <_> - 4 - - 13 44 1 4 - <_> - 1 - - 18 28 8 15 - <_> - 1 - - 28 5 2 23 - <_> - 5 - - 16 55 8 4 - <_> - 4 - - 20 18 2 4 - <_> - 2 - - 8 41 15 1 - <_> - 7 - - 15 2 2 56 - <_> - 4 - - 12 4 9 12 - <_> - 3 - - 4 56 15 3 - <_> - 2 - - 5 51 13 5 - <_> - 5 - - 21 25 1 18 - <_> - 4 - - 21 18 7 32 - <_> - 8 - - 14 9 6 8 - <_> - 1 - - 11 19 11 1 - <_> - 8 - - 0 14 1 8 - <_> - 7 - - 6 8 1 3 - <_> - 5 - - 13 46 2 11 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 6 10 11 18 - <_> - 8 - - 5 14 4 5 - <_> - 9 - - 13 16 4 4 - <_> - 9 - - 10 1 13 13 - <_> - 0 - - 5 47 1 16 - <_> - 7 - - 1 48 29 7 - <_> - 0 - - 0 4 1 5 - <_> - 2 - - 18 61 7 1 - <_> - 2 - - 18 15 8 18 - <_> - 1 - - 14 17 5 10 - <_> - 3 - - 16 32 4 7 - <_> - 0 - - 19 29 5 7 - <_> - 7 - - 12 15 5 1 - <_> - 4 - - 13 36 3 4 - <_> - 1 - - 13 5 6 12 - <_> - 8 - - 29 56 2 3 - <_> - 1 - - 11 45 8 5 - <_> - 7 - - 11 59 3 3 - <_> - 8 - - 21 55 5 5 - <_> - 3 - - 10 21 1 13 - <_> - 5 - - 15 24 4 7 - <_> - 2 - - 17 3 4 15 - <_> - 5 - - 7 2 10 2 - <_> - 8 - - 14 12 3 4 - <_> - 1 - - 13 21 6 2 - <_> - 2 - - 10 8 20 7 - <_> - 5 - - 0 33 27 15 - <_> - 0 - - 11 42 11 2 - <_> - 1 - - 9 17 11 9 - <_> - 5 - - 6 59 13 1 - <_> - 4 - - 11 46 10 4 - <_> - 1 - - 13 54 6 3 - <_> - 1 - - 5 50 11 4 - <_> - 9 - - 10 15 3 30 - <_> - 1 - - 4 30 22 11 - <_> - 9 - - 28 2 3 1 - <_> - 8 - - 28 62 1 1 - <_> - 1 - - 19 28 7 6 - <_> - 4 - - 28 9 3 26 - <_> - 1 - - 3 44 16 2 - <_> - 2 - - 30 36 1 8 - <_> - 2 - - 7 51 13 5 - <_> - 9 - - 17 19 2 4 - <_> - 2 - - 10 56 10 3 - <_> - 5 - - 16 16 14 9 - <_> - 7 - - 16 38 2 4 - <_> - 2 - - 15 0 7 6 - <_> - 8 - - 17 13 2 4 - <_> - 7 - - 23 49 4 3 - <_> - 1 - - 7 25 10 10 - <_> - 9 - - 12 29 7 19 - <_> - 7 - - 17 28 1 12 - <_> - 7 - - 18 6 1 2 - <_> - 5 - - 14 5 7 10 - <_> - 0 - - 0 2 3 60 - <_> - 5 - - 13 14 3 2 - <_> - 1 - - 16 7 4 26 - <_> - 0 - - 25 47 6 16 - <_> - 1 - - 8 18 15 8 - <_> - 1 - - 13 55 3 2 - <_> - 0 - - 14 54 1 5 - <_> - 4 - - 15 36 4 1 - <_> - 2 - - 8 24 3 9 - <_> - 1 - - 20 10 1 42 - <_> - 5 - - 4 31 15 5 - <_> - 3 - - 10 5 7 17 - <_> - 2 - - 9 52 3 1 - <_> - 4 - - 3 59 10 4 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 16 11 7 3 - <_> - 8 - - 11 37 1 6 - <_> - 1 - - 11 53 14 4 - <_> - 5 - - 5 57 24 1 - <_> - 7 - - 24 50 2 3 - <_> - 5 - - 13 58 6 4 - <_> - 4 - - 13 43 2 6 - <_> - 3 - - 25 42 6 6 - <_> - 5 - - 14 40 12 10 - <_> - 4 - - 11 53 3 1 - <_> - 3 - - 20 42 2 6 - <_> - 2 - - 11 12 12 2 - <_> - 3 - - 12 42 2 9 - <_> - 8 - - 14 12 3 4 - <_> - 2 - - 11 17 6 3 - <_> - 2 - - 12 6 14 12 - <_> - 9 - - 16 17 2 6 - <_> - 5 - - 20 56 3 7 - <_> - 8 - - 9 20 14 13 - <_> - 7 - - 24 16 1 42 - <_> - 0 - - 18 52 8 6 - <_> - 5 - - 21 50 7 2 - <_> - 2 - - 12 20 7 8 - <_> - 2 - - 10 22 15 36 - <_> - 7 - - 13 6 9 7 - <_> - 4 - - 28 2 3 38 - <_> - 5 - - 10 56 20 6 - <_> - 7 - - 7 55 5 1 - <_> - 9 - - 15 32 2 2 - <_> - 1 - - 3 14 24 3 - <_> - 4 - - 16 7 2 2 - <_> - 1 - - 2 19 25 2 - <_> - 2 - - 18 14 5 44 - <_> - 7 - - 16 11 1 1 - <_> - 0 - - 28 32 1 1 - <_> - 9 - - 30 1 1 2 - <_> - 3 - - 24 45 6 4 - <_> - 3 - - 3 2 10 15 - <_> - 3 - - 1 43 18 12 - <_> - 0 - - 2 19 4 42 - <_> - 2 - - 4 42 5 8 - <_> - 0 - - 19 25 3 18 - <_> - 8 - - 13 14 4 3 - <_> - 0 - - 13 13 6 38 - <_> - 8 - - 22 52 3 5 - <_> - 7 - - 10 61 1 1 - <_> - 2 - - 16 23 3 13 - <_> - 1 - - 11 35 8 4 - <_> - 1 - - 10 55 12 1 - <_> - 1 - - 13 40 12 1 - <_> - 7 - - 6 29 19 16 - <_> - 9 - - 13 27 2 2 - <_> - 9 - - 30 3 1 55 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 16 43 2 8 - <_> - 8 - - 7 8 5 6 - <_> - 3 - - 11 53 20 5 - <_> - 0 - - 12 10 11 6 - <_> - 9 - - 30 4 1 31 - <_> - 0 - - 17 17 3 2 - <_> - 7 - - 22 56 4 3 - <_> - 8 - - 12 12 8 3 - <_> - 1 - - 17 34 13 21 - <_> - 4 - - 7 15 5 22 - <_> - 4 - - 25 13 1 21 - <_> - 5 - - 22 18 3 32 - <_> - 0 - - 15 17 10 7 - <_> - 3 - - 5 10 14 23 - <_> - 1 - - 11 53 14 4 - <_> - 2 - - 14 62 15 1 - <_> - 5 - - 0 28 18 28 - <_> - 7 - - 18 11 1 1 - <_> - 2 - - 13 32 2 1 - <_> - 4 - - 9 6 8 12 - <_> - 3 - - 3 49 10 6 - <_> - 2 - - 11 40 7 1 - <_> - 5 - - 7 18 2 15 - <_> - 5 - - 11 15 5 3 - <_> - 5 - - 9 8 13 9 - <_> - 4 - - 4 60 12 2 - <_> - 3 - - 8 18 9 2 - <_> - 5 - - 5 1 18 48 - <_> - 3 - - 0 13 18 13 - <_> - 2 - - 0 52 22 2 - <_> - 0 - - 5 47 1 7 - <_> - 4 - - 10 18 16 5 - <_> - 1 - - 12 24 6 2 - <_> - 2 - - 6 35 6 10 - <_> - 0 - - 7 12 13 7 - <_> - 3 - - 8 56 9 3 - <_> - 4 - - 13 38 8 11 - <_> - 4 - - 16 22 2 17 - <_> - 0 - - 15 33 8 24 - <_> - 7 - - 1 2 30 40 - <_> - 3 - - 20 37 2 5 - <_> - 9 - - 14 0 10 7 - <_> - 5 - - 14 29 5 7 - <_> - 9 - - 15 15 2 10 - <_> - 5 - - 13 14 12 10 - <_> - 7 - - 14 10 3 2 - <_> - 5 - - 20 1 7 5 - <_> - 7 - - 0 62 28 1 - <_> - 0 - - 26 42 3 15 - <_> - 1 - - 13 44 14 11 - <_> - 9 - - 20 29 1 13 - <_> - 4 - - 11 38 13 7 - <_> - 8 - - 12 12 8 3 - <_> - 5 - - 0 50 7 12 - <_> - 2 - - 15 37 4 25 - <_> - 5 - - 18 7 1 40 - <_> - 2 - - 21 55 9 7 - <_> - 5 - - 15 47 14 8 - <_> - 7 - - 14 25 4 3 - <_> - 4 - - 12 39 3 3 - <_> - 3 - - 10 8 1 50 - <_> - 4 - - 5 16 23 30 - <_> - 1 - - 15 53 7 4 - <_> - 5 - - 1 57 18 2 - <_> - 4 - - 14 58 12 5 - <_> - 8 - - 30 54 1 9 - <_> - 4 - - 0 26 3 5 - <_> - 7 - - 24 36 3 4 - <_> - 0 - - 12 10 11 6 - <_> - 4 - - 3 39 26 5 - <_> - 7 - - 5 50 5 7 - <_> - 5 - - 15 49 10 4 - <_> - 0 - - 0 38 9 15 - <_> - 3 - - 16 41 14 6 - <_> - 1 - - 11 55 10 5 - <_> - 7 - - 14 0 1 31 - <_> - 9 - - 28 0 2 62 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 16 18 2 1 - <_> - 8 - - 16 53 1 2 - <_> - 9 - - 16 18 2 1 - <_> - 1 - - 13 18 18 6 - <_> - 5 - - 15 60 15 2 - <_> - 3 - - 5 38 19 9 - <_> - 0 - - 1 24 3 26 - <_> - 2 - - 30 25 1 26 - <_> - 0 - - 11 42 11 2 - <_> - 1 - - 11 35 8 4 - <_> - 4 - - 6 9 11 16 - <_> - 8 - - 16 12 1 5 - <_> - 8 - - 24 23 4 5 - <_> - 8 - - 28 12 1 12 - <_> - 9 - - 26 2 3 2 - <_> - 1 - - 18 23 3 1 - <_> - 9 - - 15 14 3 14 - <_> - 9 - - 0 31 22 14 - <_> - 2 - - 8 48 11 9 - <_> - 8 - - 6 20 5 7 - <_> - 1 - - 13 52 3 10 - <_> - 1 - - 24 36 4 1 - <_> - 4 - - 13 44 7 7 - <_> - 2 - - 18 16 4 15 - <_> - 5 - - 11 56 12 1 - <_> - 2 - - 1 40 29 1 - <_> - 2 - - 12 38 11 10 - <_> - 1 - - 11 19 11 1 - <_> - 3 - - 17 34 2 13 - <_> - 2 - - 12 20 7 7 - <_> - 2 - - 11 11 12 6 - <_> - 9 - - 21 62 7 1 - <_> - 8 - - 1 62 13 1 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 13 39 1 8 - <_> - 8 - - 17 3 3 2 - <_> - 8 - - 13 2 8 52 - <_> - 5 - - 30 37 1 22 - <_> - 0 - - 9 31 18 3 - <_> - 7 - - 20 11 4 1 - <_> - 1 - - 5 12 14 6 - <_> - 4 - - 8 3 14 46 - <_> - 9 - - 16 18 2 1 - <_> - 5 - - 20 33 2 2 - <_> - 4 - - 15 6 3 4 - <_> - 9 - - 30 1 1 8 - <_> - 2 - - 6 51 8 6 - <_> - 5 - - 9 58 17 2 - <_> - 5 - - 17 28 14 5 - <_> - 1 - - 19 20 3 15 - <_> - 3 - - 10 21 1 13 - <_> - 1 - - 8 17 6 13 - <_> - 0 - - 10 46 8 7 - <_> - 0 - - 13 25 2 6 - <_> - 2 - - 22 30 3 11 - <_> - 1 - - 16 7 4 26 - <_> - 1 - - 14 33 5 21 - <_> - 1 - - 16 53 2 4 - <_> - 0 - - 22 29 5 8 - <_> - 3 - - 4 53 21 5 - <_> - 0 - - 10 50 16 3 - <_> - 0 - - 20 49 2 1 - <_> - 0 - - 25 44 5 3 - <_> - 7 - - 28 41 2 1 - <_> - 7 - - 14 59 1 2 - <_> - 8 - - 12 12 8 3 - <_> - 9 - - 13 27 2 2 - <_> - 8 - - 20 39 2 4 - <_> - 1 - - 12 15 1 26 - <_> - 5 - - 21 2 1 52 - <_> - 4 - - 6 7 8 7 - <_> - 1 - - 13 21 6 2 - <_> - 1 - - 4 54 4 9 - <_> - 4 - - 18 39 1 2 - <_> - 0 - - 4 39 5 7 - <_> - 3 - - 7 23 7 30 - <_> - 1 - - 16 26 9 4 - <_> - 4 - - 18 5 6 41 - <_> - 1 - - 13 14 13 3 - <_> - 3 - - 3 43 11 1 - <_> - 0 - - 17 19 2 2 - <_> - 4 - - 11 12 7 4 - <_> - 8 - - 17 11 1 2 - <_> - 5 - - 30 0 1 2 - <_> - 4 - - 2 59 28 3 - <_> - 0 - - 27 49 4 9 - <_> - 5 - - 20 10 2 18 - <_> - 3 - - 1 7 16 1 - <_> - 5 - - 27 15 2 12 - <_> - 1 - - 20 52 1 11 - <_> - 5 - - 9 57 14 6 - <_> - 7 - - 26 51 3 4 - <_> - 2 - - 6 50 11 4 - <_> - 7 - - 11 24 16 2 - <_> - 5 - - 10 58 13 5 - <_> - 7 - - 10 9 17 10 - <_> - 9 - - 19 19 2 1 - <_> - 7 - - 11 18 13 9 - <_> - 3 - - 6 11 9 11 - <_> - 4 - - 1 8 26 39 - <_> - 5 - - 15 24 4 7 - <_> - 1 - - 15 52 2 5 - <_> - 4 - - 12 31 10 5 - <_> - 4 - - 23 32 8 31 - <_> - 4 - - 28 16 3 18 - <_> - 7 - - 10 47 7 4 - <_> - 1 - - 11 19 1 18 - <_> - 8 - - 16 12 1 5 - <_> - 9 - - 0 48 1 3 - <_> - 8 - - 10 29 1 8 - <_> - 1 - - 5 56 21 1 - <_> - 1 - - 13 46 8 15 - <_> - 7 - - 2 36 10 16 - <_> - 0 - - 11 49 11 2 - <_> - 5 - - 26 56 2 6 - <_> - 7 - - 11 59 3 3 - <_> - 0 - - 12 50 16 6 - <_> - 9 - - 2 61 17 1 - <_> - 0 - - 7 55 7 4 - <_> - 7 - - 15 29 2 3 - <_> - 0 - - 22 58 9 5 - <_> - 1 - - 15 8 4 8 - <_> - 5 - - 4 28 2 2 - <_> - 0 - - 5 27 8 13 - <_> - 1 - - 13 20 5 4 - <_> - 0 - - 26 48 5 6 - <_> - 0 - - 16 34 10 11 - <_> - 7 - - 30 57 1 1 - <_> - 9 - - 30 19 1 8 - <_> - 4 - - 18 41 1 8 - <_> - 9 - - 14 17 3 26 - <_> - 1 - - 13 55 12 3 - <_> - 5 - - 4 62 7 1 - <_> - 9 - - 12 7 13 1 - <_> - 4 - - 14 8 5 1 - <_> - 2 - - 21 55 10 2 - <_> - 3 - - 8 9 13 1 - <_> - 9 - - 13 34 8 6 - <_> - 7 - - 12 29 4 10 - <_> - 9 - - 24 31 2 11 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 29 38 2 2 - <_> - 2 - - 13 10 13 7 - <_> - 2 - - 8 27 3 6 - <_> - 9 - - 12 17 4 3 - <_> - 5 - - 16 10 12 13 - <_> - 0 - - 3 43 1 9 - <_> - 3 - - 6 50 12 7 - <_> - 9 - - 14 1 10 3 - <_> - 5 - - 10 2 10 3 - <_> - 2 - - 19 12 5 12 - <_> - 7 - - 12 15 8 7 - <_> - 5 - - 13 31 1 10 - <_> - 2 - - 9 7 2 47 - <_> - 2 - - 26 44 2 12 - <_> - 1 - - 10 54 7 2 - <_> - 2 - - 9 18 7 2 - <_> - 2 - - 30 58 1 2 - <_> - 2 - - 8 41 15 3 - <_> - 4 - - 14 58 1 5 - <_> - 3 - - 11 0 8 37 - <_> - 4 - - 0 26 3 5 - <_> - 5 - - 13 9 8 6 - <_> - 7 - - 6 36 2 19 - <_> - 7 - - 16 11 1 1 - <_> - 7 - - 8 59 7 2 - <_> - 3 - - 10 7 3 41 - <_> - 4 - - 9 20 17 4 - <_> - 1 - - 28 49 3 11 - <_> - 5 - - 12 57 7 5 - <_> - 4 - - 7 54 11 1 - <_> - 0 - - 12 38 1 6 - <_> - 1 - - 17 43 4 9 - <_> - 8 - - 17 13 2 4 - <_> - 8 - - 13 14 1 3 - <_> - 8 - - 22 53 4 1 - <_> - 2 - - 8 61 15 1 - <_> - 2 - - 4 53 19 3 - <_> - 4 - - 4 42 2 6 - <_> - 9 - - 11 19 9 1 - <_> - 9 - - 11 9 15 6 - <_> - 4 - - 23 61 7 1 - <_> - 0 - - 7 57 21 1 - <_> - 0 - - 8 50 14 10 - <_> - 1 - - 23 46 1 16 - <_> - 2 - - 19 11 12 14 - <_> - 0 - - 2 41 3 13 - <_> - 4 - - 22 23 6 28 - <_> - 0 - - 19 27 4 10 - <_> - 0 - - 6 42 2 2 - <_> - 3 - - 17 29 2 10 - <_> - 4 - - 6 60 4 3 - <_> - 7 - - 22 53 1 4 - <_> - 2 - - 9 16 6 6 - <_> - 2 - - 19 35 2 3 - <_> - 0 - - 15 36 11 1 - <_> - 3 - - 19 24 3 16 - <_> - 5 - - 0 47 13 2 - <_> - 2 - - 3 51 16 4 - <_> - 4 - - 3 26 2 21 - <_> - 8 - - 14 12 3 4 - <_> - 4 - - 6 51 7 1 - <_> - 8 - - 14 17 4 2 - <_> - 3 - - 22 45 1 13 - <_> - 4 - - 11 10 20 4 - <_> - 9 - - 29 47 2 2 - <_> - 3 - - 10 15 1 42 - <_> - 1 - - 25 16 6 7 - <_> - 3 - - 14 21 4 6 - <_> - 3 - - 5 56 6 4 - <_> - 4 - - 24 36 2 26 - <_> - 2 - - 9 48 19 4 - <_> - 7 - - 12 59 12 1 - <_> - 4 - - 2 59 28 3 - <_> - 0 - - 12 10 11 6 - <_> - 1 - - 13 20 1 4 - <_> - 3 - - 15 8 11 32 - <_> - 8 - - 18 25 2 5 - <_> - 1 - - 15 51 5 9 - <_> - 1 - - 6 59 5 4 - <_> - 5 - - 30 51 1 10 - <_> - 4 - - 16 7 2 2 - <_> - 7 - - 4 30 14 6 - <_> - 0 - - 9 28 12 22 - <_> - 2 - - 9 27 1 28 - <_> - 4 - - 17 19 6 35 - <_> - 2 - - 1 30 20 10 - <_> - 1 - - 9 15 11 2 - <_> - 9 - - 16 18 2 1 - <_> - 5 - - 6 18 7 10 - <_> - 4 - - 11 36 16 1 - <_> - 8 - - 12 12 8 3 - <_> - 0 - - 21 54 3 2 - <_> - 8 - - 14 5 1 3 - <_> - 8 - - 11 9 7 8 - <_> - 9 - - 14 1 3 13 - <_> - 0 - - 12 38 1 6 - <_> - 3 - - 5 36 21 5 - <_> - 8 - - 8 62 3 1 - <_> - 4 - - 16 51 2 1 - <_> - 1 - - 16 54 4 8 - <_> - 0 - - 9 15 4 3 - <_> - 0 - - 27 47 1 6 - <_> - 0 - - 12 37 14 2 - <_> - 3 - - 10 5 4 54 - <_> - 5 - - 12 29 6 7 - <_> - 7 - - 1 32 10 13 - <_> - 0 - - 6 58 7 1 - <_> - 2 - - 8 38 20 5 - <_> - 9 - - 28 14 1 9 - <_> - 1 - - 12 8 8 4 - <_> - 4 - - 18 14 3 38 - <_> - 3 - - 0 40 2 15 - <_> - 5 - - 16 24 2 15 - <_> - 1 - - 10 55 12 1 - <_> - 9 - - 7 22 1 29 - <_> - 7 - - 12 59 12 1 - <_> - 8 - - 11 13 5 1 - <_> - 1 - - 2 1 27 2 - <_> - 0 - - 1 8 13 17 - <_> - 8 - - 30 42 1 2 - <_> - 8 - - 12 11 8 1 - <_> - 8 - - 16 35 8 1 - <_> - 4 - - 10 41 8 7 - <_> - 2 - - 22 57 5 6 - <_> - 3 - - 15 49 3 4 - <_> - 5 - - 19 14 5 7 - <_> - 7 - - 14 10 3 2 - <_> - 4 - - 10 18 16 5 - <_> - 9 - - 19 39 2 4 - <_> - 2 - - 7 11 17 1 - <_> - 7 - - 26 33 1 16 - <_> - 4 - - 15 36 4 1 - <_> - 2 - - 7 57 13 4 - <_> - 9 - - 30 4 1 1 - <_> - 3 - - 5 21 10 5 - <_> - 8 - - 11 13 5 1 - <_> - 2 - - 16 19 2 6 - <_> - 5 - - 14 9 9 4 - <_> - 7 - - 15 0 13 3 - <_> - 3 - - 16 36 3 4 - <_> - 0 - - 13 37 15 7 - <_> - 2 - - 24 38 6 18 - <_> - 5 - - 13 39 1 8 - <_> - 7 - - 3 62 15 1 - <_> - 5 - - 29 28 2 25 - <_> - 2 - - 10 46 12 9 - <_> - 2 - - 12 59 14 4 - <_> - 8 - - 16 12 1 5 - <_> - 9 - - 15 24 2 10 - <_> - 7 - - 27 12 2 11 - <_> - 1 - - 11 55 7 5 - <_> - 0 - - 10 33 3 14 - <_> - 0 - - 25 44 1 9 - <_> - 2 - - 16 39 4 9 - <_> - 7 - - 19 25 1 2 - <_> - 1 - - 13 5 6 12 - <_> - 1 - - 11 19 1 18 - <_> - 7 - - 0 0 17 33 - <_> - 7 - - 25 52 4 2 - <_> - 3 - - 27 62 2 1 - <_> - 5 - - 18 17 6 4 - <_> - 7 - - 23 18 2 12 - <_> - 5 - - 22 12 9 23 - <_> - 2 - - 6 50 11 4 - <_> - 2 - - 18 52 7 2 - <_> - 4 - - 0 59 5 4 - <_> - 1 - - 9 54 5 6 - <_> - 2 - - 13 62 18 1 - <_> - 4 - - 25 62 2 1 - <_> - 3 - - 3 19 8 16 - <_> - 1 - - 24 29 4 34 - <_> - 2 - - 13 30 2 5 - <_> - 1 - - 13 7 9 6 - <_> - 4 - - 13 7 5 4 - <_> - 0 - - 16 17 4 5 - <_> - 0 - - 12 10 11 6 - <_> - 7 - - 12 44 1 11 - <_> - 0 - - 19 6 3 4 - <_> - 1 - - 11 8 12 1 - <_> - 2 - - 29 44 1 6 - <_> - 2 - - 24 57 2 4 - <_> - 3 - - 10 50 7 6 - <_> - 5 - - 27 14 2 26 - <_> - 0 - - 1 53 26 5 - <_> - 7 - - 6 62 9 1 - <_> - 8 - - 1 61 25 2 - <_> - 4 - - 18 39 1 2 - <_> - 5 - - 21 18 5 38 - <_> - 0 - - 0 39 3 11 - <_> - 5 - - 4 42 8 6 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 13 14 3 2 - <_> - 3 - - 8 9 9 4 - <_> - 9 - - 14 18 3 9 - <_> - 9 - - 13 4 11 7 - <_> - 9 - - 13 39 5 1 - <_> - 1 - - 8 6 15 1 - <_> - 4 - - 26 19 2 18 - <_> - 9 - - 25 18 4 2 - <_> - 2 - - 17 3 4 15 - <_> - 4 - - 5 44 19 4 - <_> - 1 - - 17 18 5 28 - <_> - 1 - - 14 52 5 6 - <_> - 3 - - 24 45 2 15 - <_> - 0 - - 6 58 16 2 - <_> - 5 - - 16 30 1 1 - <_> - 5 - - 12 42 15 2 - <_> - 8 - - 13 51 1 6 - <_> - 8 - - 16 12 1 5 - <_> - 8 - - 14 52 9 1 - <_> - 8 - - 12 0 7 9 - <_> - 4 - - 14 39 4 9 - <_> - 0 - - 3 5 7 24 - <_> - 9 - - 10 33 2 10 - <_> - 9 - - 4 3 16 12 - <_> - 1 - - 12 1 17 7 - <_> - 8 - - 15 55 2 5 - <_> - 2 - - 7 51 14 1 - <_> - 7 - - 15 9 11 2 - <_> - 1 - - 11 0 7 18 - <_> - 1 - - 7 21 21 1 - <_> - 5 - - 18 15 10 12 - <_> - 1 - - 11 56 19 1 - <_> - 3 - - 28 51 1 9 - <_> - 2 - - 12 55 11 7 - <_> - 7 - - 12 57 7 1 - <_> - 7 - - 12 1 7 53 - <_> - 7 - - 24 48 7 5 - <_> - 4 - - 9 22 14 16 - <_> - 1 - - 28 31 3 31 - <_> - 1 - - 20 54 9 5 - <_> - 9 - - 15 32 2 2 - <_> - 3 - - 6 11 9 11 - <_> - 7 - - 18 2 2 10 - <_> - 0 - - 17 19 2 2 - <_> - 0 - - 0 37 22 9 - <_> - 5 - - 8 57 19 3 - <_> - 3 - - 15 44 16 13 - <_> - 5 - - 17 52 9 3 - <_> - 1 - - 2 1 21 4 - <_> - 2 - - 11 16 2 2 - <_> - 4 - - 12 21 1 10 - <_> - 4 - - 10 9 11 9 - <_> - 5 - - 21 25 1 18 - <_> - 5 - - 18 57 7 2 - <_> - 8 - - 16 8 1 17 - <_> - 9 - - 11 49 3 5 - <_> - 8 - - 1 40 1 14 - <_> - 8 - - 12 12 8 3 - <_> - 5 - - 28 36 1 2 - <_> - 9 - - 16 18 2 1 - <_> - 9 - - 16 8 1 6 - <_> - 5 - - 29 38 1 12 - <_> - 2 - - 7 51 13 5 - <_> - 0 - - 6 37 2 20 - <_> - 5 - - 7 52 4 3 - <_> - 5 - - 14 9 9 4 - <_> - 2 - - 1 21 1 16 - <_> - 5 - - 14 0 12 17 - <_> - 1 - - 17 20 6 5 - <_> - 0 - - 21 11 1 41 - <_> - 1 - - 3 54 28 8 - <_> - 1 - - 17 43 4 9 - <_> - 8 - - 13 62 6 1 - <_> - 2 - - 22 16 8 4 - <_> - 2 - - 12 62 11 1 - <_> - 4 - - 19 57 8 6 - <_> - 1 - - 16 53 2 4 - <_> - 9 - - 10 59 4 3 - <_> - 0 - - 13 15 5 4 - <_> - 3 - - 2 54 10 5 - <_> - 2 - - 5 49 8 11 - <_> - 4 - - 11 53 3 2 - <_> - 5 - - 11 34 2 3 - <_> - 3 - - 6 13 9 14 - <_> - 0 - - 13 14 2 12 - <_> - 4 - - 7 60 1 3 - <_> - 4 - - 15 36 4 1 - <_> - 0 - - 16 31 11 7 - <_> - 9 - - 12 35 6 2 - <_> - 1 - - 13 14 13 3 - <_> - 7 - - 10 20 3 3 - <_> - 4 - - 14 8 6 11 - <_> - 2 - - 21 52 2 9 - <_> - 5 - - 19 16 7 39 - <_> - 7 - - 11 62 9 1 - <_> - 8 - - 13 14 4 3 - <_> - 0 - - 14 17 1 13 - <_> - 9 - - 6 8 6 48 - <_> - 9 - - 28 36 1 1 - <_> - 2 - - 9 41 11 1 - <_> - 1 - - 1 30 19 2 - <_> - 4 - - 13 40 6 7 - <_> - 1 - - 12 43 11 15 - <_> - 1 - - 3 14 24 3 - <_> - 4 - - 2 16 11 24 - <_> - 4 - - 5 26 12 4 - <_> - 7 - - 4 24 4 1 - <_> - 2 - - 16 21 3 6 - <_> - 3 - - 2 21 9 2 - <_> - 9 - - 29 2 1 7 - <_> - 9 - - 19 17 1 7 - <_> - 3 - - 6 52 18 2 - <_> - 0 - - 6 57 13 1 - <_> - 2 - - 11 11 8 3 - <_> - 7 - - 17 44 1 3 - <_> - 7 - - 15 10 13 4 - <_> - 9 - - 25 44 2 3 - <_> - 9 - - 23 27 8 27 - <_> - 8 - - 16 12 1 5 - <_> - 3 - - 1 53 25 3 - <_> - 0 - - 14 48 4 9 - <_> - 7 - - 19 23 2 15 - <_> - 1 - - 8 6 15 1 - <_> - 0 - - 16 1 3 13 - <_> - 2 - - 14 16 4 5 - <_> - 5 - - 15 18 14 5 - <_> - 2 - - 18 16 5 9 - <_> - 3 - - 3 1 21 2 - <_> - 2 - - 11 57 19 6 - <_> - 7 - - 7 55 5 1 - <_> - 9 - - 21 4 4 1 - <_> - 1 - - 18 19 1 5 - <_> - 8 - - 12 11 8 1 - <_> - 0 - - 10 8 4 49 - <_> - 9 - - 11 5 8 48 - <_> - 0 - - 0 30 10 18 - <_> - 2 - - 3 40 4 13 - <_> - 3 - - 29 34 1 22 - <_> - 2 - - 20 26 10 4 - <_> - 4 - - 12 8 7 12 - <_> - 1 - - 8 33 12 1 - <_> - 1 - - 20 55 2 4 - <_> - 4 - - 6 34 19 16 - <_> - 3 - - 1 52 26 1 - <_> - 1 - - 11 6 1 47 - <_> - 1 - - 5 44 5 11 - <_> - 2 - - 15 37 3 10 - <_> - 4 - - 10 21 2 5 - <_> - 3 - - 15 21 3 42 - <_> - 8 - - 12 12 8 3 - <_> - 9 - - 22 62 1 1 - <_> - 8 - - 0 14 12 3 - <_> - 2 - - 0 59 2 4 - <_> - 2 - - 6 35 11 5 - <_> - 2 - - 23 40 6 21 - <_> - 3 - - 23 35 3 14 - <_> - 0 - - 16 34 10 11 - <_> - 5 - - 21 18 2 12 - <_> - 5 - - 23 28 8 19 - <_> - 2 - - 21 17 2 20 - <_> - 0 - - 20 15 4 9 - <_> - 2 - - 14 25 3 9 - <_> - 0 - - 8 24 7 5 - <_> - 1 - - 12 11 3 7 - <_> - 7 - - 16 11 1 1 - <_> - 2 - - 23 14 8 24 - <_> - 3 - - 7 24 11 11 - <_> - 7 - - 1 62 30 1 - <_> - 2 - - 8 40 2 7 - <_> - 1 - - 15 53 7 4 - <_> - 4 - - 19 26 11 36 - <_> - 3 - - 2 56 20 6 - <_> - 7 - - 24 49 2 2 - <_> - 3 - - 8 50 7 8 - <_> - 4 - - 8 46 18 1 - <_> - 4 - - 10 8 14 4 - <_> - 1 - - 13 21 3 2 - <_> - 2 - - 11 4 8 13 - <_> - 9 - - 12 17 4 3 - <_> - 8 - - 11 13 5 1 - <_> - 9 - - 26 32 1 7 - <_> - 8 - - 19 41 2 1 - <_> - 2 - - 9 57 20 3 - <_> - 1 - - 5 56 19 1 - <_> - 7 - - 17 26 2 3 - <_> - 4 - - 12 46 1 2 - <_> - 2 - - 3 25 18 1 - <_> - 7 - - 29 52 1 2 - <_> - 0 - - 13 26 4 1 - <_> - 1 - - 2 29 12 5 - <_> - 2 - - 14 3 5 1 - <_> - 0 - - 19 23 3 21 - <_> - 2 - - 16 39 4 9 - <_> - 5 - - 3 41 25 5 - <_> - 0 - - 28 49 3 1 - <_> - 7 - - 12 38 10 7 - <_> - 3 - - 6 12 10 6 - <_> - 9 - - 17 32 1 5 - <_> - 0 - - 10 42 13 5 - <_> - 8 - - 14 12 3 4 - <_> - 4 - - 7 18 16 3 - <_> - 1 - - 28 14 3 42 - <_> - 1 - - 5 54 26 1 - <_> - 4 - - 17 17 8 38 - <_> - 2 - - 2 50 14 3 - <_> - 5 - - 20 24 2 10 - <_> - 3 - - 9 56 20 2 - <_> - 0 - - 11 50 16 10 - <_> - 7 - - 9 0 21 9 - <_> - 4 - - 3 15 22 14 - <_> - 2 - - 11 17 6 3 - <_> - 5 - - 14 50 6 6 - <_> - 0 - - 0 46 3 7 - <_> - 9 - - 14 7 3 23 - <_> - 5 - - 2 11 14 12 - <_> - 5 - - 19 54 3 3 - <_> - 3 - - 12 43 7 10 - <_> - 4 - - 25 54 3 9 - <_> - 1 - - 9 20 4 5 - <_> - 1 - - 10 15 13 1 - <_> - 5 - - 1 60 22 1 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 13 15 5 4 - <_> - 8 - - 8 54 10 5 - <_> - 0 - - 11 7 4 10 - <_> - 3 - - 23 39 6 12 - <_> - 0 - - 0 54 25 4 - <_> - 9 - - 14 0 10 7 - <_> - 4 - - 15 36 4 1 - <_> - 9 - - 12 1 4 31 - <_> - 5 - - 17 19 10 17 - <_> - 7 - - 4 26 1 18 - <_> - 1 - - 20 19 3 2 - <_> - 7 - - 6 53 6 4 - <_> - 2 - - 28 40 2 9 - <_> - 7 - - 11 6 1 35 - <_> - 3 - - 5 13 20 8 - <_> - 2 - - 7 2 1 37 - <_> - 4 - - 6 12 16 13 - <_> - 4 - - 13 22 2 4 - <_> - 2 - - 12 58 10 1 - <_> - 5 - - 14 50 6 6 - <_> - 7 - - 10 59 21 1 - <_> - 0 - - 26 43 3 14 - <_> - 0 - - 20 7 4 39 - <_> - 3 - - 15 48 1 4 - <_> - 3 - - 8 44 17 10 - <_> - 0 - - 26 21 2 2 - <_> - 3 - - 7 40 5 18 - <_> - 1 - - 4 34 25 1 - <_> - 1 - - 9 45 3 13 - <_> - 3 - - 20 41 1 8 - <_> - 8 - - 13 9 13 11 - <_> - 2 - - 15 46 2 10 - <_> - 2 - - 11 4 8 13 - <_> - 0 - - 0 28 6 15 - <_> - 0 - - 17 18 3 1 - <_> - 0 - - 12 10 11 6 - <_> - 7 - - 5 11 21 46 - <_> - 8 - - 17 11 1 2 - <_> - 9 - - 13 16 4 4 - <_> - 9 - - 14 1 3 13 - <_> - 2 - - 6 25 1 37 - <_> - 8 - - 15 5 8 4 - <_> - 8 - - 14 9 4 13 - <_> - 1 - - 12 46 8 2 - <_> - 5 - - 16 22 13 2 - <_> - 7 - - 25 22 2 8 - <_> - 2 - - 7 51 13 5 - <_> - 2 - - 20 61 7 2 - <_> - 3 - - 8 19 11 22 - <_> - 1 - - 10 55 12 1 - <_> - 7 - - 14 0 7 17 - <_> - 9 - - 14 12 2 21 - <_> - 4 - - 8 61 16 2 - <_> - 8 - - 16 12 1 5 - <_> - 0 - - 19 32 6 7 - <_> - 1 - - 22 27 6 29 - <_> - 4 - - 21 24 7 27 - <_> - 0 - - 15 40 12 4 - <_> - 4 - - 2 49 1 3 - <_> - 3 - - 8 57 14 1 - <_> - 7 - - 2 35 3 4 - <_> - 2 - - 19 18 4 13 - <_> - 5 - - 13 11 18 15 - <_> - 5 - - 12 50 10 6 - <_> - 2 - - 12 20 7 7 - <_> - 7 - - 14 40 3 1 - <_> - 9 - - 14 41 2 2 - <_> - 2 - - 16 10 7 47 - <_> - 5 - - 26 61 3 2 - <_> - 1 - - 12 53 10 7 - <_> - 9 - - 21 62 2 1 - <_> - 1 - - 18 19 1 5 - <_> - 1 - - 26 10 5 19 - <_> - 5 - - 30 36 1 12 - <_> - 4 - - 13 38 2 4 - <_> - 3 - - 12 7 5 9 - <_> - 9 - - 17 36 4 2 - <_> - 7 - - 6 61 6 2 - <_> - 5 - - 17 40 2 9 - <_> - 8 - - 17 61 14 2 - <_> - 7 - - 12 24 6 5 - <_> - 8 - - 12 11 8 1 - <_> - 1 - - 13 8 3 11 - <_> - 1 - - 16 1 12 2 - <_> - 2 - - 19 0 4 42 - <_> - 5 - - 16 7 13 45 - <_> - 3 - - 21 45 1 10 - <_> - 3 - - 8 49 19 7 - <_> - 0 - - 12 33 5 2 - <_> - 4 - - 15 42 4 4 - <_> - 1 - - 10 52 7 4 - <_> - 1 - - 7 19 18 3 - <_> - 3 - - 7 7 6 32 - <_> - 4 - - 1 9 9 26 - <_> - 4 - - 12 5 9 15 - <_> - 1 - - 12 24 6 2 - <_> - 3 - - 10 2 11 41 - <_> - 5 - - 7 59 24 3 - <_> - 2 - - 11 36 15 9 - <_> - 0 - - 4 46 2 7 - <_> - 4 - - 28 11 3 7 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 16 11 7 3 - <_> - 8 - - 29 13 2 24 - <_> - 2 - - 7 55 21 3 - <_> - 9 - - 14 60 3 1 - <_> - 9 - - 21 61 4 1 - <_> - 8 - - 13 57 1 6 - <_> - 4 - - 8 43 14 10 - <_> - 5 - - 12 33 4 5 - <_> - 3 - - 3 7 12 22 - <_> - 1 - - 6 20 23 35 - <_> - 5 - - 14 17 6 8 - <_> - 5 - - 21 1 1 36 - <_> - 7 - - 21 17 6 6 - <_> - 5 - - 20 1 7 5 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 15 17 2 5 - <_> - 9 - - 15 17 2 5 - <_> - 1 - - 13 54 6 3 - <_> - 4 - - 9 4 14 43 - <_> - 1 - - 21 51 7 4 - <_> - 4 - - 10 58 20 1 - <_> - 2 - - 5 51 13 5 - <_> - 4 - - 15 36 2 2 - <_> - 5 - - 5 62 14 1 - <_> - 4 - - 1 46 14 3 - <_> - 1 - - 10 55 17 7 - <_> - 7 - - 24 45 4 4 - <_> - 9 - - 30 45 1 13 - <_> - 0 - - 11 52 17 4 - <_> - 3 - - 23 34 7 15 - <_> - 0 - - 17 33 9 11 - <_> - 4 - - 6 31 7 2 - <_> - 7 - - 16 11 1 1 - <_> - 5 - - 17 21 7 1 - <_> - 3 - - 6 8 9 39 - <_> - 1 - - 13 21 6 2 - <_> - 4 - - 13 7 5 4 - <_> - 2 - - 20 16 2 4 - <_> - 1 - - 16 54 2 4 - <_> - 5 - - 2 30 1 28 - <_> - 1 - - 4 62 25 1 - <_> - 5 - - 25 4 1 51 - <_> - 5 - - 19 10 10 38 - <_> - 5 - - 9 61 15 2 - <_> - 7 - - 0 50 9 2 - <_> - 4 - - 19 37 2 8 - <_> - 7 - - 17 32 2 3 - <_> - 9 - - 14 0 10 7 - <_> - 2 - - 29 33 1 8 - <_> - 9 - - 15 17 2 5 - <_> - 8 - - 13 14 4 3 - <_> - 9 - - 27 48 2 6 - <_> - 8 - - 16 53 1 2 - <_> - 2 - - 29 42 1 12 - <_> - 0 - - 2 54 16 9 - <_> - 9 - - 15 17 2 26 - <_> - 0 - - 12 50 14 5 - <_> - 3 - - 24 36 1 26 - <_> - 2 - - 2 33 27 1 - <_> - 1 - - 11 19 1 18 - <_> - 1 - - 16 7 4 26 - <_> - 5 - - 29 28 2 25 - <_> - 1 - - 16 18 7 3 - <_> - 1 - - 10 12 21 7 - <_> - 1 - - 16 55 9 2 - <_> - 2 - - 24 53 7 7 - <_> - 0 - - 21 21 1 14 - <_> - 5 - - 1 44 27 8 - <_> - 7 - - 19 8 5 8 - <_> - 7 - - 23 54 1 1 - <_> - 5 - - 14 9 9 4 - <_> - 5 - - 11 35 11 1 - <_> - 1 - - 11 53 10 4 - <_> - 9 - - 25 59 5 4 - <_> - 2 - - 4 59 21 1 - <_> - 1 - - 18 46 3 5 - <_> - 2 - - 8 24 3 9 - <_> - 3 - - 7 43 11 16 - <_> - 8 - - 26 41 1 4 - <_> - 4 - - 0 52 16 11 - <_> - 9 - - 19 20 1 2 - <_> - 2 - - 12 49 15 2 - <_> - 8 - - 11 20 5 6 - <_> - 3 - - 0 56 31 4 - <_> - 4 - - 18 39 1 2 - <_> - 4 - - 10 24 18 8 - <_> - 5 - - 13 9 8 6 - <_> - 1 - - 11 21 14 32 - <_> - 5 - - 11 0 7 10 - <_> - 7 - - 24 49 2 2 - <_> - 3 - - 15 25 3 7 - <_> - 3 - - 8 16 4 29 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 12 14 8 13 - <_> - 8 - - 15 17 2 1 - <_> - 1 - - 18 20 3 7 - <_> - 2 - - 17 3 4 15 - <_> - 1 - - 0 19 21 3 - <_> - 7 - - 0 62 18 1 - <_> - 8 - - 18 30 1 2 - <_> - 4 - - 13 44 7 7 - <_> - 5 - - 16 46 10 3 - <_> - 1 - - 11 8 13 1 - <_> - 2 - - 21 56 3 4 - <_> - 8 - - 2 53 23 4 - <_> - 8 - - 15 10 2 49 - <_> - 2 - - 2 46 7 3 - <_> - 3 - - 20 38 2 11 - <_> - 1 - - 9 56 16 1 - <_> - 5 - - 21 18 2 12 - <_> - 7 - - 7 52 16 8 - <_> - 0 - - 13 18 3 1 - <_> - 3 - - 27 59 1 4 - <_> - 0 - - 11 42 11 2 - <_> - 1 - - 13 37 2 6 - <_> - 4 - - 6 14 5 9 - <_> - 2 - - 11 11 8 3 - <_> - 2 - - 17 21 1 16 - <_> - 2 - - 18 3 1 10 - <_> - 1 - - 14 53 3 9 - <_> - 5 - - 22 58 8 3 - <_> - 1 - - 17 33 3 24 - <_> - 9 - - 19 38 1 14 - <_> - 2 - - 14 62 15 1 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 17 29 8 7 - <_> - 7 - - 26 4 3 17 - <_> - 3 - - 16 32 4 7 - <_> - 1 - - 14 7 2 11 - <_> - 4 - - 14 8 5 1 - <_> - 2 - - 20 17 2 46 - <_> - 0 - - 2 61 29 2 - <_> - 2 - - 6 50 11 4 - <_> - 5 - - 3 60 14 3 - <_> - 4 - - 0 20 13 6 - <_> - 4 - - 10 13 4 13 - <_> - 7 - - 8 49 2 1 - <_> - 1 - - 13 21 3 2 - <_> - 1 - - 5 0 1 46 - <_> - 7 - - 14 1 7 17 - <_> - 3 - - 28 42 3 15 - <_> - 9 - - 30 36 1 2 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 17 19 2 4 - <_> - 9 - - 16 8 1 6 - <_> - 2 - - 22 47 5 7 - <_> - 1 - - 3 55 22 2 - <_> - 1 - - 13 41 1 13 - <_> - 7 - - 0 44 3 13 - <_> - 2 - - 7 35 8 10 - <_> - 8 - - 1 10 26 1 - <_> - 5 - - 9 53 19 8 - <_> - 4 - - 13 44 1 4 - <_> - 4 - - 6 28 7 18 - <_> - 2 - - 13 41 12 3 - <_> - 1 - - 8 6 15 1 - <_> - 0 - - 12 10 11 6 - <_> - 9 - - 27 1 2 12 - <_> - 0 - - 13 33 1 8 - <_> - 1 - - 9 8 8 8 - <_> - 0 - - 0 48 3 7 - <_> - 8 - - 8 55 12 2 - <_> - 8 - - 4 7 26 38 - <_> - 3 - - 16 33 4 7 - <_> - 7 - - 3 51 21 8 - <_> - 2 - - 14 9 10 50 - <_> - 3 - - 1 46 22 4 - <_> - 9 - - 16 28 2 18 - <_> - 3 - - 9 28 3 29 - <_> - 4 - - 0 52 1 8 - <_> - 1 - - 15 53 7 4 - <_> - 1 - - 6 13 9 25 - <_> - 4 - - 8 56 21 4 - <_> - 7 - - 24 48 3 4 - <_> - 2 - - 16 5 9 3 - <_> - 5 - - 11 6 17 27 - <_> - 7 - - 23 4 7 3 - <_> - 4 - - 13 40 6 7 - <_> - 0 - - 11 40 2 22 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 16 29 3 4 - <_> - 9 - - 12 11 6 5 - <_> - 5 - - 18 14 13 7 - <_> - 7 - - 7 0 1 6 - <_> - 4 - - 7 1 10 36 - <_> - 1 - - 11 8 12 1 - <_> - 5 - - 3 53 22 7 - <_> - 1 - - 9 55 15 1 - <_> - 0 - - 13 35 8 16 - <_> - 2 - - 9 16 6 6 - <_> - 0 - - 25 42 5 7 - <_> - 2 - - 4 6 16 10 - <_> - 5 - - 5 34 26 17 - <_> - 4 - - 9 37 17 1 - <_> - 1 - - 18 23 3 1 - <_> - 1 - - 15 53 7 4 - <_> - 0 - - 10 17 4 13 - <_> - 4 - - 6 53 24 4 - <_> - 7 - - 22 51 9 3 - <_> - 0 - - 0 47 1 15 - <_> - 5 - - 11 56 12 1 - <_> - 2 - - 6 51 12 7 - <_> - 1 - - 3 42 6 8 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 13 12 9 15 - <_> - 8 - - 14 17 4 2 - <_> - 0 - - 13 33 1 8 - <_> - 3 - - 2 29 11 8 - <_> - 2 - - 12 5 8 9 - <_> - 1 - - 17 43 4 9 - <_> - 0 - - 6 58 7 1 - <_> - 4 - - 26 19 1 36 - <_> - 9 - - 17 3 12 3 - <_> - 7 - - 10 20 3 3 - <_> - 3 - - 5 10 12 17 - <_> - 9 - - 11 19 9 1 - <_> - 9 - - 0 27 11 9 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 13 44 7 8 - <_> - 0 - - 4 39 1 10 - <_> - 5 - - 10 58 13 5 - <_> - 0 - - 17 17 3 2 - <_> - 3 - - 8 38 17 7 - <_> - 0 - - 11 1 19 5 - <_> - 1 - - 13 5 6 12 - <_> - 3 - - 17 27 6 3 - <_> - 1 - - 6 6 20 1 - <_> - 5 - - 20 24 2 10 - <_> - 1 - - 7 21 21 1 - <_> - 3 - - 8 7 8 47 - <_> - 7 - - 26 62 1 1 - <_> - 8 - - 0 61 21 2 - <_> - 5 - - 16 20 13 5 - <_> - 4 - - 15 36 4 1 - <_> - 9 - - 15 34 8 4 - <_> - 0 - - 24 39 3 8 - <_> - 3 - - 10 4 1 53 - <_> - 7 - - 24 8 4 31 - <_> - 1 - - 18 29 4 6 - <_> - 1 - - 19 48 1 11 - <_> - 8 - - 7 36 8 6 - <_> - 2 - - 30 19 1 13 - <_> - 5 - - 21 19 2 20 - <_> - 2 - - 20 16 5 16 - <_> - 4 - - 9 8 18 9 - <_> - 5 - - 5 42 7 5 - <_> - 5 - - 14 40 12 10 - <_> - 5 - - 3 41 7 10 - <_> - 3 - - 7 59 24 1 - <_> - 1 - - 25 31 6 23 - <_> - 8 - - 2 1 14 7 - <_> - 8 - - 12 12 8 3 - <_> - 1 - - 15 53 7 4 - <_> - 8 - - 13 17 5 3 - <_> - 3 - - 7 50 11 6 - <_> - 0 - - 1 21 4 37 - <_> - 4 - - 12 39 8 10 - <_> - 0 - - 12 10 11 6 - <_> - 7 - - 8 8 22 20 - <_> - 2 - - 15 32 3 2 - <_> - 2 - - 14 42 7 2 - <_> - 2 - - 21 25 1 19 - <_> - 3 - - 0 16 6 38 - <_> - 2 - - 21 51 1 9 - <_> - 1 - - 21 45 1 17 - <_> - 9 - - 29 0 2 6 - <_> - 9 - - 8 34 11 10 - <_> - 3 - - 3 45 25 3 - <_> - 8 - - 13 14 4 3 - <_> - 1 - - 19 20 3 15 - <_> - 1 - - 3 11 17 6 - <_> - 4 - - 25 46 5 2 - <_> - 1 - - 13 18 7 7 - <_> - 0 - - 14 49 16 5 - <_> - 2 - - 11 12 12 2 - <_> - 7 - - 5 54 3 3 - <_> - 4 - - 1 47 18 3 - <_> - 2 - - 9 59 15 3 - <_> - 0 - - 19 29 4 24 - <_> - 3 - - 4 56 27 4 - <_> - 3 - - 20 34 1 11 - <_> - 0 - - 10 30 3 31 - <_> - 4 - - 22 23 6 28 - <_> - 3 - - 4 24 23 25 - <_> - 3 - - 6 22 10 5 - <_> - 4 - - 1 20 15 15 - <_> - 1 - - 28 13 2 24 - <_> - 1 - - 9 56 16 1 - <_> - 3 - - 13 21 3 10 - <_> - 7 - - 7 62 3 1 - <_> - 8 - - 14 12 3 4 - <_> - 7 - - 16 46 2 3 - <_> - 1 - - 2 49 9 12 - <_> - 3 - - 8 7 6 23 - <_> - 1 - - 22 0 2 29 - <_> - 5 - - 0 1 30 2 - <_> - 0 - - 14 41 1 18 - <_> - 5 - - 27 36 3 27 - <_> - 3 - - 15 45 12 18 - <_> - 3 - - 8 49 19 7 - <_> - 1 - - 9 28 5 7 - <_> - 4 - - 27 24 3 10 - <_> - 8 - - 9 62 7 1 - <_> - 8 - - 17 13 2 4 - <_> - 2 - - 22 42 1 13 - <_> - 9 - - 15 17 2 5 - <_> - 9 - - 26 9 1 17 - <_> - 9 - - 6 35 3 9 - <_> - 5 - - 4 62 7 1 - <_> - 7 - - 18 53 11 1 - <_> - 7 - - 10 61 1 1 - <_> - 1 - - 15 33 5 21 - <_> - 0 - - 20 23 5 22 - <_> - 2 - - 10 2 4 50 - <_> - 0 - - 13 25 5 7 - <_> - 2 - - 11 25 16 21 - <_> - 1 - - 14 11 8 9 - <_> - 7 - - 5 1 3 13 - <_> - 1 - - 6 43 3 18 - <_> - 2 - - 8 44 12 6 - <_> - 4 - - 9 18 5 8 - <_> - 9 - - 10 41 12 4 - <_> - 2 - - 20 17 2 14 - <_> - 8 - - 16 12 1 5 - <_> - 0 - - 0 48 3 7 - <_> - 3 - - 11 9 15 7 - <_> - 3 - - 4 53 19 6 - <_> - 5 - - 13 9 8 5 - <_> - 4 - - 28 39 2 3 - <_> - 4 - - 15 42 4 4 - <_> - 3 - - 7 38 11 14 - <_> - 8 - - 14 5 1 3 - <_> - 1 - - 13 21 6 2 - <_> - 7 - - 12 24 9 6 - <_> - 1 - - 11 53 10 4 - <_> - 9 - - 3 32 3 9 - <_> - 4 - - 21 58 9 5 - <_> - 2 - - 8 12 19 2 - <_> - 1 - - 15 53 3 9 - <_> - 3 - - 19 58 3 2 - <_> - 1 - - 17 43 4 9 - <_> - 2 - - 0 42 30 2 - <_> - 7 - - 9 0 8 12 - <_> - 5 - - 1 39 8 11 - <_> - 5 - - 21 2 1 52 - <_> - 3 - - 27 37 4 5 - <_> - 2 - - 19 54 8 7 - <_> - 4 - - 14 8 5 1 - <_> - 5 - - 26 38 4 12 - <_> - 1 - - 22 45 1 13 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 12 17 4 3 - <_> - 8 - - 9 7 5 1 - <_> - 0 - - 13 42 7 1 - <_> - 2 - - 14 18 7 15 - <_> - 4 - - 11 38 10 3 - <_> - 4 - - 10 8 14 4 - <_> - 5 - - 11 45 2 7 - <_> - 9 - - 13 2 12 4 - <_> - 9 - - 15 16 8 6 - <_> - 9 - - 11 8 7 6 - <_> - 2 - - 15 60 15 1 - <_> - 2 - - 7 50 13 2 - <_> - 1 - - 1 33 29 2 - <_> - 5 - - 12 33 4 5 - <_> - 1 - - 11 53 10 4 - <_> - 4 - - 18 3 3 50 - <_> - 2 - - 6 59 20 3 - <_> - 2 - - 17 12 9 24 - <_> - 0 - - 3 34 1 14 - <_> - 3 - - 26 34 3 18 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 16 11 7 3 - <_> - 8 - - 20 39 2 4 - <_> - 4 - - 10 18 16 5 - <_> - 1 - - 16 11 4 7 - <_> - 5 - - 13 61 15 2 - <_> - 8 - - 17 11 1 2 - <_> - 1 - - 18 17 2 9 - <_> - 4 - - 6 53 19 3 - <_> - 3 - - 8 13 8 7 - <_> - 0 - - 7 15 9 7 - <_> - 9 - - 15 26 4 9 - <_> - 3 - - 23 39 2 24 - <_> - 0 - - 13 36 13 2 - <_> - 5 - - 17 40 8 16 - <_> - 5 - - 15 3 11 1 - <_> - 5 - - 5 53 22 8 - <_> - 5 - - 9 25 2 11 - <_> - 2 - - 2 51 17 6 - <_> - 2 - - 13 53 4 3 - <_> - 5 - - 13 30 4 1 - <_> - 9 - - 27 55 1 5 - <_> - 5 - - 1 58 17 2 - <_> - 0 - - 7 44 13 6 - <_> - 5 - - 19 19 7 3 - <_> - 7 - - 26 18 1 4 - <_> - 7 - - 25 1 4 18 - <_> - 7 - - 22 53 6 2 - <_> - 5 - - 6 37 20 18 - <_> - 1 - - 12 62 12 1 - <_> - 1 - - 15 53 7 4 - <_> - 1 - - 26 61 1 2 - <_> - 1 - - 14 46 4 4 - <_> - 3 - - 8 42 6 15 - <_> - 0 - - 12 43 2 6 - <_> - 2 - - 17 19 1 8 - <_> - 0 - - 17 19 2 2 - <_> - 3 - - 5 22 10 4 - <_> - 2 - - 13 36 1 19 - <_> - 2 - - 11 35 14 4 - <_> - 4 - - 3 57 27 6 - <_> - 8 - - 6 52 24 2 - <_> - 5 - - 13 9 8 6 - <_> - 9 - - 15 20 3 16 - <_> - 0 - - 21 6 4 4 - <_> - 5 - - 11 56 12 1 - <_> - 8 - - 15 5 1 25 - <_> - 9 - - 30 1 1 2 - <_> - 5 - - 13 15 2 10 - <_> - 5 - - 4 10 19 20 - <_> - 7 - - 11 60 2 3 - <_> - 9 - - 16 18 2 1 - <_> - 9 - - 24 28 3 10 - <_> - 1 - - 12 24 6 2 - <_> - 1 - - 14 5 6 28 - <_> - 7 - - 14 36 1 3 - <_> - 1 - - 18 5 4 40 - <_> - 0 - - 12 50 16 6 - <_> - 1 - - 2 0 11 5 - <_> - 3 - - 21 45 1 10 - <_> - 2 - - 14 49 10 2 - <_> - 2 - - 4 32 2 8 - <_> - 8 - - 29 25 2 38 - <_> - 4 - - 1 13 19 8 - <_> - 3 - - 0 37 25 24 - <_> - 0 - - 9 11 20 3 - <_> - 4 - - 7 34 14 3 - <_> - 3 - - 28 56 1 5 - <_> - 4 - - 10 20 17 14 - <_> - 1 - - 8 55 18 1 - <_> - 8 - - 16 61 7 2 - <_> - 4 - - 16 48 13 10 - <_> - 8 - - 12 12 8 3 - <_> - 5 - - 17 18 9 12 - <_> - 9 - - 12 35 9 11 - <_> - 3 - - 3 19 8 23 - <_> - 4 - - 28 15 3 36 - <_> - 1 - - 26 6 2 18 - <_> - 0 - - 3 54 3 4 - <_> - 0 - - 13 50 3 7 - <_> - 7 - - 17 32 2 3 - <_> - 5 - - 8 56 17 4 - <_> - 4 - - 0 29 13 10 - <_> - 1 - - 13 14 13 3 - <_> - 3 - - 10 15 1 42 - <_> - 7 - - 30 13 1 6 - <_> - 2 - - 17 28 1 9 - <_> - 5 - - 20 12 4 28 - <_> - 0 - - 4 45 26 18 - <_> - 5 - - 15 0 11 13 - <_> - 1 - - 13 20 1 4 - <_> - 0 - - 16 8 7 54 - <_> - 3 - - 8 53 12 1 - <_> - 9 - - 15 57 2 5 - <_> - 8 - - 29 37 1 6 - <_> - 0 - - 12 0 1 12 - <_> - 8 - - 11 13 5 1 - <_> - 2 - - 7 35 3 2 - <_> - 8 - - 4 15 10 6 - <_> - 5 - - 19 56 7 5 - <_> - 1 - - 20 49 9 5 - <_> - 5 - - 16 48 15 8 - <_> - 1 - - 17 45 2 3 - <_> - 1 - - 1 10 15 2 - <_> - 8 - - 14 5 1 3 - <_> - 8 - - 3 23 28 14 - <_> - 4 - - 16 51 10 4 - <_> - 9 - - 18 40 1 7 - <_> - 4 - - 15 36 4 1 - <_> - 5 - - 15 46 13 8 - <_> - 4 - - 7 54 11 1 - <_> - 3 - - 2 55 18 5 - <_> - 2 - - 9 52 10 8 - <_> - 4 - - 13 30 5 7 - <_> - 8 - - 17 13 2 4 - <_> - 1 - - 17 16 1 5 - <_> - 8 - - 22 6 5 12 - <_> - 3 - - 15 13 12 27 - <_> - 2 - - 11 11 12 6 - <_> - 1 - - 10 62 16 1 - <_> - 4 - - 12 47 11 1 - <_> - 1 - - 25 12 5 15 - <_> - 0 - - 21 26 4 8 - <_> - 3 - - 13 21 3 10 - <_> - 2 - - 17 3 4 15 - <_> - 2 - - 15 37 3 10 - <_> - 7 - - 2 55 14 2 - <_> - 2 - - 12 37 3 4 - <_> - 7 - - 16 11 1 1 - <_> - 7 - - 2 56 21 3 - <_> - 1 - - 4 20 20 8 - <_> - 3 - - 8 27 6 28 - <_> - 2 - - 16 58 1 5 - <_> - 9 - - 11 19 9 1 - <_> - 1 - - 28 45 2 9 - <_> - 8 - - 17 11 1 2 - <_> - 0 - - 3 39 4 10 - <_> - 3 - - 15 10 11 7 - <_> - 1 - - 11 8 12 1 - <_> - 4 - - 2 38 18 24 - <_> - 1 - - 12 54 17 1 - <_> - 1 - - 14 56 14 1 - <_> - 7 - - 25 18 2 14 - <_> - 4 - - 25 0 3 6 - <_> - 0 - - 17 18 3 1 - <_> - 9 - - 1 8 25 3 - <_> - 4 - - 8 14 7 4 - <_> - 4 - - 18 32 2 26 - <_> - 2 - - 12 41 13 15 - <_> - 2 - - 5 24 11 2 - <_> - 9 - - 13 39 5 1 - <_> - 9 - - 1 36 13 3 - <_> - 2 - - 21 8 4 8 - <_> - 5 - - 16 5 9 17 - <_> - 5 - - 6 37 22 26 - <_> - 0 - - 27 49 2 1 - <_> - 3 - - 6 37 15 10 - <_> - 5 - - 19 38 1 5 - <_> - 9 - - 13 24 2 5 - <_> - 8 - - 14 9 4 13 - <_> - 2 - - 10 38 12 2 - <_> - 8 - - 8 3 3 12 - <_> - 3 - - 2 56 12 1 - <_> - 8 - - 14 12 3 4 - <_> - 2 - - 14 23 3 6 - <_> - 1 - - 10 37 5 1 - <_> - 1 - - 6 53 7 4 - <_> - 4 - - 7 39 11 12 - <_> - 3 - - 6 11 9 11 - <_> - 7 - - 18 2 2 10 - <_> - 4 - - 10 21 2 5 - <_> - 0 - - 29 31 1 1 - <_> - 1 - - 16 7 4 26 - <_> - 5 - - 23 48 7 12 - <_> - 1 - - 18 19 1 5 - <_> - 4 - - 19 24 12 21 - <_> - 4 - - 20 5 8 39 - <_> - 1 - - 7 14 17 4 - <_> - 5 - - 7 44 3 17 - <_> - 1 - - 14 52 5 6 - <_> - 7 - - 15 24 2 18 - <_> - 9 - - 14 18 3 9 - <_> - 9 - - 11 61 8 1 - <_> - 5 - - 11 15 5 3 - <_> - 5 - - 2 18 22 3 - <_> - 4 - - 8 60 7 3 - <_> - 2 - - 6 50 11 4 - <_> - 1 - - 13 55 18 3 - <_> - 2 - - 20 58 2 2 - <_> - 9 - - 30 39 1 3 - <_> - 5 - - 13 26 5 4 - <_> - 0 - - 19 15 3 20 - <_> - 0 - - 14 6 2 52 - <_> - 4 - - 11 36 10 5 - <_> - 4 - - 22 31 1 27 - <_> - 4 - - 13 7 5 4 - <_> - 1 - - 13 5 6 12 - <_> - 4 - - 9 12 3 20 - <_> - 5 - - 10 38 14 3 - <_> - 4 - - 13 41 10 22 - <_> - 4 - - 10 41 11 2 - <_> - 1 - - 14 54 6 8 - <_> - 4 - - 19 3 1 51 - <_> - 0 - - 14 28 5 5 - <_> - 0 - - 10 28 18 6 - <_> - 4 - - 0 6 21 52 - <_> - 3 - - 16 33 4 4 - <_> - 3 - - 10 15 1 42 - <_> - 3 - - 28 33 2 10 - <_> - 5 - - 0 47 13 2 - <_> - 8 - - 14 9 6 8 - <_> - 4 - - 10 52 13 3 - <_> - 8 - - 19 41 2 1 - <_> - 2 - - 9 49 20 1 - <_> - 0 - - 13 57 18 1 - <_> - 7 - - 4 51 20 7 - <_> - 4 - - 22 29 6 7 - <_> - 3 - - 8 59 15 4 - <_> - 2 - - 29 59 1 1 - <_> - 9 - - 27 6 4 3 - <_> - 0 - - 14 18 2 4 - <_> - 9 - - 18 2 1 37 - <_> - 2 - - 11 4 8 13 - <_> - 8 - - 25 62 5 1 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 3 62 28 1 - <_> - 0 - - 5 48 17 2 - <_> - 4 - - 15 39 6 14 - <_> - 5 - - 5 62 10 1 - <_> - 7 - - 5 52 26 2 - <_> - 3 - - 19 20 3 7 - <_> - 2 - - 15 14 2 6 - <_> - 5 - - 6 24 4 22 - <_> - 4 - - 12 45 6 6 - <_> - 1 - - 18 55 2 2 - <_> - 4 - - 9 4 14 43 - <_> - 3 - - 10 8 10 12 - <_> - 5 - - 21 1 1 36 - <_> - 7 - - 7 24 2 14 - <_> - 0 - - 13 35 8 16 - <_> - 3 - - 21 45 1 10 - <_> - 2 - - 12 33 7 23 - <_> - 0 - - 22 40 4 9 - <_> - 1 - - 18 20 3 7 - <_> - 1 - - 2 12 20 4 - <_> - 1 - - 7 20 11 3 - <_> - 8 - - 12 12 8 3 - <_> - 1 - - 2 1 27 2 - <_> - 8 - - 11 51 7 12 - <_> - 7 - - 13 12 10 1 - <_> - 9 - - 16 18 2 1 - <_> - 9 - - 30 4 1 1 - <_> - 0 - - 12 10 11 6 - <_> - 4 - - 1 40 28 20 - <_> - 7 - - 5 62 8 1 - <_> - 1 - - 14 53 3 9 - <_> - 5 - - 7 50 5 7 - <_> - 0 - - 16 17 4 5 - <_> - 2 - - 19 54 8 5 - <_> - 3 - - 6 22 10 5 - <_> - 9 - - 10 38 2 9 - <_> - 0 - - 13 25 5 7 - <_> - 0 - - 16 24 11 19 - <_> - 7 - - 30 43 1 7 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 16 42 1 11 - <_> - 1 - - 27 37 4 23 - <_> - 3 - - 10 15 1 42 - <_> - 4 - - 11 22 1 10 - <_> - 1 - - 14 6 5 8 - <_> - 0 - - 1 48 3 1 - <_> - 0 - - 16 50 12 2 - <_> - 1 - - 3 45 5 5 - <_> - 8 - - 29 36 1 20 - <_> - 7 - - 3 26 21 19 - <_> - 8 - - 30 22 1 6 - <_> - 4 - - 12 42 8 8 - <_> - 5 - - 19 5 4 46 - <_> - 5 - - 23 36 4 20 - <_> - 1 - - 15 52 2 5 - <_> - 4 - - 9 29 11 7 - <_> - 0 - - 27 35 1 1 - <_> - 0 - - 13 33 1 8 - <_> - 3 - - 10 38 7 3 - <_> - 3 - - 23 45 4 4 - <_> - 2 - - 17 37 2 17 - <_> - 7 - - 16 11 1 1 - <_> - 3 - - 18 0 8 36 - <_> - 1 - - 26 8 5 20 - <_> - 4 - - 10 59 13 1 - <_> - 4 - - 24 7 6 14 - <_> - 4 - - 13 8 10 5 - <_> - 2 - - 0 42 2 10 - <_> - 7 - - 2 12 18 1 - <_> - 1 - - 9 56 8 1 - <_> - 1 - - 18 17 2 9 - <_> - 8 - - 14 9 4 13 - <_> - 2 - - 17 13 6 14 - <_> - 0 - - 10 35 1 23 - <_> - 2 - - 24 10 3 21 - <_> - 3 - - 6 19 5 34 - <_> - 1 - - 7 45 1 4 - <_> - 2 - - 16 19 2 6 - <_> - 3 - - 24 14 2 30 - <_> - 9 - - 12 61 16 1 - <_> - 5 - - 23 27 4 10 - <_> - 5 - - 4 62 7 1 - <_> - 3 - - 3 49 10 6 - <_> - 9 - - 17 32 1 5 - <_> - 9 - - 30 4 1 1 - <_> - 3 - - 27 18 1 4 - <_> - 4 - - 12 1 11 46 - <_> - 1 - - 11 8 13 1 - <_> - 1 - - 0 9 16 1 - <_> - 2 - - 9 22 16 24 - <_> - 3 - - 16 32 4 7 - <_> - 0 - - 17 25 8 21 - <_> - 0 - - 3 55 22 6 - <_> - 3 - - 17 1 1 6 - <_> - 5 - - 13 9 8 5 - <_> - 9 - - 19 28 1 18 - <_> - 1 - - 11 55 2 7 - <_> - 1 - - 13 13 12 5 - <_> - 4 - - 8 60 7 3 - <_> - 0 - - 11 38 4 12 - <_> - 4 - - 12 34 6 15 - <_> - 5 - - 8 40 4 22 - <_> - 1 - - 22 45 1 13 - <_> - 5 - - 3 33 10 19 - <_> - 0 - - 29 45 2 7 - <_> - 0 - - 17 51 7 5 - <_> - 3 - - 15 53 2 1 - <_> - 4 - - 5 59 3 4 - <_> - 8 - - 17 13 2 4 - <_> - 1 - - 2 1 27 2 - <_> - 8 - - 10 42 14 13 - <_> - 1 - - 10 4 7 14 - <_> - 4 - - 11 25 11 10 - <_> - 9 - - 11 19 9 1 - <_> - 9 - - 12 1 13 12 - <_> - 1 - - 11 19 1 4 - <_> - 9 - - 14 7 5 12 - <_> - 8 - - 10 23 2 5 - <_> - 5 - - 16 23 1 10 - <_> - 2 - - 8 62 20 1 - <_> - 4 - - 9 16 16 3 - <_> - 7 - - 29 27 1 11 - <_> - 7 - - 3 60 28 3 - <_> - 4 - - 15 44 2 2 - <_> - 5 - - 16 62 1 1 - <_> - 8 - - 17 21 1 4 - <_> - 0 - - 18 33 9 11 - <_> - 3 - - 17 35 3 5 - <_> - 2 - - 10 51 8 5 - <_> - 3 - - 28 40 3 7 - <_> - 7 - - 21 42 1 18 - <_> - 9 - - 16 18 2 1 - <_> - 2 - - 20 15 1 8 - <_> - 4 - - 14 8 5 1 - <_> - 5 - - 14 0 12 17 - <_> - 4 - - 9 18 5 8 - <_> - 8 - - 12 9 6 12 - <_> - 9 - - 26 32 1 7 - <_> - 8 - - 0 14 1 8 - <_> - 7 - - 4 1 14 16 - <_> - 2 - - 11 62 10 1 - <_> - 3 - - 2 18 12 10 - <_> - 7 - - 29 22 2 2 - <_> - 3 - - 13 15 13 15 - <_> - 9 - - 12 38 5 1 - <_> - 2 - - 8 35 6 11 - <_> - 7 - - 6 36 14 2 - <_> - 4 - - 13 36 3 4 - <_> - 0 - - 7 19 22 6 - <_> - 2 - - 15 41 4 15 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 12 24 8 1 - <_> - 0 - - 6 55 6 1 - <_> - 8 - - 13 17 5 3 - <_> - 8 - - 12 12 8 3 - <_> - 2 - - 24 44 3 7 - <_> - 0 - - 2 39 16 2 - <_> - 1 - - 15 54 1 3 - <_> - 9 - - 17 17 1 14 - <_> - 8 - - 13 56 1 1 - <_> - 1 - - 11 19 11 1 - <_> - 3 - - 30 3 1 43 - <_> - 7 - - 15 57 12 1 - <_> - 2 - - 29 32 2 26 - <_> - 7 - - 16 38 2 4 - <_> - 0 - - 21 25 1 16 - <_> - 0 - - 4 46 2 7 - <_> - 7 - - 26 13 5 4 - <_> - 3 - - 0 48 17 9 - <_> - 1 - - 12 32 5 20 - <_> - 2 - - 10 57 10 4 - <_> - 7 - - 24 49 2 2 - <_> - 3 - - 15 25 4 8 - <_> - 0 - - 11 11 9 6 - <_> - 4 - - 18 18 1 33 - <_> - 3 - - 10 0 5 29 - <_> - 2 - - 18 13 7 9 - <_> - 4 - - 2 59 13 4 - <_> - 1 - - 15 53 7 4 - <_> - 2 - - 11 49 16 2 - <_> - 3 - - 4 56 15 3 - <_> - 4 - - 19 21 6 38 - <_> - 1 - - 6 53 7 4 - <_> - 5 - - 14 19 1 9 - <_> - 2 - - 13 22 11 17 - <_> - 1 - - 14 7 3 12 - <_> - 1 - - 13 20 1 4 - <_> - 4 - - 5 19 4 14 - <_> - 4 - - 9 35 3 8 - <_> - 8 - - 16 12 1 5 - <_> - 9 - - 29 62 2 1 - <_> - 8 - - 18 51 1 5 - <_> - 2 - - 13 58 13 1 - <_> - 2 - - 6 50 16 3 - <_> - 7 - - 15 27 5 2 - <_> - 5 - - 0 43 11 13 - <_> - 2 - - 7 29 3 16 - <_> - 3 - - 11 42 7 6 - <_> - 4 - - 18 39 1 2 - <_> - 2 - - 21 55 10 2 - <_> - 0 - - 27 37 4 2 - <_> - 0 - - 13 37 15 7 - <_> - 1 - - 1 28 26 18 - <_> - 0 - - 12 38 1 6 - <_> - 5 - - 14 9 9 4 - <_> - 7 - - 18 8 7 2 - <_> - 2 - - 18 6 13 1 - <_> - 7 - - 8 59 23 2 - <_> - 5 - - 1 57 29 5 - <_> - 8 - - 6 20 23 7 - <_> - 1 - - 12 53 4 10 - <_> - 0 - - 13 14 2 12 - <_> - 8 - - 10 62 7 1 - <_> - 9 - - 30 33 1 3 - <_> - 7 - - 15 12 2 5 - <_> - 9 - - 17 14 2 38 - <_> - 5 - - 20 17 1 25 - <_> - 1 - - 11 0 5 1 - <_> - 0 - - 19 37 5 23 - <_> - 7 - - 2 5 1 27 - <_> - 2 - - 22 48 1 9 - <_> - 5 - - 18 25 2 13 - <_> - 3 - - 8 11 6 20 - <_> - 1 - - 0 29 27 1 - <_> - 3 - - 15 21 2 9 - <_> - 2 - - 16 37 13 18 - <_> - 0 - - 2 38 3 21 - <_> - 5 - - 14 31 3 21 - <_> - 4 - - 10 8 7 16 - <_> - 1 - - 7 29 21 12 - <_> - 1 - - 25 47 4 14 - - diff --git a/data/softcascade/soft-cascade-17.12.2012.xml b/data/softcascade/soft-cascade-17.12.2012.xml deleted file mode 100644 index 53b331771b..0000000000 --- a/data/softcascade/soft-cascade-17.12.2012.xml +++ /dev/null @@ -1,61409 +0,0 @@ - - - - - - - - - BOOST - ICF - 2 - 64 - 128 - 4 - - <_> - -1 - 1024 - - <_> - -9.5012789964675903e-01 - - 1 2 0 1.8500000000000000e+01 0 -1 1 4.3500000000000000e+01 - -2 -3 2 1.9450000000000000e+02 - - -9.5012789964675903e-01 -2.9720270633697510e-01 - -2.9430621862411499e-01 7.3214149475097656e-01 - <_> - -1.8469017744064331e+00 - - 1 2 3 1.8500000000000000e+01 0 -1 4 2.2500000000000000e+01 - -2 -3 5 7.5000000000000000e+00 - - -8.9677393436431885e-01 -1.8941508233547211e-01 - 7.5006955862045288e-01 -3.4874141216278076e-01 - <_> - -1.9278457164764404e+00 - - 1 2 6 2.5000000000000000e+00 0 -1 7 3.5000000000000000e+00 - -2 -3 8 7.6500000000000000e+01 - - -5.5432754755020142e-01 6.0192030668258667e-01 - -8.6220905184745789e-02 -7.8830271959304810e-01 - <_> - -2.0459990501403809e+00 - - 1 2 9 2.8050000000000000e+02 0 -1 10 3.0500000000000000e+01 - -2 -3 11 2.0650000000000000e+02 - - -7.6523125171661377e-01 6.2897056341171265e-01 - -6.1464875936508179e-01 1.4870776236057281e-01 - <_> - -1.9268010854721069e+00 - - 1 2 12 2.5000000000000000e+00 0 -1 13 1.3950000000000000e+02 - -2 -3 14 4.2500000000000000e+01 - - 5.1907974481582642e-01 -6.7812407016754150e-01 - -5.7240998744964600e-01 -3.5707135684788227e-03 - <_> - -2.0900535583496094e+00 - - 1 2 15 6.5000000000000000e+00 0 -1 16 15. -2 -3 17 - 5.5000000000000000e+00 - - -9.2232090234756470e-01 9.2363566160202026e-01 - -4.0120652318000793e-01 2.3156598210334778e-01 - <_> - -1.7761936187744141e+00 - - 1 2 18 5.0000000000000000e-01 0 -1 19 9.5000000000000000e+00 - -2 -3 20 5.3750000000000000e+02 - - -9.7140210866928101e-01 3.4920582175254822e-01 - 3.1386005878448486e-01 -4.9332338571548462e-01 - <_> - -2.0153183937072754e+00 - - 1 2 21 1.7500000000000000e+01 0 -1 22 6.8500000000000000e+01 - -2 -3 23 1.6500000000000000e+01 - - -2.3912493884563446e-01 3.3838593959808350e-01 - -7.1801131963729858e-01 5.3687918186187744e-01 - <_> - -2.1310541629791260e+00 - - 1 2 24 2.3450000000000000e+02 0 -1 25 1.0500000000000000e+01 - -2 -3 26 1.9500000000000000e+01 - - -1.1573559045791626e-01 5.1111555099487305e-01 - -2.8667950630187988e-01 -9.5794141292572021e-01 - <_> - -2.2023301124572754e+00 - - 1 2 27 1.3850000000000000e+02 0 -1 28 452. -2 -3 29 - 7.5000000000000000e+00 - - -1.5731714665889740e-01 6.3469970226287842e-01 - -8.0850583314895630e-01 -7.1276061236858368e-02 - <_> - -1.6770468950271606e+00 - - 1 2 30 6.5000000000000000e+00 0 -1 31 4.5000000000000000e+00 - -2 -3 32 5.0000000000000000e-01 - - 5.2528321743011475e-01 -7.8995868563652039e-02 - 9.5720395445823669e-02 -5.6723904609680176e-01 - <_> - -1.3941235542297363e+00 - - 1 2 33 3.5000000000000000e+00 0 -1 34 1.4500000000000000e+01 - -2 -3 35 2.5000000000000000e+00 - - -5.7468622922897339e-01 2.0731732249259949e-01 - 5.8709150552749634e-01 -2.1824225783348083e-02 - <_> - -1.5158585309982300e+00 - - 1 2 36 3.8750000000000000e+02 0 -1 37 9.7750000000000000e+02 - -2 -3 38 1.9650000000000000e+02 - - -5.8788299560546875e-01 6.3032716512680054e-01 - 4.9424678087234497e-01 -1.3836935162544250e-01 - <_> - -1.0430263280868530e+00 - - 1 2 39 5.5000000000000000e+00 0 -1 40 1.7350000000000000e+02 - -2 -3 41 9.5000000000000000e+00 - - 4.9170929193496704e-01 -7.5231981277465820e-01 - 4.7283220291137695e-01 -1.1902561783790588e-01 - <_> - -1.1032968759536743e+00 - - 1 2 42 2.5000000000000000e+00 0 -1 43 1.3500000000000000e+01 - -2 -3 44 1.1500000000000000e+01 - - -3.6969792842864990e-01 3.7228900194168091e-01 - 5.8657836914062500e-01 -1.9372792541980743e-01 - <_> - -1.5280647277832031e+00 - - 1 2 45 2.8150000000000000e+02 0 -1 46 4.2450000000000000e+02 - -2 -3 47 2.1250000000000000e+02 - - -5.8411449193954468e-02 7.8837996721267700e-01 - -4.7494259476661682e-01 2.8464019298553467e-01 - <_> - -1.0321290493011475e+00 - - 1 2 48 1.5000000000000000e+00 0 -1 49 4.5000000000000000e+00 - -2 -3 50 5.5950000000000000e+02 - - -6.0609322786331177e-01 4.9593561887741089e-01 - 1.8881231546401978e-01 -4.0145736932754517e-01 - <_> - -9.3644380569458008e-01 - - 1 2 51 7.5000000000000000e+00 0 -1 52 1.4500000000000000e+01 - -2 -3 53 6.5000000000000000e+00 - - -4.1585260629653931e-01 2.4648176133632660e-01 - 5.6837874650955200e-01 -1.3694801926612854e-01 - <_> - -1.0617676973342896e+00 - - 1 2 54 4.5000000000000000e+00 0 -1 55 1.2500000000000000e+01 - -2 -3 56 5.0000000000000000e-01 - - -4.3339017033576965e-01 4.7121417522430420e-01 - 1.8128056824207306e-01 -5.1285779476165771e-01 - <_> - -6.2032651901245117e-01 - - 1 2 57 1.5000000000000000e+00 0 -1 58 1.5000000000000000e+00 - -2 -3 59 2.7500000000000000e+01 - - -6.2779033184051514e-01 1.0640925168991089e-01 - 4.6505826711654663e-01 -1.6317188739776611e-01 - <_> - -6.5824747085571289e-01 - - 1 2 60 7.5000000000000000e+00 0 -1 61 167. -2 -3 62 - 1.8250000000000000e+02 - - 2.4175660312175751e-01 -5.8483225107192993e-01 - 2.0644801855087280e-01 -8.0665886402130127e-01 - <_> - -7.1831238269805908e-01 - - 1 2 63 6.9500000000000000e+01 0 -1 64 7.6500000000000000e+01 - -2 -3 65 4.5000000000000000e+00 - - 7.2556771337985992e-02 -6.5026998519897461e-01 - 5.9127175807952881e-01 -6.0064859688282013e-02 - <_> - -3.6641231179237366e-01 - - 1 2 66 2.5000000000000000e+00 0 -1 67 9.5000000000000000e+00 - -2 -3 68 5.0000000000000000e-01 - - 1. -8.7841242551803589e-01 5.2141785621643066e-01 - -7.7443666756153107e-02 - <_> - -5.2976346015930176e-01 - - 1 2 69 5.5000000000000000e+00 0 -1 70 4.5000000000000000e+00 - -2 -3 71 5.5000000000000000e+00 - - -3.3286893367767334e-01 3.1164222955703735e-01 - -6.4843946695327759e-01 -9.4713028520345688e-03 - <_> - -1.0462005436420441e-01 - - 1 2 72 2.5000000000000000e+00 0 -1 73 2.2500000000000000e+01 - -2 -3 74 3.9550000000000000e+02 - - -2.2241120040416718e-01 4.2514342069625854e-01 - -6.2022697925567627e-01 -2.1613531280308962e-03 - <_> - -4.1905093193054199e-01 - - 1 2 75 5.0000000000000000e-01 0 -1 76 1.0500000000000000e+01 - -2 -3 77 5.0000000000000000e-01 - - -7.3456168174743652e-01 5.1736986637115479e-01 - 3.2318654656410217e-01 -3.1443089246749878e-01 - <_> - -2.1851119399070740e-01 - - 1 2 78 3.1050000000000000e+02 0 -1 79 3.8150000000000000e+02 - -2 -3 80 8.0850000000000000e+02 - - -5.4317831993103027e-01 2.3649862408638000e-01 - 4.4128182530403137e-01 -7.1100425720214844e-01 - <_> - -1.1222758144140244e-01 - - 1 2 81 1.3650000000000000e+02 0 -1 82 3.7750000000000000e+02 - -2 -3 83 2.6650000000000000e+02 - - 4.9750706553459167e-01 -6.6604055464267731e-02 - 4.3410289287567139e-01 -8.9592015743255615e-01 - <_> - -8.8000379502773285e-02 - - 1 2 84 2.5000000000000000e+00 0 -1 85 1.4500000000000000e+01 - -2 -3 86 2.0850000000000000e+02 - - -9.6911776065826416e-01 1. -1.3952983915805817e-01 - 3.3815029263496399e-01 - <_> - -1.5849213302135468e-01 - - 1 2 87 7.7500000000000000e+01 0 -1 88 5.9500000000000000e+01 - -2 -3 89 1.7500000000000000e+01 - - -8.0255717039108276e-01 6.2929701805114746e-01 - -2.9795819520950317e-01 4.0392214059829712e-01 - <_> - 1.6327178478240967e-01 - - 1 2 90 3.9550000000000000e+02 0 -1 91 1.0489500000000000e+04 - -2 -3 92 5.0000000000000000e-01 - - -9.4078457355499268e-01 7.8851234912872314e-01 - 2.0467810332775116e-01 -3.1230095028877258e-01 - <_> - 4.3822142481803894e-01 - - 1 2 93 5.0000000000000000e-01 0 -1 94 1.2500000000000000e+01 - -2 -3 95 1.5000000000000000e+00 - - -5.5812388658523560e-01 4.5648851990699768e-01 - 4.5675429701805115e-01 -1.3456618785858154e-01 - <_> - 3.4469082951545715e-01 - - 1 2 96 3.5000000000000000e+00 0 -1 97 3.6500000000000000e+01 - -2 -3 98 2.5000000000000000e+00 - - -3.0035567283630371e-01 5.0112813711166382e-01 - -8.6166876554489136e-01 3.7724488973617554e-01 - <_> - 5.6956720352172852e-01 - - 1 2 99 1.0550000000000000e+02 0 -1 100 - 1.2500000000000000e+01 -2 -3 101 2.5000000000000000e+00 - - 2.2487638890743256e-01 -4.5224958658218384e-01 - 3.0894690752029419e-01 -7.5535982847213745e-01 - <_> - 2.1666103601455688e-01 - - 1 2 102 2.8500000000000000e+01 0 -1 103 - 3.5000000000000000e+00 -2 -3 104 1.7500000000000000e+01 - - -3.5290616750717163e-01 1.8281166255474091e-01 - -7.3649674654006958e-01 5.4959553480148315e-01 - <_> - 5.0689119100570679e-01 - - 1 2 105 3.5000000000000000e+00 0 -1 106 5237. -2 -3 107 - 5.0000000000000000e-01 - - 2.9023018479347229e-01 -5.4936188459396362e-01 - 3.6571535468101501e-01 -5.0305444002151489e-01 - <_> - 5.0967818498611450e-01 - - 1 2 108 1.5500000000000000e+01 0 -1 109 - 4.5000000000000000e+00 -2 -3 110 1.0250000000000000e+02 - - -6.5840584039688110e-01 5.8356761932373047e-01 - -3.6643344163894653e-01 2.2655297815799713e-01 - <_> - 9.0086126327514648e-01 - - 1 2 111 1.0500000000000000e+01 0 -1 112 - 5.0000000000000000e-01 -2 -3 113 1.2635000000000000e+03 - - 5.0495159626007080e-01 -4.8832163214683533e-02 - 2.2899670898914337e-01 -4.9697116017341614e-01 - <_> - 8.7307834625244141e-01 - - 1 2 114 2.9150000000000000e+02 0 -1 115 - 5.5000000000000000e+00 -2 -3 116 9.7500000000000000e+01 - - -7.9401218891143799e-01 -8.0010555684566498e-02 - 5.7397758960723877e-01 -2.7782956138253212e-02 - <_> - 1.0845705270767212e+00 - - 1 2 117 5.0000000000000000e-01 0 -1 118 284. -2 -3 119 - 2.5000000000000000e+00 - - 8.4017835557460785e-02 -9.6925717592239380e-01 - 3.7892198562622070e-01 -1.2604229152202606e-01 - <_> - 1.1155402660369873e+00 - - 1 2 120 1.5450000000000000e+02 0 -1 121 - 1.5000000000000000e+00 -2 -3 122 1592. - - 1.7225900292396545e-01 -3.6658996343612671e-01 - 6.2922006845474243e-01 -9.0177220106124878e-01 - <_> - 1.0400385856628418e+00 - - 1 2 123 5.5000000000000000e+00 0 -1 124 - 1.7500000000000000e+01 -2 -3 125 1.0550000000000000e+02 - - -9.7996032238006592e-01 7.8947758674621582e-01 - -7.5501605868339539e-02 4.3294844031333923e-01 - <_> - 1.1339187622070312e+00 - - 1 2 126 9.7500000000000000e+01 0 -1 127 - 2.9250000000000000e+02 -2 -3 128 1.4295000000000000e+03 - - -1.4177480340003967e-01 6.4076822996139526e-01 - 1.1370572447776794e-01 -4.2702060937881470e-01 - <_> - 1.0979689359664917e+00 - - 1 2 129 1.5000000000000000e+00 0 -1 130 - 1.5000000000000000e+00 -2 -3 131 3.2500000000000000e+01 - - -5.7480251789093018e-01 4.6609196066856384e-01 - -7.4496293067932129e-01 -3.5949852317571640e-02 - <_> - 1.0266015529632568e+00 - - 1 2 132 1.6350000000000000e+02 0 -1 133 - 1.1500000000000000e+01 -2 -3 134 1.8850000000000000e+02 - - -7.1367286145687103e-02 4.7941169142723083e-01 - 5.1196765899658203e-01 -9.4453811645507812e-01 - <_> - 9.2505228519439697e-01 - - 1 2 135 2.5000000000000000e+00 0 -1 136 - 2.1500000000000000e+01 -2 -3 137 1.1500000000000000e+01 - - -3.8950824737548828e-01 3.6323049664497375e-01 - 5.6324285268783569e-01 -1.8082305788993835e-01 - <_> - 1.1348617076873779e+00 - - 1 2 138 3.5000000000000000e+00 0 -1 139 - 3.5000000000000000e+00 -2 -3 140 3.6500000000000000e+01 - - -7.0641523599624634e-01 2.0980948209762573e-01 - -5.3471750020980835e-01 7.4605226516723633e-01 - <_> - 1.4714344739913940e+00 - - 1 2 141 1.5000000000000000e+00 0 -1 142 - 3.5000000000000000e+00 -2 -3 143 1.3250000000000000e+02 - - -2.5343874096870422e-01 4.9269351363182068e-01 - 4.8652476072311401e-01 -3.2821950316429138e-01 - <_> - 1.7966657876968384e+00 - - 1 2 144 3.5000000000000000e+00 0 -1 145 1783. -2 -3 146 - 1.2050000000000000e+02 - - 3.2523140311241150e-01 -7.0333176851272583e-01 - -4.5311710238456726e-01 2.2552411258220673e-01 - <_> - 1.7584462165832520e+00 - - 1 2 147 1.0250000000000000e+02 0 -1 148 - 5.0000000000000000e-01 -2 -3 149 2.4500000000000000e+01 - - 8.2317180931568146e-02 -5.6285864114761353e-01 - -6.0523116588592529e-01 4.0714663267135620e-01 - <_> - 1.7976785898208618e+00 - - 1 2 150 3.5000000000000000e+00 0 -1 151 - 5.5000000000000000e+00 -2 -3 152 5.0000000000000000e-01 - - -3.0874970555305481e-01 3.7341198325157166e-01 - 2.7862945199012756e-01 -4.5596393942832947e-01 - <_> - 1.7746678590774536e+00 - - 1 2 153 1.5000000000000000e+00 0 -1 154 - 2.5000000000000000e+00 -2 -3 155 8.5000000000000000e+00 - - -6.1464399099349976e-01 5.8418504893779755e-02 - 5.7755649089813232e-01 -2.3010652512311935e-02 - <_> - 2.0253760814666748e+00 - - 1 2 156 5.0000000000000000e-01 0 -1 157 - 4.0850000000000000e+02 -2 -3 158 3.0500000000000000e+01 - - 6.2876778841018677e-01 -1.9982345402240753e-01 - -3.5285717248916626e-01 3.6293578147888184e-01 - <_> - 1.8680905103683472e+00 - - 1 2 159 7.5000000000000000e+00 0 -1 160 - 2.5000000000000000e+00 -2 -3 161 189. - - 2.4808044731616974e-01 -2.6951324939727783e-01 - 7.8451949357986450e-01 -9.3933510780334473e-01 - <_> - 2.0279662609100342e+00 - - 1 2 162 6.5000000000000000e+00 0 -1 163 100. -2 -3 164 - 8.5500000000000000e+01 - - 7.3292237520217896e-01 -8.0948019027709961e-01 - -6.9746565818786621e-01 1.5987591445446014e-01 - <_> - 1.8203108310699463e+00 - - 1 2 165 3.5000000000000000e+00 0 -1 166 - 5.0000000000000000e-01 -2 -3 167 6.1500000000000000e+01 - - -4.1079363226890564e-01 4.8067408800125122e-01 - -6.4559924602508545e-01 -1.4250530861318111e-02 - <_> - 2.2858772277832031e+00 - - 1 2 168 9.5000000000000000e+00 0 -1 169 - 5.5000000000000000e+00 -2 -3 170 1.5000000000000000e+00 - - -6.8022292852401733e-01 4.7293016314506531e-01 - 7.0228189229965210e-01 -2.0867574959993362e-02 - <_> - 2.4012672901153564e+00 - - 1 2 171 1.7650000000000000e+02 0 -1 172 - 5.3385000000000000e+03 -2 -3 173 6.5000000000000000e+00 - - 1.1539006233215332e-01 -7.8521311283111572e-01 - 5.3917598724365234e-01 -9.2911219596862793e-01 - <_> - 2.3799149990081787e+00 - - 1 2 174 4.7500000000000000e+01 0 -1 175 - 2.5000000000000000e+00 -2 -3 176 1.5000000000000000e+00 - - -2.1352419629693031e-02 -6.8268537521362305e-01 - 4.3736723065376282e-01 -3.1157660484313965e-01 - <_> - 2.1095426082611084e+00 - - 1 2 177 1.5000000000000000e+00 0 -1 178 - 4.9500000000000000e+01 -2 -3 179 1.0150000000000000e+02 - - -7.1707659959793091e-01 3.5209715366363525e-01 - -5.0708782672882080e-01 7.8934565186500549e-02 - <_> - 2.7217743396759033e+00 - - 1 2 180 2.7350000000000000e+02 0 -1 181 - 1.2495000000000000e+03 -2 -3 182 1.4500000000000000e+01 - - -5.0943363457918167e-02 8.7893438339233398e-01 - -1.0237722657620907e-02 -5.5019938945770264e-01 - <_> - 2.4565997123718262e+00 - - 1 2 183 5.0000000000000000e-01 0 -1 184 - 1.0500000000000000e+01 -2 -3 185 5.5000000000000000e+00 - - -3.5214826464653015e-01 5.9661501646041870e-01 - -2.7218982577323914e-01 4.9512678384780884e-01 - <_> - 2.8743238449096680e+00 - - 1 2 186 4.5000000000000000e+00 0 -1 187 - 5.5000000000000000e+00 -2 -3 188 577. - - 4.3948319554328918e-01 -3.0406862497329712e-01 - -5.0375759601593018e-01 7.1215182542800903e-02 - <_> - 2.7736363410949707e+00 - - 1 2 189 2.1500000000000000e+01 0 -1 190 - 5.5000000000000000e+00 -2 -3 191 1.5000000000000000e+00 - - 4.1727577336132526e-03 -7.4696260690689087e-01 - -5.2629309892654419e-01 2.2158136963844299e-01 - <_> - 2.6128091812133789e+00 - - 1 2 192 5.0000000000000000e-01 0 -1 193 - 2.5000000000000000e+00 -2 -3 194 2.5000000000000000e+00 - - 7.3062634468078613e-01 -9.8423433303833008e-01 - 2.8110432624816895e-01 -1.6082715988159180e-01 - <_> - 2.9834272861480713e+00 - - 1 2 195 1.3500000000000000e+01 0 -1 196 - 7.9150000000000000e+02 -2 -3 197 9.5000000000000000e+00 - - 7.1296024322509766e-01 -7.4958539009094238e-01 - 3.7061801552772522e-01 -1.2306307256221771e-01 - <_> - 3.2170827388763428e+00 - - 1 2 198 1.6065000000000000e+03 0 -1 199 - 5.5000000000000000e+00 -2 -3 200 2.0275000000000000e+03 - - -3.0168825387954712e-01 2.3365539312362671e-01 - 6.6802793741226196e-01 -5.8256161212921143e-01 - <_> - 3.1492726802825928e+00 - - 1 2 201 4.1250000000000000e+02 0 -1 202 - 2.0450000000000000e+02 -2 -3 203 2.7500000000000000e+01 - - -1.3608095049858093e-01 4.6414726972579956e-01 - -5.3371006250381470e-01 6.7616206407546997e-01 - <_> - 3.1982100009918213e+00 - - 1 2 204 8.3500000000000000e+01 0 -1 205 - 5.5000000000000000e+00 -2 -3 206 251. - - 4.8937290906906128e-02 8.2636904716491699e-01 - -8.5127645730972290e-01 8.0275185406208038e-02 - <_> - 3.2608339786529541e+00 - - 1 2 207 1.6905000000000000e+03 0 -1 208 - 3.3250000000000000e+02 -2 -3 209 4.0500000000000000e+01 - - 4.6938320994377136e-01 -3.5710576176643372e-01 - -3.4840288758277893e-01 4.0339687466621399e-01 - <_> - 3.5624730587005615e+00 - - 1 2 210 4.5500000000000000e+01 0 -1 211 - 5.5000000000000000e+00 -2 -3 212 1119. - - -1.0512005537748337e-01 3.5630321502685547e-01 - 3.0504852533340454e-01 -9.0767818689346313e-01 - <_> - 3.4595894813537598e+00 - - 1 2 213 5.0000000000000000e-01 0 -1 214 - 2.5000000000000000e+00 -2 -3 215 1.5000000000000000e+00 - - -6.3885670900344849e-01 3.9579227566719055e-01 - 1.1626762151718140e-01 -4.5416545867919922e-01 - <_> - 3.2765171527862549e+00 - - 1 2 216 5.0000000000000000e-01 0 -1 217 - 1.1500000000000000e+01 -2 -3 218 4.5000000000000000e+00 - - -5.9969311952590942e-01 4.1484233736991882e-01 - -3.2088482379913330e-01 4.5076516270637512e-01 - <_> - 3.0572440624237061e+00 - - 1 2 219 5.5000000000000000e+00 0 -1 220 - 1.5000000000000000e+00 -2 -3 221 1.2500000000000000e+01 - - 1.7427183687686920e-01 -2.9311054944992065e-01 - 6.4205944538116455e-01 -9.0328532457351685e-01 - <_> - 3.2041997909545898e+00 - - 1 2 222 4.5000000000000000e+00 0 -1 223 - 7.5000000000000000e+00 -2 -3 224 5.1500000000000000e+01 - - -8.7655025720596313e-01 6.6966646909713745e-01 - 1.4695560932159424e-01 -5.8665174245834351e-01 - <_> - 3.5032150745391846e+00 - - 1 2 225 4.5000000000000000e+00 0 -1 226 979. -2 -3 227 - 5.0000000000000000e-01 - - -2.2506183385848999e-01 6.3425189256668091e-01 - -4.2429834604263306e-01 6.0787576436996460e-01 - <_> - 3.6615941524505615e+00 - - 1 2 228 5.7050000000000000e+02 0 -1 229 - 8.3850000000000000e+02 -2 -3 230 2.7850000000000000e+02 - - -1.0941934585571289e-01 4.8675090074539185e-01 - 5.6111901998519897e-01 -3.3019056916236877e-01 - <_> - 3.4909577369689941e+00 - - 1 2 231 119. 0 -1 232 7.7500000000000000e+01 -2 -3 233 - 9.5000000000000000e+00 - - -4.9900823831558228e-01 1.7894685268402100e-01 - -9.1172474622726440e-01 8.9065861701965332e-01 - <_> - 3.8275330066680908e+00 - - 1 2 234 1.5000000000000000e+00 0 -1 235 - 3.5000000000000000e+00 -2 -3 236 1.3250000000000000e+02 - - -6.7380899190902710e-01 3.3657526969909668e-01 - 4.9761232733726501e-01 -3.7721511721611023e-01 - <_> - 3.9486763477325439e+00 - - 1 2 237 2.9050000000000000e+02 0 -1 238 - 5.8650000000000000e+02 -2 -3 239 1.9550000000000000e+02 - - -6.9971680641174316e-01 4.3016415834426880e-01 - 5.5699282884597778e-01 -8.1054642796516418e-02 - <_> - 4.3176374435424805e+00 - - 1 2 240 1.5000000000000000e+00 0 -1 241 - 9.5000000000000000e+00 -2 -3 242 2.2725000000000000e+03 - - 4.6376305818557739e-01 -2.7650564908981323e-01 - -4.1137817502021790e-01 2.4273988604545593e-01 - <_> - 4.1106867790222168e+00 - - 1 2 243 6.5000000000000000e+00 0 -1 244 - 5.0000000000000000e-01 -2 -3 245 2.6500000000000000e+01 - - 1.7755906283855438e-01 -3.1547075510025024e-01 - 7.1589088439941406e-01 -8.6598944664001465e-01 - <_> - 4.0493078231811523e+00 - - 1 2 246 2.4500000000000000e+01 0 -1 247 - 7.5000000000000000e+00 -2 -3 248 1.5150000000000000e+02 - - -4.5098224282264709e-01 3.3610948920249939e-01 - 3.3537614345550537e-01 -5.4964864253997803e-01 - <_> - 4.3437886238098145e+00 - - 1 2 249 8.5500000000000000e+01 0 -1 250 - 6.7500000000000000e+01 -2 -3 251 2.2500000000000000e+01 - - -8.7396150827407837e-01 6.1177849769592285e-01 - -5.7394933700561523e-01 5.3601197898387909e-02 - <_> - 3.5774736404418945e+00 - - 1 2 252 1.8500000000000000e+01 0 -1 253 - 2.8500000000000000e+01 -2 -3 254 727. - - -1.4022175967693329e-01 3.5069212317466736e-01 - -7.6631480455398560e-01 4.6660822629928589e-01 - <_> - 3.4339537620544434e+00 - - 1 2 255 2.5000000000000000e+00 0 -1 256 - 1.0500000000000000e+01 -2 -3 257 1.1500000000000000e+01 - - -2.6909920573234558e-01 5.9753483533859253e-01 - -2.9939565062522888e-01 5.9079831838607788e-01 - <_> - 3.5545070171356201e+00 - - 1 2 258 1.5000000000000000e+00 0 -1 259 - 1.5000000000000000e+00 -2 -3 260 1.1500000000000000e+01 - - -3.5771971940994263e-01 4.3755933642387390e-01 - 1.2055332958698273e-01 -4.8447567224502563e-01 - <_> - 3.6163067817687988e+00 - - 1 2 261 2.5000000000000000e+00 0 -1 262 - 2.5000000000000000e+00 -2 -3 263 3.2500000000000000e+01 - - -3.5749617218971252e-01 4.9238750338554382e-01 - -4.1662833094596863e-01 2.3165223002433777e-01 - <_> - 3.4895346164703369e+00 - - 1 2 264 3.1050000000000000e+02 0 -1 265 - 1.0050000000000000e+02 -2 -3 266 8.5000000000000000e+00 - - -1.2677235901355743e-01 3.9842021465301514e-01 - -5.6282222270965576e-01 5.5186986923217773e-01 - <_> - 3.6868834495544434e+00 - - 1 2 267 2.5500000000000000e+01 0 -1 268 - 1.5000000000000000e+00 -2 -3 269 1268. - - -9.5765352249145508e-01 1.9734899699687958e-01 - -5.6331878900527954e-01 5.9383141994476318e-01 - <_> - 4.0580706596374512e+00 - - 1 2 270 1.1265000000000000e+03 0 -1 271 - 1.7050000000000000e+02 -2 -3 272 8.0750000000000000e+02 - - 5.8629125356674194e-01 -1.2970197200775146e-01 - -3.2385781407356262e-01 6.9086676836013794e-01 - <_> - 4.2803778648376465e+00 - - 1 2 273 4.9500000000000000e+01 0 -1 274 192. -2 -3 275 - 6.5000000000000000e+00 - - 2.3941868543624878e-01 -5.5941039323806763e-01 - 3.9892393350601196e-01 -2.0006304979324341e-01 - <_> - 4.2550206184387207e+00 - - 1 2 276 1.2850000000000000e+02 0 -1 277 - 9.5000000000000000e+00 -2 -3 278 8.5000000000000000e+00 - - -2.0197376608848572e-01 2.9125767946243286e-01 - 2.2862918674945831e-01 -9.8660701513290405e-01 - <_> - 4.2192134857177734e+00 - - 1 2 279 7.5000000000000000e+00 0 -1 280 - 2.5000000000000000e+00 -2 -3 281 7.5000000000000000e+00 - - -5.1448464393615723e-01 3.8536703586578369e-01 - -6.9239240884780884e-01 -3.5807080566883087e-02 - <_> - 4.4406690597534180e+00 - - 1 2 282 2.5000000000000000e+00 0 -1 283 - 5.0000000000000000e-01 -2 -3 284 8.5000000000000000e+00 - - 5.0960946083068848e-01 -4.9593481421470642e-01 - 3.2813104987144470e-01 -3.3382579684257507e-01 - <_> - 4.4840297698974609e+00 - - 1 2 285 1326. 0 -1 286 612. -2 -3 287 1.9450000000000000e+02 - - -1. 7.9890018701553345e-01 -6.5918892621994019e-01 - 4.3361011892557144e-02 - <_> - 4.5319285392761230e+00 - - 1 2 288 2.7500000000000000e+01 0 -1 289 - 1.7500000000000000e+01 -2 -3 290 5.4450000000000000e+02 - - 1.7646867036819458e-01 -4.9880924820899963e-01 - 3.1044688820838928e-01 -7.8504896163940430e-01 - <_> - 4.3263564109802246e+00 - - 1 2 291 1.0500000000000000e+01 0 -1 292 - 1.1500000000000000e+01 -2 -3 293 1.0500000000000000e+01 - - -3.3414199948310852e-01 1.9703163206577301e-01 - 6.7141562700271606e-01 -4.7605592012405396e-01 - <_> - 4.6897392272949219e+00 - - 1 2 294 5.0000000000000000e-01 0 -1 295 - 1.5000000000000000e+00 -2 -3 296 1.1595000000000000e+03 - - -6.9713282585144043e-01 3.6338269710540771e-01 - -5.1299923658370972e-01 1.8765503168106079e-01 - <_> - 4.9953885078430176e+00 - - 1 2 297 5.0000000000000000e-01 0 -1 298 - 7.5000000000000000e+00 -2 -3 299 3.8265000000000000e+03 - - -7.9099249839782715e-01 4.3731418251991272e-01 - -8.8410943746566772e-02 -9.4131457805633545e-01 - <_> - 4.4915475845336914e+00 - - 1 2 300 5.5000000000000000e+00 0 -1 301 - 2.5000000000000000e+00 -2 -3 302 1.5500000000000000e+01 - - -6.8182158470153809e-01 3.5027420520782471e-01 - -5.4620689153671265e-01 6.2989845871925354e-02 - <_> - 4.6564993858337402e+00 - - 1 2 303 1.2450000000000000e+02 0 -1 304 - 4.1500000000000000e+01 -2 -3 305 4.3500000000000000e+01 - - -6.5387880802154541e-01 1.6495206952095032e-01 - -7.3650360107421875e-01 5.6925100088119507e-01 - <_> - 5.1468167304992676e+00 - - 1 2 306 3.5000000000000000e+00 0 -1 307 - 1.4050000000000000e+02 -2 -3 308 2.3075000000000000e+03 - - 4.9031701683998108e-01 -5.3763668984174728e-02 - -5.3901141881942749e-01 1.5980558097362518e-01 - <_> - 4.9970083236694336e+00 - - 1 2 309 5.5000000000000000e+00 0 -1 310 - 3.8250000000000000e+02 -2 -3 311 4.5000000000000000e+00 - - 1.3255308568477631e-01 -6.7066764831542969e-01 - 2.6553070545196533e-01 -3.9240267872810364e-01 - <_> - 5.3259134292602539e+00 - - 1 2 312 3.2500000000000000e+01 0 -1 313 - 1.5000000000000000e+00 -2 -3 314 3.5000000000000000e+00 - - 1.2956449389457703e-01 -3.9639618992805481e-01 - -7.3431020975112915e-01 4.9653601646423340e-01 - <_> - 5.1569843292236328e+00 - - 1 2 315 5.0000000000000000e-01 0 -1 316 - 3.5000000000000000e+00 -2 -3 317 5.0000000000000000e-01 - - -8.3922284841537476e-01 6.8794727325439453e-01 - 3.0406209826469421e-01 -1.6892936825752258e-01 - <_> - 5.3804125785827637e+00 - - 1 2 318 1.0350000000000000e+02 0 -1 319 - 2.8050000000000000e+02 -2 -3 320 5.5000000000000000e+00 - - 5.5797357112169266e-02 -4.8595803976058960e-01 - -1.2136862426996231e-01 5.7313364744186401e-01 - <_> - 5.3404531478881836e+00 - - 1 2 321 2.5500000000000000e+01 0 -1 322 - 1.7575000000000000e+03 -2 -3 323 1.3500000000000000e+01 - - 1.9259653985500336e-02 -6.0744369029998779e-01 - -6.7395132780075073e-01 7.1949076652526855e-01 - <_> - 5.1782426834106445e+00 - - 1 2 324 9.5000000000000000e+00 0 -1 325 - 3.8500000000000000e+01 -2 -3 326 5.0000000000000000e-01 - - -8.8507616519927979e-01 8.9975792169570923e-01 - 3.3316615223884583e-01 -1.6221044957637787e-01 - <_> - 5.3394045829772949e+00 - - 1 2 327 2.4500000000000000e+01 0 -1 328 - 2.0150000000000000e+02 -2 -3 329 1.0500000000000000e+01 - - -9.5301911234855652e-02 -9.8104661703109741e-01 - -5.8636808395385742e-01 1.6720375418663025e-01 - <_> - 5.5081224441528320e+00 - - 1 2 330 5.8500000000000000e+01 0 -1 331 - 1.4500000000000000e+01 -2 -3 332 2.5000000000000000e+00 - - 1.6871802508831024e-01 -5.5092507600784302e-01 - 8.8998925685882568e-01 -6.9766056537628174e-01 - <_> - 5.6306805610656738e+00 - - 1 2 333 3.3500000000000000e+01 0 -1 334 - 6.1500000000000000e+01 -2 -3 335 85. - - -7.0117294788360596e-01 1.2255829572677612e-01 - -8.1785792112350464e-01 6.1549854278564453e-01 - <_> - 5.6915154457092285e+00 - - 1 2 336 3.2500000000000000e+01 0 -1 337 - 5.0000000000000000e-01 -2 -3 338 63. - - 1.2218275666236877e-01 -3.5413163900375366e-01 - 6.3612997531890869e-01 -7.0456862449645996e-01 - <_> - 5.5900840759277344e+00 - - 1 2 339 2.3500000000000000e+01 0 -1 340 - 2.5000000000000000e+00 -2 -3 341 4.5000000000000000e+00 - - 2.0174416899681091e-01 -5.1127249002456665e-01 - 4.2617842555046082e-01 -1.0143126547336578e-01 - <_> - 5.7180328369140625e+00 - - 1 2 342 5.0000000000000000e-01 0 -1 343 - 2.5000000000000000e+00 -2 -3 344 9.5000000000000000e+00 - - -3.8413861393928528e-01 4.6811124682426453e-01 - -4.2584285140037537e-01 1.2794874608516693e-01 - <_> - 5.6654319763183594e+00 - - 1 2 345 8.5000000000000000e+00 0 -1 346 - 5.0000000000000000e-01 -2 -3 347 1.5000000000000000e+00 - - 9.5142386853694916e-02 -7.1302425861358643e-01 - 5.4278182983398438e-01 -5.2601240575313568e-02 - <_> - 5.9350528717041016e+00 - - 1 2 348 9.5000000000000000e+00 0 -1 349 - 4.1500000000000000e+01 -2 -3 350 1.5000000000000000e+00 - - 8.7161600589752197e-01 -7.7127242088317871e-01 - 2.6962128281593323e-01 -2.5871616601943970e-01 - <_> - 6.1475706100463867e+00 - - 1 2 351 3.5000000000000000e+00 0 -1 352 - 1.5000000000000000e+00 -2 -3 353 2.3500000000000000e+01 - - -5.0578659772872925e-01 2.1251763403415680e-01 - -7.6094323396682739e-01 2.9446750879287720e-02 - <_> - 6.0555124282836914e+00 - - 1 2 354 3.8350000000000000e+02 0 -1 355 - 4.0750000000000000e+02 -2 -3 356 1.9150000000000000e+02 - - -7.6622998714447021e-01 8.8135695457458496e-01 - 6.9238609075546265e-01 -9.2058457434177399e-02 - <_> - 5.9078083038330078e+00 - - 1 2 357 4.5000000000000000e+00 0 -1 358 - 4.5000000000000000e+00 -2 -3 359 1.4250000000000000e+02 - - -7.2137272357940674e-01 5.1432526111602783e-01 - 1.1733544617891312e-01 -3.9842006564140320e-01 - <_> - 5.8863000869750977e+00 - - 1 2 360 5.5000000000000000e+00 0 -1 361 - 2.5000000000000000e+00 -2 -3 362 5.0000000000000000e-01 - - 2.5861698389053345e-01 -6.5906637907028198e-01 - 5.7050561904907227e-01 -2.1508345380425453e-02 - <_> - 6.2535686492919922e+00 - - 1 2 363 3.4450000000000000e+02 0 -1 364 - 7.1500000000000000e+01 -2 -3 365 3.7500000000000000e+01 - - 2.5537836551666260e-01 -5.6128257513046265e-01 - -2.7890142798423767e-01 3.6726871132850647e-01 - <_> - 6.5200557708740234e+00 - - 1 2 366 3.8500000000000000e+01 0 -1 367 - 2.0050000000000000e+02 -2 -3 368 5.0000000000000000e-01 - - -2.1050746738910675e-01 2.6648724079132080e-01 - 7.2144305706024170e-01 -7.6943892240524292e-01 - <_> - 6.5856919288635254e+00 - - 1 2 369 1.1985000000000000e+03 0 -1 370 - 9.8450000000000000e+02 -2 -3 371 5.0000000000000000e-01 - - -1.8643079325556755e-02 6.2855046987533569e-01 - 2.2027526795864105e-01 -4.5711979269981384e-01 - <_> - 6.7288737297058105e+00 - - 1 2 372 237. 0 -1 373 3.5000000000000000e+00 -2 -3 374 - 1.5000000000000000e+00 - - -8.0923789739608765e-01 1.4318189024925232e-01 1. - -9.4612187147140503e-01 - <_> - 6.6858677864074707e+00 - - 1 2 375 6.5000000000000000e+00 0 -1 376 - 2.5500000000000000e+01 -2 -3 377 5.0000000000000000e-01 - - -5.9098368883132935e-01 3.4622213244438171e-01 - 1.2213265895843506e-01 -4.9110993742942810e-01 - <_> - 6.8649945259094238e+00 - - 1 2 378 6.5000000000000000e+00 0 -1 379 - 1.2500000000000000e+01 -2 -3 380 99. - - -2.1010144054889679e-01 5.2433401346206665e-01 - 7.3402822017669678e-01 -7.3039847612380981e-01 - <_> - 6.8893485069274902e+00 - - 1 2 381 7.2750000000000000e+02 0 -1 382 - 1.5000000000000000e+00 -2 -3 383 9.5000000000000000e+00 - - 3.1361672282218933e-01 -1.7031247913837433e-01 - -7.2145223617553711e-01 3.5980513691902161e-01 - <_> - 7.2283496856689453e+00 - - 1 2 384 5.0000000000000000e-01 0 -1 385 - 1.3500000000000000e+01 -2 -3 386 2.0500000000000000e+01 - - -5.4181987047195435e-01 3.3900079131126404e-01 - -5.1880490779876709e-01 1.1900121718645096e-01 - <_> - 6.9692182540893555e+00 - - 1 2 387 1.6150000000000000e+02 0 -1 388 - 1.5000000000000000e+00 -2 -3 389 3210. - - 1.9477361440658569e-01 -3.0752164125442505e-01 - 7.8654778003692627e-01 -7.6034039258956909e-01 - <_> - 7.2192230224609375e+00 - - 1 2 390 1.3500000000000000e+01 0 -1 391 - 4.3500000000000000e+01 -2 -3 392 2.8500000000000000e+01 - - 2.5000450015068054e-01 -5.3074920177459717e-01 - -5.3798520565032959e-01 4.1968035697937012e-01 - <_> - 7.2540907859802246e+00 - - 1 2 393 2.0500000000000000e+01 0 -1 394 - 2.7500000000000000e+01 -2 -3 395 4.3650000000000000e+02 - - -7.3686313629150391e-01 3.4867912530899048e-02 - 2.9541721940040588e-01 -2.1020221710205078e-01 - <_> - 6.8051357269287109e+00 - - 1 2 396 5.5000000000000000e+00 0 -1 397 - 6.5000000000000000e+00 -2 -3 398 3.5000000000000000e+00 - - 4.2886292934417725e-01 -7.8918439149856567e-01 - 3.7567043304443359e-01 -1.4743655920028687e-01 - <_> - 7.4688086509704590e+00 - - 1 2 399 1.0150000000000000e+02 0 -1 400 - 4.5000000000000000e+00 -2 -3 401 9.9500000000000000e+01 - - -5.1463156938552856e-01 2.9845802113413811e-02 - 6.6367262601852417e-01 -1.1338147521018982e-01 - <_> - 7.1031336784362793e+00 - - 1 2 402 3.5000000000000000e+00 0 -1 403 - 2.5000000000000000e+00 -2 -3 404 1.3500000000000000e+01 - - -3.6626499891281128e-01 3.6989590525627136e-01 - -6.6719317436218262e-01 2.5169936940073967e-02 - <_> - 7.3519058227539062e+00 - - 1 2 405 9.1500000000000000e+01 0 -1 406 - 5.5000000000000000e+00 -2 -3 407 5.5000000000000000e+00 - - 2.4877189099788666e-01 -2.2317972779273987e-01 - -9.1418403387069702e-01 4.2734485864639282e-01 - <_> - 7.6044559478759766e+00 - - 1 2 408 3.2500000000000000e+01 0 -1 409 - 2.5000000000000000e+00 -2 -3 410 4.5000000000000000e+00 - - 2.4795474112033844e-01 -4.5940175652503967e-01 - -3.3580735325813293e-01 3.5987770557403564e-01 - <_> - 7.4985055923461914e+00 - - 1 2 411 1.5000000000000000e+00 0 -1 412 - 2.5000000000000000e+00 -2 -3 413 5.0000000000000000e-01 - - -8.2485938072204590e-01 4.3017619848251343e-01 - 1.4399667084217072e-01 -3.7108924984931946e-01 - <_> - 7.4325051307678223e+00 - - 1 2 414 5.0000000000000000e-01 0 -1 415 - 1.5500000000000000e+01 -2 -3 416 5.0000000000000000e-01 - - -8.7985265254974365e-01 2.5532016158103943e-01 - 4.2890861630439758e-01 -6.6000163555145264e-02 - <_> - 7.5405216217041016e+00 - - 1 2 417 2.5000000000000000e+00 0 -1 418 - 2.7500000000000000e+01 -2 -3 419 2.1500000000000000e+01 - - -6.3683986663818359e-01 5.2743852138519287e-01 - 1.4352023601531982e-01 -6.3558804988861084e-01 - <_> - 7.7823953628540039e+00 - - 1 2 420 1.5000000000000000e+00 0 -1 421 - 1.1500000000000000e+01 -2 -3 422 2.8445000000000000e+03 - - -4.9917691946029663e-01 3.4004133939743042e-01 - -4.3708419799804688e-01 2.8981977701187134e-01 - <_> - 7.7242145538330078e+00 - - 1 2 423 5.0850000000000000e+02 0 -1 424 - 5.0000000000000000e-01 -2 -3 425 3.1500000000000000e+01 - - 5.2104169130325317e-01 -5.8180812746286392e-02 - -7.3210656642913818e-01 2.3212959989905357e-02 - <_> - 7.5139360427856445e+00 - - 1 2 426 1.8500000000000000e+01 0 -1 427 - 1.0500000000000000e+01 -2 -3 428 1.5000000000000000e+00 - - -3.0844607949256897e-01 1.8616256117820740e-01 - -5.5996507406234741e-01 7.4107706546783447e-01 - <_> - 7.9558534622192383e+00 - - 1 2 429 5.0000000000000000e-01 0 -1 430 - 6.5000000000000000e+00 -2 -3 431 1.5500000000000000e+01 - - -7.7995741367340088e-01 8.8524711132049561e-01 - 4.4191744923591614e-01 -7.6589852571487427e-02 - <_> - 7.7786240577697754e+00 - - 1 2 432 8.5000000000000000e+00 0 -1 433 - 3.5000000000000000e+00 -2 -3 434 6.5000000000000000e+00 - - -9.6137225627899170e-01 6.0514140129089355e-01 - 1.9689162075519562e-01 -2.9731762409210205e-01 - <_> - 7.9885544776916504e+00 - - 1 2 435 4.1065000000000000e+03 0 -1 436 - 5.5000000000000000e+00 -2 -3 437 6.5500000000000000e+01 - - -2.1495328843593597e-01 2.0993046462535858e-01 - -9.7390574216842651e-01 1. - <_> - 7.6729865074157715e+00 - - 1 2 438 1.3950000000000000e+02 0 -1 439 - 3.3925000000000000e+03 -2 -3 440 2.1550000000000000e+02 - - 3.6841154098510742e-02 8.2625699043273926e-01 - -3.1556785106658936e-01 4.3009120225906372e-01 - <_> - 7.7963547706604004e+00 - - 1 2 441 4.5000000000000000e+00 0 -1 442 - 5.5000000000000000e+00 -2 -3 443 1.5000000000000000e+00 - - -6.0316175222396851e-01 6.6048818826675415e-01 - 2.5080832839012146e-01 -2.9886415600776672e-01 - <_> - 8.0473546981811523e+00 - - 1 2 444 1.4500000000000000e+01 0 -1 445 - 3.5000000000000000e+00 -2 -3 446 167. - - -7.5895428657531738e-01 -5.0374951213598251e-02 - 2.5099954009056091e-01 -7.8038960695266724e-01 - <_> - 8.2508106231689453e+00 - - 1 2 447 4.7500000000000000e+01 0 -1 448 - 1.5000000000000000e+00 -2 -3 449 203. - - 2.0345664024353027e-01 -3.1519731879234314e-01 - 8.4153503179550171e-01 -9.4352102279663086e-01 - <_> - 8.1843194961547852e+00 - - 1 2 450 3.5000000000000000e+00 0 -1 451 - 6.4850000000000000e+02 -2 -3 452 2.3500000000000000e+01 - - -6.6491708159446716e-02 -7.7391004562377930e-01 - 3.7316158413887024e-01 -4.7069379687309265e-01 - <_> - 8.4241552352905273e+00 - - 1 2 453 1.9550000000000000e+02 0 -1 454 - 1.1500000000000000e+01 -2 -3 455 9.7500000000000000e+01 - - 1.4798521995544434e-02 -7.5356280803680420e-01 - 6.0888707637786865e-01 -3.6627348512411118e-02 - <_> - 8.6226053237915039e+00 - - 1 2 456 8.5000000000000000e+00 0 -1 457 - 4.9500000000000000e+01 -2 -3 458 8.8500000000000000e+01 - - -6.3793772459030151e-01 7.5767761468887329e-01 - 1.9845020771026611e-01 -4.8551425337791443e-01 - <_> - 8.7387495040893555e+00 - - 1 2 459 5.0000000000000000e-01 0 -1 460 - 9.7050000000000000e+02 -2 -3 461 1.3500000000000000e+01 - - -2.5290706753730774e-01 3.9906808733940125e-01 - 7.3734633624553680e-02 -5.0943487882614136e-01 - <_> - 8.9511775970458984e+00 - - 1 2 462 1.5500000000000000e+01 0 -1 463 5042. -2 -3 464 - 2.5500000000000000e+01 - - 4.4684890657663345e-02 -7.5078099966049194e-01 - -6.8602824211120605e-01 2.1242773532867432e-01 - <_> - 8.7704448699951172e+00 - - 1 2 465 1.5000000000000000e+00 0 -1 466 - 3.5000000000000000e+00 -2 -3 467 5.0000000000000000e-01 - - -5.2990430593490601e-01 3.2908669114112854e-01 - 5.0670707225799561e-01 -3.3556681871414185e-01 - <_> - 9.1967802047729492e+00 - - 1 2 468 1.0150000000000000e+02 0 -1 469 - 4.5000000000000000e+00 -2 -3 470 2.0550000000000000e+02 - - 1.6923974454402924e-01 -4.5475739240646362e-01 - 5.2751308679580688e-01 -1.5509577095508575e-01 - <_> - 8.7917280197143555e+00 - - 1 2 471 1.1500000000000000e+01 0 -1 472 - 6.5000000000000000e+00 -2 -3 473 6.5000000000000000e+00 - - -4.4862127304077148e-01 4.2279773950576782e-01 - -3.5587507486343384e-01 3.5129797458648682e-01 - <_> - 8.7312154769897461e+00 - - 1 2 474 4.5000000000000000e+00 0 -1 475 - 6.5000000000000000e+00 -2 -3 476 3.6500000000000000e+01 - - -2.7193367481231689e-01 4.3259933590888977e-01 - 4.7951751947402954e-01 -3.5498926043510437e-01 - <_> - 9.0832386016845703e+00 - - 1 2 477 1.2500000000000000e+01 0 -1 478 - 3.1050000000000000e+02 -2 -3 479 3.5000000000000000e+00 - - 5.9946447610855103e-02 -5.3463864326477051e-01 -1. - 9.2522376775741577e-01 - <_> - 9.1005811691284180e+00 - - 1 2 480 1.9150000000000000e+02 0 -1 481 - 9.8500000000000000e+01 -2 -3 482 9.4500000000000000e+01 - - -7.7142339944839478e-01 8.8559025526046753e-01 - 8.3444190025329590e-01 1.7342502251267433e-02 - <_> - 9.0058355331420898e+00 - - 1 2 483 5.0000000000000000e-01 0 -1 484 - 1.1500000000000000e+01 -2 -3 485 2.1350000000000000e+02 - - -3.3807235956192017e-01 6.2658375501632690e-01 - -4.1266942024230957e-01 1.2879027426242828e-01 - <_> - 9.5705127716064453e+00 - - 1 2 486 5.5000000000000000e+00 0 -1 487 - 3.5000000000000000e+00 -2 -3 488 1.2500000000000000e+01 - - 5.6467759609222412e-01 -8.9094005525112152e-02 - -5.1642411947250366e-01 2.5749623775482178e-01 - <_> - 9.5358695983886719e+00 - - 1 2 489 3.5000000000000000e+00 0 -1 490 - 8.5000000000000000e+00 -2 -3 491 5.0000000000000000e-01 - - -9.6485316753387451e-01 6.5110367536544800e-01 - 3.9514154195785522e-01 -9.5468178391456604e-02 - <_> - 9.2215585708618164e+00 - - 1 2 492 4.5000000000000000e+00 0 -1 493 - 6.0450000000000000e+02 -2 -3 494 1.7500000000000000e+01 - - 4.6174043416976929e-01 -6.0333174467086792e-01 - 2.1922779083251953e-01 -4.6940636634826660e-01 - <_> - 9.5052928924560547e+00 - - 1 2 495 1.9500000000000000e+01 0 -1 496 - 6.2500000000000000e+01 -2 -3 497 9.9500000000000000e+01 - - -2.4998350441455841e-01 9.3333595991134644e-01 - 4.7144135832786560e-01 -5.3084665536880493e-01 - <_> - 9.6855897903442383e+00 - - 1 2 498 1.0150000000000000e+02 0 -1 499 - 1.9050000000000000e+02 -2 -3 500 4.6500000000000000e+01 - - -6.0934317111968994e-01 1.8029752373695374e-01 - -9.4084495306015015e-01 4.4628155231475830e-01 - <_> - 9.7318124771118164e+00 - - 1 2 501 1.0505000000000000e+03 0 -1 502 - 8.6850000000000000e+02 -2 -3 503 2.2500000000000000e+01 - - 4.6222873032093048e-02 -5.8092010021209717e-01 - 4.7866767644882202e-01 -8.6627846956253052e-01 - <_> - 9.9474916458129883e+00 - - 1 2 504 5.5000000000000000e+00 0 -1 505 - 1.5000000000000000e+00 -2 -3 506 5.0000000000000000e-01 - - 9.3323081731796265e-01 -7.6642012596130371e-01 - 3.1724649667739868e-01 -1.7054216563701630e-01 - <_> - 9.6730003356933594e+00 - - 1 2 507 5.0000000000000000e-01 0 -1 508 - 7.1500000000000000e+01 -2 -3 509 1.6500000000000000e+01 - - 6.1226785182952881e-01 -3.1147494912147522e-01 - -3.7605938315391541e-01 1.1878117173910141e-01 - <_> - 9.9316091537475586e+00 - - 1 2 510 2.5000000000000000e+00 0 -1 511 - 4.3500000000000000e+01 -2 -3 512 5.5000000000000000e+00 - - -9.6135699748992920e-01 1. 2.5860905647277832e-01 - -1.8475803732872009e-01 - <_> - 9.9168720245361328e+00 - - 1 2 513 3.5000000000000000e+00 0 -1 514 - 1.0500000000000000e+01 -2 -3 515 5.0000000000000000e-01 - - -5.7490390539169312e-01 5.8689129352569580e-01 - 6.0520070791244507e-01 -1.8357265740633011e-02 - <_> - 9.9600400924682617e+00 - - 1 2 516 1.5000000000000000e+00 0 -1 517 - 8.5000000000000000e+00 -2 -3 518 3.5000000000000000e+00 - - -4.1653260588645935e-01 4.4715183973312378e-01 - 4.3168023228645325e-02 -5.1480299234390259e-01 - <_> - 1.0061200141906738e+01 - - 1 2 519 1.6500000000000000e+01 0 -1 520 - 1.2500000000000000e+01 -2 -3 521 1.1500000000000000e+01 - - 2.5633049011230469e-01 -7.6656705141067505e-01 - -7.0554155111312866e-01 1.6379806399345398e-01 - <_> - 1.0377194404602051e+01 - - 1 2 522 5.0000000000000000e-01 0 -1 523 - 2.2500000000000000e+01 -2 -3 524 1.0350000000000000e+02 - - 3.4760028123855591e-01 -4.5027711987495422e-01 - -4.2173016071319580e-01 2.3955082893371582e-01 - <_> - 1.0154600143432617e+01 - - 1 2 525 5.0000000000000000e-01 0 -1 526 - 1.0500000000000000e+01 -2 -3 527 2.6500000000000000e+01 - - -4.5142862200737000e-01 5.3901028633117676e-01 - -2.5419974327087402e-01 4.5304277539253235e-01 - <_> - 1.0031300544738770e+01 - - 1 2 528 8.4250000000000000e+02 0 -1 529 - 3.5000000000000000e+00 -2 -3 530 1.9550000000000000e+02 - - -7.8200048208236694e-01 1. 3.5411849617958069e-01 - -1.2329959124326706e-01 - <_> - 1.0340743064880371e+01 - - 1 2 531 8.9500000000000000e+01 0 -1 532 - 4.4500000000000000e+01 -2 -3 533 1.0935000000000000e+03 - - -2.5243437290191650e-01 3.0944204330444336e-01 - -7.0828437805175781e-01 4.1531533002853394e-02 - <_> - 1.0338248252868652e+01 - - 1 2 534 5.8500000000000000e+01 0 -1 535 271. -2 -3 536 - 1.3500000000000000e+01 - - -9.2865273356437683e-02 5.8908087015151978e-01 - -8.2634025812149048e-01 -2.4943957105278969e-03 - <_> - 1.0308409690856934e+01 - - 1 2 537 1.6500000000000000e+01 0 -1 538 - 1.3550000000000000e+02 -2 -3 539 1.4500000000000000e+01 - - 6.6291391849517822e-01 -2.9839292168617249e-02 - -8.4737575054168701e-01 4.0216624736785889e-01 - <_> - 1.0141160964965820e+01 - - 1 2 540 3.8850000000000000e+02 0 -1 541 1880. -2 -3 542 - 5.0000000000000000e-01 - - -5.4690855741500854e-01 9.7327619791030884e-01 - 3.9478069543838501e-01 -1.6724799573421478e-01 - <_> - 1.0552933692932129e+01 - - 1 2 543 9.7500000000000000e+01 0 -1 544 - 2.5675000000000000e+03 -2 -3 545 3.5000000000000000e+00 - - 4.1177234053611755e-01 -7.8731620311737061e-01 - 1.4354823529720306e-01 -4.3162122368812561e-01 - <_> - 1.0565854072570801e+01 - - 1 2 546 6.9500000000000000e+01 0 -1 547 - 5.0000000000000000e-01 -2 -3 548 2.2500000000000000e+01 - - 1.1238955706357956e-01 -5.5135101079940796e-01 - 8.3063828945159912e-01 1.2920306064188480e-02 - <_> - 1.0695440292358398e+01 - - 1 2 549 5.0000000000000000e-01 0 -1 550 - 5.0000000000000000e-01 -2 -3 551 4.1500000000000000e+01 - - 1. -9.2097282409667969e-01 1.2958645820617676e-01 - -7.5983488559722900e-01 - <_> - 1.1004468917846680e+01 - - 1 2 552 6.5000000000000000e+00 0 -1 553 - 4.5000000000000000e+00 -2 -3 554 8.5000000000000000e+00 - - -5.3393048048019409e-01 2.6314625144004822e-01 - -4.1532078385353088e-01 3.2797959446907043e-01 - <_> - 1.0936705589294434e+01 - - 1 2 555 3.8500000000000000e+01 0 -1 556 - 1.2500000000000000e+01 -2 -3 557 2.2500000000000000e+01 - - 6.5491145849227905e-01 -5.2296054363250732e-01 - -2.6422262191772461e-01 4.4152420759201050e-01 - <_> - 1.1200079917907715e+01 - - 1 2 558 5.5000000000000000e+00 0 -1 559 - 1.4350000000000000e+02 -2 -3 560 8.5000000000000000e+00 - - 2.6337426900863647e-01 -6.2398618459701538e-01 - -5.7904040813446045e-01 1.5722821652889252e-01 - <_> - 1.1503147125244141e+01 - - 1 2 561 2.2500000000000000e+01 0 -1 562 - 3.5000000000000000e+00 -2 -3 563 4.4500000000000000e+01 - - 2.0208129286766052e-01 -5.8677726984024048e-01 - 3.0306696891784668e-01 -2.8123357892036438e-01 - <_> - 1.1434396743774414e+01 - - 1 2 564 1.9450000000000000e+02 0 -1 565 - 2.7750000000000000e+02 -2 -3 566 3.9550000000000000e+02 - - 1.2142877280712128e-01 -7.8573030233383179e-01 - 4.3764689564704895e-01 -7.5577810406684875e-02 - <_> - 1.1271259307861328e+01 - - 1 2 567 3.5000000000000000e+00 0 -1 568 - 2.6500000000000000e+01 -2 -3 569 1.5000000000000000e+00 - - -4.7033354640007019e-01 9.5837578177452087e-02 - -6.4152359962463379e-01 3.8179275393486023e-01 - <_> - 1.1176634788513184e+01 - - 1 2 570 1.5000000000000000e+00 0 -1 571 - 5.5000000000000000e+00 -2 -3 572 1.5000000000000000e+00 - - -4.7000327706336975e-01 4.9639451503753662e-01 - 4.9409845471382141e-01 -3.3572679758071899e-01 - <_> - 1.1203256607055664e+01 - - 1 2 573 3.5000000000000000e+00 0 -1 574 - 1.1500000000000000e+01 -2 -3 575 5.5000000000000000e+00 - - -5.0945442914962769e-01 3.5184708237648010e-01 - 2.9157343506813049e-01 -4.5857024192810059e-01 - <_> - 1.1486757278442383e+01 - - 1 2 576 5.0000000000000000e-01 0 -1 577 - 1.5000000000000000e+00 -2 -3 578 4.7500000000000000e+01 - - -4.5967599749565125e-01 3.4802013635635376e-01 - -5.7343167066574097e-01 1.8548563122749329e-02 - <_> - 1.1719410896301270e+01 - - 1 2 579 2.0750000000000000e+02 0 -1 580 - 4.5000000000000000e+00 -2 -3 581 5.0000000000000000e-01 - - -2.9454728960990906e-01 2.3265397548675537e-01 1. - -9.6974384784698486e-01 - <_> - 1.1762585639953613e+01 - - 1 2 582 1.1050000000000000e+02 0 -1 583 - 1.6500000000000000e+01 -2 -3 584 407. - - 1.6962698101997375e-01 -5.3280961513519287e-01 - -8.0282974243164062e-01 1. - <_> - 1.1756085395812988e+01 - - 1 2 585 1.6500000000000000e+01 0 -1 586 - 5.0000000000000000e-01 -2 -3 587 1.7500000000000000e+01 - - 2.7568620443344116e-01 -3.1695076823234558e-01 - 6.0045284032821655e-01 -2.3904968798160553e-01 - <_> - 1.1916310310363770e+01 - - 1 2 588 5.0000000000000000e-01 0 -1 589 - 5.0000000000000000e-01 -2 -3 590 8.6550000000000000e+02 - - -8.1488132476806641e-01 4.9408018589019775e-01 - -4.1927781701087952e-01 8.3734117448329926e-02 - <_> - 1.2203942298889160e+01 - - 1 2 591 5.7050000000000000e+02 0 -1 592 - 1.5500000000000000e+01 -2 -3 593 2.0750000000000000e+02 - - -3.8771522045135498e-01 4.7265237569808960e-01 - -6.2495791912078857e-01 1.0464360564947128e-01 - <_> - 1.2065786361694336e+01 - - 1 2 594 1.5000000000000000e+00 0 -1 595 - 3.5000000000000000e+00 -2 -3 596 2.4550000000000000e+02 - - -1.8811276555061340e-01 5.1335942745208740e-01 - -6.0490119457244873e-01 1.5422473661601543e-02 - <_> - 1.2367770195007324e+01 - - 1 2 597 5.0000000000000000e-01 0 -1 598 - 1.6500000000000000e+01 -2 -3 599 5.3500000000000000e+01 - - 3.0198401212692261e-01 -5.7692825794219971e-01 - -5.6324899196624756e-01 1.9613705575466156e-01 - <_> - 1.2323034286499023e+01 - - 1 2 600 1.2500000000000000e+01 0 -1 601 - 7.5500000000000000e+01 -2 -3 602 3.5000000000000000e+00 - - -3.2731822133064270e-01 3.5927465558052063e-01 - 2.3451724648475647e-01 -5.0880599021911621e-01 - <_> - 1.2484741210937500e+01 - - 1 2 603 1.5000000000000000e+00 0 -1 604 - 1.5000000000000000e+00 -2 -3 605 8.5000000000000000e+00 - - -1.7245341837406158e-01 5.7961738109588623e-01 - -2.6586967706680298e-01 7.2448682785034180e-01 - <_> - 1.2606169700622559e+01 - - 1 2 606 2.5000000000000000e+00 0 -1 607 - 4.5000000000000000e+00 -2 -3 608 230. - - 6.7421162128448486e-01 -9.0937048196792603e-01 - 1.2142854928970337e-01 -8.2504957914352417e-01 - <_> - 1.2318552970886230e+01 - - 1 2 609 5.0000000000000000e-01 0 -1 610 - 7.5000000000000000e+00 -2 -3 611 6.5000000000000000e+00 - - -7.4998068809509277e-01 3.6234694719314575e-01 - -2.8761732578277588e-01 5.9134435653686523e-01 - <_> - 1.2598359107971191e+01 - - 1 2 612 5.3500000000000000e+01 0 -1 613 - 5.5000000000000000e+00 -2 -3 614 10. - - 2.7980631589889526e-01 -1.5065264701843262e-01 - -9.5785999298095703e-01 1. - <_> - 1.2746797561645508e+01 - - 1 2 615 9.3500000000000000e+01 0 -1 616 - 6.5000000000000000e+00 -2 -3 617 8.7500000000000000e+01 - - -6.4821511507034302e-01 -3.9083152078092098e-03 - 6.2614870071411133e-01 -9.2817217111587524e-01 - <_> - 1.2947604179382324e+01 - - 1 2 618 2.7500000000000000e+01 0 -1 619 - 2.5000000000000000e+00 -2 -3 620 1.2500000000000000e+01 - - 6.7048752680420876e-03 -6.5272891521453857e-01 - 4.5032474398612976e-01 -3.6547464132308960e-01 - <_> - 1.2882634162902832e+01 - - 1 2 621 3.1050000000000000e+02 0 -1 622 - 5.6365000000000000e+03 -2 -3 623 1.9500000000000000e+01 - - -6.4969561994075775e-02 5.9627079963684082e-01 - -7.0807337760925293e-01 3.0144539475440979e-01 - <_> - 1.2801805496215820e+01 - - 1 2 624 5.0000000000000000e-01 0 -1 625 - 3.5000000000000000e+00 -2 -3 626 4.5000000000000000e+00 - - -1. 4.1704678535461426e-01 -3.7044116854667664e-01 - 1.8138089776039124e-01 - <_> - 1.2661149978637695e+01 - - 1 2 627 2.0500000000000000e+01 0 -1 628 2163. -2 -3 629 - 4.5000000000000000e+00 - - -1. 1. 3.0944949388504028e-01 -1.4065495133399963e-01 - <_> - 1.2931542396545410e+01 - - 1 2 630 1.0500000000000000e+01 0 -1 631 - 3.2050000000000000e+02 -2 -3 632 5.5350000000000000e+02 - - 2.4613921344280243e-01 -6.1480534076690674e-01 - 5.8146727085113525e-01 -4.4777959585189819e-02 - <_> - 1.2777011871337891e+01 - - 1 2 633 664. 0 -1 634 5.0000000000000000e-01 -2 -3 635 950. - - 4.0263316035270691e-01 -2.1390040218830109e-01 - 9.3719965219497681e-01 -9.1512298583984375e-01 - <_> - 1.3000047683715820e+01 - - 1 2 636 1.0500000000000000e+01 0 -1 637 - 9.5000000000000000e+00 -2 -3 638 3.5000000000000000e+00 - - -5.2459001541137695e-01 9.3095004558563232e-01 - -6.2548005580902100e-01 2.2303572297096252e-01 - <_> - 1.3017802238464355e+01 - - 1 2 639 1455. 0 -1 640 5.5000000000000000e+00 -2 -3 641 - 4.2450000000000000e+02 - - 2.8526142239570618e-01 -2.3395025730133057e-01 - -8.9111810922622681e-01 3.2246455550193787e-01 - <_> - 1.2907553672790527e+01 - - 1 2 642 8.5000000000000000e+00 0 -1 643 152. -2 -3 644 - 4.2500000000000000e+01 - - 1.8225684762001038e-01 -4.7394508123397827e-01 - 6.2302941083908081e-01 -1.1024855077266693e-01 - <_> - 1.3336275100708008e+01 - - 1 2 645 2.0650000000000000e+02 0 -1 646 - 2.2745000000000000e+03 -2 -3 647 1.0150000000000000e+02 - - 4.1937950998544693e-02 -6.0223990678787231e-01 - 7.0876753330230713e-01 -2.9814215376973152e-03 - <_> - 1.3240208625793457e+01 - - 1 2 648 1.8500000000000000e+01 0 -1 649 - 1.5000000000000000e+00 -2 -3 650 2.3150000000000000e+02 - - 1.9967538118362427e-01 -3.7611329555511475e-01 - -4.9610561132431030e-01 5.5267935991287231e-01 - <_> - 1.3167437553405762e+01 - - 1 2 651 5.5000000000000000e+00 0 -1 652 - 1.5500000000000000e+01 -2 -3 653 2.5000000000000000e+00 - - -5.7185417413711548e-01 8.0087751150131226e-01 - 4.4464635848999023e-01 -7.2770901024341583e-02 - <_> - 1.3142944335937500e+01 - - 1 2 654 2.5500000000000000e+01 0 -1 655 - 5.5000000000000000e+00 -2 -3 656 5.5500000000000000e+01 - - -2.4492548778653145e-02 5.5536437034606934e-01 - -7.0375752449035645e-01 5.0477677583694458e-01 - <_> - 1.3294385910034180e+01 - - 1 2 657 2.7500000000000000e+01 0 -1 658 - 3.5000000000000000e+00 -2 -3 659 6.5000000000000000e+00 - - 1.2528835795819759e-02 -6.7173910140991211e-01 - 4.1883945465087891e-01 -2.8822129964828491e-01 - <_> - 1.3392246246337891e+01 - - 1 2 660 7.5000000000000000e+00 0 -1 661 - 2.9500000000000000e+01 -2 -3 662 1.1450000000000000e+02 - - -6.8992421030998230e-02 5.4969501495361328e-01 - -4.4151812791824341e-01 7.0458197593688965e-01 - <_> - 1.3876214027404785e+01 - - 1 2 663 3.5000000000000000e+00 0 -1 664 - 3.1500000000000000e+01 -2 -3 665 9.5000000000000000e+00 - - -2.4815301597118378e-01 6.1503392457962036e-01 - 1.1428022384643555e-01 -4.7265532612800598e-01 - <_> - 1.3927340507507324e+01 - - 1 2 666 6.5000000000000000e+00 0 -1 667 - 5.0000000000000000e-01 -2 -3 668 1.3500000000000000e+01 - - 1.6489420831203461e-01 -4.1367548704147339e-01 - -1.9916613399982452e-01 4.9179160594940186e-01 - <_> - 1.4009963035583496e+01 - - 1 2 669 1.5500000000000000e+01 0 -1 670 - 6.4500000000000000e+01 -2 -3 671 1.4500000000000000e+01 - - -3.2740452885627747e-01 2.9090219736099243e-01 - -3.3407993614673615e-02 -7.3748952150344849e-01 - <_> - 1.4062114715576172e+01 - - 1 2 672 2.9050000000000000e+02 0 -1 673 - 2.9150000000000000e+02 -2 -3 674 9.8500000000000000e+01 - - -6.7245197296142578e-01 5.7694870233535767e-01 - 3.9129734039306641e-01 -1.7993095517158508e-01 - <_> - 1.4075572967529297e+01 - - 1 2 675 5.5000000000000000e+00 0 -1 676 - 9.5000000000000000e+00 -2 -3 677 3.5000000000000000e+00 - - -8.3239459991455078e-01 1. 3.1441810727119446e-01 - -1.7989411950111389e-01 - <_> - 1.4398697853088379e+01 - - 1 2 678 1.7500000000000000e+01 0 -1 679 - 5.0000000000000000e-01 -2 -3 680 214. - - 1.8806569278240204e-01 -3.9947587251663208e-01 - 3.2312503457069397e-01 -8.5158264636993408e-01 - <_> - 1.4362066268920898e+01 - - 1 2 681 3.3500000000000000e+01 0 -1 682 - 8.5000000000000000e+00 -2 -3 683 3.5000000000000000e+00 - - -3.6632146686315536e-02 6.7517954111099243e-01 - 8.0255568027496338e-01 -9.3577671051025391e-01 - <_> - 1.4355202674865723e+01 - - 1 2 684 1.5000000000000000e+00 0 -1 685 19. -2 -3 686 - 2.5000000000000000e+00 - - -8.4508359432220459e-01 9.0682888031005859e-01 - 1.6501218080520630e-01 -3.7748157978057861e-01 - <_> - 1.4331367492675781e+01 - - 1 2 687 3.5500000000000000e+01 0 -1 688 - 1.1500000000000000e+01 -2 -3 689 5.5000000000000000e+00 - - 1.0846425592899323e-01 -3.6513739824295044e-01 - -8.1047779321670532e-01 7.0118898153305054e-01 - <_> - 1.4596327781677246e+01 - - 1 2 690 2.5000000000000000e+00 0 -1 691 498. -2 -3 692 - 2.5000000000000000e+00 - - 9.1571146249771118e-01 -3.8378649950027466e-01 - -6.2768781185150146e-01 2.6496013998985291e-01 - <_> - 1.4494135856628418e+01 - - 1 2 693 5.0000000000000000e-01 0 -1 694 - 6.5000000000000000e+00 -2 -3 695 1.1435000000000000e+03 - - -9.6758538484573364e-01 4.7280657291412354e-01 - 1.4870892465114594e-01 -4.1227847337722778e-01 - <_> - 1.4703800201416016e+01 - - 1 2 696 8.3350000000000000e+02 0 -1 697 - 3.8950000000000000e+02 -2 -3 698 5.6150000000000000e+02 - - -1.4533622562885284e-01 -9.0440070629119873e-01 - 5.5248886346817017e-01 -4.1236154735088348e-02 - <_> - 1.4449706077575684e+01 - - 1 2 699 1.0150000000000000e+02 0 -1 700 - 1.4500000000000000e+01 -2 -3 701 2.5000000000000000e+00 - - 3.7996582686901093e-02 -5.9691846370697021e-01 - 6.3458359241485596e-01 -3.5994444042444229e-02 - <_> - 1.4542603492736816e+01 - - 1 2 702 3.5000000000000000e+00 0 -1 703 - 7.5000000000000000e+00 -2 -3 704 8.4050000000000000e+02 - - 9.2897661030292511e-02 -4.6599259972572327e-01 - 8.1781423091888428e-01 5.6449621915817261e-02 - <_> - 1.4853701591491699e+01 - - 1 2 705 1.5000000000000000e+00 0 -1 706 - 3.5000000000000000e+00 -2 -3 707 5.0000000000000000e-01 - - -5.0090640783309937e-01 3.2296618819236755e-01 - 6.1400991678237915e-01 1.9703503698110580e-02 - <_> - 1.5123150825500488e+01 - - 1 2 708 1.8500000000000000e+01 0 -1 709 - 4.5000000000000000e+00 -2 -3 710 3.5000000000000000e+00 - - -4.9176853895187378e-01 2.8722837567329407e-01 - -9.3597269058227539e-01 2.6944926381111145e-01 - <_> - 1.5157720565795898e+01 - - 1 2 711 5.0000000000000000e-01 0 -1 712 - 6.5000000000000000e+00 -2 -3 713 2.6650000000000000e+02 - - 3.4569710493087769e-02 6.7243850231170654e-01 - 4.1661575436592102e-01 -3.9990743994712830e-01 - <_> - 1.5411670684814453e+01 - - 1 2 714 1.3950000000000000e+02 0 -1 715 - 3.5000000000000000e+00 -2 -3 716 5.5000000000000000e+00 - - -2.3311543464660645e-01 2.9278513789176941e-01 - 4.7947874665260315e-01 -9.8023939132690430e-01 - <_> - 1.5354397773742676e+01 - - 1 2 717 1.9250000000000000e+02 0 -1 718 - 5.0000000000000000e-01 -2 -3 719 26. - - 4.0997236967086792e-01 -9.6107937395572662e-02 - -9.3151968717575073e-01 9.1284751892089844e-01 - <_> - 1.4952895164489746e+01 - - 1 2 720 2.7500000000000000e+01 0 -1 721 297. -2 -3 722 - 5.0000000000000000e-01 - - 5.4114556312561035e-01 -7.0818752050399780e-01 - 2.7803361415863037e-01 -2.0704185962677002e-01 - <_> - 1.5107488632202148e+01 - - 1 2 723 4.5000000000000000e+00 0 -1 724 - 9.2500000000000000e+01 -2 -3 725 5.0000000000000000e-01 - - 1.5459318459033966e-01 -4.8220661282539368e-01 - 2.0991271734237671e-01 -8.7689870595932007e-01 - <_> - 1.5330876350402832e+01 - - 1 2 726 3.5000000000000000e+00 0 -1 727 - 5.0000000000000000e-01 -2 -3 728 5.5000000000000000e+00 - - 1.2667779624462128e-01 -6.8513137102127075e-01 - -5.3112709522247314e-01 2.2338794171810150e-01 - <_> - 1.5734196662902832e+01 - - 1 2 729 1.5000000000000000e+00 0 -1 730 - 2.5000000000000000e+00 -2 -3 731 1.5000000000000000e+00 - - 5.1118248701095581e-01 -8.6829736828804016e-02 - 2.2527997195720673e-01 -4.4369015097618103e-01 - <_> - 1.5614619255065918e+01 - - 1 2 732 5.9500000000000000e+01 0 -1 733 - 2.9500000000000000e+01 -2 -3 734 3.5000000000000000e+00 - - 1.0675737261772156e-01 -6.1698102951049805e-01 - 4.1313454508781433e-01 -1.1957697570323944e-01 - <_> - 1.5535240173339844e+01 - - 1 2 735 5.5750000000000000e+02 0 -1 736 - 9.5450000000000000e+02 -2 -3 737 2.0645000000000000e+03 - - -3.4422600269317627e-01 5.9951692819595337e-01 - -3.8727310299873352e-01 2.4057196080684662e-01 - <_> - 1.5538546562194824e+01 - - 1 2 738 8.0150000000000000e+02 0 -1 739 - 2.6105000000000000e+03 -2 -3 740 3.8450000000000000e+02 - - -8.3982056379318237e-01 8.3161514997482300e-01 - -8.0494666099548340e-01 3.3064079470932484e-03 - <_> - 1.5797479629516602e+01 - - 1 2 741 1.8750000000000000e+02 0 -1 742 2430. -2 -3 743 - 5.0000000000000000e-01 - - -8.2724601030349731e-01 6.6713446378707886e-01 - 2.8536656498908997e-01 -2.8820601105690002e-01 - <_> - 1.5900279045104980e+01 - - 1 2 744 4.5000000000000000e+00 0 -1 745 - 2.5000000000000000e+00 -2 -3 746 5.0000000000000000e-01 - - 7.4607717990875244e-01 -7.1024978160858154e-01 - 5.7188493013381958e-01 -4.2073842138051987e-02 - <_> - 1.5883950233459473e+01 - - 1 2 747 4.0500000000000000e+01 0 -1 748 - 6.5000000000000000e+00 -2 -3 749 5.0000000000000000e-01 - - -1.0276497155427933e-01 4.0130257606506348e-01 1. -1. - <_> - 1.4979964256286621e+01 - - 1 2 750 1.9500000000000000e+01 0 -1 751 - 2.0500000000000000e+01 -2 -3 752 4.6500000000000000e+01 - - -2.2145843505859375e-01 2.5802364945411682e-01 - -9.0398544073104858e-01 4.8689022660255432e-01 - <_> - 1.5194631576538086e+01 - - 1 2 753 1.5000000000000000e+00 0 -1 754 - 3.5000000000000000e+00 -2 -3 755 2.1500000000000000e+01 - - -1.1669741570949554e-01 4.9556133151054382e-01 - 3.7774667143821716e-02 -6.1486494541168213e-01 - <_> - 1.5027575492858887e+01 - - 1 2 756 8.5000000000000000e+00 0 -1 757 - 8.5000000000000000e+00 -2 -3 758 1.3350000000000000e+02 - - -7.2910213470458984e-01 3.1334644556045532e-01 - 2.7376729249954224e-01 -3.3538144826889038e-01 - <_> - 1.5194680213928223e+01 - - 1 0 759 5027. 1 0 759 5027. -1 -2 760 2.5500000000000000e+01 - - -1. -1. -3.6071130633354187e-01 1.6710422933101654e-01 - <_> - 1.5317331314086914e+01 - - 1 2 761 8.5000000000000000e+00 0 -1 762 - 4.5000000000000000e+00 -2 -3 763 4.5000000000000000e+00 - - -3.6038890480995178e-01 4.8649555444717407e-01 - 1.2265116721391678e-01 -4.3468883633613586e-01 - <_> - 1.5516662597656250e+01 - - 1 2 764 5.0000000000000000e-01 0 -1 765 - 2.6500000000000000e+01 -2 -3 766 5.0000000000000000e-01 - - -8.6315697431564331e-01 5.6610745191574097e-01 - 5.4674094915390015e-01 -4.9838803708553314e-02 - <_> - 1.5334324836730957e+01 - - 1 2 767 4.1500000000000000e+01 0 -1 768 - 5.3550000000000000e+02 -2 -3 769 1.0550000000000000e+02 - - 6.0701811313629150e-01 -1.8233808875083923e-01 - 8.4639877080917358e-01 -3.3420971035957336e-01 - <_> - 1.5710937500000000e+01 - - 1 2 770 5.0000000000000000e-01 0 -1 771 - 5.0000000000000000e-01 -2 -3 772 193. - - -3.8640668988227844e-01 4.8309257626533508e-01 - -6.3383340835571289e-01 1.4250018633902073e-02 - <_> - 1.5832213401794434e+01 - - 1 2 773 4.8500000000000000e+01 0 -1 774 - 1.5000000000000000e+00 -2 -3 775 3.1500000000000000e+01 - - -1. 4.6453514695167542e-01 -7.3939657211303711e-01 - 1.4796154573559761e-02 - <_> - 1.5806046485900879e+01 - - 1 2 776 5.0000000000000000e-01 0 -1 777 - 6.5000000000000000e+00 -2 -3 778 1.5500000000000000e+01 - - -1.1508829891681671e-02 5.6221634149551392e-01 - -7.8835546970367432e-01 -8.5773661732673645e-02 - <_> - 1.5770372390747070e+01 - - 1 2 779 2.2500000000000000e+01 0 -1 780 - 1.9500000000000000e+01 -2 -3 781 5.0000000000000000e-01 - - -4.6044223010540009e-02 5.2754670381546021e-01 - 5.3497844934463501e-01 -7.3842519521713257e-01 - <_> - 1.5359473228454590e+01 - - 1 2 782 7.5000000000000000e+00 0 -1 783 - 5.0000000000000000e-01 -2 -3 784 1.5000000000000000e+00 - - 5.4964470863342285e-01 -1.2483406811952591e-01 - 3.7034383416175842e-01 -4.1089901328086853e-01 - <_> - 1.5590619087219238e+01 - - 1 2 785 4.3500000000000000e+01 0 -1 786 - 1.5000000000000000e+00 -2 -3 787 2.2500000000000000e+01 - - 4.0199559926986694e-01 -5.2104234695434570e-01 - -8.3813130855560303e-01 2.3114581406116486e-01 - <_> - 1.5789629936218262e+01 - - 1 2 788 1.6550000000000000e+02 0 -1 789 - 3.5000000000000000e+00 -2 -3 790 1.5550000000000000e+02 - - -2.4781857430934906e-01 1.9901108741760254e-01 - -9.7304773330688477e-01 7.0200401544570923e-01 - <_> - 1.5989371299743652e+01 - - 1 2 791 2.0650000000000000e+02 0 -1 792 - 5.0000000000000000e-01 -2 -3 793 3110. - - 6.3552632927894592e-02 -5.3658276796340942e-01 - 6.2562465667724609e-01 -1.1984360218048096e-01 - <_> - 1.5632120132446289e+01 - - 1 2 794 1.7500000000000000e+01 0 -1 795 - 3.6500000000000000e+01 -2 -3 796 5.5000000000000000e+00 - - -7.1405869722366333e-01 1.5681014955043793e-01 - -7.8313404321670532e-01 1.4654920995235443e-01 - <_> - 1.5941620826721191e+01 - - 1 2 797 616. 0 -1 798 6.5000000000000000e+00 -2 -3 799 - 1.1500000000000000e+01 - - -8.7063086032867432e-01 8.5862129926681519e-01 - -2.3666135966777802e-01 3.0949997901916504e-01 - <_> - 1.6084800720214844e+01 - - 1 2 800 219. 0 -1 801 4.5000000000000000e+00 -2 -3 802 - 3.6500000000000000e+01 - - -6.8690335750579834e-01 1.4317978918552399e-01 - -8.9101696014404297e-01 7.9761099815368652e-01 - <_> - 1.5994973182678223e+01 - - 1 2 803 2.5000000000000000e+00 0 -1 804 - 3.7550000000000000e+02 -2 -3 805 5.0000000000000000e-01 - - 9.4166928529739380e-01 -7.3805016279220581e-01 - 5.3213769197463989e-01 -8.9826993644237518e-02 - <_> - 1.5662853240966797e+01 - - 1 2 806 3.5000000000000000e+00 0 -1 807 - 6.5000000000000000e+00 -2 -3 808 468. - - -2.2272130846977234e-01 3.8207814097404480e-01 - -3.3211985230445862e-01 9.1164916753768921e-01 - <_> - 1.5838563919067383e+01 - - 1 2 809 6.5000000000000000e+00 0 -1 810 646. -2 -3 811 - 7.3500000000000000e+01 - - 5.0928765535354614e-01 -1.2581250071525574e-01 - -4.6567234396934509e-01 1.7571029067039490e-01 - <_> - 1.6171665191650391e+01 - - 1 2 812 2.5000000000000000e+00 0 -1 813 24. -2 -3 814 - 5.0000000000000000e-01 - - -6.1817497014999390e-01 8.6530512571334839e-01 - 3.3310186862945557e-01 -1.2780697643756866e-01 - <_> - 1.5851295471191406e+01 - - 1 2 815 3.9500000000000000e+01 0 -1 816 - 4.8500000000000000e+01 -2 -3 817 851. - - -3.2037055492401123e-01 7.0678859949111938e-01 - -1.3180524110794067e-01 4.8293638229370117e-01 - <_> - 1.6087598800659180e+01 - - 1 2 818 8.8500000000000000e+01 0 -1 819 - 6.4450000000000000e+02 -2 -3 820 4.9500000000000000e+01 - - -8.5365521907806396e-01 2.3630441725254059e-01 - 7.0704340934753418e-01 -4.6923226118087769e-01 - <_> - 1.6363336563110352e+01 - - 1 2 821 2.8150000000000000e+02 0 -1 822 - 2.7895000000000000e+03 -2 -3 823 1.0850000000000000e+02 - - -1.4065095782279968e-01 7.5202518701553345e-01 - -3.9883279800415039e-01 2.7573746442794800e-01 - <_> - 1.6588956832885742e+01 - - 1 2 824 5.0000000000000000e-01 0 -1 825 - 1.1500000000000000e+01 -2 -3 826 5.5000000000000000e+00 - - -8.1318140029907227e-01 4.3003699183464050e-01 - 2.2561977803707123e-01 -3.0686858296394348e-01 - <_> - 1.6775182723999023e+01 - - 1 2 827 4.1250000000000000e+02 0 -1 828 - 1.5000000000000000e+00 -2 -3 829 3.8450000000000000e+02 - - -4.6817734837532043e-01 2.1098636090755463e-01 - 8.0670994520187378e-01 -5.8135390281677246e-01 - <_> - 1.6856193542480469e+01 - - 1 2 830 5.0000000000000000e-01 0 -1 831 - 1.2500000000000000e+01 -2 -3 832 3.5000000000000000e+00 - - -2.8672289848327637e-01 6.1958354711532593e-01 - 8.1012040376663208e-02 -4.5567196607589722e-01 - <_> - 1.7051292419433594e+01 - - 1 2 833 1.8500000000000000e+01 0 -1 834 - 1.2450000000000000e+02 -2 -3 835 4.5000000000000000e+00 - - 4.2621921747922897e-02 -7.6019698381423950e-01 - -5.0678414106369019e-01 1.9509740173816681e-01 - <_> - 1.6998657226562500e+01 - - 1 2 836 8.5000000000000000e+00 0 -1 837 - 4.5000000000000000e+00 -2 -3 838 1.5050000000000000e+02 - - 6.6981112957000732e-01 -7.7394820749759674e-02 - -5.9851008653640747e-01 -2.3549804463982582e-02 - <_> - 1.7141326904296875e+01 - - 1 2 839 5.5000000000000000e+00 0 -1 840 - 2.6500000000000000e+01 -2 -3 841 1737. - - -4.8677769303321838e-01 3.9110738039016724e-01 - 2.7351859211921692e-01 -5.6498247385025024e-01 - <_> - 1.7101375579833984e+01 - - 1 2 842 1.0150000000000000e+02 0 -1 843 - 5.0000000000000000e-01 -2 -3 844 899. - - 3.0308917164802551e-01 -4.4189167022705078e-01 - 9.3633669614791870e-01 8.8033325970172882e-02 - <_> - 1.7200811386108398e+01 - - 1 2 845 5.0000000000000000e-01 0 -1 846 42. -2 -3 847 - 2.1350000000000000e+02 - - 2.7510833740234375e-01 -7.5726032257080078e-01 - -4.3352231383323669e-01 2.1154280006885529e-01 - <_> - 1.7079784393310547e+01 - - 1 2 848 5.5000000000000000e+00 0 -1 849 20. -2 -3 850 - 7.5000000000000000e+00 - - -9.7573763132095337e-01 2.8162035346031189e-01 - 3.6659198999404907e-01 -1.2102800607681274e-01 - <_> - 1.7073648452758789e+01 - - 1 2 851 1.1500000000000000e+01 0 -1 852 17. -2 -3 853 - 1.0500000000000000e+01 - - -8.6597007513046265e-01 7.9339522123336792e-01 - -6.1342595145106316e-03 8.5101735591888428e-01 - <_> - 1.7690402984619141e+01 - - 1 2 854 4.5000000000000000e+00 0 -1 855 - 2.2500000000000000e+01 -2 -3 856 4.9500000000000000e+01 - - 1.3958141207695007e-02 6.5386813879013062e-01 - -1.2044989317655563e-01 -9.2647463083267212e-01 - <_> - 1.7552139282226562e+01 - - 1 2 857 6.7250000000000000e+02 0 -1 858 255. -2 -3 859 - 8.1500000000000000e+01 - - 7.4523144960403442e-01 -7.1219885349273682e-01 - 1.7446618527173996e-02 -6.2030416727066040e-01 - <_> - 1.7826660156250000e+01 - - 1 2 860 2.6500000000000000e+01 0 -1 861 - 5.0000000000000000e-01 -2 -3 862 8.5000000000000000e+00 - - 2.6728147268295288e-01 -4.4572594761848450e-01 - -7.3989224433898926e-01 2.7452003955841064e-01 - <_> - 1.7716260910034180e+01 - - 1 2 863 2.9050000000000000e+02 0 -1 864 - 4.3500000000000000e+01 -2 -3 865 1.5000000000000000e+00 - - -6.7486357688903809e-01 5.5104964971542358e-01 - 3.6211666464805603e-01 -1.1039795726537704e-01 - <_> - 1.7527446746826172e+01 - - 1 2 866 8.5000000000000000e+00 0 -1 867 - 1.1500000000000000e+01 -2 -3 868 4.5000000000000000e+00 - - -4.3785366415977478e-01 1.7071330547332764e-01 - 4.2691925168037415e-01 -3.4452387690544128e-01 - <_> - 1.7498483657836914e+01 - - 1 2 869 1.3850000000000000e+02 0 -1 870 - 4.6500000000000000e+01 -2 -3 871 1.3500000000000000e+01 - - 4.4523417949676514e-01 -4.4731280207633972e-01 - -8.1189721822738647e-01 -2.8963508084416389e-02 - <_> - 1.7594804763793945e+01 - - 1 2 872 9.5000000000000000e+00 0 -1 873 - 4.5000000000000000e+00 -2 -3 874 2.5000000000000000e+00 - - 2.5354215875267982e-02 -6.9031453132629395e-01 - 6.6937547922134399e-01 -1.8369350582361221e-02 - <_> - 1.7741346359252930e+01 - - 1 2 875 5.3500000000000000e+01 0 -1 876 - 2.5000000000000000e+00 -2 -3 877 7. - - -7.9686230421066284e-01 1.4654204249382019e-01 - 6.7961549758911133e-01 -8.0987089872360229e-01 - <_> - 1.7493940353393555e+01 - - 1 2 878 1.5000000000000000e+00 0 -1 879 - 4.5000000000000000e+00 -2 -3 880 2.7850000000000000e+02 - - -4.4610077142715454e-01 6.3808631896972656e-01 - 2.9086035490036011e-01 -3.3009988069534302e-01 - <_> - 1.7796676635742188e+01 - - 1 2 881 3.5000000000000000e+00 0 -1 882 - 1.4500000000000000e+01 -2 -3 883 9.9550000000000000e+02 - - -3.7948560714721680e-01 3.0273652076721191e-01 - -2.0024552941322327e-01 4.5401337742805481e-01 - <_> - 1.7816259384155273e+01 - - 1 2 884 5.0000000000000000e-01 0 -1 885 - 2.5000000000000000e+00 -2 -3 886 2.0450000000000000e+02 - - -6.4229112863540649e-01 3.8051229715347290e-01 - 1.9582625478506088e-02 -6.1875140666961670e-01 - <_> - 1.8269836425781250e+01 - - 1 2 887 2.0650000000000000e+02 0 -1 888 - 3.2500000000000000e+01 -2 -3 889 8.5000000000000000e+00 - - -9.3007892370223999e-02 -8.1624692678451538e-01 - -3.7598320841789246e-01 4.5357686281204224e-01 - <_> - 1.8564132690429688e+01 - - 1 2 890 5.0000000000000000e-01 0 -1 891 - 5.0000000000000000e-01 -2 -3 892 5.0000000000000000e-01 - - -2.9174187779426575e-01 6.4155840873718262e-01 - 2.9429650306701660e-01 -2.9134511947631836e-01 - <_> - 1.8538108825683594e+01 - - 1 2 893 4.5000000000000000e+00 0 -1 894 - 3.6500000000000000e+01 -2 -3 895 5.0000000000000000e-01 - - -2.6023799553513527e-02 -7.2857677936553955e-01 - -5.0230020284652710e-01 4.2321056127548218e-01 - <_> - 1.8706319808959961e+01 - - 1 2 896 3.5000000000000000e+00 0 -1 897 - 1.3500000000000000e+01 -2 -3 898 1.0500000000000000e+01 - - -8.4947246313095093e-01 1.8297985196113586e-01 - -6.2586158514022827e-01 1.6820982098579407e-01 - <_> - 1.8353506088256836e+01 - - 1 2 899 5.0000000000000000e-01 0 -1 900 - 1.4500000000000000e+01 -2 -3 901 1.3500000000000000e+01 - - -3.8173475861549377e-01 3.7457469105720520e-01 - -3.5281360149383545e-01 5.2393311262130737e-01 - <_> - 1.7990430831909180e+01 - - 1 2 902 5.0000000000000000e-01 0 -1 903 - 7.6500000000000000e+01 -2 -3 904 2.1350000000000000e+02 - - 3.9235761761665344e-01 -4.3086987733840942e-01 - -3.6307579278945923e-01 2.6121103763580322e-01 - <_> - 1.7641067504882812e+01 - - 1 2 905 5.1950000000000000e+02 0 -1 906 - 7.6450000000000000e+02 -2 -3 907 2.5000000000000000e+00 - - -6.7761904001235962e-01 9.2178511619567871e-01 - 1.1485935747623444e-01 -3.4936183691024780e-01 - <_> - 1.8007766723632812e+01 - - 1 2 908 8.5000000000000000e+00 0 -1 909 - 6.5000000000000000e+00 -2 -3 910 1.4250000000000000e+02 - - 4.2121639847755432e-01 -7.9783517122268677e-01 - 3.6669909954071045e-01 -8.5580341517925262e-02 - <_> - 1.7631553649902344e+01 - - 1 2 911 1.0500000000000000e+01 0 -1 912 - 5.0000000000000000e-01 -2 -3 913 1.4500000000000000e+01 - - 2.6670908927917480e-01 -3.7621408700942993e-01 - -6.2516123056411743e-01 4.7545883059501648e-01 - <_> - 1.7849103927612305e+01 - - 1 2 914 2.1500000000000000e+01 0 -1 915 - 1.9450000000000000e+02 -2 -3 916 6.1715000000000000e+03 - - -3.8722166419029236e-01 2.1755173802375793e-01 - -8.4401416778564453e-01 1.5962296724319458e-01 - <_> - 1.8148504257202148e+01 - - 1 2 917 2.9950000000000000e+02 0 -1 918 - 1.1977500000000000e+04 -2 -3 919 5.0000000000000000e-01 - - 2.7477404475212097e-01 -7.4366313219070435e-01 - 2.9939907789230347e-01 -4.3714806437492371e-01 - <_> - 1.8520885467529297e+01 - - 1 2 920 6.4500000000000000e+01 0 -1 921 - 5.0000000000000000e-01 -2 -3 922 1.2500000000000000e+01 - - 6.9857753813266754e-02 -4.7508594393730164e-01 - 3.7238201498985291e-01 -7.4164247512817383e-01 - <_> - 1.8834211349487305e+01 - - 1 2 923 8.6500000000000000e+01 0 -1 924 - 8.9500000000000000e+01 -2 -3 925 1.7445000000000000e+03 - - -8.0918049812316895e-01 1. -1.6057571768760681e-01 - 3.1332454085350037e-01 - <_> - 1.8351465225219727e+01 - - 1 2 926 5.8350000000000000e+02 0 -1 927 - 7.5000000000000000e+00 -2 -3 928 481. - - 4.6060821413993835e-01 -6.7813009023666382e-02 - -4.8274511098861694e-01 6.9861322641372681e-01 - <_> - 1.8501985549926758e+01 - - 1 2 929 1.5000000000000000e+00 0 -1 930 - 2.5000000000000000e+00 -2 -3 931 1.0050000000000000e+02 - - -8.9331996440887451e-01 4.0598359704017639e-01 - -4.1995242238044739e-01 1.5051996707916260e-01 - <_> - 1.8696071624755859e+01 - - 1 2 932 2.3050000000000000e+02 0 -1 933 - 3.5000000000000000e+00 -2 -3 934 5.0000000000000000e-01 - - -3.3542561531066895e-01 1.9408614933490753e-01 1. - -9.5072054862976074e-01 - <_> - 1.8607995986938477e+01 - - 1 2 935 2.5000000000000000e+00 0 -1 936 - 1.5000000000000000e+00 -2 -3 937 1.2500000000000000e+01 - - 5.4928588867187500e-01 -2.4268487468361855e-02 - -8.3902990818023682e-01 -8.8076196610927582e-02 - <_> - 1.8578538894653320e+01 - - 1 2 938 3549. 0 -1 939 3.2050000000000000e+02 -2 -3 940 - 6461. - - -2.9456844553351402e-02 8.3224558830261230e-01 1. - -9.5387804508209229e-01 - <_> - 1.8958681106567383e+01 - - 1 2 941 7.5000000000000000e+00 0 -1 942 - 3.1550000000000000e+02 -2 -3 943 3.5000000000000000e+00 - - -7.5887119770050049e-01 7.0706927776336670e-01 - 3.8014331459999084e-01 -1.1943070590496063e-01 - <_> - 1.8760652542114258e+01 - - 1 2 944 3.3500000000000000e+01 0 -1 945 - 5.5000000000000000e+00 -2 -3 946 4.5000000000000000e+00 - - -7.5789099931716919e-01 7.9995310306549072e-01 - 2.9564496874809265e-01 -1.9802929461002350e-01 - <_> - 1.8639022827148438e+01 - - 1 2 947 5.0000000000000000e-01 0 -1 948 - 5.5500000000000000e+01 -2 -3 949 2.7950000000000000e+02 - - -8.5202199220657349e-01 6.9410562515258789e-01 - 3.6203834414482117e-01 -1.2163019925355911e-01 - <_> - 1.8766536712646484e+01 - - 1 2 950 3.5000000000000000e+00 0 -1 951 - 1.5000000000000000e+00 -2 -3 952 42. - - -9.3982005119323730e-01 1.2751524150371552e-01 - 6.3139563798904419e-01 -7.6969057321548462e-01 - <_> - 1.9183019638061523e+01 - - 1 2 953 5.0000000000000000e-01 0 -1 954 - 5.1500000000000000e+01 -2 -3 955 1.5000000000000000e+00 - - 4.1648134589195251e-01 -8.8983547687530518e-01 - 9.5907759666442871e-01 -2.4271501600742340e-01 - <_> - 1.9610746383666992e+01 - - 1 2 956 2.0450000000000000e+02 0 -1 957 - 9.5000000000000000e+00 -2 -3 958 4.2850000000000000e+02 - - 1.3211338222026825e-01 -4.8846188187599182e-01 - 4.2772728204727173e-01 -6.5411061048507690e-01 - <_> - 1.9917108535766602e+01 - - 1 2 959 3.9500000000000000e+01 0 -1 960 - 3.4150000000000000e+02 -2 -3 961 1.5000000000000000e+00 - - -1.6529877483844757e-01 -9.6143603324890137e-01 - -2.8269404172897339e-01 3.0636185407638550e-01 - <_> - 1.9404857635498047e+01 - - 1 2 962 1.5000000000000000e+00 0 -1 963 - 5.0000000000000000e-01 -2 -3 964 1.5000000000000000e+00 - - 3.8518258929252625e-01 -1.9976606965065002e-01 - 3.1995189189910889e-01 -5.1225066184997559e-01 - <_> - 2.0154628753662109e+01 - - 1 2 965 2.2500000000000000e+01 0 -1 966 - 1.5000000000000000e+00 -2 -3 967 1.5500000000000000e+01 - - 4.7032272815704346e-01 -3.5649308562278748e-01 - 7.4977207183837891e-01 5.0952531397342682e-02 - <_> - 2.0107938766479492e+01 - - 1 2 968 1.1500000000000000e+01 0 -1 969 - 9.5000000000000000e+00 -2 -3 970 5.0000000000000000e-01 - - -8.9147239923477173e-01 7.6516920328140259e-01 - 4.5234966278076172e-01 -4.6691324561834335e-02 - <_> - 2.0402862548828125e+01 - - 1 2 971 8.5000000000000000e+00 0 -1 972 - 5.5000000000000000e+00 -2 -3 973 3.5000000000000000e+00 - - -4.7490122914314270e-01 2.9843258857727051e-01 - -4.5378142595291138e-01 2.9492387175559998e-01 - <_> - 2.0257144927978516e+01 - - 1 2 974 1.5500000000000000e+01 0 -1 975 - 5.0000000000000000e-01 -2 -3 976 4.3500000000000000e+01 - - 3.1388428807258606e-01 -1.4571745693683624e-01 - -7.5251871347427368e-01 6.9722115993499756e-01 - <_> - 2.0529319763183594e+01 - - 1 2 977 1.5000000000000000e+00 0 -1 978 - 1.5000000000000000e+00 -2 -3 979 2.5000000000000000e+00 - - -5.2027046680450439e-01 2.7217444777488708e-01 - 4.6654894948005676e-01 -4.6129345893859863e-01 - <_> - 2.0874372482299805e+01 - - 1 2 980 9.6500000000000000e+01 0 -1 981 - 1.9165000000000000e+03 -2 -3 982 8.5000000000000000e+00 - - -2.2539170086383820e-01 6.6775095462799072e-01 - -3.7017312645912170e-01 1.4091856777667999e-01 - <_> - 2.0993101119995117e+01 - - 1 2 983 8.9500000000000000e+01 0 -1 984 - 2.2850000000000000e+02 -2 -3 985 811. - - -9.4379550218582153e-01 1.1872769892215729e-01 1. - -9.5742899179458618e-01 - <_> - 2.0633829116821289e+01 - - 1 2 986 4.5000000000000000e+00 0 -1 987 - 2.5000000000000000e+00 -2 -3 988 2.5000000000000000e+00 - - -9.2427527904510498e-01 2.3482735455036163e-01 - 4.5335689187049866e-01 -4.4699901342391968e-01 - <_> - 2.0826599121093750e+01 - - 1 2 989 4.9500000000000000e+01 0 -1 990 - 4.5000000000000000e+00 -2 -3 991 4.8500000000000000e+01 - - 1.9276854395866394e-01 -4.7601845860481262e-01 - -2.1918711066246033e-01 4.9042212963104248e-01 - <_> - 2.1078292846679688e+01 - - 1 2 992 4.5000000000000000e+00 0 -1 993 - 5.5500000000000000e+01 -2 -3 994 4.5000000000000000e+00 - - 2.6589986681938171e-01 -6.8663871288299561e-01 - -4.7653216123580933e-01 3.5789057612419128e-01 - <_> - 2.0846752166748047e+01 - - 1 2 995 2.5500000000000000e+01 0 -1 996 - 2.5000000000000000e+00 -2 -3 997 9.5000000000000000e+00 - - -4.0679597854614258e-01 7.6525181531906128e-02 - -4.4665309786796570e-01 7.5682783126831055e-01 - <_> - 2.1128168106079102e+01 - - 1 2 998 1.9450000000000000e+02 0 -1 999 - 7.9250000000000000e+02 -2 -3 1000 1.9450000000000000e+02 - - 4.8146584630012512e-01 -6.7968618869781494e-01 - 5.6917864084243774e-01 -4.0854610502719879e-02 - <_> - 2.1430679321289062e+01 - - 1 2 1001 1.3250000000000000e+02 0 -1 1002 - 1.5000000000000000e+00 -2 -3 1003 3.8500000000000000e+01 - - 6.9865274429321289e-01 -3.9771077036857605e-01 - -5.0634521245956421e-01 5.4503116756677628e-02 - <_> - 2.1460109710693359e+01 - - 1 2 1004 2.1150000000000000e+02 0 -1 1005 898. -2 -3 1006 - 95. - - -3.4796665422618389e-03 -6.2917459011077881e-01 - 5.9274631738662720e-01 -7.7559250593185425e-01 - <_> - 2.1738679885864258e+01 - - 1 2 1007 9.5000000000000000e+00 0 -1 1008 - 1.2500000000000000e+01 -2 -3 1009 2.8450000000000000e+02 - - 2.7857103943824768e-01 -3.2522264122962952e-01 - -7.0976269245147705e-01 -3.1888559460639954e-02 - <_> - 2.1714611053466797e+01 - - 1 2 1010 2.0500000000000000e+01 0 -1 1011 - 1.7550000000000000e+02 -2 -3 1012 1.3950000000000000e+02 - - 4.7277057170867920e-01 -7.4925351142883301e-01 - 4.6757832169532776e-01 -9.6052125096321106e-02 - <_> - 2.1671428680419922e+01 - - 1 2 1013 1.3015000000000000e+03 0 -1 1014 - 4.5000000000000000e+00 -2 -3 1015 1.4250000000000000e+02 - - 7.6744452118873596e-02 -5.5534267425537109e-01 - 7.4648100137710571e-01 -4.3182671070098877e-02 - <_> - 2.1580698013305664e+01 - - 1 2 1016 1.3500000000000000e+01 0 -1 1017 - 8.5000000000000000e+00 -2 -3 1018 1.1500000000000000e+01 - - -5.0190782546997070e-01 1.9962008297443390e-01 - 4.6641969680786133e-01 -1.8569506704807281e-01 - <_> - 2.1765819549560547e+01 - - 1 2 1019 8.2500000000000000e+01 0 -1 1020 - 4.5000000000000000e+00 -2 -3 1021 2.8050000000000000e+02 - - -4.4983270764350891e-01 1.8512135744094849e-01 - 4.3670821189880371e-01 -7.7668732404708862e-01 - <_> - 2.1940675735473633e+01 - - 1 2 1022 5.0000000000000000e-01 0 -1 1023 - 3.5000000000000000e+00 -2 -3 1024 3.4500000000000000e+01 - - -6.2042754888534546e-01 4.7864294052124023e-01 - -3.8229328393936157e-01 3.0125352740287781e-01 - <_> - 2.2267677307128906e+01 - - 1 2 1025 8.5000000000000000e+00 0 -1 1026 - 2.8500000000000000e+01 -2 -3 1027 1.5000000000000000e+00 - - -3.4308344125747681e-01 3.2700043916702271e-01 - 2.8009243309497833e-02 -6.5551960468292236e-01 - <_> - 2.2207328796386719e+01 - - 1 2 1028 2.5000000000000000e+00 0 -1 1029 - 3.5000000000000000e+00 -2 -3 1030 1.1215000000000000e+03 - - 5.3718221187591553e-01 -1.2088337540626526e-01 - 1.5861311554908752e-01 -3.9377096295356750e-01 - <_> - 2.2471664428710938e+01 - - 1 2 1031 2.9050000000000000e+02 0 -1 1032 - 5.9450000000000000e+02 -2 -3 1033 4.1450000000000000e+02 - - -6.4998543262481689e-01 7.1848845481872559e-01 - 2.6433640718460083e-01 -3.9302077889442444e-01 - <_> - 2.2527078628540039e+01 - - 1 2 1034 7.5000000000000000e+00 0 -1 1035 - 2.5000000000000000e+00 -2 -3 1036 2.2605000000000000e+03 - - -9.3585616350173950e-01 -4.2096305638551712e-02 - -7.0427574217319489e-02 4.3294385075569153e-01 - <_> - 2.2606931686401367e+01 - - 1 2 1037 1.0500000000000000e+01 0 -1 1038 - 2.8750000000000000e+02 -2 -3 1039 1.1500000000000000e+01 - - 1.1093313246965408e-01 -3.9183530211448669e-01 - 6.3532203435897827e-01 -5.7091873884201050e-01 - <_> - 2.2367671966552734e+01 - - 1 2 1040 1.5500000000000000e+01 0 -1 1041 - 1.6500000000000000e+01 -2 -3 1042 1.7500000000000000e+01 - - -1.6724117100238800e-01 4.4530591368675232e-01 - -4.3550294637680054e-01 1.9026978313922882e-01 - <_> - 2.2205213546752930e+01 - - 1 2 1043 5.0000000000000000e-01 0 -1 1044 - 1.1500000000000000e+01 -2 -3 1045 1.1905000000000000e+03 - - -4.4692027568817139e-01 3.8084071874618530e-01 - -4.8567453026771545e-01 2.7033451199531555e-01 - <_> - 2.2693662643432617e+01 - - 1 2 1046 6.5000000000000000e+00 0 -1 1047 - 1.5000000000000000e+00 -2 -3 1048 3.5500000000000000e+01 - - 4.8754628747701645e-02 -4.7193619608879089e-01 - 5.7730108499526978e-01 -3.6538568139076233e-01 - <_> - 2.2709083557128906e+01 - - 1 2 1049 2.7795000000000000e+03 0 -1 1050 - 5.0000000000000000e-01 -2 -3 1051 5.0000000000000000e-01 - - -6.2101531028747559e-01 1.1589990556240082e-01 1. -1. - <_> - 2.2808294296264648e+01 - - 1 2 1052 5.3950000000000000e+02 0 -1 1053 500. -2 -3 1054 - 1.5000000000000000e+00 - - -8.5519909858703613e-01 6.6525626182556152e-01 - 9.6477895975112915e-02 -3.8266643881797791e-01 - <_> - 2.2709251403808594e+01 - - 1 2 1055 2.8500000000000000e+01 0 -1 1056 - 9.5000000000000000e+00 -2 -3 1057 1.7850000000000000e+02 - - -3.0039480328559875e-01 2.3731714487075806e-01 - 5.5204099416732788e-01 -1. - <_> - 2.2883974075317383e+01 - - 1 2 1058 1.5000000000000000e+00 0 -1 1059 - 4.7650000000000000e+02 -2 -3 1060 3.5000000000000000e+00 - - 3.1513065099716187e-01 -6.7278760671615601e-01 - 4.8823799937963486e-02 -5.3364491462707520e-01 - <_> - 2.2645736694335938e+01 - - 1 2 1061 2.1500000000000000e+01 0 -1 1062 - 1.0150000000000000e+02 -2 -3 1063 1.5500000000000000e+01 - - -3.7698954343795776e-01 9.1966107487678528e-02 - -1.9366940855979919e-01 6.3159108161926270e-01 - <_> - 2.2804265975952148e+01 - - 1 2 1064 1.4500000000000000e+01 0 -1 1065 - 6.5000000000000000e+00 -2 -3 1066 31. - - -4.2572322487831116e-01 2.5687438249588013e-01 - -4.0757122635841370e-01 8.0108904838562012e-01 - <_> - 2.2991754531860352e+01 - - 1 2 1067 7.5000000000000000e+00 0 -1 1068 - 3.5000000000000000e+00 -2 -3 1069 2.5000000000000000e+00 - - -2.2490467131137848e-01 3.3885499835014343e-01 - 3.8232448697090149e-01 -4.9994280934333801e-01 - <_> - 2.2915760040283203e+01 - - 1 2 1070 1.0500000000000000e+01 0 -1 1071 - 2.5000000000000000e+00 -2 -3 1072 43. - - -2.2366788983345032e-01 2.6461529731750488e-01 - -6.6056483983993530e-01 6.4644366502761841e-01 - <_> - 2.3167186737060547e+01 - - 1 2 1073 1.5000000000000000e+00 0 -1 1074 - 3.5000000000000000e+00 -2 -3 1075 1.5500000000000000e+01 - - -1. 4.9131840467453003e-01 -4.0733695030212402e-01 - 9.9567189812660217e-02 - <_> - 2.2755411148071289e+01 - - 1 2 1076 1.5000000000000000e+00 0 -1 1077 - 4.5000000000000000e+00 -2 -3 1078 1.5000000000000000e+00 - - -7.5926685333251953e-01 3.4496614336967468e-01 - 1.2074087560176849e-01 -5.2481061220169067e-01 - <_> - 2.2953344345092773e+01 - - 1 2 1079 2.8150000000000000e+02 0 -1 1080 - 4.1650000000000000e+02 -2 -3 1081 6.9350000000000000e+02 - - -3.3359700441360474e-01 5.3399580717086792e-01 - 8.4570676088333130e-01 -3.3458182215690613e-01 - <_> - 2.3368593215942383e+01 - - 1 2 1082 227. 0 -1 1083 1.0550000000000000e+02 -2 -3 1084 - 4.4650000000000000e+02 - - -7.3385640978813171e-02 4.1524896025657654e-01 - -9.4336360692977905e-01 1. - <_> - 2.3024780273437500e+01 - - 1 2 1085 5.2550000000000000e+02 0 -1 1086 - 4.2150000000000000e+02 -2 -3 1087 3.0500000000000000e+01 - - -1.6232274472713470e-02 6.8589657545089722e-01 - -6.7987442016601562e-01 7.3400551080703735e-01 - <_> - 2.3133411407470703e+01 - - 1 2 1088 2.5000000000000000e+00 0 -1 1089 - 1.5000000000000000e+00 -2 -3 1090 5.5000000000000000e+00 - - -3.0522230267524719e-01 5.5176895856857300e-01 - -2.5108471512794495e-01 4.3696498870849609e-01 - <_> - 2.2578367233276367e+01 - - 1 2 1091 3.6500000000000000e+01 0 -1 1092 26. -2 -3 1093 - 3.1500000000000000e+01 - - 8.0150479078292847e-01 -8.8337904214859009e-01 - 1.4003737270832062e-01 -8.9142149686813354e-01 - <_> - 2.2617025375366211e+01 - - 1 2 1094 1.1500000000000000e+01 0 -1 1095 - 6.8500000000000000e+01 -2 -3 1096 4.0500000000000000e+01 - - -4.8602235317230225e-01 3.8658622652292252e-02 - 9.1023242473602295e-01 -3.9350971579551697e-01 - <_> - 2.2626764297485352e+01 - - 1 2 1097 3.7050000000000000e+02 0 -1 1098 - 4.8150000000000000e+02 -2 -3 1099 1.1500000000000000e+01 - - -1. 7.9611843824386597e-01 -7.0780706405639648e-01 - 9.7384164109826088e-03 - <_> - 2.2082014083862305e+01 - - 1 2 1100 2.5000000000000000e+00 0 -1 1101 - 6.5000000000000000e+00 -2 -3 1102 5.0000000000000000e-01 - - -5.9881603717803955e-01 2.6402229070663452e-01 - 5.0668692588806152e-01 -5.4474925994873047e-01 - <_> - 2.2490549087524414e+01 - - 1 2 1103 5.0000000000000000e-01 0 -1 1104 - 5.0000000000000000e-01 -2 -3 1105 4.8500000000000000e+01 - - -4.8074820637702942e-01 4.0853387117385864e-01 - -3.7592467665672302e-01 5.0597894191741943e-01 - <_> - 2.2812757492065430e+01 - - 1 2 1106 4.0500000000000000e+01 0 -1 1107 - 1.0500000000000000e+01 -2 -3 1108 8.0050000000000000e+02 - - -8.0385506153106689e-01 3.2220870256423950e-01 - 6.9755470752716064e-01 -3.9865970611572266e-01 - <_> - 2.2352939605712891e+01 - - 1 2 1109 1.2500000000000000e+01 0 -1 1110 - 1.5000000000000000e+00 -2 -3 1111 1.5000000000000000e+00 - - 2.1285776793956757e-01 -4.5981806516647339e-01 - 4.1973820328712463e-01 -2.2565999627113342e-01 - <_> - 2.2610305786132812e+01 - - 1 2 1112 2.0500000000000000e+01 0 -1 1113 - 1.5000000000000000e+00 -2 -3 1114 29. - - -2.0439949631690979e-01 2.5736668705940247e-01 - -9.8827475309371948e-01 7.2147792577743530e-01 - <_> - 2.2741743087768555e+01 - - 1 2 1115 3.5000000000000000e+00 0 -1 1116 - 4.8500000000000000e+01 -2 -3 1117 3.5500000000000000e+01 - - -9.4092458486557007e-02 5.6227135658264160e-01 - -5.6600910425186157e-01 1.3143694400787354e-01 - <_> - 2.2782821655273438e+01 - - 1 2 1118 5.6500000000000000e+01 0 -1 1119 - 3.3150000000000000e+02 -2 -3 1120 6.5000000000000000e+00 - - 4.1078153997659683e-02 8.1302630901336670e-01 - -7.2408193349838257e-01 2.5323694944381714e-01 - <_> - 2.2561285018920898e+01 - - 1 2 1121 1.5000000000000000e+00 0 -1 1122 - 6.5000000000000000e+00 -2 -3 1123 1.5000000000000000e+00 - - -8.3376455307006836e-01 -1.1895341426134109e-01 - 3.2173439860343933e-01 -2.2153630852699280e-01 - <_> - 2.2957450866699219e+01 - - 1 2 1124 1.5000000000000000e+00 0 -1 1125 - 7.6950000000000000e+02 -2 -3 1126 1.3500000000000000e+01 - - -5.0485479831695557e-01 4.8193752765655518e-01 - -2.8308025002479553e-01 3.9616531133651733e-01 - <_> - 2.3185138702392578e+01 - - 1 2 1127 5.5000000000000000e+00 0 -1 1128 - 4.5000000000000000e+00 -2 -3 1129 1.4050000000000000e+02 - - -7.7944564819335938e-01 3.1965014338493347e-01 - 2.2768935561180115e-01 -4.3597799539566040e-01 - <_> - 2.3197412490844727e+01 - - 1 2 1130 2.5000000000000000e+00 0 -1 1131 - 2.5000000000000000e+00 -2 -3 1132 8.5000000000000000e+00 - - 5.9841811656951904e-02 -7.1680092811584473e-01 - 6.8867534399032593e-01 1.2272221967577934e-02 - <_> - 2.3383518218994141e+01 - - 1 2 1133 9.5000000000000000e+00 0 -1 1134 - 1.0115000000000000e+03 -2 -3 1135 1.3500000000000000e+01 - - -7.5907582044601440e-01 5.5666831322014332e-03 - -6.5333795547485352e-01 1.8610689043998718e-01 - <_> - 2.4061538696289062e+01 - - 1 2 1136 3.5500000000000000e+01 0 -1 1137 - 1.5000000000000000e+00 -2 -3 1138 8.5000000000000000e+00 - - 6.7802059650421143e-01 -4.0095943212509155e-01 - -8.5392379760742188e-01 -2.6821995154023170e-02 - <_> - 2.4534542083740234e+01 - - 1 2 1139 1.2350000000000000e+02 0 -1 1140 - 2.9500000000000000e+01 -2 -3 1141 4.5000000000000000e+00 - - -7.6275803148746490e-02 4.7300234436988831e-01 - -9.2102265357971191e-01 1.5679582953453064e-01 - <_> - 2.4849668502807617e+01 - - 1 2 1142 4.5000000000000000e+00 0 -1 1143 - 1.5000000000000000e+00 -2 -3 1144 1.2500000000000000e+01 - - -7.1332806348800659e-01 -1.8122823908925056e-02 - 7.0794415473937988e-01 -2.4113529920578003e-01 - <_> - 2.4467212677001953e+01 - - 1 2 1145 4.1850000000000000e+02 0 -1 1146 - 8.5000000000000000e+00 -2 -3 1147 2945. - - 2.2338098287582397e-01 -3.8245588541030884e-01 - 7.1123474836349487e-01 -3.3307316899299622e-01 - <_> - 2.4749870300292969e+01 - - 1 2 1148 2.2500000000000000e+01 0 -1 1149 - 1.9500000000000000e+01 -2 -3 1150 3.5000000000000000e+00 - - 3.2208207249641418e-01 -4.9405458569526672e-01 - -6.4639550447463989e-01 2.8265854716300964e-01 - <_> - 2.5424608230590820e+01 - - 1 2 1151 2.8150000000000000e+02 0 -1 1152 - 4.2850000000000000e+02 -2 -3 1153 3.5000000000000000e+00 - - 1.4349616132676601e-02 8.4566748142242432e-01 - -9.5824217796325684e-01 -1.0716012120246887e-01 - <_> - 2.4834630966186523e+01 - - 1 2 1154 8.5000000000000000e+00 0 -1 1155 - 5.5000000000000000e+00 -2 -3 1156 5.0000000000000000e-01 - - 2.1508189383894205e-03 5.6899297237396240e-01 - 6.4855700731277466e-01 -6.4779657125473022e-01 - <_> - 2.4929552078247070e+01 - - 1 2 1157 7.5000000000000000e+00 0 -1 1158 - 4.5000000000000000e+00 -2 -3 1159 5.0000000000000000e-01 - - 9.4921566545963287e-02 -4.8822158575057983e-01 - 6.4119017124176025e-01 -2.8962375596165657e-02 - <_> - 2.4881700515747070e+01 - - 1 2 1160 9.1500000000000000e+01 0 -1 1161 - 2.5500000000000000e+01 -2 -3 1162 1122. - - -4.7852240502834320e-02 5.2576094865798950e-01 1. -1. - <_> - 2.5097393035888672e+01 - - 1 2 1163 1.7150000000000000e+02 0 -1 1164 - 3.4500000000000000e+01 -2 -3 1165 2.5500000000000000e+01 - - -2.1177834272384644e-01 2.1569216251373291e-01 - -9.0615940093994141e-01 1. - <_> - 2.5430635452270508e+01 - - 1 2 1166 5.5000000000000000e+00 0 -1 1167 - 5.0000000000000000e-01 -2 -3 1168 3.5000000000000000e+00 - - 6.0626584291458130e-01 -4.2933013290166855e-02 - 1.2032220512628555e-01 -4.5643520355224609e-01 - <_> - 2.4833143234252930e+01 - - 1 2 1169 6.5000000000000000e+00 0 -1 1170 - 2.5000000000000000e+00 -2 -3 1171 2.0050000000000000e+02 - - 1.9587014615535736e-01 -8.7051421403884888e-01 - -2.0953345298767090e-01 2.9975613951683044e-01 - <_> - 2.5055957794189453e+01 - - 1 2 1172 1.7415000000000000e+03 0 -1 1173 - 1.0500000000000000e+01 -2 -3 1174 1.1750000000000000e+02 - - -3.2608142495155334e-01 2.2281394898891449e-01 - -8.6601722240447998e-01 5.6492161750793457e-01 - <_> - 2.5411783218383789e+01 - - 1 2 1175 1.9500000000000000e+01 0 -1 1176 - 1.5000000000000000e+00 -2 -3 1177 1.4500000000000000e+01 - - -2.2238333523273468e-01 3.5582524538040161e-01 - 9.7925044596195221e-02 -5.7895737886428833e-01 - <_> - 2.5232561111450195e+01 - - 1 2 1178 5.5000000000000000e+00 0 -1 1179 - 3.5000000000000000e+00 -2 -3 1180 1.5000000000000000e+00 - - -1. 1.0744545608758926e-01 2.4408946931362152e-01 - -1.7922264337539673e-01 - <_> - 2.5592079162597656e+01 - - 1 2 1181 8.5000000000000000e+00 0 -1 1182 - 3.7750000000000000e+02 -2 -3 1183 1.7450000000000000e+02 - - 3.5951843857765198e-01 -2.5438147783279419e-01 - 5.8976590633392334e-01 -6.4009445905685425e-01 - <_> - 2.5460926055908203e+01 - - 1 2 1184 2.8350000000000000e+02 0 -1 1185 - 1.5885000000000000e+03 -2 -3 1186 2.2500000000000000e+01 - - -1.3115195930004120e-01 5.7663148641586304e-01 - -8.3647221326828003e-01 -5.5450040847063065e-02 - <_> - 2.4983026504516602e+01 - - 1 2 1187 5.0000000000000000e-01 0 -1 1188 - 1.8500000000000000e+01 -2 -3 1189 3.4650000000000000e+02 - - 5.0644135475158691e-01 -1. -4.7790014743804932e-01 - 5.8962784707546234e-02 - <_> - 2.4962465286254883e+01 - - 1 2 1190 3.8250000000000000e+02 0 -1 1191 - 9.5000000000000000e+00 -2 -3 1192 8.5950000000000000e+02 - - 5.8645974844694138e-02 -9.5598822832107544e-01 - 7.1161812543869019e-01 -2.0562157034873962e-02 - <_> - 2.4795219421386719e+01 - - 1 2 1193 2.8500000000000000e+01 0 -1 1194 - 1.5000000000000000e+00 -2 -3 1195 1.7500000000000000e+01 - - 2.9913264513015747e-01 -1.6724526882171631e-01 - -8.8783025741577148e-01 1. - <_> - 2.4997814178466797e+01 - - 1 2 1196 1.4500000000000000e+01 0 -1 1197 43. -2 -3 1198 - 3.5000000000000000e+00 - - -4.6730864048004150e-01 1. -9.0318864583969116e-01 - 2.0259493589401245e-01 - <_> - 2.5250741958618164e+01 - - 1 2 1199 5.5000000000000000e+00 0 -1 1200 - 1.7500000000000000e+01 -2 -3 1201 9.8500000000000000e+01 - - 2.5292718410491943e-01 -5.6624042987823486e-01 - -4.7334527969360352e-01 7.5167727470397949e-01 - <_> - 2.5597959518432617e+01 - - 1 2 1202 1.5000000000000000e+00 0 -1 1203 - 4.5000000000000000e+00 -2 -3 1204 5.0000000000000000e-01 - - 5.2678531408309937e-01 -7.2871202230453491e-01 - 3.4721735119819641e-01 -1.4052625000476837e-01 - <_> - 2.6015928268432617e+01 - - 1 2 1205 3.3500000000000000e+01 0 -1 1206 - 1.5000000000000000e+00 -2 -3 1207 3.5000000000000000e+00 - - 7.1335107088088989e-01 -6.8683260679244995e-01 - 4.1797044873237610e-01 -7.5381346046924591e-02 - <_> - 2.6080852508544922e+01 - - 1 2 1208 1.9450000000000000e+02 0 -1 1209 - 3.4500000000000000e+01 -2 -3 1210 5.0000000000000000e-01 - - -6.0427057743072510e-01 5.5709409713745117e-01 - 3.4673354029655457e-01 -1.8051835894584656e-01 - <_> - 2.6467638015747070e+01 - - 1 2 1211 2.5115000000000000e+03 0 -1 1212 - 8.5000000000000000e+00 -2 -3 1213 2.0850000000000000e+02 - - -8.5619848966598511e-01 4.9012210965156555e-01 - -4.2894706130027771e-01 1.0497479885816574e-01 - <_> - 2.6485155105590820e+01 - - 1 2 1214 9.6650000000000000e+02 0 -1 1215 - 3.2550000000000000e+02 -2 -3 1216 2.4500000000000000e+01 - - 1.7517041414976120e-02 7.9495114088058472e-01 - 7.8716523945331573e-02 -8.8528424501419067e-01 - <_> - 2.6288461685180664e+01 - - 1 2 1217 2.7915000000000000e+03 0 -1 1218 - 4.5000000000000000e+00 -2 -3 1219 4.5000000000000000e+00 - - -1.9669318199157715e-01 2.9254439473152161e-01 - -8.2664072513580322e-01 2.2074800729751587e-01 - <_> - 2.6351388931274414e+01 - - 1 2 1220 1.5000000000000000e+00 0 -1 1221 - 2.5000000000000000e+00 -2 -3 1222 7.5000000000000000e+00 - - -4.2111295461654663e-01 4.7202318906784058e-01 - -8.8099575042724609e-01 -7.9371139407157898e-02 - <_> - 2.6195323944091797e+01 - - 1 2 1223 9.5000000000000000e+00 0 -1 1224 - 4.3650000000000000e+02 -2 -3 1225 6.2500000000000000e+01 - - 6.2379628419876099e-01 -3.6856892704963684e-01 - -5.6515967845916748e-01 -2.9386903624981642e-03 - <_> - 2.6427618026733398e+01 - - 1 2 1226 5.6500000000000000e+01 0 -1 1227 - 1.8500000000000000e+01 -2 -3 1228 5.0000000000000000e-01 - - -3.6606630682945251e-01 2.3229379951953888e-01 - 4.9491932988166809e-01 -7.3755401372909546e-01 - <_> - 2.6300844192504883e+01 - - 1 2 1229 6.1500000000000000e+01 0 -1 1230 - 4.1750000000000000e+02 -2 -3 1231 5.5000000000000000e+00 - - -4.9513667821884155e-01 7.5124400854110718e-01 - 2.2448441386222839e-01 -2.7989912033081055e-01 - <_> - 2.6734531402587891e+01 - - 1 2 1232 2.9500000000000000e+01 0 -1 1233 280. -2 -3 1234 - 5.0000000000000000e-01 - - 1.1864694952964783e-01 -6.6632729768753052e-01 - 4.5777958631515503e-01 -8.0784313380718231e-02 - <_> - 2.6800367355346680e+01 - - 1 2 1235 4.1265000000000000e+03 0 -1 1236 - 5.0000000000000000e-01 -2 -3 1237 7.8500000000000000e+01 - - 3.9412322640419006e-01 -3.0951443314552307e-01 - -9.7793340682983398e-01 4.3862605094909668e-01 - <_> - 2.6887401580810547e+01 - - 1 2 1238 350. 0 -1 1239 7.5000000000000000e+00 -2 -3 1240 - 2.2350000000000000e+02 - - 8.7033271789550781e-02 -3.6893099546432495e-01 - 9.4931793212890625e-01 -1. - <_> - 2.7101215362548828e+01 - - 1 2 1241 5.5000000000000000e+00 0 -1 1242 - 3.5000000000000000e+00 -2 -3 1243 6.4500000000000000e+01 - - -8.3407133817672729e-01 6.2552863359451294e-01 - 2.1381312608718872e-01 -3.0896508693695068e-01 - <_> - 2.7130867004394531e+01 - - 1 2 1244 2.6500000000000000e+01 0 -1 1245 - 1.0350000000000000e+02 -2 -3 1246 17. - - 2.9652552679181099e-02 -4.6722367405891418e-01 - -9.2275160551071167e-01 9.4599908590316772e-01 - <_> - 2.7444198608398438e+01 - - 1 2 1247 1.5000000000000000e+00 0 -1 1248 9. -2 -3 1249 - 5.0000000000000000e-01 - - -9.2614519596099854e-01 1. 3.1333214044570923e-01 - -1.0745179653167725e-01 - <_> - 2.7101421356201172e+01 - - 1 2 1250 5.0000000000000000e-01 0 -1 1251 - 5.9500000000000000e+01 -2 -3 1252 1.5500000000000000e+01 - - -3.9119881391525269e-01 3.8085353374481201e-01 - -3.4277844429016113e-01 5.1453381776809692e-01 - <_> - 2.7595775604248047e+01 - - 1 2 1253 1.5000000000000000e+00 0 -1 1254 - 1.6855000000000000e+03 -2 -3 1255 7.5000000000000000e+00 - - 4.9557527899742126e-01 -1.8799009919166565e-01 - 4.2001377791166306e-02 -5.3131079673767090e-01 - <_> - 2.7920442581176758e+01 - - 1 2 1256 788. 0 -1 1257 8.5000000000000000e+00 -2 -3 1258 - 7.5000000000000000e+00 - - 4.2728736996650696e-01 -5.2986663579940796e-01 - -4.7308242321014404e-01 3.2466796040534973e-01 - <_> - 2.7709392547607422e+01 - - 1 2 1259 4.0450000000000000e+02 0 -1 1260 - 9.5000000000000000e+00 -2 -3 1261 1.0895000000000000e+03 - - -1. 6.6353029012680054e-01 5.8117783069610596e-01 - -2.1105107665061951e-01 - <_> - 2.7577920913696289e+01 - - 1 2 1262 2.0750000000000000e+02 0 -1 1263 - 5.0000000000000000e-01 -2 -3 1264 1.0650000000000000e+02 - - 2.2170700132846832e-01 -3.8288524746894836e-01 - 4.9027836322784424e-01 -3.9834201335906982e-01 - <_> - 2.7649755477905273e+01 - - 1 2 1265 4.5000000000000000e+00 0 -1 1266 - 4.5000000000000000e+00 -2 -3 1267 6.0500000000000000e+01 - - -5.5156159400939941e-01 7.1834795176982880e-02 - 3.5335651040077209e-01 -7.6608622074127197e-01 - <_> - 2.7592519760131836e+01 - - 1 2 1268 107. 0 -1 1269 2.1500000000000000e+01 -2 -3 1270 - 5.1500000000000000e+01 - - -5.7235393673181534e-02 6.3974326848983765e-01 - -8.9891165494918823e-01 8.4132647514343262e-01 - <_> - 2.8039279937744141e+01 - - 1 2 1271 1.9650000000000000e+02 0 -1 1272 - 1.9150000000000000e+02 -2 -3 1273 1.5000000000000000e+00 - - -6.8037152290344238e-01 4.0258809924125671e-01 - 4.4676044583320618e-01 -3.5154557228088379e-01 - <_> - 2.8309566497802734e+01 - - 1 2 1274 1.5500000000000000e+01 0 -1 1275 - 2.7950000000000000e+02 -2 -3 1276 1.2500000000000000e+01 - - 1.2468610703945160e-01 -4.9273210763931274e-01 - 3.2381328940391541e-01 -5.3833800554275513e-01 - <_> - 2.8425289154052734e+01 - - 1 2 1277 2.5000000000000000e+00 0 -1 1278 - 5.5000000000000000e+00 -2 -3 1279 1.4500000000000000e+01 - - -9.7587949037551880e-01 6.4044964313507080e-01 - 1.9836525619029999e-01 -2.7098080515861511e-01 - <_> - 2.8559995651245117e+01 - - 1 2 1280 2.5500000000000000e+01 0 -1 1281 - 2.3500000000000000e+01 -2 -3 1282 2.2500000000000000e+01 - - 2.2615139186382294e-01 -8.1296950578689575e-01 - -6.1625677347183228e-01 1.3470700383186340e-01 - <_> - 2.8543394088745117e+01 - - 1 2 1283 2.5000000000000000e+00 0 -1 1284 - 8.5000000000000000e+00 -2 -3 1285 2.1250000000000000e+02 - - -8.9228659868240356e-01 4.5488858222961426e-01 - -3.4728524088859558e-01 2.5915831327438354e-01 - <_> - 2.8494907379150391e+01 - - 1 2 1286 1.2500000000000000e+01 0 -1 1287 - 1.4500000000000000e+01 -2 -3 1288 4.5000000000000000e+00 - - -4.8487342894077301e-02 4.5671224594116211e-01 - -6.9567614793777466e-01 2.2189494967460632e-01 - <_> - 2.8800910949707031e+01 - - 1 2 1289 9.5000000000000000e+00 0 -1 1290 - 5.9150000000000000e+02 -2 -3 1291 2.9450000000000000e+02 - - 4.2912089824676514e-01 -2.9302126169204712e-01 - -5.0501853227615356e-01 1.8034780025482178e-01 - <_> - 2.8596752166748047e+01 - - 1 2 1292 4.2500000000000000e+01 0 -1 1293 - 5.5000000000000000e+00 -2 -3 1294 7.8500000000000000e+01 - - 1.2166477739810944e-01 -3.2727557420730591e-01 - 8.2486468553543091e-01 -5.0142651796340942e-01 - <_> - 2.8626392364501953e+01 - - 1 2 1295 2.5000000000000000e+00 0 -1 1296 - 3.5000000000000000e+00 -2 -3 1297 1.1500000000000000e+01 - - -7.7770340442657471e-01 6.9287467002868652e-01 - -8.0658948421478271e-01 1.8084625899791718e-01 - <_> - 2.8708953857421875e+01 - - 1 0 1298 3.3725000000000000e+03 1 0 1298 3.3725000000000000e+03 -1 -2 1299 - 8.8500000000000000e+01 - - -1. -1. 8.2561485469341278e-02 -5.9142053127288818e-01 - <_> - 2.8768381118774414e+01 - - 1 2 1300 3.5000000000000000e+00 0 -1 1301 - 5.0000000000000000e-01 -2 -3 1302 1.5500000000000000e+01 - - 5.9427969157695770e-02 -4.2056742310523987e-01 - -9.8931659013032913e-03 8.4051847457885742e-01 - <_> - 2.9076734542846680e+01 - - 1 2 1303 9.5000000000000000e+00 0 -1 1304 - 2.5000000000000000e+00 -2 -3 1305 3.1500000000000000e+01 - - -1.9572173058986664e-01 3.3956131339073181e-01 - -6.8136513233184814e-01 5.0462640821933746e-02 - <_> - 2.8759977340698242e+01 - - 1 2 1306 5.5000000000000000e+00 0 -1 1307 - 4.5500000000000000e+01 -2 -3 1308 1.7500000000000000e+01 - - 4.8079681396484375e-01 -2.0112591981887817e-01 - -3.1675732135772705e-01 6.5385729074478149e-01 - <_> - 2.9039993286132812e+01 - - 1 2 1309 2.4500000000000000e+01 0 -1 1310 - 5.0000000000000000e-01 -2 -3 1311 8.8500000000000000e+01 - - 3.5188516974449158e-01 -4.6550124883651733e-01 - 2.8001558780670166e-01 -9.2857027053833008e-01 - <_> - 2.8505546569824219e+01 - - 1 2 1312 4.5000000000000000e+00 0 -1 1313 - 5.5000000000000000e+00 -2 -3 1314 3.6500000000000000e+01 - - -8.4169548749923706e-01 3.0654165148735046e-01 - -5.6565535068511963e-01 7.2410300374031067e-02 - <_> - 2.8419874191284180e+01 - - 1 2 1315 7.5000000000000000e+00 0 -1 1316 - 1.5000000000000000e+00 -2 -3 1317 1.9650000000000000e+02 - - -2.4478438496589661e-01 3.8954260945320129e-01 - -7.9576337337493896e-01 -8.5671968758106232e-02 - <_> - 2.8579849243164062e+01 - - 1 2 1318 5.2150000000000000e+02 0 -1 1319 - 1.0489500000000000e+04 -2 -3 1320 2.5000000000000000e+00 - - -9.2212122678756714e-01 9.0178871154785156e-01 - -3.1562241911888123e-01 1.5997636318206787e-01 - <_> - 2.8459320068359375e+01 - - 1 2 1321 1.5000000000000000e+00 0 -1 1322 - 5.0000000000000000e-01 -2 -3 1323 1.5000000000000000e+00 - - 1. -8.4853529930114746e-01 3.9166802167892456e-01 - -1.2053045630455017e-01 - <_> - 2.8431394577026367e+01 - - 1 2 1324 7.5000000000000000e+00 0 -1 1325 - 1.5000000000000000e+00 -2 -3 1326 1.1500000000000000e+01 - - -6.6120177507400513e-01 -2.7925388887524605e-02 - 5.5075007677078247e-01 -1.0082748532295227e-01 - <_> - 2.8410589218139648e+01 - - 1 2 1327 5.0000000000000000e-01 0 -1 1328 - 3.9795000000000000e+03 -2 -3 1329 1.0850000000000000e+02 - - -7.1049576997756958e-01 3.9087232947349548e-01 - -3.5268875956535339e-01 3.9845284819602966e-01 - <_> - 2.8433393478393555e+01 - - 1 2 1330 1.4050000000000000e+02 0 -1 1331 - 1.1395000000000000e+03 -2 -3 1332 2.7850000000000000e+02 - - 2.2805029526352882e-02 7.5605183839797974e-01 - 8.0587834119796753e-01 -3.1199476122856140e-01 - <_> - 2.8450145721435547e+01 - - 1 2 1333 1.5000000000000000e+00 0 -1 1334 - 1.6500000000000000e+01 -2 -3 1335 66. - - -6.0126043856143951e-02 5.0909739732742310e-01 - -4.1120404005050659e-01 8.8414204120635986e-01 - <_> - 2.8767240524291992e+01 - - 1 2 1336 1.9250000000000000e+02 0 -1 1337 - 6.5000000000000000e+00 -2 -3 1338 5.0000000000000000e-01 - - -1.9290012121200562e-01 3.1709375977516174e-01 - 7.3394829034805298e-01 -8.9523345232009888e-01 - <_> - 2.8702144622802734e+01 - - 1 2 1339 1.7500000000000000e+01 0 -1 1340 - 5.9500000000000000e+01 -2 -3 1341 1.4500000000000000e+01 - - -6.5095275640487671e-02 5.5785542726516724e-01 - -1.1056717485189438e-01 -9.8700886964797974e-01 - <_> - 2.9059293746948242e+01 - - 1 2 1342 5.0000000000000000e-01 0 -1 1343 - 4.5500000000000000e+01 -2 -3 1344 1.5000000000000000e+00 - - 3.5714986920356750e-01 -7.6953470706939697e-01 - 2.2187548875808716e-01 -3.9218652248382568e-01 - <_> - 2.9209346771240234e+01 - - 1 2 1345 2.5000000000000000e+00 0 -1 1346 - 3.5000000000000000e+00 -2 -3 1347 2.5000000000000000e+00 - - -7.3074096441268921e-01 -1.4095039805397391e-03 - -2.0701825618743896e-01 3.2750377058982849e-01 - <_> - 2.9597459793090820e+01 - - 1 2 1348 4.5000000000000000e+00 0 -1 1349 - 2.5000000000000000e+00 -2 -3 1350 2.6500000000000000e+01 - - -7.1926873922348022e-01 3.8811251521110535e-01 - -5.9947311878204346e-01 4.5066747814416885e-02 - <_> - 2.9683750152587891e+01 - - 1 2 1351 3.0065000000000000e+03 0 -1 1352 - 2.5000000000000000e+00 -2 -3 1353 28. - - 2.7020177245140076e-01 -2.1698342263698578e-01 - -6.7762559652328491e-01 1. - <_> - 2.9320285797119141e+01 - - 1 2 1354 1.0150000000000000e+02 0 -1 1355 - 1.4500000000000000e+01 -2 -3 1356 7.2250000000000000e+02 - - 7.8379042446613312e-02 -5.4737460613250732e-01 - 4.7727963328361511e-01 -3.0317762494087219e-01 - <_> - 2.9167158126831055e+01 - - 1 2 1357 1.6500000000000000e+01 0 -1 1358 - 7.5000000000000000e+00 -2 -3 1359 1.5000000000000000e+00 - - -8.1418055295944214e-01 2.5399097800254822e-01 - 3.6157444119453430e-01 -1.5312907099723816e-01 - <_> - 2.8848419189453125e+01 - - 1 2 1360 1.6655000000000000e+03 0 -1 1361 2034. -2 -3 1362 - 5.0000000000000000e-01 - - 5.0075697898864746e-01 -6.3801389932632446e-01 - 2.4804645776748657e-01 -3.1873735785484314e-01 - <_> - 2.9447010040283203e+01 - - 1 2 1363 8.5000000000000000e+00 0 -1 1364 4233. -2 -3 1365 - 7.5000000000000000e+00 - - -4.1500657796859741e-01 2.0234003663063049e-01 - 5.9859085083007812e-01 -6.2637329101562500e-02 - <_> - 2.9621536254882812e+01 - - 1 2 1366 2.8500000000000000e+01 0 -1 1367 - 6.5000000000000000e+00 -2 -3 1368 9.5000000000000000e+00 - - -3.5707628726959229e-01 5.3847658634185791e-01 - 6.6506719589233398e-01 -8.9059453457593918e-03 - <_> - 2.9310569763183594e+01 - - 1 2 1369 1.5000000000000000e+00 0 -1 1370 - 3.5000000000000000e+00 -2 -3 1371 5.0000000000000000e-01 - - -3.1096714735031128e-01 5.4285377264022827e-01 - 2.7238297462463379e-01 -3.5304248332977295e-01 - <_> - 2.9590980529785156e+01 - - 1 2 1372 3.5000000000000000e+00 0 -1 1373 - 2.1050000000000000e+02 -2 -3 1374 92. - - 5.3505009412765503e-01 -5.9452915191650391e-01 - 2.8041049838066101e-01 -5.0162929296493530e-01 - <_> - 2.9814289093017578e+01 - - 1 2 1375 2.0500000000000000e+01 0 -1 1376 - 2.4500000000000000e+01 -2 -3 1377 3.0250000000000000e+02 - - 8.2163912057876587e-01 -8.8399130105972290e-01 - 2.2330832481384277e-01 -2.4669396877288818e-01 - <_> - 2.9326959609985352e+01 - - 1 2 1378 2.0450000000000000e+02 0 -1 1379 - 3.5000000000000000e+00 -2 -3 1380 1.0150000000000000e+02 - - 1.2511831521987915e-01 -4.8732957243919373e-01 - 5.5693435668945312e-01 -8.8121764361858368e-02 - <_> - 2.9750629425048828e+01 - - 1 2 1381 5.0000000000000000e-01 0 -1 1382 - 6.6500000000000000e+01 -2 -3 1383 4.2500000000000000e+01 - - 4.2367118597030640e-01 -6.9602817296981812e-01 - -3.0880212783813477e-01 5.4164516925811768e-01 - <_> - 3.0155447006225586e+01 - - 1 2 1384 1.5000000000000000e+00 0 -1 1385 - 1.5000000000000000e+00 -2 -3 1386 6.5250000000000000e+02 - - -1.1533217877149582e-01 5.3498321771621704e-01 - 7.6679694652557373e-01 -3.2542830705642700e-01 - <_> - 3.0284055709838867e+01 - - 1 2 1387 8.5000000000000000e+00 0 -1 1388 - 3.2500000000000000e+01 -2 -3 1389 7.5000000000000000e+00 - - -4.8155191540718079e-01 9.3192115426063538e-02 - -7.9174178838729858e-01 3.6954385042190552e-01 - <_> - 3.0242467880249023e+01 - - 1 2 1390 377. 0 -1 1391 2.1500000000000000e+01 -2 -3 1392 - 7.2500000000000000e+01 - - -9.5957934856414795e-01 1. 1.7622567713260651e-01 - -4.1268944740295410e-01 - <_> - 3.0572156906127930e+01 - - 1 2 1393 5.0000000000000000e-01 0 -1 1394 - 3.5000000000000000e+00 -2 -3 1395 5.0000000000000000e-01 - - -4.0002107620239258e-01 4.2895126342773438e-01 - 2.3685966432094574e-01 -4.2866301536560059e-01 - <_> - 3.0457502365112305e+01 - - 1 2 1396 4.5000000000000000e+00 0 -1 1397 - 1.6250000000000000e+02 -2 -3 1398 5.0000000000000000e-01 - - -9.6815794706344604e-01 8.4674382209777832e-01 - 3.9578998088836670e-01 -1.1465511471033096e-01 - <_> - 3.0213840484619141e+01 - - 1 2 1399 1.0500000000000000e+01 0 -1 1400 - 1.2500000000000000e+01 -2 -3 1401 3.7500000000000000e+01 - - -2.4366129934787750e-01 3.7467244267463684e-01 - 7.1891885995864868e-01 -8.4162598848342896e-01 - <_> - 3.0744232177734375e+01 - - 1 2 1402 4.1500000000000000e+01 0 -1 1403 - 8.1500000000000000e+01 -2 -3 1404 1.3500000000000000e+01 - - -4.4227573275566101e-01 7.8069388866424561e-01 - -4.0449675917625427e-01 1.1648512631654739e-01 - <_> - 3.1348308563232422e+01 - - 1 2 1405 6.5000000000000000e+00 0 -1 1406 - 2.5000000000000000e+00 -2 -3 1407 2.7350000000000000e+02 - - 6.0407727956771851e-01 -7.3400579392910004e-02 - 4.1362971067428589e-01 -5.1575213670730591e-01 - <_> - 3.1235607147216797e+01 - - 1 2 1408 2.5000000000000000e+00 0 -1 1409 - 1.5000000000000000e+00 -2 -3 1410 1.6500000000000000e+01 - - -9.3220674991607666e-01 2.5101718306541443e-01 - -1.1270266026258469e-01 3.8758441805839539e-01 - <_> - 3.1384792327880859e+01 - - 1 2 1411 1.5000000000000000e+00 0 -1 1412 - 5.0000000000000000e-01 -2 -3 1413 5.5000000000000000e+00 - - -5.2711343765258789e-01 3.9250954985618591e-01 - -6.3318008184432983e-01 -4.6615589410066605e-02 - <_> - 3.1738409042358398e+01 - - 1 2 1414 5.5000000000000000e+00 0 -1 1415 - 4.5000000000000000e+00 -2 -3 1416 1.5000000000000000e+00 - - -4.7144132852554321e-01 3.7160307168960571e-01 - 1.1029309034347534e-01 -5.2341604232788086e-01 - <_> - 3.1525688171386719e+01 - - 1 2 1417 2.7500000000000000e+01 0 -1 1418 - 2.3750000000000000e+02 -2 -3 1419 549. - - 4.2861595749855042e-01 -2.9767978191375732e-01 - -2.2094106674194336e-01 5.4825913906097412e-01 - <_> - 3.1673740386962891e+01 - - 1 2 1420 1.5000000000000000e+00 0 -1 1421 - 4.9500000000000000e+01 -2 -3 1422 2.9050000000000000e+02 - - -8.7654346227645874e-01 1. -4.0255749225616455e-01 - 2.0044519007205963e-01 - <_> - 3.1621431350708008e+01 - - 1 2 1423 4.7150000000000000e+02 0 -1 1424 - 1.2725000000000000e+03 -2 -3 1425 2.5000000000000000e+00 - - 6.5338832139968872e-01 -9.5602899789810181e-01 - 2.4892359972000122e-01 -2.9016712307929993e-01 - <_> - 3.1906398773193359e+01 - - 1 2 1426 1.7450000000000000e+02 0 -1 1427 - 2.5000000000000000e+00 -2 -3 1428 9.5000000000000000e+00 - - -1.8344168365001678e-01 2.8496730327606201e-01 - -7.7526789903640747e-01 9.1641843318939209e-01 - <_> - 3.1950384140014648e+01 - - 1 2 1429 3.5000000000000000e+00 0 -1 1430 - 4.2950000000000000e+02 -2 -3 1431 4.5000000000000000e+00 - - 4.3984048068523407e-02 -5.2791535854339600e-01 - -4.3941143155097961e-01 4.2989644408226013e-01 - <_> - 3.1539623260498047e+01 - - 1 2 1432 1.4500000000000000e+01 0 -1 1433 - 7.2500000000000000e+01 -2 -3 1434 1.0500000000000000e+01 - - -7.7415037155151367e-01 2.2627775371074677e-01 - 4.7551122307777405e-01 -5.0471997261047363e-01 - <_> - 3.1797233581542969e+01 - - 1 2 1435 6.3500000000000000e+01 0 -1 1436 - 1.0850000000000000e+02 -2 -3 1437 2.9500000000000000e+01 - - 1.0805023461580276e-01 -5.7090175151824951e-01 - 2.5760993361473083e-01 -9.4147402048110962e-01 - <_> - 3.1993934631347656e+01 - - 1 2 1438 5.0000000000000000e-01 0 -1 1439 - 8.5000000000000000e+00 -2 -3 1440 2.1500000000000000e+01 - - -9.1666507720947266e-01 2.8140199184417725e-01 - -3.5136243700981140e-01 5.8392471075057983e-01 - <_> - 3.1840326309204102e+01 - - 1 2 1441 5.0000000000000000e-01 0 -1 1442 - 1.1500000000000000e+01 -2 -3 1443 9.5000000000000000e+00 - - -4.9454715847969055e-01 5.0047302246093750e-01 - -2.3830898106098175e-01 6.4585840702056885e-01 - <_> - 3.2244338989257812e+01 - - 1 2 1444 3.0500000000000000e+01 0 -1 1445 - 6.5000000000000000e+00 -2 -3 1446 1.5000000000000000e+00 - - -7.4317447841167450e-02 4.1323140263557434e-01 - 8.8791429996490479e-01 -5.5340951681137085e-01 - <_> - 3.1874242782592773e+01 - - 1 2 1447 3.5000000000000000e+00 0 -1 1448 - 2.1500000000000000e+01 -2 -3 1449 5.0000000000000000e-01 - - 3.4473064541816711e-01 -8.1799471378326416e-01 - 1.6169716417789459e-01 -4.3674921989440918e-01 - <_> - 3.2102954864501953e+01 - - 1 2 1450 3.5000000000000000e+00 0 -1 1451 - 9.5000000000000000e+00 -2 -3 1452 5.5000000000000000e+00 - - 1. -8.5720342397689819e-01 2.2871300578117371e-01 - -2.1341961622238159e-01 - <_> - 3.2401298522949219e+01 - - 1 2 1453 200. 0 -1 1454 5.0000000000000000e-01 -2 -3 1455 - 2.8950000000000000e+02 - - 3.7498253583908081e-01 -7.6661145687103271e-01 - 2.9834258556365967e-01 -1.9752407073974609e-01 - <_> - 3.2551811218261719e+01 - - 1 2 1456 5.0000000000000000e-01 0 -1 1457 - 7.5000000000000000e+00 -2 -3 1458 3.8450000000000000e+02 - - -8.7189918756484985e-01 7.6164549589157104e-01 - -5.3731578588485718e-01 1.5051148831844330e-01 - <_> - 3.2488182067871094e+01 - - 1 2 1459 1.1500000000000000e+01 0 -1 1460 - 2.9500000000000000e+01 -2 -3 1461 3.5000000000000000e+00 - - -7.3691195249557495e-01 3.8235971331596375e-01 - 3.9164143800735474e-01 -9.9554806947708130e-02 - <_> - 3.2482566833496094e+01 - - 1 2 1462 3.2500000000000000e+01 0 -1 1463 - 1.9350000000000000e+02 -2 -3 1464 1.5000000000000000e+00 - - 6.4678239822387695e-01 -4.1009801626205444e-01 - 6.7378622293472290e-01 -2.0099114626646042e-02 - <_> - 3.2707458496093750e+01 - - 1 2 1465 4.5000000000000000e+00 0 -1 1466 - 6.5000000000000000e+00 -2 -3 1467 4.5000000000000000e+00 - - 2.5011846423149109e-01 -3.5912483930587769e-01 - -5.8069908618927002e-01 5.2788341045379639e-01 - <_> - 3.2913391113281250e+01 - - 1 2 1468 6.5000000000000000e+00 0 -1 1469 - 5.0000000000000000e-01 -2 -3 1470 7.5000000000000000e+00 - - 1.8070517480373383e-01 -3.1766068935394287e-01 - -3.3772376179695129e-01 7.4420511722564697e-01 - <_> - 3.2734760284423828e+01 - - 1 2 1471 5.7550000000000000e+02 0 -1 1472 - 3.7550000000000000e+02 -2 -3 1473 6.5000000000000000e+00 - - -1. 5.9613960981369019e-01 -1.8499724566936493e-01 - 6.4883458614349365e-01 - <_> - 3.2690444946289062e+01 - - 1 2 1474 7.5000000000000000e+00 0 -1 1475 - 1.4750000000000000e+02 -2 -3 1476 1.5000000000000000e+00 - - -8.9465433359146118e-01 5.9437677264213562e-02 - 5.1306140422821045e-01 -4.4315967708826065e-02 - <_> - 3.2958328247070312e+01 - - 1 2 1477 1.3500000000000000e+01 0 -1 1478 - 9.5000000000000000e+00 -2 -3 1479 7.7500000000000000e+01 - - -5.6634312868118286e-01 4.1094091534614563e-01 - 2.8711420297622681e-01 -4.4429847598075867e-01 - <_> - 3.2698860168457031e+01 - - 1 2 1480 5.0000000000000000e-01 0 -1 1481 - 2.1500000000000000e+01 -2 -3 1482 2.5000000000000000e+00 - - 3.7188944220542908e-01 -5.5644994974136353e-01 - 2.1933442354202271e-01 -4.9837693572044373e-01 - <_> - 3.3325595855712891e+01 - - 1 2 1483 1.3500000000000000e+01 0 -1 1484 - 1.6500000000000000e+01 -2 -3 1485 2.2500000000000000e+01 - - -2.3853626102209091e-02 -8.3327960968017578e-01 - 7.2281765937805176e-01 -9.6086347103118896e-01 - <_> - 3.3551895141601562e+01 - - 1 2 1486 4.2500000000000000e+01 0 -1 1487 - 1.6500000000000000e+01 -2 -3 1488 3113. - - 1.6587443649768829e-01 -7.2913789749145508e-01 - 2.3857131600379944e-01 -5.4846972227096558e-01 - <_> - 3.3580631256103516e+01 - - 1 2 1489 6.7250000000000000e+02 0 -1 1490 - 7.5000000000000000e+00 -2 -3 1491 837. - - 1.3001777231693268e-01 -3.4062203764915466e-01 - 7.6844960451126099e-01 -8.4330815076828003e-01 - <_> - 3.3759922027587891e+01 - - 1 2 1492 2.1500000000000000e+01 0 -1 1493 532. -2 -3 1494 - 86. - - 5.4001174867153168e-02 -8.4960693120956421e-01 - 1.7928951978683472e-01 -7.8450816869735718e-01 - <_> - 3.3247550964355469e+01 - - 1 2 1495 1.0250000000000000e+02 0 -1 1496 - 1.2625000000000000e+03 -2 -3 1497 2.0350000000000000e+02 - - 1.9308057427406311e-01 -5.1236999034881592e-01 - 8.4804421663284302e-01 -1.5160441398620605e-01 - <_> - 3.3225006103515625e+01 - - 1 2 1498 6.1500000000000000e+01 0 -1 1499 - 5.3500000000000000e+01 -2 -3 1500 5.5000000000000000e+00 - - 1.6829484701156616e-01 -3.3058983087539673e-01 - -5.5838876962661743e-01 6.2332850694656372e-01 - <_> - 3.3475452423095703e+01 - - 1 2 1501 4.5000000000000000e+00 0 -1 1502 - 5.0000000000000000e-01 -2 -3 1503 1.5000000000000000e+00 - - 1. -9.6208763122558594e-01 2.5044605135917664e-01 - -1.8800856173038483e-01 - <_> - 3.3413291931152344e+01 - - 1 2 1504 4.2500000000000000e+01 0 -1 1505 - 1.5000000000000000e+00 -2 -3 1506 5.0000000000000000e-01 - - 1.7652784287929535e-01 -7.1506422758102417e-01 - 5.3353041410446167e-01 -6.2163762748241425e-02 - <_> - 3.3426036834716797e+01 - - 1 2 1507 1.2500000000000000e+01 0 -1 1508 - 4.5000000000000000e+00 -2 -3 1509 1.2650000000000000e+02 - - -5.9280592203140259e-01 1.2747475877404213e-02 - 5.8372533321380615e-01 -5.3357934951782227e-01 - <_> - 3.3327178955078125e+01 - - 1 2 1510 5.0000000000000000e-01 0 -1 1511 - 3.7850000000000000e+02 -2 -3 1512 5.0000000000000000e-01 - - 1. -8.2863241434097290e-01 4.0927416086196899e-01 - -9.8856933414936066e-02 - <_> - 3.3500465393066406e+01 - - 1 2 1513 1.0500000000000000e+01 0 -1 1514 - 1.0500000000000000e+01 -2 -3 1515 1.7500000000000000e+01 - - -8.8380420207977295e-01 1.7328330874443054e-01 - -5.4674810171127319e-01 5.4331338405609131e-01 - <_> - 3.3262767791748047e+01 - - 1 2 1516 8.5000000000000000e+00 0 -1 1517 - 8.5000000000000000e+00 -2 -3 1518 4.2450000000000000e+02 - - 1.9536088407039642e-01 -3.2009023427963257e-01 - -2.3769624531269073e-01 7.3672533035278320e-01 - <_> - 3.3368907928466797e+01 - - 1 2 1519 2.0850000000000000e+02 0 -1 1520 - 8.6750000000000000e+02 -2 -3 1521 4.1750000000000000e+02 - - 1.0613936930894852e-01 -5.0724560022354126e-01 - 6.2702029943466187e-01 -3.7619924545288086e-01 - <_> - 3.3184082031250000e+01 - - 1 2 1522 9.4950000000000000e+02 0 -1 1523 - 4.3150000000000000e+02 -2 -3 1524 3828. - - -1.8482613563537598e-01 5.3871124982833862e-01 - 8.1260812282562256e-01 -4.5530861616134644e-01 - <_> - 3.3174217224121094e+01 - - 1 2 1525 1.3150000000000000e+02 0 -1 1526 11. -2 -3 1527 - 7.1500000000000000e+01 - - -9.0531766414642334e-01 1. 5.7230138778686523e-01 - -9.8625309765338898e-03 - <_> - 3.3909645080566406e+01 - - 1 2 1528 7.5500000000000000e+01 0 -1 1529 - 7.5000000000000000e+00 -2 -3 1530 4.5000000000000000e+00 - - -1.7431867122650146e-01 5.3473585844039917e-01 - 7.9259443283081055e-01 -4.4027620553970337e-01 - <_> - 3.4323459625244141e+01 - - 1 2 1531 5.0000000000000000e-01 0 -1 1532 - 7.5000000000000000e+00 -2 -3 1533 1.1500000000000000e+01 - - -6.9457572698593140e-01 4.1381478309631348e-01 - 1.8358568847179413e-01 -4.2741861939430237e-01 - <_> - 3.4429889678955078e+01 - - 1 2 1534 1.5000000000000000e+00 0 -1 1535 - 3.4500000000000000e+01 -2 -3 1536 1.5000000000000000e+00 - - -1.6454531252384186e-01 4.1743850708007812e-01 - 2.9410120844841003e-01 -5.4460191726684570e-01 - <_> - 3.4504367828369141e+01 - - 1 2 1537 1.5000000000000000e+00 0 -1 1538 - 1.5000000000000000e+00 -2 -3 1539 131. - - -8.7539535760879517e-01 1.8415120244026184e-01 - 6.7155694961547852e-01 -6.1099171638488770e-01 - <_> - 3.4405834197998047e+01 - - 1 2 1540 2.5000000000000000e+00 0 -1 1541 - 8.5000000000000000e+00 -2 -3 1542 4.5000000000000000e+00 - - 8.8270038366317749e-01 -6.7336601018905640e-01 - -5.2773851901292801e-02 4.8054438829421997e-01 - <_> - 3.3936424255371094e+01 - - 1 2 1543 2.9500000000000000e+01 0 -1 1544 - 1.2500000000000000e+01 -2 -3 1545 4.5000000000000000e+00 - - -3.4647983312606812e-01 5.5897259712219238e-01 - -5.1516854763031006e-01 5.5205401033163071e-02 - <_> - 3.4420852661132812e+01 - - 1 2 1546 5.8550000000000000e+02 0 -1 1547 2604. -2 -3 1548 - 8.3550000000000000e+02 - - -4.0185336023569107e-02 6.1351525783538818e-01 - -6.8721204996109009e-01 6.8576447665691376e-02 - <_> - 3.4590526580810547e+01 - - 1 2 1549 5.0000000000000000e-01 0 -1 1550 - 1.3500000000000000e+01 -2 -3 1551 1.1275000000000000e+03 - - 4.7516748309135437e-01 -7.4518758058547974e-01 - 5.2697926759719849e-01 -2.4679833650588989e-01 - <_> - 3.4543453216552734e+01 - - 1 2 1552 3.9050000000000000e+02 0 -1 1553 - 1.0615000000000000e+03 -2 -3 1554 3.9250000000000000e+02 - - 2.9955598711967468e-01 -6.5189003944396973e-01 - 6.8155354261398315e-01 -4.7070294618606567e-02 - <_> - 3.4947910308837891e+01 - - 1 2 1555 4.5000000000000000e+00 0 -1 1556 - 5.5000000000000000e+00 -2 -3 1557 1.5000000000000000e+00 - - -4.3386736512184143e-01 2.5060659646987915e-01 - 5.0304436683654785e-01 -1.0806567221879959e-01 - <_> - 3.4923019409179688e+01 - - 1 2 1558 1.4750000000000000e+02 0 -1 1559 - 2.3500000000000000e+01 -2 -3 1560 8.5000000000000000e+00 - - -2.4892834946513176e-02 6.8752646446228027e-01 1. - -9.7205096483230591e-01 - <_> - 3.5048244476318359e+01 - - 1 2 1561 3.5000000000000000e+00 0 -1 1562 - 3.0750000000000000e+02 -2 -3 1563 3.5000000000000000e+00 - - -7.9125630855560303e-01 7.2282445430755615e-01 - 3.2094714045524597e-01 -1.5550766885280609e-01 - <_> - 3.5228321075439453e+01 - - 1 2 1564 1.5500000000000000e+01 0 -1 1565 - 5.5000000000000000e+00 -2 -3 1566 2.8550000000000000e+02 - - 2.4254414439201355e-01 -6.7788332700729370e-01 - 3.4273535013198853e-01 -1.6169185936450958e-01 - <_> - 3.5199493408203125e+01 - - 1 2 1567 5.4150000000000000e+02 0 -1 1568 - 1.8500000000000000e+01 -2 -3 1569 2.7150000000000000e+02 - - -7.4225193262100220e-01 6.0149985551834106e-01 - 7.5373405218124390e-01 -2.8824761509895325e-02 - <_> - 3.5414993286132812e+01 - - 1 2 1570 4.0500000000000000e+01 0 -1 1571 - 1.1500000000000000e+01 -2 -3 1572 4.5500000000000000e+01 - - -4.5218327641487122e-01 2.1549758315086365e-01 - 6.7104452848434448e-01 -6.4186567068099976e-01 - <_> - 3.5637798309326172e+01 - - 1 2 1573 4.5000000000000000e+00 0 -1 1574 - 5.0000000000000000e-01 -2 -3 1575 213. - - 4.5747065544128418e-01 -1.1402392387390137e-01 - -5.1459467411041260e-01 3.0709332227706909e-01 - <_> - 3.4993129730224609e+01 - - 1 2 1576 1.5000000000000000e+00 0 -1 1577 - 2.1500000000000000e+01 -2 -3 1578 1.5000000000000000e+00 - - -7.2895491123199463e-01 5.6356453895568848e-01 - 3.3972936868667603e-01 -1.1984481662511826e-01 - <_> - 3.4690479278564453e+01 - - 1 2 1579 6.5000000000000000e+00 0 -1 1580 - 1.3500000000000000e+01 -2 -3 1581 1.5000000000000000e+00 - - -5.0508207082748413e-01 2.4323509633541107e-01 - 4.7208204865455627e-01 -3.0265063047409058e-01 - <_> - 3.5325695037841797e+01 - - 1 2 1582 3.8500000000000000e+01 0 -1 1583 - 4.5000000000000000e+00 -2 -3 1584 4.5000000000000000e+00 - - -9.4407665729522705e-01 6.3521623611450195e-01 - -7.4727159738540649e-01 3.3814178314059973e-03 - <_> - 3.5522109985351562e+01 - - 1 2 1585 1.7500000000000000e+01 0 -1 1586 - 4.5000000000000000e+00 -2 -3 1587 1.4500000000000000e+01 - - -3.9393294602632523e-02 6.1425513029098511e-01 - 2.7176653966307640e-02 -9.3371254205703735e-01 - <_> - 3.5375267028808594e+01 - - 1 2 1588 6.9950000000000000e+02 0 -1 1589 - 3.0785000000000000e+03 -2 -3 1590 1.3850000000000000e+02 - - -1.6790051013231277e-02 8.1265693902969360e-01 - 8.6606562137603760e-01 -2.8514975309371948e-01 - <_> - 3.5136772155761719e+01 - - 1 2 1591 3.3450000000000000e+02 0 -1 1592 - 2.0650000000000000e+02 -2 -3 1593 4516. - - -2.3849676549434662e-01 2.2256006300449371e-01 - 9.2165148258209229e-01 -1. - <_> - 3.5608299255371094e+01 - - 1 2 1594 6.8050000000000000e+02 0 -1 1595 - 1.9150000000000000e+02 -2 -3 1596 2.5000000000000000e+00 - - -4.6031120419502258e-01 5.1092636585235596e-01 - -2.5612125173211098e-03 -7.0145553350448608e-01 - <_> - 3.5747840881347656e+01 - - 1 2 1597 2.0500000000000000e+01 0 -1 1598 - 3.5000000000000000e+00 -2 -3 1599 1.1500000000000000e+01 - - -6.8568515777587891e-01 1.3954034447669983e-01 - -9.1864973306655884e-01 1. - <_> - 3.5924507141113281e+01 - - 1 2 1600 5.0000000000000000e-01 0 -1 1601 - 9.5000000000000000e+00 -2 -3 1602 5.0000000000000000e-01 - - -3.1799489259719849e-01 5.5782216787338257e-01 - 1.3727062940597534e-01 -4.3257597088813782e-01 - <_> - 3.6171756744384766e+01 - - 1 2 1603 2.2365000000000000e+03 0 -1 1604 - 1.4500000000000000e+01 -2 -3 1605 3.9185000000000000e+03 - - -8.6497288942337036e-01 4.3238922953605652e-01 - -7.1348220109939575e-01 5.0993368029594421e-02 - <_> - 3.6158969879150391e+01 - - 1 2 1606 1.0350000000000000e+02 0 -1 1607 - 3.0750000000000000e+02 -2 -3 1608 9.8500000000000000e+01 - - -1.2786464765667915e-02 6.7020785808563232e-01 - 5.7271671295166016e-01 -6.4090871810913086e-01 - <_> - 3.6213565826416016e+01 - - 1 2 1609 1.5000000000000000e+00 0 -1 1610 - 2.8500000000000000e+01 -2 -3 1611 3.1500000000000000e+01 - - 3.0467820167541504e-01 -6.0481971502304077e-01 - -4.2102476954460144e-01 3.8542380928993225e-01 - <_> - 3.6608585357666016e+01 - - 1 2 1612 3.0500000000000000e+01 0 -1 1613 - 1.3500000000000000e+01 -2 -3 1614 1.5000000000000000e+00 - - -7.7328640222549438e-01 2.6755025982856750e-01 - 7.0540744066238403e-01 -5.6723617017269135e-03 - <_> - 3.6375709533691406e+01 - - 1 2 1615 1.8285000000000000e+03 0 -1 1616 - 8.7500000000000000e+01 -2 -3 1617 42. - - -6.4856064319610596e-01 2.1328862011432648e-01 - -6.6769516468048096e-01 3.2830646634101868e-01 - <_> - 3.6277973175048828e+01 - - 1 2 1618 6.5500000000000000e+01 0 -1 1619 - 4.5000000000000000e+00 -2 -3 1620 1.5000000000000000e+00 - - 4.5578959584236145e-01 -9.7738876938819885e-02 - 8.4200102090835571e-01 -9.1339147090911865e-01 - <_> - 3.6741077423095703e+01 - - 1 2 1621 7.1500000000000000e+01 0 -1 1622 582. -2 -3 1623 - 9.6500000000000000e+01 - - -1.9926805794239044e-01 7.7841401100158691e-01 - 6.1977410316467285e-01 -7.0222705602645874e-01 - <_> - 3.6163764953613281e+01 - - 1 2 1624 6.5000000000000000e+00 0 -1 1625 - 9.5000000000000000e+00 -2 -3 1626 2.5000000000000000e+00 - - 8.5611216723918915e-02 -7.3398101329803467e-01 - 5.7343614101409912e-01 -8.4580868482589722e-02 - <_> - 3.5979099273681641e+01 - - 1 2 1627 5.0000000000000000e-01 0 -1 1628 - 2.8500000000000000e+01 -2 -3 1629 2.5000000000000000e+00 - - -9.3677574396133423e-01 1. 2.6836359500885010e-01 - -1.8466624617576599e-01 - <_> - 3.6264331817626953e+01 - - 1 2 1630 3.5000000000000000e+00 0 -1 1631 - 1.8500000000000000e+01 -2 -3 1632 2.9050000000000000e+02 - - -5.7591027021408081e-01 2.5618145242333412e-02 - -5.2080082893371582e-01 2.8523272275924683e-01 - <_> - 3.6717056274414062e+01 - - 1 2 1633 1.9850000000000000e+02 0 -1 1634 - 1.5000000000000000e+00 -2 -3 1635 7.1500000000000000e+01 - - -2.0299407839775085e-01 4.5272570848464966e-01 - -4.2182067036628723e-01 5.7546317577362061e-01 - <_> - 3.6786354064941406e+01 - - 1 2 1636 1.5000000000000000e+00 0 -1 1637 - 8.5000000000000000e+00 -2 -3 1638 1.3500000000000000e+01 - - 6.9297738373279572e-02 8.4946548938751221e-01 - 9.1040611267089844e-02 -6.2724369764328003e-01 - <_> - 3.6694664001464844e+01 - - 1 2 1639 2.0650000000000000e+02 0 -1 1640 - 1.1365000000000000e+03 -2 -3 1641 8.2250000000000000e+02 - - 6.2211245298385620e-02 -5.6873995065689087e-01 - 8.5862481594085693e-01 4.4243175536394119e-02 - <_> - 3.7021118164062500e+01 - - 1 2 1642 3.5000000000000000e+00 0 -1 1643 39. -2 -3 1644 - 1.5000000000000000e+00 - - -9.3912738561630249e-01 1. 3.4181830286979675e-01 - -1.2874929606914520e-01 - <_> - 3.6611862182617188e+01 - - 1 2 1645 1.0500000000000000e+01 0 -1 1646 - 1.5000000000000000e+00 -2 -3 1647 6.9500000000000000e+01 - - 6.9203957915306091e-02 -4.2461958527565002e-01 - 5.7738226652145386e-01 -5.9804332256317139e-01 - <_> - 3.6779636383056641e+01 - - 1 2 1648 2.5000000000000000e+00 0 -1 1649 - 5.0000000000000000e-01 -2 -3 1650 234. - - 4.4199943542480469e-01 -8.0851018428802490e-01 - 1.6777423024177551e-01 -7.7587896585464478e-01 - <_> - 3.6986980438232422e+01 - - 1 2 1651 6.7500000000000000e+01 0 -1 1652 - 8.5000000000000000e+00 -2 -3 1653 4.5000000000000000e+00 - - 1.9858379662036896e-01 -6.2078595161437988e-01 - 4.7864001989364624e-01 -2.1115007996559143e-01 - <_> - 3.6953456878662109e+01 - - 1 2 1654 2.0500000000000000e+01 0 -1 1655 - 8.5000000000000000e+00 -2 -3 1656 2.5000000000000000e+00 - - -5.3770077228546143e-01 6.1488139629364014e-01 - 5.4403012990951538e-01 -3.3521864563226700e-02 - <_> - 3.6882488250732422e+01 - - 1 2 1657 8.5000000000000000e+00 0 -1 1658 - 4.5000000000000000e+00 -2 -3 1659 9.5000000000000000e+00 - - -7.9511338472366333e-01 4.1009962558746338e-01 - -7.7284365892410278e-01 -7.0968911051750183e-02 - <_> - 3.6566123962402344e+01 - - 1 2 1660 2.5000000000000000e+00 0 -1 1661 - 3.5000000000000000e+00 -2 -3 1662 6.7050000000000000e+02 - - -3.1636568903923035e-01 4.0465784072875977e-01 - -3.5978075861930847e-01 8.2645517587661743e-01 - <_> - 3.6930900573730469e+01 - - 1 2 1663 6.5000000000000000e+00 0 -1 1664 - 2.5000000000000000e+00 -2 -3 1665 2.3085000000000000e+03 - - 1.4922286570072174e-01 -5.1194334030151367e-01 - 3.6477506160736084e-01 -9.7712445259094238e-01 - <_> - 3.7481365203857422e+01 - - 1 2 1666 5.0000000000000000e-01 0 -1 1667 - 6.0500000000000000e+01 -2 -3 1668 1.1500000000000000e+01 - - 5.5046468973159790e-01 -7.3915064334869385e-01 - 5.6669384241104126e-02 -4.9786236882209778e-01 - <_> - 3.6951145172119141e+01 - - 1 2 1669 7.5500000000000000e+01 0 -1 1670 - 3.1795000000000000e+03 -2 -3 1671 2.0500000000000000e+01 - - -5.3021740913391113e-01 4.7902247309684753e-01 - -7.1032661199569702e-01 3.0279389023780823e-01 - <_> - 3.7264873504638672e+01 - - 1 2 1672 9.5000000000000000e+00 0 -1 1673 - 8.5000000000000000e+00 -2 -3 1674 1.3850000000000000e+02 - - -4.6093446016311646e-01 3.1372815370559692e-01 - 2.2579427063465118e-01 -5.3932684659957886e-01 - <_> - 3.6978828430175781e+01 - - 1 2 1675 5.0000000000000000e-01 0 -1 1676 - 2.5000000000000000e+00 -2 -3 1677 2.5500000000000000e+01 - - -5.1832169294357300e-01 5.6083697080612183e-01 - -2.8604489564895630e-01 5.8539152145385742e-01 - <_> - 3.7433582305908203e+01 - - 1 2 1678 5.0000000000000000e-01 0 -1 1679 - 2.5000000000000000e+00 -2 -3 1680 1.1050000000000000e+02 - - -4.0517255663871765e-01 4.5475342869758606e-01 - -5.2229130268096924e-01 1.9754523038864136e-01 - <_> - 3.7154258728027344e+01 - - 1 2 1681 4.7500000000000000e+01 0 -1 1682 - 3.6500000000000000e+01 -2 -3 1683 7.5000000000000000e+00 - - -4.5602896809577942e-01 6.7287951707839966e-01 - -8.5228067636489868e-01 -3.6258939653635025e-02 - <_> - 3.7732418060302734e+01 - - 1 2 1684 5.0000000000000000e-01 0 -1 1685 - 5.0000000000000000e-01 -2 -3 1686 2.4500000000000000e+01 - - -3.8009887933731079e-01 5.7815653085708618e-01 - 1.2634699046611786e-01 -4.1870203614234924e-01 - <_> - 3.8184680938720703e+01 - - 1 2 1687 7.4500000000000000e+01 0 -1 1688 - 1.6500000000000000e+01 -2 -3 1689 1.4500000000000000e+01 - - -4.0109759569168091e-01 6.5756392478942871e-01 - 4.5226430892944336e-01 -1.4041431248188019e-01 - <_> - 3.8030368804931641e+01 - - 1 2 1690 4.8500000000000000e+01 0 -1 1691 - 5.0000000000000000e-01 -2 -3 1692 2.7500000000000000e+01 - - 3.0716988444328308e-01 -1.5431092679500580e-01 - -9.8855167627334595e-01 1. - <_> - 3.8261077880859375e+01 - - 1 2 1693 1.5000000000000000e+00 0 -1 1694 - 1.5500000000000000e+01 -2 -3 1695 4.5000000000000000e+00 - - -7.7608674764633179e-01 1.1198835074901581e-01 - 2.3070898652076721e-01 -3.3017936348915100e-01 - <_> - 3.8477287292480469e+01 - - 1 2 1696 8.1500000000000000e+01 0 -1 1697 - 1.2500000000000000e+01 -2 -3 1698 2.3500000000000000e+01 - - -3.0018079280853271e-01 2.1620990335941315e-01 - 2.7798384428024292e-01 -8.1539762020111084e-01 - <_> - 3.8031333923339844e+01 - - 1 2 1699 5.0000000000000000e-01 0 -1 1700 - 5.5000000000000000e+00 -2 -3 1701 4.0500000000000000e+01 - - 3.3561244606971741e-01 -3.4119588136672974e-01 - -4.4595631957054138e-01 4.6959918737411499e-01 - <_> - 3.8664794921875000e+01 - - 1 2 1702 2.1450000000000000e+02 0 -1 1703 - 1.5455000000000000e+03 -2 -3 1704 1945. - - 1.7302942276000977e-01 -3.7786087393760681e-01 - 6.3346213102340698e-01 -4.5024818181991577e-01 - <_> - 3.8027435302734375e+01 - - 1 2 1705 1917. 0 -1 1706 2.5500000000000000e+01 -2 -3 1707 - 6.2500000000000000e+01 - - -6.3735866546630859e-01 4.2439568042755127e-01 - 2.5472366809844971e-01 -3.8954088091850281e-01 - <_> - 3.7680835723876953e+01 - - 1 2 1708 2.5000000000000000e+00 0 -1 1709 - 5.0000000000000000e-01 -2 -3 1710 3.0850000000000000e+02 - - -8.1873381137847900e-01 9.3474626541137695e-02 - -3.4660163521766663e-01 2.3065857589244843e-01 - <_> - 3.7860221862792969e+01 - - 1 2 1711 1.5000000000000000e+00 0 -1 1712 - 1.4500000000000000e+01 -2 -3 1713 5.5000000000000000e+00 - - 5.3702151775360107e-01 -5.0781750679016113e-01 - -3.6291462182998657e-01 1.7938588559627533e-01 - <_> - 3.7817699432373047e+01 - - 1 2 1714 2.2375000000000000e+03 0 -1 1715 - 4.3350000000000000e+02 -2 -3 1716 5.6150000000000000e+02 - - 1. -9.8823112249374390e-01 6.7233330011367798e-01 - -4.2519930750131607e-02 - <_> - 3.8362960815429688e+01 - - 1 2 1717 5.0000000000000000e-01 0 -1 1718 - 2.5000000000000000e+00 -2 -3 1719 7.5000000000000000e+00 - - -7.0525264739990234e-01 5.4526209831237793e-01 - -9.1778365895152092e-03 -5.8029389381408691e-01 - <_> - 3.8116054534912109e+01 - - 1 2 1720 2.9500000000000000e+01 0 -1 1721 67. -2 -3 1722 - 1.5000000000000000e+00 - - -1.5948269516229630e-02 -8.6365360021591187e-01 - 3.1721633672714233e-01 -2.4690923094749451e-01 - <_> - 3.8210441589355469e+01 - - 1 2 1723 2.5000000000000000e+00 0 -1 1724 - 5.0000000000000000e-01 -2 -3 1725 2.5000000000000000e+00 - - -2.6925474405288696e-01 3.7546786665916443e-01 - -6.4338034391403198e-01 9.4390012323856354e-02 - <_> - 3.8725402832031250e+01 - - 1 2 1726 9.7550000000000000e+02 0 -1 1727 1522. -2 -3 1728 - 1.5000000000000000e+00 - - -9.5166552066802979e-01 5.1495945453643799e-01 - 1.2304825335741043e-01 -4.3339455127716064e-01 - <_> - 3.8775840759277344e+01 - - 1 2 1729 2.0550000000000000e+02 0 -1 1730 - 1.2850000000000000e+02 -2 -3 1731 2.0150000000000000e+02 - - 6.9701796770095825e-01 -3.2005232572555542e-01 - 8.7860846519470215e-01 5.0437152385711670e-02 - <_> - 3.9036373138427734e+01 - - 1 2 1732 6.4500000000000000e+01 0 -1 1733 - 7.5000000000000000e+00 -2 -3 1734 1.5500000000000000e+01 - - -5.3216791152954102e-01 2.6053419709205627e-01 - 5.1989716291427612e-01 -5.8972364664077759e-01 - <_> - 3.9175300598144531e+01 - - 1 2 1735 1.0650000000000000e+02 0 -1 1736 - 4.5000000000000000e+00 -2 -3 1737 1.8500000000000000e+01 - - 2.3538964986801147e-01 -3.6743223667144775e-01 - -9.1809195280075073e-01 4.5017480850219727e-01 - <_> - 3.8801700592041016e+01 - - 1 2 1738 5.0000000000000000e-01 0 -1 1739 - 3.5000000000000000e+00 -2 -3 1740 452. - - -6.3299810886383057e-01 3.3003783226013184e-01 - -3.7360009551048279e-01 5.6999093294143677e-01 - <_> - 3.8591518402099609e+01 - - 1 2 1741 8.2750000000000000e+02 0 -1 1742 - 2.5000000000000000e+00 -2 -3 1743 2.3500000000000000e+01 - - -2.1018461883068085e-01 3.2383358478546143e-01 - -6.3107532262802124e-01 6.6837269067764282e-01 - <_> - 3.8231525421142578e+01 - - 1 2 1744 4.5000000000000000e+00 0 -1 1745 - 6.5000000000000000e+00 -2 -3 1746 3.8500000000000000e+01 - - -3.0509510636329651e-01 5.1145386695861816e-01 - -3.5999137163162231e-01 3.2099997997283936e-01 - <_> - 3.8624534606933594e+01 - - 1 2 1747 1.5000000000000000e+00 0 -1 1748 - 5.8350000000000000e+02 -2 -3 1749 8.5000000000000000e+00 - - -4.2885985970497131e-01 3.9300963282585144e-01 - 3.1521242856979370e-01 -4.1773849725723267e-01 - <_> - 3.8236549377441406e+01 - - 1 2 1750 7.5000000000000000e+00 0 -1 1751 - 7.5000000000000000e+00 -2 -3 1752 1.9950000000000000e+02 - - -5.7202762365341187e-01 5.4747480154037476e-01 - -4.2250210046768188e-01 2.7025526762008667e-01 - <_> - 3.7923248291015625e+01 - - 1 2 1753 1.5000000000000000e+00 0 -1 1754 - 6.5000000000000000e+00 -2 -3 1755 1.5000000000000000e+00 - - -8.9815288782119751e-01 5.5224311351776123e-01 - 2.6080465316772461e-01 -3.1330034136772156e-01 - <_> - 3.8539402008056641e+01 - - 1 2 1756 1.3500000000000000e+01 0 -1 1757 - 3.5000000000000000e+00 -2 -3 1758 9.5000000000000000e+00 - - 3.9568208158016205e-02 -5.1092988252639771e-01 - -3.6775493621826172e-01 6.1615198850631714e-01 - <_> - 3.8752826690673828e+01 - - 1 2 1759 3.2500000000000000e+01 0 -1 1760 - 6.5000000000000000e+00 -2 -3 1761 48. - - -4.1952580213546753e-01 2.1342341601848602e-01 - -7.1763622760772705e-01 6.4490622282028198e-01 - <_> - 3.9317680358886719e+01 - - 1 2 1762 9.6500000000000000e+01 0 -1 1763 5677. -2 -3 1764 - 1.0650000000000000e+02 - - -5.0442606210708618e-01 5.6485664844512939e-01 - -3.6739125847816467e-01 2.7350792288780212e-01 - <_> - 3.9856521606445312e+01 - - 1 2 1765 1.1655000000000000e+03 0 -1 1766 - 1.5000000000000000e+00 -2 -3 1767 2.6500000000000000e+01 - - 3.9167502522468567e-01 -2.5601682066917419e-01 - -4.5866334438323975e-01 5.3884023427963257e-01 - <_> - 3.9749794006347656e+01 - - 1 2 1768 7.5000000000000000e+00 0 -1 1769 - 4.5000000000000000e+00 -2 -3 1770 4.4150000000000000e+02 - - -9.4176965951919556e-01 8.0333167314529419e-01 - -1.0673010349273682e-01 4.1367250680923462e-01 - <_> - 3.9065311431884766e+01 - - 1 2 1771 1.3775000000000000e+03 0 -1 1772 - 1.7500000000000000e+01 -2 -3 1773 1.7500000000000000e+01 - - -4.1831207275390625e-01 1.8878687918186188e-01 - -6.8447953462600708e-01 8.3450621366500854e-01 - <_> - 3.8689537048339844e+01 - - 1 2 1774 5.0000000000000000e-01 0 -1 1775 - 5.0000000000000000e-01 -2 -3 1776 5.0000000000000000e-01 - - -4.6729511022567749e-01 3.4363251924514771e-01 - 5.8898377418518066e-01 -3.7577590346336365e-01 - <_> - 3.9216602325439453e+01 - - 1 2 1777 9.4500000000000000e+01 0 -1 1778 - 8.5000000000000000e+00 -2 -3 1779 2.2500000000000000e+01 - - -5.7156268507242203e-02 5.2706509828567505e-01 - -8.3782976865768433e-01 5.0827115774154663e-01 - <_> - 3.9576519012451172e+01 - - 1 2 1780 5.0000000000000000e-01 0 -1 1781 - 4.5000000000000000e+00 -2 -3 1782 1.3500000000000000e+01 - - -5.5766177177429199e-01 3.5991629958152771e-01 - -6.7030203342437744e-01 1.3232802040874958e-02 - <_> - 3.9719017028808594e+01 - - 1 2 1783 1.3750000000000000e+02 0 -1 1784 - 3.7550000000000000e+02 -2 -3 1785 5.5000000000000000e+00 - - -9.2470282316207886e-01 4.7786307334899902e-01 - 1.4250029623508453e-01 -3.8374659419059753e-01 - <_> - 3.9720008850097656e+01 - - 1 2 1786 1.9850000000000000e+02 0 -1 1787 - 5.0000000000000000e-01 -2 -3 1788 9.8500000000000000e+01 - - 8.0348841845989227e-02 -7.2714608907699585e-01 - 6.6121768951416016e-01 9.8916271235793829e-04 - <_> - 4.0004077911376953e+01 - - 1 2 1789 4.5000000000000000e+00 0 -1 1790 - 7.5000000000000000e+00 -2 -3 1791 1.5000000000000000e+00 - - 2.8407061100006104e-01 -3.8908326625823975e-01 - -4.9514287710189819e-01 4.9839928746223450e-01 - <_> - 3.9917087554931641e+01 - - 1 2 1792 3.2500000000000000e+01 0 -1 1793 - 5.0000000000000000e-01 -2 -3 1794 585. - - 4.2522689700126648e-01 -8.6992330849170685e-02 - -8.7693715095520020e-01 4.2241948843002319e-01 - <_> - 3.9895332336425781e+01 - - 1 2 1795 2.5000000000000000e+00 0 -1 1796 14. -2 -3 1797 - 8.0150000000000000e+02 - - -8.8761204481124878e-01 8.5713702440261841e-01 - 7.2065353393554688e-01 -2.1752236410975456e-02 - <_> - 3.9827915191650391e+01 - - 1 2 1798 2.5000000000000000e+00 0 -1 1799 - 3.5000000000000000e+00 -2 -3 1800 5.0000000000000000e-01 - - -8.2021051645278931e-01 3.5183283686637878e-01 - 4.9634662270545959e-01 -6.7418396472930908e-02 - <_> - 3.9946743011474609e+01 - - 1 2 1801 1.3950000000000000e+02 0 -1 1802 - 1.0500000000000000e+01 -2 -3 1803 1.2500000000000000e+01 - - -6.8266421556472778e-01 1.1882679909467697e-01 1. - -9.5458626747131348e-01 - <_> - 4.0323368072509766e+01 - - 1 2 1804 3.3500000000000000e+01 0 -1 1805 - 5.1500000000000000e+01 -2 -3 1806 1.0500000000000000e+01 - - -3.3636894822120667e-01 8.2073229551315308e-01 - 3.7662777304649353e-01 -2.6059541106224060e-01 - <_> - 4.0958503723144531e+01 - - 1 2 1807 3.5000000000000000e+00 0 -1 1808 - 1.5000000000000000e+00 -2 -3 1809 8.5000000000000000e+00 - - 2.2758090496063232e-01 -5.6749087572097778e-01 - 2.7914678212255239e-03 6.3513386249542236e-01 - <_> - 4.1149982452392578e+01 - - 1 2 1810 1.6500000000000000e+01 0 -1 1811 - 3.4500000000000000e+01 -2 -3 1812 4.2500000000000000e+01 - - 1.9147972762584686e-01 -4.0481618046760559e-01 - -7.6606553792953491e-01 4.8341959714889526e-01 - <_> - 4.1291107177734375e+01 - - 1 2 1813 5.0000000000000000e-01 0 -1 1814 - 9.2500000000000000e+01 -2 -3 1815 1.8500000000000000e+01 - - -2.8004845976829529e-01 3.2247513532638550e-01 - -4.3766206502914429e-01 3.7250506877899170e-01 - <_> - 4.1338165283203125e+01 - - 1 2 1816 8.5000000000000000e+00 0 -1 1817 - 1.4975000000000000e+03 -2 -3 1818 1.1500000000000000e+01 - - 5.4030120372772217e-01 -6.2127673625946045e-01 - -7.3714929819107056e-01 -2.8116470202803612e-02 - <_> - 4.0824058532714844e+01 - - 1 2 1819 1.0150000000000000e+02 0 -1 1820 - 5.0000000000000000e-01 -2 -3 1821 8.6500000000000000e+01 - - 1.3742440938949585e-01 -5.1410740613937378e-01 - 3.9086878299713135e-01 -5.1371574401855469e-01 - <_> - 4.1013961791992188e+01 - - 1 2 1822 3.8500000000000000e+01 0 -1 1823 - 5.1350000000000000e+02 -2 -3 1824 7.5000000000000000e+00 - - 4.4827082753181458e-01 -6.4318430423736572e-01 - -8.9208698272705078e-01 1.8990385532379150e-01 - <_> - 4.1263370513916016e+01 - - 1 2 1825 4.5000000000000000e+00 0 -1 1826 - 1.6500000000000000e+01 -2 -3 1827 5.0000000000000000e-01 - - -7.4878937005996704e-01 2.4940766394138336e-01 - 1.2522089295089245e-02 -6.5872979164123535e-01 - <_> - 4.1767433166503906e+01 - - 1 2 1828 5.0000000000000000e-01 0 -1 1829 - 2.8050000000000000e+02 -2 -3 1830 4.5000000000000000e+00 - - 5.0406265258789062e-01 -8.8616244494915009e-02 - -3.4679779410362244e-01 9.0911424160003662e-01 - <_> - 4.1977439880371094e+01 - - 1 2 1831 1.5000000000000000e+00 0 -1 1832 - 1.5000000000000000e+00 -2 -3 1833 1.8500000000000000e+01 - - -3.0890017747879028e-01 4.2208892107009888e-01 - -6.2434047460556030e-01 -4.6953088603913784e-03 - <_> - 4.1689002990722656e+01 - - 1 2 1834 8.5000000000000000e+00 0 -1 1835 - 9.5000000000000000e+00 -2 -3 1836 1.5000000000000000e+00 - - -5.0051945447921753e-01 2.1112911403179169e-01 - 6.0711330175399780e-01 -1.2307582795619965e-01 - <_> - 4.2047183990478516e+01 - - 1 2 1837 1.2500000000000000e+01 0 -1 1838 - 4.5000000000000000e+00 -2 -3 1839 1.0500000000000000e+01 - - -6.6009265184402466e-01 3.5818198323249817e-01 - -3.3626151084899902e-01 8.4897673130035400e-01 - <_> - 4.2214286804199219e+01 - - 1 2 1840 1.4500000000000000e+01 0 -1 1841 - 7.2500000000000000e+01 -2 -3 1842 3.2650000000000000e+02 - - -7.1858340501785278e-01 1.6710358858108521e-01 - 2.8976836800575256e-01 -7.7849155664443970e-01 - <_> - 4.2179775238037109e+01 - - 1 2 1843 7.5000000000000000e+00 0 -1 1844 - 2.1500000000000000e+01 -2 -3 1845 3.5000000000000000e+00 - - -1.8530772626399994e-01 3.5436087846755981e-01 - -6.8795353174209595e-01 3.3058721572160721e-02 - <_> - 4.2268901824951172e+01 - - 1 2 1846 3.9865000000000000e+03 0 -1 1847 - 9.5000000000000000e+00 -2 -3 1848 50. - - -8.7134647369384766e-01 8.9125812053680420e-02 - -9.8863673210144043e-01 1. - <_> - 4.2169776916503906e+01 - - 1 2 1849 1.5000000000000000e+00 0 -1 1850 - 1.5000000000000000e+00 -2 -3 1851 3531. - - 4.0612372756004333e-01 -3.0086937546730042e-01 - -4.4789454340934753e-01 1.9873715937137604e-01 - <_> - 4.1840965270996094e+01 - - 1 2 1852 6.5000000000000000e+00 0 -1 1853 - 1.3500000000000000e+01 -2 -3 1854 1.0500000000000000e+01 - - -3.2881295680999756e-01 2.9842245578765869e-01 - 6.5677136182785034e-01 -1.4609988033771515e-01 - <_> - 4.1779693603515625e+01 - - 1 2 1855 1.7500000000000000e+01 0 -1 1856 - 6.2550000000000000e+02 -2 -3 1857 3.5500000000000000e+01 - - 4.6628248691558838e-01 -4.2457789182662964e-01 - -5.6651604175567627e-01 7.6269887387752533e-02 - <_> - 4.1834537506103516e+01 - - 1 2 1858 9.5450000000000000e+02 0 -1 1859 - 5.1585000000000000e+03 -2 -3 1860 6.5000000000000000e+00 - - 6.7174881696701050e-01 -5.5098003149032593e-01 - -5.3131961822509766e-01 5.4840639233589172e-02 - <_> - 4.1514595031738281e+01 - - 1 2 1861 1.9050000000000000e+02 0 -1 1862 198. -2 -3 1863 - 4.5000000000000000e+00 - - -9.0632820129394531e-01 6.2302565574645996e-01 - 2.2914041578769684e-01 -3.1994026899337769e-01 - <_> - 4.1677814483642578e+01 - - 1 2 1864 1.4500000000000000e+01 0 -1 1865 - 8.5000000000000000e+00 -2 -3 1866 1.6450000000000000e+02 - - -5.9017485380172729e-01 7.7795445919036865e-01 - 1.6321752965450287e-01 -9.1361731290817261e-01 - <_> - 4.1670925140380859e+01 - - 1 2 1867 1.5000000000000000e+00 0 -1 1868 - 2.5000000000000000e+00 -2 -3 1869 3.2500000000000000e+01 - - -7.7524507045745850e-01 3.3760032057762146e-01 - -5.7039487361907959e-01 -6.8891793489456177e-03 - <_> - 4.2190979003906250e+01 - - 1 2 1870 1.5000000000000000e+00 0 -1 1871 - 3.0500000000000000e+01 -2 -3 1872 2.8500000000000000e+01 - - 5.2005475759506226e-01 -6.7560416460037231e-01 - -2.8469097614288330e-01 4.6015539765357971e-01 - <_> - 4.2414993286132812e+01 - - 1 2 1873 4.5350000000000000e+02 0 -1 1874 - 5.6250000000000000e+02 -2 -3 1875 1386. - - 2.2401304543018341e-01 -2.9675450921058655e-01 - 9.4739109277725220e-01 -3.2808578014373779e-01 - <_> - 4.2387161254882812e+01 - - 1 2 1876 6.4500000000000000e+01 0 -1 1877 - 1.0150000000000000e+02 -2 -3 1878 3.9500000000000000e+01 - - -8.6874485015869141e-02 4.2865848541259766e-01 - 4.3658611178398132e-01 -5.8364778757095337e-01 - <_> - 4.2977474212646484e+01 - - 1 2 1879 1.5000000000000000e+00 0 -1 1880 - 3.4500000000000000e+01 -2 -3 1881 3.4500000000000000e+01 - - -9.5992848277091980e-02 5.9031045436859131e-01 - -3.2916188240051270e-01 5.4475629329681396e-01 - <_> - 4.2946041107177734e+01 - - 1 2 1882 3.5000000000000000e+00 0 -1 1883 - 5.0000000000000000e-01 -2 -3 1884 2.9500000000000000e+01 - - -8.7138921022415161e-01 5.3535938262939453e-01 - -8.3411961793899536e-01 -3.1432915478944778e-02 - <_> - 4.3175075531005859e+01 - - 1 2 1885 5.1500000000000000e+01 0 -1 1886 - 9.5000000000000000e+00 -2 -3 1887 2.6500000000000000e+01 - - 2.2903612256050110e-01 -2.7770024538040161e-01 - -9.0822434425354004e-01 5.1287508010864258e-01 - <_> - 4.3395133972167969e+01 - - 1 2 1888 8.5000000000000000e+00 0 -1 1889 - 3.1500000000000000e+01 -2 -3 1890 9.5000000000000000e+00 - - -5.6919294595718384e-01 2.2005747258663177e-01 - -6.5205544233322144e-01 2.4285869300365448e-01 - <_> - 4.3123023986816406e+01 - - 1 2 1891 5.0000000000000000e-01 0 -1 1892 - 2.3500000000000000e+01 -2 -3 1893 2.8950000000000000e+02 - - 5.0510871410369873e-01 -4.2869842052459717e-01 - 2.8495252132415771e-01 -3.5368323326110840e-01 - <_> - 4.3039192199707031e+01 - - 1 2 1894 1.9450000000000000e+02 0 -1 1895 - 5.0000000000000000e-01 -2 -3 1896 1.9750000000000000e+02 - - 2.6153838634490967e-01 -6.4255547523498535e-01 - 5.5495703220367432e-01 -8.3832859992980957e-02 - <_> - 4.2904518127441406e+01 - - 1 2 1897 8.5000000000000000e+00 0 -1 1898 - 4.8500000000000000e+01 -2 -3 1899 5.5000000000000000e+00 - - -7.5044608116149902e-01 6.8186897039413452e-01 - 3.7062332034111023e-01 -1.3467402756214142e-01 - <_> - 4.3051071166992188e+01 - - 1 2 1900 7.5000000000000000e+00 0 -1 1901 27. -2 -3 1902 - 1.5000000000000000e+00 - - 8.0564457178115845e-01 -8.3087015151977539e-01 - -6.9865477085113525e-01 1.4655402302742004e-01 - <_> - 4.3287654876708984e+01 - - 1 2 1903 1.5000000000000000e+00 0 -1 1904 - 5.4550000000000000e+02 -2 -3 1905 3.1650000000000000e+02 - - 4.4309249520301819e-01 -4.8507699370384216e-01 - -3.5189905762672424e-01 2.3658131062984467e-01 - <_> - 4.3207912445068359e+01 - - 1 2 1906 3.5500000000000000e+01 0 -1 1907 - 1.4500000000000000e+01 -2 -3 1908 3.5000000000000000e+00 - - -5.9388571977615356e-01 3.0807968974113464e-01 - 4.9596279859542847e-01 -7.9740844666957855e-02 - <_> - 4.3681106567382812e+01 - - 1 2 1909 8.3550000000000000e+02 0 -1 1910 - 5.0000000000000000e-01 -2 -3 1911 127. - - 4.7319233417510986e-01 -7.7726446092128754e-02 - -6.6155201196670532e-01 8.7220698595046997e-01 - <_> - 4.3433261871337891e+01 - - 1 2 1912 6.5000000000000000e+00 0 -1 1913 - 1.6550000000000000e+02 -2 -3 1914 7.5000000000000000e+00 - - -5.4153585433959961e-01 9.1551077365875244e-01 - 3.5053235292434692e-01 -2.4784129858016968e-01 - <_> - 4.3632259368896484e+01 - - 1 2 1915 9.5000000000000000e+00 0 -1 1916 - 5.5000000000000000e+00 -2 -3 1917 1.4015000000000000e+03 - - -3.0769789218902588e-01 1.9899617135524750e-01 - 5.1420164108276367e-01 -7.2247970104217529e-01 - <_> - 4.3781681060791016e+01 - - 1 2 1918 5.0000000000000000e-01 0 -1 1919 - 6.3500000000000000e+01 -2 -3 1920 285. - - -9.4710224866867065e-01 -1.1491143703460693e-01 - 1.4942164719104767e-01 -9.0888887643814087e-01 - <_> - 4.3436016082763672e+01 - - 1 2 1921 3.5000000000000000e+00 0 -1 1922 - 2.5000000000000000e+00 -2 -3 1923 1.1500000000000000e+01 - - 5.1440989971160889e-01 -2.3126052320003510e-01 - -3.4566339850425720e-01 6.5181219577789307e-01 - <_> - 4.3652484893798828e+01 - - 1 2 1924 7.5000000000000000e+00 0 -1 1925 10. -2 -3 1926 - 6.5000000000000000e+00 - - 1. -1. 2.1646568179130554e-01 -3.2139009237289429e-01 - <_> - 4.3613075256347656e+01 - - 1 2 1927 3.5000000000000000e+00 0 -1 1928 - 4.0500000000000000e+01 -2 -3 1929 1.5000000000000000e+00 - - 3.4087118506431580e-01 -7.6730841398239136e-01 - 6.0096609592437744e-01 -3.9409600198268890e-02 - <_> - 4.4572402954101562e+01 - - 1 2 1930 9.5000000000000000e+00 0 -1 1931 - 1.6500000000000000e+01 -2 -3 1932 2.4500000000000000e+01 - - -5.2820408344268799e-01 9.5932966470718384e-01 - -4.1353395581245422e-01 2.8032150864601135e-01 - <_> - 4.4815895080566406e+01 - - 1 2 1933 9.5000000000000000e+00 0 -1 1934 - 3.5000000000000000e+00 -2 -3 1935 3.5500000000000000e+01 - - 3.9567866921424866e-01 -1.5199808776378632e-01 - -6.2261438369750977e-01 3.6078429222106934e-01 - <_> - 4.4723213195800781e+01 - - 1 2 1936 9.7500000000000000e+01 0 -1 1937 - 1.3500000000000000e+01 -2 -3 1938 1.4500000000000000e+01 - - -9.2681065201759338e-02 5.0076460838317871e-01 - -8.6433887481689453e-01 9.0161460638046265e-01 - <_> - 4.4693969726562500e+01 - - 1 2 1939 7.0500000000000000e+01 0 -1 1940 - 7.9500000000000000e+01 -2 -3 1941 1.0500000000000000e+01 - - -2.9245814308524132e-02 6.7543286085128784e-01 - -9.3750089406967163e-01 8.4202694892883301e-01 - <_> - 4.4661819458007812e+01 - - 1 2 1942 1.0050000000000000e+02 0 -1 1943 - 5.0000000000000000e-01 -2 -3 1944 2.0350000000000000e+02 - - 2.5402522087097168e-01 -5.0677686929702759e-01 - 5.1687967777252197e-01 -2.2271750867366791e-01 - <_> - 4.4569755554199219e+01 - - 1 2 1945 2.5000000000000000e+00 0 -1 1946 - 5.5000000000000000e+00 -2 -3 1947 1.5000000000000000e+00 - - -9.8248469829559326e-01 5.9973138570785522e-01 - 3.8618931174278259e-01 -9.2063978314399719e-02 - <_> - 4.4696201324462891e+01 - - 1 2 1948 9.5000000000000000e+00 0 -1 1949 - 5.0000000000000000e-01 -2 -3 1950 1.5000000000000000e+00 - - 1.2644694745540619e-01 -3.0191975831985474e-01 - -7.1231579780578613e-01 6.6510468721389771e-01 - <_> - 4.4841907501220703e+01 - - 1 2 1951 1.0500000000000000e+01 0 -1 1952 2. -2 -3 1953 - 8.5000000000000000e+00 - - 8.4430450201034546e-01 -8.3156448602676392e-01 - -6.2735277414321899e-01 1.4570562541484833e-01 - <_> - 4.5156547546386719e+01 - - 1 2 1954 3.5000000000000000e+00 0 -1 1955 - 1.3650000000000000e+02 -2 -3 1956 9.4500000000000000e+01 - - 1.4747160673141479e-01 -4.2295038700103760e-01 - 8.1315612792968750e-01 3.4540321677923203e-02 - <_> - 4.5181140899658203e+01 - - 1 2 1957 9.2500000000000000e+01 0 -1 1958 - 3.3500000000000000e+01 -2 -3 1959 5.0000000000000000e-01 - - -1.5787394717335701e-02 5.7843238115310669e-01 1. - -6.4788794517517090e-01 - <_> - 4.5094200134277344e+01 - - 1 2 1960 5.0000000000000000e-01 0 -1 1961 11. -2 -3 1962 - 8.5000000000000000e+00 - - 7.4942219257354736e-01 -6.0185027122497559e-01 - -1.5223936736583710e-01 5.9839087724685669e-01 - <_> - 4.4670524597167969e+01 - - 1 2 1963 5.0000000000000000e-01 0 -1 1964 - 2.9500000000000000e+01 -2 -3 1965 1.5000000000000000e+00 - - -9.6831363439559937e-01 3.5105532407760620e-01 - 1.3558974862098694e-01 -4.2367911338806152e-01 - <_> - 4.5116874694824219e+01 - - 1 2 1966 1.1150000000000000e+02 0 -1 1967 - 2.2385000000000000e+03 -2 -3 1968 2.2250000000000000e+02 - - 2.0428524911403656e-01 -2.9593735933303833e-01 - 7.5892090797424316e-01 -4.3717506527900696e-01 - <_> - 4.5320117950439453e+01 - - 1 2 1969 1.4500000000000000e+01 0 -1 1970 - 5.0000000000000000e-01 -2 -3 1971 1.6850000000000000e+02 - - 2.4405136704444885e-01 -7.4230778217315674e-01 - 2.0324403047561646e-01 -7.5181680917739868e-01 - <_> - 4.5513221740722656e+01 - - 1 2 1972 1.6500000000000000e+01 0 -1 1973 - 4.3500000000000000e+01 -2 -3 1974 6.5000000000000000e+00 - - 5.3427243232727051e-01 -9.3790411949157715e-01 - 1.9310376048088074e-01 -3.0972629785537720e-01 - <_> - 4.5484699249267578e+01 - - 1 2 1975 3.8150000000000000e+02 0 -1 1976 - 2.4500000000000000e+01 -2 -3 1977 1.9050000000000000e+02 - - -8.3647137880325317e-01 6.7275720834732056e-01 - 7.3206281661987305e-01 -2.8522776439785957e-02 - <_> - 4.5164001464843750e+01 - - 1 2 1978 5.5000000000000000e+00 0 -1 1979 - 1.5000000000000000e+00 -2 -3 1980 9.5000000000000000e+00 - - 1.4569054543972015e-01 -3.2069975137710571e-01 - -5.0144684314727783e-01 7.2659003734588623e-01 - <_> - 4.5379909515380859e+01 - - 1 2 1981 4.5000000000000000e+00 0 -1 1982 - 2.5000000000000000e+00 -2 -3 1983 3.5500000000000000e+01 - - 1.1976420134305954e-01 -7.3696619272232056e-01 - -8.9609044790267944e-01 2.1590869128704071e-01 - <_> - 4.5552185058593750e+01 - - 1 2 1984 1.0500000000000000e+01 0 -1 1985 - 1.8500000000000000e+01 -2 -3 1986 2.5000000000000000e+00 - - -2.9774469137191772e-01 3.9270588755607605e-01 - 1.7227473855018616e-01 -4.3705809116363525e-01 - <_> - 4.5424057006835938e+01 - - 1 2 1987 4.5000000000000000e+00 0 -1 1988 - 2.5000000000000000e+00 -2 -3 1989 6.5000000000000000e+00 - - 4.0223541855812073e-01 -5.1850569248199463e-01 - -5.7175463438034058e-01 3.2103583216667175e-02 - <_> - 4.4719905853271484e+01 - - 1 2 1990 293. 0 -1 1991 4.5650000000000000e+02 -2 -3 1992 - 9.1500000000000000e+01 - - -7.0415091514587402e-01 1. 5.6420707702636719e-01 - -1.8475128337740898e-02 - <_> - 4.4768821716308594e+01 - - 1 2 1993 5.4050000000000000e+02 0 -1 1994 - 1.0105000000000000e+03 -2 -3 1995 3.5000000000000000e+00 - - -9.6306586265563965e-01 7.0629078149795532e-01 - -4.8114392161369324e-01 4.8914406448602676e-02 - <_> - 4.4811882019042969e+01 - - 1 2 1996 1.5000000000000000e+00 0 -1 1997 - 6.1500000000000000e+01 -2 -3 1998 1.5000000000000000e+00 - - 4.2610383033752441e-01 -4.3679422140121460e-01 - 4.3062459677457809e-02 -5.0240081548690796e-01 - <_> - 4.4782844543457031e+01 - - 1 2 1999 2.3500000000000000e+01 0 -1 2000 - 1.0500000000000000e+01 -2 -3 2001 2.0750000000000000e+02 - - -4.0699142217636108e-01 4.2282894253730774e-01 - -2.9037833213806152e-02 6.6520535945892334e-01 - <_> - 4.4953098297119141e+01 - - 1 2 2002 1.5000000000000000e+00 0 -1 2003 - 4.5250000000000000e+02 -2 -3 2004 2.8150000000000000e+02 - - 4.7697910666465759e-01 -4.2501795291900635e-01 - 1.7025266587734222e-01 -3.6029878258705139e-01 - <_> - 4.5256881713867188e+01 - - 1 2 2005 3.8550000000000000e+02 0 -1 2006 - 1.9500000000000000e+01 -2 -3 2007 2.5000000000000000e+00 - - -4.4226761907339096e-02 -8.9648228883743286e-01 - -2.1406635642051697e-01 3.0378299951553345e-01 - <_> - 4.4909713745117188e+01 - - 1 2 2008 9.5000000000000000e+00 0 -1 2009 - 7.5000000000000000e+00 -2 -3 2010 1.8950000000000000e+02 - - -3.4716686606407166e-01 3.7112823128700256e-01 - 5.6419366598129272e-01 -3.5776185989379883e-01 - <_> - 4.5013404846191406e+01 - - 1 2 2011 382. 0 -1 2012 4.5000000000000000e+00 -2 -3 2013 - 4.8500000000000000e+01 - - -8.9492672681808472e-01 1.0369122773408890e-01 - -9.3923377990722656e-01 1. - <_> - 4.4988971710205078e+01 - - 1 2 2014 5.5000000000000000e+00 0 -1 2015 - 1.9500000000000000e+01 -2 -3 2016 83. - - -2.4434272199869156e-02 6.5366929769515991e-01 - 5.1018899679183960e-01 -5.0032502412796021e-01 - <_> - 4.5461128234863281e+01 - - 1 2 2017 1.7500000000000000e+01 0 -1 2018 - 6.5000000000000000e+00 -2 -3 2019 2.5000000000000000e+00 - - -6.1140297912061214e-03 -7.2916007041931152e-01 - 4.7215846180915833e-01 -9.9503576755523682e-02 - <_> - 4.5421901702880859e+01 - - 1 2 2020 3.8500000000000000e+01 0 -1 2021 - 1.9500000000000000e+01 -2 -3 2022 4.1350000000000000e+02 - - -3.9226554334163666e-02 6.2177938222885132e-01 - 4.9934285879135132e-01 -8.5462218523025513e-01 - <_> - 4.5579975128173828e+01 - - 1 2 2023 4.5000000000000000e+00 0 -1 2024 - 1.2500000000000000e+01 -2 -3 2025 6.0750000000000000e+02 - - 1.5807190537452698e-01 -4.8279589414596558e-01 - -7.0834666490554810e-02 5.2963757514953613e-01 - <_> - 4.5701972961425781e+01 - - 1 2 2026 2.5500000000000000e+01 0 -1 2027 - 4.5000000000000000e+00 -2 -3 2028 6.6500000000000000e+01 - - 1.2199875712394714e-01 -4.4052368402481079e-01 - 4.9520158767700195e-01 -7.6688897609710693e-01 - <_> - 4.6094631195068359e+01 - - 1 2 2029 1.3500000000000000e+01 0 -1 2030 - 3.3500000000000000e+01 -2 -3 2031 5.0000000000000000e-01 - - -6.6773444414138794e-01 2.0011912286281586e-01 - 3.9265581965446472e-01 -1.3401876389980316e-01 - <_> - 4.5980365753173828e+01 - - 1 2 2032 7.5000000000000000e+00 0 -1 2033 - 6.8500000000000000e+01 -2 -3 2034 2.5000000000000000e+00 - - 1. -1. 3.8803017139434814e-01 -1.1426544934511185e-01 - <_> - 4.5323959350585938e+01 - - 1 2 2035 6.4500000000000000e+01 0 -1 2036 - 5.0000000000000000e-01 -2 -3 2037 2.2500000000000000e+01 - - -6.5640282630920410e-01 1.7750787734985352e-01 - -6.4647871255874634e-01 7.0243728160858154e-01 - <_> - 4.5314762115478516e+01 - - 1 2 2038 3.1050000000000000e+02 0 -1 2039 - 9.2250000000000000e+02 -2 -3 2040 2.5000000000000000e+00 - - -9.1993892565369606e-03 8.6791253089904785e-01 - 2.0070725679397583e-01 -7.1457195281982422e-01 - <_> - 4.5741744995117188e+01 - - 1 2 2041 4.5000000000000000e+00 0 -1 2042 - 8.5000000000000000e+00 -2 -3 2043 5.5000000000000000e+00 - - -3.7333619594573975e-01 4.2698273062705994e-01 - -3.3845084905624390e-01 4.5299550890922546e-01 - <_> - 4.5397357940673828e+01 - - 1 2 2044 5.0000000000000000e-01 0 -1 2045 673. -2 -3 2046 - 99. - - 3.5919088125228882e-01 -4.5086368918418884e-01 - -3.4438827633857727e-01 6.0893869400024414e-01 - <_> - 4.6037506103515625e+01 - - 1 2 2047 1.9450000000000000e+02 0 -1 2048 23. -2 -3 2049 - 2.9350000000000000e+02 - - -7.0736461877822876e-01 3.2864594459533691e-01 - 6.4014822244644165e-01 -5.0045125186443329e-02 - <_> - 4.6086334228515625e+01 - - 1 2 2050 1.7315000000000000e+03 0 -1 2051 - 7.5000000000000000e+00 -2 -3 2052 1.4250000000000000e+02 - - 4.8830408602952957e-02 -6.7689567804336548e-01 - 7.0138692855834961e-01 -1.2242168188095093e-01 - <_> - 4.5987598419189453e+01 - - 1 2 2053 3.6500000000000000e+01 0 -1 2054 - 1.5500000000000000e+01 -2 -3 2055 5.0000000000000000e-01 - - -3.9643624424934387e-01 8.7146002054214478e-01 - 4.2710801959037781e-01 -9.8734937608242035e-02 - <_> - 4.6501991271972656e+01 - - 1 2 2056 5.0000000000000000e-01 0 -1 2057 - 8.7450000000000000e+02 -2 -3 2058 1.5000000000000000e+00 - - 5.1439017057418823e-01 -2.0838183164596558e-01 - 2.9052633047103882e-01 -4.0280446410179138e-01 - <_> - 4.6733814239501953e+01 - - 1 2 2059 1.0500000000000000e+01 0 -1 2060 - 5.0000000000000000e-01 -2 -3 2061 1.0650000000000000e+02 - - 6.5033751726150513e-01 -6.9465583562850952e-01 - 2.3182304203510284e-01 -4.8147320747375488e-01 - <_> - 4.6992088317871094e+01 - - 1 2 2062 3.3500000000000000e+01 0 -1 2063 - 1.9500000000000000e+01 -2 -3 2064 5.5000000000000000e+00 - - 8.6601603031158447e-01 -7.5138849020004272e-01 - 2.5827473402023315e-01 -2.7564272284507751e-01 - <_> - 4.7450847625732422e+01 - - 1 2 2065 1.0450000000000000e+02 0 -1 2066 - 5.5000000000000000e+00 -2 -3 2067 1.1250000000000000e+02 - - -4.5257368683815002e-01 1.1983016133308411e-01 - 4.5876160264015198e-01 -5.6709617376327515e-01 - <_> - 4.7730972290039062e+01 - - 1 2 2068 5.0000000000000000e-01 0 -1 2069 - 1.5000000000000000e+00 -2 -3 2070 8.5000000000000000e+00 - - -7.2330117225646973e-01 3.9086556434631348e-01 - -4.4356769323348999e-01 1.6937237977981567e-01 - <_> - 4.7399227142333984e+01 - - 1 2 2071 8.4050000000000000e+02 0 -1 2072 - 8.4050000000000000e+02 -2 -3 2073 1.4050000000000000e+02 - - -9.1558247804641724e-02 7.4099737405776978e-01 - 3.8451832532882690e-01 -3.3174303174018860e-01 - <_> - 4.7281646728515625e+01 - - 1 2 2074 5.0000000000000000e-01 0 -1 2075 16. -2 -3 2076 - 1.5000000000000000e+00 - - -8.2827556133270264e-01 6.9123578071594238e-01 - 4.4064518809318542e-01 -1.1758007854223251e-01 - <_> - 4.6855220794677734e+01 - - 1 2 2077 2.9050000000000000e+02 0 -1 2078 - 5.0000000000000000e-01 -2 -3 2079 2.5000000000000000e+00 - - 2.7002122998237610e-01 -4.2642879486083984e-01 - 6.4271414279937744e-01 -9.9449371919035912e-03 - <_> - 4.6856540679931641e+01 - - 1 2 2080 3.5000000000000000e+00 0 -1 2081 - 5.5000000000000000e+00 -2 -3 2082 1.3150000000000000e+02 - - 3.0294808745384216e-01 -9.4428914785385132e-01 - 7.9829651117324829e-01 1.3203345006331801e-03 - <_> - 4.7140712738037109e+01 - - 1 2 2083 2.5000000000000000e+00 0 -1 2084 - 6.5000000000000000e+00 -2 -3 2085 5.5000000000000000e+00 - - -6.8201988935470581e-01 -1.1526307091116905e-02 - 2.8417402505874634e-01 -4.2742845416069031e-01 - <_> - 4.7207427978515625e+01 - - 1 2 2086 1.3500000000000000e+01 0 -1 2087 - 5.0000000000000000e-01 -2 -3 2088 1.3500000000000000e+01 - - 6.6715896129608154e-02 -7.0858204364776611e-01 - 4.9522966146469116e-01 -9.5102474093437195e-02 - <_> - 4.7424549102783203e+01 - - 1 2 2089 9.5500000000000000e+01 0 -1 2090 - 7.5000000000000000e+00 -2 -3 2091 521. - - -4.2587676644325256e-01 2.1712063252925873e-01 - -7.5793963670730591e-01 4.0587410330772400e-01 - <_> - 4.7687419891357422e+01 - - 1 2 2092 1.5000000000000000e+00 0 -1 2093 1328. -2 -3 2094 - 4.0350000000000000e+02 - - -6.6068017482757568e-01 2.6286858320236206e-01 - 4.7489511966705322e-01 -4.0635243058204651e-01 - <_> - 4.7712440490722656e+01 - - 1 2 2095 1.8500000000000000e+01 0 -1 2096 - 7.5000000000000000e+00 -2 -3 2097 3.5000000000000000e+00 - - -2.8594979643821716e-01 3.5628849267959595e-01 - 6.2096267938613892e-01 -3.3863210678100586e-01 - <_> - 4.8107528686523438e+01 - - 1 2 2098 5.0000000000000000e-01 0 -1 2099 - 2.9500000000000000e+01 -2 -3 2100 5.0000000000000000e-01 - - -1.6691003739833832e-01 6.9435620307922363e-01 - 1.8187750875949860e-01 -3.3679330348968506e-01 - <_> - 4.8001659393310547e+01 - - 1 2 2101 2.5000000000000000e+00 0 -1 2102 - 1.5500000000000000e+01 -2 -3 2103 1.5500000000000000e+01 - - -4.0513530373573303e-01 3.5411515831947327e-01 - 3.5931992530822754e-01 -5.4738515615463257e-01 - <_> - 4.8304855346679688e+01 - - 1 2 2104 8.5000000000000000e+00 0 -1 2105 - 1.5000000000000000e+00 -2 -3 2106 9.9500000000000000e+01 - - 2.2030718624591827e-01 -8.2183599472045898e-01 - 3.0319401621818542e-01 -2.0620918273925781e-01 - <_> - 4.8225379943847656e+01 - - 1 2 2107 1.0350000000000000e+02 0 -1 2108 - 3.5000000000000000e+00 -2 -3 2109 4.0850000000000000e+02 - - 9.0001732110977173e-02 -5.7426315546035767e-01 - 6.7126566171646118e-01 -7.9473815858364105e-02 - <_> - 4.8565086364746094e+01 - - 1 2 2110 1.7150000000000000e+02 0 -1 2111 - 5.0000000000000000e-01 -2 -3 2112 2.2825000000000000e+03 - - 3.3970481157302856e-01 -1.2163538485765457e-01 - 5.6507825851440430e-01 -9.3082976341247559e-01 - <_> - 4.8754871368408203e+01 - - 1 2 2113 1.6500000000000000e+01 0 -1 2114 - 7.7500000000000000e+01 -2 -3 2115 9.5000000000000000e+00 - - 8.7172055244445801e-01 -8.8115751743316650e-01 - 1.8978470563888550e-01 -2.7678936719894409e-01 - <_> - 4.9211303710937500e+01 - - 1 2 2116 3.5000000000000000e+00 0 -1 2117 - 2.1500000000000000e+01 -2 -3 2118 3.2500000000000000e+01 - - 7.1315276622772217e-01 -8.0622744560241699e-01 - -3.9460040628910065e-02 5.3393137454986572e-01 - <_> - 4.8663822174072266e+01 - - 1 2 2119 4.5000000000000000e+00 0 -1 2120 - 1.5925000000000000e+03 -2 -3 2121 2.0650000000000000e+02 - - 1.9858585298061371e-01 -8.0468404293060303e-01 - -6.2497895956039429e-01 3.4673172235488892e-01 - <_> - 4.9210224151611328e+01 - - 1 2 2122 1.5000000000000000e+00 0 -1 2123 - 4.5000000000000000e+00 -2 -3 2124 1.1500000000000000e+01 - - -2.5436609983444214e-01 5.4640007019042969e-01 - -3.6977285146713257e-01 2.4242483079433441e-01 - <_> - 4.9246429443359375e+01 - - 1 2 2125 5.5000000000000000e+00 0 -1 2126 - 1.1500000000000000e+01 -2 -3 2127 5.0500000000000000e+01 - - -6.4848619699478149e-01 3.5011601448059082e-01 - -6.0107630491256714e-01 8.2410864531993866e-02 - <_> - 4.8944103240966797e+01 - - 1 2 2128 2.8500000000000000e+01 0 -1 2129 - 9.5000000000000000e+00 -2 -3 2130 5.0000000000000000e-01 - - 3.0096647143363953e-01 -3.0232757329940796e-01 - 6.8013429641723633e-01 -5.5317246913909912e-01 - <_> - 4.8901321411132812e+01 - - 1 2 2131 7.5000000000000000e+00 0 -1 2132 - 2.4850000000000000e+02 -2 -3 2133 249. - - 7.6584374904632568e-01 -2.6288160681724548e-01 - -2.0686230063438416e-01 4.9869608879089355e-01 - <_> - 4.8522472381591797e+01 - - 1 2 2134 1.5000000000000000e+00 0 -1 2135 - 6.5000000000000000e+00 -2 -3 2136 6.5000000000000000e+00 - - -6.7336744070053101e-01 3.8096541166305542e-01 - -3.7885129451751709e-01 2.6800793409347534e-01 - <_> - 4.8640506744384766e+01 - - 1 2 2137 4.1500000000000000e+01 0 -1 2138 7511. -2 -3 2139 - 5. - - -1. 1.1803627759218216e-01 5.8405894041061401e-01 - -9.9191021919250488e-01 - <_> - 4.9112037658691406e+01 - - 1 2 2140 1.4050000000000000e+02 0 -1 2141 - 9.1550000000000000e+02 -2 -3 2142 5.0000000000000000e-01 - - 4.7153010964393616e-01 -3.8127270340919495e-01 - 3.7462133169174194e-01 -3.5809725522994995e-01 - <_> - 4.9074180603027344e+01 - - 1 2 2143 4.5000000000000000e+00 0 -1 2144 - 5.5000000000000000e+00 -2 -3 2145 1156. - - -7.7864569425582886e-01 -3.7855844944715500e-02 - -5.6096863746643066e-01 2.8747567534446716e-01 - <_> - 4.9317012786865234e+01 - - 1 2 2146 5.0000000000000000e-01 0 -1 2147 - 7.5000000000000000e+00 -2 -3 2148 8.5000000000000000e+00 - - -1.9298474490642548e-01 6.0014814138412476e-01 - -2.8463506698608398e-01 3.0250099301338196e-01 - <_> - 4.9228115081787109e+01 - - 1 2 2149 1.2500000000000000e+01 0 -1 2150 - 1.5000000000000000e+00 -2 -3 2151 2.7550000000000000e+02 - - 2.9153743386268616e-01 -1.4856611192226410e-01 - 8.5224819183349609e-01 -7.4847495555877686e-01 - <_> - 4.9394767761230469e+01 - - 1 2 2152 1.0650000000000000e+02 0 -1 2153 - 1.6650000000000000e+02 -2 -3 2154 6.4050000000000000e+02 - - -2.1377994120121002e-01 6.8324047327041626e-01 - 8.1065440177917480e-01 -1.6369237005710602e-01 - <_> - 4.9178939819335938e+01 - - 1 2 2155 5.5000000000000000e+00 0 -1 2156 - 3.5000000000000000e+00 -2 -3 2157 5.0000000000000000e-01 - - -4.4507712125778198e-01 2.7314877510070801e-01 - 1.8895468674600124e-03 -6.6257309913635254e-01 - <_> - 4.9466709136962891e+01 - - 1 2 2158 1.4350000000000000e+02 0 -1 2159 - 3.6500000000000000e+01 -2 -3 2160 2.8350000000000000e+02 - - -7.0678502321243286e-01 2.8776872158050537e-01 - 5.0643736124038696e-01 -4.6139922738075256e-01 - <_> - 4.9411914825439453e+01 - - 1 2 2161 2.8450000000000000e+02 0 -1 2162 - 1.0500000000000000e+01 -2 -3 2163 2.2500000000000000e+01 - - -5.4796442389488220e-02 5.7056087255477905e-01 - -9.7249829769134521e-01 1. - <_> - 4.9156459808349609e+01 - - 1 2 2164 1.3005000000000000e+03 0 -1 2165 - 5.0000000000000000e-01 -2 -3 2166 1.3500000000000000e+01 - - 2.4745839834213257e-01 -2.5545302033424377e-01 - 7.4935376644134521e-01 -7.2865372896194458e-01 - <_> - 4.9304908752441406e+01 - - 1 2 2167 2.5000000000000000e+00 0 -1 2168 - 4.2650000000000000e+02 -2 -3 2169 5.0000000000000000e-01 - - 9.1332197189331055e-01 -8.7917047739028931e-01 - -7.9717016220092773e-01 1.4844851195812225e-01 - <_> - 4.9519458770751953e+01 - - 1 2 2170 5.0000000000000000e-01 0 -1 2171 - 3.1050000000000000e+02 -2 -3 2172 2.5000000000000000e+00 - - -6.2879353761672974e-01 7.3362600803375244e-01 - 2.1455071866512299e-01 -5.3520482778549194e-01 - <_> - 4.9214466094970703e+01 - - 1 2 2173 6.5000000000000000e+00 0 -1 2174 - 5.0000000000000000e-01 -2 -3 2175 3.6500000000000000e+01 - - -9.2513018846511841e-01 4.0643110871315002e-01 - -3.0499455332756042e-01 5.0062865018844604e-01 - <_> - 4.9077842712402344e+01 - - 1 2 2176 3.5500000000000000e+01 0 -1 2177 - 4.5000000000000000e+00 -2 -3 2178 4.5000000000000000e+00 - - 3.1681686639785767e-01 -1.3662472367286682e-01 - -8.9950013160705566e-01 5.9339106082916260e-01 - <_> - 4.9558990478515625e+01 - - 1 2 2179 2.1500000000000000e+01 0 -1 2180 - 7.0500000000000000e+01 -2 -3 2181 4.4500000000000000e+01 - - 4.8115003108978271e-01 -3.7647187709808350e-01 - -7.3073945939540863e-02 5.2965939044952393e-01 - <_> - 4.9294830322265625e+01 - - 1 2 2182 5.0000000000000000e-01 0 -1 2183 - 1.5000000000000000e+00 -2 -3 2184 6.6750000000000000e+02 - - -2.5544604659080505e-01 5.0417780876159668e-01 - 6.0399526357650757e-01 -2.6415923237800598e-01 - <_> - 4.9588432312011719e+01 - - 1 2 2185 2.5000000000000000e+00 0 -1 2186 - 1.4500000000000000e+01 -2 -3 2187 1.9850000000000000e+02 - - -7.2754228115081787e-01 6.9201481342315674e-01 - -2.1817497909069061e-01 2.9360204935073853e-01 - <_> - 4.9867538452148438e+01 - - 1 2 2188 8.5000000000000000e+00 0 -1 2189 - 3.0950000000000000e+02 -2 -3 2190 26. - - 2.2687920928001404e-01 -4.3458512425422668e-01 - -7.0097404718399048e-01 3.0540248751640320e-01 - <_> - 5.0168376922607422e+01 - - 1 2 2191 5.0000000000000000e-01 0 -1 2192 - 1.5000000000000000e+00 -2 -3 2193 4.5000000000000000e+00 - - -7.1328246593475342e-01 3.0083844065666199e-01 - -9.5252823084592819e-03 -6.4636266231536865e-01 - <_> - 5.0060260772705078e+01 - - 1 2 2194 3.5000000000000000e+00 0 -1 2195 - 5.5500000000000000e+01 -2 -3 2196 3.5000000000000000e+00 - - 6.1561942100524902e-01 -8.6320608854293823e-01 - -1.3441234827041626e-01 3.3917289972305298e-01 - <_> - 5.0102226257324219e+01 - - 1 2 2197 4.5500000000000000e+01 0 -1 2198 - 3.0500000000000000e+01 -2 -3 2199 8.5000000000000000e+00 - - -5.6849882006645203e-02 5.2688473463058472e-01 - 4.1965771466493607e-02 -7.8310465812683105e-01 - <_> - 5.0278747558593750e+01 - - 1 2 2200 5805. 0 -1 2201 6.4500000000000000e+01 -2 -3 2202 - 1.3666500000000000e+04 - - -3.5512223839759827e-01 1.7651933431625366e-01 1. - -9.3429499864578247e-01 - <_> - 5.0092594146728516e+01 - - 1 2 2203 87. 0 -1 2204 1.5000000000000000e+00 -2 -3 2205 - 8.5000000000000000e+00 - - 2.5804731249809265e-01 -1.8615169823169708e-01 - 9.0864014625549316e-01 -9.3007725477218628e-01 - <_> - 4.9681518554687500e+01 - - 1 2 2206 3.4500000000000000e+01 0 -1 2207 - 2.5000000000000000e+00 -2 -3 2208 144. - - 8.0942414700984955e-02 -4.1107651591300964e-01 - 8.1396090984344482e-01 -5.5868124961853027e-01 - <_> - 5.0186134338378906e+01 - - 1 2 2209 2.3500000000000000e+01 0 -1 2210 - 5.0000000000000000e-01 -2 -3 2211 1.9500000000000000e+01 - - 1.8014830350875854e-01 -5.8121389150619507e-01 - 5.0461643934249878e-01 -1.3289090991020203e-01 - <_> - 5.0354343414306641e+01 - - 1 2 2212 1.5000000000000000e+00 0 -1 2213 - 1.2500000000000000e+01 -2 -3 2214 1.5000000000000000e+00 - - -9.6955841779708862e-01 1. 1.6820773482322693e-01 - -3.2301485538482666e-01 - <_> - 5.0826210021972656e+01 - - 1 2 2215 1.7500000000000000e+01 0 -1 2216 - 1.5000000000000000e+00 -2 -3 2217 5.0000000000000000e-01 - - 1.4819860458374023e-01 -5.6733429431915283e-01 - 4.7186562418937683e-01 -8.8461555540561676e-02 - <_> - 5.0689891815185547e+01 - - 1 2 2218 5.5000000000000000e+00 0 -1 2219 - 2.5000000000000000e+00 -2 -3 2220 3.5000000000000000e+00 - - -9.8274695873260498e-01 5.8369493484497070e-01 - 3.3880138397216797e-01 -1.3631547987461090e-01 - <_> - 5.0897132873535156e+01 - - 1 2 2221 3.4500000000000000e+01 0 -1 2222 52. -2 -3 2223 - 1.1500000000000000e+01 - - 1.9135108590126038e-01 -8.2356482744216919e-01 - -6.7104524374008179e-01 2.0723932981491089e-01 - <_> - 5.0793212890625000e+01 - - 1 2 2224 5.0000000000000000e-01 0 -1 2225 - 4.5000000000000000e+00 -2 -3 2226 2.2500000000000000e+01 - - 5.1123476028442383e-01 -1.1320804804563522e-01 - -3.8408496975898743e-01 6.1438548564910889e-01 - <_> - 5.1001136779785156e+01 - - 1 2 2227 8.3500000000000000e+01 0 -1 2228 - 3.5000000000000000e+00 -2 -3 2229 42. - - -4.2239284515380859e-01 2.0792518556118011e-01 - -6.8203860521316528e-01 7.9907011985778809e-01 - <_> - 5.0596912384033203e+01 - - 1 2 2230 1.5000000000000000e+00 0 -1 2231 - 3.5000000000000000e+00 -2 -3 2232 7.5000000000000000e+00 - - -7.0603537559509277e-01 2.4662055075168610e-01 - -4.0422463417053223e-01 5.9911012649536133e-01 - <_> - 5.0428260803222656e+01 - - 1 2 2233 1.3750000000000000e+02 0 -1 2234 - 2.0250000000000000e+02 -2 -3 2235 2253. - - -1.6865161061286926e-01 2.5998809933662415e-01 - -9.4531512260437012e-01 1. - <_> - 5.0951389312744141e+01 - - 1 2 2236 8.3850000000000000e+02 0 -1 2237 - 1.0500000000000000e+01 -2 -3 2238 2.7050000000000000e+02 - - -3.1979247927665710e-01 5.2312844991683960e-01 1. - -2.6709866523742676e-01 - <_> - 5.1609600067138672e+01 - - 1 2 2239 2.5000000000000000e+00 0 -1 2240 - 7.5000000000000000e+00 -2 -3 2241 5.0000000000000000e-01 - - -8.6014068126678467e-01 7.4454039335250854e-01 - 2.0096376538276672e-01 -2.4620246887207031e-01 - <_> - 5.1524238586425781e+01 - - 1 2 2242 4.5000000000000000e+00 0 -1 2243 - 4.5000000000000000e+00 -2 -3 2244 3.5000000000000000e+00 - - 7.2637367248535156e-01 -6.9044232368469238e-01 - 4.0469411015510559e-01 -8.5362896323204041e-02 - <_> - 5.1590244293212891e+01 - - 1 2 2245 2.7500000000000000e+01 0 -1 2246 - 1.6500000000000000e+01 -2 -3 2247 5.5000000000000000e+00 - - -4.6192824840545654e-01 6.6809237003326416e-01 - 3.9989617466926575e-01 -1.0465840995311737e-01 - <_> - 5.1738754272460938e+01 - - 1 2 2248 4.8500000000000000e+01 0 -1 2249 - 1.5000000000000000e+00 -2 -3 2250 1.5945000000000000e+03 - - -8.0413728952407837e-01 1.4850924909114838e-01 - -8.2549327611923218e-01 6.2095624208450317e-01 - <_> - 5.2021579742431641e+01 - - 1 2 2251 9.5000000000000000e+00 0 -1 2252 - 4.5000000000000000e+00 -2 -3 2253 5.5000000000000000e+00 - - -6.5502113103866577e-01 2.8282484412193298e-01 - -3.4542977809906006e-01 6.4788120985031128e-01 - <_> - 5.2015274047851562e+01 - - 1 2 2254 9.5000000000000000e+00 0 -1 2255 - 1.5000000000000000e+00 -2 -3 2256 1.0500000000000000e+01 - - 3.4599477052688599e-01 -3.4019523859024048e-01 - 7.2228658199310303e-01 7.7277146279811859e-02 - <_> - 5.1593978881835938e+01 - - 1 2 2257 5.5000000000000000e+00 0 -1 2258 5. -2 -3 2259 - 2.7250000000000000e+02 - - -1. 1.6008520126342773e-01 -5.4555195569992065e-01 - 1.6251419484615326e-01 - <_> - 5.1819255828857422e+01 - - 1 2 2260 5.5000000000000000e+00 0 -1 2261 - 2.5000000000000000e+00 -2 -3 2262 1.9500000000000000e+01 - - -4.8347968608140945e-02 6.0446649789810181e-01 - -4.0619182586669922e-01 2.2527877986431122e-01 - <_> - 5.1746963500976562e+01 - - 1 2 2263 1.3750000000000000e+02 0 -1 2264 - 4.2250000000000000e+02 -2 -3 2265 3.8500000000000000e+01 - - 7.4067801237106323e-01 -7.2294034063816071e-02 - 8.8299661874771118e-03 -6.2965631484985352e-01 - <_> - 5.2008258819580078e+01 - - 1 2 2266 2.5000000000000000e+00 0 -1 2267 - 2.8750000000000000e+02 -2 -3 2268 1.9450000000000000e+02 - - 2.6129412651062012e-01 -5.3058236837387085e-01 - -3.6182677745819092e-01 2.7137964963912964e-01 - <_> - 5.2304763793945312e+01 - - 1 2 2269 5.0000000000000000e-01 0 -1 2270 - 3.7500000000000000e+01 -2 -3 2271 5.5000000000000000e+00 - - 5.2875798940658569e-01 -6.0992181301116943e-01 - 2.9650440812110901e-01 -2.9122522473335266e-01 - <_> - 5.2421115875244141e+01 - - 1 2 2272 4.3500000000000000e+01 0 -1 2273 - 2.5000000000000000e+00 -2 -3 2274 4.5650000000000000e+02 - - 3.0624570325016975e-02 -5.8957004547119141e-01 - -2.7495118975639343e-01 3.9496597647666931e-01 - <_> - 5.2647144317626953e+01 - - 1 2 2275 1518. 0 -1 2276 1.6500000000000000e+01 -2 -3 2277 - 4.8450000000000000e+02 - - 2.2602756321430206e-01 -4.2886498570442200e-01 - -6.9053608179092407e-01 8.4119993448257446e-01 - <_> - 5.2705776214599609e+01 - - 1 2 2278 1.4500000000000000e+01 0 -1 2279 - 3.5000000000000000e+00 -2 -3 2280 5.0000000000000000e-01 - - 2.7602374553680420e-01 -8.6094701290130615e-01 - 4.6095618605613708e-01 -1.0049798339605331e-01 - <_> - 5.2445388793945312e+01 - - 1 2 2281 5.4500000000000000e+01 0 -1 2282 - 5.0000000000000000e-01 -2 -3 2283 293. - - 2.4707119166851044e-01 -2.6038503646850586e-01 - 8.0504089593887329e-01 -8.4760957956314087e-01 - <_> - 5.2260616302490234e+01 - - 1 2 2284 3.5000000000000000e+00 0 -1 2285 - 3.3500000000000000e+01 -2 -3 2286 1.0050000000000000e+02 - - -7.2160458564758301e-01 3.7846213579177856e-01 - -1.8477419018745422e-01 3.3230203390121460e-01 - <_> - 5.2433509826660156e+01 - - 1 2 2287 5.1650000000000000e+02 0 -1 2288 - 8.8500000000000000e+01 -2 -3 2289 7.0550000000000000e+02 - - 1.7289595305919647e-01 -9.1000020503997803e-01 - 3.6744228005409241e-01 -7.2866481542587280e-01 - <_> - 5.2647979736328125e+01 - - 1 2 2290 1.1150000000000000e+02 0 -1 2291 - 2.7950000000000000e+02 -2 -3 2292 5.0000000000000000e-01 - - 2.1446748077869415e-01 -3.1376039981842041e-01 -1. - 6.5572494268417358e-01 - <_> - 5.3233036041259766e+01 - - 1 2 2293 4.6500000000000000e+01 0 -1 2294 - 5.0000000000000000e-01 -2 -3 2295 1.8500000000000000e+01 - - 2.0808640122413635e-01 -4.1060706973075867e-01 - 7.6606053113937378e-01 2.6130240410566330e-02 - <_> - 5.3398525238037109e+01 - - 1 2 2296 1.5500000000000000e+01 0 -1 2297 61. -2 -3 2298 - 5.0000000000000000e-01 - - -6.7748582363128662e-01 1.6549052298069000e-01 - 4.1098600625991821e-01 -7.7618271112442017e-01 - <_> - 5.3294448852539062e+01 - - 1 2 2299 1.8615000000000000e+03 0 -1 2300 - 5.7500000000000000e+01 -2 -3 2301 1.2650000000000000e+02 - - -8.6754381656646729e-01 1. 8.4667998552322388e-01 - -2.2392984479665756e-02 - <_> - 5.3276077270507812e+01 - - 1 2 2302 3.5000000000000000e+00 0 -1 2303 - 1.0605000000000000e+03 -2 -3 2304 3.2500000000000000e+01 - - -1.8368726596236229e-02 -7.0469945669174194e-01 - 3.7680181860923767e-01 -2.6430556178092957e-01 - <_> - 5.3376117706298828e+01 - - 1 2 2305 7.5000000000000000e+00 0 -1 2306 - 1.3500000000000000e+01 -2 -3 2307 4.5000000000000000e+00 - - -4.4095748662948608e-01 8.1208780407905579e-02 - 7.2995042800903320e-01 -6.6059477627277374e-02 - <_> - 5.3484439849853516e+01 - - 1 2 2308 4.8500000000000000e+01 0 -1 2309 - 1.5000000000000000e+00 -2 -3 2310 5.0000000000000000e-01 - - -7.3434567451477051e-01 1.0832270234823227e-01 1. -1. - <_> - 5.3156581878662109e+01 - - 1 2 2311 5.0000000000000000e-01 0 -1 2312 - 5.0500000000000000e+01 -2 -3 2313 2.5000000000000000e+00 - - -3.2785847783088684e-01 6.5818876028060913e-01 - 1.5944661200046539e-01 -3.7622401118278503e-01 - <_> - 5.3464508056640625e+01 - - 1 2 2314 1.5000000000000000e+00 0 -1 2315 1395. -2 -3 2316 - 2.0550000000000000e+02 - - -2.5435209274291992e-01 3.5143795609474182e-01 - -5.3791600465774536e-01 1.4341881871223450e-01 - <_> - 5.3676666259765625e+01 - - 1 2 2317 1.9450000000000000e+02 0 -1 2318 - 7.7650000000000000e+02 -2 -3 2319 2.6500000000000000e+01 - - -1.6406188905239105e-01 6.5499174594879150e-01 - -2.9839497804641724e-01 5.4618138074874878e-01 - <_> - 5.3746845245361328e+01 - - 1 2 2320 2.5000000000000000e+00 0 -1 2321 - 3.5000000000000000e+00 -2 -3 2322 5.0000000000000000e-01 - - -1.8959516659379005e-02 7.8612476587295532e-01 - 9.0865425765514374e-02 -4.5988494157791138e-01 - <_> - 5.3647705078125000e+01 - - 1 2 2323 7.5000000000000000e+00 0 -1 2324 - 5.5000000000000000e+00 -2 -3 2325 5.7050000000000000e+02 - - 1.4724509418010712e-01 -7.7298891544342041e-01 - 3.5621020197868347e-01 -1.3211415708065033e-01 - <_> - 5.3602718353271484e+01 - - 1 2 2326 9.5000000000000000e+00 0 -1 2327 - 3.5000000000000000e+00 -2 -3 2328 8.0500000000000000e+01 - - 1.3503439724445343e-02 -8.2117962837219238e-01 - 5.8936750888824463e-01 -4.4985972344875336e-02 - <_> - 5.3612422943115234e+01 - - 1 2 2329 6.5000000000000000e+00 0 -1 2330 - 5.0000000000000000e-01 -2 -3 2331 2.0500000000000000e+01 - - -5.1986992359161377e-01 9.7068445757031441e-03 - 5.7828778028488159e-01 -2.6466268301010132e-01 - <_> - 5.2955169677734375e+01 - - 1 2 2332 5.5000000000000000e+00 0 -1 2333 - 1.4250000000000000e+02 -2 -3 2334 1.5000000000000000e+00 - - 4.0672644972801208e-01 -6.5725678205490112e-01 - 4.3416792154312134e-01 -1.0205291956663132e-01 - <_> - 5.3175640106201172e+01 - - 1 2 2335 5.8500000000000000e+01 0 -1 2336 - 3.5000000000000000e+00 -2 -3 2337 1.0500000000000000e+01 - - -9.2344768345355988e-02 -8.2324630022048950e-01 - -8.0642974376678467e-01 2.2047302126884460e-01 - <_> - 5.3262622833251953e+01 - - 1 2 2338 4.7500000000000000e+01 0 -1 2339 - 2.2450000000000000e+02 -2 -3 2340 2.8500000000000000e+01 - - 8.6981259286403656e-02 -6.1652702093124390e-01 - -9.1801822185516357e-01 6.4460629224777222e-01 - <_> - 5.3449378967285156e+01 - - 1 2 2341 4.0500000000000000e+01 0 -1 2342 - 3.5000000000000000e+00 -2 -3 2343 7.5000000000000000e+00 - - 1.8675777316093445e-01 -3.1174966692924500e-01 - -8.4308654069900513e-01 5.4007226228713989e-01 - <_> - 5.4046314239501953e+01 - - 1 2 2344 1.9500000000000000e+01 0 -1 2345 - 1.5000000000000000e+00 -2 -3 2346 1.0500000000000000e+01 - - 2.6490023732185364e-01 -2.7910321950912476e-01 - 5.9693449735641479e-01 -2.9306411743164062e-01 - <_> - 5.3945655822753906e+01 - - 1 2 2347 4.5000000000000000e+00 0 -1 2348 27. -2 -3 2349 - 5.5000000000000000e+00 - - -8.5741281509399414e-01 1.3065045699477196e-02 - 3.9639812707901001e-01 -1.0065827518701553e-01 - <_> - 5.4267860412597656e+01 - - 1 2 2350 1.9450000000000000e+02 0 -1 2351 - 1.0500000000000000e+01 -2 -3 2352 3.5000000000000000e+00 - - -6.5501171350479126e-01 3.2220518589019775e-01 - 3.1031554937362671e-01 -2.4605174362659454e-01 - <_> - 5.4434059143066406e+01 - - 1 2 2353 4.5000000000000000e+00 0 -1 2354 10. -2 -3 2355 - 1.5000000000000000e+00 - - -9.6719789505004883e-01 1. 3.4963271021842957e-01 - -1.1308565735816956e-01 - <_> - 5.4395557403564453e+01 - - 1 2 2356 9.5000000000000000e+00 0 -1 2357 50. -2 -3 2358 - 2.7650000000000000e+02 - - -5.2526080608367920e-01 1. 4.7619706392288208e-01 - -3.8500182330608368e-02 - <_> - 5.4446586608886719e+01 - - 1 2 2359 5.0000000000000000e-01 0 -1 2360 - 1.5000000000000000e+00 -2 -3 2361 2.7500000000000000e+01 - - -7.0974302291870117e-01 5.9427440166473389e-01 - -4.7772464156150818e-01 5.1026910543441772e-02 - <_> - 5.4573219299316406e+01 - - 1 2 2362 5.5000000000000000e+00 0 -1 2363 - 7.5000000000000000e+00 -2 -3 2364 5.5000000000000000e+00 - - -2.3239122331142426e-01 5.5771952867507935e-01 - -3.3134892582893372e-01 5.3258192539215088e-01 - <_> - 5.4593772888183594e+01 - - 1 2 2365 2.0850000000000000e+02 0 -1 2366 - 1.5000000000000000e+00 -2 -3 2367 2.0350000000000000e+02 - - 2.8126055002212524e-01 -3.8539481163024902e-01 - 8.0755966901779175e-01 2.5156758725643158e-02 - <_> - 5.4878520965576172e+01 - - 1 2 2368 9.5500000000000000e+01 0 -1 2369 - 3.3500000000000000e+01 -2 -3 2370 1.9500000000000000e+01 - - -2.0251634716987610e-01 2.8474879264831543e-01 - 3.4431111812591553e-01 -9.0932434797286987e-01 - <_> - 5.4830356597900391e+01 - - 1 2 2371 2.9550000000000000e+02 0 -1 2372 - 1.4735000000000000e+03 -2 -3 2373 9.5000000000000000e+00 - - -4.8165567219257355e-02 7.1227544546127319e-01 - -5.8812457323074341e-01 4.9097633361816406e-01 - <_> - 5.5037090301513672e+01 - - 1 2 2374 3.5000000000000000e+00 0 -1 2375 265. -2 -3 2376 - 5.0000000000000000e-01 - - 6.2006855010986328e-01 -1.1624867469072342e-01 - 2.0673374831676483e-01 -3.9852622151374817e-01 - <_> - 5.4704418182373047e+01 - - 1 2 2377 5.5000000000000000e+00 0 -1 2378 - 7.4150000000000000e+02 -2 -3 2379 1.4500000000000000e+01 - - 8.3038502931594849e-01 -3.3267009258270264e-01 - -5.5480867624282837e-01 3.8361921906471252e-01 - <_> - 5.5166534423828125e+01 - - 1 2 2380 2.5000000000000000e+00 0 -1 2381 - 2.5000000000000000e+00 -2 -3 2382 5.0000000000000000e-01 - - -6.5405935049057007e-01 4.6251511573791504e-01 - 1.5241867303848267e-01 -3.7966835498809814e-01 - <_> - 5.5294990539550781e+01 - - 1 2 2383 3.5000000000000000e+00 0 -1 2384 218. -2 -3 2385 - 1.5000000000000000e+00 - - -7.2755223512649536e-01 7.7218592166900635e-01 - 3.7493732571601868e-01 -1.4008188247680664e-01 - <_> - 5.5391014099121094e+01 - - 1 2 2386 5.0000000000000000e-01 0 -1 2387 - 3.5000000000000000e+00 -2 -3 2388 1.0500000000000000e+01 - - -7.2115933895111084e-01 5.6441891193389893e-01 - -2.2445468604564667e-01 4.8844140768051147e-01 - <_> - 5.5061939239501953e+01 - - 1 2 2389 1.5000000000000000e+00 0 -1 2390 - 9.4500000000000000e+01 -2 -3 2391 2.0500000000000000e+01 - - 3.0153071880340576e-01 -7.7830529212951660e-01 - -3.7638953328132629e-01 4.5185664296150208e-01 - <_> - 5.5263076782226562e+01 - - 1 2 2392 6.0575000000000000e+03 0 -1 2393 - 4.5000000000000000e+00 -2 -3 2394 23. - - -2.4923345446586609e-01 2.0113667845726013e-01 -1. 1. - <_> - 5.5297931671142578e+01 - - 1 2 2395 5.0000000000000000e-01 0 -1 2396 - 5.0000000000000000e-01 -2 -3 2397 150. - - -7.8452098369598389e-01 2.7857390046119690e-01 - 3.1075701117515564e-01 -4.7745358943939209e-01 - <_> - 5.4631614685058594e+01 - - 1 2 2398 1.5000000000000000e+00 0 -1 2399 - 6.5000000000000000e+00 -2 -3 2400 3.5450000000000000e+02 - - -4.1111201047897339e-01 3.2674971222877502e-01 - -6.6631543636322021e-01 6.2937244772911072e-02 - <_> - 5.5044651031494141e+01 - - 1 2 2401 1.0250000000000000e+02 0 -1 2402 - 3.6500000000000000e+01 -2 -3 2403 1631. - - -1.7850313335657120e-02 -7.2239345312118530e-01 - 4.1303712129592896e-01 -7.0288980007171631e-01 - <_> - 5.5012844085693359e+01 - - 1 2 2404 5.5000000000000000e+00 0 -1 2405 - 1.5000000000000000e+00 -2 -3 2406 1.0500000000000000e+01 - - -7.5541549921035767e-01 -3.1809989362955093e-02 - -6.1507242918014526e-01 7.0561921596527100e-01 - <_> - 5.4918914794921875e+01 - - 1 2 2407 5.0000000000000000e-01 0 -1 2408 - 8.5000000000000000e+00 -2 -3 2409 9.2500000000000000e+01 - - -4.1232073307037354e-01 3.9009645581245422e-01 - -9.3929134309291840e-02 -7.8844040632247925e-01 - <_> - 5.5306533813476562e+01 - - 1 2 2410 5.0000000000000000e-01 0 -1 2411 - 1.5500000000000000e+01 -2 -3 2412 5.0000000000000000e-01 - - -7.7871519327163696e-01 5.0485336780548096e-01 - 3.8762193918228149e-01 -2.6150849461555481e-01 - <_> - 5.5725589752197266e+01 - - 1 2 2413 3.8500000000000000e+01 0 -1 2414 - 7.5000000000000000e+00 -2 -3 2415 2.1450000000000000e+02 - - 2.2938077151775360e-01 -3.7094232439994812e-01 - 5.0282096862792969e-01 -1. - <_> - 5.5701969146728516e+01 - - 1 2 2416 5.5000000000000000e+00 0 -1 2417 - 1.9250000000000000e+02 -2 -3 2418 3.2250000000000000e+02 - - 7.8288418054580688e-01 -1. -2.3619059473276138e-02 - 6.6452664136886597e-01 - <_> - 5.6077171325683594e+01 - - 1 2 2419 1.4050000000000000e+02 0 -1 2420 - 2.8250000000000000e+02 -2 -3 2421 1.4150000000000000e+02 - - -1.0124576836824417e-01 7.4701219797134399e-01 - 3.5501605272293091e-01 -4.3058195710182190e-01 - <_> - 5.6083236694335938e+01 - - 1 2 2422 5.0000000000000000e-01 0 -1 2423 - 1.0500000000000000e+01 -2 -3 2424 8.3150000000000000e+02 - - -5.6019341945648193e-01 3.9356786012649536e-01 - -3.6574575304985046e-01 3.6192762851715088e-01 - <_> - 5.5670101165771484e+01 - - 1 2 2425 3.5500000000000000e+01 0 -1 2426 - 5.0000000000000000e-01 -2 -3 2427 1.5000000000000000e+00 - - 1. -8.6421859264373779e-01 5.4856836795806885e-01 - -7.4459843337535858e-02 - <_> - 5.5537399291992188e+01 - - 1 2 2428 3.5000000000000000e+00 0 -1 2429 - 2.1500000000000000e+01 -2 -3 2430 8.5000000000000000e+00 - - -1.3270168006420135e-01 5.0145077705383301e-01 - -5.9590238332748413e-01 5.6020063161849976e-01 - <_> - 5.6239562988281250e+01 - - 1 2 2431 2.5000000000000000e+00 0 -1 2432 - 4.5000000000000000e+00 -2 -3 2433 4.5000000000000000e+00 - - 1.1585496366024017e-02 7.0216339826583862e-01 - 1.3687019050121307e-01 -4.4344663619995117e-01 - <_> - 5.6262195587158203e+01 - - 1 2 2434 5.5000000000000000e+00 0 -1 2435 599. -2 -3 2436 - 8.5000000000000000e+00 - - 3.7830984592437744e-01 -8.5527080297470093e-01 - 2.0193518698215485e-01 -4.7135183215141296e-01 - <_> - 5.6160911560058594e+01 - - 1 2 2437 5.5500000000000000e+01 0 -1 2438 - 1.8500000000000000e+01 -2 -3 2439 2.5000000000000000e+00 - - -4.9777466058731079e-01 6.7050379514694214e-01 - -2.8058648109436035e-01 3.3557692170143127e-01 - <_> - 5.6366966247558594e+01 - - 1 2 2440 1.9500000000000000e+01 0 -1 2441 - 1.9500000000000000e+01 -2 -3 2442 5.0000000000000000e-01 - - 3.0625101923942566e-01 -7.9308640956878662e-01 - 1.2798076868057251e-01 -5.4627287387847900e-01 - <_> - 5.6186271667480469e+01 - - 1 2 2443 1.8615000000000000e+03 0 -1 2444 167. -2 -3 2445 - 1.9650000000000000e+02 - - 8.4020185470581055e-01 -9.3632721900939941e-01 - 2.7573192119598389e-01 -1.8069291114807129e-01 - <_> - 5.6445884704589844e+01 - - 1 2 2446 3.5000000000000000e+00 0 -1 2447 - 1.0500000000000000e+01 -2 -3 2448 1.5000000000000000e+00 - - -1. 1. 2.5961092114448547e-01 -1.6614863276481628e-01 - <_> - 5.5662120819091797e+01 - - 1 2 2449 2.2500000000000000e+01 0 -1 2450 - 6.7750000000000000e+02 -2 -3 2451 4.5500000000000000e+01 - - 1.6409425437450409e-01 -7.8376275300979614e-01 - 4.5019468665122986e-01 -1.2327302992343903e-01 - <_> - 5.5920890808105469e+01 - - 1 2 2452 2.6500000000000000e+01 0 -1 2453 - 2.1500000000000000e+01 -2 -3 2454 884. - - 3.0651217699050903e-01 -7.2995334863662720e-01 - -3.2345041632652283e-01 2.5876981019973755e-01 - <_> - 5.6508441925048828e+01 - - 1 2 2455 1.5000000000000000e+00 0 -1 2456 - 7.5000000000000000e+00 -2 -3 2457 2.9500000000000000e+01 - - -4.2047679424285889e-01 5.8755081892013550e-01 - -3.5544028878211975e-01 1.4925979077816010e-01 - <_> - 5.7038162231445312e+01 - - 1 2 2458 4253. 0 -1 2459 2.5925000000000000e+03 -2 -3 2460 - 1.5500000000000000e+01 - - 1.7438737675547600e-02 7.4788528680801392e-01 - -7.3076415061950684e-01 3.7760403752326965e-01 - <_> - 5.7042125701904297e+01 - - 1 2 2461 2.6500000000000000e+01 0 -1 2462 - 1.9500000000000000e+01 -2 -3 2463 27. - - 3.9644027128815651e-03 7.4178051948547363e-01 - -7.0212310552597046e-01 3.2540574669837952e-01 - <_> - 5.6994468688964844e+01 - - 1 2 2464 1.9850000000000000e+02 0 -1 2465 - 4.1500000000000000e+01 -2 -3 2466 15. - - -4.7658316791057587e-02 4.4828248023986816e-01 - -9.3152695894241333e-01 1. - <_> - 5.7190505981445312e+01 - - 1 2 2467 1.8500000000000000e+01 0 -1 2468 - 5.0000000000000000e-01 -2 -3 2469 1.8750000000000000e+02 - - -7.1969377994537354e-01 1.9603636860847473e-01 - 4.9150291085243225e-01 -5.2527850866317749e-01 - <_> - 5.7078899383544922e+01 - - 1 2 2470 3.8450000000000000e+02 0 -1 2471 526. -2 -3 2472 - 2.9050000000000000e+02 - - 3.3174201846122742e-01 -8.2571077346801758e-01 - 5.2103126049041748e-01 -3.9841450750827789e-02 - <_> - 5.7003246307373047e+01 - - 1 2 2473 7.5500000000000000e+01 0 -1 2474 - 1.0550000000000000e+02 -2 -3 2475 968. - - -7.5653955340385437e-02 4.8758953809738159e-01 - -5.4898864030838013e-01 1. - <_> - 5.6870857238769531e+01 - - 1 2 2476 1.0500000000000000e+01 0 -1 2477 - 2.0500000000000000e+01 -2 -3 2478 1.6935000000000000e+03 - - -7.4650394916534424e-01 1.1892273277044296e-01 - 4.1699570417404175e-01 -1.3238719105720520e-01 - <_> - 5.7122226715087891e+01 - - 1 2 2479 8.5000000000000000e+00 0 -1 2480 86. -2 -3 2481 - 7.3500000000000000e+01 - - -8.4109079837799072e-01 2.5136706233024597e-01 - -7.6945990324020386e-01 -1.0176113247871399e-01 - <_> - 5.7074886322021484e+01 - - 1 2 2482 260. 0 -1 2483 2.8500000000000000e+01 -2 -3 2484 - 3.7500000000000000e+01 - - 3.3627879619598389e-01 -5.7430881261825562e-01 - -8.7236690521240234e-01 -4.7338943928480148e-02 - <_> - 5.6915012359619141e+01 - - 1 2 2485 1.6500000000000000e+01 0 -1 2486 - 5.0000000000000000e-01 -2 -3 2487 4.3050000000000000e+02 - - 5.5153751373291016e-01 -5.8580690622329712e-01 - -1.5987615287303925e-01 3.9268711209297180e-01 - <_> - 5.7239044189453125e+01 - - 1 2 2488 1.5000000000000000e+00 0 -1 2489 - 8.1500000000000000e+01 -2 -3 2490 2.6500000000000000e+01 - - 5.2343451976776123e-01 -4.1453287005424500e-01 - 3.2403412461280823e-01 -3.2856607437133789e-01 - <_> - 5.7474300384521484e+01 - - 1 2 2491 1.8500000000000000e+01 0 -1 2492 - 1.5000000000000000e+00 -2 -3 2493 9.5000000000000000e+00 - - -7.8822988271713257e-01 -9.5766671001911163e-03 - -4.8284614086151123e-01 2.3525412380695343e-01 - <_> - 5.7249835968017578e+01 - - 1 2 2494 2.3050000000000000e+02 0 -1 2495 - 2.0050000000000000e+02 -2 -3 2496 2.8150000000000000e+02 - - -2.2446456551551819e-01 2.2491098940372467e-01 - 8.3066219091415405e-01 -9.5704418420791626e-01 - <_> - 5.7814559936523438e+01 - - 1 2 2497 5.0000000000000000e-01 0 -1 2498 - 2.6185000000000000e+03 -2 -3 2499 1.7500000000000000e+01 - - 5.6472480297088623e-01 -1.6110357642173767e-01 - -3.1116396188735962e-01 4.4437372684478760e-01 - <_> - 5.8106559753417969e+01 - - 1 2 2500 8.5000000000000000e+00 0 -1 2501 - 1.7500000000000000e+01 -2 -3 2502 4.5000000000000000e+00 - - -2.7669808268547058e-01 2.9200211167335510e-01 - -9.3605440855026245e-01 6.0182154178619385e-01 - <_> - 5.8357116699218750e+01 - - 1 2 2503 6.5000000000000000e+00 0 -1 2504 4110. -2 -3 2505 - 5.0000000000000000e-01 - - 5.0149852037429810e-01 -4.7614306211471558e-01 - 2.5055614113807678e-01 -3.4401369094848633e-01 - <_> - 5.8571323394775391e+01 - - 1 2 2506 1.7500000000000000e+01 0 -1 2507 - 1.0500000000000000e+01 -2 -3 2508 1.2500000000000000e+01 - - -7.3967492580413818e-01 1.0592705756425858e-01 - -7.4430185556411743e-01 2.1420435607433319e-01 - <_> - 5.8413196563720703e+01 - - 1 2 2509 4.6500000000000000e+01 0 -1 2510 - 5.0000000000000000e-01 -2 -3 2511 6.5000000000000000e+00 - - 3.0999431014060974e-01 -1.5812423825263977e-01 - 7.2452938556671143e-01 -8.2721656560897827e-01 - <_> - 5.8289020538330078e+01 - - 1 2 2512 1.9450000000000000e+02 0 -1 2513 - 1.5500000000000000e+01 -2 -3 2514 5.1650000000000000e+02 - - -7.0014303922653198e-01 5.3811348974704742e-02 - 2.4148009717464447e-01 -3.3995988965034485e-01 - <_> - 5.8445301055908203e+01 - - 1 2 2515 6.5000000000000000e+00 0 -1 2516 - 1.5000000000000000e+00 -2 -3 2517 5.5000000000000000e+00 - - 1.5627947449684143e-01 -4.8640871047973633e-01 - 3.7407481670379639e-01 -3.9116647839546204e-01 - <_> - 5.8216587066650391e+01 - - 1 2 2518 700. 0 -1 2519 5.5850000000000000e+02 -2 -3 2520 - 16. - - 2.0464093983173370e-01 -2.6413521170616150e-01 - 8.5163682699203491e-01 -1. - <_> - 5.8270072937011719e+01 - - 1 2 2521 7.0500000000000000e+01 0 -1 2522 3409. -2 -3 2523 - 7.3150000000000000e+02 - - 5.3485069423913956e-02 -5.7243049144744873e-01 - -8.9430630207061768e-02 6.9314485788345337e-01 - <_> - 5.7783893585205078e+01 - - 1 2 2524 5.0000000000000000e-01 0 -1 2525 - 2.5000000000000000e+00 -2 -3 2526 1684. - - -4.0134501457214355e-01 5.9734642505645752e-01 - -4.8617830872535706e-01 7.6749451458454132e-02 - <_> - 5.8102993011474609e+01 - - 1 2 2527 6.5500000000000000e+01 0 -1 2528 - 5.5000000000000000e+00 -2 -3 2529 1.9500000000000000e+01 - - 3.1909653544425964e-01 -1.7158342897891998e-01 - -7.2843241691589355e-01 2.3383940756320953e-01 - <_> - 5.8049087524414062e+01 - - 1 2 2530 4.5000000000000000e+00 0 -1 2531 - 5.0000000000000000e-01 -2 -3 2532 2.8500000000000000e+01 - - 1. -7.5028574466705322e-01 -5.3904149681329727e-02 - 5.5251020193099976e-01 - <_> - 5.8244209289550781e+01 - - 1 2 2533 5.5000000000000000e+00 0 -1 2534 - 4.5000000000000000e+00 -2 -3 2535 5.0000000000000000e-01 - - -8.0380880832672119e-01 2.9753589630126953e-01 - 1.9512148201465607e-01 -4.6969175338745117e-01 - <_> - 5.8672908782958984e+01 - - 1 2 2536 2.5000000000000000e+00 0 -1 2537 - 1.3500000000000000e+01 -2 -3 2538 11661. - - -3.4166058897972107e-01 3.3482587337493896e-01 - 4.2869973182678223e-01 -1. - <_> - 5.9023540496826172e+01 - - 1 2 2539 1.5000000000000000e+00 0 -1 2540 - 3.5000000000000000e+00 -2 -3 2541 9.5000000000000000e+00 - - -8.3383214473724365e-01 3.5063269734382629e-01 - -3.5336953401565552e-01 3.0827513337135315e-01 - <_> - 5.9003356933593750e+01 - - 1 2 2542 1.0250000000000000e+02 0 -1 2543 - 2.5550000000000000e+02 -2 -3 2544 2.0350000000000000e+02 - - 5.1257050037384033e-01 -3.2918009161949158e-01 - 7.4368792772293091e-01 -2.0184267312288284e-02 - <_> - 5.9620601654052734e+01 - - 1 2 2545 7.9500000000000000e+01 0 -1 2546 - 2.5000000000000000e+00 -2 -3 2547 3.5000000000000000e+00 - - -7.7253228425979614e-01 6.1724388599395752e-01 - -4.8216223716735840e-01 5.6440707296133041e-02 - <_> - 5.9330902099609375e+01 - - 1 2 2548 5.0000000000000000e-01 0 -1 2549 - 3.5000000000000000e+00 -2 -3 2550 2.7500000000000000e+01 - - -6.9474482536315918e-01 3.4619376063346863e-01 - -2.8969791531562805e-01 8.9516305923461914e-01 - <_> - 5.9581577301025391e+01 - - 1 2 2551 5.3500000000000000e+01 0 -1 2552 - 5.0000000000000000e-01 -2 -3 2553 1342. - - 2.5067508220672607e-01 -2.0224566757678986e-01 - -8.1104308366775513e-01 1. - <_> - 5.8948894500732422e+01 - - 1 2 2554 3.7500000000000000e+01 0 -1 2555 - 2.5500000000000000e+01 -2 -3 2556 1.0500000000000000e+01 - - 2.1159039437770844e-01 -6.3268536329269409e-01 - 2.9823055863380432e-01 -4.7319912910461426e-01 - <_> - 5.8807991027832031e+01 - - 1 2 2557 5.0000000000000000e-01 0 -1 2558 - 1.6500000000000000e+01 -2 -3 2559 5.0000000000000000e-01 - - 4.5869261026382446e-01 -8.1530493497848511e-01 - 2.9593425989151001e-01 -1.4090000092983246e-01 - <_> - 5.9417499542236328e+01 - - 1 2 2560 3.2500000000000000e+01 0 -1 2561 - 3.7750000000000000e+02 -2 -3 2562 75. - - 3.8758099079132080e-01 -2.1584044396877289e-01 - 6.0950559377670288e-01 -8.6360347270965576e-01 - <_> - 5.9395267486572266e+01 - - 1 2 2563 3.8250000000000000e+02 0 -1 2564 - 8.5000000000000000e+00 -2 -3 2565 5.7450000000000000e+02 - - 1.0727138072252274e-01 -9.5441406965255737e-01 - 7.1632760763168335e-01 -2.2229373455047607e-02 - <_> - 5.9514354705810547e+01 - - 1 2 2566 1.9950000000000000e+02 0 -1 2567 - 2.5500000000000000e+01 -2 -3 2568 2. - - -5.9233713150024414e-01 1.1908496916294098e-01 1. - -9.8158216476440430e-01 - <_> - 6.0169723510742188e+01 - - 1 2 2569 2.8150000000000000e+02 0 -1 2570 - 2.8050000000000000e+02 -2 -3 2571 3.1650000000000000e+02 - - -2.3387852311134338e-01 6.5537095069885254e-01 - -4.8421013355255127e-01 2.2264781594276428e-01 - <_> - 6.0158332824707031e+01 - - 1 2 2572 7.0500000000000000e+01 0 -1 2573 13. -2 -3 2574 - 1.7650000000000000e+02 - - 1. -9.1182774305343628e-01 6.4647716283798218e-01 - -1.1392616666853428e-02 - <_> - 6.0164875030517578e+01 - - 1 2 2575 1.0500000000000000e+01 0 -1 2576 - 6.5000000000000000e+00 -2 -3 2577 2.2500000000000000e+01 - - -5.1000970602035522e-01 1.9136555492877960e-01 - 5.6798326969146729e-01 -1.2325727939605713e-01 - <_> - 6.0000015258789062e+01 - - 1 2 2578 1.8500000000000000e+01 0 -1 2579 - 1.8550000000000000e+02 -2 -3 2580 8.5000000000000000e+00 - - 5.5650675296783447e-01 -1.7031535506248474e-01 - -3.4968420863151550e-01 2.8920692205429077e-01 - <_> - 5.9847770690917969e+01 - - 1 2 2581 7.5500000000000000e+01 0 -1 2582 - 4.5000000000000000e+00 -2 -3 2583 8.5000000000000000e+00 - - -1.5224465727806091e-01 6.9837278127670288e-01 - 8.2906544208526611e-01 -6.7065995931625366e-01 - <_> - 5.9407840728759766e+01 - - 1 2 2584 6.5000000000000000e+00 0 -1 2585 - 3.2500000000000000e+01 -2 -3 2586 2.7750000000000000e+02 - - -1.4858660101890564e-01 4.5175358653068542e-01 - 3.0660414695739746e-01 -4.3992885947227478e-01 - <_> - 5.9727443695068359e+01 - - 1 2 2587 5.5000000000000000e+00 0 -1 2588 - 3.5000000000000000e+00 -2 -3 2589 2.0650000000000000e+02 - - -9.2537873983383179e-01 5.8647280931472778e-01 - -1.5209920704364777e-01 3.1960240006446838e-01 - <_> - 6.0010757446289062e+01 - - 1 2 2590 4.1850000000000000e+02 0 -1 2591 - 1.0550000000000000e+02 -2 -3 2592 2.8650000000000000e+02 - - 1.0595235042273998e-02 6.2895303964614868e-01 - 1.7578537762165070e-01 -6.4835780858993530e-01 - <_> - 6.0163875579833984e+01 - - 1 2 2593 1.1500000000000000e+01 0 -1 2594 - 1.3950000000000000e+02 -2 -3 2595 1.5000000000000000e+00 - - 1.5311945974826813e-01 -1. 3.8898807764053345e-01 - -6.8376713991165161e-01 - <_> - 6.0612895965576172e+01 - - 1 2 2596 6.5000000000000000e+00 0 -1 2597 - 7.5000000000000000e+00 -2 -3 2598 5.0000000000000000e-01 - - 1.1192434281110764e-01 -4.8998862504959106e-01 - 4.4902092218399048e-01 -2.1356025338172913e-01 - <_> - 6.0593112945556641e+01 - - 1 2 2599 7.5000000000000000e+00 0 -1 2600 - 2.5500000000000000e+01 -2 -3 2601 5.2550000000000000e+02 - - -6.2332719564437866e-01 2.7156946063041687e-01 - -2.6419401168823242e-01 3.0316945910453796e-01 - <_> - 6.0419368743896484e+01 - - 1 2 2602 1414. 0 -1 2603 5.0000000000000000e-01 -2 -3 2604 - 5.0000000000000000e-01 - - 3.2086572051048279e-01 -1.7374682426452637e-01 - 3.9743113517761230e-01 -8.2090038061141968e-01 - <_> - 6.0365997314453125e+01 - - 1 2 2605 5.5000000000000000e+00 0 -1 2606 - 9.4500000000000000e+01 -2 -3 2607 4.0500000000000000e+01 - - -5.3367935121059418e-02 -7.2029197216033936e-01 - 5.0103998184204102e-01 -5.2485477924346924e-01 - <_> - 6.0689079284667969e+01 - - 1 2 2608 2.5000000000000000e+00 0 -1 2609 - 1.5000000000000000e+00 -2 -3 2610 1.5000000000000000e+00 - - -9.3278533220291138e-01 3.5384011268615723e-01 - 3.2307976484298706e-01 -1.4563784003257751e-01 - <_> - 6.0867687225341797e+01 - - 1 2 2611 9.5000000000000000e+00 0 -1 2612 599. -2 -3 2613 - 2.8500000000000000e+01 - - 6.5348321199417114e-01 -7.7523887157440186e-01 - 1.7860861122608185e-01 -6.8781971931457520e-01 - <_> - 6.0617588043212891e+01 - - 1 2 2614 3.5000000000000000e+00 0 -1 2615 - 3.5000000000000000e+00 -2 -3 2616 29. - - -6.8590456247329712e-01 -4.1165366768836975e-02 - -7.8714710474014282e-01 2.2933968901634216e-01 - <_> - 6.0553024291992188e+01 - - 1 2 2617 5.0000000000000000e-01 0 -1 2618 - 8.5000000000000000e+00 -2 -3 2619 2.5500000000000000e+01 - - 7.2095865011215210e-01 -1.0256516933441162e-01 - -2.7349776029586792e-01 5.0410771369934082e-01 - <_> - 6.0395980834960938e+01 - - 1 2 2620 4.5000000000000000e+00 0 -1 2621 - 1.5500000000000000e+01 -2 -3 2622 4.5000000000000000e+00 - - 3.5106821451336145e-03 -6.8456047773361206e-01 - -1.5704339742660522e-01 4.0133151412010193e-01 - <_> - 5.9962356567382812e+01 - - 1 2 2623 2.5000000000000000e+00 0 -1 2624 - 3.5000000000000000e+00 -2 -3 2625 3.5500000000000000e+01 - - -4.5895889401435852e-01 3.6360222101211548e-01 - -4.3362265825271606e-01 1.4346121251583099e-01 - <_> - 6.0286312103271484e+01 - - 1 2 2626 237. 0 -1 2627 1.4050000000000000e+02 -2 -3 2628 - 1.0500000000000000e+01 - - 3.2395470142364502e-01 -1.2447713315486908e-01 1. - -9.4700473546981812e-01 - <_> - 6.0432418823242188e+01 - - 1 2 2629 1.3025000000000000e+03 0 -1 2630 - 2.5000000000000000e+00 -2 -3 2631 8.7350000000000000e+02 - - 1.4610382914543152e-01 -5.0863313674926758e-01 - 6.1481702327728271e-01 -7.1987234055995941e-02 - <_> - 6.0589881896972656e+01 - - 1 2 2632 4.5000000000000000e+00 0 -1 2633 - 9.5000000000000000e+00 -2 -3 2634 1.9150000000000000e+02 - - -7.7591598033905029e-01 1. -6.5265017747879028e-01 - 1.5746453404426575e-01 - <_> - 6.1252899169921875e+01 - - 1 2 2635 2.9250000000000000e+02 0 -1 2636 - 5.8450000000000000e+02 -2 -3 2637 2.1500000000000000e+01 - - -3.3597718924283981e-02 6.6301667690277100e-01 - 4.5846205949783325e-01 -3.1099578738212585e-01 - <_> - 6.1492858886718750e+01 - - 1 2 2638 7.5000000000000000e+00 0 -1 2639 - 2.9500000000000000e+01 -2 -3 2640 2.5000000000000000e+00 - - -3.6869207024574280e-01 3.3420211076736450e-01 - 4.7750937938690186e-01 -2.3987923562526703e-01 - <_> - 6.1205974578857422e+01 - - 1 2 2641 7.5000000000000000e+00 0 -1 2642 - 1.5000000000000000e+00 -2 -3 2643 1.4500000000000000e+01 - - -5.1257357001304626e-02 -9.2525291442871094e-01 - 2.6967108249664307e-01 -2.8688544034957886e-01 - <_> - 6.1789810180664062e+01 - - 1 2 2644 5.0000000000000000e-01 0 -1 2645 - 1.5000000000000000e+00 -2 -3 2646 1.0850000000000000e+02 - - -1.2522415816783905e-01 5.8383584022521973e-01 - -3.7811398506164551e-01 3.5324230790138245e-01 - <_> - 6.1241226196289062e+01 - - 1 2 2647 1.3500000000000000e+01 0 -1 2648 43. -2 -3 2649 - 1.5000000000000000e+00 - - 3.7132117152214050e-01 -5.4858577251434326e-01 - 5.6798547506332397e-01 -1.6644481569528580e-02 - <_> - 6.1479743957519531e+01 - - 1 2 2650 3.5000000000000000e+00 0 -1 2651 - 2.1500000000000000e+01 -2 -3 2652 2.7500000000000000e+01 - - -4.2368954420089722e-01 2.3851761221885681e-01 - -5.7994890213012695e-01 3.7476634979248047e-01 - <_> - 6.1004722595214844e+01 - - 1 2 2653 1.5000000000000000e+00 0 -1 2654 - 9.5000000000000000e+00 -2 -3 2655 2.0650000000000000e+02 - - 3.5197860002517700e-01 -6.0150128602981567e-01 - -4.7501891851425171e-01 1.0508991032838821e-01 - <_> - 6.1214889526367188e+01 - - 1 2 2656 4.1450000000000000e+02 0 -1 2657 - 1.5000000000000000e+00 -2 -3 2658 6.5000000000000000e+00 - - -9.0379047393798828e-01 2.1016710996627808e-01 - -8.4449762105941772e-01 1.7173469066619873e-01 - <_> - 6.1464859008789062e+01 - - 1 2 2659 2.5000000000000000e+00 0 -1 2660 - 3.4500000000000000e+01 -2 -3 2661 1.4500000000000000e+01 - - 2.5582450628280640e-01 -7.3183947801589966e-01 - -4.9639618396759033e-01 2.4996897578239441e-01 - <_> - 6.1681930541992188e+01 - - 1 2 2662 5.0000000000000000e-01 0 -1 2663 - 6.9500000000000000e+01 -2 -3 2664 2.6750000000000000e+02 - - -8.9841169118881226e-01 1. 6.2449836730957031e-01 - -6.4489036798477173e-02 - <_> - 6.1654228210449219e+01 - - 1 2 2665 2.7050000000000000e+02 0 -1 2666 - 5.5000000000000000e+00 -2 -3 2667 4.0950000000000000e+02 - - -8.7079370021820068e-01 2.6282650232315063e-01 - 6.5214538574218750e-01 -2.7702366933226585e-02 - <_> - 6.2061069488525391e+01 - - 1 2 2668 2.5000000000000000e+00 0 -1 2669 - 5.0000000000000000e-01 -2 -3 2670 5.0000000000000000e-01 - - -7.8327047824859619e-01 4.0684157609939575e-01 - 6.0355588793754578e-02 -5.0233304500579834e-01 - <_> - 6.1906791687011719e+01 - - 1 2 2671 1.5000000000000000e+00 0 -1 2672 - 1.5000000000000000e+00 -2 -3 2673 2.5000000000000000e+00 - - 5.6696528196334839e-01 -4.6415984630584717e-01 - 3.4750485420227051e-01 -2.1522110700607300e-01 - <_> - 6.2178283691406250e+01 - - 1 2 2674 3.9500000000000000e+01 0 -1 2675 - 8.5000000000000000e+00 -2 -3 2676 1.3750000000000000e+02 - - -1.5354898571968079e-01 3.0087256431579590e-01 - 6.2499260902404785e-01 -7.2910422086715698e-01 - <_> - 6.2438056945800781e+01 - - 1 2 2677 6.5000000000000000e+00 0 -1 2678 - 8.5000000000000000e+00 -2 -3 2679 67. - - -3.1217855215072632e-01 2.5977545976638794e-01 - 7.4574637413024902e-01 -1.9338005781173706e-01 - <_> - 6.2752281188964844e+01 - - 1 2 2680 2.6650000000000000e+02 0 -1 2681 - 5.0000000000000000e-01 -2 -3 2682 1.3550000000000000e+02 - - 3.1422150135040283e-01 -1.4777605235576630e-01 - 8.5186350345611572e-01 -8.3034658432006836e-01 - <_> - 6.2594532012939453e+01 - - 1 2 2683 3.5500000000000000e+01 0 -1 2684 - 5.0000000000000000e-01 -2 -3 2685 5.0500000000000000e+01 - - 1.6120029985904694e-01 -3.1525397300720215e-01 - 7.8786081075668335e-01 -8.2956892251968384e-01 - <_> - 6.2900459289550781e+01 - - 1 2 2686 9.5000000000000000e+00 0 -1 2687 - 5.0000000000000000e-01 -2 -3 2688 7.5000000000000000e+00 - - 3.3722239732742310e-01 -6.2358045578002930e-01 - -2.2625392675399780e-01 3.3588206768035889e-01 - <_> - 6.2587158203125000e+01 - - 1 2 2689 1.5000000000000000e+00 0 -1 2690 - 8.5000000000000000e+00 -2 -3 2691 1.6450000000000000e+02 - - -6.1196434497833252e-01 3.7018314003944397e-01 - -3.4325864911079407e-01 7.1064901351928711e-01 - <_> - 6.2978553771972656e+01 - - 1 2 2692 5.0000000000000000e-01 0 -1 2693 - 7.5000000000000000e+00 -2 -3 2694 236. - - -8.3526867628097534e-01 3.9139539003372192e-01 - -2.7839684486389160e-01 6.4235913753509521e-01 - <_> - 6.2408267974853516e+01 - - 1 2 2695 1.4050000000000000e+02 0 -1 2696 1639. -2 -3 2697 - 2.5000000000000000e+00 - - -8.4244453907012939e-01 3.5902199149131775e-01 - 1.0501577705144882e-01 -4.8646318912506104e-01 - <_> - 6.2895637512207031e+01 - - 1 2 2698 1.4500000000000000e+01 0 -1 2699 - 8.5000000000000000e+00 -2 -3 2700 2.5000000000000000e+00 - - 4.6988185495138168e-02 -7.1969383955001831e-01 - 4.8736768960952759e-01 -6.1925843358039856e-02 - <_> - 6.2663387298583984e+01 - - 1 2 2701 2.1500000000000000e+01 0 -1 2702 - 1.1500000000000000e+01 -2 -3 2703 1.4500000000000000e+01 - - -7.2029066085815430e-01 9.2440739274024963e-02 - 2.9415887594223022e-01 -2.3525267839431763e-01 - <_> - 6.2987194061279297e+01 - - 1 2 2704 4.5000000000000000e+00 0 -1 2705 - 7.5500000000000000e+01 -2 -3 2706 5.0000000000000000e-01 - - 1. -9.0740150213241577e-01 3.2380592823028564e-01 - -1.5268217027187347e-01 - <_> - 6.3587291717529297e+01 - - 1 2 2707 2.8500000000000000e+01 0 -1 2708 - 5.0000000000000000e-01 -2 -3 2709 3.0500000000000000e+01 - - 8.2845188677310944e-02 -4.1826823353767395e-01 - -1.8972435593605042e-01 6.0009866952896118e-01 - <_> - 6.3807559967041016e+01 - - 1 2 2710 1.7050000000000000e+02 0 -1 2711 - 1.5000000000000000e+00 -2 -3 2712 2.6500000000000000e+01 - - 2.2606207430362701e-01 -3.2580971717834473e-01 - -9.5029556751251221e-01 1. - <_> - 6.3285655975341797e+01 - - 1 2 2713 2.5000000000000000e+00 0 -1 2714 - 2.0500000000000000e+01 -2 -3 2715 1.5000000000000000e+00 - - -5.2190160751342773e-01 2.7798208594322205e-01 - 3.1544733047485352e-01 -2.2196403145790100e-01 - <_> - 6.3550678253173828e+01 - - 1 2 2716 2052. 0 -1 2717 1.5000000000000000e+00 -2 -3 2718 - 2.4500000000000000e+01 - - 2.8521814942359924e-01 -2.5548547506332397e-01 - -7.0672160387039185e-01 7.2617936134338379e-01 - <_> - 6.3662876129150391e+01 - - 1 2 2719 2.5500000000000000e+01 0 -1 2720 - 3.7500000000000000e+01 -2 -3 2721 2.9500000000000000e+01 - - 9.2001825571060181e-02 -6.1267060041427612e-01 - -7.6270443201065063e-01 2.8730672597885132e-01 - <_> - 6.3807342529296875e+01 - - 1 2 2722 1.5000000000000000e+00 0 -1 2723 - 1.5000000000000000e+00 -2 -3 2724 3.7150000000000000e+02 - - -7.3808377981185913e-01 3.7818792462348938e-01 - -4.3305176496505737e-01 2.3701250553131104e-01 - <_> - 6.3842769622802734e+01 - - 1 2 2725 2.5000000000000000e+00 0 -1 2726 - 2.5000000000000000e+00 -2 -3 2727 5.0000000000000000e-01 - - 1.1332137882709503e-01 -5.1461762189865112e-01 - 7.9907387495040894e-01 3.5429000854492188e-02 - <_> - 6.3756759643554688e+01 - - 1 2 2728 1.9450000000000000e+02 0 -1 2729 1643. -2 -3 2730 - 1.9650000000000000e+02 - - 1.4746785163879395e-01 -7.2807186841964722e-01 - 5.6145447492599487e-01 -8.6011424660682678e-02 - <_> - 6.3733058929443359e+01 - - 1 2 2731 8.3500000000000000e+01 0 -1 2732 - 1.0500000000000000e+01 -2 -3 2733 2.3500000000000000e+01 - - -2.3702777922153473e-02 5.4405170679092407e-01 - -7.7169793844223022e-01 3.0090901255607605e-01 - <_> - 6.3680248260498047e+01 - - 1 2 2734 7.5000000000000000e+00 0 -1 2735 - 4.8500000000000000e+01 -2 -3 2736 1.5000000000000000e+00 - - -5.2809726446866989e-02 -7.8950524330139160e-01 - 5.1301914453506470e-01 -4.9866847693920135e-02 - <_> - 6.3880180358886719e+01 - - 1 2 2737 2.9015000000000000e+03 0 -1 2738 - 6.5000000000000000e+00 -2 -3 2739 8.7050000000000000e+02 - - -5.2026945352554321e-01 1.4022850990295410e-01 - 7.1531414985656738e-01 -1.1917709559202194e-01 - <_> - 6.3902549743652344e+01 - - 1 2 2740 1.7500000000000000e+01 0 -1 2741 682. -2 -3 2742 - 1.4500000000000000e+01 - - 2.2369438782334328e-02 7.8829252719879150e-01 - -7.3855948448181152e-01 6.5198886394500732e-01 - <_> - 6.4139472961425781e+01 - - 1 2 2743 1.5000000000000000e+00 0 -1 2744 - 2.5000000000000000e+00 -2 -3 2745 2.0500000000000000e+01 - - -6.6418927907943726e-01 7.0931375026702881e-01 - -2.0525617897510529e-01 6.0997349023818970e-01 - <_> - 6.3896743774414062e+01 - - 1 2 2746 8.5000000000000000e+00 0 -1 2747 - 2.5000000000000000e+00 -2 -3 2748 3.1500000000000000e+01 - - -4.3710169196128845e-01 4.7477069497108459e-01 - -3.1593173742294312e-01 4.8821964859962463e-01 - <_> - 6.3892070770263672e+01 - - 1 2 2749 4.3750000000000000e+02 0 -1 2750 - 4.3150000000000000e+02 -2 -3 2751 9.5000000000000000e+00 - - -4.6721110120415688e-03 8.8219249248504639e-01 - -8.3383691310882568e-01 7.1565806865692139e-01 - <_> - 6.4291923522949219e+01 - - 1 2 2752 5.0000000000000000e-01 0 -1 2753 - 2.9350000000000000e+02 -2 -3 2754 1.2500000000000000e+01 - - 5.9044593572616577e-01 -3.5737776756286621e-01 - -2.6983705163002014e-01 3.9985546469688416e-01 - <_> - 6.4444198608398438e+01 - - 1 2 2755 2.5000000000000000e+00 0 -1 2756 496. -2 -3 2757 - 8.7500000000000000e+01 - - -8.2448130846023560e-01 1. 1.5226939320564270e-01 - -7.8910803794860840e-01 - <_> - 6.4720268249511719e+01 - - 1 2 2758 5.0000000000000000e-01 0 -1 2759 - 8.5000000000000000e+00 -2 -3 2760 1.6895000000000000e+03 - - -7.6469248533248901e-01 5.3199023008346558e-01 - 1.3163314759731293e-01 -3.6375212669372559e-01 - <_> - 6.4363922119140625e+01 - - 1 2 2761 2.0650000000000000e+02 0 -1 2762 - 5.0000000000000000e-01 -2 -3 2763 2.0850000000000000e+02 - - 9.4482317566871643e-02 -4.8107957839965820e-01 - 6.4464539289474487e-01 -1.6706781089305878e-01 - <_> - 6.4417221069335938e+01 - - 1 2 2764 5.7500000000000000e+01 0 -1 2765 - 1.5000000000000000e+00 -2 -3 2766 5.0000000000000000e-01 - - -7.5109612941741943e-01 3.3447441458702087e-01 - 4.7835576534271240e-01 -7.7882848680019379e-02 - <_> - 6.4584609985351562e+01 - - 1 2 2767 1.2500000000000000e+01 0 -1 2768 - 5.0000000000000000e-01 -2 -3 2769 2.1500000000000000e+01 - - -5.4096364974975586e-01 1.6738529503345490e-01 - -7.5967723131179810e-01 8.8292425870895386e-01 - <_> - 6.4760520935058594e+01 - - 1 2 2770 2.5000000000000000e+00 0 -1 2771 - 1.9050000000000000e+02 -2 -3 2772 5.0000000000000000e-01 - - -4.6916040778160095e-01 5.8294248580932617e-01 - 5.0347501039505005e-01 -2.4913801252841949e-01 - <_> - 6.4607902526855469e+01 - - 1 2 2773 1.7500000000000000e+01 0 -1 2774 - 9.5500000000000000e+01 -2 -3 2775 4.4350000000000000e+02 - - 3.4941902756690979e-01 -6.4918982982635498e-01 - -4.3396180868148804e-01 2.8290441632270813e-01 - <_> - 6.4527969360351562e+01 - - 1 2 2776 5.0000000000000000e-01 0 -1 2777 - 4.3500000000000000e+01 -2 -3 2778 8.8500000000000000e+01 - - 4.4687822461128235e-01 -7.1882510185241699e-01 - -7.9936116933822632e-02 -8.9642030000686646e-01 - <_> - 6.4619773864746094e+01 - - 1 2 2779 3.5000000000000000e+00 0 -1 2780 - 3.1500000000000000e+01 -2 -3 2781 3.9150000000000000e+02 - - -9.1050511598587036e-01 1. 9.1801762580871582e-02 - -9.1259324550628662e-01 - <_> - 6.4837570190429688e+01 - - 1 2 2782 7.1500000000000000e+01 0 -1 2783 - 1.1500000000000000e+01 -2 -3 2784 1.7850000000000000e+02 - - -4.0079045295715332e-01 7.8354829549789429e-01 - 2.1779969334602356e-01 -9.3245065212249756e-01 - <_> - 6.4496871948242188e+01 - - 1 2 2785 5.0000000000000000e-01 0 -1 2786 - 7.5000000000000000e+00 -2 -3 2787 5.0000000000000000e-01 - - 4.1458779573440552e-01 -1.6905190050601959e-01 - 4.9135982990264893e-01 -3.4069874882698059e-01 - <_> - 6.5054672241210938e+01 - - 1 2 2788 4.5000000000000000e+00 0 -1 2789 - 5.5000000000000000e+00 -2 -3 2790 5.0000000000000000e-01 - - -3.2522678375244141e-01 3.4266743063926697e-01 - 5.5779844522476196e-01 -1.2484771758317947e-01 - <_> - 6.4687782287597656e+01 - - 1 2 2791 5.3500000000000000e+01 0 -1 2792 - 1.5500000000000000e+01 -2 -3 2793 1.8500000000000000e+01 - - -3.6688560247421265e-01 2.1883730590343475e-01 - 2.1215963363647461e-01 -8.3708620071411133e-01 - <_> - 6.5208068847656250e+01 - - 1 2 2794 1.5000000000000000e+00 0 -1 2795 - 7.5000000000000000e+00 -2 -3 2796 4.5000000000000000e+00 - - -4.4749242067337036e-01 5.2028369903564453e-01 - 1.4320193231105804e-01 -3.6478173732757568e-01 - <_> - 6.5268638610839844e+01 - - 1 2 2797 5.5000000000000000e+00 0 -1 2798 - 4.1500000000000000e+01 -2 -3 2799 4.5000000000000000e+00 - - 8.3268040418624878e-01 -6.3441288471221924e-01 - 4.0759882330894470e-01 -8.2020364701747894e-02 - <_> - 6.5322891235351562e+01 - - 1 2 2800 9.0500000000000000e+01 0 -1 2801 - 2.5000000000000000e+00 -2 -3 2802 1.8650000000000000e+02 - - 2.2344470024108887e-01 -2.9277965426445007e-01 - -9.6397489309310913e-01 5.7233071327209473e-01 - <_> - 6.5454887390136719e+01 - - 1 2 2803 2.0500000000000000e+01 0 -1 2804 - 2.5000000000000000e+00 -2 -3 2805 4. - - -6.3367128372192383e-01 1.3200259208679199e-01 - -9.4963890314102173e-01 4.6485623717308044e-01 - <_> - 6.5903160095214844e+01 - - 1 2 2806 2.5000000000000000e+00 0 -1 2807 - 3.8500000000000000e+01 -2 -3 2808 4.5500000000000000e+01 - - 4.4826710224151611e-01 -7.7937543392181396e-01 - -5.1449149847030640e-01 1.0056205093860626e-01 - <_> - 6.6093971252441406e+01 - - 1 2 2809 2.5175000000000000e+03 0 -1 2810 6717. -2 -3 2811 - 2.0650000000000000e+02 - - -3.9923682808876038e-02 9.1757839918136597e-01 - -5.2093452215194702e-01 1.9081139564514160e-01 - <_> - 6.6034652709960938e+01 - - 1 2 2812 2.5000000000000000e+00 0 -1 2813 - 3.5000000000000000e+00 -2 -3 2814 3.3150000000000000e+02 - - -7.6858395338058472e-01 3.2895866036415100e-01 - -3.3519825339317322e-01 6.6958039999008179e-01 - <_> - 6.6225700378417969e+01 - - 1 2 2815 2.0500000000000000e+01 0 -1 2816 - 7.5000000000000000e+00 -2 -3 2817 1.0350000000000000e+02 - - 1.6298887133598328e-01 -7.7439045906066895e-01 - 2.3633432388305664e-01 -4.2903181910514832e-01 - <_> - 6.6216186523437500e+01 - - 1 2 2818 2.5000000000000000e+00 0 -1 2819 - 5.8500000000000000e+01 -2 -3 2820 1.5500000000000000e+01 - - 2.1922865509986877e-01 -4.7555354237556458e-01 - -3.8529956340789795e-01 3.8940200209617615e-01 - <_> - 6.5891036987304688e+01 - - 1 2 2821 5.5000000000000000e+00 0 -1 2822 - 8.3500000000000000e+01 -2 -3 2823 2.3500000000000000e+01 - - 3.2532903552055359e-01 -4.5672222971916199e-01 - -5.5388760566711426e-01 1.9246758520603180e-01 - <_> - 6.5877616882324219e+01 - - 1 2 2824 6.5000000000000000e+00 0 -1 2825 - 5.6550000000000000e+02 -2 -3 2826 5.5000000000000000e+00 - - -7.6332885026931763e-01 -1.3426670804619789e-02 - -7.4143958091735840e-01 8.1064927577972412e-01 - <_> - 6.6143356323242188e+01 - - 1 2 2827 3.7450000000000000e+02 0 -1 2828 - 3.5000000000000000e+00 -2 -3 2829 5.0000000000000000e-01 - - 6.8982642889022827e-01 -8.5442638397216797e-01 - 2.6574078202247620e-01 -2.8088992834091187e-01 - <_> - 6.6746147155761719e+01 - - 1 2 2830 1.9650000000000000e+02 0 -1 2831 - 2.0650000000000000e+02 -2 -3 2832 1.9750000000000000e+02 - - -4.7177043557167053e-01 1. 6.5734672546386719e-01 - -5.5299658328294754e-02 - <_> - 6.6317184448242188e+01 - - 1 2 2833 3.5000000000000000e+00 0 -1 2834 - 6.5000000000000000e+00 -2 -3 2835 1.9500000000000000e+01 - - -4.2896154522895813e-01 1.9346684217453003e-01 - -4.7202244400978088e-01 4.7573706507682800e-01 - <_> - 6.6482894897460938e+01 - - 1 2 2836 2.3500000000000000e+01 0 -1 2837 - 5.7050000000000000e+02 -2 -3 2838 5.0000000000000000e-01 - - -7.4143189191818237e-01 1.6571453213691711e-01 - 2.8583261370658875e-01 -7.6734077930450439e-01 - <_> - 6.6698379516601562e+01 - - 1 2 2839 1.9650000000000000e+02 0 -1 2840 - 9.8450000000000000e+02 -2 -3 2841 2.5000000000000000e+00 - - -8.8686957955360413e-02 6.8865406513214111e-01 - 1.6092415153980255e-01 -4.5511838793754578e-01 - <_> - 6.7053703308105469e+01 - - 1 2 2842 9.5000000000000000e+00 0 -1 2843 - 3.4050000000000000e+02 -2 -3 2844 2.5000000000000000e+00 - - -5.7897639274597168e-01 8.3814328908920288e-01 - 3.5532349348068237e-01 -1.6980881989002228e-01 - <_> - 6.7309471130371094e+01 - - 1 2 2845 2.8050000000000000e+02 0 -1 2846 - 3.5000000000000000e+00 -2 -3 2847 7.9050000000000000e+02 - - 5.3537392616271973e-01 -1.3895300030708313e-01 - -6.1582380533218384e-01 5.4094051010906696e-03 - <_> - 6.7479339599609375e+01 - - 1 2 2848 2.5000000000000000e+00 0 -1 2849 - 2.5000000000000000e+00 -2 -3 2850 2.5000000000000000e+00 - - -1. 5.5264580249786377e-01 1.6986495256423950e-01 - -4.1565752029418945e-01 - <_> - 6.7149955749511719e+01 - - 1 2 2851 4.5000000000000000e+00 0 -1 2852 - 1.8500000000000000e+01 -2 -3 2853 2.5000000000000000e+00 - - -4.9663683772087097e-01 3.3515587449073792e-01 - 4.6553504467010498e-01 -8.7602093815803528e-02 - <_> - 6.7272407531738281e+01 - - 1 2 2854 237. 0 -1 2855 1.0500000000000000e+01 -2 -3 2856 - 2.7350000000000000e+02 - - -1.5763807296752930e-01 2.8533494472503662e-01 - 6.8770086765289307e-01 -9.8898959159851074e-01 - <_> - 6.6949989318847656e+01 - - 1 2 2857 1.0500000000000000e+01 0 -1 2858 - 2.4850000000000000e+02 -2 -3 2859 9.9500000000000000e+01 - - 1.6148981451988220e-01 -3.2241418957710266e-01 - -5.9701257944107056e-01 6.3962835073471069e-01 - <_> - 6.7259635925292969e+01 - - 1 2 2860 5.0000000000000000e-01 0 -1 2861 - 5.5000000000000000e+00 -2 -3 2862 7.5000000000000000e+00 - - 8.0473339557647705e-01 -9.0566039085388184e-01 - 3.0964154005050659e-01 -1.4670071005821228e-01 - <_> - 6.7172332763671875e+01 - - 1 2 2863 1.2500000000000000e+01 0 -1 2864 - 1.5500000000000000e+01 -2 -3 2865 3.5000000000000000e+00 - - -6.6961383819580078e-01 5.7878249883651733e-01 - 4.8450264334678650e-01 -8.7298728525638580e-02 - <_> - 6.7815200805664062e+01 - - 1 2 2866 1.1500000000000000e+01 0 -1 2867 - 3.1500000000000000e+01 -2 -3 2868 6.5000000000000000e+00 - - -4.8206365108489990e-01 4.7012288123369217e-02 - 7.4164730310440063e-01 -3.0158874392509460e-01 - <_> - 6.7794479370117188e+01 - - 1 2 2869 8.5000000000000000e+00 0 -1 2870 - 1.5000000000000000e+00 -2 -3 2871 3.7500000000000000e+01 - - 4.6158957481384277e-01 -5.1054544746875763e-02 - -6.3606274127960205e-01 3.5886037349700928e-01 - <_> - 6.7871452331542969e+01 - - 1 2 2872 5.5000000000000000e+00 0 -1 2873 - 5.5750000000000000e+02 -2 -3 2874 3209. - - 7.5514155626296997e-01 -6.2665617465972900e-01 - 1.7917767167091370e-01 -7.6869279146194458e-01 - <_> - 6.7681411743164062e+01 - - 1 2 2875 1.0650000000000000e+02 0 -1 2876 - 3.9550000000000000e+02 -2 -3 2877 9.5000000000000000e+00 - - 4.4955825805664062e-01 -2.9224312305450439e-01 - -8.0019611120223999e-01 5.1831835508346558e-01 - <_> - 6.7658134460449219e+01 - - 1 2 2878 6.2450000000000000e+02 0 -1 2879 - 3.0500000000000000e+01 -2 -3 2880 7.9750000000000000e+02 - - -1. 1. 7.4804317951202393e-01 -2.3278422653675079e-02 - <_> - 6.7805534362792969e+01 - - 1 2 2881 1.4650000000000000e+02 0 -1 2882 - 5.0000000000000000e-01 -2 -3 2883 1.9500000000000000e+01 - - -6.3743829727172852e-01 1.4740309119224548e-01 - -8.2422167062759399e-01 1. - <_> - 6.7852165222167969e+01 - - 1 2 2884 5.0000000000000000e-01 0 -1 2885 - 9.5000000000000000e+00 -2 -3 2886 2.7500000000000000e+01 - - -5.1376032829284668e-01 7.3264604806900024e-01 - -2.5961226224899292e-01 3.9754027128219604e-01 - <_> - 6.8086799621582031e+01 - - 1 2 2887 3.2500000000000000e+01 0 -1 2888 - 1.5000000000000000e+00 -2 -3 2889 5.5000000000000000e+00 - - 3.6609417200088501e-01 -1.0678847134113312e-01 - -8.1009173393249512e-01 6.5037436783313751e-02 - <_> - 6.8214500427246094e+01 - - 1 2 2890 5.0000000000000000e-01 0 -1 2891 - 4.5000000000000000e+00 -2 -3 2892 3.0500000000000000e+01 - - -9.0979951620101929e-01 3.1051525473594666e-01 - -8.2302808761596680e-01 1.2769748270511627e-01 - <_> - 6.7917503356933594e+01 - - 1 2 2893 4.2350000000000000e+02 0 -1 2894 - 2.2875000000000000e+03 -2 -3 2895 2.1500000000000000e+01 - - -4.0313944220542908e-02 8.5728436708450317e-01 - -2.9699394106864929e-01 8.5103875398635864e-01 - <_> - 6.8314117431640625e+01 - - 1 2 2896 1.5000000000000000e+00 0 -1 2897 53. -2 -3 2898 - 1.5000000000000000e+00 - - 3.9660894870758057e-01 -9.0774112939834595e-01 - 1.2309800088405609e-01 -4.6573173999786377e-01 - <_> - 6.8401733398437500e+01 - - 1 2 2899 1.9450000000000000e+02 0 -1 2900 - 2.3500000000000000e+01 -2 -3 2901 3.9050000000000000e+02 - - -5.7891708612442017e-01 9.1515809297561646e-01 - 6.9994968175888062e-01 -4.3836530297994614e-02 - <_> - 6.8536247253417969e+01 - - 1 2 2902 1.8650000000000000e+02 0 -1 2903 - 7.5000000000000000e+00 -2 -3 2904 2.6650000000000000e+02 - - -6.9809150695800781e-01 1.3451172411441803e-01 1. - -9.9006718397140503e-01 - <_> - 6.8994667053222656e+01 - - 1 2 2905 5.0000000000000000e-01 0 -1 2906 - 5.5000000000000000e+00 -2 -3 2907 5.0000000000000000e-01 - - -2.2326274216175079e-01 4.5842617750167847e-01 - 6.2888121604919434e-01 -3.4905898571014404e-01 - <_> - 6.8767745971679688e+01 - - 1 2 2908 9.5000000000000000e+00 0 -1 2909 - 5.5000000000000000e+00 -2 -3 2910 1.2255000000000000e+03 - - 2.2254677116870880e-01 -2.8151977062225342e-01 - -9.0560692548751831e-01 9.0504884719848633e-01 - <_> - 6.8525566101074219e+01 - - 1 2 2911 3.2500000000000000e+01 0 -1 2912 - 4.5000000000000000e+00 -2 -3 2913 7.5000000000000000e+00 - - -2.7538121212273836e-03 -6.9165170192718506e-01 - 5.7820391654968262e-01 -2.5509628653526306e-01 - <_> - 6.8883575439453125e+01 - - 1 2 2914 6.5000000000000000e+00 0 -1 2915 - 5.0000000000000000e-01 -2 -3 2916 5.5000000000000000e+00 - - 1.3683679699897766e-01 -5.6018638610839844e-01 - -3.3692777156829834e-01 3.5801160335540771e-01 - <_> - 6.8840766906738281e+01 - - 1 2 2917 5.0000000000000000e-01 0 -1 2918 - 5.2500000000000000e+01 -2 -3 2919 1.1050000000000000e+02 - - 7.7966368198394775e-01 2.0057722926139832e-02 - -2.8223827481269836e-01 4.5779809355735779e-01 - <_> - 6.9032073974609375e+01 - - 1 2 2920 7.5000000000000000e+00 0 -1 2921 - 2.9500000000000000e+01 -2 -3 2922 2.2500000000000000e+01 - - -9.2170667648315430e-01 1. 3.5735762119293213e-01 - -1.0750242322683334e-01 - <_> - 6.8714004516601562e+01 - - 1 2 2923 1.8500000000000000e+01 0 -1 2924 - 1.2500000000000000e+01 -2 -3 2925 2.0500000000000000e+01 - - 2.3622247576713562e-01 -6.2772291898727417e-01 - -5.2963131666183472e-01 2.7689251303672791e-01 - <_> - 6.8882164001464844e+01 - - 1 2 2926 219. 0 -1 2927 3.0950000000000000e+02 -2 -3 2928 - 1.1450000000000000e+02 - - 1.6816329956054688e-01 -3.7265399098396301e-01 - -9.0168434381484985e-01 1. - <_> - 6.8773300170898438e+01 - - 1 2 2929 1.0500000000000000e+01 0 -1 2930 - 2.2500000000000000e+01 -2 -3 2931 3.5000000000000000e+00 - - -7.8473842144012451e-01 1.2849690020084381e-01 - 3.7842509150505066e-01 -1.0886743664741516e-01 - <_> - 6.8523002624511719e+01 - - 1 2 2932 4.5000000000000000e+00 0 -1 2933 - 2.5000000000000000e+00 -2 -3 2934 1.9500000000000000e+01 - - -5.6240028142929077e-01 -8.6381016299128532e-03 - 5.5950272083282471e-01 -6.6527374088764191e-02 - <_> - 6.8540222167968750e+01 - - 1 2 2935 2.5000000000000000e+00 0 -1 2936 - 4.5000000000000000e+00 -2 -3 2937 7.2500000000000000e+01 - - -3.5429468750953674e-01 4.7208651900291443e-01 - 1.7222335562109947e-02 -6.1873370409011841e-01 - <_> - 6.8054306030273438e+01 - - 1 2 2938 1.0250000000000000e+02 0 -1 2939 - 7.5000000000000000e+00 -2 -3 2940 2.0550000000000000e+02 - - 1.3330066204071045e-01 -4.8592099547386169e-01 - 6.4965671300888062e-01 -3.7294719368219376e-02 - <_> - 6.8587783813476562e+01 - - 1 2 2941 2.9500000000000000e+01 0 -1 2942 - 6.3500000000000000e+01 -2 -3 2943 6.5000000000000000e+00 - - -2.2070726752281189e-01 6.4551812410354614e-01 - -6.1110073328018188e-01 5.3347945213317871e-01 - <_> - 6.8991744995117188e+01 - - 1 2 2944 4.5000000000000000e+00 0 -1 2945 - 7.5000000000000000e+00 -2 -3 2946 3.7500000000000000e+01 - - -1.6733403503894806e-01 4.0395921468734741e-01 - 3.4822711348533630e-01 -4.4277858734130859e-01 - <_> - 6.9024818420410156e+01 - - 1 2 2947 1054. 0 -1 2948 2.9645000000000000e+03 -2 -3 2949 - 4.8550000000000000e+02 - - -1. 8.5014098882675171e-01 -5.8178287744522095e-01 - 3.3078812062740326e-02 - <_> - 6.9566368103027344e+01 - - 1 2 2950 5.0000000000000000e-01 0 -1 2951 - 5.5000000000000000e+00 -2 -3 2952 7.5000000000000000e+00 - - -1.9729833584278822e-03 6.8332517147064209e-01 - -4.2742264270782471e-01 2.2634387016296387e-01 - <_> - 6.9610260009765625e+01 - - 1 2 2953 1.6950000000000000e+02 0 -1 2954 - 2.5000000000000000e+00 -2 -3 2955 3.3500000000000000e+01 - - 3.9216127991676331e-01 -9.7884893417358398e-02 - -9.5070320367813110e-01 1. - <_> - 6.9546066284179688e+01 - - 1 2 2956 1.0500000000000000e+01 0 -1 2957 - 8.5000000000000000e+00 -2 -3 2958 1.2500000000000000e+01 - - -7.4745219945907593e-01 6.7914712429046631e-01 - -6.1746150255203247e-01 1.7846804857254028e-01 - <_> - 6.9931442260742188e+01 - - 1 2 2959 1.5500000000000000e+01 0 -1 2960 581. -2 -3 2961 - 881. - - 3.8537198305130005e-01 -4.9864691495895386e-01 - -5.2889358997344971e-01 7.6011091470718384e-02 - <_> - 7.0310058593750000e+01 - - 1 2 2962 9.5000000000000000e+00 0 -1 2963 - 6.5000000000000000e+00 -2 -3 2964 3.8450000000000000e+02 - - 1.3596023619174957e-01 -4.2733094096183777e-01 - 5.0578802824020386e-01 -1. - <_> - 7.0192367553710938e+01 - - 1 2 2965 1.0500000000000000e+01 0 -1 2966 - 3.5000000000000000e+00 -2 -3 2967 1.4050000000000000e+02 - - -7.4998342990875244e-01 2.7843931317329407e-01 - 4.3058690428733826e-01 -1.1769727617502213e-01 - <_> - 6.9951408386230469e+01 - - 1 2 2968 8.8250000000000000e+02 0 -1 2969 - 6.0150000000000000e+02 -2 -3 2970 1459. - - -4.1208836436271667e-01 1.3212314248085022e-01 - 7.5216329097747803e-01 4.9172616563737392e-03 - <_> - 6.9623153686523438e+01 - - 1 2 2971 5.0000000000000000e-01 0 -1 2972 - 2.5000000000000000e+00 -2 -3 2973 7.5000000000000000e+00 - - -3.2825407385826111e-01 4.7693637013435364e-01 - -2.9572629928588867e-01 3.7341046333312988e-01 - <_> - 7.0125137329101562e+01 - - 1 2 2974 5.0000000000000000e-01 0 -1 2975 - 3.1500000000000000e+01 -2 -3 2976 3.5000000000000000e+00 - - -6.9827795028686523e-01 6.5693438053131104e-01 - 5.0198370218276978e-01 -1.0436290502548218e-01 - <_> - 7.0039115905761719e+01 - - 1 2 2977 1.3500000000000000e+01 0 -1 2978 - 2.3500000000000000e+01 -2 -3 2979 5.0000000000000000e-01 - - -8.4431791305541992e-01 1. 4.4658949971199036e-01 - -8.6022958159446716e-02 - <_> - 7.0156913757324219e+01 - - 1 2 2980 5.0000000000000000e-01 0 -1 2981 - 3.5000000000000000e+00 -2 -3 2982 2.5500000000000000e+01 - - -5.4146528244018555e-01 6.7168194055557251e-01 - -4.8114633560180664e-01 3.8386128842830658e-02 - <_> - 7.0207313537597656e+01 - - 1 2 2983 7.6500000000000000e+01 0 -1 2984 - 1.9650000000000000e+02 -2 -3 2985 270. - - 3.9014890789985657e-01 -1.0452992469072342e-01 - 6.6388440132141113e-01 -6.9735282659530640e-01 - <_> - 7.0389663696289062e+01 - - 1 2 2986 2.7500000000000000e+01 0 -1 2987 - 1.5000000000000000e+00 -2 -3 2988 3.5000000000000000e+00 - - 2.2635735571384430e-01 -6.3035410642623901e-01 - -8.5632139444351196e-01 1.8234945833683014e-01 - <_> - 7.0754112243652344e+01 - - 1 2 2989 6.5000000000000000e+00 0 -1 2990 - 1.9500000000000000e+01 -2 -3 2991 5.0000000000000000e-01 - - 3.6445134878158569e-01 -3.0069667100906372e-01 - 7.7127411961555481e-02 -5.1235681772232056e-01 - <_> - 7.0504135131835938e+01 - - 1 2 2992 1.3500000000000000e+01 0 -1 2993 - 1.5500000000000000e+01 -2 -3 2994 1.0500000000000000e+01 - - -2.4998134374618530e-01 4.6560180187225342e-01 - -6.1666029691696167e-01 6.5309768915176392e-01 - <_> - 7.0445526123046875e+01 - - 1 2 2995 6.5000000000000000e+00 0 -1 2996 - 6.9500000000000000e+01 -2 -3 2997 4.6500000000000000e+01 - - 3.0786228179931641e-01 -6.0552901029586792e-01 - 5.3606212139129639e-02 -5.8309459686279297e-01 - <_> - 7.0407524108886719e+01 - - 1 2 2998 1.5000000000000000e+00 0 -1 2999 - 1.0500000000000000e+01 -2 -3 3000 5.0000000000000000e-01 - - -8.0116474628448486e-01 6.0916137695312500e-01 - 6.4076530933380127e-01 -3.8002632558345795e-02 - <_> - 7.0560409545898438e+01 - - 1 2 3001 1.5500000000000000e+01 0 -1 3002 17. -2 -3 3003 - 5.5000000000000000e+00 - - 5.2674514055252075e-01 -6.5563476085662842e-01 - -9.1981142759323120e-01 1.5288232266902924e-01 - <_> - 7.0493698120117188e+01 - - 1 2 3004 3.5000000000000000e+00 0 -1 3005 - 5.5000000000000000e+00 -2 -3 3006 2.1500000000000000e+01 - - -1.7892476916313171e-01 4.8387104272842407e-01 - -7.3338449001312256e-01 -4.8672512173652649e-02 - <_> - 7.0596115112304688e+01 - - 1 2 3007 5.0000000000000000e-01 0 -1 3008 - 2.2500000000000000e+01 -2 -3 3009 3.7500000000000000e+01 - - 4.6702525019645691e-01 -7.1555072069168091e-01 - -4.6292027831077576e-01 1.0242109745740891e-01 - <_> - 7.0788101196289062e+01 - - 1 2 3010 888. 0 -1 3011 2.8350000000000000e+02 -2 -3 3012 - 5.4500000000000000e+01 - - 1.9198547303676605e-01 -3.3554536104202271e-01 - 7.5706630945205688e-01 -9.4958788156509399e-01 - <_> - 7.0992675781250000e+01 - - 1 2 3013 4.6500000000000000e+01 0 -1 3014 - 1.1500000000000000e+01 -2 -3 3015 3.8350000000000000e+02 - - 5.8137912303209305e-02 -8.1196117401123047e-01 - -5.8893513679504395e-01 2.0457436144351959e-01 - <_> - 7.0927970886230469e+01 - - 1 2 3016 4.5000000000000000e+00 0 -1 3017 - 3.7500000000000000e+01 -2 -3 3018 5.0000000000000000e-01 - - -6.4707726240158081e-02 -7.4383819103240967e-01 - 7.0274794101715088e-01 3.6739804781973362e-03 - <_> - 7.0937110900878906e+01 - - 1 2 3019 1.8750000000000000e+02 0 -1 3020 368. -2 -3 3021 - 1.5500000000000000e+01 - - -1. 7.3944020271301270e-01 9.1391317546367645e-03 - -5.9454476833343506e-01 - <_> - 7.1217323303222656e+01 - - 1 2 3022 1.2500000000000000e+01 0 -1 3023 - 1.5000000000000000e+00 -2 -3 3024 2.5000000000000000e+00 - - 7.2053438425064087e-01 -8.6623835563659668e-01 - 2.8021961450576782e-01 -2.7525502443313599e-01 - <_> - 7.1467041015625000e+01 - - 1 2 3025 7.5500000000000000e+01 0 -1 3026 - 2.8500000000000000e+01 -2 -3 3027 5.3500000000000000e+01 - - -4.2027494311332703e-01 5.5862784385681152e-01 - 3.1650352478027344e-01 -5.8407008647918701e-01 - <_> - 7.1588317871093750e+01 - - 1 2 3028 4.5000000000000000e+00 0 -1 3029 - 6.5000000000000000e+00 -2 -3 3030 4.5000000000000000e+00 - - -4.1601717472076416e-01 4.5779439806938171e-01 - 2.2142156958580017e-01 -3.8868919014930725e-01 - <_> - 7.1852600097656250e+01 - - 1 2 3031 8.7500000000000000e+01 0 -1 3032 - 2.9500000000000000e+01 -2 -3 3033 1.2500000000000000e+01 - - -7.2233885526657104e-02 5.3140532970428467e-01 - -9.3469631671905518e-01 1. - <_> - 7.1505233764648438e+01 - - 1 2 3034 5.0000000000000000e-01 0 -1 3035 - 6.5000000000000000e+00 -2 -3 3036 1.7255000000000000e+03 - - 3.3586502075195312e-01 -5.8553379774093628e-01 - -5.2456873655319214e-01 6.7789293825626373e-02 - <_> - 7.1216247558593750e+01 - - 1 2 3037 1.3850000000000000e+02 0 -1 3038 - 2.1500000000000000e+01 -2 -3 3039 8.3950000000000000e+02 - - -4.7844988107681274e-01 6.2551170587539673e-01 - 3.5149163007736206e-01 -2.8898537158966064e-01 - <_> - 7.1451400756835938e+01 - - 1 2 3040 2.7750000000000000e+02 0 -1 3041 - 7.5000000000000000e+00 -2 -3 3042 1.2150000000000000e+02 - - 3.0562061071395874e-01 -5.7451391220092773e-01 - 2.3515534400939941e-01 -5.9030193090438843e-01 - <_> - 7.1664764404296875e+01 - - 1 2 3043 2.5000000000000000e+00 0 -1 3044 - 2.6500000000000000e+01 -2 -3 3045 5.0550000000000000e+02 - - -9.2273312807083130e-01 1. 2.1336206793785095e-01 - -2.3929618299007416e-01 - <_> - 7.1852516174316406e+01 - - 1 2 3046 2.0550000000000000e+02 0 -1 3047 - 1.5000000000000000e+00 -2 -3 3048 1.0150000000000000e+02 - - 2.9846069216728210e-01 -4.9547702074050903e-01 - 6.2601786851882935e-01 -2.5054400321096182e-03 - <_> - 7.1862113952636719e+01 - - 1 2 3049 2.5000000000000000e+00 0 -1 3050 - 6.5000000000000000e+00 -2 -3 3051 8.5000000000000000e+00 - - -8.3387494087219238e-01 5.1528376340866089e-01 - 4.0370386838912964e-01 -1.0111065953969955e-01 - <_> - 7.1967544555664062e+01 - - 1 2 3052 1.7500000000000000e+01 0 -1 3053 311. -2 -3 3054 - 3.5000000000000000e+00 - - -2.8867423534393311e-01 2.3968809843063354e-01 - -8.3167719841003418e-01 3.0170908570289612e-01 - <_> - 7.2000297546386719e+01 - - 1 2 3055 1.0500000000000000e+01 0 -1 3056 - 2.8500000000000000e+01 -2 -3 3057 7.5000000000000000e+00 - - -1.0150995105504990e-01 5.2106666564941406e-01 - 4.5249879360198975e-01 -5.5006933212280273e-01 - <_> - 7.2459365844726562e+01 - - 1 2 3058 3.2535000000000000e+03 0 -1 3059 - 6.4450000000000000e+02 -2 -3 3060 4.7500000000000000e+01 - - -2.9244979843497276e-02 7.8562206029891968e-01 - -9.7256761789321899e-01 6.8540745973587036e-01 - <_> - 7.2652557373046875e+01 - - 1 2 3061 5.0000000000000000e-01 0 -1 3062 - 1.9455000000000000e+03 -2 -3 3063 8.3950000000000000e+02 - - 3.9193862676620483e-01 -5.5309027433395386e-01 - -3.6735993623733521e-01 2.9874709248542786e-01 - <_> - 7.2714279174804688e+01 - - 1 2 3064 3.5000000000000000e+00 0 -1 3065 - 1.3500000000000000e+01 -2 -3 3066 5.0000000000000000e-01 - - -6.2343889474868774e-01 3.5922548174858093e-01 - 4.0484932065010071e-01 -9.4865411520004272e-02 - <_> - 7.2773506164550781e+01 - - 1 2 3067 7.1450000000000000e+02 0 -1 3068 - 1.1165000000000000e+03 -2 -3 3069 1.5500000000000000e+01 - - -1.4480955898761749e-01 5.5192404985427856e-01 - -4.6364155411720276e-01 9.9115431308746338e-02 - - <_> - 0 - - 3 9 3 5 - <_> - 3 - - 2 1 3 12 - <_> - 8 - - 3 3 2 1 - <_> - 2 - - 2 8 2 6 - <_> - 5 - - 2 2 4 5 - <_> - 5 - - 0 14 7 1 - <_> - 4 - - 3 10 2 2 - <_> - 1 - - 3 13 3 2 - <_> - 4 - - 1 5 6 8 - <_> - 9 - - 4 8 1 2 - <_> - 3 - - 0 0 6 8 - <_> - 8 - - 3 3 2 1 - <_> - 3 - - 2 14 5 1 - <_> - 4 - - 1 3 5 12 - <_> - 2 - - 2 8 3 6 - <_> - 0 - - 3 9 3 5 - <_> - 5 - - 5 4 1 1 - <_> - 4 - - 3 1 2 4 - <_> - 1 - - 3 5 2 1 - <_> - 2 - - 2 6 3 8 - <_> - 9 - - 3 7 2 2 - <_> - 2 - - 0 14 7 1 - <_> - 0 - - 2 3 4 10 - <_> - 1 - - 3 3 1 2 - <_> - 4 - - 1 0 6 15 - <_> - 1 - - 3 2 2 3 - <_> - 1 - - 2 5 4 4 - <_> - 7 - - 3 6 2 1 - <_> - 7 - - 1 14 6 1 - <_> - 1 - - 3 2 2 6 - <_> - 1 - - 3 10 2 3 - <_> - 2 - - 0 14 7 1 - <_> - 1 - - 1 0 6 1 - <_> - 2 - - 1 13 4 1 - <_> - 3 - - 2 4 1 4 - <_> - 5 - - 2 14 5 1 - <_> - 8 - - 3 2 2 2 - <_> - 8 - - 3 2 2 5 - <_> - 8 - - 6 10 1 2 - <_> - 0 - - 2 2 5 2 - <_> - 7 - - 0 8 6 1 - <_> - 0 - - 2 0 4 2 - <_> - 5 - - 4 2 1 1 - <_> - 2 - - 4 3 2 2 - <_> - 5 - - 1 0 6 1 - <_> - 9 - - 3 4 1 2 - <_> - 9 - - 3 1 1 3 - <_> - 8 - - 3 3 2 1 - <_> - 4 - - 0 14 4 1 - <_> - 0 - - 2 12 5 2 - <_> - 9 - - 0 10 4 1 - <_> - 1 - - 3 13 2 2 - <_> - 5 - - 5 4 1 4 - <_> - 1 - - 2 5 4 2 - <_> - 5 - - 2 8 2 2 - <_> - 3 - - 2 1 1 13 - <_> - 3 - - 3 7 1 1 - <_> - 1 - - 3 3 2 1 - <_> - 3 - - 3 3 1 1 - <_> - 4 - - 1 3 6 3 - <_> - 5 - - 5 5 1 8 - <_> - 7 - - 0 4 1 3 - <_> - 2 - - 0 1 6 8 - <_> - 2 - - 2 3 4 10 - <_> - 4 - - 1 3 6 12 - <_> - 2 - - 0 0 7 1 - <_> - 4 - - 4 0 1 11 - <_> - 7 - - 3 6 1 1 - <_> - 4 - - 3 11 2 2 - <_> - 3 - - 0 14 4 1 - <_> - 2 - - 2 12 3 2 - <_> - 4 - - 2 2 4 1 - <_> - 0 - - 4 5 1 2 - <_> - 0 - - 2 7 4 4 - <_> - 8 - - 2 6 4 1 - <_> - 4 - - 3 9 2 2 - <_> - 1 - - 0 6 4 8 - <_> - 5 - - 0 12 2 2 - <_> - 8 - - 2 14 3 1 - <_> - 8 - - 2 3 4 1 - <_> - 8 - - 3 10 2 4 - <_> - 4 - - 1 5 6 9 - <_> - 8 - - 3 0 2 2 - <_> - 9 - - 3 10 2 1 - <_> - 5 - - 3 4 4 3 - <_> - 2 - - 5 4 1 4 - <_> - 8 - - 3 3 2 1 - <_> - 7 - - 3 7 2 1 - <_> - 7 - - 5 10 1 3 - <_> - 0 - - 2 4 1 4 - <_> - 9 - - 4 4 1 3 - <_> - 9 - - 0 1 7 12 - <_> - 2 - - 6 13 1 2 - <_> - 3 - - 3 13 2 1 - <_> - 2 - - 5 6 2 2 - <_> - 0 - - 1 10 1 2 - <_> - 1 - - 3 14 2 1 - <_> - 0 - - 3 9 2 4 - <_> - 4 - - 1 3 5 2 - <_> - 4 - - 3 0 3 15 - <_> - 2 - - 1 14 5 1 - <_> - 1 - - 4 5 2 3 - <_> - 1 - - 0 3 5 2 - <_> - 4 - - 3 2 2 1 - <_> - 2 - - 0 2 6 3 - <_> - 1 - - 3 5 2 2 - <_> - 7 - - 0 0 4 9 - <_> - 1 - - 1 8 4 1 - <_> - 2 - - 2 8 3 6 - <_> - 1 - - 4 7 1 1 - <_> - 7 - - 5 12 2 1 - <_> - 3 - - 2 0 5 1 - <_> - 3 - - 5 11 1 2 - <_> - 9 - - 3 6 1 9 - <_> - 8 - - 2 3 3 1 - <_> - 3 - - 2 8 1 4 - <_> - 8 - - 4 4 1 1 - <_> - 1 - - 2 13 3 2 - <_> - 8 - - 4 9 1 3 - <_> - 1 - - 3 10 2 3 - <_> - 9 - - 0 0 1 1 - <_> - 0 - - 4 5 2 1 - <_> - 9 - - 4 3 1 10 - <_> - 0 - - 0 2 5 3 - <_> - 3 - - 2 0 1 6 - <_> - 8 - - 3 3 1 1 - <_> - 8 - - 2 2 1 1 - <_> - 8 - - 4 3 1 3 - <_> - 9 - - 1 9 5 2 - <_> - 3 - - 1 14 4 1 - <_> - 0 - - 3 13 4 2 - <_> - 2 - - 2 7 4 7 - <_> - 4 - - 2 0 4 15 - <_> - 0 - - 1 4 3 1 - <_> - 8 - - 1 1 1 2 - <_> - 2 - - 3 13 2 1 - <_> - 5 - - 4 4 3 2 - <_> - 2 - - 3 5 2 4 - <_> - 5 - - 4 14 2 1 - <_> - 5 - - 4 7 2 6 - <_> - 5 - - 0 3 2 5 - <_> - 5 - - 1 12 1 3 - <_> - 3 - - 2 12 2 3 - <_> - 9 - - 4 8 1 1 - <_> - 3 - - 0 5 1 5 - <_> - 7 - - 6 1 1 11 - <_> - 7 - - 5 12 1 1 - <_> - 8 - - 4 3 1 1 - <_> - 4 - - 3 10 2 1 - <_> - 3 - - 3 0 4 6 - <_> - 3 - - 3 14 4 1 - <_> - 2 - - 1 11 3 3 - <_> - 2 - - 3 5 2 1 - <_> - 1 - - 3 2 2 1 - <_> - 4 - - 3 2 3 1 - <_> - 4 - - 0 1 7 1 - <_> - 1 - - 3 5 2 2 - <_> - 7 - - 4 7 2 3 - <_> - 2 - - 5 3 2 5 - <_> - 3 - - 2 4 1 1 - <_> - 2 - - 2 14 5 1 - <_> - 0 - - 0 0 5 9 - <_> - 1 - - 3 0 1 15 - <_> - 7 - - 2 7 4 1 - <_> - 7 - - 1 14 2 1 - <_> - 1 - - 2 11 3 2 - <_> - 1 - - 1 13 3 1 - <_> - 5 - - 4 1 3 14 - <_> - 3 - - 1 5 6 2 - <_> - 3 - - 2 11 1 2 - <_> - 0 - - 1 0 4 1 - <_> - 1 - - 0 6 6 9 - <_> - 7 - - 2 4 4 8 - <_> - 2 - - 3 5 1 9 - <_> - 0 - - 2 3 2 11 - <_> - 4 - - 3 14 2 1 - <_> - 0 - - 0 10 1 1 - <_> - 2 - - 4 7 1 2 - <_> - 2 - - 0 3 6 11 - <_> - 8 - - 3 3 1 1 - <_> - 9 - - 3 4 2 1 - <_> - 9 - - 3 0 3 3 - <_> - 4 - - 3 3 2 3 - <_> - 5 - - 4 14 3 1 - <_> - 5 - - 2 10 4 5 - <_> - 3 - - 3 2 1 1 - <_> - 0 - - 3 5 2 2 - <_> - 3 - - 1 14 3 1 - <_> - 7 - - 0 14 5 1 - <_> - 0 - - 3 9 4 5 - <_> - 1 - - 0 8 5 2 - <_> - 1 - - 3 1 2 3 - <_> - 3 - - 4 1 2 4 - <_> - 5 - - 2 10 5 1 - <_> - 1 - - 1 1 4 1 - <_> - 5 - - 3 1 4 4 - <_> - 7 - - 1 3 2 10 - <_> - 5 - - 3 0 4 2 - <_> - 7 - - 0 0 1 11 - <_> - 4 - - 4 1 1 7 - <_> - 9 - - 3 4 3 5 - <_> - 8 - - 0 14 4 1 - <_> - 8 - - 3 3 2 1 - <_> - 4 - - 2 7 4 2 - <_> - 4 - - 1 5 6 7 - <_> - 1 - - 3 7 1 1 - <_> - 7 - - 3 6 2 1 - <_> - 9 - - 3 8 2 6 - <_> - 7 - - 4 10 1 3 - <_> - 1 - - 0 2 5 3 - <_> - 4 - - 3 0 2 5 - <_> - 2 - - 2 9 2 1 - <_> - 9 - - 1 4 2 4 - <_> - 3 - - 2 14 2 1 - <_> - 3 - - 0 12 5 2 - <_> - 2 - - 1 14 2 1 - <_> - 5 - - 2 11 1 2 - <_> - 2 - - 2 8 3 6 - <_> - 0 - - 4 3 1 1 - <_> - 5 - - 5 12 1 1 - <_> - 2 - - 6 9 1 3 - <_> - 0 - - 5 4 2 1 - <_> - 0 - - 3 8 2 6 - <_> - 2 - - 3 9 1 1 - <_> - 4 - - 2 4 2 10 - <_> - 1 - - 3 14 1 1 - <_> - 9 - - 0 0 2 3 - <_> - 4 - - 2 4 3 1 - <_> - 9 - - 5 9 2 2 - <_> - 9 - - 3 2 2 3 - <_> - 9 - - 4 4 1 2 - <_> - 0 - - 3 0 2 13 - <_> - 0 - - 0 0 6 14 - <_> - 5 - - 2 3 1 1 - <_> - 1 - - 3 5 2 2 - <_> - 4 - - 2 4 3 7 - <_> - 9 - - 4 8 1 1 - <_> - 8 - - 3 3 3 1 - <_> - 8 - - 4 5 2 3 - <_> - 8 - - 3 1 2 1 - <_> - 4 - - 2 10 5 1 - <_> - 0 - - 1 0 3 1 - <_> - 8 - - 3 3 2 11 - <_> - 5 - - 4 2 1 1 - <_> - 0 - - 0 9 1 2 - <_> - 3 - - 1 12 2 3 - <_> - 3 - - 1 5 2 8 - <_> - 0 - - 2 4 2 1 - <_> - 3 - - 0 4 6 7 - <_> - 7 - - 2 5 1 2 - <_> - 7 - - 5 13 1 2 - <_> - 1 - - 3 0 3 9 - <_> - 0 - - 0 14 6 1 - <_> - 0 - - 4 7 2 7 - <_> - 7 - - 3 10 1 5 - <_> - 1 - - 3 10 2 3 - <_> - 1 - - 2 10 4 5 - <_> - 3 - - 2 2 2 1 - <_> - 0 - - 3 5 2 1 - <_> - 2 - - 2 13 3 1 - <_> - 0 - - 2 0 4 2 - <_> - 5 - - 1 14 5 1 - <_> - 5 - - 4 2 2 2 - <_> - 0 - - 2 10 3 4 - <_> - 8 - - 2 14 3 1 - <_> - 8 - - 3 3 1 1 - <_> - 5 - - 3 12 1 2 - <_> - 4 - - 0 5 6 2 - <_> - 3 - - 3 3 3 3 - <_> - 7 - - 1 11 2 4 - <_> - 9 - - 3 4 1 8 - <_> - 7 - - 4 11 1 2 - <_> - 8 - - 3 5 1 7 - <_> - 0 - - 2 3 4 8 - <_> - 7 - - 3 3 1 4 - <_> - 0 - - 3 14 4 1 - <_> - 1 - - 4 0 3 14 - <_> - 2 - - 4 3 3 2 - <_> - 0 - - 3 1 1 9 - <_> - 3 - - 5 10 2 4 - <_> - 3 - - 2 8 2 3 - <_> - 4 - - 2 1 3 3 - <_> - 0 - - 4 13 3 1 - <_> - 0 - - 0 10 2 3 - <_> - 5 - - 2 14 4 1 - <_> - 9 - - 3 4 2 5 - <_> - 9 - - 0 14 5 1 - <_> - 8 - - 3 3 2 1 - <_> - 4 - - 3 9 3 4 - <_> - 2 - - 0 14 7 1 - <_> - 9 - - 3 11 2 2 - <_> - 2 - - 2 13 3 1 - <_> - 3 - - 2 12 3 2 - <_> - 2 - - 2 5 3 1 - <_> - 0 - - 4 6 1 1 - <_> - 0 - - 2 0 1 9 - <_> - 9 - - 3 12 4 2 - <_> - 4 - - 3 10 2 2 - <_> - 1 - - 1 7 3 8 - <_> - 9 - - 3 2 2 12 - <_> - 4 - - 0 14 7 1 - <_> - 4 - - 2 4 4 3 - <_> - 1 - - 4 2 1 12 - <_> - 4 - - 3 0 4 14 - <_> - 2 - - 1 1 4 13 - <_> - 1 - - 4 13 3 2 - <_> - 1 - - 2 5 4 1 - <_> - 9 - - 6 9 1 1 - <_> - 7 - - 3 5 2 9 - <_> - 3 - - 3 2 2 3 - <_> - 7 - - 0 1 1 5 - <_> - 0 - - 1 14 2 1 - <_> - 1 - - 0 3 5 3 - <_> - 2 - - 3 1 2 1 - <_> - 5 - - 4 9 2 4 - <_> - 1 - - 1 13 5 1 - <_> - 5 - - 0 11 1 2 - <_> - 5 - - 3 8 1 1 - <_> - 8 - - 4 3 1 1 - <_> - 9 - - 3 4 1 2 - <_> - 2 - - 4 1 1 4 - <_> - 5 - - 5 4 1 5 - <_> - 7 - - 0 0 1 12 - <_> - 3 - - 1 6 4 4 - <_> - 5 - - 1 4 6 3 - <_> - 0 - - 5 8 1 7 - <_> - 3 - - 3 7 1 1 - <_> - 3 - - 2 0 2 14 - <_> - 7 - - 3 0 1 3 - <_> - 4 - - 2 0 3 6 - <_> - 0 - - 4 0 2 8 - <_> - 3 - - 0 14 6 1 - <_> - 3 - - 4 1 1 6 - <_> - 4 - - 1 5 2 6 - <_> - 7 - - 1 13 2 1 - <_> - 2 - - 0 0 3 10 - <_> - 0 - - 3 9 2 4 - <_> - 1 - - 3 0 2 1 - <_> - 1 - - 3 4 3 9 - <_> - 5 - - 3 2 4 4 - <_> - 1 - - 2 11 3 2 - <_> - 2 - - 4 5 1 4 - <_> - 5 - - 0 10 2 1 - <_> - 2 - - 2 7 5 1 - <_> - 1 - - 3 12 2 3 - <_> - 0 - - 1 12 5 2 - <_> - 1 - - 2 12 2 1 - <_> - 5 - - 3 14 4 1 - <_> - 4 - - 4 1 2 9 - <_> - 7 - - 0 6 1 2 - <_> - 1 - - 4 5 2 1 - <_> - 4 - - 4 10 2 1 - <_> - 3 - - 2 6 1 5 - <_> - 2 - - 3 7 3 4 - <_> - 8 - - 3 2 2 2 - <_> - 8 - - 1 11 4 1 - <_> - 8 - - 4 10 1 2 - <_> - 3 - - 0 9 2 5 - <_> - 2 - - 1 6 3 5 - <_> - 9 - - 4 5 1 1 - <_> - 3 - - 1 12 4 2 - <_> - 2 - - 3 7 1 4 - <_> - 0 - - 0 12 3 1 - <_> - 7 - - 2 14 4 1 - <_> - 1 - - 0 4 7 11 - <_> - 2 - - 4 5 3 9 - <_> - 3 - - 1 10 2 5 - <_> - 8 - - 3 3 2 1 - <_> - 2 - - 0 0 5 1 - <_> - 8 - - 3 8 4 3 - <_> - 8 - - 2 6 5 2 - <_> - 5 - - 4 14 3 1 - <_> - 4 - - 1 0 6 15 - <_> - 5 - - 4 8 2 6 - <_> - 4 - - 0 0 7 2 - <_> - 0 - - 1 1 6 1 - <_> - 3 - - 0 1 6 6 - <_> - 4 - - 4 9 1 2 - <_> - 0 - - 2 4 1 1 - <_> - 3 - - 2 4 1 2 - <_> - 2 - - 0 1 5 6 - <_> - 7 - - 0 3 5 1 - <_> - 3 - - 2 0 1 1 - <_> - 2 - - 3 1 1 3 - <_> - 3 - - 5 11 1 1 - <_> - 0 - - 3 7 3 6 - <_> - 0 - - 0 11 4 3 - <_> - 9 - - 1 1 1 1 - <_> - 0 - - 4 4 2 1 - <_> - 9 - - 3 2 2 10 - <_> - 2 - - 0 14 7 1 - <_> - 1 - - 3 5 3 7 - <_> - 5 - - 2 11 4 2 - <_> - 2 - - 1 9 4 5 - <_> - 2 - - 2 3 4 4 - <_> - 9 - - 2 8 3 1 - <_> - 1 - - 6 0 1 15 - <_> - 2 - - 2 4 3 3 - <_> - 1 - - 3 10 3 2 - <_> - 8 - - 4 3 1 1 - <_> - 1 - - 5 11 1 4 - <_> - 8 - - 4 0 1 1 - <_> - 2 - - 3 5 1 3 - <_> - 3 - - 3 1 2 3 - <_> - 4 - - 3 3 2 8 - <_> - 4 - - 4 4 3 11 - <_> - 3 - - 0 14 6 1 - <_> - 0 - - 5 13 1 2 - <_> - 5 - - 1 4 5 4 - <_> - 1 - - 2 8 3 3 - <_> - 5 - - 3 12 2 3 - <_> - 5 - - 3 14 4 1 - <_> - 2 - - 2 11 4 3 - <_> - 1 - - 0 14 1 1 - <_> - 1 - - 1 13 5 1 - <_> - 0 - - 5 8 1 3 - <_> - 4 - - 1 0 6 1 - <_> - 5 - - 5 0 1 7 - <_> - 1 - - 0 4 7 2 - <_> - 5 - - 1 14 6 1 - <_> - 1 - - 3 5 2 2 - <_> - 1 - - 2 0 3 10 - <_> - 7 - - 3 3 2 11 - <_> - 7 - - 3 3 4 1 - <_> - 4 - - 3 10 2 2 - <_> - 2 - - 3 9 3 5 - <_> - 3 - - 2 3 2 2 - <_> - 1 - - 3 2 2 3 - <_> - 1 - - 3 4 1 7 - <_> - 3 - - 1 4 2 2 - <_> - 0 - - 1 5 2 1 - <_> - 4 - - 0 5 7 3 - <_> - 2 - - 2 7 3 6 - <_> - 0 - - 2 4 1 1 - <_> - 2 - - 4 7 1 3 - <_> - 7 - - 3 5 4 6 - <_> - 1 - - 0 14 5 1 - <_> - 1 - - 3 3 3 1 - <_> - 9 - - 4 8 1 1 - <_> - 9 - - 0 0 2 12 - <_> - 8 - - 2 6 2 1 - <_> - 5 - - 1 0 5 2 - <_> - 2 - - 3 2 3 3 - <_> - 5 - - 2 11 1 4 - <_> - 0 - - 3 10 3 4 - <_> - 4 - - 2 2 2 2 - <_> - 4 - - 0 5 7 9 - <_> - 0 - - 1 3 2 5 - <_> - 2 - - 2 4 2 1 - <_> - 5 - - 0 0 5 11 - <_> - 5 - - 3 2 2 1 - <_> - 8 - - 5 2 2 3 - <_> - 0 - - 4 4 3 2 - <_> - 8 - - 4 2 1 2 - <_> - 0 - - 0 2 7 1 - <_> - 8 - - 4 4 1 1 - <_> - 1 - - 4 2 1 13 - <_> - 4 - - 4 0 2 15 - <_> - 4 - - 2 0 4 8 - <_> - 1 - - 3 5 2 1 - <_> - 8 - - 3 3 2 5 - <_> - 4 - - 0 12 4 3 - <_> - 5 - - 2 5 5 3 - <_> - 9 - - 1 0 5 7 - <_> - 3 - - 2 0 2 14 - <_> - 5 - - 2 8 2 1 - <_> - 2 - - 2 5 1 9 - <_> - 2 - - 0 6 3 1 - <_> - 8 - - 3 3 1 1 - <_> - 2 - - 2 1 5 1 - <_> - 8 - - 3 0 1 2 - <_> - 3 - - 3 2 4 2 - <_> - 0 - - 3 3 2 1 - <_> - 4 - - 1 0 4 3 - <_> - 5 - - 0 14 6 1 - <_> - 5 - - 0 12 6 2 - <_> - 7 - - 3 6 1 1 - <_> - 5 - - 0 7 2 1 - <_> - 8 - - 2 14 3 1 - <_> - 2 - - 4 12 3 2 - <_> - 8 - - 3 3 2 1 - <_> - 8 - - 2 3 1 1 - <_> - 8 - - 5 2 1 1 - <_> - 3 - - 5 11 1 3 - <_> - 0 - - 4 9 3 5 - <_> - 7 - - 2 14 2 1 - <_> - 1 - - 3 10 2 3 - <_> - 2 - - 2 14 5 1 - <_> - 2 - - 1 13 5 1 - <_> - 1 - - 0 1 6 3 - <_> - 4 - - 0 4 7 1 - <_> - 1 - - 1 1 1 2 - <_> - 2 - - 1 10 5 1 - <_> - 7 - - 3 6 4 3 - <_> - 2 - - 0 14 7 1 - <_> - 2 - - 2 3 4 2 - <_> - 5 - - 2 4 5 3 - <_> - 2 - - 0 0 3 11 - <_> - 3 - - 3 4 3 8 - <_> - 7 - - 1 13 2 2 - <_> - 5 - - 0 3 3 5 - <_> - 8 - - 3 0 2 5 - <_> - 9 - - 4 5 1 6 - <_> - 4 - - 3 10 2 5 - <_> - 0 - - 1 6 6 2 - <_> - 4 - - 6 1 1 8 - <_> - 4 - - 4 9 1 2 - <_> - 0 - - 1 11 1 4 - <_> - 5 - - 3 5 3 10 - <_> - 0 - - 1 12 5 2 - <_> - 3 - - 2 9 2 6 - <_> - 3 - - 1 1 3 4 - <_> - 5 - - 0 10 4 1 - <_> - 1 - - 2 2 3 2 - <_> - 4 - - 3 2 4 1 - <_> - 4 - - 1 0 2 2 - <_> - 3 - - 2 14 3 1 - <_> - 3 - - 1 11 5 3 - <_> - 1 - - 4 11 2 2 - <_> - 5 - - 4 1 3 6 - <_> - 4 - - 0 2 7 3 - <_> - 2 - - 2 8 3 6 - <_> - 5 - - 4 7 1 1 - <_> - 4 - - 5 0 1 10 - <_> - 8 - - 3 6 1 1 - <_> - 5 - - 4 14 3 1 - <_> - 0 - - 1 11 6 3 - <_> - 1 - - 3 1 2 4 - <_> - 8 - - 5 5 1 9 - <_> - 5 - - 0 2 1 1 - <_> - 8 - - 6 10 1 2 - <_> - 4 - - 0 5 7 7 - <_> - 5 - - 3 3 3 11 - <_> - 7 - - 0 13 5 2 - <_> - 7 - - 3 8 1 1 - <_> - 7 - - 1 0 2 2 - <_> - 4 - - 3 3 2 9 - <_> - 5 - - 1 14 6 1 - <_> - 9 - - 4 9 1 1 - <_> - 1 - - 5 12 2 3 - <_> - 8 - - 3 2 2 2 - <_> - 9 - - 1 0 6 2 - <_> - 3 - - 3 7 1 1 - <_> - 8 - - 4 1 1 1 - <_> - 7 - - 3 3 2 8 - <_> - 4 - - 3 10 1 5 - <_> - 2 - - 2 3 4 10 - <_> - 0 - - 0 10 1 3 - <_> - 2 - - 1 6 5 3 - <_> - 1 - - 2 13 3 2 - <_> - 0 - - 2 4 3 2 - <_> - 4 - - 3 1 2 4 - <_> - 4 - - 3 1 3 2 - <_> - 1 - - 4 2 1 3 - <_> - 5 - - 0 2 5 2 - <_> - 7 - - 3 6 1 1 - <_> - 4 - - 4 3 1 8 - <_> - 0 - - 2 3 1 5 - <_> - 3 - - 0 14 4 1 - <_> - 4 - - 3 1 4 14 - <_> - 4 - - 1 6 6 1 - <_> - 2 - - 2 9 3 5 - <_> - 4 - - 0 4 2 3 - <_> - 0 - - 3 0 2 8 - <_> - 8 - - 3 3 2 1 - <_> - 9 - - 3 7 1 2 - <_> - 8 - - 1 8 1 4 - <_> - 1 - - 3 14 2 1 - <_> - 3 - - 1 4 2 6 - <_> - 4 - - 1 4 6 1 - <_> - 4 - - 2 10 5 1 - <_> - 1 - - 5 6 2 8 - <_> - 2 - - 2 5 2 2 - <_> - 0 - - 3 2 2 2 - <_> - 3 - - 1 2 5 1 - <_> - 4 - - 0 14 2 1 - <_> - 0 - - 6 14 1 1 - <_> - 3 - - 1 6 3 1 - <_> - 2 - - 3 3 2 12 - <_> - 3 - - 0 4 5 11 - <_> - 0 - - 3 11 2 2 - <_> - 3 - - 4 6 1 3 - <_> - 1 - - 3 4 4 10 - <_> - 2 - - 0 14 7 1 - <_> - 7 - - 0 1 1 2 - <_> - 0 - - 4 8 3 2 - <_> - 1 - - 5 10 1 3 - <_> - 0 - - 5 2 2 3 - <_> - 2 - - 4 8 2 1 - <_> - 1 - - 2 13 5 1 - <_> - 9 - - 2 0 2 3 - <_> - 9 - - 4 4 2 2 - <_> - 2 - - 5 3 2 10 - <_> - 8 - - 3 3 2 1 - <_> - 1 - - 3 5 2 2 - <_> - 4 - - 3 4 3 2 - <_> - 7 - - 4 7 3 1 - <_> - 5 - - 2 14 1 1 - <_> - 1 - - 2 1 5 1 - <_> - 0 - - 1 4 5 4 - <_> - 0 - - 3 5 2 3 - <_> - 0 - - 1 1 5 13 - <_> - 1 - - 1 1 6 1 - <_> - 5 - - 0 10 2 2 - <_> - 2 - - 1 13 3 1 - <_> - 2 - - 4 13 1 1 - <_> - 0 - - 0 1 3 6 - <_> - 4 - - 0 2 4 5 - <_> - 4 - - 1 0 6 14 - <_> - 2 - - 5 14 2 1 - <_> - 5 - - 3 10 4 4 - <_> - 2 - - 3 3 1 1 - <_> - 5 - - 4 11 3 4 - <_> - 2 - - 0 1 5 1 - <_> - 4 - - 2 11 1 1 - <_> - 1 - - 0 0 7 5 - <_> - 5 - - 5 2 1 11 - <_> - 4 - - 1 5 3 10 - <_> - 0 - - 3 2 1 12 - <_> - 4 - - 3 14 2 1 - <_> - 2 - - 1 10 1 4 - <_> - 8 - - 2 14 3 1 - <_> - 8 - - 0 1 5 11 - <_> - 1 - - 1 7 4 3 - <_> - 4 - - 3 10 2 2 - <_> - 4 - - 2 3 4 5 - <_> - 1 - - 3 14 2 1 - <_> - 7 - - 2 13 1 1 - <_> - 7 - - 2 8 5 7 - <_> - 1 - - 3 9 2 4 - <_> - 5 - - 4 1 1 11 - <_> - 7 - - 6 1 1 6 - <_> - 9 - - 3 8 2 2 - <_> - 9 - - 1 13 2 2 - <_> - 2 - - 3 5 1 3 - <_> - 9 - - 3 4 3 2 - <_> - 3 - - 3 2 1 13 - <_> - 1 - - 5 10 1 2 - <_> - 5 - - 3 2 4 2 - <_> - 7 - - 3 7 3 3 - <_> - 0 - - 5 1 2 2 - <_> - 8 - - 4 2 2 2 - <_> - 1 - - 3 2 2 3 - <_> - 7 - - 3 5 1 3 - <_> - 4 - - 2 1 5 5 - <_> - 8 - - 3 3 2 1 - <_> - 9 - - 3 4 2 8 - <_> - 8 - - 3 1 1 1 - <_> - 5 - - 5 2 1 6 - <_> - 5 - - 3 14 4 1 - <_> - 7 - - 2 8 1 4 - <_> - 0 - - 3 12 4 2 - <_> - 3 - - 1 4 2 1 - <_> - 3 - - 1 14 5 1 - <_> - 1 - - 3 4 2 6 - <_> - 1 - - 3 7 2 2 - <_> - 2 - - 0 9 6 3 - <_> - 2 - - 1 6 3 7 - <_> - 0 - - 1 7 1 4 - <_> - 2 - - 4 7 1 3 - <_> - 2 - - 0 14 5 1 - <_> - 2 - - 4 5 2 6 - <_> - 8 - - 4 3 1 1 - <_> - 0 - - 4 4 2 2 - <_> - 0 - - 4 0 2 14 - <_> - 3 - - 2 0 5 1 - <_> - 3 - - 1 2 3 1 - <_> - 1 - - 3 12 2 1 - <_> - 5 - - 5 1 1 10 - <_> - 0 - - 1 0 3 2 - <_> - 7 - - 5 14 1 1 - <_> - 5 - - 0 10 2 5 - <_> - 8 - - 2 3 3 1 - <_> - 8 - - 4 2 1 3 - <_> - 8 - - 4 11 1 1 - <_> - 0 - - 1 0 3 5 - <_> - 5 - - 4 2 2 1 - <_> - 1 - - 2 5 3 2 - <_> - 3 - - 2 5 1 9 - <_> - 2 - - 6 12 1 3 - <_> - 2 - - 0 2 5 12 - <_> - 4 - - 6 5 1 10 - <_> - 1 - - 4 3 1 2 - <_> - 5 - - 3 5 1 6 - <_> - 0 - - 3 9 2 3 - <_> - 2 - - 1 8 3 1 - <_> - 0 - - 5 14 1 1 - <_> - 5 - - 5 3 1 8 - <_> - 1 - - 1 0 6 2 - <_> - 5 - - 3 10 2 5 - <_> - 2 - - 2 13 3 1 - <_> - 9 - - 3 4 2 2 - <_> - 1 - - 1 5 1 10 - <_> - 5 - - 1 9 1 3 - <_> - 2 - - 2 6 5 4 - <_> - 9 - - 1 7 2 4 - <_> - 9 - - 3 1 2 3 - <_> - 8 - - 2 0 1 4 - <_> - 9 - - 3 4 1 4 - <_> - 8 - - 3 3 1 1 - <_> - 2 - - 2 1 5 2 - <_> - 1 - - 3 10 2 3 - <_> - 3 - - 3 2 1 1 - <_> - 3 - - 0 11 2 4 - <_> - 9 - - 3 9 3 2 - <_> - 1 - - 3 14 2 1 - <_> - 1 - - 1 0 1 2 - <_> - 4 - - 4 14 3 1 - <_> - 0 - - 3 10 3 4 - <_> - 1 - - 2 2 2 1 - <_> - 4 - - 2 4 3 7 - <_> - 4 - - 3 9 1 2 - <_> - 1 - - 2 7 2 3 - <_> - 9 - - 4 9 1 2 - <_> - 4 - - 0 5 5 10 - <_> - 1 - - 3 13 4 1 - <_> - 1 - - 2 6 5 2 - <_> - 7 - - 5 14 1 1 - <_> - 0 - - 3 7 2 1 - <_> - 0 - - 4 12 2 2 - <_> - 3 - - 0 3 6 5 - <_> - 7 - - 3 9 2 5 - <_> - 3 - - 2 14 1 1 - <_> - 3 - - 0 6 1 1 - <_> - 4 - - 2 3 4 11 - <_> - 1 - - 3 7 2 2 - <_> - 1 - - 2 2 3 2 - <_> - 2 - - 3 14 2 1 - <_> - 3 - - 0 12 6 2 - <_> - 3 - - 5 12 2 1 - <_> - 1 - - 5 1 2 2 - <_> - 0 - - 5 9 2 1 - <_> - 0 - - 3 3 4 11 - <_> - 1 - - 1 6 6 7 - <_> - 5 - - 3 14 4 1 - <_> - 9 - - 3 9 2 2 - <_> - 9 - - 0 7 7 1 - <_> - 8 - - 3 3 2 10 - <_> - 9 - - 3 5 2 3 - <_> - 9 - - 0 2 7 3 - <_> - 8 - - 3 2 2 2 - <_> - 8 - - 3 0 2 1 - <_> - 8 - - 3 1 2 13 - <_> - 3 - - 6 9 1 3 - <_> - 2 - - 3 10 2 4 - <_> - 1 - - 2 3 3 6 - <_> - 2 - - 3 8 2 1 - <_> - 5 - - 3 7 1 5 - <_> - 2 - - 4 4 2 1 - <_> - 4 - - 4 14 3 1 - <_> - 0 - - 0 14 6 1 - <_> - 2 - - 2 7 2 6 - <_> - 2 - - 5 0 1 15 - <_> - 4 - - 0 14 2 1 - <_> - 1 - - 2 14 3 1 - <_> - 2 - - 3 6 4 3 - <_> - 4 - - 3 1 3 4 - <_> - 1 - - 3 1 2 4 - <_> - 4 - - 2 0 5 13 - <_> - 9 - - 1 2 6 5 - <_> - 3 - - 1 2 2 12 - <_> - 3 - - 0 7 4 2 - <_> - 3 - - 2 8 5 2 - <_> - 0 - - 3 5 2 2 - <_> - 5 - - 3 4 4 1 - <_> - 2 - - 2 9 1 6 - <_> - 1 - - 0 1 4 1 - <_> - 5 - - 2 1 1 12 - <_> - 9 - - 4 9 1 4 - <_> - 2 - - 1 0 3 11 - <_> - 5 - - 2 11 1 2 - <_> - 5 - - 2 2 1 3 - <_> - 7 - - 6 11 1 3 - <_> - 7 - - 4 8 1 1 - <_> - 0 - - 4 7 2 4 - <_> - 0 - - 2 3 3 9 - <_> - 0 - - 0 10 1 2 - <_> - 1 - - 2 2 2 2 - <_> - 3 - - 2 2 5 3 - <_> - 4 - - 3 10 2 5 - <_> - 0 - - 1 4 3 2 - <_> - 3 - - 4 12 2 1 - <_> - 2 - - 3 0 4 2 - <_> - 5 - - 4 7 1 1 - <_> - 0 - - 3 4 2 2 - <_> - 5 - - 3 4 3 11 - <_> - 4 - - 2 10 4 3 - <_> - 2 - - 3 1 2 14 - <_> - 5 - - 3 0 4 10 - <_> - 4 - - 3 1 2 2 - <_> - 9 - - 6 0 1 1 - <_> - 8 - - 3 3 2 1 - <_> - 1 - - 3 0 2 1 - <_> - 8 - - 1 0 6 5 - <_> - 2 - - 0 14 7 1 - <_> - 7 - - 2 14 1 1 - <_> - 1 - - 1 10 1 3 - <_> - 7 - - 3 2 2 9 - <_> - 3 - - 2 2 1 13 - <_> - 3 - - 3 2 1 3 - <_> - 4 - - 0 1 6 13 - <_> - 4 - - 2 4 4 5 - <_> - 1 - - 1 8 2 3 - <_> - 0 - - 3 9 3 2 - <_> - 8 - - 1 2 1 4 - <_> - 0 - - 3 7 2 1 - <_> - 3 - - 3 14 4 1 - <_> - 0 - - 3 2 2 3 - <_> - 8 - - 3 6 4 1 - <_> - 4 - - 3 10 3 3 - <_> - 7 - - 0 0 6 1 - <_> - 3 - - 1 1 3 11 - <_> - 2 - - 2 11 2 3 - <_> - 1 - - 0 13 2 2 - <_> - 2 - - 1 9 1 1 - <_> - 2 - - 4 3 2 11 - <_> - 5 - - 0 3 5 3 - <_> - 7 - - 1 13 4 2 - <_> - 0 - - 3 0 4 9 - <_> - 9 - - 0 3 5 1 - <_> - 7 - - 4 8 1 1 - <_> - 9 - - 2 4 2 1 - <_> - 9 - - 1 1 4 5 - <_> - 8 - - 3 3 1 1 - <_> - 1 - - 1 13 5 1 - <_> - 2 - - 2 7 3 1 - <_> - 1 - - 2 5 4 1 - <_> - 8 - - 2 14 4 1 - <_> - 1 - - 3 1 2 3 - <_> - 8 - - 2 0 1 4 - <_> - 4 - - 1 0 6 1 - <_> - 1 - - 1 3 2 10 - <_> - 4 - - 2 5 1 3 - <_> - 0 - - 4 3 3 7 - <_> - 7 - - 3 2 1 2 - <_> - 4 - - 2 0 4 3 - <_> - 1 - - 1 10 5 3 - <_> - 5 - - 1 14 6 1 - <_> - 7 - - 5 14 2 1 - <_> - 3 - - 3 11 2 3 - <_> - 3 - - 3 0 2 5 - <_> - 9 - - 3 2 1 11 - <_> - 8 - - 3 3 1 1 - <_> - 0 - - 3 4 2 1 - <_> - 8 - - 1 2 3 3 - <_> - 0 - - 6 14 1 1 - <_> - 4 - - 3 1 2 4 - <_> - 8 - - 4 2 1 2 - <_> - 0 - - 0 2 5 3 - <_> - 3 - - 1 0 2 6 - <_> - 0 - - 2 0 4 2 - <_> - 2 - - 1 3 2 12 - <_> - 2 - - 4 4 2 2 - <_> - 2 - - 5 4 1 1 - <_> - 3 - - 3 8 2 2 - <_> - 0 - - 2 9 5 2 - <_> - 1 - - 3 6 2 8 - <_> - 9 - - 4 9 1 5 - <_> - 7 - - 3 12 1 2 - <_> - 4 - - 0 5 6 6 - <_> - 4 - - 3 1 2 10 - <_> - 2 - - 3 5 1 2 - <_> - 5 - - 1 11 6 3 - <_> - 8 - - 3 3 3 1 - <_> - 1 - - 1 3 6 2 - <_> - 3 - - 0 14 4 1 - <_> - 5 - - 3 2 2 2 - <_> - 2 - - 4 2 2 3 - <_> - 5 - - 1 0 2 1 - <_> - 7 - - 3 6 2 1 - <_> - 4 - - 2 5 4 7 - <_> - 0 - - 0 2 5 3 - <_> - 0 - - 2 12 4 2 - <_> - 4 - - 1 14 6 1 - <_> - 0 - - 1 14 5 1 - <_> - 4 - - 1 1 3 5 - <_> - 4 - - 3 2 1 11 - <_> - 1 - - 3 2 2 5 - <_> - 2 - - 5 10 2 2 - <_> - 2 - - 2 6 1 6 - <_> - 9 - - 5 5 1 2 - <_> - 1 - - 3 3 3 1 - <_> - 4 - - 2 1 3 2 - <_> - 9 - - 0 0 7 1 - <_> - 1 - - 1 1 2 1 - <_> - 0 - - 3 11 3 2 - <_> - 8 - - 6 9 1 2 - <_> - 8 - - 3 3 2 1 - <_> - 0 - - 1 0 6 2 - <_> - 5 - - 4 4 1 10 - <_> - 4 - - 3 11 2 2 - <_> - 4 - - 2 11 3 3 - <_> - 2 - - 0 9 1 5 - <_> - 1 - - 3 14 2 1 - <_> - 4 - - 2 9 4 5 - <_> - 1 - - 6 8 1 4 - <_> - 4 - - 5 5 2 1 - <_> - 5 - - 1 3 6 4 - <_> - 2 - - 1 1 2 3 - <_> - 0 - - 4 4 1 1 - <_> - 0 - - 4 6 2 8 - <_> - 1 - - 3 4 4 1 - <_> - 1 - - 4 0 3 1 - <_> - 4 - - 4 0 3 11 - <_> - 8 - - 3 3 1 2 - <_> - 9 - - 4 4 1 4 - <_> - 9 - - 5 6 1 6 - <_> - 0 - - 0 14 3 1 - <_> - 2 - - 2 10 3 4 - <_> - 1 - - 1 8 6 3 - <_> - 9 - - 2 10 1 1 - <_> - 1 - - 5 1 2 3 - <_> - 5 - - 4 14 3 1 - <_> - 5 - - 3 1 4 4 - <_> - 1 - - 3 5 1 9 - <_> - 8 - - 3 3 2 1 - <_> - 7 - - 0 8 6 7 - <_> - 8 - - 2 0 3 1 - <_> - 7 - - 0 0 7 11 - <_> - 2 - - 4 8 2 1 - <_> - 0 - - 2 3 4 7 - <_> - 1 - - 3 6 2 1 - <_> - 5 - - 3 14 4 1 - <_> - 7 - - 5 14 2 1 - <_> - 3 - - 5 1 2 8 - <_> - 9 - - 2 0 3 4 - <_> - 9 - - 4 6 1 4 - <_> - 0 - - 3 2 1 6 - <_> - 8 - - 3 7 2 2 - <_> - 4 - - 0 14 4 1 - <_> - 2 - - 2 11 4 3 - <_> - 2 - - 2 3 4 11 - <_> - 4 - - 1 0 6 14 - <_> - 1 - - 2 2 3 2 - <_> - 1 - - 5 5 1 4 - <_> - 5 - - 3 14 4 1 - <_> - 1 - - 3 10 1 3 - <_> - 0 - - 2 10 3 4 - <_> - 9 - - 3 1 2 11 - <_> - 9 - - 5 6 1 2 - <_> - 9 - - 0 0 7 6 - <_> - 0 - - 2 10 4 3 - <_> - 9 - - 1 2 1 2 - <_> - 3 - - 5 10 1 5 - <_> - 2 - - 2 2 3 13 - <_> - 0 - - 2 4 1 1 - <_> - 2 - - 2 5 3 1 - <_> - 1 - - 1 13 5 1 - <_> - 2 - - 1 5 5 3 - <_> - 9 - - 3 6 1 2 - <_> - 2 - - 2 14 1 1 - <_> - 3 - - 3 3 3 3 - <_> - 7 - - 4 5 1 1 - <_> - 4 - - 4 9 1 3 - <_> - 0 - - 2 5 3 4 - <_> - 4 - - 0 10 7 2 - <_> - 8 - - 3 3 2 1 - <_> - 2 - - 1 1 4 2 - <_> - 8 - - 3 13 2 2 - <_> - 3 - - 2 1 3 12 - <_> - 7 - - 6 1 1 4 - <_> - 5 - - 4 0 1 3 - <_> - 0 - - 1 0 1 1 - <_> - 1 - - 3 5 1 1 - <_> - 3 - - 1 0 2 1 - <_> - 4 - - 3 0 1 15 - <_> - 2 - - 0 14 7 1 - <_> - 4 - - 2 2 1 13 - <_> - 5 - - 0 10 7 4 - <_> - 2 - - 3 10 1 5 - <_> - 5 - - 2 8 2 1 - <_> - 3 - - 2 2 2 3 - <_> - 2 - - 2 12 1 2 - <_> - 1 - - 1 5 1 9 - <_> - 3 - - 0 14 6 1 - <_> - 2 - - 3 4 1 1 - <_> - 0 - - 1 4 2 4 - <_> - 1 - - 3 10 2 1 - <_> - 4 - - 2 7 2 5 - <_> - 1 - - 0 10 1 4 - <_> - 8 - - 5 10 1 1 - <_> - 8 - - 5 4 2 10 - <_> - 1 - - 2 14 4 1 - <_> - 4 - - 3 0 2 15 - <_> - 7 - - 2 13 4 2 - <_> - 9 - - 2 7 3 2 - <_> - 4 - - 3 9 3 2 - <_> - 0 - - 4 7 2 5 - <_> - 1 - - 5 8 2 3 - <_> - 1 - - 3 2 3 12 - <_> - 0 - - 3 5 2 3 - <_> - 2 - - 4 0 2 14 - <_> - 5 - - 1 14 4 1 - <_> - 4 - - 5 6 2 9 - <_> - 0 - - 2 4 1 1 - <_> - 5 - - 5 4 1 5 - <_> - 0 - - 4 13 3 1 - <_> - 5 - - 1 3 4 2 - <_> - 8 - - 3 3 2 1 - <_> - 9 - - 2 4 3 2 - <_> - 8 - - 3 1 2 1 - <_> - 7 - - 3 3 1 3 - <_> - 4 - - 5 6 1 3 - <_> - 0 - - 2 3 3 10 - <_> - 8 - - 2 5 2 1 - <_> - 9 - - 2 3 3 2 - <_> - 3 - - 0 9 6 5 - <_> - 0 - - 1 14 6 1 - <_> - 4 - - 1 14 6 1 - <_> - 9 - - 0 1 2 1 - <_> - 3 - - 1 0 3 7 - <_> - 7 - - 1 0 4 1 - <_> - 9 - - 4 8 1 1 - <_> - 9 - - 3 1 3 3 - <_> - 3 - - 0 1 4 1 - <_> - 9 - - 4 5 1 1 - <_> - 4 - - 0 1 5 2 - <_> - 1 - - 3 2 2 3 - <_> - 1 - - 3 0 2 3 - <_> - 4 - - 1 5 6 6 - <_> - 5 - - 3 0 2 5 - <_> - 8 - - 2 6 3 1 - <_> - 5 - - 0 10 2 1 - <_> - 2 - - 3 10 2 4 - <_> - 3 - - 2 4 1 9 - <_> - 0 - - 4 4 2 2 - <_> - 0 - - 2 8 4 6 - <_> - 0 - - 1 0 1 1 - <_> - 5 - - 2 14 5 1 - <_> - 1 - - 1 10 5 1 - <_> - 9 - - 3 9 2 4 - <_> - 8 - - 3 3 3 1 - <_> - 8 - - 5 7 2 3 - <_> - 8 - - 0 14 4 1 - <_> - 5 - - 4 3 3 4 - <_> - 2 - - 4 4 3 1 - <_> - 8 - - 3 3 2 11 - <_> - 0 - - 4 9 1 3 - <_> - 9 - - 4 4 2 1 - <_> - 3 - - 4 9 3 1 - <_> - 4 - - 0 5 1 10 - <_> - 1 - - 0 3 2 11 - <_> - 5 - - 4 10 2 4 - <_> - 5 - - 4 7 1 1 - <_> - 2 - - 2 9 3 5 - <_> - 9 - - 5 0 1 8 - <_> - 0 - - 4 3 2 1 - <_> - 1 - - 4 5 2 1 - <_> - 0 - - 1 1 6 2 - <_> - 7 - - 0 8 5 3 - <_> - 1 - - 1 13 5 1 - <_> - 4 - - 6 3 1 6 - <_> - 9 - - 4 5 1 4 - <_> - 9 - - 6 5 1 4 - <_> - 0 - - 0 11 2 1 - <_> - 2 - - 3 3 3 3 - <_> - 5 - - 3 2 2 2 - <_> - 3 - - 0 7 6 8 - <_> - 2 - - 3 5 2 1 - <_> - 9 - - 3 3 3 1 - <_> - 0 - - 4 0 2 1 - <_> - 5 - - 5 1 1 8 - <_> - 8 - - 3 3 1 1 - <_> - 3 - - 2 3 1 9 - <_> - 2 - - 2 0 4 2 - <_> - 2 - - 4 1 3 5 - <_> - 1 - - 0 4 7 1 - <_> - 0 - - 3 5 1 4 - <_> - 0 - - 3 13 4 1 - <_> - 2 - - 2 9 1 6 - <_> - 3 - - 1 14 4 1 - <_> - 2 - - 0 13 4 1 - <_> - 0 - - 3 8 2 5 - <_> - 4 - - 0 10 7 1 - <_> - 1 - - 1 1 5 5 - <_> - 3 - - 2 11 3 3 - <_> - 5 - - 4 14 3 1 - <_> - 5 - - 4 6 2 7 - <_> - 2 - - 6 10 1 2 - <_> - 9 - - 3 9 1 2 - <_> - 9 - - 4 1 1 3 - <_> - 9 - - 3 4 1 5 - <_> - 4 - - 1 0 6 14 - <_> - 8 - - 4 3 1 1 - <_> - 8 - - 3 10 2 2 - <_> - 8 - - 1 0 5 1 - <_> - 8 - - 3 2 2 2 - <_> - 3 - - 1 2 4 2 - <_> - 2 - - 0 14 7 1 - <_> - 0 - - 3 13 3 2 - <_> - 5 - - 4 2 1 1 - <_> - 7 - - 2 14 1 1 - <_> - 4 - - 1 3 4 12 - <_> - 1 - - 4 5 1 9 - <_> - 0 - - 2 4 2 1 - <_> - 2 - - 1 0 4 14 - <_> - 0 - - 3 4 3 5 - <_> - 7 - - 2 4 2 5 - <_> - 8 - - 0 2 5 1 - <_> - 4 - - 3 2 2 9 - <_> - 3 - - 2 14 2 1 - <_> - 1 - - 6 0 1 15 - <_> - 3 - - 4 14 3 1 - <_> - 1 - - 3 5 1 2 - <_> - 4 - - 2 4 2 3 - <_> - 2 - - 5 4 2 7 - <_> - 4 - - 0 3 7 4 - <_> - 3 - - 2 3 4 6 - <_> - 9 - - 4 4 1 6 - <_> - 0 - - 3 10 4 2 - <_> - 4 - - 0 11 5 1 - <_> - 5 - - 0 14 2 1 - <_> - 2 - - 1 14 5 1 - <_> - 3 - - 3 12 1 2 - <_> - 4 - - 1 5 1 9 - <_> - 5 - - 2 9 1 4 - <_> - 5 - - 4 5 3 9 - <_> - 0 - - 2 4 2 8 - <_> - 0 - - 3 4 4 5 - <_> - 9 - - 5 14 2 1 - <_> - 2 - - 2 3 2 1 - <_> - 1 - - 1 13 4 1 - <_> - 3 - - 1 1 3 2 - <_> - 1 - - 4 10 2 1 - <_> - 0 - - 4 4 3 1 - <_> - 8 - - 4 0 1 8 - <_> - 3 - - 2 5 1 3 - <_> - 3 - - 0 8 2 3 - <_> - 0 - - 1 6 5 3 - <_> - 9 - - 1 9 1 1 - <_> - 5 - - 3 12 2 2 - <_> - 0 - - 1 0 1 2 - <_> - 5 - - 1 12 4 3 - <_> - 1 - - 6 1 1 14 - <_> - 8 - - 0 0 2 5 - <_> - 3 - - 0 10 7 4 - <_> - 7 - - 3 6 1 1 - <_> - 1 - - 3 4 2 1 - <_> - 0 - - 1 3 3 5 - <_> - 4 - - 3 0 3 15 - <_> - 1 - - 4 3 3 5 - <_> - 4 - - 6 4 1 1 - <_> - 5 - - 4 2 1 1 - <_> - 1 - - 3 1 2 3 - <_> - 3 - - 3 0 4 1 - <_> - 8 - - 3 5 2 2 - <_> - 0 - - 3 5 2 4 - <_> - 8 - - 2 8 4 7 - <_> - 5 - - 4 5 2 8 - <_> - 1 - - 3 3 3 10 - <_> - 3 - - 3 1 3 3 - <_> - 9 - - 3 4 1 2 - <_> - 9 - - 1 3 3 1 - <_> - 4 - - 2 5 3 5 - <_> - 5 - - 2 14 4 1 - <_> - 5 - - 3 12 1 2 - <_> - 0 - - 5 11 1 2 - <_> - 1 - - 3 13 2 2 - <_> - 4 - - 3 9 4 2 - <_> - 1 - - 3 0 4 1 - <_> - 1 - - 2 4 5 5 - <_> - 0 - - 2 4 1 7 - <_> - 9 - - 3 10 3 3 - <_> - 4 - - 0 5 7 9 - <_> - 0 - - 4 3 2 11 - <_> - 1 - - 3 4 1 4 - <_> - 3 - - 5 10 2 3 - <_> - 4 - - 3 0 4 1 - <_> - 0 - - 5 11 1 4 - <_> - 0 - - 2 2 5 2 - <_> - 2 - - 3 5 2 3 - <_> - 8 - - 3 3 2 1 - <_> - 9 - - 4 2 1 11 - <_> - 2 - - 2 9 2 5 - <_> - 8 - - 3 8 1 1 - <_> - 0 - - 2 0 3 3 - <_> - 5 - - 5 11 1 3 - <_> - 2 - - 0 6 5 2 - <_> - 5 - - 0 2 3 8 - <_> - 1 - - 4 12 1 2 - <_> - 4 - - 0 14 2 1 - <_> - 2 - - 4 4 2 1 - <_> - 8 - - 3 0 2 2 - <_> - 2 - - 0 2 7 7 - <_> - 7 - - 3 6 2 2 - <_> - 7 - - 0 0 4 6 - <_> - 4 - - 1 6 4 8 - <_> - 4 - - 3 11 2 2 - <_> - 3 - - 2 1 1 2 - <_> - 7 - - 2 14 4 1 - <_> - 8 - - 2 3 4 1 - <_> - 2 - - 1 0 6 2 - <_> - 8 - - 2 9 3 3 - <_> - 4 - - 4 3 2 4 - <_> - 5 - - 4 14 3 1 - <_> - 2 - - 3 12 3 1 - <_> - 0 - - 3 10 3 4 - <_> - 3 - - 5 4 2 4 - <_> - 2 - - 1 7 3 4 - <_> - 4 - - 1 6 2 2 - <_> - 2 - - 0 14 7 1 - <_> - 0 - - 0 1 3 10 - <_> - 4 - - 4 2 1 5 - <_> - 5 - - 2 0 4 3 - <_> - 4 - - 4 9 1 2 - <_> - 2 - - 2 2 3 12 - <_> - 4 - - 2 0 1 9 - <_> - 2 - - 0 14 7 1 - <_> - 8 - - 3 3 2 1 - <_> - 1 - - 0 2 5 2 - <_> - 1 - - 3 5 2 1 - <_> - 9 - - 1 8 6 3 - <_> - 1 - - 0 6 4 7 - <_> - 8 - - 3 3 2 1 - <_> - 8 - - 4 0 3 3 - <_> - 9 - - 3 0 2 1 - <_> - 4 - - 3 3 2 11 - <_> - 9 - - 1 3 2 9 - <_> - 2 - - 2 12 2 2 - <_> - 0 - - 3 2 3 1 - <_> - 3 - - 1 14 4 1 - <_> - 3 - - 0 12 4 2 - <_> - 1 - - 2 0 2 10 - <_> - 5 - - 0 5 2 8 - <_> - 7 - - 1 1 1 4 - <_> - 3 - - 1 2 3 13 - <_> - 4 - - 2 1 2 11 - <_> - 5 - - 1 2 4 5 - <_> - 2 - - 3 4 2 1 - <_> - 7 - - 3 8 2 1 - <_> - 7 - - 0 0 3 4 - <_> - 2 - - 0 0 5 2 - <_> - 3 - - 3 0 4 6 - <_> - 7 - - 3 1 4 1 - <_> - 3 - - 3 7 1 1 - <_> - 7 - - 0 3 3 12 - <_> - 5 - - 3 7 2 2 - <_> - 5 - - 1 1 6 11 - <_> - 8 - - 3 5 1 3 - <_> - 2 - - 4 5 1 4 - <_> - 8 - - 6 8 1 2 - <_> - 2 - - 1 6 6 2 - <_> - 3 - - 0 12 1 1 - <_> - 4 - - 2 5 5 7 - <_> - 0 - - 1 4 2 2 - <_> - 8 - - 2 14 1 1 - <_> - 4 - - 1 3 4 5 - <_> - 4 - - 3 2 1 10 - <_> - 1 - - 2 4 5 1 - <_> - 4 - - 3 14 2 1 - <_> - 2 - - 0 11 1 2 - <_> - 0 - - 0 1 5 12 - <_> - 4 - - 3 6 2 2 - <_> - 1 - - 3 5 2 2 - <_> - 7 - - 3 4 2 8 - <_> - 1 - - 2 0 4 2 - <_> - 7 - - 0 0 1 11 - <_> - 1 - - 2 5 3 8 - <_> - 4 - - 4 1 2 5 - <_> - 9 - - 3 5 1 3 - <_> - 5 - - 2 7 5 4 - <_> - 9 - - 3 8 2 4 - <_> - 8 - - 3 3 2 1 - <_> - 0 - - 4 4 1 2 - <_> - 4 - - 3 3 4 12 - <_> - 1 - - 2 14 3 1 - <_> - 2 - - 2 11 3 1 - <_> - 5 - - 6 2 1 13 - <_> - 4 - - 0 5 4 9 - <_> - 1 - - 3 3 2 3 - <_> - 3 - - 0 0 6 2 - <_> - 8 - - 6 10 1 2 - <_> - 8 - - 3 3 2 1 - <_> - 2 - - 0 14 7 1 - <_> - 0 - - 3 9 2 5 - <_> - 9 - - 4 4 1 2 - <_> - 5 - - 3 14 4 1 - <_> - 5 - - 4 4 3 3 - <_> - 2 - - 5 4 2 2 - <_> - 4 - - 6 7 1 8 - <_> - 5 - - 4 0 2 15 - <_> - 3 - - 2 0 3 11 - <_> - 3 - - 2 0 2 12 - <_> - 5 - - 0 9 4 1 - <_> - 2 - - 2 6 3 7 - <_> - 8 - - 3 2 1 2 - <_> - 5 - - 3 1 4 1 - <_> - 2 - - 4 2 2 3 - <_> - 4 - - 6 3 1 2 - <_> - 2 - - 3 5 2 3 - <_> - 9 - - 3 3 2 2 - <_> - 9 - - 0 13 1 2 - <_> - 5 - - 1 5 2 5 - <_> - 0 - - 4 0 2 2 - <_> - 2 - - 2 3 2 9 - <_> - 5 - - 3 2 3 2 - <_> - 2 - - 4 2 2 1 - <_> - 4 - - 2 1 3 10 - <_> - 9 - - 2 3 5 4 - <_> - 4 - - 3 0 3 11 - <_> - 3 - - 2 4 1 1 - <_> - 3 - - 0 1 1 1 - <_> - 5 - - 5 3 1 5 - <_> - 3 - - 1 14 5 1 - <_> - 2 - - 1 13 3 1 - <_> - 1 - - 0 8 7 3 - <_> - 2 - - 1 14 6 1 - <_> - 1 - - 0 5 4 8 - <_> - 1 - - 1 10 6 1 - <_> - 0 - - 1 11 6 3 - <_> - 0 - - 1 10 1 5 - <_> - 3 - - 4 3 2 9 - <_> - 4 - - 1 14 6 1 - <_> - 0 - - 0 0 4 5 - <_> - 1 - - 3 2 2 12 - <_> - 0 - - 0 14 6 1 - <_> - 5 - - 3 13 3 1 - <_> - 8 - - 3 3 2 1 - <_> - 9 - - 4 4 1 4 - <_> - 9 - - 0 1 7 12 - <_> - 2 - - 3 13 2 1 - <_> - 1 - - 2 13 4 2 - <_> - 5 - - 4 5 1 8 - <_> - 1 - - 3 10 1 3 - <_> - 5 - - 4 1 2 2 - <_> - 1 - - 3 2 2 2 - <_> - 5 - - 0 10 4 2 - <_> - 1 - - 4 0 3 1 - <_> - 8 - - 1 3 6 7 - <_> - 8 - - 3 3 1 1 - <_> - 9 - - 4 4 1 1 - <_> - 9 - - 2 0 2 4 - <_> - 9 - - 2 3 1 2 - <_> - 1 - - 4 5 2 1 - <_> - 0 - - 2 3 1 9 - <_> - 2 - - 5 2 2 8 - <_> - 4 - - 2 0 5 15 - <_> - 4 - - 3 1 3 2 - <_> - 0 - - 3 3 1 3 - <_> - 2 - - 0 14 7 1 - <_> - 2 - - 0 10 6 4 - <_> - 3 - - 1 0 6 1 - <_> - 5 - - 4 5 1 1 - <_> - 1 - - 3 5 4 5 - <_> - 5 - - 2 14 4 1 - <_> - 4 - - 1 13 6 1 - <_> - 1 - - 1 14 4 1 - <_> - 0 - - 4 13 3 1 - <_> - 4 - - 3 10 4 2 - <_> - 4 - - 2 4 2 6 - <_> - 3 - - 1 3 2 9 - <_> - 7 - - 0 0 2 10 - <_> - 3 - - 0 7 1 3 - <_> - 2 - - 4 10 1 3 - <_> - 8 - - 3 3 1 1 - <_> - 2 - - 2 1 5 2 - <_> - 8 - - 0 14 7 1 - <_> - 5 - - 4 1 3 6 - <_> - 2 - - 1 4 5 1 - <_> - 0 - - 1 0 1 1 - <_> - 9 - - 2 9 4 3 - <_> - 8 - - 4 1 2 10 - <_> - 5 - - 6 11 1 3 - <_> - 3 - - 3 1 1 4 - <_> - 8 - - 1 7 6 7 - <_> - 0 - - 3 4 1 5 - <_> - 0 - - 4 6 2 8 - <_> - 5 - - 1 13 1 2 - <_> - 1 - - 2 0 1 12 - <_> - 3 - - 0 14 4 1 - <_> - 3 - - 2 12 3 2 - <_> - 3 - - 3 7 2 1 - <_> - 1 - - 2 2 3 2 - <_> - 7 - - 3 8 2 4 - <_> - 4 - - 1 1 5 6 - <_> - 3 - - 1 5 6 6 - <_> - 7 - - 0 2 2 1 - <_> - 8 - - 2 8 1 3 - <_> - 8 - - 3 3 2 1 - <_> - 2 - - 2 1 4 1 - <_> - 8 - - 4 0 1 1 - <_> - 2 - - 0 13 2 1 - <_> - 4 - - 4 6 3 9 - <_> - 3 - - 2 3 1 9 - <_> - 1 - - 3 5 2 2 - <_> - 4 - - 4 4 1 3 - <_> - 9 - - 4 4 1 5 - <_> - 1 - - 2 14 4 1 - <_> - 0 - - 3 3 2 10 - <_> - 5 - - 1 5 6 2 - <_> - 8 - - 2 3 4 1 - <_> - 5 - - 5 8 1 3 - <_> - 0 - - 3 0 3 8 - <_> - 3 - - 5 11 1 2 - <_> - 1 - - 1 6 5 3 - <_> - 4 - - 2 6 1 2 - <_> - 2 - - 2 10 3 4 - <_> - 9 - - 6 3 1 1 - <_> - 4 - - 3 9 2 2 - <_> - 3 - - 3 2 1 2 - <_> - 1 - - 1 4 5 1 - <_> - 3 - - 1 0 4 2 - <_> - 7 - - 0 5 1 1 - <_> - 7 - - 5 13 2 1 - <_> - 5 - - 5 4 1 9 - <_> - 1 - - 3 10 2 3 - <_> - 2 - - 2 14 5 1 - <_> - 9 - - 4 10 2 1 - <_> - 0 - - 0 1 2 10 - <_> - 2 - - 2 6 1 1 - <_> - 2 - - 4 3 2 4 - <_> - 0 - - 3 5 2 1 - <_> - 0 - - 2 1 1 4 - <_> - 1 - - 2 6 2 5 - <_> - 4 - - 0 14 7 1 - <_> - 0 - - 4 10 2 4 - <_> - 0 - - 5 14 2 1 - <_> - 0 - - 3 4 1 11 - <_> - 7 - - 2 4 2 3 - <_> - 7 - - 0 14 5 1 - <_> - 4 - - 2 7 4 4 - <_> - 2 - - 1 8 3 3 - <_> - 8 - - 3 3 3 1 - <_> - 8 - - 1 1 5 1 - <_> - 7 - - 3 1 1 8 - <_> - 0 - - 6 7 1 5 - <_> - 1 - - 1 3 6 11 - <_> - 3 - - 3 2 2 1 - <_> - 4 - - 1 9 1 2 - <_> - 1 - - 3 14 2 1 - <_> - 9 - - 4 9 1 3 - <_> - 4 - - 2 3 5 2 - <_> - 5 - - 0 10 2 5 - <_> - 7 - - 2 13 1 2 - <_> - 2 - - 1 5 5 2 - <_> - 0 - - 2 3 4 9 - <_> - 7 - - 3 7 1 2 - <_> - 4 - - 2 3 2 3 - <_> - 3 - - 0 12 1 2 - <_> - 2 - - 1 6 5 4 - <_> - 1 - - 3 3 2 3 - <_> - 5 - - 4 7 1 2 - <_> - 0 - - 4 9 3 5 - <_> - 2 - - 2 8 1 1 - <_> - 4 - - 3 9 3 5 - <_> - 5 - - 3 10 2 2 - <_> - 1 - - 3 10 2 3 - <_> - 5 - - 0 14 6 1 - <_> - 4 - - 1 5 2 3 - <_> - 3 - - 3 7 1 1 - <_> - 3 - - 1 5 4 2 - <_> - 4 - - 0 2 5 6 - <_> - 1 - - 1 12 5 1 - <_> - 7 - - 6 11 1 4 - <_> - 2 - - 1 11 1 4 - <_> - 9 - - 3 7 1 2 - <_> - 1 - - 1 13 5 1 - <_> - 3 - - 5 4 2 1 - <_> - 8 - - 3 2 2 2 - <_> - 2 - - 2 9 3 5 - <_> - 5 - - 1 6 2 9 - <_> - 5 - - 2 9 2 2 - <_> - 5 - - 3 1 2 11 - <_> - 7 - - 2 9 2 3 - <_> - 5 - - 2 1 3 1 - <_> - 3 - - 2 14 2 1 - <_> - 4 - - 0 5 1 2 - <_> - 2 - - 5 4 1 1 - <_> - 1 - - 3 2 2 1 - <_> - 1 - - 0 14 1 1 - <_> - 4 - - 0 12 6 2 - <_> - 8 - - 3 11 3 2 - <_> - 8 - - 3 2 2 2 - <_> - 5 - - 4 2 1 1 - <_> - 0 - - 2 10 4 3 - <_> - 9 - - 6 3 1 1 - <_> - 2 - - 5 10 2 2 - <_> - 4 - - 3 1 3 5 - <_> - 1 - - 2 3 3 2 - <_> - 4 - - 2 3 4 9 - <_> - 1 - - 3 5 2 1 - <_> - 0 - - 3 5 2 3 - <_> - 4 - - 0 0 7 1 - <_> - 4 - - 3 7 2 2 - <_> - 5 - - 1 14 6 1 - <_> - 1 - - 3 6 2 4 - <_> - 3 - - 2 1 3 13 - <_> - 4 - - 1 3 3 10 - <_> - 7 - - 0 0 2 10 - <_> - 7 - - 2 14 4 1 - <_> - 0 - - 5 0 2 3 - <_> - 7 - - 4 13 2 2 - <_> - 5 - - 0 1 6 5 - <_> - 7 - - 0 2 5 2 - <_> - 3 - - 4 3 2 9 - <_> - 8 - - 4 3 1 1 - <_> - 9 - - 3 5 1 9 - <_> - 8 - - 5 3 2 1 - <_> - 3 - - 4 3 3 7 - <_> - 5 - - 0 3 4 10 - <_> - 2 - - 3 12 2 3 - <_> - 1 - - 1 6 3 8 - <_> - 3 - - 3 12 3 3 - <_> - 2 - - 1 14 2 1 - <_> - 2 - - 0 2 4 11 - <_> - 4 - - 2 11 3 2 - <_> - 2 - - 3 4 2 1 - <_> - 2 - - 4 3 2 2 - <_> - 0 - - 3 11 2 3 - <_> - 2 - - 0 2 7 5 - <_> - 4 - - 3 0 2 3 - <_> - 7 - - 0 0 7 2 - <_> - 5 - - 4 14 3 1 - <_> - 1 - - 3 10 2 3 - <_> - 4 - - 2 0 3 12 - <_> - 5 - - 5 10 1 5 - <_> - 2 - - 2 3 2 1 - <_> - 4 - - 2 5 4 3 - <_> - 9 - - 3 1 1 3 - <_> - 8 - - 3 5 2 1 - <_> - 9 - - 3 3 2 3 - <_> - 8 - - 3 13 2 2 - <_> - 9 - - 0 1 3 2 - <_> - 8 - - 3 11 2 2 - <_> - 9 - - 1 6 6 4 - <_> - 7 - - 2 13 2 2 - <_> - 2 - - 3 10 1 5 - <_> - 7 - - 3 9 2 1 - <_> - 0 - - 2 9 4 5 - <_> - 1 - - 3 7 2 1 - <_> - 3 - - 4 9 2 1 - <_> - 0 - - 1 13 1 2 - <_> - 0 - - 2 0 3 5 - <_> - 0 - - 0 0 3 3 - <_> - 0 - - 4 5 1 1 - <_> - 0 - - 4 3 2 11 - <_> - 3 - - 0 7 2 2 - <_> - 5 - - 5 14 1 1 - <_> - 4 - - 4 2 1 10 - <_> - 7 - - 3 9 2 2 - <_> - 2 - - 2 11 5 1 - <_> - 1 - - 0 2 4 8 - <_> - 1 - - 2 2 2 1 - <_> - 4 - - 0 10 7 5 - <_> - 4 - - 0 6 4 8 - <_> - 0 - - 2 13 5 1 - <_> - 9 - - 1 8 4 1 - <_> - 9 - - 1 2 6 3 - <_> - 7 - - 2 7 4 2 - <_> - 1 - - 3 5 2 2 - <_> - 3 - - 3 7 2 2 - <_> - 8 - - 0 8 2 6 - <_> - 8 - - 3 2 2 2 - <_> - 9 - - 1 4 4 2 - <_> - 8 - - 2 1 4 1 - <_> - 1 - - 2 14 3 1 - <_> - 0 - - 2 10 2 1 - <_> - 4 - - 0 14 2 1 - <_> - 4 - - 0 5 6 9 - <_> - 0 - - 2 3 1 5 - <_> - 1 - - 1 5 5 4 - <_> - 5 - - 5 6 1 9 - <_> - 9 - - 0 9 2 1 - <_> - 5 - - 2 14 5 1 - <_> - 2 - - 1 10 4 4 - <_> - 1 - - 1 10 4 3 - <_> - 9 - - 5 9 2 1 - <_> - 9 - - 3 1 2 2 - <_> - 4 - - 3 9 3 2 - <_> - 9 - - 3 4 1 2 - <_> - 4 - - 3 9 3 6 - <_> - 4 - - 3 1 2 9 - <_> - 4 - - 3 7 4 7 - <_> - 1 - - 4 0 2 2 - <_> - 2 - - 6 13 1 2 - <_> - 8 - - 3 3 1 2 - <_> - 1 - - 0 13 7 1 - <_> - 0 - - 4 9 1 4 - <_> - 1 - - 3 5 2 2 - <_> - 5 - - 4 2 2 2 - <_> - 2 - - 4 2 2 3 - <_> - 5 - - 1 0 1 1 - <_> - 7 - - 3 6 1 1 - <_> - 3 - - 0 5 5 4 - <_> - 1 - - 2 2 3 3 - <_> - 3 - - 0 14 7 1 - <_> - 3 - - 2 12 1 1 - <_> - 4 - - 1 9 6 3 - <_> - 9 - - 3 5 1 5 - <_> - 9 - - 1 4 2 11 - <_> - 9 - - 2 10 1 1 - <_> - 9 - - 5 14 2 1 - <_> - 8 - - 3 3 2 1 - <_> - 9 - - 3 2 3 9 - <_> - 8 - - 0 0 7 1 - <_> - 8 - - 3 3 2 1 - <_> - 1 - - 0 5 1 1 - <_> - 2 - - 0 14 6 1 - <_> - 2 - - 2 11 3 3 - <_> - 5 - - 0 6 1 2 - <_> - 4 - - 1 14 3 1 - <_> - 3 - - 1 5 6 2 - <_> - 4 - - 4 9 1 2 - <_> - 9 - - 4 4 2 8 - <_> - 1 - - 0 5 4 10 - <_> - 8 - - 2 6 5 8 - <_> - 8 - - 3 14 1 1 - <_> - 9 - - 0 0 1 2 - <_> - 8 - - 3 12 1 1 - <_> - 1 - - 2 12 2 1 - <_> - 5 - - 0 13 5 2 - <_> - 2 - - 3 11 3 3 - <_> - 2 - - 0 8 6 6 - <_> - 4 - - 3 8 3 2 - <_> - 0 - - 0 10 3 3 - <_> - 7 - - 0 0 1 13 - <_> - 7 - - 5 14 2 1 - <_> - 1 - - 0 8 3 6 - <_> - 1 - - 2 6 4 6 - <_> - 5 - - 1 0 5 2 - <_> - 4 - - 3 8 2 4 - <_> - 5 - - 1 1 5 5 - <_> - 8 - - 4 6 1 5 - <_> - 0 - - 5 3 2 12 - <_> - 0 - - 3 12 4 2 - <_> - 2 - - 4 5 1 7 - <_> - 5 - - 2 14 5 1 - <_> - 0 - - 3 1 2 3 - <_> - 2 - - 0 11 3 2 - <_> - 2 - - 3 1 2 1 - <_> - 0 - - 2 9 3 1 - <_> - 2 - - 2 8 2 6 - <_> - 8 - - 2 3 3 1 - <_> - 8 - - 5 9 1 2 - <_> - 3 - - 3 2 1 2 - <_> - 1 - - 0 0 5 5 - <_> - 5 - - 1 8 1 1 - <_> - 3 - - 6 12 1 2 - <_> - 5 - - 0 9 4 2 - <_> - 8 - - 3 3 2 1 - <_> - 9 - - 2 9 4 2 - <_> - 8 - - 3 2 2 4 - <_> - 0 - - 3 7 3 4 - <_> - 5 - - 2 4 1 7 - <_> - 0 - - 3 5 2 1 - <_> - 0 - - 3 3 3 1 - <_> - 2 - - 5 14 2 1 - <_> - 3 - - 0 0 5 4 - <_> - 1 - - 1 6 1 9 - <_> - 0 - - 3 6 2 2 - <_> - 4 - - 1 0 6 15 - <_> - 2 - - 2 3 4 10 - <_> - 4 - - 1 1 1 9 - <_> - 2 - - 3 7 2 1 - <_> - 4 - - 2 1 5 4 - <_> - 1 - - 3 2 2 2 - <_> - 4 - - 3 10 3 2 - <_> - 4 - - 2 5 4 3 - <_> - 2 - - 2 2 1 12 - <_> - 5 - - 2 4 3 4 - <_> - 3 - - 1 14 4 1 - <_> - 3 - - 1 12 4 2 - <_> - 8 - - 1 7 3 2 - <_> - 3 - - 2 2 3 1 - <_> - 1 - - 1 0 2 2 - <_> - 7 - - 4 4 2 7 - <_> - 2 - - 5 11 1 3 - <_> - 1 - - 1 2 3 9 - <_> - 3 - - 2 0 5 1 - <_> - 7 - - 2 14 1 1 - <_> - 8 - - 0 2 6 5 - <_> - 1 - - 3 2 2 13 - <_> - 1 - - 3 9 2 4 - <_> - 0 - - 1 1 2 8 - <_> - 9 - - 4 8 1 1 - <_> - 0 - - 3 7 2 1 - <_> - 3 - - 1 7 2 4 - <_> - 5 - - 5 4 1 5 - <_> - 1 - - 3 5 2 1 - <_> - 4 - - 3 4 2 4 - <_> - 7 - - 4 5 1 1 - <_> - 7 - - 3 4 1 1 - <_> - 7 - - 2 14 1 1 - <_> - 2 - - 3 2 4 3 - <_> - 2 - - 0 9 1 5 - <_> - 0 - - 4 1 1 2 - <_> - 0 - - 2 0 5 3 - <_> - 0 - - 2 3 4 11 - <_> - 4 - - 3 8 2 3 - <_> - 0 - - 1 11 6 1 - <_> - 4 - - 5 0 1 15 - <_> - 0 - - 4 4 1 1 - <_> - 2 - - 4 10 1 5 - <_> - 0 - - 3 13 4 1 - <_> - 5 - - 5 4 2 3 - <_> - 0 - - 4 14 2 1 - <_> - 2 - - 1 4 4 6 - <_> - 2 - - 3 8 2 6 - <_> - 2 - - 4 3 1 8 - <_> - 5 - - 2 12 1 1 - <_> - 0 - - 4 5 2 1 - <_> - 1 - - 2 2 3 6 - <_> - 8 - - 3 3 2 1 - <_> - 9 - - 3 3 1 11 - <_> - 8 - - 0 12 6 3 - <_> - 9 - - 1 1 1 14 - <_> - 0 - - 5 8 2 4 - <_> - 4 - - 4 0 2 14 - <_> - 4 - - 5 9 2 5 - <_> - 5 - - 1 0 1 1 - <_> - 7 - - 2 14 4 1 - <_> - 4 - - 3 10 2 3 - <_> - 5 - - 3 6 2 2 - <_> - 3 - - 3 2 1 2 - <_> - 8 - - 1 5 6 4 - <_> - 8 - - 2 6 5 1 - <_> - 8 - - 3 0 3 2 - <_> - 2 - - 4 8 2 1 - <_> - 5 - - 4 6 3 3 - <_> - 2 - - 2 14 3 1 - <_> - 0 - - 3 0 2 14 - <_> - 7 - - 6 6 1 1 - <_> - 5 - - 0 14 2 1 - <_> - 2 - - 3 1 2 1 - <_> - 1 - - 3 14 1 1 - <_> - 1 - - 2 3 3 1 - <_> - 9 - - 0 10 7 1 - <_> - 9 - - 1 1 6 2 - <_> - 0 - - 1 10 1 2 - <_> - 8 - - 3 3 2 1 - <_> - 9 - - 4 4 1 1 - <_> - 8 - - 5 3 1 2 - <_> - 4 - - 2 5 5 7 - <_> - 5 - - 4 6 2 7 - <_> - 1 - - 1 5 4 5 - <_> - 2 - - 2 2 4 11 - <_> - 4 - - 1 10 6 2 - <_> - 4 - - 2 3 4 8 - <_> - 2 - - 3 5 1 1 - <_> - 3 - - 1 5 4 2 - <_> - 8 - - 2 5 2 2 - <_> - 8 - - 1 13 4 2 - <_> - 2 - - 2 13 3 1 - <_> - 1 - - 0 7 6 1 - <_> - 5 - - 0 14 7 1 - <_> - 5 - - 1 12 6 2 - <_> - 3 - - 2 1 3 4 - <_> - 1 - - 3 5 3 1 - <_> - 8 - - 3 2 3 2 - <_> - 2 - - 1 0 1 13 - <_> - 1 - - 6 2 1 12 - <_> - 4 - - 0 1 3 1 - <_> - 7 - - 4 14 3 1 - <_> - 0 - - 3 4 1 4 - <_> - 2 - - 0 3 3 7 - <_> - 0 - - 3 1 3 1 - <_> - 0 - - 4 9 2 2 - <_> - 4 - - 3 10 1 3 - <_> - 2 - - 3 9 2 4 - <_> - 5 - - 1 13 6 2 - <_> - 0 - - 3 0 2 5 - <_> - 5 - - 0 4 3 4 - <_> - 8 - - 5 10 1 1 - <_> - 8 - - 3 0 4 15 - <_> - 8 - - 4 3 1 1 - <_> - 9 - - 3 3 2 4 - <_> - 0 - - 4 5 1 1 - <_> - 1 - - 0 4 7 1 - <_> - 2 - - 3 0 4 5 - <_> - 5 - - 4 3 1 2 - <_> - 9 - - 1 14 3 1 - <_> - 7 - - 0 1 1 9 - <_> - 0 - - 2 10 5 4 - <_> - 2 - - 3 9 3 1 - <_> - 3 - - 5 11 1 1 - <_> - 4 - - 1 13 6 1 - <_> - 4 - - 0 1 7 1 - <_> - 4 - - 4 3 3 12 - <_> - 0 - - 2 4 2 1 - <_> - 2 - - 4 10 1 4 - <_> - 3 - - 3 7 1 1 - <_> - 3 - - 1 9 3 4 - <_> - 4 - - 3 1 4 4 - <_> - 9 - - 4 9 1 1 - <_> - 9 - - 3 3 3 1 - <_> - 2 - - 0 1 5 1 - <_> - 8 - - 3 3 2 1 - <_> - 3 - - 4 8 1 1 - <_> - 8 - - 4 4 1 1 - <_> - 1 - - 3 14 2 1 - <_> - 1 - - 0 5 1 10 - <_> - 4 - - 4 2 1 4 - <_> - 4 - - 3 3 3 3 - <_> - 5 - - 4 14 3 1 - <_> - 7 - - 2 14 4 1 - <_> - 5 - - 0 3 3 5 - <_> - 4 - - 2 4 5 1 - <_> - 9 - - 3 11 2 3 - <_> - 2 - - 2 11 3 2 - <_> - 1 - - 1 7 1 1 - <_> - 0 - - 0 10 1 5 - <_> - 4 - - 0 5 5 10 - <_> - 1 - - 0 6 4 8 - <_> - 1 - - 1 3 2 7 - <_> - 0 - - 1 10 5 4 - <_> - 3 - - 5 2 2 6 - <_> - 3 - - 2 0 4 1 - <_> - 5 - - 5 2 1 4 - <_> - 4 - - 6 8 1 4 - <_> - 3 - - 3 2 1 2 - <_> - 3 - - 0 14 7 1 - <_> - 0 - - 0 0 6 2 - <_> - 1 - - 3 0 2 11 - <_> - 1 - - 2 6 1 1 - <_> - 2 - - 0 1 6 12 - <_> - 0 - - 1 6 3 2 - <_> - 2 - - 2 4 3 3 - <_> - 9 - - 1 3 5 2 - <_> - 4 - - 3 2 2 8 - <_> - 8 - - 4 3 1 1 - <_> - 4 - - 2 10 3 1 - <_> - 4 - - 2 4 4 11 - <_> - 3 - - 2 2 3 12 - <_> - 7 - - 4 2 2 7 - <_> - 1 - - 2 3 2 12 - <_> - 1 - - 4 0 2 2 - <_> - 5 - - 1 5 6 5 - <_> - 5 - - 1 8 1 1 - <_> - 5 - - 4 7 1 1 - <_> - 9 - - 4 6 1 2 - <_> - 1 - - 4 0 1 1 - <_> - 0 - - 5 14 2 1 - <_> - 0 - - 4 13 3 2 - <_> - 5 - - 4 2 1 13 - <_> - 1 - - 3 2 2 3 - <_> - 3 - - 1 4 2 2 - <_> - 4 - - 3 3 2 1 - <_> - 0 - - 2 5 2 4 - <_> - 2 - - 1 5 2 7 - <_> - 2 - - 5 4 1 1 - <_> - 2 - - 0 14 6 1 - <_> - 7 - - 5 13 2 1 - <_> - 7 - - 3 7 3 2 - <_> - 1 - - 3 10 2 3 - <_> - 1 - - 2 7 3 8 - <_> - 2 - - 1 13 3 1 - <_> - 7 - - 2 6 4 6 - <_> - 3 - - 3 1 4 7 - <_> - 0 - - 2 10 3 2 - <_> - 1 - - 3 5 2 2 - <_> - 3 - - 4 7 1 1 - <_> - 7 - - 2 5 3 10 - <_> - 2 - - 4 2 1 3 - <_> - 2 - - 1 2 3 2 - <_> - 5 - - 3 0 4 2 - <_> - 4 - - 2 10 4 5 - <_> - 7 - - 4 9 2 3 - <_> - 0 - - 2 3 2 10 - <_> - 9 - - 3 4 1 7 - <_> - 8 - - 2 0 4 13 - <_> - 4 - - 2 2 4 2 - <_> - 8 - - 3 3 2 1 - <_> - 8 - - 3 12 2 1 - <_> - 3 - - 0 13 2 2 - <_> - 0 - - 3 10 4 4 - <_> - 3 - - 2 4 1 1 - <_> - 4 - - 2 0 4 15 - <_> - 5 - - 4 14 3 1 - <_> - 5 - - 4 9 3 4 - <_> - 2 - - 1 5 3 7 - <_> - 2 - - 5 10 2 2 - <_> - 4 - - 4 1 2 4 - <_> - 1 - - 0 3 5 2 - <_> - 8 - - 3 3 1 4 - <_> - 9 - - 3 4 2 2 - <_> - 8 - - 2 1 1 12 - <_> - 4 - - 1 5 5 7 - <_> - 8 - - 4 3 1 1 - <_> - 1 - - 1 6 6 6 - <_> - 0 - - 3 5 2 1 - <_> - 0 - - 4 3 2 11 - <_> - 2 - - 3 9 2 4 - <_> - 3 - - 1 0 5 1 - <_> - 4 - - 5 11 2 3 - <_> - 3 - - 1 0 3 10 - <_> - 2 - - 3 4 2 6 - <_> - 0 - - 1 14 6 1 - <_> - 0 - - 1 4 2 3 - <_> - 5 - - 1 2 4 2 - <_> - 1 - - 0 7 2 8 - <_> - 4 - - 4 1 2 10 - <_> - 4 - - 1 14 3 1 - <_> - 1 - - 2 6 4 3 - <_> - 8 - - 2 12 3 1 - <_> - 8 - - 4 2 1 2 - <_> - 3 - - 4 8 1 3 - <_> - 8 - - 3 4 2 1 - <_> - 2 - - 2 10 3 4 - <_> - 0 - - 2 3 2 9 - <_> - 5 - - 0 10 4 1 - <_> - 1 - - 3 0 1 15 - <_> - 7 - - 5 4 1 1 - <_> - 0 - - 0 6 4 2 - <_> - 2 - - 3 5 1 3 - <_> - 7 - - 3 3 4 1 - <_> - 8 - - 3 3 1 3 - <_> - 5 - - 4 1 2 12 - <_> - 2 - - 4 2 2 3 - <_> - 2 - - 3 1 4 1 - <_> - 8 - - 0 13 4 2 - <_> - 4 - - 4 9 1 3 - <_> - 8 - - 0 14 1 1 - <_> - 0 - - 3 12 4 2 - <_> - 9 - - 6 14 1 1 - <_> - 3 - - 0 14 6 1 - <_> - 2 - - 2 11 1 3 - <_> - 5 - - 4 2 1 2 - <_> - 9 - - 6 3 1 9 - <_> - 1 - - 1 13 5 1 - <_> - 2 - - 0 4 7 5 - <_> - 4 - - 0 0 7 14 - <_> - 2 - - 2 14 5 1 - <_> - 1 - - 3 10 1 3 - <_> - 4 - - 3 7 1 3 - <_> - 4 - - 2 3 4 8 - <_> - 7 - - 3 12 1 1 - <_> - 4 - - 0 12 1 3 - <_> - 3 - - 1 12 4 2 - <_> - 7 - - 0 5 1 1 - <_> - 5 - - 0 12 3 3 - <_> - 1 - - 0 9 3 5 - <_> - 2 - - 3 10 2 1 - <_> - 2 - - 1 8 4 6 - <_> - 5 - - 2 14 5 1 - <_> - 4 - - 0 5 1 3 - <_> - 2 - - 6 0 1 12 - <_> - 2 - - 1 0 2 12 - <_> - 3 - - 3 2 2 2 - <_> - 5 - - 4 10 2 1 - <_> - 0 - - 3 3 3 5 - <_> - 0 - - 3 7 3 7 - <_> - 4 - - 3 6 2 1 - <_> - 8 - - 3 3 1 1 - <_> - 4 - - 3 10 2 2 - <_> - 8 - - 2 1 2 1 - <_> - 1 - - 0 1 5 3 - <_> - 4 - - 4 2 3 1 - <_> - 1 - - 2 1 1 3 - <_> - 1 - - 3 2 3 1 - <_> - 5 - - 4 8 1 1 - <_> - 4 - - 0 7 7 1 - <_> - 0 - - 3 7 3 6 - <_> - 1 - - 5 0 2 6 - <_> - 2 - - 3 0 4 5 - <_> - 1 - - 4 13 2 1 - <_> - 7 - - 3 6 2 1 - <_> - 8 - - 1 0 1 1 - <_> - 4 - - 2 3 5 8 - <_> - 5 - - 5 2 1 9 - <_> - 1 - - 3 6 3 2 - <_> - 4 - - 1 1 6 1 - <_> - 0 - - 4 5 2 2 - <_> - 0 - - 2 4 1 1 - <_> - 3 - - 5 14 2 1 - <_> - 7 - - 6 13 1 1 - <_> - 2 - - 2 14 2 1 - <_> - 8 - - 4 3 1 1 - <_> - 9 - - 2 5 2 8 - <_> - 8 - - 6 8 1 2 - <_> - 2 - - 1 10 4 4 - <_> - 0 - - 4 4 2 1 - <_> - 4 - - 0 6 7 9 - <_> - 3 - - 2 2 4 7 - <_> - 7 - - 4 1 1 2 - <_> - 2 - - 4 7 1 3 - <_> - 8 - - 2 3 4 1 - <_> - 1 - - 5 7 2 4 - <_> - 8 - - 2 2 1 2 - <_> - 2 - - 3 3 1 1 - <_> - 1 - - 3 5 2 2 - <_> - 5 - - 2 6 5 2 - <_> - 1 - - 3 0 1 8 - <_> - 3 - - 1 14 5 1 - <_> - 0 - - 1 1 4 13 - <_> - 3 - - 1 0 3 2 - <_> - 0 - - 3 10 3 4 - <_> - 0 - - 4 11 3 1 - <_> - 1 - - 3 9 2 4 - <_> - 2 - - 4 14 1 1 - <_> - 3 - - 0 2 5 1 - <_> - 7 - - 1 12 2 3 - <_> - 9 - - 2 1 1 3 - <_> - 7 - - 3 4 1 2 - <_> - 9 - - 3 9 1 4 - <_> - 9 - - 2 12 4 2 - <_> - 1 - - 2 2 3 2 - <_> - 3 - - 0 14 4 1 - <_> - 4 - - 2 5 5 6 - <_> - 0 - - 1 10 1 1 - <_> - 2 - - 2 8 2 6 - <_> - 5 - - 2 4 1 4 - <_> - 8 - - 3 2 1 2 - <_> - 4 - - 2 10 5 1 - <_> - 7 - - 6 0 1 3 - <_> - 9 - - 2 4 2 1 - <_> - 8 - - 1 3 4 1 - <_> - 1 - - 1 0 6 3 - <_> - 4 - - 3 2 3 1 - <_> - 3 - - 2 0 5 1 - <_> - 0 - - 3 0 2 5 - <_> - 8 - - 3 10 2 1 - <_> - 7 - - 5 13 1 2 - <_> - 2 - - 2 7 3 5 - <_> - 2 - - 3 4 1 10 - <_> - 2 - - 0 14 4 1 - <_> - 3 - - 2 11 3 2 - <_> - 7 - - 2 7 2 1 - <_> - 5 - - 5 0 1 15 - <_> - 4 - - 1 5 6 1 - <_> - 0 - - 4 0 2 1 - <_> - 4 - - 3 10 3 5 - <_> - 1 - - 3 3 2 3 - <_> - 9 - - 5 4 1 3 - <_> - 1 - - 2 14 3 1 - <_> - 4 - - 1 2 1 13 - <_> - 8 - - 2 2 3 2 - <_> - 0 - - 3 9 2 5 - <_> - 5 - - 1 8 4 1 - <_> - 3 - - 4 4 2 7 - <_> - 3 - - 2 1 1 12 - <_> - 0 - - 1 4 3 8 - <_> - 4 - - 4 9 1 2 - <_> - 4 - - 2 3 4 8 - <_> - 7 - - 3 9 2 4 - <_> - 2 - - 1 5 4 1 - <_> - 4 - - 2 5 5 7 - <_> - 3 - - 4 0 1 6 - <_> - 2 - - 5 4 1 6 - <_> - 8 - - 2 14 3 1 - <_> - 8 - - 2 11 3 3 - <_> - 0 - - 6 7 1 4 - <_> - 2 - - 2 1 5 1 - <_> - 5 - - 3 2 4 3 - <_> - 3 - - 3 2 1 1 - <_> - 5 - - 0 13 1 2 - <_> - 7 - - 0 8 5 1 - <_> - 5 - - 4 2 2 11 - <_> - 8 - - 3 3 2 1 - <_> - 1 - - 0 3 7 1 - <_> - 8 - - 2 1 1 3 - <_> - 9 - - 1 0 6 2 - <_> - 0 - - 4 4 2 2 - <_> - 9 - - 4 5 1 1 - <_> - 0 - - 4 3 3 9 - <_> - 2 - - 5 4 1 4 - <_> - 5 - - 5 14 1 1 - <_> - 1 - - 4 5 1 2 - <_> - 9 - - 2 11 3 2 - <_> - 4 - - 0 0 7 1 - <_> - 1 - - 2 0 4 5 - <_> - 2 - - 5 9 1 6 - <_> - 4 - - 1 0 4 11 - <_> - 2 - - 2 2 3 12 - <_> - 5 - - 1 3 5 8 - <_> - 3 - - 1 14 4 1 - <_> - 8 - - 3 3 1 1 - <_> - 3 - - 0 12 4 1 - <_> - 8 - - 3 1 1 1 - <_> - 3 - - 6 10 1 2 - <_> - 0 - - 4 7 2 4 - <_> - 5 - - 3 2 2 2 - <_> - 9 - - 2 4 3 2 - <_> - 9 - - 2 2 3 2 - <_> - 9 - - 6 9 1 1 - <_> - 1 - - 1 13 5 1 - <_> - 5 - - 0 6 2 2 - <_> - 4 - - 3 11 2 2 - <_> - 9 - - 5 14 2 1 - <_> - 2 - - 3 5 1 2 - <_> - 5 - - 2 14 5 1 - <_> - 3 - - 1 5 4 2 - <_> - 4 - - 4 2 2 7 - <_> - 9 - - 4 9 1 1 - <_> - 0 - - 4 13 3 1 - <_> - 0 - - 3 3 2 2 - <_> - 1 - - 2 5 3 1 - <_> - 1 - - 4 0 1 15 - <_> - 5 - - 2 14 2 1 - <_> - 1 - - 3 8 3 5 - <_> - 0 - - 4 0 3 10 - <_> - 0 - - 3 10 3 3 - <_> - 8 - - 1 6 5 1 - <_> - 2 - - 5 13 1 2 - <_> - 8 - - 0 5 7 2 - <_> - 9 - - 3 5 3 1 - <_> - 5 - - 5 2 1 6 - <_> - 2 - - 4 4 2 1 - <_> - 0 - - 4 14 2 1 - <_> - 0 - - 3 1 2 1 - <_> - 3 - - 3 0 4 6 - <_> - 2 - - 4 4 1 1 - <_> - 2 - - 3 13 2 1 - <_> - 2 - - 2 10 5 1 - <_> - 5 - - 2 14 5 1 - <_> - 5 - - 1 1 2 9 - <_> - 3 - - 0 14 5 1 - <_> - 8 - - 6 10 1 1 - <_> - 8 - - 4 3 1 1 - <_> - 2 - - 3 1 3 1 - <_> - 8 - - 1 9 2 2 - <_> - 4 - - 0 5 7 9 - <_> - 3 - - 3 7 1 1 - <_> - 8 - - 0 7 6 4 - <_> - 2 - - 1 0 6 5 - <_> - 7 - - 6 7 1 3 - <_> - 1 - - 0 12 6 1 - <_> - 1 - - 2 12 4 3 - <_> - 2 - - 0 2 7 4 - <_> - 2 - - 3 10 2 4 - <_> - 2 - - 3 7 2 1 - <_> - 9 - - 3 3 1 10 - <_> - 8 - - 3 6 2 1 - <_> - 0 - - 3 0 2 1 - <_> - 0 - - 3 1 2 3 - <_> - 3 - - 1 6 2 2 - <_> - 4 - - 0 14 7 1 - <_> - 2 - - 1 9 4 5 - <_> - 1 - - 3 2 3 12 - <_> - 1 - - 3 4 2 8 - <_> - 0 - - 0 14 6 1 - <_> - 2 - - 0 8 1 7 - <_> - 5 - - 4 10 1 4 - <_> - 9 - - 4 4 1 2 - <_> - 7 - - 2 14 3 1 - <_> - 4 - - 3 10 4 1 - <_> - 4 - - 0 3 6 3 - <_> - 0 - - 4 9 2 1 - <_> - 4 - - 3 1 2 4 - <_> - 9 - - 0 0 5 12 - <_> - 1 - - 3 2 2 4 - <_> - 9 - - 1 9 1 1 - <_> - 7 - - 5 1 1 8 - <_> - 0 - - 1 10 1 4 - <_> - 1 - - 3 13 2 2 - <_> - 5 - - 0 13 6 1 - <_> - 7 - - 2 0 5 5 - <_> - 0 - - 3 5 2 1 - <_> - 3 - - 0 6 7 1 - <_> - 0 - - 4 3 2 1 - <_> - 4 - - 3 5 4 1 - <_> - 2 - - 6 10 1 2 - <_> - 8 - - 2 0 3 1 - <_> - 8 - - 3 3 1 1 - <_> - 9 - - 0 12 1 1 - <_> - 8 - - 1 3 6 1 - <_> - 2 - - 1 14 3 1 - <_> - 3 - - 1 12 4 2 - <_> - 0 - - 4 5 1 1 - <_> - 9 - - 4 7 1 1 - <_> - 7 - - 5 14 1 1 - <_> - 9 - - 5 9 2 1 - <_> - 4 - - 0 0 7 14 - <_> - 0 - - 2 4 1 2 - <_> - 0 - - 4 11 1 3 - <_> - 8 - - 4 6 3 4 - <_> - 3 - - 5 11 1 3 - <_> - 0 - - 3 8 4 1 - <_> - 0 - - 2 9 3 3 - <_> - 7 - - 2 3 4 5 - <_> - 4 - - 1 7 3 4 - <_> - 4 - - 2 4 3 1 - <_> - 9 - - 1 0 1 2 - <_> - 1 - - 3 5 1 1 - <_> - 1 - - 2 10 4 3 - <_> - 4 - - 4 2 1 8 - <_> - 3 - - 2 3 1 7 - <_> - 3 - - 2 0 2 3 - <_> - 1 - - 0 1 6 1 - <_> - 0 - - 5 11 1 1 - <_> - 1 - - 4 0 1 15 - <_> - 7 - - 3 6 2 1 - <_> - 2 - - 4 4 2 11 - <_> - 0 - - 0 9 1 3 - <_> - 1 - - 2 2 2 2 - <_> - 9 - - 4 4 1 5 - <_> - 0 - - 3 9 3 2 - <_> - 5 - - 2 0 3 2 - <_> - 8 - - 3 3 2 1 - <_> - 5 - - 2 14 4 1 - <_> - 8 - - 3 14 3 1 - <_> - 2 - - 0 9 2 5 - <_> - 1 - - 3 6 2 1 - <_> - 5 - - 4 9 2 4 - <_> - 1 - - 3 8 2 2 - <_> - 3 - - 2 7 2 5 - <_> - 4 - - 2 0 5 15 - <_> - 4 - - 3 2 2 1 - <_> - 3 - - 0 4 2 10 - <_> - 0 - - 3 2 1 12 - <_> - 0 - - 3 4 1 5 - <_> - 7 - - 2 3 4 9 - <_> - 7 - - 5 14 1 1 - <_> - 7 - - 0 0 7 13 - <_> - 1 - - 5 0 2 14 - <_> - 5 - - 2 12 1 2 - <_> - 0 - - 3 1 1 9 - <_> - 5 - - 2 4 1 8 - <_> - 2 - - 4 6 1 2 - <_> - 2 - - 2 0 3 15 - <_> - 5 - - 3 2 4 4 - <_> - 4 - - 2 10 4 1 - <_> - 5 - - 1 0 6 2 - <_> - 0 - - 4 7 2 4 - <_> - 1 - - 2 7 4 1 - <_> - 2 - - 2 14 1 1 - <_> - 2 - - 2 10 3 4 - <_> - 4 - - 0 11 5 1 - <_> - 3 - - 3 7 1 1 - <_> - 1 - - 1 7 3 8 - <_> - 5 - - 4 2 1 1 - <_> - 1 - - 2 11 3 2 - <_> - 3 - - 1 0 3 11 - <_> - 7 - - 3 1 1 1 - <_> - 4 - - 2 0 3 7 - <_> - 3 - - 5 12 1 1 - <_> - 2 - - 2 5 2 2 - <_> - 4 - - 0 8 6 1 - <_> - 4 - - 1 5 6 6 - <_> - 2 - - 3 2 3 2 - <_> - 2 - - 5 8 2 5 - <_> - 5 - - 6 13 1 2 - <_> - 2 - - 2 11 4 3 - <_> - 3 - - 2 4 1 1 - <_> - 3 - - 0 7 6 6 - <_> - 8 - - 3 3 2 1 - <_> - 7 - - 5 1 2 6 - <_> - 9 - - 3 8 2 3 - <_> - 5 - - 4 9 3 4 - <_> - 9 - - 3 7 2 1 - <_> - 2 - - 5 8 2 5 - <_> - 3 - - 2 6 5 4 - <_> - 4 - - 5 14 2 1 - <_> - 0 - - 3 12 4 2 - <_> - 2 - - 0 6 2 9 - <_> - 5 - - 0 14 6 1 - <_> - 5 - - 5 4 2 11 - <_> - 2 - - 5 4 1 5 - <_> - 3 - - 3 5 1 4 - <_> - 4 - - 0 3 4 4 - <_> - 1 - - 2 13 4 2 - <_> - 8 - - 2 2 3 5 - <_> - 3 - - 2 0 5 1 - <_> - 3 - - 1 9 3 4 - <_> - 4 - - 6 2 1 1 - <_> - 3 - - 3 2 2 2 - <_> - 0 - - 6 4 1 6 - <_> - 0 - - 4 0 3 3 - <_> - 0 - - 0 0 4 5 - <_> - 1 - - 3 13 1 2 - <_> - 9 - - 3 2 2 1 - <_> - 3 - - 4 10 3 2 - <_> - 1 - - 2 14 2 1 - <_> - 5 - - 1 4 2 4 - <_> - 9 - - 4 9 1 1 - <_> - 7 - - 4 10 1 4 - <_> - 4 - - 3 8 4 5 - <_> - 2 - - 2 13 3 1 - <_> - 8 - - 2 0 3 1 - <_> - 8 - - 3 3 2 1 - <_> - 2 - - 3 6 2 1 - <_> - 5 - - 1 12 6 2 - <_> - 2 - - 0 0 5 2 - <_> - 0 - - 2 7 4 6 - <_> - 1 - - 3 0 2 2 - <_> - 7 - - 1 14 5 1 - <_> - 7 - - 5 0 2 5 - <_> - 2 - - 0 14 7 1 - <_> - 9 - - 2 12 3 1 - <_> - 4 - - 1 1 5 5 - <_> - 5 - - 4 4 1 6 - <_> - 2 - - 4 4 1 2 - <_> - 3 - - 5 2 2 7 - <_> - 4 - - 4 9 1 3 - <_> - 3 - - 1 0 6 11 - <_> - 0 - - 2 2 3 2 - <_> - 3 - - 2 0 2 6 - <_> - 8 - - 4 3 1 1 - <_> - 8 - - 0 14 5 1 - <_> - 4 - - 4 1 2 14 - <_> - 8 - - 4 4 1 7 - <_> - 8 - - 4 3 1 1 - <_> - 9 - - 1 11 2 1 - <_> - 5 - - 2 13 4 1 - <_> - 2 - - 2 2 2 11 - <_> - 3 - - 0 13 2 2 - <_> - 2 - - 0 0 6 3 - <_> - 3 - - 1 14 5 1 - <_> - 7 - - 0 13 2 1 - <_> - 5 - - 1 12 2 1 - <_> - 8 - - 5 5 2 10 - <_> - 4 - - 1 8 6 3 - <_> - 9 - - 4 4 1 1 - <_> - 0 - - 4 13 3 1 - <_> - 7 - - 3 3 3 3 - <_> - 0 - - 3 4 4 3 - <_> - 0 - - 2 4 2 1 - <_> - 5 - - 0 2 5 2 - <_> - 5 - - 6 11 1 4 - <_> - 4 - - 3 0 1 14 - <_> - 5 - - 4 9 2 4 - <_> - 0 - - 3 4 1 4 - <_> - 0 - - 3 7 2 1 - <_> - 0 - - 2 5 5 9 - <_> - 3 - - 0 8 1 5 - <_> - 0 - - 1 0 1 1 - <_> - 9 - - 1 1 5 2 - <_> - 8 - - 3 3 2 1 - <_> - 8 - - 4 0 1 2 - <_> - 8 - - 3 2 2 4 - <_> - 5 - - 0 5 3 2 - <_> - 4 - - 3 9 2 4 - <_> - 1 - - 2 6 2 3 - <_> - 5 - - 5 14 1 1 - <_> - 0 - - 3 10 3 3 - <_> - 5 - - 0 8 5 2 - <_> - 9 - - 5 9 2 2 - <_> - 2 - - 1 9 3 5 - <_> - 1 - - 1 1 6 1 - <_> - 7 - - 2 5 1 2 - <_> - 3 - - 0 6 3 1 - <_> - 1 - - 4 14 1 1 - <_> - 3 - - 1 11 2 4 - <_> - 1 - - 3 0 2 5 - <_> - 7 - - 3 5 2 2 - <_> - 1 - - 3 10 1 3 - <_> - 7 - - 1 2 1 1 - <_> - 4 - - 0 5 1 3 - <_> - 5 - - 0 0 6 4 - <_> - 5 - - 0 13 6 2 - <_> - 4 - - 0 0 6 15 - <_> - 2 - - 4 10 1 4 - <_> - 1 - - 0 2 5 3 - <_> - 1 - - 0 1 7 1 - <_> - 4 - - 4 8 3 6 - <_> - 5 - - 5 2 1 6 - <_> - 1 - - 3 5 4 2 - <_> - 5 - - 6 0 1 4 - <_> - 1 - - 6 1 1 12 - <_> - 4 - - 3 5 4 7 - <_> - 4 - - 6 5 1 6 - <_> - 8 - - 3 3 2 1 - <_> - 1 - - 6 3 1 6 - <_> - 1 - - 1 2 1 2 - <_> - 1 - - 1 0 6 4 - <_> - 0 - - 5 5 1 1 - <_> - 4 - - 3 10 3 2 - <_> - 1 - - 0 5 2 8 - <_> - 5 - - 2 3 1 12 - <_> - 9 - - 5 4 1 2 - <_> - 0 - - 0 8 1 7 - <_> - 5 - - 3 5 4 1 - <_> - 2 - - 1 6 3 7 - <_> - 4 - - 0 14 7 1 - <_> - 1 - - 2 13 3 2 - <_> - 1 - - 0 13 1 1 - <_> - 8 - - 3 3 2 1 - <_> - 2 - - 1 5 3 1 - <_> - 8 - - 5 2 1 2 - <_> - 4 - - 3 5 4 9 - <_> - 0 - - 3 3 2 11 - <_> - 1 - - 5 0 2 8 - <_> - 9 - - 3 4 2 1 - <_> - 9 - - 1 1 2 5 - <_> - 1 - - 4 2 1 3 - <_> - 1 - - 2 11 3 2 - <_> - 7 - - 6 4 1 3 - <_> - 1 - - 3 0 4 1 - <_> - 4 - - 2 2 4 1 - <_> - 9 - - 3 4 2 3 - <_> - 3 - - 1 2 4 4 - <_> - 5 - - 2 14 5 1 - <_> - 5 - - 3 12 4 2 - <_> - 4 - - 3 5 2 1 - <_> - 5 - - 5 6 1 9 - <_> - 8 - - 4 5 1 2 - <_> - 0 - - 3 5 2 1 - <_> - 5 - - 6 9 1 4 - <_> - 3 - - 3 10 4 4 - <_> - 2 - - 2 3 2 1 - <_> - 0 - - 5 14 2 1 - <_> - 1 - - 4 2 3 11 - <_> - 1 - - 3 3 2 3 - <_> - 7 - - 4 2 3 12 - <_> - 0 - - 2 13 5 1 - <_> - 3 - - 1 8 2 2 - <_> - 3 - - 6 14 1 1 - <_> - 5 - - 3 4 4 1 - <_> - 7 - - 3 8 3 1 - <_> - 2 - - 1 14 2 1 - <_> - 2 - - 1 10 3 4 - <_> - 7 - - 2 11 1 4 - <_> - 8 - - 3 3 1 1 - <_> - 0 - - 1 0 5 3 - <_> - 8 - - 0 12 5 3 - <_> - 3 - - 3 2 1 1 - <_> - 1 - - 3 1 2 3 - <_> - 5 - - 4 2 2 4 - <_> - 3 - - 4 7 1 1 - <_> - 3 - - 2 5 2 7 - <_> - 4 - - 3 1 3 13 - <_> - 5 - - 2 9 2 1 - <_> - 2 - - 0 2 3 11 - <_> - 2 - - 0 9 3 1 - <_> - 0 - - 2 4 2 7 - <_> - 4 - - 2 5 4 3 - <_> - 3 - - 0 0 4 15 - <_> - 1 - - 4 6 3 8 - <_> - 8 - - 1 10 2 1 - <_> - 9 - - 0 1 2 1 - <_> - 9 - - 3 8 1 1 - <_> - 9 - - 1 1 2 1 - <_> - 9 - - 1 9 1 1 - <_> - 5 - - 4 7 1 1 - <_> - 2 - - 2 9 3 5 - <_> - 8 - - 4 4 1 8 - <_> - 7 - - 5 14 1 1 - <_> - 1 - - 1 4 6 2 - <_> - 0 - - 0 9 4 1 - <_> - 1 - - 4 10 2 1 - <_> - 1 - - 4 0 1 15 - <_> - 5 - - 5 11 1 2 - <_> - 4 - - 3 9 2 3 - <_> - 0 - - 2 4 2 1 - <_> - 4 - - 3 5 2 3 - <_> - 3 - - 2 8 2 6 - <_> - 7 - - 2 7 5 3 - <_> - 3 - - 2 14 3 1 - <_> - 5 - - 4 2 3 13 - <_> - 4 - - 3 9 3 2 - <_> - 4 - - 2 3 1 4 - <_> - 4 - - 0 13 7 2 - <_> - 2 - - 0 14 6 1 - <_> - 3 - - 0 2 1 2 - <_> - 8 - - 5 5 2 10 - <_> - 7 - - 6 2 1 2 - <_> - 8 - - 6 10 1 2 - <_> - 0 - - 3 8 3 4 - <_> - 5 - - 6 10 1 1 - <_> - 1 - - 3 5 2 2 - <_> - 1 - - 3 0 4 9 - <_> - 7 - - 4 7 3 5 - <_> - 4 - - 1 0 6 6 - <_> - 5 - - 1 3 5 5 - <_> - 4 - - 0 3 6 6 - <_> - 7 - - 6 1 1 12 - <_> - 5 - - 2 14 5 1 - <_> - 4 - - 2 4 4 3 - <_> - 3 - - 2 2 1 11 - <_> - 7 - - 4 0 3 10 - <_> - 7 - - 2 9 5 4 - <_> - 4 - - 3 6 2 2 - <_> - 1 - - 3 4 2 6 - <_> - 4 - - 3 6 2 4 - <_> - 2 - - 5 4 1 7 - <_> - 0 - - 0 0 6 9 - <_> - 0 - - 2 7 3 5 - <_> - 0 - - 0 8 1 2 - <_> - 0 - - 3 5 2 4 - <_> - 3 - - 4 1 2 3 - <_> - 8 - - 3 0 1 2 - <_> - 8 - - 3 2 2 2 - <_> - 9 - - 2 7 4 1 - <_> - 8 - - 3 4 3 1 - <_> - 4 - - 2 5 5 8 - <_> - 8 - - 4 3 1 1 - <_> - 7 - - 1 6 5 1 - <_> - 0 - - 3 10 3 4 - <_> - 2 - - 1 2 5 2 - <_> - 9 - - 1 10 6 2 - <_> - 3 - - 0 14 6 1 - <_> - 7 - - 0 14 3 1 - <_> - 4 - - 0 0 6 10 - <_> - 7 - - 4 1 1 3 - <_> - 2 - - 3 1 1 8 - <_> - 5 - - 1 4 6 5 - <_> - 4 - - 3 1 4 5 - <_> - 0 - - 3 0 4 1 - <_> - 7 - - 0 13 2 2 - <_> - 2 - - 6 10 1 4 - <_> - 4 - - 1 3 6 6 - <_> - 1 - - 3 3 4 9 - <_> - 3 - - 1 1 3 6 - <_> - 1 - - 4 3 1 2 - <_> - 4 - - 2 0 3 5 - <_> - 4 - - 1 0 6 14 - <_> - 8 - - 3 3 2 1 - <_> - 8 - - 1 8 3 1 - <_> - 2 - - 4 4 1 2 - <_> - 9 - - 2 1 3 6 - <_> - 4 - - 3 6 2 3 - <_> - 5 - - 4 14 2 1 - <_> - 2 - - 2 10 3 4 - <_> - 4 - - 6 5 1 2 - <_> - 2 - - 2 0 5 2 - <_> - 7 - - 1 1 4 8 - <_> - 4 - - 4 14 3 1 - <_> - 2 - - 3 0 4 5 - <_> - 5 - - 4 2 2 3 - <_> - 0 - - 2 3 2 11 - <_> - 4 - - 3 0 2 7 - <_> - 2 - - 3 6 1 1 - <_> - 1 - - 3 2 2 4 - <_> - 8 - - 4 3 2 1 - <_> - 4 - - 3 1 2 4 - <_> - 8 - - 0 14 5 1 - <_> - 1 - - 3 13 2 2 - <_> - 4 - - 2 10 5 1 - <_> - 1 - - 2 5 4 1 - <_> - 8 - - 4 5 1 6 - <_> - 9 - - 3 9 2 2 - <_> - 0 - - 6 8 1 3 - <_> - 0 - - 2 2 4 8 - <_> - 7 - - 2 2 4 9 - <_> - 9 - - 1 14 5 1 - <_> - 1 - - 0 0 5 1 - <_> - 4 - - 2 8 1 7 - <_> - 7 - - 5 0 2 11 - <_> - 4 - - 2 5 5 7 - <_> - 3 - - 0 14 6 1 - <_> - 3 - - 6 5 1 9 - <_> - 0 - - 3 11 3 3 - <_> - 1 - - 5 0 2 5 - <_> - 1 - - 0 3 5 2 - <_> - 5 - - 0 10 4 1 - <_> - 3 - - 0 9 4 4 - <_> - 0 - - 3 0 1 1 - <_> - 5 - - 4 2 1 1 - <_> - 2 - - 4 3 2 2 - <_> - 7 - - 0 0 6 11 - <_> - 0 - - 3 5 2 1 - <_> - 0 - - 2 0 2 9 - <_> - 1 - - 3 7 2 2 - <_> - 8 - - 4 3 1 1 - <_> - 9 - - 3 4 2 1 - <_> - 8 - - 5 3 1 2 - <_> - 7 - - 4 8 1 2 - <_> - 2 - - 2 3 1 9 - <_> - 4 - - 3 1 3 2 - <_> - 2 - - 0 12 1 2 - <_> - 2 - - 5 1 1 10 - <_> - 3 - - 6 3 1 5 - <_> - 4 - - 1 5 3 7 - <_> - 2 - - 6 14 1 1 - <_> - 7 - - 3 5 2 3 - <_> - 3 - - 2 2 2 12 - <_> - 1 - - 1 5 4 8 - <_> - 3 - - 1 14 4 1 - <_> - 4 - - 4 2 1 5 - <_> - 2 - - 1 2 4 5 - <_> - 0 - - 5 4 1 1 - <_> - 2 - - 3 10 2 4 - <_> - 8 - - 1 1 4 1 - <_> - 5 - - 1 6 3 7 - <_> - 8 - - 2 3 4 1 - <_> - 2 - - 0 0 7 2 - <_> - 8 - - 2 9 2 3 - <_> - 1 - - 2 1 5 13 - <_> - 2 - - 0 0 7 6 - <_> - 0 - - 3 3 1 6 - <_> - 9 - - 3 4 1 2 - <_> - 9 - - 3 2 2 1 - <_> - 8 - - 3 3 1 3 - <_> - 7 - - 5 13 2 1 - <_> - 4 - - 1 3 5 5 - <_> - 7 - - 3 12 2 2 - <_> - 0 - - 1 4 3 2 - <_> - 3 - - 2 3 1 4 - <_> - 0 - - 1 0 4 3 - <_> - 4 - - 0 3 2 8 - <_> - 7 - - 3 9 2 1 - <_> - 1 - - 2 9 1 4 - <_> - 0 - - 2 9 4 5 - <_> - 3 - - 0 2 1 1 - <_> - 5 - - 3 8 1 3 - <_> - 1 - - 3 10 2 3 - <_> - 1 - - 3 0 2 15 - <_> - 9 - - 2 10 2 1 - <_> - 2 - - 2 10 3 4 - <_> - 3 - - 1 10 1 1 - <_> - 8 - - 3 3 2 1 - <_> - 8 - - 2 1 1 4 - <_> - 8 - - 3 3 1 1 - <_> - 9 - - 3 5 2 1 - <_> - 5 - - 2 14 5 1 - <_> - 4 - - 2 6 5 9 - <_> - 2 - - 4 8 2 2 - <_> - 3 - - 3 1 1 4 - <_> - 4 - - 2 6 4 3 - <_> - 3 - - 2 14 1 1 - <_> - 5 - - 5 5 1 9 - <_> - 2 - - 5 4 1 11 - <_> - 7 - - 0 14 7 1 - <_> - 7 - - 0 1 1 9 - <_> - 0 - - 0 10 1 2 - <_> - 2 - - 3 7 2 1 - <_> - 3 - - 2 11 1 2 - <_> - 0 - - 3 6 4 8 - <_> - 0 - - 0 13 7 2 - <_> - 0 - - 0 1 2 9 - <_> - 1 - - 4 13 1 1 - <_> - 1 - - 3 5 2 2 - <_> - 4 - - 3 2 2 8 - <_> - 7 - - 0 3 4 4 - <_> - 4 - - 3 3 3 2 - <_> - 3 - - 3 12 2 2 - <_> - 0 - - 1 12 4 1 - <_> - 7 - - 6 13 1 1 - <_> - 3 - - 5 11 1 3 - <_> - 5 - - 0 1 6 1 - <_> - 5 - - 0 4 2 4 - <_> - 5 - - 4 1 1 4 - <_> - 0 - - 0 7 4 2 - <_> - 4 - - 0 2 5 1 - <_> - 5 - - 3 14 4 1 - <_> - 1 - - 0 2 5 2 - <_> - 0 - - 2 8 3 5 - <_> - 4 - - 1 0 6 15 - <_> - 9 - - 4 4 1 1 - <_> - 1 - - 4 1 1 10 - <_> - 9 - - 1 0 3 3 - <_> - 0 - - 2 1 3 1 - <_> - 9 - - 4 5 1 6 - <_> - 5 - - 1 3 2 8 - <_> - 4 - - 5 13 1 2 - <_> - 8 - - 3 3 2 1 - <_> - 8 - - 3 1 3 1 - <_> - 8 - - 3 2 3 2 - <_> - 4 - - 0 8 6 7 - <_> - 0 - - 3 2 2 2 - <_> - 0 - - 5 8 2 6 - <_> - 3 - - 3 1 1 1 - <_> - 2 - - 2 10 3 4 - <_> - 0 - - 4 4 2 1 - <_> - 5 - - 0 10 2 5 - <_> - 4 - - 2 6 1 2 - <_> - 4 - - 1 7 3 2 - <_> - 8 - - 3 3 1 1 - <_> - 3 - - 1 2 3 4 - <_> - 7 - - 2 0 1 1 - <_> - 2 - - 1 3 2 1 - <_> - 3 - - 2 14 2 1 - <_> - 2 - - 1 8 4 6 - <_> - 1 - - 0 3 5 2 - <_> - 3 - - 4 7 1 2 - <_> - 4 - - 6 5 1 4 - <_> - 8 - - 3 3 2 1 - <_> - 8 - - 1 14 4 1 - <_> - 5 - - 3 5 4 2 - <_> - 4 - - 3 0 2 2 - <_> - 1 - - 2 12 3 1 - <_> - 5 - - 1 13 6 2 - <_> - 0 - - 3 12 2 3 - <_> - 1 - - 2 13 3 2 - <_> - 5 - - 1 8 3 6 - <_> - 9 - - 3 8 2 1 - <_> - 9 - - 3 2 2 1 - <_> - 3 - - 3 2 1 2 - <_> - 9 - - 2 4 3 1 - <_> - 4 - - 3 10 3 2 - <_> - 4 - - 2 4 2 4 - <_> - 5 - - 5 14 1 1 - <_> - 1 - - 3 13 3 1 - <_> - 3 - - 4 10 2 5 - <_> - 2 - - 0 0 1 3 - <_> - 4 - - 2 1 2 6 - <_> - 3 - - 3 11 2 3 - <_> - 9 - - 0 4 1 1 - <_> - 2 - - 4 4 2 1 - <_> - 3 - - 0 4 3 1 - <_> - 2 - - 0 4 5 6 - <_> - 3 - - 0 0 6 13 - <_> - 1 - - 3 6 2 1 - <_> - 9 - - 4 8 1 1 - <_> - 5 - - 5 2 1 8 - <_> - 0 - - 1 14 2 1 - <_> - 4 - - 2 8 5 5 - <_> - 4 - - 4 0 2 7 - <_> - 3 - - 6 10 1 5 - <_> - 5 - - 1 2 6 1 - <_> - 2 - - 3 5 2 1 - <_> - 2 - - 3 1 4 5 - <_> - 9 - - 1 0 1 1 - <_> - 1 - - 1 1 2 1 - <_> - 0 - - 1 6 5 4 - <_> - 8 - - 2 7 2 1 - <_> - 9 - - 6 9 1 1 - <_> - 9 - - 6 2 1 13 - <_> - 3 - - 0 10 1 5 - <_> - 0 - - 3 10 3 4 - <_> - 4 - - 2 9 4 3 - <_> - 2 - - 1 14 5 1 - <_> - 2 - - 2 7 3 7 - <_> - 5 - - 4 1 3 2 - <_> - 3 - - 2 0 3 2 - <_> - 4 - - 2 3 4 4 - <_> - 7 - - 1 1 5 1 - <_> - 4 - - 3 14 2 1 - <_> - 0 - - 2 4 1 11 - <_> - 5 - - 2 9 1 1 - <_> - 1 - - 2 9 5 6 - <_> - 4 - - 0 5 7 9 - <_> - 2 - - 6 14 1 1 - <_> - 1 - - 3 4 1 5 - <_> - 2 - - 2 13 3 1 - <_> - 5 - - 2 4 4 2 - <_> - 1 - - 4 5 2 1 - <_> - 7 - - 6 0 1 14 - <_> - 1 - - 3 10 2 1 - <_> - 3 - - 2 11 3 2 - <_> - 1 - - 4 2 2 12 - <_> - 4 - - 0 3 3 12 - <_> - 5 - - 2 6 5 8 - <_> - 5 - - 2 8 2 1 - <_> - 2 - - 0 6 3 3 - <_> - 7 - - 2 5 3 1 - <_> - 0 - - 5 7 2 1 - <_> - 3 - - 0 14 5 1 - <_> - 0 - - 3 7 2 1 - <_> - 8 - - 3 3 2 1 - <_> - 9 - - 3 3 2 6 - <_> - 8 - - 5 4 2 1 - <_> - 4 - - 1 5 6 7 - <_> - 4 - - 1 6 1 6 - <_> - 4 - - 4 4 1 6 - <_> - 0 - - 3 2 3 2 - <_> - 4 - - 2 9 5 6 - <_> - 0 - - 3 1 2 1 - <_> - 9 - - 0 0 5 4 - <_> - 1 - - 2 14 4 1 - <_> - 9 - - 3 6 2 3 - <_> - 2 - - 0 14 7 1 - <_> - 8 - - 2 4 3 2 - <_> - 3 - - 3 3 3 1 - <_> - 4 - - 0 10 5 2 - <_> - 3 - - 2 10 2 5 - <_> - 2 - - 4 4 2 2 - <_> - 4 - - 2 5 4 3 - <_> - 4 - - 3 4 1 10 - <_> - 5 - - 1 6 3 3 - <_> - 8 - - 2 13 4 1 - <_> - 8 - - 3 11 2 2 - <_> - 4 - - 3 1 2 1 - <_> - 0 - - 3 6 2 1 - <_> - 9 - - 3 12 1 2 - <_> - 2 - - 4 11 1 3 - <_> - 0 - - 3 9 2 4 - <_> - 9 - - 1 0 3 1 - <_> - 4 - - 4 0 2 15 - <_> - 5 - - 3 14 4 1 - <_> - 2 - - 1 10 4 4 - <_> - 9 - - 3 8 2 6 - <_> - 8 - - 3 3 2 1 - <_> - 2 - - 3 5 1 1 - <_> - 8 - - 4 0 1 2 - <_> - 3 - - 1 1 6 9 - <_> - 1 - - 4 4 1 1 - <_> - 4 - - 3 9 2 2 - <_> - 5 - - 2 14 4 1 - <_> - 5 - - 2 13 4 1 - <_> - 4 - - 4 3 1 7 - <_> - 5 - - 0 12 3 3 - <_> - 8 - - 5 13 2 1 - <_> - 0 - - 3 4 2 2 - <_> - 1 - - 2 2 3 9 - <_> - 7 - - 3 13 2 1 - <_> - 7 - - 1 14 6 1 - <_> - 1 - - 0 0 4 1 - <_> - 4 - - 0 3 4 3 - <_> - 1 - - 2 4 4 9 - <_> - 1 - - 0 7 4 5 - <_> - 4 - - 4 7 3 3 - <_> - 7 - - 2 13 2 1 - <_> - 0 - - 2 3 4 10 - <_> - 4 - - 0 4 1 2 - <_> - 3 - - 0 7 6 8 - <_> - 0 - - 1 7 1 1 - <_> - 0 - - 1 14 5 1 - <_> - 5 - - 1 9 1 3 - <_> - 5 - - 4 2 1 2 - <_> - 2 - - 2 12 1 2 - <_> - 4 - - 1 14 1 1 - <_> - 0 - - 3 0 3 5 - <_> - 0 - - 1 2 2 10 - <_> - 4 - - 0 2 1 13 - <_> - 0 - - 0 9 3 1 - <_> - 3 - - 1 11 4 3 - <_> - 1 - - 3 5 3 3 - <_> - 4 - - 4 1 1 10 - <_> - 7 - - 0 6 1 2 - <_> - 2 - - 2 1 5 1 - <_> - 0 - - 2 7 4 7 - <_> - 1 - - 3 10 2 3 - <_> - 8 - - 5 13 2 1 - <_> - 3 - - 1 13 2 2 - <_> - 1 - - 5 6 2 7 - <_> - 3 - - 0 1 1 1 - <_> - 2 - - 1 14 6 1 - <_> - 4 - - 0 0 3 3 - <_> - 2 - - 2 2 2 12 - <_> - 9 - - 2 4 2 9 - <_> - 9 - - 0 1 6 8 - <_> - 8 - - 3 3 2 1 - <_> - 2 - - 2 5 2 1 - <_> - 1 - - 2 1 5 3 - <_> - 9 - - 1 9 1 2 - <_> - 2 - - 0 9 7 3 - <_> - 4 - - 1 1 1 8 - <_> - 8 - - 3 14 1 1 - <_> - 4 - - 3 2 2 1 - <_> - 7 - - 3 8 1 1 - <_> - 3 - - 2 0 2 6 - <_> - 3 - - 0 14 5 1 - <_> - 4 - - 3 1 3 12 - <_> - 1 - - 1 3 4 3 - <_> - 0 - - 4 3 1 1 - <_> - 8 - - 3 2 3 2 - <_> - 1 - - 4 4 1 11 - <_> - 8 - - 4 0 2 2 - <_> - 3 - - 5 1 1 1 - <_> - 1 - - 3 5 2 2 - <_> - 8 - - 3 2 1 2 - <_> - 8 - - 3 5 1 2 - <_> - 8 - - 3 4 2 1 - <_> - 1 - - 3 14 2 1 - <_> - 3 - - 2 12 3 1 - <_> - 5 - - 3 1 4 5 - <_> - 0 - - 0 11 7 1 - <_> - 7 - - 0 12 7 2 - <_> - 2 - - 2 11 1 1 - <_> - 8 - - 6 10 1 2 - <_> - 8 - - 2 6 5 2 - <_> - 5 - - 1 14 6 1 - <_> - 2 - - 0 12 6 2 - <_> - 9 - - 0 11 2 1 - <_> - 4 - - 2 10 4 1 - <_> - 9 - - 4 6 1 2 - <_> - 0 - - 1 7 3 1 - <_> - 8 - - 1 5 4 2 - <_> - 0 - - 0 1 3 6 - <_> - 5 - - 6 4 1 1 - <_> - 2 - - 2 14 1 1 - <_> - 0 - - 2 13 5 1 - <_> - 5 - - 5 1 1 6 - <_> - 3 - - 6 11 1 4 - <_> - 4 - - 1 0 6 15 - <_> - 1 - - 2 2 4 2 - <_> - 9 - - 3 7 1 2 - <_> - 3 - - 3 2 1 2 - <_> - 7 - - 0 2 3 1 - <_> - 7 - - 5 3 2 1 - <_> - 3 - - 4 0 1 6 - <_> - 5 - - 0 4 3 11 - <_> - 0 - - 5 0 2 3 - <_> - 3 - - 2 1 1 13 - <_> - 3 - - 1 3 2 6 - <_> - 0 - - 2 5 2 2 - <_> - 2 - - 5 3 1 3 - <_> - 0 - - 4 3 2 11 - <_> - 5 - - 1 0 4 1 - <_> - 0 - - 4 4 1 3 - <_> - 3 - - 0 14 4 1 - <_> - 1 - - 0 3 6 2 - <_> - 3 - - 1 11 3 3 - <_> - 7 - - 0 2 2 8 - <_> - 9 - - 3 2 2 10 - <_> - 8 - - 3 3 1 1 - <_> - 9 - - 4 4 1 3 - <_> - 5 - - 2 1 2 8 - <_> - 9 - - 1 5 1 5 - <_> - 5 - - 2 10 4 2 - <_> - 9 - - 2 11 3 2 - <_> - 4 - - 1 5 6 10 - <_> - 1 - - 2 13 4 1 - <_> - 2 - - 5 0 2 2 - <_> - 0 - - 1 10 1 5 - <_> - 3 - - 5 0 2 8 - <_> - 5 - - 4 9 2 4 - <_> - 5 - - 1 13 6 2 - <_> - 1 - - 3 5 2 2 - <_> - 1 - - 5 13 1 2 - <_> - 4 - - 2 4 3 2 - <_> - 2 - - 2 0 2 1 - <_> - 2 - - 2 1 3 14 - <_> - 9 - - 2 4 3 1 - <_> - 9 - - 1 0 4 4 - <_> - 0 - - 4 10 1 3 - <_> - 2 - - 2 1 2 1 - <_> - 4 - - 2 3 4 4 - <_> - 4 - - 4 9 3 1 - <_> - 8 - - 3 3 2 1 - <_> - 4 - - 4 4 1 6 - <_> - 8 - - 2 0 1 4 - <_> - 3 - - 0 6 6 8 - <_> - 5 - - 4 6 2 8 - <_> - 9 - - 4 5 2 1 - <_> - 2 - - 5 14 2 1 - <_> - 5 - - 2 5 5 1 - <_> - 2 - - 5 7 2 2 - <_> - 0 - - 2 4 1 1 - <_> - 4 - - 0 14 7 1 - <_> - 9 - - 5 6 1 9 - <_> - 2 - - 2 10 3 4 - <_> - 1 - - 3 1 2 1 - <_> - 2 - - 1 5 3 1 - <_> - 4 - - 2 1 3 2 - <_> - 3 - - 3 7 1 1 - <_> - 3 - - 2 4 2 3 - <_> - 2 - - 3 4 2 1 - <_> - 7 - - 4 4 1 1 - <_> - 8 - - 4 3 1 1 - <_> - 2 - - 3 0 4 5 - <_> - 0 - - 5 12 2 3 - <_> - 3 - - 0 0 7 2 - <_> - 3 - - 3 0 1 14 - <_> - 1 - - 3 5 2 8 - <_> - 1 - - 3 2 2 13 - <_> - 4 - - 0 1 6 13 - <_> - 8 - - 2 14 3 1 - <_> - 8 - - 4 5 1 1 - <_> - 3 - - 2 0 1 12 - <_> - 0 - - 2 4 3 5 - <_> - 3 - - 5 9 1 5 - <_> - 1 - - 1 14 4 1 - <_> - 4 - - 2 13 4 1 - <_> - 4 - - 0 12 6 3 - <_> - 2 - - 0 9 1 6 - <_> - 1 - - 0 2 1 8 - <_> - 4 - - 0 5 7 6 - <_> - 8 - - 4 3 1 1 - <_> - 2 - - 2 0 4 2 - <_> - 8 - - 5 3 1 2 - <_> - 0 - - 3 9 2 5 - <_> - 3 - - 5 3 2 8 - <_> - 5 - - 5 4 1 11 - <_> - 5 - - 1 14 4 1 - <_> - 5 - - 3 12 3 3 - <_> - 7 - - 3 6 1 1 - <_> - 9 - - 3 4 2 4 - <_> - 9 - - 0 2 6 4 - <_> - 8 - - 4 2 1 5 - <_> - 2 - - 4 8 1 1 - <_> - 5 - - 2 5 1 3 - <_> - 1 - - 4 2 2 2 - <_> - 4 - - 0 5 7 9 - <_> - 1 - - 1 1 6 1 - <_> - 1 - - 3 4 2 1 - <_> - 4 - - 2 0 3 6 - <_> - 1 - - 3 1 2 4 - <_> - 2 - - 2 8 3 6 - <_> - 3 - - 2 8 5 2 - <_> - 7 - - 0 5 5 1 - <_> - 7 - - 0 13 4 2 - <_> - 2 - - 2 3 3 1 - <_> - 1 - - 2 10 3 3 - <_> - 7 - - 4 13 2 1 - <_> - 3 - - 0 5 7 2 - <_> - 3 - - 2 11 1 2 - <_> - 9 - - 3 9 1 1 - <_> - 9 - - 0 9 1 6 - <_> - 8 - - 4 1 3 2 - <_> - 9 - - 3 4 2 5 - <_> - 0 - - 0 9 1 3 - <_> - 0 - - 2 9 2 4 - <_> - 3 - - 3 2 1 2 - <_> - 2 - - 1 13 3 1 - <_> - 3 - - 1 0 1 9 - <_> - 5 - - 0 14 7 1 - <_> - 0 - - 3 7 3 7 - <_> - 3 - - 4 5 2 3 - <_> - 2 - - 3 5 2 1 - <_> - 3 - - 0 10 2 2 - <_> - 5 - - 3 0 2 4 - <_> - 1 - - 4 2 2 13 - <_> - 4 - - 2 3 4 9 - <_> - 8 - - 6 10 1 2 - <_> - 9 - - 0 2 1 2 - <_> - 2 - - 2 3 2 11 - <_> - 5 - - 0 14 7 1 - <_> - 1 - - 1 7 3 6 - <_> - 1 - - 3 9 2 4 - <_> - 3 - - 0 13 5 2 - <_> - 0 - - 4 7 1 1 - <_> - 3 - - 2 5 1 3 - <_> - 4 - - 3 7 2 3 - <_> - 1 - - 0 5 2 8 - <_> - 1 - - 0 5 1 5 - <_> - 5 - - 2 0 5 4 - <_> - 4 - - 0 5 7 4 - <_> - 4 - - 2 3 3 2 - <_> - 1 - - 3 2 2 3 - <_> - 1 - - 1 4 5 1 - <_> - 5 - - 4 1 3 6 - <_> - 4 - - 1 2 5 10 - <_> - 3 - - 2 6 2 8 - <_> - 3 - - 3 7 1 3 - <_> - 2 - - 3 9 1 6 - <_> - 1 - - 1 2 4 6 - <_> - 4 - - 3 10 2 2 - <_> - 3 - - 5 0 1 4 - <_> - 2 - - 4 2 2 11 - <_> - 8 - - 4 2 2 4 - <_> - 9 - - 4 4 2 1 - <_> - 4 - - 3 6 4 6 - <_> - 0 - - 3 0 3 14 - <_> - 5 - - 2 7 3 8 - <_> - 8 - - 3 2 2 2 - <_> - 1 - - 3 14 2 1 - <_> - 4 - - 1 10 5 4 - <_> - 3 - - 5 11 1 2 - <_> - 8 - - 3 0 2 1 - <_> - 8 - - 3 3 2 2 - <_> - 0 - - 4 4 1 5 - <_> - 5 - - 1 6 5 5 - <_> - 3 - - 1 1 6 2 - <_> - 1 - - 3 5 3 1 - <_> - 0 - - 2 3 4 10 - <_> - 2 - - 3 3 3 3 - <_> - 3 - - 4 5 2 6 - <_> - 5 - - 0 14 7 1 - <_> - 5 - - 4 9 2 6 - <_> - 0 - - 0 6 5 1 - <_> - 4 - - 4 5 3 10 - <_> - 1 - - 4 3 3 5 - <_> - 3 - - 6 7 1 1 - <_> - 0 - - 3 5 1 1 - <_> - 5 - - 4 14 2 1 - <_> - 9 - - 2 0 4 3 - <_> - 9 - - 4 8 1 1 - <_> - 0 - - 0 8 4 6 - <_> - 9 - - 1 6 1 6 - <_> - 9 - - 0 14 2 1 - <_> - 4 - - 3 10 3 5 - <_> - 3 - - 1 0 2 15 - <_> - 0 - - 2 0 2 6 - <_> - 5 - - 3 12 2 3 - <_> - 8 - - 0 14 5 1 - <_> - 8 - - 3 3 2 1 - <_> - 2 - - 3 1 4 1 - <_> - 8 - - 3 1 1 1 - <_> - 3 - - 1 3 2 3 - <_> - 0 - - 2 4 2 1 - <_> - 0 - - 3 5 2 4 - <_> - 2 - - 0 14 7 1 - <_> - 7 - - 2 14 4 1 - <_> - 0 - - 4 9 1 1 - <_> - 1 - - 5 3 1 6 - <_> - 3 - - 0 2 4 3 - <_> - 4 - - 1 5 4 3 - <_> - 7 - - 1 7 5 4 - <_> - 7 - - 3 5 2 2 - <_> - 0 - - 0 10 5 2 - <_> - 3 - - 3 7 1 1 - <_> - 7 - - 5 2 2 7 - <_> - 8 - - 3 0 1 8 - <_> - 1 - - 2 2 3 2 - <_> - 4 - - 0 1 5 2 - <_> - 1 - - 3 1 1 1 - <_> - 9 - - 5 3 1 5 - <_> - 9 - - 3 2 2 4 - <_> - 5 - - 4 10 2 4 - <_> - 0 - 1024 - - <_> - -8.4679585695266724e-01 - - 1 2 0 7.7750000000000000e+02 0 -1 1 5.8850000000000000e+02 - -2 -3 2 2.5500000000000000e+01 - - -8.4679585695266724e-01 7.5506496429443359e-01 - -6.9044047594070435e-01 6.3049119710922241e-01 - <_> - -1.6734303236007690e+00 - - 1 2 3 1.9500000000000000e+01 0 -1 4 1.5500000000000000e+01 - -2 -3 5 1.4500000000000000e+01 - - -7.5389009714126587e-01 6.4812886714935303e-01 - -2.1629486978054047e-01 -8.2663446664810181e-01 - <_> - -1.8291370868682861e+00 - - 1 2 6 1.3500000000000000e+01 0 -1 7 2.0350000000000000e+02 - -2 -3 8 3.0050000000000000e+02 - - -1.5570680797100067e-01 -8.0992084741592407e-01 - 6.8644106388092041e-01 -5.6922149658203125e-01 - <_> - -1.7377158403396606e+00 - - 1 2 9 3.6500000000000000e+01 0 -1 10 2.4500000000000000e+01 - -2 -3 11 2.8150000000000000e+02 - - -8.2347095012664795e-01 3.0225446820259094e-01 - 6.9995605945587158e-01 -1.7914050817489624e-01 - <_> - -2.2347910404205322e+00 - - 1 2 12 2.0550000000000000e+02 0 -1 13 6.7500000000000000e+01 - -2 -3 14 8.6350000000000000e+02 - - -4.9707528948783875e-01 1.7866376042366028e-01 - 7.4965566396713257e-01 5.7663144543766975e-03 - <_> - -1.8678615093231201e+00 - - 1 2 15 1.5150000000000000e+02 0 -1 16 1.0500000000000000e+01 - -2 -3 17 4.3255000000000000e+03 - - -2.6820951700210571e-01 6.4194840192794800e-01 - -6.7160737514495850e-01 6.3368387520313263e-02 - <_> - -2.0991549491882324e+00 - - 1 2 18 1.5000000000000000e+00 0 -1 19 2.9500000000000000e+01 - -2 -3 20 5.0000000000000000e-01 - - -5.0631237030029297e-01 5.5947405099868774e-01 - 7.0312672853469849e-01 -4.0578368306159973e-01 - <_> - -2.0249555110931396e+00 - - 1 2 21 5.2500000000000000e+01 0 -1 22 7.5000000000000000e+00 - -2 -3 23 4.3500000000000000e+01 - - -7.6095990836620331e-02 -7.4784129858016968e-01 - 5.0073879957199097e-01 -3.8508036732673645e-01 - <_> - -2.0100402832031250e+00 - - 1 2 24 3.7650000000000000e+02 0 -1 25 4.1500000000000000e+01 - -2 -3 26 2.5250000000000000e+02 - - -5.6506282091140747e-01 2.3158341646194458e-01 - -8.8750278949737549e-01 8.2055127620697021e-01 - <_> - -1.6451328992843628e+00 - - 1 2 27 7.5000000000000000e+00 0 -1 28 1.8500000000000000e+01 - -2 -3 29 2.2500000000000000e+01 - - -6.0027003288269043e-01 3.8312932848930359e-01 - 2.1947205066680908e-01 -5.9093552827835083e-01 - <_> - -2.0925648212432861e+00 - - 1 2 30 1.1500000000000000e+01 0 -1 31 9.5000000000000000e+00 - -2 -3 32 2.6350000000000000e+02 - - -4.6565398573875427e-01 5.0306195020675659e-01 - 4.4449210166931152e-01 -6.1473309993743896e-01 - <_> - -1.5271776914596558e+00 - - 1 2 33 5.0000000000000000e-01 0 -1 34 1.2500000000000000e+01 - -2 -3 35 3.6500000000000000e+01 - - -7.7037209272384644e-01 5.6538718938827515e-01 - -5.0570178031921387e-01 1.6205248236656189e-01 - <_> - -1.1876722574234009e+00 - - 1 2 36 3.5000000000000000e+00 0 -1 37 1.5000000000000000e+00 - -2 -3 38 2.5150000000000000e+02 - - -7.4505090713500977e-01 3.8910430669784546e-01 - -5.9720128774642944e-01 7.2264879941940308e-02 - <_> - -1.1631057262420654e+00 - - 1 2 39 2.7950000000000000e+02 0 -1 40 1.7065000000000000e+03 - -2 -3 41 1.2495000000000000e+03 - - 2.4566594511270523e-02 7.9330480098724365e-01 - 5.6873923540115356e-01 -4.0141937136650085e-01 - <_> - -8.4218001365661621e-01 - - 1 2 42 4.2525000000000000e+03 0 -1 43 4.5000000000000000e+00 - -2 -3 44 1.5175000000000000e+03 - - 3.2092568278312683e-01 -4.5945590734481812e-01 - -8.0667120218276978e-01 4.0151047706604004e-01 - <_> - -1.3475534915924072e+00 - - 1 2 45 2.3500000000000000e+01 0 -1 46 8.8500000000000000e+01 - -2 -3 47 9.2150000000000000e+02 - - 3.0066493153572083e-01 -5.0537353754043579e-01 - 3.6820709705352783e-01 -9.1408914327621460e-01 - <_> - -9.5874893665313721e-01 - - 1 2 48 5.7550000000000000e+02 0 -1 49 6.7550000000000000e+02 - -2 -3 50 5.0000000000000000e-01 - - -8.4770929813385010e-01 3.3511099219322205e-01 - 3.8880458474159241e-01 -1.9090360403060913e-01 - <_> - -8.5856813192367554e-01 - - 1 2 51 6.1500000000000000e+01 0 -1 52 1.5000000000000000e+00 - -2 -3 53 1158. - - 5.0987577438354492e-01 -3.8584578037261963e-01 - -5.0875252485275269e-01 5.5896055698394775e-01 - <_> - -6.4911109209060669e-01 - - 1 2 54 2.2050000000000000e+02 0 -1 55 2.5750000000000000e+02 - -2 -3 56 2.1450000000000000e+02 - - -6.3486647605895996e-01 2.0945706963539124e-01 - -8.4773159027099609e-01 4.1636252403259277e-01 - <_> - -4.9586555361747742e-01 - - 1 2 57 3.5000000000000000e+00 0 -1 58 2.5000000000000000e+00 - -2 -3 59 3.2500000000000000e+01 - - -7.5921803712844849e-01 4.6488901972770691e-01 - -6.8810594081878662e-01 -2.7040589600801468e-02 - <_> - -4.7253912687301636e-01 - - 1 2 60 2.5000000000000000e+00 0 -1 61 4.5000000000000000e+00 - -2 -3 62 3.2500000000000000e+01 - - -7.9894185066223145e-01 6.2211072444915771e-01 - -5.4600864648818970e-01 2.3326411843299866e-02 - <_> - -5.5614802986383438e-02 - - 1 2 63 2.4500000000000000e+01 0 -1 64 2.2500000000000000e+01 - -2 -3 65 1.5000000000000000e+00 - - -1.4692783355712891e-01 4.1692432761192322e-01 - 3.2402262091636658e-01 -8.1831818819046021e-01 - <_> - 2.4737248197197914e-02 - - 1 2 66 3.4500000000000000e+01 0 -1 67 5.0000000000000000e-01 - -2 -3 68 8.1750000000000000e+02 - - 4.9493959546089172e-01 -4.3111301958560944e-02 - 4.1624513268470764e-01 -6.5285211801528931e-01 - <_> - -3.8909688591957092e-01 - - 1 2 69 4.6500000000000000e+01 0 -1 70 1.1950000000000000e+02 - -2 -3 71 5.0000000000000000e-01 - - 3.9863130450248718e-01 -6.7247897386550903e-01 - 5.4888677597045898e-01 -1.2822744250297546e-01 - <_> - -7.9226568341255188e-02 - - 1 2 72 1.1500000000000000e+01 0 -1 73 2.3550000000000000e+02 - -2 -3 74 1.2550000000000000e+02 - - 9.7892753779888153e-02 -7.6417064666748047e-01 - -5.4467469453811646e-01 3.0987030267715454e-01 - <_> - -1.9954596646130085e-03 - - 1 2 75 1.5000000000000000e+00 0 -1 76 1.5000000000000000e+00 - -2 -3 77 1.0500000000000000e+01 - - -4.4582867622375488e-01 4.6034806966781616e-01 - 9.2526301741600037e-02 -5.5669903755187988e-01 - <_> - -1.2115581892430782e-02 - - 1 2 78 1.4500000000000000e+01 0 -1 79 2.5000000000000000e+00 - -2 -3 80 1284. - - -1.0120121762156487e-02 -5.9989041090011597e-01 - -1.7805591225624084e-01 6.3028931617736816e-01 - <_> - 3.5972565412521362e-01 - - 1 2 81 1.9650000000000000e+02 0 -1 82 9.5000000000000000e+00 - -2 -3 83 1.0625000000000000e+03 - - -2.0688037574291229e-01 3.7184122204780579e-01 - 7.2959977388381958e-01 -6.4402073621749878e-01 - <_> - 3.0813610553741455e-01 - - 1 2 84 1.1050000000000000e+02 0 -1 85 4.5000000000000000e+00 - -2 -3 86 6.6500000000000000e+01 - - -8.8497090339660645e-01 3.9636072516441345e-01 - 6.6349333524703979e-01 -5.1589541137218475e-02 - <_> - 2.5005090236663818e-01 - - 1 2 87 2.0550000000000000e+02 0 -1 88 3.5000000000000000e+00 - -2 -3 89 8.5000000000000000e+00 - - 3.3133915066719055e-01 -3.9812210202217102e-01 - -6.8591558933258057e-01 4.8487389087677002e-01 - <_> - 5.8778470754623413e-01 - - 1 2 90 1.3950000000000000e+02 0 -1 91 1.9500000000000000e+01 - -2 -3 92 3.5000000000000000e+00 - - -6.3595020771026611e-01 5.8211249113082886e-01 - 4.3087210506200790e-02 -5.4251241683959961e-01 - <_> - 8.2915985584259033e-01 - - 1 2 93 4.5000000000000000e+00 0 -1 94 2929. -2 -3 95 - 3.9500000000000000e+01 - - 3.6084750294685364e-01 -5.3846013545989990e-01 - 3.9264413714408875e-01 -2.5116056203842163e-01 - <_> - 9.1550654172897339e-01 - - 1 2 96 1.2500000000000000e+01 0 -1 97 4.4500000000000000e+01 - -2 -3 98 7.5500000000000000e+01 - - -3.1323480606079102e-01 3.6048817634582520e-01 - 6.6347086429595947e-01 -6.9799762964248657e-01 - <_> - 1.0855576992034912e+00 - - 1 2 99 2.7500000000000000e+01 0 -1 100 - 8.5000000000000000e+00 -2 -3 101 5.5000000000000000e+00 - - -3.5093611478805542e-01 3.0252355337142944e-01 - 1.6355676949024200e-01 -8.4324830770492554e-01 - <_> - 1.0639545917510986e+00 - - 1 2 102 1.5000000000000000e+00 0 -1 103 - 3.7500000000000000e+01 -2 -3 104 5.1500000000000000e+01 - - -3.3908194303512573e-01 4.2347168922424316e-01 - -4.4102880358695984e-01 4.3833139538764954e-01 - <_> - 9.0562820434570312e-01 - - 1 2 105 4.5000000000000000e+00 0 -1 106 - 9.5000000000000000e+00 -2 -3 107 5.5000000000000000e+00 - - -5.8544105291366577e-01 3.8719829916954041e-01 - 1.4575521647930145e-01 -4.6634963154792786e-01 - <_> - 1.0761597156524658e+00 - - 1 2 108 1.4500000000000000e+01 0 -1 109 - 1.2545000000000000e+03 -2 -3 110 1.0850000000000000e+02 - - 2.5986677408218384e-01 -4.0740066766738892e-01 - 4.9753630161285400e-01 -6.2639516592025757e-01 - <_> - 1.5152643918991089e+00 - - 1 2 111 7.8250000000000000e+02 0 -1 112 - 1.2265000000000000e+03 -2 -3 113 2.1500000000000000e+01 - - -5.9889906644821167e-01 5.2061015367507935e-01 - 4.3910467624664307e-01 -2.6094654202461243e-01 - <_> - 1.4136078357696533e+00 - - 1 2 114 1.0500000000000000e+01 0 -1 115 1696. -2 -3 116 - 5.0000000000000000e-01 - - 1. -9.7255414724349976e-01 3.5954985022544861e-01 - -1.7254945635795593e-01 - <_> - 1.4225575923919678e+00 - - 1 2 117 3.8500000000000000e+01 0 -1 118 - 1.0250000000000000e+02 -2 -3 119 8.5000000000000000e+00 - - -2.4716213345527649e-01 3.7233117222785950e-01 - 4.1007906198501587e-01 -7.6787543296813965e-01 - <_> - 1.7332764863967896e+00 - - 1 2 120 6.5000000000000000e+00 0 -1 121 - 6.5000000000000000e+00 -2 -3 122 5.1500000000000000e+01 - - -8.0807107686996460e-01 3.1071880459785461e-01 - -7.6486444473266602e-01 -4.4724285602569580e-02 - <_> - 1.8922506570816040e+00 - - 1 2 123 5.0000000000000000e-01 0 -1 124 - 6.5000000000000000e+00 -2 -3 125 2.5175000000000000e+03 - - -4.5441693067550659e-01 5.4230731725692749e-01 - -3.1970790028572083e-01 7.5582736730575562e-01 - <_> - 1.6188565492630005e+00 - - 1 2 126 8.2450000000000000e+02 0 -1 127 - 1.5500000000000000e+01 -2 -3 128 1.2500000000000000e+01 - - -2.7339416742324829e-01 3.4306022524833679e-01 - 1.7286354303359985e-01 -6.8018329143524170e-01 - <_> - 1.6078552007675171e+00 - - 1 2 129 4.2050000000000000e+02 0 -1 130 263. -2 -3 131 - 8.4450000000000000e+02 - - 5.0138735771179199e-01 -4.4576519727706909e-01 - 2.3392482101917267e-01 -3.9459699392318726e-01 - <_> - 1.8623019456863403e+00 - - 1 2 132 2.0850000000000000e+02 0 -1 133 - 5.5000000000000000e+00 -2 -3 134 4.5000000000000000e+00 - - 4.0980271995067596e-02 -6.1965447664260864e-01 - -7.8912788629531860e-01 5.9828245639801025e-01 - <_> - 1.7021096944808960e+00 - - 1 2 135 4.2500000000000000e+01 0 -1 136 - 6.5000000000000000e+00 -2 -3 137 2.2500000000000000e+01 - - 4.1077250242233276e-01 -5.9424054622650146e-01 - 4.9294531345367432e-01 -1.6019217669963837e-01 - <_> - 1.9233746528625488e+00 - - 1 2 138 1.5000000000000000e+00 0 -1 139 - 1.6500000000000000e+01 -2 -3 140 8.7500000000000000e+01 - - -6.7251849174499512e-01 9.7932207584381104e-01 - 2.2126492857933044e-01 -6.2606680393218994e-01 - <_> - 2.1816830635070801e+00 - - 1 2 141 6.8500000000000000e+01 0 -1 142 - 9.6500000000000000e+01 -2 -3 143 4.3350000000000000e+02 - - -3.1670400500297546e-01 2.5830829143524170e-01 - -8.8838213682174683e-01 4.1476368904113770e-01 - <_> - 2.2655973434448242e+00 - - 1 2 144 1.6500000000000000e+01 0 -1 145 - 5.5000000000000000e+00 -2 -3 146 3.0500000000000000e+01 - - 5.9501928091049194e-01 -3.1914636492729187e-01 - -3.8668751716613770e-01 3.1921181082725525e-01 - <_> - 2.6427345275878906e+00 - - 1 2 147 6.5000000000000000e+00 0 -1 148 - 2.4500000000000000e+01 -2 -3 149 1.1500000000000000e+01 - - -4.5482164621353149e-01 4.6515238285064697e-01 - -5.1726001501083374e-01 2.0654375851154327e-01 - <_> - 1.9806412458419800e+00 - - 1 2 150 2.8850000000000000e+02 0 -1 151 - 5.5000000000000000e+00 -2 -3 152 1.1515000000000000e+03 - - -6.6209328174591064e-01 1.8325349688529968e-01 - 4.9089592695236206e-01 -8.4841215610504150e-01 - <_> - 2.4156589508056641e+00 - - 1 2 153 5.0000000000000000e-01 0 -1 154 2811. -2 -3 155 - 5.0000000000000000e-01 - - 4.3501755595207214e-01 -6.5484809875488281e-01 - 4.1686266660690308e-01 -4.1646206378936768e-01 - <_> - 2.7843391895294189e+00 - - 1 2 156 1.1350000000000000e+02 0 -1 157 - 3.3450000000000000e+02 -2 -3 158 3.5000000000000000e+00 - - 3.6868026852607727e-01 -6.1238104104995728e-01 - 6.8396532535552979e-01 -1.2954165227711201e-02 - <_> - 2.8158543109893799e+00 - - 1 2 159 4.2550000000000000e+02 0 -1 160 - 5.6050000000000000e+02 -2 -3 161 3.8500000000000000e+01 - - -5.9484893083572388e-01 3.1515140086412430e-02 - -7.0635133981704712e-01 6.2144660949707031e-01 - <_> - 3.0259079933166504e+00 - - 1 2 162 7.5000000000000000e+00 0 -1 163 - 4.5000000000000000e+00 -2 -3 164 1.6375000000000000e+03 - - -7.1446412801742554e-01 3.4102836251258850e-01 - 3.5541319847106934e-01 -4.5499989390373230e-01 - <_> - 3.3236474990844727e+00 - - 1 2 165 1.5000000000000000e+00 0 -1 166 - 1.0500000000000000e+01 -2 -3 167 5.0000000000000000e-01 - - -7.0691192150115967e-01 5.4418134689331055e-01 - 3.7381768226623535e-01 -3.6192026734352112e-01 - <_> - 3.2000217437744141e+00 - - 1 2 168 1.0500000000000000e+01 0 -1 169 - 6.5000000000000000e+00 -2 -3 170 3.5000000000000000e+00 - - -1.1653541773557663e-01 -8.1098204851150513e-01 - 3.6642596125602722e-01 -2.8248944878578186e-01 - <_> - 3.2462809085845947e+00 - - 1 2 171 1.9850000000000000e+02 0 -1 172 - 2.9500000000000000e+01 -2 -3 173 8.1500000000000000e+01 - - -3.9297759532928467e-01 5.5565875768661499e-01 - 5.2605623006820679e-01 -3.3815068006515503e-01 - <_> - 3.4681446552276611e+00 - - 1 2 174 5.7550000000000000e+02 0 -1 175 338. -2 -3 176 - 1.1515000000000000e+03 - - -7.6464962959289551e-01 9.0472358465194702e-01 - 6.2902992963790894e-01 -3.9204329252243042e-02 - <_> - 3.6334233283996582e+00 - - 1 2 177 4167. 0 -1 178 6.5000000000000000e+00 -2 -3 179 - 3.5000000000000000e+00 - - -9.1638332605361938e-01 1.6527870297431946e-01 - 4.8254090547561646e-01 -8.9626789093017578e-01 - <_> - 3.9205143451690674e+00 - - 1 2 180 6.5000000000000000e+00 0 -1 181 - 1.2500000000000000e+01 -2 -3 182 8.5000000000000000e+00 - - 6.7690986394882202e-01 -2.3904214799404144e-01 - -4.0556749701499939e-01 2.2106994688510895e-01 - <_> - 3.8434190750122070e+00 - - 1 2 183 5.0000000000000000e-01 0 -1 184 - 1.3500000000000000e+01 -2 -3 185 2.6500000000000000e+01 - - -3.2586407661437988e-01 4.4005537033081055e-01 - -6.4374852180480957e-01 1.0862501710653305e-01 - <_> - 3.7773578166961670e+00 - - 1 2 186 1.6500000000000000e+01 0 -1 187 - 9.5000000000000000e+00 -2 -3 188 8.5000000000000000e+00 - - -9.3096941709518433e-01 2.3926372826099396e-01 - 5.1413863897323608e-01 -5.5257624387741089e-01 - <_> - 4.1896114349365234e+00 - - 1 2 189 1.2500000000000000e+01 0 -1 190 - 7.5000000000000000e+00 -2 -3 191 36. - - -6.8173252046108246e-02 5.3156542778015137e-01 - -6.3870549201965332e-01 5.8901703357696533e-01 - <_> - 4.1023836135864258e+00 - - 1 2 192 6.7500000000000000e+01 0 -1 193 - 8.0500000000000000e+01 -2 -3 194 3.9500000000000000e+01 - - 1.7302609980106354e-01 -5.5641782283782959e-01 - -8.8721150159835815e-01 1. - <_> - 4.1807246208190918e+00 - - 1 2 195 1.5235000000000000e+03 0 -1 196 - 2.6952500000000000e+04 -2 -3 197 1.8235000000000000e+03 - - -3.0445727705955505e-01 7.7833265066146851e-01 - 8.7232065200805664e-01 -2.4321475625038147e-01 - <_> - 4.2723703384399414e+00 - - 1 2 198 6.5000000000000000e+00 0 -1 199 - 7.5000000000000000e+00 -2 -3 200 3.4175000000000000e+03 - - 1.3138349354267120e-01 -5.8236575126647949e-01 - 2.2224109619855881e-02 6.9834595918655396e-01 - <_> - 4.6446409225463867e+00 - - 1 2 201 2.1500000000000000e+01 0 -1 202 - 4.5000000000000000e+00 -2 -3 203 7.5000000000000000e+00 - - 1.9490295648574829e-01 -7.6766520738601685e-01 - 3.7227055430412292e-01 -2.2965273261070251e-01 - <_> - 4.2965531349182129e+00 - - 1 2 204 3.5000000000000000e+00 0 -1 205 - 1.1500000000000000e+01 -2 -3 206 1.5000000000000000e+00 - - -2.8419467806816101e-01 4.3421781063079834e-01 - -5.4377484321594238e-01 1.9981886446475983e-01 - <_> - 4.6640934944152832e+00 - - 1 2 207 705. 0 -1 208 1.7500000000000000e+01 -2 -3 209 - 5.0000000000000000e-01 - - 2.7177429199218750e-01 -8.8838618993759155e-01 - 3.6754038929939270e-01 -1.2962521612644196e-01 - <_> - 4.5903968811035156e+00 - - 1 2 210 3.4500000000000000e+01 0 -1 211 - 2.2850000000000000e+02 -2 -3 212 4.5000000000000000e+00 - - 7.0602458715438843e-01 -7.7238667011260986e-01 - 4.3168050050735474e-01 -1.4236643910408020e-01 - <_> - 4.4601187705993652e+00 - - 1 2 213 1.8500000000000000e+01 0 -1 214 - 5.0000000000000000e-01 -2 -3 215 1.6450000000000000e+02 - - 7.2294287383556366e-02 -4.4637727737426758e-01 - 5.0045186281204224e-01 -8.8895571231842041e-01 - <_> - 4.6810216903686523e+00 - - 1 2 216 1.5000000000000000e+00 0 -1 217 - 3.5000000000000000e+00 -2 -3 218 2.2500000000000000e+01 - - 7.5774848461151123e-01 -8.5371148586273193e-01 - -3.8080200552940369e-01 2.2090284526348114e-01 - <_> - 4.5454678535461426e+00 - - 1 2 219 5.0000000000000000e-01 0 -1 220 - 2.4500000000000000e+01 -2 -3 221 1.3950000000000000e+02 - - -1.9623221457004547e-01 9.1209959983825684e-01 - 2.2579464316368103e-01 -3.2021987438201904e-01 - <_> - 4.7205095291137695e+00 - - 1 2 222 6.8250000000000000e+02 0 -1 223 - 5.8750000000000000e+02 -2 -3 224 4.9250000000000000e+02 - - -6.1928713321685791e-01 4.4073671102523804e-01 - 5.2129870653152466e-01 -9.0712592005729675e-02 - <_> - 5.0539321899414062e+00 - - 1 2 225 1.5500000000000000e+01 0 -1 226 - 6.3500000000000000e+01 -2 -3 227 3.5000000000000000e+00 - - 3.9318233728408813e-01 -3.8358560204505920e-01 - 4.2106309533119202e-01 -5.5091488361358643e-01 - <_> - 5.2054772377014160e+00 - - 1 2 228 3.1500000000000000e+01 0 -1 229 - 2.3500000000000000e+01 -2 -3 230 3.3750000000000000e+02 - - -6.1581993103027344e-01 7.1099334955215454e-01 - 2.9412022233009338e-01 -7.1934843063354492e-01 - <_> - 5.1629271507263184e+00 - - 1 2 231 3.2950000000000000e+02 0 -1 232 - 5.0000000000000000e-01 -2 -3 233 1864. - - 2.0024216175079346e-01 -3.3125820755958557e-01 - 9.7632443904876709e-01 -8.2965487241744995e-01 - <_> - 5.4650130271911621e+00 - - 1 2 234 4.0550000000000000e+02 0 -1 235 - 2.7750000000000000e+02 -2 -3 236 5.7155000000000000e+03 - - 2.2284466028213501e-01 -4.8526307940483093e-01 - 8.1116855144500732e-01 -1.5218812972307205e-02 - <_> - 5.4984669685363770e+00 - - 1 2 237 4.5000000000000000e+00 0 -1 238 - 1.7500000000000000e+01 -2 -3 239 2.9500000000000000e+01 - - -6.3221347332000732e-01 3.8014096021652222e-01 - -6.2983202934265137e-01 1.1483613401651382e-01 - <_> - 5.4328503608703613e+00 - - 1 2 240 2.2500000000000000e+01 0 -1 241 - 3.2750000000000000e+02 -2 -3 242 5.5250000000000000e+02 - - 2.7665451169013977e-01 -4.1230320930480957e-01 - 5.8497339487075806e-01 -9.2561680078506470e-01 - <_> - 5.2271656990051270e+00 - - 1 2 243 2.5000000000000000e+00 0 -1 244 - 1.5000000000000000e+00 -2 -3 245 4.1500000000000000e+01 - - -6.2440222501754761e-01 3.4950828552246094e-01 - -4.4587394595146179e-01 3.7627801299095154e-01 - <_> - 5.7503991127014160e+00 - - 1 2 246 2.5500000000000000e+01 0 -1 247 - 1.7500000000000000e+01 -2 -3 248 1742. - - 1.7403741180896759e-01 -4.8115825653076172e-01 - -8.1405687332153320e-01 5.2323335409164429e-01 - <_> - 5.9725828170776367e+00 - - 1 2 249 2.5000000000000000e+00 0 -1 250 - 1.8750000000000000e+02 -2 -3 251 3.0750000000000000e+02 - - 5.0755202770233154e-01 -9.1562610864639282e-01 - 2.2218362987041473e-01 -5.9081828594207764e-01 - <_> - 5.9053583145141602e+00 - - 1 2 252 4.4500000000000000e+01 0 -1 253 - 7.5000000000000000e+00 -2 -3 254 2.3500000000000000e+01 - - 2.7661845088005066e-01 -7.2863763570785522e-01 - 2.9604527354240417e-01 -3.9353659749031067e-01 - <_> - 6.2247257232666016e+00 - - 1 2 255 2.7915000000000000e+03 0 -1 256 - 5.0000000000000000e-01 -2 -3 257 2.7750000000000000e+02 - - 5.7657641172409058e-01 -5.8752876520156860e-01 - 7.3920065164566040e-01 -5.6199613958597183e-02 - <_> - 6.3211832046508789e+00 - - 1 2 258 1.5000000000000000e+00 0 -1 259 - 1.5950000000000000e+02 -2 -3 260 9.5000000000000000e+00 - - 3.8729599118232727e-01 -8.2186138629913330e-01 - -7.5912064313888550e-01 -9.1310448944568634e-02 - <_> - 6.1939978599548340e+00 - - 1 2 261 5.0000000000000000e-01 0 -1 262 - 1.1500000000000000e+01 -2 -3 263 2.5000000000000000e+00 - - -6.8085348606109619e-01 3.7691861391067505e-01 - 3.6999684572219849e-01 -4.1802382469177246e-01 - <_> - 6.5674057006835938e+00 - - 1 2 264 4.6500000000000000e+01 0 -1 265 - 1.6500000000000000e+01 -2 -3 266 2.5500000000000000e+01 - - -2.4361716583371162e-02 -7.4328392744064331e-01 - 3.7340793013572693e-01 -3.1576988101005554e-01 - <_> - 6.4908089637756348e+00 - - 1 2 267 6.5000000000000000e+00 0 -1 268 - 1.5000000000000000e+00 -2 -3 269 5.0000000000000000e-01 - - -9.5202457904815674e-01 7.6004970073699951e-01 - 4.0044522285461426e-01 -1.8293106555938721e-01 - <_> - 6.7305116653442383e+00 - - 1 2 270 1.3450000000000000e+02 0 -1 271 69. -2 -3 272 - 2.5500000000000000e+01 - - -3.7816595286130905e-02 -9.0281504392623901e-01 - -5.4295367002487183e-01 2.3970291018486023e-01 - <_> - 6.8999171257019043e+00 - - 1 2 273 2.5000000000000000e+00 0 -1 274 - 2.5000000000000000e+00 -2 -3 275 1.5000000000000000e+00 - - -5.0667393207550049e-01 3.6585667729377747e-01 - 3.1221818923950195e-01 -4.8534518480300903e-01 - <_> - 7.0018959045410156e+00 - - 1 2 276 3.5000000000000000e+00 0 -1 277 - 3.5000000000000000e+00 -2 -3 278 266. - - -3.6587709188461304e-01 6.2320345640182495e-01 - -3.9827787876129150e-01 2.4151444435119629e-01 - <_> - 7.1498341560363770e+00 - - 1 2 279 6.5000000000000000e+00 0 -1 280 - 3.7500000000000000e+01 -2 -3 281 3.3550000000000000e+02 - - 5.1520365476608276e-01 -6.4510118961334229e-01 - -4.8505461215972900e-01 1.4793802797794342e-01 - <_> - 7.0538568496704102e+00 - - 1 2 282 1540. 0 -1 283 2.2500000000000000e+01 -2 -3 284 - 5.0500000000000000e+01 - - -2.7819830179214478e-01 3.7289941310882568e-01 - -5.9334021806716919e-01 5.5907440185546875e-01 - <_> - 7.3145952224731445e+00 - - 1 2 285 5.0000000000000000e-01 0 -1 286 - 5.0500000000000000e+01 -2 -3 287 5.0000000000000000e-01 - - -6.9114875793457031e-01 4.3989965319633484e-01 - 2.9516109824180603e-01 -5.3384852409362793e-01 - <_> - 7.2128500938415527e+00 - - 1 2 288 7.5000000000000000e+00 0 -1 289 - 8.5000000000000000e+00 -2 -3 290 8.7500000000000000e+01 - - -5.5619347095489502e-01 5.4719102382659912e-01 - 3.2581725716590881e-01 -6.7037367820739746e-01 - <_> - 7.0432367324829102e+00 - - 1 2 291 2.5000000000000000e+00 0 -1 292 - 3.5000000000000000e+00 -2 -3 293 1.6805000000000000e+03 - - -1.8180048465728760e-01 4.9322417378425598e-01 - 1.2089827656745911e-01 -5.3679817914962769e-01 - <_> - 7.1085200309753418e+00 - - 1 2 294 8.0250000000000000e+02 0 -1 295 - 3.5000000000000000e+00 -2 -3 296 1.5465000000000000e+03 - - 4.4113153219223022e-01 -4.7889050841331482e-01 - 4.8183086514472961e-01 -2.7461019158363342e-01 - <_> - 7.4934172630310059e+00 - - 1 2 297 5.5000000000000000e+00 0 -1 298 - 9.5000000000000000e+00 -2 -3 299 5.0000000000000000e-01 - - -7.8466171026229858e-01 3.8489729166030884e-01 - 1.2428891658782959e-01 -5.3000146150588989e-01 - <_> - 7.7679367065429688e+00 - - 1 2 300 4.5000000000000000e+00 0 -1 301 - 3.8500000000000000e+01 -2 -3 302 1.0500000000000000e+01 - - -5.8519446849822998e-01 1.3908083736896515e-01 - 3.4237712621688843e-01 -5.5784845352172852e-01 - <_> - 8.2031955718994141e+00 - - 1 2 303 1.0500000000000000e+01 0 -1 304 - 1.5000000000000000e+00 -2 -3 305 1.1500000000000000e+01 - - -3.8500145077705383e-01 4.3525907397270203e-01 - -7.3580604791641235e-01 -1.5477402135729790e-02 - <_> - 7.8415699005126953e+00 - - 1 2 306 1.1500000000000000e+01 0 -1 307 - 1.9950000000000000e+02 -2 -3 308 2.1050000000000000e+02 - - 3.0834931135177612e-01 -5.2214068174362183e-01 - -6.1229497194290161e-01 1.6261228919029236e-01 - <_> - 8.1340169906616211e+00 - - 1 2 309 4.4500000000000000e+01 0 -1 310 - 5.0000000000000000e-01 -2 -3 311 2.7750000000000000e+02 - - 3.8989096879959106e-01 -4.0270605683326721e-01 - -3.7438669800758362e-01 4.9117839336395264e-01 - <_> - 8.0494565963745117e+00 - - 1 2 312 2.9215000000000000e+03 0 -1 313 5981. -2 -3 314 - 1.4500000000000000e+01 - - -8.4560506045818329e-02 5.6669616699218750e-01 - -6.5312331914901733e-01 1.4199882745742798e-01 - <_> - 8.1713457107543945e+00 - - 1 2 315 8.1500000000000000e+01 0 -1 316 66. -2 -3 317 371. - - 4.5325097441673279e-01 -3.0569469928741455e-01 - 5.9206598997116089e-01 -6.7238986492156982e-01 - <_> - 8.2347335815429688e+00 - - 1 2 318 4.1450000000000000e+02 0 -1 319 - 5.0000000000000000e-01 -2 -3 320 410. - - 3.8724437355995178e-01 -3.1869423389434814e-01 - 8.7538170814514160e-01 -9.7314991056919098e-02 - <_> - 8.5628070831298828e+00 - - 1 2 321 1.0500000000000000e+01 0 -1 322 - 5.0000000000000000e-01 -2 -3 323 2.5000000000000000e+00 - - 7.2377610206604004e-01 -8.4155076742172241e-01 - 3.2807359099388123e-01 -2.0454038679599762e-01 - <_> - 8.5264968872070312e+00 - - 1 2 324 9.9150000000000000e+02 0 -1 325 - 7.0350000000000000e+02 -2 -3 326 6. - - 1.8747280538082123e-01 -3.3632183074951172e-01 - 8.6560744047164917e-01 -9.4016164541244507e-01 - <_> - 8.5532627105712891e+00 - - 1 2 327 1.1500000000000000e+01 0 -1 328 - 2.7450000000000000e+02 -2 -3 329 5.0000000000000000e-01 - - 8.5004931688308716e-01 -8.5131084918975830e-01 - 4.0861058235168457e-01 -1.2481645494699478e-01 - <_> - 8.7125473022460938e+00 - - 1 2 330 4.9350000000000000e+02 0 -1 331 - 1.0500000000000000e+01 -2 -3 332 488. - - 3.3095937967300415e-01 -9.6550559997558594e-01 - 1.5928384661674500e-01 -7.0109528303146362e-01 - <_> - 8.5748119354248047e+00 - - 1 2 333 5.8750000000000000e+02 0 -1 334 - 5.3965000000000000e+03 -2 -3 335 1.9550000000000000e+02 - - -5.2717298269271851e-01 7.5915068387985229e-01 - 6.2651741504669189e-01 -7.6558768749237061e-02 - <_> - 8.5311050415039062e+00 - - 1 2 336 3.5000000000000000e+00 0 -1 337 - 1.8500000000000000e+01 -2 -3 338 1.1500000000000000e+01 - - -5.9637790918350220e-01 6.7646257579326630e-02 - 6.4769101142883301e-01 -3.3726450055837631e-02 - <_> - 9.0640134811401367e+00 - - 1 2 339 1.5000000000000000e+00 0 -1 340 - 2.5000000000000000e+00 -2 -3 341 3.4500000000000000e+01 - - -6.8097436428070068e-01 6.0266649723052979e-01 - -3.0453455448150635e-01 4.0144833922386169e-01 - <_> - 8.9831085205078125e+00 - - 1 2 342 2.5000000000000000e+00 0 -1 343 - 2.1750000000000000e+02 -2 -3 344 3.1850000000000000e+02 - - 9.3521779775619507e-01 -8.8511615991592407e-01 - -8.0904886126518250e-02 4.7593075037002563e-01 - <_> - 9.3769168853759766e+00 - - 1 2 345 1.8345000000000000e+03 0 -1 346 7548. -2 -3 347 - 2.5000000000000000e+00 - - -9.6914649009704590e-01 8.2535630464553833e-01 - 9.6199281513690948e-02 -4.2918723821640015e-01 - <_> - 9.3018980026245117e+00 - - 1 2 348 3.4500000000000000e+01 0 -1 349 - 5.0000000000000000e-01 -2 -3 350 4.5000000000000000e+00 - - 7.7495819330215454e-01 -7.7019518613815308e-01 - -6.7532777786254883e-01 2.1935020387172699e-01 - <_> - 9.5473661422729492e+00 - - 1 2 351 3.5000000000000000e+00 0 -1 352 - 3.8150000000000000e+02 -2 -3 353 2.5000000000000000e+00 - - 2.4546769261360168e-01 -9.4206953048706055e-01 - 5.2967166900634766e-01 -5.7282263040542603e-01 - <_> - 9.3910045623779297e+00 - - 1 2 354 4.2500000000000000e+01 0 -1 355 - 2.5000000000000000e+00 -2 -3 356 2.5000000000000000e+00 - - 4.9605733156204224e-01 -8.9919465780258179e-01 - 4.6279174089431763e-01 -1.5636166930198669e-01 - <_> - 9.2007036209106445e+00 - - 1 2 357 3.0750000000000000e+02 0 -1 358 - 5.0000000000000000e-01 -2 -3 359 1.7500000000000000e+01 - - 9.5931455492973328e-02 -5.2677857875823975e-01 - -6.8146902322769165e-01 4.2670670151710510e-01 - <_> - 9.4172534942626953e+00 - - 1 2 360 436. 0 -1 361 1.0500000000000000e+01 -2 -3 362 - 1.4150000000000000e+02 - - -4.8916128277778625e-01 2.1654944121837616e-01 - -9.5991367101669312e-01 2.0731329917907715e-02 - <_> - 9.3878002166748047e+00 - - 1 2 363 2.1500000000000000e+01 0 -1 364 - 5.0000000000000000e-01 -2 -3 365 7.5000000000000000e+00 - - 6.1134243011474609e-01 -1.5622694790363312e-01 - -2.9453342780470848e-02 -6.6399675607681274e-01 - <_> - 9.3314304351806641e+00 - - 1 2 366 5.6500000000000000e+01 0 -1 367 - 2.3500000000000000e+01 -2 -3 368 4.5000000000000000e+00 - - -7.5016134977340698e-01 6.0379421710968018e-01 - 5.0015795230865479e-01 -5.6369733065366745e-02 - <_> - 9.8574962615966797e+00 - - 1 2 369 3.5000000000000000e+00 0 -1 370 2013. -2 -3 371 - 1.9500000000000000e+01 - - 8.2091175019741058e-02 -6.4141482114791870e-01 - -1.7478708922863007e-01 5.2606624364852905e-01 - <_> - 1.0064584732055664e+01 - - 1 2 372 2.0650000000000000e+02 0 -1 373 - 1.7500000000000000e+01 -2 -3 374 1.0450000000000000e+02 - - -1.0901508852839470e-02 -6.5456998348236084e-01 - 6.3896632194519043e-01 -1.6473773121833801e-01 - <_> - 1.0252257347106934e+01 - - 1 2 375 5.5000000000000000e+00 0 -1 376 - 3.4500000000000000e+01 -2 -3 377 5.5000000000000000e+00 - - 3.2374709844589233e-01 -5.0062644481658936e-01 - -7.0661611855030060e-02 -7.5508368015289307e-01 - <_> - 1.0398225784301758e+01 - - 1 2 378 2.5000000000000000e+00 0 -1 379 - 5.2500000000000000e+01 -2 -3 380 1.8785000000000000e+03 - - -9.0781456232070923e-01 1. -6.3530296087265015e-01 - 1.4596807956695557e-01 - <_> - 1.0281527519226074e+01 - - 1 2 381 4.8500000000000000e+01 0 -1 382 - 1.2500000000000000e+01 -2 -3 383 2.7950000000000000e+02 - - 1.5367124974727631e-01 -8.4021937847137451e-01 - 4.6640846133232117e-01 -1.1669804900884628e-01 - <_> - 1.0402153968811035e+01 - - 1 2 384 6.5750000000000000e+02 0 -1 385 - 2.5000000000000000e+00 -2 -3 386 1.2991500000000000e+04 - - 1.8093550205230713e-01 -3.1117281317710876e-01 - 8.3136463165283203e-01 -9.4209736585617065e-01 - <_> - 1.0749721527099609e+01 - - 1 2 387 1.5500000000000000e+01 0 -1 388 3147. -2 -3 389 - 5.0000000000000000e-01 - - 5.8778691291809082e-01 -8.4557241201400757e-01 - 3.5276123881340027e-01 -1.5734243392944336e-01 - <_> - 1.0613196372985840e+01 - - 1 2 390 2.9405000000000000e+03 0 -1 391 - 5.0000000000000000e-01 -2 -3 392 4.5500000000000000e+01 - - 3.9040172100067139e-01 -1.3652552664279938e-01 - -9.2412209510803223e-01 -8.2783259451389313e-02 - <_> - 1.0694108009338379e+01 - - 1 2 393 5.0500000000000000e+01 0 -1 394 - 5.0000000000000000e-01 -2 -3 395 4.5000000000000000e+00 - - 4.7963955998420715e-01 -7.4252939224243164e-01 - -6.8665945529937744e-01 1.9869653880596161e-01 - <_> - 1.0847300529479980e+01 - - 1 2 396 1.4500000000000000e+01 0 -1 397 - 5.5000000000000000e+00 -2 -3 398 1.5000000000000000e+00 - - -6.5649849176406860e-01 3.1507906317710876e-01 - 5.9824740886688232e-01 -4.3184515833854675e-01 - <_> - 1.0666165351867676e+01 - - 1 2 399 2.5000000000000000e+00 0 -1 400 - 4.5000000000000000e+00 -2 -3 401 5.0000000000000000e-01 - - -3.0361318588256836e-01 4.3227225542068481e-01 - 3.5962799191474915e-01 -4.3973237276077271e-01 - <_> - 1.0870504379272461e+01 - - 1 2 402 2.6500000000000000e+01 0 -1 403 - 1.5000000000000000e+00 -2 -3 404 8.4500000000000000e+01 - - 1.6933162510395050e-01 -5.0010979175567627e-01 - -3.3642402291297913e-01 4.9337503314018250e-01 - <_> - 1.0975853919982910e+01 - - 1 2 405 2.5000000000000000e+00 0 -1 406 - 1.4795000000000000e+03 -2 -3 407 1.5000000000000000e+00 - - 5.9212744235992432e-02 -6.0414147377014160e-01 - 5.3754031658172607e-01 -1.4943325519561768e-01 - <_> - 1.1088579177856445e+01 - - 1 2 408 1.9500000000000000e+01 0 -1 409 - 8.0500000000000000e+01 -2 -3 410 2.5000000000000000e+00 - - -5.4455469362437725e-03 7.1131867170333862e-01 - 1.2728694081306458e-01 -5.3219115734100342e-01 - <_> - 1.1411317825317383e+01 - - 1 2 411 6.5000000000000000e+00 0 -1 412 - 5.0000000000000000e-01 -2 -3 413 5.0000000000000000e-01 - - -9.8449540138244629e-01 7.5238209962844849e-01 - 3.2273903489112854e-01 -2.0153416693210602e-01 - <_> - 1.1409852027893066e+01 - - 1 2 414 3.2650000000000000e+02 0 -1 415 - 4.5000000000000000e+00 -2 -3 416 1.0500000000000000e+01 - - 1.5437091886997223e-01 -3.4433943033218384e-01 - 8.3089745044708252e-01 -8.7578713893890381e-01 - <_> - 1.1487524032592773e+01 - - 1 2 417 9.4500000000000000e+01 0 -1 418 - 5.3150000000000000e+02 -2 -3 419 1.5000000000000000e+00 - - 7.5558461248874664e-02 -7.0222413539886475e-01 - 4.5731905102729797e-01 -1.0453109443187714e-01 - <_> - 1.1415844917297363e+01 - - 1 2 420 2.0350000000000000e+02 0 -1 421 - 5.1500000000000000e+01 -2 -3 422 1.4350000000000000e+02 - - -8.8595420122146606e-02 -8.2399624586105347e-01 - 7.0543432235717773e-01 8.3339767297729850e-04 - <_> - 1.1137701034545898e+01 - - 1 2 423 1.1500000000000000e+01 0 -1 424 - 2.7850000000000000e+02 -2 -3 425 1231. - - 2.5673583149909973e-01 -2.7814364433288574e-01 - 7.7550095319747925e-01 -6.8776667118072510e-01 - <_> - 1.1352587699890137e+01 - - 1 2 426 1.5000000000000000e+00 0 -1 427 - 4.2500000000000000e+01 -2 -3 428 436. - - -8.6447370052337646e-01 3.8263612985610962e-01 - 2.1488623321056366e-01 -6.5995728969573975e-01 - <_> - 1.1502726554870605e+01 - - 1 2 429 4.5000000000000000e+00 0 -1 430 - 8.9500000000000000e+01 -2 -3 431 1.2500000000000000e+01 - - -5.1148355007171631e-01 4.3896585702896118e-01 - -4.8310482501983643e-01 1.8991161882877350e-01 - <_> - 1.1872124671936035e+01 - - 1 2 432 5.0000000000000000e-01 0 -1 433 - 4.5000000000000000e+00 -2 -3 434 1.1500000000000000e+01 - - -5.1016438007354736e-01 3.6939758062362671e-01 - 1.1107332259416580e-01 -6.3128584623336792e-01 - <_> - 1.1897380828857422e+01 - - 1 2 435 1.5000000000000000e+00 0 -1 436 - 8.5000000000000000e+00 -2 -3 437 1.4500000000000000e+01 - - -7.3261368274688721e-01 5.7636475563049316e-01 - -4.3446037173271179e-01 2.1413095295429230e-01 - <_> - 1.1853853225708008e+01 - - 1 2 438 3706. 0 -1 439 1.5000000000000000e+00 -2 -3 440 - 4410. - - 5.6994712352752686e-01 -4.3527409434318542e-02 - -7.2693550586700439e-01 4.1713526844978333e-01 - <_> - 1.1845816612243652e+01 - - 1 2 441 6.5000000000000000e+00 0 -1 442 - 1.5500000000000000e+01 -2 -3 443 5.3500000000000000e+01 - - -8.0371825024485588e-03 -5.7360154390335083e-01 - 5.8637946844100952e-01 -4.5183259248733521e-01 - <_> - 1.1606418609619141e+01 - - 1 2 444 5.7500000000000000e+01 0 -1 445 - 1.3650000000000000e+02 -2 -3 446 3.3595000000000000e+03 - - 4.9911895394325256e-01 -5.3746724128723145e-01 - -2.3939760029315948e-01 3.7778580188751221e-01 - <_> - 1.1980805397033691e+01 - - 1 2 447 4.5000000000000000e+00 0 -1 448 - 3.5000000000000000e+00 -2 -3 449 1.1500000000000000e+01 - - -7.3552447557449341e-01 3.7438639998435974e-01 - -4.0720772743225098e-01 4.5558989048004150e-01 - <_> - 1.2240980148315430e+01 - - 1 2 450 2.0950000000000000e+02 0 -1 451 - 3.5000000000000000e+00 -2 -3 452 2.0450000000000000e+02 - - 2.6017466187477112e-01 -4.3274480104446411e-01 - 6.6186487674713135e-01 -1.9433960318565369e-01 - <_> - 1.1877487182617188e+01 - - 1 2 453 8.7500000000000000e+01 0 -1 454 - 3.3500000000000000e+01 -2 -3 455 1.9500000000000000e+01 - - -3.6349293589591980e-01 2.8466138243675232e-01 - -8.9488905668258667e-01 2.0050047338008881e-01 - <_> - 1.2315251350402832e+01 - - 1 2 456 6.5000000000000000e+00 0 -1 457 - 2.8500000000000000e+01 -2 -3 458 1.1500000000000000e+01 - - -4.2718878388404846e-01 4.3776413798332214e-01 - -4.0096122026443481e-01 4.4375243782997131e-01 - <_> - 1.2738058090209961e+01 - - 1 2 459 2.5000000000000000e+00 0 -1 460 - 5.5000000000000000e+00 -2 -3 461 4.2050000000000000e+02 - - -1. 4.2698940634727478e-01 1.3992704451084137e-01 - -4.4792297482490540e-01 - <_> - 1.2678054809570312e+01 - - 1 2 462 4.6035000000000000e+03 0 -1 463 - 1.2500000000000000e+01 -2 -3 464 1.6885000000000000e+03 - - -6.3804382085800171e-01 2.8076967597007751e-01 - 7.0788478851318359e-01 -6.0002621263265610e-02 - <_> - 1.2586655616760254e+01 - - 1 2 465 2.1150000000000000e+02 0 -1 466 - 3.5000000000000000e+00 -2 -3 467 3.1365000000000000e+03 - - 3.2408985495567322e-01 -3.3107626438140869e-01 - 8.7245899438858032e-01 -1.1116035282611847e-01 - <_> - 1.2680603027343750e+01 - - 1 2 468 2.2500000000000000e+01 0 -1 469 - 4.5500000000000000e+01 -2 -3 470 4.8500000000000000e+01 - - 9.3947365880012512e-02 -5.0669384002685547e-01 - 6.3860702514648438e-01 -5.6095314025878906e-01 - <_> - 1.2646597862243652e+01 - - 1 2 471 5.7750000000000000e+02 0 -1 472 2607. -2 -3 473 - 8.4850000000000000e+02 - - -8.0222898721694946e-01 4.9571409821510315e-01 - 6.9677603244781494e-01 -3.4005377441644669e-02 - <_> - 1.3080556869506836e+01 - - 1 2 474 3.5000000000000000e+00 0 -1 475 - 2.9025000000000000e+03 -2 -3 476 1.4500000000000000e+01 - - 6.3582272268831730e-03 -7.6159459352493286e-01 - 4.4750732183456421e-01 -1.8545417487621307e-01 - <_> - 1.3341848373413086e+01 - - 1 2 477 2.5000000000000000e+00 0 -1 478 - 1.3500000000000000e+01 -2 -3 479 5.0000000000000000e-01 - - -4.0977507829666138e-01 3.4295764565467834e-01 - 9.3431934714317322e-02 -7.1162647008895874e-01 - <_> - 1.2996747970581055e+01 - - 1 2 480 5.5000000000000000e+00 0 -1 481 - 6.5000000000000000e+00 -2 -3 482 3.1450000000000000e+02 - - -5.9179306030273438e-01 5.3183627128601074e-01 - 2.9362958669662476e-01 -5.2066570520401001e-01 - <_> - 1.3275168418884277e+01 - - 1 2 483 5.0000000000000000e-01 0 -1 484 - 5.8550000000000000e+02 -2 -3 485 1.2025000000000000e+03 - - -4.2056784033775330e-01 5.3556817770004272e-01 - 5.9011709690093994e-01 -3.4758779406547546e-01 - <_> - 1.3466418266296387e+01 - - 1 2 486 5.5000000000000000e+00 0 -1 487 - 5.0000000000000000e-01 -2 -3 488 14734. - - 4.4770663976669312e-01 -8.6989867687225342e-01 - 1.9124945998191833e-01 -7.6927727460861206e-01 - <_> - 1.3708694458007812e+01 - - 1 2 489 3.5150000000000000e+02 0 -1 490 - 2.4500000000000000e+01 -2 -3 491 1.2500000000000000e+01 - - 5.4361712932586670e-01 -9.3802767992019653e-01 - 2.4227620661258698e-01 -3.2380709052085876e-01 - <_> - 1.3621360778808594e+01 - - 1 2 492 1.5750000000000000e+02 0 -1 493 45. -2 -3 494 - 6.5000000000000000e+00 - - 4.8756289482116699e-01 -6.2756335735321045e-01 - 5.6488978862762451e-01 -8.7333582341670990e-02 - <_> - 1.3719803810119629e+01 - - 1 2 495 1.4500000000000000e+01 0 -1 496 - 3.2785000000000000e+03 -2 -3 497 1.2500000000000000e+01 - - -8.3579055964946747e-02 -9.0902733802795410e-01 - 4.0620484948158264e-01 -2.2033128142356873e-01 - <_> - 1.3743362426757812e+01 - - 1 2 498 1.7500000000000000e+01 0 -1 499 - 2.5500000000000000e+01 -2 -3 500 446. - - 5.8430969715118408e-02 -5.6837719678878784e-01 - -1.8840381503105164e-01 6.9564127922058105e-01 - <_> - 1.3924007415771484e+01 - - 1 2 501 8.0450000000000000e+02 0 -1 502 - 4.0500000000000000e+01 -2 -3 503 2.5000000000000000e+00 - - -4.7573506832122803e-01 2.6540222764015198e-01 - -3.4159180521965027e-01 5.4993849992752075e-01 - <_> - 1.4126693725585938e+01 - - 1 2 504 2.5000000000000000e+00 0 -1 505 3876. -2 -3 506 - 7.5000000000000000e+00 - - 4.1770899295806885e-01 -3.8963168859481812e-01 - 1.9346395134925842e-01 -5.6205403804779053e-01 - <_> - 1.4377063751220703e+01 - - 1 2 507 1.0630500000000000e+04 0 -1 508 - 1.7500000000000000e+01 -2 -3 509 5.0000000000000000e-01 - - 4.2469942569732666e-01 -6.3991433382034302e-01 - 7.5341060757637024e-02 -5.3553485870361328e-01 - <_> - 1.4237608909606934e+01 - - 1 2 510 5.7500000000000000e+01 0 -1 511 - 6.5000000000000000e+00 -2 -3 512 2.8500000000000000e+01 - - 5.4694686084985733e-02 -5.2880686521530151e-01 - -3.4901857376098633e-01 4.7299972176551819e-01 - <_> - 1.4564194679260254e+01 - - 1 2 513 7.5000000000000000e+00 0 -1 514 - 8.5000000000000000e+00 -2 -3 515 4.5000000000000000e+00 - - -5.7572060823440552e-01 4.0378063917160034e-01 - 1.7233282327651978e-01 -5.5302166938781738e-01 - <_> - 1.4479125976562500e+01 - - 1 2 516 4.1500000000000000e+01 0 -1 517 - 5.0000000000000000e-01 -2 -3 518 3.5000000000000000e+00 - - 6.9208496809005737e-01 -9.3342530727386475e-01 - 4.8711183667182922e-01 -8.5068866610527039e-02 - <_> - 1.4771840095520020e+01 - - 1 2 519 3.2350000000000000e+02 0 -1 520 - 6.8500000000000000e+01 -2 -3 521 2.9050000000000000e+02 - - -5.6921553611755371e-01 7.5075703859329224e-01 - 3.0680647492408752e-01 -5.3018033504486084e-01 - <_> - 1.4921194076538086e+01 - - 1 2 522 9.5000000000000000e+00 0 -1 523 178. -2 -3 524 - 1.5000000000000000e+00 - - 2.7555197477340698e-01 -8.4987080097198486e-01 - 7.1478825807571411e-01 -4.7535741329193115e-01 - <_> - 1.5011672019958496e+01 - - 1 2 525 3.5500000000000000e+01 0 -1 526 - 4.9450000000000000e+02 -2 -3 527 151. - - -4.1447910666465759e-01 9.0478152036666870e-02 - 7.2348231077194214e-01 -8.4134203195571899e-01 - <_> - 1.5009381294250488e+01 - - 1 2 528 1.0075000000000000e+03 0 -1 529 - 4.6135000000000000e+03 -2 -3 530 5.0000000000000000e-01 - - -1.3591668009757996e-01 5.0908648967742920e-01 - 4.3699756264686584e-02 -6.3745105266571045e-01 - <_> - 1.4872577667236328e+01 - - 1 2 531 4.9500000000000000e+01 0 -1 532 - 7.5000000000000000e+00 -2 -3 533 2.6500000000000000e+01 - - 5.5888742208480835e-02 -5.8190774917602539e-01 - -7.9333829879760742e-01 5.4325503110885620e-01 - <_> - 1.5080644607543945e+01 - - 1 2 534 4.7500000000000000e+01 0 -1 535 - 1.4500000000000000e+01 -2 -3 536 2.7500000000000000e+01 - - -8.9569383859634399e-01 2.0806635916233063e-01 - -7.5062823295593262e-01 2.4852557480335236e-01 - <_> - 1.5080853462219238e+01 - - 1 2 537 6.5000000000000000e+00 0 -1 538 - 8.5000000000000000e+00 -2 -3 539 3.8050000000000000e+02 - - -6.1480957269668579e-01 3.2939058542251587e-01 - 4.0805706381797791e-01 -4.6099272370338440e-01 - <_> - 1.4875501632690430e+01 - - 1 2 540 1.0500000000000000e+01 0 -1 541 - 1.5000000000000000e+00 -2 -3 542 478. - - -9.0150666236877441e-01 3.4228125214576721e-01 - -5.9740513563156128e-01 8.7162934243679047e-02 - <_> - 1.5382561683654785e+01 - - 1 2 543 5.5000000000000000e+00 0 -1 544 - 5.0000000000000000e-01 -2 -3 545 2.5500000000000000e+01 - - -3.2944935560226440e-01 5.0705975294113159e-01 - -3.9558005332946777e-01 3.1945833563804626e-01 - <_> - 1.5631669998168945e+01 - - 1 2 546 1.5000000000000000e+00 0 -1 547 - 1.1500000000000000e+01 -2 -3 548 3.5000000000000000e+00 - - -5.0148051977157593e-01 3.6997869610786438e-01 - 7.7569979429244995e-01 -3.7318921089172363e-01 - <_> - 1.5227413177490234e+01 - - 1 2 549 5.5000000000000000e+00 0 -1 550 - 2.5000000000000000e+00 -2 -3 551 8.2500000000000000e+01 - - 9.7206316888332367e-02 -5.2512657642364502e-01 - 5.3593277931213379e-01 -5.2903693914413452e-01 - <_> - 1.5712855339050293e+01 - - 1 2 552 1.5000000000000000e+00 0 -1 553 - 1.1500000000000000e+01 -2 -3 554 1.5000000000000000e+00 - - -5.5320370197296143e-01 5.5974000692367554e-01 - -4.7809949517250061e-01 1.2362124770879745e-01 - <_> - 1.5475475311279297e+01 - - 1 2 555 1.1150000000000000e+02 0 -1 556 107. -2 -3 557 - 5.4500000000000000e+01 - - 2.2000953555107117e-01 -5.7901185750961304e-01 - 5.5795150995254517e-01 -2.0629312098026276e-01 - <_> - 1.5877110481262207e+01 - - 1 2 558 5.0000000000000000e-01 0 -1 559 - 4.7500000000000000e+01 -2 -3 560 4.0850000000000000e+02 - - 4.0163558721542358e-01 -6.5443444252014160e-01 - 3.9427250623703003e-01 -4.3203008174896240e-01 - <_> - 1.5799601554870605e+01 - - 1 2 561 2.0250000000000000e+02 0 -1 562 - 5.0000000000000000e-01 -2 -3 563 2399. - - 1.2356969714164734e-01 -5.3489917516708374e-01 - 4.6495470404624939e-01 -5.8487701416015625e-01 - <_> - 1.6042089462280273e+01 - - 1 2 564 7.0450000000000000e+02 0 -1 565 - 4.4500000000000000e+01 -2 -3 566 288. - - 4.8793616890907288e-01 -8.4778493642807007e-01 - -4.3374565243721008e-01 2.4248743057250977e-01 - <_> - 1.6111749649047852e+01 - - 1 2 567 1.8500000000000000e+01 0 -1 568 - 1.2500000000000000e+01 -2 -3 569 5.0000000000000000e-01 - - -4.8669865727424622e-01 2.7788683772087097e-01 - 3.6192622780799866e-01 -5.7420414686203003e-01 - <_> - 1.6021078109741211e+01 - - 1 2 570 8.3450000000000000e+02 0 -1 571 4451. -2 -3 572 - 3.2950000000000000e+02 - - 5.3921067714691162e-01 -4.8135292530059814e-01 - -2.9889726638793945e-01 6.0160857439041138e-01 - <_> - 1.6436674118041992e+01 - - 1 2 573 1.2500000000000000e+01 0 -1 574 - 6.5000000000000000e+00 -2 -3 575 2.9500000000000000e+01 - - 4.3214797973632812e-01 -2.8101849555969238e-01 - 6.6012543439865112e-01 -7.0270007848739624e-01 - <_> - 1.6612668991088867e+01 - - 1 2 576 4.4500000000000000e+01 0 -1 577 3724. -2 -3 578 - 7.5000000000000000e+00 - - 6.2758970260620117e-01 -5.7332456111907959e-01 - -7.3119300603866577e-01 2.5508829951286316e-01 - <_> - 1.6793443679809570e+01 - - 1 2 579 1.5000000000000000e+00 0 -1 580 - 2.5500000000000000e+01 -2 -3 581 2.3500000000000000e+01 - - -6.3251662254333496e-01 4.4916898012161255e-01 - 4.5003961771726608e-02 -5.9809100627899170e-01 - <_> - 1.6161096572875977e+01 - - 1 2 582 1.5000000000000000e+00 0 -1 583 - 1.5000000000000000e+00 -2 -3 584 2.0500000000000000e+01 - - -7.4945521354675293e-01 6.5612715482711792e-01 - -6.3234704732894897e-01 7.2132863104343414e-02 - <_> - 1.6042703628540039e+01 - - 1 2 585 2.7500000000000000e+01 0 -1 586 - 1.3500000000000000e+01 -2 -3 587 2.5000000000000000e+00 - - -1.1839324980974197e-01 3.9118841290473938e-01 - 2.9518869519233704e-01 -8.5212147235870361e-01 - <_> - 1.6447755813598633e+01 - - 1 2 588 5.0000000000000000e-01 0 -1 589 - 5.0000000000000000e-01 -2 -3 590 5.0000000000000000e-01 - - -8.3366543054580688e-01 4.0505367517471313e-01 - 4.8622503876686096e-02 -5.6565636396408081e-01 - <_> - 1.7133924484252930e+01 - - 1 2 591 2.0350000000000000e+02 0 -1 592 334. -2 -3 593 - 3.0050000000000000e+02 - - -3.5271939635276794e-01 8.6447751522064209e-01 - 7.1061849594116211e-01 -1.1952371150255203e-01 - <_> - 1.6702384948730469e+01 - - 1 2 594 4.5000000000000000e+00 0 -1 595 - 2.8500000000000000e+01 -2 -3 596 1.2500000000000000e+01 - - -3.9405979216098785e-02 6.6947597265243530e-01 - -4.9912232160568237e-01 1.0251764953136444e-01 - <_> - 1.7397886276245117e+01 - - 1 2 597 2.2450000000000000e+02 0 -1 598 42. -2 -3 599 - 4.2500000000000000e+01 - - 7.0597994327545166e-01 -9.4353288412094116e-01 - -6.9157105684280396e-01 2.2714031860232353e-02 - <_> - 1.7262920379638672e+01 - - 1 2 600 3.1500000000000000e+01 0 -1 601 - 1.0450000000000000e+02 -2 -3 602 5.0000000000000000e-01 - - -1.3496619462966919e-01 4.4948977231979370e-01 - 1.4885289967060089e-01 -8.6381590366363525e-01 - <_> - 1.7465213775634766e+01 - - 1 2 603 1.4500000000000000e+01 0 -1 604 - 2.5000000000000000e+00 -2 -3 605 2.5000000000000000e+00 - - -7.1829992532730103e-01 3.5132697224617004e-01 - 4.2205992341041565e-01 -4.3211916089057922e-01 - <_> - 1.7307765960693359e+01 - - 1 2 606 5.5000000000000000e+00 0 -1 607 - 1.6500000000000000e+01 -2 -3 608 1.5000000000000000e+00 - - -4.3471553921699524e-01 5.3184741735458374e-01 - 1.5001934766769409e-01 -5.0502711534500122e-01 - <_> - 1.7614244461059570e+01 - - 1 2 609 2.1950000000000000e+02 0 -1 610 - 3.5000000000000000e+00 -2 -3 611 3.5000000000000000e+00 - - 9.3997812271118164e-01 -9.3997251987457275e-01 - 3.0647855997085571e-01 -2.0921668410301208e-01 - <_> - 1.7706068038940430e+01 - - 1 2 612 5.7500000000000000e+01 0 -1 613 - 5.5450000000000000e+02 -2 -3 614 6271. - - 2.8178128600120544e-01 -6.5705215930938721e-01 - 2.1660777926445007e-01 -8.9905387163162231e-01 - <_> - 1.7754480361938477e+01 - - 1 2 615 5.0000000000000000e-01 0 -1 616 - 1.6500000000000000e+01 -2 -3 617 5.0000000000000000e-01 - - -6.6525924205780029e-01 5.8488470315933228e-01 - 2.6185688376426697e-01 -3.7666809558868408e-01 - <_> - 1.7758506774902344e+01 - - 1 2 618 5.8750000000000000e+02 0 -1 619 - 5.0000000000000000e-01 -2 -3 620 7.9050000000000000e+02 - - 6.1497175693511963e-01 -5.2589684724807739e-01 - 5.6739014387130737e-01 -1.2997034192085266e-01 - <_> - 1.8137268066406250e+01 - - 1 2 621 1.2500000000000000e+01 0 -1 622 - 2.7500000000000000e+01 -2 -3 623 9.5000000000000000e+00 - - 2.7133096009492874e-02 -7.4169838428497314e-01 - -5.5511766672134399e-01 3.7876096367835999e-01 - <_> - 1.8127597808837891e+01 - - 1 2 624 1.3500000000000000e+01 0 -1 625 - 1.6500000000000000e+01 -2 -3 626 7.0050000000000000e+02 - - -9.9238857626914978e-02 5.2959042787551880e-01 - 1.2502020597457886e-01 -6.9074809551239014e-01 - <_> - 1.8081335067749023e+01 - - 1 2 627 1.2500000000000000e+01 0 -1 628 2. -2 -3 629 - 5.0000000000000000e-01 - - -9.4234240055084229e-01 1. 3.8502028584480286e-01 - -1.8359494209289551e-01 - <_> - 1.8053295135498047e+01 - - 1 2 630 2.7500000000000000e+01 0 -1 631 - 5.9500000000000000e+01 -2 -3 632 4.1500000000000000e+01 - - -4.9844527244567871e-01 2.2154885530471802e-01 - 1.6719245910644531e-01 -8.5411649942398071e-01 - <_> - 1.8328479766845703e+01 - - 1 2 633 1.2564500000000000e+04 0 -1 634 - 4.5000000000000000e+00 -2 -3 635 1.4450000000000000e+02 - - -5.1779359579086304e-01 3.0374595522880554e-01 - -7.3483371734619141e-01 7.6394975185394287e-02 - <_> - 1.8571502685546875e+01 - - 1 2 636 2.5000000000000000e+00 0 -1 637 - 2.6750000000000000e+02 -2 -3 638 6.4350000000000000e+02 - - -8.5374289751052856e-01 4.6067333221435547e-01 - -4.1071122884750366e-01 3.6673283576965332e-01 - <_> - 1.8682445526123047e+01 - - 1 2 639 2.0650000000000000e+02 0 -1 640 - 4.2500000000000000e+01 -2 -3 641 1.1500000000000000e+01 - - -5.0848436355590820e-01 2.4837252497673035e-01 - -6.5386766195297241e-01 4.2162042856216431e-01 - <_> - 1.8954551696777344e+01 - - 1 2 642 6.5000000000000000e+00 0 -1 643 - 3.0500000000000000e+01 -2 -3 644 2.2500000000000000e+01 - - -5.9916085004806519e-01 2.7210691571235657e-01 - -1.1765263974666595e-01 -8.1677961349487305e-01 - <_> - 1.8866088867187500e+01 - - 1 2 645 1.5000000000000000e+00 0 -1 646 - 6.5000000000000000e+00 -2 -3 647 1.1150000000000000e+02 - - 5.0670212507247925e-01 -2.6341021060943604e-01 - -4.3560948967933655e-01 3.6474627256393433e-01 - <_> - 1.8741416931152344e+01 - - 1 2 648 4.1500000000000000e+01 0 -1 649 - 6.5000000000000000e+00 -2 -3 650 1.5000000000000000e+00 - - 5.2751459181308746e-02 -6.6522449254989624e-01 - 3.3934053778648376e-01 -4.9355345964431763e-01 - <_> - 1.8643299102783203e+01 - - 1 2 651 5.9775000000000000e+03 0 -1 652 - 1.8165000000000000e+03 -2 -3 653 1.4355000000000000e+03 - - 5.5302268266677856e-01 -4.7563236951828003e-01 - 6.5803569555282593e-01 -9.8118394613265991e-02 - <_> - 1.8880964279174805e+01 - - 1 2 654 1.2650000000000000e+02 0 -1 655 - 2.5000000000000000e+00 -2 -3 656 1.3500000000000000e+01 - - -7.5744998455047607e-01 2.8973925113677979e-01 - -5.4551291465759277e-01 8.2080578804016113e-01 - <_> - 1.8557128906250000e+01 - - 1 2 657 4.6500000000000000e+01 0 -1 658 1647. -2 -3 659 - 1.0500000000000000e+01 - - 1.0912799835205078e-01 -8.0168753862380981e-01 - 3.0439880490303040e-01 -3.2383540272712708e-01 - <_> - 1.9214336395263672e+01 - - 1 2 660 1.6085000000000000e+03 0 -1 661 - 2.0950000000000000e+02 -2 -3 662 2.9750000000000000e+02 - - -3.6497074365615845e-01 7.4361735582351685e-01 - 7.8719192743301392e-01 -1.0578166693449020e-02 - <_> - 1.9558198928833008e+01 - - 1 2 663 5.5000000000000000e+00 0 -1 664 141. -2 -3 665 - 1.2500000000000000e+01 - - 4.0406695008277893e-01 -7.0202612876892090e-01 - -4.2011860013008118e-01 6.0265243053436279e-01 - <_> - 1.9143066406250000e+01 - - 1 2 666 1.1500000000000000e+01 0 -1 667 - 8.5000000000000000e+00 -2 -3 668 2.1150000000000000e+02 - - -4.1513276100158691e-01 4.5337858796119690e-01 - 3.6399593949317932e-01 -7.8625452518463135e-01 - <_> - 1.9362360000610352e+01 - - 1 2 669 3.1500000000000000e+01 0 -1 670 - 3.5000000000000000e+00 -2 -3 671 1.5500000000000000e+01 - - -5.3197765350341797e-01 2.7408641576766968e-01 - -6.3501793146133423e-01 4.3600288033485413e-01 - <_> - 1.9299673080444336e+01 - - 1 2 672 3.5000000000000000e+00 0 -1 673 - 1.3500000000000000e+01 -2 -3 674 6918. - - -4.8876148462295532e-01 4.8771849274635315e-01 - -3.5163021087646484e-01 5.7008403539657593e-01 - <_> - 1.9273160934448242e+01 - - 1 2 675 4.2150000000000000e+02 0 -1 676 - 2.2035000000000000e+03 -2 -3 677 4125. - - -1. 4.3742546439170837e-01 -6.3171046972274780e-01 - -1.2324055656790733e-02 - <_> - 1.9674695968627930e+01 - - 1 2 678 5.0000000000000000e-01 0 -1 679 - 1.0500000000000000e+01 -2 -3 680 6.7150000000000000e+02 - - -2.4401791393756866e-01 5.4219561815261841e-01 - 4.5299509167671204e-01 -4.0972766280174255e-01 - <_> - 1.9536827087402344e+01 - - 1 2 681 80. 0 -1 682 9.5000000000000000e+00 -2 -3 683 - 1.1950000000000000e+02 - - 9.7771358489990234e-01 -1. -2.7852934598922729e-01 - 3.1141099333763123e-01 - <_> - 1.9679944992065430e+01 - - 1 2 684 5.5000000000000000e+00 0 -1 685 - 5.5000000000000000e+00 -2 -3 686 4.5000000000000000e+00 - - -3.4437903761863708e-01 4.5901042222976685e-01 - 1.4311666786670685e-01 -5.8588796854019165e-01 - <_> - 1.9943355560302734e+01 - - 1 2 687 2.9500000000000000e+01 0 -1 688 - 6.5000000000000000e+00 -2 -3 689 2.4500000000000000e+01 - - -5.8437657356262207e-01 2.6341116428375244e-01 - -6.2989181280136108e-01 2.0000371336936951e-01 - <_> - 1.9625724792480469e+01 - - 1 2 690 2.0850000000000000e+02 0 -1 691 - 2.3305000000000000e+03 -2 -3 692 866. - - -3.1762993335723877e-01 5.5581647157669067e-01 - 5.3226226568222046e-01 -4.7602936625480652e-01 - <_> - 1.9914857864379883e+01 - - 1 2 693 8.7850000000000000e+02 0 -1 694 - 6.5050000000000000e+02 -2 -3 695 1.2605000000000000e+03 - - 2.8913190960884094e-01 -8.0038177967071533e-01 - -7.6349312067031860e-01 1.2914163060486317e-02 - <_> - 2.0337768554687500e+01 - - 1 2 696 1.8500000000000000e+01 0 -1 697 51. -2 -3 698 - 5.0000000000000000e-01 - - 2.0884056389331818e-01 -6.6362190246582031e-01 - 4.8303022980690002e-01 -1.5653999149799347e-01 - <_> - 2.0547544479370117e+01 - - 1 2 699 5.5000000000000000e+00 0 -1 700 - 4.4500000000000000e+01 -2 -3 701 52. - - -5.9065473079681396e-01 2.0977459847927094e-01 - -7.6793259382247925e-01 5.2228933572769165e-01 - <_> - 2.0560253143310547e+01 - - 1 2 702 4.5000000000000000e+00 0 -1 703 - 2.4650000000000000e+02 -2 -3 704 4.8500000000000000e+01 - - 4.7756865620613098e-01 -6.9306534528732300e-01 - -4.7408469021320343e-02 -7.5790488719940186e-01 - <_> - 2.0091964721679688e+01 - - 1 2 705 3.8500000000000000e+01 0 -1 706 - 5.0000000000000000e-01 -2 -3 707 458. - - 4.1837117075920105e-01 -5.6005704402923584e-01 - -4.6829015016555786e-01 3.3648452162742615e-01 - <_> - 2.0445671081542969e+01 - - 1 2 708 4.5000000000000000e+00 0 -1 709 - 2.7895000000000000e+03 -2 -3 710 1.1500000000000000e+01 - - -3.6157336831092834e-01 3.5370638966560364e-01 - -5.6435430049896240e-01 6.2603580951690674e-01 - <_> - 2.0708145141601562e+01 - - 1 2 711 1.1245000000000000e+03 0 -1 712 - 4.5000000000000000e+00 -2 -3 713 1.4500000000000000e+01 - - -6.9924837350845337e-01 4.3067482113838196e-01 - -4.2009061574935913e-01 2.6247435808181763e-01 - <_> - 2.1024463653564453e+01 - - 1 2 714 5.5000000000000000e+00 0 -1 715 - 1.1500000000000000e+01 -2 -3 716 7.5000000000000000e+00 - - -8.0043709278106689e-01 3.1631988286972046e-01 - -5.1429873704910278e-01 2.7576768398284912e-01 - <_> - 2.0803630828857422e+01 - - 1 2 717 5.8750000000000000e+02 0 -1 718 3981. -2 -3 719 - 1.9550000000000000e+02 - - -5.4785442352294922e-01 7.9078370332717896e-01 - 6.8359661102294922e-01 -2.8464736416935921e-02 - <_> - 2.1062959671020508e+01 - - 1 2 720 2.5000000000000000e+00 0 -1 721 - 1.5000000000000000e+00 -2 -3 722 3.4050000000000000e+02 - - -6.4614498615264893e-01 7.4008464813232422e-01 - -2.5458994507789612e-01 4.7160488367080688e-01 - <_> - 2.1148992538452148e+01 - - 1 2 723 2.5000000000000000e+00 0 -1 724 - 1.9500000000000000e+01 -2 -3 725 1.1365000000000000e+03 - - -7.9459643363952637e-01 4.0373617410659790e-01 - 1.7909039556980133e-01 -4.8390582203865051e-01 - <_> - 2.1316343307495117e+01 - - 1 2 726 596. 0 -1 727 2.9500000000000000e+01 -2 -3 728 - 9.7500000000000000e+01 - - -3.1621825695037842e-01 2.6443120837211609e-01 - -7.2724926471710205e-01 3.8569703698158264e-01 - <_> - 2.1407173156738281e+01 - - 1 2 729 3.5000000000000000e+00 0 -1 730 - 1.2500000000000000e+01 -2 -3 731 1.6250000000000000e+02 - - -5.2135920524597168e-01 3.0805602669715881e-01 - -5.1675158739089966e-01 8.4476417303085327e-01 - <_> - 2.1468662261962891e+01 - - 1 2 732 2.5000000000000000e+00 0 -1 733 - 9.5000000000000000e+00 -2 -3 734 1.5000000000000000e+00 - - 4.6017938852310181e-01 -8.2636475563049316e-02 - 5.0263375043869019e-01 -6.4655619859695435e-01 - <_> - 2.1531848907470703e+01 - - 1 2 735 1.6500000000000000e+01 0 -1 736 - 1.5000000000000000e+00 -2 -3 737 132. - - 6.3187964260578156e-02 -4.6502736210823059e-01 - -5.3921943902969360e-01 6.6515022516250610e-01 - <_> - 2.1421955108642578e+01 - - 1 2 738 1.4500000000000000e+01 0 -1 739 - 5.5000000000000000e+00 -2 -3 740 4.5000000000000000e+00 - - 7.3170220851898193e-01 -7.9929661750793457e-01 - 4.2181393504142761e-01 -1.0989431291818619e-01 - <_> - 2.1327116012573242e+01 - - 1 2 741 3.5000000000000000e+00 0 -1 742 35. -2 -3 743 - 2.5000000000000000e+00 - - -8.3855998516082764e-01 4.6628227829933167e-01 - 4.7352400422096252e-01 -9.4839885830879211e-02 - <_> - 2.1836402893066406e+01 - - 1 2 744 1.7500000000000000e+01 0 -1 745 555. -2 -3 746 - 1.0500000000000000e+01 - - 9.3723833560943604e-01 -9.0897613763809204e-01 - -7.3575176298618317e-02 5.0928729772567749e-01 - <_> - 2.2053348541259766e+01 - - 1 2 747 5.0000000000000000e-01 0 -1 748 - 1.6500000000000000e+01 -2 -3 749 6.5850000000000000e+02 - - 3.9292082190513611e-01 -5.4508280754089355e-01 - -3.8765028119087219e-01 7.9302084445953369e-01 - <_> - 2.2000936508178711e+01 - - 1 2 750 1.2495000000000000e+03 0 -1 751 - 7.5650000000000000e+02 -2 -3 752 8.5000000000000000e+00 - - -8.3031547069549561e-01 6.1485505104064941e-01 - -7.2577434778213501e-01 -3.1862542033195496e-02 - <_> - 2.2258289337158203e+01 - - 1 2 753 1.7050000000000000e+02 0 -1 754 - 2.7500000000000000e+01 -2 -3 755 171. - - 2.5735321640968323e-01 -4.8002240061759949e-01 - -8.0062097311019897e-01 3.0654129385948181e-01 - <_> - 2.2328397750854492e+01 - - 1 2 756 1.2550000000000000e+02 0 -1 757 - 4.9850000000000000e+02 -2 -3 758 4.4150000000000000e+02 - - -5.5743676424026489e-01 7.0109486579895020e-02 - 4.4649991393089294e-01 -7.7318650484085083e-01 - <_> - 2.2216890335083008e+01 - - 1 2 759 6.5000000000000000e+00 0 -1 760 - 1.5000000000000000e+00 -2 -3 761 1.4500000000000000e+01 - - -5.4395025968551636e-01 3.0336576700210571e-01 - -7.8275823593139648e-01 1.5390900894999504e-02 - <_> - 2.2302726745605469e+01 - - 1 2 762 1.5000000000000000e+00 0 -1 763 - 5.7500000000000000e+01 -2 -3 764 2.0645000000000000e+03 - - 4.8738116025924683e-01 -3.1202495098114014e-01 - -4.3800228834152222e-01 2.9288199543952942e-01 - <_> - 2.2548938751220703e+01 - - 1 2 765 4.9500000000000000e+01 0 -1 766 - 3.8500000000000000e+01 -2 -3 767 5.1500000000000000e+01 - - 4.8418575525283813e-01 -6.1569869518280029e-01 - 2.4621097743511200e-01 -7.1180444955825806e-01 - <_> - 2.2475860595703125e+01 - - 1 2 768 4.5000000000000000e+00 0 -1 769 - 1.7850000000000000e+02 -2 -3 770 2.4500000000000000e+01 - - -6.3133555650711060e-01 3.8137707114219666e-01 - -3.6368274688720703e-01 6.6181749105453491e-01 - <_> - 2.2855289459228516e+01 - - 1 2 771 4284. 0 -1 772 1.0550000000000000e+02 -2 -3 773 - 2.6500000000000000e+01 - - -1.8270370364189148e-01 5.1926845312118530e-01 - -4.9393907189369202e-01 3.6390557885169983e-01 - <_> - 2.2716596603393555e+01 - - 1 2 774 4.5000000000000000e+00 0 -1 775 - 2.5500000000000000e+01 -2 -3 776 6.0350000000000000e+02 - - -5.2201086282730103e-01 4.4320568442344666e-01 - -4.9849912524223328e-01 2.6197108626365662e-01 - <_> - 2.2941522598266602e+01 - - 1 2 777 5.7850000000000000e+02 0 -1 778 - 6.8250000000000000e+02 -2 -3 779 2.6500000000000000e+01 - - -7.4641335010528564e-01 9.6406400203704834e-01 - 2.2492493689060211e-01 -7.7606719732284546e-01 - <_> - 2.3111333847045898e+01 - - 1 2 780 2.9650000000000000e+02 0 -1 781 - 9.5000000000000000e+00 -2 -3 782 4.2500000000000000e+01 - - -6.2134265899658203e-01 1.6981208324432373e-01 - -8.7735611200332642e-01 6.5406101942062378e-01 - <_> - 2.3225652694702148e+01 - - 1 2 783 5.0000000000000000e-01 0 -1 784 - 3.5000000000000000e+00 -2 -3 785 1.1050000000000000e+02 - - 4.8261573910713196e-01 -1.2186601758003235e-01 - -6.2313985824584961e-01 1.7973627150058746e-01 - <_> - 2.3488880157470703e+01 - - 1 2 786 5.0000000000000000e-01 0 -1 787 - 2.5000000000000000e+00 -2 -3 788 4.1500000000000000e+01 - - -8.2940989732742310e-01 4.9927219748497009e-01 - -5.5514144897460938e-01 4.2520754039287567e-02 - <_> - 2.3246582031250000e+01 - - 1 2 789 1.7500000000000000e+01 0 -1 790 - 3.5000000000000000e+00 -2 -3 791 3.7500000000000000e+01 - - 2.3804731667041779e-01 -3.6675044894218445e-01 - -7.8130763769149780e-01 4.6650439500808716e-01 - <_> - 2.3027326583862305e+01 - - 1 2 792 2.0450000000000000e+02 0 -1 793 - 6.4350000000000000e+02 -2 -3 794 1.0050000000000000e+02 - - 6.1607003211975098e-01 -3.5964947938919067e-01 - 6.6453498601913452e-01 -1.7912100255489349e-01 - <_> - 2.3406442642211914e+01 - - 1 2 795 5.0000000000000000e-01 0 -1 796 - 6.5000000000000000e+00 -2 -3 797 5.0000000000000000e-01 - - -8.2512348890304565e-01 3.7911432981491089e-01 - 3.5871699452400208e-01 -4.4794848561286926e-01 - <_> - 2.3616649627685547e+01 - - 1 2 798 2.8500000000000000e+01 0 -1 799 - 4.7450000000000000e+02 -2 -3 800 2.9250000000000000e+02 - - 6.9855457544326782e-01 -7.0031523704528809e-01 - 2.1020780503749847e-01 -7.6559376716613770e-01 - <_> - 2.4126110076904297e+01 - - 1 2 801 2.7500000000000000e+01 0 -1 802 - 6.5000000000000000e+00 -2 -3 803 4.0500000000000000e+01 - - -2.3670162260532379e-01 5.7600808143615723e-01 - 7.9060065746307373e-01 -6.8735271692276001e-01 - <_> - 2.4140369415283203e+01 - - 1 2 804 5.0000000000000000e-01 0 -1 805 - 5.0000000000000000e-01 -2 -3 806 4.5000000000000000e+00 - - -9.1332882642745972e-01 5.2299410104751587e-01 - -7.9110765457153320e-01 -2.8204634785652161e-02 - <_> - 2.4360799789428711e+01 - - 1 2 807 4.5000000000000000e+00 0 -1 808 - 1.3185000000000000e+03 -2 -3 809 5.3500000000000000e+01 - - -8.1156605482101440e-01 2.2043134272098541e-01 - 2.7905371785163879e-01 -7.4440413713455200e-01 - <_> - 2.4109243392944336e+01 - - 1 2 810 1.3500000000000000e+01 0 -1 811 - 5.0000000000000000e-01 -2 -3 812 4.4500000000000000e+01 - - 2.3124285042285919e-01 -6.3171100616455078e-01 - -8.5163635015487671e-01 3.0160894989967346e-01 - <_> - 2.4255434036254883e+01 - - 1 2 813 1.5650000000000000e+02 0 -1 814 - 3.5000000000000000e+00 -2 -3 815 4.3500000000000000e+01 - - -7.0664036273956299e-01 1.4619015157222748e-01 - -7.6265025138854980e-01 9.5157426595687866e-01 - <_> - 2.4288377761840820e+01 - - 1 2 816 8.3850000000000000e+02 0 -1 817 - 1.6815000000000000e+03 -2 -3 818 3.7500000000000000e+01 - - -1.9312603771686554e-01 7.6522910594940186e-01 - -5.9187997132539749e-02 -8.7799388170242310e-01 - <_> - 2.4200824737548828e+01 - - 1 2 819 2.3685000000000000e+03 0 -1 820 - 6.4500000000000000e+01 -2 -3 821 2218. - - -2.3894232511520386e-01 3.3463284373283386e-01 - 9.7570341825485229e-01 -1. - <_> - 2.4393486022949219e+01 - - 1 2 822 1.5000000000000000e+00 0 -1 823 - 6.2500000000000000e+01 -2 -3 824 5.0000000000000000e-01 - - 3.8941594958305359e-01 -6.3870257139205933e-01 - 2.9708841443061829e-01 -4.5916315913200378e-01 - <_> - 2.3864915847778320e+01 - - 1 2 825 5.8500000000000000e+01 0 -1 826 - 5.0000000000000000e-01 -2 -3 827 5.0550000000000000e+02 - - 1.0665965825319290e-01 -5.2857077121734619e-01 - 4.3078324198722839e-01 -6.8552410602569580e-01 - <_> - 2.4371673583984375e+01 - - 1 2 828 4.6500000000000000e+01 0 -1 829 - 2.8500000000000000e+01 -2 -3 830 2.5000000000000000e+00 - - -4.6691280603408813e-01 9.4536936283111572e-01 - 5.0675743818283081e-01 -7.4976824223995209e-02 - <_> - 2.4283998489379883e+01 - - 1 2 831 8.5000000000000000e+00 0 -1 832 - 4.5000000000000000e+00 -2 -3 833 5.0000000000000000e-01 - - 1.1491531878709793e-01 -5.4051393270492554e-01 - 5.9726655483245850e-01 -8.7674349546432495e-02 - <_> - 2.4178682327270508e+01 - - 1 2 834 2.4500000000000000e+01 0 -1 835 31. -2 -3 836 - 2.5000000000000000e+00 - - -1.4163693785667419e-01 -8.9226043224334717e-01 - 4.4437414407730103e-01 -1.0531529039144516e-01 - <_> - 2.4790372848510742e+01 - - 1 2 837 2.5500000000000000e+01 0 -1 838 - 3.3050000000000000e+02 -2 -3 839 5.0000000000000000e-01 - - -6.6818559169769287e-01 9.3957829475402832e-01 - 6.1168950796127319e-01 -2.6481609791517258e-02 - <_> - 2.4897542953491211e+01 - - 1 2 840 5.0000000000000000e-01 0 -1 841 - 5.0000000000000000e-01 -2 -3 842 2407. - - -3.7540107965469360e-01 5.3918349742889404e-01 - 4.6452194452285767e-01 -4.5957338809967041e-01 - <_> - 2.5076763153076172e+01 - - 1 2 843 228. 0 -1 844 182. -2 -3 845 3.3500000000000000e+01 - - 1.7922003567218781e-01 -6.3466674089431763e-01 - -9.4654053449630737e-01 1. - <_> - 2.5344453811645508e+01 - - 1 2 846 2.1050000000000000e+02 0 -1 847 950. -2 -3 848 - 6.5000000000000000e+00 - - 3.8418850302696228e-01 -3.3828052878379822e-01 - -9.4338703155517578e-01 5.6358563899993896e-01 - <_> - 2.5327934265136719e+01 - - 1 2 849 5.7850000000000000e+02 0 -1 850 2721. -2 -3 851 - 5.7950000000000000e+02 - - -7.7749001979827881e-01 7.9369461536407471e-01 - 6.1001539230346680e-01 -3.9780076593160629e-02 - <_> - 2.5586107254028320e+01 - - 1 2 852 1.5500000000000000e+01 0 -1 853 - 5.0000000000000000e-01 -2 -3 854 7.5000000000000000e+00 - - 6.5170124173164368e-02 -8.7068217992782593e-01 - 3.4386867284774780e-01 -3.1679311394691467e-01 - <_> - 2.5956110000610352e+01 - - 1 2 855 4.1250000000000000e+02 0 -1 856 - 9.5000000000000000e+00 -2 -3 857 1.2500000000000000e+01 - - -9.4299390912055969e-02 4.5086464285850525e-01 - 2.8941693902015686e-01 -7.5506448745727539e-01 - <_> - 2.5679136276245117e+01 - - 1 2 858 1.5500000000000000e+01 0 -1 859 - 3.5500000000000000e+01 -2 -3 860 1.5500000000000000e+01 - - 5.7768863439559937e-01 -9.8376011848449707e-01 - 2.2712181508541107e-01 -3.7263166904449463e-01 - <_> - 2.5702135086059570e+01 - - 1 2 861 5.2500000000000000e+01 0 -1 862 - 1.1305000000000000e+03 -2 -3 863 213. - - 2.2998491302132607e-02 -5.8967226743698120e-01 - 6.5218383073806763e-01 -8.2674098014831543e-01 - <_> - 2.5561569213867188e+01 - - 1 2 864 5.5500000000000000e+01 0 -1 865 - 9.5000000000000000e+00 -2 -3 866 3.1350000000000000e+02 - - 2.0403856039047241e-01 -5.6006175279617310e-01 - -1.6610753536224365e-01 5.0708794593811035e-01 - <_> - 2.5522092819213867e+01 - - 1 2 867 5.0000000000000000e-01 0 -1 868 5. -2 -3 869 - 3.8500000000000000e+01 - - -5.3519564867019653e-01 5.9799957275390625e-01 - -6.4083904027938843e-01 8.0231800675392151e-03 - <_> - 2.5928745269775391e+01 - - 1 2 870 2.7500000000000000e+01 0 -1 871 - 6.5000000000000000e+00 -2 -3 872 3.4500000000000000e+01 - - 6.7719250917434692e-01 1.6834596171975136e-02 - -4.1419923305511475e-01 4.9665707349777222e-01 - <_> - 2.5877567291259766e+01 - - 1 2 873 4.2500000000000000e+01 0 -1 874 - 1.5000000000000000e+00 -2 -3 875 1.2500000000000000e+01 - - 7.5778728723526001e-01 -6.9553768634796143e-01 - 5.8824920654296875e-01 -5.1177542656660080e-02 - <_> - 2.6253459930419922e+01 - - 1 2 876 2.0450000000000000e+02 0 -1 877 - 5.5000000000000000e+00 -2 -3 878 2.0750000000000000e+02 - - 1.4472042024135590e-01 -5.3407484292984009e-01 - 5.5299741029739380e-01 -2.1952067315578461e-01 - <_> - 2.5972379684448242e+01 - - 1 2 879 5.0000000000000000e-01 0 -1 880 - 9.2500000000000000e+01 -2 -3 881 2.8150000000000000e+02 - - -4.9287506937980652e-01 4.8725369572639465e-01 - 2.1028327941894531e-01 -4.5818585157394409e-01 - <_> - 2.6239015579223633e+01 - - 1 2 882 3.3450000000000000e+02 0 -1 883 - 2.9500000000000000e+01 -2 -3 884 1.9500000000000000e+01 - - -2.7773824334144592e-01 2.6663535833358765e-01 - 9.2568081617355347e-01 -1. - <_> - 2.6405815124511719e+01 - - 1 2 885 7.5000000000000000e+00 0 -1 886 - 1.5500000000000000e+01 -2 -3 887 2.9500000000000000e+01 - - -1.3278310000896454e-01 5.4445451498031616e-01 - -4.4695791602134705e-01 5.7305967807769775e-01 - <_> - 2.6828212738037109e+01 - - 1 2 888 3.1750000000000000e+02 0 -1 889 - 8.5000000000000000e+00 -2 -3 890 1.9950000000000000e+02 - - 5.8375543355941772e-01 -1.7268431186676025e-01 - -6.6015034914016724e-01 4.4744126498699188e-02 - <_> - 2.7001083374023438e+01 - - 1 2 891 7.4500000000000000e+01 0 -1 892 - 9.5000000000000000e+00 -2 -3 893 1.0500000000000000e+01 - - -7.7140247821807861e-01 1.7287059128284454e-01 - -9.5679062604904175e-01 2.9170122742652893e-01 - <_> - 2.6600372314453125e+01 - - 1 2 894 5.0000000000000000e-01 0 -1 895 - 1.5000000000000000e+00 -2 -3 896 1.5000000000000000e+00 - - -6.1320728063583374e-01 3.7253630161285400e-01 - 5.1001715660095215e-01 -4.2740473151206970e-01 - <_> - 2.6939287185668945e+01 - - 1 2 897 742. 0 -1 898 1.5000000000000000e+00 -2 -3 899 - 4.6500000000000000e+01 - - 6.4842426776885986e-01 -6.8702745437622070e-01 - 5.3773084655404091e-03 7.0070070028305054e-01 - <_> - 2.7120637893676758e+01 - - 1 2 900 4.7500000000000000e+01 0 -1 901 - 2.1500000000000000e+01 -2 -3 902 155. - - -2.1175275743007660e-01 3.5446098446846008e-01 - 3.6745795607566833e-01 -7.7352613210678101e-01 - <_> - 2.6940479278564453e+01 - - 1 2 903 5.5000000000000000e+00 0 -1 904 - 5.0000000000000000e-01 -2 -3 905 5.0000000000000000e-01 - - -4.2342516779899597e-01 4.6100237965583801e-01 - 7.2207629680633545e-02 -5.1426035165786743e-01 - <_> - 2.6880437850952148e+01 - - 1 2 906 4.1050000000000000e+02 0 -1 907 - 3.5000000000000000e+00 -2 -3 908 1.0185000000000000e+03 - - 7.6362460851669312e-01 -2.9716432094573975e-01 - 6.9237434864044189e-01 -6.0041967779397964e-02 - <_> - 2.6966255187988281e+01 - - 1 2 909 5.0000000000000000e-01 0 -1 910 28. -2 -3 911 - 2.5000000000000000e+00 - - -7.3636984825134277e-01 8.9863502979278564e-01 - 5.1865053176879883e-01 -1.0253517329692841e-01 - <_> - 2.7442039489746094e+01 - - 1 2 912 2.3500000000000000e+01 0 -1 913 - 2.5000000000000000e+00 -2 -3 914 550. - - 1.5000563859939575e-01 -4.6704238653182983e-01 - -6.6705381870269775e-01 4.7578340768814087e-01 - <_> - 2.7651542663574219e+01 - - 1 2 915 2.0050000000000000e+02 0 -1 916 - 2.5000000000000000e+00 -2 -3 917 3.5000000000000000e+00 - - -6.6723048686981201e-01 2.0950356125831604e-01 - 3.3526617288589478e-01 -7.9762780666351318e-01 - <_> - 2.7623653411865234e+01 - - 1 2 918 8.5000000000000000e+00 0 -1 919 - 5.5000000000000000e+00 -2 -3 920 5.5000000000000000e+00 - - -8.1512671709060669e-01 1.2574225664138794e-01 - 4.8598203063011169e-01 -1.5266139805316925e-01 - <_> - 2.7450769424438477e+01 - - 1 2 921 5.5000000000000000e+00 0 -1 922 - 6.5000000000000000e+00 -2 -3 923 5.0000000000000000e-01 - - -2.1216700971126556e-01 5.0396865606307983e-01 - 5.1462185382843018e-01 -4.5113617181777954e-01 - <_> - 2.7734930038452148e+01 - - 1 2 924 644. 0 -1 925 1.1500000000000000e+01 -2 -3 926 - 1.2050000000000000e+02 - - 2.5870633125305176e-01 -8.3483195304870605e-01 - -6.0892283916473389e-01 2.8416162729263306e-01 - <_> - 2.7435287475585938e+01 - - 1 2 927 2.5000000000000000e+00 0 -1 928 - 1.5000000000000000e+00 -2 -3 929 658. - - -9.0528321266174316e-01 5.4103326797485352e-01 - -2.9964354634284973e-01 4.7055888175964355e-01 - <_> - 2.7890865325927734e+01 - - 1 2 930 2.6065000000000000e+03 0 -1 931 - 3.0950000000000000e+02 -2 -3 932 3.6500000000000000e+01 - - -1.2102564424276352e-01 4.5557883381843567e-01 - -9.6796959638595581e-01 4.1553020477294922e-01 - <_> - 2.7985542297363281e+01 - - 1 2 933 1.2535000000000000e+03 0 -1 934 - 6.4950000000000000e+02 -2 -3 935 4.1650000000000000e+02 - - 6.4220869541168213e-01 -4.2341175675392151e-01 - 5.5095940828323364e-01 -3.7539717555046082e-01 - <_> - 2.8142776489257812e+01 - - 1 2 936 5.0000000000000000e-01 0 -1 937 - 4.5000000000000000e+00 -2 -3 938 3.7500000000000000e+01 - - -3.2875818014144897e-01 4.3458873033523560e-01 - -5.8713775873184204e-01 1.6683255136013031e-01 - <_> - 2.8195165634155273e+01 - - 1 2 939 7.7450000000000000e+02 0 -1 940 - 2.5000000000000000e+00 -2 -3 941 7.9250000000000000e+02 - - 3.3088469505310059e-01 -7.3728382587432861e-01 - 4.7910848259925842e-01 -1.5558865666389465e-01 - <_> - 2.8348829269409180e+01 - - 1 2 942 2.2850000000000000e+02 0 -1 943 - 2.7500000000000000e+01 -2 -3 944 5.2500000000000000e+01 - - -9.7540810704231262e-02 4.9717679619789124e-01 - -8.4607970714569092e-01 3.1448280811309814e-01 - <_> - 2.8368389129638672e+01 - - 1 2 945 5.5000000000000000e+00 0 -1 946 - 5.5000000000000000e+00 -2 -3 947 5.0000000000000000e-01 - - -7.9352790117263794e-01 4.7426006197929382e-01 - 3.1184694170951843e-01 -3.9333003759384155e-01 - <_> - 2.8678846359252930e+01 - - 1 2 948 9.5500000000000000e+01 0 -1 949 - 1.3250000000000000e+02 -2 -3 950 85. - - 8.9399956166744232e-02 -7.3296272754669189e-01 - -7.4362647533416748e-01 3.2927182316780090e-01 - <_> - 2.8603195190429688e+01 - - 1 2 951 2.3500000000000000e+01 0 -1 952 - 5.5000000000000000e+00 -2 -3 953 1.5500000000000000e+01 - - 2.9263785481452942e-01 -2.7861267328262329e-01 - 2.4879254400730133e-02 -8.7280374765396118e-01 - <_> - 2.8429206848144531e+01 - - 1 2 954 5.0000000000000000e-01 0 -1 955 - 7.5000000000000000e+00 -2 -3 956 1.1050000000000000e+02 - - -4.9112609028816223e-01 4.5099055767059326e-01 - -6.6482228040695190e-01 3.8441817741841078e-03 - <_> - 2.8728115081787109e+01 - - 1 2 957 4.5000000000000000e+00 0 -1 958 - 3.0500000000000000e+01 -2 -3 959 9.5000000000000000e+00 - - 3.4782031178474426e-01 -4.3692314624786377e-01 - -5.0424945354461670e-01 4.8909524083137512e-01 - <_> - 2.9034227371215820e+01 - - 1 2 960 8.5000000000000000e+00 0 -1 961 1313. -2 -3 962 - 7.5000000000000000e+00 - - 4.1847491264343262e-01 -7.2316378355026245e-01 - 5.3542798757553101e-01 -6.9837749004364014e-02 - <_> - 2.9042299270629883e+01 - - 1 2 963 8.2350000000000000e+02 0 -1 964 - 6.1500000000000000e+01 -2 -3 965 1.0848500000000000e+04 - - -2.7015477418899536e-01 2.4192942678928375e-01 - 9.2728316783905029e-01 -1. - <_> - 2.9266605377197266e+01 - - 1 2 966 3.5500000000000000e+01 0 -1 967 - 1.1500000000000000e+01 -2 -3 968 474. - - 3.2317626476287842e-01 -2.3886755108833313e-01 - -9.2069733142852783e-01 9.9993713200092316e-02 - <_> - 2.9196119308471680e+01 - - 1 2 969 1.5000000000000000e+00 0 -1 970 50. -2 -3 971 - 4.5000000000000000e+00 - - -8.8119459152221680e-01 1.5396067500114441e-01 - 3.5588577389717102e-01 -1.8907056748867035e-01 - <_> - 2.8916269302368164e+01 - - 1 2 972 2.7500000000000000e+01 0 -1 973 78. -2 -3 974 - 1.4750000000000000e+02 - - 9.6468514204025269e-01 -2.7984911203384399e-01 - 5.2942144870758057e-01 -5.4215109348297119e-01 - <_> - 2.9137155532836914e+01 - - 1 2 975 2.3500000000000000e+01 0 -1 976 - 5.7850000000000000e+02 -2 -3 977 2.9250000000000000e+02 - - 2.3396319150924683e-01 -8.4364879131317139e-01 - -3.0435711145401001e-01 3.2314890623092651e-01 - <_> - 2.9115297317504883e+01 - - 1 2 978 5.0000000000000000e-01 0 -1 979 - 3.9550000000000000e+02 -2 -3 980 5.5000000000000000e+00 - - 3.9777445793151855e-01 -7.7888238430023193e-01 - -4.1580772399902344e-01 3.4073171019554138e-01 - <_> - 2.9551794052124023e+01 - - 1 2 981 1.8785000000000000e+03 0 -1 982 - 5.9715000000000000e+03 -2 -3 983 6.4250000000000000e+02 - - -1.2244975566864014e-01 6.9085955619812012e-01 - -5.9161955118179321e-01 2.9289481043815613e-01 - <_> - 2.9916490554809570e+01 - - 1 2 984 3.6500000000000000e+01 0 -1 985 - 5.5000000000000000e+00 -2 -3 986 6.5000000000000000e+00 - - -8.7442290782928467e-01 9.8645307123661041e-02 - 4.4346800446510315e-01 -1.5005703270435333e-01 - <_> - 2.9763261795043945e+01 - - 1 2 987 3.2500000000000000e+01 0 -1 988 - 1.0500000000000000e+01 -2 -3 989 4.6500000000000000e+01 - - -3.8456574082374573e-01 3.4571200609207153e-01 - 5.5213904380798340e-01 -5.1309728622436523e-01 - <_> - 3.0075271606445312e+01 - - 1 2 990 5.5000000000000000e+00 0 -1 991 3216. -2 -3 992 57. - - 3.7469649314880371e-01 -7.7058547735214233e-01 - -6.3845652341842651e-01 4.0090378373861313e-02 - <_> - 3.0020376205444336e+01 - - 1 2 993 6.6650000000000000e+02 0 -1 994 - 1.5000000000000000e+00 -2 -3 995 1.6650000000000000e+02 - - 6.1095565557479858e-01 -6.7465776205062866e-01 - 2.2271032631397247e-01 -8.2703709602355957e-01 - <_> - 2.9878087997436523e+01 - - 1 2 996 5.5000000000000000e+00 0 -1 997 - 1.1500000000000000e+01 -2 -3 998 6.2500000000000000e+01 - - -4.6279782056808472e-01 1.8749718368053436e-01 - 6.7090582847595215e-01 -1.3304303586483002e-01 - <_> - 2.9944360733032227e+01 - - 1 2 999 1.5000000000000000e+00 0 -1 1000 - 2.5000000000000000e+00 -2 -3 1001 2.5000000000000000e+00 - - -1. 4.3671074509620667e-01 6.6273018717765808e-02 - -5.3205168247222900e-01 - <_> - 2.9942871093750000e+01 - - 1 2 1002 5.5000000000000000e+00 0 -1 1003 - 3.7450000000000000e+02 -2 -3 1004 4.5000000000000000e+00 - - 6.1623644828796387e-01 -4.8089489340782166e-01 - 5.9936344623565674e-01 -3.1623546034097672e-02 - <_> - 3.0450216293334961e+01 - - 1 2 1005 7.8750000000000000e+02 0 -1 1006 - 6.7550000000000000e+02 -2 -3 1007 7.0250000000000000e+02 - - -4.9125915765762329e-01 5.5245697498321533e-01 - 5.0734555721282959e-01 -1.7348597943782806e-01 - <_> - 3.0483926773071289e+01 - - 1 2 1008 2.2350000000000000e+02 0 -1 1009 - 5.5000000000000000e+00 -2 -3 1010 2.4500000000000000e+01 - - 5.1597571372985840e-01 -3.2840871810913086e-01 - -4.1519615054130554e-01 3.1820172071456909e-01 - <_> - 3.0558099746704102e+01 - - 1 2 1011 4.8500000000000000e+01 0 -1 1012 - 5.5000000000000000e+00 -2 -3 1013 2.0500000000000000e+01 - - 7.4174232780933380e-02 -6.8477684259414673e-01 - -9.2985051870346069e-01 3.0161842703819275e-01 - <_> - 3.0625425338745117e+01 - - 1 2 1014 1.8500000000000000e+01 0 -1 1015 - 9.3500000000000000e+01 -2 -3 1016 1.4050000000000000e+02 - - -8.1940811872482300e-01 2.9973128437995911e-01 - 7.6479032635688782e-02 -6.5602862834930420e-01 - <_> - 3.0697441101074219e+01 - - 1 2 1017 3.7500000000000000e+01 0 -1 1018 - 2.1500000000000000e+01 -2 -3 1019 5804. - - -4.4756698608398438e-01 2.7423384785652161e-01 - -6.8169790506362915e-01 2.0900464057922363e-01 - <_> - 3.0949892044067383e+01 - - 1 2 1020 5.0000000000000000e-01 0 -1 1021 - 5.5000000000000000e+00 -2 -3 1022 4.5000000000000000e+00 - - -6.4901775121688843e-01 2.5245016813278198e-01 - 2.4039171636104584e-01 -6.1729639768600464e-01 - <_> - 3.0929098129272461e+01 - - 1 2 1023 5.0000000000000000e-01 0 -1 1024 - 6.5000000000000000e+00 -2 -3 1025 1.4500000000000000e+01 - - -3.9928469061851501e-01 5.0110679864883423e-01 - -7.4043375253677368e-01 -4.4123314321041107e-02 - <_> - 3.1333951950073242e+01 - - 1 2 1026 6.5000000000000000e+00 0 -1 1027 - 2.1500000000000000e+01 -2 -3 1028 3.9500000000000000e+01 - - -5.8101430535316467e-02 6.1747199296951294e-01 - 2.6098625734448433e-02 -6.9707942008972168e-01 - <_> - 3.1116010665893555e+01 - - 1 2 1029 2.0150000000000000e+02 0 -1 1030 - 5.0000000000000000e-01 -2 -3 1031 2.8750000000000000e+02 - - 2.9852050542831421e-01 -4.3055999279022217e-01 - 6.7561793327331543e-01 -8.7017469108104706e-02 - <_> - 3.1032897949218750e+01 - - 1 2 1032 8.5000000000000000e+00 0 -1 1033 - 3.5000000000000000e+00 -2 -3 1034 2.3500000000000000e+01 - - -8.2436734437942505e-01 7.9362380504608154e-01 - 3.3129659295082092e-01 -2.2134104371070862e-01 - <_> - 3.0731082916259766e+01 - - 1 2 1035 1.5500000000000000e+01 0 -1 1036 - 1.5000000000000000e+00 -2 -3 1037 2.0500000000000000e+01 - - 5.2363544702529907e-01 -8.2277619838714600e-01 - 3.4363475441932678e-01 -3.0181473493576050e-01 - <_> - 3.1582773208618164e+01 - - 1 2 1038 2.3500000000000000e+01 0 -1 1039 256. -2 -3 1040 - 1245. - - 4.0018074214458466e-02 -5.4246288537979126e-01 - -7.1379941701889038e-01 8.5168963670730591e-01 - <_> - 3.0922315597534180e+01 - - 1 2 1041 1.1500000000000000e+01 0 -1 1042 - 9.7500000000000000e+01 -2 -3 1043 4.2050000000000000e+02 - - 3.3170649409294128e-01 -6.6045612096786499e-01 - -1.4949633181095123e-01 5.1487708091735840e-01 - <_> - 3.0648450851440430e+01 - - 1 2 1044 5.7750000000000000e+02 0 -1 1045 - 5.0000000000000000e-01 -2 -3 1046 3.8250000000000000e+02 - - 4.8874342441558838e-01 -8.4576064348220825e-01 - 6.7698836326599121e-01 -6.0642462223768234e-02 - <_> - 3.0702632904052734e+01 - - 1 2 1047 2.2500000000000000e+01 0 -1 1048 - 1.2950000000000000e+02 -2 -3 1049 3.5650000000000000e+02 - - 5.4180499166250229e-02 -5.0506794452667236e-01 - 7.7279126644134521e-01 -4.4330042600631714e-01 - <_> - 3.1123544692993164e+01 - - 1 2 1050 2.1500000000000000e+01 0 -1 1051 - 1.8500000000000000e+01 -2 -3 1052 5.9500000000000000e+01 - - -3.4420540928840637e-01 5.7321655750274658e-01 - 4.2091187834739685e-01 -6.6199111938476562e-01 - <_> - 3.0851852416992188e+01 - - 1 2 1053 1.5000000000000000e+00 0 -1 1054 - 4.5000000000000000e+00 -2 -3 1055 5.0000000000000000e-01 - - -8.3376497030258179e-01 5.1961439847946167e-01 - 1.9672468304634094e-01 -3.8548988103866577e-01 - <_> - 3.1271551132202148e+01 - - 1 2 1056 5.5000000000000000e+00 0 -1 1057 - 1.5000000000000000e+00 -2 -3 1058 3.2500000000000000e+01 - - 1.9125646352767944e-01 -4.8435854911804199e-01 - 6.1247032880783081e-01 -2.2513453662395477e-01 - <_> - 3.1481870651245117e+01 - - 1 2 1059 2.6500000000000000e+01 0 -1 1060 160. -2 -3 1061 - 1.5000000000000000e+00 - - 5.5120378732681274e-01 -7.5941944122314453e-01 - 4.1089880466461182e-01 -1.3137997686862946e-01 - <_> - 3.1036325454711914e+01 - - 1 2 1062 1.5500000000000000e+01 0 -1 1063 - 1.4500000000000000e+01 -2 -3 1064 2.1500000000000000e+01 - - 3.4304007887840271e-02 -6.1823207139968872e-01 - -2.7733555436134338e-01 6.1952215433120728e-01 - <_> - 3.1423891067504883e+01 - - 1 2 1065 2.5450000000000000e+02 0 -1 1066 - 1.2500000000000000e+01 -2 -3 1067 1.4500000000000000e+01 - - 4.7979310154914856e-01 -9.3194240331649780e-01 - -1.1963248252868652e-01 4.4283005595207214e-01 - <_> - 3.0981994628906250e+01 - - 1 2 1068 4.5000000000000000e+00 0 -1 1069 - 1.5000000000000000e+00 -2 -3 1070 5.0000000000000000e-01 - - -7.1386426687240601e-01 3.3223813772201538e-01 - 5.5634075403213501e-01 -4.5681276917457581e-01 - <_> - 3.1151826858520508e+01 - - 1 2 1071 8.3500000000000000e+01 0 -1 1072 - 6.5000000000000000e+00 -2 -3 1073 32. - - -6.9022941589355469e-01 1.6983160376548767e-01 - -7.8779727220535278e-01 1. - <_> - 3.1287761688232422e+01 - - 1 2 1074 4.2250000000000000e+02 0 -1 1075 - 1.6785000000000000e+03 -2 -3 1076 3.4085000000000000e+03 - - -2.1672263741493225e-01 7.0122992992401123e-01 - -5.5317509174346924e-01 1.3593602180480957e-01 - <_> - 3.1590259552001953e+01 - - 1 2 1077 3.1150000000000000e+02 0 -1 1078 - 1.1500000000000000e+01 -2 -3 1079 1.5000000000000000e+00 - - -4.2860367894172668e-01 3.0249705910682678e-01 - 8.6132842302322388e-01 -5.9583419561386108e-01 - <_> - 3.1790189743041992e+01 - - 1 2 1080 9.3500000000000000e+01 0 -1 1081 - 8.5000000000000000e+00 -2 -3 1082 2.5000000000000000e+00 - - -8.5307538509368896e-01 1.9993139803409576e-01 - 5.2050822973251343e-01 -7.1924048662185669e-01 - <_> - 3.1949237823486328e+01 - - 1 2 1083 1.5000000000000000e+00 0 -1 1084 - 1.8500000000000000e+01 -2 -3 1085 4.7500000000000000e+01 - - -8.7075895071029663e-01 4.1160404682159424e-01 - -4.2329508066177368e-01 3.9578995108604431e-01 - <_> - 3.1551105499267578e+01 - - 1 2 1086 5.0000000000000000e-01 0 -1 1087 - 7.1500000000000000e+01 -2 -3 1088 5.0000000000000000e-01 - - 4.7251659631729126e-01 -6.8467688560485840e-01 - 3.0512693524360657e-01 -3.9813303947448730e-01 - <_> - 3.1931394577026367e+01 - - 1 2 1089 1.9150000000000000e+02 0 -1 1090 - 4.5000000000000000e+00 -2 -3 1091 7.6950000000000000e+02 - - 1.9683115184307098e-01 -5.8899974822998047e-01 - -6.5470945835113525e-01 3.8028964400291443e-01 - <_> - 3.2017967224121094e+01 - - 1 2 1092 7.5000000000000000e+00 0 -1 1093 - 2.8500000000000000e+01 -2 -3 1094 3.7500000000000000e+01 - - 2.7054101228713989e-01 -5.6520724296569824e-01 - -6.2938737869262695e-01 8.6574614048004150e-02 - <_> - 3.2285461425781250e+01 - - 1 2 1095 5.8750000000000000e+02 0 -1 1096 - 5.0000000000000000e-01 -2 -3 1097 1.5500000000000000e+01 - - 1.0511577874422073e-01 -6.9365251064300537e-01 - -6.4478015899658203e-01 2.6749077439308167e-01 - <_> - 3.2811119079589844e+01 - - 1 2 1098 2.1500000000000000e+01 0 -1 1099 - 4.1500000000000000e+01 -2 -3 1100 559. - - -2.0592536032199860e-01 3.7386643886566162e-01 - 7.8755700588226318e-01 -6.8481349945068359e-01 - <_> - 3.2689319610595703e+01 - - 1 2 1101 5.7550000000000000e+02 0 -1 1102 - 3.5000000000000000e+00 -2 -3 1103 9.6500000000000000e+01 - - 3.9178147912025452e-01 -1.2180019915103912e-01 - -9.6077018976211548e-01 -1.4056563377380371e-01 - <_> - 3.2619079589843750e+01 - - 1 2 1104 2.5000000000000000e+00 0 -1 1105 43. -2 -3 1106 - 2.5000000000000000e+00 - - -8.9122837781906128e-01 4.5819079875946045e-01 - 5.5948436260223389e-01 -7.0240341126918793e-02 - <_> - 3.3039958953857422e+01 - - 1 2 1107 2.3955000000000000e+03 0 -1 1108 - 1.2535000000000000e+03 -2 -3 1109 4.0405000000000000e+03 - - 2.9499965906143188e-01 -2.6054748892784119e-01 - 9.8911577463150024e-01 -1. - <_> - 3.3041172027587891e+01 - - 1 2 1110 2.0850000000000000e+02 0 -1 1111 - 2.7500000000000000e+01 -2 -3 1112 4.5000000000000000e+00 - - -6.7137396335601807e-01 1.2141949264332652e-03 - 6.0118967294692993e-01 -2.0657041668891907e-01 - <_> - 3.2776119232177734e+01 - - 1 2 1113 3.5000000000000000e+00 0 -1 1114 - 6.5000000000000000e+00 -2 -3 1115 3.0500000000000000e+01 - - -2.2868818044662476e-01 5.7510751485824585e-01 - -3.6484047770500183e-01 5.1262056827545166e-01 - <_> - 3.2935546875000000e+01 - - 1 2 1116 5.0000000000000000e-01 0 -1 1117 - 2.5000000000000000e+00 -2 -3 1118 5.0000000000000000e-01 - - -7.3760849237442017e-01 4.5924603939056396e-01 - 1.5942642092704773e-01 -4.6601155400276184e-01 - <_> - 3.2656055450439453e+01 - - 1 2 1119 3.3500000000000000e+01 0 -1 1120 - 3.4500000000000000e+01 -2 -3 1121 3.9150000000000000e+02 - - -2.7949050068855286e-01 3.4181603789329529e-01 - 7.1765547990798950e-01 -7.6309484243392944e-01 - <_> - 3.2747634887695312e+01 - - 1 2 1122 2.5000000000000000e+00 0 -1 1123 - 2.5000000000000000e+00 -2 -3 1124 3.5250000000000000e+02 - - -7.4318218231201172e-01 5.3260874748229980e-01 - -5.0913441181182861e-01 9.1580078005790710e-02 - <_> - 3.3188011169433594e+01 - - 1 2 1125 5.6500000000000000e+01 0 -1 1126 - 3.2500000000000000e+01 -2 -3 1127 3.9500000000000000e+01 - - -6.4126682281494141e-01 4.9496468901634216e-01 - -3.9145907759666443e-01 4.4037669897079468e-01 - <_> - 3.3416931152343750e+01 - - 1 2 1128 7.0500000000000000e+01 0 -1 1129 - 1.1500000000000000e+01 -2 -3 1130 9.5000000000000000e+00 - - -3.8201475143432617e-01 2.2891646623611450e-01 - -8.5659736394882202e-01 6.1013686656951904e-01 - <_> - 3.3275886535644531e+01 - - 1 2 1131 4.0500000000000000e+01 0 -1 1132 - 1.9500000000000000e+01 -2 -3 1133 1.3500000000000000e+01 - - 2.6871705055236816e-01 -6.3255614042282104e-01 - 2.3965831100940704e-01 -6.3516211509704590e-01 - <_> - 3.3399391174316406e+01 - - 1 2 1134 5.5000000000000000e+00 0 -1 1135 - 8.5000000000000000e+00 -2 -3 1136 3.0500000000000000e+01 - - -6.6200548410415649e-01 1.5101595222949982e-01 - -7.6606094837188721e-01 2.5947886705398560e-01 - <_> - 3.3559207916259766e+01 - - 1 2 1137 6.5000000000000000e+00 0 -1 1138 - 8.2500000000000000e+01 -2 -3 1139 1.6500000000000000e+01 - - 7.6681274175643921e-01 -6.3294899463653564e-01 - -5.5192285776138306e-01 2.3842744529247284e-02 - <_> - 3.3856239318847656e+01 - - 1 2 1140 1.0500000000000000e+01 0 -1 1141 - 1.7350000000000000e+02 -2 -3 1142 2.7550000000000000e+02 - - 2.9703170061111450e-01 -5.5057585239410400e-01 - -6.4888852834701538e-01 1.1229314655065536e-01 - <_> - 3.3721168518066406e+01 - - 1 2 1143 3.5000000000000000e+00 0 -1 1144 126. -2 -3 1145 - 2.5000000000000000e+00 - - 9.2471975088119507e-01 -7.2330892086029053e-01 - 3.9742922782897949e-01 -1.3506934046745300e-01 - <_> - 3.4096935272216797e+01 - - 1 2 1146 2.3500000000000000e+01 0 -1 1147 - 1.9500000000000000e+01 -2 -3 1148 6.6500000000000000e+01 - - -5.5066823959350586e-01 3.2355815172195435e-01 - 3.7576669454574585e-01 -2.6415929198265076e-01 - <_> - 3.4108264923095703e+01 - - 1 2 1149 1.5000000000000000e+00 0 -1 1150 - 6.5000000000000000e+00 -2 -3 1151 5.0500000000000000e+01 - - -9.7412526607513428e-01 5.2388346195220947e-01 - -4.9519532918930054e-01 1.9004400074481964e-01 - <_> - 3.3904502868652344e+01 - - 1 2 1152 7.7250000000000000e+02 0 -1 1153 77. -2 -3 1154 - 4.8350000000000000e+02 - - -6.9026130437850952e-01 8.2613104581832886e-01 - 6.4011102914810181e-01 -8.1689134240150452e-02 - <_> - 3.4277988433837891e+01 - - 1 2 1155 5.0000000000000000e-01 0 -1 1156 - 7.3150000000000000e+02 -2 -3 1157 5.0000000000000000e-01 - - 4.5011767745018005e-01 -2.4998305737972260e-01 - 8.2632339000701904e-01 -4.2073485255241394e-01 - <_> - 3.4078739166259766e+01 - - 1 2 1158 2.0950000000000000e+02 0 -1 1159 - 1.6755000000000000e+03 -2 -3 1160 6.1815000000000000e+03 - - -2.7588048577308655e-01 9.5124208927154541e-01 - 6.4596521854400635e-01 -3.6611458659172058e-01 - <_> - 3.4438789367675781e+01 - - 1 2 1161 1.5500000000000000e+01 0 -1 1162 - 2.1500000000000000e+01 -2 -3 1163 4.4500000000000000e+01 - - -3.0783519148826599e-01 3.6005032062530518e-01 - 4.5609518885612488e-01 -6.2639898061752319e-01 - <_> - 3.4638523101806641e+01 - - 1 2 1164 3.1500000000000000e+01 0 -1 1165 - 7.5000000000000000e+00 -2 -3 1166 3.2350000000000000e+02 - - -9.4682770967483521e-01 1.9973398745059967e-01 - -6.2348783016204834e-01 6.9902861118316650e-01 - <_> - 3.4201782226562500e+01 - - 1 2 1167 7.5000000000000000e+00 0 -1 1168 - 1.5000000000000000e+00 -2 -3 1169 1.2500000000000000e+01 - - 3.3168455958366394e-01 -4.3674397468566895e-01 - -6.4757126569747925e-01 2.0459994673728943e-01 - <_> - 3.4516929626464844e+01 - - 1 2 1170 1.6500000000000000e+01 0 -1 1171 - 5.0000000000000000e-01 -2 -3 1172 675. - - 2.3890937864780426e-01 -5.7110768556594849e-01 - 3.1514799594879150e-01 -1. - <_> - 3.4619071960449219e+01 - - 1 2 1173 8.6500000000000000e+01 0 -1 1174 - 4.5000000000000000e+00 -2 -3 1175 1.7500000000000000e+01 - - 7.6261973381042480e-01 -8.6133646965026855e-01 -1. - 1.0214501619338989e-01 - <_> - 3.4869640350341797e+01 - - 1 2 1176 5.0000000000000000e-01 0 -1 1177 - 1.2315000000000000e+03 -2 -3 1178 5.0000000000000000e-01 - - 3.7597665190696716e-01 -6.9864195585250854e-01 - 2.0625047385692596e-01 -4.8068267107009888e-01 - <_> - 3.5086204528808594e+01 - - 1 2 1179 1.6500000000000000e+01 0 -1 1180 - 8.3500000000000000e+01 -2 -3 1181 7.5000000000000000e+00 - - 1.4784654974937439e-01 -8.3145272731781006e-01 - -6.7620545625686646e-01 2.1656262874603271e-01 - <_> - 3.4877140045166016e+01 - - 1 2 1182 5.0000000000000000e-01 0 -1 1183 - 3.5000000000000000e+00 -2 -3 1184 969. - - -6.4537084102630615e-01 2.7460998296737671e-01 - -5.3607624769210815e-01 2.8266566991806030e-01 - <_> - 3.5179489135742188e+01 - - 1 2 1185 1.5000000000000000e+00 0 -1 1186 - 7.2500000000000000e+01 -2 -3 1187 3.1500000000000000e+01 - - 9.7988271713256836e-01 -5.9574514627456665e-01 - -1.8132425844669342e-01 5.5573570728302002e-01 - <_> - 3.5144893646240234e+01 - - 1 2 1188 5.0000000000000000e-01 0 -1 1189 - 2.6500000000000000e+01 -2 -3 1190 8.1650000000000000e+02 - - -4.2640584707260132e-01 5.2214205265045166e-01 - 8.3740442991256714e-01 -2.8797909617424011e-01 - <_> - 3.5558689117431641e+01 - - 1 2 1191 5.0000000000000000e-01 0 -1 1192 - 2.6500000000000000e+01 -2 -3 1193 1.2500000000000000e+01 - - -4.3793568015098572e-01 4.1379487514495850e-01 - 1.8940502405166626e-01 -5.4046261310577393e-01 - <_> - 3.5233970642089844e+01 - - 1 2 1194 4.7500000000000000e+01 0 -1 1195 - 8.5000000000000000e+00 -2 -3 1196 338. - - 1.5260761976242065e-01 -4.2628118395805359e-01 - 5.9790462255477905e-01 -5.5013555288314819e-01 - <_> - 3.5332725524902344e+01 - - 1 2 1197 5.0000000000000000e-01 0 -1 1198 - 3.6500000000000000e+01 -2 -3 1199 1.7500000000000000e+01 - - -6.2585823237895966e-02 6.3506704568862915e-01 - -3.5257333517074585e-01 5.9659516811370850e-01 - <_> - 3.5257114410400391e+01 - - 1 2 1200 3.5000000000000000e+00 0 -1 1201 - 7.5000000000000000e+00 -2 -3 1202 1.8500000000000000e+01 - - -9.3612766265869141e-01 3.4692686796188354e-01 - 5.0016778707504272e-01 -7.5611986219882965e-02 - <_> - 3.5595767974853516e+01 - - 1 2 1203 1.0500000000000000e+01 0 -1 1204 - 1.8500000000000000e+01 -2 -3 1205 1.5000000000000000e+00 - - -9.5243799686431885e-01 7.0761454105377197e-01 - 3.3865371346473694e-01 -1.8447074294090271e-01 - <_> - 3.5873832702636719e+01 - - 1 2 1206 1.6350000000000000e+02 0 -1 1207 - 9.1500000000000000e+01 -2 -3 1208 19. - - -1.3119605183601379e-01 4.0907257795333862e-01 - -8.4312802553176880e-01 9.1352003812789917e-01 - <_> - 3.6231769561767578e+01 - - 1 2 1209 4.5000000000000000e+00 0 -1 1210 - 1.5000000000000000e+00 -2 -3 1211 2.0500000000000000e+01 - - -4.6025198698043823e-01 3.4153524041175842e-01 - -5.0537836551666260e-01 3.5793614387512207e-01 - <_> - 3.6177539825439453e+01 - - 1 2 1212 1.5500000000000000e+01 0 -1 1213 - 4.5000000000000000e+00 -2 -3 1214 5.8650000000000000e+02 - - -3.4014788269996643e-01 3.7431231141090393e-01 - -8.9153337478637695e-01 -8.3685964345932007e-02 - <_> - 3.5921119689941406e+01 - - 1 2 1215 5.0000000000000000e-01 0 -1 1216 - 8.5500000000000000e+01 -2 -3 1217 3.3350000000000000e+02 - - 7.2648537158966064e-01 -8.4184181690216064e-01 - -2.5641769170761108e-01 5.9225118160247803e-01 - <_> - 3.5762935638427734e+01 - - 1 2 1218 5.0695000000000000e+03 0 -1 1219 - 4.1865000000000000e+03 -2 -3 1220 1.8500000000000000e+01 - - -1.5818408131599426e-01 7.5127458572387695e-01 - -4.1771730780601501e-01 1.6759181022644043e-01 - <_> - 3.6343830108642578e+01 - - 1 2 1221 5.5000000000000000e+00 0 -1 1222 161. -2 -3 1223 - 5.5000000000000000e+00 - - -7.1770183742046356e-02 -8.2580149173736572e-01 - 6.3310110569000244e-01 -1.1210992932319641e-02 - <_> - 3.6239753723144531e+01 - - 1 2 1224 2.9500000000000000e+01 0 -1 1225 - 2.2500000000000000e+01 -2 -3 1226 2.5000000000000000e+00 - - -5.7685142755508423e-01 5.9265869855880737e-01 - 5.8708161115646362e-01 -1.0407686233520508e-01 - <_> - 3.6570693969726562e+01 - - 1 2 1227 2.6050000000000000e+02 0 -1 1228 - 5.1500000000000000e+01 -2 -3 1229 194. - - -1.3848701119422913e-01 3.8530793786048889e-01 - -9.9199587106704712e-01 7.3519229888916016e-01 - <_> - 3.6172859191894531e+01 - - 1 2 1230 4.5000000000000000e+00 0 -1 1231 2985. -2 -3 1232 - 4.1050000000000000e+02 - - 7.0713436603546143e-01 -7.4149054288864136e-01 - -3.9783236384391785e-01 1.8219061195850372e-01 - <_> - 3.6474601745605469e+01 - - 1 2 1233 7.2850000000000000e+02 0 -1 1234 - 1.0500000000000000e+01 -2 -3 1235 9.5000000000000000e+00 - - -8.5275667905807495e-01 3.0174070596694946e-01 - 5.2034640312194824e-01 -4.9349766969680786e-01 - <_> - 3.6498180389404297e+01 - - 1 2 1236 4.8500000000000000e+01 0 -1 1237 - 9.5000000000000000e+00 -2 -3 1238 4.5000000000000000e+00 - - 7.8738486766815186e-01 -7.6111316680908203e-01 - 5.0128465890884399e-01 -1.1157950758934021e-01 - <_> - 3.6698276519775391e+01 - - 1 2 1239 2.8850000000000000e+02 0 -1 1240 - 2.0500000000000000e+01 -2 -3 1241 1.2805000000000000e+03 - - -4.7094190120697021e-01 2.0009694993495941e-01 1. - -9.3752562999725342e-01 - <_> - 3.6857143402099609e+01 - - 1 2 1242 3.5000000000000000e+00 0 -1 1243 2854. -2 -3 1244 - 5.0000000000000000e-01 - - 4.4445955753326416e-01 -6.2877982854843140e-01 - 2.8415599465370178e-01 -4.0654498338699341e-01 - <_> - 3.6661224365234375e+01 - - 1 2 1245 6.3850000000000000e+02 0 -1 1246 - 1.3500000000000000e+01 -2 -3 1247 2.5000000000000000e+00 - - -2.8753396868705750e-01 4.5057922601699829e-01 - -9.3399870395660400e-01 6.8900948762893677e-01 - <_> - 3.7027565002441406e+01 - - 1 2 1248 1.1500000000000000e+01 0 -1 1249 - 3.5000000000000000e+00 -2 -3 1250 482. - - -8.2890731096267700e-01 3.8032263517379761e-01 - -6.3736891746520996e-01 2.2181304171681404e-02 - <_> - 3.7302738189697266e+01 - - 1 2 1251 1.5000000000000000e+00 0 -1 1252 - 6.5000000000000000e+00 -2 -3 1253 2.1500000000000000e+01 - - -8.7263113260269165e-01 2.7517196536064148e-01 - -6.8864667415618896e-01 -1.0606539435684681e-02 - <_> - 3.7514694213867188e+01 - - 1 2 1254 5.0000000000000000e-01 0 -1 1255 - 1.6555000000000000e+03 -2 -3 1256 2.5500000000000000e+01 - - 5.4653161764144897e-01 -3.8731038570404053e-01 - -2.6684281229972839e-01 5.9316390752792358e-01 - <_> - 3.7565513610839844e+01 - - 1 2 1257 5.7450000000000000e+02 0 -1 1258 - 2.9450000000000000e+02 -2 -3 1259 3.4500000000000000e+01 - - -7.9943376779556274e-01 1. 3.4340542554855347e-01 - -2.2570419311523438e-01 - <_> - 3.7413349151611328e+01 - - 1 2 1260 189. 0 -1 1261 5.0000000000000000e-01 -2 -3 1262 - 2.0500000000000000e+01 - - 7.8168439865112305e-01 -8.3374607563018799e-01 - -1.9817931950092316e-01 3.6079603433609009e-01 - <_> - 3.7554840087890625e+01 - - 1 2 1263 298. 0 -1 1264 3022. -2 -3 1265 - 1.9350000000000000e+02 - - -1.1193416081368923e-02 8.7101829051971436e-01 - 2.1728983521461487e-01 -4.2951995134353638e-01 - <_> - 3.7603076934814453e+01 - - 1 2 1266 1.1500000000000000e+01 0 -1 1267 - 2.5000000000000000e+00 -2 -3 1268 1.0050000000000000e+02 - - 1.7867322266101837e-01 -4.2928701639175415e-01 - 5.2659392356872559e-01 -6.2002837657928467e-01 - <_> - 3.7885494232177734e+01 - - 1 2 1269 1.4500000000000000e+01 0 -1 1270 - 2.5000000000000000e+00 -2 -3 1271 8.0500000000000000e+01 - - 1.8106105923652649e-01 -7.7528846263885498e-01 - -5.8309614658355713e-01 2.8241708874702454e-01 - <_> - 3.7499431610107422e+01 - - 1 2 1272 3.5500000000000000e+01 0 -1 1273 - 2.5000000000000000e+00 -2 -3 1274 7.5000000000000000e+00 - - -9.1437792778015137e-01 5.1539105176925659e-01 - -3.8606551289558411e-01 3.3163914084434509e-01 - <_> - 3.7937980651855469e+01 - - 1 2 1275 1.3500000000000000e+01 0 -1 1276 - 1.4500000000000000e+01 -2 -3 1277 7.9500000000000000e+01 - - -7.2145909070968628e-02 6.0647141933441162e-01 - -6.2856364250183105e-01 8.6137987673282623e-02 - <_> - 3.8185783386230469e+01 - - 1 2 1278 1.4500000000000000e+01 0 -1 1279 73. -2 -3 1280 - 1.0500000000000000e+01 - - -9.4152975082397461e-01 1. 2.4780233204364777e-01 - -4.0907081961631775e-01 - <_> - 3.7849395751953125e+01 - - 1 2 1281 5.0000000000000000e-01 0 -1 1282 - 4.5000000000000000e+00 -2 -3 1283 5.0000000000000000e-01 - - -5.0824928283691406e-01 5.6237548589706421e-01 - 5.4402673244476318e-01 -3.3638605475425720e-01 - <_> - 3.8386943817138672e+01 - - 1 2 1284 2.0450000000000000e+02 0 -1 1285 - 6.7250000000000000e+02 -2 -3 1286 1.2385000000000000e+03 - - 3.9266860485076904e-01 -3.8152101635932922e-01 - 5.9661215543746948e-01 -3.8554838299751282e-01 - <_> - 3.8467891693115234e+01 - - 1 2 1287 5.5000000000000000e+00 0 -1 1288 - 9.0500000000000000e+01 -2 -3 1289 1.5000000000000000e+00 - - 2.1883549168705940e-02 -6.2764549255371094e-01 - 7.0444834232330322e-01 -4.4701110571622849e-02 - <_> - 3.8550418853759766e+01 - - 1 2 1290 2.8350000000000000e+02 0 -1 1291 - 1.4500000000000000e+01 -2 -3 1292 58. - - -8.5395231842994690e-02 5.9592086076736450e-01 - 9.0824156999588013e-01 -8.9943450689315796e-01 - <_> - 3.8631130218505859e+01 - - 1 2 1293 2.5000000000000000e+00 0 -1 1294 - 9.5000000000000000e+00 -2 -3 1295 5.5000000000000000e+00 - - -3.6073815822601318e-01 5.3091663122177124e-01 - 1.6989825665950775e-01 -4.6344351768493652e-01 - <_> - 3.8474849700927734e+01 - - 1 2 1296 5.7750000000000000e+02 0 -1 1297 - 1.9250000000000000e+02 -2 -3 1298 2.6195000000000000e+03 - - -8.1247472763061523e-01 2.9322347044944763e-01 - 3.5261180996894836e-01 -2.4546836316585541e-01 - <_> - 3.8279983520507812e+01 - - 1 2 1299 4.4500000000000000e+01 0 -1 1300 1096. -2 -3 1301 - 5.0000000000000000e-01 - - 6.6110774874687195e-02 -7.6391810178756714e-01 - 5.6174814701080322e-01 -7.3350854218006134e-02 - <_> - 3.8626735687255859e+01 - - 1 2 1302 3.4350000000000000e+02 0 -1 1303 - 5.0000000000000000e-01 -2 -3 1304 7.1750000000000000e+02 - - 3.5977458953857422e-01 -2.1690338850021362e-01 - 9.9256932735443115e-01 -1. - <_> - 3.8572544097900391e+01 - - 1 2 1305 1.1500000000000000e+01 0 -1 1306 - 1.2500000000000000e+01 -2 -3 1307 5.0000000000000000e-01 - - -9.2809075117111206e-01 8.5182946920394897e-01 - 4.9062111973762512e-01 -5.4192960262298584e-02 - <_> - 3.8948635101318359e+01 - - 1 2 1308 4.2550000000000000e+02 0 -1 1309 - 7.6500000000000000e+01 -2 -3 1310 8986. - - -4.5830437541007996e-01 1.6672098636627197e-01 - 7.7317571640014648e-01 -2.2485339641571045e-01 - <_> - 3.9342456817626953e+01 - - 1 2 1311 6.9500000000000000e+01 0 -1 1312 - 3.5500000000000000e+01 -2 -3 1313 1.0545000000000000e+03 - - -1.2714000418782234e-02 6.2372517585754395e-01 - -5.7864826917648315e-01 5.6230723857879639e-01 - <_> - 3.9216064453125000e+01 - - 1 2 1314 5.2750000000000000e+02 0 -1 1315 - 1.9048500000000000e+04 -2 -3 1316 4.5000000000000000e+00 - - -1. 7.7397161722183228e-01 1.6222594678401947e-01 - -3.9657172560691833e-01 - <_> - 3.9446334838867188e+01 - - 1 2 1317 3.5000000000000000e+00 0 -1 1318 - 6.3500000000000000e+01 -2 -3 1319 288. - - 3.8338693976402283e-01 -9.0452802181243896e-01 - -5.4537796974182129e-01 2.3026967048645020e-01 - <_> - 3.9339183807373047e+01 - - 1 2 1320 1.1500000000000000e+01 0 -1 1321 - 5.0000000000000000e-01 -2 -3 1322 3472. - - 3.7719848752021790e-01 -2.7750793099403381e-01 - -7.6843172311782837e-01 3.3132901880890131e-03 - <_> - 3.9513347625732422e+01 - - 1 2 1323 2.1500000000000000e+01 0 -1 1324 - 4.5000000000000000e+00 -2 -3 1325 1.1500000000000000e+01 - - 1.7416687309741974e-01 -4.6917149424552917e-01 - 5.5244189500808716e-01 -4.0332382917404175e-01 - <_> - 3.9441356658935547e+01 - - 1 2 1326 2.5500000000000000e+01 0 -1 1327 - 5.0000000000000000e-01 -2 -3 1328 4.5000000000000000e+00 - - 1.5569829940795898e-01 -8.3738613128662109e-01 - 5.1308917999267578e-01 -9.2380218207836151e-02 - <_> - 3.9830265045166016e+01 - - 1 2 1329 6.8500000000000000e+01 0 -1 1330 - 1.2500000000000000e+01 -2 -3 1331 2043. - - -1.6650912165641785e-01 3.8890799880027771e-01 - -8.0130118131637573e-01 8.2459330558776855e-01 - <_> - 3.9304054260253906e+01 - - 1 2 1332 5.0000000000000000e-01 0 -1 1333 3671. -2 -3 1334 - 3.8850000000000000e+02 - - 4.6532985568046570e-01 -4.4042190909385681e-01 - -5.5587589740753174e-01 1.3195018470287323e-01 - <_> - 3.9642890930175781e+01 - - 1 2 1335 8.5000000000000000e+00 0 -1 1336 - 2.1500000000000000e+01 -2 -3 1337 4.7350000000000000e+02 - - -5.9328550100326538e-01 3.3883699774742126e-01 - -6.9553929567337036e-01 1.5794724225997925e-01 - <_> - 3.9908969879150391e+01 - - 1 2 1338 5.5000000000000000e+00 0 -1 1339 - 1.3500000000000000e+01 -2 -3 1340 1.7500000000000000e+01 - - -6.7269146442413330e-01 2.6607844233512878e-01 - 6.0325987637042999e-02 -6.9073736667633057e-01 - <_> - 3.9898288726806641e+01 - - 1 2 1341 2.5950000000000000e+02 0 -1 1342 - 1.5500000000000000e+01 -2 -3 1343 1467. - - -7.4252463877201080e-02 6.0873824357986450e-01 - 8.6466276645660400e-01 -9.0673094987869263e-01 - <_> - 4.0200969696044922e+01 - - 1 2 1344 2.2500000000000000e+01 0 -1 1345 - 2.5000000000000000e+00 -2 -3 1346 9.5000000000000000e+00 - - -6.9203126430511475e-01 3.0267745256423950e-01 - 5.9105551242828369e-01 -5.3770178556442261e-01 - <_> - 4.0379238128662109e+01 - - 1 2 1347 2.9500000000000000e+01 0 -1 1348 - 8.3450000000000000e+02 -2 -3 1349 2.5000000000000000e+00 - - 3.7345203757286072e-01 -8.9355528354644775e-01 - 5.5846959352493286e-01 -5.8389563113451004e-02 - <_> - 4.0466419219970703e+01 - - 1 2 1350 3.1150000000000000e+02 0 -1 1351 - 5.0000000000000000e-01 -2 -3 1352 43. - - 3.1653991341590881e-01 -4.0619984269142151e-01 - -9.6266198158264160e-01 5.1727998256683350e-01 - <_> - 4.0718650817871094e+01 - - 1 2 1353 2.6150000000000000e+02 0 -1 1354 98. -2 -3 1355 - 8.5000000000000000e+00 - - -5.2089494466781616e-01 2.5222977995872498e-01 - -6.5091305971145630e-01 5.5701977014541626e-01 - <_> - 4.0246669769287109e+01 - - 1 2 1356 5.0000000000000000e-01 0 -1 1357 - 7.5000000000000000e+00 -2 -3 1358 2.0850000000000000e+02 - - -7.2299337387084961e-01 5.0567185878753662e-01 - -4.7197958827018738e-01 2.6619127392768860e-01 - <_> - 4.0419990539550781e+01 - - 1 2 1359 5.4705000000000000e+03 0 -1 1360 - 5.4750000000000000e+02 -2 -3 1361 1.5750000000000000e+02 - - 1.7332153022289276e-01 -6.0361874103546143e-01 - -9.6441686153411865e-01 1. - <_> - 4.1056423187255859e+01 - - 1 2 1362 5.0000000000000000e-01 0 -1 1363 - 3.5000000000000000e+00 -2 -3 1364 7.8350000000000000e+02 - - 6.3643354177474976e-01 -8.3072267472743988e-02 - -3.8505536317825317e-01 5.1825720071792603e-01 - <_> - 4.0787433624267578e+01 - - 1 2 1365 8.5000000000000000e+00 0 -1 1366 - 4.1250000000000000e+02 -2 -3 1367 3.0850000000000000e+02 - - -2.2618213668465614e-02 -7.3404783010482788e-01 - 5.4074966907501221e-01 -6.5069526433944702e-01 - <_> - 4.0980438232421875e+01 - - 1 2 1368 1.0750000000000000e+02 0 -1 1369 - 4.5500000000000000e+01 -2 -3 1370 1.5500000000000000e+01 - - 2.9288902878761292e-01 -7.8175473213195801e-01 - 4.1299736499786377e-01 -2.0014704763889313e-01 - <_> - 4.0946659088134766e+01 - - 1 2 1371 2.2500000000000000e+01 0 -1 1372 - 1.6500000000000000e+01 -2 -3 1373 2.5000000000000000e+00 - - -6.0043293237686157e-01 2.2489283978939056e-01 - 5.3942525386810303e-01 -1.2392763793468475e-01 - <_> - 4.0625984191894531e+01 - - 1 2 1374 5.8450000000000000e+02 0 -1 1375 3981. -2 -3 1376 - 3.8850000000000000e+02 - - -6.5919399261474609e-01 7.3984676599502563e-01 - 6.0902094841003418e-01 -5.9394266456365585e-02 - <_> - 4.1078342437744141e+01 - - 1 2 1377 1.5000000000000000e+00 0 -1 1378 - 9.5000000000000000e+00 -2 -3 1379 2.5000000000000000e+00 - - -9.4205194711685181e-01 5.8499878644943237e-01 - 4.5235899090766907e-01 -1.7015253007411957e-01 - <_> - 4.1278953552246094e+01 - - 1 2 1380 2.7950000000000000e+02 0 -1 1381 - 2.7950000000000000e+02 -2 -3 1382 7572. - - -1.0575494915246964e-01 7.5965499877929688e-01 - -5.6243377923965454e-01 1.3653093576431274e-01 - <_> - 4.1171962738037109e+01 - - 1 2 1383 5.5000000000000000e+00 0 -1 1384 - 8.6950000000000000e+02 -2 -3 1385 3.5000000000000000e+00 - - 3.1256729364395142e-01 -4.9650138616561890e-01 - 5.3703850507736206e-01 -1.0799391567707062e-01 - <_> - 4.1153244018554688e+01 - - 1 2 1386 1.5000000000000000e+00 0 -1 1387 - 8.5000000000000000e+00 -2 -3 1388 1.4500000000000000e+01 - - -1.8950442969799042e-01 5.2447348833084106e-01 - -4.3827834725379944e-01 3.5529047250747681e-01 - <_> - 4.1464454650878906e+01 - - 1 2 1389 2.7500000000000000e+01 0 -1 1390 - 3.1500000000000000e+01 -2 -3 1391 4.5000000000000000e+00 - - -3.4287273883819580e-01 3.1121128797531128e-01 - 2.0723707973957062e-01 -7.9717916250228882e-01 - <_> - 4.1779788970947266e+01 - - 1 2 1392 1.5000000000000000e+00 0 -1 1393 - 1.8265000000000000e+03 -2 -3 1394 2.8650000000000000e+02 - - 8.0022591352462769e-01 -2.8835564851760864e-01 - 3.1533339619636536e-01 -3.5018000006675720e-01 - <_> - 4.2194210052490234e+01 - - 1 2 1395 2.2500000000000000e+01 0 -1 1396 - 2.2500000000000000e+01 -2 -3 1397 7.5000000000000000e+00 - - 7.3232901096343994e-01 -7.3244142532348633e-01 - 3.6955040693283081e-01 -2.0323853194713593e-01 - <_> - 4.1935131072998047e+01 - - 1 2 1398 9.4500000000000000e+01 0 -1 1399 - 4.0500000000000000e+01 -2 -3 1400 2.2500000000000000e+01 - - 1.9609075784683228e-01 -4.6288254857063293e-01 - 6.2146210670471191e-01 -3.8049280643463135e-01 - <_> - 4.2215938568115234e+01 - - 1 2 1401 2.9500000000000000e+01 0 -1 1402 - 5.0000000000000000e-01 -2 -3 1403 1.0500000000000000e+01 - - 3.9385579526424408e-02 -7.3405563831329346e-01 - -5.1055783033370972e-01 2.8080457448959351e-01 - <_> - 4.2273452758789062e+01 - - 1 2 1404 4.5450000000000000e+02 0 -1 1405 - 5.8750000000000000e+02 -2 -3 1406 9.5000000000000000e+00 - - -3.3196282386779785e-01 2.5219461321830750e-01 - 7.2692161798477173e-01 -8.5374397039413452e-01 - <_> - 4.2540458679199219e+01 - - 1 2 1407 1.5000000000000000e+00 0 -1 1408 - 1.0500000000000000e+01 -2 -3 1409 3.7950000000000000e+02 - - -5.1572650671005249e-01 2.6700666546821594e-01 - 5.4633575677871704e-01 -6.4842927455902100e-01 - <_> - 4.2285171508789062e+01 - - 1 2 1410 4.5000000000000000e+00 0 -1 1411 - 4.8500000000000000e+01 -2 -3 1412 1.1500000000000000e+01 - - -4.3229374289512634e-01 5.2580875158309937e-01 - -3.8174706697463989e-01 6.1482822895050049e-01 - <_> - 4.2519309997558594e+01 - - 1 2 1413 1.2500000000000000e+01 0 -1 1414 - 7.5000000000000000e+00 -2 -3 1415 3.7500000000000000e+01 - - -6.5897458791732788e-01 2.3413842916488647e-01 - -6.6297173500061035e-01 9.3680036067962646e-01 - <_> - 4.2602912902832031e+01 - - 1 2 1416 2.7850000000000000e+02 0 -1 1417 - 6.7750000000000000e+02 -2 -3 1418 6.5750000000000000e+02 - - -5.7975625991821289e-01 6.0615879297256470e-01 - -4.7606697678565979e-01 1.9234745204448700e-01 - <_> - 4.2477813720703125e+01 - - 1 2 1419 3.5000000000000000e+00 0 -1 1420 - 5.0000000000000000e-01 -2 -3 1421 9.6750000000000000e+02 - - -1. 5.3890687227249146e-01 -2.7986538410186768e-01 - 5.5624389648437500e-01 - <_> - 4.2815971374511719e+01 - - 1 2 1422 2.5000000000000000e+00 0 -1 1423 3470. -2 -3 1424 - 1.3150000000000000e+02 - - 3.3815622329711914e-01 -6.8323451280593872e-01 - -5.7661479711532593e-01 1.8929332494735718e-01 - <_> - 4.2939407348632812e+01 - - 1 2 1425 1835. 0 -1 1426 1485. -2 -3 1427 - 5.0000000000000000e-01 - - -9.3249452114105225e-01 8.5018444061279297e-01 - 1.2343621253967285e-01 -4.1629931330680847e-01 - <_> - 4.2931537628173828e+01 - - 1 2 1428 6.5000000000000000e+00 0 -1 1429 - 9.5000000000000000e+00 -2 -3 1430 8.3500000000000000e+01 - - -5.8253604173660278e-01 2.3116320371627808e-01 - 4.4566446542739868e-01 -2.5381112098693848e-01 - <_> - 4.2532341003417969e+01 - - 1 2 1431 801. 0 -1 1432 1.4500000000000000e+01 -2 -3 1433 - 2.2500000000000000e+01 - - 2.3233406245708466e-01 -8.8682103157043457e-01 - 2.7638220787048340e-01 -3.9919924736022949e-01 - <_> - 4.2818271636962891e+01 - - 1 2 1434 3.3500000000000000e+01 0 -1 1435 - 5.0000000000000000e-01 -2 -3 1436 5.5000000000000000e+00 - - 2.6199400424957275e-01 -7.7381122112274170e-01 - 3.9374157786369324e-01 -1.9156071543693542e-01 - <_> - 4.3225166320800781e+01 - - 1 2 1437 3.0650000000000000e+02 0 -1 1438 - 3.5000000000000000e+00 -2 -3 1439 2.2750000000000000e+02 - - 1.6485489904880524e-01 -5.3608208894729614e-01 - 4.0689289569854736e-01 -6.9017094373703003e-01 - <_> - 4.3414455413818359e+01 - - 1 2 1440 4.9500000000000000e+01 0 -1 1441 - 3.2550000000000000e+02 -2 -3 1442 7.5500000000000000e+01 - - -7.2704082727432251e-01 9.2259776592254639e-01 - 1.8928927183151245e-01 -7.1190369129180908e-01 - <_> - 4.3530220031738281e+01 - - 1 2 1443 8.5000000000000000e+00 0 -1 1444 - 5.5000000000000000e+00 -2 -3 1445 33. - - -2.6097178459167480e-01 3.5981386899948120e-01 - 5.5373930931091309e-01 -5.9446001052856445e-01 - <_> - 4.3589599609375000e+01 - - 1 2 1446 1.7500000000000000e+01 0 -1 1447 - 1.5000000000000000e+00 -2 -3 1448 7.1500000000000000e+01 - - -8.9150971174240112e-01 4.0421536564826965e-01 - -5.9817147254943848e-01 1.3356564939022064e-01 - <_> - 4.3756496429443359e+01 - - 1 2 1449 2.7150000000000000e+02 0 -1 1450 - 3.1500000000000000e+01 -2 -3 1451 7.5000000000000000e+00 - - -7.5597035884857178e-01 7.5368809700012207e-01 - 2.0741133391857147e-01 -3.4641715884208679e-01 - <_> - 4.4184627532958984e+01 - - 1 2 1452 3.4445000000000000e+03 0 -1 1453 - 1.3500000000000000e+01 -2 -3 1454 7.5000000000000000e+00 - - -3.4672267735004425e-02 6.4763146638870239e-01 - -5.8406358957290649e-01 9.5271444320678711e-01 - <_> - 4.4115615844726562e+01 - - 1 2 1455 351. 0 -1 1456 5.5000000000000000e+00 -2 -3 1457 - 1.3150000000000000e+02 - - 1. -9.0385907888412476e-01 5.6236469745635986e-01 - -6.9008864462375641e-02 - <_> - 4.3778049468994141e+01 - - 1 2 1458 2.1950000000000000e+02 0 -1 1459 - 1.7500000000000000e+01 -2 -3 1460 1446. - - 1.1805868148803711e-01 -4.6155539155006409e-01 - 8.1571227312088013e-01 -4.5998147130012512e-01 - <_> - 4.3705924987792969e+01 - - 1 2 1461 5.4500000000000000e+01 0 -1 1462 - 5.0000000000000000e-01 -2 -3 1463 2.0500000000000000e+01 - - 1.5270361304283142e-01 -7.6259005069732666e-01 - -4.3407937884330750e-01 3.2683727145195007e-01 - <_> - 4.3761566162109375e+01 - - 1 2 1464 1.5000000000000000e+00 0 -1 1465 - 2.5000000000000000e+00 -2 -3 1466 2.5000000000000000e+00 - - -4.2883574962615967e-01 4.9130806326866150e-01 - 7.2157061100006104e-01 -3.4332326054573059e-01 - <_> - 4.4159553527832031e+01 - - 1 2 1467 1.8850000000000000e+02 0 -1 1468 - 4.4500000000000000e+01 -2 -3 1469 1.6865000000000000e+03 - - -1.2656107544898987e-01 3.9798957109451294e-01 - -8.5940158367156982e-01 7.5859928131103516e-01 - <_> - 4.4086994171142578e+01 - - 1 2 1470 3.5000000000000000e+00 0 -1 1471 - 1.6500000000000000e+01 -2 -3 1472 2.0500000000000000e+01 - - -7.1025812625885010e-01 3.1149634718894958e-01 - 4.1715073585510254e-01 -5.0822889804840088e-01 - <_> - 4.4548297882080078e+01 - - 1 2 1473 5.0000000000000000e-01 0 -1 1474 - 6.3500000000000000e+01 -2 -3 1475 1.4450000000000000e+02 - - -1.9292996823787689e-01 5.2084052562713623e-01 - -1.8266052007675171e-02 -7.4490708112716675e-01 - <_> - 4.4444839477539062e+01 - - 1 2 1476 5.5000000000000000e+00 0 -1 1477 - 1.8500000000000000e+01 -2 -3 1478 2.1500000000000000e+01 - - -5.8617092669010162e-02 5.7820588350296021e-01 - -4.1243070363998413e-01 6.0866367816925049e-01 - <_> - 4.4468860626220703e+01 - - 1 2 1479 4.5000000000000000e+00 0 -1 1480 - 2.3450000000000000e+02 -2 -3 1481 1.4500000000000000e+01 - - 2.8463301062583923e-01 -8.2563692331314087e-01 - -5.8707511425018311e-01 2.5017964839935303e-01 - <_> - 4.4571441650390625e+01 - - 1 2 1482 3.3450000000000000e+02 0 -1 1483 - 2.1500000000000000e+01 -2 -3 1484 946. - - -4.3612629175186157e-01 1.0257755219936371e-01 - 9.7813111543655396e-01 -8.0724465847015381e-01 - <_> - 4.4642127990722656e+01 - - 1 2 1485 1.5000000000000000e+00 0 -1 1486 - 8.5000000000000000e+00 -2 -3 1487 2.0500000000000000e+01 - - -9.3800437450408936e-01 6.0421532392501831e-01 - -6.4370167255401611e-01 2.7616502717137337e-02 - <_> - 4.4928077697753906e+01 - - 1 2 1488 5.0000000000000000e-01 0 -1 1489 - 2.6500000000000000e+01 -2 -3 1490 7.9250000000000000e+02 - - -6.6210180521011353e-02 6.4315652847290039e-01 - 6.9847983121871948e-01 -3.6571246385574341e-01 - <_> - 4.4592266082763672e+01 - - 1 2 1491 5.0000000000000000e-01 0 -1 1492 - 5.5350000000000000e+02 -2 -3 1493 1.5000000000000000e+00 - - -3.8149592280387878e-01 6.3860899209976196e-01 - 3.4885448217391968e-01 -3.3581241965293884e-01 - <_> - 4.4829784393310547e+01 - - 1 2 1494 1.5500000000000000e+01 0 -1 1495 - 2.7850000000000000e+02 -2 -3 1496 3.5000000000000000e+00 - - 6.8045026063919067e-01 -8.0610173940658569e-01 - -5.2162581682205200e-01 2.3751950263977051e-01 - <_> - 4.5090461730957031e+01 - - 1 2 1497 2.3500000000000000e+01 0 -1 1498 - 5.5000000000000000e+00 -2 -3 1499 1.3500000000000000e+01 - - -1.3596580922603607e-01 4.8954018950462341e-01 - -5.6967926025390625e-01 3.6096325516700745e-01 - <_> - 4.5232925415039062e+01 - - 1 2 1500 2154. 0 -1 1501 2.7550000000000000e+02 -2 -3 1502 - 128. - - 1.4246465265750885e-01 -8.8002961874008179e-01 1. - -9.7181195020675659e-01 - <_> - 4.5529132843017578e+01 - - 1 2 1503 5.8750000000000000e+02 0 -1 1504 3981. -2 -3 1505 - 5.0000000000000000e-01 - - -5.8577227592468262e-01 5.8029693365097046e-01 - 4.0880706906318665e-01 -2.0956511795520782e-01 - <_> - 4.5304393768310547e+01 - - 1 2 1506 1.6785000000000000e+03 0 -1 1507 - 4.2005000000000000e+03 -2 -3 1508 359. - - 2.9394268989562988e-02 8.0651479959487915e-01 - -3.3733904361724854e-01 6.9124865531921387e-01 - <_> - 4.5737625122070312e+01 - - 1 2 1509 2.7500000000000000e+01 0 -1 1510 - 5.0000000000000000e-01 -2 -3 1511 2.5000000000000000e+00 - - 2.7190417051315308e-01 -6.8398970365524292e-01 - 5.1673895120620728e-01 -5.9552457183599472e-02 - <_> - 4.5805149078369141e+01 - - 1 2 1512 5.6550000000000000e+02 0 -1 1513 - 1.1500000000000000e+01 -2 -3 1514 1.3500000000000000e+01 - - -5.3953158855438232e-01 4.1888201236724854e-01 - -7.7625131607055664e-01 -1.5986794605851173e-02 - <_> - 4.5724216461181641e+01 - - 1 2 1515 1.0500000000000000e+01 0 -1 1516 - 5.5000000000000000e+00 -2 -3 1517 25. - - 4.2757162451744080e-01 -2.2005110979080200e-01 - -5.4273819923400879e-01 8.9083051681518555e-01 - <_> - 4.5885368347167969e+01 - - 1 2 1518 238. 0 -1 1519 9.5000000000000000e+00 -2 -3 1520 - 2.0850000000000000e+02 - - -9.5597231388092041e-01 5.2587646245956421e-01 - 1.6115142405033112e-01 -7.6278209686279297e-01 - <_> - 4.5789482116699219e+01 - - 1 2 1521 2.9500000000000000e+01 0 -1 1522 - 2.6500000000000000e+01 -2 -3 1523 1.5450000000000000e+02 - - 1.6601219773292542e-01 -7.7067446708679199e-01 - -6.6907399892807007e-01 2.2051426768302917e-01 - <_> - 4.5806617736816406e+01 - - 1 2 1524 4.5000000000000000e+00 0 -1 1525 - 1.1500000000000000e+01 -2 -3 1526 3.5000000000000000e+00 - - -5.7005125284194946e-01 2.7322229743003845e-01 - 7.9801094532012939e-01 -5.2006053924560547e-01 - <_> - 4.6323131561279297e+01 - - 1 2 1527 1.3500000000000000e+01 0 -1 1528 - 3.4500000000000000e+01 -2 -3 1529 3.5000000000000000e+00 - - -5.5972643196582794e-02 5.1800715923309326e-01 - 3.3099360764026642e-02 -9.6488022804260254e-01 - <_> - 4.6282222747802734e+01 - - 1 2 1530 7.7250000000000000e+02 0 -1 1531 - 1.3500000000000000e+01 -2 -3 1532 1.1545000000000000e+03 - - -1.0771922767162323e-02 -8.7211072444915771e-01 - 7.0063769817352295e-01 -4.2402658611536026e-02 - <_> - 4.6205421447753906e+01 - - 1 2 1533 1.5000000000000000e+00 0 -1 1534 - 1.1500000000000000e+01 -2 -3 1535 1.5500000000000000e+01 - - -7.8480374813079834e-01 4.9849182367324829e-01 - 2.8026169538497925e-01 -3.8838988542556763e-01 - <_> - 4.6704681396484375e+01 - - 1 2 1536 2.5650000000000000e+02 0 -1 1537 - 9.5000000000000000e+00 -2 -3 1538 3.6145000000000000e+03 - - 8.8258177042007446e-01 -1. -6.1924713850021362e-01 - 6.9299057126045227e-02 - <_> - 4.6858192443847656e+01 - - 1 2 1539 1.6500000000000000e+01 0 -1 1540 - 2.1950000000000000e+02 -2 -3 1541 5.0000000000000000e-01 - - 3.5154920816421509e-01 -7.6912820339202881e-01 - 4.3404066562652588e-01 -1.0876829922199249e-01 - <_> - 4.6701599121093750e+01 - - 1 2 1542 3.5000000000000000e+00 0 -1 1543 - 4.1500000000000000e+01 -2 -3 1544 4.5000000000000000e+00 - - -8.0593466758728027e-01 6.3903629779815674e-01 - 4.0837219357490540e-01 -1.5659359097480774e-01 - <_> - 4.6904064178466797e+01 - - 1 2 1545 2.9500000000000000e+01 0 -1 1546 - 1.5000000000000000e+00 -2 -3 1547 219. - - -4.2634201049804688e-01 2.0246233046054840e-01 - -8.5641664266586304e-01 1. - <_> - 4.6656322479248047e+01 - - 1 2 1548 6.5000000000000000e+00 0 -1 1549 - 3.2500000000000000e+01 -2 -3 1550 4.1650000000000000e+02 - - -2.4700936675071716e-01 6.6941606998443604e-01 - 3.2602754235267639e-01 -3.6878246068954468e-01 - <_> - 4.6564968109130859e+01 - - 1 2 1551 1.2450000000000000e+02 0 -1 1552 - 5.5000000000000000e+00 -2 -3 1553 2.4150000000000000e+02 - - 4.5446833968162537e-01 -3.7261262536048889e-01 - 4.6772354841232300e-01 -7.1237772703170776e-01 - <_> - 4.6805198669433594e+01 - - 1 2 1554 4.5000000000000000e+00 0 -1 1555 - 7.3500000000000000e+01 -2 -3 1556 1.9500000000000000e+01 - - 2.4023169279098511e-01 -4.3494370579719543e-01 - -8.5679495334625244e-01 5.3150933980941772e-01 - <_> - 4.6938976287841797e+01 - - 1 2 1557 2.0850000000000000e+02 0 -1 1558 - 1.5000000000000000e+00 -2 -3 1559 4.5000000000000000e+00 - - 1.3377590477466583e-01 -4.7894757986068726e-01 - -7.4763888120651245e-01 4.7673630714416504e-01 - <_> - 4.7246456146240234e+01 - - 1 2 1560 2.5000000000000000e+00 0 -1 1561 6. -2 -3 1562 - 1.5000000000000000e+00 - - -9.0447050333023071e-01 8.6583727598190308e-01 - 3.0747944116592407e-01 -2.1712197363376617e-01 - <_> - 4.7012886047363281e+01 - - 1 2 1563 1.0500000000000000e+01 0 -1 1564 - 2.5000000000000000e+00 -2 -3 1565 2.4500000000000000e+01 - - -8.6812806129455566e-01 7.4207389354705811e-01 - -4.6920669078826904e-01 2.0873917639255524e-01 - <_> - 4.7398384094238281e+01 - - 1 2 1566 5.0000000000000000e-01 0 -1 1567 - 4.1500000000000000e+01 -2 -3 1568 1.2365000000000000e+03 - - -2.2475609183311462e-01 5.0746756792068481e-01 - -5.6809660047292709e-02 -7.4659413099288940e-01 - <_> - 4.7630195617675781e+01 - - 1 2 1569 7.5000000000000000e+00 0 -1 1570 - 4.5500000000000000e+01 -2 -3 1571 27. - - 2.3181208968162537e-01 -6.4988273382186890e-01 - -6.4328664541244507e-01 6.1851358413696289e-01 - <_> - 4.7380603790283203e+01 - - 1 2 1572 5.5000000000000000e+00 0 -1 1573 - 2.5000000000000000e+00 -2 -3 1574 1.8650000000000000e+02 - - 6.1403033323585987e-03 -5.5332463979721069e-01 - 4.5167797803878784e-01 -7.4148744344711304e-01 - <_> - 4.7716838836669922e+01 - - 1 2 1575 5.0500000000000000e+01 0 -1 1576 340. -2 -3 1577 - 1.5000000000000000e+00 - - 4.3912079930305481e-01 -7.3454135656356812e-01 - 6.4382767677307129e-01 -1.5953628346323967e-02 - <_> - 4.7556518554687500e+01 - - 1 2 1578 8.4500000000000000e+01 0 -1 1579 311. -2 -3 1580 - 5.0000000000000000e-01 - - 8.0123282968997955e-02 -7.0855069160461426e-01 - 4.7582688927650452e-01 -1.6031953692436218e-01 - <_> - 4.7572052001953125e+01 - - 1 2 1581 4.1250000000000000e+02 0 -1 1582 - 2.5000000000000000e+00 -2 -3 1583 1.0405000000000000e+03 - - 5.3272254765033722e-02 -6.1080712080001831e-01 - 5.7476472854614258e-01 -3.3661961555480957e-01 - <_> - 4.7565738677978516e+01 - - 1 2 1584 8.1450000000000000e+02 0 -1 1585 - 5.7750000000000000e+02 -2 -3 1586 8.5000000000000000e+00 - - 8.0671536922454834e-01 -4.1966786980628967e-01 - 1.6598591208457947e-01 -3.8562926650047302e-01 - <_> - 4.7773296356201172e+01 - - 1 2 1587 1.5000000000000000e+00 0 -1 1588 1174. -2 -3 1589 - 3.9500000000000000e+01 - - 1. -9.7881591320037842e-01 2.0755772292613983e-01 - -5.1666331291198730e-01 - <_> - 4.8310127258300781e+01 - - 1 2 1590 1.9500000000000000e+01 0 -1 1591 - 5.0000000000000000e-01 -2 -3 1592 3.5000000000000000e+00 - - 7.0349156856536865e-01 -7.1407133340835571e-01 - 5.4187601804733276e-01 -9.5178633928298950e-02 - <_> - 4.8071701049804688e+01 - - 1 2 1593 801. 0 -1 1594 8.5000000000000000e+00 -2 -3 1595 - 8.5000000000000000e+00 - - -2.3842808604240417e-01 4.0528839826583862e-01 - 8.4955078363418579e-01 -9.1280186176300049e-01 - <_> - 4.8208892822265625e+01 - - 1 2 1596 6.5000000000000000e+00 0 -1 1597 - 4.1500000000000000e+01 -2 -3 1598 1.8500000000000000e+01 - - -9.3895512819290161e-01 3.3225542306900024e-01 - -5.6959801912307739e-01 1.9758279621601105e-01 - <_> - 4.8468334197998047e+01 - - 1 2 1599 644. 0 -1 1600 3.1500000000000000e+01 -2 -3 1601 - 2.5500000000000000e+01 - - 4.6466782689094543e-01 -7.2437942028045654e-01 - 2.5944426655769348e-01 -5.1669490337371826e-01 - <_> - 4.8280807495117188e+01 - - 1 2 1602 5.8750000000000000e+02 0 -1 1603 998. -2 -3 1604 - 1.9450000000000000e+02 - - -5.6361049413681030e-01 8.2740515470504761e-01 - 7.3864108324050903e-01 -3.1339693814516068e-02 - <_> - 4.8574962615966797e+01 - - 1 2 1605 2.3450000000000000e+02 0 -1 1606 - 1.5000000000000000e+00 -2 -3 1607 1.4050000000000000e+02 - - 3.6085158586502075e-01 -1.9539615511894226e-01 - -9.4802927970886230e-01 2.6839014887809753e-01 - <_> - 4.8454341888427734e+01 - - 1 2 1608 3.9500000000000000e+01 0 -1 1609 - 5.0000000000000000e-01 -2 -3 1610 1.6650000000000000e+02 - - 1.0862217843532562e-01 -5.7014846801757812e-01 - 3.1803789734840393e-01 -8.6990028619766235e-01 - <_> - 4.8686836242675781e+01 - - 1 2 1611 7.5000000000000000e+00 0 -1 1612 - 4.4500000000000000e+01 -2 -3 1613 5.0000000000000000e-01 - - 4.4552764296531677e-01 -9.6768623590469360e-01 - 3.7845483422279358e-01 -2.0616437494754791e-01 - <_> - 4.8645317077636719e+01 - - 1 2 1614 2.1500000000000000e+01 0 -1 1615 - 5.7500000000000000e+01 -2 -3 1616 9.2500000000000000e+01 - - 2.0209166407585144e-01 -3.7205338478088379e-01 - 6.6951900720596313e-01 -9.7072052955627441e-01 - <_> - 4.8846817016601562e+01 - - 1 2 1617 1.8500000000000000e+01 0 -1 1618 - 1.9500000000000000e+01 -2 -3 1619 2.7500000000000000e+01 - - -9.0423774719238281e-01 4.2085230350494385e-01 - 2.0150278508663177e-01 -6.7301428318023682e-01 - <_> - 4.8628437042236328e+01 - - 1 2 1620 291. 0 -1 1621 6.5000000000000000e+00 -2 -3 1622 - 1.1500000000000000e+01 - - 2.5333371758460999e-01 -9.6325629949569702e-01 - -6.0980123281478882e-01 1.4127761125564575e-01 - <_> - 4.8402679443359375e+01 - - 1 2 1623 2.1050000000000000e+02 0 -1 1624 - 6.5000000000000000e+00 -2 -3 1625 3.2500000000000000e+01 - - 3.4403830766677856e-02 -5.8541810512542725e-01 - -6.9637399911880493e-01 4.9845540523529053e-01 - <_> - 4.8841716766357422e+01 - - 1 2 1626 7.5000000000000000e+00 0 -1 1627 - 4.9500000000000000e+01 -2 -3 1628 1.1500000000000000e+01 - - 4.3903854489326477e-01 -6.2086170911788940e-01 - -6.5002232789993286e-01 -1.5730377286672592e-02 - <_> - 4.9389339447021484e+01 - - 1 2 1629 80. 0 -1 1630 3.5000000000000000e+00 -2 -3 1631 - 1.0255000000000000e+03 - - 3.1859183311462402e-01 -4.2584937810897827e-01 - -8.9118802547454834e-01 5.4762154817581177e-01 - <_> - 4.8809658050537109e+01 - - 1 2 1632 5.0000000000000000e-01 0 -1 1633 - 9.1500000000000000e+01 -2 -3 1634 1.5500000000000000e+01 - - -2.0882329344749451e-01 5.9099739789962769e-01 - 3.5995401442050934e-02 -5.7967907190322876e-01 - <_> - 4.9262874603271484e+01 - - 1 2 1635 2.3500000000000000e+01 0 -1 1636 2138. -2 -3 1637 - 7.4500000000000000e+01 - - 2.5881242752075195e-01 -6.5358424186706543e-01 - -4.4690254330635071e-01 4.5321631431579590e-01 - <_> - 4.9810745239257812e+01 - - 1 2 1638 2.8905000000000000e+03 0 -1 1639 - 1.4034500000000000e+04 -2 -3 1640 5.0000000000000000e-01 - - 5.9278053045272827e-01 -9.4314843416213989e-01 - 3.9468899369239807e-01 -2.7942237257957458e-01 - <_> - 4.9740810394287109e+01 - - 1 2 1641 5.0000000000000000e-01 0 -1 1642 13. -2 -3 1643 - 6.4500000000000000e+01 - - -9.7298115491867065e-01 7.5200670957565308e-01 - 1.9612585008144379e-01 -5.2234607934951782e-01 - <_> - 4.9890090942382812e+01 - - 1 2 1644 7.5000000000000000e+00 0 -1 1645 - 8.5000000000000000e+00 -2 -3 1646 381. - - -5.6059420108795166e-01 5.0415074825286865e-01 - 4.8369589447975159e-01 -3.1803038716316223e-01 - <_> - 4.9964401245117188e+01 - - 1 2 1647 5.0000000000000000e-01 0 -1 1648 - 6.5000000000000000e+00 -2 -3 1649 1.5500000000000000e+01 - - -9.7737157344818115e-01 5.3311198949813843e-01 - -4.1340222954750061e-01 2.4446828663349152e-01 - <_> - 5.0132915496826172e+01 - - 1 2 1650 1.0500000000000000e+01 0 -1 1651 - 9.5000000000000000e+00 -2 -3 1652 182. - - -2.6112908124923706e-01 4.9358665943145752e-01 - 6.2064582109451294e-01 -4.5646050572395325e-01 - <_> - 5.0014610290527344e+01 - - 1 2 1653 6.5000000000000000e+00 0 -1 1654 2329. -2 -3 1655 - 6.6350000000000000e+02 - - 4.0677326917648315e-01 -7.2954016923904419e-01 - -5.2711308002471924e-01 2.2369565069675446e-01 - <_> - 5.0282009124755859e+01 - - 1 2 1656 1513. 0 -1 1657 6.6500000000000000e+01 -2 -3 1658 - 2.0125000000000000e+03 - - -9.2653149366378784e-01 5.6927061080932617e-01 - 6.3748288154602051e-01 -6.0769841074943542e-02 - <_> - 5.0116958618164062e+01 - - 1 2 1659 1.4500000000000000e+01 0 -1 1660 - 3.5000000000000000e+00 -2 -3 1661 1.6500000000000000e+01 - - -8.6243766546249390e-01 8.8660824298858643e-01 - 4.5358371734619141e-01 -1.6504985094070435e-01 - <_> - 5.0264678955078125e+01 - - 1 2 1662 1.1500000000000000e+01 0 -1 1663 - 4.5000000000000000e+00 -2 -3 1664 4.3500000000000000e+01 - - -8.9545702934265137e-01 1. 2.3749004304409027e-01 - -4.1009184718132019e-01 - <_> - 5.0537300109863281e+01 - - 1 2 1665 6.5000000000000000e+00 0 -1 1666 - 1.1500000000000000e+01 -2 -3 1667 4.8500000000000000e+01 - - 1.8909458816051483e-01 -6.9768869876861572e-01 - -3.7118515372276306e-01 2.7262043952941895e-01 - <_> - 5.0127769470214844e+01 - - 1 2 1668 2.5000000000000000e+00 0 -1 1669 49. -2 -3 1670 - 1.5000000000000000e+00 - - -7.0132219791412354e-01 4.8064956068992615e-01 - 2.1170513331890106e-01 -4.0953138470649719e-01 - <_> - 5.0477714538574219e+01 - - 1 2 1671 2.5000000000000000e+00 0 -1 1672 - 1.5650000000000000e+02 -2 -3 1673 1.1995000000000000e+03 - - 3.4994655847549438e-01 -7.3900407552719116e-01 - -6.3774943351745605e-01 -4.0900995954871178e-03 - <_> - 5.0603004455566406e+01 - - 1 2 1674 2.7950000000000000e+02 0 -1 1675 8514. -2 -3 1676 - 4.0500000000000000e+01 - - 9.1369850561022758e-03 8.2339012622833252e-01 - -5.2016735076904297e-01 1.2528854608535767e-01 - <_> - 5.0545921325683594e+01 - - 1 2 1677 3.5000000000000000e+00 0 -1 1678 - 3.9500000000000000e+01 -2 -3 1679 1.6500000000000000e+01 - - -1.4933063089847565e-01 4.4103890657424927e-01 - -5.4845666885375977e-01 3.5070386528968811e-01 - <_> - 5.0866680145263672e+01 - - 1 2 1680 5.1950000000000000e+02 0 -1 1681 - 1.2150000000000000e+02 -2 -3 1682 1.5000000000000000e+00 - - -1.7503215372562408e-01 3.2076016068458557e-01 - 5.0803476572036743e-01 -9.5718288421630859e-01 - <_> - 5.0898628234863281e+01 - - 1 2 1683 5.0000000000000000e-01 0 -1 1684 - 6.5000000000000000e+00 -2 -3 1685 1.5500000000000000e+01 - - -8.3207756280899048e-01 7.2688364982604980e-01 - 8.6272723972797394e-02 -4.6617463231086731e-01 - <_> - 5.0805313110351562e+01 - - 1 2 1686 5.7750000000000000e+02 0 -1 1687 - 6.5000000000000000e+00 -2 -3 1688 1.3950000000000000e+02 - - -8.3755981922149658e-01 5.7054156064987183e-01 - 4.9337804317474365e-01 -9.3315914273262024e-02 - <_> - 5.0919166564941406e+01 - - 1 2 1689 1.5095000000000000e+03 0 -1 1690 - 7.5000000000000000e+00 -2 -3 1691 6720. - - 2.1196880936622620e-01 -3.8356184959411621e-01 - 5.3207170963287354e-01 -7.4764668941497803e-01 - <_> - 5.0936717987060547e+01 - - 1 2 1692 4.0500000000000000e+01 0 -1 1693 - 1.5000000000000000e+00 -2 -3 1694 5.0000000000000000e-01 - - -3.7224005907773972e-02 -8.9793884754180908e-01 - 7.6496970653533936e-01 1.7551671713590622e-02 - <_> - 5.1368896484375000e+01 - - 1 2 1695 2.5550000000000000e+02 0 -1 1696 1484. -2 -3 1697 - 7.5000000000000000e+00 - - -1. 9.0734022855758667e-01 -2.2103266417980194e-01 - 4.3218004703521729e-01 - <_> - 5.1568653106689453e+01 - - 1 2 1698 8.1615000000000000e+03 0 -1 1699 - 5.0000000000000000e-01 -2 -3 1700 28. - - -9.8341357707977295e-01 1.9975320994853973e-01 - -1.2860924005508423e-01 -9.3606525659561157e-01 - <_> - 5.1350795745849609e+01 - - 1 2 1701 5.0000000000000000e-01 0 -1 1702 - 1.8500000000000000e+01 -2 -3 1703 3.5000000000000000e+00 - - -7.4128049612045288e-01 3.7650343775749207e-01 - 3.4844925999641418e-01 -4.2916879057884216e-01 - <_> - 5.1636371612548828e+01 - - 1 2 1704 3.5000000000000000e+00 0 -1 1705 32. -2 -3 1706 - 1.5000000000000000e+00 - - 1. -9.1778641939163208e-01 -3.0592209100723267e-01 - 2.8557664155960083e-01 - <_> - 5.2074638366699219e+01 - - 1 2 1707 4.5000000000000000e+00 0 -1 1708 - 2.5500000000000000e+01 -2 -3 1709 5.5000000000000000e+00 - - -1.7822149395942688e-01 4.3826532363891602e-01 - -5.1980108022689819e-01 4.8558112978935242e-01 - <_> - 5.1970214843750000e+01 - - 1 2 1710 5.9500000000000000e+01 0 -1 1711 - 1.0500000000000000e+01 -2 -3 1712 544. - - 3.5063171386718750e-01 -3.3192864060401917e-01 - -6.3897025585174561e-01 2.3550751805305481e-01 - <_> - 5.2024555206298828e+01 - - 1 2 1713 4.5000000000000000e+00 0 -1 1714 - 1.3950000000000000e+02 -2 -3 1715 1.5000000000000000e+00 - - 2.8414461016654968e-01 -5.8255207538604736e-01 - -6.8949204683303833e-01 3.0280160903930664e-01 - <_> - 5.1652011871337891e+01 - - 1 2 1716 1.5000000000000000e+00 0 -1 1717 - 1.0500000000000000e+01 -2 -3 1718 2.5000000000000000e+00 - - -6.4423668384552002e-01 7.1819794178009033e-01 - 1.2163987010717392e-01 -4.3241024017333984e-01 - <_> - 5.2231746673583984e+01 - - 1 2 1719 2.1550000000000000e+02 0 -1 1720 - 5.0000000000000000e-01 -2 -3 1721 1966. - - 1.3263493776321411e-01 -4.2725384235382080e-01 - 8.6758172512054443e-01 -2.6626121997833252e-01 - <_> - 5.2511852264404297e+01 - - 1 2 1722 5.3450000000000000e+02 0 -1 1723 - 1.1500000000000000e+01 -2 -3 1724 4.5000000000000000e+00 - - 2.5023856759071350e-01 -8.6206442117691040e-01 - -4.7992885112762451e-01 2.8010553121566772e-01 - <_> - 5.2546646118164062e+01 - - 1 2 1725 1.2500000000000000e+01 0 -1 1726 - 3.2500000000000000e+01 -2 -3 1727 5.8895000000000000e+03 - - -1.0283301770687103e-01 5.0622606277465820e-01 - 3.4796718508005142e-02 -7.5529223680496216e-01 - <_> - 5.2223571777343750e+01 - - 1 2 1728 5.0000000000000000e-01 0 -1 1729 - 5.8550000000000000e+02 -2 -3 1730 2.0500000000000000e+01 - - -3.2307562232017517e-01 4.2715775966644287e-01 - 5.5647647380828857e-01 -4.0453824400901794e-01 - <_> - 5.2863487243652344e+01 - - 1 2 1731 3.3595000000000000e+03 0 -1 1732 - 1.6685000000000000e+03 -2 -3 1733 7.5000000000000000e+00 - - -1.1682216823101044e-01 7.5274443626403809e-01 - -3.0044618248939514e-01 7.6707494258880615e-01 - <_> - 5.3050804138183594e+01 - - 1 2 1734 1.5000000000000000e+00 0 -1 1735 - 1.5500000000000000e+01 -2 -3 1736 1.5000000000000000e+00 - - 6.9346052408218384e-01 -9.0690630674362183e-01 - -9.2264664173126221e-01 1.8731895089149475e-01 - <_> - 5.3262607574462891e+01 - - 1 2 1737 5.0000000000000000e-01 0 -1 1738 - 3.5000000000000000e+00 -2 -3 1739 3.3550000000000000e+02 - - -3.2821202278137207e-01 5.9129446744918823e-01 - -5.1578968763351440e-01 9.9953614175319672e-02 - <_> - 5.3258419036865234e+01 - - 1 2 1740 1.9500000000000000e+01 0 -1 1741 - 1.2500000000000000e+01 -2 -3 1742 1.5000000000000000e+00 - - 3.8119539618492126e-01 -1.9959560036659241e-01 - 6.4132863283157349e-01 -7.4302184581756592e-01 - <_> - 5.3413326263427734e+01 - - 1 2 1743 7.6500000000000000e+01 0 -1 1744 - 5.8750000000000000e+02 -2 -3 1745 5.5000000000000000e+00 - - -7.1226209402084351e-01 1.5490560233592987e-01 - -9.5072907209396362e-01 1. - <_> - 5.3368370056152344e+01 - - 1 2 1746 1.4355000000000000e+03 0 -1 1747 - 2.5293500000000000e+04 -2 -3 1748 3.5000000000000000e+00 - - -4.4957466423511505e-02 7.0797920227050781e-01 - 2.4098557233810425e-01 -5.3875494003295898e-01 - <_> - 5.3336959838867188e+01 - - 1 2 1749 2.5500000000000000e+01 0 -1 1750 - 2.0500000000000000e+01 -2 -3 1751 2.7375000000000000e+03 - - -7.6909404993057251e-01 -4.0910251438617706e-02 - -8.7062567472457886e-02 6.8476140499114990e-01 - <_> - 5.3268756866455078e+01 - - 1 2 1752 3.7500000000000000e+01 0 -1 1753 2449. -2 -3 1754 - 3.4085000000000000e+03 - - 2.9082170128822327e-01 -3.9411529898643494e-01 - 6.2446767091751099e-01 -7.7681422233581543e-01 - <_> - 5.3295890808105469e+01 - - 1 2 1755 1.5500000000000000e+01 0 -1 1756 - 1.5000000000000000e+00 -2 -3 1757 6.3500000000000000e+01 - - 2.3223483562469482e-01 -3.3189105987548828e-01 - 8.2484543323516846e-01 -1. - <_> - 5.3821460723876953e+01 - - 1 2 1758 7.5000000000000000e+00 0 -1 1759 32. -2 -3 1760 - 3.5000000000000000e+00 - - 7.7407427132129669e-02 -9.0338480472564697e-01 - 5.2557128667831421e-01 -8.5458166897296906e-02 - <_> - 5.3644256591796875e+01 - - 1 2 1761 2.3500000000000000e+01 0 -1 1762 - 1.7500000000000000e+01 -2 -3 1763 5.5500000000000000e+01 - - 1.9049738347530365e-01 -6.4127218723297119e-01 - -5.8284378051757812e-01 3.6358082294464111e-01 - <_> - 5.3565219879150391e+01 - - 1 2 1764 5.0000000000000000e-01 0 -1 1765 - 5.5000000000000000e+00 -2 -3 1766 6.2650000000000000e+02 - - -9.1313230991363525e-01 3.1892377138137817e-01 - -5.0848573446273804e-01 4.0014332532882690e-01 - <_> - 5.3612766265869141e+01 - - 1 2 1767 2.7500000000000000e+01 0 -1 1768 - 1.1850000000000000e+02 -2 -3 1769 6.5000000000000000e+00 - - -1.1785164475440979e-01 4.6228489279747009e-01 - 8.3617496490478516e-01 -7.2740668058395386e-01 - <_> - 5.3733577728271484e+01 - - 1 2 1770 1.3500000000000000e+01 0 -1 1771 - 6.5000000000000000e+00 -2 -3 1772 1.3500000000000000e+01 - - -4.3037781119346619e-01 4.0931895375251770e-01 - -8.7283575534820557e-01 -1.1174897849559784e-01 - <_> - 5.3474098205566406e+01 - - 1 2 1773 2.2500000000000000e+01 0 -1 1774 - 1.5000000000000000e+00 -2 -3 1775 6.8500000000000000e+01 - - -4.9783071875572205e-01 3.2450476288795471e-01 - -5.4798841476440430e-01 4.3143227696418762e-01 - <_> - 5.3782051086425781e+01 - - 1 2 1776 7.5000000000000000e+00 0 -1 1777 - 7.5000000000000000e+00 -2 -3 1778 5.8850000000000000e+02 - - 3.0795454978942871e-01 -4.3086576461791992e-01 - 2.5671597104519606e-03 -7.0709168910980225e-01 - <_> - 5.4081798553466797e+01 - - 1 2 1779 4.1250000000000000e+02 0 -1 1780 2532. -2 -3 1781 - 4.2500000000000000e+01 - - 1.1845014244318008e-01 -4.8000225424766541e-01 - -7.1575754880905151e-01 4.8367628455162048e-01 - <_> - 5.3729518890380859e+01 - - 1 2 1782 4.5000000000000000e+00 0 -1 1783 - 4.0500000000000000e+01 -2 -3 1784 5.0000000000000000e-01 - - -6.5016943216323853e-01 4.5923739671707153e-01 - 7.4234819412231445e-01 -3.5227757692337036e-01 - <_> - 5.3706134796142578e+01 - - 1 2 1785 1.7500000000000000e+01 0 -1 1786 - 2.0500000000000000e+01 -2 -3 1787 35. - - -2.3385923355817795e-02 5.5982124805450439e-01 - -7.7798545360565186e-01 5.9317058324813843e-01 - <_> - 5.4069709777832031e+01 - - 1 2 1788 3.0650000000000000e+02 0 -1 1789 - 6.7500000000000000e+01 -2 -3 1790 1.5000000000000000e+00 - - -2.0442806184291840e-01 3.6357563734054565e-01 - 4.3344959616661072e-01 -7.8407233953475952e-01 - <_> - 5.4122543334960938e+01 - - 1 2 1791 6.9550000000000000e+02 0 -1 1792 - 2.0150000000000000e+02 -2 -3 1793 1.5500000000000000e+01 - - -2.8922367095947266e-01 4.2674824595451355e-01 - -6.8660050630569458e-01 5.2831500768661499e-02 - <_> - 5.4034683227539062e+01 - - 1 2 1794 5.0000000000000000e-01 0 -1 1795 - 5.9715000000000000e+03 -2 -3 1796 4.5000000000000000e+00 - - -5.2834486961364746e-01 4.5531541109085083e-01 - 1.1746359616518021e-01 -4.9576222896575928e-01 - <_> - 5.4980464935302734e+01 - - 1 2 1797 1.3500000000000000e+01 0 -1 1798 - 2.9450000000000000e+02 -2 -3 1799 7.5000000000000000e+00 - - -3.2881252467632294e-02 -9.8305457830429077e-01 - 9.4577944278717041e-01 -1. - <_> - 5.5089954376220703e+01 - - 1 2 1800 2.5000000000000000e+00 0 -1 1801 39. -2 -3 1802 - 9.4950000000000000e+02 - - -1. 1. 1.6094356775283813e-01 -5.4309475421905518e-01 - <_> - 5.5099483489990234e+01 - - 1 2 1803 5.7850000000000000e+02 0 -1 1804 - 4.2500000000000000e+01 -2 -3 1805 5.7750000000000000e+02 - - -7.0962339639663696e-01 1. 7.6542943716049194e-01 - -4.1924782097339630e-02 - <_> - 5.4866825103759766e+01 - - 1 2 1806 1328. 0 -1 1807 1.5000000000000000e+00 -2 -3 1808 - 5.5285000000000000e+03 - - 3.6924600601196289e-01 -2.3265689611434937e-01 - 9.9105215072631836e-01 -8.4446805715560913e-01 - <_> - 5.5432411193847656e+01 - - 1 2 1809 2.5500000000000000e+01 0 -1 1810 - 1.1500000000000000e+01 -2 -3 1811 7.4350000000000000e+02 - - -3.2548126578330994e-01 2.2827453911304474e-01 - 7.1661698818206787e-01 -1. - <_> - 5.5408927917480469e+01 - - 1 2 1812 5.0000000000000000e-01 0 -1 1813 - 3.5000000000000000e+00 -2 -3 1814 2.4500000000000000e+01 - - -7.4099457263946533e-01 3.7504613399505615e-01 - -6.2640714645385742e-01 8.4968566894531250e-02 - <_> - 5.5198207855224609e+01 - - 1 2 1815 1.5000000000000000e+00 0 -1 1816 - 6.5000000000000000e+00 -2 -3 1817 2.2500000000000000e+01 - - -1. 6.4012116193771362e-01 -2.1071846783161163e-01 - 6.4778321981430054e-01 - <_> - 5.5283359527587891e+01 - - 1 2 1818 2.5000000000000000e+00 0 -1 1819 - 5.0000000000000000e-01 -2 -3 1820 2.4550000000000000e+02 - - 4.5631405711174011e-01 -1.3484077155590057e-01 - -5.9344494342803955e-01 1.6467481851577759e-01 - <_> - 5.5470157623291016e+01 - - 1 2 1821 3.5000000000000000e+00 0 -1 1822 - 9.5000000000000000e+00 -2 -3 1823 9.5000000000000000e+00 - - 1. -1. -4.3856528401374817e-01 1.8679495155811310e-01 - <_> - 5.5202453613281250e+01 - - 1 2 1824 5.6150000000000000e+02 0 -1 1825 4192. -2 -3 1826 - 1.2425000000000000e+03 - - -1.4592270553112030e-01 5.8146274089813232e-01 - -5.5671817064285278e-01 1.2355826795101166e-01 - <_> - 5.5569751739501953e+01 - - 1 2 1827 2.1500000000000000e+01 0 -1 1828 - 5.5000000000000000e+00 -2 -3 1829 1.6500000000000000e+01 - - -6.8071776628494263e-01 3.6730051040649414e-01 - -1.3501003384590149e-01 -9.1282844543457031e-01 - <_> - 5.5779064178466797e+01 - - 1 2 1830 3.3500000000000000e+01 0 -1 1831 - 9.5000000000000000e+00 -2 -3 1832 1.5500000000000000e+01 - - 3.2467505335807800e-01 -7.8718549013137817e-01 - 5.1464933156967163e-01 -1.6156230866909027e-01 - <_> - 5.5348117828369141e+01 - - 1 2 1833 3.7650000000000000e+02 0 -1 1834 - 5.5750000000000000e+02 -2 -3 1835 1.5000000000000000e+00 - - -8.1101077795028687e-01 6.3146162033081055e-01 - 1.3779489696025848e-01 -4.3094816803932190e-01 - <_> - 5.5919422149658203e+01 - - 1 2 1836 3.7500000000000000e+01 0 -1 1837 - 5.0000000000000000e-01 -2 -3 1838 8.8500000000000000e+01 - - 3.4091222286224365e-01 -3.4007987380027771e-01 - 5.7130312919616699e-01 -6.3140660524368286e-01 - <_> - 5.5871620178222656e+01 - - 1 2 1839 7.5000000000000000e+00 0 -1 1840 - 1.6500000000000000e+01 -2 -3 1841 6.4500000000000000e+01 - - -2.2035612165927887e-01 -9.4882357120513916e-01 - 5.1813077926635742e-01 -4.7800488770008087e-02 - <_> - 5.6252223968505859e+01 - - 1 2 1842 1.1950000000000000e+02 0 -1 1843 - 9.5500000000000000e+01 -2 -3 1844 3.6850000000000000e+02 - - 3.8002592325210571e-01 -3.4263178706169128e-01 - 5.1846081018447876e-01 -7.4162709712982178e-01 - <_> - 5.6455226898193359e+01 - - 1 2 1845 5.0000000000000000e-01 0 -1 1846 12. -2 -3 1847 - 3.2995000000000000e+03 - - -9.0239804983139038e-01 3.5835075378417969e-01 - -3.9121779799461365e-01 8.4680241346359253e-01 - <_> - 5.6692668914794922e+01 - - 1 2 1848 2.5000000000000000e+00 0 -1 1849 - 5.0000000000000000e-01 -2 -3 1850 3.0500000000000000e+01 - - -8.6832201480865479e-01 3.5786366462707520e-01 - -6.5906804800033569e-01 3.1783048063516617e-02 - <_> - 5.6752792358398438e+01 - - 1 2 1851 1.0500000000000000e+01 0 -1 1852 - 6.5500000000000000e+01 -2 -3 1853 1.4500000000000000e+01 - - -4.6706490218639374e-02 -8.7982815504074097e-01 - 5.6353557109832764e-01 -6.0297027230262756e-02 - <_> - 5.6775104522705078e+01 - - 1 2 1854 2.0150000000000000e+02 0 -1 1855 - 1.0500000000000000e+01 -2 -3 1856 2.8650000000000000e+02 - - 7.4959583580493927e-02 -5.7888466119766235e-01 - 6.6168105602264404e-01 -9.9754244089126587e-02 - <_> - 5.6972690582275391e+01 - - 1 2 1857 1.6150000000000000e+02 0 -1 1858 - 1.5500000000000000e+01 -2 -3 1859 24. - - -7.3095875978469849e-01 1.9758741557598114e-01 - -8.8720643520355225e-01 1. - <_> - 5.7200763702392578e+01 - - 1 2 1860 5.0000000000000000e-01 0 -1 1861 - 8.8500000000000000e+01 -2 -3 1862 1.8500000000000000e+01 - - 3.3610743284225464e-01 -8.8137799501419067e-01 - -6.0375785827636719e-01 1.2033233046531677e-01 - <_> - 5.7070457458496094e+01 - - 1 2 1863 2.1500000000000000e+01 0 -1 1864 - 1.4500000000000000e+01 -2 -3 1865 5.6500000000000000e+01 - - -9.7666543722152710e-01 7.4382346868515015e-01 - 4.3915370106697083e-01 -1.3030719757080078e-01 - <_> - 5.6970527648925781e+01 - - 1 2 1866 1.0500000000000000e+01 0 -1 1867 - 8.5000000000000000e+00 -2 -3 1868 142. - - -3.9075690507888794e-01 2.1810866892337799e-01 - 7.3304098844528198e-01 -1.5522833168506622e-01 - <_> - 5.7172351837158203e+01 - - 1 2 1869 8.3500000000000000e+01 0 -1 1870 - 5.0000000000000000e-01 -2 -3 1871 4.5000000000000000e+00 - - 4.7355487942695618e-01 -8.4495109319686890e-01 - -8.0800145864486694e-01 2.0182393491268158e-01 - <_> - 5.7369266510009766e+01 - - 1 2 1872 1.3500000000000000e+01 0 -1 1873 - 2.2050000000000000e+02 -2 -3 1874 1.5000000000000000e+00 - - 3.0745425820350647e-01 -5.7873797416687012e-01 - 7.1144923567771912e-02 -7.0968645811080933e-01 - <_> - 5.7163673400878906e+01 - - 1 2 1875 3.0500000000000000e+01 0 -1 1876 - 1.7955000000000000e+03 -2 -3 1877 1.9500000000000000e+01 - - 4.0770485997200012e-01 -6.0543429851531982e-01 - 3.7602424621582031e-01 -2.8918644785881042e-01 - <_> - 5.6786552429199219e+01 - - 1 2 1878 6.8500000000000000e+01 0 -1 1879 - 5.5000000000000000e+00 -2 -3 1880 2.8500000000000000e+01 - - 1.1757279932498932e-01 -5.8252972364425659e-01 - -3.8951548933982849e-01 5.1052653789520264e-01 - <_> - 5.6868556976318359e+01 - - 1 2 1881 6.5000000000000000e+00 0 -1 1882 - 2.5000000000000000e+00 -2 -3 1883 2.6950000000000000e+02 - - 8.2006074488162994e-02 -5.1789224147796631e-01 - 5.3505361080169678e-01 -9.4605493545532227e-01 - <_> - 5.7130115509033203e+01 - - 1 2 1884 8.5000000000000000e+00 0 -1 1885 - 1.9150000000000000e+02 -2 -3 1886 2.9450000000000000e+02 - - 4.5292165875434875e-01 -4.3888345360755920e-01 - 4.7173380851745605e-01 -5.1566743850708008e-01 - <_> - 5.7406742095947266e+01 - - 1 2 1887 5.5000000000000000e+00 0 -1 1888 - 4.5000000000000000e+00 -2 -3 1889 7.9850000000000000e+02 - - -3.7859401106834412e-01 5.5919343233108521e-01 - -5.8277565240859985e-01 6.6450834274291992e-02 - <_> - 5.7422473907470703e+01 - - 1 2 1890 5.6150000000000000e+02 0 -1 1891 4961. -2 -3 1892 - 4.8705000000000000e+03 - - -4.5244730426929891e-04 8.3497661352157593e-01 - -6.8882519006729126e-01 1.5732206404209137e-02 - <_> - 5.7687702178955078e+01 - - 1 2 1893 1.4500000000000000e+01 0 -1 1894 - 4.1335000000000000e+03 -2 -3 1895 7.1500000000000000e+01 - - 2.6522731781005859e-01 -8.9758622646331787e-01 - -6.0936498641967773e-01 4.6634823083877563e-01 - <_> - 5.7540111541748047e+01 - - 1 2 1896 2.9500000000000000e+01 0 -1 1897 - 5.5000000000000000e+00 -2 -3 1898 1.5000000000000000e+00 - - -9.3110167980194092e-01 1. 3.9634063839912415e-01 - -1.9126465916633606e-01 - <_> - 5.7616504669189453e+01 - - 1 2 1899 7.5000000000000000e+00 0 -1 1900 397. -2 -3 1901 - 1.5000000000000000e+00 - - 7.1867322921752930e-01 -5.4185843467712402e-01 - 5.2771824598312378e-01 -1.5528239309787750e-01 - <_> - 5.7763866424560547e+01 - - 1 2 1902 2.1500000000000000e+01 0 -1 1903 - 1.7050000000000000e+02 -2 -3 1904 1.6500000000000000e+01 - - 2.9671201109886169e-01 -8.4789550304412842e-01 - -5.6201756000518799e-01 2.5604116916656494e-01 - <_> - 5.7565292358398438e+01 - - 1 2 1905 5.0000000000000000e-01 0 -1 1906 - 2.1350000000000000e+02 -2 -3 1907 3.6950000000000000e+02 - - 5.7148373126983643e-01 -8.4696042537689209e-01 - -3.0725291371345520e-01 5.5036330223083496e-01 - <_> - 5.7710926055908203e+01 - - 1 2 1908 1.2500000000000000e+01 0 -1 1909 - 4.5000000000000000e+00 -2 -3 1910 2.4500000000000000e+01 - - -6.8967974185943604e-01 3.9181429147720337e-01 - -6.0330241918563843e-01 2.1838249266147614e-01 - <_> - 5.8008132934570312e+01 - - 1 2 1911 9.5000000000000000e+00 0 -1 1912 270. -2 -3 1913 - 3.0500000000000000e+01 - - 2.9720637202262878e-01 -7.7370458841323853e-01 - -7.1012228727340698e-01 1.2770961225032806e-01 - <_> - 5.8256633758544922e+01 - - 1 2 1914 6.3500000000000000e+01 0 -1 1915 - 3.7500000000000000e+01 -2 -3 1916 3.0500000000000000e+01 - - -4.4066715240478516e-01 8.2518380880355835e-01 - 2.9887351393699646e-01 -4.9117338657379150e-01 - <_> - 5.8460075378417969e+01 - - 1 2 1917 1.2500000000000000e+01 0 -1 1918 - 3.1500000000000000e+01 -2 -3 1919 5.0000000000000000e-01 - - -3.4090422093868256e-02 5.7412135601043701e-01 - 7.2392117977142334e-01 -6.3018786907196045e-01 - <_> - 5.8618007659912109e+01 - - 1 2 1920 5.0000000000000000e-01 0 -1 1921 - 1.5500000000000000e+01 -2 -3 1922 5.0000000000000000e-01 - - -9.6668690443038940e-01 3.7771463394165039e-01 - 2.2855560481548309e-01 -4.7967869043350220e-01 - <_> - 5.8478435516357422e+01 - - 1 2 1923 7.5000000000000000e+00 0 -1 1924 - 1.5000000000000000e+00 -2 -3 1925 5.0000000000000000e-01 - - 4.2515745759010315e-01 -5.5478894710540771e-01 - 4.5419645309448242e-01 -1.3957175612449646e-01 - <_> - 5.8872611999511719e+01 - - 1 2 1926 1.8350000000000000e+02 0 -1 1927 - 4.0500000000000000e+01 -2 -3 1928 6.6500000000000000e+01 - - -2.0008619129657745e-01 3.9417695999145508e-01 - -9.6238315105438232e-01 1. - <_> - 5.8883186340332031e+01 - - 1 2 1929 1.2500000000000000e+01 0 -1 1930 - 3.5000000000000000e+00 -2 -3 1931 2.1050000000000000e+02 - - 6.1217731237411499e-01 -1.9048878923058510e-02 - -7.2783750295639038e-01 8.3897627890110016e-02 - <_> - 5.8808357238769531e+01 - - 1 2 1932 4.6500000000000000e+01 0 -1 1933 - 3.5000000000000000e+00 -2 -3 1934 2.8650000000000000e+02 - - 1.3248841464519501e-01 -6.7872178554534912e-01 - 4.7229564189910889e-01 -1.4815118908882141e-01 - <_> - 5.9144462585449219e+01 - - 1 2 1935 1.4500000000000000e+01 0 -1 1936 - 1.6500000000000000e+01 -2 -3 1937 9.5000000000000000e+00 - - -6.5575122833251953e-01 6.0179513692855835e-01 - 3.3610317111015320e-01 -2.4818602204322815e-01 - <_> - 5.9101814270019531e+01 - - 1 2 1938 5.0000000000000000e-01 0 -1 1939 - 2.5000000000000000e+00 -2 -3 1940 2.3500000000000000e+01 - - 6.1000245809555054e-01 -4.2646210640668869e-02 - -5.3324443101882935e-01 3.5818785429000854e-01 - <_> - 5.8948040008544922e+01 - - 1 2 1941 7.5000000000000000e+00 0 -1 1942 - 4.5000000000000000e+00 -2 -3 1943 5.0000000000000000e-01 - - -8.8669669628143311e-01 7.7529543638229370e-01 - 3.8582339882850647e-01 -1.5377666056156158e-01 - <_> - 5.9593772888183594e+01 - - 1 2 1944 3.5525000000000000e+03 0 -1 1945 - 3.4500000000000000e+01 -2 -3 1946 167. - - -2.2072853147983551e-01 3.3567503094673157e-01 1. -1. - <_> - 5.9370800018310547e+01 - - 1 2 1947 7.5000000000000000e+00 0 -1 1948 3474. -2 -3 1949 - 9.5000000000000000e+00 - - 3.4637100994586945e-02 -5.9609389305114746e-01 - 5.9798693656921387e-01 -1.3024185597896576e-01 - <_> - 5.9757068634033203e+01 - - 1 2 1950 1.1500000000000000e+01 0 -1 1951 - 4.4500000000000000e+01 -2 -3 1952 2.5000000000000000e+00 - - -9.1445469856262207e-01 8.4411728382110596e-01 - 3.8626831769943237e-01 -1.6962867975234985e-01 - <_> - 5.9796058654785156e+01 - - 1 2 1953 5.8750000000000000e+02 0 -1 1954 - 3.5000000000000000e+00 -2 -3 1955 3.9150000000000000e+02 - - 2.4987047910690308e-01 -6.1070859432220459e-01 - 7.2914922237396240e-01 -7.8055180609226227e-02 - <_> - 5.9801254272460938e+01 - - 1 2 1956 5.5850000000000000e+02 0 -1 1957 - 4.7500000000000000e+01 -2 -3 1958 1.8500000000000000e+01 - - -1.1270057410001755e-01 6.9968527555465698e-01 - 5.1938942633569241e-03 -7.4568808078765869e-01 - <_> - 6.0010192871093750e+01 - - 1 2 1959 4.8500000000000000e+01 0 -1 1960 - 6.5000000000000000e+00 -2 -3 1961 7.5000000000000000e+00 - - -7.4147862195968628e-01 2.0893752574920654e-01 - -7.3173969984054565e-01 3.0364623665809631e-01 - <_> - 5.9708690643310547e+01 - - 1 2 1962 5.0000000000000000e-01 0 -1 1963 - 3.5000000000000000e+00 -2 -3 1964 2.2500000000000000e+01 - - -9.1378659009933472e-01 5.2321916818618774e-01 - -3.0149966478347778e-01 6.9747513532638550e-01 - <_> - 6.0059795379638672e+01 - - 1 2 1965 4.1500000000000000e+01 0 -1 1966 - 1.5000000000000000e+00 -2 -3 1967 4.5500000000000000e+01 - - 7.6339656114578247e-01 -6.3636028766632080e-01 - 3.5110288858413696e-01 -2.9607880115509033e-01 - <_> - 6.0240623474121094e+01 - - 1 2 1968 4.5000000000000000e+00 0 -1 1969 - 1.5000000000000000e+00 -2 -3 1970 3.0850000000000000e+02 - - -6.1838161945343018e-01 1.8083088099956512e-01 - -1.4869785308837891e-01 5.0236159563064575e-01 - <_> - 6.0387596130371094e+01 - - 1 2 1971 1.6250000000000000e+02 0 -1 1972 - 4.5000000000000000e+00 -2 -3 1973 4.4650000000000000e+02 - - 6.7135459184646606e-01 1.1329505359753966e-03 - -6.6079312562942505e-01 1.4697253704071045e-01 - <_> - 6.0387634277343750e+01 - - 1 2 1974 3.5000000000000000e+00 0 -1 1975 - 1.8500000000000000e+01 -2 -3 1976 3.5500000000000000e+01 - - 3.3784970641136169e-01 -4.8918390274047852e-01 - -5.6978744268417358e-01 1.3324360549449921e-01 - <_> - 6.0022872924804688e+01 - - 1 2 1977 2.0850000000000000e+02 0 -1 1978 - 3.5000000000000000e+00 -2 -3 1979 2.2500000000000000e+01 - - 2.4730446934700012e-01 -3.6476173996925354e-01 - -6.7308956384658813e-01 5.9900748729705811e-01 - <_> - 6.0411987304687500e+01 - - 1 2 1980 4.6500000000000000e+01 0 -1 1981 - 7.5000000000000000e+00 -2 -3 1982 1.6500000000000000e+01 - - -7.1475833654403687e-01 3.5484632849693298e-01 - 3.8911363482475281e-01 -1.7250961065292358e-01 - <_> - 6.0604080200195312e+01 - - 1 2 1983 5.0000000000000000e-01 0 -1 1984 - 6.5000000000000000e+00 -2 -3 1985 4.5000000000000000e+00 - - -5.3925055265426636e-01 4.7325718402862549e-01 - 1.9209517538547516e-01 -4.6254682540893555e-01 - <_> - 6.0539005279541016e+01 - - 1 2 1986 3.5500000000000000e+01 0 -1 1987 97. -2 -3 1988 - 5.5000000000000000e+00 - - 6.5639108419418335e-01 -8.1671226024627686e-01 - 5.2336204051971436e-01 -6.5074905753135681e-02 - <_> - 6.0846366882324219e+01 - - 1 2 1989 3.1350000000000000e+02 0 -1 1990 - 1.6190500000000000e+04 -2 -3 1991 1.1005000000000000e+03 - - 4.3834140896797180e-01 -3.6532020568847656e-01 - 6.3986539840698242e-01 -4.1561451554298401e-01 - <_> - 6.0749099731445312e+01 - - 1 2 1992 3.5000000000000000e+00 0 -1 1993 - 1.6050000000000000e+02 -2 -3 1994 4.5000000000000000e+00 - - 3.9444553852081299e-01 -5.1368337869644165e-01 - -6.9115257263183594e-01 1.9162381067872047e-02 - <_> - 6.0911582946777344e+01 - - 1 2 1995 3.1500000000000000e+01 0 -1 1996 39. -2 -3 1997 - 1.5000000000000000e+00 - - -9.1950684785842896e-01 1. -7.2641021013259888e-01 - 1.6248121857643127e-01 - <_> - 6.0922454833984375e+01 - - 1 2 1998 5.5000000000000000e+00 0 -1 1999 - 1.0500000000000000e+01 -2 -3 2000 1.5805000000000000e+03 - - -7.5020366907119751e-01 3.5568973422050476e-01 - -4.8083752393722534e-01 3.0702778697013855e-01 - <_> - 6.1254642486572266e+01 - - 1 2 2001 3.3650000000000000e+02 0 -1 2002 - 5.0000000000000000e-01 -2 -3 2003 7.5000000000000000e+00 - - 7.5214070081710815e-01 -5.6389236450195312e-01 - 3.4662494063377380e-01 -2.9536944627761841e-01 - <_> - 6.1591125488281250e+01 - - 1 2 2004 2.5500000000000000e+01 0 -1 2005 - 1.4500000000000000e+01 -2 -3 2006 1.5000000000000000e+00 - - 1.3703818619251251e-01 -4.9739819765090942e-01 - -6.2935429811477661e-01 5.6868934631347656e-01 - <_> - 6.1522079467773438e+01 - - 1 2 2007 2.0500000000000000e+01 0 -1 2008 - 8.5500000000000000e+01 -2 -3 2009 4.5500000000000000e+01 - - 7.8972160816192627e-01 -6.7304050922393799e-01 - 2.6793375611305237e-01 -6.3064610958099365e-01 - <_> - 6.1685386657714844e+01 - - 1 2 2010 4.7055000000000000e+03 0 -1 2011 - 7.5000000000000000e+00 -2 -3 2012 34. - - -6.3200688362121582e-01 1.6331009566783905e-01 - -9.4863635301589966e-01 8.0065780878067017e-01 - <_> - 6.1566181182861328e+01 - - 1 2 2013 7.2950000000000000e+02 0 -1 2014 - 2.0350000000000000e+02 -2 -3 2015 2.1500000000000000e+01 - - -1.1920681595802307e-01 6.4878600835800171e-01 - -5.8408319950103760e-01 3.3495616912841797e-01 - <_> - 6.2094886779785156e+01 - - 1 2 2016 9.5000000000000000e+00 0 -1 2017 - 3.5000000000000000e+00 -2 -3 2018 2.3500000000000000e+01 - - 5.2870643138885498e-01 -5.9091903269290924e-02 - 1.4992588758468628e-01 -7.4673342704772949e-01 - <_> - 6.1996501922607422e+01 - - 1 2 2019 3.4500000000000000e+01 0 -1 2020 - 9.6500000000000000e+01 -2 -3 2021 7.5000000000000000e+00 - - -9.8386786878108978e-02 5.0483143329620361e-01 - 1.5602034330368042e-01 -6.9411128759384155e-01 - <_> - 6.2363922119140625e+01 - - 1 2 2022 1.4965000000000000e+03 0 -1 2023 61. -2 -3 2024 - 8.5250000000000000e+02 - - -9.3483263254165649e-01 1. 5.6837409734725952e-01 - -8.3574697375297546e-02 - <_> - 6.2407440185546875e+01 - - 1 2 2025 5977. 0 -1 2026 2.5000000000000000e+00 -2 -3 2027 - 2.1421500000000000e+04 - - 2.2136372327804565e-01 -6.3119232654571533e-01 - 9.1829413175582886e-01 4.3518073856830597e-02 - <_> - 6.2328540802001953e+01 - - 1 2 2028 9.5000000000000000e+00 0 -1 2029 - 3.8550000000000000e+02 -2 -3 2030 6.5000000000000000e+00 - - 7.9880517721176147e-01 -3.3323591947555542e-01 - -9.3455439805984497e-01 3.5605767369270325e-01 - <_> - 6.2549594879150391e+01 - - 1 2 2031 1.2500000000000000e+01 0 -1 2032 - 2.5000000000000000e+00 -2 -3 2033 1.4500000000000000e+01 - - 4.2225402593612671e-01 -2.8828126192092896e-01 - -4.3309009075164795e-01 6.5534549951553345e-01 - <_> - 6.2636714935302734e+01 - - 1 2 2034 417. 0 -1 2035 1.1500000000000000e+01 -2 -3 2036 7. - - -2.1113002672791481e-02 8.4205090999603271e-01 - -9.7738903760910034e-01 5.3100347518920898e-01 - <_> - 6.2861415863037109e+01 - - 1 2 2037 2.5000000000000000e+00 0 -1 2038 - 5.5000000000000000e+00 -2 -3 2039 3.6500000000000000e+01 - - -7.6132452487945557e-01 3.6051002144813538e-01 - -5.7641249895095825e-01 1.5012158453464508e-01 - <_> - 6.2900104522705078e+01 - - 1 2 2040 5.0000000000000000e-01 0 -1 2041 - 3.5000000000000000e+00 -2 -3 2042 6.5000000000000000e+00 - - -9.3149966001510620e-01 2.9147976636886597e-01 - -6.3701289892196655e-01 5.4918531328439713e-02 - <_> - 6.2879768371582031e+01 - - 1 2 2043 1.5000000000000000e+00 0 -1 2044 - 2.5000000000000000e+00 -2 -3 2045 1.5000000000000000e+00 - - 6.6399359703063965e-01 -1.0929831862449646e-01 - 7.8133702278137207e-02 -4.7019696235656738e-01 - <_> - 6.2129520416259766e+01 - - 1 2 2046 1.3650000000000000e+02 0 -1 2047 - 2.1215000000000000e+03 -2 -3 2048 1.9500000000000000e+01 - - 1.4869627356529236e-01 -7.8195393085479736e-01 - -5.4876875877380371e-01 2.9066467285156250e-01 - <_> - 6.2598121643066406e+01 - - 1 2 2049 5.5000000000000000e+00 0 -1 2050 - 2.0500000000000000e+01 -2 -3 2051 3.3450000000000000e+02 - - -2.8021445870399475e-01 4.6860334277153015e-01 - -4.1921630501747131e-01 9.1871756315231323e-01 - <_> - 6.2898983001708984e+01 - - 1 2 2052 5.8750000000000000e+02 0 -1 2053 - 3.3150000000000000e+02 -2 -3 2054 258. - - -5.8121073246002197e-01 7.2862756252288818e-01 - 3.0086198449134827e-01 -6.1838138103485107e-01 - <_> - 6.3007404327392578e+01 - - 1 2 2055 2.7950000000000000e+02 0 -1 2056 - 5.0500000000000000e+01 -2 -3 2057 3.5000000000000000e+00 - - -7.9203374683856964e-02 6.8916302919387817e-01 - 2.2891193628311157e-01 -4.4382786750793457e-01 - <_> - 6.3243953704833984e+01 - - 1 2 2058 8.5000000000000000e+00 0 -1 2059 - 3.2650000000000000e+02 -2 -3 2060 2.1500000000000000e+01 - - -1. 2.3655229806900024e-01 -5.4432135820388794e-01 - 8.4973216056823730e-01 - <_> - 6.3190502166748047e+01 - - 1 2 2061 3.1500000000000000e+01 0 -1 2062 - 6.4500000000000000e+01 -2 -3 2063 1.5500000000000000e+01 - - -1.7394508421421051e-01 3.4196874499320984e-01 - -7.9306966066360474e-01 7.7552306652069092e-01 - <_> - 6.3256435394287109e+01 - - 1 2 2064 5.0000000000000000e-01 0 -1 2065 - 4.5000000000000000e+00 -2 -3 2066 1.6500000000000000e+01 - - -6.4375263452529907e-01 4.6298280358314514e-01 - 6.5930701792240143e-02 -6.0258072614669800e-01 - <_> - 6.3547569274902344e+01 - - 1 2 2067 3.5000000000000000e+00 0 -1 2068 - 2.9665000000000000e+03 -2 -3 2069 2.5000000000000000e+00 - - 2.6696309447288513e-01 -6.1605608463287354e-01 - 5.8771264553070068e-01 -7.7434383332729340e-02 - <_> - 6.3455562591552734e+01 - - 1 2 2070 2.6500000000000000e+01 0 -1 2071 - 1.0435000000000000e+03 -2 -3 2072 2.2500000000000000e+01 - - -3.0468648672103882e-01 2.7090394496917725e-01 -1. - 7.8004688024520874e-01 - <_> - 6.3757442474365234e+01 - - 1 2 2073 1.0350000000000000e+02 0 -1 2074 - 1.0500000000000000e+01 -2 -3 2075 2.5000000000000000e+00 - - -3.8403138518333435e-01 3.0187815427780151e-01 - 3.1422126293182373e-01 -7.1062839031219482e-01 - <_> - 6.3906417846679688e+01 - - 1 2 2076 4.5000000000000000e+00 0 -1 2077 - 1.5000000000000000e+00 -2 -3 2078 4.8150000000000000e+02 - - -7.3861616849899292e-01 4.0836670994758606e-01 - -5.5579960346221924e-01 1.4897711575031281e-01 - <_> - 6.4099327087402344e+01 - - 1 2 2079 2.5500000000000000e+01 0 -1 2080 - 5.7650000000000000e+02 -2 -3 2081 1.8500000000000000e+01 - - -5.5475443601608276e-01 1.9290663301944733e-01 - -7.1113204956054688e-01 5.3957355022430420e-01 - <_> - 6.3918937683105469e+01 - - 1 2 2082 3.5000000000000000e+00 0 -1 2083 - 9.7500000000000000e+01 -2 -3 2084 3.5000000000000000e+00 - - -3.3335947990417480e-01 2.7078640460968018e-01 - 3.7570750713348389e-01 -7.7115553617477417e-01 - <_> - 6.3970809936523438e+01 - - 1 2 2085 3.5000000000000000e+00 0 -1 2086 - 1.9850000000000000e+02 -2 -3 2087 2.3500000000000000e+01 - - 6.5109664201736450e-01 -1.3773214817047119e-01 - -5.4258519411087036e-01 5.1870465278625488e-02 - <_> - 6.4214424133300781e+01 - - 1 2 2088 1.2500000000000000e+01 0 -1 2089 - 3.2450000000000000e+02 -2 -3 2090 6.5000000000000000e+00 - - 4.3517467379570007e-01 -9.6950376033782959e-01 - 2.5978988409042358e-01 -2.7689433097839355e-01 - <_> - 6.4605529785156250e+01 - - 1 2 2091 327. 0 -1 2092 5.0000000000000000e-01 -2 -3 2093 - 1.5500000000000000e+01 - - 2.3849301040172577e-01 -5.6138235330581665e-01 - -6.2119048833847046e-01 3.9110702276229858e-01 - <_> - 6.4053535461425781e+01 - - 1 2 2094 1.8500000000000000e+01 0 -1 2095 - 1.4500000000000000e+01 -2 -3 2096 1.7225000000000000e+03 - - -7.9772460460662842e-01 2.5171506404876709e-01 - 4.5911735296249390e-01 -5.6817436218261719e-01 - <_> - 6.4624084472656250e+01 - - 1 2 2097 1.3500000000000000e+01 0 -1 2098 - 3.8450000000000000e+02 -2 -3 2099 2.5000000000000000e+00 - - 6.7918819189071655e-01 -6.8560796976089478e-01 - 5.7055342197418213e-01 -1.1227272450923920e-01 - <_> - 6.4599174499511719e+01 - - 1 2 2100 3.9950000000000000e+02 0 -1 2101 - 6.5000000000000000e+00 -2 -3 2102 2.6500000000000000e+01 - - 2.6946315169334412e-01 -6.8496251106262207e-01 - -1.4580105245113373e-01 4.0004068613052368e-01 - <_> - 6.4730812072753906e+01 - - 1 2 2103 5.0000000000000000e-01 0 -1 2104 - 1.0500000000000000e+01 -2 -3 2105 2.5000000000000000e+00 - - -4.1157549619674683e-01 3.9449948072433472e-01 - 1.3164354860782623e-01 -5.7457894086837769e-01 - <_> - 6.4550361633300781e+01 - - 1 2 2106 6.1500000000000000e+01 0 -1 2107 - 4.2500000000000000e+01 -2 -3 2108 5.0000000000000000e-01 - - -6.7661024630069733e-02 4.9807086586952209e-01 - 2.6868519186973572e-01 -5.6513643264770508e-01 - <_> - 6.4741752624511719e+01 - - 1 2 2109 1.5000000000000000e+00 0 -1 2110 - 1.4500000000000000e+01 -2 -3 2111 5.0000000000000000e-01 - - -5.7091879844665527e-01 4.6459051966667175e-01 - 2.1071271598339081e-01 -4.8713284730911255e-01 - <_> - 6.4659866333007812e+01 - - 1 2 2112 2.5000000000000000e+00 0 -1 2113 - 1.0500000000000000e+01 -2 -3 2114 2.5000000000000000e+00 - - 8.9292472600936890e-01 -9.4043314456939697e-01 - 5.3616881370544434e-01 -8.1886835396289825e-02 - <_> - 6.4854621887207031e+01 - - 1 2 2115 5.7500000000000000e+01 0 -1 2116 - 6.5000000000000000e+00 -2 -3 2117 1399. - - 1.7543983459472656e-01 -5.9518599510192871e-01 - -6.6982376575469971e-01 3.6574700474739075e-01 - <_> - 6.4909034729003906e+01 - - 1 2 2118 2.7650000000000000e+02 0 -1 2119 2618. -2 -3 2120 - 4.3500000000000000e+01 - - 5.1149606704711914e-01 -7.5715744495391846e-01 - 5.4412230849266052e-02 -5.4240036010742188e-01 - <_> - 6.5523689270019531e+01 - - 1 2 2121 2.0850000000000000e+02 0 -1 2122 - 1.5000000000000000e+00 -2 -3 2123 2.1500000000000000e+01 - - 2.8490218520164490e-01 -4.3338671326637268e-01 - -4.2747175693511963e-01 6.1465066671371460e-01 - <_> - 6.5561706542968750e+01 - - 1 2 2124 212. 0 -1 2125 4.5500000000000000e+01 -2 -3 2126 - 2.5150000000000000e+02 - - -5.5702477693557739e-01 3.5860374569892883e-01 - -6.7760747671127319e-01 3.8017414510250092e-02 - <_> - 6.5649497985839844e+01 - - 1 2 2127 5.9500000000000000e+01 0 -1 2128 - 3.5000000000000000e+00 -2 -3 2129 6.5000000000000000e+00 - - -7.9711538553237915e-01 2.5381851196289062e-01 - 4.2455443739891052e-01 -1.7120632529258728e-01 - <_> - 6.5992294311523438e+01 - - 1 2 2130 3.5000000000000000e+00 0 -1 2131 - 1.6250000000000000e+02 -2 -3 2132 2.2500000000000000e+01 - - -3.3420738577842712e-01 6.4248228073120117e-01 - 6.8257737159729004e-01 -1.6899804770946503e-01 - <_> - 6.6213569641113281e+01 - - 1 2 2133 5.5000000000000000e+00 0 -1 2134 - 7.3500000000000000e+01 -2 -3 2135 9.4500000000000000e+01 - - 2.2127301990985870e-01 -7.9195356369018555e-01 - -6.8413102626800537e-01 8.0674022436141968e-01 - <_> - 6.5891929626464844e+01 - - 1 2 2136 5.1500000000000000e+01 0 -1 2137 - 3.5000000000000000e+00 -2 -3 2138 3.6750000000000000e+02 - - 3.1779468059539795e-01 -3.8076880574226379e-01 - 6.2580502033233643e-01 -3.2678863406181335e-01 - <_> - 6.5933746337890625e+01 - - 1 2 2139 1.1500000000000000e+01 0 -1 2140 - 2.5000000000000000e+00 -2 -3 2141 4.5000000000000000e+00 - - 1.1745031177997589e-01 -4.3131595849990845e-01 - 6.6705638170242310e-01 -2.3260143399238586e-01 - <_> - 6.5980415344238281e+01 - - 1 2 2142 3.5000000000000000e+00 0 -1 2143 - 2.5000000000000000e+00 -2 -3 2144 5.0000000000000000e-01 - - 7.7854001522064209e-01 -8.4415936470031738e-01 - 5.8085924386978149e-01 -2.8965638950467110e-02 - <_> - 6.5784027099609375e+01 - - 1 2 2145 4.7500000000000000e+01 0 -1 2146 - 2.5000000000000000e+00 -2 -3 2147 3.5000000000000000e+00 - - 3.7243506312370300e-01 -6.9404041767120361e-01 - 3.7178915739059448e-01 -1.9639030098915100e-01 - <_> - 6.6053306579589844e+01 - - 1 2 2148 4.7350000000000000e+02 0 -1 2149 - 4.7500000000000000e+01 -2 -3 2150 2.2500000000000000e+01 - - -3.7930485606193542e-01 2.6928251981735229e-01 - -6.6765409708023071e-01 4.6291077136993408e-01 - <_> - 6.6251876831054688e+01 - - 1 2 2151 1.7500000000000000e+01 0 -1 2152 - 3.2650000000000000e+02 -2 -3 2153 1.5500000000000000e+01 - - -1. 1.9857025146484375e-01 -6.2745827436447144e-01 - 4.3167012929916382e-01 - <_> - 6.6497039794921875e+01 - - 1 2 2154 2.8500000000000000e+01 0 -1 2155 - 2.6500000000000000e+01 -2 -3 2156 4.1500000000000000e+01 - - -8.1000304222106934e-01 6.9051915407180786e-01 - -2.8902414441108704e-01 4.2377713322639465e-01 - <_> - 6.6451217651367188e+01 - - 1 2 2157 4.1250000000000000e+02 0 -1 2158 - 1.6500000000000000e+01 -2 -3 2159 3.0650000000000000e+02 - - 2.3259440436959267e-02 -6.3648867607116699e-01 - 7.6639103889465332e-01 -1.8078628182411194e-01 - <_> - 6.6132827758789062e+01 - - 1 2 2160 2.1500000000000000e+01 0 -1 2161 - 8.7550000000000000e+02 -2 -3 2162 1.6500000000000000e+01 - - -3.3872911334037781e-01 2.7060332894325256e-01 - -6.3514488935470581e-01 9.0211552381515503e-01 - <_> - 6.6081367492675781e+01 - - 1 2 2163 5.7650000000000000e+02 0 -1 2164 681. -2 -3 2165 - 1.7175000000000000e+03 - - -7.8227895498275757e-01 8.6135381460189819e-01 - 8.2487636804580688e-01 -5.1461022347211838e-02 - <_> - 6.5997879028320312e+01 - - 1 2 2166 1.8500000000000000e+01 0 -1 2167 - 4.5000000000000000e+00 -2 -3 2168 3.5500000000000000e+01 - - -8.3486534655094147e-02 6.0638916492462158e-01 - -4.8585453629493713e-01 2.9007250070571899e-01 - <_> - 6.6484413146972656e+01 - - 1 2 2169 1.2995000000000000e+03 0 -1 2170 - 4.6065000000000000e+03 -2 -3 2171 2.5000000000000000e+00 - - -2.7341315150260925e-01 5.3913331031799316e-01 - 4.8653602600097656e-01 -4.5589551329612732e-01 - <_> - 6.6919540405273438e+01 - - 1 2 2172 2.8500000000000000e+01 0 -1 2173 143. -2 -3 2174 - 1.3500000000000000e+01 - - 4.0857741236686707e-01 -7.9653608798980713e-01 - 4.3512815237045288e-01 -1.2409269809722900e-01 - <_> - 6.6548828125000000e+01 - - 1 2 2175 3.6500000000000000e+01 0 -1 2176 - 3.8500000000000000e+01 -2 -3 2177 3.0015000000000000e+03 - - -3.7071618437767029e-01 3.0769228935241699e-01 - -5.6432120501995087e-02 7.5577193498611450e-01 - <_> - 6.6935661315917969e+01 - - 1 2 2178 221. 0 -1 2179 5.0000000000000000e-01 -2 -3 2180 - 6.5000000000000000e+00 - - 3.8683256506919861e-01 -1.6335722804069519e-01 - 3.1397402286529541e-01 -8.9784342050552368e-01 - <_> - 6.6811462402343750e+01 - - 1 2 2181 1.6500000000000000e+01 0 -1 2182 - 9.7500000000000000e+01 -2 -3 2183 4.5000000000000000e+00 - - 1.9564503431320190e-01 -6.8224984407424927e-01 - 3.6420011520385742e-01 -2.7474680542945862e-01 - <_> - 6.7206642150878906e+01 - - 1 2 2184 2.8150000000000000e+02 0 -1 2185 - 5.3500000000000000e+01 -2 -3 2186 2.1950000000000000e+02 - - 3.9518028497695923e-01 -7.5029599666595459e-01 - -4.5047336816787720e-01 4.4910728931427002e-01 - <_> - 6.6829307556152344e+01 - - 1 2 2187 6.2550000000000000e+02 0 -1 2188 - 2.7045000000000000e+03 -2 -3 2189 7.5250000000000000e+02 - - -1.0180658102035522e-01 4.7846919298171997e-01 - -9.1966360807418823e-01 -3.8947533816099167e-02 - <_> - 6.6750717163085938e+01 - - 1 2 2190 4.7350000000000000e+02 0 -1 2191 - 5.7500000000000000e+01 -2 -3 2192 5.0000000000000000e-01 - - -7.8587010502815247e-02 6.3941407203674316e-01 - 7.1196836233139038e-01 -7.2520041465759277e-01 - <_> - 6.7127670288085938e+01 - - 1 2 2193 2.5000000000000000e+00 0 -1 2194 - 1.5500000000000000e+01 -2 -3 2195 2.5000000000000000e+00 - - -4.7885441780090332e-01 3.2798525691032410e-01 - 8.6548590660095215e-01 5.7965524494647980e-02 - <_> - 6.7040710449218750e+01 - - 1 2 2196 2.5000000000000000e+00 0 -1 2197 - 1.9500000000000000e+01 -2 -3 2198 1.2500000000000000e+01 - - -5.5627369880676270e-01 5.8527511358261108e-01 - -5.7549017667770386e-01 6.9125495851039886e-02 - <_> - 6.7134475708007812e+01 - - 1 2 2199 2.5000000000000000e+00 0 -1 2200 - 1.4215000000000000e+03 -2 -3 2201 5.0000000000000000e-01 - - 3.7880736589431763e-01 -4.5164510607719421e-01 - 5.3598467260599136e-02 -5.7012593746185303e-01 - <_> - 6.7369125366210938e+01 - - 1 2 2202 5.5000000000000000e+00 0 -1 2203 - 5.5000000000000000e+00 -2 -3 2204 1.5000000000000000e+00 - - -9.4780540466308594e-01 7.3004895448684692e-01 - 6.4780569076538086e-01 -5.0393346697092056e-02 - <_> - 6.7813079833984375e+01 - - 1 2 2205 1.2500000000000000e+01 0 -1 2206 9948. -2 -3 2207 - 2.0450000000000000e+02 - - -4.2956997640430927e-03 -9.1839849948883057e-01 - -1.5275211632251740e-01 4.4395634531974792e-01 - <_> - 6.8058036804199219e+01 - - 1 2 2208 4.0500000000000000e+01 0 -1 2209 - 5.0000000000000000e-01 -2 -3 2210 4.7500000000000000e+01 - - 2.4495334923267365e-01 -9.5012718439102173e-01 - 1.7766039073467255e-01 -4.3439298868179321e-01 - <_> - 6.7814498901367188e+01 - - 1 2 2211 1.5500000000000000e+01 0 -1 2212 - 7.5000000000000000e+00 -2 -3 2213 1.4500000000000000e+01 - - 3.4375911951065063e-01 -6.9197601079940796e-01 - -7.6082307100296021e-01 2.3456893861293793e-01 - <_> - 6.7533103942871094e+01 - - 1 2 2214 8.1500000000000000e+01 0 -1 2215 - 1.1500000000000000e+01 -2 -3 2216 1.9500000000000000e+01 - - 2.6256918907165527e-01 -2.8139856457710266e-01 - -8.1822723150253296e-01 2.4620606005191803e-01 - <_> - 6.7985069274902344e+01 - - 1 2 2217 2.6500000000000000e+01 0 -1 2218 - 9.5000000000000000e+00 -2 -3 2219 4.5000000000000000e+00 - - -1.2688148021697998e-01 -9.2650556564331055e-01 - 4.5196792483329773e-01 -1.2886488437652588e-01 - <_> - 6.8211486816406250e+01 - - 1 2 2220 1.9500000000000000e+01 0 -1 2221 - 9.4500000000000000e+01 -2 -3 2222 1.8500000000000000e+01 - - -4.5716031454503536e-03 -9.2506814002990723e-01 - 2.2641468048095703e-01 -5.4319751262664795e-01 - <_> - 6.8062339782714844e+01 - - 1 2 2223 1.5000000000000000e+00 0 -1 2224 - 1.1350000000000000e+02 -2 -3 2225 3.5000000000000000e+00 - - -1.4914712309837341e-01 6.2766093015670776e-01 - 5.2602481842041016e-01 -3.3082970976829529e-01 - <_> - 6.8320228576660156e+01 - - 1 2 2226 6.7500000000000000e+01 0 -1 2227 - 4.5000000000000000e+00 -2 -3 2228 8.3350000000000000e+02 - - -7.0059794187545776e-01 2.5789487361907959e-01 - 2.8099337220191956e-01 -6.9175392389297485e-01 - <_> - 6.8181999206542969e+01 - - 1 2 2229 1.2500000000000000e+01 0 -1 2230 - 3.1350000000000000e+02 -2 -3 2231 9.4565000000000000e+03 - - 1.9189414381980896e-01 -3.9976862072944641e-01 - 5.6042033433914185e-01 -9.6583509445190430e-01 - <_> - 6.8313468933105469e+01 - - 1 2 2232 9.5000000000000000e+00 0 -1 2233 1313. -2 -3 2234 - 7.9450000000000000e+02 - - 6.0552877187728882e-01 -7.1993356943130493e-01 - -1.9865931570529938e-01 3.5071191191673279e-01 - <_> - 6.8655784606933594e+01 - - 1 2 2235 5.5000000000000000e+00 0 -1 2236 - 1.5500000000000000e+01 -2 -3 2237 4.2500000000000000e+01 - - -8.3366417884826660e-01 3.4231638908386230e-01 - -5.7617366313934326e-01 1.2723289430141449e-01 - <_> - 6.8312980651855469e+01 - - 1 2 2238 1.5000000000000000e+00 0 -1 2239 - 1.0500000000000000e+01 -2 -3 2240 3.2950000000000000e+02 - - -6.2311822175979614e-01 5.3832811117172241e-01 - -3.4280434250831604e-01 6.2301361560821533e-01 - <_> - 6.8748611450195312e+01 - - 1 2 2241 5.5000000000000000e+00 0 -1 2242 - 6.3500000000000000e+01 -2 -3 2243 1.4355000000000000e+03 - - 4.3563413619995117e-01 -7.9157996177673340e-01 - 6.3327491283416748e-02 -5.8212018013000488e-01 - <_> - 6.8442298889160156e+01 - - 1 2 2244 2.0500000000000000e+01 0 -1 2245 - 8.5000000000000000e+00 -2 -3 2246 1.3350000000000000e+02 - - -3.0631437897682190e-01 2.6373180747032166e-01 - 7.2269374132156372e-01 -8.2843840122222900e-01 - <_> - 6.8691452026367188e+01 - - 1 2 2247 5.8450000000000000e+02 0 -1 2248 1991. -2 -3 2249 - 1.9550000000000000e+02 - - -5.8844625949859619e-01 7.2171705961227417e-01 - 5.9379982948303223e-01 -8.8590703904628754e-02 - <_> - 6.8854362487792969e+01 - - 1 2 2250 2.2450000000000000e+02 0 -1 2251 - 3.5000000000000000e+00 -2 -3 2252 4.4500000000000000e+01 - - 4.1746988892555237e-01 -1.5201584994792938e-01 - -7.8322100639343262e-01 4.8759365081787109e-01 - <_> - 6.8978080749511719e+01 - - 1 2 2253 1.1350000000000000e+02 0 -1 2254 - 4.5000000000000000e+00 -2 -3 2255 4.5500000000000000e+01 - - 1.2371577322483063e-01 -6.8989777565002441e-01 - 3.5007947683334351e-01 -7.2059243917465210e-01 - <_> - 6.9356269836425781e+01 - - 1 2 2256 1.9500000000000000e+01 0 -1 2257 - 1.0500000000000000e+01 -2 -3 2258 1.3500000000000000e+01 - - 2.8434163331985474e-01 -4.2419987916946411e-01 - 5.7273209095001221e-01 -1.0273739695549011e-01 - <_> - 6.9808845520019531e+01 - - 1 2 2259 5.5000000000000000e+00 0 -1 2260 - 1.8500000000000000e+01 -2 -3 2261 1.5000000000000000e+00 - - -8.0742955207824707e-01 8.1550550460815430e-01 - 4.5257565379142761e-01 -1.1754118651151657e-01 - <_> - 6.9490539550781250e+01 - - 1 2 2262 5.3500000000000000e+01 0 -1 2263 80. -2 -3 2264 - 2.9500000000000000e+01 - - -5.4256713390350342e-01 5.4104971885681152e-01 - 3.5188353061676025e-01 -3.0036619305610657e-01 - <_> - 6.9366668701171875e+01 - - 1 2 2265 2.6065000000000000e+03 0 -1 2266 - 3.1350000000000000e+02 -2 -3 2267 5.5000000000000000e+00 - - -1.2386845052242279e-01 4.6345305442810059e-01 - 6.0491842031478882e-01 -9.4304585456848145e-01 - <_> - 6.9713836669921875e+01 - - 1 2 2268 1.7500000000000000e+01 0 -1 2269 - 2.5000000000000000e+00 -2 -3 2270 5.0000000000000000e-01 - - -8.5482913255691528e-01 3.4717017412185669e-01 - 1.7867124080657959e-01 -6.1432170867919922e-01 - <_> - 7.0036468505859375e+01 - - 1 2 2271 7.5000000000000000e+00 0 -1 2272 - 2.3500000000000000e+01 -2 -3 2273 1.5500000000000000e+01 - - -9.8486787080764771e-01 3.2262811064720154e-01 - -5.6460940837860107e-01 1.9223406910896301e-01 - <_> - 6.9981750488281250e+01 - - 1 2 2274 1.7250000000000000e+02 0 -1 2275 - 5.0000000000000000e-01 -2 -3 2276 5.6500000000000000e+01 - - 2.4282279610633850e-01 -3.6108613014221191e-01 - 5.9585607051849365e-01 -6.8952751159667969e-01 - <_> - 6.9557426452636719e+01 - - 1 2 2277 1.5000000000000000e+00 0 -1 2278 7. -2 -3 2279 - 4.2050000000000000e+02 - - 1. -7.2186136245727539e-01 2.3051606118679047e-01 - -4.9865522980690002e-01 - <_> - 6.9593688964843750e+01 - - 1 2 2280 3.5000000000000000e+00 0 -1 2281 - 5.5000000000000000e+00 -2 -3 2282 1.5000000000000000e+00 - - 3.6256898194551468e-02 -5.9310066699981689e-01 - 6.1099308729171753e-01 -5.2162308245897293e-02 - <_> - 6.9190055847167969e+01 - - 1 2 2283 5.0000000000000000e-01 0 -1 2284 - 1.5000000000000000e+00 -2 -3 2285 3.1950000000000000e+02 - - -5.6549012660980225e-01 4.1545909643173218e-01 - -4.0363189578056335e-01 6.4397597312927246e-01 - <_> - 6.9152801513671875e+01 - - 1 2 2286 1.2500000000000000e+01 0 -1 2287 - 1.3500000000000000e+01 -2 -3 2288 1.5000000000000000e+00 - - 8.4121584892272949e-02 -8.1945008039474487e-01 - 5.4119038581848145e-01 -3.7251871079206467e-02 - <_> - 6.9844085693359375e+01 - - 1 2 2289 4.1950000000000000e+02 0 -1 2290 3338. -2 -3 2291 - 1.7450000000000000e+02 - - -1.0648692399263382e-01 6.9128334522247314e-01 - -4.1935205459594727e-01 2.4380990862846375e-01 - <_> - 7.0174018859863281e+01 - - 1 2 2292 1.5500000000000000e+01 0 -1 2293 - 2.6500000000000000e+01 -2 -3 2294 1.5000000000000000e+00 - - -5.6438052654266357e-01 3.2993179559707642e-01 - 1.9468745589256287e-01 -5.9477233886718750e-01 - <_> - 7.0660224914550781e+01 - - 1 2 2295 1.0150000000000000e+02 0 -1 2296 - 5.0000000000000000e-01 -2 -3 2297 2.6500000000000000e+01 - - 4.8620355129241943e-01 -1.8835483491420746e-01 - -5.4727905988693237e-01 5.2561342716217041e-01 - <_> - 7.0732994079589844e+01 - - 1 2 2298 1.4450000000000000e+02 0 -1 2299 - 2.5000000000000000e+00 -2 -3 2300 1.5000000000000000e+00 - - 7.2770319879055023e-02 -6.6459918022155762e-01 - 4.1657650470733643e-01 -3.1872367858886719e-01 - <_> - 7.0376434326171875e+01 - - 1 2 2301 2.7750000000000000e+02 0 -1 2302 - 2.8500000000000000e+01 -2 -3 2303 2.2500000000000000e+01 - - -4.7953361272811890e-01 5.4570424556732178e-01 - 3.0004525184631348e-01 -3.5655823349952698e-01 - <_> - 7.0656318664550781e+01 - - 1 2 2304 5.8750000000000000e+02 0 -1 2305 - 1.0500000000000000e+01 -2 -3 2306 7.1500000000000000e+01 - - -1.0104954242706299e-01 -8.7880355119705200e-01 - -8.3692330121994019e-01 2.7988719940185547e-01 - <_> - 7.0784782409667969e+01 - - 1 2 2307 1.4500000000000000e+01 0 -1 2308 - 1.0450000000000000e+02 -2 -3 2309 67. - - 6.7218846082687378e-01 -3.5151880979537964e-01 - -6.5867102146148682e-01 4.6130353212356567e-01 - <_> - 7.0990669250488281e+01 - - 1 2 2310 334. 0 -1 2311 3.3500000000000000e+01 -2 -3 2312 - 8.1750000000000000e+02 - - -3.3783861994743347e-01 3.0199536681175232e-01 - -9.2741793394088745e-01 2.6250743865966797e-01 - <_> - 7.1334205627441406e+01 - - 1 2 2313 1.4500000000000000e+01 0 -1 2314 - 1.4500000000000000e+01 -2 -3 2315 3.6500000000000000e+01 - - -2.9965308308601379e-01 4.6802315115928650e-01 - -4.5157477259635925e-01 6.7555361986160278e-01 - <_> - 7.1500701904296875e+01 - - 1 2 2316 5.0000000000000000e-01 0 -1 2317 87. -2 -3 2318 - 5.5000000000000000e+00 - - 3.0542531609535217e-01 -5.7673245668411255e-01 - 2.7094784379005432e-01 -5.7631582021713257e-01 - <_> - 7.1793479919433594e+01 - - 1 2 2319 4.5000000000000000e+00 0 -1 2320 - 3.0500000000000000e+01 -2 -3 2321 1.8005000000000000e+03 - - -9.6369409561157227e-01 1. 2.9277887940406799e-01 - -2.4375233054161072e-01 - <_> - 7.1967315673828125e+01 - - 1 2 2322 2.5000000000000000e+00 0 -1 2323 4880. -2 -3 2324 - 3.2500000000000000e+01 - - 3.0087158083915710e-01 -5.3540611267089844e-01 - -6.9770932197570801e-01 -8.8338237255811691e-03 - <_> - 7.1673614501953125e+01 - - 1 2 2325 1.1500000000000000e+01 0 -1 2326 - 5.0000000000000000e-01 -2 -3 2327 2.5000000000000000e+00 - - 3.5899358987808228e-01 -5.2653604745864868e-01 - 5.8578026294708252e-01 -3.2805901020765305e-02 - <_> - 7.1711250305175781e+01 - - 1 2 2328 1.8500000000000000e+01 0 -1 2329 - 1.8050000000000000e+02 -2 -3 2330 35. - - 3.5447284579277039e-01 -5.9741777181625366e-01 - -7.3350757360458374e-01 2.8574359416961670e-01 - <_> - 7.1695281982421875e+01 - - 1 2 2331 2.0850000000000000e+02 0 -1 2332 1048. -2 -3 2333 - 5.5000000000000000e+00 - - -3.0666926503181458e-01 9.4038575887680054e-01 - -7.0172363519668579e-01 4.9131000041961670e-01 - <_> - 7.1706031799316406e+01 - - 1 2 2334 2.8850000000000000e+02 0 -1 2335 1736. -2 -3 2336 - 1.5000000000000000e+00 - - 1.0753270238637924e-02 7.3304736614227295e-01 - 5.3744524717330933e-01 -5.2062910795211792e-01 - <_> - 7.1823760986328125e+01 - - 1 2 2337 1.6500000000000000e+01 0 -1 2338 - 7.5000000000000000e+00 -2 -3 2339 1.5000000000000000e+00 - - -7.8876292705535889e-01 3.3360600471496582e-01 - 1.1772559583187103e-01 -5.7080477476119995e-01 - <_> - 7.2228584289550781e+01 - - 1 2 2340 2.5000000000000000e+00 0 -1 2341 - 4.6500000000000000e+01 -2 -3 2342 1.5250000000000000e+02 - - -2.1400362253189087e-01 4.0482848882675171e-01 - -6.2977635860443115e-01 3.5589864850044250e-01 - <_> - 7.2438087463378906e+01 - - 1 2 2343 1.6500000000000000e+01 0 -1 2344 3901. -2 -3 2345 - 2.7500000000000000e+01 - - 2.0950204133987427e-01 -5.5380266904830933e-01 - -7.4909400939941406e-01 5.2945792675018311e-01 - <_> - 7.2360771179199219e+01 - - 1 2 2346 2.4500000000000000e+01 0 -1 2347 - 7.5000000000000000e+00 -2 -3 2348 1.8500000000000000e+01 - - 3.7871867418289185e-01 -7.5313919782638550e-01 - 5.1331257820129395e-01 -9.7519315779209137e-02 - <_> - 7.1928703308105469e+01 - - 1 2 2349 8.0500000000000000e+01 0 -1 2350 - 8.6500000000000000e+01 -2 -3 2351 139. - - 5.2605316042900085e-02 -6.2711888551712036e-01 - -3.3864989876747131e-01 4.3293687701225281e-01 - <_> - 7.2465637207031250e+01 - - 1 2 2352 3.5000000000000000e+00 0 -1 2353 - 3.5000000000000000e+00 -2 -3 2354 458. - - -8.2156580686569214e-01 5.3693503141403198e-01 - -7.5703012943267822e-01 7.3093846440315247e-03 - <_> - 7.2306266784667969e+01 - - 1 2 2355 1.5000000000000000e+00 0 -1 2356 - 2.2500000000000000e+01 -2 -3 2357 5.0000000000000000e-01 - - -8.8483113050460815e-01 2.5380238890647888e-01 - 1.9247277081012726e-01 -5.5495434999465942e-01 - <_> - 7.2351318359375000e+01 - - 1 2 2358 5.0000000000000000e-01 0 -1 2359 - 1.1500000000000000e+01 -2 -3 2360 2.0550000000000000e+02 - - -6.4710837602615356e-01 3.3967879414558411e-01 - 4.5056350529193878e-02 -6.6342002153396606e-01 - <_> - 7.2549964904785156e+01 - - 1 2 2361 3.1500000000000000e+01 0 -1 2362 - 5.5000000000000000e+00 -2 -3 2363 1.1150000000000000e+02 - - -9.2634866014122963e-03 -5.6539881229400635e-01 - 5.9193736314773560e-01 -6.0422807931900024e-01 - <_> - 7.2340164184570312e+01 - - 1 2 2364 1.4550000000000000e+02 0 -1 2365 87. -2 -3 2366 - 2.0500000000000000e+01 - - 7.1558344364166260e-01 -6.7444592714309692e-01 - 2.4655258655548096e-01 -4.4633221626281738e-01 - <_> - 7.2298965454101562e+01 - - 1 2 2367 5.0000000000000000e-01 0 -1 2368 - 1.6500000000000000e+01 -2 -3 2369 1.1650000000000000e+02 - - -6.4155972003936768e-01 5.6763589382171631e-01 - 4.5910947024822235e-02 -5.7516378164291382e-01 - <_> - 7.2460647583007812e+01 - - 1 2 2370 1.0500000000000000e+01 0 -1 2371 776. -2 -3 2372 - 3.0350000000000000e+02 - - 1. -7.5311285257339478e-01 1.6168554127216339e-01 - -9.7889220714569092e-01 - <_> - 7.2329025268554688e+01 - - 1 2 2373 6.8250000000000000e+02 0 -1 2374 - 9.8350000000000000e+02 -2 -3 2375 8.4550000000000000e+02 - - -5.8907532691955566e-01 6.2361657619476318e-01 - 6.0256063938140869e-01 -1.3162477314472198e-01 - <_> - 7.2692337036132812e+01 - - 1 2 2376 9.5000000000000000e+00 0 -1 2377 587. -2 -3 2378 - 6.2850000000000000e+02 - - 1.8354943394660950e-01 -6.3397884368896484e-01 - 3.6331036686897278e-01 -4.3740653991699219e-01 - <_> - 7.3099296569824219e+01 - - 1 2 2379 5.0000000000000000e-01 0 -1 2380 - 5.5000000000000000e+00 -2 -3 2381 1.5000000000000000e+00 - - 4.0695956349372864e-01 -2.3705665767192841e-01 - 5.4972708225250244e-01 -5.1312422752380371e-01 - <_> - 7.3302726745605469e+01 - - 1 2 2382 8.7050000000000000e+02 0 -1 2383 - 1.5000000000000000e+00 -2 -3 2384 2.9500000000000000e+01 - - 3.9779379963874817e-01 -6.3519412279129028e-01 - -8.4823501110076904e-01 3.2447892427444458e-01 - <_> - 7.3023147583007812e+01 - - 1 2 2385 5.0000000000000000e-01 0 -1 2386 - 3.8500000000000000e+01 -2 -3 2387 1.5775000000000000e+03 - - -2.5971448421478271e-01 5.4386669397354126e-01 - -4.0062361955642700e-01 4.5868498086929321e-01 - <_> - 7.3163795471191406e+01 - - 1 2 2388 2.7500000000000000e+01 0 -1 2389 - 5.0000000000000000e-01 -2 -3 2390 4.6500000000000000e+01 - - 1.4064319431781769e-01 -4.5721408724784851e-01 - 8.3929353952407837e-01 -5.6752306222915649e-01 - <_> - 7.3411483764648438e+01 - - 1 2 2391 3.5000000000000000e+00 0 -1 2392 21. -2 -3 2393 - 1.0850000000000000e+02 - - -7.8916430473327637e-01 1. 2.4769315123558044e-01 - -4.8368823528289795e-01 - <_> - 7.3806152343750000e+01 - - 1 2 2394 6.5000000000000000e+00 0 -1 2395 - 2.2500000000000000e+01 -2 -3 2396 1.9500000000000000e+01 - - -4.2384034395217896e-01 3.9466390013694763e-01 - 1.2428787350654602e-01 -5.8119755983352661e-01 - <_> - 7.3893051147460938e+01 - - 1 2 2397 6.2500000000000000e+01 0 -1 2398 - 2.5000000000000000e+00 -2 -3 2399 8.5000000000000000e+00 - - 8.6900889873504639e-02 -5.0835818052291870e-01 - 6.4387518167495728e-01 -3.4420084953308105e-01 - <_> - 7.4370101928710938e+01 - - 1 2 2400 2.0250000000000000e+02 0 -1 2401 - 2.6500000000000000e+01 -2 -3 2402 1.0250000000000000e+02 - - -3.3534547686576843e-01 7.1747875213623047e-01 - 5.8294051885604858e-01 -2.0199438929557800e-01 - <_> - 7.3817878723144531e+01 - - 1 2 2403 2.2250000000000000e+02 0 -1 2404 495. -2 -3 2405 - 1.1150000000000000e+02 - - -9.2125439643859863e-01 4.6380558609962463e-01 - -8.2408124208450317e-01 -5.1385825499892235e-03 - <_> - 7.4274734497070312e+01 - - 1 2 2406 5.0000000000000000e-01 0 -1 2407 - 6.5000000000000000e+00 -2 -3 2408 4.5000000000000000e+00 - - -5.4510724544525146e-01 4.5685729384422302e-01 - -4.1785773634910583e-01 3.7173369526863098e-01 - <_> - 7.4214447021484375e+01 - - 1 2 2409 4.3515000000000000e+03 0 -1 2410 - 7.1850000000000000e+02 -2 -3 2411 6.1445000000000000e+03 - - -5.5608157068490982e-02 6.8498140573501587e-01 - -8.1597936153411865e-01 -6.0283310711383820e-02 - <_> - 7.4526939392089844e+01 - - 1 2 2412 1.5000000000000000e+00 0 -1 2413 - 4.5000000000000000e+00 -2 -3 2414 1.7500000000000000e+01 - - -2.5446805357933044e-01 8.0654889345169067e-01 - 4.4617369771003723e-02 -4.9571081995964050e-01 - <_> - 7.4664260864257812e+01 - - 1 2 2415 2.1500000000000000e+01 0 -1 2416 - 9.5000000000000000e+00 -2 -3 2417 5.0000000000000000e-01 - - 2.5834673643112183e-01 -6.3097542524337769e-01 - 5.6628465652465820e-01 -1.0652445256710052e-01 - <_> - 7.4835792541503906e+01 - - 1 2 2418 1.9500000000000000e+01 0 -1 2419 - 2.1650000000000000e+02 -2 -3 2420 3.5000000000000000e+00 - - -3.4473347663879395e-01 3.5953617095947266e-01 - -7.8647011518478394e-01 4.7845369577407837e-01 - <_> - 7.5001464843750000e+01 - - 1 2 2421 4.3350000000000000e+02 0 -1 2422 - 9.5000000000000000e+00 -2 -3 2423 5.0000000000000000e-01 - - -7.6833075284957886e-01 1.6567093133926392e-01 1. - -9.3112909793853760e-01 - <_> - 7.5096672058105469e+01 - - 1 2 2424 1.9500000000000000e+01 0 -1 2425 - 2.5500000000000000e+01 -2 -3 2426 2.5165000000000000e+03 - - -7.1183577179908752e-02 5.7713252305984497e-01 - -7.3037630319595337e-01 9.5210477709770203e-02 - <_> - 7.4955039978027344e+01 - - 1 2 2427 5.5000000000000000e+00 0 -1 2428 - 8.0500000000000000e+01 -2 -3 2429 4.0500000000000000e+01 - - 3.1543654203414917e-01 -5.0912439823150635e-01 - -6.9998091459274292e-01 1.5216259658336639e-01 - <_> - 7.4920089721679688e+01 - - 1 2 2430 1.1215000000000000e+03 0 -1 2431 - 3.8850000000000000e+02 -2 -3 2432 4.1195000000000000e+03 - - 4.6712434291839600e-01 -4.7107401490211487e-01 - -8.0701512098312378e-01 -4.6098276972770691e-02 - <_> - 7.4982124328613281e+01 - - 1 2 2433 1.8500000000000000e+01 0 -1 2434 - 3.5500000000000000e+01 -2 -3 2435 3.5000000000000000e+00 - - -3.7868845462799072e-01 5.3733342885971069e-01 - 5.9916520118713379e-01 -1.3988719880580902e-01 - <_> - 7.5354972839355469e+01 - - 1 2 2436 2.5000000000000000e+00 0 -1 2437 - 4.5000000000000000e+00 -2 -3 2438 2.3500000000000000e+01 - - 3.7731003016233444e-02 -8.0526626110076904e-01 - 4.1983363032341003e-01 -1.6427561640739441e-01 - <_> - 7.5353942871093750e+01 - - 1 2 2439 3.8500000000000000e+01 0 -1 2440 - 5.0000000000000000e-01 -2 -3 2441 1.5250000000000000e+02 - - 4.1628280282020569e-01 -5.9752076864242554e-01 - 2.2085283696651459e-01 -7.8762036561965942e-01 - <_> - 7.4907821655273438e+01 - - 1 2 2442 9.5000000000000000e+00 0 -1 2443 - 5.5000000000000000e+00 -2 -3 2444 1.3500000000000000e+01 - - -6.2543123960494995e-01 2.9037654399871826e-01 - -6.6800427436828613e-01 2.3413531482219696e-01 - <_> - 7.5347267150878906e+01 - - 1 2 2445 5.0000000000000000e-01 0 -1 2446 - 7.5000000000000000e+00 -2 -3 2447 1.5000000000000000e+00 - - -7.7953171730041504e-01 4.3944290280342102e-01 - 2.1482174098491669e-01 -4.5657783746719360e-01 - <_> - 7.5632286071777344e+01 - - 1 2 2448 1.8500000000000000e+01 0 -1 2449 - 1.0500000000000000e+01 -2 -3 2450 3.7500000000000000e+01 - - -3.2795214653015137e-01 2.8501552343368530e-01 - -7.3039668798446655e-01 3.0266335606575012e-01 - <_> - 7.5784385681152344e+01 - - 1 2 2451 5.0000000000000000e-01 0 -1 2452 - 4.5000000000000000e+00 -2 -3 2453 9.5500000000000000e+01 - - -7.9435759782791138e-01 2.8812354803085327e-01 - 3.0145803093910217e-01 -5.5056422948837280e-01 - <_> - 7.5934288024902344e+01 - - 1 2 2454 1.2500000000000000e+01 0 -1 2455 - 1.1500000000000000e+01 -2 -3 2456 9.5000000000000000e+00 - - -5.4109108448028564e-01 3.4966334700584412e-01 - 2.2563920915126801e-01 -6.0146200656890869e-01 - <_> - 7.5664039611816406e+01 - - 1 2 2457 1.5000000000000000e+00 0 -1 2458 - 2.0500000000000000e+01 -2 -3 2459 1.7500000000000000e+01 - - -6.3995569944381714e-02 5.8523094654083252e-01 - -6.0602784156799316e-01 9.1935232281684875e-02 - <_> - 7.5729660034179688e+01 - - 1 2 2460 5.0000000000000000e-01 0 -1 2461 - 1.5000000000000000e+00 -2 -3 2462 5.7500000000000000e+01 - - -3.9503663778305054e-01 6.0793364048004150e-01 - -5.8376723527908325e-01 2.0124232396483421e-02 - <_> - 7.6041374206542969e+01 - - 1 2 2463 2.5000000000000000e+00 0 -1 2464 - 4.5850000000000000e+02 -2 -3 2465 2.8500000000000000e+01 - - 3.1171244382858276e-01 -1. -6.6108351945877075e-01 - 2.7302114292979240e-02 - <_> - 7.5795768737792969e+01 - - 1 2 2466 1.9650000000000000e+02 0 -1 2467 - 6.2950000000000000e+02 -2 -3 2468 8.3500000000000000e+01 - - -2.5152391195297241e-01 6.5583813190460205e-01 - -7.8791797161102295e-01 9.4210775569081306e-04 - <_> - 7.5857429504394531e+01 - - 1 2 2469 4.5000000000000000e+00 0 -1 2470 - 8.0500000000000000e+01 -2 -3 2471 1.1845000000000000e+03 - - 4.5618292689323425e-01 -2.6651117205619812e-01 - 6.1658360064029694e-02 -5.8446490764617920e-01 - <_> - 7.6416542053222656e+01 - - 1 2 2472 4.0950000000000000e+02 0 -1 2473 - 1.5950000000000000e+02 -2 -3 2474 3.6500000000000000e+01 - - -3.3679732680320740e-01 6.7494618892669678e-01 - -5.3805744647979736e-01 5.5911004543304443e-01 - <_> - 7.5964401245117188e+01 - - 1 2 2475 2159. 0 -1 2476 9.5000000000000000e+00 -2 -3 2477 - 2.7550000000000000e+02 - - -9.7294098138809204e-01 3.4394034743309021e-01 - 7.5755751132965088e-01 -4.5213976502418518e-01 - <_> - 7.6349334716796875e+01 - - 1 2 2478 5.0000000000000000e-01 0 -1 2479 109. -2 -3 2480 - 7.5000000000000000e+00 - - -8.3041268587112427e-01 3.8493672013282776e-01 - 1.9105611741542816e-01 -5.4174506664276123e-01 - <_> - 7.6266555786132812e+01 - - 1 2 2481 5.7850000000000000e+02 0 -1 2482 - 1.5000000000000000e+00 -2 -3 2483 2.8750000000000000e+02 - - 5.4517310857772827e-01 -8.3548069000244141e-01 - 5.4728341102600098e-01 -8.2781173288822174e-02 - <_> - 7.6401138305664062e+01 - - 1 2 2484 3.9500000000000000e+01 0 -1 2485 - 4.8500000000000000e+01 -2 -3 2486 1.5450000000000000e+02 - - -3.2842093706130981e-01 4.5771333575248718e-01 - 5.4719090461730957e-01 -5.5783140659332275e-01 - <_> - 7.6629852294921875e+01 - - 1 2 2487 5.0000000000000000e-01 0 -1 2488 - 9.8695000000000000e+03 -2 -3 2489 6.5000000000000000e+00 - - 3.5277694463729858e-01 -8.9051485061645508e-01 - 1.5630321204662323e-01 -5.0492966175079346e-01 - <_> - 7.7012748718261719e+01 - - 1 2 2490 3.4250000000000000e+02 0 -1 2491 - 5.0000000000000000e-01 -2 -3 2492 1.0500000000000000e+01 - - 6.1497741937637329e-01 -4.2811819911003113e-01 - -6.7799770832061768e-01 3.8289925456047058e-01 - <_> - 7.7173255920410156e+01 - - 1 2 2493 6.3500000000000000e+01 0 -1 2494 - 4.2500000000000000e+01 -2 -3 2495 1.0450000000000000e+02 - - -7.6624304056167603e-01 1.6050516068935394e-01 - -9.2148023843765259e-01 7.9243576526641846e-01 - <_> - 7.7233604431152344e+01 - - 1 2 2496 3.5000000000000000e+00 0 -1 2497 - 2.9500000000000000e+01 -2 -3 2498 9.5000000000000000e+00 - - 4.3042707443237305e-01 -7.0397478342056274e-01 - -5.7992899417877197e-01 6.0347892343997955e-02 - <_> - 7.7677680969238281e+01 - - 1 2 2499 7.7750000000000000e+02 0 -1 2500 - 3.5000000000000000e+00 -2 -3 2501 3.9050000000000000e+02 - - 2.6784166693687439e-01 -7.3122310638427734e-01 - 6.9813531637191772e-01 -5.0064746290445328e-02 - <_> - 7.7810462951660156e+01 - - 1 2 2502 1.2500000000000000e+01 0 -1 2503 46. -2 -3 2504 - 4.7550000000000000e+02 - - 7.4502938985824585e-01 -9.3451422452926636e-01 - 1.7553819715976715e-01 -6.0448014736175537e-01 - <_> - 7.8011604309082031e+01 - - 1 2 2505 5.0000000000000000e-01 0 -1 2506 - 1.5000000000000000e+00 -2 -3 2507 2.1500000000000000e+01 - - 5.5112600326538086e-01 -7.1465468406677246e-01 - -6.2684929370880127e-01 2.0114150643348694e-01 - <_> - 7.7726852416992188e+01 - - 1 2 2508 2.5000000000000000e+00 0 -1 2509 - 1.5000000000000000e+00 -2 -3 2510 2.2275000000000000e+03 - - -6.1417835950851440e-01 6.4539062976837158e-01 - 2.3531807959079742e-01 -3.7372583150863647e-01 - <_> - 7.7838409423828125e+01 - - 1 2 2511 4.0435000000000000e+03 0 -1 2512 - 1.6050000000000000e+02 -2 -3 2513 12334. - - -3.2763364911079407e-01 7.1799826622009277e-01 - 4.0013375878334045e-01 -8.6134457588195801e-01 - <_> - 7.7509208679199219e+01 - - 1 2 2514 5.0000000000000000e-01 0 -1 2515 - 3.5000000000000000e+00 -2 -3 2516 4.1050000000000000e+02 - - -5.3890359401702881e-01 3.9034625887870789e-01 - 3.8619524240493774e-01 -5.2792149782180786e-01 - <_> - 7.7868835449218750e+01 - - 1 2 2517 5.0000000000000000e-01 0 -1 2518 - 4.5000000000000000e+00 -2 -3 2519 5.0000000000000000e-01 - - -4.3116971850395203e-01 3.5963350534439087e-01 - 3.4538099169731140e-01 -4.9176117777824402e-01 - <_> - 7.8107124328613281e+01 - - 1 2 2520 8.5000000000000000e+00 0 -1 2521 303. -2 -3 2522 - 1.3550000000000000e+02 - - 3.4497961401939392e-01 -3.9331153035163879e-01 - 6.7525440454483032e-01 -6.4588183164596558e-01 - <_> - 7.7949096679687500e+01 - - 1 2 2523 4.5000000000000000e+00 0 -1 2524 - 4.4500000000000000e+01 -2 -3 2525 9.5000000000000000e+00 - - -8.7561493273824453e-04 6.5230095386505127e-01 - -5.9499686956405640e-01 2.8807112574577332e-01 - <_> - 7.7715606689453125e+01 - - 1 2 2526 5.7500000000000000e+01 0 -1 2527 - 1.9500000000000000e+01 -2 -3 2528 4.5000000000000000e+00 - - -2.3348997533321381e-01 3.4078663587570190e-01 - 8.8998430967330933e-01 -8.2743632793426514e-01 - <_> - 7.7412117004394531e+01 - - 1 2 2529 1.5500000000000000e+01 0 -1 2530 - 7.5000000000000000e+00 -2 -3 2531 1.2500000000000000e+01 - - -8.8361167907714844e-01 4.6851965785026550e-01 - 7.6548218727111816e-01 -3.4992104768753052e-01 - <_> - 7.7919708251953125e+01 - - 1 2 2532 1.4500000000000000e+01 0 -1 2533 - 4.3250000000000000e+02 -2 -3 2534 1.5000000000000000e+00 - - 1.6036920249462128e-01 -4.6338194608688354e-01 - -7.4071860313415527e-01 5.0758624076843262e-01 - <_> - 7.7726272583007812e+01 - - 1 2 2535 8.0500000000000000e+01 0 -1 2536 - 3.7500000000000000e+01 -2 -3 2537 2.5000000000000000e+00 - - -1.9343656301498413e-01 3.6727836728096008e-01 1. - -8.6589008569717407e-01 - <_> - 7.8272102355957031e+01 - - 1 2 2538 5.0000000000000000e-01 0 -1 2539 - 4.5000000000000000e+00 -2 -3 2540 658. - - -5.3998571634292603e-01 5.4582929611206055e-01 - -3.1522071361541748e-01 7.1490818262100220e-01 - <_> - 7.8563529968261719e+01 - - 1 2 2541 4.5000000000000000e+00 0 -1 2542 - 1.4500000000000000e+01 -2 -3 2543 1.6500000000000000e+01 - - 5.0465071201324463e-01 -4.6871420741081238e-01 - 5.3199578076601028e-02 -5.5464112758636475e-01 - <_> - 7.8416564941406250e+01 - - 1 2 2544 1.3450000000000000e+02 0 -1 2545 - 1.9500000000000000e+01 -2 -3 2546 3.5000000000000000e+00 - - -8.7330028414726257e-02 -7.5999724864959717e-01 - 5.3803235292434692e-01 -1.4696989953517914e-01 - <_> - 7.8487602233886719e+01 - - 1 2 2547 6.5000000000000000e+00 0 -1 2548 - 5.0000000000000000e-01 -2 -3 2549 1.7500000000000000e+01 - - 7.1036763489246368e-02 -7.1582734584808350e-01 - 5.4787242412567139e-01 -1.1151381582021713e-01 - <_> - 7.8819152832031250e+01 - - 1 2 2550 2.0750000000000000e+02 0 -1 2551 - 2.0735000000000000e+03 -2 -3 2552 4304. - - 2.2555717825889587e-01 -4.1814169287681580e-01 - 6.8767857551574707e-01 -2.6335984468460083e-01 - <_> - 7.9293106079101562e+01 - - 1 2 2553 1.8500000000000000e+01 0 -1 2554 - 4.1500000000000000e+01 -2 -3 2555 1.8500000000000000e+01 - - -8.1884217262268066e-01 1. 4.7395563125610352e-01 - -1.8633662164211273e-01 - <_> - 7.9529563903808594e+01 - - 1 2 2556 3.3500000000000000e+01 0 -1 2557 - 1.9850000000000000e+02 -2 -3 2558 1.3050000000000000e+02 - - 5.9216380119323730e-01 -7.9069614410400391e-01 - 2.3645764589309692e-01 -5.4375654458999634e-01 - <_> - 7.9264884948730469e+01 - - 1 2 2559 5.2500000000000000e+01 0 -1 2560 - 6.0500000000000000e+01 -2 -3 2561 3.1500000000000000e+01 - - 9.8454810678958893e-02 -6.2080347537994385e-01 - 3.8626289367675781e-01 -4.1950720548629761e-01 - <_> - 7.9011604309082031e+01 - - 1 2 2562 2.9550000000000000e+02 0 -1 2563 - 3.9500000000000000e+01 -2 -3 2564 2.5000000000000000e+00 - - -6.1641591787338257e-01 2.5828385353088379e-01 - 6.0895466804504395e-01 -5.8573886752128601e-02 - <_> - 7.9083618164062500e+01 - - 1 2 2565 2.8500000000000000e+01 0 -1 2566 - 5.0000000000000000e-01 -2 -3 2567 5.5000000000000000e+00 - - -3.0742061138153076e-01 2.8055912256240845e-01 - -7.9475212097167969e-01 8.2691472768783569e-01 - <_> - 7.9463661193847656e+01 - - 1 2 2568 5.0000000000000000e-01 0 -1 2569 - 1.5000000000000000e+00 -2 -3 2570 6.3050000000000000e+02 - - -1.2270902097225189e-01 7.1463072299957275e-01 - -4.2850509285926819e-01 2.2205479443073273e-01 - <_> - 7.9607894897460938e+01 - - 1 2 2571 3.5000000000000000e+00 0 -1 2572 - 3.5000000000000000e+00 -2 -3 2573 5.0000000000000000e-01 - - -9.3542063236236572e-01 5.4489326477050781e-01 - 2.0372124016284943e-01 -3.9889475703239441e-01 - <_> - 7.9263900756835938e+01 - - 1 2 2574 2.7950000000000000e+02 0 -1 2575 13730. -2 -3 2576 - 7.5000000000000000e+00 - - -7.3570191860198975e-02 7.3383468389511108e-01 - 4.3032327294349670e-01 -3.4399634599685669e-01 - <_> - 7.9479598999023438e+01 - - 1 2 2577 3.5000000000000000e+00 0 -1 2578 - 1.6500000000000000e+01 -2 -3 2579 168. - - 5.7104247808456421e-01 -8.0473148822784424e-01 - 2.1569329500198364e-01 -8.4493541717529297e-01 - <_> - 7.9719924926757812e+01 - - 1 2 2580 1.8500000000000000e+01 0 -1 2581 - 2.5500000000000000e+01 -2 -3 2582 5.8750000000000000e+02 - - -7.7445679903030396e-01 8.1580907106399536e-01 - -3.5785317420959473e-01 2.4033224582672119e-01 - <_> - 7.9651489257812500e+01 - - 1 2 2583 1.9750000000000000e+02 0 -1 2584 - 2.9845000000000000e+03 -2 -3 2585 8.7950000000000000e+02 - - -6.2534831464290619e-02 6.7511278390884399e-01 - 5.5172812938690186e-01 -4.6909588575363159e-01 - <_> - 7.9875663757324219e+01 - - 1 2 2586 4.3500000000000000e+01 0 -1 2587 - 3.0350000000000000e+02 -2 -3 2588 1.5000000000000000e+00 - - -9.0566140413284302e-01 2.2416961193084717e-01 - 6.5261769294738770e-01 -7.8972738981246948e-01 - <_> - 7.9825202941894531e+01 - - 1 2 2589 1.8500000000000000e+01 0 -1 2590 - 7.8500000000000000e+01 -2 -3 2591 5.5000000000000000e+00 - - -5.0458520650863647e-02 6.2098169326782227e-01 - -6.2433195114135742e-01 7.0211088657379150e-01 - <_> - 7.9897819519042969e+01 - - 1 2 2592 5.0000000000000000e-01 0 -1 2593 - 7.5000000000000000e+00 -2 -3 2594 3.6500000000000000e+01 - - -4.5179387927055359e-01 4.7666555643081665e-01 - -5.4754704236984253e-01 7.9487584531307220e-02 - <_> - 8.0220909118652344e+01 - - 1 2 2595 1.5000000000000000e+00 0 -1 2596 - 3.5000000000000000e+00 -2 -3 2597 2.3025000000000000e+03 - - 5.9295910596847534e-01 -4.7368842363357544e-01 - 3.2309135794639587e-01 -3.6595731973648071e-01 - <_> - 8.0416793823242188e+01 - - 1 2 2598 5.7650000000000000e+02 0 -1 2599 - 6.8250000000000000e+02 -2 -3 2600 423. - - -8.3457779884338379e-01 9.4248223304748535e-01 - 1.9588518142700195e-01 -8.9797055721282959e-01 - <_> - 8.0621925354003906e+01 - - 1 2 2601 4.3500000000000000e+01 0 -1 2602 - 4.5000000000000000e+00 -2 -3 2603 1.6500000000000000e+01 - - 5.7445579767227173e-01 -7.1823668479919434e-01 - -8.5307145118713379e-01 2.0513093471527100e-01 - <_> - 8.0483642578125000e+01 - - 1 2 2604 1.5000000000000000e+00 0 -1 2605 - 1.3500000000000000e+01 -2 -3 2606 1.5000000000000000e+00 - - -8.1219720840454102e-01 2.1613596379756927e-01 - 8.3621460199356079e-01 -6.8892109394073486e-01 - <_> - 8.0708099365234375e+01 - - 1 2 2607 1.5000000000000000e+00 0 -1 2608 - 1.5000000000000000e+00 -2 -3 2609 1.5000000000000000e+00 - - -4.5658573508262634e-01 4.5419740676879883e-01 - 3.7913042306900024e-01 -4.2572236061096191e-01 - <_> - 8.0967964172363281e+01 - - 1 2 2610 1.7225000000000000e+03 0 -1 2611 904. -2 -3 2612 - 48. - - -4.9103862047195435e-01 2.5986543297767639e-01 - -6.5187561511993408e-01 7.3263108730316162e-01 - <_> - 8.1015785217285156e+01 - - 1 2 2613 8.5500000000000000e+01 0 -1 2614 - 3.2500000000000000e+01 -2 -3 2615 1.6500000000000000e+01 - - 3.0590304732322693e-01 -6.0726463794708252e-01 - 4.5478045940399170e-01 -2.1701261401176453e-01 - <_> - 8.1222023010253906e+01 - - 1 2 2616 1.1500000000000000e+01 0 -1 2617 - 3.5000000000000000e+00 -2 -3 2618 570. - - 4.0577322244644165e-01 -2.8158581256866455e-01 - -7.0219916105270386e-01 7.8437590599060059e-01 - <_> - 8.1114990234375000e+01 - - 1 2 2619 1.5000000000000000e+00 0 -1 2620 - 5.0000000000000000e-01 -2 -3 2621 5.0000000000000000e-01 - - 4.7717106342315674e-01 -8.8117665052413940e-01 - 3.8160988688468933e-01 -1.6836205124855042e-01 - <_> - 8.0563499450683594e+01 - - 1 2 2622 2.5500000000000000e+01 0 -1 2623 - 1.2500000000000000e+01 -2 -3 2624 5.9500000000000000e+01 - - -5.5149054527282715e-01 3.2653099298477173e-01 - 3.5567849874496460e-01 -6.7506045103073120e-01 - <_> - 8.1009407043457031e+01 - - 1 2 2625 3.5000000000000000e+00 0 -1 2626 - 2.2985000000000000e+03 -2 -3 2627 5.5000000000000000e+00 - - 4.4590899348258972e-01 -2.8159150481224060e-01 - -5.6732189655303955e-01 2.0876012742519379e-01 - <_> - 8.1270759582519531e+01 - - 1 2 2628 1.3500000000000000e+01 0 -1 2629 - 4.4500000000000000e+01 -2 -3 2630 3.9500000000000000e+01 - - 1.7286604642868042e-01 -7.5421804189682007e-01 - 2.6134765148162842e-01 -5.9037572145462036e-01 - <_> - 8.1395576477050781e+01 - - 1 2 2631 4.4750000000000000e+02 0 -1 2632 - 1.9500000000000000e+01 -2 -3 2633 2.7965000000000000e+03 - - 1.2481955438852310e-01 -4.5122003555297852e-01 - 7.7366709709167480e-01 -3.6004805564880371e-01 - <_> - 8.1301132202148438e+01 - - 1 2 2634 2.5000000000000000e+00 0 -1 2635 6. -2 -3 2636 - 1.3995000000000000e+03 - - 1. -1. 4.4335600733757019e-01 -9.4446659088134766e-02 - <_> - 8.1370132446289062e+01 - - 1 2 2637 4.1250000000000000e+02 0 -1 2638 - 1.5000000000000000e+00 -2 -3 2639 7.5000000000000000e+00 - - 6.9000430405139923e-02 -4.9422886967658997e-01 - -9.1928571462631226e-01 4.6428659558296204e-01 - <_> - 8.1621879577636719e+01 - - 1 2 2640 2.8500000000000000e+01 0 -1 2641 - 2.6500000000000000e+01 -2 -3 2642 1.5500000000000000e+01 - - -4.7164541482925415e-01 2.5174945592880249e-01 - 1.3210830092430115e-01 -8.8470876216888428e-01 - <_> - 8.2271644592285156e+01 - - 1 2 2643 2.5000000000000000e+00 0 -1 2644 - 1.0500000000000000e+01 -2 -3 2645 86. - - -6.9350771605968475e-02 6.4976197481155396e-01 - -7.7881592512130737e-01 -6.0378432273864746e-02 - <_> - 8.2486991882324219e+01 - - 1 2 2646 2.7500000000000000e+01 0 -1 2647 - 4.5000000000000000e+00 -2 -3 2648 6.5000000000000000e+00 - - -8.2361882925033569e-01 3.2168322801589966e-01 - 2.4581556022167206e-01 -5.5088657140731812e-01 - <_> - 8.2648330688476562e+01 - - 1 2 2649 1.1500000000000000e+01 0 -1 2650 - 2.5000000000000000e+00 -2 -3 2651 552. - - 5.5005900561809540e-02 -6.6145080327987671e-01 - -9.3321514129638672e-01 2.9643073678016663e-01 - <_> - 8.2730377197265625e+01 - - 1 2 2652 1835. 0 -1 2653 9026. -2 -3 2654 - 5.0000000000000000e-01 - - -8.2883286476135254e-01 9.0321773290634155e-01 - 8.2042239606380463e-02 -4.4094491004943848e-01 - <_> - 8.2976600646972656e+01 - - 1 2 2655 7.5000000000000000e+00 0 -1 2656 27. -2 -3 2657 - 7.7500000000000000e+01 - - -6.6883772611618042e-01 8.2824200391769409e-01 - 2.4622967839241028e-01 -7.1693640947341919e-01 - <_> - 8.2621650695800781e+01 - - 1 2 2658 8.5000000000000000e+00 0 -1 2659 - 5.0000000000000000e-01 -2 -3 2660 55. - - 2.1821559965610504e-01 -3.5495325922966003e-01 - -5.7552605867385864e-01 6.4010292291641235e-01 - <_> - 8.2944847106933594e+01 - - 1 2 2661 5.5000000000000000e+00 0 -1 2662 9109. -2 -3 2663 - 3.0500000000000000e+01 - - 3.6217045038938522e-02 -6.7411881685256958e-01 - 4.6031165122985840e-01 -1.3432784378528595e-01 - <_> - 8.2844596862792969e+01 - - 1 2 2664 4.5000000000000000e+00 0 -1 2665 - 1.9500000000000000e+01 -2 -3 2666 5.0000000000000000e-01 - - -6.6067945957183838e-01 6.5172028541564941e-01 - 5.3896325826644897e-01 -1.0024529695510864e-01 - <_> - 8.2988021850585938e+01 - - 1 2 2667 2.3500000000000000e+01 0 -1 2668 - 3.5000000000000000e+00 -2 -3 2669 5.5500000000000000e+01 - - 3.6205202341079712e-01 -4.8302540183067322e-01 - -3.1453946232795715e-01 4.5836016535758972e-01 - <_> - 8.3242561340332031e+01 - - 1 2 2670 9.0500000000000000e+01 0 -1 2671 - 4.1500000000000000e+01 -2 -3 2672 3.9500000000000000e+01 - - 2.5454065203666687e-01 -3.1304958462715149e-01 - -9.7736436128616333e-01 6.2847685813903809e-01 - <_> - 8.3276382446289062e+01 - - 1 2 2673 1.7500000000000000e+01 0 -1 2674 - 8.3500000000000000e+01 -2 -3 2675 5.5000000000000000e+00 - - 5.6938213109970093e-01 -9.2754542827606201e-01 - 3.0042541027069092e-01 -2.8111898899078369e-01 - <_> - 8.2934799194335938e+01 - - 1 2 2676 3.3500000000000000e+01 0 -1 2677 - 3.6050000000000000e+02 -2 -3 2678 94. - - -3.8239040970802307e-01 1.4262221753597260e-01 - 7.1967273950576782e-01 -7.4638730287551880e-01 - <_> - 8.3355155944824219e+01 - - 1 2 2679 6.5000000000000000e+00 0 -1 2680 25. -2 -3 2681 - 1.5000000000000000e+00 - - -9.2031919956207275e-01 1. 4.2035222053527832e-01 - -1.8400678038597107e-01 - <_> - 8.3341117858886719e+01 - - 1 2 2682 2.7550000000000000e+02 0 -1 2683 - 3.9500000000000000e+01 -2 -3 2684 1.7500000000000000e+01 - - -3.1554982066154480e-01 2.4787786602973938e-01 - -9.8996192216873169e-01 1. - <_> - 8.3088867187500000e+01 - - 1 2 2685 5.0000000000000000e-01 0 -1 2686 - 3.4500000000000000e+01 -2 -3 2687 3.3250000000000000e+02 - - 7.6295363903045654e-01 -3.0974990129470825e-01 - -2.5224679708480835e-01 6.2690478563308716e-01 - <_> - 8.3444519042968750e+01 - - 1 2 2688 1.5000000000000000e+00 0 -1 2689 - 6.6500000000000000e+01 -2 -3 2690 5.0000000000000000e-01 - - -4.7374388575553894e-01 3.5564544796943665e-01 - 2.2661061584949493e-01 -5.4821664094924927e-01 - <_> - 8.3531219482421875e+01 - - 1 2 2691 1.5450000000000000e+02 0 -1 2692 - 3.2500000000000000e+01 -2 -3 2693 1.9500000000000000e+01 - - -2.1394637227058411e-01 8.1045120954513550e-01 - -4.8737204074859619e-01 8.6701557040214539e-02 - <_> - 8.3356086730957031e+01 - - 1 2 2694 3.5000000000000000e+00 0 -1 2695 - 9.5000000000000000e+00 -2 -3 2696 2.1500000000000000e+01 - - -3.3526990562677383e-02 5.4166865348815918e-01 - -6.0305202007293701e-01 7.6919454336166382e-01 - <_> - 8.3536964416503906e+01 - - 1 2 2697 2.7950000000000000e+02 0 -1 2698 - 2.1500000000000000e+01 -2 -3 2699 3.5045000000000000e+03 - - -4.9123385548591614e-01 5.2362555265426636e-01 - -7.9040545225143433e-01 -3.3013910055160522e-02 - <_> - 8.3796424865722656e+01 - - 1 2 2700 9.5000000000000000e+00 0 -1 2701 - 4.5000000000000000e+00 -2 -3 2702 1.7500000000000000e+01 - - 4.8670431971549988e-01 -2.3416480422019958e-01 - -4.7568261623382568e-01 2.2792084515094757e-01 - <_> - 8.4059371948242188e+01 - - 1 2 2703 5.5500000000000000e+01 0 -1 2704 - 5.0000000000000000e-01 -2 -3 2705 3.9185000000000000e+03 - - 2.2618722915649414e-01 -9.2116522789001465e-01 - -3.2166120409965515e-01 2.6295122504234314e-01 - <_> - 8.4028038024902344e+01 - - 1 2 2706 1.1500000000000000e+01 0 -1 2707 15. -2 -3 2708 - 4.5000000000000000e+00 - - 8.7838518619537354e-01 -8.4853267669677734e-01 - 3.6655527353286743e-01 -1.8356652557849884e-01 - <_> - 8.3846260070800781e+01 - - 1 2 2709 5.5000000000000000e+00 0 -1 2710 325. -2 -3 2711 - 9.5000000000000000e+00 - - -8.7982141971588135e-01 1. 3.4321373701095581e-01 - -1.8177768588066101e-01 - <_> - 8.4174667358398438e+01 - - 1 2 2712 9.5000000000000000e+00 0 -1 2713 - 1.9050000000000000e+02 -2 -3 2714 4.5000000000000000e+00 - - 6.9107550382614136e-01 -7.7517443895339966e-01 - 5.7090425491333008e-01 -1.1606752872467041e-01 - <_> - 8.4324356079101562e+01 - - 1 2 2715 2.7500000000000000e+01 0 -1 2716 - 4.0885000000000000e+03 -2 -3 2717 8.5000000000000000e+00 - - 8.7019419670104980e-01 -8.7088418006896973e-01 - 2.1278975903987885e-01 -4.6584972739219666e-01 - <_> - 8.4102806091308594e+01 - - 1 2 2718 2.1250000000000000e+02 0 -1 2719 - 5.6500000000000000e+01 -2 -3 2720 5.0000000000000000e-01 - - 2.1476839482784271e-01 -4.4505792856216431e-01 1. - -7.7488011121749878e-01 - <_> - 8.4038200378417969e+01 - - 1 2 2721 9.4500000000000000e+01 0 -1 2722 - 1.5000000000000000e+00 -2 -3 2723 98. - - 1.9173437356948853e-01 -5.0092142820358276e-01 - -4.4755691289901733e-01 4.7253641486167908e-01 - <_> - 8.4137344360351562e+01 - - 1 2 2724 1.1515000000000000e+03 0 -1 2725 - 2.0050000000000000e+02 -2 -3 2726 4.8500000000000000e+01 - - -8.2353651523590088e-02 5.8139425516128540e-01 - 3.6044213920831680e-02 -6.4356809854507446e-01 - <_> - 8.4309326171875000e+01 - - 1 2 2727 1.0500000000000000e+01 0 -1 2728 2663. -2 -3 2729 - 2.4250000000000000e+02 - - 4.7916080802679062e-02 -5.9066039323806763e-01 - 7.3575264215469360e-01 -8.9028924703598022e-01 - <_> - 8.4420402526855469e+01 - - 1 2 2730 5.4665000000000000e+03 0 -1 2731 - 1.5000000000000000e+00 -2 -3 2732 4.6500000000000000e+01 - - 2.7950283885002136e-01 -2.4711169302463531e-01 - -9.4440460205078125e-01 1. - <_> - 8.4394798278808594e+01 - - 1 2 2733 1.1050000000000000e+02 0 -1 2734 63. -2 -3 2735 - 6.4650000000000000e+02 - - 4.1327634453773499e-01 -8.2762449979782104e-01 - -2.5601835921406746e-02 7.5820297002792358e-01 - <_> - 8.4607276916503906e+01 - - 1 2 2736 2.5000000000000000e+00 0 -1 2737 - 2.5500000000000000e+01 -2 -3 2738 1.0500000000000000e+01 - - -3.7000726908445358e-02 6.8266022205352783e-01 - 1.4960629865527153e-02 -6.4148795604705811e-01 - <_> - 8.5164596557617188e+01 - - 1 2 2739 5.3500000000000000e+01 0 -1 2740 - 2.9500000000000000e+01 -2 -3 2741 1.0850000000000000e+02 - - -1.2329825013875961e-01 5.5731654167175293e-01 - -8.3035022020339966e-01 7.4285131692886353e-01 - <_> - 8.5318458557128906e+01 - - 1 2 2742 6.0500000000000000e+01 0 -1 2743 - 5.5750000000000000e+02 -2 -3 2744 2.4455000000000000e+03 - - -9.1876357793807983e-01 1.5386807918548584e-01 1. - -8.4595882892608643e-01 - <_> - 8.5138092041015625e+01 - - 1 2 2745 1.4500000000000000e+01 0 -1 2746 133. -2 -3 2747 - 1.5000000000000000e+00 - - 9.3546825647354126e-01 -7.7808952331542969e-01 - 4.2497289180755615e-01 -1.8036651611328125e-01 - <_> - 8.5170181274414062e+01 - - 1 2 2748 2.6500000000000000e+01 0 -1 2749 - 1.6500000000000000e+01 -2 -3 2750 3.0550000000000000e+02 - - 9.9500669166445732e-03 -6.0836273431777954e-01 - 5.2151191234588623e-01 -3.4265536069869995e-01 - <_> - 8.5376792907714844e+01 - - 1 2 2751 3.5000000000000000e+00 0 -1 2752 - 1.6500000000000000e+01 -2 -3 2753 4.2500000000000000e+01 - - 4.3600571155548096e-01 -8.0105257034301758e-01 - -5.1988095045089722e-01 2.0660850405693054e-01 - <_> - 8.5609893798828125e+01 - - 1 2 2754 1.0500000000000000e+01 0 -1 2755 - 1.5000000000000000e+00 -2 -3 2756 2.5000000000000000e+00 - - -6.2382709980010986e-01 4.6645849943161011e-01 - 3.5961329936981201e-02 -5.3663784265518188e-01 - <_> - 8.5939903259277344e+01 - - 1 2 2757 9.5500000000000000e+01 0 -1 2758 11828. -2 -3 2759 - 3.8450000000000000e+02 - - -7.1205846965312958e-02 -9.5047873258590698e-01 - 3.3001002669334412e-01 -5.8486175537109375e-01 - <_> - 8.5633140563964844e+01 - - 1 2 2760 1.5000000000000000e+00 0 -1 2761 - 7.5000000000000000e+00 -2 -3 2762 1.5605000000000000e+03 - - -1.8193472921848297e-01 5.5474883317947388e-01 - 6.6240763664245605e-01 -3.6709865927696228e-01 - <_> - 8.5665580749511719e+01 - - 1 2 2763 5.0000000000000000e-01 0 -1 2764 - 3.5000000000000000e+00 -2 -3 2765 1.6500000000000000e+01 - - -6.3473922014236450e-01 4.5258450508117676e-01 - -6.2842214107513428e-01 3.2442636787891388e-02 - <_> - 8.5813781738281250e+01 - - 1 2 2766 1.8050000000000000e+02 0 -1 2767 - 1.5000000000000000e+00 -2 -3 2768 6.5000000000000000e+00 - - -8.1317859888076782e-01 1.4819937944412231e-01 - 7.9641395807266235e-01 -9.0252667665481567e-01 - <_> - 8.6130287170410156e+01 - - 1 2 2769 2.5000000000000000e+00 0 -1 2770 - 1.5000000000000000e+00 -2 -3 2771 1.0850000000000000e+02 - - -8.2908695936203003e-01 6.0830992460250854e-01 - -3.5930514335632324e-01 2.5600242614746094e-01 - <_> - 8.5960426330566406e+01 - - 1 2 2772 3.5000000000000000e+00 0 -1 2773 - 2.5000000000000000e+00 -2 -3 2774 3.5000000000000000e+00 - - 4.0980219841003418e-01 -8.7654078006744385e-01 - 3.7149679660797119e-01 -1.6985960304737091e-01 - <_> - 8.5911773681640625e+01 - - 1 2 2775 2.0750000000000000e+02 0 -1 2776 - 2.5000000000000000e+00 -2 -3 2777 4.0550000000000000e+02 - - 6.4895875751972198e-02 -5.2602392435073853e-01 - 8.3245736360549927e-01 -4.8650942742824554e-02 - <_> - 8.6134010314941406e+01 - - 1 2 2778 6.2500000000000000e+01 0 -1 2779 - 3.6650000000000000e+02 -2 -3 2780 4.5500000000000000e+01 - - -7.8410977125167847e-01 2.2223210334777832e-01 - -8.4461647272109985e-01 7.4402904510498047e-01 - <_> - 8.6428909301757812e+01 - - 1 2 2781 2.5000000000000000e+00 0 -1 2782 - 6.5000000000000000e+00 -2 -3 2783 4.1750000000000000e+02 - - 5.1555430889129639e-01 -1.5588639676570892e-01 - 1.7773015797138214e-01 -5.0610744953155518e-01 - <_> - 8.6826782226562500e+01 - - 1 2 2784 1.5505000000000000e+03 0 -1 2785 - 5.0000000000000000e-01 -2 -3 2786 1.4500000000000000e+01 - - 3.5983416438102722e-01 -5.7004302740097046e-01 - -5.4764652252197266e-01 3.9787346124649048e-01 - <_> - 8.7037475585937500e+01 - - 1 2 2787 5.0000000000000000e-01 0 -1 2788 - 8.5000000000000000e+00 -2 -3 2789 5.0000000000000000e-01 - - -7.9977160692214966e-01 3.6234867572784424e-01 - 2.8641289472579956e-01 -4.9720412492752075e-01 - <_> - 8.6423477172851562e+01 - - 1 2 2790 1.4500000000000000e+01 0 -1 2791 47. -2 -3 2792 - 3.2500000000000000e+01 - - 4.9334439635276794e-01 -7.6565510034561157e-01 - 2.7979478240013123e-01 -3.8790243864059448e-01 - <_> - 8.6541648864746094e+01 - - 1 2 2793 3.8500000000000000e+01 0 -1 2794 - 1.5000000000000000e+00 -2 -3 2795 2.0850000000000000e+02 - - 1.1817480623722076e-01 -4.9608191847801208e-01 - 4.3412643671035767e-01 -8.0814820528030396e-01 - <_> - 8.6554786682128906e+01 - - 1 2 2796 5.0000000000000000e-01 0 -1 2797 - 5.0000000000000000e-01 -2 -3 2798 1.5500000000000000e+01 - - -7.7674239873886108e-01 4.3930459022521973e-01 - 1.3139089569449425e-02 -6.7160016298294067e-01 - <_> - 8.6836524963378906e+01 - - 1 2 2799 2.1500000000000000e+01 0 -1 2800 - 3.2750000000000000e+02 -2 -3 2801 1.2500000000000000e+01 - - -3.1266799569129944e-01 6.9435644149780273e-01 - -5.9980082511901855e-01 6.5070140361785889e-01 - <_> - 8.6815773010253906e+01 - - 1 2 2802 9.8850000000000000e+02 0 -1 2803 - 4.5000000000000000e+00 -2 -3 2804 3.1500000000000000e+01 - - 7.5975960493087769e-01 -1.4526490122079849e-02 - -4.3337148427963257e-01 3.4662330150604248e-01 - <_> - 8.6753486633300781e+01 - - 1 2 2805 5.8750000000000000e+02 0 -1 2806 - 4.0050000000000000e+02 -2 -3 2807 5.8550000000000000e+02 - - -5.1701253652572632e-01 8.5829895734786987e-01 - 6.8487954139709473e-01 -6.2283929437398911e-02 - <_> - 8.7153579711914062e+01 - - 1 2 2808 5.0000000000000000e-01 0 -1 2809 - 2.5000000000000000e+00 -2 -3 2810 9.3050000000000000e+02 - - -7.2558873891830444e-01 4.3454471230506897e-01 - -8.1130824983119965e-02 -8.3618861436843872e-01 - <_> - 8.7351936340332031e+01 - - 1 2 2811 3.5000000000000000e+00 0 -1 2812 - 7.5000000000000000e+00 -2 -3 2813 1.5000000000000000e+00 - - -9.6148520708084106e-01 4.0121293067932129e-01 - 1.6389970481395721e-01 -5.4697543382644653e-01 - <_> - 8.7288108825683594e+01 - - 1 2 2814 9.8500000000000000e+01 0 -1 2815 - 1.5000000000000000e+00 -2 -3 2816 5.0000000000000000e-01 - - 3.0000725388526917e-01 -5.5716449022293091e-01 - 6.8792611360549927e-01 -6.3822388648986816e-02 - <_> - 8.7567855834960938e+01 - - 1 2 2817 1.2500000000000000e+01 0 -1 2818 - 5.5000000000000000e+00 -2 -3 2819 3.2500000000000000e+01 - - -6.0839080810546875e-01 2.7974289655685425e-01 - -9.0464597940444946e-01 -9.1534465551376343e-02 - <_> - 8.7742805480957031e+01 - - 1 2 2820 2.9050000000000000e+02 0 -1 2821 - 4.0350000000000000e+02 -2 -3 2822 1.5000000000000000e+00 - - -1.1221635341644287e-01 6.0925048589706421e-01 - 3.3704385161399841e-01 -5.3282082080841064e-01 - <_> - 8.7797904968261719e+01 - - 1 2 2823 1.4500000000000000e+01 0 -1 2824 1690. -2 -3 2825 - 7.4500000000000000e+01 - - 5.5097710341215134e-02 -8.7218642234802246e-01 - -7.2020220756530762e-01 3.5318741202354431e-01 - <_> - 8.8284759521484375e+01 - - 1 2 2826 2.2450000000000000e+02 0 -1 2827 - 1.9500000000000000e+01 -2 -3 2828 1.9535000000000000e+03 - - -1.3064707815647125e-01 4.8685196042060852e-01 - -8.4640699625015259e-01 1.8381766974925995e-01 - <_> - 8.8222618103027344e+01 - - 1 2 2829 5.0000000000000000e-01 0 -1 2830 - 1.2500000000000000e+01 -2 -3 2831 4.5000000000000000e+00 - - -5.3857803344726562e-01 5.4414546489715576e-01 - 1.8226167559623718e-01 -5.0997644662857056e-01 - <_> - 8.8490211486816406e+01 - - 1 2 2832 8.5000000000000000e+00 0 -1 2833 1990. -2 -3 2834 - 3.5000000000000000e+00 - - -3.3869510889053345e-01 8.5612648725509644e-01 - 6.6255128383636475e-01 -1.8713159859180450e-01 - <_> - 8.8309280395507812e+01 - - 1 2 2835 5.0000000000000000e-01 0 -1 2836 - 1.5350000000000000e+02 -2 -3 2837 3.0500000000000000e+01 - - 3.7325781583786011e-01 -9.1693335771560669e-01 - -3.7281343340873718e-01 4.3598929047584534e-01 - <_> - 8.8545036315917969e+01 - - 1 2 2838 2.5000000000000000e+00 0 -1 2839 - 3.5000000000000000e+00 -2 -3 2840 9.5000000000000000e+00 - - -8.1305176019668579e-01 2.3575115203857422e-01 - 8.2359343767166138e-01 -5.0804460048675537e-01 - <_> - 8.8620689392089844e+01 - - 1 2 2841 4.7950000000000000e+02 0 -1 2842 - 7.4550000000000000e+02 -2 -3 2843 3.5000000000000000e+00 - - -1. 5.5236303806304932e-01 -4.9426826834678650e-01 - 7.5652711093425751e-02 - <_> - 8.8498481750488281e+01 - - 1 2 2844 5.0000000000000000e-01 0 -1 2845 - 5.0000000000000000e-01 -2 -3 2846 9.6500000000000000e+01 - - -8.3736324310302734e-01 3.9632564783096313e-01 - -7.2766882181167603e-01 4.8122378066182137e-03 - <_> - 8.8912002563476562e+01 - - 1 2 2847 3.5000000000000000e+00 0 -1 2848 - 5.0000000000000000e-01 -2 -3 2849 1.5000000000000000e+00 - - 7.1133011579513550e-01 -1.0473229736089706e-01 - 3.0710890889167786e-01 -4.0350064635276794e-01 - <_> - 8.9316238403320312e+01 - - 1 2 2850 1.6500000000000000e+01 0 -1 2851 - 1.5000000000000000e+00 -2 -3 2852 7.5000000000000000e+00 - - 8.4607600001618266e-04 -7.6641041040420532e-01 - -3.1311124563217163e-01 4.4425663352012634e-01 - <_> - 8.9348419189453125e+01 - - 1 2 2853 1.1500000000000000e+01 0 -1 2854 - 1.7500000000000000e+01 -2 -3 2855 2.0500000000000000e+01 - - -9.8593395948410034e-01 1. 2.4410592019557953e-01 - -3.1496018171310425e-01 - <_> - 8.9189270019531250e+01 - - 1 2 2856 1.6500000000000000e+01 0 -1 2857 - 6.5000000000000000e+00 -2 -3 2858 74. - - 8.4461316466331482e-02 -4.1109508275985718e-01 - 9.0820807218551636e-01 -3.5371799021959305e-02 - <_> - 8.9124603271484375e+01 - - 1 2 2859 5.8750000000000000e+02 0 -1 2860 9863. -2 -3 2861 - 1.2500000000000000e+01 - - -6.3491946458816528e-01 4.8731520771980286e-01 - -5.2020323276519775e-01 3.2958313822746277e-01 - <_> - 8.9286071777343750e+01 - - 1 2 2862 9.7500000000000000e+01 0 -1 2863 - 2.1950000000000000e+02 -2 -3 2864 5.0000000000000000e-01 - - 4.2516252398490906e-01 -1. 2.8237330913543701e-01 - -5.0328004360198975e-01 - <_> - 8.9424316406250000e+01 - - 1 2 2865 5.2500000000000000e+01 0 -1 2866 61. -2 -3 2867 - 1.7500000000000000e+01 - - 5.0655448436737061e-01 -5.1969325542449951e-01 - 3.5390514135360718e-01 -4.7365185618400574e-01 - <_> - 8.9726875305175781e+01 - - 1 2 2868 5.8500000000000000e+01 0 -1 2869 - 1.4500000000000000e+01 -2 -3 2870 42. - - 3.0255803465843201e-01 -2.0427562296390533e-01 - -8.5021793842315674e-01 7.0594644546508789e-01 - <_> - 8.9578895568847656e+01 - - 1 2 2871 1.0500000000000000e+01 0 -1 2872 - 1.1950000000000000e+02 -2 -3 2873 24. - - -2.4734574556350708e-01 3.1361401081085205e-01 - 8.7930864095687866e-01 -1. - <_> - 8.9768898010253906e+01 - - 1 2 2874 7.5000000000000000e+00 0 -1 2875 - 7.4500000000000000e+01 -2 -3 2876 2.8500000000000000e+01 - - 3.1221041083335876e-01 -7.0097410678863525e-01 - 2.4191275238990784e-01 -5.3588688373565674e-01 - <_> - 8.9684265136718750e+01 - - 1 2 2877 3.5000000000000000e+00 0 -1 2878 - 2.7950000000000000e+02 -2 -3 2879 4.1500000000000000e+01 - - 1.2314370274543762e-01 -6.7686629295349121e-01 - -3.6168605089187622e-01 3.5209780931472778e-01 - <_> - 8.9795585632324219e+01 - - 1 2 2880 2.1050000000000000e+02 0 -1 2881 - 3.5000000000000000e+00 -2 -3 2882 1.0500000000000000e+01 - - 5.2586346864700317e-01 -3.2540410757064819e-01 - -8.8829517364501953e-01 4.9435129761695862e-01 - <_> - 8.9792076110839844e+01 - - 1 2 2883 2.5000000000000000e+00 0 -1 2884 - 2.9500000000000000e+01 -2 -3 2885 3.9250000000000000e+02 - - -6.1523008346557617e-01 3.7085807323455811e-01 - 9.0023398399353027e-02 -6.0440886020660400e-01 - <_> - 8.9958946228027344e+01 - - 1 2 2886 1.0500000000000000e+01 0 -1 2887 - 1.2500000000000000e+01 -2 -3 2888 1.8500000000000000e+01 - - -5.9052956104278564e-01 2.1934990584850311e-01 - -5.8395588397979736e-01 5.4426544904708862e-01 - <_> - 8.9670410156250000e+01 - - 1 2 2889 1.5000000000000000e+00 0 -1 2890 - 2.5000000000000000e+00 -2 -3 2891 8.5000000000000000e+00 - - -8.5811334848403931e-01 5.2128863334655762e-01 - -3.4101697802543640e-01 2.6454553008079529e-01 - <_> - 8.9847396850585938e+01 - - 1 2 2892 1.4500000000000000e+01 0 -1 2893 - 1.1500000000000000e+01 -2 -3 2894 6.6500000000000000e+01 - - -3.8977336883544922e-01 4.3855726718902588e-01 - -5.0296223163604736e-01 1.7698343098163605e-01 - <_> - 9.0157752990722656e+01 - - 1 2 2895 5.0000000000000000e-01 0 -1 2896 - 8.5000000000000000e+00 -2 -3 2897 4.5000000000000000e+00 - - -4.1999164223670959e-01 3.1035554409027100e-01 - 2.2039012610912323e-01 -5.3406608104705811e-01 - <_> - 9.0098411560058594e+01 - - 1 2 2898 5.0000000000000000e-01 0 -1 2899 - 2.1750000000000000e+02 -2 -3 2900 1.9500000000000000e+01 - - -5.9334795922040939e-02 6.7584723234176636e-01 - -5.2655130624771118e-01 2.6948010921478271e-01 - <_> - 9.0537551879882812e+01 - - 1 2 2901 5.0000000000000000e-01 0 -1 2902 - 7.5000000000000000e+00 -2 -3 2903 2.2500000000000000e+01 - - -6.9564437866210938e-01 4.3913722038269043e-01 - -3.6194628477096558e-01 3.8801836967468262e-01 - <_> - 9.0335647583007812e+01 - - 1 2 2904 1.5000000000000000e+00 0 -1 2905 - 5.4550000000000000e+02 -2 -3 2906 2.5000000000000000e+00 - - 1. -9.8192542791366577e-01 3.3667489886283875e-01 - -2.0190110802650452e-01 - <_> - 9.0692535400390625e+01 - - 1 2 2907 1.5000000000000000e+00 0 -1 2908 - 8.5000000000000000e+00 -2 -3 2909 344. - - -4.5181885361671448e-01 3.5688367486000061e-01 - -5.9278815984725952e-01 6.4385175704956055e-02 - <_> - 9.0584419250488281e+01 - - 1 2 2910 4.6500000000000000e+01 0 -1 2911 - 2.5000000000000000e+00 -2 -3 2912 6.5000000000000000e+00 - - 4.3527498841285706e-01 -1.0811836272478104e-01 - -6.3831877708435059e-01 1. - <_> - 9.0788459777832031e+01 - - 1 2 2913 294. 0 -1 2914 14. -2 -3 2915 - 4.4500000000000000e+01 - - -8.4630513191223145e-01 1. 2.0404133200645447e-01 - -4.8527365922927856e-01 - <_> - 9.0862548828125000e+01 - - 1 2 2916 3.3500000000000000e+01 0 -1 2917 52. -2 -3 2918 - 5.2705000000000000e+03 - - 7.2816586494445801e-01 -5.4465806484222412e-01 - -1.1197114735841751e-01 5.4565620422363281e-01 - <_> - 9.0902687072753906e+01 - - 1 2 2919 4.1050000000000000e+02 0 -1 2920 139. -2 -3 2921 - 1.5000000000000000e+00 - - -9.1185075044631958e-01 6.4714074134826660e-01 - 1.9417783617973328e-01 -3.6837339401245117e-01 - <_> - 9.0985298156738281e+01 - - 1 2 2922 5.7650000000000000e+02 0 -1 2923 - 2.9450000000000000e+02 -2 -3 2924 3.9150000000000000e+02 - - -8.4534245729446411e-01 1. 4.4867873191833496e-01 - -1.7172452807426453e-01 - <_> - 9.1107513427734375e+01 - - 1 2 2925 3.5000000000000000e+00 0 -1 2926 - 1.5500000000000000e+01 -2 -3 2927 4.2500000000000000e+01 - - -8.3989793062210083e-01 8.9864379167556763e-01 - 2.8704452514648438e-01 -2.8833448886871338e-01 - <_> - 9.1266738891601562e+01 - - 1 2 2928 4.9775000000000000e+03 0 -1 2929 - 4.5000000000000000e+00 -2 -3 2930 1.9865000000000000e+03 - - -7.4095195531845093e-01 1.5922544896602631e-01 - -9.0941101312637329e-01 1.8585844337940216e-01 - <_> - 9.1225799560546875e+01 - - 1 2 2931 5.0000000000000000e-01 0 -1 2932 - 4.5000000000000000e+00 -2 -3 2933 1.4500000000000000e+01 - - -7.6407551765441895e-01 5.0083768367767334e-01 - -7.2587943077087402e-01 -5.0088282674551010e-02 - <_> - 9.0573638916015625e+01 - - 1 2 2934 8.5000000000000000e+00 0 -1 2935 - 2.7500000000000000e+01 -2 -3 2936 9.5000000000000000e+00 - - -7.4017934501171112e-02 5.9898555278778076e-01 - 1.7782434821128845e-01 -6.5216350555419922e-01 - <_> - 9.0737045288085938e+01 - - 1 2 2937 5.0000000000000000e-01 0 -1 2938 - 1.0450000000000000e+02 -2 -3 2939 1.6950000000000000e+02 - - 6.0130667686462402e-01 -9.1431754827499390e-01 - -4.1352280974388123e-01 1.6340811550617218e-01 - <_> - 9.1356544494628906e+01 - - 1 2 2940 1.5000000000000000e+00 0 -1 2941 - 7.5000000000000000e+00 -2 -3 2942 1.6805000000000000e+03 - - -2.0215752720832825e-01 6.1950212717056274e-01 - -5.5768364667892456e-01 3.5280909389257431e-02 - <_> - 9.0944335937500000e+01 - - 1 2 2943 1.1155000000000000e+03 0 -1 2944 - 1.3500000000000000e+01 -2 -3 2945 4.1950000000000000e+02 - - 6.8771177530288696e-01 -9.7811706364154816e-02 - -4.1221308708190918e-01 1.9626976549625397e-01 - <_> - 9.1227783203125000e+01 - - 1 2 2946 1.7535000000000000e+03 0 -1 2947 - 6.5000000000000000e+00 -2 -3 2948 8.3500000000000000e+01 - - 2.8345218300819397e-01 -2.8811171650886536e-01 - -9.1736477613449097e-01 1. - <_> - 9.1561256408691406e+01 - - 1 2 2949 3.9500000000000000e+01 0 -1 2950 169. -2 -3 2951 - 3.5000000000000000e+00 - - -7.5076478719711304e-01 8.8347315788269043e-01 - 3.4602180123329163e-01 -2.1803687512874603e-01 - <_> - 9.0775177001953125e+01 - - 1 2 2952 1.2550000000000000e+02 0 -1 2953 - 8.5000000000000000e+00 -2 -3 2954 156. - - -3.8729524612426758e-01 2.9583999514579773e-01 - -7.9863160848617554e-01 3.9145687222480774e-01 - <_> - 9.1042625427246094e+01 - - 1 2 2955 2.5000000000000000e+00 0 -1 2956 - 2.5750000000000000e+02 -2 -3 2957 4685. - - 2.6745319366455078e-01 -6.6209262609481812e-01 - -7.7674686908721924e-01 7.1668751537799835e-02 - <_> - 9.1575469970703125e+01 - - 1 2 2958 1.0500000000000000e+01 0 -1 2959 - 1.0550000000000000e+02 -2 -3 2960 4.5500000000000000e+01 - - 5.3284192085266113e-01 -3.2092022895812988e-01 - -9.5425200462341309e-01 5.0468903779983521e-01 - <_> - 9.1930732727050781e+01 - - 1 2 2961 1.2500000000000000e+01 0 -1 2962 - 1.8950000000000000e+02 -2 -3 2963 2.5000000000000000e+00 - - -2.8867003321647644e-01 3.5526236891746521e-01 - 2.9676264524459839e-01 -6.0322642326354980e-01 - <_> - 9.2231742858886719e+01 - - 1 2 2964 7.5000000000000000e+00 0 -1 2965 - 1.9500000000000000e+01 -2 -3 2966 4.1500000000000000e+01 - - -7.3552119731903076e-01 3.0101212859153748e-01 - -5.0962239503860474e-01 5.0894033908843994e-01 - <_> - 9.2388069152832031e+01 - - 1 2 2967 1.1500000000000000e+01 0 -1 2968 - 1.5000000000000000e+00 -2 -3 2969 2.6500000000000000e+01 - - 1.5632244944572449e-01 -4.4891685247421265e-01 - 6.4296531677246094e-01 -5.9720402956008911e-01 - <_> - 9.2552001953125000e+01 - - 1 2 2970 1.0675000000000000e+03 0 -1 2971 - 4.3756500000000000e+04 -2 -3 2972 4.9450000000000000e+02 - - -1. 8.0944263935089111e-01 -3.8900658488273621e-01 - 1.6393135488033295e-01 - <_> - 9.2899009704589844e+01 - - 1 2 2973 2.5000000000000000e+00 0 -1 2974 - 1.4055000000000000e+03 -2 -3 2975 1.8500000000000000e+01 - - 1.6320782899856567e-01 -5.9554386138916016e-01 - -7.9579621553421021e-01 3.4700983762741089e-01 - <_> - 9.2847854614257812e+01 - - 1 2 2976 8.5500000000000000e+01 0 -1 2977 - 1.2550000000000000e+02 -2 -3 2978 5.5000000000000000e+00 - - -1. 9.6116375923156738e-01 2.2865201532840729e-01 - -2.7930772304534912e-01 - <_> - 9.2859100341796875e+01 - - 1 2 2979 1.1350000000000000e+02 0 -1 2980 - 2.0500000000000000e+01 -2 -3 2981 1.6150000000000000e+02 - - 1.7545458674430847e-01 -7.0411294698715210e-01 - 3.2774302363395691e-01 -6.4024138450622559e-01 - <_> - 9.2426673889160156e+01 - - 1 2 2982 2.5000000000000000e+00 0 -1 2983 - 2.7500000000000000e+01 -2 -3 2984 1.0350000000000000e+02 - - 6.4859634637832642e-01 -6.6807705163955688e-01 - 2.5129410624504089e-01 -4.3242052197456360e-01 - <_> - 9.2854904174804688e+01 - - 1 2 2985 3.0050000000000000e+02 0 -1 2986 333. -2 -3 2987 - 3.2045000000000000e+03 - - -3.9532727003097534e-01 8.3435887098312378e-01 - 4.2823007702827454e-01 -3.9525333046913147e-01 - <_> - 9.3196861267089844e+01 - - 1 2 2988 2.5000000000000000e+00 0 -1 2989 - 6.5000000000000000e+00 -2 -3 2990 4.8895000000000000e+03 - - -8.9721941947937012e-01 3.4195712208747864e-01 - 6.4947992563247681e-01 -4.5169207453727722e-01 - <_> - 9.3306480407714844e+01 - - 1 2 2991 2.7500000000000000e+01 0 -1 2992 - 1.5000000000000000e+00 -2 -3 2993 4.5000000000000000e+00 - - 1.0962056368589401e-01 -4.2897370457649231e-01 - 9.1374301910400391e-01 -6.3376551866531372e-01 - <_> - 9.3460906982421875e+01 - - 1 2 2994 1.0500000000000000e+01 0 -1 2995 - 3.5000000000000000e+00 -2 -3 2996 3.5000000000000000e+00 - - 2.2791311144828796e-01 -5.2986472845077515e-01 - 4.5877307653427124e-01 -1.7966294288635254e-01 - <_> - 9.3358589172363281e+01 - - 1 2 2997 3.4500000000000000e+01 0 -1 2998 222. -2 -3 2999 - 2.0750000000000000e+02 - - 7.5331348180770874e-01 -9.4210654497146606e-01 - -1.0231721401214600e-01 4.7118717432022095e-01 - <_> - 9.3666183471679688e+01 - - 1 2 3000 2.2500000000000000e+01 0 -1 3001 - 1.8450000000000000e+02 -2 -3 3002 2.5000000000000000e+00 - - -3.5824659466743469e-01 3.0759900808334351e-01 - 6.4143782854080200e-01 -6.5782296657562256e-01 - <_> - 9.3088340759277344e+01 - - 1 2 3003 1.3350000000000000e+02 0 -1 3004 830. -2 -3 3005 - 2.4500000000000000e+01 - - -6.9563269615173340e-01 6.3497310876846313e-01 - -5.7784938812255859e-01 6.1700064688920975e-02 - <_> - 9.2995674133300781e+01 - - 1 2 3006 4.5500000000000000e+01 0 -1 3007 - 1.5000000000000000e+00 -2 -3 3008 6.6500000000000000e+01 - - 4.5369678735733032e-01 -9.2660412192344666e-02 - -7.4712693691253662e-01 6.0710644721984863e-01 - <_> - 9.2739532470703125e+01 - - 1 2 3009 1.2950000000000000e+02 0 -1 3010 1144. -2 -3 3011 - 4.2850000000000000e+02 - - -7.0763772726058960e-01 9.4605678319931030e-01 - -2.5614449381828308e-01 4.1044127941131592e-01 - <_> - 9.2615875244140625e+01 - - 1 2 3012 2.3500000000000000e+01 0 -1 3013 36. -2 -3 3014 - 5.0000000000000000e-01 - - 8.3025622367858887e-01 -8.2933390140533447e-01 - 4.6695771813392639e-01 -1.2365625053644180e-01 - <_> - 9.3196029663085938e+01 - - 1 2 3015 2.0450000000000000e+02 0 -1 3016 - 1.0500000000000000e+01 -2 -3 3017 524. - - -1.5761210024356842e-01 5.8015257120132446e-01 - -8.8289064168930054e-01 2.2438578307628632e-01 - <_> - 9.3732429504394531e+01 - - 1 2 3018 3.3500000000000000e+01 0 -1 3019 - 1.8500000000000000e+01 -2 -3 3020 6.6500000000000000e+01 - - 4.8793593049049377e-01 -5.8576709032058716e-01 - 5.3640323877334595e-01 -8.2473360002040863e-02 - <_> - 9.3099838256835938e+01 - - 1 2 3021 1.3500000000000000e+01 0 -1 3022 - 5.0000000000000000e-01 -2 -3 3023 1.4500000000000000e+01 - - 3.0108803510665894e-01 -6.3259094953536987e-01 - -7.1200174093246460e-01 2.7906426787376404e-01 - <_> - 9.3105216979980469e+01 - - 1 2 3024 3.9050000000000000e+02 0 -1 3025 1243. -2 -3 3026 - 4.2050000000000000e+02 - - -8.8503718376159668e-01 9.7225552797317505e-01 - 5.3784158080816269e-03 -7.7111572027206421e-01 - <_> - 9.3588562011718750e+01 - - 1 2 3027 1.2850000000000000e+02 0 -1 3028 - 9.5000000000000000e+00 -2 -3 3029 3.5000000000000000e+00 - - 3.3606645464897156e-01 -5.4860621690750122e-01 - 4.8334029316902161e-01 -1.3527640700340271e-01 - <_> - 9.3835968017578125e+01 - - 1 2 3030 4.5000000000000000e+00 0 -1 3031 - 4.5000000000000000e+00 -2 -3 3032 1.3415000000000000e+03 - - -7.8450918197631836e-01 1.6970160603523254e-01 - -5.8498537540435791e-01 2.4740667641162872e-01 - <_> - 9.4142906188964844e+01 - - 1 2 3033 4.3500000000000000e+01 0 -1 3034 - 4.5000000000000000e+00 -2 -3 3035 3.2500000000000000e+01 - - 3.0693769454956055e-01 -2.6115962862968445e-01 - -8.9926475286483765e-01 7.7170163393020630e-01 - <_> - 9.4121742248535156e+01 - - 1 2 3036 3.3500000000000000e+01 0 -1 3037 5772. -2 -3 3038 - 8.2650000000000000e+02 - - 6.0314506292343140e-01 -8.1919574737548828e-01 - -2.1161338314414024e-02 7.4580943584442139e-01 - <_> - 9.3867355346679688e+01 - - 1 2 3039 1.5000000000000000e+00 0 -1 3040 - 2.5000000000000000e+00 -2 -3 3041 7.6500000000000000e+01 - - -1. 6.5151697397232056e-01 -2.5439009070396423e-01 - 4.9923765659332275e-01 - <_> - 9.4093467712402344e+01 - - 1 2 3042 7584. 0 -1 3043 5.1250000000000000e+02 -2 -3 3044 - 1.1500000000000000e+01 - - -4.7158271074295044e-01 2.2611454129219055e-01 - -8.3964759111404419e-01 4.5222747325897217e-01 - <_> - 9.4337669372558594e+01 - - 1 2 3045 1.5625000000000000e+03 0 -1 3046 - 1.0615000000000000e+03 -2 -3 3047 2.5000000000000000e+00 - - -1. 9.3781590461730957e-01 2.4420407414436340e-01 - -2.9586532711982727e-01 - <_> - 9.4508171081542969e+01 - - 1 2 3048 1.3500000000000000e+01 0 -1 3049 23. -2 -3 3050 - 1.5245000000000000e+03 - - -8.5904693603515625e-01 1.7050011456012726e-01 - 9.2488127946853638e-01 -9.8964858055114746e-01 - <_> - 9.4239341735839844e+01 - - 1 2 3051 5.0000000000000000e-01 0 -1 3052 - 5.5000000000000000e+00 -2 -3 3053 1.8500000000000000e+01 - - -8.7914295494556427e-02 5.4742050170898438e-01 - -4.5447856187820435e-01 4.4385817646980286e-01 - <_> - 9.4594245910644531e+01 - - 1 2 3054 1.5000000000000000e+00 0 -1 3055 - 1.5500000000000000e+01 -2 -3 3056 1.1500000000000000e+01 - - 3.5490357875823975e-01 -4.3068945407867432e-01 - -6.6280466318130493e-01 3.0311322771012783e-03 - <_> - 9.4814491271972656e+01 - - 1 2 3057 3.5000000000000000e+00 0 -1 3058 - 5.0000000000000000e-01 -2 -3 3059 4.0550000000000000e+02 - - 7.0450115203857422e-01 -7.8278595209121704e-01 - 2.2024388611316681e-01 -4.0765863656997681e-01 - <_> - 9.4579345703125000e+01 - - 1 2 3060 1.5500000000000000e+01 0 -1 3061 - 1.5000000000000000e+00 -2 -3 3062 1934. - - 1.5189912915229797e-01 -4.7490403056144714e-01 - -2.3514933884143829e-01 6.0529416799545288e-01 - <_> - 9.4922325134277344e+01 - - 1 2 3063 5.0000000000000000e-01 0 -1 3064 - 3.0500000000000000e+01 -2 -3 3065 1.1500000000000000e+01 - - -3.8056674599647522e-01 5.7760846614837646e-01 - -4.7326391935348511e-01 1.4074583351612091e-01 - <_> - 9.5195831298828125e+01 - - 1 2 3066 2.7500000000000000e+01 0 -1 3067 - 1.5500000000000000e+01 -2 -3 3068 1.3500000000000000e+01 - - -3.2090973854064941e-01 2.7350622415542603e-01 - 1.3395747169852257e-02 -8.1775778532028198e-01 - <_> - 9.5786506652832031e+01 - - 1 2 3069 4.5000000000000000e+00 0 -1 3070 - 4.3500000000000000e+01 -2 -3 3071 1.0235000000000000e+03 - - -2.7497810125350952e-01 5.9067696332931519e-01 - -5.4431802034378052e-01 7.7079035341739655e-02 - - <_> - 8 - - 6 5 4 2 - <_> - 8 - - 7 5 2 3 - <_> - 2 - - 4 18 5 10 - <_> - 5 - - 4 28 11 3 - <_> - 0 - - 6 22 6 6 - <_> - 4 - - 6 19 4 5 - <_> - 1 - - 6 27 5 2 - <_> - 7 - - 7 5 2 1 - <_> - 4 - - 4 9 8 22 - <_> - 5 - - 8 4 5 9 - <_> - 2 - - 8 6 4 4 - <_> - 9 - - 7 19 2 1 - <_> - 8 - - 8 6 1 2 - <_> - 0 - - 6 18 5 7 - <_> - 9 - - 7 14 2 3 - <_> - 4 - - 0 18 12 13 - <_> - 1 - - 4 26 7 3 - <_> - 7 - - 0 28 13 3 - <_> - 1 - - 5 10 6 1 - <_> - 1 - - 1 3 10 7 - <_> - 4 - - 0 30 15 1 - <_> - 2 - - 4 12 3 16 - <_> - 0 - - 4 28 8 2 - <_> - 5 - - 3 28 11 3 - <_> - 4 - - 3 10 9 19 - <_> - 3 - - 1 3 7 10 - <_> - 7 - - 8 12 1 1 - <_> - 0 - - 7 10 2 4 - <_> - 0 - - 8 14 4 11 - <_> - 3 - - 0 11 2 20 - <_> - 1 - - 7 4 2 4 - <_> - 4 - - 7 3 2 2 - <_> - 4 - - 2 2 11 8 - <_> - 4 - - 6 18 1 4 - <_> - 1 - - 1 16 5 12 - <_> - 2 - - 7 21 3 7 - <_> - 2 - - 8 30 7 1 - <_> - 5 - - 6 26 7 2 - <_> - 7 - - 14 28 1 2 - <_> - 9 - - 7 12 2 1 - <_> - 9 - - 3 1 12 1 - <_> - 9 - - 7 19 3 3 - <_> - 7 - - 6 5 9 3 - <_> - 3 - - 3 28 2 2 - <_> - 9 - - 5 1 3 3 - <_> - 3 - - 5 8 1 18 - <_> - 7 - - 7 5 2 1 - <_> - 3 - - 0 1 12 25 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 7 1 - <_> - 1 - - 6 12 3 1 - <_> - 5 - - 10 9 2 15 - <_> - 3 - - 13 21 2 9 - <_> - 7 - - 4 29 8 2 - <_> - 1 - - 5 11 6 17 - <_> - 7 - - 12 24 1 6 - <_> - 8 - - 7 12 2 1 - <_> - 0 - - 8 9 4 2 - <_> - 5 - - 7 10 6 3 - <_> - 0 - - 1 4 9 4 - <_> - 4 - - 0 30 13 1 - <_> - 1 - - 2 27 7 3 - <_> - 3 - - 3 9 10 3 - <_> - 0 - - 2 28 13 1 - <_> - 0 - - 6 24 4 4 - <_> - 2 - - 6 16 4 1 - <_> - 4 - - 1 9 2 10 - <_> - 5 - - 5 29 5 1 - <_> - 9 - - 7 15 3 2 - <_> - 2 - - 5 18 6 10 - <_> - 7 - - 7 22 2 2 - <_> - 0 - - 13 21 2 1 - <_> - 4 - - 6 4 5 3 - <_> - 4 - - 0 9 15 17 - <_> - 3 - - 4 1 5 30 - <_> - 3 - - 6 15 3 1 - <_> - 5 - - 8 5 3 2 - <_> - 5 - - 0 0 15 1 - <_> - 1 - - 6 27 3 2 - <_> - 5 - - 1 29 2 2 - <_> - 7 - - 0 27 3 4 - <_> - 4 - - 9 13 6 18 - <_> - 1 - - 3 7 12 1 - <_> - 9 - - 5 23 8 1 - <_> - 7 - - 12 30 3 1 - <_> - 3 - - 12 27 2 1 - <_> - 7 - - 5 13 1 2 - <_> - 8 - - 7 6 1 2 - <_> - 3 - - 14 13 1 16 - <_> - 0 - - 5 5 8 2 - <_> - 9 - - 9 14 1 1 - <_> - 5 - - 9 13 3 12 - <_> - 5 - - 9 30 6 1 - <_> - 4 - - 4 27 8 1 - <_> - 7 - - 3 12 9 7 - <_> - 4 - - 9 7 1 24 - <_> - 2 - - 8 8 4 1 - <_> - 2 - - 8 19 2 10 - <_> - 3 - - 2 13 2 15 - <_> - 2 - - 0 28 15 1 - <_> - 2 - - 3 26 8 2 - <_> - 3 - - 4 28 7 1 - <_> - 3 - - 11 23 1 3 - <_> - 0 - - 9 15 4 16 - <_> - 1 - - 2 7 9 2 - <_> - 4 - - 6 22 3 3 - <_> - 3 - - 5 5 1 25 - <_> - 1 - - 2 20 12 1 - <_> - 1 - - 5 28 6 1 - <_> - 8 - - 1 30 13 1 - <_> - 4 - - 3 16 12 4 - <_> - 8 - - 6 5 4 2 - <_> - 8 - - 2 23 12 1 - <_> - 4 - - 1 29 9 2 - <_> - 4 - - 9 6 4 14 - <_> - 7 - - 0 4 3 16 - <_> - 1 - - 9 10 1 3 - <_> - 3 - - 1 0 13 1 - <_> - 5 - - 3 5 10 8 - <_> - 5 - - 7 7 2 7 - <_> - 5 - - 6 28 5 2 - <_> - 3 - - 2 24 7 4 - <_> - 4 - - 6 1 3 17 - <_> - 0 - - 1 21 1 5 - <_> - 0 - - 1 11 6 5 - <_> - 9 - - 0 30 15 1 - <_> - 8 - - 2 30 8 1 - <_> - 0 - - 7 19 3 7 - <_> - 4 - - 2 24 12 2 - <_> - 9 - - 1 13 1 3 - <_> - 7 - - 7 5 2 1 - <_> - 9 - - 6 10 2 3 - <_> - 8 - - 8 6 1 2 - <_> - 5 - - 6 17 2 3 - <_> - 1 - - 6 27 4 4 - <_> - 2 - - 5 18 5 10 - <_> - 2 - - 14 0 1 29 - <_> - 5 - - 2 20 3 9 - <_> - 1 - - 5 27 6 1 - <_> - 4 - - 7 30 2 1 - <_> - 4 - - 5 24 5 6 - <_> - 4 - - 3 9 12 2 - <_> - 5 - - 9 7 4 20 - <_> - 7 - - 10 10 3 1 - <_> - 3 - - 2 28 13 3 - <_> - 5 - - 14 22 1 7 - <_> - 0 - - 4 7 2 4 - <_> - 3 - - 8 15 2 4 - <_> - 0 - - 7 19 4 9 - <_> - 4 - - 7 11 1 8 - <_> - 4 - - 2 11 13 11 - <_> - 4 - - 6 4 4 6 - <_> - 8 - - 4 22 2 6 - <_> - 4 - - 7 19 2 2 - <_> - 9 - - 6 4 3 6 - <_> - 4 - - 2 29 8 1 - <_> - 3 - - 1 9 6 16 - <_> - 7 - - 8 3 3 2 - <_> - 5 - - 6 12 3 2 - <_> - 8 - - 6 6 2 2 - <_> - 7 - - 1 25 2 4 - <_> - 4 - - 6 1 3 17 - <_> - 1 - - 5 11 4 3 - <_> - 5 - - 9 9 5 4 - <_> - 9 - - 6 14 3 4 - <_> - 2 - - 4 9 4 1 - <_> - 5 - - 2 5 6 8 - <_> - 2 - - 6 10 3 1 - <_> - 1 - - 9 26 5 3 - <_> - 0 - - 1 30 8 1 - <_> - 1 - - 9 22 1 3 - <_> - 2 - - 5 6 7 18 - <_> - 2 - - 11 6 1 14 - <_> - 3 - - 1 4 2 21 - <_> - 8 - - 7 5 2 3 - <_> - 9 - - 13 17 2 1 - <_> - 8 - - 8 24 6 2 - <_> - 7 - - 4 5 5 5 - <_> - 2 - - 4 25 9 3 - <_> - 4 - - 0 29 12 1 - <_> - 5 - - 1 28 9 3 - <_> - 1 - - 6 20 4 3 - <_> - 0 - - 5 25 4 1 - <_> - 1 - - 9 9 2 1 - <_> - 1 - - 3 6 9 4 - <_> - 3 - - 5 8 1 18 - <_> - 5 - - 0 19 2 7 - <_> - 3 - - 3 18 11 4 - <_> - 5 - - 5 12 1 16 - <_> - 0 - - 9 3 3 2 - <_> - 3 - - 6 5 3 1 - <_> - 1 - - 6 7 6 2 - <_> - 3 - - 0 27 13 2 - <_> - 4 - - 2 9 12 3 - <_> - 4 - - 10 24 4 2 - <_> - 9 - - 0 22 11 1 - <_> - 9 - - 1 0 14 14 - <_> - 9 - - 7 9 2 7 - <_> - 1 - - 4 27 4 1 - <_> - 2 - - 9 28 4 3 - <_> - 8 - - 6 6 2 17 - <_> - 2 - - 5 23 9 4 - <_> - 0 - - 10 9 4 3 - <_> - 2 - - 6 13 3 2 - <_> - 4 - - 13 29 2 2 - <_> - 5 - - 8 5 3 4 - <_> - 4 - - 13 8 1 1 - <_> - 7 - - 4 30 11 1 - <_> - 3 - - 8 15 3 15 - <_> - 1 - - 6 22 1 2 - <_> - 3 - - 1 5 8 6 - <_> - 7 - - 13 0 2 3 - <_> - 0 - - 6 10 3 2 - <_> - 2 - - 7 8 4 2 - <_> - 1 - - 10 9 1 2 - <_> - 3 - - 7 10 3 13 - <_> - 5 - - 3 26 9 1 - <_> - 4 - - 2 0 13 4 - <_> - 4 - - 5 0 4 8 - <_> - 2 - - 11 23 4 3 - <_> - 5 - - 10 9 3 13 - <_> - 9 - - 9 10 1 1 - <_> - 8 - - 5 6 7 1 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 0 17 1 5 - <_> - 5 - - 5 28 8 2 - <_> - 4 - - 2 10 5 8 - <_> - 0 - - 2 29 6 2 - <_> - 0 - - 6 21 5 7 - <_> - 0 - - 3 22 2 5 - <_> - 3 - - 0 6 5 25 - <_> - 9 - - 5 1 2 1 - <_> - 4 - - 7 18 2 2 - <_> - 9 - - 6 8 3 4 - <_> - 8 - - 6 6 2 2 - <_> - 9 - - 5 10 1 2 - <_> - 8 - - 3 5 7 8 - <_> - 5 - - 3 21 2 3 - <_> - 2 - - 4 12 3 16 - <_> - 5 - - 11 5 1 21 - <_> - 0 - - 4 7 2 4 - <_> - 7 - - 7 12 2 3 - <_> - 0 - - 6 6 8 25 - <_> - 2 - - 8 30 6 1 - <_> - 5 - - 9 25 5 2 - <_> - 3 - - 5 9 1 14 - <_> - 1 - - 3 28 10 1 - <_> - 4 - - 13 3 1 19 - <_> - 7 - - 0 27 15 2 - <_> - 1 - - 7 3 2 6 - <_> - 7 - - 10 13 1 7 - <_> - 4 - - 3 12 8 19 - <_> - 5 - - 8 5 5 10 - <_> - 4 - - 6 0 2 8 - <_> - 5 - - 8 0 4 3 - <_> - 9 - - 3 3 10 2 - <_> - 3 - - 12 20 2 5 - <_> - 9 - - 7 17 2 1 - <_> - 5 - - 1 30 5 1 - <_> - 3 - - 3 0 8 6 - <_> - 0 - - 6 24 4 4 - <_> - 3 - - 7 14 1 2 - <_> - 4 - - 5 6 9 5 - <_> - 5 - - 6 16 3 3 - <_> - 2 - - 4 18 5 10 - <_> - 1 - - 4 18 11 3 - <_> - 0 - - 4 28 10 2 - <_> - 1 - - 4 13 9 6 - <_> - 1 - - 11 15 1 4 - <_> - 1 - - 9 10 1 3 - <_> - 7 - - 9 30 2 1 - <_> - 1 - - 4 17 6 12 - <_> - 2 - - 0 6 10 4 - <_> - 2 - - 5 1 1 4 - <_> - 0 - - 6 0 2 8 - <_> - 2 - - 3 10 4 1 - <_> - 4 - - 1 30 12 1 - <_> - 1 - - 4 27 9 1 - <_> - 7 - - 11 25 2 1 - <_> - 1 - - 7 19 2 7 - <_> - 4 - - 12 26 3 5 - <_> - 5 - - 2 5 10 22 - <_> - 7 - - 7 5 4 3 - <_> - 4 - - 2 25 13 3 - <_> - 2 - - 6 18 3 4 - <_> - 2 - - 8 16 1 2 - <_> - 0 - - 6 17 7 12 - <_> - 0 - - 12 21 2 1 - <_> - 1 - - 6 4 4 2 - <_> - 4 - - 7 3 2 2 - <_> - 4 - - 10 0 2 17 - <_> - 5 - - 9 29 6 1 - <_> - 2 - - 6 26 7 1 - <_> - 9 - - 6 8 3 4 - <_> - 8 - - 6 5 4 2 - <_> - 2 - - 14 17 1 13 - <_> - 8 - - 0 30 15 1 - <_> - 0 - - 7 13 2 4 - <_> - 3 - - 3 10 8 4 - <_> - 0 - - 1 14 2 1 - <_> - 1 - - 6 28 5 1 - <_> - 5 - - 10 7 3 7 - <_> - 1 - - 3 29 3 1 - <_> - 3 - - 1 22 2 8 - <_> - 3 - - 4 25 2 5 - <_> - 3 - - 4 5 3 4 - <_> - 2 - - 6 1 2 4 - <_> - 4 - - 3 14 7 14 - <_> - 8 - - 7 6 1 2 - <_> - 3 - - 3 9 2 14 - <_> - 4 - - 2 29 9 1 - <_> - 7 - - 12 30 3 1 - <_> - 9 - - 6 12 4 5 - <_> - 9 - - 1 0 14 3 - <_> - 1 - - 7 4 2 4 - <_> - 2 - - 6 18 4 9 - <_> - 7 - - 3 13 1 2 - <_> - 2 - - 4 13 11 12 - <_> - 8 - - 6 13 4 1 - <_> - 1 - - 6 11 5 2 - <_> - 8 - - 11 16 2 2 - <_> - 1 - - 4 20 3 11 - <_> - 5 - - 2 28 7 2 - <_> - 1 - - 10 29 2 1 - <_> - 9 - - 13 25 2 3 - <_> - 9 - - 6 19 1 5 - <_> - 5 - - 9 29 2 2 - <_> - 2 - - 5 5 10 3 - <_> - 7 - - 0 10 2 8 - <_> - 2 - - 0 30 4 1 - <_> - 7 - - 9 29 6 2 - <_> - 3 - - 8 2 1 29 - <_> - 4 - - 1 0 10 23 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 6 6 9 - <_> - 8 - - 7 9 2 1 - <_> - 1 - - 7 28 4 1 - <_> - 3 - - 1 10 12 1 - <_> - 5 - - 7 8 1 19 - <_> - 4 - - 3 30 10 1 - <_> - 3 - - 4 4 1 11 - <_> - 0 - - 7 18 3 4 - <_> - 4 - - 7 7 4 5 - <_> - 7 - - 11 1 1 12 - <_> - 8 - - 7 7 3 1 - <_> - 9 - - 7 9 2 7 - <_> - 9 - - 10 11 5 12 - <_> - 2 - - 6 10 3 1 - <_> - 2 - - 4 19 7 9 - <_> - 1 - - 0 0 15 1 - <_> - 3 - - 4 5 6 2 - <_> - 3 - - 11 20 1 3 - <_> - 3 - - 5 0 8 15 - <_> - 4 - - 10 11 1 12 - <_> - 0 - - 6 16 7 11 - <_> - 5 - - 6 6 1 25 - <_> - 5 - - 3 22 2 4 - <_> - 5 - - 0 7 13 16 - <_> - 4 - - 6 21 4 1 - <_> - 4 - - 5 1 6 5 - <_> - 4 - - 5 0 8 27 - <_> - 1 - - 4 26 6 3 - <_> - 7 - - 8 9 1 1 - <_> - 0 - - 1 28 11 3 - <_> - 3 - - 2 22 1 2 - <_> - 0 - - 7 9 1 6 - <_> - 3 - - 4 9 4 20 - <_> - 5 - - 3 8 1 21 - <_> - 4 - - 6 22 4 3 - <_> - 1 - - 4 7 4 1 - <_> - 9 - - 10 9 2 7 - <_> - 2 - - 11 6 1 18 - <_> - 8 - - 7 6 1 2 - <_> - 4 - - 5 29 6 2 - <_> - 8 - - 8 3 1 1 - <_> - 3 - - 8 17 1 5 - <_> - 3 - - 2 28 12 2 - <_> - 0 - - 0 8 1 5 - <_> - 3 - - 3 23 4 4 - <_> - 1 - - 13 2 2 7 - <_> - 8 - - 5 6 10 2 - <_> - 0 - - 7 18 6 10 - <_> - 3 - - 12 17 3 14 - <_> - 9 - - 8 15 1 2 - <_> - 9 - - 0 0 4 1 - <_> - 0 - - 9 9 4 1 - <_> - 9 - - 4 5 6 13 - <_> - 0 - - 5 3 6 6 - <_> - 9 - - 5 22 6 4 - <_> - 0 - - 11 4 1 1 - <_> - 7 - - 14 1 1 19 - <_> - 4 - - 8 17 3 1 - <_> - 5 - - 9 13 4 6 - <_> - 5 - - 9 2 3 22 - <_> - 0 - - 0 28 8 1 - <_> - 4 - - 6 4 5 3 - <_> - 5 - - 14 10 1 14 - <_> - 5 - - 7 24 5 4 - <_> - 3 - - 10 18 1 8 - <_> - 5 - - 8 30 6 1 - <_> - 2 - - 6 26 6 2 - <_> - 1 - - 4 10 4 2 - <_> - 3 - - 5 8 1 18 - <_> - 4 - - 8 29 7 1 - <_> - 7 - - 13 28 1 1 - <_> - 1 - - 7 28 3 1 - <_> - 7 - - 2 25 4 4 - <_> - 4 - - 12 30 3 1 - <_> - 4 - - 7 19 3 7 - <_> - 5 - - 9 8 5 7 - <_> - 5 - - 2 19 1 5 - <_> - 1 - - 2 22 5 8 - <_> - 1 - - 3 24 2 2 - <_> - 0 - - 6 29 1 2 - <_> - 9 - - 5 28 2 1 - <_> - 0 - - 7 10 3 2 - <_> - 2 - - 4 28 6 1 - <_> - 0 - - 3 7 5 22 - <_> - 7 - - 2 8 9 1 - <_> - 3 - - 6 17 1 2 - <_> - 8 - - 8 6 1 2 - <_> - 3 - - 3 0 6 4 - <_> - 9 - - 7 13 1 1 - <_> - 2 - - 4 22 3 1 - <_> - 9 - - 8 19 1 2 - <_> - 8 - - 10 15 4 3 - <_> - 5 - - 9 10 3 3 - <_> - 3 - - 9 3 6 4 - <_> - 4 - - 1 12 11 18 - <_> - 5 - - 1 28 4 3 - <_> - 3 - - 1 3 8 14 - <_> - 4 - - 7 11 1 8 - <_> - 0 - - 7 9 1 1 - <_> - 2 - - 5 25 4 3 - <_> - 5 - - 5 1 4 3 - <_> - 4 - - 5 18 5 2 - <_> - 5 - - 2 18 11 3 - <_> - 1 - - 7 4 2 4 - <_> - 7 - - 13 4 1 25 - <_> - 2 - - 13 19 2 4 - <_> - 9 - - 4 0 7 4 - <_> - 1 - - 8 27 1 2 - <_> - 4 - - 3 29 11 1 - <_> - 4 - - 6 26 4 4 - <_> - 0 - - 7 17 5 10 - <_> - 9 - - 2 30 1 1 - <_> - 7 - - 12 18 3 13 - <_> - 4 - - 6 22 3 3 - <_> - 1 - - 5 25 3 6 - <_> - 2 - - 7 20 3 1 - <_> - 8 - - 7 6 1 2 - <_> - 2 - - 4 9 4 2 - <_> - 8 - - 4 25 1 2 - <_> - 4 - - 4 9 8 5 - <_> - 5 - - 8 5 5 8 - <_> - 4 - - 3 28 9 1 - <_> - 2 - - 7 29 7 2 - <_> - 2 - - 6 19 5 12 - <_> - 4 - - 14 23 1 4 - <_> - 5 - - 6 17 2 3 - <_> - 2 - - 3 17 5 7 - <_> - 9 - - 7 8 1 3 - <_> - 9 - - 2 3 11 3 - <_> - 1 - - 4 28 4 1 - <_> - 9 - - 6 7 2 6 - <_> - 8 - - 6 6 1 2 - <_> - 2 - - 14 17 1 13 - <_> - 8 - - 3 0 6 5 - <_> - 2 - - 7 24 3 3 - <_> - 4 - - 1 28 11 3 - <_> - 2 - - 6 27 5 4 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 4 4 3 9 - <_> - 8 - - 6 0 3 3 - <_> - 1 - - 4 7 6 1 - <_> - 9 - - 6 14 5 4 - <_> - 3 - - 0 9 1 18 - <_> - 1 - - 9 10 1 3 - <_> - 1 - - 7 12 8 6 - <_> - 4 - - 7 18 2 2 - <_> - 3 - - 6 2 1 8 - <_> - 0 - - 3 9 3 1 - <_> - 4 - - 3 15 11 14 - <_> - 1 - - 6 11 6 1 - <_> - 8 - - 7 5 2 3 - <_> - 9 - - 7 14 3 3 - <_> - 4 - - 3 11 4 9 - <_> - 2 - - 8 7 1 11 - <_> - 7 - - 0 12 9 10 - <_> - 7 - - 0 27 10 1 - <_> - 0 - - 6 5 3 18 - <_> - 5 - - 4 28 5 3 - <_> - 2 - - 4 9 8 22 - <_> - 7 - - 7 17 1 2 - <_> - 2 - - 6 13 4 2 - <_> - 0 - - 5 5 6 3 - <_> - 7 - - 8 13 3 14 - <_> - 0 - - 10 0 2 5 - <_> - 1 - - 3 28 8 1 - <_> - 4 - - 12 7 1 24 - <_> - 7 - - 1 28 2 2 - <_> - 8 - - 6 5 4 2 - <_> - 0 - - 6 18 5 4 - <_> - 4 - - 11 6 4 2 - <_> - 0 - - 7 10 3 1 - <_> - 7 - - 14 0 1 28 - <_> - 5 - - 9 27 6 3 - <_> - 8 - - 0 4 4 27 - <_> - 0 - - 5 28 8 1 - <_> - 1 - - 6 12 3 1 - <_> - 5 - - 10 10 4 9 - <_> - 5 - - 5 0 2 5 - <_> - 4 - - 4 4 6 5 - <_> - 4 - - 2 29 9 1 - <_> - 1 - - 5 26 7 3 - <_> - 2 - - 2 20 2 4 - <_> - 0 - - 6 17 7 12 - <_> - 3 - - 10 25 5 6 - <_> - 3 - - 10 17 1 10 - <_> - 2 - - 0 0 12 28 - <_> - 5 - - 9 8 5 7 - <_> - 4 - - 3 12 9 16 - <_> - 0 - - 13 22 2 4 - <_> - 3 - - 6 0 5 11 - <_> - 1 - - 0 2 8 2 - <_> - 1 - - 6 7 6 2 - <_> - 8 - - 8 3 1 5 - <_> - 4 - - 8 2 4 13 - <_> - 9 - - 8 10 1 7 - <_> - 9 - - 2 3 11 3 - <_> - 2 - - 11 28 2 1 - <_> - 0 - - 9 4 1 24 - <_> - 0 - - 5 28 4 2 - <_> - 4 - - 7 0 2 18 - <_> - 4 - - 4 9 9 3 - <_> - 4 - - 7 7 6 14 - <_> - 4 - - 6 25 3 5 - <_> - 4 - - 5 13 2 5 - <_> - 3 - - 3 24 8 3 - <_> - 8 - - 5 20 2 2 - <_> - 3 - - 1 22 2 8 - <_> - 1 - - 2 27 8 2 - <_> - 7 - - 10 28 5 1 - <_> - 4 - - 7 20 3 5 - <_> - 4 - - 8 26 2 2 - <_> - 0 - - 5 24 4 3 - <_> - 4 - - 12 30 3 1 - <_> - 2 - - 4 24 6 4 - <_> - 2 - - 12 10 3 7 - <_> - 1 - - 8 27 1 2 - <_> - 5 - - 1 29 3 2 - <_> - 1 - - 11 23 3 8 - <_> - 2 - - 8 10 1 5 - <_> - 2 - - 11 0 2 15 - <_> - 1 - - 11 20 1 3 - <_> - 3 - - 3 8 5 16 - <_> - 7 - - 7 5 2 1 - <_> - 3 - - 0 19 4 10 - <_> - 1 - - 6 22 1 2 - <_> - 3 - - 4 27 11 2 - <_> - 9 - - 10 10 3 1 - <_> - 8 - - 8 6 1 2 - <_> - 0 - - 8 8 2 1 - <_> - 8 - - 1 26 11 2 - <_> - 7 - - 4 30 11 1 - <_> - 1 - - 3 18 11 12 - <_> - 2 - - 0 0 12 28 - <_> - 0 - - 13 8 2 6 - <_> - 1 - - 3 22 4 7 - <_> - 2 - - 2 30 8 1 - <_> - 9 - - 9 19 1 6 - <_> - 7 - - 3 16 9 4 - <_> - 9 - - 5 1 2 1 - <_> - 2 - - 7 9 5 1 - <_> - 4 - - 3 28 9 3 - <_> - 5 - - 5 0 6 2 - <_> - 5 - - 8 5 5 10 - <_> - 9 - - 5 17 7 4 - <_> - 2 - - 4 25 9 3 - <_> - 2 - - 9 16 2 2 - <_> - 5 - - 10 9 3 19 - <_> - 1 - - 4 10 7 4 - <_> - 0 - - 13 24 2 7 - <_> - 0 - - 7 24 3 5 - <_> - 4 - - 4 3 6 4 - <_> - 4 - - 11 15 2 5 - <_> - 0 - - 11 13 1 10 - <_> - 1 - - 1 25 1 5 - <_> - 5 - - 11 22 1 2 - <_> - 1 - - 8 26 1 4 - <_> - 3 - - 8 18 1 1 - <_> - 8 - - 7 6 1 2 - <_> - 9 - - 14 24 1 2 - <_> - 8 - - 11 6 1 3 - <_> - 2 - - 5 4 5 1 - <_> - 2 - - 6 3 4 7 - <_> - 1 - - 7 4 2 4 - <_> - 7 - - 9 7 1 5 - <_> - 0 - - 0 10 9 3 - <_> - 0 - - 4 4 7 7 - <_> - 5 - - 4 28 9 2 - <_> - 2 - - 6 17 6 12 - <_> - 0 - - 13 25 1 3 - <_> - 0 - - 1 3 13 1 - <_> - 0 - - 5 6 7 2 - <_> - 0 - - 5 10 4 2 - <_> - 1 - - 7 19 2 6 - <_> - 4 - - 5 13 6 9 - <_> - 1 - - 6 17 4 1 - <_> - 7 - - 2 28 6 1 - <_> - 0 - - 11 21 3 6 - <_> - 4 - - 13 29 2 2 - <_> - 3 - - 4 3 3 18 - <_> - 7 - - 7 5 4 3 - <_> - 7 - - 1 0 3 10 - <_> - 2 - - 6 12 3 1 - <_> - 5 - - 1 11 14 3 - <_> - 0 - - 6 15 3 1 - <_> - 8 - - 7 5 2 3 - <_> - 1 - - 2 0 11 3 - <_> - 8 - - 11 18 4 2 - <_> - 4 - - 4 26 7 2 - <_> - 2 - - 5 28 10 3 - <_> - 2 - - 4 5 7 2 - <_> - 4 - - 6 29 5 2 - <_> - 1 - - 5 28 6 2 - <_> - 9 - - 7 12 1 5 - <_> - 2 - - 3 17 6 7 - <_> - 3 - - 8 25 1 1 - <_> - 3 - - 2 22 1 2 - <_> - 3 - - 5 0 9 1 - <_> - 3 - - 3 0 6 13 - <_> - 3 - - 7 6 3 11 - <_> - 7 - - 8 1 7 14 - <_> - 5 - - 3 26 8 2 - <_> - 2 - - 7 12 6 15 - <_> - 0 - - 7 8 1 7 - <_> - 8 - - 14 0 1 3 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 1 30 2 1 - <_> - 7 - - 3 28 1 1 - <_> - 0 - - 5 25 4 1 - <_> - 3 - - 5 28 3 2 - <_> - 0 - - 9 12 3 19 - <_> - 3 - - 1 16 2 9 - <_> - 3 - - 11 24 3 1 - <_> - 1 - - 4 22 7 1 - <_> - 5 - - 10 7 2 20 - <_> - 0 - - 6 19 4 10 - <_> - 5 - - 4 28 9 2 - <_> - 5 - - 11 29 1 1 - <_> - 9 - - 1 0 14 3 - <_> - 9 - - 7 9 2 7 - <_> - 9 - - 8 13 2 5 - <_> - 4 - - 9 17 5 14 - <_> - 1 - - 7 27 8 2 - <_> - 4 - - 5 24 1 2 - <_> - 2 - - 5 18 6 10 - <_> - 7 - - 9 3 1 26 - <_> - 2 - - 8 16 2 3 - <_> - 8 - - 8 4 2 8 - <_> - 8 - - 6 6 1 2 - <_> - 8 - - 11 5 1 3 - <_> - 0 - - 3 29 5 2 - <_> - 4 - - 4 9 3 22 - <_> - 5 - - 10 19 3 1 - <_> - 1 - - 8 4 2 5 - <_> - 4 - - 7 4 3 1 - <_> - 4 - - 5 0 7 10 - <_> - 1 - - 5 9 6 4 - <_> - 0 - - 6 25 5 2 - <_> - 0 - - 4 8 2 2 - <_> - 5 - - 1 25 2 6 - <_> - 3 - - 3 9 4 6 - <_> - 7 - - 7 24 6 7 - <_> - 9 - - 6 20 1 3 - <_> - 8 - - 7 5 6 4 - <_> - 8 - - 1 10 14 3 - <_> - 2 - - 8 9 2 1 - <_> - 5 - - 8 5 3 4 - <_> - 8 - - 5 19 7 1 - <_> - 7 - - 6 3 4 1 - <_> - 5 - - 12 25 2 2 - <_> - 2 - - 7 14 6 12 - <_> - 2 - - 5 30 8 1 - <_> - 2 - - 3 26 8 2 - <_> - 2 - - 9 19 5 1 - <_> - 4 - - 9 13 2 11 - <_> - 1 - - 6 27 4 4 - <_> - 1 - - 6 4 2 6 - <_> - 8 - - 8 6 1 2 - <_> - 9 - - 5 0 5 3 - <_> - 8 - - 5 28 8 1 - <_> - 9 - - 6 12 3 2 - <_> - 1 - - 0 2 12 24 - <_> - 8 - - 6 11 3 4 - <_> - 4 - - 4 3 4 6 - <_> - 7 - - 4 3 1 1 - <_> - 1 - - 9 10 1 3 - <_> - 0 - - 7 28 1 3 - <_> - 0 - - 6 16 7 11 - <_> - 4 - - 1 22 5 4 - <_> - 0 - - 1 28 12 1 - <_> - 4 - - 5 12 8 15 - <_> - 4 - - 1 27 5 4 - <_> - 2 - - 6 18 4 11 - <_> - 3 - - 13 20 1 10 - <_> - 7 - - 5 29 6 1 - <_> - 1 - - 7 24 2 2 - <_> - 9 - - 3 3 10 2 - <_> - 0 - - 6 8 1 2 - <_> - 9 - - 4 9 4 2 - <_> - 5 - - 10 12 1 15 - <_> - 5 - - 10 7 1 7 - <_> - 5 - - 6 17 2 3 - <_> - 3 - - 2 21 7 6 - <_> - 3 - - 6 3 1 3 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 6 5 8 - <_> - 8 - - 7 9 2 1 - <_> - 5 - - 13 22 2 9 - <_> - 2 - - 6 25 4 2 - <_> - 7 - - 10 29 1 2 - <_> - 5 - - 5 29 8 1 - <_> - 5 - - 9 12 3 16 - <_> - 9 - - 6 16 4 2 - <_> - 7 - - 7 6 2 2 - <_> - 4 - - 7 0 2 18 - <_> - 2 - - 1 10 7 5 - <_> - 1 - - 4 10 5 1 - <_> - 0 - - 4 2 3 11 - <_> - 9 - - 11 17 1 1 - <_> - 3 - - 0 26 1 3 - <_> - 5 - - 4 1 3 5 - <_> - 0 - - 13 11 2 4 - <_> - 2 - - 8 23 2 3 - <_> - 4 - - 1 30 3 1 - <_> - 7 - - 5 30 2 1 - <_> - 3 - - 5 0 1 27 - <_> - 2 - - 9 24 4 6 - <_> - 5 - - 6 15 1 8 - <_> - 1 - - 5 26 6 2 - <_> - 0 - - 9 15 1 13 - <_> - 4 - - 3 20 10 1 - <_> - 4 - - 4 6 9 6 - <_> - 7 - - 2 1 5 5 - <_> - 2 - - 8 8 4 1 - <_> - 1 - - 6 12 3 1 - <_> - 0 - - 2 7 6 1 - <_> - 9 - - 12 2 1 4 - <_> - 8 - - 10 18 1 13 - <_> - 8 - - 6 5 4 2 - <_> - 0 - - 5 5 8 2 - <_> - 0 - - 7 0 5 14 - <_> - 4 - - 1 9 11 1 - <_> - 1 - - 0 4 14 6 - <_> - 0 - - 6 14 6 12 - <_> - 8 - - 7 3 1 5 - <_> - 0 - - 6 12 8 17 - <_> - 5 - - 5 28 6 1 - <_> - 5 - - 3 26 9 1 - <_> - 3 - - 6 5 4 2 - <_> - 3 - - 6 15 3 1 - <_> - 1 - - 9 8 3 14 - <_> - 7 - - 0 30 14 1 - <_> - 3 - - 4 6 11 5 - <_> - 7 - - 13 0 1 1 - <_> - 1 - - 11 25 2 6 - <_> - 3 - - 1 30 9 1 - <_> - 7 - - 4 27 5 1 - <_> - 5 - - 2 14 7 1 - <_> - 9 - - 3 13 5 6 - <_> - 5 - - 9 7 4 21 - <_> - 1 - - 6 4 2 6 - <_> - 0 - - 7 10 3 2 - <_> - 2 - - 3 12 4 14 - <_> - 9 - - 13 29 2 2 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 7 1 - <_> - 2 - - 4 28 11 1 - <_> - 4 - - 3 10 11 13 - <_> - 1 - - 5 27 6 4 - <_> - 5 - - 0 6 1 14 - <_> - 4 - - 6 29 1 1 - <_> - 2 - - 7 30 8 1 - <_> - 3 - - 3 9 3 18 - <_> - 4 - - 7 20 2 3 - <_> - 1 - - 4 15 8 4 - <_> - 2 - - 4 22 6 9 - <_> - 2 - - 3 28 5 2 - <_> - 0 - - 13 22 1 2 - <_> - 0 - - 9 17 5 3 - <_> - 8 - - 8 6 1 2 - <_> - 9 - - 5 9 5 1 - <_> - 8 - - 8 3 1 1 - <_> - 1 - - 10 9 1 2 - <_> - 1 - - 4 13 9 6 - <_> - 1 - - 6 11 6 1 - <_> - 5 - - 9 3 4 10 - <_> - 8 - - 12 20 1 5 - <_> - 5 - - 4 0 9 11 - <_> - 2 - - 7 8 4 2 - <_> - 2 - - 12 25 2 1 - <_> - 3 - - 1 6 3 5 - <_> - 2 - - 12 24 2 2 - <_> - 5 - - 6 26 7 2 - <_> - 3 - - 6 26 7 2 - <_> - 2 - - 6 10 3 1 - <_> - 8 - - 4 6 7 2 - <_> - 4 - - 0 10 4 13 - <_> - 4 - - 6 4 5 3 - <_> - 0 - - 2 30 5 1 - <_> - 3 - - 3 0 5 13 - <_> - 4 - - 5 0 3 24 - <_> - 1 - - 11 20 3 8 - <_> - 2 - - 3 12 1 7 - <_> - 9 - - 7 17 2 3 - <_> - 9 - - 7 3 3 4 - <_> - 5 - - 2 29 13 2 - <_> - 9 - - 0 29 7 2 - <_> - 0 - - 5 21 5 6 - <_> - 9 - - 7 7 2 7 - <_> - 0 - - 14 14 1 3 - <_> - 2 - - 8 26 6 5 - <_> - 5 - - 2 24 1 7 - <_> - 5 - - 10 10 4 9 - <_> - 2 - - 8 16 1 2 - <_> - 5 - - 1 11 13 14 - <_> - 2 - - 4 18 5 10 - <_> - 0 - - 4 8 2 2 - <_> - 2 - - 6 16 4 1 - <_> - 1 - - 5 28 6 1 - <_> - 5 - - 0 9 1 15 - <_> - 1 - - 9 22 1 2 - <_> - 0 - - 3 4 3 13 - <_> - 3 - - 6 25 6 4 - <_> - 4 - - 4 20 8 1 - <_> - 0 - - 7 19 4 9 - <_> - 9 - - 7 1 1 2 - <_> - 4 - - 7 17 4 2 - <_> - 1 - - 9 10 1 3 - <_> - 4 - - 9 7 1 4 - <_> - 8 - - 9 25 5 5 - <_> - 3 - - 0 18 7 11 - <_> - 1 - - 2 12 12 7 - <_> - 5 - - 5 7 7 1 - <_> - 8 - - 6 6 1 2 - <_> - 9 - - 7 13 1 7 - <_> - 4 - - 5 0 2 13 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 1 2 14 - <_> - 8 - - 6 8 3 2 - <_> - 1 - - 2 26 11 2 - <_> - 2 - - 11 28 2 1 - <_> - 1 - - 5 8 1 6 - <_> - 8 - - 9 26 1 4 - <_> - 1 - - 8 6 2 3 - <_> - 4 - - 2 24 12 2 - <_> - 2 - - 5 16 4 11 - <_> - 4 - - 8 14 5 17 - <_> - 0 - - 5 28 6 2 - <_> - 0 - - 9 16 2 10 - <_> - 7 - - 7 4 8 1 - <_> - 0 - - 7 10 3 17 - <_> - 3 - - 3 12 4 12 - <_> - 0 - - 7 7 3 5 - <_> - 7 - - 7 30 3 1 - <_> - 5 - - 0 21 3 2 - <_> - 5 - - 1 9 3 17 - <_> - 5 - - 1 8 14 3 - <_> - 4 - - 12 8 1 23 - <_> - 0 - - 4 28 10 2 - <_> - 5 - - 5 15 1 10 - <_> - 0 - - 6 18 6 10 - <_> - 2 - - 0 29 15 2 - <_> - 0 - - 10 19 4 4 - <_> - 8 - - 7 6 1 2 - <_> - 3 - - 13 23 2 5 - <_> - 8 - - 11 5 2 1 - <_> - 4 - - 7 18 2 2 - <_> - 3 - - 2 0 8 14 - <_> - 9 - - 5 22 2 1 - <_> - 9 - - 14 24 1 2 - <_> - 5 - - 11 13 1 18 - <_> - 5 - - 10 28 5 3 - <_> - 4 - - 5 29 7 1 - <_> - 1 - - 6 27 6 2 - <_> - 1 - - 13 5 1 9 - <_> - 7 - - 7 6 2 2 - <_> - 0 - - 3 3 2 3 - <_> - 2 - - 5 6 8 18 - <_> - 4 - - 6 23 4 6 - <_> - 0 - - 3 2 3 14 - <_> - 4 - - 6 19 2 2 - <_> - 3 - - 7 14 1 2 - <_> - 3 - - 10 12 4 3 - <_> - 0 - - 7 10 2 4 - <_> - 7 - - 3 19 1 12 - <_> - 2 - - 14 17 1 9 - <_> - 2 - - 7 8 5 3 - <_> - 5 - - 3 28 11 3 - <_> - 5 - - 10 9 3 6 - <_> - 7 - - 6 15 3 1 - <_> - 0 - - 12 8 2 4 - <_> - 5 - - 10 8 1 4 - <_> - 0 - - 10 9 1 1 - <_> - 8 - - 6 6 2 2 - <_> - 2 - - 3 1 12 3 - <_> - 9 - - 8 10 1 7 - <_> - 1 - - 4 27 5 1 - <_> - 2 - - 7 18 2 3 - <_> - 4 - - 0 30 8 1 - <_> - 1 - - 3 28 10 1 - <_> - 3 - - 7 16 4 1 - <_> - 7 - - 12 22 3 4 - <_> - 4 - - 3 14 7 14 - <_> - 1 - - 7 3 2 6 - <_> - 1 - - 2 30 10 1 - <_> - 0 - - 8 26 6 5 - <_> - 2 - - 9 9 4 1 - <_> - 5 - - 9 28 5 3 - <_> - 1 - - 3 10 10 1 - <_> - 3 - - 6 2 1 8 - <_> - 0 - - 1 10 2 3 - <_> - 7 - - 5 29 9 1 - <_> - 2 - - 7 8 3 9 - <_> - 3 - - 2 8 7 20 - <_> - 3 - - 13 23 2 6 - <_> - 3 - - 5 25 6 2 - <_> - 9 - - 0 0 4 1 - <_> - 8 - - 6 25 4 6 - <_> - 8 - - 7 7 3 1 - <_> - 1 - - 1 0 10 2 - <_> - 9 - - 7 14 3 3 - <_> - 7 - - 5 16 6 1 - <_> - 9 - - 6 19 3 1 - <_> - 0 - - 7 10 1 1 - <_> - 0 - - 6 5 3 4 - <_> - 1 - - 1 7 9 3 - <_> - 8 - - 6 5 4 2 - <_> - 3 - - 5 28 10 1 - <_> - 8 - - 10 7 2 4 - <_> - 4 - - 3 8 9 13 - <_> - 4 - - 8 3 1 17 - <_> - 1 - - 8 4 1 12 - <_> - 3 - - 2 19 1 11 - <_> - 3 - - 4 23 6 4 - <_> - 0 - - 6 15 3 1 - <_> - 0 - - 5 12 5 17 - <_> - 4 - - 4 6 8 19 - <_> - 2 - - 6 1 4 27 - <_> - 0 - - 5 11 9 1 - <_> - 1 - - 8 10 2 4 - <_> - 5 - - 12 25 3 6 - <_> - 5 - - 2 27 1 3 - <_> - 2 - - 3 25 7 3 - <_> - 1 - - 5 0 4 30 - <_> - 0 - - 4 25 1 5 - <_> - 4 - - 9 8 1 17 - <_> - 5 - - 3 18 1 4 - <_> - 1 - - 5 26 5 3 - <_> - 9 - - 5 9 5 2 - <_> - 1 - - 6 19 4 5 - <_> - 9 - - 8 28 5 1 - <_> - 5 - - 10 9 2 15 - <_> - 9 - - 6 3 3 22 - <_> - 4 - - 11 27 3 4 - <_> - 2 - - 5 1 2 4 - <_> - 7 - - 5 29 2 2 - <_> - 5 - - 8 3 2 4 - <_> - 2 - - 9 3 3 13 - <_> - 0 - - 6 10 3 2 - <_> - 0 - - 5 22 3 5 - <_> - 7 - - 6 3 4 1 - <_> - 0 - - 0 14 4 17 - <_> - 3 - - 3 5 4 9 - <_> - 7 - - 0 11 3 5 - <_> - 8 - - 7 7 3 1 - <_> - 2 - - 0 30 4 1 - <_> - 4 - - 0 18 12 13 - <_> - 0 - - 9 18 2 1 - <_> - 9 - - 7 8 1 13 - <_> - 9 - - 1 0 14 3 - <_> - 8 - - 4 12 3 2 - <_> - 2 - - 4 19 7 9 - <_> - 2 - - 4 15 1 8 - <_> - 3 - - 8 20 2 4 - <_> - 2 - - 8 6 4 4 - <_> - 5 - - 9 7 2 2 - <_> - 2 - - 0 28 14 2 - <_> - 5 - - 7 15 1 7 - <_> - 7 - - 0 15 7 3 - <_> - 3 - - 3 7 3 12 - <_> - 7 - - 5 30 9 1 - <_> - 2 - - 13 23 2 8 - <_> - 1 - - 8 24 6 6 - <_> - 4 - - 7 4 3 1 - <_> - 1 - - 7 4 2 4 - <_> - 1 - - 0 17 9 7 - <_> - 5 - - 2 30 6 1 - <_> - 2 - - 0 24 9 3 - <_> - 1 - - 6 11 6 1 - <_> - 1 - - 5 28 6 1 - <_> - 8 - - 2 17 1 4 - <_> - 0 - - 1 3 9 1 - <_> - 8 - - 6 5 4 2 - <_> - 7 - - 11 24 2 2 - <_> - 8 - - 14 18 1 7 - <_> - 7 - - 7 5 1 3 - <_> - 1 - - 5 25 4 1 - <_> - 2 - - 8 23 2 6 - <_> - 3 - - 5 11 3 17 - <_> - 3 - - 6 14 1 15 - <_> - 4 - - 4 6 9 6 - <_> - 4 - - 6 29 9 2 - <_> - 7 - - 11 27 3 1 - <_> - 9 - - 7 15 1 1 - <_> - 0 - - 1 28 14 2 - <_> - 0 - - 7 19 4 8 - <_> - 8 - - 5 6 7 8 - <_> - 1 - - 10 9 1 1 - <_> - 3 - - 4 19 9 2 - <_> - 1 - - 10 19 4 3 - <_> - 4 - - 7 20 4 1 - <_> - 3 - - 5 15 1 14 - <_> - 0 - - 5 5 6 3 - <_> - 2 - - 8 11 1 7 - <_> - 5 - - 10 10 3 4 - <_> - 0 - - 7 1 5 5 - <_> - 8 - - 7 6 1 2 - <_> - 3 - - 9 16 2 2 - <_> - 9 - - 8 15 1 2 - <_> - 1 - - 3 27 7 4 - <_> - 1 - - 11 24 1 1 - <_> - 4 - - 0 29 10 2 - <_> - 2 - - 3 24 8 4 - <_> - 0 - - 0 21 3 10 - <_> - 2 - - 4 28 9 2 - <_> - 0 - - 7 18 1 5 - <_> - 7 - - 8 7 2 1 - <_> - 7 - - 1 24 2 7 - <_> - 1 - - 7 6 5 3 - <_> - 7 - - 6 14 2 1 - <_> - 7 - - 4 27 1 4 - <_> - 8 - - 7 5 2 3 - <_> - 3 - - 13 14 1 6 - <_> - 8 - - 4 3 1 4 - <_> - 2 - - 11 10 1 8 - <_> - 1 - - 8 7 6 16 - <_> - 3 - - 0 8 11 13 - <_> - 3 - - 5 7 1 15 - <_> - 0 - - 5 20 3 2 - <_> - 3 - - 1 6 8 2 - <_> - 2 - - 4 9 4 1 - <_> - 0 - - 3 4 4 6 - <_> - 3 - - 8 2 1 3 - <_> - 1 - - 8 27 1 2 - <_> - 3 - - 14 21 1 4 - <_> - 4 - - 1 9 2 10 - <_> - 5 - - 9 12 3 15 - <_> - 7 - - 3 12 1 6 - <_> - 2 - - 9 30 5 1 - <_> - 3 - - 6 5 4 2 - <_> - 4 - - 9 20 1 11 - <_> - 4 - - 2 6 8 3 - <_> - 7 - - 4 24 1 7 - <_> - 0 - - 6 7 3 12 - <_> - 5 - - 6 26 5 2 - <_> - 5 - - 3 21 2 3 - <_> - 2 - - 3 20 7 2 - <_> - 4 - - 0 30 8 1 - <_> - 3 - - 1 27 10 4 - <_> - 2 - - 5 5 10 2 - <_> - 4 - - 12 22 3 3 - <_> - 9 - - 7 8 1 3 - <_> - 9 - - 7 1 2 6 - <_> - 8 - - 7 6 3 11 - <_> - 8 - - 8 29 3 1 - <_> - 1 - - 7 3 3 7 - <_> - 0 - - 9 19 1 12 - <_> - 4 - - 9 5 2 26 - <_> - 4 - - 9 9 4 13 - <_> - 4 - - 1 23 12 1 - <_> - 2 - - 8 10 1 5 - <_> - 5 - - 10 12 3 19 - <_> - 4 - - 7 11 2 14 - <_> - 0 - - 14 19 1 3 - <_> - 4 - - 5 9 10 3 - <_> - 4 - - 8 22 1 4 - <_> - 2 - - 4 3 6 23 - <_> - 2 - - 14 16 1 13 - <_> - 7 - - 3 19 1 12 - <_> - 5 - - 8 28 3 3 - <_> - 3 - - 5 0 9 1 - <_> - 0 - - 11 10 1 19 - <_> - 8 - - 7 5 2 3 - <_> - 4 - - 5 20 5 1 - <_> - 0 - - 6 21 5 7 - <_> - 3 - - 13 21 2 5 - <_> - 3 - - 1 7 4 8 - <_> - 8 - - 6 18 3 2 - <_> - 7 - - 7 6 2 2 - <_> - 1 - - 7 19 2 5 - <_> - 5 - - 11 8 3 22 - <_> - 1 - - 11 20 2 8 - <_> - 5 - - 11 1 1 20 - <_> - 4 - - 0 30 13 1 - <_> - 9 - - 1 29 7 2 - <_> - 9 - - 5 19 3 3 - <_> - 9 - - 5 6 5 5 - <_> - 8 - - 7 6 1 2 - <_> - 2 - - 5 19 4 11 - <_> - 4 - - 2 29 2 2 - <_> - 0 - - 7 10 3 2 - <_> - 1 - - 8 27 4 2 - <_> - 2 - - 7 8 4 2 - <_> - 0 - - 2 28 2 2 - <_> - 3 - - 2 12 5 3 - <_> - 3 - - 7 14 1 2 - <_> - 2 - - 6 18 3 4 - <_> - 0 - - 5 22 3 5 - <_> - 2 - - 5 1 5 27 - <_> - 0 - - 5 28 7 1 - <_> - 3 - - 5 26 8 2 - <_> - 7 - - 13 21 1 4 - <_> - 7 - - 9 17 1 1 - <_> - 7 - - 13 30 1 1 - <_> - 2 - - 11 4 1 16 - <_> - 5 - - 12 18 2 12 - <_> - 5 - - 8 9 5 4 - <_> - 5 - - 3 23 1 2 - <_> - 4 - - 0 9 4 7 - <_> - 2 - - 3 28 5 2 - <_> - 4 - - 9 8 1 17 - <_> - 3 - - 6 2 1 8 - <_> - 0 - - 6 4 1 6 - <_> - 0 - - 6 18 6 10 - <_> - 0 - - 2 2 11 2 - <_> - 4 - - 9 1 3 16 - <_> - 4 - - 7 4 5 4 - <_> - 4 - - 4 29 8 1 - <_> - 0 - - 6 7 6 10 - <_> - 7 - - 7 28 1 2 - <_> - 5 - - 3 26 7 2 - <_> - 7 - - 7 13 1 8 - <_> - 4 - - 5 20 8 1 - <_> - 1 - - 3 27 10 2 - <_> - 0 - - 0 8 9 1 - <_> - 4 - - 8 26 6 5 - <_> - 5 - - 4 24 1 7 - <_> - 2 - - 2 11 4 11 - <_> - 2 - - 6 21 5 7 - <_> - 8 - - 6 5 4 2 - <_> - 3 - - 3 7 2 11 - <_> - 8 - - 2 21 1 5 - <_> - 2 - - 5 8 1 1 - <_> - 9 - - 7 12 1 5 - <_> - 2 - - 6 9 4 2 - <_> - 8 - - 8 6 1 2 - <_> - 9 - - 12 24 2 5 - <_> - 8 - - 11 0 3 19 - <_> - 3 - - 0 26 4 3 - <_> - 3 - - 4 13 2 15 - <_> - 7 - - 8 19 1 1 - <_> - 2 - - 9 0 2 8 - <_> - 4 - - 7 3 2 18 - <_> - 9 - - 14 2 1 2 - <_> - 1 - - 6 22 4 2 - <_> - 5 - - 12 30 2 1 - <_> - 5 - - 10 20 1 6 - <_> - 2 - - 3 6 7 2 - <_> - 1 - - 6 11 5 2 - <_> - 3 - - 0 6 10 19 - <_> - 7 - - 6 29 1 2 - <_> - 3 - - 6 9 3 8 - <_> - 0 - - 2 12 10 7 - <_> - 2 - - 1 16 2 1 - <_> - 7 - - 1 15 8 1 - <_> - 4 - - 7 18 2 2 - <_> - 3 - - 6 5 9 3 - <_> - 5 - - 0 19 15 8 - <_> - 2 - - 1 25 8 3 - <_> - 2 - - 13 14 1 1 - <_> - 1 - - 13 3 2 12 - <_> - 7 - - 0 24 7 1 - <_> - 3 - - 0 28 15 2 - <_> - 1 - - 4 21 7 5 - <_> - 5 - - 5 14 1 10 - <_> - 1 - - 9 10 1 3 - <_> - 1 - - 1 7 14 5 - <_> - 8 - - 0 16 3 3 - <_> - 1 - - 5 9 1 2 - <_> - 4 - - 8 9 3 19 - <_> - 5 - - 3 21 2 9 - <_> - 0 - - 6 19 2 12 - <_> - 1 - - 5 17 6 3 - <_> - 3 - - 2 19 13 11 - <_> - 0 - - 9 9 1 2 - <_> - 5 - - 9 8 6 4 - <_> - 0 - - 3 8 4 1 - <_> - 1 - - 3 22 3 8 - <_> - 1 - - 2 19 3 4 - <_> - 5 - - 13 1 1 30 - <_> - 5 - - 5 19 7 6 - <_> - 2 - - 0 23 9 1 - <_> - 5 - - 6 17 3 1 - <_> - 4 - - 11 0 3 21 - <_> - 1 - - 2 4 12 5 - <_> - 5 - - 1 13 1 7 - <_> - 1 - - 4 3 5 1 - <_> - 5 - - 9 5 1 7 - <_> - 0 - - 7 18 4 2 - <_> - 5 - - 5 28 8 2 - <_> - 5 - - 3 26 7 2 - <_> - 8 - - 7 5 2 3 - <_> - 4 - - 1 30 8 1 - <_> - 4 - - 2 6 5 7 - <_> - 9 - - 7 1 1 2 - <_> - 9 - - 7 13 4 9 - <_> - 9 - - 3 3 10 3 - <_> - 1 - - 3 4 6 2 - <_> - 1 - - 5 28 6 1 - <_> - 4 - - 4 5 11 9 - <_> - 3 - - 2 16 1 11 - <_> - 0 - - 6 20 5 7 - <_> - 4 - - 10 1 1 8 - <_> - 3 - - 11 22 1 6 - <_> - 4 - - 5 12 6 17 - <_> - 5 - - 10 10 4 8 - <_> - 5 - - 2 1 5 13 - <_> - 5 - - 4 2 8 2 - <_> - 7 - - 2 21 12 2 - <_> - 8 - - 6 6 2 2 - <_> - 9 - - 7 12 1 5 - <_> - 0 - - 2 4 4 12 - <_> - 3 - - 2 15 2 12 - <_> - 2 - - 4 1 3 26 - <_> - 4 - - 0 4 13 4 - <_> - 5 - - 13 15 1 11 - <_> - 5 - - 4 0 9 11 - <_> - 5 - - 7 0 5 7 - <_> - 9 - - 6 19 2 5 - <_> - 1 - - 7 19 2 5 - <_> - 7 - - 2 11 11 2 - <_> - 1 - - 5 9 6 1 - <_> - 7 - - 7 29 2 2 - <_> - 2 - - 8 8 4 1 - <_> - 1 - - 4 27 8 1 - <_> - 4 - - 0 29 14 1 - <_> - 4 - - 8 7 4 8 - <_> - 7 - - 10 28 5 1 - <_> - 2 - - 8 16 1 2 - <_> - 3 - - 2 24 7 4 - <_> - 1 - - 11 15 3 8 - <_> - 5 - - 1 26 1 5 - <_> - 8 - - 3 27 8 2 - <_> - 2 - - 10 9 3 2 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 3 1 - <_> - 4 - - 3 10 12 3 - <_> - 7 - - 2 27 2 2 - <_> - 4 - - 3 24 8 2 - <_> - 3 - - 5 5 1 14 - <_> - 7 - - 6 12 3 2 - <_> - 8 - - 0 4 15 2 - <_> - 8 - - 10 3 2 1 - <_> - 4 - - 6 26 4 2 - <_> - 2 - - 7 11 2 3 - <_> - 4 - - 5 21 5 8 - <_> - 0 - - 5 5 6 3 - <_> - 5 - - 2 13 1 10 - <_> - 4 - - 4 0 6 22 - <_> - 1 - - 5 15 5 11 - <_> - 4 - - 8 3 1 17 - <_> - 2 - - 7 25 3 1 - <_> - 5 - - 6 28 7 2 - <_> - 5 - - 11 13 1 9 - <_> - 0 - - 9 14 3 11 - <_> - 2 - - 5 16 4 11 - <_> - 5 - - 3 15 7 12 - <_> - 5 - - 12 17 3 2 - <_> - 4 - - 7 18 2 2 - <_> - 1 - - 7 27 3 3 - <_> - 4 - - 7 12 3 3 - <_> - 8 - - 8 6 1 2 - <_> - 9 - - 5 16 1 5 - <_> - 8 - - 6 25 4 3 - <_> - 3 - - 6 20 1 5 - <_> - 4 - - 3 26 10 5 - <_> - 4 - - 7 21 3 2 - <_> - 3 - - 3 0 9 10 - <_> - 0 - - 3 9 5 1 - <_> - 3 - - 7 7 6 5 - <_> - 5 - - 3 30 11 1 - <_> - 2 - - 4 26 9 4 - <_> - 0 - - 0 29 9 1 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 9 5 2 1 - <_> - 9 - - 7 10 3 6 - <_> - 5 - - 8 5 5 10 - <_> - 7 - - 3 5 10 2 - <_> - 2 - - 14 22 1 4 - <_> - 9 - - 8 1 2 1 - <_> - 2 - - 4 9 4 1 - <_> - 8 - - 8 1 1 6 - <_> - 3 - - 2 9 7 5 - <_> - 4 - - 1 21 2 4 - <_> - 0 - - 8 9 2 1 - <_> - 8 - - 6 6 2 2 - <_> - 2 - - 6 18 5 10 - <_> - 8 - - 1 4 14 6 - <_> - 3 - - 6 9 3 12 - <_> - 3 - - 5 4 2 9 - <_> - 8 - - 6 12 5 2 - <_> - 9 - - 6 8 2 2 - <_> - 9 - - 1 5 14 11 - <_> - 5 - - 6 8 4 1 - <_> - 5 - - 6 4 4 3 - <_> - 0 - - 0 20 15 10 - <_> - 7 - - 0 27 6 1 - <_> - 2 - - 5 1 2 4 - <_> - 4 - - 8 23 1 1 - <_> - 9 - - 2 2 8 3 - <_> - 1 - - 3 28 8 1 - <_> - 2 - - 4 30 11 1 - <_> - 1 - - 4 3 5 1 - <_> - 0 - - 7 19 4 9 - <_> - 0 - - 13 24 1 5 - <_> - 3 - - 10 18 1 8 - <_> - 4 - - 1 9 14 2 - <_> - 1 - - 7 4 2 4 - <_> - 7 - - 9 27 3 4 - <_> - 1 - - 9 10 1 3 - <_> - 7 - - 14 0 1 26 - <_> - 5 - - 2 9 13 20 - <_> - 0 - - 7 11 2 3 - <_> - 3 - - 4 9 2 19 - <_> - 7 - - 3 16 1 4 - <_> - 5 - - 5 29 4 2 - <_> - 0 - - 3 25 9 5 - <_> - 3 - - 7 29 8 2 - <_> - 4 - - 3 11 9 14 - <_> - 4 - - 8 11 1 8 - <_> - 8 - - 6 21 4 4 - <_> - 3 - - 0 23 3 7 - <_> - 3 - - 3 23 4 4 - <_> - 5 - - 5 18 3 6 - <_> - 5 - - 8 2 5 10 - <_> - 7 - - 2 4 3 5 - <_> - 2 - - 4 10 7 1 - <_> - 3 - - 3 9 9 18 - <_> - 3 - - 5 28 6 1 - <_> - 4 - - 1 6 10 8 - <_> - 3 - - 0 0 5 26 - <_> - 2 - - 5 0 5 31 - <_> - 5 - - 10 25 2 1 - <_> - 2 - - 8 9 1 3 - <_> - 2 - - 3 24 6 4 - <_> - 8 - - 8 6 1 2 - <_> - 7 - - 2 5 8 4 - <_> - 8 - - 10 2 1 5 - <_> - 5 - - 2 7 2 16 - <_> - 0 - - 2 27 1 3 - <_> - 1 - - 1 17 4 2 - <_> - 9 - - 13 25 1 5 - <_> - 4 - - 7 3 2 2 - <_> - 8 - - 6 28 4 1 - <_> - 1 - - 1 10 14 12 - <_> - 3 - - 4 4 5 23 - <_> - 5 - - 1 16 10 8 - <_> - 2 - - 6 10 3 4 - <_> - 5 - - 7 21 5 5 - <_> - 5 - - 9 16 3 5 - <_> - 3 - - 14 24 1 6 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 6 5 8 - <_> - 8 - - 8 16 2 2 - <_> - 1 - - 4 27 10 1 - <_> - 1 - - 5 26 7 2 - <_> - 4 - - 5 20 8 1 - <_> - 9 - - 9 11 1 2 - <_> - 9 - - 8 1 2 1 - <_> - 8 - - 8 4 3 25 - <_> - 1 - - 6 28 5 1 - <_> - 8 - - 8 28 3 3 - <_> - 4 - - 6 29 4 1 - <_> - 4 - - 7 21 3 2 - <_> - 5 - - 10 18 1 11 - <_> - 2 - - 7 9 5 1 - <_> - 5 - - 0 21 3 6 - <_> - 2 - - 3 22 7 6 - <_> - 0 - - 6 10 3 2 - <_> - 2 - - 11 24 2 6 - <_> - 7 - - 14 17 1 13 - <_> - 8 - - 4 3 3 1 - <_> - 4 - - 5 3 6 6 - <_> - 5 - - 1 16 6 15 - <_> - 3 - - 3 29 5 2 - <_> - 0 - - 6 18 4 12 - <_> - 4 - - 10 0 3 13 - <_> - 0 - - 7 11 2 6 - <_> - 5 - - 3 10 12 3 - <_> - 1 - - 7 1 3 2 - <_> - 1 - - 4 26 6 3 - <_> - 4 - - 1 11 11 19 - <_> - 8 - - 7 5 2 3 - <_> - 3 - - 12 11 1 20 - <_> - 5 - - 12 30 2 1 - <_> - 0 - - 5 26 8 4 - <_> - 8 - - 11 21 4 1 - <_> - 1 - - 3 10 10 1 - <_> - 4 - - 7 1 4 18 - <_> - 2 - - 7 20 3 1 - <_> - 5 - - 5 28 4 2 - <_> - 0 - - 2 4 6 5 - <_> - 3 - - 5 7 2 3 - <_> - 9 - - 8 19 1 2 - <_> - 9 - - 5 6 5 1 - <_> - 7 - - 1 22 2 3 - <_> - 2 - - 14 14 1 13 - <_> - 1 - - 2 21 3 6 - <_> - 9 - - 14 1 1 6 - <_> - 1 - - 5 11 3 2 - <_> - 7 - - 14 4 1 22 - <_> - 0 - - 6 4 3 24 - <_> - 9 - - 7 9 2 7 - <_> - 9 - - 9 17 6 2 - <_> - 0 - - 7 10 1 1 - <_> - 3 - - 6 2 1 8 - <_> - 0 - - 5 6 1 6 - <_> - 3 - - 5 0 10 4 - <_> - 7 - - 2 30 11 1 - <_> - 1 - - 7 16 3 11 - <_> - 1 - - 9 10 2 7 - <_> - 2 - - 5 20 6 8 - <_> - 0 - - 10 8 2 2 - <_> - 3 - - 8 13 1 7 - <_> - 8 - - 7 7 3 1 - <_> - 0 - - 5 28 8 1 - <_> - 8 - - 8 3 1 2 - <_> - 0 - - 5 17 7 11 - <_> - 9 - - 11 6 2 1 - <_> - 4 - - 2 27 5 4 - <_> - 5 - - 8 28 3 3 - <_> - 1 - - 7 28 6 1 - <_> - 7 - - 7 20 1 1 - <_> - 4 - - 7 18 3 8 - <_> - 1 - - 11 21 2 8 - <_> - 2 - - 6 18 5 10 - <_> - 9 - - 6 18 1 2 - <_> - 4 - - 9 6 4 18 - <_> - 1 - - 12 23 1 7 - <_> - 7 - - 14 1 1 24 - <_> - 0 - - 4 8 2 2 - <_> - 1 - - 13 12 2 1 - <_> - 7 - - 0 27 10 1 - <_> - 3 - - 8 23 7 8 - <_> - 7 - - 7 13 3 1 - <_> - 8 - - 7 6 1 2 - <_> - 4 - - 9 9 6 3 - <_> - 8 - - 2 6 13 1 - <_> - 5 - - 8 3 5 12 - <_> - 2 - - 2 25 1 3 - <_> - 4 - - 6 2 5 6 - <_> - 3 - - 10 23 1 4 - <_> - 4 - - 5 26 5 2 - <_> - 3 - - 11 17 1 14 - <_> - 4 - - 3 12 10 9 - <_> - 4 - - 4 14 7 7 - <_> - 7 - - 11 11 2 5 - <_> - 4 - - 8 20 2 3 - <_> - 5 - - 7 19 5 9 - <_> - 4 - - 4 16 9 4 - <_> - 5 - - 2 28 1 2 - <_> - 3 - - 4 8 8 7 - <_> - 9 - - 8 13 1 1 - <_> - 0 - - 6 9 2 3 - <_> - 0 - - 5 5 5 3 - <_> - 5 - - 9 20 3 2 - <_> - 2 - - 8 30 6 1 - <_> - 3 - - 2 0 4 16 - <_> - 1 - - 11 19 2 5 - <_> - 9 - - 14 24 1 2 - <_> - 1 - - 4 27 6 3 - <_> - 9 - - 7 9 2 3 - <_> - 4 - - 6 22 4 3 - <_> - 3 - - 3 19 12 4 - <_> - 3 - - 4 12 2 15 - <_> - 3 - - 2 22 1 2 - <_> - 3 - - 4 10 2 13 - <_> - 9 - - 7 14 2 3 - <_> - 2 - - 6 10 3 1 - <_> - 9 - - 12 2 2 2 - <_> - 5 - - 4 3 6 1 - <_> - 3 - - 2 5 7 4 - <_> - 7 - - 12 14 1 9 - <_> - 1 - - 4 4 4 4 - <_> - 4 - - 9 28 5 3 - <_> - 1 - - 8 27 6 1 - <_> - 1 - - 11 23 2 2 - <_> - 7 - - 2 5 12 1 - <_> - 3 - - 1 12 7 11 - <_> - 9 - - 8 24 1 1 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 6 5 8 - <_> - 1 - - 10 9 1 2 - <_> - 9 - - 6 7 2 6 - <_> - 9 - - 3 3 10 3 - <_> - 8 - - 7 9 1 3 - <_> - 0 - - 6 21 5 7 - <_> - 5 - - 10 29 5 2 - <_> - 0 - - 13 27 2 4 - <_> - 9 - - 7 18 1 4 - <_> - 3 - - 3 21 6 4 - <_> - 2 - - 6 5 5 3 - <_> - 1 - - 5 10 4 3 - <_> - 0 - - 5 28 6 1 - <_> - 0 - - 11 15 2 2 - <_> - 7 - - 1 27 7 1 - <_> - 5 - - 10 11 2 1 - <_> - 1 - - 5 12 8 12 - <_> - 4 - - 7 0 2 18 - <_> - 3 - - 1 22 10 3 - <_> - 2 - - 3 5 8 25 - <_> - 5 - - 7 16 1 4 - <_> - 5 - - 9 5 2 12 - <_> - 4 - - 4 29 11 2 - <_> - 2 - - 9 1 2 2 - <_> - 2 - - 8 21 2 7 - <_> - 4 - - 7 27 1 4 - <_> - 8 - - 6 5 4 2 - <_> - 5 - - 1 12 3 6 - <_> - 8 - - 1 20 6 2 - <_> - 4 - - 7 17 4 2 - <_> - 1 - - 6 27 9 3 - <_> - 5 - - 13 1 1 23 - <_> - 9 - - 8 9 1 2 - <_> - 5 - - 11 30 4 1 - <_> - 9 - - 7 0 2 13 - <_> - 3 - - 5 2 1 29 - <_> - 7 - - 10 8 2 3 - <_> - 2 - - 4 29 2 2 - <_> - 3 - - 4 12 11 1 - <_> - 3 - - 1 13 12 4 - <_> - 0 - - 6 10 3 2 - <_> - 4 - - 2 9 5 2 - <_> - 1 - - 5 27 5 1 - <_> - 8 - - 6 22 2 1 - <_> - 3 - - 12 19 2 7 - <_> - 5 - - 8 16 4 12 - <_> - 9 - - 6 17 3 1 - <_> - 2 - - 6 14 8 10 - <_> - 4 - - 4 28 8 3 - <_> - 4 - - 4 16 9 12 - <_> - 0 - - 7 29 1 2 - <_> - 4 - - 3 28 11 3 - <_> - 4 - - 4 16 5 2 - <_> - 8 - - 8 6 1 2 - <_> - 2 - - 7 8 1 4 - <_> - 1 - - 12 24 2 7 - <_> - 1 - - 7 3 2 6 - <_> - 4 - - 7 4 3 1 - <_> - 2 - - 1 29 2 2 - <_> - 2 - - 2 24 6 7 - <_> - 5 - - 7 27 2 1 - <_> - 0 - - 5 4 10 4 - <_> - 1 - - 8 11 2 2 - <_> - 2 - - 4 20 6 7 - <_> - 8 - - 6 28 4 3 - <_> - 5 - - 8 28 3 2 - <_> - 3 - - 1 0 13 1 - <_> - 2 - - 3 15 3 2 - <_> - 1 - - 8 27 1 2 - <_> - 5 - - 1 22 1 4 - <_> - 4 - - 1 26 11 4 - <_> - 5 - - 9 0 3 20 - <_> - 7 - - 7 21 2 4 - <_> - 0 - - 7 14 2 3 - <_> - 0 - - 6 4 3 24 - <_> - 7 - - 7 6 2 2 - <_> - 2 - - 7 13 1 1 - <_> - 8 - - 6 6 2 2 - <_> - 0 - - 7 10 3 1 - <_> - 8 - - 12 15 1 10 - <_> - 9 - - 7 15 3 2 - <_> - 7 - - 6 16 5 1 - <_> - 1 - - 7 18 2 7 - <_> - 1 - - 7 23 2 6 - <_> - 9 - - 2 5 9 1 - <_> - 0 - - 8 3 4 3 - <_> - 3 - - 4 2 4 9 - <_> - 4 - - 6 21 5 3 - <_> - 2 - - 4 9 4 2 - <_> - 9 - - 13 17 1 5 - <_> - 2 - - 9 25 1 4 - <_> - 0 - - 10 28 2 3 - <_> - 1 - - 4 10 10 1 - <_> - 0 - - 7 9 6 17 - <_> - 0 - - 10 10 1 10 - <_> - 7 - - 5 29 9 1 - <_> - 3 - - 0 17 5 14 - <_> - 3 - - 3 1 11 1 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 7 6 2 5 - <_> - 8 - - 7 8 2 1 - <_> - 4 - - 2 12 11 11 - <_> - 2 - - 9 30 4 1 - <_> - 3 - - 9 0 6 14 - <_> - 3 - - 4 12 2 15 - <_> - 4 - - 1 30 4 1 - <_> - 0 - - 1 16 6 8 - <_> - 2 - - 4 25 9 3 - <_> - 3 - - 10 4 5 25 - <_> - 2 - - 8 16 1 2 - <_> - 1 - - 6 7 3 3 - <_> - 7 - - 9 12 1 1 - <_> - 4 - - 3 5 8 3 - <_> - 5 - - 8 5 5 7 - <_> - 1 - - 5 8 8 1 - <_> - 2 - - 3 27 4 3 - <_> - 7 - - 2 27 8 1 - <_> - 4 - - 0 27 13 2 - <_> - 2 - - 6 17 3 11 - <_> - 8 - - 8 6 1 2 - <_> - 0 - - 11 0 2 3 - <_> - 4 - - 1 3 11 5 - <_> - 0 - - 3 28 5 3 - <_> - 1 - - 7 15 4 7 - <_> - 1 - - 2 27 10 1 - <_> - 0 - - 6 18 4 9 - <_> - 1 - - 4 24 9 1 - <_> - 9 - - 14 8 1 8 - <_> - 2 - - 8 9 2 1 - <_> - 2 - - 8 1 4 29 - <_> - 2 - - 4 2 3 4 - <_> - 2 - - 5 5 6 3 - <_> - 7 - - 2 14 8 5 - <_> - 7 - - 9 30 1 1 - <_> - 9 - - 5 16 3 7 - <_> - 7 - - 3 13 7 13 - <_> - 2 - - 14 22 1 7 - <_> - 4 - - 8 26 7 2 - <_> - 0 - - 3 8 4 1 - <_> - 3 - - 7 25 6 5 - <_> - 1 - - 6 4 4 2 - <_> - 4 - - 7 3 2 2 - <_> - 4 - - 3 8 10 23 - <_> - 1 - - 7 9 5 1 - <_> - 1 - - 4 13 9 6 - <_> - 1 - - 5 28 6 1 - <_> - 5 - - 10 11 4 1 - <_> - 2 - - 6 5 1 3 - <_> - 5 - - 9 4 6 9 - <_> - 1 - - 5 11 4 3 - <_> - 7 - - 7 6 5 3 - <_> - 7 - - 11 26 1 5 - <_> - 8 - - 4 6 8 2 - <_> - 0 - - 4 12 2 10 - <_> - 8 - - 1 16 3 7 - <_> - 5 - - 9 14 3 13 - <_> - 1 - - 13 22 2 1 - <_> - 4 - - 1 29 14 2 - <_> - 1 - - 3 27 10 4 - <_> - 3 - - 3 30 1 1 - <_> - 2 - - 0 23 4 8 - <_> - 0 - - 6 25 5 2 - <_> - 5 - - 13 7 1 24 - <_> - 3 - - 2 5 6 9 - <_> - 0 - - 7 15 3 2 - <_> - 0 - - 9 0 3 31 - <_> - 0 - - 7 10 3 1 - <_> - 3 - - 13 19 1 3 - <_> - 4 - - 12 9 3 19 - <_> - 8 - - 7 6 3 4 - <_> - 9 - - 8 15 1 2 - <_> - 9 - - 0 1 15 4 - <_> - 1 - - 6 4 7 4 - <_> - 5 - - 6 28 4 1 - <_> - 0 - - 6 19 4 10 - <_> - 2 - - 4 18 5 1 - <_> - 4 - - 3 1 10 24 - <_> - 3 - - 1 9 6 16 - <_> - 1 - - 9 16 2 3 - <_> - 4 - - 1 30 8 1 - <_> - 1 - - 4 24 5 5 - <_> - 3 - - 0 10 1 21 - <_> - 8 - - 7 5 2 3 - <_> - 1 - - 2 19 1 2 - <_> - 9 - - 7 20 1 1 - <_> - 9 - - 10 28 5 2 - <_> - 1 - - 6 19 4 5 - <_> - 9 - - 7 5 2 21 - <_> - 2 - - 5 19 6 10 - <_> - 4 - - 3 29 5 1 - <_> - 0 - - 4 22 1 7 - <_> - 9 - - 8 9 1 2 - <_> - 9 - - 7 3 2 6 - <_> - 0 - - 10 16 1 2 - <_> - 7 - - 1 0 2 28 - <_> - 5 - - 6 26 7 2 - <_> - 3 - - 10 23 4 6 - <_> - 2 - - 1 29 2 2 - <_> - 0 - - 3 3 3 19 - <_> - 0 - - 2 11 7 1 - <_> - 5 - - 9 2 1 14 - <_> - 7 - - 13 19 2 1 - <_> - 3 - - 5 26 3 1 - <_> - 2 - - 12 26 1 5 - <_> - 5 - - 11 7 1 24 - <_> - 4 - - 5 24 1 2 - <_> - 4 - - 5 11 2 19 - <_> - 5 - - 5 0 1 6 - <_> - 7 - - 8 13 2 2 - <_> - 3 - - 6 5 1 6 - <_> - 9 - - 10 30 1 1 - <_> - 1 - - 8 25 2 4 - <_> - 2 - - 6 9 4 2 - <_> - 5 - - 12 10 3 13 - <_> - 5 - - 9 30 6 1 - <_> - 8 - - 7 6 1 2 - <_> - 4 - - 13 12 2 1 - <_> - 8 - - 5 4 6 3 - <_> - 7 - - 4 30 8 1 - <_> - 1 - - 7 16 3 10 - <_> - 0 - - 9 14 3 4 - <_> - 1 - - 5 10 7 2 - <_> - 4 - - 7 2 1 27 - <_> - 8 - - 0 9 3 20 - <_> - 1 - - 6 22 1 2 - <_> - 8 - - 7 5 2 3 - <_> - 3 - - 0 12 3 19 - <_> - 9 - - 4 8 8 3 - <_> - 9 - - 5 4 4 3 - <_> - 0 - - 4 10 1 1 - <_> - 1 - - 14 2 1 14 - <_> - 0 - - 2 18 11 3 - <_> - 5 - - 7 26 8 2 - <_> - 1 - - 10 15 1 3 - <_> - 1 - - 4 22 1 6 - <_> - 5 - - 2 5 10 22 - <_> - 4 - - 12 27 2 4 - <_> - 0 - - 1 29 14 1 - <_> - 5 - - 3 4 2 5 - <_> - 4 - - 4 9 3 9 - <_> - 7 - - 11 25 2 6 - <_> - 0 - - 4 0 1 1 - <_> - 9 - - 8 13 2 5 - <_> - 9 - - 4 15 11 16 - <_> - 5 - - 11 16 1 7 - <_> - 1 - - 3 28 10 1 - <_> - 3 - - 4 9 2 19 - <_> - 7 - - 1 27 13 2 - <_> - 1 - - 6 23 4 4 - <_> - 7 - - 14 4 1 17 - <_> - 9 - - 7 22 5 5 - <_> - 4 - - 6 15 5 1 - <_> - 5 - - 0 24 5 1 - <_> - 3 - - 5 11 8 2 - <_> - 2 - - 1 25 9 2 - <_> - 3 - - 12 3 2 20 - <_> - 5 - - 5 22 1 8 - <_> - 4 - - 6 4 4 5 - <_> - 3 - - 1 15 2 16 - <_> - 0 - - 2 19 8 12 - <_> - 1 - - 10 9 1 2 - <_> - 1 - - 4 3 5 8 - <_> - 8 - - 8 10 1 6 - <_> - 5 - - 2 0 7 2 - <_> - 2 - - 4 16 6 12 - <_> - 5 - - 7 11 1 18 - <_> - 2 - - 5 3 6 2 - <_> - 0 - - 5 5 5 3 - <_> - 2 - - 0 0 4 7 - <_> - 1 - - 4 10 6 4 - <_> - 1 - - 8 27 2 3 - <_> - 0 - - 9 15 2 12 - <_> - 1 - - 6 22 4 2 - <_> - 5 - - 12 28 2 3 - <_> - 8 - - 0 20 3 2 - <_> - 8 - - 6 6 2 2 - <_> - 9 - - 12 12 3 6 - <_> - 3 - - 4 1 5 12 - <_> - 0 - - 6 10 3 2 - <_> - 2 - - 4 15 5 16 - <_> - 0 - - 2 1 8 2 - <_> - 5 - - 3 29 10 1 - <_> - 2 - - 9 9 4 2 - <_> - 1 - - 13 4 2 5 - <_> - 4 - - 3 15 10 15 - <_> - 5 - - 2 8 11 5 - <_> - 5 - - 8 22 1 5 - <_> - 7 - - 4 5 6 1 - <_> - 7 - - 2 27 1 3 - <_> - 4 - - 7 12 1 12 - <_> - 2 - - 0 30 4 1 - <_> - 8 - - 8 4 7 9 - <_> - 2 - - 8 14 2 4 - <_> - 3 - - 3 10 2 1 - <_> - 3 - - 3 0 9 10 - <_> - 3 - - 14 0 1 1 - <_> - 2 - - 0 25 10 2 - <_> - 2 - - 8 7 2 4 - <_> - 8 - - 4 30 9 1 - <_> - 8 - - 7 5 2 3 - <_> - 5 - - 10 11 4 2 - <_> - 8 - - 6 8 3 2 - <_> - 9 - - 5 1 4 2 - <_> - 0 - - 7 8 1 9 - <_> - 9 - - 6 0 3 11 - <_> - 0 - - 4 7 2 4 - <_> - 3 - - 6 6 8 1 - <_> - 3 - - 1 7 12 20 - <_> - 4 - - 6 21 3 1 - <_> - 1 - - 11 19 2 10 - <_> - 3 - - 4 7 1 21 - <_> - 3 - - 13 21 2 9 - <_> - 3 - - 0 8 7 4 - <_> - 2 - - 7 24 2 3 - <_> - 5 - - 6 28 3 1 - <_> - 4 - - 8 18 1 2 - <_> - 0 - - 2 9 8 17 - <_> - 4 - - 9 8 3 12 - <_> - 1 - - 2 25 9 6 - <_> - 2 - - 6 24 5 4 - <_> - 9 - - 7 18 2 2 - <_> - 9 - - 3 3 10 3 - <_> - 8 - - 7 6 3 4 - <_> - 4 - - 1 29 9 2 - <_> - 1 - - 2 27 7 3 - <_> - 3 - - 3 28 6 2 - <_> - 0 - - 7 17 5 10 - <_> - 2 - - 13 2 1 28 - <_> - 3 - - 10 16 2 10 - <_> - 8 - - 7 1 2 2 - <_> - 8 - - 7 5 2 3 - <_> - 2 - - 9 30 4 1 - <_> - 0 - - 9 17 3 6 - <_> - 0 - - 0 20 1 10 - <_> - 0 - - 6 12 5 6 - <_> - 1 - - 8 27 6 2 - <_> - 5 - - 0 29 9 2 - <_> - 4 - - 9 20 5 11 - <_> - 2 - - 7 14 6 12 - <_> - 8 - - 10 24 1 1 - <_> - 2 - - 1 17 14 9 - <_> - 1 - - 10 9 1 2 - <_> - 4 - - 8 7 5 13 - <_> - 9 - - 1 28 10 2 - <_> - 4 - - 4 20 7 1 - <_> - 4 - - 8 4 1 8 - <_> - 2 - - 6 23 4 8 - <_> - 3 - - 5 9 1 14 - <_> - 1 - - 2 11 12 5 - <_> - 0 - - 7 10 3 7 - <_> - 8 - - 7 6 1 2 - <_> - 0 - - 4 28 11 2 - <_> - 9 - - 8 15 1 2 - <_> - 0 - - 0 13 4 16 - <_> - 3 - - 3 21 6 8 - <_> - 5 - - 12 15 1 4 - <_> - 1 - - 6 12 3 1 - <_> - 5 - - 10 3 4 6 - <_> - 2 - - 9 9 2 6 - <_> - 0 - - 0 3 8 10 - <_> - 1 - - 8 27 5 1 - <_> - 7 - - 5 11 1 1 - <_> - 0 - - 4 8 2 2 - <_> - 4 - - 7 3 2 2 - <_> - 3 - - 2 0 4 16 - <_> - 7 - - 3 28 2 1 - <_> - 5 - - 1 20 1 6 - <_> - 5 - - 9 9 5 4 - <_> - 5 - - 2 0 11 1 - <_> - 4 - - 3 13 7 17 - <_> - 4 - - 6 29 2 2 - <_> - 2 - - 6 0 4 9 - <_> - 7 - - 6 5 3 18 - <_> - 2 - - 6 10 5 2 - <_> - 3 - - 3 11 4 12 - <_> - 4 - - 8 29 5 2 - <_> - 4 - - 4 4 6 5 - <_> - 1 - - 8 27 1 2 - <_> - 5 - - 1 29 3 2 - <_> - 4 - - 8 1 6 18 - <_> - 5 - - 3 26 7 1 - <_> - 8 - - 13 27 1 2 - <_> - 3 - - 0 6 5 25 - <_> - 4 - - 6 22 4 3 - <_> - 1 - - 7 23 2 6 - <_> - 8 - - 6 5 4 2 - <_> - 9 - - 6 8 2 2 - <_> - 9 - - 4 2 7 5 - <_> - 8 - - 4 10 7 7 - <_> - 5 - - 2 30 13 1 - <_> - 7 - - 6 5 4 6 - <_> - 0 - - 5 24 6 4 - <_> - 2 - - 4 14 6 12 - <_> - 3 - - 14 22 1 3 - <_> - 5 - - 6 15 1 5 - <_> - 0 - - 5 26 6 2 - <_> - 9 - - 4 20 3 1 - <_> - 3 - - 11 24 3 1 - <_> - 5 - - 9 4 4 9 - <_> - 7 - - 6 3 4 1 - <_> - 4 - - 5 4 6 5 - <_> - 2 - - 3 8 3 1 - <_> - 8 - - 5 24 2 1 - <_> - 7 - - 10 9 1 2 - <_> - 4 - - 11 28 4 3 - <_> - 0 - - 2 5 5 4 - <_> - 2 - - 11 10 1 16 - <_> - 0 - - 9 3 3 2 - <_> - 4 - - 1 5 7 18 - <_> - 4 - - 5 25 6 3 - <_> - 3 - - 10 0 4 15 - <_> - 2 - - 9 9 2 6 - <_> - 3 - - 5 0 9 1 - <_> - 3 - - 9 21 6 1 - <_> - 0 - - 5 19 8 2 - <_> - 2 - - 11 21 3 1 - <_> - 3 - - 7 14 1 2 - <_> - 5 - - 8 11 5 11 - <_> - 2 - - 9 17 1 2 - <_> - 1 - - 4 28 8 1 - <_> - 5 - - 4 8 3 2 - <_> - 0 - - 12 26 1 1 - <_> - 1 - - 5 13 6 13 - <_> - 3 - - 4 10 2 13 - <_> - 1 - - 7 5 2 4 - <_> - 2 - - 4 29 10 1 - <_> - 4 - - 5 21 5 4 - <_> - 8 - - 8 6 1 2 - <_> - 2 - - 4 18 5 10 - <_> - 2 - - 14 17 1 14 - <_> - 9 - - 8 15 1 2 - <_> - 1 - - 4 4 7 4 - <_> - 4 - - 7 3 2 4 - <_> - 4 - - 11 29 4 2 - <_> - 1 - - 8 11 2 1 - <_> - 2 - - 1 30 12 1 - <_> - 2 - - 6 7 5 2 - <_> - 1 - - 1 27 9 4 - <_> - 5 - - 14 2 1 2 - <_> - 0 - - 2 27 1 3 - <_> - 9 - - 1 1 7 3 - <_> - 1 - - 4 4 4 4 - <_> - 9 - - 8 8 1 1 - <_> - 5 - - 10 7 1 7 - <_> - 7 - - 11 0 4 9 - <_> - 2 - - 7 11 4 2 - <_> - 2 - - 3 24 9 4 - <_> - 5 - - 9 19 4 8 - <_> - 5 - - 5 21 1 5 - <_> - 8 - - 7 5 2 3 - <_> - 0 - - 7 12 3 5 - <_> - 8 - - 10 4 1 4 - <_> - 9 - - 6 15 2 2 - <_> - 5 - - 9 17 4 10 - <_> - 4 - - 1 9 8 1 - <_> - 5 - - 4 28 11 3 - <_> - 0 - - 7 0 3 8 - <_> - 5 - - 10 25 1 2 - <_> - 2 - - 6 10 3 1 - <_> - 3 - - 2 10 6 3 - <_> - 4 - - 12 22 3 2 - <_> - 2 - - 5 18 5 10 - <_> - 3 - - 14 2 1 22 - <_> - 4 - - 13 7 2 13 - <_> - 1 - - 7 28 5 1 - <_> - 1 - - 5 27 2 1 - <_> - 8 - - 7 7 3 1 - <_> - 4 - - 6 17 8 14 - <_> - 3 - - 3 2 9 1 - <_> - 7 - - 1 22 2 2 - <_> - 2 - - 7 30 7 1 - <_> - 3 - - 7 8 3 2 - <_> - 5 - - 8 10 6 3 - <_> - 8 - - 1 30 2 1 - <_> - 3 - - 7 14 1 2 - <_> - 2 - - 8 20 1 6 - <_> - 0 - - 6 18 6 10 - <_> - 2 - - 9 13 4 1 - <_> - 3 - - 11 20 4 4 - <_> - 2 - - 8 16 1 2 - <_> - 5 - - 9 9 4 4 - <_> - 2 - - 7 14 6 1 - <_> - 2 - - 1 10 12 6 - <_> - 7 - - 8 17 1 5 - <_> - 5 - - 0 21 5 3 - <_> - 8 - - 5 6 3 1 - <_> - 9 - - 4 8 7 17 - <_> - 8 - - 2 3 2 5 - <_> - 5 - - 0 30 8 1 - <_> - 4 - - 2 12 8 10 - <_> - 4 - - 4 27 8 1 - <_> - 7 - - 7 30 1 1 - <_> - 5 - - 11 9 1 6 - <_> - 5 - - 3 26 9 1 - <_> - 1 - - 3 10 10 1 - <_> - 0 - - 2 3 3 14 - <_> - 8 - - 7 11 5 3 - <_> - 7 - - 1 30 4 1 - <_> - 3 - - 11 19 2 6 - <_> - 3 - - 4 29 4 2 - <_> - 0 - - 5 24 4 3 - <_> - 2 - - 2 10 1 14 - <_> - 2 - - 14 1 1 11 - <_> - 5 - - 7 2 4 6 - <_> - 7 - - 6 3 4 1 - <_> - 3 - - 1 0 13 1 - <_> - 7 - - 6 5 9 3 - <_> - 2 - - 1 25 8 3 - <_> - 2 - - 9 23 1 8 - <_> - 9 - - 7 12 1 5 - <_> - 8 - - 8 6 1 2 - <_> - 1 - - 6 7 3 3 - <_> - 1 - - 3 29 4 1 - <_> - 0 - - 14 19 1 10 - <_> - 4 - - 14 1 1 26 - <_> - 2 - - 0 28 14 2 - <_> - 2 - - 4 20 9 7 - <_> - 5 - - 7 16 2 5 - <_> - 8 - - 4 6 8 2 - <_> - 0 - - 5 7 10 2 - <_> - 8 - - 6 0 3 3 - <_> - 9 - - 1 0 14 3 - <_> - 5 - - 4 3 6 1 - <_> - 9 - - 1 7 8 19 - <_> - 1 - - 4 28 7 1 - <_> - 9 - - 7 8 1 3 - <_> - 2 - - 5 5 10 2 - <_> - 4 - - 1 29 7 2 - <_> - 1 - - 9 10 1 3 - <_> - 3 - - 4 11 3 1 - <_> - 3 - - 0 7 9 15 - <_> - 0 - - 4 8 2 1 - <_> - 3 - - 12 25 2 1 - <_> - 2 - - 9 30 6 1 - <_> - 3 - - 1 25 12 2 - <_> - 3 - - 6 22 4 6 - <_> - 3 - - 11 24 1 1 - <_> - 0 - - 5 17 7 3 - <_> - 1 - - 2 27 5 1 - <_> - 2 - - 4 9 4 1 - <_> - 5 - - 3 28 5 1 - <_> - 1 - - 4 20 3 1 - <_> - 2 - - 3 5 6 24 - <_> - 7 - - 8 0 1 31 - <_> - 4 - - 7 2 2 15 - <_> - 2 - - 6 13 3 2 - <_> - 3 - - 4 19 4 6 - <_> - 9 - - 14 13 1 2 - <_> - 8 - - 7 5 2 3 - <_> - 9 - - 0 27 1 2 - <_> - 4 - - 3 12 9 15 - <_> - 9 - - 7 15 1 2 - <_> - 5 - - 9 7 4 10 - <_> - 5 - - 11 16 1 7 - <_> - 0 - - 3 28 6 1 - <_> - 7 - - 2 28 12 1 - <_> - 1 - - 13 17 1 5 - <_> - 4 - - 1 9 11 1 - <_> - 4 - - 6 4 9 5 - <_> - 2 - - 2 1 5 1 - <_> - 4 - - 7 18 2 2 - <_> - 1 - - 5 14 7 6 - <_> - 4 - - 6 29 8 2 - <_> - 1 - - 7 28 4 1 - <_> - 9 - - 6 23 3 7 - <_> - 0 - - 10 8 2 2 - <_> - 0 - - 9 20 1 7 - <_> - 8 - - 7 5 1 10 - <_> - 0 - - 5 3 6 6 - <_> - 8 - - 13 18 1 1 - <_> - 2 - - 4 23 5 4 - <_> - 5 - - 1 29 12 1 - <_> - 4 - - 6 22 2 4 - <_> - 1 - - 9 21 5 5 - <_> - 7 - - 10 28 2 2 - <_> - 1 - - 12 22 1 9 - <_> - 8 - - 7 5 2 3 - <_> - 5 - - 1 13 1 7 - <_> - 3 - - 0 27 1 3 - <_> - 3 - - 3 4 6 16 - <_> - 4 - - 2 28 9 1 - <_> - 0 - - 7 10 3 2 - <_> - 7 - - 12 6 2 1 - <_> - 1 - - 8 4 3 6 - <_> - 5 - - 7 20 8 5 - <_> - 7 - - 2 21 4 2 - <_> - 5 - - 11 29 4 2 - <_> - 5 - - 2 5 11 20 - <_> - 3 - - 10 18 1 3 - <_> - 4 - - 4 4 5 4 - <_> - 1 - - 6 10 6 3 - <_> - 3 - - 4 16 8 6 - <_> - 8 - - 11 20 2 9 - <_> - 1 - - 3 27 8 3 - <_> - 7 - - 7 19 3 5 - <_> - 2 - - 0 23 6 1 - <_> - 7 - - 14 23 1 6 - <_> - 1 - - 5 20 6 4 - <_> - 3 - - 5 8 1 18 - <_> - 1 - - 5 9 1 2 - <_> - 4 - - 0 8 8 4 - <_> - 1 - - 1 20 7 1 - <_> - 2 - - 13 2 2 22 - <_> - 2 - - 9 5 5 8 - <_> - 5 - - 7 17 2 1 - <_> - 3 - - 10 23 1 4 - <_> - 5 - - 7 23 7 5 - <_> - 5 - - 14 24 1 2 - <_> - 0 - - 5 6 7 2 - <_> - 3 - - 9 20 6 10 - <_> - 4 - - 0 30 13 1 - <_> - 2 - - 2 23 10 5 - <_> - 2 - - 4 8 4 3 - <_> - 7 - - 4 29 10 2 - <_> - 9 - - 7 17 2 1 - <_> - 7 - - 2 16 9 2 - <_> - 3 - - 0 20 4 10 - <_> - 8 - - 8 6 1 2 - <_> - 2 - - 4 2 3 2 - <_> - 4 - - 6 2 5 6 - <_> - 7 - - 7 5 2 1 - <_> - 0 - - 7 12 5 16 - <_> - 5 - - 5 2 7 21 - <_> - 3 - - 3 0 6 13 - <_> - 0 - - 4 7 2 2 - <_> - 0 - - 7 10 2 4 - <_> - 1 - - 4 27 2 1 - <_> - 9 - - 4 24 1 1 - <_> - 4 - - 1 3 1 16 - <_> - 2 - - 8 28 1 3 - <_> - 1 - - 8 12 2 14 - <_> - 0 - - 8 3 1 25 - <_> - 3 - - 3 9 2 14 - <_> - 0 - - 7 7 1 12 - <_> - 0 - - 0 2 7 25 - <_> - 4 - - 7 11 1 8 - <_> - 5 - - 7 29 8 1 - <_> - 4 - - 13 16 1 3 - <_> - 4 - - 7 7 4 5 - <_> - 3 - - 2 1 10 3 - <_> - 1 - - 8 10 2 4 - <_> - 2 - - 5 18 6 10 - <_> - 2 - - 13 13 2 13 - <_> - 2 - - 6 16 3 1 - <_> - 4 - - 1 9 12 22 - <_> - 5 - - 1 10 11 6 - <_> - 1 - - 2 23 3 2 - <_> - 5 - - 4 28 5 3 - <_> - 7 - - 2 28 12 1 - <_> - 1 - - 7 28 4 1 - <_> - 7 - - 5 11 1 1 - <_> - 3 - - 2 5 6 9 - <_> - 2 - - 7 23 3 6 - <_> - 8 - - 6 6 2 2 - <_> - 5 - - 6 6 2 4 - <_> - 8 - - 4 3 3 1 - <_> - 0 - - 2 28 13 1 - <_> - 7 - - 9 25 5 3 - <_> - 1 - - 11 23 1 3 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 7 1 - <_> - 8 - - 5 19 6 3 - <_> - 1 - - 1 10 14 2 - <_> - 1 - - 5 7 6 1 - <_> - 3 - - 1 24 9 2 - <_> - 9 - - 8 11 1 9 - <_> - 9 - - 2 3 11 3 - <_> - 2 - - 8 23 7 1 - <_> - 2 - - 2 5 9 4 - <_> - 7 - - 8 21 3 1 - <_> - 2 - - 5 3 6 2 - <_> - 5 - - 9 11 5 4 - <_> - 2 - - 10 5 2 10 - <_> - 7 - - 4 27 6 4 - <_> - 1 - - 5 11 6 17 - <_> - 0 - - 9 29 2 1 - <_> - 4 - - 0 28 6 3 - <_> - 0 - - 7 19 3 7 - <_> - 7 - - 6 14 2 1 - <_> - 4 - - 10 15 4 1 - <_> - 9 - - 5 9 1 2 - <_> - 4 - - 5 2 3 5 - <_> - 8 - - 7 6 1 2 - <_> - 8 - - 9 30 6 1 - <_> - 8 - - 9 10 3 9 - <_> - 9 - - 10 29 5 1 - <_> - 3 - - 0 1 9 23 - <_> - 3 - - 3 9 3 8 - <_> - 5 - - 4 20 2 2 - <_> - 1 - - 7 28 3 1 - <_> - 2 - - 6 5 3 2 - <_> - 1 - - 6 21 3 5 - <_> - 3 - - 10 18 1 8 - <_> - 3 - - 4 19 6 8 - <_> - 1 - - 8 1 1 18 - <_> - 0 - - 7 10 3 1 - <_> - 7 - - 1 11 3 3 - <_> - 1 - - 6 2 2 1 - <_> - 0 - - 5 25 7 3 - <_> - 4 - - 12 5 2 1 - <_> - 3 - - 13 23 2 8 - <_> - 0 - - 5 5 6 3 - <_> - 9 - - 3 15 10 7 - <_> - 8 - - 8 6 1 2 - <_> - 7 - - 10 30 1 1 - <_> - 2 - - 10 29 3 2 - <_> - 4 - - 4 9 9 3 - <_> - 4 - - 5 4 7 3 - <_> - 3 - - 6 22 7 2 - <_> - 3 - - 5 3 1 28 - <_> - 5 - - 1 26 10 5 - <_> - 4 - - 7 20 3 4 - <_> - 2 - - 6 19 4 2 - <_> - 2 - - 5 19 4 11 - <_> - 3 - - 1 28 11 2 - <_> - 2 - - 2 20 2 4 - <_> - 3 - - 6 5 9 3 - <_> - 4 - - 9 7 4 24 - <_> - 3 - - 6 0 5 1 - <_> - 2 - - 8 10 1 5 - <_> - 5 - - 2 3 4 28 - <_> - 3 - - 2 0 9 2 - <_> - 4 - - 2 28 12 3 - <_> - 1 - - 11 22 3 8 - <_> - 9 - - 5 8 1 6 - <_> - 0 - - 4 8 2 2 - <_> - 7 - - 7 12 2 3 - <_> - 9 - - 7 14 4 15 - <_> - 1 - - 4 26 6 3 - <_> - 9 - - 5 9 5 2 - <_> - 8 - - 6 5 4 2 - <_> - 3 - - 0 28 9 1 - <_> - 2 - - 5 17 4 14 - <_> - 0 - - 7 19 3 7 - <_> - 4 - - 4 20 7 1 - <_> - 0 - - 10 14 3 9 - <_> - 9 - - 7 1 1 2 - <_> - 0 - - 13 15 1 8 - <_> - 0 - - 5 2 3 6 - <_> - 9 - - 8 13 2 5 - <_> - 1 - - 1 7 8 1 - <_> - 4 - - 7 3 2 2 - <_> - 4 - - 10 3 3 15 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 8 4 5 - <_> - 8 - - 7 9 2 1 - <_> - 4 - - 3 8 9 13 - <_> - 2 - - 7 30 8 1 - <_> - 2 - - 10 9 4 3 - <_> - 2 - - 4 18 10 10 - <_> - 4 - - 0 29 15 1 - <_> - 5 - - 13 16 1 14 - <_> - 1 - - 6 27 5 2 - <_> - 5 - - 0 15 3 16 - <_> - 4 - - 9 28 5 2 - <_> - 2 - - 1 26 10 2 - <_> - 5 - - 2 13 1 9 - <_> - 3 - - 7 14 2 2 - <_> - 3 - - 1 10 14 4 - <_> - 0 - - 11 9 4 11 - <_> - 3 - - 0 21 15 1 - <_> - 8 - - 6 25 4 6 - <_> - 8 - - 7 7 3 1 - <_> - 3 - - 1 29 13 2 - <_> - 4 - - 9 9 6 3 - <_> - 1 - - 4 15 8 4 - <_> - 4 - - 7 18 2 2 - <_> - 5 - - 6 16 3 3 - <_> - 2 - - 1 11 6 15 - <_> - 1 - - 7 7 4 3 - <_> - 5 - - 8 4 4 20 - <_> - 1 - - 7 9 5 1 - <_> - 5 - - 13 8 1 22 - <_> - 1 - - 14 5 1 9 - <_> - 2 - - 9 21 4 10 - <_> - 8 - - 11 2 1 4 - <_> - 0 - - 7 20 1 4 - <_> - 5 - - 1 29 7 2 - <_> - 5 - - 7 16 1 3 - <_> - 1 - - 6 12 3 1 - <_> - 5 - - 7 10 7 1 - <_> - 9 - - 13 5 1 2 - <_> - 1 - - 6 26 5 4 - <_> - 2 - - 14 6 1 24 - <_> - 1 - - 13 29 2 2 - <_> - 9 - - 5 21 3 1 - <_> - 9 - - 5 4 6 4 - <_> - 2 - - 8 4 4 23 - <_> - 5 - - 5 28 8 2 - <_> - 5 - - 10 5 2 25 - <_> - 5 - - 14 24 1 6 - <_> - 4 - - 8 9 4 18 - <_> - 0 - - 8 9 1 1 - <_> - 2 - - 11 9 1 6 - <_> - 0 - - 3 15 9 15 - <_> - 0 - - 0 13 1 14 - <_> - 3 - - 5 30 2 1 - <_> - 9 - - 7 17 2 1 - <_> - 2 - - 5 4 6 6 - <_> - 5 - - 10 17 4 9 - <_> - 8 - - 7 5 2 3 - <_> - 2 - - 5 1 2 4 - <_> - 7 - - 4 30 2 1 - <_> - 1 - - 7 4 2 4 - <_> - 7 - - 10 10 1 4 - <_> - 2 - - 7 0 7 10 - <_> - 4 - - 3 6 10 17 - <_> - 3 - - 3 7 5 7 - <_> - 7 - - 11 27 3 2 - <_> - 0 - - 1 3 13 1 - <_> - 0 - - 7 0 3 8 - <_> - 1 - - 0 8 13 1 - <_> - 1 - - 9 23 1 1 - <_> - 3 - - 7 5 2 13 - <_> - 5 - - 2 10 2 6 - <_> - 5 - - 5 23 9 2 - <_> - 0 - - 7 9 1 19 - <_> - 8 - - 3 29 9 2 - <_> - 2 - - 8 30 5 1 - <_> - 7 - - 4 3 4 8 - <_> - 1 - - 3 27 8 3 - <_> - 2 - - 5 26 8 2 - <_> - 0 - - 0 15 1 13 - <_> - 4 - - 7 30 8 1 - <_> - 4 - - 5 4 7 3 - <_> - 7 - - 2 4 4 1 - <_> - 5 - - 8 4 5 9 - <_> - 8 - - 7 6 1 2 - <_> - 9 - - 3 28 3 2 - <_> - 5 - - 0 10 7 2 - <_> - 9 - - 10 9 1 2 - <_> - 9 - - 4 0 3 4 - <_> - 5 - - 13 21 2 5 - <_> - 0 - - 11 2 1 12 - <_> - 1 - - 11 21 3 10 - <_> - 4 - - 9 17 1 4 - <_> - 3 - - 7 14 1 2 - <_> - 3 - - 6 4 2 24 - <_> - 9 - - 12 28 1 1 - <_> - 3 - - 14 21 1 9 - <_> - 7 - - 13 0 1 26 - <_> - 0 - - 9 24 3 2 - <_> - 0 - - 7 19 4 9 - <_> - 2 - - 13 1 1 30 - <_> - 3 - - 9 16 2 15 - <_> - 5 - - 10 11 4 15 - <_> - 1 - - 9 15 6 13 - <_> - 3 - - 1 5 6 19 - <_> - 5 - - 4 19 1 10 - <_> - 5 - - 3 25 11 2 - <_> - 7 - - 5 29 6 1 - <_> - 3 - - 11 23 1 2 - <_> - 0 - - 0 3 8 10 - <_> - 2 - - 3 8 3 1 - <_> - 1 - - 8 11 2 1 - <_> - 1 - - 9 4 6 10 - <_> - 4 - - 1 2 14 10 - <_> - 4 - - 5 25 6 3 - <_> - 1 - - 5 18 4 2 - <_> - 4 - - 3 24 6 6 - <_> - 2 - - 3 1 7 27 - <_> - 1 - - 1 8 11 22 - <_> - 3 - - 9 0 4 2 - <_> - 2 - - 3 29 6 1 - <_> - 3 - - 2 24 12 4 - <_> - 4 - - 1 10 5 16 - <_> - 1 - - 5 27 6 4 - <_> - 9 - - 7 9 2 3 - <_> - 5 - - 3 7 7 13 - <_> - 8 - - 5 6 7 1 - <_> - 8 - - 7 6 2 5 - <_> - 9 - - 6 10 2 3 - <_> - 1 - - 8 4 2 5 - <_> - 7 - - 7 13 2 6 - <_> - 8 - - 10 26 3 2 - <_> - 4 - - 8 23 1 1 - <_> - 0 - - 3 29 5 2 - <_> - 4 - - 6 18 2 5 - <_> - 7 - - 3 19 1 12 - <_> - 4 - - 0 29 9 2 - <_> - 4 - - 2 15 6 13 - <_> - 2 - - 8 9 2 1 - <_> - 5 - - 8 0 6 7 - <_> - 8 - - 7 11 5 3 - <_> - 2 - - 7 8 4 2 - <_> - 1 - - 6 10 2 1 - <_> - 5 - - 10 4 4 4 - <_> - 4 - - 7 7 4 5 - <_> - 1 - - 2 24 3 1 - <_> - 4 - - 10 9 5 10 - <_> - 5 - - 2 21 1 10 - <_> - 3 - - 4 9 2 19 - <_> - 0 - - 0 2 1 28 - <_> - 2 - - 7 20 4 8 - <_> - 0 - - 7 10 3 1 - <_> - 5 - - 8 28 5 1 - <_> - 8 - - 8 6 1 2 - <_> - 5 - - 10 8 1 5 - <_> - 8 - - 8 3 1 1 - <_> - 7 - - 7 5 1 3 - <_> - 7 - - 0 27 15 1 - <_> - 3 - - 3 5 11 9 - <_> - 0 - - 13 15 2 1 - <_> - 0 - - 8 13 6 4 - <_> - 1 - - 9 28 1 1 - <_> - 9 - - 7 12 5 6 - <_> - 9 - - 6 2 1 5 - <_> - 7 - - 2 7 11 7 - <_> - 0 - - 1 17 1 14 - <_> - 0 - - 5 4 1 15 - <_> - 4 - - 1 29 12 1 - <_> - 2 - - 4 23 6 5 - <_> - 4 - - 3 8 1 17 - <_> - 2 - - 7 15 2 1 - <_> - 1 - - 3 28 7 1 - <_> - 8 - - 7 6 1 2 - <_> - 5 - - 9 1 1 12 - <_> - 1 - - 5 1 6 30 - <_> - 3 - - 5 1 1 30 - <_> - 3 - - 11 24 4 3 - <_> - 1 - - 4 10 7 4 - <_> - 4 - - 7 0 1 22 - <_> - 7 - - 4 27 11 2 - <_> - 2 - - 8 30 6 1 - <_> - 4 - - 3 20 10 5 - <_> - 0 - - 10 13 5 5 - <_> - 9 - - 7 7 1 8 - <_> - 7 - - 7 15 3 1 - <_> - 8 - - 1 10 14 3 - <_> - 1 - - 4 6 4 4 - <_> - 4 - - 1 6 6 3 - <_> - 0 - - 3 28 4 1 - <_> - 1 - - 5 27 4 2 - <_> - 5 - - 13 19 1 9 - <_> - 4 - - 1 9 14 2 - <_> - 2 - - 5 18 5 10 - <_> - 5 - - 14 0 1 7 - <_> - 4 - - 3 3 4 14 - <_> - 3 - - 4 29 5 2 - <_> - 2 - - 6 5 5 3 - <_> - 1 - - 3 8 9 1 - <_> - 4 - - 7 18 2 2 - <_> - 1 - - 4 13 9 6 - <_> - 1 - - 7 16 5 1 - <_> - 4 - - 12 27 2 4 - <_> - 2 - - 1 26 10 2 - <_> - 4 - - 7 12 2 11 - <_> - 0 - - 7 10 1 1 - <_> - 5 - - 9 9 5 4 - <_> - 8 - - 14 20 1 1 - <_> - 3 - - 1 22 2 7 - <_> - 3 - - 3 9 4 6 - <_> - 4 - - 6 22 4 4 - <_> - 5 - - 11 30 3 1 - <_> - 3 - - 4 22 3 4 - <_> - 5 - - 2 26 11 1 - <_> - 3 - - 6 15 3 1 - <_> - 0 - - 5 5 5 1 - <_> - 0 - - 6 12 4 15 - <_> - 2 - - 3 3 3 1 - <_> - 4 - - 2 9 10 20 - <_> - 4 - - 2 4 9 3 - <_> - 7 - - 8 20 1 4 - <_> - 7 - - 13 22 2 6 - <_> - 2 - - 6 1 4 27 - <_> - 3 - - 1 28 9 1 - <_> - 1 - - 3 11 9 7 - <_> - 8 - - 0 18 4 3 - <_> - 8 - - 6 6 2 2 - <_> - 9 - - 13 7 1 1 - <_> - 4 - - 6 2 3 17 - <_> - 9 - - 7 7 1 15 - <_> - 0 - - 6 22 6 6 - <_> - 9 - - 12 17 1 2 - <_> - 5 - - 14 24 1 2 - <_> - 7 - - 1 30 3 1 - <_> - 5 - - 8 10 2 5 - <_> - 8 - - 7 5 2 3 - <_> - 4 - - 9 14 2 5 - <_> - 8 - - 7 0 1 3 - <_> - 2 - - 10 5 2 10 - <_> - 5 - - 10 10 4 5 - <_> - 0 - - 6 0 7 8 - <_> - 1 - - 6 12 3 1 - <_> - 7 - - 2 11 6 10 - <_> - 4 - - 9 10 6 2 - <_> - 7 - - 1 30 3 1 - <_> - 3 - - 14 22 1 8 - <_> - 2 - - 6 2 3 7 - <_> - 2 - - 0 28 15 2 - <_> - 0 - - 6 16 7 11 - <_> - 1 - - 8 20 7 5 - <_> - 3 - - 10 18 1 8 - <_> - 4 - - 0 12 3 3 - <_> - 1 - - 7 4 2 4 - <_> - 8 - - 8 5 4 2 - <_> - 2 - - 5 1 2 4 - <_> - 8 - - 10 7 4 1 - <_> - 1 - - 3 26 8 5 - <_> - 7 - - 8 20 1 2 - <_> - 4 - - 1 0 10 23 - <_> - 4 - - 7 3 2 2 - <_> - 0 - - 0 23 4 6 - <_> - 5 - - 7 21 6 7 - <_> - 4 - - 0 30 13 1 - <_> - 1 - - 4 27 10 1 - <_> - 9 - - 6 9 4 4 - <_> - 8 - - 6 1 4 10 - <_> - 9 - - 14 19 1 1 - <_> - 9 - - 6 3 4 19 - <_> - 0 - - 8 9 1 1 - <_> - 3 - - 5 6 4 4 - <_> - 9 - - 8 15 1 3 - <_> - 0 - - 4 27 1 1 - <_> - 2 - - 5 25 4 3 - <_> - 1 - - 8 10 2 4 - <_> - 0 - - 3 9 3 1 - <_> - 7 - - 6 12 3 2 - <_> - 0 - - 0 15 4 13 - <_> - 2 - - 8 30 6 1 - <_> - 2 - - 8 20 3 11 - <_> - 0 - - 7 20 4 1 - <_> - 3 - - 2 0 9 2 - <_> - 0 - - 5 5 5 3 - <_> - 2 - - 6 10 4 4 - <_> - 4 - - 6 17 4 7 - <_> - 4 - - 8 6 3 17 - <_> - 1 - - 6 18 5 7 - <_> - 1 - - 5 28 6 1 - <_> - 7 - - 10 0 5 1 - <_> - 1 - - 13 6 2 8 - <_> - 4 - - 11 23 4 6 - <_> - 3 - - 5 12 2 15 - <_> - 3 - - 12 23 3 7 - <_> - 0 - - 7 10 3 1 - <_> - 0 - - 2 13 5 5 - <_> - 9 - - 0 0 4 1 - <_> - 2 - - 5 1 2 4 - <_> - 3 - - 9 20 3 2 - <_> - 4 - - 1 29 7 2 - <_> - 5 - - 2 3 9 11 - <_> - 3 - - 0 26 4 5 - <_> - 2 - - 0 11 1 5 - <_> - 0 - - 5 26 5 2 - <_> - 1 - - 8 12 1 3 - <_> - 0 - - 1 28 8 3 - <_> - 8 - - 7 6 1 2 - <_> - 9 - - 6 14 3 5 - <_> - 8 - - 13 7 2 21 - <_> - 2 - - 5 15 4 11 - <_> - 0 - - 9 26 6 2 - <_> - 5 - - 5 17 4 5 - <_> - 2 - - 10 0 3 22 - <_> - 7 - - 3 22 7 1 - <_> - 2 - - 8 2 7 7 - <_> - 3 - - 3 7 3 12 - <_> - 7 - - 8 5 1 1 - <_> - 3 - - 3 2 2 6 - <_> - 8 - - 5 6 3 1 - <_> - 0 - - 6 18 5 4 - <_> - 5 - - 9 29 6 2 - <_> - 4 - - 11 15 2 5 - <_> - 1 - - 8 27 2 1 - <_> - 4 - - 5 19 1 1 - <_> - 1 - - 7 9 5 1 - <_> - 4 - - 7 8 4 1 - <_> - 7 - - 4 28 5 1 - <_> - 4 - - 6 22 4 3 - <_> - 1 - - 7 15 2 14 - <_> - 5 - - 2 27 1 3 - <_> - 9 - - 7 15 1 2 - <_> - 9 - - 1 1 14 7 - <_> - 3 - - 12 19 3 9 - <_> - 5 - - 3 26 7 2 - <_> - 2 - - 1 0 4 11 - <_> - 1 - - 5 12 7 10 - <_> - 3 - - 1 6 8 4 - <_> - 2 - - 11 9 1 6 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 2 9 2 1 - <_> - 8 - - 5 10 5 6 - <_> - 8 - - 5 9 3 3 - <_> - 3 - - 2 28 8 3 - <_> - 7 - - 3 27 10 1 - <_> - 2 - - 4 29 6 1 - <_> - 5 - - 0 19 2 7 - <_> - 5 - - 10 8 2 17 - <_> - 2 - - 13 25 1 1 - <_> - 1 - - 9 10 1 3 - <_> - 4 - - 8 5 3 8 - <_> - 3 - - 5 21 4 7 - <_> - 4 - - 7 17 4 2 - <_> - 5 - - 7 30 4 1 - <_> - 8 - - 3 24 8 3 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 7 1 - <_> - 1 - - 0 13 8 18 - <_> - 5 - - 8 5 5 10 - <_> - 1 - - 6 9 7 6 - <_> - 4 - - 7 0 2 20 - <_> - 2 - - 8 16 1 1 - <_> - 2 - - 5 16 4 11 - <_> - 2 - - 8 10 1 5 - <_> - 5 - - 8 28 4 1 - <_> - 3 - - 7 26 7 1 - <_> - 2 - - 6 9 4 2 - <_> - 7 - - 8 5 4 3 - <_> - 7 - - 13 19 2 9 - <_> - 0 - - 1 9 3 5 - <_> - 3 - - 3 11 5 14 - <_> - 1 - - 3 17 7 9 - <_> - 3 - - 0 21 2 8 - <_> - 2 - - 8 26 4 1 - <_> - 0 - - 13 15 1 14 - <_> - 7 - - 7 27 7 1 - <_> - 4 - - 3 26 6 2 - <_> - 2 - - 3 29 6 1 - <_> - 4 - - 8 18 1 2 - <_> - 1 - - 7 3 5 5 - <_> - 4 - - 6 3 3 2 - <_> - 4 - - 0 27 5 4 - <_> - 5 - - 6 28 4 1 - <_> - 7 - - 5 7 10 2 - <_> - 1 - - 9 27 1 2 - <_> - 0 - - 7 19 3 7 - <_> - 7 - - 11 11 1 1 - <_> - 4 - - 6 7 1 16 - <_> - 7 - - 6 9 3 1 - <_> - 5 - - 4 28 11 3 - <_> - 7 - - 7 5 6 3 - <_> - 2 - - 0 25 10 2 - <_> - 4 - - 12 4 2 17 - <_> - 9 - - 6 19 5 2 - <_> - 8 - - 6 6 2 2 - <_> - 4 - - 6 21 3 2 - <_> - 2 - - 5 5 10 2 - <_> - 5 - - 2 0 7 2 - <_> - 5 - - 9 4 4 9 - <_> - 2 - - 6 10 4 4 - <_> - 0 - - 10 8 2 2 - <_> - 0 - - 9 6 4 3 - <_> - 2 - - 2 18 9 11 - <_> - 4 - - 3 9 12 2 - <_> - 4 - - 3 11 4 9 - <_> - 0 - - 6 13 3 4 - <_> - 1 - - 5 27 10 1 - <_> - 2 - - 8 28 5 1 - <_> - 8 - - 1 11 6 1 - <_> - 9 - - 7 9 2 7 - <_> - 8 - - 0 17 14 7 - <_> - 0 - - 7 10 1 1 - <_> - 0 - - 5 3 1 20 - <_> - 0 - - 4 6 1 19 - <_> - 4 - - 6 23 4 6 - <_> - 2 - - 6 5 1 3 - <_> - 5 - - 3 29 3 2 - <_> - 1 - - 8 4 5 20 - <_> - 1 - - 5 28 7 1 - <_> - 8 - - 0 3 4 23 - <_> - 4 - - 5 28 7 3 - <_> - 2 - - 5 25 5 2 - <_> - 5 - - 2 3 1 6 - <_> - 3 - - 9 8 2 1 - <_> - 3 - - 4 12 2 8 - <_> - 2 - - 14 12 1 15 - <_> - 5 - - 10 10 5 9 - <_> - 5 - - 10 3 4 6 - <_> - 4 - - 3 9 3 9 - <_> - 1 - - 7 6 2 10 - <_> - 4 - - 4 6 9 6 - <_> - 3 - - 4 18 11 11 - <_> - 1 - - 8 10 2 4 - <_> - 2 - - 10 8 3 4 - <_> - 7 - - 1 30 3 1 - <_> - 2 - - 12 12 2 19 - <_> - 5 - - 3 19 9 3 - <_> - 0 - - 4 9 1 6 - <_> - 5 - - 5 21 1 4 - <_> - 3 - - 2 12 9 9 - <_> - 0 - - 6 19 4 10 - <_> - 5 - - 10 26 1 3 - <_> - 0 - - 6 15 2 3 - <_> - 1 - - 11 22 2 8 - <_> - 9 - - 2 22 1 2 - <_> - 5 - - 12 30 3 1 - <_> - 2 - - 6 0 7 16 - <_> - 3 - - 8 21 2 1 - <_> - 7 - - 5 10 1 4 - <_> - 7 - - 3 5 1 1 - <_> - 1 - - 4 6 7 3 - <_> - 5 - - 5 1 1 2 - <_> - 4 - - 7 3 2 2 - <_> - 0 - - 7 18 4 2 - <_> - 9 - - 8 15 1 2 - <_> - 2 - - 4 20 9 4 - <_> - 8 - - 5 5 6 6 - <_> - 3 - - 4 28 7 2 - <_> - 5 - - 1 20 1 6 - <_> - 2 - - 2 26 7 1 - <_> - 0 - - 5 15 7 13 - <_> - 2 - - 9 3 4 1 - <_> - 9 - - 5 3 7 4 - <_> - 2 - - 1 23 7 6 - <_> - 4 - - 5 2 7 8 - <_> - 4 - - 10 14 4 2 - <_> - 3 - - 6 3 5 4 - <_> - 9 - - 13 30 2 1 - <_> - 3 - - 7 12 2 5 - <_> - 1 - - 6 26 5 4 - <_> - 7 - - 7 19 2 4 - <_> - 1 - - 6 29 5 2 - <_> - 5 - - 3 10 11 5 - <_> - 9 - - 9 21 3 10 - <_> - 2 - - 12 28 3 2 - <_> - 4 - - 3 0 5 18 - <_> - 5 - - 6 0 7 4 - <_> - 5 - - 0 29 14 2 - <_> - 5 - - 1 4 6 10 - <_> - 4 - - 8 22 1 4 - <_> - 3 - - 8 9 7 12 - <_> - 9 - - 6 16 4 2 - <_> - 8 - - 8 6 1 2 - <_> - 3 - - 0 14 3 15 - <_> - 2 - - 7 20 3 1 - <_> - 8 - - 1 29 13 2 - <_> - 3 - - 0 3 4 23 - <_> - 7 - - 2 5 8 4 - <_> - 2 - - 8 16 1 2 - <_> - 0 - - 6 22 2 5 - <_> - 3 - - 1 3 11 12 - <_> - 5 - - 0 15 15 9 - <_> - 9 - - 14 1 1 4 - <_> - 0 - - 7 10 3 1 - <_> - 1 - - 3 28 10 1 - <_> - 4 - - 0 29 10 1 - <_> - 0 - - 8 26 7 3 - <_> - 0 - - 6 24 4 4 - <_> - 1 - - 0 23 15 2 - <_> - 3 - - 2 0 9 2 - <_> - 8 - - 7 5 2 3 - <_> - 9 - - 6 20 9 2 - <_> - 5 - - 7 23 7 5 - <_> - 7 - - 6 0 5 1 - <_> - 5 - - 2 30 6 1 - <_> - 3 - - 5 5 1 14 - <_> - 4 - - 2 8 1 11 - <_> - 0 - - 1 2 7 20 - <_> - 4 - - 3 6 2 8 - <_> - 5 - - 4 16 5 7 - <_> - 0 - - 6 18 6 10 - <_> - 3 - - 9 20 2 9 - <_> - 0 - - 8 27 7 2 - <_> - 4 - - 9 20 4 1 - <_> - 2 - - 5 14 6 15 - <_> - 7 - - 3 4 10 10 - <_> - 5 - - 1 18 14 13 - <_> - 1 - - 6 11 6 1 - <_> - 1 - - 7 14 6 3 - <_> - 9 - - 6 11 3 4 - <_> - 0 - - 2 27 1 3 - <_> - 5 - - 9 4 1 11 - <_> - 2 - - 3 25 8 2 - <_> - 4 - - 4 12 6 13 - <_> - 1 - - 7 23 2 6 - <_> - 1 - - 5 15 6 2 - <_> - 2 - - 10 19 1 10 - <_> - 2 - - 5 25 4 3 - <_> - 5 - - 9 5 4 13 - <_> - 1 - - 7 3 2 6 - <_> - 4 - - 4 28 8 2 - <_> - 0 - - 7 11 1 5 - <_> - 8 - - 8 6 1 2 - <_> - 1 - - 7 1 3 2 - <_> - 8 - - 10 4 1 4 - <_> - 3 - - 5 27 10 3 - <_> - 7 - - 2 28 9 1 - <_> - 2 - - 7 17 3 5 - <_> - 4 - - 0 30 5 1 - <_> - 2 - - 8 11 1 7 - <_> - 9 - - 6 16 1 3 - <_> - 9 - - 2 0 11 1 - <_> - 0 - - 6 3 5 1 - <_> - 0 - - 5 5 6 3 - <_> - 0 - - 7 29 1 2 - <_> - 5 - - 2 18 11 3 - <_> - 2 - - 3 8 3 1 - <_> - 3 - - 5 0 1 27 - <_> - 7 - - 12 11 2 1 - <_> - 5 - - 1 28 9 3 - <_> - 0 - - 6 19 2 12 - <_> - 2 - - 8 28 5 1 - <_> - 3 - - 0 5 3 23 - <_> - 4 - - 7 18 2 2 - <_> - 1 - - 4 17 8 2 - <_> - 4 - - 6 29 5 2 - <_> - 0 - - 4 7 2 4 - <_> - 9 - - 7 1 1 2 - <_> - 2 - - 10 0 1 19 - <_> - 9 - - 8 15 1 7 - <_> - 4 - - 6 22 4 3 - <_> - 1 - - 7 3 2 6 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 6 1 4 - <_> - 8 - - 1 10 1 6 - <_> - 1 - - 6 12 3 1 - <_> - 1 - - 3 3 7 3 - <_> - 8 - - 7 28 3 3 - <_> - 4 - - 9 18 2 4 - <_> - 1 - - 9 18 4 11 - <_> - 4 - - 6 21 4 1 - <_> - 5 - - 9 9 4 20 - <_> - 2 - - 13 21 2 5 - <_> - 0 - - 13 21 2 1 - <_> - 5 - - 6 28 5 2 - <_> - 2 - - 1 26 10 2 - <_> - 1 - - 4 3 2 19 - <_> - 9 - - 9 12 1 2 - <_> - 8 - - 6 6 2 2 - <_> - 3 - - 11 20 1 10 - <_> - 4 - - 6 4 5 3 - <_> - 7 - - 6 3 9 2 - <_> - 3 - - 3 1 6 14 - <_> - 4 - - 2 9 12 12 - <_> - 4 - - 7 10 2 10 - <_> - 7 - - 6 27 8 2 - <_> - 2 - - 6 10 3 1 - <_> - 2 - - 7 10 7 7 - <_> - 2 - - 5 30 10 1 - <_> - 5 - - 9 25 2 3 - <_> - 9 - - 3 28 12 1 - <_> - 2 - - 10 25 1 4 - <_> - 1 - - 5 20 2 1 - <_> - 5 - - 9 6 6 7 - <_> - 0 - - 11 10 1 12 - <_> - 3 - - 7 14 1 2 - <_> - 3 - - 3 10 5 4 - <_> - 3 - - 0 0 9 4 - <_> - 8 - - 2 21 5 1 - <_> - 8 - - 6 5 4 2 - <_> - 1 - - 7 28 4 1 - <_> - 4 - - 7 23 1 2 - <_> - 1 - - 7 24 2 4 - <_> - 2 - - 6 13 6 18 - <_> - 0 - - 5 28 8 1 - <_> - 0 - - 11 20 1 2 - <_> - 0 - - 7 8 2 3 - <_> - 2 - - 6 6 4 3 - <_> - 1 - - 9 10 1 3 - <_> - 1 - - 8 4 2 5 - <_> - 3 - - 2 21 7 6 - <_> - 3 - - 0 24 11 3 - <_> - 4 - - 3 28 7 2 - <_> - 2 - - 11 11 2 3 - <_> - 0 - - 9 3 3 2 - <_> - 5 - - 6 10 4 10 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 4 5 20 - <_> - 0 - - 6 24 7 3 - <_> - 8 - - 8 18 1 1 - <_> - 1 - - 2 2 5 14 - <_> - 0 - - 4 25 1 3 - <_> - 5 - - 8 3 4 11 - <_> - 7 - - 11 13 1 3 - <_> - 5 - - 3 0 12 1 - <_> - 4 - - 11 13 3 7 - <_> - 5 - - 4 28 10 2 - <_> - 2 - - 11 19 1 12 - <_> - 0 - - 5 20 1 3 - <_> - 5 - - 10 8 3 19 - <_> - 3 - - 0 26 6 1 - <_> - 2 - - 0 12 2 4 - <_> - 4 - - 7 8 5 6 - <_> - 5 - - 6 8 4 6 - <_> - 1 - - 4 7 6 1 - <_> - 9 - - 8 9 1 2 - <_> - 3 - - 4 11 11 5 - <_> - 8 - - 8 6 1 2 - <_> - 5 - - 0 14 2 15 - <_> - 0 - - 4 5 10 2 - <_> - 5 - - 7 12 1 3 - <_> - 3 - - 4 1 2 25 - <_> - 8 - - 12 18 2 2 - <_> - 3 - - 0 27 3 3 - <_> - 2 - - 6 17 3 11 - <_> - 1 - - 7 28 3 1 - <_> - 4 - - 5 18 5 2 - <_> - 0 - - 8 16 3 6 - <_> - 2 - - 7 23 2 2 - <_> - 0 - - 9 8 3 5 - <_> - 0 - - 7 19 6 4 - <_> - 0 - - 3 12 12 3 - <_> - 3 - - 8 18 1 1 - <_> - 1 - - 2 6 9 3 - <_> - 2 - - 7 2 5 2 - <_> - 1 - - 5 9 1 2 - <_> - 4 - - 0 0 11 14 - <_> - 2 - - 7 8 4 2 - <_> - 2 - - 8 9 2 1 - <_> - 2 - - 3 25 7 3 - <_> - 1 - - 5 27 5 1 - <_> - 0 - - 5 2 3 6 - <_> - 7 - - 0 19 7 2 - <_> - 2 - - 5 1 1 4 - <_> - 2 - - 3 22 1 2 - <_> - 5 - - 8 9 4 4 - <_> - 7 - - 4 30 3 1 - <_> - 4 - - 4 9 9 3 - <_> - 2 - - 7 11 2 3 - <_> - 0 - - 10 24 1 1 - <_> - 7 - - 1 27 4 2 - <_> - 1 - - 14 8 1 5 - <_> - 0 - - 12 22 3 7 - <_> - 4 - - 7 0 2 18 - <_> - 7 - - 8 20 1 2 - <_> - 8 - - 8 4 2 26 - <_> - 9 - - 8 15 1 3 - <_> - 1 - - 0 5 15 19 - <_> - 2 - - 4 9 4 1 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 3 1 - <_> - 8 - - 14 12 1 4 - <_> - 2 - - 1 6 10 1 - <_> - 0 - - 11 25 1 3 - <_> - 1 - - 6 19 4 8 - <_> - 7 - - 1 14 8 4 - <_> - 3 - - 0 25 11 2 - <_> - 9 - - 2 29 13 1 - <_> - 0 - - 3 27 1 4 - <_> - 1 - - 7 27 4 4 - <_> - 4 - - 5 4 7 3 - <_> - 0 - - 7 11 2 3 - <_> - 0 - - 8 17 4 4 - <_> - 2 - - 13 8 1 14 - <_> - 3 - - 13 26 2 4 - <_> - 0 - - 3 2 6 6 - <_> - 2 - - 5 5 7 16 - <_> - 2 - - 2 8 4 1 - <_> - 3 - - 4 0 1 14 - <_> - 9 - - 6 0 6 2 - <_> - 9 - - 5 14 2 4 - <_> - 1 - - 1 3 13 1 - <_> - 8 - - 6 6 2 2 - <_> - 8 - - 4 26 8 2 - <_> - 3 - - 8 17 4 1 - <_> - 4 - - 2 2 11 2 - <_> - 0 - - 6 16 6 10 - <_> - 9 - - 0 22 1 1 - <_> - 0 - - 4 29 3 2 - <_> - 4 - - 9 22 6 8 - <_> - 1 - - 8 26 4 3 - <_> - 3 - - 5 1 7 11 - <_> - 4 - - 7 29 3 1 - <_> - 4 - - 3 12 9 15 - <_> - 7 - - 0 28 14 3 - <_> - 2 - - 8 8 4 1 - <_> - 7 - - 6 9 3 1 - <_> - 7 - - 8 30 1 1 - <_> - 5 - - 4 30 11 1 - <_> - 5 - - 3 5 12 16 - <_> - 5 - - 12 13 1 6 - <_> - 0 - - 7 10 3 2 - <_> - 0 - - 3 0 4 14 - <_> - 2 - - 4 5 3 4 - <_> - 2 - - 5 19 4 1 - <_> - 1 - - 6 10 3 2 - <_> - 5 - - 1 1 12 1 - <_> - 9 - - 10 19 2 4 - <_> - 9 - - 1 0 13 27 - <_> - 8 - - 8 3 1 5 - <_> - 1 - - 7 28 3 1 - <_> - 9 - - 8 9 2 5 - <_> - 1 - - 5 4 6 9 - <_> - 7 - - 6 3 4 1 - <_> - 7 - - 14 24 1 5 - <_> - 3 - - 2 17 1 12 - <_> - 0 - - 4 14 7 16 - <_> - 1 - - 6 2 1 25 - <_> - 0 - - 0 13 4 16 - <_> - 4 - - 12 8 3 4 - <_> - 0 - - 0 18 13 4 - <_> - 8 - - 2 30 1 1 - <_> - 8 - - 7 7 3 1 - <_> - 9 - - 10 28 1 2 - <_> - 8 - - 11 1 3 10 - <_> - 4 - - 1 30 4 1 - <_> - 1 - - 2 22 5 8 - <_> - 9 - - 4 25 6 6 - <_> - 0 - - 4 6 1 6 - <_> - 5 - - 12 30 3 1 - <_> - 3 - - 7 10 1 1 - <_> - 2 - - 4 26 7 2 - <_> - 1 - - 5 1 4 3 - <_> - 4 - - 9 20 1 4 - <_> - 3 - - 2 2 7 9 - <_> - 7 - - 13 0 2 3 - <_> - 8 - - 6 6 1 2 - <_> - 3 - - 3 28 8 2 - <_> - 7 - - 13 24 1 3 - <_> - 2 - - 3 29 9 1 - <_> - 7 - - 7 13 3 1 - <_> - 7 - - 1 0 4 5 - <_> - 0 - - 5 5 6 3 - <_> - 0 - - 4 3 9 2 - <_> - 3 - - 2 17 2 2 - <_> - 0 - - 12 5 1 18 - <_> - 9 - - 7 10 1 1 - <_> - 9 - - 3 5 9 1 - <_> - 8 - - 8 12 4 1 - <_> - 3 - - 3 9 3 18 - <_> - 7 - - 8 26 1 1 - <_> - 1 - - 9 10 1 3 - <_> - 4 - - 5 10 5 21 - <_> - 1 - - 9 27 2 2 - <_> - 7 - - 6 9 3 1 - <_> - 2 - - 4 21 6 7 - <_> - 4 - - 2 18 9 8 - <_> - 5 - - 4 24 10 7 - <_> - 4 - - 6 4 5 3 - <_> - 2 - - 11 23 4 1 - <_> - 3 - - 5 3 1 28 - <_> - 9 - - 6 20 1 3 - <_> - 9 - - 4 25 5 2 - <_> - 4 - - 3 0 10 21 - <_> - 5 - - 9 11 6 17 - <_> - 0 - - 1 28 14 2 - <_> - 2 - - 6 10 3 1 - <_> - 0 - - 6 25 5 2 - <_> - 0 - - 6 27 7 1 - <_> - 8 - - 4 6 7 2 - <_> - 4 - - 12 15 3 5 - <_> - 3 - - 8 13 1 5 - <_> - 0 - - 6 22 2 5 - <_> - 4 - - 2 3 6 11 - <_> - 8 - - 1 17 6 10 - <_> - 9 - - 3 28 5 1 - <_> - 4 - - 0 30 10 1 - <_> - 1 - - 6 25 3 4 - <_> - 5 - - 10 8 3 8 - <_> - 7 - - 13 0 2 25 - <_> - 7 - - 5 30 8 1 - <_> - 3 - - 6 21 1 3 - <_> - 9 - - 6 8 3 4 - <_> - 9 - - 6 5 3 3 - <_> - 5 - - 4 29 10 1 - <_> - 1 - - 9 23 1 3 - <_> - 5 - - 9 11 4 20 - <_> - 9 - - 0 22 11 1 - <_> - 1 - - 5 9 1 2 - <_> - 5 - - 7 26 4 1 - <_> - 0 - - 6 23 1 7 - <_> - 3 - - 10 25 2 1 - <_> - 2 - - 3 29 6 2 - <_> - 1 - - 13 2 1 14 - <_> - 3 - - 6 26 8 2 - <_> - 1 - - 11 3 1 5 - <_> - 4 - - 3 12 12 19 - <_> - 1 - - 5 28 6 1 - <_> - 3 - - 10 30 5 1 - <_> - 7 - - 0 26 5 4 - <_> - 1 - - 5 11 3 2 - <_> - 0 - - 3 1 4 14 - <_> - 1 - - 7 4 2 4 - <_> - 3 - - 3 28 8 2 - <_> - 0 - - 7 19 3 7 - <_> - 4 - - 1 29 9 2 - <_> - 0 - - 6 10 3 2 - <_> - 5 - - 8 3 5 8 - <_> - 8 - - 7 4 1 10 - <_> - 1 - 1024 - - <_> - -9.1824179887771606e-01 - - 1 2 0 2.3365000000000000e+03 0 -1 1 8.3500000000000000e+01 - -2 -3 2 2.9050000000000000e+02 - - -1.9275911152362823e-01 -9.1824179887771606e-01 - 7.1353024244308472e-01 -4.2490604519844055e-01 - <_> - -1.3566842079162598e+00 - - 1 2 3 4.5500000000000000e+01 0 -1 4 5.6350000000000000e+02 - -2 -3 5 1.5150000000000000e+02 - - -5.7629632949829102e-01 -9.8518949747085571e-01 - 5.2551275491714478e-01 -4.3844240903854370e-01 - <_> - -1.6601251363754272e+00 - - 1 2 6 1.6500000000000000e+01 0 -1 7 1.3417500000000000e+04 - -2 -3 8 3.2850000000000000e+02 - - -1.4283974468708038e-01 -7.6407837867736816e-01 - 6.7369973659515381e-01 -3.0344095826148987e-01 - <_> - -1.7210527658462524e+00 - - 1 2 9 8.3500000000000000e+01 0 -1 10 5.7950000000000000e+02 - -2 -3 11 5.2165000000000000e+03 - - 2.7889367938041687e-01 -7.9177212715148926e-01 - -5.5426341295242310e-01 4.3222227692604065e-01 - <_> - -1.8265457153320312e+00 - - 1 2 12 1.0500000000000000e+01 0 -1 13 2.2500000000000000e+01 - -2 -3 14 2.4415000000000000e+03 - - -4.9315950274467468e-01 5.7787740230560303e-01 - -5.9864276647567749e-01 1.2489826977252960e-01 - <_> - -1.6793980598449707e+00 - - 1 2 15 1.8205000000000000e+03 0 -1 16 2.2445000000000000e+03 - -2 -3 17 2.5000000000000000e+00 - - 3.1089431140571833e-03 8.0035644769668579e-01 - 9.4315350055694580e-02 -5.7833504676818848e-01 - <_> - -1.5442515611648560e+00 - - 1 2 18 3.4500000000000000e+01 0 -1 19 4293. -2 -3 20 - 1.5545000000000000e+03 - - -6.1589881777763367e-02 -9.2765086889266968e-01 - 2.9719692468643188e-01 -6.1971640586853027e-01 - <_> - -1.8196758031845093e+00 - - 1 2 21 1.1500000000000000e+01 0 -1 22 2.1500000000000000e+01 - -2 -3 23 6.5500000000000000e+01 - - -4.4309207797050476e-01 4.5466747879981995e-01 - -6.7477458715438843e-01 -2.8885286301374435e-02 - <_> - -1.6610682010650635e+00 - - 1 2 24 5.0950000000000000e+02 0 -1 25 27777. -2 -3 26 - 2.4715000000000000e+03 - - 5.2616196870803833e-01 -4.0959128737449646e-01 - 5.7547372579574585e-01 -3.0137240886688232e-01 - <_> - -1.5959914922714233e+00 - - 1 2 27 5.0000000000000000e-01 0 -1 28 2.5000000000000000e+00 - -2 -3 29 1.7450000000000000e+02 - - -7.2784364223480225e-01 4.9311363697052002e-01 - -6.9787085056304932e-01 -1.9121825695037842e-02 - <_> - -1.1109679937362671e+00 - - 1 2 30 1.7500000000000000e+01 0 -1 31 1.0500000000000000e+01 - -2 -3 32 1.6835000000000000e+03 - - -6.9948041439056396e-01 4.8122453689575195e-01 - -3.8041490316390991e-01 7.8814607858657837e-01 - <_> - -1.3001022338867188e+00 - - 1 2 33 5.5000000000000000e+00 0 -1 34 1.4500000000000000e+01 - -2 -3 35 4.3500000000000000e+01 - - -6.2981390953063965e-01 4.1833153367042542e-01 - -5.5634695291519165e-01 2.0092706382274628e-01 - <_> - -1.2552416324615479e+00 - - 1 2 36 1.5000000000000000e+00 0 -1 37 6.0500000000000000e+01 - -2 -3 38 3.5000000000000000e+00 - - -2.3229536414146423e-01 4.8632022738456726e-01 - 1.0821102559566498e-01 -5.4847836494445801e-01 - <_> - -9.5746147632598877e-01 - - 1 2 39 5.0000000000000000e-01 0 -1 40 5.5000000000000000e+00 - -2 -3 41 1.5500000000000000e+01 - - -9.0162736177444458e-01 3.7442612648010254e-01 - -1.9469287246465683e-02 -6.7447566986083984e-01 - <_> - -8.0001801252365112e-01 - - 1 2 42 3.7500000000000000e+01 0 -1 43 3.1595000000000000e+03 - -2 -3 44 1.2465000000000000e+03 - - 1.6209787130355835e-01 -9.0783798694610596e-01 - 2.1256938576698303e-01 -7.1468418836593628e-01 - <_> - -1.2121976613998413e+00 - - 1 2 45 5.2500000000000000e+01 0 -1 46 5.0000000000000000e-01 - -2 -3 47 7606. - - 3.2595899701118469e-01 -4.1217961907386780e-01 - -1.9886784255504608e-01 7.2802597284317017e-01 - <_> - -1.0095448493957520e+00 - - 1 2 48 1.2645000000000000e+03 0 -1 49 1.3995000000000000e+03 - -2 -3 50 17217. - - 1.4752689003944397e-01 -4.5374435186386108e-01 - 7.4328523874282837e-01 -3.0514815449714661e-01 - <_> - -8.2125085592269897e-01 - - 1 2 51 1.2450000000000000e+02 0 -1 52 4.5000000000000000e+00 - -2 -3 53 6.5500000000000000e+01 - - -9.2579865455627441e-01 1.8829397857189178e-01 - 6.2581911683082581e-02 -9.3276327848434448e-01 - <_> - -8.5726839303970337e-01 - - 1 2 54 1.2500000000000000e+01 0 -1 55 3.5000000000000000e+00 - -2 -3 56 2.4500000000000000e+01 - - -9.3079727888107300e-01 5.4834127426147461e-01 - -7.4245822429656982e-01 -3.6017529666423798e-02 - <_> - -3.7141740322113037e-01 - - 1 2 57 2.5000000000000000e+00 0 -1 58 9.0500000000000000e+01 - -2 -3 59 1.1450000000000000e+02 - - -2.6328250765800476e-01 4.8585096001625061e-01 - -4.2119786143302917e-01 3.4775453805923462e-01 - <_> - -2.9893672466278076e-01 - - 1 2 60 1.8150000000000000e+02 0 -1 61 1.6500000000000000e+01 - -2 -3 62 4.3500000000000000e+01 - - 3.9467984437942505e-01 -2.8166392445564270e-01 - -6.6281062364578247e-01 1.6430251300334930e-02 - <_> - -5.2570968866348267e-01 - - 1 2 63 2.8935000000000000e+03 0 -1 64 7.5000000000000000e+00 - -2 -3 65 10970. - - 2.7466580271720886e-01 -8.6028146743774414e-01 - 3.1712412834167480e-01 -2.8514662384986877e-01 - <_> - -3.3981230854988098e-01 - - 1 2 66 4.3500000000000000e+01 0 -1 67 5.0500000000000000e+01 - -2 -3 68 1.2950000000000000e+02 - - 1.5071904659271240e-01 -6.7942529916763306e-01 - 3.4536096453666687e-01 -5.4448747634887695e-01 - <_> - -3.2909783720970154e-01 - - 1 2 69 4.0500000000000000e+01 0 -1 70 9.8750000000000000e+02 - -2 -3 71 4.5000000000000000e+00 - - -2.0841991528868675e-02 -6.2886476516723633e-01 - 7.4424326419830322e-01 9.9408831447362900e-03 - <_> - -6.2298193573951721e-02 - - 1 2 72 4.6085000000000000e+03 0 -1 73 3.8500000000000000e+01 - -2 -3 74 5.7850000000000000e+02 - - -7.5020188093185425e-01 5.4516482353210449e-01 - 5.7250261306762695e-01 -9.2801190912723541e-02 - <_> - -1.5894679725170135e-01 - - 1 2 75 5.0000000000000000e-01 0 -1 76 1.5000000000000000e+00 - -2 -3 77 2.5750000000000000e+02 - - -7.4547845125198364e-01 4.9561309814453125e-01 - 5.8993577957153320e-01 -3.1674036383628845e-01 - <_> - 4.0653568506240845e-01 - - 1 2 78 2.5335000000000000e+03 0 -1 79 2.4500000000000000e+01 - -2 -3 80 8.9905000000000000e+03 - - 2.6614660024642944e-01 -3.2352310419082642e-01 - 6.4184278249740601e-01 -3.7356415390968323e-01 - <_> - -1.8076049163937569e-03 - - 1 2 81 5.0000000000000000e-01 0 -1 82 1.2500000000000000e+01 - -2 -3 83 2.4500000000000000e+01 - - -4.9844339489936829e-01 4.9451184272766113e-01 - -5.1162499189376831e-01 1.4680899679660797e-01 - <_> - 2.9161420464515686e-01 - - 1 2 84 1.3500000000000000e+01 0 -1 85 1.2500000000000000e+01 - -2 -3 86 1.5115000000000000e+03 - - -7.0512425899505615e-01 4.7449973225593567e-01 - -4.5257037878036499e-01 1.9849643111228943e-01 - <_> - 2.6676848530769348e-01 - - 1 2 87 5.0500000000000000e+01 0 -1 88 6.5500000000000000e+01 - -2 -3 89 1.4650000000000000e+02 - - -2.0592364668846130e-01 3.0830872058868408e-01 - -8.7131351232528687e-01 8.3726328611373901e-01 - <_> - 1.9189073145389557e-01 - - 1 2 90 3.6050000000000000e+02 0 -1 91 1.0350000000000000e+02 - -2 -3 92 7.4500000000000000e+01 - - -8.2260921597480774e-02 5.0565969944000244e-01 - -9.1390937566757202e-01 -1.8902081251144409e-01 - <_> - 5.3643327951431274e-01 - - 1 2 93 2.0500000000000000e+01 0 -1 94 4.4500000000000000e+01 - -2 -3 95 7.3785000000000000e+03 - - -8.0922812223434448e-01 3.4454253315925598e-01 - -1.5407036058604717e-02 -7.4269419908523560e-01 - <_> - 4.3825522065162659e-01 - - 1 2 96 1.0224500000000000e+04 0 -1 97 4.5000000000000000e+00 - -2 -3 98 4.0035000000000000e+03 - - 2.9326722025871277e-01 -3.9492443203926086e-01 - 6.2416630983352661e-01 -1.4834968745708466e-01 - <_> - 9.0073168277740479e-01 - - 1 2 99 2.5000000000000000e+00 0 -1 100 - 3.8395000000000000e+03 -2 -3 101 5.5000000000000000e+00 - - 6.1362767219543457e-01 -5.9424567967653275e-02 - -6.8450838327407837e-01 2.6574308052659035e-02 - <_> - 1.0332926511764526e+00 - - 1 2 102 5.4500000000000000e+01 0 -1 103 - 5.0000000000000000e-01 -2 -3 104 4.5000000000000000e+00 - - 1.4594553411006927e-01 -8.0310869216918945e-01 - 4.9081337451934814e-01 -1.0566046833992004e-01 - <_> - 1.2107890844345093e+00 - - 1 2 105 2.5000000000000000e+00 0 -1 106 608. -2 -3 107 - 1.0250000000000000e+02 - - -6.9540244340896606e-01 8.6690729856491089e-01 - 1.7749644815921783e-01 -8.1727051734924316e-01 - <_> - 1.1315129995346069e+00 - - 1 2 108 1.0450000000000000e+02 0 -1 109 106. -2 -3 110 - 4.7350000000000000e+02 - - -4.4595441222190857e-01 4.8524639010429382e-01 - 3.8998365402221680e-01 -4.3752849102020264e-01 - <_> - 1.3212180137634277e+00 - - 1 2 111 5.0000000000000000e-01 0 -1 112 - 3.1500000000000000e+01 -2 -3 113 8.5000000000000000e+00 - - -7.6347488164901733e-01 6.1377680301666260e-01 - 3.2435289025306702e-01 -3.2852920889854431e-01 - <_> - 1.5280661582946777e+00 - - 1 2 114 31599. 0 -1 115 8.7950000000000000e+02 -2 -3 116 - 1.4950000000000000e+02 - - -4.4413706660270691e-01 2.0684811472892761e-01 - -9.2896610498428345e-01 7.2677606344223022e-01 - <_> - 1.3401062488555908e+00 - - 1 2 117 4.5000000000000000e+00 0 -1 118 - 5.0000000000000000e-01 -2 -3 119 1.7500000000000000e+01 - - -8.9902228116989136e-01 7.3140519857406616e-01 - 2.5528132915496826e-01 -3.2260772585868835e-01 - <_> - 1.5880639553070068e+00 - - 1 2 120 2.3500000000000000e+01 0 -1 121 - 2.3415000000000000e+03 -2 -3 122 1.8500000000000000e+01 - - -7.2909480333328247e-01 -6.7116706632077694e-03 - -8.0022460222244263e-01 3.6795264482498169e-01 - <_> - 1.7455346584320068e+00 - - 1 2 123 1.9715000000000000e+03 0 -1 124 - 4.5635000000000000e+03 -2 -3 125 4.4850000000000000e+02 - - -6.1536699533462524e-01 3.9649611711502075e-01 - -5.3931379318237305e-01 1.9903500378131866e-01 - <_> - 1.4469091892242432e+00 - - 1 2 126 9.5000000000000000e+00 0 -1 127 - 1.0219500000000000e+04 -2 -3 128 4.0500000000000000e+01 - - 6.1238449811935425e-01 -1.6160279512405396e-01 - -5.3765082359313965e-01 2.1599884331226349e-01 - <_> - 1.6631983518600464e+00 - - 1 2 129 1.3050000000000000e+02 0 -1 130 - 1.2500000000000000e+01 -2 -3 131 48. - - -6.8314427137374878e-01 2.1628913283348083e-01 - 7.3021888732910156e-01 -8.3048707246780396e-01 - <_> - 1.3611874580383301e+00 - - 1 2 132 5691. 0 -1 133 1.4550000000000000e+02 -2 -3 134 - 6621. - - 6.3320666551589966e-02 -5.2526509761810303e-01 - 9.5597380399703979e-01 -8.6907690763473511e-01 - <_> - 1.6279634237289429e+00 - - 1 2 135 2.3500000000000000e+01 0 -1 136 - 2.5000000000000000e+00 -2 -3 137 5.0500000000000000e+01 - - 3.9147856831550598e-01 -8.5339552164077759e-01 - 2.6677599549293518e-01 -3.8106775283813477e-01 - <_> - 2.0351922512054443e+00 - - 1 2 138 4.9500000000000000e+01 0 -1 139 - 1.8500000000000000e+01 -2 -3 140 7.5000000000000000e+00 - - 4.8707169294357300e-01 -5.0664901733398438e-01 - 5.0869596004486084e-01 -1.1930328607559204e-01 - <_> - 2.1048190593719482e+00 - - 1 2 141 6.5000000000000000e+00 0 -1 142 - 2.0500000000000000e+01 -2 -3 143 2.8945000000000000e+03 - - 2.2332985699176788e-01 -6.0333216190338135e-01 - 3.1961753964424133e-01 -4.8080846667289734e-01 - <_> - 2.5272200107574463e+00 - - 1 2 144 1.2755000000000000e+03 0 -1 145 - 1.6450000000000000e+02 -2 -3 146 33. - - 8.7598457932472229e-02 -4.3963542580604553e-01 - -8.7583345174789429e-01 6.2399446964263916e-01 - <_> - 2.3983705043792725e+00 - - 1 2 147 5.5000000000000000e+00 0 -1 148 - 1.2500000000000000e+01 -2 -3 149 3.2715000000000000e+03 - - -6.9637626409530640e-01 3.5001280903816223e-01 - -6.8439531326293945e-01 5.0571694970130920e-02 - <_> - 2.1697113513946533e+00 - - 1 2 150 666. 0 -1 151 1.0675000000000000e+03 -2 -3 152 - 1.0650000000000000e+02 - - -2.1497508883476257e-01 7.4145573377609253e-01 - -4.1339716315269470e-01 1.7802318930625916e-01 - <_> - 2.3894040584564209e+00 - - 1 2 153 1.5000000000000000e+00 0 -1 154 - 4.2500000000000000e+01 -2 -3 155 1.0950000000000000e+02 - - -8.8204550743103027e-01 3.3967906236648560e-01 - -9.1087028384208679e-02 -8.9394873380661011e-01 - <_> - 2.2878415584564209e+00 - - 1 2 156 6.4500000000000000e+01 0 -1 157 11. -2 -3 158 - 4.4500000000000000e+01 - - 7.8926539421081543e-01 -8.1914222240447998e-01 - 5.7366627454757690e-01 -1.0156247764825821e-01 - <_> - 2.4907975196838379e+00 - - 1 2 159 5.8650000000000000e+02 0 -1 160 - 1.7625000000000000e+03 -2 -3 161 5.0000000000000000e-01 - - -5.2814042568206787e-01 2.0295590162277222e-01 - 4.9193066358566284e-01 -8.6553698778152466e-01 - <_> - 2.8328115940093994e+00 - - 1 2 162 1.1500000000000000e+01 0 -1 163 - 1.5045000000000000e+03 -2 -3 164 3.1500000000000000e+01 - - 5.6902194023132324e-01 -3.8489398360252380e-01 - 5.4847592115402222e-01 -9.3145422637462616e-02 - <_> - 2.9363400936126709e+00 - - 1 2 165 1.5500000000000000e+01 0 -1 166 - 1.2500000000000000e+01 -2 -3 167 1.5500000000000000e+01 - - 9.5472264289855957e-01 -9.1838270425796509e-01 - -1.0293316841125488e-01 4.3570974469184875e-01 - <_> - 2.8884809017181396e+00 - - 1 2 168 5.5000000000000000e+00 0 -1 169 - 3.2250000000000000e+02 -2 -3 170 3.3305000000000000e+03 - - 5.2823734283447266e-01 -6.2273854017257690e-01 - 2.4218171834945679e-01 -3.8004037737846375e-01 - <_> - 3.2581679821014404e+00 - - 1 2 171 1.1585000000000000e+03 0 -1 172 - 2.0525000000000000e+03 -2 -3 173 6.6950000000000000e+02 - - -7.3419857025146484e-01 5.7153469324111938e-01 - 7.6942658424377441e-01 -4.6774842776358128e-03 - <_> - 3.2552568912506104e+00 - - 1 2 174 4.7500000000000000e+01 0 -1 175 - 5.0000000000000000e-01 -2 -3 176 1.5550000000000000e+02 - - 1.8964821100234985e-01 -5.6353724002838135e-01 - -6.1556345224380493e-01 3.0847749114036560e-01 - <_> - 3.1983842849731445e+00 - - 1 2 177 4.3150000000000000e+02 0 -1 178 - 5.8500000000000000e+01 -2 -3 179 5.0000000000000000e-01 - - -5.6872483342885971e-02 5.8359992504119873e-01 - 4.7400984168052673e-01 -7.4053239822387695e-01 - <_> - 3.4817969799041748e+00 - - 1 2 180 9.5000000000000000e+00 0 -1 181 25. -2 -3 182 - 6.2500000000000000e+01 - - -6.4430248737335205e-01 3.9208996295928955e-01 - -4.2771559953689575e-01 3.0624631047248840e-01 - <_> - 3.0476233959197998e+00 - - 1 2 183 2.5000000000000000e+00 0 -1 184 - 1.3250000000000000e+02 -2 -3 185 3.4150000000000000e+02 - - 5.3614073991775513e-01 -5.6767416000366211e-01 - -3.0754956603050232e-01 8.0505007505416870e-01 - <_> - 3.4105541706085205e+00 - - 1 2 186 5.8500000000000000e+01 0 -1 187 - 5.2250000000000000e+02 -2 -3 188 8.4500000000000000e+01 - - -3.9508250355720520e-01 2.8085133433341980e-01 - 6.1845648288726807e-01 -2.1672628819942474e-01 - <_> - 3.4716253280639648e+00 - - 1 2 189 3238. 0 -1 190 7.6925000000000000e+03 -2 -3 191 - 1.4250000000000000e+02 - - 5.7400876283645630e-01 -6.7538954317569733e-02 - -8.3562213182449341e-01 6.1071071773767471e-02 - <_> - 3.3441829681396484e+00 - - 1 2 192 1.3500000000000000e+01 0 -1 193 - 1.3500000000000000e+01 -2 -3 194 5.5000000000000000e+00 - - -6.8424683809280396e-01 5.4655539989471436e-01 - 4.5958670973777771e-01 -1.2744228541851044e-01 - <_> - 3.2567305564880371e+00 - - 1 2 195 4.5050000000000000e+02 0 -1 196 - 7.5000000000000000e+00 -2 -3 197 102. - - 2.0710256695747375e-01 -4.7517296671867371e-01 - -2.6671493053436279e-01 5.8150058984756470e-01 - <_> - 3.5595970153808594e+00 - - 1 2 198 1.5500000000000000e+01 0 -1 199 - 1.6405000000000000e+03 -2 -3 200 3.2500000000000000e+01 - - -6.0164546966552734e-01 3.0286654829978943e-01 - 2.1122010052204132e-01 -5.7218044996261597e-01 - <_> - 3.7392544746398926e+00 - - 1 2 201 6.5000000000000000e+00 0 -1 202 - 3.5000000000000000e+00 -2 -3 203 1.6450000000000000e+02 - - 2.2506394982337952e-01 -8.6310726404190063e-01 - 1.7965751886367798e-01 -6.9324779510498047e-01 - <_> - 3.7078585624694824e+00 - - 1 2 204 8.1450000000000000e+02 0 -1 205 1890. -2 -3 206 - 8.1750000000000000e+02 - - -3.2595106959342957e-01 8.0182307958602905e-01 - 6.8428695201873779e-01 -2.1671128273010254e-01 - <_> - 4.0834798812866211e+00 - - 1 2 207 7524. 0 -1 208 29059. -2 -3 209 - 5.0000000000000000e-01 - - -9.4072461128234863e-02 6.2213033437728882e-01 - 4.1094872355461121e-01 -3.1383806467056274e-01 - <_> - 3.9115695953369141e+00 - - 1 2 210 1.8500000000000000e+01 0 -1 211 387. -2 -3 212 - 2.3750000000000000e+02 - - 4.2355090379714966e-01 -8.8622373342514038e-01 - 2.1309094130992889e-01 -5.3503811359405518e-01 - <_> - 4.2166790962219238e+00 - - 1 2 213 5.3500000000000000e+01 0 -1 214 1081. -2 -3 215 - 2.5000000000000000e+00 - - 8.1005847454071045e-01 -9.5809775590896606e-01 - 3.0510938167572021e-01 -2.3649103939533234e-01 - <_> - 4.2742543220520020e+00 - - 1 2 216 5.0000000000000000e-01 0 -1 217 - 3.5000000000000000e+00 -2 -3 218 1.9500000000000000e+01 - - -6.7842203378677368e-01 6.1577528715133667e-01 - -6.2877601385116577e-01 5.7575210928916931e-02 - <_> - 4.5262427330017090e+00 - - 1 2 219 2.3500000000000000e+01 0 -1 220 - 6.5500000000000000e+01 -2 -3 221 7200. - - -1.2643574178218842e-01 4.4764062762260437e-01 - 8.0391228199005127e-01 -5.6298023462295532e-01 - <_> - 4.3622655868530273e+00 - - 1 2 222 5.0000000000000000e-01 0 -1 223 - 5.0000000000000000e-01 -2 -3 224 8.5000000000000000e+00 - - -6.9282239675521851e-01 5.0668609142303467e-01 - 2.8447443246841431e-01 -3.2788425683975220e-01 - <_> - 4.3866205215454102e+00 - - 1 2 225 1.8500000000000000e+01 0 -1 226 - 3.0500000000000000e+01 -2 -3 227 3.5000000000000000e+00 - - 1.6534422338008881e-01 -6.7988771200180054e-01 - 5.8741343021392822e-01 -7.3899636045098305e-03 - <_> - 4.6229195594787598e+00 - - 1 2 228 3.5500000000000000e+01 0 -1 229 - 2.4250000000000000e+02 -2 -3 230 1.4995000000000000e+03 - - -2.7123320102691650e-01 4.3727341294288635e-01 - 6.2667381763458252e-01 -8.1948131322860718e-01 - <_> - 4.4684619903564453e+00 - - 1 2 231 1.3050000000000000e+02 0 -1 232 - 7.4500000000000000e+01 -2 -3 233 3.4250000000000000e+02 - - 4.2552286386489868e-01 -6.8802464008331299e-01 - -3.5543212294578552e-01 8.2571202516555786e-01 - <_> - 4.7353043556213379e+00 - - 1 2 234 2.4500000000000000e+01 0 -1 235 - 5.2500000000000000e+01 -2 -3 236 2.1500000000000000e+01 - - 1.4997267723083496e-01 -9.4012928009033203e-01 - -3.1085640192031860e-01 2.6684227585792542e-01 - <_> - 5.1284918785095215e+00 - - 1 2 237 1.5000000000000000e+00 0 -1 238 246. -2 -3 239 - 5.1500000000000000e+01 - - -1.4119525253772736e-01 8.4309184551239014e-01 - 8.1866653636097908e-03 -5.9627658128738403e-01 - <_> - 5.2100868225097656e+00 - - 1 2 240 1.2225000000000000e+03 0 -1 241 8510. -2 -3 242 - 4.1076500000000000e+04 - - -3.3349204063415527e-01 4.1161355376243591e-01 - 4.6106973290443420e-01 -8.5954028367996216e-01 - <_> - 5.1655635833740234e+00 - - 1 2 243 1.4225500000000000e+04 0 -1 244 - 5.6765000000000000e+03 -2 -3 245 3.5000000000000000e+00 - - -4.4523153454065323e-02 6.2628918886184692e-01 - 2.0545418560504913e-01 -5.4939305782318115e-01 - <_> - 5.3291592597961426e+00 - - 1 2 246 4.5000000000000000e+00 0 -1 247 5. -2 -3 248 - 4.5035000000000000e+03 - - -8.5104453563690186e-01 7.7873927354812622e-01 - -8.5507243871688843e-01 -6.3659679144620895e-03 - <_> - 5.4979724884033203e+00 - - 1 2 249 7.7350000000000000e+02 0 -1 250 - 5.0745000000000000e+03 -2 -3 251 6.5000000000000000e+00 - - 4.5453670620918274e-01 -6.6669577360153198e-01 - 1.7272062599658966e-01 -4.8215919733047485e-01 - <_> - 5.1418399810791016e+00 - - 1 2 252 3.3500000000000000e+01 0 -1 253 - 4.8500000000000000e+01 -2 -3 254 1.1625000000000000e+03 - - 5.2197024226188660e-02 -8.2986247539520264e-01 - -4.2942497134208679e-01 2.6862683892250061e-01 - <_> - 5.3069186210632324e+00 - - 1 2 255 7.3500000000000000e+01 0 -1 256 - 6.5000000000000000e+00 -2 -3 257 293. - - -8.3037430047988892e-01 1.6507858037948608e-01 - -8.6482697725296021e-01 5.6237572431564331e-01 - <_> - 5.8320169448852539e+00 - - 1 2 258 5.2500000000000000e+01 0 -1 259 - 5.0000000000000000e-01 -2 -3 260 483. - - 4.2582702636718750e-01 -3.5350418090820312e-01 - 5.2509862184524536e-01 -8.3165860176086426e-01 - <_> - 5.4062981605529785e+00 - - 1 2 261 7.2850000000000000e+02 0 -1 262 27703. -2 -3 263 - 1.1950000000000000e+02 - - 6.5644961595535278e-01 -9.5847475528717041e-01 - 2.1147368848323822e-01 -4.5759904384613037e-01 - <_> - 5.3856034278869629e+00 - - 1 2 264 2.1500000000000000e+01 0 -1 265 - 1.6105000000000000e+03 -2 -3 266 1.5000000000000000e+00 - - -2.0694794133305550e-02 -7.2058790922164917e-01 - 7.0882946252822876e-01 -9.4017720222473145e-01 - <_> - 5.3594450950622559e+00 - - 1 2 267 1.9500000000000000e+01 0 -1 268 - 1.5500000000000000e+01 -2 -3 269 5.0000000000000000e-01 - - 4.6942609548568726e-01 -4.7919079661369324e-01 - 5.4369747638702393e-01 -2.6158468797802925e-02 - <_> - 5.5568313598632812e+00 - - 1 2 270 3.8500000000000000e+01 0 -1 271 5311. -2 -3 272 - 1.0750000000000000e+02 - - 2.8408360481262207e-01 -9.0222167968750000e-01 - 1.9738645851612091e-01 -5.9748172760009766e-01 - <_> - 6.0750946998596191e+00 - - 1 2 273 3654. 0 -1 274 5.0000000000000000e-01 -2 -3 275 180. - - 1.3075743615627289e-01 -4.2956027388572693e-01 - -7.0136785507202148e-01 6.2402111291885376e-01 - <_> - 6.0776939392089844e+00 - - 1 2 276 2.5000000000000000e+00 0 -1 277 - 1.3500000000000000e+01 -2 -3 278 1.1750000000000000e+02 - - -9.0228682756423950e-01 1. 1.6657561063766479e-01 - -6.4917582273483276e-01 - <_> - 6.0489621162414551e+00 - - 1 2 279 1.2455000000000000e+03 0 -1 280 - 3.2550000000000000e+02 -2 -3 281 9.3250000000000000e+02 - - -2.8672853112220764e-01 6.7820680141448975e-01 - 6.3100266456604004e-01 -2.2533583641052246e-01 - <_> - 6.3533391952514648e+00 - - 1 2 282 1.8769500000000000e+04 0 -1 283 - 7.5450000000000000e+02 -2 -3 284 1.4500000000000000e+01 - - -7.3246711492538452e-01 4.0920761227607727e-01 - 9.1864340007305145e-02 -5.1933372020721436e-01 - <_> - 6.3807511329650879e+00 - - 1 2 285 4.9950000000000000e+02 0 -1 286 - 7.5000000000000000e+00 -2 -3 287 4.9500000000000000e+01 - - 2.5379750132560730e-01 -9.2118155956268311e-01 - -5.7641644030809402e-02 5.3151047229766846e-01 - <_> - 6.4591631889343262e+00 - - 1 2 288 2.5500000000000000e+01 0 -1 289 - 1.1500000000000000e+01 -2 -3 290 1.7405000000000000e+03 - - -9.0133595466613770e-01 2.3147261142730713e-01 - -5.1077365875244141e-01 7.7433860301971436e-01 - <_> - 6.7583456039428711e+00 - - 1 2 291 5.0000000000000000e-01 0 -1 292 - 3.6500000000000000e+01 -2 -3 293 6.5000000000000000e+00 - - -1.6842520236968994e-01 7.2404229640960693e-01 - 4.3139779567718506e-01 -3.6949115991592407e-01 - <_> - 6.6043167114257812e+00 - - 1 2 294 1.0500000000000000e+01 0 -1 295 - 2.5500000000000000e+01 -2 -3 296 1.0750000000000000e+02 - - 6.2449771165847778e-01 -6.7510235309600830e-01 - 3.5289931297302246e-01 -1.5402862429618835e-01 - <_> - 6.4769744873046875e+00 - - 1 2 297 1.6750000000000000e+02 0 -1 298 - 3.4500000000000000e+01 -2 -3 299 2.1500000000000000e+01 - - 1.1882825195789337e-01 -6.5167319774627686e-01 - -7.6285523176193237e-01 3.4674841165542603e-01 - <_> - 6.6450757980346680e+00 - - 1 2 300 8.5000000000000000e+00 0 -1 301 - 1.3500000000000000e+01 -2 -3 302 116. - - -5.9631282091140747e-01 2.7127423882484436e-01 - -5.6467700004577637e-01 3.7385278940200806e-01 - <_> - 6.8429255485534668e+00 - - 1 2 303 5.5500000000000000e+01 0 -1 304 - 3.5000000000000000e+00 -2 -3 305 3.3250000000000000e+02 - - -8.3910179138183594e-01 4.3193608522415161e-01 - -3.7392577528953552e-01 6.6540867090225220e-01 - <_> - 7.0322842597961426e+00 - - 1 2 306 6.3500000000000000e+01 0 -1 307 - 2.0845000000000000e+03 -2 -3 308 1.2500000000000000e+01 - - -5.9658832848072052e-02 -8.6379587650299072e-01 - 4.7707024216651917e-01 -1.4790077507495880e-01 - <_> - 6.9630532264709473e+00 - - 1 2 309 1.6150000000000000e+02 0 -1 310 29256. -2 -3 311 - 2.5000000000000000e+00 - - -8.2682120800018311e-01 4.9407878518104553e-01 - 5.2456849813461304e-01 -6.9230861961841583e-02 - <_> - 6.9075293540954590e+00 - - 1 2 312 5.0000000000000000e-01 0 -1 313 - 8.5000000000000000e+00 -2 -3 314 8.4975000000000000e+03 - - -7.3926454782485962e-01 4.6552142500877380e-01 - 5.8614385128021240e-01 -3.0694326758384705e-01 - <_> - 7.0862822532653809e+00 - - 1 2 315 8.2550000000000000e+02 0 -1 316 - 4.6500000000000000e+01 -2 -3 317 5.0695000000000000e+03 - - -2.9908904433250427e-01 5.3665381669998169e-01 - 6.0632449388504028e-01 -4.8383909463882446e-01 - <_> - 7.3064808845520020e+00 - - 1 2 318 1.2500000000000000e+01 0 -1 319 - 4.7350000000000000e+02 -2 -3 320 1.3500000000000000e+01 - - -1.4890976250171661e-01 5.1700884103775024e-01 - 2.2019901871681213e-01 -5.0205707550048828e-01 - <_> - 7.5856218338012695e+00 - - 1 2 321 4.5000000000000000e+00 0 -1 322 - 2.5000000000000000e+00 -2 -3 323 1.7875000000000000e+03 - - -6.5830785036087036e-01 5.2842289209365845e-01 - -4.4524073600769043e-01 1.5747387707233429e-01 - <_> - 7.5183806419372559e+00 - - 1 2 324 7.8500000000000000e+01 0 -1 325 - 2.1500000000000000e+01 -2 -3 326 283. - - 4.9533292651176453e-01 -3.2849147915840149e-01 - -8.8443028926849365e-01 -4.6591479331254959e-02 - <_> - 7.2458000183105469e+00 - - 1 2 327 2.9500000000000000e+01 0 -1 328 - 4.5000000000000000e+00 -2 -3 329 1.2500000000000000e+01 - - 3.8163262605667114e-01 -5.6158578395843506e-01 - -5.1157724857330322e-01 3.5844418406486511e-01 - <_> - 7.7198004722595215e+00 - - 1 2 330 1.7500000000000000e+01 0 -1 331 - 8.5000000000000000e+00 -2 -3 332 94. - - -1.6375185549259186e-01 4.7400090098381042e-01 - -8.1118392944335938e-01 -3.4891348332166672e-02 - <_> - 7.6042866706848145e+00 - - 1 2 333 1.5500000000000000e+01 0 -1 334 - 2.8500000000000000e+01 -2 -3 335 1.1255000000000000e+03 - - -2.7163597941398621e-01 4.8851761221885681e-01 - -4.1841214895248413e-01 5.2421635389328003e-01 - <_> - 7.8545336723327637e+00 - - 1 2 336 5.0000000000000000e-01 0 -1 337 - 6.5000000000000000e+00 -2 -3 338 1.5755000000000000e+03 - - -5.1451754570007324e-01 5.8292496204376221e-01 - 5.4736447334289551e-01 -2.9082155227661133e-01 - <_> - 8.2435092926025391e+00 - - 1 2 339 2.5000000000000000e+00 0 -1 340 298. -2 -3 341 - 3.4500000000000000e+01 - - 5.5548179149627686e-01 -4.2350277304649353e-01 - -4.2017799615859985e-01 3.3250615000724792e-01 - <_> - 8.1081476211547852e+00 - - 1 2 342 2306. 0 -1 343 4.8350000000000000e+02 -2 -3 344 - 2.0550000000000000e+02 - - -7.4824672937393188e-01 8.6650526523590088e-01 - 2.9151761531829834e-01 -3.6584287881851196e-01 - <_> - 7.9108762741088867e+00 - - 0 1 345 2758. 0 1 345 2758. -1 -2 346 2.1500000000000000e+01 - - -1. -1. 2.9584947228431702e-01 -1.9727160036563873e-01 - <_> - 8.1822175979614258e+00 - - 1 2 347 2.3500000000000000e+01 0 -1 348 282. -2 -3 349 - 4.5000000000000000e+00 - - 4.1519537568092346e-01 -7.7347069978713989e-01 - 2.7134174108505249e-01 -2.6304042339324951e-01 - <_> - 8.1136093139648438e+00 - - 1 2 350 6.6500000000000000e+01 0 -1 351 - 1.4500000000000000e+01 -2 -3 352 3.4500000000000000e+01 - - -8.0191783607006073e-02 -7.9695141315460205e-01 - 4.5921468734741211e-01 -4.6219456195831299e-01 - <_> - 8.4452056884765625e+00 - - 1 2 353 5.0000000000000000e-01 0 -1 354 - 1.1750000000000000e+02 -2 -3 355 1.4615000000000000e+03 - - 6.2617254257202148e-01 -6.0764908790588379e-01 - -2.9064002633094788e-01 7.1891576051712036e-01 - <_> - 8.4361963272094727e+00 - - 1 2 356 7.3500000000000000e+01 0 -1 357 825. -2 -3 358 - 6.5000000000000000e+00 - - 6.0967606306076050e-01 -7.7204084396362305e-01 - 6.0940122604370117e-01 -9.0096443891525269e-03 - <_> - 8.7065010070800781e+00 - - 1 2 359 3.1500000000000000e+01 0 -1 360 - 1.1475500000000000e+04 -2 -3 361 262. - - 4.0798941254615784e-01 -6.3121789693832397e-01 - -4.9538758397102356e-01 2.7030462026596069e-01 - <_> - 8.5846290588378906e+00 - - 1 2 362 1.4500000000000000e+01 0 -1 363 - 1.3524500000000000e+04 -2 -3 364 1.5650000000000000e+02 - - 6.1740058660507202e-01 -1.2187176942825317e-01 - -4.5620942115783691e-01 2.4483670294284821e-01 - <_> - 8.5813455581665039e+00 - - 1 2 365 1.9500000000000000e+01 0 -1 366 - 2.4550000000000000e+02 -2 -3 367 1.5150000000000000e+02 - - -3.2830052077770233e-03 -7.3917645215988159e-01 - 8.6923849582672119e-01 -3.4717652201652527e-01 - <_> - 8.3619909286499023e+00 - - 1 2 368 8.5000000000000000e+00 0 -1 369 915. -2 -3 370 - 5.0000000000000000e-01 - - -4.7836102545261383e-02 -8.9932316541671753e-01 - 3.6531907320022583e-01 -2.1935538947582245e-01 - <_> - 8.8194007873535156e+00 - - 1 2 371 5.3500000000000000e+01 0 -1 372 - 4.5000000000000000e+00 -2 -3 373 3.5000000000000000e+00 - - 1.0001569986343384e-01 -6.3893711566925049e-01 - 4.5741054415702820e-01 -1.3190703094005585e-01 - <_> - 8.5848417282104492e+00 - - 1 2 374 1.2185000000000000e+03 0 -1 375 - 5.6500000000000000e+01 -2 -3 376 7.8650000000000000e+02 - - -3.6798512935638428e-01 6.3582497835159302e-01 - 8.7271928787231445e-01 4.6488631516695023e-02 - <_> - 8.7026214599609375e+00 - - 1 2 377 3.7500000000000000e+01 0 -1 378 - 8.1500000000000000e+01 -2 -3 379 2.2350000000000000e+02 - - -1.1387371271848679e-01 4.8333024978637695e-01 - 5.4781770706176758e-01 -6.5416949987411499e-01 - <_> - 8.9529705047607422e+00 - - 1 2 380 2.0500000000000000e+01 0 -1 381 - 7.5000000000000000e+00 -2 -3 382 1.3235000000000000e+03 - - -7.0283526182174683e-01 2.5034907460212708e-01 - -7.6881372928619385e-01 1.7487525939941406e-01 - <_> - 9.0659570693969727e+00 - - 1 2 383 3.5000000000000000e+00 0 -1 384 - 6.5000000000000000e+00 -2 -3 385 7.0250000000000000e+02 - - -9.7807765007019043e-01 4.7183737158775330e-01 - 1.1298649013042450e-01 -4.7387996315956116e-01 - <_> - 9.2564897537231445e+00 - - 1 2 386 7.0650000000000000e+02 0 -1 387 - 2.7500000000000000e+01 -2 -3 388 3.8150000000000000e+02 - - -4.3204694986343384e-01 4.6149665117263794e-01 - -4.5656362175941467e-01 4.0426468849182129e-01 - <_> - 9.5633430480957031e+00 - - 1 2 389 1.7250000000000000e+02 0 -1 390 - 1.4350000000000000e+02 -2 -3 391 2168. - - 3.0685371160507202e-01 -6.7446005344390869e-01 - -5.6666123867034912e-01 5.7540327310562134e-01 - <_> - 9.4047651290893555e+00 - - 1 2 392 5.0000000000000000e-01 0 -1 393 36. -2 -3 394 - 6.5000000000000000e+00 - - -8.9199495315551758e-01 6.9151669740676880e-01 - 3.1148543953895569e-01 -3.2515323162078857e-01 - <_> - 9.8578929901123047e+00 - - 1 2 395 1.6500000000000000e+01 0 -1 396 - 8.5000000000000000e+00 -2 -3 397 6655. - - -6.3973349332809448e-01 -2.6324391365051270e-02 - 4.5312842726707458e-01 -7.6435673236846924e-01 - <_> - 1.0109946250915527e+01 - - 1 2 398 8.1850000000000000e+02 0 -1 399 5. -2 -3 400 - 1.5000000000000000e+00 - - 1. -9.7892904281616211e-01 2.5205332040786743e-01 - -2.3775234818458557e-01 - <_> - 1.0110588073730469e+01 - - 1 2 401 8.9500000000000000e+01 0 -1 402 - 1.9500000000000000e+01 -2 -3 403 3.3150000000000000e+02 - - 6.0288328677415848e-02 -5.5889946222305298e-01 - -6.6790217161178589e-01 4.9099177122116089e-01 - <_> - 1.0178493499755859e+01 - - 1 2 404 8.3500000000000000e+01 0 -1 405 - 5.0000000000000000e-01 -2 -3 406 4.5500000000000000e+01 - - 6.6644616425037384e-02 -4.7016331553459167e-01 - 6.9829040765762329e-01 -7.4734330177307129e-01 - <_> - 1.0367170333862305e+01 - - 1 2 407 3.1968500000000000e+04 0 -1 408 - 1.4500000000000000e+01 -2 -3 409 1.9650000000000000e+02 - - -8.8887441158294678e-01 1.8867671489715576e-01 - -6.9990497827529907e-01 7.3294508457183838e-01 - <_> - 1.0330060958862305e+01 - - 1 2 410 3.0500000000000000e+01 0 -1 411 - 4.5000000000000000e+00 -2 -3 412 2.2500000000000000e+01 - - 4.1319993138313293e-01 -1.7337587475776672e-01 - -6.1255306005477905e-01 5.2832174301147461e-01 - <_> - 1.0422311782836914e+01 - - 1 2 413 1.5750000000000000e+02 0 -1 414 2858. -2 -3 415 267. - - 9.2250838875770569e-02 -6.7853665351867676e-01 - -5.2487850189208984e-01 3.7964582443237305e-01 - <_> - 1.0936569213867188e+01 - - 1 2 416 5.5000000000000000e+00 0 -1 417 - 1.5000000000000000e+00 -2 -3 418 4.1500000000000000e+01 - - -7.1109032630920410e-01 5.2976405620574951e-01 - -7.1571081876754761e-01 -3.8149278610944748e-02 - <_> - 1.0785615921020508e+01 - - 1 2 419 5.5000000000000000e+00 0 -1 420 - 2.5000000000000000e+00 -2 -3 421 5.1050000000000000e+02 - - -7.9414331912994385e-01 5.1595968008041382e-01 - -5.1001089811325073e-01 2.4380905926227570e-01 - <_> - 1.1078557014465332e+01 - - 1 2 422 6.2045000000000000e+03 0 -1 423 - 2.1500000000000000e+01 -2 -3 424 7.3450000000000000e+02 - - -5.1469475030899048e-01 2.9294142127037048e-01 - 8.0896812677383423e-01 -6.5453553199768066e-01 - <_> - 1.1050524711608887e+01 - - 1 2 425 1.2500000000000000e+01 0 -1 426 - 3.1250000000000000e+02 -2 -3 427 2.7950000000000000e+02 - - 7.0064479112625122e-01 -3.8257476687431335e-01 - 1.9552476704120636e-01 -4.3830174207687378e-01 - <_> - 1.1334832191467285e+01 - - 1 2 428 1.8675000000000000e+03 0 -1 429 - 6.5000000000000000e+00 -2 -3 430 1.1475000000000000e+03 - - 3.7387716770172119e-01 -7.6267945766448975e-01 - -5.4317325353622437e-01 2.8430745005607605e-01 - <_> - 1.1113101959228516e+01 - - 1 2 431 1.4850000000000000e+02 0 -1 432 - 8.3500000000000000e+01 -2 -3 433 3.7500000000000000e+01 - - -3.8298897445201874e-02 -6.6938400268554688e-01 - 4.6958562731742859e-01 -2.8687629103660583e-01 - <_> - 1.0955561637878418e+01 - - 1 2 434 4.3500000000000000e+01 0 -1 435 - 5.5000000000000000e+00 -2 -3 436 1.9500000000000000e+01 - - 1.3246925175189972e-01 -5.9307396411895752e-01 - 4.5207285881042480e-01 -1.5754084289073944e-01 - <_> - 1.1154244422912598e+01 - - 1 2 437 3.5500000000000000e+01 0 -1 438 149. -2 -3 439 - 1.0764500000000000e+04 - - 1.6496022045612335e-01 -8.5004007816314697e-01 - 1.9868306815624237e-01 -7.6483601331710815e-01 - <_> - 1.1040904045104980e+01 - - 1 2 440 1.7500000000000000e+01 0 -1 441 - 2.7650000000000000e+02 -2 -3 442 6.0650000000000000e+02 - - 3.8257870078086853e-01 -8.7649303674697876e-01 - 5.6843882799148560e-01 -1.1334086209535599e-01 - <_> - 1.0785296440124512e+01 - - 1 2 443 2.0850000000000000e+02 0 -1 444 - 5.0000000000000000e-01 -2 -3 445 153. - - 2.4452392756938934e-01 -4.5549276471138000e-01 - 5.3557026386260986e-01 -2.5560736656188965e-01 - <_> - 1.1557132720947266e+01 - - 1 2 446 3.1695000000000000e+03 0 -1 447 17097. -2 -3 448 - 1.6791500000000000e+04 - - -8.1668007373809814e-01 8.2250398397445679e-01 - -3.6227312684059143e-01 1.6900251805782318e-01 - <_> - 1.1418401718139648e+01 - - 1 2 449 1.7705000000000000e+03 0 -1 450 - 4.6565000000000000e+03 -2 -3 451 4.5550000000000000e+02 - - -1.8939907848834991e-01 5.5706465244293213e-01 - 2.2822033613920212e-02 -6.7216074466705322e-01 - <_> - 1.1332237243652344e+01 - - 1 2 452 1.9500000000000000e+01 0 -1 453 - 5.0000000000000000e-01 -2 -3 454 168. - - 9.8821230232715607e-02 -9.9127775430679321e-01 - 2.8800103068351746e-01 -3.2348513603210449e-01 - <_> - 1.1800554275512695e+01 - - 1 2 455 9.6500000000000000e+01 0 -1 456 - 3.5000000000000000e+00 -2 -3 457 1.2085000000000000e+03 - - 1.2269663810729980e-01 -4.6963310241699219e-01 - 4.6831732988357544e-01 -7.5347024202346802e-01 - <_> - 1.1746677398681641e+01 - - 1 2 458 2.6500000000000000e+01 0 -1 459 - 1.2500000000000000e+01 -2 -3 460 6.2500000000000000e+01 - - 2.9853442311286926e-01 -6.0757899284362793e-01 - 4.3772074580192566e-01 -1.3283115625381470e-01 - <_> - 1.1710562705993652e+01 - - 1 2 461 3.4500000000000000e+01 0 -1 462 - 5.0000000000000000e-01 -2 -3 463 2.0950000000000000e+02 - - 3.1521999835968018e-01 -5.5736678838729858e-01 - 6.7748945951461792e-01 -3.6115031689405441e-02 - <_> - 1.1582207679748535e+01 - - 1 2 464 1.5000000000000000e+00 0 -1 465 - 1.4750000000000000e+02 -2 -3 466 5.0000000000000000e-01 - - -9.5662528276443481e-01 8.8448798656463623e-01 - 5.0583779811859131e-01 -1.2840148806571960e-01 - <_> - 1.1577805519104004e+01 - - 1 2 467 2.6250000000000000e+02 0 -1 468 - 8.5000000000000000e+00 -2 -3 469 2.7050000000000000e+02 - - 5.8746252208948135e-02 -5.1417016983032227e-01 - -4.4025536626577377e-03 7.2468632459640503e-01 - <_> - 1.1909842491149902e+01 - - 1 2 470 3.0500000000000000e+01 0 -1 471 - 9.1500000000000000e+01 -2 -3 472 3.2500000000000000e+01 - - 2.6228722929954529e-01 -8.3183318376541138e-01 - 3.3203727006912231e-01 -2.0215129852294922e-01 - <_> - 1.1820110321044922e+01 - - 1 2 473 3.6150000000000000e+02 0 -1 474 - 7.5500000000000000e+01 -2 -3 475 1.6500000000000000e+01 - - 3.4021586179733276e-02 -7.3799329996109009e-01 - 5.9181433916091919e-01 -8.9732393622398376e-02 - <_> - 1.2058867454528809e+01 - - 1 2 476 2.1850000000000000e+02 0 -1 477 - 1.3970500000000000e+04 -2 -3 478 3.5405000000000000e+03 - - 2.3875749111175537e-01 -3.4735745191574097e-01 - 8.4880095720291138e-01 -3.6369037628173828e-01 - <_> - 1.2003521919250488e+01 - - 1 2 479 1.2045000000000000e+03 0 -1 480 - 5.0000000000000000e-01 -2 -3 481 6.6500000000000000e+01 - - 1.9498512148857117e-01 -4.0264678001403809e-01 - 6.4470326900482178e-01 -4.2276349663734436e-01 - <_> - 1.2398437500000000e+01 - - 1 2 482 1.7500000000000000e+01 0 -1 483 13266. -2 -3 484 - 2.3500000000000000e+01 - - 1.0403804481029510e-01 -7.6852244138717651e-01 - 3.9491611719131470e-01 -1.4494727551937103e-01 - <_> - 1.2834873199462891e+01 - - 1 2 485 8.5000000000000000e+00 0 -1 486 - 1.9500000000000000e+01 -2 -3 487 2.5000000000000000e+00 - - 2.4885479360818863e-02 -6.1086690425872803e-01 - -3.8872721791267395e-01 4.3643516302108765e-01 - <_> - 1.2477423667907715e+01 - - 1 2 488 6.6500000000000000e+01 0 -1 489 - 2.9500000000000000e+01 -2 -3 490 4.4500000000000000e+01 - - -8.9354419708251953e-01 3.1559488177299500e-01 - -5.1763534545898438e-01 2.7538600564002991e-01 - <_> - 1.3054378509521484e+01 - - 1 2 491 8.2350000000000000e+02 0 -1 492 - 9.1500000000000000e+01 -2 -3 493 3.0550000000000000e+02 - - -5.0999827682971954e-02 5.7695519924163818e-01 - -8.2453000545501709e-01 2.1885833144187927e-01 - <_> - 1.3001498222351074e+01 - - 1 2 494 3.5000000000000000e+00 0 -1 495 - 4.5000000000000000e+00 -2 -3 496 1.2545000000000000e+03 - - -3.3553498983383179e-01 4.7332924604415894e-01 - -4.0103676915168762e-01 2.5861555337905884e-01 - <_> - 1.2748070716857910e+01 - - 1 2 497 7.2500000000000000e+01 0 -1 498 - 1.2078500000000000e+04 -2 -3 499 6.1500000000000000e+01 - - -5.6012886762619019e-01 5.0949209928512573e-01 - -3.8095393776893616e-01 3.5849356651306152e-01 - <_> - 1.3219707489013672e+01 - - 1 2 500 5.0000000000000000e-01 0 -1 501 - 4.5000000000000000e+00 -2 -3 502 2.5000000000000000e+00 - - -8.3156263828277588e-01 4.7163730859756470e-01 - 1.4885266125202179e-01 -4.8097932338714600e-01 - <_> - 1.3100829124450684e+01 - - 1 2 503 1.5500000000000000e+01 0 -1 504 - 6.5000000000000000e+00 -2 -3 505 1.6745000000000000e+03 - - 4.8601552844047546e-02 -8.4098070859909058e-01 - 4.4885209202766418e-01 -1.1887902766466141e-01 - <_> - 1.3153789520263672e+01 - - 1 2 506 1.9750000000000000e+02 0 -1 507 - 5.0000000000000000e-01 -2 -3 508 1.3850000000000000e+02 - - 3.5855168104171753e-01 -1.6984774172306061e-01 - -8.2890641689300537e-01 8.5591834783554077e-01 - <_> - 1.3473151206970215e+01 - - 1 2 509 2.0500000000000000e+01 0 -1 510 - 2.3500000000000000e+01 -2 -3 511 8.1050000000000000e+02 - - 3.1073799729347229e-01 -9.3193674087524414e-01 - -1.7174348235130310e-01 4.0613415837287903e-01 - <_> - 1.3465453147888184e+01 - - 1 2 512 2.1265000000000000e+03 0 -1 513 - 9.2950000000000000e+02 -2 -3 514 3.5000000000000000e+00 - - -7.6984455808997154e-03 7.1764069795608521e-01 - 2.0267011225223541e-01 -6.4554244279861450e-01 - <_> - 1.3577540397644043e+01 - - 1 2 515 2.7500000000000000e+01 0 -1 516 36. -2 -3 517 - 4.1350000000000000e+02 - - 1.5204006433486938e-01 -8.1754583120346069e-01 - -9.6264392137527466e-02 4.6634069085121155e-01 - <_> - 1.3565153121948242e+01 - - 1 2 518 8.2500000000000000e+01 0 -1 519 - 8.4500000000000000e+01 -2 -3 520 9545. - - 3.0989632010459900e-01 -6.6030853986740112e-01 - -6.4033728837966919e-01 -2.4311884772032499e-03 - <_> - 1.3631966590881348e+01 - - 1 2 521 2.3500000000000000e+01 0 -1 522 - 5.2500000000000000e+01 -2 -3 523 3.1500000000000000e+01 - - -3.1883838772773743e-01 2.8375336527824402e-01 - 6.9719344377517700e-01 -6.3891428709030151e-01 - <_> - 1.3900455474853516e+01 - - 1 2 524 5.1500000000000000e+01 0 -1 525 - 4.5000000000000000e+00 -2 -3 526 22871. - - -6.8288409709930420e-01 3.8537871837615967e-01 - 2.3610968887805939e-01 -4.6725943684577942e-01 - <_> - 1.3885604858398438e+01 - - 1 2 527 6.3917500000000000e+04 0 -1 528 - 6.5000000000000000e+00 -2 -3 529 9.7500000000000000e+01 - - 1.8357095122337341e-01 -8.4825068712234497e-01 - 4.4022575020790100e-01 -1.7257900536060333e-01 - <_> - 1.4077846527099609e+01 - - 1 2 530 1.9305000000000000e+03 0 -1 531 - 4.5000000000000000e+00 -2 -3 532 5275. - - 3.3539947867393494e-01 -2.5358977913856506e-01 - 8.1407654285430908e-01 -8.9784932136535645e-01 - <_> - 1.4307449340820312e+01 - - 1 2 533 4.2500000000000000e+01 0 -1 534 - 3.2250000000000000e+02 -2 -3 535 1.5000000000000000e+00 - - 8.7229333817958832e-02 -9.4649451971054077e-01 - -5.4333996772766113e-01 2.2960273921489716e-01 - <_> - 1.4230868339538574e+01 - - 1 2 536 4.7500000000000000e+01 0 -1 537 - 5.0000000000000000e-01 -2 -3 538 7.5500000000000000e+01 - - 5.4770493507385254e-01 -7.6581157743930817e-02 - -8.0993747711181641e-01 1. - <_> - 1.4503654479980469e+01 - - 1 2 539 2.1500000000000000e+01 0 -1 540 - 6.7525000000000000e+03 -2 -3 541 3.1500000000000000e+01 - - -1.3048166036605835e-01 -8.7906163930892944e-01 - 2.7278691530227661e-01 -4.8766756057739258e-01 - <_> - 1.4462507247924805e+01 - - 1 2 542 5.0950000000000000e+02 0 -1 543 - 4.8500000000000000e+01 -2 -3 544 2334. - - -4.5064944028854370e-01 1.7299294471740723e-01 - 7.4772566556930542e-01 -4.1147492825984955e-02 - <_> - 1.4535001754760742e+01 - - 1 2 545 3.5000000000000000e+00 0 -1 546 - 4.5000000000000000e+00 -2 -3 547 3.1500000000000000e+01 - - -9.2824006080627441e-01 5.8265477418899536e-01 - -3.6995452642440796e-01 2.3856091499328613e-01 - <_> - 1.4815734863281250e+01 - - 1 2 548 2.0500000000000000e+01 0 -1 549 - 4.5000000000000000e+00 -2 -3 550 5.2500000000000000e+01 - - -8.9162200689315796e-01 2.8073275089263916e-01 - 9.8183512687683105e-02 -7.3680752515792847e-01 - <_> - 1.4583820343017578e+01 - - 1 2 551 1.0500000000000000e+01 0 -1 552 10. -2 -3 553 - 9.0500000000000000e+01 - - -8.9265322685241699e-01 2.6653656363487244e-01 - -4.8498126864433289e-01 4.9194815754890442e-01 - <_> - 1.4590086936950684e+01 - - 1 2 554 1.4075000000000000e+03 0 -1 555 - 8.5000000000000000e+00 -2 -3 556 2.2350000000000000e+02 - - 7.2318482398986816e-01 -6.5714889764785767e-01 - 1.9554860889911652e-02 7.8212785720825195e-01 - <_> - 1.4370420455932617e+01 - - 1 2 557 1.3055000000000000e+03 0 -1 558 - 6.3615000000000000e+03 -2 -3 559 5.5050000000000000e+02 - - 6.6717378795146942e-02 7.7986842393875122e-01 - 4.8897069692611694e-01 -4.9088051915168762e-01 - <_> - 1.4557469367980957e+01 - - 1 2 560 2.0500000000000000e+01 0 -1 561 - 1.9500000000000000e+01 -2 -3 562 7.5000000000000000e+00 - - -6.0846841335296631e-01 7.7918326854705811e-01 - 4.8263064026832581e-01 -1.0205705463886261e-01 - <_> - 1.4732933044433594e+01 - - 1 2 563 9.5000000000000000e+00 0 -1 564 - 5.0000000000000000e-01 -2 -3 565 4.5000000000000000e+00 - - -8.2908272743225098e-01 4.2271518707275391e-01 - 3.5304966568946838e-01 -3.6941051483154297e-01 - <_> - 1.4693087577819824e+01 - - 1 2 566 1.7250000000000000e+02 0 -1 567 59. -2 -3 568 - 1.1475000000000000e+03 - - 1.8885573744773865e-01 -5.3026914596557617e-01 - 3.7803548574447632e-01 -4.6766680479049683e-01 - <_> - 1.4745432853698730e+01 - - 1 2 569 1.3495000000000000e+03 0 -1 570 - 1.8257500000000000e+04 -2 -3 571 2.3425000000000000e+03 - - 6.3086611032485962e-01 -8.6466968059539795e-01 - -5.3896957635879517e-01 5.2345264703035355e-02 - <_> - 1.4932119369506836e+01 - - 1 2 572 2.2500000000000000e+01 0 -1 573 - 1.5000000000000000e+00 -2 -3 574 201. - - 3.3922508358955383e-01 -2.9905751347541809e-01 - 6.2781113386154175e-01 -6.2289994955062866e-01 - <_> - 1.4913761138916016e+01 - - 1 2 575 5.5000000000000000e+00 0 -1 576 - 2.3500000000000000e+01 -2 -3 577 3.1500000000000000e+01 - - -1.2805154547095299e-02 -8.7636989355087280e-01 - 5.5972194671630859e-01 -1.8357984721660614e-02 - <_> - 1.5149147987365723e+01 - - 1 2 578 9.5500000000000000e+01 0 -1 579 - 1.7500000000000000e+01 -2 -3 580 2.3500000000000000e+01 - - 3.1609076261520386e-01 -7.7603405714035034e-01 - -5.4710090160369873e-01 2.3538668453693390e-01 - <_> - 1.5329943656921387e+01 - - 1 2 581 6.5000000000000000e+00 0 -1 582 - 1.2500000000000000e+01 -2 -3 583 1.1050000000000000e+02 - - -6.9671869277954102e-01 4.9136134982109070e-01 - -4.6433421969413757e-01 2.6395168900489807e-01 - <_> - 1.5564647674560547e+01 - - 1 2 584 5.6215000000000000e+03 0 -1 585 - 1.2250000000000000e+02 -2 -3 586 2.3500000000000000e+01 - - 2.3470385372638702e-01 -3.8976871967315674e-01 - -7.1197110414505005e-01 8.2057034969329834e-01 - <_> - 1.5355414390563965e+01 - - 1 2 587 38. 0 -1 588 5.0000000000000000e-01 -2 -3 589 538. - - 1.3751998543739319e-01 -5.2037465572357178e-01 - -5.0987344980239868e-01 4.1290232539176941e-01 - <_> - 1.5045125007629395e+01 - - 1 2 590 1.5645000000000000e+03 0 -1 591 - 5.4325000000000000e+03 -2 -3 592 1.2175000000000000e+03 - - -5.2137178182601929e-01 8.4993147850036621e-01 - -3.6553221940994263e-01 1.5015892684459686e-01 - <_> - 1.5401144027709961e+01 - - 1 2 593 4.9850000000000000e+02 0 -1 594 - 7.4750000000000000e+02 -2 -3 595 1.1765000000000000e+03 - - -6.4674472808837891e-01 3.5601863265037537e-01 - 4.2863798141479492e-01 -5.4054826498031616e-01 - <_> - 1.5869146347045898e+01 - - 1 2 596 1.7500000000000000e+01 0 -1 597 - 1.4500000000000000e+01 -2 -3 598 1.5500000000000000e+01 - - -6.3737052679061890e-01 4.6800240874290466e-01 - 2.9216369986534119e-01 -4.2118266224861145e-01 - <_> - 1.5621976852416992e+01 - - 1 2 599 1.2028050000000000e+05 0 -1 600 - 5.0000000000000000e-01 -2 -3 601 1.6150000000000000e+02 - - 5.1389163732528687e-01 -9.5765459537506104e-01 - -2.4716944992542267e-01 3.0435198545455933e-01 - <_> - 1.5864768028259277e+01 - - 1 2 602 805. 0 -1 603 9.9500000000000000e+01 -2 -3 604 142. - - 2.4279133975505829e-01 -5.3714054822921753e-01 - -7.2764933109283447e-01 9.6386188268661499e-01 - <_> - 1.6094741821289062e+01 - - 1 2 605 1.3500000000000000e+01 0 -1 606 - 3.8500000000000000e+01 -2 -3 607 6.3500000000000000e+01 - - -6.6710120439529419e-01 6.3659375905990601e-01 - 5.6683868169784546e-01 -7.7470704913139343e-02 - <_> - 1.6352821350097656e+01 - - 1 2 608 2.4500000000000000e+01 0 -1 609 321. -2 -3 610 - 2.1500000000000000e+01 - - 3.7493336200714111e-01 -4.8655620217323303e-01 - -3.4665739536285400e-01 4.6393311023712158e-01 - <_> - 1.6565885543823242e+01 - - 1 2 611 99. 0 -1 612 2.7500000000000000e+01 -2 -3 613 18. - - -4.0105590224266052e-01 2.1306316554546356e-01 - 9.1738814115524292e-01 -9.6910119056701660e-01 - <_> - 1.6171833038330078e+01 - - 1 2 614 6.2500000000000000e+01 0 -1 615 850. -2 -3 616 - 6.4350000000000000e+02 - - 3.9383631944656372e-01 -3.4801158308982849e-01 - -5.9990471601486206e-01 2.6293095946311951e-01 - <_> - 1.6745443344116211e+01 - - 1 2 617 1.2715000000000000e+03 0 -1 618 - 4.5000000000000000e+00 -2 -3 619 1.0584500000000000e+04 - - 3.5729202628135681e-01 -3.7123405933380127e-01 - 5.7361000776290894e-01 -7.0969957113265991e-01 - <_> - 1.6956495285034180e+01 - - 1 2 620 3.6500000000000000e+01 0 -1 621 - 1.5000000000000000e+00 -2 -3 622 3.2500000000000000e+01 - - 4.9200624227523804e-01 -8.8115519285202026e-01 - -6.2640070915222168e-01 2.1105219423770905e-01 - <_> - 1.6578645706176758e+01 - - 1 2 623 5.5850000000000000e+02 0 -1 624 - 1.2405000000000000e+03 -2 -3 625 6.2065000000000000e+03 - - -3.0536270141601562e-01 5.6700426340103149e-01 - 5.8548355102539062e-01 -3.8756856322288513e-01 - <_> - 1.6797395706176758e+01 - - 1 2 626 6.3500000000000000e+01 0 -1 627 - 2.6050000000000000e+02 -2 -3 628 3.4035000000000000e+03 - - 2.1875059604644775e-01 -8.0542641878128052e-01 - 7.2240287065505981e-01 -7.4785083532333374e-01 - <_> - 1.7109027862548828e+01 - - 1 2 629 3.8500000000000000e+01 0 -1 630 - 8.5000000000000000e+00 -2 -3 631 6.5000000000000000e+00 - - 6.9990634918212891e-01 -6.7117756605148315e-01 - 5.0323921442031860e-01 -9.7235314548015594e-02 - <_> - 1.7138694763183594e+01 - - 1 2 632 2.2500000000000000e+01 0 -1 633 - 3.5000000000000000e+00 -2 -3 634 2.5850000000000000e+02 - - 2.9667703434824944e-02 -6.7911773920059204e-01 - -3.2311308383941650e-01 3.8892340660095215e-01 - <_> - 1.7337394714355469e+01 - - 1 2 635 1.5450000000000000e+02 0 -1 636 - 2.5000000000000000e+00 -2 -3 637 3.1450000000000000e+02 - - -7.9533338546752930e-01 1.9869966804981232e-01 - -6.8889272212982178e-01 6.1526125669479370e-01 - <_> - 1.7321151733398438e+01 - - 1 2 638 1.0500000000000000e+01 0 -1 639 36. -2 -3 640 - 2.1500000000000000e+01 - - -8.3758604526519775e-01 3.5460218787193298e-01 - 2.2363138198852539e-01 -5.2678769826889038e-01 - <_> - 1.7182849884033203e+01 - - 1 2 641 4.6085000000000000e+03 0 -1 642 - 5.8500000000000000e+01 -2 -3 643 1.9495000000000000e+03 - - -7.5954502820968628e-01 4.3844437599182129e-01 - 5.2219676971435547e-01 -1.3830167055130005e-01 - <_> - 1.6850194931030273e+01 - - 1 2 644 1.5000000000000000e+00 0 -1 645 - 5.3500000000000000e+01 -2 -3 646 5.0000000000000000e-01 - - -3.6336588859558105e-01 3.9829358458518982e-01 - 1.3566142320632935e-01 -5.0935441255569458e-01 - <_> - 1.7548809051513672e+01 - - 1 2 647 5.0000000000000000e-01 0 -1 648 - 4.5000000000000000e+00 -2 -3 649 4.8150000000000000e+02 - - -6.3685965538024902e-01 6.9861376285552979e-01 - -2.4660472571849823e-01 5.1089668273925781e-01 - <_> - 1.7800493240356445e+01 - - 1 2 650 8.4115000000000000e+03 0 -1 651 - 3.5000000000000000e+00 -2 -3 652 1.0500000000000000e+01 - - -4.2067098617553711e-01 2.5168481469154358e-01 - 3.3256745338439941e-01 -8.4237796068191528e-01 - <_> - 1.7848138809204102e+01 - - 1 2 653 1.0500000000000000e+01 0 -1 654 69. -2 -3 655 - 9.5500000000000000e+01 - - -6.9294911623001099e-01 4.2984691262245178e-01 - -6.0193759202957153e-01 4.7644726932048798e-02 - <_> - 1.7507314682006836e+01 - - 1 2 656 8.5000000000000000e+00 0 -1 657 - 8.5000000000000000e+00 -2 -3 658 6.4500000000000000e+01 - - -1. 5.8663016557693481e-01 -3.4082308411598206e-01 - 3.3277565240859985e-01 - <_> - 1.7846509933471680e+01 - - 1 2 659 6.9500000000000000e+01 0 -1 660 - 1.5500000000000000e+01 -2 -3 661 1.5000000000000000e+00 - - 3.3919540047645569e-01 -2.3123474419116974e-01 - -6.8450891971588135e-01 1.9382451474666595e-01 - <_> - 1.7992757797241211e+01 - - 1 2 662 1.2135000000000000e+03 0 -1 663 - 5.5000000000000000e+00 -2 -3 664 9912. - - 1.4624653756618500e-01 -5.0702661275863647e-01 - 5.2294051647186279e-01 -3.3612698316574097e-01 - <_> - 1.8306097030639648e+01 - - 1 2 665 1.1150000000000000e+02 0 -1 666 - 2.9500000000000000e+01 -2 -3 667 131. - - 2.2407530248165131e-01 -4.9484744668006897e-01 - 4.4897791743278503e-01 -5.9033888578414917e-01 - <_> - 1.8481115341186523e+01 - - 1 2 668 5.4500000000000000e+01 0 -1 669 - 4.5000000000000000e+00 -2 -3 670 1.0450000000000000e+02 - - 9.0135312080383301e-01 -8.8288795948028564e-01 - 1.7501948773860931e-01 -5.7581090927124023e-01 - <_> - 1.8067760467529297e+01 - - 1 2 671 3.3500000000000000e+01 0 -1 672 - 5.0000000000000000e-01 -2 -3 673 9.3500000000000000e+01 - - 3.3020740747451782e-01 -5.1798826456069946e-01 - -4.4331407546997070e-01 3.4977889060974121e-01 - <_> - 1.8271715164184570e+01 - - 1 2 674 1.6950000000000000e+02 0 -1 675 - 5.5000000000000000e+00 -2 -3 676 1.5850000000000000e+02 - - -7.4128860235214233e-01 2.0395421981811523e-01 - -6.4517414569854736e-01 1. - <_> - 1.8107772827148438e+01 - - 1 2 677 3.4335000000000000e+03 0 -1 678 - 6.8955000000000000e+03 -2 -3 679 8.2335000000000000e+03 - - -1.0244774073362350e-01 7.3749846220016479e-01 - -4.6216171979904175e-01 7.2175997495651245e-01 - <_> - 1.8459823608398438e+01 - - 1 2 680 4.5000000000000000e+00 0 -1 681 149. -2 -3 682 - 3.5000000000000000e+00 - - -8.7881535291671753e-01 3.5205116868019104e-01 - 2.8036254644393921e-01 -4.4955471158027649e-01 - <_> - 1.8034639358520508e+01 - - 1 2 683 9.2500000000000000e+01 0 -1 684 - 6.0500000000000000e+01 -2 -3 685 1.0795000000000000e+03 - - 3.0652499198913574e-01 -4.2518511414527893e-01 - 4.2748662829399109e-01 -7.5712633132934570e-01 - <_> - 1.8265748977661133e+01 - - 1 2 686 4137. 0 -1 687 4.5000000000000000e+00 -2 -3 688 - 2.2500000000000000e+01 - - 2.6524448394775391e-01 -8.7384039163589478e-01 - 2.3110976815223694e-01 -4.6121290326118469e-01 - <_> - 1.8894989013671875e+01 - - 1 2 689 8.2650000000000000e+02 0 -1 690 - 3.0650000000000000e+02 -2 -3 691 5.6025000000000000e+03 - - -3.5010933876037598e-01 4.3205916881561279e-01 - 6.2924057245254517e-01 -4.4751787185668945e-01 - <_> - 1.9186059951782227e+01 - - 1 2 692 1.1500000000000000e+01 0 -1 693 10537. -2 -3 694 - 2.8500000000000000e+01 - - 7.5397258996963501e-01 -8.4067875146865845e-01 - 2.9107019305229187e-01 -2.9084861278533936e-01 - <_> - 1.9097457885742188e+01 - - 1 2 695 5.0000000000000000e-01 0 -1 696 - 2.3365000000000000e+03 -2 -3 697 53. - - -2.0022928714752197e-01 5.5956262350082397e-01 - -3.5728842020034790e-01 6.0947358608245850e-01 - <_> - 1.9231519699096680e+01 - - 1 2 698 2.9250000000000000e+02 0 -1 699 7389. -2 -3 700 - 7.1615000000000000e+03 - - 4.6205502748489380e-01 -3.7696495652198792e-01 - -5.6401371955871582e-01 1.2572592496871948e-01 - <_> - 1.9182878494262695e+01 - - 1 2 701 1.5000000000000000e+00 0 -1 702 2558. -2 -3 703 - 2.5000000000000000e+00 - - 5.7061773538589478e-01 -8.8573408126831055e-01 - 5.6795483827590942e-01 -4.8640340566635132e-02 - <_> - 1.9205448150634766e+01 - - 1 2 704 6.7250000000000000e+02 0 -1 705 - 4.5185000000000000e+03 -2 -3 706 1.6950000000000000e+02 - - 2.2569710388779640e-02 -5.9597754478454590e-01 -1. - 9.1055244207382202e-01 - <_> - 1.9722917556762695e+01 - - 1 2 707 5.2150000000000000e+02 0 -1 708 - 2.2500000000000000e+01 -2 -3 709 22. - - -3.8346976041793823e-01 1.7193076014518738e-01 - -7.7268058061599731e-01 5.1746833324432373e-01 - <_> - 1.9223962783813477e+01 - - 1 2 710 1.6450000000000000e+02 0 -1 711 - 6.0500000000000000e+01 -2 -3 712 4.4500000000000000e+01 - - 2.2410076856613159e-01 -6.7257648706436157e-01 - -6.6855657100677490e-01 8.4185588359832764e-01 - <_> - 1.9324115753173828e+01 - - 1 2 713 3.1500000000000000e+01 0 -1 714 885. -2 -3 715 458. - - 3.4352478384971619e-01 -6.2290155887603760e-01 - -1.5769523382186890e-01 4.6984970569610596e-01 - <_> - 1.9645074844360352e+01 - - 1 2 716 1.5000000000000000e+00 0 -1 717 - 2.7500000000000000e+01 -2 -3 718 5.0000000000000000e-01 - - -1.5117371082305908e-01 5.1611447334289551e-01 - 3.8312494754791260e-01 -4.8121353983879089e-01 - <_> - 1.9339143753051758e+01 - - 1 2 719 355. 0 -1 720 5.5000000000000000e+00 -2 -3 721 - 4.1500000000000000e+01 - - -3.9813804626464844e-01 2.2346007823944092e-01 1. - -8.0484783649444580e-01 - <_> - 1.9826204299926758e+01 - - 1 2 722 5.0000000000000000e-01 0 -1 723 - 1.4145000000000000e+03 -2 -3 724 2.2500000000000000e+01 - - 4.8705908656120300e-01 -4.7939151525497437e-01 - -4.1103795170783997e-01 3.4255331754684448e-01 - <_> - 2.0040077209472656e+01 - - 1 2 725 1.5585000000000000e+03 0 -1 726 - 7.5450000000000000e+02 -2 -3 727 7.0250000000000000e+02 - - -6.1711019277572632e-01 2.1387414634227753e-01 - 8.2314563915133476e-03 -8.8682103157043457e-01 - <_> - 1.9832237243652344e+01 - - 1 2 728 3.7250000000000000e+02 0 -1 729 - 1.2500000000000000e+01 -2 -3 730 5.0000000000000000e-01 - - 6.4650267362594604e-01 -6.3438403606414795e-01 - 8.2046084105968475e-02 -4.0398535132408142e-01 - <_> - 2.0015359878540039e+01 - - 1 2 731 616. 0 -1 732 5.3950000000000000e+02 -2 -3 733 - 1.6500000000000000e+01 - - 8.7944704294204712e-01 -8.7063318490982056e-01 - -7.1043938398361206e-01 1.8312272429466248e-01 - <_> - 1.9969459533691406e+01 - - 1 2 734 5.5500000000000000e+01 0 -1 735 - 1.8500000000000000e+01 -2 -3 736 463. - - -4.5961013436317444e-01 5.2103579044342041e-01 - -6.5900236368179321e-01 -4.5900702476501465e-02 - <_> - 1.9850994110107422e+01 - - 1 2 737 1.5000000000000000e+00 0 -1 738 - 3.5500000000000000e+01 -2 -3 739 1.3995000000000000e+03 - - -4.4971930980682373e-01 5.4433470964431763e-01 - 1.3450010120868683e-01 -4.4755488634109497e-01 - <_> - 1.9611703872680664e+01 - - 1 2 740 1.2185000000000000e+03 0 -1 741 - 2.5000000000000000e+00 -2 -3 742 2.0500000000000000e+01 - - -1.1004138737916946e-02 -6.4876526594161987e-01 - 5.7901018857955933e-01 -2.3929107189178467e-01 - <_> - 1.9846769332885742e+01 - - 1 2 743 9.5000000000000000e+00 0 -1 744 26. -2 -3 745 - 7.5000000000000000e+00 - - 2.8899505734443665e-01 -7.0432722568511963e-01 - 2.3506632447242737e-01 -6.7175412178039551e-01 - <_> - 1.9991693496704102e+01 - - 1 2 746 5.5000000000000000e+00 0 -1 747 119. -2 -3 748 - 1.2950000000000000e+02 - - 1. -9.5935773849487305e-01 1.4492283761501312e-01 - -6.2346059083938599e-01 - <_> - 2.0697137832641602e+01 - - 1 2 749 108. 0 -1 750 5.5000000000000000e+00 -2 -3 751 - 6.0050000000000000e+02 - - 2.0598402619361877e-01 -3.1419786810874939e-01 - 7.0544409751892090e-01 -9.1675537824630737e-01 - <_> - 2.0869754791259766e+01 - - 1 2 752 2.1500000000000000e+01 0 -1 753 - 8.5000000000000000e+00 -2 -3 754 5.2500000000000000e+01 - - -9.2930352687835693e-01 1. 1.7261737585067749e-01 - -7.1494102478027344e-01 - <_> - 2.0861036300659180e+01 - - 1 2 755 5.0000000000000000e-01 0 -1 756 - 6.5000000000000000e+00 -2 -3 757 36104. - - -9.8012816905975342e-01 3.0874124169349670e-01 - -4.9350947141647339e-01 1.4333745837211609e-01 - <_> - 2.0605552673339844e+01 - - 1 2 758 5.4500000000000000e+01 0 -1 759 - 5.6350000000000000e+02 -2 -3 760 1.5625000000000000e+03 - - 2.8180310130119324e-01 -3.0899211764335632e-01 - 6.7988240718841553e-01 -8.8957315683364868e-01 - <_> - 2.0792449951171875e+01 - - 1 2 761 7.4500000000000000e+01 0 -1 762 - 2.1350000000000000e+02 -2 -3 763 4.5000000000000000e+00 - - 7.5075513124465942e-01 -8.8623046875000000e-01 - 4.6418187022209167e-01 -9.8970189690589905e-02 - <_> - 2.0991796493530273e+01 - - 1 2 764 3985. 0 -1 765 5.5000000000000000e+00 -2 -3 766 - 5.5000000000000000e+00 - - 3.1011736392974854e-01 -2.7613282203674316e-01 -1. - 8.9613044261932373e-01 - <_> - 2.1320064544677734e+01 - - 1 2 767 2.8500000000000000e+01 0 -1 768 - 2.6250000000000000e+02 -2 -3 769 2.6500000000000000e+01 - - 7.0724177360534668e-01 -4.7540894150733948e-01 - 3.2826820015907288e-01 -6.3711547851562500e-01 - <_> - 2.1143175125122070e+01 - - 1 2 770 1.7500000000000000e+01 0 -1 771 - 5.8500000000000000e+01 -2 -3 772 7704. - - -6.2765136361122131e-02 4.9819609522819519e-01 - 1.8703785538673401e-01 -9.2927688360214233e-01 - <_> - 2.1136123657226562e+01 - - 1 2 773 4.5000000000000000e+00 0 -1 774 - 1.5000000000000000e+00 -2 -3 775 6.3500000000000000e+01 - - -8.5042881965637207e-01 3.7720718979835510e-01 - -6.6263186931610107e-01 -7.0531466044485569e-03 - <_> - 2.0957967758178711e+01 - - 1 2 776 2.3355000000000000e+03 0 -1 777 - 1.6655000000000000e+03 -2 -3 778 7.7950000000000000e+02 - - -5.8912044763565063e-01 7.2663074731826782e-01 - 7.1329838037490845e-01 -9.2555418610572815e-02 - <_> - 2.1328319549560547e+01 - - 1 2 779 4.5000000000000000e+00 0 -1 780 - 1.7500000000000000e+01 -2 -3 781 116. - - 5.8393400907516479e-01 -5.6582391262054443e-01 - -7.0427477359771729e-01 -3.2516807317733765e-02 - <_> - 2.1190340042114258e+01 - - 1 2 782 5.0000000000000000e-01 0 -1 783 - 5.5000000000000000e+00 -2 -3 784 2.2500000000000000e+01 - - -7.9387390613555908e-01 4.3818581104278564e-01 - -4.3716219067573547e-01 2.7609312534332275e-01 - <_> - 2.1414947509765625e+01 - - 1 2 785 1.7500000000000000e+01 0 -1 786 - 2.0500000000000000e+01 -2 -3 787 3.4500000000000000e+01 - - -3.2550397515296936e-01 2.9646944999694824e-01 - 3.9801727980375290e-02 -8.1744748353958130e-01 - <_> - 2.1027912139892578e+01 - - 1 2 788 3.5000000000000000e+00 0 -1 789 - 1.0500000000000000e+01 -2 -3 790 3.0015000000000000e+03 - - -5.8203905820846558e-01 3.9097124338150024e-01 - 4.4877341389656067e-01 -4.5889684557914734e-01 - <_> - 2.1614578247070312e+01 - - 1 2 791 1.2545000000000000e+03 0 -1 792 - 5.0000000000000000e-01 -2 -3 793 21. - - 3.3954218029975891e-01 -3.9357089996337891e-01 - -7.9993861913681030e-01 5.8666568994522095e-01 - <_> - 2.2001014709472656e+01 - - 1 2 794 1.5495000000000000e+03 0 -1 795 751. -2 -3 796 - 1.4500000000000000e+01 - - -6.1558878421783447e-01 4.7567668557167053e-01 - 3.8643726706504822e-01 -4.9177539348602295e-01 - <_> - 2.2125329971313477e+01 - - 1 2 797 3.5500000000000000e+01 0 -1 798 - 1.0450000000000000e+02 -2 -3 799 1.2500000000000000e+01 - - 1.7887133359909058e-01 -8.5177820920944214e-01 - 4.1519433259963989e-01 -1.6076141595840454e-01 - <_> - 2.2388074874877930e+01 - - 1 2 800 550. 0 -1 801 3445. -2 -3 802 2.1850000000000000e+02 - - 1. -8.8448894023895264e-01 -2.4786205589771271e-01 - 2.6274520158767700e-01 - <_> - 2.2539171218872070e+01 - - 1 2 803 116554. 0 -1 804 1.7350000000000000e+02 -2 -3 805 - 8.9500000000000000e+01 - - 2.4936345219612122e-01 -6.2610012292861938e-01 - -6.6242986917495728e-01 4.0655055642127991e-01 - <_> - 2.2177883148193359e+01 - - 1 2 806 4.5000000000000000e+00 0 -1 807 - 5.0000000000000000e-01 -2 -3 808 3.5065000000000000e+03 - - -7.4715948104858398e-01 3.9860600233078003e-01 - -5.3111910820007324e-01 1.2362924218177795e-01 - <_> - 2.2504861831665039e+01 - - 1 2 809 1.4865000000000000e+03 0 -1 810 - 5.0000000000000000e-01 -2 -3 811 29. - - 1.3726322352886200e-01 -6.5520441532135010e-01 - -7.5685930252075195e-01 3.2698005437850952e-01 - <_> - 2.2686376571655273e+01 - - 1 2 812 5.2500000000000000e+01 0 -1 813 - 2.6500000000000000e+01 -2 -3 814 3.0500000000000000e+01 - - -1.5744365751743317e-01 5.0805997848510742e-01 - -7.4109727144241333e-01 3.1853440403938293e-01 - <_> - 2.2791370391845703e+01 - - 1 2 815 2.3450000000000000e+02 0 -1 816 - 2.5000000000000000e+00 -2 -3 817 147638. - - -8.8153153657913208e-02 5.4080992937088013e-01 - 4.0426537394523621e-01 -6.1521077156066895e-01 - <_> - 2.2746583938598633e+01 - - 1 2 818 2.2500000000000000e+01 0 -1 819 - 3.7650000000000000e+02 -2 -3 820 3.5000000000000000e+00 - - 8.3446598052978516e-01 -8.2142156362533569e-01 - 6.4422589540481567e-01 -4.4787917286157608e-02 - <_> - 2.2948705673217773e+01 - - 1 2 821 1.0500000000000000e+01 0 -1 822 201. -2 -3 823 - 6.7500000000000000e+01 - - -2.8939151763916016e-01 3.3829051256179810e-01 - -5.8153116703033447e-01 3.8105338811874390e-01 - <_> - 2.2919631958007812e+01 - - 1 2 824 4.5000000000000000e+00 0 -1 825 - 5.2075000000000000e+03 -2 -3 826 3.8500000000000000e+01 - - 6.2978500127792358e-01 -1.7962990701198578e-01 - -6.0869598388671875e-01 -2.9075229540467262e-02 - <_> - 2.3112272262573242e+01 - - 1 2 827 456. 0 -1 828 2.1500000000000000e+01 -2 -3 829 271. - - -6.7311352491378784e-01 1.9264096021652222e-01 - -7.6656156778335571e-01 7.5126051902770996e-01 - <_> - 2.3314619064331055e+01 - - 1 2 830 9.5000000000000000e+00 0 -1 831 62. -2 -3 832 - 1.0250000000000000e+02 - - 5.3542816638946533e-01 -7.8225767612457275e-01 - -4.1664305329322815e-01 2.2309158742427826e-01 - <_> - 2.3092792510986328e+01 - - 1 2 833 1.6245000000000000e+03 0 -1 834 - 2.1405000000000000e+03 -2 -3 835 2.3500000000000000e+01 - - 7.6887971162796021e-01 -7.8312724828720093e-01 - 3.3704435825347900e-01 -2.2182606160640717e-01 - <_> - 2.3098850250244141e+01 - - 1 2 836 5.7500000000000000e+01 0 -1 837 30. -2 -3 838 - 1.1750000000000000e+02 - - -3.9047434926033020e-01 7.0053535699844360e-01 - 6.3777458667755127e-01 -1.5085510909557343e-01 - <_> - 2.3334737777709961e+01 - - 1 2 839 1.9350000000000000e+02 0 -1 840 20715. -2 -3 841 - 3.5000000000000000e+00 - - -1.6165058314800262e-01 5.8560174703598022e-01 - 6.2762081623077393e-02 -5.0060212612152100e-01 - <_> - 2.3548194885253906e+01 - - 1 2 842 1.5500000000000000e+01 0 -1 843 - 4.5000000000000000e+00 -2 -3 844 318. - - 6.7111068964004517e-01 -8.1105804443359375e-01 - 2.1345792710781097e-01 -6.4082610607147217e-01 - <_> - 2.3465780258178711e+01 - - 1 2 845 1.5000000000000000e+00 0 -1 846 - 9.6250000000000000e+02 -2 -3 847 1.0500000000000000e+01 - - 3.3311456441879272e-01 -7.9367685317993164e-01 - 5.8400928974151611e-01 -8.2414992153644562e-02 - <_> - 2.3698833465576172e+01 - - 1 2 848 2.5750000000000000e+02 0 -1 849 - 2.0622500000000000e+04 -2 -3 850 133. - - -2.1840496361255646e-01 6.1215102672576904e-01 - 7.2797334194183350e-01 -7.8106528520584106e-01 - <_> - 2.4240703582763672e+01 - - 1 2 851 62616. 0 -1 852 5.1750000000000000e+02 -2 -3 853 - 2.0985000000000000e+03 - - -7.3088161647319794e-02 5.4187005758285522e-01 - -9.7861820459365845e-01 8.4708303213119507e-01 - <_> - 2.4200925827026367e+01 - - 1 2 854 13008. 0 -1 855 1571. -2 -3 856 45. - - 6.6456145048141479e-01 -3.9776403456926346e-02 - -8.6307746171951294e-01 1. - <_> - 2.4082960128784180e+01 - - 1 2 857 3.5000000000000000e+00 0 -1 858 - 9.5000000000000000e+00 -2 -3 859 3.5000000000000000e+00 - - -1. 1. 2.9574161767959595e-01 -2.3182141780853271e-01 - <_> - 2.4084737777709961e+01 - - 1 2 860 3.7500000000000000e+01 0 -1 861 245. -2 -3 862 - 7.5000000000000000e+00 - - 4.1369399428367615e-01 -4.1193068027496338e-01 - 5.4411876201629639e-01 -1.9174022972583771e-01 - <_> - 2.3971153259277344e+01 - - 1 2 863 7.2500000000000000e+01 0 -1 864 - 2.5500000000000000e+01 -2 -3 865 5620. - - 4.0953439474105835e-01 -7.1287387609481812e-01 - 2.9135236144065857e-01 -4.4266882538795471e-01 - <_> - 2.4037570953369141e+01 - - 1 2 866 2.4500000000000000e+01 0 -1 867 - 2.1500000000000000e+01 -2 -3 868 1.3850000000000000e+02 - - -6.6728180646896362e-01 8.0503904819488525e-01 - 2.9000800848007202e-01 -3.3851844072341919e-01 - <_> - 2.4266254425048828e+01 - - 1 2 869 5.0000000000000000e-01 0 -1 870 - 1.7250000000000000e+02 -2 -3 871 2.2350000000000000e+02 - - 4.8248341679573059e-01 -3.8941776752471924e-01 - -3.1365787982940674e-01 5.1915067434310913e-01 - <_> - 2.4528257369995117e+01 - - 1 2 872 4.3500000000000000e+01 0 -1 873 38. -2 -3 874 - 1.8500000000000000e+01 - - 8.9310199022293091e-02 -7.2979074716567993e-01 - -8.7608027458190918e-01 2.6200246810913086e-01 - <_> - 2.4948534011840820e+01 - - 1 2 875 1.7500000000000000e+01 0 -1 876 - 5.0000000000000000e-01 -2 -3 877 1.9050000000000000e+02 - - 1.2763984501361847e-01 -6.1743724346160889e-01 - 4.2027613520622253e-01 -3.6524018645286560e-01 - <_> - 2.4699710845947266e+01 - - 1 2 878 1.5500000000000000e+01 0 -1 879 - 9.5000000000000000e+00 -2 -3 880 1.1950000000000000e+02 - - -7.6706290245056152e-01 4.8537570238113403e-01 - -5.4855662584304810e-01 8.2174651324748993e-02 - <_> - 2.4984062194824219e+01 - - 1 2 881 1.5000000000000000e+00 0 -1 882 - 1.4500000000000000e+01 -2 -3 883 7.4500000000000000e+01 - - -9.5929491519927979e-01 2.8435263037681580e-01 - -5.6600302457809448e-01 1.5080869197845459e-01 - <_> - 2.5305467605590820e+01 - - 1 2 884 1.5000000000000000e+00 0 -1 885 - 1.4500000000000000e+01 -2 -3 886 5.2150000000000000e+02 - - 3.2140514254570007e-01 -7.5512856245040894e-01 - -5.6036186218261719e-01 1.1670445650815964e-01 - <_> - 2.5274513244628906e+01 - - 1 2 887 1.9500000000000000e+01 0 -1 888 - 1.0650000000000000e+02 -2 -3 889 8.4050000000000000e+02 - - -8.7158387899398804e-01 4.3117862939834595e-01 - 1.4426548779010773e-01 -4.6586552262306213e-01 - <_> - 2.4883895874023438e+01 - - 1 2 890 3.0650000000000000e+02 0 -1 891 - 5.0000000000000000e-01 -2 -3 892 4.5500000000000000e+01 - - 1.8699711561203003e-01 -3.9061647653579712e-01 - -7.0082974433898926e-01 6.7297667264938354e-01 - <_> - 2.5504806518554688e+01 - - 1 2 893 5.0000000000000000e-01 0 -1 894 - 3.1151500000000000e+04 -2 -3 895 500. - - 6.5120726823806763e-01 -4.1004878282546997e-01 - -4.7606337070465088e-01 9.5995731651782990e-02 - <_> - 2.5152439117431641e+01 - - 1 2 896 5.5000000000000000e+00 0 -1 897 - 1.9500000000000000e+01 -2 -3 898 5.9500000000000000e+01 - - -1.2321064621210098e-01 6.1841166019439697e-01 - -3.6375361680984497e-01 5.2369672060012817e-01 - <_> - 2.5155344009399414e+01 - - 1 2 899 1.8674500000000000e+04 0 -1 900 - 2.1850000000000000e+02 -2 -3 901 8562. - - -1.6005823388695717e-02 6.5699905157089233e-01 - -9.5848602056503296e-01 5.1249152421951294e-01 - <_> - 2.5483896255493164e+01 - - 1 2 902 9.1500000000000000e+01 0 -1 903 - 5.4500000000000000e+01 -2 -3 904 1673. - - -1.8930622935295105e-01 3.2855287194252014e-01 - 3.8335686922073364e-01 -9.2048138380050659e-01 - <_> - 2.5274023056030273e+01 - - 1 2 905 9.0500000000000000e+01 0 -1 906 - 2.9500000000000000e+01 -2 -3 907 161. - - 1.9278690218925476e-01 -4.3163070082664490e-01 - -8.2271754741668701e-01 6.6138559579849243e-01 - <_> - 2.5197338104248047e+01 - - 1 2 908 6.0500000000000000e+01 0 -1 909 - 3.5000000000000000e+00 -2 -3 910 2.1500000000000000e+01 - - 1.6147840023040771e-01 -7.2664386034011841e-01 - 6.0210800170898438e-01 -7.6684340834617615e-02 - <_> - 2.5375751495361328e+01 - - 1 2 911 1.2500000000000000e+01 0 -1 912 - 1.0500000000000000e+01 -2 -3 913 3.5000000000000000e+00 - - 3.1757584214210510e-01 -9.6368086338043213e-01 - 3.0798566341400146e-01 -2.2424852848052979e-01 - <_> - 2.5239341735839844e+01 - - 1 2 914 2.0500000000000000e+01 0 -1 915 - 5.0000000000000000e-01 -2 -3 916 5.2500000000000000e+01 - - 5.4820358753204346e-01 -2.6598191261291504e-01 - 6.2160044908523560e-01 -6.1119222640991211e-01 - <_> - 2.5769451141357422e+01 - - 1 2 917 8.5000000000000000e+00 0 -1 918 - 3.5000000000000000e+00 -2 -3 919 785. - - -5.2361053228378296e-01 1.3663402758538723e-02 - 5.3010904788970947e-01 -5.6690508127212524e-01 - <_> - 2.6132120132446289e+01 - - 1 2 920 3.5000000000000000e+00 0 -1 921 - 5.5000000000000000e+00 -2 -3 922 2.7500000000000000e+01 - - -3.4756454825401306e-01 6.6776388883590698e-01 - -3.2966667413711548e-01 3.6266979575157166e-01 - <_> - 2.5398084640502930e+01 - - 1 2 923 3.7500000000000000e+01 0 -1 924 - 4.5450000000000000e+02 -2 -3 925 76. - - -5.9789156913757324e-01 2.5262823700904846e-01 - -7.3403567075729370e-01 2.0674343407154083e-01 - <_> - 2.5510837554931641e+01 - - 1 2 926 11321. 0 -1 927 2.5000000000000000e+00 -2 -3 928 - 1.1450000000000000e+02 - - -8.3973264694213867e-01 1.1275193840265274e-01 - -9.1843432188034058e-01 8.7821447849273682e-01 - <_> - 2.6130455017089844e+01 - - 1 2 929 6.5000000000000000e+00 0 -1 930 3083. -2 -3 931 - 3.0875000000000000e+03 - - 4.2603471875190735e-01 -3.6732077598571777e-01 - -4.1711282730102539e-01 6.1961770057678223e-01 - <_> - 2.6262090682983398e+01 - - 1 2 932 17935. 0 -1 933 425. -2 -3 934 - 2.7176500000000000e+04 - - 4.5509326457977295e-01 -6.6757386922836304e-01 - -5.3166776895523071e-01 1.3163578510284424e-01 - <_> - 2.6658596038818359e+01 - - 1 2 935 1.7500000000000000e+01 0 -1 936 - 1.1745000000000000e+03 -2 -3 937 5.0000000000000000e-01 - - 2.5388157367706299e-01 -7.9901087284088135e-01 - 4.5095619559288025e-01 -1.0241491347551346e-01 - <_> - 2.6969305038452148e+01 - - 1 2 938 3.0500000000000000e+01 0 -1 939 - 2.4500000000000000e+01 -2 -3 940 2.2500000000000000e+01 - - 5.1047235727310181e-02 -8.9242154359817505e-01 - 3.1070950627326965e-01 -2.6842564344406128e-01 - <_> - 2.6705583572387695e+01 - - 1 2 941 1.3050000000000000e+02 0 -1 942 - 3.4500000000000000e+01 -2 -3 943 2.2150000000000000e+02 - - -1.1592853814363480e-01 -7.7454018592834473e-01 - 4.5384824275970459e-01 -3.1817260384559631e-01 - <_> - 2.6782285690307617e+01 - - 1 2 944 1.7735000000000000e+03 0 -1 945 - 9.5000000000000000e+00 -2 -3 946 4.5705000000000000e+03 - - -3.9006590843200684e-02 -9.5107847452163696e-01 - -6.5736269950866699e-01 1.7125985026359558e-01 - <_> - 2.7105680465698242e+01 - - 1 2 947 1.7625000000000000e+03 0 -1 948 - 1.3850000000000000e+02 -2 -3 949 1.9750000000000000e+02 - - 3.6351567506790161e-01 -5.5703014135360718e-01 - 1.4079628884792328e-01 -5.2406501770019531e-01 - <_> - 2.7263711929321289e+01 - - 1 2 950 2.5000000000000000e+00 0 -1 951 - 5.1850000000000000e+02 -2 -3 952 1.0500000000000000e+01 - - 6.5141850709915161e-01 -9.1679638624191284e-01 - 2.9593178629875183e-01 -2.6542136073112488e-01 - <_> - 2.6919979095458984e+01 - - 1 2 953 1286. 0 -1 954 5.0500000000000000e+01 -2 -3 955 - 9549. - - 2.3069593310356140e-01 -3.4373316168785095e-01 - 7.6501649618148804e-01 -1.6475467383861542e-01 - <_> - 2.7302589416503906e+01 - - 1 2 956 3.0500000000000000e+01 0 -1 957 - 3.5000000000000000e+00 -2 -3 958 20. - - 4.2295122146606445e-01 -5.0685709714889526e-01 - -6.1503076553344727e-01 3.8261166214942932e-01 - <_> - 2.7030504226684570e+01 - - 1 2 959 1.5000000000000000e+00 0 -1 960 - 4.2500000000000000e+01 -2 -3 961 7879. - - -8.3279174566268921e-01 3.1151020526885986e-01 - 5.7181537151336670e-01 -4.0998581051826477e-01 - <_> - 2.7195131301879883e+01 - - 1 2 962 1.9550000000000000e+02 0 -1 963 - 9.7500000000000000e+01 -2 -3 964 1.7450000000000000e+02 - - 1.7131289839744568e-01 -7.6953160762786865e-01 - -8.5992205142974854e-01 9.4537514448165894e-01 - <_> - 2.7257419586181641e+01 - - 1 2 965 5.1150000000000000e+02 0 -1 966 - 2.3335000000000000e+03 -2 -3 967 37646. - - -5.3452479839324951e-01 5.5600736290216446e-02 - 9.5302796363830566e-01 -8.5994201898574829e-01 - <_> - 2.7456840515136719e+01 - - 1 2 968 2.7500000000000000e+01 0 -1 969 - 4.5000000000000000e+00 -2 -3 970 3.2250000000000000e+02 - - 2.6460289955139160e-01 -3.8417342305183411e-01 - 4.4693005084991455e-01 -8.1004393100738525e-01 - <_> - 2.7806034088134766e+01 - - 1 2 971 2.3500000000000000e+01 0 -1 972 - 7.6500000000000000e+01 -2 -3 973 1.2500000000000000e+01 - - -5.5745208263397217e-01 3.4919399023056030e-01 - 3.5557851195335388e-01 -5.3877633810043335e-01 - <_> - 2.7538705825805664e+01 - - 1 2 974 7.9500000000000000e+01 0 -1 975 - 1.4500000000000000e+01 -2 -3 976 87. - - 2.8678986430168152e-01 -2.9876446723937988e-01 - 8.6640423536300659e-01 -1. - <_> - 2.7824981689453125e+01 - - 1 2 977 2.5550000000000000e+02 0 -1 978 - 4.5000000000000000e+00 -2 -3 979 4.8500000000000000e+01 - - 2.7033209800720215e-01 -5.0700926780700684e-01 - -6.5432757139205933e-01 3.9897635579109192e-01 - <_> - 2.8039585113525391e+01 - - 1 2 980 8.5500000000000000e+01 0 -1 981 - 1.2500000000000000e+01 -2 -3 982 2.1150000000000000e+02 - - -9.3840378522872925e-01 2.1460363268852234e-01 - -7.5958758592605591e-01 3.2656311988830566e-01 - <_> - 2.8358228683471680e+01 - - 1 2 983 2.5000000000000000e+00 0 -1 984 154. -2 -3 985 - 5.5000000000000000e+00 - - 1.8448559939861298e-01 -8.2974767684936523e-01 - 3.1864368915557861e-01 -2.1115814149379730e-01 - <_> - 2.7895002365112305e+01 - - 1 2 986 1.5500000000000000e+01 0 -1 987 3760. -2 -3 988 - 7.4650000000000000e+02 - - 5.6718933582305908e-01 -4.6322652697563171e-01 - -1.5654714405536652e-01 4.8763912916183472e-01 - <_> - 2.8411203384399414e+01 - - 1 2 989 3.6500000000000000e+01 0 -1 990 - 5.5000000000000000e+00 -2 -3 991 177. - - 1.9065493345260620e-01 -4.4433963298797607e-01 - 5.1620143651962280e-01 -6.8428224325180054e-01 - <_> - 2.8243703842163086e+01 - - 1 2 992 2.2550000000000000e+02 0 -1 993 - 1.0702500000000000e+04 -2 -3 994 2.1500000000000000e+01 - - 9.7185559570789337e-02 -8.7033015489578247e-01 - 2.9659673571586609e-01 -4.0642136335372925e-01 - <_> - 2.8063882827758789e+01 - - 1 2 995 1.1500000000000000e+01 0 -1 996 29. -2 -3 997 - 6.5000000000000000e+00 - - -1. 1. 3.6489042639732361e-01 -1.7982187867164612e-01 - <_> - 2.8595172882080078e+01 - - 1 2 998 3.4500000000000000e+01 0 -1 999 - 3.2500000000000000e+01 -2 -3 1000 1.1750000000000000e+02 - - 7.5150117278099060e-02 -5.3011858463287354e-01 - -3.1684866547584534e-01 5.3129112720489502e-01 - <_> - 2.8468202590942383e+01 - - 1 2 1001 1.6628500000000000e+04 0 -1 1002 - 1.0500000000000000e+01 -2 -3 1003 3.3545000000000000e+03 - - 6.4890080690383911e-01 -6.3209486007690430e-01 - 6.6508811712265015e-01 -1.2697088718414307e-01 - <_> - 2.8374160766601562e+01 - - 1 2 1004 8.5000000000000000e+00 0 -1 1005 - 8.5000000000000000e+00 -2 -3 1006 1.5000000000000000e+00 - - 5.2094990015029907e-01 -9.4638687372207642e-01 - 4.4523945450782776e-01 -9.4041898846626282e-02 - <_> - 2.8551000595092773e+01 - - 1 2 1007 3.1950000000000000e+02 0 -1 1008 - 6.6500000000000000e+01 -2 -3 1009 9.5000000000000000e+00 - - 6.6274866461753845e-02 -9.6256363391876221e-01 - -4.5958206057548523e-01 1.7684090137481689e-01 - <_> - 2.8745084762573242e+01 - - 1 2 1010 1.2350000000000000e+02 0 -1 1011 - 5.5000000000000000e+00 -2 -3 1012 2.3500000000000000e+01 - - -8.1710654497146606e-01 1.9408319890499115e-01 - -6.5851712226867676e-01 6.5294885635375977e-01 - <_> - 2.8799137115478516e+01 - - 1 2 1013 1.5000000000000000e+00 0 -1 1014 6367. -2 -3 1015 - 4.7500000000000000e+01 - - -5.7579481601715088e-01 6.5927535295486450e-01 - 3.2614521682262421e-02 -5.5185180902481079e-01 - <_> - 2.9203039169311523e+01 - - 1 2 1016 4.8500000000000000e+01 0 -1 1017 1563. -2 -3 1018 - 174. - - -1.8832503259181976e-01 8.4307962656021118e-01 - 6.7039912939071655e-01 -9.4139146804809570e-01 - <_> - 2.8794641494750977e+01 - - 1 2 1019 3.3355000000000000e+03 0 -1 1020 - 6.6555000000000000e+03 -2 -3 1021 8.7150000000000000e+02 - - -9.0944504737854004e-01 4.4833663105964661e-01 - -4.0839809179306030e-01 1.7850229144096375e-01 - <_> - 2.8677459716796875e+01 - - 1 2 1022 1.2185000000000000e+03 0 -1 1023 - 8.2550000000000000e+02 -2 -3 1024 3.0550000000000000e+02 - - -3.4955474734306335e-01 6.4450144767761230e-01 - 6.0581982135772705e-01 -1.1718237400054932e-01 - <_> - 2.8913532257080078e+01 - - 1 2 1025 2.7500000000000000e+01 0 -1 1026 - 2.7500000000000000e+01 -2 -3 1027 4.3500000000000000e+01 - - -8.5049676895141602e-01 2.3607361316680908e-01 - 7.3098081350326538e-01 -6.9291877746582031e-01 - <_> - 2.9108362197875977e+01 - - 1 2 1028 7.5000000000000000e+00 0 -1 1029 - 9.5000000000000000e+00 -2 -3 1030 4.5000000000000000e+00 - - -8.3998674154281616e-01 3.6129420995712280e-01 - 9.7287259995937347e-02 -5.4456633329391479e-01 - <_> - 2.8601478576660156e+01 - - 1 2 1031 6.9500000000000000e+01 0 -1 1032 3194. -2 -3 1033 - 1194. - - 1.1185812205076218e-01 -5.0688385963439941e-01 - -5.2819758653640747e-01 4.6284502744674683e-01 - <_> - 2.8964368820190430e+01 - - 1 2 1034 2.5000000000000000e+00 0 -1 1035 - 3.5000000000000000e+00 -2 -3 1036 5.5000000000000000e+00 - - -6.3642036914825439e-01 3.6289060115814209e-01 - 7.4139624834060669e-01 -4.1967025399208069e-01 - <_> - 2.9433172225952148e+01 - - 1 2 1037 3.0500000000000000e+01 0 -1 1038 - 5.0000000000000000e-01 -2 -3 1039 7.9500000000000000e+01 - - 3.6465510725975037e-01 -3.9573243260383606e-01 - -6.1006444692611694e-01 4.6880471706390381e-01 - <_> - 2.9406284332275391e+01 - - 1 2 1040 850. 0 -1 1041 8.3500000000000000e+01 -2 -3 1042 - 503. - - -1.3215389847755432e-01 5.3341400623321533e-01 - -6.0456317663192749e-01 1.4337512850761414e-01 - <_> - 2.9681335449218750e+01 - - 1 2 1043 5.0000000000000000e-01 0 -1 1044 - 2.2500000000000000e+01 -2 -3 1045 7.1050000000000000e+02 - - -8.8528215885162354e-02 6.7735338211059570e-01 - -4.3227946758270264e-01 2.7505078911781311e-01 - <_> - 2.9964553833007812e+01 - - 1 2 1046 9.8500000000000000e+01 0 -1 1047 - 3.1500000000000000e+01 -2 -3 1048 2.7650000000000000e+02 - - 2.8321748971939087e-01 -3.9361628890037537e-01 - -8.2609468698501587e-01 2.6064848899841309e-01 - <_> - 2.9945455551147461e+01 - - 1 2 1049 8.7500000000000000e+01 0 -1 1050 - 2.2385000000000000e+03 -2 -3 1051 6.4500000000000000e+01 - - 6.9241017103195190e-01 -1.5301111340522766e-01 - -6.6095316410064697e-01 -1.9096992909908295e-02 - <_> - 3.0012765884399414e+01 - - 1 2 1052 1.2500000000000000e+01 0 -1 1053 - 9.5000000000000000e+00 -2 -3 1054 5.0750000000000000e+02 - - -8.3019262552261353e-01 6.7893797159194946e-01 - -1.2832325696945190e-01 4.3415006995201111e-01 - <_> - 2.9930473327636719e+01 - - 1 2 1055 1.8500000000000000e+01 0 -1 1056 - 1.2500000000000000e+01 -2 -3 1057 8.5000000000000000e+00 - - -3.6613929271697998e-01 4.8394933342933655e-01 - 1.7974837124347687e-01 -4.4913277029991150e-01 - <_> - 3.0477281570434570e+01 - - 1 2 1058 5.1950000000000000e+02 0 -1 1059 - 4.4500000000000000e+01 -2 -3 1060 114. - - -7.6940767467021942e-02 5.4680854082107544e-01 - -8.7260067462921143e-01 6.8811720609664917e-01 - <_> - 3.0773675918579102e+01 - - 1 2 1061 1.0450000000000000e+02 0 -1 1062 - 2.8150000000000000e+02 -2 -3 1063 1125. - - 5.4583191871643066e-01 -5.2532721310853958e-02 - -7.8279995918273926e-01 3.1823691725730896e-01 - <_> - 3.0351808547973633e+01 - - 1 2 1064 3.5000000000000000e+00 0 -1 1065 - 1.5500000000000000e+01 -2 -3 1066 55. - - -7.3623555898666382e-01 3.5894340276718140e-01 - -4.2186784744262695e-01 4.3861863017082214e-01 - <_> - 3.0537498474121094e+01 - - 1 2 1067 4307. 0 -1 1068 1160. -2 -3 1069 - 2.1660500000000000e+04 - - -7.8279590606689453e-01 4.5567861199378967e-01 - 1.8568974733352661e-01 -8.9434182643890381e-01 - <_> - 3.0696584701538086e+01 - - 1 2 1070 4.4285000000000000e+03 0 -1 1071 - 5.0000000000000000e-01 -2 -3 1072 3.1735000000000000e+03 - - 2.0552167296409607e-01 -4.5957171916961670e-01 - 7.2746735811233521e-01 -9.0351656079292297e-02 - <_> - 3.0743759155273438e+01 - - 1 2 1073 3.7500000000000000e+01 0 -1 1074 - 9.5000000000000000e+00 -2 -3 1075 1.6750000000000000e+02 - - -1.5780667960643768e-01 4.7251480817794800e-01 - -6.7792648077011108e-01 4.7175608575344086e-02 - <_> - 3.0970186233520508e+01 - - 1 2 1076 3.3550000000000000e+02 0 -1 1077 - 1.5850000000000000e+02 -2 -3 1078 6.7500000000000000e+01 - - 2.2642576694488525e-01 -7.5154268741607666e-01 - -7.6098370552062988e-01 -2.8098121285438538e-02 - <_> - 3.0785564422607422e+01 - - 1 2 1079 3.5000000000000000e+00 0 -1 1080 - 1.0750000000000000e+02 -2 -3 1081 5.5000000000000000e+00 - - -1. 1. 3.4101343154907227e-01 -1.8462051451206207e-01 - <_> - 3.0677804946899414e+01 - - 1 2 1082 1.8745000000000000e+03 0 -1 1083 8. -2 -3 1084 - 2.7950000000000000e+02 - - 3.8025709986686707e-01 -9.3898135423660278e-01 - 4.3168732523918152e-01 -1.0776055604219437e-01 - <_> - 3.1114505767822266e+01 - - 1 2 1085 1.2235000000000000e+03 0 -1 1086 502. -2 -3 1087 - 1.4500000000000000e+01 - - -3.4203383326530457e-01 8.8017475605010986e-01 - -6.2440735101699829e-01 4.3670186400413513e-01 - <_> - 3.0781503677368164e+01 - - 1 2 1088 1.0765000000000000e+03 0 -1 1089 - 1.4445000000000000e+03 -2 -3 1090 6.5000000000000000e+00 - - -1.0597463697195053e-01 5.4891431331634521e-01 - 2.9310002923011780e-01 -3.9375761151313782e-01 - <_> - 3.1352016448974609e+01 - - 1 2 1091 5.2500000000000000e+01 0 -1 1092 - 1.5000000000000000e+00 -2 -3 1093 272. - - 6.0849022865295410e-01 -2.5873470306396484e-01 - 5.7051157951354980e-01 -1. - <_> - 3.1657224655151367e+01 - - 1 2 1094 5.5000000000000000e+00 0 -1 1095 - 1.6500000000000000e+01 -2 -3 1096 30152. - - -9.6481657028198242e-01 8.0561167001724243e-01 - 4.4867545366287231e-01 -1.1930578947067261e-01 - <_> - 3.1797657012939453e+01 - - 1 2 1097 4.5000000000000000e+00 0 -1 1098 - 1.4500000000000000e+01 -2 -3 1099 3.4500000000000000e+01 - - -3.8230931758880615e-01 6.5411078929901123e-01 - 4.3631002306938171e-02 -7.3598957061767578e-01 - <_> - 3.1739580154418945e+01 - - 1 2 1100 6.5000000000000000e+00 0 -1 1101 - 3.5000000000000000e+00 -2 -3 1102 2.5500000000000000e+01 - - 2.6922503113746643e-01 -9.2841345071792603e-01 - -5.8075804263353348e-02 5.9674555063247681e-01 - <_> - 3.2161308288574219e+01 - - 1 2 1103 5.0000000000000000e-01 0 -1 1104 - 1.5500000000000000e+01 -2 -3 1105 1.5000000000000000e+00 - - -7.3271411657333374e-01 4.2172768712043762e-01 - 1.8879570066928864e-01 -4.8092129826545715e-01 - <_> - 3.1522403717041016e+01 - - 1 2 1106 1.7500000000000000e+01 0 -1 1107 - 3.5000000000000000e+00 -2 -3 1108 5.1500000000000000e+01 - - 4.1741237044334412e-01 -6.3890427350997925e-01 - -2.4483518302440643e-01 3.4861907362937927e-01 - <_> - 3.1028701782226562e+01 - - 1 2 1109 1.6500000000000000e+01 0 -1 1110 - 7.5500000000000000e+01 -2 -3 1111 1.5595000000000000e+03 - - 2.1001176536083221e-01 -5.4036855697631836e-01 - 8.2853209972381592e-01 -6.6984134912490845e-01 - <_> - 3.0648044586181641e+01 - - 1 2 1112 1.3500000000000000e+01 0 -1 1113 - 5.0000000000000000e-01 -2 -3 1114 5.5000000000000000e+00 - - 2.0337771624326706e-02 -6.9217932224273682e-01 - 3.1262809038162231e-01 -3.8065665960311890e-01 - <_> - 3.0457332611083984e+01 - - 1 2 1115 1.0425000000000000e+03 0 -1 1116 - 2.1105000000000000e+03 -2 -3 1117 5.0000000000000000e-01 - - 8.5383254289627075e-01 -9.4994091987609863e-01 - 3.6234918236732483e-01 -1.9071219861507416e-01 - <_> - 3.0355703353881836e+01 - - 1 2 1118 417. 0 -1 1119 47393. -2 -3 1120 - 1.3500000000000000e+01 - - 1.4608249068260193e-01 -7.7895587682723999e-01 - 5.4214590787887573e-01 -1.0162991285324097e-01 - <_> - 3.0591539382934570e+01 - - 1 2 1121 1.0505000000000000e+03 0 -1 1122 - 3.5000000000000000e+00 -2 -3 1123 1.2500000000000000e+01 - - 2.6039215922355652e-01 -8.2724225521087646e-01 - 2.3583582043647766e-01 -4.2682540416717529e-01 - <_> - 3.1194660186767578e+01 - - 1 2 1124 4.6185000000000000e+03 0 -1 1125 - 1.0500000000000000e+01 -2 -3 1126 1.9150000000000000e+02 - - -8.0647492408752441e-01 1.1079805344343185e-01 - 6.0312074422836304e-01 -8.1773541867733002e-02 - <_> - 3.0726728439331055e+01 - - 1 2 1127 1.3500000000000000e+01 0 -1 1128 - 4.5000000000000000e+00 -2 -3 1129 4.1550000000000000e+02 - - -6.2268900871276855e-01 3.8671565055847168e-01 - 2.8028538823127747e-01 -4.6793088316917419e-01 - <_> - 3.1088666915893555e+01 - - 1 2 1130 8.5000000000000000e+00 0 -1 1131 - 5.8445000000000000e+03 -2 -3 1132 2.8500000000000000e+01 - - -3.3040379639714956e-04 -9.1474950313568115e-01 - 3.6193940043449402e-01 -1.4911226928234100e-01 - <_> - 3.1474407196044922e+01 - - 1 2 1133 1.5500000000000000e+01 0 -1 1134 - 3.5000000000000000e+00 -2 -3 1135 1.2525000000000000e+03 - - 6.4907115697860718e-01 -5.0786149501800537e-01 - -2.0913411676883698e-01 3.8573962450027466e-01 - <_> - 3.1632471084594727e+01 - - 1 2 1136 6.5000000000000000e+00 0 -1 1137 - 3.7500000000000000e+01 -2 -3 1138 3.5500000000000000e+01 - - 6.3346821069717407e-01 -5.2402967214584351e-01 - -4.6075040102005005e-01 1.5806287527084351e-01 - <_> - 3.1587083816528320e+01 - - 1 2 1139 2.8950000000000000e+02 0 -1 1140 - 1.2865000000000000e+03 -2 -3 1141 8.0500000000000000e+01 - - -4.5387003570795059e-02 6.0369354486465454e-01 - -8.8128578662872314e-01 1.6069179773330688e-01 - <_> - 3.1416742324829102e+01 - - 1 2 1142 6.0500000000000000e+01 0 -1 1143 2554. -2 -3 1144 - 2.5000000000000000e+00 - - 5.8986186981201172e-01 -7.9697668552398682e-01 - 4.0921381115913391e-01 -1.7034149169921875e-01 - <_> - 3.1597267150878906e+01 - - 1 2 1145 7.5000000000000000e+00 0 -1 1146 - 1.2500000000000000e+01 -2 -3 1147 3.3500000000000000e+01 - - -7.0123994350433350e-01 9.0972447395324707e-01 - 1.8052530288696289e-01 -7.1117341518402100e-01 - <_> - 3.1853481292724609e+01 - - 1 2 1148 2.5000000000000000e+00 0 -1 1149 - 1.6500000000000000e+01 -2 -3 1150 50. - - -4.6300759911537170e-01 2.5621402263641357e-01 - -5.8134639263153076e-01 6.4391428232192993e-01 - <_> - 3.2041400909423828e+01 - - 1 2 1151 1.5000000000000000e+00 0 -1 1152 - 5.5000000000000000e+00 -2 -3 1153 6.6500000000000000e+01 - - 4.4350862503051758e-01 -6.5627163648605347e-01 - -4.0067231655120850e-01 3.3987161517143250e-01 - <_> - 3.2274913787841797e+01 - - 1 2 1154 2.2500000000000000e+01 0 -1 1155 121. -2 -3 1156 - 4.0750000000000000e+02 - - -5.6885540485382080e-01 2.3351371288299561e-01 - 6.7405563592910767e-01 -5.4761618375778198e-01 - <_> - 3.2459445953369141e+01 - - 1 2 1157 2.1500000000000000e+01 0 -1 1158 - 1.2500000000000000e+01 -2 -3 1159 1.9500000000000000e+01 - - -8.8360142707824707e-01 2.5230798125267029e-01 - 1.1890246719121933e-01 -5.4317802190780640e-01 - <_> - 3.2713863372802734e+01 - - 1 2 1160 3.9500000000000000e+01 0 -1 1161 - 4.5000000000000000e+00 -2 -3 1162 2.2635000000000000e+03 - - 4.9993959069252014e-01 -4.6222266554832458e-01 - -8.2206004858016968e-01 2.5441682338714600e-01 - <_> - 3.2391437530517578e+01 - - 1 2 1163 1.8500000000000000e+01 0 -1 1164 - 2.2500000000000000e+01 -2 -3 1165 1.1500000000000000e+01 - - -8.3650416135787964e-01 2.8401935100555420e-01 - 2.4446329474449158e-01 -5.4215461015701294e-01 - <_> - 3.2313743591308594e+01 - - 1 2 1166 2.1500000000000000e+01 0 -1 1167 - 4.4750000000000000e+02 -2 -3 1168 7.5000000000000000e+00 - - 2.8188237547874451e-01 -7.0770967006683350e-01 - 5.1904022693634033e-01 -7.7693074941635132e-02 - <_> - 3.2547096252441406e+01 - - 1 2 1169 3.8500000000000000e+01 0 -1 1170 - 1.0500000000000000e+01 -2 -3 1171 5.4500000000000000e+01 - - -5.1064568758010864e-01 2.3335392773151398e-01 - -7.8815060853958130e-01 1.9936113059520721e-01 - <_> - 3.2640663146972656e+01 - - 1 2 1172 2.5000000000000000e+00 0 -1 1173 - 5.5000000000000000e+00 -2 -3 1174 1330. - - -4.3339151144027710e-01 4.2221209406852722e-01 - -3.6630377173423767e-01 7.0252496004104614e-01 - <_> - 3.2781063079833984e+01 - - 1 2 1175 1.5000000000000000e+00 0 -1 1176 - 3.5000000000000000e+00 -2 -3 1177 5.0000000000000000e-01 - - 4.3612757325172424e-01 -8.5796296596527100e-01 - 2.6683306694030762e-01 -2.6626828312873840e-01 - <_> - 3.3000972747802734e+01 - - 1 2 1178 2.8150000000000000e+02 0 -1 1179 - 1.5500000000000000e+01 -2 -3 1180 4.6500000000000000e+01 - - 3.4552884101867676e-01 -5.2619069814682007e-01 - -3.2900866866111755e-01 4.3776753544807434e-01 - <_> - 3.3018821716308594e+01 - - 1 2 1181 5.0000000000000000e-01 0 -1 1182 - 1.0500000000000000e+01 -2 -3 1183 2.6450000000000000e+02 - - -4.9559688568115234e-01 7.7334856986999512e-01 - 5.2793127298355103e-01 -2.3107841610908508e-01 - <_> - 3.3071189880371094e+01 - - 1 2 1184 4.6025000000000000e+03 0 -1 1185 - 1.8500000000000000e+01 -2 -3 1186 6.8250000000000000e+02 - - -7.4181526899337769e-01 5.9372335672378540e-01 - 4.7619059681892395e-01 -1.1885309964418411e-01 - <_> - 3.3085533142089844e+01 - - 1 2 1187 1.6350000000000000e+02 0 -1 1188 - 2.7500000000000000e+01 -2 -3 1189 142. - - -4.1260236501693726e-01 2.7891275286674500e-01 - -7.0465636253356934e-01 7.5747251510620117e-01 - <_> - 3.3357414245605469e+01 - - 1 2 1190 5.0000000000000000e-01 0 -1 1191 - 5.6500000000000000e+01 -2 -3 1192 5.2150000000000000e+02 - - 6.4778029918670654e-01 -1.1932287365198135e-01 - -4.1650903224945068e-01 2.5428086519241333e-01 - <_> - 3.3322494506835938e+01 - - 1 2 1193 8.2350000000000000e+02 0 -1 1194 - 8.2650000000000000e+02 -2 -3 1195 1.3500000000000000e+01 - - 2.8512652497738600e-03 6.5731632709503174e-01 - 4.5999297499656677e-01 -6.2862813472747803e-01 - <_> - 3.3176986694335938e+01 - - 1 2 1196 1.3500000000000000e+01 0 -1 1197 70. -2 -3 1198 - 5.0000000000000000e-01 - - -6.6250026226043701e-01 7.0421558618545532e-01 - 3.7571212649345398e-01 -2.3801752924919128e-01 - <_> - 3.3435741424560547e+01 - - 1 2 1199 58282. 0 -1 1200 913. -2 -3 1201 - 1.0850000000000000e+02 - - -5.6440210342407227e-01 2.8217953443527222e-01 - -8.7045669555664062e-01 -8.5198663175106049e-02 - <_> - 3.3617641448974609e+01 - - 1 2 1202 1.5000000000000000e+00 0 -1 1203 - 1.5000000000000000e+00 -2 -3 1204 1.7675000000000000e+03 - - -7.3653697967529297e-01 7.6336652040481567e-01 - -2.4504181742668152e-01 5.5397576093673706e-01 - <_> - 3.3626171112060547e+01 - - 1 2 1205 3.5000000000000000e+00 0 -1 1206 - 1.5500000000000000e+01 -2 -3 1207 153. - - -2.8129413723945618e-01 5.9369409084320068e-01 - 8.5296230390667915e-03 -6.9582235813140869e-01 - <_> - 3.3975147247314453e+01 - - 1 2 1208 5.0000000000000000e-01 0 -1 1209 - 1.0500000000000000e+01 -2 -3 1210 2.0500000000000000e+01 - - -8.0083674192428589e-01 3.4897685050964355e-01 - -3.5385957360267639e-01 7.3448055982589722e-01 - <_> - 3.3426464080810547e+01 - - 1 2 1211 2.7950000000000000e+02 0 -1 1212 - 5.4975000000000000e+03 -2 -3 1213 7.5000000000000000e+00 - - -1.4607962965965271e-01 7.2142803668975830e-01 - 1.4154955744743347e-01 -5.4868251085281372e-01 - <_> - 3.3620513916015625e+01 - - 1 2 1214 1.1500000000000000e+01 0 -1 1215 - 2.5550000000000000e+02 -2 -3 1216 72. - - 5.8608335256576538e-01 -9.2741596698760986e-01 - 1.9404979050159454e-01 -6.2724816799163818e-01 - <_> - 3.3949718475341797e+01 - - 1 2 1217 1.9500000000000000e+01 0 -1 1218 - 2.6950000000000000e+02 -2 -3 1219 5.2500000000000000e+01 - - -8.2725256681442261e-02 -8.0563539266586304e-01 - -4.9098122119903564e-01 3.2920604944229126e-01 - <_> - 3.3907009124755859e+01 - - 1 2 1220 2.5500000000000000e+01 0 -1 1221 - 5.0000000000000000e-01 -2 -3 1222 5.0500000000000000e+01 - - 5.3421282768249512e-01 -4.2710851877927780e-02 - -8.4883642196655273e-01 -6.9108068943023682e-02 - <_> - 3.4569347381591797e+01 - - 1 2 1223 3.4500000000000000e+01 0 -1 1224 - 4.5000000000000000e+00 -2 -3 1225 4.2500000000000000e+01 - - 2.8448584675788879e-01 -3.0913567543029785e-01 - 6.9974571466445923e-01 -7.2145628929138184e-01 - <_> - 3.4406383514404297e+01 - - 1 2 1226 4.7500000000000000e+01 0 -1 1227 82. -2 -3 1228 - 476. - - -5.3745925426483154e-01 5.8132463693618774e-01 - 3.7321224808692932e-01 -6.0607558488845825e-01 - <_> - 3.4350345611572266e+01 - - 1 2 1229 4.5000000000000000e+00 0 -1 1230 161. -2 -3 1231 - 9.5000000000000000e+00 - - 5.7543116807937622e-01 -9.4070035219192505e-01 - 7.6428997516632080e-01 -5.6036282330751419e-02 - <_> - 3.4673534393310547e+01 - - 1 2 1232 1.2645000000000000e+03 0 -1 1233 1086. -2 -3 1234 - 9549. - - -2.5683671236038208e-01 8.2724517583847046e-01 - 7.0296716690063477e-01 -3.6435613036155701e-01 - <_> - 3.5003284454345703e+01 - - 1 2 1235 1.2850000000000000e+02 0 -1 1236 - 8.6235000000000000e+03 -2 -3 1237 2.6500000000000000e+01 - - 5.9038841724395752e-01 3.4432813990861177e-03 - -6.4016550779342651e-02 -9.3743759393692017e-01 - <_> - 3.5226799011230469e+01 - - 1 2 1238 9.3500000000000000e+01 0 -1 1239 13. -2 -3 1240 - 4.4500000000000000e+01 - - -6.7835944890975952e-01 3.3737751841545105e-01 - -7.8561329841613770e-01 -3.7122413516044617e-02 - <_> - 3.5086704254150391e+01 - - 1 2 1241 6.5000000000000000e+00 0 -1 1242 786. -2 -3 1243 - 4.6850000000000000e+02 - - -8.7093526124954224e-01 4.2933362722396851e-01 - -5.2467578649520874e-01 1.0233493894338608e-01 - <_> - 3.5434925079345703e+01 - - 1 2 1244 5.0650000000000000e+02 0 -1 1245 - 6.3500000000000000e+01 -2 -3 1246 2.5000000000000000e+00 - - -3.4057748317718506e-01 5.2575647830963135e-01 - -5.7031583786010742e-01 4.1367042064666748e-01 - <_> - 3.5402851104736328e+01 - - 1 2 1247 5.0000000000000000e-01 0 -1 1248 857. -2 -3 1249 - 1.3850000000000000e+02 - - 6.1650615930557251e-01 -2.0817196369171143e-01 - -2.5478323921561241e-02 -7.6659142971038818e-01 - <_> - 3.4968181610107422e+01 - - 1 2 1250 5.8500000000000000e+01 0 -1 1251 - 1.1500000000000000e+01 -2 -3 1252 5.5500000000000000e+01 - - 1.2099618464708328e-01 -4.4126412272453308e-01 - 6.0897779464721680e-01 -7.8737002611160278e-01 - <_> - 3.5193428039550781e+01 - - 1 2 1253 4.7500000000000000e+01 0 -1 1254 1423. -2 -3 1255 - 3.4500000000000000e+01 - - 4.8643037676811218e-02 -8.9261955022811890e-01 - 2.2524681687355042e-01 -6.2001824378967285e-01 - <_> - 3.5623695373535156e+01 - - 1 2 1256 2.0500000000000000e+01 0 -1 1257 - 5.5000000000000000e+00 -2 -3 1258 6.5000000000000000e+00 - - -8.9247786998748779e-01 7.9152870178222656e-01 - 4.3026548624038696e-01 -1.4470897614955902e-01 - <_> - 3.5538761138916016e+01 - - 1 2 1259 18647. 0 -1 1260 8.7850000000000000e+02 -2 -3 1261 - 50. - - 1.3848523795604706e-01 -6.2565112113952637e-01 - -3.0781137943267822e-01 5.9695762395858765e-01 - <_> - 3.5170146942138672e+01 - - 1 2 1262 2.0500000000000000e+01 0 -1 1263 - 9.5500000000000000e+01 -2 -3 1264 3.2450000000000000e+02 - - -1.9358770549297333e-01 5.9224104881286621e-01 - -3.6861309409141541e-01 7.9692333936691284e-01 - <_> - 3.5719684600830078e+01 - - 1 2 1265 1.5000000000000000e+00 0 -1 1266 - 3.4500000000000000e+01 -2 -3 1267 1.7725000000000000e+03 - - 5.4953765869140625e-01 -4.1827628016471863e-01 - 3.4924019128084183e-02 -6.3267588615417480e-01 - <_> - 3.6021175384521484e+01 - - 1 2 1268 1.3500000000000000e+01 0 -1 1269 - 5.0000000000000000e-01 -2 -3 1270 3476. - - 3.0730965733528137e-01 -7.1827191114425659e-01 - -3.3407485485076904e-01 3.0149033665657043e-01 - <_> - 3.6000087738037109e+01 - - 1 2 1271 2.1105000000000000e+03 0 -1 1272 - 1.2865000000000000e+03 -2 -3 1273 31. - - -6.6124044358730316e-02 6.6440200805664062e-01 - -7.0062541961669922e-01 8.8496291637420654e-01 - <_> - 3.6138973236083984e+01 - - 1 2 1274 6.5000000000000000e+00 0 -1 1275 - 4.0500000000000000e+01 -2 -3 1276 2.5000000000000000e+00 - - -1.8909309804439545e-01 4.3955674767494202e-01 - 8.3517062664031982e-01 -5.2926576137542725e-01 - <_> - 3.6462543487548828e+01 - - 1 2 1277 1.5000000000000000e+00 0 -1 1278 - 1.9500000000000000e+01 -2 -3 1279 2.9500000000000000e+01 - - 5.2272623777389526e-01 -5.3356873989105225e-01 - -4.3614375591278076e-01 1.6707921028137207e-01 - <_> - 3.6346103668212891e+01 - - 1 2 1280 5.4500000000000000e+01 0 -1 1281 3. -2 -3 1282 - 2.5000000000000000e+00 - - 9.2645227909088135e-01 -9.1626834869384766e-01 - 4.3882593512535095e-01 -1.1643892526626587e-01 - <_> - 3.6447643280029297e+01 - - 1 2 1283 4.3500000000000000e+01 0 -1 1284 - 4.5000000000000000e+00 -2 -3 1285 1.4250000000000000e+02 - - 2.8414136171340942e-01 -5.2052396535873413e-01 - 3.3975440263748169e-01 -4.2113724350929260e-01 - <_> - 3.6367126464843750e+01 - - 1 2 1286 2.2500000000000000e+01 0 -1 1287 - 1.0535000000000000e+03 -2 -3 1288 1.9500000000000000e+01 - - 4.4179165363311768e-01 -7.4734365940093994e-01 - 5.4282104969024658e-01 -8.0516710877418518e-02 - <_> - 3.6575954437255859e+01 - - 1 2 1289 2.5000000000000000e+00 0 -1 1290 - 1.5000000000000000e+00 -2 -3 1291 2.4500000000000000e+01 - - -3.8550149649381638e-02 -9.4949018955230713e-01 - 2.0882803201675415e-01 -4.6319213509559631e-01 - <_> - 3.6657161712646484e+01 - - 1 2 1292 1.6115000000000000e+03 0 -1 1293 3672. -2 -3 1294 - 545. - - 8.2763051986694336e-01 -4.8815292119979858e-01 - -5.2512788772583008e-01 8.1207208335399628e-02 - <_> - 3.6598300933837891e+01 - - 1 2 1295 6.0500000000000000e+01 0 -1 1296 - 1.1250000000000000e+02 -2 -3 1297 1.5350000000000000e+02 - - -5.8857690542936325e-02 4.7229456901550293e-01 - -8.1495660543441772e-01 7.3461961746215820e-01 - <_> - 3.6517520904541016e+01 - - 1 2 1298 9.4500000000000000e+01 0 -1 1299 - 4.8500000000000000e+01 -2 -3 1300 235. - - 4.8253452777862549e-01 -8.0779984593391418e-02 - -9.4696474075317383e-01 9.1954904794692993e-01 - <_> - 3.6136314392089844e+01 - - 1 2 1301 7.6150000000000000e+02 0 -1 1302 - 1.3500000000000000e+01 -2 -3 1303 3.7500000000000000e+01 - - 4.7050821781158447e-01 -6.8645346164703369e-01 - 1.8845686316490173e-01 -6.1942416429519653e-01 - <_> - 3.6255367279052734e+01 - - 1 2 1304 2.5500000000000000e+01 0 -1 1305 - 9.5000000000000000e+00 -2 -3 1306 2.4243500000000000e+04 - - -8.6751174926757812e-01 1. 1.1905297636985779e-01 - -7.7261626720428467e-01 - <_> - 3.6847282409667969e+01 - - 1 2 1307 2.5245000000000000e+03 0 -1 1308 - 1.2500000000000000e+01 -2 -3 1309 19. - - 1.8480798602104187e-01 -4.1162934899330139e-01 - -7.0126670598983765e-01 5.9191262722015381e-01 - <_> - 3.6736129760742188e+01 - - 1 2 1310 1.9500000000000000e+01 0 -1 1311 - 3.5000000000000000e+00 -2 -3 1312 9.9500000000000000e+01 - - -4.2743122577667236e-01 3.4077543020248413e-01 - -5.2904611825942993e-01 6.4898627996444702e-01 - <_> - 3.7165416717529297e+01 - - 1 2 1313 57. 0 -1 1314 7.5000000000000000e+00 -2 -3 1315 - 1.4750000000000000e+02 - - -2.9288327693939209e-01 4.2928928136825562e-01 - -5.1645982265472412e-01 3.7259963154792786e-01 - <_> - 3.6963829040527344e+01 - - 1 2 1316 1.5000000000000000e+00 0 -1 1317 - 1.5000000000000000e+00 -2 -3 1318 2.5550000000000000e+02 - - -4.8823645710945129e-01 6.1563092470169067e-01 - 6.7905879020690918e-01 -2.7743032574653625e-01 - <_> - 3.6947120666503906e+01 - - 1 2 1319 1.1545000000000000e+03 0 -1 1320 2066. -2 -3 1321 - 7.7350000000000000e+02 - - -7.2975975275039673e-01 6.6057509183883667e-01 - 6.6289925575256348e-01 -1.6708238050341606e-02 - <_> - 3.6795619964599609e+01 - - 1 2 1322 63. 0 -1 1323 5.7500000000000000e+01 -2 -3 1324 - 2.8500000000000000e+01 - - -1.5150213241577148e-01 3.7273296713829041e-01 - -8.2537877559661865e-01 8.6949664354324341e-01 - <_> - 3.7259391784667969e+01 - - 1 2 1325 1.0500000000000000e+01 0 -1 1326 - 1.6500000000000000e+01 -2 -3 1327 346. - - 4.6377313137054443e-01 -7.5801903009414673e-01 - -3.5662418603897095e-01 9.6071028709411621e-01 - <_> - 3.7495296478271484e+01 - - 1 2 1328 6.0500000000000000e+01 0 -1 1329 - 1.5500000000000000e+01 -2 -3 1330 2.6850000000000000e+02 - - 5.3055459260940552e-01 -6.3604164123535156e-01 - -6.7990607023239136e-01 2.4123270809650421e-01 - <_> - 3.7374149322509766e+01 - - 1 2 1331 2.5000000000000000e+00 0 -1 1332 - 1.3500000000000000e+01 -2 -3 1333 2.5000000000000000e+00 - - -9.0581423044204712e-01 5.8284395933151245e-01 - 3.0152860283851624e-01 -3.4942194819450378e-01 - <_> - 3.7766971588134766e+01 - - 1 2 1334 5.5000000000000000e+00 0 -1 1335 23. -2 -3 1336 - 3.0250000000000000e+02 - - -9.5462155342102051e-01 1. 3.9282312989234924e-01 - -1.1600174754858017e-01 - <_> - 3.8006900787353516e+01 - - 1 2 1337 3955. 0 -1 1338 1.6500000000000000e+01 -2 -3 1339 - 3.8500000000000000e+01 - - 3.4476998448371887e-01 -5.3807318210601807e-01 - -6.4139670133590698e-01 3.3075565099716187e-01 - <_> - 3.7836151123046875e+01 - - 1 2 1340 1.4500000000000000e+01 0 -1 1341 - 4.2050000000000000e+02 -2 -3 1342 4.5000000000000000e+00 - - 6.6126942634582520e-02 -8.9179468154907227e-01 - 2.5128620862960815e-01 -4.3012529611587524e-01 - <_> - 3.7504901885986328e+01 - - 1 2 1343 3.5000000000000000e+00 0 -1 1344 - 2.1500000000000000e+01 -2 -3 1345 3.6500000000000000e+01 - - -6.9118273258209229e-01 5.3941005468368530e-01 - 4.0820264816284180e-01 -3.3124980330467224e-01 - <_> - 3.7869743347167969e+01 - - 1 2 1346 8.5000000000000000e+00 0 -1 1347 8240. -2 -3 1348 - 1.8500000000000000e+01 - - -1.8303586402907968e-03 -7.9149729013442993e-01 - 3.6484044790267944e-01 -2.6800584793090820e-01 - <_> - 3.7688228607177734e+01 - - 1 2 1349 1.2135000000000000e+03 0 -1 1350 75. -2 -3 1351 - 5.6750000000000000e+02 - - -3.7686902284622192e-01 5.8311319351196289e-01 - 7.0945566892623901e-01 -1.8151518702507019e-01 - <_> - 3.7513351440429688e+01 - - 1 2 1352 3.5000000000000000e+00 0 -1 1353 35. -2 -3 1354 - 1.1500000000000000e+01 - - -9.6617668867111206e-01 1. 4.0123063325881958e-01 - -1.7487519979476929e-01 - <_> - 3.7691390991210938e+01 - - 1 2 1355 2.3050000000000000e+02 0 -1 1356 - 1.1500000000000000e+01 -2 -3 1357 2.8500000000000000e+01 - - -5.4078394174575806e-01 1.7803618311882019e-01 - 6.0750162601470947e-01 -9.6443849802017212e-01 - <_> - 3.8156455993652344e+01 - - 1 2 1358 6.5000000000000000e+00 0 -1 1359 - 1.0500000000000000e+01 -2 -3 1360 354. - - 4.6506500244140625e-01 -3.7838381528854370e-01 - -3.8703271746635437e-01 5.6163036823272705e-01 - <_> - 3.8427524566650391e+01 - - 1 2 1361 1.2500000000000000e+01 0 -1 1362 - 4.5000000000000000e+00 -2 -3 1363 449. - - 5.1386022567749023e-01 -6.1507451534271240e-01 - 3.0157905817031860e-01 -6.5344727039337158e-01 - <_> - 3.8548820495605469e+01 - - 1 2 1364 5.0000000000000000e-01 0 -1 1365 - 1.5000000000000000e+00 -2 -3 1366 3.8950000000000000e+02 - - -3.3223056793212891e-01 5.4063457250595093e-01 - 9.0788081288337708e-02 -5.4981482028961182e-01 - <_> - 3.8257041931152344e+01 - - 1 2 1367 1.6650000000000000e+02 0 -1 1368 - 5.0000000000000000e-01 -2 -3 1369 7.6500000000000000e+01 - - 2.8060472011566162e-01 -2.9178059101104736e-01 - -7.8990536928176880e-01 9.2143142223358154e-01 - <_> - 3.8675960540771484e+01 - - 1 2 1370 1.8500000000000000e+01 0 -1 1371 - 2.3500000000000000e+01 -2 -3 1372 4.5000000000000000e+00 - - -5.0728912465274334e-03 -8.4625685214996338e-01 - 4.8941537737846375e-01 -1.3043193519115448e-01 - <_> - 3.9024429321289062e+01 - - 1 2 1373 8.5000000000000000e+00 0 -1 1374 - 8.1295000000000000e+03 -2 -3 1375 1.1250000000000000e+02 - - 1.5426757931709290e-01 -7.5539046525955200e-01 - -3.0081889033317566e-01 3.4846922755241394e-01 - <_> - 3.8698005676269531e+01 - - 1 2 1376 9.5000000000000000e+00 0 -1 1377 - 5.5000000000000000e+00 -2 -3 1378 3.4500000000000000e+01 - - -7.7566885948181152e-01 5.3590404987335205e-01 - -3.2642310857772827e-01 3.3310726284980774e-01 - <_> - 3.8178993225097656e+01 - - 1 2 1379 2.6450000000000000e+02 0 -1 1380 - 4.6255000000000000e+03 -2 -3 1381 1.5000000000000000e+00 - - -3.2790592312812805e-01 3.8349342346191406e-01 - 3.5417640209197998e-01 -5.1901257038116455e-01 - <_> - 3.8603790283203125e+01 - - 1 2 1382 7.7450000000000000e+02 0 -1 1383 - 5.4450000000000000e+02 -2 -3 1384 4.9500000000000000e+01 - - 4.2479729652404785e-01 -6.4129936695098877e-01 - -3.8530099391937256e-01 4.2106175422668457e-01 - <_> - 3.9316322326660156e+01 - - 1 2 1385 1.2285000000000000e+03 0 -1 1386 19974. -2 -3 1387 - 2.0675000000000000e+03 - - -3.2134270668029785e-01 6.0310727357864380e-01 - 7.1253037452697754e-01 -1.8411901593208313e-01 - <_> - 3.8982051849365234e+01 - - 1 2 1388 2254. 0 -1 1389 23971. -2 -3 1390 - 2.5000000000000000e+00 - - 1.3044491410255432e-02 8.1400823593139648e-01 - 3.9543354511260986e-01 -4.9717214703559875e-01 - <_> - 3.9231285095214844e+01 - - 1 2 1391 7888. 0 -1 1392 1.2500000000000000e+01 -2 -3 1393 - 6.5000000000000000e+00 - - -9.9114888906478882e-01 1. 2.4923273921012878e-01 - -3.9778175950050354e-01 - <_> - 3.9200939178466797e+01 - - 1 2 1394 8.2500000000000000e+01 0 -1 1395 - 2.5000000000000000e+00 -2 -3 1396 2.7500000000000000e+01 - - 5.9092748165130615e-01 -6.6723209619522095e-01 - 4.0493550896644592e-01 -2.8249517083168030e-01 - <_> - 3.9109848022460938e+01 - - 1 2 1397 1.0500000000000000e+01 0 -1 1398 - 3.4150000000000000e+02 -2 -3 1399 1.5000000000000000e+00 - - 1.1704797297716141e-01 -7.8680926561355591e-01 - 5.4690092802047729e-01 -9.1091230511665344e-02 - <_> - 3.9430786132812500e+01 - - 1 2 1400 7.5000000000000000e+00 0 -1 1401 - 5.6350000000000000e+02 -2 -3 1402 9.5000000000000000e+00 - - 1. -1. 5.3584295511245728e-01 -1.1434395611286163e-01 - <_> - 3.9888351440429688e+01 - - 1 2 1403 576. 0 -1 1404 2.3765000000000000e+03 -2 -3 1405 - 1.8500000000000000e+01 - - 9.3801420927047729e-01 -7.2940248250961304e-01 - -9.7766503691673279e-02 4.5756503939628601e-01 - <_> - 3.9605831146240234e+01 - - 1 2 1406 5.5000000000000000e+00 0 -1 1407 - 6.5000000000000000e+00 -2 -3 1408 1.7500000000000000e+01 - - -9.3598860502243042e-01 6.3315272331237793e-01 - 1.0997077822685242e-01 -4.5688989758491516e-01 - <_> - 4.0259593963623047e+01 - - 1 2 1409 1.2785000000000000e+03 0 -1 1410 - 5.0000000000000000e-01 -2 -3 1411 1.0150000000000000e+02 - - 2.8614109754562378e-01 -3.0422577261924744e-01 - -5.3765338659286499e-01 7.5021845102310181e-01 - <_> - 4.0646686553955078e+01 - - 1 2 1412 9.3750000000000000e+02 0 -1 1413 - 2.5500000000000000e+01 -2 -3 1414 6.4650000000000000e+02 - - -1.8467088043689728e-01 3.8709565997123718e-01 -1. 1. - <_> - 4.0781440734863281e+01 - - 1 2 1415 5.0000000000000000e-01 0 -1 1416 62. -2 -3 1417 - 5.3500000000000000e+01 - - 6.4194250106811523e-01 -6.9881826639175415e-01 - -3.3652466535568237e-01 2.9932817816734314e-01 - <_> - 4.0840915679931641e+01 - - 1 2 1418 2.5000000000000000e+00 0 -1 1419 13192. -2 -3 1420 - 2.4950000000000000e+02 - - -9.9075198173522949e-01 8.7482362985610962e-01 - 2.9631823301315308e-01 -2.0155780017375946e-01 - <_> - 4.1011356353759766e+01 - - 1 2 1421 4.8150000000000000e+02 0 -1 1422 - 1.0450000000000000e+02 -2 -3 1423 8.5000000000000000e+00 - - -2.5319704785943031e-02 -7.4390411376953125e-01 - -8.1089955568313599e-01 7.6437503099441528e-01 - <_> - 4.0876789093017578e+01 - - 1 2 1424 5.5000000000000000e+00 0 -1 1425 - 2.5000000000000000e+00 -2 -3 1426 1.5000000000000000e+00 - - 1. -9.8024749755859375e-01 3.7663710117340088e-01 - -1.3456873595714569e-01 - <_> - 4.0677371978759766e+01 - - 1 2 1427 2.1500000000000000e+01 0 -1 1428 - 1.1125000000000000e+03 -2 -3 1429 2.3500000000000000e+01 - - 4.5568805187940598e-02 -8.6155319213867188e-01 - 3.0837088823318481e-01 -1.9941620528697968e-01 - <_> - 4.0941162109375000e+01 - - 1 2 1430 9.4500000000000000e+01 0 -1 1431 447. -2 -3 1432 - 8.9500000000000000e+01 - - 2.0531620085239410e-01 -6.4759564399719238e-01 - 2.6378956437110901e-01 -6.0503029823303223e-01 - <_> - 4.0695613861083984e+01 - - 1 2 1433 8.1450000000000000e+02 0 -1 1434 - 9.9250000000000000e+02 -2 -3 1435 2.1450000000000000e+02 - - -6.1355805397033691e-01 3.9234723895788193e-02 - 4.3808567523956299e-01 -7.3097014427185059e-01 - <_> - 4.1197418212890625e+01 - - 1 2 1436 1.8769500000000000e+04 0 -1 1437 1329. -2 -3 1438 - 5.4500000000000000e+01 - - 5.0180602073669434e-01 -3.4298053383827209e-01 - 6.9242316484451294e-01 -3.7215092778205872e-01 - <_> - 4.1157611846923828e+01 - - 1 2 1439 3.1500000000000000e+01 0 -1 1440 - 1.8500000000000000e+01 -2 -3 1441 1.5000000000000000e+00 - - 6.7518281936645508e-01 -7.6596146821975708e-01 - 5.7309043407440186e-01 -3.9805334061384201e-02 - <_> - 4.0718166351318359e+01 - - 1 2 1442 9.3500000000000000e+01 0 -1 1443 - 8.5000000000000000e+00 -2 -3 1444 1.6950000000000000e+02 - - 7.0507103204727173e-01 -4.3868264555931091e-01 - 4.2583593726158142e-01 -4.3944749236106873e-01 - <_> - 4.1168849945068359e+01 - - 1 2 1445 1.5000000000000000e+00 0 -1 1446 - 1.5500000000000000e+01 -2 -3 1447 5.0000000000000000e-01 - - -5.8355963230133057e-01 8.2266020774841309e-01 - 4.5068329572677612e-01 -1.3382685184478760e-01 - <_> - 4.1473163604736328e+01 - - 1 2 1448 5.6500000000000000e+01 0 -1 1449 - 3.3500000000000000e+01 -2 -3 1450 2.1550000000000000e+02 - - 2.5085982680320740e-01 -3.7931889295578003e-01 - 6.7997491359710693e-01 -1. - <_> - 4.1634220123291016e+01 - - 1 2 1451 5.4500000000000000e+01 0 -1 1452 - 9.5000000000000000e+00 -2 -3 1453 1.7250000000000000e+02 - - -7.9712128639221191e-01 8.5313194990158081e-01 - 1.6105654835700989e-01 -9.5611929893493652e-01 - <_> - 4.1978507995605469e+01 - - 1 2 1454 1.1615000000000000e+03 0 -1 1455 - 2.0525000000000000e+03 -2 -3 1456 5.8650000000000000e+02 - - -7.1788591146469116e-01 4.8950648307800293e-01 - 4.8551353812217712e-01 -1.9422738254070282e-01 - <_> - 4.2004768371582031e+01 - - 1 2 1457 4.6500000000000000e+01 0 -1 1458 - 3.5000000000000000e+00 -2 -3 1459 7.0350000000000000e+02 - - 3.9823031425476074e-01 -6.6477078199386597e-01 - -1.1496587097644806e-01 4.9930962920188904e-01 - <_> - 4.1885951995849609e+01 - - 1 2 1460 4.4500000000000000e+01 0 -1 1461 - 3.5000000000000000e+00 -2 -3 1462 4. - - 4.4042432308197021e-01 -1.1881566792726517e-01 - 8.4207451343536377e-01 -8.6268407106399536e-01 - <_> - 4.2072120666503906e+01 - - 1 2 1463 2.0500000000000000e+01 0 -1 1464 10. -2 -3 1465 - 5.5000000000000000e+00 - - -9.8040562868118286e-01 1. 3.3258756995201111e-01 - -1.7096966505050659e-01 - <_> - 4.2217323303222656e+01 - - 1 2 1466 1.3500000000000000e+01 0 -1 1467 47. -2 -3 1468 - 1.3325000000000000e+03 - - -6.6619759798049927e-01 5.1798510551452637e-01 - -1.2162621133029461e-03 7.3543995618820190e-01 - <_> - 4.2318325042724609e+01 - - 1 2 1469 4.5000000000000000e+00 0 -1 1470 - 1.9500000000000000e+01 -2 -3 1471 1.5585000000000000e+03 - - -9.6737003326416016e-01 6.0924607515335083e-01 - 5.8938968181610107e-01 -2.8636392951011658e-01 - <_> - 4.2444244384765625e+01 - - 1 2 1472 2.7500000000000000e+01 0 -1 1473 - 1.8247500000000000e+04 -2 -3 1474 6.5605000000000000e+03 - - -1.1921727657318115e-01 4.3995112180709839e-01 - -7.6667350530624390e-01 4.6777427196502686e-01 - <_> - 4.2317867279052734e+01 - - 1 2 1475 4.5000000000000000e+00 0 -1 1476 15. -2 -3 1477 - 3.2500000000000000e+01 - - -9.6039277315139771e-01 1. 3.9408209919929504e-01 - -1.2637579441070557e-01 - <_> - 4.2575748443603516e+01 - - 1 2 1478 367. 0 -1 1479 2578. -2 -3 1480 - 2.0050000000000000e+02 - - 5.2356463670730591e-01 -6.4678192138671875e-01 - 3.1403809785842896e-01 -3.7955451011657715e-01 - <_> - 4.2238155364990234e+01 - - 1 2 1481 5.4500000000000000e+01 0 -1 1482 - 1.8450000000000000e+02 -2 -3 1483 5.6550000000000000e+02 - - -7.5117689371109009e-01 3.9905190467834473e-01 - 1.0141634941101074e-01 -6.3857173919677734e-01 - <_> - 4.2032226562500000e+01 - - 1 2 1484 3.5500000000000000e+01 0 -1 1485 - 1.1500000000000000e+01 -2 -3 1486 4.2500000000000000e+01 - - -6.1570602655410767e-01 3.6179527640342712e-01 - 4.0053242444992065e-01 -2.0592956244945526e-01 - <_> - 4.2406646728515625e+01 - - 1 2 1487 3.6150000000000000e+02 0 -1 1488 - 7.6500000000000000e+01 -2 -3 1489 2.5000000000000000e+00 - - 2.1660387516021729e-01 -3.7647891044616699e-01 - 6.7929941415786743e-01 -8.0690664052963257e-01 - <_> - 4.2598564147949219e+01 - - 1 2 1490 3.2350000000000000e+02 0 -1 1491 - 9.5000000000000000e+00 -2 -3 1492 1.0350000000000000e+02 - - 2.8338834643363953e-01 -2.8749933838844299e-01 - -4.2244365811347961e-01 8.4098398685455322e-01 - <_> - 4.2448162078857422e+01 - - 1 2 1493 6.8500000000000000e+01 0 -1 1494 - 1.9500000000000000e+01 -2 -3 1495 2.8500000000000000e+01 - - 4.4642934203147888e-01 -8.8521170616149902e-01 - 3.8606628775596619e-01 -1.5039834380149841e-01 - <_> - 4.2684196472167969e+01 - - 1 2 1496 1.1350000000000000e+02 0 -1 1497 - 1.2195000000000000e+03 -2 -3 1498 465. - - -3.4444883465766907e-01 2.3603120446205139e-01 - 7.6531344652175903e-01 -3.9807590842247009e-01 - <_> - 4.2983776092529297e+01 - - 1 2 1499 1.5725000000000000e+03 0 -1 1500 - 7.6500000000000000e+01 -2 -3 1501 5.5000000000000000e+00 - - -3.2652869820594788e-01 2.9957908391952515e-01 - 3.3552268147468567e-01 -7.9458123445510864e-01 - <_> - 4.3334823608398438e+01 - - 1 2 1502 2.2500000000000000e+01 0 -1 1503 - 1.5000000000000000e+00 -2 -3 1504 9.5000000000000000e+00 - - -5.7209235429763794e-01 3.5104992985725403e-01 - 3.1476601958274841e-02 -5.8574450016021729e-01 - <_> - 4.3509834289550781e+01 - - 1 2 1505 51199. 0 -1 1506 5.5950000000000000e+02 -2 -3 1507 - 9.3125000000000000e+03 - - 3.0665323138237000e-01 -1.8138632178306580e-01 - -9.8618561029434204e-01 1. - <_> - 4.3432380676269531e+01 - - 1 2 1508 2.3365000000000000e+03 0 -1 1509 1614. -2 -3 1510 - 2.9285000000000000e+03 - - -6.6426819562911987e-01 5.2347922325134277e-01 - 6.3229858875274658e-01 -7.7455088496208191e-02 - <_> - 4.3682022094726562e+01 - - 1 2 1511 1.4850000000000000e+02 0 -1 1512 - 3.4500000000000000e+01 -2 -3 1513 4351. - - -4.1966313123703003e-01 2.4964161217212677e-01 - -9.2960160970687866e-01 -1.1052240431308746e-01 - <_> - 4.3838462829589844e+01 - - 1 2 1514 1.5000000000000000e+00 0 -1 1515 - 5.6150000000000000e+02 -2 -3 1516 2.5215000000000000e+03 - - -7.1278488636016846e-01 4.3191543221473694e-01 - -4.5729264616966248e-01 2.2259603440761566e-01 - <_> - 4.3913276672363281e+01 - - 1 2 1517 452. 0 -1 1518 1.5850000000000000e+02 -2 -3 1519 - 3.6500000000000000e+01 - - 2.7823349833488464e-01 -4.4655042886734009e-01 - -7.6742780208587646e-01 1.3798709213733673e-01 - <_> - 4.3755275726318359e+01 - - 1 2 1520 1.2150000000000000e+02 0 -1 1521 - 6.1500000000000000e+01 -2 -3 1522 2.4150000000000000e+02 - - 5.8016028255224228e-02 -5.8355945348739624e-01 - -6.6341340541839600e-01 4.4974878430366516e-01 - <_> - 4.3783382415771484e+01 - - 1 2 1523 1.0750000000000000e+02 0 -1 1524 - 4.5000000000000000e+00 -2 -3 1525 1080. - - 1.8615058064460754e-01 -4.8687478899955750e-01 - 4.3972969055175781e-01 -9.3779921531677246e-01 - <_> - 4.3861518859863281e+01 - - 1 2 1526 8.6500000000000000e+01 0 -1 1527 - 1.5000000000000000e+00 -2 -3 1528 1.1050000000000000e+02 - - 4.7667163610458374e-01 -4.0568494796752930e-01 - -6.4215010404586792e-01 2.9706746339797974e-02 - <_> - 4.4278926849365234e+01 - - 1 2 1529 1.7500000000000000e+01 0 -1 1530 - 1.4500000000000000e+01 -2 -3 1531 7.5500000000000000e+01 - - -6.9139021635055542e-01 6.4281481504440308e-01 - 1.8875285983085632e-02 8.0112278461456299e-01 - <_> - 4.4180038452148438e+01 - - 1 2 1532 1.3500000000000000e+01 0 -1 1533 - 3.7500000000000000e+01 -2 -3 1534 5.5000000000000000e+00 - - -5.8149468898773193e-01 3.6302325129508972e-01 - 2.1482136845588684e-01 -4.8260265588760376e-01 - <_> - 4.4126861572265625e+01 - - 1 2 1535 1.1500000000000000e+01 0 -1 1536 - 4.1450000000000000e+02 -2 -3 1537 448. - - 6.4174473285675049e-01 -5.1509088277816772e-01 - 3.2752755284309387e-01 -4.6536535024642944e-01 - <_> - 4.4402042388916016e+01 - - 1 2 1538 2.3500000000000000e+01 0 -1 1539 - 1.5000000000000000e+00 -2 -3 1540 1.2750000000000000e+02 - - 4.6208882704377174e-03 -7.9509699344635010e-01 - 2.7518290281295776e-01 -5.4167103767395020e-01 - <_> - 4.4075366973876953e+01 - - 1 2 1541 5.0000000000000000e-01 0 -1 1542 - 1.1500000000000000e+01 -2 -3 1543 1.1150000000000000e+02 - - -6.2465864419937134e-01 6.2209093570709229e-01 - -4.6270170807838440e-01 1.2467093765735626e-01 - <_> - 4.4579692840576172e+01 - - 1 2 1544 1.8500000000000000e+01 0 -1 1545 - 6.9500000000000000e+01 -2 -3 1546 4.0500000000000000e+01 - - 5.0432658195495605e-01 -1.5816394984722137e-01 - -6.3987523317337036e-01 1.9685916602611542e-01 - <_> - 4.4788379669189453e+01 - - 1 2 1547 1.2850000000000000e+02 0 -1 1548 - 1.3644850000000000e+05 -2 -3 1549 4.5000000000000000e+00 - - -1.3887935876846313e-01 -8.6476135253906250e-01 - 5.3407603502273560e-01 -1.0505830496549606e-01 - <_> - 4.4465953826904297e+01 - - 1 2 1550 1.0077500000000000e+04 0 -1 1551 - 1.9500000000000000e+01 -2 -3 1552 2.8365000000000000e+03 - - 1.8253329396247864e-01 -5.4899621009826660e-01 - 7.3290371894836426e-01 -1.2869638204574585e-01 - <_> - 4.4705356597900391e+01 - - 1 2 1553 7.0500000000000000e+01 0 -1 1554 - 2.6950000000000000e+02 -2 -3 1555 1.0050000000000000e+02 - - 1.6822533309459686e-01 -6.7410588264465332e-01 - 2.3940414190292358e-01 -7.4502784013748169e-01 - <_> - 4.4884269714355469e+01 - - 1 2 1556 1680. 0 -1 1557 7.5000000000000000e+00 -2 -3 1558 - 3.5850000000000000e+02 - - 2.8662183880805969e-01 -9.1832697391510010e-01 - 1.7891472578048706e-01 -5.9693121910095215e-01 - <_> - 4.4728557586669922e+01 - - 1 2 1559 1.7555000000000000e+03 0 -1 1560 19. -2 -3 1561 - 2332. - - -5.2603626251220703e-01 7.1634864807128906e-01 - -6.1052620410919189e-01 -4.9342345446348190e-03 - <_> - 4.4819171905517578e+01 - - 1 2 1562 1.3750000000000000e+02 0 -1 1563 - 1.5750000000000000e+02 -2 -3 1564 1.3050000000000000e+02 - - -6.0166075825691223e-02 5.8633291721343994e-01 - -8.1866687536239624e-01 1. - <_> - 4.4643035888671875e+01 - - 1 2 1565 6.3500000000000000e+01 0 -1 1566 - 1.9500000000000000e+01 -2 -3 1567 552. - - -7.2267347574234009e-01 2.3417486250400543e-01 - 4.9026021361351013e-01 -6.2466406822204590e-01 - <_> - 4.4639259338378906e+01 - - 1 2 1568 3.5000000000000000e+00 0 -1 1569 - 2.4500000000000000e+01 -2 -3 1570 8.2150000000000000e+02 - - -3.5061278939247131e-01 4.3918311595916748e-01 - 4.6116840094327927e-02 -6.6601943969726562e-01 - <_> - 4.4594688415527344e+01 - - 1 2 1571 1.3500000000000000e+01 0 -1 1572 - 8.5000000000000000e+00 -2 -3 1573 2.1500000000000000e+01 - - -2.5554552674293518e-02 -8.3599025011062622e-01 - 6.3880258798599243e-01 -4.4572211802005768e-02 - <_> - 4.4976432800292969e+01 - - 1 2 1574 9.0350000000000000e+02 0 -1 1575 - 2.0500000000000000e+01 -2 -3 1576 1.2615000000000000e+03 - - 3.8174423575401306e-01 -2.4711053073406219e-01 - -7.3085212707519531e-01 1.3097274303436279e-01 - <_> - 4.5154560089111328e+01 - - 1 2 1577 3.2500000000000000e+01 0 -1 1578 41. -2 -3 1579 - 1153. - - 1.3735578954219818e-01 -9.0119731426239014e-01 - -8.0212074518203735e-01 1.7812842130661011e-01 - <_> - 4.5438049316406250e+01 - - 1 2 1580 3.4500000000000000e+01 0 -1 1581 - 1.4500000000000000e+01 -2 -3 1582 1.8650000000000000e+02 - - 7.1418809890747070e-01 -4.1756910085678101e-01 - 3.2309561967849731e-01 -6.6359835863113403e-01 - <_> - 4.5376655578613281e+01 - - 1 2 1583 5.7500000000000000e+01 0 -1 1584 - 3.4835000000000000e+03 -2 -3 1585 1.6677500000000000e+04 - - 9.3545570969581604e-02 -6.6382712125778198e-01 - -6.0366630554199219e-01 3.5915172100067139e-01 - <_> - 4.5476417541503906e+01 - - 1 2 1586 1.2235000000000000e+03 0 -1 1587 - 5.0000000000000000e-01 -2 -3 1588 2.0550000000000000e+02 - - 9.9763244390487671e-02 -5.6198817491531372e-01 - 5.3732144832611084e-01 -2.9778870940208435e-01 - <_> - 4.5174198150634766e+01 - - 1 2 1589 2.5750000000000000e+02 0 -1 1590 - 3.4500000000000000e+01 -2 -3 1591 4.5000000000000000e+00 - - -5.3968584537506104e-01 9.1056388616561890e-01 - 2.8303310275077820e-01 -3.0222162604331970e-01 - <_> - 4.5571937561035156e+01 - - 1 2 1592 3.5500000000000000e+01 0 -1 1593 - 2.5000000000000000e+00 -2 -3 1594 9.5000000000000000e+00 - - 8.1757766008377075e-01 -9.3560528755187988e-01 - 4.8287272453308105e-01 -1.0781970620155334e-01 - <_> - 4.5820465087890625e+01 - - 1 2 1595 2.6500000000000000e+01 0 -1 1596 - 9.5000000000000000e+00 -2 -3 1597 64. - - 1.6339369118213654e-01 -4.8592147231101990e-01 - -8.0971640348434448e-01 4.2723599076271057e-01 - <_> - 4.5875530242919922e+01 - - 1 2 1598 4.8150000000000000e+02 0 -1 1599 - 1.9285000000000000e+03 -2 -3 1600 1.1625000000000000e+03 - - -7.9999005794525146e-01 1.8668703734874725e-01 - 6.2736529111862183e-01 -1.2364284694194794e-01 - <_> - 4.6327709197998047e+01 - - 1 2 1601 8.9450000000000000e+02 0 -1 1602 - 1.5000000000000000e+00 -2 -3 1603 6634. - - 1.7092481255531311e-02 -6.5232801437377930e-01 - 5.6317013502120972e-01 -4.4582167267799377e-01 - <_> - 4.6148258209228516e+01 - - 1 2 1604 43039. 0 -1 1605 1.5500000000000000e+01 -2 -3 1606 - 3.8225000000000000e+03 - - -1. 4.9083131551742554e-01 -3.1666326522827148e-01 - 6.4053624868392944e-01 - <_> - 4.6105995178222656e+01 - - 1 2 1607 3.5000000000000000e+00 0 -1 1608 21. -2 -3 1609 - 2.6500000000000000e+01 - - -9.7276186943054199e-01 1. 3.7125155329704285e-01 - -1.5020866692066193e-01 - <_> - 4.6445560455322266e+01 - - 1 2 1610 1.4450000000000000e+02 0 -1 1611 - 1.0500000000000000e+01 -2 -3 1612 6.4500000000000000e+01 - - 5.7516593486070633e-02 -5.1498800516128540e-01 - 8.0552762746810913e-01 -1. - <_> - 4.6819828033447266e+01 - - 1 2 1613 8.8500000000000000e+01 0 -1 1614 - 5.0000000000000000e-01 -2 -3 1615 3.1500000000000000e+01 - - 2.4280284345149994e-01 -5.9024065732955933e-01 - 4.4487208127975464e-01 -1.7842440307140350e-01 - <_> - 4.6427459716796875e+01 - - 1 2 1616 3.1500000000000000e+01 0 -1 1617 - 3.6500000000000000e+01 -2 -3 1618 1.1135000000000000e+03 - - -3.8508945703506470e-01 5.4531073570251465e-01 - -3.9237090945243835e-01 5.3639191389083862e-01 - <_> - 4.6388378143310547e+01 - - 1 2 1619 1.3495000000000000e+03 0 -1 1620 - 1.2865000000000000e+03 -2 -3 1621 1.5000000000000000e+00 - - -3.9079591631889343e-02 7.2226065397262573e-01 - 1.6772003471851349e-01 -8.0866611003875732e-01 - <_> - 4.6664485931396484e+01 - - 1 2 1622 5.7650000000000000e+02 0 -1 1623 38772. -2 -3 1624 - 3.5000000000000000e+00 - - -6.7578887939453125e-01 4.5766559243202209e-01 - 3.2720005512237549e-01 -3.8240414857864380e-01 - <_> - 4.6878482818603516e+01 - - 1 2 1625 1.6500000000000000e+01 0 -1 1626 - 3.1050000000000000e+02 -2 -3 1627 1.9500000000000000e+01 - - 3.3941693603992462e-02 -8.9211910963058472e-01 - -7.0304632186889648e-01 2.1399846673011780e-01 - <_> - 4.6925651550292969e+01 - - 1 2 1628 1.0285000000000000e+03 0 -1 1629 - 2.7950000000000000e+02 -2 -3 1630 9.5000000000000000e+00 - - 4.1127714514732361e-01 -1.3439148664474487e-01 - -7.5179332494735718e-01 3.4586694836616516e-01 - <_> - 4.7010379791259766e+01 - - 1 2 1631 2.4500000000000000e+01 0 -1 1632 - 1.1265000000000000e+03 -2 -3 1633 5.5000000000000000e+00 - - -5.5471497774124146e-01 8.4728397428989410e-02 - -6.6250604391098022e-01 5.0282490253448486e-01 - <_> - 4.7003398895263672e+01 - - 1 2 1634 5.5000000000000000e+00 0 -1 1635 - 1.3500000000000000e+01 -2 -3 1636 5.3500000000000000e+01 - - -6.1465358734130859e-01 5.2310514450073242e-01 - -6.9816145114600658e-03 -6.2556844949722290e-01 - <_> - 4.7450687408447266e+01 - - 1 2 1637 8.5000000000000000e+00 0 -1 1638 - 1.9500000000000000e+01 -2 -3 1639 7.3500000000000000e+01 - - 1.8994300067424774e-01 -5.1936614513397217e-01 - -5.1978632807731628e-02 5.4172980785369873e-01 - <_> - 4.7289505004882812e+01 - - 1 2 1640 4.5000000000000000e+00 0 -1 1641 - 5.0000000000000000e-01 -2 -3 1642 7.9500000000000000e+01 - - -9.3673211336135864e-01 4.2628908157348633e-01 - -6.1518812179565430e-01 3.8786195218563080e-02 - <_> - 4.7609291076660156e+01 - - 1 2 1643 9.0500000000000000e+01 0 -1 1644 - 1.7500000000000000e+01 -2 -3 1645 5.5500000000000000e+01 - - 2.5377960875630379e-02 8.4010601043701172e-01 - -5.5201697349548340e-01 9.3266852200031281e-02 - <_> - 4.6873203277587891e+01 - - 1 2 1646 181. 0 -1 1647 3.2500000000000000e+01 -2 -3 1648 - 1.5500000000000000e+01 - - -2.4539522826671600e-01 3.0167981982231140e-01 - -7.8757899999618530e-01 1. - <_> - 4.7333202362060547e+01 - - 1 2 1649 3.5000000000000000e+00 0 -1 1650 - 3.6450000000000000e+02 -2 -3 1651 131. - - 4.5999684929847717e-01 -8.5532951354980469e-01 - -7.6767379045486450e-01 -4.0166407823562622e-02 - <_> - 4.7809810638427734e+01 - - 1 2 1652 2.3415000000000000e+03 0 -1 1653 - 5.5550000000000000e+02 -2 -3 1654 7.8650000000000000e+02 - - 1.0606591403484344e-01 -7.2960245609283447e-01 - 4.7661080956459045e-01 -1.5633082389831543e-01 - <_> - 4.8187953948974609e+01 - - 1 2 1655 5.0500000000000000e+01 0 -1 1656 - 2.7500000000000000e+01 -2 -3 1657 4.6500000000000000e+01 - - -3.6588409543037415e-01 2.0847728848457336e-01 - 5.3038245439529419e-01 -9.1906154155731201e-01 - <_> - 4.8385017395019531e+01 - - 1 2 1658 2.5000000000000000e+00 0 -1 1659 - 5.0000000000000000e-01 -2 -3 1660 5.0000000000000000e-01 - - -8.3917874097824097e-01 3.5120227932929993e-01 - 4.4822514057159424e-02 -5.4643929004669189e-01 - <_> - 4.7983116149902344e+01 - - 1 2 1661 1.7500000000000000e+01 0 -1 1662 46. -2 -3 1663 - 4.8500000000000000e+01 - - -8.7424659729003906e-01 4.0549939870834351e-01 - -4.3008446693420410e-01 3.0111113190650940e-01 - <_> - 4.7767936706542969e+01 - - 1 2 1664 3.7250000000000000e+02 0 -1 1665 - 1.9500000000000000e+01 -2 -3 1666 1.7500000000000000e+01 - - -2.1517898142337799e-01 3.3102101087570190e-01 - -7.5989711284637451e-01 2.0524039864540100e-01 - <_> - 4.7636989593505859e+01 - - 1 2 1667 5.0000000000000000e-01 0 -1 1668 - 3.5000000000000000e+00 -2 -3 1669 2.2050000000000000e+02 - - -5.5064278841018677e-01 4.6156671643257141e-01 - -3.4933045506477356e-01 3.1964045763015747e-01 - <_> - 4.8035350799560547e+01 - - 1 2 1670 5.5000000000000000e+00 0 -1 1671 - 1.6500000000000000e+01 -2 -3 1672 1.5000000000000000e+00 - - 5.4588496685028076e-01 -5.2224334329366684e-02 1. - -9.5129132270812988e-01 - <_> - 4.8075088500976562e+01 - - 1 2 1673 5.8500000000000000e+01 0 -1 1674 - 1.7500000000000000e+01 -2 -3 1675 60. - - 3.9737168699502945e-02 -4.9285057187080383e-01 - 5.5449837446212769e-01 -5.8396834135055542e-01 - <_> - 4.8273761749267578e+01 - - 1 2 1676 5.5000000000000000e+00 0 -1 1677 - 2.4500000000000000e+01 -2 -3 1678 5.5450000000000000e+02 - - 1.7725417017936707e-01 -8.1391674280166626e-01 - -5.4412531852722168e-01 2.6674869656562805e-01 - <_> - 4.8013420104980469e+01 - - 1 2 1679 8.5000000000000000e+00 0 -1 1680 1955. -2 -3 1681 - 96. - - 1.7242313921451569e-01 -9.2252993583679199e-01 - 1.7602242529392242e-01 -6.7200791835784912e-01 - <_> - 4.8326412200927734e+01 - - 1 2 1682 3.0104500000000000e+04 0 -1 1683 - 2.8050000000000000e+02 -2 -3 1684 2.7154500000000000e+04 - - 3.1299278140068054e-01 -1.8952211737632751e-01 - -9.5317900180816650e-01 1. - <_> - 4.8304637908935547e+01 - - 1 2 1685 5.4500000000000000e+01 0 -1 1686 - 4.4650000000000000e+02 -2 -3 1687 3.5000000000000000e+00 - - 2.1255780756473541e-01 -8.1515192985534668e-01 - 6.9879400730133057e-01 -2.3700682446360588e-02 - <_> - 4.8183525085449219e+01 - - 1 2 1688 2.5000000000000000e+00 0 -1 1689 128. -2 -3 1690 - 3.5450000000000000e+02 - - -8.0286073684692383e-01 8.9803677797317505e-01 - 3.0971682071685791e-01 -2.6458665728569031e-01 - <_> - 4.8420330047607422e+01 - - 1 2 1691 4.5000000000000000e+00 0 -1 1692 1348. -2 -3 1693 - 1.6500000000000000e+01 - - 2.1627983450889587e-01 -9.3673717975616455e-01 - 2.7623519301414490e-01 -2.4342669546604156e-01 - <_> - 4.8284450531005859e+01 - - 1 2 1694 5.0350000000000000e+02 0 -1 1695 - 5.1950000000000000e+02 -2 -3 1696 7.8350000000000000e+02 - - -3.7904888391494751e-01 9.6044069528579712e-01 - 7.1280044317245483e-01 -2.8820293024182320e-02 - <_> - 4.8518047332763672e+01 - - 1 2 1697 7.3500000000000000e+01 0 -1 1698 - 1.0750000000000000e+02 -2 -3 1699 1.0508500000000000e+04 - - 2.3359699547290802e-01 -3.2509902119636536e-01 - -5.7240724563598633e-01 6.9403934478759766e-01 - <_> - 4.8881092071533203e+01 - - 1 2 1700 1.9500000000000000e+01 0 -1 1701 - 2.5000000000000000e+00 -2 -3 1702 5.7450000000000000e+02 - - 7.0620238780975342e-02 -6.4059627056121826e-01 - -5.6051510572433472e-01 3.6304420232772827e-01 - <_> - 4.8674976348876953e+01 - - 1 2 1703 1.6500000000000000e+01 0 -1 1704 2698. -2 -3 1705 - 1.8500000000000000e+01 - - -9.4122928380966187e-01 1. 3.0906781554222107e-01 - -2.2473946213722229e-01 - <_> - 4.8650527954101562e+01 - - 1 2 1706 285. 0 -1 1707 2.5000000000000000e+00 -2 -3 1708 - 2.9500000000000000e+01 - - -6.1351448297500610e-01 6.1334443092346191e-01 - -5.3962910175323486e-01 9.5953509211540222e-02 - <_> - 4.8581436157226562e+01 - - 1 2 1709 1.5000000000000000e+00 0 -1 1710 - 7.2500000000000000e+01 -2 -3 1711 2.5000000000000000e+00 - - -1.5018194913864136e-01 5.4274356365203857e-01 - 3.2649326324462891e-01 -4.6085461974143982e-01 - <_> - 4.8824050903320312e+01 - - 1 2 1712 7.5000000000000000e+00 0 -1 1713 - 1.3500000000000000e+01 -2 -3 1714 1.4750000000000000e+02 - - -9.4072926044464111e-01 4.9135723710060120e-01 - -3.6922344565391541e-01 2.8209823369979858e-01 - <_> - 4.9051761627197266e+01 - - 1 2 1715 1.2945000000000000e+03 0 -1 1716 - 2.5000000000000000e+00 -2 -3 1717 12557. - - 2.2771342098712921e-01 -3.0103012919425964e-01 - 8.6664509773254395e-01 -6.4184981584548950e-01 - <_> - 4.9400878906250000e+01 - - 1 2 1718 3.7500000000000000e+01 0 -1 1719 - 1.5000000000000000e+00 -2 -3 1720 1.7395000000000000e+03 - - 5.5372547358274460e-02 -6.4846998453140259e-01 - -5.1582384109497070e-01 3.7294328212738037e-01 - <_> - 4.9400951385498047e+01 - - 1 2 1721 1.9500000000000000e+01 0 -1 1722 - 2.7500000000000000e+01 -2 -3 1723 1.5500000000000000e+01 - - -1.0849715210497379e-02 -6.8436485528945923e-01 - -2.9969093203544617e-01 8.8249796628952026e-01 - <_> - 4.9150127410888672e+01 - - 1 2 1724 6695. 0 -1 1725 4.1995000000000000e+03 -2 -3 1726 - 3060. - - 6.0968101024627686e-01 -1.8973879516124725e-01 - 6.7397463321685791e-01 -2.9114890098571777e-01 - <_> - 4.9635650634765625e+01 - - 1 2 1727 1.2185000000000000e+03 0 -1 1728 - 6.7250000000000000e+02 -2 -3 1729 4.4500000000000000e+01 - - -3.2244133949279785e-01 8.5333442687988281e-01 - -6.7660027742385864e-01 4.8552277684211731e-01 - <_> - 4.9185047149658203e+01 - - 1 2 1730 4.6500000000000000e+01 0 -1 1731 - 1.7535000000000000e+03 -2 -3 1732 8.8500000000000000e+01 - - 1.1635149270296097e-01 -4.5060265064239502e-01 - -8.2891207933425903e-01 8.0917561054229736e-01 - <_> - 4.9572048187255859e+01 - - 1 2 1733 3.5000000000000000e+00 0 -1 1734 - 1.2500000000000000e+01 -2 -3 1735 4.4115000000000000e+03 - - -7.0214819908142090e-01 3.8700041174888611e-01 - -4.7868278622627258e-01 1.9085995852947235e-01 - <_> - 4.9520980834960938e+01 - - 1 2 1736 6.4500000000000000e+01 0 -1 1737 - 1.0850000000000000e+02 -2 -3 1738 9.5775000000000000e+03 - - -5.1066368818283081e-02 6.1802017688751221e-01 - -8.5373187065124512e-01 7.1274143457412720e-01 - <_> - 4.9744472503662109e+01 - - 1 2 1739 2.5000000000000000e+00 0 -1 1740 - 1.8500000000000000e+01 -2 -3 1741 8.5000000000000000e+00 - - -8.1709325313568115e-01 4.6844825148582458e-01 - 2.2349253296852112e-01 -4.7425210475921631e-01 - <_> - 5.0045192718505859e+01 - - 1 2 1742 1.2500000000000000e+01 0 -1 1743 - 7.5000000000000000e+00 -2 -3 1744 4.5000000000000000e+00 - - 4.9264114350080490e-02 -5.9978258609771729e-01 - 3.0072054266929626e-01 -7.8326350450515747e-01 - <_> - 5.0417678833007812e+01 - - 1 2 1745 4.1500000000000000e+01 0 -1 1746 - 3.5000000000000000e+00 -2 -3 1747 614. - - 4.2858477681875229e-02 -6.5439593791961670e-01 - 3.7248274683952332e-01 -6.0121566057205200e-01 - <_> - 5.0184413909912109e+01 - - 1 2 1748 1.8500000000000000e+01 0 -1 1749 - 1.9500000000000000e+01 -2 -3 1750 4.2335000000000000e+03 - - -3.9789116382598877e-01 3.3808970451354980e-01 - -6.7741900682449341e-01 -6.1766817234456539e-03 - <_> - 5.0395923614501953e+01 - - 1 2 1751 7.8500000000000000e+01 0 -1 1752 621. -2 -3 1753 - 1.1150000000000000e+02 - - -5.8525377511978149e-01 4.6244528889656067e-01 - -6.4186108112335205e-01 -1.5577160753309727e-02 - <_> - 5.0368152618408203e+01 - - 1 2 1754 7.4500000000000000e+01 0 -1 1755 - 8.0500000000000000e+01 -2 -3 1756 5.5000000000000000e+00 - - 2.7840653061866760e-01 -5.0665259361267090e-01 - 2.8003776073455811e-01 -6.6763132810592651e-01 - <_> - 5.0609447479248047e+01 - - 1 2 1757 4.5000000000000000e+00 0 -1 1758 - 5.0000000000000000e-01 -2 -3 1759 1.0050000000000000e+02 - - 1.4921510219573975e-01 -6.7458331584930420e-01 - 2.4129594862461090e-01 -7.1370732784271240e-01 - <_> - 5.0734519958496094e+01 - - 1 2 1760 8.1450000000000000e+02 0 -1 1761 - 3.1750000000000000e+02 -2 -3 1762 4.1450000000000000e+02 - - -3.4531843662261963e-01 5.5791461467742920e-01 - 5.3364270925521851e-01 -3.7804716825485229e-01 - <_> - 5.0482379913330078e+01 - - 1 2 1763 1.5500000000000000e+01 0 -1 1764 - 6.5000000000000000e+00 -2 -3 1765 2.7500000000000000e+01 - - -7.7612209320068359e-01 2.8200766444206238e-01 - -6.6070902347564697e-01 5.4497551918029785e-01 - <_> - 5.0946456909179688e+01 - - 1 2 1766 1.3055000000000000e+03 0 -1 1767 13080. -2 -3 1768 - 1.5000000000000000e+00 - - -1.6180552542209625e-02 6.9708949327468872e-01 - 1.5789812803268433e-01 -6.3250225782394409e-01 - <_> - 5.0942211151123047e+01 - - 1 2 1769 5.5000000000000000e+00 0 -1 1770 - 1.6500000000000000e+01 -2 -3 1771 1.1500000000000000e+01 - - -6.9032448530197144e-01 4.8323771357536316e-01 - -5.8806318044662476e-01 -4.2477925308048725e-03 - <_> - 5.0879100799560547e+01 - - 1 2 1772 3.2500000000000000e+01 0 -1 1773 - 1.5000000000000000e+00 -2 -3 1774 203. - - 7.2742664813995361e-01 -9.5186221599578857e-01 - 2.9152801632881165e-01 -2.9612061381340027e-01 - <_> - 5.1405494689941406e+01 - - 1 2 1775 5.9500000000000000e+01 0 -1 1776 - 5.0000000000000000e-01 -2 -3 1777 5.1500000000000000e+01 - - 2.0475186407566071e-01 -4.3729728460311890e-01 - 5.2639096975326538e-01 -5.4126620292663574e-01 - <_> - 5.1545295715332031e+01 - - 1 2 1778 5.1500000000000000e+01 0 -1 1779 113. -2 -3 1780 - 14. - - -8.7603360414505005e-01 1.3980150222778320e-01 1. - -9.8559749126434326e-01 - <_> - 5.1772174835205078e+01 - - 1 2 1781 5.0000000000000000e-01 0 -1 1782 - 5.0000000000000000e-01 -2 -3 1783 6.9500000000000000e+01 - - -8.5320812463760376e-01 5.4211145639419556e-01 - -4.2864811420440674e-01 1.9388379156589508e-01 - <_> - 5.1395809173583984e+01 - - 1 2 1784 4.1500000000000000e+01 0 -1 1785 - 2.4500000000000000e+01 -2 -3 1786 1.0350000000000000e+02 - - -3.6399099230766296e-01 2.9955938458442688e-01 - -6.9159519672393799e-01 4.9095645546913147e-01 - <_> - 5.1332057952880859e+01 - - 1 2 1787 1.1545000000000000e+03 0 -1 1788 - 1.0500000000000000e+01 -2 -3 1789 7.7350000000000000e+02 - - -8.4412866830825806e-01 2.4716804921627045e-01 - 6.3626372814178467e-01 -6.3753142952919006e-02 - <_> - 5.1058708190917969e+01 - - 1 2 1790 2.5000000000000000e+00 0 -1 1791 156. -2 -3 1792 - 667. - - 5.6390190124511719e-01 -7.4146884679794312e-01 - -2.7334854006767273e-01 6.9182580709457397e-01 - <_> - 5.1457290649414062e+01 - - 1 2 1793 1.8500000000000000e+01 0 -1 1794 125. -2 -3 1795 - 6.5000000000000000e+00 - - -5.9387379884719849e-01 8.3531779050827026e-01 - 6.5114057064056396e-01 -2.6395700871944427e-02 - <_> - 5.1741825103759766e+01 - - 1 2 1796 5.5000000000000000e+00 0 -1 1797 - 8.0500000000000000e+01 -2 -3 1798 6.5500000000000000e+01 - - 5.2819365262985229e-01 -3.8713422417640686e-01 - -6.3428682088851929e-01 3.1973972916603088e-02 - <_> - 5.1987751007080078e+01 - - 1 2 1799 9.2950000000000000e+02 0 -1 1800 - 1.7500000000000000e+01 -2 -3 1801 3.3500000000000000e+01 - - 2.9681459069252014e-01 -6.8903458118438721e-01 - -5.5376708507537842e-01 2.4592779576778412e-01 - <_> - 5.1639968872070312e+01 - - 1 2 1802 5.0000000000000000e-01 0 -1 1803 727. -2 -3 1804 - 1195. - - 4.7003021836280823e-01 -8.6940318346023560e-01 - -3.4778383374214172e-01 9.5309317111968994e-01 - <_> - 5.1864089965820312e+01 - - 1 2 1805 1.6500000000000000e+01 0 -1 1806 - 1.5500000000000000e+01 -2 -3 1807 1.4500000000000000e+01 - - -8.4845769405364990e-01 2.4072749912738800e-01 - 2.2412241995334625e-01 -5.8960992097854614e-01 - <_> - 5.1842327117919922e+01 - - 1 2 1808 1.3500000000000000e+01 0 -1 1809 - 1.1693500000000000e+04 -2 -3 1810 108. - - -2.1761292591691017e-02 -7.1312093734741211e-01 -1. - 7.1802109479904175e-01 - <_> - 5.2474052429199219e+01 - - 1 2 1811 5.6500000000000000e+01 0 -1 1812 - 2.7150000000000000e+02 -2 -3 1813 4.7050000000000000e+02 - - 4.8798479139804840e-02 -6.1629486083984375e-01 - 6.3172489404678345e-01 -7.8125256299972534e-01 - <_> - 5.2882488250732422e+01 - - 1 2 1814 2.7500000000000000e+01 0 -1 1815 - 2.7950000000000000e+02 -2 -3 1816 1.2500000000000000e+01 - - 1.4727012813091278e-01 -4.5306998491287231e-01 - -9.6783083677291870e-01 4.0843614935874939e-01 - <_> - 5.2590320587158203e+01 - - 1 2 1817 1.2500000000000000e+01 0 -1 1818 2332. -2 -3 1819 - 2.0500000000000000e+01 - - -4.0328302979469299e-01 3.9351496100425720e-01 - -4.5640042424201965e-01 7.0570003986358643e-01 - <_> - 5.2686405181884766e+01 - - 1 2 1820 2.8450000000000000e+02 0 -1 1821 - 5.1375000000000000e+03 -2 -3 1822 5524. - - -6.9284421205520630e-01 5.7867264747619629e-01 - -5.0904291868209839e-01 4.2930658906698227e-02 - <_> - 5.2665336608886719e+01 - - 1 2 1823 5.0000000000000000e-01 0 -1 1824 - 1.0500000000000000e+01 -2 -3 1825 3.1050000000000000e+02 - - -6.9999736547470093e-01 5.0521236658096313e-01 - -2.1066894754767418e-02 -6.7034846544265747e-01 - <_> - 5.2668560028076172e+01 - - 1 2 1826 1.5000000000000000e+00 0 -1 1827 - 4.5000000000000000e+00 -2 -3 1828 3.9500000000000000e+01 - - -8.5607993602752686e-01 2.3388290405273438e-01 - -4.7936838865280151e-01 6.4502292871475220e-01 - <_> - 5.2418178558349609e+01 - - 1 2 1829 2.5000000000000000e+00 0 -1 1830 - 1.2500000000000000e+01 -2 -3 1831 3.7450000000000000e+02 - - -2.5030246376991272e-01 4.1110610961914062e-01 - -4.8104089498519897e-01 2.8128054738044739e-01 - <_> - 5.2447761535644531e+01 - - 1 2 1832 1.4500000000000000e+01 0 -1 1833 - 1.6038500000000000e+04 -2 -3 1834 6.5000000000000000e+00 - - 6.2847787141799927e-01 -3.8954043388366699e-01 - 2.9580958187580109e-02 -6.1391896009445190e-01 - <_> - 5.2839599609375000e+01 - - 1 2 1835 8.0500000000000000e+01 0 -1 1836 - 1.4845000000000000e+03 -2 -3 1837 1.1500000000000000e+01 - - -4.2797079682350159e-01 7.2983002662658691e-01 - -4.2472079396247864e-01 3.9183807373046875e-01 - <_> - 5.3161972045898438e+01 - - 1 2 1838 169. 0 -1 1839 2.3500000000000000e+01 -2 -3 1840 - 3.0500000000000000e+01 - - 3.2237488031387329e-01 -2.9692310094833374e-01 - 5.2028205245733261e-02 -8.3673799037933350e-01 - <_> - 5.3484062194824219e+01 - - 1 2 1841 9.5000000000000000e+00 0 -1 1842 - 4.1565000000000000e+03 -2 -3 1843 924. - - 1.3346555642783642e-02 -7.3501825332641602e-01 - -5.0849604606628418e-01 3.2209011912345886e-01 - <_> - 5.3532875061035156e+01 - - 1 2 1844 5.0550000000000000e+02 0 -1 1845 - 5.5000000000000000e+00 -2 -3 1846 8.2500000000000000e+01 - - 3.6607748270034790e-01 -4.2199668288230896e-01 - -7.4034929275512695e-01 3.8815331459045410e-01 - <_> - 5.3596260070800781e+01 - - 1 2 1847 1.9550000000000000e+02 0 -1 1848 - 7.6850000000000000e+02 -2 -3 1849 7.7350000000000000e+02 - - -3.7186509370803833e-01 4.2454031109809875e-01 - 4.2895314097404480e-01 -4.3257468938827515e-01 - <_> - 5.3252147674560547e+01 - - 1 2 1850 4.2500000000000000e+01 0 -1 1851 - 4.5500000000000000e+01 -2 -3 1852 2.9500000000000000e+01 - - 3.5978814959526062e-01 -7.1406579017639160e-01 - -4.4595164060592651e-01 5.2671235799789429e-01 - <_> - 5.3540912628173828e+01 - - 1 2 1853 2.0500000000000000e+01 0 -1 1854 276. -2 -3 1855 - 1.2850000000000000e+02 - - 3.2382410764694214e-01 -6.7686492204666138e-01 - 2.8876608610153198e-01 -5.3703272342681885e-01 - <_> - 5.4058471679687500e+01 - - 1 2 1856 1.1065000000000000e+03 0 -1 1857 - 4.5000000000000000e+00 -2 -3 1858 1570. - - -4.9808049201965332e-01 5.8341735601425171e-01 - -4.8129281401634216e-01 1.1452827602624893e-01 - <_> - 5.3559310913085938e+01 - - 1 2 1859 5.0000000000000000e-01 0 -1 1860 - 9.0500000000000000e+01 -2 -3 1861 1.4250000000000000e+02 - - 4.2286753654479980e-01 -7.5187528133392334e-01 - -5.5336773395538330e-01 1.0487236082553864e-01 - <_> - 5.3792110443115234e+01 - - 1 2 1862 5.5000000000000000e+00 0 -1 1863 - 5.2850000000000000e+02 -2 -3 1864 6.5000000000000000e+00 - - -9.8098456859588623e-01 2.5169646739959717e-01 - 3.1981575489044189e-01 -2.3502953350543976e-01 - <_> - 5.4220581054687500e+01 - - 1 2 1865 1.4500000000000000e+01 0 -1 1866 - 2.4025000000000000e+03 -2 -3 1867 4.5000000000000000e+00 - - 2.7904801070690155e-02 -8.8576656579971313e-01 - 4.2847126722335815e-01 -1.1248188465833664e-01 - <_> - 5.4116458892822266e+01 - - 1 2 1868 3.0500000000000000e+01 0 -1 1869 - 1.0500000000000000e+01 -2 -3 1870 1.5000000000000000e+00 - - 2.2367130219936371e-01 -9.1485178470611572e-01 - 5.5012780427932739e-01 -1.0412286967039108e-01 - <_> - 5.4431377410888672e+01 - - 1 2 1871 1110. 0 -1 1872 2.4500000000000000e+01 -2 -3 1873 - 8.7500000000000000e+01 - - 6.6319614648818970e-02 -9.0293776988983154e-01 - -2.7686271071434021e-01 3.1491985917091370e-01 - <_> - 5.3841773986816406e+01 - - 1 2 1874 3.1500000000000000e+01 0 -1 1875 - 5.2950000000000000e+02 -2 -3 1876 2.8335000000000000e+03 - - 4.3545942753553391e-03 7.3121100664138794e-01 - 3.2255075871944427e-02 -6.5287035703659058e-01 - <_> - 5.3977920532226562e+01 - - 1 2 1877 4.4635000000000000e+03 0 -1 1878 - 3.5000000000000000e+00 -2 -3 1879 1.2150000000000000e+02 - - -8.3098447322845459e-01 1.3614629209041595e-01 -1. 1. - <_> - 5.4538074493408203e+01 - - 1 2 1880 2.0500000000000000e+01 0 -1 1881 - 7.8500000000000000e+01 -2 -3 1882 5.0500000000000000e+01 - - -7.4102438986301422e-02 6.1979264020919800e-01 - 8.4239649772644043e-01 -8.3167529106140137e-01 - <_> - 5.4199844360351562e+01 - - 0 1 1883 5.5000000000000000e+00 0 1 1883 5.5000000000000000e+00 -1 -2 1884 - 2.3500000000000000e+01 - - -1. -1. 1.8631875514984131e-01 -3.9786672592163086e-01 - <_> - 5.4321243286132812e+01 - - 1 2 1885 100108. 0 -1 1886 2.4450000000000000e+02 -2 -3 1887 - 9.5000000000000000e+00 - - -6.4501583576202393e-01 1.2139873951673508e-01 - -9.8769044876098633e-01 1. - <_> - 5.4476604461669922e+01 - - 1 2 1888 3.0500000000000000e+01 0 -1 1889 832. -2 -3 1890 - 3.8650000000000000e+02 - - 4.7927451133728027e-01 -3.6918625235557556e-01 - 4.3850061297416687e-01 -4.2658120393753052e-01 - <_> - 5.4880313873291016e+01 - - 1 2 1891 4.5000000000000000e+00 0 -1 1892 - 1.8500000000000000e+01 -2 -3 1893 9.5000000000000000e+00 - - -8.9552253484725952e-01 1. 4.0370723605155945e-01 - -1.3244532048702240e-01 - <_> - 5.4826488494873047e+01 - - 1 2 1894 3.3500000000000000e+01 0 -1 1895 - 5.0000000000000000e-01 -2 -3 1896 1.5000000000000000e+00 - - 5.2266705036163330e-01 -4.9189320206642151e-01 - 4.7518423199653625e-01 -1.8694840371608734e-01 - <_> - 5.4719253540039062e+01 - - 1 2 1897 1.3250000000000000e+02 0 -1 1898 197. -2 -3 1899 - 5.5000000000000000e+00 - - -2.5596961379051208e-02 -8.0278450250625610e-01 - 5.8479261398315430e-01 -1.0723467171192169e-01 - <_> - 5.4927463531494141e+01 - - 1 2 1900 3.5000000000000000e+00 0 -1 1901 - 2.7500000000000000e+01 -2 -3 1902 4.5000000000000000e+00 - - -9.8025721311569214e-01 1. 5.0813627243041992e-01 - -9.1872639954090118e-02 - <_> - 5.5091140747070312e+01 - - 1 2 1903 3.5500000000000000e+01 0 -1 1904 590. -2 -3 1905 - 9.5000000000000000e+00 - - 3.2067620754241943e-01 -8.1219708919525146e-01 - 3.9956301450729370e-01 -1.7662063241004944e-01 - <_> - 5.5048011779785156e+01 - - 1 2 1906 1.5500000000000000e+01 0 -1 1907 - 2.5000000000000000e+00 -2 -3 1908 1.1500000000000000e+01 - - 4.5108359307050705e-02 -5.7894098758697510e-01 - 5.1151078939437866e-01 -6.0667592287063599e-01 - <_> - 5.4623245239257812e+01 - - 1 2 1909 2.6500000000000000e+01 0 -1 1910 - 1.1500000000000000e+01 -2 -3 1911 2.0250000000000000e+02 - - 4.0922752022743225e-01 -6.0327196121215820e-01 - 3.5508340597152710e-01 -4.1403025388717651e-01 - <_> - 5.4938964843750000e+01 - - 1 2 1912 4.4450000000000000e+02 0 -1 1913 - 4.8075000000000000e+03 -2 -3 1914 5.0000000000000000e-01 - - 3.7132555246353149e-01 -9.4460356235504150e-01 - 3.1572005152702332e-01 -2.5736778974533081e-01 - <_> - 5.5008499145507812e+01 - - 1 2 1915 2.4350000000000000e+02 0 -1 1916 - 1.6500000000000000e+01 -2 -3 1917 98. - - 6.9533005356788635e-02 -5.5879753828048706e-01 - 5.2043431997299194e-01 -5.5762660503387451e-01 - <_> - 5.5581649780273438e+01 - - 1 2 1918 1.2755000000000000e+03 0 -1 1919 - 1.5000000000000000e+00 -2 -3 1920 1.4500000000000000e+01 - - 2.7316585183143616e-01 -3.9282438158988953e-01 - -8.5869687795639038e-01 5.7315075397491455e-01 - <_> - 5.5420215606689453e+01 - - 1 2 1921 3.7635000000000000e+03 0 -1 1922 - 1.0904500000000000e+04 -2 -3 1923 6.9750000000000000e+02 - - -8.7749630212783813e-02 7.8290265798568726e-01 - 3.7081098556518555e-01 -3.9786884188652039e-01 - <_> - 5.5134284973144531e+01 - - 1 2 1924 3.5000000000000000e+00 0 -1 1925 - 1.5000000000000000e+00 -2 -3 1926 1.3535000000000000e+03 - - -8.4669679403305054e-01 5.6518930196762085e-01 - -2.8593066334724426e-01 7.8882968425750732e-01 - <_> - 5.5399112701416016e+01 - - 1 2 1927 1.4500000000000000e+01 0 -1 1928 - 9.5000000000000000e+00 -2 -3 1929 2.1950000000000000e+02 - - 3.6673456430435181e-01 -8.0567514896392822e-01 - 2.6483070850372314e-01 -5.4888963699340820e-01 - <_> - 5.5665115356445312e+01 - - 1 2 1930 1.0500000000000000e+01 0 -1 1931 - 4.3500000000000000e+01 -2 -3 1932 2.2500000000000000e+01 - - -8.0224722623825073e-01 7.3296892642974854e-01 - 3.1390979886054993e-01 -2.7697941660881042e-01 - <_> - 5.5662361145019531e+01 - - 1 2 1933 5.0000000000000000e-01 0 -1 1934 - 1.0500000000000000e+01 -2 -3 1935 609. - - -4.6577224135398865e-01 3.6372005939483643e-01 - -6.7203342914581299e-02 -8.5283303260803223e-01 - <_> - 5.5597713470458984e+01 - - 1 2 1936 4.8150000000000000e+02 0 -1 1937 897. -2 -3 1938 - 6.0015000000000000e+03 - - -7.0950525999069214e-01 3.6562061309814453e-01 - 7.1085697412490845e-01 -6.4645722508430481e-02 - <_> - 5.5976200103759766e+01 - - 1 2 1939 1.7500000000000000e+01 0 -1 1940 - 2.6500000000000000e+01 -2 -3 1941 2.7195000000000000e+03 - - -6.9570225477218628e-01 3.7848454713821411e-01 - 3.8467934727668762e-01 -3.8020190596580505e-01 - <_> - 5.6158012390136719e+01 - - 1 2 1942 2.6002500000000000e+04 0 -1 1943 - 5.5000000000000000e+00 -2 -3 1944 933. - - 5.2110773324966431e-01 -7.8237217664718628e-01 - -8.0685955286026001e-01 1.8181376159191132e-01 - <_> - 5.6510974884033203e+01 - - 1 2 1945 6.5000000000000000e+00 0 -1 1946 - 7.7950000000000000e+02 -2 -3 1947 1.1350000000000000e+02 - - 8.0221951007843018e-01 -5.5787330865859985e-01 - -2.5150266289710999e-01 3.5296073555946350e-01 - <_> - 5.6669940948486328e+01 - - 1 2 1948 1.2500000000000000e+01 0 -1 1949 - 2.1500000000000000e+01 -2 -3 1950 3.7500000000000000e+01 - - -8.1347912549972534e-01 3.3844006061553955e-01 - -5.6976383924484253e-01 1.5896809101104736e-01 - <_> - 5.6639522552490234e+01 - - 1 2 1951 5.0000000000000000e-01 0 -1 1952 - 1.0350000000000000e+02 -2 -3 1953 979. - - 5.6548482179641724e-01 -7.8466528654098511e-01 - -4.1022753715515137e-01 1.7647762596607208e-01 - <_> - 5.6746051788330078e+01 - - 1 2 1954 4.7655500000000000e+04 0 -1 1955 1217. -2 -3 1956 - 2.6650000000000000e+02 - - -6.9296687841415405e-01 2.6075837016105652e-01 - -7.9774957895278931e-01 1.7970228567719460e-02 - <_> - 5.6479259490966797e+01 - - 1 2 1957 1.2650000000000000e+02 0 -1 1958 - 1.9500000000000000e+01 -2 -3 1959 491. - - -2.6678943634033203e-01 3.8788908720016479e-01 - 9.1776609420776367e-01 -4.6553900837898254e-01 - <_> - 5.6557636260986328e+01 - - 1 2 1960 4.7500000000000000e+01 0 -1 1961 - 9.6450000000000000e+02 -2 -3 1962 5.0000000000000000e-01 - - 3.0366006493568420e-01 -8.8815379142761230e-01 - 4.8105791211128235e-01 -8.4002502262592316e-02 - <_> - 5.6977615356445312e+01 - - 1 2 1963 1.9350000000000000e+02 0 -1 1964 - 1.0500000000000000e+01 -2 -3 1965 316. - - 1.2478869408369064e-01 -5.4758942127227783e-01 - 4.1997796297073364e-01 -2.8715902566909790e-01 - <_> - 5.6940200805664062e+01 - - 1 2 1966 1.3500000000000000e+01 0 -1 1967 - 9.5000000000000000e+00 -2 -3 1968 4.5000000000000000e+00 - - 5.6444692611694336e-01 -5.1318335533142090e-01 - 4.1364780068397522e-01 -2.3452880978584290e-01 - <_> - 5.7376541137695312e+01 - - 1 2 1969 6.5000000000000000e+00 0 -1 1970 - 5.2500000000000000e+01 -2 -3 1971 2.6500000000000000e+01 - - -3.1519573926925659e-01 4.3634009361267090e-01 - -5.3644794225692749e-01 3.0770981311798096e-01 - <_> - 5.7745677947998047e+01 - - 1 2 1972 9.5000000000000000e+00 0 -1 1973 - 1.7125000000000000e+03 -2 -3 1974 2095. - - -5.8112341910600662e-02 5.0887292623519897e-01 - 2.3396022617816925e-01 -5.9023892879486084e-01 - <_> - 5.7668346405029297e+01 - - 1 2 1975 1.3835000000000000e+03 0 -1 1976 - 2.3365000000000000e+03 -2 -3 1977 5.0000000000000000e-01 - - -2.2391898930072784e-01 4.7256642580032349e-01 - 4.1642077267169952e-03 -6.2670201063156128e-01 - <_> - 5.7691123962402344e+01 - - 1 2 1978 2.7250000000000000e+02 0 -1 1979 - 8.0950000000000000e+02 -2 -3 1980 1.4500000000000000e+01 - - -2.9949793219566345e-01 7.5373744964599609e-01 - 2.2777365520596504e-02 -5.4332214593887329e-01 - <_> - 5.7523948669433594e+01 - - 1 2 1981 2.5500000000000000e+01 0 -1 1982 - 3.5000000000000000e+00 -2 -3 1983 9.5000000000000000e+00 - - 2.7234396338462830e-01 -7.7871346473693848e-01 - 4.1143327951431274e-01 -1.6717562079429626e-01 - <_> - 5.7792133331298828e+01 - - 1 2 1984 3.0500000000000000e+01 0 -1 1985 - 6.5000000000000000e+00 -2 -3 1986 4.7850000000000000e+02 - - 4.2716450989246368e-02 -6.7291486263275146e-01 - 3.2022616267204285e-01 -6.1982798576354980e-01 - <_> - 5.8013004302978516e+01 - - 1 2 1987 3.4500000000000000e+01 0 -1 1988 - 9.5000000000000000e+00 -2 -3 1989 3.9350000000000000e+02 - - -5.1402336359024048e-01 2.2087192535400391e-01 - -7.2181683778762817e-01 1.9793330132961273e-01 - <_> - 5.8191169738769531e+01 - - 1 2 1990 9.7500000000000000e+01 0 -1 1991 - 6.2250000000000000e+02 -2 -3 1992 9.5500000000000000e+01 - - 1.7816618084907532e-01 -4.8832407593727112e-01 - -9.5159941911697388e-01 6.5016353130340576e-01 - <_> - 5.8067699432373047e+01 - - 1 2 1993 2.5000000000000000e+00 0 -1 1994 - 2.2500000000000000e+01 -2 -3 1995 1.4500000000000000e+01 - - 5.9863173961639404e-01 -1.2370918691158295e-01 - -5.3876280784606934e-01 2.5208535790443420e-01 - <_> - 5.8372417449951172e+01 - - 1 2 1996 1.8075000000000000e+03 0 -1 1997 - 4.5000000000000000e+00 -2 -3 1998 7.4500000000000000e+01 - - 3.9194607734680176e-01 -3.2276815176010132e-01 - 5.3963506221771240e-01 -6.4209002256393433e-01 - <_> - 5.8342327117919922e+01 - - 1 2 1999 7.5000000000000000e+00 0 -1 2000 - 1.3500000000000000e+01 -2 -3 2001 3.5000000000000000e+00 - - -9.3360573053359985e-01 1. 3.0816203355789185e-01 - -1.9820201396942139e-01 - <_> - 5.8525230407714844e+01 - - 1 2 2002 5.4500000000000000e+01 0 -1 2003 - 3.1500000000000000e+01 -2 -3 2004 5.5000000000000000e+00 - - -6.9942277669906616e-01 1. 2.0665432512760162e-01 - -4.8230728507041931e-01 - <_> - 5.8137825012207031e+01 - - 1 2 2005 5.0000000000000000e-01 0 -1 2006 - 6.5000000000000000e+00 -2 -3 2007 1.6255000000000000e+03 - - -9.1363656520843506e-01 3.4000685811042786e-01 - 3.6237233877182007e-01 -3.8740426301956177e-01 - <_> - 5.7477180480957031e+01 - - 1 2 2008 1.6500000000000000e+01 0 -1 2009 - 3.3050000000000000e+02 -2 -3 2010 1.8250000000000000e+02 - - 4.0280374884605408e-01 -6.6064602136611938e-01 - 2.3912283778190613e-01 -6.5312945842742920e-01 - <_> - 5.7596790313720703e+01 - - 1 2 2011 3.5000000000000000e+00 0 -1 2012 - 2.2850000000000000e+02 -2 -3 2013 6.7050000000000000e+02 - - -5.6311067193746567e-02 7.3480677604675293e-01 - -7.8913259506225586e-01 -5.2745390683412552e-02 - <_> - 5.7969238281250000e+01 - - 1 2 2014 1.2195000000000000e+03 0 -1 2015 - 1.5000000000000000e+00 -2 -3 2016 44231. - - 3.7240502238273621e-01 -3.7414985895156860e-01 - 5.3368985652923584e-01 -3.4466567635536194e-01 - <_> - 5.7981628417968750e+01 - - 1 2 2017 1.6650000000000000e+02 0 -1 2018 - 2.0500000000000000e+01 -2 -3 2019 1.3500000000000000e+01 - - -2.3047098517417908e-01 4.0283700823783875e-01 - -8.8833373785018921e-01 9.4913655519485474e-01 - <_> - 5.8304691314697266e+01 - - 1 2 2020 1.7500000000000000e+01 0 -1 2021 - 2.2500000000000000e+01 -2 -3 2022 1.3950000000000000e+02 - - -9.7246366739273071e-01 4.5725116133689880e-01 - -3.3056676387786865e-01 3.2306280732154846e-01 - <_> - 5.8687774658203125e+01 - - 1 2 2023 3.6050000000000000e+02 0 -1 2024 - 2.1500000000000000e+01 -2 -3 2025 5.7150000000000000e+02 - - -1.9407491385936737e-01 4.0379062294960022e-01 - -7.1832591295242310e-01 1.6718479990959167e-01 - <_> - 5.8403263092041016e+01 - - 1 2 2026 3.5000000000000000e+00 0 -1 2027 - 1.5000000000000000e+00 -2 -3 2028 1.1125000000000000e+03 - - -7.1120482683181763e-01 5.4733234643936157e-01 - -3.0521857738494873e-01 5.3309994935989380e-01 - <_> - 5.8206588745117188e+01 - - 1 2 2029 9.8550000000000000e+02 0 -1 2030 - 8.5000000000000000e+00 -2 -3 2031 6.5000000000000000e+00 - - -6.1662030220031738e-01 4.3150734901428223e-01 - 1.1408390849828720e-01 -5.7918250560760498e-01 - <_> - 5.8434097290039062e+01 - - 1 2 2032 1.2500000000000000e+01 0 -1 2033 - 9.7500000000000000e+01 -2 -3 2034 8574. - - 4.1095575690269470e-01 -6.6425901651382446e-01 - 2.2750854492187500e-01 -6.5870326757431030e-01 - <_> - 5.8159267425537109e+01 - - 1 2 2035 790. 0 -1 2036 26812. -2 -3 2037 - 5.2150000000000000e+02 - - -8.0263590812683105e-01 8.7009161710739136e-01 - -2.7483054995536804e-01 3.0290663242340088e-01 - <_> - 5.8559719085693359e+01 - - 1 2 2038 1.5550000000000000e+02 0 -1 2039 - 3.6500000000000000e+01 -2 -3 2040 1752. - - -1.1953184753656387e-01 4.0045145153999329e-01 - 8.7820923328399658e-01 -9.3850684165954590e-01 - <_> - 5.8625492095947266e+01 - - 1 2 2041 5.0000000000000000e-01 0 -1 2042 - 2.5000000000000000e+00 -2 -3 2043 6.5000000000000000e+00 - - -7.3991537094116211e-01 7.3110866546630859e-01 - 2.8890112042427063e-01 -2.9580232501029968e-01 - <_> - 5.8505027770996094e+01 - - 1 2 2044 6.7500000000000000e+01 0 -1 2045 - 5.6500000000000000e+01 -2 -3 2046 9.8500000000000000e+01 - - -4.7034713625907898e-01 6.4461517333984375e-01 - 3.4142866730690002e-01 -8.6112099885940552e-01 - <_> - 5.8600910186767578e+01 - - 1 2 2047 8.0500000000000000e+01 0 -1 2048 - 1.8650000000000000e+02 -2 -3 2049 590. - - -7.2916746139526367e-01 3.1004229187965393e-01 - -6.6359126567840576e-01 9.5881775021553040e-02 - <_> - 5.8711597442626953e+01 - - 1 2 2050 5.0000000000000000e-01 0 -1 2051 - 7.5450000000000000e+02 -2 -3 2052 3.2650000000000000e+02 - - -9.2816257476806641e-01 4.2444109916687012e-01 - -4.2585963010787964e-01 3.1073370575904846e-01 - <_> - 5.8032016754150391e+01 - - 1 2 2053 60937. 0 -1 2054 416. -2 -3 2055 - 4.5000000000000000e+00 - - 1.7063696682453156e-01 -6.7958027124404907e-01 - 8.7877064943313599e-01 -9.5674747228622437e-01 - <_> - 5.8740566253662109e+01 - - 1 2 2056 1.5000000000000000e+00 0 -1 2057 - 3.5000000000000000e+00 -2 -3 2058 4.6500000000000000e+01 - - -7.4752992391586304e-01 7.0855057239532471e-01 - -6.8028306961059570e-01 2.6557485107332468e-03 - <_> - 5.9213050842285156e+01 - - 1 2 2059 7.5000000000000000e+00 0 -1 2060 - 4.5000000000000000e+00 -2 -3 2061 2.9750000000000000e+02 - - -1.6750365495681763e-01 4.7248429059982300e-01 - 1.6587665677070618e-01 -5.7748597860336304e-01 - <_> - 5.9422805786132812e+01 - - 1 2 2062 9.5000000000000000e+00 0 -1 2063 - 2.4500000000000000e+01 -2 -3 2064 7.5000000000000000e+00 - - 2.3164252936840057e-01 -8.6614209413528442e-01 - -8.4939008951187134e-01 2.0975443720817566e-01 - <_> - 5.8884654998779297e+01 - - 1 2 2065 6.2500000000000000e+01 0 -1 2066 - 1.0500000000000000e+01 -2 -3 2067 252. - - 1.0844799689948559e-02 -5.3815227746963501e-01 - 7.5545585155487061e-01 -4.2718842625617981e-01 - <_> - 5.9134284973144531e+01 - - 1 2 2068 2.3365000000000000e+03 0 -1 2069 - 1.2850000000000000e+02 -2 -3 2070 3.4845000000000000e+03 - - 8.5452580451965332e-01 -5.0535249710083008e-01 - 7.7388888597488403e-01 -6.3630655407905579e-02 - <_> - 5.9335205078125000e+01 - - 1 2 2071 7.5000000000000000e+00 0 -1 2072 - 6.5000000000000000e+00 -2 -3 2073 2.1450000000000000e+02 - - -8.2057535648345947e-01 2.0091684162616730e-01 - -6.9147127866744995e-01 6.4241760969161987e-01 - <_> - 5.9819751739501953e+01 - - 1 2 2074 1.4500000000000000e+01 0 -1 2075 - 1.3500000000000000e+01 -2 -3 2076 4.9500000000000000e+01 - - -9.3421977758407593e-01 4.8454797267913818e-01 - -3.7337201833724976e-01 3.2126367092132568e-01 - <_> - 5.9756664276123047e+01 - - 1 2 2077 3.7550000000000000e+02 0 -1 2078 - 8.1500000000000000e+01 -2 -3 2079 14. - - -6.3086077570915222e-02 5.7233673334121704e-01 1. - -9.5777195692062378e-01 - <_> - 6.0291542053222656e+01 - - 1 2 2080 3.5000000000000000e+00 0 -1 2081 - 2.5000000000000000e+00 -2 -3 2082 1.7500000000000000e+01 - - -7.0069408416748047e-01 6.3710403442382812e-01 - -4.9769634008407593e-01 1.1464314162731171e-01 - <_> - 6.0335617065429688e+01 - - 1 2 2083 6.0500000000000000e+01 0 -1 2084 235. -2 -3 2085 - 6.5500000000000000e+01 - - 6.0332548618316650e-01 -4.5363491773605347e-01 - -7.2721785306930542e-01 2.7224572841078043e-03 - <_> - 5.9978572845458984e+01 - - 1 2 2086 2145. 0 -1 2087 5.0000000000000000e-01 -2 -3 2088 - 1.1500000000000000e+01 - - 6.9418591260910034e-01 -7.1563631296157837e-01 - -5.4690980911254883e-01 2.3341998457908630e-01 - <_> - 6.0145259857177734e+01 - - 1 2 2089 4.8350000000000000e+02 0 -1 2090 - 5.3500000000000000e+01 -2 -3 2091 5.0550000000000000e+02 - - 5.3724527359008789e-01 -1.2441903352737427e-01 - -6.5049791336059570e-01 2.5399866700172424e-01 - <_> - 6.0507656097412109e+01 - - 1 2 2092 2.7500000000000000e+01 0 -1 2093 - 5.5000000000000000e+00 -2 -3 2094 5.0500000000000000e+01 - - 1.4425510168075562e-01 -7.4231290817260742e-01 - -2.6776736974716187e-01 3.6239382624626160e-01 - <_> - 6.0473968505859375e+01 - - 1 2 2095 5.0000000000000000e-01 0 -1 2096 - 2.5500000000000000e+01 -2 -3 2097 1587. - - -7.2751653194427490e-01 4.5861607789993286e-01 - 5.5637544393539429e-01 -3.6810955405235291e-01 - <_> - 6.0842075347900391e+01 - - 1 2 2098 5.1150000000000000e+02 0 -1 2099 1169. -2 -3 2100 - 2.0150000000000000e+02 - - -3.0562120676040649e-01 8.1614106893539429e-01 - 7.2896146774291992e-01 -1.8503957986831665e-01 - <_> - 6.0462539672851562e+01 - - 1 2 2101 8.3500000000000000e+01 0 -1 2102 - 3.0500000000000000e+01 -2 -3 2103 2.9850000000000000e+02 - - -8.2488976418972015e-02 4.4352260231971741e-01 - 5.2298051118850708e-01 -8.3577710390090942e-01 - <_> - 6.1029483795166016e+01 - - 1 2 2104 5.0000000000000000e-01 0 -1 2105 - 1.6500000000000000e+01 -2 -3 2106 2.8650000000000000e+02 - - -6.2287323176860809e-02 5.6694161891937256e-01 - -5.0430041551589966e-01 2.6749575138092041e-01 - <_> - 6.0533782958984375e+01 - - 1 2 2107 1.5000000000000000e+00 0 -1 2108 86. -2 -3 2109 - 1.5000000000000000e+00 - - 4.6476197242736816e-01 -3.5366341471672058e-01 - 1.1941082775592804e-01 -4.9569913744926453e-01 - <_> - 6.1014225006103516e+01 - - 1 2 2110 8.5500000000000000e+01 0 -1 2111 - 7.1500000000000000e+01 -2 -3 2112 3.0050000000000000e+02 - - -3.2236501574516296e-01 5.3735041618347168e-01 - 4.8043999075889587e-01 -8.1549012660980225e-01 - <_> - 6.1214355468750000e+01 - - 1 2 2113 5.0000000000000000e-01 0 -1 2114 5423. -2 -3 2115 - 3.2500000000000000e+01 - - 6.3166511058807373e-01 -1.0317980498075485e-01 - -8.1713062524795532e-01 -4.8018395900726318e-02 - <_> - 6.1207153320312500e+01 - - 1 2 2116 6.9750000000000000e+02 0 -1 2117 - 2.3500000000000000e+01 -2 -3 2118 1299. - - -5.5850952863693237e-01 4.5436400175094604e-01 - -4.2946615815162659e-01 4.6700772643089294e-01 - <_> - 6.1372627258300781e+01 - - 1 2 2119 9.7500000000000000e+01 0 -1 2120 - 1.2500000000000000e+01 -2 -3 2121 8.8500000000000000e+01 - - -9.3579089641571045e-01 1.6547182202339172e-01 - -8.7968140840530396e-01 5.9617185592651367e-01 - <_> - 6.1535186767578125e+01 - - 1 2 2122 4.0550000000000000e+02 0 -1 2123 - 8.5000000000000000e+00 -2 -3 2124 5.5500000000000000e+01 - - -5.4796415567398071e-01 2.2591431438922882e-01 - -6.4731520414352417e-01 6.6429591178894043e-01 - <_> - 6.1438594818115234e+01 - - 1 2 2125 7.5000000000000000e+00 0 -1 2126 - 1.6500000000000000e+01 -2 -3 2127 2.0464500000000000e+04 - - -7.6974302530288696e-01 5.8108645677566528e-01 - 1.4914943277835846e-01 -4.0168645977973938e-01 - <_> - 6.1837162017822266e+01 - - 1 2 2128 1.9150000000000000e+02 0 -1 2129 - 2.5000000000000000e+00 -2 -3 2130 2.3500000000000000e+01 - - 3.0682370066642761e-01 -6.2734222412109375e-01 - -3.0841422080993652e-01 3.9856877923011780e-01 - <_> - 6.1491020202636719e+01 - - 1 2 2131 9.5000000000000000e+00 0 -1 2132 - 1.0286500000000000e+04 -2 -3 2133 1.5750000000000000e+02 - - 4.2527648806571960e-01 -3.4614086151123047e-01 - -6.1684650182723999e-01 1.9758818671107292e-02 - <_> - 6.1886714935302734e+01 - - 1 2 2134 1.7500000000000000e+01 0 -1 2135 - 9.2500000000000000e+01 -2 -3 2136 18. - - -1.2079064548015594e-01 3.9569309353828430e-01 - 3.3188980817794800e-01 -8.7485474348068237e-01 - <_> - 6.1790431976318359e+01 - - 1 2 2137 2.1500000000000000e+01 0 -1 2138 - 2.2500000000000000e+01 -2 -3 2139 4.5000000000000000e+00 - - -5.2500929683446884e-02 6.8664622306823730e-01 - 1.5717932581901550e-01 -6.7684161663055420e-01 - <_> - 6.2245330810546875e+01 - - 1 2 2140 1.2135000000000000e+03 0 -1 2141 - 4.5000000000000000e+00 -2 -3 2142 5.2865000000000000e+03 - - 3.3859279751777649e-01 -4.2644050717353821e-01 - 5.0935482978820801e-01 -4.1733506321907043e-01 - <_> - 6.2387325286865234e+01 - - 1 2 2143 4.5000000000000000e+00 0 -1 2144 - 1.0500000000000000e+01 -2 -3 2145 209. - - 1.3510234653949738e-01 -9.6185976266860962e-01 - 1.4199161529541016e-01 -8.5389542579650879e-01 - <_> - 6.2084945678710938e+01 - - 1 2 2146 11208. 0 -1 2147 5.0000000000000000e-01 -2 -3 2148 - 20248. - - 1.5907059609889984e-01 -3.8836613297462463e-01 - 8.0494099855422974e-01 -7.7658468484878540e-01 - <_> - 6.1984123229980469e+01 - - 1 2 2149 2.3500000000000000e+01 0 -1 2150 - 2.3650000000000000e+02 -2 -3 2151 5.0000000000000000e-01 - - 1. -1. 4.0856447815895081e-01 -1.0082300007343292e-01 - <_> - 6.2277572631835938e+01 - - 1 2 2152 1.2115000000000000e+03 0 -1 2153 - 1.5000000000000000e+00 -2 -3 2154 4.2995000000000000e+03 - - 4.2784088850021362e-01 -8.9822685718536377e-01 - 2.9345232248306274e-01 -2.5083908438682556e-01 - <_> - 6.2472473144531250e+01 - - 1 2 2155 9.4500000000000000e+01 0 -1 2156 - 1.0500000000000000e+01 -2 -3 2157 68. - - 6.5589077770709991e-02 -7.7099108695983887e-01 - -7.4427002668380737e-01 1.9490025937557220e-01 - <_> - 6.2016971588134766e+01 - - 1 2 2158 2.5000000000000000e+00 0 -1 2159 - 1.2500000000000000e+01 -2 -3 2160 5.5500000000000000e+01 - - 4.2139071226119995e-01 -5.5164831876754761e-01 - -4.5550110936164856e-01 3.6315539479255676e-01 - <_> - 6.2252468109130859e+01 - - 1 2 2161 1.5685000000000000e+03 0 -1 2162 - 4.5000000000000000e+00 -2 -3 2163 7.7500000000000000e+01 - - 4.6763184666633606e-01 -7.2583413124084473e-01 - -4.7358104586601257e-01 2.3549596965312958e-01 - <_> - 6.1926944732666016e+01 - - 1 2 2164 5.0000000000000000e-01 0 -1 2165 - 2.9500000000000000e+01 -2 -3 2166 1.5000000000000000e+00 - - -8.4635341167449951e-01 4.7176876664161682e-01 - 1.2360874563455582e-01 -4.4846296310424805e-01 - <_> - 6.2441539764404297e+01 - - 1 2 2167 1.3650000000000000e+02 0 -1 2168 - 7.5000000000000000e+00 -2 -3 2169 1.6500000000000000e+01 - - 3.0158129334449768e-01 -3.6455678939819336e-01 - -9.0578240156173706e-01 5.1459383964538574e-01 - <_> - 6.1964569091796875e+01 - - 1 2 2170 8.5000000000000000e+00 0 -1 2171 - 1.3226500000000000e+04 -2 -3 2172 6.4500000000000000e+01 - - -8.5410606861114502e-01 2.6482892036437988e-01 - -4.7696748375892639e-01 6.1308634281158447e-01 - <_> - 6.1803714752197266e+01 - - 1 2 2173 2.6500000000000000e+01 0 -1 2174 - 4.5000000000000000e+00 -2 -3 2175 5.0000000000000000e-01 - - 5.8156448602676392e-01 -8.6257112026214600e-01 - 4.0267577767372131e-01 -1.6085536777973175e-01 - <_> - 6.2505237579345703e+01 - - 1 2 2176 4.2500000000000000e+01 0 -1 2177 - 7.9662500000000000e+04 -2 -3 2178 2.2050000000000000e+02 - - 4.3292667716741562e-02 -8.7512964010238647e-01 - -2.3395214229822159e-02 7.0152431726455688e-01 - <_> - 6.2662498474121094e+01 - - 1 2 2179 2.2535000000000000e+03 0 -1 2180 5489. -2 -3 2181 - 6.5000000000000000e+00 - - -1.3394173979759216e-01 6.8779164552688599e-01 - 4.8814722895622253e-01 -3.9524573087692261e-01 - <_> - 6.2619869232177734e+01 - - 1 2 2182 3.0135000000000000e+03 0 -1 2183 4966. -2 -3 2184 - 5.5000000000000000e+00 - - -3.0220034718513489e-01 8.1261235475540161e-01 - 1.7436875402927399e-01 -3.7351670861244202e-01 - <_> - 6.2884567260742188e+01 - - 1 2 2185 2.5000000000000000e+00 0 -1 2186 286. -2 -3 2187 - 2.9500000000000000e+01 - - 8.4548860788345337e-01 -9.6311759948730469e-01 - -3.5037949681282043e-01 2.6469662785530090e-01 - <_> - 6.2971755981445312e+01 - - 1 2 2188 4.5000000000000000e+00 0 -1 2189 - 5.6350000000000000e+02 -2 -3 2190 1.7500000000000000e+01 - - 3.5842654109001160e-01 -7.6083594560623169e-01 - -6.3569843769073486e-01 1.1528482288122177e-01 - <_> - 6.2904327392578125e+01 - - 1 2 2191 19751. 0 -1 2192 5709. -2 -3 2193 - 5.0000000000000000e-01 - - 5.8615106344223022e-01 -6.7431032657623291e-02 - 8.1077980995178223e-01 -7.9040503501892090e-01 - <_> - 6.3428482055664062e+01 - - 1 2 2194 5.2150000000000000e+02 0 -1 2195 112. -2 -3 2196 - 4.8500000000000000e+01 - - -2.9560300707817078e-01 6.3393580913543701e-01 - -7.4229598045349121e-01 5.2415388822555542e-01 - <_> - 6.3408718109130859e+01 - - 1 2 2197 2.2850000000000000e+02 0 -1 2198 - 9.5000000000000000e+00 -2 -3 2199 8.5000000000000000e+00 - - -6.5528714656829834e-01 3.2386130094528198e-01 - -5.1321542263031006e-01 3.7662333250045776e-01 - <_> - 6.3479297637939453e+01 - - 1 2 2200 1.0500000000000000e+01 0 -1 2201 - 1.2875000000000000e+03 -2 -3 2202 1.1550000000000000e+02 - - -6.5136082470417023e-02 5.4068171977996826e-01 - -5.4428064823150635e-01 3.5270053148269653e-01 - <_> - 6.3459232330322266e+01 - - 1 2 2203 5.6350000000000000e+02 0 -1 2204 - 3.6500000000000000e+01 -2 -3 2205 2.7500000000000000e+01 - - -2.6665899157524109e-01 2.9732996225357056e-01 - 8.9094859361648560e-01 -7.8570848703384399e-01 - <_> - 6.3715244293212891e+01 - - 1 2 2206 1.3750000000000000e+02 0 -1 2207 - 5.5950000000000000e+02 -2 -3 2208 1.7350000000000000e+02 - - 8.2382661104202271e-01 -9.3905463814735413e-02 - -7.7598297595977783e-01 -6.1380777508020401e-02 - <_> - 6.4063674926757812e+01 - - 1 2 2209 1.5000000000000000e+00 0 -1 2210 - 1.1500000000000000e+01 -2 -3 2211 3.1850000000000000e+02 - - -8.9411342144012451e-01 3.4842905402183533e-01 - -4.4360893964767456e-01 4.8869660496711731e-01 - <_> - 6.4111953735351562e+01 - - 1 2 2212 2.5000000000000000e+00 0 -1 2213 - 4.1500000000000000e+01 -2 -3 2214 5.0000000000000000e-01 - - -2.3706158995628357e-01 4.4370284676551819e-01 - 5.4362642765045166e-01 -5.1952922344207764e-01 - <_> - 6.4159660339355469e+01 - - 1 2 2215 1.5000000000000000e+00 0 -1 2216 - 5.7500000000000000e+01 -2 -3 2217 1.0775000000000000e+03 - - -2.5581914931535721e-02 6.6174793243408203e-01 - 4.0115654468536377e-01 -3.5893636941909790e-01 - <_> - 6.4437599182128906e+01 - - 1 2 2218 921. 0 -1 2219 4.5000000000000000e+00 -2 -3 2220 - 2.9045000000000000e+03 - - 3.1526345014572144e-01 -7.0185899734497070e-01 - 2.7793204784393311e-01 -4.8113667964935303e-01 - <_> - 6.4332015991210938e+01 - - 1 2 2221 1.8985000000000000e+03 0 -1 2222 - 7.8250000000000000e+02 -2 -3 2223 2.1500000000000000e+01 - - -2.8789478540420532e-01 6.2446802854537964e-01 - -7.3467957973480225e-01 7.2612441144883633e-03 - <_> - 6.4401939392089844e+01 - - 1 2 2224 2.5000000000000000e+00 0 -1 2225 - 3.7500000000000000e+01 -2 -3 2226 5.4850000000000000e+02 - - -6.1204963922500610e-01 6.2827998399734497e-01 - -5.4985451698303223e-01 6.9924682378768921e-02 - <_> - 6.4601165771484375e+01 - - 1 2 2227 3.5000000000000000e+00 0 -1 2228 - 4.4500000000000000e+01 -2 -3 2229 6.5000000000000000e+00 - - -3.2580995559692383e-01 5.1435238122940063e-01 - 5.3874686360359192e-02 -5.6130063533782959e-01 - <_> - 6.4761596679687500e+01 - - 1 2 2230 7.5000000000000000e+00 0 -1 2231 - 3.5000000000000000e+00 -2 -3 2232 5.5500000000000000e+01 - - -7.5083559751510620e-01 3.6957365274429321e-01 - -4.0680039674043655e-02 -7.7190446853637695e-01 - <_> - 6.4306961059570312e+01 - - 1 2 2233 160. 0 -1 2234 127. -2 -3 2235 - 9.1500000000000000e+01 - - 2.1852338314056396e-01 -6.8148994445800781e-01 - -4.8492997884750366e-01 3.1643366813659668e-01 - <_> - 6.4767280578613281e+01 - - 1 2 2236 2.5000000000000000e+00 0 -1 2237 - 7.5250000000000000e+02 -2 -3 2238 4.5000000000000000e+00 - - 4.6031954884529114e-01 -6.2284696102142334e-01 - 4.7282892465591431e-01 -4.0902397036552429e-01 - <_> - 6.4466903686523438e+01 - - 1 2 2239 1.4250000000000000e+02 0 -1 2240 - 4.5000000000000000e+00 -2 -3 2241 1.5000000000000000e+00 - - 1.0185246169567108e-01 -5.8319956064224243e-01 - -6.2095612287521362e-01 4.2880809307098389e-01 - <_> - 6.4761924743652344e+01 - - 1 2 2242 1.1605000000000000e+03 0 -1 2243 2073. -2 -3 2244 - 4.6555000000000000e+03 - - -7.2359293699264526e-01 7.9880434274673462e-01 - 6.1722189188003540e-01 -1.1455553770065308e-01 - <_> - 6.5016494750976562e+01 - - 1 2 2245 1.0350000000000000e+02 0 -1 2246 - 4.4850000000000000e+02 -2 -3 2247 6.2550000000000000e+02 - - -6.7635171115398407e-02 4.6874949336051941e-01 - -8.0271768569946289e-01 3.7331908941268921e-01 - <_> - 6.5212265014648438e+01 - - 1 2 2248 6.2150000000000000e+02 0 -1 2249 326. -2 -3 2250 - 1.5000000000000000e+00 - - 1.9577379524707794e-01 -7.0703411102294922e-01 - 5.1214373111724854e-01 -7.2338587045669556e-01 - <_> - 6.5121826171875000e+01 - - 1 2 2251 9.7500000000000000e+01 0 -1 2252 - 2.3550000000000000e+02 -2 -3 2253 1.9500000000000000e+01 - - 4.6985685825347900e-01 -8.9037990570068359e-01 - 4.9876618385314941e-01 -9.0437032282352448e-02 - <_> - 6.5343742370605469e+01 - - 1 2 2254 1.9500000000000000e+01 0 -1 2255 1133. -2 -3 2256 - 1.0050000000000000e+02 - - 4.8251938819885254e-01 -6.2672054767608643e-01 - 2.2191496193408966e-01 -7.7584463357925415e-01 - <_> - 6.5446708679199219e+01 - - 1 2 2257 1.2555000000000000e+03 0 -1 2258 1315. -2 -3 2259 - 1.4525000000000000e+03 - - 5.0016152858734131e-01 -3.4823906421661377e-01 - 8.1143665313720703e-01 -3.6510743200778961e-02 - <_> - 6.5472305297851562e+01 - - 1 2 2260 5.8500000000000000e+01 0 -1 2261 - 9.2250000000000000e+02 -2 -3 2262 9.2500000000000000e+01 - - 2.5597516447305679e-02 -7.3596054315567017e-01 - 7.7482932806015015e-01 -2.4384480714797974e-01 - <_> - 6.5680641174316406e+01 - - 1 2 2263 2.8500000000000000e+01 0 -1 2264 - 1.9500000000000000e+01 -2 -3 2265 5.0000000000000000e-01 - - -5.1095438003540039e-01 2.7406066656112671e-01 - 4.7238901257514954e-02 -7.9554700851440430e-01 - <_> - 6.5828727722167969e+01 - - 1 2 2266 6.5000000000000000e+00 0 -1 2267 46. -2 -3 2268 - 2.3350000000000000e+02 - - 4.0098896622657776e-01 -3.0355367064476013e-01 - -5.7611280679702759e-01 2.4870538711547852e-01 - <_> - 6.6055801391601562e+01 - - 1 2 2269 1.1235000000000000e+03 0 -1 2270 1791. -2 -3 2271 - 2.2500000000000000e+01 - - 4.2222037911415100e-01 -5.7381504774093628e-01 - -5.7501715421676636e-01 2.7313375473022461e-01 - <_> - 6.5979278564453125e+01 - - 1 2 2272 1.6500000000000000e+01 0 -1 2273 - 1.1500000000000000e+01 -2 -3 2274 3.6500000000000000e+01 - - -1. 7.4951916933059692e-01 -2.2320111095905304e-01 - 6.2808310985565186e-01 - <_> - 6.5982803344726562e+01 - - 1 2 2275 8.8500000000000000e+01 0 -1 2276 - 5.0000000000000000e-01 -2 -3 2277 303. - - -4.2098733782768250e-01 4.7041663527488708e-01 - -8.3091259002685547e-01 3.5231374204158783e-03 - <_> - 6.5862815856933594e+01 - - 1 2 2278 5.0000000000000000e-01 0 -1 2279 - 7.5000000000000000e+00 -2 -3 2280 1.8500000000000000e+01 - - -3.1455779075622559e-01 6.9095128774642944e-01 - -3.3799609541893005e-01 3.8651108741760254e-01 - <_> - 6.5698982238769531e+01 - - 1 2 2281 2.5000000000000000e+00 0 -1 2282 - 6.5000000000000000e+00 -2 -3 2283 1.6500000000000000e+01 - - 1.1540318280458450e-01 -8.0706399679183960e-01 - 4.5586335659027100e-01 -1.6382929682731628e-01 - <_> - 6.5865753173828125e+01 - - 1 2 2284 4.1500000000000000e+01 0 -1 2285 322. -2 -3 2286 - 5.0000000000000000e-01 - - -7.6401643455028534e-02 7.0236140489578247e-01 - 8.3611255884170532e-01 -3.3973169326782227e-01 - <_> - 6.6324913024902344e+01 - - 1 2 2287 1180. 0 -1 2288 5.0000000000000000e-01 -2 -3 2289 - 4.9850000000000000e+02 - - 5.4826909303665161e-01 -6.1790186166763306e-01 - 4.9796470999717712e-01 -7.6435178518295288e-02 - <_> - 6.6116767883300781e+01 - - 1 2 2290 1.0086500000000000e+04 0 -1 2291 - 5.0000000000000000e-01 -2 -3 2292 1.4915000000000000e+03 - - 2.2847035527229309e-01 -5.0997734069824219e-01 - 5.6548178195953369e-01 -2.0814302563667297e-01 - <_> - 6.6620307922363281e+01 - - 1 2 2293 1.2195000000000000e+03 0 -1 2294 - 1.9055000000000000e+03 -2 -3 2295 2.0550000000000000e+02 - - -3.3149933815002441e-01 6.4176028966903687e-01 - 6.0821473598480225e-01 -3.0888804793357849e-01 - <_> - 6.6746444702148438e+01 - - 1 2 2296 2.5000000000000000e+00 0 -1 2297 - 1.0150000000000000e+02 -2 -3 2298 7.2585000000000000e+03 - - 5.9253281354904175e-01 -3.7904369831085205e-01 - 2.6760953664779663e-01 -4.0275105834007263e-01 - <_> - 6.6943595886230469e+01 - - 1 2 2299 1.1500000000000000e+01 0 -1 2300 - 2.4500000000000000e+01 -2 -3 2301 4.5000000000000000e+00 - - -9.8942744731903076e-01 1. -5.9422683715820312e-01 - 1.9715292751789093e-01 - <_> - 6.6331527709960938e+01 - - 1 2 2302 2.4500000000000000e+01 0 -1 2303 - 8.7500000000000000e+01 -2 -3 2304 3.4500000000000000e+01 - - -2.3940645158290863e-01 3.9157524704933167e-01 - 1.0247871279716492e-01 -7.5354349613189697e-01 - <_> - 6.6475265502929688e+01 - - 1 2 2305 6.5000000000000000e+00 0 -1 2306 - 2.3500000000000000e+01 -2 -3 2307 3.3500000000000000e+01 - - -7.6529741287231445e-01 4.5638066530227661e-01 - -5.1855069398880005e-01 1.4373423159122467e-01 - <_> - 6.6999214172363281e+01 - - 1 2 2308 9.4500000000000000e+01 0 -1 2309 - 2.0500000000000000e+01 -2 -3 2310 195. - - -7.4185177683830261e-02 5.2394580841064453e-01 - 3.7441125512123108e-01 -9.3662869930267334e-01 - <_> - 6.7006050109863281e+01 - - 1 2 2311 3026. 0 -1 2312 2.2500000000000000e+01 -2 -3 2313 - 2.8500000000000000e+01 - - -8.7473273277282715e-01 5.1518291234970093e-01 - -6.7311668395996094e-01 6.8403608165681362e-03 - <_> - 6.7129646301269531e+01 - - 1 2 2314 1.7500000000000000e+01 0 -1 2315 - 4.4500000000000000e+01 -2 -3 2316 2961. - - -2.2424821555614471e-01 3.6378455162048340e-01 - -7.0937103033065796e-01 1.6935887932777405e-01 - <_> - 6.7392829895019531e+01 - - 1 2 2317 5.5000000000000000e+00 0 -1 2318 - 1.0500000000000000e+01 -2 -3 2319 46. - - 6.3752532005310059e-01 -1.6769923269748688e-01 - -3.9633530378341675e-01 2.1741947531700134e-01 - <_> - 6.7652908325195312e+01 - - 1 2 2320 4.0500000000000000e+01 0 -1 2321 - 3.7750000000000000e+02 -2 -3 2322 288. - - 7.8108507394790649e-01 -8.9046698808670044e-01 - 2.6008096337318420e-01 -3.1209379434585571e-01 - <_> - 6.7522987365722656e+01 - - 1 2 2323 2.8450000000000000e+02 0 -1 2324 - 2.1500000000000000e+01 -2 -3 2325 3.1615000000000000e+03 - - -2.6827138662338257e-01 4.4363465905189514e-01 - -5.0426739454269409e-01 3.2839775085449219e-01 - <_> - 6.7682723999023438e+01 - - 1 2 2326 1.4550000000000000e+02 0 -1 2327 - 5.0000000000000000e-01 -2 -3 2328 187. - - 3.3854234218597412e-01 -1.9424141943454742e-01 - -7.8695666790008545e-01 1.0578002780675888e-01 - <_> - 6.7990608215332031e+01 - - 1 2 2329 1.4500000000000000e+01 0 -1 2330 55. -2 -3 2331 - 4.1500000000000000e+01 - - 9.3669831752777100e-01 -7.9035413265228271e-01 - 4.7996759414672852e-01 -1.4678025245666504e-01 - <_> - 6.7773666381835938e+01 - - 1 2 2332 4.4450000000000000e+02 0 -1 2333 - 6.5000000000000000e+00 -2 -3 2334 87. - - 3.0000856518745422e-01 -5.1463776826858521e-01 - -4.2596080899238586e-01 5.2854359149932861e-01 - <_> - 6.8242584228515625e+01 - - 1 2 2335 2.3325000000000000e+03 0 -1 2336 10142. -2 -3 2337 - 1.9550000000000000e+02 - - -6.1795878410339355e-01 7.2833043336868286e-01 - 5.5236649513244629e-01 -7.2167828679084778e-02 - <_> - 6.7640380859375000e+01 - - 1 2 2338 1.9500000000000000e+01 0 -1 2339 - 5.5000000000000000e+00 -2 -3 2340 3.7500000000000000e+01 - - -9.1623830795288086e-01 2.8547397255897522e-01 - 2.7238869667053223e-01 -6.8565303087234497e-01 - <_> - 6.8166297912597656e+01 - - 1 2 2341 887. 0 -1 2342 1.8950000000000000e+02 -2 -3 2343 - 1.6500000000000000e+01 - - 5.8323717117309570e-01 -8.4304898977279663e-01 - 5.2591782808303833e-01 -1.1249145865440369e-01 - <_> - 6.7966316223144531e+01 - - 1 2 2344 1.3500000000000000e+01 0 -1 2345 - 5.0500000000000000e+01 -2 -3 2346 5.5000000000000000e+00 - - -5.7582974433898926e-01 8.8582295179367065e-01 - 4.5189410448074341e-01 -1.9998365640640259e-01 - <_> - 6.8363616943359375e+01 - - 1 2 2347 9519. 0 -1 2348 9.9355000000000000e+03 -2 -3 2349 - 1.5000000000000000e+00 - - -5.6369476020336151e-02 5.6953996419906616e-01 - 6.4817821979522705e-01 -6.5638613700866699e-01 - <_> - 6.8680084228515625e+01 - - 1 2 2350 1.4500000000000000e+01 0 -1 2351 - 2.2500000000000000e+01 -2 -3 2352 4.9500000000000000e+01 - - -1.3236002624034882e-01 6.2589818239212036e-01 - -4.6971350908279419e-01 3.0481177568435669e-01 - <_> - 6.8636512756347656e+01 - - 1 2 2353 2.3491500000000000e+04 0 -1 2354 - 1.5000000000000000e+00 -2 -3 2355 31. - - 2.9175955057144165e-01 -2.0415711402893066e-01 -1. 1. - <_> - 6.8339431762695312e+01 - - 1 2 2356 2.1500000000000000e+01 0 -1 2357 - 5.0000000000000000e-01 -2 -3 2358 2.5000000000000000e+00 - - 4.2874211072921753e-01 -4.4592785835266113e-01 - -9.4336575269699097e-01 3.3847200870513916e-01 - <_> - 6.8127563476562500e+01 - - 1 2 2359 2.7500000000000000e+01 0 -1 2360 - 4.5000000000000000e+00 -2 -3 2361 1.2500000000000000e+01 - - 1.4308325946331024e-01 -5.4449397325515747e-01 - 5.8717787265777588e-01 -2.1186867356300354e-01 - <_> - 6.8410385131835938e+01 - - 1 2 2362 9.5000000000000000e+00 0 -1 2363 - 5.5000000000000000e+00 -2 -3 2364 1.2850000000000000e+02 - - -1.1505768448114395e-01 -9.6275746822357178e-01 - 2.8282612562179565e-01 -3.5639968514442444e-01 - <_> - 6.8815826416015625e+01 - - 1 2 2365 1.9125000000000000e+03 0 -1 2366 - 6.5000000000000000e+00 -2 -3 2367 1.2925000000000000e+03 - - 7.6003736257553101e-01 -1.8823170661926270e-01 - -3.1990632414817810e-01 3.2092514634132385e-01 - <_> - 6.8693199157714844e+01 - - 1 2 2368 1.5500000000000000e+01 0 -1 2369 - 4.0445000000000000e+03 -2 -3 2370 1.3500000000000000e+01 - - 2.2088183462619781e-01 -8.6471045017242432e-01 - 4.9937435984611511e-01 -1.2262738496065140e-01 - <_> - 6.9212486267089844e+01 - - 1 2 2371 1.1500000000000000e+01 0 -1 2372 - 1.2500000000000000e+01 -2 -3 2373 1.3250000000000000e+02 - - -5.8216619491577148e-01 7.6504099369049072e-01 - -4.9605194479227066e-02 5.4096341133117676e-01 - <_> - 6.9281822204589844e+01 - - 1 2 2374 3.4500000000000000e+01 0 -1 2375 - 6.5000000000000000e+00 -2 -3 2376 1.5000000000000000e+00 - - -7.0201843976974487e-01 3.5367730259895325e-01 1. - -3.9128544926643372e-01 - <_> - 6.9379959106445312e+01 - - 1 2 2377 8.7500000000000000e+01 0 -1 2378 - 7.5000000000000000e+00 -2 -3 2379 273. - - -5.3956866264343262e-01 3.2018893957138062e-01 - -5.9921985864639282e-01 2.5184553861618042e-01 - <_> - 6.9302131652832031e+01 - - 1 2 2380 5.0000000000000000e-01 0 -1 2381 - 4.4500000000000000e+01 -2 -3 2382 1.9204500000000000e+04 - - -5.0899110734462738e-02 6.8976759910583496e-01 - -7.7828548848628998e-02 -9.1394501924514771e-01 - <_> - 6.9691947937011719e+01 - - 1 2 2383 6.7500000000000000e+01 0 -1 2384 - 3.2850000000000000e+02 -2 -3 2385 1224. - - 1.1171031743288040e-02 7.3188757896423340e-01 - -8.6419099569320679e-01 2.1196028217673302e-02 - <_> - 6.9572067260742188e+01 - - 1 2 2386 1.1235000000000000e+03 0 -1 2387 - 8.4050000000000000e+02 -2 -3 2388 1.5500000000000000e+01 - - -1.5439936518669128e-01 6.1207121610641479e-01 - 1.9708819687366486e-01 -4.6194908022880554e-01 - <_> - 6.9861968994140625e+01 - - 1 2 2389 9.1500000000000000e+01 0 -1 2390 - 1.0500000000000000e+01 -2 -3 2391 4.1495000000000000e+03 - - 1.0701948404312134e-01 -5.6979161500930786e-01 - -9.6821188926696777e-02 7.0975506305694580e-01 - <_> - 7.0039260864257812e+01 - - 1 2 2392 1.1500000000000000e+01 0 -1 2393 2897. -2 -3 2394 - 2.4350000000000000e+02 - - -9.1259753704071045e-01 1. 1.7728993296623230e-01 - -7.3356288671493530e-01 - <_> - 6.9705703735351562e+01 - - 1 2 2395 5.0000000000000000e-01 0 -1 2396 - 2.0500000000000000e+01 -2 -3 2397 4.6500000000000000e+01 - - -5.2813202142715454e-01 4.4198977947235107e-01 - -4.8570594191551208e-01 1.9584445655345917e-01 - <_> - 6.9970062255859375e+01 - - 1 2 2398 5.0000000000000000e-01 0 -1 2399 - 3.1500000000000000e+01 -2 -3 2400 3831. - - -6.4685755968093872e-01 7.3702591657638550e-01 - -2.6504144072532654e-01 5.5941796302795410e-01 - <_> - 6.9949569702148438e+01 - - 1 2 2401 5.0000000000000000e-01 0 -1 2402 5. -2 -3 2403 - 4.5000000000000000e+00 - - -8.8435417413711548e-01 5.8749139308929443e-01 - 2.7166697382926941e-01 -3.1555649638175964e-01 - <_> - 7.0117141723632812e+01 - - 1 2 2404 2596. 0 -1 2405 9.1496500000000000e+04 -2 -3 2406 - 1.5000000000000000e+00 - - -7.8573900461196899e-01 1.6757574677467346e-01 - 8.5581427812576294e-01 -9.4101238250732422e-01 - <_> - 7.0224205017089844e+01 - - 1 2 2407 5749. 0 -1 2408 79. -2 -3 2409 208. - - 1. -1. 1.0706392675638199e-01 -7.7825403213500977e-01 - <_> - 7.0221618652343750e+01 - - 1 2 2410 5.1855000000000000e+03 0 -1 2411 - 4.6500000000000000e+01 -2 -3 2412 8.5000000000000000e+00 - - -3.6203452944755554e-01 3.4422519803047180e-01 - -2.5855610147118568e-03 -7.1835225820541382e-01 - <_> - 7.0728790283203125e+01 - - 1 2 2413 1.3500000000000000e+01 0 -1 2414 - 1.0950000000000000e+02 -2 -3 2415 5.3500000000000000e+01 - - 1.9084104895591736e-01 -8.0712783336639404e-01 - 5.5798757076263428e-01 -1.0734169185161591e-01 - <_> - 7.0351577758789062e+01 - - 1 2 2416 1.3405000000000000e+03 0 -1 2417 - 3.5000000000000000e+00 -2 -3 2418 342. - - 4.1194143891334534e-01 -3.7721332907676697e-01 - -5.5014234781265259e-01 5.2194917201995850e-01 - <_> - 7.0136901855468750e+01 - - 1 2 2419 3.7345000000000000e+03 0 -1 2420 - 3.2500000000000000e+01 -2 -3 2421 9.8500000000000000e+01 - - 3.2743006944656372e-01 -2.1467541158199310e-01 - -8.1029343605041504e-01 7.0203500986099243e-01 - <_> - 6.9686508178710938e+01 - - 1 2 2422 1.2185000000000000e+03 0 -1 2423 - 1.5000000000000000e+00 -2 -3 2424 4.8755000000000000e+03 - - 2.0333147048950195e-01 -4.5039632916450500e-01 - 4.4757398962974548e-01 -5.9627413749694824e-01 - <_> - 7.0005889892578125e+01 - - 1 2 2425 6.4500000000000000e+01 0 -1 2426 - 3.7150000000000000e+02 -2 -3 2427 6.7750000000000000e+02 - - 2.6681974530220032e-01 -5.9953171014785767e-01 - 3.1938493251800537e-01 -6.9817471504211426e-01 - <_> - 7.0428718566894531e+01 - - 1 2 2428 2.6500000000000000e+01 0 -1 2429 - 1.7650000000000000e+02 -2 -3 2430 1.0500000000000000e+01 - - -7.5495415367186069e-03 -6.1552453041076660e-01 - -5.8272439241409302e-01 7.1704763174057007e-01 - <_> - 7.0936927795410156e+01 - - 1 2 2431 1.0950000000000000e+02 0 -1 2432 - 1.2500000000000000e+01 -2 -3 2433 3.4500000000000000e+01 - - 6.7761175334453583e-02 -6.1159509420394897e-01 - 5.0820809602737427e-01 -1.4290602505207062e-01 - <_> - 7.1328254699707031e+01 - - 1 2 2434 37. 0 -1 2435 108. -2 -3 2436 - 7.5000000000000000e+00 - - 5.2559959888458252e-01 -9.0183192491531372e-01 - 3.9132472872734070e-01 -1.6153934597969055e-01 - <_> - 7.1377151489257812e+01 - - 1 2 2437 1.5000000000000000e+00 0 -1 2438 - 4.1500000000000000e+01 -2 -3 2439 136. - - -1.6022360324859619e-01 4.5697069168090820e-01 - -5.8138531446456909e-01 5.7625991106033325e-01 - <_> - 7.1590606689453125e+01 - - 1 2 2440 2.2950000000000000e+02 0 -1 2441 986. -2 -3 2442 - 2.5000000000000000e+00 - - -5.5947124958038330e-01 2.1345110237598419e-01 - 5.1724910736083984e-01 -7.9673564434051514e-01 - <_> - 7.1604888916015625e+01 - - 1 2 2443 9.5000000000000000e+00 0 -1 2444 - 2.3500000000000000e+01 -2 -3 2445 1.0550000000000000e+02 - - -4.6063753962516785e-01 3.1602507829666138e-01 - -5.2265387773513794e-01 6.4050400257110596e-01 - <_> - 7.1843421936035156e+01 - - 1 2 2446 2.3365000000000000e+03 0 -1 2447 - 1.3333500000000000e+04 -2 -3 2448 7.8250000000000000e+02 - - -5.7870197296142578e-01 9.2290049791336060e-01 - 6.9137138128280640e-01 -1.5123842656612396e-01 - <_> - 7.1939323425292969e+01 - - 1 2 2449 3.5000000000000000e+00 0 -1 2450 - 1.8500000000000000e+01 -2 -3 2451 6.1500000000000000e+01 - - -5.3932064771652222e-01 4.5498287677764893e-01 - -6.5867853164672852e-01 9.6776336431503296e-02 - <_> - 7.1796112060546875e+01 - - 1 2 2452 1.0050000000000000e+02 0 -1 2453 - 6.5000000000000000e+00 -2 -3 2454 9.9500000000000000e+01 - - 2.1488319337368011e-01 -3.8114818930625916e-01 - -9.3055361509323120e-01 9.2053020000457764e-01 - <_> - 7.1826210021972656e+01 - - 1 2 2455 5.3875000000000000e+03 0 -1 2456 - 4.0150000000000000e+02 -2 -3 2457 203. - - 3.6667090654373169e-01 -3.2799699902534485e-01 - -2.9070058465003967e-01 6.2547647953033447e-01 - <_> - 7.1566932678222656e+01 - - 1 2 2458 1164. 0 -1 2459 12122. -2 -3 2460 - 1.2565000000000000e+03 - - -8.4399074316024780e-01 8.6422222852706909e-01 - -2.5927615165710449e-01 3.1698527932167053e-01 - <_> - 7.2048255920410156e+01 - - 1 2 2461 7.0500000000000000e+01 0 -1 2462 - 5.0000000000000000e-01 -2 -3 2463 113. - - 4.2299839854240417e-01 -3.7696704268455505e-01 - 4.8132598400115967e-01 -8.4420484304428101e-01 - <_> - 7.2493713378906250e+01 - - 1 2 2464 1.5000000000000000e+00 0 -1 2465 24. -2 -3 2466 - 1.1650000000000000e+02 - - -7.3568606376647949e-01 4.4545513391494751e-01 - 4.5487869530916214e-02 -6.0882014036178589e-01 - <_> - 7.2295455932617188e+01 - - 1 2 2467 2.6500000000000000e+01 0 -1 2468 - 2.5000000000000000e+00 -2 -3 2469 1.9500000000000000e+01 - - 1.9328838586807251e-01 -9.2098551988601685e-01 - 2.8382617235183716e-01 -3.1953519582748413e-01 - <_> - 7.2064254760742188e+01 - - 1 2 2470 5.6500000000000000e+01 0 -1 2471 - 3.5000000000000000e+00 -2 -3 2472 2.2450000000000000e+02 - - 2.8244340419769287e-01 -2.9833537340164185e-01 -1. - 8.5370278358459473e-01 - <_> - 7.2284309387207031e+01 - - 1 2 2473 4.9500000000000000e+01 0 -1 2474 4038. -2 -3 2475 - 1.0500000000000000e+01 - - 3.4302046895027161e-01 -8.1761771440505981e-01 - -7.4983465671539307e-01 2.2005748748779297e-01 - <_> - 7.2424072265625000e+01 - - 1 2 2476 5.0000000000000000e-01 0 -1 2477 - 4.9525000000000000e+03 -2 -3 2478 1.2500000000000000e+01 - - 3.8115087151527405e-01 -6.6690814495086670e-01 - 1.3976120948791504e-01 -5.6789624691009521e-01 - <_> - 7.2313995361328125e+01 - - 1 2 2479 3.2500000000000000e+01 0 -1 2480 - 1.1926500000000000e+04 -2 -3 2481 6.0500000000000000e+01 - - -6.5613843500614166e-02 -7.5880628824234009e-01 - 2.2690546512603760e-01 -6.3682055473327637e-01 - <_> - 7.2143783569335938e+01 - - 1 2 2482 5.0000000000000000e-01 0 -1 2483 - 5.7535000000000000e+03 -2 -3 2484 5.5000000000000000e+00 - - -9.2257243394851685e-01 8.5957908630371094e-01 - 3.2697901129722595e-01 -1.7020969092845917e-01 - <_> - 7.2681999206542969e+01 - - 1 2 2485 7.1500000000000000e+01 0 -1 2486 188. -2 -3 2487 - 177. - - -2.7773711085319519e-01 6.7274010181427002e-01 - -3.3517399430274963e-01 7.5859177112579346e-01 - <_> - 7.2897277832031250e+01 - - 1 2 2488 6.7500000000000000e+01 0 -1 2489 - 2.1500000000000000e+01 -2 -3 2490 7.0500000000000000e+01 - - -7.9514396190643311e-01 2.1528589725494385e-01 1. - -7.2838509082794189e-01 - <_> - 7.2998519897460938e+01 - - 1 2 2491 6.5000000000000000e+00 0 -1 2492 161. -2 -3 2493 - 9578. - - 6.2451672554016113e-01 -1.9713717699050903e-01 - 1.0124062746763229e-01 -5.1373565196990967e-01 - <_> - 7.3003601074218750e+01 - - 1 2 2494 2.3415000000000000e+03 0 -1 2495 - 7.6500000000000000e+01 -2 -3 2496 1.4555000000000000e+03 - - -6.9544225931167603e-01 3.1051948666572571e-01 - 7.0642524957656860e-01 1.7271263524889946e-02 - <_> - 7.3047424316406250e+01 - - 1 2 2497 1.5500000000000000e+01 0 -1 2498 - 1.1500000000000000e+01 -2 -3 2499 5.7500000000000000e+01 - - 3.4771478176116943e-01 -8.5552608966827393e-01 - 3.6829981207847595e-01 -1.8874453008174896e-01 - <_> - 7.3427375793457031e+01 - - 1 2 2500 6.2500000000000000e+01 0 -1 2501 34698. -2 -3 2502 - 8.5000000000000000e+00 - - 1.6296713054180145e-01 -6.3167887926101685e-01 - 3.7994962930679321e-01 -4.6771416068077087e-01 - <_> - 7.3244293212890625e+01 - - 1 2 2503 2.3500000000000000e+01 0 -1 2504 - 3.8500000000000000e+01 -2 -3 2505 427. - - -2.9058054089546204e-01 5.2562189102172852e-01 - 6.4414465427398682e-01 -8.3316773176193237e-01 - <_> - 7.3628913879394531e+01 - - 1 2 2506 4.5000000000000000e+00 0 -1 2507 - 8.5000000000000000e+00 -2 -3 2508 1.6925000000000000e+03 - - -2.7814975380897522e-01 4.8170346021652222e-01 - -6.5349429845809937e-01 5.4887872189283371e-02 - <_> - 7.3769676208496094e+01 - - 1 2 2509 15430. 0 -1 2510 1.5950000000000000e+02 -2 -3 2511 - 1.2615000000000000e+03 - - 4.3867623805999756e-01 -7.6247996091842651e-01 - -4.5795723795890808e-01 2.0065939426422119e-01 - <_> - 7.3981689453125000e+01 - - 1 2 2512 7.3500000000000000e+01 0 -1 2513 - 2.6500000000000000e+01 -2 -3 2514 4.1500000000000000e+01 - - -6.2215524911880493e-01 2.1201618015766144e-01 - -7.7795881032943726e-01 7.5186353921890259e-01 - <_> - 7.3843399047851562e+01 - - 1 2 2515 3.5000000000000000e+00 0 -1 2516 9. -2 -3 2517 - 1.7500000000000000e+01 - - -1. 6.5247339010238647e-01 -5.3328835964202881e-01 - 6.5298572182655334e-02 - <_> - 7.3923049926757812e+01 - - 1 2 2518 5.2950000000000000e+02 0 -1 2519 - 1.8500000000000000e+01 -2 -3 2520 6.4500000000000000e+01 - - 2.7425521612167358e-01 -7.6726049184799194e-01 - 2.3897975683212280e-01 -5.1008826494216919e-01 - <_> - 7.3826148986816406e+01 - - 1 2 2521 7.0500000000000000e+01 0 -1 2522 - 2.8500000000000000e+01 -2 -3 2523 3.5000000000000000e+00 - - 1.1504331231117249e-01 -6.4958560466766357e-01 - 6.4581304788589478e-01 -9.6902929246425629e-02 - <_> - 7.4119972229003906e+01 - - 1 2 2524 163. 0 -1 2525 2.0450000000000000e+02 -2 -3 2526 - 1486. - - 7.2227291762828827e-02 -4.8131951689720154e-01 - 6.7641806602478027e-01 -1. - <_> - 7.4284828186035156e+01 - - 1 2 2527 9.5000000000000000e+00 0 -1 2528 - 5.4500000000000000e+01 -2 -3 2529 3.5000000000000000e+00 - - 2.1673867106437683e-01 -9.8935294151306152e-01 - -8.0995440483093262e-01 1.6485558450222015e-01 - <_> - 7.3767173767089844e+01 - - 1 2 2530 3.3500000000000000e+01 0 -1 2531 - 2.0500000000000000e+01 -2 -3 2532 326. - - 8.5764698684215546e-02 -5.1765644550323486e-01 - -3.3359569311141968e-01 5.3560173511505127e-01 - <_> - 7.4017349243164062e+01 - - 1 2 2533 1144. 0 -1 2534 1038. -2 -3 2535 227. - - -8.5851883888244629e-01 8.0733579397201538e-01 - 2.5017657876014709e-01 -4.6748492121696472e-01 - <_> - 7.4431625366210938e+01 - - 1 2 2536 8.6500000000000000e+01 0 -1 2537 7. -2 -3 2538 - 4.7500000000000000e+01 - - 5.0281429290771484e-01 -6.8806976079940796e-01 - 4.1427880525588989e-01 -1.3120372593402863e-01 - <_> - 7.4155914306640625e+01 - - 1 2 2539 2.8500000000000000e+01 0 -1 2540 - 1.2500000000000000e+01 -2 -3 2541 352. - - 4.0651530027389526e-01 -2.7571403980255127e-01 - 6.4302980899810791e-01 -6.1632806062698364e-01 - <_> - 7.4377723693847656e+01 - - 1 2 2542 4.5500000000000000e+01 0 -1 2543 - 4.5000000000000000e+00 -2 -3 2544 1.5000000000000000e+00 - - 2.1374966204166412e-01 -8.0584329366683960e-01 - -6.8813514709472656e-01 2.2180862724781036e-01 - <_> - 7.4892883300781250e+01 - - 1 2 2545 7.2450000000000000e+02 0 -1 2546 - 8.2650000000000000e+02 -2 -3 2547 2.5000000000000000e+00 - - -1.0470861941576004e-01 5.1516324281692505e-01 - 1.2213422358036041e-01 -7.9457265138626099e-01 - <_> - 7.4932922363281250e+01 - - 1 2 2548 1.4925000000000000e+03 0 -1 2549 - 2.5625000000000000e+03 -2 -3 2550 4.0125000000000000e+03 - - -1.9472637213766575e-03 8.4926861524581909e-01 - 4.0032647550106049e-02 -7.9371875524520874e-01 - <_> - 7.5366584777832031e+01 - - 1 2 2551 5.0000000000000000e-01 0 -1 2552 - 3.5150000000000000e+02 -2 -3 2553 7.6500000000000000e+01 - - -6.7581409215927124e-01 4.3366453051567078e-01 - -6.9250804185867310e-01 1.4782861806452274e-02 - <_> - 7.5361564636230469e+01 - - 1 2 2554 1.4550000000000000e+02 0 -1 2555 - 1.3500000000000000e+01 -2 -3 2556 3.7950000000000000e+02 - - -9.2167288064956665e-01 2.2473543882369995e-01 - -6.1316716670989990e-01 5.3515338897705078e-01 - <_> - 7.5602142333984375e+01 - - 1 2 2557 1.7500000000000000e+01 0 -1 2558 - 3.0150000000000000e+02 -2 -3 2559 5.9500000000000000e+01 - - -2.0176244899630547e-02 7.6716834306716919e-01 - -6.2594699859619141e-01 2.9301643371582031e-02 - <_> - 7.5772842407226562e+01 - - 1 2 2560 7.0205000000000000e+03 0 -1 2561 - 7.5000000000000000e+00 -2 -3 2562 182. - - -7.9505175352096558e-01 1.7069797217845917e-01 - -8.2258385419845581e-01 7.3946392536163330e-01 - <_> - 7.5877098083496094e+01 - - 1 2 2563 4.5500000000000000e+01 0 -1 2564 - 6.8445000000000000e+03 -2 -3 2565 7.9500000000000000e+01 - - 3.9029154181480408e-01 -1.7648826539516449e-01 - -5.5182862281799316e-01 4.6366956830024719e-01 - <_> - 7.5638267517089844e+01 - - 1 2 2566 5.1850000000000000e+02 0 -1 2567 - 4.5000000000000000e+00 -2 -3 2568 5.0500000000000000e+01 - - 2.6328665018081665e-01 -3.8584133982658386e-01 - -6.9626593589782715e-01 5.0637173652648926e-01 - <_> - 7.5725959777832031e+01 - - 1 2 2569 1.9950000000000000e+02 0 -1 2570 - 1.8500000000000000e+01 -2 -3 2571 3.6500000000000000e+01 - - -4.1137224435806274e-01 2.0416383445262909e-01 - -9.0335428714752197e-01 8.9813232421875000e-01 - <_> - 7.5224937438964844e+01 - - 1 2 2572 7.5000000000000000e+00 0 -1 2573 - 2.5500000000000000e+01 -2 -3 2574 2.8450000000000000e+02 - - -7.3831039667129517e-01 3.6077511310577393e-01 - 3.1331515312194824e-01 -5.0101745128631592e-01 - <_> - 7.5449661254882812e+01 - - 1 2 2575 5.0000000000000000e-01 0 -1 2576 - 3.7665000000000000e+03 -2 -3 2577 8.2500000000000000e+01 - - 7.5498217344284058e-01 -1.5097464621067047e-01 - -3.8953059911727905e-01 2.2472013533115387e-01 - <_> - 7.5411880493164062e+01 - - 1 2 2578 4493. 0 -1 2579 2.5500000000000000e+01 -2 -3 2580 - 2.4500000000000000e+01 - - 2.1087837219238281e-01 -2.8623789548873901e-01 -1. - 9.5196199417114258e-01 - <_> - 7.5614067077636719e+01 - - 1 2 2581 1.0500000000000000e+01 0 -1 2582 17. -2 -3 2583 - 103. - - -7.5117886066436768e-01 9.0265202522277832e-01 - 2.0218542218208313e-01 -7.3936897516250610e-01 - <_> - 7.5999168395996094e+01 - - 1 2 2584 3.8500000000000000e+01 0 -1 2585 5086. -2 -3 2586 - 5.4500000000000000e+01 - - 5.9127920866012573e-01 -5.5186152458190918e-01 - 6.0463196039199829e-01 -9.3399420380592346e-02 - <_> - 7.6240371704101562e+01 - - 1 2 2587 2.7500000000000000e+01 0 -1 2588 - 3.5000000000000000e+00 -2 -3 2589 91. - - -6.9810129702091217e-02 -8.4188365936279297e-01 - 2.4120073020458221e-01 -6.5708816051483154e-01 - <_> - 7.6235023498535156e+01 - - 1 2 2590 1.9500000000000000e+01 0 -1 2591 - 1.6500000000000000e+01 -2 -3 2592 4.5000000000000000e+00 - - 3.0514994263648987e-01 -3.2603117823600769e-01 - -4.3177062273025513e-01 8.1372964382171631e-01 - <_> - 7.6073257446289062e+01 - - 1 2 2593 1.2135000000000000e+03 0 -1 2594 - 1.5725000000000000e+03 -2 -3 2595 5.0650000000000000e+02 - - 4.9728196859359741e-01 -4.1840994358062744e-01 - 6.4058172702789307e-01 -1.6176456212997437e-01 - <_> - 7.6243354797363281e+01 - - 1 2 2596 2.5000000000000000e+00 0 -1 2597 - 4.2500000000000000e+01 -2 -3 2598 1.0500000000000000e+01 - - 2.2679857909679413e-01 -6.9367134571075439e-01 - 5.3237688541412354e-01 -5.3971223533153534e-02 - <_> - 7.6326980590820312e+01 - - 1 2 2599 5.0500000000000000e+01 0 -1 2600 - 3.5000000000000000e+00 -2 -3 2601 6.9315000000000000e+03 - - 2.1303455531597137e-01 -6.3557696342468262e-01 - -1.9230200350284576e-01 4.7144305706024170e-01 - <_> - 7.6166137695312500e+01 - - 1 2 2602 6905. 0 -1 2603 5.9785000000000000e+03 -2 -3 2604 - 2.5000000000000000e+00 - - -4.6545404940843582e-02 6.8220782279968262e-01 - 1.9928511977195740e-01 -5.4866182804107666e-01 - <_> - 7.6497024536132812e+01 - - 1 2 2605 3.5000000000000000e+00 0 -1 2606 - 1.5000000000000000e+00 -2 -3 2607 1.5500000000000000e+01 - - 1. -9.3044626712799072e-01 3.3089175820350647e-01 - -2.4615941941738129e-01 - <_> - 7.6440460205078125e+01 - - 1 2 2608 9.8500000000000000e+01 0 -1 2609 - 2.1950000000000000e+02 -2 -3 2610 1.5000000000000000e+00 - - -5.9206131845712662e-02 -7.2229409217834473e-01 - -7.6280659437179565e-01 4.8397278785705566e-01 - <_> - 7.6623970031738281e+01 - - 1 2 2611 6.5500000000000000e+01 0 -1 2612 - 5.0000000000000000e-01 -2 -3 2613 1.0050000000000000e+02 - - 3.7457340955734253e-01 -9.0597450733184814e-01 - 1.8351505696773529e-01 -5.7986891269683838e-01 - <_> - 7.6471252441406250e+01 - - 1 2 2614 1.1615000000000000e+03 0 -1 2615 - 2.0525000000000000e+03 -2 -3 2616 7.8150000000000000e+02 - - -7.5747263431549072e-01 8.2365345954895020e-01 - 4.9958717823028564e-01 -1.5272425115108490e-01 - <_> - 7.6615051269531250e+01 - - 1 2 2617 1.2950000000000000e+02 0 -1 2618 - 4.0500000000000000e+01 -2 -3 2619 2.5000000000000000e+00 - - -8.1159070134162903e-02 5.3420531749725342e-01 - 3.5195964574813843e-01 -8.9636689424514771e-01 - <_> - 7.6877807617187500e+01 - - 1 2 2620 2.2050000000000000e+02 0 -1 2621 - 9.5000000000000000e+00 -2 -3 2622 1.5500000000000000e+01 - - 1.3451068103313446e-01 -4.0673348307609558e-01 - -8.1775653362274170e-01 7.4299770593643188e-01 - <_> - 7.6823638916015625e+01 - - 1 2 2623 2.4500000000000000e+01 0 -1 2624 - 5.9500000000000000e+01 -2 -3 2625 5.1515000000000000e+03 - - -7.1872109174728394e-01 7.7110481262207031e-01 - 3.9283660054206848e-01 -1.6952608525753021e-01 - <_> - 7.6773773193359375e+01 - - 1 2 2626 8.5000000000000000e+00 0 -1 2627 - 3.5000000000000000e+00 -2 -3 2628 1.8450000000000000e+02 - - -6.7384725809097290e-01 6.7822283506393433e-01 - -3.4205380082130432e-01 2.1638515591621399e-01 - <_> - 7.6982254028320312e+01 - - 1 2 2629 2.8500000000000000e+01 0 -1 2630 245. -2 -3 2631 - 61. - - 2.0848464965820312e-01 -6.2569552659988403e-01 - -8.1863158941268921e-01 8.4820270538330078e-01 - <_> - 7.6841300964355469e+01 - - 1 2 2632 2.1500000000000000e+01 0 -1 2633 - 3.5000000000000000e+00 -2 -3 2634 5.0000000000000000e-01 - - -8.5113090276718140e-01 7.8649562597274780e-01 - 4.1131305694580078e-01 -1.4095856249332428e-01 - <_> - 7.7013679504394531e+01 - - 1 2 2635 7.4950000000000000e+02 0 -1 2636 - 9.5000000000000000e+00 -2 -3 2637 7.9500000000000000e+01 - - 1.7237815260887146e-01 -4.3325147032737732e-01 - -1.0799569636583328e-01 6.9663918018341064e-01 - <_> - 7.7435089111328125e+01 - - 1 2 2638 1.7500000000000000e+01 0 -1 2639 174. -2 -3 2640 - 12650. - - 2.8112256526947021e-01 -5.1195782423019409e-01 - 4.2141020298004150e-01 -5.3448003530502319e-01 - <_> - 7.7268295288085938e+01 - - 1 2 2641 503. 0 -1 2642 1.3950000000000000e+02 -2 -3 2643 - 5.5000000000000000e+00 - - 5.8834999799728394e-01 -8.3229357004165649e-01 - 3.7692824006080627e-01 -1.6679267585277557e-01 - <_> - 7.7178421020507812e+01 - - 1 2 2644 1.3500000000000000e+01 0 -1 2645 - 2.5000000000000000e+00 -2 -3 2646 4.5000000000000000e+00 - - -6.5913814306259155e-01 5.2206271886825562e-01 - 4.7852468490600586e-01 -8.9874200522899628e-02 - <_> - 7.7000297546386719e+01 - - 1 2 2647 2.6500000000000000e+01 0 -1 2648 - 9.5000000000000000e+00 -2 -3 2649 4.5000000000000000e+00 - - -8.1166177988052368e-01 4.6178385615348816e-01 - 3.5849693417549133e-01 -1.7812377214431763e-01 - <_> - 7.7597846984863281e+01 - - 1 2 2650 5.0000000000000000e-01 0 -1 2651 - 5.5000000000000000e+00 -2 -3 2652 6.2500000000000000e+01 - - -7.4793010950088501e-01 4.5227390527725220e-01 - -2.8616324067115784e-01 7.2525143623352051e-01 - <_> - 7.7900642395019531e+01 - - 1 2 2653 3.9500000000000000e+01 0 -1 2654 26. -2 -3 2655 - 5218. - - 5.8358985185623169e-01 -4.8778259754180908e-01 - 3.0279731750488281e-01 -8.5277533531188965e-01 - <_> - 7.7819618225097656e+01 - - 1 2 2656 9.5000000000000000e+00 0 -1 2657 6301. -2 -3 2658 - 6.5000000000000000e+00 - - 9.1035622358322144e-01 -9.4324058294296265e-01 - 4.2837977409362793e-01 -1.6642063856124878e-01 - <_> - 7.7973083496093750e+01 - - 1 2 2659 1.0500000000000000e+01 0 -1 2660 - 2.5595000000000000e+03 -2 -3 2661 3.0950000000000000e+02 - - -4.6133957803249359e-02 5.8160132169723511e-01 - -5.6929016113281250e-01 4.2342483997344971e-01 - <_> - 7.7966255187988281e+01 - - 1 2 2662 6.5000000000000000e+00 0 -1 2663 - 2.9250000000000000e+02 -2 -3 2664 4.7550000000000000e+02 - - -1.8533475697040558e-02 8.2740765810012817e-01 - -7.0250022411346436e-01 -6.8264966830611229e-03 - <_> - 7.7632484436035156e+01 - - 1 2 2665 2.5750000000000000e+02 0 -1 2666 - 3.7515000000000000e+03 -2 -3 2667 3.5000000000000000e+00 - - -9.5757788419723511e-01 8.6831378936767578e-01 - 2.1071645617485046e-01 -3.3376976847648621e-01 - <_> - 7.7842147827148438e+01 - - 1 2 2668 1.6650000000000000e+02 0 -1 2669 196. -2 -3 2670 - 2.5150000000000000e+02 - - 1.5279424190521240e-01 -6.0143697261810303e-01 - 5.7514303922653198e-01 -2.5379255414009094e-01 - <_> - 7.7947998046875000e+01 - - 1 2 2671 1.9500000000000000e+01 0 -1 2672 - 1.8850000000000000e+02 -2 -3 2673 3.5000000000000000e+00 - - -9.4067907333374023e-01 1. 4.1685935854911804e-01 - -1.3797542452812195e-01 - <_> - 7.8399063110351562e+01 - - 1 2 2674 2.5500000000000000e+01 0 -1 2675 - 2.5000000000000000e+00 -2 -3 2676 7.0765000000000000e+03 - - 2.0323142409324646e-01 -4.4056713581085205e-01 - -7.2788339853286743e-01 4.5106858015060425e-01 - <_> - 7.8570816040039062e+01 - - 1 2 2677 42. 0 -1 2678 1.8550000000000000e+02 -2 -3 2679 - 2.6500000000000000e+01 - - 8.6221927404403687e-01 -8.9485520124435425e-01 - -6.2209093570709229e-01 1.7175154387950897e-01 - <_> - 7.8441680908203125e+01 - - 1 2 2680 6.1500000000000000e+01 0 -1 2681 - 5.0000000000000000e-01 -2 -3 2682 1.9650000000000000e+02 - - 4.3466070294380188e-01 -1.2913754582405090e-01 - 3.0203801393508911e-01 -7.8498184680938721e-01 - <_> - 7.8473335266113281e+01 - - 1 2 2683 2.4500000000000000e+01 0 -1 2684 - 1.3505000000000000e+03 -2 -3 2685 1.1150000000000000e+02 - - 1.2745502591133118e-01 -5.3675878047943115e-01 - 7.7312016487121582e-01 3.1652595847845078e-02 - <_> - 7.8451828002929688e+01 - - 1 2 2686 2.3145000000000000e+03 0 -1 2687 267. -2 -3 2688 - 13841. - - -6.8013966083526611e-01 6.3926976919174194e-01 - 5.1043254137039185e-01 -5.8976538479328156e-02 - <_> - 7.8873893737792969e+01 - - 1 2 2689 2.3050000000000000e+02 0 -1 2690 - 8.5500000000000000e+01 -2 -3 2691 1.8500000000000000e+01 - - 1.5697926282882690e-01 -4.9062812328338623e-01 - -2.8371900320053101e-01 5.3703123331069946e-01 - <_> - 7.8867477416992188e+01 - - 1 2 2692 1.7500000000000000e+01 0 -1 2693 - 2.3500000000000000e+01 -2 -3 2694 2.9850000000000000e+02 - - -8.6949959397315979e-02 4.9665886163711548e-01 - 4.2928251624107361e-01 -7.4992567300796509e-01 - <_> - 7.9131950378417969e+01 - - 1 2 2695 8.7500000000000000e+01 0 -1 2696 - 1.9850000000000000e+02 -2 -3 2697 84. - - 2.6447936892509460e-01 -4.0403616428375244e-01 - -7.4564838409423828e-01 7.5660055875778198e-01 - <_> - 7.8859619140625000e+01 - - 1 2 2698 1.8500000000000000e+01 0 -1 2699 193. -2 -3 2700 - 3.5000000000000000e+00 - - 6.6051805019378662e-01 -6.8317562341690063e-01 - 4.0860527753829956e-01 -1.5469188988208771e-01 - <_> - 7.9192871093750000e+01 - - 1 2 2701 1.0450000000000000e+02 0 -1 2702 - 2.1250000000000000e+02 -2 -3 2703 368. - - 2.8573963046073914e-01 -5.1572942733764648e-01 - 3.3325448632240295e-01 -7.9736381769180298e-01 - <_> - 7.9073951721191406e+01 - - 1 2 2704 5.0000000000000000e-01 0 -1 2705 - 1.3350000000000000e+02 -2 -3 2706 8.5000000000000000e+00 - - -7.5674408674240112e-01 4.2235055565834045e-01 - -6.1476016044616699e-01 3.5760600119829178e-02 - <_> - 7.9772453308105469e+01 - - 1 2 2707 1622. 0 -1 2708 5.6850000000000000e+02 -2 -3 2709 - 2.3500000000000000e+01 - - 3.7303709983825684e-01 -2.6838380098342896e-01 - 8.5874927043914795e-01 -6.8010163307189941e-01 - <_> - 7.9616546630859375e+01 - - 1 2 2710 5.1150000000000000e+02 0 -1 2711 - 2.0500000000000000e+01 -2 -3 2712 6.2385000000000000e+03 - - -2.7740508317947388e-01 6.4964014291763306e-01 - 6.8416231870651245e-01 -1.4068825542926788e-01 - <_> - 7.9560432434082031e+01 - - 1 2 2713 2.0500000000000000e+01 0 -1 2714 152. -2 -3 2715 - 118. - - 3.3152368664741516e-01 -7.2081387042999268e-01 - -7.7464383840560913e-01 -7.1336306631565094e-02 - <_> - 7.9178382873535156e+01 - - 1 2 2716 5.0000000000000000e-01 0 -1 2717 - 5.0000000000000000e-01 -2 -3 2718 2.8550000000000000e+02 - - -8.7511628866195679e-01 4.4366469979286194e-01 - 2.7641782164573669e-01 -3.8205233216285706e-01 - <_> - 7.9044113159179688e+01 - - 1 2 2719 3.6758500000000000e+04 0 -1 2720 119. -2 -3 2721 - 9.8250000000000000e+02 - - -8.9374190568923950e-01 1. 4.1436728835105896e-01 - -1.3426418602466583e-01 - <_> - 7.8986122131347656e+01 - - 1 2 2722 5.0000000000000000e-01 0 -1 2723 - 2.2500000000000000e+01 -2 -3 2724 4.5000000000000000e+00 - - -8.2067567110061646e-01 3.4801307320594788e-01 - -6.9476479291915894e-01 -5.7994190603494644e-02 - <_> - 7.9108413696289062e+01 - - 1 2 2725 4.2500000000000000e+01 0 -1 2726 - 1.8500000000000000e+01 -2 -3 2727 3.0500000000000000e+01 - - -4.1990894079208374e-01 5.0099647045135498e-01 - -5.2207231521606445e-01 1.2229448556900024e-01 - <_> - 7.9801383972167969e+01 - - 1 2 2728 8.2550000000000000e+02 0 -1 2729 - 5.0000000000000000e-01 -2 -3 2730 6.1765000000000000e+03 - - 3.1118586659431458e-01 -3.7582796812057495e-01 - 6.9296795129776001e-01 -9.2976748943328857e-02 - <_> - 8.0057861328125000e+01 - - 1 2 2731 7.5350000000000000e+02 0 -1 2732 - 5.8500000000000000e+01 -2 -3 2733 1.5000000000000000e+00 - - -2.4525830149650574e-01 2.5647372007369995e-01 - 8.4999513626098633e-01 -9.9117010831832886e-01 - <_> - 7.9780632019042969e+01 - - 1 2 2734 5.0000000000000000e-01 0 -1 2735 108. -2 -3 2736 - 7.1500000000000000e+01 - - 6.9359833002090454e-01 -6.9194906949996948e-01 - -2.7722206711769104e-01 4.1715595126152039e-01 - <_> - 8.0145835876464844e+01 - - 1 2 2737 2.0500000000000000e+01 0 -1 2738 - 4.5000000000000000e+00 -2 -3 2739 7.6500000000000000e+01 - - -9.7951823472976685e-01 3.6520305275917053e-01 - -3.8517192006111145e-01 4.9779340624809265e-01 - <_> - 7.9998329162597656e+01 - - 1 2 2740 1.1165000000000000e+03 0 -1 2741 - 4.5500000000000000e+01 -2 -3 2742 7.7500000000000000e+01 - - -9.2406588792800903e-01 1. 3.6648508906364441e-01 - -1.4751173555850983e-01 - <_> - 8.0417495727539062e+01 - - 1 2 2743 7905. 0 -1 2744 1.4950000000000000e+02 -2 -3 2745 - 98. - - 3.2732751220464706e-02 -7.6812428236007690e-01 - -7.5380378961563110e-01 4.7367131710052490e-01 - <_> - 7.9864738464355469e+01 - - 1 2 2746 6.5000000000000000e+00 0 -1 2747 - 1.2235000000000000e+03 -2 -3 2748 27. - - 5.5213552713394165e-01 -6.3920162618160248e-02 - -9.2558085918426514e-01 -1.1656486988067627e-01 - <_> - 7.9995124816894531e+01 - - 1 2 2749 2.1150000000000000e+02 0 -1 2750 - 1.6500000000000000e+01 -2 -3 2751 34. - - 2.0876583456993103e-01 -3.5845145583152771e-01 - -7.5983208417892456e-01 6.1741626262664795e-01 - <_> - 8.0029579162597656e+01 - - 1 2 2752 1.0500000000000000e+01 0 -1 2753 - 3.0150000000000000e+02 -2 -3 2754 3.5000000000000000e+00 - - 1.8833340704441071e-01 -4.5257857441902161e-01 - -8.7599718570709229e-01 3.9588588476181030e-01 - <_> - 8.0429824829101562e+01 - - 1 2 2755 1.7500000000000000e+01 0 -1 2756 - 5.5950000000000000e+02 -2 -3 2757 3.8500000000000000e+01 - - 9.0497744083404541e-01 -3.4649524092674255e-01 - 4.0024894475936890e-01 -4.3823891878128052e-01 - <_> - 8.0367797851562500e+01 - - 1 2 2758 5.0000000000000000e-01 0 -1 2759 - 1.0032500000000000e+04 -2 -3 2760 1.4500000000000000e+01 - - -7.4333506822586060e-01 4.4759553670883179e-01 - -6.5220975875854492e-01 5.3118625655770302e-03 - <_> - 8.0484443664550781e+01 - - 1 2 2761 7.5500000000000000e+01 0 -1 2762 - 8.4500000000000000e+01 -2 -3 2763 51. - - -4.7128376364707947e-01 3.0099546909332275e-01 - -5.9575259685516357e-01 4.5461925864219666e-01 - <_> - 8.0230026245117188e+01 - - 1 2 2764 6.6250000000000000e+02 0 -1 2765 4812. -2 -3 2766 - 9.5000000000000000e+00 - - -8.2453155517578125e-01 8.0837249755859375e-01 - 3.8529312610626221e-01 -2.5441926717758179e-01 - <_> - 8.0529327392578125e+01 - - 1 2 2767 5.9500000000000000e+01 0 -1 2768 - 1.6050000000000000e+02 -2 -3 2769 1.5000000000000000e+00 - - 3.9788705110549927e-01 -9.0285009145736694e-01 - 2.9930576682090759e-01 -2.6814186573028564e-01 - <_> - 8.0221504211425781e+01 - - 1 2 2770 3.0500000000000000e+01 0 -1 2771 - 4.5000000000000000e+00 -2 -3 2772 1.4475000000000000e+03 - - -9.4630533456802368e-01 8.2679504156112671e-01 - 2.5290638208389282e-01 -3.0782324075698853e-01 - <_> - 8.0379684448242188e+01 - - 1 2 2773 5.0645000000000000e+03 0 -1 2774 - 3.2500000000000000e+01 -2 -3 2775 3.5325000000000000e+03 - - -6.8182122707366943e-01 2.9198646545410156e-01 - 5.7170498371124268e-01 -9.3514062464237213e-02 - <_> - 8.0165153503417969e+01 - - 1 2 2776 1.5500000000000000e+01 0 -1 2777 - 1.2765000000000000e+03 -2 -3 2778 2.5000000000000000e+00 - - -1.2029168428853154e-03 6.6435748338699341e-01 - 5.4809719324111938e-01 -6.2805855274200439e-01 - <_> - 8.0611167907714844e+01 - - 1 2 2779 2.5000000000000000e+00 0 -1 2780 - 2.1500000000000000e+01 -2 -3 2781 1.2050000000000000e+02 - - -2.4764390289783478e-01 4.4601744413375854e-01 - 1.6960276663303375e-01 -5.8656966686248779e-01 - <_> - 8.0892166137695312e+01 - - 1 2 2782 5.4500000000000000e+01 0 -1 2783 - 9.7350000000000000e+02 -2 -3 2784 1.0500000000000000e+01 - - 2.7698031067848206e-01 -8.4596508741378784e-01 - 2.8099426627159119e-01 -3.0595216155052185e-01 - <_> - 8.1190002441406250e+01 - - 1 2 2785 3.5000000000000000e+00 0 -1 2786 - 9.4500000000000000e+01 -2 -3 2787 15. - - -2.3588234186172485e-01 2.9783576726913452e-01 1. - -9.3145948648452759e-01 - <_> - 8.0872680664062500e+01 - - 1 2 2788 5.0000000000000000e-01 0 -1 2789 34. -2 -3 2790 - 404. - - -9.7627913951873779e-01 4.5835772156715393e-01 - 3.3686440438032150e-02 -6.0926121473312378e-01 - <_> - 8.1137512207031250e+01 - - 1 2 2791 4.2500000000000000e+01 0 -1 2792 - 7.5000000000000000e+00 -2 -3 2793 1.0500000000000000e+01 - - 4.3087863922119141e-01 -5.4735422134399414e-01 - -7.4202680587768555e-01 2.6482933759689331e-01 - <_> - 8.1074195861816406e+01 - - 1 2 2794 6045. 0 -1 2795 3582. -2 -3 2796 - 1.4355000000000000e+03 - - 5.6150436401367188e-01 -6.3314586877822876e-02 - -9.8905169963836670e-01 1. - <_> - 8.1611145019531250e+01 - - 1 2 2797 1.7500000000000000e+01 0 -1 2798 - 6.3500000000000000e+01 -2 -3 2799 2.5000000000000000e+00 - - -9.5531716942787170e-02 5.3694951534271240e-01 - 4.7020646929740906e-01 -5.0288665294647217e-01 - <_> - 8.1308403015136719e+01 - - 1 2 2800 5.5000000000000000e+00 0 -1 2801 110. -2 -3 2802 - 2.5000000000000000e+00 - - -9.1038602590560913e-01 7.3705679178237915e-01 - 2.4539317190647125e-01 -3.0274006724357605e-01 - <_> - 8.0943153381347656e+01 - - 1 2 2803 4.9550000000000000e+02 0 -1 2804 - 1.0500000000000000e+01 -2 -3 2805 1.7500000000000000e+01 - - 1.8987993896007538e-01 -3.6525547504425049e-01 -1. - 8.1189829111099243e-01 - <_> - 8.1049530029296875e+01 - - 1 2 2806 1.7050000000000000e+02 0 -1 2807 - 5.5000000000000000e+00 -2 -3 2808 6.3500000000000000e+01 - - 5.0011897087097168e-01 -2.4462732672691345e-01 - 6.2346208095550537e-01 -5.9039413928985596e-01 - <_> - 8.1308738708496094e+01 - - 1 2 2809 3.8500000000000000e+01 0 -1 2810 - 8.6500000000000000e+01 -2 -3 2811 8.8500000000000000e+01 - - -3.8746827840805054e-01 2.5921225547790527e-01 - 6.4567667245864868e-01 -3.9673528075218201e-01 - <_> - 8.1096168518066406e+01 - - 1 2 2812 4.5000000000000000e+00 0 -1 2813 - 3.6500000000000000e+01 -2 -3 2814 1.2500000000000000e+01 - - 8.4782302379608154e-01 -9.7110116481781006e-01 - 3.3998885750770569e-01 -2.1257449686527252e-01 - <_> - 8.1410560607910156e+01 - - 1 2 2815 4.5000000000000000e+00 0 -1 2816 - 7.5500000000000000e+01 -2 -3 2817 1.4500000000000000e+01 - - -1. 1. 3.1439647078514099e-01 -1.7778587341308594e-01 - <_> - 8.1814201354980469e+01 - - 1 2 2818 3.9500000000000000e+01 0 -1 2819 - 6.4750000000000000e+02 -2 -3 2820 9.5000000000000000e+00 - - 2.4708394706249237e-01 -9.2105174064636230e-01 - 4.0363448858261108e-01 -1.2905533611774445e-01 - <_> - 8.1573196411132812e+01 - - 1 2 2821 3.0500000000000000e+01 0 -1 2822 - 5.0000000000000000e-01 -2 -3 2823 5.0500000000000000e+01 - - 4.9701321125030518e-01 -5.6365805864334106e-01 - 2.8191345930099487e-01 -5.3536522388458252e-01 - <_> - 8.1956001281738281e+01 - - 1 2 2824 4.6085000000000000e+03 0 -1 2825 - 1.3250000000000000e+02 -2 -3 2826 1.9750000000000000e+02 - - -7.4937385320663452e-01 9.3439608812332153e-01 - 3.8280078768730164e-01 -2.6699417829513550e-01 - <_> - 8.1513214111328125e+01 - - 1 2 2827 3.0500000000000000e+01 0 -1 2828 - 5.5000000000000000e+00 -2 -3 2829 9.9235000000000000e+03 - - 2.1246223151683807e-01 -4.4278442859649658e-01 - -8.1646180152893066e-01 5.1293396949768066e-01 - <_> - 8.1699577331542969e+01 - - 1 2 2830 1.1650000000000000e+02 0 -1 2831 - 8.2500000000000000e+01 -2 -3 2832 3.5000000000000000e+00 - - 1.8636158108711243e-01 -4.9596223235130310e-01 - -8.9908498525619507e-01 1. - <_> - 8.2445182800292969e+01 - - 1 2 2833 1903. 0 -1 2834 2.5000000000000000e+00 -2 -3 2835 - 6.0445000000000000e+03 - - 1.8896391987800598e-01 -3.2746449112892151e-01 - 7.4561136960983276e-01 -7.9816836118698120e-01 - <_> - 8.2831352233886719e+01 - - 1 2 2836 2.7500000000000000e+01 0 -1 2837 469. -2 -3 2838 - 1.2175000000000000e+03 - - 7.7044230699539185e-01 -9.5174908638000488e-01 - -1.4690612256526947e-01 3.8616815209388733e-01 - <_> - 8.2686500549316406e+01 - - 1 2 2839 2895. 0 -1 2840 4.3500000000000000e+01 -2 -3 2841 - 34. - - -1.4485244452953339e-01 4.4888463616371155e-01 - 3.6486008763313293e-01 -8.1205248832702637e-01 - <_> - 8.2188568115234375e+01 - - 1 2 2842 3.5000000000000000e+00 0 -1 2843 2070. -2 -3 2844 - 4.7500000000000000e+01 - - -6.9201928377151489e-01 3.1747218966484070e-01 - -4.9793621897697449e-01 5.4417175054550171e-01 - <_> - 8.2745765686035156e+01 - - 1 2 2845 2.5000000000000000e+00 0 -1 2846 - 7.5000000000000000e+00 -2 -3 2847 1.8500000000000000e+01 - - -8.4509557485580444e-01 5.5719637870788574e-01 - 1.7902635037899017e-01 -4.2469331622123718e-01 - <_> - 8.2670654296875000e+01 - - 1 2 2848 1.3500000000000000e+01 0 -1 2849 - 9.4650000000000000e+02 -2 -3 2850 7.8500000000000000e+01 - - -3.3974867314100266e-02 -8.2525712251663208e-01 - -4.6273630857467651e-01 6.6797983646392822e-01 - <_> - 8.2877090454101562e+01 - - 1 2 2851 1.4500000000000000e+01 0 -1 2852 - 1.1915000000000000e+03 -2 -3 2853 3.9500000000000000e+01 - - 6.6358172893524170e-01 -7.2160053253173828e-01 - -6.6055583953857422e-01 2.0643877983093262e-01 - <_> - 8.2504707336425781e+01 - - 1 2 2854 4.5000000000000000e+00 0 -1 2855 - 1.6250000000000000e+02 -2 -3 2856 6.5000000000000000e+00 - - 1.9229575991630554e-02 6.7639851570129395e-01 - 7.7679026126861572e-01 -3.7238210439682007e-01 - <_> - 8.1991981506347656e+01 - - 1 2 2857 1.8500000000000000e+01 0 -1 2858 - 1.5500000000000000e+01 -2 -3 2859 7.5000000000000000e+00 - - -6.6943126916885376e-01 2.8580504655838013e-01 - 5.7573765516281128e-01 -5.1273131370544434e-01 - <_> - 8.2700317382812500e+01 - - 1 2 2860 2.5335000000000000e+03 0 -1 2861 - 5.5000000000000000e+00 -2 -3 2862 9017. - - 4.5291054248809814e-01 -3.1770652532577515e-01 - 7.0833772420883179e-01 -5.8668452501296997e-01 - <_> - 8.3036483764648438e+01 - - 1 2 2863 1.2665000000000000e+03 0 -1 2864 - 2.7950000000000000e+02 -2 -3 2865 1.6050000000000000e+02 - - 5.6190413236618042e-01 -9.4979606568813324e-02 - -5.6120347976684570e-01 6.9735217094421387e-01 - <_> - 8.3268234252929688e+01 - - 1 2 2866 3.1500000000000000e+01 0 -1 2867 - 2.2850000000000000e+02 -2 -3 2868 338. - - 2.9099774360656738e-01 -8.5712206363677979e-01 - -7.3761904239654541e-01 2.3174422979354858e-01 - <_> - 8.3142601013183594e+01 - - 1 2 2869 1.3500000000000000e+01 0 -1 2870 - 7.5500000000000000e+01 -2 -3 2871 7.5000000000000000e+00 - - -6.1628973484039307e-01 8.9499497413635254e-01 - 5.3249603509902954e-01 -1.2562887370586395e-01 - <_> - 8.3346061706542969e+01 - - 1 2 2872 5.8500000000000000e+01 0 -1 2873 - 1.4500000000000000e+01 -2 -3 2874 2.3655000000000000e+03 - - -5.8924037218093872e-01 2.0346269011497498e-01 - 6.8413233757019043e-01 -7.3724877834320068e-01 - <_> - 8.3734870910644531e+01 - - 1 2 2875 1.5500000000000000e+01 0 -1 2876 - 2.4500000000000000e+01 -2 -3 2877 842. - - -9.6514111757278442e-01 4.5274001359939575e-01 - -4.4388589262962341e-01 1.6307270526885986e-01 - <_> - 8.3378517150878906e+01 - - 1 2 2878 2.3415000000000000e+03 0 -1 2879 - 1.1135000000000000e+03 -2 -3 2880 1.4450000000000000e+02 - - -6.0065728425979614e-01 4.9152576923370361e-01 - 3.9019897580146790e-01 -3.5635352134704590e-01 - <_> - 8.3842796325683594e+01 - - 1 2 2881 7.7500000000000000e+01 0 -1 2882 - 1.5000000000000000e+00 -2 -3 2883 34. - - 3.0433416366577148e-01 -3.4621056914329529e-01 - -2.3730756342411041e-01 7.2603577375411987e-01 - <_> - 8.4082458496093750e+01 - - 1 2 2884 5.0000000000000000e-01 0 -1 2885 - 1.5000000000000000e+00 -2 -3 2886 2.4500000000000000e+01 - - -8.4981471300125122e-01 4.6478056907653809e-01 - -4.4265326857566833e-01 2.3966242372989655e-01 - <_> - 8.4403526306152344e+01 - - 1 2 2887 1.9735000000000000e+03 0 -1 2888 61716. -2 -3 2889 - 7.1250000000000000e+02 - - 3.2107087969779968e-01 -7.3176121711730957e-01 - -4.2035382986068726e-01 6.5387272834777832e-01 - <_> - 8.3859382629394531e+01 - - 1 2 2890 5.1500000000000000e+01 0 -1 2891 - 5.4500000000000000e+01 -2 -3 2892 9.4500000000000000e+01 - - -8.5267591476440430e-01 3.3089217543601990e-01 - -5.4414278268814087e-01 1.4185604453086853e-01 - <_> - 8.4165733337402344e+01 - - 1 2 2893 2.5000000000000000e+00 0 -1 2894 170. -2 -3 2895 - 5.0000000000000000e-01 - - -7.4921059608459473e-01 1. 3.0634912848472595e-01 - -2.8711661696434021e-01 - <_> - 8.4014938354492188e+01 - - 1 2 2896 5.0000000000000000e-01 0 -1 2897 - 4.5000000000000000e+00 -2 -3 2898 1.5000000000000000e+00 - - -4.4929865002632141e-01 7.1007603406906128e-01 - 5.1218295097351074e-01 -2.8127226233482361e-01 - <_> - 8.3658638000488281e+01 - - 1 2 2899 6.2500000000000000e+01 0 -1 2900 - 7.7500000000000000e+01 -2 -3 2901 5.4650000000000000e+02 - - 1.7899210751056671e-01 -3.5629883408546448e-01 - 6.6323882341384888e-01 -6.2932920455932617e-01 - <_> - 8.4031822204589844e+01 - - 1 2 2902 4.3500000000000000e+01 0 -1 2903 - 2.5000000000000000e+00 -2 -3 2904 1.4450000000000000e+02 - - 2.9303130507469177e-01 -7.2133332490921021e-01 - 3.7318074703216553e-01 -2.9929837584495544e-01 - <_> - 8.4148094177246094e+01 - - 1 2 2905 4.4500000000000000e+01 0 -1 2906 - 5.5000000000000000e+00 -2 -3 2907 1218. - - 1.1627596616744995e-01 -6.5344148874282837e-01 - -6.1276328563690186e-01 3.0713844299316406e-01 - <_> - 8.3736122131347656e+01 - - 1 2 2908 2.2500000000000000e+01 0 -1 2909 - 7.5000000000000000e+00 -2 -3 2910 4945. - - 2.0239315927028656e-01 -4.1197755932807922e-01 - -6.5554910898208618e-01 5.7477289438247681e-01 - <_> - 8.3684288024902344e+01 - - 1 2 2911 6.1500000000000000e+01 0 -1 2912 - 3.5000000000000000e+00 -2 -3 2913 3.6500000000000000e+01 - - 2.9327356815338135e-01 -5.5817484855651855e-01 - 7.1029824018478394e-01 -5.1831677556037903e-02 - <_> - 8.3512733459472656e+01 - - 1 2 2914 5.4500000000000000e+01 0 -1 2915 - 1.5000000000000000e+00 -2 -3 2916 6.5000000000000000e+00 - - -9.4946056604385376e-01 4.1890572756528854e-02 - 3.9327812194824219e-01 -1.7155566811561584e-01 - <_> - 8.4089424133300781e+01 - - 1 2 2917 9.3500000000000000e+01 0 -1 2918 2760. -2 -3 2919 - 1.1250000000000000e+02 - - -2.4497070908546448e-01 9.6521437168121338e-01 - 5.7669252157211304e-01 -7.6096898317337036e-01 - <_> - 8.4561004638671875e+01 - - 1 2 2920 5.0000000000000000e-01 0 -1 2921 - 6.5000000000000000e+00 -2 -3 2922 6.9750000000000000e+02 - - -5.3141713142395020e-01 4.7158041596412659e-01 - 2.2022259235382080e-01 -4.3360495567321777e-01 - <_> - 8.4944801330566406e+01 - - 1 2 2923 1.4050000000000000e+02 0 -1 2924 - 5.0000000000000000e-01 -2 -3 2925 7.4850000000000000e+02 - - 1.5521393716335297e-01 -5.1790440082550049e-01 - 3.8379338383674622e-01 -4.4605687260627747e-01 - <_> - 8.5207305908203125e+01 - - 1 2 2926 1.5500000000000000e+01 0 -1 2927 - 3.3500000000000000e+01 -2 -3 2928 255. - - -2.9250434041023254e-01 6.5829980373382568e-01 - -6.5028876066207886e-01 5.1617544889450073e-01 - <_> - 8.5524932861328125e+01 - - 1 2 2929 2.4500000000000000e+01 0 -1 2930 - 2.8500000000000000e+01 -2 -3 2931 4.2500000000000000e+01 - - -1. 3.1762468814849854e-01 3.0006918311119080e-01 - -5.6320971250534058e-01 - <_> - 8.5334136962890625e+01 - - 1 2 2932 3.5000000000000000e+00 0 -1 2933 - 1.5500000000000000e+01 -2 -3 2934 2457. - - -4.4446155428886414e-01 4.3577027320861816e-01 - 4.5368546247482300e-01 -4.4899699091911316e-01 - <_> - 8.5264480590820312e+01 - - 1 2 2935 5.0000000000000000e-01 0 -1 2936 115. -2 -3 2937 - 2.5000000000000000e+00 - - -9.1964131593704224e-01 4.9966832995414734e-01 - 5.8283418416976929e-01 -6.9656021893024445e-02 - <_> - 8.5903366088867188e+01 - - 1 2 2938 7.1500000000000000e+01 0 -1 2939 - 5.4500000000000000e+01 -2 -3 2940 143. - - 1.6550585627555847e-01 -4.3812391161918640e-01 - 6.3888710737228394e-01 -5.4803293943405151e-01 - <_> - 8.6248062133789062e+01 - - 1 2 2941 2.5000000000000000e+00 0 -1 2942 - 9.0500000000000000e+01 -2 -3 2943 1.0500000000000000e+01 - - 1.0908889025449753e-01 -8.8574463129043579e-01 - 3.4469136595726013e-01 -2.0632795989513397e-01 - <_> - 8.6533218383789062e+01 - - 1 2 2944 2.1500000000000000e+01 0 -1 2945 - 4.5000000000000000e+00 -2 -3 2946 4.4500000000000000e+01 - - -4.4494426250457764e-01 8.8365721702575684e-01 - 2.8515672683715820e-01 -8.1787091493606567e-01 - <_> - 8.7068389892578125e+01 - - 1 2 2947 8.2650000000000000e+02 0 -1 2948 - 4.5000000000000000e+00 -2 -3 2949 1.9675500000000000e+04 - - 3.3902516961097717e-01 -3.3688139915466309e-01 - 5.3517556190490723e-01 -6.7757689952850342e-01 - <_> - 8.6810844421386719e+01 - - 1 2 2950 2.5500000000000000e+01 0 -1 2951 - 2.5000000000000000e+00 -2 -3 2952 1.3035000000000000e+03 - - 9.1093343496322632e-01 -8.2202631235122681e-01 - 3.2981109619140625e-01 -2.5754809379577637e-01 - <_> - 8.6275955200195312e+01 - - 1 2 2953 2.2369500000000000e+04 0 -1 2954 - 1.5000000000000000e+00 -2 -3 2955 9.5285000000000000e+03 - - 1.4417627826333046e-02 -6.9124591350555420e-01 - 3.7811917066574097e-01 -5.3488659858703613e-01 - <_> - 8.6942420959472656e+01 - - 1 2 2956 1.0645000000000000e+03 0 -1 2957 - 3.5000000000000000e+00 -2 -3 2958 7.5000000000000000e+00 - - 1.4049446582794189e-01 -3.5957664251327515e-01 - 9.1249042749404907e-01 -1.7921762168407440e-01 - <_> - 8.7227539062500000e+01 - - 1 2 2959 9.5000000000000000e+00 0 -1 2960 199. -2 -3 2961 - 6.6465000000000000e+03 - - 8.8686686754226685e-01 -6.7846179008483887e-01 - -3.4822642803192139e-01 2.8511366248130798e-01 - <_> - 8.7103866577148438e+01 - - 1 2 2962 6.5000000000000000e+00 0 -1 2963 - 1.5000000000000000e+00 -2 -3 2964 4.3450000000000000e+02 - - 1.8375012278556824e-01 -5.8300310373306274e-01 - -7.8263854980468750e-01 5.0758910179138184e-01 - <_> - 8.7249404907226562e+01 - - 1 2 2965 1.8500000000000000e+01 0 -1 2966 - 8.5000000000000000e+00 -2 -3 2967 9.5000000000000000e+00 - - -9.1379207372665405e-01 1. -6.0623198747634888e-01 - 1.4554040133953094e-01 - <_> - 8.6942718505859375e+01 - - 1 2 2968 3.5000000000000000e+00 0 -1 2969 - 2.3355000000000000e+03 -2 -3 2970 2.5850000000000000e+02 - - 6.3676542043685913e-01 -4.5731505751609802e-01 - 4.5318025350570679e-01 -3.0669227242469788e-01 - <_> - 8.6748542785644531e+01 - - 1 2 2971 2.1500000000000000e+01 0 -1 2972 - 1.6500000000000000e+01 -2 -3 2973 4.3450000000000000e+02 - - -1.9417463243007660e-01 4.5977392792701721e-01 - 7.4417084455490112e-01 -9.2871183156967163e-01 - <_> - 8.6213851928710938e+01 - - 1 2 2974 4.6500000000000000e+01 0 -1 2975 6986. -2 -3 2976 - 1.0655000000000000e+03 - - -3.5974133014678955e-01 3.9904057979583740e-01 - -5.3468620777130127e-01 4.4506999850273132e-01 - <_> - 8.6651367187500000e+01 - - 1 2 2977 7.7450000000000000e+02 0 -1 2978 39564. -2 -3 2979 - 3.5000000000000000e+00 - - 4.3751135468482971e-01 -8.3221775293350220e-01 - 9.5911510288715363e-02 -5.8185952901840210e-01 - <_> - 8.7053947448730469e+01 - - 1 2 2980 1.3150000000000000e+02 0 -1 2981 - 1.8650000000000000e+02 -2 -3 2982 4.2550000000000000e+02 - - 4.1247457265853882e-01 -4.4629332423210144e-01 - 4.0258339047431946e-01 -6.6914594173431396e-01 - <_> - 8.7472679138183594e+01 - - 1 2 2983 6.9750000000000000e+02 0 -1 2984 - 1.0500000000000000e+01 -2 -3 2985 1.8735000000000000e+03 - - -7.6271665096282959e-01 4.1873174905776978e-01 - -6.8841624259948730e-01 -2.3577280342578888e-02 - <_> - 8.7495330810546875e+01 - - 1 2 2986 5.0000000000000000e-01 0 -1 2987 - 2.9500000000000000e+01 -2 -3 2988 1.4750000000000000e+02 - - -7.6370656490325928e-01 6.4419740438461304e-01 - -2.4485288560390472e-01 6.6281813383102417e-01 - <_> - 8.6983520507812500e+01 - - 1 2 2989 1.2135000000000000e+03 0 -1 2990 - 8.0250000000000000e+02 -2 -3 2991 1.0500000000000000e+01 - - -4.0576335787773132e-01 5.1596242189407349e-01 - 4.4931706786155701e-01 -5.1181161403656006e-01 - <_> - 8.7748497009277344e+01 - - 1 2 2992 1.4555000000000000e+03 0 -1 2993 - 2.3355000000000000e+03 -2 -3 2994 4.5000000000000000e+00 - - -8.6321972310543060e-02 7.6497226953506470e-01 - 3.1687757372856140e-01 -4.1308388113975525e-01 - <_> - 8.7668098449707031e+01 - - 1 2 2995 7.3500000000000000e+01 0 -1 2996 - 7.5000000000000000e+00 -2 -3 2997 1.8415000000000000e+03 - - -8.0395199358463287e-02 4.9477747082710266e-01 - 5.0139939785003662e-01 -9.4019854068756104e-01 - <_> - 8.7603317260742188e+01 - - 1 2 2998 1.0350000000000000e+02 0 -1 2999 - 5.0000000000000000e-01 -2 -3 3000 6.6500000000000000e+01 - - 5.5032008886337280e-01 -6.4781084656715393e-02 - -6.9391334056854248e-01 2.6454237103462219e-01 - <_> - 8.7899932861328125e+01 - - 1 2 3001 4.1850000000000000e+02 0 -1 3002 - 2.5000000000000000e+00 -2 -3 3003 4.4350000000000000e+02 - - 8.3208960294723511e-01 -9.7579640150070190e-01 - 4.5810779929161072e-01 -9.8539277911186218e-02 - <_> - 8.7558662414550781e+01 - - 1 2 3004 1.4500000000000000e+01 0 -1 3005 - 4.5000000000000000e+00 -2 -3 3006 4093. - - 1.3818612694740295e-01 -5.0276112556457520e-01 - 3.9290004968643188e-01 -9.0650981664657593e-01 - <_> - 8.7562660217285156e+01 - - 1 2 3007 3.0500000000000000e+01 0 -1 3008 15. -2 -3 3009 - 6.8500000000000000e+01 - - 5.8721613883972168e-01 -9.5952403545379639e-01 - 1.5953540802001953e-01 -7.3017132282257080e-01 - <_> - 8.7263595581054688e+01 - - 1 2 3010 4.6550000000000000e+02 0 -1 3011 - 8.5000000000000000e+00 -2 -3 3012 3.0500000000000000e+01 - - 2.5965842604637146e-01 -4.5460721850395203e-01 - -6.6170775890350342e-01 4.6810474991798401e-01 - <_> - 8.7385635375976562e+01 - - 1 2 3013 3.7500000000000000e+01 0 -1 3014 - 6.7500000000000000e+01 -2 -3 3015 9.0500000000000000e+01 - - -4.7775322198867798e-01 3.0159825086593628e-01 - -7.1135115623474121e-01 1.2204105406999588e-01 - <_> - 8.7448921203613281e+01 - - 1 2 3016 3.4500000000000000e+01 0 -1 3017 - 1.3500000000000000e+01 -2 -3 3018 2.9500000000000000e+01 - - -4.3366974592208862e-01 4.3953391909599304e-01 - -6.8973690271377563e-01 6.3285768032073975e-02 - <_> - 8.7470863342285156e+01 - - 1 2 3019 9.5000000000000000e+00 0 -1 3020 - 3.5750000000000000e+02 -2 -3 3021 2.1500000000000000e+01 - - 5.9902238845825195e-01 -4.9095529317855835e-01 - -6.0496187210083008e-01 2.1941423416137695e-02 - <_> - 8.8030609130859375e+01 - - 1 2 3022 7.5000000000000000e+00 0 -1 3023 - 1.4250000000000000e+02 -2 -3 3024 4.8500000000000000e+01 - - -1.1742883920669556e-01 5.5974942445755005e-01 - -6.6814047098159790e-01 1.0357101261615753e-01 - <_> - 8.8298561096191406e+01 - - 1 2 3025 5.0000000000000000e-01 0 -1 3026 - 2.5000000000000000e+00 -2 -3 3027 6.5000000000000000e+00 - - -7.9518532752990723e-01 3.9527121186256409e-01 - 2.6795190572738647e-01 -4.4711253046989441e-01 - <_> - 8.8873558044433594e+01 - - 1 2 3028 5.0650000000000000e+02 0 -1 3029 - 2.7150000000000000e+02 -2 -3 3030 5.1550000000000000e+02 - - 4.9458679556846619e-01 -3.8078719377517700e-01 - 5.7499361038208008e-01 -2.4514666199684143e-01 - <_> - 8.8112663269042969e+01 - - 1 2 3031 1.5500000000000000e+01 0 -1 3032 - 3.1500000000000000e+01 -2 -3 3033 511. - - -2.6782530546188354e-01 3.8774058222770691e-01 - 3.4897887706756592e-01 -7.6089125871658325e-01 - <_> - 8.8039482116699219e+01 - - 1 2 3034 230. 0 -1 3035 6.6500000000000000e+01 -2 -3 3036 - 4.0500000000000000e+01 - - -7.3185198009014130e-02 5.7667195796966553e-01 - 3.2658204436302185e-01 -8.0915856361389160e-01 - <_> - 8.8365722656250000e+01 - - 1 2 3037 5.0000000000000000e-01 0 -1 3038 - 2.9500000000000000e+01 -2 -3 3039 4.5000000000000000e+00 - - 3.2624712586402893e-01 -5.5316114425659180e-01 - -2.4152111727744341e-03 -6.9509941339492798e-01 - <_> - 8.8882514953613281e+01 - - 1 2 3040 3.0500000000000000e+01 0 -1 3041 - 1.1150000000000000e+02 -2 -3 3042 5.0000000000000000e-01 - - 5.2429902553558350e-01 -8.9993971586227417e-01 - 5.1678961515426636e-01 -8.6023628711700439e-02 - <_> - 8.8496650695800781e+01 - - 1 2 3043 2.8500000000000000e+01 0 -1 3044 - 1.1385000000000000e+03 -2 -3 3045 1.0500000000000000e+01 - - 5.3370710462331772e-02 -7.7716881036758423e-01 - 4.8879763484001160e-01 -1.4188981056213379e-01 - <_> - 8.8710388183593750e+01 - - 1 2 3046 3286. 0 -1 3047 1.8500000000000000e+01 -2 -3 3048 - 14770. - - 5.7567560672760010e-01 -7.7623206377029419e-01 - -8.3764082193374634e-01 2.1373493969440460e-01 - <_> - 8.8465957641601562e+01 - - 1 2 3049 4.5000000000000000e+00 0 -1 3050 - 6.8500000000000000e+01 -2 -3 3051 7.2550000000000000e+02 - - -9.8398631811141968e-01 1. 1.4620523154735565e-01 - -4.8840534687042236e-01 - <_> - 8.8379966735839844e+01 - - 1 2 3052 4.6350000000000000e+02 0 -1 3053 - 1.0005000000000000e+03 -2 -3 3054 12544. - - 1.2718398869037628e-01 -4.7662603855133057e-01 - 6.7666745185852051e-01 -9.6875000000000000e-01 - <_> - 8.8453712463378906e+01 - - 1 2 3055 6.2500000000000000e+01 0 -1 3056 - 2.5000000000000000e+00 -2 -3 3057 2.7450000000000000e+02 - - 7.3742903769016266e-02 -4.8088160157203674e-01 - 7.9391783475875854e-01 -9.5094847679138184e-01 - <_> - 8.8360649108886719e+01 - - 1 2 3058 5.1085000000000000e+03 0 -1 3059 - 1.5000000000000000e+00 -2 -3 3060 59. - - 4.7250562906265259e-01 -9.3059159815311432e-02 - -9.8921388387680054e-01 1. - <_> - 8.8759475708007812e+01 - - 1 2 3061 4.3500000000000000e+01 0 -1 3062 - 2.5000000000000000e+00 -2 -3 3063 9.5000000000000000e+00 - - 1.8726401031017303e-01 -9.5795679092407227e-01 - 3.9882484078407288e-01 -1.5403895080089569e-01 - <_> - 8.8777908325195312e+01 - - 1 2 3064 1.8150000000000000e+02 0 -1 3065 - 1.1500000000000000e+01 -2 -3 3066 4.0500000000000000e+01 - - 2.5865679979324341e-01 -5.4600328207015991e-01 - 6.9991689920425415e-01 1.8433349207043648e-02 - <_> - 8.9012145996093750e+01 - - 1 2 3067 2.6500000000000000e+01 0 -1 3068 - 2.0500000000000000e+01 -2 -3 3069 1.1550000000000000e+02 - - 7.8764355182647705e-01 -8.8436836004257202e-01 - 2.3423436284065247e-01 -3.8715034723281860e-01 - - <_> - 8 - - 12 12 8 3 - <_> - 7 - - 16 11 1 1 - <_> - 1 - - 14 19 7 32 - <_> - 5 - - 9 8 13 9 - <_> - 7 - - 17 11 8 1 - <_> - 5 - - 7 55 24 8 - <_> - 1 - - 13 54 6 3 - <_> - 9 - - 11 40 8 12 - <_> - 4 - - 11 32 9 31 - <_> - 2 - - 9 41 12 14 - <_> - 7 - - 14 33 5 5 - <_> - 7 - - 8 60 22 3 - <_> - 4 - - 11 38 10 3 - <_> - 4 - - 12 8 6 10 - <_> - 8 - - 12 12 8 3 - <_> - 9 - - 18 19 1 13 - <_> - 9 - - 14 3 16 1 - <_> - 1 - - 13 21 6 2 - <_> - 0 - - 12 10 11 6 - <_> - 7 - - 15 0 1 49 - <_> - 5 - - 1 1 18 48 - <_> - 2 - - 14 58 10 2 - <_> - 2 - - 7 51 11 5 - <_> - 1 - - 11 53 10 4 - <_> - 8 - - 16 12 1 5 - <_> - 9 - - 10 35 10 21 - <_> - 8 - - 11 54 12 2 - <_> - 4 - - 13 44 1 4 - <_> - 1 - - 11 50 5 6 - <_> - 3 - - 7 9 6 36 - <_> - 0 - - 13 25 5 7 - <_> - 3 - - 7 20 9 7 - <_> - 9 - - 29 48 1 10 - <_> - 2 - - 6 62 18 1 - <_> - 2 - - 9 49 11 7 - <_> - 5 - - 21 20 1 32 - <_> - 1 - - 11 19 1 4 - <_> - 1 - - 14 10 12 9 - <_> - 1 - - 12 24 6 2 - <_> - 4 - - 15 36 4 1 - <_> - 0 - - 16 31 11 7 - <_> - 4 - - 8 41 17 1 - <_> - 2 - - 11 11 12 6 - <_> - 7 - - 15 6 2 23 - <_> - 3 - - 16 3 13 48 - <_> - 1 - - 13 54 6 3 - <_> - 1 - - 11 19 11 1 - <_> - 7 - - 0 49 9 8 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 15 17 2 5 - <_> - 8 - - 3 1 9 18 - <_> - 5 - - 8 56 19 4 - <_> - 1 - - 14 54 6 8 - <_> - 2 - - 19 52 10 6 - <_> - 4 - - 8 59 20 3 - <_> - 0 - - 18 51 12 9 - <_> - 4 - - 13 8 10 5 - <_> - 5 - - 26 35 3 2 - <_> - 0 - - 11 36 11 12 - <_> - 2 - - 19 18 4 13 - <_> - 4 - - 15 40 14 10 - <_> - 0 - - 10 57 7 3 - <_> - 2 - - 7 30 6 5 - <_> - 7 - - 2 61 22 2 - <_> - 0 - - 26 42 3 15 - <_> - 7 - - 12 5 7 12 - <_> - 5 - - 19 17 10 6 - <_> - 7 - - 16 11 1 1 - <_> - 4 - - 10 18 16 5 - <_> - 3 - - 10 8 1 50 - <_> - 9 - - 18 40 1 7 - <_> - 2 - - 14 25 3 9 - <_> - 8 - - 14 9 6 8 - <_> - 5 - - 22 39 2 10 - <_> - 8 - - 16 1 1 6 - <_> - 0 - - 17 19 2 2 - <_> - 2 - - 17 9 3 11 - <_> - 9 - - 16 18 2 1 - <_> - 8 - - 12 12 8 3 - <_> - 5 - - 1 57 29 5 - <_> - 8 - - 10 53 12 7 - <_> - 1 - - 13 20 1 4 - <_> - 1 - - 15 53 7 4 - <_> - 0 - - 11 49 11 2 - <_> - 0 - - 29 43 2 17 - <_> - 0 - - 11 51 16 4 - <_> - 7 - - 25 51 2 6 - <_> - 2 - - 18 56 9 3 - <_> - 2 - - 8 49 16 5 - <_> - 4 - - 0 42 26 1 - <_> - 4 - - 2 16 11 24 - <_> - 1 - - 3 11 17 6 - <_> - 3 - - 11 6 8 10 - <_> - 0 - - 6 44 2 18 - <_> - 0 - - 1 7 12 21 - <_> - 9 - - 14 20 3 17 - <_> - 9 - - 14 0 10 7 - <_> - 1 - - 2 1 27 2 - <_> - 9 - - 14 18 3 9 - <_> - 4 - - 13 42 8 1 - <_> - 7 - - 28 3 2 22 - <_> - 3 - - 9 52 6 2 - <_> - 3 - - 6 11 9 11 - <_> - 1 - - 15 36 2 5 - <_> - 0 - - 18 21 2 5 - <_> - 1 - - 15 52 2 5 - <_> - 7 - - 15 62 3 1 - <_> - 5 - - 6 1 21 2 - <_> - 5 - - 20 12 4 28 - <_> - 2 - - 21 7 3 27 - <_> - 5 - - 25 10 6 50 - <_> - 0 - - 13 33 1 8 - <_> - 3 - - 4 26 10 17 - <_> - 2 - - 10 18 7 4 - <_> - 7 - - 11 9 17 11 - <_> - 7 - - 24 46 1 15 - <_> - 0 - - 13 35 3 16 - <_> - 4 - - 0 61 26 2 - <_> - 0 - - 10 58 16 4 - <_> - 3 - - 0 56 27 2 - <_> - 0 - - 11 42 11 2 - <_> - 8 - - 12 12 8 3 - <_> - 4 - - 18 8 3 19 - <_> - 8 - - 29 36 1 20 - <_> - 8 - - 14 9 6 8 - <_> - 9 - - 14 60 3 1 - <_> - 1 - - 18 17 2 9 - <_> - 9 - - 10 37 8 9 - <_> - 1 - - 8 56 21 1 - <_> - 3 - - 1 56 22 4 - <_> - 3 - - 7 50 11 6 - <_> - 5 - - 2 60 29 3 - <_> - 9 - - 11 57 11 3 - <_> - 1 - - 15 33 5 21 - <_> - 9 - - 13 16 6 7 - <_> - 1 - - 13 5 6 12 - <_> - 2 - - 13 26 8 4 - <_> - 4 - - 29 4 2 13 - <_> - 5 - - 17 9 5 10 - <_> - 0 - - 0 39 6 19 - <_> - 5 - - 14 24 3 4 - <_> - 2 - - 7 39 14 1 - <_> - 5 - - 27 14 2 35 - <_> - 8 - - 3 62 28 1 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 4 0 26 8 - <_> - 5 - - 9 8 13 9 - <_> - 2 - - 4 45 5 2 - <_> - 2 - - 9 28 5 14 - <_> - 7 - - 8 60 16 2 - <_> - 7 - - 17 30 3 4 - <_> - 7 - - 21 32 5 5 - <_> - 2 - - 16 17 8 9 - <_> - 2 - - 17 34 2 2 - <_> - 5 - - 19 16 10 22 - <_> - 4 - - 24 54 6 9 - <_> - 1 - - 10 53 20 9 - <_> - 5 - - 0 34 7 26 - <_> - 4 - - 0 58 22 5 - <_> - 1 - - 7 17 16 22 - <_> - 7 - - 0 51 9 4 - <_> - 3 - - 21 50 2 4 - <_> - 3 - - 10 21 1 13 - <_> - 7 - - 15 7 6 6 - <_> - 3 - - 13 26 4 9 - <_> - 0 - - 7 45 20 4 - <_> - 1 - - 22 5 1 54 - <_> - 1 - - 11 8 12 1 - <_> - 2 - - 8 57 15 2 - <_> - 4 - - 16 40 11 14 - <_> - 9 - - 15 18 6 4 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 16 11 7 3 - <_> - 8 - - 20 9 1 7 - <_> - 1 - - 3 55 22 2 - <_> - 0 - - 17 17 3 2 - <_> - 3 - - 6 0 11 27 - <_> - 4 - - 12 4 11 22 - <_> - 1 - - 13 14 13 3 - <_> - 0 - - 10 62 14 1 - <_> - 0 - - 14 19 3 6 - <_> - 2 - - 11 4 8 13 - <_> - 2 - - 17 37 2 17 - <_> - 4 - - 12 47 11 1 - <_> - 2 - - 6 55 15 7 - <_> - 9 - - 28 22 1 2 - <_> - 2 - - 9 32 2 23 - <_> - 8 - - 11 13 5 1 - <_> - 2 - - 4 38 3 21 - <_> - 7 - - 14 12 1 28 - <_> - 9 - - 13 36 5 11 - <_> - 2 - - 5 11 17 8 - <_> - 1 - - 15 53 7 4 - <_> - 0 - - 16 45 5 1 - <_> - 1 - - 12 46 8 2 - <_> - 7 - - 24 49 2 2 - <_> - 3 - - 15 25 3 7 - <_> - 5 - - 16 16 14 9 - <_> - 1 - - 18 20 3 7 - <_> - 7 - - 6 53 18 2 - <_> - 1 - - 7 19 18 3 - <_> - 1 - - 16 10 6 6 - <_> - 5 - - 10 29 1 33 - <_> - 5 - - 9 56 22 5 - <_> - 8 - - 17 13 2 4 - <_> - 8 - - 23 10 2 9 - <_> - 8 - - 8 7 1 8 - <_> - 9 - - 12 21 2 27 - <_> - 9 - - 9 2 19 11 - <_> - 1 - - 7 38 11 1 - <_> - 3 - - 4 14 6 18 - <_> - 7 - - 24 7 1 8 - <_> - 1 - - 20 46 11 8 - <_> - 2 - - 5 39 14 16 - <_> - 7 - - 9 3 7 9 - <_> - 0 - - 5 47 1 7 - <_> - 1 - - 13 21 6 2 - <_> - 5 - - 16 10 6 3 - <_> - 2 - - 11 12 12 2 - <_> - 5 - - 6 0 24 1 - <_> - 5 - - 2 18 22 3 - <_> - 9 - - 17 16 3 18 - <_> - 0 - - 14 32 2 3 - <_> - 2 - - 10 34 5 3 - <_> - 2 - - 14 25 3 9 - <_> - 1 - - 6 54 8 4 - <_> - 5 - - 4 31 15 5 - <_> - 0 - - 29 44 1 17 - <_> - 2 - - 11 41 10 2 - <_> - 5 - - 21 13 3 42 - <_> - 2 - - 1 24 30 23 - <_> - 4 - - 6 39 14 11 - <_> - 2 - - 11 59 20 3 - <_> - 9 - - 30 47 1 2 - <_> - 3 - - 5 48 13 6 - <_> - 1 - - 5 41 21 7 - <_> - 1 - - 26 8 2 22 - <_> - 5 - - 9 61 18 2 - <_> - 2 - - 9 22 16 24 - <_> - 4 - - 9 18 5 8 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 23 9 7 8 - <_> - 9 - - 12 10 6 43 - <_> - 9 - - 11 14 11 9 - <_> - 9 - - 6 9 20 2 - <_> - 3 - - 24 44 1 17 - <_> - 1 - - 4 1 23 5 - <_> - 2 - - 17 3 4 15 - <_> - 9 - - 11 1 18 2 - <_> - 8 - - 16 2 2 4 - <_> - 7 - - 5 10 10 3 - <_> - 0 - - 0 48 3 7 - <_> - 0 - - 12 10 11 6 - <_> - 7 - - 16 11 1 1 - <_> - 8 - - 14 12 3 4 - <_> - 1 - - 19 20 3 15 - <_> - 5 - - 15 20 15 4 - <_> - 5 - - 19 19 4 43 - <_> - 1 - - 13 54 6 3 - <_> - 4 - - 13 36 3 4 - <_> - 1 - - 6 44 20 9 - <_> - 7 - - 5 49 4 6 - <_> - 8 - - 17 41 13 22 - <_> - 5 - - 12 56 14 7 - <_> - 4 - - 14 8 5 1 - <_> - 7 - - 12 0 9 1 - <_> - 2 - - 19 61 1 1 - <_> - 0 - - 12 51 10 3 - <_> - 0 - - 4 4 23 4 - <_> - 5 - - 13 30 4 1 - <_> - 3 - - 2 18 12 10 - <_> - 7 - - 15 8 16 6 - <_> - 0 - - 2 53 9 7 - <_> - 7 - - 4 62 23 1 - <_> - 1 - - 13 20 1 4 - <_> - 0 - - 11 26 13 22 - <_> - 4 - - 8 14 3 16 - <_> - 0 - - 21 28 1 3 - <_> - 1 - - 17 34 3 18 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 30 22 1 2 - <_> - 8 - - 3 13 3 3 - <_> - 9 - - 12 29 7 19 - <_> - 8 - - 12 11 8 1 - <_> - 3 - - 2 56 24 1 - <_> - 7 - - 19 60 11 1 - <_> - 0 - - 26 42 3 15 - <_> - 5 - - 21 18 2 12 - <_> - 4 - - 4 43 26 1 - <_> - 0 - - 12 50 14 5 - <_> - 8 - - 13 17 5 3 - <_> - 0 - - 17 18 3 1 - <_> - 5 - - 19 8 4 10 - <_> - 4 - - 0 61 26 2 - <_> - 1 - - 14 53 3 9 - <_> - 7 - - 8 36 1 1 - <_> - 4 - - 26 30 3 30 - <_> - 2 - - 9 37 14 13 - <_> - 3 - - 0 20 2 43 - <_> - 4 - - 10 8 14 4 - <_> - 2 - - 19 61 7 2 - <_> - 2 - - 9 47 8 9 - <_> - 3 - - 10 4 1 53 - <_> - 5 - - 13 3 2 38 - <_> - 0 - - 11 7 4 10 - <_> - 9 - - 30 17 1 2 - <_> - 2 - - 17 13 6 14 - <_> - 7 - - 14 25 4 5 - <_> - 1 - - 11 22 11 2 - <_> - 7 - - 23 53 4 1 - <_> - 8 - - 2 4 19 15 - <_> - 5 - - 2 59 24 1 - <_> - 0 - - 13 18 3 1 - <_> - 3 - - 8 21 5 11 - <_> - 9 - - 12 28 8 8 - <_> - 8 - - 17 13 2 4 - <_> - 2 - - 16 45 3 6 - <_> - 8 - - 17 50 6 8 - <_> - 1 - - 7 21 21 1 - <_> - 3 - - 11 2 17 33 - <_> - 2 - - 30 27 1 34 - <_> - 5 - - 12 29 1 16 - <_> - 5 - - 19 42 5 5 - <_> - 7 - - 0 51 4 4 - <_> - 7 - - 16 11 1 1 - <_> - 0 - - 6 58 23 1 - <_> - 3 - - 7 8 15 28 - <_> - 1 - - 15 8 4 8 - <_> - 0 - - 13 24 3 7 - <_> - 1 - - 15 53 7 4 - <_> - 1 - - 11 19 1 18 - <_> - 1 - - 7 27 8 3 - <_> - 2 - - 11 39 19 6 - <_> - 5 - - 26 30 2 12 - <_> - 5 - - 13 9 8 6 - <_> - 9 - - 29 2 1 7 - <_> - 2 - - 19 39 2 3 - <_> - 0 - - 15 40 15 2 - <_> - 9 - - 16 17 2 6 - <_> - 5 - - 12 57 6 3 - <_> - 1 - - 11 39 7 24 - <_> - 1 - - 9 56 16 1 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 16 12 1 5 - <_> - 8 - - 27 61 2 1 - <_> - 7 - - 2 55 28 3 - <_> - 4 - - 12 45 6 6 - <_> - 1 - - 8 45 5 12 - <_> - 7 - - 16 34 2 4 - <_> - 2 - - 2 50 5 1 - <_> - 5 - - 13 47 8 8 - <_> - 5 - - 21 56 5 5 - <_> - 5 - - 19 56 3 7 - <_> - 1 - - 11 19 11 1 - <_> - 3 - - 10 20 11 6 - <_> - 9 - - 23 23 1 9 - <_> - 5 - - 17 25 10 18 - <_> - 7 - - 7 23 3 8 - <_> - 3 - - 14 34 5 5 - <_> - 3 - - 10 8 1 50 - <_> - 8 - - 1 32 8 15 - <_> - 7 - - 14 59 4 1 - <_> - 3 - - 20 38 2 11 - <_> - 7 - - 0 4 22 6 - <_> - 0 - - 6 20 7 11 - <_> - 4 - - 14 8 5 1 - <_> - 5 - - 0 42 11 13 - <_> - 4 - - 10 9 3 28 - <_> - 0 - - 13 43 9 4 - <_> - 7 - - 18 2 4 4 - <_> - 4 - - 18 39 1 2 - <_> - 4 - - 14 8 6 11 - <_> - 5 - - 13 40 2 8 - <_> - 1 - - 13 21 6 2 - <_> - 8 - - 14 12 3 4 - <_> - 2 - - 17 39 3 7 - <_> - 8 - - 14 17 4 2 - <_> - 2 - - 12 58 15 2 - <_> - 2 - - 9 43 7 12 - <_> - 7 - - 17 25 1 5 - <_> - 4 - - 12 41 9 2 - <_> - 2 - - 17 3 4 15 - <_> - 7 - - 28 28 3 3 - <_> - 0 - - 25 44 5 3 - <_> - 0 - - 17 35 8 8 - <_> - 9 - - 17 32 1 5 - <_> - 9 - - 29 1 1 5 - <_> - 1 - - 13 55 3 2 - <_> - 5 - - 10 5 18 31 - <_> - 4 - - 3 18 3 44 - <_> - 2 - - 3 56 15 7 - <_> - 7 - - 30 44 1 13 - <_> - 1 - - 8 6 15 1 - <_> - 2 - - 11 0 8 24 - <_> - 5 - - 13 15 2 10 - <_> - 1 - - 10 15 13 1 - <_> - 4 - - 11 12 7 4 - <_> - 7 - - 10 10 20 2 - <_> - 7 - - 22 51 7 4 - <_> - 5 - - 14 17 6 8 - <_> - 4 - - 15 36 4 1 - <_> - 1 - - 11 53 10 4 - <_> - 1 - - 18 21 6 5 - <_> - 7 - - 6 57 4 1 - <_> - 2 - - 17 17 4 10 - <_> - 2 - - 13 18 1 1 - <_> - 0 - - 10 54 5 4 - <_> - 7 - - 0 29 17 13 - <_> - 2 - - 8 46 12 8 - <_> - 2 - - 7 10 3 26 - <_> - 1 - - 30 38 1 18 - <_> - 2 - - 16 60 14 1 - <_> - 1 - - 2 43 1 8 - <_> - 2 - - 9 36 21 9 - <_> - 7 - - 4 47 18 2 - <_> - 7 - - 6 46 1 5 - <_> - 2 - - 5 37 2 11 - <_> - 1 - - 11 46 1 14 - <_> - 1 - - 26 8 5 20 - <_> - 2 - - 16 14 2 8 - <_> - 2 - - 11 12 12 2 - <_> - 8 - - 16 12 1 5 - <_> - 8 - - 6 54 15 4 - <_> - 2 - - 8 52 16 4 - <_> - 7 - - 18 40 4 7 - <_> - 3 - - 0 56 27 2 - <_> - 1 - - 5 31 15 18 - <_> - 9 - - 16 18 2 1 - <_> - 7 - - 4 59 24 1 - <_> - 5 - - 1 57 15 3 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 0 4 6 27 - <_> - 5 - - 29 19 2 43 - <_> - 2 - - 15 22 5 6 - <_> - 5 - - 18 48 11 7 - <_> - 0 - - 27 48 4 13 - <_> - 3 - - 6 4 20 1 - <_> - 0 - - 12 10 11 6 - <_> - 4 - - 3 41 23 14 - <_> - 7 - - 27 4 4 14 - <_> - 1 - - 10 52 10 5 - <_> - 9 - - 29 61 2 1 - <_> - 7 - - 14 25 4 3 - <_> - 1 - - 1 5 15 13 - <_> - 2 - - 19 35 2 3 - <_> - 4 - - 5 18 23 5 - <_> - 9 - - 15 18 6 4 - <_> - 9 - - 23 14 8 17 - <_> - 8 - - 12 8 6 28 - <_> - 8 - - 25 13 3 6 - <_> - 8 - - 14 9 6 8 - <_> - 4 - - 20 3 6 52 - <_> - 3 - - 5 49 21 4 - <_> - 1 - - 12 40 6 6 - <_> - 2 - - 11 54 20 9 - <_> - 0 - - 13 36 9 8 - <_> - 1 - - 10 62 13 1 - <_> - 0 - - 12 24 15 39 - <_> - 5 - - 14 9 9 4 - <_> - 0 - - 1 21 2 33 - <_> - 2 - - 28 7 3 23 - <_> - 1 - - 14 53 10 4 - <_> - 3 - - 29 42 2 9 - <_> - 4 - - 13 35 9 27 - <_> - 5 - - 18 19 6 5 - <_> - 0 - - 17 22 12 12 - <_> - 0 - - 17 19 2 2 - <_> - 0 - - 0 42 19 11 - <_> - 5 - - 19 56 6 4 - <_> - 7 - - 8 49 2 1 - <_> - 1 - - 13 5 6 12 - <_> - 5 - - 3 22 18 15 - <_> - 1 - - 15 21 6 7 - <_> - 2 - - 3 16 19 29 - <_> - 5 - - 13 15 5 40 - <_> - 3 - - 16 32 3 10 - <_> - 8 - - 17 11 1 2 - <_> - 9 - - 10 29 5 20 - <_> - 8 - - 18 34 3 11 - <_> - 9 - - 26 47 2 4 - <_> - 1 - - 8 18 1 4 - <_> - 3 - - 21 43 4 11 - <_> - 3 - - 8 9 9 4 - <_> - 7 - - 9 37 13 16 - <_> - 3 - - 5 56 17 2 - <_> - 3 - - 11 53 9 1 - <_> - 4 - - 10 39 2 12 - <_> - 1 - - 8 52 2 4 - <_> - 3 - - 0 20 2 43 - <_> - 3 - - 6 37 15 10 - <_> - 5 - - 19 22 6 3 - <_> - 5 - - 15 0 15 30 - <_> - 0 - - 21 30 7 8 - <_> - 5 - - 19 19 4 32 - <_> - 3 - - 21 45 1 10 - <_> - 0 - - 15 51 5 4 - <_> - 8 - - 14 12 3 4 - <_> - 7 - - 16 11 1 1 - <_> - 7 - - 1 44 17 16 - <_> - 2 - - 18 13 2 12 - <_> - 0 - - 17 18 3 1 - <_> - 1 - - 11 55 7 5 - <_> - 2 - - 13 58 2 5 - <_> - 3 - - 10 15 1 42 - <_> - 5 - - 0 25 5 15 - <_> - 9 - - 16 17 2 6 - <_> - 2 - - 8 54 23 5 - <_> - 4 - - 15 36 4 1 - <_> - 1 - - 7 48 24 2 - <_> - 5 - - 14 5 7 10 - <_> - 0 - - 2 44 14 6 - <_> - 8 - - 17 13 2 4 - <_> - 8 - - 23 43 3 7 - <_> - 8 - - 13 12 1 9 - <_> - 3 - - 2 46 4 5 - <_> - 5 - - 21 2 1 52 - <_> - 3 - - 11 5 17 4 - <_> - 7 - - 22 57 3 1 - <_> - 4 - - 10 20 21 4 - <_> - 5 - - 12 57 18 3 - <_> - 9 - - 10 4 6 11 - <_> - 0 - - 13 45 3 4 - <_> - 1 - - 13 54 6 3 - <_> - 4 - - 8 45 18 1 - <_> - 4 - - 12 42 8 8 - <_> - 1 - - 5 50 11 4 - <_> - 9 - - 14 16 5 33 - <_> - 8 - - 15 10 13 52 - <_> - 3 - - 15 9 15 1 - <_> - 8 - - 27 61 1 1 - <_> - 9 - - 27 0 1 12 - <_> - 2 - - 14 16 4 5 - <_> - 9 - - 14 10 2 16 - <_> - 3 - - 8 11 6 20 - <_> - 7 - - 24 19 1 9 - <_> - 0 - - 14 43 6 2 - <_> - 1 - - 12 15 1 26 - <_> - 1 - - 8 6 15 1 - <_> - 0 - - 2 60 27 1 - <_> - 1 - - 2 14 21 2 - <_> - 7 - - 7 23 13 5 - <_> - 4 - - 24 56 2 7 - <_> - 8 - - 11 13 5 1 - <_> - 0 - - 10 42 12 3 - <_> - 8 - - 19 0 1 23 - <_> - 5 - - 9 61 20 2 - <_> - 0 - - 19 50 8 10 - <_> - 1 - - 16 55 9 2 - <_> - 0 - - 13 33 5 4 - <_> - 3 - - 18 27 8 9 - <_> - 3 - - 28 32 3 21 - <_> - 4 - - 15 42 4 4 - <_> - 2 - - 16 2 8 16 - <_> - 2 - - 7 2 1 47 - <_> - 7 - - 21 61 10 2 - <_> - 2 - - 29 31 2 32 - <_> - 8 - - 17 11 1 2 - <_> - 9 - - 11 19 9 1 - <_> - 9 - - 30 15 1 43 - <_> - 9 - - 24 34 1 4 - <_> - 2 - - 7 51 11 5 - <_> - 0 - - 22 42 1 11 - <_> - 5 - - 3 62 20 1 - <_> - 1 - - 7 20 11 3 - <_> - 3 - - 2 21 9 2 - <_> - 2 - - 25 34 1 18 - <_> - 5 - - 19 14 5 33 - <_> - 7 - - 28 13 1 1 - <_> - 5 - - 1 0 15 44 - <_> - 9 - - 12 32 1 10 - <_> - 7 - - 1 40 14 8 - <_> - 8 - - 12 12 8 3 - <_> - 1 - - 11 8 13 1 - <_> - 0 - - 27 47 1 15 - <_> - 4 - - 8 16 14 7 - <_> - 1 - - 8 55 8 3 - <_> - 0 - - 0 55 28 4 - <_> - 4 - - 7 56 17 4 - <_> - 3 - - 5 13 20 8 - <_> - 1 - - 3 19 4 19 - <_> - 4 - - 13 8 10 5 - <_> - 1 - - 16 18 7 3 - <_> - 4 - - 1 17 26 3 - <_> - 1 - - 11 53 10 4 - <_> - 7 - - 29 2 2 16 - <_> - 2 - - 6 55 21 5 - <_> - 1 - - 29 25 2 3 - <_> - 2 - - 10 50 10 4 - <_> - 4 - - 13 38 2 4 - <_> - 7 - - 24 46 1 9 - <_> - 9 - - 12 17 4 3 - <_> - 9 - - 4 9 6 7 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 9 7 5 1 - <_> - 7 - - 27 41 2 10 - <_> - 8 - - 11 16 3 4 - <_> - 5 - - 14 29 5 7 - <_> - 3 - - 9 24 2 33 - <_> - 5 - - 23 27 4 10 - <_> - 8 - - 3 10 28 46 - <_> - 0 - - 23 46 2 5 - <_> - 5 - - 15 8 9 19 - <_> - 4 - - 10 13 14 37 - <_> - 0 - - 4 57 23 3 - <_> - 1 - - 4 42 26 1 - <_> - 1 - - 15 53 7 4 - <_> - 1 - - 5 61 24 1 - <_> - 4 - - 14 49 7 12 - <_> - 0 - - 11 49 11 2 - <_> - 7 - - 14 10 3 2 - <_> - 1 - - 13 8 3 11 - <_> - 1 - - 11 41 4 9 - <_> - 5 - - 21 2 1 52 - <_> - 1 - - 14 32 9 6 - <_> - 2 - - 10 55 15 5 - <_> - 1 - - 11 28 20 29 - <_> - 1 - - 7 22 20 24 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 15 16 2 10 - <_> - 9 - - 13 8 5 13 - <_> - 3 - - 1 49 18 7 - <_> - 1 - - 11 21 14 3 - <_> - 2 - - 11 4 8 13 - <_> - 9 - - 16 39 4 1 - <_> - 9 - - 16 11 3 3 - <_> - 9 - - 16 13 3 15 - <_> - 5 - - 10 0 13 3 - <_> - 3 - - 12 52 19 7 - <_> - 8 - - 8 45 12 3 - <_> - 0 - - 12 10 11 6 - <_> - 3 - - 19 42 9 13 - <_> - 5 - - 15 57 10 3 - <_> - 0 - - 17 51 7 5 - <_> - 1 - - 12 24 6 2 - <_> - 7 - - 11 61 3 1 - <_> - 1 - - 8 18 15 8 - <_> - 4 - - 15 13 6 5 - <_> - 3 - - 17 16 6 25 - <_> - 4 - - 15 42 4 5 - <_> - 4 - - 16 25 12 21 - <_> - 4 - - 11 37 3 11 - <_> - 8 - - 14 9 6 8 - <_> - 1 - - 27 49 4 6 - <_> - 8 - - 30 12 1 20 - <_> - 2 - - 0 21 1 6 - <_> - 3 - - 7 15 10 11 - <_> - 4 - - 15 36 4 1 - <_> - 1 - - 21 2 3 7 - <_> - 1 - - 15 8 4 8 - <_> - 9 - - 28 2 3 1 - <_> - 7 - - 15 10 13 4 - <_> - 1 - - 15 52 2 5 - <_> - 4 - - 8 34 11 3 - <_> - 0 - - 14 28 5 5 - <_> - 0 - - 14 30 9 27 - <_> - 1 - - 16 7 4 26 - <_> - 3 - - 28 45 3 16 - <_> - 0 - - 14 49 16 5 - <_> - 0 - - 11 15 1 41 - <_> - 0 - - 6 50 6 10 - <_> - 1 - - 11 22 11 2 - <_> - 3 - - 30 60 1 2 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 17 16 5 2 - <_> - 9 - - 7 35 11 6 - <_> - 2 - - 11 39 19 6 - <_> - 3 - - 18 40 5 17 - <_> - 5 - - 12 52 7 10 - <_> - 3 - - 3 47 24 8 - <_> - 3 - - 0 22 5 24 - <_> - 3 - - 22 43 5 10 - <_> - 1 - - 9 54 5 6 - <_> - 2 - - 13 62 8 1 - <_> - 4 - - 12 5 9 15 - <_> - 4 - - 18 14 3 38 - <_> - 2 - - 17 3 4 15 - <_> - 5 - - 6 4 23 2 - <_> - 9 - - 9 19 12 2 - <_> - 9 - - 5 10 24 2 - <_> - 8 - - 15 17 2 35 - <_> - 0 - - 3 43 1 9 - <_> - 7 - - 7 50 3 3 - <_> - 5 - - 15 29 5 3 - <_> - 0 - - 20 25 7 10 - <_> - 7 - - 16 11 1 1 - <_> - 0 - - 0 23 28 17 - <_> - 7 - - 6 60 21 3 - <_> - 1 - - 10 30 15 2 - <_> - 5 - - 21 57 3 6 - <_> - 8 - - 17 13 2 4 - <_> - 8 - - 13 14 1 3 - <_> - 8 - - 5 54 18 3 - <_> - 2 - - 7 51 11 5 - <_> - 8 - - 1 0 19 6 - <_> - 1 - - 17 20 6 5 - <_> - 4 - - 13 44 1 4 - <_> - 8 - - 12 12 8 3 - <_> - 2 - - 18 41 2 10 - <_> - 8 - - 2 61 3 1 - <_> - 9 - - 18 2 1 50 - <_> - 9 - - 0 60 16 3 - <_> - 2 - - 19 25 10 2 - <_> - 7 - - 3 23 5 13 - <_> - 2 - - 14 23 3 6 - <_> - 9 - - 28 46 2 2 - <_> - 9 - - 8 50 5 6 - <_> - 2 - - 10 2 10 28 - <_> - 8 - - 16 12 1 5 - <_> - 2 - - 11 41 10 2 - <_> - 5 - - 20 0 2 32 - <_> - 5 - - 4 55 17 8 - <_> - 0 - - 21 0 8 3 - <_> - 3 - - 8 22 5 2 - <_> - 5 - - 14 9 9 4 - <_> - 7 - - 14 0 12 1 - <_> - 7 - - 20 58 4 1 - <_> - 2 - - 26 47 1 4 - <_> - 1 - - 2 55 27 1 - <_> - 2 - - 19 35 2 3 - <_> - 1 - - 9 13 7 27 - <_> - 3 - - 12 5 1 19 - <_> - 1 - - 12 15 1 26 - <_> - 2 - - 11 16 2 2 - <_> - 7 - - 13 12 10 1 - <_> - 0 - - 21 20 1 12 - <_> - 8 - - 0 62 15 1 - <_> - 8 - - 12 11 8 1 - <_> - 7 - - 11 60 6 1 - <_> - 8 - - 20 4 1 4 - <_> - 3 - - 11 62 9 1 - <_> - 0 - - 16 18 2 1 - <_> - 7 - - 2 62 13 1 - <_> - 9 - - 27 61 4 1 - <_> - 1 - - 13 5 6 12 - <_> - 4 - - 11 40 8 11 - <_> - 3 - - 10 15 1 42 - <_> - 3 - - 0 13 15 37 - <_> - 0 - - 8 50 2 5 - <_> - 3 - - 9 42 10 10 - <_> - 9 - - 15 17 2 5 - <_> - 8 - - 14 12 3 4 - <_> - 1 - - 8 18 1 4 - <_> - 2 - - 21 56 3 6 - <_> - 1 - - 5 56 21 1 - <_> - 5 - - 1 25 5 24 - <_> - 5 - - 10 56 3 1 - <_> - 4 - - 0 17 15 7 - <_> - 7 - - 26 33 1 6 - <_> - 4 - - 10 18 16 5 - <_> - 2 - - 20 15 4 11 - <_> - 0 - - 19 17 3 7 - <_> - 5 - - 18 1 10 22 - <_> - 5 - - 18 16 8 12 - <_> - 5 - - 22 19 1 13 - <_> - 3 - - 17 29 2 10 - <_> - 4 - - 15 36 4 1 - <_> - 1 - - 8 51 17 4 - <_> - 7 - - 0 52 28 10 - <_> - 2 - - 14 16 8 3 - <_> - 7 - - 14 25 4 3 - <_> - 7 - - 27 12 1 8 - <_> - 0 - - 11 36 14 16 - <_> - 7 - - 30 21 1 11 - <_> - 0 - - 25 39 2 8 - <_> - 9 - - 0 1 24 1 - <_> - 0 - - 7 57 21 1 - <_> - 0 - - 9 5 2 13 - <_> - 2 - - 6 52 15 3 - <_> - 9 - - 24 44 2 1 - <_> - 4 - - 2 61 4 2 - <_> - 5 - - 19 54 3 3 - <_> - 5 - - 19 48 6 8 - <_> - 9 - - 15 37 5 11 - <_> - 0 - - 4 46 2 7 - <_> - 3 - - 4 23 7 6 - <_> - 4 - - 13 8 8 9 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 16 8 1 17 - <_> - 8 - - 14 17 4 2 - <_> - 1 - - 14 46 4 4 - <_> - 5 - - 7 60 20 1 - <_> - 2 - - 7 39 16 11 - <_> - 1 - - 13 21 3 2 - <_> - 1 - - 17 9 5 12 - <_> - 1 - - 9 56 8 1 - <_> - 5 - - 30 46 1 14 - <_> - 0 - - 10 37 20 2 - <_> - 0 - - 12 26 3 14 - <_> - 0 - - 13 33 1 8 - <_> - 1 - - 14 53 3 9 - <_> - 9 - - 16 15 1 22 - <_> - 8 - - 14 12 3 4 - <_> - 1 - - 11 19 11 1 - <_> - 5 - - 17 9 5 10 - <_> - 8 - - 9 3 8 2 - <_> - 8 - - 12 11 8 1 - <_> - 5 - - 26 42 3 19 - <_> - 0 - - 12 10 11 6 - <_> - 4 - - 14 41 12 19 - <_> - 4 - - 13 40 4 6 - <_> - 7 - - 6 55 7 2 - <_> - 8 - - 18 54 12 3 - <_> - 2 - - 1 38 25 11 - <_> - 7 - - 4 0 21 42 - <_> - 0 - - 12 0 8 11 - <_> - 4 - - 14 23 4 11 - <_> - 0 - - 18 21 2 5 - <_> - 5 - - 19 21 10 1 - <_> - 9 - - 12 0 2 12 - <_> - 7 - - 12 60 7 2 - <_> - 2 - - 26 45 3 1 - <_> - 3 - - 4 30 21 5 - <_> - 2 - - 6 57 23 2 - <_> - 5 - - 15 50 6 5 - <_> - 1 - - 23 44 2 7 - <_> - 1 - - 21 27 5 30 - <_> - 1 - - 15 55 2 1 - <_> - 9 - - 0 16 24 45 - <_> - 2 - - 11 11 12 6 - <_> - 7 - - 4 30 2 10 - <_> - 2 - - 23 8 2 10 - <_> - 4 - - 10 21 2 5 - <_> - 1 - - 6 0 14 28 - <_> - 3 - - 6 38 3 12 - <_> - 0 - - 0 48 3 7 - <_> - 9 - - 12 14 3 12 - <_> - 0 - - 13 8 7 8 - <_> - 3 - - 11 41 14 17 - <_> - 0 - - 12 50 16 6 - <_> - 3 - - 15 47 7 11 - <_> - 3 - - 4 56 15 3 - <_> - 4 - - 11 46 10 4 - <_> - 0 - - 13 36 9 8 - <_> - 8 - - 16 8 1 17 - <_> - 9 - - 15 18 3 6 - <_> - 3 - - 14 34 5 5 - <_> - 3 - - 6 23 7 8 - <_> - 3 - - 11 26 6 3 - <_> - 0 - - 12 19 9 11 - <_> - 8 - - 19 41 2 1 - <_> - 8 - - 18 11 9 24 - <_> - 3 - - 15 28 2 3 - <_> - 3 - - 7 50 11 6 - <_> - 4 - - 20 6 5 10 - <_> - 4 - - 14 1 7 21 - <_> - 1 - - 16 54 2 4 - <_> - 9 - - 28 48 1 7 - <_> - 4 - - 14 56 7 4 - <_> - 5 - - 19 9 3 41 - <_> - 9 - - 0 52 14 9 - <_> - 2 - - 18 54 10 7 - <_> - 9 - - 11 8 8 49 - <_> - 8 - - 11 13 5 1 - <_> - 8 - - 29 12 2 9 - <_> - 7 - - 28 4 3 24 - <_> - 9 - - 12 17 4 3 - <_> - 0 - - 14 43 6 2 - <_> - 0 - - 11 7 4 10 - <_> - 0 - - 12 1 2 5 - <_> - 1 - - 12 24 6 2 - <_> - 5 - - 19 14 5 7 - <_> - 7 - - 14 10 3 2 - <_> - 2 - - 19 30 1 8 - <_> - 7 - - 20 61 1 1 - <_> - 5 - - 1 57 29 5 - <_> - 8 - - 16 51 6 9 - <_> - 2 - - 7 51 13 5 - <_> - 4 - - 16 19 4 2 - <_> - 1 - - 15 33 5 21 - <_> - 1 - - 20 19 3 2 - <_> - 5 - - 8 31 4 27 - <_> - 8 - - 17 11 1 2 - <_> - 1 - - 26 8 5 20 - <_> - 0 - - 6 3 21 5 - <_> - 0 - - 9 33 15 6 - <_> - 1 - - 14 56 14 1 - <_> - 2 - - 7 59 2 2 - <_> - 4 - - 2 54 12 8 - <_> - 0 - - 13 25 5 7 - <_> - 3 - - 7 20 9 7 - <_> - 2 - - 10 42 13 9 - <_> - 1 - - 29 36 1 3 - <_> - 3 - - 22 2 4 31 - <_> - 0 - - 19 32 4 15 - <_> - 0 - - 17 18 3 1 - <_> - 3 - - 0 47 1 7 - <_> - 8 - - 16 12 1 5 - <_> - 2 - - 8 56 9 7 - <_> - 2 - - 0 38 24 20 - <_> - 9 - - 17 31 1 6 - <_> - 9 - - 14 59 1 2 - <_> - 4 - - 17 38 1 4 - <_> - 0 - - 12 10 11 6 - <_> - 1 - - 13 21 6 2 - <_> - 7 - - 3 10 26 10 - <_> - 0 - - 7 12 14 35 - <_> - 3 - - 20 42 2 6 - <_> - 0 - - 10 43 6 5 - <_> - 1 - - 10 55 14 1 - <_> - 8 - - 9 48 13 13 - <_> - 8 - - 17 11 1 2 - <_> - 8 - - 9 57 12 5 - <_> - 5 - - 6 1 21 2 - <_> - 5 - - 17 9 5 10 - <_> - 9 - - 9 43 12 1 - <_> - 3 - - 24 46 7 7 - <_> - 4 - - 29 29 2 8 - <_> - 5 - - 17 9 5 10 - <_> - 1 - - 10 53 15 5 - <_> - 5 - - 4 62 16 1 - <_> - 4 - - 25 52 4 8 - <_> - 0 - - 11 52 17 4 - <_> - 4 - - 9 0 1 43 - <_> - 5 - - 11 34 2 3 - <_> - 2 - - 9 41 11 1 - <_> - 4 - - 9 61 13 2 - <_> - 3 - - 28 25 1 34 - <_> - 2 - - 19 26 7 1 - <_> - 3 - - 8 18 8 1 - <_> - 5 - - 2 35 19 26 - <_> - 3 - - 15 25 3 7 - <_> - 5 - - 25 23 3 9 - <_> - 0 - - 14 41 1 18 - <_> - 2 - - 12 58 15 2 - <_> - 7 - - 26 60 3 3 - <_> - 0 - - 24 31 3 15 - <_> - 7 - - 5 7 6 10 - <_> - 1 - - 12 8 8 4 - <_> - 5 - - 20 42 4 11 - <_> - 1 - - 16 5 8 2 - <_> - 7 - - 15 6 2 12 - <_> - 9 - - 12 1 19 1 - <_> - 9 - - 10 16 4 32 - <_> - 3 - - 11 41 14 17 - <_> - 8 - - 9 12 10 27 - <_> - 3 - - 8 9 9 4 - <_> - 7 - - 7 2 3 8 - <_> - 1 - - 13 20 1 4 - <_> - 1 - - 13 5 6 12 - <_> - 0 - - 28 19 2 43 - <_> - 4 - - 3 23 1 16 - <_> - 5 - - 18 29 5 25 - <_> - 2 - - 25 55 5 8 - <_> - 4 - - 11 34 11 14 - <_> - 7 - - 6 59 9 4 - <_> - 5 - - 25 45 3 15 - <_> - 8 - - 14 9 6 8 - <_> - 8 - - 29 28 1 18 - <_> - 5 - - 21 1 5 13 - <_> - 8 - - 19 41 2 1 - <_> - 1 - - 13 54 6 3 - <_> - 9 - - 29 31 1 4 - <_> - 0 - - 5 61 9 2 - <_> - 8 - - 14 12 3 4 - <_> - 7 - - 19 32 1 1 - <_> - 8 - - 5 5 6 15 - <_> - 0 - - 13 49 9 4 - <_> - 4 - - 13 46 4 7 - <_> - 4 - - 14 13 9 7 - <_> - 0 - - 17 18 3 1 - <_> - 3 - - 8 36 16 11 - <_> - 9 - - 14 24 6 10 - <_> - 3 - - 0 54 31 4 - <_> - 1 - - 17 43 4 9 - <_> - 5 - - 20 16 3 22 - <_> - 9 - - 0 48 1 3 - <_> - 8 - - 12 12 8 3 - <_> - 9 - - 14 17 6 39 - <_> - 0 - - 11 42 11 2 - <_> - 2 - - 17 17 1 20 - <_> - 2 - - 0 32 10 15 - <_> - 2 - - 16 57 7 6 - <_> - 5 - - 14 9 13 13 - <_> - 0 - - 13 25 5 7 - <_> - 2 - - 20 17 2 14 - <_> - 3 - - 23 35 3 14 - <_> - 2 - - 16 8 1 24 - <_> - 3 - - 3 19 10 27 - <_> - 1 - - 4 34 25 1 - <_> - 1 - - 6 13 6 23 - <_> - 1 - - 17 16 2 31 - <_> - 2 - - 13 10 13 7 - <_> - 5 - - 10 20 3 33 - <_> - 1 - - 15 52 2 5 - <_> - 2 - - 9 6 17 18 - <_> - 2 - - 30 20 1 11 - <_> - 3 - - 29 7 1 28 - <_> - 7 - - 6 5 20 4 - <_> - 7 - - 6 49 4 2 - <_> - 4 - - 13 7 5 4 - <_> - 3 - - 20 42 2 6 - <_> - 1 - - 12 5 2 49 - <_> - 3 - - 7 9 11 33 - <_> - 7 - - 0 5 22 6 - <_> - 3 - - 3 36 12 1 - <_> - 0 - - 17 33 9 11 - <_> - 0 - - 17 27 5 9 - <_> - 1 - - 16 18 7 3 - <_> - 1 - - 16 55 9 2 - <_> - 4 - - 10 41 8 7 - <_> - 4 - - 11 1 8 16 - <_> - 9 - - 10 6 15 8 - <_> - 2 - - 6 4 24 4 - <_> - 9 - - 9 19 12 2 - <_> - 5 - - 13 8 11 4 - <_> - 0 - - 1 19 2 38 - <_> - 5 - - 14 36 1 8 - <_> - 7 - - 22 53 9 1 - <_> - 5 - - 11 5 4 35 - <_> - 5 - - 18 19 6 5 - <_> - 1 - - 17 33 3 24 - <_> - 2 - - 6 50 11 4 - <_> - 3 - - 8 42 2 4 - <_> - 5 - - 16 57 4 6 - <_> - 8 - - 11 8 11 6 - <_> - 4 - - 9 18 5 8 - <_> - 2 - - 17 40 5 5 - <_> - 9 - - 29 19 1 9 - <_> - 0 - - 24 5 5 16 - <_> - 9 - - 18 35 2 12 - <_> - 9 - - 2 9 5 11 - <_> - 7 - - 24 49 2 4 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 17 13 2 4 - <_> - 8 - - 14 5 1 3 - <_> - 5 - - 10 55 5 4 - <_> - 1 - - 9 52 11 10 - <_> - 0 - - 7 56 19 4 - <_> - 4 - - 9 37 17 1 - <_> - 0 - - 9 33 15 6 - <_> - 5 - - 13 31 1 10 - <_> - 5 - - 20 3 2 24 - <_> - 7 - - 9 43 18 2 - <_> - 7 - - 2 12 18 1 - <_> - 0 - - 14 26 2 3 - <_> - 3 - - 4 26 9 4 - <_> - 0 - - 22 40 4 9 - <_> - 1 - - 9 56 16 1 - <_> - 5 - - 5 62 11 1 - <_> - 3 - - 2 9 18 8 - <_> - 4 - - 11 28 20 35 - <_> - 5 - - 15 43 10 10 - <_> - 7 - - 24 49 2 2 - <_> - 1 - - 13 20 1 4 - <_> - 1 - - 16 9 1 27 - <_> - 3 - - 11 20 19 26 - <_> - 2 - - 22 55 9 8 - <_> - 3 - - 0 40 2 15 - <_> - 3 - - 8 8 5 27 - <_> - 7 - - 18 11 1 1 - <_> - 9 - - 12 20 2 8 - <_> - 4 - - 12 9 13 5 - <_> - 3 - - 7 50 11 6 - <_> - 5 - - 22 45 1 10 - <_> - 8 - - 11 13 5 1 - <_> - 3 - - 20 38 2 17 - <_> - 5 - - 17 8 6 6 - <_> - 3 - - 15 25 3 7 - <_> - 4 - - 10 1 13 19 - <_> - 1 - - 13 14 17 2 - <_> - 1 - - 12 3 6 3 - <_> - 8 - - 5 61 1 1 - <_> - 8 - - 14 5 1 3 - <_> - 9 - - 21 62 7 1 - <_> - 4 - - 18 41 1 8 - <_> - 1 - - 12 54 11 7 - <_> - 2 - - 9 27 1 28 - <_> - 8 - - 8 12 15 3 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 14 11 3 45 - <_> - 9 - - 13 4 10 3 - <_> - 0 - - 22 3 1 7 - <_> - 9 - - 16 15 1 22 - <_> - 2 - - 12 60 19 3 - <_> - 2 - - 8 41 15 1 - <_> - 3 - - 3 50 25 6 - <_> - 4 - - 15 9 14 15 - <_> - 2 - - 12 5 5 14 - <_> - 2 - - 15 46 5 12 - <_> - 0 - - 11 7 4 10 - <_> - 3 - - 10 47 18 3 - <_> - 5 - - 6 35 1 17 - <_> - 9 - - 24 4 5 3 - <_> - 5 - - 14 1 15 5 - <_> - 9 - - 19 20 1 2 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 0 53 3 1 - <_> - 3 - - 10 8 5 8 - <_> - 8 - - 29 30 1 11 - <_> - 8 - - 13 26 15 1 - <_> - 3 - - 29 42 2 15 - <_> - 1 - - 13 54 6 3 - <_> - 4 - - 14 35 8 5 - <_> - 5 - - 10 47 11 11 - <_> - 2 - - 6 50 11 4 - <_> - 3 - - 6 49 4 5 - <_> - 9 - - 10 29 12 18 - <_> - 5 - - 9 60 18 3 - <_> - 3 - - 10 15 1 42 - <_> - 1 - - 17 20 6 5 - <_> - 4 - - 28 16 3 18 - <_> - 3 - - 19 41 1 21 - <_> - 0 - - 18 35 3 4 - <_> - 0 - - 13 18 3 1 - <_> - 0 - - 1 23 14 6 - <_> - 0 - - 28 49 3 2 - <_> - 1 - - 13 14 13 3 - <_> - 0 - - 11 27 8 3 - <_> - 0 - - 11 48 14 5 - <_> - 5 - - 14 62 12 1 - <_> - 4 - - 20 6 1 43 - <_> - 9 - - 12 17 4 3 - <_> - 0 - - 11 13 17 1 - <_> - 3 - - 30 43 1 3 - <_> - 0 - - 4 53 2 2 - <_> - 7 - - 2 55 14 2 - <_> - 8 - - 22 32 1 22 - <_> - 1 - - 13 21 3 2 - <_> - 2 - - 8 12 15 35 - <_> - 7 - - 8 1 13 46 - <_> - 5 - - 12 33 4 5 - <_> - 7 - - 9 62 16 1 - <_> - 5 - - 7 58 14 3 - <_> - 2 - - 15 0 10 1 - <_> - 8 - - 14 9 6 8 - <_> - 1 - - 2 55 6 1 - <_> - 8 - - 17 6 2 1 - <_> - 1 - - 15 36 1 17 - <_> - 1 - - 5 50 11 4 - <_> - 9 - - 13 15 1 3 - <_> - 0 - - 13 43 9 4 - <_> - 7 - - 0 14 2 41 - <_> - 5 - - 7 37 2 24 - <_> - 3 - - 10 1 1 27 - <_> - 4 - - 13 44 7 9 - <_> - 9 - - 30 3 1 9 - <_> - 1 - - 4 34 25 1 - <_> - 3 - - 4 56 15 3 - <_> - 2 - - 11 49 16 2 - <_> - 2 - - 8 52 17 11 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 1 2 2 32 - <_> - 5 - - 20 15 3 46 - <_> - 7 - - 7 14 3 26 - <_> - 3 - - 15 28 2 3 - <_> - 2 - - 6 51 8 6 - <_> - 3 - - 2 50 5 2 - <_> - 5 - - 3 47 14 1 - <_> - 1 - - 29 61 2 1 - <_> - 1 - - 20 47 3 14 - <_> - 2 - - 16 45 3 6 - <_> - 4 - - 0 61 3 2 - <_> - 1 - - 18 46 3 1 - <_> - 2 - - 13 38 2 18 - <_> - 3 - - 4 0 12 1 - <_> - 3 - - 5 10 9 31 - <_> - 9 - - 25 51 3 1 - <_> - 5 - - 26 33 2 13 - <_> - 5 - - 18 18 9 10 - <_> - 3 - - 13 23 2 16 - <_> - 1 - - 8 53 7 6 - <_> - 3 - - 27 38 3 21 - <_> - 7 - - 5 59 17 2 - <_> - 4 - - 0 23 2 8 - <_> - 7 - - 23 54 1 1 - <_> - 1 - - 11 19 1 18 - <_> - 1 - - 13 8 3 11 - <_> - 7 - - 14 20 3 3 - <_> - 1 - - 18 17 2 9 - <_> - 5 - - 19 56 4 7 - <_> - 5 - - 14 49 9 5 - <_> - 3 - - 8 22 3 10 - <_> - 4 - - 12 39 3 3 - <_> - 1 - - 16 49 11 3 - <_> - 9 - - 6 52 1 8 - <_> - 4 - - 27 23 2 13 - <_> - 4 - - 4 58 19 2 - <_> - 5 - - 16 30 1 1 - <_> - 5 - - 7 30 17 17 - <_> - 0 - - 2 38 3 21 - <_> - 4 - - 16 7 3 17 - <_> - 1 - - 8 6 15 1 - <_> - 2 - - 18 29 5 13 - <_> - 9 - - 15 27 2 1 - <_> - 8 - - 14 9 6 8 - <_> - 1 - - 3 53 5 1 - <_> - 8 - - 26 27 1 7 - <_> - 4 - - 11 5 2 48 - <_> - 3 - - 10 4 1 53 - <_> - 1 - - 4 42 26 1 - <_> - 0 - - 17 19 2 2 - <_> - 4 - - 12 39 8 10 - <_> - 8 - - 16 12 1 5 - <_> - 8 - - 9 62 8 1 - <_> - 8 - - 17 13 2 4 - <_> - 2 - - 23 36 3 22 - <_> - 1 - - 15 53 7 4 - <_> - 1 - - 3 59 18 2 - <_> - 4 - - 18 39 1 2 - <_> - 7 - - 8 8 22 20 - <_> - 7 - - 2 53 10 2 - <_> - 5 - - 16 26 7 15 - <_> - 4 - - 0 62 24 1 - <_> - 1 - - 4 56 7 7 - <_> - 9 - - 29 0 1 11 - <_> - 0 - - 12 33 5 2 - <_> - 5 - - 7 32 8 7 - <_> - 4 - - 5 18 23 5 - <_> - 3 - - 23 49 2 1 - <_> - 0 - - 11 49 11 6 - <_> - 5 - - 21 20 1 6 - <_> - 9 - - 16 18 2 1 - <_> - 9 - - 14 1 3 13 - <_> - 3 - - 19 48 1 15 - <_> - 4 - - 1 17 26 3 - <_> - 5 - - 0 24 30 26 - <_> - 5 - - 15 58 12 4 - <_> - 0 - - 11 49 11 2 - <_> - 1 - - 6 21 13 20 - <_> - 3 - - 11 9 15 7 - <_> - 2 - - 11 56 7 4 - <_> - 1 - - 16 23 2 5 - <_> - 4 - - 10 8 14 4 - <_> - 1 - - 2 15 17 1 - <_> - 2 - - 11 17 6 3 - <_> - 1 - - 20 13 1 22 - <_> - 5 - - 17 9 5 10 - <_> - 2 - - 16 13 8 8 - <_> - 5 - - 14 0 12 17 - <_> - 5 - - 10 38 14 3 - <_> - 7 - - 21 40 1 7 - <_> - 5 - - 12 34 7 6 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 12 22 5 2 - <_> - 8 - - 5 5 6 15 - <_> - 1 - - 10 15 4 20 - <_> - 9 - - 13 13 3 21 - <_> - 4 - - 28 20 1 16 - <_> - 7 - - 16 11 1 1 - <_> - 4 - - 8 52 9 6 - <_> - 1 - - 11 53 10 4 - <_> - 1 - - 16 18 7 3 - <_> - 7 - - 1 51 12 2 - <_> - 7 - - 12 60 2 2 - <_> - 8 - - 11 13 5 1 - <_> - 1 - - 10 56 10 1 - <_> - 2 - - 29 1 2 21 - <_> - 4 - - 15 36 4 1 - <_> - 9 - - 19 41 1 6 - <_> - 4 - - 1 51 7 12 - <_> - 0 - - 22 19 1 33 - <_> - 5 - - 16 57 5 6 - <_> - 2 - - 5 37 2 11 - <_> - 2 - - 10 42 9 16 - <_> - 7 - - 2 53 10 2 - <_> - 4 - - 8 45 18 1 - <_> - 5 - - 17 15 9 10 - <_> - 3 - - 25 60 3 1 - <_> - 3 - - 29 22 2 11 - <_> - 9 - - 9 56 18 7 - <_> - 8 - - 27 60 3 3 - <_> - 0 - - 7 15 9 7 - <_> - 3 - - 13 21 3 10 - <_> - 3 - - 8 11 6 20 - <_> - 9 - - 30 17 1 2 - <_> - 5 - - 12 56 2 5 - <_> - 1 - - 30 41 1 20 - <_> - 9 - - 12 17 4 3 - <_> - 1 - - 15 53 7 4 - <_> - 0 - - 0 48 3 7 - <_> - 8 - - 12 11 18 2 - <_> - 8 - - 10 55 5 4 - <_> - 8 - - 14 12 3 4 - <_> - 2 - - 19 40 1 12 - <_> - 1 - - 13 21 6 2 - <_> - 4 - - 13 8 10 5 - <_> - 1 - - 7 11 22 1 - <_> - 4 - - 18 41 1 8 - <_> - 3 - - 7 62 13 1 - <_> - 1 - - 9 56 16 1 - <_> - 0 - - 14 30 9 21 - <_> - 1 - - 19 2 10 11 - <_> - 3 - - 21 47 1 8 - <_> - 2 - - 9 48 9 6 - <_> - 1 - - 21 35 1 15 - <_> - 3 - - 4 26 3 29 - <_> - 0 - - 14 11 15 3 - <_> - 7 - - 2 46 21 1 - <_> - 2 - - 25 10 2 18 - <_> - 4 - - 12 14 4 5 - <_> - 3 - - 25 46 4 2 - <_> - 4 - - 9 12 1 11 - <_> - 9 - - 19 39 1 12 - <_> - 7 - - 14 11 9 3 - <_> - 7 - - 6 41 1 7 - <_> - 2 - - 5 58 21 2 - <_> - 5 - - 20 14 9 8 - <_> - 4 - - 3 31 27 3 - <_> - 5 - - 6 1 21 2 - <_> - 7 - - 16 11 1 1 - <_> - 4 - - 13 24 5 27 - <_> - 7 - - 22 60 6 2 - <_> - 4 - - 1 34 20 4 - <_> - 1 - - 15 33 2 8 - <_> - 5 - - 14 40 12 10 - <_> - 2 - - 15 48 2 3 - <_> - 9 - - 15 7 3 51 - <_> - 8 - - 12 12 8 3 - <_> - 3 - - 14 34 5 5 - <_> - 5 - - 17 9 5 10 - <_> - 1 - - 18 20 3 7 - <_> - 4 - - 15 6 3 4 - <_> - 5 - - 2 22 14 3 - <_> - 4 - - 10 29 3 19 - <_> - 1 - - 11 44 1 14 - <_> - 3 - - 6 39 5 16 - <_> - 0 - - 9 51 2 5 - <_> - 2 - - 9 50 4 5 - <_> - 9 - - 16 18 2 1 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 16 11 7 3 - <_> - 8 - - 14 17 4 2 - <_> - 2 - - 26 53 5 7 - <_> - 5 - - 16 47 8 7 - <_> - 3 - - 7 50 8 1 - <_> - 4 - - 8 47 23 1 - <_> - 2 - - 5 59 14 1 - <_> - 9 - - 20 57 1 2 - <_> - 1 - - 23 8 8 22 - <_> - 3 - - 17 50 8 11 - <_> - 0 - - 8 19 21 25 - <_> - 2 - - 14 23 3 6 - <_> - 5 - - 8 22 20 6 - <_> - 4 - - 8 60 7 3 - <_> - 1 - - 12 51 3 12 - <_> - 5 - - 11 57 2 6 - <_> - 7 - - 26 0 3 1 - <_> - 7 - - 12 59 12 3 - <_> - 0 - - 25 50 6 11 - <_> - 0 - - 6 52 25 5 - <_> - 5 - - 14 9 9 4 - <_> - 7 - - 17 11 8 1 - <_> - 5 - - 24 56 1 4 - <_> - 0 - - 18 18 2 7 - <_> - 3 - - 6 22 14 7 - <_> - 0 - - 3 0 17 9 - <_> - 3 - - 11 12 2 9 - <_> - 7 - - 17 8 14 7 - <_> - 4 - - 8 41 17 1 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 22 38 3 10 - <_> - 9 - - 15 32 2 2 - <_> - 2 - - 21 27 9 10 - <_> - 3 - - 16 53 14 2 - <_> - 0 - - 13 24 3 7 - <_> - 1 - - 14 43 10 9 - <_> - 1 - - 14 53 3 9 - <_> - 1 - - 12 31 10 8 - <_> - 2 - - 10 57 19 1 - <_> - 1 - - 9 32 5 2 - <_> - 1 - - 0 34 13 14 - <_> - 5 - - 14 52 9 3 - <_> - 1 - - 4 1 23 5 - <_> - 2 - - 2 49 23 11 - <_> - 1 - - 13 20 1 4 - <_> - 4 - - 12 19 12 1 - <_> - 8 - - 10 39 2 2 - <_> - 9 - - 30 38 1 1 - <_> - 4 - - 13 44 1 4 - <_> - 1 - - 18 28 8 15 - <_> - 1 - - 28 5 2 23 - <_> - 5 - - 16 55 8 4 - <_> - 4 - - 20 18 2 4 - <_> - 2 - - 8 41 15 1 - <_> - 7 - - 15 2 2 56 - <_> - 4 - - 12 4 9 12 - <_> - 3 - - 4 56 15 3 - <_> - 2 - - 5 51 13 5 - <_> - 5 - - 21 25 1 18 - <_> - 4 - - 21 18 7 32 - <_> - 8 - - 14 9 6 8 - <_> - 1 - - 11 19 11 1 - <_> - 8 - - 0 14 1 8 - <_> - 7 - - 6 8 1 3 - <_> - 5 - - 13 46 2 11 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 6 10 11 18 - <_> - 8 - - 5 14 4 5 - <_> - 9 - - 13 16 4 4 - <_> - 9 - - 10 1 13 13 - <_> - 0 - - 5 47 1 16 - <_> - 7 - - 1 48 29 7 - <_> - 0 - - 0 4 1 5 - <_> - 2 - - 18 61 7 1 - <_> - 2 - - 18 15 8 18 - <_> - 1 - - 14 17 5 10 - <_> - 3 - - 16 32 4 7 - <_> - 0 - - 19 29 5 7 - <_> - 7 - - 12 15 5 1 - <_> - 4 - - 13 36 3 4 - <_> - 1 - - 13 5 6 12 - <_> - 8 - - 29 56 2 3 - <_> - 1 - - 11 45 8 5 - <_> - 7 - - 11 59 3 3 - <_> - 8 - - 21 55 5 5 - <_> - 3 - - 10 21 1 13 - <_> - 5 - - 15 24 4 7 - <_> - 2 - - 17 3 4 15 - <_> - 5 - - 7 2 10 2 - <_> - 8 - - 14 12 3 4 - <_> - 1 - - 13 21 6 2 - <_> - 2 - - 10 8 20 7 - <_> - 5 - - 0 33 27 15 - <_> - 0 - - 11 42 11 2 - <_> - 1 - - 9 17 11 9 - <_> - 5 - - 6 59 13 1 - <_> - 4 - - 11 46 10 4 - <_> - 1 - - 13 54 6 3 - <_> - 1 - - 5 50 11 4 - <_> - 9 - - 10 15 3 30 - <_> - 1 - - 4 30 22 11 - <_> - 9 - - 28 2 3 1 - <_> - 8 - - 28 62 1 1 - <_> - 1 - - 19 28 7 6 - <_> - 4 - - 28 9 3 26 - <_> - 1 - - 3 44 16 2 - <_> - 2 - - 30 36 1 8 - <_> - 2 - - 7 51 13 5 - <_> - 9 - - 17 19 2 4 - <_> - 2 - - 10 56 10 3 - <_> - 5 - - 16 16 14 9 - <_> - 7 - - 16 38 2 4 - <_> - 2 - - 15 0 7 6 - <_> - 8 - - 17 13 2 4 - <_> - 7 - - 23 49 4 3 - <_> - 1 - - 7 25 10 10 - <_> - 9 - - 12 29 7 19 - <_> - 7 - - 17 28 1 12 - <_> - 7 - - 18 6 1 2 - <_> - 5 - - 14 5 7 10 - <_> - 0 - - 0 2 3 60 - <_> - 5 - - 13 14 3 2 - <_> - 1 - - 16 7 4 26 - <_> - 0 - - 25 47 6 16 - <_> - 1 - - 8 18 15 8 - <_> - 1 - - 13 55 3 2 - <_> - 0 - - 14 54 1 5 - <_> - 4 - - 15 36 4 1 - <_> - 2 - - 8 24 3 9 - <_> - 1 - - 20 10 1 42 - <_> - 5 - - 4 31 15 5 - <_> - 3 - - 10 5 7 17 - <_> - 2 - - 9 52 3 1 - <_> - 4 - - 3 59 10 4 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 16 11 7 3 - <_> - 8 - - 11 37 1 6 - <_> - 1 - - 11 53 14 4 - <_> - 5 - - 5 57 24 1 - <_> - 7 - - 24 50 2 3 - <_> - 5 - - 13 58 6 4 - <_> - 4 - - 13 43 2 6 - <_> - 3 - - 25 42 6 6 - <_> - 5 - - 14 40 12 10 - <_> - 4 - - 11 53 3 1 - <_> - 3 - - 20 42 2 6 - <_> - 2 - - 11 12 12 2 - <_> - 3 - - 12 42 2 9 - <_> - 8 - - 14 12 3 4 - <_> - 2 - - 11 17 6 3 - <_> - 2 - - 12 6 14 12 - <_> - 9 - - 16 17 2 6 - <_> - 5 - - 20 56 3 7 - <_> - 8 - - 9 20 14 13 - <_> - 7 - - 24 16 1 42 - <_> - 0 - - 18 52 8 6 - <_> - 5 - - 21 50 7 2 - <_> - 2 - - 12 20 7 8 - <_> - 2 - - 10 22 15 36 - <_> - 7 - - 13 6 9 7 - <_> - 4 - - 28 2 3 38 - <_> - 5 - - 10 56 20 6 - <_> - 7 - - 7 55 5 1 - <_> - 9 - - 15 32 2 2 - <_> - 1 - - 3 14 24 3 - <_> - 4 - - 16 7 2 2 - <_> - 1 - - 2 19 25 2 - <_> - 2 - - 18 14 5 44 - <_> - 7 - - 16 11 1 1 - <_> - 0 - - 28 32 1 1 - <_> - 9 - - 30 1 1 2 - <_> - 3 - - 24 45 6 4 - <_> - 3 - - 3 2 10 15 - <_> - 3 - - 1 43 18 12 - <_> - 0 - - 2 19 4 42 - <_> - 2 - - 4 42 5 8 - <_> - 0 - - 19 25 3 18 - <_> - 8 - - 13 14 4 3 - <_> - 0 - - 13 13 6 38 - <_> - 8 - - 22 52 3 5 - <_> - 7 - - 10 61 1 1 - <_> - 2 - - 16 23 3 13 - <_> - 1 - - 11 35 8 4 - <_> - 1 - - 10 55 12 1 - <_> - 1 - - 13 40 12 1 - <_> - 7 - - 6 29 19 16 - <_> - 9 - - 13 27 2 2 - <_> - 9 - - 30 3 1 55 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 16 43 2 8 - <_> - 8 - - 7 8 5 6 - <_> - 3 - - 11 53 20 5 - <_> - 0 - - 12 10 11 6 - <_> - 9 - - 30 4 1 31 - <_> - 0 - - 17 17 3 2 - <_> - 7 - - 22 56 4 3 - <_> - 8 - - 12 12 8 3 - <_> - 1 - - 17 34 13 21 - <_> - 4 - - 7 15 5 22 - <_> - 4 - - 25 13 1 21 - <_> - 5 - - 22 18 3 32 - <_> - 0 - - 15 17 10 7 - <_> - 3 - - 5 10 14 23 - <_> - 1 - - 11 53 14 4 - <_> - 2 - - 14 62 15 1 - <_> - 5 - - 0 28 18 28 - <_> - 7 - - 18 11 1 1 - <_> - 2 - - 13 32 2 1 - <_> - 4 - - 9 6 8 12 - <_> - 3 - - 3 49 10 6 - <_> - 2 - - 11 40 7 1 - <_> - 5 - - 7 18 2 15 - <_> - 5 - - 11 15 5 3 - <_> - 5 - - 9 8 13 9 - <_> - 4 - - 4 60 12 2 - <_> - 3 - - 8 18 9 2 - <_> - 5 - - 5 1 18 48 - <_> - 3 - - 0 13 18 13 - <_> - 2 - - 0 52 22 2 - <_> - 0 - - 5 47 1 7 - <_> - 4 - - 10 18 16 5 - <_> - 1 - - 12 24 6 2 - <_> - 2 - - 6 35 6 10 - <_> - 0 - - 7 12 13 7 - <_> - 3 - - 8 56 9 3 - <_> - 4 - - 13 38 8 11 - <_> - 4 - - 16 22 2 17 - <_> - 0 - - 15 33 8 24 - <_> - 7 - - 1 2 30 40 - <_> - 3 - - 20 37 2 5 - <_> - 9 - - 14 0 10 7 - <_> - 5 - - 14 29 5 7 - <_> - 9 - - 15 15 2 10 - <_> - 5 - - 13 14 12 10 - <_> - 7 - - 14 10 3 2 - <_> - 5 - - 20 1 7 5 - <_> - 7 - - 0 62 28 1 - <_> - 0 - - 26 42 3 15 - <_> - 1 - - 13 44 14 11 - <_> - 9 - - 20 29 1 13 - <_> - 4 - - 11 38 13 7 - <_> - 8 - - 12 12 8 3 - <_> - 5 - - 0 50 7 12 - <_> - 2 - - 15 37 4 25 - <_> - 5 - - 18 7 1 40 - <_> - 2 - - 21 55 9 7 - <_> - 5 - - 15 47 14 8 - <_> - 7 - - 14 25 4 3 - <_> - 4 - - 12 39 3 3 - <_> - 3 - - 10 8 1 50 - <_> - 4 - - 5 16 23 30 - <_> - 1 - - 15 53 7 4 - <_> - 5 - - 1 57 18 2 - <_> - 4 - - 14 58 12 5 - <_> - 8 - - 30 54 1 9 - <_> - 4 - - 0 26 3 5 - <_> - 7 - - 24 36 3 4 - <_> - 0 - - 12 10 11 6 - <_> - 4 - - 3 39 26 5 - <_> - 7 - - 5 50 5 7 - <_> - 5 - - 15 49 10 4 - <_> - 0 - - 0 38 9 15 - <_> - 3 - - 16 41 14 6 - <_> - 1 - - 11 55 10 5 - <_> - 7 - - 14 0 1 31 - <_> - 9 - - 28 0 2 62 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 16 18 2 1 - <_> - 8 - - 16 53 1 2 - <_> - 9 - - 16 18 2 1 - <_> - 1 - - 13 18 18 6 - <_> - 5 - - 15 60 15 2 - <_> - 3 - - 5 38 19 9 - <_> - 0 - - 1 24 3 26 - <_> - 2 - - 30 25 1 26 - <_> - 0 - - 11 42 11 2 - <_> - 1 - - 11 35 8 4 - <_> - 4 - - 6 9 11 16 - <_> - 8 - - 16 12 1 5 - <_> - 8 - - 24 23 4 5 - <_> - 8 - - 28 12 1 12 - <_> - 9 - - 26 2 3 2 - <_> - 1 - - 18 23 3 1 - <_> - 9 - - 15 14 3 14 - <_> - 9 - - 0 31 22 14 - <_> - 2 - - 8 48 11 9 - <_> - 8 - - 6 20 5 7 - <_> - 1 - - 13 52 3 10 - <_> - 1 - - 24 36 4 1 - <_> - 4 - - 13 44 7 7 - <_> - 2 - - 18 16 4 15 - <_> - 5 - - 11 56 12 1 - <_> - 2 - - 1 40 29 1 - <_> - 2 - - 12 38 11 10 - <_> - 1 - - 11 19 11 1 - <_> - 3 - - 17 34 2 13 - <_> - 2 - - 12 20 7 7 - <_> - 2 - - 11 11 12 6 - <_> - 9 - - 21 62 7 1 - <_> - 8 - - 1 62 13 1 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 13 39 1 8 - <_> - 8 - - 17 3 3 2 - <_> - 8 - - 13 2 8 52 - <_> - 5 - - 30 37 1 22 - <_> - 0 - - 9 31 18 3 - <_> - 7 - - 20 11 4 1 - <_> - 1 - - 5 12 14 6 - <_> - 4 - - 8 3 14 46 - <_> - 9 - - 16 18 2 1 - <_> - 5 - - 20 33 2 2 - <_> - 4 - - 15 6 3 4 - <_> - 9 - - 30 1 1 8 - <_> - 2 - - 6 51 8 6 - <_> - 5 - - 9 58 17 2 - <_> - 5 - - 17 28 14 5 - <_> - 1 - - 19 20 3 15 - <_> - 3 - - 10 21 1 13 - <_> - 1 - - 8 17 6 13 - <_> - 0 - - 10 46 8 7 - <_> - 0 - - 13 25 2 6 - <_> - 2 - - 22 30 3 11 - <_> - 1 - - 16 7 4 26 - <_> - 1 - - 14 33 5 21 - <_> - 1 - - 16 53 2 4 - <_> - 0 - - 22 29 5 8 - <_> - 3 - - 4 53 21 5 - <_> - 0 - - 10 50 16 3 - <_> - 0 - - 20 49 2 1 - <_> - 0 - - 25 44 5 3 - <_> - 7 - - 28 41 2 1 - <_> - 7 - - 14 59 1 2 - <_> - 8 - - 12 12 8 3 - <_> - 9 - - 13 27 2 2 - <_> - 8 - - 20 39 2 4 - <_> - 1 - - 12 15 1 26 - <_> - 5 - - 21 2 1 52 - <_> - 4 - - 6 7 8 7 - <_> - 1 - - 13 21 6 2 - <_> - 1 - - 4 54 4 9 - <_> - 4 - - 18 39 1 2 - <_> - 0 - - 4 39 5 7 - <_> - 3 - - 7 23 7 30 - <_> - 1 - - 16 26 9 4 - <_> - 4 - - 18 5 6 41 - <_> - 1 - - 13 14 13 3 - <_> - 3 - - 3 43 11 1 - <_> - 0 - - 17 19 2 2 - <_> - 4 - - 11 12 7 4 - <_> - 8 - - 17 11 1 2 - <_> - 5 - - 30 0 1 2 - <_> - 4 - - 2 59 28 3 - <_> - 0 - - 27 49 4 9 - <_> - 5 - - 20 10 2 18 - <_> - 3 - - 1 7 16 1 - <_> - 5 - - 27 15 2 12 - <_> - 1 - - 20 52 1 11 - <_> - 5 - - 9 57 14 6 - <_> - 7 - - 26 51 3 4 - <_> - 2 - - 6 50 11 4 - <_> - 7 - - 11 24 16 2 - <_> - 5 - - 10 58 13 5 - <_> - 7 - - 10 9 17 10 - <_> - 9 - - 19 19 2 1 - <_> - 7 - - 11 18 13 9 - <_> - 3 - - 6 11 9 11 - <_> - 4 - - 1 8 26 39 - <_> - 5 - - 15 24 4 7 - <_> - 1 - - 15 52 2 5 - <_> - 4 - - 12 31 10 5 - <_> - 4 - - 23 32 8 31 - <_> - 4 - - 28 16 3 18 - <_> - 7 - - 10 47 7 4 - <_> - 1 - - 11 19 1 18 - <_> - 8 - - 16 12 1 5 - <_> - 9 - - 0 48 1 3 - <_> - 8 - - 10 29 1 8 - <_> - 1 - - 5 56 21 1 - <_> - 1 - - 13 46 8 15 - <_> - 7 - - 2 36 10 16 - <_> - 0 - - 11 49 11 2 - <_> - 5 - - 26 56 2 6 - <_> - 7 - - 11 59 3 3 - <_> - 0 - - 12 50 16 6 - <_> - 9 - - 2 61 17 1 - <_> - 0 - - 7 55 7 4 - <_> - 7 - - 15 29 2 3 - <_> - 0 - - 22 58 9 5 - <_> - 1 - - 15 8 4 8 - <_> - 5 - - 4 28 2 2 - <_> - 0 - - 5 27 8 13 - <_> - 1 - - 13 20 5 4 - <_> - 0 - - 26 48 5 6 - <_> - 0 - - 16 34 10 11 - <_> - 7 - - 30 57 1 1 - <_> - 9 - - 30 19 1 8 - <_> - 4 - - 18 41 1 8 - <_> - 9 - - 14 17 3 26 - <_> - 1 - - 13 55 12 3 - <_> - 5 - - 4 62 7 1 - <_> - 9 - - 12 7 13 1 - <_> - 4 - - 14 8 5 1 - <_> - 2 - - 21 55 10 2 - <_> - 3 - - 8 9 13 1 - <_> - 9 - - 13 34 8 6 - <_> - 7 - - 12 29 4 10 - <_> - 9 - - 24 31 2 11 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 29 38 2 2 - <_> - 2 - - 13 10 13 7 - <_> - 2 - - 8 27 3 6 - <_> - 9 - - 12 17 4 3 - <_> - 5 - - 16 10 12 13 - <_> - 0 - - 3 43 1 9 - <_> - 3 - - 6 50 12 7 - <_> - 9 - - 14 1 10 3 - <_> - 5 - - 10 2 10 3 - <_> - 2 - - 19 12 5 12 - <_> - 7 - - 12 15 8 7 - <_> - 5 - - 13 31 1 10 - <_> - 2 - - 9 7 2 47 - <_> - 2 - - 26 44 2 12 - <_> - 1 - - 10 54 7 2 - <_> - 2 - - 9 18 7 2 - <_> - 2 - - 30 58 1 2 - <_> - 2 - - 8 41 15 3 - <_> - 4 - - 14 58 1 5 - <_> - 3 - - 11 0 8 37 - <_> - 4 - - 0 26 3 5 - <_> - 5 - - 13 9 8 6 - <_> - 7 - - 6 36 2 19 - <_> - 7 - - 16 11 1 1 - <_> - 7 - - 8 59 7 2 - <_> - 3 - - 10 7 3 41 - <_> - 4 - - 9 20 17 4 - <_> - 1 - - 28 49 3 11 - <_> - 5 - - 12 57 7 5 - <_> - 4 - - 7 54 11 1 - <_> - 0 - - 12 38 1 6 - <_> - 1 - - 17 43 4 9 - <_> - 8 - - 17 13 2 4 - <_> - 8 - - 13 14 1 3 - <_> - 8 - - 22 53 4 1 - <_> - 2 - - 8 61 15 1 - <_> - 2 - - 4 53 19 3 - <_> - 4 - - 4 42 2 6 - <_> - 9 - - 11 19 9 1 - <_> - 9 - - 11 9 15 6 - <_> - 4 - - 23 61 7 1 - <_> - 0 - - 7 57 21 1 - <_> - 0 - - 8 50 14 10 - <_> - 1 - - 23 46 1 16 - <_> - 2 - - 19 11 12 14 - <_> - 0 - - 2 41 3 13 - <_> - 4 - - 22 23 6 28 - <_> - 0 - - 19 27 4 10 - <_> - 0 - - 6 42 2 2 - <_> - 3 - - 17 29 2 10 - <_> - 4 - - 6 60 4 3 - <_> - 7 - - 22 53 1 4 - <_> - 2 - - 9 16 6 6 - <_> - 2 - - 19 35 2 3 - <_> - 0 - - 15 36 11 1 - <_> - 3 - - 19 24 3 16 - <_> - 5 - - 0 47 13 2 - <_> - 2 - - 3 51 16 4 - <_> - 4 - - 3 26 2 21 - <_> - 8 - - 14 12 3 4 - <_> - 4 - - 6 51 7 1 - <_> - 8 - - 14 17 4 2 - <_> - 3 - - 22 45 1 13 - <_> - 4 - - 11 10 20 4 - <_> - 9 - - 29 47 2 2 - <_> - 3 - - 10 15 1 42 - <_> - 1 - - 25 16 6 7 - <_> - 3 - - 14 21 4 6 - <_> - 3 - - 5 56 6 4 - <_> - 4 - - 24 36 2 26 - <_> - 2 - - 9 48 19 4 - <_> - 7 - - 12 59 12 1 - <_> - 4 - - 2 59 28 3 - <_> - 0 - - 12 10 11 6 - <_> - 1 - - 13 20 1 4 - <_> - 3 - - 15 8 11 32 - <_> - 8 - - 18 25 2 5 - <_> - 1 - - 15 51 5 9 - <_> - 1 - - 6 59 5 4 - <_> - 5 - - 30 51 1 10 - <_> - 4 - - 16 7 2 2 - <_> - 7 - - 4 30 14 6 - <_> - 0 - - 9 28 12 22 - <_> - 2 - - 9 27 1 28 - <_> - 4 - - 17 19 6 35 - <_> - 2 - - 1 30 20 10 - <_> - 1 - - 9 15 11 2 - <_> - 9 - - 16 18 2 1 - <_> - 5 - - 6 18 7 10 - <_> - 4 - - 11 36 16 1 - <_> - 8 - - 12 12 8 3 - <_> - 0 - - 21 54 3 2 - <_> - 8 - - 14 5 1 3 - <_> - 8 - - 11 9 7 8 - <_> - 9 - - 14 1 3 13 - <_> - 0 - - 12 38 1 6 - <_> - 3 - - 5 36 21 5 - <_> - 8 - - 8 62 3 1 - <_> - 4 - - 16 51 2 1 - <_> - 1 - - 16 54 4 8 - <_> - 0 - - 9 15 4 3 - <_> - 0 - - 27 47 1 6 - <_> - 0 - - 12 37 14 2 - <_> - 3 - - 10 5 4 54 - <_> - 5 - - 12 29 6 7 - <_> - 7 - - 1 32 10 13 - <_> - 0 - - 6 58 7 1 - <_> - 2 - - 8 38 20 5 - <_> - 9 - - 28 14 1 9 - <_> - 1 - - 12 8 8 4 - <_> - 4 - - 18 14 3 38 - <_> - 3 - - 0 40 2 15 - <_> - 5 - - 16 24 2 15 - <_> - 1 - - 10 55 12 1 - <_> - 9 - - 7 22 1 29 - <_> - 7 - - 12 59 12 1 - <_> - 8 - - 11 13 5 1 - <_> - 1 - - 2 1 27 2 - <_> - 0 - - 1 8 13 17 - <_> - 8 - - 30 42 1 2 - <_> - 8 - - 12 11 8 1 - <_> - 8 - - 16 35 8 1 - <_> - 4 - - 10 41 8 7 - <_> - 2 - - 22 57 5 6 - <_> - 3 - - 15 49 3 4 - <_> - 5 - - 19 14 5 7 - <_> - 7 - - 14 10 3 2 - <_> - 4 - - 10 18 16 5 - <_> - 9 - - 19 39 2 4 - <_> - 2 - - 7 11 17 1 - <_> - 7 - - 26 33 1 16 - <_> - 4 - - 15 36 4 1 - <_> - 2 - - 7 57 13 4 - <_> - 9 - - 30 4 1 1 - <_> - 3 - - 5 21 10 5 - <_> - 8 - - 11 13 5 1 - <_> - 2 - - 16 19 2 6 - <_> - 5 - - 14 9 9 4 - <_> - 7 - - 15 0 13 3 - <_> - 3 - - 16 36 3 4 - <_> - 0 - - 13 37 15 7 - <_> - 2 - - 24 38 6 18 - <_> - 5 - - 13 39 1 8 - <_> - 7 - - 3 62 15 1 - <_> - 5 - - 29 28 2 25 - <_> - 2 - - 10 46 12 9 - <_> - 2 - - 12 59 14 4 - <_> - 8 - - 16 12 1 5 - <_> - 9 - - 15 24 2 10 - <_> - 7 - - 27 12 2 11 - <_> - 1 - - 11 55 7 5 - <_> - 0 - - 10 33 3 14 - <_> - 0 - - 25 44 1 9 - <_> - 2 - - 16 39 4 9 - <_> - 7 - - 19 25 1 2 - <_> - 1 - - 13 5 6 12 - <_> - 1 - - 11 19 1 18 - <_> - 7 - - 0 0 17 33 - <_> - 7 - - 25 52 4 2 - <_> - 3 - - 27 62 2 1 - <_> - 5 - - 18 17 6 4 - <_> - 7 - - 23 18 2 12 - <_> - 5 - - 22 12 9 23 - <_> - 2 - - 6 50 11 4 - <_> - 2 - - 18 52 7 2 - <_> - 4 - - 0 59 5 4 - <_> - 1 - - 9 54 5 6 - <_> - 2 - - 13 62 18 1 - <_> - 4 - - 25 62 2 1 - <_> - 3 - - 3 19 8 16 - <_> - 1 - - 24 29 4 34 - <_> - 2 - - 13 30 2 5 - <_> - 1 - - 13 7 9 6 - <_> - 4 - - 13 7 5 4 - <_> - 0 - - 16 17 4 5 - <_> - 0 - - 12 10 11 6 - <_> - 7 - - 12 44 1 11 - <_> - 0 - - 19 6 3 4 - <_> - 1 - - 11 8 12 1 - <_> - 2 - - 29 44 1 6 - <_> - 2 - - 24 57 2 4 - <_> - 3 - - 10 50 7 6 - <_> - 5 - - 27 14 2 26 - <_> - 0 - - 1 53 26 5 - <_> - 7 - - 6 62 9 1 - <_> - 8 - - 1 61 25 2 - <_> - 4 - - 18 39 1 2 - <_> - 5 - - 21 18 5 38 - <_> - 0 - - 0 39 3 11 - <_> - 5 - - 4 42 8 6 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 13 14 3 2 - <_> - 3 - - 8 9 9 4 - <_> - 9 - - 14 18 3 9 - <_> - 9 - - 13 4 11 7 - <_> - 9 - - 13 39 5 1 - <_> - 1 - - 8 6 15 1 - <_> - 4 - - 26 19 2 18 - <_> - 9 - - 25 18 4 2 - <_> - 2 - - 17 3 4 15 - <_> - 4 - - 5 44 19 4 - <_> - 1 - - 17 18 5 28 - <_> - 1 - - 14 52 5 6 - <_> - 3 - - 24 45 2 15 - <_> - 0 - - 6 58 16 2 - <_> - 5 - - 16 30 1 1 - <_> - 5 - - 12 42 15 2 - <_> - 8 - - 13 51 1 6 - <_> - 8 - - 16 12 1 5 - <_> - 8 - - 14 52 9 1 - <_> - 8 - - 12 0 7 9 - <_> - 4 - - 14 39 4 9 - <_> - 0 - - 3 5 7 24 - <_> - 9 - - 10 33 2 10 - <_> - 9 - - 4 3 16 12 - <_> - 1 - - 12 1 17 7 - <_> - 8 - - 15 55 2 5 - <_> - 2 - - 7 51 14 1 - <_> - 7 - - 15 9 11 2 - <_> - 1 - - 11 0 7 18 - <_> - 1 - - 7 21 21 1 - <_> - 5 - - 18 15 10 12 - <_> - 1 - - 11 56 19 1 - <_> - 3 - - 28 51 1 9 - <_> - 2 - - 12 55 11 7 - <_> - 7 - - 12 57 7 1 - <_> - 7 - - 12 1 7 53 - <_> - 7 - - 24 48 7 5 - <_> - 4 - - 9 22 14 16 - <_> - 1 - - 28 31 3 31 - <_> - 1 - - 20 54 9 5 - <_> - 9 - - 15 32 2 2 - <_> - 3 - - 6 11 9 11 - <_> - 7 - - 18 2 2 10 - <_> - 0 - - 17 19 2 2 - <_> - 0 - - 0 37 22 9 - <_> - 5 - - 8 57 19 3 - <_> - 3 - - 15 44 16 13 - <_> - 5 - - 17 52 9 3 - <_> - 1 - - 2 1 21 4 - <_> - 2 - - 11 16 2 2 - <_> - 4 - - 12 21 1 10 - <_> - 4 - - 10 9 11 9 - <_> - 5 - - 21 25 1 18 - <_> - 5 - - 18 57 7 2 - <_> - 8 - - 16 8 1 17 - <_> - 9 - - 11 49 3 5 - <_> - 8 - - 1 40 1 14 - <_> - 8 - - 12 12 8 3 - <_> - 5 - - 28 36 1 2 - <_> - 9 - - 16 18 2 1 - <_> - 9 - - 16 8 1 6 - <_> - 5 - - 29 38 1 12 - <_> - 2 - - 7 51 13 5 - <_> - 0 - - 6 37 2 20 - <_> - 5 - - 7 52 4 3 - <_> - 5 - - 14 9 9 4 - <_> - 2 - - 1 21 1 16 - <_> - 5 - - 14 0 12 17 - <_> - 1 - - 17 20 6 5 - <_> - 0 - - 21 11 1 41 - <_> - 1 - - 3 54 28 8 - <_> - 1 - - 17 43 4 9 - <_> - 8 - - 13 62 6 1 - <_> - 2 - - 22 16 8 4 - <_> - 2 - - 12 62 11 1 - <_> - 4 - - 19 57 8 6 - <_> - 1 - - 16 53 2 4 - <_> - 9 - - 10 59 4 3 - <_> - 0 - - 13 15 5 4 - <_> - 3 - - 2 54 10 5 - <_> - 2 - - 5 49 8 11 - <_> - 4 - - 11 53 3 2 - <_> - 5 - - 11 34 2 3 - <_> - 3 - - 6 13 9 14 - <_> - 0 - - 13 14 2 12 - <_> - 4 - - 7 60 1 3 - <_> - 4 - - 15 36 4 1 - <_> - 0 - - 16 31 11 7 - <_> - 9 - - 12 35 6 2 - <_> - 1 - - 13 14 13 3 - <_> - 7 - - 10 20 3 3 - <_> - 4 - - 14 8 6 11 - <_> - 2 - - 21 52 2 9 - <_> - 5 - - 19 16 7 39 - <_> - 7 - - 11 62 9 1 - <_> - 8 - - 13 14 4 3 - <_> - 0 - - 14 17 1 13 - <_> - 9 - - 6 8 6 48 - <_> - 9 - - 28 36 1 1 - <_> - 2 - - 9 41 11 1 - <_> - 1 - - 1 30 19 2 - <_> - 4 - - 13 40 6 7 - <_> - 1 - - 12 43 11 15 - <_> - 1 - - 3 14 24 3 - <_> - 4 - - 2 16 11 24 - <_> - 4 - - 5 26 12 4 - <_> - 7 - - 4 24 4 1 - <_> - 2 - - 16 21 3 6 - <_> - 3 - - 2 21 9 2 - <_> - 9 - - 29 2 1 7 - <_> - 9 - - 19 17 1 7 - <_> - 3 - - 6 52 18 2 - <_> - 0 - - 6 57 13 1 - <_> - 2 - - 11 11 8 3 - <_> - 7 - - 17 44 1 3 - <_> - 7 - - 15 10 13 4 - <_> - 9 - - 25 44 2 3 - <_> - 9 - - 23 27 8 27 - <_> - 8 - - 16 12 1 5 - <_> - 3 - - 1 53 25 3 - <_> - 0 - - 14 48 4 9 - <_> - 7 - - 19 23 2 15 - <_> - 1 - - 8 6 15 1 - <_> - 0 - - 16 1 3 13 - <_> - 2 - - 14 16 4 5 - <_> - 5 - - 15 18 14 5 - <_> - 2 - - 18 16 5 9 - <_> - 3 - - 3 1 21 2 - <_> - 2 - - 11 57 19 6 - <_> - 7 - - 7 55 5 1 - <_> - 9 - - 21 4 4 1 - <_> - 1 - - 18 19 1 5 - <_> - 8 - - 12 11 8 1 - <_> - 0 - - 10 8 4 49 - <_> - 9 - - 11 5 8 48 - <_> - 0 - - 0 30 10 18 - <_> - 2 - - 3 40 4 13 - <_> - 3 - - 29 34 1 22 - <_> - 2 - - 20 26 10 4 - <_> - 4 - - 12 8 7 12 - <_> - 1 - - 8 33 12 1 - <_> - 1 - - 20 55 2 4 - <_> - 4 - - 6 34 19 16 - <_> - 3 - - 1 52 26 1 - <_> - 1 - - 11 6 1 47 - <_> - 1 - - 5 44 5 11 - <_> - 2 - - 15 37 3 10 - <_> - 4 - - 10 21 2 5 - <_> - 3 - - 15 21 3 42 - <_> - 8 - - 12 12 8 3 - <_> - 9 - - 22 62 1 1 - <_> - 8 - - 0 14 12 3 - <_> - 2 - - 0 59 2 4 - <_> - 2 - - 6 35 11 5 - <_> - 2 - - 23 40 6 21 - <_> - 3 - - 23 35 3 14 - <_> - 0 - - 16 34 10 11 - <_> - 5 - - 21 18 2 12 - <_> - 5 - - 23 28 8 19 - <_> - 2 - - 21 17 2 20 - <_> - 0 - - 20 15 4 9 - <_> - 2 - - 14 25 3 9 - <_> - 0 - - 8 24 7 5 - <_> - 1 - - 12 11 3 7 - <_> - 7 - - 16 11 1 1 - <_> - 2 - - 23 14 8 24 - <_> - 3 - - 7 24 11 11 - <_> - 7 - - 1 62 30 1 - <_> - 2 - - 8 40 2 7 - <_> - 1 - - 15 53 7 4 - <_> - 4 - - 19 26 11 36 - <_> - 3 - - 2 56 20 6 - <_> - 7 - - 24 49 2 2 - <_> - 3 - - 8 50 7 8 - <_> - 4 - - 8 46 18 1 - <_> - 4 - - 10 8 14 4 - <_> - 1 - - 13 21 3 2 - <_> - 2 - - 11 4 8 13 - <_> - 9 - - 12 17 4 3 - <_> - 8 - - 11 13 5 1 - <_> - 9 - - 26 32 1 7 - <_> - 8 - - 19 41 2 1 - <_> - 2 - - 9 57 20 3 - <_> - 1 - - 5 56 19 1 - <_> - 7 - - 17 26 2 3 - <_> - 4 - - 12 46 1 2 - <_> - 2 - - 3 25 18 1 - <_> - 7 - - 29 52 1 2 - <_> - 0 - - 13 26 4 1 - <_> - 1 - - 2 29 12 5 - <_> - 2 - - 14 3 5 1 - <_> - 0 - - 19 23 3 21 - <_> - 2 - - 16 39 4 9 - <_> - 5 - - 3 41 25 5 - <_> - 0 - - 28 49 3 1 - <_> - 7 - - 12 38 10 7 - <_> - 3 - - 6 12 10 6 - <_> - 9 - - 17 32 1 5 - <_> - 0 - - 10 42 13 5 - <_> - 8 - - 14 12 3 4 - <_> - 4 - - 7 18 16 3 - <_> - 1 - - 28 14 3 42 - <_> - 1 - - 5 54 26 1 - <_> - 4 - - 17 17 8 38 - <_> - 2 - - 2 50 14 3 - <_> - 5 - - 20 24 2 10 - <_> - 3 - - 9 56 20 2 - <_> - 0 - - 11 50 16 10 - <_> - 7 - - 9 0 21 9 - <_> - 4 - - 3 15 22 14 - <_> - 2 - - 11 17 6 3 - <_> - 5 - - 14 50 6 6 - <_> - 0 - - 0 46 3 7 - <_> - 9 - - 14 7 3 23 - <_> - 5 - - 2 11 14 12 - <_> - 5 - - 19 54 3 3 - <_> - 3 - - 12 43 7 10 - <_> - 4 - - 25 54 3 9 - <_> - 1 - - 9 20 4 5 - <_> - 1 - - 10 15 13 1 - <_> - 5 - - 1 60 22 1 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 13 15 5 4 - <_> - 8 - - 8 54 10 5 - <_> - 0 - - 11 7 4 10 - <_> - 3 - - 23 39 6 12 - <_> - 0 - - 0 54 25 4 - <_> - 9 - - 14 0 10 7 - <_> - 4 - - 15 36 4 1 - <_> - 9 - - 12 1 4 31 - <_> - 5 - - 17 19 10 17 - <_> - 7 - - 4 26 1 18 - <_> - 1 - - 20 19 3 2 - <_> - 7 - - 6 53 6 4 - <_> - 2 - - 28 40 2 9 - <_> - 7 - - 11 6 1 35 - <_> - 3 - - 5 13 20 8 - <_> - 2 - - 7 2 1 37 - <_> - 4 - - 6 12 16 13 - <_> - 4 - - 13 22 2 4 - <_> - 2 - - 12 58 10 1 - <_> - 5 - - 14 50 6 6 - <_> - 7 - - 10 59 21 1 - <_> - 0 - - 26 43 3 14 - <_> - 0 - - 20 7 4 39 - <_> - 3 - - 15 48 1 4 - <_> - 3 - - 8 44 17 10 - <_> - 0 - - 26 21 2 2 - <_> - 3 - - 7 40 5 18 - <_> - 1 - - 4 34 25 1 - <_> - 1 - - 9 45 3 13 - <_> - 3 - - 20 41 1 8 - <_> - 8 - - 13 9 13 11 - <_> - 2 - - 15 46 2 10 - <_> - 2 - - 11 4 8 13 - <_> - 0 - - 0 28 6 15 - <_> - 0 - - 17 18 3 1 - <_> - 0 - - 12 10 11 6 - <_> - 7 - - 5 11 21 46 - <_> - 8 - - 17 11 1 2 - <_> - 9 - - 13 16 4 4 - <_> - 9 - - 14 1 3 13 - <_> - 2 - - 6 25 1 37 - <_> - 8 - - 15 5 8 4 - <_> - 8 - - 14 9 4 13 - <_> - 1 - - 12 46 8 2 - <_> - 5 - - 16 22 13 2 - <_> - 7 - - 25 22 2 8 - <_> - 2 - - 7 51 13 5 - <_> - 2 - - 20 61 7 2 - <_> - 3 - - 8 19 11 22 - <_> - 1 - - 10 55 12 1 - <_> - 7 - - 14 0 7 17 - <_> - 9 - - 14 12 2 21 - <_> - 4 - - 8 61 16 2 - <_> - 8 - - 16 12 1 5 - <_> - 0 - - 19 32 6 7 - <_> - 1 - - 22 27 6 29 - <_> - 4 - - 21 24 7 27 - <_> - 0 - - 15 40 12 4 - <_> - 4 - - 2 49 1 3 - <_> - 3 - - 8 57 14 1 - <_> - 7 - - 2 35 3 4 - <_> - 2 - - 19 18 4 13 - <_> - 5 - - 13 11 18 15 - <_> - 5 - - 12 50 10 6 - <_> - 2 - - 12 20 7 7 - <_> - 7 - - 14 40 3 1 - <_> - 9 - - 14 41 2 2 - <_> - 2 - - 16 10 7 47 - <_> - 5 - - 26 61 3 2 - <_> - 1 - - 12 53 10 7 - <_> - 9 - - 21 62 2 1 - <_> - 1 - - 18 19 1 5 - <_> - 1 - - 26 10 5 19 - <_> - 5 - - 30 36 1 12 - <_> - 4 - - 13 38 2 4 - <_> - 3 - - 12 7 5 9 - <_> - 9 - - 17 36 4 2 - <_> - 7 - - 6 61 6 2 - <_> - 5 - - 17 40 2 9 - <_> - 8 - - 17 61 14 2 - <_> - 7 - - 12 24 6 5 - <_> - 8 - - 12 11 8 1 - <_> - 1 - - 13 8 3 11 - <_> - 1 - - 16 1 12 2 - <_> - 2 - - 19 0 4 42 - <_> - 5 - - 16 7 13 45 - <_> - 3 - - 21 45 1 10 - <_> - 3 - - 8 49 19 7 - <_> - 0 - - 12 33 5 2 - <_> - 4 - - 15 42 4 4 - <_> - 1 - - 10 52 7 4 - <_> - 1 - - 7 19 18 3 - <_> - 3 - - 7 7 6 32 - <_> - 4 - - 1 9 9 26 - <_> - 4 - - 12 5 9 15 - <_> - 1 - - 12 24 6 2 - <_> - 3 - - 10 2 11 41 - <_> - 5 - - 7 59 24 3 - <_> - 2 - - 11 36 15 9 - <_> - 0 - - 4 46 2 7 - <_> - 4 - - 28 11 3 7 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 16 11 7 3 - <_> - 8 - - 29 13 2 24 - <_> - 2 - - 7 55 21 3 - <_> - 9 - - 14 60 3 1 - <_> - 9 - - 21 61 4 1 - <_> - 8 - - 13 57 1 6 - <_> - 4 - - 8 43 14 10 - <_> - 5 - - 12 33 4 5 - <_> - 3 - - 3 7 12 22 - <_> - 1 - - 6 20 23 35 - <_> - 5 - - 14 17 6 8 - <_> - 5 - - 21 1 1 36 - <_> - 7 - - 21 17 6 6 - <_> - 5 - - 20 1 7 5 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 15 17 2 5 - <_> - 9 - - 15 17 2 5 - <_> - 1 - - 13 54 6 3 - <_> - 4 - - 9 4 14 43 - <_> - 1 - - 21 51 7 4 - <_> - 4 - - 10 58 20 1 - <_> - 2 - - 5 51 13 5 - <_> - 4 - - 15 36 2 2 - <_> - 5 - - 5 62 14 1 - <_> - 4 - - 1 46 14 3 - <_> - 1 - - 10 55 17 7 - <_> - 7 - - 24 45 4 4 - <_> - 9 - - 30 45 1 13 - <_> - 0 - - 11 52 17 4 - <_> - 3 - - 23 34 7 15 - <_> - 0 - - 17 33 9 11 - <_> - 4 - - 6 31 7 2 - <_> - 7 - - 16 11 1 1 - <_> - 5 - - 17 21 7 1 - <_> - 3 - - 6 8 9 39 - <_> - 1 - - 13 21 6 2 - <_> - 4 - - 13 7 5 4 - <_> - 2 - - 20 16 2 4 - <_> - 1 - - 16 54 2 4 - <_> - 5 - - 2 30 1 28 - <_> - 1 - - 4 62 25 1 - <_> - 5 - - 25 4 1 51 - <_> - 5 - - 19 10 10 38 - <_> - 5 - - 9 61 15 2 - <_> - 7 - - 0 50 9 2 - <_> - 4 - - 19 37 2 8 - <_> - 7 - - 17 32 2 3 - <_> - 9 - - 14 0 10 7 - <_> - 2 - - 29 33 1 8 - <_> - 9 - - 15 17 2 5 - <_> - 8 - - 13 14 4 3 - <_> - 9 - - 27 48 2 6 - <_> - 8 - - 16 53 1 2 - <_> - 2 - - 29 42 1 12 - <_> - 0 - - 2 54 16 9 - <_> - 9 - - 15 17 2 26 - <_> - 0 - - 12 50 14 5 - <_> - 3 - - 24 36 1 26 - <_> - 2 - - 2 33 27 1 - <_> - 1 - - 11 19 1 18 - <_> - 1 - - 16 7 4 26 - <_> - 5 - - 29 28 2 25 - <_> - 1 - - 16 18 7 3 - <_> - 1 - - 10 12 21 7 - <_> - 1 - - 16 55 9 2 - <_> - 2 - - 24 53 7 7 - <_> - 0 - - 21 21 1 14 - <_> - 5 - - 1 44 27 8 - <_> - 7 - - 19 8 5 8 - <_> - 7 - - 23 54 1 1 - <_> - 5 - - 14 9 9 4 - <_> - 5 - - 11 35 11 1 - <_> - 1 - - 11 53 10 4 - <_> - 9 - - 25 59 5 4 - <_> - 2 - - 4 59 21 1 - <_> - 1 - - 18 46 3 5 - <_> - 2 - - 8 24 3 9 - <_> - 3 - - 7 43 11 16 - <_> - 8 - - 26 41 1 4 - <_> - 4 - - 0 52 16 11 - <_> - 9 - - 19 20 1 2 - <_> - 2 - - 12 49 15 2 - <_> - 8 - - 11 20 5 6 - <_> - 3 - - 0 56 31 4 - <_> - 4 - - 18 39 1 2 - <_> - 4 - - 10 24 18 8 - <_> - 5 - - 13 9 8 6 - <_> - 1 - - 11 21 14 32 - <_> - 5 - - 11 0 7 10 - <_> - 7 - - 24 49 2 2 - <_> - 3 - - 15 25 3 7 - <_> - 3 - - 8 16 4 29 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 12 14 8 13 - <_> - 8 - - 15 17 2 1 - <_> - 1 - - 18 20 3 7 - <_> - 2 - - 17 3 4 15 - <_> - 1 - - 0 19 21 3 - <_> - 7 - - 0 62 18 1 - <_> - 8 - - 18 30 1 2 - <_> - 4 - - 13 44 7 7 - <_> - 5 - - 16 46 10 3 - <_> - 1 - - 11 8 13 1 - <_> - 2 - - 21 56 3 4 - <_> - 8 - - 2 53 23 4 - <_> - 8 - - 15 10 2 49 - <_> - 2 - - 2 46 7 3 - <_> - 3 - - 20 38 2 11 - <_> - 1 - - 9 56 16 1 - <_> - 5 - - 21 18 2 12 - <_> - 7 - - 7 52 16 8 - <_> - 0 - - 13 18 3 1 - <_> - 3 - - 27 59 1 4 - <_> - 0 - - 11 42 11 2 - <_> - 1 - - 13 37 2 6 - <_> - 4 - - 6 14 5 9 - <_> - 2 - - 11 11 8 3 - <_> - 2 - - 17 21 1 16 - <_> - 2 - - 18 3 1 10 - <_> - 1 - - 14 53 3 9 - <_> - 5 - - 22 58 8 3 - <_> - 1 - - 17 33 3 24 - <_> - 9 - - 19 38 1 14 - <_> - 2 - - 14 62 15 1 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 17 29 8 7 - <_> - 7 - - 26 4 3 17 - <_> - 3 - - 16 32 4 7 - <_> - 1 - - 14 7 2 11 - <_> - 4 - - 14 8 5 1 - <_> - 2 - - 20 17 2 46 - <_> - 0 - - 2 61 29 2 - <_> - 2 - - 6 50 11 4 - <_> - 5 - - 3 60 14 3 - <_> - 4 - - 0 20 13 6 - <_> - 4 - - 10 13 4 13 - <_> - 7 - - 8 49 2 1 - <_> - 1 - - 13 21 3 2 - <_> - 1 - - 5 0 1 46 - <_> - 7 - - 14 1 7 17 - <_> - 3 - - 28 42 3 15 - <_> - 9 - - 30 36 1 2 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 17 19 2 4 - <_> - 9 - - 16 8 1 6 - <_> - 2 - - 22 47 5 7 - <_> - 1 - - 3 55 22 2 - <_> - 1 - - 13 41 1 13 - <_> - 7 - - 0 44 3 13 - <_> - 2 - - 7 35 8 10 - <_> - 8 - - 1 10 26 1 - <_> - 5 - - 9 53 19 8 - <_> - 4 - - 13 44 1 4 - <_> - 4 - - 6 28 7 18 - <_> - 2 - - 13 41 12 3 - <_> - 1 - - 8 6 15 1 - <_> - 0 - - 12 10 11 6 - <_> - 9 - - 27 1 2 12 - <_> - 0 - - 13 33 1 8 - <_> - 1 - - 9 8 8 8 - <_> - 0 - - 0 48 3 7 - <_> - 8 - - 8 55 12 2 - <_> - 8 - - 4 7 26 38 - <_> - 3 - - 16 33 4 7 - <_> - 7 - - 3 51 21 8 - <_> - 2 - - 14 9 10 50 - <_> - 3 - - 1 46 22 4 - <_> - 9 - - 16 28 2 18 - <_> - 3 - - 9 28 3 29 - <_> - 4 - - 0 52 1 8 - <_> - 1 - - 15 53 7 4 - <_> - 1 - - 6 13 9 25 - <_> - 4 - - 8 56 21 4 - <_> - 7 - - 24 48 3 4 - <_> - 2 - - 16 5 9 3 - <_> - 5 - - 11 6 17 27 - <_> - 7 - - 23 4 7 3 - <_> - 4 - - 13 40 6 7 - <_> - 0 - - 11 40 2 22 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 16 29 3 4 - <_> - 9 - - 12 11 6 5 - <_> - 5 - - 18 14 13 7 - <_> - 7 - - 7 0 1 6 - <_> - 4 - - 7 1 10 36 - <_> - 1 - - 11 8 12 1 - <_> - 5 - - 3 53 22 7 - <_> - 1 - - 9 55 15 1 - <_> - 0 - - 13 35 8 16 - <_> - 2 - - 9 16 6 6 - <_> - 0 - - 25 42 5 7 - <_> - 2 - - 4 6 16 10 - <_> - 5 - - 5 34 26 17 - <_> - 4 - - 9 37 17 1 - <_> - 1 - - 18 23 3 1 - <_> - 1 - - 15 53 7 4 - <_> - 0 - - 10 17 4 13 - <_> - 4 - - 6 53 24 4 - <_> - 7 - - 22 51 9 3 - <_> - 0 - - 0 47 1 15 - <_> - 5 - - 11 56 12 1 - <_> - 2 - - 6 51 12 7 - <_> - 1 - - 3 42 6 8 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 13 12 9 15 - <_> - 8 - - 14 17 4 2 - <_> - 0 - - 13 33 1 8 - <_> - 3 - - 2 29 11 8 - <_> - 2 - - 12 5 8 9 - <_> - 1 - - 17 43 4 9 - <_> - 0 - - 6 58 7 1 - <_> - 4 - - 26 19 1 36 - <_> - 9 - - 17 3 12 3 - <_> - 7 - - 10 20 3 3 - <_> - 3 - - 5 10 12 17 - <_> - 9 - - 11 19 9 1 - <_> - 9 - - 0 27 11 9 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 13 44 7 8 - <_> - 0 - - 4 39 1 10 - <_> - 5 - - 10 58 13 5 - <_> - 0 - - 17 17 3 2 - <_> - 3 - - 8 38 17 7 - <_> - 0 - - 11 1 19 5 - <_> - 1 - - 13 5 6 12 - <_> - 3 - - 17 27 6 3 - <_> - 1 - - 6 6 20 1 - <_> - 5 - - 20 24 2 10 - <_> - 1 - - 7 21 21 1 - <_> - 3 - - 8 7 8 47 - <_> - 7 - - 26 62 1 1 - <_> - 8 - - 0 61 21 2 - <_> - 5 - - 16 20 13 5 - <_> - 4 - - 15 36 4 1 - <_> - 9 - - 15 34 8 4 - <_> - 0 - - 24 39 3 8 - <_> - 3 - - 10 4 1 53 - <_> - 7 - - 24 8 4 31 - <_> - 1 - - 18 29 4 6 - <_> - 1 - - 19 48 1 11 - <_> - 8 - - 7 36 8 6 - <_> - 2 - - 30 19 1 13 - <_> - 5 - - 21 19 2 20 - <_> - 2 - - 20 16 5 16 - <_> - 4 - - 9 8 18 9 - <_> - 5 - - 5 42 7 5 - <_> - 5 - - 14 40 12 10 - <_> - 5 - - 3 41 7 10 - <_> - 3 - - 7 59 24 1 - <_> - 1 - - 25 31 6 23 - <_> - 8 - - 2 1 14 7 - <_> - 8 - - 12 12 8 3 - <_> - 1 - - 15 53 7 4 - <_> - 8 - - 13 17 5 3 - <_> - 3 - - 7 50 11 6 - <_> - 0 - - 1 21 4 37 - <_> - 4 - - 12 39 8 10 - <_> - 0 - - 12 10 11 6 - <_> - 7 - - 8 8 22 20 - <_> - 2 - - 15 32 3 2 - <_> - 2 - - 14 42 7 2 - <_> - 2 - - 21 25 1 19 - <_> - 3 - - 0 16 6 38 - <_> - 2 - - 21 51 1 9 - <_> - 1 - - 21 45 1 17 - <_> - 9 - - 29 0 2 6 - <_> - 9 - - 8 34 11 10 - <_> - 3 - - 3 45 25 3 - <_> - 8 - - 13 14 4 3 - <_> - 1 - - 19 20 3 15 - <_> - 1 - - 3 11 17 6 - <_> - 4 - - 25 46 5 2 - <_> - 1 - - 13 18 7 7 - <_> - 0 - - 14 49 16 5 - <_> - 2 - - 11 12 12 2 - <_> - 7 - - 5 54 3 3 - <_> - 4 - - 1 47 18 3 - <_> - 2 - - 9 59 15 3 - <_> - 0 - - 19 29 4 24 - <_> - 3 - - 4 56 27 4 - <_> - 3 - - 20 34 1 11 - <_> - 0 - - 10 30 3 31 - <_> - 4 - - 22 23 6 28 - <_> - 3 - - 4 24 23 25 - <_> - 3 - - 6 22 10 5 - <_> - 4 - - 1 20 15 15 - <_> - 1 - - 28 13 2 24 - <_> - 1 - - 9 56 16 1 - <_> - 3 - - 13 21 3 10 - <_> - 7 - - 7 62 3 1 - <_> - 8 - - 14 12 3 4 - <_> - 7 - - 16 46 2 3 - <_> - 1 - - 2 49 9 12 - <_> - 3 - - 8 7 6 23 - <_> - 1 - - 22 0 2 29 - <_> - 5 - - 0 1 30 2 - <_> - 0 - - 14 41 1 18 - <_> - 5 - - 27 36 3 27 - <_> - 3 - - 15 45 12 18 - <_> - 3 - - 8 49 19 7 - <_> - 1 - - 9 28 5 7 - <_> - 4 - - 27 24 3 10 - <_> - 8 - - 9 62 7 1 - <_> - 8 - - 17 13 2 4 - <_> - 2 - - 22 42 1 13 - <_> - 9 - - 15 17 2 5 - <_> - 9 - - 26 9 1 17 - <_> - 9 - - 6 35 3 9 - <_> - 5 - - 4 62 7 1 - <_> - 7 - - 18 53 11 1 - <_> - 7 - - 10 61 1 1 - <_> - 1 - - 15 33 5 21 - <_> - 0 - - 20 23 5 22 - <_> - 2 - - 10 2 4 50 - <_> - 0 - - 13 25 5 7 - <_> - 2 - - 11 25 16 21 - <_> - 1 - - 14 11 8 9 - <_> - 7 - - 5 1 3 13 - <_> - 1 - - 6 43 3 18 - <_> - 2 - - 8 44 12 6 - <_> - 4 - - 9 18 5 8 - <_> - 9 - - 10 41 12 4 - <_> - 2 - - 20 17 2 14 - <_> - 8 - - 16 12 1 5 - <_> - 0 - - 0 48 3 7 - <_> - 3 - - 11 9 15 7 - <_> - 3 - - 4 53 19 6 - <_> - 5 - - 13 9 8 5 - <_> - 4 - - 28 39 2 3 - <_> - 4 - - 15 42 4 4 - <_> - 3 - - 7 38 11 14 - <_> - 8 - - 14 5 1 3 - <_> - 1 - - 13 21 6 2 - <_> - 7 - - 12 24 9 6 - <_> - 1 - - 11 53 10 4 - <_> - 9 - - 3 32 3 9 - <_> - 4 - - 21 58 9 5 - <_> - 2 - - 8 12 19 2 - <_> - 1 - - 15 53 3 9 - <_> - 3 - - 19 58 3 2 - <_> - 1 - - 17 43 4 9 - <_> - 2 - - 0 42 30 2 - <_> - 7 - - 9 0 8 12 - <_> - 5 - - 1 39 8 11 - <_> - 5 - - 21 2 1 52 - <_> - 3 - - 27 37 4 5 - <_> - 2 - - 19 54 8 7 - <_> - 4 - - 14 8 5 1 - <_> - 5 - - 26 38 4 12 - <_> - 1 - - 22 45 1 13 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 12 17 4 3 - <_> - 8 - - 9 7 5 1 - <_> - 0 - - 13 42 7 1 - <_> - 2 - - 14 18 7 15 - <_> - 4 - - 11 38 10 3 - <_> - 4 - - 10 8 14 4 - <_> - 5 - - 11 45 2 7 - <_> - 9 - - 13 2 12 4 - <_> - 9 - - 15 16 8 6 - <_> - 9 - - 11 8 7 6 - <_> - 2 - - 15 60 15 1 - <_> - 2 - - 7 50 13 2 - <_> - 1 - - 1 33 29 2 - <_> - 5 - - 12 33 4 5 - <_> - 1 - - 11 53 10 4 - <_> - 4 - - 18 3 3 50 - <_> - 2 - - 6 59 20 3 - <_> - 2 - - 17 12 9 24 - <_> - 0 - - 3 34 1 14 - <_> - 3 - - 26 34 3 18 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 16 11 7 3 - <_> - 8 - - 20 39 2 4 - <_> - 4 - - 10 18 16 5 - <_> - 1 - - 16 11 4 7 - <_> - 5 - - 13 61 15 2 - <_> - 8 - - 17 11 1 2 - <_> - 1 - - 18 17 2 9 - <_> - 4 - - 6 53 19 3 - <_> - 3 - - 8 13 8 7 - <_> - 0 - - 7 15 9 7 - <_> - 9 - - 15 26 4 9 - <_> - 3 - - 23 39 2 24 - <_> - 0 - - 13 36 13 2 - <_> - 5 - - 17 40 8 16 - <_> - 5 - - 15 3 11 1 - <_> - 5 - - 5 53 22 8 - <_> - 5 - - 9 25 2 11 - <_> - 2 - - 2 51 17 6 - <_> - 2 - - 13 53 4 3 - <_> - 5 - - 13 30 4 1 - <_> - 9 - - 27 55 1 5 - <_> - 5 - - 1 58 17 2 - <_> - 0 - - 7 44 13 6 - <_> - 5 - - 19 19 7 3 - <_> - 7 - - 26 18 1 4 - <_> - 7 - - 25 1 4 18 - <_> - 7 - - 22 53 6 2 - <_> - 5 - - 6 37 20 18 - <_> - 1 - - 12 62 12 1 - <_> - 1 - - 15 53 7 4 - <_> - 1 - - 26 61 1 2 - <_> - 1 - - 14 46 4 4 - <_> - 3 - - 8 42 6 15 - <_> - 0 - - 12 43 2 6 - <_> - 2 - - 17 19 1 8 - <_> - 0 - - 17 19 2 2 - <_> - 3 - - 5 22 10 4 - <_> - 2 - - 13 36 1 19 - <_> - 2 - - 11 35 14 4 - <_> - 4 - - 3 57 27 6 - <_> - 8 - - 6 52 24 2 - <_> - 5 - - 13 9 8 6 - <_> - 9 - - 15 20 3 16 - <_> - 0 - - 21 6 4 4 - <_> - 5 - - 11 56 12 1 - <_> - 8 - - 15 5 1 25 - <_> - 9 - - 30 1 1 2 - <_> - 5 - - 13 15 2 10 - <_> - 5 - - 4 10 19 20 - <_> - 7 - - 11 60 2 3 - <_> - 9 - - 16 18 2 1 - <_> - 9 - - 24 28 3 10 - <_> - 1 - - 12 24 6 2 - <_> - 1 - - 14 5 6 28 - <_> - 7 - - 14 36 1 3 - <_> - 1 - - 18 5 4 40 - <_> - 0 - - 12 50 16 6 - <_> - 1 - - 2 0 11 5 - <_> - 3 - - 21 45 1 10 - <_> - 2 - - 14 49 10 2 - <_> - 2 - - 4 32 2 8 - <_> - 8 - - 29 25 2 38 - <_> - 4 - - 1 13 19 8 - <_> - 3 - - 0 37 25 24 - <_> - 0 - - 9 11 20 3 - <_> - 4 - - 7 34 14 3 - <_> - 3 - - 28 56 1 5 - <_> - 4 - - 10 20 17 14 - <_> - 1 - - 8 55 18 1 - <_> - 8 - - 16 61 7 2 - <_> - 4 - - 16 48 13 10 - <_> - 8 - - 12 12 8 3 - <_> - 5 - - 17 18 9 12 - <_> - 9 - - 12 35 9 11 - <_> - 3 - - 3 19 8 23 - <_> - 4 - - 28 15 3 36 - <_> - 1 - - 26 6 2 18 - <_> - 0 - - 3 54 3 4 - <_> - 0 - - 13 50 3 7 - <_> - 7 - - 17 32 2 3 - <_> - 5 - - 8 56 17 4 - <_> - 4 - - 0 29 13 10 - <_> - 1 - - 13 14 13 3 - <_> - 3 - - 10 15 1 42 - <_> - 7 - - 30 13 1 6 - <_> - 2 - - 17 28 1 9 - <_> - 5 - - 20 12 4 28 - <_> - 0 - - 4 45 26 18 - <_> - 5 - - 15 0 11 13 - <_> - 1 - - 13 20 1 4 - <_> - 0 - - 16 8 7 54 - <_> - 3 - - 8 53 12 1 - <_> - 9 - - 15 57 2 5 - <_> - 8 - - 29 37 1 6 - <_> - 0 - - 12 0 1 12 - <_> - 8 - - 11 13 5 1 - <_> - 2 - - 7 35 3 2 - <_> - 8 - - 4 15 10 6 - <_> - 5 - - 19 56 7 5 - <_> - 1 - - 20 49 9 5 - <_> - 5 - - 16 48 15 8 - <_> - 1 - - 17 45 2 3 - <_> - 1 - - 1 10 15 2 - <_> - 8 - - 14 5 1 3 - <_> - 8 - - 3 23 28 14 - <_> - 4 - - 16 51 10 4 - <_> - 9 - - 18 40 1 7 - <_> - 4 - - 15 36 4 1 - <_> - 5 - - 15 46 13 8 - <_> - 4 - - 7 54 11 1 - <_> - 3 - - 2 55 18 5 - <_> - 2 - - 9 52 10 8 - <_> - 4 - - 13 30 5 7 - <_> - 8 - - 17 13 2 4 - <_> - 1 - - 17 16 1 5 - <_> - 8 - - 22 6 5 12 - <_> - 3 - - 15 13 12 27 - <_> - 2 - - 11 11 12 6 - <_> - 1 - - 10 62 16 1 - <_> - 4 - - 12 47 11 1 - <_> - 1 - - 25 12 5 15 - <_> - 0 - - 21 26 4 8 - <_> - 3 - - 13 21 3 10 - <_> - 2 - - 17 3 4 15 - <_> - 2 - - 15 37 3 10 - <_> - 7 - - 2 55 14 2 - <_> - 2 - - 12 37 3 4 - <_> - 7 - - 16 11 1 1 - <_> - 7 - - 2 56 21 3 - <_> - 1 - - 4 20 20 8 - <_> - 3 - - 8 27 6 28 - <_> - 2 - - 16 58 1 5 - <_> - 9 - - 11 19 9 1 - <_> - 1 - - 28 45 2 9 - <_> - 8 - - 17 11 1 2 - <_> - 0 - - 3 39 4 10 - <_> - 3 - - 15 10 11 7 - <_> - 1 - - 11 8 12 1 - <_> - 4 - - 2 38 18 24 - <_> - 1 - - 12 54 17 1 - <_> - 1 - - 14 56 14 1 - <_> - 7 - - 25 18 2 14 - <_> - 4 - - 25 0 3 6 - <_> - 0 - - 17 18 3 1 - <_> - 9 - - 1 8 25 3 - <_> - 4 - - 8 14 7 4 - <_> - 4 - - 18 32 2 26 - <_> - 2 - - 12 41 13 15 - <_> - 2 - - 5 24 11 2 - <_> - 9 - - 13 39 5 1 - <_> - 9 - - 1 36 13 3 - <_> - 2 - - 21 8 4 8 - <_> - 5 - - 16 5 9 17 - <_> - 5 - - 6 37 22 26 - <_> - 0 - - 27 49 2 1 - <_> - 3 - - 6 37 15 10 - <_> - 5 - - 19 38 1 5 - <_> - 9 - - 13 24 2 5 - <_> - 8 - - 14 9 4 13 - <_> - 2 - - 10 38 12 2 - <_> - 8 - - 8 3 3 12 - <_> - 3 - - 2 56 12 1 - <_> - 8 - - 14 12 3 4 - <_> - 2 - - 14 23 3 6 - <_> - 1 - - 10 37 5 1 - <_> - 1 - - 6 53 7 4 - <_> - 4 - - 7 39 11 12 - <_> - 3 - - 6 11 9 11 - <_> - 7 - - 18 2 2 10 - <_> - 4 - - 10 21 2 5 - <_> - 0 - - 29 31 1 1 - <_> - 1 - - 16 7 4 26 - <_> - 5 - - 23 48 7 12 - <_> - 1 - - 18 19 1 5 - <_> - 4 - - 19 24 12 21 - <_> - 4 - - 20 5 8 39 - <_> - 1 - - 7 14 17 4 - <_> - 5 - - 7 44 3 17 - <_> - 1 - - 14 52 5 6 - <_> - 7 - - 15 24 2 18 - <_> - 9 - - 14 18 3 9 - <_> - 9 - - 11 61 8 1 - <_> - 5 - - 11 15 5 3 - <_> - 5 - - 2 18 22 3 - <_> - 4 - - 8 60 7 3 - <_> - 2 - - 6 50 11 4 - <_> - 1 - - 13 55 18 3 - <_> - 2 - - 20 58 2 2 - <_> - 9 - - 30 39 1 3 - <_> - 5 - - 13 26 5 4 - <_> - 0 - - 19 15 3 20 - <_> - 0 - - 14 6 2 52 - <_> - 4 - - 11 36 10 5 - <_> - 4 - - 22 31 1 27 - <_> - 4 - - 13 7 5 4 - <_> - 1 - - 13 5 6 12 - <_> - 4 - - 9 12 3 20 - <_> - 5 - - 10 38 14 3 - <_> - 4 - - 13 41 10 22 - <_> - 4 - - 10 41 11 2 - <_> - 1 - - 14 54 6 8 - <_> - 4 - - 19 3 1 51 - <_> - 0 - - 14 28 5 5 - <_> - 0 - - 10 28 18 6 - <_> - 4 - - 0 6 21 52 - <_> - 3 - - 16 33 4 4 - <_> - 3 - - 10 15 1 42 - <_> - 3 - - 28 33 2 10 - <_> - 5 - - 0 47 13 2 - <_> - 8 - - 14 9 6 8 - <_> - 4 - - 10 52 13 3 - <_> - 8 - - 19 41 2 1 - <_> - 2 - - 9 49 20 1 - <_> - 0 - - 13 57 18 1 - <_> - 7 - - 4 51 20 7 - <_> - 4 - - 22 29 6 7 - <_> - 3 - - 8 59 15 4 - <_> - 2 - - 29 59 1 1 - <_> - 9 - - 27 6 4 3 - <_> - 0 - - 14 18 2 4 - <_> - 9 - - 18 2 1 37 - <_> - 2 - - 11 4 8 13 - <_> - 8 - - 25 62 5 1 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 3 62 28 1 - <_> - 0 - - 5 48 17 2 - <_> - 4 - - 15 39 6 14 - <_> - 5 - - 5 62 10 1 - <_> - 7 - - 5 52 26 2 - <_> - 3 - - 19 20 3 7 - <_> - 2 - - 15 14 2 6 - <_> - 5 - - 6 24 4 22 - <_> - 4 - - 12 45 6 6 - <_> - 1 - - 18 55 2 2 - <_> - 4 - - 9 4 14 43 - <_> - 3 - - 10 8 10 12 - <_> - 5 - - 21 1 1 36 - <_> - 7 - - 7 24 2 14 - <_> - 0 - - 13 35 8 16 - <_> - 3 - - 21 45 1 10 - <_> - 2 - - 12 33 7 23 - <_> - 0 - - 22 40 4 9 - <_> - 1 - - 18 20 3 7 - <_> - 1 - - 2 12 20 4 - <_> - 1 - - 7 20 11 3 - <_> - 8 - - 12 12 8 3 - <_> - 1 - - 2 1 27 2 - <_> - 8 - - 11 51 7 12 - <_> - 7 - - 13 12 10 1 - <_> - 9 - - 16 18 2 1 - <_> - 9 - - 30 4 1 1 - <_> - 0 - - 12 10 11 6 - <_> - 4 - - 1 40 28 20 - <_> - 7 - - 5 62 8 1 - <_> - 1 - - 14 53 3 9 - <_> - 5 - - 7 50 5 7 - <_> - 0 - - 16 17 4 5 - <_> - 2 - - 19 54 8 5 - <_> - 3 - - 6 22 10 5 - <_> - 9 - - 10 38 2 9 - <_> - 0 - - 13 25 5 7 - <_> - 0 - - 16 24 11 19 - <_> - 7 - - 30 43 1 7 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 16 42 1 11 - <_> - 1 - - 27 37 4 23 - <_> - 3 - - 10 15 1 42 - <_> - 4 - - 11 22 1 10 - <_> - 1 - - 14 6 5 8 - <_> - 0 - - 1 48 3 1 - <_> - 0 - - 16 50 12 2 - <_> - 1 - - 3 45 5 5 - <_> - 8 - - 29 36 1 20 - <_> - 7 - - 3 26 21 19 - <_> - 8 - - 30 22 1 6 - <_> - 4 - - 12 42 8 8 - <_> - 5 - - 19 5 4 46 - <_> - 5 - - 23 36 4 20 - <_> - 1 - - 15 52 2 5 - <_> - 4 - - 9 29 11 7 - <_> - 0 - - 27 35 1 1 - <_> - 0 - - 13 33 1 8 - <_> - 3 - - 10 38 7 3 - <_> - 3 - - 23 45 4 4 - <_> - 2 - - 17 37 2 17 - <_> - 7 - - 16 11 1 1 - <_> - 3 - - 18 0 8 36 - <_> - 1 - - 26 8 5 20 - <_> - 4 - - 10 59 13 1 - <_> - 4 - - 24 7 6 14 - <_> - 4 - - 13 8 10 5 - <_> - 2 - - 0 42 2 10 - <_> - 7 - - 2 12 18 1 - <_> - 1 - - 9 56 8 1 - <_> - 1 - - 18 17 2 9 - <_> - 8 - - 14 9 4 13 - <_> - 2 - - 17 13 6 14 - <_> - 0 - - 10 35 1 23 - <_> - 2 - - 24 10 3 21 - <_> - 3 - - 6 19 5 34 - <_> - 1 - - 7 45 1 4 - <_> - 2 - - 16 19 2 6 - <_> - 3 - - 24 14 2 30 - <_> - 9 - - 12 61 16 1 - <_> - 5 - - 23 27 4 10 - <_> - 5 - - 4 62 7 1 - <_> - 3 - - 3 49 10 6 - <_> - 9 - - 17 32 1 5 - <_> - 9 - - 30 4 1 1 - <_> - 3 - - 27 18 1 4 - <_> - 4 - - 12 1 11 46 - <_> - 1 - - 11 8 13 1 - <_> - 1 - - 0 9 16 1 - <_> - 2 - - 9 22 16 24 - <_> - 3 - - 16 32 4 7 - <_> - 0 - - 17 25 8 21 - <_> - 0 - - 3 55 22 6 - <_> - 3 - - 17 1 1 6 - <_> - 5 - - 13 9 8 5 - <_> - 9 - - 19 28 1 18 - <_> - 1 - - 11 55 2 7 - <_> - 1 - - 13 13 12 5 - <_> - 4 - - 8 60 7 3 - <_> - 0 - - 11 38 4 12 - <_> - 4 - - 12 34 6 15 - <_> - 5 - - 8 40 4 22 - <_> - 1 - - 22 45 1 13 - <_> - 5 - - 3 33 10 19 - <_> - 0 - - 29 45 2 7 - <_> - 0 - - 17 51 7 5 - <_> - 3 - - 15 53 2 1 - <_> - 4 - - 5 59 3 4 - <_> - 8 - - 17 13 2 4 - <_> - 1 - - 2 1 27 2 - <_> - 8 - - 10 42 14 13 - <_> - 1 - - 10 4 7 14 - <_> - 4 - - 11 25 11 10 - <_> - 9 - - 11 19 9 1 - <_> - 9 - - 12 1 13 12 - <_> - 1 - - 11 19 1 4 - <_> - 9 - - 14 7 5 12 - <_> - 8 - - 10 23 2 5 - <_> - 5 - - 16 23 1 10 - <_> - 2 - - 8 62 20 1 - <_> - 4 - - 9 16 16 3 - <_> - 7 - - 29 27 1 11 - <_> - 7 - - 3 60 28 3 - <_> - 4 - - 15 44 2 2 - <_> - 5 - - 16 62 1 1 - <_> - 8 - - 17 21 1 4 - <_> - 0 - - 18 33 9 11 - <_> - 3 - - 17 35 3 5 - <_> - 2 - - 10 51 8 5 - <_> - 3 - - 28 40 3 7 - <_> - 7 - - 21 42 1 18 - <_> - 9 - - 16 18 2 1 - <_> - 2 - - 20 15 1 8 - <_> - 4 - - 14 8 5 1 - <_> - 5 - - 14 0 12 17 - <_> - 4 - - 9 18 5 8 - <_> - 8 - - 12 9 6 12 - <_> - 9 - - 26 32 1 7 - <_> - 8 - - 0 14 1 8 - <_> - 7 - - 4 1 14 16 - <_> - 2 - - 11 62 10 1 - <_> - 3 - - 2 18 12 10 - <_> - 7 - - 29 22 2 2 - <_> - 3 - - 13 15 13 15 - <_> - 9 - - 12 38 5 1 - <_> - 2 - - 8 35 6 11 - <_> - 7 - - 6 36 14 2 - <_> - 4 - - 13 36 3 4 - <_> - 0 - - 7 19 22 6 - <_> - 2 - - 15 41 4 15 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 12 24 8 1 - <_> - 0 - - 6 55 6 1 - <_> - 8 - - 13 17 5 3 - <_> - 8 - - 12 12 8 3 - <_> - 2 - - 24 44 3 7 - <_> - 0 - - 2 39 16 2 - <_> - 1 - - 15 54 1 3 - <_> - 9 - - 17 17 1 14 - <_> - 8 - - 13 56 1 1 - <_> - 1 - - 11 19 11 1 - <_> - 3 - - 30 3 1 43 - <_> - 7 - - 15 57 12 1 - <_> - 2 - - 29 32 2 26 - <_> - 7 - - 16 38 2 4 - <_> - 0 - - 21 25 1 16 - <_> - 0 - - 4 46 2 7 - <_> - 7 - - 26 13 5 4 - <_> - 3 - - 0 48 17 9 - <_> - 1 - - 12 32 5 20 - <_> - 2 - - 10 57 10 4 - <_> - 7 - - 24 49 2 2 - <_> - 3 - - 15 25 4 8 - <_> - 0 - - 11 11 9 6 - <_> - 4 - - 18 18 1 33 - <_> - 3 - - 10 0 5 29 - <_> - 2 - - 18 13 7 9 - <_> - 4 - - 2 59 13 4 - <_> - 1 - - 15 53 7 4 - <_> - 2 - - 11 49 16 2 - <_> - 3 - - 4 56 15 3 - <_> - 4 - - 19 21 6 38 - <_> - 1 - - 6 53 7 4 - <_> - 5 - - 14 19 1 9 - <_> - 2 - - 13 22 11 17 - <_> - 1 - - 14 7 3 12 - <_> - 1 - - 13 20 1 4 - <_> - 4 - - 5 19 4 14 - <_> - 4 - - 9 35 3 8 - <_> - 8 - - 16 12 1 5 - <_> - 9 - - 29 62 2 1 - <_> - 8 - - 18 51 1 5 - <_> - 2 - - 13 58 13 1 - <_> - 2 - - 6 50 16 3 - <_> - 7 - - 15 27 5 2 - <_> - 5 - - 0 43 11 13 - <_> - 2 - - 7 29 3 16 - <_> - 3 - - 11 42 7 6 - <_> - 4 - - 18 39 1 2 - <_> - 2 - - 21 55 10 2 - <_> - 0 - - 27 37 4 2 - <_> - 0 - - 13 37 15 7 - <_> - 1 - - 1 28 26 18 - <_> - 0 - - 12 38 1 6 - <_> - 5 - - 14 9 9 4 - <_> - 7 - - 18 8 7 2 - <_> - 2 - - 18 6 13 1 - <_> - 7 - - 8 59 23 2 - <_> - 5 - - 1 57 29 5 - <_> - 8 - - 6 20 23 7 - <_> - 1 - - 12 53 4 10 - <_> - 0 - - 13 14 2 12 - <_> - 8 - - 10 62 7 1 - <_> - 9 - - 30 33 1 3 - <_> - 7 - - 15 12 2 5 - <_> - 9 - - 17 14 2 38 - <_> - 5 - - 20 17 1 25 - <_> - 1 - - 11 0 5 1 - <_> - 0 - - 19 37 5 23 - <_> - 7 - - 2 5 1 27 - <_> - 2 - - 22 48 1 9 - <_> - 5 - - 18 25 2 13 - <_> - 3 - - 8 11 6 20 - <_> - 1 - - 0 29 27 1 - <_> - 3 - - 15 21 2 9 - <_> - 2 - - 16 37 13 18 - <_> - 0 - - 2 38 3 21 - <_> - 5 - - 14 31 3 21 - <_> - 4 - - 10 8 7 16 - <_> - 1 - - 7 29 21 12 - <_> - 1 - - 25 47 4 14 - - diff --git a/modules/imgproc/src/smooth.cpp b/modules/imgproc/src/smooth.cpp index 7f2e31bdc4..499721edaa 100644 --- a/modules/imgproc/src/smooth.cpp +++ b/modules/imgproc/src/smooth.cpp @@ -2172,18 +2172,21 @@ void cv::medianBlur( InputArray _src0, OutputArray _dst, int ksize ) } \ while ((void)0, 0) - Ipp32s bufSize; - IppiSize dstRoiSize = ippiSize(dst.cols, dst.rows), maskSize = ippiSize(ksize, ksize); - - int type = src0.type(); - if (type == CV_8UC1) - IPP_FILTER_MEDIAN_BORDER(Ipp8u, ipp8u, 8u_C1R); - else if (type == CV_16UC1) - IPP_FILTER_MEDIAN_BORDER(Ipp16u, ipp16u, 16u_C1R); - else if (type == CV_16SC1) - IPP_FILTER_MEDIAN_BORDER(Ipp16s, ipp16s, 16s_C1R); - else if (type == CV_32FC1) - IPP_FILTER_MEDIAN_BORDER(Ipp32f, ipp32f, 32f_C1R); + if( ksize <= 5 ) + { + Ipp32s bufSize; + IppiSize dstRoiSize = ippiSize(dst.cols, dst.rows), maskSize = ippiSize(ksize, ksize); + + int type = src0.type(); + if (type == CV_8UC1) + IPP_FILTER_MEDIAN_BORDER(Ipp8u, ipp8u, 8u_C1R); + else if (type == CV_16UC1) + IPP_FILTER_MEDIAN_BORDER(Ipp16u, ipp16u, 16u_C1R); + else if (type == CV_16SC1) + IPP_FILTER_MEDIAN_BORDER(Ipp16s, ipp16s, 16s_C1R); + else if (type == CV_32FC1) + IPP_FILTER_MEDIAN_BORDER(Ipp32f, ipp32f, 32f_C1R); + } #undef IPP_FILTER_MEDIAN_BORDER #endif diff --git a/modules/matlab/CMakeLists.txt b/modules/matlab/CMakeLists.txt deleted file mode 100644 index 45e3197c43..0000000000 --- a/modules/matlab/CMakeLists.txt +++ /dev/null @@ -1,312 +0,0 @@ -# ---------------------------------------------------------------------------- -# CMake file for Matlab/Octave support -# -# Matlab code generation and compilation is broken down into two distinct -# stages: configure time and build time. The idea is that we want to give -# the user reasonable guarantees that once they type 'make', wrapper -# generation is unlikely to fail. Therefore we run a series of tests at -# configure time to check the working status of the core components. -# -# Configure Time -# During configure time, the script attempts to ascertain whether the -# generator and mex compiler are working for a given architecture. -# Currently this involves: -# 1) Generating a simple CV_EXPORTS_W symbol and checking whether a file -# of the symbol name is generated -# 2) Compiling a simple mex gateway to check that Bridge.hpp and mex.h -# can be found, and that a file with the mexext is produced -# -# Build Time -# If the configure time tests pass, then we assume Matlab wrapper generation -# will not fail during build time. We simply glob all of the symbols in -# the OpenCV module headers, generate intermediate .cpp files, then compile -# them with mex. -# ---------------------------------------------------------------------------- - -# PREPEND -# Given a list of strings IN and a TOKEN, prepend the token to each string -# and append to OUT. This is used for passing command line "-I", "-L" and "-l" -# arguments to mex. e.g. -# prepend("-I" OUT /path/to/include/dir) --> -I/path/to/include/dir -macro(PREPEND TOKEN OUT IN) - foreach(VAR ${IN} ${ARGN}) - list(APPEND ${OUT} "${TOKEN}${VAR}") - endforeach() -endmacro() - - -# WARN_MIXED_PRECISION -# Formats a warning message if the compiler and Matlab bitness is different -macro(WARN_MIXED_PRECISION COMPILER_BITNESS MATLAB_BITNESS) - set(MSG "Your compiler is ${COMPILER_BITNESS}-bit") - set(MSG "${MSG} but your version of Matlab is ${MATLAB_BITNESS}-bit.") - set(MSG "${MSG} To build Matlab bindings, please switch to a ${MATLAB_BITNESS}-bit compiler.") - message(WARNING ${MSG}) -endmacro() - -# ---------------------------------------------------------------------------- -# Architecture checks -# ---------------------------------------------------------------------------- -# make sure we're on a supported architecture with Matlab and python installed -if (IOS OR ANDROID OR NOT MATLAB_FOUND) - ocv_module_disable(matlab) - return() -elseif (NOT PYTHON_DEFAULT_AVAILABLE) - message(WARNING "A required dependency of the matlab module (PythonLibs) was not found. Disabling Matlab bindings...") - ocv_module_disable(matlab) - return() -endif() - - -# If the user built OpenCV as X-bit, but they have a Y-bit version of Matlab, -# attempting to link to OpenCV during binding generation will fail, since -# mixed precision pointers are not allowed. Disable the bindings. -math(EXPR ARCH "${CMAKE_SIZEOF_VOID_P} * 8") -if (${ARCH} EQUAL 32 AND ${MATLAB_ARCH} MATCHES "64") - warn_mixed_precision("32" "64") - ocv_module_disable(matlab) - return() -elseif (${ARCH} EQUAL 64 AND NOT ${MATLAB_ARCH} MATCHES "64") - warn_mixed_precision("64" "32") - ocv_module_disable(matlab) - return() -endif() - -# If it's MSVC, warn the user that bindings will only be built in Release mode. -# Debug mode seems to cause issues... -if (MSVC) - message(STATUS "Warning: Matlab bindings will only be built in Release configurations") -endif() - - -# ---------------------------------------------------------------------------- -# Configure time components -# ---------------------------------------------------------------------------- -set(the_description "The Matlab/Octave bindings") -ocv_add_module(matlab BINDINGS - OPTIONAL opencv_core - opencv_imgproc opencv_ml - opencv_imgcodecs opencv_videoio opencv_highgui - opencv_objdetect opencv_flann opencv_features2d - opencv_photo opencv_video opencv_videostab - opencv_calib opencv_calib3d - opencv_stitching opencv_superres - opencv_nonfree -) - -# get the commit information -execute_process(COMMAND git log -1 --pretty=%H OUTPUT_VARIABLE GIT_COMMIT ERROR_QUIET) -string(REGEX REPLACE "(\r?\n)+$" "" GIT_COMMIT "${GIT_COMMIT}") - -# set the path to the C++ header and doc parser, and template engine -set(JINJA2_PATH ${CMAKE_SOURCE_DIR}/3rdparty) -set(HDR_PARSER_PATH ${CMAKE_SOURCE_DIR}/modules/python/src2) -set(RST_PARSER_PATH ${CMAKE_SOURCE_DIR}/modules/java/generator) - -# set mex compiler options -prepend("-I" MEX_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include) -if (MSVC) - prepend("-L" MEX_LIB_DIR ${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}) -else() - prepend("-L" MEX_LIB_DIR ${LIBRARY_OUTPUT_PATH}) -endif() -set(MEX_OPTS "-largeArrayDims") - -if (BUILD_TESTS) - add_subdirectory(test) -endif() -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) - - -# intersection of available modules and optional dependencies -# 1. populate the command-line include directories (-I/path/to/module/header, ...) -# 2. populate the command-line link libraries (-lopencv_core, ...) for Debug and Release -set(MATLAB_DEPS ${OPENCV_MODULE_${the_module}_REQ_DEPS} ${OPENCV_MODULE_${the_module}_OPT_DEPS}) -foreach(opencv_module ${MATLAB_DEPS}) - if (HAVE_${opencv_module}) - string(REPLACE "opencv_" "" module ${opencv_module}) - list(APPEND opencv_modules ${module}) - list(APPEND ${the_module}_ACTUAL_DEPS ${opencv_module}) - prepend("-I" MEX_INCLUDE_DIRS "${OPENCV_MODULE_${opencv_module}_LOCATION}/include") - prepend("-l" MEX_LIBS ${opencv_module}${OPENCV_DLLVERSION}) - prepend("-l" MEX_DEBUG_LIBS ${opencv_module}${OPENCV_DLLVERSION}${OPENCV_DEBUG_POSTFIX}) - endif() -endforeach() - -# add extra headers by hand -list(APPEND opencv_extra_hdrs "core=${OPENCV_MODULE_opencv_core_LOCATION}/include/opencv2/core/base.hpp") -list(APPEND opencv_extra_hdrs "video=${OPENCV_MODULE_opencv_video_LOCATION}/include/opencv2/video/tracking.hpp") - -# pass the OPENCV_CXX_EXTRA_FLAGS through to the mex compiler -# remove the visibility modifiers, so the mex gateway is visible -# TODO: get mex working without warnings -string(REGEX REPLACE "[^\ ]*visibility[^\ ]*" "" MEX_CXXFLAGS "${OPENCV_EXTRA_FLAGS} ${OPENCV_EXTRA_CXX_FLAGS}") - -# Configure checks -# Check to see whether the generator and the mex compiler are working. -# The checks currently test: -# - whether the python generator can be found -# - whether the python generator correctly outputs a file for a definition -# - whether the mex compiler can find the required headers -# - whether the mex compiler can compile a trivial definition -if (NOT MEX_WORKS) - # attempt to generate a gateway for a function - message(STATUS "Trying to generate Matlab code") - execute_process( - COMMAND ${PYTHON_DEFAULT_EXECUTABLE} - ${CMAKE_CURRENT_SOURCE_DIR}/generator/gen_matlab.py - --jinja2 ${JINJA2_PATH} - --hdrparser ${HDR_PARSER_PATH} - --rstparser ${RST_PARSER_PATH} - --extra "test=${CMAKE_CURRENT_SOURCE_DIR}/test/test_generator.hpp" - --outdir ${CMAKE_BINARY_DIR}/junk - ERROR_VARIABLE GEN_ERROR - OUTPUT_QUIET - ) - - if (GEN_ERROR) - message(${GEN_ERROR}) - message(STATUS "Error generating Matlab code. Disabling Matlab bindings...") - ocv_module_disable(matlab) - return() - else() - message(STATUS "Trying to generate Matlab code - OK") - endif() - - # attempt to compile a gateway using mex - message(STATUS "Trying to compile mex file") - execute_process( - COMMAND ${MATLAB_MEX_SCRIPT} ${MEX_OPTS} "CXXFLAGS=\$CXXFLAGS ${MEX_CXX_FLAGS}" - ${MEX_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/test/test_compiler.cpp - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/junk - ERROR_VARIABLE MEX_ERROR - OUTPUT_QUIET - ) - - if (MEX_ERROR) - message(${MEX_ERROR}) - message(STATUS "Error compiling mex file. Disabling Matlab bindings...") - ocv_module_disable(matlab) - return() - else() - message(STATUS "Trying to compile mex file - OK") - endif() -endif() - -# if we make it here, mex works! -set(MEX_WORKS True CACHE BOOL ADVANCED) - - -# ---------------------------------------------------------------------------- -# Build time components -# ---------------------------------------------------------------------------- - -# proxies -# these proxies are used to trigger the add_custom_commands -# (which do the real work) only when they're outdated -set(GENERATE_PROXY ${CMAKE_CURRENT_BINARY_DIR}/generate.proxy) -set(COMPILE_PROXY ${CMAKE_CURRENT_BINARY_DIR}/compile.proxy) -# TODO: Remove following line before merging with master -file(REMOVE ${GENERATE_PROXY} ${COMPILE_PROXY}) - -# generate -# call the python executable to generate the Matlab gateways -add_custom_command( - OUTPUT ${GENERATE_PROXY} - COMMAND ${PYTHON_DEFAULT_EXECUTABLE} - ${CMAKE_CURRENT_SOURCE_DIR}/generator/gen_matlab.py - --jinja2 ${JINJA2_PATH} - --hdrparser ${HDR_PARSER_PATH} - --rstparser ${RST_PARSER_PATH} - --moduleroot ${CMAKE_SOURCE_DIR}/modules - --modules ${opencv_modules} - --extra ${opencv_extra_hdrs} - --outdir ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${PYTHON_DEFAULT_EXECUTABLE} - ${CMAKE_CURRENT_SOURCE_DIR}/generator/build_info.py - --jinja2 ${JINJA2_PATH} - --os ${CMAKE_SYSTEM} - --arch ${ARCH} ${CMAKE_SYSTEM_PROCESSOR} - --compiler ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION} - --mex_arch ${MATLAB_ARCH} - --mex_script ${MATLAB_MEX_SCRIPT} - --cxx_flags ${MEX_CXXFLAGS} - --opencv_version ${OPENCV_VERSION} - --commit ${GIT_COMMIT} - --modules ${opencv_modules} - --configuration $ - --outdir ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${PYTHON_DEFAULT_EXECUTABLE} - ${CMAKE_CURRENT_SOURCE_DIR}/generator/cvmex.py - --jinja2 ${JINJA2_PATH} - --opts="${MEX_OPTS}" - --include_dirs="${MEX_INCLUDE_DIRS}" - --lib_dir="${MEX_LIB_DIR}" - --libs="${MEX_LIBS}" - --flags ${MEX_CXXFLAGS} - --outdir ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/test/help.m ${CMAKE_CURRENT_BINARY_DIR}/+cv - COMMAND ${CMAKE_COMMAND} -E touch ${GENERATE_PROXY} - COMMENT "Generating Matlab source files" -) - -# compile -# call the mex compiler to compile the gateways -# because we don't know the source files at configure-time, this -# has to be executed in a separate script in cmake's script processing mode -add_custom_command( - OUTPUT ${COMPILE_PROXY} - COMMAND ${CMAKE_COMMAND} -DMATLAB_MEX_SCRIPT=${MATLAB_MEX_SCRIPT} - -DMATLAB_MEXEXT=${MATLAB_MEXEXT} - -DMEX_OPTS=${MEX_OPTS} - -DMEX_CXXFLAGS=${MEX_CXX_FLAGS} - -DMEX_INCLUDE_DIRS="${MEX_INCLUDE_DIRS}" - -DMEX_LIB_DIR="${MEX_LIB_DIR}" - -DCONFIGURATION="$" - -DMEX_LIBS="${MEX_LIBS}" - -DMEX_DEBUG_LIBS="${MEX_DEBUG_LIBS}" - -P ${CMAKE_CURRENT_SOURCE_DIR}/compile.cmake - COMMAND ${CMAKE_COMMAND} -E touch ${COMPILE_PROXY} - COMMENT "Compiling Matlab source files. This could take a while..." -) - -# targets -# opencv_matlab_sources --> opencv_matlab -add_custom_target(${the_module}_sources ALL DEPENDS ${GENERATE_PROXY}) -add_custom_target(${the_module} ALL DEPENDS ${COMPILE_PROXY}) -add_dependencies(${the_module} ${the_module}_sources ${${the_module}_ACTUAL_DEPS}) - -if (ENABLE_SOLUTION_FOLDERS) - set_target_properties(${the_module} PROPERTIES FOLDER "modules") -endif() - - -# ---------------------------------------------------------------------------- -# Install time components -# ---------------------------------------------------------------------------- -# NOTE: Trailing slashes on the DIRECTORY paths are important! -# TODO: What needs to be done with rpath???? - -# install the +cv directory verbatim -install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}) -install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/+cv/ DESTINATION matlab/+cv) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/cv.m DESTINATION matlab) - -# update the custom mex compiler to point to the install locations -string(REPLACE ";" "\\ " MEX_OPTS "${MEX_OPTS}") -string(REPLACE ";" "\\ " MEX_LIBS "${MEX_LIBS}") -string(REPLACE " " "\\ " MEX_CXXFLAGS ${MEX_CXXFLAGS}) -string(REPLACE ";" "\\ " MEX_INCLUDE_DIRS "${MEX_INCLUDE_DIRS}") -install(CODE - "execute_process( - COMMAND ${PYTHON_DEFAULT_EXECUTABLE} - ${CMAKE_CURRENT_SOURCE_DIR}/generator/cvmex.py - --jinja2 ${JINJA2_PATH} - --opts=${MEX_OPTS} - --include_dirs=-I${CMAKE_INSTALL_PREFIX}/${OPENCV_INCLUDE_INSTALL_PATH} - --lib_dir=-L${CMAKE_INSTALL_PREFIX}/${OPENCV_LIB_INSTALL_PATH} - --libs=${MEX_LIBS} - --flags=${MEX_CXXFLAGS} - --outdir ${CMAKE_INSTALL_PREFIX}/matlab - )" -) diff --git a/modules/matlab/LICENSE b/modules/matlab/LICENSE deleted file mode 100644 index 391cbd37cb..0000000000 --- a/modules/matlab/LICENSE +++ /dev/null @@ -1,42 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this -// license. If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2013, OpenCV Foundation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote -// products derived from this software without specific prior written -// permission. -// -// This software is provided by the copyright holders and contributors "as is" -// and any express or implied warranties, including, but not limited to, the -// implied warranties of merchantability and fitness for a particular purpose -// are disclaimed. In no event shall the Intel Corporation or contributors be -// liable for any direct, indirect, incidental, special, exemplary, or -// consequential damages (including, but not limited to, procurement of -// substitute goods or services; loss of use, data, or profits; or business -// interruption) however caused and on any theory of liability, whether in -// contract, strict liability, or tort (including negligence or otherwise) -// arising in any way out of the use of this software, even if advised of the -// possibility of such damage. -// -//////////////////////////////////////////////////////////////////////////////// diff --git a/modules/matlab/README.md b/modules/matlab/README.md deleted file mode 100644 index 42237eccf8..0000000000 --- a/modules/matlab/README.md +++ /dev/null @@ -1,394 +0,0 @@ -OpenCV Matlab Code Generator -============================ -This module contains a code generator to automatically produce Matlab mex wrappers for other modules within the OpenCV library. Once compiled and added to the Matlab path, this gives users the ability to call OpenCV methods natively from within Matlab. - - -Build ------ -The Matlab code generator is fully integrated into the OpenCV build system. If cmake finds a Matlab installation available on the host system while configuring OpenCV, it will attempt to generate Matlab wrappers for all OpenCV modules. If cmake is having trouble finding your Matlab installation, you can explicitly point it to the root by defining the `MATLAB_ROOT_DIR` variable. For example, on a Mac you could type: - - cmake -DMATLAB_ROOT_DIR=/Applications/MATLAB_R2013a.app .. - - -Install -------- -In order to use the bindings, you will need to add them to the Matlab path. The path to add is: - -1. `${CMAKE_BUILD_DIR}/modules/matlab` if you are working from the build tree, or -2. `${CMAKE_INSTALL_PREFIX}/matlab` if you have installed OpenCV - -In Matlab, simply run: - - addpath('/path/to/opencv/matlab/'); - - -Run ---- -Once you've added the bindings directory to the Matlab path, you can start using them straight away! OpenCV calls need to be prefixed with a 'cv' qualifier, to disambiguate them from Matlab methods of the same name. For example, to compute the dft of a matrix, you might do the following: - -```matlab -% load an image (Matlab) -I = imread('cameraman.tif'); - -% compute the DFT (OpenCV) -If = cv.dft(I, cv.DFT_COMPLEX_OUTPUT); -``` - -As you can see, both OpenCV methods and constants can be used with 'cv' qualification. You can also call: - - help cv.dft - -to get help on the purpose and call signature of a particular method, or - - help cv - -to get general help regarding the OpenCV bindings. If you ever run into issues with the bindings - - cv.buildInformation(); - -will produce a printout of diagnostic information pertaining to your particular build of OS, OpenCV and Matlab. It is useful to submit this information alongside a bug report to the OpenCV team. - -Writing your own mex files --------------------------- -The Matlab bindings come with a set of utilities to help you quickly write your own mex files using OpenCV definitions. By doing so, you have all the speed and freedom of C++, with the power of OpenCV's math expressions and optimizations. - -The first thing you need to learn how to do is write a mex-file with Matlab constructs. Following is a brief example: - -```cpp -// include useful constructs -// this automatically includes opencv core.hpp and mex.h) -#include -using namespace cv; -using namespace matlab; -using namespace bridge; - -// define the mex gateway -void mexFunction(int nlhs, mxArray* plhs[], - int nrhs, const mxArray* prhs[]) { - - // claim the inputs into scoped management - MxArrayVector raw(prhs, prhs+nrhs); - - // add an argument parser to automatically handle basic options - ArgumentParser parser("my function"); - parser.addVariant(1, 1, "opt"); - MxArrayVector reordered = parser.parse(raw); - - // if we get here, we know the inputs are valid and reordered. Unpack... - BridgeVector inputs(reordered.begin(), reordered.end()); - Mat required = inputs[0].toMat(); - string optional = inputs[1].empty() ? "Default string" : inputs[1].toString(); - - try { - // Do stuff... - } catch(Exception& e) { - error(e.what()); - } catch(...) { - error("Uncaught exception occurred"); - } - - // allocate an output - Bridge out = required; - plhs[0] = out.toMxArray().releaseOwnership(); -} -``` - -There are a couple of important things going on in this example. Firstly, you need to include `` to enable the bridging capabilities. Once you've done this, you get some nice utilities for free. `MxArray` is a class that wraps Matlab's `mxArray*` class in an OOP-style interface. `ArgumentParser` is a class that handles default, optional and named arguments for you, along with multiple possible calling syntaxes. Finally, `Bridge` is a class that allows bidirectional conversions between OpenCV/std and Matlab types. - -Once you have written your file, it can be compiled with the provided mex utility: - - cv.mex('my_function.cpp'); - -This utility automatically links in all of the necessary OpenCV libraries to make your function work. - -NOTE: OpenCV uses exceptions throughout the codebase. It is a **very** good idea to wrap your code in exception handlers to avoid crashing Matlab in the event of an exception being thrown. - ------------------------------------------------------------------- - - -Developer -========= -The following sections contain information for developers seeking to use, understand or extend the Matlab bindings. The bindings are generated in python using a powerful templating engine called Jinja2. Because Matlab mex gateways have a common structure, they are well suited to templatization. There are separate templates for formatting C++ classes, Matlab classes, C++ functions, constants (enums) and documentation. - -The task of the generator is two-fold: - -1. To parse the OpenCV headers and build a semantic tree that can be fed to the template engine -2. To define type conversions between C++/OpenCV and Matlab types - -Once a source file has been generated for each OpenCV definition, and type conversions have been established, the mex compiler is invoked to produce the mex gateway (shared object) and link in the OpenCV libraries. - - -File layout ------------ -opencv/modules/matlab (this module) - -* `CMakeLists.txt` (main cmake configuration file) -* `README.md` (this file) -* `compile.cmake` (the cmake script for compiling generated source code) -* `generator` (the folder containing generator code) - * `filters.py` (template filters) - * `gen_matlab.py` (the binding generator control script) - * `parse_tree.py` (python class to refactor the hdr_parser.py output) - * `templates` (the raw templates for populating classes, constants, functions and docs) -* `include` (C++ headers for the bindings) - * `mxarray.hpp` (C++ OOP-style interface for Matlab mxArray* class) - * `bridge.hpp` (type conversions) - * `map.hpp` (hash map interface for instance storage and method lookup) -* `test` (generator, compiler and binding test scripts) - - -Call Tree ---------- -The cmake call tree can be broken into 3 main components: - -1. configure time -2. build time -3. install time - -**Find Matlab (configure)** -The first thing to do is discover a Matlab installation on the host system. This is handled by the `OpenCVFindMatlab.cmake` in `opencv/cmake`. On Windows machines it searches the registry and path, while on *NIX machines it searches a set of canonical install paths. Once Matlab has been found, a number of variables are defined, such as the path to the mex compiler, the mex libraries, the mex include paths, the architectural extension, etc. - -**Test the generator (configure)** -Attempt to produce a source file for a simple definition. This tests whether python and pythonlibs are correctly invoked on the host. - -**Test the mex compiler (configure)** -Attempt to compile a simple definition using the mex compiler. A mex file is actually just a shared object with a special exported symbol `_mexFunction` which serves as the entry-point to the function. As such, the mex compiler is just a set of scripts configuring the system compiler. In most cases this is the same as the OpenCV compiler, but *could* be different. The test checks whether the mex and generator includes can be found, the system libraries can be linked and the passed compiler flags are compatible. - -If any of the configure time tests fail, the bindings will be disabled, but the main OpenCV configure will continue without error. The configuration summary will contain the block: - - Matlab - mex: /Applications/MATLAB_R2013a.app/bin/mex - compiler/generator: Not working (bindings will not be generated) - -**Generate the sources (build)** -Given a set of modules (the intersection of the OpenCV modules being built and the matlab module optional dependencies), the `CppHeaderParser()` from `opencv/modules/python/src2/hdr_parser.py` will parse the module headers and produce a set of definitions. - -The `ParseTree()` from `opencv/modules/matlab/generator/parse_tree.py` takes this set of definitions and refactors them into a semantic tree better suited to templatization. For example, a trivial definition from the header parser may look something like: - -```python -[fill, void, ['/S'], [cv::Mat&, mat, '', ['/I', '/O']]] -``` - -The equivalent refactored output will look like: - -```python - Function - name = 'fill' - rtype = 'void' - static = True - req = - Argument - name = 'mat' - type = 'cv::Mat' - ref = '&' - I = True - O = True - default = '' -``` - -The added semantics (Namespace, Class, Function, Argument, name, etc) make it easier for the templating engine to parse, slice and populate definitions. - -Once the definitions have been parsed, `gen_matlab.py` passes each definition to the template engine with the appropriate template (class, function, enum, doc) and the filled template gets written to the `${CMAKE_CURRENT_BUILD_DIR}/src` directory. - -The generator relies upon a proxy object called `generate.proxy` to determine when the sources are out of date and need to be re-generated. - -**Compile the sources (build)** -Once the sources have been generated, they are compiled by the mex compiler. The `compile.cmake` script in `opencv/modules/matlab/` takes responsibility for iterating over each source file in `${CMAKE_CURRENT_BUILD_DIR}/src` and compiling it with the passed includes and OpenCV libraries. - -The flags used to compile the main OpenCV libraries are also forwarded to the mex compiler. So if, for example, you compiled OpenCV with SSE support, the mex bindings will also use SSE. Likewise, if you compile OpenCV in debug mode, the bindings will link to the debug version of the libraries. - -Importantly, the mex compiler includes the `mxarray.hpp`, `bridge.hpp` and `map.hpp` files from the `opencv/modules/matlab/include` directory. `mxarray.hpp` defines a `MxArray` class which wraps Matlab's `mxArray*` type in a more friendly OOP-syle interface. `bridge.hpp` defines a `Bridge` class which is able to perform type conversions between Matlab types and std/OpenCV types. It can be extended with new definitions using the plugin interface described in that file. - -The compiler relies upon a proxy object called `compile.proxy` to determine when the generated sources are out of date and need to be re-compiled. - -**Install the files (install)** -At install time, the mex files are put into place at `${CMAKE_INSTALL_PREFIX}/matlab` and their linkages updated. - - -Jinja2 ------- -Jinja2 is a powerful templating engine, similar to python's builtin `string.Template` class but implementing the model-view-controller paradigm. For example, a trivial view could be populated as follows: - -**view.py** - -```html+django -{{ title }} -

-``` - -**model.py** - -```python -class User(object): - __init__(self): - self.username = '' - self.url = '' - -def sanitize(text): - """Filter for escaping html tags to prevent code injection""" -``` - -**controller.py** - -```python -def populate(users): -# initialize jinja -jtemplate = jinja2.Environment(loader=FileSystemLoader()) - -# add the filters to the engine -jtemplate['sanitize'] = sanitize - -# get the view -template = jtemplate.get_template('view') - -# populate the template with a list of User objects -populated = template.render(title='all users', users=users) - -# write to file -with open('users.html', 'wb') as f: - f.write(populated) -``` - -Thus the style and layout of the view is kept separate from the content (model). This modularity improves readability and maintainability of both the view and content and (for my own sanity) has helped significantly in debugging errors. - -File Reference --------------- -**gen_matlab.py** -gen_matlab has the following call signature: - - gen_matlab.py --jinja2 path/to/jinja2/engine - --hdrparser path/to/hdr_parser/dir - --rstparser path/to/rst_parser/dir - --moduleroot path/to/opencv/modules - --modules [core imgproc highgui ...] - --extra namespace=/additional/header/to/parse - --outdir /path/to/place/generated/src - -**build_info.py** -build_info has the following call signature: - - build_info.py --jinja2 path/to/jinja2/engine - --os operating_system_string - --arch [bitness processor] - --compiler [id version] - --mex_arch arch_string - --mex_script /path/to/mex/script - --cxx_flags [-list -of -flags -to -passthrough] - --opencv_version version_string - --commit commit_hash_if_using_git - --modules core imgproc highgui etc - --configuration Debug/Release - --outdir path/to/place/build/info - -**cvmex.py** -cvmex.py, the custom compiler generator, has the following call signature: - - cvmex.py --jinja2 path/to/jinja2/engine - --opts [-list -of -opts] - --include_dirs [-list -of -opencv_include_directories] - --lib_dir opencv_lib_directory - --libs [-lopencv_core -lopencv_imgproc ...] - --flags [-Wall -opencv_build_flags ...] - --outdir /path/to/generated/output - -**parse_tree.py** -To build a parse tree, first parse a set of headers, then invoke the parse tree to refactor the output: - -```python -# parse a set of definitions into a dictionary of namespaces -parser = CppHeaderParser() -ns['core'] = parser.parse('path/to/opencv/core.hpp') - -# refactor into a semantic tree -parse_tree = ParseTree() -parse_tree.build(ns) - -# iterate over the tree -for namespace in parse_tree.namespaces: - for clss in namespace.classes: - # do stuff - for method in namespace.methods: - # do stuff -``` - -**mxarray.hpp** -mxarray.hpp defines a class called `MxArray` which provides an OOP-style interface for Matlab's homogeneous `mxArray*` type. To create an `MxArray`, you can either inherit an existing array - -```cpp -MxArray mat(prhs[0]); -``` - -or create a new array - -```cpp -MxArray mat(5, 5, Matlab::Traits::ScalarType); -MxArray mat = MxArray::Matrix(5, 5); -``` - -The default constructor allocates a `0 x 0` array. Once you have encapculated an `mxArray*` you can access its properties through member functions: - -```cpp -mat.rows(); -mat.cols(); -mat.size(); -mat.channels(); -mat.isComplex(); -mat.isNumeric(); -mat.isLogical(); -mat.isClass(); -mat.className(); -mat.real(); -mat.imag(); -``` - -The MxArray object uses scoped memory management. If you wish to pass an MxArray back to Matlab (as a lhs pointer), you need to explicitly release ownership of the array so that it is not destroyed when it leaves scope: - -```cpp -plhs[0] = mat.releaseOwnership(); -``` - -mxarray.hpp also includes a number of helper utilities that make working in mex-world a little easier. One such utility is the `ArgumentParser`. `ArgumentParser` automatically handles required and optional arguments to a method, and even enables named arguments as used in many core Matlab functions. For example, if you had a function with the following signature: - -```cpp -void f(Mat first, Mat second, Mat mask=Mat(), int dtype=-1); -``` - -then you can create an `ArgumentParser` as follows: - -```cpp -ArgumentParser parser("f"); -parser.addVariant(2, 2, "mask", "dtype"); -MxArrayVector inputs = parser.parse(prhs, prhs+nrhs); -``` - -and that will make available the following calling syntaxes: - -```matlab -f(first, second); -f(first, second, mask); -f(first, second, mask, dtype); -f(first, second, 'dtype', dtype, 'mask', mask); % optional ordering does not matter -f(first, second, 'dtype', dtype); % only second optional argument provided -f(first, second, mask, 'dtype', dtype); % mixture of ordered and named -``` - -Further, the output of the `parser.parse()` method will always contain the total number of required and optional arguments that the method can take, with unspecified arguments given by empty matrices. Thus, to check if an optional argument has been given, you can do: - -```cpp -int dtype = inputs[3].empty() ? -1 : inputs[3].scalar(); -``` - -**bridge.hpp** -The bridge interface defines a `Bridge` class which provides type conversion between std/OpenCV and Matlab types. A type conversion must provide the following: - -```cpp -Bridge& operator=(const MyObject&); -MyObject toMyObject(); -operator MyObject(); -``` - -The binding generator will then automatically call the conversion operators (either explicitly or implicitly) if your `MyObject` class is encountered as an input or return from a parsed definition. diff --git a/modules/matlab/compile.cmake b/modules/matlab/compile.cmake deleted file mode 100644 index 2fb087f874..0000000000 --- a/modules/matlab/compile.cmake +++ /dev/null @@ -1,49 +0,0 @@ -# LISTIFY -# Given a string of space-delimited tokens, reparse as a string of -# semi-colon delimited tokens, which in CMake land is exactly equivalent -# to a list -macro(listify OUT_LIST IN_STRING) - string(REPLACE " " ";" ${OUT_LIST} ${IN_STRING}) -endmacro() - -# listify multiple-argument inputs -listify(MEX_INCLUDE_DIRS_LIST ${MEX_INCLUDE_DIRS}) -if (${CONFIGURATION} MATCHES "Debug") - listify(MEX_LIBS_LIST ${MEX_DEBUG_LIBS}) -else() - listify(MEX_LIBS_LIST ${MEX_LIBS}) -endif() - -# if it's MSVC building a Debug configuration, don't build bindings -if ("${CONFIGURATION}" MATCHES "Debug") - message(STATUS "Matlab bindings are only available in Release configurations. Skipping...") - return() -endif() - -# ----------------------------------------------------------------------------- -# Compile -# ----------------------------------------------------------------------------- -# for each generated source file: -# 1. check if the file has already been compiled -# 2. attempt compile if required -# 3. if the compile fails, throw an error and cancel compilation -file(GLOB SOURCE_FILES "${CMAKE_CURRENT_BINARY_DIR}/src/*.cpp") -foreach(SOURCE_FILE ${SOURCE_FILES}) - # strip out the filename - get_filename_component(FILENAME ${SOURCE_FILE} NAME_WE) - # compile the source file using mex - if (NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/+cv/${FILENAME}.${MATLAB_MEXEXT}) - execute_process( - COMMAND ${MATLAB_MEX_SCRIPT} ${MEX_OPTS} "CXXFLAGS=\$CXXFLAGS ${MEX_CXXFLAGS}" ${MEX_INCLUDE_DIRS_LIST} - ${MEX_LIB_DIR} ${MEX_LIBS_LIST} ${SOURCE_FILE} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/+cv - OUTPUT_QUIET - ERROR_VARIABLE FAILED - ) - endif() - # TODO: If a mex file fails to compile, should we error out? - # TODO: Warnings are currently treated as errors... - if (FAILED) - message(FATAL_ERROR "Failed to compile ${FILENAME}: ${FAILED}") - endif() -endforeach() diff --git a/modules/matlab/generator/build_info.py b/modules/matlab/generator/build_info.py deleted file mode 100644 index 1340d9f926..0000000000 --- a/modules/matlab/generator/build_info.py +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env python - -def substitute(build, output_dir): - - # setup the template engine - template_dir = os.path.join(os.path.dirname(__file__), 'templates') - jtemplate = Environment(loader=FileSystemLoader(template_dir), trim_blocks=True, lstrip_blocks=True) - - # add the filters - jtemplate.filters['csv'] = csv - jtemplate.filters['stripExtraSpaces'] = stripExtraSpaces - - # load the template - template = jtemplate.get_template('template_build_info.m') - - # create the build directory - output_dir = output_dir+'/+cv' - if not os.path.isdir(output_dir): - os.mkdir(output_dir) - - # populate template - populated = template.render(build=build, time=time) - with open(os.path.join(output_dir, 'buildInformation.m'), 'wb') as f: - f.write(populated.encode('utf-8')) - -if __name__ == "__main__": - """ - Usage: python build_info.py --jinja2 /path/to/jinja2/engine - --os os_version_string - --arch [bitness processor] - --compiler [id version] - --mex_arch arch_string - --mex_script /path/to/mex/script - --cxx_flags [-list -of -flags -to -passthrough] - --opencv_version version_string - --commit commit_hash_if_using_git - --modules [core imgproc highgui etc] - --configuration Debug/Release - --outdir /path/to/write/build/info - - build_info.py generates a Matlab function that can be invoked with a call to - >> cv.buildInformation(); - - This function prints a summary of the user's OS, OpenCV and Matlab build - given the information passed to this module. build_info.py invokes Jinja2 - on the template_build_info.m template. - """ - - # parse the input options - import sys, re, os, time - from argparse import ArgumentParser - parser = ArgumentParser() - parser.add_argument('--jinja2') - parser.add_argument('--os') - parser.add_argument('--arch', nargs=2) - parser.add_argument('--compiler', nargs='+') - parser.add_argument('--mex_arch') - parser.add_argument('--mex_script') - parser.add_argument('--mex_opts', default=['-largeArrayDims'], nargs='*') - parser.add_argument('--cxx_flags', default=[], nargs='*') - parser.add_argument('--opencv_version', default='', nargs='?') - parser.add_argument('--commit', default='Not in working git tree', nargs='?') - parser.add_argument('--modules', nargs='+') - parser.add_argument('--configuration') - parser.add_argument('--outdir') - build = parser.parse_args() - - # add jinja to the path - sys.path.append(build.jinja2) - - from filters import * - from jinja2 import Environment, FileSystemLoader - - # populate the build info template - substitute(build, build.outdir) diff --git a/modules/matlab/generator/cvmex.py b/modules/matlab/generator/cvmex.py deleted file mode 100644 index 731d30a0e7..0000000000 --- a/modules/matlab/generator/cvmex.py +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env python - -def substitute(cv, output_dir): - - # setup the template engine - template_dir = os.path.join(os.path.dirname(__file__), 'templates') - jtemplate = Environment(loader=FileSystemLoader(template_dir), trim_blocks=True, lstrip_blocks=True) - - # add the filters - jtemplate.filters['cellarray'] = cellarray - jtemplate.filters['split'] = split - jtemplate.filters['csv'] = csv - - # load the template - template = jtemplate.get_template('template_cvmex_base.m') - - # create the build directory - output_dir = output_dir+'/+cv' - if not os.path.isdir(output_dir): - os.mkdir(output_dir) - - # populate template - populated = template.render(cv=cv, time=time) - with open(os.path.join(output_dir, 'mex.m'), 'wb') as f: - f.write(populated.encode('utf-8')) - -if __name__ == "__main__": - """ - Usage: python cvmex.py --jinja2 /path/to/jinja2/engine - --opts [-list -of -opts] - --include_dirs [-list -of -opencv_include_directories] - --lib_dir opencv_lib_directory - --libs [-lopencv_core -lopencv_imgproc ...] - --flags [-Wall -opencv_build_flags ...] - --outdir /path/to/generated/output - - cvmex.py generates a custom mex compiler that automatically links OpenCV - libraries to built sources where appropriate. The calling syntax is the - same as the builtin mex compiler, with added cv qualification: - >> cv.mex(..., ...); - """ - - # parse the input options - import sys, re, os, time - from argparse import ArgumentParser - parser = ArgumentParser() - parser.add_argument('--jinja2') - parser.add_argument('--opts') - parser.add_argument('--include_dirs') - parser.add_argument('--lib_dir') - parser.add_argument('--libs') - parser.add_argument('--flags') - parser.add_argument('--outdir') - cv = parser.parse_args() - - # add jinja to the path - sys.path.append(cv.jinja2) - - from filters import * - from jinja2 import Environment, FileSystemLoader - - # populate the mex base template - substitute(cv, cv.outdir) diff --git a/modules/matlab/generator/filters.py b/modules/matlab/generator/filters.py deleted file mode 100644 index de69ff7e41..0000000000 --- a/modules/matlab/generator/filters.py +++ /dev/null @@ -1,179 +0,0 @@ -from textwrap import TextWrapper -import re, os -# precompile a URL matching regular expression -urlexpr = re.compile(r"((https?):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)", re.MULTILINE|re.UNICODE) - -def inputs(args): - '''Keeps only the input arguments in a list of elements. - In OpenCV input arguments are all arguments with names - not beginning with 'dst' - ''' - try: - return [arg for arg in args['only'] if arg.I and not arg.O] - except: - return [arg for arg in args if arg.I] - -def ninputs(fun): - '''Counts the number of input arguments in the input list''' - return len(inputs(fun.req)) + len(inputs(fun.opt)) - -def outputs(args): - '''Determines whether any of the given arguments is an output - reference, and returns a list of only those elements. - In OpenCV, output references are preceeded by 'dst' - ''' - try: - return [arg for arg in args['only'] if arg.O and not arg.I] - except: - return [arg for arg in args if arg.O] - -def only(args): - '''Returns exclusively the arguments which are only inputs - or only outputs''' - d = {}; - d['only'] = args - return d - -def void(arg): - '''Is the input 'void' ''' - return arg == 'void' - -def flip(arg): - '''flip the sign of the input''' - return not arg - -def noutputs(fun): - '''Counts the number of output arguments in the input list''' - return int(not void(fun.rtp)) + len(outputs(fun.req)) + len(outputs(fun.opt)) - -def convertibleToInt(string): - '''Can the input string be evaluated to an integer?''' - salt = '1+' - try: - exec(salt+string) - return True - except: - return False - -def binaryToDecimal(string): - '''Attempt to convert the input string to floating point representation''' - try: - return str(eval(string)) - except: - return string - -def formatMatlabConstant(string, table): - ''' - Given a string representing a Constant, and a table of all Constants, - attempt to resolve the Constant into a valid Matlab expression - For example, the input - DEPENDENT_VALUE = 1 << FIXED_VALUE - needs to be converted to - DEPENDENT_VALUE = bitshift(1, cv.FIXED_VALUE); - ''' - # split the string into expressions - words = re.split('(\W+)', string) - # add a 'cv' prefix if an expression is also a key in the lookup table - words = ''.join([('cv.'+word if word in table else word) for word in words]) - # attempt to convert arithmetic expressions and binary/hex to decimal - words = binaryToDecimal(words) - # convert any remaining bitshifts to Matlab 'bitshift' methods - shift = re.sub('[\(\) ]', '', words).split('<<') - words = 'bitshift('+shift[0]+', '+shift[1]+')' if len(shift) == 2 else words - return words - -def matlabURL(string): - """This filter is used to construct a Matlab specific URL that calls the - system browser instead of the (insanely bad) builtin Matlab browser""" - return re.sub(urlexpr, '\\1', string) - -def capitalizeFirst(text): - '''Capitalize only the first character of the text string''' - return text[0].upper() + text[1:] - -def toUpperCamelCase(text): - '''variable_name --> VariableName''' - return ''.join([capitalizeFirst(word) for word in text.split('_')]) - -def toLowerCamelCase(text): - '''variable_name --> variableName''' - upper_camel = toUpperCamelCase(test) - return upper_camel[0].lower() + upper_camel[1:] - -def toUnderCase(text): - '''VariableName --> variable_name''' - s1 = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', text) - return re.sub('([a-z0-9])([A-Z])', r'\1_\2', s1).lower() - -def stripTags(text): - ''' - strip or convert html tags from a text string - content --> content - --> '' - < --> < - > --> > - &le --> <= - &ge --> >= - ''' - upper = lambda pattern: pattern.group(1).upper() - text = re.sub('(.*?)', upper, text) - text = re.sub('<([^=\s].*?)>', '', text) - text = re.sub('<', '<', text) - text = re.sub('>', '>', text) - text = re.sub('&le', '<=', text) - text = re.sub('&ge', '>=', text) - return text - -def qualify(text, name): - '''Adds uppercase 'CV.' qualification to any occurrences of name in text''' - return re.sub(name.upper(), 'CV.'+name.upper(), text) - -def slugify(text): - '''A_Function_name --> a-function-name''' - return text.lower().replace('_', '-') - -def filename(fullpath): - '''Returns only the filename without an extension from a file path - eg. /path/to/file.txt --> file - ''' - return os.path.splitext(os.path.basename(fullpath))[0] - -def split(text, delimiter=' '): - '''Split a text string into a list using the specified delimiter''' - return text.split(delimiter) - -def csv(items, sep=', '): - '''format a list with a separator (comma if not specified)''' - return sep.join(item for item in items) - -def cellarray(items, escape='\''): - '''format a list of items as a matlab cell array''' - return '{' + ', '.join(escape+item+escape for item in items) + '}' - -def stripExtraSpaces(text): - '''Removes superfluous whitespace from a string, including the removal - of all leading and trailing whitespace''' - return ' '.join(text.split()) - -def comment(text, wrap=80, escape='% ', escape_first='', escape_last=''): - '''comment filter - Takes a string in text, and wraps it to wrap characters in length with - preceding comment escape sequence on each line. escape_first and - escape_last can be used for languages which define block comments. - Examples: - C++ inline comment comment(80, '// ') - C block comment: comment(80, ' * ', '/*', ' */') - Matlab comment: comment(80, '% ') - Matlab block comment: comment(80, '', '%{', '%}') - Python docstrings: comment(80, '', '\'\'\'', '\'\'\'') - ''' - - tw = TextWrapper(width=wrap-len(escape)) - if escape_first: - escape_first = escape_first+'\n' - if escape_last: - escape_last = '\n'+escape_last - escapn = '\n'+escape - lines = text.split('\n') - wlines = (tw.wrap(line) for line in lines) - return escape_first+escape+escapn.join(escapn.join(line) for line in wlines)+escape_last diff --git a/modules/matlab/generator/gen_matlab.py b/modules/matlab/generator/gen_matlab.py deleted file mode 100644 index 36d588c92a..0000000000 --- a/modules/matlab/generator/gen_matlab.py +++ /dev/null @@ -1,198 +0,0 @@ -#!/usr/bin/env python -import sys, re, os, time -from string import Template -from parse_tree import ParseTree, todict, constants -from filters import * - -class MatlabWrapperGenerator(object): - """ - MatlabWrapperGenerator is a class for generating Matlab mex sources from - a set of C++ headers. MatlabWrapperGenerator objects can be default - constructed. Given an instance, the gen() method performs the translation. - """ - - def gen(self, module_root, modules, extras, output_dir): - """ - Generate a set of Matlab mex source files by parsing exported symbols - in a set of C++ headers. The headers can be input in one (or both) of - two methods: - 1. specify module_root and modules - Given a path to the OpenCV module root and a list of module names, - the headers to parse are implicitly constructed. - 2. specifiy header locations explicitly in extras - Each element in the list of extras must be of the form: - 'namespace=/full/path/to/extra/header.hpp' where 'namespace' is - the namespace in which the definitions should be added. - The output_dir specifies the directory to write the generated sources - to. - """ - # dynamically import the parsers - from jinja2 import Environment, FileSystemLoader - import hdr_parser - import rst_parser - - # parse each of the files and store in a dictionary - # as a separate "namespace" - parser = hdr_parser.CppHeaderParser() - rst = rst_parser.RstParser(parser) - rst_parser.verbose = False - rst_parser.show_warnings = False - rst_parser.show_errors = False - rst_parser.show_critical_errors = False - - ns = dict((key, []) for key in modules) - doc = dict((key, []) for key in modules) - path_template = Template('${module}/include/opencv2/${module}.hpp') - - for module in modules: - # construct a header path from the module root and a path template - header = os.path.join(module_root, path_template.substitute(module=module)) - # parse the definitions - ns[module] = parser.parse(header) - # parse the documentation - rst.parse(module, os.path.join(module_root, module)) - doc[module] = rst.definitions - rst.definitions = {} - - for extra in extras: - module = extra.split("=")[0] - header = extra.split("=")[1] - ns[module] = ns[module] + parser.parse(header) if module in ns else parser.parse(header) - - # cleanify the parser output - parse_tree = ParseTree() - parse_tree.build(ns) - - # setup the template engine - template_dir = os.path.join(os.path.dirname(__file__), 'templates') - jtemplate = Environment(loader=FileSystemLoader(template_dir), trim_blocks=True, lstrip_blocks=True) - - # add the custom filters - jtemplate.filters['formatMatlabConstant'] = formatMatlabConstant - jtemplate.filters['convertibleToInt'] = convertibleToInt - jtemplate.filters['toUpperCamelCase'] = toUpperCamelCase - jtemplate.filters['toLowerCamelCase'] = toLowerCamelCase - jtemplate.filters['toUnderCase'] = toUnderCase - jtemplate.filters['matlabURL'] = matlabURL - jtemplate.filters['stripTags'] = stripTags - jtemplate.filters['filename'] = filename - jtemplate.filters['comment'] = comment - jtemplate.filters['inputs'] = inputs - jtemplate.filters['ninputs'] = ninputs - jtemplate.filters['outputs'] = outputs - jtemplate.filters['noutputs'] = noutputs - jtemplate.filters['qualify'] = qualify - jtemplate.filters['slugify'] = slugify - jtemplate.filters['only'] = only - jtemplate.filters['void'] = void - jtemplate.filters['not'] = flip - - # load the templates - tfunction = jtemplate.get_template('template_function_base.cpp') - tclassm = jtemplate.get_template('template_class_base.m') - tclassc = jtemplate.get_template('template_class_base.cpp') - tdoc = jtemplate.get_template('template_doc_base.m') - tconst = jtemplate.get_template('template_map_base.m') - - # create the build directory - output_source_dir = output_dir+'/src' - output_private_dir = output_source_dir+'/private' - output_class_dir = output_dir+'/+cv' - output_map_dir = output_dir+'/map' - if not os.path.isdir(output_source_dir): - os.makedirs(output_source_dir) - if not os.path.isdir(output_private_dir): - os.makedirs(output_private_dir) - if not os.path.isdir(output_class_dir): - os.makedirs(output_class_dir) - if not os.path.isdir(output_map_dir): - os.makedirs(output_map_dir) - - # populate templates - for namespace in parse_tree.namespaces: - # functions - for method in namespace.methods: - populated = tfunction.render(fun=method, time=time, includes=namespace.name) - with open(output_source_dir+'/'+method.name+'.cpp', 'wb') as f: - f.write(populated.encode('utf-8')) - if namespace.name in doc and method.name in doc[namespace.name]: - populated = tdoc.render(fun=method, doc=doc[namespace.name][method.name], time=time) - with open(output_class_dir+'/'+method.name+'.m', 'wb') as f: - f.write(populated.encode('utf-8')) - # classes - for clss in namespace.classes: - # cpp converter - populated = tclassc.render(clss=clss, time=time) - with open(output_private_dir+'/'+clss.name+'Bridge.cpp', 'wb') as f: - f.write(populated.encode('utf-8')) - # matlab classdef - populated = tclassm.render(clss=clss, time=time) - with open(output_class_dir+'/'+clss.name+'.m', 'wb') as f: - f.write(populated.encode('utf-8')) - - # create a global constants lookup table - const = dict(constants(todict(parse_tree.namespaces))) - populated = tconst.render(constants=const, time=time) - with open(output_dir+'/cv.m', 'wb') as f: - f.write(populated.encode('utf-8')) - - -if __name__ == "__main__": - """ - Usage: python gen_matlab.py --jinja2 /path/to/jinja2/engine - --hdrparser /path/to/hdr_parser/dir - --rstparser /path/to/rst_parser/dir - --moduleroot /path/to/opencv/modules - --modules [core imgproc objdetect etc] - --extra namespace=/path/to/extra/header.hpp - --outdir /path/to/output/generated/srcs - - gen_matlab.py is the main control script for generating matlab source - files from given set of headers. Internally, gen_matlab: - 1. constructs the headers to parse from the module root and list of modules - 2. parses the headers using CppHeaderParser - 3. refactors the definitions using ParseTree - 4. parses .rst docs using RstParser - 5. populates the templates for classes, function, enums and docs from the - definitions - - gen_matlab.py requires the following inputs: - --jinja2 the path to the Jinja2 templating engine - e.g. ${CMAKE_SOURCE_DIR}/3rdparty - --hdrparser the path to the header parser directory - (opencv/modules/python/src2) - --rstparser the path to the rst parser directory - (opencv/modules/java/generator) - --moduleroot (optional) path to the opencv directory containing the modules - --modules (optional - required if --moduleroot specified) the modules - to produce bindings for. The path to the include directories - as well as the namespaces are constructed from the modules - and the moduleroot - --extra extra headers explicitly defined to parse. This must be in - the format "namepsace=/path/to/extra/header.hpp". For example, - the core module requires the extra header: - "core=/opencv/modules/core/include/opencv2/core/core/base.hpp" - --outdir the output directory to put the generated matlab sources. In - the OpenCV build this is "${CMAKE_CURRENT_BUILD_DIR}/src" - """ - - # parse the input options - from argparse import ArgumentParser - parser = ArgumentParser() - parser.add_argument('--jinja2') - parser.add_argument('--hdrparser') - parser.add_argument('--rstparser') - parser.add_argument('--moduleroot', default='', required=False) - parser.add_argument('--modules', nargs='*', default=[], required=False) - parser.add_argument('--extra', nargs='*', default=[], required=False) - parser.add_argument('--outdir') - args = parser.parse_args() - - # add the hdr_parser and rst_parser modules to the path - sys.path.append(args.jinja2) - sys.path.append(args.hdrparser) - sys.path.append(args.rstparser) - - # create the generator - mwg = MatlabWrapperGenerator() - mwg.gen(args.moduleroot, args.modules, args.extra, args.outdir) diff --git a/modules/matlab/generator/parse_tree.py b/modules/matlab/generator/parse_tree.py deleted file mode 100644 index a6a146a55f..0000000000 --- a/modules/matlab/generator/parse_tree.py +++ /dev/null @@ -1,359 +0,0 @@ -import collections -from textwrap import fill -from filters import * -try: - # Python 2.7+ - basestring -except NameError: - # Python 3.3+ - basestring = str - -class ParseTree(object): - """ - The ParseTree class produces a semantic tree of C++ definitions given - the output of the CppHeaderParser (from opencv/modules/python/src2/hdr_parser.py) - - The full hierarchy is as follows: - - Namespaces - | - |- name - |- Classes - | - |- name - |- Methods - |- Constants - |- Methods - | - |- name - |- static (T/F) - |- return type - |- required Arguments - | - |- name - |- const (T/F) - |- reference ('&'/'*') - |- type - |- input - |- output (pass return by reference) - |- default value - |- optional Arguments - |- Constants - | - |- name - |- const (T/F) - |- reference ('&'/'*') - |- type - |- value - - The semantic tree contains substantial information for easily introspecting - information about objects. How many methods does the 'core' namespace have? - Does the 'randn' method have any return by reference (output) arguments? - How many required and optional arguments does the 'add' method have? Is the - variable passed by reference or raw pointer? - - Individual definitions from the parse tree (Classes, Functions, Constants) - are passed to the Jinja2 template engine where they are manipulated to - produce Matlab mex sources. - - A common call tree for constructing and using a ParseTree object is: - - # parse a set of definitions into a dictionary of namespaces - parser = CppHeaderParser() - ns['core'] = parser.parse('path/to/opencv/core.hpp') - - # refactor into a semantic tree - parse_tree = ParseTree() - parse_tree.build(ns) - - # iterate over the tree - for namespace in parse_tree.namespaces: - for clss in namespace.classes: - # do stuff - for method in namespace.methods: - # do stuff - - Calling 'print' on a ParseTree object will reconstruct the definitions - to produce an output resembling the original C++ code. - """ - def __init__(self, namespaces=None): - self.namespaces = namespaces if namespaces else [] - - def __str__(self): - return '\n\n\n'.join(ns.__str__() for ns in self.namespaces) - - def build(self, namespaces): - babel = Translator() - for name, definitions in namespaces.items(): - class_tree = {} - methods = [] - constants = [] - for defn in definitions: - obj = babel.translate(defn) - if obj is None: - continue - if type(obj) is Class or obj.clss: - self.insertIntoClassTree(obj, class_tree) - elif type(obj) is Method: - methods.append(obj) - elif type(obj) is Constant: - constants.append(obj) - else: - raise TypeError('Unexpected object type: '+str(type(obj))) - self.namespaces.append(Namespace(name, constants, list(class_tree.values()), methods)) - - def insertIntoClassTree(self, obj, class_tree): - cname = obj.name if type(obj) is Class else obj.clss - if not cname: - return - if not cname in class_tree: - # add a new class to the tree - class_tree[cname] = Class(cname) - # insert the definition into the class - val = class_tree[cname] - if type(obj) is Method: - val.methods.append(obj) - elif type(obj) is Constant: - val.constants.append(obj) - else: - raise TypeError('Unexpected object type: '+str(type(obj))) - - - -class Translator(object): - """ - The Translator class does the heavy lifting of translating the nested - list representation of the hdr_parser into individual definitions that - are inserted into the ParseTree. - Translator consists of a top-level method: translate() - along with a number of helper methods: translateClass(), translateMethod(), - translateArgument(), translateConstant(), translateName(), and - translateClassName() - """ - def translate(self, defn): - # --- class --- - # classes have 'class' prefixed on their name - if 'class' in defn[0].split(' ') or 'struct' in defn[0].split(' '): - return self.translateClass(defn) - # --- operators! --- - #TODO: implement operators: http://www.mathworks.com.au/help/matlab/matlab_oop/implementing-operators-for-your-class.html - if 'operator' in defn[0]: - return - # --- constant --- - elif convertibleToInt(defn[1]): - return self.translateConstant(defn) - # --- function --- - # functions either need to have input arguments, or not uppercase names - elif defn[3] or not self.translateName(defn[0]).split('_')[0].isupper(): - return self.translateMethod(defn) - # --- constant --- - else: - return self.translateConstant(defn) - - def translateClass(self, defn): - return Class() - - def translateMethod(self, defn, class_tree=None): - name = self.translateName(defn[0]) - clss = self.translateClassName(defn[0]) - rtp = defn[1] - static = True if 'S' in ''.join(defn[2]) else False - args = defn[3] - req = [] - opt = [] - for arg in args: - if arg: - a = self.translateArgument(arg) - opt.append(a) if a.default else req.append(a) - return Method(name, clss, static, '', rtp, False, req, opt) - - def translateConstant(self, defn): - const = True if 'const' in defn[0] else False - name = self.translateName(defn[0]) - clss = self.translateClassName(defn[0]) - tp = 'int' - val = defn[1] - return Constant(name, clss, tp, const, '', val) - - def translateArgument(self, defn): - ref = '*' if '*' in defn[0] else '' - ref = '&' if '&' in defn[0] else ref - const = ' const ' in ' '+defn[0]+' ' - tp = " ".join([word for word in defn[0].replace(ref, '').split() if not ' const ' in ' '+word+' ']) - name = defn[1] - default = defn[2] if defn[2] else '' - modifiers = ''.join(defn[3]) - I = True if not modifiers or 'I' in modifiers else False - O = True if 'O' in modifiers else False - return Argument(name, tp, const, I, O, ref, default) - - def translateName(self, name): - return name.split(' ')[-1].split('.')[-1] - - def translateClassName(self, name): - name = name.split(' ')[-1] - parts = name.split('.') - return parts[-2] if len(parts) > 1 and not parts[-2] == 'cv' else '' - - - -class Namespace(object): - """ - Namespace - | - |- name - |- Constants - |- Methods - |- Constants - """ - def __init__(self, name='', constants=None, classes=None, methods=None): - self.name = name - self.constants = constants if constants else [] - self.classes = classes if classes else [] - self.methods = methods if methods else [] - - def __str__(self): - return 'namespace '+self.name+' {\n\n'+\ - ('\n'.join(c.__str__() for c in self.constants)+'\n\n' if self.constants else '')+\ - ('\n'.join(f.__str__() for f in self.methods)+'\n\n' if self.methods else '')+\ - ('\n\n'.join(o.__str__() for o in self.classes) if self.classes else '')+'\n};' - -class Class(object): - """ - Class - | - |- name - |- Methods - |- Constants - """ - def __init__(self, name='', namespace='', constants=None, methods=None): - self.name = name - self.namespace = namespace - self.constants = constants if constants else [] - self.methods = methods if methods else [] - - def __str__(self): - return 'class '+self.name+' {\n\t'+\ - ('\n\t'.join(c.__str__() for c in self.constants)+'\n\n\t' if self.constants else '')+\ - ('\n\t'.join(f.__str__() for f in self.methods) if self.methods else '')+'\n};' - -class Method(object): - """ - Method - int VideoWriter::read( cv::Mat& frame, const cv::Mat& mask=cv::Mat() ); - --- ----- ---- -------- ---------------- - rtp class name required optional - - name the method name - clss the class the method belongs to ('' if free) - static static? - namespace the namespace the method belongs to ('' if free) - rtp the return type - const const? - req list of required arguments - opt list of optional arguments - """ - def __init__(self, name='', clss='', static=False, namespace='', rtp='', const=False, req=None, opt=None): - self.name = name - self.clss = clss - self.constructor = True if name == clss else False - self.static = static - self.const = const - self.namespace = namespace - self.rtp = rtp - self.req = req if req else [] - self.opt = opt if opt else [] - - def __str__(self): - return (self.rtp+' ' if self.rtp else '')+self.name+'('+\ - ', '.join(arg.__str__() for arg in self.req+self.opt)+\ - ')'+(' const' if self.const else '')+';' - -class Argument(object): - """ - Argument - const cv::Mat& mask=cv::Mat() - ----- ---- --- ---- ------- - const tp ref name default - - name the argument name - tp the argument type - const const? - I is the argument treated as an input? - O is the argument treated as an output (return by reference) - ref is the argument passed by reference? ('*'/'&') - default the default value of the argument ('' if required) - """ - def __init__(self, name='', tp='', const=False, I=True, O=False, ref='', default=''): - self.name = name - self.tp = tp - self.ref = ref - self.I = I - self.O = O - self.const = const - self.default = default - - def __str__(self): - return ('const ' if self.const else '')+self.tp+self.ref+\ - ' '+self.name+('='+self.default if self.default else '') - -class Constant(object): - """ - Constant - DFT_COMPLEX_OUTPUT = 12; - ---- ------- - name default - - name the name of the constant - clss the class that the constant belongs to ('' if free) - tp the type of the constant ('' if int) - const const? - ref is the constant a reference? ('*'/'&') - default default value, required for constants - """ - def __init__(self, name='', clss='', tp='', const=False, ref='', default=''): - self.name = name - self.clss = clss - self.tp = tp - self.ref = ref - self.const = const - self.default = default - - def __str__(self): - return ('const ' if self.const else '')+self.tp+self.ref+\ - ' '+self.name+('='+self.default if self.default else '')+';' - -def constants(tree): - """ - recursive generator to strip all Constant objects from the ParseTree - and place them into a flat dictionary of { name, value (default) } - """ - if isinstance(tree, dict) and 'constants' in tree and isinstance(tree['constants'], list): - for node in tree['constants']: - yield (node['name'], node['default']) - if isinstance(tree, dict): - for key, val in tree.items(): - for gen in constants(val): - yield gen - if isinstance(tree, list): - for val in tree: - for gen in constants(val): - yield gen - - -def todict(obj): - """ - Recursively convert a Python object graph to sequences (lists) - and mappings (dicts) of primitives (bool, int, float, string, ...) - """ - if isinstance(obj, basestring): - return obj - elif isinstance(obj, dict): - return dict((key, todict(val)) for key, val in obj.items()) - elif isinstance(obj, collections.Iterable): - return [todict(val) for val in obj] - elif hasattr(obj, '__dict__'): - return todict(vars(obj)) - elif hasattr(obj, '__slots__'): - return todict(dict((name, getattr(obj, name)) for name in getattr(obj, '__slots__'))) - return obj diff --git a/modules/matlab/generator/templates/__init__.py b/modules/matlab/generator/templates/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/modules/matlab/generator/templates/functional.cpp b/modules/matlab/generator/templates/functional.cpp deleted file mode 100644 index b019a13003..0000000000 --- a/modules/matlab/generator/templates/functional.cpp +++ /dev/null @@ -1,149 +0,0 @@ -/* - * compose - * compose a function call - * This macro takes as input a Method object and composes - * a function call by inspecting the types and argument names - */ -{% macro compose(fun) %} - {# ----------- Return type ------------- #} - {%- if not fun.rtp|void and not fun.constructor -%} retval = {% endif -%} - {%- if fun.constructor -%}{{fun.clss}} obj = {% endif -%} - {%- if fun.clss and not fun.constructor -%}inst.{%- else -%} cv:: {%- endif -%} - {{fun.name}}( - {#- ----------- Required ------------- -#} - {%- for arg in fun.req -%} - {%- if arg.ref == '*' -%}&{%- endif -%} - {{arg.name}} - {%- if not loop.last %}, {% endif %} - {% endfor %} - {#- ----------- Optional ------------- -#} - {% if fun.req and fun.opt %}, {% endif %} - {%- for opt in fun.opt -%} - {%- if opt.ref == '*' -%}&{%- endif -%} - {{opt.name}} - {%- if not loop.last -%}, {% endif %} - {%- endfor -%} - ); -{%- endmacro %} - - -/* - * composeMatlab - * compose a Matlab function call - * This macro takes as input a Method object and composes - * a Matlab function call by inspecting the types and argument names - */ -{% macro composeMatlab(fun) %} - {# ----------- Return type ------------- #} - {%- if fun|noutputs > 1 -%}[{% endif -%} - {%- if not fun.rtp|void -%}LVALUE{% endif -%} - {%- if not fun.rtp|void and fun|noutputs > 1 -%},{% endif -%} - {# ------------- Outputs ------------- -#} - {%- for arg in fun.req|outputs + fun.opt|outputs -%} - {{arg.name}} - {%- if arg.I -%}_out{%- endif -%} - {%- if not loop.last %}, {% endif %} - {% endfor %} - {%- if fun|noutputs > 1 -%}]{% endif -%} - {%- if fun|noutputs %} = {% endif -%} - cv.{{fun.name}}( - {#- ------------ Inputs -------------- -#} - {%- for arg in fun.req|inputs + fun.opt|inputs -%} - {{arg.name}} - {%- if arg.O -%}_in{%- endif -%} - {%- if not loop.last %}, {% endif -%} - {% endfor -%} - ); -{%- endmacro %} - - -/* - * composeVariant - * compose a variant call for the ArgumentParser - */ -{% macro composeVariant(fun) %} -addVariant("{{ fun.name }}", {{ fun.req|inputs|length }}, {{ fun.opt|inputs|length }} -{%- if fun.opt|inputs|length %}, {% endif -%} -{%- for arg in fun.opt|inputs -%} - "{{arg.name}}" - {%- if not loop.last %}, {% endif -%} -{% endfor -%} -) -{%- endmacro %} - - -/* - * composeWithExceptionHandler - * compose a function call wrapped in exception traps - * This macro takes an input a Method object and composes a function - * call through the compose() macro, then wraps the return in traps - * for cv::Exceptions, std::exceptions, and all generic exceptions - * and returns a useful error message to the Matlab interpreter - */ -{%- macro composeWithExceptionHandler(fun) -%} - // call the opencv function - // [out =] namespace.fun(src1, ..., srcn, dst1, ..., dstn, opt1, ..., optn); - try { - {{ compose(fun) }} - } catch(cv::Exception& e) { - error(std::string("cv::exception caught: ").append(e.what()).c_str()); - } catch(std::exception& e) { - error(std::string("std::exception caught: ").append(e.what()).c_str()); - } catch(...) { - error("Uncaught exception occurred in {{fun.name}}"); - } -{%- endmacro %} - - -/* - * handleInputs - * unpack input arguments from the Bridge - * Given an input Bridge object, this unpacks the object from the Bridge and - * casts them into the correct type - */ -{%- macro handleInputs(fun) %} - - {% if fun|ninputs or (fun|noutputs and not fun.constructor) %} - // unpack the arguments - {# ----------- Inputs ------------- #} - {% for arg in fun.req|inputs %} - {{arg.tp}} {{arg.name}} = inputs[{{ loop.index0 }}].to{{arg.tp|toUpperCamelCase}}(); - {% endfor %} - {% for opt in fun.opt|inputs %} - {{opt.tp}} {{opt.name}} = inputs[{{loop.index0 + fun.req|inputs|length}}].empty() ? ({{opt.tp}}) {% if opt.ref == '*' -%} {{opt.tp}}() {%- else -%} {{opt.default}} {%- endif %} : inputs[{{loop.index0 + fun.req|inputs|length}}].to{{opt.tp|toUpperCamelCase}}(); - {% endfor %} - {# ----------- Outputs ------------ #} - {% for arg in fun.req|only|outputs %} - {{arg.tp}} {{arg.name}}; - {% endfor %} - {% for opt in fun.opt|only|outputs %} - {{opt.tp}} {{opt.name}}; - {% endfor %} - {% if not fun.rtp|void and not fun.constructor %} - {{fun.rtp}} retval; - {% endif %} - {% endif %} - -{%- endmacro %} - -/* - * handleOutputs - * pack outputs into the bridge - * Given a set of outputs, this methods assigns them into the bridge for - * return to the calling method - */ -{%- macro handleOutputs(fun) %} - - {% if fun|noutputs %} - // assign the outputs into the bridge - {% if not fun.rtp|void and not fun.constructor %} - outputs[0] = retval; - {% endif %} - {% for arg in fun.req|outputs %} - outputs[{{loop.index0 + fun.rtp|void|not}}] = {{arg.name}}; - {% endfor %} - {% for opt in fun.opt|outputs %} - outputs[{{loop.index0 + fun.rtp|void|not + fun.req|outputs|length}}] = {{opt.name}}; - {% endfor %} - {% endif %} -{%- endmacro %} diff --git a/modules/matlab/generator/templates/template_build_info.m b/modules/matlab/generator/templates/template_build_info.m deleted file mode 100644 index 8af0a34208..0000000000 --- a/modules/matlab/generator/templates/template_build_info.m +++ /dev/null @@ -1,41 +0,0 @@ -function buildInformation() -%CV.BUILDINFORMATION display OpenCV Toolbox build information -% -% Call CV.BUILDINFORMATION() to get a printout of diagonstic information -% pertaining to your particular build of the OpenCV Toolbox. If you ever -% run into issues with the Toolbox, it is useful to submit this -% information alongside a bug report to the OpenCV team. -% -% Copyright {{ time.strftime("%Y", time.localtime()) }} The OpenCV Foundation -% -info = { -' ------------------------------------------------------------------------' -' OpenCV Toolbox' -' Build and diagnostic information' -' ------------------------------------------------------------------------' -'' -' Platform' -' OS: {{ build.os }}' -' Architecture: {{ build.arch[0] }}-bit {{ build.arch[1] }}' -' Compiler: {{ build.compiler | csv(' ') }}' -'' -' Matlab' -[' Version: ' version()] -[' Mex extension: ' mexext()] -' Architecture: {{ build.mex_arch }}' -' Mex path: {{ build.mex_script }}' -' Mex flags: {{ build.mex_opts | csv(' ') }}' -' CXX flags: {{ build.cxx_flags | csv(' ') | stripExtraSpaces | wordwrap(60, True, '\'\n\' ') }}' -'' -' OpenCV' -' Version: {{ build.opencv_version }}' -' Commit: {{ build.commit }}' -' Configuration: {{ build.configuration }}' -' Modules: {{ build.modules | csv | wordwrap(60, True, '\'\n\' ') }}' -'' -}; - -info = cellfun(@(x) [x '\n'], info, 'UniformOutput', false); -info = horzcat(info{:}); -fprintf(info); -end diff --git a/modules/matlab/generator/templates/template_class_base.cpp b/modules/matlab/generator/templates/template_class_base.cpp deleted file mode 100644 index 09e0a08702..0000000000 --- a/modules/matlab/generator/templates/template_class_base.cpp +++ /dev/null @@ -1,98 +0,0 @@ -{% import 'functional.cpp' as functional %} -/* - * file: {{clss.name}}Bridge.cpp - * author: A trusty code generator - * date: {{time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime())}} - * - * This file was autogenerated, do not modify. - * See LICENSE for full modification and redistribution details. - * Copyright {{time.strftime("%Y", time.localtime())}} The OpenCV Foundation - */ -#include -#include -#include -#include -#include -#include -using namespace cv; -using namespace matlab; -using namespace bridge; - -namespace { - -typedef std::vector (*)({{clss.name}}&, const std::vector&) MethodSignature; - -{% for function in clss.methods %} - -{% if function.constructor %} -// wrapper for {{function.name}}() constructor -{{ function.clss }} {{function.name}}(const std::vector& inputs) { - {{ functional.handleInputs(function) }} - {{ functional.compose(function) }} - return obj; -} -{% else %} -// wrapper for {{function.name}}() method -std::vector {{function.name}}({{clss.name}}& inst, const std::vector& inputs) { - std::vector outputs{% if function|noutputs %}({{function|noutputs}}){% endif %}; - {{ functional.handleInputs(function) }} - {{ functional.composeWithExceptionHandler(function) }} - {{ functional.handleOutputs(function) }} - return outputs; -} -{% endif %} -{% endfor %} - -Map createMethodMap() { - Map m; - {% for function in clss.methods %} - m["{{function.name}}"] = &{{function.name}}; - {% endfor %} - - return m; -} -static const Map methods = createMethodMap(); - -// map of created {{clss.name}} instances. Don't trust the user to keep them safe... -static Map instances; - -/* - * {{ clss.name }} - * Gateway routine - * nlhs - number of return arguments - * plhs - pointers to return arguments - * nrhs - number of input arguments - * prhs - pointers to input arguments - */ -void mexFunction(int nlhs, mxArray* plhs[], - int nrhs, const mxArray* prhs[]) { - - // parse the inputs - Bridge method_name(prhs[0]); - - Bridge handle(prhs[1]); - std::vector brhs(prhs+2, prhs+nrhs); - - // retrieve the instance of interest - try { - {{clss.name}}& inst = instances.at(handle.address()); - } catch (const std::out_of_range& e) { - mexErrMsgTxt("Invalid object instance provided"); - } - - // invoke the correct method on the data - try { - std::vector blhs = (*methods.at(method_name))(inst, brhs); - } catch (const std::out_of_range& e) { - mexErrMsgTxt("Unknown method specified"); - } - - {% block postfun %} - {% endblock %} - - {% block cleanup %} - {% endblock %} - -} - -} // end namespace diff --git a/modules/matlab/generator/templates/template_class_base.m b/modules/matlab/generator/templates/template_class_base.m deleted file mode 100644 index a199b292a4..0000000000 --- a/modules/matlab/generator/templates/template_class_base.m +++ /dev/null @@ -1,31 +0,0 @@ -% {{clss.name | upper}} -% Matlab handle class for OpenCV object classes -% -% This file was autogenerated, do not modify. -% See LICENSE for full modification and redistribution details. -% Copyright {{time.strftime("%Y", time.localtime())}} The OpenCV Foundation -classdef {{clss.name}} < handle - properties (SetAccess = private, Hidden = true) - ptr_ = 0; % handle to the underlying c++ clss instance - end - - methods - % constructor - function this = {{clss.name}}(varargin) - this.ptr_ = {{clss.name}}Bridge('new', varargin{:}); - end - - % destructor - function delete(this) - {{clss.name}}Bridge(this.ptr_, 'delete'); - end - - {% for function in clss.functions %} - % {{function.__str__()}} - function varargout = {{function.name}}(this, varargin) - [varargout{1:nargout}] = {{clss.name}}Bridge('{{function.name}}', this.ptr_, varargin{:}); - end - - {% endfor %} - end -end diff --git a/modules/matlab/generator/templates/template_cvmex_base.m b/modules/matlab/generator/templates/template_cvmex_base.m deleted file mode 100644 index 7afaa2b997..0000000000 --- a/modules/matlab/generator/templates/template_cvmex_base.m +++ /dev/null @@ -1,46 +0,0 @@ -function mex(varargin) -%CV.MEX compile MEX-function with OpenCV linkages -% -% Usage: -% CV.MEX [options ...] file [file file ...] -% -% Description: -% CV.MEX compiles one or more C/C++ source files into a shared-library -% called a mex-file. This function is equivalent to the builtin MEX -% routine, with the notable exception that it automatically resolves -% OpenCV includes, and links in the OpenCV libraries where appropriate. -% It also forwards the flags used to build OpenCV, so architecture- -% specific optimizations can be used. -% -% CV.MEX is designed to be used in situations where the source(s) you -% are compiling contain OpenCV definitions. In such cases, it streamlines -% the finding and including of appropriate OpenCV libraries. -% -% See also: mex -% -% Copyright {{ time.strftime("%Y", time.localtime()) }} The OpenCV Foundation -% - - % forward the OpenCV build flags (C++ only) - EXTRA_FLAGS = ['"CXXFLAGS="\$CXXFLAGS '... - '{{ cv.flags | trim | wordwrap(60, false, '\'...\n \'') }}""']; - - % add the OpenCV include dirs - INCLUDE_DIRS = {{ cv.include_dirs | split | cellarray | wordwrap(60, false, '...\n ') }}; - - % add the lib dir (singular in both build tree and install tree) - LIB_DIR = '{{ cv.lib_dir }}'; - - % add the OpenCV libs. Only the used libs will actually be linked - LIBS = {{ cv.libs | split | cellarray | wordwrap(60, false, '...\n ') }}; - - % add the mex opts (usually at least -largeArrayDims) - OPTS = {{ cv.opts | split | cellarray | wordwrap(60, false, '...\n ') }}; - - % merge all of the default options (EXTRA_FLAGS, LIBS, etc) and the options - % and files passed by the user (varargin) into a single cell array - merged = [ {EXTRA_FLAGS}, INCLUDE_DIRS, {LIB_DIR}, LIBS, OPTS, varargin ]; - - % expand the merged argument list into the builtin mex utility - mex(merged{:}); -end diff --git a/modules/matlab/generator/templates/template_doc_base.m b/modules/matlab/generator/templates/template_doc_base.m deleted file mode 100644 index 3b1f641bfb..0000000000 --- a/modules/matlab/generator/templates/template_doc_base.m +++ /dev/null @@ -1,62 +0,0 @@ -{% import 'functional.cpp' as functional %} -{{ ('CV.' + fun.name | upper + ' ' + doc.brief | stripTags) | comment(75, '%') | matlabURL }} -% -% {{ functional.composeMatlab(fun) | upper }} -{% if doc.long %} -{{ doc.long | stripTags | qualify(fun.name) | comment(75, '% ') | matlabURL }} -{% endif %} -% -{# ----------------------- Returns --------------------- #} -{% if fun.rtp|void|not or fun.req|outputs|length or fun.opt|outputs|length %} -% Returns: -{% if fun.rtp|void|not %} -% LVALUE -{% endif %} -{% for arg in fun.req|outputs + fun.opt|outputs %} -{% set uname = arg.name | upper + ('_OUT' if arg.I else '') %} -{% if arg.name in doc.params %} -{{ (uname + ' ' + doc.params[arg.name]) | stripTags | comment(75, '% ') }} -{% else %} -{{ uname }} -{% endif %} -{% endfor %} -% -{% endif %} -{# ----------------- Required Inputs ------------------- #} -{% if fun.req|inputs|length %} -% Required Inputs: -{% for arg in fun.req|inputs %} -{% set uname = arg.name | upper + ('_IN' if arg.O else '') %} -{% if arg.name in doc.params %} -{{ (uname + ' ' + doc.params[arg.name]) | stripTags | comment(75, '% ') }} -{% else %} -{% endif %} -{% endfor %} -% -{% endif %} -{# ------------------ Optional Inputs ------------------- #} -{% if fun.opt|inputs|length %} -% Optional Inputs: -{% for arg in fun.opt|inputs %} -{% set uname = arg.name | upper + ('_IN' if arg.O else '') + ' (default: ' + arg.default + ')' %} -{% if arg.name in doc.params %} -{{ (uname + ' ' + doc.params[arg.name]) | stripTags | comment(75, '% ') }} -{% else %} -{{ uname }} -{% endif %} -{% endfor %} -% -{% endif %} -{# ---------------------- See also --------------------- #} -{% if 'seealso' in doc %} -% See also: {% for item in doc['seealso'] %} -cv.{{ item }}{% if not loop.last %}, {% endif %} -{% endfor %} - -% -{% endif %} -{# ----------------------- Online ---------------------- #} -{% set url = 'http://docs.opencv.org/modules/' + doc.module + '/doc/' + (doc.file|filename) + '.html#' + (fun.name|slugify) %} -% Online docs: {{ url | matlabURL }} -% Copyright {{ time.strftime("%Y", time.localtime()) }} The OpenCV Foundation -% diff --git a/modules/matlab/generator/templates/template_function_base.cpp b/modules/matlab/generator/templates/template_function_base.cpp deleted file mode 100644 index 9d12ac2d7e..0000000000 --- a/modules/matlab/generator/templates/template_function_base.cpp +++ /dev/null @@ -1,60 +0,0 @@ -{% import 'functional.cpp' as functional %} -/* - * file: {{fun.name}}.cpp - * author: A trusty code generator - * date: {{time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime())}} - * - * This file was autogenerated, do not modify. - * See LICENSE for full modification and redistribution details. - * Copyright {{time.strftime("%Y", time.localtime())}} The OpenCV Foundation - */ -#include -#include -#include -#include -#include -#include -using namespace cv; -using namespace matlab; -using namespace bridge; - -/* - * {{ fun.name }} - * {{ fun }} - * Gateway routine - * nlhs - number of return arguments - * plhs - pointers to return arguments - * nrhs - number of input arguments - * prhs - pointers to input arguments - */ -void mexFunction(int nlhs, mxArray*{% if fun|noutputs %} plhs[]{% else %}*{% endif %}, - int nrhs, const mxArray*{% if fun|ninputs %} prhs[]{% else %}*{% endif %}) { - - {% if fun|ninputs %} - // parse the inputs - ArgumentParser parser("{{fun.name}}"); - parser.{{ functional.composeVariant(fun) }}; - MxArrayVector sorted = parser.parse(MxArrayVector(prhs, prhs+nrhs)); - {% endif %} - - {% if fun|ninputs or fun|noutputs %} - // setup - {% if fun|ninputs %} - BridgeVector inputs(sorted.begin(), sorted.end()); - {% endif -%} - {%- if fun|noutputs %} - BridgeVector outputs({{fun|noutputs}}); - {% endif %} - {% endif %} - - {{ functional.handleInputs(fun) }} - {{ functional.composeWithExceptionHandler(fun) }} - {{ functional.handleOutputs(fun) }} - - {% if fun|noutputs %} - // push the outputs back to matlab - for (size_t n = 0; n < static_cast(std::max(nlhs,1)); ++n) { - plhs[n] = outputs[n].toMxArray().releaseOwnership(); - } - {% endif %} -} diff --git a/modules/matlab/generator/templates/template_map_base.m b/modules/matlab/generator/templates/template_map_base.m deleted file mode 100644 index 8c653a4854..0000000000 --- a/modules/matlab/generator/templates/template_map_base.m +++ /dev/null @@ -1,71 +0,0 @@ -% ------------------------------------------------------------------------ -% OpenCV Toolbox -% Matlab bindings for the OpenCV library -% ------------------------------------------------------------------------ -% -% The OpenCV Toolbox allows you to make calls to native OpenCV methods -% and classes directly from within Matlab. -% -% PATHS -% To call OpenCV methods from anywhere in your workspace, add the -% directory containing this file to the path: -% -% addpath(fileparts(which('cv'))); -% -% The OpenCV Toolbox contains two important locations: -% cv.m - This file, containing OpenCV enums -% +cv/ - The directory containing the OpenCV methods and classes -% -% CALLING SYNTAX -% To call an OpenCV method, class or enum, it must be prefixed with the -% 'cv' qualifier. For example: -% -% % perform a Fourier transform -% Xf = cv.dft(X, cv.DFT_COMPLEX_OUTPUT); -% -% % create a VideoCapture object, and open a file -% camera = cv.VideoCapture(); -% camera.open('/path/to/file'); -% -% You can specify optional arguments by name, similar to how python -% and many builtin Matlab functions work. For example, the cv.dft -% method used above has an optional 'nonzeroRows' argument. If -% you want to specify that, but keep the default 'flags' behaviour, -% simply call the method as: -% -% Xf = cv.dft(X, 'nonzeroRows', 7); -% -% HELP -% Each method has its own help file containing information about the -% arguments, return values, and what operation the method performs. -% You can access this help information by typing: -% -% help cv.methodName -% -% The full list of methods can be found by inspecting the +cv/ -% directory. Note that the methods available to you will depend -% on which modules you configured OpenCV to build. -% -% DIAGNOSTICS -% If you are having problems with the OpenCV Toolbox and need to send a -% bug report to the OpenCV team, you can get a printout of diagnostic -% information to submit along with your report by typing: -% -% cv.buildInformation(); -% -% OTHER RESOURCES -% OpenCV documentation online: http://docs.opencv.org -% OpenCV issue tracker: http://code.opencv.org -% OpenCV Q&A: http://answers.opencv.org -% -% See also: cv.help, cv.buildInformation -% -% Copyright {{ time.strftime("%Y", time.localtime()) }} The OpenCV Foundation -% -classdef cv - properties (Constant = true) - {% for key, val in constants.items() %} - {{key}} = {{val|formatMatlabConstant(constants)}}; - {% endfor %} - end -end diff --git a/modules/matlab/include/opencv2/matlab/bridge.hpp b/modules/matlab/include/opencv2/matlab/bridge.hpp deleted file mode 100644 index a98c06a824..0000000000 --- a/modules/matlab/include/opencv2/matlab/bridge.hpp +++ /dev/null @@ -1,616 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this -// license. If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2013, OpenCV Foundation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote -// products derived from this software without specific prior written -// permission. -// -// This software is provided by the copyright holders and contributors "as is" -// and any express or implied warranties, including, but not limited to, the -// implied warranties of merchantability and fitness for a particular purpose -// are disclaimed. In no event shall the Intel Corporation or contributors be -// liable for any direct, indirect, incidental, special, exemplary, or -// consequential damages (including, but not limited to, procurement of -// substitute goods or services; loss of use, data, or profits; or business -// interruption) however caused and on any theory of liability, whether in -// contract, strict liability, or tort (including negligence or otherwise) -// arising in any way out of the use of this software, even if advised of the -// possibility of such damage. -// -//////////////////////////////////////////////////////////////////////////////// -#ifndef OPENCV_BRIDGE_HPP_ -#define OPENCV_BRIDGE_HPP_ - -#include "mxarray.hpp" -#include -#include -#include -#include -#include -#include -#include - -namespace cv { -namespace bridge { - -/* - * Custom typedefs - * Parsed names from the hdr_parser - */ -typedef std::vector vector_Mat; -typedef std::vector vector_Point; -typedef std::vector vector_int; -typedef std::vector vector_float; -typedef std::vector vector_String; -typedef std::vector vector_uchar; -typedef std::vector > vector_vector_char; -typedef std::vector > vector_vector_DMatch; -typedef std::vector vector_Rect; -typedef std::vector vector_KeyPoint; -typedef cv::Ptr Ptr_StereoBM; -typedef cv::Ptr Ptr_StereoSGBM; -typedef cv::Ptr Ptr_FeatureDetector; -typedef cv::Ptr Ptr_CLAHE; -typedef cv::Ptr Ptr_LineSegmentDetector; -typedef cv::Ptr Ptr_AlignMTB; -typedef cv::Ptr Ptr_CalibrateDebevec; -typedef cv::Ptr Ptr_CalibrateRobertson; -typedef cv::Ptr Ptr_DenseOpticalFlow; -typedef cv::Ptr Ptr_MergeDebevec; -typedef cv::Ptr Ptr_MergeMertens; -typedef cv::Ptr Ptr_MergeRobertson; -typedef cv::Ptr Ptr_Tonemap; -typedef cv::Ptr Ptr_TonemapDrago; -typedef cv::Ptr Ptr_TonemapDurand; -typedef cv::Ptr Ptr_TonemapMantiuk; -typedef cv::Ptr Ptr_TonemapReinhard; - - -// ---------------------------------------------------------------------------- -// PREDECLARATIONS -// ---------------------------------------------------------------------------- -class Bridge; -typedef std::vector BridgeVector; - -template -void deepCopyAndTranspose(const cv::Mat& src, matlab::MxArray& dst); - -template -void deepCopyAndTranspose(const matlab::MxArray& src, cv::Mat& dst); - - - - -// ---------------------------------------------------------------------------- -// BRIDGE -// ---------------------------------------------------------------------------- - -/*! - * @class Bridge - * @brief Type conversion class for converting OpenCV and native C++ types - * - * Bridge provides an interface for converting between OpenCV/C++ types - * to Matlab's mxArray format. - * - * Each type conversion requires three operators: - * // conversion from ObjectType --> Bridge - * Bridge& operator=(const ObjectType&); - * // implicit conversion from Bridge --> ObjectType - * operator ObjectType(); - * // explicit conversion from Bridge --> ObjectType - * ObjectType toObjectType(); - * - * The bridging class provides common conversions between OpenCV types, - * std and stl types to Matlab's mxArray format. By inheriting Bridge, - * you can add your own custom type conversions. - * - * Because Matlab uses a homogeneous storage type, all operations are provided - * relative to Matlab's type. That is, Bridge always stores an matlab::MxArray object - * and converts to and from other object types on demand. - * - * NOTE: for the explicit conversion function, the object name must be - * in UpperCamelCase, for example: - * int --> toInt - * my_object --> MyObject - * my_Object --> MyObject - * myObject --> MyObject - * this is because the binding generator standardises the calling syntax. - * - * Bridge attempts to make as few assumptions as possible, however in - * some cases where 1-to-1 mappings don't exist, some assumptions are necessary. - * In particular: - * - conversion from of a 2-channel Mat to an mxArray will result in a complex - * output - * - conversion from multi-channel interleaved Mats will result in - * multichannel planar mxArrays - * - */ -class Bridge { -private: - matlab::MxArray ptr_; -public: - // bridges are default constructible - Bridge() {} - virtual ~Bridge() {} - - // -------------------------------------------------------------------------- - // Bridge Properties - // -------------------------------------------------------------------------- - bool empty() const { return ptr_.empty(); } - - /*! @brief unpack an object from Matlab into C++ - * - * this function checks whether the given bridge is derived from an - * object in Matlab. If so, it converts it to a (platform dependent) - * pointer to the underlying C++ object. - * - * NOTE! This function assumes that the C++ pointer is stored in inst_ - */ - template - Object* getObjectByName(const std::string& name) { - // check that the object is actually of correct type before unpacking - // TODO: Traverse class hierarchy? - if (!ptr_.isClass(name)) { - matlab::error(std::string("Expected class ").append(std::string(name)) - .append(" but was given ").append(ptr_.className())); - } - // get the instance field - matlab::MxArray inst = ptr_.field("inst_"); - Object* obj = NULL; - // make sure the pointer is the correct size for the system - if (sizeof(void *) == 8 && inst.ID() == mxUINT64_CLASS) { - // 64-bit pointers - // TODO: Do we REALLY REALLY need to reinterpret_cast? - obj = reinterpret_cast(inst.scalar()); - } else if (sizeof(void *) == 4 && inst.ID() == mxUINT32_CLASS) { - // 32-bit pointers - obj = reinterpret_cast(inst.scalar()); - } else { - matlab::error("Incorrect pointer type stored for architecture"); - } - - // finally check if the object is NULL - matlab::conditionalError(obj, std::string("Object ").append(std::string(name)).append(std::string(" is NULL"))); - return obj; - } - - - // -------------------------------------------------------------------------- - // MATLAB TYPES - // -------------------------------------------------------------------------- - Bridge& operator=(const mxArray* obj) { ptr_ = obj; return *this; } - Bridge& operator=(const matlab::MxArray& obj) { ptr_ = obj; return *this; } - Bridge(const matlab::MxArray& obj) : ptr_(obj) {} - Bridge(const mxArray* obj) : ptr_(obj) {} - matlab::MxArray toMxArray() { return ptr_; } - - - // -------------------------------------------------------------------------- - // MATRIX CONVERSIONS - // -------------------------------------------------------------------------- - Bridge& operator=(const cv::Mat& mat); - cv::Mat toMat() const; - operator cv::Mat() const { return toMat(); } - - template - static matlab::MxArray FromMat(const cv::Mat& mat) { - matlab::MxArray arr(mat.rows, mat.cols, mat.channels(), matlab::Traits::ScalarType); - switch (mat.depth()) { - case CV_8U: deepCopyAndTranspose(mat, arr); break; - case CV_8S: deepCopyAndTranspose(mat, arr); break; - case CV_16U: deepCopyAndTranspose(mat, arr); break; - case CV_16S: deepCopyAndTranspose(mat, arr); break; - case CV_32S: deepCopyAndTranspose(mat, arr); break; - case CV_32F: deepCopyAndTranspose(mat, arr); break; - case CV_64F: deepCopyAndTranspose(mat, arr); break; - default: matlab::error("Attempted to convert from unknown class"); - } - return arr; - } - - template - cv::Mat toMat() const { - cv::Mat mat(ptr_.rows(), ptr_.cols(), CV_MAKETYPE(cv::DataType::type, ptr_.channels())); - switch (ptr_.ID()) { - case mxINT8_CLASS: deepCopyAndTranspose(ptr_, mat); break; - case mxUINT8_CLASS: deepCopyAndTranspose(ptr_, mat); break; - case mxINT16_CLASS: deepCopyAndTranspose(ptr_, mat); break; - case mxUINT16_CLASS: deepCopyAndTranspose(ptr_, mat); break; - case mxINT32_CLASS: deepCopyAndTranspose(ptr_, mat); break; - case mxUINT32_CLASS: deepCopyAndTranspose(ptr_, mat); break; - case mxINT64_CLASS: deepCopyAndTranspose(ptr_, mat); break; - case mxUINT64_CLASS: deepCopyAndTranspose(ptr_, mat); break; - case mxSINGLE_CLASS: deepCopyAndTranspose(ptr_, mat); break; - case mxDOUBLE_CLASS: deepCopyAndTranspose(ptr_, mat); break; - case mxCHAR_CLASS: deepCopyAndTranspose(ptr_, mat); break; - case mxLOGICAL_CLASS: deepCopyAndTranspose(ptr_, mat); break; - default: matlab::error("Attempted to convert from unknown class"); - } - return mat; - } - - - - // -------------------------------------------------------------------------- - // INTEGRAL TYPES - // -------------------------------------------------------------------------- - - // --------------------------- string -------------------------------------- - Bridge& operator=(const std::string& ) { return *this; } - std::string toString() { - return ptr_.toString(); - } - operator std::string() { return toString(); } - - // --------------------------- bool -------------------------------------- - Bridge& operator=(const bool& ) { return *this; } - bool toBool() { return 0; } - operator bool() { return toBool(); } - - // --------------------------- double -------------------------------------- - Bridge& operator=(const double& ) { return *this; } - double toDouble() { return ptr_.scalar(); } - operator double() { return toDouble(); } - - // --------------------------- float --------------------------------------- - Bridge& operator=(const float& ) { return *this; } - float toFloat() { return ptr_.scalar(); } - operator float() { return toFloat(); } - - // --------------------------- int -------------------------------------- - Bridge& operator=(const int& ) { return *this; } - int toInt() { return ptr_.scalar(); } - operator int() { return toInt(); } - - - - - - // -------------------------------------------------------------------------- - // CORE OPENCV TYPES - // -------------------------------------------------------------------------- - - // -------------------------- Point -------------------------------------- - Bridge& operator=(const cv::Point& ) { return *this; } - cv::Point toPoint() const { return cv::Point(); } - operator cv::Point() const { return toPoint(); } - - // -------------------------- Point2f ------------------------------------ - Bridge& operator=(const cv::Point2f& ) { return *this; } - cv::Point2f toPoint2f() const { return cv::Point2f(); } - operator cv::Point2f() const { return toPoint2f(); } - - // -------------------------- Point2d ------------------------------------ - Bridge& operator=(const cv::Point2d& ) { return *this; } - cv::Point2d toPoint2d() const { return cv::Point2d(); } - operator cv::Point2d() const { return toPoint2d(); } - - // -------------------------- Size --------------------------------------- - Bridge& operator=(const cv::Size& ) { return *this; } - cv::Size toSize() const { return cv::Size(); } - operator cv::Size() const { return toSize(); } - - // -------------------------- Moments -------------------------------------- - Bridge& operator=(const cv::Moments& ) { return *this; } - cv::Moments toMoments() const { return cv::Moments(); } - operator cv::Moments() const { return toMoments(); } - - // -------------------------- Scalar -------------------------------------- - Bridge& operator=(const cv::Scalar& ) { return *this; } - cv::Scalar toScalar() { return cv::Scalar(); } - operator cv::Scalar() { return toScalar(); } - - // -------------------------- Rect ----------------------------------------- - Bridge& operator=(const cv::Rect& ) { return *this; } - cv::Rect toRect() { return cv::Rect(); } - operator cv::Rect() { return toRect(); } - - // ---------------------- RotatedRect --------------------------------------- - Bridge& operator=(const cv::RotatedRect& ) { return *this; } - cv::RotatedRect toRotatedRect() { return cv::RotatedRect(); } - operator cv::RotatedRect() { return toRotatedRect(); } - - // ---------------------- TermCriteria -------------------------------------- - Bridge& operator=(const cv::TermCriteria& ) { return *this; } - cv::TermCriteria toTermCriteria() { return cv::TermCriteria(); } - operator cv::TermCriteria() { return toTermCriteria(); } - - // ---------------------- RNG -------------------------------------- - Bridge& operator=(const cv::RNG& ) { return *this; } - /*! @brief explicit conversion to cv::RNG() - * - * Converts a bridge object to a cv::RNG(). We explicitly assert that - * the object is an RNG in matlab space before attempting to deference - * its pointer - */ - cv::RNG toRNG() { - return (*getObjectByName("RNG")); - } - operator cv::RNG() { return toRNG(); } - - - - - - // -------------------------------------------------------------------------- - // OPENCV VECTOR TYPES - // -------------------------------------------------------------------------- - - // -------------------- vector_Mat ------------------------------------------ - Bridge& operator=(const vector_Mat& ) { return *this; } - vector_Mat toVectorMat() { return vector_Mat(); } - operator vector_Mat() { return toVectorMat(); } - - // --------------------------- vector_int ---------------------------------- - Bridge& operator=(const vector_int& ) { return *this; } - vector_int toVectorInt() { return vector_int(); } - operator vector_int() { return toVectorInt(); } - - // --------------------------- vector_float -------------------------------- - Bridge& operator=(const vector_float& ) { return *this; } - vector_float toVectorFloat() { return vector_float(); } - operator vector_float() { return toVectorFloat(); } - - // --------------------------- vector_Rect --------------------------------- - Bridge& operator=(const vector_Rect& ) { return *this; } - vector_Rect toVectorRect() { return vector_Rect(); } - operator vector_Rect() { return toVectorRect(); } - - // --------------------------- vector_KeyPoint ----------------------------- - Bridge& operator=(const vector_KeyPoint& ) { return *this; } - vector_KeyPoint toVectorKeyPoint() { return vector_KeyPoint(); } - operator vector_KeyPoint() { return toVectorKeyPoint(); } - - // --------------------------- vector_String ------------------------------- - Bridge& operator=(const vector_String& ) { return *this; } - vector_String toVectorString() { return vector_String(); } - operator vector_String() { return toVectorString(); } - - // ------------------------ vector_Point ------------------------------------ - Bridge& operator=(const vector_Point& ) { return *this; } - vector_Point toVectorPoint() { return vector_Point(); } - operator vector_Point() { return toVectorPoint(); } - - // ------------------------ vector_uchar ------------------------------------ - Bridge& operator=(const vector_uchar& ) { return *this; } - vector_uchar toVectorUchar() { return vector_uchar(); } - operator vector_uchar() { return toVectorUchar(); } - - // ------------------------ vector_vector_char ------------------------------ - Bridge& operator=(const vector_vector_char& ) { return *this; } - vector_vector_char toVectorVectorChar() { return vector_vector_char(); } - operator vector_vector_char() { return toVectorVectorChar(); } - - // ------------------------ vector_vector_DMatch --------------------------- - Bridge& operator=(const vector_vector_DMatch& ) { return *this; } - vector_vector_DMatch toVectorVectorDMatch() { return vector_vector_DMatch(); } - operator vector_vector_DMatch() { return toVectorVectorDMatch(); } - - - - - // -------------------------------------------------------------------------- - // OPENCV COMPOUND TYPES - // -------------------------------------------------------------------------- - - // --------------------------- Ptr_StereoBM ----------------------------- - Bridge& operator=(const Ptr_StereoBM& ) { return *this; } - Ptr_StereoBM toPtrStereoBM() { return Ptr_StereoBM(); } - operator Ptr_StereoBM() { return toPtrStereoBM(); } - - // --------------------------- Ptr_StereoSGBM --------------------------- - Bridge& operator=(const Ptr_StereoSGBM& ) { return *this; } - Ptr_StereoSGBM toPtrStereoSGBM() { return Ptr_StereoSGBM(); } - operator Ptr_StereoSGBM() { return toPtrStereoSGBM(); } - - // --------------------------- Ptr_FeatureDetector ---------------------- - Bridge& operator=(const Ptr_FeatureDetector& ) { return *this; } - Ptr_FeatureDetector toPtrFeatureDetector() { return Ptr_FeatureDetector(); } - operator Ptr_FeatureDetector() { return toPtrFeatureDetector(); } - - // --------------------------- Ptr_CLAHE -------------------------------- - Bridge& operator=(const Ptr_CLAHE& ) { return *this; } - Ptr_CLAHE toPtrCLAHE() { return Ptr_CLAHE(); } - operator Ptr_CLAHE() { return toPtrCLAHE(); } - - // --------------------------- Ptr_LineSegmentDetector ------------------ - Bridge& operator=(const Ptr_LineSegmentDetector& ) { return *this; } - Ptr_LineSegmentDetector toPtrLineSegmentDetector() { return Ptr_LineSegmentDetector(); } - operator Ptr_LineSegmentDetector() { return toPtrLineSegmentDetector(); } - - // --------------------------- Ptr_AlignMTB ----------------------------- - Bridge& operator=(const Ptr_AlignMTB& ) { return *this; } - Ptr_AlignMTB toPtrAlignMTB() { return Ptr_AlignMTB(); } - operator Ptr_AlignMTB() { return toPtrAlignMTB(); } - - // --------------------------- Ptr_CalibrateDebevec ------------------- - Bridge& operator=(const Ptr_CalibrateDebevec& ) { return *this; } - Ptr_CalibrateDebevec toPtrCalibrateDebevec() { return Ptr_CalibrateDebevec(); } - operator Ptr_CalibrateDebevec() { return toPtrCalibrateDebevec(); } - - // --------------------------- Ptr_CalibrateRobertson ------------------- - Bridge& operator=(const Ptr_CalibrateRobertson& ) { return *this; } - Ptr_CalibrateRobertson toPtrCalibrateRobertson() { return Ptr_CalibrateRobertson(); } - operator Ptr_CalibrateRobertson() { return toPtrCalibrateRobertson(); } - - // --------------------------- Ptr_DenseOpticalFlow ------------------- - Bridge& operator=(const Ptr_DenseOpticalFlow& ) { return *this; } - Ptr_DenseOpticalFlow toPtrDenseOpticalFlow() { return Ptr_DenseOpticalFlow(); } - operator Ptr_DenseOpticalFlow() { return toPtrDenseOpticalFlow(); } - - // --------------------------- Ptr_MergeDebevec ----------------------- - Bridge& operator=(const Ptr_MergeDebevec& ) { return *this; } - Ptr_MergeDebevec toPtrMergeDebevec() { return Ptr_MergeDebevec(); } - operator Ptr_MergeDebevec() { return toPtrMergeDebevec(); } - - // --------------------------- Ptr_MergeMertens ----------------------- - Bridge& operator=(const Ptr_MergeMertens& ) { return *this; } - Ptr_MergeMertens toPtrMergeMertens() { return Ptr_MergeMertens(); } - operator Ptr_MergeMertens() { return toPtrMergeMertens(); } - - // --------------------------- Ptr_MergeRobertson ----------------------- - Bridge& operator=(const Ptr_MergeRobertson& ) { return *this; } - Ptr_MergeRobertson toPtrMergeRobertson() { return Ptr_MergeRobertson(); } - operator Ptr_MergeRobertson() { return toPtrMergeRobertson(); } - - // --------------------------- Ptr_Tonemap ------------------------------ - Bridge& operator=(const Ptr_Tonemap& ) { return *this; } - Ptr_Tonemap toPtrTonemap() { return Ptr_Tonemap(); } - operator Ptr_Tonemap() { return toPtrTonemap(); } - - // --------------------------- Ptr_TonemapDrago ------------------------- - Bridge& operator=(const Ptr_TonemapDrago& ) { return *this; } - Ptr_TonemapDrago toPtrTonemapDrago() { return Ptr_TonemapDrago(); } - operator Ptr_TonemapDrago() { return toPtrTonemapDrago(); } - - // --------------------------- Ptr_TonemapDurand ------------------------ - Bridge& operator=(const Ptr_TonemapDurand& ) { return *this; } - Ptr_TonemapDurand toPtrTonemapDurand() { return Ptr_TonemapDurand(); } - operator Ptr_TonemapDurand() { return toPtrTonemapDurand(); } - - // --------------------------- Ptr_TonemapMantiuk ----------------------- - Bridge& operator=(const Ptr_TonemapMantiuk& ) { return *this; } - Ptr_TonemapMantiuk toPtrTonemapMantiuk() { return Ptr_TonemapMantiuk(); } - operator Ptr_TonemapMantiuk() { return toPtrTonemapMantiuk(); } - - // --------------------------- Ptr_TonemapReinhard ---------------------- - Bridge& operator=(const Ptr_TonemapReinhard& ) { return *this; } - Ptr_TonemapReinhard toPtrTonemapReinhard() { return Ptr_TonemapReinhard(); } - operator Ptr_TonemapReinhard() { return toPtrTonemapReinhard(); } -}; // class Bridge - - - -// -------------------------------------------------------------------------- -// SPECIALIZATIONS -// -------------------------------------------------------------------------- - -/*! - * @brief template specialization for inheriting types - * - * This template specialization attempts to preserve the best mapping - * between OpenCV and Matlab types. Matlab uses double types almost universally, so - * all floating float types are converted to doubles. - * Unfortunately OpenCV does not have a native logical type, so - * that gets mapped to an unsigned 8-bit value - */ -template <> -matlab::MxArray Bridge::FromMat(const cv::Mat& mat) { - switch (mat.depth()) { - case CV_8U: return FromMat(mat); - case CV_8S: return FromMat(mat); - case CV_16U: return FromMat(mat); - case CV_16S: return FromMat(mat); - case CV_32S: return FromMat(mat); - case CV_32F: return FromMat(mat); //NOTE: Matlab uses double as native type! - case CV_64F: return FromMat(mat); - default: matlab::error("Attempted to convert from unknown class"); - } - return matlab::MxArray(); -} - -/*! - * @brief template specialization for inheriting types - * - * This template specialization attempts to preserve the best mapping - * between Matlab and OpenCV types. OpenCV has poor support for double precision - * types, so all floating point types are cast to float. Logicals get cast - * to unsignd 8-bit value. - */ -template <> -cv::Mat Bridge::toMat() const { - switch (ptr_.ID()) { - case mxINT8_CLASS: return toMat(); - case mxUINT8_CLASS: return toMat(); - case mxINT16_CLASS: return toMat(); - case mxUINT16_CLASS: return toMat(); - case mxINT32_CLASS: return toMat(); - case mxUINT32_CLASS: return toMat(); - case mxINT64_CLASS: return toMat(); - case mxUINT64_CLASS: return toMat(); - case mxSINGLE_CLASS: return toMat(); - case mxDOUBLE_CLASS: return toMat(); //NOTE: OpenCV uses float as native type! - case mxCHAR_CLASS: return toMat(); - case mxLOGICAL_CLASS: return toMat(); - default: matlab::error("Attempted to convert from unknown class"); - } - return cv::Mat(); -} - -Bridge& Bridge::operator=(const cv::Mat& mat) { ptr_ = FromMat(mat); return *this; } -cv::Mat Bridge::toMat() const { return toMat(); } - - -// ---------------------------------------------------------------------------- -// MATRIX TRANSPOSE -// ---------------------------------------------------------------------------- - - -template -void deepCopyAndTranspose(const cv::Mat& in, matlab::MxArray& out) { - matlab::conditionalError(static_cast(in.rows) == out.rows(), "Matrices must have the same number of rows"); - matlab::conditionalError(static_cast(in.cols) == out.cols(), "Matrices must have the same number of cols"); - matlab::conditionalError(static_cast(in.channels()) == out.channels(), "Matrices must have the same number of channels"); - std::vector channels; - cv::split(in, channels); - for (size_t c = 0; c < out.channels(); ++c) { - cv::transpose(channels[c], channels[c]); - cv::Mat outmat(out.cols(), out.rows(), cv::DataType::type, - static_cast(out.real() + out.cols()*out.rows()*c)); - channels[c].convertTo(outmat, cv::DataType::type); - } - - //const InputScalar* inp = in.ptr(0); - //OutputScalar* outp = out.real(); - //gemt('R', out.rows(), out.cols(), inp, in.step1(), outp, out.rows()); -} - -template -void deepCopyAndTranspose(const matlab::MxArray& in, cv::Mat& out) { - matlab::conditionalError(in.rows() == static_cast(out.rows), "Matrices must have the same number of rows"); - matlab::conditionalError(in.cols() == static_cast(out.cols), "Matrices must have the same number of cols"); - matlab::conditionalError(in.channels() == static_cast(out.channels()), "Matrices must have the same number of channels"); - std::vector channels; - for (size_t c = 0; c < in.channels(); ++c) { - cv::Mat outmat; - cv::Mat inmat(in.cols(), in.rows(), cv::DataType::type, - static_cast(const_cast(in.real() + in.cols()*in.rows()*c))); - inmat.convertTo(outmat, cv::DataType::type); - cv::transpose(outmat, outmat); - channels.push_back(outmat); - } - cv::merge(channels, out); - - //const InputScalar* inp = in.real(); - //OutputScalar* outp = out.ptr(0); - //gemt('C', in.rows(), in.cols(), inp, in.rows(), outp, out.step1()); -} - - - -} // namespace bridge -} // namespace cv - -#endif diff --git a/modules/matlab/include/opencv2/matlab/map.hpp b/modules/matlab/include/opencv2/matlab/map.hpp deleted file mode 100644 index 4d4fc649cb..0000000000 --- a/modules/matlab/include/opencv2/matlab/map.hpp +++ /dev/null @@ -1,91 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this -// license. If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2013, OpenCV Foundation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote -// products derived from this software without specific prior written -// permission. -// -// This software is provided by the copyright holders and contributors "as is" -// and any express or implied warranties, including, but not limited to, the -// implied warranties of merchantability and fitness for a particular purpose -// are disclaimed. In no event shall the Intel Corporation or contributors be -// liable for any direct, indirect, incidental, special, exemplary, or -// consequential damages (including, but not limited to, procurement of -// substitute goods or services; loss of use, data, or profits; or business -// interruption) however caused and on any theory of liability, whether in -// contract, strict liability, or tort (including negligence or otherwise) -// arising in any way out of the use of this software, even if advised of the -// possibility of such damage. -// -//////////////////////////////////////////////////////////////////////////////// -#ifndef OPENCV_MAP_HPP_ -#define OPENCV_MAP_HPP_ - -namespace matlab { -#if __cplusplus >= 201103L - - // If we have C++11 support, we just want to use unordered_map -#include -template -using Map = std::unordered_map; - -#else - -// If we don't have C++11 support, we wrap another map implementation -// in the same public API as unordered_map -#include -#include - -template -class Map { -private: - std::map map_; -public: - // map[key] = val; - ValueType& operator[] (const KeyType& k) { - return map_[k]; - } - - // map.at(key) = val (throws) - ValueType& at(const KeyType& k) { - typename std::map::iterator it; - it = map_.find(k); - if (it == map_.end()) throw std::out_of_range("Key not found"); - return *it; - } - - // val = map.at(key) (throws, const) - const ValueType& at(const KeyType& k) const { - typename std::map::const_iterator it; - it = map_.find(k); - if (it == map_.end()) throw std::out_of_range("Key not found"); - return *it; - } -}; - -} // namespace matlab - -#endif -#endif diff --git a/modules/matlab/include/opencv2/matlab/mxarray.hpp b/modules/matlab/include/opencv2/matlab/mxarray.hpp deleted file mode 100644 index ba8c64c496..0000000000 --- a/modules/matlab/include/opencv2/matlab/mxarray.hpp +++ /dev/null @@ -1,684 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this -// license. If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2013, OpenCV Foundation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote -// products derived from this software without specific prior written -// permission. -// -// This software is provided by the copyright holders and contributors "as is" -// and any express or implied warranties, including, but not limited to, the -// implied warranties of merchantability and fitness for a particular purpose -// are disclaimed. In no event shall the Intel Corporation or contributors be -// liable for any direct, indirect, incidental, special, exemplary, or -// consequential damages (including, but not limited to, procurement of -// substitute goods or services; loss of use, data, or profits; or business -// interruption) however caused and on any theory of liability, whether in -// contract, strict liability, or tort (including negligence or otherwise) -// arising in any way out of the use of this software, even if advised of the -// possibility of such damage. -// -//////////////////////////////////////////////////////////////////////////////// -#ifndef OPENCV_MXARRAY_HPP_ -#define OPENCV_MXARRAY_HPP_ - -#include -#include -#include -#include -#include -#include -#include -#if __cplusplus > 201103 -#include -typedef std::unordered_set StringSet; -#else -#include -typedef std::set StringSet; -#endif - -/* - * All recent versions of Matlab ship with the MKL library which contains - * a blas extension called mkl_?omatcopy(). This defines an out-of-place - * copy and transpose operation. - * - * The mkl library is in ${MATLAB_ROOT}/bin/${MATLAB_MEXEXT}/libmkl... - * Matlab does not ship headers for the mkl functions, so we define them - * here. - * - */ -#ifdef __cplusplus -extern "C" { -#endif -#ifdef __cplusplus -} -#endif - -namespace matlab { -// ---------------------------------------------------------------------------- -// PREDECLARATIONS -// ---------------------------------------------------------------------------- -class MxArray; -typedef std::vector MxArrayVector; - -/*! - * @brief raise error if condition fails - * - * This is a conditional wrapper for mexErrMsgTxt. If the conditional - * expression fails, an error is raised and the mex function returns - * to Matlab, otherwise this function does nothing - */ -static void conditionalError(bool expr, const std::string& str) { - if (!expr) mexErrMsgTxt(std::string("condition failed: ").append(str).c_str()); -} - -/*! - * @brief raise an error - * - * This function is a wrapper around mexErrMsgTxt - */ -static void error(const std::string& str) { - mexErrMsgTxt(str.c_str()); -} - - -// ---------------------------------------------------------------------------- -// MATLAB TRAITS -// ---------------------------------------------------------------------------- -class DefaultTraits {}; -class InheritType {}; - -template class Traits { -public: - static const mxClassID ScalarType = mxUNKNOWN_CLASS; - static const mxComplexity Complex = mxCOMPLEX; - static const mxComplexity Real = mxREAL; - static std::string ToString() { return "Unknown/Unsupported"; } -}; -// bool -template<> class Traits { -public: - static const mxClassID ScalarType = mxLOGICAL_CLASS; - static std::string ToString() { return "boolean"; } -}; -// uint8_t -template<> class Traits { -public: - static const mxClassID ScalarType = mxUINT8_CLASS; - static std::string ToString() { return "uint8_t"; } -}; -// int8_t -template<> class Traits { -public: - static const mxClassID ScalarType = mxINT8_CLASS; - static std::string ToString() { return "int8_t"; } -}; -// uint16_t -template<> class Traits { -public: - static const mxClassID ScalarType = mxUINT16_CLASS; - static std::string ToString() { return "uint16_t"; } -}; -// int16_t -template<> class Traits { -public: - static const mxClassID ScalarType = mxINT16_CLASS; - static std::string ToString() { return "int16_t"; } -}; -// uint32_t -template<> class Traits { -public: - static const mxClassID ScalarType = mxUINT32_CLASS; - static std::string ToString() { return "uint32_t"; } -}; -// int32_t -template<> class Traits { -public: - static const mxClassID ScalarType = mxINT32_CLASS; - static std::string ToString() { return "int32_t"; } -}; -// uint64_t -template<> class Traits { -public: - static const mxClassID ScalarType = mxUINT64_CLASS; - static std::string ToString() { return "uint64_t"; } -}; -// int64_t -template<> class Traits { -public: - static const mxClassID ScalarType = mxINT64_CLASS; - static std::string ToString() { return "int64_t"; } -}; -// float -template<> class Traits { -public: - static const mxClassID ScalarType = mxSINGLE_CLASS; - static std::string ToString() { return "float"; } -}; -// double -template<> class Traits { -public: - static const mxClassID ScalarType = mxDOUBLE_CLASS; - static std::string ToString() { return "double"; } -}; -// char -template<> class Traits { -public: - static const mxClassID ScalarType = mxCHAR_CLASS; - static std::string ToString() { return "char"; } -}; -// inherited type -template<> class Traits { -public: - static std::string ToString() { return "Inherited type"; } -}; - - - -// ---------------------------------------------------------------------------- -// MXARRAY -// ---------------------------------------------------------------------------- - - -/*! - * @class MxArray - * @brief A thin wrapper around Matlab's mxArray types - * - * MxArray provides a thin object oriented wrapper around Matlab's - * native mxArray type which exposes most of the functionality of the - * Matlab interface, but in a more C++ manner. MxArray objects are scoped, - * so you can freely create and destroy them without worrying about memory - * management. If you wish to pass the underlying mxArray* representation - * back to Matlab as an lvalue, see the releaseOwnership() method - * - * MxArrays can be directly converted into OpenCV mat objects and std::string - * objects, since there is a natural mapping between these types. More - * complex types are mapped through the Bridge which does custom conversions - * such as MxArray --> cv::Keypoints, etc - */ -class MxArray { -private: - mxArray* ptr_; - bool owns_; - - /*! - * @brief swap all members of this and other - * - * the swap method is used by the assignment and move constructors - * to swap the members of two MxArrays, leaving both in destructible states - */ - friend void swap(MxArray& first, MxArray& second) { - using std::swap; - swap(first.ptr_, second.ptr_); - swap(first.owns_, second.owns_); - } - - void dealloc() { - if (owns_ && ptr_) { mxDestroyArray(ptr_); ptr_ = NULL; owns_ = false; } - } -public: - // -------------------------------------------------------------------------- - // CONSTRUCTORS - // -------------------------------------------------------------------------- - /*! - * @brief default constructor - * - * Construct a valid 0x0 matrix (so all other methods do not need validity checks) - */ - MxArray() : ptr_(mxCreateDoubleMatrix(0, 0, matlab::Traits<>::Real)), owns_(true) {} - - /*! - * @brief destructor - * - * The destructor deallocates any data allocated by mxCreate* methods only - * if the object is owned - */ - virtual ~MxArray() { - dealloc(); - } - - /*! - * @brief inheriting constructor - * - * Inherit an mxArray from Matlab. Don't claim ownership of the array, - * just encapsulate it - */ - MxArray(const mxArray* ptr) : ptr_(const_cast(ptr)), owns_(false) {} - MxArray& operator=(const mxArray* ptr) { - dealloc(); - ptr_ = const_cast(ptr); - owns_ = false; - return *this; - } - - /*! - * @brief explicit typed constructor - * - * This constructor explicitly creates an MxArray of the given size and type. - */ - MxArray(size_t m, size_t n, size_t k, mxClassID id, mxComplexity com = matlab::Traits<>::Real) - : ptr_(NULL), owns_(true) { - mwSize dims[] = { static_cast(m), static_cast(n), static_cast(k) }; - ptr_ = mxCreateNumericArray(3, dims, id, com); - } - - /*! - * @brief explicit tensor constructor - * - * Explicitly construct a tensor of given size and type. Since constructors cannot - * be explicitly templated, this is a static factory method - */ - template - static MxArray Tensor(size_t m, size_t n, size_t k=1) { - return MxArray(m, n, k, matlab::Traits::ScalarType); - } - - /*! - * @brief explicit matrix constructor - * - * Explicitly construct a matrix of given size and type. Since constructors cannot - * be explicitly templated, this is a static factory method - */ - template - static MxArray Matrix(size_t m, size_t n) { - return MxArray(m, n, 1, matlab::Traits::ScalarType); - } - - /*! - * @brief explicit vector constructor - * - * Explicitly construct a vector of given size and type. Since constructors cannot - * be explicitly templated, this is a static factory method - */ - template - static MxArray Vector(size_t m) { - return MxArray(m, 1, 1, matlab::Traits::ScalarType); - } - - /*! - * @brief explicit scalar constructor - * - * Explicitly construct a scalar of given type. Since constructors cannot - * be explicitly templated, this is a static factory method - */ - template - static MxArray Scalar(ScalarType value = 0) { - MxArray s(1, 1, 1, matlab::Traits::ScalarType); - s.real()[0] = value; - return s; - } - - /*! - * @brief copy constructor - * - * All copies are deep copies. If you have a C++11 compatible compiler, prefer - * move construction to copy construction - */ - MxArray(const MxArray& other) : ptr_(mxDuplicateArray(other.ptr_)), owns_(true) {} - - /*! - * @brief copy-and-swap assignment - * - * This assignment operator uses the copy and swap idiom to provide a strong - * exception guarantee when swapping two objects. - * - * Note in particular that the other MxArray is passed by value, thus invoking - * the copy constructor which performs a deep copy of the input. The members of - * this and other are then swapped - */ - MxArray& operator=(MxArray other) { - swap(*this, other); - return *this; - } -#if __cplusplus >= 201103L - /* - * @brief C++11 move constructor - * - * When C++11 support is available, move construction is used to move returns - * out of functions, etc. This is much fast than copy construction, since the - * move constructed object replaced itself with a default constructed MxArray, - * which is of size 0 x 0. - */ - MxArray(MxArray&& other) : MxArray() { - swap(*this, other); - } -#endif - - /* - * @brief release ownership to allow return into Matlab workspace - * - * MxArray is not directly convertible back to mxArray types through assignment - * because the MxArray may have been allocated on the free store, making it impossible - * to know whether the returned pointer will be released by someone else or not. - * - * Since Matlab requires mxArrays be passed back into the workspace, the only way - * to achieve that is through this function, which explicitly releases ownership - * of the object, assuming the Matlab interpreter receving the object will delete - * it at a later time - * - * e.g. - * { - * MxArray A = MxArray::Matrix(5, 5); // allocates memory - * MxArray B = MxArray::Matrix(5, 5); // ditto - * plhs[0] = A; // not allowed!! - * plhs[0] = A.releaseOwnership(); // makes explicit that ownership is being released - * } // end of scope. B is released, A isn't - * - */ - mxArray* releaseOwnership() { - owns_ = false; - return ptr_; - } - - MxArray field(const std::string& name) { return MxArray(mxGetField(ptr_, 0, name.c_str())); } - - template - Scalar* real() { return static_cast(mxGetData(ptr_)); } - - template - Scalar* imag() { return static_cast(mxGetImagData(ptr_)); } - - template - const Scalar* real() const { return static_cast(mxGetData(ptr_)); } - - template - const Scalar* imag() const { return static_cast(mxGetData(ptr_)); } - - template - Scalar scalar() const { return static_cast(mxGetData(ptr_))[0]; } - - std::string toString() const { - conditionalError(isString(), "Attempted to convert non-string type to string"); - std::string str(size(), '\0'); - mxGetString(ptr_, const_cast(str.data()), str.size()+1); - return str; - } - - size_t size() const { return mxGetNumberOfElements(ptr_); } - bool empty() const { return size() == 0; } - size_t rows() const { return mxGetDimensions(ptr_)[0]; } - size_t cols() const { return mxGetDimensions(ptr_)[1]; } - size_t channels() const { return (mxGetNumberOfDimensions(ptr_) > 2) ? mxGetDimensions(ptr_)[2] : 1; } - bool isComplex() const { return mxIsComplex(ptr_); } - bool isNumeric() const { return mxIsNumeric(ptr_); } - bool isLogical() const { return mxIsLogical(ptr_); } - bool isString() const { return mxIsChar(ptr_); } - bool isCell() const { return mxIsCell(ptr_); } - bool isStructure() const { return mxIsStruct(ptr_); } - bool isClass(const std::string& name) const { return mxIsClass(ptr_, name.c_str()); } - std::string className() const { return std::string(mxGetClassName(ptr_)); } - mxClassID ID() const { return mxGetClassID(ptr_); } - -}; - - -// ---------------------------------------------------------------------------- -// ARGUMENT PARSER -// ---------------------------------------------------------------------------- - -/*! @class ArgumentParser - * @brief parses inputs to a method and resolves the argument names. - * - * The ArgumentParser resolves the inputs to a method. It checks that all - * required arguments are specified and also allows named optional arguments. - * For example, the C++ function: - * void randn(Mat& mat, Mat& mean=Mat(), Mat& std=Mat()); - * could be called in Matlab using any of the following signatures: - * \code - * out = randn(in); - * out = randn(in, 0, 1); - * out = randn(in, 'mean', 0, 'std', 1); - * \endcode - * - * ArgumentParser also enables function overloading by allowing users - * to add variants to a method. For example, there may be two C++ sum() methods: - * \code - * double sum(Mat& mat); % sum elements of a matrix - * Mat sum(Mat& A, Mat& B); % add two matrices - * \endcode - * - * by adding two variants to ArgumentParser, the correct underlying sum - * method can be called. If the function call is ambiguous, the - * ArgumentParser will fail with an error message. - * - * The previous example could be parsed as: - * \code - * // set up the Argument parser - * ArgumentParser arguments; - * arguments.addVariant("elementwise", 1); - * arguments.addVariant("matrix", 2); - * - * // parse the arguments - * std::vector inputs; - * inputs = arguments.parse(std::vector(prhs, prhs+nrhs)); - * - * // if we get here, one unique variant is valid - * if (arguments.variantIs("elementwise")) { - * // call elementwise sum() - * } - * \endcode - */ -class ArgumentParser { -private: - struct Variant; - typedef std::string String; - typedef std::vector StringVector; - typedef std::vector IndexVector; - typedef std::vector VariantVector; - - /* @class Variant - * @brief Describes a variant of arguments to a method - * - * When addVariant() is called on an instance to ArgumentParser, this class - * holds the the information that decribes that variant. The parse() method - * of ArgumentParser then attempts to match a Variant, given a set of - * inputs for a method invocation. - */ - class Variant { - private: - String name_; - size_t Nreq_; - size_t Nopt_; - StringVector keys_; - IndexVector order_; - bool valid_; - size_t nparsed_; - size_t nkeys_; - size_t working_opt_; - bool expecting_val_; - bool using_named_; - size_t find(const String& key) const { - return std::find(keys_.begin(), keys_.end(), key) - keys_.begin(); - } - public: - /*! @brief default constructor */ - Variant() : Nreq_(0), Nopt_(0), valid_(false) {} - /*! @brief construct a new variant spec */ - Variant(const String& name, size_t Nreq, size_t Nopt, const StringVector& keys) - : name_(name), Nreq_(Nreq), Nopt_(Nopt), keys_(keys), - order_(Nreq+Nopt, Nreq+2*Nopt), valid_(true), nparsed_(0), nkeys_(0), - working_opt_(0), expecting_val_(false), using_named_(false) {} - /*! @brief the name of the variant */ - String name() const { return name_; } - /*! @brief return the total number of arguments the variant can take */ - size_t size() const { return Nreq_ + Nopt_; } - /*! @brief has the variant been fulfilled? */ - bool fulfilled() const { return (valid_ && nparsed_ >= Nreq_ && !expecting_val_); } - /*! @brief is the variant in a valid state (though not necessarily fulfilled) */ - bool valid() const { return valid_; } - /*! @brief check if the named argument exists in the variant */ - bool exist(const String& key) const { return find(key) != keys_.size(); } - /*! @brief retrieve the order mapping raw inputs to their position in the variant */ - const IndexVector& order() const { return order_; } - size_t order(size_t n) const { return order_[n]; } - /*! @brief attempt to parse the next argument as a value */ - bool parseNextAsValue() { - if (!valid_) {} - else if ((using_named_ && !expecting_val_) || (nparsed_-nkeys_ == Nreq_+Nopt_)) { valid_ = false; } - else if (nparsed_ < Nreq_) { order_[nparsed_] = nparsed_; } - else if (!using_named_) { order_[nparsed_] = nparsed_; } - else if (using_named_ && expecting_val_) { order_[Nreq_ + working_opt_] = nparsed_; } - nparsed_++; - expecting_val_ = false; - return valid_; - } - /*! @biref attempt to parse the next argument as a name (key) */ - bool parseNextAsKey(const String& key) { - if (!valid_) {} - else if ((nparsed_ < Nreq_) || (nparsed_-nkeys_ == Nreq_+Nopt_)) { valid_ = false; } - else if (using_named_ && expecting_val_) { valid_ = false; } - else if ((working_opt_ = find(key)) == keys_.size()) { valid_ = false; } - else { using_named_ = true; expecting_val_ = true; nkeys_++; nparsed_++; } - return valid_; - } - String toString(const String& method_name="f") const { - int req_begin = 0, req_end = 0, opt_begin = 0, opt_end = 0; - std::ostringstream s; - // f(...) - s << method_name << "("; - // required arguments - req_begin = s.str().size(); - for (size_t n = 0; n < Nreq_; ++n) { s << "src" << n+1 << (n != Nreq_-1 ? ", " : ""); } - req_end = s.str().size(); - if (Nreq_ && Nopt_) s << ", "; - // optional arguments - opt_begin = s.str().size(); - for (size_t n = 0; n < keys_.size(); ++n) { s << "'" << keys_[n] << "', " << keys_[n] << (n != Nopt_-1 ? ", " : ""); } - opt_end = s.str().size(); - s << ");"; - if (Nreq_ + Nopt_ == 0) return s.str(); - // underscores - String under = String(req_begin, ' ') + String(req_end-req_begin, '-') - + String(std::max(opt_begin-req_end,0), ' ') + String(opt_end-opt_begin, '-'); - s << "\n" << under; - // required and optional sets - String req_set(req_end-req_begin, ' '); - String opt_set(opt_end-opt_begin, ' '); - if (!req_set.empty() && req_set.size() < 8) req_set.replace((req_set.size()-3)/2, 3, "req"); - if (req_set.size() > 7) req_set.replace((req_set.size()-8)/2, 8, "required"); - if (!opt_set.empty() && opt_set.size() < 8) opt_set.replace((opt_set.size()-3)/2, 3, "opt"); - if (opt_set.size() > 7) opt_set.replace((opt_set.size()-8)/2, 8, "optional"); - String set = String(req_begin, ' ') + req_set + String(std::max(opt_begin-req_end,0), ' ') + opt_set; - s << "\n" << set; - return s.str(); - } - }; - /*! @brief given an input and output vector of arguments, and a variant spec, sort */ - void sortArguments(Variant& v, MxArrayVector& in, MxArrayVector& out) { - // allocate the output array with ALL arguments - out.resize(v.size()); - // reorder the inputs based on the variant ordering - for (size_t n = 0; n < v.size(); ++n) { - if (v.order(n) >= in.size()) continue; - swap(in[v.order(n)], out[n]); - } - } - VariantVector variants_; - String valid_; - String method_name_; -public: - ArgumentParser(const String& method_name) : method_name_(method_name) {} - - /*! @brief add a function call variant to the parser - * - * Adds a function-call signature to the parser. The function call *must* be - * unique either in its number of arguments, or in the named-syntax. - * Currently this function does not check whether that invariant stands true. - * - * This function is variadic. If should be called as follows: - * addVariant(2, 2, 'opt_1_name', 'opt_2_name'); - */ - void addVariant(const String& name, size_t nreq, size_t nopt = 0, ...) { - StringVector keys; - va_list opt; - va_start(opt, nopt); - for (size_t n = 0; n < nopt; ++n) keys.push_back(va_arg(opt, const char*)); - addVariant(name, nreq, nopt, keys); - } - void addVariant(const String& name, size_t nreq, size_t nopt, StringVector keys) { - variants_.push_back(Variant(name, nreq, nopt, keys)); - } - - /*! @brief check if the valid variant is the key name */ - bool variantIs(const String& name) { - return name.compare(valid_) == 0; - } - - /*! @brief parse a vector of input arguments - * - * This method parses a vector of input arguments, attempting to match them - * to a Variant spec. For each input, the method attempts to cull any - * Variants which don't match the given inputs so far. - * - * Once all inputs have been parsed, if there is one unique spec remaining, - * the output MxArray vector gets populated with the arguments, with named - * arguments removed. Any optional arguments that have not been encountered - * are set to an empty array. - * - * If multiple variants or no variants match the given call, an error - * message is emitted - */ - MxArrayVector parse(const MxArrayVector& inputs) { - // allocate the outputs - String variant_string; - MxArrayVector outputs; - VariantVector candidates = variants_; - - // iterate over the inputs, attempting to match a variant - for (MxArrayVector::const_iterator input = inputs.begin(); input != inputs.end(); ++input) { - String name = input->isString() ? input->toString() : String(); - for (VariantVector::iterator candidate = candidates.begin(); candidate < candidates.end(); ++candidate) { - candidate->exist(name) ? candidate->parseNextAsKey(name) : candidate->parseNextAsValue(); - } - } - - // make sure the candidates have been fulfilled - for (VariantVector::iterator candidate = candidates.begin(); candidate < candidates.end(); ++candidate) { - if (!candidate->fulfilled()) candidate = candidates.erase(candidate)--; - } - - // if there is not a unique candidate, throw an error - for (VariantVector::iterator variant = variants_.begin(); variant != variants_.end(); ++variant) { - variant_string += "\n" + variant->toString(method_name_); - } - - // if there is not a unique candidate, throw an error - if (candidates.size() > 1) { - error(String("Call to method is ambiguous. Valid variants are:") - .append(variant_string).append("\nUse named arguments to disambiguate call")); - } - if (candidates.size() == 0) { - error(String("No matching method signatures for given arguments. Valid variants are:").append(variant_string)); - } - - // Unique candidate! - valid_ = candidates[0].name(); - sortArguments(candidates[0], const_cast(inputs), outputs); - return outputs; - } -}; - -} // namespace matlab - -#endif diff --git a/modules/matlab/include/opencv2/matlab/transpose.hpp b/modules/matlab/include/opencv2/matlab/transpose.hpp deleted file mode 100644 index 7331cd0ec8..0000000000 --- a/modules/matlab/include/opencv2/matlab/transpose.hpp +++ /dev/null @@ -1,141 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this -// license. If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2013, OpenCV Foundation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote -// products derived from this software without specific prior written -// permission. -// -// This software is provided by the copyright holders and contributors "as is" -// and any express or implied warranties, including, but not limited to, the -// implied warranties of merchantability and fitness for a particular purpose -// are disclaimed. In no event shall the Intel Corporation or contributors be -// liable for any direct, indirect, incidental, special, exemplary, or -// consequential damages (including, but not limited to, procurement of -// substitute goods or services; loss of use, data, or profits; or business -// interruption) however caused and on any theory of liability, whether in -// contract, strict liability, or tort (including negligence or otherwise) -// arising in any way out of the use of this software, even if advised of the -// possibility of such damage. -// -//////////////////////////////////////////////////////////////////////////////// -#ifndef OPENCV_TRANSPOSE_HPP_ -#define OPENCV_TRANSPOSE_HPP_ - -template -void transposeBlock(const size_t M, const size_t N, const InputScalar* src, size_t lda, OutputScalar* dst, size_t ldb) { - InputScalar cache[16]; - // copy the source into the cache contiguously - for (size_t n = 0; n < N; ++n) - for (size_t m = 0; m < M; ++m) - cache[m+n*4] = src[m+n*lda]; - // copy the destination out of the cache contiguously - for (size_t m = 0; m < M; ++m) - for (size_t n = 0; n < N; ++n) - dst[n+m*ldb] = cache[m+n*4]; -} - -template -void transpose4x4(const InputScalar* src, size_t lda, OutputScalar* dst, size_t ldb) { - InputScalar cache[16]; - // copy the source into the cache contiguously - cache[0] = src[0]; cache[1] = src[1]; cache[2] = src[2]; cache[3] = src[3]; src+=lda; - cache[4] = src[0]; cache[5] = src[1]; cache[6] = src[2]; cache[7] = src[3]; src+=lda; - cache[8] = src[0]; cache[9] = src[1]; cache[10] = src[2]; cache[11] = src[3]; src+=lda; - cache[12] = src[0]; cache[13] = src[1]; cache[14] = src[2]; cache[15] = src[3]; src+=lda; - // copy the destination out of the contiguously - dst[0] = cache[0]; dst[1] = cache[4]; dst[2] = cache[8]; dst[3] = cache[12]; dst+=ldb; - dst[0] = cache[1]; dst[1] = cache[5]; dst[2] = cache[9]; dst[3] = cache[13]; dst+=ldb; - dst[0] = cache[2]; dst[1] = cache[6]; dst[2] = cache[10]; dst[3] = cache[14]; dst+=ldb; - dst[0] = cache[3]; dst[1] = cache[7]; dst[2] = cache[11]; dst[3] = cache[15]; dst+=ldb; -} - - -/* - * Vanilla copy, transpose and cast - */ -template -void gemt(const char major, const size_t M, const size_t N, const InputScalar* a, size_t lda, OutputScalar* b, size_t ldb) { - - // 1x1 transpose is just copy - if (M == 1 && N == 1) { *b = *a; return; } - - // get the interior 4x4 blocks, and the extra skirting - const size_t Fblock = (major == 'R') ? N/4 : M/4; - const size_t Frem = (major == 'R') ? N%4 : M%4; - const size_t Sblock = (major == 'R') ? M/4 : N/4; - const size_t Srem = (major == 'R') ? M%4 : N%4; - - // if less than 4x4, invoke the block transpose immediately - if (M < 4 && N < 4) { transposeBlock(Frem, Srem, a, lda, b, ldb); return; } - - // transpose 4x4 blocks - const InputScalar* aptr = a; - OutputScalar* bptr = b; - for (size_t second = 0; second < Sblock; ++second) { - aptr = a + second*lda; - bptr = b + second; - for (size_t first = 0; first < Fblock; ++first) { - transposeBlock(4, 4, aptr, lda, bptr, ldb); - //transpose4x4(aptr, lda, bptr, ldb); - aptr+=4; - bptr+=4*ldb; - } - // transpose trailing blocks on primary dimension - transposeBlock(Frem, 4, aptr, lda, bptr, ldb); - } - // transpose trailing blocks on secondary dimension - aptr = a + 4*Sblock*lda; - bptr = b + 4*Sblock; - for (size_t first = 0; first < Fblock; ++first) { - transposeBlock(4, Srem, aptr, lda, bptr, ldb); - aptr+=4; - bptr+=4*ldb; - } - // transpose bottom right-hand corner - transposeBlock(Frem, Srem, aptr, lda, bptr, ldb); -} - -#ifdef __SSE2__ -/* - * SSE2 supported fast copy, transpose and cast - */ -#include - -template <> -void transpose4x4(const float* src, size_t lda, float* dst, size_t ldb) { - __m128 row0, row1, row2, row3; - row0 = _mm_loadu_ps(src); - row1 = _mm_loadu_ps(src+lda); - row2 = _mm_loadu_ps(src+2*lda); - row3 = _mm_loadu_ps(src+3*lda); - _MM_TRANSPOSE4_PS(row0, row1, row2, row3); - _mm_storeu_ps(dst, row0); - _mm_storeu_ps(dst+ldb, row1); - _mm_storeu_ps(dst+2*ldb, row2); - _mm_storeu_ps(dst+3*ldb, row3); -} - -#endif -#endif diff --git a/modules/matlab/test/CMakeLists.txt b/modules/matlab/test/CMakeLists.txt deleted file mode 100644 index c8c5177faa..0000000000 --- a/modules/matlab/test/CMakeLists.txt +++ /dev/null @@ -1,23 +0,0 @@ -set(TEST_PROXY ${CMAKE_CURRENT_BINARY_DIR}/test.proxy) -file(REMOVE ${TEST_PROXY}) - -# generate -# call the python executable to generate the Matlab gateways -add_custom_command( - OUTPUT ${TEST_PROXY} - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/OpenCVTest.m ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/testsuite.m ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${CMAKE_COMMAND} -E touch ${TEST_PROXY} - COMMENT "Building Matlab tests" -) - -# targets -# opencv_matlab_sources --> opencv_matlab -add_custom_target(opencv_test_matlab ALL DEPENDS ${TEST_PROXY}) -add_dependencies(opencv_test_matlab ${the_module}) - -# run the matlab test suite -add_test(opencv_test_matlab - COMMAND ${MATLAB_BIN} "-nodisplay" "-r" "testsuite.m" - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} -) diff --git a/modules/matlab/test/OpenCVTest.m b/modules/matlab/test/OpenCVTest.m deleted file mode 100644 index 67feedd93d..0000000000 --- a/modules/matlab/test/OpenCVTest.m +++ /dev/null @@ -1,166 +0,0 @@ -% Matlab binding test cases -% Uses Matlab's builtin testing framework -classdef OpenCVTest < matlab.unittest.TestCase - - methods(Test) - - % ------------------------------------------------------------------------- - % EXCEPTIONS - % Check that errors and exceptions are thrown correctly - % ------------------------------------------------------------------------- - - % check that std exception is thrown - function stdException(testcase) - try - std_exception(); - testcase.verifyFail(); - catch - % TODO: Catch more specific exception - testcase.verifyTrue(true); - end - end - - % check that OpenCV exceptions are correctly caught - function cvException(testcase) - try - cv_exception(); - testcase.verifyFail(); - catch - % TODO: Catch more specific exception - testcase.verifyTrue(true); - end - end - - % check that all exceptions are caught - function allException(testcase) - try - exception(); - testcase.verifyFail(); - catch - % TODO: Catch more specific exception - testcase.verifyTrue(true); - end - end - - % ------------------------------------------------------------------------- - % SIZES AND FILLS - % Check that matrices are correctly filled and resized - % ------------------------------------------------------------------------- - - % check that a matrix is correctly filled with random numbers - function randomFill(testcase) - sz = [7 11]; - mat = zeros(sz); - mat = cv.randn(mat, 0, 1); - testcase.verifyEqual(size(mat), sz, 'Matrix should not change size'); - testcase.verifyNotEqual(mat, zeros(sz), 'Matrix should be nonzero'); - end - - function transpose(testcase) - m = randn(19, 81); - mt1 = transpose(m); - mt2 = cv.transpose(m); - testcase.verifyEqual(size(mt1), size(mt2), 'Matrix transposed to incorrect dimensionality'); - testcase.verifyLessThan(norm(mt1 - mt2), 1e-8, 'Too much precision lost in tranposition'); - end - - % multiple return - function multipleReturn(testcase) - A = randn(10); - A = A'*A; - [V1, D1] = eig(A); D1 = diag(D1); - [~, D2, V2] = cv.eigen(A); - testcase.verifyLessThan(norm(V1 - V2), 1e-6, 'Too much precision lost in eigenvectors'); - testcase.verifyLessThan(norm(D1 - D2), 1e-6, 'Too much precision lost in eigenvalues'); - end - - % complex output from SVD - function complexOutputSVD(testcase) - A = randn(10); - [V1, D1] = eig(A); - [~, D2, V2] = cv.eigen(A); - testcase.verifyTrue(~isreal(V2) && size(V2,3) == 1, 'Output should be complex'); - testcase.verifyLessThan(norm(V1 - V2), 1e-6, 'Too much precision lost in eigenvectors'); - end - - % complex output from Fourier Transform - function complexOutputFFT(testcase) - A = randn(10); - F1 = fft2(A); - F2 = cv.dft(A, cv.DFT_COMPLEX_OUTPUT); - testcase.verifyTrue(~isreal(F2) && size(F2,3) == 1, 'Output should be complex'); - testcase.verifyLessThan(norm(F1 - F2), 1e-6, 'Too much precision lost in eigenvectors'); - end - - % ------------------------------------------------------------------------- - % TYPE CASTS - % Check that types are correctly cast - % ------------------------------------------------------------------------- - - % ------------------------------------------------------------------------- - % PRECISION - % Check that basic operations are performed with sufficient precision - % ------------------------------------------------------------------------- - - % check that summing elements is within reasonable precision - function sumElements(testcase) - a = randn(5000); - b = sum(a(:)); - c = cv.sum(a); - testcase.verifyLessThan(norm(b - c), 1e-8, 'Matrix reduction with insufficient precision'); - end - - - % check that adding two matrices is within reasonable precision - function addPrecision(testcase) - a = randn(50); - b = randn(50); - c = a+b; - d = cv.add(a, b); - testcase.verifyLessThan(norm(c - d), 1e-8, 'Matrices are added with insufficient precision'); - end - - % check that performing gemm is within reasonable precision - function gemmPrecision(testcase) - a = randn(10, 50); - b = randn(50, 10); - c = randn(10, 10); - alpha = 2.71828; - gamma = 1.61803; - d = alpha*a*b + gamma*c; - e = cv.gemm(a, b, alpha, c, gamma); - testcase.verifyLessThan(norm(d - e), 1e-8, 'Matrices are multiplied with insufficient precision'); - end - - - % ------------------------------------------------------------------------- - % MISCELLANEOUS - % Miscellaneous tests - % ------------------------------------------------------------------------- - - % check that cv::waitKey waits for at least specified time - function waitKey(testcase) - tic(); - cv.waitKey(500); - elapsed = toc(); - testcase.verifyGreaterThan(elapsed, 0.5, 'Elapsed time should be at least 0.5 seconds'); - end - - % check that highgui window can be created and destroyed - function createAndDestroyWindow(testcase) - try - cv.namedWindow('test window'); - catch - testcase.verifyFail('could not create window'); - end - - try - cv.destroyWindow('test window'); - catch - testcase.verifyFail('could not destroy window'); - end - testcase.verifyTrue(true); - end - - end -end diff --git a/modules/matlab/test/cv_exception.cpp b/modules/matlab/test/cv_exception.cpp deleted file mode 100644 index 100d294b85..0000000000 --- a/modules/matlab/test/cv_exception.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/* - * file: exception.cpp - * author: Hilton Bristow - * date: Wed, 19 Jun 2013 11:15:15 - * - * See LICENCE for full modification and redistribution details. - * Copyright 2013 The OpenCV Foundation - */ -#include -#include -#include "mex.h" - -/* - * exception - * Gateway routine - * nlhs - number of return arguments - * plhs - pointers to return arguments - * nrhs - number of input arguments - * prhs - pointers to input arguments - */ -void mexFunction(int nlhs, mxArray* plhs[], - int nrhs, const mxArray* prhs[]) { - - // call the opencv function - // [out =] namespace.fun(src1, ..., srcn, dst1, ..., dstn, opt1, ..., optn); - try { - throw cv::Exception(-1, "OpenCV exception thrown", __func__, __FILE__, __LINE__); - } catch(cv::Exception& e) { - mexErrMsgTxt(e.what()); - } catch(...) { - mexErrMsgTxt("Incorrect exception caught!"); - } -} diff --git a/modules/matlab/test/exception.cpp b/modules/matlab/test/exception.cpp deleted file mode 100644 index ac6788ac85..0000000000 --- a/modules/matlab/test/exception.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* - * file: exception.cpp - * author: Hilton Bristow - * date: Wed, 19 Jun 2013 11:15:15 - * - * See LICENCE for full modification and redistribution details. - * Copyright 2013 The OpenCV Foundation - */ -#include "mex.h" - -/* - * exception - * Gateway routine - * nlhs - number of return arguments - * plhs - pointers to return arguments - * nrhs - number of input arguments - * prhs - pointers to input arguments - */ -void mexFunction(int nlhs, mxArray* plhs[], - int nrhs, const mxArray* prhs[]) { - - // call the opencv function - // [out =] namespace.fun(src1, ..., srcn, dst1, ..., dstn, opt1, ..., optn); - try { - throw 1; - } catch(...) { - mexErrMsgTxt("Uncaught exception occurred!"); - } -} diff --git a/modules/matlab/test/help.m b/modules/matlab/test/help.m deleted file mode 100644 index cfe86767d6..0000000000 --- a/modules/matlab/test/help.m +++ /dev/null @@ -1,15 +0,0 @@ -function help() -%CV.HELP display help information for the OpenCV Toolbox -% -% Calling: -% >> cv.help(); -% -% is equivalent to calling: -% >> help cv; -% -% It displays high-level usage information about the OpenCV toolbox -% along with resources to find out more information. -% -% See also: cv.buildInformation - help('cv'); -end diff --git a/modules/matlab/test/std_exception.cpp b/modules/matlab/test/std_exception.cpp deleted file mode 100644 index d30b82429d..0000000000 --- a/modules/matlab/test/std_exception.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * file: exception.cpp - * author: Hilton Bristow - * date: Wed, 19 Jun 2013 11:15:15 - * - * See LICENCE for full modification and redistribution details. - * Copyright 2013 The OpenCV Foundation - */ -#include -#include "mex.h" - -/* - * exception - * Gateway routine - * nlhs - number of return arguments - * plhs - pointers to return arguments - * nrhs - number of input arguments - * prhs - pointers to input arguments - */ -void mexFunction(int nlhs, mxArray* plhs[], - int nrhs, const mxArray* prhs[]) { - - // call the opencv function - // [out =] namespace.fun(src1, ..., srcn, dst1, ..., dstn, opt1, ..., optn); - try { - throw std::exception(); - } catch(std::exception& e) { - mexErrMsgTxt(e.what()); - } catch(...) { - mexErrMsgTxt("Incorrect exception caught!"); - } -} diff --git a/modules/matlab/test/test_compiler.cpp b/modules/matlab/test/test_compiler.cpp deleted file mode 100644 index 07559ad502..0000000000 --- a/modules/matlab/test/test_compiler.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * file: rand.cpp - * author: A trusty code generator - * date: Wed, 19 Jun 2013 11:15:15 - * - * This file was autogenerated, do not modify. - * See LICENCE for full modification and redistribution details. - * Copyright 2013 The OpenCV Foundation - */ -#include "mex.h" -#include - -/* - * rand - * Gateway routine - * nlhs - number of return arguments - * plhs - pointers to return arguments - * nrhs - number of input arguments - * prhs - pointers to input arguments - */ -void mexFunction(int nlhs, mxArray* plhs[], - int nrhs, const mxArray* prhs[]) { - - // call the opencv function - // [out =] namespace.fun(src1, ..., srcn, dst1, ..., dstn, opt1, ..., optn); - try { - rand(); - } catch(...) { - mexErrMsgTxt("Uncaught exception occurred in rand"); - } -} diff --git a/modules/matlab/test/test_generator.hpp b/modules/matlab/test/test_generator.hpp deleted file mode 100644 index a03c390a65..0000000000 --- a/modules/matlab/test/test_generator.hpp +++ /dev/null @@ -1,15 +0,0 @@ -/* - * a rather innocuous-looking function which is actually - * part of , so we can be reasonably sure its - * definition will be found - */ -#ifndef __OPENCV_MATLAB_TEST_GENERATOR_HPP_ -#define __OPENCV_MATLAB_TEST_GENERATOR_HPP_ - -namespace cv { - -CV_EXPORTS_W int rand( ); - -}; - -#endif diff --git a/modules/matlab/test/testsuite.m b/modules/matlab/test/testsuite.m deleted file mode 100644 index 9e7d44aab6..0000000000 --- a/modules/matlab/test/testsuite.m +++ /dev/null @@ -1,11 +0,0 @@ -% add the opencv bindings folder -addpath .. - -%setup the tests -opencv_tests = OpenCVTest(); - -%run the tests -result = run(opencv_tests); - -% shutdown -exit(); diff --git a/modules/python/common.cmake b/modules/python/common.cmake index d9a0bc18bd..b7512981dc 100644 --- a/modules/python/common.cmake +++ b/modules/python/common.cmake @@ -18,6 +18,8 @@ ocv_list_filterout(candidate_deps "^opencv_adas$") ocv_list_filterout(candidate_deps "^opencv_face$") ocv_list_filterout(candidate_deps "^opencv_matlab$") ocv_list_filterout(candidate_deps "^opencv_tracking$") +ocv_list_filterout(candidate_deps "^opencv_optflow$") +ocv_list_filterout(candidate_deps "^opencv_bgsegm$") ocv_add_module(${MODULE_NAME} BINDINGS OPTIONAL ${candidate_deps}) diff --git a/modules/superres/src/optical_flow.cpp b/modules/superres/src/optical_flow.cpp index 2f77cd7868..7227b080fc 100644 --- a/modules/superres/src/optical_flow.cpp +++ b/modules/superres/src/optical_flow.cpp @@ -229,6 +229,7 @@ Ptr cv::superres::createOptFlow_Farneback() /////////////////////////////////////////////////////////////////// // Simple +/* namespace { class Simple : public CpuOpticalFlow @@ -311,7 +312,7 @@ namespace Ptr cv::superres::createOptFlow_Simple() { return makePtr(); -} +}*/ /////////////////////////////////////////////////////////////////// // DualTVL1 diff --git a/modules/video/doc/motion_analysis_and_object_tracking.rst b/modules/video/doc/motion_analysis_and_object_tracking.rst index 7d5d1d5be0..e1d95094ce 100644 --- a/modules/video/doc/motion_analysis_and_object_tracking.rst +++ b/modules/video/doc/motion_analysis_and_object_tracking.rst @@ -214,135 +214,6 @@ Unlike :ocv:func:`findHomography` and :ocv:func:`estimateRigidTransform`, the fu :ocv:func:`findHomography` -updateMotionHistory ------------------------ -Updates the motion history image by a moving silhouette. - -.. ocv:function:: void updateMotionHistory( InputArray silhouette, InputOutputArray mhi, double timestamp, double duration ) - -.. ocv:pyfunction:: cv2.updateMotionHistory(silhouette, mhi, timestamp, duration) -> mhi - -.. ocv:cfunction:: void cvUpdateMotionHistory( const CvArr* silhouette, CvArr* mhi, double timestamp, double duration ) - - :param silhouette: Silhouette mask that has non-zero pixels where the motion occurs. - - :param mhi: Motion history image that is updated by the function (single-channel, 32-bit floating-point). - - :param timestamp: Current time in milliseconds or other units. - - :param duration: Maximal duration of the motion track in the same units as ``timestamp`` . - -The function updates the motion history image as follows: - -.. math:: - - \texttt{mhi} (x,y)= \forkthree{\texttt{timestamp}}{if $\texttt{silhouette}(x,y) \ne 0$}{0}{if $\texttt{silhouette}(x,y) = 0$ and $\texttt{mhi} < (\texttt{timestamp} - \texttt{duration})$}{\texttt{mhi}(x,y)}{otherwise} - -That is, MHI pixels where the motion occurs are set to the current ``timestamp`` , while the pixels where the motion happened last time a long time ago are cleared. - -The function, together with -:ocv:func:`calcMotionGradient` and -:ocv:func:`calcGlobalOrientation` , implements a motion templates technique described in -[Davis97]_ and [Bradski00]_. -See also the OpenCV sample ``motempl.c`` that demonstrates the use of all the motion template functions. - - -calcMotionGradient ----------------------- -Calculates a gradient orientation of a motion history image. - -.. ocv:function:: void calcMotionGradient( InputArray mhi, OutputArray mask, OutputArray orientation, double delta1, double delta2, int apertureSize=3 ) - -.. ocv:pyfunction:: cv2.calcMotionGradient(mhi, delta1, delta2[, mask[, orientation[, apertureSize]]]) -> mask, orientation - -.. ocv:cfunction:: void cvCalcMotionGradient( const CvArr* mhi, CvArr* mask, CvArr* orientation, double delta1, double delta2, int aperture_size=3 ) - - :param mhi: Motion history single-channel floating-point image. - - :param mask: Output mask image that has the type ``CV_8UC1`` and the same size as ``mhi`` . Its non-zero elements mark pixels where the motion gradient data is correct. - - :param orientation: Output motion gradient orientation image that has the same type and the same size as ``mhi`` . Each pixel of the image is a motion orientation, from 0 to 360 degrees. - - :param delta1: Minimal (or maximal) allowed difference between ``mhi`` values within a pixel neighborhood. - - :param delta2: Maximal (or minimal) allowed difference between ``mhi`` values within a pixel neighborhood. That is, the function finds the minimum ( :math:`m(x,y)` ) and maximum ( :math:`M(x,y)` ) ``mhi`` values over :math:`3 \times 3` neighborhood of each pixel and marks the motion orientation at :math:`(x, y)` as valid only if - - .. math:: - - \min ( \texttt{delta1} , \texttt{delta2} ) \le M(x,y)-m(x,y) \le \max ( \texttt{delta1} , \texttt{delta2} ). - - :param apertureSize: Aperture size of the :ocv:func:`Sobel` operator. - -The function calculates a gradient orientation at each pixel -:math:`(x, y)` as: - -.. math:: - - \texttt{orientation} (x,y)= \arctan{\frac{d\texttt{mhi}/dy}{d\texttt{mhi}/dx}} - -In fact, -:ocv:func:`fastAtan2` and -:ocv:func:`phase` are used so that the computed angle is measured in degrees and covers the full range 0..360. Also, the ``mask`` is filled to indicate pixels where the computed angle is valid. - -.. note:: - - * (Python) An example on how to perform a motion template technique can be found at opencv_source_code/samples/python2/motempl.py - -calcGlobalOrientation -------------------------- -Calculates a global motion orientation in a selected region. - -.. ocv:function:: double calcGlobalOrientation( InputArray orientation, InputArray mask, InputArray mhi, double timestamp, double duration ) - -.. ocv:pyfunction:: cv2.calcGlobalOrientation(orientation, mask, mhi, timestamp, duration) -> retval - -.. ocv:cfunction:: double cvCalcGlobalOrientation( const CvArr* orientation, const CvArr* mask, const CvArr* mhi, double timestamp, double duration ) - - :param orientation: Motion gradient orientation image calculated by the function :ocv:func:`calcMotionGradient` . - - :param mask: Mask image. It may be a conjunction of a valid gradient mask, also calculated by :ocv:func:`calcMotionGradient` , and the mask of a region whose direction needs to be calculated. - - :param mhi: Motion history image calculated by :ocv:func:`updateMotionHistory` . - - :param timestamp: Timestamp passed to :ocv:func:`updateMotionHistory` . - - :param duration: Maximum duration of a motion track in milliseconds, passed to :ocv:func:`updateMotionHistory` . - -The function calculates an average -motion direction in the selected region and returns the angle between -0 degrees and 360 degrees. The average direction is computed from -the weighted orientation histogram, where a recent motion has a larger -weight and the motion occurred in the past has a smaller weight, as recorded in ``mhi`` . - - - - -segmentMotion -------------- -Splits a motion history image into a few parts corresponding to separate independent motions (for example, left hand, right hand). - -.. ocv:function:: void segmentMotion(InputArray mhi, OutputArray segmask, vector& boundingRects, double timestamp, double segThresh) - -.. ocv:pyfunction:: cv2.segmentMotion(mhi, timestamp, segThresh[, segmask]) -> segmask, boundingRects - -.. ocv:cfunction:: CvSeq* cvSegmentMotion( const CvArr* mhi, CvArr* seg_mask, CvMemStorage* storage, double timestamp, double seg_thresh ) - - :param mhi: Motion history image. - - :param segmask: Image where the found mask should be stored, single-channel, 32-bit floating-point. - - :param boundingRects: Vector containing ROIs of motion connected components. - - :param timestamp: Current time in milliseconds or other units. - - :param segThresh: Segmentation threshold that is recommended to be equal to the interval between motion history "steps" or greater. - - -The function finds all of the motion segments and marks them in ``segmask`` with individual values (1,2,...). It also computes a vector with ROIs of motion connected components. After that the motion direction for every component can be calculated with :ocv:func:`calcGlobalOrientation` using the extracted mask of the particular component. - - - - CamShift -------- Finds an object center, size, and orientation. @@ -994,52 +865,6 @@ Sets the prior probability that each individual pixel is a background pixel. .. ocv:function:: void BackgroundSubtractorGMG::setBackgroundPrior(double bgprior) -calcOpticalFlowSF ------------------ -Calculate an optical flow using "SimpleFlow" algorithm. - -.. ocv:function:: void calcOpticalFlowSF( InputArray from, InputArray to, OutputArray flow, int layers, int averaging_block_size, int max_flow ) - -.. ocv:function:: calcOpticalFlowSF( InputArray from, InputArray to, OutputArray flow, int layers, int averaging_block_size, int max_flow, double sigma_dist, double sigma_color, int postprocess_window, double sigma_dist_fix, double sigma_color_fix, double occ_thr, int upscale_averaging_radius, double upscale_sigma_dist, double upscale_sigma_color, double speed_up_thr ) - - :param prev: First 8-bit 3-channel image. - - :param next: Second 8-bit 3-channel image of the same size as ``prev`` - - :param flow: computed flow image that has the same size as ``prev`` and type ``CV_32FC2`` - - :param layers: Number of layers - - :param averaging_block_size: Size of block through which we sum up when calculate cost function for pixel - - :param max_flow: maximal flow that we search at each level - - :param sigma_dist: vector smooth spatial sigma parameter - - :param sigma_color: vector smooth color sigma parameter - - :param postprocess_window: window size for postprocess cross bilateral filter - - :param sigma_dist_fix: spatial sigma for postprocess cross bilateralf filter - - :param sigma_color_fix: color sigma for postprocess cross bilateral filter - - :param occ_thr: threshold for detecting occlusions - - :param upscale_averaging_radius: window size for bilateral upscale operation - - :param upscale_sigma_dist: spatial sigma for bilateral upscale operation - - :param upscale_sigma_color: color sigma for bilateral upscale operation - - :param speed_up_thr: threshold to detect point with irregular flow - where flow should be recalculated after upscale - -See [Tao2012]_. And site of project - http://graphics.berkeley.edu/papers/Tao-SAN-2012-05/. - -.. note:: - - * An example using the simpleFlow algorithm can be found at opencv_source_code/samples/cpp/simpleflow_demo.cpp - createOptFlow_DualTVL1 ---------------------- "Dual TV L1" Optical Flow Algorithm. @@ -1080,8 +905,6 @@ createOptFlow_DualTVL1 Stopping criterion iterations number used in the numerical scheme. - - DenseOpticalFlow::calc -------------------------- Calculates an optical flow. @@ -1108,10 +931,6 @@ Releases all inner buffers. .. [Bradski98] Bradski, G.R. "Computer Vision Face Tracking for Use in a Perceptual User Interface", Intel, 1998 -.. [Bradski00] Davis, J.W. and Bradski, G.R. "Motion Segmentation and Pose Recognition with Motion History Gradients", WACV00, 2000 - -.. [Davis97] Davis, J.W. and Bobick, A.F. "The Representation and Recognition of Action Using Temporal Templates", CVPR97, 1997 - .. [EP08] Evangelidis, G.D. and Psarakis E.Z. "Parametric Image Alignment using Enhanced Correlation Coefficient Maximization", IEEE Transactions on PAMI, vol. 32, no. 10, 2008 .. [Farneback2003] Gunnar Farneback, Two-frame motion estimation based on polynomial expansion, Lecture Notes in Computer Science, 2003, (2749), , 363-370. @@ -1126,8 +945,6 @@ Releases all inner buffers. .. [Welch95] Greg Welch and Gary Bishop "An Introduction to the Kalman Filter", 1995 -.. [Tao2012] Michael Tao, Jiamin Bai, Pushmeet Kohli and Sylvain Paris. SimpleFlow: A Non-iterative, Sublinear Optical Flow Algorithm. Computer Graphics Forum (Eurographics 2012) - .. [Zach2007] C. Zach, T. Pock and H. Bischof. "A Duality Based Approach for Realtime TV-L1 Optical Flow", In Proceedings of Pattern Recognition (DAGM), Heidelberg, Germany, pp. 214-223, 2007 .. [Zivkovic2004] Z. Zivkovic. "Improved adaptive Gausian mixture model for background subtraction", International Conference Pattern Recognition, UK, August, 2004, http://www.zoranz.net/Publications/zivkovic2004ICPR.pdf. The code is very fast and performs also shadow detection. Number of Gausssian components is adapted per pixel. diff --git a/modules/video/include/opencv2/video/background_segm.hpp b/modules/video/include/opencv2/video/background_segm.hpp index 73988c8062..789f9db96d 100644 --- a/modules/video/include/opencv2/video/background_segm.hpp +++ b/modules/video/include/opencv2/video/background_segm.hpp @@ -66,39 +66,6 @@ public: }; - -/*! - Gaussian Mixture-based Backbround/Foreground Segmentation Algorithm - - The class implements the following algorithm: - "An improved adaptive background mixture model for real-time tracking with shadow detection" - P. KadewTraKuPong and R. Bowden, - Proc. 2nd European Workshp on Advanced Video-Based Surveillance Systems, 2001." - http://personal.ee.surrey.ac.uk/Personal/R.Bowden/publications/avbs01/avbs01.pdf - -*/ -class CV_EXPORTS_W BackgroundSubtractorMOG : public BackgroundSubtractor -{ -public: - CV_WRAP virtual int getHistory() const = 0; - CV_WRAP virtual void setHistory(int nframes) = 0; - - CV_WRAP virtual int getNMixtures() const = 0; - CV_WRAP virtual void setNMixtures(int nmix) = 0; - - CV_WRAP virtual double getBackgroundRatio() const = 0; - CV_WRAP virtual void setBackgroundRatio(double backgroundRatio) = 0; - - CV_WRAP virtual double getNoiseSigma() const = 0; - CV_WRAP virtual void setNoiseSigma(double noiseSigma) = 0; -}; - -CV_EXPORTS_W Ptr - createBackgroundSubtractorMOG(int history=200, int nmixtures=5, - double backgroundRatio=0.7, double noiseSigma=0); - - - /*! The class implements the following algorithm: "Improved adaptive Gausian mixture model for background subtraction" @@ -189,51 +156,6 @@ CV_EXPORTS_W Ptr createBackgroundSubtractorKNN(int history=500, double dist2Threshold=400.0, bool detectShadows=true); -/** - * Background Subtractor module. Takes a series of images and returns a sequence of mask (8UC1) - * images of the same size, where 255 indicates Foreground and 0 represents Background. - * This class implements an algorithm described in "Visual Tracking of Human Visitors under - * Variable-Lighting Conditions for a Responsive Audio Art Installation," A. Godbehere, - * A. Matsukawa, K. Goldberg, American Control Conference, Montreal, June 2012. - */ -class CV_EXPORTS_W BackgroundSubtractorGMG : public BackgroundSubtractor -{ -public: - CV_WRAP virtual int getMaxFeatures() const = 0; - CV_WRAP virtual void setMaxFeatures(int maxFeatures) = 0; - - CV_WRAP virtual double getDefaultLearningRate() const = 0; - CV_WRAP virtual void setDefaultLearningRate(double lr) = 0; - - CV_WRAP virtual int getNumFrames() const = 0; - CV_WRAP virtual void setNumFrames(int nframes) = 0; - - CV_WRAP virtual int getQuantizationLevels() const = 0; - CV_WRAP virtual void setQuantizationLevels(int nlevels) = 0; - - CV_WRAP virtual double getBackgroundPrior() const = 0; - CV_WRAP virtual void setBackgroundPrior(double bgprior) = 0; - - CV_WRAP virtual int getSmoothingRadius() const = 0; - CV_WRAP virtual void setSmoothingRadius(int radius) = 0; - - CV_WRAP virtual double getDecisionThreshold() const = 0; - CV_WRAP virtual void setDecisionThreshold(double thresh) = 0; - - CV_WRAP virtual bool getUpdateBackgroundModel() const = 0; - CV_WRAP virtual void setUpdateBackgroundModel(bool update) = 0; - - CV_WRAP virtual double getMinVal() const = 0; - CV_WRAP virtual void setMinVal(double val) = 0; - - CV_WRAP virtual double getMaxVal() const = 0; - CV_WRAP virtual void setMaxVal(double val) = 0; -}; - - -CV_EXPORTS_W Ptr createBackgroundSubtractorGMG(int initializationFrames=120, - double decisionThreshold=0.8); - } // cv #endif diff --git a/modules/video/include/opencv2/video/tracking.hpp b/modules/video/include/opencv2/video/tracking.hpp index 1cc27fb3ef..18a3088aef 100644 --- a/modules/video/include/opencv2/video/tracking.hpp +++ b/modules/video/include/opencv2/video/tracking.hpp @@ -55,28 +55,6 @@ enum { OPTFLOW_USE_INITIAL_FLOW = 4, OPTFLOW_FARNEBACK_GAUSSIAN = 256 }; -enum { MOTION_TRANSLATION = 0, - MOTION_EUCLIDEAN = 1, - MOTION_AFFINE = 2, - MOTION_HOMOGRAPHY = 3 - }; - -//! updates motion history image using the current silhouette -CV_EXPORTS_W void updateMotionHistory( InputArray silhouette, InputOutputArray mhi, - double timestamp, double duration ); - -//! computes the motion gradient orientation image from the motion history image -CV_EXPORTS_W void calcMotionGradient( InputArray mhi, OutputArray mask, OutputArray orientation, - double delta1, double delta2, int apertureSize = 3 ); - -//! computes the global orientation of the selected motion history image part -CV_EXPORTS_W double calcGlobalOrientation( InputArray orientation, InputArray mask, InputArray mhi, - double timestamp, double duration ); - -CV_EXPORTS_W void segmentMotion( InputArray mhi, OutputArray segmask, - CV_OUT std::vector& boundingRects, - double timestamp, double segThresh ); - //! updates the object tracking window using CAMSHIFT algorithm CV_EXPORTS_W RotatedRect CamShift( InputArray probImage, CV_IN_OUT Rect& window, TermCriteria criteria ); @@ -109,6 +87,15 @@ CV_EXPORTS_W void calcOpticalFlowFarneback( InputArray prev, InputArray next, In // that maps one 2D point set to another or one image to another. CV_EXPORTS_W Mat estimateRigidTransform( InputArray src, InputArray dst, bool fullAffine ); + +enum +{ + MOTION_TRANSLATION = 0, + MOTION_EUCLIDEAN = 1, + MOTION_AFFINE = 2, + MOTION_HOMOGRAPHY = 3 +}; + //! estimates the best-fit Translation, Euclidean, Affine or Perspective Transformation // with respect to Enhanced Correlation Coefficient criterion that maps one image to // another (area-based alignment) @@ -120,20 +107,6 @@ CV_EXPORTS_W double findTransformECC( InputArray templateImage, InputArray input InputOutputArray warpMatrix, int motionType = MOTION_AFFINE, TermCriteria criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 50, 0.001)); - -//! computes dense optical flow using Simple Flow algorithm -CV_EXPORTS_W void calcOpticalFlowSF( InputArray from, InputArray to, OutputArray flow, - int layers, int averaging_block_size, int max_flow); - -CV_EXPORTS_W void calcOpticalFlowSF( InputArray from, InputArray to, OutputArray flow, int layers, - int averaging_block_size, int max_flow, - double sigma_dist, double sigma_color, int postprocess_window, - double sigma_dist_fix, double sigma_color_fix, double occ_thr, - int upscale_averaging_radius, double upscale_sigma_dist, - double upscale_sigma_color, double speed_up_thr ); - - - /*! Kalman filter. diff --git a/modules/video/perf/opencl/perf_motempl.cpp b/modules/video/perf/opencl/perf_motempl.cpp index d603569024..638548395b 100644 --- a/modules/video/perf/opencl/perf_motempl.cpp +++ b/modules/video/perf/opencl/perf_motempl.cpp @@ -8,7 +8,7 @@ #include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" -#ifdef HAVE_OPENCL +#if 0 //def HAVE_OPENCL namespace cvtest { namespace ocl { diff --git a/modules/video/src/affineflow.cpp b/modules/video/src/affineflow.cpp deleted file mode 100644 index bad9da8af7..0000000000 --- a/modules/video/src/affineflow.cpp +++ /dev/null @@ -1,850 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Copyright (C) 2013, OpenCV Foundation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "precomp.hpp" -#include "opencv2/imgproc/imgproc_c.h" -#include "opencv2/video/tracking_c.h" - -// to be moved to legacy - -static int icvMinimalPyramidSize( CvSize imgSize ) -{ - return cvAlign(imgSize.width,8) * imgSize.height / 3; -} - - -static void -icvInitPyramidalAlgorithm( const CvMat* imgA, const CvMat* imgB, - CvMat* pyrA, CvMat* pyrB, - int level, CvTermCriteria * criteria, - int max_iters, int flags, - uchar *** imgI, uchar *** imgJ, - int **step, CvSize** size, - double **scale, cv::AutoBuffer* buffer ) -{ - const int ALIGN = 8; - int pyrBytes, bufferBytes = 0, elem_size; - int level1 = level + 1; - - int i; - CvSize imgSize, levelSize; - - *imgI = *imgJ = 0; - *step = 0; - *scale = 0; - *size = 0; - - /* check input arguments */ - if( ((flags & CV_LKFLOW_PYR_A_READY) != 0 && !pyrA) || - ((flags & CV_LKFLOW_PYR_B_READY) != 0 && !pyrB) ) - CV_Error( CV_StsNullPtr, "Some of the precomputed pyramids are missing" ); - - if( level < 0 ) - CV_Error( CV_StsOutOfRange, "The number of pyramid levels is negative" ); - - switch( criteria->type ) - { - case CV_TERMCRIT_ITER: - criteria->epsilon = 0.f; - break; - case CV_TERMCRIT_EPS: - criteria->max_iter = max_iters; - break; - case CV_TERMCRIT_ITER | CV_TERMCRIT_EPS: - break; - default: - assert( 0 ); - CV_Error( CV_StsBadArg, "Invalid termination criteria" ); - } - - /* compare squared values */ - criteria->epsilon *= criteria->epsilon; - - /* set pointers and step for every level */ - pyrBytes = 0; - - imgSize = cvGetSize(imgA); - elem_size = CV_ELEM_SIZE(imgA->type); - levelSize = imgSize; - - for( i = 1; i < level1; i++ ) - { - levelSize.width = (levelSize.width + 1) >> 1; - levelSize.height = (levelSize.height + 1) >> 1; - - int tstep = cvAlign(levelSize.width,ALIGN) * elem_size; - pyrBytes += tstep * levelSize.height; - } - - assert( pyrBytes <= imgSize.width * imgSize.height * elem_size * 4 / 3 ); - - /* buffer_size = + */ - bufferBytes = (int)((level1 >= 0) * ((pyrA->data.ptr == 0) + - (pyrB->data.ptr == 0)) * pyrBytes + - (sizeof(imgI[0][0]) * 2 + sizeof(step[0][0]) + - sizeof(size[0][0]) + sizeof(scale[0][0])) * level1); - - buffer->allocate( bufferBytes ); - - *imgI = (uchar **) (uchar*)(*buffer); - *imgJ = *imgI + level1; - *step = (int *) (*imgJ + level1); - *scale = (double *) (*step + level1); - *size = (CvSize *)(*scale + level1); - - imgI[0][0] = imgA->data.ptr; - imgJ[0][0] = imgB->data.ptr; - step[0][0] = imgA->step; - scale[0][0] = 1; - size[0][0] = imgSize; - - if( level > 0 ) - { - uchar *bufPtr = (uchar *) (*size + level1); - uchar *ptrA = pyrA->data.ptr; - uchar *ptrB = pyrB->data.ptr; - - if( !ptrA ) - { - ptrA = bufPtr; - bufPtr += pyrBytes; - } - - if( !ptrB ) - ptrB = bufPtr; - - levelSize = imgSize; - - /* build pyramids for both frames */ - for( i = 1; i <= level; i++ ) - { - int levelBytes; - CvMat prev_level, next_level; - - levelSize.width = (levelSize.width + 1) >> 1; - levelSize.height = (levelSize.height + 1) >> 1; - - size[0][i] = levelSize; - step[0][i] = cvAlign( levelSize.width, ALIGN ) * elem_size; - scale[0][i] = scale[0][i - 1] * 0.5; - - levelBytes = step[0][i] * levelSize.height; - imgI[0][i] = (uchar *) ptrA; - ptrA += levelBytes; - - if( !(flags & CV_LKFLOW_PYR_A_READY) ) - { - prev_level = cvMat( size[0][i-1].height, size[0][i-1].width, CV_8UC1 ); - next_level = cvMat( size[0][i].height, size[0][i].width, CV_8UC1 ); - cvSetData( &prev_level, imgI[0][i-1], step[0][i-1] ); - cvSetData( &next_level, imgI[0][i], step[0][i] ); - cvPyrDown( &prev_level, &next_level ); - } - - imgJ[0][i] = (uchar *) ptrB; - ptrB += levelBytes; - - if( !(flags & CV_LKFLOW_PYR_B_READY) ) - { - prev_level = cvMat( size[0][i-1].height, size[0][i-1].width, CV_8UC1 ); - next_level = cvMat( size[0][i].height, size[0][i].width, CV_8UC1 ); - cvSetData( &prev_level, imgJ[0][i-1], step[0][i-1] ); - cvSetData( &next_level, imgJ[0][i], step[0][i] ); - cvPyrDown( &prev_level, &next_level ); - } - } - } -} - - -/* compute dI/dx and dI/dy */ -static void -icvCalcIxIy_32f( const float* src, int src_step, float* dstX, float* dstY, int dst_step, - CvSize src_size, const float* smooth_k, float* buffer0 ) -{ - int src_width = src_size.width, dst_width = src_size.width-2; - int x, height = src_size.height - 2; - float* buffer1 = buffer0 + src_width; - - src_step /= sizeof(src[0]); - dst_step /= sizeof(dstX[0]); - - for( ; height--; src += src_step, dstX += dst_step, dstY += dst_step ) - { - const float* src2 = src + src_step; - const float* src3 = src + src_step*2; - - for( x = 0; x < src_width; x++ ) - { - float t0 = (src3[x] + src[x])*smooth_k[0] + src2[x]*smooth_k[1]; - float t1 = src3[x] - src[x]; - buffer0[x] = t0; buffer1[x] = t1; - } - - for( x = 0; x < dst_width; x++ ) - { - float t0 = buffer0[x+2] - buffer0[x]; - float t1 = (buffer1[x] + buffer1[x+2])*smooth_k[0] + buffer1[x+1]*smooth_k[1]; - dstX[x] = t0; dstY[x] = t1; - } - } -} - - -#undef CV_8TO32F -#define CV_8TO32F(a) (a) - -static const void* -icvAdjustRect( const void* srcptr, int src_step, int pix_size, - CvSize src_size, CvSize win_size, - CvPoint ip, CvRect* pRect ) -{ - CvRect rect; - const char* src = (const char*)srcptr; - - if( ip.x >= 0 ) - { - src += ip.x*pix_size; - rect.x = 0; - } - else - { - rect.x = -ip.x; - if( rect.x > win_size.width ) - rect.x = win_size.width; - } - - if( ip.x + win_size.width < src_size.width ) - rect.width = win_size.width; - else - { - rect.width = src_size.width - ip.x - 1; - if( rect.width < 0 ) - { - src += rect.width*pix_size; - rect.width = 0; - } - assert( rect.width <= win_size.width ); - } - - if( ip.y >= 0 ) - { - src += ip.y * src_step; - rect.y = 0; - } - else - rect.y = -ip.y; - - if( ip.y + win_size.height < src_size.height ) - rect.height = win_size.height; - else - { - rect.height = src_size.height - ip.y - 1; - if( rect.height < 0 ) - { - src += rect.height*src_step; - rect.height = 0; - } - } - - *pRect = rect; - return src - rect.x*pix_size; -} - - -static CvStatus CV_STDCALL icvGetRectSubPix_8u32f_C1R -( const uchar* src, int src_step, CvSize src_size, - float* dst, int dst_step, CvSize win_size, CvPoint2D32f center ) -{ - CvPoint ip; - float a12, a22, b1, b2; - float a, b; - double s = 0; - int i, j; - - center.x -= (win_size.width-1)*0.5f; - center.y -= (win_size.height-1)*0.5f; - - ip.x = cvFloor( center.x ); - ip.y = cvFloor( center.y ); - - if( win_size.width <= 0 || win_size.height <= 0 ) - return CV_BADRANGE_ERR; - - a = center.x - ip.x; - b = center.y - ip.y; - a = MAX(a,0.0001f); - a12 = a*(1.f-b); - a22 = a*b; - b1 = 1.f - b; - b2 = b; - s = (1. - a)/a; - - src_step /= sizeof(src[0]); - dst_step /= sizeof(dst[0]); - - if( 0 <= ip.x && ip.x + win_size.width < src_size.width && - 0 <= ip.y && ip.y + win_size.height < src_size.height ) - { - // extracted rectangle is totally inside the image - src += ip.y * src_step + ip.x; - -#if 0 - if( icvCopySubpix_8u32f_C1R_p && - icvCopySubpix_8u32f_C1R_p( src, src_step, dst, - dst_step*sizeof(dst[0]), win_size, a, b ) >= 0 ) - return CV_OK; -#endif - - for( ; win_size.height--; src += src_step, dst += dst_step ) - { - float prev = (1 - a)*(b1*CV_8TO32F(src[0]) + b2*CV_8TO32F(src[src_step])); - for( j = 0; j < win_size.width; j++ ) - { - float t = a12*CV_8TO32F(src[j+1]) + a22*CV_8TO32F(src[j+1+src_step]); - dst[j] = prev + t; - prev = (float)(t*s); - } - } - } - else - { - CvRect r; - - src = (const uchar*)icvAdjustRect( src, src_step*sizeof(*src), - sizeof(*src), src_size, win_size,ip, &r); - - for( i = 0; i < win_size.height; i++, dst += dst_step ) - { - const uchar *src2 = src + src_step; - - if( i < r.y || i >= r.height ) - src2 -= src_step; - - for( j = 0; j < r.x; j++ ) - { - float s0 = CV_8TO32F(src[r.x])*b1 + - CV_8TO32F(src2[r.x])*b2; - - dst[j] = (float)(s0); - } - - if( j < r.width ) - { - float prev = (1 - a)*(b1*CV_8TO32F(src[j]) + b2*CV_8TO32F(src2[j])); - - for( ; j < r.width; j++ ) - { - float t = a12*CV_8TO32F(src[j+1]) + a22*CV_8TO32F(src2[j+1]); - dst[j] = prev + t; - prev = (float)(t*s); - } - } - - for( ; j < win_size.width; j++ ) - { - float s0 = CV_8TO32F(src[r.width])*b1 + - CV_8TO32F(src2[r.width])*b2; - - dst[j] = (float)(s0); - } - - if( i < r.height ) - src = src2; - } - } - - return CV_OK; -} - - -#define ICV_32F8U(x) ((uchar)cvRound(x)) - -#define ICV_DEF_GET_QUADRANGLE_SUB_PIX_FUNC( flavor, srctype, dsttype, worktype, cast_macro, cvt ) \ -static CvStatus CV_STDCALL icvGetQuadrangleSubPix_##flavor##_C1R \ - ( const srctype * src, int src_step, CvSize src_size, \ - dsttype *dst, int dst_step, CvSize win_size, const float *matrix ) \ -{ \ - int x, y; \ - double dx = (win_size.width - 1)*0.5; \ - double dy = (win_size.height - 1)*0.5; \ - double A11 = matrix[0], A12 = matrix[1], A13 = matrix[2]-A11*dx-A12*dy; \ - double A21 = matrix[3], A22 = matrix[4], A23 = matrix[5]-A21*dx-A22*dy; \ - \ - src_step /= sizeof(srctype); \ - dst_step /= sizeof(dsttype); \ - \ - for( y = 0; y < win_size.height; y++, dst += dst_step ) \ - { \ - double xs = A12*y + A13; \ - double ys = A22*y + A23; \ - double xe = A11*(win_size.width-1) + A12*y + A13; \ - double ye = A21*(win_size.width-1) + A22*y + A23; \ - \ - if( (unsigned)(cvFloor(xs)-1) < (unsigned)(src_size.width - 3) && \ - (unsigned)(cvFloor(ys)-1) < (unsigned)(src_size.height - 3) && \ - (unsigned)(cvFloor(xe)-1) < (unsigned)(src_size.width - 3) && \ - (unsigned)(cvFloor(ye)-1) < (unsigned)(src_size.height - 3)) \ - { \ - for( x = 0; x < win_size.width; x++ ) \ - { \ - int ixs = cvFloor( xs ); \ - int iys = cvFloor( ys ); \ - const srctype *ptr = src + src_step*iys + ixs; \ - double a = xs - ixs, b = ys - iys, a1 = 1.f - a; \ - worktype p0 = cvt(ptr[0])*a1 + cvt(ptr[1])*a; \ - worktype p1 = cvt(ptr[src_step])*a1 + cvt(ptr[src_step+1])*a; \ - xs += A11; \ - ys += A21; \ - \ - dst[x] = cast_macro(p0 + b * (p1 - p0)); \ - } \ - } \ - else \ - { \ - for( x = 0; x < win_size.width; x++ ) \ - { \ - int ixs = cvFloor( xs ), iys = cvFloor( ys ); \ - double a = xs - ixs, b = ys - iys, a1 = 1.f - a; \ - const srctype *ptr0, *ptr1; \ - worktype p0, p1; \ - xs += A11; ys += A21; \ - \ - if( (unsigned)iys < (unsigned)(src_size.height-1) ) \ - ptr0 = src + src_step*iys, ptr1 = ptr0 + src_step; \ - else \ - ptr0 = ptr1 = src + (iys < 0 ? 0 : src_size.height-1)*src_step; \ - \ - if( (unsigned)ixs < (unsigned)(src_size.width-1) ) \ - { \ - p0 = cvt(ptr0[ixs])*a1 + cvt(ptr0[ixs+1])*a; \ - p1 = cvt(ptr1[ixs])*a1 + cvt(ptr1[ixs+1])*a; \ - } \ - else \ - { \ - ixs = ixs < 0 ? 0 : src_size.width - 1; \ - p0 = cvt(ptr0[ixs]); p1 = cvt(ptr1[ixs]); \ - } \ - dst[x] = cast_macro(p0 + b * (p1 - p0)); \ - } \ - } \ - } \ - \ - return CV_OK; \ -} - -ICV_DEF_GET_QUADRANGLE_SUB_PIX_FUNC( 8u32f, uchar, float, double, cv::saturate_cast, CV_8TO32F ) - -/* Affine tracking algorithm */ - -CV_IMPL void -cvCalcAffineFlowPyrLK( const void* arrA, const void* arrB, - void* pyrarrA, void* pyrarrB, - const CvPoint2D32f * featuresA, - CvPoint2D32f * featuresB, - float *matrices, int count, - CvSize winSize, int level, - char *status, float *error, - CvTermCriteria criteria, int flags ) -{ - const int MAX_ITERS = 100; - - cv::AutoBuffer _status; - cv::AutoBuffer buffer; - cv::AutoBuffer pyr_buffer; - - CvMat stubA, *imgA = (CvMat*)arrA; - CvMat stubB, *imgB = (CvMat*)arrB; - CvMat pstubA, *pyrA = (CvMat*)pyrarrA; - CvMat pstubB, *pyrB = (CvMat*)pyrarrB; - - static const float smoothKernel[] = { 0.09375, 0.3125, 0.09375 }; /* 3/32, 10/32, 3/32 */ - - int bufferBytes = 0; - - uchar **imgI = 0; - uchar **imgJ = 0; - int *step = 0; - double *scale = 0; - CvSize* size = 0; - - float *patchI; - float *patchJ; - float *Ix; - float *Iy; - - int i, j, k, l; - - CvSize patchSize = cvSize( winSize.width * 2 + 1, winSize.height * 2 + 1 ); - int patchLen = patchSize.width * patchSize.height; - int patchStep = patchSize.width * sizeof( patchI[0] ); - - CvSize srcPatchSize = cvSize( patchSize.width + 2, patchSize.height + 2 ); - int srcPatchLen = srcPatchSize.width * srcPatchSize.height; - int srcPatchStep = srcPatchSize.width * sizeof( patchI[0] ); - CvSize imgSize; - float eps = (float)MIN(winSize.width, winSize.height); - - imgA = cvGetMat( imgA, &stubA ); - imgB = cvGetMat( imgB, &stubB ); - - if( CV_MAT_TYPE( imgA->type ) != CV_8UC1 ) - CV_Error( CV_StsUnsupportedFormat, "" ); - - if( !CV_ARE_TYPES_EQ( imgA, imgB )) - CV_Error( CV_StsUnmatchedFormats, "" ); - - if( !CV_ARE_SIZES_EQ( imgA, imgB )) - CV_Error( CV_StsUnmatchedSizes, "" ); - - if( imgA->step != imgB->step ) - CV_Error( CV_StsUnmatchedSizes, "imgA and imgB must have equal steps" ); - - if( !matrices ) - CV_Error( CV_StsNullPtr, "" ); - - imgSize = cv::Size(imgA->cols, imgA->rows); - - if( pyrA ) - { - pyrA = cvGetMat( pyrA, &pstubA ); - - if( pyrA->step*pyrA->height < icvMinimalPyramidSize( imgSize ) ) - CV_Error( CV_StsBadArg, "pyramid A has insufficient size" ); - } - else - { - pyrA = &pstubA; - pyrA->data.ptr = 0; - } - - if( pyrB ) - { - pyrB = cvGetMat( pyrB, &pstubB ); - - if( pyrB->step*pyrB->height < icvMinimalPyramidSize( imgSize ) ) - CV_Error( CV_StsBadArg, "pyramid B has insufficient size" ); - } - else - { - pyrB = &pstubB; - pyrB->data.ptr = 0; - } - - if( count == 0 ) - return; - - /* check input arguments */ - if( !featuresA || !featuresB || !matrices ) - CV_Error( CV_StsNullPtr, "" ); - - if( winSize.width <= 1 || winSize.height <= 1 ) - CV_Error( CV_StsOutOfRange, "the search window is too small" ); - - if( count < 0 ) - CV_Error( CV_StsOutOfRange, "" ); - - icvInitPyramidalAlgorithm( imgA, imgB, - pyrA, pyrB, level, &criteria, MAX_ITERS, flags, - &imgI, &imgJ, &step, &size, &scale, &pyr_buffer ); - - /* buffer_size = + */ - bufferBytes = (srcPatchLen + patchLen*3)*sizeof(patchI[0]) + (36*2 + 6)*sizeof(double); - - buffer.allocate(bufferBytes); - - if( !status ) - { - _status.allocate(count); - status = _status; - } - - patchI = (float *)(uchar*)buffer; - patchJ = patchI + srcPatchLen; - Ix = patchJ + patchLen; - Iy = Ix + patchLen; - - if( status ) - memset( status, 1, count ); - - if( !(flags & CV_LKFLOW_INITIAL_GUESSES) ) - { - memcpy( featuresB, featuresA, count * sizeof( featuresA[0] )); - for( i = 0; i < count * 4; i += 4 ) - { - matrices[i] = matrices[i + 3] = 1.f; - matrices[i + 1] = matrices[i + 2] = 0.f; - } - } - - for( i = 0; i < count; i++ ) - { - featuresB[i].x = (float)(featuresB[i].x * scale[level] * 0.5); - featuresB[i].y = (float)(featuresB[i].y * scale[level] * 0.5); - } - - /* do processing from top pyramid level (smallest image) - to the bottom (original image) */ - for( l = level; l >= 0; l-- ) - { - CvSize levelSize = size[l]; - int levelStep = step[l]; - - /* find flow for each given point at the particular level */ - for( i = 0; i < count; i++ ) - { - CvPoint2D32f u; - float Av[6]; - double G[36]; - double meanI = 0, meanJ = 0; - int x, y; - int pt_status = status[i]; - CvMat mat; - - if( !pt_status ) - continue; - - Av[0] = matrices[i*4]; - Av[1] = matrices[i*4+1]; - Av[3] = matrices[i*4+2]; - Av[4] = matrices[i*4+3]; - - Av[2] = featuresB[i].x += featuresB[i].x; - Av[5] = featuresB[i].y += featuresB[i].y; - - u.x = (float) (featuresA[i].x * scale[l]); - u.y = (float) (featuresA[i].y * scale[l]); - - if( u.x < -eps || u.x >= levelSize.width+eps || - u.y < -eps || u.y >= levelSize.height+eps || - icvGetRectSubPix_8u32f_C1R( imgI[l], levelStep, - levelSize, patchI, srcPatchStep, srcPatchSize, u ) < 0 ) - { - /* point is outside the image. take the next */ - if( l == 0 ) - status[i] = 0; - continue; - } - - icvCalcIxIy_32f( patchI, srcPatchStep, Ix, Iy, - (srcPatchSize.width-2)*sizeof(patchI[0]), srcPatchSize, - smoothKernel, patchJ ); - - /* repack patchI (remove borders) */ - for( k = 0; k < patchSize.height; k++ ) - memcpy( patchI + k * patchSize.width, - patchI + (k + 1) * srcPatchSize.width + 1, patchStep ); - - memset( G, 0, sizeof( G )); - - /* calculate G matrix */ - for( y = -winSize.height, k = 0; y <= winSize.height; y++ ) - { - for( x = -winSize.width; x <= winSize.width; x++, k++ ) - { - double ixix = ((double) Ix[k]) * Ix[k]; - double ixiy = ((double) Ix[k]) * Iy[k]; - double iyiy = ((double) Iy[k]) * Iy[k]; - - double xx, xy, yy; - - G[0] += ixix; - G[1] += ixiy; - G[2] += x * ixix; - G[3] += y * ixix; - G[4] += x * ixiy; - G[5] += y * ixiy; - - // G[6] == G[1] - G[7] += iyiy; - // G[8] == G[4] - // G[9] == G[5] - G[10] += x * iyiy; - G[11] += y * iyiy; - - xx = x * x; - xy = x * y; - yy = y * y; - - // G[12] == G[2] - // G[13] == G[8] == G[4] - G[14] += xx * ixix; - G[15] += xy * ixix; - G[16] += xx * ixiy; - G[17] += xy * ixiy; - - // G[18] == G[3] - // G[19] == G[9] - // G[20] == G[15] - G[21] += yy * ixix; - // G[22] == G[17] - G[23] += yy * ixiy; - - // G[24] == G[4] - // G[25] == G[10] - // G[26] == G[16] - // G[27] == G[22] - G[28] += xx * iyiy; - G[29] += xy * iyiy; - - // G[30] == G[5] - // G[31] == G[11] - // G[32] == G[17] - // G[33] == G[23] - // G[34] == G[29] - G[35] += yy * iyiy; - - meanI += patchI[k]; - } - } - - meanI /= patchSize.width*patchSize.height; - - G[8] = G[4]; - G[9] = G[5]; - G[22] = G[17]; - - // fill part of G below its diagonal - for( y = 1; y < 6; y++ ) - for( x = 0; x < y; x++ ) - G[y * 6 + x] = G[x * 6 + y]; - - cvInitMatHeader( &mat, 6, 6, CV_64FC1, G ); - - if( cvInvert( &mat, &mat, CV_SVD ) < 1e-4 ) - { - /* bad matrix. take the next point */ - if( l == 0 ) - status[i] = 0; - continue; - } - - for( j = 0; j < criteria.max_iter; j++ ) - { - double b[6] = {0,0,0,0,0,0}, eta[6]; - double t0, t1, s = 0; - - if( Av[2] < -eps || Av[2] >= levelSize.width+eps || - Av[5] < -eps || Av[5] >= levelSize.height+eps || - icvGetQuadrangleSubPix_8u32f_C1R( imgJ[l], levelStep, - levelSize, patchJ, patchStep, patchSize, Av ) < 0 ) - { - pt_status = 0; - break; - } - - for( y = -winSize.height, k = 0, meanJ = 0; y <= winSize.height; y++ ) - for( x = -winSize.width; x <= winSize.width; x++, k++ ) - meanJ += patchJ[k]; - - meanJ = meanJ / (patchSize.width * patchSize.height) - meanI; - - for( y = -winSize.height, k = 0; y <= winSize.height; y++ ) - { - for( x = -winSize.width; x <= winSize.width; x++, k++ ) - { - double t = patchI[k] - patchJ[k] + meanJ; - double ixt = Ix[k] * t; - double iyt = Iy[k] * t; - - s += t; - - b[0] += ixt; - b[1] += iyt; - b[2] += x * ixt; - b[3] += y * ixt; - b[4] += x * iyt; - b[5] += y * iyt; - } - } - - for( k = 0; k < 6; k++ ) - eta[k] = G[k*6]*b[0] + G[k*6+1]*b[1] + G[k*6+2]*b[2] + - G[k*6+3]*b[3] + G[k*6+4]*b[4] + G[k*6+5]*b[5]; - - Av[2] = (float)(Av[2] + Av[0] * eta[0] + Av[1] * eta[1]); - Av[5] = (float)(Av[5] + Av[3] * eta[0] + Av[4] * eta[1]); - - t0 = Av[0] * (1 + eta[2]) + Av[1] * eta[4]; - t1 = Av[0] * eta[3] + Av[1] * (1 + eta[5]); - Av[0] = (float)t0; - Av[1] = (float)t1; - - t0 = Av[3] * (1 + eta[2]) + Av[4] * eta[4]; - t1 = Av[3] * eta[3] + Av[4] * (1 + eta[5]); - Av[3] = (float)t0; - Av[4] = (float)t1; - - if( eta[0] * eta[0] + eta[1] * eta[1] < criteria.epsilon ) - break; - } - - if( pt_status != 0 || l == 0 ) - { - status[i] = (char)pt_status; - featuresB[i].x = Av[2]; - featuresB[i].y = Av[5]; - - matrices[i*4] = Av[0]; - matrices[i*4+1] = Av[1]; - matrices[i*4+2] = Av[3]; - matrices[i*4+3] = Av[4]; - } - - if( pt_status && l == 0 && error ) - { - /* calc error */ - double err = 0; - - for( y = 0, k = 0; y < patchSize.height; y++ ) - { - for( x = 0; x < patchSize.width; x++, k++ ) - { - double t = patchI[k] - patchJ[k] + meanJ; - err += t * t; - } - } - error[i] = (float)std::sqrt(err); - } - } - } -} diff --git a/modules/video/src/bgfg_gaussmix.cpp b/modules/video/src/bgfg_gaussmix.cpp deleted file mode 100644 index b5ad039e27..0000000000 --- a/modules/video/src/bgfg_gaussmix.cpp +++ /dev/null @@ -1,472 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Copyright (C) 2013, OpenCV Foundation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "precomp.hpp" -#include - -// to make sure we can use these short names -#undef K -#undef L -#undef T - -// This is based on the "An Improved Adaptive Background Mixture Model for -// Real-time Tracking with Shadow Detection" by P. KaewTraKulPong and R. Bowden -// http://personal.ee.surrey.ac.uk/Personal/R.Bowden/publications/avbs01/avbs01.pdf -// -// The windowing method is used, but not the shadow detection. I make some of my -// own modifications which make more sense. There are some errors in some of their -// equations. -// - -namespace cv -{ - -static const int defaultNMixtures = 5; -static const int defaultHistory = 200; -static const double defaultBackgroundRatio = 0.7; -static const double defaultVarThreshold = 2.5*2.5; -static const double defaultNoiseSigma = 30*0.5; -static const double defaultInitialWeight = 0.05; - -class BackgroundSubtractorMOGImpl : public BackgroundSubtractorMOG -{ -public: - //! the default constructor - BackgroundSubtractorMOGImpl() - { - frameSize = Size(0,0); - frameType = 0; - - nframes = 0; - nmixtures = defaultNMixtures; - history = defaultHistory; - varThreshold = defaultVarThreshold; - backgroundRatio = defaultBackgroundRatio; - noiseSigma = defaultNoiseSigma; - name_ = "BackgroundSubtractor.MOG"; - } - // the full constructor that takes the length of the history, - // the number of gaussian mixtures, the background ratio parameter and the noise strength - BackgroundSubtractorMOGImpl(int _history, int _nmixtures, double _backgroundRatio, double _noiseSigma=0) - { - frameSize = Size(0,0); - frameType = 0; - - nframes = 0; - nmixtures = std::min(_nmixtures > 0 ? _nmixtures : defaultNMixtures, 8); - history = _history > 0 ? _history : defaultHistory; - varThreshold = defaultVarThreshold; - backgroundRatio = std::min(_backgroundRatio > 0 ? _backgroundRatio : 0.95, 1.); - noiseSigma = _noiseSigma <= 0 ? defaultNoiseSigma : _noiseSigma; - } - - //! the update operator - virtual void apply(InputArray image, OutputArray fgmask, double learningRate=0); - - //! re-initiaization method - virtual void initialize(Size _frameSize, int _frameType) - { - frameSize = _frameSize; - frameType = _frameType; - nframes = 0; - - int nchannels = CV_MAT_CN(frameType); - CV_Assert( CV_MAT_DEPTH(frameType) == CV_8U ); - - // for each gaussian mixture of each pixel bg model we store ... - // the mixture sort key (w/sum_of_variances), the mixture weight (w), - // the mean (nchannels values) and - // the diagonal covariance matrix (another nchannels values) - bgmodel.create( 1, frameSize.height*frameSize.width*nmixtures*(2 + 2*nchannels), CV_32F ); - bgmodel = Scalar::all(0); - } - - virtual AlgorithmInfo* info() const { return 0; } - - virtual void getBackgroundImage(OutputArray) const - { - CV_Error( Error::StsNotImplemented, "" ); - } - - virtual int getHistory() const { return history; } - virtual void setHistory(int _nframes) { history = _nframes; } - - virtual int getNMixtures() const { return nmixtures; } - virtual void setNMixtures(int nmix) { nmixtures = nmix; } - - virtual double getBackgroundRatio() const { return backgroundRatio; } - virtual void setBackgroundRatio(double _backgroundRatio) { backgroundRatio = _backgroundRatio; } - - virtual double getNoiseSigma() const { return noiseSigma; } - virtual void setNoiseSigma(double _noiseSigma) { noiseSigma = _noiseSigma; } - - virtual void write(FileStorage& fs) const - { - fs << "name" << name_ - << "history" << history - << "nmixtures" << nmixtures - << "backgroundRatio" << backgroundRatio - << "noiseSigma" << noiseSigma; - } - - virtual void read(const FileNode& fn) - { - CV_Assert( (String)fn["name"] == name_ ); - history = (int)fn["history"]; - nmixtures = (int)fn["nmixtures"]; - backgroundRatio = (double)fn["backgroundRatio"]; - noiseSigma = (double)fn["noiseSigma"]; - } - -protected: - Size frameSize; - int frameType; - Mat bgmodel; - int nframes; - int history; - int nmixtures; - double varThreshold; - double backgroundRatio; - double noiseSigma; - String name_; -}; - - -template struct MixData -{ - float sortKey; - float weight; - VT mean; - VT var; -}; - - -static void process8uC1( const Mat& image, Mat& fgmask, double learningRate, - Mat& bgmodel, int nmixtures, double backgroundRatio, - double varThreshold, double noiseSigma ) -{ - int x, y, k, k1, rows = image.rows, cols = image.cols; - float alpha = (float)learningRate, T = (float)backgroundRatio, vT = (float)varThreshold; - int K = nmixtures; - MixData* mptr = (MixData*)bgmodel.data; - - const float w0 = (float)defaultInitialWeight; - const float sk0 = (float)(w0/(defaultNoiseSigma*2)); - const float var0 = (float)(defaultNoiseSigma*defaultNoiseSigma*4); - const float minVar = (float)(noiseSigma*noiseSigma); - - for( y = 0; y < rows; y++ ) - { - const uchar* src = image.ptr(y); - uchar* dst = fgmask.ptr(y); - - if( alpha > 0 ) - { - for( x = 0; x < cols; x++, mptr += K ) - { - float wsum = 0; - float pix = src[x]; - int kHit = -1, kForeground = -1; - - for( k = 0; k < K; k++ ) - { - float w = mptr[k].weight; - wsum += w; - if( w < FLT_EPSILON ) - break; - float mu = mptr[k].mean; - float var = mptr[k].var; - float diff = pix - mu; - float d2 = diff*diff; - if( d2 < vT*var ) - { - wsum -= w; - float dw = alpha*(1.f - w); - mptr[k].weight = w + dw; - mptr[k].mean = mu + alpha*diff; - var = std::max(var + alpha*(d2 - var), minVar); - mptr[k].var = var; - mptr[k].sortKey = w/std::sqrt(var); - - for( k1 = k-1; k1 >= 0; k1-- ) - { - if( mptr[k1].sortKey >= mptr[k1+1].sortKey ) - break; - std::swap( mptr[k1], mptr[k1+1] ); - } - - kHit = k1+1; - break; - } - } - - if( kHit < 0 ) // no appropriate gaussian mixture found at all, remove the weakest mixture and create a new one - { - kHit = k = std::min(k, K-1); - wsum += w0 - mptr[k].weight; - mptr[k].weight = w0; - mptr[k].mean = pix; - mptr[k].var = var0; - mptr[k].sortKey = sk0; - } - else - for( ; k < K; k++ ) - wsum += mptr[k].weight; - - float wscale = 1.f/wsum; - wsum = 0; - for( k = 0; k < K; k++ ) - { - wsum += mptr[k].weight *= wscale; - mptr[k].sortKey *= wscale; - if( wsum > T && kForeground < 0 ) - kForeground = k+1; - } - - dst[x] = (uchar)(-(kHit >= kForeground)); - } - } - else - { - for( x = 0; x < cols; x++, mptr += K ) - { - float pix = src[x]; - int kHit = -1, kForeground = -1; - - for( k = 0; k < K; k++ ) - { - if( mptr[k].weight < FLT_EPSILON ) - break; - float mu = mptr[k].mean; - float var = mptr[k].var; - float diff = pix - mu; - float d2 = diff*diff; - if( d2 < vT*var ) - { - kHit = k; - break; - } - } - - if( kHit >= 0 ) - { - float wsum = 0; - for( k = 0; k < K; k++ ) - { - wsum += mptr[k].weight; - if( wsum > T ) - { - kForeground = k+1; - break; - } - } - } - - dst[x] = (uchar)(kHit < 0 || kHit >= kForeground ? 255 : 0); - } - } - } -} - - -static void process8uC3( const Mat& image, Mat& fgmask, double learningRate, - Mat& bgmodel, int nmixtures, double backgroundRatio, - double varThreshold, double noiseSigma ) -{ - int x, y, k, k1, rows = image.rows, cols = image.cols; - float alpha = (float)learningRate, T = (float)backgroundRatio, vT = (float)varThreshold; - int K = nmixtures; - - const float w0 = (float)defaultInitialWeight; - const float sk0 = (float)(w0/(defaultNoiseSigma*2*std::sqrt(3.))); - const float var0 = (float)(defaultNoiseSigma*defaultNoiseSigma*4); - const float minVar = (float)(noiseSigma*noiseSigma); - MixData* mptr = (MixData*)bgmodel.data; - - for( y = 0; y < rows; y++ ) - { - const uchar* src = image.ptr(y); - uchar* dst = fgmask.ptr(y); - - if( alpha > 0 ) - { - for( x = 0; x < cols; x++, mptr += K ) - { - float wsum = 0; - Vec3f pix(src[x*3], src[x*3+1], src[x*3+2]); - int kHit = -1, kForeground = -1; - - for( k = 0; k < K; k++ ) - { - float w = mptr[k].weight; - wsum += w; - if( w < FLT_EPSILON ) - break; - Vec3f mu = mptr[k].mean; - Vec3f var = mptr[k].var; - Vec3f diff = pix - mu; - float d2 = diff.dot(diff); - if( d2 < vT*(var[0] + var[1] + var[2]) ) - { - wsum -= w; - float dw = alpha*(1.f - w); - mptr[k].weight = w + dw; - mptr[k].mean = mu + alpha*diff; - var = Vec3f(std::max(var[0] + alpha*(diff[0]*diff[0] - var[0]), minVar), - std::max(var[1] + alpha*(diff[1]*diff[1] - var[1]), minVar), - std::max(var[2] + alpha*(diff[2]*diff[2] - var[2]), minVar)); - mptr[k].var = var; - mptr[k].sortKey = w/std::sqrt(var[0] + var[1] + var[2]); - - for( k1 = k-1; k1 >= 0; k1-- ) - { - if( mptr[k1].sortKey >= mptr[k1+1].sortKey ) - break; - std::swap( mptr[k1], mptr[k1+1] ); - } - - kHit = k1+1; - break; - } - } - - if( kHit < 0 ) // no appropriate gaussian mixture found at all, remove the weakest mixture and create a new one - { - kHit = k = std::min(k, K-1); - wsum += w0 - mptr[k].weight; - mptr[k].weight = w0; - mptr[k].mean = pix; - mptr[k].var = Vec3f(var0, var0, var0); - mptr[k].sortKey = sk0; - } - else - for( ; k < K; k++ ) - wsum += mptr[k].weight; - - float wscale = 1.f/wsum; - wsum = 0; - for( k = 0; k < K; k++ ) - { - wsum += mptr[k].weight *= wscale; - mptr[k].sortKey *= wscale; - if( wsum > T && kForeground < 0 ) - kForeground = k+1; - } - - dst[x] = (uchar)(-(kHit >= kForeground)); - } - } - else - { - for( x = 0; x < cols; x++, mptr += K ) - { - Vec3f pix(src[x*3], src[x*3+1], src[x*3+2]); - int kHit = -1, kForeground = -1; - - for( k = 0; k < K; k++ ) - { - if( mptr[k].weight < FLT_EPSILON ) - break; - Vec3f mu = mptr[k].mean; - Vec3f var = mptr[k].var; - Vec3f diff = pix - mu; - float d2 = diff.dot(diff); - if( d2 < vT*(var[0] + var[1] + var[2]) ) - { - kHit = k; - break; - } - } - - if( kHit >= 0 ) - { - float wsum = 0; - for( k = 0; k < K; k++ ) - { - wsum += mptr[k].weight; - if( wsum > T ) - { - kForeground = k+1; - break; - } - } - } - - dst[x] = (uchar)(kHit < 0 || kHit >= kForeground ? 255 : 0); - } - } - } -} - -void BackgroundSubtractorMOGImpl::apply(InputArray _image, OutputArray _fgmask, double learningRate) -{ - Mat image = _image.getMat(); - bool needToInitialize = nframes == 0 || learningRate >= 1 || image.size() != frameSize || image.type() != frameType; - - if( needToInitialize ) - initialize(image.size(), image.type()); - - CV_Assert( image.depth() == CV_8U ); - _fgmask.create( image.size(), CV_8U ); - Mat fgmask = _fgmask.getMat(); - - ++nframes; - learningRate = learningRate >= 0 && nframes > 1 ? learningRate : 1./std::min( nframes, history ); - CV_Assert(learningRate >= 0); - - if( image.type() == CV_8UC1 ) - process8uC1( image, fgmask, learningRate, bgmodel, nmixtures, backgroundRatio, varThreshold, noiseSigma ); - else if( image.type() == CV_8UC3 ) - process8uC3( image, fgmask, learningRate, bgmodel, nmixtures, backgroundRatio, varThreshold, noiseSigma ); - else - CV_Error( Error::StsUnsupportedFormat, "Only 1- and 3-channel 8-bit images are supported in BackgroundSubtractorMOG" ); -} - -Ptr createBackgroundSubtractorMOG(int history, int nmixtures, - double backgroundRatio, double noiseSigma) -{ - return makePtr(history, nmixtures, backgroundRatio, noiseSigma); -} - -} - -/* End of file. */ diff --git a/modules/video/src/bgfg_gmg.cpp b/modules/video/src/bgfg_gmg.cpp deleted file mode 100644 index f5b7881a0a..0000000000 --- a/modules/video/src/bgfg_gmg.cpp +++ /dev/null @@ -1,522 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Copyright (C) 2013, OpenCV Foundation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -/* - * This class implements an algorithm described in "Visual Tracking of Human Visitors under - * Variable-Lighting Conditions for a Responsive Audio Art Installation," A. Godbehere, - * A. Matsukawa, K. Goldberg, American Control Conference, Montreal, June 2012. - * - * Prepared and integrated by Andrew B. Godbehere. - */ - -#include "precomp.hpp" -#include - -namespace cv -{ - -class BackgroundSubtractorGMGImpl : public BackgroundSubtractorGMG -{ -public: - BackgroundSubtractorGMGImpl() - { - /* - * Default Parameter Values. Override with algorithm "set" method. - */ - maxFeatures = 64; - learningRate = 0.025; - numInitializationFrames = 120; - quantizationLevels = 16; - backgroundPrior = 0.8; - decisionThreshold = 0.8; - smoothingRadius = 7; - updateBackgroundModel = true; - minVal_ = maxVal_ = 0; - name_ = "BackgroundSubtractor.GMG"; - } - - ~BackgroundSubtractorGMGImpl() - { - } - - virtual AlgorithmInfo* info() const { return 0; } - - /** - * Validate parameters and set up data structures for appropriate image size. - * Must call before running on data. - * @param frameSize input frame size - * @param min minimum value taken on by pixels in image sequence. Usually 0 - * @param max maximum value taken on by pixels in image sequence. e.g. 1.0 or 255 - */ - void initialize(Size frameSize, double minVal, double maxVal); - - /** - * Performs single-frame background subtraction and builds up a statistical background image - * model. - * @param image Input image - * @param fgmask Output mask image representing foreground and background pixels - */ - virtual void apply(InputArray image, OutputArray fgmask, double learningRate=-1.0); - - /** - * Releases all inner buffers. - */ - void release(); - - virtual int getMaxFeatures() const { return maxFeatures; } - virtual void setMaxFeatures(int _maxFeatures) { maxFeatures = _maxFeatures; } - - virtual double getDefaultLearningRate() const { return learningRate; } - virtual void setDefaultLearningRate(double lr) { learningRate = lr; } - - virtual int getNumFrames() const { return numInitializationFrames; } - virtual void setNumFrames(int nframes) { numInitializationFrames = nframes; } - - virtual int getQuantizationLevels() const { return quantizationLevels; } - virtual void setQuantizationLevels(int nlevels) { quantizationLevels = nlevels; } - - virtual double getBackgroundPrior() const { return backgroundPrior; } - virtual void setBackgroundPrior(double bgprior) { backgroundPrior = bgprior; } - - virtual int getSmoothingRadius() const { return smoothingRadius; } - virtual void setSmoothingRadius(int radius) { smoothingRadius = radius; } - - virtual double getDecisionThreshold() const { return decisionThreshold; } - virtual void setDecisionThreshold(double thresh) { decisionThreshold = thresh; } - - virtual bool getUpdateBackgroundModel() const { return updateBackgroundModel; } - virtual void setUpdateBackgroundModel(bool update) { updateBackgroundModel = update; } - - virtual double getMinVal() const { return minVal_; } - virtual void setMinVal(double val) { minVal_ = val; } - - virtual double getMaxVal() const { return maxVal_; } - virtual void setMaxVal(double val) { maxVal_ = val; } - - virtual void getBackgroundImage(OutputArray) const - { - CV_Error( Error::StsNotImplemented, "" ); - } - - virtual void write(FileStorage& fs) const - { - fs << "name" << name_ - << "maxFeatures" << maxFeatures - << "defaultLearningRate" << learningRate - << "numFrames" << numInitializationFrames - << "quantizationLevels" << quantizationLevels - << "backgroundPrior" << backgroundPrior - << "decisionThreshold" << decisionThreshold - << "smoothingRadius" << smoothingRadius - << "updateBackgroundModel" << (int)updateBackgroundModel; - // we do not save minVal_ & maxVal_, since they depend on the image type. - } - - virtual void read(const FileNode& fn) - { - CV_Assert( (String)fn["name"] == name_ ); - maxFeatures = (int)fn["maxFeatures"]; - learningRate = (double)fn["defaultLearningRate"]; - numInitializationFrames = (int)fn["numFrames"]; - quantizationLevels = (int)fn["quantizationLevels"]; - backgroundPrior = (double)fn["backgroundPrior"]; - smoothingRadius = (int)fn["smoothingRadius"]; - decisionThreshold = (double)fn["decisionThreshold"]; - updateBackgroundModel = (int)fn["updateBackgroundModel"] != 0; - minVal_ = maxVal_ = 0; - frameSize_ = Size(); - } - - //! Total number of distinct colors to maintain in histogram. - int maxFeatures; - //! Set between 0.0 and 1.0, determines how quickly features are "forgotten" from histograms. - double learningRate; - //! Number of frames of video to use to initialize histograms. - int numInitializationFrames; - //! Number of discrete levels in each channel to be used in histograms. - int quantizationLevels; - //! Prior probability that any given pixel is a background pixel. A sensitivity parameter. - double backgroundPrior; - //! Value above which pixel is determined to be FG. - double decisionThreshold; - //! Smoothing radius, in pixels, for cleaning up FG image. - int smoothingRadius; - //! Perform background model update - bool updateBackgroundModel; - -private: - double maxVal_; - double minVal_; - - Size frameSize_; - int frameNum_; - - String name_; - - Mat_ nfeatures_; - Mat_ colors_; - Mat_ weights_; - - Mat buf_; -}; - - -void BackgroundSubtractorGMGImpl::initialize(Size frameSize, double minVal, double maxVal) -{ - CV_Assert(minVal < maxVal); - CV_Assert(maxFeatures > 0); - CV_Assert(learningRate >= 0.0 && learningRate <= 1.0); - CV_Assert(numInitializationFrames >= 1); - CV_Assert(quantizationLevels >= 1 && quantizationLevels <= 255); - CV_Assert(backgroundPrior >= 0.0 && backgroundPrior <= 1.0); - - minVal_ = minVal; - maxVal_ = maxVal; - - frameSize_ = frameSize; - frameNum_ = 0; - - nfeatures_.create(frameSize_); - colors_.create(frameSize_.area(), maxFeatures); - weights_.create(frameSize_.area(), maxFeatures); - - nfeatures_.setTo(Scalar::all(0)); -} - -namespace -{ - float findFeature(unsigned int color, const unsigned int* colors, const float* weights, int nfeatures) - { - for (int i = 0; i < nfeatures; ++i) - { - if (color == colors[i]) - return weights[i]; - } - - // not in histogram, so return 0. - return 0.0f; - } - - void normalizeHistogram(float* weights, int nfeatures) - { - float total = 0.0f; - for (int i = 0; i < nfeatures; ++i) - total += weights[i]; - - if (total != 0.0f) - { - for (int i = 0; i < nfeatures; ++i) - weights[i] /= total; - } - } - - bool insertFeature(unsigned int color, float weight, unsigned int* colors, float* weights, int& nfeatures, int maxFeatures) - { - int idx = -1; - for (int i = 0; i < nfeatures; ++i) - { - if (color == colors[i]) - { - // feature in histogram - weight += weights[i]; - idx = i; - break; - } - } - - if (idx >= 0) - { - // move feature to beginning of list - - ::memmove(colors + 1, colors, idx * sizeof(unsigned int)); - ::memmove(weights + 1, weights, idx * sizeof(float)); - - colors[0] = color; - weights[0] = weight; - } - else if (nfeatures == maxFeatures) - { - // discard oldest feature - - ::memmove(colors + 1, colors, (nfeatures - 1) * sizeof(unsigned int)); - ::memmove(weights + 1, weights, (nfeatures - 1) * sizeof(float)); - - colors[0] = color; - weights[0] = weight; - } - else - { - colors[nfeatures] = color; - weights[nfeatures] = weight; - - ++nfeatures; - - return true; - } - - return false; - } -} - -namespace -{ - template struct Quantization - { - static unsigned int apply(const void* src_, int x, int cn, double minVal, double maxVal, int quantizationLevels) - { - const T* src = static_cast(src_); - src += x * cn; - - unsigned int res = 0; - for (int i = 0, shift = 0; i < cn; ++i, ++src, shift += 8) - res |= static_cast((*src - minVal) * quantizationLevels / (maxVal - minVal)) << shift; - - return res; - } - }; - - class GMG_LoopBody : public ParallelLoopBody - { - public: - GMG_LoopBody(const Mat& frame, const Mat& fgmask, const Mat_& nfeatures, const Mat_& colors, const Mat_& weights, - int maxFeatures, double learningRate, int numInitializationFrames, int quantizationLevels, double backgroundPrior, double decisionThreshold, - double maxVal, double minVal, int frameNum, bool updateBackgroundModel) : - frame_(frame), fgmask_(fgmask), nfeatures_(nfeatures), colors_(colors), weights_(weights), - maxFeatures_(maxFeatures), learningRate_(learningRate), numInitializationFrames_(numInitializationFrames), quantizationLevels_(quantizationLevels), - backgroundPrior_(backgroundPrior), decisionThreshold_(decisionThreshold), updateBackgroundModel_(updateBackgroundModel), - maxVal_(maxVal), minVal_(minVal), frameNum_(frameNum) - { - } - - void operator() (const Range& range) const; - - private: - Mat frame_; - - mutable Mat_ fgmask_; - - mutable Mat_ nfeatures_; - mutable Mat_ colors_; - mutable Mat_ weights_; - - int maxFeatures_; - double learningRate_; - int numInitializationFrames_; - int quantizationLevels_; - double backgroundPrior_; - double decisionThreshold_; - bool updateBackgroundModel_; - - double maxVal_; - double minVal_; - int frameNum_; - }; - - void GMG_LoopBody::operator() (const Range& range) const - { - typedef unsigned int (*func_t)(const void* src_, int x, int cn, double minVal, double maxVal, int quantizationLevels); - static const func_t funcs[] = - { - Quantization::apply, - Quantization::apply, - Quantization::apply, - Quantization::apply, - Quantization::apply, - Quantization::apply, - Quantization::apply - }; - - const func_t func = funcs[frame_.depth()]; - CV_Assert(func != 0); - - const int cn = frame_.channels(); - - for (int y = range.start, featureIdx = y * frame_.cols; y < range.end; ++y) - { - const uchar* frame_row = frame_.ptr(y); - int* nfeatures_row = nfeatures_[y]; - uchar* fgmask_row = fgmask_[y]; - - for (int x = 0; x < frame_.cols; ++x, ++featureIdx) - { - int nfeatures = nfeatures_row[x]; - unsigned int* colors = colors_[featureIdx]; - float* weights = weights_[featureIdx]; - - unsigned int newFeatureColor = func(frame_row, x, cn, minVal_, maxVal_, quantizationLevels_); - - bool isForeground = false; - - if (frameNum_ >= numInitializationFrames_) - { - // typical operation - - const double weight = findFeature(newFeatureColor, colors, weights, nfeatures); - - // see Godbehere, Matsukawa, Goldberg (2012) for reasoning behind this implementation of Bayes rule - const double posterior = (weight * backgroundPrior_) / (weight * backgroundPrior_ + (1.0 - weight) * (1.0 - backgroundPrior_)); - - isForeground = ((1.0 - posterior) > decisionThreshold_); - - // update histogram. - - if (updateBackgroundModel_) - { - for (int i = 0; i < nfeatures; ++i) - weights[i] *= (float)(1.0f - learningRate_); - - bool inserted = insertFeature(newFeatureColor, (float)learningRate_, colors, weights, nfeatures, maxFeatures_); - - if (inserted) - { - normalizeHistogram(weights, nfeatures); - nfeatures_row[x] = nfeatures; - } - } - } - else if (updateBackgroundModel_) - { - // training-mode update - - insertFeature(newFeatureColor, 1.0f, colors, weights, nfeatures, maxFeatures_); - - if (frameNum_ == numInitializationFrames_ - 1) - normalizeHistogram(weights, nfeatures); - } - - fgmask_row[x] = (uchar)(-(schar)isForeground); - } - } - } -} - -void BackgroundSubtractorGMGImpl::apply(InputArray _frame, OutputArray _fgmask, double newLearningRate) -{ - Mat frame = _frame.getMat(); - - CV_Assert(frame.depth() == CV_8U || frame.depth() == CV_16U || frame.depth() == CV_32F); - CV_Assert(frame.channels() == 1 || frame.channels() == 3 || frame.channels() == 4); - - if (newLearningRate != -1.0) - { - CV_Assert(newLearningRate >= 0.0 && newLearningRate <= 1.0); - learningRate = newLearningRate; - } - - if (frame.size() != frameSize_) - { - double minval = minVal_; - double maxval = maxVal_; - if( minVal_ == 0 && maxVal_ == 0 ) - { - minval = 0; - maxval = frame.depth() == CV_8U ? 255.0 : frame.depth() == CV_16U ? std::numeric_limits::max() : 1.0; - } - initialize(frame.size(), minval, maxval); - } - - _fgmask.create(frameSize_, CV_8UC1); - Mat fgmask = _fgmask.getMat(); - - GMG_LoopBody body(frame, fgmask, nfeatures_, colors_, weights_, - maxFeatures, learningRate, numInitializationFrames, quantizationLevels, backgroundPrior, decisionThreshold, - maxVal_, minVal_, frameNum_, updateBackgroundModel); - parallel_for_(Range(0, frame.rows), body, frame.total()/(double)(1<<16)); - - if (smoothingRadius > 0) - { - medianBlur(fgmask, buf_, smoothingRadius); - swap(fgmask, buf_); - } - - // keep track of how many frames we have processed - ++frameNum_; -} - -void BackgroundSubtractorGMGImpl::release() -{ - frameSize_ = Size(); - - nfeatures_.release(); - colors_.release(); - weights_.release(); - buf_.release(); -} - - -Ptr createBackgroundSubtractorGMG(int initializationFrames, double decisionThreshold) -{ - Ptr bgfg = makePtr(); - bgfg->setNumFrames(initializationFrames); - bgfg->setDecisionThreshold(decisionThreshold); - - return bgfg; -} - -/* - /////////////////////////////////////////////////////////////////////////////////////////////////////////// - - CV_INIT_ALGORITHM(BackgroundSubtractorGMG, "BackgroundSubtractor.GMG", - obj.info()->addParam(obj, "maxFeatures", obj.maxFeatures,false,0,0, - "Maximum number of features to store in histogram. Harsh enforcement of sparsity constraint."); - obj.info()->addParam(obj, "learningRate", obj.learningRate,false,0,0, - "Adaptation rate of histogram. Close to 1, slow adaptation. Close to 0, fast adaptation, features forgotten quickly."); - obj.info()->addParam(obj, "initializationFrames", obj.numInitializationFrames,false,0,0, - "Number of frames to use to initialize histograms of pixels."); - obj.info()->addParam(obj, "quantizationLevels", obj.quantizationLevels,false,0,0, - "Number of discrete colors to be used in histograms. Up-front quantization."); - obj.info()->addParam(obj, "backgroundPrior", obj.backgroundPrior,false,0,0, - "Prior probability that each individual pixel is a background pixel."); - obj.info()->addParam(obj, "smoothingRadius", obj.smoothingRadius,false,0,0, - "Radius of smoothing kernel to filter noise from FG mask image."); - obj.info()->addParam(obj, "decisionThreshold", obj.decisionThreshold,false,0,0, - "Threshold for FG decision rule. Pixel is FG if posterior probability exceeds threshold."); - obj.info()->addParam(obj, "updateBackgroundModel", obj.updateBackgroundModel,false,0,0, - "Perform background model update."); - obj.info()->addParam(obj, "minVal", obj.minVal_,false,0,0, - "Minimum of the value range (mostly for regression testing)"); - obj.info()->addParam(obj, "maxVal", obj.maxVal_,false,0,0, - "Maximum of the value range (mostly for regression testing)"); - ); -*/ - -} diff --git a/modules/video/src/compat_video.cpp b/modules/video/src/compat_video.cpp index 1773d52955..34006b9548 100644 --- a/modules/video/src/compat_video.cpp +++ b/modules/video/src/compat_video.cpp @@ -87,76 +87,6 @@ cvCamShift( const void* imgProb, CvRect windowIn, return rr.size.width*rr.size.height > 0.f ? 1 : -1; } - -///////////////////////// Motion Templates //////////////////////////// - -CV_IMPL void -cvUpdateMotionHistory( const void* silhouette, void* mhimg, - double timestamp, double mhi_duration ) -{ - cv::Mat silh = cv::cvarrToMat(silhouette), mhi = cv::cvarrToMat(mhimg); - cv::updateMotionHistory(silh, mhi, timestamp, mhi_duration); -} - - -CV_IMPL void -cvCalcMotionGradient( const CvArr* mhimg, CvArr* maskimg, - CvArr* orientation, - double delta1, double delta2, - int aperture_size ) -{ - cv::Mat mhi = cv::cvarrToMat(mhimg); - const cv::Mat mask = cv::cvarrToMat(maskimg), orient = cv::cvarrToMat(orientation); - cv::calcMotionGradient(mhi, mask, orient, delta1, delta2, aperture_size); -} - - -CV_IMPL double -cvCalcGlobalOrientation( const void* orientation, const void* maskimg, const void* mhimg, - double curr_mhi_timestamp, double mhi_duration ) -{ - cv::Mat mhi = cv::cvarrToMat(mhimg); - cv::Mat mask = cv::cvarrToMat(maskimg), orient = cv::cvarrToMat(orientation); - return cv::calcGlobalOrientation(orient, mask, mhi, curr_mhi_timestamp, mhi_duration); -} - - -CV_IMPL CvSeq* -cvSegmentMotion( const CvArr* mhimg, CvArr* segmaskimg, CvMemStorage* storage, - double timestamp, double segThresh ) -{ - cv::Mat mhi = cv::cvarrToMat(mhimg); - const cv::Mat segmask = cv::cvarrToMat(segmaskimg); - std::vector brs; - cv::segmentMotion(mhi, segmask, brs, timestamp, segThresh); - CvSeq* seq = cvCreateSeq(0, sizeof(CvSeq), sizeof(CvConnectedComp), storage); - - CvConnectedComp comp; - memset(&comp, 0, sizeof(comp)); - for( size_t i = 0; i < brs.size(); i++ ) - { - cv::Rect roi = brs[i]; - float compLabel = (float)(i+1); - int x, y, area = 0; - - cv::Mat part = segmask(roi); - for( y = 0; y < roi.height; y++ ) - { - const float* partptr = part.ptr(y); - for( x = 0; x < roi.width; x++ ) - area += partptr[x] == compLabel; - } - - comp.value = cv::Scalar(compLabel); - comp.rect = roi; - comp.area = area; - cvSeqPush(seq, &comp); - } - - return seq; -} - - ///////////////////////////////// Kalman /////////////////////////////// CV_IMPL CvKalman* diff --git a/modules/video/src/motempl.cpp b/modules/video/src/motempl.cpp deleted file mode 100644 index af19429252..0000000000 --- a/modules/video/src/motempl.cpp +++ /dev/null @@ -1,416 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of Intel Corporation may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "precomp.hpp" -#include "opencl_kernels_video.hpp" - -#ifdef HAVE_OPENCL - -namespace cv { - -static bool ocl_updateMotionHistory( InputArray _silhouette, InputOutputArray _mhi, - float timestamp, float delbound ) -{ - ocl::Kernel k("updateMotionHistory", ocl::video::updatemotionhistory_oclsrc); - if (k.empty()) - return false; - - UMat silh = _silhouette.getUMat(), mhi = _mhi.getUMat(); - - k.args(ocl::KernelArg::ReadOnlyNoSize(silh), ocl::KernelArg::ReadWrite(mhi), - timestamp, delbound); - - size_t globalsize[2] = { silh.cols, silh.rows }; - return k.run(2, globalsize, NULL, false); -} - -} - -#endif - -void cv::updateMotionHistory( InputArray _silhouette, InputOutputArray _mhi, - double timestamp, double duration ) -{ - CV_Assert( _silhouette.type() == CV_8UC1 && _mhi.type() == CV_32FC1 ); - CV_Assert( _silhouette.sameSize(_mhi) ); - - float ts = (float)timestamp; - float delbound = (float)(timestamp - duration); - - CV_OCL_RUN(_mhi.isUMat() && _mhi.dims() <= 2, - ocl_updateMotionHistory(_silhouette, _mhi, ts, delbound)) - - Mat silh = _silhouette.getMat(), mhi = _mhi.getMat(); - Size size = silh.size(); -#if defined(HAVE_IPP) - int silhstep = (int)silh.step, mhistep = (int)mhi.step; -#endif - - if( silh.isContinuous() && mhi.isContinuous() ) - { - size.width *= size.height; - size.height = 1; -#if defined(HAVE_IPP) - silhstep = (int)silh.total(); - mhistep = (int)mhi.total() * sizeof(Ipp32f); -#endif - } - -#if defined(HAVE_IPP) - IppStatus status = ippiUpdateMotionHistory_8u32f_C1IR((const Ipp8u *)silh.data, silhstep, (Ipp32f *)mhi.data, mhistep, - ippiSize(size.width, size.height), (Ipp32f)timestamp, (Ipp32f)duration); - if (status >= 0) - return; -#endif - -#if CV_SSE2 - volatile bool useSIMD = cv::checkHardwareSupport(CV_CPU_SSE2); -#endif - - for(int y = 0; y < size.height; y++ ) - { - const uchar* silhData = silh.ptr(y); - float* mhiData = mhi.ptr(y); - int x = 0; - -#if CV_SSE2 - if( useSIMD ) - { - __m128 ts4 = _mm_set1_ps(ts), db4 = _mm_set1_ps(delbound); - for( ; x <= size.width - 8; x += 8 ) - { - __m128i z = _mm_setzero_si128(); - __m128i s = _mm_unpacklo_epi8(_mm_loadl_epi64((const __m128i*)(silhData + x)), z); - __m128 s0 = _mm_cvtepi32_ps(_mm_unpacklo_epi16(s, z)), s1 = _mm_cvtepi32_ps(_mm_unpackhi_epi16(s, z)); - __m128 v0 = _mm_loadu_ps(mhiData + x), v1 = _mm_loadu_ps(mhiData + x + 4); - __m128 fz = _mm_setzero_ps(); - - v0 = _mm_and_ps(v0, _mm_cmpge_ps(v0, db4)); - v1 = _mm_and_ps(v1, _mm_cmpge_ps(v1, db4)); - - __m128 m0 = _mm_and_ps(_mm_xor_ps(v0, ts4), _mm_cmpneq_ps(s0, fz)); - __m128 m1 = _mm_and_ps(_mm_xor_ps(v1, ts4), _mm_cmpneq_ps(s1, fz)); - - v0 = _mm_xor_ps(v0, m0); - v1 = _mm_xor_ps(v1, m1); - - _mm_storeu_ps(mhiData + x, v0); - _mm_storeu_ps(mhiData + x + 4, v1); - } - } -#endif - - for( ; x < size.width; x++ ) - { - float val = mhiData[x]; - val = silhData[x] ? ts : val < delbound ? 0 : val; - mhiData[x] = val; - } - } -} - - -void cv::calcMotionGradient( InputArray _mhi, OutputArray _mask, - OutputArray _orientation, - double delta1, double delta2, - int aperture_size ) -{ - static int runcase = 0; runcase++; - - Mat mhi = _mhi.getMat(); - Size size = mhi.size(); - - _mask.create(size, CV_8U); - _orientation.create(size, CV_32F); - - Mat mask = _mask.getMat(); - Mat orient = _orientation.getMat(); - - if( aperture_size < 3 || aperture_size > 7 || (aperture_size & 1) == 0 ) - CV_Error( Error::StsOutOfRange, "aperture_size must be 3, 5 or 7" ); - - if( delta1 <= 0 || delta2 <= 0 ) - CV_Error( Error::StsOutOfRange, "both delta's must be positive" ); - - if( mhi.type() != CV_32FC1 ) - CV_Error( Error::StsUnsupportedFormat, - "MHI must be single-channel floating-point images" ); - - if( orient.data == mhi.data ) - { - _orientation.release(); - _orientation.create(size, CV_32F); - orient = _orientation.getMat(); - } - - if( delta1 > delta2 ) - std::swap(delta1, delta2); - - float gradient_epsilon = 1e-4f * aperture_size * aperture_size; - float min_delta = (float)delta1; - float max_delta = (float)delta2; - - Mat dX_min, dY_max; - - // calc Dx and Dy - Sobel( mhi, dX_min, CV_32F, 1, 0, aperture_size, 1, 0, BORDER_REPLICATE ); - Sobel( mhi, dY_max, CV_32F, 0, 1, aperture_size, 1, 0, BORDER_REPLICATE ); - - int x, y; - - if( mhi.isContinuous() && orient.isContinuous() && mask.isContinuous() ) - { - size.width *= size.height; - size.height = 1; - } - - // calc gradient - for( y = 0; y < size.height; y++ ) - { - const float* dX_min_row = dX_min.ptr(y); - const float* dY_max_row = dY_max.ptr(y); - float* orient_row = orient.ptr(y); - uchar* mask_row = mask.ptr(y); - - fastAtan2(dY_max_row, dX_min_row, orient_row, size.width, true); - - // make orientation zero where the gradient is very small - for( x = 0; x < size.width; x++ ) - { - float dY = dY_max_row[x]; - float dX = dX_min_row[x]; - - if( std::abs(dX) < gradient_epsilon && std::abs(dY) < gradient_epsilon ) - { - mask_row[x] = (uchar)0; - orient_row[x] = 0.f; - } - else - mask_row[x] = (uchar)1; - } - } - - erode( mhi, dX_min, noArray(), Point(-1,-1), (aperture_size-1)/2, BORDER_REPLICATE ); - dilate( mhi, dY_max, noArray(), Point(-1,-1), (aperture_size-1)/2, BORDER_REPLICATE ); - - // mask off pixels which have little motion difference in their neighborhood - for( y = 0; y < size.height; y++ ) - { - const float* dX_min_row = dX_min.ptr(y); - const float* dY_max_row = dY_max.ptr(y); - float* orient_row = orient.ptr(y); - uchar* mask_row = mask.ptr(y); - - for( x = 0; x < size.width; x++ ) - { - float d0 = dY_max_row[x] - dX_min_row[x]; - - if( mask_row[x] == 0 || d0 < min_delta || max_delta < d0 ) - { - mask_row[x] = (uchar)0; - orient_row[x] = 0.f; - } - } - } -} - -double cv::calcGlobalOrientation( InputArray _orientation, InputArray _mask, - InputArray _mhi, double /*timestamp*/, - double duration ) -{ - Mat orient = _orientation.getMat(), mask = _mask.getMat(), mhi = _mhi.getMat(); - Size size = mhi.size(); - - CV_Assert( mask.type() == CV_8U && orient.type() == CV_32F && mhi.type() == CV_32F ); - CV_Assert( mask.size() == size && orient.size() == size ); - CV_Assert( duration > 0 ); - - int histSize = 12; - float _ranges[] = { 0.f, 360.f }; - const float* ranges = _ranges; - Mat hist; - - calcHist(&orient, 1, 0, mask, hist, 1, &histSize, &ranges); - - // find the maximum index (the dominant orientation) - Point baseOrientPt; - minMaxLoc(hist, 0, 0, 0, &baseOrientPt); - float fbaseOrient = (baseOrientPt.x + baseOrientPt.y)*360.f/histSize; - - // override timestamp with the maximum value in MHI - double timestamp = 0; - minMaxLoc( mhi, 0, ×tamp, 0, 0, mask ); - - // find the shift relative to the dominant orientation as weighted sum of relative angles - float a = (float)(254. / 255. / duration); - float b = (float)(1. - timestamp * a); - float delbound = (float)(timestamp - duration); - - if( mhi.isContinuous() && mask.isContinuous() && orient.isContinuous() ) - { - size.width *= size.height; - size.height = 1; - } - - /* - a = 254/(255*dt) - b = 1 - t*a = 1 - 254*t/(255*dur) = - (255*dt - 254*t)/(255*dt) = - (dt - (t - dt)*254)/(255*dt); - -------------------------------------------------------- - ax + b = 254*x/(255*dt) + (dt - (t - dt)*254)/(255*dt) = - (254*x + dt - (t - dt)*254)/(255*dt) = - ((x - (t - dt))*254 + dt)/(255*dt) = - (((x - (t - dt))/dt)*254 + 1)/255 = (((x - low_time)/dt)*254 + 1)/255 - */ - float shiftOrient = 0, shiftWeight = 0; - for( int y = 0; y < size.height; y++ ) - { - const float* mhiptr = mhi.ptr(y); - const float* oriptr = orient.ptr(y); - const uchar* maskptr = mask.ptr(y); - - for( int x = 0; x < size.width; x++ ) - { - if( maskptr[x] != 0 && mhiptr[x] > delbound ) - { - /* - orient in 0..360, base_orient in 0..360 - -> (rel_angle = orient - base_orient) in -360..360. - rel_angle is translated to -180..180 - */ - float weight = mhiptr[x] * a + b; - float relAngle = oriptr[x] - fbaseOrient; - - relAngle += (relAngle < -180 ? 360 : 0); - relAngle += (relAngle > 180 ? -360 : 0); - - if( fabs(relAngle) < 45 ) - { - shiftOrient += weight * relAngle; - shiftWeight += weight; - } - } - } - } - - // add the dominant orientation and the relative shift - if( shiftWeight == 0 ) - shiftWeight = 0.01f; - - fbaseOrient += shiftOrient / shiftWeight; - fbaseOrient -= (fbaseOrient < 360 ? 0 : 360); - fbaseOrient += (fbaseOrient >= 0 ? 0 : 360); - - return fbaseOrient; -} - - -void cv::segmentMotion(InputArray _mhi, OutputArray _segmask, - std::vector& boundingRects, - double timestamp, double segThresh) -{ - Mat mhi = _mhi.getMat(); - - _segmask.create(mhi.size(), CV_32F); - Mat segmask = _segmask.getMat(); - segmask = Scalar::all(0); - - CV_Assert( mhi.type() == CV_32F ); - CV_Assert( segThresh >= 0 ); - - Mat mask = Mat::zeros( mhi.rows + 2, mhi.cols + 2, CV_8UC1 ); - - int x, y; - - // protect zero mhi pixels from floodfill. - for( y = 0; y < mhi.rows; y++ ) - { - const float* mhiptr = mhi.ptr(y); - uchar* maskptr = mask.ptr(y+1) + 1; - - for( x = 0; x < mhi.cols; x++ ) - { - if( mhiptr[x] == 0 ) - maskptr[x] = 1; - } - } - - float ts = (float)timestamp; - float comp_idx = 1.f; - - for( y = 0; y < mhi.rows; y++ ) - { - float* mhiptr = mhi.ptr(y); - uchar* maskptr = mask.ptr(y+1) + 1; - - for( x = 0; x < mhi.cols; x++ ) - { - if( mhiptr[x] == ts && maskptr[x] == 0 ) - { - Rect cc; - floodFill( mhi, mask, Point(x,y), Scalar::all(0), - &cc, Scalar::all(segThresh), Scalar::all(segThresh), - FLOODFILL_MASK_ONLY + 2*256 + 4 ); - - for( int y1 = 0; y1 < cc.height; y1++ ) - { - float* segmaskptr = segmask.ptr(cc.y + y1) + cc.x; - uchar* maskptr1 = mask.ptr(cc.y + y1 + 1) + cc.x + 1; - - for( int x1 = 0; x1 < cc.width; x1++ ) - { - if( maskptr1[x1] > 1 ) - { - maskptr1[x1] = 1; - segmaskptr[x1] = comp_idx; - } - } - } - comp_idx += 1.f; - boundingRects.push_back(cc); - } - } - } -} - - -/* End of file. */ diff --git a/modules/video/src/opencl/updatemotionhistory.cl b/modules/video/src/opencl/updatemotionhistory.cl deleted file mode 100644 index 913e40b266..0000000000 --- a/modules/video/src/opencl/updatemotionhistory.cl +++ /dev/null @@ -1,27 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. - -// Copyright (C) 2014, Advanced Micro Devices, Inc., all rights reserved. -// Third party copyrights are property of their respective owners. - -__kernel void updateMotionHistory(__global const uchar * silh, int silh_step, int silh_offset, - __global uchar * mhiptr, int mhi_step, int mhi_offset, int mhi_rows, int mhi_cols, - float timestamp, float delbound) -{ - int x = get_global_id(0); - int y = get_global_id(1); - - if (x < mhi_cols && y < mhi_rows) - { - int silh_index = mad24(y, silh_step, silh_offset + x); - int mhi_index = mad24(y, mhi_step, mhi_offset + x * (int)sizeof(float)); - - silh += silh_index; - __global float * mhi = (__global float *)(mhiptr + mhi_index); - - float val = mhi[0]; - val = silh[0] ? timestamp : val < delbound ? 0 : val; - mhi[0] = val; - } -} diff --git a/modules/video/src/simpleflow.cpp b/modules/video/src/simpleflow.cpp deleted file mode 100644 index 20fc6b5431..0000000000 --- a/modules/video/src/simpleflow.cpp +++ /dev/null @@ -1,673 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "precomp.hpp" - -// -// 2D dense optical flow algorithm from the following paper: -// Michael Tao, Jiamin Bai, Pushmeet Kohli, and Sylvain Paris. -// "SimpleFlow: A Non-iterative, Sublinear Optical Flow Algorithm" -// Computer Graphics Forum (Eurographics 2012) -// http://graphics.berkeley.edu/papers/Tao-SAN-2012-05/ -// - -namespace cv -{ - -static const uchar MASK_TRUE_VALUE = (uchar)255; - -inline static float dist(const Vec3b& p1, const Vec3b& p2) { - return (float)((p1[0] - p2[0]) * (p1[0] - p2[0]) + - (p1[1] - p2[1]) * (p1[1] - p2[1]) + - (p1[2] - p2[2]) * (p1[2] - p2[2])); -} - -inline static float dist(const Vec2f& p1, const Vec2f& p2) { - return (p1[0] - p2[0]) * (p1[0] - p2[0]) + - (p1[1] - p2[1]) * (p1[1] - p2[1]); -} - -template -inline static T min(T t1, T t2, T t3) { - return (t1 <= t2 && t1 <= t3) ? t1 : min(t2, t3); -} - -static void removeOcclusions(const Mat& flow, - const Mat& flow_inv, - float occ_thr, - Mat& confidence) { - const int rows = flow.rows; - const int cols = flow.cols; - if (!confidence.data) { - confidence = Mat::zeros(rows, cols, CV_32F); - } - for (int r = 0; r < rows; ++r) { - for (int c = 0; c < cols; ++c) { - if (dist(flow.at(r, c), -flow_inv.at(r, c)) > occ_thr) { - confidence.at(r, c) = 0; - } else { - confidence.at(r, c) = 1; - } - } - } -} - -static void wd(Mat& d, int top_shift, int bottom_shift, int left_shift, int right_shift, float sigma) { - for (int dr = -top_shift, r = 0; dr <= bottom_shift; ++dr, ++r) { - for (int dc = -left_shift, c = 0; dc <= right_shift; ++dc, ++c) { - d.at(r, c) = (float)-(dr*dr + dc*dc); - } - } - d *= 1.0 / (2.0 * sigma * sigma); - exp(d, d); -} - -static void wc(const Mat& image, Mat& d, int r0, int c0, - int top_shift, int bottom_shift, int left_shift, int right_shift, float sigma) { - const Vec3b centeral_point = image.at(r0, c0); - int left_border = c0-left_shift, right_border = c0+right_shift; - for (int dr = r0-top_shift, r = 0; dr <= r0+bottom_shift; ++dr, ++r) { - const Vec3b *row = image.ptr(dr); - float *d_row = d.ptr(r); - for (int dc = left_border, c = 0; dc <= right_border; ++dc, ++c) { - d_row[c] = -dist(centeral_point, row[dc]); - } - } - d *= 1.0 / (2.0 * sigma * sigma); - exp(d, d); -} - -static void crossBilateralFilter(const Mat& image, - const Mat& edge_image, - const Mat confidence, - Mat& dst, int d, - float sigma_color, float sigma_space, - bool flag=false) { - const int rows = image.rows; - const int cols = image.cols; - Mat image_extended, edge_image_extended, confidence_extended; - copyMakeBorder(image, image_extended, d, d, d, d, BORDER_DEFAULT); - copyMakeBorder(edge_image, edge_image_extended, d, d, d, d, BORDER_DEFAULT); - copyMakeBorder(confidence, confidence_extended, d, d, d, d, BORDER_CONSTANT, Scalar(0)); - Mat weights_space(2*d+1, 2*d+1, CV_32F); - wd(weights_space, d, d, d, d, sigma_space); - Mat weights(2*d+1, 2*d+1, CV_32F); - Mat weighted_sum(2*d+1, 2*d+1, CV_32F); - - std::vector image_extended_channels; - split(image_extended, image_extended_channels); - - for (int row = 0; row < rows; ++row) { - for (int col = 0; col < cols; ++col) { - wc(edge_image_extended, weights, row+d, col+d, d, d, d, d, sigma_color); - - Range window_rows(row,row+2*d+1); - Range window_cols(col,col+2*d+1); - - multiply(weights, confidence_extended(window_rows, window_cols), weights); - multiply(weights, weights_space, weights); - float weights_sum = (float)sum(weights)[0]; - - for (int ch = 0; ch < 2; ++ch) { - multiply(weights, image_extended_channels[ch](window_rows, window_cols), weighted_sum); - float total_sum = (float)sum(weighted_sum)[0]; - - dst.at(row, col)[ch] = (flag && fabs(weights_sum) < 1e-9) - ? image.at(row, col) - : total_sum / weights_sum; - } - } - } -} - -static void calcConfidence(const Mat& prev, - const Mat& next, - const Mat& flow, - Mat& confidence, - int max_flow) { - const int rows = prev.rows; - const int cols = prev.cols; - confidence = Mat::zeros(rows, cols, CV_32F); - - for (int r0 = 0; r0 < rows; ++r0) { - for (int c0 = 0; c0 < cols; ++c0) { - Vec2f flow_at_point = flow.at(r0, c0); - int u0 = cvRound(flow_at_point[0]); - if (r0 + u0 < 0) { u0 = -r0; } - if (r0 + u0 >= rows) { u0 = rows - 1 - r0; } - int v0 = cvRound(flow_at_point[1]); - if (c0 + v0 < 0) { v0 = -c0; } - if (c0 + v0 >= cols) { v0 = cols - 1 - c0; } - - const int top_row_shift = -std::min(r0 + u0, max_flow); - const int bottom_row_shift = std::min(rows - 1 - (r0 + u0), max_flow); - const int left_col_shift = -std::min(c0 + v0, max_flow); - const int right_col_shift = std::min(cols - 1 - (c0 + v0), max_flow); - - bool first_flow_iteration = true; - float sum_e = 0, min_e = 0; - - for (int u = top_row_shift; u <= bottom_row_shift; ++u) { - for (int v = left_col_shift; v <= right_col_shift; ++v) { - float e = dist(prev.at(r0, c0), next.at(r0 + u0 + u, c0 + v0 + v)); - if (first_flow_iteration) { - sum_e = e; - min_e = e; - first_flow_iteration = false; - } else { - sum_e += e; - min_e = std::min(min_e, e); - } - } - } - int windows_square = (bottom_row_shift - top_row_shift + 1) * - (right_col_shift - left_col_shift + 1); - confidence.at(r0, c0) = (windows_square == 0) ? 0 - : sum_e / windows_square - min_e; - CV_Assert(confidence.at(r0, c0) >= 0); - } - } -} - -static void calcOpticalFlowSingleScaleSF(const Mat& prev_extended, - const Mat& next_extended, - const Mat& mask, - Mat& flow, - int averaging_radius, - int max_flow, - float sigma_dist, - float sigma_color) { - const int averaging_radius_2 = averaging_radius << 1; - const int rows = prev_extended.rows - averaging_radius_2; - const int cols = prev_extended.cols - averaging_radius_2; - - Mat weight_window(averaging_radius_2 + 1, averaging_radius_2 + 1, CV_32F); - Mat space_weight_window(averaging_radius_2 + 1, averaging_radius_2 + 1, CV_32F); - - wd(space_weight_window, averaging_radius, averaging_radius, averaging_radius, averaging_radius, sigma_dist); - - for (int r0 = 0; r0 < rows; ++r0) { - for (int c0 = 0; c0 < cols; ++c0) { - if (!mask.at(r0, c0)) { - continue; - } - - // TODO: do smth with this creepy staff - Vec2f flow_at_point = flow.at(r0, c0); - int u0 = cvRound(flow_at_point[0]); - if (r0 + u0 < 0) { u0 = -r0; } - if (r0 + u0 >= rows) { u0 = rows - 1 - r0; } - int v0 = cvRound(flow_at_point[1]); - if (c0 + v0 < 0) { v0 = -c0; } - if (c0 + v0 >= cols) { v0 = cols - 1 - c0; } - - const int top_row_shift = -std::min(r0 + u0, max_flow); - const int bottom_row_shift = std::min(rows - 1 - (r0 + u0), max_flow); - const int left_col_shift = -std::min(c0 + v0, max_flow); - const int right_col_shift = std::min(cols - 1 - (c0 + v0), max_flow); - - float min_cost = FLT_MAX, best_u = (float)u0, best_v = (float)v0; - - wc(prev_extended, weight_window, r0 + averaging_radius, c0 + averaging_radius, - averaging_radius, averaging_radius, averaging_radius, averaging_radius, sigma_color); - multiply(weight_window, space_weight_window, weight_window); - - const int prev_extended_top_window_row = r0; - const int prev_extended_left_window_col = c0; - - for (int u = top_row_shift; u <= bottom_row_shift; ++u) { - const int next_extended_top_window_row = r0 + u0 + u; - for (int v = left_col_shift; v <= right_col_shift; ++v) { - const int next_extended_left_window_col = c0 + v0 + v; - - float cost = 0; - for (int r = 0; r <= averaging_radius_2; ++r) { - const Vec3b *prev_extended_window_row = prev_extended.ptr(prev_extended_top_window_row + r); - const Vec3b *next_extended_window_row = next_extended.ptr(next_extended_top_window_row + r); - const float* weight_window_row = weight_window.ptr(r); - for (int c = 0; c <= averaging_radius_2; ++c) { - cost += weight_window_row[c] * - dist(prev_extended_window_row[prev_extended_left_window_col + c], - next_extended_window_row[next_extended_left_window_col + c]); - } - } - // cost should be divided by sum(weight_window), but because - // we interested only in min(cost) and sum(weight_window) is constant - // for every point - we remove it - - if (cost < min_cost) { - min_cost = cost; - best_u = (float)(u + u0); - best_v = (float)(v + v0); - } - } - } - flow.at(r0, c0) = Vec2f(best_u, best_v); - } - } -} - -static Mat upscaleOpticalFlow(int new_rows, - int new_cols, - const Mat& image, - const Mat& confidence, - Mat& flow, - int averaging_radius, - float sigma_dist, - float sigma_color) { - crossBilateralFilter(flow, image, confidence, flow, averaging_radius, sigma_color, sigma_dist, true); - Mat new_flow; - resize(flow, new_flow, Size(new_cols, new_rows), 0, 0, INTER_NEAREST); - new_flow *= 2; - return new_flow; -} - -static Mat calcIrregularityMat(const Mat& flow, int radius) { - const int rows = flow.rows; - const int cols = flow.cols; - Mat irregularity = Mat::zeros(rows, cols, CV_32F); - for (int r = 0; r < rows; ++r) { - const int start_row = std::max(0, r - radius); - const int end_row = std::min(rows - 1, r + radius); - for (int c = 0; c < cols; ++c) { - const int start_col = std::max(0, c - radius); - const int end_col = std::min(cols - 1, c + radius); - for (int dr = start_row; dr <= end_row; ++dr) { - for (int dc = start_col; dc <= end_col; ++dc) { - const float diff = dist(flow.at(r, c), flow.at(dr, dc)); - if (diff > irregularity.at(r, c)) { - irregularity.at(r, c) = diff; - } - } - } - } - } - return irregularity; -} - -static void selectPointsToRecalcFlow(const Mat& flow, - int irregularity_metric_radius, - float speed_up_thr, - int curr_rows, - int curr_cols, - const Mat& prev_speed_up, - Mat& speed_up, - Mat& mask) { - const int prev_rows = flow.rows; - const int prev_cols = flow.cols; - - Mat is_flow_regular = calcIrregularityMat(flow, irregularity_metric_radius) - < speed_up_thr; - Mat done = Mat::zeros(prev_rows, prev_cols, CV_8U); - speed_up = Mat::zeros(curr_rows, curr_cols, CV_8U); - mask = Mat::zeros(curr_rows, curr_cols, CV_8U); - - for (int r = 0; r < is_flow_regular.rows; ++r) { - for (int c = 0; c < is_flow_regular.cols; ++c) { - if (!done.at(r, c)) { - if (is_flow_regular.at(r, c) && - 2*r + 1 < curr_rows && 2*c + 1< curr_cols) { - - bool all_flow_in_region_regular = true; - int speed_up_at_this_point = prev_speed_up.at(r, c); - int step = (1 << speed_up_at_this_point) - 1; - int prev_top = r; - int prev_bottom = std::min(r + step, prev_rows - 1); - int prev_left = c; - int prev_right = std::min(c + step, prev_cols - 1); - - for (int rr = prev_top; rr <= prev_bottom; ++rr) { - for (int cc = prev_left; cc <= prev_right; ++cc) { - done.at(rr, cc) = 1; - if (!is_flow_regular.at(rr, cc)) { - all_flow_in_region_regular = false; - } - } - } - - int curr_top = std::min(2 * r, curr_rows - 1); - int curr_bottom = std::min(2*(r + step) + 1, curr_rows - 1); - int curr_left = std::min(2 * c, curr_cols - 1); - int curr_right = std::min(2*(c + step) + 1, curr_cols - 1); - - if (all_flow_in_region_regular && - curr_top != curr_bottom && - curr_left != curr_right) { - mask.at(curr_top, curr_left) = MASK_TRUE_VALUE; - mask.at(curr_bottom, curr_left) = MASK_TRUE_VALUE; - mask.at(curr_top, curr_right) = MASK_TRUE_VALUE; - mask.at(curr_bottom, curr_right) = MASK_TRUE_VALUE; - for (int rr = curr_top; rr <= curr_bottom; ++rr) { - for (int cc = curr_left; cc <= curr_right; ++cc) { - speed_up.at(rr, cc) = (uchar)(speed_up_at_this_point + 1); - } - } - } else { - for (int rr = curr_top; rr <= curr_bottom; ++rr) { - for (int cc = curr_left; cc <= curr_right; ++cc) { - mask.at(rr, cc) = MASK_TRUE_VALUE; - } - } - } - } else { - done.at(r, c) = 1; - for (int dr = 0; dr <= 1; ++dr) { - int nr = 2*r + dr; - for (int dc = 0; dc <= 1; ++dc) { - int nc = 2*c + dc; - if (nr < curr_rows && nc < curr_cols) { - mask.at(nr, nc) = MASK_TRUE_VALUE; - } - } - } - } - } - } - } -} - -static inline float extrapolateValueInRect(int height, int width, - float v11, float v12, - float v21, float v22, - int r, int c) { - if (r == 0 && c == 0) { return v11;} - if (r == 0 && c == width) { return v12;} - if (r == height && c == 0) { return v21;} - if (r == height && c == width) { return v22;} - - CV_Assert(height > 0 && width > 0); - float qr = float(r) / height; - float pr = 1.0f - qr; - float qc = float(c) / width; - float pc = 1.0f - qc; - - return v11*pr*pc + v12*pr*qc + v21*qr*pc + v22*qc*qr; -} - -static void extrapolateFlow(Mat& flow, - const Mat& speed_up) { - const int rows = flow.rows; - const int cols = flow.cols; - Mat done = Mat::zeros(rows, cols, CV_8U); - for (int r = 0; r < rows; ++r) { - for (int c = 0; c < cols; ++c) { - if (!done.at(r, c) && speed_up.at(r, c) > 1) { - int step = (1 << speed_up.at(r, c)) - 1; - int top = r; - int bottom = std::min(r + step, rows - 1); - int left = c; - int right = std::min(c + step, cols - 1); - - int height = bottom - top; - int width = right - left; - for (int rr = top; rr <= bottom; ++rr) { - for (int cc = left; cc <= right; ++cc) { - done.at(rr, cc) = 1; - Vec2f flow_at_point; - Vec2f top_left = flow.at(top, left); - Vec2f top_right = flow.at(top, right); - Vec2f bottom_left = flow.at(bottom, left); - Vec2f bottom_right = flow.at(bottom, right); - - flow_at_point[0] = extrapolateValueInRect(height, width, - top_left[0], top_right[0], - bottom_left[0], bottom_right[0], - rr-top, cc-left); - - flow_at_point[1] = extrapolateValueInRect(height, width, - top_left[1], top_right[1], - bottom_left[1], bottom_right[1], - rr-top, cc-left); - flow.at(rr, cc) = flow_at_point; - } - } - } - } - } -} - -static void buildPyramidWithResizeMethod(const Mat& src, - std::vector& pyramid, - int layers, - int interpolation_type) { - pyramid.push_back(src); - for (int i = 1; i <= layers; ++i) { - Mat prev = pyramid[i - 1]; - if (prev.rows <= 1 || prev.cols <= 1) { - break; - } - - Mat next; - resize(prev, next, Size((prev.cols + 1) / 2, (prev.rows + 1) / 2), 0, 0, interpolation_type); - pyramid.push_back(next); - } -} - -CV_EXPORTS_W void calcOpticalFlowSF(InputArray _from, - InputArray _to, - OutputArray _resulted_flow, - int layers, - int averaging_radius, - int max_flow, - double sigma_dist, - double sigma_color, - int postprocess_window, - double sigma_dist_fix, - double sigma_color_fix, - double occ_thr, - int upscale_averaging_radius, - double upscale_sigma_dist, - double upscale_sigma_color, - double speed_up_thr) -{ - Mat from = _from.getMat(); - Mat to = _to.getMat(); - - std::vector pyr_from_images; - std::vector pyr_to_images; - - buildPyramidWithResizeMethod(from, pyr_from_images, layers - 1, INTER_CUBIC); - buildPyramidWithResizeMethod(to, pyr_to_images, layers - 1, INTER_CUBIC); - - CV_Assert((int)pyr_from_images.size() == layers && (int)pyr_to_images.size() == layers); - - Mat curr_from, curr_to, prev_from, prev_to; - Mat curr_from_extended, curr_to_extended; - - curr_from = pyr_from_images[layers - 1]; - curr_to = pyr_to_images[layers - 1]; - - copyMakeBorder(curr_from, curr_from_extended, - averaging_radius, averaging_radius, averaging_radius, averaging_radius, - BORDER_DEFAULT); - copyMakeBorder(curr_to, curr_to_extended, - averaging_radius, averaging_radius, averaging_radius, averaging_radius, - BORDER_DEFAULT); - - Mat mask = Mat::ones(curr_from.size(), CV_8U); - Mat mask_inv = Mat::ones(curr_from.size(), CV_8U); - - Mat flow = Mat::zeros(curr_from.size(), CV_32FC2); - Mat flow_inv = Mat::zeros(curr_to.size(), CV_32FC2); - - Mat confidence; - Mat confidence_inv; - - - calcOpticalFlowSingleScaleSF(curr_from_extended, - curr_to_extended, - mask, - flow, - averaging_radius, - max_flow, - (float)sigma_dist, - (float)sigma_color); - - calcOpticalFlowSingleScaleSF(curr_to_extended, - curr_from_extended, - mask_inv, - flow_inv, - averaging_radius, - max_flow, - (float)sigma_dist, - (float)sigma_color); - - removeOcclusions(flow, - flow_inv, - (float)occ_thr, - confidence); - - removeOcclusions(flow_inv, - flow, - (float)occ_thr, - confidence_inv); - - Mat speed_up = Mat::zeros(curr_from.size(), CV_8U); - Mat speed_up_inv = Mat::zeros(curr_from.size(), CV_8U); - - for (int curr_layer = layers - 2; curr_layer >= 0; --curr_layer) { - curr_from = pyr_from_images[curr_layer]; - curr_to = pyr_to_images[curr_layer]; - prev_from = pyr_from_images[curr_layer + 1]; - prev_to = pyr_to_images[curr_layer + 1]; - - copyMakeBorder(curr_from, curr_from_extended, - averaging_radius, averaging_radius, averaging_radius, averaging_radius, - BORDER_DEFAULT); - copyMakeBorder(curr_to, curr_to_extended, - averaging_radius, averaging_radius, averaging_radius, averaging_radius, - BORDER_DEFAULT); - - const int curr_rows = curr_from.rows; - const int curr_cols = curr_from.cols; - - Mat new_speed_up, new_speed_up_inv; - - selectPointsToRecalcFlow(flow, - averaging_radius, - (float)speed_up_thr, - curr_rows, - curr_cols, - speed_up, - new_speed_up, - mask); - - selectPointsToRecalcFlow(flow_inv, - averaging_radius, - (float)speed_up_thr, - curr_rows, - curr_cols, - speed_up_inv, - new_speed_up_inv, - mask_inv); - - speed_up = new_speed_up; - speed_up_inv = new_speed_up_inv; - - flow = upscaleOpticalFlow(curr_rows, - curr_cols, - prev_from, - confidence, - flow, - upscale_averaging_radius, - (float)upscale_sigma_dist, - (float)upscale_sigma_color); - - flow_inv = upscaleOpticalFlow(curr_rows, - curr_cols, - prev_to, - confidence_inv, - flow_inv, - upscale_averaging_radius, - (float)upscale_sigma_dist, - (float)upscale_sigma_color); - - calcConfidence(curr_from, curr_to, flow, confidence, max_flow); - calcOpticalFlowSingleScaleSF(curr_from_extended, - curr_to_extended, - mask, - flow, - averaging_radius, - max_flow, - (float)sigma_dist, - (float)sigma_color); - - calcConfidence(curr_to, curr_from, flow_inv, confidence_inv, max_flow); - calcOpticalFlowSingleScaleSF(curr_to_extended, - curr_from_extended, - mask_inv, - flow_inv, - averaging_radius, - max_flow, - (float)sigma_dist, - (float)sigma_color); - - extrapolateFlow(flow, speed_up); - extrapolateFlow(flow_inv, speed_up_inv); - - //TODO: should we remove occlusions for the last stage? - removeOcclusions(flow, flow_inv, (float)occ_thr, confidence); - removeOcclusions(flow_inv, flow, (float)occ_thr, confidence_inv); - } - - crossBilateralFilter(flow, curr_from, confidence, flow, - postprocess_window, (float)sigma_color_fix, (float)sigma_dist_fix); - - GaussianBlur(flow, flow, Size(3, 3), 5); - - _resulted_flow.create(flow.size(), CV_32FC2); - Mat resulted_flow = _resulted_flow.getMat(); - int from_to[] = {0,1 , 1,0}; - mixChannels(&flow, 1, &resulted_flow, 1, from_to, 2); -} - -CV_EXPORTS_W void calcOpticalFlowSF(InputArray from, - InputArray to, - OutputArray flow, - int layers, - int averaging_block_size, - int max_flow) { - calcOpticalFlowSF(from, to, flow, layers, averaging_block_size, max_flow, - 4.1, 25.5, 18, 55.0, 25.5, 0.35, 18, 55.0, 25.5, 10); -} - -} diff --git a/modules/video/test/ocl/test_motempl.cpp b/modules/video/test/ocl/test_motempl.cpp deleted file mode 100644 index f8c6abc633..0000000000 --- a/modules/video/test/ocl/test_motempl.cpp +++ /dev/null @@ -1,67 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. - -// Copyright (C) 2014, Advanced Micro Devices, Inc., all rights reserved. -// Third party copyrights are property of their respective owners. - -#include "../test_precomp.hpp" -#include "opencv2/ts/ocl_test.hpp" - -#ifdef HAVE_OPENCL - -namespace cvtest { -namespace ocl { - -PARAM_TEST_CASE(UpdateMotionHistory, bool) -{ - double timestamp, duration; - bool use_roi; - - TEST_DECLARE_INPUT_PARAMETER(silhouette); - TEST_DECLARE_OUTPUT_PARAMETER(mhi); - - virtual void SetUp() - { - use_roi = GET_PARAM(0); - } - - virtual void generateTestData() - { - Size roiSize = randomSize(1, MAX_VALUE); - Border silhouetteBorder = randomBorder(0, use_roi ? MAX_VALUE : 0); - randomSubMat(silhouette, silhouette_roi, roiSize, silhouetteBorder, CV_8UC1, -11, 11); - - Border mhiBorder = randomBorder(0, use_roi ? MAX_VALUE : 0); - randomSubMat(mhi, mhi_roi, roiSize, mhiBorder, CV_32FC1, 0, 1); - - timestamp = randomDouble(0, 1); - duration = randomDouble(0, 1); - if (timestamp < duration) - std::swap(timestamp, duration); - - UMAT_UPLOAD_INPUT_PARAMETER(silhouette); - UMAT_UPLOAD_OUTPUT_PARAMETER(mhi); - } -}; - -OCL_TEST_P(UpdateMotionHistory, Mat) -{ - for (int j = 0; j < test_loop_times; j++) - { - generateTestData(); - - OCL_OFF(cv::updateMotionHistory(silhouette_roi, mhi_roi, timestamp, duration)); - OCL_ON(cv::updateMotionHistory(usilhouette_roi, umhi_roi, timestamp, duration)); - - OCL_EXPECT_MATS_NEAR(mhi, 0); - } -} - -//////////////////////////////////////// Instantiation ///////////////////////////////////////// - -OCL_INSTANTIATE_TEST_CASE_P(Video, UpdateMotionHistory, Values(false, true)); - -} } // namespace cvtest::ocl - -#endif // HAVE_OPENCL diff --git a/modules/video/test/test_backgroundsubtractor_gbh.cpp b/modules/video/test/test_backgroundsubtractor_gbh.cpp deleted file mode 100644 index 99d53e3d32..0000000000 --- a/modules/video/test/test_backgroundsubtractor_gbh.cpp +++ /dev/null @@ -1,137 +0,0 @@ -/* - * BackgroundSubtractorGBH_test.cpp - * - * Created on: Jun 14, 2012 - * Author: andrewgodbehere - */ - -#include "test_precomp.hpp" - -using namespace cv; - -class CV_BackgroundSubtractorTest : public cvtest::BaseTest -{ -public: - CV_BackgroundSubtractorTest(); -protected: - void run(int); -}; - -CV_BackgroundSubtractorTest::CV_BackgroundSubtractorTest() -{ -} - -/** - * This test checks the following: - * (i) BackgroundSubtractorGMG can operate with matrices of various types and sizes - * (ii) Training mode returns empty fgmask - * (iii) End of training mode, and anomalous frame yields every pixel detected as FG - */ -void CV_BackgroundSubtractorTest::run(int) -{ - int code = cvtest::TS::OK; - RNG& rng = ts->get_rng(); - int type = ((unsigned int)rng)%7; //!< pick a random type, 0 - 6, defined in types_c.h - int channels = 1 + ((unsigned int)rng)%4; //!< random number of channels from 1 to 4. - int channelsAndType = CV_MAKETYPE(type,channels); - int width = 2 + ((unsigned int)rng)%98; //!< Mat will be 2 to 100 in width and height - int height = 2 + ((unsigned int)rng)%98; - - Ptr fgbg = createBackgroundSubtractorGMG(); - Mat fgmask; - - if (!fgbg) - CV_Error(Error::StsError,"Failed to create Algorithm\n"); - - /** - * Set a few parameters - */ - fgbg->setSmoothingRadius(7); - fgbg->setDecisionThreshold(0.7); - fgbg->setNumFrames(120); - - /** - * Generate bounds for the values in the matrix for each type - */ - double maxd = 0, mind = 0; - - /** - * Max value for simulated images picked randomly in upper half of type range - * Min value for simulated images picked randomly in lower half of type range - */ - if (type == CV_8U) - { - uchar half = UCHAR_MAX/2; - maxd = (unsigned char)rng.uniform(half+32, UCHAR_MAX); - mind = (unsigned char)rng.uniform(0, half-32); - } - else if (type == CV_8S) - { - maxd = (char)rng.uniform(32, CHAR_MAX); - mind = (char)rng.uniform(CHAR_MIN, -32); - } - else if (type == CV_16U) - { - ushort half = USHRT_MAX/2; - maxd = (unsigned int)rng.uniform(half+32, USHRT_MAX); - mind = (unsigned int)rng.uniform(0, half-32); - } - else if (type == CV_16S) - { - maxd = rng.uniform(32, SHRT_MAX); - mind = rng.uniform(SHRT_MIN, -32); - } - else if (type == CV_32S) - { - maxd = rng.uniform(32, INT_MAX); - mind = rng.uniform(INT_MIN, -32); - } - else if (type == CV_32F) - { - maxd = rng.uniform(32.0f, FLT_MAX); - mind = rng.uniform(-FLT_MAX, -32.0f); - } - else if (type == CV_64F) - { - maxd = rng.uniform(32.0, DBL_MAX); - mind = rng.uniform(-DBL_MAX, -32.0); - } - - fgbg->setMinVal(mind); - fgbg->setMaxVal(maxd); - - Mat simImage = Mat::zeros(height, width, channelsAndType); - int numLearningFrames = 120; - for (int i = 0; i < numLearningFrames; ++i) - { - /** - * Genrate simulated "image" for any type. Values always confined to upper half of range. - */ - rng.fill(simImage, RNG::UNIFORM, (mind + maxd)*0.5, maxd); - - /** - * Feed simulated images into background subtractor - */ - fgbg->apply(simImage,fgmask); - Mat fullbg = Mat::zeros(simImage.rows, simImage.cols, CV_8U); - - //! fgmask should be entirely background during training - code = cvtest::cmpEps2( ts, fgmask, fullbg, 0, false, "The training foreground mask" ); - if (code < 0) - ts->set_failed_test_info( code ); - } - //! generate last image, distinct from training images - rng.fill(simImage, RNG::UNIFORM, mind, maxd); - - fgbg->apply(simImage,fgmask); - //! now fgmask should be entirely foreground - Mat fullfg = 255*Mat::ones(simImage.rows, simImage.cols, CV_8U); - code = cvtest::cmpEps2( ts, fgmask, fullfg, 255, false, "The final foreground mask" ); - if (code < 0) - { - ts->set_failed_test_info( code ); - } - -} - -TEST(VIDEO_BGSUBGMG, accuracy) { CV_BackgroundSubtractorTest test; test.safe_run(); } diff --git a/modules/video/test/test_motiontemplates.cpp b/modules/video/test/test_motiontemplates.cpp deleted file mode 100644 index 7779327b10..0000000000 --- a/modules/video/test/test_motiontemplates.cpp +++ /dev/null @@ -1,500 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of Intel Corporation may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "test_precomp.hpp" - -using namespace cv; -using namespace std; - -///////////////////// base MHI class /////////////////////// -class CV_MHIBaseTest : public cvtest::ArrayTest -{ -public: - CV_MHIBaseTest(); - -protected: - void get_test_array_types_and_sizes( int test_case_idx, vector >& sizes, vector >& types ); - void get_minmax_bounds( int i, int j, int type, Scalar& low, Scalar& high ); - int prepare_test_case( int test_case_idx ); - double timestamp, duration, max_log_duration; - int mhi_i, mhi_ref_i; - double silh_ratio; -}; - - -CV_MHIBaseTest::CV_MHIBaseTest() -{ - timestamp = duration = 0; - max_log_duration = 9; - mhi_i = mhi_ref_i = -1; - - silh_ratio = 0.25; -} - - -void CV_MHIBaseTest::get_minmax_bounds( int i, int j, int type, Scalar& low, Scalar& high ) -{ - cvtest::ArrayTest::get_minmax_bounds( i, j, type, low, high ); - if( i == INPUT && CV_MAT_DEPTH(type) == CV_8U ) - { - low = Scalar::all(cvRound(-1./silh_ratio)+2.); - high = Scalar::all(2); - } - else if( i == mhi_i || i == mhi_ref_i ) - { - low = Scalar::all(-exp(max_log_duration)); - high = Scalar::all(0.); - } -} - - -void CV_MHIBaseTest::get_test_array_types_and_sizes( int test_case_idx, - vector >& sizes, vector >& types ) -{ - RNG& rng = ts->get_rng(); - cvtest::ArrayTest::get_test_array_types_and_sizes( test_case_idx, sizes, types ); - - types[INPUT][0] = CV_8UC1; - types[mhi_i][0] = types[mhi_ref_i][0] = CV_32FC1; - duration = exp(cvtest::randReal(rng)*max_log_duration); - timestamp = duration + cvtest::randReal(rng)*30.-10.; -} - - -int CV_MHIBaseTest::prepare_test_case( int test_case_idx ) -{ - int code = cvtest::ArrayTest::prepare_test_case( test_case_idx ); - if( code > 0 ) - { - Mat& mat = test_mat[mhi_i][0]; - mat += Scalar::all(duration); - cv::max(mat, 0, mat); - if( mhi_i != mhi_ref_i ) - { - Mat& mat0 = test_mat[mhi_ref_i][0]; - cvtest::copy( mat, mat0 ); - } - } - - return code; -} - - -///////////////////// update motion history //////////////////////////// - -static void test_updateMHI( const Mat& silh, Mat& mhi, double timestamp, double duration ) -{ - int i, j; - float delbound = (float)(timestamp - duration); - for( i = 0; i < mhi.rows; i++ ) - { - const uchar* silh_row = silh.ptr(i); - float* mhi_row = mhi.ptr(i); - - for( j = 0; j < mhi.cols; j++ ) - { - if( silh_row[j] ) - mhi_row[j] = (float)timestamp; - else if( mhi_row[j] < delbound ) - mhi_row[j] = 0.f; - } - } -} - - -class CV_UpdateMHITest : public CV_MHIBaseTest -{ -public: - CV_UpdateMHITest(); - -protected: - double get_success_error_level( int test_case_idx, int i, int j ); - void run_func(); - void prepare_to_validation( int ); -}; - - -CV_UpdateMHITest::CV_UpdateMHITest() -{ - test_array[INPUT].push_back(NULL); - test_array[INPUT_OUTPUT].push_back(NULL); - test_array[REF_INPUT_OUTPUT].push_back(NULL); - mhi_i = INPUT_OUTPUT; mhi_ref_i = REF_INPUT_OUTPUT; -} - - -double CV_UpdateMHITest::get_success_error_level( int /*test_case_idx*/, int /*i*/, int /*j*/ ) -{ - return 0; -} - - -void CV_UpdateMHITest::run_func() -{ - cv::updateMotionHistory( test_mat[INPUT][0], test_mat[INPUT_OUTPUT][0], timestamp, duration); -} - - -void CV_UpdateMHITest::prepare_to_validation( int /*test_case_idx*/ ) -{ - //CvMat m0 = test_mat[REF_INPUT_OUTPUT][0]; - test_updateMHI( test_mat[INPUT][0], test_mat[REF_INPUT_OUTPUT][0], timestamp, duration ); -} - - -///////////////////// calc motion gradient //////////////////////////// - -static void test_MHIGradient( const Mat& mhi, Mat& mask, Mat& orientation, - double delta1, double delta2, int aperture_size ) -{ - Point anchor( aperture_size/2, aperture_size/2 ); - double limit = 1e-4*aperture_size*aperture_size; - - Mat dx, dy, min_mhi, max_mhi; - - Mat kernel = cvtest::calcSobelKernel2D( 1, 0, aperture_size ); - cvtest::filter2D( mhi, dx, CV_32F, kernel, anchor, 0, BORDER_REPLICATE ); - kernel = cvtest::calcSobelKernel2D( 0, 1, aperture_size ); - cvtest::filter2D( mhi, dy, CV_32F, kernel, anchor, 0, BORDER_REPLICATE ); - - kernel = Mat::ones(aperture_size, aperture_size, CV_8U); - cvtest::erode(mhi, min_mhi, kernel, anchor, 0, BORDER_REPLICATE); - cvtest::dilate(mhi, max_mhi, kernel, anchor, 0, BORDER_REPLICATE); - - if( delta1 > delta2 ) - { - std::swap( delta1, delta2 ); - } - - for( int i = 0; i < mhi.rows; i++ ) - { - uchar* mask_row = mask.ptr(i); - float* orient_row = orientation.ptr(i); - const float* dx_row = dx.ptr(i); - const float* dy_row = dy.ptr(i); - const float* min_row = min_mhi.ptr(i); - const float* max_row = max_mhi.ptr(i); - - for( int j = 0; j < mhi.cols; j++ ) - { - double delta = max_row[j] - min_row[j]; - double _dx = dx_row[j], _dy = dy_row[j]; - - if( delta1 <= delta && delta <= delta2 && - (fabs(_dx) > limit || fabs(_dy) > limit) ) - { - mask_row[j] = 1; - double angle = atan2( _dy, _dx ) * (180/CV_PI); - if( angle < 0 ) - angle += 360.; - orient_row[j] = (float)angle; - } - else - { - mask_row[j] = 0; - orient_row[j] = 0.f; - } - } - } -} - - -class CV_MHIGradientTest : public CV_MHIBaseTest -{ -public: - CV_MHIGradientTest(); - -protected: - void get_test_array_types_and_sizes( int test_case_idx, vector >& sizes, vector >& types ); - double get_success_error_level( int test_case_idx, int i, int j ); - void run_func(); - void prepare_to_validation( int ); - - double delta1, delta2, delta_range_log; - int aperture_size; -}; - - -CV_MHIGradientTest::CV_MHIGradientTest() -{ - mhi_i = mhi_ref_i = INPUT; - test_array[INPUT].push_back(NULL); - test_array[OUTPUT].push_back(NULL); - test_array[OUTPUT].push_back(NULL); - test_array[REF_OUTPUT].push_back(NULL); - test_array[REF_OUTPUT].push_back(NULL); - delta1 = delta2 = 0; - aperture_size = 0; - delta_range_log = 4; -} - - -void CV_MHIGradientTest::get_test_array_types_and_sizes( int test_case_idx, vector >& sizes, vector >& types ) -{ - RNG& rng = ts->get_rng(); - CV_MHIBaseTest::get_test_array_types_and_sizes( test_case_idx, sizes, types ); - - types[OUTPUT][0] = types[REF_OUTPUT][0] = CV_8UC1; - types[OUTPUT][1] = types[REF_OUTPUT][1] = CV_32FC1; - delta1 = exp(cvtest::randReal(rng)*delta_range_log + 1.); - delta2 = exp(cvtest::randReal(rng)*delta_range_log + 1.); - aperture_size = (cvtest::randInt(rng)%3)*2+3; - //duration = exp(cvtest::randReal(rng)*max_log_duration); - //timestamp = duration + cvtest::randReal(rng)*30.-10.; -} - - -double CV_MHIGradientTest::get_success_error_level( int /*test_case_idx*/, int /*i*/, int j ) -{ - return j == 0 ? 0 : 2e-1; -} - - -void CV_MHIGradientTest::run_func() -{ - cv::calcMotionGradient(test_mat[INPUT][0], test_mat[OUTPUT][0], - test_mat[OUTPUT][1], delta1, delta2, aperture_size ); - //cvCalcMotionGradient( test_array[INPUT][0], test_array[OUTPUT][0], - // test_array[OUTPUT][1], delta1, delta2, aperture_size ); -} - - -void CV_MHIGradientTest::prepare_to_validation( int /*test_case_idx*/ ) -{ - test_MHIGradient( test_mat[INPUT][0], test_mat[REF_OUTPUT][0], - test_mat[REF_OUTPUT][1], delta1, delta2, aperture_size ); - test_mat[REF_OUTPUT][0] += Scalar::all(1); - test_mat[OUTPUT][0] += Scalar::all(1); -} - - -////////////////////// calc global orientation ///////////////////////// - -static double test_calcGlobalOrientation( const Mat& orient, const Mat& mask, - const Mat& mhi, double timestamp, double duration ) -{ - const int HIST_SIZE = 12; - int y, x; - int histogram[HIST_SIZE]; - int max_bin = 0; - - double base_orientation = 0, delta_orientation = 0, weight = 0; - double low_time, global_orientation; - - memset( histogram, 0, sizeof( histogram )); - timestamp = 0; - - for( y = 0; y < orient.rows; y++ ) - { - const float* orient_data = orient.ptr(y); - const uchar* mask_data = mask.ptr(y); - const float* mhi_data = mhi.ptr(y); - for( x = 0; x < orient.cols; x++ ) - if( mask_data[x] ) - { - int bin = cvFloor( (orient_data[x]*HIST_SIZE)/360 ); - histogram[bin < 0 ? 0 : bin >= HIST_SIZE ? HIST_SIZE-1 : bin]++; - if( mhi_data[x] > timestamp ) - timestamp = mhi_data[x]; - } - } - - low_time = timestamp - duration; - - for( x = 1; x < HIST_SIZE; x++ ) - { - if( histogram[x] > histogram[max_bin] ) - max_bin = x; - } - - base_orientation = ((double)max_bin*360)/HIST_SIZE; - - for( y = 0; y < orient.rows; y++ ) - { - const float* orient_data = orient.ptr(y); - const float* mhi_data = mhi.ptr(y); - const uchar* mask_data = mask.ptr(y); - - for( x = 0; x < orient.cols; x++ ) - { - if( mask_data[x] && mhi_data[x] > low_time ) - { - double diff = orient_data[x] - base_orientation; - double delta_weight = (((mhi_data[x] - low_time)/duration)*254 + 1)/255; - - if( diff < -180 ) diff += 360; - if( diff > 180 ) diff -= 360; - - if( delta_weight > 0 && fabs(diff) < 45 ) - { - delta_orientation += diff*delta_weight; - weight += delta_weight; - } - } - } - } - - if( weight == 0 ) - global_orientation = base_orientation; - else - { - global_orientation = base_orientation + delta_orientation/weight; - if( global_orientation < 0 ) global_orientation += 360; - if( global_orientation > 360 ) global_orientation -= 360; - } - - return global_orientation; -} - - -class CV_MHIGlobalOrientTest : public CV_MHIBaseTest -{ -public: - CV_MHIGlobalOrientTest(); - -protected: - void get_test_array_types_and_sizes( int test_case_idx, vector >& sizes, vector >& types ); - void get_minmax_bounds( int i, int j, int type, Scalar& low, Scalar& high ); - double get_success_error_level( int test_case_idx, int i, int j ); - int validate_test_results( int test_case_idx ); - void run_func(); - double angle, min_angle, max_angle; -}; - - -CV_MHIGlobalOrientTest::CV_MHIGlobalOrientTest() -{ - mhi_i = mhi_ref_i = INPUT; - test_array[INPUT].push_back(NULL); - test_array[INPUT].push_back(NULL); - test_array[INPUT].push_back(NULL); - min_angle = max_angle = 0; -} - - -void CV_MHIGlobalOrientTest::get_test_array_types_and_sizes( int test_case_idx, vector >& sizes, vector >& types ) -{ - RNG& rng = ts->get_rng(); - CV_MHIBaseTest::get_test_array_types_and_sizes( test_case_idx, sizes, types ); - Size size = sizes[INPUT][0]; - - size.width = MAX( size.width, 16 ); - size.height = MAX( size.height, 16 ); - sizes[INPUT][0] = sizes[INPUT][1] = sizes[INPUT][2] = size; - - types[INPUT][1] = CV_8UC1; // mask - types[INPUT][2] = CV_32FC1; // orientation - - min_angle = cvtest::randReal(rng)*359.9; - max_angle = cvtest::randReal(rng)*359.9; - if( min_angle >= max_angle ) - { - std::swap( min_angle, max_angle); - } - max_angle += 0.1; - duration = exp(cvtest::randReal(rng)*max_log_duration); - timestamp = duration + cvtest::randReal(rng)*30.-10.; -} - - -void CV_MHIGlobalOrientTest::get_minmax_bounds( int i, int j, int type, Scalar& low, Scalar& high ) -{ - CV_MHIBaseTest::get_minmax_bounds( i, j, type, low, high ); - if( i == INPUT && j == 2 ) - { - low = Scalar::all(min_angle); - high = Scalar::all(max_angle); - } -} - - -double CV_MHIGlobalOrientTest::get_success_error_level( int /*test_case_idx*/, int /*i*/, int /*j*/ ) -{ - return 15; -} - - -void CV_MHIGlobalOrientTest::run_func() -{ - //angle = cvCalcGlobalOrientation( test_array[INPUT][2], test_array[INPUT][1], - // test_array[INPUT][0], timestamp, duration ); - angle = cv::calcGlobalOrientation(test_mat[INPUT][2], test_mat[INPUT][1], - test_mat[INPUT][0], timestamp, duration ); -} - - -int CV_MHIGlobalOrientTest::validate_test_results( int test_case_idx ) -{ - //printf("%d. rows=%d, cols=%d, nzmask=%d\n", test_case_idx, test_mat[INPUT][1].rows, test_mat[INPUT][1].cols, - // cvCountNonZero(test_array[INPUT][1])); - - double ref_angle = test_calcGlobalOrientation( test_mat[INPUT][2], test_mat[INPUT][1], - test_mat[INPUT][0], timestamp, duration ); - double err_level = get_success_error_level( test_case_idx, 0, 0 ); - int code = cvtest::TS::OK; - int nz = countNonZero( test_mat[INPUT][1] ); - - if( nz > 32 && !(min_angle - err_level <= angle && - max_angle + err_level >= angle) && - !(min_angle - err_level <= angle+360 && - max_angle + err_level >= angle+360) ) - { - ts->printf( cvtest::TS::LOG, "The angle=%g is outside (%g,%g) range\n", - angle, min_angle - err_level, max_angle + err_level ); - code = cvtest::TS::FAIL_BAD_ACCURACY; - } - else if( fabs(angle - ref_angle) > err_level && - fabs(360 - fabs(angle - ref_angle)) > err_level ) - { - ts->printf( cvtest::TS::LOG, "The angle=%g differs too much from reference value=%g\n", - angle, ref_angle ); - code = cvtest::TS::FAIL_BAD_ACCURACY; - } - - if( code < 0 ) - ts->set_failed_test_info( code ); - return code; -} - - -TEST(Video_MHIUpdate, accuracy) { CV_UpdateMHITest test; test.safe_run(); } -TEST(Video_MHIGradient, accuracy) { CV_MHIGradientTest test; test.safe_run(); } -TEST(Video_MHIGlobalOrient, accuracy) { CV_MHIGlobalOrientTest test; test.safe_run(); } diff --git a/modules/video/test/test_simpleflow.cpp b/modules/video/test/test_simpleflow.cpp deleted file mode 100644 index 71a4468e60..0000000000 --- a/modules/video/test/test_simpleflow.cpp +++ /dev/null @@ -1,190 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of Intel Corporation may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "test_precomp.hpp" - -#include - -using namespace std; - -/* ///////////////////// simpleflow_test ///////////////////////// */ - -class CV_SimpleFlowTest : public cvtest::BaseTest -{ -public: - CV_SimpleFlowTest(); -protected: - void run(int); -}; - - -CV_SimpleFlowTest::CV_SimpleFlowTest() {} - -static bool readOpticalFlowFromFile(FILE* file, cv::Mat& flow) { - char header[5]; - if (fread(header, 1, 4, file) < 4 && (string)header != "PIEH") { - return false; - } - - int cols, rows; - if (fread(&cols, sizeof(int), 1, file) != 1|| - fread(&rows, sizeof(int), 1, file) != 1) { - return false; - } - - flow = cv::Mat::zeros(rows, cols, CV_32FC2); - - for (int i = 0; i < rows; ++i) { - for (int j = 0; j < cols; ++j) { - cv::Vec2f flow_at_point; - if (fread(&(flow_at_point[0]), sizeof(float), 1, file) != 1 || - fread(&(flow_at_point[1]), sizeof(float), 1, file) != 1) { - return false; - } - flow.at(i, j) = flow_at_point; - } - } - - return true; -} - -static bool isFlowCorrect(float u) { - return !cvIsNaN(u) && (fabs(u) < 1e9); -} - -static float calc_rmse(cv::Mat flow1, cv::Mat flow2) { - float sum = 0; - int counter = 0; - const int rows = flow1.rows; - const int cols = flow1.cols; - - for (int y = 0; y < rows; ++y) { - for (int x = 0; x < cols; ++x) { - cv::Vec2f flow1_at_point = flow1.at(y, x); - cv::Vec2f flow2_at_point = flow2.at(y, x); - - float u1 = flow1_at_point[0]; - float v1 = flow1_at_point[1]; - float u2 = flow2_at_point[0]; - float v2 = flow2_at_point[1]; - - if (isFlowCorrect(u1) && isFlowCorrect(u2) && isFlowCorrect(v1) && isFlowCorrect(v2)) { - sum += (u1-u2)*(u1-u2) + (v1-v2)*(v1-v2); - counter++; - } - } - } - return (float)sqrt(sum / (1e-9 + counter)); -} - -void CV_SimpleFlowTest::run(int) { - const float MAX_RMSE = 0.6f; - const string frame1_path = ts->get_data_path() + "optflow/RubberWhale1.png"; - const string frame2_path = ts->get_data_path() + "optflow/RubberWhale2.png"; - const string gt_flow_path = ts->get_data_path() + "optflow/RubberWhale.flo"; - - cv::Mat frame1 = cv::imread(frame1_path); - cv::Mat frame2 = cv::imread(frame2_path); - - if (frame1.empty()) { - ts->printf(cvtest::TS::LOG, "could not read image %s\n", frame2_path.c_str()); - ts->set_failed_test_info(cvtest::TS::FAIL_MISSING_TEST_DATA); - return; - } - - if (frame2.empty()) { - ts->printf(cvtest::TS::LOG, "could not read image %s\n", frame2_path.c_str()); - ts->set_failed_test_info(cvtest::TS::FAIL_MISSING_TEST_DATA); - return; - } - - if (frame1.rows != frame2.rows && frame1.cols != frame2.cols) { - ts->printf(cvtest::TS::LOG, "images should be of equal sizes (%s and %s)", - frame1_path.c_str(), frame2_path.c_str()); - ts->set_failed_test_info(cvtest::TS::FAIL_MISSING_TEST_DATA); - return; - } - - if (frame1.type() != 16 || frame2.type() != 16) { - ts->printf(cvtest::TS::LOG, "images should be of equal type CV_8UC3 (%s and %s)", - frame1_path.c_str(), frame2_path.c_str()); - ts->set_failed_test_info(cvtest::TS::FAIL_MISSING_TEST_DATA); - return; - } - - cv::Mat flow_gt; - - FILE* gt_flow_file = fopen(gt_flow_path.c_str(), "rb"); - if (gt_flow_file == NULL) { - ts->printf(cvtest::TS::LOG, "could not read ground-thuth flow from file %s", - gt_flow_path.c_str()); - ts->set_failed_test_info(cvtest::TS::FAIL_MISSING_TEST_DATA); - return; - } - - if (!readOpticalFlowFromFile(gt_flow_file, flow_gt)) { - ts->printf(cvtest::TS::LOG, "error while reading flow data from file %s", - gt_flow_path.c_str()); - ts->set_failed_test_info(cvtest::TS::FAIL_MISSING_TEST_DATA); - return; - } - fclose(gt_flow_file); - - cv::Mat flow; - cv::calcOpticalFlowSF(frame1, frame2, flow, 3, 2, 4); - - float rmse = calc_rmse(flow_gt, flow); - - ts->printf(cvtest::TS::LOG, "Optical flow estimation RMSE for SimpleFlow algorithm : %lf\n", - rmse); - - if (rmse > MAX_RMSE) { - ts->printf( cvtest::TS::LOG, - "Too big rmse error : %lf ( >= %lf )\n", rmse, MAX_RMSE); - ts->set_failed_test_info(cvtest::TS::FAIL_BAD_ACCURACY); - return; - } -} - - -TEST(Video_OpticalFlowSimpleFlow, accuracy) { CV_SimpleFlowTest test; test.safe_run(); } - -/* End of file. */ diff --git a/samples/cpp/bgfg_gmg.cpp b/samples/cpp/bgfg_gmg.cpp deleted file mode 100644 index a70bec9ee0..0000000000 --- a/samples/cpp/bgfg_gmg.cpp +++ /dev/null @@ -1,81 +0,0 @@ -/* - * FGBGTest.cpp - * - * Created on: May 7, 2012 - * Author: Andrew B. Godbehere - */ - -#include "opencv2/video.hpp" -#include "opencv2/videoio.hpp" -#include "opencv2/highgui.hpp" -#include -#include - -using namespace cv; - -static void help() -{ - std::cout << - "\nA program demonstrating the use and capabilities of a particular BackgroundSubtraction\n" - "algorithm described in A. Godbehere, A. Matsukawa, K. Goldberg, \n" - "\"Visual Tracking of Human Visitors under Variable-Lighting Conditions for a Responsive\n" - "Audio Art Installation\", American Control Conference, 2012, used in an interactive\n" - "installation at the Contemporary Jewish Museum in San Francisco, CA from March 31 through\n" - "July 31, 2011.\n" - "Call:\n" - "./BackgroundSubtractorGMG_sample\n" - "Using OpenCV version " << CV_VERSION << "\n"< fgbg = createBackgroundSubtractorGMG(20, 0.7); - if (!fgbg) - { - std::cerr << "Failed to create BackgroundSubtractor.GMG Algorithm." << std::endl; - return -1; - } - - VideoCapture cap; - if (argc > 1) - cap.open(argv[1]); - else - cap.open(0); - - if (!cap.isOpened()) - { - std::cerr << "Cannot read video. Try moving video file to sample directory." << std::endl; - return -1; - } - - Mat frame, fgmask, segm; - - namedWindow("FG Segmentation", WINDOW_NORMAL); - - for (;;) - { - cap >> frame; - - if (frame.empty()) - break; - - fgbg->apply(frame, fgmask); - - frame.convertTo(segm, CV_8U, 0.5); - add(frame, Scalar(100, 100, 0), segm, fgmask); - - imshow("FG Segmentation", segm); - - int c = waitKey(30); - if (c == 'q' || c == 'Q' || (c & 255) == 27) - break; - } - - return 0; -} diff --git a/samples/cpp/bgfg_segm.cpp b/samples/cpp/bgfg_segm.cpp index 31c7da05f7..94aa4d8387 100644 --- a/samples/cpp/bgfg_segm.cpp +++ b/samples/cpp/bgfg_segm.cpp @@ -21,6 +21,8 @@ static void help() const char* keys = { "{c camera | | use camera or not}" + "{m method |mog2 | method (knn or mog2) }" + "{s smooth | | smooth the mask }" "{fn file_name|tree.avi | movie file }" }; @@ -31,7 +33,9 @@ int main(int argc, const char** argv) CommandLineParser parser(argc, argv, keys); bool useCamera = parser.has("camera"); + bool smoothMask = parser.has("smooth"); string file = parser.get("file_name"); + string method = parser.get("method"); VideoCapture cap; bool update_bg_model = true; @@ -53,24 +57,31 @@ int main(int argc, const char** argv) namedWindow("foreground image", WINDOW_NORMAL); namedWindow("mean background image", WINDOW_NORMAL); - Ptr bg_model = createBackgroundSubtractorMOG2(); + Ptr bg_model = method == "knn" ? + createBackgroundSubtractorKNN().dynamicCast() : + createBackgroundSubtractorMOG2().dynamicCast(); - Mat img, fgmask, fgimg; + Mat img0, img, fgmask, fgimg; for(;;) { - cap >> img; + cap >> img0; - if( img.empty() ) + if( img0.empty() ) break; - //cvtColor(_img, img, COLOR_BGR2GRAY); + resize(img0, img, Size(640, 640*img0.rows/img0.cols), INTER_LINEAR); if( fgimg.empty() ) fgimg.create(img.size(), img.type()); //update the model bg_model->apply(img, fgmask, update_bg_model ? -1 : 0); + if( smoothMask ) + { + GaussianBlur(fgmask, fgmask, Size(11, 11), 3.5, 3.5); + threshold(fgmask, fgmask, 10, 255, THRESH_BINARY); + } fgimg = Scalar::all(0); img.copyTo(fgimg, fgmask); diff --git a/samples/cpp/motempl.cpp b/samples/cpp/motempl.cpp deleted file mode 100644 index 66449981e7..0000000000 --- a/samples/cpp/motempl.cpp +++ /dev/null @@ -1,204 +0,0 @@ -#include "opencv2/video/tracking_c.h" -#include "opencv2/imgproc/imgproc_c.h" -#include "opencv2/videoio/videoio_c.h" -#include "opencv2/highgui/highgui_c.h" -#include -#include -#include - -static void help(void) -{ - printf( - "\nThis program demonstrated the use of motion templates -- basically using the gradients\n" - "of thresholded layers of decaying frame differencing. New movements are stamped on top with floating system\n" - "time code and motions too old are thresholded away. This is the 'motion history file'. The program reads from the camera of your choice or from\n" - "a file. Gradients of motion history are used to detect direction of motoin etc\n" - "Usage :\n" - "./motempl [camera number 0-n or file name, default is camera 0]\n" - ); -} -// various tracking parameters (in seconds) -const double MHI_DURATION = 1; -const double MAX_TIME_DELTA = 0.5; -const double MIN_TIME_DELTA = 0.05; -// number of cyclic frame buffer used for motion detection -// (should, probably, depend on FPS) -const int N = 4; - -// ring image buffer -IplImage **buf = 0; -int last = 0; - -// temporary images -IplImage *mhi = 0; // MHI -IplImage *orient = 0; // orientation -IplImage *mask = 0; // valid orientation mask -IplImage *segmask = 0; // motion segmentation map -CvMemStorage* storage = 0; // temporary storage - -// parameters: -// img - input video frame -// dst - resultant motion picture -// args - optional parameters -static void update_mhi( IplImage* img, IplImage* dst, int diff_threshold ) -{ - double timestamp = (double)clock()/CLOCKS_PER_SEC; // get current time in seconds - CvSize size = cvSize(img->width,img->height); // get current frame size - int i, idx1 = last, idx2; - IplImage* silh; - CvSeq* seq; - CvRect comp_rect; - double count; - double angle; - CvPoint center; - double magnitude; - CvScalar color; - - // allocate images at the beginning or - // reallocate them if the frame size is changed - if( !mhi || mhi->width != size.width || mhi->height != size.height ) { - if( buf == 0 ) { - buf = (IplImage**)malloc(N*sizeof(buf[0])); - memset( buf, 0, N*sizeof(buf[0])); - } - - for( i = 0; i < N; i++ ) { - cvReleaseImage( &buf[i] ); - buf[i] = cvCreateImage( size, IPL_DEPTH_8U, 1 ); - cvZero( buf[i] ); - } - cvReleaseImage( &mhi ); - cvReleaseImage( &orient ); - cvReleaseImage( &segmask ); - cvReleaseImage( &mask ); - - mhi = cvCreateImage( size, IPL_DEPTH_32F, 1 ); - cvZero( mhi ); // clear MHI at the beginning - orient = cvCreateImage( size, IPL_DEPTH_32F, 1 ); - segmask = cvCreateImage( size, IPL_DEPTH_32F, 1 ); - mask = cvCreateImage( size, IPL_DEPTH_8U, 1 ); - } - - cvCvtColor( img, buf[last], CV_BGR2GRAY ); // convert frame to grayscale - - idx2 = (last + 1) % N; // index of (last - (N-1))th frame - last = idx2; - - silh = buf[idx2]; - cvAbsDiff( buf[idx1], buf[idx2], silh ); // get difference between frames - - cvThreshold( silh, silh, diff_threshold, 1, CV_THRESH_BINARY ); // and threshold it - cvUpdateMotionHistory( silh, mhi, timestamp, MHI_DURATION ); // update MHI - - // convert MHI to blue 8u image - cvCvtScale( mhi, mask, 255./MHI_DURATION, - (MHI_DURATION - timestamp)*255./MHI_DURATION ); - cvZero( dst ); - cvMerge( mask, 0, 0, 0, dst ); - - // calculate motion gradient orientation and valid orientation mask - cvCalcMotionGradient( mhi, mask, orient, MAX_TIME_DELTA, MIN_TIME_DELTA, 3 ); - - if( !storage ) - storage = cvCreateMemStorage(0); - else - cvClearMemStorage(storage); - - // segment motion: get sequence of motion components - // segmask is marked motion components map. It is not used further - seq = cvSegmentMotion( mhi, segmask, storage, timestamp, MAX_TIME_DELTA ); - - // iterate through the motion components, - // One more iteration (i == -1) corresponds to the whole image (global motion) - for( i = -1; i < seq->total; i++ ) { - - if( i < 0 ) { // case of the whole image - comp_rect = cvRect( 0, 0, size.width, size.height ); - color = CV_RGB(255,255,255); - magnitude = 100; - } - else { // i-th motion component - comp_rect = ((CvConnectedComp*)cvGetSeqElem( seq, i ))->rect; - if( comp_rect.width + comp_rect.height < 100 ) // reject very small components - continue; - color = CV_RGB(255,0,0); - magnitude = 30; - } - - // select component ROI - cvSetImageROI( silh, comp_rect ); - cvSetImageROI( mhi, comp_rect ); - cvSetImageROI( orient, comp_rect ); - cvSetImageROI( mask, comp_rect ); - - // calculate orientation - angle = cvCalcGlobalOrientation( orient, mask, mhi, timestamp, MHI_DURATION); - angle = 360.0 - angle; // adjust for images with top-left origin - - count = cvNorm( silh, 0, CV_L1, 0 ); // calculate number of points within silhouette ROI - - cvResetImageROI( mhi ); - cvResetImageROI( orient ); - cvResetImageROI( mask ); - cvResetImageROI( silh ); - - // check for the case of little motion - if( count < comp_rect.width*comp_rect.height * 0.05 ) - continue; - - // draw a clock with arrow indicating the direction - center = cvPoint( (comp_rect.x + comp_rect.width/2), - (comp_rect.y + comp_rect.height/2) ); - - cvCircle( dst, center, cvRound(magnitude*1.2), color, 3, CV_AA, 0 ); - cvLine( dst, center, cvPoint( cvRound( center.x + magnitude*cos(angle*CV_PI/180)), - cvRound( center.y - magnitude*sin(angle*CV_PI/180))), color, 3, CV_AA, 0 ); - } -} - - -int main(int argc, char** argv) -{ - IplImage* motion = 0; - CvCapture* capture = 0; - - help(); - - if( argc == 1 || (argc == 2 && strlen(argv[1]) == 1 && isdigit(argv[1][0]))) - capture = cvCaptureFromCAM( argc == 2 ? argv[1][0] - '0' : 0 ); - else if( argc == 2 ) - capture = cvCaptureFromFile( argv[1] ); - - if( capture ) - { - cvNamedWindow( "Motion", 1 ); - - for(;;) - { - IplImage* image = cvQueryFrame( capture ); - if( !image ) - break; - - if( !motion ) - { - motion = cvCreateImage( cvSize(image->width,image->height), 8, 3 ); - cvZero( motion ); - motion->origin = image->origin; - } - - update_mhi( image, motion, 30 ); - cvShowImage( "Motion", motion ); - - if( cvWaitKey(10) >= 0 ) - break; - } - cvReleaseCapture( &capture ); - cvDestroyWindow( "Motion" ); - } - - return 0; -} - -#ifdef _EiC -main(1,"motempl.c"); -#endif diff --git a/samples/cpp/segment_objects.cpp b/samples/cpp/segment_objects.cpp index 32c1f39768..814a3d79ff 100644 --- a/samples/cpp/segment_objects.cpp +++ b/samples/cpp/segment_objects.cpp @@ -88,8 +88,8 @@ int main(int argc, char** argv) namedWindow("video", 1); namedWindow("segmented", 1); - Ptr bgsubtractor=createBackgroundSubtractorMOG(); - bgsubtractor->setNoiseSigma(10); + Ptr bgsubtractor=createBackgroundSubtractorMOG2(); + bgsubtractor->setVarThreshold(10); for(;;) { diff --git a/samples/cpp/simpleflow_demo.cpp b/samples/cpp/simpleflow_demo.cpp deleted file mode 100644 index cc84249ec6..0000000000 --- a/samples/cpp/simpleflow_demo.cpp +++ /dev/null @@ -1,221 +0,0 @@ -#include -#include "opencv2/video/tracking.hpp" -#include "opencv2/imgproc.hpp" -#include "opencv2/imgcodecs.hpp" -#include "opencv2/highgui.hpp" - -#include -#include - -using namespace cv; -using namespace std; - -#define APP_NAME "simpleflow_demo : " - -static void help() -{ - // print a welcome message, and the OpenCV version - printf("This is a demo of SimpleFlow optical flow algorithm,\n" - "Using OpenCV version %s\n\n", CV_VERSION); - - printf("Usage: simpleflow_demo frame1 frame2 output_flow" - "\nApplication will write estimated flow " - "\nbetween 'frame1' and 'frame2' in binary format" - "\ninto file 'output_flow'" - "\nThen one can use code from http://vision.middlebury.edu/flow/data/" - "\nto convert flow in binary file to image\n"); -} - -// binary file format for flow data specified here: -// http://vision.middlebury.edu/flow/data/ -static void writeOpticalFlowToFile(const Mat& flow, FILE* file) { - int cols = flow.cols; - int rows = flow.rows; - - fprintf(file, "PIEH"); - - if (fwrite(&cols, sizeof(int), 1, file) != 1 || - fwrite(&rows, sizeof(int), 1, file) != 1) { - printf(APP_NAME "writeOpticalFlowToFile : problem writing header\n"); - exit(1); - } - - for (int i= 0; i < rows; ++i) { - for (int j = 0; j < cols; ++j) { - Vec2f flow_at_point = flow.at(i, j); - - if (fwrite(&(flow_at_point[0]), sizeof(float), 1, file) != 1 || - fwrite(&(flow_at_point[1]), sizeof(float), 1, file) != 1) { - printf(APP_NAME "writeOpticalFlowToFile : problem writing data\n"); - exit(1); - } - } - } -} - -static void run(int argc, char** argv) { - if (argc < 3) { - printf(APP_NAME "Wrong number of command line arguments for mode `run`: %d (expected %d)\n", - argc, 3); - exit(1); - } - - Mat frame1 = imread(argv[0]); - Mat frame2 = imread(argv[1]); - - if (frame1.empty()) { - printf(APP_NAME "Image #1 : %s cannot be read\n", argv[0]); - exit(1); - } - - if (frame2.empty()) { - printf(APP_NAME "Image #2 : %s cannot be read\n", argv[1]); - exit(1); - } - - if (frame1.rows != frame2.rows && frame1.cols != frame2.cols) { - printf(APP_NAME "Images should be of equal sizes\n"); - exit(1); - } - - if (frame1.type() != 16 || frame2.type() != 16) { - printf(APP_NAME "Images should be of equal type CV_8UC3\n"); - exit(1); - } - - printf(APP_NAME "Read two images of size [rows = %d, cols = %d]\n", - frame1.rows, frame1.cols); - - Mat flow; - - float start = (float)getTickCount(); - calcOpticalFlowSF(frame1, frame2, - flow, - 3, 2, 4, 4.1, 25.5, 18, 55.0, 25.5, 0.35, 18, 55.0, 25.5, 10); - printf(APP_NAME "calcOpticalFlowSF : %lf sec\n", (getTickCount() - start) / getTickFrequency()); - - FILE* file = fopen(argv[2], "wb"); - if (file == NULL) { - printf(APP_NAME "Unable to open file '%s' for writing\n", argv[2]); - exit(1); - } - printf(APP_NAME "Writing to file\n"); - writeOpticalFlowToFile(flow, file); - fclose(file); -} - -static bool readOpticalFlowFromFile(FILE* file, Mat& flow) { - char header[5]; - if (fread(header, 1, 4, file) < 4 && (string)header != "PIEH") { - return false; - } - - int cols, rows; - if (fread(&cols, sizeof(int), 1, file) != 1|| - fread(&rows, sizeof(int), 1, file) != 1) { - return false; - } - - flow = Mat::zeros(rows, cols, CV_32FC2); - - for (int i = 0; i < rows; ++i) { - for (int j = 0; j < cols; ++j) { - Vec2f flow_at_point; - if (fread(&(flow_at_point[0]), sizeof(float), 1, file) != 1 || - fread(&(flow_at_point[1]), sizeof(float), 1, file) != 1) { - return false; - } - flow.at(i, j) = flow_at_point; - } - } - - return true; -} - -static bool isFlowCorrect(float u) { - return !cvIsNaN(u) && (fabs(u) < 1e9); -} - -static float calc_rmse(Mat flow1, Mat flow2) { - float sum = 0; - int counter = 0; - const int rows = flow1.rows; - const int cols = flow1.cols; - - for (int y = 0; y < rows; ++y) { - for (int x = 0; x < cols; ++x) { - Vec2f flow1_at_point = flow1.at(y, x); - Vec2f flow2_at_point = flow2.at(y, x); - - float u1 = flow1_at_point[0]; - float v1 = flow1_at_point[1]; - float u2 = flow2_at_point[0]; - float v2 = flow2_at_point[1]; - - if (isFlowCorrect(u1) && isFlowCorrect(u2) && isFlowCorrect(v1) && isFlowCorrect(v2)) { - sum += (u1-u2)*(u1-u2) + (v1-v2)*(v1-v2); - counter++; - } - } - } - return (float)sqrt(sum / (1e-9 + counter)); -} - -static void eval(int argc, char** argv) { - if (argc < 2) { - printf(APP_NAME "Wrong number of command line arguments for mode `eval` : %d (expected %d)\n", - argc, 2); - exit(1); - } - - Mat flow1, flow2; - - FILE* flow_file_1 = fopen(argv[0], "rb"); - if (flow_file_1 == NULL) { - printf(APP_NAME "Cannot open file with first flow : %s\n", argv[0]); - exit(1); - } - if (!readOpticalFlowFromFile(flow_file_1, flow1)) { - printf(APP_NAME "Cannot read flow data from file %s\n", argv[0]); - exit(1); - } - fclose(flow_file_1); - - FILE* flow_file_2 = fopen(argv[1], "rb"); - if (flow_file_2 == NULL) { - printf(APP_NAME "Cannot open file with first flow : %s\n", argv[1]); - exit(1); - } - if (!readOpticalFlowFromFile(flow_file_2, flow2)) { - printf(APP_NAME "Cannot read flow data from file %s\n", argv[1]); - exit(1); - } - fclose(flow_file_2); - - float rmse = calc_rmse(flow1, flow2); - printf("%lf\n", rmse); -} - -int main(int argc, char** argv) { - if (argc < 2) { - printf(APP_NAME "Mode is not specified\n"); - help(); - exit(1); - } - string mode = (string)argv[1]; - int new_argc = argc - 2; - char** new_argv = &argv[2]; - - if ("run" == mode) { - run(new_argc, new_argv); - } else if ("eval" == mode) { - eval(new_argc, new_argv); - } else if ("help" == mode) - help(); - else { - printf(APP_NAME "Unknown mode : %s\n", argv[1]); - help(); - } - - return 0; -} diff --git a/samples/cpp/trained_classifierNM1.xml b/samples/cpp/trained_classifierNM1.xml deleted file mode 100644 index c395a67df7..0000000000 --- a/samples/cpp/trained_classifierNM1.xml +++ /dev/null @@ -1,4046 +0,0 @@ - - - - RealAdaboost - Gini - 100 - 1. - 1 - 5 - 4 - 4 - 0 - - 0 - 10 - 1 - 10 - 0 - - 1 - 2 -
d
- - 1. 1.
- - 1 - 4 -
i
- - 1 2 3 4
- - 0 0 0 0 - - 1 - 1 -
i
- - 2
- - 1 - 2 -
i
- - 1 2
- - <_> - -1 - - <_> - 0 - 1859 - -8.7333809708193622e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 8.9537560939788818e-01 - 8.5429996252059937e-02 - <_> - 1 - 281 - 6.7336438045685210e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1578 - -1.6797288877447023e+00 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 6.8833827526759232e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>2 - 6.0157060623168945e-01 - 1.5000000000000000e+00 - <_> - 1 - 1728 - -2.3830233314576746e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 131 - 1.3270520927417431e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 1.1546319456101495e-14 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 6.0729509592056274e-01 - 1.0963299870491028e-01 - <_> - 1 - 781 - 2.8488485626451149e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1078 - -1.0290340538001230e+00 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 8.8817841970011734e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.8338499069213867e-01 - 9.5209401845932007e-01 - <_> - 1 - 1331 - -4.6437394337436783e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 528 - 4.0542316486679569e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -1.5931700403371249e-14 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>3 - 5.5465269088745117e-01 - 3. - <_> - 1 - 856 - 5.0630658667623052e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1003 - -2.3844591468675169e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -4.0523140398818379e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>2 - 5.5272746086120605e-01 - 5.0000000000000000e-01 - <_> - 1 - 1046 - -3.5086409511139033e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 813 - 3.2363636038761090e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 3.5527136788004883e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.4958724975585938e-01 - 1.6267855167388916e+00 - <_> - 1 - 1811 - -1.0723654593445622e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 48 - 1.6463996332936000e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -1.5543122344752215e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.5254465341567993e-01 - 7.4758999049663544e-02 - <_> - 1 - 149 - 1.0273978441887677e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1710 - -1.3682146780021626e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 1.1990408665951547e-14 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.4537707567214966e-01 - 6.6345453262329102e-01 - <_> - 1 - 455 - -1.0072489119231773e+00 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1404 - 1.1925375544044788e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -7.1054273576010523e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>2 - 5.2146106958389282e-01 - 2.5000000000000000e+00 - <_> - 1 - 1791 - -4.7305821386203636e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 68 - 1.5160735804641536e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 3.7747582837255180e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>3 - 5.2081108093261719e-01 - 5. - <_> - 1 - 1690 - 9.1796156088740075e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 169 - -4.9059916762377265e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -7.1054273576010523e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.2672868967056274e-01 - 1.0963299870491028e-01 - <_> - 1 - 781 - 1.0385059515501381e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1078 - -5.7169325870124055e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -1.1102230246251577e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>3 - 5.2609002590179443e-01 - 3. - <_> - 1 - 856 - 3.2591023278276837e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1003 - -1.6727738809775036e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 3.5527136788004883e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.1409310102462769e-01 - 7.1857005357742310e-02 - <_> - 1 - 114 - 6.4622038086485267e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1745 - -4.9566471799398701e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -7.4940054162198634e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.1351374387741089e-01 - 1.4143149554729462e-01 - <_> - 1 - 1571 - -4.6424296372866977e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 288 - 6.6639156578772774e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 2.6645352591003686e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.2261954545974731e-01 - 1.0177600383758545e-01 - <_> - 1 - 590 - 1.3091283509473614e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1269 - -3.6264100845476954e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.2181720733642578e-01 - 8.9620999991893768e-02 - <_> - 1 - 352 - -2.4183425262980360e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1507 - 1.8605210755965146e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 1.1102230246251554e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0836616754531860e-01 - 1.0963299870491028e-01 - <_> - 1 - 781 - 5.1954271677409611e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1078 - -3.3426585985028628e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 3.7747582837255180e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0880891084671021e-01 - 1.1348484754562378e+00 - <_> - 1 - 1664 - -7.4858358240636261e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 195 - 2.4031047447238377e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -1.3322676295501896e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.1081919670104980e-01 - 1.2661495208740234e+00 - <_> - 1 - 1730 - 5.6719022662652843e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 129 - -4.0229379476194682e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 5.5511151231257519e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0904816389083862e-01 - 2.3689103126525879e+00 - <_> - 1 - 1838 - -1.9140961693183144e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 21 - 1.7878855228391193e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -9.2703622556201423e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0664407014846802e-01 - 2.2119045257568359e+00 - <_> - 1 - 1836 - 1.8191803445960011e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 23 - -9.2985231739132745e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -1.1102230246251577e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0936371088027954e-01 - 1.2460045814514160e+00 - <_> - 1 - 1724 - -5.7918483977216939e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 135 - 3.3577728337370422e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 2.4424906541753385e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0752711296081543e-01 - 9.5505046844482422e-01 - <_> - 1 - 1341 - 1.1992717133073164e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 518 - -1.2680428752841727e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -4.8849813083507124e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0749230384826660e-01 - 7.8355848789215088e-01 - <_> - 1 - 764 - -2.4384603502165489e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1095 - 6.2746713049518996e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 1.9984014443252778e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0703763961791992e-01 - 6.3535496592521667e-02 - <_> - 1 - 59 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1800 - -1.4076159604991374e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 4.4512436177016777e-05 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0712978839874268e-01 - 6.4906999468803406e-02 - <_> - 1 - 61 - -2.8822016897573164e+00 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1798 - 1.4394134992880541e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 4.4408920985006242e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.1009607315063477e-01 - 6.9339498877525330e-02 - <_> - 1 - 87 - 1.6547355644710868e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1772 - -2.1726950528099288e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -1.1102230246251577e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>3 - 5.0710922479629517e-01 - 7. - <_> - 1 - 1823 - 1.7568593940350565e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 36 - -1.1252698341588880e+00 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -1.7763568394002536e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0767201185226440e-01 - 8.0150999128818512e-02 - <_> - 1 - 206 - 2.7041738749866351e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1653 - -5.8184179168035623e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 3.3306690738754586e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0510478019714355e-01 - 6.2720644474029541e-01 - <_> - 1 - 374 - -4.5462988716181019e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1485 - 2.3987712659202257e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -4.2188474935756130e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>2 - 5.0439256429672241e-01 - 2.5000000000000000e+00 - <_> - 1 - 1791 - -1.5635519241144060e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 68 - 6.3562787613239691e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 6.6613381477508951e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>3 - 5.0438237190246582e-01 - 3. - <_> - 1 - 856 - 1.3081676957882793e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1003 - -6.7484142743913345e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 1.1102230246251554e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0724387168884277e-01 - 1.1533749848604202e-01 - <_> - 1 - 921 - 4.0250806766256482e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 938 - -3.7703668263161400e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -5.8286708792821058e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0915646553039551e-01 - 1.4143149554729462e-01 - <_> - 1 - 1571 - -3.3928131204983447e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 288 - 6.0410410576585261e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 4.2188474935755767e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0659310817718506e-01 - 1.4145749807357788e-01 - <_> - 1 - 1572 - 2.0368450770510211e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 287 - -7.7093695859120004e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -1.3877787807814476e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0616967678070068e-01 - 1.6267855167388916e+00 - <_> - 1 - 1811 - -2.4173163361906828e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 48 - 5.6348494257358028e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -3.8857805861880494e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0677150487899780e-01 - 1.2661495208740234e+00 - <_> - 1 - 1730 - 4.0402378477571901e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 129 - -3.4888339817180891e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 4.4408920985006242e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0588327646255493e-01 - 1.0797724723815918e+00 - <_> - 1 - 1608 - -6.8287991647037555e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 251 - 1.7431967242459881e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 4.6629367034256354e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0476020574569702e-01 - 9.2052650451660156e-01 - <_> - 1 - 1253 - 1.0513502662517235e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 606 - -9.1138849679050823e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 1.5543122344752168e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0690639019012451e-01 - 9.0829002857208252e-01 - <_> - 1 - 1219 - -1.4636537853223561e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 640 - 9.5332675553986543e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 4.2188474935755767e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0534439086914062e-01 - 9.2052650451660156e-01 - <_> - 1 - 1253 - 1.1293790129864213e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 606 - -9.5332675553986113e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -2.1649348980190600e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0435024499893188e-01 - 9.3664005398750305e-02 - <_> - 1 - 411 - 8.4555682036086433e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1448 - -1.0351006034230040e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0704753398895264e-01 - 9.9698998034000397e-02 - <_> - 1 - 544 - -8.5042709024257673e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1315 - 1.6769533771522532e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 1.5543122344752168e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0574851036071777e-01 - 1.0386450588703156e-01 - <_> - 1 - 639 - 5.3643508899729207e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1220 - -2.1791341988666471e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 0. - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0597953796386719e-01 - 1.4143149554729462e-01 - <_> - 1 - 1571 - -2.3199011211312900e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 288 - 5.7032019870719552e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 1.5543122344752168e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0620901584625244e-01 - 1.1533749848604202e-01 - <_> - 1 - 921 - 3.0260573388611104e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 938 - -4.3620446423872927e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -6.6613381477509432e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0698792934417725e-01 - 1.0789400339126587e-01 - <_> - 1 - 742 - -4.7900146843168623e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1117 - 3.0074316296999687e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -6.6613381477509432e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0459891557693481e-01 - 9.0829002857208252e-01 - <_> - 1 - 1219 - -1.1779072393798255e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 640 - 7.8608870331688729e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 1.3322676295501861e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0399231910705566e-01 - 3.3933651447296143e-01 - <_> - 1 - 59 - 1.3770357317310018e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1800 - -9.0707243801608061e-03 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -2.6090241078691246e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0383007526397705e-01 - 1.0386450588703156e-01 - <_> - 1 - 639 - 4.0916632352681503e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1220 - -1.8955755646648090e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -6.6613381477509432e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0380486249923706e-01 - 9.9698998034000397e-02 - <_> - 1 - 544 - -5.8888670701558621e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1315 - 1.3009980239826119e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 2.2204460492503083e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0560057163238525e-01 - 9.4531498849391937e-02 - <_> - 1 - 431 - 8.6647133637941770e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1428 - -1.3032934253469194e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -1.3877787807814476e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0492835044860840e-01 - 8.9620999991893768e-02 - <_> - 1 - 352 - -1.0506312397672390e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1507 - 9.4441739612300818e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -9.4368957093138405e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0368678569793701e-01 - 9.2722505331039429e-02 - <_> - 1 - 392 - 7.6022467408684444e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1467 - -9.7486085972466607e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 3.1086244689504288e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0421810150146484e-01 - 9.9444493651390076e-02 - <_> - 1 - 536 - -6.3752797298286562e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1323 - 1.3328967944519532e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 4.4408920985006242e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0323176383972168e-01 - 1.0177600383758545e-01 - <_> - 1 - 590 - 4.3831310206729070e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1269 - -1.4864401441489694e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -8.8817841970012602e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0349098443984985e-01 - 1.0789400339126587e-01 - <_> - 1 - 742 - -3.4075730824220232e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1117 - 2.0791874238488089e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -4.4408920985006281e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0392138957977295e-01 - 1.0963299870491028e-01 - <_> - 1 - 781 - 2.6986027157566792e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1078 - -2.9932407189155552e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -6.6613381477509432e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0362765789031982e-01 - 2.3689103126525879e+00 - <_> - 1 - 1838 - -9.2384036977927863e-03 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 21 - 1.0592165467278325e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -1.9984014443252857e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0543153285980225e-01 - 2.2119045257568359e+00 - <_> - 1 - 1836 - 1.5914551618823981e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 23 - -8.3405482949082688e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 3.5527136788004883e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0523018836975098e-01 - 1.6267855167388916e+00 - <_> - 1 - 1811 - -1.9824411253917307e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 48 - 5.8698394468331438e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -4.2188474935756130e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0369459390640259e-01 - 1.2661495208740234e+00 - <_> - 1 - 1730 - 2.8318382799977653e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 129 - -2.6718445379285333e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0479084253311157e-01 - 1.2460045814514160e+00 - <_> - 1 - 1724 - -3.7451522137317672e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 135 - 2.6178246916992864e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 6.6613381477509353e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0358188152313232e-01 - 1.2661495208740234e+00 - <_> - 1 - 1730 - 2.7995062956094632e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 129 - -2.6178246916992898e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>2 - 5.0313872098922729e-01 - 5.0000000000000000e-01 - <_> - 1 - 1046 - -8.7344555737785268e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 813 - 7.2176940461025546e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -1.9984014443252857e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0293076038360596e-01 - 1.2460045814514160e+00 - <_> - 1 - 1724 - -2.8268637265518849e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 135 - 2.1045949672703843e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 4.2188474935755767e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>3 - 5.0332474708557129e-01 - 3. - <_> - 1 - 856 - 1.2230679161917310e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1003 - -5.4692581535459049e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -1.9984014443252857e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0446850061416626e-01 - 1.1533749848604202e-01 - <_> - 1 - 921 - 2.3320665865473968e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 938 - -4.0391049572091403e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 1.5543122344752168e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0324887037277222e-01 - 8.0150999128818512e-02 - <_> - 1 - 206 - 1.6178738318585617e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1653 - -4.0534413064780048e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 1.5543122344752168e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0377529859542847e-01 - 1.4143149554729462e-01 - <_> - 1 - 1571 - -1.6597530926694307e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 288 - 4.9094014377722600e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -3.1086244689504478e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0313144922256470e-01 - 4.5337548851966858e-01 - <_> - 1 - 110 - -8.1199669103862704e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1749 - 9.3381880402274662e-03 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 3.7747582837255180e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0475740432739258e-01 - 4.5797997713088989e-01 - <_> - 1 - 113 - 6.8212891092482997e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1746 - -1.6049266927207175e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -6.6613381477509432e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0308030843734741e-01 - 6.4906999468803406e-02 - <_> - 1 - 61 - -1.8287112564925503e+00 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1798 - 6.4869817401182221e-03 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 6.6613381477509353e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0292497873306274e-01 - 1.4145749807357788e-01 - <_> - 1 - 1572 - 1.1075480383243890e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 287 - -5.8766713493584966e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -6.6613381477509432e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0272303819656372e-01 - 1.0132449865341187e-01 - <_> - 1 - 577 - -4.4462051722396978e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1282 - 1.2318755109692310e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 1.5543122344752168e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0431984663009644e-01 - 9.4531498849391937e-02 - <_> - 1 - 431 - 7.5132879390893734e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1428 - -1.1572265040778912e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -6.6613381477509432e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0449663400650024e-01 - 8.3246499300003052e-02 - <_> - 1 - 254 - -1.3886315377806810e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1605 - 6.5272198323505989e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0269138813018799e-01 - 8.0150999128818512e-02 - <_> - 1 - 206 - 1.4709439757444326e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1653 - -3.6874150180988774e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -6.6613381477509432e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>2 - 5.0234586000442505e-01 - 5.5000000000000000e+00 - <_> - 1 - 1819 - -6.0288987564491008e-03 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 40 - 1.0408276196291879e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>2 - 5.0341212749481201e-01 - 4.5000000000000000e+00 - <_> - 1 - 1810 - 1.0137680632639267e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 49 - -8.1653792840371642e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -1.2767564783189316e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0258362293243408e-01 - 9.2052650451660156e-01 - <_> - 1 - 1253 - 7.8639624293829910e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 606 - -6.5938476875607277e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 2.8865798640253987e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0378650426864624e-01 - 6.9388854503631592e-01 - <_> - 1 - 533 - -2.7381819728273915e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1326 - 2.8352394260546955e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -1.1102230246251577e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>2 - 5.0225412845611572e-01 - 2.5000000000000000e+00 - <_> - 1 - 1791 - -1.0029134530916375e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 68 - 4.8411186971158215e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -2.2204460492503178e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0205397605895996e-01 - 2.3689103126525879e+00 - <_> - 1 - 1838 - -6.5406523866491815e-03 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 21 - 7.3822507765214740e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 2.8865798640253987e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0392109155654907e-01 - 2.2119045257568359e+00 - <_> - 1 - 1836 - 1.2851614092359220e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 23 - -7.0930664915331199e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -1.7208456881689956e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0325584411621094e-01 - 1.6267855167388916e+00 - <_> - 1 - 1811 - -1.4416639629038558e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 48 - 4.8685109113945280e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 1.5543122344752168e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0334036350250244e-01 - 1.4522725343704224e+00 - <_> - 1 - 1776 - 2.1134121503482612e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 83 - -3.2737254080837347e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0246149301528931e-01 - 9.0829002857208252e-01 - <_> - 1 - 1219 - -8.5346673521825803e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 640 - 5.7886290686531831e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 4.4408920985006242e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0454872846603394e-01 - 7.8601944446563721e-01 - <_> - 1 - 774 - 1.8066758954429543e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1085 - -5.0945701357667621e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 3.1086244689504288e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0212800502777100e-01 - 1.5322914123535156e+00 - <_> - 1 - 1796 - -1.4167158667728857e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 63 - 3.0999551339753734e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -8.8817841970012602e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0266414880752563e-01 - 1.0847599804401398e-01 - <_> - 1 - 754 - 2.2656461251734570e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1105 - -2.3970407856964623e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 8.8817841970012444e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0370788574218750e-01 - 1.0789400339126587e-01 - <_> - 1 - 742 - -3.1940419009583935e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1117 - 2.3657134249111228e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0368273258209229e-01 - 1.0177600383758545e-01 - <_> - 1 - 590 - 4.4494384607886871e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1269 - -1.6718599716109608e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 0. - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0391924381256104e-01 - 1.0132449865341187e-01 - <_> - 1 - 577 - -5.2562531380568607e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1282 - 1.5038797351826086e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -2.1649348980190600e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0355648994445801e-01 - 9.2722505331039429e-02 - <_> - 1 - 392 - 7.2872834808621612e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1467 - -9.8094551697467572e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 6.6613381477509353e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0229591131210327e-01 - 1.4143149554729462e-01 - <_> - 1 - 1571 - -1.1560090798064190e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 288 - 4.2036013274394679e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0365710258483887e-01 - 1.0963299870491028e-01 - <_> - 1 - 781 - 2.1235893234003624e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1078 - -3.5916730278930570e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - -2.2204460492503178e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0305408239364624e-01 - 9.1055497527122498e-02 - <_> - 1 - 376 - -7.5233897759775223e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1483 - 8.1521687774440590e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 1859 - 2.4424906541753385e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0231134891510010e-01 - 8.8118501007556915e-02 - <_> - 1 - 322 - 7.4755757692778257e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1537 - -6.2031478956482825e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0.
-
diff --git a/samples/cpp/trained_classifierNM2.xml b/samples/cpp/trained_classifierNM2.xml deleted file mode 100644 index eae66f01ab..0000000000 --- a/samples/cpp/trained_classifierNM2.xml +++ /dev/null @@ -1,4046 +0,0 @@ - - - - RealAdaboost - Gini - 100 - 1. - 1 - 8 - 7 - 7 - 0 - - 0 - 10 - 1 - 10 - 0 - - 1 - 2 -
d
- - 1. 1.
- - 1 - 7 -
i
- - 1 2 3 4 5 6 7
- - 0 0 0 0 0 0 0 - - 1 - 1 -
i
- - 2
- - 1 - 2 -
i
- - 1 2
- - <_> - -1 - - <_> - 0 - 3215 - -2.0078929470944956e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>6 - 8.7790262699127197e-01 - 8.5000000000000000e+00 - <_> - 1 - 2105 - -1.1353035616351272e+00 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1110 - 2.0526971992043412e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.0428103653102464e-14 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>6 - 6.9283843040466309e-01 - 4.5000000000000000e+00 - <_> - 1 - 1558 - -1.1814132639953403e+00 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1657 - 5.0475867936025332e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -2.2259971643734884e-14 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>4 - 7.1280795335769653e-01 - 1.2044999748468399e-03 - <_> - 1 - 1475 - -7.9375129344950335e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1740 - 7.6558743305188104e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.4424906541753385e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 5.9598809480667114e-01 - 1.6245440244674683e+00 - <_> - 1 - 1385 - -5.4645841888834568e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1830 - 4.0662339031566280e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 6.2172489379008380e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>2 - 5.5169683694839478e-01 - 1.5000000000000000e+00 - <_> - 1 - 2960 - -1.2615933276314473e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 255 - 1.1688135468772842e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -8.4376949871512607e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>3 - 5.4812711477279663e-01 - 5. - <_> - 1 - 2891 - 1.3088588195700304e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 324 - -9.4959634248367153e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.8865798640253987e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.9334284067153931e-01 - 9.2769998311996460e-01 - <_> - 1 - 1964 - -4.5236837327316332e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1251 - 4.7279968034956410e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -1.3322676295501896e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 5.6080043315887451e-01 - 2.2512035369873047e+00 - <_> - 1 - 2464 - -2.1052010276554461e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 751 - 6.7174941695746326e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -7.3274719625260868e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.3896796703338623e-01 - 1.6267855167388916e+00 - <_> - 1 - 3041 - -8.1739798958620380e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 174 - 1.8924547997011532e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 3.3306690738754586e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>6 - 5.3723198175430298e-01 - 2.5000000000000000e+00 - <_> - 1 - 851 - -9.3661052654285037e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 2364 - 1.0184709367515142e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 1.2656542480726624e-14 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>3 - 5.4598015546798706e-01 - 3. - <_> - 1 - 1494 - 3.5820791601148183e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1721 - -2.7428866405164359e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -1.3322676295501896e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>4 - 5.5166077613830566e-01 - 2.9999999242136255e-05 - <_> - 1 - 1467 - -3.3467424181887540e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1748 - 3.3182965736372233e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 1.3322676295501861e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>6 - 5.4394942522048950e-01 - 6.5000000000000000e+00 - <_> - 1 - 1817 - -2.9822080188111177e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1398 - 3.1329368107827943e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.6645352591003686e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.3358083963394165e-01 - 1.3833449780941010e-01 - <_> - 1 - 2635 - 8.0265603900023089e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 580 - -1.2162305066944930e+00 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -6.4392935428259497e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>4 - 5.3098827600479126e-01 - 1.2702149152755737e-01 - <_> - 1 - 2676 - 1.3513810711631610e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 539 - -4.9909506904561546e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 3.7747582837255180e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>6 - 5.3376436233520508e-01 - 9.5000000000000000e+00 - <_> - 1 - 2193 - 1.3117433044170448e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1022 - -5.7326180584233111e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 1.7763568394002473e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>2 - 5.2698892354965210e-01 - 2.5000000000000000e+00 - <_> - 1 - 3127 - -5.4553392906591960e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 88 - 2.6688100460888684e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -3.0531133177191900e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>6 - 5.2742463350296021e-01 - 1.2500000000000000e+01 - <_> - 1 - 2620 - -5.4904310687255702e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 595 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 1.7368061883308035e-04 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 5.2537131309509277e-01 - 3.7997097969055176e+00 - <_> - 1 - 3184 - -5.4291952000757461e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 31 - 1.6789882514261603e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 1.9984014443252778e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.3548330068588257e-01 - 6.6345453262329102e-01 - <_> - 1 - 777 - -9.1576813577644156e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 2438 - 9.8351123166090529e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -6.6613381477509432e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>3 - 5.2158576250076294e-01 - 5. - <_> - 1 - 2891 - 8.1007865418959935e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 324 - -5.9585687406274601e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -6.6613381477509432e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.2358013391494751e-01 - 1.0659420490264893e+00 - <_> - 1 - 2457 - -1.3607641362335321e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 758 - 3.6397269406151606e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 3.7747582837255180e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 5.2605414390563965e-01 - 1.3934500217437744e+00 - <_> - 1 - 909 - -4.4217410871376006e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 2306 - 1.2609161734369648e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 1.5543122344752168e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>4 - 5.2353090047836304e-01 - 1.2044999748468399e-03 - <_> - 1 - 1475 - -2.0545012432588597e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1740 - 2.3659867388791755e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -1.8318679906315118e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.2399057149887085e-01 - 4.7306199073791504e+00 - <_> - 1 - 3204 - -4.8506775757358948e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 11 - 2.6435685747751951e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.2204460492503083e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>6 - 5.2452313899993896e-01 - 6.5000000000000000e+00 - <_> - 1 - 1817 - -2.0830922304142732e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1398 - 2.4354914812770342e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 3.7747582837255180e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.1760864257812500e-01 - 7.4752002954483032e-02 - <_> - 1 - 270 - 7.4056582493755241e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 2945 - -5.6004456612259952e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 1.5543122344752168e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>3 - 5.1595693826675415e-01 - 5. - <_> - 1 - 2891 - 6.8929447086892887e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 324 - -5.0204800200277599e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -8.8262730457700718e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>4 - 5.1432991027832031e-01 - 2.5954151153564453e-01 - <_> - 1 - 2981 - 3.1556263241584975e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 234 - -1.5189501708336401e+00 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>2 - 5.1588785648345947e-01 - 1.5000000000000000e+00 - <_> - 1 - 2960 - -6.0429432019906144e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 255 - 5.8525011139658878e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.4424906541753385e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 5.2001929283142090e-01 - 1.3934500217437744e+00 - <_> - 1 - 909 - -4.6709016373000739e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 2306 - 9.2123924914545782e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.6645352591003686e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>4 - 5.1656109094619751e-01 - 1.2044999748468399e-03 - <_> - 1 - 1475 - -1.6749125053548522e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1740 - 2.0231653132989663e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -3.7747582837255464e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>3 - 5.1900207996368408e-01 - 3. - <_> - 1 - 1494 - 2.5948749710951657e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1721 - -1.5086548637238759e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -1.3322676295501896e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.1032912731170654e-01 - 1.1417410373687744e+00 - <_> - 1 - 2628 - -6.3461321700044010e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 587 - 3.3830370061028520e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 1.1102230246251554e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 5.1085340976715088e-01 - 1.3021064996719360e+00 - <_> - 1 - 734 - -3.7065768373801600e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 2481 - 6.1297280870936215e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 4.4408920985006242e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>2 - 5.1171976327896118e-01 - 1.5000000000000000e+00 - <_> - 1 - 2960 - -5.1679907432686661e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 255 - 4.8967202182224279e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -3.3306690738754807e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>4 - 5.1276576519012451e-01 - 1.4958450198173523e-01 - <_> - 1 - 2755 - 7.7575074151822049e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 460 - -3.4258234102830631e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>4 - 5.0944852828979492e-01 - 2.5842750072479248e-01 - <_> - 1 - 2980 - -2.8188779664253410e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 235 - 8.1175021374635614e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -5.2735593669695212e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 5.1038962602615356e-01 - 1.4510664939880371e+00 - <_> - 1 - 1007 - -3.3150262977164136e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 2208 - 6.5052948330937457e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 1.3322676295501861e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>4 - 5.1113504171371460e-01 - 2.4550000671297312e-04 - <_> - 1 - 1471 - -1.2860595713867043e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1744 - 1.7591144586528801e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -8.8817841970012602e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>4 - 5.1135826110839844e-01 - 1.9797500967979431e-01 - <_> - 1 - 2857 - 4.5695890739118755e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 358 - -5.4593965595422900e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.8865798640253987e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 5.0861865282058716e-01 - 4.4535398483276367e+00 - <_> - 1 - 3204 - -1.7238960071156845e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 11 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 5.4514379135116734e-05 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 5.1613724231719971e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 5.4514379101591658e-05 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -4.2188474935756130e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 5.8550304174423218e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - -4.2188474935756130e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.1834394931793213e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 0. - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2149631977081299e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 0. - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2519973516464233e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.3510566949844360e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 0. - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.3096535205841064e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 0. - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.0966378450393677e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.3168644905090332e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 0. - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.3053596019744873e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 0. - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.1062115430831909e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2805336713790894e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 0. - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.3325423002243042e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 0. - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.0798364877700806e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2765526771545410e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 0. - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.3239699602127075e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 0. - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.0819625854492188e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2792611122131348e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 0. - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.3205927610397339e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 0. - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.0529828071594238e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2831163406372070e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 0. - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.3197416067123413e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 0. - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.0644149780273438e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2831127643585205e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 0. - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2990629673004150e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 0. - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.1229735612869263e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2957435846328735e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 0. - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2827998399734497e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 0. - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.1507642269134521e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 4.4408920985006242e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.3906562328338623e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 4.4408920985006242e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -4.4408920985006281e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2384939193725586e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - -4.4408920985006281e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.3710451126098633e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.3055968284606934e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2932032346725464e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2085735797882080e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2932032346725464e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2085735797882080e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2932032346725464e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2085735797882080e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2932032346725464e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2085735797882080e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2932032346725464e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2085735797882080e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2932032346725464e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2085735797882080e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2932032346725464e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2085735797882080e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2932032346725464e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2085735797882080e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2932032346725464e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2085735797882080e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2932032346725464e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2085735797882080e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2932032346725464e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2085735797882080e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2932032346725464e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2085735797882080e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 3215 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 6.2932032346725464e-01 - 1.3783290863037109e+01 - <_> - 1 - 3214 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0.
-
diff --git a/samples/cpp/trained_classifier_erGrouping.xml b/samples/cpp/trained_classifier_erGrouping.xml deleted file mode 100644 index 2c20941984..0000000000 --- a/samples/cpp/trained_classifier_erGrouping.xml +++ /dev/null @@ -1,20046 +0,0 @@ - - - - RealAdaboost - Gini - 500 - 1. - 1 - 14 - 13 - 13 - 0 - - 0 - 10 - 1 - 10 - 0 - - 1 - 2 -
d
- - 1. 1.
- - 1 - 13 -
i
- - 1 2 3 4 5 6 7 8 9 10 11 12 13
- - 0 0 0 0 0 0 0 0 0 0 0 0 0 - - 1 - 1 -
i
- - 2
- - 1 - 2 -
i
- - 1 2
- - <_> - -1 - - <_> - 0 - 4743 - 4.9283312788368594e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 7.8683781623840332e-01 - 6.9047653675079346e-01 - <_> - 1 - 2922 - 1.6857763325385804e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1821 - -3.1962829546244120e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 2.2204460492502639e-14 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>3 - 6.7457795143127441e-01 - 1.6023799896240234e+01 - <_> - 1 - 2515 - 1.3206782471212661e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 2228 - -4.2691437618953676e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 4.4408920985004293e-14 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>8 - 5.7657080888748169e-01 - 1.6375650465488434e-01 - <_> - 1 - 1474 - 1.0082101731479634e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 3269 - -2.0291975151863534e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.2735593669695212e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.7874917984008789e-01 - 3.5000000000000000e+00 - <_> - 1 - 1572 - 6.6258072337754870e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 3171 - -2.7849567684989057e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -2.8033131371785988e-14 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>4 - 5.7350283861160278e-01 - 2.0137399435043335e-01 - <_> - 1 - 2403 - -2.6904319035307267e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 2340 - 6.3213741437159332e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 1.5987211554601999e-14 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 5.3986549377441406e-01 - 1.8935400247573853e-01 - <_> - 1 - 3239 - -2.1807445008848766e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1504 - 3.9003601258549259e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -1.6209256159527547e-14 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>7 - 5.4257267713546753e-01 - 1.9909399747848511e+00 - <_> - 1 - 3510 - -1.4642486399320545e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1233 - 6.7101157562183900e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 1.2434497875801599e-14 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>3 - 5.2853012084960938e-01 - 9.9499998092651367e+00 - <_> - 1 - 1885 - 2.2777850958001311e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 2858 - -5.8338305506186260e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 3.7747582837255180e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 5.3673779964447021e-01 - 9.7619050741195679e-01 - <_> - 1 - 3151 - -3.5930648005686938e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1592 - 2.1654027823349378e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -2.7200464103316410e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>7 - 5.3578829765319824e-01 - 9.2159950733184814e-01 - <_> - 1 - 1218 - 6.4123671413103334e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 3525 - -1.2719991722274782e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -1.1601830607333020e-14 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>8 - 5.1844090223312378e-01 - 1.1316300183534622e-01 - <_> - 1 - 523 - 1.1096767031411257e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 4220 - -4.5908136732827669e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 1.1102230246251554e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 5.1862132549285889e-01 - 1.1357150226831436e-01 - <_> - 1 - 1797 - -2.6090015710605080e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 2946 - 1.4702132673542537e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 1.5543122344752168e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>6 - 5.1400643587112427e-01 - 2.9116147756576538e-01 - <_> - 1 - 3975 - -8.8992417491750783e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 768 - 3.2676272240123133e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -2.1649348980190600e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>3 - 5.1310420036315918e-01 - 1.6420200347900391e+01 - <_> - 1 - 2556 - -3.7663847348796514e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 2187 - 7.2973860683903505e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.7176485768195885e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>3 - 5.1715815067291260e-01 - 4.1513149261474609e+01 - <_> - 1 - 4201 - 1.0650192844355898e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 542 - -3.3547294967904301e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 2.8865798640253987e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>10 - 5.1442718505859375e-01 - 3.3584448695182800e-01 - <_> - 1 - 3773 - -5.3875269838492043e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 970 - 5.9866021590419249e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>11 - 5.2047514915466309e-01 - 7.2563352584838867e+00 - <_> - 1 - 2907 - 1.9519205768354500e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1836 - -2.1573812016026100e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0942456722259521e-01 - 7.5000000000000000e+00 - <_> - 1 - 3372 - 8.7119641811032406e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1371 - -2.2040766706823176e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -1.7763568394002536e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>11 - 5.0977617502212524e-01 - 2.2220800399780273e+01 - <_> - 1 - 4448 - -3.3399807812663676e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 295 - 6.7097467134531630e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -2.4424906541753503e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>11 - 5.0756561756134033e-01 - 1.6015799045562744e+00 - <_> - 1 - 887 - 4.6319919460984282e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 3856 - -3.4984615268834660e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 2.4424906541753385e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>12 - 5.0974738597869873e-01 - 3.3431649208068848e+00 - <_> - 1 - 1502 - -3.1609833725570069e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 3241 - 6.3800083493002244e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -1.8318679906315118e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0696289539337158e-01 - 1.8561398983001709e-01 - <_> - 1 - 3255 - -8.2400708302973011e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1488 - 1.7103105096148030e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 4.4408920985006242e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>2 - 5.0570565462112427e-01 - 6.0240797698497772e-02 - <_> - 1 - 267 - -3.9841144233646475e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 4476 - 3.0150891834205489e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>4 - 5.0760245323181152e-01 - 1.1740300059318542e-01 - <_> - 1 - 1277 - 1.3462101791484546e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 3466 - -1.1412058806711589e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 1.7763568394002473e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>10 - 5.0815576314926147e-01 - 1.9874200224876404e-01 - <_> - 1 - 2673 - -7.2884347987806367e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 2070 - 2.2806968894448212e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -4.9960036108132074e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>8 - 5.0588154792785645e-01 - 7.1773901581764221e-02 - <_> - 1 - 244 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 4499 - -1.1763652665445799e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 3.7199596169089356e-05 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>7 - 5.0559371709823608e-01 - 1.3080499172210693e+00 - <_> - 1 - 2610 - -8.5164847124080928e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 2133 - 1.3242723306938603e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -4.9960036108132074e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 5.0688451528549194e-01 - 2.4852949380874634e-01 - <_> - 1 - 1450 - 4.0668167968213126e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 3293 - -3.5718409743961593e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 1.3322676295501861e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>11 - 5.0737321376800537e-01 - 1.1785449981689453e+01 - <_> - 1 - 3672 - 7.2598161777983533e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1071 - -2.0636167187902807e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>8 - 5.0646328926086426e-01 - 2.2429150342941284e-01 - <_> - 1 - 3128 - 1.3477041265837905e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1615 - -9.6796664734187812e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 1.1102230246251554e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>8 - 5.0777083635330200e-01 - 1.6607899963855743e-01 - <_> - 1 - 1528 - -3.2886395737427671e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 3215 - 4.8989548978453992e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 6.6613381477509353e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>3 - 5.0604039430618286e-01 - 9.8333351135253906e+01 - <_> - 1 - 4695 - -2.4308937783907102e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 48 - 5.4540492970830234e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 4.4408920985006242e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>1 - 5.0586992502212524e-01 - 1.6361099243164062e+01 - <_> - 1 - 4696 - 1.4943835842937642e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 47 - -1.0599905445675459e+00 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -1.7763568394002536e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>6 - 5.0557285547256470e-01 - 7.3313897848129272e-01 - <_> - 1 - 4703 - -1.1469727167492691e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 40 - 2.1235867315894508e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 0. - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>3 - 5.0533461570739746e-01 - 5.4708351135253906e+01 - <_> - 1 - 4473 - 3.6836595227669341e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 270 - -2.9831157365178368e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 2.6645352591003686e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>8 - 5.0580126047134399e-01 - 1.2382800132036209e-01 - <_> - 1 - 640 - 5.9834734339166507e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 4103 - -2.1654984803013626e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -2.6645352591003828e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 5.0429016351699829e-01 - 4.5694351196289062e-01 - <_> - 1 - 4600 - -1.5430618202863466e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 143 - 6.2717046492171924e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 4.4408920985006242e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 5.0425076484680176e-01 - 4.3997800350189209e-01 - <_> - 1 - 4580 - 1.9510845723203964e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 163 - -4.6702205902201765e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 4.4408920985006242e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>10 - 5.0413805246353149e-01 - 8.3523400127887726e-02 - <_> - 1 - 797 - -1.6144155238545738e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 3946 - 5.1754594157342182e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -2.1649348980190600e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>6 - 5.0415825843811035e-01 - 4.0623052045702934e-03 - <_> - 1 - 2135 - 2.0856384841406828e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 2608 - -4.0473660274366073e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -2.2204460492503136e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>5 - 5.0849056243896484e-01 - 7.4166649580001831e-01 - <_> - 1 - 2941 - -2.0653680349449580e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1802 - 8.3578014587627689e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -3.8857805861880494e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>4 - 5.0404089689254761e-01 - 5.8662700653076172e-01 - <_> - 1 - 4609 - -8.9593500573811428e-03 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 134 - 1.4832704778307670e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>4 - 5.0676226615905762e-01 - 5.8546447753906250e-01 - <_> - 1 - 4608 - 1.6995436338582786e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 135 - -1.0871895961535247e+00 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>4 - 5.0577533245086670e-01 - 2.7839550375938416e-01 - <_> - 1 - 3212 - -4.8487688681994802e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1531 - 2.4308299449728027e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -1.7208456881689956e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>6 - 5.0401997566223145e-01 - 4.0623052045702934e-03 - <_> - 1 - 2135 - 2.1566600675967990e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 2608 - -3.7873936270897468e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 2.8865798640253987e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>6 - 5.0536459684371948e-01 - 7.5883805751800537e-02 - <_> - 1 - 2691 - -1.4112986946799597e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 2052 - 7.6677932119837408e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -1.3322676295501896e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0511509180068970e-01 - 4.5000000000000000e+00 - <_> - 1 - 2292 - 1.0882591107882306e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 2451 - -9.4657726405678030e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -3.8857805861880494e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>3 - 5.0377565622329712e-01 - 9.0912704467773438e+00 - <_> - 1 - 1767 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 2976 - -7.5514316138306052e-03 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 2.3879499609967105e-05 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>3 - 5.0355505943298340e-01 - 1.6336849212646484e+01 - <_> - 1 - 2550 - -2.0670790935386987e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 2193 - 3.4919206265122779e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -6.6613381477509442e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>3 - 5.0379395484924316e-01 - 1.4472200393676758e+01 - <_> - 1 - 2333 - 3.0039120989420354e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 2410 - -2.6021086936442995e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 1.1102230246251554e-15 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>10 - 5.0338852405548096e-01 - 5.7804203033447266e-01 - <_> - 1 - 4457 - -6.7771837574461162e-03 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 286 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 2.1431148710016298e-05 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>2 - 5.0325667858123779e-01 - 1.7895050346851349e-01 - <_> - 1 - 1565 - 1.1778538599189300e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 3178 - -5.5600340097294032e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -9.4368957093138405e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>7 - 5.0369518995285034e-01 - 1.0299949645996094e+00 - <_> - 1 - 1643 - 1.3367635721082954e-01 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 3100 - -5.5671793933628928e-02 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -8.3266726846886810e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>7 - 5.0341546535491943e-01 - 5.9431500434875488e+00 - <_> - 1 - 4548 - -6.8310078799520627e-03 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 195 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 2.1601352997458628e-05 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>0 - 5.0342482328414917e-01 - 3.5000000000000000e+00 - <_> - 1 - 1572 - -1.3410183780875257e-01 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 3171 - 5.1442257630002285e-02 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -6.6613381477509442e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>2 - 5.0330686569213867e-01 - 7.3027700185775757e-01 - <_> - 1 - 4698 - -6.6138286994767139e-03 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 45 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 2.0914582372540535e-05 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 6.6739338636398315e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - 2.0914582365435406e-05 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 4.4408920985006242e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>2 - 5.0336450338363647e-01 - 7.2723901271820068e-01 - <_> - 1 - 4697 - 6.7710148391918927e-03 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 46 - -2.8881401865717855e+00 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -8.8817841970012602e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 1.0860064029693604e+00 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -1.1102230246251577e-15 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -3.8857805861880494e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 6.2635791301727295e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -3.8857805861880494e-16 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 7.4932706356048584e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - 2.2204460492503126e-16 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - 5.7564577324623896e+00 - 1 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - -1 - - <_> - 0 - 4743 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - - <_>9 - 8.0227351188659668e-01 - 1.1104044914245605e+00 - <_> - 1 - 4742 - -5.5511151231257827e-17 - 0 - 0 - 0 - 0. - 0. - 0. - 0. - <_> - 1 - 1 - .Nan - 0 - 0 - 0 - 0. - 0. - 0. - 0.
-
diff --git a/samples/cpp/tutorial_code/video/bg_sub.cpp b/samples/cpp/tutorial_code/video/bg_sub.cpp index ace8220587..1337029720 100644 --- a/samples/cpp/tutorial_code/video/bg_sub.cpp +++ b/samples/cpp/tutorial_code/video/bg_sub.cpp @@ -20,9 +20,7 @@ using namespace std; // Global variables Mat frame; //current frame -Mat fgMaskMOG; //fg mask generated by MOG method Mat fgMaskMOG2; //fg mask fg mask generated by MOG2 method -Ptr pMOG; //MOG Background subtractor Ptr pMOG2; //MOG2 Background subtractor int keyboard; //input from keyboard @@ -63,11 +61,9 @@ int main(int argc, char* argv[]) //create GUI windows namedWindow("Frame"); - namedWindow("FG Mask MOG"); namedWindow("FG Mask MOG 2"); //create Background Subtractor objects - pMOG = createBackgroundSubtractorMOG(); //MOG approach pMOG2 = createBackgroundSubtractorMOG2(); //MOG2 approach if(strcmp(argv[1], "-vid") == 0) { @@ -109,7 +105,6 @@ void processVideo(char* videoFilename) { exit(EXIT_FAILURE); } //update the background model - pMOG->apply(frame, fgMaskMOG); pMOG2->apply(frame, fgMaskMOG2); //get the frame number and write it on the current frame stringstream ss; @@ -121,7 +116,6 @@ void processVideo(char* videoFilename) { FONT_HERSHEY_SIMPLEX, 0.5 , cv::Scalar(0,0,0)); //show the current frame and the fg masks imshow("Frame", frame); - imshow("FG Mask MOG", fgMaskMOG); imshow("FG Mask MOG 2", fgMaskMOG2); //get the input from the keyboard keyboard = waitKey( 30 ); @@ -146,7 +140,6 @@ void processImages(char* fistFrameFilename) { //read input data. ESC or 'q' for quitting while( (char)keyboard != 'q' && (char)keyboard != 27 ){ //update the background model - pMOG->apply(frame, fgMaskMOG); pMOG2->apply(frame, fgMaskMOG2); //get the frame number and write it on the current frame size_t index = fn.find_last_of("/"); @@ -166,7 +159,6 @@ void processImages(char* fistFrameFilename) { FONT_HERSHEY_SIMPLEX, 0.5 , cv::Scalar(0,0,0)); //show the current frame and the fg masks imshow("Frame", frame); - imshow("FG Mask MOG", fgMaskMOG); imshow("FG Mask MOG 2", fgMaskMOG2); //get the input from the keyboard keyboard = waitKey( 30 ); diff --git a/samples/python2/motempl.py b/samples/python2/motempl.py deleted file mode 100755 index ce9b666ed5..0000000000 --- a/samples/python2/motempl.py +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/env python - -import numpy as np -import cv2 -import video -from common import nothing, clock, draw_str - -MHI_DURATION = 0.5 -DEFAULT_THRESHOLD = 32 -MAX_TIME_DELTA = 0.25 -MIN_TIME_DELTA = 0.05 - -def draw_motion_comp(vis, (x, y, w, h), angle, color): - cv2.rectangle(vis, (x, y), (x+w, y+h), (0, 255, 0)) - r = min(w/2, h/2) - cx, cy = x+w/2, y+h/2 - angle = angle*np.pi/180 - cv2.circle(vis, (cx, cy), r, color, 3) - cv2.line(vis, (cx, cy), (int(cx+np.cos(angle)*r), int(cy+np.sin(angle)*r)), color, 3) - -if __name__ == '__main__': - import sys - try: - video_src = sys.argv[1] - except: - video_src = 0 - - cv2.namedWindow('motempl') - visuals = ['input', 'frame_diff', 'motion_hist', 'grad_orient'] - cv2.createTrackbar('visual', 'motempl', 2, len(visuals)-1, nothing) - cv2.createTrackbar('threshold', 'motempl', DEFAULT_THRESHOLD, 255, nothing) - - cam = video.create_capture(video_src, fallback='synth:class=chess:bg=../cpp/lena.jpg:noise=0.01') - ret, frame = cam.read() - h, w = frame.shape[:2] - prev_frame = frame.copy() - motion_history = np.zeros((h, w), np.float32) - hsv = np.zeros((h, w, 3), np.uint8) - hsv[:,:,1] = 255 - while True: - ret, frame = cam.read() - frame_diff = cv2.absdiff(frame, prev_frame) - gray_diff = cv2.cvtColor(frame_diff, cv2.COLOR_BGR2GRAY) - thrs = cv2.getTrackbarPos('threshold', 'motempl') - ret, motion_mask = cv2.threshold(gray_diff, thrs, 1, cv2.THRESH_BINARY) - timestamp = clock() - cv2.updateMotionHistory(motion_mask, motion_history, timestamp, MHI_DURATION) - mg_mask, mg_orient = cv2.calcMotionGradient( motion_history, MAX_TIME_DELTA, MIN_TIME_DELTA, apertureSize=5 ) - seg_mask, seg_bounds = cv2.segmentMotion(motion_history, timestamp, MAX_TIME_DELTA) - - visual_name = visuals[cv2.getTrackbarPos('visual', 'motempl')] - if visual_name == 'input': - vis = frame.copy() - elif visual_name == 'frame_diff': - vis = frame_diff.copy() - elif visual_name == 'motion_hist': - vis = np.uint8(np.clip((motion_history-(timestamp-MHI_DURATION)) / MHI_DURATION, 0, 1)*255) - vis = cv2.cvtColor(vis, cv2.COLOR_GRAY2BGR) - elif visual_name == 'grad_orient': - hsv[:,:,0] = mg_orient/2 - hsv[:,:,2] = mg_mask*255 - vis = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR) - - for i, rect in enumerate([(0, 0, w, h)] + list(seg_bounds)): - x, y, rw, rh = rect - area = rw*rh - if area < 64**2: - continue - silh_roi = motion_mask [y:y+rh,x:x+rw] - orient_roi = mg_orient [y:y+rh,x:x+rw] - mask_roi = mg_mask [y:y+rh,x:x+rw] - mhi_roi = motion_history[y:y+rh,x:x+rw] - if cv2.norm(silh_roi, cv2.NORM_L1) < area*0.05: - continue - angle = cv2.calcGlobalOrientation(orient_roi, mask_roi, mhi_roi, timestamp, MHI_DURATION) - color = ((255, 0, 0), (0, 0, 255))[i == 0] - draw_motion_comp(vis, rect, angle, color) - - draw_str(vis, (20, 20), visual_name) - cv2.imshow('motempl', vis) - - prev_frame = frame.copy() - if 0xFF & cv2.waitKey(5) == 27: - break - cv2.destroyAllWindows() diff --git a/samples/tapi/bgfg_segm.cpp b/samples/tapi/bgfg_segm.cpp index b9facd6324..17a511cddc 100644 --- a/samples/tapi/bgfg_segm.cpp +++ b/samples/tapi/bgfg_segm.cpp @@ -11,15 +11,15 @@ using namespace std; using namespace cv; -#define M_MOG 1 #define M_MOG2 2 +#define M_KNN 3 int main(int argc, const char** argv) { CommandLineParser cmd(argc, argv, "{ c camera | false | use camera }" "{ f file | 768x576.avi | input video file }" - "{ t type | mog | method's type (mog, mog2) }" + "{ t type | mog2 | method's type (knn, mog2) }" "{ h help | false | print help message }" "{ m cpu_mode | false | press 'm' to switch OpenCL<->CPU}"); @@ -41,7 +41,7 @@ int main(int argc, const char** argv) return EXIT_FAILURE; } - int m = method == "mog" ? M_MOG : M_MOG2; + int m = method == "mog2" ? M_MOG2 : M_KNN; VideoCapture cap; if (useCamera) @@ -59,13 +59,13 @@ int main(int argc, const char** argv) cap >> frame; fgimg.create(frame.size(), frame.type()); - Ptr mog = createBackgroundSubtractorMOG(); + Ptr knn = createBackgroundSubtractorKNN(); Ptr mog2 = createBackgroundSubtractorMOG2(); switch (m) { - case M_MOG: - mog->apply(frame, fgmask, 0.01f); + case M_KNN: + knn->apply(frame, fgmask); break; case M_MOG2: @@ -86,8 +86,8 @@ int main(int argc, const char** argv) //update the model switch (m) { - case M_MOG: - mog->apply(frame, fgmask, 0.01f); + case M_KNN: + knn->apply(frame, fgmask); break; case M_MOG2: From 2b94bcffb9e47c8fb09bb193c7ac4688c5738aa2 Mon Sep 17 00:00:00 2001 From: Nick D'Ademo Date: Mon, 11 Aug 2014 13:30:36 +0200 Subject: [PATCH 136/189] Added get and set for additional PVAPI properties: DecimationHorizontal, DecimationVertical, BinningX, BinningY --- modules/videoio/include/opencv2/videoio.hpp | 15 ++++++- .../include/opencv2/videoio/videoio_c.h | 4 ++ modules/videoio/src/cap_pvapi.cpp | 45 ++++++++++++++++++- 3 files changed, 61 insertions(+), 3 deletions(-) diff --git a/modules/videoio/include/opencv2/videoio.hpp b/modules/videoio/include/opencv2/videoio.hpp index 763c5bd435..a601b8eb7e 100644 --- a/modules/videoio/include/opencv2/videoio.hpp +++ b/modules/videoio/include/opencv2/videoio.hpp @@ -191,8 +191,12 @@ enum { CAP_PROP_GSTREAMER_QUEUE_LENGTH = 200 // default is 1 // PVAPI -enum { CAP_PROP_PVAPI_MULTICASTIP = 300, // ip for anable multicast master mode. 0 for disable multicast - CAP_PROP_PVAPI_FRAMESTARTTRIGGERMODE = 301 // FrameStartTriggerMode: Determines how a frame is initiated +enum { CAP_PROP_PVAPI_MULTICASTIP = 300, // ip for anable multicast master mode. 0 for disable multicast + CAP_PROP_PVAPI_FRAMESTARTTRIGGERMODE = 301, // FrameStartTriggerMode: Determines how a frame is initiated + CAP_PROP_PVAPI_DECIMATIONHORIZONTAL = 302, // Horizontal sub-sampling of the image + CAP_PROP_PVAPI_DECIMATIONVERTICAL = 303, // Vertical sub-sampling of the image + CAP_PROP_PVAPI_BINNINGX = 304, // Horizontal binning factor + CAP_PROP_PVAPI_BINNINGY = 305 // Vertical binning factor }; // PVAPI: FrameStartTriggerMode @@ -203,6 +207,13 @@ enum { CAP_PVAPI_FSTRIGMODE_FREERUN = 0, // Freerun CAP_PVAPI_FSTRIGMODE_SOFTWARE = 4 // Software }; +// PVAPI: DecimationHorizontal, DecimationVertical +enum { CAP_PVAPI_DECIMATION_OFF = 1, // Off + CAP_PVAPI_DECIMATION_2OUTOF4 = 2, // 2 out of 4 decimation + CAP_PVAPI_DECIMATION_2OUTOF8 = 3, // 2 out of 8 decimation + CAP_PVAPI_DECIMATION_2OUTOF16 = 5 // 2 out of 16 decimation + }; + // Properties of cameras available through XIMEA SDK interface enum { CAP_PROP_XI_DOWNSAMPLING = 400, // Change image resolution by binning or skipping. CAP_PROP_XI_DATA_FORMAT = 401, // Output data format. diff --git a/modules/videoio/include/opencv2/videoio/videoio_c.h b/modules/videoio/include/opencv2/videoio/videoio_c.h index 0b08d03d9b..13805c0a4c 100644 --- a/modules/videoio/include/opencv2/videoio/videoio_c.h +++ b/modules/videoio/include/opencv2/videoio/videoio_c.h @@ -218,6 +218,10 @@ enum // PVAPI CV_CAP_PROP_PVAPI_MULTICASTIP = 300, // ip for anable multicast master mode. 0 for disable multicast CV_CAP_PROP_PVAPI_FRAMESTARTTRIGGERMODE = 301, // FrameStartTriggerMode: Determines how a frame is initiated + CV_CAP_PROP_PVAPI_DECIMATIONHORIZONTAL = 302, // Horizontal sub-sampling of the image + CV_CAP_PROP_PVAPI_DECIMATIONVERTICAL = 303, // Vertical sub-sampling of the image + CV_CAP_PROP_PVAPI_BINNINGX = 304, // Horizontal binning factor + CV_CAP_PROP_PVAPI_BINNINGY = 305, // Vertical binning factor // Properties of cameras available through XIMEA SDK interface CV_CAP_PROP_XI_DOWNSAMPLING = 400, // Change image resolution by binning or skipping. diff --git a/modules/videoio/src/cap_pvapi.cpp b/modules/videoio/src/cap_pvapi.cpp index 4b27ab1602..66b9f9f745 100644 --- a/modules/videoio/src/cap_pvapi.cpp +++ b/modules/videoio/src/cap_pvapi.cpp @@ -300,12 +300,26 @@ double CvCaptureCAM_PvAPI::getProperty( int property_id ) return 4.0; else return -1.0; + case CV_CAP_PROP_PVAPI_DECIMATIONHORIZONTAL: + PvAttrUint32Get(Camera.Handle, "DecimationHorizontal", &nTemp); + return (double)nTemp; + case CV_CAP_PROP_PVAPI_DECIMATIONVERTICAL: + PvAttrUint32Get(Camera.Handle, "DecimationVertical", &nTemp); + return (double)nTemp; + case CV_CAP_PROP_PVAPI_BINNINGX: + PvAttrUint32Get(Camera.Handle,"BinningX",&nTemp); + return (double)nTemp; + case CV_CAP_PROP_PVAPI_BINNINGY: + PvAttrUint32Get(Camera.Handle,"BinningY",&nTemp); + return (double)nTemp; } return -1.0; } bool CvCaptureCAM_PvAPI::setProperty( int property_id, double value ) { + tPvErr error; + switch ( property_id ) { case CV_CAP_PROP_FRAME_WIDTH: @@ -389,7 +403,6 @@ bool CvCaptureCAM_PvAPI::setProperty( int property_id, double value ) } break; case CV_CAP_PROP_PVAPI_FRAMESTARTTRIGGERMODE: - tPvErr error; if (value==0) error = PvAttrEnumSet(Camera.Handle, "FrameStartTriggerMode", "Freerun"); else if (value==1) @@ -406,6 +419,36 @@ bool CvCaptureCAM_PvAPI::setProperty( int property_id, double value ) break; else return false; + case CV_CAP_PROP_PVAPI_DECIMATIONHORIZONTAL: + if (value >= 1 && value <= 8) + error = PvAttrUint32Set(Camera.Handle, "DecimationHorizontal", value); + else + error = ePvErrOutOfRange; + if(error==ePvErrSuccess) + break; + else + return false; + case CV_CAP_PROP_PVAPI_DECIMATIONVERTICAL: + if (value >= 1 && value <= 8) + error = PvAttrUint32Set(Camera.Handle, "DecimationVertical", value); + else + error = ePvErrOutOfRange; + if(error==ePvErrSuccess) + break; + else + return false; + case CV_CAP_PROP_PVAPI_BINNINGX: + error = PvAttrUint32Set(Camera.Handle, "BinningX", value); + if(error==ePvErrSuccess) + break; + else + return false; + case CV_CAP_PROP_PVAPI_BINNINGY: + error = PvAttrUint32Set(Camera.Handle, "BinningY", value); + if(error==ePvErrSuccess) + break; + else + return false; default: return false; } From 6b0e63b652db2a60b6858df86cd8cc898a01c214 Mon Sep 17 00:00:00 2001 From: Alexander Karsakov Date: Mon, 11 Aug 2014 15:37:05 +0400 Subject: [PATCH 137/189] Enabled IPPMorphReplicate in case BORDER_CONSTANT only for 3x3 kernels. --- modules/imgproc/src/morph.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/imgproc/src/morph.cpp b/modules/imgproc/src/morph.cpp index 8985a7f06b..ceccff43a6 100644 --- a/modules/imgproc/src/morph.cpp +++ b/modules/imgproc/src/morph.cpp @@ -1268,10 +1268,11 @@ static bool IPPMorphOp(int op, InputArray _src, OutputArray _dst, int type = src.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type); if( !( depth == CV_8U || depth == CV_32F ) || !(cn == 1 || cn == 3 || cn == 4) || - !( borderType == cv::BORDER_REPLICATE || (borderType == cv::BORDER_CONSTANT && borderValue == morphologyDefaultBorderValue()) ) - || !( op == MORPH_DILATE || op == MORPH_ERODE) || _src.isSubmatrix() ) + !( borderType == cv::BORDER_REPLICATE || (borderType == cv::BORDER_CONSTANT && borderValue == morphologyDefaultBorderValue() && + kernel.size() == Size(3,3)) ) || !( op == MORPH_DILATE || op == MORPH_ERODE) || _src.isSubmatrix() ) return false; + // In case BORDER_CONSTANT, IPPMorphReplicate works correct with kernels of size 3*3 only if( borderType == cv::BORDER_CONSTANT && kernel.data ) { int x, y; From 835b5e217964f94a1075e11acfc26220a4e63525 Mon Sep 17 00:00:00 2001 From: Alexander Karsakov Date: Mon, 11 Aug 2014 15:40:44 +0400 Subject: [PATCH 138/189] Disabled ippiConvert_32f16s_C1R since it breaks OCL accuracy tests of remap with test_loop_times=30. --- modules/core/src/convert.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/core/src/convert.cpp b/modules/core/src/convert.cpp index fc29b2e1f9..5b0a485881 100644 --- a/modules/core/src/convert.cpp +++ b/modules/core/src/convert.cpp @@ -1619,7 +1619,7 @@ DEF_CVT_FUNC_F(8u16s, uchar, short, 8u16s_C1R) DEF_CVT_FUNC_F(8s16s, schar, short, 8s16s_C1R) DEF_CVT_FUNC_F2(16u16s, ushort, short, 16u16s_C1RSfs) DEF_CVT_FUNC_F2(32s16s, int, short, 32s16s_C1RSfs) -DEF_CVT_FUNC_F2(32f16s, float, short, 32f16s_C1RSfs) +DEF_CVT_FUNC(32f16s, float, short) DEF_CVT_FUNC(64f16s, double, short) DEF_CVT_FUNC_F(8u32s, uchar, int, 8u32s_C1R) From 498da24b8b43412cc0beb6ac2877d7222544dc21 Mon Sep 17 00:00:00 2001 From: Alexander Karsakov Date: Mon, 11 Aug 2014 15:46:27 +0400 Subject: [PATCH 139/189] Disabled some IPP calls of cvtColor since it breaks OCL accuracy tests with test_loop_times=30 --- modules/imgproc/src/color.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/modules/imgproc/src/color.cpp b/modules/imgproc/src/color.cpp index db5bcd35f2..71f163bbae 100644 --- a/modules/imgproc/src/color.cpp +++ b/modules/imgproc/src/color.cpp @@ -3381,18 +3381,16 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn ) _dst.create(sz, CV_8UC2); dst = _dst.getMat(); -#ifdef HAVE_IPP +#if defined(HAVE_IPP) && 0 // breaks OCL accuracy tests CV_SUPPRESS_DEPRECATED_START -#if 0 + if (code == CV_BGR2BGR565 && scn == 3) { if (CvtColorIPPLoop(src, dst, IPPGeneralFunctor((ippiGeneralFunc)ippiBGRToBGR565_8u16u_C3R))) return; setIppErrorStatus(); } - else -#endif - if (code == CV_BGRA2BGR565 && scn == 4) + else if (code == CV_BGRA2BGR565 && scn == 4) { if (CvtColorIPPLoopCopy(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC4C3RTab[depth], @@ -3787,6 +3785,7 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn ) #if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7) if( depth == CV_8U || depth == CV_16U ) { +#if 0 // breaks OCL accuracy tests if( code == CV_BGR2HSV_FULL && scn == 3 ) { if( CvtColorIPPLoopCopy(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC3RTab[depth], ippiRGB2HSVTab[depth], 2, 1, 0, depth)) ) @@ -3799,15 +3798,16 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn ) return; setIppErrorStatus(); } - else if( code == CV_RGB2HSV_FULL && scn == 3 && depth == CV_16U ) + else if( code == CV_RGB2HSV_FULL && scn == 4 ) { - if( CvtColorIPPLoopCopy(src, dst, IPPGeneralFunctor(ippiRGB2HSVTab[depth])) ) + if( CvtColorIPPLoop(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC4C3RTab[depth], ippiRGB2HSVTab[depth], 0, 1, 2, depth)) ) return; setIppErrorStatus(); - } - else if( code == CV_RGB2HSV_FULL && scn == 4 ) + } else +#endif + if( code == CV_RGB2HSV_FULL && scn == 3 && depth == CV_16U ) { - if( CvtColorIPPLoop(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC4C3RTab[depth], ippiRGB2HSVTab[depth], 0, 1, 2, depth)) ) + if( CvtColorIPPLoopCopy(src, dst, IPPGeneralFunctor(ippiRGB2HSVTab[depth])) ) return; setIppErrorStatus(); } From dfe5fff2f5bd6d68eb1a912832ed1cb9004e28da Mon Sep 17 00:00:00 2001 From: vbystricky Date: Mon, 11 Aug 2014 15:57:29 +0400 Subject: [PATCH 140/189] Restore OpenCL branch for minmaxLoc on float data --- modules/core/src/stat.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/core/src/stat.cpp b/modules/core/src/stat.cpp index 20e8aa5a79..e42f8224ff 100644 --- a/modules/core/src/stat.cpp +++ b/modules/core/src/stat.cpp @@ -1454,7 +1454,7 @@ static bool ocl_minMaxIdx( InputArray _src, double* minVal, double* maxVal, int* CV_Assert(!haveSrc2 || _src2.type() == type); - if (depth == CV_32S || depth == CV_32F) + if (depth == CV_32S) return false; if ((depth == CV_64F || ddepth == CV_64F) && !doubleSupport) From b73b28ab9ccf1ff30dd4e4620a6534dcb85e8906 Mon Sep 17 00:00:00 2001 From: Elena Gvozdeva Date: Mon, 11 Aug 2014 16:21:55 +0400 Subject: [PATCH 141/189] fix for ocl_lut --- modules/core/src/convert.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/core/src/convert.cpp b/modules/core/src/convert.cpp index fc29b2e1f9..e00a58c8e5 100644 --- a/modules/core/src/convert.cpp +++ b/modules/core/src/convert.cpp @@ -1948,7 +1948,7 @@ static bool ocl_LUT(InputArray _src, InputArray _lut, OutputArray _dst) UMat src = _src.getUMat(), lut = _lut.getUMat(); _dst.create(src.size(), CV_MAKETYPE(ddepth, dcn)); UMat dst = _dst.getUMat(); - int kercn = lcn == 1 ? std::min(4, ocl::predictOptimalVectorWidth(_dst)) : dcn; + int kercn = lcn == 1 ? std::min(4, ocl::predictOptimalVectorWidth(_src, _dst)) : dcn; ocl::Kernel k("LUT", ocl::core::lut_oclsrc, format("-D dcn=%d -D lcn=%d -D srcT=%s -D dstT=%s", kercn, lcn, From 911e1bd1e40aabac0d0bfdcb20b30fd71fb386dd Mon Sep 17 00:00:00 2001 From: Low Chin Kian Date: Mon, 11 Aug 2014 21:08:37 +0800 Subject: [PATCH 142/189] Allow full range IPv4 support, up to 255.255.255.255 Signed-off-by: Low Chin Kian --- modules/videoio/src/cap_pvapi.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/videoio/src/cap_pvapi.cpp b/modules/videoio/src/cap_pvapi.cpp index 4b27ab1602..b889e64295 100644 --- a/modules/videoio/src/cap_pvapi.cpp +++ b/modules/videoio/src/cap_pvapi.cpp @@ -375,7 +375,7 @@ bool CvCaptureCAM_PvAPI::setProperty( int property_id, double value ) } else { - cv::String ip=cv::format("%d.%d.%d.%d", ((int)value>>24)&255, ((int)value>>16)&255, ((int)value>>8)&255, (int)value&255); + cv::String ip=cv::format("%d.%d.%d.%d", ((unsigned int)value>>24)&255, ((unsigned int)value>>16)&255, ((unsigned int)value>>8)&255, (unsigned int)value&255); if ((PvAttrEnumSet(Camera.Handle,"MulticastEnable", "On")==ePvErrSuccess) && (PvAttrStringSet(Camera.Handle, "MulticastIPAddress", ip.c_str())==ePvErrSuccess)) break; From 31df47b6eaeb753a77f4d0cc3f4225c5c40682f6 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Mon, 11 Aug 2014 23:26:39 +0400 Subject: [PATCH 143/189] moved nonfree and a part of features2d to opencv_contrib/xfeatures2d --- doc/CMakeLists.txt | 2 +- .../feature_description.rst | 23 +- .../feature_detection/feature_detection.rst | 12 +- .../feature_flann_matcher.rst | 112 +- .../feature_homography/feature_homography.rst | 5 +- modules/core/doc/basic_structures.rst | 6 +- ...on_interfaces_of_descriptor_extractors.rst | 25 - ...common_interfaces_of_feature_detectors.rst | 274 -- .../features2d/include/opencv2/features2d.hpp | 614 +--- modules/features2d/src/brief.cpp | 184 -- modules/features2d/src/descriptors.cpp | 154 - modules/features2d/src/detectors.cpp | 226 -- modules/features2d/src/dynamic.cpp | 177 -- modules/features2d/src/evaluation.cpp | 53 - modules/features2d/src/features2d_init.cpp | 45 +- modules/features2d/src/freak.cpp | 733 ----- modules/features2d/src/generated_16.i | 19 - modules/features2d/src/generated_32.i | 35 - modules/features2d/src/generated_64.i | 67 - modules/features2d/src/matchers.cpp | 399 +-- modules/features2d/src/stardetector.cpp | 472 --- modules/java/generator/rst_parser.py | 3 +- modules/java/generator/src/cpp/jni_part.cpp | 7 - modules/nonfree/CMakeLists.txt | 7 - modules/nonfree/doc/feature_detection.rst | 250 -- modules/nonfree/doc/nonfree.rst | 10 - modules/nonfree/include/opencv2/nonfree.hpp | 57 - .../nonfree/include/opencv2/nonfree/cuda.hpp | 128 - .../include/opencv2/nonfree/features2d.hpp | 154 - .../include/opencv2/nonfree/nonfree.hpp | 48 - modules/nonfree/perf/perf_main.cpp | 11 - modules/nonfree/perf/perf_precomp.hpp | 32 - modules/nonfree/perf/perf_surf.cpp | 66 - modules/nonfree/perf/perf_surf.cuda.cpp | 103 - modules/nonfree/perf/perf_surf.ocl.cpp | 111 - modules/nonfree/src/cuda/surf.cu | 960 ------ modules/nonfree/src/nonfree_init.cpp | 74 - modules/nonfree/src/opencl/surf.cl | 1347 --------- modules/nonfree/src/precomp.hpp | 65 - modules/nonfree/src/sift.cpp | 816 ------ modules/nonfree/src/surf.cpp | 1024 ------- modules/nonfree/src/surf.cuda.cpp | 432 --- modules/nonfree/src/surf.hpp | 118 - modules/nonfree/src/surf.ocl.cpp | 459 --- modules/nonfree/test/test_detectors.cpp | 314 -- modules/nonfree/test/test_features2d.cpp | 1224 -------- modules/nonfree/test/test_keypoints.cpp | 132 - modules/nonfree/test/test_main.cpp | 3 - modules/nonfree/test/test_precomp.hpp | 32 - .../test_rotation_and_scale_invariance.cpp | 710 ----- modules/nonfree/test/test_surf.cuda.cpp | 198 -- modules/nonfree/test/test_surf.ocl.cpp | 215 -- modules/python/common.cmake | 1 + modules/stitching/CMakeLists.txt | 2 +- samples/cpp/CMakeLists.txt | 2 +- samples/cpp/bagofwords_classification.cpp | 2611 ----------------- samples/cpp/descriptor_extractor_matcher.cpp | 305 -- samples/cpp/shape_transformation.cpp | 75 - .../features2D/SURF_FlannMatcher.cpp | 102 - .../features2D/SURF_Homography.cpp | 126 - .../features2D/SURF_descriptor.cpp | 73 - .../features2D/SURF_detector.cpp | 63 - samples/cpp/video_homography.cpp | 234 -- samples/gpu/CMakeLists.txt | 3 +- samples/tapi/CMakeLists.txt | 2 +- samples/tapi/surf_matcher.cpp | 225 -- 66 files changed, 141 insertions(+), 16430 deletions(-) delete mode 100644 modules/features2d/src/brief.cpp delete mode 100644 modules/features2d/src/freak.cpp delete mode 100644 modules/features2d/src/generated_16.i delete mode 100644 modules/features2d/src/generated_32.i delete mode 100644 modules/features2d/src/generated_64.i delete mode 100644 modules/features2d/src/stardetector.cpp delete mode 100644 modules/nonfree/CMakeLists.txt delete mode 100644 modules/nonfree/doc/feature_detection.rst delete mode 100644 modules/nonfree/doc/nonfree.rst delete mode 100644 modules/nonfree/include/opencv2/nonfree.hpp delete mode 100644 modules/nonfree/include/opencv2/nonfree/cuda.hpp delete mode 100644 modules/nonfree/include/opencv2/nonfree/features2d.hpp delete mode 100644 modules/nonfree/include/opencv2/nonfree/nonfree.hpp delete mode 100644 modules/nonfree/perf/perf_main.cpp delete mode 100644 modules/nonfree/perf/perf_precomp.hpp delete mode 100644 modules/nonfree/perf/perf_surf.cpp delete mode 100644 modules/nonfree/perf/perf_surf.cuda.cpp delete mode 100644 modules/nonfree/perf/perf_surf.ocl.cpp delete mode 100644 modules/nonfree/src/cuda/surf.cu delete mode 100644 modules/nonfree/src/nonfree_init.cpp delete mode 100644 modules/nonfree/src/opencl/surf.cl delete mode 100644 modules/nonfree/src/precomp.hpp delete mode 100644 modules/nonfree/src/sift.cpp delete mode 100644 modules/nonfree/src/surf.cpp delete mode 100644 modules/nonfree/src/surf.cuda.cpp delete mode 100644 modules/nonfree/src/surf.hpp delete mode 100644 modules/nonfree/src/surf.ocl.cpp delete mode 100644 modules/nonfree/test/test_detectors.cpp delete mode 100644 modules/nonfree/test/test_features2d.cpp delete mode 100644 modules/nonfree/test/test_keypoints.cpp delete mode 100644 modules/nonfree/test/test_main.cpp delete mode 100644 modules/nonfree/test/test_precomp.hpp delete mode 100644 modules/nonfree/test/test_rotation_and_scale_invariance.cpp delete mode 100644 modules/nonfree/test/test_surf.cuda.cpp delete mode 100644 modules/nonfree/test/test_surf.ocl.cpp delete mode 100644 samples/cpp/bagofwords_classification.cpp delete mode 100644 samples/cpp/descriptor_extractor_matcher.cpp delete mode 100644 samples/cpp/shape_transformation.cpp delete mode 100644 samples/cpp/tutorial_code/features2D/SURF_FlannMatcher.cpp delete mode 100644 samples/cpp/tutorial_code/features2D/SURF_Homography.cpp delete mode 100644 samples/cpp/tutorial_code/features2D/SURF_descriptor.cpp delete mode 100644 samples/cpp/tutorial_code/features2D/SURF_detector.cpp delete mode 100644 samples/cpp/video_homography.cpp delete mode 100644 samples/tapi/surf_matcher.cpp diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 957e69d00c..7dcc96f928 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -33,7 +33,7 @@ if(BUILD_DOCS AND HAVE_SPHINX) endif() endforeach() - set(FIXED_ORDER_MODULES core imgproc imgcodecs videoio highgui video calib3d features2d objdetect ml flann photo stitching nonfree contrib legacy) + set(FIXED_ORDER_MODULES core imgproc imgcodecs videoio highgui video calib3d features2d objdetect ml flann photo stitching) list(REMOVE_ITEM BASE_MODULES ${FIXED_ORDER_MODULES}) diff --git a/doc/tutorials/features2d/feature_description/feature_description.rst b/doc/tutorials/features2d/feature_description/feature_description.rst index 967b32d716..17dee727e7 100644 --- a/doc/tutorials/features2d/feature_description/feature_description.rst +++ b/doc/tutorials/features2d/feature_description/feature_description.rst @@ -23,7 +23,7 @@ Theory Code ==== -This tutorial code's is shown lines below. You can also download it from `here `_ +This tutorial code's is shown lines below. .. code-block:: cpp @@ -32,9 +32,10 @@ This tutorial code's is shown lines below. You can also download it from `here < #include "opencv2/core.hpp" #include "opencv2/features2d.hpp" #include "opencv2/highgui.hpp" - #include "opencv2/nonfree.hpp" + #include "opencv2/xfeatures2d.hpp" using namespace cv; + using namespace cv::xfeatures2d; void readme(); @@ -50,25 +51,19 @@ This tutorial code's is shown lines below. You can also download it from `here < if( !img_1.data || !img_2.data ) { return -1; } - //-- Step 1: Detect the keypoints using SURF Detector + //-- Step 1: Detect the keypoints using SURF Detector, compute the descriptors int minHessian = 400; - SurfFeatureDetector detector( minHessian ); + Ptr detector = SURF::create(); + detector->setMinHessian(minHessian); std::vector keypoints_1, keypoints_2; - - detector.detect( img_1, keypoints_1 ); - detector.detect( img_2, keypoints_2 ); - - //-- Step 2: Calculate descriptors (feature vectors) - SurfDescriptorExtractor extractor; - Mat descriptors_1, descriptors_2; - extractor.compute( img_1, keypoints_1, descriptors_1 ); - extractor.compute( img_2, keypoints_2, descriptors_2 ); + detector->detectAndCompute( img_1, keypoints_1, descriptors_1 ); + detector->detectAndCompute( img_2, keypoints_2, descriptors_2 ); - //-- Step 3: Matching descriptor vectors with a brute force matcher + //-- Step 2: Matching descriptor vectors with a brute force matcher BFMatcher matcher(NORM_L2); std::vector< DMatch > matches; matcher.match( descriptors_1, descriptors_2, matches ); diff --git a/doc/tutorials/features2d/feature_detection/feature_detection.rst b/doc/tutorials/features2d/feature_detection/feature_detection.rst index 7705a13719..685a05878e 100644 --- a/doc/tutorials/features2d/feature_detection/feature_detection.rst +++ b/doc/tutorials/features2d/feature_detection/feature_detection.rst @@ -22,7 +22,7 @@ Theory Code ==== -This tutorial code's is shown lines below. You can also download it from `here `_ +This tutorial code's is shown lines below. .. code-block:: cpp @@ -30,11 +30,11 @@ This tutorial code's is shown lines below. You can also download it from `here < #include #include "opencv2/core.hpp" #include "opencv2/features2d.hpp" - #include "opencv2/nonfree/features2d.hpp" + #include "opencv2/xfeatures2d.hpp" #include "opencv2/highgui.hpp" - #include "opencv2/nonfree.hpp" using namespace cv; + using namespace cv::xfeatures2d; void readme(); @@ -53,12 +53,12 @@ This tutorial code's is shown lines below. You can also download it from `here < //-- Step 1: Detect the keypoints using SURF Detector int minHessian = 400; - SurfFeatureDetector detector( minHessian ); + Ptr detector = SURF::create( minHessian ); std::vector keypoints_1, keypoints_2; - detector.detect( img_1, keypoints_1 ); - detector.detect( img_2, keypoints_2 ); + detector->detect( img_1, keypoints_1 ); + detector->detect( img_2, keypoints_2 ); //-- Draw keypoints Mat img_keypoints_1; Mat img_keypoints_2; diff --git a/doc/tutorials/features2d/feature_flann_matcher/feature_flann_matcher.rst b/doc/tutorials/features2d/feature_flann_matcher/feature_flann_matcher.rst index e4630c97ae..6be334b9d7 100644 --- a/doc/tutorials/features2d/feature_flann_matcher/feature_flann_matcher.rst +++ b/doc/tutorials/features2d/feature_flann_matcher/feature_flann_matcher.rst @@ -19,10 +19,116 @@ Theory Code ==== -This tutorial code's is shown lines below. You can also download it from `here `_ +This tutorial code's is shown lines below. + +.. code-block:: cpp + + /** + * @file SURF_FlannMatcher + * @brief SURF detector + descriptor + FLANN Matcher + * @author A. Huaman + */ + + #include + #include + #include + #include + #include "opencv2/core.hpp" + #include "opencv2/features2d.hpp" + #include "opencv2/imgcodecs.hpp" + #include "opencv2/highgui.hpp" + #include "opencv2/xfeatures2d.hpp" + + using namespace std; + using namespace cv; + using namespace cv::xfeatures2d; + + void readme(); + + /** + * @function main + * @brief Main function + */ + int main( int argc, char** argv ) + { + if( argc != 3 ) + { readme(); return -1; } + + Mat img_1 = imread( argv[1], IMREAD_GRAYSCALE ); + Mat img_2 = imread( argv[2], IMREAD_GRAYSCALE ); + + if( !img_1.data || !img_2.data ) + { std::cout<< " --(!) Error reading images " << std::endl; return -1; } + + //-- Step 1: Detect the keypoints using SURF Detector + int minHessian = 400; + + SurfFeatureDetector detector( minHessian ); + + std::vector keypoints_1, keypoints_2; + + detector.detect( img_1, keypoints_1 ); + detector.detect( img_2, keypoints_2 ); + + //-- Step 2: Calculate descriptors (feature vectors) + SurfDescriptorExtractor extractor; + + Mat descriptors_1, descriptors_2; + + extractor.compute( img_1, keypoints_1, descriptors_1 ); + extractor.compute( img_2, keypoints_2, descriptors_2 ); + + //-- Step 3: Matching descriptor vectors using FLANN matcher + FlannBasedMatcher matcher; + std::vector< DMatch > matches; + matcher.match( descriptors_1, descriptors_2, matches ); + + double max_dist = 0; double min_dist = 100; + + //-- Quick calculation of max and min distances between keypoints + for( int i = 0; i < descriptors_1.rows; i++ ) + { double dist = matches[i].distance; + if( dist < min_dist ) min_dist = dist; + if( dist > max_dist ) max_dist = dist; + } + + printf("-- Max dist : %f \n", max_dist ); + printf("-- Min dist : %f \n", min_dist ); + + //-- Draw only "good" matches (i.e. whose distance is less than 2*min_dist, + //-- or a small arbitary value ( 0.02 ) in the event that min_dist is very + //-- small) + //-- PS.- radiusMatch can also be used here. + std::vector< DMatch > good_matches; + + for( int i = 0; i < descriptors_1.rows; i++ ) + { if( matches[i].distance <= max(2*min_dist, 0.02) ) + { good_matches.push_back( matches[i]); } + } + + //-- Draw only "good" matches + Mat img_matches; + drawMatches( img_1, keypoints_1, img_2, keypoints_2, + good_matches, img_matches, Scalar::all(-1), Scalar::all(-1), + vector(), DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS ); + + //-- Show detected matches + imshow( "Good Matches", img_matches ); + + for( int i = 0; i < (int)good_matches.size(); i++ ) + { printf( "-- Good Match [%d] Keypoint 1: %d -- Keypoint 2: %d \n", i, good_matches[i].queryIdx, good_matches[i].trainIdx ); } + + waitKey(0); + + return 0; + } + + /** + * @function readme + */ + void readme() + { std::cout << " Usage: ./SURF_FlannMatcher " << std::endl; } -.. literalinclude:: ../../../../samples/cpp/tutorial_code/features2D/SURF_FlannMatcher.cpp - :language: cpp Explanation ============ diff --git a/doc/tutorials/features2d/feature_homography/feature_homography.rst b/doc/tutorials/features2d/feature_homography/feature_homography.rst index 3040ed7d75..91e70c9a6a 100644 --- a/doc/tutorials/features2d/feature_homography/feature_homography.rst +++ b/doc/tutorials/features2d/feature_homography/feature_homography.rst @@ -20,7 +20,7 @@ Theory Code ==== -This tutorial code's is shown lines below. You can also download it from `here `_ +This tutorial code's is shown lines below. .. code-block:: cpp @@ -30,9 +30,10 @@ This tutorial code's is shown lines below. You can also download it from `here < #include "opencv2/features2d.hpp" #include "opencv2/highgui.hpp" #include "opencv2/calib3d.hpp" - #include "opencv2/nonfree.hpp" + #include "opencv2/xfeatures2d.hpp" using namespace cv; + using namespace cv::xfeatures2d; void readme(); diff --git a/modules/core/doc/basic_structures.rst b/modules/core/doc/basic_structures.rst index d08b2d6a6c..8a759bcdd9 100644 --- a/modules/core/doc/basic_structures.rst +++ b/modules/core/doc/basic_structures.rst @@ -3050,13 +3050,15 @@ The class provides the following features for all derived classes: Here is example of SIFT use in your application via Algorithm interface: :: #include "opencv2/opencv.hpp" - #include "opencv2/nonfree.hpp" + #include "opencv2/xfeatures2d.hpp" + + using namespace cv::xfeatures2d; ... initModule_nonfree(); // to load SURF/SIFT etc. - Ptr sift = Algorithm::create("Feature2D.SIFT"); + Ptr sift = SIFT::create(); FileStorage fs("sift_params.xml", FileStorage::READ); if( fs.isOpened() ) // if we have file with parameters, read them diff --git a/modules/features2d/doc/common_interfaces_of_descriptor_extractors.rst b/modules/features2d/doc/common_interfaces_of_descriptor_extractors.rst index 4bb2ba1593..e99c672fbe 100644 --- a/modules/features2d/doc/common_interfaces_of_descriptor_extractors.rst +++ b/modules/features2d/doc/common_interfaces_of_descriptor_extractors.rst @@ -94,28 +94,3 @@ The current implementation supports the following types of a descriptor extracto A combined format is also supported: descriptor extractor adapter name ( ``"Opponent"`` -- :ocv:class:`OpponentColorDescriptorExtractor` ) + descriptor extractor name (see above), for example: ``"OpponentSIFT"`` . - - -OpponentColorDescriptorExtractor --------------------------------- -.. ocv:class:: OpponentColorDescriptorExtractor : public DescriptorExtractor - -Class adapting a descriptor extractor to compute descriptors in the Opponent Color Space -(refer to Van de Sande et al., CGIV 2008 *Color Descriptors for Object Category Recognition*). -Input RGB image is transformed in the Opponent Color Space. Then, an unadapted descriptor extractor -(set in the constructor) computes descriptors on each of three channels and concatenates -them into a single color descriptor. :: - - class OpponentColorDescriptorExtractor : public DescriptorExtractor - { - public: - OpponentColorDescriptorExtractor( const Ptr& dextractor ); - - virtual void read( const FileNode& ); - virtual void write( FileStorage& ) const; - virtual int descriptorSize() const; - virtual int descriptorType() const; - virtual int defaultNorm() const; - protected: - ... - }; diff --git a/modules/features2d/doc/common_interfaces_of_feature_detectors.rst b/modules/features2d/doc/common_interfaces_of_feature_detectors.rst index 62a99073bb..4f31dc0903 100644 --- a/modules/features2d/doc/common_interfaces_of_feature_detectors.rst +++ b/modules/features2d/doc/common_interfaces_of_feature_detectors.rst @@ -73,8 +73,6 @@ The following detector types are supported: * ``"FAST"`` -- :ocv:class:`FastFeatureDetector` * ``"STAR"`` -- :ocv:class:`StarFeatureDetector` -* ``"SIFT"`` -- :ocv:class:`SIFT` (nonfree module) -* ``"SURF"`` -- :ocv:class:`SURF` (nonfree module) * ``"ORB"`` -- :ocv:class:`ORB` * ``"BRISK"`` -- :ocv:class:`BRISK` * ``"MSER"`` -- :ocv:class:`MSER` @@ -164,55 +162,6 @@ Wrapping class for feature detection using the ... }; - -StarFeatureDetector -------------------- -.. ocv:class:: StarFeatureDetector : public FeatureDetector - -The class implements the keypoint detector introduced by [Agrawal08]_, synonym of ``StarDetector``. :: - - class StarFeatureDetector : public FeatureDetector - { - public: - StarFeatureDetector( int maxSize=16, int responseThreshold=30, - int lineThresholdProjected = 10, - int lineThresholdBinarized=8, int suppressNonmaxSize=5 ); - virtual void read( const FileNode& fn ); - virtual void write( FileStorage& fs ) const; - protected: - ... - }; - -.. [Agrawal08] Agrawal, M., Konolige, K., & Blas, M. R. (2008). Censure: Center surround extremas for realtime feature detection and matching. In Computer Vision–ECCV 2008 (pp. 102-115). Springer Berlin Heidelberg. - - -DenseFeatureDetector --------------------- -.. ocv:class:: DenseFeatureDetector : public FeatureDetector - -Class for generation of image features which are distributed densely and regularly over the image. :: - - class DenseFeatureDetector : public FeatureDetector - { - public: - DenseFeatureDetector( float initFeatureScale=1.f, int featureScaleLevels=1, - float featureScaleMul=0.1f, - int initXyStep=6, int initImgBound=0, - bool varyXyStepWithScale=true, - bool varyImgBoundWithScale=false ); - protected: - ... - }; - -The detector generates several levels (in the amount of ``featureScaleLevels``) of features. Features of each level are located in the nodes of a regular grid over the image (excluding the image boundary of given size). The level parameters (a feature scale, a node size, a size of boundary) are multiplied by ``featureScaleMul`` with level index growing depending on input flags, viz.: - -* Feature scale is multiplied always. - -* The grid node size is multiplied if ``varyXyStepWithScale`` is ``true``. - -* Size of image boundary is multiplied if ``varyImgBoundWithScale`` is ``true``. - - SimpleBlobDetector ------------------- .. ocv:class:: SimpleBlobDetector : public FeatureDetector @@ -277,226 +226,3 @@ This class performs several filtrations of returned blobs. You should set ``filt Default values of parameters are tuned to extract dark circular blobs. - -GridAdaptedFeatureDetector --------------------------- -.. ocv:class:: GridAdaptedFeatureDetector : public FeatureDetector - -Class adapting a detector to partition the source image into a grid and detect points in each cell. :: - - class GridAdaptedFeatureDetector : public FeatureDetector - { - public: - /* - * detector Detector that will be adapted. - * maxTotalKeypoints Maximum count of keypoints detected on the image. - * Only the strongest keypoints will be kept. - * gridRows Grid row count. - * gridCols Grid column count. - */ - GridAdaptedFeatureDetector( const Ptr& detector, - int maxTotalKeypoints, int gridRows=4, - int gridCols=4 ); - virtual void read( const FileNode& fn ); - virtual void write( FileStorage& fs ) const; - protected: - ... - }; - -PyramidAdaptedFeatureDetector ------------------------------ -.. ocv:class:: PyramidAdaptedFeatureDetector : public FeatureDetector - -Class adapting a detector to detect points over multiple levels of a Gaussian pyramid. Consider using this class for detectors that are not inherently scaled. :: - - class PyramidAdaptedFeatureDetector : public FeatureDetector - { - public: - PyramidAdaptedFeatureDetector( const Ptr& detector, - int levels=2 ); - virtual void read( const FileNode& fn ); - virtual void write( FileStorage& fs ) const; - protected: - ... - }; - - -DynamicAdaptedFeatureDetector ------------------------------ -.. ocv:class:: DynamicAdaptedFeatureDetector : public FeatureDetector - -Adaptively adjusting detector that iteratively detects features until the desired number is found. :: - - class DynamicAdaptedFeatureDetector: public FeatureDetector - { - public: - DynamicAdaptedFeatureDetector( const Ptr& adjuster, - int min_features=400, int max_features=500, int max_iters=5 ); - ... - }; - -If the detector is persisted, it "remembers" the parameters -used for the last detection. In this case, the detector may be used for consistent numbers -of keypoints in a set of temporally related images, such as video streams or -panorama series. - -``DynamicAdaptedFeatureDetector`` uses another detector, such as FAST or SURF, to do the dirty work, -with the help of ``AdjusterAdapter`` . -If the detected number of features is not large enough, -``AdjusterAdapter`` adjusts the detection parameters so that the next detection -results in a bigger or smaller number of features. This is repeated until either the number of desired features are found -or the parameters are maxed out. - -Adapters can be easily implemented for any detector via the -``AdjusterAdapter`` interface. - -Beware that this is not thread-safe since the adjustment of parameters requires modification of the feature detector class instance. - -Example of creating ``DynamicAdaptedFeatureDetector`` : :: - - //sample usage: - //will create a detector that attempts to find - //100 - 110 FAST Keypoints, and will at most run - //FAST feature detection 10 times until that - //number of keypoints are found - Ptr detector(new DynamicAdaptedFeatureDetector (100, 110, 10, - new FastAdjuster(20,true))); - - -DynamicAdaptedFeatureDetector::DynamicAdaptedFeatureDetector ------------------------------------------------------------- -The constructor - -.. ocv:function:: DynamicAdaptedFeatureDetector::DynamicAdaptedFeatureDetector( const Ptr& adjuster, int min_features=400, int max_features=500, int max_iters=5 ) - - :param adjuster: :ocv:class:`AdjusterAdapter` that detects features and adjusts parameters. - - :param min_features: Minimum desired number of features. - - :param max_features: Maximum desired number of features. - - :param max_iters: Maximum number of times to try adjusting the feature detector parameters. For :ocv:class:`FastAdjuster` , this number can be high, but with ``Star`` or ``Surf`` many iterations can be time-consuming. At each iteration the detector is rerun. - -AdjusterAdapter ---------------- -.. ocv:class:: AdjusterAdapter : public FeatureDetector - -Class providing an interface for adjusting parameters of a feature detector. This interface is used by :ocv:class:`DynamicAdaptedFeatureDetector` . It is a wrapper for :ocv:class:`FeatureDetector` that enables adjusting parameters after feature detection. :: - - class AdjusterAdapter: public FeatureDetector - { - public: - virtual ~AdjusterAdapter() {} - virtual void tooFew(int min, int n_detected) = 0; - virtual void tooMany(int max, int n_detected) = 0; - virtual bool good() const = 0; - virtual Ptr clone() const = 0; - static Ptr create( const String& detectorType ); - }; - - -See -:ocv:class:`FastAdjuster`, -:ocv:class:`StarAdjuster`, and -:ocv:class:`SurfAdjuster` for concrete implementations. - -AdjusterAdapter::tooFew ---------------------------- -Adjusts the detector parameters to detect more features. - -.. ocv:function:: void AdjusterAdapter::tooFew(int min, int n_detected) - - :param min: Minimum desired number of features. - - :param n_detected: Number of features detected during the latest run. - -Example: :: - - void FastAdjuster::tooFew(int min, int n_detected) - { - thresh_--; - } - -AdjusterAdapter::tooMany ----------------------------- -Adjusts the detector parameters to detect less features. - -.. ocv:function:: void AdjusterAdapter::tooMany(int max, int n_detected) - - :param max: Maximum desired number of features. - - :param n_detected: Number of features detected during the latest run. - -Example: :: - - void FastAdjuster::tooMany(int min, int n_detected) - { - thresh_++; - } - - -AdjusterAdapter::good ---------------------- -Returns false if the detector parameters cannot be adjusted any more. - -.. ocv:function:: bool AdjusterAdapter::good() const - -Example: :: - - bool FastAdjuster::good() const - { - return (thresh_ > 1) && (thresh_ < 200); - } - -AdjusterAdapter::create ------------------------ -Creates an adjuster adapter by name - -.. ocv:function:: Ptr AdjusterAdapter::create( const String& detectorType ) - - Creates an adjuster adapter by name ``detectorType``. The detector name is the same as in :ocv:func:`FeatureDetector::create`, but now supports ``"FAST"``, ``"STAR"``, and ``"SURF"`` only. - -FastAdjuster ------------- -.. ocv:class:: FastAdjuster : public AdjusterAdapter - -:ocv:class:`AdjusterAdapter` for :ocv:class:`FastFeatureDetector`. This class decreases or increases the threshold value by 1. :: - - class FastAdjuster FastAdjuster: public AdjusterAdapter - { - public: - FastAdjuster(int init_thresh = 20, bool nonmax = true); - ... - }; - -StarAdjuster ------------- -.. ocv:class:: StarAdjuster : public AdjusterAdapter - -:ocv:class:`AdjusterAdapter` for :ocv:class:`StarFeatureDetector`. This class adjusts the ``responseThreshhold`` of ``StarFeatureDetector``. :: - - class StarAdjuster: public AdjusterAdapter - { - StarAdjuster(double initial_thresh = 30.0); - ... - }; - -SurfAdjuster ------------- -.. ocv:class:: SurfAdjuster : public AdjusterAdapter - -:ocv:class:`AdjusterAdapter` for ``SurfFeatureDetector``. :: - - class CV_EXPORTS SurfAdjuster: public AdjusterAdapter - { - public: - SurfAdjuster( double initial_thresh=400.f, double min_thresh=2, double max_thresh=1000 ); - - virtual void tooFew(int minv, int n_detected); - virtual void tooMany(int maxv, int n_detected); - virtual bool good() const; - - virtual Ptr clone() const; - - ... - }; diff --git a/modules/features2d/include/opencv2/features2d.hpp b/modules/features2d/include/opencv2/features2d.hpp index 19fb0faaaf..5e9c4c45c9 100644 --- a/modules/features2d/include/opencv2/features2d.hpp +++ b/modules/features2d/include/opencv2/features2d.hpp @@ -49,7 +49,7 @@ namespace cv { -CV_EXPORTS bool initModule_features2d(); +CV_EXPORTS bool initModule_features2d(void); // //! writes vector of keypoints to the file storage // CV_EXPORTS void write(FileStorage& fs, const String& name, const std::vector& keypoints); @@ -353,107 +353,6 @@ protected: typedef ORB OrbFeatureDetector; typedef ORB OrbDescriptorExtractor; -/*! - FREAK implementation -*/ -class CV_EXPORTS FREAK : public DescriptorExtractor -{ -public: - /** Constructor - * @param orientationNormalized enable orientation normalization - * @param scaleNormalized enable scale normalization - * @param patternScale scaling of the description pattern - * @param nbOctave number of octaves covered by the detected keypoints - * @param selectedPairs (optional) user defined selected pairs - */ - explicit FREAK( bool orientationNormalized = true, - bool scaleNormalized = true, - float patternScale = 22.0f, - int nOctaves = 4, - const std::vector& selectedPairs = std::vector()); - FREAK( const FREAK& rhs ); - FREAK& operator=( const FREAK& ); - - virtual ~FREAK(); - - /** returns the descriptor length in bytes */ - virtual int descriptorSize() const; - - /** returns the descriptor type */ - virtual int descriptorType() const; - - /** returns the default norm type */ - virtual int defaultNorm() const; - - /** select the 512 "best description pairs" - * @param images grayscale images set - * @param keypoints set of detected keypoints - * @param corrThresh correlation threshold - * @param verbose print construction information - * @return list of best pair indexes - */ - std::vector selectPairs( const std::vector& images, std::vector >& keypoints, - const double corrThresh = 0.7, bool verbose = true ); - - AlgorithmInfo* info() const; - - enum - { - NB_SCALES = 64, NB_PAIRS = 512, NB_ORIENPAIRS = 45 - }; - -protected: - virtual void computeImpl( InputArray image, std::vector& keypoints, OutputArray descriptors ) const; - void buildPattern(); - - template - imgType meanIntensity( InputArray image, InputArray integral, const float kp_x, const float kp_y, - const unsigned int scale, const unsigned int rot, const unsigned int point ) const; - - template - void computeDescriptors( InputArray image, std::vector& keypoints, OutputArray descriptors ) const; - - template - void extractDescriptor(srcMatType *pointsValue, void ** ptr) const; - - bool orientationNormalized; //true if the orientation is normalized, false otherwise - bool scaleNormalized; //true if the scale is normalized, false otherwise - double patternScale; //scaling of the pattern - int nOctaves; //number of octaves - bool extAll; // true if all pairs need to be extracted for pairs selection - - double patternScale0; - int nOctaves0; - std::vector selectedPairs0; - - struct PatternPoint - { - float x; // x coordinate relative to center - float y; // x coordinate relative to center - float sigma; // Gaussian smoothing sigma - }; - - struct DescriptionPair - { - uchar i; // index of the first point - uchar j; // index of the second point - }; - - struct OrientationPair - { - uchar i; // index of the first point - uchar j; // index of the second point - int weight_dx; // dx/(norm_sq))*4096 - int weight_dy; // dy/(norm_sq))*4096 - }; - - std::vector patternLookup; // look-up table for the pattern points (position+sigma of all points at all scales and orientation) - int patternSizes[NB_SCALES]; // size of the pattern at a specific scale (used to check if a point is within image boundaries) - DescriptionPair descriptionPairs[NB_PAIRS]; - OrientationPair orientationPairs[NB_ORIENPAIRS]; -}; - - /*! Maximal Stable Extremal Regions class. @@ -493,36 +392,6 @@ protected: typedef MSER MserFeatureDetector; -/*! - The "Star" Detector. - - The class implements the keypoint detector introduced by K. Konolige. -*/ -class CV_EXPORTS_W StarDetector : public FeatureDetector -{ -public: - //! the full constructor - CV_WRAP StarDetector(int _maxSize=45, int _responseThreshold=30, - int _lineThresholdProjected=10, - int _lineThresholdBinarized=8, - int _suppressNonmaxSize=5); - - //! finds the keypoints in the image - CV_WRAP_AS(detect) void operator()(const Mat& image, - CV_OUT std::vector& keypoints) const; - - AlgorithmInfo* info() const; - -protected: - void detectImpl( InputArray image, std::vector& keypoints, InputArray mask=noArray() ) const; - - int maxSize; - int responseThreshold; - int lineThresholdProjected; - int lineThresholdBinarized; - int suppressNonmaxSize; -}; - //! detects corners using FAST algorithm by E. Rosten CV_EXPORTS void FAST( InputArray image, CV_OUT std::vector& keypoints, int threshold, bool nonmaxSuppression=true ); @@ -570,7 +439,6 @@ protected: }; typedef GFTTDetector GoodFeaturesToTrackDetector; -typedef StarDetector StarFeatureDetector; class CV_EXPORTS_W SimpleBlobDetector : public FeatureDetector { @@ -624,277 +492,6 @@ protected: }; -class CV_EXPORTS_W DenseFeatureDetector : public FeatureDetector -{ -public: - CV_WRAP explicit DenseFeatureDetector( float initFeatureScale=1.f, int featureScaleLevels=1, - float featureScaleMul=0.1f, - int initXyStep=6, int initImgBound=0, - bool varyXyStepWithScale=true, - bool varyImgBoundWithScale=false ); - AlgorithmInfo* info() const; - -protected: - virtual void detectImpl( InputArray image, std::vector& keypoints, InputArray mask=noArray() ) const; - - double initFeatureScale; - int featureScaleLevels; - double featureScaleMul; - - int initXyStep; - int initImgBound; - - bool varyXyStepWithScale; - bool varyImgBoundWithScale; -}; - -/* - * Adapts a detector to partition the source image into a grid and detect - * points in each cell. - */ -class CV_EXPORTS_W GridAdaptedFeatureDetector : public FeatureDetector -{ -public: - /* - * detector Detector that will be adapted. - * maxTotalKeypoints Maximum count of keypoints detected on the image. Only the strongest keypoints - * will be keeped. - * gridRows Grid rows count. - * gridCols Grid column count. - */ - CV_WRAP GridAdaptedFeatureDetector( const Ptr& detector=Ptr(), - int maxTotalKeypoints=1000, - int gridRows=4, int gridCols=4 ); - - // TODO implement read/write - virtual bool empty() const; - - AlgorithmInfo* info() const; - -protected: - virtual void detectImpl( InputArray image, std::vector& keypoints, InputArray mask=noArray() ) const; - - Ptr detector; - int maxTotalKeypoints; - int gridRows; - int gridCols; -}; - -/* - * Adapts a detector to detect points over multiple levels of a Gaussian - * pyramid. Useful for detectors that are not inherently scaled. - */ -class CV_EXPORTS_W PyramidAdaptedFeatureDetector : public FeatureDetector -{ -public: - // maxLevel - The 0-based index of the last pyramid layer - CV_WRAP PyramidAdaptedFeatureDetector( const Ptr& detector, int maxLevel=2 ); - - // TODO implement read/write - virtual bool empty() const; - -protected: - virtual void detectImpl( InputArray image, std::vector& keypoints, InputArray mask=noArray() ) const; - - Ptr detector; - int maxLevel; -}; - -/** \brief A feature detector parameter adjuster, this is used by the DynamicAdaptedFeatureDetector - * and is a wrapper for FeatureDetector that allow them to be adjusted after a detection - */ -class CV_EXPORTS AdjusterAdapter: public FeatureDetector -{ -public: - /** pure virtual interface - */ - virtual ~AdjusterAdapter() {} - /** too few features were detected so, adjust the detector params accordingly - * \param min the minimum number of desired features - * \param n_detected the number previously detected - */ - virtual void tooFew(int min, int n_detected) = 0; - /** too many features were detected so, adjust the detector params accordingly - * \param max the maximum number of desired features - * \param n_detected the number previously detected - */ - virtual void tooMany(int max, int n_detected) = 0; - /** are params maxed out or still valid? - * \return false if the parameters can't be adjusted any more - */ - virtual bool good() const = 0; - - virtual Ptr clone() const = 0; - - static Ptr create( const String& detectorType ); -}; -/** \brief an adaptively adjusting detector that iteratively detects until the desired number - * of features are detected. - * Beware that this is not thread safe - as the adjustment of parameters breaks the const - * of the detection routine... - * /TODO Make this const correct and thread safe - * - * sample usage: - //will create a detector that attempts to find 100 - 110 FAST Keypoints, and will at most run - //FAST feature detection 10 times until that number of keypoints are found - Ptr detector(new DynamicAdaptedFeatureDetector(new FastAdjuster(20,true),100, 110, 10)); - - */ -class CV_EXPORTS DynamicAdaptedFeatureDetector: public FeatureDetector -{ -public: - - /** \param adjuster an AdjusterAdapter that will do the detection and parameter adjustment - * \param max_features the maximum desired number of features - * \param max_iters the maximum number of times to try to adjust the feature detector params - * for the FastAdjuster this can be high, but with Star or Surf this can get time consuming - * \param min_features the minimum desired features - */ - DynamicAdaptedFeatureDetector( const Ptr& adjuster, int min_features=400, int max_features=500, int max_iters=5 ); - - virtual bool empty() const; - -protected: - virtual void detectImpl( InputArray image, std::vector& keypoints, InputArray mask=noArray() ) const; - -private: - DynamicAdaptedFeatureDetector& operator=(const DynamicAdaptedFeatureDetector&); - DynamicAdaptedFeatureDetector(const DynamicAdaptedFeatureDetector&); - - int escape_iters_; - int min_features_, max_features_; - const Ptr adjuster_; -}; - -/**\brief an adjust for the FAST detector. This will basically decrement or increment the - * threshold by 1 - */ -class CV_EXPORTS FastAdjuster: public AdjusterAdapter -{ -public: - /**\param init_thresh the initial threshold to start with, default = 20 - * \param nonmax whether to use non max or not for fast feature detection - */ - FastAdjuster(int init_thresh=20, bool nonmax=true, int min_thresh=1, int max_thresh=200); - - virtual void tooFew(int minv, int n_detected); - virtual void tooMany(int maxv, int n_detected); - virtual bool good() const; - - virtual Ptr clone() const; - -protected: - virtual void detectImpl( InputArray image, std::vector& keypoints, InputArray mask=noArray() ) const; - - int thresh_; - bool nonmax_; - int init_thresh_, min_thresh_, max_thresh_; -}; - - -/** An adjuster for StarFeatureDetector, this one adjusts the responseThreshold for now - * TODO find a faster way to converge the parameters for Star - use CvStarDetectorParams - */ -class CV_EXPORTS StarAdjuster: public AdjusterAdapter -{ -public: - StarAdjuster(double initial_thresh=30.0, double min_thresh=2., double max_thresh=200.); - - virtual void tooFew(int minv, int n_detected); - virtual void tooMany(int maxv, int n_detected); - virtual bool good() const; - - virtual Ptr clone() const; - -protected: - virtual void detectImpl(InputArray image, std::vector& keypoints, InputArray mask=noArray() ) const; - - double thresh_, init_thresh_, min_thresh_, max_thresh_; -}; - -class CV_EXPORTS SurfAdjuster: public AdjusterAdapter -{ -public: - SurfAdjuster( double initial_thresh=400.f, double min_thresh=2, double max_thresh=1000 ); - - virtual void tooFew(int minv, int n_detected); - virtual void tooMany(int maxv, int n_detected); - virtual bool good() const; - - virtual Ptr clone() const; - -protected: - virtual void detectImpl( InputArray image, std::vector& keypoints, InputArray mask=noArray() ) const; - - double thresh_, init_thresh_, min_thresh_, max_thresh_; -}; - -CV_EXPORTS Mat windowedMatchingMask( const std::vector& keypoints1, const std::vector& keypoints2, - float maxDeltaX, float maxDeltaY ); - - - -/* - * OpponentColorDescriptorExtractor - * - * Adapts a descriptor extractor to compute descriptors in Opponent Color Space - * (refer to van de Sande et al., CGIV 2008 "Color Descriptors for Object Category Recognition"). - * Input RGB image is transformed in Opponent Color Space. Then unadapted descriptor extractor - * (set in constructor) computes descriptors on each of the three channel and concatenate - * them into a single color descriptor. - */ -class CV_EXPORTS OpponentColorDescriptorExtractor : public DescriptorExtractor -{ -public: - OpponentColorDescriptorExtractor( const Ptr& descriptorExtractor ); - - virtual void read( const FileNode& ); - virtual void write( FileStorage& ) const; - - virtual int descriptorSize() const; - virtual int descriptorType() const; - virtual int defaultNorm() const; - - virtual bool empty() const; - -protected: - virtual void computeImpl( InputArray image, std::vector& keypoints, OutputArray descriptors ) const; - - Ptr descriptorExtractor; -}; - -/* - * BRIEF Descriptor - */ -class CV_EXPORTS BriefDescriptorExtractor : public DescriptorExtractor -{ -public: - static const int PATCH_SIZE = 48; - static const int KERNEL_SIZE = 9; - - // bytes is a length of descriptor in bytes. It can be equal 16, 32 or 64 bytes. - BriefDescriptorExtractor( int bytes = 32 ); - - virtual void read( const FileNode& ); - virtual void write( FileStorage& ) const; - - virtual int descriptorSize() const; - virtual int descriptorType() const; - virtual int defaultNorm() const; - - /// @todo read and write for brief - - AlgorithmInfo* info() const; - -protected: - virtual void computeImpl(InputArray image, std::vector& keypoints, OutputArray descriptors) const; - - typedef void(*PixelTestFn)(InputArray, const std::vector&, OutputArray); - - int bytes_; - PixelTestFn test_fn_; -}; - // KAZE/AKAZE diffusivity enum { DIFF_PM_G1 = 0, @@ -1293,208 +890,6 @@ protected: int addedDescCount; }; -/****************************************************************************************\ -* GenericDescriptorMatcher * -\****************************************************************************************/ -/* - * Abstract interface for a keypoint descriptor and matcher - */ -class GenericDescriptorMatcher; -typedef GenericDescriptorMatcher GenericDescriptorMatch; - -class CV_EXPORTS GenericDescriptorMatcher -{ -public: - GenericDescriptorMatcher(); - virtual ~GenericDescriptorMatcher(); - - /* - * Add train collection: images and keypoints from them. - * images A set of train images. - * ketpoints Keypoint collection that have been detected on train images. - * - * Keypoints for which a descriptor cannot be computed are removed. Such keypoints - * must be filtered in this method befor adding keypoints to train collection "trainPointCollection". - * If inheritor class need perform such prefiltering the method add() must be overloaded. - * In the other class methods programmer has access to the train keypoints by a constant link. - */ - virtual void add( InputArrayOfArrays images, - std::vector >& keypoints ); - - const std::vector& getTrainImages() const; - const std::vector >& getTrainKeypoints() const; - - /* - * Clear images and keypoints storing in train collection. - */ - virtual void clear(); - /* - * Returns true if matcher supports mask to match descriptors. - */ - virtual bool isMaskSupported() = 0; - /* - * Train some inner structures (e.g. flann index or decision trees). - * train() methods is run every time in matching methods. So the method implementation - * should has a check whether these inner structures need be trained/retrained or not. - */ - virtual void train(); - - /* - * Classifies query keypoints. - * queryImage The query image - * queryKeypoints Keypoints from the query image - * trainImage The train image - * trainKeypoints Keypoints from the train image - */ - // Classify keypoints from query image under one train image. - void classify( InputArray queryImage, std::vector& queryKeypoints, - InputArray trainImage, std::vector& trainKeypoints ) const; - // Classify keypoints from query image under train image collection. - void classify( InputArray queryImage, std::vector& queryKeypoints ); - - /* - * Group of methods to match keypoints from image pair. - * Keypoints for which a descriptor cannot be computed are removed. - * train() method is called here. - */ - // Find one best match for each query descriptor (if mask is empty). - void match( InputArray queryImage, std::vector& queryKeypoints, - InputArray trainImage, std::vector& trainKeypoints, - std::vector& matches, InputArray mask=noArray() ) const; - // Find k best matches for each query keypoint (in increasing order of distances). - // compactResult is used when mask is not empty. If compactResult is false matches - // vector will have the same size as queryDescriptors rows. - // If compactResult is true matches vector will not contain matches for fully masked out query descriptors. - void knnMatch( InputArray queryImage, std::vector& queryKeypoints, - InputArray trainImage, std::vector& trainKeypoints, - std::vector >& matches, int k, - InputArray mask=noArray(), bool compactResult=false ) const; - // Find best matches for each query descriptor which have distance less than maxDistance (in increasing order of distances). - void radiusMatch( InputArray queryImage, std::vector& queryKeypoints, - InputArray trainImage, std::vector& trainKeypoints, - std::vector >& matches, float maxDistance, - InputArray mask=noArray(), bool compactResult=false ) const; - /* - * Group of methods to match keypoints from one image to image set. - * See description of similar methods for matching image pair above. - */ - void match( InputArray queryImage, std::vector& queryKeypoints, - std::vector& matches, InputArrayOfArrays masks=noArray() ); - void knnMatch( InputArray queryImage, std::vector& queryKeypoints, - std::vector >& matches, int k, - InputArrayOfArrays masks=noArray(), bool compactResult=false ); - void radiusMatch(InputArray queryImage, std::vector& queryKeypoints, - std::vector >& matches, float maxDistance, - InputArrayOfArrays masks=noArray(), bool compactResult=false ); - - // Reads matcher object from a file node - virtual void read( const FileNode& fn ); - // Writes matcher object to a file storage - virtual void write( FileStorage& fs ) const; - - // Return true if matching object is empty (e.g. feature detector or descriptor matcher are empty) - virtual bool empty() const; - - // Clone the matcher. If emptyTrainData is false the method create deep copy of the object, i.e. copies - // both parameters and train data. If emptyTrainData is true the method create object copy with current parameters - // but with empty train data. - virtual Ptr clone( bool emptyTrainData=false ) const = 0; - - static Ptr create( const String& genericDescritptorMatcherType, - const String ¶msFilename=String() ); - -protected: - // In fact the matching is implemented only by the following two methods. These methods suppose - // that the class object has been trained already. Public match methods call these methods - // after calling train(). - virtual void knnMatchImpl( InputArray queryImage, std::vector& queryKeypoints, - std::vector >& matches, int k, - InputArrayOfArrays masks, bool compactResult ) = 0; - virtual void radiusMatchImpl( InputArray queryImage, std::vector& queryKeypoints, - std::vector >& matches, float maxDistance, - InputArrayOfArrays masks, bool compactResult ) = 0; - /* - * A storage for sets of keypoints together with corresponding images and class IDs - */ - class CV_EXPORTS KeyPointCollection - { - public: - KeyPointCollection(); - KeyPointCollection( const KeyPointCollection& collection ); - void add( const std::vector& images, const std::vector >& keypoints ); - void clear(); - - // Returns the total number of keypoints in the collection - size_t keypointCount() const; - size_t imageCount() const; - - const std::vector >& getKeypoints() const; - const std::vector& getKeypoints( int imgIdx ) const; - const KeyPoint& getKeyPoint( int imgIdx, int localPointIdx ) const; - const KeyPoint& getKeyPoint( int globalPointIdx ) const; - void getLocalIdx( int globalPointIdx, int& imgIdx, int& localPointIdx ) const; - - const std::vector& getImages() const; - const Mat& getImage( int imgIdx ) const; - - protected: - int pointCount; - - std::vector images; - std::vector > keypoints; - // global indices of the first points in each image, startIndices.size() = keypoints.size() - std::vector startIndices; - - private: - static Mat clone_op( Mat m ) { return m.clone(); } - }; - - KeyPointCollection trainPointCollection; -}; - - -/****************************************************************************************\ -* VectorDescriptorMatcher * -\****************************************************************************************/ - -/* - * A class used for matching descriptors that can be described as vectors in a finite-dimensional space - */ -class VectorDescriptorMatcher; -typedef VectorDescriptorMatcher VectorDescriptorMatch; - -class CV_EXPORTS VectorDescriptorMatcher : public GenericDescriptorMatcher -{ -public: - VectorDescriptorMatcher( const Ptr& extractor, const Ptr& matcher ); - virtual ~VectorDescriptorMatcher(); - - virtual void add( InputArrayOfArrays imgCollection, - std::vector >& pointCollection ); - - virtual void clear(); - - virtual void train(); - - virtual bool isMaskSupported(); - - virtual void read( const FileNode& fn ); - virtual void write( FileStorage& fs ) const; - virtual bool empty() const; - - virtual Ptr clone( bool emptyTrainData=false ) const; - -protected: - virtual void knnMatchImpl( InputArray queryImage, std::vector& queryKeypoints, - std::vector >& matches, int k, - InputArrayOfArrays masks, bool compactResult ); - virtual void radiusMatchImpl( InputArray queryImage, std::vector& queryKeypoints, - std::vector >& matches, float maxDistance, - InputArrayOfArrays masks, bool compactResult ); - - Ptr extractor; - Ptr matcher; -}; /****************************************************************************************\ * Drawing functions * @@ -1547,13 +942,6 @@ CV_EXPORTS void computeRecallPrecisionCurve( const std::vector& recallPrecisionCurve, float l_precision ); CV_EXPORTS int getNearestPoint( const std::vector& recallPrecisionCurve, float l_precision ); -CV_EXPORTS void evaluateGenericDescriptorMatcher( const Mat& img1, const Mat& img2, const Mat& H1to2, - std::vector& keypoints1, std::vector& keypoints2, - std::vector >* matches1to2, std::vector >* correctMatches1to2Mask, - std::vector& recallPrecisionCurve, - const Ptr& dmatch=Ptr() ); - - /****************************************************************************************\ * Bag of visual words * \****************************************************************************************/ diff --git a/modules/features2d/src/brief.cpp b/modules/features2d/src/brief.cpp deleted file mode 100644 index 0226ffb1e5..0000000000 --- a/modules/features2d/src/brief.cpp +++ /dev/null @@ -1,184 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009-2010, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "precomp.hpp" -#include -#include - -#include -#include - -using namespace cv; - -inline int smoothedSum(const Mat& sum, const KeyPoint& pt, int y, int x) -{ - static const int HALF_KERNEL = BriefDescriptorExtractor::KERNEL_SIZE / 2; - - int img_y = (int)(pt.pt.y + 0.5) + y; - int img_x = (int)(pt.pt.x + 0.5) + x; - return sum.at(img_y + HALF_KERNEL + 1, img_x + HALF_KERNEL + 1) - - sum.at(img_y + HALF_KERNEL + 1, img_x - HALF_KERNEL) - - sum.at(img_y - HALF_KERNEL, img_x + HALF_KERNEL + 1) - + sum.at(img_y - HALF_KERNEL, img_x - HALF_KERNEL); -} - -static void pixelTests16(InputArray _sum, const std::vector& keypoints, OutputArray _descriptors) -{ - Mat sum = _sum.getMat(), descriptors = _descriptors.getMat(); - for (int i = 0; i < (int)keypoints.size(); ++i) - { - uchar* desc = descriptors.ptr(i); - const KeyPoint& pt = keypoints[i]; -#include "generated_16.i" - } -} - -static void pixelTests32(InputArray _sum, const std::vector& keypoints, OutputArray _descriptors) -{ - Mat sum = _sum.getMat(), descriptors = _descriptors.getMat(); - for (int i = 0; i < (int)keypoints.size(); ++i) - { - uchar* desc = descriptors.ptr(i); - const KeyPoint& pt = keypoints[i]; - -#include "generated_32.i" - } -} - -static void pixelTests64(InputArray _sum, const std::vector& keypoints, OutputArray _descriptors) -{ - Mat sum = _sum.getMat(), descriptors = _descriptors.getMat(); - for (int i = 0; i < (int)keypoints.size(); ++i) - { - uchar* desc = descriptors.ptr(i); - const KeyPoint& pt = keypoints[i]; - -#include "generated_64.i" - } -} - -namespace cv -{ - -BriefDescriptorExtractor::BriefDescriptorExtractor(int bytes) : - bytes_(bytes), test_fn_(NULL) -{ - switch (bytes) - { - case 16: - test_fn_ = pixelTests16; - break; - case 32: - test_fn_ = pixelTests32; - break; - case 64: - test_fn_ = pixelTests64; - break; - default: - CV_Error(Error::StsBadArg, "bytes must be 16, 32, or 64"); - } -} - -int BriefDescriptorExtractor::descriptorSize() const -{ - return bytes_; -} - -int BriefDescriptorExtractor::descriptorType() const -{ - return CV_8UC1; -} - -int BriefDescriptorExtractor::defaultNorm() const -{ - return NORM_HAMMING; -} - -void BriefDescriptorExtractor::read( const FileNode& fn) -{ - int dSize = fn["descriptorSize"]; - switch (dSize) - { - case 16: - test_fn_ = pixelTests16; - break; - case 32: - test_fn_ = pixelTests32; - break; - case 64: - test_fn_ = pixelTests64; - break; - default: - CV_Error(Error::StsBadArg, "descriptorSize must be 16, 32, or 64"); - } - bytes_ = dSize; -} - -void BriefDescriptorExtractor::write( FileStorage& fs) const -{ - fs << "descriptorSize" << bytes_; -} - -void BriefDescriptorExtractor::computeImpl(InputArray image, std::vector& keypoints, OutputArray descriptors) const -{ - // Construct integral image for fast smoothing (box filter) - Mat sum; - - Mat grayImage = image.getMat(); - if( image.type() != CV_8U ) cvtColor( image, grayImage, COLOR_BGR2GRAY ); - - ///TODO allow the user to pass in a precomputed integral image - //if(image.type() == CV_32S) - // sum = image; - //else - - integral( grayImage, sum, CV_32S); - - //Remove keypoints very close to the border - KeyPointsFilter::runByImageBorder(keypoints, image.size(), PATCH_SIZE/2 + KERNEL_SIZE/2); - - descriptors.create((int)keypoints.size(), bytes_, CV_8U); - descriptors.setTo(Scalar::all(0)); - test_fn_(sum, keypoints, descriptors); -} - -} // namespace cv diff --git a/modules/features2d/src/descriptors.cpp b/modules/features2d/src/descriptors.cpp index c453190624..23d9fbbc9b 100644 --- a/modules/features2d/src/descriptors.cpp +++ b/modules/features2d/src/descriptors.cpp @@ -98,13 +98,6 @@ void DescriptorExtractor::removeBorderKeypoints( std::vector& keypoint Ptr DescriptorExtractor::create(const String& descriptorExtractorType) { - if( descriptorExtractorType.find("Opponent") == 0 ) - { - size_t pos = String("Opponent").size(); - String type = descriptorExtractorType.substr(pos); - return makePtr(DescriptorExtractor::create(type)); - } - return Algorithm::create("Feature2D." + descriptorExtractorType); } @@ -114,151 +107,4 @@ CV_WRAP void Feature2D::compute( InputArray image, CV_OUT CV_IN_OUT std::vector< DescriptorExtractor::compute(image, keypoints, descriptors); } -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -/****************************************************************************************\ -* OpponentColorDescriptorExtractor * -\****************************************************************************************/ -OpponentColorDescriptorExtractor::OpponentColorDescriptorExtractor( const Ptr& _descriptorExtractor ) : - descriptorExtractor(_descriptorExtractor) -{ - CV_Assert( descriptorExtractor ); -} - -static void convertBGRImageToOpponentColorSpace( const Mat& bgrImage, std::vector& opponentChannels ) -{ - if( bgrImage.type() != CV_8UC3 ) - CV_Error( Error::StsBadArg, "input image must be an BGR image of type CV_8UC3" ); - - // Prepare opponent color space storage matrices. - opponentChannels.resize( 3 ); - opponentChannels[0] = cv::Mat(bgrImage.size(), CV_8UC1); // R-G RED-GREEN - opponentChannels[1] = cv::Mat(bgrImage.size(), CV_8UC1); // R+G-2B YELLOW-BLUE - opponentChannels[2] = cv::Mat(bgrImage.size(), CV_8UC1); // R+G+B - - for(int y = 0; y < bgrImage.rows; ++y) - for(int x = 0; x < bgrImage.cols; ++x) - { - Vec3b v = bgrImage.at(y, x); - uchar& b = v[0]; - uchar& g = v[1]; - uchar& r = v[2]; - - opponentChannels[0].at(y, x) = saturate_cast(0.5f * (255 + g - r)); // (R - G)/sqrt(2), but converted to the destination data type - opponentChannels[1].at(y, x) = saturate_cast(0.25f * (510 + r + g - 2*b)); // (R + G - 2B)/sqrt(6), but converted to the destination data type - opponentChannels[2].at(y, x) = saturate_cast(1.f/3.f * (r + g + b)); // (R + G + B)/sqrt(3), but converted to the destination data type - } -} - -struct KP_LessThan -{ - KP_LessThan(const std::vector& _kp) : kp(&_kp) {} - bool operator()(int i, int j) const - { - return (*kp)[i].class_id < (*kp)[j].class_id; - } - const std::vector* kp; -}; - -void OpponentColorDescriptorExtractor::computeImpl( InputArray _bgrImage, std::vector& keypoints, OutputArray descriptors ) const -{ - Mat bgrImage = _bgrImage.getMat(); - std::vector opponentChannels; - convertBGRImageToOpponentColorSpace( bgrImage, opponentChannels ); - - const int N = 3; // channels count - std::vector channelKeypoints[N]; - Mat channelDescriptors[N]; - std::vector idxs[N]; - - // Compute descriptors three times, once for each Opponent channel to concatenate into a single color descriptor - int maxKeypointsCount = 0; - for( int ci = 0; ci < N; ci++ ) - { - channelKeypoints[ci].insert( channelKeypoints[ci].begin(), keypoints.begin(), keypoints.end() ); - // Use class_id member to get indices into initial keypoints vector - for( size_t ki = 0; ki < channelKeypoints[ci].size(); ki++ ) - channelKeypoints[ci][ki].class_id = (int)ki; - - descriptorExtractor->compute( opponentChannels[ci], channelKeypoints[ci], channelDescriptors[ci] ); - idxs[ci].resize( channelKeypoints[ci].size() ); - for( size_t ki = 0; ki < channelKeypoints[ci].size(); ki++ ) - { - idxs[ci][ki] = (int)ki; - } - std::sort( idxs[ci].begin(), idxs[ci].end(), KP_LessThan(channelKeypoints[ci]) ); - maxKeypointsCount = std::max( maxKeypointsCount, (int)channelKeypoints[ci].size()); - } - - std::vector outKeypoints; - outKeypoints.reserve( keypoints.size() ); - - int dSize = descriptorExtractor->descriptorSize(); - Mat mergedDescriptors( maxKeypointsCount, 3*dSize, descriptorExtractor->descriptorType() ); - int mergedCount = 0; - // cp - current channel position - size_t cp[] = {0, 0, 0}; - while( cp[0] < channelKeypoints[0].size() && - cp[1] < channelKeypoints[1].size() && - cp[2] < channelKeypoints[2].size() ) - { - const int maxInitIdx = std::max( 0, std::max( channelKeypoints[0][idxs[0][cp[0]]].class_id, - std::max( channelKeypoints[1][idxs[1][cp[1]]].class_id, - channelKeypoints[2][idxs[2][cp[2]]].class_id ) ) ); - - while( channelKeypoints[0][idxs[0][cp[0]]].class_id < maxInitIdx && cp[0] < channelKeypoints[0].size() ) { cp[0]++; } - while( channelKeypoints[1][idxs[1][cp[1]]].class_id < maxInitIdx && cp[1] < channelKeypoints[1].size() ) { cp[1]++; } - while( channelKeypoints[2][idxs[2][cp[2]]].class_id < maxInitIdx && cp[2] < channelKeypoints[2].size() ) { cp[2]++; } - if( cp[0] >= channelKeypoints[0].size() || cp[1] >= channelKeypoints[1].size() || cp[2] >= channelKeypoints[2].size() ) - break; - - if( channelKeypoints[0][idxs[0][cp[0]]].class_id == maxInitIdx && - channelKeypoints[1][idxs[1][cp[1]]].class_id == maxInitIdx && - channelKeypoints[2][idxs[2][cp[2]]].class_id == maxInitIdx ) - { - outKeypoints.push_back( keypoints[maxInitIdx] ); - // merge descriptors - for( int ci = 0; ci < N; ci++ ) - { - Mat dst = mergedDescriptors(Range(mergedCount, mergedCount+1), Range(ci*dSize, (ci+1)*dSize)); - channelDescriptors[ci].row( idxs[ci][cp[ci]] ).copyTo( dst ); - cp[ci]++; - } - mergedCount++; - } - } - mergedDescriptors.rowRange(0, mergedCount).copyTo( descriptors ); - std::swap( outKeypoints, keypoints ); -} - -void OpponentColorDescriptorExtractor::read( const FileNode& fn ) -{ - descriptorExtractor->read(fn); -} - -void OpponentColorDescriptorExtractor::write( FileStorage& fs ) const -{ - descriptorExtractor->write(fs); -} - -int OpponentColorDescriptorExtractor::descriptorSize() const -{ - return 3*descriptorExtractor->descriptorSize(); -} - -int OpponentColorDescriptorExtractor::descriptorType() const -{ - return descriptorExtractor->descriptorType(); -} - -int OpponentColorDescriptorExtractor::defaultNorm() const -{ - return descriptorExtractor->defaultNorm(); -} - -bool OpponentColorDescriptorExtractor::empty() const -{ - return !descriptorExtractor || descriptorExtractor->empty(); -} - } diff --git a/modules/features2d/src/detectors.cpp b/modules/features2d/src/detectors.cpp index d3c1f3f200..866d24d106 100644 --- a/modules/features2d/src/detectors.cpp +++ b/modules/features2d/src/detectors.cpp @@ -106,24 +106,6 @@ void FeatureDetector::removeInvalidPoints( const Mat& mask, std::vector FeatureDetector::create( const String& detectorType ) { - if( detectorType.find("Grid") == 0 ) - { - return makePtr(FeatureDetector::create( - detectorType.substr(strlen("Grid")))); - } - - if( detectorType.find("Pyramid") == 0 ) - { - return makePtr(FeatureDetector::create( - detectorType.substr(strlen("Pyramid")))); - } - - if( detectorType.find("Dynamic") == 0 ) - { - return makePtr(AdjusterAdapter::create( - detectorType.substr(strlen("Dynamic")))); - } - if( detectorType.compare( "HARRIS" ) == 0 ) { Ptr fd = FeatureDetector::create("GFTT"); @@ -176,212 +158,4 @@ void GFTTDetector::detectImpl( InputArray _image, std::vector& keypoin } -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -/* - * DenseFeatureDetector - */ -DenseFeatureDetector::DenseFeatureDetector( float _initFeatureScale, int _featureScaleLevels, - float _featureScaleMul, int _initXyStep, - int _initImgBound, bool _varyXyStepWithScale, - bool _varyImgBoundWithScale ) : - initFeatureScale(_initFeatureScale), featureScaleLevels(_featureScaleLevels), - featureScaleMul(_featureScaleMul), initXyStep(_initXyStep), initImgBound(_initImgBound), - varyXyStepWithScale(_varyXyStepWithScale), varyImgBoundWithScale(_varyImgBoundWithScale) -{} - - -void DenseFeatureDetector::detectImpl( InputArray _image, std::vector& keypoints, InputArray _mask ) const -{ - Mat image = _image.getMat(), mask = _mask.getMat(); - - float curScale = static_cast(initFeatureScale); - int curStep = initXyStep; - int curBound = initImgBound; - for( int curLevel = 0; curLevel < featureScaleLevels; curLevel++ ) - { - for( int x = curBound; x < image.cols - curBound; x += curStep ) - { - for( int y = curBound; y < image.rows - curBound; y += curStep ) - { - keypoints.push_back( KeyPoint(static_cast(x), static_cast(y), curScale) ); - } - } - - curScale = static_cast(curScale * featureScaleMul); - if( varyXyStepWithScale ) curStep = static_cast( curStep * featureScaleMul + 0.5f ); - if( varyImgBoundWithScale ) curBound = static_cast( curBound * featureScaleMul + 0.5f ); - } - - KeyPointsFilter::runByPixelsMask( keypoints, mask ); -} - -/* - * GridAdaptedFeatureDetector - */ -GridAdaptedFeatureDetector::GridAdaptedFeatureDetector( const Ptr& _detector, - int _maxTotalKeypoints, int _gridRows, int _gridCols ) - : detector(_detector), maxTotalKeypoints(_maxTotalKeypoints), gridRows(_gridRows), gridCols(_gridCols) -{} - -bool GridAdaptedFeatureDetector::empty() const -{ - return !detector || detector->empty(); -} - -struct ResponseComparator -{ - bool operator() (const KeyPoint& a, const KeyPoint& b) - { - return std::abs(a.response) > std::abs(b.response); - } -}; - -static void keepStrongest( int N, std::vector& keypoints ) -{ - if( (int)keypoints.size() > N ) - { - std::vector::iterator nth = keypoints.begin() + N; - std::nth_element( keypoints.begin(), nth, keypoints.end(), ResponseComparator() ); - keypoints.erase( nth, keypoints.end() ); - } -} - -namespace { -class GridAdaptedFeatureDetectorInvoker : public ParallelLoopBody -{ -private: - int gridRows_, gridCols_; - int maxPerCell_; - std::vector& keypoints_; - const Mat& image_; - const Mat& mask_; - const Ptr& detector_; - Mutex* kptLock_; - - GridAdaptedFeatureDetectorInvoker& operator=(const GridAdaptedFeatureDetectorInvoker&); // to quiet MSVC - -public: - - GridAdaptedFeatureDetectorInvoker(const Ptr& detector, const Mat& image, const Mat& mask, - std::vector& keypoints, int maxPerCell, int gridRows, int gridCols, - cv::Mutex* kptLock) - : gridRows_(gridRows), gridCols_(gridCols), maxPerCell_(maxPerCell), - keypoints_(keypoints), image_(image), mask_(mask), detector_(detector), - kptLock_(kptLock) - { - } - - void operator() (const Range& range) const - { - for (int i = range.start; i < range.end; ++i) - { - int celly = i / gridCols_; - int cellx = i - celly * gridCols_; - - Range row_range((celly*image_.rows)/gridRows_, ((celly+1)*image_.rows)/gridRows_); - Range col_range((cellx*image_.cols)/gridCols_, ((cellx+1)*image_.cols)/gridCols_); - - Mat sub_image = image_(row_range, col_range); - Mat sub_mask; - if (!mask_.empty()) sub_mask = mask_(row_range, col_range); - - std::vector sub_keypoints; - sub_keypoints.reserve(maxPerCell_); - - detector_->detect( sub_image, sub_keypoints, sub_mask ); - keepStrongest( maxPerCell_, sub_keypoints ); - - std::vector::iterator it = sub_keypoints.begin(), - end = sub_keypoints.end(); - for( ; it != end; ++it ) - { - it->pt.x += col_range.start; - it->pt.y += row_range.start; - } - - cv::AutoLock join_keypoints(*kptLock_); - keypoints_.insert( keypoints_.end(), sub_keypoints.begin(), sub_keypoints.end() ); - } - } -}; -} // namepace - -void GridAdaptedFeatureDetector::detectImpl( InputArray _image, std::vector& keypoints, InputArray _mask ) const -{ - if (_image.empty() || maxTotalKeypoints < gridRows * gridCols) - { - keypoints.clear(); - return; - } - keypoints.reserve(maxTotalKeypoints); - int maxPerCell = maxTotalKeypoints / (gridRows * gridCols); - - Mat image = _image.getMat(), mask = _mask.getMat(); - - cv::Mutex kptLock; - cv::parallel_for_(cv::Range(0, gridRows * gridCols), - GridAdaptedFeatureDetectorInvoker(detector, image, mask, keypoints, maxPerCell, gridRows, gridCols, &kptLock)); -} - -/* - * PyramidAdaptedFeatureDetector - */ -PyramidAdaptedFeatureDetector::PyramidAdaptedFeatureDetector( const Ptr& _detector, int _maxLevel ) - : detector(_detector), maxLevel(_maxLevel) -{} - -bool PyramidAdaptedFeatureDetector::empty() const -{ - return !detector || detector->empty(); -} - -void PyramidAdaptedFeatureDetector::detectImpl( InputArray _image, std::vector& keypoints, InputArray _mask ) const -{ - Mat image = _image.getMat(), mask = _mask.getMat(); - Mat src = image; - Mat src_mask = mask; - - Mat dilated_mask; - if( !mask.empty() ) - { - dilate( mask, dilated_mask, Mat() ); - Mat mask255( mask.size(), CV_8UC1, Scalar(0) ); - mask255.setTo( Scalar(255), dilated_mask != 0 ); - dilated_mask = mask255; - } - - for( int l = 0, multiplier = 1; l <= maxLevel; ++l, multiplier *= 2 ) - { - // Detect on current level of the pyramid - std::vector new_pts; - detector->detect( src, new_pts, src_mask ); - std::vector::iterator it = new_pts.begin(), - end = new_pts.end(); - for( ; it != end; ++it) - { - it->pt.x *= multiplier; - it->pt.y *= multiplier; - it->size *= multiplier; - it->octave = l; - } - keypoints.insert( keypoints.end(), new_pts.begin(), new_pts.end() ); - - // Downsample - if( l < maxLevel ) - { - Mat dst; - pyrDown( src, dst ); - src = dst; - - if( !mask.empty() ) - resize( dilated_mask, src_mask, src.size(), 0, 0, INTER_AREA ); - } - } - - if( !mask.empty() ) - KeyPointsFilter::runByPixelsMask( keypoints, mask ); -} - - } diff --git a/modules/features2d/src/dynamic.cpp b/modules/features2d/src/dynamic.cpp index 560005fba0..1806a273fd 100644 --- a/modules/features2d/src/dynamic.cpp +++ b/modules/features2d/src/dynamic.cpp @@ -44,181 +44,4 @@ namespace cv { -DynamicAdaptedFeatureDetector::DynamicAdaptedFeatureDetector(const Ptr& a, - int min_features, int max_features, int max_iters ) : - escape_iters_(max_iters), min_features_(min_features), max_features_(max_features), adjuster_(a) -{} - -bool DynamicAdaptedFeatureDetector::empty() const -{ - return !adjuster_ || adjuster_->empty(); -} - -void DynamicAdaptedFeatureDetector::detectImpl(InputArray _image, std::vector& keypoints, InputArray _mask) const -{ - Mat image = _image.getMat(), mask = _mask.getMat(); - - //for oscillation testing - bool down = false; - bool up = false; - - //flag for whether the correct threshhold has been reached - bool thresh_good = false; - - Ptr adjuster = adjuster_->clone(); - - //break if the desired number hasn't been reached. - int iter_count = escape_iters_; - - while( iter_count > 0 && !(down && up) && !thresh_good && adjuster->good() ) - { - keypoints.clear(); - - //the adjuster takes care of calling the detector with updated parameters - adjuster->detect(image, keypoints,mask); - - if( int(keypoints.size()) < min_features_ ) - { - down = true; - adjuster->tooFew(min_features_, (int)keypoints.size()); - } - else if( int(keypoints.size()) > max_features_ ) - { - up = true; - adjuster->tooMany(max_features_, (int)keypoints.size()); - } - else - thresh_good = true; - - iter_count--; - } - -} - -FastAdjuster::FastAdjuster( int init_thresh, bool nonmax, int min_thresh, int max_thresh ) : - thresh_(init_thresh), nonmax_(nonmax), init_thresh_(init_thresh), - min_thresh_(min_thresh), max_thresh_(max_thresh) -{} - -void FastAdjuster::detectImpl(InputArray image, std::vector& keypoints, InputArray mask) const -{ - FastFeatureDetector(thresh_, nonmax_).detect(image, keypoints, mask); -} - -void FastAdjuster::tooFew(int, int) -{ - //fast is easy to adjust - thresh_--; -} - -void FastAdjuster::tooMany(int, int) -{ - //fast is easy to adjust - thresh_++; -} - -//return whether or not the threshhold is beyond -//a useful point -bool FastAdjuster::good() const -{ - return (thresh_ > min_thresh_) && (thresh_ < max_thresh_); -} - -Ptr FastAdjuster::clone() const -{ - Ptr cloned_obj(new FastAdjuster( init_thresh_, nonmax_, min_thresh_, max_thresh_ )); - return cloned_obj; -} - -StarAdjuster::StarAdjuster(double initial_thresh, double min_thresh, double max_thresh) : - thresh_(initial_thresh), init_thresh_(initial_thresh), - min_thresh_(min_thresh), max_thresh_(max_thresh) -{} - -void StarAdjuster::detectImpl(InputArray image, std::vector& keypoints, InputArray mask) const -{ - StarFeatureDetector detector_tmp(16, cvRound(thresh_), 10, 8, 3); - detector_tmp.detect(image, keypoints, mask); -} - -void StarAdjuster::tooFew(int, int) -{ - thresh_ *= 0.9; - if (thresh_ < 1.1) - thresh_ = 1.1; -} - -void StarAdjuster::tooMany(int, int) -{ - thresh_ *= 1.1; -} - -bool StarAdjuster::good() const -{ - return (thresh_ > min_thresh_) && (thresh_ < max_thresh_); -} - -Ptr StarAdjuster::clone() const -{ - Ptr cloned_obj(new StarAdjuster( init_thresh_, min_thresh_, max_thresh_ )); - return cloned_obj; -} - -SurfAdjuster::SurfAdjuster( double initial_thresh, double min_thresh, double max_thresh ) : - thresh_(initial_thresh), init_thresh_(initial_thresh), - min_thresh_(min_thresh), max_thresh_(max_thresh) -{} - -void SurfAdjuster::detectImpl(InputArray image, std::vector& keypoints, InputArray mask) const -{ - Ptr surf = FeatureDetector::create("SURF"); - surf->set("hessianThreshold", thresh_); - surf->detect(image, keypoints, mask); -} - -void SurfAdjuster::tooFew(int, int) -{ - thresh_ *= 0.9; - if (thresh_ < 1.1) - thresh_ = 1.1; -} - -void SurfAdjuster::tooMany(int, int) -{ - thresh_ *= 1.1; -} - -//return whether or not the threshhold is beyond -//a useful point -bool SurfAdjuster::good() const -{ - return (thresh_ > min_thresh_) && (thresh_ < max_thresh_); -} - -Ptr SurfAdjuster::clone() const -{ - Ptr cloned_obj(new SurfAdjuster( init_thresh_, min_thresh_, max_thresh_ )); - return cloned_obj; -} - -Ptr AdjusterAdapter::create( const String& detectorType ) -{ - Ptr adapter; - - if( !detectorType.compare( "FAST" ) ) - { - adapter = makePtr(); - } - else if( !detectorType.compare( "STAR" ) ) - { - adapter = makePtr(); - } - else if( !detectorType.compare( "SURF" ) ) - { - adapter = makePtr(); - } - - return adapter; -} - } diff --git a/modules/features2d/src/evaluation.cpp b/modules/features2d/src/evaluation.cpp index 2afc57bd3e..3863203df7 100644 --- a/modules/features2d/src/evaluation.cpp +++ b/modules/features2d/src/evaluation.cpp @@ -556,56 +556,3 @@ int cv::getNearestPoint( const std::vector& recallPrecisionCurve, float return nearestPointIndex; } - -void cv::evaluateGenericDescriptorMatcher( const Mat& img1, const Mat& img2, const Mat& H1to2, - std::vector& keypoints1, std::vector& keypoints2, - std::vector >* _matches1to2, std::vector >* _correctMatches1to2Mask, - std::vector& recallPrecisionCurve, - const Ptr& _dmatcher ) -{ - Ptr dmatcher = _dmatcher; - dmatcher->clear(); - - std::vector > *matches1to2, buf1; - matches1to2 = _matches1to2 != 0 ? _matches1to2 : &buf1; - - std::vector > *correctMatches1to2Mask, buf2; - correctMatches1to2Mask = _correctMatches1to2Mask != 0 ? _correctMatches1to2Mask : &buf2; - - if( keypoints1.empty() ) - CV_Error( Error::StsBadArg, "keypoints1 must not be empty" ); - - if( matches1to2->empty() && !dmatcher ) - CV_Error( Error::StsBadArg, "dmatch must not be empty when matches1to2 is empty" ); - - bool computeKeypoints2ByPrj = keypoints2.empty(); - if( computeKeypoints2ByPrj ) - { - CV_Error(Error::StsNotImplemented, ""); - // TODO: add computing keypoints2 from keypoints1 using H1to2 - } - - if( matches1to2->empty() || computeKeypoints2ByPrj ) - { - dmatcher->clear(); - dmatcher->radiusMatch( img1, keypoints1, img2, keypoints2, *matches1to2, std::numeric_limits::max() ); - } - float repeatability; - int correspCount; - Mat thresholdedOverlapMask; // thresholded allOverlapErrors - calculateRepeatability( img1, img2, H1to2, keypoints1, keypoints2, repeatability, correspCount, &thresholdedOverlapMask ); - - correctMatches1to2Mask->resize(matches1to2->size()); - for( size_t i = 0; i < matches1to2->size(); i++ ) - { - (*correctMatches1to2Mask)[i].resize((*matches1to2)[i].size()); - for( size_t j = 0;j < (*matches1to2)[i].size(); j++ ) - { - int indexQuery = (*matches1to2)[i][j].queryIdx; - int indexTrain = (*matches1to2)[i][j].trainIdx; - (*correctMatches1to2Mask)[i][j] = thresholdedOverlapMask.at( indexQuery, indexTrain ); - } - } - - computeRecallPrecisionCurve( *matches1to2, *correctMatches1to2Mask, recallPrecisionCurve ); -} diff --git a/modules/features2d/src/features2d_init.cpp b/modules/features2d/src/features2d_init.cpp index eb7145697b..470cb3c54e 100644 --- a/modules/features2d/src/features2d_init.cpp +++ b/modules/features2d/src/features2d_init.cpp @@ -62,24 +62,11 @@ CV_INIT_ALGORITHM(BRISK, "Feature2D.BRISK", /////////////////////////////////////////////////////////////////////////////////////////////////////////// -CV_INIT_ALGORITHM(BriefDescriptorExtractor, "Feature2D.BRIEF", - obj.info()->addParam(obj, "bytes", obj.bytes_)) - -/////////////////////////////////////////////////////////////////////////////////////////////////////////// - CV_INIT_ALGORITHM(FastFeatureDetector, "Feature2D.FAST", obj.info()->addParam(obj, "threshold", obj.threshold); obj.info()->addParam(obj, "nonmaxSuppression", obj.nonmaxSuppression); obj.info()->addParam(obj, "type", obj.type)) -/////////////////////////////////////////////////////////////////////////////////////////////////////////// - -CV_INIT_ALGORITHM(StarDetector, "Feature2D.STAR", - obj.info()->addParam(obj, "maxSize", obj.maxSize); - obj.info()->addParam(obj, "responseThreshold", obj.responseThreshold); - obj.info()->addParam(obj, "lineThresholdProjected", obj.lineThresholdProjected); - obj.info()->addParam(obj, "lineThresholdBinarized", obj.lineThresholdBinarized); - obj.info()->addParam(obj, "suppressNonmaxSize", obj.suppressNonmaxSize)) /////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -108,14 +95,6 @@ CV_INIT_ALGORITHM(ORB, "Feature2D.ORB", /////////////////////////////////////////////////////////////////////////////////////////////////////////// -CV_INIT_ALGORITHM(FREAK, "Feature2D.FREAK", - obj.info()->addParam(obj, "orientationNormalized", obj.orientationNormalized); - obj.info()->addParam(obj, "scaleNormalized", obj.scaleNormalized); - obj.info()->addParam(obj, "patternScale", obj.patternScale); - obj.info()->addParam(obj, "nbOctave", obj.nOctaves)) - -/////////////////////////////////////////////////////////////////////////////////////////////////////////// - CV_INIT_ALGORITHM(GFTTDetector, "Feature2D.GFTT", obj.info()->addParam(obj, "nfeatures", obj.nfeatures); obj.info()->addParam(obj, "qualityLevel", obj.qualityLevel); @@ -181,23 +160,6 @@ CV_INIT_ALGORITHM(HarrisDetector, "Feature2D.HARRIS", //////////////////////////////////////////////////////////////////////////////////////////////////////////// -CV_INIT_ALGORITHM(DenseFeatureDetector, "Feature2D.Dense", - obj.info()->addParam(obj, "initFeatureScale", obj.initFeatureScale); - obj.info()->addParam(obj, "featureScaleLevels", obj.featureScaleLevels); - obj.info()->addParam(obj, "featureScaleMul", obj.featureScaleMul); - obj.info()->addParam(obj, "initXyStep", obj.initXyStep); - obj.info()->addParam(obj, "initImgBound", obj.initImgBound); - obj.info()->addParam(obj, "varyXyStepWithScale", obj.varyXyStepWithScale); - obj.info()->addParam(obj, "varyImgBoundWithScale", obj.varyImgBoundWithScale)) - -CV_INIT_ALGORITHM(GridAdaptedFeatureDetector, "Feature2D.Grid", - obj.info()->addParam(obj, "detector", obj.detector, false, 0, 0); // Extra params added to avoid VS2013 fatal error in opencv2/core.hpp (decl. of addParam) - obj.info()->addParam(obj, "maxTotalKeypoints", obj.maxTotalKeypoints); - obj.info()->addParam(obj, "gridRows", obj.gridRows); - obj.info()->addParam(obj, "gridCols", obj.gridCols)) - -//////////////////////////////////////////////////////////////////////////////////////////////////////////// - CV_INIT_ALGORITHM(BFMatcher, "DescriptorMatcher.BFMatcher", obj.info()->addParam(obj, "normType", obj.normType); obj.info()->addParam(obj, "crossCheck", obj.crossCheck)) @@ -209,19 +171,14 @@ CV_INIT_ALGORITHM(FlannBasedMatcher, "DescriptorMatcher.FlannBasedMatcher",) bool cv::initModule_features2d(void) { bool all = true; - all &= !BriefDescriptorExtractor_info_auto.name().empty(); all &= !BRISK_info_auto.name().empty(); all &= !FastFeatureDetector_info_auto.name().empty(); - all &= !StarDetector_info_auto.name().empty(); all &= !MSER_info_auto.name().empty(); - all &= !FREAK_info_auto.name().empty(); all &= !ORB_info_auto.name().empty(); all &= !GFTTDetector_info_auto.name().empty(); all &= !KAZE_info_auto.name().empty(); all &= !AKAZE_info_auto.name().empty(); - all &= !HarrisDetector_info_auto.name().empty(); - all &= !DenseFeatureDetector_info_auto.name().empty(); - all &= !GridAdaptedFeatureDetector_info_auto.name().empty(); + all &= !HarrisDetector_info_auto.name().empty(); all &= !BFMatcher_info_auto.name().empty(); all &= !FlannBasedMatcher_info_auto.name().empty(); diff --git a/modules/features2d/src/freak.cpp b/modules/features2d/src/freak.cpp deleted file mode 100644 index 58c1fe11e2..0000000000 --- a/modules/features2d/src/freak.cpp +++ /dev/null @@ -1,733 +0,0 @@ -// freak.cpp -// -// Copyright (C) 2011-2012 Signal processing laboratory 2, EPFL, -// Kirell Benzi (kirell.benzi@epfl.ch), -// Raphael Ortiz (raphael.ortiz@a3.epfl.ch) -// Alexandre Alahi (alexandre.alahi@epfl.ch) -// and Pierre Vandergheynst (pierre.vandergheynst@epfl.ch) -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. - -#include "precomp.hpp" -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace cv -{ - -static const double FREAK_SQRT2 = 1.4142135623731; -static const double FREAK_LOG2 = 0.693147180559945; -static const int FREAK_NB_ORIENTATION = 256; -static const int FREAK_NB_POINTS = 43; -static const int FREAK_SMALLEST_KP_SIZE = 7; // smallest size of keypoints -static const int FREAK_NB_SCALES = FREAK::NB_SCALES; -static const int FREAK_NB_PAIRS = FREAK::NB_PAIRS; -static const int FREAK_NB_ORIENPAIRS = FREAK::NB_ORIENPAIRS; - -// default pairs -static const int FREAK_DEF_PAIRS[FREAK::NB_PAIRS] = -{ - 404,431,818,511,181,52,311,874,774,543,719,230,417,205,11, - 560,149,265,39,306,165,857,250,8,61,15,55,717,44,412, - 592,134,761,695,660,782,625,487,549,516,271,665,762,392,178, - 796,773,31,672,845,548,794,677,654,241,831,225,238,849,83, - 691,484,826,707,122,517,583,731,328,339,571,475,394,472,580, - 381,137,93,380,327,619,729,808,218,213,459,141,806,341,95, - 382,568,124,750,193,749,706,843,79,199,317,329,768,198,100, - 466,613,78,562,783,689,136,838,94,142,164,679,219,419,366, - 418,423,77,89,523,259,683,312,555,20,470,684,123,458,453,833, - 72,113,253,108,313,25,153,648,411,607,618,128,305,232,301,84, - 56,264,371,46,407,360,38,99,176,710,114,578,66,372,653, - 129,359,424,159,821,10,323,393,5,340,891,9,790,47,0,175,346, - 236,26,172,147,574,561,32,294,429,724,755,398,787,288,299, - 769,565,767,722,757,224,465,723,498,467,235,127,802,446,233, - 544,482,800,318,16,532,801,441,554,173,60,530,713,469,30, - 212,630,899,170,266,799,88,49,512,399,23,500,107,524,90, - 194,143,135,192,206,345,148,71,119,101,563,870,158,254,214, - 276,464,332,725,188,385,24,476,40,231,620,171,258,67,109, - 844,244,187,388,701,690,50,7,850,479,48,522,22,154,12,659, - 736,655,577,737,830,811,174,21,237,335,353,234,53,270,62, - 182,45,177,245,812,673,355,556,612,166,204,54,248,365,226, - 242,452,700,685,573,14,842,481,468,781,564,416,179,405,35, - 819,608,624,367,98,643,448,2,460,676,440,240,130,146,184, - 185,430,65,807,377,82,121,708,239,310,138,596,730,575,477, - 851,797,247,27,85,586,307,779,326,494,856,324,827,96,748, - 13,397,125,688,702,92,293,716,277,140,112,4,80,855,839,1, - 413,347,584,493,289,696,19,751,379,76,73,115,6,590,183,734, - 197,483,217,344,330,400,186,243,587,220,780,200,793,246,824, - 41,735,579,81,703,322,760,720,139,480,490,91,814,813,163, - 152,488,763,263,425,410,576,120,319,668,150,160,302,491,515, - 260,145,428,97,251,395,272,252,18,106,358,854,485,144,550, - 131,133,378,68,102,104,58,361,275,209,697,582,338,742,589, - 325,408,229,28,304,191,189,110,126,486,211,547,533,70,215, - 670,249,36,581,389,605,331,518,442,822 -}; - -// used to sort pairs during pairs selection -struct PairStat -{ - double mean; - int idx; -}; - -struct sortMean -{ - bool operator()( const PairStat& a, const PairStat& b ) const - { - return a.mean < b.mean; - } -}; - -void FREAK::buildPattern() -{ - if( patternScale == patternScale0 && nOctaves == nOctaves0 && !patternLookup.empty() ) - return; - - nOctaves0 = nOctaves; - patternScale0 = patternScale; - - patternLookup.resize(FREAK_NB_SCALES*FREAK_NB_ORIENTATION*FREAK_NB_POINTS); - double scaleStep = std::pow(2.0, (double)(nOctaves)/FREAK_NB_SCALES ); // 2 ^ ( (nOctaves-1) /nbScales) - double scalingFactor, alpha, beta, theta = 0; - - // pattern definition, radius normalized to 1.0 (outer point position+sigma=1.0) - const int n[8] = {6,6,6,6,6,6,6,1}; // number of points on each concentric circle (from outer to inner) - const double bigR(2.0/3.0); // bigger radius - const double smallR(2.0/24.0); // smaller radius - const double unitSpace( (bigR-smallR)/21.0 ); // define spaces between concentric circles (from center to outer: 1,2,3,4,5,6) - // radii of the concentric cirles (from outer to inner) - const double radius[8] = {bigR, bigR-6*unitSpace, bigR-11*unitSpace, bigR-15*unitSpace, bigR-18*unitSpace, bigR-20*unitSpace, smallR, 0.0}; - // sigma of pattern points (each group of 6 points on a concentric cirle has the same sigma) - const double sigma[8] = {radius[0]/2.0, radius[1]/2.0, radius[2]/2.0, - radius[3]/2.0, radius[4]/2.0, radius[5]/2.0, - radius[6]/2.0, radius[6]/2.0 - }; - // fill the lookup table - for( int scaleIdx=0; scaleIdx < FREAK_NB_SCALES; ++scaleIdx ) - { - patternSizes[scaleIdx] = 0; // proper initialization - scalingFactor = std::pow(scaleStep,scaleIdx); //scale of the pattern, scaleStep ^ scaleIdx - - for( int orientationIdx = 0; orientationIdx < FREAK_NB_ORIENTATION; ++orientationIdx ) - { - theta = double(orientationIdx)* 2*CV_PI/double(FREAK_NB_ORIENTATION); // orientation of the pattern - int pointIdx = 0; - - PatternPoint* patternLookupPtr = &patternLookup[0]; - for( size_t i = 0; i < 8; ++i ) - { - for( int k = 0 ; k < n[i]; ++k ) - { - beta = CV_PI/n[i] * (i%2); // orientation offset so that groups of points on each circles are staggered - alpha = double(k)* 2*CV_PI/double(n[i])+beta+theta; - - // add the point to the look-up table - PatternPoint& point = patternLookupPtr[ scaleIdx*FREAK_NB_ORIENTATION*FREAK_NB_POINTS+orientationIdx*FREAK_NB_POINTS+pointIdx ]; - point.x = static_cast(radius[i] * cos(alpha) * scalingFactor * patternScale); - point.y = static_cast(radius[i] * sin(alpha) * scalingFactor * patternScale); - point.sigma = static_cast(sigma[i] * scalingFactor * patternScale); - - // adapt the sizeList if necessary - const int sizeMax = static_cast(ceil((radius[i]+sigma[i])*scalingFactor*patternScale)) + 1; - if( patternSizes[scaleIdx] < sizeMax ) - patternSizes[scaleIdx] = sizeMax; - - ++pointIdx; - } - } - } - } - - // build the list of orientation pairs - orientationPairs[0].i=0; orientationPairs[0].j=3; orientationPairs[1].i=1; orientationPairs[1].j=4; orientationPairs[2].i=2; orientationPairs[2].j=5; - orientationPairs[3].i=0; orientationPairs[3].j=2; orientationPairs[4].i=1; orientationPairs[4].j=3; orientationPairs[5].i=2; orientationPairs[5].j=4; - orientationPairs[6].i=3; orientationPairs[6].j=5; orientationPairs[7].i=4; orientationPairs[7].j=0; orientationPairs[8].i=5; orientationPairs[8].j=1; - - orientationPairs[9].i=6; orientationPairs[9].j=9; orientationPairs[10].i=7; orientationPairs[10].j=10; orientationPairs[11].i=8; orientationPairs[11].j=11; - orientationPairs[12].i=6; orientationPairs[12].j=8; orientationPairs[13].i=7; orientationPairs[13].j=9; orientationPairs[14].i=8; orientationPairs[14].j=10; - orientationPairs[15].i=9; orientationPairs[15].j=11; orientationPairs[16].i=10; orientationPairs[16].j=6; orientationPairs[17].i=11; orientationPairs[17].j=7; - - orientationPairs[18].i=12; orientationPairs[18].j=15; orientationPairs[19].i=13; orientationPairs[19].j=16; orientationPairs[20].i=14; orientationPairs[20].j=17; - orientationPairs[21].i=12; orientationPairs[21].j=14; orientationPairs[22].i=13; orientationPairs[22].j=15; orientationPairs[23].i=14; orientationPairs[23].j=16; - orientationPairs[24].i=15; orientationPairs[24].j=17; orientationPairs[25].i=16; orientationPairs[25].j=12; orientationPairs[26].i=17; orientationPairs[26].j=13; - - orientationPairs[27].i=18; orientationPairs[27].j=21; orientationPairs[28].i=19; orientationPairs[28].j=22; orientationPairs[29].i=20; orientationPairs[29].j=23; - orientationPairs[30].i=18; orientationPairs[30].j=20; orientationPairs[31].i=19; orientationPairs[31].j=21; orientationPairs[32].i=20; orientationPairs[32].j=22; - orientationPairs[33].i=21; orientationPairs[33].j=23; orientationPairs[34].i=22; orientationPairs[34].j=18; orientationPairs[35].i=23; orientationPairs[35].j=19; - - orientationPairs[36].i=24; orientationPairs[36].j=27; orientationPairs[37].i=25; orientationPairs[37].j=28; orientationPairs[38].i=26; orientationPairs[38].j=29; - orientationPairs[39].i=30; orientationPairs[39].j=33; orientationPairs[40].i=31; orientationPairs[40].j=34; orientationPairs[41].i=32; orientationPairs[41].j=35; - orientationPairs[42].i=36; orientationPairs[42].j=39; orientationPairs[43].i=37; orientationPairs[43].j=40; orientationPairs[44].i=38; orientationPairs[44].j=41; - - for( unsigned m = FREAK_NB_ORIENPAIRS; m--; ) - { - const float dx = patternLookup[orientationPairs[m].i].x-patternLookup[orientationPairs[m].j].x; - const float dy = patternLookup[orientationPairs[m].i].y-patternLookup[orientationPairs[m].j].y; - const float norm_sq = (dx*dx+dy*dy); - orientationPairs[m].weight_dx = int((dx/(norm_sq))*4096.0+0.5); - orientationPairs[m].weight_dy = int((dy/(norm_sq))*4096.0+0.5); - } - - // build the list of description pairs - std::vector allPairs; - for( unsigned int i = 1; i < (unsigned int)FREAK_NB_POINTS; ++i ) - { - // (generate all the pairs) - for( unsigned int j = 0; (unsigned int)j < i; ++j ) - { - DescriptionPair pair = {(uchar)i,(uchar)j}; - allPairs.push_back(pair); - } - } - // Input vector provided - if( !selectedPairs0.empty() ) - { - if( (int)selectedPairs0.size() == FREAK_NB_PAIRS ) - { - for( int i = 0; i < FREAK_NB_PAIRS; ++i ) - descriptionPairs[i] = allPairs[selectedPairs0.at(i)]; - } - else - { - CV_Error(Error::StsVecLengthErr, "Input vector does not match the required size"); - } - } - else // default selected pairs - { - for( int i = 0; i < FREAK_NB_PAIRS; ++i ) - descriptionPairs[i] = allPairs[FREAK_DEF_PAIRS[i]]; - } -} - -void FREAK::computeImpl( InputArray _image, std::vector& keypoints, OutputArray _descriptors ) const -{ - Mat image = _image.getMat(); - if( image.empty() ) - return; - if( keypoints.empty() ) - return; - - ((FREAK*)this)->buildPattern(); - - // Convert to gray if not already - Mat grayImage = image; -// if( image.channels() > 1 ) -// cvtColor( image, grayImage, COLOR_BGR2GRAY ); - - // Use 32-bit integers if we won't overflow in the integral image - if ((image.depth() == CV_8U || image.depth() == CV_8S) && - (image.rows * image.cols) < 8388608 ) // 8388608 = 2 ^ (32 - 8(bit depth) - 1(sign bit)) - { - // Create the integral image appropriate for our type & usage - if (image.depth() == CV_8U) - computeDescriptors(grayImage, keypoints, _descriptors); - else if (image.depth() == CV_8S) - computeDescriptors(grayImage, keypoints, _descriptors); - else - CV_Error( Error::StsUnsupportedFormat, "" ); - } else { - // Create the integral image appropriate for our type & usage - if ( image.depth() == CV_8U ) - computeDescriptors(grayImage, keypoints, _descriptors); - else if ( image.depth() == CV_8S ) - computeDescriptors(grayImage, keypoints, _descriptors); - else if ( image.depth() == CV_16U ) - computeDescriptors(grayImage, keypoints, _descriptors); - else if ( image.depth() == CV_16S ) - computeDescriptors(grayImage, keypoints, _descriptors); - else - CV_Error( Error::StsUnsupportedFormat, "" ); - } -} - -template -void FREAK::extractDescriptor(srcMatType *pointsValue, void ** ptr) const -{ - std::bitset** ptrScalar = (std::bitset**) ptr; - - // extracting descriptor preserving the order of SSE version - int cnt = 0; - for( int n = 7; n < FREAK_NB_PAIRS; n += 128) - { - for( int m = 8; m--; ) - { - int nm = n-m; - for(int kk = nm+15*8; kk >= nm; kk-=8, ++cnt) - { - (*ptrScalar)->set(kk, pointsValue[descriptionPairs[cnt].i] >= pointsValue[descriptionPairs[cnt].j]); - } - } - } - --(*ptrScalar); -} - -#if CV_SSE2 -template <> -void FREAK::extractDescriptor(uchar *pointsValue, void ** ptr) const -{ - __m128i** ptrSSE = (__m128i**) ptr; - - // note that comparisons order is modified in each block (but first 128 comparisons remain globally the same-->does not affect the 128,384 bits segmanted matching strategy) - int cnt = 0; - for( int n = FREAK_NB_PAIRS/128; n-- ; ) - { - __m128i result128 = _mm_setzero_si128(); - for( int m = 128/16; m--; cnt += 16 ) - { - __m128i operand1 = _mm_set_epi8(pointsValue[descriptionPairs[cnt+0].i], - pointsValue[descriptionPairs[cnt+1].i], - pointsValue[descriptionPairs[cnt+2].i], - pointsValue[descriptionPairs[cnt+3].i], - pointsValue[descriptionPairs[cnt+4].i], - pointsValue[descriptionPairs[cnt+5].i], - pointsValue[descriptionPairs[cnt+6].i], - pointsValue[descriptionPairs[cnt+7].i], - pointsValue[descriptionPairs[cnt+8].i], - pointsValue[descriptionPairs[cnt+9].i], - pointsValue[descriptionPairs[cnt+10].i], - pointsValue[descriptionPairs[cnt+11].i], - pointsValue[descriptionPairs[cnt+12].i], - pointsValue[descriptionPairs[cnt+13].i], - pointsValue[descriptionPairs[cnt+14].i], - pointsValue[descriptionPairs[cnt+15].i]); - - __m128i operand2 = _mm_set_epi8(pointsValue[descriptionPairs[cnt+0].j], - pointsValue[descriptionPairs[cnt+1].j], - pointsValue[descriptionPairs[cnt+2].j], - pointsValue[descriptionPairs[cnt+3].j], - pointsValue[descriptionPairs[cnt+4].j], - pointsValue[descriptionPairs[cnt+5].j], - pointsValue[descriptionPairs[cnt+6].j], - pointsValue[descriptionPairs[cnt+7].j], - pointsValue[descriptionPairs[cnt+8].j], - pointsValue[descriptionPairs[cnt+9].j], - pointsValue[descriptionPairs[cnt+10].j], - pointsValue[descriptionPairs[cnt+11].j], - pointsValue[descriptionPairs[cnt+12].j], - pointsValue[descriptionPairs[cnt+13].j], - pointsValue[descriptionPairs[cnt+14].j], - pointsValue[descriptionPairs[cnt+15].j]); - - __m128i workReg = _mm_min_epu8(operand1, operand2); // emulated "not less than" for 8-bit UNSIGNED integers - workReg = _mm_cmpeq_epi8(workReg, operand2); // emulated "not less than" for 8-bit UNSIGNED integers - - workReg = _mm_and_si128(_mm_set1_epi16(short(0x8080 >> m)), workReg); // merge the last 16 bits with the 128bits std::vector until full - result128 = _mm_or_si128(result128, workReg); - } - (**ptrSSE) = result128; - ++(*ptrSSE); - } - (*ptrSSE) -= 8; -} -#endif - -template -void FREAK::computeDescriptors( InputArray _image, std::vector& keypoints, OutputArray _descriptors ) const { - - Mat image = _image.getMat(); - Mat imgIntegral; - integral(image, imgIntegral, DataType::type); - std::vector kpScaleIdx(keypoints.size()); // used to save pattern scale index corresponding to each keypoints - const std::vector::iterator ScaleIdxBegin = kpScaleIdx.begin(); // used in std::vector erase function - const std::vector::iterator kpBegin = keypoints.begin(); // used in std::vector erase function - const float sizeCst = static_cast(FREAK_NB_SCALES/(FREAK_LOG2* nOctaves)); - srcMatType pointsValue[FREAK_NB_POINTS]; - int thetaIdx = 0; - int direction0; - int direction1; - - // compute the scale index corresponding to the keypoint size and remove keypoints close to the border - if( scaleNormalized ) - { - for( size_t k = keypoints.size(); k--; ) - { - //Is k non-zero? If so, decrement it and continue" - kpScaleIdx[k] = std::max( (int)(std::log(keypoints[k].size/FREAK_SMALLEST_KP_SIZE)*sizeCst+0.5) ,0); - if( kpScaleIdx[k] >= FREAK_NB_SCALES ) - kpScaleIdx[k] = FREAK_NB_SCALES-1; - - if( keypoints[k].pt.x <= patternSizes[kpScaleIdx[k]] || //check if the description at this specific position and scale fits inside the image - keypoints[k].pt.y <= patternSizes[kpScaleIdx[k]] || - keypoints[k].pt.x >= image.cols-patternSizes[kpScaleIdx[k]] || - keypoints[k].pt.y >= image.rows-patternSizes[kpScaleIdx[k]] - ) - { - keypoints.erase(kpBegin+k); - kpScaleIdx.erase(ScaleIdxBegin+k); - } - } - } - else - { - const int scIdx = std::max( (int)(1.0986122886681*sizeCst+0.5) ,0); - for( size_t k = keypoints.size(); k--; ) - { - kpScaleIdx[k] = scIdx; // equivalent to the formule when the scale is normalized with a constant size of keypoints[k].size=3*SMALLEST_KP_SIZE - if( kpScaleIdx[k] >= FREAK_NB_SCALES ) - { - kpScaleIdx[k] = FREAK_NB_SCALES-1; - } - if( keypoints[k].pt.x <= patternSizes[kpScaleIdx[k]] || - keypoints[k].pt.y <= patternSizes[kpScaleIdx[k]] || - keypoints[k].pt.x >= image.cols-patternSizes[kpScaleIdx[k]] || - keypoints[k].pt.y >= image.rows-patternSizes[kpScaleIdx[k]] - ) - { - keypoints.erase(kpBegin+k); - kpScaleIdx.erase(ScaleIdxBegin+k); - } - } - } - - // allocate descriptor memory, estimate orientations, extract descriptors - if( !extAll ) - { - // extract the best comparisons only - _descriptors.create((int)keypoints.size(), FREAK_NB_PAIRS/8, CV_8U); - _descriptors.setTo(Scalar::all(0)); - Mat descriptors = _descriptors.getMat(); - - void *ptr = descriptors.data+(keypoints.size()-1)*descriptors.step[0]; - - for( size_t k = keypoints.size(); k--; ) { - // estimate orientation (gradient) - if( !orientationNormalized ) - { - thetaIdx = 0; // assign 0° to all keypoints - keypoints[k].angle = 0.0; - } - else - { - // get the points intensity value in the un-rotated pattern - for( int i = FREAK_NB_POINTS; i--; ) { - pointsValue[i] = meanIntensity(image, imgIntegral, - keypoints[k].pt.x, keypoints[k].pt.y, - kpScaleIdx[k], 0, i); - } - direction0 = 0; - direction1 = 0; - for( int m = 45; m--; ) - { - //iterate through the orientation pairs - const int delta = (pointsValue[ orientationPairs[m].i ]-pointsValue[ orientationPairs[m].j ]); - direction0 += delta*(orientationPairs[m].weight_dx)/2048; - direction1 += delta*(orientationPairs[m].weight_dy)/2048; - } - - keypoints[k].angle = static_cast(atan2((float)direction1,(float)direction0)*(180.0/CV_PI));//estimate orientation - thetaIdx = int(FREAK_NB_ORIENTATION*keypoints[k].angle*(1/360.0)+0.5); - if( thetaIdx < 0 ) - thetaIdx += FREAK_NB_ORIENTATION; - - if( thetaIdx >= FREAK_NB_ORIENTATION ) - thetaIdx -= FREAK_NB_ORIENTATION; - } - // extract descriptor at the computed orientation - for( int i = FREAK_NB_POINTS; i--; ) { - pointsValue[i] = meanIntensity(image, imgIntegral, - keypoints[k].pt.x, keypoints[k].pt.y, - kpScaleIdx[k], thetaIdx, i); - } - - // Extract descriptor - extractDescriptor(pointsValue, &ptr); - } - } - else // extract all possible comparisons for selection - { - _descriptors.create((int)keypoints.size(), 128, CV_8U); - _descriptors.setTo(Scalar::all(0)); - Mat descriptors = _descriptors.getMat(); - std::bitset<1024>* ptr = (std::bitset<1024>*) (descriptors.data+(keypoints.size()-1)*descriptors.step[0]); - - for( size_t k = keypoints.size(); k--; ) - { - //estimate orientation (gradient) - if( !orientationNormalized ) - { - thetaIdx = 0;//assign 0° to all keypoints - keypoints[k].angle = 0.0; - } - else - { - //get the points intensity value in the un-rotated pattern - for( int i = FREAK_NB_POINTS;i--; ) - pointsValue[i] = meanIntensity(image, imgIntegral, - keypoints[k].pt.x,keypoints[k].pt.y, - kpScaleIdx[k], 0, i); - - direction0 = 0; - direction1 = 0; - for( int m = 45; m--; ) - { - //iterate through the orientation pairs - const int delta = (pointsValue[ orientationPairs[m].i ]-pointsValue[ orientationPairs[m].j ]); - direction0 += delta*(orientationPairs[m].weight_dx)/2048; - direction1 += delta*(orientationPairs[m].weight_dy)/2048; - } - - keypoints[k].angle = static_cast(atan2((float)direction1,(float)direction0)*(180.0/CV_PI)); //estimate orientation - thetaIdx = int(FREAK_NB_ORIENTATION*keypoints[k].angle*(1/360.0)+0.5); - - if( thetaIdx < 0 ) - thetaIdx += FREAK_NB_ORIENTATION; - - if( thetaIdx >= FREAK_NB_ORIENTATION ) - thetaIdx -= FREAK_NB_ORIENTATION; - } - // get the points intensity value in the rotated pattern - for( int i = FREAK_NB_POINTS; i--; ) { - pointsValue[i] = meanIntensity(image, imgIntegral, - keypoints[k].pt.x, keypoints[k].pt.y, - kpScaleIdx[k], thetaIdx, i); - } - - int cnt(0); - for( int i = 1; i < FREAK_NB_POINTS; ++i ) - { - //(generate all the pairs) - for( int j = 0; j < i; ++j ) - { - ptr->set(cnt, pointsValue[i] >= pointsValue[j] ); - ++cnt; - } - } - --ptr; - } - } -} - -// simply take average on a square patch, not even gaussian approx -template -imgType FREAK::meanIntensity( InputArray _image, InputArray _integral, - const float kp_x, - const float kp_y, - const unsigned int scale, - const unsigned int rot, - const unsigned int point) const { - Mat image = _image.getMat(), integral = _integral.getMat(); - // get point position in image - const PatternPoint& FreakPoint = patternLookup[scale*FREAK_NB_ORIENTATION*FREAK_NB_POINTS + rot*FREAK_NB_POINTS + point]; - const float xf = FreakPoint.x+kp_x; - const float yf = FreakPoint.y+kp_y; - const int x = int(xf); - const int y = int(yf); - - // get the sigma: - const float radius = FreakPoint.sigma; - - // calculate output: - if( radius < 0.5 ) - { - // interpolation multipliers: - const int r_x = static_cast((xf-x)*1024); - const int r_y = static_cast((yf-y)*1024); - const int r_x_1 = (1024-r_x); - const int r_y_1 = (1024-r_y); - unsigned int ret_val; - // linear interpolation: - ret_val = r_x_1*r_y_1*int(image.at(y , x )) - + r_x *r_y_1*int(image.at(y , x+1)) - + r_x_1*r_y *int(image.at(y+1, x )) - + r_x *r_y *int(image.at(y+1, x+1)); - //return the rounded mean - ret_val += 2 * 1024 * 1024; - return static_cast(ret_val / (4 * 1024 * 1024)); - } - - // expected case: - - // calculate borders - const int x_left = int(xf-radius+0.5); - const int y_top = int(yf-radius+0.5); - const int x_right = int(xf+radius+1.5);//integral image is 1px wider - const int y_bottom = int(yf+radius+1.5);//integral image is 1px higher - iiType ret_val; - - ret_val = integral.at(y_bottom,x_right);//bottom right corner - ret_val -= integral.at(y_bottom,x_left); - ret_val += integral.at(y_top,x_left); - ret_val -= integral.at(y_top,x_right); - ret_val = ret_val/( (x_right-x_left)* (y_bottom-y_top) ); - //~ std::cout<(ret_val); -} - -// pair selection algorithm from a set of training images and corresponding keypoints -std::vector FREAK::selectPairs(const std::vector& images - , std::vector >& keypoints - , const double corrTresh - , bool verbose ) -{ - extAll = true; - // compute descriptors with all pairs - Mat descriptors; - - if( verbose ) - std::cout << "Number of images: " << images.size() << std::endl; - - for( size_t i = 0;i < images.size(); ++i ) - { - Mat descriptorsTmp; - computeImpl(images[i],keypoints[i],descriptorsTmp); - descriptors.push_back(descriptorsTmp); - } - - if( verbose ) - std::cout << "number of keypoints: " << descriptors.rows << std::endl; - - //descriptor in floating point format (each bit is a float) - Mat descriptorsFloat = Mat::zeros(descriptors.rows, 903, CV_32F); - - std::bitset<1024>* ptr = (std::bitset<1024>*) (descriptors.data+(descriptors.rows-1)*descriptors.step[0]); - for( int m = descriptors.rows; m--; ) - { - for( int n = 903; n--; ) - { - if( ptr->test(n) == true ) - descriptorsFloat.at(m,n)=1.0f; - } - --ptr; - } - - std::vector pairStat; - for( int n = 903; n--; ) - { - // the higher the variance, the better --> mean = 0.5 - PairStat tmp = { fabs( mean(descriptorsFloat.col(n))[0]-0.5 ) ,n}; - pairStat.push_back(tmp); - } - - std::sort( pairStat.begin(),pairStat.end(), sortMean() ); - - std::vector bestPairs; - for( int m = 0; m < 903; ++m ) - { - if( verbose ) - std::cout << m << ":" << bestPairs.size() << " " << std::flush; - double corrMax(0); - - for( size_t n = 0; n < bestPairs.size(); ++n ) - { - int idxA = bestPairs[n].idx; - int idxB = pairStat[m].idx; - double corr(0); - // compute correlation between 2 pairs - corr = fabs(compareHist(descriptorsFloat.col(idxA), descriptorsFloat.col(idxB), HISTCMP_CORREL)); - - if( corr > corrMax ) - { - corrMax = corr; - if( corrMax >= corrTresh ) - break; - } - } - - if( corrMax < corrTresh/*0.7*/ ) - bestPairs.push_back(pairStat[m]); - - if( bestPairs.size() >= 512 ) - { - if( verbose ) - std::cout << m << std::endl; - break; - } - } - - std::vector idxBestPairs; - if( (int)bestPairs.size() >= FREAK_NB_PAIRS ) - { - for( int i = 0; i < FREAK_NB_PAIRS; ++i ) - idxBestPairs.push_back(bestPairs[i].idx); - } - else - { - if( verbose ) - std::cout << "correlation threshold too small (restrictive)" << std::endl; - CV_Error(Error::StsError, "correlation threshold too small (restrictive)"); - } - extAll = false; - return idxBestPairs; -} - - -/* -// create an image showing the brisk pattern -void FREAKImpl::drawPattern() -{ - Mat pattern = Mat::zeros(1000, 1000, CV_8UC3) + Scalar(255,255,255); - int sFac = 500 / patternScale; - for( int n = 0; n < kNB_POINTS; ++n ) - { - PatternPoint& pt = patternLookup[n]; - circle(pattern, Point( pt.x*sFac,pt.y*sFac)+Point(500,500), pt.sigma*sFac, Scalar(0,0,255),2); - // rectangle(pattern, Point( (pt.x-pt.sigma)*sFac,(pt.y-pt.sigma)*sFac)+Point(500,500), Point( (pt.x+pt.sigma)*sFac,(pt.y+pt.sigma)*sFac)+Point(500,500), Scalar(0,0,255),2); - - circle(pattern, Point( pt.x*sFac,pt.y*sFac)+Point(500,500), 1, Scalar(0,0,0),3); - std::ostringstream oss; - oss << n; - putText( pattern, oss.str(), Point( pt.x*sFac,pt.y*sFac)+Point(500,500), FONT_HERSHEY_SIMPLEX,0.5, Scalar(0,0,0), 1); - } - imshow( "FreakDescriptorExtractor pattern", pattern ); - waitKey(0); -} -*/ - -// ------------------------------------------------- -/* FREAK interface implementation */ -FREAK::FREAK( bool _orientationNormalized, bool _scaleNormalized - , float _patternScale, int _nOctaves, const std::vector& _selectedPairs ) - : orientationNormalized(_orientationNormalized), scaleNormalized(_scaleNormalized), - patternScale(_patternScale), nOctaves(_nOctaves), extAll(false), nOctaves0(0), selectedPairs0(_selectedPairs) -{ -} - -FREAK::~FREAK() -{ -} - -int FREAK::descriptorSize() const -{ - return FREAK_NB_PAIRS / 8; // descriptor length in bytes -} - -int FREAK::descriptorType() const -{ - return CV_8U; -} - -int FREAK::defaultNorm() const -{ - return NORM_HAMMING; -} - -} // END NAMESPACE CV diff --git a/modules/features2d/src/generated_16.i b/modules/features2d/src/generated_16.i deleted file mode 100644 index b85bf06d9e..0000000000 --- a/modules/features2d/src/generated_16.i +++ /dev/null @@ -1,19 +0,0 @@ -// Code generated with '$ scripts/generate_code.py src/test_pairs.txt 16' -#define SMOOTHED(y,x) smoothedSum(sum, pt, y, x) - desc[0] = (uchar)(((SMOOTHED(-2, -1) < SMOOTHED(7, -1)) << 7) + ((SMOOTHED(-14, -1) < SMOOTHED(-3, 3)) << 6) + ((SMOOTHED(1, -2) < SMOOTHED(11, 2)) << 5) + ((SMOOTHED(1, 6) < SMOOTHED(-10, -7)) << 4) + ((SMOOTHED(13, 2) < SMOOTHED(-1, 0)) << 3) + ((SMOOTHED(-14, 5) < SMOOTHED(5, -3)) << 2) + ((SMOOTHED(-2, 8) < SMOOTHED(2, 4)) << 1) + ((SMOOTHED(-11, 8) < SMOOTHED(-15, 5)) << 0)); - desc[1] = (uchar)(((SMOOTHED(-6, -23) < SMOOTHED(8, -9)) << 7) + ((SMOOTHED(-12, 6) < SMOOTHED(-10, 8)) << 6) + ((SMOOTHED(-3, -1) < SMOOTHED(8, 1)) << 5) + ((SMOOTHED(3, 6) < SMOOTHED(5, 6)) << 4) + ((SMOOTHED(-7, -6) < SMOOTHED(5, -5)) << 3) + ((SMOOTHED(22, -2) < SMOOTHED(-11, -8)) << 2) + ((SMOOTHED(14, 7) < SMOOTHED(8, 5)) << 1) + ((SMOOTHED(-1, 14) < SMOOTHED(-5, -14)) << 0)); - desc[2] = (uchar)(((SMOOTHED(-14, 9) < SMOOTHED(2, 0)) << 7) + ((SMOOTHED(7, -3) < SMOOTHED(22, 6)) << 6) + ((SMOOTHED(-6, 6) < SMOOTHED(-8, -5)) << 5) + ((SMOOTHED(-5, 9) < SMOOTHED(7, -1)) << 4) + ((SMOOTHED(-3, -7) < SMOOTHED(-10, -18)) << 3) + ((SMOOTHED(4, -5) < SMOOTHED(0, 11)) << 2) + ((SMOOTHED(2, 3) < SMOOTHED(9, 10)) << 1) + ((SMOOTHED(-10, 3) < SMOOTHED(4, 9)) << 0)); - desc[3] = (uchar)(((SMOOTHED(0, 12) < SMOOTHED(-3, 19)) << 7) + ((SMOOTHED(1, 15) < SMOOTHED(-11, -5)) << 6) + ((SMOOTHED(14, -1) < SMOOTHED(7, 8)) << 5) + ((SMOOTHED(7, -23) < SMOOTHED(-5, 5)) << 4) + ((SMOOTHED(0, -6) < SMOOTHED(-10, 17)) << 3) + ((SMOOTHED(13, -4) < SMOOTHED(-3, -4)) << 2) + ((SMOOTHED(-12, 1) < SMOOTHED(-12, 2)) << 1) + ((SMOOTHED(0, 8) < SMOOTHED(3, 22)) << 0)); - desc[4] = (uchar)(((SMOOTHED(-13, 13) < SMOOTHED(3, -1)) << 7) + ((SMOOTHED(-16, 17) < SMOOTHED(6, 10)) << 6) + ((SMOOTHED(7, 15) < SMOOTHED(-5, 0)) << 5) + ((SMOOTHED(2, -12) < SMOOTHED(19, -2)) << 4) + ((SMOOTHED(3, -6) < SMOOTHED(-4, -15)) << 3) + ((SMOOTHED(8, 3) < SMOOTHED(0, 14)) << 2) + ((SMOOTHED(4, -11) < SMOOTHED(5, 5)) << 1) + ((SMOOTHED(11, -7) < SMOOTHED(7, 1)) << 0)); - desc[5] = (uchar)(((SMOOTHED(6, 12) < SMOOTHED(21, 3)) << 7) + ((SMOOTHED(-3, 2) < SMOOTHED(14, 1)) << 6) + ((SMOOTHED(5, 1) < SMOOTHED(-5, 11)) << 5) + ((SMOOTHED(3, -17) < SMOOTHED(-6, 2)) << 4) + ((SMOOTHED(6, 8) < SMOOTHED(5, -10)) << 3) + ((SMOOTHED(-14, -2) < SMOOTHED(0, 4)) << 2) + ((SMOOTHED(5, -7) < SMOOTHED(-6, 5)) << 1) + ((SMOOTHED(10, 4) < SMOOTHED(4, -7)) << 0)); - desc[6] = (uchar)(((SMOOTHED(22, 0) < SMOOTHED(7, -18)) << 7) + ((SMOOTHED(-1, -3) < SMOOTHED(0, 18)) << 6) + ((SMOOTHED(-4, 22) < SMOOTHED(-5, 3)) << 5) + ((SMOOTHED(1, -7) < SMOOTHED(2, -3)) << 4) + ((SMOOTHED(19, -20) < SMOOTHED(17, -2)) << 3) + ((SMOOTHED(3, -10) < SMOOTHED(-8, 24)) << 2) + ((SMOOTHED(-5, -14) < SMOOTHED(7, 5)) << 1) + ((SMOOTHED(-2, 12) < SMOOTHED(-4, -15)) << 0)); - desc[7] = (uchar)(((SMOOTHED(4, 12) < SMOOTHED(0, -19)) << 7) + ((SMOOTHED(20, 13) < SMOOTHED(3, 5)) << 6) + ((SMOOTHED(-8, -12) < SMOOTHED(5, 0)) << 5) + ((SMOOTHED(-5, 6) < SMOOTHED(-7, -11)) << 4) + ((SMOOTHED(6, -11) < SMOOTHED(-3, -22)) << 3) + ((SMOOTHED(15, 4) < SMOOTHED(10, 1)) << 2) + ((SMOOTHED(-7, -4) < SMOOTHED(15, -6)) << 1) + ((SMOOTHED(5, 10) < SMOOTHED(0, 24)) << 0)); - desc[8] = (uchar)(((SMOOTHED(3, 6) < SMOOTHED(22, -2)) << 7) + ((SMOOTHED(-13, 14) < SMOOTHED(4, -4)) << 6) + ((SMOOTHED(-13, 8) < SMOOTHED(-18, -22)) << 5) + ((SMOOTHED(-1, -1) < SMOOTHED(-7, 3)) << 4) + ((SMOOTHED(-19, -12) < SMOOTHED(4, 3)) << 3) + ((SMOOTHED(8, 10) < SMOOTHED(13, -2)) << 2) + ((SMOOTHED(-6, -1) < SMOOTHED(-6, -5)) << 1) + ((SMOOTHED(2, -21) < SMOOTHED(-3, 2)) << 0)); - desc[9] = (uchar)(((SMOOTHED(4, -7) < SMOOTHED(0, 16)) << 7) + ((SMOOTHED(-6, -5) < SMOOTHED(-12, -1)) << 6) + ((SMOOTHED(1, -1) < SMOOTHED(9, 18)) << 5) + ((SMOOTHED(-7, 10) < SMOOTHED(-11, 6)) << 4) + ((SMOOTHED(4, 3) < SMOOTHED(19, -7)) << 3) + ((SMOOTHED(-18, 5) < SMOOTHED(-4, 5)) << 2) + ((SMOOTHED(4, 0) < SMOOTHED(-20, 4)) << 1) + ((SMOOTHED(7, -11) < SMOOTHED(18, 12)) << 0)); - desc[10] = (uchar)(((SMOOTHED(-20, 17) < SMOOTHED(-18, 7)) << 7) + ((SMOOTHED(2, 15) < SMOOTHED(19, -11)) << 6) + ((SMOOTHED(-18, 6) < SMOOTHED(-7, 3)) << 5) + ((SMOOTHED(-4, 1) < SMOOTHED(-14, 13)) << 4) + ((SMOOTHED(17, 3) < SMOOTHED(2, -8)) << 3) + ((SMOOTHED(-7, 2) < SMOOTHED(1, 6)) << 2) + ((SMOOTHED(17, -9) < SMOOTHED(-2, 8)) << 1) + ((SMOOTHED(-8, -6) < SMOOTHED(-1, 12)) << 0)); - desc[11] = (uchar)(((SMOOTHED(-2, 4) < SMOOTHED(-1, 6)) << 7) + ((SMOOTHED(-2, 7) < SMOOTHED(6, 8)) << 6) + ((SMOOTHED(-8, -1) < SMOOTHED(-7, -9)) << 5) + ((SMOOTHED(8, -9) < SMOOTHED(15, 0)) << 4) + ((SMOOTHED(0, 22) < SMOOTHED(-4, -15)) << 3) + ((SMOOTHED(-14, -1) < SMOOTHED(3, -2)) << 2) + ((SMOOTHED(-7, -4) < SMOOTHED(17, -7)) << 1) + ((SMOOTHED(-8, -2) < SMOOTHED(9, -4)) << 0)); - desc[12] = (uchar)(((SMOOTHED(5, -7) < SMOOTHED(7, 7)) << 7) + ((SMOOTHED(-5, 13) < SMOOTHED(-8, 11)) << 6) + ((SMOOTHED(11, -4) < SMOOTHED(0, 8)) << 5) + ((SMOOTHED(5, -11) < SMOOTHED(-9, -6)) << 4) + ((SMOOTHED(2, -6) < SMOOTHED(3, -20)) << 3) + ((SMOOTHED(-6, 2) < SMOOTHED(6, 10)) << 2) + ((SMOOTHED(-6, -6) < SMOOTHED(-15, 7)) << 1) + ((SMOOTHED(-6, -3) < SMOOTHED(2, 1)) << 0)); - desc[13] = (uchar)(((SMOOTHED(11, 0) < SMOOTHED(-3, 2)) << 7) + ((SMOOTHED(7, -12) < SMOOTHED(14, 5)) << 6) + ((SMOOTHED(0, -7) < SMOOTHED(-1, -1)) << 5) + ((SMOOTHED(-16, 0) < SMOOTHED(6, 8)) << 4) + ((SMOOTHED(22, 11) < SMOOTHED(0, -3)) << 3) + ((SMOOTHED(19, 0) < SMOOTHED(5, -17)) << 2) + ((SMOOTHED(-23, -14) < SMOOTHED(-13, -19)) << 1) + ((SMOOTHED(-8, 10) < SMOOTHED(-11, -2)) << 0)); - desc[14] = (uchar)(((SMOOTHED(-11, 6) < SMOOTHED(-10, 13)) << 7) + ((SMOOTHED(1, -7) < SMOOTHED(14, 0)) << 6) + ((SMOOTHED(-12, 1) < SMOOTHED(-5, -5)) << 5) + ((SMOOTHED(4, 7) < SMOOTHED(8, -1)) << 4) + ((SMOOTHED(-1, -5) < SMOOTHED(15, 2)) << 3) + ((SMOOTHED(-3, -1) < SMOOTHED(7, -10)) << 2) + ((SMOOTHED(3, -6) < SMOOTHED(10, -18)) << 1) + ((SMOOTHED(-7, -13) < SMOOTHED(-13, 10)) << 0)); - desc[15] = (uchar)(((SMOOTHED(1, -1) < SMOOTHED(13, -10)) << 7) + ((SMOOTHED(-19, 14) < SMOOTHED(8, -14)) << 6) + ((SMOOTHED(-4, -13) < SMOOTHED(7, 1)) << 5) + ((SMOOTHED(1, -2) < SMOOTHED(12, -7)) << 4) + ((SMOOTHED(3, -5) < SMOOTHED(1, -5)) << 3) + ((SMOOTHED(-2, -2) < SMOOTHED(8, -10)) << 2) + ((SMOOTHED(2, 14) < SMOOTHED(8, 7)) << 1) + ((SMOOTHED(3, 9) < SMOOTHED(8, 2)) << 0)); -#undef SMOOTHED diff --git a/modules/features2d/src/generated_32.i b/modules/features2d/src/generated_32.i deleted file mode 100644 index 19952d2f75..0000000000 --- a/modules/features2d/src/generated_32.i +++ /dev/null @@ -1,35 +0,0 @@ -// Code generated with '$ scripts/generate_code.py src/test_pairs.txt 32' -#define SMOOTHED(y,x) smoothedSum(sum, pt, y, x) - desc[0] = (uchar)(((SMOOTHED(-2, -1) < SMOOTHED(7, -1)) << 7) + ((SMOOTHED(-14, -1) < SMOOTHED(-3, 3)) << 6) + ((SMOOTHED(1, -2) < SMOOTHED(11, 2)) << 5) + ((SMOOTHED(1, 6) < SMOOTHED(-10, -7)) << 4) + ((SMOOTHED(13, 2) < SMOOTHED(-1, 0)) << 3) + ((SMOOTHED(-14, 5) < SMOOTHED(5, -3)) << 2) + ((SMOOTHED(-2, 8) < SMOOTHED(2, 4)) << 1) + ((SMOOTHED(-11, 8) < SMOOTHED(-15, 5)) << 0)); - desc[1] = (uchar)(((SMOOTHED(-6, -23) < SMOOTHED(8, -9)) << 7) + ((SMOOTHED(-12, 6) < SMOOTHED(-10, 8)) << 6) + ((SMOOTHED(-3, -1) < SMOOTHED(8, 1)) << 5) + ((SMOOTHED(3, 6) < SMOOTHED(5, 6)) << 4) + ((SMOOTHED(-7, -6) < SMOOTHED(5, -5)) << 3) + ((SMOOTHED(22, -2) < SMOOTHED(-11, -8)) << 2) + ((SMOOTHED(14, 7) < SMOOTHED(8, 5)) << 1) + ((SMOOTHED(-1, 14) < SMOOTHED(-5, -14)) << 0)); - desc[2] = (uchar)(((SMOOTHED(-14, 9) < SMOOTHED(2, 0)) << 7) + ((SMOOTHED(7, -3) < SMOOTHED(22, 6)) << 6) + ((SMOOTHED(-6, 6) < SMOOTHED(-8, -5)) << 5) + ((SMOOTHED(-5, 9) < SMOOTHED(7, -1)) << 4) + ((SMOOTHED(-3, -7) < SMOOTHED(-10, -18)) << 3) + ((SMOOTHED(4, -5) < SMOOTHED(0, 11)) << 2) + ((SMOOTHED(2, 3) < SMOOTHED(9, 10)) << 1) + ((SMOOTHED(-10, 3) < SMOOTHED(4, 9)) << 0)); - desc[3] = (uchar)(((SMOOTHED(0, 12) < SMOOTHED(-3, 19)) << 7) + ((SMOOTHED(1, 15) < SMOOTHED(-11, -5)) << 6) + ((SMOOTHED(14, -1) < SMOOTHED(7, 8)) << 5) + ((SMOOTHED(7, -23) < SMOOTHED(-5, 5)) << 4) + ((SMOOTHED(0, -6) < SMOOTHED(-10, 17)) << 3) + ((SMOOTHED(13, -4) < SMOOTHED(-3, -4)) << 2) + ((SMOOTHED(-12, 1) < SMOOTHED(-12, 2)) << 1) + ((SMOOTHED(0, 8) < SMOOTHED(3, 22)) << 0)); - desc[4] = (uchar)(((SMOOTHED(-13, 13) < SMOOTHED(3, -1)) << 7) + ((SMOOTHED(-16, 17) < SMOOTHED(6, 10)) << 6) + ((SMOOTHED(7, 15) < SMOOTHED(-5, 0)) << 5) + ((SMOOTHED(2, -12) < SMOOTHED(19, -2)) << 4) + ((SMOOTHED(3, -6) < SMOOTHED(-4, -15)) << 3) + ((SMOOTHED(8, 3) < SMOOTHED(0, 14)) << 2) + ((SMOOTHED(4, -11) < SMOOTHED(5, 5)) << 1) + ((SMOOTHED(11, -7) < SMOOTHED(7, 1)) << 0)); - desc[5] = (uchar)(((SMOOTHED(6, 12) < SMOOTHED(21, 3)) << 7) + ((SMOOTHED(-3, 2) < SMOOTHED(14, 1)) << 6) + ((SMOOTHED(5, 1) < SMOOTHED(-5, 11)) << 5) + ((SMOOTHED(3, -17) < SMOOTHED(-6, 2)) << 4) + ((SMOOTHED(6, 8) < SMOOTHED(5, -10)) << 3) + ((SMOOTHED(-14, -2) < SMOOTHED(0, 4)) << 2) + ((SMOOTHED(5, -7) < SMOOTHED(-6, 5)) << 1) + ((SMOOTHED(10, 4) < SMOOTHED(4, -7)) << 0)); - desc[6] = (uchar)(((SMOOTHED(22, 0) < SMOOTHED(7, -18)) << 7) + ((SMOOTHED(-1, -3) < SMOOTHED(0, 18)) << 6) + ((SMOOTHED(-4, 22) < SMOOTHED(-5, 3)) << 5) + ((SMOOTHED(1, -7) < SMOOTHED(2, -3)) << 4) + ((SMOOTHED(19, -20) < SMOOTHED(17, -2)) << 3) + ((SMOOTHED(3, -10) < SMOOTHED(-8, 24)) << 2) + ((SMOOTHED(-5, -14) < SMOOTHED(7, 5)) << 1) + ((SMOOTHED(-2, 12) < SMOOTHED(-4, -15)) << 0)); - desc[7] = (uchar)(((SMOOTHED(4, 12) < SMOOTHED(0, -19)) << 7) + ((SMOOTHED(20, 13) < SMOOTHED(3, 5)) << 6) + ((SMOOTHED(-8, -12) < SMOOTHED(5, 0)) << 5) + ((SMOOTHED(-5, 6) < SMOOTHED(-7, -11)) << 4) + ((SMOOTHED(6, -11) < SMOOTHED(-3, -22)) << 3) + ((SMOOTHED(15, 4) < SMOOTHED(10, 1)) << 2) + ((SMOOTHED(-7, -4) < SMOOTHED(15, -6)) << 1) + ((SMOOTHED(5, 10) < SMOOTHED(0, 24)) << 0)); - desc[8] = (uchar)(((SMOOTHED(3, 6) < SMOOTHED(22, -2)) << 7) + ((SMOOTHED(-13, 14) < SMOOTHED(4, -4)) << 6) + ((SMOOTHED(-13, 8) < SMOOTHED(-18, -22)) << 5) + ((SMOOTHED(-1, -1) < SMOOTHED(-7, 3)) << 4) + ((SMOOTHED(-19, -12) < SMOOTHED(4, 3)) << 3) + ((SMOOTHED(8, 10) < SMOOTHED(13, -2)) << 2) + ((SMOOTHED(-6, -1) < SMOOTHED(-6, -5)) << 1) + ((SMOOTHED(2, -21) < SMOOTHED(-3, 2)) << 0)); - desc[9] = (uchar)(((SMOOTHED(4, -7) < SMOOTHED(0, 16)) << 7) + ((SMOOTHED(-6, -5) < SMOOTHED(-12, -1)) << 6) + ((SMOOTHED(1, -1) < SMOOTHED(9, 18)) << 5) + ((SMOOTHED(-7, 10) < SMOOTHED(-11, 6)) << 4) + ((SMOOTHED(4, 3) < SMOOTHED(19, -7)) << 3) + ((SMOOTHED(-18, 5) < SMOOTHED(-4, 5)) << 2) + ((SMOOTHED(4, 0) < SMOOTHED(-20, 4)) << 1) + ((SMOOTHED(7, -11) < SMOOTHED(18, 12)) << 0)); - desc[10] = (uchar)(((SMOOTHED(-20, 17) < SMOOTHED(-18, 7)) << 7) + ((SMOOTHED(2, 15) < SMOOTHED(19, -11)) << 6) + ((SMOOTHED(-18, 6) < SMOOTHED(-7, 3)) << 5) + ((SMOOTHED(-4, 1) < SMOOTHED(-14, 13)) << 4) + ((SMOOTHED(17, 3) < SMOOTHED(2, -8)) << 3) + ((SMOOTHED(-7, 2) < SMOOTHED(1, 6)) << 2) + ((SMOOTHED(17, -9) < SMOOTHED(-2, 8)) << 1) + ((SMOOTHED(-8, -6) < SMOOTHED(-1, 12)) << 0)); - desc[11] = (uchar)(((SMOOTHED(-2, 4) < SMOOTHED(-1, 6)) << 7) + ((SMOOTHED(-2, 7) < SMOOTHED(6, 8)) << 6) + ((SMOOTHED(-8, -1) < SMOOTHED(-7, -9)) << 5) + ((SMOOTHED(8, -9) < SMOOTHED(15, 0)) << 4) + ((SMOOTHED(0, 22) < SMOOTHED(-4, -15)) << 3) + ((SMOOTHED(-14, -1) < SMOOTHED(3, -2)) << 2) + ((SMOOTHED(-7, -4) < SMOOTHED(17, -7)) << 1) + ((SMOOTHED(-8, -2) < SMOOTHED(9, -4)) << 0)); - desc[12] = (uchar)(((SMOOTHED(5, -7) < SMOOTHED(7, 7)) << 7) + ((SMOOTHED(-5, 13) < SMOOTHED(-8, 11)) << 6) + ((SMOOTHED(11, -4) < SMOOTHED(0, 8)) << 5) + ((SMOOTHED(5, -11) < SMOOTHED(-9, -6)) << 4) + ((SMOOTHED(2, -6) < SMOOTHED(3, -20)) << 3) + ((SMOOTHED(-6, 2) < SMOOTHED(6, 10)) << 2) + ((SMOOTHED(-6, -6) < SMOOTHED(-15, 7)) << 1) + ((SMOOTHED(-6, -3) < SMOOTHED(2, 1)) << 0)); - desc[13] = (uchar)(((SMOOTHED(11, 0) < SMOOTHED(-3, 2)) << 7) + ((SMOOTHED(7, -12) < SMOOTHED(14, 5)) << 6) + ((SMOOTHED(0, -7) < SMOOTHED(-1, -1)) << 5) + ((SMOOTHED(-16, 0) < SMOOTHED(6, 8)) << 4) + ((SMOOTHED(22, 11) < SMOOTHED(0, -3)) << 3) + ((SMOOTHED(19, 0) < SMOOTHED(5, -17)) << 2) + ((SMOOTHED(-23, -14) < SMOOTHED(-13, -19)) << 1) + ((SMOOTHED(-8, 10) < SMOOTHED(-11, -2)) << 0)); - desc[14] = (uchar)(((SMOOTHED(-11, 6) < SMOOTHED(-10, 13)) << 7) + ((SMOOTHED(1, -7) < SMOOTHED(14, 0)) << 6) + ((SMOOTHED(-12, 1) < SMOOTHED(-5, -5)) << 5) + ((SMOOTHED(4, 7) < SMOOTHED(8, -1)) << 4) + ((SMOOTHED(-1, -5) < SMOOTHED(15, 2)) << 3) + ((SMOOTHED(-3, -1) < SMOOTHED(7, -10)) << 2) + ((SMOOTHED(3, -6) < SMOOTHED(10, -18)) << 1) + ((SMOOTHED(-7, -13) < SMOOTHED(-13, 10)) << 0)); - desc[15] = (uchar)(((SMOOTHED(1, -1) < SMOOTHED(13, -10)) << 7) + ((SMOOTHED(-19, 14) < SMOOTHED(8, -14)) << 6) + ((SMOOTHED(-4, -13) < SMOOTHED(7, 1)) << 5) + ((SMOOTHED(1, -2) < SMOOTHED(12, -7)) << 4) + ((SMOOTHED(3, -5) < SMOOTHED(1, -5)) << 3) + ((SMOOTHED(-2, -2) < SMOOTHED(8, -10)) << 2) + ((SMOOTHED(2, 14) < SMOOTHED(8, 7)) << 1) + ((SMOOTHED(3, 9) < SMOOTHED(8, 2)) << 0)); - desc[16] = (uchar)(((SMOOTHED(-9, 1) < SMOOTHED(-18, 0)) << 7) + ((SMOOTHED(4, 0) < SMOOTHED(1, 12)) << 6) + ((SMOOTHED(0, 9) < SMOOTHED(-14, -10)) << 5) + ((SMOOTHED(-13, -9) < SMOOTHED(-2, 6)) << 4) + ((SMOOTHED(1, 5) < SMOOTHED(10, 10)) << 3) + ((SMOOTHED(-3, -6) < SMOOTHED(-16, -5)) << 2) + ((SMOOTHED(11, 6) < SMOOTHED(-5, 0)) << 1) + ((SMOOTHED(-23, 10) < SMOOTHED(1, 2)) << 0)); - desc[17] = (uchar)(((SMOOTHED(13, -5) < SMOOTHED(-3, 9)) << 7) + ((SMOOTHED(-4, -1) < SMOOTHED(-13, -5)) << 6) + ((SMOOTHED(10, 13) < SMOOTHED(-11, 8)) << 5) + ((SMOOTHED(19, 20) < SMOOTHED(-9, 2)) << 4) + ((SMOOTHED(4, -8) < SMOOTHED(0, -9)) << 3) + ((SMOOTHED(-14, 10) < SMOOTHED(15, 19)) << 2) + ((SMOOTHED(-14, -12) < SMOOTHED(-10, -3)) << 1) + ((SMOOTHED(-23, -3) < SMOOTHED(17, -2)) << 0)); - desc[18] = (uchar)(((SMOOTHED(-3, -11) < SMOOTHED(6, -14)) << 7) + ((SMOOTHED(19, -2) < SMOOTHED(-4, 2)) << 6) + ((SMOOTHED(-5, 5) < SMOOTHED(3, -13)) << 5) + ((SMOOTHED(2, -2) < SMOOTHED(-5, 4)) << 4) + ((SMOOTHED(17, 4) < SMOOTHED(17, -11)) << 3) + ((SMOOTHED(-7, -2) < SMOOTHED(1, 23)) << 2) + ((SMOOTHED(8, 13) < SMOOTHED(1, -16)) << 1) + ((SMOOTHED(-13, -5) < SMOOTHED(1, -17)) << 0)); - desc[19] = (uchar)(((SMOOTHED(4, 6) < SMOOTHED(-8, -3)) << 7) + ((SMOOTHED(-5, -9) < SMOOTHED(-2, -10)) << 6) + ((SMOOTHED(-9, 0) < SMOOTHED(-7, -2)) << 5) + ((SMOOTHED(5, 0) < SMOOTHED(5, 2)) << 4) + ((SMOOTHED(-4, -16) < SMOOTHED(6, 3)) << 3) + ((SMOOTHED(2, -15) < SMOOTHED(-2, 12)) << 2) + ((SMOOTHED(4, -1) < SMOOTHED(6, 2)) << 1) + ((SMOOTHED(1, 1) < SMOOTHED(-2, -8)) << 0)); - desc[20] = (uchar)(((SMOOTHED(-2, 12) < SMOOTHED(-5, -2)) << 7) + ((SMOOTHED(-8, 8) < SMOOTHED(-9, 9)) << 6) + ((SMOOTHED(2, -10) < SMOOTHED(3, 1)) << 5) + ((SMOOTHED(-4, 10) < SMOOTHED(-9, 4)) << 4) + ((SMOOTHED(6, 12) < SMOOTHED(2, 5)) << 3) + ((SMOOTHED(-3, -8) < SMOOTHED(0, 5)) << 2) + ((SMOOTHED(-13, 1) < SMOOTHED(-7, 2)) << 1) + ((SMOOTHED(-1, -10) < SMOOTHED(7, -18)) << 0)); - desc[21] = (uchar)(((SMOOTHED(-1, 8) < SMOOTHED(-9, -10)) << 7) + ((SMOOTHED(-23, -1) < SMOOTHED(6, 2)) << 6) + ((SMOOTHED(-5, -3) < SMOOTHED(3, 2)) << 5) + ((SMOOTHED(0, 11) < SMOOTHED(-4, -7)) << 4) + ((SMOOTHED(15, 2) < SMOOTHED(-10, -3)) << 3) + ((SMOOTHED(-20, -8) < SMOOTHED(-13, 3)) << 2) + ((SMOOTHED(-19, -12) < SMOOTHED(5, -11)) << 1) + ((SMOOTHED(-17, -13) < SMOOTHED(-3, 2)) << 0)); - desc[22] = (uchar)(((SMOOTHED(7, 4) < SMOOTHED(-12, 0)) << 7) + ((SMOOTHED(5, -1) < SMOOTHED(-14, -6)) << 6) + ((SMOOTHED(-4, 11) < SMOOTHED(0, -4)) << 5) + ((SMOOTHED(3, 10) < SMOOTHED(7, -3)) << 4) + ((SMOOTHED(13, 21) < SMOOTHED(-11, 6)) << 3) + ((SMOOTHED(-12, 24) < SMOOTHED(-7, -4)) << 2) + ((SMOOTHED(4, 16) < SMOOTHED(3, -14)) << 1) + ((SMOOTHED(-3, 5) < SMOOTHED(-7, -12)) << 0)); - desc[23] = (uchar)(((SMOOTHED(0, -4) < SMOOTHED(7, -5)) << 7) + ((SMOOTHED(-17, -9) < SMOOTHED(13, -7)) << 6) + ((SMOOTHED(22, -6) < SMOOTHED(-11, 5)) << 5) + ((SMOOTHED(2, -8) < SMOOTHED(23, -11)) << 4) + ((SMOOTHED(7, -10) < SMOOTHED(-1, 14)) << 3) + ((SMOOTHED(-3, -10) < SMOOTHED(8, 3)) << 2) + ((SMOOTHED(-13, 1) < SMOOTHED(-6, 0)) << 1) + ((SMOOTHED(-7, -21) < SMOOTHED(6, -14)) << 0)); - desc[24] = (uchar)(((SMOOTHED(18, 19) < SMOOTHED(-4, -6)) << 7) + ((SMOOTHED(10, 7) < SMOOTHED(-1, -4)) << 6) + ((SMOOTHED(-1, 21) < SMOOTHED(1, -5)) << 5) + ((SMOOTHED(-10, 6) < SMOOTHED(-11, -2)) << 4) + ((SMOOTHED(18, -3) < SMOOTHED(-1, 7)) << 3) + ((SMOOTHED(-3, -9) < SMOOTHED(-5, 10)) << 2) + ((SMOOTHED(-13, 14) < SMOOTHED(17, -3)) << 1) + ((SMOOTHED(11, -19) < SMOOTHED(-1, -18)) << 0)); - desc[25] = (uchar)(((SMOOTHED(8, -2) < SMOOTHED(-18, -23)) << 7) + ((SMOOTHED(0, -5) < SMOOTHED(-2, -9)) << 6) + ((SMOOTHED(-4, -11) < SMOOTHED(2, -8)) << 5) + ((SMOOTHED(14, 6) < SMOOTHED(-3, -6)) << 4) + ((SMOOTHED(-3, 0) < SMOOTHED(-15, 0)) << 3) + ((SMOOTHED(-9, 4) < SMOOTHED(-15, -9)) << 2) + ((SMOOTHED(-1, 11) < SMOOTHED(3, 11)) << 1) + ((SMOOTHED(-10, -16) < SMOOTHED(-7, 7)) << 0)); - desc[26] = (uchar)(((SMOOTHED(-2, -10) < SMOOTHED(-10, -2)) << 7) + ((SMOOTHED(-5, -3) < SMOOTHED(5, -23)) << 6) + ((SMOOTHED(13, -8) < SMOOTHED(-15, -11)) << 5) + ((SMOOTHED(-15, 11) < SMOOTHED(6, -6)) << 4) + ((SMOOTHED(-16, -3) < SMOOTHED(-2, 2)) << 3) + ((SMOOTHED(6, 12) < SMOOTHED(-16, 24)) << 2) + ((SMOOTHED(-10, 0) < SMOOTHED(8, 11)) << 1) + ((SMOOTHED(-7, 7) < SMOOTHED(-19, -7)) << 0)); - desc[27] = (uchar)(((SMOOTHED(5, 16) < SMOOTHED(9, -3)) << 7) + ((SMOOTHED(9, 7) < SMOOTHED(-7, -16)) << 6) + ((SMOOTHED(3, 2) < SMOOTHED(-10, 9)) << 5) + ((SMOOTHED(21, 1) < SMOOTHED(8, 7)) << 4) + ((SMOOTHED(7, 0) < SMOOTHED(1, 17)) << 3) + ((SMOOTHED(-8, 12) < SMOOTHED(9, 6)) << 2) + ((SMOOTHED(11, -7) < SMOOTHED(-8, -6)) << 1) + ((SMOOTHED(19, 0) < SMOOTHED(9, 3)) << 0)); - desc[28] = (uchar)(((SMOOTHED(1, -7) < SMOOTHED(-5, -11)) << 7) + ((SMOOTHED(0, 8) < SMOOTHED(-2, 14)) << 6) + ((SMOOTHED(12, -2) < SMOOTHED(-15, -6)) << 5) + ((SMOOTHED(4, 12) < SMOOTHED(0, -21)) << 4) + ((SMOOTHED(17, -4) < SMOOTHED(-6, -7)) << 3) + ((SMOOTHED(-10, -9) < SMOOTHED(-14, -7)) << 2) + ((SMOOTHED(-15, -10) < SMOOTHED(-15, -14)) << 1) + ((SMOOTHED(-7, -5) < SMOOTHED(5, -12)) << 0)); - desc[29] = (uchar)(((SMOOTHED(-4, 0) < SMOOTHED(15, -4)) << 7) + ((SMOOTHED(5, 2) < SMOOTHED(-6, -23)) << 6) + ((SMOOTHED(-4, -21) < SMOOTHED(-6, 4)) << 5) + ((SMOOTHED(-10, 5) < SMOOTHED(-15, 6)) << 4) + ((SMOOTHED(4, -3) < SMOOTHED(-1, 5)) << 3) + ((SMOOTHED(-4, 19) < SMOOTHED(-23, -4)) << 2) + ((SMOOTHED(-4, 17) < SMOOTHED(13, -11)) << 1) + ((SMOOTHED(1, 12) < SMOOTHED(4, -14)) << 0)); - desc[30] = (uchar)(((SMOOTHED(-11, -6) < SMOOTHED(-20, 10)) << 7) + ((SMOOTHED(4, 5) < SMOOTHED(3, 20)) << 6) + ((SMOOTHED(-8, -20) < SMOOTHED(3, 1)) << 5) + ((SMOOTHED(-19, 9) < SMOOTHED(9, -3)) << 4) + ((SMOOTHED(18, 15) < SMOOTHED(11, -4)) << 3) + ((SMOOTHED(12, 16) < SMOOTHED(8, 7)) << 2) + ((SMOOTHED(-14, -8) < SMOOTHED(-3, 9)) << 1) + ((SMOOTHED(-6, 0) < SMOOTHED(2, -4)) << 0)); - desc[31] = (uchar)(((SMOOTHED(1, -10) < SMOOTHED(-1, 2)) << 7) + ((SMOOTHED(8, -7) < SMOOTHED(-6, 18)) << 6) + ((SMOOTHED(9, 12) < SMOOTHED(-7, -23)) << 5) + ((SMOOTHED(8, -6) < SMOOTHED(5, 2)) << 4) + ((SMOOTHED(-9, 6) < SMOOTHED(-12, -7)) << 3) + ((SMOOTHED(-1, -2) < SMOOTHED(-7, 2)) << 2) + ((SMOOTHED(9, 9) < SMOOTHED(7, 15)) << 1) + ((SMOOTHED(6, 2) < SMOOTHED(-6, 6)) << 0)); -#undef SMOOTHED diff --git a/modules/features2d/src/generated_64.i b/modules/features2d/src/generated_64.i deleted file mode 100644 index 2262e2d412..0000000000 --- a/modules/features2d/src/generated_64.i +++ /dev/null @@ -1,67 +0,0 @@ -// Code generated with '$ scripts/generate_code.py src/test_pairs.txt 64' -#define SMOOTHED(y,x) smoothedSum(sum, pt, y, x) - desc[0] = (uchar)(((SMOOTHED(-2, -1) < SMOOTHED(7, -1)) << 7) + ((SMOOTHED(-14, -1) < SMOOTHED(-3, 3)) << 6) + ((SMOOTHED(1, -2) < SMOOTHED(11, 2)) << 5) + ((SMOOTHED(1, 6) < SMOOTHED(-10, -7)) << 4) + ((SMOOTHED(13, 2) < SMOOTHED(-1, 0)) << 3) + ((SMOOTHED(-14, 5) < SMOOTHED(5, -3)) << 2) + ((SMOOTHED(-2, 8) < SMOOTHED(2, 4)) << 1) + ((SMOOTHED(-11, 8) < SMOOTHED(-15, 5)) << 0)); - desc[1] = (uchar)(((SMOOTHED(-6, -23) < SMOOTHED(8, -9)) << 7) + ((SMOOTHED(-12, 6) < SMOOTHED(-10, 8)) << 6) + ((SMOOTHED(-3, -1) < SMOOTHED(8, 1)) << 5) + ((SMOOTHED(3, 6) < SMOOTHED(5, 6)) << 4) + ((SMOOTHED(-7, -6) < SMOOTHED(5, -5)) << 3) + ((SMOOTHED(22, -2) < SMOOTHED(-11, -8)) << 2) + ((SMOOTHED(14, 7) < SMOOTHED(8, 5)) << 1) + ((SMOOTHED(-1, 14) < SMOOTHED(-5, -14)) << 0)); - desc[2] = (uchar)(((SMOOTHED(-14, 9) < SMOOTHED(2, 0)) << 7) + ((SMOOTHED(7, -3) < SMOOTHED(22, 6)) << 6) + ((SMOOTHED(-6, 6) < SMOOTHED(-8, -5)) << 5) + ((SMOOTHED(-5, 9) < SMOOTHED(7, -1)) << 4) + ((SMOOTHED(-3, -7) < SMOOTHED(-10, -18)) << 3) + ((SMOOTHED(4, -5) < SMOOTHED(0, 11)) << 2) + ((SMOOTHED(2, 3) < SMOOTHED(9, 10)) << 1) + ((SMOOTHED(-10, 3) < SMOOTHED(4, 9)) << 0)); - desc[3] = (uchar)(((SMOOTHED(0, 12) < SMOOTHED(-3, 19)) << 7) + ((SMOOTHED(1, 15) < SMOOTHED(-11, -5)) << 6) + ((SMOOTHED(14, -1) < SMOOTHED(7, 8)) << 5) + ((SMOOTHED(7, -23) < SMOOTHED(-5, 5)) << 4) + ((SMOOTHED(0, -6) < SMOOTHED(-10, 17)) << 3) + ((SMOOTHED(13, -4) < SMOOTHED(-3, -4)) << 2) + ((SMOOTHED(-12, 1) < SMOOTHED(-12, 2)) << 1) + ((SMOOTHED(0, 8) < SMOOTHED(3, 22)) << 0)); - desc[4] = (uchar)(((SMOOTHED(-13, 13) < SMOOTHED(3, -1)) << 7) + ((SMOOTHED(-16, 17) < SMOOTHED(6, 10)) << 6) + ((SMOOTHED(7, 15) < SMOOTHED(-5, 0)) << 5) + ((SMOOTHED(2, -12) < SMOOTHED(19, -2)) << 4) + ((SMOOTHED(3, -6) < SMOOTHED(-4, -15)) << 3) + ((SMOOTHED(8, 3) < SMOOTHED(0, 14)) << 2) + ((SMOOTHED(4, -11) < SMOOTHED(5, 5)) << 1) + ((SMOOTHED(11, -7) < SMOOTHED(7, 1)) << 0)); - desc[5] = (uchar)(((SMOOTHED(6, 12) < SMOOTHED(21, 3)) << 7) + ((SMOOTHED(-3, 2) < SMOOTHED(14, 1)) << 6) + ((SMOOTHED(5, 1) < SMOOTHED(-5, 11)) << 5) + ((SMOOTHED(3, -17) < SMOOTHED(-6, 2)) << 4) + ((SMOOTHED(6, 8) < SMOOTHED(5, -10)) << 3) + ((SMOOTHED(-14, -2) < SMOOTHED(0, 4)) << 2) + ((SMOOTHED(5, -7) < SMOOTHED(-6, 5)) << 1) + ((SMOOTHED(10, 4) < SMOOTHED(4, -7)) << 0)); - desc[6] = (uchar)(((SMOOTHED(22, 0) < SMOOTHED(7, -18)) << 7) + ((SMOOTHED(-1, -3) < SMOOTHED(0, 18)) << 6) + ((SMOOTHED(-4, 22) < SMOOTHED(-5, 3)) << 5) + ((SMOOTHED(1, -7) < SMOOTHED(2, -3)) << 4) + ((SMOOTHED(19, -20) < SMOOTHED(17, -2)) << 3) + ((SMOOTHED(3, -10) < SMOOTHED(-8, 24)) << 2) + ((SMOOTHED(-5, -14) < SMOOTHED(7, 5)) << 1) + ((SMOOTHED(-2, 12) < SMOOTHED(-4, -15)) << 0)); - desc[7] = (uchar)(((SMOOTHED(4, 12) < SMOOTHED(0, -19)) << 7) + ((SMOOTHED(20, 13) < SMOOTHED(3, 5)) << 6) + ((SMOOTHED(-8, -12) < SMOOTHED(5, 0)) << 5) + ((SMOOTHED(-5, 6) < SMOOTHED(-7, -11)) << 4) + ((SMOOTHED(6, -11) < SMOOTHED(-3, -22)) << 3) + ((SMOOTHED(15, 4) < SMOOTHED(10, 1)) << 2) + ((SMOOTHED(-7, -4) < SMOOTHED(15, -6)) << 1) + ((SMOOTHED(5, 10) < SMOOTHED(0, 24)) << 0)); - desc[8] = (uchar)(((SMOOTHED(3, 6) < SMOOTHED(22, -2)) << 7) + ((SMOOTHED(-13, 14) < SMOOTHED(4, -4)) << 6) + ((SMOOTHED(-13, 8) < SMOOTHED(-18, -22)) << 5) + ((SMOOTHED(-1, -1) < SMOOTHED(-7, 3)) << 4) + ((SMOOTHED(-19, -12) < SMOOTHED(4, 3)) << 3) + ((SMOOTHED(8, 10) < SMOOTHED(13, -2)) << 2) + ((SMOOTHED(-6, -1) < SMOOTHED(-6, -5)) << 1) + ((SMOOTHED(2, -21) < SMOOTHED(-3, 2)) << 0)); - desc[9] = (uchar)(((SMOOTHED(4, -7) < SMOOTHED(0, 16)) << 7) + ((SMOOTHED(-6, -5) < SMOOTHED(-12, -1)) << 6) + ((SMOOTHED(1, -1) < SMOOTHED(9, 18)) << 5) + ((SMOOTHED(-7, 10) < SMOOTHED(-11, 6)) << 4) + ((SMOOTHED(4, 3) < SMOOTHED(19, -7)) << 3) + ((SMOOTHED(-18, 5) < SMOOTHED(-4, 5)) << 2) + ((SMOOTHED(4, 0) < SMOOTHED(-20, 4)) << 1) + ((SMOOTHED(7, -11) < SMOOTHED(18, 12)) << 0)); - desc[10] = (uchar)(((SMOOTHED(-20, 17) < SMOOTHED(-18, 7)) << 7) + ((SMOOTHED(2, 15) < SMOOTHED(19, -11)) << 6) + ((SMOOTHED(-18, 6) < SMOOTHED(-7, 3)) << 5) + ((SMOOTHED(-4, 1) < SMOOTHED(-14, 13)) << 4) + ((SMOOTHED(17, 3) < SMOOTHED(2, -8)) << 3) + ((SMOOTHED(-7, 2) < SMOOTHED(1, 6)) << 2) + ((SMOOTHED(17, -9) < SMOOTHED(-2, 8)) << 1) + ((SMOOTHED(-8, -6) < SMOOTHED(-1, 12)) << 0)); - desc[11] = (uchar)(((SMOOTHED(-2, 4) < SMOOTHED(-1, 6)) << 7) + ((SMOOTHED(-2, 7) < SMOOTHED(6, 8)) << 6) + ((SMOOTHED(-8, -1) < SMOOTHED(-7, -9)) << 5) + ((SMOOTHED(8, -9) < SMOOTHED(15, 0)) << 4) + ((SMOOTHED(0, 22) < SMOOTHED(-4, -15)) << 3) + ((SMOOTHED(-14, -1) < SMOOTHED(3, -2)) << 2) + ((SMOOTHED(-7, -4) < SMOOTHED(17, -7)) << 1) + ((SMOOTHED(-8, -2) < SMOOTHED(9, -4)) << 0)); - desc[12] = (uchar)(((SMOOTHED(5, -7) < SMOOTHED(7, 7)) << 7) + ((SMOOTHED(-5, 13) < SMOOTHED(-8, 11)) << 6) + ((SMOOTHED(11, -4) < SMOOTHED(0, 8)) << 5) + ((SMOOTHED(5, -11) < SMOOTHED(-9, -6)) << 4) + ((SMOOTHED(2, -6) < SMOOTHED(3, -20)) << 3) + ((SMOOTHED(-6, 2) < SMOOTHED(6, 10)) << 2) + ((SMOOTHED(-6, -6) < SMOOTHED(-15, 7)) << 1) + ((SMOOTHED(-6, -3) < SMOOTHED(2, 1)) << 0)); - desc[13] = (uchar)(((SMOOTHED(11, 0) < SMOOTHED(-3, 2)) << 7) + ((SMOOTHED(7, -12) < SMOOTHED(14, 5)) << 6) + ((SMOOTHED(0, -7) < SMOOTHED(-1, -1)) << 5) + ((SMOOTHED(-16, 0) < SMOOTHED(6, 8)) << 4) + ((SMOOTHED(22, 11) < SMOOTHED(0, -3)) << 3) + ((SMOOTHED(19, 0) < SMOOTHED(5, -17)) << 2) + ((SMOOTHED(-23, -14) < SMOOTHED(-13, -19)) << 1) + ((SMOOTHED(-8, 10) < SMOOTHED(-11, -2)) << 0)); - desc[14] = (uchar)(((SMOOTHED(-11, 6) < SMOOTHED(-10, 13)) << 7) + ((SMOOTHED(1, -7) < SMOOTHED(14, 0)) << 6) + ((SMOOTHED(-12, 1) < SMOOTHED(-5, -5)) << 5) + ((SMOOTHED(4, 7) < SMOOTHED(8, -1)) << 4) + ((SMOOTHED(-1, -5) < SMOOTHED(15, 2)) << 3) + ((SMOOTHED(-3, -1) < SMOOTHED(7, -10)) << 2) + ((SMOOTHED(3, -6) < SMOOTHED(10, -18)) << 1) + ((SMOOTHED(-7, -13) < SMOOTHED(-13, 10)) << 0)); - desc[15] = (uchar)(((SMOOTHED(1, -1) < SMOOTHED(13, -10)) << 7) + ((SMOOTHED(-19, 14) < SMOOTHED(8, -14)) << 6) + ((SMOOTHED(-4, -13) < SMOOTHED(7, 1)) << 5) + ((SMOOTHED(1, -2) < SMOOTHED(12, -7)) << 4) + ((SMOOTHED(3, -5) < SMOOTHED(1, -5)) << 3) + ((SMOOTHED(-2, -2) < SMOOTHED(8, -10)) << 2) + ((SMOOTHED(2, 14) < SMOOTHED(8, 7)) << 1) + ((SMOOTHED(3, 9) < SMOOTHED(8, 2)) << 0)); - desc[16] = (uchar)(((SMOOTHED(-9, 1) < SMOOTHED(-18, 0)) << 7) + ((SMOOTHED(4, 0) < SMOOTHED(1, 12)) << 6) + ((SMOOTHED(0, 9) < SMOOTHED(-14, -10)) << 5) + ((SMOOTHED(-13, -9) < SMOOTHED(-2, 6)) << 4) + ((SMOOTHED(1, 5) < SMOOTHED(10, 10)) << 3) + ((SMOOTHED(-3, -6) < SMOOTHED(-16, -5)) << 2) + ((SMOOTHED(11, 6) < SMOOTHED(-5, 0)) << 1) + ((SMOOTHED(-23, 10) < SMOOTHED(1, 2)) << 0)); - desc[17] = (uchar)(((SMOOTHED(13, -5) < SMOOTHED(-3, 9)) << 7) + ((SMOOTHED(-4, -1) < SMOOTHED(-13, -5)) << 6) + ((SMOOTHED(10, 13) < SMOOTHED(-11, 8)) << 5) + ((SMOOTHED(19, 20) < SMOOTHED(-9, 2)) << 4) + ((SMOOTHED(4, -8) < SMOOTHED(0, -9)) << 3) + ((SMOOTHED(-14, 10) < SMOOTHED(15, 19)) << 2) + ((SMOOTHED(-14, -12) < SMOOTHED(-10, -3)) << 1) + ((SMOOTHED(-23, -3) < SMOOTHED(17, -2)) << 0)); - desc[18] = (uchar)(((SMOOTHED(-3, -11) < SMOOTHED(6, -14)) << 7) + ((SMOOTHED(19, -2) < SMOOTHED(-4, 2)) << 6) + ((SMOOTHED(-5, 5) < SMOOTHED(3, -13)) << 5) + ((SMOOTHED(2, -2) < SMOOTHED(-5, 4)) << 4) + ((SMOOTHED(17, 4) < SMOOTHED(17, -11)) << 3) + ((SMOOTHED(-7, -2) < SMOOTHED(1, 23)) << 2) + ((SMOOTHED(8, 13) < SMOOTHED(1, -16)) << 1) + ((SMOOTHED(-13, -5) < SMOOTHED(1, -17)) << 0)); - desc[19] = (uchar)(((SMOOTHED(4, 6) < SMOOTHED(-8, -3)) << 7) + ((SMOOTHED(-5, -9) < SMOOTHED(-2, -10)) << 6) + ((SMOOTHED(-9, 0) < SMOOTHED(-7, -2)) << 5) + ((SMOOTHED(5, 0) < SMOOTHED(5, 2)) << 4) + ((SMOOTHED(-4, -16) < SMOOTHED(6, 3)) << 3) + ((SMOOTHED(2, -15) < SMOOTHED(-2, 12)) << 2) + ((SMOOTHED(4, -1) < SMOOTHED(6, 2)) << 1) + ((SMOOTHED(1, 1) < SMOOTHED(-2, -8)) << 0)); - desc[20] = (uchar)(((SMOOTHED(-2, 12) < SMOOTHED(-5, -2)) << 7) + ((SMOOTHED(-8, 8) < SMOOTHED(-9, 9)) << 6) + ((SMOOTHED(2, -10) < SMOOTHED(3, 1)) << 5) + ((SMOOTHED(-4, 10) < SMOOTHED(-9, 4)) << 4) + ((SMOOTHED(6, 12) < SMOOTHED(2, 5)) << 3) + ((SMOOTHED(-3, -8) < SMOOTHED(0, 5)) << 2) + ((SMOOTHED(-13, 1) < SMOOTHED(-7, 2)) << 1) + ((SMOOTHED(-1, -10) < SMOOTHED(7, -18)) << 0)); - desc[21] = (uchar)(((SMOOTHED(-1, 8) < SMOOTHED(-9, -10)) << 7) + ((SMOOTHED(-23, -1) < SMOOTHED(6, 2)) << 6) + ((SMOOTHED(-5, -3) < SMOOTHED(3, 2)) << 5) + ((SMOOTHED(0, 11) < SMOOTHED(-4, -7)) << 4) + ((SMOOTHED(15, 2) < SMOOTHED(-10, -3)) << 3) + ((SMOOTHED(-20, -8) < SMOOTHED(-13, 3)) << 2) + ((SMOOTHED(-19, -12) < SMOOTHED(5, -11)) << 1) + ((SMOOTHED(-17, -13) < SMOOTHED(-3, 2)) << 0)); - desc[22] = (uchar)(((SMOOTHED(7, 4) < SMOOTHED(-12, 0)) << 7) + ((SMOOTHED(5, -1) < SMOOTHED(-14, -6)) << 6) + ((SMOOTHED(-4, 11) < SMOOTHED(0, -4)) << 5) + ((SMOOTHED(3, 10) < SMOOTHED(7, -3)) << 4) + ((SMOOTHED(13, 21) < SMOOTHED(-11, 6)) << 3) + ((SMOOTHED(-12, 24) < SMOOTHED(-7, -4)) << 2) + ((SMOOTHED(4, 16) < SMOOTHED(3, -14)) << 1) + ((SMOOTHED(-3, 5) < SMOOTHED(-7, -12)) << 0)); - desc[23] = (uchar)(((SMOOTHED(0, -4) < SMOOTHED(7, -5)) << 7) + ((SMOOTHED(-17, -9) < SMOOTHED(13, -7)) << 6) + ((SMOOTHED(22, -6) < SMOOTHED(-11, 5)) << 5) + ((SMOOTHED(2, -8) < SMOOTHED(23, -11)) << 4) + ((SMOOTHED(7, -10) < SMOOTHED(-1, 14)) << 3) + ((SMOOTHED(-3, -10) < SMOOTHED(8, 3)) << 2) + ((SMOOTHED(-13, 1) < SMOOTHED(-6, 0)) << 1) + ((SMOOTHED(-7, -21) < SMOOTHED(6, -14)) << 0)); - desc[24] = (uchar)(((SMOOTHED(18, 19) < SMOOTHED(-4, -6)) << 7) + ((SMOOTHED(10, 7) < SMOOTHED(-1, -4)) << 6) + ((SMOOTHED(-1, 21) < SMOOTHED(1, -5)) << 5) + ((SMOOTHED(-10, 6) < SMOOTHED(-11, -2)) << 4) + ((SMOOTHED(18, -3) < SMOOTHED(-1, 7)) << 3) + ((SMOOTHED(-3, -9) < SMOOTHED(-5, 10)) << 2) + ((SMOOTHED(-13, 14) < SMOOTHED(17, -3)) << 1) + ((SMOOTHED(11, -19) < SMOOTHED(-1, -18)) << 0)); - desc[25] = (uchar)(((SMOOTHED(8, -2) < SMOOTHED(-18, -23)) << 7) + ((SMOOTHED(0, -5) < SMOOTHED(-2, -9)) << 6) + ((SMOOTHED(-4, -11) < SMOOTHED(2, -8)) << 5) + ((SMOOTHED(14, 6) < SMOOTHED(-3, -6)) << 4) + ((SMOOTHED(-3, 0) < SMOOTHED(-15, 0)) << 3) + ((SMOOTHED(-9, 4) < SMOOTHED(-15, -9)) << 2) + ((SMOOTHED(-1, 11) < SMOOTHED(3, 11)) << 1) + ((SMOOTHED(-10, -16) < SMOOTHED(-7, 7)) << 0)); - desc[26] = (uchar)(((SMOOTHED(-2, -10) < SMOOTHED(-10, -2)) << 7) + ((SMOOTHED(-5, -3) < SMOOTHED(5, -23)) << 6) + ((SMOOTHED(13, -8) < SMOOTHED(-15, -11)) << 5) + ((SMOOTHED(-15, 11) < SMOOTHED(6, -6)) << 4) + ((SMOOTHED(-16, -3) < SMOOTHED(-2, 2)) << 3) + ((SMOOTHED(6, 12) < SMOOTHED(-16, 24)) << 2) + ((SMOOTHED(-10, 0) < SMOOTHED(8, 11)) << 1) + ((SMOOTHED(-7, 7) < SMOOTHED(-19, -7)) << 0)); - desc[27] = (uchar)(((SMOOTHED(5, 16) < SMOOTHED(9, -3)) << 7) + ((SMOOTHED(9, 7) < SMOOTHED(-7, -16)) << 6) + ((SMOOTHED(3, 2) < SMOOTHED(-10, 9)) << 5) + ((SMOOTHED(21, 1) < SMOOTHED(8, 7)) << 4) + ((SMOOTHED(7, 0) < SMOOTHED(1, 17)) << 3) + ((SMOOTHED(-8, 12) < SMOOTHED(9, 6)) << 2) + ((SMOOTHED(11, -7) < SMOOTHED(-8, -6)) << 1) + ((SMOOTHED(19, 0) < SMOOTHED(9, 3)) << 0)); - desc[28] = (uchar)(((SMOOTHED(1, -7) < SMOOTHED(-5, -11)) << 7) + ((SMOOTHED(0, 8) < SMOOTHED(-2, 14)) << 6) + ((SMOOTHED(12, -2) < SMOOTHED(-15, -6)) << 5) + ((SMOOTHED(4, 12) < SMOOTHED(0, -21)) << 4) + ((SMOOTHED(17, -4) < SMOOTHED(-6, -7)) << 3) + ((SMOOTHED(-10, -9) < SMOOTHED(-14, -7)) << 2) + ((SMOOTHED(-15, -10) < SMOOTHED(-15, -14)) << 1) + ((SMOOTHED(-7, -5) < SMOOTHED(5, -12)) << 0)); - desc[29] = (uchar)(((SMOOTHED(-4, 0) < SMOOTHED(15, -4)) << 7) + ((SMOOTHED(5, 2) < SMOOTHED(-6, -23)) << 6) + ((SMOOTHED(-4, -21) < SMOOTHED(-6, 4)) << 5) + ((SMOOTHED(-10, 5) < SMOOTHED(-15, 6)) << 4) + ((SMOOTHED(4, -3) < SMOOTHED(-1, 5)) << 3) + ((SMOOTHED(-4, 19) < SMOOTHED(-23, -4)) << 2) + ((SMOOTHED(-4, 17) < SMOOTHED(13, -11)) << 1) + ((SMOOTHED(1, 12) < SMOOTHED(4, -14)) << 0)); - desc[30] = (uchar)(((SMOOTHED(-11, -6) < SMOOTHED(-20, 10)) << 7) + ((SMOOTHED(4, 5) < SMOOTHED(3, 20)) << 6) + ((SMOOTHED(-8, -20) < SMOOTHED(3, 1)) << 5) + ((SMOOTHED(-19, 9) < SMOOTHED(9, -3)) << 4) + ((SMOOTHED(18, 15) < SMOOTHED(11, -4)) << 3) + ((SMOOTHED(12, 16) < SMOOTHED(8, 7)) << 2) + ((SMOOTHED(-14, -8) < SMOOTHED(-3, 9)) << 1) + ((SMOOTHED(-6, 0) < SMOOTHED(2, -4)) << 0)); - desc[31] = (uchar)(((SMOOTHED(1, -10) < SMOOTHED(-1, 2)) << 7) + ((SMOOTHED(8, -7) < SMOOTHED(-6, 18)) << 6) + ((SMOOTHED(9, 12) < SMOOTHED(-7, -23)) << 5) + ((SMOOTHED(8, -6) < SMOOTHED(5, 2)) << 4) + ((SMOOTHED(-9, 6) < SMOOTHED(-12, -7)) << 3) + ((SMOOTHED(-1, -2) < SMOOTHED(-7, 2)) << 2) + ((SMOOTHED(9, 9) < SMOOTHED(7, 15)) << 1) + ((SMOOTHED(6, 2) < SMOOTHED(-6, 6)) << 0)); - desc[32] = (uchar)(((SMOOTHED(16, 12) < SMOOTHED(0, 19)) << 7) + ((SMOOTHED(4, 3) < SMOOTHED(6, 0)) << 6) + ((SMOOTHED(-2, -1) < SMOOTHED(2, 17)) << 5) + ((SMOOTHED(8, 1) < SMOOTHED(3, 1)) << 4) + ((SMOOTHED(-12, -1) < SMOOTHED(-11, 0)) << 3) + ((SMOOTHED(-11, 2) < SMOOTHED(7, 9)) << 2) + ((SMOOTHED(-1, 3) < SMOOTHED(-19, 4)) << 1) + ((SMOOTHED(-1, -11) < SMOOTHED(-1, 3)) << 0)); - desc[33] = (uchar)(((SMOOTHED(1, -10) < SMOOTHED(-10, -4)) << 7) + ((SMOOTHED(-2, 3) < SMOOTHED(6, 11)) << 6) + ((SMOOTHED(3, 7) < SMOOTHED(-9, -8)) << 5) + ((SMOOTHED(24, -14) < SMOOTHED(-2, -10)) << 4) + ((SMOOTHED(-3, -3) < SMOOTHED(-18, -6)) << 3) + ((SMOOTHED(-13, -10) < SMOOTHED(-7, -1)) << 2) + ((SMOOTHED(2, -7) < SMOOTHED(9, -6)) << 1) + ((SMOOTHED(2, -4) < SMOOTHED(6, -13)) << 0)); - desc[34] = (uchar)(((SMOOTHED(4, -4) < SMOOTHED(-2, 3)) << 7) + ((SMOOTHED(-4, 2) < SMOOTHED(9, 13)) << 6) + ((SMOOTHED(-11, 5) < SMOOTHED(-6, -11)) << 5) + ((SMOOTHED(4, -2) < SMOOTHED(11, -9)) << 4) + ((SMOOTHED(-19, 0) < SMOOTHED(-23, -5)) << 3) + ((SMOOTHED(-5, -7) < SMOOTHED(-3, -6)) << 2) + ((SMOOTHED(-6, -4) < SMOOTHED(12, 14)) << 1) + ((SMOOTHED(12, -11) < SMOOTHED(-8, -16)) << 0)); - desc[35] = (uchar)(((SMOOTHED(-21, 15) < SMOOTHED(-12, 6)) << 7) + ((SMOOTHED(-2, -1) < SMOOTHED(-8, 16)) << 6) + ((SMOOTHED(6, -1) < SMOOTHED(-8, -2)) << 5) + ((SMOOTHED(1, -1) < SMOOTHED(-9, 8)) << 4) + ((SMOOTHED(3, -4) < SMOOTHED(-2, -2)) << 3) + ((SMOOTHED(-7, 0) < SMOOTHED(4, -8)) << 2) + ((SMOOTHED(11, -11) < SMOOTHED(-12, 2)) << 1) + ((SMOOTHED(2, 3) < SMOOTHED(11, 7)) << 0)); - desc[36] = (uchar)(((SMOOTHED(-7, -4) < SMOOTHED(-9, -6)) << 7) + ((SMOOTHED(3, -7) < SMOOTHED(-5, 0)) << 6) + ((SMOOTHED(3, -7) < SMOOTHED(-10, -5)) << 5) + ((SMOOTHED(-3, -1) < SMOOTHED(8, -10)) << 4) + ((SMOOTHED(0, 8) < SMOOTHED(5, 1)) << 3) + ((SMOOTHED(9, 0) < SMOOTHED(1, 16)) << 2) + ((SMOOTHED(8, 4) < SMOOTHED(-11, -3)) << 1) + ((SMOOTHED(-15, 9) < SMOOTHED(8, 17)) << 0)); - desc[37] = (uchar)(((SMOOTHED(0, 2) < SMOOTHED(-9, 17)) << 7) + ((SMOOTHED(-6, -11) < SMOOTHED(-10, -3)) << 6) + ((SMOOTHED(1, 1) < SMOOTHED(15, -8)) << 5) + ((SMOOTHED(-12, -13) < SMOOTHED(-2, 4)) << 4) + ((SMOOTHED(-6, 4) < SMOOTHED(-6, -10)) << 3) + ((SMOOTHED(5, -7) < SMOOTHED(7, -5)) << 2) + ((SMOOTHED(10, 6) < SMOOTHED(8, 9)) << 1) + ((SMOOTHED(-5, 7) < SMOOTHED(-18, -3)) << 0)); - desc[38] = (uchar)(((SMOOTHED(-6, 3) < SMOOTHED(5, 4)) << 7) + ((SMOOTHED(-10, -13) < SMOOTHED(-5, -3)) << 6) + ((SMOOTHED(-11, 2) < SMOOTHED(-16, 0)) << 5) + ((SMOOTHED(7, -21) < SMOOTHED(-5, -13)) << 4) + ((SMOOTHED(-14, -14) < SMOOTHED(-4, -4)) << 3) + ((SMOOTHED(4, 9) < SMOOTHED(7, -3)) << 2) + ((SMOOTHED(4, 11) < SMOOTHED(10, -4)) << 1) + ((SMOOTHED(6, 17) < SMOOTHED(9, 17)) << 0)); - desc[39] = (uchar)(((SMOOTHED(-10, 8) < SMOOTHED(0, -11)) << 7) + ((SMOOTHED(-6, -16) < SMOOTHED(-6, 8)) << 6) + ((SMOOTHED(-13, 5) < SMOOTHED(10, -5)) << 5) + ((SMOOTHED(3, 2) < SMOOTHED(12, 16)) << 4) + ((SMOOTHED(13, -8) < SMOOTHED(0, -6)) << 3) + ((SMOOTHED(10, 0) < SMOOTHED(4, -11)) << 2) + ((SMOOTHED(8, 5) < SMOOTHED(10, -2)) << 1) + ((SMOOTHED(11, -7) < SMOOTHED(-13, 3)) << 0)); - desc[40] = (uchar)(((SMOOTHED(2, 4) < SMOOTHED(-7, -3)) << 7) + ((SMOOTHED(-14, -2) < SMOOTHED(-11, 16)) << 6) + ((SMOOTHED(11, -6) < SMOOTHED(7, 6)) << 5) + ((SMOOTHED(-3, 15) < SMOOTHED(8, -10)) << 4) + ((SMOOTHED(-3, 8) < SMOOTHED(12, -12)) << 3) + ((SMOOTHED(-13, 6) < SMOOTHED(-14, 7)) << 2) + ((SMOOTHED(-11, -5) < SMOOTHED(-8, -6)) << 1) + ((SMOOTHED(7, -6) < SMOOTHED(6, 3)) << 0)); - desc[41] = (uchar)(((SMOOTHED(-4, 10) < SMOOTHED(5, 1)) << 7) + ((SMOOTHED(9, 16) < SMOOTHED(10, 13)) << 6) + ((SMOOTHED(-17, 10) < SMOOTHED(2, 8)) << 5) + ((SMOOTHED(-5, 1) < SMOOTHED(4, -4)) << 4) + ((SMOOTHED(-14, 8) < SMOOTHED(-5, 2)) << 3) + ((SMOOTHED(4, -9) < SMOOTHED(-6, -3)) << 2) + ((SMOOTHED(3, -7) < SMOOTHED(-10, 0)) << 1) + ((SMOOTHED(-2, -8) < SMOOTHED(-10, 4)) << 0)); - desc[42] = (uchar)(((SMOOTHED(-8, 5) < SMOOTHED(-9, 24)) << 7) + ((SMOOTHED(2, -8) < SMOOTHED(8, -9)) << 6) + ((SMOOTHED(-4, 17) < SMOOTHED(-5, 2)) << 5) + ((SMOOTHED(14, 0) < SMOOTHED(-9, 9)) << 4) + ((SMOOTHED(11, 15) < SMOOTHED(-6, 5)) << 3) + ((SMOOTHED(-8, 1) < SMOOTHED(-3, 4)) << 2) + ((SMOOTHED(9, -21) < SMOOTHED(10, 2)) << 1) + ((SMOOTHED(2, -1) < SMOOTHED(4, 11)) << 0)); - desc[43] = (uchar)(((SMOOTHED(24, 3) < SMOOTHED(2, -2)) << 7) + ((SMOOTHED(-8, 17) < SMOOTHED(-14, -10)) << 6) + ((SMOOTHED(6, 5) < SMOOTHED(-13, 7)) << 5) + ((SMOOTHED(11, 10) < SMOOTHED(0, -1)) << 4) + ((SMOOTHED(4, 6) < SMOOTHED(-10, 6)) << 3) + ((SMOOTHED(-12, -2) < SMOOTHED(5, 6)) << 2) + ((SMOOTHED(3, -1) < SMOOTHED(8, -15)) << 1) + ((SMOOTHED(1, -4) < SMOOTHED(-7, 11)) << 0)); - desc[44] = (uchar)(((SMOOTHED(1, 11) < SMOOTHED(5, 0)) << 7) + ((SMOOTHED(6, -12) < SMOOTHED(10, 1)) << 6) + ((SMOOTHED(-3, -2) < SMOOTHED(-1, 4)) << 5) + ((SMOOTHED(-2, -11) < SMOOTHED(-1, 12)) << 4) + ((SMOOTHED(7, -8) < SMOOTHED(-20, -18)) << 3) + ((SMOOTHED(2, 0) < SMOOTHED(-9, 2)) << 2) + ((SMOOTHED(-13, -1) < SMOOTHED(-16, 2)) << 1) + ((SMOOTHED(3, -1) < SMOOTHED(-5, -17)) << 0)); - desc[45] = (uchar)(((SMOOTHED(15, 8) < SMOOTHED(3, -14)) << 7) + ((SMOOTHED(-13, -12) < SMOOTHED(6, 15)) << 6) + ((SMOOTHED(2, -8) < SMOOTHED(2, 6)) << 5) + ((SMOOTHED(6, 22) < SMOOTHED(-3, -23)) << 4) + ((SMOOTHED(-2, -7) < SMOOTHED(-6, 0)) << 3) + ((SMOOTHED(13, -10) < SMOOTHED(-6, 6)) << 2) + ((SMOOTHED(6, 7) < SMOOTHED(-10, 12)) << 1) + ((SMOOTHED(-6, 7) < SMOOTHED(-2, 11)) << 0)); - desc[46] = (uchar)(((SMOOTHED(0, -22) < SMOOTHED(-2, -17)) << 7) + ((SMOOTHED(-4, -1) < SMOOTHED(-11, -14)) << 6) + ((SMOOTHED(-2, -8) < SMOOTHED(7, 12)) << 5) + ((SMOOTHED(12, -5) < SMOOTHED(7, -13)) << 4) + ((SMOOTHED(2, -2) < SMOOTHED(-7, 6)) << 3) + ((SMOOTHED(0, 8) < SMOOTHED(-3, 23)) << 2) + ((SMOOTHED(6, 12) < SMOOTHED(13, -11)) << 1) + ((SMOOTHED(-21, -10) < SMOOTHED(10, 8)) << 0)); - desc[47] = (uchar)(((SMOOTHED(-3, 0) < SMOOTHED(7, 15)) << 7) + ((SMOOTHED(7, -6) < SMOOTHED(-5, -12)) << 6) + ((SMOOTHED(-21, -10) < SMOOTHED(12, -11)) << 5) + ((SMOOTHED(-5, -11) < SMOOTHED(8, -11)) << 4) + ((SMOOTHED(5, 0) < SMOOTHED(-11, -1)) << 3) + ((SMOOTHED(8, -9) < SMOOTHED(7, -1)) << 2) + ((SMOOTHED(11, -23) < SMOOTHED(21, -5)) << 1) + ((SMOOTHED(0, -5) < SMOOTHED(-8, 6)) << 0)); - desc[48] = (uchar)(((SMOOTHED(-6, 8) < SMOOTHED(8, 12)) << 7) + ((SMOOTHED(-7, 5) < SMOOTHED(3, -2)) << 6) + ((SMOOTHED(-5, -20) < SMOOTHED(-12, 9)) << 5) + ((SMOOTHED(-6, 12) < SMOOTHED(-11, 3)) << 4) + ((SMOOTHED(4, 5) < SMOOTHED(13, 11)) << 3) + ((SMOOTHED(2, 12) < SMOOTHED(13, -12)) << 2) + ((SMOOTHED(-4, -13) < SMOOTHED(4, 7)) << 1) + ((SMOOTHED(0, 15) < SMOOTHED(-3, -16)) << 0)); - desc[49] = (uchar)(((SMOOTHED(-3, 2) < SMOOTHED(-2, 14)) << 7) + ((SMOOTHED(4, -14) < SMOOTHED(16, -11)) << 6) + ((SMOOTHED(-13, 3) < SMOOTHED(23, 10)) << 5) + ((SMOOTHED(9, -19) < SMOOTHED(2, 5)) << 4) + ((SMOOTHED(5, 3) < SMOOTHED(14, -7)) << 3) + ((SMOOTHED(19, -13) < SMOOTHED(-11, 15)) << 2) + ((SMOOTHED(14, 0) < SMOOTHED(-2, -5)) << 1) + ((SMOOTHED(11, -4) < SMOOTHED(0, -6)) << 0)); - desc[50] = (uchar)(((SMOOTHED(-2, 5) < SMOOTHED(-13, -8)) << 7) + ((SMOOTHED(-11, -15) < SMOOTHED(-7, -17)) << 6) + ((SMOOTHED(1, 3) < SMOOTHED(-10, -8)) << 5) + ((SMOOTHED(-13, -10) < SMOOTHED(7, -12)) << 4) + ((SMOOTHED(0, -13) < SMOOTHED(23, -6)) << 3) + ((SMOOTHED(2, -17) < SMOOTHED(-7, -3)) << 2) + ((SMOOTHED(1, 3) < SMOOTHED(4, -10)) << 1) + ((SMOOTHED(13, 4) < SMOOTHED(14, -6)) << 0)); - desc[51] = (uchar)(((SMOOTHED(-19, -2) < SMOOTHED(-1, 5)) << 7) + ((SMOOTHED(9, -8) < SMOOTHED(10, -5)) << 6) + ((SMOOTHED(7, -1) < SMOOTHED(5, 7)) << 5) + ((SMOOTHED(9, -10) < SMOOTHED(19, 0)) << 4) + ((SMOOTHED(7, 5) < SMOOTHED(-4, -7)) << 3) + ((SMOOTHED(-11, 1) < SMOOTHED(-1, -11)) << 2) + ((SMOOTHED(2, -1) < SMOOTHED(-4, 11)) << 1) + ((SMOOTHED(-1, 7) < SMOOTHED(2, -2)) << 0)); - desc[52] = (uchar)(((SMOOTHED(1, -20) < SMOOTHED(-9, -6)) << 7) + ((SMOOTHED(-4, -18) < SMOOTHED(8, -18)) << 6) + ((SMOOTHED(-16, -2) < SMOOTHED(7, -6)) << 5) + ((SMOOTHED(-3, -6) < SMOOTHED(-1, -4)) << 4) + ((SMOOTHED(0, -16) < SMOOTHED(24, -5)) << 3) + ((SMOOTHED(-4, -2) < SMOOTHED(-1, 9)) << 2) + ((SMOOTHED(-8, 2) < SMOOTHED(-6, 15)) << 1) + ((SMOOTHED(11, 4) < SMOOTHED(0, -3)) << 0)); - desc[53] = (uchar)(((SMOOTHED(7, 6) < SMOOTHED(2, -10)) << 7) + ((SMOOTHED(-7, -9) < SMOOTHED(12, -6)) << 6) + ((SMOOTHED(24, 15) < SMOOTHED(-8, -1)) << 5) + ((SMOOTHED(15, -9) < SMOOTHED(-3, -15)) << 4) + ((SMOOTHED(17, -5) < SMOOTHED(11, -10)) << 3) + ((SMOOTHED(-2, 13) < SMOOTHED(-15, 4)) << 2) + ((SMOOTHED(-2, -1) < SMOOTHED(4, -23)) << 1) + ((SMOOTHED(-16, 3) < SMOOTHED(-7, -14)) << 0)); - desc[54] = (uchar)(((SMOOTHED(-3, -5) < SMOOTHED(-10, -9)) << 7) + ((SMOOTHED(-5, 3) < SMOOTHED(-2, -1)) << 6) + ((SMOOTHED(-1, 4) < SMOOTHED(1, 8)) << 5) + ((SMOOTHED(12, 9) < SMOOTHED(9, -14)) << 4) + ((SMOOTHED(-9, 17) < SMOOTHED(-3, 0)) << 3) + ((SMOOTHED(5, 4) < SMOOTHED(13, -6)) << 2) + ((SMOOTHED(-1, -8) < SMOOTHED(19, 10)) << 1) + ((SMOOTHED(8, -5) < SMOOTHED(-15, 2)) << 0)); - desc[55] = (uchar)(((SMOOTHED(-12, -9) < SMOOTHED(-4, -5)) << 7) + ((SMOOTHED(12, 0) < SMOOTHED(24, 4)) << 6) + ((SMOOTHED(8, -2) < SMOOTHED(14, 4)) << 5) + ((SMOOTHED(8, -4) < SMOOTHED(-7, 16)) << 4) + ((SMOOTHED(5, -1) < SMOOTHED(-8, -4)) << 3) + ((SMOOTHED(-2, 18) < SMOOTHED(-5, 17)) << 2) + ((SMOOTHED(8, -2) < SMOOTHED(-9, -2)) << 1) + ((SMOOTHED(3, -7) < SMOOTHED(1, -6)) << 0)); - desc[56] = (uchar)(((SMOOTHED(-5, -22) < SMOOTHED(-5, -2)) << 7) + ((SMOOTHED(-8, -10) < SMOOTHED(14, 1)) << 6) + ((SMOOTHED(-3, -13) < SMOOTHED(3, 9)) << 5) + ((SMOOTHED(-4, -1) < SMOOTHED(-1, 0)) << 4) + ((SMOOTHED(-7, -21) < SMOOTHED(12, -19)) << 3) + ((SMOOTHED(-8, 8) < SMOOTHED(24, 8)) << 2) + ((SMOOTHED(12, -6) < SMOOTHED(-2, 3)) << 1) + ((SMOOTHED(-5, -11) < SMOOTHED(-22, -4)) << 0)); - desc[57] = (uchar)(((SMOOTHED(-3, 5) < SMOOTHED(-4, 4)) << 7) + ((SMOOTHED(-16, 24) < SMOOTHED(7, -9)) << 6) + ((SMOOTHED(-10, 23) < SMOOTHED(-9, 18)) << 5) + ((SMOOTHED(1, 12) < SMOOTHED(17, 21)) << 4) + ((SMOOTHED(24, -6) < SMOOTHED(-3, -11)) << 3) + ((SMOOTHED(-7, 17) < SMOOTHED(1, -6)) << 2) + ((SMOOTHED(4, 4) < SMOOTHED(2, -7)) << 1) + ((SMOOTHED(14, 6) < SMOOTHED(-12, 3)) << 0)); - desc[58] = (uchar)(((SMOOTHED(-6, 0) < SMOOTHED(-16, 13)) << 7) + ((SMOOTHED(-10, 5) < SMOOTHED(7, 12)) << 6) + ((SMOOTHED(5, 2) < SMOOTHED(6, -3)) << 5) + ((SMOOTHED(7, 0) < SMOOTHED(-23, 1)) << 4) + ((SMOOTHED(15, -5) < SMOOTHED(1, 14)) << 3) + ((SMOOTHED(-3, -1) < SMOOTHED(6, 6)) << 2) + ((SMOOTHED(6, -9) < SMOOTHED(-9, 12)) << 1) + ((SMOOTHED(4, -2) < SMOOTHED(-4, 7)) << 0)); - desc[59] = (uchar)(((SMOOTHED(-4, -5) < SMOOTHED(4, 4)) << 7) + ((SMOOTHED(-13, 0) < SMOOTHED(6, -10)) << 6) + ((SMOOTHED(2, -12) < SMOOTHED(-6, -3)) << 5) + ((SMOOTHED(16, 0) < SMOOTHED(-3, 3)) << 4) + ((SMOOTHED(5, -14) < SMOOTHED(6, 11)) << 3) + ((SMOOTHED(5, 11) < SMOOTHED(0, -13)) << 2) + ((SMOOTHED(7, 5) < SMOOTHED(-1, -5)) << 1) + ((SMOOTHED(12, 4) < SMOOTHED(6, 10)) << 0)); - desc[60] = (uchar)(((SMOOTHED(-10, 4) < SMOOTHED(-1, -11)) << 7) + ((SMOOTHED(4, 10) < SMOOTHED(-14, 5)) << 6) + ((SMOOTHED(11, -14) < SMOOTHED(-13, 0)) << 5) + ((SMOOTHED(2, 8) < SMOOTHED(12, 24)) << 4) + ((SMOOTHED(-1, 3) < SMOOTHED(-1, 2)) << 3) + ((SMOOTHED(9, -14) < SMOOTHED(-23, 3)) << 2) + ((SMOOTHED(-8, -6) < SMOOTHED(0, 9)) << 1) + ((SMOOTHED(-15, 14) < SMOOTHED(10, -10)) << 0)); - desc[61] = (uchar)(((SMOOTHED(-10, -6) < SMOOTHED(-7, -5)) << 7) + ((SMOOTHED(11, 5) < SMOOTHED(-3, -15)) << 6) + ((SMOOTHED(1, 0) < SMOOTHED(1, 8)) << 5) + ((SMOOTHED(-11, -6) < SMOOTHED(-4, -18)) << 4) + ((SMOOTHED(9, 0) < SMOOTHED(22, -4)) << 3) + ((SMOOTHED(-5, -1) < SMOOTHED(-9, 4)) << 2) + ((SMOOTHED(-20, 2) < SMOOTHED(1, 6)) << 1) + ((SMOOTHED(1, 2) < SMOOTHED(-9, -12)) << 0)); - desc[62] = (uchar)(((SMOOTHED(5, 15) < SMOOTHED(4, -6)) << 7) + ((SMOOTHED(19, 4) < SMOOTHED(4, 11)) << 6) + ((SMOOTHED(17, -4) < SMOOTHED(-8, -1)) << 5) + ((SMOOTHED(-8, -12) < SMOOTHED(7, -3)) << 4) + ((SMOOTHED(11, 9) < SMOOTHED(8, 1)) << 3) + ((SMOOTHED(9, 22) < SMOOTHED(-15, 15)) << 2) + ((SMOOTHED(-7, -7) < SMOOTHED(1, -23)) << 1) + ((SMOOTHED(-5, 13) < SMOOTHED(-8, 2)) << 0)); - desc[63] = (uchar)(((SMOOTHED(3, -5) < SMOOTHED(11, -11)) << 7) + ((SMOOTHED(3, -18) < SMOOTHED(14, -5)) << 6) + ((SMOOTHED(-20, 7) < SMOOTHED(-10, -23)) << 5) + ((SMOOTHED(-2, -5) < SMOOTHED(6, 0)) << 4) + ((SMOOTHED(-17, -13) < SMOOTHED(-3, 2)) << 3) + ((SMOOTHED(-6, -1) < SMOOTHED(14, -2)) << 2) + ((SMOOTHED(-12, -16) < SMOOTHED(15, 6)) << 1) + ((SMOOTHED(-12, -2) < SMOOTHED(3, -19)) << 0)); -#undef SMOOTHED diff --git a/modules/features2d/src/matchers.cpp b/modules/features2d/src/matchers.cpp index 1ae1340d1d..363bea3a1d 100644 --- a/modules/features2d/src/matchers.cpp +++ b/modules/features2d/src/matchers.cpp @@ -50,26 +50,7 @@ namespace cv { -Mat windowedMatchingMask( const std::vector& keypoints1, const std::vector& keypoints2, - float maxDeltaX, float maxDeltaY ) -{ - if( keypoints1.empty() || keypoints2.empty() ) - return Mat(); - - int n1 = (int)keypoints1.size(), n2 = (int)keypoints2.size(); - Mat mask( n1, n2, CV_8UC1 ); - for( int i = 0; i < n1; i++ ) - { - for( int j = 0; j < n2; j++ ) - { - Point2f diff = keypoints2[j].pt - keypoints1[i].pt; - mask.at(i, j) = std::abs(diff.x) < maxDeltaX && std::abs(diff.y) < maxDeltaY; - } - } - return mask; -} - -//////////////////////////////////////////////////////////////////ocl functions for BFMatcher /////////////////////////////////////////////////////////////// +/////////////////////// ocl functions for BFMatcher /////////////////////////// static void ensureSizeIsEnough(int rows, int cols, int type, UMat &m) { @@ -1507,382 +1488,4 @@ void FlannBasedMatcher::radiusMatchImpl( InputArray _queryDescriptors, std::vect convertToDMatches( mergedDescriptors, indices, dists, matches ); } -/****************************************************************************************\ -* GenericDescriptorMatcher * -\****************************************************************************************/ -/* - * KeyPointCollection - */ -GenericDescriptorMatcher::KeyPointCollection::KeyPointCollection() : pointCount(0) -{} - -GenericDescriptorMatcher::KeyPointCollection::KeyPointCollection( const KeyPointCollection& collection ) -{ - pointCount = collection.pointCount; - - std::transform( collection.images.begin(), collection.images.end(), images.begin(), clone_op ); - - keypoints.resize( collection.keypoints.size() ); - for( size_t i = 0; i < keypoints.size(); i++ ) - std::copy( collection.keypoints[i].begin(), collection.keypoints[i].end(), keypoints[i].begin() ); - - std::copy( collection.startIndices.begin(), collection.startIndices.end(), startIndices.begin() ); -} - -void GenericDescriptorMatcher::KeyPointCollection::add( const std::vector& _images, - const std::vector >& _points ) -{ - CV_Assert( !_images.empty() ); - CV_Assert( _images.size() == _points.size() ); - - images.insert( images.end(), _images.begin(), _images.end() ); - keypoints.insert( keypoints.end(), _points.begin(), _points.end() ); - for( size_t i = 0; i < _points.size(); i++ ) - pointCount += (int)_points[i].size(); - - size_t prevSize = startIndices.size(), addSize = _images.size(); - startIndices.resize( prevSize + addSize ); - - if( prevSize == 0 ) - startIndices[prevSize] = 0; //first - else - startIndices[prevSize] = (int)(startIndices[prevSize-1] + keypoints[prevSize-1].size()); - - for( size_t i = prevSize + 1; i < prevSize + addSize; i++ ) - { - startIndices[i] = (int)(startIndices[i - 1] + keypoints[i - 1].size()); - } -} - -void GenericDescriptorMatcher::KeyPointCollection::clear() -{ - pointCount = 0; - - images.clear(); - keypoints.clear(); - startIndices.clear(); -} - -size_t GenericDescriptorMatcher::KeyPointCollection::keypointCount() const -{ - return pointCount; -} - -size_t GenericDescriptorMatcher::KeyPointCollection::imageCount() const -{ - return images.size(); -} - -const std::vector >& GenericDescriptorMatcher::KeyPointCollection::getKeypoints() const -{ - return keypoints; -} - -const std::vector& GenericDescriptorMatcher::KeyPointCollection::getKeypoints( int imgIdx ) const -{ - CV_Assert( imgIdx < (int)imageCount() ); - return keypoints[imgIdx]; -} - -const KeyPoint& GenericDescriptorMatcher::KeyPointCollection::getKeyPoint( int imgIdx, int localPointIdx ) const -{ - CV_Assert( imgIdx < (int)images.size() ); - CV_Assert( localPointIdx < (int)keypoints[imgIdx].size() ); - return keypoints[imgIdx][localPointIdx]; -} - -const KeyPoint& GenericDescriptorMatcher::KeyPointCollection::getKeyPoint( int globalPointIdx ) const -{ - int imgIdx, localPointIdx; - getLocalIdx( globalPointIdx, imgIdx, localPointIdx ); - return keypoints[imgIdx][localPointIdx]; -} - -void GenericDescriptorMatcher::KeyPointCollection::getLocalIdx( int globalPointIdx, int& imgIdx, int& localPointIdx ) const -{ - imgIdx = -1; - CV_Assert( globalPointIdx < (int)keypointCount() ); - for( size_t i = 1; i < startIndices.size(); i++ ) - { - if( globalPointIdx < startIndices[i] ) - { - imgIdx = (int)(i - 1); - break; - } - } - imgIdx = imgIdx == -1 ? (int)(startIndices.size() - 1) : imgIdx; - localPointIdx = globalPointIdx - startIndices[imgIdx]; -} - -const std::vector& GenericDescriptorMatcher::KeyPointCollection::getImages() const -{ - return images; -} - -const Mat& GenericDescriptorMatcher::KeyPointCollection::getImage( int imgIdx ) const -{ - CV_Assert( imgIdx < (int)imageCount() ); - return images[imgIdx]; -} - -/* - * GenericDescriptorMatcher - */ -GenericDescriptorMatcher::GenericDescriptorMatcher() -{} - -GenericDescriptorMatcher::~GenericDescriptorMatcher() -{} - -void GenericDescriptorMatcher::add( InputArrayOfArrays _images, - std::vector >& keypoints ) -{ - std::vector images; - _images.getMatVector(images); - CV_Assert( !images.empty() ); - CV_Assert( images.size() == keypoints.size() ); - - for( size_t i = 0; i < images.size(); i++ ) - { - CV_Assert( !images[i].empty() ); - KeyPointsFilter::runByImageBorder( keypoints[i], images[i].size(), 0 ); - KeyPointsFilter::runByKeypointSize( keypoints[i], std::numeric_limits::epsilon() ); - } - - trainPointCollection.add( images, keypoints ); -} - -const std::vector& GenericDescriptorMatcher::getTrainImages() const -{ - return trainPointCollection.getImages(); -} - -const std::vector >& GenericDescriptorMatcher::getTrainKeypoints() const -{ - return trainPointCollection.getKeypoints(); -} - -void GenericDescriptorMatcher::clear() -{ - trainPointCollection.clear(); -} - -void GenericDescriptorMatcher::train() -{} - -void GenericDescriptorMatcher::classify( InputArray queryImage, std::vector& queryKeypoints, - InputArray trainImage, std::vector& trainKeypoints ) const -{ - std::vector matches; - match( queryImage, queryKeypoints, trainImage, trainKeypoints, matches ); - - // remap keypoint indices to descriptors - for( size_t i = 0; i < matches.size(); i++ ) - queryKeypoints[matches[i].queryIdx].class_id = trainKeypoints[matches[i].trainIdx].class_id; -} - -void GenericDescriptorMatcher::classify( InputArray queryImage, std::vector& queryKeypoints ) -{ - std::vector matches; - match( queryImage, queryKeypoints, matches ); - - // remap keypoint indices to descriptors - for( size_t i = 0; i < matches.size(); i++ ) - queryKeypoints[matches[i].queryIdx].class_id = trainPointCollection.getKeyPoint( matches[i].trainIdx, matches[i].trainIdx ).class_id; -} - -void GenericDescriptorMatcher::match( InputArray queryImage, std::vector& queryKeypoints, - InputArray _trainImage, std::vector& trainKeypoints, - std::vector& matches, InputArray mask ) const -{ - Mat trainImage = _trainImage.getMat(); - Ptr tempMatcher = clone( true ); - std::vector > vecTrainPoints(1, trainKeypoints); - tempMatcher->add( std::vector(1, trainImage), vecTrainPoints ); - tempMatcher->match( queryImage, queryKeypoints, matches, std::vector(1, mask.getMat()) ); - vecTrainPoints[0].swap( trainKeypoints ); -} - -void GenericDescriptorMatcher::knnMatch( InputArray queryImage, std::vector& queryKeypoints, - InputArray _trainImage, std::vector& trainKeypoints, - std::vector >& matches, int knn, InputArray mask, bool compactResult ) const -{ - Mat trainImage = _trainImage.getMat(); - Ptr tempMatcher = clone( true ); - std::vector > vecTrainPoints(1, trainKeypoints); - tempMatcher->add( std::vector(1, trainImage), vecTrainPoints ); - tempMatcher->knnMatch( queryImage, queryKeypoints, matches, knn, std::vector(1, mask.getMat()), compactResult ); - vecTrainPoints[0].swap( trainKeypoints ); -} - -void GenericDescriptorMatcher::radiusMatch( InputArray queryImage, std::vector& queryKeypoints, - InputArray _trainImage, std::vector& trainKeypoints, - std::vector >& matches, float maxDistance, - InputArray mask, bool compactResult ) const -{ - Mat trainImage = _trainImage.getMat(); - Ptr tempMatcher = clone( true ); - std::vector > vecTrainPoints(1, trainKeypoints); - tempMatcher->add( std::vector(1, trainImage), vecTrainPoints ); - tempMatcher->radiusMatch( queryImage, queryKeypoints, matches, maxDistance, std::vector(1, mask.getMat()), compactResult ); - vecTrainPoints[0].swap( trainKeypoints ); -} - -void GenericDescriptorMatcher::match( InputArray queryImage, std::vector& queryKeypoints, - std::vector& matches, InputArrayOfArrays masks ) -{ - std::vector > knnMatches; - knnMatch( queryImage, queryKeypoints, knnMatches, 1, masks, false ); - convertMatches( knnMatches, matches ); -} - -void GenericDescriptorMatcher::knnMatch( InputArray queryImage, std::vector& queryKeypoints, - std::vector >& matches, int knn, - InputArrayOfArrays masks, bool compactResult ) -{ - matches.clear(); - - if( queryImage.empty() || queryKeypoints.empty() ) - return; - - KeyPointsFilter::runByImageBorder( queryKeypoints, queryImage.size(), 0 ); - KeyPointsFilter::runByKeypointSize( queryKeypoints, std::numeric_limits::epsilon() ); - - train(); - knnMatchImpl( queryImage, queryKeypoints, matches, knn, masks, compactResult ); -} - -void GenericDescriptorMatcher::radiusMatch( InputArray queryImage, std::vector& queryKeypoints, - std::vector >& matches, float maxDistance, - InputArrayOfArrays masks, bool compactResult ) -{ - matches.clear(); - - if( queryImage.empty() || queryKeypoints.empty() ) - return; - - KeyPointsFilter::runByImageBorder( queryKeypoints, queryImage.size(), 0 ); - KeyPointsFilter::runByKeypointSize( queryKeypoints, std::numeric_limits::epsilon() ); - - train(); - radiusMatchImpl( queryImage, queryKeypoints, matches, maxDistance, masks, compactResult ); -} - -void GenericDescriptorMatcher::read( const FileNode& ) -{} - -void GenericDescriptorMatcher::write( FileStorage& ) const -{} - -bool GenericDescriptorMatcher::empty() const -{ - return true; -} - -/* - * Factory function for GenericDescriptorMatch creating - */ -Ptr GenericDescriptorMatcher::create( const String& genericDescritptorMatcherType, - const String ¶msFilename ) -{ - Ptr descriptorMatcher = - Algorithm::create("DescriptorMatcher." + genericDescritptorMatcherType); - - if( !paramsFilename.empty() && descriptorMatcher ) - { - FileStorage fs = FileStorage( paramsFilename, FileStorage::READ ); - if( fs.isOpened() ) - { - descriptorMatcher->read( fs.root() ); - fs.release(); - } - } - return descriptorMatcher; -} - - -/****************************************************************************************\ -* VectorDescriptorMatcher * -\****************************************************************************************/ -VectorDescriptorMatcher::VectorDescriptorMatcher( const Ptr& _extractor, - const Ptr& _matcher ) - : extractor( _extractor ), matcher( _matcher ) -{ - CV_Assert( extractor && matcher ); -} - -VectorDescriptorMatcher::~VectorDescriptorMatcher() -{} - -void VectorDescriptorMatcher::add( InputArrayOfArrays _imgCollection, - std::vector >& pointCollection ) -{ - std::vector imgCollection, descriptors; - _imgCollection.getMatVector(imgCollection); - extractor->compute( imgCollection, pointCollection, descriptors ); - - matcher->add( descriptors ); - - trainPointCollection.add( imgCollection, pointCollection ); -} - -void VectorDescriptorMatcher::clear() -{ - //extractor->clear(); - matcher->clear(); - GenericDescriptorMatcher::clear(); -} - -void VectorDescriptorMatcher::train() -{ - matcher->train(); -} - -bool VectorDescriptorMatcher::isMaskSupported() -{ - return matcher->isMaskSupported(); -} - -void VectorDescriptorMatcher::knnMatchImpl( InputArray queryImage, std::vector& queryKeypoints, - std::vector >& matches, int knn, - InputArrayOfArrays masks, bool compactResult ) -{ - Mat queryDescriptors; - extractor->compute( queryImage, queryKeypoints, queryDescriptors ); - matcher->knnMatch( queryDescriptors, matches, knn, masks, compactResult ); -} - -void VectorDescriptorMatcher::radiusMatchImpl( InputArray queryImage, std::vector& queryKeypoints, - std::vector >& matches, float maxDistance, - InputArrayOfArrays masks, bool compactResult ) -{ - Mat queryDescriptors; - extractor->compute( queryImage, queryKeypoints, queryDescriptors ); - matcher->radiusMatch( queryDescriptors, matches, maxDistance, masks, compactResult ); -} - -void VectorDescriptorMatcher::read( const FileNode& fn ) -{ - GenericDescriptorMatcher::read(fn); - extractor->read(fn); -} - -void VectorDescriptorMatcher::write (FileStorage& fs) const -{ - GenericDescriptorMatcher::write(fs); - extractor->write (fs); -} - -bool VectorDescriptorMatcher::empty() const -{ - return !extractor || extractor->empty() || - !matcher || matcher->empty(); -} - -Ptr VectorDescriptorMatcher::clone( bool emptyTrainData ) const -{ - // TODO clone extractor - return makePtr( extractor, matcher->clone(emptyTrainData) ); -} - } diff --git a/modules/features2d/src/stardetector.cpp b/modules/features2d/src/stardetector.cpp deleted file mode 100644 index 0b09b8678b..0000000000 --- a/modules/features2d/src/stardetector.cpp +++ /dev/null @@ -1,472 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of Intel Corporation may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "precomp.hpp" - -namespace cv -{ - -template static void -computeIntegralImages( const Mat& matI, Mat& matS, Mat& matT, Mat& _FT, - int iiType ) -{ - int x, y, rows = matI.rows, cols = matI.cols; - - matS.create(rows + 1, cols + 1, iiType ); - matT.create(rows + 1, cols + 1, iiType ); - _FT.create(rows + 1, cols + 1, iiType ); - - const inMatType* I = matI.ptr(); - - outMatType *S = matS.ptr(); - outMatType *T = matT.ptr(); - outMatType *FT = _FT.ptr(); - - int istep = (int)(matI.step/matI.elemSize()); - int step = (int)(matS.step/matS.elemSize()); - - for( x = 0; x <= cols; x++ ) - S[x] = T[x] = FT[x] = 0; - - S += step; T += step; FT += step; - S[0] = T[0] = 0; - FT[0] = I[0]; - for( x = 1; x < cols; x++ ) - { - S[x] = S[x-1] + I[x-1]; - T[x] = I[x-1]; - FT[x] = I[x] + I[x-1]; - } - S[cols] = S[cols-1] + I[cols-1]; - T[cols] = FT[cols] = I[cols-1]; - - for( y = 2; y <= rows; y++ ) - { - I += istep, S += step, T += step, FT += step; - - S[0] = S[-step]; S[1] = S[-step+1] + I[0]; - T[0] = T[-step + 1]; - T[1] = FT[0] = T[-step + 2] + I[-istep] + I[0]; - FT[1] = FT[-step + 2] + I[-istep] + I[1] + I[0]; - - for( x = 2; x < cols; x++ ) - { - S[x] = S[x - 1] + S[-step + x] - S[-step + x - 1] + I[x - 1]; - T[x] = T[-step + x - 1] + T[-step + x + 1] - T[-step*2 + x] + I[-istep + x - 1] + I[x - 1]; - FT[x] = FT[-step + x - 1] + FT[-step + x + 1] - FT[-step*2 + x] + I[x] + I[x-1]; - } - - S[cols] = S[cols - 1] + S[-step + cols] - S[-step + cols - 1] + I[cols - 1]; - T[cols] = FT[cols] = T[-step + cols - 1] + I[-istep + cols - 1] + I[cols - 1]; - } -} - -template static int -StarDetectorComputeResponses( const Mat& img, Mat& responses, Mat& sizes, - int maxSize, int iiType ) -{ - const int MAX_PATTERN = 17; - static const int sizes0[] = {1, 2, 3, 4, 6, 8, 11, 12, 16, 22, 23, 32, 45, 46, 64, 90, 128, -1}; - static const int pairs[][2] = {{1, 0}, {3, 1}, {4, 2}, {5, 3}, {7, 4}, {8, 5}, {9, 6}, - {11, 8}, {13, 10}, {14, 11}, {15, 12}, {16, 14}, {-1, -1}}; - float invSizes[MAX_PATTERN][2]; - int sizes1[MAX_PATTERN]; - -#if CV_SSE2 - __m128 invSizes4[MAX_PATTERN][2]; - __m128 sizes1_4[MAX_PATTERN]; - union { int i; float f; } absmask; - absmask.i = 0x7fffffff; - volatile bool useSIMD = cv::checkHardwareSupport(CV_CPU_SSE2) && iiType == CV_32S; -#endif - - struct StarFeature - { - int area; - iiMatType* p[8]; - }; - - StarFeature f[MAX_PATTERN]; - - Mat sum, tilted, flatTilted; - int y, rows = img.rows, cols = img.cols; - int border, npatterns=0, maxIdx=0; - - responses.create( img.size(), CV_32F ); - sizes.create( img.size(), CV_16S ); - - while( pairs[npatterns][0] >= 0 && ! - ( sizes0[pairs[npatterns][0]] >= maxSize - || sizes0[pairs[npatterns+1][0]] + sizes0[pairs[npatterns+1][0]]/2 >= std::min(rows, cols) ) ) - { - ++npatterns; - } - - npatterns += (pairs[npatterns-1][0] >= 0); - maxIdx = pairs[npatterns-1][0]; - - // Create the integral image appropriate for our type & usage - if ( img.type() == CV_8U ) - computeIntegralImages( img, sum, tilted, flatTilted, iiType ); - else if ( img.type() == CV_8S ) - computeIntegralImages( img, sum, tilted, flatTilted, iiType ); - else if ( img.type() == CV_16U ) - computeIntegralImages( img, sum, tilted, flatTilted, iiType ); - else if ( img.type() == CV_16S ) - computeIntegralImages( img, sum, tilted, flatTilted, iiType ); - else - CV_Error( Error::StsUnsupportedFormat, "" ); - - int step = (int)(sum.step/sum.elemSize()); - - for(int i = 0; i <= maxIdx; i++ ) - { - int ur_size = sizes0[i], t_size = sizes0[i] + sizes0[i]/2; - int ur_area = (2*ur_size + 1)*(2*ur_size + 1); - int t_area = t_size*t_size + (t_size + 1)*(t_size + 1); - - f[i].p[0] = sum.ptr() + (ur_size + 1)*step + ur_size + 1; - f[i].p[1] = sum.ptr() - ur_size*step + ur_size + 1; - f[i].p[2] = sum.ptr() + (ur_size + 1)*step - ur_size; - f[i].p[3] = sum.ptr() - ur_size*step - ur_size; - - f[i].p[4] = tilted.ptr() + (t_size + 1)*step + 1; - f[i].p[5] = flatTilted.ptr() - t_size; - f[i].p[6] = flatTilted.ptr() + t_size + 1; - f[i].p[7] = tilted.ptr() - t_size*step + 1; - - f[i].area = ur_area + t_area; - sizes1[i] = sizes0[i]; - } - // negate end points of the size range - // for a faster rejection of very small or very large features in non-maxima suppression. - sizes1[0] = -sizes1[0]; - sizes1[1] = -sizes1[1]; - sizes1[maxIdx] = -sizes1[maxIdx]; - border = sizes0[maxIdx] + sizes0[maxIdx]/2; - - for(int i = 0; i < npatterns; i++ ) - { - int innerArea = f[pairs[i][1]].area; - int outerArea = f[pairs[i][0]].area - innerArea; - invSizes[i][0] = 1.f/outerArea; - invSizes[i][1] = 1.f/innerArea; - } - -#if CV_SSE2 - if( useSIMD ) - { - for(int i = 0; i < npatterns; i++ ) - { - _mm_store_ps((float*)&invSizes4[i][0], _mm_set1_ps(invSizes[i][0])); - _mm_store_ps((float*)&invSizes4[i][1], _mm_set1_ps(invSizes[i][1])); - } - - for(int i = 0; i <= maxIdx; i++ ) - _mm_store_ps((float*)&sizes1_4[i], _mm_set1_ps((float)sizes1[i])); - } -#endif - - for( y = 0; y < border; y++ ) - { - float* r_ptr = responses.ptr(y); - float* r_ptr2 = responses.ptr(rows - 1 - y); - short* s_ptr = sizes.ptr(y); - short* s_ptr2 = sizes.ptr(rows - 1 - y); - - memset( r_ptr, 0, cols*sizeof(r_ptr[0])); - memset( r_ptr2, 0, cols*sizeof(r_ptr2[0])); - memset( s_ptr, 0, cols*sizeof(s_ptr[0])); - memset( s_ptr2, 0, cols*sizeof(s_ptr2[0])); - } - - for( y = border; y < rows - border; y++ ) - { - int x = border; - float* r_ptr = responses.ptr(y); - short* s_ptr = sizes.ptr(y); - - memset( r_ptr, 0, border*sizeof(r_ptr[0])); - memset( s_ptr, 0, border*sizeof(s_ptr[0])); - memset( r_ptr + cols - border, 0, border*sizeof(r_ptr[0])); - memset( s_ptr + cols - border, 0, border*sizeof(s_ptr[0])); - -#if CV_SSE2 - if( useSIMD ) - { - __m128 absmask4 = _mm_set1_ps(absmask.f); - for( ; x <= cols - border - 4; x += 4 ) - { - int ofs = y*step + x; - __m128 vals[MAX_PATTERN]; - __m128 bestResponse = _mm_setzero_ps(); - __m128 bestSize = _mm_setzero_ps(); - - for(int i = 0; i <= maxIdx; i++ ) - { - const iiMatType** p = (const iiMatType**)&f[i].p[0]; - __m128i r0 = _mm_sub_epi32(_mm_loadu_si128((const __m128i*)(p[0]+ofs)), - _mm_loadu_si128((const __m128i*)(p[1]+ofs))); - __m128i r1 = _mm_sub_epi32(_mm_loadu_si128((const __m128i*)(p[3]+ofs)), - _mm_loadu_si128((const __m128i*)(p[2]+ofs))); - __m128i r2 = _mm_sub_epi32(_mm_loadu_si128((const __m128i*)(p[4]+ofs)), - _mm_loadu_si128((const __m128i*)(p[5]+ofs))); - __m128i r3 = _mm_sub_epi32(_mm_loadu_si128((const __m128i*)(p[7]+ofs)), - _mm_loadu_si128((const __m128i*)(p[6]+ofs))); - r0 = _mm_add_epi32(_mm_add_epi32(r0,r1), _mm_add_epi32(r2,r3)); - _mm_store_ps((float*)&vals[i], _mm_cvtepi32_ps(r0)); - } - - for(int i = 0; i < npatterns; i++ ) - { - __m128 inner_sum = vals[pairs[i][1]]; - __m128 outer_sum = _mm_sub_ps(vals[pairs[i][0]], inner_sum); - __m128 response = _mm_sub_ps(_mm_mul_ps(inner_sum, invSizes4[i][1]), - _mm_mul_ps(outer_sum, invSizes4[i][0])); - __m128 swapmask = _mm_cmpgt_ps(_mm_and_ps(response,absmask4), - _mm_and_ps(bestResponse,absmask4)); - bestResponse = _mm_xor_ps(bestResponse, - _mm_and_ps(_mm_xor_ps(response,bestResponse), swapmask)); - bestSize = _mm_xor_ps(bestSize, - _mm_and_ps(_mm_xor_ps(sizes1_4[pairs[i][0]], bestSize), swapmask)); - } - - _mm_storeu_ps(r_ptr + x, bestResponse); - _mm_storel_epi64((__m128i*)(s_ptr + x), - _mm_packs_epi32(_mm_cvtps_epi32(bestSize),_mm_setzero_si128())); - } - } -#endif - for( ; x < cols - border; x++ ) - { - int ofs = y*step + x; - int vals[MAX_PATTERN]; - float bestResponse = 0; - int bestSize = 0; - - for(int i = 0; i <= maxIdx; i++ ) - { - const iiMatType** p = (const iiMatType**)&f[i].p[0]; - vals[i] = (int)(p[0][ofs] - p[1][ofs] - p[2][ofs] + p[3][ofs] + - p[4][ofs] - p[5][ofs] - p[6][ofs] + p[7][ofs]); - } - for(int i = 0; i < npatterns; i++ ) - { - int inner_sum = vals[pairs[i][1]]; - int outer_sum = vals[pairs[i][0]] - inner_sum; - float response = inner_sum*invSizes[i][1] - outer_sum*invSizes[i][0]; - if( fabs(response) > fabs(bestResponse) ) - { - bestResponse = response; - bestSize = sizes1[pairs[i][0]]; - } - } - - r_ptr[x] = bestResponse; - s_ptr[x] = (short)bestSize; - } - } - - return border; -} - - -static bool StarDetectorSuppressLines( const Mat& responses, const Mat& sizes, Point pt, - int lineThresholdProjected, int lineThresholdBinarized ) -{ - const float* r_ptr = responses.ptr(); - int rstep = (int)(responses.step/sizeof(r_ptr[0])); - const short* s_ptr = sizes.ptr(); - int sstep = (int)(sizes.step/sizeof(s_ptr[0])); - int sz = s_ptr[pt.y*sstep + pt.x]; - int x, y, delta = sz/4, radius = delta*4; - float Lxx = 0, Lyy = 0, Lxy = 0; - int Lxxb = 0, Lyyb = 0, Lxyb = 0; - - for( y = pt.y - radius; y <= pt.y + radius; y += delta ) - for( x = pt.x - radius; x <= pt.x + radius; x += delta ) - { - float Lx = r_ptr[y*rstep + x + 1] - r_ptr[y*rstep + x - 1]; - float Ly = r_ptr[(y+1)*rstep + x] - r_ptr[(y-1)*rstep + x]; - Lxx += Lx*Lx; Lyy += Ly*Ly; Lxy += Lx*Ly; - } - - if( (Lxx + Lyy)*(Lxx + Lyy) >= lineThresholdProjected*(Lxx*Lyy - Lxy*Lxy) ) - return true; - - for( y = pt.y - radius; y <= pt.y + radius; y += delta ) - for( x = pt.x - radius; x <= pt.x + radius; x += delta ) - { - int Lxb = (s_ptr[y*sstep + x + 1] == sz) - (s_ptr[y*sstep + x - 1] == sz); - int Lyb = (s_ptr[(y+1)*sstep + x] == sz) - (s_ptr[(y-1)*sstep + x] == sz); - Lxxb += Lxb * Lxb; Lyyb += Lyb * Lyb; Lxyb += Lxb * Lyb; - } - - if( (Lxxb + Lyyb)*(Lxxb + Lyyb) >= lineThresholdBinarized*(Lxxb*Lyyb - Lxyb*Lxyb) ) - return true; - - return false; -} - - -static void -StarDetectorSuppressNonmax( const Mat& responses, const Mat& sizes, - std::vector& keypoints, int border, - int responseThreshold, - int lineThresholdProjected, - int lineThresholdBinarized, - int suppressNonmaxSize ) -{ - int x, y, x1, y1, delta = suppressNonmaxSize/2; - int rows = responses.rows, cols = responses.cols; - const float* r_ptr = responses.ptr(); - int rstep = (int)(responses.step/sizeof(r_ptr[0])); - const short* s_ptr = sizes.ptr(); - int sstep = (int)(sizes.step/sizeof(s_ptr[0])); - short featureSize = 0; - - for( y = border; y < rows - border; y += delta+1 ) - for( x = border; x < cols - border; x += delta+1 ) - { - float maxResponse = (float)responseThreshold; - float minResponse = (float)-responseThreshold; - Point maxPt(-1, -1), minPt(-1, -1); - int tileEndY = MIN(y + delta, rows - border - 1); - int tileEndX = MIN(x + delta, cols - border - 1); - - for( y1 = y; y1 <= tileEndY; y1++ ) - for( x1 = x; x1 <= tileEndX; x1++ ) - { - float val = r_ptr[y1*rstep + x1]; - if( maxResponse < val ) - { - maxResponse = val; - maxPt = Point(x1, y1); - } - else if( minResponse > val ) - { - minResponse = val; - minPt = Point(x1, y1); - } - } - - if( maxPt.x >= 0 ) - { - for( y1 = maxPt.y - delta; y1 <= maxPt.y + delta; y1++ ) - for( x1 = maxPt.x - delta; x1 <= maxPt.x + delta; x1++ ) - { - float val = r_ptr[y1*rstep + x1]; - if( val >= maxResponse && (y1 != maxPt.y || x1 != maxPt.x)) - goto skip_max; - } - - if( (featureSize = s_ptr[maxPt.y*sstep + maxPt.x]) >= 4 && - !StarDetectorSuppressLines( responses, sizes, maxPt, lineThresholdProjected, - lineThresholdBinarized )) - { - KeyPoint kpt((float)maxPt.x, (float)maxPt.y, featureSize, -1, maxResponse); - keypoints.push_back(kpt); - } - } - skip_max: - if( minPt.x >= 0 ) - { - for( y1 = minPt.y - delta; y1 <= minPt.y + delta; y1++ ) - for( x1 = minPt.x - delta; x1 <= minPt.x + delta; x1++ ) - { - float val = r_ptr[y1*rstep + x1]; - if( val <= minResponse && (y1 != minPt.y || x1 != minPt.x)) - goto skip_min; - } - - if( (featureSize = s_ptr[minPt.y*sstep + minPt.x]) >= 4 && - !StarDetectorSuppressLines( responses, sizes, minPt, - lineThresholdProjected, lineThresholdBinarized)) - { - KeyPoint kpt((float)minPt.x, (float)minPt.y, featureSize, -1, maxResponse); - keypoints.push_back(kpt); - } - } - skip_min: - ; - } -} - -StarDetector::StarDetector(int _maxSize, int _responseThreshold, - int _lineThresholdProjected, - int _lineThresholdBinarized, - int _suppressNonmaxSize) -: maxSize(_maxSize), responseThreshold(_responseThreshold), - lineThresholdProjected(_lineThresholdProjected), - lineThresholdBinarized(_lineThresholdBinarized), - suppressNonmaxSize(_suppressNonmaxSize) -{} - - -void StarDetector::detectImpl( InputArray _image, std::vector& keypoints, InputArray _mask ) const -{ - Mat image = _image.getMat(), mask = _mask.getMat(), grayImage = image; - if( image.channels() > 1 ) cvtColor( image, grayImage, COLOR_BGR2GRAY ); - - (*this)(grayImage, keypoints); - KeyPointsFilter::runByPixelsMask( keypoints, mask ); -} - -void StarDetector::operator()(const Mat& img, std::vector& keypoints) const -{ - Mat responses, sizes; - int border; - - // Use 32-bit integers if we won't overflow in the integral image - if ((img.depth() == CV_8U || img.depth() == CV_8S) && - (img.rows * img.cols) < 8388608 ) // 8388608 = 2 ^ (32 - 8(bit depth) - 1(sign bit)) - border = StarDetectorComputeResponses( img, responses, sizes, maxSize, CV_32S ); - else - border = StarDetectorComputeResponses( img, responses, sizes, maxSize, CV_64F ); - - keypoints.clear(); - if( border >= 0 ) - StarDetectorSuppressNonmax( responses, sizes, keypoints, border, - responseThreshold, lineThresholdProjected, - lineThresholdBinarized, suppressNonmaxSize ); -} - -} diff --git a/modules/java/generator/rst_parser.py b/modules/java/generator/rst_parser.py index 78114aedb1..dba9fe3fa0 100755 --- a/modules/java/generator/rst_parser.py +++ b/modules/java/generator/rst_parser.py @@ -2,7 +2,7 @@ from __future__ import print_function import os, sys, re, string, fnmatch -allmodules = ["core", "flann", "imgproc", "imgcodecs", "videoio", "highgui", "video", "features2d", "calib3d", "objdetect", "legacy", "contrib", "cuda", "androidcamera", "java", "python", "stitching", "ts", "photo", "nonfree", "videostab", "softcascade", "superres"] +allmodules = ["core", "flann", "imgproc", "imgcodecs", "videoio", "highgui", "video", "features2d", "calib3d", "objdetect", "legacy", "contrib", "cuda", "androidcamera", "java", "python", "stitching", "ts", "photo", "videostab", "softcascade", "superres"] verbose = False show_warnings = True show_errors = True @@ -12,7 +12,6 @@ params_blacklist = { "fromarray" : ("object", "allowND"), # python only function "reprojectImageTo3D" : ("ddepth"), # python only argument "composeRT" : ("d*d*"), # wildchards in parameter names are not supported by this parser - "CvSVM::train_auto" : ("\\*Grid"), # wildchards in parameter names are not supported by this parser "error" : "args", # parameter of supporting macro "getConvertElem" : ("from", "cn", "to", "beta", "alpha"), # arguments of returned functions "gpu::swapChannels" : ("dstOrder") # parameter is not parsed correctly by the hdr_parser diff --git a/modules/java/generator/src/cpp/jni_part.cpp b/modules/java/generator/src/cpp/jni_part.cpp index a4ac0d553a..c8475d0e8f 100644 --- a/modules/java/generator/src/cpp/jni_part.cpp +++ b/modules/java/generator/src/cpp/jni_part.cpp @@ -2,10 +2,6 @@ #include "opencv2/opencv_modules.hpp" -#ifdef HAVE_OPENCV_NONFREE -# include "opencv2/nonfree.hpp" -#endif - #ifdef HAVE_OPENCV_FEATURES2D # include "opencv2/features2d.hpp" #endif @@ -28,9 +24,6 @@ JNI_OnLoad(JavaVM* vm, void* ) return -1; bool init = true; -#ifdef HAVE_OPENCV_NONFREE - init &= cv::initModule_nonfree(); -#endif #ifdef HAVE_OPENCV_FEATURES2D init &= cv::initModule_features2d(); #endif diff --git a/modules/nonfree/CMakeLists.txt b/modules/nonfree/CMakeLists.txt deleted file mode 100644 index 851646f259..0000000000 --- a/modules/nonfree/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -if(BUILD_ANDROID_PACKAGE) - ocv_module_disable(nonfree) -endif() - -set(the_description "Functionality with possible limitations on the use") -ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef -Wshadow) -ocv_define_module(nonfree opencv_imgproc opencv_features2d opencv_calib3d OPTIONAL opencv_cudaarithm) diff --git a/modules/nonfree/doc/feature_detection.rst b/modules/nonfree/doc/feature_detection.rst deleted file mode 100644 index b61b85cd8b..0000000000 --- a/modules/nonfree/doc/feature_detection.rst +++ /dev/null @@ -1,250 +0,0 @@ -Feature Detection and Description -================================= - -SIFT ----- -.. ocv:class:: SIFT : public Feature2D - -Class for extracting keypoints and computing descriptors using the Scale Invariant Feature Transform (SIFT) algorithm by D. Lowe [Lowe04]_. - -.. [Lowe04] Lowe, D. G., “Distinctive Image Features from Scale-Invariant Keypointsâ€, International Journal of Computer Vision, 60, 2, pp. 91-110, 2004. - - -SIFT::SIFT ----------- -The SIFT constructors. - -.. ocv:function:: SIFT::SIFT( int nfeatures=0, int nOctaveLayers=3, double contrastThreshold=0.04, double edgeThreshold=10, double sigma=1.6) - -.. ocv:pyfunction:: cv2.SIFT([, nfeatures[, nOctaveLayers[, contrastThreshold[, edgeThreshold[, sigma]]]]]) -> - - :param nfeatures: The number of best features to retain. The features are ranked by their scores (measured in SIFT algorithm as the local contrast) - - :param nOctaveLayers: The number of layers in each octave. 3 is the value used in D. Lowe paper. The number of octaves is computed automatically from the image resolution. - - :param contrastThreshold: The contrast threshold used to filter out weak features in semi-uniform (low-contrast) regions. The larger the threshold, the less features are produced by the detector. - - :param edgeThreshold: The threshold used to filter out edge-like features. Note that the its meaning is different from the contrastThreshold, i.e. the larger the ``edgeThreshold``, the less features are filtered out (more features are retained). - - :param sigma: The sigma of the Gaussian applied to the input image at the octave #0. If your image is captured with a weak camera with soft lenses, you might want to reduce the number. - - -SIFT::operator () ------------------ -Extract features and computes their descriptors using SIFT algorithm - -.. ocv:function:: void SIFT::operator()(InputArray img, InputArray mask, vector& keypoints, OutputArray descriptors, bool useProvidedKeypoints=false) - -.. ocv:pyfunction:: cv2.SIFT.detect(image[, mask]) -> keypoints - -.. ocv:pyfunction:: cv2.SIFT.compute(image, keypoints[, descriptors]) -> keypoints, descriptors - -.. ocv:pyfunction:: cv2.SIFT.detectAndCompute(image, mask[, descriptors[, useProvidedKeypoints]]) -> keypoints, descriptors - - :param img: Input 8-bit grayscale image - - :param mask: Optional input mask that marks the regions where we should detect features. - - :param keypoints: The input/output vector of keypoints - - :param descriptors: The output matrix of descriptors. Pass ``cv::noArray()`` if you do not need them. - - :param useProvidedKeypoints: Boolean flag. If it is true, the keypoint detector is not run. Instead, the provided vector of keypoints is used and the algorithm just computes their descriptors. - -.. note:: Python API provides three functions. First one finds keypoints only. Second function computes the descriptors based on the keypoints we provide. Third function detects the keypoints and computes their descriptors. If you want both keypoints and descriptors, directly use third function as ``kp, des = cv2.SIFT.detectAndCompute(image, None)`` - -SURF ----- -.. ocv:class:: SURF : public Feature2D - - Class for extracting Speeded Up Robust Features from an image [Bay06]_. The class is derived from ``CvSURFParams`` structure, which specifies the algorithm parameters: - - .. ocv:member:: int extended - - * 0 means that the basic descriptors (64 elements each) shall be computed - * 1 means that the extended descriptors (128 elements each) shall be computed - - .. ocv:member:: int upright - - * 0 means that detector computes orientation of each feature. - * 1 means that the orientation is not computed (which is much, much faster). For example, if you match images from a stereo pair, or do image stitching, the matched features likely have very similar angles, and you can speed up feature extraction by setting ``upright=1``. - - .. ocv:member:: double hessianThreshold - - Threshold for the keypoint detector. Only features, whose hessian is larger than ``hessianThreshold`` are retained by the detector. Therefore, the larger the value, the less keypoints you will get. A good default value could be from 300 to 500, depending from the image contrast. - - .. ocv:member:: int nOctaves - - The number of a gaussian pyramid octaves that the detector uses. It is set to 4 by default. If you want to get very large features, use the larger value. If you want just small features, decrease it. - - .. ocv:member:: int nOctaveLayers - - The number of images within each octave of a gaussian pyramid. It is set to 2 by default. - - -.. [Bay06] Bay, H. and Tuytelaars, T. and Van Gool, L. "SURF: Speeded Up Robust Features", 9th European Conference on Computer Vision, 2006 - -.. note:: - - * An example using the SURF feature detector can be found at opencv_source_code/samples/cpp/generic_descriptor_match.cpp - * Another example using the SURF feature detector, extractor and matcher can be found at opencv_source_code/samples/cpp/matcher_simple.cpp - -SURF::SURF ----------- -The SURF extractor constructors. - -.. ocv:function:: SURF::SURF() - -.. ocv:function:: SURF::SURF( double hessianThreshold, int nOctaves=4, int nOctaveLayers=2, bool extended=true, bool upright=false ) - -.. ocv:pyfunction:: cv2.SURF([hessianThreshold[, nOctaves[, nOctaveLayers[, extended[, upright]]]]]) -> - - :param hessianThreshold: Threshold for hessian keypoint detector used in SURF. - - :param nOctaves: Number of pyramid octaves the keypoint detector will use. - - :param nOctaveLayers: Number of octave layers within each octave. - - :param extended: Extended descriptor flag (true - use extended 128-element descriptors; false - use 64-element descriptors). - - :param upright: Up-right or rotated features flag (true - do not compute orientation of features; false - compute orientation). - - -SURF::operator() ----------------- -Detects keypoints and computes SURF descriptors for them. - -.. ocv:function:: void SURF::operator()(InputArray img, InputArray mask, vector& keypoints) const -.. ocv:function:: void SURF::operator()(InputArray img, InputArray mask, vector& keypoints, OutputArray descriptors, bool useProvidedKeypoints=false) - -.. ocv:pyfunction:: cv2.SURF.detect(image[, mask]) -> keypoints -.. ocv:pyfunction:: cv2.SURF.compute(image, keypoints[, descriptors]) -> keypoints, descriptors -.. ocv:pyfunction:: cv2.SURF.detectAndCompute(image, mask[, descriptors[, useProvidedKeypoints]]) -> keypoints, descriptors - -.. ocv:pyfunction:: cv2.SURF.detectAndCompute(image[, mask]) -> keypoints, descriptors - -.. ocv:cfunction:: void cvExtractSURF( const CvArr* image, const CvArr* mask, CvSeq** keypoints, CvSeq** descriptors, CvMemStorage* storage, CvSURFParams params ) - - :param image: Input 8-bit grayscale image - - :param mask: Optional input mask that marks the regions where we should detect features. - - :param keypoints: The input/output vector of keypoints - - :param descriptors: The output matrix of descriptors. Pass ``cv::noArray()`` if you do not need them. - - :param useProvidedKeypoints: Boolean flag. If it is true, the keypoint detector is not run. Instead, the provided vector of keypoints is used and the algorithm just computes their descriptors. - - :param storage: Memory storage for the output keypoints and descriptors in OpenCV 1.x API. - - :param params: SURF algorithm parameters in OpenCV 1.x API. - -The function is parallelized with the TBB library. - -If you are using the C version, make sure you call ``cv::initModule_nonfree()`` from ``nonfree/nonfree.hpp``. - - -cuda::SURF_CUDA ---------------- -.. ocv:class:: cuda::SURF_CUDA - -Class used for extracting Speeded Up Robust Features (SURF) from an image. :: - - class SURF_CUDA - { - public: - enum KeypointLayout - { - X_ROW = 0, - Y_ROW, - LAPLACIAN_ROW, - OCTAVE_ROW, - SIZE_ROW, - ANGLE_ROW, - HESSIAN_ROW, - ROWS_COUNT - }; - - //! the default constructor - SURF_CUDA(); - //! the full constructor taking all the necessary parameters - explicit SURF_CUDA(double _hessianThreshold, int _nOctaves=4, - int _nOctaveLayers=2, bool _extended=false, float _keypointsRatio=0.01f); - - //! returns the descriptor size in float's (64 or 128) - int descriptorSize() const; - - //! upload host keypoints to device memory - void uploadKeypoints(const vector& keypoints, - GpuMat& keypointsGPU); - //! download keypoints from device to host memory - void downloadKeypoints(const GpuMat& keypointsGPU, - vector& keypoints); - - //! download descriptors from device to host memory - void downloadDescriptors(const GpuMat& descriptorsGPU, - vector& descriptors); - - void operator()(const GpuMat& img, const GpuMat& mask, - GpuMat& keypoints); - - void operator()(const GpuMat& img, const GpuMat& mask, - GpuMat& keypoints, GpuMat& descriptors, - bool useProvidedKeypoints = false, - bool calcOrientation = true); - - void operator()(const GpuMat& img, const GpuMat& mask, - std::vector& keypoints); - - void operator()(const GpuMat& img, const GpuMat& mask, - std::vector& keypoints, GpuMat& descriptors, - bool useProvidedKeypoints = false, - bool calcOrientation = true); - - void operator()(const GpuMat& img, const GpuMat& mask, - std::vector& keypoints, - std::vector& descriptors, - bool useProvidedKeypoints = false, - bool calcOrientation = true); - - void releaseMemory(); - - // SURF parameters - double hessianThreshold; - int nOctaves; - int nOctaveLayers; - bool extended; - bool upright; - - //! max keypoints = keypointsRatio * img.size().area() - float keypointsRatio; - - GpuMat sum, mask1, maskSum, intBuffer; - - GpuMat det, trace; - - GpuMat maxPosBuffer; - }; - - -The class ``SURF_CUDA`` implements Speeded Up Robust Features descriptor. There is a fast multi-scale Hessian keypoint detector that can be used to find the keypoints (which is the default option). But the descriptors can also be computed for the user-specified keypoints. Only 8-bit grayscale images are supported. - -The class ``SURF_CUDA`` can store results in the GPU and CPU memory. It provides functions to convert results between CPU and GPU version ( ``uploadKeypoints``, ``downloadKeypoints``, ``downloadDescriptors`` ). The format of CPU results is the same as ``SURF`` results. GPU results are stored in ``GpuMat``. The ``keypoints`` matrix is :math:`\texttt{nFeatures} \times 7` matrix with the ``CV_32FC1`` type. - -* ``keypoints.ptr(X_ROW)[i]`` contains x coordinate of the i-th feature. -* ``keypoints.ptr(Y_ROW)[i]`` contains y coordinate of the i-th feature. -* ``keypoints.ptr(LAPLACIAN_ROW)[i]`` contains the laplacian sign of the i-th feature. -* ``keypoints.ptr(OCTAVE_ROW)[i]`` contains the octave of the i-th feature. -* ``keypoints.ptr(SIZE_ROW)[i]`` contains the size of the i-th feature. -* ``keypoints.ptr(ANGLE_ROW)[i]`` contain orientation of the i-th feature. -* ``keypoints.ptr(HESSIAN_ROW)[i]`` contains the response of the i-th feature. - -The ``descriptors`` matrix is :math:`\texttt{nFeatures} \times \texttt{descriptorSize}` matrix with the ``CV_32FC1`` type. - -The class ``SURF_CUDA`` uses some buffers and provides access to it. All buffers can be safely released between function calls. - -.. seealso:: :ocv:class:`SURF` - -.. note:: - - * An example for using the SURF keypoint matcher on GPU can be found at opencv_source_code/samples/gpu/surf_keypoint_matcher.cpp diff --git a/modules/nonfree/doc/nonfree.rst b/modules/nonfree/doc/nonfree.rst deleted file mode 100644 index e524ea82f8..0000000000 --- a/modules/nonfree/doc/nonfree.rst +++ /dev/null @@ -1,10 +0,0 @@ -******************************** -nonfree. Non-free functionality -******************************** - -The module contains algorithms that may be patented in some countries or have some other limitations on the use. - -.. toctree:: - :maxdepth: 2 - - feature_detection diff --git a/modules/nonfree/include/opencv2/nonfree.hpp b/modules/nonfree/include/opencv2/nonfree.hpp deleted file mode 100644 index da8e535a87..0000000000 --- a/modules/nonfree/include/opencv2/nonfree.hpp +++ /dev/null @@ -1,57 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009-2012, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __OPENCV_NONFREE_HPP__ -#define __OPENCV_NONFREE_HPP__ - -#include "opencv2/nonfree/features2d.hpp" - -namespace cv -{ - -CV_EXPORTS bool initModule_nonfree(); - -} - -#endif - -/* End of file. */ diff --git a/modules/nonfree/include/opencv2/nonfree/cuda.hpp b/modules/nonfree/include/opencv2/nonfree/cuda.hpp deleted file mode 100644 index 0e1f8e5518..0000000000 --- a/modules/nonfree/include/opencv2/nonfree/cuda.hpp +++ /dev/null @@ -1,128 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __OPENCV_NONFREE_CUDA_HPP__ -#define __OPENCV_NONFREE_CUDA_HPP__ - -#include "opencv2/core/cuda.hpp" - -namespace cv { namespace cuda { - -class CV_EXPORTS SURF_CUDA -{ -public: - enum KeypointLayout - { - X_ROW = 0, - Y_ROW, - LAPLACIAN_ROW, - OCTAVE_ROW, - SIZE_ROW, - ANGLE_ROW, - HESSIAN_ROW, - ROWS_COUNT - }; - - //! the default constructor - SURF_CUDA(); - //! the full constructor taking all the necessary parameters - explicit SURF_CUDA(double _hessianThreshold, int _nOctaves=4, - int _nOctaveLayers=2, bool _extended=false, float _keypointsRatio=0.01f, bool _upright = false); - - //! returns the descriptor size in float's (64 or 128) - int descriptorSize() const; - //! returns the default norm type - int defaultNorm() const; - - //! upload host keypoints to device memory - void uploadKeypoints(const std::vector& keypoints, GpuMat& keypointsGPU); - //! download keypoints from device to host memory - void downloadKeypoints(const GpuMat& keypointsGPU, std::vector& keypoints); - - //! download descriptors from device to host memory - void downloadDescriptors(const GpuMat& descriptorsGPU, std::vector& descriptors); - - //! finds the keypoints using fast hessian detector used in SURF - //! supports CV_8UC1 images - //! keypoints will have nFeature cols and 6 rows - //! keypoints.ptr(X_ROW)[i] will contain x coordinate of i'th feature - //! keypoints.ptr(Y_ROW)[i] will contain y coordinate of i'th feature - //! keypoints.ptr(LAPLACIAN_ROW)[i] will contain laplacian sign of i'th feature - //! keypoints.ptr(OCTAVE_ROW)[i] will contain octave of i'th feature - //! keypoints.ptr(SIZE_ROW)[i] will contain size of i'th feature - //! keypoints.ptr(ANGLE_ROW)[i] will contain orientation of i'th feature - //! keypoints.ptr(HESSIAN_ROW)[i] will contain response of i'th feature - void operator()(const GpuMat& img, const GpuMat& mask, GpuMat& keypoints); - //! finds the keypoints and computes their descriptors. - //! Optionally it can compute descriptors for the user-provided keypoints and recompute keypoints direction - void operator()(const GpuMat& img, const GpuMat& mask, GpuMat& keypoints, GpuMat& descriptors, - bool useProvidedKeypoints = false); - - void operator()(const GpuMat& img, const GpuMat& mask, std::vector& keypoints); - void operator()(const GpuMat& img, const GpuMat& mask, std::vector& keypoints, GpuMat& descriptors, - bool useProvidedKeypoints = false); - - void operator()(const GpuMat& img, const GpuMat& mask, std::vector& keypoints, std::vector& descriptors, - bool useProvidedKeypoints = false); - - void releaseMemory(); - - // SURF parameters - double hessianThreshold; - int nOctaves; - int nOctaveLayers; - bool extended; - bool upright; - - //! max keypoints = min(keypointsRatio * img.size().area(), 65535) - float keypointsRatio; - - GpuMat sum, mask1, maskSum, intBuffer; - - GpuMat det, trace; - - GpuMat maxPosBuffer; -}; - -}} // namespace cv { namespace cuda { - -#endif // __OPENCV_NONFREE_CUDA_HPP__ diff --git a/modules/nonfree/include/opencv2/nonfree/features2d.hpp b/modules/nonfree/include/opencv2/nonfree/features2d.hpp deleted file mode 100644 index 6a75e99b20..0000000000 --- a/modules/nonfree/include/opencv2/nonfree/features2d.hpp +++ /dev/null @@ -1,154 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __OPENCV_NONFREE_FEATURES_2D_HPP__ -#define __OPENCV_NONFREE_FEATURES_2D_HPP__ - -#include "opencv2/features2d.hpp" - -namespace cv -{ - -/*! - SIFT implementation. - - The class implements SIFT algorithm by D. Lowe. -*/ -class CV_EXPORTS_W SIFT : public Feature2D -{ -public: - CV_WRAP explicit SIFT( int nfeatures = 0, int nOctaveLayers = 3, - double contrastThreshold = 0.04, double edgeThreshold = 10, - double sigma = 1.6); - - //! returns the descriptor size in floats (128) - CV_WRAP int descriptorSize() const; - - //! returns the descriptor type - CV_WRAP int descriptorType() const; - - //! returns the default norm type - CV_WRAP int defaultNorm() const; - - //! finds the keypoints using SIFT algorithm - void operator()(InputArray img, InputArray mask, - std::vector& keypoints) const; - //! finds the keypoints and computes descriptors for them using SIFT algorithm. - //! Optionally it can compute descriptors for the user-provided keypoints - void operator()(InputArray img, InputArray mask, - std::vector& keypoints, - OutputArray descriptors, - bool useProvidedKeypoints = false) const; - - AlgorithmInfo* info() const; - - void buildGaussianPyramid( const Mat& base, std::vector& pyr, int nOctaves ) const; - void buildDoGPyramid( const std::vector& pyr, std::vector& dogpyr ) const; - void findScaleSpaceExtrema( const std::vector& gauss_pyr, const std::vector& dog_pyr, - std::vector& keypoints ) const; - -protected: - void detectImpl( InputArray image, std::vector& keypoints, InputArray mask = noArray() ) const; - void computeImpl( InputArray image, std::vector& keypoints, OutputArray descriptors ) const; - - CV_PROP_RW int nfeatures; - CV_PROP_RW int nOctaveLayers; - CV_PROP_RW double contrastThreshold; - CV_PROP_RW double edgeThreshold; - CV_PROP_RW double sigma; -}; - -typedef SIFT SiftFeatureDetector; -typedef SIFT SiftDescriptorExtractor; - -/*! - SURF implementation. - - The class implements SURF algorithm by H. Bay et al. - */ -class CV_EXPORTS_W SURF : public Feature2D -{ -public: - //! the default constructor - CV_WRAP SURF(); - //! the full constructor taking all the necessary parameters - explicit CV_WRAP SURF(double hessianThreshold, - int nOctaves = 4, int nOctaveLayers = 2, - bool extended = true, bool upright = false); - - //! returns the descriptor size in float's (64 or 128) - CV_WRAP int descriptorSize() const; - - //! returns the descriptor type - CV_WRAP int descriptorType() const; - - //! returns the descriptor type - CV_WRAP int defaultNorm() const; - - //! finds the keypoints using fast hessian detector used in SURF - void operator()(InputArray img, InputArray mask, - CV_OUT std::vector& keypoints) const; - //! finds the keypoints and computes their descriptors. Optionally it can compute descriptors for the user-provided keypoints - void operator()(InputArray img, InputArray mask, - CV_OUT std::vector& keypoints, - OutputArray descriptors, - bool useProvidedKeypoints = false) const; - - AlgorithmInfo* info() const; - - CV_PROP_RW double hessianThreshold; - CV_PROP_RW int nOctaves; - CV_PROP_RW int nOctaveLayers; - CV_PROP_RW bool extended; - CV_PROP_RW bool upright; - -protected: - void detectImpl( InputArray image, std::vector& keypoints, InputArray mask = noArray() ) const; - void computeImpl( InputArray image, std::vector& keypoints, OutputArray descriptors ) const; -}; - -typedef SURF SurfFeatureDetector; -typedef SURF SurfDescriptorExtractor; - -} /* namespace cv */ - -#endif diff --git a/modules/nonfree/include/opencv2/nonfree/nonfree.hpp b/modules/nonfree/include/opencv2/nonfree/nonfree.hpp deleted file mode 100644 index c1bb651f07..0000000000 --- a/modules/nonfree/include/opencv2/nonfree/nonfree.hpp +++ /dev/null @@ -1,48 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Copyright (C) 2013, OpenCV Foundation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifdef __OPENCV_BUILD -#error this is a compatibility header which should not be used inside the OpenCV library -#endif - -#include "opencv2/nonfree.hpp" diff --git a/modules/nonfree/perf/perf_main.cpp b/modules/nonfree/perf/perf_main.cpp deleted file mode 100644 index a5a76af55b..0000000000 --- a/modules/nonfree/perf/perf_main.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include "perf_precomp.hpp" -#include "opencv2/ts/cuda_perf.hpp" - -static const char * impls[] = { -#ifdef HAVE_CUDA - "cuda", -#endif - "plain" -}; - -CV_PERF_TEST_MAIN_WITH_IMPLS(nonfree, impls, perf::printCudaInfo()) diff --git a/modules/nonfree/perf/perf_precomp.hpp b/modules/nonfree/perf/perf_precomp.hpp deleted file mode 100644 index ed84be8e37..0000000000 --- a/modules/nonfree/perf/perf_precomp.hpp +++ /dev/null @@ -1,32 +0,0 @@ -#ifdef __GNUC__ -# pragma GCC diagnostic ignored "-Wmissing-declarations" -# if defined __clang__ || defined __APPLE__ -# pragma GCC diagnostic ignored "-Wmissing-prototypes" -# pragma GCC diagnostic ignored "-Wextra" -# endif -#endif - -#ifndef __OPENCV_PERF_PRECOMP_HPP__ -#define __OPENCV_PERF_PRECOMP_HPP__ - -#include "cvconfig.h" - -#include "opencv2/ts.hpp" -#include "opencv2/nonfree.hpp" -#include "opencv2/imgcodecs.hpp" - -#include "opencv2/opencv_modules.hpp" - -#ifdef HAVE_OPENCV_OCL -# include "opencv2/nonfree/ocl.hpp" -#endif - -#ifdef HAVE_CUDA -# include "opencv2/nonfree/cuda.hpp" -#endif - -#ifdef GTEST_CREATE_SHARED_LIBRARY -#error no modules except ts should have GTEST_CREATE_SHARED_LIBRARY defined -#endif - -#endif diff --git a/modules/nonfree/perf/perf_surf.cpp b/modules/nonfree/perf/perf_surf.cpp deleted file mode 100644 index 09de5232ec..0000000000 --- a/modules/nonfree/perf/perf_surf.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include "perf_precomp.hpp" - -using namespace std; -using namespace cv; -using namespace perf; -using std::tr1::make_tuple; -using std::tr1::get; - -typedef perf::TestBaseWithParam surf; - -#define SURF_IMAGES \ - "cv/detectors_descriptors_evaluation/images_datasets/leuven/img1.png",\ - "stitching/a3.png" - -PERF_TEST_P(surf, detect, testing::Values(SURF_IMAGES)) -{ - string filename = getDataPath(GetParam()); - Mat frame = imread(filename, IMREAD_GRAYSCALE); - ASSERT_FALSE(frame.empty()) << "Unable to load source image " << filename; - - Mat mask; - declare.in(frame).time(90); - SURF detector; - vector points; - - TEST_CYCLE() detector(frame, mask, points); - - SANITY_CHECK_KEYPOINTS(points, 1e-3); -} - -PERF_TEST_P(surf, extract, testing::Values(SURF_IMAGES)) -{ - string filename = getDataPath(GetParam()); - Mat frame = imread(filename, IMREAD_GRAYSCALE); - ASSERT_FALSE(frame.empty()) << "Unable to load source image " << filename; - - Mat mask; - declare.in(frame).time(90); - - SURF detector; - vector points; - vector descriptors; - detector(frame, mask, points); - - TEST_CYCLE() detector(frame, mask, points, descriptors, true); - - SANITY_CHECK(descriptors, 1e-4); -} - -PERF_TEST_P(surf, full, testing::Values(SURF_IMAGES)) -{ - string filename = getDataPath(GetParam()); - Mat frame = imread(filename, IMREAD_GRAYSCALE); - ASSERT_FALSE(frame.empty()) << "Unable to load source image " << filename; - - Mat mask; - declare.in(frame).time(90); - SURF detector; - vector points; - vector descriptors; - - TEST_CYCLE() detector(frame, mask, points, descriptors, false); - - SANITY_CHECK_KEYPOINTS(points, 1e-3); - SANITY_CHECK(descriptors, 1e-4); -} diff --git a/modules/nonfree/perf/perf_surf.cuda.cpp b/modules/nonfree/perf/perf_surf.cuda.cpp deleted file mode 100644 index 4cdbea9781..0000000000 --- a/modules/nonfree/perf/perf_surf.cuda.cpp +++ /dev/null @@ -1,103 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "perf_precomp.hpp" - -#ifdef HAVE_CUDA - -#include "opencv2/ts/cuda_perf.hpp" - -using namespace std; -using namespace testing; -using namespace perf; - -////////////////////////////////////////////////////////////////////// -// SURF - -#ifdef HAVE_OPENCV_CUDAARITHM - -DEF_PARAM_TEST_1(Image, string); - -PERF_TEST_P(Image, CUDA_SURF, - Values("gpu/perf/aloe.png")) -{ - declare.time(50.0); - - const cv::Mat img = readImage(GetParam(), cv::IMREAD_GRAYSCALE); - ASSERT_FALSE(img.empty()); - - if (PERF_RUN_CUDA()) - { - cv::cuda::SURF_CUDA d_surf; - - const cv::cuda::GpuMat d_img(img); - cv::cuda::GpuMat d_keypoints, d_descriptors; - - TEST_CYCLE() d_surf(d_img, cv::cuda::GpuMat(), d_keypoints, d_descriptors); - - std::vector gpu_keypoints; - d_surf.downloadKeypoints(d_keypoints, gpu_keypoints); - - cv::Mat gpu_descriptors(d_descriptors); - - sortKeyPoints(gpu_keypoints, gpu_descriptors); - - SANITY_CHECK_KEYPOINTS(gpu_keypoints); - SANITY_CHECK(gpu_descriptors, 1e-3); - } - else - { - cv::SURF surf; - - std::vector cpu_keypoints; - cv::Mat cpu_descriptors; - - TEST_CYCLE() surf(img, cv::noArray(), cpu_keypoints, cpu_descriptors); - - SANITY_CHECK_KEYPOINTS(cpu_keypoints); - SANITY_CHECK(cpu_descriptors); - } -} - -#endif // HAVE_OPENCV_CUDAARITHM - -#endif // HAVE_CUDA diff --git a/modules/nonfree/perf/perf_surf.ocl.cpp b/modules/nonfree/perf/perf_surf.ocl.cpp deleted file mode 100644 index cc48aa28c5..0000000000 --- a/modules/nonfree/perf/perf_surf.ocl.cpp +++ /dev/null @@ -1,111 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2010-2012, Multicoreware, Inc., all rights reserved. -// Copyright (C) 2010-2012, Advanced Micro Devices, Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// @Authors -// Peng Xiao, pengxiao@multicorewareinc.com -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors as is and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "perf_precomp.hpp" - -#ifdef HAVE_OPENCV_OCL - -using namespace cv; -using namespace cv::ocl; -using namespace std; - -typedef perf::TestBaseWithParam OCL_SURF; - -#define SURF_IMAGES \ - "cv/detectors_descriptors_evaluation/images_datasets/leuven/img1.png",\ - "stitching/a3.png" - -PERF_TEST_P(OCL_SURF, DISABLED_with_data_transfer, testing::Values(SURF_IMAGES)) -{ - string filename = getDataPath(GetParam()); - Mat img = imread(filename, IMREAD_GRAYSCALE); - ASSERT_FALSE(img.empty()); - - SURF_OCL d_surf; - oclMat d_keypoints; - oclMat d_descriptors; - Mat cpu_kp; - Mat cpu_dp; - - declare.time(60); - - TEST_CYCLE() - { - oclMat d_src(img); - - d_surf(d_src, oclMat(), d_keypoints, d_descriptors); - - d_keypoints.download(cpu_kp); - d_descriptors.download(cpu_dp); - } - - SANITY_CHECK(cpu_kp, 1); - SANITY_CHECK(cpu_dp, 1); -} - -PERF_TEST_P(OCL_SURF, DISABLED_without_data_transfer, testing::Values(SURF_IMAGES)) -{ - string filename = getDataPath(GetParam()); - Mat img = imread(filename, IMREAD_GRAYSCALE); - ASSERT_FALSE(img.empty()); - - SURF_OCL d_surf; - oclMat d_keypoints; - oclMat d_descriptors; - oclMat d_src(img); - - declare.time(60); - - TEST_CYCLE() d_surf(d_src, oclMat(), d_keypoints, d_descriptors); - - Mat cpu_kp; - Mat cpu_dp; - d_keypoints.download(cpu_kp); - d_descriptors.download(cpu_dp); - SANITY_CHECK(cpu_kp, 1); - SANITY_CHECK(cpu_dp, 1); -} - -#endif // HAVE_OPENCV_OCL diff --git a/modules/nonfree/src/cuda/surf.cu b/modules/nonfree/src/cuda/surf.cu deleted file mode 100644 index 9a141ab7c9..0000000000 --- a/modules/nonfree/src/cuda/surf.cu +++ /dev/null @@ -1,960 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "opencv2/opencv_modules.hpp" - -#ifdef HAVE_OPENCV_CUDAARITHM - -#include "opencv2/core/cuda/common.hpp" -#include "opencv2/core/cuda/limits.hpp" -#include "opencv2/core/cuda/saturate_cast.hpp" -#include "opencv2/core/cuda/reduce.hpp" -#include "opencv2/core/cuda/utility.hpp" -#include "opencv2/core/cuda/functional.hpp" -#include "opencv2/core/cuda/filters.hpp" - -namespace cv { namespace cuda { namespace device -{ - namespace surf - { - void loadGlobalConstants(int maxCandidates, int maxFeatures, int img_rows, int img_cols, int nOctaveLayers, float hessianThreshold); - void loadOctaveConstants(int octave, int layer_rows, int layer_cols); - - void bindImgTex(PtrStepSzb img); - size_t bindSumTex(PtrStepSz sum); - size_t bindMaskSumTex(PtrStepSz maskSum); - - void icvCalcLayerDetAndTrace_gpu(const PtrStepf& det, const PtrStepf& trace, int img_rows, int img_cols, - int octave, int nOctaveLayer); - - void icvFindMaximaInLayer_gpu(const PtrStepf& det, const PtrStepf& trace, int4* maxPosBuffer, unsigned int* maxCounter, - int img_rows, int img_cols, int octave, bool use_mask, int nLayers); - - void icvInterpolateKeypoint_gpu(const PtrStepf& det, const int4* maxPosBuffer, unsigned int maxCounter, - float* featureX, float* featureY, int* featureLaplacian, int* featureOctave, float* featureSize, float* featureHessian, - unsigned int* featureCounter); - - void icvCalcOrientation_gpu(const float* featureX, const float* featureY, const float* featureSize, float* featureDir, int nFeatures); - - void compute_descriptors_gpu(PtrStepSz descriptors, const float* featureX, const float* featureY, const float* featureSize, const float* featureDir, int nFeatures); - } -}}} - -namespace cv { namespace cuda { namespace device -{ - namespace surf - { - //////////////////////////////////////////////////////////////////////// - // Global parameters - - // The maximum number of features (before subpixel interpolation) that memory is reserved for. - __constant__ int c_max_candidates; - // The maximum number of features that memory is reserved for. - __constant__ int c_max_features; - // The image size. - __constant__ int c_img_rows; - __constant__ int c_img_cols; - // The number of layers. - __constant__ int c_nOctaveLayers; - // The hessian threshold. - __constant__ float c_hessianThreshold; - - // The current octave. - __constant__ int c_octave; - // The current layer size. - __constant__ int c_layer_rows; - __constant__ int c_layer_cols; - - void loadGlobalConstants(int maxCandidates, int maxFeatures, int img_rows, int img_cols, int nOctaveLayers, float hessianThreshold) - { - cudaSafeCall( cudaMemcpyToSymbol(c_max_candidates, &maxCandidates, sizeof(maxCandidates)) ); - cudaSafeCall( cudaMemcpyToSymbol(c_max_features, &maxFeatures, sizeof(maxFeatures)) ); - cudaSafeCall( cudaMemcpyToSymbol(c_img_rows, &img_rows, sizeof(img_rows)) ); - cudaSafeCall( cudaMemcpyToSymbol(c_img_cols, &img_cols, sizeof(img_cols)) ); - cudaSafeCall( cudaMemcpyToSymbol(c_nOctaveLayers, &nOctaveLayers, sizeof(nOctaveLayers)) ); - cudaSafeCall( cudaMemcpyToSymbol(c_hessianThreshold, &hessianThreshold, sizeof(hessianThreshold)) ); - } - - void loadOctaveConstants(int octave, int layer_rows, int layer_cols) - { - cudaSafeCall( cudaMemcpyToSymbol(c_octave, &octave, sizeof(octave)) ); - cudaSafeCall( cudaMemcpyToSymbol(c_layer_rows, &layer_rows, sizeof(layer_rows)) ); - cudaSafeCall( cudaMemcpyToSymbol(c_layer_cols, &layer_cols, sizeof(layer_cols)) ); - } - - //////////////////////////////////////////////////////////////////////// - // Integral image texture - - texture imgTex(0, cudaFilterModePoint, cudaAddressModeClamp); - texture sumTex(0, cudaFilterModePoint, cudaAddressModeClamp); - texture maskSumTex(0, cudaFilterModePoint, cudaAddressModeClamp); - - void bindImgTex(PtrStepSzb img) - { - bindTexture(&imgTex, img); - } - - size_t bindSumTex(PtrStepSz sum) - { - size_t offset; - cudaChannelFormatDesc desc_sum = cudaCreateChannelDesc(); - cudaSafeCall( cudaBindTexture2D(&offset, sumTex, sum.data, desc_sum, sum.cols, sum.rows, sum.step)); - return offset / sizeof(uint); - } - size_t bindMaskSumTex(PtrStepSz maskSum) - { - size_t offset; - cudaChannelFormatDesc desc_sum = cudaCreateChannelDesc(); - cudaSafeCall( cudaBindTexture2D(&offset, maskSumTex, maskSum.data, desc_sum, maskSum.cols, maskSum.rows, maskSum.step)); - return offset / sizeof(uint); - } - - template __device__ float icvCalcHaarPatternSum(const float src[][5], int oldSize, int newSize, int y, int x) - { - #if __CUDA_ARCH__ && __CUDA_ARCH__ >= 200 - typedef double real_t; - #else - typedef float real_t; - #endif - - float ratio = (float)newSize / oldSize; - - real_t d = 0; - - #pragma unroll - for (int k = 0; k < N; ++k) - { - int dx1 = __float2int_rn(ratio * src[k][0]); - int dy1 = __float2int_rn(ratio * src[k][1]); - int dx2 = __float2int_rn(ratio * src[k][2]); - int dy2 = __float2int_rn(ratio * src[k][3]); - - real_t t = 0; - t += tex2D(sumTex, x + dx1, y + dy1); - t -= tex2D(sumTex, x + dx1, y + dy2); - t -= tex2D(sumTex, x + dx2, y + dy1); - t += tex2D(sumTex, x + dx2, y + dy2); - - d += t * src[k][4] / ((dx2 - dx1) * (dy2 - dy1)); - } - - return (float)d; - } - - //////////////////////////////////////////////////////////////////////// - // Hessian - - __constant__ float c_DX [3][5] = { {0, 2, 3, 7, 1}, {3, 2, 6, 7, -2}, {6, 2, 9, 7, 1} }; - __constant__ float c_DY [3][5] = { {2, 0, 7, 3, 1}, {2, 3, 7, 6, -2}, {2, 6, 7, 9, 1} }; - __constant__ float c_DXY[4][5] = { {1, 1, 4, 4, 1}, {5, 1, 8, 4, -1}, {1, 5, 4, 8, -1}, {5, 5, 8, 8, 1} }; - - __host__ __device__ __forceinline__ int calcSize(int octave, int layer) - { - /* Wavelet size at first layer of first octave. */ - const int HAAR_SIZE0 = 9; - - /* Wavelet size increment between layers. This should be an even number, - such that the wavelet sizes in an octave are either all even or all odd. - This ensures that when looking for the neighbours of a sample, the layers - above and below are aligned correctly. */ - const int HAAR_SIZE_INC = 6; - - return (HAAR_SIZE0 + HAAR_SIZE_INC * layer) << octave; - } - - __global__ void icvCalcLayerDetAndTrace(PtrStepf det, PtrStepf trace) - { - // Determine the indices - const int gridDim_y = gridDim.y / (c_nOctaveLayers + 2); - const int blockIdx_y = blockIdx.y % gridDim_y; - const int blockIdx_z = blockIdx.y / gridDim_y; - - const int j = threadIdx.x + blockIdx.x * blockDim.x; - const int i = threadIdx.y + blockIdx_y * blockDim.y; - const int layer = blockIdx_z; - - const int size = calcSize(c_octave, layer); - - const int samples_i = 1 + ((c_img_rows - size) >> c_octave); - const int samples_j = 1 + ((c_img_cols - size) >> c_octave); - - // Ignore pixels where some of the kernel is outside the image - const int margin = (size >> 1) >> c_octave; - - if (size <= c_img_rows && size <= c_img_cols && i < samples_i && j < samples_j) - { - const float dx = icvCalcHaarPatternSum<3>(c_DX , 9, size, (i << c_octave), (j << c_octave)); - const float dy = icvCalcHaarPatternSum<3>(c_DY , 9, size, (i << c_octave), (j << c_octave)); - const float dxy = icvCalcHaarPatternSum<4>(c_DXY, 9, size, (i << c_octave), (j << c_octave)); - - det.ptr(layer * c_layer_rows + i + margin)[j + margin] = dx * dy - 0.81f * dxy * dxy; - trace.ptr(layer * c_layer_rows + i + margin)[j + margin] = dx + dy; - } - } - - void icvCalcLayerDetAndTrace_gpu(const PtrStepf& det, const PtrStepf& trace, int img_rows, int img_cols, - int octave, int nOctaveLayers) - { - const int min_size = calcSize(octave, 0); - const int max_samples_i = 1 + ((img_rows - min_size) >> octave); - const int max_samples_j = 1 + ((img_cols - min_size) >> octave); - - dim3 threads(16, 16); - - dim3 grid; - grid.x = divUp(max_samples_j, threads.x); - grid.y = divUp(max_samples_i, threads.y) * (nOctaveLayers + 2); - - icvCalcLayerDetAndTrace<<>>(det, trace); - cudaSafeCall( cudaGetLastError() ); - - cudaSafeCall( cudaDeviceSynchronize() ); - } - - //////////////////////////////////////////////////////////////////////// - // NONMAX - - __constant__ float c_DM[5] = {0, 0, 9, 9, 1}; - - struct WithMask - { - static __device__ bool check(int sum_i, int sum_j, int size) - { - float ratio = (float)size / 9.0f; - - float d = 0; - - int dx1 = __float2int_rn(ratio * c_DM[0]); - int dy1 = __float2int_rn(ratio * c_DM[1]); - int dx2 = __float2int_rn(ratio * c_DM[2]); - int dy2 = __float2int_rn(ratio * c_DM[3]); - - float t = 0; - t += tex2D(maskSumTex, sum_j + dx1, sum_i + dy1); - t -= tex2D(maskSumTex, sum_j + dx1, sum_i + dy2); - t -= tex2D(maskSumTex, sum_j + dx2, sum_i + dy1); - t += tex2D(maskSumTex, sum_j + dx2, sum_i + dy2); - - d += t * c_DM[4] / ((dx2 - dx1) * (dy2 - dy1)); - - return (d >= 0.5f); - } - }; - - template - __global__ void icvFindMaximaInLayer(const PtrStepf det, const PtrStepf trace, int4* maxPosBuffer, - unsigned int* maxCounter) - { - #if __CUDA_ARCH__ && __CUDA_ARCH__ >= 110 - - extern __shared__ float N9[]; - - // The hidx variables are the indices to the hessian buffer. - const int gridDim_y = gridDim.y / c_nOctaveLayers; - const int blockIdx_y = blockIdx.y % gridDim_y; - const int blockIdx_z = blockIdx.y / gridDim_y; - - const int layer = blockIdx_z + 1; - - const int size = calcSize(c_octave, layer); - - // Ignore pixels without a 3x3x3 neighbourhood in the layer above - const int margin = ((calcSize(c_octave, layer + 1) >> 1) >> c_octave) + 1; - - const int j = threadIdx.x + blockIdx.x * (blockDim.x - 2) + margin - 1; - const int i = threadIdx.y + blockIdx_y * (blockDim.y - 2) + margin - 1; - - // Is this thread within the hessian buffer? - const int zoff = blockDim.x * blockDim.y; - const int localLin = threadIdx.x + threadIdx.y * blockDim.x + zoff; - N9[localLin - zoff] = det.ptr(c_layer_rows * (layer - 1) + ::min(::max(i, 0), c_img_rows - 1))[::min(::max(j, 0), c_img_cols - 1)]; - N9[localLin ] = det.ptr(c_layer_rows * (layer ) + ::min(::max(i, 0), c_img_rows - 1))[::min(::max(j, 0), c_img_cols - 1)]; - N9[localLin + zoff] = det.ptr(c_layer_rows * (layer + 1) + ::min(::max(i, 0), c_img_rows - 1))[::min(::max(j, 0), c_img_cols - 1)]; - __syncthreads(); - - if (i < c_layer_rows - margin && j < c_layer_cols - margin && threadIdx.x > 0 && threadIdx.x < blockDim.x - 1 && threadIdx.y > 0 && threadIdx.y < blockDim.y - 1) - { - float val0 = N9[localLin]; - - if (val0 > c_hessianThreshold) - { - // Coordinates for the start of the wavelet in the sum image. There - // is some integer division involved, so don't try to simplify this - // (cancel out sampleStep) without checking the result is the same - const int sum_i = (i - ((size >> 1) >> c_octave)) << c_octave; - const int sum_j = (j - ((size >> 1) >> c_octave)) << c_octave; - - if (Mask::check(sum_i, sum_j, size)) - { - // Check to see if we have a max (in its 26 neighbours) - const bool condmax = val0 > N9[localLin - 1 - blockDim.x - zoff] - && val0 > N9[localLin - blockDim.x - zoff] - && val0 > N9[localLin + 1 - blockDim.x - zoff] - && val0 > N9[localLin - 1 - zoff] - && val0 > N9[localLin - zoff] - && val0 > N9[localLin + 1 - zoff] - && val0 > N9[localLin - 1 + blockDim.x - zoff] - && val0 > N9[localLin + blockDim.x - zoff] - && val0 > N9[localLin + 1 + blockDim.x - zoff] - - && val0 > N9[localLin - 1 - blockDim.x] - && val0 > N9[localLin - blockDim.x] - && val0 > N9[localLin + 1 - blockDim.x] - && val0 > N9[localLin - 1 ] - && val0 > N9[localLin + 1 ] - && val0 > N9[localLin - 1 + blockDim.x] - && val0 > N9[localLin + blockDim.x] - && val0 > N9[localLin + 1 + blockDim.x] - - && val0 > N9[localLin - 1 - blockDim.x + zoff] - && val0 > N9[localLin - blockDim.x + zoff] - && val0 > N9[localLin + 1 - blockDim.x + zoff] - && val0 > N9[localLin - 1 + zoff] - && val0 > N9[localLin + zoff] - && val0 > N9[localLin + 1 + zoff] - && val0 > N9[localLin - 1 + blockDim.x + zoff] - && val0 > N9[localLin + blockDim.x + zoff] - && val0 > N9[localLin + 1 + blockDim.x + zoff] - ; - - if(condmax) - { - unsigned int ind = atomicInc(maxCounter,(unsigned int) -1); - - if (ind < c_max_candidates) - { - const int laplacian = (int) copysignf(1.0f, trace.ptr(layer * c_layer_rows + i)[j]); - - maxPosBuffer[ind] = make_int4(j, i, layer, laplacian); - } - } - } - } - } - - #endif - } - - void icvFindMaximaInLayer_gpu(const PtrStepf& det, const PtrStepf& trace, int4* maxPosBuffer, unsigned int* maxCounter, - int img_rows, int img_cols, int octave, bool use_mask, int nOctaveLayers) - { - const int layer_rows = img_rows >> octave; - const int layer_cols = img_cols >> octave; - - const int min_margin = ((calcSize(octave, 2) >> 1) >> octave) + 1; - - dim3 threads(16, 16); - - dim3 grid; - grid.x = divUp(layer_cols - 2 * min_margin, threads.x - 2); - grid.y = divUp(layer_rows - 2 * min_margin, threads.y - 2) * nOctaveLayers; - - const size_t smem_size = threads.x * threads.y * 3 * sizeof(float); - - if (use_mask) - icvFindMaximaInLayer<<>>(det, trace, maxPosBuffer, maxCounter); - else - icvFindMaximaInLayer<<>>(det, trace, maxPosBuffer, maxCounter); - - cudaSafeCall( cudaGetLastError() ); - - cudaSafeCall( cudaDeviceSynchronize() ); - } - - //////////////////////////////////////////////////////////////////////// - // INTERPOLATION - - __global__ void icvInterpolateKeypoint(const PtrStepf det, const int4* maxPosBuffer, - float* featureX, float* featureY, int* featureLaplacian, int* featureOctave, float* featureSize, float* featureHessian, - unsigned int* featureCounter) - { - #if __CUDA_ARCH__ && __CUDA_ARCH__ >= 110 - - const int4 maxPos = maxPosBuffer[blockIdx.x]; - - const int j = maxPos.x - 1 + threadIdx.x; - const int i = maxPos.y - 1 + threadIdx.y; - const int layer = maxPos.z - 1 + threadIdx.z; - - __shared__ float N9[3][3][3]; - - N9[threadIdx.z][threadIdx.y][threadIdx.x] = det.ptr(c_layer_rows * layer + i)[j]; - __syncthreads(); - - if (threadIdx.x == 0 && threadIdx.y == 0 && threadIdx.z == 0) - { - __shared__ float dD[3]; - - //dx - dD[0] = -0.5f * (N9[1][1][2] - N9[1][1][0]); - //dy - dD[1] = -0.5f * (N9[1][2][1] - N9[1][0][1]); - //ds - dD[2] = -0.5f * (N9[2][1][1] - N9[0][1][1]); - - __shared__ float H[3][3]; - - //dxx - H[0][0] = N9[1][1][0] - 2.0f * N9[1][1][1] + N9[1][1][2]; - //dxy - H[0][1]= 0.25f * (N9[1][2][2] - N9[1][2][0] - N9[1][0][2] + N9[1][0][0]); - //dxs - H[0][2]= 0.25f * (N9[2][1][2] - N9[2][1][0] - N9[0][1][2] + N9[0][1][0]); - //dyx = dxy - H[1][0] = H[0][1]; - //dyy - H[1][1] = N9[1][0][1] - 2.0f * N9[1][1][1] + N9[1][2][1]; - //dys - H[1][2]= 0.25f * (N9[2][2][1] - N9[2][0][1] - N9[0][2][1] + N9[0][0][1]); - //dsx = dxs - H[2][0] = H[0][2]; - //dsy = dys - H[2][1] = H[1][2]; - //dss - H[2][2] = N9[0][1][1] - 2.0f * N9[1][1][1] + N9[2][1][1]; - - __shared__ float x[3]; - - if (solve3x3(H, dD, x)) - { - if (::fabs(x[0]) <= 1.f && ::fabs(x[1]) <= 1.f && ::fabs(x[2]) <= 1.f) - { - // if the step is within the interpolation region, perform it - - const int size = calcSize(c_octave, maxPos.z); - - const int sum_i = (maxPos.y - ((size >> 1) >> c_octave)) << c_octave; - const int sum_j = (maxPos.x - ((size >> 1) >> c_octave)) << c_octave; - - const float center_i = sum_i + (float)(size - 1) / 2; - const float center_j = sum_j + (float)(size - 1) / 2; - - const float px = center_j + x[0] * (1 << c_octave); - const float py = center_i + x[1] * (1 << c_octave); - - const int ds = size - calcSize(c_octave, maxPos.z - 1); - const float psize = roundf(size + x[2] * ds); - - /* The sampling intervals and wavelet sized for selecting an orientation - and building the keypoint descriptor are defined relative to 's' */ - const float s = psize * 1.2f / 9.0f; - - /* To find the dominant orientation, the gradients in x and y are - sampled in a circle of radius 6s using wavelets of size 4s. - We ensure the gradient wavelet size is even to ensure the - wavelet pattern is balanced and symmetric around its center */ - const int grad_wav_size = 2 * __float2int_rn(2.0f * s); - - // check when grad_wav_size is too big - if ((c_img_rows + 1) >= grad_wav_size && (c_img_cols + 1) >= grad_wav_size) - { - // Get a new feature index. - unsigned int ind = atomicInc(featureCounter, (unsigned int)-1); - - if (ind < c_max_features) - { - featureX[ind] = px; - featureY[ind] = py; - featureLaplacian[ind] = maxPos.w; - featureOctave[ind] = c_octave; - featureSize[ind] = psize; - featureHessian[ind] = N9[1][1][1]; - } - } // grad_wav_size check - } // If the subpixel interpolation worked - } - } // If this is thread 0. - - #endif - } - - void icvInterpolateKeypoint_gpu(const PtrStepf& det, const int4* maxPosBuffer, unsigned int maxCounter, - float* featureX, float* featureY, int* featureLaplacian, int* featureOctave, float* featureSize, float* featureHessian, - unsigned int* featureCounter) - { - dim3 threads; - threads.x = 3; - threads.y = 3; - threads.z = 3; - - dim3 grid; - grid.x = maxCounter; - - icvInterpolateKeypoint<<>>(det, maxPosBuffer, featureX, featureY, featureLaplacian, featureOctave, featureSize, featureHessian, featureCounter); - cudaSafeCall( cudaGetLastError() ); - - cudaSafeCall( cudaDeviceSynchronize() ); - } - - //////////////////////////////////////////////////////////////////////// - // Orientation - - #define ORI_SEARCH_INC 5 - #define ORI_WIN 60 - #define ORI_SAMPLES 113 - - __constant__ float c_aptX[ORI_SAMPLES] = {-6, -5, -5, -5, -5, -5, -5, -5, -4, -4, -4, -4, -4, -4, -4, -4, -4, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 6}; - __constant__ float c_aptY[ORI_SAMPLES] = {0, -3, -2, -1, 0, 1, 2, 3, -4, -3, -2, -1, 0, 1, 2, 3, 4, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -4, -3, -2, -1, 0, 1, 2, 3, 4, -3, -2, -1, 0, 1, 2, 3, 0}; - __constant__ float c_aptW[ORI_SAMPLES] = {0.001455130288377404f, 0.001707611023448408f, 0.002547456417232752f, 0.003238451667129993f, 0.0035081731621176f, 0.003238451667129993f, 0.002547456417232752f, 0.001707611023448408f, 0.002003900473937392f, 0.0035081731621176f, 0.005233579315245152f, 0.00665318313986063f, 0.00720730796456337f, 0.00665318313986063f, 0.005233579315245152f, 0.0035081731621176f, 0.002003900473937392f, 0.001707611023448408f, 0.0035081731621176f, 0.006141661666333675f, 0.009162282571196556f, 0.01164754293859005f, 0.01261763460934162f, 0.01164754293859005f, 0.009162282571196556f, 0.006141661666333675f, 0.0035081731621176f, 0.001707611023448408f, 0.002547456417232752f, 0.005233579315245152f, 0.009162282571196556f, 0.01366852037608624f, 0.01737609319388866f, 0.0188232995569706f, 0.01737609319388866f, 0.01366852037608624f, 0.009162282571196556f, 0.005233579315245152f, 0.002547456417232752f, 0.003238451667129993f, 0.00665318313986063f, 0.01164754293859005f, 0.01737609319388866f, 0.02208934165537357f, 0.02392910048365593f, 0.02208934165537357f, 0.01737609319388866f, 0.01164754293859005f, 0.00665318313986063f, 0.003238451667129993f, 0.001455130288377404f, 0.0035081731621176f, 0.00720730796456337f, 0.01261763460934162f, 0.0188232995569706f, 0.02392910048365593f, 0.02592208795249462f, 0.02392910048365593f, 0.0188232995569706f, 0.01261763460934162f, 0.00720730796456337f, 0.0035081731621176f, 0.001455130288377404f, 0.003238451667129993f, 0.00665318313986063f, 0.01164754293859005f, 0.01737609319388866f, 0.02208934165537357f, 0.02392910048365593f, 0.02208934165537357f, 0.01737609319388866f, 0.01164754293859005f, 0.00665318313986063f, 0.003238451667129993f, 0.002547456417232752f, 0.005233579315245152f, 0.009162282571196556f, 0.01366852037608624f, 0.01737609319388866f, 0.0188232995569706f, 0.01737609319388866f, 0.01366852037608624f, 0.009162282571196556f, 0.005233579315245152f, 0.002547456417232752f, 0.001707611023448408f, 0.0035081731621176f, 0.006141661666333675f, 0.009162282571196556f, 0.01164754293859005f, 0.01261763460934162f, 0.01164754293859005f, 0.009162282571196556f, 0.006141661666333675f, 0.0035081731621176f, 0.001707611023448408f, 0.002003900473937392f, 0.0035081731621176f, 0.005233579315245152f, 0.00665318313986063f, 0.00720730796456337f, 0.00665318313986063f, 0.005233579315245152f, 0.0035081731621176f, 0.002003900473937392f, 0.001707611023448408f, 0.002547456417232752f, 0.003238451667129993f, 0.0035081731621176f, 0.003238451667129993f, 0.002547456417232752f, 0.001707611023448408f, 0.001455130288377404f}; - - __constant__ float c_NX[2][5] = {{0, 0, 2, 4, -1}, {2, 0, 4, 4, 1}}; - __constant__ float c_NY[2][5] = {{0, 0, 4, 2, 1}, {0, 2, 4, 4, -1}}; - - __global__ void icvCalcOrientation(const float* featureX, const float* featureY, const float* featureSize, float* featureDir) - { - __shared__ float s_X[128]; - __shared__ float s_Y[128]; - __shared__ float s_angle[128]; - - __shared__ float s_sumx[32 * 4]; - __shared__ float s_sumy[32 * 4]; - - /* The sampling intervals and wavelet sized for selecting an orientation - and building the keypoint descriptor are defined relative to 's' */ - const float s = featureSize[blockIdx.x] * 1.2f / 9.0f; - - /* To find the dominant orientation, the gradients in x and y are - sampled in a circle of radius 6s using wavelets of size 4s. - We ensure the gradient wavelet size is even to ensure the - wavelet pattern is balanced and symmetric around its center */ - const int grad_wav_size = 2 * __float2int_rn(2.0f * s); - - // check when grad_wav_size is too big - if ((c_img_rows + 1) < grad_wav_size || (c_img_cols + 1) < grad_wav_size) - return; - - // Calc X, Y, angle and store it to shared memory - const int tid = threadIdx.y * blockDim.x + threadIdx.x; - - float X = 0.0f, Y = 0.0f, angle = 0.0f; - - if (tid < ORI_SAMPLES) - { - const float margin = (float)(grad_wav_size - 1) / 2.0f; - const int x = __float2int_rn(featureX[blockIdx.x] + c_aptX[tid] * s - margin); - const int y = __float2int_rn(featureY[blockIdx.x] + c_aptY[tid] * s - margin); - - if (y >= 0 && y < (c_img_rows + 1) - grad_wav_size && - x >= 0 && x < (c_img_cols + 1) - grad_wav_size) - { - X = c_aptW[tid] * icvCalcHaarPatternSum<2>(c_NX, 4, grad_wav_size, y, x); - Y = c_aptW[tid] * icvCalcHaarPatternSum<2>(c_NY, 4, grad_wav_size, y, x); - - angle = atan2f(Y, X); - if (angle < 0) - angle += 2.0f * CV_PI_F; - angle *= 180.0f / CV_PI_F; - } - } - s_X[tid] = X; - s_Y[tid] = Y; - s_angle[tid] = angle; - __syncthreads(); - - float bestx = 0, besty = 0, best_mod = 0; - - #if __CUDA_ARCH__ >= 200 - #pragma unroll - #endif - for (int i = 0; i < 18; ++i) - { - const int dir = (i * 4 + threadIdx.y) * ORI_SEARCH_INC; - - float sumx = 0.0f, sumy = 0.0f; - int d = ::abs(__float2int_rn(s_angle[threadIdx.x]) - dir); - if (d < ORI_WIN / 2 || d > 360 - ORI_WIN / 2) - { - sumx = s_X[threadIdx.x]; - sumy = s_Y[threadIdx.x]; - } - d = ::abs(__float2int_rn(s_angle[threadIdx.x + 32]) - dir); - if (d < ORI_WIN / 2 || d > 360 - ORI_WIN / 2) - { - sumx += s_X[threadIdx.x + 32]; - sumy += s_Y[threadIdx.x + 32]; - } - d = ::abs(__float2int_rn(s_angle[threadIdx.x + 64]) - dir); - if (d < ORI_WIN / 2 || d > 360 - ORI_WIN / 2) - { - sumx += s_X[threadIdx.x + 64]; - sumy += s_Y[threadIdx.x + 64]; - } - d = ::abs(__float2int_rn(s_angle[threadIdx.x + 96]) - dir); - if (d < ORI_WIN / 2 || d > 360 - ORI_WIN / 2) - { - sumx += s_X[threadIdx.x + 96]; - sumy += s_Y[threadIdx.x + 96]; - } - - plus op; - device::reduce<32>(smem_tuple(s_sumx + threadIdx.y * 32, s_sumy + threadIdx.y * 32), - thrust::tie(sumx, sumy), threadIdx.x, thrust::make_tuple(op, op)); - - const float temp_mod = sumx * sumx + sumy * sumy; - if (temp_mod > best_mod) - { - best_mod = temp_mod; - bestx = sumx; - besty = sumy; - } - - __syncthreads(); - } - - if (threadIdx.x == 0) - { - s_X[threadIdx.y] = bestx; - s_Y[threadIdx.y] = besty; - s_angle[threadIdx.y] = best_mod; - } - __syncthreads(); - - if (threadIdx.x == 0 && threadIdx.y == 0) - { - int bestIdx = 0; - - if (s_angle[1] > s_angle[bestIdx]) - bestIdx = 1; - if (s_angle[2] > s_angle[bestIdx]) - bestIdx = 2; - if (s_angle[3] > s_angle[bestIdx]) - bestIdx = 3; - - float kp_dir = atan2f(s_Y[bestIdx], s_X[bestIdx]); - if (kp_dir < 0) - kp_dir += 2.0f * CV_PI_F; - kp_dir *= 180.0f / CV_PI_F; - - kp_dir = 360.0f - kp_dir; - if (::fabsf(kp_dir - 360.f) < numeric_limits::epsilon()) - kp_dir = 0.f; - - featureDir[blockIdx.x] = kp_dir; - } - } - - #undef ORI_SEARCH_INC - #undef ORI_WIN - #undef ORI_SAMPLES - - void icvCalcOrientation_gpu(const float* featureX, const float* featureY, const float* featureSize, float* featureDir, int nFeatures) - { - dim3 threads; - threads.x = 32; - threads.y = 4; - - dim3 grid; - grid.x = nFeatures; - - icvCalcOrientation<<>>(featureX, featureY, featureSize, featureDir); - cudaSafeCall( cudaGetLastError() ); - - cudaSafeCall( cudaDeviceSynchronize() ); - } - - //////////////////////////////////////////////////////////////////////// - // Descriptors - - #define PATCH_SZ 20 - - __constant__ float c_DW[PATCH_SZ * PATCH_SZ] = - { - 3.695352233989979e-006f, 8.444558261544444e-006f, 1.760426494001877e-005f, 3.34794785885606e-005f, 5.808438800158911e-005f, 9.193058212986216e-005f, 0.0001327334757661447f, 0.0001748319627949968f, 0.0002100782439811155f, 0.0002302826324012131f, 0.0002302826324012131f, 0.0002100782439811155f, 0.0001748319627949968f, 0.0001327334757661447f, 9.193058212986216e-005f, 5.808438800158911e-005f, 3.34794785885606e-005f, 1.760426494001877e-005f, 8.444558261544444e-006f, 3.695352233989979e-006f, - 8.444558261544444e-006f, 1.929736572492402e-005f, 4.022897701361217e-005f, 7.650675252079964e-005f, 0.0001327334903180599f, 0.0002100782585330308f, 0.0003033203829545528f, 0.0003995231236331165f, 0.0004800673632416874f, 0.0005262381164357066f, 0.0005262381164357066f, 0.0004800673632416874f, 0.0003995231236331165f, 0.0003033203829545528f, 0.0002100782585330308f, 0.0001327334903180599f, 7.650675252079964e-005f, 4.022897701361217e-005f, 1.929736572492402e-005f, 8.444558261544444e-006f, - 1.760426494001877e-005f, 4.022897701361217e-005f, 8.386484114453197e-005f, 0.0001594926579855382f, 0.0002767078403849155f, 0.0004379475140012801f, 0.0006323281559161842f, 0.0008328808471560478f, 0.001000790391117334f, 0.001097041997127235f, 0.001097041997127235f, 0.001000790391117334f, 0.0008328808471560478f, 0.0006323281559161842f, 0.0004379475140012801f, 0.0002767078403849155f, 0.0001594926579855382f, 8.386484114453197e-005f, 4.022897701361217e-005f, 1.760426494001877e-005f, - 3.34794785885606e-005f, 7.650675252079964e-005f, 0.0001594926579855382f, 0.0003033203247468919f, 0.0005262380582280457f, 0.0008328807889483869f, 0.001202550483867526f, 0.001583957928232849f, 0.001903285388834775f, 0.002086334861814976f, 0.002086334861814976f, 0.001903285388834775f, 0.001583957928232849f, 0.001202550483867526f, 0.0008328807889483869f, 0.0005262380582280457f, 0.0003033203247468919f, 0.0001594926579855382f, 7.650675252079964e-005f, 3.34794785885606e-005f, - 5.808438800158911e-005f, 0.0001327334903180599f, 0.0002767078403849155f, 0.0005262380582280457f, 0.0009129836107604206f, 0.001444985857233405f, 0.002086335094645619f, 0.002748048631474376f, 0.00330205773934722f, 0.003619635012000799f, 0.003619635012000799f, 0.00330205773934722f, 0.002748048631474376f, 0.002086335094645619f, 0.001444985857233405f, 0.0009129836107604206f, 0.0005262380582280457f, 0.0002767078403849155f, 0.0001327334903180599f, 5.808438800158911e-005f, - 9.193058212986216e-005f, 0.0002100782585330308f, 0.0004379475140012801f, 0.0008328807889483869f, 0.001444985857233405f, 0.002286989474669099f, 0.00330205773934722f, 0.004349356517195702f, 0.00522619066759944f, 0.005728822201490402f, 0.005728822201490402f, 0.00522619066759944f, 0.004349356517195702f, 0.00330205773934722f, 0.002286989474669099f, 0.001444985857233405f, 0.0008328807889483869f, 0.0004379475140012801f, 0.0002100782585330308f, 9.193058212986216e-005f, - 0.0001327334757661447f, 0.0003033203829545528f, 0.0006323281559161842f, 0.001202550483867526f, 0.002086335094645619f, 0.00330205773934722f, 0.004767658654600382f, 0.006279794964939356f, 0.007545807864516974f, 0.008271530270576477f, 0.008271530270576477f, 0.007545807864516974f, 0.006279794964939356f, 0.004767658654600382f, 0.00330205773934722f, 0.002086335094645619f, 0.001202550483867526f, 0.0006323281559161842f, 0.0003033203829545528f, 0.0001327334757661447f, - 0.0001748319627949968f, 0.0003995231236331165f, 0.0008328808471560478f, 0.001583957928232849f, 0.002748048631474376f, 0.004349356517195702f, 0.006279794964939356f, 0.008271529339253902f, 0.009939077310264111f, 0.01089497376233339f, 0.01089497376233339f, 0.009939077310264111f, 0.008271529339253902f, 0.006279794964939356f, 0.004349356517195702f, 0.002748048631474376f, 0.001583957928232849f, 0.0008328808471560478f, 0.0003995231236331165f, 0.0001748319627949968f, - 0.0002100782439811155f, 0.0004800673632416874f, 0.001000790391117334f, 0.001903285388834775f, 0.00330205773934722f, 0.00522619066759944f, 0.007545807864516974f, 0.009939077310264111f, 0.01194280479103327f, 0.01309141051024199f, 0.01309141051024199f, 0.01194280479103327f, 0.009939077310264111f, 0.007545807864516974f, 0.00522619066759944f, 0.00330205773934722f, 0.001903285388834775f, 0.001000790391117334f, 0.0004800673632416874f, 0.0002100782439811155f, - 0.0002302826324012131f, 0.0005262381164357066f, 0.001097041997127235f, 0.002086334861814976f, 0.003619635012000799f, 0.005728822201490402f, 0.008271530270576477f, 0.01089497376233339f, 0.01309141051024199f, 0.01435048412531614f, 0.01435048412531614f, 0.01309141051024199f, 0.01089497376233339f, 0.008271530270576477f, 0.005728822201490402f, 0.003619635012000799f, 0.002086334861814976f, 0.001097041997127235f, 0.0005262381164357066f, 0.0002302826324012131f, - 0.0002302826324012131f, 0.0005262381164357066f, 0.001097041997127235f, 0.002086334861814976f, 0.003619635012000799f, 0.005728822201490402f, 0.008271530270576477f, 0.01089497376233339f, 0.01309141051024199f, 0.01435048412531614f, 0.01435048412531614f, 0.01309141051024199f, 0.01089497376233339f, 0.008271530270576477f, 0.005728822201490402f, 0.003619635012000799f, 0.002086334861814976f, 0.001097041997127235f, 0.0005262381164357066f, 0.0002302826324012131f, - 0.0002100782439811155f, 0.0004800673632416874f, 0.001000790391117334f, 0.001903285388834775f, 0.00330205773934722f, 0.00522619066759944f, 0.007545807864516974f, 0.009939077310264111f, 0.01194280479103327f, 0.01309141051024199f, 0.01309141051024199f, 0.01194280479103327f, 0.009939077310264111f, 0.007545807864516974f, 0.00522619066759944f, 0.00330205773934722f, 0.001903285388834775f, 0.001000790391117334f, 0.0004800673632416874f, 0.0002100782439811155f, - 0.0001748319627949968f, 0.0003995231236331165f, 0.0008328808471560478f, 0.001583957928232849f, 0.002748048631474376f, 0.004349356517195702f, 0.006279794964939356f, 0.008271529339253902f, 0.009939077310264111f, 0.01089497376233339f, 0.01089497376233339f, 0.009939077310264111f, 0.008271529339253902f, 0.006279794964939356f, 0.004349356517195702f, 0.002748048631474376f, 0.001583957928232849f, 0.0008328808471560478f, 0.0003995231236331165f, 0.0001748319627949968f, - 0.0001327334757661447f, 0.0003033203829545528f, 0.0006323281559161842f, 0.001202550483867526f, 0.002086335094645619f, 0.00330205773934722f, 0.004767658654600382f, 0.006279794964939356f, 0.007545807864516974f, 0.008271530270576477f, 0.008271530270576477f, 0.007545807864516974f, 0.006279794964939356f, 0.004767658654600382f, 0.00330205773934722f, 0.002086335094645619f, 0.001202550483867526f, 0.0006323281559161842f, 0.0003033203829545528f, 0.0001327334757661447f, - 9.193058212986216e-005f, 0.0002100782585330308f, 0.0004379475140012801f, 0.0008328807889483869f, 0.001444985857233405f, 0.002286989474669099f, 0.00330205773934722f, 0.004349356517195702f, 0.00522619066759944f, 0.005728822201490402f, 0.005728822201490402f, 0.00522619066759944f, 0.004349356517195702f, 0.00330205773934722f, 0.002286989474669099f, 0.001444985857233405f, 0.0008328807889483869f, 0.0004379475140012801f, 0.0002100782585330308f, 9.193058212986216e-005f, - 5.808438800158911e-005f, 0.0001327334903180599f, 0.0002767078403849155f, 0.0005262380582280457f, 0.0009129836107604206f, 0.001444985857233405f, 0.002086335094645619f, 0.002748048631474376f, 0.00330205773934722f, 0.003619635012000799f, 0.003619635012000799f, 0.00330205773934722f, 0.002748048631474376f, 0.002086335094645619f, 0.001444985857233405f, 0.0009129836107604206f, 0.0005262380582280457f, 0.0002767078403849155f, 0.0001327334903180599f, 5.808438800158911e-005f, - 3.34794785885606e-005f, 7.650675252079964e-005f, 0.0001594926579855382f, 0.0003033203247468919f, 0.0005262380582280457f, 0.0008328807889483869f, 0.001202550483867526f, 0.001583957928232849f, 0.001903285388834775f, 0.002086334861814976f, 0.002086334861814976f, 0.001903285388834775f, 0.001583957928232849f, 0.001202550483867526f, 0.0008328807889483869f, 0.0005262380582280457f, 0.0003033203247468919f, 0.0001594926579855382f, 7.650675252079964e-005f, 3.34794785885606e-005f, - 1.760426494001877e-005f, 4.022897701361217e-005f, 8.386484114453197e-005f, 0.0001594926579855382f, 0.0002767078403849155f, 0.0004379475140012801f, 0.0006323281559161842f, 0.0008328808471560478f, 0.001000790391117334f, 0.001097041997127235f, 0.001097041997127235f, 0.001000790391117334f, 0.0008328808471560478f, 0.0006323281559161842f, 0.0004379475140012801f, 0.0002767078403849155f, 0.0001594926579855382f, 8.386484114453197e-005f, 4.022897701361217e-005f, 1.760426494001877e-005f, - 8.444558261544444e-006f, 1.929736572492402e-005f, 4.022897701361217e-005f, 7.650675252079964e-005f, 0.0001327334903180599f, 0.0002100782585330308f, 0.0003033203829545528f, 0.0003995231236331165f, 0.0004800673632416874f, 0.0005262381164357066f, 0.0005262381164357066f, 0.0004800673632416874f, 0.0003995231236331165f, 0.0003033203829545528f, 0.0002100782585330308f, 0.0001327334903180599f, 7.650675252079964e-005f, 4.022897701361217e-005f, 1.929736572492402e-005f, 8.444558261544444e-006f, - 3.695352233989979e-006f, 8.444558261544444e-006f, 1.760426494001877e-005f, 3.34794785885606e-005f, 5.808438800158911e-005f, 9.193058212986216e-005f, 0.0001327334757661447f, 0.0001748319627949968f, 0.0002100782439811155f, 0.0002302826324012131f, 0.0002302826324012131f, 0.0002100782439811155f, 0.0001748319627949968f, 0.0001327334757661447f, 9.193058212986216e-005f, 5.808438800158911e-005f, 3.34794785885606e-005f, 1.760426494001877e-005f, 8.444558261544444e-006f, 3.695352233989979e-006f - }; - - struct WinReader - { - typedef uchar elem_type; - - __device__ __forceinline__ uchar operator ()(int i, int j) const - { - float pixel_x = centerX + (win_offset + j) * cos_dir + (win_offset + i) * sin_dir; - float pixel_y = centerY - (win_offset + j) * sin_dir + (win_offset + i) * cos_dir; - - return tex2D(imgTex, pixel_x, pixel_y); - } - - float centerX; - float centerY; - float win_offset; - float cos_dir; - float sin_dir; - int width; - int height; - }; - - __device__ void calc_dx_dy(const float* featureX, const float* featureY, const float* featureSize, const float* featureDir, - float& dx, float& dy); - - __device__ void calc_dx_dy(const float* featureX, const float* featureY, const float* featureSize, const float* featureDir, - float& dx, float& dy) - { - __shared__ float s_PATCH[PATCH_SZ + 1][PATCH_SZ + 1]; - - dx = dy = 0.0f; - - WinReader win; - - win.centerX = featureX[blockIdx.x]; - win.centerY = featureY[blockIdx.x]; - - // The sampling intervals and wavelet sized for selecting an orientation - // and building the keypoint descriptor are defined relative to 's' - const float s = featureSize[blockIdx.x] * 1.2f / 9.0f; - - // Extract a window of pixels around the keypoint of size 20s - const int win_size = (int)((PATCH_SZ + 1) * s); - - win.width = win.height = win_size; - - // Nearest neighbour version (faster) - win.win_offset = -(win_size - 1.0f) / 2.0f; - - float descriptor_dir = 360.0f - featureDir[blockIdx.x]; - if (::fabsf(descriptor_dir - 360.f) < numeric_limits::epsilon()) - descriptor_dir = 0.f; - descriptor_dir *= CV_PI_F / 180.0f; - sincosf(descriptor_dir, &win.sin_dir, &win.cos_dir); - - const int tid = threadIdx.y * blockDim.x + threadIdx.x; - - const int xLoadInd = tid % (PATCH_SZ + 1); - const int yLoadInd = tid / (PATCH_SZ + 1); - - if (yLoadInd < (PATCH_SZ + 1)) - { - if (s > 1) - { - AreaFilter filter(win, s, s); - s_PATCH[yLoadInd][xLoadInd] = filter(yLoadInd, xLoadInd); - } - else - { - LinearFilter filter(win); - s_PATCH[yLoadInd][xLoadInd] = filter(yLoadInd * s, xLoadInd * s); - } - } - - __syncthreads(); - - const int xPatchInd = threadIdx.x % 5; - const int yPatchInd = threadIdx.x / 5; - - if (yPatchInd < 5) - { - const int xBlockInd = threadIdx.y % 4; - const int yBlockInd = threadIdx.y / 4; - - const int xInd = xBlockInd * 5 + xPatchInd; - const int yInd = yBlockInd * 5 + yPatchInd; - - const float dw = c_DW[yInd * PATCH_SZ + xInd]; - - dx = (s_PATCH[yInd ][xInd + 1] - s_PATCH[yInd][xInd] + s_PATCH[yInd + 1][xInd + 1] - s_PATCH[yInd + 1][xInd ]) * dw; - dy = (s_PATCH[yInd + 1][xInd ] - s_PATCH[yInd][xInd] + s_PATCH[yInd + 1][xInd + 1] - s_PATCH[yInd ][xInd + 1]) * dw; - } - } - - __global__ void compute_descriptors_64(PtrStep descriptors, const float* featureX, const float* featureY, const float* featureSize, const float* featureDir) - { - __shared__ float smem[32 * 16]; - - float* sRow = smem + threadIdx.y * 32; - - float dx, dy; - calc_dx_dy(featureX, featureY, featureSize, featureDir, dx, dy); - - float dxabs = ::fabsf(dx); - float dyabs = ::fabsf(dy); - - plus op; - - reduce<32>(sRow, dx, threadIdx.x, op); - reduce<32>(sRow, dy, threadIdx.x, op); - reduce<32>(sRow, dxabs, threadIdx.x, op); - reduce<32>(sRow, dyabs, threadIdx.x, op); - - float4* descriptors_block = descriptors.ptr(blockIdx.x) + threadIdx.y; - - // write dx, dy, |dx|, |dy| - if (threadIdx.x == 0) - *descriptors_block = make_float4(dx, dy, dxabs, dyabs); - } - - __global__ void compute_descriptors_128(PtrStep descriptors, const float* featureX, const float* featureY, const float* featureSize, const float* featureDir) - { - __shared__ float smem[32 * 16]; - - float* sRow = smem + threadIdx.y * 32; - - float dx, dy; - calc_dx_dy(featureX, featureY, featureSize, featureDir, dx, dy); - - float4* descriptors_block = descriptors.ptr(blockIdx.x) + threadIdx.y * 2; - - plus op; - - float d1 = 0.0f; - float d2 = 0.0f; - float abs1 = 0.0f; - float abs2 = 0.0f; - - if (dy >= 0) - { - d1 = dx; - abs1 = ::fabsf(dx); - } - else - { - d2 = dx; - abs2 = ::fabsf(dx); - } - - reduce<32>(sRow, d1, threadIdx.x, op); - reduce<32>(sRow, d2, threadIdx.x, op); - reduce<32>(sRow, abs1, threadIdx.x, op); - reduce<32>(sRow, abs2, threadIdx.x, op); - - // write dx (dy >= 0), |dx| (dy >= 0), dx (dy < 0), |dx| (dy < 0) - if (threadIdx.x == 0) - descriptors_block[0] = make_float4(d1, abs1, d2, abs2); - - if (dx >= 0) - { - d1 = dy; - abs1 = ::fabsf(dy); - d2 = 0.0f; - abs2 = 0.0f; - } - else - { - d1 = 0.0f; - abs1 = 0.0f; - d2 = dy; - abs2 = ::fabsf(dy); - } - - reduce<32>(sRow, d1, threadIdx.x, op); - reduce<32>(sRow, d2, threadIdx.x, op); - reduce<32>(sRow, abs1, threadIdx.x, op); - reduce<32>(sRow, abs2, threadIdx.x, op); - - // write dy (dx >= 0), |dy| (dx >= 0), dy (dx < 0), |dy| (dx < 0) - if (threadIdx.x == 0) - descriptors_block[1] = make_float4(d1, abs1, d2, abs2); - } - - template __global__ void normalize_descriptors(PtrStepf descriptors) - { - __shared__ float smem[BLOCK_DIM_X]; - __shared__ float s_len; - - // no need for thread ID - float* descriptor_base = descriptors.ptr(blockIdx.x); - - // read in the unnormalized descriptor values (squared) - const float val = descriptor_base[threadIdx.x]; - - float len = val * val; - reduce(smem, len, threadIdx.x, plus()); - - if (threadIdx.x == 0) - s_len = ::sqrtf(len); - - __syncthreads(); - - // normalize and store in output - descriptor_base[threadIdx.x] = val / s_len; - } - - void compute_descriptors_gpu(PtrStepSz descriptors, const float* featureX, const float* featureY, const float* featureSize, const float* featureDir, int nFeatures) - { - // compute unnormalized descriptors, then normalize them - odd indexing since grid must be 2D - - if (descriptors.cols == 64) - { - compute_descriptors_64<<>>(descriptors, featureX, featureY, featureSize, featureDir); - cudaSafeCall( cudaGetLastError() ); - - cudaSafeCall( cudaDeviceSynchronize() ); - - normalize_descriptors<64><<>>((PtrStepSzf) descriptors); - cudaSafeCall( cudaGetLastError() ); - - cudaSafeCall( cudaDeviceSynchronize() ); - } - else - { - compute_descriptors_128<<>>(descriptors, featureX, featureY, featureSize, featureDir); - cudaSafeCall( cudaGetLastError() ); - - cudaSafeCall( cudaDeviceSynchronize() ); - - normalize_descriptors<128><<>>((PtrStepSzf) descriptors); - cudaSafeCall( cudaGetLastError() ); - - cudaSafeCall( cudaDeviceSynchronize() ); - } - } - } // namespace surf -}}} // namespace cv { namespace cuda { namespace cudev - -#endif // HAVE_OPENCV_CUDAARITHM diff --git a/modules/nonfree/src/nonfree_init.cpp b/modules/nonfree/src/nonfree_init.cpp deleted file mode 100644 index c59e735482..0000000000 --- a/modules/nonfree/src/nonfree_init.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "precomp.hpp" - -namespace cv -{ - -/////////////////////////////////////////////////////////////////////////////////////////////////////////// - -CV_INIT_ALGORITHM(SURF, "Feature2D.SURF", - obj.info()->addParam(obj, "hessianThreshold", obj.hessianThreshold); - obj.info()->addParam(obj, "nOctaves", obj.nOctaves); - obj.info()->addParam(obj, "nOctaveLayers", obj.nOctaveLayers); - obj.info()->addParam(obj, "extended", obj.extended); - obj.info()->addParam(obj, "upright", obj.upright)) - -/////////////////////////////////////////////////////////////////////////////////////////////////////////// - -CV_INIT_ALGORITHM(SIFT, "Feature2D.SIFT", - obj.info()->addParam(obj, "nFeatures", obj.nfeatures); - obj.info()->addParam(obj, "nOctaveLayers", obj.nOctaveLayers); - obj.info()->addParam(obj, "contrastThreshold", obj.contrastThreshold); - obj.info()->addParam(obj, "edgeThreshold", obj.edgeThreshold); - obj.info()->addParam(obj, "sigma", obj.sigma)) - -/////////////////////////////////////////////////////////////////////////////////////////////////////////// - -bool initModule_nonfree(void) -{ - Ptr sift = createSIFT_ptr_hidden(), surf = createSURF_ptr_hidden(); - return sift->info() != 0 && surf->info() != 0; -} - -} diff --git a/modules/nonfree/src/opencl/surf.cl b/modules/nonfree/src/opencl/surf.cl deleted file mode 100644 index 608a677cea..0000000000 --- a/modules/nonfree/src/opencl/surf.cl +++ /dev/null @@ -1,1347 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2010-2012, Multicoreware, Inc., all rights reserved. -// Copyright (C) 2010-2012, Advanced Micro Devices, Inc., all rights reserved. -// Copyright (C) 2013, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// @Authors -// Peng Xiao, pengxiao@multicorewareinc.com -// Sen Liu, swjtuls1987@126.com -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors as is and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -// The number of degrees between orientation samples in calcOrientation -#define ORI_SEARCH_INC 5 - -// The local size of the calcOrientation kernel -#define ORI_LOCAL_SIZE (360 / ORI_SEARCH_INC) - -// specialized for non-image2d_t supported platform, intel HD4000, for example -#ifndef HAVE_IMAGE2D -__inline uint read_sumTex_(__global uint* sumTex, int sum_step, int img_rows, int img_cols, int2 coord) -{ - int x = clamp(coord.x, 0, img_cols); - int y = clamp(coord.y, 0, img_rows); - return sumTex[sum_step * y + x]; -} - -__inline uchar read_imgTex_(__global uchar* imgTex, int img_step, int img_rows, int img_cols, float2 coord) -{ - int x = clamp(convert_int_rte(coord.x), 0, img_cols-1); - int y = clamp(convert_int_rte(coord.y), 0, img_rows-1); - return imgTex[img_step * y + x]; -} - -#define read_sumTex(coord) read_sumTex_(sumTex, sum_step, img_rows, img_cols, coord) -#define read_imgTex(coord) read_imgTex_(imgTex, img_step, img_rows, img_cols, coord) - -#define __PARAM_sumTex__ __global uint* sumTex, int sum_step, int sum_offset -#define __PARAM_imgTex__ __global uchar* imgTex, int img_step, int img_offset - -#define __PASS_sumTex__ sumTex, sum_step, sum_offset -#define __PASS_imgTex__ imgTex, img_step, img_offset - -#else -__inline uint read_sumTex_(image2d_t sumTex, sampler_t sam, int2 coord) -{ - return read_imageui(sumTex, sam, coord).x; -} - -__inline uchar read_imgTex_(image2d_t imgTex, sampler_t sam, float2 coord) -{ - return (uchar)read_imageui(imgTex, sam, coord).x; -} - -#define read_sumTex(coord) read_sumTex_(sumTex, sampler, coord) -#define read_imgTex(coord) read_imgTex_(imgTex, sampler, coord) - -#define __PARAM_sumTex__ image2d_t sumTex -#define __PARAM_imgTex__ image2d_t imgTex - -#define __PASS_sumTex__ sumTex -#define __PASS_imgTex__ imgTex - -#endif - -// dynamically change the precision used for floating type - -#if defined (DOUBLE_SUPPORT) -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64:enable -#elif defined (cl_amd_fp64) -#pragma OPENCL EXTENSION cl_amd_fp64:enable -#endif -#define F double -#else -#define F float -#endif - -// Image read mode -__constant sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP_TO_EDGE | CLK_FILTER_NEAREST; - -#ifndef FLT_EPSILON -#define FLT_EPSILON (1e-15) -#endif - -#ifndef CV_PI_F -#define CV_PI_F 3.14159265f -#endif - -//////////////////////////////////////////////////////////////////////// -// Hessian - -__inline int calcSize(int octave, int layer) -{ - /* Wavelet size at first layer of first octave. */ - const int HAAR_SIZE0 = 9; - - /* Wavelet size increment between layers. This should be an even number, - such that the wavelet sizes in an octave are either all even or all odd. - This ensures that when looking for the neighbours of a sample, the layers - above and below are aligned correctly. */ - const int HAAR_SIZE_INC = 6; - - return (HAAR_SIZE0 + HAAR_SIZE_INC * layer) << octave; -} - -// Calculate a derivative in an axis-aligned direction (x or y). The "plus1" -// boxes contribute 1 * (area), and the "minus2" box contributes -2 * (area). -// So the final computation is plus1a + plus1b - 2 * minus2. The corners are -// labeled A, B, C, and D, with A being the top left, B being top right, C -// being bottom left, and D being bottom right. -F calcAxisAlignedDerivative( - int plus1a_A, int plus1a_B, int plus1a_C, int plus1a_D, F plus1a_scale, - int plus1b_A, int plus1b_B, int plus1b_C, int plus1b_D, F plus1b_scale, - int minus2_A, int minus2_B, int minus2_C, int minus2_D, F minus2_scale) -{ - F plus1a = plus1a_A - plus1a_B - plus1a_C + plus1a_D; - F plus1b = plus1b_A - plus1b_B - plus1b_C + plus1b_D; - F minus2 = minus2_A - minus2_B - minus2_C + minus2_D; - - return (plus1a / plus1a_scale - - 2.0f * minus2 / minus2_scale + - plus1b / plus1b_scale); -} - -//calculate targeted layer per-pixel determinant and trace with an integral image -__kernel void SURF_calcLayerDetAndTrace( - __PARAM_sumTex__, // input integral image - int img_rows, int img_cols, - int c_nOctaveLayers, int c_octave, int c_layer_rows, - - __global float * det, // output determinant - int det_step, int det_offset, - __global float * trace, // output trace - int trace_step, int trace_offset) -{ - det_step /= sizeof(*det); - trace_step /= sizeof(*trace); - #ifndef HAVE_IMAGE2D - sum_step/= sizeof(uint); - #endif - // Determine the indices - const int gridDim_y = get_num_groups(1) / (c_nOctaveLayers + 2); - const int blockIdx_y = get_group_id(1) % gridDim_y; - const int blockIdx_z = get_group_id(1) / gridDim_y; - - const int j = get_local_id(0) + get_group_id(0) * get_local_size(0); - const int i = get_local_id(1) + blockIdx_y * get_local_size(1); - const int layer = blockIdx_z; - - const int size = calcSize(c_octave, layer); - - const int samples_i = 1 + ((img_rows - size) >> c_octave); - const int samples_j = 1 + ((img_cols - size) >> c_octave); - - // Ignore pixels where some of the kernel is outside the image - const int margin = (size >> 1) >> c_octave; - - if (size <= img_rows && size <= img_cols && i < samples_i && j < samples_j) - { - int x = j << c_octave; - int y = i << c_octave; - - float ratio = (float)size / 9; - - // Precompute some commonly used values, which are used to offset - // texture coordinates in the integral image. - int r1 = round(ratio); - int r2 = round(ratio * 2.0f); - int r3 = round(ratio * 3.0f); - int r4 = round(ratio * 4.0f); - int r5 = round(ratio * 5.0f); - int r6 = round(ratio * 6.0f); - int r7 = round(ratio * 7.0f); - int r8 = round(ratio * 8.0f); - int r9 = round(ratio * 9.0f); - - // Calculate the approximated derivative in the x-direction - F d = 0; - { - // Some of the pixels needed to compute the derivative are - // repeated, so we only don't duplicate the fetch here. - int t02 = read_sumTex( (int2)(x, y + r2)); - int t07 = read_sumTex( (int2)(x, y + r7)); - int t32 = read_sumTex( (int2)(x + r3, y + r2)); - int t37 = read_sumTex( (int2)(x + r3, y + r7)); - int t62 = read_sumTex( (int2)(x + r6, y + r2)); - int t67 = read_sumTex( (int2)(x + r6, y + r7)); - int t92 = read_sumTex( (int2)(x + r9, y + r2)); - int t97 = read_sumTex( (int2)(x + r9, y + r7)); - - d = calcAxisAlignedDerivative(t02, t07, t32, t37, (r3) * (r7 - r2), - t62, t67, t92, t97, (r9 - r6) * (r7 - r2), - t32, t37, t62, t67, (r6 - r3) * (r7 - r2)); - } - const float dx = (float)d; - - // Calculate the approximated derivative in the y-direction - d = 0; - { - // Some of the pixels needed to compute the derivative are - // repeated, so we only don't duplicate the fetch here. - int t20 = read_sumTex( (int2)(x + r2, y) ); - int t23 = read_sumTex( (int2)(x + r2, y + r3) ); - int t70 = read_sumTex( (int2)(x + r7, y) ); - int t73 = read_sumTex( (int2)(x + r7, y + r3) ); - int t26 = read_sumTex( (int2)(x + r2, y + r6) ); - int t76 = read_sumTex( (int2)(x + r7, y + r6) ); - int t29 = read_sumTex( (int2)(x + r2, y + r9) ); - int t79 = read_sumTex( (int2)(x + r7, y + r9) ); - - d = calcAxisAlignedDerivative(t20, t23, t70, t73, (r7 - r2) * (r3), - t26, t29, t76, t79, (r7 - r2) * (r9 - r6), - t23, t26, t73, t76, (r7 - r2) * (r6 - r3)); - } - const float dy = (float)d; - - // Calculate the approximated derivative in the xy-direction - d = 0; - { - // There's no saving us here, we just have to get all of the pixels in - // separate fetches - F t = 0; - t += read_sumTex( (int2)(x + r1, y + r1) ); - t -= read_sumTex( (int2)(x + r1, y + r4) ); - t -= read_sumTex( (int2)(x + r4, y + r1) ); - t += read_sumTex( (int2)(x + r4, y + r4) ); - d += t / ((r4 - r1) * (r4 - r1)); - - t = 0; - t += read_sumTex( (int2)(x + r5, y + r1) ); - t -= read_sumTex( (int2)(x + r5, y + r4) ); - t -= read_sumTex( (int2)(x + r8, y + r1) ); - t += read_sumTex( (int2)(x + r8, y + r4) ); - d -= t / ((r8 - r5) * (r4 - r1)); - - t = 0; - t += read_sumTex( (int2)(x + r1, y + r5) ); - t -= read_sumTex( (int2)(x + r1, y + r8) ); - t -= read_sumTex( (int2)(x + r4, y + r5) ); - t += read_sumTex( (int2)(x + r4, y + r8) ); - d -= t / ((r4 - r1) * (r8 - r5)); - - t = 0; - t += read_sumTex( (int2)(x + r5, y + r5) ); - t -= read_sumTex( (int2)(x + r5, y + r8) ); - t -= read_sumTex( (int2)(x + r8, y + r5) ); - t += read_sumTex( (int2)(x + r8, y + r8) ); - d += t / ((r8 - r5) * (r8 - r5)); - } - const float dxy = (float)d; - - det [j + margin + det_step * (layer * c_layer_rows + i + margin)] = dx * dy - 0.81f * dxy * dxy; - trace[j + margin + trace_step * (layer * c_layer_rows + i + margin)] = dx + dy; - } -} - -//////////////////////////////////////////////////////////////////////// -// NONMAX - -__kernel -void SURF_findMaximaInLayer( - __global float * det, - int det_step, int det_offset, - __global float * trace, - int trace_step, int trace_offset, - __global int4 * maxPosBuffer, - volatile __global int* maxCounter, - int counter_offset, - int img_rows, - int img_cols, - int c_nOctaveLayers, - int c_octave, - int c_layer_rows, - int c_layer_cols, - int c_max_candidates, - float c_hessianThreshold -) -{ - volatile __local float N9[768]; // threads.x * threads.y * 3 - - det_step /= sizeof(float); - trace_step /= sizeof(float); - maxCounter += counter_offset; - - // Determine the indices - const int gridDim_y = get_num_groups(1) / c_nOctaveLayers; - const int blockIdx_y = get_group_id(1) % gridDim_y; - const int blockIdx_z = get_group_id(1) / gridDim_y; - - const int layer = blockIdx_z + 1; - - const int size = calcSize(c_octave, layer); - - // Ignore pixels without a 3x3x3 neighbourhood in the layer above - const int margin = ((calcSize(c_octave, layer + 1) >> 1) >> c_octave) + 1; - - const int j = get_local_id(0) + get_group_id(0) * (get_local_size(0) - 2) + margin - 1; - const int i = get_local_id(1) + blockIdx_y * (get_local_size(1) - 2) + margin - 1; - - // Is this thread within the hessian buffer? - const int zoff = get_local_size(0) * get_local_size(1); - const int localLin = get_local_id(0) + get_local_id(1) * get_local_size(0) + zoff; - - int l_x = min(max(j, 0), img_cols - 1); - int l_y = c_layer_rows * layer + min(max(i, 0), img_rows - 1); - - N9[localLin - zoff] = - det[det_step * (l_y - c_layer_rows) + l_x]; - N9[localLin ] = - det[det_step * (l_y ) + l_x]; - N9[localLin + zoff] = - det[det_step * (l_y + c_layer_rows) + l_x]; - barrier(CLK_LOCAL_MEM_FENCE); - - if (i < c_layer_rows - margin - && j < c_layer_cols - margin - && get_local_id(0) > 0 - && get_local_id(0) < get_local_size(0) - 1 - && get_local_id(1) > 0 - && get_local_id(1) < get_local_size(1) - 1 // these are unnecessary conditions ported from CUDA - ) - { - float val0 = N9[localLin]; - if (val0 > c_hessianThreshold) - { - // Coordinates for the start of the wavelet in the sum image. There - // is some integer division involved, so don't try to simplify this - // (cancel out sampleStep) without checking the result is the same - - // Check to see if we have a max (in its 26 neighbours) - const bool condmax = val0 > N9[localLin - 1 - get_local_size(0) - zoff] - && val0 > N9[localLin - get_local_size(0) - zoff] - && val0 > N9[localLin + 1 - get_local_size(0) - zoff] - && val0 > N9[localLin - 1 - zoff] - && val0 > N9[localLin - zoff] - && val0 > N9[localLin + 1 - zoff] - && val0 > N9[localLin - 1 + get_local_size(0) - zoff] - && val0 > N9[localLin + get_local_size(0) - zoff] - && val0 > N9[localLin + 1 + get_local_size(0) - zoff] - - && val0 > N9[localLin - 1 - get_local_size(0)] - && val0 > N9[localLin - get_local_size(0)] - && val0 > N9[localLin + 1 - get_local_size(0)] - && val0 > N9[localLin - 1 ] - && val0 > N9[localLin + 1 ] - && val0 > N9[localLin - 1 + get_local_size(0)] - && val0 > N9[localLin + get_local_size(0)] - && val0 > N9[localLin + 1 + get_local_size(0)] - - && val0 > N9[localLin - 1 - get_local_size(0) + zoff] - && val0 > N9[localLin - get_local_size(0) + zoff] - && val0 > N9[localLin + 1 - get_local_size(0) + zoff] - && val0 > N9[localLin - 1 + zoff] - && val0 > N9[localLin + zoff] - && val0 > N9[localLin + 1 + zoff] - && val0 > N9[localLin - 1 + get_local_size(0) + zoff] - && val0 > N9[localLin + get_local_size(0) + zoff] - && val0 > N9[localLin + 1 + get_local_size(0) + zoff] - ; - - if(condmax) - { - int ind = atomic_inc(maxCounter); - - if (ind < c_max_candidates) - { - const int laplacian = (int) copysign(1.0f, trace[trace_step* (layer * c_layer_rows + i) + j]); - - maxPosBuffer[ind] = (int4)(j, i, layer, laplacian); - } - } - } - } -} - -// solve 3x3 linear system Ax=b for floating point input -inline bool solve3x3_float(const float4 *A, const float *b, float *x) -{ - float det = A[0].x * (A[1].y * A[2].z - A[1].z * A[2].y) - - A[0].y * (A[1].x * A[2].z - A[1].z * A[2].x) - + A[0].z * (A[1].x * A[2].y - A[1].y * A[2].x); - - if (det != 0) - { - F invdet = 1.0f / det; - - x[0] = invdet * - (b[0] * (A[1].y * A[2].z - A[1].z * A[2].y) - - A[0].y * (b[1] * A[2].z - A[1].z * b[2] ) + - A[0].z * (b[1] * A[2].y - A[1].y * b[2] )); - - x[1] = invdet * - (A[0].x * (b[1] * A[2].z - A[1].z * b[2] ) - - b[0] * (A[1].x * A[2].z - A[1].z * A[2].x) + - A[0].z * (A[1].x * b[2] - b[1] * A[2].x)); - - x[2] = invdet * - (A[0].x * (A[1].y * b[2] - b[1] * A[2].y) - - A[0].y * (A[1].x * b[2] - b[1] * A[2].x) + - b[0] * (A[1].x * A[2].y - A[1].y * A[2].x)); - - return true; - } - return false; -} - -#define X_ROW 0 -#define Y_ROW 1 -#define LAPLACIAN_ROW 2 -#define OCTAVE_ROW 3 -#define SIZE_ROW 4 -#define ANGLE_ROW 5 -#define HESSIAN_ROW 6 -#define ROWS_COUNT 7 - -//////////////////////////////////////////////////////////////////////// -// INTERPOLATION -__kernel -void SURF_interpolateKeypoint( - __global const float * det, - int det_step, int det_offset, - __global const int4 * maxPosBuffer, - __global float * keypoints, - int keypoints_step, int keypoints_offset, - volatile __global int* featureCounter, - int img_rows, - int img_cols, - int c_octave, - int c_layer_rows, - int c_max_features -) -{ - det_step /= sizeof(*det); - keypoints_step /= sizeof(*keypoints); - __global float * featureX = keypoints + X_ROW * keypoints_step; - __global float * featureY = keypoints + Y_ROW * keypoints_step; - __global int * featureLaplacian = (__global int *)keypoints + LAPLACIAN_ROW * keypoints_step; - __global int * featureOctave = (__global int *)keypoints + OCTAVE_ROW * keypoints_step; - __global float * featureSize = keypoints + SIZE_ROW * keypoints_step; - __global float * featureHessian = keypoints + HESSIAN_ROW * keypoints_step; - - const int4 maxPos = maxPosBuffer[get_group_id(0)]; - - const int j = maxPos.x - 1 + get_local_id(0); - const int i = maxPos.y - 1 + get_local_id(1); - const int layer = maxPos.z - 1 + get_local_id(2); - - volatile __local float N9[3][3][3]; - - N9[get_local_id(2)][get_local_id(1)][get_local_id(0)] = - det[det_step * (c_layer_rows * layer + i) + j]; - barrier(CLK_LOCAL_MEM_FENCE); - - if (get_local_id(0) == 0 && get_local_id(1) == 0 && get_local_id(2) == 0) - { - float dD[3]; - - //dx - dD[0] = -0.5f * (N9[1][1][2] - N9[1][1][0]); - //dy - dD[1] = -0.5f * (N9[1][2][1] - N9[1][0][1]); - //ds - dD[2] = -0.5f * (N9[2][1][1] - N9[0][1][1]); - - float4 H[3]; - - //dxx - H[0].x = N9[1][1][0] - 2.0f * N9[1][1][1] + N9[1][1][2]; - //dxy - H[0].y= 0.25f * (N9[1][2][2] - N9[1][2][0] - N9[1][0][2] + N9[1][0][0]); - //dxs - H[0].z= 0.25f * (N9[2][1][2] - N9[2][1][0] - N9[0][1][2] + N9[0][1][0]); - //dyx = dxy - H[1].x = H[0].y; - //dyy - H[1].y = N9[1][0][1] - 2.0f * N9[1][1][1] + N9[1][2][1]; - //dys - H[1].z= 0.25f * (N9[2][2][1] - N9[2][0][1] - N9[0][2][1] + N9[0][0][1]); - //dsx = dxs - H[2].x = H[0].z; - //dsy = dys - H[2].y = H[1].z; - //dss - H[2].z = N9[0][1][1] - 2.0f * N9[1][1][1] + N9[2][1][1]; - - float x[3]; - - if (solve3x3_float(H, dD, x)) - { - if (fabs(x[0]) <= 1.f && fabs(x[1]) <= 1.f && fabs(x[2]) <= 1.f) - { - // if the step is within the interpolation region, perform it - - const int size = calcSize(c_octave, maxPos.z); - - const int sum_i = (maxPos.y - ((size >> 1) >> c_octave)) << c_octave; - const int sum_j = (maxPos.x - ((size >> 1) >> c_octave)) << c_octave; - - const float center_i = sum_i + (float)(size - 1) / 2; - const float center_j = sum_j + (float)(size - 1) / 2; - - const float px = center_j + x[0] * (1 << c_octave); - const float py = center_i + x[1] * (1 << c_octave); - - const int ds = size - calcSize(c_octave, maxPos.z - 1); - const float psize = round(size + x[2] * ds); - - /* The sampling intervals and wavelet sized for selecting an orientation - and building the keypoint descriptor are defined relative to 's' */ - const float s = psize * 1.2f / 9.0f; - - /* To find the dominant orientation, the gradients in x and y are - sampled in a circle of radius 6s using wavelets of size 4s. - We ensure the gradient wavelet size is even to ensure the - wavelet pattern is balanced and symmetric around its center */ - const int grad_wav_size = 2 * round(2.0f * s); - - // check when grad_wav_size is too big - if ((img_rows + 1) >= grad_wav_size && (img_cols + 1) >= grad_wav_size) - { - // Get a new feature index. - int ind = atomic_inc(featureCounter); - - if (ind < c_max_features) - { - featureX[ind] = px; - featureY[ind] = py; - featureLaplacian[ind] = maxPos.w; - featureOctave[ind] = c_octave; - featureSize[ind] = psize; - featureHessian[ind] = N9[1][1][1]; - } - } // grad_wav_size check - } // If the subpixel interpolation worked - } - } // If this is thread 0. -} - -//////////////////////////////////////////////////////////////////////// -// Orientation - -#define ORI_WIN 60 -#define ORI_SAMPLES 113 - -// The distance between samples in the beginning of the the reduction -#define ORI_RESPONSE_REDUCTION_WIDTH 48 -#define ORI_RESPONSE_ARRAY_SIZE (ORI_RESPONSE_REDUCTION_WIDTH * 2) - -__constant float c_aptX[ORI_SAMPLES] = {-6, -5, -5, -5, -5, -5, -5, -5, -4, -4, -4, -4, -4, -4, -4, -4, -4, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 6}; -__constant float c_aptY[ORI_SAMPLES] = {0, -3, -2, -1, 0, 1, 2, 3, -4, -3, -2, -1, 0, 1, 2, 3, 4, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -4, -3, -2, -1, 0, 1, 2, 3, 4, -3, -2, -1, 0, 1, 2, 3, 0}; -__constant float c_aptW[ORI_SAMPLES] = {0.001455130288377404f, 0.001707611023448408f, 0.002547456417232752f, 0.003238451667129993f, 0.0035081731621176f, - 0.003238451667129993f, 0.002547456417232752f, 0.001707611023448408f, 0.002003900473937392f, 0.0035081731621176f, 0.005233579315245152f, - 0.00665318313986063f, 0.00720730796456337f, 0.00665318313986063f, 0.005233579315245152f, 0.0035081731621176f, - 0.002003900473937392f, 0.001707611023448408f, 0.0035081731621176f, 0.006141661666333675f, 0.009162282571196556f, - 0.01164754293859005f, 0.01261763460934162f, 0.01164754293859005f, 0.009162282571196556f, 0.006141661666333675f, - 0.0035081731621176f, 0.001707611023448408f, 0.002547456417232752f, 0.005233579315245152f, 0.009162282571196556f, - 0.01366852037608624f, 0.01737609319388866f, 0.0188232995569706f, 0.01737609319388866f, 0.01366852037608624f, - 0.009162282571196556f, 0.005233579315245152f, 0.002547456417232752f, 0.003238451667129993f, 0.00665318313986063f, - 0.01164754293859005f, 0.01737609319388866f, 0.02208934165537357f, 0.02392910048365593f, 0.02208934165537357f, - 0.01737609319388866f, 0.01164754293859005f, 0.00665318313986063f, 0.003238451667129993f, 0.001455130288377404f, - 0.0035081731621176f, 0.00720730796456337f, 0.01261763460934162f, 0.0188232995569706f, 0.02392910048365593f, - 0.02592208795249462f, 0.02392910048365593f, 0.0188232995569706f, 0.01261763460934162f, 0.00720730796456337f, - 0.0035081731621176f, 0.001455130288377404f, 0.003238451667129993f, 0.00665318313986063f, 0.01164754293859005f, - 0.01737609319388866f, 0.02208934165537357f, 0.02392910048365593f, 0.02208934165537357f, 0.01737609319388866f, - 0.01164754293859005f, 0.00665318313986063f, 0.003238451667129993f, 0.002547456417232752f, 0.005233579315245152f, - 0.009162282571196556f, 0.01366852037608624f, 0.01737609319388866f, 0.0188232995569706f, 0.01737609319388866f, - 0.01366852037608624f, 0.009162282571196556f, 0.005233579315245152f, 0.002547456417232752f, 0.001707611023448408f, - 0.0035081731621176f, 0.006141661666333675f, 0.009162282571196556f, 0.01164754293859005f, 0.01261763460934162f, - 0.01164754293859005f, 0.009162282571196556f, 0.006141661666333675f, 0.0035081731621176f, 0.001707611023448408f, - 0.002003900473937392f, 0.0035081731621176f, 0.005233579315245152f, 0.00665318313986063f, 0.00720730796456337f, - 0.00665318313986063f, 0.005233579315245152f, 0.0035081731621176f, 0.002003900473937392f, 0.001707611023448408f, - 0.002547456417232752f, 0.003238451667129993f, 0.0035081731621176f, 0.003238451667129993f, 0.002547456417232752f, - 0.001707611023448408f, 0.001455130288377404f - }; - -__constant float2 c_NX[5] = { (float2)(0, 2), (float2)(0, 0), (float2)(2, 4), (float2)(4, 4), (float2)(-1, 1) }; -__constant float2 c_NY[5] = { (float2)(0, 0), (float2)(0, 2), (float2)(4, 4), (float2)(2, 4), (float2)(1, -1) }; - -void reduce_32_sum(volatile __local float * data, volatile float* partial_reduction, int tid) -{ -#define op(A, B) (*A)+(B) - data[tid] = *partial_reduction; - barrier(CLK_LOCAL_MEM_FENCE); -#ifndef WAVE_SIZE -#define WAVE_SIZE 1 -#endif - if (tid < 16) - { - data[tid] = *partial_reduction = op(partial_reduction, data[tid + 16]); -#if WAVE_SIZE < 16 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 8) - { -#endif - data[tid] = *partial_reduction = op(partial_reduction, data[tid + 8]); -#if WAVE_SIZE < 8 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 4) - { -#endif - data[tid] = *partial_reduction = op(partial_reduction, data[tid + 4]); -#if WAVE_SIZE < 4 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 2) - { -#endif - data[tid] = *partial_reduction = op(partial_reduction, data[tid + 2 ]); -#if WAVE_SIZE < 2 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 1) - { -#endif - data[tid] = *partial_reduction = op(partial_reduction, data[tid + 1 ]); - } -#undef WAVE_SIZE -#undef op -} - -__kernel -void SURF_calcOrientation( - __PARAM_sumTex__, int img_rows, int img_cols, - __global float * keypoints, int keypoints_step, int keypoints_offset ) -{ - keypoints_step /= sizeof(*keypoints); - #ifndef HAVE_IMAGE2D - sum_step /= sizeof(uint); - #endif - __global float* featureX = keypoints + X_ROW * keypoints_step; - __global float* featureY = keypoints + Y_ROW * keypoints_step; - __global float* featureSize = keypoints + SIZE_ROW * keypoints_step; - __global float* featureDir = keypoints + ANGLE_ROW * keypoints_step; - - __local float s_X[ORI_SAMPLES]; - __local float s_Y[ORI_SAMPLES]; - __local float s_angle[ORI_SAMPLES]; - - // Need to allocate enough to make the reduction work without accessing - // past the end of the array. - __local float s_sumx[ORI_RESPONSE_ARRAY_SIZE]; - __local float s_sumy[ORI_RESPONSE_ARRAY_SIZE]; - __local float s_mod[ORI_RESPONSE_ARRAY_SIZE]; - - /* The sampling intervals and wavelet sized for selecting an orientation - and building the keypoint descriptor are defined relative to 's' */ - const float s = featureSize[get_group_id(0)] * 1.2f / 9.0f; - - /* To find the dominant orientation, the gradients in x and y are - sampled in a circle of radius 6s using wavelets of size 4s. - We ensure the gradient wavelet size is even to ensure the - wavelet pattern is balanced and symmetric around its center */ - const int grad_wav_size = 2 * round(2.0f * s); - - // check when grad_wav_size is too big - if ((img_rows + 1) < grad_wav_size || (img_cols + 1) < grad_wav_size) - return; - - // Calc X, Y, angle and store it to shared memory - const int tid = get_local_id(0); - // Initialize values that are only used as part of the reduction later. - if (tid < ORI_RESPONSE_ARRAY_SIZE - ORI_LOCAL_SIZE) { - s_mod[tid + ORI_LOCAL_SIZE] = 0.0f; - } - - float ratio = (float)grad_wav_size / 4; - - int r2 = round(ratio * 2.0f); - int r4 = round(ratio * 4.0f); - for (int i = tid; i < ORI_SAMPLES; i += ORI_LOCAL_SIZE ) - { - float X = 0.0f, Y = 0.0f, angle = 0.0f; - const float margin = (float)(grad_wav_size - 1) / 2.0f; - const int x = round(featureX[get_group_id(0)] + c_aptX[i] * s - margin); - const int y = round(featureY[get_group_id(0)] + c_aptY[i] * s - margin); - - if (y >= 0 && y < (img_rows + 1) - grad_wav_size && - x >= 0 && x < (img_cols + 1) - grad_wav_size) - { - float apt = c_aptW[i]; - - // Compute the haar sum without fetching duplicate pixels. - float t00 = read_sumTex( (int2)(x, y)); - float t02 = read_sumTex( (int2)(x, y + r2)); - float t04 = read_sumTex( (int2)(x, y + r4)); - float t20 = read_sumTex( (int2)(x + r2, y)); - float t24 = read_sumTex( (int2)(x + r2, y + r4)); - float t40 = read_sumTex( (int2)(x + r4, y)); - float t42 = read_sumTex( (int2)(x + r4, y + r2)); - float t44 = read_sumTex( (int2)(x + r4, y + r4)); - - F t = t00 - t04 - t20 + t24; - X -= t / ((r2) * (r4)); - - t = t20 - t24 - t40 + t44; - X += t / ((r4 - r2) * (r4)); - - t = t00 - t02 - t40 + t42; - Y += t / ((r2) * (r4)); - - t = t02 - t04 - t42 + t44; - Y -= t / ((r4) * (r4 - r2)); - - X = apt*X; - Y = apt*Y; - - angle = atan2(Y, X); - - if (angle < 0) - angle += 2.0f * CV_PI_F; - angle *= 180.0f / CV_PI_F; - - } - - s_X[i] = X; - s_Y[i] = Y; - s_angle[i] = angle; - } - barrier(CLK_LOCAL_MEM_FENCE); - - float bestx = 0, besty = 0, best_mod = 0; - float sumx = 0.0f, sumy = 0.0f; - const int dir = tid * ORI_SEARCH_INC; - #pragma unroll - for (int i = 0; i < ORI_SAMPLES; ++i) { - int angle = round(s_angle[i]); - - int d = abs(angle - dir); - if (d < ORI_WIN / 2 || d > 360 - ORI_WIN / 2) - { - sumx += s_X[i]; - sumy += s_Y[i]; - } - } - s_sumx[tid] = sumx; - s_sumy[tid] = sumy; - s_mod[tid] = sumx*sumx + sumy*sumy; - barrier(CLK_LOCAL_MEM_FENCE); - - // This reduction searches for the longest wavelet response vector. The first - // step uses all of the work items in the workgroup to narrow the search - // down to the three candidates. It requires s_mod to have a few more - // elements allocated past the work-group size, which are pre-initialized to - // 0.0f above. - for(int t = ORI_RESPONSE_REDUCTION_WIDTH; t >= 3; t /= 2) { - if (tid < t) { - if (s_mod[tid] < s_mod[tid + t]) { - s_mod[tid] = s_mod[tid + t]; - s_sumx[tid] = s_sumx[tid + t]; - s_sumy[tid] = s_sumy[tid + t]; - } - } - barrier(CLK_LOCAL_MEM_FENCE); - } - - // Do the final reduction and write out the result. - if (tid == 0) - { - int bestIdx = 0; - - // The loop above narrowed the search of the longest vector to three - // possibilities. Pick the best here. - if (s_mod[1] > s_mod[bestIdx]) - bestIdx = 1; - if (s_mod[2] > s_mod[bestIdx]) - bestIdx = 2; - - float kp_dir = atan2(s_sumy[bestIdx], s_sumx[bestIdx]); - if (kp_dir < 0) - kp_dir += 2.0f * CV_PI_F; - kp_dir *= 180.0f / CV_PI_F; - - kp_dir = 360.0f - kp_dir; - if (fabs(kp_dir - 360.f) < FLT_EPSILON) - kp_dir = 0.f; - - featureDir[get_group_id(0)] = kp_dir; - } -} - -__kernel -void SURF_setUpRight( - __global float * keypoints, - int keypoints_step, int keypoints_offset, - int rows, int cols ) -{ - int i = get_global_id(0); - keypoints_step /= sizeof(*keypoints); - - if(i < cols) - { - keypoints[mad24(keypoints_step, ANGLE_ROW, i)] = 270.f; - } -} - - -#undef ORI_SEARCH_INC -#undef ORI_WIN -#undef ORI_SAMPLES - -//////////////////////////////////////////////////////////////////////// -// Descriptors - -#define PATCH_SZ 20 - -__constant float c_DW[PATCH_SZ * PATCH_SZ] = -{ - 3.695352233989979e-006f, 8.444558261544444e-006f, 1.760426494001877e-005f, 3.34794785885606e-005f, 5.808438800158911e-005f, 9.193058212986216e-005f, 0.0001327334757661447f, 0.0001748319627949968f, 0.0002100782439811155f, 0.0002302826324012131f, 0.0002302826324012131f, 0.0002100782439811155f, 0.0001748319627949968f, 0.0001327334757661447f, 9.193058212986216e-005f, 5.808438800158911e-005f, 3.34794785885606e-005f, 1.760426494001877e-005f, 8.444558261544444e-006f, 3.695352233989979e-006f, - 8.444558261544444e-006f, 1.929736572492402e-005f, 4.022897701361217e-005f, 7.650675252079964e-005f, 0.0001327334903180599f, 0.0002100782585330308f, 0.0003033203829545528f, 0.0003995231236331165f, 0.0004800673632416874f, 0.0005262381164357066f, 0.0005262381164357066f, 0.0004800673632416874f, 0.0003995231236331165f, 0.0003033203829545528f, 0.0002100782585330308f, 0.0001327334903180599f, 7.650675252079964e-005f, 4.022897701361217e-005f, 1.929736572492402e-005f, 8.444558261544444e-006f, - 1.760426494001877e-005f, 4.022897701361217e-005f, 8.386484114453197e-005f, 0.0001594926579855382f, 0.0002767078403849155f, 0.0004379475140012801f, 0.0006323281559161842f, 0.0008328808471560478f, 0.001000790391117334f, 0.001097041997127235f, 0.001097041997127235f, 0.001000790391117334f, 0.0008328808471560478f, 0.0006323281559161842f, 0.0004379475140012801f, 0.0002767078403849155f, 0.0001594926579855382f, 8.386484114453197e-005f, 4.022897701361217e-005f, 1.760426494001877e-005f, - 3.34794785885606e-005f, 7.650675252079964e-005f, 0.0001594926579855382f, 0.0003033203247468919f, 0.0005262380582280457f, 0.0008328807889483869f, 0.001202550483867526f, 0.001583957928232849f, 0.001903285388834775f, 0.002086334861814976f, 0.002086334861814976f, 0.001903285388834775f, 0.001583957928232849f, 0.001202550483867526f, 0.0008328807889483869f, 0.0005262380582280457f, 0.0003033203247468919f, 0.0001594926579855382f, 7.650675252079964e-005f, 3.34794785885606e-005f, - 5.808438800158911e-005f, 0.0001327334903180599f, 0.0002767078403849155f, 0.0005262380582280457f, 0.0009129836107604206f, 0.001444985857233405f, 0.002086335094645619f, 0.002748048631474376f, 0.00330205773934722f, 0.003619635012000799f, 0.003619635012000799f, 0.00330205773934722f, 0.002748048631474376f, 0.002086335094645619f, 0.001444985857233405f, 0.0009129836107604206f, 0.0005262380582280457f, 0.0002767078403849155f, 0.0001327334903180599f, 5.808438800158911e-005f, - 9.193058212986216e-005f, 0.0002100782585330308f, 0.0004379475140012801f, 0.0008328807889483869f, 0.001444985857233405f, 0.002286989474669099f, 0.00330205773934722f, 0.004349356517195702f, 0.00522619066759944f, 0.005728822201490402f, 0.005728822201490402f, 0.00522619066759944f, 0.004349356517195702f, 0.00330205773934722f, 0.002286989474669099f, 0.001444985857233405f, 0.0008328807889483869f, 0.0004379475140012801f, 0.0002100782585330308f, 9.193058212986216e-005f, - 0.0001327334757661447f, 0.0003033203829545528f, 0.0006323281559161842f, 0.001202550483867526f, 0.002086335094645619f, 0.00330205773934722f, 0.004767658654600382f, 0.006279794964939356f, 0.007545807864516974f, 0.008271530270576477f, 0.008271530270576477f, 0.007545807864516974f, 0.006279794964939356f, 0.004767658654600382f, 0.00330205773934722f, 0.002086335094645619f, 0.001202550483867526f, 0.0006323281559161842f, 0.0003033203829545528f, 0.0001327334757661447f, - 0.0001748319627949968f, 0.0003995231236331165f, 0.0008328808471560478f, 0.001583957928232849f, 0.002748048631474376f, 0.004349356517195702f, 0.006279794964939356f, 0.008271529339253902f, 0.009939077310264111f, 0.01089497376233339f, 0.01089497376233339f, 0.009939077310264111f, 0.008271529339253902f, 0.006279794964939356f, 0.004349356517195702f, 0.002748048631474376f, 0.001583957928232849f, 0.0008328808471560478f, 0.0003995231236331165f, 0.0001748319627949968f, - 0.0002100782439811155f, 0.0004800673632416874f, 0.001000790391117334f, 0.001903285388834775f, 0.00330205773934722f, 0.00522619066759944f, 0.007545807864516974f, 0.009939077310264111f, 0.01194280479103327f, 0.01309141051024199f, 0.01309141051024199f, 0.01194280479103327f, 0.009939077310264111f, 0.007545807864516974f, 0.00522619066759944f, 0.00330205773934722f, 0.001903285388834775f, 0.001000790391117334f, 0.0004800673632416874f, 0.0002100782439811155f, - 0.0002302826324012131f, 0.0005262381164357066f, 0.001097041997127235f, 0.002086334861814976f, 0.003619635012000799f, 0.005728822201490402f, 0.008271530270576477f, 0.01089497376233339f, 0.01309141051024199f, 0.01435048412531614f, 0.01435048412531614f, 0.01309141051024199f, 0.01089497376233339f, 0.008271530270576477f, 0.005728822201490402f, 0.003619635012000799f, 0.002086334861814976f, 0.001097041997127235f, 0.0005262381164357066f, 0.0002302826324012131f, - 0.0002302826324012131f, 0.0005262381164357066f, 0.001097041997127235f, 0.002086334861814976f, 0.003619635012000799f, 0.005728822201490402f, 0.008271530270576477f, 0.01089497376233339f, 0.01309141051024199f, 0.01435048412531614f, 0.01435048412531614f, 0.01309141051024199f, 0.01089497376233339f, 0.008271530270576477f, 0.005728822201490402f, 0.003619635012000799f, 0.002086334861814976f, 0.001097041997127235f, 0.0005262381164357066f, 0.0002302826324012131f, - 0.0002100782439811155f, 0.0004800673632416874f, 0.001000790391117334f, 0.001903285388834775f, 0.00330205773934722f, 0.00522619066759944f, 0.007545807864516974f, 0.009939077310264111f, 0.01194280479103327f, 0.01309141051024199f, 0.01309141051024199f, 0.01194280479103327f, 0.009939077310264111f, 0.007545807864516974f, 0.00522619066759944f, 0.00330205773934722f, 0.001903285388834775f, 0.001000790391117334f, 0.0004800673632416874f, 0.0002100782439811155f, - 0.0001748319627949968f, 0.0003995231236331165f, 0.0008328808471560478f, 0.001583957928232849f, 0.002748048631474376f, 0.004349356517195702f, 0.006279794964939356f, 0.008271529339253902f, 0.009939077310264111f, 0.01089497376233339f, 0.01089497376233339f, 0.009939077310264111f, 0.008271529339253902f, 0.006279794964939356f, 0.004349356517195702f, 0.002748048631474376f, 0.001583957928232849f, 0.0008328808471560478f, 0.0003995231236331165f, 0.0001748319627949968f, - 0.0001327334757661447f, 0.0003033203829545528f, 0.0006323281559161842f, 0.001202550483867526f, 0.002086335094645619f, 0.00330205773934722f, 0.004767658654600382f, 0.006279794964939356f, 0.007545807864516974f, 0.008271530270576477f, 0.008271530270576477f, 0.007545807864516974f, 0.006279794964939356f, 0.004767658654600382f, 0.00330205773934722f, 0.002086335094645619f, 0.001202550483867526f, 0.0006323281559161842f, 0.0003033203829545528f, 0.0001327334757661447f, - 9.193058212986216e-005f, 0.0002100782585330308f, 0.0004379475140012801f, 0.0008328807889483869f, 0.001444985857233405f, 0.002286989474669099f, 0.00330205773934722f, 0.004349356517195702f, 0.00522619066759944f, 0.005728822201490402f, 0.005728822201490402f, 0.00522619066759944f, 0.004349356517195702f, 0.00330205773934722f, 0.002286989474669099f, 0.001444985857233405f, 0.0008328807889483869f, 0.0004379475140012801f, 0.0002100782585330308f, 9.193058212986216e-005f, - 5.808438800158911e-005f, 0.0001327334903180599f, 0.0002767078403849155f, 0.0005262380582280457f, 0.0009129836107604206f, 0.001444985857233405f, 0.002086335094645619f, 0.002748048631474376f, 0.00330205773934722f, 0.003619635012000799f, 0.003619635012000799f, 0.00330205773934722f, 0.002748048631474376f, 0.002086335094645619f, 0.001444985857233405f, 0.0009129836107604206f, 0.0005262380582280457f, 0.0002767078403849155f, 0.0001327334903180599f, 5.808438800158911e-005f, - 3.34794785885606e-005f, 7.650675252079964e-005f, 0.0001594926579855382f, 0.0003033203247468919f, 0.0005262380582280457f, 0.0008328807889483869f, 0.001202550483867526f, 0.001583957928232849f, 0.001903285388834775f, 0.002086334861814976f, 0.002086334861814976f, 0.001903285388834775f, 0.001583957928232849f, 0.001202550483867526f, 0.0008328807889483869f, 0.0005262380582280457f, 0.0003033203247468919f, 0.0001594926579855382f, 7.650675252079964e-005f, 3.34794785885606e-005f, - 1.760426494001877e-005f, 4.022897701361217e-005f, 8.386484114453197e-005f, 0.0001594926579855382f, 0.0002767078403849155f, 0.0004379475140012801f, 0.0006323281559161842f, 0.0008328808471560478f, 0.001000790391117334f, 0.001097041997127235f, 0.001097041997127235f, 0.001000790391117334f, 0.0008328808471560478f, 0.0006323281559161842f, 0.0004379475140012801f, 0.0002767078403849155f, 0.0001594926579855382f, 8.386484114453197e-005f, 4.022897701361217e-005f, 1.760426494001877e-005f, - 8.444558261544444e-006f, 1.929736572492402e-005f, 4.022897701361217e-005f, 7.650675252079964e-005f, 0.0001327334903180599f, 0.0002100782585330308f, 0.0003033203829545528f, 0.0003995231236331165f, 0.0004800673632416874f, 0.0005262381164357066f, 0.0005262381164357066f, 0.0004800673632416874f, 0.0003995231236331165f, 0.0003033203829545528f, 0.0002100782585330308f, 0.0001327334903180599f, 7.650675252079964e-005f, 4.022897701361217e-005f, 1.929736572492402e-005f, 8.444558261544444e-006f, - 3.695352233989979e-006f, 8.444558261544444e-006f, 1.760426494001877e-005f, 3.34794785885606e-005f, 5.808438800158911e-005f, 9.193058212986216e-005f, 0.0001327334757661447f, 0.0001748319627949968f, 0.0002100782439811155f, 0.0002302826324012131f, 0.0002302826324012131f, 0.0002100782439811155f, 0.0001748319627949968f, 0.0001327334757661447f, 9.193058212986216e-005f, 5.808438800158911e-005f, 3.34794785885606e-005f, 1.760426494001877e-005f, 8.444558261544444e-006f, 3.695352233989979e-006f -}; - -// utility for linear filter -#define readerGet(centerX, centerY, win_offset, cos_dir, sin_dir, i, j) \ - read_imgTex((float2)(centerX + (win_offset + j) * cos_dir + (win_offset + i) * sin_dir, \ - centerY - (win_offset + j) * sin_dir + (win_offset + i) * cos_dir)) - -inline float linearFilter( - __PARAM_imgTex__, int img_rows, int img_cols, - float centerX, float centerY, float win_offset, - float cos_dir, float sin_dir, float y, float x ) -{ - x -= 0.5f; - y -= 0.5f; - - float out = 0.0f; - - const int x1 = round(x); - const int y1 = round(y); - const int x2 = x1 + 1; - const int y2 = y1 + 1; - - uchar src_reg = readerGet(centerX, centerY, win_offset, cos_dir, sin_dir, y1, x1); - out = out + src_reg * ((x2 - x) * (y2 - y)); - - src_reg = readerGet(centerX, centerY, win_offset, cos_dir, sin_dir, y1, x2); - out = out + src_reg * ((x - x1) * (y2 - y)); - - src_reg = readerGet(centerX, centerY, win_offset, cos_dir, sin_dir, y2, x1); - out = out + src_reg * ((x2 - x) * (y - y1)); - - src_reg = readerGet(centerX, centerY, win_offset, cos_dir, sin_dir, y2, x2); - out = out + src_reg * ((x - x1) * (y - y1)); - - return out; -} - -void calc_dx_dy( - __PARAM_imgTex__, - int img_rows, int img_cols, - volatile __local float *s_dx_bin, - volatile __local float *s_dy_bin, - volatile __local float *s_PATCH, - __global const float* featureX, - __global const float* featureY, - __global const float* featureSize, - __global const float* featureDir ) -{ - const float centerX = featureX[get_group_id(0)]; - const float centerY = featureY[get_group_id(0)]; - const float size = featureSize[get_group_id(0)]; - float descriptor_dir = 360.0f - featureDir[get_group_id(0)]; - if(fabs(descriptor_dir - 360.0f) < FLT_EPSILON) - { - descriptor_dir = 0.0f; - } - - descriptor_dir *= (float)(CV_PI_F / 180.0f); - - /* The sampling intervals and wavelet sized for selecting an orientation - and building the keypoint descriptor are defined relative to 's' */ - const float s = size * 1.2f / 9.0f; - - /* Extract a window of pixels around the keypoint of size 20s */ - const int win_size = (int)((PATCH_SZ + 1) * s); - - float sin_dir; - float cos_dir; - sin_dir = sincos(descriptor_dir, &cos_dir); - - /* Nearest neighbour version (faster) */ - const float win_offset = -(float)(win_size - 1) / 2; - - // Compute sampling points - // since grids are 2D, need to compute xBlock and yBlock indices - const int xBlock = (get_group_id(1) & 3); // get_group_id(1) % 4 - const int yBlock = (get_group_id(1) >> 2); // floor(get_group_id(1)/4) - const int xIndex = xBlock * 5 + get_local_id(0); - const int yIndex = yBlock * 5 + get_local_id(1); - - const float icoo = ((float)yIndex / (PATCH_SZ + 1)) * win_size; - const float jcoo = ((float)xIndex / (PATCH_SZ + 1)) * win_size; - - s_PATCH[get_local_id(1) * 6 + get_local_id(0)] = - linearFilter(__PASS_imgTex__, img_rows, img_cols, centerX, centerY, - win_offset, cos_dir, sin_dir, icoo, jcoo); - - barrier(CLK_LOCAL_MEM_FENCE); - - if (get_local_id(0) < 5 && get_local_id(1) < 5) - { - const int tid = get_local_id(1) * 5 + get_local_id(0); - - const float dw = c_DW[yIndex * PATCH_SZ + xIndex]; - - const float vx = ( - s_PATCH[ get_local_id(1) * 6 + get_local_id(0) + 1] - - s_PATCH[ get_local_id(1) * 6 + get_local_id(0) ] + - s_PATCH[(get_local_id(1) + 1) * 6 + get_local_id(0) + 1] - - s_PATCH[(get_local_id(1) + 1) * 6 + get_local_id(0) ]) - * dw; - const float vy = ( - s_PATCH[(get_local_id(1) + 1) * 6 + get_local_id(0) ] - - s_PATCH[ get_local_id(1) * 6 + get_local_id(0) ] + - s_PATCH[(get_local_id(1) + 1) * 6 + get_local_id(0) + 1] - - s_PATCH[ get_local_id(1) * 6 + get_local_id(0) + 1]) - * dw; - s_dx_bin[tid] = vx; - s_dy_bin[tid] = vy; - } -} - -void reduce_sum25( - volatile __local float* sdata1, - volatile __local float* sdata2, - volatile __local float* sdata3, - volatile __local float* sdata4, - int tid -) -{ -#ifndef WAVE_SIZE -#define WAVE_SIZE 1 -#endif - // first step is to reduce from 25 to 16 - if (tid < 9) - { - sdata1[tid] += sdata1[tid + 16]; - sdata2[tid] += sdata2[tid + 16]; - sdata3[tid] += sdata3[tid + 16]; - sdata4[tid] += sdata4[tid + 16]; -#if WAVE_SIZE < 16 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 8) - { -#endif - sdata1[tid] += sdata1[tid + 8]; - sdata2[tid] += sdata2[tid + 8]; - sdata3[tid] += sdata3[tid + 8]; - sdata4[tid] += sdata4[tid + 8]; -#if WAVE_SIZE < 8 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 4) - { -#endif - sdata1[tid] += sdata1[tid + 4]; - sdata2[tid] += sdata2[tid + 4]; - sdata3[tid] += sdata3[tid + 4]; - sdata4[tid] += sdata4[tid + 4]; -#if WAVE_SIZE < 4 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 2) - { -#endif - sdata1[tid] += sdata1[tid + 2]; - sdata2[tid] += sdata2[tid + 2]; - sdata3[tid] += sdata3[tid + 2]; - sdata4[tid] += sdata4[tid + 2]; -#if WAVE_SIZE < 2 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 1) - { -#endif - sdata1[tid] += sdata1[tid + 1]; - sdata2[tid] += sdata2[tid + 1]; - sdata3[tid] += sdata3[tid + 1]; - sdata4[tid] += sdata4[tid + 1]; - } -#undef WAVE_SIZE -} - -__kernel -void SURF_computeDescriptors64( - __PARAM_imgTex__, - int img_rows, int img_cols, - __global const float* keypoints, - int keypoints_step, int keypoints_offset, - __global float * descriptors, - int descriptors_step, int descriptors_offset) -{ - descriptors_step /= sizeof(float); - keypoints_step /= sizeof(float); - __global const float * featureX = keypoints + X_ROW * keypoints_step; - __global const float * featureY = keypoints + Y_ROW * keypoints_step; - __global const float * featureSize = keypoints + SIZE_ROW * keypoints_step; - __global const float * featureDir = keypoints + ANGLE_ROW * keypoints_step; - - // 2 floats (dx,dy) for each thread (5x5 sample points in each sub-region) - volatile __local float sdx[25]; - volatile __local float sdy[25]; - volatile __local float sdxabs[25]; - volatile __local float sdyabs[25]; - volatile __local float s_PATCH[6*6]; - - calc_dx_dy(__PASS_imgTex__, img_rows, img_cols, sdx, sdy, s_PATCH, featureX, featureY, featureSize, featureDir); - barrier(CLK_LOCAL_MEM_FENCE); - - const int tid = get_local_id(1) * get_local_size(0) + get_local_id(0); - - if (tid < 25) - { - sdxabs[tid] = fabs(sdx[tid]); // |dx| array - sdyabs[tid] = fabs(sdy[tid]); // |dy| array - } - barrier(CLK_LOCAL_MEM_FENCE); - - reduce_sum25(sdx, sdy, sdxabs, sdyabs, tid); - - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 25) - { - __global float* descriptors_block = descriptors + descriptors_step * get_group_id(0) + (get_group_id(1) << 2); - - // write dx, dy, |dx|, |dy| - if (tid == 0) - { - descriptors_block[0] = sdx[0]; - descriptors_block[1] = sdy[0]; - descriptors_block[2] = sdxabs[0]; - descriptors_block[3] = sdyabs[0]; - } - } -} - -__kernel -void SURF_computeDescriptors128( - __PARAM_imgTex__, - int img_rows, int img_cols, - __global const float* keypoints, - int keypoints_step, int keypoints_offset, - __global float* descriptors, - int descriptors_step, int descriptors_offset) -{ - descriptors_step /= sizeof(*descriptors); - keypoints_step /= sizeof(*keypoints); - - __global float * featureX = keypoints + X_ROW * keypoints_step; - __global float * featureY = keypoints + Y_ROW * keypoints_step; - __global float* featureSize = keypoints + SIZE_ROW * keypoints_step; - __global float* featureDir = keypoints + ANGLE_ROW * keypoints_step; - - // 2 floats (dx,dy) for each thread (5x5 sample points in each sub-region) - volatile __local float sdx[25]; - volatile __local float sdy[25]; - - // sum (reduce) 5x5 area response - volatile __local float sd1[25]; - volatile __local float sd2[25]; - volatile __local float sdabs1[25]; - volatile __local float sdabs2[25]; - volatile __local float s_PATCH[6*6]; - - calc_dx_dy(__PASS_imgTex__, img_rows, img_cols, sdx, sdy, s_PATCH, featureX, featureY, featureSize, featureDir); - barrier(CLK_LOCAL_MEM_FENCE); - - const int tid = get_local_id(1) * get_local_size(0) + get_local_id(0); - - if (tid < 25) - { - if (sdy[tid] >= 0) - { - sd1[tid] = sdx[tid]; - sdabs1[tid] = fabs(sdx[tid]); - sd2[tid] = 0; - sdabs2[tid] = 0; - } - else - { - sd1[tid] = 0; - sdabs1[tid] = 0; - sd2[tid] = sdx[tid]; - sdabs2[tid] = fabs(sdx[tid]); - } - } - barrier(CLK_LOCAL_MEM_FENCE); - - reduce_sum25(sd1, sd2, sdabs1, sdabs2, tid); - barrier(CLK_LOCAL_MEM_FENCE); - - __global float* descriptors_block = descriptors + descriptors_step * get_group_id(0) + (get_group_id(1) << 3); - if (tid < 25) - { - // write dx (dy >= 0), |dx| (dy >= 0), dx (dy < 0), |dx| (dy < 0) - if (tid == 0) - { - descriptors_block[0] = sd1[0]; - descriptors_block[1] = sdabs1[0]; - descriptors_block[2] = sd2[0]; - descriptors_block[3] = sdabs2[0]; - } - - if (sdx[tid] >= 0) - { - sd1[tid] = sdy[tid]; - sdabs1[tid] = fabs(sdy[tid]); - sd2[tid] = 0; - sdabs2[tid] = 0; - } - else - { - sd1[tid] = 0; - sdabs1[tid] = 0; - sd2[tid] = sdy[tid]; - sdabs2[tid] = fabs(sdy[tid]); - } - } - barrier(CLK_LOCAL_MEM_FENCE); - reduce_sum25(sd1, sd2, sdabs1, sdabs2, tid); - barrier(CLK_LOCAL_MEM_FENCE); - - if (tid < 25) - { - // write dy (dx >= 0), |dy| (dx >= 0), dy (dx < 0), |dy| (dx < 0) - if (tid == 0) - { - descriptors_block[4] = sd1[0]; - descriptors_block[5] = sdabs1[0]; - descriptors_block[6] = sd2[0]; - descriptors_block[7] = sdabs2[0]; - } - } -} - -void reduce_sum128(volatile __local float* smem, int tid) -{ -#ifndef WAVE_SIZE -#define WAVE_SIZE 1 -#endif - - if (tid < 64) - { - smem[tid] += smem[tid + 64]; -#if WAVE_SIZE < 64 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 32) - { -#endif - smem[tid] += smem[tid + 32]; -#if WAVE_SIZE < 32 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 16) - { -#endif - smem[tid] += smem[tid + 16]; -#if WAVE_SIZE < 16 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 8) - { -#endif - smem[tid] += smem[tid + 8]; -#if WAVE_SIZE < 8 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 4) - { -#endif - smem[tid] += smem[tid + 4]; -#if WAVE_SIZE < 4 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 2) - { -#endif - smem[tid] += smem[tid + 2]; -#if WAVE_SIZE < 2 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 1) - { -#endif - smem[tid] += smem[tid + 1]; - } -} - - -void reduce_sum64(volatile __local float* smem, int tid) -{ -#ifndef WAVE_SIZE -#define WAVE_SIZE 1 -#endif - if (tid < 32) - { - smem[tid] += smem[tid + 32]; -#if WAVE_SIZE < 32 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 16) - { -#endif - smem[tid] += smem[tid + 16]; -#if WAVE_SIZE < 16 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 8) - { -#endif - smem[tid] += smem[tid + 8]; -#if WAVE_SIZE < 8 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 4) - { -#endif - smem[tid] += smem[tid + 4]; -#if WAVE_SIZE < 4 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 2) - { -#endif - smem[tid] += smem[tid + 2]; -#if WAVE_SIZE < 2 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 1) - { -#endif - smem[tid] += smem[tid + 1]; - } -} - -__kernel -void SURF_normalizeDescriptors128(__global float * descriptors, int descriptors_step, int descriptors_offset) -{ - descriptors_step /= sizeof(*descriptors); - // no need for thread ID - __global float* descriptor_base = descriptors + descriptors_step * get_group_id(0); - - // read in the unnormalized descriptor values (squared) - volatile __local float sqDesc[128]; - const float lookup = descriptor_base[get_local_id(0)]; - sqDesc[get_local_id(0)] = lookup * lookup; - barrier(CLK_LOCAL_MEM_FENCE); - - reduce_sum128(sqDesc, get_local_id(0)); - barrier(CLK_LOCAL_MEM_FENCE); - - // compute length (square root) - volatile __local float len; - if (get_local_id(0) == 0) - { - len = sqrt(sqDesc[0]); - } - barrier(CLK_LOCAL_MEM_FENCE); - - // normalize and store in output - descriptor_base[get_local_id(0)] = lookup / len; -} - -__kernel -void SURF_normalizeDescriptors64(__global float * descriptors, int descriptors_step, int descriptors_offset) -{ - descriptors_step /= sizeof(*descriptors); - // no need for thread ID - __global float* descriptor_base = descriptors + descriptors_step * get_group_id(0); - - // read in the unnormalized descriptor values (squared) - volatile __local float sqDesc[64]; - const float lookup = descriptor_base[get_local_id(0)]; - sqDesc[get_local_id(0)] = lookup * lookup; - barrier(CLK_LOCAL_MEM_FENCE); - - reduce_sum64(sqDesc, get_local_id(0)); - barrier(CLK_LOCAL_MEM_FENCE); - - // compute length (square root) - volatile __local float len; - if (get_local_id(0) == 0) - { - len = sqrt(sqDesc[0]); - } - barrier(CLK_LOCAL_MEM_FENCE); - - // normalize and store in output - descriptor_base[get_local_id(0)] = lookup / len; -} diff --git a/modules/nonfree/src/precomp.hpp b/modules/nonfree/src/precomp.hpp deleted file mode 100644 index 001b5003c5..0000000000 --- a/modules/nonfree/src/precomp.hpp +++ /dev/null @@ -1,65 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __OPENCV_PRECOMP_H__ -#define __OPENCV_PRECOMP_H__ - -#include "opencv2/nonfree.hpp" -#include "opencv2/imgproc.hpp" - -#include "opencv2/core/utility.hpp" -#include "opencv2/core/private.hpp" - -#include "opencv2/nonfree/cuda.hpp" -#include "opencv2/core/private.cuda.hpp" - -#include "opencv2/core/ocl.hpp" - -#include "opencv2/opencv_modules.hpp" - -#ifdef HAVE_OPENCV_CUDAARITHM -# include "opencv2/cudaarithm.hpp" -#endif - -#include "opencv2/core/private.hpp" - -#endif diff --git a/modules/nonfree/src/sift.cpp b/modules/nonfree/src/sift.cpp deleted file mode 100644 index 2112971e94..0000000000 --- a/modules/nonfree/src/sift.cpp +++ /dev/null @@ -1,816 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -/**********************************************************************************************\ - Implementation of SIFT is based on the code from http://blogs.oregonstate.edu/hess/code/sift/ - Below is the original copyright. - -// Copyright (c) 2006-2010, Rob Hess -// All rights reserved. - -// The following patent has been issued for methods embodied in this -// software: "Method and apparatus for identifying scale invariant features -// in an image and use of same for locating an object in an image," David -// G. Lowe, US Patent 6,711,293 (March 23, 2004). Provisional application -// filed March 8, 1999. Asignee: The University of British Columbia. For -// further details, contact David Lowe (lowe@cs.ubc.ca) or the -// University-Industry Liaison Office of the University of British -// Columbia. - -// Note that restrictions imposed by this patent (and possibly others) -// exist independently of and may be in conflict with the freedoms granted -// in this license, which refers to copyright of the program, not patents -// for any methods that it implements. Both copyright and patent law must -// be obeyed to legally use and redistribute this program and it is not the -// purpose of this license to induce you to infringe any patents or other -// property right claims or to contest validity of any such claims. If you -// redistribute or use the program, then this license merely protects you -// from committing copyright infringement. It does not protect you from -// committing patent infringement. So, before you do anything with this -// program, make sure that you have permission to do so not merely in terms -// of copyright, but also in terms of patent law. - -// Please note that this license is not to be understood as a guarantee -// either. If you use the program according to this license, but in -// conflict with patent law, it does not mean that the licensor will refund -// you for any losses that you incur if you are sued for your patent -// infringement. - -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// * Redistributions of source code must retain the above copyright and -// patent notices, this list of conditions and the following -// disclaimer. -// * Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in -// the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Oregon State University nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. - -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -// PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// HOLDER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -\**********************************************************************************************/ - -#include "precomp.hpp" -#include -#include - -namespace cv -{ - -/******************************* Defs and macros *****************************/ - -// default width of descriptor histogram array -static const int SIFT_DESCR_WIDTH = 4; - -// default number of bins per histogram in descriptor array -static const int SIFT_DESCR_HIST_BINS = 8; - -// assumed gaussian blur for input image -static const float SIFT_INIT_SIGMA = 0.5f; - -// width of border in which to ignore keypoints -static const int SIFT_IMG_BORDER = 5; - -// maximum steps of keypoint interpolation before failure -static const int SIFT_MAX_INTERP_STEPS = 5; - -// default number of bins in histogram for orientation assignment -static const int SIFT_ORI_HIST_BINS = 36; - -// determines gaussian sigma for orientation assignment -static const float SIFT_ORI_SIG_FCTR = 1.5f; - -// determines the radius of the region used in orientation assignment -static const float SIFT_ORI_RADIUS = 3 * SIFT_ORI_SIG_FCTR; - -// orientation magnitude relative to max that results in new feature -static const float SIFT_ORI_PEAK_RATIO = 0.8f; - -// determines the size of a single descriptor orientation histogram -static const float SIFT_DESCR_SCL_FCTR = 3.f; - -// threshold on magnitude of elements of descriptor vector -static const float SIFT_DESCR_MAG_THR = 0.2f; - -// factor used to convert floating-point descriptor to unsigned char -static const float SIFT_INT_DESCR_FCTR = 512.f; - -#if 0 -// intermediate type used for DoG pyramids -typedef short sift_wt; -static const int SIFT_FIXPT_SCALE = 48; -#else -// intermediate type used for DoG pyramids -typedef float sift_wt; -static const int SIFT_FIXPT_SCALE = 1; -#endif - -static inline void -unpackOctave(const KeyPoint& kpt, int& octave, int& layer, float& scale) -{ - octave = kpt.octave & 255; - layer = (kpt.octave >> 8) & 255; - octave = octave < 128 ? octave : (-128 | octave); - scale = octave >= 0 ? 1.f/(1 << octave) : (float)(1 << -octave); -} - -static Mat createInitialImage( const Mat& img, bool doubleImageSize, float sigma ) -{ - Mat gray, gray_fpt; - if( img.channels() == 3 || img.channels() == 4 ) - cvtColor(img, gray, COLOR_BGR2GRAY); - else - img.copyTo(gray); - gray.convertTo(gray_fpt, DataType::type, SIFT_FIXPT_SCALE, 0); - - float sig_diff; - - if( doubleImageSize ) - { - sig_diff = sqrtf( std::max(sigma * sigma - SIFT_INIT_SIGMA * SIFT_INIT_SIGMA * 4, 0.01f) ); - Mat dbl; - resize(gray_fpt, dbl, Size(gray.cols*2, gray.rows*2), 0, 0, INTER_LINEAR); - GaussianBlur(dbl, dbl, Size(), sig_diff, sig_diff); - return dbl; - } - else - { - sig_diff = sqrtf( std::max(sigma * sigma - SIFT_INIT_SIGMA * SIFT_INIT_SIGMA, 0.01f) ); - GaussianBlur(gray_fpt, gray_fpt, Size(), sig_diff, sig_diff); - return gray_fpt; - } -} - - -void SIFT::buildGaussianPyramid( const Mat& base, std::vector& pyr, int nOctaves ) const -{ - std::vector sig(nOctaveLayers + 3); - pyr.resize(nOctaves*(nOctaveLayers + 3)); - - // precompute Gaussian sigmas using the following formula: - // \sigma_{total}^2 = \sigma_{i}^2 + \sigma_{i-1}^2 - sig[0] = sigma; - double k = std::pow( 2., 1. / nOctaveLayers ); - for( int i = 1; i < nOctaveLayers + 3; i++ ) - { - double sig_prev = std::pow(k, (double)(i-1))*sigma; - double sig_total = sig_prev*k; - sig[i] = std::sqrt(sig_total*sig_total - sig_prev*sig_prev); - } - - for( int o = 0; o < nOctaves; o++ ) - { - for( int i = 0; i < nOctaveLayers + 3; i++ ) - { - Mat& dst = pyr[o*(nOctaveLayers + 3) + i]; - if( o == 0 && i == 0 ) - dst = base; - // base of new octave is halved image from end of previous octave - else if( i == 0 ) - { - const Mat& src = pyr[(o-1)*(nOctaveLayers + 3) + nOctaveLayers]; - resize(src, dst, Size(src.cols/2, src.rows/2), - 0, 0, INTER_NEAREST); - } - else - { - const Mat& src = pyr[o*(nOctaveLayers + 3) + i-1]; - GaussianBlur(src, dst, Size(), sig[i], sig[i]); - } - } - } -} - - -void SIFT::buildDoGPyramid( const std::vector& gpyr, std::vector& dogpyr ) const -{ - int nOctaves = (int)gpyr.size()/(nOctaveLayers + 3); - dogpyr.resize( nOctaves*(nOctaveLayers + 2) ); - - for( int o = 0; o < nOctaves; o++ ) - { - for( int i = 0; i < nOctaveLayers + 2; i++ ) - { - const Mat& src1 = gpyr[o*(nOctaveLayers + 3) + i]; - const Mat& src2 = gpyr[o*(nOctaveLayers + 3) + i + 1]; - Mat& dst = dogpyr[o*(nOctaveLayers + 2) + i]; - subtract(src2, src1, dst, noArray(), DataType::type); - } - } -} - - -// Computes a gradient orientation histogram at a specified pixel -static float calcOrientationHist( const Mat& img, Point pt, int radius, - float sigma, float* hist, int n ) -{ - int i, j, k, len = (radius*2+1)*(radius*2+1); - - float expf_scale = -1.f/(2.f * sigma * sigma); - AutoBuffer buf(len*4 + n+4); - float *X = buf, *Y = X + len, *Mag = X, *Ori = Y + len, *W = Ori + len; - float* temphist = W + len + 2; - - for( i = 0; i < n; i++ ) - temphist[i] = 0.f; - - for( i = -radius, k = 0; i <= radius; i++ ) - { - int y = pt.y + i; - if( y <= 0 || y >= img.rows - 1 ) - continue; - for( j = -radius; j <= radius; j++ ) - { - int x = pt.x + j; - if( x <= 0 || x >= img.cols - 1 ) - continue; - - float dx = (float)(img.at(y, x+1) - img.at(y, x-1)); - float dy = (float)(img.at(y-1, x) - img.at(y+1, x)); - - X[k] = dx; Y[k] = dy; W[k] = (i*i + j*j)*expf_scale; - k++; - } - } - - len = k; - - // compute gradient values, orientations and the weights over the pixel neighborhood - exp(W, W, len); - fastAtan2(Y, X, Ori, len, true); - magnitude(X, Y, Mag, len); - - for( k = 0; k < len; k++ ) - { - int bin = cvRound((n/360.f)*Ori[k]); - if( bin >= n ) - bin -= n; - if( bin < 0 ) - bin += n; - temphist[bin] += W[k]*Mag[k]; - } - - // smooth the histogram - temphist[-1] = temphist[n-1]; - temphist[-2] = temphist[n-2]; - temphist[n] = temphist[0]; - temphist[n+1] = temphist[1]; - for( i = 0; i < n; i++ ) - { - hist[i] = (temphist[i-2] + temphist[i+2])*(1.f/16.f) + - (temphist[i-1] + temphist[i+1])*(4.f/16.f) + - temphist[i]*(6.f/16.f); - } - - float maxval = hist[0]; - for( i = 1; i < n; i++ ) - maxval = std::max(maxval, hist[i]); - - return maxval; -} - - -// -// Interpolates a scale-space extremum's location and scale to subpixel -// accuracy to form an image feature. Rejects features with low contrast. -// Based on Section 4 of Lowe's paper. -static bool adjustLocalExtrema( const std::vector& dog_pyr, KeyPoint& kpt, int octv, - int& layer, int& r, int& c, int nOctaveLayers, - float contrastThreshold, float edgeThreshold, float sigma ) -{ - const float img_scale = 1.f/(255*SIFT_FIXPT_SCALE); - const float deriv_scale = img_scale*0.5f; - const float second_deriv_scale = img_scale; - const float cross_deriv_scale = img_scale*0.25f; - - float xi=0, xr=0, xc=0, contr=0; - int i = 0; - - for( ; i < SIFT_MAX_INTERP_STEPS; i++ ) - { - int idx = octv*(nOctaveLayers+2) + layer; - const Mat& img = dog_pyr[idx]; - const Mat& prev = dog_pyr[idx-1]; - const Mat& next = dog_pyr[idx+1]; - - Vec3f dD((img.at(r, c+1) - img.at(r, c-1))*deriv_scale, - (img.at(r+1, c) - img.at(r-1, c))*deriv_scale, - (next.at(r, c) - prev.at(r, c))*deriv_scale); - - float v2 = (float)img.at(r, c)*2; - float dxx = (img.at(r, c+1) + img.at(r, c-1) - v2)*second_deriv_scale; - float dyy = (img.at(r+1, c) + img.at(r-1, c) - v2)*second_deriv_scale; - float dss = (next.at(r, c) + prev.at(r, c) - v2)*second_deriv_scale; - float dxy = (img.at(r+1, c+1) - img.at(r+1, c-1) - - img.at(r-1, c+1) + img.at(r-1, c-1))*cross_deriv_scale; - float dxs = (next.at(r, c+1) - next.at(r, c-1) - - prev.at(r, c+1) + prev.at(r, c-1))*cross_deriv_scale; - float dys = (next.at(r+1, c) - next.at(r-1, c) - - prev.at(r+1, c) + prev.at(r-1, c))*cross_deriv_scale; - - Matx33f H(dxx, dxy, dxs, - dxy, dyy, dys, - dxs, dys, dss); - - Vec3f X = H.solve(dD, DECOMP_LU); - - xi = -X[2]; - xr = -X[1]; - xc = -X[0]; - - if( std::abs(xi) < 0.5f && std::abs(xr) < 0.5f && std::abs(xc) < 0.5f ) - break; - - if( std::abs(xi) > (float)(INT_MAX/3) || - std::abs(xr) > (float)(INT_MAX/3) || - std::abs(xc) > (float)(INT_MAX/3) ) - return false; - - c += cvRound(xc); - r += cvRound(xr); - layer += cvRound(xi); - - if( layer < 1 || layer > nOctaveLayers || - c < SIFT_IMG_BORDER || c >= img.cols - SIFT_IMG_BORDER || - r < SIFT_IMG_BORDER || r >= img.rows - SIFT_IMG_BORDER ) - return false; - } - - // ensure convergence of interpolation - if( i >= SIFT_MAX_INTERP_STEPS ) - return false; - - { - int idx = octv*(nOctaveLayers+2) + layer; - const Mat& img = dog_pyr[idx]; - const Mat& prev = dog_pyr[idx-1]; - const Mat& next = dog_pyr[idx+1]; - Matx31f dD((img.at(r, c+1) - img.at(r, c-1))*deriv_scale, - (img.at(r+1, c) - img.at(r-1, c))*deriv_scale, - (next.at(r, c) - prev.at(r, c))*deriv_scale); - float t = dD.dot(Matx31f(xc, xr, xi)); - - contr = img.at(r, c)*img_scale + t * 0.5f; - if( std::abs( contr ) * nOctaveLayers < contrastThreshold ) - return false; - - // principal curvatures are computed using the trace and det of Hessian - float v2 = img.at(r, c)*2.f; - float dxx = (img.at(r, c+1) + img.at(r, c-1) - v2)*second_deriv_scale; - float dyy = (img.at(r+1, c) + img.at(r-1, c) - v2)*second_deriv_scale; - float dxy = (img.at(r+1, c+1) - img.at(r+1, c-1) - - img.at(r-1, c+1) + img.at(r-1, c-1)) * cross_deriv_scale; - float tr = dxx + dyy; - float det = dxx * dyy - dxy * dxy; - - if( det <= 0 || tr*tr*edgeThreshold >= (edgeThreshold + 1)*(edgeThreshold + 1)*det ) - return false; - } - - kpt.pt.x = (c + xc) * (1 << octv); - kpt.pt.y = (r + xr) * (1 << octv); - kpt.octave = octv + (layer << 8) + (cvRound((xi + 0.5)*255) << 16); - kpt.size = sigma*powf(2.f, (layer + xi) / nOctaveLayers)*(1 << octv)*2; - kpt.response = std::abs(contr); - - return true; -} - - -// -// Detects features at extrema in DoG scale space. Bad features are discarded -// based on contrast and ratio of principal curvatures. -void SIFT::findScaleSpaceExtrema( const std::vector& gauss_pyr, const std::vector& dog_pyr, - std::vector& keypoints ) const -{ - int nOctaves = (int)gauss_pyr.size()/(nOctaveLayers + 3); - int threshold = cvFloor(0.5 * contrastThreshold / nOctaveLayers * 255 * SIFT_FIXPT_SCALE); - const int n = SIFT_ORI_HIST_BINS; - float hist[n]; - KeyPoint kpt; - - keypoints.clear(); - - for( int o = 0; o < nOctaves; o++ ) - for( int i = 1; i <= nOctaveLayers; i++ ) - { - int idx = o*(nOctaveLayers+2)+i; - const Mat& img = dog_pyr[idx]; - const Mat& prev = dog_pyr[idx-1]; - const Mat& next = dog_pyr[idx+1]; - int step = (int)img.step1(); - int rows = img.rows, cols = img.cols; - - for( int r = SIFT_IMG_BORDER; r < rows-SIFT_IMG_BORDER; r++) - { - const sift_wt* currptr = img.ptr(r); - const sift_wt* prevptr = prev.ptr(r); - const sift_wt* nextptr = next.ptr(r); - - for( int c = SIFT_IMG_BORDER; c < cols-SIFT_IMG_BORDER; c++) - { - sift_wt val = currptr[c]; - - // find local extrema with pixel accuracy - if( std::abs(val) > threshold && - ((val > 0 && val >= currptr[c-1] && val >= currptr[c+1] && - val >= currptr[c-step-1] && val >= currptr[c-step] && val >= currptr[c-step+1] && - val >= currptr[c+step-1] && val >= currptr[c+step] && val >= currptr[c+step+1] && - val >= nextptr[c] && val >= nextptr[c-1] && val >= nextptr[c+1] && - val >= nextptr[c-step-1] && val >= nextptr[c-step] && val >= nextptr[c-step+1] && - val >= nextptr[c+step-1] && val >= nextptr[c+step] && val >= nextptr[c+step+1] && - val >= prevptr[c] && val >= prevptr[c-1] && val >= prevptr[c+1] && - val >= prevptr[c-step-1] && val >= prevptr[c-step] && val >= prevptr[c-step+1] && - val >= prevptr[c+step-1] && val >= prevptr[c+step] && val >= prevptr[c+step+1]) || - (val < 0 && val <= currptr[c-1] && val <= currptr[c+1] && - val <= currptr[c-step-1] && val <= currptr[c-step] && val <= currptr[c-step+1] && - val <= currptr[c+step-1] && val <= currptr[c+step] && val <= currptr[c+step+1] && - val <= nextptr[c] && val <= nextptr[c-1] && val <= nextptr[c+1] && - val <= nextptr[c-step-1] && val <= nextptr[c-step] && val <= nextptr[c-step+1] && - val <= nextptr[c+step-1] && val <= nextptr[c+step] && val <= nextptr[c+step+1] && - val <= prevptr[c] && val <= prevptr[c-1] && val <= prevptr[c+1] && - val <= prevptr[c-step-1] && val <= prevptr[c-step] && val <= prevptr[c-step+1] && - val <= prevptr[c+step-1] && val <= prevptr[c+step] && val <= prevptr[c+step+1]))) - { - int r1 = r, c1 = c, layer = i; - if( !adjustLocalExtrema(dog_pyr, kpt, o, layer, r1, c1, - nOctaveLayers, (float)contrastThreshold, - (float)edgeThreshold, (float)sigma) ) - continue; - float scl_octv = kpt.size*0.5f/(1 << o); - float omax = calcOrientationHist(gauss_pyr[o*(nOctaveLayers+3) + layer], - Point(c1, r1), - cvRound(SIFT_ORI_RADIUS * scl_octv), - SIFT_ORI_SIG_FCTR * scl_octv, - hist, n); - float mag_thr = (float)(omax * SIFT_ORI_PEAK_RATIO); - for( int j = 0; j < n; j++ ) - { - int l = j > 0 ? j - 1 : n - 1; - int r2 = j < n-1 ? j + 1 : 0; - - if( hist[j] > hist[l] && hist[j] > hist[r2] && hist[j] >= mag_thr ) - { - float bin = j + 0.5f * (hist[l]-hist[r2]) / (hist[l] - 2*hist[j] + hist[r2]); - bin = bin < 0 ? n + bin : bin >= n ? bin - n : bin; - kpt.angle = 360.f - (float)((360.f/n) * bin); - if(std::abs(kpt.angle - 360.f) < FLT_EPSILON) - kpt.angle = 0.f; - keypoints.push_back(kpt); - } - } - } - } - } - } -} - - -static void calcSIFTDescriptor( const Mat& img, Point2f ptf, float ori, float scl, - int d, int n, float* dst ) -{ - Point pt(cvRound(ptf.x), cvRound(ptf.y)); - float cos_t = cosf(ori*(float)(CV_PI/180)); - float sin_t = sinf(ori*(float)(CV_PI/180)); - float bins_per_rad = n / 360.f; - float exp_scale = -1.f/(d * d * 0.5f); - float hist_width = SIFT_DESCR_SCL_FCTR * scl; - int radius = cvRound(hist_width * 1.4142135623730951f * (d + 1) * 0.5f); - // Clip the radius to the diagonal of the image to avoid autobuffer too large exception - radius = std::min(radius, (int) sqrt((double) img.cols*img.cols + img.rows*img.rows)); - cos_t /= hist_width; - sin_t /= hist_width; - - int i, j, k, len = (radius*2+1)*(radius*2+1), histlen = (d+2)*(d+2)*(n+2); - int rows = img.rows, cols = img.cols; - - AutoBuffer buf(len*6 + histlen); - float *X = buf, *Y = X + len, *Mag = Y, *Ori = Mag + len, *W = Ori + len; - float *RBin = W + len, *CBin = RBin + len, *hist = CBin + len; - - for( i = 0; i < d+2; i++ ) - { - for( j = 0; j < d+2; j++ ) - for( k = 0; k < n+2; k++ ) - hist[(i*(d+2) + j)*(n+2) + k] = 0.; - } - - for( i = -radius, k = 0; i <= radius; i++ ) - for( j = -radius; j <= radius; j++ ) - { - // Calculate sample's histogram array coords rotated relative to ori. - // Subtract 0.5 so samples that fall e.g. in the center of row 1 (i.e. - // r_rot = 1.5) have full weight placed in row 1 after interpolation. - float c_rot = j * cos_t - i * sin_t; - float r_rot = j * sin_t + i * cos_t; - float rbin = r_rot + d/2 - 0.5f; - float cbin = c_rot + d/2 - 0.5f; - int r = pt.y + i, c = pt.x + j; - - if( rbin > -1 && rbin < d && cbin > -1 && cbin < d && - r > 0 && r < rows - 1 && c > 0 && c < cols - 1 ) - { - float dx = (float)(img.at(r, c+1) - img.at(r, c-1)); - float dy = (float)(img.at(r-1, c) - img.at(r+1, c)); - X[k] = dx; Y[k] = dy; RBin[k] = rbin; CBin[k] = cbin; - W[k] = (c_rot * c_rot + r_rot * r_rot)*exp_scale; - k++; - } - } - - len = k; - fastAtan2(Y, X, Ori, len, true); - magnitude(X, Y, Mag, len); - exp(W, W, len); - - for( k = 0; k < len; k++ ) - { - float rbin = RBin[k], cbin = CBin[k]; - float obin = (Ori[k] - ori)*bins_per_rad; - float mag = Mag[k]*W[k]; - - int r0 = cvFloor( rbin ); - int c0 = cvFloor( cbin ); - int o0 = cvFloor( obin ); - rbin -= r0; - cbin -= c0; - obin -= o0; - - if( o0 < 0 ) - o0 += n; - if( o0 >= n ) - o0 -= n; - - // histogram update using tri-linear interpolation - float v_r1 = mag*rbin, v_r0 = mag - v_r1; - float v_rc11 = v_r1*cbin, v_rc10 = v_r1 - v_rc11; - float v_rc01 = v_r0*cbin, v_rc00 = v_r0 - v_rc01; - float v_rco111 = v_rc11*obin, v_rco110 = v_rc11 - v_rco111; - float v_rco101 = v_rc10*obin, v_rco100 = v_rc10 - v_rco101; - float v_rco011 = v_rc01*obin, v_rco010 = v_rc01 - v_rco011; - float v_rco001 = v_rc00*obin, v_rco000 = v_rc00 - v_rco001; - - int idx = ((r0+1)*(d+2) + c0+1)*(n+2) + o0; - hist[idx] += v_rco000; - hist[idx+1] += v_rco001; - hist[idx+(n+2)] += v_rco010; - hist[idx+(n+3)] += v_rco011; - hist[idx+(d+2)*(n+2)] += v_rco100; - hist[idx+(d+2)*(n+2)+1] += v_rco101; - hist[idx+(d+3)*(n+2)] += v_rco110; - hist[idx+(d+3)*(n+2)+1] += v_rco111; - } - - // finalize histogram, since the orientation histograms are circular - for( i = 0; i < d; i++ ) - for( j = 0; j < d; j++ ) - { - int idx = ((i+1)*(d+2) + (j+1))*(n+2); - hist[idx] += hist[idx+n]; - hist[idx+1] += hist[idx+n+1]; - for( k = 0; k < n; k++ ) - dst[(i*d + j)*n + k] = hist[idx+k]; - } - // copy histogram to the descriptor, - // apply hysteresis thresholding - // and scale the result, so that it can be easily converted - // to byte array - float nrm2 = 0; - len = d*d*n; - for( k = 0; k < len; k++ ) - nrm2 += dst[k]*dst[k]; - float thr = std::sqrt(nrm2)*SIFT_DESCR_MAG_THR; - for( i = 0, nrm2 = 0; i < k; i++ ) - { - float val = std::min(dst[i], thr); - dst[i] = val; - nrm2 += val*val; - } - nrm2 = SIFT_INT_DESCR_FCTR/std::max(std::sqrt(nrm2), FLT_EPSILON); - -#if 1 - for( k = 0; k < len; k++ ) - { - dst[k] = saturate_cast(dst[k]*nrm2); - } -#else - float nrm1 = 0; - for( k = 0; k < len; k++ ) - { - dst[k] *= nrm2; - nrm1 += dst[k]; - } - nrm1 = 1.f/std::max(nrm1, FLT_EPSILON); - for( k = 0; k < len; k++ ) - { - dst[k] = std::sqrt(dst[k] * nrm1);//saturate_cast(std::sqrt(dst[k] * nrm1)*SIFT_INT_DESCR_FCTR); - } -#endif -} - -static void calcDescriptors(const std::vector& gpyr, const std::vector& keypoints, - Mat& descriptors, int nOctaveLayers, int firstOctave ) -{ - int d = SIFT_DESCR_WIDTH, n = SIFT_DESCR_HIST_BINS; - - for( size_t i = 0; i < keypoints.size(); i++ ) - { - KeyPoint kpt = keypoints[i]; - int octave, layer; - float scale; - unpackOctave(kpt, octave, layer, scale); - CV_Assert(octave >= firstOctave && layer <= nOctaveLayers+2); - float size=kpt.size*scale; - Point2f ptf(kpt.pt.x*scale, kpt.pt.y*scale); - const Mat& img = gpyr[(octave - firstOctave)*(nOctaveLayers + 3) + layer]; - - float angle = 360.f - kpt.angle; - if(std::abs(angle - 360.f) < FLT_EPSILON) - angle = 0.f; - calcSIFTDescriptor(img, ptf, angle, size*0.5f, d, n, descriptors.ptr((int)i)); - } -} - -////////////////////////////////////////////////////////////////////////////////////////// - -SIFT::SIFT( int _nfeatures, int _nOctaveLayers, - double _contrastThreshold, double _edgeThreshold, double _sigma ) - : nfeatures(_nfeatures), nOctaveLayers(_nOctaveLayers), - contrastThreshold(_contrastThreshold), edgeThreshold(_edgeThreshold), sigma(_sigma) -{ -} - -int SIFT::descriptorSize() const -{ - return SIFT_DESCR_WIDTH*SIFT_DESCR_WIDTH*SIFT_DESCR_HIST_BINS; -} - -int SIFT::descriptorType() const -{ - return CV_32F; -} - -int SIFT::defaultNorm() const -{ - return NORM_L2; -} - - -void SIFT::operator()(InputArray _image, InputArray _mask, - std::vector& keypoints) const -{ - (*this)(_image, _mask, keypoints, noArray()); -} - - -void SIFT::operator()(InputArray _image, InputArray _mask, - std::vector& keypoints, - OutputArray _descriptors, - bool useProvidedKeypoints) const -{ - int firstOctave = -1, actualNOctaves = 0, actualNLayers = 0; - Mat image = _image.getMat(), mask = _mask.getMat(); - - if( image.empty() || image.depth() != CV_8U ) - CV_Error( Error::StsBadArg, "image is empty or has incorrect depth (!=CV_8U)" ); - - if( !mask.empty() && mask.type() != CV_8UC1 ) - CV_Error( Error::StsBadArg, "mask has incorrect type (!=CV_8UC1)" ); - - if( useProvidedKeypoints ) - { - firstOctave = 0; - int maxOctave = INT_MIN; - for( size_t i = 0; i < keypoints.size(); i++ ) - { - int octave, layer; - float scale; - unpackOctave(keypoints[i], octave, layer, scale); - firstOctave = std::min(firstOctave, octave); - maxOctave = std::max(maxOctave, octave); - actualNLayers = std::max(actualNLayers, layer-2); - } - - firstOctave = std::min(firstOctave, 0); - CV_Assert( firstOctave >= -1 && actualNLayers <= nOctaveLayers ); - actualNOctaves = maxOctave - firstOctave + 1; - } - - Mat base = createInitialImage(image, firstOctave < 0, (float)sigma); - std::vector gpyr, dogpyr; - int nOctaves = actualNOctaves > 0 ? actualNOctaves : cvRound(std::log( (double)std::min( base.cols, base.rows ) ) / std::log(2.) - 2) - firstOctave; - - //double t, tf = getTickFrequency(); - //t = (double)getTickCount(); - buildGaussianPyramid(base, gpyr, nOctaves); - buildDoGPyramid(gpyr, dogpyr); - - //t = (double)getTickCount() - t; - //printf("pyramid construction time: %g\n", t*1000./tf); - - if( !useProvidedKeypoints ) - { - //t = (double)getTickCount(); - findScaleSpaceExtrema(gpyr, dogpyr, keypoints); - KeyPointsFilter::removeDuplicated( keypoints ); - - if( nfeatures > 0 ) - KeyPointsFilter::retainBest(keypoints, nfeatures); - //t = (double)getTickCount() - t; - //printf("keypoint detection time: %g\n", t*1000./tf); - - if( firstOctave < 0 ) - for( size_t i = 0; i < keypoints.size(); i++ ) - { - KeyPoint& kpt = keypoints[i]; - float scale = 1.f/(float)(1 << -firstOctave); - kpt.octave = (kpt.octave & ~255) | ((kpt.octave + firstOctave) & 255); - kpt.pt *= scale; - kpt.size *= scale; - } - - if( !mask.empty() ) - KeyPointsFilter::runByPixelsMask( keypoints, mask ); - } - else - { - // filter keypoints by mask - //KeyPointsFilter::runByPixelsMask( keypoints, mask ); - } - - if( _descriptors.needed() ) - { - //t = (double)getTickCount(); - int dsize = descriptorSize(); - _descriptors.create((int)keypoints.size(), dsize, CV_32F); - Mat descriptors = _descriptors.getMat(); - - calcDescriptors(gpyr, keypoints, descriptors, nOctaveLayers, firstOctave); - //t = (double)getTickCount() - t; - //printf("descriptor extraction time: %g\n", t*1000./tf); - } -} - -void SIFT::detectImpl( InputArray image, std::vector& keypoints, InputArray mask) const -{ - (*this)(image.getMat(), mask.getMat(), keypoints, noArray()); -} - -void SIFT::computeImpl( InputArray image, std::vector& keypoints, OutputArray descriptors) const -{ - (*this)(image, Mat(), keypoints, descriptors, true); -} - -} diff --git a/modules/nonfree/src/surf.cpp b/modules/nonfree/src/surf.cpp deleted file mode 100644 index 05978e495e..0000000000 --- a/modules/nonfree/src/surf.cpp +++ /dev/null @@ -1,1024 +0,0 @@ -/* Original code has been submitted by Liu Liu. Here is the copyright. ----------------------------------------------------------------------------------- - * An OpenCV Implementation of SURF - * Further Information Refer to "SURF: Speed-Up Robust Feature" - * Author: Liu Liu - * liuliu.1987+opencv@gmail.com - * - * There are still serveral lacks for this experimental implementation: - * 1.The interpolation of sub-pixel mentioned in article was not implemented yet; - * 2.A comparision with original libSurf.so shows that the hessian detector is not a 100% match to their implementation; - * 3.Due to above reasons, I recommanded the original one for study and reuse; - * - * However, the speed of this implementation is something comparable to original one. - * - * Copyright© 2008, Liu Liu All rights reserved. - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. - * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * The name of Contributor may not be used to endorse or - * promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - */ - -/* - The following changes have been made, comparing to the original contribution: - 1. A lot of small optimizations, less memory allocations, got rid of global buffers - 2. Reversed order of cvGetQuadrangleSubPix and cvResize calls; probably less accurate, but much faster - 3. The descriptor computing part (which is most expensive) is threaded using OpenMP - (subpixel-accurate keypoint localization and scale estimation are still TBD) -*/ - -/* -KeyPoint position and scale interpolation has been implemented as described in -the Brown and Lowe paper cited by the SURF paper. - -The sampling step along the x and y axes of the image for the determinant of the -Hessian is now the same for each layer in an octave. While this increases the -computation time, it ensures that a true 3x3x3 neighbourhood exists, with -samples calculated at the same position in the layers above and below. This -results in improved maxima detection and non-maxima suppression, and I think it -is consistent with the description in the SURF paper. - -The wavelet size sampling interval has also been made consistent. The wavelet -size at the first layer of the first octave is now 9 instead of 7. Along with -regular position sampling steps, this makes location and scale interpolation -easy. I think this is consistent with the SURF paper and original -implementation. - -The scaling of the wavelet parameters has been fixed to ensure that the patterns -are symmetric around the centre. Previously the truncation caused by integer -division in the scaling ratio caused a bias towards the top left of the wavelet, -resulting in inconsistent keypoint positions. - -The matrices for the determinant and trace of the Hessian are now reused in each -octave. - -The extraction of the patch of pixels surrounding a keypoint used to build a -descriptor has been simplified. - -KeyPoint descriptor normalisation has been changed from normalising each 4x4 -cell (resulting in a descriptor of magnitude 16) to normalising the entire -descriptor to magnitude 1. - -The default number of octaves has been increased from 3 to 4 to match the -original SURF binary default. The increase in computation time is minimal since -the higher octaves are sampled sparsely. - -The default number of layers per octave has been reduced from 3 to 2, to prevent -redundant calculation of similar sizes in consecutive octaves. This decreases -computation time. The number of features extracted may be less, however the -additional features were mostly redundant. - -The radius of the circle of gradient samples used to assign an orientation has -been increased from 4 to 6 to match the description in the SURF paper. This is -now defined by ORI_RADIUS, and could be made into a parameter. - -The size of the sliding window used in orientation assignment has been reduced -from 120 to 60 degrees to match the description in the SURF paper. This is now -defined by ORI_WIN, and could be made into a parameter. - -Other options like HAAR_SIZE0, HAAR_SIZE_INC, SAMPLE_STEP0, ORI_SEARCH_INC, -ORI_SIGMA and DESC_SIGMA have been separated from the code and documented. -These could also be made into parameters. - -Modifications by Ian Mahon - -*/ -#include "precomp.hpp" -#include "surf.hpp" - -namespace cv -{ - -static const int SURF_ORI_SEARCH_INC = 5; -static const float SURF_ORI_SIGMA = 2.5f; -static const float SURF_DESC_SIGMA = 3.3f; - -// Wavelet size at first layer of first octave. -static const int SURF_HAAR_SIZE0 = 9; - -// Wavelet size increment between layers. This should be an even number, -// such that the wavelet sizes in an octave are either all even or all odd. -// This ensures that when looking for the neighbours of a sample, the layers -// above and below are aligned correctly. -static const int SURF_HAAR_SIZE_INC = 6; - - -struct SurfHF -{ - int p0, p1, p2, p3; - float w; - - SurfHF(): p0(0), p1(0), p2(0), p3(0), w(0) {} -}; - -inline float calcHaarPattern( const int* origin, const SurfHF* f, int n ) -{ - double d = 0; - for( int k = 0; k < n; k++ ) - d += (origin[f[k].p0] + origin[f[k].p3] - origin[f[k].p1] - origin[f[k].p2])*f[k].w; - return (float)d; -} - -static void -resizeHaarPattern( const int src[][5], SurfHF* dst, int n, int oldSize, int newSize, int widthStep ) -{ - float ratio = (float)newSize/oldSize; - for( int k = 0; k < n; k++ ) - { - int dx1 = cvRound( ratio*src[k][0] ); - int dy1 = cvRound( ratio*src[k][1] ); - int dx2 = cvRound( ratio*src[k][2] ); - int dy2 = cvRound( ratio*src[k][3] ); - dst[k].p0 = dy1*widthStep + dx1; - dst[k].p1 = dy2*widthStep + dx1; - dst[k].p2 = dy1*widthStep + dx2; - dst[k].p3 = dy2*widthStep + dx2; - dst[k].w = src[k][4]/((float)(dx2-dx1)*(dy2-dy1)); - } -} - -/* - * Calculate the determinant and trace of the Hessian for a layer of the - * scale-space pyramid - */ -static void calcLayerDetAndTrace( const Mat& sum, int size, int sampleStep, - Mat& det, Mat& trace ) -{ - const int NX=3, NY=3, NXY=4; - const int dx_s[NX][5] = { {0, 2, 3, 7, 1}, {3, 2, 6, 7, -2}, {6, 2, 9, 7, 1} }; - const int dy_s[NY][5] = { {2, 0, 7, 3, 1}, {2, 3, 7, 6, -2}, {2, 6, 7, 9, 1} }; - const int dxy_s[NXY][5] = { {1, 1, 4, 4, 1}, {5, 1, 8, 4, -1}, {1, 5, 4, 8, -1}, {5, 5, 8, 8, 1} }; - - SurfHF Dx[NX], Dy[NY], Dxy[NXY]; - - if( size > sum.rows-1 || size > sum.cols-1 ) - return; - - resizeHaarPattern( dx_s , Dx , NX , 9, size, sum.cols ); - resizeHaarPattern( dy_s , Dy , NY , 9, size, sum.cols ); - resizeHaarPattern( dxy_s, Dxy, NXY, 9, size, sum.cols ); - - /* The integral image 'sum' is one pixel bigger than the source image */ - int samples_i = 1+(sum.rows-1-size)/sampleStep; - int samples_j = 1+(sum.cols-1-size)/sampleStep; - - /* Ignore pixels where some of the kernel is outside the image */ - int margin = (size/2)/sampleStep; - - for( int i = 0; i < samples_i; i++ ) - { - const int* sum_ptr = sum.ptr(i*sampleStep); - float* det_ptr = &det.at(i+margin, margin); - float* trace_ptr = &trace.at(i+margin, margin); - for( int j = 0; j < samples_j; j++ ) - { - float dx = calcHaarPattern( sum_ptr, Dx , 3 ); - float dy = calcHaarPattern( sum_ptr, Dy , 3 ); - float dxy = calcHaarPattern( sum_ptr, Dxy, 4 ); - sum_ptr += sampleStep; - det_ptr[j] = dx*dy - 0.81f*dxy*dxy; - trace_ptr[j] = dx + dy; - } - } -} - - -/* - * Maxima location interpolation as described in "Invariant Features from - * Interest Point Groups" by Matthew Brown and David Lowe. This is performed by - * fitting a 3D quadratic to a set of neighbouring samples. - * - * The gradient vector and Hessian matrix at the initial keypoint location are - * approximated using central differences. The linear system Ax = b is then - * solved, where A is the Hessian, b is the negative gradient, and x is the - * offset of the interpolated maxima coordinates from the initial estimate. - * This is equivalent to an iteration of Netwon's optimisation algorithm. - * - * N9 contains the samples in the 3x3x3 neighbourhood of the maxima - * dx is the sampling step in x - * dy is the sampling step in y - * ds is the sampling step in size - * point contains the keypoint coordinates and scale to be modified - * - * Return value is 1 if interpolation was successful, 0 on failure. - */ -static int -interpolateKeypoint( float N9[3][9], int dx, int dy, int ds, KeyPoint& kpt ) -{ - Vec3f b(-(N9[1][5]-N9[1][3])/2, // Negative 1st deriv with respect to x - -(N9[1][7]-N9[1][1])/2, // Negative 1st deriv with respect to y - -(N9[2][4]-N9[0][4])/2); // Negative 1st deriv with respect to s - - Matx33f A( - N9[1][3]-2*N9[1][4]+N9[1][5], // 2nd deriv x, x - (N9[1][8]-N9[1][6]-N9[1][2]+N9[1][0])/4, // 2nd deriv x, y - (N9[2][5]-N9[2][3]-N9[0][5]+N9[0][3])/4, // 2nd deriv x, s - (N9[1][8]-N9[1][6]-N9[1][2]+N9[1][0])/4, // 2nd deriv x, y - N9[1][1]-2*N9[1][4]+N9[1][7], // 2nd deriv y, y - (N9[2][7]-N9[2][1]-N9[0][7]+N9[0][1])/4, // 2nd deriv y, s - (N9[2][5]-N9[2][3]-N9[0][5]+N9[0][3])/4, // 2nd deriv x, s - (N9[2][7]-N9[2][1]-N9[0][7]+N9[0][1])/4, // 2nd deriv y, s - N9[0][4]-2*N9[1][4]+N9[2][4]); // 2nd deriv s, s - - Vec3f x = A.solve(b, DECOMP_LU); - - bool ok = (x[0] != 0 || x[1] != 0 || x[2] != 0) && - std::abs(x[0]) <= 1 && std::abs(x[1]) <= 1 && std::abs(x[2]) <= 1; - - if( ok ) - { - kpt.pt.x += x[0]*dx; - kpt.pt.y += x[1]*dy; - kpt.size = (float)cvRound( kpt.size + x[2]*ds ); - } - return ok; -} - -// Multi-threaded construction of the scale-space pyramid -struct SURFBuildInvoker : ParallelLoopBody -{ - SURFBuildInvoker( const Mat& _sum, const std::vector& _sizes, - const std::vector& _sampleSteps, - std::vector& _dets, std::vector& _traces ) - { - sum = &_sum; - sizes = &_sizes; - sampleSteps = &_sampleSteps; - dets = &_dets; - traces = &_traces; - } - - void operator()(const Range& range) const - { - for( int i=range.start; i *sizes; - const std::vector *sampleSteps; - std::vector* dets; - std::vector* traces; -}; - -// Multi-threaded search of the scale-space pyramid for keypoints -struct SURFFindInvoker : ParallelLoopBody -{ - SURFFindInvoker( const Mat& _sum, const Mat& _mask_sum, - const std::vector& _dets, const std::vector& _traces, - const std::vector& _sizes, const std::vector& _sampleSteps, - const std::vector& _middleIndices, std::vector& _keypoints, - int _nOctaveLayers, float _hessianThreshold ) - { - sum = &_sum; - mask_sum = &_mask_sum; - dets = &_dets; - traces = &_traces; - sizes = &_sizes; - sampleSteps = &_sampleSteps; - middleIndices = &_middleIndices; - keypoints = &_keypoints; - nOctaveLayers = _nOctaveLayers; - hessianThreshold = _hessianThreshold; - } - - static void findMaximaInLayer( const Mat& sum, const Mat& mask_sum, - const std::vector& dets, const std::vector& traces, - const std::vector& sizes, std::vector& keypoints, - int octave, int layer, float hessianThreshold, int sampleStep ); - - void operator()(const Range& range) const - { - for( int i=range.start; i* dets; - const std::vector* traces; - const std::vector* sizes; - const std::vector* sampleSteps; - const std::vector* middleIndices; - std::vector* keypoints; - int nOctaveLayers; - float hessianThreshold; - - static Mutex findMaximaInLayer_m; -}; - -Mutex SURFFindInvoker::findMaximaInLayer_m; - - -/* - * Find the maxima in the determinant of the Hessian in a layer of the - * scale-space pyramid - */ -void SURFFindInvoker::findMaximaInLayer( const Mat& sum, const Mat& mask_sum, - const std::vector& dets, const std::vector& traces, - const std::vector& sizes, std::vector& keypoints, - int octave, int layer, float hessianThreshold, int sampleStep ) -{ - // Wavelet Data - const int NM=1; - const int dm[NM][5] = { {0, 0, 9, 9, 1} }; - SurfHF Dm; - - int size = sizes[layer]; - - // The integral image 'sum' is one pixel bigger than the source image - int layer_rows = (sum.rows-1)/sampleStep; - int layer_cols = (sum.cols-1)/sampleStep; - - // Ignore pixels without a 3x3x3 neighbourhood in the layer above - int margin = (sizes[layer+1]/2)/sampleStep+1; - - if( !mask_sum.empty() ) - resizeHaarPattern( dm, &Dm, NM, 9, size, mask_sum.cols ); - - int step = (int)(dets[layer].step/dets[layer].elemSize()); - - for( int i = margin; i < layer_rows - margin; i++ ) - { - const float* det_ptr = dets[layer].ptr(i); - const float* trace_ptr = traces[layer].ptr(i); - for( int j = margin; j < layer_cols-margin; j++ ) - { - float val0 = det_ptr[j]; - if( val0 > hessianThreshold ) - { - /* Coordinates for the start of the wavelet in the sum image. There - is some integer division involved, so don't try to simplify this - (cancel out sampleStep) without checking the result is the same */ - int sum_i = sampleStep*(i-(size/2)/sampleStep); - int sum_j = sampleStep*(j-(size/2)/sampleStep); - - /* The 3x3x3 neighbouring samples around the maxima. - The maxima is included at N9[1][4] */ - - const float *det1 = &dets[layer-1].at(i, j); - const float *det2 = &dets[layer].at(i, j); - const float *det3 = &dets[layer+1].at(i, j); - float N9[3][9] = { { det1[-step-1], det1[-step], det1[-step+1], - det1[-1] , det1[0] , det1[1], - det1[step-1] , det1[step] , det1[step+1] }, - { det2[-step-1], det2[-step], det2[-step+1], - det2[-1] , det2[0] , det2[1], - det2[step-1] , det2[step] , det2[step+1] }, - { det3[-step-1], det3[-step], det3[-step+1], - det3[-1] , det3[0] , det3[1], - det3[step-1] , det3[step] , det3[step+1] } }; - - /* Check the mask - why not just check the mask at the center of the wavelet? */ - if( !mask_sum.empty() ) - { - const int* mask_ptr = &mask_sum.at(sum_i, sum_j); - float mval = calcHaarPattern( mask_ptr, &Dm, 1 ); - if( mval < 0.5 ) - continue; - } - - /* Non-maxima suppression. val0 is at N9[1][4]*/ - if( val0 > N9[0][0] && val0 > N9[0][1] && val0 > N9[0][2] && - val0 > N9[0][3] && val0 > N9[0][4] && val0 > N9[0][5] && - val0 > N9[0][6] && val0 > N9[0][7] && val0 > N9[0][8] && - val0 > N9[1][0] && val0 > N9[1][1] && val0 > N9[1][2] && - val0 > N9[1][3] && val0 > N9[1][5] && - val0 > N9[1][6] && val0 > N9[1][7] && val0 > N9[1][8] && - val0 > N9[2][0] && val0 > N9[2][1] && val0 > N9[2][2] && - val0 > N9[2][3] && val0 > N9[2][4] && val0 > N9[2][5] && - val0 > N9[2][6] && val0 > N9[2][7] && val0 > N9[2][8] ) - { - /* Calculate the wavelet center coordinates for the maxima */ - float center_i = sum_i + (size-1)*0.5f; - float center_j = sum_j + (size-1)*0.5f; - - KeyPoint kpt( center_j, center_i, (float)sizes[layer], - -1, val0, octave, (trace_ptr[j] > 0) - (trace_ptr[j] < 0) ); - - /* Interpolate maxima location within the 3x3x3 neighbourhood */ - int ds = size - sizes[layer-1]; - int interp_ok = interpolateKeypoint( N9, sampleStep, sampleStep, ds, kpt ); - - /* Sometimes the interpolation step gives a negative size etc. */ - if( interp_ok ) - { - /*printf( "KeyPoint %f %f %d\n", point.pt.x, point.pt.y, point.size );*/ - cv::AutoLock lock(findMaximaInLayer_m); - keypoints.push_back(kpt); - } - } - } - } - } -} - -struct KeypointGreater -{ - inline bool operator()(const KeyPoint& kp1, const KeyPoint& kp2) const - { - if(kp1.response > kp2.response) return true; - if(kp1.response < kp2.response) return false; - if(kp1.size > kp2.size) return true; - if(kp1.size < kp2.size) return false; - if(kp1.octave > kp2.octave) return true; - if(kp1.octave < kp2.octave) return false; - if(kp1.pt.y < kp2.pt.y) return false; - if(kp1.pt.y > kp2.pt.y) return true; - return kp1.pt.x < kp2.pt.x; - } -}; - - -static void fastHessianDetector( const Mat& sum, const Mat& mask_sum, std::vector& keypoints, - int nOctaves, int nOctaveLayers, float hessianThreshold ) -{ - /* Sampling step along image x and y axes at first octave. This is doubled - for each additional octave. WARNING: Increasing this improves speed, - however keypoint extraction becomes unreliable. */ - const int SAMPLE_STEP0 = 1; - - int nTotalLayers = (nOctaveLayers+2)*nOctaves; - int nMiddleLayers = nOctaveLayers*nOctaves; - - std::vector dets(nTotalLayers); - std::vector traces(nTotalLayers); - std::vector sizes(nTotalLayers); - std::vector sampleSteps(nTotalLayers); - std::vector middleIndices(nMiddleLayers); - - keypoints.clear(); - - // Allocate space and calculate properties of each layer - int index = 0, middleIndex = 0, step = SAMPLE_STEP0; - - for( int octave = 0; octave < nOctaves; octave++ ) - { - for( int layer = 0; layer < nOctaveLayers+2; layer++ ) - { - /* The integral image sum is one pixel bigger than the source image*/ - dets[index].create( (sum.rows-1)/step, (sum.cols-1)/step, CV_32F ); - traces[index].create( (sum.rows-1)/step, (sum.cols-1)/step, CV_32F ); - sizes[index] = (SURF_HAAR_SIZE0 + SURF_HAAR_SIZE_INC*layer) << octave; - sampleSteps[index] = step; - - if( 0 < layer && layer <= nOctaveLayers ) - middleIndices[middleIndex++] = index; - index++; - } - step *= 2; - } - - // Calculate hessian determinant and trace samples in each layer - parallel_for_( Range(0, nTotalLayers), - SURFBuildInvoker(sum, sizes, sampleSteps, dets, traces) ); - - // Find maxima in the determinant of the hessian - parallel_for_( Range(0, nMiddleLayers), - SURFFindInvoker(sum, mask_sum, dets, traces, sizes, - sampleSteps, middleIndices, keypoints, - nOctaveLayers, hessianThreshold) ); - - std::sort(keypoints.begin(), keypoints.end(), KeypointGreater()); -} - - -struct SURFInvoker : ParallelLoopBody -{ - enum { ORI_RADIUS = 6, ORI_WIN = 60, PATCH_SZ = 20 }; - - SURFInvoker( const Mat& _img, const Mat& _sum, - std::vector& _keypoints, Mat& _descriptors, - bool _extended, bool _upright ) - { - keypoints = &_keypoints; - descriptors = &_descriptors; - img = &_img; - sum = &_sum; - extended = _extended; - upright = _upright; - - // Simple bound for number of grid points in circle of radius ORI_RADIUS - const int nOriSampleBound = (2*ORI_RADIUS+1)*(2*ORI_RADIUS+1); - - // Allocate arrays - apt.resize(nOriSampleBound); - aptw.resize(nOriSampleBound); - DW.resize(PATCH_SZ*PATCH_SZ); - - /* Coordinates and weights of samples used to calculate orientation */ - Mat G_ori = getGaussianKernel( 2*ORI_RADIUS+1, SURF_ORI_SIGMA, CV_32F ); - nOriSamples = 0; - for( int i = -ORI_RADIUS; i <= ORI_RADIUS; i++ ) - { - for( int j = -ORI_RADIUS; j <= ORI_RADIUS; j++ ) - { - if( i*i + j*j <= ORI_RADIUS*ORI_RADIUS ) - { - apt[nOriSamples] = Point(i,j); - aptw[nOriSamples++] = G_ori.at(i+ORI_RADIUS,0) * G_ori.at(j+ORI_RADIUS,0); - } - } - } - CV_Assert( nOriSamples <= nOriSampleBound ); - - /* Gaussian used to weight descriptor samples */ - Mat G_desc = getGaussianKernel( PATCH_SZ, SURF_DESC_SIGMA, CV_32F ); - for( int i = 0; i < PATCH_SZ; i++ ) - { - for( int j = 0; j < PATCH_SZ; j++ ) - DW[i*PATCH_SZ+j] = G_desc.at(i,0) * G_desc.at(j,0); - } - } - - void operator()(const Range& range) const - { - /* X and Y gradient wavelet data */ - const int NX=2, NY=2; - const int dx_s[NX][5] = {{0, 0, 2, 4, -1}, {2, 0, 4, 4, 1}}; - const int dy_s[NY][5] = {{0, 0, 4, 2, 1}, {0, 2, 4, 4, -1}}; - - // Optimisation is better using nOriSampleBound than nOriSamples for - // array lengths. Maybe because it is a constant known at compile time - const int nOriSampleBound =(2*ORI_RADIUS+1)*(2*ORI_RADIUS+1); - - float X[nOriSampleBound], Y[nOriSampleBound], angle[nOriSampleBound]; - uchar PATCH[PATCH_SZ+1][PATCH_SZ+1]; - float DX[PATCH_SZ][PATCH_SZ], DY[PATCH_SZ][PATCH_SZ]; - Mat _patch(PATCH_SZ+1, PATCH_SZ+1, CV_8U, PATCH); - - int dsize = extended ? 128 : 64; - - int k, k1 = range.start, k2 = range.end; - float maxSize = 0; - for( k = k1; k < k2; k++ ) - { - maxSize = std::max(maxSize, (*keypoints)[k].size); - } - int imaxSize = std::max(cvCeil((PATCH_SZ+1)*maxSize*1.2f/9.0f), 1); - cv::AutoBuffer winbuf(imaxSize*imaxSize); - - for( k = k1; k < k2; k++ ) - { - int i, j, kk, nangle; - float* vec; - SurfHF dx_t[NX], dy_t[NY]; - KeyPoint& kp = (*keypoints)[k]; - float size = kp.size; - Point2f center = kp.pt; - /* The sampling intervals and wavelet sized for selecting an orientation - and building the keypoint descriptor are defined relative to 's' */ - float s = size*1.2f/9.0f; - /* To find the dominant orientation, the gradients in x and y are - sampled in a circle of radius 6s using wavelets of size 4s. - We ensure the gradient wavelet size is even to ensure the - wavelet pattern is balanced and symmetric around its center */ - int grad_wav_size = 2*cvRound( 2*s ); - if( sum->rows < grad_wav_size || sum->cols < grad_wav_size ) - { - /* when grad_wav_size is too big, - * the sampling of gradient will be meaningless - * mark keypoint for deletion. */ - kp.size = -1; - continue; - } - - float descriptor_dir = 360.f - 90.f; - if (upright == 0) - { - resizeHaarPattern( dx_s, dx_t, NX, 4, grad_wav_size, sum->cols ); - resizeHaarPattern( dy_s, dy_t, NY, 4, grad_wav_size, sum->cols ); - for( kk = 0, nangle = 0; kk < nOriSamples; kk++ ) - { - int x = cvRound( center.x + apt[kk].x*s - (float)(grad_wav_size-1)/2 ); - int y = cvRound( center.y + apt[kk].y*s - (float)(grad_wav_size-1)/2 ); - if( y < 0 || y >= sum->rows - grad_wav_size || - x < 0 || x >= sum->cols - grad_wav_size ) - continue; - const int* ptr = &sum->at(y, x); - float vx = calcHaarPattern( ptr, dx_t, 2 ); - float vy = calcHaarPattern( ptr, dy_t, 2 ); - X[nangle] = vx*aptw[kk]; - Y[nangle] = vy*aptw[kk]; - nangle++; - } - if( nangle == 0 ) - { - // No gradient could be sampled because the keypoint is too - // near too one or more of the sides of the image. As we - // therefore cannot find a dominant direction, we skip this - // keypoint and mark it for later deletion from the sequence. - kp.size = -1; - continue; - } - - phase( Mat(1, nangle, CV_32F, X), Mat(1, nangle, CV_32F, Y), Mat(1, nangle, CV_32F, angle), true ); - - float bestx = 0, besty = 0, descriptor_mod = 0; - for( i = 0; i < 360; i += SURF_ORI_SEARCH_INC ) - { - float sumx = 0, sumy = 0, temp_mod; - for( j = 0; j < nangle; j++ ) - { - int d = std::abs(cvRound(angle[j]) - i); - if( d < ORI_WIN/2 || d > 360-ORI_WIN/2 ) - { - sumx += X[j]; - sumy += Y[j]; - } - } - temp_mod = sumx*sumx + sumy*sumy; - if( temp_mod > descriptor_mod ) - { - descriptor_mod = temp_mod; - bestx = sumx; - besty = sumy; - } - } - descriptor_dir = fastAtan2( -besty, bestx ); - } - kp.angle = descriptor_dir; - if( !descriptors || !descriptors->data ) - continue; - - /* Extract a window of pixels around the keypoint of size 20s */ - int win_size = (int)((PATCH_SZ+1)*s); - CV_Assert( imaxSize >= win_size ); - Mat win(win_size, win_size, CV_8U, winbuf); - - if( !upright ) - { - descriptor_dir *= (float)(CV_PI/180); - float sin_dir = -std::sin(descriptor_dir); - float cos_dir = std::cos(descriptor_dir); - - /* Subpixel interpolation version (slower). Subpixel not required since - the pixels will all get averaged when we scale down to 20 pixels */ - /* - float w[] = { cos_dir, sin_dir, center.x, - -sin_dir, cos_dir , center.y }; - CvMat W = cvMat(2, 3, CV_32F, w); - cvGetQuadrangleSubPix( img, &win, &W ); - */ - - float win_offset = -(float)(win_size-1)/2; - float start_x = center.x + win_offset*cos_dir + win_offset*sin_dir; - float start_y = center.y - win_offset*sin_dir + win_offset*cos_dir; - uchar* WIN = win.data; -#if 0 - // Nearest neighbour version (faster) - for( i = 0; i < win_size; i++, start_x += sin_dir, start_y += cos_dir ) - { - float pixel_x = start_x; - float pixel_y = start_y; - for( j = 0; j < win_size; j++, pixel_x += cos_dir, pixel_y -= sin_dir ) - { - int x = std::min(std::max(cvRound(pixel_x), 0), img->cols-1); - int y = std::min(std::max(cvRound(pixel_y), 0), img->rows-1); - WIN[i*win_size + j] = img->at(y, x); - } - } -#else - int ncols1 = img->cols-1, nrows1 = img->rows-1; - size_t imgstep = img->step; - for( i = 0; i < win_size; i++, start_x += sin_dir, start_y += cos_dir ) - { - double pixel_x = start_x; - double pixel_y = start_y; - for( j = 0; j < win_size; j++, pixel_x += cos_dir, pixel_y -= sin_dir ) - { - int ix = cvFloor(pixel_x), iy = cvFloor(pixel_y); - if( (unsigned)ix < (unsigned)ncols1 && - (unsigned)iy < (unsigned)nrows1 ) - { - float a = (float)(pixel_x - ix), b = (float)(pixel_y - iy); - const uchar* imgptr = &img->at(iy, ix); - WIN[i*win_size + j] = (uchar) - cvRound(imgptr[0]*(1.f - a)*(1.f - b) + - imgptr[1]*a*(1.f - b) + - imgptr[imgstep]*(1.f - a)*b + - imgptr[imgstep+1]*a*b); - } - else - { - int x = std::min(std::max(cvRound(pixel_x), 0), ncols1); - int y = std::min(std::max(cvRound(pixel_y), 0), nrows1); - WIN[i*win_size + j] = img->at(y, x); - } - } - } -#endif - } - else - { - // extract rect - slightly optimized version of the code above - // TODO: find faster code, as this is simply an extract rect operation, - // e.g. by using cvGetSubRect, problem is the border processing - // descriptor_dir == 90 grad - // sin_dir == 1 - // cos_dir == 0 - - float win_offset = -(float)(win_size-1)/2; - int start_x = cvRound(center.x + win_offset); - int start_y = cvRound(center.y - win_offset); - uchar* WIN = win.data; - for( i = 0; i < win_size; i++, start_x++ ) - { - int pixel_x = start_x; - int pixel_y = start_y; - for( j = 0; j < win_size; j++, pixel_y-- ) - { - int x = MAX( pixel_x, 0 ); - int y = MAX( pixel_y, 0 ); - x = MIN( x, img->cols-1 ); - y = MIN( y, img->rows-1 ); - WIN[i*win_size + j] = img->at(y, x); - } - } - } - // Scale the window to size PATCH_SZ so each pixel's size is s. This - // makes calculating the gradients with wavelets of size 2s easy - resize(win, _patch, _patch.size(), 0, 0, INTER_AREA); - - // Calculate gradients in x and y with wavelets of size 2s - for( i = 0; i < PATCH_SZ; i++ ) - for( j = 0; j < PATCH_SZ; j++ ) - { - float dw = DW[i*PATCH_SZ + j]; - float vx = (PATCH[i][j+1] - PATCH[i][j] + PATCH[i+1][j+1] - PATCH[i+1][j])*dw; - float vy = (PATCH[i+1][j] - PATCH[i][j] + PATCH[i+1][j+1] - PATCH[i][j+1])*dw; - DX[i][j] = vx; - DY[i][j] = vy; - } - - // Construct the descriptor - vec = descriptors->ptr(k); - for( kk = 0; kk < dsize; kk++ ) - vec[kk] = 0; - double square_mag = 0; - if( extended ) - { - // 128-bin descriptor - for( i = 0; i < 4; i++ ) - for( j = 0; j < 4; j++ ) - { - for(int y = i*5; y < i*5+5; y++ ) - { - for(int x = j*5; x < j*5+5; x++ ) - { - float tx = DX[y][x], ty = DY[y][x]; - if( ty >= 0 ) - { - vec[0] += tx; - vec[1] += (float)fabs(tx); - } else { - vec[2] += tx; - vec[3] += (float)fabs(tx); - } - if ( tx >= 0 ) - { - vec[4] += ty; - vec[5] += (float)fabs(ty); - } else { - vec[6] += ty; - vec[7] += (float)fabs(ty); - } - } - } - for( kk = 0; kk < 8; kk++ ) - square_mag += vec[kk]*vec[kk]; - vec += 8; - } - } - else - { - // 64-bin descriptor - for( i = 0; i < 4; i++ ) - for( j = 0; j < 4; j++ ) - { - for(int y = i*5; y < i*5+5; y++ ) - { - for(int x = j*5; x < j*5+5; x++ ) - { - float tx = DX[y][x], ty = DY[y][x]; - vec[0] += tx; vec[1] += ty; - vec[2] += (float)fabs(tx); vec[3] += (float)fabs(ty); - } - } - for( kk = 0; kk < 4; kk++ ) - square_mag += vec[kk]*vec[kk]; - vec+=4; - } - } - - // unit vector is essential for contrast invariance - vec = descriptors->ptr(k); - float scale = (float)(1./(std::sqrt(square_mag) + DBL_EPSILON)); - for( kk = 0; kk < dsize; kk++ ) - vec[kk] *= scale; - } - } - - // Parameters - const Mat* img; - const Mat* sum; - std::vector* keypoints; - Mat* descriptors; - bool extended; - bool upright; - - // Pre-calculated values - int nOriSamples; - std::vector apt; - std::vector aptw; - std::vector DW; -}; - - -SURF::SURF() -{ - hessianThreshold = 100; - extended = false; - upright = false; - nOctaves = 4; - nOctaveLayers = 3; -} - -SURF::SURF(double _threshold, int _nOctaves, int _nOctaveLayers, bool _extended, bool _upright) -{ - hessianThreshold = _threshold; - extended = _extended; - upright = _upright; - nOctaves = _nOctaves; - nOctaveLayers = _nOctaveLayers; -} - -int SURF::descriptorSize() const { return extended ? 128 : 64; } -int SURF::descriptorType() const { return CV_32F; } -int SURF::defaultNorm() const { return NORM_L2; } - -void SURF::operator()(InputArray imgarg, InputArray maskarg, - CV_OUT std::vector& keypoints) const -{ - (*this)(imgarg, maskarg, keypoints, noArray(), false); -} - -void SURF::operator()(InputArray _img, InputArray _mask, - CV_OUT std::vector& keypoints, - OutputArray _descriptors, - bool useProvidedKeypoints) const -{ - int imgtype = _img.type(), imgcn = CV_MAT_CN(imgtype); - bool doDescriptors = _descriptors.needed(); - - CV_Assert(!_img.empty() && CV_MAT_DEPTH(imgtype) == CV_8U && (imgcn == 1 || imgcn == 3 || imgcn == 4)); - CV_Assert(_descriptors.needed() || !useProvidedKeypoints); - - if( ocl::useOpenCL() ) - { - SURF_OCL ocl_surf; - UMat gpu_kpt; - bool ok = ocl_surf.init(this); - - if( ok ) - { - if( !_descriptors.needed() ) - { - ok = ocl_surf.detect(_img, _mask, gpu_kpt); - } - else - { - if(useProvidedKeypoints) - ocl_surf.uploadKeypoints(keypoints, gpu_kpt); - ok = ocl_surf.detectAndCompute(_img, _mask, gpu_kpt, _descriptors, useProvidedKeypoints); - } - } - if( ok ) - { - if(!useProvidedKeypoints) - ocl_surf.downloadKeypoints(gpu_kpt, keypoints); - return; - } - } - - Mat img = _img.getMat(), mask = _mask.getMat(), mask1, sum, msum; - - if( imgcn > 1 ) - cvtColor(img, img, COLOR_BGR2GRAY); - - CV_Assert(mask.empty() || (mask.type() == CV_8U && mask.size() == img.size())); - CV_Assert(hessianThreshold >= 0); - CV_Assert(nOctaves > 0); - CV_Assert(nOctaveLayers > 0); - - integral(img, sum, CV_32S); - - // Compute keypoints only if we are not asked for evaluating the descriptors are some given locations: - if( !useProvidedKeypoints ) - { - if( !mask.empty() ) - { - cv::min(mask, 1, mask1); - integral(mask1, msum, CV_32S); - } - fastHessianDetector( sum, msum, keypoints, nOctaves, nOctaveLayers, (float)hessianThreshold ); - } - - int i, j, N = (int)keypoints.size(); - if( N > 0 ) - { - Mat descriptors; - bool _1d = false; - int dcols = extended ? 128 : 64; - size_t dsize = dcols*sizeof(float); - - if( doDescriptors ) - { - _1d = _descriptors.kind() == _InputArray::STD_VECTOR && _descriptors.type() == CV_32F; - if( _1d ) - { - _descriptors.create(N*dcols, 1, CV_32F); - descriptors = _descriptors.getMat().reshape(1, N); - } - else - { - _descriptors.create(N, dcols, CV_32F); - descriptors = _descriptors.getMat(); - } - } - - // we call SURFInvoker in any case, even if we do not need descriptors, - // since it computes orientation of each feature. - parallel_for_(Range(0, N), SURFInvoker(img, sum, keypoints, descriptors, extended, upright) ); - - // remove keypoints that were marked for deletion - for( i = j = 0; i < N; i++ ) - { - if( keypoints[i].size > 0 ) - { - if( i > j ) - { - keypoints[j] = keypoints[i]; - if( doDescriptors ) - memcpy( descriptors.ptr(j), descriptors.ptr(i), dsize); - } - j++; - } - } - if( N > j ) - { - N = j; - keypoints.resize(N); - if( doDescriptors ) - { - Mat d = descriptors.rowRange(0, N); - if( _1d ) - d = d.reshape(1, N*dcols); - d.copyTo(_descriptors); - } - } - } -} - - -void SURF::detectImpl( InputArray image, std::vector& keypoints, InputArray mask) const -{ - (*this)(image.getMat(), mask.getMat(), keypoints, noArray(), false); -} - -void SURF::computeImpl( InputArray image, std::vector& keypoints, OutputArray descriptors) const -{ - (*this)(image, Mat(), keypoints, descriptors, true); -} - -} diff --git a/modules/nonfree/src/surf.cuda.cpp b/modules/nonfree/src/surf.cuda.cpp deleted file mode 100644 index 461ba0f7ef..0000000000 --- a/modules/nonfree/src/surf.cuda.cpp +++ /dev/null @@ -1,432 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "precomp.hpp" - -using namespace cv; -using namespace cv::cuda; - -#if !defined (HAVE_CUDA) || !defined (HAVE_OPENCV_CUDAARITHM) - -cv::cuda::SURF_CUDA::SURF_CUDA() { throw_no_cuda(); } -cv::cuda::SURF_CUDA::SURF_CUDA(double, int, int, bool, float, bool) { throw_no_cuda(); } -int cv::cuda::SURF_CUDA::descriptorSize() const { throw_no_cuda(); return 0;} -void cv::cuda::SURF_CUDA::uploadKeypoints(const std::vector&, GpuMat&) { throw_no_cuda(); } -void cv::cuda::SURF_CUDA::downloadKeypoints(const GpuMat&, std::vector&) { throw_no_cuda(); } -void cv::cuda::SURF_CUDA::downloadDescriptors(const GpuMat&, std::vector&) { throw_no_cuda(); } -void cv::cuda::SURF_CUDA::operator()(const GpuMat&, const GpuMat&, GpuMat&) { throw_no_cuda(); } -void cv::cuda::SURF_CUDA::operator()(const GpuMat&, const GpuMat&, GpuMat&, GpuMat&, bool) { throw_no_cuda(); } -void cv::cuda::SURF_CUDA::operator()(const GpuMat&, const GpuMat&, std::vector&) { throw_no_cuda(); } -void cv::cuda::SURF_CUDA::operator()(const GpuMat&, const GpuMat&, std::vector&, GpuMat&, bool) { throw_no_cuda(); } -void cv::cuda::SURF_CUDA::operator()(const GpuMat&, const GpuMat&, std::vector&, std::vector&, bool) { throw_no_cuda(); } -void cv::cuda::SURF_CUDA::releaseMemory() { throw_no_cuda(); } - -#else // !defined (HAVE_CUDA) - -namespace cv { namespace cuda { namespace device -{ - namespace surf - { - void loadGlobalConstants(int maxCandidates, int maxFeatures, int img_rows, int img_cols, int nOctaveLayers, float hessianThreshold); - void loadOctaveConstants(int octave, int layer_rows, int layer_cols); - - void bindImgTex(PtrStepSzb img); - size_t bindSumTex(PtrStepSz sum); - size_t bindMaskSumTex(PtrStepSz maskSum); - - void icvCalcLayerDetAndTrace_gpu(const PtrStepf& det, const PtrStepf& trace, int img_rows, int img_cols, - int octave, int nOctaveLayer); - - void icvFindMaximaInLayer_gpu(const PtrStepf& det, const PtrStepf& trace, int4* maxPosBuffer, unsigned int* maxCounter, - int img_rows, int img_cols, int octave, bool use_mask, int nLayers); - - void icvInterpolateKeypoint_gpu(const PtrStepf& det, const int4* maxPosBuffer, unsigned int maxCounter, - float* featureX, float* featureY, int* featureLaplacian, int* featureOctave, float* featureSize, float* featureHessian, - unsigned int* featureCounter); - - void icvCalcOrientation_gpu(const float* featureX, const float* featureY, const float* featureSize, float* featureDir, int nFeatures); - - void compute_descriptors_gpu(PtrStepSz descriptors, const float* featureX, const float* featureY, const float* featureSize, const float* featureDir, int nFeatures); - } -}}} - -using namespace ::cv::cuda::device::surf; - -namespace -{ - Mutex mtx; - - int calcSize(int octave, int layer) - { - /* Wavelet size at first layer of first octave. */ - const int HAAR_SIZE0 = 9; - - /* Wavelet size increment between layers. This should be an even number, - such that the wavelet sizes in an octave are either all even or all odd. - This ensures that when looking for the neighbours of a sample, the layers - - above and below are aligned correctly. */ - const int HAAR_SIZE_INC = 6; - - return (HAAR_SIZE0 + HAAR_SIZE_INC * layer) << octave; - } - - class SURF_CUDA_Invoker - { - public: - SURF_CUDA_Invoker(SURF_CUDA& surf, const GpuMat& img, const GpuMat& mask) : - surf_(surf), - img_cols(img.cols), img_rows(img.rows), - use_mask(!mask.empty()) - { - CV_Assert(!img.empty() && img.type() == CV_8UC1); - CV_Assert(mask.empty() || (mask.size() == img.size() && mask.type() == CV_8UC1)); - CV_Assert(surf_.nOctaves > 0 && surf_.nOctaveLayers > 0); - - const int min_size = calcSize(surf_.nOctaves - 1, 0); - CV_Assert(img_rows - min_size >= 0); - CV_Assert(img_cols - min_size >= 0); - - const int layer_rows = img_rows >> (surf_.nOctaves - 1); - const int layer_cols = img_cols >> (surf_.nOctaves - 1); - const int min_margin = ((calcSize((surf_.nOctaves - 1), 2) >> 1) >> (surf_.nOctaves - 1)) + 1; - CV_Assert(layer_rows - 2 * min_margin > 0); - CV_Assert(layer_cols - 2 * min_margin > 0); - - maxFeatures = std::min(static_cast(img.size().area() * surf.keypointsRatio), 65535); - maxCandidates = std::min(static_cast(1.5 * maxFeatures), 65535); - - CV_Assert(maxFeatures > 0); - - counters.create(1, surf_.nOctaves + 1, CV_32SC1); - counters.setTo(Scalar::all(0)); - - loadGlobalConstants(maxCandidates, maxFeatures, img_rows, img_cols, surf_.nOctaveLayers, static_cast(surf_.hessianThreshold)); - - bindImgTex(img); - - cuda::integral(img, surf_.sum, surf_.intBuffer); - sumOffset = bindSumTex(surf_.sum); - - if (use_mask) - { - cuda::min(mask, 1.0, surf_.mask1); - cuda::integral(surf_.mask1, surf_.maskSum, surf_.intBuffer); - maskOffset = bindMaskSumTex(surf_.maskSum); - } - } - - void detectKeypoints(GpuMat& keypoints) - { - ensureSizeIsEnough(img_rows * (surf_.nOctaveLayers + 2), img_cols, CV_32FC1, surf_.det); - ensureSizeIsEnough(img_rows * (surf_.nOctaveLayers + 2), img_cols, CV_32FC1, surf_.trace); - - ensureSizeIsEnough(1, maxCandidates, CV_32SC4, surf_.maxPosBuffer); - ensureSizeIsEnough(SURF_CUDA::ROWS_COUNT, maxFeatures, CV_32FC1, keypoints); - keypoints.setTo(Scalar::all(0)); - - for (int octave = 0; octave < surf_.nOctaves; ++octave) - { - const int layer_rows = img_rows >> octave; - const int layer_cols = img_cols >> octave; - loadOctaveConstants(octave, layer_rows, layer_cols); - - icvCalcLayerDetAndTrace_gpu(surf_.det, surf_.trace, img_rows, img_cols, octave, surf_.nOctaveLayers); - - icvFindMaximaInLayer_gpu(surf_.det, surf_.trace, surf_.maxPosBuffer.ptr(), counters.ptr() + 1 + octave, - img_rows, img_cols, octave, use_mask, surf_.nOctaveLayers); - - unsigned int maxCounter; - cudaSafeCall( cudaMemcpy(&maxCounter, counters.ptr() + 1 + octave, sizeof(unsigned int), cudaMemcpyDeviceToHost) ); - maxCounter = std::min(maxCounter, static_cast(maxCandidates)); - - if (maxCounter > 0) - { - icvInterpolateKeypoint_gpu(surf_.det, surf_.maxPosBuffer.ptr(), maxCounter, - keypoints.ptr(SURF_CUDA::X_ROW), keypoints.ptr(SURF_CUDA::Y_ROW), - keypoints.ptr(SURF_CUDA::LAPLACIAN_ROW), keypoints.ptr(SURF_CUDA::OCTAVE_ROW), - keypoints.ptr(SURF_CUDA::SIZE_ROW), keypoints.ptr(SURF_CUDA::HESSIAN_ROW), - counters.ptr()); - } - } - unsigned int featureCounter; - cudaSafeCall( cudaMemcpy(&featureCounter, counters.ptr(), sizeof(unsigned int), cudaMemcpyDeviceToHost) ); - featureCounter = std::min(featureCounter, static_cast(maxFeatures)); - - keypoints.cols = featureCounter; - - if (surf_.upright) - keypoints.row(SURF_CUDA::ANGLE_ROW).setTo(Scalar::all(360.0 - 90.0)); - else - findOrientation(keypoints); - } - - void findOrientation(GpuMat& keypoints) - { - const int nFeatures = keypoints.cols; - if (nFeatures > 0) - { - icvCalcOrientation_gpu(keypoints.ptr(SURF_CUDA::X_ROW), keypoints.ptr(SURF_CUDA::Y_ROW), - keypoints.ptr(SURF_CUDA::SIZE_ROW), keypoints.ptr(SURF_CUDA::ANGLE_ROW), nFeatures); - } - } - - void computeDescriptors(const GpuMat& keypoints, GpuMat& descriptors, int descriptorSize) - { - const int nFeatures = keypoints.cols; - if (nFeatures > 0) - { - ensureSizeIsEnough(nFeatures, descriptorSize, CV_32F, descriptors); - compute_descriptors_gpu(descriptors, keypoints.ptr(SURF_CUDA::X_ROW), keypoints.ptr(SURF_CUDA::Y_ROW), - keypoints.ptr(SURF_CUDA::SIZE_ROW), keypoints.ptr(SURF_CUDA::ANGLE_ROW), nFeatures); - } - } - - private: - SURF_CUDA_Invoker(const SURF_CUDA_Invoker&); - SURF_CUDA_Invoker& operator =(const SURF_CUDA_Invoker&); - - SURF_CUDA& surf_; - - int img_cols, img_rows; - - bool use_mask; - - int maxCandidates; - int maxFeatures; - - size_t maskOffset; - size_t sumOffset; - - GpuMat counters; - }; -} - -cv::cuda::SURF_CUDA::SURF_CUDA() -{ - hessianThreshold = 100; - extended = true; - nOctaves = 4; - nOctaveLayers = 2; - keypointsRatio = 0.01f; - upright = false; -} - -cv::cuda::SURF_CUDA::SURF_CUDA(double _threshold, int _nOctaves, int _nOctaveLayers, bool _extended, float _keypointsRatio, bool _upright) -{ - hessianThreshold = _threshold; - extended = _extended; - nOctaves = _nOctaves; - nOctaveLayers = _nOctaveLayers; - keypointsRatio = _keypointsRatio; - upright = _upright; -} - -int cv::cuda::SURF_CUDA::descriptorSize() const -{ - return extended ? 128 : 64; -} - -int cv::cuda::SURF_CUDA::defaultNorm() const -{ - return NORM_L2; -} - -void cv::cuda::SURF_CUDA::uploadKeypoints(const std::vector& keypoints, GpuMat& keypointsGPU) -{ - if (keypoints.empty()) - keypointsGPU.release(); - else - { - Mat keypointsCPU(SURF_CUDA::ROWS_COUNT, static_cast(keypoints.size()), CV_32FC1); - - float* kp_x = keypointsCPU.ptr(SURF_CUDA::X_ROW); - float* kp_y = keypointsCPU.ptr(SURF_CUDA::Y_ROW); - int* kp_laplacian = keypointsCPU.ptr(SURF_CUDA::LAPLACIAN_ROW); - int* kp_octave = keypointsCPU.ptr(SURF_CUDA::OCTAVE_ROW); - float* kp_size = keypointsCPU.ptr(SURF_CUDA::SIZE_ROW); - float* kp_dir = keypointsCPU.ptr(SURF_CUDA::ANGLE_ROW); - float* kp_hessian = keypointsCPU.ptr(SURF_CUDA::HESSIAN_ROW); - - for (size_t i = 0, size = keypoints.size(); i < size; ++i) - { - const KeyPoint& kp = keypoints[i]; - kp_x[i] = kp.pt.x; - kp_y[i] = kp.pt.y; - kp_octave[i] = kp.octave; - kp_size[i] = kp.size; - kp_dir[i] = kp.angle; - kp_hessian[i] = kp.response; - kp_laplacian[i] = 1; - } - - keypointsGPU.upload(keypointsCPU); - } -} - -void cv::cuda::SURF_CUDA::downloadKeypoints(const GpuMat& keypointsGPU, std::vector& keypoints) -{ - const int nFeatures = keypointsGPU.cols; - - if (nFeatures == 0) - keypoints.clear(); - else - { - CV_Assert(keypointsGPU.type() == CV_32FC1 && keypointsGPU.rows == ROWS_COUNT); - - Mat keypointsCPU(keypointsGPU); - - keypoints.resize(nFeatures); - - float* kp_x = keypointsCPU.ptr(SURF_CUDA::X_ROW); - float* kp_y = keypointsCPU.ptr(SURF_CUDA::Y_ROW); - int* kp_laplacian = keypointsCPU.ptr(SURF_CUDA::LAPLACIAN_ROW); - int* kp_octave = keypointsCPU.ptr(SURF_CUDA::OCTAVE_ROW); - float* kp_size = keypointsCPU.ptr(SURF_CUDA::SIZE_ROW); - float* kp_dir = keypointsCPU.ptr(SURF_CUDA::ANGLE_ROW); - float* kp_hessian = keypointsCPU.ptr(SURF_CUDA::HESSIAN_ROW); - - for (int i = 0; i < nFeatures; ++i) - { - KeyPoint& kp = keypoints[i]; - kp.pt.x = kp_x[i]; - kp.pt.y = kp_y[i]; - kp.class_id = kp_laplacian[i]; - kp.octave = kp_octave[i]; - kp.size = kp_size[i]; - kp.angle = kp_dir[i]; - kp.response = kp_hessian[i]; - } - } -} - -void cv::cuda::SURF_CUDA::downloadDescriptors(const GpuMat& descriptorsGPU, std::vector& descriptors) -{ - if (descriptorsGPU.empty()) - descriptors.clear(); - else - { - CV_Assert(descriptorsGPU.type() == CV_32F); - - descriptors.resize(descriptorsGPU.rows * descriptorsGPU.cols); - Mat descriptorsCPU(descriptorsGPU.size(), CV_32F, &descriptors[0]); - descriptorsGPU.download(descriptorsCPU); - } -} - -void cv::cuda::SURF_CUDA::operator()(const GpuMat& img, const GpuMat& mask, GpuMat& keypoints) -{ - AutoLock lock(mtx); - if (!img.empty()) - { - SURF_CUDA_Invoker surf(*this, img, mask); - - surf.detectKeypoints(keypoints); - } -} - -void cv::cuda::SURF_CUDA::operator()(const GpuMat& img, const GpuMat& mask, GpuMat& keypoints, GpuMat& descriptors, - bool useProvidedKeypoints) -{ - AutoLock lock(mtx); - if (!img.empty()) - { - SURF_CUDA_Invoker surf(*this, img, mask); - - if (!useProvidedKeypoints) - surf.detectKeypoints(keypoints); - else if (!upright) - { - surf.findOrientation(keypoints); - } - - surf.computeDescriptors(keypoints, descriptors, descriptorSize()); - } -} - -void cv::cuda::SURF_CUDA::operator()(const GpuMat& img, const GpuMat& mask, std::vector& keypoints) -{ - AutoLock lock(mtx); - GpuMat keypointsGPU; - - (*this)(img, mask, keypointsGPU); - - downloadKeypoints(keypointsGPU, keypoints); -} - -void cv::cuda::SURF_CUDA::operator()(const GpuMat& img, const GpuMat& mask, std::vector& keypoints, - GpuMat& descriptors, bool useProvidedKeypoints) -{ - AutoLock lock(mtx); - GpuMat keypointsGPU; - - if (useProvidedKeypoints) - uploadKeypoints(keypoints, keypointsGPU); - - (*this)(img, mask, keypointsGPU, descriptors, useProvidedKeypoints); - - downloadKeypoints(keypointsGPU, keypoints); -} - -void cv::cuda::SURF_CUDA::operator()(const GpuMat& img, const GpuMat& mask, std::vector& keypoints, - std::vector& descriptors, bool useProvidedKeypoints) -{ - AutoLock lock(mtx); - GpuMat descriptorsGPU; - - (*this)(img, mask, keypoints, descriptorsGPU, useProvidedKeypoints); - - downloadDescriptors(descriptorsGPU, descriptors); -} - -void cv::cuda::SURF_CUDA::releaseMemory() -{ - sum.release(); - mask1.release(); - maskSum.release(); - intBuffer.release(); - det.release(); - trace.release(); - maxPosBuffer.release(); -} - -#endif // !defined (HAVE_CUDA) diff --git a/modules/nonfree/src/surf.hpp b/modules/nonfree/src/surf.hpp deleted file mode 100644 index ee56fb66c1..0000000000 --- a/modules/nonfree/src/surf.hpp +++ /dev/null @@ -1,118 +0,0 @@ -///////////// see LICENSE.txt in the OpenCV root directory ////////////// - -#ifndef __OPENCV_NONFREE_SURF_HPP__ -#define __OPENCV_NONFREE_SURF_HPP__ - -namespace cv -{ -//! Speeded up robust features, port from CUDA module. -////////////////////////////////// SURF ////////////////////////////////////////// - -class SURF_OCL -{ -public: - enum KeypointLayout - { - X_ROW = 0, - Y_ROW, - LAPLACIAN_ROW, - OCTAVE_ROW, - SIZE_ROW, - ANGLE_ROW, - HESSIAN_ROW, - ROWS_COUNT - }; - - //! the full constructor taking all the necessary parameters - SURF_OCL(); - - bool init(const SURF* params); - - //! returns the descriptor size in float's (64 or 128) - int descriptorSize() const { return params->extended ? 128 : 64; } - - void uploadKeypoints(const std::vector &keypoints, UMat &keypointsGPU); - void downloadKeypoints(const UMat &keypointsGPU, std::vector &keypoints); - - //! finds the keypoints using fast hessian detector used in SURF - //! supports CV_8UC1 images - //! keypoints will have nFeature cols and 6 rows - //! keypoints.ptr(X_ROW)[i] will contain x coordinate of i'th feature - //! keypoints.ptr(Y_ROW)[i] will contain y coordinate of i'th feature - //! keypoints.ptr(LAPLACIAN_ROW)[i] will contain laplacian sign of i'th feature - //! keypoints.ptr(OCTAVE_ROW)[i] will contain octave of i'th feature - //! keypoints.ptr(SIZE_ROW)[i] will contain size of i'th feature - //! keypoints.ptr(ANGLE_ROW)[i] will contain orientation of i'th feature - //! keypoints.ptr(HESSIAN_ROW)[i] will contain response of i'th feature - bool detect(InputArray img, InputArray mask, UMat& keypoints); - //! finds the keypoints and computes their descriptors. - //! Optionally it can compute descriptors for the user-provided keypoints and recompute keypoints direction - bool detectAndCompute(InputArray img, InputArray mask, UMat& keypoints, - OutputArray descriptors, bool useProvidedKeypoints = false); - -protected: - bool setImage(InputArray img, InputArray mask); - - // kernel callers declarations - bool calcLayerDetAndTrace(int octave, int layer_rows); - - bool findMaximaInLayer(int counterOffset, int octave, int layer_rows, int layer_cols); - - bool interpolateKeypoint(int maxCounter, UMat &keypoints, int octave, int layer_rows, int maxFeatures); - - bool calcOrientation(UMat &keypoints); - - bool setUpRight(UMat &keypoints); - - bool computeDescriptors(const UMat &keypoints, OutputArray descriptors); - - bool detectKeypoints(UMat &keypoints); - - const SURF* params; - - //! max keypoints = min(keypointsRatio * img.size().area(), 65535) - UMat sum, intBuffer; - UMat det, trace; - UMat maxPosBuffer; - - int img_cols, img_rows; - - int maxCandidates; - int maxFeatures; - - UMat img, counters; - - // texture buffers - ocl::Image2D imgTex, sumTex; - bool haveImageSupport; - String kerOpts; - - int status; -}; - -/* -template void copyVectorToUMat(const std::vector<_Tp>& v, UMat& um) -{ - if(v.empty()) - um.release(); - else - Mat(1, (int)(v.size()*sizeof(v[0])), CV_8U, (void*)&v[0]).copyTo(um); -} - -template void copyUMatToVector(const UMat& um, std::vector<_Tp>& v) -{ - if(um.empty()) - v.clear(); - else - { - size_t sz = um.total()*um.elemSize(); - CV_Assert(um.isContinuous() && (sz % sizeof(_Tp) == 0)); - v.resize(sz/sizeof(_Tp)); - Mat m(um.size(), um.type(), &v[0]); - um.copyTo(m); - } -}*/ - -} - -#endif diff --git a/modules/nonfree/src/surf.ocl.cpp b/modules/nonfree/src/surf.ocl.cpp deleted file mode 100644 index f46fc500f2..0000000000 --- a/modules/nonfree/src/surf.ocl.cpp +++ /dev/null @@ -1,459 +0,0 @@ -/*M///////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2010-2012, Multicoreware, Inc., all rights reserved. -// Copyright (C) 2010-2012, Advanced Micro Devices, Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// @Authors -// Peng Xiao, pengxiao@multicorewareinc.com -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors as is and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ -#include "precomp.hpp" -#include "surf.hpp" - -#include -#include -#include "opencl_kernels_nonfree.hpp" - -namespace cv -{ - -enum { ORI_SEARCH_INC=5, ORI_LOCAL_SIZE=(360 / ORI_SEARCH_INC) }; - -static inline int calcSize(int octave, int layer) -{ - /* Wavelet size at first layer of first octave. */ - const int HAAR_SIZE0 = 9; - - /* Wavelet size increment between layers. This should be an even number, - such that the wavelet sizes in an octave are either all even or all odd. - This ensures that when looking for the neighbors of a sample, the layers - - above and below are aligned correctly. */ - const int HAAR_SIZE_INC = 6; - - return (HAAR_SIZE0 + HAAR_SIZE_INC * layer) << octave; -} - - -SURF_OCL::SURF_OCL() -{ - img_cols = img_rows = maxCandidates = maxFeatures = 0; - haveImageSupport = false; - status = -1; -} - -bool SURF_OCL::init(const SURF* p) -{ - params = p; - if(status < 0) - { - status = 0; - if(ocl::haveOpenCL()) - { - const ocl::Device& dev = ocl::Device::getDefault(); - if( dev.type() == ocl::Device::TYPE_CPU || dev.doubleFPConfig() == 0 ) - return false; - haveImageSupport = false;//dev.imageSupport(); - kerOpts = haveImageSupport ? "-D HAVE_IMAGE2D -D DOUBLE_SUPPORT" : ""; -// status = 1; - } - } - return status > 0; -} - - -bool SURF_OCL::setImage(InputArray _img, InputArray _mask) -{ - if( status <= 0 ) - return false; - if( !_mask.empty()) - return false; - int imgtype = _img.type(); - CV_Assert(!_img.empty()); - CV_Assert(params && params->nOctaves > 0 && params->nOctaveLayers > 0); - - int min_size = calcSize(params->nOctaves - 1, 0); - Size sz = _img.size(); - img_cols = sz.width; - img_rows = sz.height; - CV_Assert(img_rows >= min_size && img_cols >= min_size); - - const int layer_rows = img_rows >> (params->nOctaves - 1); - const int layer_cols = img_cols >> (params->nOctaves - 1); - const int min_margin = ((calcSize((params->nOctaves - 1), 2) >> 1) >> (params->nOctaves - 1)) + 1; - CV_Assert(layer_rows - 2 * min_margin > 0); - CV_Assert(layer_cols - 2 * min_margin > 0); - - maxFeatures = std::min(static_cast(img_cols*img_rows * 0.01f), 65535); - maxCandidates = std::min(static_cast(1.5 * maxFeatures), 65535); - - CV_Assert(maxFeatures > 0); - - counters.create(1, params->nOctaves + 1, CV_32SC1); - counters.setTo(Scalar::all(0)); - - img.release(); - if(_img.isUMat() && imgtype == CV_8UC1) - img = _img.getUMat(); - else if( imgtype == CV_8UC1 ) - _img.copyTo(img); - else - cvtColor(_img, img, COLOR_BGR2GRAY); - - integral(img, sum); - - if(haveImageSupport) - { - imgTex = ocl::Image2D(img); - sumTex = ocl::Image2D(sum); - } - - return true; -} - - -bool SURF_OCL::detectKeypoints(UMat &keypoints) -{ - // create image pyramid buffers - // different layers have same sized buffers, but they are sampled from Gaussian kernel. - det.create(img_rows * (params->nOctaveLayers + 2), img_cols, CV_32F); - trace.create(img_rows * (params->nOctaveLayers + 2), img_cols, CV_32FC1); - - maxPosBuffer.create(1, maxCandidates, CV_32SC4); - keypoints.create(SURF_OCL::ROWS_COUNT, maxFeatures, CV_32F); - keypoints.setTo(Scalar::all(0)); - Mat cpuCounters; - - for (int octave = 0; octave < params->nOctaves; ++octave) - { - const int layer_rows = img_rows >> octave; - const int layer_cols = img_cols >> octave; - - if(!calcLayerDetAndTrace(octave, layer_rows)) - return false; - - if(!findMaximaInLayer(1 + octave, octave, layer_rows, layer_cols)) - return false; - - cpuCounters = counters.getMat(ACCESS_READ); - int maxCounter = cpuCounters.at(1 + octave); - maxCounter = std::min(maxCounter, maxCandidates); - cpuCounters.release(); - - if (maxCounter > 0) - { - if(!interpolateKeypoint(maxCounter, keypoints, octave, layer_rows, maxFeatures)) - return false; - } - } - - cpuCounters = counters.getMat(ACCESS_READ); - int featureCounter = cpuCounters.at(0); - featureCounter = std::min(featureCounter, maxFeatures); - cpuCounters.release(); - - keypoints = UMat(keypoints, Rect(0, 0, featureCounter, keypoints.rows)); - - if (params->upright) - return setUpRight(keypoints); - else - return calcOrientation(keypoints); -} - - -bool SURF_OCL::setUpRight(UMat &keypoints) -{ - int nFeatures = keypoints.cols; - if( nFeatures == 0 ) - return true; - - size_t globalThreads[3] = {nFeatures, 1}; - ocl::Kernel kerUpRight("SURF_setUpRight", ocl::nonfree::surf_oclsrc, kerOpts); - return kerUpRight.args(ocl::KernelArg::ReadWrite(keypoints)).run(2, globalThreads, 0, true); -} - -bool SURF_OCL::computeDescriptors(const UMat &keypoints, OutputArray _descriptors) -{ - int dsize = params->descriptorSize(); - int nFeatures = keypoints.cols; - if (nFeatures == 0) - { - _descriptors.release(); - return true; - } - _descriptors.create(nFeatures, dsize, CV_32F); - UMat descriptors; - if( _descriptors.isUMat() ) - descriptors = _descriptors.getUMat(); - else - descriptors.create(nFeatures, dsize, CV_32F); - - ocl::Kernel kerCalcDesc, kerNormDesc; - - if( dsize == 64 ) - { - kerCalcDesc.create("SURF_computeDescriptors64", ocl::nonfree::surf_oclsrc, kerOpts); - kerNormDesc.create("SURF_normalizeDescriptors64", ocl::nonfree::surf_oclsrc, kerOpts); - } - else - { - CV_Assert(dsize == 128); - kerCalcDesc.create("SURF_computeDescriptors128", ocl::nonfree::surf_oclsrc, kerOpts); - kerNormDesc.create("SURF_normalizeDescriptors128", ocl::nonfree::surf_oclsrc, kerOpts); - } - - size_t localThreads[] = {6, 6}; - size_t globalThreads[] = {nFeatures*localThreads[0], localThreads[1]}; - - if(haveImageSupport) - { - kerCalcDesc.args(imgTex, - img_rows, img_cols, - ocl::KernelArg::ReadOnlyNoSize(keypoints), - ocl::KernelArg::WriteOnlyNoSize(descriptors)); - } - else - { - kerCalcDesc.args(ocl::KernelArg::ReadOnlyNoSize(img), - img_rows, img_cols, - ocl::KernelArg::ReadOnlyNoSize(keypoints), - ocl::KernelArg::WriteOnlyNoSize(descriptors)); - } - - if(!kerCalcDesc.run(2, globalThreads, localThreads, true)) - return false; - - size_t localThreads_n[] = {dsize, 1}; - size_t globalThreads_n[] = {nFeatures*localThreads_n[0], localThreads_n[1]}; - - globalThreads[0] = nFeatures * localThreads[0]; - globalThreads[1] = localThreads[1]; - bool ok = kerNormDesc.args(ocl::KernelArg::ReadWriteNoSize(descriptors)). - run(2, globalThreads_n, localThreads_n, true); - if(ok && !_descriptors.isUMat()) - descriptors.copyTo(_descriptors); - return ok; -} - - -void SURF_OCL::uploadKeypoints(const std::vector &keypoints, UMat &keypointsGPU) -{ - if (keypoints.empty()) - keypointsGPU.release(); - else - { - Mat keypointsCPU(SURF_OCL::ROWS_COUNT, static_cast(keypoints.size()), CV_32FC1); - - float *kp_x = keypointsCPU.ptr(SURF_OCL::X_ROW); - float *kp_y = keypointsCPU.ptr(SURF_OCL::Y_ROW); - int *kp_laplacian = keypointsCPU.ptr(SURF_OCL::LAPLACIAN_ROW); - int *kp_octave = keypointsCPU.ptr(SURF_OCL::OCTAVE_ROW); - float *kp_size = keypointsCPU.ptr(SURF_OCL::SIZE_ROW); - float *kp_dir = keypointsCPU.ptr(SURF_OCL::ANGLE_ROW); - float *kp_hessian = keypointsCPU.ptr(SURF_OCL::HESSIAN_ROW); - - for (size_t i = 0, size = keypoints.size(); i < size; ++i) - { - const KeyPoint &kp = keypoints[i]; - kp_x[i] = kp.pt.x; - kp_y[i] = kp.pt.y; - kp_octave[i] = kp.octave; - kp_size[i] = kp.size; - kp_dir[i] = kp.angle; - kp_hessian[i] = kp.response; - kp_laplacian[i] = 1; - } - - keypointsCPU.copyTo(keypointsGPU); - } -} - -void SURF_OCL::downloadKeypoints(const UMat &keypointsGPU, std::vector &keypoints) -{ - const int nFeatures = keypointsGPU.cols; - - if (nFeatures == 0) - keypoints.clear(); - else - { - CV_Assert(keypointsGPU.type() == CV_32FC1 && keypointsGPU.rows == ROWS_COUNT); - - Mat keypointsCPU = keypointsGPU.getMat(ACCESS_READ); - keypoints.resize(nFeatures); - - float *kp_x = keypointsCPU.ptr(SURF_OCL::X_ROW); - float *kp_y = keypointsCPU.ptr(SURF_OCL::Y_ROW); - int *kp_laplacian = keypointsCPU.ptr(SURF_OCL::LAPLACIAN_ROW); - int *kp_octave = keypointsCPU.ptr(SURF_OCL::OCTAVE_ROW); - float *kp_size = keypointsCPU.ptr(SURF_OCL::SIZE_ROW); - float *kp_dir = keypointsCPU.ptr(SURF_OCL::ANGLE_ROW); - float *kp_hessian = keypointsCPU.ptr(SURF_OCL::HESSIAN_ROW); - - for (int i = 0; i < nFeatures; ++i) - { - KeyPoint &kp = keypoints[i]; - kp.pt.x = kp_x[i]; - kp.pt.y = kp_y[i]; - kp.class_id = kp_laplacian[i]; - kp.octave = kp_octave[i]; - kp.size = kp_size[i]; - kp.angle = kp_dir[i]; - kp.response = kp_hessian[i]; - } - } -} - -bool SURF_OCL::detect(InputArray _img, InputArray _mask, UMat& keypoints) -{ - if( !setImage(_img, _mask) ) - return false; - - return detectKeypoints(keypoints); -} - - -bool SURF_OCL::detectAndCompute(InputArray _img, InputArray _mask, UMat& keypoints, - OutputArray _descriptors, bool useProvidedKeypoints ) -{ - if( !setImage(_img, _mask) ) - return false; - - if( !useProvidedKeypoints && !detectKeypoints(keypoints) ) - return false; - - return computeDescriptors(keypoints, _descriptors); -} - -inline int divUp(int a, int b) { return (a + b-1)/b; } - -//////////////////////////// -// kernel caller definitions -bool SURF_OCL::calcLayerDetAndTrace(int octave, int c_layer_rows) -{ - int nOctaveLayers = params->nOctaveLayers; - const int min_size = calcSize(octave, 0); - const int max_samples_i = 1 + ((img_rows - min_size) >> octave); - const int max_samples_j = 1 + ((img_cols - min_size) >> octave); - - size_t localThreads[] = {16, 16}; - size_t globalThreads[] = - { - divUp(max_samples_j, (int)localThreads[0]) * localThreads[0], - divUp(max_samples_i, (int)localThreads[1]) * localThreads[1] * (nOctaveLayers + 2) - }; - ocl::Kernel kerCalcDetTrace("SURF_calcLayerDetAndTrace", ocl::nonfree::surf_oclsrc, kerOpts); - if(haveImageSupport) - { - kerCalcDetTrace.args(sumTex, - img_rows, img_cols, nOctaveLayers, - octave, c_layer_rows, - ocl::KernelArg::WriteOnlyNoSize(det), - ocl::KernelArg::WriteOnlyNoSize(trace)); - } - else - { - kerCalcDetTrace.args(ocl::KernelArg::ReadOnlyNoSize(sum), - img_rows, img_cols, nOctaveLayers, - octave, c_layer_rows, - ocl::KernelArg::WriteOnlyNoSize(det), - ocl::KernelArg::WriteOnlyNoSize(trace)); - } - return kerCalcDetTrace.run(2, globalThreads, localThreads, true); -} - -bool SURF_OCL::findMaximaInLayer(int counterOffset, int octave, - int layer_rows, int layer_cols) -{ - const int min_margin = ((calcSize(octave, 2) >> 1) >> octave) + 1; - int nOctaveLayers = params->nOctaveLayers; - - size_t localThreads[3] = {16, 16}; - size_t globalThreads[3] = - { - divUp(layer_cols - 2 * min_margin, (int)localThreads[0] - 2) * localThreads[0], - divUp(layer_rows - 2 * min_margin, (int)localThreads[1] - 2) * nOctaveLayers * localThreads[1] - }; - - ocl::Kernel kerFindMaxima("SURF_findMaximaInLayer", ocl::nonfree::surf_oclsrc, kerOpts); - return kerFindMaxima.args(ocl::KernelArg::ReadOnlyNoSize(det), - ocl::KernelArg::ReadOnlyNoSize(trace), - ocl::KernelArg::PtrReadWrite(maxPosBuffer), - ocl::KernelArg::PtrReadWrite(counters), - counterOffset, img_rows, img_cols, - octave, nOctaveLayers, - layer_rows, layer_cols, - maxCandidates, - (float)params->hessianThreshold).run(2, globalThreads, localThreads, true); -} - -bool SURF_OCL::interpolateKeypoint(int maxCounter, UMat &keypoints, int octave, int layer_rows, int max_features) -{ - size_t localThreads[3] = {3, 3, 3}; - size_t globalThreads[3] = {maxCounter*localThreads[0], localThreads[1], 3}; - - ocl::Kernel kerInterp("SURF_interpolateKeypoint", ocl::nonfree::surf_oclsrc, kerOpts); - - return kerInterp.args(ocl::KernelArg::ReadOnlyNoSize(det), - ocl::KernelArg::PtrReadOnly(maxPosBuffer), - ocl::KernelArg::ReadWriteNoSize(keypoints), - ocl::KernelArg::PtrReadWrite(counters), - img_rows, img_cols, octave, layer_rows, max_features). - run(3, globalThreads, localThreads, true); -} - -bool SURF_OCL::calcOrientation(UMat &keypoints) -{ - int nFeatures = keypoints.cols; - if( nFeatures == 0 ) - return true; - ocl::Kernel kerOri("SURF_calcOrientation", ocl::nonfree::surf_oclsrc, kerOpts); - - if( haveImageSupport ) - kerOri.args(sumTex, img_rows, img_cols, - ocl::KernelArg::ReadWriteNoSize(keypoints)); - else - kerOri.args(ocl::KernelArg::ReadOnlyNoSize(sum), - img_rows, img_cols, - ocl::KernelArg::ReadWriteNoSize(keypoints)); - - size_t localThreads[3] = {ORI_LOCAL_SIZE, 1}; - size_t globalThreads[3] = {nFeatures * localThreads[0], 1}; - return kerOri.run(2, globalThreads, localThreads, true); -} - -} diff --git a/modules/nonfree/test/test_detectors.cpp b/modules/nonfree/test/test_detectors.cpp deleted file mode 100644 index 5854207dcd..0000000000 --- a/modules/nonfree/test/test_detectors.cpp +++ /dev/null @@ -1,314 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "test_precomp.hpp" - -#include -#include -#include -#include -#include -#include -#include - -using namespace cv; -using namespace std; - -class CV_DetectorsTest : public cvtest::BaseTest -{ -public: - CV_DetectorsTest(); - ~CV_DetectorsTest(); -protected: - void run(int); - template bool testDetector(const Mat& img, const T& detector, vector& expected); - - void LoadExpected(const string& file, vector& out); -}; - -CV_DetectorsTest::CV_DetectorsTest() -{ -} -CV_DetectorsTest::~CV_DetectorsTest() {} - -void getRotation(const Mat& img, Mat& aff, Mat& out) -{ - Point center(img.cols/2, img.rows/2); - aff = getRotationMatrix2D(center, 30, 1); - warpAffine( img, out, aff, img.size()); -} - -void getZoom(const Mat& img, Mat& aff, Mat& out) -{ - const double mult = 1.2; - - aff.create(2, 3, CV_64F); - double *data = aff.ptr(); - data[0] = mult; data[1] = 0; data[2] = 0; - data[3] = 0; data[4] = mult; data[5] = 0; - - warpAffine( img, out, aff, img.size()); -} - -void getBlur(const Mat& img, Mat& aff, Mat& out) -{ - aff.create(2, 3, CV_64F); - double *data = aff.ptr(); - data[0] = 1; data[1] = 0; data[2] = 0; - data[3] = 0; data[4] = 1; data[5] = 0; - - GaussianBlur(img, out, Size(5, 5), 2); -} - -void getBrightness(const Mat& img, Mat& aff, Mat& out) -{ - aff.create(2, 3, CV_64F); - double *data = aff.ptr(); - data[0] = 1; data[1] = 0; data[2] = 0; - data[3] = 0; data[4] = 1; data[5] = 0; - - add(img, Mat(img.size(), img.type(), Scalar(15)), out); -} - -void showOrig(const Mat& img, const vector& orig_pts) -{ - - Mat img_color; - cvtColor(img, img_color, COLOR_GRAY2BGR); - - for(size_t i = 0; i < orig_pts.size(); ++i) - circle(img_color, orig_pts[i].pt, (int)orig_pts[i].size/2, Scalar(0, 255, 0)); - - namedWindow("O"); imshow("O", img_color); -} - -void show(const string& name, const Mat& new_img, const vector& new_pts, const vector& transf_pts) -{ - - Mat new_img_color; - cvtColor(new_img, new_img_color, COLOR_GRAY2BGR); - - for(size_t i = 0; i < transf_pts.size(); ++i) - circle(new_img_color, transf_pts[i].pt, (int)transf_pts[i].size/2, Scalar(255, 0, 0)); - - for(size_t i = 0; i < new_pts.size(); ++i) - circle(new_img_color, new_pts[i].pt, (int)new_pts[i].size/2, Scalar(0, 0, 255)); - - namedWindow(name + "_T"); imshow(name + "_T", new_img_color); -} - -struct WrapPoint -{ - const double* R; - WrapPoint(const Mat& rmat) : R(rmat.ptr()) { }; - - KeyPoint operator()(const KeyPoint& kp) const - { - KeyPoint res = kp; - res.pt.x = static_cast(kp.pt.x * R[0] + kp.pt.y * R[1] + R[2]); - res.pt.y = static_cast(kp.pt.x * R[3] + kp.pt.y * R[4] + R[5]); - return res; - } -}; - -struct sortByR { bool operator()(const KeyPoint& kp1, const KeyPoint& kp2) { return norm(kp1.pt) < norm(kp2.pt); } }; - -template bool CV_DetectorsTest::testDetector(const Mat& img, const T& detector, vector& exp) -{ - vector orig_kpts; - detector(img, orig_kpts); - - typedef void (*TransfFunc )(const Mat&, Mat&, Mat& FransfFunc); - const TransfFunc transfFunc[] = { getRotation, getZoom, getBlur, getBrightness }; - //const string names[] = { "Rotation", "Zoom", "Blur", "Brightness" }; - const size_t case_num = sizeof(transfFunc)/sizeof(transfFunc[0]); - - vector affs(case_num); - vector new_imgs(case_num); - - vector< vector > new_kpts(case_num); - vector< vector > transf_kpts(case_num); - - //showOrig(img, orig_kpts); - for(size_t i = 0; i < case_num; ++i) - { - transfFunc[i](img, affs[i], new_imgs[i]); - detector(new_imgs[i], new_kpts[i]); - transform(orig_kpts.begin(), orig_kpts.end(), back_inserter(transf_kpts[i]), WrapPoint(affs[i])); - //show(names[i], new_imgs[i], new_kpts[i], transf_kpts[i]); - } - - const float thres = 3; - const float nthres = 3; - - vector result; - for(size_t i = 0; i < orig_kpts.size(); ++i) - { - const KeyPoint& okp = orig_kpts[i]; - int foundCounter = 0; - for(size_t j = 0; j < case_num; ++j) - { - const KeyPoint& tkp = transf_kpts[j][i]; - - size_t k = 0; - - for(; k < new_kpts[j].size(); ++k) - if (norm(new_kpts[j][k].pt - tkp.pt) < nthres && fabs(new_kpts[j][k].size - tkp.size) < thres) - break; - - if (k != new_kpts[j].size()) - ++foundCounter; - - } - if (foundCounter == (int)case_num) - result.push_back(okp); - } - - sort(result.begin(), result.end(), sortByR()); - sort(exp.begin(), exp.end(), sortByR()); - - if (result.size() != exp.size()) - { - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_TEST_DATA); - return false; - } - - int foundCounter1 = 0; - for(size_t i = 0; i < exp.size(); ++i) - { - const KeyPoint& e = exp[i]; - size_t j = 0; - for(; j < result.size(); ++j) - { - const KeyPoint& r = result[i]; - if (norm(r.pt-e.pt) < nthres && fabs(r.size - e.size) < thres) - break; - } - if (j != result.size()) - ++foundCounter1; - } - - int foundCounter2 = 0; - for(size_t i = 0; i < result.size(); ++i) - { - const KeyPoint& r = result[i]; - size_t j = 0; - for(; j < exp.size(); ++j) - { - const KeyPoint& e = exp[i]; - if (norm(r.pt-e.pt) < nthres && fabs(r.size - e.size) < thres) - break; - } - if (j != exp.size()) - ++foundCounter2; - } - //showOrig(img, result); waitKey(); - - const float errorRate = 0.9f; - if (float(foundCounter1)/exp.size() < errorRate || float(foundCounter2)/result.size() < errorRate) - { - ts->set_failed_test_info( cvtest::TS::FAIL_MISMATCH); - return false; - } - return true; -} - -struct SurfNoMaskWrap -{ - const SURF& detector; - SurfNoMaskWrap(const SURF& surf) : detector(surf) {} - SurfNoMaskWrap& operator=(const SurfNoMaskWrap&); - void operator()(const Mat& img, vector& kpts) const { detector(img, Mat(), kpts); } -}; - -void CV_DetectorsTest::LoadExpected(const string& file, vector& out) -{ - Mat mat_exp; - FileStorage fs(file, FileStorage::READ); - if (fs.isOpened()) - { - read( fs["ResultVectorData"], mat_exp, Mat() ); - out.resize(mat_exp.cols / sizeof(KeyPoint)); - copy(mat_exp.ptr(), mat_exp.ptr() + out.size(), out.begin()); - } - else - { - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA); - out.clear(); - } -} - -void CV_DetectorsTest::run( int /*start_from*/ ) -{ - Mat img = imread(string(ts->get_data_path()) + "shared/graffiti.png", 0); - - if (img.empty()) - { - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - - Mat to_test(img.size() * 2, img.type(), Scalar(0)); - Mat roi = to_test(Rect(img.rows/2, img.cols/2, img.cols, img.rows)); - img.copyTo(roi); - GaussianBlur(to_test, to_test, Size(3, 3), 1.5); - - vector exp; - LoadExpected(string(ts->get_data_path()) + "detectors/surf.xml", exp); - if (exp.empty()) - return; - - if (!testDetector(to_test, SurfNoMaskWrap(SURF(1536+512+512, 2)), exp)) - return; - - LoadExpected(string(ts->get_data_path()) + "detectors/star.xml", exp); - if (exp.empty()) - return; - - if (!testDetector(to_test, StarDetector(45, 30, 10, 8, 5), exp)) - return; - - ts->set_failed_test_info( cvtest::TS::OK); -} - - -TEST(Features2d_Detectors, regression) { CV_DetectorsTest test; test.safe_run(); } diff --git a/modules/nonfree/test/test_features2d.cpp b/modules/nonfree/test/test_features2d.cpp deleted file mode 100644 index 3cc5b47cf0..0000000000 --- a/modules/nonfree/test/test_features2d.cpp +++ /dev/null @@ -1,1224 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of Intel Corporation may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "test_precomp.hpp" -#include "opencv2/calib3d.hpp" - -using namespace std; -using namespace cv; - -const string FEATURES2D_DIR = "features2d"; -const string DETECTOR_DIR = FEATURES2D_DIR + "/feature_detectors"; -const string DESCRIPTOR_DIR = FEATURES2D_DIR + "/descriptor_extractors"; -const string IMAGE_FILENAME = "tsukuba.png"; - -/****************************************************************************************\ -* Regression tests for feature detectors comparing keypoints. * -\****************************************************************************************/ - -class CV_FeatureDetectorTest : public cvtest::BaseTest -{ -public: - CV_FeatureDetectorTest( const string& _name, const Ptr& _fdetector ) : - name(_name), fdetector(_fdetector) {} - -protected: - bool isSimilarKeypoints( const KeyPoint& p1, const KeyPoint& p2 ); - void compareKeypointSets( const vector& validKeypoints, const vector& calcKeypoints ); - - void emptyDataTest(); - void regressionTest(); // TODO test of detect() with mask - - virtual void run( int ); - - string name; - Ptr fdetector; -}; - -void CV_FeatureDetectorTest::emptyDataTest() -{ - // One image. - Mat image; - vector keypoints; - try - { - fdetector->detect( image, keypoints ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "detect() on empty image must not generate exception (1).\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - - if( !keypoints.empty() ) - { - ts->printf( cvtest::TS::LOG, "detect() on empty image must return empty keypoints vector (1).\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - return; - } - - // Several images. - vector images; - vector > keypointCollection; - try - { - fdetector->detect( images, keypointCollection ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "detect() on empty image vector must not generate exception (2).\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } -} - -bool CV_FeatureDetectorTest::isSimilarKeypoints( const KeyPoint& p1, const KeyPoint& p2 ) -{ - const float maxPtDif = 1.f; - const float maxSizeDif = 1.f; - const float maxAngleDif = 2.f; - const float maxResponseDif = 0.1f; - - float dist = (float)norm( p1.pt - p2.pt ); - return (dist < maxPtDif && - fabs(p1.size - p2.size) < maxSizeDif && - abs(p1.angle - p2.angle) < maxAngleDif && - abs(p1.response - p2.response) < maxResponseDif && - p1.octave == p2.octave && - p1.class_id == p2.class_id ); -} - -void CV_FeatureDetectorTest::compareKeypointSets( const vector& validKeypoints, const vector& calcKeypoints ) -{ - const float maxCountRatioDif = 0.01f; - - // Compare counts of validation and calculated keypoints. - float countRatio = (float)validKeypoints.size() / (float)calcKeypoints.size(); - if( countRatio < 1 - maxCountRatioDif || countRatio > 1.f + maxCountRatioDif ) - { - ts->printf( cvtest::TS::LOG, "Bad keypoints count ratio (validCount = %d, calcCount = %d).\n", - validKeypoints.size(), calcKeypoints.size() ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - return; - } - - int progress = 0, progressCount = (int)(validKeypoints.size() * calcKeypoints.size()); - int badPointCount = 0, commonPointCount = max((int)validKeypoints.size(), (int)calcKeypoints.size()); - for( size_t v = 0; v < validKeypoints.size(); v++ ) - { - int nearestIdx = -1; - float minDist = std::numeric_limits::max(); - - for( size_t c = 0; c < calcKeypoints.size(); c++ ) - { - progress = update_progress( progress, (int)(v*calcKeypoints.size() + c), progressCount, 0 ); - float curDist = (float)norm( calcKeypoints[c].pt - validKeypoints[v].pt ); - if( curDist < minDist ) - { - minDist = curDist; - nearestIdx = (int)c; - } - } - - assert( minDist >= 0 ); - if( !isSimilarKeypoints( validKeypoints[v], calcKeypoints[nearestIdx] ) ) - badPointCount++; - } - ts->printf( cvtest::TS::LOG, "badPointCount = %d; validPointCount = %d; calcPointCount = %d\n", - badPointCount, validKeypoints.size(), calcKeypoints.size() ); - if( badPointCount > 0.9 * commonPointCount ) - { - ts->printf( cvtest::TS::LOG, " - Bad accuracy!\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_BAD_ACCURACY ); - return; - } - ts->printf( cvtest::TS::LOG, " - OK\n" ); -} - -void CV_FeatureDetectorTest::regressionTest() -{ - assert( !fdetector.empty() ); - string imgFilename = string(ts->get_data_path()) + FEATURES2D_DIR + "/" + IMAGE_FILENAME; - string resFilename = string(ts->get_data_path()) + DETECTOR_DIR + "/" + string(name) + ".xml.gz"; - - // Read the test image. - Mat image = imread( imgFilename ); - if( image.empty() ) - { - ts->printf( cvtest::TS::LOG, "Image %s can not be read.\n", imgFilename.c_str() ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - - FileStorage fs( resFilename, FileStorage::READ ); - - // Compute keypoints. - vector calcKeypoints; - fdetector->detect( image, calcKeypoints ); - - if( fs.isOpened() ) // Compare computed and valid keypoints. - { - // TODO compare saved feature detector params with current ones - - // Read validation keypoints set. - vector validKeypoints; - read( fs["keypoints"], validKeypoints ); - if( validKeypoints.empty() ) - { - ts->printf( cvtest::TS::LOG, "Keypoints can not be read.\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - - compareKeypointSets( validKeypoints, calcKeypoints ); - } - else // Write detector parameters and computed keypoints as validation data. - { - fs.open( resFilename, FileStorage::WRITE ); - if( !fs.isOpened() ) - { - ts->printf( cvtest::TS::LOG, "File %s can not be opened to write.\n", resFilename.c_str() ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - else - { - fs << "detector_params" << "{"; - fdetector->write( fs ); - fs << "}"; - - write( fs, "keypoints", calcKeypoints ); - } - } -} - -void CV_FeatureDetectorTest::run( int /*start_from*/ ) -{ - if( !fdetector ) - { - ts->printf( cvtest::TS::LOG, "Feature detector is empty.\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - - emptyDataTest(); - regressionTest(); - - ts->set_failed_test_info( cvtest::TS::OK ); -} - -/****************************************************************************************\ -* Regression tests for descriptor extractors. * -\****************************************************************************************/ -static void writeMatInBin( const Mat& mat, const string& filename ) -{ - FILE* f = fopen( filename.c_str(), "wb"); - if( f ) - { - int type = mat.type(); - fwrite( (void*)&mat.rows, sizeof(int), 1, f ); - fwrite( (void*)&mat.cols, sizeof(int), 1, f ); - fwrite( (void*)&type, sizeof(int), 1, f ); - int dataSize = (int)(mat.step * mat.rows * mat.channels()); - fwrite( (void*)&dataSize, sizeof(int), 1, f ); - fwrite( (void*)mat.data, 1, dataSize, f ); - fclose(f); - } -} - -static Mat readMatFromBin( const string& filename ) -{ - FILE* f = fopen( filename.c_str(), "rb" ); - if( f ) - { - int rows, cols, type, dataSize; - size_t elements_read1 = fread( (void*)&rows, sizeof(int), 1, f ); - size_t elements_read2 = fread( (void*)&cols, sizeof(int), 1, f ); - size_t elements_read3 = fread( (void*)&type, sizeof(int), 1, f ); - size_t elements_read4 = fread( (void*)&dataSize, sizeof(int), 1, f ); - CV_Assert(elements_read1 == 1 && elements_read2 == 1 && elements_read3 == 1 && elements_read4 == 1); - - int step = dataSize / rows / CV_ELEM_SIZE(type); - CV_Assert(step >= cols); - - Mat m = Mat( rows, step, type).colRange(0, cols); - - size_t elements_read = fread( m.ptr(), 1, dataSize, f ); - CV_Assert(elements_read == (size_t)(dataSize)); - fclose(f); - - return m; - } - return Mat(); -} - -template -class CV_DescriptorExtractorTest : public cvtest::BaseTest -{ -public: - typedef typename Distance::ValueType ValueType; - typedef typename Distance::ResultType DistanceType; - - CV_DescriptorExtractorTest( const string _name, DistanceType _maxDist, const Ptr& _dextractor, - Distance d = Distance() ): - name(_name), maxDist(_maxDist), dextractor(_dextractor), distance(d) {} -protected: - virtual void createDescriptorExtractor() {} - - void compareDescriptors( const Mat& validDescriptors, const Mat& calcDescriptors ) - { - if( validDescriptors.size != calcDescriptors.size || validDescriptors.type() != calcDescriptors.type() ) - { - ts->printf(cvtest::TS::LOG, "Valid and computed descriptors matrices must have the same size and type.\n"); - ts->printf(cvtest::TS::LOG, "Valid size is (%d x %d) actual size is (%d x %d).\n", validDescriptors.rows, validDescriptors.cols, calcDescriptors.rows, calcDescriptors.cols); - ts->printf(cvtest::TS::LOG, "Valid type is %d actual type is %d.\n", validDescriptors.type(), calcDescriptors.type()); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - - CV_Assert( DataType::type == validDescriptors.type() ); - - int dimension = validDescriptors.cols; - DistanceType curMaxDist = std::numeric_limits::min(); - for( int y = 0; y < validDescriptors.rows; y++ ) - { - DistanceType dist = distance( validDescriptors.ptr(y), calcDescriptors.ptr(y), dimension ); - if( dist > curMaxDist ) - curMaxDist = dist; - } - - stringstream ss; - ss << "Max distance between valid and computed descriptors " << curMaxDist; - if( curMaxDist < maxDist ) - ss << "." << endl; - else - { - ss << ">" << maxDist << " - bad accuracy!"<< endl; - ts->set_failed_test_info( cvtest::TS::FAIL_BAD_ACCURACY ); - } - ts->printf(cvtest::TS::LOG, ss.str().c_str() ); - } - - void emptyDataTest() - { - assert( !dextractor.empty() ); - - // One image. - Mat image; - vector keypoints; - Mat descriptors; - - try - { - dextractor->compute( image, keypoints, descriptors ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "compute() on empty image and empty keypoints must not generate exception (1).\n"); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - } - - image.create( 50, 50, CV_8UC3 ); - try - { - dextractor->compute( image, keypoints, descriptors ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "compute() on nonempty image and empty keypoints must not generate exception (1).\n"); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - } - - // Several images. - vector images; - vector > keypointsCollection; - vector descriptorsCollection; - try - { - dextractor->compute( images, keypointsCollection, descriptorsCollection ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "compute() on empty images and empty keypoints collection must not generate exception (2).\n"); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - } - } - - void regressionTest() - { - assert( !dextractor.empty() ); - - // Read the test image. - string imgFilename = string(ts->get_data_path()) + FEATURES2D_DIR + "/" + IMAGE_FILENAME; - - Mat img = imread( imgFilename ); - if( img.empty() ) - { - ts->printf( cvtest::TS::LOG, "Image %s can not be read.\n", imgFilename.c_str() ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - - vector keypoints; - FileStorage fs( string(ts->get_data_path()) + FEATURES2D_DIR + "/keypoints.xml.gz", FileStorage::READ ); - if( fs.isOpened() ) - { - read( fs.getFirstTopLevelNode(), keypoints ); - - Mat calcDescriptors; - double t = (double)getTickCount(); - dextractor->compute( img, keypoints, calcDescriptors ); - t = getTickCount() - t; - ts->printf(cvtest::TS::LOG, "\nAverage time of computing one descriptor = %g ms.\n", t/((double)getTickFrequency()*1000.)/calcDescriptors.rows ); - - if( calcDescriptors.rows != (int)keypoints.size() ) - { - ts->printf( cvtest::TS::LOG, "Count of computed descriptors and keypoints count must be equal.\n" ); - ts->printf( cvtest::TS::LOG, "Count of keypoints is %d.\n", (int)keypoints.size() ); - ts->printf( cvtest::TS::LOG, "Count of computed descriptors is %d.\n", calcDescriptors.rows ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - return; - } - - if( calcDescriptors.cols != dextractor->descriptorSize() || calcDescriptors.type() != dextractor->descriptorType() ) - { - ts->printf( cvtest::TS::LOG, "Incorrect descriptor size or descriptor type.\n" ); - ts->printf( cvtest::TS::LOG, "Expected size is %d.\n", dextractor->descriptorSize() ); - ts->printf( cvtest::TS::LOG, "Calculated size is %d.\n", calcDescriptors.cols ); - ts->printf( cvtest::TS::LOG, "Expected type is %d.\n", dextractor->descriptorType() ); - ts->printf( cvtest::TS::LOG, "Calculated type is %d.\n", calcDescriptors.type() ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - return; - } - - // TODO read and write descriptor extractor parameters and check them - Mat validDescriptors = readDescriptors(); - if( !validDescriptors.empty() ) - compareDescriptors( validDescriptors, calcDescriptors ); - else - { - if( !writeDescriptors( calcDescriptors ) ) - { - ts->printf( cvtest::TS::LOG, "Descriptors can not be written.\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - } - } - else - { - ts->printf( cvtest::TS::LOG, "Compute and write keypoints.\n" ); - fs.open( string(ts->get_data_path()) + FEATURES2D_DIR + "/keypoints.xml.gz", FileStorage::WRITE ); - if( fs.isOpened() ) - { - SurfFeatureDetector fd; - fd.detect(img, keypoints); - write( fs, "keypoints", keypoints ); - } - else - { - ts->printf(cvtest::TS::LOG, "File for writting keypoints can not be opened.\n"); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - } - } - - void run(int) - { - createDescriptorExtractor(); - if( !dextractor ) - { - ts->printf(cvtest::TS::LOG, "Descriptor extractor is empty.\n"); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - - emptyDataTest(); - regressionTest(); - - ts->set_failed_test_info( cvtest::TS::OK ); - } - - virtual Mat readDescriptors() - { - Mat res = readMatFromBin( string(ts->get_data_path()) + DESCRIPTOR_DIR + "/" + string(name) ); - return res; - } - - virtual bool writeDescriptors( Mat& descs ) - { - writeMatInBin( descs, string(ts->get_data_path()) + DESCRIPTOR_DIR + "/" + string(name) ); - return true; - } - - string name; - const DistanceType maxDist; - Ptr dextractor; - Distance distance; - -private: - CV_DescriptorExtractorTest& operator=(const CV_DescriptorExtractorTest&) { return *this; } -}; - -/*template -class CV_CalonderDescriptorExtractorTest : public CV_DescriptorExtractorTest -{ -public: - CV_CalonderDescriptorExtractorTest( const char* testName, float _normDif, float _prevTime ) : - CV_DescriptorExtractorTest( testName, _normDif, Ptr(), _prevTime ) - {} - -protected: - virtual void createDescriptorExtractor() - { - CV_DescriptorExtractorTest::dextractor = - new CalonderDescriptorExtractor( string(CV_DescriptorExtractorTest::ts->get_data_path()) + - FEATURES2D_DIR + "/calonder_classifier.rtc"); - } -};*/ - -/****************************************************************************************\ -* Algorithmic tests for descriptor matchers * -\****************************************************************************************/ -class CV_DescriptorMatcherTest : public cvtest::BaseTest -{ -public: - CV_DescriptorMatcherTest( const string& _name, const Ptr& _dmatcher, float _badPart ) : - badPart(_badPart), name(_name), dmatcher(_dmatcher) - {} -protected: - static const int dim = 500; - static const int queryDescCount = 300; // must be even number because we split train data in some cases in two - static const int countFactor = 4; // do not change it - const float badPart; - - virtual void run( int ); - void generateData( Mat& query, Mat& train ); - - void emptyDataTest(); - void matchTest( const Mat& query, const Mat& train ); - void knnMatchTest( const Mat& query, const Mat& train ); - void radiusMatchTest( const Mat& query, const Mat& train ); - - string name; - Ptr dmatcher; - -private: - CV_DescriptorMatcherTest& operator=(const CV_DescriptorMatcherTest&) { return *this; } -}; - -void CV_DescriptorMatcherTest::emptyDataTest() -{ - assert( !dmatcher.empty() ); - Mat queryDescriptors, trainDescriptors, mask; - vector trainDescriptorCollection, masks; - vector matches; - vector > vmatches; - - try - { - dmatcher->match( queryDescriptors, trainDescriptors, matches, mask ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "match() on empty descriptors must not generate exception (1).\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - - try - { - dmatcher->knnMatch( queryDescriptors, trainDescriptors, vmatches, 2, mask ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "knnMatch() on empty descriptors must not generate exception (1).\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - - try - { - dmatcher->radiusMatch( queryDescriptors, trainDescriptors, vmatches, 10.f, mask ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "radiusMatch() on empty descriptors must not generate exception (1).\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - - try - { - dmatcher->add( trainDescriptorCollection ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "add() on empty descriptors must not generate exception.\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - - try - { - dmatcher->match( queryDescriptors, matches, masks ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "match() on empty descriptors must not generate exception (2).\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - - try - { - dmatcher->knnMatch( queryDescriptors, vmatches, 2, masks ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "knnMatch() on empty descriptors must not generate exception (2).\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - - try - { - dmatcher->radiusMatch( queryDescriptors, vmatches, 10.f, masks ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "radiusMatch() on empty descriptors must not generate exception (2).\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - -} - -void CV_DescriptorMatcherTest::generateData( Mat& query, Mat& train ) -{ - RNG& rng = theRNG(); - - // Generate query descriptors randomly. - // Descriptor vector elements are integer values. - Mat buf( queryDescCount, dim, CV_32SC1 ); - rng.fill( buf, RNG::UNIFORM, Scalar::all(0), Scalar(3) ); - buf.convertTo( query, CV_32FC1 ); - - // Generate train decriptors as follows: - // copy each query descriptor to train set countFactor times - // and perturb some one element of the copied descriptors in - // in ascending order. General boundaries of the perturbation - // are (0.f, 1.f). - train.create( query.rows*countFactor, query.cols, CV_32FC1 ); - float step = 1.f / countFactor; - for( int qIdx = 0; qIdx < query.rows; qIdx++ ) - { - Mat queryDescriptor = query.row(qIdx); - for( int c = 0; c < countFactor; c++ ) - { - int tIdx = qIdx * countFactor + c; - Mat trainDescriptor = train.row(tIdx); - queryDescriptor.copyTo( trainDescriptor ); - int elem = rng(dim); - float diff = rng.uniform( step*c, step*(c+1) ); - trainDescriptor.at(0, elem) += diff; - } - } -} - -void CV_DescriptorMatcherTest::matchTest( const Mat& query, const Mat& train ) -{ - dmatcher->clear(); - - // test const version of match() - { - vector matches; - dmatcher->match( query, train, matches ); - - if( (int)matches.size() != queryDescCount ) - { - ts->printf(cvtest::TS::LOG, "Incorrect matches count while test match() function (1).\n"); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - else - { - int badCount = 0; - for( size_t i = 0; i < matches.size(); i++ ) - { - DMatch match = matches[i]; - if( (match.queryIdx != (int)i) || (match.trainIdx != (int)i*countFactor) || (match.imgIdx != 0) ) - badCount++; - } - if( (float)badCount > (float)queryDescCount*badPart ) - { - ts->printf( cvtest::TS::LOG, "%f - too large bad matches part while test match() function (1).\n", - (float)badCount/(float)queryDescCount ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - } - } - - // test version of match() with add() - { - vector matches; - // make add() twice to test such case - dmatcher->add( vector(1,train.rowRange(0, train.rows/2)) ); - dmatcher->add( vector(1,train.rowRange(train.rows/2, train.rows)) ); - // prepare masks (make first nearest match illegal) - vector masks(2); - for(int mi = 0; mi < 2; mi++ ) - { - masks[mi] = Mat(query.rows, train.rows/2, CV_8UC1, Scalar::all(1)); - for( int di = 0; di < queryDescCount/2; di++ ) - masks[mi].col(di*countFactor).setTo(Scalar::all(0)); - } - - dmatcher->match( query, matches, masks ); - - if( (int)matches.size() != queryDescCount ) - { - ts->printf(cvtest::TS::LOG, "Incorrect matches count while test match() function (2).\n"); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - else - { - int badCount = 0; - for( size_t i = 0; i < matches.size(); i++ ) - { - DMatch match = matches[i]; - int shift = dmatcher->isMaskSupported() ? 1 : 0; - { - if( i < queryDescCount/2 ) - { - if( (match.queryIdx != (int)i) || (match.trainIdx != (int)i*countFactor + shift) || (match.imgIdx != 0) ) - badCount++; - } - else - { - if( (match.queryIdx != (int)i) || (match.trainIdx != ((int)i-queryDescCount/2)*countFactor + shift) || (match.imgIdx != 1) ) - badCount++; - } - } - } - if( (float)badCount > (float)queryDescCount*badPart ) - { - ts->printf( cvtest::TS::LOG, "%f - too large bad matches part while test match() function (2).\n", - (float)badCount/(float)queryDescCount ); - ts->set_failed_test_info( cvtest::TS::FAIL_BAD_ACCURACY ); - } - } - } -} - -void CV_DescriptorMatcherTest::knnMatchTest( const Mat& query, const Mat& train ) -{ - dmatcher->clear(); - - // test const version of knnMatch() - { - const int knn = 3; - - vector > matches; - dmatcher->knnMatch( query, train, matches, knn ); - - if( (int)matches.size() != queryDescCount ) - { - ts->printf(cvtest::TS::LOG, "Incorrect matches count while test knnMatch() function (1).\n"); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - else - { - int badCount = 0; - for( size_t i = 0; i < matches.size(); i++ ) - { - if( (int)matches[i].size() != knn ) - badCount++; - else - { - int localBadCount = 0; - for( int k = 0; k < knn; k++ ) - { - DMatch match = matches[i][k]; - if( (match.queryIdx != (int)i) || (match.trainIdx != (int)i*countFactor+k) || (match.imgIdx != 0) ) - localBadCount++; - } - badCount += localBadCount > 0 ? 1 : 0; - } - } - if( (float)badCount > (float)queryDescCount*badPart ) - { - ts->printf( cvtest::TS::LOG, "%f - too large bad matches part while test knnMatch() function (1).\n", - (float)badCount/(float)queryDescCount ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - } - } - - // test version of knnMatch() with add() - { - const int knn = 2; - vector > matches; - // make add() twice to test such case - dmatcher->add( vector(1,train.rowRange(0, train.rows/2)) ); - dmatcher->add( vector(1,train.rowRange(train.rows/2, train.rows)) ); - // prepare masks (make first nearest match illegal) - vector masks(2); - for(int mi = 0; mi < 2; mi++ ) - { - masks[mi] = Mat(query.rows, train.rows/2, CV_8UC1, Scalar::all(1)); - for( int di = 0; di < queryDescCount/2; di++ ) - masks[mi].col(di*countFactor).setTo(Scalar::all(0)); - } - - dmatcher->knnMatch( query, matches, knn, masks ); - - if( (int)matches.size() != queryDescCount ) - { - ts->printf(cvtest::TS::LOG, "Incorrect matches count while test knnMatch() function (2).\n"); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - else - { - int badCount = 0; - int shift = dmatcher->isMaskSupported() ? 1 : 0; - for( size_t i = 0; i < matches.size(); i++ ) - { - if( (int)matches[i].size() != knn ) - badCount++; - else - { - int localBadCount = 0; - for( int k = 0; k < knn; k++ ) - { - DMatch match = matches[i][k]; - { - if( i < queryDescCount/2 ) - { - if( (match.queryIdx != (int)i) || (match.trainIdx != (int)i*countFactor + k + shift) || - (match.imgIdx != 0) ) - localBadCount++; - } - else - { - if( (match.queryIdx != (int)i) || (match.trainIdx != ((int)i-queryDescCount/2)*countFactor + k + shift) || - (match.imgIdx != 1) ) - localBadCount++; - } - } - } - badCount += localBadCount > 0 ? 1 : 0; - } - } - if( (float)badCount > (float)queryDescCount*badPart ) - { - ts->printf( cvtest::TS::LOG, "%f - too large bad matches part while test knnMatch() function (2).\n", - (float)badCount/(float)queryDescCount ); - ts->set_failed_test_info( cvtest::TS::FAIL_BAD_ACCURACY ); - } - } - } -} - -void CV_DescriptorMatcherTest::radiusMatchTest( const Mat& query, const Mat& train ) -{ - dmatcher->clear(); - // test const version of match() - { - const float radius = 1.f/countFactor; - vector > matches; - dmatcher->radiusMatch( query, train, matches, radius ); - - if( (int)matches.size() != queryDescCount ) - { - ts->printf(cvtest::TS::LOG, "Incorrect matches count while test radiusMatch() function (1).\n"); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - else - { - int badCount = 0; - for( size_t i = 0; i < matches.size(); i++ ) - { - if( (int)matches[i].size() != 1 ) - badCount++; - else - { - DMatch match = matches[i][0]; - if( (match.queryIdx != (int)i) || (match.trainIdx != (int)i*countFactor) || (match.imgIdx != 0) ) - badCount++; - } - } - if( (float)badCount > (float)queryDescCount*badPart ) - { - ts->printf( cvtest::TS::LOG, "%f - too large bad matches part while test radiusMatch() function (1).\n", - (float)badCount/(float)queryDescCount ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - } - } - - // test version of match() with add() - { - int n = 3; - const float radius = 1.f/countFactor * n; - vector > matches; - // make add() twice to test such case - dmatcher->add( vector(1,train.rowRange(0, train.rows/2)) ); - dmatcher->add( vector(1,train.rowRange(train.rows/2, train.rows)) ); - // prepare masks (make first nearest match illegal) - vector masks(2); - for(int mi = 0; mi < 2; mi++ ) - { - masks[mi] = Mat(query.rows, train.rows/2, CV_8UC1, Scalar::all(1)); - for( int di = 0; di < queryDescCount/2; di++ ) - masks[mi].col(di*countFactor).setTo(Scalar::all(0)); - } - - dmatcher->radiusMatch( query, matches, radius, masks ); - - //int curRes = cvtest::TS::OK; - if( (int)matches.size() != queryDescCount ) - { - ts->printf(cvtest::TS::LOG, "Incorrect matches count while test radiusMatch() function (1).\n"); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - - int badCount = 0; - int shift = dmatcher->isMaskSupported() ? 1 : 0; - int needMatchCount = dmatcher->isMaskSupported() ? n-1 : n; - for( size_t i = 0; i < matches.size(); i++ ) - { - if( (int)matches[i].size() != needMatchCount ) - badCount++; - else - { - int localBadCount = 0; - for( int k = 0; k < needMatchCount; k++ ) - { - DMatch match = matches[i][k]; - { - if( i < queryDescCount/2 ) - { - if( (match.queryIdx != (int)i) || (match.trainIdx != (int)i*countFactor + k + shift) || - (match.imgIdx != 0) ) - localBadCount++; - } - else - { - if( (match.queryIdx != (int)i) || (match.trainIdx != ((int)i-queryDescCount/2)*countFactor + k + shift) || - (match.imgIdx != 1) ) - localBadCount++; - } - } - } - badCount += localBadCount > 0 ? 1 : 0; - } - } - if( (float)badCount > (float)queryDescCount*badPart ) - { - ts->printf( cvtest::TS::LOG, "%f - too large bad matches part while test radiusMatch() function (2).\n", - (float)badCount/(float)queryDescCount ); - ts->set_failed_test_info( cvtest::TS::FAIL_BAD_ACCURACY ); - } - } -} - -void CV_DescriptorMatcherTest::run( int ) -{ - Mat query, train; - generateData( query, train ); - - matchTest( query, train ); - - knnMatchTest( query, train ); - - radiusMatchTest( query, train ); -} - -/****************************************************************************************\ -* Tests registrations * -\****************************************************************************************/ - -/* - * Detectors - */ - - -TEST( Features2d_Detector_SIFT, regression ) -{ - CV_FeatureDetectorTest test( "detector-sift", FeatureDetector::create("SIFT") ); - test.safe_run(); -} - -TEST( Features2d_Detector_SURF, regression ) -{ - CV_FeatureDetectorTest test( "detector-surf", FeatureDetector::create("SURF") ); - test.safe_run(); -} - -/* - * Descriptors - */ -TEST( Features2d_DescriptorExtractor_SIFT, regression ) -{ - CV_DescriptorExtractorTest > test( "descriptor-sift", 0.03f, - DescriptorExtractor::create("SIFT") ); - test.safe_run(); -} - -TEST( Features2d_DescriptorExtractor_SURF, regression ) -{ - CV_DescriptorExtractorTest > test( "descriptor-surf", 0.05f, - DescriptorExtractor::create("SURF") ); - test.safe_run(); -} - -TEST( Features2d_DescriptorExtractor_OpponentSIFT, regression ) -{ - CV_DescriptorExtractorTest > test( "descriptor-opponent-sift", 0.18f, - DescriptorExtractor::create("OpponentSIFT") ); - test.safe_run(); -} - -TEST( Features2d_DescriptorExtractor_OpponentSURF, regression ) -{ - CV_DescriptorExtractorTest > test( "descriptor-opponent-surf", 0.3f, - DescriptorExtractor::create("OpponentSURF") ); - test.safe_run(); -} - -/*#if CV_SSE2 -TEST( Features2d_DescriptorExtractor_Calonder_uchar, regression ) -{ - CV_CalonderDescriptorExtractorTest > test( "descriptor-calonder-uchar", - std::numeric_limits::epsilon() + 1, - 0.0132175f ); - test.safe_run(); -} - -TEST( Features2d_DescriptorExtractor_Calonder_float, regression ) -{ - CV_CalonderDescriptorExtractorTest > test( "descriptor-calonder-float", - std::numeric_limits::epsilon(), - 0.0221308f ); - test.safe_run(); -} -#endif*/ // CV_SSE2 - -TEST(Features2d_BruteForceDescriptorMatcher_knnMatch, regression) -{ - const int sz = 100; - const int k = 3; - - Ptr ext = DescriptorExtractor::create("SURF"); - ASSERT_TRUE(ext != NULL); - - Ptr det = FeatureDetector::create("SURF"); - //"%YAML:1.0\nhessianThreshold: 8000.\noctaves: 3\noctaveLayers: 4\nupright: 0\n" - ASSERT_TRUE(det != NULL); - - Ptr matcher = DescriptorMatcher::create("BruteForce"); - ASSERT_TRUE(matcher != NULL); - - Mat imgT(sz, sz, CV_8U, Scalar(255)); - line(imgT, Point(20, sz/2), Point(sz-21, sz/2), Scalar(100), 2); - line(imgT, Point(sz/2, 20), Point(sz/2, sz-21), Scalar(100), 2); - vector kpT; - kpT.push_back( KeyPoint(50, 50, 16, 0, 20000, 1, -1) ); - kpT.push_back( KeyPoint(42, 42, 16, 160, 10000, 1, -1) ); - Mat descT; - ext->compute(imgT, kpT, descT); - - Mat imgQ(sz, sz, CV_8U, Scalar(255)); - line(imgQ, Point(30, sz/2), Point(sz-31, sz/2), Scalar(100), 3); - line(imgQ, Point(sz/2, 30), Point(sz/2, sz-31), Scalar(100), 3); - vector kpQ; - det->detect(imgQ, kpQ); - Mat descQ; - ext->compute(imgQ, kpQ, descQ); - - vector > matches; - - matcher->knnMatch(descQ, descT, matches, k); - - //cout << "\nBest " << k << " matches to " << descT.rows << " train desc-s." << endl; - ASSERT_EQ(descQ.rows, static_cast(matches.size())); - for(size_t i = 0; i(matches[i].size())); - for(size_t j = 0; j " << matches[i][j].trainIdx << endl; - ASSERT_EQ(matches[i][j].queryIdx, static_cast(i)); - } - } -} - -/*TEST(Features2d_DescriptorExtractorParamTest, regression) -{ - Ptr s = DescriptorExtractor::create("SURF"); - ASSERT_STREQ(s->paramHelp("extended").c_str(), ""); -} -*/ - -class CV_DetectPlanarTest : public cvtest::BaseTest -{ -public: - CV_DetectPlanarTest(const string& _fname, int _min_ninliers) : fname(_fname), min_ninliers(_min_ninliers) {} - -protected: - void run(int) - { - Ptr f = Algorithm::create("Feature2D." + fname); - if(!f) - return; - string path = string(ts->get_data_path()) + "detectors_descriptors_evaluation/planar/"; - string imgname1 = path + "box.png"; - string imgname2 = path + "box_in_scene.png"; - Mat img1 = imread(imgname1, 0); - Mat img2 = imread(imgname2, 0); - if( img1.empty() || img2.empty() ) - { - ts->printf( cvtest::TS::LOG, "missing %s and/or %s\n", imgname1.c_str(), imgname2.c_str()); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - vector kpt1, kpt2; - Mat d1, d2; - f->operator()(img1, Mat(), kpt1, d1); - f->operator()(img1, Mat(), kpt2, d2); - for( size_t i = 0; i < kpt1.size(); i++ ) - CV_Assert(kpt1[i].response > 0 ); - for( size_t i = 0; i < kpt2.size(); i++ ) - CV_Assert(kpt2[i].response > 0 ); - - vector matches; - BFMatcher(f->defaultNorm(), true).match(d1, d2, matches); - - vector pt1, pt2; - for( size_t i = 0; i < matches.size(); i++ ) { - pt1.push_back(kpt1[matches[i].queryIdx].pt); - pt2.push_back(kpt2[matches[i].trainIdx].pt); - } - - Mat inliers, H = findHomography(pt1, pt2, RANSAC, 10, inliers); - int ninliers = countNonZero(inliers); - - if( ninliers < min_ninliers ) - { - ts->printf( cvtest::TS::LOG, "too little inliers (%d) vs expected %d\n", ninliers, min_ninliers); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - } - - string fname; - int min_ninliers; -}; - -TEST(Features2d_SIFTHomographyTest, regression) { CV_DetectPlanarTest test("SIFT", 80); test.safe_run(); } -TEST(Features2d_SURFHomographyTest, regression) { CV_DetectPlanarTest test("SURF", 80); test.safe_run(); } - -class FeatureDetectorUsingMaskTest : public cvtest::BaseTest -{ -public: - FeatureDetectorUsingMaskTest(const Ptr& featureDetector) : - featureDetector_(featureDetector) - { - CV_Assert(featureDetector_); - } - -protected: - - void run(int) - { - const int nStepX = 2; - const int nStepY = 2; - - const string imageFilename = string(ts->get_data_path()) + "/features2d/tsukuba.png"; - - Mat image = imread(imageFilename); - if(image.empty()) - { - ts->printf(cvtest::TS::LOG, "Image %s can not be read.\n", imageFilename.c_str()); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_TEST_DATA); - return; - } - - Mat mask(image.size(), CV_8U); - - const int stepX = image.size().width / nStepX; - const int stepY = image.size().height / nStepY; - - vector keyPoints; - vector points; - for(int i=0; idetect(image, keyPoints, mask); - KeyPoint::convert(keyPoints, points); - - for(size_t k=0; kprintf(cvtest::TS::LOG, "The feature point is outside of the mask."); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_OUTPUT); - return; - } - } - } - - ts->set_failed_test_info( cvtest::TS::OK ); - } - - Ptr featureDetector_; -}; - -TEST(Features2d_SIFT_using_mask, regression) -{ - FeatureDetectorUsingMaskTest test(Algorithm::create("Feature2D.SIFT")); - test.safe_run(); -} - -TEST(DISABLED_Features2d_SURF_using_mask, regression) -{ - FeatureDetectorUsingMaskTest test(Algorithm::create("Feature2D.SURF")); - test.safe_run(); -} diff --git a/modules/nonfree/test/test_keypoints.cpp b/modules/nonfree/test/test_keypoints.cpp deleted file mode 100644 index b046d7534c..0000000000 --- a/modules/nonfree/test/test_keypoints.cpp +++ /dev/null @@ -1,132 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of Intel Corporation may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "test_precomp.hpp" -#include "opencv2/highgui.hpp" - -using namespace std; -using namespace cv; - -const string FEATURES2D_DIR = "features2d"; -const string IMAGE_FILENAME = "tsukuba.png"; - -/****************************************************************************************\ -* Test for KeyPoint * -\****************************************************************************************/ - -class CV_FeatureDetectorKeypointsTest : public cvtest::BaseTest -{ -public: - CV_FeatureDetectorKeypointsTest(const Ptr& _detector) : - detector(_detector) {} - -protected: - virtual void run(int) - { - cv::initModule_features2d(); - CV_Assert(detector); - string imgFilename = string(ts->get_data_path()) + FEATURES2D_DIR + "/" + IMAGE_FILENAME; - - // Read the test image. - Mat image = imread(imgFilename); - if(image.empty()) - { - ts->printf(cvtest::TS::LOG, "Image %s can not be read.\n", imgFilename.c_str()); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_TEST_DATA); - return; - } - - vector keypoints; - detector->detect(image, keypoints); - - if(keypoints.empty()) - { - ts->printf(cvtest::TS::LOG, "Detector can't find keypoints in image.\n"); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_OUTPUT); - return; - } - - Rect r(0, 0, image.cols, image.rows); - for(size_t i = 0; i < keypoints.size(); i++) - { - const KeyPoint& kp = keypoints[i]; - - if(!r.contains(kp.pt)) - { - ts->printf(cvtest::TS::LOG, "KeyPoint::pt is out of image (x=%f, y=%f).\n", kp.pt.x, kp.pt.y); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_OUTPUT); - return; - } - - if(kp.size <= 0.f) - { - ts->printf(cvtest::TS::LOG, "KeyPoint::size is not positive (%f).\n", kp.size); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_OUTPUT); - return; - } - - if((kp.angle < 0.f && kp.angle != -1.f) || kp.angle >= 360.f) - { - ts->printf(cvtest::TS::LOG, "KeyPoint::angle is out of range [0, 360). It's %f.\n", kp.angle); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_OUTPUT); - return; - } - } - ts->set_failed_test_info(cvtest::TS::OK); - } - - Ptr detector; -}; - - -// Registration of tests - -TEST(Features2d_Detector_Keypoints_SURF, validation) -{ - CV_FeatureDetectorKeypointsTest test(Algorithm::create("Feature2D.SURF")); - test.safe_run(); -} - -TEST(Features2d_Detector_Keypoints_SIFT, validation) -{ - CV_FeatureDetectorKeypointsTest test(FeatureDetector::create("SIFT")); - test.safe_run(); -} diff --git a/modules/nonfree/test/test_main.cpp b/modules/nonfree/test/test_main.cpp deleted file mode 100644 index 6b24993447..0000000000 --- a/modules/nonfree/test/test_main.cpp +++ /dev/null @@ -1,3 +0,0 @@ -#include "test_precomp.hpp" - -CV_TEST_MAIN("cv") diff --git a/modules/nonfree/test/test_precomp.hpp b/modules/nonfree/test/test_precomp.hpp deleted file mode 100644 index ba289b17c4..0000000000 --- a/modules/nonfree/test/test_precomp.hpp +++ /dev/null @@ -1,32 +0,0 @@ -#ifdef __GNUC__ -# pragma GCC diagnostic ignored "-Wmissing-declarations" -# if defined __clang__ || defined __APPLE__ -# pragma GCC diagnostic ignored "-Wmissing-prototypes" -# pragma GCC diagnostic ignored "-Wextra" -# endif -#endif - -#ifndef __OPENCV_TEST_PRECOMP_HPP__ -#define __OPENCV_TEST_PRECOMP_HPP__ - -#include -#include "opencv2/ts.hpp" -#include "opencv2/ts/cuda_test.hpp" -#include "opencv2/imgproc.hpp" -#include "opencv2/highgui.hpp" -#include "opencv2/nonfree.hpp" - -#include "opencv2/ts/cuda_test.hpp" - -#include "opencv2/opencv_modules.hpp" -#include "cvconfig.h" - -#ifdef HAVE_OPENCV_OCL -# include "opencv2/nonfree/ocl.hpp" -#endif - -#ifdef HAVE_CUDA -# include "opencv2/nonfree/cuda.hpp" -#endif - -#endif diff --git a/modules/nonfree/test/test_rotation_and_scale_invariance.cpp b/modules/nonfree/test/test_rotation_and_scale_invariance.cpp deleted file mode 100644 index 47efc60eb8..0000000000 --- a/modules/nonfree/test/test_rotation_and_scale_invariance.cpp +++ /dev/null @@ -1,710 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of Intel Corporation may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "test_precomp.hpp" -#include "opencv2/highgui.hpp" - -using namespace std; -using namespace cv; - -const string IMAGE_TSUKUBA = "/features2d/tsukuba.png"; -const string IMAGE_BIKES = "/detectors_descriptors_evaluation/images_datasets/bikes/img1.png"; - -#define SHOW_DEBUG_LOG 0 - -static -Mat generateHomography(float angle) -{ - // angle - rotation around Oz in degrees - float angleRadian = static_cast(angle * CV_PI / 180); - Mat H = Mat::eye(3, 3, CV_32FC1); - H.at(0,0) = H.at(1,1) = std::cos(angleRadian); - H.at(0,1) = -std::sin(angleRadian); - H.at(1,0) = std::sin(angleRadian); - - return H; -} - -static -Mat rotateImage(const Mat& srcImage, float angle, Mat& dstImage, Mat& dstMask) -{ - // angle - rotation around Oz in degrees - float diag = std::sqrt(static_cast(srcImage.cols * srcImage.cols + srcImage.rows * srcImage.rows)); - Mat LUShift = Mat::eye(3, 3, CV_32FC1); // left up - LUShift.at(0,2) = static_cast(-srcImage.cols/2); - LUShift.at(1,2) = static_cast(-srcImage.rows/2); - Mat RDShift = Mat::eye(3, 3, CV_32FC1); // right down - RDShift.at(0,2) = diag/2; - RDShift.at(1,2) = diag/2; - Size sz(cvRound(diag), cvRound(diag)); - - Mat srcMask(srcImage.size(), CV_8UC1, Scalar(255)); - - Mat H = RDShift * generateHomography(angle) * LUShift; - warpPerspective(srcImage, dstImage, H, sz); - warpPerspective(srcMask, dstMask, H, sz); - - return H; -} - -void rotateKeyPoints(const vector& src, const Mat& H, float angle, vector& dst) -{ - // suppose that H is rotation given from rotateImage() and angle has value passed to rotateImage() - vector srcCenters, dstCenters; - KeyPoint::convert(src, srcCenters); - - perspectiveTransform(srcCenters, dstCenters, H); - - dst = src; - for(size_t i = 0; i < dst.size(); i++) - { - dst[i].pt = dstCenters[i]; - float dstAngle = src[i].angle + angle; - if(dstAngle >= 360.f) - dstAngle -= 360.f; - dst[i].angle = dstAngle; - } -} - -void scaleKeyPoints(const vector& src, vector& dst, float scale) -{ - dst.resize(src.size()); - for(size_t i = 0; i < src.size(); i++) - dst[i] = KeyPoint(src[i].pt.x * scale, src[i].pt.y * scale, src[i].size * scale, src[i].angle); -} - -static -float calcCirclesIntersectArea(const Point2f& p0, float r0, const Point2f& p1, float r1) -{ - float c = static_cast(norm(p0 - p1)), sqr_c = c * c; - - float sqr_r0 = r0 * r0; - float sqr_r1 = r1 * r1; - - if(r0 + r1 <= c) - return 0; - - float minR = std::min(r0, r1); - float maxR = std::max(r0, r1); - if(c + minR <= maxR) - return static_cast(CV_PI * minR * minR); - - float cos_halfA0 = (sqr_r0 + sqr_c - sqr_r1) / (2 * r0 * c); - float cos_halfA1 = (sqr_r1 + sqr_c - sqr_r0) / (2 * r1 * c); - - float A0 = 2 * acos(cos_halfA0); - float A1 = 2 * acos(cos_halfA1); - - return 0.5f * sqr_r0 * (A0 - sin(A0)) + - 0.5f * sqr_r1 * (A1 - sin(A1)); -} - -static -float calcIntersectRatio(const Point2f& p0, float r0, const Point2f& p1, float r1) -{ - float intersectArea = calcCirclesIntersectArea(p0, r0, p1, r1); - float unionArea = static_cast(CV_PI) * (r0 * r0 + r1 * r1) - intersectArea; - return intersectArea / unionArea; -} - -static -void matchKeyPoints(const vector& keypoints0, const Mat& H, - const vector& keypoints1, - vector& matches) -{ - vector points0; - KeyPoint::convert(keypoints0, points0); - Mat points0t; - if(H.empty()) - points0t = Mat(points0); - else - perspectiveTransform(Mat(points0), points0t, H); - - matches.clear(); - vector usedMask(keypoints1.size(), 0); - for(int i0 = 0; i0 < static_cast(keypoints0.size()); i0++) - { - int nearestPointIndex = -1; - float maxIntersectRatio = 0.f; - const float r0 = 0.5f * keypoints0[i0].size; - for(size_t i1 = 0; i1 < keypoints1.size(); i1++) - { - if(nearestPointIndex >= 0 && usedMask[i1]) - continue; - - float r1 = 0.5f * keypoints1[i1].size; - float intersectRatio = calcIntersectRatio(points0t.at(i0), r0, - keypoints1[i1].pt, r1); - if(intersectRatio > maxIntersectRatio) - { - maxIntersectRatio = intersectRatio; - nearestPointIndex = static_cast(i1); - } - } - - matches.push_back(DMatch(i0, nearestPointIndex, maxIntersectRatio)); - if(nearestPointIndex >= 0) - usedMask[nearestPointIndex] = 1; - } -} - -static void removeVerySmallKeypoints(vector& keypoints) -{ - size_t i, j = 0, n = keypoints.size(); - for( i = 0; i < n; i++ ) - { - if( (keypoints[i].octave & 128) != 0 ) - ; - else - keypoints[j++] = keypoints[i]; - } - keypoints.resize(j); -} - - -class DetectorRotationInvarianceTest : public cvtest::BaseTest -{ -public: - DetectorRotationInvarianceTest(const Ptr& _featureDetector, - float _minKeyPointMatchesRatio, - float _minAngleInliersRatio) : - featureDetector(_featureDetector), - minKeyPointMatchesRatio(_minKeyPointMatchesRatio), - minAngleInliersRatio(_minAngleInliersRatio) - { - CV_Assert(featureDetector); - } - -protected: - - void run(int) - { - const string imageFilename = string(ts->get_data_path()) + IMAGE_TSUKUBA; - - // Read test data - Mat image0 = imread(imageFilename), image1, mask1; - if(image0.empty()) - { - ts->printf(cvtest::TS::LOG, "Image %s can not be read.\n", imageFilename.c_str()); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_TEST_DATA); - return; - } - - vector keypoints0; - featureDetector->detect(image0, keypoints0); - removeVerySmallKeypoints(keypoints0); - if(keypoints0.size() < 15) - CV_Error(Error::StsAssert, "Detector gives too few points in a test image\n"); - - const int maxAngle = 360, angleStep = 15; - for(int angle = 0; angle < maxAngle; angle += angleStep) - { - Mat H = rotateImage(image0, static_cast(angle), image1, mask1); - - vector keypoints1; - featureDetector->detect(image1, keypoints1, mask1); - removeVerySmallKeypoints(keypoints1); - - vector matches; - matchKeyPoints(keypoints0, H, keypoints1, matches); - - int angleInliersCount = 0; - - const float minIntersectRatio = 0.5f; - int keyPointMatchesCount = 0; - for(size_t m = 0; m < matches.size(); m++) - { - if(matches[m].distance < minIntersectRatio) - continue; - - keyPointMatchesCount++; - - // Check does this inlier have consistent angles - const float maxAngleDiff = 15.f; // grad - float angle0 = keypoints0[matches[m].queryIdx].angle; - float angle1 = keypoints1[matches[m].trainIdx].angle; - if(angle0 == -1 || angle1 == -1) - CV_Error(Error::StsBadArg, "Given FeatureDetector is not rotation invariant, it can not be tested here.\n"); - CV_Assert(angle0 >= 0.f && angle0 < 360.f); - CV_Assert(angle1 >= 0.f && angle1 < 360.f); - - float rotAngle0 = angle0 + angle; - if(rotAngle0 >= 360.f) - rotAngle0 -= 360.f; - - float angleDiff = std::max(rotAngle0, angle1) - std::min(rotAngle0, angle1); - angleDiff = std::min(angleDiff, static_cast(360.f - angleDiff)); - CV_Assert(angleDiff >= 0.f); - bool isAngleCorrect = angleDiff < maxAngleDiff; - if(isAngleCorrect) - angleInliersCount++; - } - - float keyPointMatchesRatio = static_cast(keyPointMatchesCount) / keypoints0.size(); - if(keyPointMatchesRatio < minKeyPointMatchesRatio) - { - ts->printf(cvtest::TS::LOG, "Incorrect keyPointMatchesRatio: curr = %f, min = %f.\n", - keyPointMatchesRatio, minKeyPointMatchesRatio); - ts->set_failed_test_info(cvtest::TS::FAIL_BAD_ACCURACY); - return; - } - - if(keyPointMatchesCount) - { - float angleInliersRatio = static_cast(angleInliersCount) / keyPointMatchesCount; - if(angleInliersRatio < minAngleInliersRatio) - { - ts->printf(cvtest::TS::LOG, "Incorrect angleInliersRatio: curr = %f, min = %f.\n", - angleInliersRatio, minAngleInliersRatio); - ts->set_failed_test_info(cvtest::TS::FAIL_BAD_ACCURACY); - return; - } - } -#if SHOW_DEBUG_LOG - std::cout << "keyPointMatchesRatio - " << keyPointMatchesRatio - << " - angleInliersRatio " << static_cast(angleInliersCount) / keyPointMatchesCount << std::endl; -#endif - } - ts->set_failed_test_info( cvtest::TS::OK ); - } - - Ptr featureDetector; - float minKeyPointMatchesRatio; - float minAngleInliersRatio; -}; - -class DescriptorRotationInvarianceTest : public cvtest::BaseTest -{ -public: - DescriptorRotationInvarianceTest(const Ptr& _featureDetector, - const Ptr& _descriptorExtractor, - int _normType, - float _minDescInliersRatio) : - featureDetector(_featureDetector), - descriptorExtractor(_descriptorExtractor), - normType(_normType), - minDescInliersRatio(_minDescInliersRatio) - { - CV_Assert(featureDetector); - CV_Assert(descriptorExtractor); - } - -protected: - - void run(int) - { - const string imageFilename = string(ts->get_data_path()) + IMAGE_TSUKUBA; - - // Read test data - Mat image0 = imread(imageFilename), image1, mask1; - if(image0.empty()) - { - ts->printf(cvtest::TS::LOG, "Image %s can not be read.\n", imageFilename.c_str()); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_TEST_DATA); - return; - } - - vector keypoints0; - Mat descriptors0; - featureDetector->detect(image0, keypoints0); - removeVerySmallKeypoints(keypoints0); - if(keypoints0.size() < 15) - CV_Error(Error::StsAssert, "Detector gives too few points in a test image\n"); - descriptorExtractor->compute(image0, keypoints0, descriptors0); - - BFMatcher bfmatcher(normType); - - const float minIntersectRatio = 0.5f; - const int maxAngle = 360, angleStep = 15; - for(int angle = 0; angle < maxAngle; angle += angleStep) - { - Mat H = rotateImage(image0, static_cast(angle), image1, mask1); - - vector keypoints1; - rotateKeyPoints(keypoints0, H, static_cast(angle), keypoints1); - Mat descriptors1; - descriptorExtractor->compute(image1, keypoints1, descriptors1); - - vector descMatches; - bfmatcher.match(descriptors0, descriptors1, descMatches); - - int descInliersCount = 0; - for(size_t m = 0; m < descMatches.size(); m++) - { - const KeyPoint& transformed_p0 = keypoints1[descMatches[m].queryIdx]; - const KeyPoint& p1 = keypoints1[descMatches[m].trainIdx]; - if(calcIntersectRatio(transformed_p0.pt, 0.5f * transformed_p0.size, - p1.pt, 0.5f * p1.size) >= minIntersectRatio) - { - descInliersCount++; - } - } - - float descInliersRatio = static_cast(descInliersCount) / keypoints0.size(); - if(descInliersRatio < minDescInliersRatio) - { - ts->printf(cvtest::TS::LOG, "Incorrect descInliersRatio: curr = %f, min = %f.\n", - descInliersRatio, minDescInliersRatio); - ts->set_failed_test_info(cvtest::TS::FAIL_BAD_ACCURACY); - return; - } -#if SHOW_DEBUG_LOG - std::cout << "descInliersRatio " << static_cast(descInliersCount) / keypoints0.size() << std::endl; -#endif - } - ts->set_failed_test_info( cvtest::TS::OK ); - } - - Ptr featureDetector; - Ptr descriptorExtractor; - int normType; - float minDescInliersRatio; -}; - - -class DetectorScaleInvarianceTest : public cvtest::BaseTest -{ -public: - DetectorScaleInvarianceTest(const Ptr& _featureDetector, - float _minKeyPointMatchesRatio, - float _minScaleInliersRatio) : - featureDetector(_featureDetector), - minKeyPointMatchesRatio(_minKeyPointMatchesRatio), - minScaleInliersRatio(_minScaleInliersRatio) - { - CV_Assert(featureDetector); - } - -protected: - - void run(int) - { - const string imageFilename = string(ts->get_data_path()) + IMAGE_BIKES; - - // Read test data - Mat image0 = imread(imageFilename); - if(image0.empty()) - { - ts->printf(cvtest::TS::LOG, "Image %s can not be read.\n", imageFilename.c_str()); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_TEST_DATA); - return; - } - - vector keypoints0; - featureDetector->detect(image0, keypoints0); - removeVerySmallKeypoints(keypoints0); - if(keypoints0.size() < 15) - CV_Error(Error::StsAssert, "Detector gives too few points in a test image\n"); - - for(int scaleIdx = 1; scaleIdx <= 3; scaleIdx++) - { - float scale = 1.f + scaleIdx * 0.5f; - Mat image1; - resize(image0, image1, Size(), 1./scale, 1./scale); - - vector keypoints1, osiKeypoints1; // osi - original size image - featureDetector->detect(image1, keypoints1); - removeVerySmallKeypoints(keypoints1); - if(keypoints1.size() < 15) - CV_Error(Error::StsAssert, "Detector gives too few points in a test image\n"); - - if(keypoints1.size() > keypoints0.size()) - { - ts->printf(cvtest::TS::LOG, "Strange behavior of the detector. " - "It gives more points count in an image of the smaller size.\n" - "original size (%d, %d), keypoints count = %d\n" - "reduced size (%d, %d), keypoints count = %d\n", - image0.cols, image0.rows, keypoints0.size(), - image1.cols, image1.rows, keypoints1.size()); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_OUTPUT); - return; - } - - scaleKeyPoints(keypoints1, osiKeypoints1, scale); - - vector matches; - // image1 is query image (it's reduced image0) - // image0 is train image - matchKeyPoints(osiKeypoints1, Mat(), keypoints0, matches); - - const float minIntersectRatio = 0.5f; - int keyPointMatchesCount = 0; - int scaleInliersCount = 0; - - for(size_t m = 0; m < matches.size(); m++) - { - if(matches[m].distance < minIntersectRatio) - continue; - - keyPointMatchesCount++; - - // Check does this inlier have consistent sizes - const float maxSizeDiff = 0.8f;//0.9f; // grad - float size0 = keypoints0[matches[m].trainIdx].size; - float size1 = osiKeypoints1[matches[m].queryIdx].size; - CV_Assert(size0 > 0 && size1 > 0); - if(std::min(size0, size1) > maxSizeDiff * std::max(size0, size1)) - scaleInliersCount++; - } - - float keyPointMatchesRatio = static_cast(keyPointMatchesCount) / keypoints1.size(); - if(keyPointMatchesRatio < minKeyPointMatchesRatio) - { - ts->printf(cvtest::TS::LOG, "Incorrect keyPointMatchesRatio: curr = %f, min = %f.\n", - keyPointMatchesRatio, minKeyPointMatchesRatio); - ts->set_failed_test_info(cvtest::TS::FAIL_BAD_ACCURACY); - return; - } - - if(keyPointMatchesCount) - { - float scaleInliersRatio = static_cast(scaleInliersCount) / keyPointMatchesCount; - if(scaleInliersRatio < minScaleInliersRatio) - { - ts->printf(cvtest::TS::LOG, "Incorrect scaleInliersRatio: curr = %f, min = %f.\n", - scaleInliersRatio, minScaleInliersRatio); - ts->set_failed_test_info(cvtest::TS::FAIL_BAD_ACCURACY); - return; - } - } -#if SHOW_DEBUG_LOG - std::cout << "keyPointMatchesRatio - " << keyPointMatchesRatio - << " - scaleInliersRatio " << static_cast(scaleInliersCount) / keyPointMatchesCount << std::endl; -#endif - } - ts->set_failed_test_info( cvtest::TS::OK ); - } - - Ptr featureDetector; - float minKeyPointMatchesRatio; - float minScaleInliersRatio; -}; - -class DescriptorScaleInvarianceTest : public cvtest::BaseTest -{ -public: - DescriptorScaleInvarianceTest(const Ptr& _featureDetector, - const Ptr& _descriptorExtractor, - int _normType, - float _minDescInliersRatio) : - featureDetector(_featureDetector), - descriptorExtractor(_descriptorExtractor), - normType(_normType), - minDescInliersRatio(_minDescInliersRatio) - { - CV_Assert(featureDetector); - CV_Assert(descriptorExtractor); - } - -protected: - - void run(int) - { - const string imageFilename = string(ts->get_data_path()) + IMAGE_BIKES; - - // Read test data - Mat image0 = imread(imageFilename); - if(image0.empty()) - { - ts->printf(cvtest::TS::LOG, "Image %s can not be read.\n", imageFilename.c_str()); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_TEST_DATA); - return; - } - - vector keypoints0; - featureDetector->detect(image0, keypoints0); - removeVerySmallKeypoints(keypoints0); - if(keypoints0.size() < 15) - CV_Error(Error::StsAssert, "Detector gives too few points in a test image\n"); - Mat descriptors0; - descriptorExtractor->compute(image0, keypoints0, descriptors0); - - BFMatcher bfmatcher(normType); - for(int scaleIdx = 1; scaleIdx <= 3; scaleIdx++) - { - float scale = 1.f + scaleIdx * 0.5f; - - Mat image1; - resize(image0, image1, Size(), 1./scale, 1./scale); - - vector keypoints1; - scaleKeyPoints(keypoints0, keypoints1, 1.0f/scale); - Mat descriptors1; - descriptorExtractor->compute(image1, keypoints1, descriptors1); - - vector descMatches; - bfmatcher.match(descriptors0, descriptors1, descMatches); - - const float minIntersectRatio = 0.5f; - int descInliersCount = 0; - for(size_t m = 0; m < descMatches.size(); m++) - { - const KeyPoint& transformed_p0 = keypoints0[descMatches[m].queryIdx]; - const KeyPoint& p1 = keypoints0[descMatches[m].trainIdx]; - if(calcIntersectRatio(transformed_p0.pt, 0.5f * transformed_p0.size, - p1.pt, 0.5f * p1.size) >= minIntersectRatio) - { - descInliersCount++; - } - } - - float descInliersRatio = static_cast(descInliersCount) / keypoints0.size(); - if(descInliersRatio < minDescInliersRatio) - { - ts->printf(cvtest::TS::LOG, "Incorrect descInliersRatio: curr = %f, min = %f.\n", - descInliersRatio, minDescInliersRatio); - ts->set_failed_test_info(cvtest::TS::FAIL_BAD_ACCURACY); - return; - } -#if SHOW_DEBUG_LOG - std::cout << "descInliersRatio " << static_cast(descInliersCount) / keypoints0.size() << std::endl; -#endif - } - ts->set_failed_test_info( cvtest::TS::OK ); - } - - Ptr featureDetector; - Ptr descriptorExtractor; - int normType; - float minKeyPointMatchesRatio; - float minDescInliersRatio; -}; - -// Tests registration - -/* - * Detector's rotation invariance check - */ -TEST(Features2d_RotationInvariance_Detector_SURF, regression) -{ - DetectorRotationInvarianceTest test(Algorithm::create("Feature2D.SURF"), - 0.44f, - 0.76f); - test.safe_run(); -} - -TEST(Features2d_RotationInvariance_Detector_SIFT, DISABLED_regression) -{ - DetectorRotationInvarianceTest test(Algorithm::create("Feature2D.SIFT"), - 0.45f, - 0.70f); - test.safe_run(); -} - -/* - * Descriptors's rotation invariance check - */ -TEST(Features2d_RotationInvariance_Descriptor_SURF, regression) -{ - DescriptorRotationInvarianceTest test(Algorithm::create("Feature2D.SURF"), - Algorithm::create("Feature2D.SURF"), - NORM_L1, - 0.83f); - test.safe_run(); -} - -TEST(Features2d_RotationInvariance_Descriptor_SIFT, regression) -{ - DescriptorRotationInvarianceTest test(Algorithm::create("Feature2D.SIFT"), - Algorithm::create("Feature2D.SIFT"), - NORM_L1, - 0.98f); - test.safe_run(); -} - -/* - * Detector's scale invariance check - */ -TEST(Features2d_ScaleInvariance_Detector_SURF, regression) -{ - DetectorScaleInvarianceTest test(Algorithm::create("Feature2D.SURF"), - 0.64f, - 0.84f); - test.safe_run(); -} - -TEST(Features2d_ScaleInvariance_Detector_SIFT, regression) -{ - DetectorScaleInvarianceTest test(Algorithm::create("Feature2D.SIFT"), - 0.69f, - 0.99f); - test.safe_run(); -} - -/* - * Descriptor's scale invariance check - */ -TEST(Features2d_ScaleInvariance_Descriptor_SURF, regression) -{ - DescriptorScaleInvarianceTest test(Algorithm::create("Feature2D.SURF"), - Algorithm::create("Feature2D.SURF"), - NORM_L1, - 0.61f); - test.safe_run(); -} - -TEST(Features2d_ScaleInvariance_Descriptor_SIFT, regression) -{ - DescriptorScaleInvarianceTest test(Algorithm::create("Feature2D.SIFT"), - Algorithm::create("Feature2D.SIFT"), - NORM_L1, - 0.78f); - test.safe_run(); -} - - -TEST(Features2d_RotationInvariance2_Detector_SURF, regression) -{ - Mat cross(100, 100, CV_8UC1, Scalar(255)); - line(cross, Point(30, 50), Point(69, 50), Scalar(100), 3); - line(cross, Point(50, 30), Point(50, 69), Scalar(100), 3); - - SURF surf(8000., 3, 4, true, false); - - vector keypoints; - - surf(cross, noArray(), keypoints); - - ASSERT_EQ(keypoints.size(), (vector::size_type) 5); - ASSERT_LT( fabs(keypoints[1].response - keypoints[2].response), 1e-6); - ASSERT_LT( fabs(keypoints[1].response - keypoints[3].response), 1e-6); - ASSERT_LT( fabs(keypoints[1].response - keypoints[4].response), 1e-6); -} diff --git a/modules/nonfree/test/test_surf.cuda.cpp b/modules/nonfree/test/test_surf.cuda.cpp deleted file mode 100644 index 4011f3cc3f..0000000000 --- a/modules/nonfree/test/test_surf.cuda.cpp +++ /dev/null @@ -1,198 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "test_precomp.hpp" - -#ifdef HAVE_CUDA - -using namespace cvtest; - -///////////////////////////////////////////////////////////////////////////////////////////////// -// SURF - -#ifdef HAVE_OPENCV_CUDAARITHM - -namespace -{ - IMPLEMENT_PARAM_CLASS(SURF_HessianThreshold, double) - IMPLEMENT_PARAM_CLASS(SURF_Octaves, int) - IMPLEMENT_PARAM_CLASS(SURF_OctaveLayers, int) - IMPLEMENT_PARAM_CLASS(SURF_Extended, bool) - IMPLEMENT_PARAM_CLASS(SURF_Upright, bool) -} - -PARAM_TEST_CASE(SURF, SURF_HessianThreshold, SURF_Octaves, SURF_OctaveLayers, SURF_Extended, SURF_Upright) -{ - double hessianThreshold; - int nOctaves; - int nOctaveLayers; - bool extended; - bool upright; - - virtual void SetUp() - { - hessianThreshold = GET_PARAM(0); - nOctaves = GET_PARAM(1); - nOctaveLayers = GET_PARAM(2); - extended = GET_PARAM(3); - upright = GET_PARAM(4); - } -}; - -CUDA_TEST_P(SURF, Detector) -{ - cv::Mat image = readImage("../gpu/features2d/aloe.png", cv::IMREAD_GRAYSCALE); - ASSERT_FALSE(image.empty()); - - cv::cuda::SURF_CUDA surf; - surf.hessianThreshold = hessianThreshold; - surf.nOctaves = nOctaves; - surf.nOctaveLayers = nOctaveLayers; - surf.extended = extended; - surf.upright = upright; - surf.keypointsRatio = 0.05f; - - std::vector keypoints; - surf(loadMat(image), cv::cuda::GpuMat(), keypoints); - - cv::SURF surf_gold; - surf_gold.hessianThreshold = hessianThreshold; - surf_gold.nOctaves = nOctaves; - surf_gold.nOctaveLayers = nOctaveLayers; - surf_gold.extended = extended; - surf_gold.upright = upright; - - std::vector keypoints_gold; - surf_gold(image, cv::noArray(), keypoints_gold); - - ASSERT_EQ(keypoints_gold.size(), keypoints.size()); - int matchedCount = getMatchedPointsCount(keypoints_gold, keypoints); - double matchedRatio = static_cast(matchedCount) / keypoints_gold.size(); - - EXPECT_GT(matchedRatio, 0.95); -} - -CUDA_TEST_P(SURF, Detector_Masked) -{ - cv::Mat image = readImage("../gpu/features2d/aloe.png", cv::IMREAD_GRAYSCALE); - ASSERT_FALSE(image.empty()); - - cv::Mat mask(image.size(), CV_8UC1, cv::Scalar::all(1)); - mask(cv::Range(0, image.rows / 2), cv::Range(0, image.cols / 2)).setTo(cv::Scalar::all(0)); - - cv::cuda::SURF_CUDA surf; - surf.hessianThreshold = hessianThreshold; - surf.nOctaves = nOctaves; - surf.nOctaveLayers = nOctaveLayers; - surf.extended = extended; - surf.upright = upright; - surf.keypointsRatio = 0.05f; - - std::vector keypoints; - surf(loadMat(image), loadMat(mask), keypoints); - - cv::SURF surf_gold; - surf_gold.hessianThreshold = hessianThreshold; - surf_gold.nOctaves = nOctaves; - surf_gold.nOctaveLayers = nOctaveLayers; - surf_gold.extended = extended; - surf_gold.upright = upright; - - std::vector keypoints_gold; - surf_gold(image, mask, keypoints_gold); - - ASSERT_EQ(keypoints_gold.size(), keypoints.size()); - int matchedCount = getMatchedPointsCount(keypoints_gold, keypoints); - double matchedRatio = static_cast(matchedCount) / keypoints_gold.size(); - - EXPECT_GT(matchedRatio, 0.95); -} - -CUDA_TEST_P(SURF, Descriptor) -{ - cv::Mat image = readImage("../gpu/features2d/aloe.png", cv::IMREAD_GRAYSCALE); - ASSERT_FALSE(image.empty()); - - cv::cuda::SURF_CUDA surf; - surf.hessianThreshold = hessianThreshold; - surf.nOctaves = nOctaves; - surf.nOctaveLayers = nOctaveLayers; - surf.extended = extended; - surf.upright = upright; - surf.keypointsRatio = 0.05f; - - cv::SURF surf_gold; - surf_gold.hessianThreshold = hessianThreshold; - surf_gold.nOctaves = nOctaves; - surf_gold.nOctaveLayers = nOctaveLayers; - surf_gold.extended = extended; - surf_gold.upright = upright; - - std::vector keypoints; - surf_gold(image, cv::noArray(), keypoints); - - cv::cuda::GpuMat descriptors; - surf(loadMat(image), cv::cuda::GpuMat(), keypoints, descriptors, true); - - cv::Mat descriptors_gold; - surf_gold(image, cv::noArray(), keypoints, descriptors_gold, true); - - cv::BFMatcher matcher(surf.defaultNorm()); - std::vector matches; - matcher.match(descriptors_gold, cv::Mat(descriptors), matches); - - int matchedCount = getMatchedPointsCount(keypoints, keypoints, matches); - double matchedRatio = static_cast(matchedCount) / keypoints.size(); - - EXPECT_GT(matchedRatio, 0.6); -} - -INSTANTIATE_TEST_CASE_P(CUDA_Features2D, SURF, testing::Combine( - testing::Values(SURF_HessianThreshold(100.0), SURF_HessianThreshold(500.0), SURF_HessianThreshold(1000.0)), - testing::Values(SURF_Octaves(3), SURF_Octaves(4)), - testing::Values(SURF_OctaveLayers(2), SURF_OctaveLayers(3)), - testing::Values(SURF_Extended(false), SURF_Extended(true)), - testing::Values(SURF_Upright(false), SURF_Upright(true)))); - -#endif // HAVE_OPENCV_CUDAARITHM - -#endif // HAVE_CUDA diff --git a/modules/nonfree/test/test_surf.ocl.cpp b/modules/nonfree/test/test_surf.ocl.cpp deleted file mode 100644 index 217460a79d..0000000000 --- a/modules/nonfree/test/test_surf.ocl.cpp +++ /dev/null @@ -1,215 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2010-2012, Multicoreware, Inc., all rights reserved. -// Copyright (C) 2010-2012, Advanced Micro Devices, Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// @Authors -// Peng Xiao, pengxiao@multicorewareinc.com -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors as is and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "test_precomp.hpp" - -#ifdef HAVE_OPENCV_OCL - -using namespace std; -using std::tr1::get; - -static bool keyPointsEquals(const cv::KeyPoint& p1, const cv::KeyPoint& p2) -{ - const double maxPtDif = 0.1; - const double maxSizeDif = 0.1; - const double maxAngleDif = 0.1; - const double maxResponseDif = 0.01; - - double dist = cv::norm(p1.pt - p2.pt); - - if (dist < maxPtDif && - fabs(p1.size - p2.size) < maxSizeDif && - abs(p1.angle - p2.angle) < maxAngleDif && - abs(p1.response - p2.response) < maxResponseDif && - p1.octave == p2.octave && - p1.class_id == p2.class_id) - { - return true; - } - - return false; -} - -static int getMatchedPointsCount(std::vector& gold, std::vector& actual) -{ - std::sort(actual.begin(), actual.end(), perf::comparators::KeypointGreater()); - std::sort(gold.begin(), gold.end(), perf::comparators::KeypointGreater()); - - int validCount = 0; - - for (size_t i = 0; i < gold.size(); ++i) - { - const cv::KeyPoint& p1 = gold[i]; - const cv::KeyPoint& p2 = actual[i]; - - if (keyPointsEquals(p1, p2)) - ++validCount; - } - - return validCount; -} - -static int getMatchedPointsCount(const std::vector& keypoints1, const std::vector& keypoints2, const std::vector& matches) -{ - int validCount = 0; - - for (size_t i = 0; i < matches.size(); ++i) - { - const cv::DMatch& m = matches[i]; - - const cv::KeyPoint& p1 = keypoints1[m.queryIdx]; - const cv::KeyPoint& p2 = keypoints2[m.trainIdx]; - - if (keyPointsEquals(p1, p2)) - ++validCount; - } - - return validCount; -} - -IMPLEMENT_PARAM_CLASS(HessianThreshold, double) -IMPLEMENT_PARAM_CLASS(Octaves, int) -IMPLEMENT_PARAM_CLASS(OctaveLayers, int) -IMPLEMENT_PARAM_CLASS(Extended, bool) -IMPLEMENT_PARAM_CLASS(Upright, bool) - -PARAM_TEST_CASE(SURF, HessianThreshold, Octaves, OctaveLayers, Extended, Upright) -{ - double hessianThreshold; - int nOctaves; - int nOctaveLayers; - bool extended; - bool upright; - - virtual void SetUp() - { - hessianThreshold = get<0>(GetParam()); - nOctaves = get<1>(GetParam()); - nOctaveLayers = get<2>(GetParam()); - extended = get<3>(GetParam()); - upright = get<4>(GetParam()); - } -}; - -TEST_P(SURF, DISABLED_Detector) -{ - cv::Mat image = cv::imread(string(cvtest::TS::ptr()->get_data_path()) + "shared/fruits.png", cv::IMREAD_GRAYSCALE); - ASSERT_FALSE(image.empty()); - - cv::ocl::SURF_OCL surf; - surf.hessianThreshold = static_cast(hessianThreshold); - surf.nOctaves = nOctaves; - surf.nOctaveLayers = nOctaveLayers; - surf.extended = extended; - surf.upright = upright; - surf.keypointsRatio = 0.05f; - - std::vector keypoints; - surf(cv::ocl::oclMat(image), cv::ocl::oclMat(), keypoints); - - cv::SURF surf_gold; - surf_gold.hessianThreshold = hessianThreshold; - surf_gold.nOctaves = nOctaves; - surf_gold.nOctaveLayers = nOctaveLayers; - surf_gold.extended = extended; - surf_gold.upright = upright; - - std::vector keypoints_gold; - surf_gold(image, cv::noArray(), keypoints_gold); - - ASSERT_EQ(keypoints_gold.size(), keypoints.size()); - int matchedCount = getMatchedPointsCount(keypoints_gold, keypoints); - double matchedRatio = static_cast(matchedCount) / keypoints_gold.size(); - - EXPECT_GT(matchedRatio, 0.99); -} - -TEST_P(SURF, DISABLED_Descriptor) -{ - cv::Mat image = cv::imread(string(cvtest::TS::ptr()->get_data_path()) + "shared/fruits.png", cv::IMREAD_GRAYSCALE); - ASSERT_FALSE(image.empty()); - - cv::ocl::SURF_OCL surf; - surf.hessianThreshold = static_cast(hessianThreshold); - surf.nOctaves = nOctaves; - surf.nOctaveLayers = nOctaveLayers; - surf.extended = extended; - surf.upright = upright; - surf.keypointsRatio = 0.05f; - - cv::SURF surf_gold; - surf_gold.hessianThreshold = hessianThreshold; - surf_gold.nOctaves = nOctaves; - surf_gold.nOctaveLayers = nOctaveLayers; - surf_gold.extended = extended; - surf_gold.upright = upright; - - std::vector keypoints; - surf_gold(image, cv::noArray(), keypoints); - - cv::ocl::oclMat descriptors; - surf(cv::ocl::oclMat(image), cv::ocl::oclMat(), keypoints, descriptors, true); - - cv::Mat descriptors_gold; - surf_gold(image, cv::noArray(), keypoints, descriptors_gold, true); - - cv::BFMatcher matcher(surf.defaultNorm()); - std::vector matches; - matcher.match(descriptors_gold, cv::Mat(descriptors), matches); - - int matchedCount = getMatchedPointsCount(keypoints, keypoints, matches); - double matchedRatio = static_cast(matchedCount) / keypoints.size(); - - EXPECT_GT(matchedRatio, 0.35); -} - -INSTANTIATE_TEST_CASE_P(OCL_Features2D, SURF, testing::Combine( - testing::Values(HessianThreshold(500.0), HessianThreshold(1000.0)), - testing::Values(Octaves(3), Octaves(4)), - testing::Values(OctaveLayers(2), OctaveLayers(3)), - testing::Values(Extended(false), Extended(true)), - testing::Values(Upright(false), Upright(true)))); - -#endif // HAVE_OPENCV_OCL diff --git a/modules/python/common.cmake b/modules/python/common.cmake index b7512981dc..164515c72f 100644 --- a/modules/python/common.cmake +++ b/modules/python/common.cmake @@ -20,6 +20,7 @@ ocv_list_filterout(candidate_deps "^opencv_matlab$") ocv_list_filterout(candidate_deps "^opencv_tracking$") ocv_list_filterout(candidate_deps "^opencv_optflow$") ocv_list_filterout(candidate_deps "^opencv_bgsegm$") +ocv_list_filterout(candidate_deps "^opencv_xfeatures2d$") ocv_add_module(${MODULE_NAME} BINDINGS OPTIONAL ${candidate_deps}) diff --git a/modules/stitching/CMakeLists.txt b/modules/stitching/CMakeLists.txt index 2aeafb263b..e1a61b8010 100644 --- a/modules/stitching/CMakeLists.txt +++ b/modules/stitching/CMakeLists.txt @@ -1,3 +1,3 @@ set(the_description "Images stitching") ocv_define_module(stitching opencv_imgproc opencv_features2d opencv_calib3d opencv_objdetect - OPTIONAL opencv_cuda opencv_cudaarithm opencv_cudafilters opencv_cudafeatures2d opencv_nonfree) + OPTIONAL opencv_cuda opencv_cudaarithm opencv_cudafilters opencv_cudafeatures2d) diff --git a/samples/cpp/CMakeLists.txt b/samples/cpp/CMakeLists.txt index 26acad1452..a163d90134 100644 --- a/samples/cpp/CMakeLists.txt +++ b/samples/cpp/CMakeLists.txt @@ -5,7 +5,7 @@ SET(OPENCV_CPP_SAMPLES_REQUIRED_DEPS opencv_core opencv_imgproc opencv_flann opencv_imgcodecs opencv_videoio opencv_highgui opencv_ml opencv_video - opencv_objdetect opencv_photo opencv_nonfree opencv_features2d opencv_calib3d + opencv_objdetect opencv_photo opencv_features2d opencv_calib3d opencv_stitching opencv_videostab opencv_shape) ocv_check_dependencies(${OPENCV_CPP_SAMPLES_REQUIRED_DEPS}) diff --git a/samples/cpp/bagofwords_classification.cpp b/samples/cpp/bagofwords_classification.cpp deleted file mode 100644 index 1c50a0ec88..0000000000 --- a/samples/cpp/bagofwords_classification.cpp +++ /dev/null @@ -1,2611 +0,0 @@ -#include "opencv2/opencv_modules.hpp" -#include "opencv2/imgcodecs.hpp" -#include "opencv2/highgui/highgui.hpp" -#include "opencv2/imgproc/imgproc.hpp" -#include "opencv2/features2d/features2d.hpp" -#include "opencv2/nonfree/nonfree.hpp" -#include "opencv2/ml/ml.hpp" - -#include -#include -#include -#include - -#if defined WIN32 || defined _WIN32 -#define WIN32_LEAN_AND_MEAN -#include -#undef min -#undef max -#include "sys/types.h" -#endif -#include - -#define DEBUG_DESC_PROGRESS - -using namespace cv; -using namespace cv::ml; -using namespace std; - -const string paramsFile = "params.xml"; -const string vocabularyFile = "vocabulary.xml.gz"; -const string bowImageDescriptorsDir = "/bowImageDescriptors"; -const string svmsDir = "/svms"; -const string plotsDir = "/plots"; - -static void help(char** argv) -{ - cout << "\nThis program shows how to read in, train on and produce test results for the PASCAL VOC (Visual Object Challenge) data. \n" - << "It shows how to use detectors, descriptors and recognition methods \n" - "Using OpenCV version %s\n" << CV_VERSION << "\n" - << "Call: \n" - << "Format:\n ./" << argv[0] << " [VOC path] [result directory] \n" - << " or: \n" - << " ./" << argv[0] << " [VOC path] [result directory] [feature detector] [descriptor extractor] [descriptor matcher] \n" - << "\n" - << "Input parameters: \n" - << "[VOC path] Path to Pascal VOC data (e.g. /home/my/VOCdevkit/VOC2010). Note: VOC2007-VOC2010 are supported. \n" - << "[result directory] Path to result diractory. Following folders will be created in [result directory]: \n" - << " bowImageDescriptors - to store image descriptors, \n" - << " svms - to store trained svms, \n" - << " plots - to store files for plots creating. \n" - << "[feature detector] Feature detector name (e.g. SURF, FAST...) - see createFeatureDetector() function in detectors.cpp \n" - << " Currently 12/2010, this is FAST, STAR, SIFT, SURF, MSER, GFTT, HARRIS \n" - << "[descriptor extractor] Descriptor extractor name (e.g. SURF, SIFT) - see createDescriptorExtractor() function in descriptors.cpp \n" - << " Currently 12/2010, this is SURF, OpponentSIFT, SIFT, OpponentSURF, BRIEF \n" - << "[descriptor matcher] Descriptor matcher name (e.g. BruteForce) - see createDescriptorMatcher() function in matchers.cpp \n" - << " Currently 12/2010, this is BruteForce, BruteForce-L1, FlannBased, BruteForce-Hamming, BruteForce-HammingLUT \n" - << "\n"; -} - -static void makeDir( const string& dir ) -{ -#if defined WIN32 || defined _WIN32 - CreateDirectory( dir.c_str(), 0 ); -#else - mkdir( dir.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH ); -#endif -} - -static void makeUsedDirs( const string& rootPath ) -{ - makeDir(rootPath + bowImageDescriptorsDir); - makeDir(rootPath + svmsDir); - makeDir(rootPath + plotsDir); -} - -/****************************************************************************************\ -* Classes to work with PASCAL VOC dataset * -\****************************************************************************************/ -// -// TODO: refactor this part of the code -// - - -//used to specify the (sub-)dataset over which operations are performed -enum ObdDatasetType {CV_OBD_TRAIN, CV_OBD_TEST}; - -class ObdObject -{ -public: - string object_class; - Rect boundingBox; -}; - -//extended object data specific to VOC -enum VocPose {CV_VOC_POSE_UNSPECIFIED, CV_VOC_POSE_FRONTAL, CV_VOC_POSE_REAR, CV_VOC_POSE_LEFT, CV_VOC_POSE_RIGHT}; -class VocObjectData -{ -public: - bool difficult; - bool occluded; - bool truncated; - VocPose pose; -}; -//enum VocDataset {CV_VOC2007, CV_VOC2008, CV_VOC2009, CV_VOC2010}; -enum VocPlotType {CV_VOC_PLOT_SCREEN, CV_VOC_PLOT_PNG}; -enum VocGT {CV_VOC_GT_NONE, CV_VOC_GT_DIFFICULT, CV_VOC_GT_PRESENT}; -enum VocConfCond {CV_VOC_CCOND_RECALL, CV_VOC_CCOND_SCORETHRESH}; -enum VocTask {CV_VOC_TASK_CLASSIFICATION, CV_VOC_TASK_DETECTION}; - -class ObdImage -{ -public: - ObdImage(string p_id, string p_path) : id(p_id), path(p_path) {} - string id; - string path; -}; - -//used by getDetectorGroundTruth to sort a two dimensional list of floats in descending order -class ObdScoreIndexSorter -{ -public: - float score; - int image_idx; - int obj_idx; - bool operator < (const ObdScoreIndexSorter& compare) const {return (score < compare.score);} -}; - -class VocData -{ -public: - VocData( const string& vocPath, bool useTestDataset ) - { initVoc( vocPath, useTestDataset ); } - ~VocData(){} - /* functions for returning classification/object data for multiple images given an object class */ - void getClassImages(const string& obj_class, const ObdDatasetType dataset, vector& images, vector& object_present); - void getClassObjects(const string& obj_class, const ObdDatasetType dataset, vector& images, vector >& objects); - void getClassObjects(const string& obj_class, const ObdDatasetType dataset, vector& images, vector >& objects, vector >& object_data, vector& ground_truth); - /* functions for returning object data for a single image given an image id */ - ObdImage getObjects(const string& id, vector& objects); - ObdImage getObjects(const string& id, vector& objects, vector& object_data); - ObdImage getObjects(const string& obj_class, const string& id, vector& objects, vector& object_data, VocGT& ground_truth); - /* functions for returning the ground truth (present/absent) for groups of images */ - void getClassifierGroundTruth(const string& obj_class, const vector& images, vector& ground_truth); - void getClassifierGroundTruth(const string& obj_class, const vector& images, vector& ground_truth); - int getDetectorGroundTruth(const string& obj_class, const ObdDatasetType dataset, const vector& images, const vector >& bounding_boxes, const vector >& scores, vector >& ground_truth, vector >& detection_difficult, bool ignore_difficult = true); - /* functions for writing VOC-compatible results files */ - void writeClassifierResultsFile(const string& out_dir, const string& obj_class, const ObdDatasetType dataset, const vector& images, const vector& scores, const int competition = 1, const bool overwrite_ifexists = false); - /* functions for calculating metrics from a set of classification/detection results */ - string getResultsFilename(const string& obj_class, const VocTask task, const ObdDatasetType dataset, const int competition = -1, const int number = -1); - void calcClassifierPrecRecall(const string& obj_class, const vector& images, const vector& scores, vector& precision, vector& recall, float& ap, vector& ranking); - void calcClassifierPrecRecall(const string& obj_class, const vector& images, const vector& scores, vector& precision, vector& recall, float& ap); - void calcClassifierPrecRecall(const string& input_file, vector& precision, vector& recall, float& ap, bool outputRankingFile = false); - /* functions for calculating confusion matrices */ - void calcClassifierConfMatRow(const string& obj_class, const vector& images, const vector& scores, const VocConfCond cond, const float threshold, vector& output_headers, vector& output_values); - void calcDetectorConfMatRow(const string& obj_class, const ObdDatasetType dataset, const vector& images, const vector >& scores, const vector >& bounding_boxes, const VocConfCond cond, const float threshold, vector& output_headers, vector& output_values, bool ignore_difficult = true); - /* functions for outputting gnuplot output files */ - void savePrecRecallToGnuplot(const string& output_file, const vector& precision, const vector& recall, const float ap, const string title = string(), const VocPlotType plot_type = CV_VOC_PLOT_SCREEN); - /* functions for reading in result/ground truth files */ - void readClassifierGroundTruth(const string& obj_class, const ObdDatasetType dataset, vector& images, vector& object_present); - void readClassifierResultsFile(const std:: string& input_file, vector& images, vector& scores); - void readDetectorResultsFile(const string& input_file, vector& images, vector >& scores, vector >& bounding_boxes); - /* functions for getting dataset info */ - const vector& getObjectClasses(); - string getResultsDirectory(); -protected: - void initVoc( const string& vocPath, const bool useTestDataset ); - void initVoc2007to2010( const string& vocPath, const bool useTestDataset); - void readClassifierGroundTruth(const string& filename, vector& image_codes, vector& object_present); - void readClassifierResultsFile(const string& input_file, vector& image_codes, vector& scores); - void readDetectorResultsFile(const string& input_file, vector& image_codes, vector >& scores, vector >& bounding_boxes); - void extractVocObjects(const string filename, vector& objects, vector& object_data); - string getImagePath(const string& input_str); - - void getClassImages_impl(const string& obj_class, const string& dataset_str, vector& images, vector& object_present); - void calcPrecRecall_impl(const vector& ground_truth, const vector& scores, vector& precision, vector& recall, float& ap, vector& ranking, int recall_normalization = -1); - - //test two bounding boxes to see if they meet the overlap criteria defined in the VOC documentation - float testBoundingBoxesForOverlap(const Rect detection, const Rect ground_truth); - //extract class and dataset name from a VOC-standard classification/detection results filename - void extractDataFromResultsFilename(const string& input_file, string& class_name, string& dataset_name); - //get classifier ground truth for a single image - bool getClassifierGroundTruthImage(const string& obj_class, const string& id); - - //utility functions - void getSortOrder(const vector& values, vector& order, bool descending = true); - int stringToInteger(const string input_str); - void readFileToString(const string filename, string& file_contents); - string integerToString(const int input_int); - string checkFilenamePathsep(const string filename, bool add_trailing_slash = false); - void convertImageCodesToObdImages(const vector& image_codes, vector& images); - int extractXMLBlock(const string src, const string tag, const int searchpos, string& tag_contents); - //utility sorter - struct orderingSorter - { - bool operator ()(std::pair::const_iterator> const& a, std::pair::const_iterator> const& b) - { - return (*a.second) > (*b.second); - } - }; - //data members - string m_vocPath; - string m_vocName; - //string m_resPath; - - string m_annotation_path; - string m_image_path; - string m_imageset_path; - string m_class_imageset_path; - - vector m_classifier_gt_all_ids; - vector m_classifier_gt_all_present; - string m_classifier_gt_class; - - //data members - string m_train_set; - string m_test_set; - - vector m_object_classes; - - - float m_min_overlap; - bool m_sampled_ap; -}; - - -//Return the classification ground truth data for all images of a given VOC object class -//-------------------------------------------------------------------------------------- -//INPUTS: -// - obj_class The VOC object class identifier string -// - dataset Specifies whether to extract images from the training or test set -//OUTPUTS: -// - images An array of ObdImage containing info of all images extracted from the ground truth file -// - object_present An array of bools specifying whether the object defined by 'obj_class' is present in each image or not -//NOTES: -// This function is primarily useful for the classification task, where only -// whether a given object is present or not in an image is required, and not each object instance's -// position etc. -void VocData::getClassImages(const string& obj_class, const ObdDatasetType dataset, vector& images, vector& object_present) -{ - string dataset_str; - //generate the filename of the classification ground-truth textfile for the object class - if (dataset == CV_OBD_TRAIN) - { - dataset_str = m_train_set; - } else { - dataset_str = m_test_set; - } - - getClassImages_impl(obj_class, dataset_str, images, object_present); -} - -void VocData::getClassImages_impl(const string& obj_class, const string& dataset_str, vector& images, vector& object_present) -{ - //generate the filename of the classification ground-truth textfile for the object class - string gtFilename = m_class_imageset_path; - gtFilename.replace(gtFilename.find("%s"),2,obj_class); - gtFilename.replace(gtFilename.find("%s"),2,dataset_str); - - //parse the ground truth file, storing in two separate vectors - //for the image code and the ground truth value - vector image_codes; - readClassifierGroundTruth(gtFilename, image_codes, object_present); - - //prepare output arrays - images.clear(); - - convertImageCodesToObdImages(image_codes, images); -} - -//Return the object data for all images of a given VOC object class -//----------------------------------------------------------------- -//INPUTS: -// - obj_class The VOC object class identifier string -// - dataset Specifies whether to extract images from the training or test set -//OUTPUTS: -// - images An array of ObdImage containing info of all images in chosen dataset (tag, path etc.) -// - objects Contains the extended object info (bounding box etc.) for each object instance in each image -// - object_data Contains VOC-specific extended object info (marked difficult etc.) -// - ground_truth Specifies whether there are any difficult/non-difficult instances of the current -// object class within each image -//NOTES: -// This function returns extended object information in addition to the absent/present -// classification data returned by getClassImages. The objects returned for each image in the 'objects' -// array are of all object classes present in the image, and not just the class defined by 'obj_class'. -// 'ground_truth' can be used to determine quickly whether an object instance of the given class is present -// in an image or not. -void VocData::getClassObjects(const string& obj_class, const ObdDatasetType dataset, vector& images, vector >& objects) -{ - vector > object_data; - vector ground_truth; - - getClassObjects(obj_class,dataset,images,objects,object_data,ground_truth); -} - -void VocData::getClassObjects(const string& obj_class, const ObdDatasetType dataset, vector& images, vector >& objects, vector >& object_data, vector& ground_truth) -{ - //generate the filename of the classification ground-truth textfile for the object class - string gtFilename = m_class_imageset_path; - gtFilename.replace(gtFilename.find("%s"),2,obj_class); - if (dataset == CV_OBD_TRAIN) - { - gtFilename.replace(gtFilename.find("%s"),2,m_train_set); - } else { - gtFilename.replace(gtFilename.find("%s"),2,m_test_set); - } - - //parse the ground truth file, storing in two separate vectors - //for the image code and the ground truth value - vector image_codes; - vector object_present; - readClassifierGroundTruth(gtFilename, image_codes, object_present); - - //prepare output arrays - images.clear(); - objects.clear(); - object_data.clear(); - ground_truth.clear(); - - string annotationFilename; - vector image_objects; - vector image_object_data; - VocGT image_gt; - - //transfer to output arrays and read in object data for each image - for (size_t i = 0; i < image_codes.size(); ++i) - { - ObdImage image = getObjects(obj_class, image_codes[i], image_objects, image_object_data, image_gt); - - images.push_back(image); - objects.push_back(image_objects); - object_data.push_back(image_object_data); - ground_truth.push_back(image_gt); - } -} - -//Return ground truth data for the objects present in an image with a given UID -//----------------------------------------------------------------------------- -//INPUTS: -// - id VOC Dataset unique identifier (string code in form YYYY_XXXXXX where YYYY is the year) -//OUTPUTS: -// - obj_class (*3) Specifies the object class to use to resolve 'ground_truth' -// - objects Contains the extended object info (bounding box etc.) for each object in the image -// - object_data (*2,3) Contains VOC-specific extended object info (marked difficult etc.) -// - ground_truth (*3) Specifies whether there are any difficult/non-difficult instances of the current -// object class within the image -//RETURN VALUE: -// ObdImage containing path and other details of image file with given code -//NOTES: -// There are three versions of this function -// * One returns a simple array of objects given an id [1] -// * One returns the same as (1) plus VOC specific object data [2] -// * One returns the same as (2) plus the ground_truth flag. This also requires an extra input obj_class [3] -ObdImage VocData::getObjects(const string& id, vector& objects) -{ - vector object_data; - ObdImage image = getObjects(id, objects, object_data); - - return image; -} - -ObdImage VocData::getObjects(const string& id, vector& objects, vector& object_data) -{ - //first generate the filename of the annotation file - string annotationFilename = m_annotation_path; - - annotationFilename.replace(annotationFilename.find("%s"),2,id); - - //extract objects contained in the current image from the xml - extractVocObjects(annotationFilename,objects,object_data); - - //generate image path from extracted string code - string path = getImagePath(id); - - ObdImage image(id, path); - return image; -} - -ObdImage VocData::getObjects(const string& obj_class, const string& id, vector& objects, vector& object_data, VocGT& ground_truth) -{ - - //extract object data (except for ground truth flag) - ObdImage image = getObjects(id,objects,object_data); - - //pregenerate a flag to indicate whether the current class is present or not in the image - ground_truth = CV_VOC_GT_NONE; - //iterate through all objects in current image - for (size_t j = 0; j < objects.size(); ++j) - { - if (objects[j].object_class == obj_class) - { - if (object_data[j].difficult == false) - { - //if at least one non-difficult example is present, this flag is always set to CV_VOC_GT_PRESENT - ground_truth = CV_VOC_GT_PRESENT; - break; - } else { - //set if at least one object instance is present, but it is marked difficult - ground_truth = CV_VOC_GT_DIFFICULT; - } - } - } - - return image; -} - -//Return ground truth data for the presence/absence of a given object class in an arbitrary array of images -//--------------------------------------------------------------------------------------------------------- -//INPUTS: -// - obj_class The VOC object class identifier string -// - images An array of ObdImage OR strings containing the images for which ground truth -// will be computed -//OUTPUTS: -// - ground_truth An output array indicating the presence/absence of obj_class within each image -void VocData::getClassifierGroundTruth(const string& obj_class, const vector& images, vector& ground_truth) -{ - vector(images.size()).swap(ground_truth); - - vector objects; - vector object_data; - vector::iterator gt_it = ground_truth.begin(); - for (vector::const_iterator it = images.begin(); it != images.end(); ++it, ++gt_it) - { - //getObjects(obj_class, it->id, objects, object_data, voc_ground_truth); - (*gt_it) = (getClassifierGroundTruthImage(obj_class, it->id)); - } -} - -void VocData::getClassifierGroundTruth(const string& obj_class, const vector& images, vector& ground_truth) -{ - vector(images.size()).swap(ground_truth); - - vector objects; - vector object_data; - vector::iterator gt_it = ground_truth.begin(); - for (vector::const_iterator it = images.begin(); it != images.end(); ++it, ++gt_it) - { - //getObjects(obj_class, (*it), objects, object_data, voc_ground_truth); - (*gt_it) = (getClassifierGroundTruthImage(obj_class, (*it))); - } -} - -//Return ground truth data for the accuracy of detection results -//-------------------------------------------------------------- -//INPUTS: -// - obj_class The VOC object class identifier string -// - images An array of ObdImage containing the images for which ground truth -// will be computed -// - bounding_boxes A 2D input array containing the bounding box rects of the objects of -// obj_class which were detected in each image -//OUTPUTS: -// - ground_truth A 2D output array indicating whether each object detection was accurate -// or not -// - detection_difficult A 2D output array indicating whether the detection fired on an object -// marked as 'difficult'. This allows it to be ignored if necessary -// (the voc documentation specifies objects marked as difficult -// have no effects on the results and are effectively ignored) -// - (ignore_difficult) If set to true, objects marked as difficult will be ignored when returning -// the number of hits for p-r normalization (default = true) -//RETURN VALUE: -// Returns the number of object hits in total in the gt to allow proper normalization -// of a p-r curve -//NOTES: -// As stated in the VOC documentation, multiple detections of the same object in an image are -// considered FALSE detections e.g. 5 detections of a single object is counted as 1 correct -// detection and 4 false detections - it is the responsibility of the participant's system -// to filter multiple detections from its output -int VocData::getDetectorGroundTruth(const string& obj_class, const ObdDatasetType dataset, const vector& images, const vector >& bounding_boxes, const vector >& scores, vector >& ground_truth, vector >& detection_difficult, bool ignore_difficult) -{ - int recall_normalization = 0; - - /* first create a list of indices referring to the elements of bounding_boxes and scores in - * descending order of scores */ - vector sorted_ids; - { - /* first count how many objects to allow preallocation */ - size_t obj_count = 0; - CV_Assert(images.size() == bounding_boxes.size()); - CV_Assert(scores.size() == bounding_boxes.size()); - for (size_t im_idx = 0; im_idx < scores.size(); ++im_idx) - { - CV_Assert(scores[im_idx].size() == bounding_boxes[im_idx].size()); - obj_count += scores[im_idx].size(); - } - /* preallocate id vector */ - sorted_ids.resize(obj_count); - /* now copy across scores and indexes to preallocated vector */ - int flat_pos = 0; - for (size_t im_idx = 0; im_idx < scores.size(); ++im_idx) - { - for (size_t ob_idx = 0; ob_idx < scores[im_idx].size(); ++ob_idx) - { - sorted_ids[flat_pos].score = scores[im_idx][ob_idx]; - sorted_ids[flat_pos].image_idx = (int)im_idx; - sorted_ids[flat_pos].obj_idx = (int)ob_idx; - ++flat_pos; - } - } - /* and sort the vector in descending order of score */ - std::sort(sorted_ids.begin(),sorted_ids.end()); - std::reverse(sorted_ids.begin(),sorted_ids.end()); - } - - /* prepare ground truth + difficult vector (1st dimension) */ - vector >(images.size()).swap(ground_truth); - vector >(images.size()).swap(detection_difficult); - vector > detected(images.size()); - - vector > img_objects(images.size()); - vector > img_object_data(images.size()); - /* preload object ground truth bounding box data */ - { - vector > img_objects_all(images.size()); - vector > img_object_data_all(images.size()); - for (size_t image_idx = 0; image_idx < images.size(); ++image_idx) - { - /* prepopulate ground truth bounding boxes */ - getObjects(images[image_idx].id, img_objects_all[image_idx], img_object_data_all[image_idx]); - /* meanwhile, also set length of target ground truth + difficult vector to same as number of object detections (2nd dimension) */ - ground_truth[image_idx].resize(bounding_boxes[image_idx].size()); - detection_difficult[image_idx].resize(bounding_boxes[image_idx].size()); - } - - /* save only instances of the object class concerned */ - for (size_t image_idx = 0; image_idx < images.size(); ++image_idx) - { - for (size_t obj_idx = 0; obj_idx < img_objects_all[image_idx].size(); ++obj_idx) - { - if (img_objects_all[image_idx][obj_idx].object_class == obj_class) - { - img_objects[image_idx].push_back(img_objects_all[image_idx][obj_idx]); - img_object_data[image_idx].push_back(img_object_data_all[image_idx][obj_idx]); - } - } - detected[image_idx].resize(img_objects[image_idx].size(), false); - } - } - - /* calculate the total number of objects in the ground truth for the current dataset */ - { - vector gt_images; - vector gt_object_present; - getClassImages(obj_class, dataset, gt_images, gt_object_present); - - for (size_t image_idx = 0; image_idx < gt_images.size(); ++image_idx) - { - vector gt_img_objects; - vector gt_img_object_data; - getObjects(gt_images[image_idx].id, gt_img_objects, gt_img_object_data); - for (size_t obj_idx = 0; obj_idx < gt_img_objects.size(); ++obj_idx) - { - if (gt_img_objects[obj_idx].object_class == obj_class) - { - if ((gt_img_object_data[obj_idx].difficult == false) || (ignore_difficult == false)) - ++recall_normalization; - } - } - } - } - -#ifdef PR_DEBUG - int printed_count = 0; -#endif - /* now iterate through detections in descending order of score, assigning to ground truth bounding boxes if possible */ - for (size_t detect_idx = 0; detect_idx < sorted_ids.size(); ++detect_idx) - { - //read in indexes to make following code easier to read - int im_idx = sorted_ids[detect_idx].image_idx; - int ob_idx = sorted_ids[detect_idx].obj_idx; - //set ground truth for the current object to false by default - ground_truth[im_idx][ob_idx] = false; - detection_difficult[im_idx][ob_idx] = false; - float maxov = -1.0; - bool max_is_difficult = false; - int max_gt_obj_idx = -1; - //-- for each detected object iterate through objects present in the bounding box ground truth -- - for (size_t gt_obj_idx = 0; gt_obj_idx < img_objects[im_idx].size(); ++gt_obj_idx) - { - if (detected[im_idx][gt_obj_idx] == false) - { - //check if the detected object and ground truth object overlap by a sufficient margin - float ov = testBoundingBoxesForOverlap(bounding_boxes[im_idx][ob_idx], img_objects[im_idx][gt_obj_idx].boundingBox); - if (ov != -1.0) - { - //if all conditions are met store the overlap score and index (as objects are assigned to the highest scoring match) - if (ov > maxov) - { - maxov = ov; - max_gt_obj_idx = (int)gt_obj_idx; - //store whether the maximum detection is marked as difficult or not - max_is_difficult = (img_object_data[im_idx][gt_obj_idx].difficult); - } - } - } - } - //-- if a match was found, set the ground truth of the current object to true -- - if (maxov != -1.0) - { - CV_Assert(max_gt_obj_idx != -1); - ground_truth[im_idx][ob_idx] = true; - //store whether the maximum detection was marked as 'difficult' or not - detection_difficult[im_idx][ob_idx] = max_is_difficult; - //remove the ground truth object so it doesn't match with subsequent detected objects - //** this is the behaviour defined by the voc documentation ** - detected[im_idx][max_gt_obj_idx] = true; - } -#ifdef PR_DEBUG - if (printed_count < 10) - { - cout << printed_count << ": id=" << images[im_idx].id << ", score=" << scores[im_idx][ob_idx] << " (" << ob_idx << ") [" << bounding_boxes[im_idx][ob_idx].x << "," << - bounding_boxes[im_idx][ob_idx].y << "," << bounding_boxes[im_idx][ob_idx].width + bounding_boxes[im_idx][ob_idx].x << - "," << bounding_boxes[im_idx][ob_idx].height + bounding_boxes[im_idx][ob_idx].y << "] detected=" << ground_truth[im_idx][ob_idx] << - ", difficult=" << detection_difficult[im_idx][ob_idx] << endl; - ++printed_count; - /* print ground truth */ - for (int gt_obj_idx = 0; gt_obj_idx < img_objects[im_idx].size(); ++gt_obj_idx) - { - cout << " GT: [" << img_objects[im_idx][gt_obj_idx].boundingBox.x << "," << - img_objects[im_idx][gt_obj_idx].boundingBox.y << "," << img_objects[im_idx][gt_obj_idx].boundingBox.width + img_objects[im_idx][gt_obj_idx].boundingBox.x << - "," << img_objects[im_idx][gt_obj_idx].boundingBox.height + img_objects[im_idx][gt_obj_idx].boundingBox.y << "]"; - if (gt_obj_idx == max_gt_obj_idx) cout << " <--- (" << maxov << " overlap)"; - cout << endl; - } - } -#endif - } - - return recall_normalization; -} - -//Write VOC-compliant classifier results file -//------------------------------------------- -//INPUTS: -// - obj_class The VOC object class identifier string -// - dataset Specifies whether working with the training or test set -// - images An array of ObdImage containing the images for which data will be saved to the result file -// - scores A corresponding array of confidence scores given a query -// - (competition) If specified, defines which competition the results are for (see VOC documentation - default 1) -//NOTES: -// The result file path and filename are determined automatically using m_results_directory as a base -void VocData::writeClassifierResultsFile( const string& out_dir, const string& obj_class, const ObdDatasetType dataset, const vector& images, const vector& scores, const int competition, const bool overwrite_ifexists) -{ - CV_Assert(images.size() == scores.size()); - - string output_file_base, output_file; - if (dataset == CV_OBD_TRAIN) - { - output_file_base = out_dir + "/comp" + integerToString(competition) + "_cls_" + m_train_set + "_" + obj_class; - } else { - output_file_base = out_dir + "/comp" + integerToString(competition) + "_cls_" + m_test_set + "_" + obj_class; - } - output_file = output_file_base + ".txt"; - - //check if file exists, and if so create a numbered new file instead - if (overwrite_ifexists == false) - { - struct stat stFileInfo; - if (stat(output_file.c_str(),&stFileInfo) == 0) - { - string output_file_new; - int filenum = 0; - do - { - ++filenum; - output_file_new = output_file_base + "_" + integerToString(filenum); - output_file = output_file_new + ".txt"; - } while (stat(output_file.c_str(),&stFileInfo) == 0); - } - } - - //output data to file - std::ofstream result_file(output_file.c_str()); - if (result_file.is_open()) - { - for (size_t i = 0; i < images.size(); ++i) - { - result_file << images[i].id << " " << scores[i] << endl; - } - result_file.close(); - } else { - string err_msg = "could not open classifier results file '" + output_file + "' for writing. Before running for the first time, a 'results' subdirectory should be created within the VOC dataset base directory. e.g. if the VOC data is stored in /VOC/VOC2010 then the path /VOC/results must be created."; - CV_Error(Error::StsError,err_msg.c_str()); - } -} - -//--------------------------------------- -//CALCULATE METRICS FROM VOC RESULTS DATA -//--------------------------------------- - -//Utility function to construct a VOC-standard classification results filename -//---------------------------------------------------------------------------- -//INPUTS: -// - obj_class The VOC object class identifier string -// - task Specifies whether to generate a filename for the classification or detection task -// - dataset Specifies whether working with the training or test set -// - (competition) If specified, defines which competition the results are for (see VOC documentation -// default of -1 means this is set to 1 for the classification task and 3 for the detection task) -// - (number) If specified and above 0, defines which of a number of duplicate results file produced for a given set of -// of settings should be used (this number will be added as a postfix to the filename) -//NOTES: -// This is primarily useful for returning the filename of a classification file previously computed using writeClassifierResultsFile -// for example when calling calcClassifierPrecRecall -string VocData::getResultsFilename(const string& obj_class, const VocTask task, const ObdDatasetType dataset, const int competition, const int number) -{ - if ((competition < 1) && (competition != -1)) - CV_Error(Error::StsBadArg,"competition argument should be a positive non-zero number or -1 to accept the default"); - if ((number < 1) && (number != -1)) - CV_Error(Error::StsBadArg,"number argument should be a positive non-zero number or -1 to accept the default"); - - string dset, task_type; - - if (dataset == CV_OBD_TRAIN) - { - dset = m_train_set; - } else { - dset = m_test_set; - } - - int comp = competition; - if (task == CV_VOC_TASK_CLASSIFICATION) - { - task_type = "cls"; - if (comp == -1) comp = 1; - } else { - task_type = "det"; - if (comp == -1) comp = 3; - } - - stringstream ss; - if (number < 1) - { - ss << "comp" << comp << "_" << task_type << "_" << dset << "_" << obj_class << ".txt"; - } else { - ss << "comp" << comp << "_" << task_type << "_" << dset << "_" << obj_class << "_" << number << ".txt"; - } - - string filename = ss.str(); - return filename; -} - -//Calculate metrics for classification results -//-------------------------------------------- -//INPUTS: -// - ground_truth A vector of booleans determining whether the currently tested class is present in each input image -// - scores A vector containing the similarity score for each input image (higher is more similar) -//OUTPUTS: -// - precision A vector containing the precision calculated at each datapoint of a p-r curve generated from the result set -// - recall A vector containing the recall calculated at each datapoint of a p-r curve generated from the result set -// - ap The ap metric calculated from the result set -// - (ranking) A vector of the same length as 'ground_truth' and 'scores' containing the order of the indices in both of -// these arrays when sorting by the ranking score in descending order -//NOTES: -// The result file path and filename are determined automatically using m_results_directory as a base -void VocData::calcClassifierPrecRecall(const string& obj_class, const vector& images, const vector& scores, vector& precision, vector& recall, float& ap, vector& ranking) -{ - vector res_ground_truth; - getClassifierGroundTruth(obj_class, images, res_ground_truth); - - calcPrecRecall_impl(res_ground_truth, scores, precision, recall, ap, ranking); -} - -void VocData::calcClassifierPrecRecall(const string& obj_class, const vector& images, const vector& scores, vector& precision, vector& recall, float& ap) -{ - vector res_ground_truth; - getClassifierGroundTruth(obj_class, images, res_ground_truth); - - vector ranking; - calcPrecRecall_impl(res_ground_truth, scores, precision, recall, ap, ranking); -} - -//< Overloaded version which accepts VOC classification result file input instead of array of scores/ground truth > -//INPUTS: -// - input_file The path to the VOC standard results file to use for calculating precision/recall -// If a full path is not specified, it is assumed this file is in the VOC standard results directory -// A VOC standard filename can be retrieved (as used by writeClassifierResultsFile) by calling getClassifierResultsFilename - -void VocData::calcClassifierPrecRecall(const string& input_file, vector& precision, vector& recall, float& ap, bool outputRankingFile) -{ - //read in classification results file - vector res_image_codes; - vector res_scores; - - string input_file_std = checkFilenamePathsep(input_file); - readClassifierResultsFile(input_file_std, res_image_codes, res_scores); - - //extract the object class and dataset from the results file filename - string class_name, dataset_name; - extractDataFromResultsFilename(input_file_std, class_name, dataset_name); - - //generate the ground truth for the images extracted from the results file - vector res_ground_truth; - - getClassifierGroundTruth(class_name, res_image_codes, res_ground_truth); - - if (outputRankingFile) - { - /* 1. store sorting order by score (descending) in 'order' */ - vector::const_iterator> > order(res_scores.size()); - - size_t n = 0; - for (vector::const_iterator it = res_scores.begin(); it != res_scores.end(); ++it, ++n) - order[n] = make_pair(n, it); - - std::sort(order.begin(),order.end(),orderingSorter()); - - /* 2. save ranking results to text file */ - string input_file_std1 = checkFilenamePathsep(input_file); - size_t fnamestart = input_file_std1.rfind("/"); - string scoregt_file_str = input_file_std1.substr(0,fnamestart+1) + "scoregt_" + class_name + ".txt"; - std::ofstream scoregt_file(scoregt_file_str.c_str()); - if (scoregt_file.is_open()) - { - for (size_t i = 0; i < res_scores.size(); ++i) - { - scoregt_file << res_image_codes[order[i].first] << " " << res_scores[order[i].first] << " " << res_ground_truth[order[i].first] << endl; - } - scoregt_file.close(); - } else { - string err_msg = "could not open scoregt file '" + scoregt_file_str + "' for writing."; - CV_Error(Error::StsError,err_msg.c_str()); - } - } - - //finally, calculate precision+recall+ap - vector ranking; - calcPrecRecall_impl(res_ground_truth,res_scores,precision,recall,ap,ranking); -} - -//< Protected implementation of Precision-Recall calculation used by both calcClassifierPrecRecall and calcDetectorPrecRecall > - -void VocData::calcPrecRecall_impl(const vector& ground_truth, const vector& scores, vector& precision, vector& recall, float& ap, vector& ranking, int recall_normalization) -{ - CV_Assert(ground_truth.size() == scores.size()); - - //add extra element for p-r at 0 recall (in case that first retrieved is positive) - vector(scores.size()+1).swap(precision); - vector(scores.size()+1).swap(recall); - - // SORT RESULTS BY THEIR SCORE - /* 1. store sorting order in 'order' */ - VocData::getSortOrder(scores, ranking); - -#ifdef PR_DEBUG - std::ofstream scoregt_file("D:/pr.txt"); - if (scoregt_file.is_open()) - { - for (int i = 0; i < scores.size(); ++i) - { - scoregt_file << scores[ranking[i]] << " " << ground_truth[ranking[i]] << endl; - } - scoregt_file.close(); - } -#endif - - // CALCULATE PRECISION+RECALL - - int retrieved_hits = 0; - - int recall_norm; - if (recall_normalization != -1) - { - recall_norm = recall_normalization; - } else { - recall_norm = (int)std::count_if(ground_truth.begin(),ground_truth.end(),std::bind2nd(std::equal_to(),(char)1)); - } - - ap = 0; - recall[0] = 0; - for (size_t idx = 0; idx < ground_truth.size(); ++idx) - { - if (ground_truth[ranking[idx]] != 0) ++retrieved_hits; - - precision[idx+1] = static_cast(retrieved_hits)/static_cast(idx+1); - recall[idx+1] = static_cast(retrieved_hits)/static_cast(recall_norm); - - if (idx == 0) - { - //add further point at 0 recall with the same precision value as the first computed point - precision[idx] = precision[idx+1]; - } - if (recall[idx+1] == 1.0) - { - //if recall = 1, then end early as all positive images have been found - recall.resize(idx+2); - precision.resize(idx+2); - break; - } - } - - /* ap calculation */ - if (m_sampled_ap == false) - { - // FOR VOC2010+ AP IS CALCULATED FROM ALL DATAPOINTS - /* make precision monotonically decreasing for purposes of calculating ap */ - vector precision_monot(precision.size()); - vector::iterator prec_m_it = precision_monot.begin(); - for (vector::iterator prec_it = precision.begin(); prec_it != precision.end(); ++prec_it, ++prec_m_it) - { - vector::iterator max_elem; - max_elem = std::max_element(prec_it,precision.end()); - (*prec_m_it) = (*max_elem); - } - /* calculate ap */ - for (size_t idx = 0; idx < (recall.size()-1); ++idx) - { - ap += (recall[idx+1] - recall[idx])*precision_monot[idx+1] + //no need to take min of prec - is monotonically decreasing - 0.5f*(recall[idx+1] - recall[idx])*std::abs(precision_monot[idx+1] - precision_monot[idx]); - } - } else { - // FOR BEFORE VOC2010 AP IS CALCULATED BY SAMPLING PRECISION AT RECALL 0.0,0.1,..,1.0 - - for (float recall_pos = 0.f; recall_pos <= 1.f; recall_pos += 0.1f) - { - //find iterator of the precision corresponding to the first recall >= recall_pos - vector::iterator recall_it = recall.begin(); - vector::iterator prec_it = precision.begin(); - - while ((*recall_it) < recall_pos) - { - ++recall_it; - ++prec_it; - if (recall_it == recall.end()) break; - } - - /* if no recall >= recall_pos found, this level of recall is never reached so stop adding to ap */ - if (recall_it == recall.end()) break; - - /* if the prec_it is valid, compute the max precision at this level of recall or higher */ - vector::iterator max_prec = std::max_element(prec_it,precision.end()); - - ap += (*max_prec)/11; - } - } -} - -/* functions for calculating confusion matrix rows */ - -//Calculate rows of a confusion matrix -//------------------------------------ -//INPUTS: -// - obj_class The VOC object class identifier string for the confusion matrix row to compute -// - images An array of ObdImage containing the images to use for the computation -// - scores A corresponding array of confidence scores for the presence of obj_class in each image -// - cond Defines whether to use a cut off point based on recall (CV_VOC_CCOND_RECALL) or score -// (CV_VOC_CCOND_SCORETHRESH) the latter is useful for classifier detections where positive -// values are positive detections and negative values are negative detections -// - threshold Threshold value for cond. In case of CV_VOC_CCOND_RECALL, is proportion recall (e.g. 0.5). -// In the case of CV_VOC_CCOND_SCORETHRESH is the value above which to count results. -//OUTPUTS: -// - output_headers An output vector of object class headers for the confusion matrix row -// - output_values An output vector of values for the confusion matrix row corresponding to the classes -// defined in output_headers -//NOTES: -// The methodology used by the classifier version of this function is that true positives have a single unit -// added to the obj_class column in the confusion matrix row, whereas false positives have a single unit -// distributed in proportion between all the columns in the confusion matrix row corresponding to the objects -// present in the image. -void VocData::calcClassifierConfMatRow(const string& obj_class, const vector& images, const vector& scores, const VocConfCond cond, const float threshold, vector& output_headers, vector& output_values) -{ - CV_Assert(images.size() == scores.size()); - - // SORT RESULTS BY THEIR SCORE - /* 1. store sorting order in 'ranking' */ - vector ranking; - VocData::getSortOrder(scores, ranking); - - // CALCULATE CONFUSION MATRIX ENTRIES - /* prepare object category headers */ - output_headers = m_object_classes; - vector(output_headers.size(),0.0).swap(output_values); - /* find the index of the target object class in the headers for later use */ - int target_idx; - { - vector::iterator target_idx_it = std::find(output_headers.begin(),output_headers.end(),obj_class); - /* if the target class can not be found, raise an exception */ - if (target_idx_it == output_headers.end()) - { - string err_msg = "could not find the target object class '" + obj_class + "' in list of valid classes."; - CV_Error(Error::StsError,err_msg.c_str()); - } - /* convert iterator to index */ - target_idx = (int)std::distance(output_headers.begin(),target_idx_it); - } - - /* prepare variables related to calculating recall if using the recall threshold */ - int retrieved_hits = 0; - int total_relevant = 0; - if (cond == CV_VOC_CCOND_RECALL) - { - vector ground_truth; - /* in order to calculate the total number of relevant images for normalization of recall - it's necessary to extract the ground truth for the images under consideration */ - getClassifierGroundTruth(obj_class, images, ground_truth); - total_relevant = (int)std::count_if(ground_truth.begin(),ground_truth.end(),std::bind2nd(std::equal_to(),(char)1)); - } - - /* iterate through images */ - vector img_objects; - vector img_object_data; - int total_images = 0; - for (size_t image_idx = 0; image_idx < images.size(); ++image_idx) - { - /* if using the score as the break condition, check for it now */ - if (cond == CV_VOC_CCOND_SCORETHRESH) - { - if (scores[ranking[image_idx]] <= threshold) break; - } - /* if continuing for this iteration, increment the image counter for later normalization */ - ++total_images; - /* for each image retrieve the objects contained */ - getObjects(images[ranking[image_idx]].id, img_objects, img_object_data); - //check if the tested for object class is present - if (getClassifierGroundTruthImage(obj_class, images[ranking[image_idx]].id)) - { - //if the target class is present, assign fully to the target class element in the confusion matrix row - output_values[target_idx] += 1.0; - if (cond == CV_VOC_CCOND_RECALL) ++retrieved_hits; - } else { - //first delete all objects marked as difficult - for (size_t obj_idx = 0; obj_idx < img_objects.size(); ++obj_idx) - { - if (img_object_data[obj_idx].difficult == true) - { - vector::iterator it1 = img_objects.begin(); - std::advance(it1,obj_idx); - img_objects.erase(it1); - vector::iterator it2 = img_object_data.begin(); - std::advance(it2,obj_idx); - img_object_data.erase(it2); - --obj_idx; - } - } - //if the target class is not present, add values to the confusion matrix row in equal proportions to all objects present in the image - for (size_t obj_idx = 0; obj_idx < img_objects.size(); ++obj_idx) - { - //find the index of the currently considered object - vector::iterator class_idx_it = std::find(output_headers.begin(),output_headers.end(),img_objects[obj_idx].object_class); - //if the class name extracted from the ground truth file could not be found in the list of available classes, raise an exception - if (class_idx_it == output_headers.end()) - { - string err_msg = "could not find object class '" + img_objects[obj_idx].object_class + "' specified in the ground truth file of '" + images[ranking[image_idx]].id +"'in list of valid classes."; - CV_Error(Error::StsError,err_msg.c_str()); - } - /* convert iterator to index */ - int class_idx = (int)std::distance(output_headers.begin(),class_idx_it); - //add to confusion matrix row in proportion - output_values[class_idx] += 1.f/static_cast(img_objects.size()); - } - } - //check break conditions if breaking on certain level of recall - if (cond == CV_VOC_CCOND_RECALL) - { - if(static_cast(retrieved_hits)/static_cast(total_relevant) >= threshold) break; - } - } - /* finally, normalize confusion matrix row */ - for (vector::iterator it = output_values.begin(); it < output_values.end(); ++it) - { - (*it) /= static_cast(total_images); - } -} - -// NOTE: doesn't ignore repeated detections -void VocData::calcDetectorConfMatRow(const string& obj_class, const ObdDatasetType dataset, const vector& images, const vector >& scores, const vector >& bounding_boxes, const VocConfCond cond, const float threshold, vector& output_headers, vector& output_values, bool ignore_difficult) -{ - CV_Assert(images.size() == scores.size()); - CV_Assert(images.size() == bounding_boxes.size()); - - //collapse scores and ground_truth vectors into 1D vectors to allow ranking - /* define final flat vectors */ - vector images_flat; - vector scores_flat; - vector bounding_boxes_flat; - { - /* first count how many objects to allow preallocation */ - int obj_count = 0; - CV_Assert(scores.size() == bounding_boxes.size()); - for (size_t img_idx = 0; img_idx < scores.size(); ++img_idx) - { - CV_Assert(scores[img_idx].size() == bounding_boxes[img_idx].size()); - for (size_t obj_idx = 0; obj_idx < scores[img_idx].size(); ++obj_idx) - { - ++obj_count; - } - } - /* preallocate vectors */ - images_flat.resize(obj_count); - scores_flat.resize(obj_count); - bounding_boxes_flat.resize(obj_count); - /* now copy across to preallocated vectors */ - int flat_pos = 0; - for (size_t img_idx = 0; img_idx < scores.size(); ++img_idx) - { - for (size_t obj_idx = 0; obj_idx < scores[img_idx].size(); ++obj_idx) - { - images_flat[flat_pos] = images[img_idx].id; - scores_flat[flat_pos] = scores[img_idx][obj_idx]; - bounding_boxes_flat[flat_pos] = bounding_boxes[img_idx][obj_idx]; - ++flat_pos; - } - } - } - - // SORT RESULTS BY THEIR SCORE - /* 1. store sorting order in 'ranking' */ - vector ranking; - VocData::getSortOrder(scores_flat, ranking); - - // CALCULATE CONFUSION MATRIX ENTRIES - /* prepare object category headers */ - output_headers = m_object_classes; - output_headers.push_back("background"); - vector(output_headers.size(),0.0).swap(output_values); - - /* prepare variables related to calculating recall if using the recall threshold */ - int retrieved_hits = 0; - int total_relevant = 0; - if (cond == CV_VOC_CCOND_RECALL) - { -// vector ground_truth; -// /* in order to calculate the total number of relevant images for normalization of recall -// it's necessary to extract the ground truth for the images under consideration */ -// getClassifierGroundTruth(obj_class, images, ground_truth); -// total_relevant = std::count_if(ground_truth.begin(),ground_truth.end(),std::bind2nd(std::equal_to(),true)); - /* calculate the total number of objects in the ground truth for the current dataset */ - vector gt_images; - vector gt_object_present; - getClassImages(obj_class, dataset, gt_images, gt_object_present); - - for (size_t image_idx = 0; image_idx < gt_images.size(); ++image_idx) - { - vector gt_img_objects; - vector gt_img_object_data; - getObjects(gt_images[image_idx].id, gt_img_objects, gt_img_object_data); - for (size_t obj_idx = 0; obj_idx < gt_img_objects.size(); ++obj_idx) - { - if (gt_img_objects[obj_idx].object_class == obj_class) - { - if ((gt_img_object_data[obj_idx].difficult == false) || (ignore_difficult == false)) - ++total_relevant; - } - } - } - } - - /* iterate through objects */ - vector img_objects; - vector img_object_data; - int total_objects = 0; - for (size_t image_idx = 0; image_idx < images.size(); ++image_idx) - { - /* if using the score as the break condition, check for it now */ - if (cond == CV_VOC_CCOND_SCORETHRESH) - { - if (scores_flat[ranking[image_idx]] <= threshold) break; - } - /* increment the image counter for later normalization */ - ++total_objects; - /* for each image retrieve the objects contained */ - getObjects(images[ranking[image_idx]].id, img_objects, img_object_data); - - //find the ground truth object which has the highest overlap score with the detected object - float maxov = -1.0; - int max_gt_obj_idx = -1; - //-- for each detected object iterate through objects present in ground truth -- - for (size_t gt_obj_idx = 0; gt_obj_idx < img_objects.size(); ++gt_obj_idx) - { - //check difficulty flag - if (ignore_difficult || (img_object_data[gt_obj_idx].difficult == false)) - { - //if the class matches, then check if the detected object and ground truth object overlap by a sufficient margin - float ov = testBoundingBoxesForOverlap(bounding_boxes_flat[ranking[image_idx]], img_objects[gt_obj_idx].boundingBox); - if (ov != -1.f) - { - //if all conditions are met store the overlap score and index (as objects are assigned to the highest scoring match) - if (ov > maxov) - { - maxov = ov; - max_gt_obj_idx = (int)gt_obj_idx; - } - } - } - } - - //assign to appropriate object class if an object was detected - if (maxov != -1.0) - { - //find the index of the currently considered object - vector::iterator class_idx_it = std::find(output_headers.begin(),output_headers.end(),img_objects[max_gt_obj_idx].object_class); - //if the class name extracted from the ground truth file could not be found in the list of available classes, raise an exception - if (class_idx_it == output_headers.end()) - { - string err_msg = "could not find object class '" + img_objects[max_gt_obj_idx].object_class + "' specified in the ground truth file of '" + images[ranking[image_idx]].id +"'in list of valid classes."; - CV_Error(Error::StsError,err_msg.c_str()); - } - /* convert iterator to index */ - int class_idx = (int)std::distance(output_headers.begin(),class_idx_it); - //add to confusion matrix row in proportion - output_values[class_idx] += 1.0; - } else { - //otherwise assign to background class - output_values[output_values.size()-1] += 1.0; - } - - //check break conditions if breaking on certain level of recall - if (cond == CV_VOC_CCOND_RECALL) - { - if(static_cast(retrieved_hits)/static_cast(total_relevant) >= threshold) break; - } - } - - /* finally, normalize confusion matrix row */ - for (vector::iterator it = output_values.begin(); it < output_values.end(); ++it) - { - (*it) /= static_cast(total_objects); - } -} - -//Save Precision-Recall results to a p-r curve in GNUPlot format -//-------------------------------------------------------------- -//INPUTS: -// - output_file The file to which to save the GNUPlot data file. If only a filename is specified, the data -// file is saved to the standard VOC results directory. -// - precision Vector of precisions as returned from calcClassifier/DetectorPrecRecall -// - recall Vector of recalls as returned from calcClassifier/DetectorPrecRecall -// - ap ap as returned from calcClassifier/DetectorPrecRecall -// - (title) Title to use for the plot (if not specified, just the ap is printed as the title) -// This also specifies the filename of the output file if printing to pdf -// - (plot_type) Specifies whether to instruct GNUPlot to save to a PDF file (CV_VOC_PLOT_PDF) or directly -// to screen (CV_VOC_PLOT_SCREEN) in the datafile -//NOTES: -// The GNUPlot data file can be executed using GNUPlot from the commandline in the following way: -// >> GNUPlot -// This will then display the p-r curve on the screen or save it to a pdf file depending on plot_type - -void VocData::savePrecRecallToGnuplot(const string& output_file, const vector& precision, const vector& recall, const float ap, const string title, const VocPlotType plot_type) -{ - string output_file_std = checkFilenamePathsep(output_file); - - //if no directory is specified, by default save the output file in the results directory -// if (output_file_std.find("/") == output_file_std.npos) -// { -// output_file_std = m_results_directory + output_file_std; -// } - - std::ofstream plot_file(output_file_std.c_str()); - - if (plot_file.is_open()) - { - plot_file << "set xrange [0:1]" << endl; - plot_file << "set yrange [0:1]" << endl; - plot_file << "set size square" << endl; - string title_text = title; - if (title_text.size() == 0) title_text = "Precision-Recall Curve"; - plot_file << "set title \"" << title_text << " (ap: " << ap << ")\"" << endl; - plot_file << "set xlabel \"Recall\"" << endl; - plot_file << "set ylabel \"Precision\"" << endl; - plot_file << "set style data lines" << endl; - plot_file << "set nokey" << endl; - if (plot_type == CV_VOC_PLOT_PNG) - { - plot_file << "set terminal png" << endl; - string pdf_filename; - if (title.size() != 0) - { - pdf_filename = title; - } else { - pdf_filename = "prcurve"; - } - plot_file << "set out \"" << title << ".png\"" << endl; - } - plot_file << "plot \"-\" using 1:2" << endl; - plot_file << "# X Y" << endl; - CV_Assert(precision.size() == recall.size()); - for (size_t i = 0; i < precision.size(); ++i) - { - plot_file << " " << recall[i] << " " << precision[i] << endl; - } - plot_file << "end" << endl; - if (plot_type == CV_VOC_PLOT_SCREEN) - { - plot_file << "pause -1" << endl; - } - plot_file.close(); - } else { - string err_msg = "could not open plot file '" + output_file_std + "' for writing."; - CV_Error(Error::StsError,err_msg.c_str()); - } -} - -void VocData::readClassifierGroundTruth(const string& obj_class, const ObdDatasetType dataset, vector& images, vector& object_present) -{ - images.clear(); - - string gtFilename = m_class_imageset_path; - gtFilename.replace(gtFilename.find("%s"),2,obj_class); - if (dataset == CV_OBD_TRAIN) - { - gtFilename.replace(gtFilename.find("%s"),2,m_train_set); - } else { - gtFilename.replace(gtFilename.find("%s"),2,m_test_set); - } - - vector image_codes; - readClassifierGroundTruth(gtFilename, image_codes, object_present); - - convertImageCodesToObdImages(image_codes, images); -} - -void VocData::readClassifierResultsFile(const std:: string& input_file, vector& images, vector& scores) -{ - images.clear(); - - string input_file_std = checkFilenamePathsep(input_file); - - //if no directory is specified, by default search for the input file in the results directory -// if (input_file_std.find("/") == input_file_std.npos) -// { -// input_file_std = m_results_directory + input_file_std; -// } - - vector image_codes; - readClassifierResultsFile(input_file_std, image_codes, scores); - - convertImageCodesToObdImages(image_codes, images); -} - -void VocData::readDetectorResultsFile(const string& input_file, vector& images, vector >& scores, vector >& bounding_boxes) -{ - images.clear(); - - string input_file_std = checkFilenamePathsep(input_file); - - //if no directory is specified, by default search for the input file in the results directory -// if (input_file_std.find("/") == input_file_std.npos) -// { -// input_file_std = m_results_directory + input_file_std; -// } - - vector image_codes; - readDetectorResultsFile(input_file_std, image_codes, scores, bounding_boxes); - - convertImageCodesToObdImages(image_codes, images); -} - -const vector& VocData::getObjectClasses() -{ - return m_object_classes; -} - -//string VocData::getResultsDirectory() -//{ -// return m_results_directory; -//} - -//--------------------------------------------------------- -// Protected Functions ------------------------------------ -//--------------------------------------------------------- - -static string getVocName( const string& vocPath ) -{ - size_t found = vocPath.rfind( '/' ); - if( found == string::npos ) - { - found = vocPath.rfind( '\\' ); - if( found == string::npos ) - return vocPath; - } - return vocPath.substr(found + 1, vocPath.size() - found); -} - -void VocData::initVoc( const string& vocPath, const bool useTestDataset ) -{ - initVoc2007to2010( vocPath, useTestDataset ); -} - -//Initialize file paths and settings for the VOC 2010 dataset -//----------------------------------------------------------- -void VocData::initVoc2007to2010( const string& vocPath, const bool useTestDataset ) -{ - //check format of root directory and modify if necessary - - m_vocName = getVocName( vocPath ); - - CV_Assert( !m_vocName.compare("VOC2007") || !m_vocName.compare("VOC2008") || - !m_vocName.compare("VOC2009") || !m_vocName.compare("VOC2010") ); - - m_vocPath = checkFilenamePathsep( vocPath, true ); - - if (useTestDataset) - { - m_train_set = "trainval"; - m_test_set = "test"; - } else { - m_train_set = "train"; - m_test_set = "val"; - } - - // initialize main classification/detection challenge paths - m_annotation_path = m_vocPath + "/Annotations/%s.xml"; - m_image_path = m_vocPath + "/JPEGImages/%s.jpg"; - m_imageset_path = m_vocPath + "/ImageSets/Main/%s.txt"; - m_class_imageset_path = m_vocPath + "/ImageSets/Main/%s_%s.txt"; - - //define available object_classes for VOC2010 dataset - m_object_classes.push_back("aeroplane"); - m_object_classes.push_back("bicycle"); - m_object_classes.push_back("bird"); - m_object_classes.push_back("boat"); - m_object_classes.push_back("bottle"); - m_object_classes.push_back("bus"); - m_object_classes.push_back("car"); - m_object_classes.push_back("cat"); - m_object_classes.push_back("chair"); - m_object_classes.push_back("cow"); - m_object_classes.push_back("diningtable"); - m_object_classes.push_back("dog"); - m_object_classes.push_back("horse"); - m_object_classes.push_back("motorbike"); - m_object_classes.push_back("person"); - m_object_classes.push_back("pottedplant"); - m_object_classes.push_back("sheep"); - m_object_classes.push_back("sofa"); - m_object_classes.push_back("train"); - m_object_classes.push_back("tvmonitor"); - - m_min_overlap = 0.5; - - //up until VOC 2010, ap was calculated by sampling p-r curve, not taking complete curve - m_sampled_ap = ((m_vocName == "VOC2007") || (m_vocName == "VOC2008") || (m_vocName == "VOC2009")); -} - -//Read a VOC classification ground truth text file for a given object class and dataset -//------------------------------------------------------------------------------------- -//INPUTS: -// - filename The path of the text file to read -//OUTPUTS: -// - image_codes VOC image codes extracted from the GT file in the form 20XX_XXXXXX where the first four -// digits specify the year of the dataset, and the last group specifies a unique ID -// - object_present For each image in the 'image_codes' array, specifies whether the object class described -// in the loaded GT file is present or not -void VocData::readClassifierGroundTruth(const string& filename, vector& image_codes, vector& object_present) -{ - image_codes.clear(); - object_present.clear(); - - std::ifstream gtfile(filename.c_str()); - if (!gtfile.is_open()) - { - string err_msg = "could not open VOC ground truth textfile '" + filename + "'."; - CV_Error(Error::StsError,err_msg.c_str()); - } - - string line; - string image; - int obj_present = 0; - while (!gtfile.eof()) - { - std::getline(gtfile,line); - std::istringstream iss(line); - iss >> image >> obj_present; - if (!iss.fail()) - { - image_codes.push_back(image); - object_present.push_back(obj_present == 1); - } else { - if (!gtfile.eof()) CV_Error(Error::StsParseError,"error parsing VOC ground truth textfile."); - } - } - gtfile.close(); -} - -void VocData::readClassifierResultsFile(const string& input_file, vector& image_codes, vector& scores) -{ - //check if results file exists - std::ifstream result_file(input_file.c_str()); - if (result_file.is_open()) - { - string line; - string image; - float score; - //read in the results file - while (!result_file.eof()) - { - std::getline(result_file,line); - std::istringstream iss(line); - iss >> image >> score; - if (!iss.fail()) - { - image_codes.push_back(image); - scores.push_back(score); - } else { - if(!result_file.eof()) CV_Error(Error::StsParseError,"error parsing VOC classifier results file."); - } - } - result_file.close(); - } else { - string err_msg = "could not open classifier results file '" + input_file + "' for reading."; - CV_Error(Error::StsError,err_msg.c_str()); - } -} - -void VocData::readDetectorResultsFile(const string& input_file, vector& image_codes, vector >& scores, vector >& bounding_boxes) -{ - image_codes.clear(); - scores.clear(); - bounding_boxes.clear(); - - //check if results file exists - std::ifstream result_file(input_file.c_str()); - if (result_file.is_open()) - { - string line; - string image; - Rect bounding_box; - float score; - //read in the results file - while (!result_file.eof()) - { - std::getline(result_file,line); - std::istringstream iss(line); - iss >> image >> score >> bounding_box.x >> bounding_box.y >> bounding_box.width >> bounding_box.height; - if (!iss.fail()) - { - //convert right and bottom positions to width and height - bounding_box.width -= bounding_box.x; - bounding_box.height -= bounding_box.y; - //convert to 0-indexing - bounding_box.x -= 1; - bounding_box.y -= 1; - //store in output vectors - /* first check if the current image code has been seen before */ - vector::iterator image_codes_it = std::find(image_codes.begin(),image_codes.end(),image); - if (image_codes_it == image_codes.end()) - { - image_codes.push_back(image); - vector score_vect(1); - score_vect[0] = score; - scores.push_back(score_vect); - vector bounding_box_vect(1); - bounding_box_vect[0] = bounding_box; - bounding_boxes.push_back(bounding_box_vect); - } else { - /* if the image index has been seen before, add the current object below it in the 2D arrays */ - int image_idx = (int)std::distance(image_codes.begin(),image_codes_it); - scores[image_idx].push_back(score); - bounding_boxes[image_idx].push_back(bounding_box); - } - } else { - if(!result_file.eof()) CV_Error(Error::StsParseError,"error parsing VOC detector results file."); - } - } - result_file.close(); - } else { - string err_msg = "could not open detector results file '" + input_file + "' for reading."; - CV_Error(Error::StsError,err_msg.c_str()); - } -} - - -//Read a VOC annotation xml file for a given image -//------------------------------------------------ -//INPUTS: -// - filename The path of the xml file to read -//OUTPUTS: -// - objects Array of VocObject describing all object instances present in the given image -void VocData::extractVocObjects(const string filename, vector& objects, vector& object_data) -{ -#ifdef PR_DEBUG - int block = 1; - cout << "SAMPLE VOC OBJECT EXTRACTION for " << filename << ":" << endl; -#endif - objects.clear(); - object_data.clear(); - - string contents, object_contents, tag_contents; - - readFileToString(filename, contents); - - //keep on extracting 'object' blocks until no more can be found - if (extractXMLBlock(contents, "annotation", 0, contents) != -1) - { - int searchpos = 0; - searchpos = extractXMLBlock(contents, "object", searchpos, object_contents); - while (searchpos != -1) - { -#ifdef PR_DEBUG - cout << "SEARCHPOS:" << searchpos << endl; - cout << "start block " << block << " ---------" << endl; - cout << object_contents << endl; - cout << "end block " << block << " -----------" << endl; - ++block; -#endif - - ObdObject object; - VocObjectData object_d; - - //object class ------------- - - if (extractXMLBlock(object_contents, "name", 0, tag_contents) == -1) CV_Error(Error::StsError,"missing tag in object definition of '" + filename + "'"); - object.object_class.swap(tag_contents); - - //object bounding box ------------- - - int xmax, xmin, ymax, ymin; - - if (extractXMLBlock(object_contents, "xmax", 0, tag_contents) == -1) CV_Error(Error::StsError,"missing tag in object definition of '" + filename + "'"); - xmax = stringToInteger(tag_contents); - - if (extractXMLBlock(object_contents, "xmin", 0, tag_contents) == -1) CV_Error(Error::StsError,"missing tag in object definition of '" + filename + "'"); - xmin = stringToInteger(tag_contents); - - if (extractXMLBlock(object_contents, "ymax", 0, tag_contents) == -1) CV_Error(Error::StsError,"missing tag in object definition of '" + filename + "'"); - ymax = stringToInteger(tag_contents); - - if (extractXMLBlock(object_contents, "ymin", 0, tag_contents) == -1) CV_Error(Error::StsError,"missing tag in object definition of '" + filename + "'"); - ymin = stringToInteger(tag_contents); - - object.boundingBox.x = xmin-1; //convert to 0-based indexing - object.boundingBox.width = xmax - xmin; - object.boundingBox.y = ymin-1; - object.boundingBox.height = ymax - ymin; - - CV_Assert(xmin != 0); - CV_Assert(xmax > xmin); - CV_Assert(ymin != 0); - CV_Assert(ymax > ymin); - - - //object tags ------------- - - if (extractXMLBlock(object_contents, "difficult", 0, tag_contents) != -1) - { - object_d.difficult = (tag_contents == "1"); - } else object_d.difficult = false; - if (extractXMLBlock(object_contents, "occluded", 0, tag_contents) != -1) - { - object_d.occluded = (tag_contents == "1"); - } else object_d.occluded = false; - if (extractXMLBlock(object_contents, "truncated", 0, tag_contents) != -1) - { - object_d.truncated = (tag_contents == "1"); - } else object_d.truncated = false; - if (extractXMLBlock(object_contents, "pose", 0, tag_contents) != -1) - { - if (tag_contents == "Frontal") object_d.pose = CV_VOC_POSE_FRONTAL; - if (tag_contents == "Rear") object_d.pose = CV_VOC_POSE_REAR; - if (tag_contents == "Left") object_d.pose = CV_VOC_POSE_LEFT; - if (tag_contents == "Right") object_d.pose = CV_VOC_POSE_RIGHT; - } - - //add to array of objects - objects.push_back(object); - object_data.push_back(object_d); - - //extract next 'object' block from file if it exists - searchpos = extractXMLBlock(contents, "object", searchpos, object_contents); - } - } -} - -//Converts an image identifier string in the format YYYY_XXXXXX to a single index integer of form XXXXXXYYYY -//where Y represents a year and returns the image path -//---------------------------------------------------------------------------------------------------------- -string VocData::getImagePath(const string& input_str) -{ - string path = m_image_path; - path.replace(path.find("%s"),2,input_str); - return path; -} - -//Tests two boundary boxes for overlap (using the intersection over union metric) and returns the overlap if the objects -//defined by the two bounding boxes are considered to be matched according to the criterion outlined in -//the VOC documentation [namely intersection/union > some threshold] otherwise returns -1.0 (no match) -//---------------------------------------------------------------------------------------------------------- -float VocData::testBoundingBoxesForOverlap(const Rect detection, const Rect ground_truth) -{ - int detection_x2 = detection.x + detection.width; - int detection_y2 = detection.y + detection.height; - int ground_truth_x2 = ground_truth.x + ground_truth.width; - int ground_truth_y2 = ground_truth.y + ground_truth.height; - //first calculate the boundaries of the intersection of the rectangles - int intersection_x = std::max(detection.x, ground_truth.x); //rightmost left - int intersection_y = std::max(detection.y, ground_truth.y); //bottommost top - int intersection_x2 = std::min(detection_x2, ground_truth_x2); //leftmost right - int intersection_y2 = std::min(detection_y2, ground_truth_y2); //topmost bottom - //then calculate the width and height of the intersection rect - int intersection_width = intersection_x2 - intersection_x + 1; - int intersection_height = intersection_y2 - intersection_y + 1; - //if there is no overlap then return false straight away - if ((intersection_width <= 0) || (intersection_height <= 0)) return -1.0; - //otherwise calculate the intersection - int intersection_area = intersection_width*intersection_height; - - //now calculate the union - int union_area = (detection.width+1)*(detection.height+1) + (ground_truth.width+1)*(ground_truth.height+1) - intersection_area; - - //calculate the intersection over union and use as threshold as per VOC documentation - float overlap = static_cast(intersection_area)/static_cast(union_area); - if (overlap > m_min_overlap) - { - return overlap; - } else { - return -1.0; - } -} - -//Extracts the object class and dataset from the filename of a VOC standard results text file, which takes -//the format 'comp_{cls/det}__.txt' -//---------------------------------------------------------------------------------------------------------- -void VocData::extractDataFromResultsFilename(const string& input_file, string& class_name, string& dataset_name) -{ - string input_file_std = checkFilenamePathsep(input_file); - - size_t fnamestart = input_file_std.rfind("/"); - size_t fnameend = input_file_std.rfind(".txt"); - - if ((fnamestart == input_file_std.npos) || (fnameend == input_file_std.npos)) - CV_Error(Error::StsError,"Could not extract filename of results file."); - - ++fnamestart; - if (fnamestart >= fnameend) - CV_Error(Error::StsError,"Could not extract filename of results file."); - - //extract dataset and class names, triggering exception if the filename format is not correct - string filename = input_file_std.substr(fnamestart, fnameend-fnamestart); - size_t datasetstart = filename.find("_"); - datasetstart = filename.find("_",datasetstart+1); - size_t classstart = filename.find("_",datasetstart+1); - //allow for appended index after a further '_' by discarding this part if it exists - size_t classend = filename.find("_",classstart+1); - if (classend == filename.npos) classend = filename.size(); - if ((datasetstart == filename.npos) || (classstart == filename.npos)) - CV_Error(Error::StsError,"Error parsing results filename. Is it in standard format of 'comp_{cls/det}__.txt'?"); - ++datasetstart; - ++classstart; - if (((datasetstart-classstart) < 1) || ((classend-datasetstart) < 1)) - CV_Error(Error::StsError,"Error parsing results filename. Is it in standard format of 'comp_{cls/det}__.txt'?"); - - dataset_name = filename.substr(datasetstart,classstart-datasetstart-1); - class_name = filename.substr(classstart,classend-classstart); -} - -bool VocData::getClassifierGroundTruthImage(const string& obj_class, const string& id) -{ - /* if the classifier ground truth data for all images of the current class has not been loaded yet, load it now */ - if (m_classifier_gt_all_ids.empty() || (m_classifier_gt_class != obj_class)) - { - m_classifier_gt_all_ids.clear(); - m_classifier_gt_all_present.clear(); - m_classifier_gt_class = obj_class; - for (int i=0; i<2; ++i) //run twice (once over test set and once over training set) - { - //generate the filename of the classification ground-truth textfile for the object class - string gtFilename = m_class_imageset_path; - gtFilename.replace(gtFilename.find("%s"),2,obj_class); - if (i == 0) - { - gtFilename.replace(gtFilename.find("%s"),2,m_train_set); - } else { - gtFilename.replace(gtFilename.find("%s"),2,m_test_set); - } - - //parse the ground truth file, storing in two separate vectors - //for the image code and the ground truth value - vector image_codes; - vector object_present; - readClassifierGroundTruth(gtFilename, image_codes, object_present); - - m_classifier_gt_all_ids.insert(m_classifier_gt_all_ids.end(),image_codes.begin(),image_codes.end()); - m_classifier_gt_all_present.insert(m_classifier_gt_all_present.end(),object_present.begin(),object_present.end()); - - CV_Assert(m_classifier_gt_all_ids.size() == m_classifier_gt_all_present.size()); - } - } - - - //search for the image code - vector::iterator it = find (m_classifier_gt_all_ids.begin(), m_classifier_gt_all_ids.end(), id); - if (it != m_classifier_gt_all_ids.end()) - { - //image found, so return corresponding ground truth - return m_classifier_gt_all_present[std::distance(m_classifier_gt_all_ids.begin(),it)] != 0; - } else { - string err_msg = "could not find classifier ground truth for image '" + id + "' and class '" + obj_class + "'"; - CV_Error(Error::StsError,err_msg.c_str()); - } - - return true; -} - -//------------------------------------------------------------------- -// Protected Functions (utility) ------------------------------------ -//------------------------------------------------------------------- - -//returns a vector containing indexes of the input vector in sorted ascending/descending order -void VocData::getSortOrder(const vector& values, vector& order, bool descending) -{ - /* 1. store sorting order in 'order_pair' */ - vector::const_iterator> > order_pair(values.size()); - - size_t n = 0; - for (vector::const_iterator it = values.begin(); it != values.end(); ++it, ++n) - order_pair[n] = make_pair(n, it); - - std::sort(order_pair.begin(),order_pair.end(),orderingSorter()); - if (descending == false) std::reverse(order_pair.begin(),order_pair.end()); - - vector(order_pair.size()).swap(order); - for (size_t i = 0; i < order_pair.size(); ++i) - { - order[i] = order_pair[i].first; - } -} - -void VocData::readFileToString(const string filename, string& file_contents) -{ - std::ifstream ifs(filename.c_str()); - if (!ifs.is_open()) CV_Error(Error::StsError,"could not open text file"); - - stringstream oss; - oss << ifs.rdbuf(); - - file_contents = oss.str(); -} - -int VocData::stringToInteger(const string input_str) -{ - int result = 0; - - stringstream ss(input_str); - if ((ss >> result).fail()) - { - CV_Error(Error::StsBadArg,"could not perform string to integer conversion"); - } - return result; -} - -string VocData::integerToString(const int input_int) -{ - string result; - - stringstream ss; - if ((ss << input_int).fail()) - { - CV_Error(Error::StsBadArg,"could not perform integer to string conversion"); - } - result = ss.str(); - return result; -} - -string VocData::checkFilenamePathsep( const string filename, bool add_trailing_slash ) -{ - string filename_new = filename; - - size_t pos = filename_new.find("\\\\"); - while (pos != filename_new.npos) - { - filename_new.replace(pos,2,"/"); - pos = filename_new.find("\\\\", pos); - } - pos = filename_new.find("\\"); - while (pos != filename_new.npos) - { - filename_new.replace(pos,1,"/"); - pos = filename_new.find("\\", pos); - } - if (add_trailing_slash) - { - //add training slash if this is missing - if (filename_new.rfind("/") != filename_new.length()-1) filename_new += "/"; - } - - return filename_new; -} - -void VocData::convertImageCodesToObdImages(const vector& image_codes, vector& images) -{ - images.clear(); - images.reserve(image_codes.size()); - - string path; - //transfer to output arrays - for (size_t i = 0; i < image_codes.size(); ++i) - { - //generate image path and indices from extracted string code - path = getImagePath(image_codes[i]); - images.push_back(ObdImage(image_codes[i], path)); - } -} - -//Extract text from within a given tag from an XML file -//----------------------------------------------------- -//INPUTS: -// - src XML source file -// - tag XML tag delimiting block to extract -// - searchpos position within src at which to start search -//OUTPUTS: -// - tag_contents text extracted between and tags -//RETURN VALUE: -// - the position of the final character extracted in tag_contents within src -// (can be used to call extractXMLBlock recursively to extract multiple blocks) -// returns -1 if the tag could not be found -int VocData::extractXMLBlock(const string src, const string tag, const int searchpos, string& tag_contents) -{ - size_t startpos, next_startpos, endpos; - int embed_count = 1; - - //find position of opening tag - startpos = src.find("<" + tag + ">", searchpos); - if (startpos == string::npos) return -1; - - //initialize endpos - - // start searching for end tag anywhere after opening tag - endpos = startpos; - - //find position of next opening tag - next_startpos = src.find("<" + tag + ">", startpos+1); - - //match opening tags with closing tags, and only - //accept final closing tag of same level as original - //opening tag - while (embed_count > 0) - { - endpos = src.find("", endpos+1); - if (endpos == string::npos) return -1; - - //the next code is only executed if there are embedded tags with the same name - if (next_startpos != string::npos) - { - while (next_startpos", next_startpos+1); - if (next_startpos == string::npos) break; - } - } - //passing end tag so decrement nesting level - --embed_count; - } - - //finally, extract the tag region - startpos += tag.length() + 2; - if (startpos > src.length()) return -1; - if (endpos > src.length()) return -1; - tag_contents = src.substr(startpos,endpos-startpos); - return static_cast(endpos); -} - -/****************************************************************************************\ -* Sample on image classification * -\****************************************************************************************/ -// -// This part of the code was a little refactor -// -struct DDMParams -{ - DDMParams() : detectorType("SURF"), descriptorType("SURF"), matcherType("BruteForce") {} - DDMParams( const string _detectorType, const string _descriptorType, const string& _matcherType ) : - detectorType(_detectorType), descriptorType(_descriptorType), matcherType(_matcherType){} - void read( const FileNode& fn ) - { - fn["detectorType"] >> detectorType; - fn["descriptorType"] >> descriptorType; - fn["matcherType"] >> matcherType; - } - void write( FileStorage& fs ) const - { - fs << "detectorType" << detectorType; - fs << "descriptorType" << descriptorType; - fs << "matcherType" << matcherType; - } - void print() const - { - cout << "detectorType: " << detectorType << endl; - cout << "descriptorType: " << descriptorType << endl; - cout << "matcherType: " << matcherType << endl; - } - - string detectorType; - string descriptorType; - string matcherType; -}; - -struct VocabTrainParams -{ - VocabTrainParams() : trainObjClass("chair"), vocabSize(1000), memoryUse(200), descProportion(0.3f) {} - VocabTrainParams( const string _trainObjClass, size_t _vocabSize, size_t _memoryUse, float _descProportion ) : - trainObjClass(_trainObjClass), vocabSize((int)_vocabSize), memoryUse((int)_memoryUse), descProportion(_descProportion) {} - void read( const FileNode& fn ) - { - fn["trainObjClass"] >> trainObjClass; - fn["vocabSize"] >> vocabSize; - fn["memoryUse"] >> memoryUse; - fn["descProportion"] >> descProportion; - } - void write( FileStorage& fs ) const - { - fs << "trainObjClass" << trainObjClass; - fs << "vocabSize" << vocabSize; - fs << "memoryUse" << memoryUse; - fs << "descProportion" << descProportion; - } - void print() const - { - cout << "trainObjClass: " << trainObjClass << endl; - cout << "vocabSize: " << vocabSize << endl; - cout << "memoryUse: " << memoryUse << endl; - cout << "descProportion: " << descProportion << endl; - } - - - string trainObjClass; // Object class used for training visual vocabulary. - // It shouldn't matter which object class is specified here - visual vocab will still be the same. - int vocabSize; //number of visual words in vocabulary to train - int memoryUse; // Memory to preallocate (in MB) when training vocab. - // Change this depending on the size of the dataset/available memory. - float descProportion; // Specifies the number of descriptors to use from each image as a proportion of the total num descs. -}; - -struct SVMTrainParamsExt -{ - SVMTrainParamsExt() : descPercent(0.5f), targetRatio(0.4f), balanceClasses(true) {} - SVMTrainParamsExt( float _descPercent, float _targetRatio, bool _balanceClasses ) : - descPercent(_descPercent), targetRatio(_targetRatio), balanceClasses(_balanceClasses) {} - void read( const FileNode& fn ) - { - fn["descPercent"] >> descPercent; - fn["targetRatio"] >> targetRatio; - fn["balanceClasses"] >> balanceClasses; - } - void write( FileStorage& fs ) const - { - fs << "descPercent" << descPercent; - fs << "targetRatio" << targetRatio; - fs << "balanceClasses" << balanceClasses; - } - void print() const - { - cout << "descPercent: " << descPercent << endl; - cout << "targetRatio: " << targetRatio << endl; - cout << "balanceClasses: " << balanceClasses << endl; - } - - float descPercent; // Percentage of extracted descriptors to use for training. - float targetRatio; // Try to get this ratio of positive to negative samples (minimum). - bool balanceClasses; // Balance class weights by number of samples in each (if true cSvmTrainTargetRatio is ignored). -}; - -static void readUsedParams( const FileNode& fn, string& vocName, DDMParams& ddmParams, VocabTrainParams& vocabTrainParams, SVMTrainParamsExt& svmTrainParamsExt ) -{ - fn["vocName"] >> vocName; - - FileNode currFn = fn; - - currFn = fn["ddmParams"]; - ddmParams.read( currFn ); - - currFn = fn["vocabTrainParams"]; - vocabTrainParams.read( currFn ); - - currFn = fn["svmTrainParamsExt"]; - svmTrainParamsExt.read( currFn ); -} - -static void writeUsedParams( FileStorage& fs, const string& vocName, const DDMParams& ddmParams, const VocabTrainParams& vocabTrainParams, const SVMTrainParamsExt& svmTrainParamsExt ) -{ - fs << "vocName" << vocName; - - fs << "ddmParams" << "{"; - ddmParams.write(fs); - fs << "}"; - - fs << "vocabTrainParams" << "{"; - vocabTrainParams.write(fs); - fs << "}"; - - fs << "svmTrainParamsExt" << "{"; - svmTrainParamsExt.write(fs); - fs << "}"; -} - -static void printUsedParams( const string& vocPath, const string& resDir, - const DDMParams& ddmParams, const VocabTrainParams& vocabTrainParams, - const SVMTrainParamsExt& svmTrainParamsExt ) -{ - cout << "CURRENT CONFIGURATION" << endl; - cout << "----------------------------------------------------------------" << endl; - cout << "vocPath: " << vocPath << endl; - cout << "resDir: " << resDir << endl; - cout << endl; ddmParams.print(); - cout << endl; vocabTrainParams.print(); - cout << endl; svmTrainParamsExt.print(); - cout << "----------------------------------------------------------------" << endl << endl; -} - -static bool readVocabulary( const string& filename, Mat& vocabulary ) -{ - cout << "Reading vocabulary..."; - FileStorage fs( filename, FileStorage::READ ); - if( fs.isOpened() ) - { - fs["vocabulary"] >> vocabulary; - cout << "done" << endl; - return true; - } - return false; -} - -static bool writeVocabulary( const string& filename, const Mat& vocabulary ) -{ - cout << "Saving vocabulary..." << endl; - FileStorage fs( filename, FileStorage::WRITE ); - if( fs.isOpened() ) - { - fs << "vocabulary" << vocabulary; - return true; - } - return false; -} - -static Mat trainVocabulary( const string& filename, VocData& vocData, const VocabTrainParams& trainParams, - const Ptr& fdetector, const Ptr& dextractor ) -{ - Mat vocabulary; - if( !readVocabulary( filename, vocabulary) ) - { - CV_Assert( dextractor->descriptorType() == CV_32FC1 ); - const int elemSize = CV_ELEM_SIZE(dextractor->descriptorType()); - const int descByteSize = dextractor->descriptorSize() * elemSize; - const int bytesInMB = 1048576; - const int maxDescCount = (trainParams.memoryUse * bytesInMB) / descByteSize; // Total number of descs to use for training. - - cout << "Extracting VOC data..." << endl; - vector images; - vector objectPresent; - vocData.getClassImages( trainParams.trainObjClass, CV_OBD_TRAIN, images, objectPresent ); - - cout << "Computing descriptors..." << endl; - RNG& rng = theRNG(); - TermCriteria terminate_criterion; - terminate_criterion.epsilon = FLT_EPSILON; - BOWKMeansTrainer bowTrainer( trainParams.vocabSize, terminate_criterion, 3, KMEANS_PP_CENTERS ); - - while( images.size() > 0 ) - { - if( bowTrainer.descriptorsCount() > maxDescCount ) - { -#ifdef DEBUG_DESC_PROGRESS - cout << "Breaking due to full memory ( descriptors count = " << bowTrainer.descriptorsCount() - << "; descriptor size in bytes = " << descByteSize << "; all used memory = " - << bowTrainer.descriptorsCount()*descByteSize << endl; -#endif - break; - } - - // Randomly pick an image from the dataset which hasn't yet been seen - // and compute the descriptors from that image. - int randImgIdx = rng( (unsigned)images.size() ); - Mat colorImage = imread( images[randImgIdx].path ); - vector imageKeypoints; - fdetector->detect( colorImage, imageKeypoints ); - Mat imageDescriptors; - dextractor->compute( colorImage, imageKeypoints, imageDescriptors ); - - //check that there were descriptors calculated for the current image - if( !imageDescriptors.empty() ) - { - int descCount = imageDescriptors.rows; - // Extract trainParams.descProportion descriptors from the image, breaking if the 'allDescriptors' matrix becomes full - int descsToExtract = static_cast(trainParams.descProportion * static_cast(descCount)); - // Fill mask of used descriptors - vector usedMask( descCount, false ); - fill( usedMask.begin(), usedMask.begin() + descsToExtract, true ); - for( int i = 0; i < descCount; i++ ) - { - int i1 = rng(descCount), i2 = rng(descCount); - char tmp = usedMask[i1]; usedMask[i1] = usedMask[i2]; usedMask[i2] = tmp; - } - - for( int i = 0; i < descCount; i++ ) - { - if( usedMask[i] && bowTrainer.descriptorsCount() < maxDescCount ) - bowTrainer.add( imageDescriptors.row(i) ); - } - } - -#ifdef DEBUG_DESC_PROGRESS - cout << images.size() << " images left, " << images[randImgIdx].id << " processed - " - <(bowTrainer.descriptorsCount())/static_cast(maxDescCount))*100.0) - << " % memory used" << ( imageDescriptors.empty() ? " -> no descriptors extracted, skipping" : "") << endl; -#endif - - // Delete the current element from images so it is not added again - images.erase( images.begin() + randImgIdx ); - } - - cout << "Maximum allowed descriptor count: " << maxDescCount << ", Actual descriptor count: " << bowTrainer.descriptorsCount() << endl; - - cout << "Training vocabulary..." << endl; - vocabulary = bowTrainer.cluster(); - - if( !writeVocabulary(filename, vocabulary) ) - { - cout << "Error: file " << filename << " can not be opened to write" << endl; - exit(-1); - } - } - return vocabulary; -} - -static bool readBowImageDescriptor( const string& file, Mat& bowImageDescriptor ) -{ - FileStorage fs( file, FileStorage::READ ); - if( fs.isOpened() ) - { - fs["imageDescriptor"] >> bowImageDescriptor; - return true; - } - return false; -} - -static bool writeBowImageDescriptor( const string& file, const Mat& bowImageDescriptor ) -{ - FileStorage fs( file, FileStorage::WRITE ); - if( fs.isOpened() ) - { - fs << "imageDescriptor" << bowImageDescriptor; - return true; - } - return false; -} - -// Load in the bag of words vectors for a set of images, from file if possible -static void calculateImageDescriptors( const vector& images, vector& imageDescriptors, - Ptr& bowExtractor, const Ptr& fdetector, - const string& resPath ) -{ - CV_Assert( !bowExtractor->getVocabulary().empty() ); - imageDescriptors.resize( images.size() ); - - for( size_t i = 0; i < images.size(); i++ ) - { - string filename = resPath + bowImageDescriptorsDir + "/" + images[i].id + ".xml.gz"; - if( readBowImageDescriptor( filename, imageDescriptors[i] ) ) - { -#ifdef DEBUG_DESC_PROGRESS - cout << "Loaded bag of word vector for image " << i+1 << " of " << images.size() << " (" << images[i].id << ")" << endl; -#endif - } - else - { - Mat colorImage = imread( images[i].path ); -#ifdef DEBUG_DESC_PROGRESS - cout << "Computing descriptors for image " << i+1 << " of " << images.size() << " (" << images[i].id << ")" << flush; -#endif - vector keypoints; - fdetector->detect( colorImage, keypoints ); -#ifdef DEBUG_DESC_PROGRESS - cout << " + generating BoW vector" << std::flush; -#endif - bowExtractor->compute( colorImage, keypoints, imageDescriptors[i] ); -#ifdef DEBUG_DESC_PROGRESS - cout << " ...DONE " << static_cast(static_cast(i+1)/static_cast(images.size())*100.0) - << " % complete" << endl; -#endif - if( !imageDescriptors[i].empty() ) - { - if( !writeBowImageDescriptor( filename, imageDescriptors[i] ) ) - { - cout << "Error: file " << filename << "can not be opened to write bow image descriptor" << endl; - exit(-1); - } - } - } - } -} - -static void removeEmptyBowImageDescriptors( vector& images, vector& bowImageDescriptors, - vector& objectPresent ) -{ - CV_Assert( !images.empty() ); - for( int i = (int)images.size() - 1; i >= 0; i-- ) - { - bool res = bowImageDescriptors[i].empty(); - if( res ) - { - cout << "Removing image " << images[i].id << " due to no descriptors..." << endl; - images.erase( images.begin() + i ); - bowImageDescriptors.erase( bowImageDescriptors.begin() + i ); - objectPresent.erase( objectPresent.begin() + i ); - } - } -} - -static void removeBowImageDescriptorsByCount( vector& images, vector bowImageDescriptors, vector objectPresent, - const SVMTrainParamsExt& svmParamsExt, int descsToDelete ) -{ - RNG& rng = theRNG(); - int pos_ex = (int)std::count( objectPresent.begin(), objectPresent.end(), (char)1 ); - int neg_ex = (int)std::count( objectPresent.begin(), objectPresent.end(), (char)0 ); - - while( descsToDelete != 0 ) - { - int randIdx = rng((unsigned)images.size()); - - // Prefer positive training examples according to svmParamsExt.targetRatio if required - if( objectPresent[randIdx] ) - { - if( (static_cast(pos_ex)/static_cast(neg_ex+pos_ex) < svmParamsExt.targetRatio) && - (neg_ex > 0) && (svmParamsExt.balanceClasses == false) ) - { continue; } - else - { pos_ex--; } - } - else - { neg_ex--; } - - images.erase( images.begin() + randIdx ); - bowImageDescriptors.erase( bowImageDescriptors.begin() + randIdx ); - objectPresent.erase( objectPresent.begin() + randIdx ); - - descsToDelete--; - } - CV_Assert( bowImageDescriptors.size() == objectPresent.size() ); -} - -static void setSVMParams( SVM::Params& svmParams, Mat& class_wts_cv, const Mat& responses, bool balanceClasses ) -{ - int pos_ex = countNonZero(responses == 1); - int neg_ex = countNonZero(responses == -1); - cout << pos_ex << " positive training samples; " << neg_ex << " negative training samples" << endl; - - svmParams.svmType = SVM::C_SVC; - svmParams.kernelType = SVM::RBF; - if( balanceClasses ) - { - Mat class_wts( 2, 1, CV_32FC1 ); - // The first training sample determines the '+1' class internally, even if it is negative, - // so store whether this is the case so that the class weights can be reversed accordingly. - bool reversed_classes = (responses.at(0) < 0.f); - if( reversed_classes == false ) - { - class_wts.at(0) = static_cast(pos_ex)/static_cast(pos_ex+neg_ex); // weighting for costs of positive class + 1 (i.e. cost of false positive - larger gives greater cost) - class_wts.at(1) = static_cast(neg_ex)/static_cast(pos_ex+neg_ex); // weighting for costs of negative class - 1 (i.e. cost of false negative) - } - else - { - class_wts.at(0) = static_cast(neg_ex)/static_cast(pos_ex+neg_ex); - class_wts.at(1) = static_cast(pos_ex)/static_cast(pos_ex+neg_ex); - } - class_wts_cv = class_wts; - svmParams.classWeights = class_wts_cv; - } -} - -static void setSVMTrainAutoParams( ParamGrid& c_grid, ParamGrid& gamma_grid, - ParamGrid& p_grid, ParamGrid& nu_grid, - ParamGrid& coef_grid, ParamGrid& degree_grid ) -{ - c_grid = SVM::getDefaultGrid(SVM::C); - - gamma_grid = SVM::getDefaultGrid(SVM::GAMMA); - - p_grid = SVM::getDefaultGrid(SVM::P); - p_grid.logStep = 0; - - nu_grid = SVM::getDefaultGrid(SVM::NU); - nu_grid.logStep = 0; - - coef_grid = SVM::getDefaultGrid(SVM::COEF); - coef_grid.logStep = 0; - - degree_grid = SVM::getDefaultGrid(SVM::DEGREE); - degree_grid.logStep = 0; -} - -static Ptr trainSVMClassifier( const SVMTrainParamsExt& svmParamsExt, const string& objClassName, VocData& vocData, - Ptr& bowExtractor, const Ptr& fdetector, - const string& resPath ) -{ - /* first check if a previously trained svm for the current class has been saved to file */ - string svmFilename = resPath + svmsDir + "/" + objClassName + ".xml.gz"; - Ptr svm; - - FileStorage fs( svmFilename, FileStorage::READ); - if( fs.isOpened() ) - { - cout << "*** LOADING SVM CLASSIFIER FOR CLASS " << objClassName << " ***" << endl; - svm = StatModel::load( svmFilename ); - } - else - { - cout << "*** TRAINING CLASSIFIER FOR CLASS " << objClassName << " ***" << endl; - cout << "CALCULATING BOW VECTORS FOR TRAINING SET OF " << objClassName << "..." << endl; - - // Get classification ground truth for images in the training set - vector images; - vector bowImageDescriptors; - vector objectPresent; - vocData.getClassImages( objClassName, CV_OBD_TRAIN, images, objectPresent ); - - // Compute the bag of words vector for each image in the training set. - calculateImageDescriptors( images, bowImageDescriptors, bowExtractor, fdetector, resPath ); - - // Remove any images for which descriptors could not be calculated - removeEmptyBowImageDescriptors( images, bowImageDescriptors, objectPresent ); - - CV_Assert( svmParamsExt.descPercent > 0.f && svmParamsExt.descPercent <= 1.f ); - if( svmParamsExt.descPercent < 1.f ) - { - int descsToDelete = static_cast(static_cast(images.size())*(1.0-svmParamsExt.descPercent)); - - cout << "Using " << (images.size() - descsToDelete) << " of " << images.size() << - " descriptors for training (" << svmParamsExt.descPercent*100.0 << " %)" << endl; - removeBowImageDescriptorsByCount( images, bowImageDescriptors, objectPresent, svmParamsExt, descsToDelete ); - } - - // Prepare the input matrices for SVM training. - Mat trainData( (int)images.size(), bowExtractor->getVocabulary().rows, CV_32FC1 ); - Mat responses( (int)images.size(), 1, CV_32SC1 ); - - // Transfer bag of words vectors and responses across to the training data matrices - for( size_t imageIdx = 0; imageIdx < images.size(); imageIdx++ ) - { - // Transfer image descriptor (bag of words vector) to training data matrix - Mat submat = trainData.row((int)imageIdx); - if( bowImageDescriptors[imageIdx].cols != bowExtractor->descriptorSize() ) - { - cout << "Error: computed bow image descriptor size " << bowImageDescriptors[imageIdx].cols - << " differs from vocabulary size" << bowExtractor->getVocabulary().cols << endl; - exit(-1); - } - bowImageDescriptors[imageIdx].copyTo( submat ); - - // Set response value - responses.at((int)imageIdx) = objectPresent[imageIdx] ? 1 : -1; - } - - cout << "TRAINING SVM FOR CLASS ..." << objClassName << "..." << endl; - SVM::Params svmParams; - Mat class_wts_cv; - setSVMParams( svmParams, class_wts_cv, responses, svmParamsExt.balanceClasses ); - svm = SVM::create(svmParams); - ParamGrid c_grid, gamma_grid, p_grid, nu_grid, coef_grid, degree_grid; - setSVMTrainAutoParams( c_grid, gamma_grid, p_grid, nu_grid, coef_grid, degree_grid ); - - svm->trainAuto(TrainData::create(trainData, ROW_SAMPLE, responses), 10, - c_grid, gamma_grid, p_grid, nu_grid, coef_grid, degree_grid); - cout << "SVM TRAINING FOR CLASS " << objClassName << " COMPLETED" << endl; - - svm->save( svmFilename ); - cout << "SAVED CLASSIFIER TO FILE" << endl; - } - return svm; -} - -static void computeConfidences( const Ptr& svm, const string& objClassName, VocData& vocData, - Ptr& bowExtractor, const Ptr& fdetector, - const string& resPath ) -{ - cout << "*** CALCULATING CONFIDENCES FOR CLASS " << objClassName << " ***" << endl; - cout << "CALCULATING BOW VECTORS FOR TEST SET OF " << objClassName << "..." << endl; - // Get classification ground truth for images in the test set - vector images; - vector bowImageDescriptors; - vector objectPresent; - vocData.getClassImages( objClassName, CV_OBD_TEST, images, objectPresent ); - - // Compute the bag of words vector for each image in the test set - calculateImageDescriptors( images, bowImageDescriptors, bowExtractor, fdetector, resPath ); - // Remove any images for which descriptors could not be calculated - removeEmptyBowImageDescriptors( images, bowImageDescriptors, objectPresent); - - // Use the bag of words vectors to calculate classifier output for each image in test set - cout << "CALCULATING CONFIDENCE SCORES FOR CLASS " << objClassName << "..." << endl; - vector confidences( images.size() ); - float signMul = 1.f; - for( size_t imageIdx = 0; imageIdx < images.size(); imageIdx++ ) - { - if( imageIdx == 0 ) - { - // In the first iteration, determine the sign of the positive class - float classVal = confidences[imageIdx] = svm->predict( bowImageDescriptors[imageIdx], noArray(), 0 ); - float scoreVal = confidences[imageIdx] = svm->predict( bowImageDescriptors[imageIdx], noArray(), StatModel::RAW_OUTPUT ); - signMul = (classVal < 0) == (scoreVal < 0) ? 1.f : -1.f; - } - // svm output of decision function - confidences[imageIdx] = signMul * svm->predict( bowImageDescriptors[imageIdx], noArray(), StatModel::RAW_OUTPUT ); - } - - cout << "WRITING QUERY RESULTS TO VOC RESULTS FILE FOR CLASS " << objClassName << "..." << endl; - vocData.writeClassifierResultsFile( resPath + plotsDir, objClassName, CV_OBD_TEST, images, confidences, 1, true ); - - cout << "DONE - " << objClassName << endl; - cout << "---------------------------------------------------------------" << endl; -} - -static void computeGnuPlotOutput( const string& resPath, const string& objClassName, VocData& vocData ) -{ - vector precision, recall; - float ap; - - const string resultFile = vocData.getResultsFilename( objClassName, CV_VOC_TASK_CLASSIFICATION, CV_OBD_TEST); - const string plotFile = resultFile.substr(0, resultFile.size()-4) + ".plt"; - - cout << "Calculating precision recall curve for class '" < featureDetector = FeatureDetector::create( ddmParams.detectorType ); - Ptr descExtractor = DescriptorExtractor::create( ddmParams.descriptorType ); - Ptr bowExtractor; - if( !featureDetector || !descExtractor ) - { - cout << "featureDetector or descExtractor was not created" << endl; - return -1; - } - { - Ptr descMatcher = DescriptorMatcher::create( ddmParams.matcherType ); - if( !featureDetector || !descExtractor || !descMatcher ) - { - cout << "descMatcher was not created" << endl; - return -1; - } - bowExtractor = makePtr( descExtractor, descMatcher ); - } - - // Print configuration to screen - printUsedParams( vocPath, resPath, ddmParams, vocabTrainParams, svmTrainParamsExt ); - // Create object to work with VOC - VocData vocData( vocPath, false ); - - // 1. Train visual word vocabulary if a pre-calculated vocabulary file doesn't already exist from previous run - Mat vocabulary = trainVocabulary( resPath + "/" + vocabularyFile, vocData, vocabTrainParams, - featureDetector, descExtractor ); - bowExtractor->setVocabulary( vocabulary ); - - // 2. Train a classifier and run a sample query for each object class - const vector& objClasses = vocData.getObjectClasses(); // object class list - for( size_t classIdx = 0; classIdx < objClasses.size(); ++classIdx ) - { - // Train a classifier on train dataset - Ptr svm = trainSVMClassifier( svmTrainParamsExt, objClasses[classIdx], vocData, - bowExtractor, featureDetector, resPath ); - - // Now use the classifier over all images on the test dataset and rank according to score order - // also calculating precision-recall etc. - computeConfidences( svm, objClasses[classIdx], vocData, - bowExtractor, featureDetector, resPath ); - // Calculate precision/recall/ap and use GNUPlot to output to a pdf file - computeGnuPlotOutput( resPath, objClasses[classIdx], vocData ); - } - return 0; -} diff --git a/samples/cpp/descriptor_extractor_matcher.cpp b/samples/cpp/descriptor_extractor_matcher.cpp deleted file mode 100644 index 6f25ac48d7..0000000000 --- a/samples/cpp/descriptor_extractor_matcher.cpp +++ /dev/null @@ -1,305 +0,0 @@ -#include "opencv2/imgcodecs.hpp" -#include "opencv2/highgui/highgui.hpp" -#include "opencv2/calib3d/calib3d.hpp" -#include "opencv2/imgproc/imgproc.hpp" -#include "opencv2/features2d/features2d.hpp" -#include "opencv2/nonfree/nonfree.hpp" - -#include - -using namespace cv; -using namespace std; - -static void help(char** argv) -{ - cout << "\nThis program demonstrats keypoint finding and matching between 2 images using features2d framework.\n" - << " In one case, the 2nd image is synthesized by homography from the first, in the second case, there are 2 images\n" - << "\n" - << "Case1: second image is obtained from the first (given) image using random generated homography matrix\n" - << argv[0] << " [detectorType] [descriptorType] [matcherType] [matcherFilterType] [image] [evaluate(0 or 1)]\n" - << "Example of case1:\n" - << "./descriptor_extractor_matcher SURF SURF FlannBased NoneFilter cola.jpg 0\n" - << "\n" - << "Case2: both images are given. If ransacReprojThreshold>=0 then homography matrix are calculated\n" - << argv[0] << " [detectorType] [descriptorType] [matcherType] [matcherFilterType] [image1] [image2] [ransacReprojThreshold]\n" - << "\n" - << "Matches are filtered using homography matrix in case1 and case2 (if ransacReprojThreshold>=0)\n" - << "Example of case2:\n" - << "./descriptor_extractor_matcher SURF SURF BruteForce CrossCheckFilter cola1.jpg cola2.jpg 3\n" - << "\n" - << "Possible detectorType values: see in documentation on createFeatureDetector().\n" - << "Possible descriptorType values: see in documentation on createDescriptorExtractor().\n" - << "Possible matcherType values: see in documentation on createDescriptorMatcher().\n" - << "Possible matcherFilterType values: NoneFilter, CrossCheckFilter." << endl; -} - -#define DRAW_RICH_KEYPOINTS_MODE 0 -#define DRAW_OUTLIERS_MODE 0 - -const string winName = "correspondences"; - -enum { NONE_FILTER = 0, CROSS_CHECK_FILTER = 1 }; - -static int getMatcherFilterType( const string& str ) -{ - if( str == "NoneFilter" ) - return NONE_FILTER; - if( str == "CrossCheckFilter" ) - return CROSS_CHECK_FILTER; - CV_Error(Error::StsBadArg, "Invalid filter name"); - return -1; -} - -static void simpleMatching( Ptr& descriptorMatcher, - const Mat& descriptors1, const Mat& descriptors2, - vector& matches12 ) -{ - vector matches; - descriptorMatcher->match( descriptors1, descriptors2, matches12 ); -} - -static void crossCheckMatching( Ptr& descriptorMatcher, - const Mat& descriptors1, const Mat& descriptors2, - vector& filteredMatches12, int knn=1 ) -{ - filteredMatches12.clear(); - vector > matches12, matches21; - descriptorMatcher->knnMatch( descriptors1, descriptors2, matches12, knn ); - descriptorMatcher->knnMatch( descriptors2, descriptors1, matches21, knn ); - for( size_t m = 0; m < matches12.size(); m++ ) - { - bool findCrossCheck = false; - for( size_t fk = 0; fk < matches12[m].size(); fk++ ) - { - DMatch forward = matches12[m][fk]; - - for( size_t bk = 0; bk < matches21[forward.trainIdx].size(); bk++ ) - { - DMatch backward = matches21[forward.trainIdx][bk]; - if( backward.trainIdx == forward.queryIdx ) - { - filteredMatches12.push_back(forward); - findCrossCheck = true; - break; - } - } - if( findCrossCheck ) break; - } - } -} - -static void warpPerspectiveRand( const Mat& src, Mat& dst, Mat& H, RNG& rng ) -{ - H.create(3, 3, CV_32FC1); - H.at(0,0) = rng.uniform( 0.8f, 1.2f); - H.at(0,1) = rng.uniform(-0.1f, 0.1f); - H.at(0,2) = rng.uniform(-0.1f, 0.1f)*src.cols; - H.at(1,0) = rng.uniform(-0.1f, 0.1f); - H.at(1,1) = rng.uniform( 0.8f, 1.2f); - H.at(1,2) = rng.uniform(-0.1f, 0.1f)*src.rows; - H.at(2,0) = rng.uniform( -1e-4f, 1e-4f); - H.at(2,1) = rng.uniform( -1e-4f, 1e-4f); - H.at(2,2) = rng.uniform( 0.8f, 1.2f); - - warpPerspective( src, dst, H, src.size() ); -} - -static void doIteration( const Mat& img1, Mat& img2, bool isWarpPerspective, - vector& keypoints1, const Mat& descriptors1, - Ptr& detector, Ptr& descriptorExtractor, - Ptr& descriptorMatcher, int matcherFilter, bool eval, - double ransacReprojThreshold, RNG& rng ) -{ - CV_Assert( !img1.empty() ); - Mat H12; - if( isWarpPerspective ) - warpPerspectiveRand(img1, img2, H12, rng ); - else - CV_Assert( !img2.empty()/* && img2.cols==img1.cols && img2.rows==img1.rows*/ ); - - cout << endl << "< Extracting keypoints from second image..." << endl; - vector keypoints2; - detector->detect( img2, keypoints2 ); - cout << keypoints2.size() << " points" << endl << ">" << endl; - - if( !H12.empty() && eval ) - { - cout << "< Evaluate feature detector..." << endl; - float repeatability; - int correspCount; - evaluateFeatureDetector( img1, img2, H12, &keypoints1, &keypoints2, repeatability, correspCount ); - cout << "repeatability = " << repeatability << endl; - cout << "correspCount = " << correspCount << endl; - cout << ">" << endl; - } - - cout << "< Computing descriptors for keypoints from second image..." << endl; - Mat descriptors2; - descriptorExtractor->compute( img2, keypoints2, descriptors2 ); - cout << ">" << endl; - - cout << "< Matching descriptors..." << endl; - vector filteredMatches; - switch( matcherFilter ) - { - case CROSS_CHECK_FILTER : - crossCheckMatching( descriptorMatcher, descriptors1, descriptors2, filteredMatches, 1 ); - break; - default : - simpleMatching( descriptorMatcher, descriptors1, descriptors2, filteredMatches ); - } - cout << ">" << endl; - - if( !H12.empty() && eval ) - { - cout << "< Evaluate descriptor matcher..." << endl; - vector curve; - Ptr gdm = makePtr( descriptorExtractor, descriptorMatcher ); - evaluateGenericDescriptorMatcher( img1, img2, H12, keypoints1, keypoints2, 0, 0, curve, gdm ); - - Point2f firstPoint = *curve.begin(); - Point2f lastPoint = *curve.rbegin(); - int prevPointIndex = -1; - cout << "1-precision = " << firstPoint.x << "; recall = " << firstPoint.y << endl; - for( float l_p = 0; l_p <= 1 + FLT_EPSILON; l_p+=0.05f ) - { - int nearest = getNearestPoint( curve, l_p ); - if( nearest >= 0 ) - { - Point2f curPoint = curve[nearest]; - if( curPoint.x > firstPoint.x && curPoint.x < lastPoint.x && nearest != prevPointIndex ) - { - cout << "1-precision = " << curPoint.x << "; recall = " << curPoint.y << endl; - prevPointIndex = nearest; - } - } - } - cout << "1-precision = " << lastPoint.x << "; recall = " << lastPoint.y << endl; - cout << ">" << endl; - } - - vector queryIdxs( filteredMatches.size() ), trainIdxs( filteredMatches.size() ); - for( size_t i = 0; i < filteredMatches.size(); i++ ) - { - queryIdxs[i] = filteredMatches[i].queryIdx; - trainIdxs[i] = filteredMatches[i].trainIdx; - } - - if( !isWarpPerspective && ransacReprojThreshold >= 0 ) - { - cout << "< Computing homography (RANSAC)..." << endl; - vector points1; KeyPoint::convert(keypoints1, points1, queryIdxs); - vector points2; KeyPoint::convert(keypoints2, points2, trainIdxs); - H12 = findHomography( Mat(points1), Mat(points2), RANSAC, ransacReprojThreshold ); - cout << ">" << endl; - } - - Mat drawImg; - if( !H12.empty() ) // filter outliers - { - vector matchesMask( filteredMatches.size(), 0 ); - vector points1; KeyPoint::convert(keypoints1, points1, queryIdxs); - vector points2; KeyPoint::convert(keypoints2, points2, trainIdxs); - Mat points1t; perspectiveTransform(Mat(points1), points1t, H12); - - double maxInlierDist = ransacReprojThreshold < 0 ? 3 : ransacReprojThreshold; - for( size_t i1 = 0; i1 < points1.size(); i1++ ) - { - if( norm(points2[i1] - points1t.at((int)i1,0)) <= maxInlierDist ) // inlier - matchesMask[i1] = 1; - } - // draw inliers - drawMatches( img1, keypoints1, img2, keypoints2, filteredMatches, drawImg, Scalar(0, 255, 0), Scalar(255, 0, 0), matchesMask -#if DRAW_RICH_KEYPOINTS_MODE - , DrawMatchesFlags::DRAW_RICH_KEYPOINTS -#endif - ); - -#if DRAW_OUTLIERS_MODE - // draw outliers - for( size_t i1 = 0; i1 < matchesMask.size(); i1++ ) - matchesMask[i1] = !matchesMask[i1]; - drawMatches( img1, keypoints1, img2, keypoints2, filteredMatches, drawImg, Scalar(255, 0, 0), Scalar(0, 0, 255), matchesMask, - DrawMatchesFlags::DRAW_OVER_OUTIMG | DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS ); -#endif - - cout << "Number of inliers: " << countNonZero(matchesMask) << endl; - } - else - drawMatches( img1, keypoints1, img2, keypoints2, filteredMatches, drawImg ); - - imshow( winName, drawImg ); -} - - -int main(int argc, char** argv) -{ - if( argc != 7 && argc != 8 ) - { - help(argv); - return -1; - } - - cv::initModule_nonfree(); - - bool isWarpPerspective = argc == 7; - double ransacReprojThreshold = -1; - if( !isWarpPerspective ) - ransacReprojThreshold = atof(argv[7]); - - cout << "< Creating detector, descriptor extractor and descriptor matcher ..." << endl; - Ptr detector = FeatureDetector::create( argv[1] ); - Ptr descriptorExtractor = DescriptorExtractor::create( argv[2] ); - Ptr descriptorMatcher = DescriptorMatcher::create( argv[3] ); - int mactherFilterType = getMatcherFilterType( argv[4] ); - bool eval = !isWarpPerspective ? false : (atoi(argv[6]) == 0 ? false : true); - cout << ">" << endl; - if( !detector || !descriptorExtractor || !descriptorMatcher ) - { - cout << "Can not create detector or descriptor exstractor or descriptor matcher of given types" << endl; - return -1; - } - - cout << "< Reading the images..." << endl; - Mat img1 = imread( argv[5] ), img2; - if( !isWarpPerspective ) - img2 = imread( argv[6] ); - cout << ">" << endl; - if( img1.empty() || (!isWarpPerspective && img2.empty()) ) - { - cout << "Can not read images" << endl; - return -1; - } - - cout << endl << "< Extracting keypoints from first image..." << endl; - vector keypoints1; - detector->detect( img1, keypoints1 ); - cout << keypoints1.size() << " points" << endl << ">" << endl; - - cout << "< Computing descriptors for keypoints from first image..." << endl; - Mat descriptors1; - descriptorExtractor->compute( img1, keypoints1, descriptors1 ); - cout << ">" << endl; - - namedWindow(winName, 1); - RNG rng = theRNG(); - doIteration( img1, img2, isWarpPerspective, keypoints1, descriptors1, - detector, descriptorExtractor, descriptorMatcher, mactherFilterType, eval, - ransacReprojThreshold, rng ); - for(;;) - { - char c = (char)waitKey(0); - if( c == '\x1b' ) // esc - { - cout << "Exiting ..." << endl; - break; - } - else if( isWarpPerspective ) - { - doIteration( img1, img2, isWarpPerspective, keypoints1, descriptors1, - detector, descriptorExtractor, descriptorMatcher, mactherFilterType, eval, - ransacReprojThreshold, rng ); - } - } - return 0; -} diff --git a/samples/cpp/shape_transformation.cpp b/samples/cpp/shape_transformation.cpp deleted file mode 100644 index 62e5554101..0000000000 --- a/samples/cpp/shape_transformation.cpp +++ /dev/null @@ -1,75 +0,0 @@ -/* - * shape_context.cpp -- Shape context demo for shape matching - */ - -#include "opencv2/shape.hpp" -#include "opencv2/imgcodecs.hpp" -#include "opencv2/highgui.hpp" -#include "opencv2/imgproc.hpp" -#include "opencv2/features2d/features2d.hpp" -#include "opencv2/nonfree/nonfree.hpp" -#include -#include -#include - -using namespace std; -using namespace cv; - -static void help() -{ - printf("\nThis program demonstrates how to use common interface for shape transformers\n" - "Call\n" - "shape_transformation [image1] [image2]\n"); -} - -int main(int argc, char** argv) -{ - help(); - Mat img1 = imread(argv[1], IMREAD_GRAYSCALE); - Mat img2 = imread(argv[2], IMREAD_GRAYSCALE); - if(img1.empty() || img2.empty() || argc<2) - { - printf("Can't read one of the images\n"); - return -1; - } - - // detecting keypoints - SurfFeatureDetector detector(5000); - vector keypoints1, keypoints2; - detector.detect(img1, keypoints1); - detector.detect(img2, keypoints2); - - // computing descriptors - SurfDescriptorExtractor extractor; - Mat descriptors1, descriptors2; - extractor.compute(img1, keypoints1, descriptors1); - extractor.compute(img2, keypoints2, descriptors2); - - // matching descriptors - BFMatcher matcher(extractor.defaultNorm()); - vector matches; - matcher.match(descriptors1, descriptors2, matches); - - // drawing the results - namedWindow("matches", 1); - Mat img_matches; - drawMatches(img1, keypoints1, img2, keypoints2, matches, img_matches); - imshow("matches", img_matches); - - // extract points - vector pts1, pts2; - for (size_t ii=0; ii mytps = createThinPlateSplineShapeTransformer(25000); //TPS with a relaxed constraint - mytps->estimateTransformation(pts1, pts2, matches); - mytps->warpImage(img2, img2); - - imshow("Tranformed", img2); - waitKey(0); - - return 0; -} diff --git a/samples/cpp/tutorial_code/features2D/SURF_FlannMatcher.cpp b/samples/cpp/tutorial_code/features2D/SURF_FlannMatcher.cpp deleted file mode 100644 index e861a5f108..0000000000 --- a/samples/cpp/tutorial_code/features2D/SURF_FlannMatcher.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/** - * @file SURF_FlannMatcher - * @brief SURF detector + descriptor + FLANN Matcher - * @author A. Huaman - */ - -#include -#include -#include "opencv2/core/core.hpp" -#include "opencv2/features2d/features2d.hpp" -#include "opencv2/imgcodecs.hpp" -#include "opencv2/highgui/highgui.hpp" -#include "opencv2/nonfree/features2d.hpp" - -using namespace std; -using namespace cv; - -void readme(); - -/** - * @function main - * @brief Main function - */ -int main( int argc, char** argv ) -{ - if( argc != 3 ) - { readme(); return -1; } - - Mat img_1 = imread( argv[1], IMREAD_GRAYSCALE ); - Mat img_2 = imread( argv[2], IMREAD_GRAYSCALE ); - - if( !img_1.data || !img_2.data ) - { std::cout<< " --(!) Error reading images " << std::endl; return -1; } - - //-- Step 1: Detect the keypoints using SURF Detector - int minHessian = 400; - - SurfFeatureDetector detector( minHessian ); - - std::vector keypoints_1, keypoints_2; - - detector.detect( img_1, keypoints_1 ); - detector.detect( img_2, keypoints_2 ); - - //-- Step 2: Calculate descriptors (feature vectors) - SurfDescriptorExtractor extractor; - - Mat descriptors_1, descriptors_2; - - extractor.compute( img_1, keypoints_1, descriptors_1 ); - extractor.compute( img_2, keypoints_2, descriptors_2 ); - - //-- Step 3: Matching descriptor vectors using FLANN matcher - FlannBasedMatcher matcher; - std::vector< DMatch > matches; - matcher.match( descriptors_1, descriptors_2, matches ); - - double max_dist = 0; double min_dist = 100; - - //-- Quick calculation of max and min distances between keypoints - for( int i = 0; i < descriptors_1.rows; i++ ) - { double dist = matches[i].distance; - if( dist < min_dist ) min_dist = dist; - if( dist > max_dist ) max_dist = dist; - } - - printf("-- Max dist : %f \n", max_dist ); - printf("-- Min dist : %f \n", min_dist ); - - //-- Draw only "good" matches (i.e. whose distance is less than 2*min_dist, - //-- or a small arbitary value ( 0.02 ) in the event that min_dist is very - //-- small) - //-- PS.- radiusMatch can also be used here. - std::vector< DMatch > good_matches; - - for( int i = 0; i < descriptors_1.rows; i++ ) - { if( matches[i].distance <= max(2*min_dist, 0.02) ) - { good_matches.push_back( matches[i]); } - } - - //-- Draw only "good" matches - Mat img_matches; - drawMatches( img_1, keypoints_1, img_2, keypoints_2, - good_matches, img_matches, Scalar::all(-1), Scalar::all(-1), - vector(), DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS ); - - //-- Show detected matches - imshow( "Good Matches", img_matches ); - - for( int i = 0; i < (int)good_matches.size(); i++ ) - { printf( "-- Good Match [%d] Keypoint 1: %d -- Keypoint 2: %d \n", i, good_matches[i].queryIdx, good_matches[i].trainIdx ); } - - waitKey(0); - - return 0; -} - -/** - * @function readme - */ -void readme() -{ std::cout << " Usage: ./SURF_FlannMatcher " << std::endl; } diff --git a/samples/cpp/tutorial_code/features2D/SURF_Homography.cpp b/samples/cpp/tutorial_code/features2D/SURF_Homography.cpp deleted file mode 100644 index f3d4df88fb..0000000000 --- a/samples/cpp/tutorial_code/features2D/SURF_Homography.cpp +++ /dev/null @@ -1,126 +0,0 @@ -/** - * @file SURF_Homography - * @brief SURF detector + descriptor + FLANN Matcher + FindHomography - * @author A. Huaman - */ - -#include -#include -#include "opencv2/core/core.hpp" -#include "opencv2/features2d/features2d.hpp" -#include "opencv2/imgcodecs.hpp" -#include "opencv2/highgui/highgui.hpp" -#include "opencv2/calib3d/calib3d.hpp" -#include "opencv2/nonfree/features2d.hpp" - -using namespace std; -using namespace cv; - -void readme(); - -/** - * @function main - * @brief Main function - */ -int main( int argc, char** argv ) -{ - if( argc != 3 ) - { readme(); return -1; } - - Mat img_object = imread( argv[1], IMREAD_GRAYSCALE ); - Mat img_scene = imread( argv[2], IMREAD_GRAYSCALE ); - - if( !img_object.data || !img_scene.data ) - { std::cout<< " --(!) Error reading images " << std::endl; return -1; } - - //-- Step 1: Detect the keypoints using SURF Detector - int minHessian = 400; - - SurfFeatureDetector detector( minHessian ); - - std::vector keypoints_object, keypoints_scene; - - detector.detect( img_object, keypoints_object ); - detector.detect( img_scene, keypoints_scene ); - - //-- Step 2: Calculate descriptors (feature vectors) - SurfDescriptorExtractor extractor; - - Mat descriptors_object, descriptors_scene; - - extractor.compute( img_object, keypoints_object, descriptors_object ); - extractor.compute( img_scene, keypoints_scene, descriptors_scene ); - - //-- Step 3: Matching descriptor vectors using FLANN matcher - FlannBasedMatcher matcher; - std::vector< DMatch > matches; - matcher.match( descriptors_object, descriptors_scene, matches ); - - double max_dist = 0; double min_dist = 100; - - //-- Quick calculation of max and min distances between keypoints - for( int i = 0; i < descriptors_object.rows; i++ ) - { double dist = matches[i].distance; - if( dist < min_dist ) min_dist = dist; - if( dist > max_dist ) max_dist = dist; - } - - printf("-- Max dist : %f \n", max_dist ); - printf("-- Min dist : %f \n", min_dist ); - - //-- Draw only "good" matches (i.e. whose distance is less than 3*min_dist ) - std::vector< DMatch > good_matches; - - for( int i = 0; i < descriptors_object.rows; i++ ) - { if( matches[i].distance < 3*min_dist ) - { good_matches.push_back( matches[i]); } - } - - Mat img_matches; - drawMatches( img_object, keypoints_object, img_scene, keypoints_scene, - good_matches, img_matches, Scalar::all(-1), Scalar::all(-1), - vector(), DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS ); - - - //-- Localize the object from img_1 in img_2 - std::vector obj; - std::vector scene; - - for( size_t i = 0; i < good_matches.size(); i++ ) - { - //-- Get the keypoints from the good matches - obj.push_back( keypoints_object[ good_matches[i].queryIdx ].pt ); - scene.push_back( keypoints_scene[ good_matches[i].trainIdx ].pt ); - } - - Mat H = findHomography( obj, scene, RANSAC ); - - //-- Get the corners from the image_1 ( the object to be "detected" ) - std::vector obj_corners(4); - obj_corners[0] = Point(0,0); obj_corners[1] = Point( img_object.cols, 0 ); - obj_corners[2] = Point( img_object.cols, img_object.rows ); obj_corners[3] = Point( 0, img_object.rows ); - std::vector scene_corners(4); - - perspectiveTransform( obj_corners, scene_corners, H); - - - //-- Draw lines between the corners (the mapped object in the scene - image_2 ) - Point2f offset( (float)img_object.cols, 0); - line( img_matches, scene_corners[0] + offset, scene_corners[1] + offset, Scalar(0, 255, 0), 4 ); - line( img_matches, scene_corners[1] + offset, scene_corners[2] + offset, Scalar( 0, 255, 0), 4 ); - line( img_matches, scene_corners[2] + offset, scene_corners[3] + offset, Scalar( 0, 255, 0), 4 ); - line( img_matches, scene_corners[3] + offset, scene_corners[0] + offset, Scalar( 0, 255, 0), 4 ); - - //-- Show detected matches - imshow( "Good Matches & Object detection", img_matches ); - - waitKey(0); - - return 0; -} - -/** - * @function readme - */ -void readme() -{ std::cout << " Usage: ./SURF_Homography " << std::endl; } diff --git a/samples/cpp/tutorial_code/features2D/SURF_descriptor.cpp b/samples/cpp/tutorial_code/features2D/SURF_descriptor.cpp deleted file mode 100644 index 140136d3a6..0000000000 --- a/samples/cpp/tutorial_code/features2D/SURF_descriptor.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/** - * @file SURF_descriptor - * @brief SURF detector + descritpor + BruteForce Matcher + drawing matches with OpenCV functions - * @author A. Huaman - */ - -#include -#include -#include "opencv2/core/core.hpp" -#include "opencv2/features2d/features2d.hpp" -#include "opencv2/imgcodecs.hpp" -#include "opencv2/highgui/highgui.hpp" -#include "opencv2/nonfree/features2d.hpp" - -using namespace cv; - -void readme(); - -/** - * @function main - * @brief Main function - */ -int main( int argc, char** argv ) -{ - if( argc != 3 ) - { return -1; } - - Mat img_1 = imread( argv[1], IMREAD_GRAYSCALE ); - Mat img_2 = imread( argv[2], IMREAD_GRAYSCALE ); - - if( !img_1.data || !img_2.data ) - { return -1; } - - //-- Step 1: Detect the keypoints using SURF Detector - int minHessian = 400; - - SurfFeatureDetector detector( minHessian ); - - std::vector keypoints_1, keypoints_2; - - detector.detect( img_1, keypoints_1 ); - detector.detect( img_2, keypoints_2 ); - - //-- Step 2: Calculate descriptors (feature vectors) - SurfDescriptorExtractor extractor; - - Mat descriptors_1, descriptors_2; - - extractor.compute( img_1, keypoints_1, descriptors_1 ); - extractor.compute( img_2, keypoints_2, descriptors_2 ); - - //-- Step 3: Matching descriptor vectors with a brute force matcher - BFMatcher matcher(extractor.defaultNorm()); - std::vector< DMatch > matches; - matcher.match( descriptors_1, descriptors_2, matches ); - - //-- Draw matches - Mat img_matches; - drawMatches( img_1, keypoints_1, img_2, keypoints_2, matches, img_matches ); - - //-- Show detected matches - imshow("Matches", img_matches ); - - waitKey(0); - - return 0; -} - -/** - * @function readme - */ -void readme() -{ std::cout << " Usage: ./SURF_descriptor " << std::endl; } diff --git a/samples/cpp/tutorial_code/features2D/SURF_detector.cpp b/samples/cpp/tutorial_code/features2D/SURF_detector.cpp deleted file mode 100644 index 2a14bdc079..0000000000 --- a/samples/cpp/tutorial_code/features2D/SURF_detector.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/** - * @file SURF_detector - * @brief SURF keypoint detection + keypoint drawing with OpenCV functions - * @author A. Huaman - */ - -#include -#include -#include "opencv2/core/core.hpp" -#include "opencv2/features2d/features2d.hpp" -#include "opencv2/imgcodecs.hpp" -#include "opencv2/highgui/highgui.hpp" -#include "opencv2/nonfree/features2d.hpp" - -using namespace cv; - -void readme(); - -/** - * @function main - * @brief Main function - */ -int main( int argc, char** argv ) -{ - if( argc != 3 ) - { readme(); return -1; } - - Mat img_1 = imread( argv[1], IMREAD_GRAYSCALE ); - Mat img_2 = imread( argv[2], IMREAD_GRAYSCALE ); - - if( !img_1.data || !img_2.data ) - { std::cout<< " --(!) Error reading images " << std::endl; return -1; } - - //-- Step 1: Detect the keypoints using SURF Detector - int minHessian = 400; - - SurfFeatureDetector detector( minHessian ); - - std::vector keypoints_1, keypoints_2; - - detector.detect( img_1, keypoints_1 ); - detector.detect( img_2, keypoints_2 ); - - //-- Draw keypoints - Mat img_keypoints_1; Mat img_keypoints_2; - - drawKeypoints( img_1, keypoints_1, img_keypoints_1, Scalar::all(-1), DrawMatchesFlags::DEFAULT ); - drawKeypoints( img_2, keypoints_2, img_keypoints_2, Scalar::all(-1), DrawMatchesFlags::DEFAULT ); - - //-- Show detected (drawn) keypoints - imshow("Keypoints 1", img_keypoints_1 ); - imshow("Keypoints 2", img_keypoints_2 ); - - waitKey(0); - - return 0; -} - -/** - * @function readme - */ -void readme() -{ std::cout << " Usage: ./SURF_detector " << std::endl; } diff --git a/samples/cpp/video_homography.cpp b/samples/cpp/video_homography.cpp deleted file mode 100644 index 1b12fa04d9..0000000000 --- a/samples/cpp/video_homography.cpp +++ /dev/null @@ -1,234 +0,0 @@ -/* -* video_homography.cpp -* -* Created on: Oct 18, 2010 -* Author: erublee -*/ - -#include "opencv2/calib3d/calib3d.hpp" -#include "opencv2/videoio/videoio.hpp" -#include "opencv2/highgui/highgui.hpp" -#include "opencv2/imgproc/imgproc.hpp" -#include "opencv2/features2d/features2d.hpp" -#include -#include -#include - -using namespace std; -using namespace cv; - -static void help(char **av) -{ - cout << "\nThis program demonstrated the use of features2d with the Fast corner detector and brief descriptors\n" - << "to track planar objects by computing their homography from the key (training) image to the query (test) image\n\n" << endl; - cout << "usage: " << av[0] << "